Interface translation properties in Drupal 9
Same name and namespace in other branches
- 8 core/modules/locale/locale.api.php \interface_translation_properties
- 10 core/modules/locale/locale.api.php \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.
'interface translation project': example_module
'interface translation server pattern': modules/custom/example_module/%project-%version.%language.po
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.
'interface translation server pattern': translations://%project-%version.%language.po
'interface translation server pattern': public://translations/%project-%version.%language.po
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.
'interface translation project': example_module
'interface translation server pattern': http://example.com/files/translations/%core/%project/%project-%version.%language.po
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 also
File
- core/
modules/ locale/ locale.api.php, line 8 - Hooks provided by the Locale module.
Functions
Name | Location | Description |
---|---|---|
hook_locale_translation_projects_alter |
core/ |
Alter the list of projects to be updated by locale's interface translation. |