i18n2
Another gettext solution for JavaScript
Installation
$ npm install i18n2
Usage
Once initialized, translation engine should be used across your application as a translator of your messages
var I18n = ; // db (map of translations) is optional and can be provided at later stepvar i18n = polishLangDb; // By convention name for gettext translator function is `_`var _ = i18n; ; // Witaj Świecie! // We can switch database on the go_db = italianLangDb ; // Ciao World
Contexts
Different contexts can be assigned:
var _ = i18n; // Resolved in context of 'admin'; // Admin: Witaj Świecie
Configuration of messages
_(msg[, inserts])
Singular message: Singular message can be plain:
; // Witaj Świecie!
or filled with substitutions to replace:
; // Nazywam się John Smith
Substitutions syntax follows ECMAScript's 6 template strings format
Singular + plural message: _(singularMsg, pluralMsg, count[, inserts])
Singular and plural key, plus resolved count needs to be provided:
; // 1 kot; // 3 koty; // 5 kotów
Same way as in case of singular messages, inserts can be provided as fourth argument
Configuration of translations database
Configuration with no contexts (default
context is assumed):
var db = "Hello World": "Witaj Świecie!";
With contexts
var db = "Hello World": default: "Witaj Świecie!" admin: "Admin: Witaj Świecie!" ;
Singular + plural messages
Key of such message is generated with following concatenation rule key = 'n\0' + singularMsg + '\0' + pluralMsg
;
There are two ways of providing translations
with Array of options
var db = "\0${n} cat\0${n} cats": "${n} kot" // 1 "${n} koty" // 2,3,4 "${n} kotów" // 5+ ;
with Function
In some languages (like Polish) resolving plurals is more tricky, the definite way can only be achieved with custom function:
var db = { if n === 1 return "${n} kot"; n = n % 100; if n > 4 && n < 22 return "${n} kotów"; return "${n} kotów"; };
Tests
$ npm test