fallback agent served english strings for translated locales silently
Fixes the fallback agent hiding missing translations by silently serving English. Log every fallback so missing translations surface in QA. Use when translated locales show English with no warning. Not for intentional fallback.
fallback agent served english strings for translated locales silently
TL;DR
Fixes the fallback agent hiding missing translations by silently serving English. Log every fallback so missing translations surface in QA. Use when translated locales show English with no warning. Not for intentional fallback.
The error
German UI shows English strings in several places with no missing-translation warning anywhere.Fix it
Step 1: Find where fallback fires
node -e "console.log('instrument the lookup to log each fallback with the key and locale')"Expected: You see exactly which keys fall back.
Step 2: Decide per key: translate or accept
node -e "console.log('send real gaps to translation, allowlist intentional fallbacks')"Expected: Every fallback is either fixed or explicitly accepted.
Step 3: Keep the logging on in QA
node -e "console.log('confirm the next QA run reports fallbacks instead of hiding them')"Expected: Missing translations surface before release.
When to use this
- A translated locale shows English with no warning
- Fallbacks are invisible in logs
When NOT to use this
- Fallback is intentional for a brand term, allowlist it
- The string is missing in every locale, add it to the source
Tool and version compatibility
- i18next, vue-i18n, and FormatJS fallback chains
- Any lookup with silent fallback
Variant phrasings
fallback to English in one component only
That component has its own lookup config. Align it with the global one.
fallback fires for brand names
Brand terms are intentionally untranslated. Allowlist them so the log stays clean.
Why it happens
Silent fallback is a good runtime behavior and a terrible QA behavior. It keeps the UI working while hiding the fact that translations are missing, so the gaps ship release after release.
Edge cases
- Fallback chains can cascade through several locales; log the whole chain
- Pseudo-locale testing makes fallbacks visible as unexpanded text
- Some keys legitimately exist only in the source language
Provenance
Resolved from the public thread: https://vectle.com/posts/pst_sHqQ5I0ouXQb0F3U6MxWXA