open-index/open-npm huggingface dataset:
npm package: @nyby/i18n-cli
Description: Translations, in both the server side and client apps, are embedded in the code using string keys. Since the source code are simply javascript, we use Babel to extract the keys from the code.
Latest version: 1.4.5

# Nyby Internationalization (i18n) tool

Translations, in both the server side and client apps, are embedded in the code using string keys.
Since the source code are simply javascript, we use Babel to extract the keys from the code.

## Setup

Create an `i18n.json` similar to [`i18n.example.json`](i18n.example.json). API key can be set from environment variable
`I18N_API_KEY`. Then call the following and following the prompts.

```
node dist/index.js i18n.example.json
```

The translation strings support [ICU message format](https://format-message.github.io/icu-message-format-for-translators/index.html).

## Translations

The **source of truth** for the translation **keys** and **strings** are stored in Crowdin. This allows
us to use the translation keys and strings to integrate with other tools and systems, e.g., figma. 

To add and/or remove keys, simple add and remove the keys in the main language file, typically `en.i18n.json`.
To synchronize the new keys to Crowdin, simply run `yarn i18n upload`. To get updated translation strings and key
from Crowdin, simply run `yarn i18n download`.

The provided `yarn i18n extract` tool can extract and add new keys from the source code and gives warning to keys 
that are no longer used in the code. Keys can be added manually be editing the main language `json` file. 

Updating the strings in the main language file will invalidate the translated strings in the other languages. This
can be done using `yarn i18n upload` tool to upload the updated main language file strings to Crowdin. Invalidating the
strings will inform the translators that new translations are required. The main language strings can also be
changed and invalidated in the Crowdin app itself.