An open API service indexing awesome lists of open source software.

https://github.com/lepixeliste/i18nt

A lightweight internationalization module with TypeScript support
https://github.com/lepixeliste/i18nt

i18n internationalization javascript lightweight reactjs sveltejs typescript vuejs

Last synced: 4 months ago
JSON representation

A lightweight internationalization module with TypeScript support

Awesome Lists containing this project

README

        

# i18nt

A lightweight internationalization module with TypeScript support

## Installation

```javascript
npm install @pixeliste/i18nt --save
```

## How to use

Default use in your main.js project

```typescript
import { addTranslation } from '@pixeliste/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:

```javascript
import { setLocale } from "@pixeliste/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:

```javascript
/* json */
{
"msg1": "Message traduit en français",
"msg2": "Ceci est un autre message",
"greetings": "Bonjour!"
}
```

## Basic usage

You can import the \_t translation function from i18nt module to localize texts in the HTML template (Vue, React, Svelte, etc.)

```javascript
import { _t } from "@pixeliste/i18nt";
```

```html


{{_t('msg1')}}



```

The result would be translated in the browser:

```html


Message traduit en français



```

## Advanced usage

You can pass an optional object with the following properties:

- `locale`: to force translation with a locale parameter
- `tokens`: an array to replace the %s token with the indexed string
- `count`: a Number to output a specific translated count

### Interpolation

The i18nt module supports string interpolation, with `%s` as placeholder in your translation files

```html


{{_t('greetings', { locale: 'en', tokens: ['Svelte'] })}}



```

```javascript
/* json */
{
"greetings": "Hello %s !"
}
```

It would be rendered in the browser:

```html


Hello World !



```

### Pluralization

The i18nt module also supports pluralization, with `|` as a separator for none / one / many elements

```html

{{_t('crows', { count: 0 })}}
{{_t('crows', { count: 1 })}}
{{_t('crows', { count: 10 })}}

```

```javascript
{
"crows": "None | A crow | Murder of Crows"
}
```

As a result:

```html

None
A crow
Murder of Crows

```

## Global parameters

`getLocale`: to access the global language variable
`setLocale`: to set the global language variable

```typescript
import { getLocale, setLocale } from "@pixeliste/i18nt";

function setLanguage(lang: string): void {
setLocale(lang);
}

function getLanguage(): string {
return getLocale();
}
```

## License

[ISC](https://opensource.org/licenses/ISC)