pip install translate-messagesRun the CLI:
translate-messages [options] # or translatemsgsIf no options are passed, the CLI will:
- Prompt for message keys to ignore
- Auto-discover closest child
_localesdir - Translate found
en/messages.jsonto target languages
Note: Any messages.json in the chrome.i18n format can be used as a source file.
Options can be set by using command-line arguments:
| Option | Description | Example |
|---|---|---|
-d, --locales-dir |
Name of the folder containing locale files (default: _locales) |
--locales-dir=_messages |
-t, --target-langs |
Comma-separated list of languages to translate to (default: all 100+ stable_locales) |
--target-langs=es,fr |
-k, --keys |
Comma-separated list of keys to translate (default: all found src keys missing in target files) | --keys=app_DESC,err_NOT_FOUND |
--exclude-langs |
Comma-separated list of languages to exclude | --exclude-langs=es,zh |
--exclude-keys |
Comma-separated list of keys to ignore | --exclude-keys=app_NAME,author |
--only-stable |
Only use stable locales (skip auto-discovery) | |
--config |
Use custom config file | --config=path/to/file |
init, -i, --init |
Create .translate-msgs.config.json5 in project root to store default options |
|
-f, --force |
Force overwrite of existing config file when using init |
|
-n, --no-wizard |
Skip interactive prompts during start-up | |
-h, --help |
Show help screen | |
-v, --version |
Show version | |
-V, --debug [target_config_key] |
Show debug logs | |
--docs |
Open docs URL |
Translate all keys except app_NAME from _locales/en/messages.json to all stable_locales:
translate-messages --ignore-keys=app_NAME # prompts for more keys to ignoreTranslate app_DESC key from messges/en/messages.json to French:
translate-messages -n --keys=app_DESC --locales-dir=messages --target-langs=fr # no promptsTranslate app_DESC + err_NOT_FOUND keys from _msgs/en/messages.json to Spanish and Hindi:
translate-msgs -n -k app_DESC,err_NOT_FOUND -d _msgs -t es,hi # no promptsRun translate-msgs init to create .translate-msgs.config.json5 in your project root to set default options.
Example defaults:
{
"locales_dir": "_locales", // name of the folder containing locale files
"target_langs": "", // languages to translate to (e.g. "en,es,fr") (default: all 100+ supported locales)
"keys": "", // keys to translate (e.g. "app_DESC,err_NOT_FOUND")
"exclude_langs": "", // languages to exclude (e.g. "en,es")
"exclude_keys": "", // keys to ignore (e.g. "app_NAME,author")
"force": false, // force overwrite existing config file when using init
"no_wizard": false // skip interactive prompts during start-up
}Note: CLI arguments always override config file.
Copyright © 2023–2026 Adam Lui.
🈶 is-unicode-supported - Detect whether the terminal supports advanced Unicode.
🇨🇳 non-latin-locales - ISO 639-1 (2-letter) codes for non-Latin locales.
🇪🇸 latin-locales - ISO 639-1 (2-letter) codes for Latin locales.
{ } remove-json-keys - Simply remove JSON keys via CLI command.


