HowTo/Localize an Asset
Trainz games are sold in many countries and languages all over the world. This wiki section details how you can make your content compatible with other languages in Trainz.
Language Specific Tags
Assets in Trainz have several tags within their config.txt files which contain language specific data. These are:
username - The username tag contains the asset name. This is the text displayed in the Content Manager list view and in the various selection lists in game.
description - The description tag contains a brief asset description. The asset description is shown in the "Asset Details" panel in Content Manager. For Routes and Sessions the description is also displayed in the Routes/Surveyor/Driver menus in game.
string-table - The string-table container holds miscellaneous strings used by the asset. These entries could be anything from place names in routes/sessions to dialog boxes displayed by Driver scripts.
For every asset uploaded to the Download Station these tags should be in English. Translated versions can easily be made by adding the appropraite two character language suffix to the tag name. For example, to have you asset display with a French name when a player is running in French simply add a "username-fr" tag with the French asset name.
Trainz HTML
Trainz makes use of in game dialogs which are formatted using a markup language similar to HTML. Readable text within Trainz HTML can be translated one of two ways through the use of font locale tags.
The first, and preferred, way of translating Trainz HTML is to use the generic locale. Using the generic locale instructs the Trainz HTML parser to look in an assets string-table for the translated text. When using the generic locale you first create a string-table entry in your asset config.txt file. You then reference this string-table entry between the font tags and the text will be replaced at run-time.
For example:
string-table { html-hello "Hello!" } string-table-fr { html-hello "Bonjour!" } <font locale=generic>html-hello</font>
If you use the generic locale and a translation is unavailable for a players selected language, the parser will fall back to English.
The alternative, older, way of translating Trainz HTML is to specify the language name in the font locale tag. This method is troublesome, and should be avoided, but is used by many older assets in game and on the Download Station.
For example:
<font locale=english>Hello!</font> <font locale=french>Bonjour!</font>
If you use this older style of localization and a translation is unavailable for a players selected language, nothing will be displayed.
You can find more information about Trainz HTML and in game script dialogs here.
Example Asset
The following is an example of a fairly simple config.txt file that has been translated into German and French.
kuid <kuid:-16:2030> kind "behavior" script "behaviour" class "ControlTypeRule" icon-texture "control_type.texture" asset-filename "ControlTypeRule" username "Control Type" username-fr "Type de contrôle" username-de "Control Type" string-table { html_description1 "Current control method is <a href=live://property/control-method>Cab mode</a>." html_description2 "Current control method is <a href=live://property/control-method>DCC mode</a>." html_description3 "Current control method is <a href=live://property/control-method>Ask user</a>." driver_default_msg "Defaulting to DCC mode for user train." description "Set the control method (DCC mode or Cab mode) and realism." } string-table-fr { html_description1 "Méthode de contrôle actuelle : <a href=live://property/control-method>mode Cabine</a>." html_description2 "Méthode de contrôle actuelle : <a href=live://property/control-method>mode DCC</a>." html_description3 "Méthode de contrôle actuelle : <a href=live://property/control-method>Demander à l'utilisateur</a>." driver_default_msg "Activation par défaut du mode DCC pour le train de l'utilisateur." description "Permet de sélectionner la méthode de contrôle (mode DCC ou Cabine) et le niveau de réalisme." } string-table-de { html_description1 "Aktuelle Steuerung ist <a href=live://property/control-method>Führerstandsmodus</a>." html_description2 "Aktuelle Steuerung ist <a href=live://property/control-method>Trafo-Modus</a>." html_description3 "Aktuelle Steuerung ist <a href=live://property/control-method>Benutzer fragen</a>." driver_default_msg "Zurück zum Trafo-Modus für den Zug des Benutzers." description "Steuerungs-Methode (Trafo- oder Führerstands-Modus) und Realismus auswählen." }