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

Section

42. Internationalization (i18n)

Team & Development