knight-i18n
v1.0.0
Published
A library for internationalization
Downloads
1
Readme
Knight I18n by Coderitter
A library for internationalization.
Install
npm install knight-i18n
Overview
The package consists of the one class I18n
.
Add translations
Add translations for different languages.
let i18n = new I18n
i18n.add('en', {
'LoginForm.login': 'Login',
'LoginForm.forgotPassword': 'Forget password'
})
i18n.add('de', {
'LoginForm.login': 'Anmelden',
'LoginForm.forgotPassword': 'Password vergessen'
})
Set the locale
You can set your application wide locale on the I18n
object.
i18n.locale = 'en'
Translate
Now that you have set your application wide locale you can start to translate.
i18n.translate('LoginForm.login')
i18n.translate('LoginForm.forgotPassword')
You can also determine the locale explicitely.
i18n.translate('en', 'LoginForm.login')
i18n.translate('de', 'LoginForm.login')
Using a translation function
If your translation string has placeholders for contextual information you can use functions instead of strings.
i18n.add('en', {
'LoginForm.maxTriesExceeded': (maxTries: number) => `You exceeded ${maxTries} tries`
})
i18n.translate('LoginForm.maxTriesExceeded', 5)
You can use any parameter type you like. For example use an object if you have more than one placeholder.
Automatic fallback to english
If a translation for a certain language is not found but there is an english version, it will fall back to the english version. Otherwise it will return the tranlation id.
let translated = i18n.translate('ru', 'LoginForm.login')
// a translation for russian was not found so it fell back to english
translated = 'Login'
translated = i18n.translate('ru', 'LoginForm.forgotPassword')
// a translation for the given id was not found neither in russian nor in english, thus it returned the id
translated = 'LoginForm.forgotPassword'
Add I18n objects
You can also add another I18n
object. This gives you the possibility to manage the translations for different languages in their own files.
/* create the english translations */
let en = new I18n
en.add('en', {
'User.deleteAccount': 'Delete account'
}
/* create the german translations */
let de = new I18n
en.add('de', {
'User.deleteAccount': 'Account löschen'
}
/* add both translations to the main I18n object */
let i18n = new I18n()
i18n.add(en)
i18n.add(de)