Javascript gettext translations replacement to use with gettext/gettext. Use gettext/json to generate the json data.
npm install gettext-translator
Use the Json generator gettext/json library to export the translations to json:
use Gettext\Loader\PoLoader;
use Gettext\Generator\JsonGenerator;
//Load the po file with the translations
$translations = (new PoLoader())->loadFile('locales/gl.po');
//Export to a json file
(new JsonGenerator())->generateFile($translations, 'locales/gl.json');Load the json file in your browser
import Translator from 'gettext-translator';
async function getTranslator() {
const response = await fetch('locales/gl.json');
const translations = await response.json();
return new Translator(translations);
}
const t = await getTranslator();
t.gettext('hello world'); //ola mundoYou can add variables to the translations. For example:
t.gettext('hello :who', {':who': 'world'}); //ola worldThere's also a basic support o sprintf (only %s and %d)
t.gettext('hello %s', 'world'); //ola worldTo customize the translator formatter, just override the format method:
t.format = function (text, ...args) {
//Your custom format here
}Like in the php version, there are the __ functions that are alias of the long version:
//Both functions does the same
t.gettext('Foo');
t.__('Foo');| Long name | Short name | Description |
|---|---|---|
| gettext | __ | Returns a translation |
| ngettext | n__ | Returns a translation with singular/plural variations |
| dngettext | dn__ | Returns a translation with domain and singular/plural variations |
| npgettext | np__ | Returns a translation with context and singular/plural variations |
| pgettext | p__ | Returns a translation with a specific context |
| dgettext | d__ | Returns a translation with a specific domain |
| dpgettext | dp__ | Returns a translation with a specific domain and context |
| dnpgettext | dnp__ | Returns a translation with a specific domain, context and singular/plural variations |