function LocaleTestHooks::localeTranslationProjectsAlter

Implements hook_locale_translation_projects_alter().

The translation status process by default checks the status of the installed projects. This function replaces the data of the installed modules by a predefined set of modules with fixed file names and release versions. Project names, versions, timestamps etc must be fixed because they must match the files created by the test script.

The "locale.test_projects_alter" state variable must be set by the test script in order for this hook to take effect.

File

core/modules/locale/tests/modules/locale_test/src/Hook/LocaleTestHooks.php, line 57

Class

LocaleTestHooks
Hook implementations for locale_test.

Namespace

Drupal\locale_test\Hook

Code

public function localeTranslationProjectsAlter(&$projects) : void {
    // Drupal core should not be translated. By overriding the server pattern we
    // make sure that no translation for drupal core will be found and that the
    // translation update system will not go out to l.d.o to check.
    $projects['drupal']['server_pattern'] = 'translations://';
    if (\Drupal::state()->get('locale.remove_core_project')) {
        unset($projects['drupal']);
    }
    if (\Drupal::state()->get('locale.test_projects_alter')) {
        // Instead of the default ftp.drupal.org we use the file system of the test
        // instance to simulate a remote file location.
        $url = Url::fromRoute('<front>', [], [
            'absolute' => TRUE,
        ])->toString();
        $remote_url = $url . PublicStream::basePath() . '/remote/';
        // Completely replace the project data with a set of test projects.
        $projects = [
            'contrib_module_one' => [
                'name' => 'contrib_module_one',
                'info' => [
                    'name' => 'Contributed module one',
                    'interface translation server pattern' => $remote_url . '%core/%project/%project-%version.%language._po',
                    'package' => 'Other',
                    'version' => '8.x-1.1',
                    'project' => 'contrib_module_one',
                    'datestamp' => '1344471537',
                    '_info_file_ctime' => 1348767306,
                ],
                'datestamp' => '1344471537',
                'project_type' => 'module',
                'project_status' => TRUE,
            ],
            'contrib_module_two' => [
                'name' => 'contrib_module_two',
                'info' => [
                    'name' => 'Contributed module two',
                    'interface translation server pattern' => $remote_url . '%core/%project/%project-%version.%language._po',
                    'package' => 'Other',
                    'version' => '8.x-2.0-beta4',
                    'project' => 'contrib_module_two',
                    'datestamp' => '1344471537',
                    '_info_file_ctime' => 1348767306,
                ],
                'datestamp' => '1344471537',
                'project_type' => 'module',
                'project_status' => TRUE,
            ],
            'contrib_module_three' => [
                'name' => 'contrib_module_three',
                'info' => [
                    'name' => 'Contributed module three',
                    'interface translation server pattern' => $remote_url . '%core/%project/%project-%version.%language._po',
                    'package' => 'Other',
                    'version' => '8.x-1.0',
                    'project' => 'contrib_module_three',
                    'datestamp' => '1344471537',
                    '_info_file_ctime' => 1348767306,
                ],
                'datestamp' => '1344471537',
                'project_type' => 'module',
                'project_status' => TRUE,
            ],
            'locale_test' => [
                'name' => 'locale_test',
                'info' => [
                    'name' => 'Locale test',
                    'interface translation project' => 'locale_test',
                    'interface translation server pattern' => 'core/modules/locale/tests/test.%language.po',
                    'package' => 'Other',
                    'version' => NULL,
                    'project' => 'locale_test',
                    '_info_file_ctime' => 1348767306,
                    'datestamp' => 0,
                ],
                'datestamp' => 0,
                'project_type' => 'module',
                'project_status' => TRUE,
            ],
            'custom_module_one' => [
                'name' => 'custom_module_one',
                'info' => [
                    'name' => 'Custom module one',
                    'interface translation project' => 'custom_module_one',
                    'interface translation server pattern' => 'translations://custom_module_one.%language.po',
                    'package' => 'Other',
                    'version' => NULL,
                    'project' => 'custom_module_one',
                    '_info_file_ctime' => 1348767306,
                    'datestamp' => 0,
                ],
                'datestamp' => 0,
                'project_type' => 'module',
                'project_status' => TRUE,
            ],
        ];
    }
}

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