Localizing an application should be easy, not hard. ez-localize makes it ridiculously simple.
Just replace:
console.log("Hello world!");
With:
console.log(T("Hello world!"));
Or use ES6 tagged templates:
console.log(T`Hello world!')
Or use localization requests with an explicit locale:
console.log(T({ locale: "fr", text: "dog" }));
console.log(T({ locale: "fr", text: "{0}'s dog", args: ["Dave"] }));
console.log(T({ locale: "fr", text: { _base: "en", en: "cat", fr: "chat" }}));
var extractor = require('ez-localize/extractor');
extractor.updateLocalizationFile("index.js", "localizations.json", {}, function() { console.log("done!")})
var ezlocalize = require('ez-localize');
var localizations = require('localizations.json');
var localizer = new ezlocalize.Localizer(localizations, "en")
localizer.makeGlobal();
You're done!
String substitution:
console.log(T("This works {0}%!", 100);
console.log(T`This works ${100}%!`);
React-style substitution:
console.log(T("This works {0}%!", { x: 10 });
will create array of ["This works ", { x: 10 }, "%!"]
Sometimes a word like "open" is ambiguous. You can specify the context to disambiguate:
console.log(T("open|verb"));
This will render as "open" in English and whatever the translation of "open|verb" is in the requested language.
It handles Handlebars too:
var options = { extensions: ['.js'], transform: [hbsfy] };
extractor.updateLocalizationsupdateLocalizationFile("index.js", "localizations.json", options, function() { console.log("done!")})
To register a T helper:
var ezlocalize = require('ez-localize');
var handlebars = require("hbsfy/runtime");
var localizations = require('localizations.json');
var localizer = new ezlocalize.Localizer(localizations, "en")
localizer.makeGlobal(handlebars);
Only relative requires are included by default. To include another module, pass externalModules
to options, an optional list of external modules to include