2.1.1 • Published 8 months ago
i18next-locales-sync v2.1.1
i18next-locales-sync
Syncs i18next locale resource files against a primary language.
Installation
$ npm install --save-dev i18next-locales-syncFeatures
- Supports namespaces.
- Full plural support, based on the real i18next pluralResolver.
- Supports JSON v4
- Sorting secondary locale keys by primary language order.
- Supports multiple locale folder structure,
{lng}/{namespace},{namespace}/{lng}. - Creates missing locale files.
- Allows overriding plural rules.
Usage
1. CLI
$ npx i18next-locales-sync -p he -s en de ja -l path/to/locales/folder --spaces 2or using config file
// localesSync.config.js
module.exports = {
primaryLanguage: 'he',
secondaryLanguages: ['en', 'de', 'ja'],
localesFolder: './path/to/locales/folder',
overridePluralRules: (pluralResolver) =>
pluralResolver.addRule('he', pluralResolver.getRule('en')), // This is available only when using config file
spaces: 2,
};$ npx i18next-locales-sync -c ./localesSync.config.js2. Node
import { syncLocales } from 'i18next-locales-sync';
import path from 'path';
syncLocales({
primaryLanguage: 'en',
secondaryLanguages: ['en', 'de', 'ja'],
localesFolder: path.resolve('./path/to/locales/folder'),
overridePluralRules: (pluralResolver) =>
pluralResolver.addRule('he', pluralResolver.getRule('en')),
});Options
| Key | Type | Default value |
|---|---|---|
| primaryLanguage | string | |
| secondaryLanguages | string[] | |
| localesFolder | string | |
| outputFolder | string? | localesFolder |
| overridePluralRules | (pluralResolver: PluralResolver)? => PluralResolver | |
| useEmptyString | boolean | false |
| spaces | number | 2 |
| compatibilityJSON | string | v4 |
Currently, the lib supports only .json locale files, PRs are welcome :].
Example
Given these files:
examples
├── en
│ └── namespace.json
├── he
│ └── namespace.json
└── ja
└── namespace.json// en/namespace.json
{
"foo_male": "bar-male-en",
"room_one": "room",
"room_other": "rooms"
}// he/namespace.json
{
"room": "חדר",
"foo_male": "bar-male-he",
"room_few": "חדרים"
}// ja/namespace.json
{
"foo_male": "bar-male-ja",
"room": "部屋",
"room_other": "部屋"
}Syncying he & ja against en
$ npx i18next-locales-sync -p en -s he ja -l ./examples/Will result with
// en/namespace.json
// `en` remains untouched
{
"foo_male": "bar-male-en",
"room_one": "room",
"room_other": "rooms"
}// he/namespace.json
// sorted based on the primary lang file
// keeps existing plural form (room_3)
// added missing plural forms
{
"foo_male": "bar-male-he",
"room_one": "חדר",
"room_two": "חדרים",
"room_few": "rooms",
"room_other": "rooms"
}// ja/namespace.json
// keeps exising fields
// removed plural form since there is no plural form in Japanese
{
"foo_male": "bar-male-ja",
"room": "部屋"
}