Ship multilingual SaaS
without slowing down.
i18nnn is a CLI-first translation workspace. You bring your own OpenAI or Anthropic key,
we handle keys, roles, and project state. Pull validated translations into your repo with
one command
.
$ npx @i18nnn/cli pull --lang fr,de,es › Logging in via device code… ✓ Authenticated as romain@my-saas.test › Project: my-saas · 3 languages · 412 keys ✓ locales/fr.json 412 keys, 0 missing ✓ locales/de.json 410 keys, 2 plural forms pending ✓ locales/es.json 412 keys, 0 missing Synced 3 files in 1.4s · cloud remains source of truth.$ ▎
Translation isn't a marketing surface. It's part of your deployment.
The CLI is the contract.
@i18nnn/cli login
, pull
, status
. The cloud is the single source of truth — keys live in your project, translations flow to your repo as files.
BYOK. You pay your AI, not us.
Bring your own OpenAI or Anthropic key. We don't take a margin on tokens. Default quota of 1,000 / 10,000 / 100,000 calls per month on Free / Pro / Team, used as a rate guard.
How AI keys workRoles, not comments in a spreadsheet.
Five roles per project: Owner, Admin, Translator (per language), Reviewer, Viewer. Invite translators by email, scope their language, audit every change.
Roles explainedOne command. Local repo in sync with the cloud.
No push, no merge conflicts, no drift between staging keys and production keys. You edit in the cloud, you pull from the cloud.
-
Device-code loginAuthenticates against your work email. Tokens stored in
~/.config/i18nnn/credentials.json. -
Idempotent pullsRe-running
pulloverwrites only what changed in the cloud. Existing keys in your files are preserved. -
Smart mergeDetects your existing
flatornestedlayout. Generates the right shape on first run, never reformats.
$ npx @i18nnn/cli pull › Connecting to api.i18nnn.app… ✓ Authenticated · project my-saas (eu-west-1) › Diff since 2026-08-04T08:12Z: + 14 new keys (auto-translated in 6 languages) ~ 3 edited keys (locale: fr) ! 1 plural form pending (cart.items.one) › Writing files: ✓ locales/fr.json 17 keys / 0 missing ✓ locales/de.json 17 keys / 0 missing ✓ locales/es.json 17 keys / 0 missing ✓ locales/it.json 17 keys / 1 missing ✓ locales/pt.json 17 keys / 0 missing ✓ locales/jp.json 17 keys / 0 missing Done in 1.1s · audit trail: app.i18nnn.com/audit/4f3a…
Translation that learns your product.
Every project carries a glossary, a brand voice note, and per-key context. The model uses them every time it touches a value.
| Term | Translation | Notes |
|---|---|---|
| workspace | espace de travail / FR | never "projet" |
| seat | posto / PT | billing unit |
| checkout | Bestellung abschließen / DE | verb form, not noun |
| my-saas | my-saas / all | brand, do not translate |
| cart | carrinho / PT-BR | PT-BR only |
Five roles. Scoped per language.
Invite translators with a single link, scope what they can edit, ship multilingual without a coordination spreadsheet.
Honest plans. 5× cheaper than Poeditor.
- 1 project · 1,000 keys · 3 seats
- BYOK AI · unlimited
- CLI · glossary · roles
- 5 projects · 10,000 keys · 20 seats
- Same keys as Poeditor Plus, −75%
- 14-day trial · no card
- 30 projects · 100,000 keys · 100 seats
- Same keys as Poeditor Enterprise, −70%
- SSO + 12-mo audit
Three things differ between plans — projects, keys, seats. Everything else (CLI, AI, glossary, roles, MFA) is included on every plan.
Try it on a real branch this afternoon.
Create a Free project, paste 50 keys, pull them locally. If your translator is faster on Poeditor, we want to know why.