Get Started

Translation Commands

Create, edit, and manage translation keys directly from the command line.

List Translation Keys

langctl keys list mobile-app

Translation Keys (1,850):
┌──────────────────────────┬────────────┬───────────┬────────────┐
│ Key                      │ Module     │ Languages │ Published  │
├──────────────────────────┼────────────┼───────────┼────────────┤
│ auth.login.title        │ auth       │ 5/5       │ ✓          │
│ auth.login.subtitle     │ auth       │ 5/5       │ ✓          │
│ auth.signup.button      │ auth       │ 4/5       │ ✗          │
│ dashboard.welcome       │ dashboard  │ 5/5       │ ✓          │
└──────────────────────────┴────────────┴───────────┴────────────┘

langctl keys list mobile-app --module auth

langctl keys list mobile-app --drafts
langctl keys list mobile-app --published

langctl keys list mobile-app --missing es
langctl keys create mobile-app home.welcome \
--value-en "Welcome!" \
--value-es "¡Bienvenido!" \
--value-fr "Bienvenue!"

✓ Created key: home.welcome
✓ Added translations: en, es, fr

langctl keys create mobile-app auth.login.title \
--module auth \
--value-en "Sign In" \
--description "Login page title"

langctl keys create mobile-app dashboard.title \
--value-en "Dashboard" \
--publish
langctl keys get mobile-app home.welcome

Key: home.welcome
Module: home
Description: Main welcome message
Published: Yes
Created: March 15, 2024
Updated: April 10, 2024

Translations:
en: "Welcome, {{username}}!"
es: "¡Bienvenido, {{username}}!"
fr: "Bienvenue, {{username}}!"
de: "Willkommen, {{username}}!"
ja: "ようこそ、{{username}}!"

Parameters: username

History (last 3 changes):
Apr 10, 2024 - Updated es value ([email protected])
Apr 5, 2024 - Added ja translation ([email protected])
Mar 15, 2024 - Created key ([email protected])
langctl keys update mobile-app home.welcome \
--value-es "¡Bienvenido a nuestra aplicación!"

✓ Updated home.welcome (es)

langctl keys update mobile-app home.welcome \
--value-es "¡Bienvenido!" \
--value-fr "Bienvenue!" \
--value-de "Willkommen!"

langctl keys update mobile-app home.welcome \
--description "Updated welcome message"

langctl keys update mobile-app home.welcome --module landing
langctl keys delete mobile-app old.unused.key

⚠ Warning: This will delete all translations for this key
? Continue? Yes
✓ Deleted key: old.unused.key

langctl keys delete mobile-app key1 key2 key3 --force

langctl keys delete mobile-app --pattern "test.*" --force

✓ Deleted 15 keys matching pattern: test.*
langctl keys publish mobile-app home.welcome

✓ Published: home.welcome

langctl keys publish mobile-app auth.login.* dashboard.welcome

✓ Published 12 keys

langctl keys publish mobile-app --module auth --all-drafts

✓ Published 8 draft keys in auth module

langctl keys unpublish mobile-app beta.feature.title

✓ Unpublished: beta.feature.title
langctl keys search mobile-app "login"

Found 8 keys:
- auth.login.title
- auth.login.subtitle
- auth.login.button
- auth.login.forgot_password
- auth.login.remember_me
- auth.login.error.invalid
- auth.login.error.network
- auth.login.success

langctl keys search mobile-app --value "Welcome" --lang en

Found 3 keys with "Welcome" in English:
- home.welcome
- onboarding.welcome
- dashboard.welcome

langctl keys search mobile-app "error" --module auth --unpublished
langctl keys bulk-create mobile-app < keys.json

[
{
  "key": "auth.login.title",
  "module": "auth",
  "translations": {
    "en": "Sign In",
    "es": "Iniciar sesión"
  }
},
{
  "key": "auth.signup.title",
  "module": "auth",
  "translations": {
    "en": "Sign Up",
    "es": "Registrarse"
  }
}
]

✓ Created 2 keys
langctl keys bulk-update mobile-app < updates.csv

key,language,value
home.welcome,es,"¡Bienvenido actualizado!"
home.subtitle,es,"Nuevo subtítulo"
auth.login.title,fr,"Se connecter"

✓ Updated 3 translations
langctl keys bulk-publish mobile-app --module auth

✓ Published 42 keys in auth module

langctl keys bulk-publish mobile-app --pattern "dashboard.*"

✓ Published 87 keys matching dashboard.*
langctl keys missing mobile-app --lang es

Missing Spanish translations (277 keys):

By Module:
auth: 23 missing (7%)
dashboard: 145 missing (25%)
settings: 67 missing (29%)
profile: 42 missing (21%)

Sample keys:
- auth.new_feature.title
- dashboard.reports.advanced
- settings.integrations.webhook
...

langctl keys missing mobile-app --lang es --export > missing-es.json
langctl keys copy mobile-app --from en --to pt

✓ Copied 1,850 translations from en to pt

langctl keys copy mobile-app --from en --to pt --module auth

✓ Copied 342 translations from en to pt (auth module)

langctl keys copy mobile-app home.welcome --from en --to de

✓ Copied home.welcome: en -> de
langctl keys translate mobile-app home.welcome --to es,fr,de

Translating home.welcome to 3 languages...
✓ es: "¡Bienvenido, {{username}}!"
✓ fr: "Bienvenue, {{username}}!"
✓ de: "Willkommen, {{username}}!"

langctl keys translate mobile-app --lang es --missing

Translating 277 missing keys to Spanish...
Progress: [████████████████████] 100% (277/277)
✓ Translated 277 keys

langctl keys translate mobile-app --module settings --to ja

Translating settings module to Japanese...
✓ Translated 234 keys
langctl keys validate mobile-app

Validation Results:

✓ 1,723 keys passed
⚠ 5 warnings
✗ 2 errors

Warnings:
- home.welcome: Parameter {{username}} used but not in all languages
- auth.error: Translation too long for mobile UI (es)
- dashboard.title: Inconsistent punctuation across languages

Errors:
- settings.api.key: Missing required translation (en)
- profile.bio: Invalid parameter syntax: {username} (should be {{username}})

langctl keys validate mobile-app --module auth

langctl keys validate mobile-app --fix
langctl keys compare mobile-app --from en --to es

Comparison: English vs Spanish

Complete: 1,573 keys (85%)
Missing: 277 keys (15%)
Length difference: Avg +12% longer in Spanish

Keys with significant differences:
- auth.terms: en=45 chars, es=127 chars (+182%)
- home.welcome: en=20 chars, es=45 chars (+125%)

langctl keys compare mobile-app web-app --key home.welcome

mobile-app (home.welcome):
en: "Welcome, {{username}}!"
es: "¡Bienvenido, {{username}}!"

web-app (home.welcome):
en: "Welcome back, {{username}}!"
es: "¡Bienvenido de nuevo, {{username}}!"

Next Steps