Checks whether a po file exists in the local filesystem.
It will search in the directory set in the translation source. Which defaults to the "translations://" stream wrapper path. The directory may contain any valid stream wrapper.
The "local" files property of the source object contains the definition of a po file we are looking for. The file name defaults to %project-%version.%language.po. Per project this value can be overridden using the server_pattern directive in the module's .info.yml file or by using hook_locale_translation_projects_alter().
object $source: Translation source object.
stdClass File object (filename, basename, name) updated with data of the po file. On success the files property of the source object is updated. files[LOCALE_TRANSLATION_LOCAL]:
FALSE if the file is not found.
locale_translation_source_build()
function locale_translation_source_check_file(&$source) {
if (isset($source->files[LOCALE_TRANSLATION_LOCAL])) {
$directory = $source->files[LOCALE_TRANSLATION_LOCAL]->directory;
$filename = '/' . preg_quote($source->files[LOCALE_TRANSLATION_LOCAL]->filename) . '$/';
// If the directory contains a stream wrapper, it is converted to a real
// path. This is required for file_scan_directory() which can not handle
// stream wrappers.
if ($scheme = file_uri_scheme($directory)) {
$directory = str_replace($scheme . '://', drupal_realpath($scheme . '://'), $directory);
}
if ($files = file_scan_directory($directory, $filename, array(
'key' => 'name',
'recurse' => FALSE,
))) {
$file = current($files);
$source->files[LOCALE_TRANSLATION_LOCAL]->uri = $file->uri;
$source->files[LOCALE_TRANSLATION_LOCAL]->timestamp = filemtime($file->uri);
return $file;
}
}
return FALSE;
}