mirror of
https://github.com/monero-project/monero.git
synced 2024-12-27 16:09:24 -05:00
78b2eabc87
The system is mostly the Qt system, but we don't use Qt to avoid the dependencies. See README.i18n for details.
46 lines
1.7 KiB
Plaintext
46 lines
1.7 KiB
Plaintext
The Monero command line tools can be translated in various languages.
|
|
In order to use the same translation workflow as the future 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. In order to update, or build translations files, you
|
|
do need to have Qt tools installed, however. For translating, you need
|
|
either the Qt Linguist GUI, or another tool that supports Qt ts files,
|
|
such as Transifex. To run, you do not need anything Qt.
|
|
|
|
To update ts files after changing source code:
|
|
|
|
./utils/translations/update-translations.sh
|
|
|
|
To add a new language, eg Spanish (ISO code es):
|
|
|
|
cp transations/monero.ts transations/monero_es.ts
|
|
|
|
To edit translations for Spanish:
|
|
|
|
linguist translations/monero_es.ts
|
|
|
|
To build translations after modiying them:
|
|
|
|
./utils/translations/build-translations.sh
|
|
|
|
To test a translation:
|
|
|
|
LANG=es ./build/release/bin/simplewallet
|
|
|
|
To add new translatable sources in the source:
|
|
|
|
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.
|