MG/Translations

Some of the existing translations are not very well maintained and, so far, only a couple languages are supported, so keeping files up to date or adding new translations helps the MegaGlest community a great deal.

How translations work
There are several language files for various languages and purposes. These language files contain several lines which always take the same pattern:

keyword=translation string

These keywords (also dubbed 'translation keys') are referenced in the source code of the game. Depending on the language the user has chosen, when these keywords are met during execution of the game, the translation string which matches this keyword is taken from the language file and printed on screen.

Sometimes the game developers and modders need to add or remove new translation keys (strings) to the language files. Whenever this happens, they update the english.lng file to make this work for English (but not for other languages). When they do, they either remove lines which are no longer referenced in the game (and thus no longer needed) or add new lines (for newly introduced text) to english.lng. Sometimes, but not usually, they also add any newly added lines to the other translation files (using the english language translation as a source). So the reference file, the file all translators should check to make sure they contain the right keywords, is english.lng.

The latest version of english.lng is usually the one in trunk. There could theoretically be newer ones in (other) branches of the subversion source code repository but that's rather unlikely and if this should happen the developers should be telling you (feel free to check, though).

How to provide translations
Now to update an existing translation, you need to get the latest copy of the existing translation file, which is usually the one in trunk, too.

For example, to update for example galician.lng, based on english.lng, you need to:
 * Make sure you use a text editor which supports Unix style line endings (such as every editor on Linux does and most editors on Windows — such as Notepad++; Note that Microsoft's Notepad will not work) and the UTF-8 encoding.
 * Remove any lines from galician.lng which contain keywords which are not contained in english.lng.
 * Add any lines to galician.lng which contain keywords which are contained in english.lng (but have not been contained in galician.lng</tt> so far).
 * Replace the english translation strings by a galician translation. Try to use one which is not or just a little bit longer than the english string because the text will need to fit into a given place on screen.
 * Save the file using UTF-8 character encoding. In case this option is provided, please do not store the byte-order mark (BOM).
 * Run the game with your new translations and see whether your new translations really make sense where they are used. It can easily happen that you add a translation which does not make sense in the given context. Also make sure that your translation really fits well on screen with the default font size. You may add \n</tt> (backslash and 'n') to your translation strings to wrap the text across multiple lines. But make sure what this does not break the looks either - you should test this at a 800x600 resolution.
 * Make a final check to verify it's all ok.
 * Paste your new/updated translation on paste.megaglest.org and paste the resulting internet address on the MegaGlest forums as a new translation. Alternatively, send the translation file to the MegaGlest general contact e-mail address or one of the main developers (by e-mail). Please provide information on how you would like to be credited in the documentation for the next release - credit is usually recorded either by their first name, full name or nickname.

Translating techtrees
Some techtree related information which displays in the graphical user interface, such as unit or structure names or unit/attack properties, can now (starting r3285) be translated, too. Here is how it works:


 * For a given techtree (lets assume Megapack) create a subdirectory named lang within the megapack (techtree) directory, i.e. techtrees/megapack/lang/ (skip if it already exists)

techtree_language.lng</tt>. Example: megapack_german.lng</tt>
 * In this new directory, create a new language file using this naming convention (skip if it already exists):

ResourceTypeName_food=Yummies</tt> UnitTypeName_archer=Stealth Minion</tt> UpgradeTypeName_advanced_architecture=Fancy Science</tt> Here, food, archer and advanced_architecture are examples. You need to use the keywords this very techtree defines there. In game the discovered translated strings will display if the user is using a supported language, otherwise it defaults to original behavior.
 * Edit the file. Supported translatable items are currently: resource, unit and upgrade names. So In each language file add:

Keep your translation up to date
After you completed your translation, please make sure you also subscribe to the megaglest-translations mailing list. This mailing list is used to notify translators that we will soon release a new version, so they have a chance to ensure that their translation is complete. Note that during development it will happen that new translation keys are added, and possibly old ones removed, so it is very likely that changes need to be made to existing translations to make them complete for the next release.