Translatable strings for simplewallet

The system is mostly the Qt system, but we don't use Qt to avoid
the dependencies.

See README.i18n for details.
This commit is contained in:
moneromooo-monero 2015-07-14 20:28:25 +01:00
parent 9dc25497a2
commit 78b2eabc87
9 changed files with 1385 additions and 249 deletions

45
README.i18n Normal file
View file

@ -0,0 +1,45 @@
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.

View file

@ -167,3 +167,8 @@ Dependencies: Doxygen 1.8.0 or later, Graphviz 2.28 or later (optional).
* To build, change to the root of the source code directory, and run `doxygen Doxyfile`
* If you have installed Graphviz, you can also generate in-doc diagrams by instead running `HAVE_DOT=YES doxygen Doxyfile`
* The output will be built in doc/html/
## Internationalization
See README.i18n

View file

@ -30,7 +30,8 @@ set(common_sources
base58.cpp
command_line.cpp
dns_utils.cpp
util.cpp)
util.cpp
i18n.cpp)
set(common_headers)
@ -46,7 +47,8 @@ set(common_private_headers
scoped_message_writer.h
unordered_containers_boost_serialization.h
util.h
varint.h)
varint.h
i18n.h)
bitmonero_private_headers(common
${common_private_headers})

36
src/common/i18n.h Normal file
View file

@ -0,0 +1,36 @@
// Copyright (c) 2014-2015, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#pragma once
#define QT_TRANSLATE_NOOP(context,str) i18n_translate(str,context)
int i18n_set_language(const char *directory, const char *base);
const char *i18n_translate(const char *str, const std::string &context);
static inline std::string get_default_i18n_context() { return std::string(); }
static inline const char *tr(const char *str) { return i18n_translate(str,get_default_i18n_context()); }

File diff suppressed because it is too large Load diff

View file

@ -57,6 +57,9 @@ namespace cryptonote
*/
class simple_wallet : public tools::i_wallet2_callback
{
public:
static const char *tr(const char *str) { return i18n_translate(str, "cryptonote::simple_wallet"); }
public:
typedef std::vector<std::string> command_type;
@ -165,7 +168,7 @@ namespace cryptonote
if (std::chrono::milliseconds(1) < current_time - m_print_time || force)
{
std::cout << "Height " << height << " of " << m_blockchain_height << '\r';
std::cout << QT_TRANSLATE_NOOP("Height ", "cryptonote::simple_wallet") << height << " / " << m_blockchain_height << '\r';
m_print_time = current_time;
}
}

996
translations/monero.ts Normal file
View file

