A lightweight internationalization module with TypeScript support
npm install @cheshirecat/i18nt --save
Default use in your main.js project
import { addTranslation } from '@cheshirecat/i18nt'
import en from './assets/locales/en.json'
import fr from './assets/locales/fr.json'
...
addTranslation('en', en)
addTranslation('fr', fr)
...
You can set / get the current language globally as follows:
import { setLocale } from "@cheshirecat/i18nt";
/* 'default' would set locale to your browser default language */
setLocale("default");
The JSON files consist of key-value pairs where the key is the first argument passed to the main translation function, like:
/* json */
{
"msg1": "Message traduit en français",
"msg2": "Ceci est un autre message",
"greetings": "Bonjour!"
}
You can import the _t translation function from i18nt module to localize texts in the HTML template (Vue, React, Svelte, etc.)
import { _t } from "@cheshirecat/i18nt";
<div>
<p>{_t('msg1')}</p>
</div>
The result would be translated in the browser:
<div>
<p>Message traduit en français</p>
</div>
You can pass an optional object with the following properties:
locale
: to force translation with a locale parametertokens
: an array to replace the %s token with the indexed stringcount
: a Number to output a specific translated countThe i18nt module supports string interpolation, with %s
as placeholder in your translation files
<div>
<p>{_t('greetings', { locale: 'en', tokens: ['Svelte'] })}</p>
</div>
/* json */
{
"greetings": "Hello %s !"
}
It would be rendered in the browser:
<div>
<p>Hello Svelte !</p>
</div>
The i18nt module also supports pluralization, with |
as a separator for none / one / many elements
<select>
<option value="0">{_t('crows', { count: 0 })}</option>
<option value="1">{_t('crows', { count: 1 })}</option>
<option value="10">{_t('crows', { count: 10 })}</option>
</select>
{
"crows": "None | A crow | Murder of Crows"
}
As a result:
<select>
<option value="0">None</option>
<option value="1">A crow</option>
<option value="10">Murder of Crows</option>
</select>
getLocale
: to access the global language variable
setLocale
: to set the global language variable
import { getLocale, setLocale } from "@cheshirecat/i18nt";
function setLanguage(lang: string): void {
setLocale(lang);
}
function getLanguage(): string {
return getLocale();
}