An Internationalisation middleware to help with generating/uploading translation templates and downloading localised versions.
This library has some helper functions/classes for dealing with exporting and importing translations based on a config file. Right now we’re only supporting Localise as the source for translations.
⚠️ This library is in active development so the API may suffer changes.
There are essentially three interfaces, they only differ on how they ingest the options to the Translations system.
Use a JSON file with all the configuration.
{
"project_name": {
"export": {
"ext": "mo",
"format": "gettext"
}
}
}
use TwentySixB\Translations\Translations;
use TwentySixB\Translations\Input\File;
// Make POT
$translations = new Translations( new File( 'path_to_file.json' ) );
$translations->make_pots();
$translations->upload();
Use PHP as your interface and have a PHP data structure with the configuration.
use TwentySixB\Translations\Translations;
use TwentySixB\Translations\Input\Dataset;
// Make POT
$translations = new Translations(
new Dataset(
[
'project_name' => [
'export' => [
'ext' => 'mo',
'format' => 'gettext',
]
]
]
)
);
$translations->make_pots();
$translations->upload();
Use a custom command and fetch config from the options passed to it.
Create your two command files in PHP.
<?php
// upload.php
use TwentySixB\Translations\Translations;
use TwentySixB\Translations\Input\CLI;
$translations = new Translations( new CLI() );
$translations->make_pots();
$translations->upload();
<?php
// download.php
use TwentySixB\Translations\Translations;
use TwentySixB\Translations\Input\CLI;
$translations = new Translations( new CLI() );
$translations->download();
Now you can run them from the command line like this:
# Make POTs and upload files.
$ php run upload.php --name="project_name" --ext="mo" --format="gettext"
# Download translations form the system for two locales.
$ php run download.php --name="project_name" --ext="mo" --format="jed" --locale="pt_PT" --locale="en"
Regardless of the method to pass information to the Translations
class, you can use any of the following options to configure what you want to happen.
locale
string
| array
ext
string
format
string
domain
string
| optional
filename
string
| optional
js-handle
string
| optional
path
string
| optional
| default:
./wrap-jed
bool
| optional
| default:
true if format is JEDname
string
| required
if using CLIThe file path will be comprised of:
path ?(domain|filename-) locale ?(-js-handle) .ext
?(.*)
indicates optional values.locale
string
| array
ext
string
domain
string
| optional
filename
string
| optional
js-handle
string
| optional
path
string
| optional
| default:
./name
string
| required
if using CLIThe file path will be comprised of:
path ?(domain|filename-) locale ?(-js-handle) .ext
?(.*)
indicates optional values.domain
string
wp i18n make-pots
command.source
string
wp i18n make-pots
command. Directory where the strings to be translated will be extracted from.destination
string
wp i18n make-pots
command. Where the pot file will be saved.skip-js
:
bool
| optional
| default:
true--skip-js
will be passed to the wp i18n make-pots
command. Makes it so strings to be translated inside JS code will not be considered.