Translation glossary + do-not-translate list
Build a centralized glossary of approved translations and a blocklist of terms that must remain in English across all locales.
Problem
Product names, brand terms, and technical identifiers drift across translations. "Nimbus" becomes "Nimbo" in Spanish, API endpoints get transliterated, and marketing slogans lose their punch. Without a single source of truth, every locale invents its own conventions.
Solution
Maintain a structured glossary file that pairs each source term with approved translations per locale, plus a do-not-translate list that enforces verbatim preservation. Wire it into your CI pipeline so PRs fail when a blocked term is altered or a required translation is missing.
Implementation
glossary.json
{
"doNotTranslate": [
"Nimbus",
"Meridian",
"FoogleGiber",
"KeyAuth",
"SellAuth",
"Ed25519",
"ChaCha20",
"AES-GCM"
],
"translations": {
"Dashboard": {
"es": "Panel",
"de": "Dashboard",
"fr": "Tableau de bord",
"ja": "ダッシュボード"
},
"License Key": {
"es": "Clave de licencia",
"de": "Lizenzschlüssel",
"fr": "Clé de licence",
"ja": "ライセンスキー"
}
}
}CI validation
Add a pre-commit hook or GitHub Action that scans all locale files against the glossary. If a do-not-translate term appears modified, fail the build. If a required translation key is absent from a locale, warn or block depending on your release strictness.
Maintenance
Treat the glossary as code. Review changes in PRs, version it alongside your locale files, and run a monthly audit to catch terms that slipped through. When marketing introduces a new product name, add it to the do-not-translate list before the first localization pass.