Internationalization

From ZDoom Wiki
Jump to navigation Jump to search
The Oracle from Strife, now speaking in Korean.

Internationalization in software is extensive support for other languages. Since version 4.0, GZDoom has completely overhauled its internationalization and localization system, allowing to use MiniWikipediaLogoIcon.pngUnicode strings. In addition, systems have been added to allow overriding strings hardcoded in game data, such as text printed by ACS in Hexen, or character dialogue in Strife, so as to make them translatable. Raze supports internationalization too.

Character rendering

Doom and other games using its engine made use of distinctive bitmap fonts, as did most games from the 1990s. These fonts are an important part of the game's visual identity, and painstaking efforts were used to preserve them whenever possible. This meant drawing additional characters in the same style in the Latin and Cyrillic alphabets, for a dozen different fonts spread across Doom, Heretic, Hexen, Strife, and Chex Quest.

For some writing systems, however, notably the MiniWikipediaLogoIcon.pngCJK characters, the prospect of providing hand-drawn glyphs for every character in over a dozen font variations is not realistic. For this reason, when a bitmap font is not available for the language requested, the engine falls back to a "complete" vector font, with an added outline approximating the look of the original bitmap fonts in most supported games.

Note that the engine still only supports left-to-right writing. Right-to-left writing systems, such as those used in Arabic, Hebrew, Persian, or Urdu, are therefore not supported.

Existing translations

Complete

The customize controls menu in Russian.
Various items being picked up in Spanish.

The following languages are considered complete enough for inclusion in the standard GZDoom distribution.

Language Code MiniDoomLogoIcon.png MiniDoom2LogoIcon.png MiniHereticLogoIcon.png MiniHexenLogoIcon.png MiniStrifeLogoIcon.png MiniChex3LogoIcon.png MiniHacxLogoIcon.png MiniHarmonyLogoIcon.png
Czech cs
Dutch nl
Esperanto eo
Finnish fi
French fr
German de
Hungarian hu
Italian it
Japanese ja
Korean ko
Polish pl
Portuguese (Portugal) ptg
Portuguese (Brazil) pt
Romanian ro
Russian ru
Serbian sr
Spanish (Castilian) es
Spanish (Latin American) esm

The following languages are considered complete enough for inclusion in the standard Raze distribution.

Language Code MiniBloodLogoIcon.png MiniDuke3DLogoIcon.png MiniExhumedLogoIcon.png MiniNAMLogoIcon.png MiniRRLogoIcon.png MiniSWLogoIcon.png MiniWW2GILogoIcon.png
Czech cs
Danish da
French fr
German de
Italian it
Norwegian no
Polish pl
Portuguese (Brazil) pt
Romanian ro
Spanish es
Turkish tr

In progress

The following languages are not considered complete enough to be included in GZDoom distribution yet.

Language Code MiniDoomLogoIcon.png MiniDoom2LogoIcon.png MiniHereticLogoIcon.png MiniHexenLogoIcon.png MiniStrifeLogoIcon.png MiniChex3LogoIcon.png MiniHacxLogoIcon.png MiniHarmonyLogoIcon.png
Greek el

The following languages are not considered complete enough to be included in Raze distribution yet.

Language Code MiniBloodLogoIcon.png MiniDuke3DLogoIcon.png MiniExhumedLogoIcon.png MiniNAMLogoIcon.png MiniRRLogoIcon.png MiniSWLogoIcon.png MiniWW2GILogoIcon.png

Note that support for CJK characters is not implemented yet in Raze.

Translating GZDoom or Raze into your language

Korax taunting you in French.

It is worth noting that anyone can contribute to GZDoom's localization project, and fluent speakers who wish to contribute to both complete and incomplete languages are welcome. The following spreadsheet contains all localized text data in GZDoom, as well as in Raze, along with all respective translations (both complete and works in progress):

  1. GZDoom & Raze strings

You can also help by contributing graphics for the missing glyphs in the various fonts. It is possible that your language will require additional characters to be drawn.

More details can be found in this forum topic, which describes in detail how to contribute to the translation of a new language, or improving an existing one.

See also