locale_test.module

Same filename and directory in other branches
  1. 7.x modules/locale/tests/locale_test.module
  2. 9 core/modules/locale/tests/modules/locale_test/locale_test.module
  3. 8.9.x core/modules/locale/tests/modules/locale_test/locale_test.module
  4. 11.x core/modules/locale/tests/modules/locale_test/locale_test.module

Simulate a custom module with a local po file.

File

core/modules/locale/tests/modules/locale_test/locale_test.module

View source
<?php


/**
 * @file
 * Simulate a custom module with a local po file.
 */

use Drupal\Core\Url;
use Drupal\Core\Extension\Extension;
use Drupal\Core\StreamWrapper\PublicStream;

/**
 * Implements hook_system_info_alter().
 *
 * Make the test scripts to be believe this is not a hidden test module, but
 * a regular custom module.
 */
function locale_test_system_info_alter(&$info, Extension $file, $type) {
  // Only modify the system info if required.
  // By default the locale_test modules are hidden and have a project specified.
  // To test the module detection process by locale_project_list() the
  // test modules should mimic a custom module. I.e. be non-hidden.
  if (\Drupal::state()->get('locale.test_system_info_alter')) {
    if ($file->getName() == 'locale_test' || $file->getName() == 'locale_test_translate') {
      // Don't hide the module.
      $info['hidden'] = FALSE;
    }
  }
  // Alter the name and the core version of the project. This should not affect
  // the locale project information.
  if (\Drupal::state()->get('locale.test_system_info_alter_name_core')) {
    if ($file->getName() == 'locale_test') {
      $info['core'] = '8.6.7';
      $info['name'] = 'locale_test_alter';
    }
  }
}

/**
 * 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.
 */
function locale_test_locale_translation_projects_alter(&$projects) {
  // 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,
      ],
    ];
  }
}

/**
 * Implements hook_language_fallback_candidates_OPERATION_alter().
 */
function locale_test_language_fallback_candidates_locale_lookup_alter(array &$candidates, array $context) {
  \Drupal::state()->set('locale.test_language_fallback_candidates_locale_lookup_alter_candidates', $candidates);
  \Drupal::state()->set('locale.test_language_fallback_candidates_locale_lookup_alter_context', $context);
}

/**
 * Implements hook_theme().
 */
function locale_test_theme() {
  $return = [];
  $return['locale_test_tokenized'] = [
    'variable' => [
      'content' => '',
    ],
  ];
  return $return;
}

/**
 * Implements hook_token_info().
 */
function locale_test_token_info() {
  $info = [];
  $info['types']['locale_test'] = [
    'name' => t('Locale test'),
    'description' => t('Locale test'),
  ];
  $info['tokens']['locale_test']['security_test1'] = [
    'type' => 'text',
    'name' => t('Security test 1'),
  ];
  $info['tokens']['locale_test']['security_test2'] = [
    'type' => 'text',
    'name' => t('Security test 2'),
  ];
  return $info;
}

/**
 * Implements hook_tokens().
 */
function locale_test_tokens($type, $tokens, array $data = [], array $options = []) {
  $return = [];
  if ($type == 'locale_test') {
    foreach ($tokens as $name => $original) {
      switch ($name) {
        case 'security_test1':
          $return[$original] = "javascript:alert('Hello!');";
          break;

        case 'security_test2':
          $return[$original] = "<script>alert('Hello!');</script>";
          break;

      }
    }
  }
  return $return;
}

/**
 * Implements hook_countries_alter().
 */
function locale_test_countries_alter(&$countries) {
  $countries['EB'] = 'Elbonia';
}

Functions

Title Deprecated Summary
locale_test_countries_alter Implements hook_countries_alter().
locale_test_language_fallback_candidates_locale_lookup_alter Implements hook_language_fallback_candidates_OPERATION_alter().
locale_test_locale_translation_projects_alter Implements hook_locale_translation_projects_alter().
locale_test_system_info_alter Implements hook_system_info_alter().
locale_test_theme Implements hook_theme().
locale_test_tokens Implements hook_tokens().
locale_test_token_info Implements hook_token_info().

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