function locale_translation_source_check_file

Same name in other branches
  1. 8.9.x core/modules/locale/locale.translation.inc \locale_translation_source_check_file()
  2. 10 core/modules/locale/locale.translation.inc \locale_translation_source_check_file()
  3. 11.x core/modules/locale/locale.translation.inc \locale_translation_source_check_file()

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().

Parameters

object $source: Translation source object.

Return value

object Source file object of the po file, updated with:

  • "uri": File name and path.
  • "timestamp": Last updated time of the po file.

FALSE if the file is not found.

See also

locale_translation_source_build()

2 calls to locale_translation_source_check_file()
locale_translation_batch_status_check in core/modules/locale/locale.batch.inc
Implements callback_batch_operation().
locale_translation_check_projects_local in core/modules/locale/locale.compare.inc
Check and store the status and timestamp of local po files.

File

core/modules/locale/locale.translation.inc, line 172

Code

function locale_translation_source_check_file($source) {
    if (isset($source->files[LOCALE_TRANSLATION_LOCAL])) {
        $source_file = $source->files[LOCALE_TRANSLATION_LOCAL];
        $directory = $source_file->directory;
        $filename = '/' . preg_quote($source_file->filename) . '$/';
        if (is_dir($directory)) {
            if ($files = \Drupal::service('file_system')->scanDirectory($directory, $filename, [
                'key' => 'name',
                'recurse' => FALSE,
            ])) {
                $file = current($files);
                $source_file->uri = $file->uri;
                $source_file->timestamp = filemtime($file->uri);
                return $source_file;
            }
        }
    }
    return FALSE;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.