https://github.com/kabeep/node-translate-i18n
🌏 A command-line interface tool for translating localization files to other languages.
https://github.com/kabeep/node-translate-i18n
cli i18n internationalization locale localization node translate translation
Last synced: 12 months ago
JSON representation
🌏 A command-line interface tool for translating localization files to other languages.
- Host: GitHub
- URL: https://github.com/kabeep/node-translate-i18n
- Owner: kabeep
- License: mit
- Created: 2024-05-08T21:16:25.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2025-01-09T04:15:18.000Z (over 1 year ago)
- Last Synced: 2025-06-27T10:45:20.514Z (12 months ago)
- Topics: cli, i18n, internationalization, locale, localization, node, translate, translation
- Language: TypeScript
- Homepage: https://github.com/kabeep/node-translate-i18n
- Size: 1.71 MB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

A command-line interface tool for translating localization files to other languages.
[](https://nodejs.org/docs/latest/api/)
[](LICENSE)
[](https://www.npmjs.com/package/@kabeep/node-translate-i18n)
[](https://codecov.io/gh/kabeep/node-translate-i18n)
[](https://app.codacy.com/gh/kabeep/node-translate-i18n/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
[](https://dl.circleci.com/status-badge/redirect/circleci/Qh23T2Zgw4Fy4V8uvKaymp/SM7PbTQQQRHifxy6jgNcTm/tree/master)
English | [简体中文](README.zh-CN.md)


## 📖 Introduction
> Node Translate I18n is a tool for multilingual internationalization, enabling easy translation of localization files
> into other languages. Translate a Chinese localization file `zh-CN.js`, for example, into an English localization
> file `en-US.js`.
>
> With a simple command-line interface, you can quickly convert your project's localization files into the desired
> target language, facilitating cross-language i18n support in NodeJS project.

## ⚙️ Installation
```bash
npm install @kabeep/node-translate-i18n --save
```
```bash
yarn add @kabeep/node-translate-i18n
```
```bash
pnpm add @kabeep/node-translate-i18n
```
## 🚀 Usage
#### Using in javascript
```javascript
import localize from '@kabeep/node-translate-i18n';
localize({
_: ['./src/locale/en-US.ts'],
to: ['zh-CN', 'ja-JP'],
rewrite: true,
})
.then(console.log)
.catch(console.error);
```
#### Using in terminal
```shell
localize ./en-US.ts -t "zh-CN" "ja-JP" -r
```
```text
Usage: localize [options]
Options:
-t, --to Target language, specified as ISO 639-1 code [array] [required]
-r, --rewrite Overwrite the file or phrase if it exists
[boolean] [default: false]
-v, --version Show version number [boolean]
-h, --help Show help [boolean]
Examples:
localize ./en-US.ts -t zh-CN -r Overwrite an existing file or phrase
localize ./en-US.js -t zh-CN Use javascript locale files
localize ./en-US.ts -t zh-CN Use typescript locale files
localize ./en-US.json -t zh-CN Use json locale file
```
## 🪄 Examples
#### Append
> For localized files that do not exist,
> the cli will create and write a new file using the translation from the source file.
> (The file name comes from the `to` parameter).
```shell
# locale
# ├── en-US.js (1 row)
# =>
# locale
# ├── en-US.js (1 row)
# + ├── zh-CN.js (1 row)
localize ./locale/en-US.js -t "zh-CN"
```
#### Diff
> When the localization file in the `to` parameter already exists,
> only the new phrases will be written via `diff`.
> This is useful when certain phrases have been manually modified
> with more accurate translation results.
```shell
# locale
# ├── en-US.js (2 row)
# ├── zh-CN.js (1 row)
# ├── ja-JP.js (2 row)
# =>
# locale
# ├── en-US.js (2 row)
# M ├── zh-CN.js (2 row)
# ├── ja-JP.js (2 row)
localize ./locale/en-US.js -t "zh-CN" "ja-JP"
```
#### Rewrite
> When the localization file in the `to` parameter already exists,
> the existing phrase will be overwritten.
```shell
# locale
# ├── en-US.js (2 row)
# ├── zh-CN.js (2 row)
# ├── ja-JP.js (2 row)
# =>
# locale
# ├── en-US.js (2 row)
# M ├── zh-CN.js (2 row)
# M ├── ja-JP.js (2 row)
localize ./locale/en-US.js -t "zh-CN" "ja-JP" -r
```
## 🔩 Supported `to` parameters
- [ISO 639-1](https://www.loc.gov/standards/iso639-2/php/code_list.php)
```text
en, zh, ru, ...
```
- [RFC 4647](https://www.rfc-editor.org/rfc/rfc4647.txt)
(Any combination with [ISO 639-1](https://www.loc.gov/standards/iso639-2/php/code_list.php),
[ISO 15924](https://unicode.org/iso15924/iso15924-codes.html)
and [ISO 3166-1](https://www.iso.org/obp/ui/#search))
```text
en-US, zh-CN, zh-TW, ru-RU, ...
```
- Custom file suffix
```text
en-US.locale, zh-CN.locale, zh-TW.locale, ru-RU.locale, ...
```
## 📄 Supported file extensions
- Javascript
- Typescript
- JSON
## > Supported code styles
Unlimited key-value pairs can be viewed
[format.js docs](https://formatjs.io/docs/core-concepts/basic-internationalization-principles/)
or [polyglot.js docs](https://airbnb.io/polyglot.js/)
Here is an example:
```json
{
"GREETING": "Hello {{name}}"
}
```
or
```javascript
export default {
"GREETING": "Hello {{name}}"
}
```
## 🔗 Related
- [i18n-cli](https://github.com/pandodao/i18n-cli) - A CLI tool that utilizes the OpenAI API to translate JSON-based
locale files
- [locize-cli](https://github.com/locize/locize-cli) - locize cli to import / export locales, add / edit / remove, sync
segments
- [node-polyglot](https://github.com/airbnb/polyglot.js) - Give your JavaScript the ability to speak many languages.
- [node-translate](https://github.com/kabeep/node-translate) - 🦜 A powerful, secure and feature-rich api via Google
Translation.
- [node-translate-cli](https://github.com/kabeep/node-translate-cli) - > A powerful, secure and feature-rich tool via
Google Translation in terminal. _
## 🤝 Contribution
Contributions via Pull Requests or [Issues](https://github.com/kabeep/node-translate-i18n/issues) are welcome.
## 📄 License
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.