nt3
v0.2.6
Published
CLI for the nt3 localization management platform
Downloads
1,407
Maintainers
Readme
nt3
CLI for the Entri localization management platform. Sync translation files between your codebase and Entri.
Installation
npm install -g nt3
# or use without installing
npx nt3 <command>Requires Node.js 18+.
Quick Start
# 1. Authenticate
nt3 login
# 2. Initialize project config
nt3 init
# 3. Push source strings
nt3 push
# 4. Translate untranslated keys with AI
nt3 translate --all
# 5. Pull translations
nt3 pullCommands
nt3 login
Authenticate with your Entri API token. Tokens are stored in ~/.nt3/config.json.
nt3 login # Interactive prompt
nt3 login -t entri_abc123... # Non-interactive (CI/CD)
nt3 login -u https://custom.api.url # Custom API URLnt3 logout
Remove stored authentication.
nt3 logoutnt3 init
Create a .nt3.yml configuration file in the current directory.
nt3 init # Interactive prompt
nt3 init -p proj_abc123 -f po --path "locales/{lang}/messages.po" # Non-interactive| Flag | Description | Default |
|------|-------------|---------|
| -p, --project-id <id> | Project ID from Entri | (prompted) |
| -s, --source-language <lang> | Source language code | en |
| --path <pattern> | File pattern with {lang} placeholder | src/locales/{lang}.json |
| -f, --format <format> | File format (see below) | json-nested |
| --force | Overwrite existing config | false |
nt3 push
Upload source translation files to Entri.
nt3 push # Push source files
nt3 push --overwrite # Overwrite existing translations
nt3 push --json # JSON output for CI/CD| Flag | Description |
|------|-------------|
| -o, --overwrite | Overwrite existing translations (default: skip) |
| --json | Output results as JSON |
nt3 pull
Download translations from Entri to local files.
nt3 pull # Pull all target languages
nt3 pull -l fr # Pull French only
nt3 pull --json # JSON output for CI/CD| Flag | Description |
|------|-------------|
| -l, --language <lang> | Pull a specific language only |
| --json | Output results as JSON |
nt3 translate (alias: tr)
Translate untranslated keys using AI. Processes keys in batches with real-time progress streaming.
nt3 translate fr # Translate to French
nt3 translate -l nl # Translate to Dutch (flag form)
nt3 translate --all # Translate all target languages
nt3 translate --all --provider anthropic # Use a specific AI provider
nt3 translate --all --json # JSON output for CI/CD| Flag | Description |
|------|-------------|
| -a, --all | Translate all target languages |
| -l, --language <lang> | Target language code |
| --provider <provider> | AI provider override (anthropic or openai) |
| --json | Output results as JSON |
The command uses your project's AI settings (tone, style, additional context) configured in Entri. Already-translated keys are skipped. Press Ctrl+C to gracefully cancel an in-progress translation.
nt3 status
Show current authentication and project configuration.
nt3 statusConfiguration
The CLI uses a .nt3.yml file in your project root:
project_id: "proj_abc123"
source_language: en
file_patterns:
- path: "src/locales/{lang}.json"
format: json-nestedThe {lang} placeholder is replaced with the language code (e.g., en, fr, nl).
Supported Formats
| Format | Extension | Description |
|--------|-----------|-------------|
| json-flat | .json | Flat key-value JSON |
| json-nested | .json | Nested JSON objects |
| yaml | .yaml | YAML key-value |
| po | .po | GNU gettext PO |
| xliff | .xlf | XLIFF 1.2 |
| xliff2 | .xlf | XLIFF 2.0 |
| arb | .arb | Application Resource Bundle (Flutter) |
| android-xml | .xml | Android string resources |
| ios-strings | .strings | iOS Localizable.strings |
| ios-stringsdict | .stringsdict | iOS Stringsdict (plurals) |
CI/CD
Use the --json flag and non-interactive authentication for CI pipelines:
nt3 login -t $NT3_TOKEN
nt3 push --json
nt3 pull --jsonLicense
Proprietary
