The Ravencoin project has been designed to support multiple localisations. This makes adding new phrases, and completely new languages easily achievable. For managing all application translations, Ravencoin makes use of the Transifex online translation management tool.
Currently updating strings in Transifex requires a manual upload of the updated src/qt/locale/raven_en.ts. This can easily be automated in the future.
Multiple language support is critical in assisting Ravencoins global adoption, and growth. One of Ravencoins greatest strengths is cross-border money transfers, any help making that easier is greatly appreciated.
See the Transifex Raven project to assist in translations. You can also join the #translations in Ravencoin Discord.
We use automated scripts to help extract translations in both Qt, and non-Qt source files. It is rarely necessary to manually edit the files in src/qt/locale/
. The translation source files must adhere to the following format:
raven_xx_YY.ts or raven_xx.ts
src/qt/locale/raven_en.ts
is treated in a special way. It is used as the source for all other translations. Whenever a string in the source code is changed, this file must be updated to reflect those changes. A custom script is used to extract strings from the non-Qt parts. This script makes use of gettext
, so make sure that utility is installed (ie, apt-get install gettext
on Ubuntu/Debian). Once this has been updated, lupdate
(included in the Qt SDK) is used to update raven_en.ts
.
To automatically regenerate the raven_en.ts
file, run the following commands:
cd src/
make translate
src/qt/raven_locale.qrc
takes care of generating .qm
(binary compiled) files from .ts
(source files) files. It’s mostly automated, and you shouldn’t need to worry about it.
Example Qt translation
QToolBar *toolbar = addToolBar(tr("Tabs toolbar"));
For general PRs, you shouldn’t include any updates to the translation source files. They will be updated periodically, primarily around pre-releases, allowing time for any new phrases to be translated before public releases. This is also important in avoiding translation related merge conflicts.
When an updated source file is uploaded to Transifex the new strings will show up as "Remaining" in the Transifex web interface and are ready for translators.
Visit the Transifex Signup page to create an account. Take note of your username and password, as they will be required to configure the command-line tool.
You can find the Raven translation project at https://www.transifex.com/ravencoin.
The client it used to fetch updated translations. If you are having problems, or need more details, see http://docs.transifex.com/developer/client/setup
For Linux and Mac
pip install transifex-client
Setup your transifex client config as follows. Please ignore the token field.
nano ~/.transifexrc
[https://www.transifex.com]
hostname = https://www.transifex.com
password = PASSWORD
token =
username = USERNAME
For Windows
Please see http://docs.transifex.com/developer/client/setup#windows for details on installation.
The Transifex Raven project config file is included as part of the repo. It can be found at .tx/config
, however you shouldn’t need change anything.
To assist in updating translations, we have created a script to help.
python contrib/devtools/update-translations.py
- Update
src/qt/raven_locale.qrc
manually or vials src/qt/locale/*ts|xargs -n1 basename|sed 's/\(raven_\(.*\)\).ts/<file alias="\2">locale\/\1.qm<\/file>/'
- Update
src/Makefile.qt.include
manually or vials src/qt/locale/*ts|xargs -n1 basename|sed 's/\(raven_\(.*\)\).ts/ qt\/locale\/\1.ts \\/'
git add
new translations fromsrc/qt/locale/
Do not directly download translations one by one from the Transifex website, as we do a few post-processing steps before committing the translations.
When new plurals are added to the source file, it's important to do the following steps:
- Open
raven_en.ts
in Qt Linguist (included in the Qt SDK) - Search for
%n
, which will take you to the parts in the translation that use plurals - Look for empty
English Translation (Singular)
andEnglish Translation (Plural)
fields - Add the appropriate strings for the singular and plural form of the base string
- Mark the item as done (via the green arrow symbol in the toolbar)
- Repeat from step 2, until all singular and plural forms are in the source file
- Save the source file
To create a new language template, you will need to edit the languages manifest file src/qt/raven_locale.qrc
and add a new entry. Below is an example of the English language entry.
<qresource prefix="/translations">
<file alias="en">locale/raven_en.qm</filer
...
</qresource>
Note: that the language translation file must end in .qm
(the compiled extension), and not .ts
.
This process can be automated by a script in ravencoin-maintainer-tools.
The Ravencoin translation maintainers include fdov and pocal. You can find them, and others, in #translations in Ravencoin Discord.
Announcements will be posten in Discord and on the transifex.com announcements page.