This is list of all languages that are currently supported by VCMI. If your languages is missing from the list and you wish to translate VCMI - please contact our team and we'll add support for your language in next release.
You can see the current progress of the different translations here: Translation progress
The page will be automatically updated once a week.
VCMI allows translating game data into languages other than English. In order to translate Heroes III in your language easiest approach is to:
game.json, campaigns.json and maps.jsonIf you can't produce some content on your own (like the images or the sounds):
README.md file at the root of the modThis way, a contributor that is not a native speaker can do it for you in the future.
If you have already existing Heroes III translation you can:
This will export all strings from game into Documents/My Games/VCMI/extracted/translation/ directory which you can then use to update json files in your translation.
To export maps and campaigns, use '/translate maps' command instead.
It's possible to add video subtitles. Create a JSON file in video folder of translation mod with the name of the video (e.g. H3Intro.json):
[
{
"timeStart" : 5.640, // start time, seconds
"timeEnd" : 8.120, // end time, seconds
"text" : " ... " // text to show during this period
},
...
]
VCMI contains several new strings, to cover functionality not existing in Heroes III. It can be roughly split into following parts:
Before you start, make sure that you have copy of VCMI source code. If you are not familiar with git, you can use Github Desktop to clone VCMI repository.
In order to translate in-game data you need:
<VCMI>/Mods/VCMI/mod.json, similar to other languages<VCMI>/Mods/VCMI/config/vcmi/english.json and rename it to name of your language. Note that while you can copy any language other than English, other files might not be up to date and may have missing strings.After this, you can set language in Launcher to your language and start game. All translated strings should show up in your language.
VCMI Launcher and Map Editor use translation system provided by Qt framework so it requires slightly different approach than in-game translations:
<VCMI Sources>/launcher/translation/ directory, copy english.ts file and rename it to your language<VCMI Sources>/launcher/CMakeLists.txt file with a text editor. In there you need to find list of existing translation files and add new file to the list.Translation of Map Editor is identical, except for location of translation files. Open <VCMI Sources>/editor/translation/ instead to translate Map Editor
TODO: how to test translation locally
The AppStream metainfo file is used for Linux software centers.
It can be translated using a text editor or using jdAppStreamEdit:
<VCMI>/launcher/eu.vcmi.VCMI.metainfo.xml<VCMI>/launcher/vcmilauncher.desktop and <VCMI>/launcher/vcmieditor.desktopGenericName[xyz] and Comment[xyz] with your language code and translation<VCMI>/android/vcmi-app/src/main/res/values/strings.xml to <VCMI>/android/vcmi-app/src/main/res/values-xyz/strings.xml (xyz is your language code)See also here: https://developer.android.com/guide/topics/resources/localization
Once you have finished with translation you need to submit these changes to vcmi team using git or Github Desktop
If everything is OK, your changes will be accepted and will be part of next release.
If you want to start new translation for a mod or to update existing one you may need to export it first. To do that:
After that, start Launcher, switch to Help tab and open "log files directory". You can find exported json's in 'extracted/translation' directory.
If your mod also contains maps or campaigns that you want to translate, then use '/translate maps' command instead.
If you want to update existing translation, you can use '/translate missing' command that will export only strings that were not translated
In order to display information in Launcher in language selected by user add following block into your mod.json:
"<language>" : {
"name" : "<translated name>",
"description" : "<translated description>",
"author" : "<translated author>",
"translations" : [
"config/<modName>/<language>.json"
]
},
However, normally you don't need to use block for English. Instead, English text should remain in root section of your mod.json file, to be used when game can not find translated version.
After you have exported translation and added mod information for your language, copy exported file to <mod directory>/Content/config/<mod name>/<language>.json.
Use any text editor (Notepad++ is recommended for Windows) and translate all strings from this file to your language
In order to add new language it needs to be added in multiple locations in source code:
lupdate with name of new .ts or by copying english.ts and editing language tag in the header.lib/Languages.h entry. This will trigger static_assert's in places that needs an update in codeAlso, make full search for a name of an existing language to ensure that there are not other places not referenced here
At the moment, build system will generate binary translation files (.qs) that can be opened by Qt.
However, any new or changed lines will not be added into existing .ts files.
In order to update .ts files manually, open command line shell in mapeditor or launcher source directories and execute command
lupdate -no-obsolete * -ts translation/*.ts
This will remove any no longer existing lines from translation and add any new lines for all translations. If you want to keep old lines, remove -no-obsolete key from the command.
There may be a way to do the same via QtCreator UI or via CMake, if you find one feel free to update this information.
Generally, this should be as simple as overwriting old files. Things that may be necessary if translation update is not visible in executable:
lupdate -no-obsolete * -ts translation/*.tsVCMI uses an Inno Setup installer that supports multiple languages. To add a new translation to the installer, follow these steps:
Download the ISL file for your language:
Add custom VCMI messages:
English.isl file in the repository for examples of required custom messages.WindowsVersionNotSupported and ConfirmUninstall, are correctly translated and match the functionality described in the English version.Modify the ConfirmUninstall message:
ConfirmUninstall message is consistent with the English version and accurately reflects the intended functionality.Modify the WindowsVersionNotSupported message:
Add the new language to the installer script:
[Languages] section of the Inno Setup script.Example syntax for adding a language:
[Languages]
Name: "english"; MessagesFile: "{#LangPath}\English.isl"
Name: "czech"; MessagesFile: "{#LangPath}\Czech.isl"
Name: "<your-language>"; MessagesFile: "{#LangPath}\<your-language>.isl"