2.0.1 • Published 2 years ago

i18next-locales-sync v2.0.1

Weekly downloads
62
License
MIT
Repository
github
Last release
2 years ago

i18next-locales-sync

CI npm

Syncs i18next locale resource files against a primary language.

Installation

$ npm install --save-dev i18next-locales-sync

Features

  1. Supports namespaces.
  2. Full plural support, based on the real i18next pluralResolver.
  3. Supports JSON v4
  4. Sorting secondary locale keys by primary language order.
  5. Supports multiple locale folder structure, {lng}/{namespace}, {namespace}/{lng}.
  6. Creates missing locale files.
  7. Allows overriding plural rules.

Usage

1. CLI

$ npx i18next-locales-sync -p he -s en de ja -l path/to/locales/folder --spaces 2

or 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.js

2. 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

KeyTypeDefault value
primaryLanguagestring
secondaryLanguagesstring[]
localesFolderstring
outputFolderstring?localesFolder
overridePluralRules(pluralResolver: PluralResolver)? => PluralResolver
useEmptyStringbooleanfalse
spacesnumber2
compatibilityJSONstringv4

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_many": "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": "部屋"
}

Prior art

  1. i18next-json-sync
1.2.0

2 years ago

1.2.1

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

1.1.2

2 years ago

1.1.1

3 years ago

1.1.0

3 years ago

1.0.4

3 years ago

1.0.2

3 years ago

1.0.3

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago