Mirror of Monero
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
luigi1111 2c171a9b02
Merge pull request #5861
14 hours ago
.github add 'sponsor' button on GitHub 3 months ago
cmake wallet, rpc: add a release field to get_version 2 weeks ago
contrib Merge pull request #5898 14 hours ago
external Merge pull request #5857 6 days ago
include Update 2019 copyright 6 months ago
src Merge pull request #5861 14 hours ago
tests Merge pull request #5818 14 hours ago
translations Merge pull request #5788 3 weeks ago
utils wallet: fix mismatch between two concepts of "balance" 1 week ago
.gitattributes cmake: support git info in released tarballs 4 years ago
.gitignore Add nbproject directory to .gitignore 1 month ago
.gitmodules device/trezor: trezor support added 10 months ago
.travis.yml build: fix depends Travis ncurses build, don't wipe CONFIG_SHELL 3 weeks ago
ANONYMITY_NETWORKS.md Added support for "noise" over I1P/Tor to mask Tx transmission. 1 month ago
CMakeLists.txt Merge pull request #5818 14 hours ago
CMakeLists_IOS.txt Update 2019 copyright 6 months ago
CONTRIBUTING.md SHALL -> MUST 6 months ago
Dockerfile Docker updated dependencies cmake boost sodium cppzmq udev protobuf zmq 1 month ago
Doxyfile Changed URLs to HTTPS 1 year ago
LEVIN_PROTOCOL.md Added support for "noise" over I1P/Tor to mask Tx transmission. 1 month ago
LICENSE Make difficulty 128 bit instead of 64 bit 5 months ago
Makefile Merge pull request #5061 6 months ago
README.i18n.md Made code block usage consistent across all .md files 4 months ago
README.md Merge pull request #5818 14 hours ago
snap Add snap symlink 2 years ago


Monero daemon internationalization

The Monero command line tools can be translated in various languages. If you wish to contribute and need help/support, contact the Monero Localization Workgroup on Taiga or come chat on #monero-translations (Freenode/IRC, riot/matrix, MatterMost)

In order to use the same translation workflow as the Monero Core GUI, they use Qt Linguist translation files. However, to avoid the dependencies on Qt this normally implies, they use a custom loader to read those files at runtime.

Tools for translators

In order to create, update or build translations files, you need to have Qt tools installed. For translating, you need either the Qt Linguist GUI (part of Qt Creator or a 3rd-party standalone version), or another tool that supports Qt ts files, such as Transifex. The files are XML, so they can be edited in any plain text editor if needed.

Creating / modifying translations

You do not need anything from Qt in order to use the final translations.

To update ts files after changing source code:


To add a new language, eg Spanish (ISO code es):

cp translations/monero.ts translations/monero_es.ts

To edit translations for Spanish:

linguist translations/monero_es.ts

To build translations after modifying them:


To test a translation:

LANG=es ./build/release/bin/monero-wallet-cli

To add new translatable strings in the source code:

Use the tr(string) function if possible. If the code is in a class, and this class doesn’t already have a tr() static function, add one, which uses a context named after what lupdate uses for the context, usually the fully qualified class name (eg, cryptonote::simple_wallet). If you need to use tr() in code that’s not in a class, you can use the fully qualified version (eg, simple_wallet::tr) of the one matching the context you want. Use QT_TRANSLATE_NOOP(string) if you want to specify a context manually.

If you’re getting messages of the form:

Class 'cryptonote::simple_wallet' lacks Q_OBJECT macro

all is fine, we don’t actually need that here.