You are here

function _install_prepare_import in Drupal 9

Same name and namespace in other branches
  1. 8 core/includes/install.core.inc \_install_prepare_import()

Tells the translation import process that Drupal core is installed.

Parameters

array $langcodes: Language codes used for the translations.

string $server_pattern: Server access pattern (to replace language code, version number, etc. in).

1 string reference to '_install_prepare_import'
install_import_translations in core/includes/install.core.inc
Imports languages via a batch process during installation.

File

core/includes/install.core.inc, line 1764
API functions for installing Drupal.

Code

function _install_prepare_import($langcodes, $server_pattern) {
  \Drupal::moduleHandler()
    ->loadInclude('locale', 'bulk.inc');
  $matches = [];
  foreach ($langcodes as $langcode) {

    // Get the translation files located in the translations directory.
    $files = locale_translate_get_interface_translation_files([
      'drupal',
    ], [
      $langcode,
    ]);

    // Pick the first file which matches the language, if any.
    $file = reset($files);
    if (is_object($file)) {
      $filename = $file->filename;
      preg_match('/drupal-([0-9a-z\\.-]+)\\.' . $langcode . '\\.po/', $filename, $matches);

      // Get the version information.
      if ($version = $matches[1]) {
        $info = _install_get_version_info($version);

        // Picking the first file does not necessarily result in the right file. So
        // we check if at least the major version number is available.
        if ($info['major']) {
          $core = $info['major'] . '.x';
          $data = [
            'name' => 'drupal',
            'project_type' => 'module',
            'core' => $core,
            'version' => $version,
            'server_pattern' => $server_pattern,
            'status' => 1,
          ];
          \Drupal::service('locale.project')
            ->set($data['name'], $data);
          module_load_include('compare.inc', 'locale');

          // Reset project information static cache so that it uses the data
          // set above.
          locale_translation_clear_cache_projects();
          locale_translation_check_projects_local([
            'drupal',
          ], [
            $langcode,
          ]);
        }
      }
    }
  }
}