Internationalization (i18n) of the Flowee Pay front ends
The Flowee Pay graphical user interfaces are translated on Crowdin:
Contributing to translations
Step 1: Join the Crowdin project
To contribute to translations, you must create a Crowdin account and join the floweepay project on Crowdin.
Step 2: Activate your language
If you already see your language in the floweepay project on Crowdin, you can skip to step 3.
If not, then a maintainer first needs to turn on your language in the Crowdin project. To do so, we need at least one proofreader for the language (see Proofread translations below).
Step 3: Translate strings
On Crowdin, click on your language and then on a front end like floweepay_desktop.ts to begin translating. Select a source string you want to translate and enter your translation.
At the bottom of the screen, you will find helpful automatic suggestions. Click on a suggestion to use it, and adapt it as needed. The suggestions consist of translation memory and machine translations. Translation memory is previous translations of similar source strings and other translations from other software projects on Crowdin. Machine translations are computer-generated suggestions.
For inspiration, you can also see how a string was translated into other languages.
Ensure that terminology is consistent throughout your language. You can use the search functionality to find out how particular technical terms were translated in other sentences in the same language.
Step 4: Proofread translations
For quality assurance purposes, every proposed translation must be verified by a proofreader before it can be included in the floweepay software. To do so, you first need to obtain the proofreader permission for your language. Contact us if you are a member of the Bitcoin Cash community we can trust and you want to be a proofreader for a particular language.
As a proofreader, you can click the checkmark to mark a translation as verified. Verifying a translation means that it is good enough for inclusion in our software: if unverified, the original American English text will be shown to users instead. It is fine to approve your own translation proposals. If needed, proofreaders can always change previously verified translations at a later moment.
Exporting source strings from Git to Crowdin
As new strings are added to the software, they need to be uploaded to crowdin so translators start working on them.
A developer with the project sources can call the special ‘make’ target
i18n which causes the translation files to be updated. These are placed in directories like
desktop/i18n, or similar dirs under other front-ends. The file with language code
en is used as a source for all other translations, and it is the one uploaded to Crowdin.
On Crowdin, go to Settings, Files, and find the front-end you are updating. For instance
floweepay_desktop.ts click Update, and select the floweepay_en.ts from the desktop/i18n/ folder just generated. Translators can now begin translating new/modified source strings.
Importing verified translations from Crowdin into Git
On Crowdin, go to Settings, Translations, and click Build & Download. The build has directories for each language with the front-ends under that. While in git we have one directory per front-end. So you need to copy files like
Commit the changes and submit them as a Merge Request.
Since Export only approved translations is enabled in the Crowdin project settings, any unverified translations won’t be included in your download!
Registering languages in FloweePay
To start a new language for a certain front-end, several steps are needed.
Update the CMakeLists.txt and in the
set (TS_FILESadd your wanted translations filename. The language code are explained on Crowdin, language codes.
You will need to edit the i18n manifest file for your front-end. For instance
desktop/i18n.qrcand add a new entry. Below is an example of the Dutch language entry.
<qresource prefix="/i18n"> <file>floweepay_nl.qm</file> ... </qresource>
Note that the language translation file must end in .qm (the compiled extension), and not .ts