diff options
author | Riccardo Spagni <ric@spagni.net> | 2017-07-03 12:29:45 +0200 |
---|---|---|
committer | Riccardo Spagni <ric@spagni.net> | 2017-07-03 12:29:45 +0200 |
commit | cde5103b7ad088439be298130284e087abe81b57 (patch) | |
tree | ff26dbbd66287a93ade400e7e98785f7a4ac5920 | |
parent | Merge pull request #2122 (diff) | |
parent | Formatting README.i18n.md as Markdown. (diff) | |
download | monero-cde5103b7ad088439be298130284e087abe81b57.tar.xz |
Merge pull request #2123
eb71ebbe Formatting README.i18n.md as Markdown. (Jonathan Cross)
-rw-r--r-- | README.i18n.md | 43 |
1 files changed, 21 insertions, 22 deletions
diff --git a/README.i18n.md b/README.i18n.md index 755c5cf38..65f87cda2 100644 --- a/README.i18n.md +++ b/README.i18n.md @@ -1,45 +1,44 @@ +Monero daemon internationalization +================================== + 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. + +In order to use the same translation workflow as the [Monero Core GUI](https://github.com/monero-project/monero-core), 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](https://www.qt.io/download-open-source/#allDownloadsDiv-9) or a [3rd-party standalone version](https://github.com/lelegard/qtlinguist-installers/releases)), 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: - ./utils/translations/update-translations.sh + ./utils/translations/update-translations.sh To add a new language, eg Spanish (ISO code es): - cp translations/monero.ts translations/monero_es.ts + cp translations/monero.ts translations/monero_es.ts To edit translations for Spanish: - linguist translations/monero_es.ts + linguist translations/monero_es.ts To build translations after modifying them: - ./utils/translations/build-translations.sh + ./utils/translations/build-translations.sh To test a translation: - LANG=es ./build/release/bin/monero-wallet-cli + LANG=es ./build/release/bin/monero-wallet-cli -To add new translatable sources in the source: +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. +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 + Class 'cryptonote::simple_wallet' lacks Q_OBJECT macro all is fine, we don't actually need that here. |