I18N-010 recommended Testing
Pseudo-localization for catching issues
Pseudo-localization transforms strings to reveal hardcoded text, test expansion, and find truncation issues before real translations.
Question to ask
"Any hardcoded text hiding from your translation pipeline?"
Verification guide
Severity: Optional
Pseudo-localization transforms strings like "Hello" → "[Ħëľľö]" to:
- Reveal hardcoded strings (they won't be transformed)
- Test text expansion (German is ~30% longer than English)
- Expose concatenation issues
- Find truncated text in fixed-width UI
Check automatically:
# Check for pseudo-locale config in i18next
grep -riE "pseudo|cimode|debug.*true" src/ --include="*i18n*" --include="*.json" 2>/dev/null | grep -v node_modules | head -5
# Check for pseudo-localization packages
grep -E "pseudo-localization|@formatjs/cli.*pseudo|i18next-pseudo" package.json 2>/dev/null
# Look for pseudo locale in translation files
find . -maxdepth 5 -type d \( -name "pseudo" -o -name "qps*" -o -name "xx*" \) \( -path "*/locales/*" -o -path "*/translations/*" \) 2>/dev/null | grep -v node_modules
# Check for pseudo in scripts
grep -E "pseudo" package.json 2>/dev/null | grep script
Pass criteria:
- Pseudo-locale available for testing
- Developers know how to enable it
- Used during development to catch issues early
Fail criteria:
- No pseudo-localization tooling
- "What's pseudo-localization?"
- Only test with real translations (too late in the cycle)
Evidence to capture:
- Pseudo-localization tooling
- How to enable it
- Usage in development workflow