Skip to main content
The 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

Quick reference

# Authenticate
nt3 login -t entri_your_token

# Set up a project
nt3 init

# Sync
nt3 push          # Upload source file
nt3 translate --all   # AI translate all languages
nt3 pull          # Download translations

# Check status
nt3 status

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:
project_id: "proj_abc123"
source_language: en
file_patterns:
  - path: "src/locales/{lang}.json"
    format: json-nested
Running 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

FormatDescription
json-flatFlat key-value JSON
json-nestedNested JSON objects
yamlYAML key-value
poGNU gettext PO files
xliffXLIFF 1.2
xliff2XLIFF 2.0
arbApplication Resource Bundle (Flutter)
android-xmlAndroid string resources
ios-stringsiOS Localizable.strings
ios-stringsdictiOS Stringsdict (plurals)