nt3 CLI connects your codebase to Entri. It reads and writes translation files in your project, pushes source strings to the platform, and pulls back translated content — all from a single command.
Commands
nt3 login
Authenticate with your Entri API token.
nt3 init
Create a .nt3.yml configuration file for your project.
nt3 push
Upload source translation files to Entri.
nt3 pull
Download translated files from Entri to your project.
nt3 translate
Trigger AI translation for untranslated keys.
nt3 status
Show current auth and project configuration.
nt3 logout
Remove stored credentials and log out.
Quick reference
How it works
The CLI uses a.nt3.yml file in your project root to know which files to sync and in which format. The {lang} placeholder in your file pattern is replaced with each language code at runtime.
For example, with this config:
nt3 pull would download files to src/locales/fr.json, src/locales/nl.json, etc., depending on which languages are configured in your Entri project.
Authentication
The CLI stores your API token in~/.nt3/config.json with owner-only file permissions. For folder-scoped auth, use nt3 login --local to save credentials in .nt3.local.json instead.
You can also set NT3_API_TOKEN as an environment variable — this takes priority over all stored credentials.
CI/CD support
All commands that produce output support a--json flag for machine-readable results. Authentication can be handled non-interactively with nt3 login -t $TOKEN. See the CI/CD integration guide for a complete GitHub Actions example.
Supported file formats
| Format | Description |
|---|---|
json-flat | Flat key-value JSON |
json-nested | Nested JSON objects |
yaml | YAML key-value |
po | GNU gettext PO files |
xliff | XLIFF 1.2 |
xliff2 | XLIFF 2.0 |
arb | Application Resource Bundle (Flutter) |
android-xml | Android string resources |
ios-strings | iOS Localizable.strings |
ios-stringsdict | iOS Stringsdict (plurals) |