Quick answer: Set per-locale Fallback to a known-good language (English usually). Configure Project Settings → Localization → Missing Behavior to PrintWarning so missing keys are visible during development.
User in Spanish sees the raw key “ui.menu.save” on a button. The Spanish table is missing that entry and there’s no fallback chain configured.
The Symptom
Some UI strings show as raw key names. Or unexpectedly show in English when a Spanish user is logged in. Or the wrong locale is picked entirely.
The Fix
Step 1: Set Fallback Locales. Window → Asset Management → Localization Tables → Locales tab. For each locale, set its Fallback to a parent.
es-MX → es → en
fr-CA → fr → en
en-GB → en
en (root, no fallback)
Resolution walks the chain until a translation exists or exhausts the chain. With en as ultimate fallback, every key has a value.
Step 2: Missing Behavior. Project Settings → Localization → Missing Behavior:
- UseProjectSettings (default).
- PrintWarning — logs every fallback. Use during development.
- ShowMissingTranslationMessage — renders a placeholder.
- UseFallbackLocale — silently fall back. Production.
Step 3: Identify untranslated keys. Localization Tables → Search field → filter by empty cells. Or with PrintWarning on, run the game in each locale and collect warnings.
Verifying
Switch to a locale missing a specific key. UI should show the fallback’s text, not the raw key. Console should print a warning identifying the missing translation in development builds.
“Fallback chain to English. PrintWarning during dev. Players never see raw keys.”
Related Issues
For TMP emoji, see TMP emoji. For UI Toolkit USS, see UI Toolkit USS.
Fallback chain. Warnings on. Keys translate.