Localization testing checklist

Sixteen checks for a product that ships in more than one language, grouped by the three ways localization breaks. Encoding failures corrupt the data itself and survive every later step, which is why they come first: a string that was mangled on the way into the database cannot be rescued by a correct translation. Formatting failures produce output that is readable, plausible and wrong, which is worse than a crash because nothing reports it. Layout and translation-coverage failures are visible, but only in a locale somebody actually looked at. Run each of these against a locale you do not read, since the bugs that survive review are the ones in the language the reviewer speaks.

16 checksabout 116 min end to end

Encoding, which corrupts the data itself

  • How to check if a page is UTF-8
    A page with no declared charset falls back to a legacy encoding rather than to UTF-8, so the declaration is part of the content, not a detail of the response.
    7 min
  • How to check for garbled characters from the wrong encoding
    Garbled characters name the pair of encodings that produced them, so the damage is readable as a diagnosis instead of as a rendering problem.
    8 min
  • How to check the encoding of a file
    A file's encoding has to be inferred from its bytes, and the tools that guess are confidently wrong on short files.
    6 min
  • How to check the encoding of a CSV file
    A spreadsheet reader decides how to read a file from its first bytes, so the same export opens correctly in one application and as mojibake in another.
    6 min
  • How to check JSON encoding
    JSON narrows the question to one legal answer, which makes a byte order mark at the start of a document a parse error rather than a hint.
    6 min
  • How to test unicode input
    The round trip through form, database and response is where a value loses its accents, and testing only the display half never finds it.
    10 min
  • How to check string length with emoji
    A character count that a person would give and one that a program gives differ on emoji and on combining marks, and a field limit built on the wrong one truncates mid-character.
    6 min

Formatting, which is plausible and wrong

What a reader in that locale would see

  • How to check for missing translations
    A missing key usually renders as the key itself or as the source language, and both pass an automated check that only asserts the page rendered.
    9 min
  • How to test text expansion in translations
    Translated strings are routinely longer than the source, so a layout tested only in the source language is tested at its narrowest.
    8 min
  • How to test rtl layout
    Right-to-left is a direction change for the whole interface rather than for the text, and the parts that do not mirror are the ones nobody declared.
    9 min

Take it with you

The file is the same list as Markdown checkboxes, ready to paste into a release ticket or a pull request description.

Ticks are kept in this browser only. They are not sent anywhere and other people do not see them.