Pseudolocalisation test values

The standard internationalisation-testing technique, reduced to values you can paste into a field. 10 values, each with what it breaks and what a correct application does instead.

pseudolocalization version 1.0, updated 2026-10-14 CC-BY-4.0

Type them one at a time with AltShiftN in the palette, or take them all into a script with nkb emit pseudolocalization.

Pseudolocalised text in brackets

pseudolocalization/pseudo-bracketed
[!!!Ŕéšöûŕčéš!!!] [!!! Ŕéšöûŕčéš !!!]
  • 19 graphemes
  • 19 code points
  • 28 bytes
  • 19 UTF-16 units
What it breaks
The brackets reveal truncation instantly: if either is missing on screen, the text was cut.
What a correct application does
Both brackets visible wherever the value is displayed.

Accented pseudolocalised word

pseudolocalization/pseudo-accented
Ŕéšöûŕčéš Ŕéšöûŕčéš
  • 9 graphemes
  • 9 code points
  • 18 bytes
  • 9 UTF-16 units
What it breaks
Still readable as English, so a tester spots it in a screen where a string was never translated.
What a correct application does
Displayed with every accent intact, in every layer.

Pseudolocalised text, 30 per cent longer

pseudolocalization/pseudo-expanded-30
[!!!Ŕéšöûŕčéšééééé!!!] [!!! Ŕéšöûŕčéš ééééé !!!]
  • 25 graphemes
  • 25 code points
  • 39 bytes
  • 25 UTF-16 units
What it breaks
Thirty per cent longer, the typical growth when English is translated into German.
What a correct application does
The layout holds without clipping or overlapping.

Pseudolocalised text, twice as long

pseudolocalization/pseudo-expanded-100
[!!!Ŕéšöûŕčéšéééééééééééééééééé!!!] [!!! Ŕéšöûŕčéš éééééééééééééééééé !!!]
  • 38 graphemes
  • 38 code points
  • 65 bytes
  • 38 UTF-16 units
What it breaks
Twice the length, for labels and buttons sized to the English word.
What a correct application does
Wrapped or resized rather than clipped.

Very short pseudolocalised text

pseudolocalization/pseudo-short
[!Ŕ!] [!Ŕ!]
  • 5 graphemes
  • 5 code points
  • 6 bytes
  • 5 UTF-16 units
What it breaks
The opposite case: a very short translation leaves a layout built around a long one looking broken.
What a correct application does
The layout holds when the value is short.

Pseudolocalised text with direction marks

pseudolocalization/pseudo-rtl
[!!!Ŕéšöûŕčéš!!!] [!!! \u200FŔéšöûŕčéš\u200F !!!]
  • 2 characters that change the direction of text
  • 21 graphemes
  • 21 code points
  • 34 bytes
  • 21 UTF-16 units
What it breaks
Pseudolocalisation with direction marks, for checking mirrored layouts without knowing a right-to-left language.
What a correct application does
The interface mirrors correctly and the brackets stay in the right places.

Number inside pseudolocalised text

pseudolocalization/pseudo-numbers
[!!!1234,56!!!] [!!! 1234,56 !!!]
  • 17 graphemes
  • 17 code points
  • 17 bytes
  • 17 UTF-16 units
What it breaks
Numbers inside a pseudolocalised string reveal formatting that was hard-coded next to the text.
What a correct application does
Numbers formatted by locale, not concatenated.

Placeholder inside pseudolocalised text

pseudolocalization/pseudo-with-placeholder
[!!!Ŕéšöûŕčéš{0}!!!] [!!! Ŕéšöûŕčéš {0} !!!]
  • 23 graphemes
  • 23 code points
  • 32 bytes
  • 23 UTF-16 units
What it breaks
A placeholder that must survive translation; losing it produces a message with a hole in it.
What a correct application does
The placeholder preserved and filled.

Markup inside pseudolocalised text

pseudolocalization/pseudo-html
[!!!<b>Ŕéšöûŕčéš</b>!!!] [!!! <b>Ŕéšöûŕčéš</b> !!!]
  • 26 graphemes
  • 26 code points
  • 35 bytes
  • 26 UTF-16 units
What it breaks
Markup inside a translated string is either escaped or rendered, and both are wrong in different places.
What a correct application does
Handled the same way as any other user-provided markup in that field.

Three scripts in one string

pseudolocalization/pseudo-mixed-scripts
[!!!Ŕéšöûŕčéš中文العربية!!!] [!!! Ŕéšöûŕčéš 中文 العربية !!!]
  • 30 graphemes
  • 30 code points
  • 50 bytes
  • 30 UTF-16 units
What it breaks
Three scripts in one string: font fallback, line breaking and direction all at once.
What a correct application does
Every script rendered, with no missing-glyph boxes.