Syncs i18next locale resource files against a primary language.
$ npm install --save-dev i18next-locales-sync- 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.
$ 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.jsimport { 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')),
});| 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 :].
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": "部屋"
}