Skip to main content

Testing Strategy

Localization Testing: The Bugs Translation Alone Won't Catch

Marko KolasinacAug 25, 20263 min read
Localization Testing: The Bugs Translation Alone Won't Catch

I still see teams treat localization as a translation-vendor deliverable with a QA checkbox at the end, one line item in a launch checklist. The actual defects almost always show up earliest in layout and logic, not in word choice, and by the time the translation is "done," those defects are already baked into a design that was only ever tested in English.

Text expansion is the most common failure

German and Finnish strings routinely run thirty to forty percent longer than English for the same meaning. A button sized for "Submit" clips or wraps badly once it becomes "Zur Bestätigung einreichen." This needs testing against pseudo-localized strings, deliberately padded placeholder text, before real translations even exist, because waiting for the actual translated copy to test layout means finding the bug at the same time the translator does, which is far too late in the process to fix cheaply.

RTL isn't a mirror image

Arabic and Hebrew don't just flip text direction. Icons, form field order, progress indicators, and navigation all need direction-aware logic, not a CSS transform applied once and called done. A page that looks correctly mirrored at a glance but has one icon still pointing the English way, a forward arrow that should now point left, reads as immediately broken to a native RTL user, even if nobody on the review team who reads left to right would ever notice it.

Dates, numbers, and pluralization rules

A US-formatted date silently misread in a locale that expects day before month isn't a display quirk, it's a data-entry bug waiting to cause a real problem the first time someone acts on the wrong date. And plural rules in many languages have more forms than English's simple singular and plural. A naive if count == 1 check that works fine in English breaks outright for languages with three or four plural forms, producing grammatically broken text that a translation review, focused on the words in isolation, was never going to catch either.

Shipping to new locales without a layout and logic pass?

Translation review alone catches the words, not the bugs. We test the layout, data, and logic that break once real text lands.

Tools that catch translation errors before launch

No single tool covers all of this, but a combination gets close:

  • Pseudo-localization in the build. Replace every string with a longer, accented version and run the normal test suite. Clipped text, hardcoded strings and broken layouts show up before any real translation exists.
  • QA checks in your translation management system. Crowdin, Lokalise and Phrase can flag missing placeholders, broken tags, untranslated strings and text over a length limit before the strings reach your app.
  • Linting for hardcoded strings and missing keys, so text that bypasses the translation files fails the build.
  • ICU message format for plurals, with a test for each plural category of each language, instead of if count == 1.
  • Visual regression tests per locale, so truncation and RTL layout bugs fail a build instead of reaching a user. See visual regression testing.
  • A native speaker reviewing the running app, not a spreadsheet of strings. Many wrong translations only look wrong next to the UI they describe.

Where this actually needs to sit in the process

Layout and logic testing against placeholder strings belongs early, before translation is even final, the same instinct behind shift-left testing applied to a different kind of bug. Treating localization QA as the last step before launch guarantees you're finding these bugs at the most expensive possible point, after the design is locked and the translation invoice is already paid. It's a category worth testing across the same cross-browser matrix you already maintain, since RTL and text-expansion bugs often only surface in specific engines.