Skip to content

Commit

Permalink
Add localization cli command
Browse files Browse the repository at this point in the history
Uses the machine translation API of DeepL to automatically translate any missing values
  • Loading branch information
msujew committed Jan 5, 2022
1 parent 2e588c0 commit 8c35d41
Showing 1 changed file with 39 additions and 3 deletions.
42 changes: 39 additions & 3 deletions dev-packages/localization-manager/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,45 @@

## Description

The `@theia/localization-manager` package is used easily create localizations of Theia and Theia extensions for different languages.
Its main use case is to extract localization keys and default values from `nls.localize` calls within the codebase.
Additionally, it uses the [DeepL API](https://www.deepl.com/docs-api) to automatically translate any missing localization values.
The `@theia/localization-manager` package is used easily create localizations of Theia and Theia extensions for different languages. It has two main use cases.

First, it allows to extract localization keys and default values from `nls.localize` calls within the codebase using the `nls-extract` Theia-CLI command. Take this code for example:

```ts
const hi = nls.localize('greetings/hi', 'Hello');
const bye = nls.localize('greetings/bye', 'Bye');
```

It will be converted into this JSON file (`nls.json`):

```json
{
"greetings": {
"hi": "Hello",
"bye": "Bye"
}
}
```

Afterwards, any manual or automatic translation approach can be used to translate this file into other languages. These JSON files are supposed to be picked up by `LocalizationContribution`s.

Additionally, Theia provides a simple way to translate the generated JSON files out of the box using the [DeepL API](https://www.deepl.com/docs-api). For this, a [DeepL free or pro account](https://www.deepl.com/pro) is needed. Using the `nls-localize` command of the Theia-CLI, a target file can be translated into different languages. For example, when calling the command using the previous JSON file with the `fr` (french) language, the following `nls.fr.json` file will be created in the same directory as the translation source:

```json
{
"greetings": {
"hi": "Bonjour",
"bye": "Au revoir"
}
}
```


Only JSON entries without corresponding translations are translated using DeepL. This ensures that manual changes to the translated files aren't overwritten and only new translation entries are actually sent to DeepL.

Use `theia nls-localize --help` for more information on how to use the command and supply DeepL API keys.

For more information, see the [internationalization documentation](https://theia-ide.org/docs/i18n/).

## Additional Information

Expand Down

0 comments on commit 8c35d41

Please sign in to comment.