Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0 / 0 |
|
100.00% |
0 / 0 |
CRAP | |
0.00% |
0 / 6 |
|
hook_locale_translation_projects_alter | |
0.00% |
0 / 1 |
0 | |
0.00% |
0 / 6 |
<?php | |
/** | |
* @file | |
* Hooks provided by the Locale module. | |
*/ | |
/** | |
* @defgroup interface_translation_properties Interface translation properties | |
* @{ | |
* .info.yml file properties for interface translation settings. | |
* | |
* For modules hosted on drupal.org, a project definition is automatically added | |
* to the .info.yml file. Only modules with this project definition are | |
* discovered by the update module and use it to check for new releases. Locale | |
* module uses the same data to build a list of modules to check for new | |
* translations. Therefore modules not hosted at drupal.org, such as custom | |
* modules, custom themes, features and distributions, need a way to identify | |
* themselves to the Locale module if they have translations that require to be | |
* updated. | |
* | |
* Custom modules which contain new strings should provide po file(s) containing | |
* source strings and string translations in gettext format. The translation | |
* file can be located both local and remote. Use the following .info.yml file | |
* properties to inform Locale module to load and import the translations. | |
* | |
* Example .info.yml file properties for a custom module with a po file located | |
* in the module's folder. | |
* @code | |
* interface translation project = example_module | |
* interface translation server pattern = modules/custom/example_module/%project-%version.%language.po | |
* @endcode | |
* | |
* Streamwrappers can be used in the server pattern definition. The interface | |
* translations directory (Configuration > Media > File system) can be addressed | |
* using the "translations://" streamwrapper. But also other streamwrappers can | |
* be used. | |
* @code | |
* interface translation server pattern = translations://%project-%version.%language.po | |
* @endcode | |
* @code | |
* interface translation server pattern = public://translations/%project-%version.%language.po | |
* @endcode | |
* | |
* Multiple custom modules or themes sharing the same po file should have | |
* matching definitions. Such as modules and sub-modules or multiple modules in | |
* the same project/code tree. Both "interface translation project" and | |
* "interface translation server pattern" definitions of these modules should | |
* match. | |
* | |
* Example .info.yml file properties for a custom module with a po file located | |
* on a remote translation server. | |
* @code | |
* interface translation project = example_module | |
* interface translation server pattern = http://example.com/files/translations/%core/%project/%project-%version.%language.po | |
* @endcode | |
* | |
* Custom themes, features and distributions can implement these .info.yml file | |
* properties in their .info.yml file too. | |
* | |
* To change the interface translation settings of modules and themes hosted at | |
* drupal.org use hook_locale_translation_projects_alter(). Possible changes | |
* include changing the po file location (server pattern) or removing the | |
* project from the translation update list. | |
* | |
* Available .info.yml file properties: | |
* - "interface translation project": project name. Required. | |
* Name of the project a (sub-)module belongs to. Multiple modules sharing | |
* the same project name will be listed as one the translation status list. | |
* - "interface translation server pattern": URL of the .po translation files | |
* used to download the files from. The URL contains tokens which will be | |
* replaced by appropriate values. The file can be locate both at a local | |
* relative path, a local absolute path and a remote server location. | |
* | |
* The following tokens are available for the server pattern: | |
* - "%core": Core version. Value example: "8.x". | |
* - "%project": Project name. Value examples: "drupal", "media_gallery". | |
* - "%version": Project version release. Value examples: "8.1", "8.x-1.0". | |
* - "%language": Language code. Value examples: "fr", "pt-pt". | |
* | |
* @see i18n | |
* @} | |
*/ | |
/** | |
* @addtogroup hooks | |
* @{ | |
*/ | |
/** | |
* Alter the list of projects to be updated by locale's interface translation. | |
* | |
* Locale module attempts to update the translation of those modules returned | |
* by \Drupal\Update\UpdateManager::getProjects(). Using this hook, the data | |
* returned by \Drupal\Update\UpdateManager::getProjects() can be altered or | |
* extended. | |
* | |
* Modules or distributions that use a dedicated translation server should use | |
* this hook to specify the interface translation server pattern, or to add | |
* additional custom/non-Drupal.org modules to the list of modules known to | |
* locale. | |
* - "interface translation server pattern": URL of the .po translation files | |
* used to download the files from. The URL contains tokens which will be | |
* replaced by appropriate values. | |
* The following tokens are available for the server pattern: | |
* - "%core": Core version. Value example: "8.x". | |
* - "%project": Project name. Value examples: "drupal", "media_gallery". | |
* - "%version": Project version release. Value examples: "8.1", "8.x-1.0". | |
* - "%language": Language code. Value examples: "fr", "pt-pt". | |
* | |
* @param array $projects | |
* Project data as returned by \Drupal\Update\UpdateManager::getProjects(). | |
* | |
* @see locale_translation_project_list() | |
* @ingroup interface_translation_properties | |
*/ | |
function hook_locale_translation_projects_alter(&$projects) { | |
// The translations are located at a custom translation sever. | |
$projects['existing_project'] = array( | |
'info' => array( | |
'interface translation server pattern' => 'http://example.com/files/translations/%core/%project/%project-%version.%language.po', | |
), | |
); | |
} | |
/** | |
* @} End of "addtogroup hooks". | |
*/ |