Internationalization (i18n) of the Flowee Pay front ends

GUI Translations

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.

Managing translations

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.

Every time the floweepay project is built, the translation files are 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.

On Crowdin, go to Settings, Files, and find the front-end you are updating. For instance floweepay_desktop.ts click Update, and upload the new version of floweepay_en.ts from the desktop folder the build 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 nl/floweepay_desktop.ts to desktop/i18n/floweepay_nl.ts

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.

  1. Update the CMakeLists.txt and under the qt5_create_translation add your wanted translations filename. The language code are explained on Crowdin, language codes.
  2. You will need to edit the i18n manifest file for your front-end. For instance desktop/i18n.qrc and add a new entry. Below is an example of the Dutch language entry.
<qresource prefix="/i18n">

Note that the language translation file must end in .qm (the compiled extension), and not .ts