Wallogit.com
2017 © Pedro Peláez
translation-discovery is a Composer-enabled PHP script to locate translations across multiple PHP components from JSON files, which can then be combined together into single translations for project runtime., (*1)
Based on asset-discovery., (*2)
First include translation-discovery as a requirement in your project composer.json,
and run composer update to install it into your project:, (*3)
{
"require": {
"soundasleep/translation-discovery": "dev-master"
}
}
Now create a translation-discovery.json in your project, to define the types of assets to discover,
and where to place source files:, (*4)
{
"src": ["vendor/*/*", "core"],
"locales": {
"fr": "generated/locales/fr.json",
"de": "generated/locales/de.json"
},
"generate_php": true
}
translation-discovery will look in all the src folders for files called locales.json
to find matching assets. Wildcards are supported. For example, in your
vendor/my/package/locales.json:, (*5)
{
"fr": "locales/fr.json",
"de": ["locales/de/*.json"]
}
Run the generate script, either with your build script or manually, with a given root directory:, (*6)
php -f vendor/soundasleep/translation-discovery/generate.php .
translation-discovery will then load all identified locale JSON files, combine all of the locale strings into one large JSON file, and then write this out to each locale destination JSON., (*7)
If generate_php is set to true, a .php file will also be generated which returns
the locale strings in a format suitable for PHP require()., (*8)
These files can then be passed along to the next step in a build chain., (*9)
Particularly if you are using the openclerk/i18n project, you can use the find script to locale potentially matching translation strings and output them into a template file in JSON., (*10)
Update translation-discovery.json in your project, to define the source locations:, (*11)
{
"templates": ["vendor/openclerk", "core", "site"],
"template": "site/locale/template.json"
}
Run the find script, either with your build script or manually, with a given root directory:, (*12)
php -f vendor/soundasleep/translation-discovery/find.php .
This script will find all instances of the following translation strings, and output them to
the template JSON folder:, (*13)
t("string")ht("string")plural("string", 1) and plural("string", "strings", 1)
"string" /* i18n */translation-discovery.json parametersgrunt task grunt-php-translation-discovery to wrap the manual PHP command