aboutsummaryrefslogtreecommitdiff
path: root/README.i18n.md
diff options
context:
space:
mode:
authorJonathan Cross <jcross@gmail.com>2017-06-26 00:24:37 +0200
committerJonathan Cross <jcross@gmail.com>2017-06-26 00:24:37 +0200
commiteb71ebbecd90a388087e28c7457beb14a4ce3cb7 (patch)
tree0a4fb36da40ed4bd0c288382331d6af90e500919 /README.i18n.md
parentMerge pull request #2111 (diff)
downloadmonero-eb71ebbecd90a388087e28c7457beb14a4ce3cb7.tar.xz
Formatting README.i18n.md as Markdown.
Diffstat (limited to 'README.i18n.md')
-rw-r--r--README.i18n.md43
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.