# Colobot data translation The translation of Colobot level titles, level hierarchy and help files is managed through translation files (`*.pot` and `*.po`) as those generated by [gettext](https://www.gnu.org/software/gettext/). This is achieved by a set of Python scripts using [polib library](https://pypi.python.org/pypi/polib). The only requirement for generating translations is standard Python 2.7+ installation (polib library is bundled with other script files). If you don't have Python installed, nothing is generated and only English files are installed. ## Level scene description files Level scene description files have English headers that are used in the Colobot interface to describe the levels. Level scene description files are `levels/$level/scene.txt` and translations are handled in the level-specific `po/` directory: `levels/$levels/po/`. The `*.pot` file is the source translation file, the `*.po` files are the translations. ## Help files Help files are divided in two categories: * Generic help files, about the game, the objects, the syntax, etc. These are stored in `help/`, in four sub-categories: generic, bots, object and bots. * Level-specific help files, about the level, instructions, example programs, etc. These are stored in `levels/$level/help/`. Help files have their source in English, always stored in the `E/` subdirectory. Every other language directory is dynamically generated in the build process from files in level's `po/` directory. ## Colobot syntax Colobot parses a specific syntax to enable some formatting in the game interface. To ease translation, this syntax is transformed into a pseudo-HTML syntax in the gettext files. Here is the table of transformations and their meanings:
Transformed label Colobot native label Description
<button $buttonID/> \button $buttonID; Indicates a UI button. $buttonID is a number
<key $keyCode/> \key $keyCode; Indicates a keyboard key. $keyCode is a code, such as action
<format $formatID>Formatted text</format> \$formatID;Formatted text\norm; Changes text formatting in the marker. $formatID can be const, type, token or key.
<$formatID/> \$formatID; Toggle text formatting. $formatID can be const, type, token, key or norm.
<a $link>Link text</a> \l;Link text\u $link; Direct hyper-link. $link can be direct or in a category (such as cbot\abstime)
<a $linkcat|$link>Link text</a> \l;Link text\u $linkcat\$link; In-category hyper-link, linkcat can only be cbot, bots or object.
<code>CBot code</code> \c;CBot code\n; Code formatting
<s/> \s; Typewriter line indicator (usually verbatim code)
<t/> \t; Title line indicator
<b/> \b; Subtitle line indicator
<c/> \c; Typewriter formatting toggle
<n/> \n; Normal formatting toggle