@ -0,0 +1,996 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0">
<context>
<name>cryptonote::simple_wallet</name>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="202"/>
<source>Commands: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="233"/>
<source>This wallet is watch-only and cannot have a seed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="253"/>
<source>The wallet is non-deterministic. Cannot display seed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="263"/>
<source>This wallet is watch-only and doesn&apos;t have a seed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="268"/>
<source>This wallet is non-deterministic and doesn&apos;t have a seed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="275"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="495"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="857"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="864"/>
<source>failed to read wallet password</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="283"/>
<source>invalid password</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="303"/>
<source>start_mining [&lt;number_of_threads&gt;] - Start mining in daemon</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="304"/>
<source>Stop mining in daemon</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="305"/>
<source>Save current blockchain data</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="306"/>
<source>Resynchronize transactions and balance</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="307"/>
<source>Show current wallet balance</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="308"/>
<source>incoming_transfers [available|unavailable] - Show incoming transfers - all of them or filter them by availability</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="309"/>
<source>payments &lt;payment_id_1&gt; [&lt;payment_id_2&gt; ... &lt;payment_id_N&gt;] - Show payments &lt;payment_id_1&gt;, ... &lt;payment_id_N&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="310"/>
<source>Show blockchain height</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="311"/>
<source>transfer [&lt;mixin_count&gt;] &lt;addr_1&gt; &lt;amount_1&gt; [&lt;addr_2&gt; &lt;amount_2&gt; ... &lt;addr_N&gt; &lt;amount_N&gt;] [payment_id] - Transfer &lt;amount_1&gt;,... &lt;amount_N&gt; to &lt;address_1&gt;,... &lt;address_N&gt;, respectively. &lt;mixin_count&gt; is the number of transactions yours is indistinguishable from (from 0 to maximum available)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="312"/>
<source>Send all dust outputs to the same address with mixin 0</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="313"/>
<source>set_log &lt;level&gt; - Change current log detalization level, &lt;level&gt; is a number 0-4</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="314"/>
<source>Show current wallet public address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="315"/>
<source>Convert a payment ID to an integrated address for the current wallet public address (no arguments use a random payment ID), or display standard addres and payment ID corresponding to an integrated addres</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="316"/>
<source>Save wallet synchronized data</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="317"/>
<source>Save watch only keys file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="318"/>
<source>Get viewkey</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="319"/>
<source>Get spendkey</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="320"/>
<source>Get deterministic seed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="321"/>
<source>available options: seed language - Set wallet seed langage</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="322"/>
<source>Show this help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="329"/>
<source>set: needs an argument. available options: seed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="338"/>
<source>set seed: needs an argument. available options: language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="350"/>
<source>set: unrecognized argument(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="358"/>
<source>use: set_log &lt;log_level_number_0-4&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="364"/>
<source>wrong number format, use: set_log &lt;log_level_number_0-4&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="369"/>
<source>wrong number range, use: set_log &lt;log_level_number_0-4&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="384"/>
<source>Specify wallet file name (e.g., wallet.bin). If the wallet doesn&apos;t exist, it will be created.
Wallet file name: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="390"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="756"/>
<source>wallet file path not valid: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="409"/>
<source>Attempting to generate or restore wallet, but specified file(s) exist. Exiting to not risk overwriting.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="423"/>
<source>The wallet doesn&apos;t exist, generating new one</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="428"/>
<source>Keys file wasn&apos;t found: failed to open wallet: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="442"/>
<source>PLEASE NOTE: the following 25 words can be used to recover access to your wallet. Please write them down and store them somewhere safe and secure. Please do not store them in your email or on file storage services outside of your immediate control.
</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="458"/>
<source>you can&apos;t specify daemon host or port several times</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="464"/>
<source>Specifying more than one of --generate-new-wallet=&quot;wallet_name&quot;, --wallet-file=&quot;wallet_name&quot; and --generate-from-keys doesn&apos;t make sense!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="510"/>
<source>Cannot specify both --restore-deterministic-wallet and --non-deterministic</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="519"/>
<source>specify a recovery parameter with the --electrum-seed=&quot;words list here&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="526"/>
<source>electrum-style word list failed verification</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="537"/>
<source>--generate-from-view-key needs a address:viewkey:filename triple</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="547"/>
<source>Failed to parse address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="555"/>
<source>Failed to parse view key secret key</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="609"/>
<source>wallet failed to connect to daemon: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="610"/>
<source>Daemon either is not started or passed wrong port. Please, make sure that daemon is running or restart the wallet with correct daemon address.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="630"/>
<source>List of available languages for your wallet&apos;s seed:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="639"/>
<source>Enter the number corresponding to the language of your choice: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="646"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="651"/>
<source>Invalid language choice passed. Please try again.
</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="674"/>
<source>You had been using a deprecated version of the wallet. Please use the new seed that we provide.
</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="690"/>
<source>Generated new wallet: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="692"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="739"/>
<source>view key: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="696"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="743"/>
<source>failed to generate new wallet: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="709"/>
<source>Your wallet has been generated.
To start synchronizing with the daemon use &quot;refresh&quot; command.
Use &quot;help&quot; command to see the list of available commands.
Always use &quot;exit&quot; command when closing simplewallet to save
current session&apos;s state. Otherwise, you will possibly need to synchronize
your wallet again. Your wallet key is NOT under risk anyway.
</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="737"/>
<source>Generated new watch-only wallet: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="768"/>
<source>Opened watch-only wallet</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="768"/>
<source>Opened wallet</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="777"/>
<source>You had been using a deprecated version of the wallet. Please proceed to upgrade your wallet.
</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="790"/>
<source>You had been using a deprecated version of the wallet. Your wallet file format is being upgraded now.
</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="798"/>
<source>failed to load wallet: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="807"/>
<source>Use &quot;help&quot; command to see the list of available commands.
</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="817"/>
<source>failed to deinit wallet</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="839"/>
<source>Wallet data saved</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="854"/>
<source>Password for the new watch-only wallet</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="861"/>
<source>Enter new password again</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="869"/>
<source>passwords do not match</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="906"/>
<source>invalid arguments. Please use start_mining [&lt;number_of_threads&gt;], &lt;number_of_threads&gt; should be from 1 to </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="915"/>
<source>Mining started in daemon</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="917"/>
<source>mining has NOT been started: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="931"/>
<source>Mining stopped in daemon</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="933"/>
<source>mining has NOT been stopped: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="947"/>
<source>Blockchain saved</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="949"/>
<source>Blockchain can&apos;t be saved: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="961"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="970"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="979"/>
<source>Height </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="962"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="971"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="980"/>
<source>transaction </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="963"/>
<source>received </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="972"/>
<source>spent </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="981"/>
<source>unsupported transaction format</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="990"/>
<source>Starting refresh...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1013"/>
<source>Refresh done, blocks received: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1018"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1386"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1523"/>
<source>daemon is busy. Please try later</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1022"/>
<source>no connection to daemon. Please, make sure daemon is running</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1027"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1395"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1532"/>
<source>RPC error: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1032"/>
<source>Error refreshing: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1037"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1446"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1583"/>
<source>internal error: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1042"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1451"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1588"/>
<source>unexpected error: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1047"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1456"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1593"/>
<source>unknown error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1052"/>
<source>refresh failed: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1052"/>
<source>Blocks received: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1060"/>
<source>balance: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1061"/>
<source>unlocked balance: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1062"/>
<source>including unlocked dust: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1094"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1134"/>
<source>amount</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1094"/>
<source>spent</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1094"/>
<source>global index</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1094"/>
<source>tx id</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1110"/>
<source>No incoming transfers</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1114"/>
<source>No incoming available transfers</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1118"/>
<source>No incoming unavailable transfers</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1129"/>
<source>expected at least one payment_id</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1134"/>
<source>payment</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1134"/>
<source>transaction</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1134"/>
<source>height</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1134"/>
<source>unlock time</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1146"/>
<source>No payments with id </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1167"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1247"/>
<source>payment id has invalid format, expected 64-character string: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1193"/>
<source>failed to get blockchain height: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1219"/>
<source>wrong number of arguments</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1225"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1470"/>
<source>This is a watch only wallet</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1280"/>
<source>DNSSEC validation passed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1284"/>
<source>WARNING: DNSSEC validation was unsuccessful, this address may not be correct!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1287"/>
<source>For URL: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1289"/>
<source> Monero Address = </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1291"/>
<source>Is this OK? (Y/n) </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1297"/>
<source>yes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1297"/>
<source>no</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1299"/>
<source>You have cancelled the transfer request</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1305"/>
<source>Failed to get a Monero address from: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1311"/>
<source>Not yet supported: Multiple Monero addresses found for given URL: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1315"/>
<source>Wrong address: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1322"/>
<source>A single transaction cannot use more than one payment id: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1333"/>
<source>Failed to set up payment id, though it was decoded correctly</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1343"/>
<source>amount is wrong: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1344"/>
<source>expected number from 0 to </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1359"/>
<source>Your transaction needs to be split into %zu transactions. This will result in a transaction fee being applied to each transaction. Is this okay? (Y/Yes/N/No)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1365"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1503"/>
<source>Transaction cancelled.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1378"/>
<source>Money successfully sent, transaction </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1390"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1527"/>
<source>no connection to daemon. Please, make sure daemon is running.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1399"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1536"/>
<source>failed to get random outputs to mix</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1403"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1540"/>
<source>not enough money to transfer, available only %s, transaction amount %s = %s + %s (fee)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1412"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1549"/>
<source>not enough outputs for specified mixin_count</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1415"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1552"/>
<source>output amount</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1415"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1552"/>
<source>found outputs to mix</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1420"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1557"/>
<source>transaction was not constructed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1424"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1561"/>
<source>transaction %s was rejected by daemon with status: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1432"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1569"/>
<source>one of destinations is zero</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1436"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1573"/>
<source>Failed to find a suitable way to split transactions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1441"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1578"/>
<source>unknown transfer error: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1488"/>
<source>Sweeping </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1490"/>
<source>Sweeping %s in %zu transactions for a total fee of %s. Is this okay? (Y/Yes/N/No)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1496"/>
<source>Sweeping %s for a total fee of %s. Is this okay? (Y/Yes/N/No)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1515"/>
<source>Money successfully sent, transaction: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1602"/>
<source>wallet</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1622"/>
<source>integrated_address only takes one or zero arguments</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1628"/>
<source>Random payment ID: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1629"/>
<source>Matching integrated address: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1645"/>
<source>Integrated address: account %s, payment id %s</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1650"/>
<source>Standard address: account: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1655"/>
<source>Failed to parse payment id or address</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>sw</name>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="80"/>
<source>Use wallet &lt;arg&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="81"/>
<source>Generate new wallet and save it to &lt;arg&gt; or &lt;address&gt;.wallet by default</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="82"/>
<source>Generate wallet from (address:viewkey:filename) and save it to &lt;filename&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="83"/>
<source>Use daemon instance at &lt;host&gt;:&lt;port&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="84"/>
<source>Use daemon instance at host &lt;arg&gt; instead of localhost</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="85"/>
<source>Wallet password</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="86"/>
<source>Specify electrum seed for wallet recovery/creation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="87"/>
<source>Recover wallet using electrum-style mnemonic</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="88"/>
<source>creates non-deterministic view and spend keys</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="89"/>
<source>Use daemon instance at port &lt;arg&gt; instead of 8081</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="91"/>
<source>Specify log file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="92"/>
<source>Used to deploy test nets. The daemon must be launched with --testnet flag</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="93"/>
<source>Restricts RPC to view only commands</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="104"/>
<source>daemon is busy. Please try later</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="113"/>
<source>possible lost connection to daemon</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="194"/>
<source>Error: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1674"/>
<source>General options</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1678"/>
<source>Wallet options</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1691"/>
<source>default_log: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1716"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1723"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1754"/>
<source>wallet</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1717"/>
<source>Usage:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1759"/>
<source>Logging at log level %d to %s</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1769"/>
<source>Wallet file not set.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1774"/>
<source>Daemon address not set.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1779"/>
<source>Wallet password not set.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1800"/>
<source>Loading wallet...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1804"/>
<source>Loaded ok</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1808"/>
<source>Wallet initialization failed: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1813"/>
<source>Failed to initialize wallet rpc server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1819"/>
<source>Starting wallet rpc server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1821"/>
<source>Stopped wallet rpc server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1824"/>
<source>Storing wallet...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1826"/>
<source>Stored ok</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1830"/>
<source>Failed to store wallet: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1837"/>
<source>Failed to initialize wallet</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View file

@ -0,0 +1,16 @@
#!/bin/sh
lrelease=`which lrelease 2> /dev/null`
if test -z "$lrelease"
then
lrelease=`which lrelease-qt4 2> /dev/null`
fi
if test -z "$lrelease"
then
echo "lrelease not found"
exit 1
fi
echo "using $lrelease"
"$lrelease" translations/*.ts

View file

@ -0,0 +1,16 @@
#!/bin/sh
lupdate=`which lupdate 2> /dev/null`
if test -z "$lupdate"
then
lupdate=`which lupdate-qt4 2> /dev/null`
fi
if test -z "$lupdate"
then
echo "lupdate not found"
exit 1
fi
echo "using $lupdate"
"$lupdate" `find src -name \*.cpp` -ts translations/*.ts