# @nx-extend/translations @nx-extend/translations NPM package **Nx plugin to extract, push, pull and translate your [FormatJS](https://formatjs.io/) projects**. ## Features - Extract translations from FormatJS/React Intl projects - Push translations to translation providers (SimpleLocalize) - Pull translations from providers - Automatic translation using DeepL or Google Translate - Configurable through `.translationsrc.json` - Nx plugin for automatic target generation ## Setup ### Install ```sh npm install -D @nx-extend/translations nx g @nx-extend/translations:add ``` ## Usage ### Configuration File Create a `.translationsrc.json` file in your project root: ```json { "extends": "../.translationsrc.json", "projectName": "Project name in the provider", "projectId": "id in the provider", "provider": "simplelocalize", "outputDirectory": "/src/translations", "outputLanguages": "/src/translations/locales.json", "defaultLanguage": "en", "translator": "deepl", "translatorOptions": { "formality": "less", "fallbackToGooleTranslate": true }, "publishAfterPush": true, "autoTranslate": true, "languages": [ "en", "de", "nl", "pl", "fr", "ro", "da", "he", "sv" ] } ``` ### Extract Translations Extract translation strings from your source code: ```sh nx extract-translations ``` ### Push Translations Push extracted translations to your translation provider: ```sh nx push-translations ``` ### Pull Translations Pull translations from your translation provider: ```sh nx pull-translations ``` ### Translate Automatically translate missing translations: ```sh nx translate ``` ## Nx Plugin Add the plugin to your `nx.json` to automatically generate targets for projects with `.translationsrc.json`: ```json { "plugins": [ { "plugin": "@nx-extend/translations/plugin" } ] } ``` This will add the following targets to all projects with a `.translationsrc.json` file: - `extract-translations` - `push-translations` - `pull-translations` - `translate` ## Configuration Options ### Root Configuration Options that are the same across projects can be placed in the root `.translationsrc.json`: | Option | Type | Description | |-----------------------|------------|--------------------------------------------------------------| | **`provider`** | `string` | Translation provider to use (e.g., `simplelocalize`) | | **`outputDirectory`** | `string` | Directory to output translations to | | **`outputLanguages`** | `string` | Path to output available languages JSON | | **`defaultLanguage`** | `string` | Default language code | | **`translator`** | `string` | Translation service to use (e.g., `deepl`) | | **`translatorOptions`** | `object` | Options for the translator service | | **`publishAfterPush`** | `boolean` | Whether to publish after pushing to provider | | **`autoTranslate`** | `boolean` | Whether to automatically translate missing strings | | **`languages`** | `string[]` | List of language codes to support | ### Project Configuration | Option | Type | Description | |------------------|----------|---------------------------------------| | **`projectName`** | `string` | Project name in the translation provider | | **`projectId`** | `string` | Project ID in the translation provider | | **`extends`** | `string` | Path to extend configuration from |