Localization Testing & QA Checklist for Developers (2026)

A layered QA system, not a flat list. Starts from why a green test suite tells you nothing about German — assertions on English copy lock the suite to one locale, so the German path is never exercised. Then five layers ordered by cost: fourteen static catalog checks with a working Python validator covering placeholder integrity across printf, python-named, i18next and ICU styles plus plural arity and whitespace; CI gates with msgfmt --check-format, extraction-drift detection and a hardcoded-string lint rule, wired into a full GitHub Actions workflow; pseudo-localization with three locales (en-XA, en-XL, ar-XB) and an honest account of what it cannot catch; automated UI checks including the ICU data trap that breaks date assertions on a Node upgrade, collation, Turkish case folding, bidi isolation and diacritic-insensitive search; a five-locale matrix chosen by failure class rather than revenue; what human linguistic QA is actually for. Plus a symptom-to-missing-layer table, a one-day triage plan with time estimates, a PR-template definition of done, and a grouped master checklist.

Back to the PO-File blog