Lightweight library for managing translations and localization with simple api. Works client and server side. Less then 1KB.
npm install translate-js --save
// add items to translate registry
translate.add({
projectTitle: 'Project title',
button: {
text: 'Click me {{userName}}!',
caption: 'Please click me!'
},
deep: {
nested: {
label: 'Deep nested label'
}
}
});
// get translations
translate('projectTitle'); // outputs "Project title"
translate('button.text', {userName: 'George'}); // outputs "Click me George!"
translate('button.caption'); // outputs "Please click me!"
translate('deep.nested.label'); // outputs "Deep nested label"
// add items to specific locale
translate.add({projectTitle: 'Project title'}, 'en');
translate.add({projectTitle: 'Título del Proyecto'}, 'es');
// add items to specific locale and prefix keys with custom namespace
translate.add({numberInput: 'Value is not a number'}, 'en', 'errors');
translate.add({numberInput: 'El valor no es un número'}, 'es', 'errors');
// get translations
translate('projectTitle'); // outputs "Project title"
translate('projectTitle', null, {locale: 'es'}); // outputs "Título del Proyecto!"
translate('errors.numberInput'); // outputs "Value is not a number"
// set locale for future translate calls
translate.setLocale('es');
translate.getLocale(); // outputs "es"
translate('errors.numberInput'); // outputs "El valor no es un número"
// change what happens when item is not in registry
translate.whenUndefined = function(key, locale) {
return key + ':undefined:' + locale
};
translate('errors.dateInput'); // outputs "errors.dateInput:undefined:es"
// change how translate interpolates template strings
translate.add({welcomeMessage: 'Hello $userName'});
translate.interpolateWith(/\$(\w+)/g);
translate('welcomeMessage', {userName: 'George'}); // outputs "Hello George"
// clear / empty translate registry
translate.clear();
translate(key, templateData, options);
Translates string stored under specified key to current locale. Interpolates template string if templateData is given. Specific locale translation can be specified via options.locale.
translate.add(items, locale, keyPrefix);
Imports items (plain or nested object) to translate registry under specific locale (defaults to "en"). Prefix on item keys can optionally be added as keyPrefix parameter;
translate.setLocale(locale);
Sets current locale for future translate calls.
translate.getLocale();
Gets current locale
translate.interpolateWith(interpolateRE);
Sets regular expression for template strings interpolation.
translate.whenUndefined = function(key, locale) {};
Define custom handler for use case when requested item is not in registry.
translate.clear();
clear / empty all items in translate registry