Skip to content

Pseudo-localization

A pseudo language is a fake translation of every text: the same words with accented letters, made longer and wrapped in brackets. Play the game in it before any real translation exists, and three kinds of problems show up right away:

  • Cut-off text: the closing ] is missing where a widget is too small for a longer language.
  • Concatenated text: [Score:] [42] instead of one bracketed text means a sentence is glued together in code, which can’t be translated correctly.
  • Hardcoded text: anything without accents and brackets is not localized at all.

With the default settings, every letter is replaced with an accented one, padding words make the text about 35 % longer, and the result is wrapped in [ ]:

Source Pseudo text
Start Game [Šţåŕţ Ĝåɱé ļöŕ]
Welcome back, {PlayerName}! [Ŵéļçöɱé ƀåçķ, {PlayerName}! ļöŕéɱ]

Format arguments such as {PlayerName}, plural, gender and ordinal blocks, rich text tags and escapes are kept exactly, so the pseudo text still works in the game. Leading and trailing whitespace stays outside the brackets. The padding is at least two characters, so very short texts grow too.

Change the culture code, the extra length, the accents and the brackets in Project Settings > Plugins > ta Dragoman > Pseudo-Localization. See Settings.

  1. Gather the target first. The pseudo language is built from the gathered source texts.

  2. In the Dragoman panel, choose Tools > Build pseudo language (en-XA). From Python, call build_pseudo(); from the command line, add -Pseudo.

  3. Dragoman adds the pseudo culture (en-XA by default) to the target if it isn’t there yet, fills it with the pseudo text of every source text and compiles it.

A notification confirms it: “Pseudo language en-XA built.” Adding the culture changes the target’s settings in Config/DefaultEditor.ini and its config files in Config/Localization, the same way adding a language in the Localization Dashboard does.

Build it again after a gather to update it with new and changed texts. Each build replaces the previous pseudo text.

The pseudo language gets its own card in the panel, “Pseudo (en-XA)”, placed last. It is read-only and not counted as a translated language: the translation checks, translator packages and machine translation skip it, and it is never added to the translation memory.

  • In the editor: Editor Preferences > Region & Language > Preview Game Language, then pick the pseudo language. Widgets in the editor and Play In Editor show the pseudo text.
  • In a standalone game: run the game with -culture=en-XA.
  • In a packaged test build: add en-XA to Project Settings > Packaging > Localizations to Package. Leave it out of your release builds. (Repair gather setup leaves the pseudo language out on purpose.)
Message Fix
"<code>" is not a culture this engine knows. Set another pseudo culture in the settings (en-XA works). Set Pseudo Culture to a culture code Unreal knows.
There is no localization target called "<name>". Check Target Name in the settings.
The pseudo culture cannot be the native culture. Pick another pseudo culture.
Gather the text first: the target has no manifest yet. Gather the target, then build again.