Enables i18n text messages in javascript.
npm install i18n-text/test/spec/whiteBox.js.Simple example.
var i18n = new I18nText({path: 'dir/where/messages files are'})
i18n.once(I18nText.EVT_LOCALE_CHANGE, function (data) {
i18n.text('some.key')//ru translation
})
i18n.setLocale('ru')
grunt jsdoc. If you can't do this then please read plainsrc/I18nText.js.###Values
Let's assume that you have: "some.key.with.param": "Do you have {{param}}?" then:
i18n.text('some.key.with.param', {param: 'some'}) //"Do you have some?"
###Plurals
The idea was taken from Yii framework.
Let's assume that you have: "some.key.with.plural": "I have {{n==0#no fish|n === 1#one fish|n > 1#many fishes}}".
Yes, I'm on purpose used different identation and equal signs to show you that they don't matter.
i18n.text('some.key.with.plural', {n: 1}) //"I have one fish"
//IMPORTANT! You can use only symbol 'n' in plural form.
###The loading of the messages files.
The implementation of the loading can be changed. You just need
to change this function:
I18nText.loadFile = function (options) {
//your implementation here
}
You can find the example implementation for node in src/loadFile/node.js
By default library uses the simple XHR implementation. You can see it here src/loadFile/xhr.js
You can even make the implementation to be synchronous:
I18nText.loadFile = function (options) {
var request = new XMLHttpRequest()
request.open('GET', options.url, false)
request.send(null)
options.success(request.responseText)
}
//No need to listen events!
var i18n = new I18nText({path: 'dir/where/messages files are'})
i18n.setLocale('ru')
i18n.text('some.key')//ru translation
###More interesting example.
I18nText.STORAGE_KEY = 'i18n_locale'
I18nText.RU = 'ru'
I18nText.saveLocale = function (locale) {
localStorage.setItem(I18nText.STORAGE_KEY, locale)
}
I18nText.restoreLocale = function () {
return localStorage.getItem(I18nText.STORAGE_KEY)
}
var i18n = new I18nText({path: 'dir/where/messages files are'})
i18n.once(I18nText.EVT_LOCALE_CHANGE, function (data) {
...
})
i18n.setLocale(I18nText.restoreLocale() || I18nText.RU)