function locale_translate_get_interface_translation_files

Same name and namespace in other branches
  1. 8.9.x core/modules/locale/locale.bulk.inc \locale_translate_get_interface_translation_files()
  2. 10 core/modules/locale/locale.bulk.inc \locale_translate_get_interface_translation_files()
  3. 11.x core/modules/locale/locale.bulk.inc \locale_translate_get_interface_translation_files()

Get interface translation files present in the translations directory.

Parameters

array $projects: (optional) Project names from which to get the translation files and history. Defaults to all projects.

array $langcodes: (optional) Language codes from which to get the translation files and history. Defaults to all languages.

Return value

array An array of interface translation files keyed by their URI.

3 calls to locale_translate_get_interface_translation_files()
locale_translate_batch_import_files in core/modules/locale/locale.bulk.inc
Prepare a batch to import all translations.
locale_translate_delete_translation_files in core/modules/locale/locale.bulk.inc
Deletes interface translation files and translation history records.
_install_prepare_import in core/includes/install.core.inc
Tells the translation import process that Drupal core is installed.

File

core/modules/locale/locale.bulk.inc, line 90

Code

function locale_translate_get_interface_translation_files(array $projects = [], array $langcodes = []) {
    \Drupal::moduleHandler()->loadInclude('locale', 'inc', 'locale.compare');
    $files = [];
    $projects = $projects ? $projects : array_keys(locale_translation_get_projects());
    $langcodes = $langcodes ? $langcodes : array_keys(locale_translatable_language_list());
    // Scan the translations directory for files matching a name pattern
    // containing a project name and language code: {project}.{langcode}.po or
    // {project}-{version}.{langcode}.po.
    // Only files of known projects and languages will be returned.
    $directory = \Drupal::config('locale.settings')->get('translation.path');
    $result = [];
    if (is_dir($directory)) {
        $result = \Drupal::service('file_system')->scanDirectory($directory, '![a-z_]+(\\-[0-9a-z\\.\\-\\+]+|)\\.[^\\./]+\\.po$!', [
            'recurse' => FALSE,
        ]);
    }
    foreach ($result as $file) {
        // Update the file object with project name and version from the file name.
        $file = locale_translate_file_attach_properties($file);
        if (in_array($file->project, $projects)) {
            if (in_array($file->langcode, $langcodes)) {
                $files[$file->uri] = $file;
            }
        }
    }
    return $files;
}

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