practice

Pseudo-Locale Testing

also called Pseudo-Localisation, Accented Locale

Rendering the interface with algorithmically transformed strings - lengthened, accented, direction-reversed - to expose internationalisation defects before any translation exists.

i18ntestinglayoutrtlquality

A pseudo-locale replaces every translatable string with a transformed version of itself: padded to be significantly longer, marked with accented characters, and optionally reversed in direction. The text remains readable enough to navigate, and every layout and extraction defect becomes immediately visible.

What it exposes, with no translators involved

  • Fixed-width components that overflow, since translated text is routinely far longer than the source.
  • Hardcoded strings, which appear unchanged among transformed ones and are therefore trivially spotted — this is its highest-value use and it requires no judgement to interpret.
  • Concatenated sentences, which fragment visibly under transformation.
  • Truncation and clipping at real string lengths rather than at English ones.
  • Direction failures in a mirrored pseudo-locale: physical CSS positioning, directional icons, and navigation that does not flip.

Implementation patterns

  • Wired into the development build behind a switch, so any engineer can check their work in seconds.
  • Run in continuous integration with visual comparison, catching layout regressions before review.
  • A padding factor reflecting realistic expansion, since short strings expand proportionally far more than long ones.
  • A separate mirrored pseudo-locale for right-to-left verification.
  • Paired with [[logical-css-properties]] rather than physical positioning, which makes mirroring largely automatic and is free if adopted from the start.

Industry example

Platforms expanding into many markets consistently find the same ordering of pain. String extraction and layout breakage are discovered early and are cheap to fix. Bidirectional layout is the expensive one: retrofitting right-to-left support onto a codebase built with physical positioning touches essentially every component, whereas using logical properties from the beginning costs nothing.

The defects that pseudo-locale testing does not catch are the ones with real business consequence — a date formatted day-month and read as month-day is a booking error, and pluralisation rules for languages with several forms cannot be exercised by transformed English. Those need locale-aware formatting libraries and real translator review, and no amount of pseudo-locale coverage substitutes.

Failure scenarios

  • Testing only with English, so expansion breakage is found by users in the launch market.
  • Pseudo-locale with insufficient padding, which passes and then fails against real translations.
  • No mirrored variant, leaving direction defects entirely undetected.
  • Treating it as sufficient, when formatting, collation, pluralisation and input validation remain untested.
  • Available but not automated, so it is run once during a localisation project and never again.

Trade-offs

It is cheap to build and adds a build configuration plus a CI job. Its limitation is coverage: it tests presentation, not correctness, and a team that treats a passing pseudo-locale run as internationalisation readiness will ship formatting and validation defects into every new market.

The right framing is that it removes the whole class of defects that are tedious to find manually, so review attention goes to the ones that require judgement.

Interview question

"You are about to localise a product into twelve languages including two right-to-left. What do you do before a single string is translated, and what will that not tell you?"