Drupal 8  8.0.2
Interface translation properties

Functions

 hook_locale_translation_projects_alter (&$projects)
 

Detailed Description

.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:

The following tokens are available for the server pattern:

See Also
Internationalization

Function Documentation

hook_locale_translation_projects_alter ( $projects)

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 ::getProjects(). Using this hook, the data returned by ::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".
Parameters
array$projectsProject data as returned by ::getProjects().
See Also
locale_translation_project_list()