Skip to content

Features & workflows

AI Translation Features

langctl uses DeepL to fill in missing translations from your default language, and holds AI output back from your app until someone reviews it.

AI Translation

  • Single translations - Suggest fills one language of a key
  • Bulk translation - Translate missing fills every empty translation for the keys and languages you choose; existing translations are never overwritten
  • Default language as source - Every AI translation is made from the project’s default language
  • Parameter Preservation - Keeps {{parameters}} intact
  • Project context - A description of your product, sent to DeepL with every translation (not translated or billed)
  • Key descriptions - Each key’s description is sent as context too, so “Book” becomes “make a booking”, not “a book”
  • Do not translate - Brand names and codes (QwikTik, WhatsApp, UPI) stay exactly as written
  • Glossary - Preferred translations per language (booking → बुकिंग); uses a DeepL glossary where DeepL supports the language pair, otherwise the preferred term is put in place before translating
  • Tone - More or less formal, per language
  • Review - AI translations are left out of exports and langctl pull until they’re approved or edited

AI translation runs in the web dashboard. It’s managed by langctl, so there’s no provider key to set up; your email address must be verified to use it.

From the CLI

With the current CLI (0.3.x), langctl keys translate sets a translation text that you provide (-l es -t "Hola"); it doesn’t call AI translation. CLI 0.4.0, which isn’t published to npm yet, adds langctl translate (AI translation from the terminal) and langctl review (list and approve AI translations).

Set context, do-not-translate terms, glossary and tone in Project settings → AI translation - see Project AI settings.

Review State

  • AI translations are unreviewed until someone approves them (or edits them - an edited translation counts as reviewed)
  • Text you write, push or import is your own: it’s treated as reviewed
  • Unreviewed AI translations are left out of published exports and langctl pull; the export metadata reports how many were left out per language

Usage Limits

PlanMonthly Quota
Free300 translations
Starter2,000 translations
Pro8,000 translations
Team25,000 translations
EnterpriseCustom

Each key translated into one language counts as one translation. The quota resets at the start of each calendar month and unused translations don’t roll over.

How It Works

output
Source (en): "Welcome, {{username}}!"
Output (es): "¡Bienvenido, {{username}}!"
Output (fr): "Bienvenue, {{username}}!"
Output (de): "Willkommen, {{username}}!"

Best Practices

  1. Review AI Translations - Approve or edit them; until then they don’t reach your app
  2. Clear Source Text - Write clear default language translations
  3. Give Context First - Fill in the project context, do-not-translate list and descriptions for short keys before a large first translation
  4. Small Batches - Translate a module at a time so review stays manageable
  5. Publish After Review - Approving an AI translation doesn’t publish the key; draft keys still need publishing

Warning

AI translation is a starting point, not a replacement for human review. Always check translations before publishing.

Next Steps