File based string translation.
Translates a string when some systems are not available.
Used during the install process, when database, theme, and localization system is possibly not yet available.
Use t() if your code will never run during the Drupal installation phase. Use st() if your code will only run during installation.
Expanded class hierarchy of FileTranslation
class FileTranslation extends StaticTranslation {
/**
* Directory to find translation files in the file system.
*
* @var string
*/
protected $directory;
/**
* Constructs a StaticTranslation object.
*
* @param string $directory
* The directory to retrieve file translations from.
*/
public function __construct($directory) {
parent::__construct();
$this->directory = $directory;
}
/**
* {@inheritdoc}
*/
protected function loadLanguage($langcode) {
// If the given langcode was selected, there should be at least one .po
// file with its name in the pattern drupal-$version.$langcode.po.
// This might or might not be the entire filename. It is also possible
// that multiple files end with the same suffix, even if unlikely.
$files = $this
->findTranslationFiles($langcode);
if (!empty($files)) {
return $this
->filesToArray($langcode, $files);
}
else {
return array();
}
}
/**
* Finds installer translations either for a specific or all languages.
*
* @param string $langcode
* (optional) The language code corresponding to the language for which we
* want to find translation files. If omitted, information on all available
* files will be returned.
*
* @return array
* An associative array of file information objects keyed by file URIs as
* returned by file_scan_directory().
*
* @see file_scan_directory()
*/
public function findTranslationFiles($langcode = NULL) {
$files = file_scan_directory($this->directory, '!drupal-\\d+\\.\\d+\\.' . (!empty($langcode) ? preg_quote($langcode, '!') : '[^\\.]+') . '\\.po$!', array(
'recurse' => FALSE,
));
return $files;
}
/**
* Reads the given Gettext PO files into a data structure.
*
* @param string $langcode
* Language code string.
* @param array $files
* List of file objects with URI properties pointing to read.
*
* @return array
* Structured array as produced by a PoMemoryWriter.
*
* @see \Drupal\Component\Gettext\PoMemoryWriter
*/
public static function filesToArray($langcode, array $files) {
$writer = new PoMemoryWriter();
$writer
->setLangcode($langcode);
foreach ($files as $file) {
$reader = new PoStreamReader();
$reader
->setURI($file->uri);
$reader
->setLangcode($langcode);
$reader
->open();
$writer
->writeItems($reader, -1);
}
return $writer
->getData();
}
}
Name![]() |
Modifiers | Type | Description | Overrides |
---|---|---|---|---|
FileTranslation:: |
protected | property | Directory to find translation files in the file system. | |
FileTranslation:: |
public static | function | Reads the given Gettext PO files into a data structure. | |
FileTranslation:: |
public | function | Finds installer translations either for a specific or all languages. | |
FileTranslation:: |
protected | function |
Add translations for new language. Overrides StaticTranslation:: |
|
FileTranslation:: |
public | function |
Constructs a StaticTranslation object. Overrides StaticTranslation:: |
|
StaticTranslation:: |
protected | property | String translations | |
StaticTranslation:: |
public | function |
Retrieves English string to given language. Overrides TranslatorInterface:: |
|
StaticTranslation:: |
public | function |
Resets translation cache. Overrides TranslatorInterface:: |