Hacking:Localization

This file contains some important hints for translators.

The current status of the Valentina translation can be checked at https://www.transifex.com/valentina/valentina-project/

Translation of Valentina is handled by the Valentina translation team (see https://www.transifex.com/valentina/teams/7274/). If you want to help, create an account on Transifex and make a request to join the team.

We recommend this short video with Transifex Translation Editor Tutorial.

The more progress we make the more complex Valentina becomes. There are several thing you should know before you start your work.

Add new language
If you don't see your language already in the list you can create a language request. But be sure that your request contains not only language code, but also country code. Example of correct codes: en_US, en_CA, en_IN, ru_RU, de_DE. Wrong requests: nl, uk, ja etc. Wrong requests will be rejected.

Note. If your language doesn't have a country code on Trainsifex you can use single language code.

After translation 10-20% of valentina.ts strings you have right to ask us include translation to Valentina distribution. Feel free to push us or make a pull request yourself if we missed this fact.

Several source files
At the same time transifex can have several source files that represent different branches of code. Source file without number "valentina.ts" represent last unstable changes in code. This file unstable and can be changed many times before the release. Translations from this source you will find in each unstable installer we provide.

From the other side source file "valentina_0.4.x.ts" represent stable release. Strings from this source file will almost never disappear. Fixes in this source file will be used in new minor release with bug fixes.

Which source file prefer to take? Main goal is to translate all strings. So we recommend begin work with "stable" source file and then update "unstable" just by uploading them like unstable on Transifex. Most time they have more than 90% similar strings. System yourself clean all "old" strings that already do not exist in this source file.

Internationalizing Valentina
You should remember several aspects when you translate Valentina.


 * Do not translate strings that you don't understand!!
 * Valentina supports language independent measurements, and not all measurements can be easy translated. Don't do anything if you are not sure about translation. See page Measurements.
 * If you don't know how correctly translate measurements you can begin with file measurements_p998_*.ts. It contains Valentina's internal standard that should be translated literally.
 * Some text contains special characters (for example placeholders %1, %2 etc.) that you should left without translation.
 * Translate only text.

Fixing typos
From time to time you may find typos in source strings. You can help us eliminate them too. All you need is to edit appropriate translation for language English (United States). After next synchronization test will show us your fix and appropriate string in source code will be fixed.

Applying translation
Usually you do not need to do anything. One of developers will download all changes and apply it. We pull changes each Monday.

But in case you build the project from source code you need to do additional moves.
 * Check if after you last edit localization someone applied it. Try to find commit with comment "Lupdate" in appropriate branch. Usually develop or release. Don't forget compare dates.
 * Update to a branch head.
 * Call Clean All.
 * Call Run qmake.
 * Call Build All.

In case you want speed up update you have two options:
 * Ask us to update localization (recommended for newbies).
 * Make a pull request. Before making a pull request we recommend run TranslationTest binary and test current changes. There are a lot common mistakes that tests cover and help to fix.

Common mistakes

 * Space letter inside measurement name.
 * Missed place holder i.e. %1, %2 ... %99. For example instead of %1 a string has 1%. Or doesn't have at all.
 * A last special character in translated and original string does not match.