Creating Translations
Tuxemon has basic support for changing the in-game language. Currently, most menus and items have translations into different languages. Some dialogs have been changed as well.
Overview
Most of the text in Tuxemon is stored as short descriptive names, called keys. These names are also part of "locale dictionaries" stored in a JSON format. Don't let the technical names scare you, its a very simple concept.
In the Tuxemon code, these short names match a longer phrase translated into a native language. For example, the key named "combat_player_run" is "You have run away!" in English, or "Podařilo se ti utéct!".
By creating a new dictionary for a language, or adding entries in an existing one, the game can be further translated.
Using translations in game
Right now this is how in-game translation is currently handled:
- Game language is determined via the locale config option under the [game] section in ~/.tuxemon/tuxemon.cfg.
- Based on locale setting, in-game text will be pulled from resources/db/locale/<locale>.json
- If no locale is set in tuxemon.cfg, "en_US" is selected by default.
- If a translation does not exist for a certain word/phrase in a given language, translation will fall back to "en_US". If a translation doesn't exist in "en_US" either, "Locale Error" text will be displayed instead.
- All items and techniques have a name_trans and description_trans property that will be used for translation lookup. The name and description properties will be loaded as a fall back.
Creating a new translation
The most simple way will be to copy the en_US.json copy, name it after your locale, and then translate each line. Be sure to leave the words that look like $Template:Name, as they will be used by the game to fill in different words when shown to the player. Do not translate the words inside the brackets.
Translating Items and Techniques
Currently, to add a translation for a particular item or technique, first lookup the json file for the item/technique and find entry call "description_trans" and remember that value (ie: "item_berry_descr"). Then open the dictionary (ie: en_US) and add a new entry with that name ("item_berry_descr"). Then fill in your translated text.
Final notes
The translation feature is new and there are a limitations right now:
- All of the formatting was made for English, so some menus may not render correctly
- Asian languages are supported, but the fonts render incorrectly (translation in progress)
- Translations in the map dialog boxes is currently not implemented.