locale_translation_build_projects()
Builds list of projects and stores the result in the database.
The project data is based on the project list supplied by the Update module. Only the properties required by Locale module is included and additional (custom) modules and translation server data is added.
In case the Update module is disabled this function will return an empty array.
Return value
array Array of project data:
- "name": Project system name.
- "project_type": Project type, e.g. 'module', 'theme'.
- "core": Core release version, e.g. 8.x
- "version": Project release version, e.g. 8.x-1.0 See http://drupalcode.org/project/drupalorg.git/blob/refs/heads/7.x-3.x:/dru... for how the version strings are created.
- "server_pattern": Translation server po file pattern.
- "status": Project status, 1 = enabled.
File
- core/modules/locale/locale.compare.inc, line 45
- The API for comparing project translation status with available translation.
Code
function locale_translation_build_projects() { // Get the project list based on .info.yml files. $projects = locale_translation_project_list(); // Mark all previous projects as disabled and store new project data. \Drupal::service('locale.project')->disableAll(); $default_server = locale_translation_default_translation_server(); foreach ($projects as $name => $data) { // For dev releases, remove the '-dev' part and trust the translation server // to fall back to the latest stable release for that branch. if (isset($data['info']['version']) && strpos($data['info']['version'], '-dev')) { if (preg_match("/^(\d+\.x-\d+\.).*$/", $data['info']['version'], $matches)) { // Example matches: 8.x-1.x-dev, 8.x-1.0-alpha1+5-dev => 8.x-1.x $data['info']['version'] = $matches[1] . 'x'; } elseif (preg_match("/^(\d+\.\d+\.).*$/", $data['info']['version'], $matches)) { // Example match: 8.0.0-dev => 8.0.x (Drupal core) $data['info']['version'] = $matches[1] . 'x'; } } // For every project store information. $data += array( 'name' => $name, 'version' => isset($data['info']['version']) ? $data['info']['version'] : '', 'core' => isset($data['info']['core']) ? $data['info']['core'] : \Drupal::CORE_COMPATIBILITY, // A project can provide the path and filename pattern to download the // gettext file. Use the default if not. 'server_pattern' => isset($data['info']['interface translation server pattern']) && $data['info']['interface translation server pattern'] ? $data['info']['interface translation server pattern'] : $default_server['pattern'], 'status' => !empty($data['project_status']) ? 1 : 0, ); $project = (object) $data; $projects[$name] = $project; // Create or update the project record. \Drupal::service('locale.project')->set($project->name, $data); // Invalidate the cache of translatable projects. locale_translation_clear_cache_projects(); } return $projects; }
Please login to continue.