merge from develop
3
.gitmodules
vendored
|
|
@ -4,3 +4,6 @@
|
|||
[submodule "contrib/db/libmdbx"]
|
||||
path = contrib/db/libmdbx
|
||||
url = https://github.com/leo-yuriev/libmdbx.git
|
||||
[submodule "src/gui/qt-daemon/layout"]
|
||||
path = src/gui/qt-daemon/layout
|
||||
url = https://github.com/hyle-team/zano_ui.git
|
||||
|
|
|
|||
|
|
@ -109,6 +109,20 @@ public: \
|
|||
|
||||
|
||||
|
||||
template<typename t_uint>
|
||||
struct uint_mask_selector
|
||||
{
|
||||
template<t_uint mask>
|
||||
inline static bool get_value_of_flag_by_mask(const t_uint& given_flags)
|
||||
{
|
||||
return given_flags&mask == 0 ? false : true;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
#define KV_SERIALIZE_EPHEMERAL_BOOL_FROM_FLAG_N(var, mask, val_name) \
|
||||
KV_SERIALIZE_EPHEMERAL_N(bool, uint_mask_selector<decltype(var)>::get_value_of_flag_by_mask<mask>, val_name)
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ ENDMACRO(ENABLE_SHARED_PCH_EXECUTABLE)
|
|||
|
||||
file(GLOB_RECURSE PCH pch/*)
|
||||
file(GLOB_RECURSE COMMON common/*)
|
||||
file(GLOB CRYPTO crypto/*.*)
|
||||
file(GLOB_RECURSE CRYPTO crypto/*)
|
||||
file(GLOB_RECURSE CURRENCY_CORE currency_core/*)
|
||||
file(GLOB_RECURSE CURRENCY_PROTOCOL currency_protocol/*)
|
||||
file(GLOB_RECURSE DAEMON daemon/*)
|
||||
|
|
@ -108,6 +108,13 @@ if(NOT MSVC AND NOT APPLE AND NOT CLANG) # TODO(unassigned): do we really need
|
|||
target_compile_options(common PRIVATE -fno-var-tracking-assignments)
|
||||
endif()
|
||||
|
||||
# disable specific warning in order not to touch original code by D. J. Bernstein
|
||||
if(MSVC)
|
||||
set_source_files_properties("crypto/chacha8_stream.c" PROPERTIES COMPILE_FLAGS "/wd4018")
|
||||
else()
|
||||
set_source_files_properties("crypto/chacha8_stream.c" PROPERTIES COMPILE_FLAGS "-Wno-sign-compare -Wno-strict-prototypes")
|
||||
endif()
|
||||
|
||||
add_library(crypto ${CRYPTO})
|
||||
|
||||
add_library(currency_core ${CURRENCY_CORE})
|
||||
|
|
@ -200,7 +207,7 @@ if(BUILD_GUI)
|
|||
set_property(TARGET Zano PROPERTY FOLDER "prog")
|
||||
set_target_properties(Zano PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/gui/qt-daemon/Info.plist.in)
|
||||
|
||||
set(HTML_DIR ${CMAKE_CURRENT_SOURCE_DIR}/gui/qt-daemon/html)
|
||||
set(HTML_DIR ${CMAKE_CURRENT_SOURCE_DIR}/gui/qt-daemon/layout/html)
|
||||
set_target_properties(Zano PROPERTIES VS_DEBUGGER_COMMAND_ARGUMENTS "--html-path=${HTML_DIR}")
|
||||
|
||||
set(CMAKE_AUTOMOC OFF)
|
||||
|
|
|
|||
|
|
@ -8,15 +8,17 @@
|
|||
#include "include_base_utils.h"
|
||||
#include "crypto/crypto.h"
|
||||
#include "crypto/hash.h"
|
||||
#include "crypto/RIPEMD160_helper.h"
|
||||
|
||||
bool parse_hash256(const std::string str_hash, crypto::hash& hash);
|
||||
|
||||
template <class T>
|
||||
std::ostream &print256(std::ostream &o, const T &v)
|
||||
std::ostream &print_t(std::ostream &o, const T &v)
|
||||
{
|
||||
return o << "<" << epee::string_tools::pod_to_hex(v) << ">";
|
||||
}
|
||||
|
||||
|
||||
template <class T>
|
||||
std::ostream &print16(std::ostream &o, const T &v)
|
||||
{
|
||||
|
|
@ -32,10 +34,11 @@ std::string print16(const T &v)
|
|||
|
||||
namespace crypto
|
||||
{
|
||||
inline std::ostream &operator <<(std::ostream &o, const crypto::public_key &v) { return print256(o, v); }
|
||||
inline std::ostream &operator <<(std::ostream &o, const crypto::secret_key &v) { return print256(o, v); }
|
||||
inline std::ostream &operator <<(std::ostream &o, const crypto::key_derivation &v) { return print256(o, v); }
|
||||
inline std::ostream &operator <<(std::ostream &o, const crypto::key_image &v) { return print256(o, v); }
|
||||
inline std::ostream &operator <<(std::ostream &o, const crypto::signature &v) { return print256(o, v); }
|
||||
inline std::ostream &operator <<(std::ostream &o, const crypto::hash &v) { return print256(o, v); }
|
||||
inline std::ostream &operator <<(std::ostream &o, const crypto::public_key &v) { return print_t(o, v); }
|
||||
inline std::ostream &operator <<(std::ostream &o, const crypto::secret_key &v) { return print_t(o, v); }
|
||||
inline std::ostream &operator <<(std::ostream &o, const crypto::key_derivation &v) { return print_t(o, v); }
|
||||
inline std::ostream &operator <<(std::ostream &o, const crypto::key_image &v) { return print_t(o, v); }
|
||||
inline std::ostream &operator <<(std::ostream &o, const crypto::signature &v) { return print_t(o, v); }
|
||||
inline std::ostream &operator <<(std::ostream &o, const crypto::hash &v) { return print_t(o, v); }
|
||||
inline std::ostream &operator <<(std::ostream &o, const crypto::hash160 &v) { return print_t(o, v); }
|
||||
} // namespace crypto
|
||||
|
|
|
|||
|
|
@ -39,3 +39,4 @@
|
|||
#define API_RETURN_CODE_UNINITIALIZED "UNINITIALIZED"
|
||||
#define API_RETURN_CODE_TX_IS_TOO_BIG "TX_IS_TOO_BIG"
|
||||
#define API_RETURN_CODE_TX_REJECTED "TX_REJECTED"
|
||||
#define API_RETURN_CODE_HTLC_ORIGIN_HASH_MISSMATCHED "HTLC_ORIGIN_HASH_MISSMATCHED"
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@
|
|||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <sys/param.h>
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
#include <intrin.h>
|
||||
|
|
|
|||
|
|
@ -21,11 +21,11 @@ namespace tools
|
|||
};
|
||||
|
||||
#ifndef TESTNET
|
||||
static constexpr pre_download_entry c_pre_download_lmdb = { "http://95.217.43.225/pre-download/zano_lmdb_94_599999.pak", "6ab4f17cb9252f5cb576e8b212b5b95ad4b3e801a9612de574d7d01204777830", 1023060357, 1491427328 };
|
||||
static constexpr pre_download_entry c_pre_download_mdbx = { "http://95.217.43.225/pre-download/zano_mdbx_94_599999.pak", "7cf41d2881fa4002a159974d988a0c605ccb801888b18f0352c9a94586c9f935", 795428926, 1610588160 };
|
||||
static constexpr pre_download_entry c_pre_download_mdbx = { "http://95.217.43.225/pre-download/zano_mdbx_95_1000000.pak", "6b0bbba85bc420eaae5ec68373e528f70bffaa17fb111c796e951d06ad71e4fe", 1104150892, 2147450880 };
|
||||
static constexpr pre_download_entry c_pre_download_lmdb = { "http://95.217.43.225/pre-download/zano_lmdb_95_1000000.pak", "b4d45c727dbf1b92671f9fd1a9624e79019e890bd3d33cb71e011ab4bcb0d21e", 1450748151, 2114449408 };
|
||||
#else
|
||||
static constexpr pre_download_entry c_pre_download_lmdb = { "http://95.217.43.225/pre-download/zano_testnet_lmdb_97_449999.pak", "923b5c59359807b7e375e34cdf9327216c34ab71550669f9535a552c441b285a", 427062309, 641089536 };
|
||||
static constexpr pre_download_entry c_pre_download_mdbx = { "http://95.217.43.225/pre-download/zano_testnet_mdbx_97_449999.pak", "ab8b9e9fdedbf47dcbc01c7816191951f3b154b1eb7e5dd0da3df0872e0cd80a", 308152196, 805294080 };
|
||||
static constexpr pre_download_entry c_pre_download_mdbx = { "", "", 0, 0 };
|
||||
static constexpr pre_download_entry c_pre_download_lmdb = { "", "", 0, 0 };
|
||||
#endif
|
||||
|
||||
static constexpr uint64_t pre_download_min_size_difference = 512 * 1024 * 1024; // minimum difference in size between local DB and the downloadable one to start downloading
|
||||
|
|
@ -50,7 +50,7 @@ namespace tools
|
|||
|
||||
boost::system::error_code ec;
|
||||
uint64_t sz = boost::filesystem::file_size(db_main_file_path, ec);
|
||||
if (!(ec || (pre_download.unpacked_size > sz && pre_download.unpacked_size - sz > pre_download_min_size_difference) || command_line::has_arg(vm, command_line::arg_force_predownload)) )
|
||||
if (pre_download.unpacked_size == 0 || !(ec || (pre_download.unpacked_size > sz && pre_download.unpacked_size - sz > pre_download_min_size_difference) || command_line::has_arg(vm, command_line::arg_force_predownload)) )
|
||||
{
|
||||
LOG_PRINT_MAGENTA("Pre-downloading not needed (db file size = " << sz << ")", LOG_LEVEL_0);
|
||||
return true;
|
||||
|
|
@ -58,6 +58,7 @@ namespace tools
|
|||
|
||||
// okay, let's download
|
||||
|
||||
|
||||
std::string downloading_file_path = db_main_file_path + ".download";
|
||||
|
||||
LOG_PRINT_MAGENTA("Trying to download blockchain database from " << url << " ...", LOG_LEVEL_0);
|
||||
|
|
|
|||
287
src/crypto/RIPEMD160.c
Normal file
|
|
@ -0,0 +1,287 @@
|
|||
/********************************************************************\
|
||||
*
|
||||
* FILE: rmd160.c
|
||||
*
|
||||
* CONTENTS: A sample C-implementation of the RIPEMD-160
|
||||
* hash-function.
|
||||
* TARGET: any computer with an ANSI C compiler
|
||||
*
|
||||
* AUTHOR: Antoon Bosselaers, ESAT-COSIC
|
||||
* DATE: 1 March 1996
|
||||
* VERSION: 1.0
|
||||
*
|
||||
* Copyright (c) 1996 Katholieke Universiteit Leuven
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without restriction,
|
||||
* including without limitation the rights to use, copy, modify, merge,
|
||||
* publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
* and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
\********************************************************************/
|
||||
|
||||
/* header files */
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "RIPEMD160.h"
|
||||
|
||||
/********************************************************************/
|
||||
|
||||
void MDinit(dword *MDbuf)
|
||||
{
|
||||
MDbuf[0] = 0x67452301UL;
|
||||
MDbuf[1] = 0xefcdab89UL;
|
||||
MDbuf[2] = 0x98badcfeUL;
|
||||
MDbuf[3] = 0x10325476UL;
|
||||
MDbuf[4] = 0xc3d2e1f0UL;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/********************************************************************/
|
||||
|
||||
void compress(dword *MDbuf, dword *X)
|
||||
{
|
||||
dword aa = MDbuf[0], bb = MDbuf[1], cc = MDbuf[2],
|
||||
dd = MDbuf[3], ee = MDbuf[4];
|
||||
dword aaa = MDbuf[0], bbb = MDbuf[1], ccc = MDbuf[2],
|
||||
ddd = MDbuf[3], eee = MDbuf[4];
|
||||
|
||||
/* round 1 */
|
||||
FF(aa, bb, cc, dd, ee, X[0], 11);
|
||||
FF(ee, aa, bb, cc, dd, X[1], 14);
|
||||
FF(dd, ee, aa, bb, cc, X[2], 15);
|
||||
FF(cc, dd, ee, aa, bb, X[3], 12);
|
||||
FF(bb, cc, dd, ee, aa, X[4], 5);
|
||||
FF(aa, bb, cc, dd, ee, X[5], 8);
|
||||
FF(ee, aa, bb, cc, dd, X[6], 7);
|
||||
FF(dd, ee, aa, bb, cc, X[7], 9);
|
||||
FF(cc, dd, ee, aa, bb, X[8], 11);
|
||||
FF(bb, cc, dd, ee, aa, X[9], 13);
|
||||
FF(aa, bb, cc, dd, ee, X[10], 14);
|
||||
FF(ee, aa, bb, cc, dd, X[11], 15);
|
||||
FF(dd, ee, aa, bb, cc, X[12], 6);
|
||||
FF(cc, dd, ee, aa, bb, X[13], 7);
|
||||
FF(bb, cc, dd, ee, aa, X[14], 9);
|
||||
FF(aa, bb, cc, dd, ee, X[15], 8);
|
||||
|
||||
/* round 2 */
|
||||
GG(ee, aa, bb, cc, dd, X[7], 7);
|
||||
GG(dd, ee, aa, bb, cc, X[4], 6);
|
||||
GG(cc, dd, ee, aa, bb, X[13], 8);
|
||||
GG(bb, cc, dd, ee, aa, X[1], 13);
|
||||
GG(aa, bb, cc, dd, ee, X[10], 11);
|
||||
GG(ee, aa, bb, cc, dd, X[6], 9);
|
||||
GG(dd, ee, aa, bb, cc, X[15], 7);
|
||||
GG(cc, dd, ee, aa, bb, X[3], 15);
|
||||
GG(bb, cc, dd, ee, aa, X[12], 7);
|
||||
GG(aa, bb, cc, dd, ee, X[0], 12);
|
||||
GG(ee, aa, bb, cc, dd, X[9], 15);
|
||||
GG(dd, ee, aa, bb, cc, X[5], 9);
|
||||
GG(cc, dd, ee, aa, bb, X[2], 11);
|
||||
GG(bb, cc, dd, ee, aa, X[14], 7);
|
||||
GG(aa, bb, cc, dd, ee, X[11], 13);
|
||||
GG(ee, aa, bb, cc, dd, X[8], 12);
|
||||
|
||||
/* round 3 */
|
||||
HH(dd, ee, aa, bb, cc, X[3], 11);
|
||||
HH(cc, dd, ee, aa, bb, X[10], 13);
|
||||
HH(bb, cc, dd, ee, aa, X[14], 6);
|
||||
HH(aa, bb, cc, dd, ee, X[4], 7);
|
||||
HH(ee, aa, bb, cc, dd, X[9], 14);
|
||||
HH(dd, ee, aa, bb, cc, X[15], 9);
|
||||
HH(cc, dd, ee, aa, bb, X[8], 13);
|
||||
HH(bb, cc, dd, ee, aa, X[1], 15);
|
||||
HH(aa, bb, cc, dd, ee, X[2], 14);
|
||||
HH(ee, aa, bb, cc, dd, X[7], 8);
|
||||
HH(dd, ee, aa, bb, cc, X[0], 13);
|
||||
HH(cc, dd, ee, aa, bb, X[6], 6);
|
||||
HH(bb, cc, dd, ee, aa, X[13], 5);
|
||||
HH(aa, bb, cc, dd, ee, X[11], 12);
|
||||
HH(ee, aa, bb, cc, dd, X[5], 7);
|
||||
HH(dd, ee, aa, bb, cc, X[12], 5);
|
||||
|
||||
/* round 4 */
|
||||
II(cc, dd, ee, aa, bb, X[1], 11);
|
||||
II(bb, cc, dd, ee, aa, X[9], 12);
|
||||
II(aa, bb, cc, dd, ee, X[11], 14);
|
||||
II(ee, aa, bb, cc, dd, X[10], 15);
|
||||
II(dd, ee, aa, bb, cc, X[0], 14);
|
||||
II(cc, dd, ee, aa, bb, X[8], 15);
|
||||
II(bb, cc, dd, ee, aa, X[12], 9);
|
||||
II(aa, bb, cc, dd, ee, X[4], 8);
|
||||
II(ee, aa, bb, cc, dd, X[13], 9);
|
||||
II(dd, ee, aa, bb, cc, X[3], 14);
|
||||
II(cc, dd, ee, aa, bb, X[7], 5);
|
||||
II(bb, cc, dd, ee, aa, X[15], 6);
|
||||
II(aa, bb, cc, dd, ee, X[14], 8);
|
||||
II(ee, aa, bb, cc, dd, X[5], 6);
|
||||
II(dd, ee, aa, bb, cc, X[6], 5);
|
||||
II(cc, dd, ee, aa, bb, X[2], 12);
|
||||
|
||||
/* round 5 */
|
||||
JJ(bb, cc, dd, ee, aa, X[4], 9);
|
||||
JJ(aa, bb, cc, dd, ee, X[0], 15);
|
||||
JJ(ee, aa, bb, cc, dd, X[5], 5);
|
||||
JJ(dd, ee, aa, bb, cc, X[9], 11);
|
||||
JJ(cc, dd, ee, aa, bb, X[7], 6);
|
||||
JJ(bb, cc, dd, ee, aa, X[12], 8);
|
||||
JJ(aa, bb, cc, dd, ee, X[2], 13);
|
||||
JJ(ee, aa, bb, cc, dd, X[10], 12);
|
||||
JJ(dd, ee, aa, bb, cc, X[14], 5);
|
||||
JJ(cc, dd, ee, aa, bb, X[1], 12);
|
||||
JJ(bb, cc, dd, ee, aa, X[3], 13);
|
||||
JJ(aa, bb, cc, dd, ee, X[8], 14);
|
||||
JJ(ee, aa, bb, cc, dd, X[11], 11);
|
||||
JJ(dd, ee, aa, bb, cc, X[6], 8);
|
||||
JJ(cc, dd, ee, aa, bb, X[15], 5);
|
||||
JJ(bb, cc, dd, ee, aa, X[13], 6);
|
||||
|
||||
/* parallel round 1 */
|
||||
JJJ(aaa, bbb, ccc, ddd, eee, X[5], 8);
|
||||
JJJ(eee, aaa, bbb, ccc, ddd, X[14], 9);
|
||||
JJJ(ddd, eee, aaa, bbb, ccc, X[7], 9);
|
||||
JJJ(ccc, ddd, eee, aaa, bbb, X[0], 11);
|
||||
JJJ(bbb, ccc, ddd, eee, aaa, X[9], 13);
|
||||
JJJ(aaa, bbb, ccc, ddd, eee, X[2], 15);
|
||||
JJJ(eee, aaa, bbb, ccc, ddd, X[11], 15);
|
||||
JJJ(ddd, eee, aaa, bbb, ccc, X[4], 5);
|
||||
JJJ(ccc, ddd, eee, aaa, bbb, X[13], 7);
|
||||
JJJ(bbb, ccc, ddd, eee, aaa, X[6], 7);
|
||||
JJJ(aaa, bbb, ccc, ddd, eee, X[15], 8);
|
||||
JJJ(eee, aaa, bbb, ccc, ddd, X[8], 11);
|
||||
JJJ(ddd, eee, aaa, bbb, ccc, X[1], 14);
|
||||
JJJ(ccc, ddd, eee, aaa, bbb, X[10], 14);
|
||||
JJJ(bbb, ccc, ddd, eee, aaa, X[3], 12);
|
||||
JJJ(aaa, bbb, ccc, ddd, eee, X[12], 6);
|
||||
|
||||
/* parallel round 2 */
|
||||
III(eee, aaa, bbb, ccc, ddd, X[6], 9);
|
||||
III(ddd, eee, aaa, bbb, ccc, X[11], 13);
|
||||
III(ccc, ddd, eee, aaa, bbb, X[3], 15);
|
||||
III(bbb, ccc, ddd, eee, aaa, X[7], 7);
|
||||
III(aaa, bbb, ccc, ddd, eee, X[0], 12);
|
||||
III(eee, aaa, bbb, ccc, ddd, X[13], 8);
|
||||
III(ddd, eee, aaa, bbb, ccc, X[5], 9);
|
||||
III(ccc, ddd, eee, aaa, bbb, X[10], 11);
|
||||
III(bbb, ccc, ddd, eee, aaa, X[14], 7);
|
||||
III(aaa, bbb, ccc, ddd, eee, X[15], 7);
|
||||
III(eee, aaa, bbb, ccc, ddd, X[8], 12);
|
||||
III(ddd, eee, aaa, bbb, ccc, X[12], 7);
|
||||
III(ccc, ddd, eee, aaa, bbb, X[4], 6);
|
||||
III(bbb, ccc, ddd, eee, aaa, X[9], 15);
|
||||
III(aaa, bbb, ccc, ddd, eee, X[1], 13);
|
||||
III(eee, aaa, bbb, ccc, ddd, X[2], 11);
|
||||
|
||||
/* parallel round 3 */
|
||||
HHH(ddd, eee, aaa, bbb, ccc, X[15], 9);
|
||||
HHH(ccc, ddd, eee, aaa, bbb, X[5], 7);
|
||||
HHH(bbb, ccc, ddd, eee, aaa, X[1], 15);
|
||||
HHH(aaa, bbb, ccc, ddd, eee, X[3], 11);
|
||||
HHH(eee, aaa, bbb, ccc, ddd, X[7], 8);
|
||||
HHH(ddd, eee, aaa, bbb, ccc, X[14], 6);
|
||||
HHH(ccc, ddd, eee, aaa, bbb, X[6], 6);
|
||||
HHH(bbb, ccc, ddd, eee, aaa, X[9], 14);
|
||||
HHH(aaa, bbb, ccc, ddd, eee, X[11], 12);
|
||||
HHH(eee, aaa, bbb, ccc, ddd, X[8], 13);
|
||||
HHH(ddd, eee, aaa, bbb, ccc, X[12], 5);
|
||||
HHH(ccc, ddd, eee, aaa, bbb, X[2], 14);
|
||||
HHH(bbb, ccc, ddd, eee, aaa, X[10], 13);
|
||||
HHH(aaa, bbb, ccc, ddd, eee, X[0], 13);
|
||||
HHH(eee, aaa, bbb, ccc, ddd, X[4], 7);
|
||||
HHH(ddd, eee, aaa, bbb, ccc, X[13], 5);
|
||||
|
||||
/* parallel round 4 */
|
||||
GGG(ccc, ddd, eee, aaa, bbb, X[8], 15);
|
||||
GGG(bbb, ccc, ddd, eee, aaa, X[6], 5);
|
||||
GGG(aaa, bbb, ccc, ddd, eee, X[4], 8);
|
||||
GGG(eee, aaa, bbb, ccc, ddd, X[1], 11);
|
||||
GGG(ddd, eee, aaa, bbb, ccc, X[3], 14);
|
||||
GGG(ccc, ddd, eee, aaa, bbb, X[11], 14);
|
||||
GGG(bbb, ccc, ddd, eee, aaa, X[15], 6);
|
||||
GGG(aaa, bbb, ccc, ddd, eee, X[0], 14);
|
||||
GGG(eee, aaa, bbb, ccc, ddd, X[5], 6);
|
||||
GGG(ddd, eee, aaa, bbb, ccc, X[12], 9);
|
||||
GGG(ccc, ddd, eee, aaa, bbb, X[2], 12);
|
||||
GGG(bbb, ccc, ddd, eee, aaa, X[13], 9);
|
||||
GGG(aaa, bbb, ccc, ddd, eee, X[9], 12);
|
||||
GGG(eee, aaa, bbb, ccc, ddd, X[7], 5);
|
||||
GGG(ddd, eee, aaa, bbb, ccc, X[10], 15);
|
||||
GGG(ccc, ddd, eee, aaa, bbb, X[14], 8);
|
||||
|
||||
/* parallel round 5 */
|
||||
FFF(bbb, ccc, ddd, eee, aaa, X[12], 8);
|
||||
FFF(aaa, bbb, ccc, ddd, eee, X[15], 5);
|
||||
FFF(eee, aaa, bbb, ccc, ddd, X[10], 12);
|
||||
FFF(ddd, eee, aaa, bbb, ccc, X[4], 9);
|
||||
FFF(ccc, ddd, eee, aaa, bbb, X[1], 12);
|
||||
FFF(bbb, ccc, ddd, eee, aaa, X[5], 5);
|
||||
FFF(aaa, bbb, ccc, ddd, eee, X[8], 14);
|
||||
FFF(eee, aaa, bbb, ccc, ddd, X[7], 6);
|
||||
FFF(ddd, eee, aaa, bbb, ccc, X[6], 8);
|
||||
FFF(ccc, ddd, eee, aaa, bbb, X[2], 13);
|
||||
FFF(bbb, ccc, ddd, eee, aaa, X[13], 6);
|
||||
FFF(aaa, bbb, ccc, ddd, eee, X[14], 5);
|
||||
FFF(eee, aaa, bbb, ccc, ddd, X[0], 15);
|
||||
FFF(ddd, eee, aaa, bbb, ccc, X[3], 13);
|
||||
FFF(ccc, ddd, eee, aaa, bbb, X[9], 11);
|
||||
FFF(bbb, ccc, ddd, eee, aaa, X[11], 11);
|
||||
|
||||
/* combine results */
|
||||
ddd += cc + MDbuf[1]; /* final result for MDbuf[0] */
|
||||
MDbuf[1] = MDbuf[2] + dd + eee;
|
||||
MDbuf[2] = MDbuf[3] + ee + aaa;
|
||||
MDbuf[3] = MDbuf[4] + aa + bbb;
|
||||
MDbuf[4] = MDbuf[0] + bb + ccc;
|
||||
MDbuf[0] = ddd;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/********************************************************************/
|
||||
|
||||
void MDfinish(dword *MDbuf, byte *strptr, dword lswlen, dword mswlen)
|
||||
{
|
||||
unsigned int i; /* counter */
|
||||
dword X[16]; /* message words */
|
||||
|
||||
memset(X, 0, 16 * sizeof(dword));
|
||||
|
||||
/* put bytes from strptr into X */
|
||||
for (i = 0; i<(lswlen & 63); i++) {
|
||||
/* byte i goes into word X[i div 4] at pos. 8*(i mod 4) */
|
||||
X[i >> 2] ^= (dword)*strptr++ << (8 * (i & 3));
|
||||
}
|
||||
|
||||
/* append the bit m_n == 1 */
|
||||
X[(lswlen >> 2) & 15] ^= (dword)1 << (8 * (lswlen & 3) + 7);
|
||||
|
||||
if ((lswlen & 63) > 55) {
|
||||
/* length goes to next block */
|
||||
compress(MDbuf, X);
|
||||
memset(X, 0, 16 * sizeof(dword));
|
||||
}
|
||||
|
||||
/* append length in bits*/
|
||||
X[14] = lswlen << 3;
|
||||
X[15] = (lswlen >> 29) | (mswlen << 3);
|
||||
compress(MDbuf, X);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/************************ end of file rmd160.c **********************/
|
||||
150
src/crypto/RIPEMD160.h
Normal file
|
|
@ -0,0 +1,150 @@
|
|||
/********************************************************************\
|
||||
*
|
||||
* FILE: rmd160.h
|
||||
*
|
||||
* CONTENTS: Header file for a sample C-implementation of the
|
||||
* RIPEMD-160 hash-function.
|
||||
* TARGET: any computer with an ANSI C compiler
|
||||
*
|
||||
* AUTHOR: Antoon Bosselaers, ESAT-COSIC
|
||||
* DATE: 1 March 1996
|
||||
* VERSION: 1.0
|
||||
*
|
||||
* Copyright (c) 1996 Katholieke Universiteit Leuven
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without restriction,
|
||||
* including without limitation the rights to use, copy, modify, merge,
|
||||
* publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
* and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
\********************************************************************/
|
||||
|
||||
#ifndef RMD160H /* make sure this file is read only once */
|
||||
#define RMD160H
|
||||
|
||||
/********************************************************************/
|
||||
#include <stdint.h>
|
||||
/* typedef 8 and 32 bit types, resp. */
|
||||
/* adapt these, if necessary,
|
||||
for your operating system and compiler */
|
||||
typedef unsigned char byte;
|
||||
typedef uint32_t dword;
|
||||
|
||||
/* if this line causes a compiler error,
|
||||
adapt the defintion of dword above */
|
||||
typedef int the_correct_size_was_chosen[sizeof(dword) == 4 ? 1 : -1];
|
||||
|
||||
/********************************************************************/
|
||||
|
||||
/* macro definitions */
|
||||
|
||||
/* collect four bytes into one word: */
|
||||
#define BYTES_TO_DWORD(strptr) \
|
||||
(((dword) *((strptr)+3) << 24) | \
|
||||
((dword) *((strptr)+2) << 16) | \
|
||||
((dword) *((strptr)+1) << 8) | \
|
||||
((dword) *(strptr)))
|
||||
|
||||
/* ROL(x, n) cyclically rotates x over n bits to the left */
|
||||
/* x must be of an unsigned 32 bits type and 0 <= n < 32. */
|
||||
#define ROL(x, n) (((x) << (n)) | ((x) >> (32-(n))))
|
||||
|
||||
/* the five basic functions F(), G() and H() */
|
||||
#define F(x, y, z) ((x) ^ (y) ^ (z))
|
||||
#define G(x, y, z) (((x) & (y)) | (~(x) & (z)))
|
||||
#define H(x, y, z) (((x) | ~(y)) ^ (z))
|
||||
#define I(x, y, z) (((x) & (z)) | ((y) & ~(z)))
|
||||
#define J(x, y, z) ((x) ^ ((y) | ~(z)))
|
||||
|
||||
/* the ten basic operations FF() through III() */
|
||||
#define FF(a, b, c, d, e, x, s) {\
|
||||
(a) += F((b), (c), (d)) + (x);\
|
||||
(a) = ROL((a), (s)) + (e);\
|
||||
(c) = ROL((c), 10);\
|
||||
}
|
||||
#define GG(a, b, c, d, e, x, s) {\
|
||||
(a) += G((b), (c), (d)) + (x) + 0x5a827999UL;\
|
||||
(a) = ROL((a), (s)) + (e);\
|
||||
(c) = ROL((c), 10);\
|
||||
}
|
||||
#define HH(a, b, c, d, e, x, s) {\
|
||||
(a) += H((b), (c), (d)) + (x) + 0x6ed9eba1UL;\
|
||||
(a) = ROL((a), (s)) + (e);\
|
||||
(c) = ROL((c), 10);\
|
||||
}
|
||||
#define II(a, b, c, d, e, x, s) {\
|
||||
(a) += I((b), (c), (d)) + (x) + 0x8f1bbcdcUL;\
|
||||
(a) = ROL((a), (s)) + (e);\
|
||||
(c) = ROL((c), 10);\
|
||||
}
|
||||
#define JJ(a, b, c, d, e, x, s) {\
|
||||
(a) += J((b), (c), (d)) + (x) + 0xa953fd4eUL;\
|
||||
(a) = ROL((a), (s)) + (e);\
|
||||
(c) = ROL((c), 10);\
|
||||
}
|
||||
#define FFF(a, b, c, d, e, x, s) {\
|
||||
(a) += F((b), (c), (d)) + (x);\
|
||||
(a) = ROL((a), (s)) + (e);\
|
||||
(c) = ROL((c), 10);\
|
||||
}
|
||||
#define GGG(a, b, c, d, e, x, s) {\
|
||||
(a) += G((b), (c), (d)) + (x) + 0x7a6d76e9UL;\
|
||||
(a) = ROL((a), (s)) + (e);\
|
||||
(c) = ROL((c), 10);\
|
||||
}
|
||||
#define HHH(a, b, c, d, e, x, s) {\
|
||||
(a) += H((b), (c), (d)) + (x) + 0x6d703ef3UL;\
|
||||
(a) = ROL((a), (s)) + (e);\
|
||||
(c) = ROL((c), 10);\
|
||||
}
|
||||
#define III(a, b, c, d, e, x, s) {\
|
||||
(a) += I((b), (c), (d)) + (x) + 0x5c4dd124UL;\
|
||||
(a) = ROL((a), (s)) + (e);\
|
||||
(c) = ROL((c), 10);\
|
||||
}
|
||||
#define JJJ(a, b, c, d, e, x, s) {\
|
||||
(a) += J((b), (c), (d)) + (x) + 0x50a28be6UL;\
|
||||
(a) = ROL((a), (s)) + (e);\
|
||||
(c) = ROL((c), 10);\
|
||||
}
|
||||
|
||||
/********************************************************************/
|
||||
|
||||
/* function prototypes */
|
||||
|
||||
void MDinit(dword *MDbuf);
|
||||
/*
|
||||
* initializes MDbuffer to "magic constants"
|
||||
*/
|
||||
|
||||
void compress(dword *MDbuf, dword *X);
|
||||
/*
|
||||
* the compression function.
|
||||
* transforms MDbuf using message bytes X[0] through X[15]
|
||||
*/
|
||||
|
||||
void MDfinish(dword *MDbuf, byte *strptr, dword lswlen, dword mswlen);
|
||||
/*
|
||||
* puts bytes from strptr into X and pad out; appends length
|
||||
* and finally, compresses the last block(s)
|
||||
* note: length in bits == 8 * (lswlen + 2^32 mswlen).
|
||||
* note: there are (lswlen mod 64) bytes left in strptr.
|
||||
*/
|
||||
|
||||
#endif /* RMD160H */
|
||||
|
||||
/*********************** end of file rmd160.h ***********************/
|
||||
67
src/crypto/RIPEMD160_helper.cpp
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
// Copyright (c) 2020 The Zano developers
|
||||
// Distributed under the MIT/X11 software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "RIPEMD160_helper.h"
|
||||
#include "auto_val_init.h"
|
||||
extern "C" {
|
||||
#include "RIPEMD160.h"
|
||||
}
|
||||
|
||||
#define RMDsize 160
|
||||
|
||||
namespace crypto {
|
||||
|
||||
void RIPEMD160_hash(const void *data, size_t length_size_t, hash160 &h)
|
||||
{
|
||||
|
||||
dword MDbuf[RMDsize / 32] = {0}; /* contains (A, B, C, D(, E)) */
|
||||
byte* hashcode = (byte*)&h; /* hashcode[RMDsize / 8]; /* for final hash-value */
|
||||
dword X[16] = {0}; /* current 16-word chunk */
|
||||
unsigned int i = 0; /* counter */
|
||||
dword length = static_cast<dword>(length_size_t); /* length in bytes of message */
|
||||
dword nbytes = 0; /* # of bytes not yet processed */
|
||||
byte* message = (byte*)data;
|
||||
|
||||
/* initialize */
|
||||
MDinit(MDbuf);
|
||||
//length = (dword)strlen((char *)message);
|
||||
|
||||
/* process message in 16-word chunks */
|
||||
for (nbytes = length; nbytes > 63; nbytes -= 64) {
|
||||
for (i = 0; i < 16; i++) {
|
||||
X[i] = BYTES_TO_DWORD(message);
|
||||
message += 4;
|
||||
}
|
||||
compress(MDbuf, X);
|
||||
}/* length mod 64 bytes left */
|
||||
|
||||
/* finish: */
|
||||
MDfinish(MDbuf, message, length, 0);
|
||||
|
||||
for (i = 0; i < RMDsize / 8; i += 4) {
|
||||
hashcode[i] = (byte)MDbuf[i >> 2]; /* implicit cast to byte */
|
||||
hashcode[i + 1] = (byte)(MDbuf[i >> 2] >> 8); /* extracts the 8 least */
|
||||
hashcode[i + 2] = (byte)(MDbuf[i >> 2] >> 16); /* significant bits. */
|
||||
hashcode[i + 3] = (byte)(MDbuf[i >> 2] >> 24);
|
||||
}
|
||||
}
|
||||
|
||||
hash160 RIPEMD160_hash(const void *data, size_t length)
|
||||
{
|
||||
hash160 h = AUTO_VAL_INIT(h);
|
||||
RIPEMD160_hash(data, length, h);
|
||||
return h;
|
||||
}
|
||||
|
||||
hash RIPEMD160_hash_256(const void *data, size_t length)
|
||||
{
|
||||
hash160 h = RIPEMD160_hash(data, length);
|
||||
hash h256 = AUTO_VAL_INIT(h256);
|
||||
memcpy(&h256, &h, sizeof(h));
|
||||
return h256;
|
||||
}
|
||||
|
||||
}
|
||||
27
src/crypto/RIPEMD160_helper.h
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
// Copyright (c) 2020 The Zano developers
|
||||
// Distributed under the MIT/X11 software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "hash.h"
|
||||
|
||||
|
||||
namespace crypto {
|
||||
|
||||
#pragma pack(push, 1)
|
||||
POD_CLASS hash160{
|
||||
char data[20];
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
void RIPEMD160_hash(const void *data, size_t length, hash160 &h);
|
||||
hash160 RIPEMD160_hash(const void *data, size_t length);
|
||||
hash RIPEMD160_hash_256(const void *data, size_t length);
|
||||
|
||||
}
|
||||
|
||||
POD_MAKE_HASHABLE(crypto, hash160)
|
||||
|
||||
|
||||
|
||||
59
src/crypto/bitcoin/byteswap.h
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
// Copyright (c) 2014-2019 The Bitcoin Core developers
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#ifndef BITCOIN_COMPAT_BYTESWAP_H
|
||||
#define BITCOIN_COMPAT_BYTESWAP_H
|
||||
|
||||
#if defined(HAVE_CONFIG_H)
|
||||
#include <config/bitcoin-config.h>
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#if defined(HAVE_BYTESWAP_H)
|
||||
#include <byteswap.h>
|
||||
#endif
|
||||
|
||||
#if defined(MAC_OSX)
|
||||
|
||||
#include <libkern/OSByteOrder.h>
|
||||
#define bswap_16(x) OSSwapInt16(x)
|
||||
#define bswap_32(x) OSSwapInt32(x)
|
||||
#define bswap_64(x) OSSwapInt64(x)
|
||||
|
||||
#else
|
||||
// Non-MacOS / non-Darwin
|
||||
|
||||
#if HAVE_DECL_BSWAP_16 == 0
|
||||
inline uint16_t bswap_16(uint16_t x)
|
||||
{
|
||||
return (x >> 8) | (x << 8);
|
||||
}
|
||||
#endif // HAVE_DECL_BSWAP16 == 0
|
||||
|
||||
#if HAVE_DECL_BSWAP_32 == 0
|
||||
inline uint32_t bswap_32(uint32_t x)
|
||||
{
|
||||
return (((x & 0xff000000U) >> 24) | ((x & 0x00ff0000U) >> 8) |
|
||||
((x & 0x0000ff00U) << 8) | ((x & 0x000000ffU) << 24));
|
||||
}
|
||||
#endif // HAVE_DECL_BSWAP32 == 0
|
||||
|
||||
#if HAVE_DECL_BSWAP_64 == 0
|
||||
inline uint64_t bswap_64(uint64_t x)
|
||||
{
|
||||
return (((x & 0xff00000000000000ull) >> 56)
|
||||
| ((x & 0x00ff000000000000ull) >> 40)
|
||||
| ((x & 0x0000ff0000000000ull) >> 24)
|
||||
| ((x & 0x000000ff00000000ull) >> 8)
|
||||
| ((x & 0x00000000ff000000ull) << 8)
|
||||
| ((x & 0x0000000000ff0000ull) << 24)
|
||||
| ((x & 0x000000000000ff00ull) << 40)
|
||||
| ((x & 0x00000000000000ffull) << 56));
|
||||
}
|
||||
#endif // HAVE_DECL_BSWAP64 == 0
|
||||
|
||||
#endif // defined(MAC_OSX)
|
||||
|
||||
#endif // BITCOIN_COMPAT_BYTESWAP_H
|
||||
110
src/crypto/bitcoin/common.h
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
// Copyright (c) 2014-2018 The Bitcoin Core developers
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#ifndef BITCOIN_CRYPTO_COMMON_H
|
||||
#define BITCOIN_CRYPTO_COMMON_H
|
||||
|
||||
#if defined(HAVE_CONFIG_H)
|
||||
#include <config/bitcoin-config.h>
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "endian.h"
|
||||
|
||||
uint16_t static inline ReadLE16(const unsigned char* ptr)
|
||||
{
|
||||
uint16_t x;
|
||||
memcpy((char*)&x, ptr, 2);
|
||||
return le16toh(x);
|
||||
}
|
||||
|
||||
uint32_t static inline ReadLE32(const unsigned char* ptr)
|
||||
{
|
||||
uint32_t x;
|
||||
memcpy((char*)&x, ptr, 4);
|
||||
return le32toh(x);
|
||||
}
|
||||
|
||||
uint64_t static inline ReadLE64(const unsigned char* ptr)
|
||||
{
|
||||
uint64_t x;
|
||||
memcpy((char*)&x, ptr, 8);
|
||||
return le64toh(x);
|
||||
}
|
||||
|
||||
void static inline WriteLE16(unsigned char* ptr, uint16_t x)
|
||||
{
|
||||
uint16_t v = htole16(x);
|
||||
memcpy(ptr, (char*)&v, 2);
|
||||
}
|
||||
|
||||
void static inline WriteLE32(unsigned char* ptr, uint32_t x)
|
||||
{
|
||||
uint32_t v = htole32(x);
|
||||
memcpy(ptr, (char*)&v, 4);
|
||||
}
|
||||
|
||||
void static inline WriteLE64(unsigned char* ptr, uint64_t x)
|
||||
{
|
||||
uint64_t v = htole64(x);
|
||||
memcpy(ptr, (char*)&v, 8);
|
||||
}
|
||||
|
||||
uint16_t static inline ReadBE16(const unsigned char* ptr)
|
||||
{
|
||||
uint16_t x;
|
||||
memcpy((char*)&x, ptr, 2);
|
||||
return be16toh(x);
|
||||
}
|
||||
|
||||
uint32_t static inline ReadBE32(const unsigned char* ptr)
|
||||
{
|
||||
uint32_t x;
|
||||
memcpy((char*)&x, ptr, 4);
|
||||
return be32toh(x);
|
||||
}
|
||||
|
||||
uint64_t static inline ReadBE64(const unsigned char* ptr)
|
||||
{
|
||||
uint64_t x;
|
||||
memcpy((char*)&x, ptr, 8);
|
||||
return be64toh(x);
|
||||
}
|
||||
|
||||
void static inline WriteBE32(unsigned char* ptr, uint32_t x)
|
||||
{
|
||||
uint32_t v = htobe32(x);
|
||||
memcpy(ptr, (char*)&v, 4);
|
||||
}
|
||||
|
||||
void static inline WriteBE64(unsigned char* ptr, uint64_t x)
|
||||
{
|
||||
uint64_t v = htobe64(x);
|
||||
memcpy(ptr, (char*)&v, 8);
|
||||
}
|
||||
|
||||
/** Return the smallest number n such that (x >> n) == 0 (or 64 if the highest bit in x is set. */
|
||||
uint64_t static inline CountBits(uint64_t x)
|
||||
{
|
||||
#if HAVE_BUILTIN_CLZL
|
||||
if (sizeof(unsigned long) >= sizeof(uint64_t)) {
|
||||
return x ? 8 * sizeof(unsigned long) - __builtin_clzl(x) : 0;
|
||||
}
|
||||
#endif
|
||||
#if HAVE_BUILTIN_CLZLL
|
||||
if (sizeof(unsigned long long) >= sizeof(uint64_t)) {
|
||||
return x ? 8 * sizeof(unsigned long long) - __builtin_clzll(x) : 0;
|
||||
}
|
||||
#endif
|
||||
int ret = 0;
|
||||
while (x) {
|
||||
x >>= 1;
|
||||
++ret;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif // BITCOIN_CRYPTO_COMMON_H
|
||||
24
src/crypto/bitcoin/cpuid.h
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
// Copyright (c) 2017-2019 The Bitcoin Core developers
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#ifndef BITCOIN_COMPAT_CPUID_H
|
||||
#define BITCOIN_COMPAT_CPUID_H
|
||||
|
||||
#if defined(__x86_64__) || defined(__amd64__) || defined(__i386__)
|
||||
#define HAVE_GETCPUID
|
||||
|
||||
#include <cpuid.h>
|
||||
|
||||
// We can't use cpuid.h's __get_cpuid as it does not support subleafs.
|
||||
void static inline GetCPUID(uint32_t leaf, uint32_t subleaf, uint32_t& a, uint32_t& b, uint32_t& c, uint32_t& d)
|
||||
{
|
||||
#ifdef __GNUC__
|
||||
__cpuid_count(leaf, subleaf, a, b, c, d);
|
||||
#else
|
||||
__asm__ ("cpuid" : "=a"(a), "=b"(b), "=c"(c), "=d"(d) : "0"(leaf), "2"(subleaf));
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif // defined(__x86_64__) || defined(__amd64__) || defined(__i386__)
|
||||
#endif // BITCOIN_COMPAT_CPUID_H
|
||||
241
src/crypto/bitcoin/endian.h
Normal file
|
|
@ -0,0 +1,241 @@
|
|||
// Copyright (c) 2014-2018 The Bitcoin Core developers
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#ifndef BITCOIN_COMPAT_ENDIAN_H
|
||||
#define BITCOIN_COMPAT_ENDIAN_H
|
||||
|
||||
#if defined(HAVE_CONFIG_H)
|
||||
#include <config/bitcoin-config.h>
|
||||
#endif
|
||||
|
||||
#include "byteswap.h"
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#if defined(HAVE_ENDIAN_H)
|
||||
#include <endian.h>
|
||||
#elif defined(HAVE_SYS_ENDIAN_H)
|
||||
#include <sys/endian.h>
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_CONFIG_H
|
||||
// While not technically a supported configuration, defaulting to defining these
|
||||
// DECLs when we were compiled without autotools makes it easier for other build
|
||||
// systems to build things like libbitcoinconsensus for strange targets.
|
||||
#ifdef htobe16
|
||||
#define HAVE_DECL_HTOBE16 1
|
||||
#endif
|
||||
#ifdef htole16
|
||||
#define HAVE_DECL_HTOLE16 1
|
||||
#endif
|
||||
#ifdef be16toh
|
||||
#define HAVE_DECL_BE16TOH 1
|
||||
#endif
|
||||
#ifdef le16toh
|
||||
#define HAVE_DECL_LE16TOH 1
|
||||
#endif
|
||||
|
||||
#ifdef htobe32
|
||||
#define HAVE_DECL_HTOBE32 1
|
||||
#endif
|
||||
#ifdef htole32
|
||||
#define HAVE_DECL_HTOLE32 1
|
||||
#endif
|
||||
#ifdef be32toh
|
||||
#define HAVE_DECL_BE32TOH 1
|
||||
#endif
|
||||
#ifdef le32toh
|
||||
#define HAVE_DECL_LE32TOH 1
|
||||
#endif
|
||||
|
||||
#ifdef htobe64
|
||||
#define HAVE_DECL_HTOBE64 1
|
||||
#endif
|
||||
#ifdef htole64
|
||||
#define HAVE_DECL_HTOLE64 1
|
||||
#endif
|
||||
#ifdef be64toh
|
||||
#define HAVE_DECL_BE64TOH 1
|
||||
#endif
|
||||
#ifdef le64toh
|
||||
#define HAVE_DECL_LE64TOH 1
|
||||
#endif
|
||||
|
||||
#endif // HAVE_CONFIG_H
|
||||
|
||||
#if defined(WORDS_BIGENDIAN)
|
||||
|
||||
#if HAVE_DECL_HTOBE16 == 0
|
||||
inline uint16_t htobe16(uint16_t host_16bits)
|
||||
{
|
||||
return host_16bits;
|
||||
}
|
||||
#endif // HAVE_DECL_HTOBE16
|
||||
|
||||
#if HAVE_DECL_HTOLE16 == 0
|
||||
inline uint16_t htole16(uint16_t host_16bits)
|
||||
{
|
||||
return bswap_16(host_16bits);
|
||||
}
|
||||
#endif // HAVE_DECL_HTOLE16
|
||||
|
||||
#if HAVE_DECL_BE16TOH == 0
|
||||
inline uint16_t be16toh(uint16_t big_endian_16bits)
|
||||
{
|
||||
return big_endian_16bits;
|
||||
}
|
||||
#endif // HAVE_DECL_BE16TOH
|
||||
|
||||
#if HAVE_DECL_LE16TOH == 0
|
||||
inline uint16_t le16toh(uint16_t little_endian_16bits)
|
||||
{
|
||||
return bswap_16(little_endian_16bits);
|
||||
}
|
||||
#endif // HAVE_DECL_LE16TOH
|
||||
|
||||
#if HAVE_DECL_HTOBE32 == 0
|
||||
inline uint32_t htobe32(uint32_t host_32bits)
|
||||
{
|
||||
return host_32bits;
|
||||
}
|
||||
#endif // HAVE_DECL_HTOBE32
|
||||
|
||||
#if HAVE_DECL_HTOLE32 == 0
|
||||
inline uint32_t htole32(uint32_t host_32bits)
|
||||
{
|
||||
return bswap_32(host_32bits);
|
||||
}
|
||||
#endif // HAVE_DECL_HTOLE32
|
||||
|
||||
#if HAVE_DECL_BE32TOH == 0
|
||||
inline uint32_t be32toh(uint32_t big_endian_32bits)
|
||||
{
|
||||
return big_endian_32bits;
|
||||
}
|
||||
#endif // HAVE_DECL_BE32TOH
|
||||
|
||||
#if HAVE_DECL_LE32TOH == 0
|
||||
inline uint32_t le32toh(uint32_t little_endian_32bits)
|
||||
{
|
||||
return bswap_32(little_endian_32bits);
|
||||
}
|
||||
#endif // HAVE_DECL_LE32TOH
|
||||
|
||||
#if HAVE_DECL_HTOBE64 == 0
|
||||
inline uint64_t htobe64(uint64_t host_64bits)
|
||||
{
|
||||
return host_64bits;
|
||||
}
|
||||
#endif // HAVE_DECL_HTOBE64
|
||||
|
||||
#if HAVE_DECL_HTOLE64 == 0
|
||||
inline uint64_t htole64(uint64_t host_64bits)
|
||||
{
|
||||
return bswap_64(host_64bits);
|
||||
}
|
||||
#endif // HAVE_DECL_HTOLE64
|
||||
|
||||
#if HAVE_DECL_BE64TOH == 0
|
||||
inline uint64_t be64toh(uint64_t big_endian_64bits)
|
||||
{
|
||||
return big_endian_64bits;
|
||||
}
|
||||
#endif // HAVE_DECL_BE64TOH
|
||||
|
||||
#if HAVE_DECL_LE64TOH == 0
|
||||
inline uint64_t le64toh(uint64_t little_endian_64bits)
|
||||
{
|
||||
return bswap_64(little_endian_64bits);
|
||||
}
|
||||
#endif // HAVE_DECL_LE64TOH
|
||||
|
||||
#else // WORDS_BIGENDIAN
|
||||
|
||||
#if HAVE_DECL_HTOBE16 == 0
|
||||
inline uint16_t htobe16(uint16_t host_16bits)
|
||||
{
|
||||
return bswap_16(host_16bits);
|
||||
}
|
||||
#endif // HAVE_DECL_HTOBE16
|
||||
|
||||
#if HAVE_DECL_HTOLE16 == 0
|
||||
inline uint16_t htole16(uint16_t host_16bits)
|
||||
{
|
||||
return host_16bits;
|
||||
}
|
||||
#endif // HAVE_DECL_HTOLE16
|
||||
|
||||
#if HAVE_DECL_BE16TOH == 0
|
||||
inline uint16_t be16toh(uint16_t big_endian_16bits)
|
||||
{
|
||||
return bswap_16(big_endian_16bits);
|
||||
}
|
||||
#endif // HAVE_DECL_BE16TOH
|
||||
|
||||
#if HAVE_DECL_LE16TOH == 0
|
||||
inline uint16_t le16toh(uint16_t little_endian_16bits)
|
||||
{
|
||||
return little_endian_16bits;
|
||||
}
|
||||
#endif // HAVE_DECL_LE16TOH
|
||||
|
||||
#if HAVE_DECL_HTOBE32 == 0
|
||||
inline uint32_t htobe32(uint32_t host_32bits)
|
||||
{
|
||||
return bswap_32(host_32bits);
|
||||
}
|
||||
#endif // HAVE_DECL_HTOBE32
|
||||
|
||||
#if HAVE_DECL_HTOLE32 == 0
|
||||
inline uint32_t htole32(uint32_t host_32bits)
|
||||
{
|
||||
return host_32bits;
|
||||
}
|
||||
#endif // HAVE_DECL_HTOLE32
|
||||
|
||||
#if HAVE_DECL_BE32TOH == 0
|
||||
inline uint32_t be32toh(uint32_t big_endian_32bits)
|
||||
{
|
||||
return bswap_32(big_endian_32bits);
|
||||
}
|
||||
#endif // HAVE_DECL_BE32TOH
|
||||
|
||||
#if HAVE_DECL_LE32TOH == 0
|
||||
inline uint32_t le32toh(uint32_t little_endian_32bits)
|
||||
{
|
||||
return little_endian_32bits;
|
||||
}
|
||||
#endif // HAVE_DECL_LE32TOH
|
||||
|
||||
#if HAVE_DECL_HTOBE64 == 0
|
||||
inline uint64_t htobe64(uint64_t host_64bits)
|
||||
{
|
||||
return bswap_64(host_64bits);
|
||||
}
|
||||
#endif // HAVE_DECL_HTOBE64
|
||||
|
||||
#if HAVE_DECL_HTOLE64 == 0
|
||||
inline uint64_t htole64(uint64_t host_64bits)
|
||||
{
|
||||
return host_64bits;
|
||||
}
|
||||
#endif // HAVE_DECL_HTOLE64
|
||||
|
||||
#if HAVE_DECL_BE64TOH == 0
|
||||
inline uint64_t be64toh(uint64_t big_endian_64bits)
|
||||
{
|
||||
return bswap_64(big_endian_64bits);
|
||||
}
|
||||
#endif // HAVE_DECL_BE64TOH
|
||||
|
||||
#if HAVE_DECL_LE64TOH == 0
|
||||
inline uint64_t le64toh(uint64_t little_endian_64bits)
|
||||
{
|
||||
return little_endian_64bits;
|
||||
}
|
||||
#endif // HAVE_DECL_LE64TOH
|
||||
|
||||
#endif // WORDS_BIGENDIAN
|
||||
|
||||
#endif // BITCOIN_COMPAT_ENDIAN_H
|
||||
719
src/crypto/bitcoin/sha256.cpp
Normal file
|
|
@ -0,0 +1,719 @@
|
|||
// Copyright (c) 2014-2019 The Bitcoin Core developers
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#include "sha256.h"
|
||||
#include "common.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
|
||||
//#include <compat/cpuid.h>
|
||||
|
||||
#if defined(__x86_64__) || defined(__amd64__) || defined(__i386__)
|
||||
#if defined(USE_ASM)
|
||||
namespace sha256_sse4
|
||||
{
|
||||
void Transform(uint32_t* s, const unsigned char* chunk, size_t blocks);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
namespace sha256d64_sse41
|
||||
{
|
||||
void Transform_4way(unsigned char* out, const unsigned char* in);
|
||||
}
|
||||
|
||||
namespace sha256d64_avx2
|
||||
{
|
||||
void Transform_8way(unsigned char* out, const unsigned char* in);
|
||||
}
|
||||
|
||||
namespace sha256d64_shani
|
||||
{
|
||||
void Transform_2way(unsigned char* out, const unsigned char* in);
|
||||
}
|
||||
|
||||
namespace sha256_shani
|
||||
{
|
||||
void Transform(uint32_t* s, const unsigned char* chunk, size_t blocks);
|
||||
}
|
||||
|
||||
// Internal implementation code.
|
||||
namespace
|
||||
{
|
||||
/// Internal SHA-256 implementation.
|
||||
namespace sha256
|
||||
{
|
||||
uint32_t inline Ch(uint32_t x, uint32_t y, uint32_t z) { return z ^ (x & (y ^ z)); }
|
||||
uint32_t inline Maj(uint32_t x, uint32_t y, uint32_t z) { return (x & y) | (z & (x | y)); }
|
||||
uint32_t inline Sigma0(uint32_t x) { return (x >> 2 | x << 30) ^ (x >> 13 | x << 19) ^ (x >> 22 | x << 10); }
|
||||
uint32_t inline Sigma1(uint32_t x) { return (x >> 6 | x << 26) ^ (x >> 11 | x << 21) ^ (x >> 25 | x << 7); }
|
||||
uint32_t inline sigma0(uint32_t x) { return (x >> 7 | x << 25) ^ (x >> 18 | x << 14) ^ (x >> 3); }
|
||||
uint32_t inline sigma1(uint32_t x) { return (x >> 17 | x << 15) ^ (x >> 19 | x << 13) ^ (x >> 10); }
|
||||
|
||||
/** One round of SHA-256. */
|
||||
void inline Round(uint32_t a, uint32_t b, uint32_t c, uint32_t& d, uint32_t e, uint32_t f, uint32_t g, uint32_t& h, uint32_t k)
|
||||
{
|
||||
uint32_t t1 = h + Sigma1(e) + Ch(e, f, g) + k;
|
||||
uint32_t t2 = Sigma0(a) + Maj(a, b, c);
|
||||
d += t1;
|
||||
h = t1 + t2;
|
||||
}
|
||||
|
||||
/** Initialize SHA-256 state. */
|
||||
void inline Initialize(uint32_t* s)
|
||||
{
|
||||
s[0] = 0x6a09e667ul;
|
||||
s[1] = 0xbb67ae85ul;
|
||||
s[2] = 0x3c6ef372ul;
|
||||
s[3] = 0xa54ff53aul;
|
||||
s[4] = 0x510e527ful;
|
||||
s[5] = 0x9b05688cul;
|
||||
s[6] = 0x1f83d9abul;
|
||||
s[7] = 0x5be0cd19ul;
|
||||
}
|
||||
|
||||
/** Perform a number of SHA-256 transformations, processing 64-byte chunks. */
|
||||
void Transform(uint32_t* s, const unsigned char* chunk, size_t blocks)
|
||||
{
|
||||
while (blocks--) {
|
||||
uint32_t a = s[0], b = s[1], c = s[2], d = s[3], e = s[4], f = s[5], g = s[6], h = s[7];
|
||||
uint32_t w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15;
|
||||
|
||||
Round(a, b, c, d, e, f, g, h, 0x428a2f98 + (w0 = ReadBE32(chunk + 0)));
|
||||
Round(h, a, b, c, d, e, f, g, 0x71374491 + (w1 = ReadBE32(chunk + 4)));
|
||||
Round(g, h, a, b, c, d, e, f, 0xb5c0fbcf + (w2 = ReadBE32(chunk + 8)));
|
||||
Round(f, g, h, a, b, c, d, e, 0xe9b5dba5 + (w3 = ReadBE32(chunk + 12)));
|
||||
Round(e, f, g, h, a, b, c, d, 0x3956c25b + (w4 = ReadBE32(chunk + 16)));
|
||||
Round(d, e, f, g, h, a, b, c, 0x59f111f1 + (w5 = ReadBE32(chunk + 20)));
|
||||
Round(c, d, e, f, g, h, a, b, 0x923f82a4 + (w6 = ReadBE32(chunk + 24)));
|
||||
Round(b, c, d, e, f, g, h, a, 0xab1c5ed5 + (w7 = ReadBE32(chunk + 28)));
|
||||
Round(a, b, c, d, e, f, g, h, 0xd807aa98 + (w8 = ReadBE32(chunk + 32)));
|
||||
Round(h, a, b, c, d, e, f, g, 0x12835b01 + (w9 = ReadBE32(chunk + 36)));
|
||||
Round(g, h, a, b, c, d, e, f, 0x243185be + (w10 = ReadBE32(chunk + 40)));
|
||||
Round(f, g, h, a, b, c, d, e, 0x550c7dc3 + (w11 = ReadBE32(chunk + 44)));
|
||||
Round(e, f, g, h, a, b, c, d, 0x72be5d74 + (w12 = ReadBE32(chunk + 48)));
|
||||
Round(d, e, f, g, h, a, b, c, 0x80deb1fe + (w13 = ReadBE32(chunk + 52)));
|
||||
Round(c, d, e, f, g, h, a, b, 0x9bdc06a7 + (w14 = ReadBE32(chunk + 56)));
|
||||
Round(b, c, d, e, f, g, h, a, 0xc19bf174 + (w15 = ReadBE32(chunk + 60)));
|
||||
|
||||
Round(a, b, c, d, e, f, g, h, 0xe49b69c1 + (w0 += sigma1(w14) + w9 + sigma0(w1)));
|
||||
Round(h, a, b, c, d, e, f, g, 0xefbe4786 + (w1 += sigma1(w15) + w10 + sigma0(w2)));
|
||||
Round(g, h, a, b, c, d, e, f, 0x0fc19dc6 + (w2 += sigma1(w0) + w11 + sigma0(w3)));
|
||||
Round(f, g, h, a, b, c, d, e, 0x240ca1cc + (w3 += sigma1(w1) + w12 + sigma0(w4)));
|
||||
Round(e, f, g, h, a, b, c, d, 0x2de92c6f + (w4 += sigma1(w2) + w13 + sigma0(w5)));
|
||||
Round(d, e, f, g, h, a, b, c, 0x4a7484aa + (w5 += sigma1(w3) + w14 + sigma0(w6)));
|
||||
Round(c, d, e, f, g, h, a, b, 0x5cb0a9dc + (w6 += sigma1(w4) + w15 + sigma0(w7)));
|
||||
Round(b, c, d, e, f, g, h, a, 0x76f988da + (w7 += sigma1(w5) + w0 + sigma0(w8)));
|
||||
Round(a, b, c, d, e, f, g, h, 0x983e5152 + (w8 += sigma1(w6) + w1 + sigma0(w9)));
|
||||
Round(h, a, b, c, d, e, f, g, 0xa831c66d + (w9 += sigma1(w7) + w2 + sigma0(w10)));
|
||||
Round(g, h, a, b, c, d, e, f, 0xb00327c8 + (w10 += sigma1(w8) + w3 + sigma0(w11)));
|
||||
Round(f, g, h, a, b, c, d, e, 0xbf597fc7 + (w11 += sigma1(w9) + w4 + sigma0(w12)));
|
||||
Round(e, f, g, h, a, b, c, d, 0xc6e00bf3 + (w12 += sigma1(w10) + w5 + sigma0(w13)));
|
||||
Round(d, e, f, g, h, a, b, c, 0xd5a79147 + (w13 += sigma1(w11) + w6 + sigma0(w14)));
|
||||
Round(c, d, e, f, g, h, a, b, 0x06ca6351 + (w14 += sigma1(w12) + w7 + sigma0(w15)));
|
||||
Round(b, c, d, e, f, g, h, a, 0x14292967 + (w15 += sigma1(w13) + w8 + sigma0(w0)));
|
||||
|
||||
Round(a, b, c, d, e, f, g, h, 0x27b70a85 + (w0 += sigma1(w14) + w9 + sigma0(w1)));
|
||||
Round(h, a, b, c, d, e, f, g, 0x2e1b2138 + (w1 += sigma1(w15) + w10 + sigma0(w2)));
|
||||
Round(g, h, a, b, c, d, e, f, 0x4d2c6dfc + (w2 += sigma1(w0) + w11 + sigma0(w3)));
|
||||
Round(f, g, h, a, b, c, d, e, 0x53380d13 + (w3 += sigma1(w1) + w12 + sigma0(w4)));
|
||||
Round(e, f, g, h, a, b, c, d, 0x650a7354 + (w4 += sigma1(w2) + w13 + sigma0(w5)));
|
||||
Round(d, e, f, g, h, a, b, c, 0x766a0abb + (w5 += sigma1(w3) + w14 + sigma0(w6)));
|
||||
Round(c, d, e, f, g, h, a, b, 0x81c2c92e + (w6 += sigma1(w4) + w15 + sigma0(w7)));
|
||||
Round(b, c, d, e, f, g, h, a, 0x92722c85 + (w7 += sigma1(w5) + w0 + sigma0(w8)));
|
||||
Round(a, b, c, d, e, f, g, h, 0xa2bfe8a1 + (w8 += sigma1(w6) + w1 + sigma0(w9)));
|
||||
Round(h, a, b, c, d, e, f, g, 0xa81a664b + (w9 += sigma1(w7) + w2 + sigma0(w10)));
|
||||
Round(g, h, a, b, c, d, e, f, 0xc24b8b70 + (w10 += sigma1(w8) + w3 + sigma0(w11)));
|
||||
Round(f, g, h, a, b, c, d, e, 0xc76c51a3 + (w11 += sigma1(w9) + w4 + sigma0(w12)));
|
||||
Round(e, f, g, h, a, b, c, d, 0xd192e819 + (w12 += sigma1(w10) + w5 + sigma0(w13)));
|
||||
Round(d, e, f, g, h, a, b, c, 0xd6990624 + (w13 += sigma1(w11) + w6 + sigma0(w14)));
|
||||
Round(c, d, e, f, g, h, a, b, 0xf40e3585 + (w14 += sigma1(w12) + w7 + sigma0(w15)));
|
||||
Round(b, c, d, e, f, g, h, a, 0x106aa070 + (w15 += sigma1(w13) + w8 + sigma0(w0)));
|
||||
|
||||
Round(a, b, c, d, e, f, g, h, 0x19a4c116 + (w0 += sigma1(w14) + w9 + sigma0(w1)));
|
||||
Round(h, a, b, c, d, e, f, g, 0x1e376c08 + (w1 += sigma1(w15) + w10 + sigma0(w2)));
|
||||
Round(g, h, a, b, c, d, e, f, 0x2748774c + (w2 += sigma1(w0) + w11 + sigma0(w3)));
|
||||
Round(f, g, h, a, b, c, d, e, 0x34b0bcb5 + (w3 += sigma1(w1) + w12 + sigma0(w4)));
|
||||
Round(e, f, g, h, a, b, c, d, 0x391c0cb3 + (w4 += sigma1(w2) + w13 + sigma0(w5)));
|
||||
Round(d, e, f, g, h, a, b, c, 0x4ed8aa4a + (w5 += sigma1(w3) + w14 + sigma0(w6)));
|
||||
Round(c, d, e, f, g, h, a, b, 0x5b9cca4f + (w6 += sigma1(w4) + w15 + sigma0(w7)));
|
||||
Round(b, c, d, e, f, g, h, a, 0x682e6ff3 + (w7 += sigma1(w5) + w0 + sigma0(w8)));
|
||||
Round(a, b, c, d, e, f, g, h, 0x748f82ee + (w8 += sigma1(w6) + w1 + sigma0(w9)));
|
||||
Round(h, a, b, c, d, e, f, g, 0x78a5636f + (w9 += sigma1(w7) + w2 + sigma0(w10)));
|
||||
Round(g, h, a, b, c, d, e, f, 0x84c87814 + (w10 += sigma1(w8) + w3 + sigma0(w11)));
|
||||
Round(f, g, h, a, b, c, d, e, 0x8cc70208 + (w11 += sigma1(w9) + w4 + sigma0(w12)));
|
||||
Round(e, f, g, h, a, b, c, d, 0x90befffa + (w12 += sigma1(w10) + w5 + sigma0(w13)));
|
||||
Round(d, e, f, g, h, a, b, c, 0xa4506ceb + (w13 += sigma1(w11) + w6 + sigma0(w14)));
|
||||
Round(c, d, e, f, g, h, a, b, 0xbef9a3f7 + (w14 + sigma1(w12) + w7 + sigma0(w15)));
|
||||
Round(b, c, d, e, f, g, h, a, 0xc67178f2 + (w15 + sigma1(w13) + w8 + sigma0(w0)));
|
||||
|
||||
s[0] += a;
|
||||
s[1] += b;
|
||||
s[2] += c;
|
||||
s[3] += d;
|
||||
s[4] += e;
|
||||
s[5] += f;
|
||||
s[6] += g;
|
||||
s[7] += h;
|
||||
chunk += 64;
|
||||
}
|
||||
}
|
||||
|
||||
void TransformD64(unsigned char* out, const unsigned char* in)
|
||||
{
|
||||
// Transform 1
|
||||
uint32_t a = 0x6a09e667ul;
|
||||
uint32_t b = 0xbb67ae85ul;
|
||||
uint32_t c = 0x3c6ef372ul;
|
||||
uint32_t d = 0xa54ff53aul;
|
||||
uint32_t e = 0x510e527ful;
|
||||
uint32_t f = 0x9b05688cul;
|
||||
uint32_t g = 0x1f83d9abul;
|
||||
uint32_t h = 0x5be0cd19ul;
|
||||
|
||||
uint32_t w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15;
|
||||
|
||||
Round(a, b, c, d, e, f, g, h, 0x428a2f98ul + (w0 = ReadBE32(in + 0)));
|
||||
Round(h, a, b, c, d, e, f, g, 0x71374491ul + (w1 = ReadBE32(in + 4)));
|
||||
Round(g, h, a, b, c, d, e, f, 0xb5c0fbcful + (w2 = ReadBE32(in + 8)));
|
||||
Round(f, g, h, a, b, c, d, e, 0xe9b5dba5ul + (w3 = ReadBE32(in + 12)));
|
||||
Round(e, f, g, h, a, b, c, d, 0x3956c25bul + (w4 = ReadBE32(in + 16)));
|
||||
Round(d, e, f, g, h, a, b, c, 0x59f111f1ul + (w5 = ReadBE32(in + 20)));
|
||||
Round(c, d, e, f, g, h, a, b, 0x923f82a4ul + (w6 = ReadBE32(in + 24)));
|
||||
Round(b, c, d, e, f, g, h, a, 0xab1c5ed5ul + (w7 = ReadBE32(in + 28)));
|
||||
Round(a, b, c, d, e, f, g, h, 0xd807aa98ul + (w8 = ReadBE32(in + 32)));
|
||||
Round(h, a, b, c, d, e, f, g, 0x12835b01ul + (w9 = ReadBE32(in + 36)));
|
||||
Round(g, h, a, b, c, d, e, f, 0x243185beul + (w10 = ReadBE32(in + 40)));
|
||||
Round(f, g, h, a, b, c, d, e, 0x550c7dc3ul + (w11 = ReadBE32(in + 44)));
|
||||
Round(e, f, g, h, a, b, c, d, 0x72be5d74ul + (w12 = ReadBE32(in + 48)));
|
||||
Round(d, e, f, g, h, a, b, c, 0x80deb1feul + (w13 = ReadBE32(in + 52)));
|
||||
Round(c, d, e, f, g, h, a, b, 0x9bdc06a7ul + (w14 = ReadBE32(in + 56)));
|
||||
Round(b, c, d, e, f, g, h, a, 0xc19bf174ul + (w15 = ReadBE32(in + 60)));
|
||||
Round(a, b, c, d, e, f, g, h, 0xe49b69c1ul + (w0 += sigma1(w14) + w9 + sigma0(w1)));
|
||||
Round(h, a, b, c, d, e, f, g, 0xefbe4786ul + (w1 += sigma1(w15) + w10 + sigma0(w2)));
|
||||
Round(g, h, a, b, c, d, e, f, 0x0fc19dc6ul + (w2 += sigma1(w0) + w11 + sigma0(w3)));
|
||||
Round(f, g, h, a, b, c, d, e, 0x240ca1ccul + (w3 += sigma1(w1) + w12 + sigma0(w4)));
|
||||
Round(e, f, g, h, a, b, c, d, 0x2de92c6ful + (w4 += sigma1(w2) + w13 + sigma0(w5)));
|
||||
Round(d, e, f, g, h, a, b, c, 0x4a7484aaul + (w5 += sigma1(w3) + w14 + sigma0(w6)));
|
||||
Round(c, d, e, f, g, h, a, b, 0x5cb0a9dcul + (w6 += sigma1(w4) + w15 + sigma0(w7)));
|
||||
Round(b, c, d, e, f, g, h, a, 0x76f988daul + (w7 += sigma1(w5) + w0 + sigma0(w8)));
|
||||
Round(a, b, c, d, e, f, g, h, 0x983e5152ul + (w8 += sigma1(w6) + w1 + sigma0(w9)));
|
||||
Round(h, a, b, c, d, e, f, g, 0xa831c66dul + (w9 += sigma1(w7) + w2 + sigma0(w10)));
|
||||
Round(g, h, a, b, c, d, e, f, 0xb00327c8ul + (w10 += sigma1(w8) + w3 + sigma0(w11)));
|
||||
Round(f, g, h, a, b, c, d, e, 0xbf597fc7ul + (w11 += sigma1(w9) + w4 + sigma0(w12)));
|
||||
Round(e, f, g, h, a, b, c, d, 0xc6e00bf3ul + (w12 += sigma1(w10) + w5 + sigma0(w13)));
|
||||
Round(d, e, f, g, h, a, b, c, 0xd5a79147ul + (w13 += sigma1(w11) + w6 + sigma0(w14)));
|
||||
Round(c, d, e, f, g, h, a, b, 0x06ca6351ul + (w14 += sigma1(w12) + w7 + sigma0(w15)));
|
||||
Round(b, c, d, e, f, g, h, a, 0x14292967ul + (w15 += sigma1(w13) + w8 + sigma0(w0)));
|
||||
Round(a, b, c, d, e, f, g, h, 0x27b70a85ul + (w0 += sigma1(w14) + w9 + sigma0(w1)));
|
||||
Round(h, a, b, c, d, e, f, g, 0x2e1b2138ul + (w1 += sigma1(w15) + w10 + sigma0(w2)));
|
||||
Round(g, h, a, b, c, d, e, f, 0x4d2c6dfcul + (w2 += sigma1(w0) + w11 + sigma0(w3)));
|
||||
Round(f, g, h, a, b, c, d, e, 0x53380d13ul + (w3 += sigma1(w1) + w12 + sigma0(w4)));
|
||||
Round(e, f, g, h, a, b, c, d, 0x650a7354ul + (w4 += sigma1(w2) + w13 + sigma0(w5)));
|
||||
Round(d, e, f, g, h, a, b, c, 0x766a0abbul + (w5 += sigma1(w3) + w14 + sigma0(w6)));
|
||||
Round(c, d, e, f, g, h, a, b, 0x81c2c92eul + (w6 += sigma1(w4) + w15 + sigma0(w7)));
|
||||
Round(b, c, d, e, f, g, h, a, 0x92722c85ul + (w7 += sigma1(w5) + w0 + sigma0(w8)));
|
||||
Round(a, b, c, d, e, f, g, h, 0xa2bfe8a1ul + (w8 += sigma1(w6) + w1 + sigma0(w9)));
|
||||
Round(h, a, b, c, d, e, f, g, 0xa81a664bul + (w9 += sigma1(w7) + w2 + sigma0(w10)));
|
||||
Round(g, h, a, b, c, d, e, f, 0xc24b8b70ul + (w10 += sigma1(w8) + w3 + sigma0(w11)));
|
||||
Round(f, g, h, a, b, c, d, e, 0xc76c51a3ul + (w11 += sigma1(w9) + w4 + sigma0(w12)));
|
||||
Round(e, f, g, h, a, b, c, d, 0xd192e819ul + (w12 += sigma1(w10) + w5 + sigma0(w13)));
|
||||
Round(d, e, f, g, h, a, b, c, 0xd6990624ul + (w13 += sigma1(w11) + w6 + sigma0(w14)));
|
||||
Round(c, d, e, f, g, h, a, b, 0xf40e3585ul + (w14 += sigma1(w12) + w7 + sigma0(w15)));
|
||||
Round(b, c, d, e, f, g, h, a, 0x106aa070ul + (w15 += sigma1(w13) + w8 + sigma0(w0)));
|
||||
Round(a, b, c, d, e, f, g, h, 0x19a4c116ul + (w0 += sigma1(w14) + w9 + sigma0(w1)));
|
||||
Round(h, a, b, c, d, e, f, g, 0x1e376c08ul + (w1 += sigma1(w15) + w10 + sigma0(w2)));
|
||||
Round(g, h, a, b, c, d, e, f, 0x2748774cul + (w2 += sigma1(w0) + w11 + sigma0(w3)));
|
||||
Round(f, g, h, a, b, c, d, e, 0x34b0bcb5ul + (w3 += sigma1(w1) + w12 + sigma0(w4)));
|
||||
Round(e, f, g, h, a, b, c, d, 0x391c0cb3ul + (w4 += sigma1(w2) + w13 + sigma0(w5)));
|
||||
Round(d, e, f, g, h, a, b, c, 0x4ed8aa4aul + (w5 += sigma1(w3) + w14 + sigma0(w6)));
|
||||
Round(c, d, e, f, g, h, a, b, 0x5b9cca4ful + (w6 += sigma1(w4) + w15 + sigma0(w7)));
|
||||
Round(b, c, d, e, f, g, h, a, 0x682e6ff3ul + (w7 += sigma1(w5) + w0 + sigma0(w8)));
|
||||
Round(a, b, c, d, e, f, g, h, 0x748f82eeul + (w8 += sigma1(w6) + w1 + sigma0(w9)));
|
||||
Round(h, a, b, c, d, e, f, g, 0x78a5636ful + (w9 += sigma1(w7) + w2 + sigma0(w10)));
|
||||
Round(g, h, a, b, c, d, e, f, 0x84c87814ul + (w10 += sigma1(w8) + w3 + sigma0(w11)));
|
||||
Round(f, g, h, a, b, c, d, e, 0x8cc70208ul + (w11 += sigma1(w9) + w4 + sigma0(w12)));
|
||||
Round(e, f, g, h, a, b, c, d, 0x90befffaul + (w12 += sigma1(w10) + w5 + sigma0(w13)));
|
||||
Round(d, e, f, g, h, a, b, c, 0xa4506cebul + (w13 += sigma1(w11) + w6 + sigma0(w14)));
|
||||
Round(c, d, e, f, g, h, a, b, 0xbef9a3f7ul + (w14 + sigma1(w12) + w7 + sigma0(w15)));
|
||||
Round(b, c, d, e, f, g, h, a, 0xc67178f2ul + (w15 + sigma1(w13) + w8 + sigma0(w0)));
|
||||
|
||||
a += 0x6a09e667ul;
|
||||
b += 0xbb67ae85ul;
|
||||
c += 0x3c6ef372ul;
|
||||
d += 0xa54ff53aul;
|
||||
e += 0x510e527ful;
|
||||
f += 0x9b05688cul;
|
||||
g += 0x1f83d9abul;
|
||||
h += 0x5be0cd19ul;
|
||||
|
||||
uint32_t t0 = a, t1 = b, t2 = c, t3 = d, t4 = e, t5 = f, t6 = g, t7 = h;
|
||||
|
||||
// Transform 2
|
||||
Round(a, b, c, d, e, f, g, h, 0xc28a2f98ul);
|
||||
Round(h, a, b, c, d, e, f, g, 0x71374491ul);
|
||||
Round(g, h, a, b, c, d, e, f, 0xb5c0fbcful);
|
||||
Round(f, g, h, a, b, c, d, e, 0xe9b5dba5ul);
|
||||
Round(e, f, g, h, a, b, c, d, 0x3956c25bul);
|
||||
Round(d, e, f, g, h, a, b, c, 0x59f111f1ul);
|
||||
Round(c, d, e, f, g, h, a, b, 0x923f82a4ul);
|
||||
Round(b, c, d, e, f, g, h, a, 0xab1c5ed5ul);
|
||||
Round(a, b, c, d, e, f, g, h, 0xd807aa98ul);
|
||||
Round(h, a, b, c, d, e, f, g, 0x12835b01ul);
|
||||
Round(g, h, a, b, c, d, e, f, 0x243185beul);
|
||||
Round(f, g, h, a, b, c, d, e, 0x550c7dc3ul);
|
||||
Round(e, f, g, h, a, b, c, d, 0x72be5d74ul);
|
||||
Round(d, e, f, g, h, a, b, c, 0x80deb1feul);
|
||||
Round(c, d, e, f, g, h, a, b, 0x9bdc06a7ul);
|
||||
Round(b, c, d, e, f, g, h, a, 0xc19bf374ul);
|
||||
Round(a, b, c, d, e, f, g, h, 0x649b69c1ul);
|
||||
Round(h, a, b, c, d, e, f, g, 0xf0fe4786ul);
|
||||
Round(g, h, a, b, c, d, e, f, 0x0fe1edc6ul);
|
||||
Round(f, g, h, a, b, c, d, e, 0x240cf254ul);
|
||||
Round(e, f, g, h, a, b, c, d, 0x4fe9346ful);
|
||||
Round(d, e, f, g, h, a, b, c, 0x6cc984beul);
|
||||
Round(c, d, e, f, g, h, a, b, 0x61b9411eul);
|
||||
Round(b, c, d, e, f, g, h, a, 0x16f988faul);
|
||||
Round(a, b, c, d, e, f, g, h, 0xf2c65152ul);
|
||||
Round(h, a, b, c, d, e, f, g, 0xa88e5a6dul);
|
||||
Round(g, h, a, b, c, d, e, f, 0xb019fc65ul);
|
||||
Round(f, g, h, a, b, c, d, e, 0xb9d99ec7ul);
|
||||
Round(e, f, g, h, a, b, c, d, 0x9a1231c3ul);
|
||||
Round(d, e, f, g, h, a, b, c, 0xe70eeaa0ul);
|
||||
Round(c, d, e, f, g, h, a, b, 0xfdb1232bul);
|
||||
Round(b, c, d, e, f, g, h, a, 0xc7353eb0ul);
|
||||
Round(a, b, c, d, e, f, g, h, 0x3069bad5ul);
|
||||
Round(h, a, b, c, d, e, f, g, 0xcb976d5ful);
|
||||
Round(g, h, a, b, c, d, e, f, 0x5a0f118ful);
|
||||
Round(f, g, h, a, b, c, d, e, 0xdc1eeefdul);
|
||||
Round(e, f, g, h, a, b, c, d, 0x0a35b689ul);
|
||||
Round(d, e, f, g, h, a, b, c, 0xde0b7a04ul);
|
||||
Round(c, d, e, f, g, h, a, b, 0x58f4ca9dul);
|
||||
Round(b, c, d, e, f, g, h, a, 0xe15d5b16ul);
|
||||
Round(a, b, c, d, e, f, g, h, 0x007f3e86ul);
|
||||
Round(h, a, b, c, d, e, f, g, 0x37088980ul);
|
||||
Round(g, h, a, b, c, d, e, f, 0xa507ea32ul);
|
||||
Round(f, g, h, a, b, c, d, e, 0x6fab9537ul);
|
||||
Round(e, f, g, h, a, b, c, d, 0x17406110ul);
|
||||
Round(d, e, f, g, h, a, b, c, 0x0d8cd6f1ul);
|
||||
Round(c, d, e, f, g, h, a, b, 0xcdaa3b6dul);
|
||||
Round(b, c, d, e, f, g, h, a, 0xc0bbbe37ul);
|
||||
Round(a, b, c, d, e, f, g, h, 0x83613bdaul);
|
||||
Round(h, a, b, c, d, e, f, g, 0xdb48a363ul);
|
||||
Round(g, h, a, b, c, d, e, f, 0x0b02e931ul);
|
||||
Round(f, g, h, a, b, c, d, e, 0x6fd15ca7ul);
|
||||
Round(e, f, g, h, a, b, c, d, 0x521afacaul);
|
||||
Round(d, e, f, g, h, a, b, c, 0x31338431ul);
|
||||
Round(c, d, e, f, g, h, a, b, 0x6ed41a95ul);
|
||||
Round(b, c, d, e, f, g, h, a, 0x6d437890ul);
|
||||
Round(a, b, c, d, e, f, g, h, 0xc39c91f2ul);
|
||||
Round(h, a, b, c, d, e, f, g, 0x9eccabbdul);
|
||||
Round(g, h, a, b, c, d, e, f, 0xb5c9a0e6ul);
|
||||
Round(f, g, h, a, b, c, d, e, 0x532fb63cul);
|
||||
Round(e, f, g, h, a, b, c, d, 0xd2c741c6ul);
|
||||
Round(d, e, f, g, h, a, b, c, 0x07237ea3ul);
|
||||
Round(c, d, e, f, g, h, a, b, 0xa4954b68ul);
|
||||
Round(b, c, d, e, f, g, h, a, 0x4c191d76ul);
|
||||
|
||||
w0 = t0 + a;
|
||||
w1 = t1 + b;
|
||||
w2 = t2 + c;
|
||||
w3 = t3 + d;
|
||||
w4 = t4 + e;
|
||||
w5 = t5 + f;
|
||||
w6 = t6 + g;
|
||||
w7 = t7 + h;
|
||||
|
||||
// Transform 3
|
||||
a = 0x6a09e667ul;
|
||||
b = 0xbb67ae85ul;
|
||||
c = 0x3c6ef372ul;
|
||||
d = 0xa54ff53aul;
|
||||
e = 0x510e527ful;
|
||||
f = 0x9b05688cul;
|
||||
g = 0x1f83d9abul;
|
||||
h = 0x5be0cd19ul;
|
||||
|
||||
Round(a, b, c, d, e, f, g, h, 0x428a2f98ul + w0);
|
||||
Round(h, a, b, c, d, e, f, g, 0x71374491ul + w1);
|
||||
Round(g, h, a, b, c, d, e, f, 0xb5c0fbcful + w2);
|
||||
Round(f, g, h, a, b, c, d, e, 0xe9b5dba5ul + w3);
|
||||
Round(e, f, g, h, a, b, c, d, 0x3956c25bul + w4);
|
||||
Round(d, e, f, g, h, a, b, c, 0x59f111f1ul + w5);
|
||||
Round(c, d, e, f, g, h, a, b, 0x923f82a4ul + w6);
|
||||
Round(b, c, d, e, f, g, h, a, 0xab1c5ed5ul + w7);
|
||||
Round(a, b, c, d, e, f, g, h, 0x5807aa98ul);
|
||||
Round(h, a, b, c, d, e, f, g, 0x12835b01ul);
|
||||
Round(g, h, a, b, c, d, e, f, 0x243185beul);
|
||||
Round(f, g, h, a, b, c, d, e, 0x550c7dc3ul);
|
||||
Round(e, f, g, h, a, b, c, d, 0x72be5d74ul);
|
||||
Round(d, e, f, g, h, a, b, c, 0x80deb1feul);
|
||||
Round(c, d, e, f, g, h, a, b, 0x9bdc06a7ul);
|
||||
Round(b, c, d, e, f, g, h, a, 0xc19bf274ul);
|
||||
Round(a, b, c, d, e, f, g, h, 0xe49b69c1ul + (w0 += sigma0(w1)));
|
||||
Round(h, a, b, c, d, e, f, g, 0xefbe4786ul + (w1 += 0xa00000ul + sigma0(w2)));
|
||||
Round(g, h, a, b, c, d, e, f, 0x0fc19dc6ul + (w2 += sigma1(w0) + sigma0(w3)));
|
||||
Round(f, g, h, a, b, c, d, e, 0x240ca1ccul + (w3 += sigma1(w1) + sigma0(w4)));
|
||||
Round(e, f, g, h, a, b, c, d, 0x2de92c6ful + (w4 += sigma1(w2) + sigma0(w5)));
|
||||
Round(d, e, f, g, h, a, b, c, 0x4a7484aaul + (w5 += sigma1(w3) + sigma0(w6)));
|
||||
Round(c, d, e, f, g, h, a, b, 0x5cb0a9dcul + (w6 += sigma1(w4) + 0x100ul + sigma0(w7)));
|
||||
Round(b, c, d, e, f, g, h, a, 0x76f988daul + (w7 += sigma1(w5) + w0 + 0x11002000ul));
|
||||
Round(a, b, c, d, e, f, g, h, 0x983e5152ul + (w8 = 0x80000000ul + sigma1(w6) + w1));
|
||||
Round(h, a, b, c, d, e, f, g, 0xa831c66dul + (w9 = sigma1(w7) + w2));
|
||||
Round(g, h, a, b, c, d, e, f, 0xb00327c8ul + (w10 = sigma1(w8) + w3));
|
||||
Round(f, g, h, a, b, c, d, e, 0xbf597fc7ul + (w11 = sigma1(w9) + w4));
|
||||
Round(e, f, g, h, a, b, c, d, 0xc6e00bf3ul + (w12 = sigma1(w10) + w5));
|
||||
Round(d, e, f, g, h, a, b, c, 0xd5a79147ul + (w13 = sigma1(w11) + w6));
|
||||
Round(c, d, e, f, g, h, a, b, 0x06ca6351ul + (w14 = sigma1(w12) + w7 + 0x400022ul));
|
||||
Round(b, c, d, e, f, g, h, a, 0x14292967ul + (w15 = 0x100ul + sigma1(w13) + w8 + sigma0(w0)));
|
||||
Round(a, b, c, d, e, f, g, h, 0x27b70a85ul + (w0 += sigma1(w14) + w9 + sigma0(w1)));
|
||||
Round(h, a, b, c, d, e, f, g, 0x2e1b2138ul + (w1 += sigma1(w15) + w10 + sigma0(w2)));
|
||||
Round(g, h, a, b, c, d, e, f, 0x4d2c6dfcul + (w2 += sigma1(w0) + w11 + sigma0(w3)));
|
||||
Round(f, g, h, a, b, c, d, e, 0x53380d13ul + (w3 += sigma1(w1) + w12 + sigma0(w4)));
|
||||
Round(e, f, g, h, a, b, c, d, 0x650a7354ul + (w4 += sigma1(w2) + w13 + sigma0(w5)));
|
||||
Round(d, e, f, g, h, a, b, c, 0x766a0abbul + (w5 += sigma1(w3) + w14 + sigma0(w6)));
|
||||
Round(c, d, e, f, g, h, a, b, 0x81c2c92eul + (w6 += sigma1(w4) + w15 + sigma0(w7)));
|
||||
Round(b, c, d, e, f, g, h, a, 0x92722c85ul + (w7 += sigma1(w5) + w0 + sigma0(w8)));
|
||||
Round(a, b, c, d, e, f, g, h, 0xa2bfe8a1ul + (w8 += sigma1(w6) + w1 + sigma0(w9)));
|
||||
Round(h, a, b, c, d, e, f, g, 0xa81a664bul + (w9 += sigma1(w7) + w2 + sigma0(w10)));
|
||||
Round(g, h, a, b, c, d, e, f, 0xc24b8b70ul + (w10 += sigma1(w8) + w3 + sigma0(w11)));
|
||||
Round(f, g, h, a, b, c, d, e, 0xc76c51a3ul + (w11 += sigma1(w9) + w4 + sigma0(w12)));
|
||||
Round(e, f, g, h, a, b, c, d, 0xd192e819ul + (w12 += sigma1(w10) + w5 + sigma0(w13)));
|
||||
Round(d, e, f, g, h, a, b, c, 0xd6990624ul + (w13 += sigma1(w11) + w6 + sigma0(w14)));
|
||||
Round(c, d, e, f, g, h, a, b, 0xf40e3585ul + (w14 += sigma1(w12) + w7 + sigma0(w15)));
|
||||
Round(b, c, d, e, f, g, h, a, 0x106aa070ul + (w15 += sigma1(w13) + w8 + sigma0(w0)));
|
||||
Round(a, b, c, d, e, f, g, h, 0x19a4c116ul + (w0 += sigma1(w14) + w9 + sigma0(w1)));
|
||||
Round(h, a, b, c, d, e, f, g, 0x1e376c08ul + (w1 += sigma1(w15) + w10 + sigma0(w2)));
|
||||
Round(g, h, a, b, c, d, e, f, 0x2748774cul + (w2 += sigma1(w0) + w11 + sigma0(w3)));
|
||||
Round(f, g, h, a, b, c, d, e, 0x34b0bcb5ul + (w3 += sigma1(w1) + w12 + sigma0(w4)));
|
||||
Round(e, f, g, h, a, b, c, d, 0x391c0cb3ul + (w4 += sigma1(w2) + w13 + sigma0(w5)));
|
||||
Round(d, e, f, g, h, a, b, c, 0x4ed8aa4aul + (w5 += sigma1(w3) + w14 + sigma0(w6)));
|
||||
Round(c, d, e, f, g, h, a, b, 0x5b9cca4ful + (w6 += sigma1(w4) + w15 + sigma0(w7)));
|
||||
Round(b, c, d, e, f, g, h, a, 0x682e6ff3ul + (w7 += sigma1(w5) + w0 + sigma0(w8)));
|
||||
Round(a, b, c, d, e, f, g, h, 0x748f82eeul + (w8 += sigma1(w6) + w1 + sigma0(w9)));
|
||||
Round(h, a, b, c, d, e, f, g, 0x78a5636ful + (w9 += sigma1(w7) + w2 + sigma0(w10)));
|
||||
Round(g, h, a, b, c, d, e, f, 0x84c87814ul + (w10 += sigma1(w8) + w3 + sigma0(w11)));
|
||||
Round(f, g, h, a, b, c, d, e, 0x8cc70208ul + (w11 += sigma1(w9) + w4 + sigma0(w12)));
|
||||
Round(e, f, g, h, a, b, c, d, 0x90befffaul + (w12 += sigma1(w10) + w5 + sigma0(w13)));
|
||||
Round(d, e, f, g, h, a, b, c, 0xa4506cebul + (w13 += sigma1(w11) + w6 + sigma0(w14)));
|
||||
Round(c, d, e, f, g, h, a, b, 0xbef9a3f7ul + (w14 + sigma1(w12) + w7 + sigma0(w15)));
|
||||
Round(b, c, d, e, f, g, h, a, 0xc67178f2ul + (w15 + sigma1(w13) + w8 + sigma0(w0)));
|
||||
|
||||
// Output
|
||||
WriteBE32(out + 0, a + 0x6a09e667ul);
|
||||
WriteBE32(out + 4, b + 0xbb67ae85ul);
|
||||
WriteBE32(out + 8, c + 0x3c6ef372ul);
|
||||
WriteBE32(out + 12, d + 0xa54ff53aul);
|
||||
WriteBE32(out + 16, e + 0x510e527ful);
|
||||
WriteBE32(out + 20, f + 0x9b05688cul);
|
||||
WriteBE32(out + 24, g + 0x1f83d9abul);
|
||||
WriteBE32(out + 28, h + 0x5be0cd19ul);
|
||||
}
|
||||
|
||||
} // namespace sha256
|
||||
|
||||
typedef void(*TransformType)(uint32_t*, const unsigned char*, size_t);
|
||||
typedef void(*TransformD64Type)(unsigned char*, const unsigned char*);
|
||||
|
||||
template<TransformType tr>
|
||||
void TransformD64Wrapper(unsigned char* out, const unsigned char* in)
|
||||
{
|
||||
uint32_t s[8];
|
||||
static const unsigned char padding1[64] = {
|
||||
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0
|
||||
};
|
||||
unsigned char buffer2[64] = {
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0
|
||||
};
|
||||
sha256::Initialize(s);
|
||||
tr(s, in, 1);
|
||||
tr(s, padding1, 1);
|
||||
WriteBE32(buffer2 + 0, s[0]);
|
||||
WriteBE32(buffer2 + 4, s[1]);
|
||||
WriteBE32(buffer2 + 8, s[2]);
|
||||
WriteBE32(buffer2 + 12, s[3]);
|
||||
WriteBE32(buffer2 + 16, s[4]);
|
||||
WriteBE32(buffer2 + 20, s[5]);
|
||||
WriteBE32(buffer2 + 24, s[6]);
|
||||
WriteBE32(buffer2 + 28, s[7]);
|
||||
sha256::Initialize(s);
|
||||
tr(s, buffer2, 1);
|
||||
WriteBE32(out + 0, s[0]);
|
||||
WriteBE32(out + 4, s[1]);
|
||||
WriteBE32(out + 8, s[2]);
|
||||
WriteBE32(out + 12, s[3]);
|
||||
WriteBE32(out + 16, s[4]);
|
||||
WriteBE32(out + 20, s[5]);
|
||||
WriteBE32(out + 24, s[6]);
|
||||
WriteBE32(out + 28, s[7]);
|
||||
}
|
||||
|
||||
TransformType Transform = sha256::Transform;
|
||||
TransformD64Type TransformD64 = sha256::TransformD64;
|
||||
TransformD64Type TransformD64_2way = nullptr;
|
||||
TransformD64Type TransformD64_4way = nullptr;
|
||||
TransformD64Type TransformD64_8way = nullptr;
|
||||
|
||||
bool SelfTest() {
|
||||
// Input state (equal to the initial SHA256 state)
|
||||
static const uint32_t init[8] = {
|
||||
0x6a09e667ul, 0xbb67ae85ul, 0x3c6ef372ul, 0xa54ff53aul, 0x510e527ful, 0x9b05688cul, 0x1f83d9abul, 0x5be0cd19ul
|
||||
};
|
||||
// Some random input data to test with
|
||||
static const unsigned char data[641] = "-" // Intentionally not aligned
|
||||
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do "
|
||||
"eiusmod tempor incididunt ut labore et dolore magna aliqua. Et m"
|
||||
"olestie ac feugiat sed lectus vestibulum mattis ullamcorper. Mor"
|
||||
"bi blandit cursus risus at ultrices mi tempus imperdiet nulla. N"
|
||||
"unc congue nisi vita suscipit tellus mauris. Imperdiet proin fer"
|
||||
"mentum leo vel orci. Massa tempor nec feugiat nisl pretium fusce"
|
||||
" id velit. Telus in metus vulputate eu scelerisque felis. Mi tem"
|
||||
"pus imperdiet nulla malesuada pellentesque. Tristique magna sit.";
|
||||
// Expected output state for hashing the i*64 first input bytes above (excluding SHA256 padding).
|
||||
static const uint32_t result[9][8] = {
|
||||
{ 0x6a09e667ul, 0xbb67ae85ul, 0x3c6ef372ul, 0xa54ff53aul, 0x510e527ful, 0x9b05688cul, 0x1f83d9abul, 0x5be0cd19ul },
|
||||
{ 0x91f8ec6bul, 0x4da10fe3ul, 0x1c9c292cul, 0x45e18185ul, 0x435cc111ul, 0x3ca26f09ul, 0xeb954caeul, 0x402a7069ul },
|
||||
{ 0xcabea5acul, 0x374fb97cul, 0x182ad996ul, 0x7bd69cbful, 0x450ff900ul, 0xc1d2be8aul, 0x6a41d505ul, 0xe6212dc3ul },
|
||||
{ 0xbcff09d6ul, 0x3e76f36eul, 0x3ecb2501ul, 0x78866e97ul, 0xe1c1e2fdul, 0x32f4eafful, 0x8aa6c4e5ul, 0xdfc024bcul },
|
||||
{ 0xa08c5d94ul, 0x0a862f93ul, 0x6b7f2f40ul, 0x8f9fae76ul, 0x6d40439ful, 0x79dcee0cul, 0x3e39ff3aul, 0xdc3bdbb1ul },
|
||||
{ 0x216a0895ul, 0x9f1a3662ul, 0xe99946f9ul, 0x87ba4364ul, 0x0fb5db2cul, 0x12bed3d3ul, 0x6689c0c7ul, 0x292f1b04ul },
|
||||
{ 0xca3067f8ul, 0xbc8c2656ul, 0x37cb7e0dul, 0x9b6b8b0ful, 0x46dc380bul, 0xf1287f57ul, 0xc42e4b23ul, 0x3fefe94dul },
|
||||
{ 0x3e4c4039ul, 0xbb6fca8cul, 0x6f27d2f7ul, 0x301e44a4ul, 0x8352ba14ul, 0x5769ce37ul, 0x48a1155ful, 0xc0e1c4c6ul },
|
||||
{ 0xfe2fa9ddul, 0x69d0862bul, 0x1ae0db23ul, 0x471f9244ul, 0xf55c0145ul, 0xc30f9c3bul, 0x40a84ea0ul, 0x5b8a266cul },
|
||||
};
|
||||
// Expected output for each of the individual 8 64-byte messages under full double SHA256 (including padding).
|
||||
static const unsigned char result_d64[256] = {
|
||||
0x09, 0x3a, 0xc4, 0xd0, 0x0f, 0xf7, 0x57, 0xe1, 0x72, 0x85, 0x79, 0x42, 0xfe, 0xe7, 0xe0, 0xa0,
|
||||
0xfc, 0x52, 0xd7, 0xdb, 0x07, 0x63, 0x45, 0xfb, 0x53, 0x14, 0x7d, 0x17, 0x22, 0x86, 0xf0, 0x52,
|
||||
0x48, 0xb6, 0x11, 0x9e, 0x6e, 0x48, 0x81, 0x6d, 0xcc, 0x57, 0x1f, 0xb2, 0x97, 0xa8, 0xd5, 0x25,
|
||||
0x9b, 0x82, 0xaa, 0x89, 0xe2, 0xfd, 0x2d, 0x56, 0xe8, 0x28, 0x83, 0x0b, 0xe2, 0xfa, 0x53, 0xb7,
|
||||
0xd6, 0x6b, 0x07, 0x85, 0x83, 0xb0, 0x10, 0xa2, 0xf5, 0x51, 0x3c, 0xf9, 0x60, 0x03, 0xab, 0x45,
|
||||
0x6c, 0x15, 0x6e, 0xef, 0xb5, 0xac, 0x3e, 0x6c, 0xdf, 0xb4, 0x92, 0x22, 0x2d, 0xce, 0xbf, 0x3e,
|
||||
0xe9, 0xe5, 0xf6, 0x29, 0x0e, 0x01, 0x4f, 0xd2, 0xd4, 0x45, 0x65, 0xb3, 0xbb, 0xf2, 0x4c, 0x16,
|
||||
0x37, 0x50, 0x3c, 0x6e, 0x49, 0x8c, 0x5a, 0x89, 0x2b, 0x1b, 0xab, 0xc4, 0x37, 0xd1, 0x46, 0xe9,
|
||||
0x3d, 0x0e, 0x85, 0xa2, 0x50, 0x73, 0xa1, 0x5e, 0x54, 0x37, 0xd7, 0x94, 0x17, 0x56, 0xc2, 0xd8,
|
||||
0xe5, 0x9f, 0xed, 0x4e, 0xae, 0x15, 0x42, 0x06, 0x0d, 0x74, 0x74, 0x5e, 0x24, 0x30, 0xce, 0xd1,
|
||||
0x9e, 0x50, 0xa3, 0x9a, 0xb8, 0xf0, 0x4a, 0x57, 0x69, 0x78, 0x67, 0x12, 0x84, 0x58, 0xbe, 0xc7,
|
||||
0x36, 0xaa, 0xee, 0x7c, 0x64, 0xa3, 0x76, 0xec, 0xff, 0x55, 0x41, 0x00, 0x2a, 0x44, 0x68, 0x4d,
|
||||
0xb6, 0x53, 0x9e, 0x1c, 0x95, 0xb7, 0xca, 0xdc, 0x7f, 0x7d, 0x74, 0x27, 0x5c, 0x8e, 0xa6, 0x84,
|
||||
0xb5, 0xac, 0x87, 0xa9, 0xf3, 0xff, 0x75, 0xf2, 0x34, 0xcd, 0x1a, 0x3b, 0x82, 0x2c, 0x2b, 0x4e,
|
||||
0x6a, 0x46, 0x30, 0xa6, 0x89, 0x86, 0x23, 0xac, 0xf8, 0xa5, 0x15, 0xe9, 0x0a, 0xaa, 0x1e, 0x9a,
|
||||
0xd7, 0x93, 0x6b, 0x28, 0xe4, 0x3b, 0xfd, 0x59, 0xc6, 0xed, 0x7c, 0x5f, 0xa5, 0x41, 0xcb, 0x51
|
||||
};
|
||||
|
||||
|
||||
// Test Transform() for 0 through 8 transformations.
|
||||
for (size_t i = 0; i <= 8; ++i) {
|
||||
uint32_t state[8];
|
||||
std::copy(init, init + 8, state);
|
||||
Transform(state, data + 1, i);
|
||||
if (!std::equal(state, state + 8, result[i])) return false;
|
||||
}
|
||||
|
||||
// Test TransformD64
|
||||
unsigned char out[32];
|
||||
TransformD64(out, data + 1);
|
||||
if (!std::equal(out, out + 32, result_d64)) return false;
|
||||
|
||||
// Test TransformD64_2way, if available.
|
||||
if (TransformD64_2way) {
|
||||
unsigned char out[64];
|
||||
TransformD64_2way(out, data + 1);
|
||||
if (!std::equal(out, out + 64, result_d64)) return false;
|
||||
}
|
||||
|
||||
// Test TransformD64_4way, if available.
|
||||
if (TransformD64_4way) {
|
||||
unsigned char out[128];
|
||||
TransformD64_4way(out, data + 1);
|
||||
if (!std::equal(out, out + 128, result_d64)) return false;
|
||||
}
|
||||
|
||||
// Test TransformD64_8way, if available.
|
||||
if (TransformD64_8way) {
|
||||
unsigned char out[256];
|
||||
TransformD64_8way(out, data + 1);
|
||||
if (!std::equal(out, out + 256, result_d64)) return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
#if defined(USE_ASM) && (defined(__x86_64__) || defined(__amd64__) || defined(__i386__))
|
||||
/** Check whether the OS has enabled AVX registers. */
|
||||
bool AVXEnabled()
|
||||
{
|
||||
uint32_t a, d;
|
||||
__asm__("xgetbv" : "=a"(a), "=d"(d) : "c"(0));
|
||||
return (a & 6) == 6;
|
||||
}
|
||||
#endif
|
||||
} // namespace
|
||||
|
||||
|
||||
std::string SHA256AutoDetect()
|
||||
{
|
||||
std::string ret = "standard";
|
||||
#if defined(USE_ASM) && defined(HAVE_GETCPUID)
|
||||
bool have_sse4 = false;
|
||||
bool have_xsave = false;
|
||||
bool have_avx = false;
|
||||
bool have_avx2 = false;
|
||||
bool have_shani = false;
|
||||
bool enabled_avx = false;
|
||||
|
||||
(void)AVXEnabled;
|
||||
(void)have_sse4;
|
||||
(void)have_avx;
|
||||
(void)have_xsave;
|
||||
(void)have_avx2;
|
||||
(void)have_shani;
|
||||
(void)enabled_avx;
|
||||
|
||||
uint32_t eax, ebx, ecx, edx;
|
||||
GetCPUID(1, 0, eax, ebx, ecx, edx);
|
||||
have_sse4 = (ecx >> 19) & 1;
|
||||
have_xsave = (ecx >> 27) & 1;
|
||||
have_avx = (ecx >> 28) & 1;
|
||||
if (have_xsave && have_avx) {
|
||||
enabled_avx = AVXEnabled();
|
||||
}
|
||||
if (have_sse4) {
|
||||
GetCPUID(7, 0, eax, ebx, ecx, edx);
|
||||
have_avx2 = (ebx >> 5) & 1;
|
||||
have_shani = (ebx >> 29) & 1;
|
||||
}
|
||||
|
||||
#if defined(ENABLE_SHANI) && !defined(BUILD_BITCOIN_INTERNAL)
|
||||
if (have_shani) {
|
||||
Transform = sha256_shani::Transform;
|
||||
TransformD64 = TransformD64Wrapper<sha256_shani::Transform>;
|
||||
TransformD64_2way = sha256d64_shani::Transform_2way;
|
||||
ret = "shani(1way,2way)";
|
||||
have_sse4 = false; // Disable SSE4/AVX2;
|
||||
have_avx2 = false;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (have_sse4) {
|
||||
#if defined(__x86_64__) || defined(__amd64__)
|
||||
Transform = sha256_sse4::Transform;
|
||||
TransformD64 = TransformD64Wrapper<sha256_sse4::Transform>;
|
||||
ret = "sse4(1way)";
|
||||
#endif
|
||||
#if defined(ENABLE_SSE41) && !defined(BUILD_BITCOIN_INTERNAL)
|
||||
TransformD64_4way = sha256d64_sse41::Transform_4way;
|
||||
ret += ",sse41(4way)";
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(ENABLE_AVX2) && !defined(BUILD_BITCOIN_INTERNAL)
|
||||
if (have_avx2 && have_avx && enabled_avx) {
|
||||
TransformD64_8way = sha256d64_avx2::Transform_8way;
|
||||
ret += ",avx2(8way)";
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
assert(SelfTest());
|
||||
return ret;
|
||||
}
|
||||
|
||||
////// SHA-256
|
||||
|
||||
CSHA256::CSHA256() : bytes(0)
|
||||
{
|
||||
sha256::Initialize(s);
|
||||
}
|
||||
|
||||
CSHA256& CSHA256::Write(const unsigned char* data, size_t len)
|
||||
{
|
||||
const unsigned char* end = data + len;
|
||||
size_t bufsize = bytes % 64;
|
||||
if (bufsize && bufsize + len >= 64) {
|
||||
// Fill the buffer, and process it.
|
||||
memcpy(buf + bufsize, data, 64 - bufsize);
|
||||
bytes += 64 - bufsize;
|
||||
data += 64 - bufsize;
|
||||
Transform(s, buf, 1);
|
||||
bufsize = 0;
|
||||
}
|
||||
if (end - data >= 64) {
|
||||
size_t blocks = (end - data) / 64;
|
||||
Transform(s, data, blocks);
|
||||
data += 64 * blocks;
|
||||
bytes += 64 * blocks;
|
||||
}
|
||||
if (end > data) {
|
||||
// Fill the buffer with what remains.
|
||||
memcpy(buf + bufsize, data, end - data);
|
||||
bytes += end - data;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
void CSHA256::Finalize(unsigned char hash[OUTPUT_SIZE])
|
||||
{
|
||||
static const unsigned char pad[64] = { 0x80 };
|
||||
unsigned char sizedesc[8];
|
||||
WriteBE64(sizedesc, bytes << 3);
|
||||
Write(pad, 1 + ((119 - (bytes % 64)) % 64));
|
||||
Write(sizedesc, 8);
|
||||
WriteBE32(hash, s[0]);
|
||||
WriteBE32(hash + 4, s[1]);
|
||||
WriteBE32(hash + 8, s[2]);
|
||||
WriteBE32(hash + 12, s[3]);
|
||||
WriteBE32(hash + 16, s[4]);
|
||||
WriteBE32(hash + 20, s[5]);
|
||||
WriteBE32(hash + 24, s[6]);
|
||||
WriteBE32(hash + 28, s[7]);
|
||||
}
|
||||
|
||||
CSHA256& CSHA256::Reset()
|
||||
{
|
||||
bytes = 0;
|
||||
sha256::Initialize(s);
|
||||
return *this;
|
||||
}
|
||||
|
||||
void SHA256D64(unsigned char* out, const unsigned char* in, size_t blocks)
|
||||
{
|
||||
if (TransformD64_8way) {
|
||||
while (blocks >= 8) {
|
||||
TransformD64_8way(out, in);
|
||||
out += 256;
|
||||
in += 512;
|
||||
blocks -= 8;
|
||||
}
|
||||
}
|
||||
if (TransformD64_4way) {
|
||||
while (blocks >= 4) {
|
||||
TransformD64_4way(out, in);
|
||||
out += 128;
|
||||
in += 256;
|
||||
blocks -= 4;
|
||||
}
|
||||
}
|
||||
if (TransformD64_2way) {
|
||||
while (blocks >= 2) {
|
||||
TransformD64_2way(out, in);
|
||||
out += 64;
|
||||
in += 128;
|
||||
blocks -= 2;
|
||||
}
|
||||
}
|
||||
while (blocks) {
|
||||
TransformD64(out, in);
|
||||
out += 32;
|
||||
in += 64;
|
||||
--blocks;
|
||||
}
|
||||
}
|
||||
41
src/crypto/bitcoin/sha256.h
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
// Copyright (c) 2014-2018 The Bitcoin Core developers
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#ifndef BITCOIN_CRYPTO_SHA256_H
|
||||
#define BITCOIN_CRYPTO_SHA256_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string>
|
||||
|
||||
/** A hasher class for SHA-256. */
|
||||
class CSHA256
|
||||
{
|
||||
private:
|
||||
uint32_t s[8];
|
||||
unsigned char buf[64];
|
||||
uint64_t bytes;
|
||||
|
||||
public:
|
||||
static const size_t OUTPUT_SIZE = 32;
|
||||
|
||||
CSHA256();
|
||||
CSHA256& Write(const unsigned char* data, size_t len);
|
||||
void Finalize(unsigned char hash[OUTPUT_SIZE]);
|
||||
CSHA256& Reset();
|
||||
};
|
||||
|
||||
/** Autodetect the best available SHA256 implementation.
|
||||
* Returns the name of the implementation.
|
||||
*/
|
||||
std::string SHA256AutoDetect();
|
||||
|
||||
/** Compute multiple double-SHA256's of 64-byte blobs.
|
||||
* output: pointer to a blocks*32 byte output buffer
|
||||
* input: pointer to a blocks*64 byte input buffer
|
||||
* blocks: the number of hashes to compute.
|
||||
*/
|
||||
void SHA256D64(unsigned char* output, const unsigned char* input, size_t blocks);
|
||||
|
||||
#endif // BITCOIN_CRYPTO_SHA256_H
|
||||
27
src/crypto/bitcoin/sha256_helper.h
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
// Copyright (c) 2020 The Zano developers
|
||||
// Distributed under the MIT/X11 software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "crypto/hash.h"
|
||||
#include "sha256.h"
|
||||
|
||||
|
||||
namespace crypto {
|
||||
|
||||
inline void sha256_hash(const void *data, std::size_t length, hash &h)
|
||||
{
|
||||
CSHA256 sh;
|
||||
sh.Write((const unsigned char*)data, length);
|
||||
sh.Finalize((unsigned char* )&h);
|
||||
}
|
||||
|
||||
inline hash sha256_hash(const void *data, std::size_t length)
|
||||
{
|
||||
hash h;
|
||||
sha256_hash(data, length, h);
|
||||
return h;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,8 +1,10 @@
|
|||
// Copyright (c) 2018-2021 Zano Project
|
||||
// Copyright (c) 2012-2013 The Cryptonote developers
|
||||
// Distributed under the MIT/X11 software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#pragma once
|
||||
#include <stddef.h> // size_t
|
||||
|
||||
/* From fe.h */
|
||||
|
||||
|
|
@ -104,17 +106,40 @@ void ge_scalarmult(ge_p2 *, const unsigned char *, const ge_p3 *);
|
|||
void ge_scalarmult_p3(ge_p3 *, const unsigned char *, const ge_p3 *);
|
||||
void ge_double_scalarmult_precomp_vartime(ge_p2 *, const unsigned char *, const ge_p3 *, const unsigned char *, const ge_dsmp);
|
||||
void ge_mul8(ge_p1p1 *, const ge_p2 *);
|
||||
void ge_mul8_p3(ge_p3 *, const ge_p3 *);
|
||||
void ge_fromfe_frombytes_vartime(ge_p2 *, const unsigned char *);
|
||||
void ge_p2_to_p3(ge_p3 *r, const ge_p2 *t);
|
||||
void ge_bytes_hash_to_ec(ge_p3 *, const void *, size_t);
|
||||
void ge_bytes_hash_to_ec_32(ge_p3 *, const unsigned char *);
|
||||
|
||||
void ge_p3_0(ge_p3 *h);
|
||||
void ge_sub(ge_p1p1 *, const ge_p3 *, const ge_cached *);
|
||||
void ge_double_scalarmult_base_vartime_p3(ge_p3 *r, const unsigned char *a, const ge_p3 *A, const unsigned char *b);
|
||||
void ge_scalarmult_vartime_p3(ge_p3 *r, const unsigned char *a, const ge_p3 *A);
|
||||
void ge_scalarmult_vartime_p3_v2(ge_p3 *r, const unsigned char *a, const ge_p3 *A);
|
||||
|
||||
extern const fe fe_ma2;
|
||||
extern const fe fe_ma;
|
||||
extern const fe fe_fffb1;
|
||||
extern const fe fe_fffb2;
|
||||
extern const fe fe_fffb3;
|
||||
extern const fe fe_fffb4;
|
||||
void ge_fromfe_frombytes_vartime(ge_p2 *, const unsigned char *);
|
||||
|
||||
void sc_0(unsigned char *);
|
||||
void sc_reduce32(unsigned char *);
|
||||
void sc_add(unsigned char *, const unsigned char *, const unsigned char *);
|
||||
void sc_sub(unsigned char *, const unsigned char *, const unsigned char *);
|
||||
void sc_mulsub(unsigned char *, const unsigned char *, const unsigned char *, const unsigned char *);
|
||||
void sc_mul(unsigned char *, const unsigned char *, const unsigned char *);
|
||||
void sc_muladd(unsigned char* s, const unsigned char* a, const unsigned char* b, const unsigned char* c);
|
||||
int sc_check(const unsigned char *);
|
||||
int sc_isnonzero(const unsigned char *); /* Doesn't normalize */
|
||||
void sc_invert(unsigned char*, const unsigned char*);
|
||||
|
||||
void fe_sq(fe h, const fe f);
|
||||
int fe_isnonzero(const fe f);
|
||||
int fe_cmp(const fe a, const fe b);
|
||||
void fe_mul(fe, const fe, const fe);
|
||||
void fe_frombytes(fe h, const unsigned char *s);
|
||||
void fe_invert(fe out, const fe z);
|
||||
void fe_tobytes(unsigned char *s, const fe h);
|
||||
|
|
|
|||
26
src/crypto/crypto-sugar.cpp
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
// Copyright (c) 2020-2021 Zano Project
|
||||
// Copyright (c) 2020-2021 sowle (val@zano.org, crypto.sowle@gmail.com)
|
||||
// Distributed under the MIT/X11 software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
//
|
||||
// Note: This file originates from tests/functional_tests/crypto_tests.cpp
|
||||
|
||||
#include "crypto-sugar.h"
|
||||
|
||||
namespace crypto
|
||||
{
|
||||
|
||||
const point_g_t c_point_G;
|
||||
|
||||
const scalar_t c_scalar_1 = { 1 };
|
||||
const scalar_t c_scalar_L = { 0x5812631a5cf5d3ed, 0x14def9dea2f79cd6, 0x0, 0x1000000000000000 };
|
||||
const scalar_t c_scalar_Lm1 = { 0x5812631a5cf5d3ec, 0x14def9dea2f79cd6, 0x0, 0x1000000000000000 };
|
||||
const scalar_t c_scalar_P = { 0xffffffffffffffed, 0xffffffffffffffff, 0xffffffffffffffff, 0x7fffffffffffffff };
|
||||
const scalar_t c_scalar_Pm1 = { 0xffffffffffffffec, 0xffffffffffffffff, 0xffffffffffffffff, 0x7fffffffffffffff };
|
||||
const scalar_t c_scalar_256m1 = { 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff };
|
||||
const scalar_t c_scalar_1div8 = { 0x6106e529e2dc2f79, 0x07d39db37d1cdad0, 0x0, 0x0600000000000000 };
|
||||
|
||||
const point_t c_point_H = { 0x05087c1f5b9b32d6, 0x00547595f445c3b5, 0x764df64578552f2a, 0x8a49a651e0e0da45 }; // == Hp(G), this is being checked in bpp_basics
|
||||
const point_t c_point_0 = point_t(point_t::tag_zero());
|
||||
|
||||
} // namespace crypto
|
||||
889
src/crypto/crypto-sugar.h
Normal file
|
|
@ -0,0 +1,889 @@
|
|||
// Copyright (c) 2020-2021 Zano Project
|
||||
// Copyright (c) 2020-2021 sowle (val@zano.org, crypto.sowle@gmail.com)
|
||||
// Distributed under the MIT/X11 software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
//
|
||||
// Note: This file originates from tests/functional_tests/crypto_tests.cpp
|
||||
#pragma once
|
||||
#include <string>
|
||||
#include <boost/multiprecision/cpp_int.hpp>
|
||||
#include "crypto.h"
|
||||
|
||||
namespace crypto
|
||||
{
|
||||
extern "C"
|
||||
{
|
||||
#include "crypto/crypto-ops.h"
|
||||
} // extern "C"
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Helpers
|
||||
//
|
||||
|
||||
template<class pod_t>
|
||||
std::string pod_to_hex_reversed(const pod_t &h)
|
||||
{
|
||||
constexpr char hexmap[] = "0123456789abcdef";
|
||||
const unsigned char* data = reinterpret_cast<const unsigned char*>(&h);
|
||||
size_t len = sizeof h;
|
||||
|
||||
std::string s(len * 2, ' ');
|
||||
for (size_t i = 0; i < len; ++i) {
|
||||
s[2 * i] = hexmap[data[len - 1 - i] >> 4];
|
||||
s[2 * i + 1] = hexmap[data[len - 1 - i] & 0x0F];
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
template<class pod_t>
|
||||
std::string pod_to_hex(const pod_t &h)
|
||||
{
|
||||
constexpr char hexmap[] = "0123456789abcdef";
|
||||
const unsigned char* data = reinterpret_cast<const unsigned char*>(&h);
|
||||
size_t len = sizeof h;
|
||||
|
||||
std::string s(len * 2, ' ');
|
||||
for (size_t i = 0; i < len; ++i) {
|
||||
s[2 * i] = hexmap[data[i] >> 4];
|
||||
s[2 * i + 1] = hexmap[data[i] & 0x0F];
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
template<class pod_t>
|
||||
std::string pod_to_hex_comma_separated_bytes(const pod_t &h)
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << std::hex << std::setfill('0');
|
||||
size_t len = sizeof h;
|
||||
const unsigned char* p = (const unsigned char*)&h;
|
||||
for (size_t i = 0; i < len; ++i)
|
||||
{
|
||||
ss << "0x" << std::setw(2) << static_cast<unsigned int>(p[i]);
|
||||
if (i + 1 != len)
|
||||
ss << ", ";
|
||||
}
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
template<class pod_t>
|
||||
std::string pod_to_hex_comma_separated_uint64(const pod_t &h)
|
||||
{
|
||||
static_assert((sizeof h) % 8 == 0, "size of h should be a multiple of 64 bit");
|
||||
size_t len = (sizeof h) / 8;
|
||||
std::stringstream ss;
|
||||
ss << std::hex << std::setfill('0');
|
||||
const uint64_t* p = (const uint64_t*)&h;
|
||||
for (size_t i = 0; i < len; ++i)
|
||||
{
|
||||
ss << "0x" << std::setw(16) << static_cast<uint64_t>(p[i]);
|
||||
if (i + 1 != len)
|
||||
ss << ", ";
|
||||
}
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
template<typename t_pod_type>
|
||||
bool parse_tpod_from_hex_string(const std::string& hex_str, t_pod_type& t_pod)
|
||||
{
|
||||
static const int16_t char_map[256] = { // 0-9, a-f, A-F is only allowed
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0x00 - 0x1F
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, // 0x20 - 0x3F
|
||||
-1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0x40 - 0x5F
|
||||
-1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0x60 - 0x7F
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0x80 - 0x9F
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0xA0 - 0xBF
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0xC0 - 0xDF
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; // 0xE0 - 0xFF
|
||||
|
||||
size_t pod_size = sizeof t_pod;
|
||||
uint8_t *p = reinterpret_cast<uint8_t*>(&t_pod);
|
||||
|
||||
if (hex_str.size() != 2 * pod_size)
|
||||
return false;
|
||||
|
||||
for (size_t i = 0; i < pod_size; ++i)
|
||||
{
|
||||
int16_t hi = char_map[static_cast<uint8_t>(hex_str[2 * i])];
|
||||
int16_t lo = char_map[static_cast<uint8_t>(hex_str[2 * i + 1])];
|
||||
if (hi < 0 || lo < 0)
|
||||
{
|
||||
// invalid characters in hex_str
|
||||
memset(p, 0, pod_size);
|
||||
return false;
|
||||
}
|
||||
p[i] = static_cast<uint8_t>(hi * 16 + lo); // write byte to pod
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
template<typename t_pod_type>
|
||||
t_pod_type parse_tpod_from_hex_string(const std::string& hex_str)
|
||||
{
|
||||
t_pod_type t_pod = AUTO_VAL_INIT(t_pod);
|
||||
parse_tpod_from_hex_string(hex_str, t_pod);
|
||||
return t_pod;
|
||||
}
|
||||
|
||||
//
|
||||
// scalar_t - holds a 256-bit scalar, normally in [0..L-1]
|
||||
//
|
||||
struct alignas(32) scalar_t
|
||||
{
|
||||
union
|
||||
{
|
||||
uint64_t m_u64[4];
|
||||
unsigned char m_s[32];
|
||||
};
|
||||
|
||||
scalar_t()
|
||||
{}
|
||||
|
||||
// won't check scalar range validity (< L)
|
||||
scalar_t(uint64_t a0, uint64_t a1, uint64_t a2, uint64_t a3)
|
||||
{
|
||||
m_u64[0] = a0;
|
||||
m_u64[1] = a1;
|
||||
m_u64[2] = a2;
|
||||
m_u64[3] = a3;
|
||||
}
|
||||
|
||||
// won't check scalar range validity (< L)
|
||||
scalar_t(const unsigned char(&v)[32])
|
||||
{
|
||||
memcpy(m_s, v, 32);
|
||||
}
|
||||
|
||||
// won't check secret key validity (sk < L)
|
||||
scalar_t(const crypto::secret_key& sk)
|
||||
{
|
||||
from_secret_key(sk);
|
||||
}
|
||||
|
||||
// copy data and reduce
|
||||
scalar_t(const crypto::hash& hash)
|
||||
{
|
||||
m_u64[0] = ((uint64_t*)&hash)[0];
|
||||
m_u64[1] = ((uint64_t*)&hash)[1];
|
||||
m_u64[2] = ((uint64_t*)&hash)[2];
|
||||
m_u64[3] = ((uint64_t*)&hash)[3];
|
||||
sc_reduce32(&m_s[0]);
|
||||
}
|
||||
|
||||
scalar_t(uint64_t v)
|
||||
{
|
||||
zero();
|
||||
m_u64[0] = v;
|
||||
// do not need to call reduce as 2^64 < L
|
||||
}
|
||||
|
||||
// copy at most 256 bits (32 bytes) and reduce
|
||||
template<typename T>
|
||||
explicit scalar_t(const boost::multiprecision::number<T>& bigint)
|
||||
{
|
||||
zero();
|
||||
unsigned int bytes_to_copy = bigint.backend().size() * bigint.backend().limb_bits / 8;
|
||||
if (bytes_to_copy > sizeof *this)
|
||||
bytes_to_copy = sizeof *this;
|
||||
memcpy(&m_s[0], bigint.backend().limbs(), bytes_to_copy);
|
||||
sc_reduce32(&m_s[0]);
|
||||
}
|
||||
|
||||
unsigned char* data()
|
||||
{
|
||||
return &m_s[0];
|
||||
}
|
||||
|
||||
const unsigned char* data() const
|
||||
{
|
||||
return &m_s[0];
|
||||
}
|
||||
|
||||
crypto::secret_key &as_secret_key()
|
||||
{
|
||||
return *(crypto::secret_key*)&m_s[0];
|
||||
}
|
||||
|
||||
const crypto::secret_key& as_secret_key() const
|
||||
{
|
||||
return *(const crypto::secret_key*)&m_s[0];
|
||||
}
|
||||
|
||||
operator crypto::secret_key() const
|
||||
{
|
||||
crypto::secret_key result;
|
||||
memcpy(result.data, &m_s, sizeof result.data);
|
||||
return result;
|
||||
}
|
||||
|
||||
void from_secret_key(const crypto::secret_key& sk)
|
||||
{
|
||||
uint64_t *p_sk64 = (uint64_t*)&sk;
|
||||
m_u64[0] = p_sk64[0];
|
||||
m_u64[1] = p_sk64[1];
|
||||
m_u64[2] = p_sk64[2];
|
||||
m_u64[3] = p_sk64[3];
|
||||
// assuming secret key is correct (< L), so we don't need to call reduce here
|
||||
}
|
||||
|
||||
void zero()
|
||||
{
|
||||
m_u64[0] = 0;
|
||||
m_u64[1] = 0;
|
||||
m_u64[2] = 0;
|
||||
m_u64[3] = 0;
|
||||
}
|
||||
|
||||
// genrate 0 <= x < L
|
||||
static scalar_t random()
|
||||
{
|
||||
scalar_t result;
|
||||
result.make_random();
|
||||
return result;
|
||||
}
|
||||
|
||||
// genrate 0 <= x < L
|
||||
void make_random()
|
||||
{
|
||||
unsigned char tmp[64];
|
||||
crypto::generate_random_bytes(64, tmp);
|
||||
sc_reduce(tmp);
|
||||
memcpy(&m_s, tmp, sizeof m_s);
|
||||
|
||||
/* // for tests
|
||||
int x[8] = { rand() };
|
||||
crypto::cn_fast_hash(&x, sizeof x, *(crypto::hash*)this);
|
||||
sc_reduce32(m_s);
|
||||
*/
|
||||
}
|
||||
|
||||
bool is_zero() const
|
||||
{
|
||||
return sc_isnonzero(&m_s[0]) == 0;
|
||||
}
|
||||
|
||||
bool is_reduced() const
|
||||
{
|
||||
return sc_check(&m_s[0]) == 0;
|
||||
}
|
||||
|
||||
scalar_t operator+(const scalar_t& v) const
|
||||
{
|
||||
scalar_t result;
|
||||
sc_add(&result.m_s[0], &m_s[0], &v.m_s[0]);
|
||||
return result;
|
||||
}
|
||||
|
||||
scalar_t& operator+=(const scalar_t& v)
|
||||
{
|
||||
sc_add(&m_s[0], &m_s[0], &v.m_s[0]);
|
||||
return *this;
|
||||
}
|
||||
|
||||
scalar_t operator-(const scalar_t& v) const
|
||||
{
|
||||
scalar_t result;
|
||||
sc_sub(&result.m_s[0], &m_s[0], &v.m_s[0]);
|
||||
return result;
|
||||
}
|
||||
|
||||
scalar_t& operator-=(const scalar_t& v)
|
||||
{
|
||||
sc_sub(&m_s[0], &m_s[0], &v.m_s[0]);
|
||||
return *this;
|
||||
}
|
||||
|
||||
scalar_t operator*(const scalar_t& v) const
|
||||
{
|
||||
scalar_t result;
|
||||
sc_mul(result.m_s, m_s, v.m_s);
|
||||
return result;
|
||||
}
|
||||
|
||||
scalar_t& operator*=(const scalar_t& v)
|
||||
{
|
||||
sc_mul(m_s, m_s, v.m_s);
|
||||
return *this;
|
||||
}
|
||||
|
||||
/*
|
||||
I think it has bad symantic (operator-like), consider rename/reimplement -- sowle
|
||||
*/
|
||||
// returns this * b + c
|
||||
scalar_t muladd(const scalar_t& b, const scalar_t& c) const
|
||||
{
|
||||
scalar_t result;
|
||||
sc_muladd(result.m_s, m_s, b.m_s, c.m_s);
|
||||
return result;
|
||||
}
|
||||
|
||||
// returns this = a * b + c
|
||||
scalar_t& assign_muladd(const scalar_t& a, const scalar_t& b, const scalar_t& c)
|
||||
{
|
||||
sc_muladd(m_s, a.m_s, b.m_s, c.m_s);
|
||||
return *this;
|
||||
}
|
||||
|
||||
scalar_t reciprocal() const
|
||||
{
|
||||
scalar_t result;
|
||||
sc_invert(result.m_s, m_s);
|
||||
return result;
|
||||
}
|
||||
|
||||
scalar_t operator/(const scalar_t& v) const
|
||||
{
|
||||
return operator*(v.reciprocal());
|
||||
}
|
||||
|
||||
scalar_t& operator/=(const scalar_t& v)
|
||||
{
|
||||
scalar_t reciprocal;
|
||||
sc_invert(&reciprocal.m_s[0], &v.m_s[0]);
|
||||
sc_mul(&m_s[0], &m_s[0], &reciprocal.m_s[0]);
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool operator==(const scalar_t& rhs) const
|
||||
{
|
||||
return
|
||||
m_u64[0] == rhs.m_u64[0] &&
|
||||
m_u64[1] == rhs.m_u64[1] &&
|
||||
m_u64[2] == rhs.m_u64[2] &&
|
||||
m_u64[3] == rhs.m_u64[3];
|
||||
}
|
||||
|
||||
bool operator!=(const scalar_t& rhs) const
|
||||
{
|
||||
return
|
||||
m_u64[0] != rhs.m_u64[0] ||
|
||||
m_u64[1] != rhs.m_u64[1] ||
|
||||
m_u64[2] != rhs.m_u64[2] ||
|
||||
m_u64[3] != rhs.m_u64[3];
|
||||
}
|
||||
|
||||
bool operator<(const scalar_t& rhs) const
|
||||
{
|
||||
if (m_u64[3] < rhs.m_u64[3]) return true;
|
||||
if (m_u64[3] > rhs.m_u64[3]) return false;
|
||||
if (m_u64[2] < rhs.m_u64[2]) return true;
|
||||
if (m_u64[2] > rhs.m_u64[2]) return false;
|
||||
if (m_u64[1] < rhs.m_u64[1]) return true;
|
||||
if (m_u64[1] > rhs.m_u64[1]) return false;
|
||||
if (m_u64[0] < rhs.m_u64[0]) return true;
|
||||
if (m_u64[0] > rhs.m_u64[0]) return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool operator>(const scalar_t& rhs) const
|
||||
{
|
||||
if (m_u64[3] < rhs.m_u64[3]) return false;
|
||||
if (m_u64[3] > rhs.m_u64[3]) return true;
|
||||
if (m_u64[2] < rhs.m_u64[2]) return false;
|
||||
if (m_u64[2] > rhs.m_u64[2]) return true;
|
||||
if (m_u64[1] < rhs.m_u64[1]) return false;
|
||||
if (m_u64[1] > rhs.m_u64[1]) return true;
|
||||
if (m_u64[0] < rhs.m_u64[0]) return false;
|
||||
if (m_u64[0] > rhs.m_u64[0]) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
friend std::ostream& operator<<(std::ostream& ss, const scalar_t &v)
|
||||
{
|
||||
return ss << pod_to_hex(v);
|
||||
}
|
||||
|
||||
std::string to_string_as_hex_number() const
|
||||
{
|
||||
return pod_to_hex_reversed(*this);
|
||||
}
|
||||
|
||||
std::string to_string_as_secret_key() const
|
||||
{
|
||||
return pod_to_hex(*this);
|
||||
}
|
||||
|
||||
template<typename MP_type>
|
||||
MP_type as_boost_mp_type() const
|
||||
{
|
||||
MP_type result = 0;
|
||||
static_assert(sizeof result >= sizeof *this, "size missmatch"); // to avoid using types less than uint256_t
|
||||
unsigned int sz = sizeof *this / sizeof(boost::multiprecision::limb_type);
|
||||
result.backend().resize(sz, sz);
|
||||
memcpy(result.backend().limbs(), &m_s[0], sizeof *this);
|
||||
result.backend().normalize();
|
||||
return result;
|
||||
}
|
||||
|
||||
}; // struct scalar_t
|
||||
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
struct point_t
|
||||
{
|
||||
struct tag_zero {};
|
||||
|
||||
// A point(x, y) is represented in extended homogeneous coordinates (X, Y, Z, T)
|
||||
// with x = X / Z, y = Y / Z, x * y = T / Z.
|
||||
ge_p3 m_p3;
|
||||
|
||||
point_t()
|
||||
{
|
||||
}
|
||||
|
||||
explicit point_t(const crypto::public_key& pk)
|
||||
{
|
||||
if (!from_public_key(pk))
|
||||
zero();
|
||||
}
|
||||
|
||||
point_t(const unsigned char(&v)[32])
|
||||
{
|
||||
static_assert(sizeof(crypto::public_key) == sizeof v, "size missmatch");
|
||||
if (!from_public_key(*(const crypto::public_key*)v))
|
||||
zero();
|
||||
}
|
||||
|
||||
point_t(const uint64_t(&v)[4])
|
||||
{
|
||||
static_assert(sizeof(crypto::public_key) == sizeof v, "size missmatch");
|
||||
if (!from_public_key(*(const crypto::public_key*)v))
|
||||
zero();
|
||||
}
|
||||
|
||||
point_t(uint64_t a0, uint64_t a1, uint64_t a2, uint64_t a3)
|
||||
{
|
||||
crypto::public_key pk;
|
||||
((uint64_t*)&pk)[0] = a0;
|
||||
((uint64_t*)&pk)[1] = a1;
|
||||
((uint64_t*)&pk)[2] = a2;
|
||||
((uint64_t*)&pk)[3] = a3;
|
||||
|
||||
if (!from_public_key(pk))
|
||||
zero();
|
||||
}
|
||||
|
||||
explicit point_t(tag_zero&&)
|
||||
{
|
||||
zero();
|
||||
}
|
||||
|
||||
void zero()
|
||||
{
|
||||
ge_p3_0(&m_p3);
|
||||
}
|
||||
|
||||
bool is_zero() const
|
||||
{
|
||||
// (0, 1) ~ (0, z, z, 0)
|
||||
return fe_isnonzero(m_p3.X) * fe_cmp(m_p3.Y, m_p3.Z) == 0;
|
||||
}
|
||||
|
||||
bool from_public_key(const crypto::public_key& pk)
|
||||
{
|
||||
return ge_frombytes_vartime(&m_p3, reinterpret_cast<const unsigned char*>(&pk)) == 0;
|
||||
}
|
||||
|
||||
bool from_key_image(const crypto::key_image& ki)
|
||||
{
|
||||
return ge_frombytes_vartime(&m_p3, reinterpret_cast<const unsigned char*>(&ki)) == 0;
|
||||
}
|
||||
|
||||
bool from_string(const std::string& str)
|
||||
{
|
||||
crypto::public_key pk;
|
||||
if (!parse_tpod_from_hex_string(str, pk))
|
||||
return false;
|
||||
return from_public_key(pk);
|
||||
}
|
||||
|
||||
crypto::public_key to_public_key() const
|
||||
{
|
||||
crypto::public_key result;
|
||||
ge_p3_tobytes((unsigned char*)&result, &m_p3);
|
||||
return result;
|
||||
}
|
||||
|
||||
void to_public_key(crypto::public_key& result) const
|
||||
{
|
||||
ge_p3_tobytes((unsigned char*)&result, &m_p3);
|
||||
}
|
||||
|
||||
crypto::key_image to_key_image() const
|
||||
{
|
||||
crypto::key_image result;
|
||||
ge_p3_tobytes((unsigned char*)&result, &m_p3);
|
||||
return result;
|
||||
}
|
||||
|
||||
point_t operator+(const point_t& rhs) const
|
||||
{
|
||||
point_t result;
|
||||
ge_cached rhs_c;
|
||||
ge_p1p1 t;
|
||||
ge_p3_to_cached(&rhs_c, &rhs.m_p3);
|
||||
ge_add(&t, &m_p3, &rhs_c);
|
||||
ge_p1p1_to_p3(&result.m_p3, &t);
|
||||
return result;
|
||||
}
|
||||
|
||||
point_t& operator+=(const point_t& rhs)
|
||||
{
|
||||
ge_cached rhs_c;
|
||||
ge_p1p1 t;
|
||||
ge_p3_to_cached(&rhs_c, &rhs.m_p3);
|
||||
ge_add(&t, &m_p3, &rhs_c);
|
||||
ge_p1p1_to_p3(&m_p3, &t);
|
||||
return *this;
|
||||
}
|
||||
|
||||
point_t operator-(const point_t& rhs) const
|
||||
{
|
||||
point_t result;
|
||||
ge_cached rhs_c;
|
||||
ge_p1p1 t;
|
||||
ge_p3_to_cached(&rhs_c, &rhs.m_p3);
|
||||
ge_sub(&t, &m_p3, &rhs_c);
|
||||
ge_p1p1_to_p3(&result.m_p3, &t);
|
||||
return result;
|
||||
}
|
||||
|
||||
point_t& operator-=(const point_t& rhs)
|
||||
{
|
||||
ge_cached rhs_c;
|
||||
ge_p1p1 t;
|
||||
ge_p3_to_cached(&rhs_c, &rhs.m_p3);
|
||||
ge_sub(&t, &m_p3, &rhs_c);
|
||||
ge_p1p1_to_p3(&m_p3, &t);
|
||||
return *this;
|
||||
}
|
||||
|
||||
friend point_t operator*(const scalar_t& lhs, const point_t& rhs)
|
||||
{
|
||||
point_t result;
|
||||
ge_scalarmult_p3(&result.m_p3, lhs.m_s, &rhs.m_p3);
|
||||
return result;
|
||||
}
|
||||
|
||||
point_t& operator*=(const scalar_t& rhs)
|
||||
{
|
||||
// TODO: ge_scalarmult_vartime_p3
|
||||
ge_scalarmult_p3(&m_p3, rhs.m_s, &m_p3);
|
||||
return *this;
|
||||
}
|
||||
|
||||
friend point_t operator/(const point_t& lhs, const scalar_t& rhs)
|
||||
{
|
||||
point_t result;
|
||||
scalar_t reciprocal;
|
||||
sc_invert(&reciprocal.m_s[0], &rhs.m_s[0]);
|
||||
ge_scalarmult_p3(&result.m_p3, &reciprocal.m_s[0], &lhs.m_p3);
|
||||
return result;
|
||||
}
|
||||
|
||||
point_t& modify_mul8()
|
||||
{
|
||||
ge_mul8_p3(&m_p3, &m_p3);
|
||||
return *this;
|
||||
}
|
||||
|
||||
// returns a * this + G
|
||||
point_t mul_plus_G(const scalar_t& a) const
|
||||
{
|
||||
static const unsigned char one[32] = { 1 };
|
||||
static_assert(sizeof one == sizeof(crypto::ec_scalar), "size missmatch");
|
||||
|
||||
point_t result;
|
||||
ge_double_scalarmult_base_vartime_p3(&result.m_p3, &a.m_s[0], &m_p3, &one[0]);
|
||||
return result;
|
||||
}
|
||||
|
||||
// returns a * this + b * G
|
||||
point_t mul_plus_G(const scalar_t& a, const scalar_t& b) const
|
||||
{
|
||||
point_t result;
|
||||
ge_double_scalarmult_base_vartime_p3(&result.m_p3, &a.m_s[0], &m_p3, &b.m_s[0]);
|
||||
return result;
|
||||
}
|
||||
|
||||
// *this = a * A + b * G
|
||||
void assign_mul_plus_G(const scalar_t& a, const point_t& A, const scalar_t& b)
|
||||
{
|
||||
ge_double_scalarmult_base_vartime_p3(&m_p3, &a.m_s[0], &A.m_p3, &b.m_s[0]);
|
||||
}
|
||||
|
||||
friend bool operator==(const point_t& lhs, const point_t& rhs)
|
||||
{
|
||||
// convert to xy form, then compare components (because (x, y, z, t) representation is not unique)
|
||||
fe lrecip, lx, ly;
|
||||
fe rrecip, rx, ry;
|
||||
|
||||
fe_invert(lrecip, lhs.m_p3.Z);
|
||||
fe_invert(rrecip, rhs.m_p3.Z);
|
||||
|
||||
fe_mul(lx, lhs.m_p3.X, lrecip);
|
||||
fe_mul(rx, rhs.m_p3.X, rrecip);
|
||||
if (memcmp(&lx, &rx, sizeof lx) != 0)
|
||||
return false;
|
||||
|
||||
fe_mul(ly, lhs.m_p3.Y, lrecip);
|
||||
fe_mul(ry, rhs.m_p3.Y, rrecip);
|
||||
if (memcmp(&ly, &ry, sizeof ly) != 0)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
friend std::ostream& operator<<(std::ostream& ss, const point_t &v)
|
||||
{
|
||||
crypto::public_key pk = v.to_public_key();
|
||||
return ss << pod_to_hex(pk);
|
||||
}
|
||||
|
||||
operator std::string() const
|
||||
{
|
||||
crypto::public_key pk = to_public_key();
|
||||
return pod_to_hex(pk);
|
||||
}
|
||||
|
||||
std::string to_string() const
|
||||
{
|
||||
crypto::public_key pk = to_public_key();
|
||||
return pod_to_hex(pk);
|
||||
}
|
||||
|
||||
std::string to_hex_comma_separated_bytes_str() const
|
||||
{
|
||||
crypto::public_key pk = to_public_key();
|
||||
return pod_to_hex_comma_separated_bytes(pk);
|
||||
}
|
||||
|
||||
std::string to_hex_comma_separated_uint64_str() const
|
||||
{
|
||||
crypto::public_key pk = to_public_key();
|
||||
return pod_to_hex_comma_separated_uint64(pk);
|
||||
}
|
||||
|
||||
}; // struct point_t
|
||||
|
||||
|
||||
//
|
||||
// point_g_t -- special type for curve's base point
|
||||
//
|
||||
struct point_g_t : public point_t
|
||||
{
|
||||
point_g_t()
|
||||
{
|
||||
scalar_t one(1);
|
||||
ge_scalarmult_base(&m_p3, &one.m_s[0]);
|
||||
}
|
||||
|
||||
friend point_t operator*(const scalar_t& lhs, const point_g_t&)
|
||||
{
|
||||
point_t result;
|
||||
ge_scalarmult_base(&result.m_p3, &lhs.m_s[0]);
|
||||
return result;
|
||||
}
|
||||
|
||||
friend point_t operator/(const point_g_t&, const scalar_t& rhs)
|
||||
{
|
||||
point_t result;
|
||||
scalar_t reciprocal;
|
||||
sc_invert(&reciprocal.m_s[0], &rhs.m_s[0]);
|
||||
ge_scalarmult_base(&result.m_p3, &reciprocal.m_s[0]);
|
||||
return result;
|
||||
}
|
||||
|
||||
static_assert(sizeof(crypto::public_key) == 32, "size error");
|
||||
|
||||
}; // struct point_g_t
|
||||
|
||||
|
||||
//
|
||||
// Global constants
|
||||
//
|
||||
|
||||
extern const point_g_t c_point_G;
|
||||
|
||||
extern const scalar_t c_scalar_1;
|
||||
extern const scalar_t c_scalar_L;
|
||||
extern const scalar_t c_scalar_Lm1;
|
||||
extern const scalar_t c_scalar_P;
|
||||
extern const scalar_t c_scalar_Pm1;
|
||||
extern const scalar_t c_scalar_256m1;
|
||||
extern const scalar_t c_scalar_1div8;
|
||||
|
||||
extern const point_t c_point_H;
|
||||
extern const point_t c_point_0;
|
||||
|
||||
//
|
||||
// hash functions' helper
|
||||
//
|
||||
struct hash_helper_t
|
||||
{
|
||||
static scalar_t hs(const scalar_t& s)
|
||||
{
|
||||
return scalar_t(crypto::cn_fast_hash(s.data(), sizeof s)); // will reduce mod L
|
||||
}
|
||||
|
||||
static scalar_t hs(const void* data, size_t size)
|
||||
{
|
||||
return scalar_t(crypto::cn_fast_hash(data, size)); // will reduce mod L
|
||||
}
|
||||
|
||||
static scalar_t hs(const std::string& str)
|
||||
{
|
||||
return scalar_t(crypto::cn_fast_hash(str.c_str(), str.size())); // will reduce mod L
|
||||
}
|
||||
|
||||
struct hs_t
|
||||
{
|
||||
hs_t()
|
||||
{
|
||||
static_assert(sizeof(scalar_t) == sizeof(crypto::public_key), "unexpected size of data");
|
||||
}
|
||||
|
||||
void reserve(size_t elements_count)
|
||||
{
|
||||
m_elements.reserve(elements_count);
|
||||
}
|
||||
|
||||
void resize(size_t elements_count)
|
||||
{
|
||||
m_elements.resize(elements_count);
|
||||
}
|
||||
|
||||
void clear()
|
||||
{
|
||||
m_elements.clear();
|
||||
}
|
||||
|
||||
void add_scalar(const scalar_t& scalar)
|
||||
{
|
||||
m_elements.emplace_back(scalar);
|
||||
}
|
||||
|
||||
void add_point(const point_t& point)
|
||||
{
|
||||
m_elements.emplace_back(point.to_public_key());
|
||||
|
||||
// faster?
|
||||
/* static_assert(sizeof point.m_p3 == 5 * sizeof(item_t), "size missmatch");
|
||||
const item_t *p = (item_t*)&point.m_p3;
|
||||
m_elements.emplace_back(p[0]);
|
||||
m_elements.emplace_back(p[1]);
|
||||
m_elements.emplace_back(p[2]);
|
||||
m_elements.emplace_back(p[3]);
|
||||
m_elements.emplace_back(p[4]); */
|
||||
}
|
||||
|
||||
void add_pub_key(const crypto::public_key& pk)
|
||||
{
|
||||
m_elements.emplace_back(pk);
|
||||
}
|
||||
|
||||
scalar_t& access_scalar(size_t index)
|
||||
{
|
||||
return m_elements[index].scalar;
|
||||
}
|
||||
|
||||
public_key& access_public_key(size_t index)
|
||||
{
|
||||
return m_elements[index].pk;
|
||||
}
|
||||
|
||||
void add_points_array(const std::vector<point_t>& points_array)
|
||||
{
|
||||
for (size_t i = 0, size = points_array.size(); i < size; ++i)
|
||||
add_point(points_array[i]);
|
||||
}
|
||||
|
||||
void add_pub_keys_array(const std::vector<crypto::public_key>& pub_keys_array)
|
||||
{
|
||||
for (size_t i = 0, size = pub_keys_array.size(); i < size; ++i)
|
||||
m_elements.emplace_back(pub_keys_array[i]);
|
||||
}
|
||||
|
||||
void add_key_images_array(const std::vector<crypto::key_image>& key_image_array)
|
||||
{
|
||||
for (size_t i = 0, size = key_image_array.size(); i < size; ++i)
|
||||
m_elements.emplace_back(key_image_array[i]);
|
||||
}
|
||||
|
||||
scalar_t calc_hash(bool clear = true)
|
||||
{
|
||||
size_t data_size_bytes = m_elements.size() * sizeof(item_t);
|
||||
crypto::hash hash;
|
||||
crypto::cn_fast_hash(m_elements.data(), data_size_bytes, hash);
|
||||
if (clear)
|
||||
this->clear();
|
||||
return scalar_t(hash); // this will reduce to L
|
||||
}
|
||||
|
||||
union item_t
|
||||
{
|
||||
item_t() {}
|
||||
item_t(const scalar_t& scalar) : scalar(scalar) {}
|
||||
item_t(const crypto::public_key& pk) : pk(pk) {}
|
||||
item_t(const crypto::key_image& ki) : ki(ki) {}
|
||||
scalar_t scalar;
|
||||
crypto::public_key pk;
|
||||
crypto::key_image ki;
|
||||
};
|
||||
|
||||
std::vector<item_t> m_elements;
|
||||
};
|
||||
|
||||
static scalar_t hs(const scalar_t& s, const std::vector<point_t>& ps0, const std::vector<point_t>& ps1)
|
||||
{
|
||||
hs_t hs_calculator;
|
||||
hs_calculator.add_scalar(s);
|
||||
hs_calculator.add_points_array(ps0);
|
||||
hs_calculator.add_points_array(ps1);
|
||||
return hs_calculator.calc_hash();
|
||||
}
|
||||
|
||||
static scalar_t hs(const crypto::hash& s, const std::vector<crypto::public_key>& ps0, const std::vector<crypto::key_image>& ps1)
|
||||
{
|
||||
static_assert(sizeof(crypto::hash) == sizeof(scalar_t), "size missmatch");
|
||||
hs_t hs_calculator;
|
||||
hs_calculator.add_scalar(*reinterpret_cast<const scalar_t*>(&s));
|
||||
hs_calculator.add_pub_keys_array(ps0);
|
||||
hs_calculator.add_key_images_array(ps1);
|
||||
return hs_calculator.calc_hash();
|
||||
}
|
||||
|
||||
static scalar_t hs(const std::vector<point_t>& ps0, const std::vector<point_t>& ps1)
|
||||
{
|
||||
hs_t hs_calculator;
|
||||
hs_calculator.add_points_array(ps0);
|
||||
hs_calculator.add_points_array(ps1);
|
||||
return hs_calculator.calc_hash();
|
||||
}
|
||||
|
||||
static point_t hp(const point_t& p)
|
||||
{
|
||||
point_t result;
|
||||
crypto::public_key pk = p.to_public_key();
|
||||
|
||||
ge_bytes_hash_to_ec_32(&result.m_p3, (const unsigned char*)&pk);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static point_t hp(const crypto::public_key& p)
|
||||
{
|
||||
point_t result;
|
||||
ge_bytes_hash_to_ec_32(&result.m_p3, (const unsigned char*)&p);
|
||||
return result;
|
||||
}
|
||||
}; // hash_helper_t struct
|
||||
|
||||
|
||||
} // namespace crypto
|
||||
|
|
@ -303,11 +303,13 @@ namespace crypto {
|
|||
|
||||
PUSH_VS_WARNINGS
|
||||
DISABLE_VS_WARNINGS(4200)
|
||||
struct rs_comm_entry
|
||||
{
|
||||
ec_point a, b;
|
||||
};
|
||||
struct rs_comm {
|
||||
struct rs_comm_entry
|
||||
{
|
||||
ec_point a, b;
|
||||
};
|
||||
|
||||
struct rs_comm
|
||||
{
|
||||
hash h;
|
||||
struct rs_comm_entry ab[];
|
||||
};
|
||||
|
|
@ -411,10 +413,10 @@ POP_VS_WARNINGS
|
|||
if (ge_frombytes_vartime(&tmp3, &*pubs[i]) != 0) {
|
||||
return false;
|
||||
}
|
||||
ge_double_scalarmult_base_vartime(&tmp2, &sig[i].c, &tmp3, &sig[i].r);
|
||||
ge_double_scalarmult_base_vartime(&tmp2, &sig[i].c, &tmp3, &sig[i].r); // L_i = r_i * G + c_i * P_i
|
||||
ge_tobytes(&buf->ab[i].a, &tmp2);
|
||||
hash_to_ec(*pubs[i], tmp3);
|
||||
ge_double_scalarmult_precomp_vartime(&tmp2, &sig[i].r, &tmp3, &sig[i].c, image_pre);
|
||||
ge_double_scalarmult_precomp_vartime(&tmp2, &sig[i].r, &tmp3, &sig[i].c, image_pre); // R_i = r_i * Hp(P_i) + c_i * I
|
||||
ge_tobytes(&buf->ab[i].b, &tmp2);
|
||||
sc_add(&sum, &sum, &sig[i].c);
|
||||
}
|
||||
|
|
@ -422,4 +424,5 @@ POP_VS_WARNINGS
|
|||
sc_sub(&h, &h, &sum);
|
||||
return sc_isnonzero(&h) == 0;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace crypto
|
||||
|
|
|
|||
|
|
@ -288,7 +288,7 @@ namespace crypto {
|
|||
uint8_t* const m_p_data;
|
||||
size_t m_data_used;
|
||||
bool m_ready;
|
||||
};
|
||||
}; // class stream_cn_hash
|
||||
|
||||
} // namespace crypto
|
||||
|
||||
|
|
|
|||
|
|
@ -52,8 +52,8 @@ void hash_process(union hash_state *state, const uint8_t *buf, size_t count);
|
|||
#define HASH_DATA_AREA 136
|
||||
|
||||
|
||||
void cn_fast_hash_old(const void *data, size_t length, char *hash);
|
||||
void cn_fast_hash(const void *data, size_t length, char *hash);
|
||||
//void cn_slow_hash(const void *data, size_t length, char *hash);
|
||||
|
||||
void hash_extra_blake(const void *data, size_t length, char *hash);
|
||||
void hash_extra_groestl(const void *data, size_t length, char *hash);
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
// Copyright (c) 2020-2021 Zano project
|
||||
// Copyright (c) 2012-2013 The Cryptonote developers
|
||||
// Distributed under the MIT/X11 software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
|
@ -17,8 +18,14 @@ void hash_process(union hash_state *state, const uint8_t *buf, size_t count) {
|
|||
keccak1600(buf, (int)count, (uint8_t*)state);
|
||||
}
|
||||
|
||||
void cn_fast_hash(const void *data, size_t length, char *hash) {
|
||||
void cn_fast_hash_old(const void *data, size_t length, char *hash)
|
||||
{
|
||||
union hash_state state;
|
||||
hash_process(&state, data, length);
|
||||
memcpy(hash, &state, HASH_SIZE);
|
||||
}
|
||||
|
||||
void cn_fast_hash(const void *data, size_t length, char *hash)
|
||||
{
|
||||
keccak(data, (int)length, (uint8_t*)hash, HASH_SIZE);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -226,6 +226,11 @@ namespace currency
|
|||
return true;
|
||||
}
|
||||
//-----------------------------------------------------------------
|
||||
bool account_base::is_seed_tracking(const std::string& seed_phrase)
|
||||
{
|
||||
return seed_phrase.find(':') != std::string::npos;
|
||||
}
|
||||
//-----------------------------------------------------------------
|
||||
bool account_base::is_seed_password_protected(const std::string& seed_phrase, bool& is_password_protected)
|
||||
{
|
||||
//cut the last timestamp word from restore_dats
|
||||
|
|
@ -305,7 +310,7 @@ namespace currency
|
|||
account_public_address ad = AUTO_VAL_INIT(ad);
|
||||
if (!get_account_address_from_str(ad, str))
|
||||
{
|
||||
LOG_ERROR("cannot parse address from string: " << str);
|
||||
CHECK_AND_ASSERT_THROW_MES(false, "cannot parse address from string: " << str);
|
||||
}
|
||||
return ad;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -79,6 +79,7 @@ namespace currency
|
|||
static std::string vector_of_chars_to_string(const std::vector<unsigned char>& v) { return std::string(v.begin(), v.end()); }
|
||||
static std::vector<unsigned char> string_to_vector_of_chars(const std::string& v) { return std::vector<unsigned char>(v.begin(), v.end()); }
|
||||
static bool is_seed_password_protected(const std::string& seed_phrase, bool& is_password_protected);
|
||||
static bool is_seed_tracking(const std::string& seed_phrase);
|
||||
|
||||
BEGIN_KV_SERIALIZE_MAP()
|
||||
KV_SERIALIZE(m_keys)
|
||||
|
|
|
|||
|
|
@ -133,6 +133,12 @@ namespace currency
|
|||
}
|
||||
};
|
||||
|
||||
struct scan_for_keys_context
|
||||
{
|
||||
bool htlc_is_expired;
|
||||
std::list<txout_htlc> htlc_outs;
|
||||
};
|
||||
|
||||
// == Output indexes local lookup table conception ==
|
||||
// Main chain gindex table (outputs_container) contains data which is valid only for the most recent block.
|
||||
// Thus it can't be used to get output's global index for any arbitrary height because there's no height data.
|
||||
|
|
@ -144,7 +150,9 @@ namespace currency
|
|||
// retrieve gindex from local_gindex_lookup_table # there are outputs having given amount after the given height
|
||||
// else:
|
||||
// retrieve gindex from main chain gindex table # not outputs having given amount are present after the given height
|
||||
//
|
||||
//
|
||||
|
||||
typedef boost::variant<crypto::public_key, txout_htlc> output_key_or_htlc_v;
|
||||
|
||||
struct alt_block_extended_info: public block_extended_info
|
||||
{
|
||||
|
|
@ -152,7 +160,7 @@ namespace currency
|
|||
std::map<uint64_t, uint64_t> gindex_lookup_table;
|
||||
|
||||
// {amount -> pub_keys} map of outputs' pub_keys appeared in this alt block ( index_in_vector == output_gindex - gindex_lookup_table[output_amount] )
|
||||
std::map<uint64_t, std::vector<crypto::public_key> > outputs_pub_keys;
|
||||
std::map<uint64_t, std::vector<output_key_or_htlc_v> > outputs_pub_keys;
|
||||
|
||||
//date added to alt chain storage
|
||||
uint64_t timestamp;
|
||||
|
|
@ -161,8 +169,7 @@ namespace currency
|
|||
transactions_map onboard_transactions;
|
||||
};
|
||||
typedef std::unordered_map<crypto::hash, alt_block_extended_info> alt_chain_container;
|
||||
//typedef std::list<alt_chain_container::iterator> alt_chain_type;
|
||||
typedef std::vector<alt_chain_container::iterator> alt_chain_type;
|
||||
typedef std::vector<alt_chain_container::iterator> alt_chain_type; // alternative subchain, front -> mainchain(split point), back -> alternative head
|
||||
|
||||
typedef std::unordered_map<crypto::hash, block_extended_info> blocks_ext_by_hash;
|
||||
|
||||
|
|
@ -230,9 +237,15 @@ namespace currency
|
|||
|
||||
|
||||
template<class visitor_t>
|
||||
bool scan_outputkeys_for_indexes(const transaction &validated_tx, const txin_to_key& tx_in_to_key, visitor_t& vis) { uint64_t stub = 0; return scan_outputkeys_for_indexes(validated_tx, tx_in_to_key, vis, stub); }
|
||||
bool scan_outputkeys_for_indexes(const transaction &validated_tx, const txin_to_key& tx_in_to_key, visitor_t& vis)
|
||||
{
|
||||
scan_for_keys_context cntx_stub = AUTO_VAL_INIT(cntx_stub);
|
||||
uint64_t stub = 0;
|
||||
return scan_outputkeys_for_indexes(validated_tx, tx_in_to_key, vis, stub, cntx_stub);
|
||||
}
|
||||
template<class visitor_t>
|
||||
bool scan_outputkeys_for_indexes(const transaction &validated_tx, const txin_to_key& tx_in_to_key, visitor_t& vis, uint64_t& max_related_block_height) const ;
|
||||
bool scan_outputkeys_for_indexes(const transaction &validated_tx, const txin_v& verified_input, visitor_t& vis, uint64_t& max_related_block_height, scan_for_keys_context& /*scan_context*/) const;
|
||||
|
||||
|
||||
uint64_t get_current_blockchain_size() const;
|
||||
uint64_t get_top_block_height() const;
|
||||
|
|
@ -273,13 +286,25 @@ namespace currency
|
|||
bool validate_tx_service_attachmens_in_services(const tx_service_attachment& a, size_t i, const transaction& tx)const;
|
||||
bool check_tx_input(const transaction& tx, size_t in_index, const txin_to_key& txin, const crypto::hash& tx_prefix_hash, const std::vector<crypto::signature>& sig, uint64_t& max_related_block_height, uint64_t& source_max_unlock_time_for_pos_coinbase)const;
|
||||
bool check_tx_input(const transaction& tx, size_t in_index, const txin_multisig& txin, const crypto::hash& tx_prefix_hash, const std::vector<crypto::signature>& sig, uint64_t& max_related_block_height)const;
|
||||
bool check_tx_input(const transaction& tx, size_t in_index, const txin_htlc& txin, const crypto::hash& tx_prefix_hash, const std::vector<crypto::signature>& sig, uint64_t& max_related_block_height)const;
|
||||
bool check_tx_inputs(const transaction& tx, const crypto::hash& tx_prefix_hash, uint64_t& max_used_block_height)const;
|
||||
bool check_tx_inputs(const transaction& tx, const crypto::hash& tx_prefix_hash) const;
|
||||
bool check_tx_inputs(const transaction& tx, const crypto::hash& tx_prefix_hash, uint64_t& max_used_block_height, crypto::hash& max_used_block_id)const;
|
||||
bool check_ms_input(const transaction& tx, size_t in_index, const txin_multisig& txin, const crypto::hash& tx_prefix_hash, const std::vector<crypto::signature>& sig, const transaction& source_tx, size_t out_n) const;
|
||||
bool validate_tx_for_hardfork_specific_terms(const transaction& tx, const crypto::hash& tx_id, uint64_t block_height) const;
|
||||
bool get_output_keys_for_input_with_checks(const transaction& tx, const txin_to_key& txin, std::vector<crypto::public_key>& output_keys, uint64_t& max_related_block_height, uint64_t& source_max_unlock_time_for_pos_coinbase) const;
|
||||
bool check_tokey_input(const transaction& tx, size_t in_index, const txin_to_key& txin, const crypto::hash& tx_prefix_hash, const std::vector<crypto::signature>& sig, const std::vector<const crypto::public_key*>& output_keys_ptrs) const;
|
||||
bool validate_tx_for_hardfork_specific_terms(const transaction& tx, const crypto::hash& tx_id) const;
|
||||
bool get_output_keys_for_input_with_checks(const transaction& tx, const txin_v& verified_input, std::vector<crypto::public_key>& output_keys, uint64_t& max_related_block_height, uint64_t& source_max_unlock_time_for_pos_coinbase, scan_for_keys_context& scan_context) const;
|
||||
bool get_output_keys_for_input_with_checks(const transaction& tx, const txin_v& verified_input, std::vector<crypto::public_key>& output_keys, uint64_t& max_related_block_height, uint64_t& source_max_unlock_time_for_pos_coinbase) const;
|
||||
bool check_input_signature(const transaction& tx, size_t in_index, const txin_to_key& txin, const crypto::hash& tx_prefix_hash, const std::vector<crypto::signature>& sig, const std::vector<const crypto::public_key*>& output_keys_ptrs) const;
|
||||
bool check_input_signature(const transaction& tx,
|
||||
size_t in_index,
|
||||
uint64_t in_amount,
|
||||
const crypto::key_image& k_image,
|
||||
const std::vector<txin_etc_details_v>& in_etc_details,
|
||||
const crypto::hash& tx_prefix_hash,
|
||||
const std::vector<crypto::signature>& sig,
|
||||
const std::vector<const crypto::public_key*>& output_keys_ptrs) const;
|
||||
|
||||
uint64_t get_current_comulative_blocksize_limit()const;
|
||||
uint64_t get_current_hashrate(size_t aprox_count)const;
|
||||
uint64_t get_seconds_between_last_n_block(size_t n)const;
|
||||
|
|
@ -445,6 +470,7 @@ namespace currency
|
|||
bool validate_all_aliases_for_new_median_mode();
|
||||
bool print_tx_outputs_lookup(const crypto::hash& tx_id) const;
|
||||
uint64_t get_last_x_block_height(bool pos)const;
|
||||
bool is_tx_spendtime_unlocked(uint64_t unlock_time)const;
|
||||
private:
|
||||
|
||||
//-------------- DB containers --------------
|
||||
|
|
@ -460,6 +486,8 @@ namespace currency
|
|||
typedef tools::db::basic_key_value_accessor<uint32_t, block_gindex_increments, true> per_block_gindex_increments_container; // height => [(amount, gindex_increment), ...]
|
||||
|
||||
//-----------------------------------------
|
||||
|
||||
typedef std::unordered_map<crypto::hash, std::pair<const transaction&, uint64_t> > txs_by_id_and_height_altchain;
|
||||
|
||||
tx_memory_pool& m_tx_pool;
|
||||
mutable bc_attachment_services_manager m_services_mgr;
|
||||
|
|
@ -560,10 +588,21 @@ namespace currency
|
|||
wide_difficulty_type get_x_difficulty_after_height(uint64_t height, bool is_pos);
|
||||
bool purge_keyimage_from_big_heap(const crypto::key_image& ki, const crypto::hash& id);
|
||||
bool purge_altblock_keyimages_from_big_heap(const block& b, const crypto::hash& id);
|
||||
bool append_altblock_keyimages_to_big_heap(const crypto::hash& block_id, const std::set<crypto::key_image>& alt_block_keyimages);
|
||||
bool validate_alt_block_input(const transaction& input_tx, std::set<crypto::key_image>& collected_keyimages, const crypto::hash& bl_id, const crypto::hash& input_tx_hash, size_t input_index, const std::vector<crypto::signature>& input_sigs, uint64_t split_height, const alt_chain_type& alt_chain, const std::set<crypto::hash>& alt_chain_block_ids, uint64_t& ki_lookuptime, uint64_t* p_max_related_block_height = nullptr) const;
|
||||
bool append_altblock_keyimages_to_big_heap(const crypto::hash& block_id, const std::unordered_set<crypto::key_image>& alt_block_keyimages);
|
||||
bool validate_alt_block_input(const transaction& input_tx,
|
||||
std::unordered_set<crypto::key_image>& collected_keyimages,
|
||||
const txs_by_id_and_height_altchain& alt_chain_tx_ids,
|
||||
const crypto::hash& bl_id,
|
||||
const crypto::hash& input_tx_hash,
|
||||
size_t input_index,
|
||||
const std::vector<crypto::signature>& input_sigs,
|
||||
uint64_t split_height,
|
||||
const alt_chain_type& alt_chain,
|
||||
const std::unordered_set<crypto::hash>& alt_chain_block_ids,
|
||||
uint64_t& ki_lookuptime,
|
||||
uint64_t* p_max_related_block_height = nullptr) const;
|
||||
bool validate_alt_block_ms_input(const transaction& input_tx, const crypto::hash& input_tx_hash, size_t input_index, const std::vector<crypto::signature>& input_sigs, uint64_t split_height, const alt_chain_type& alt_chain) const;
|
||||
bool validate_alt_block_txs(const block& b, const crypto::hash& id, std::set<crypto::key_image>& collected_keyimages, alt_block_extended_info& abei, const alt_chain_type& alt_chain, uint64_t split_height, uint64_t& ki_lookup_time_total) const;
|
||||
bool validate_alt_block_txs(const block& b, const crypto::hash& id, std::unordered_set<crypto::key_image>& collected_keyimages, alt_block_extended_info& abei, const alt_chain_type& alt_chain, uint64_t split_height, uint64_t& ki_lookup_time_total) const;
|
||||
bool update_alt_out_indexes_for_tx_in_block(const transaction& tx, alt_block_extended_info& abei)const;
|
||||
bool get_transaction_from_pool_or_db(const crypto::hash& tx_id, std::shared_ptr<transaction>& tx_ptr, uint64_t min_allowed_block_height = 0) const;
|
||||
void get_last_n_x_blocks(uint64_t n, bool pos_blocks, std::list<std::shared_ptr<const block_extended_info>>& blocks) const;
|
||||
|
|
@ -573,7 +612,6 @@ namespace currency
|
|||
bool push_transaction_to_global_outs_index(const transaction& tx, const crypto::hash& tx_id, std::vector<uint64_t>& global_indexes);
|
||||
bool pop_transaction_from_global_index(const transaction& tx, const crypto::hash& tx_id);
|
||||
bool add_out_to_get_random_outs(COMMAND_RPC_GET_RANDOM_OUTPUTS_FOR_AMOUNTS::outs_for_amount& result_outs, uint64_t amount, size_t i, uint64_t mix_count, bool use_only_forced_to_mix = false) const;
|
||||
bool is_tx_spendtime_unlocked(uint64_t unlock_time)const;
|
||||
bool add_block_as_invalid(const block& bl, const crypto::hash& h);
|
||||
bool add_block_as_invalid(const block_extended_info& bei, const crypto::hash& h);
|
||||
size_t find_end_of_allowed_index(uint64_t amount)const;
|
||||
|
|
@ -607,7 +645,7 @@ namespace currency
|
|||
// bool build_stake_modifier_for_alt(const alt_chain_type& alt_chain, stake_modifier_type& sm);
|
||||
template<class visitor_t>
|
||||
bool enum_blockchain(visitor_t& v, const alt_chain_type& alt_chain = alt_chain_type(), uint64_t split_height = 0) const;
|
||||
bool update_spent_tx_flags_for_input(uint64_t amount, const txout_v& o, bool spent);
|
||||
bool update_spent_tx_flags_for_input(uint64_t amount, const txout_ref_v& o, bool spent);
|
||||
bool update_spent_tx_flags_for_input(uint64_t amount, uint64_t global_index, bool spent);
|
||||
bool update_spent_tx_flags_for_input(const crypto::hash& multisig_id, uint64_t spent_height);
|
||||
bool update_spent_tx_flags_for_input(const crypto::hash& tx_id, size_t n, bool spent);
|
||||
|
|
@ -617,6 +655,16 @@ namespace currency
|
|||
void calculate_local_gindex_lookup_table_for_height(uint64_t split_height, std::map<uint64_t, uint64_t>& increments) const;
|
||||
void do_erase_altblock(alt_chain_container::iterator it);
|
||||
uint64_t get_blockchain_launch_timestamp()const;
|
||||
bool is_output_allowed_for_input(const txout_target_v& out_v, const txin_v& in_v, uint64_t top_minus_source_height)const;
|
||||
bool is_output_allowed_for_input(const output_key_or_htlc_v& out_v, const txin_v& in_v, uint64_t top_minus_source_height)const;
|
||||
bool is_output_allowed_for_input(const txout_to_key& out_v, const txin_v& in_v)const;
|
||||
bool is_output_allowed_for_input(const txout_htlc& out_v, const txin_v& in_v, uint64_t top_minus_source_height)const;
|
||||
bool is_after_hardfork_1_zone()const;
|
||||
bool is_after_hardfork_1_zone(uint64_t height)const;
|
||||
bool is_after_hardfork_2_zone()const;
|
||||
bool is_after_hardfork_2_zone(uint64_t height)const;
|
||||
bool is_after_hardfork_3_zone()const;
|
||||
bool is_after_hardfork_3_zone(uint64_t height)const;
|
||||
|
||||
|
||||
|
||||
|
|
@ -660,25 +708,28 @@ namespace currency
|
|||
|
||||
return !keep_going;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------
|
||||
//------------------------------------------------------------------
|
||||
template<class visitor_t>
|
||||
bool blockchain_storage::scan_outputkeys_for_indexes(const transaction &validated_tx, const txin_to_key& tx_in_to_key, visitor_t& vis, uint64_t& max_related_block_height) const
|
||||
bool blockchain_storage::scan_outputkeys_for_indexes(const transaction &validated_tx, const txin_v& verified_input, visitor_t& vis, uint64_t& max_related_block_height, scan_for_keys_context& scan_context) const
|
||||
{
|
||||
const txin_to_key& input_to_key = get_to_key_input_from_txin_v(verified_input);
|
||||
|
||||
uint64_t amount = input_to_key.amount;
|
||||
const std::vector<txout_ref_v>& key_offsets = input_to_key.key_offsets;
|
||||
|
||||
CRITICAL_REGION_LOCAL(m_read_lock);
|
||||
TIME_MEASURE_START_PD(tx_check_inputs_loop_scan_outputkeys_get_item_size);
|
||||
|
||||
uint64_t outs_count_for_amount = m_db_outputs.get_item_size(tx_in_to_key.amount);
|
||||
uint64_t outs_count_for_amount = m_db_outputs.get_item_size(amount);
|
||||
TIME_MEASURE_FINISH_PD(tx_check_inputs_loop_scan_outputkeys_get_item_size);
|
||||
if (!outs_count_for_amount)
|
||||
return false;
|
||||
TIME_MEASURE_START_PD(tx_check_inputs_loop_scan_outputkeys_relative_to_absolute);
|
||||
std::vector<txout_v> absolute_offsets = relative_output_offsets_to_absolute(tx_in_to_key.key_offsets);
|
||||
std::vector<txout_ref_v> absolute_offsets = relative_output_offsets_to_absolute(key_offsets);
|
||||
TIME_MEASURE_FINISH_PD(tx_check_inputs_loop_scan_outputkeys_relative_to_absolute);
|
||||
TIME_MEASURE_START_PD(tx_check_inputs_loop_scan_outputkeys_loop);
|
||||
size_t output_index = 0;
|
||||
for(const txout_v& o : absolute_offsets)
|
||||
for(const txout_ref_v& o : absolute_offsets)
|
||||
{
|
||||
crypto::hash tx_id = null_hash;
|
||||
size_t n = 0;
|
||||
|
|
@ -696,7 +747,7 @@ namespace currency
|
|||
LOG_ERROR("Wrong index in transaction inputs: " << i << ", expected maximum " << outs_count_for_amount - 1);
|
||||
return false;
|
||||
}
|
||||
auto out_ptr = m_db_outputs.get_subitem(tx_in_to_key.amount, i);
|
||||
auto out_ptr = m_db_outputs.get_subitem(amount, i);
|
||||
tx_id = out_ptr->tx_id;
|
||||
n = out_ptr->out_no;
|
||||
TIME_MEASURE_FINISH_PD(tx_check_inputs_loop_scan_outputkeys_loop_get_subitem);
|
||||
|
|
@ -709,15 +760,54 @@ namespace currency
|
|||
//check mix_attr
|
||||
TIME_MEASURE_FINISH_PD(tx_check_inputs_loop_scan_outputkeys_loop_find_tx);
|
||||
|
||||
CHECKED_GET_SPECIFIC_VARIANT(tx_ptr->tx.vout[n].target, const txout_to_key, outtk, false);
|
||||
//explanation of this code will be provided later with public announce
|
||||
patch_out_if_needed(const_cast<txout_to_key&>(outtk), tx_id, n);
|
||||
|
||||
//CHECKED_GET_SPECIFIC_VARIANT(tx_ptr->tx.vout[n].target, const txout_to_key, outtk, false);
|
||||
CHECK_AND_ASSERT_MES(key_offsets.size() >= 1, false, "internal error: tx input has empty key_offsets"); // should never happen as input correctness must be handled by the caller
|
||||
|
||||
/*
|
||||
TxOutput | TxInput | Allowed
|
||||
----------------------------
|
||||
HTLC | HTLC | ONLY IF HTLC NOT EXPIRED
|
||||
HTLC | TO_KEY | ONLY IF HTLC IS EXPIRED
|
||||
TO_KEY | HTLC | NOT
|
||||
TO_KEY | TO_KEY | YES
|
||||
*/
|
||||
|
||||
bool r = is_output_allowed_for_input(tx_ptr->tx.vout[n].target, verified_input, get_current_blockchain_size() - tx_ptr->m_keeper_block_height);
|
||||
CHECK_AND_ASSERT_MES(r, false, "Input and output incompatible type");
|
||||
|
||||
if (tx_ptr->tx.vout[n].target.type() == typeid(txout_to_key))
|
||||
{
|
||||
CHECKED_GET_SPECIFIC_VARIANT(tx_ptr->tx.vout[n].target, const txout_to_key, outtk, false);
|
||||
//fix for burned money
|
||||
patch_out_if_needed(const_cast<txout_to_key&>(outtk), tx_id, n);
|
||||
|
||||
bool mixattr_ok = is_mixattr_applicable_for_fake_outs_counter(outtk.mix_attr, key_offsets.size() - 1);
|
||||
CHECK_AND_ASSERT_MES(mixattr_ok, false, "tx output #" << output_index << " violates mixin restrictions: mix_attr = " << static_cast<uint32_t>(outtk.mix_attr) << ", key_offsets.size = " << key_offsets.size());
|
||||
}
|
||||
else if (tx_ptr->tx.vout[n].target.type() == typeid(txout_htlc))
|
||||
{
|
||||
//check for spend flags
|
||||
CHECK_AND_ASSERT_MES(tx_ptr->m_spent_flags.size() > n, false,
|
||||
"Internal error: tx_ptr->m_spent_flags.size(){" << tx_ptr->m_spent_flags.size() << "} > n{" << n << "}");
|
||||
CHECK_AND_ASSERT_MES(tx_ptr->m_spent_flags[n] == false, false, "HTLC out already spent, double spent attempt detected");
|
||||
|
||||
const txout_htlc& htlc_out = boost::get<txout_htlc>(tx_ptr->tx.vout[n].target);
|
||||
if (htlc_out.expiration > get_current_blockchain_size() - tx_ptr->m_keeper_block_height)
|
||||
{
|
||||
//HTLC IS NOT expired, can be used ONLY by pkey_before_expiration and ONLY by HTLC input
|
||||
scan_context.htlc_is_expired = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
//HTLC IS expired, can be used ONLY by pkey_after_expiration and ONLY by to_key input
|
||||
scan_context.htlc_is_expired = true;
|
||||
}
|
||||
}else
|
||||
{
|
||||
LOG_ERROR("[scan_outputkeys_for_indexes]: Wrong output type in : " << tx_ptr->tx.vout[n].target.type().name());
|
||||
return false;
|
||||
}
|
||||
|
||||
CHECK_AND_ASSERT_MES(tx_in_to_key.key_offsets.size() >= 1, false, "internal error: tx input has empty key_offsets"); // should never happen as input correctness must be handled by the caller
|
||||
bool mixattr_ok = is_mixattr_applicable_for_fake_outs_counter(outtk.mix_attr, tx_in_to_key.key_offsets.size() - 1);
|
||||
CHECK_AND_ASSERT_MES(mixattr_ok, false, "tx output #" << output_index << " violates mixin restrictions: mix_attr = " << static_cast<uint32_t>(outtk.mix_attr) << ", key_offsets.size = " << tx_in_to_key.key_offsets.size());
|
||||
|
||||
TIME_MEASURE_START_PD(tx_check_inputs_loop_scan_outputkeys_loop_handle_output);
|
||||
if (!vis.handle_output(tx_ptr->tx, validated_tx, tx_ptr->tx.vout[n], n))
|
||||
|
|
|
|||
|
|
@ -154,4 +154,6 @@ namespace currency
|
|||
transactions_map onboard_transactions;
|
||||
};
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -17,18 +17,16 @@ namespace currency
|
|||
inline bool create_checkpoints(currency::checkpoints& checkpoints)
|
||||
{
|
||||
#ifdef TESTNET
|
||||
ADD_CHECKPOINT(50000, "cb05a7bdc7f78c5cdb6ef1048f85b27c569f44879233903ce5f5a4e5bd590a3d");
|
||||
ADD_CHECKPOINT(100000, "6b8b54356a9d44f6c1ebdacb8593d8f5ab2e2e2ca4493e7ae7baf4b3755c5e16");
|
||||
ADD_CHECKPOINT(350000, "885841f079e5a38f1921f4a5319f0d52fdbab64bb2026ca3cabad1c032d22db7");
|
||||
ADD_CHECKPOINT(450000, "e8b789b909d59ed8a2a1e3eceb6d0b19accfe0d45cc31621b1929de80adfa702");
|
||||
//ADD_CHECKPOINT(50000, "492ef71f5d722a8a182d65eb0ff731b740e023a2d64881f43db9af7b39ba7988");
|
||||
#else
|
||||
// MAINNET
|
||||
ADD_CHECKPOINT(425000, "46a6c36d5dec2d484d5e4845a8525ca322aafc06915ed9c8da2a241b51b7d1e8");
|
||||
ADD_CHECKPOINT(525000, "8c1ac57e67448130207a224b2d6e33ccdc64d6dd1c59dbcf9ad2361dc0d07d51");
|
||||
ADD_CHECKPOINT(600000, "d9fe316086e1aaea07d94082973ec764eff5fc5a05ed6e1eca273cee59daeeb4");
|
||||
ADD_CHECKPOINT(900000, "2205b73cd79d4937b087b02a8b001171b73c34464bc4a952834eaf7c2bd63e86");
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace currency
|
||||
} // namespace currency
|
||||
|
|
|
|||
|
|
@ -24,6 +24,19 @@ namespace currency
|
|||
|
||||
uint64_t hard_fork_01_starts_after_height;
|
||||
uint64_t hard_fork_02_starts_after_height;
|
||||
uint64_t hard_fork_03_starts_after_height;
|
||||
|
||||
bool is_hardfork_active_for_height(size_t hardfork_id, uint64_t height) const
|
||||
{
|
||||
switch (hardfork_id)
|
||||
{
|
||||
case 0: return true;
|
||||
case 1: return height > hard_fork_01_starts_after_height;
|
||||
case 2: return height > hard_fork_02_starts_after_height;
|
||||
case 3: return height > hard_fork_03_starts_after_height;
|
||||
default: return false;
|
||||
}
|
||||
}
|
||||
|
||||
static uint64_t _default_core_time_function()
|
||||
{
|
||||
|
|
@ -42,6 +55,7 @@ namespace currency
|
|||
|
||||
pc.hard_fork_01_starts_after_height = ZANO_HARDFORK_01_AFTER_HEIGHT;
|
||||
pc.hard_fork_02_starts_after_height = ZANO_HARDFORK_02_AFTER_HEIGHT;
|
||||
pc.hard_fork_03_starts_after_height = ZANO_HARDFORK_03_AFTER_HEIGHT;
|
||||
|
||||
pc.get_core_time = &core_runtime_config::_default_core_time_function;
|
||||
bool r = epee::string_tools::hex_to_pod(ALIAS_SHORT_NAMES_VALIDATION_PUB_KEY, pc.alias_validation_pubkey);
|
||||
|
|
|
|||
|
|
@ -191,7 +191,7 @@ namespace currency
|
|||
END_SERIALIZE()
|
||||
};
|
||||
|
||||
typedef boost::variant<uint64_t, ref_by_id> txout_v;
|
||||
typedef boost::variant<uint64_t, ref_by_id> txout_ref_v;
|
||||
|
||||
|
||||
struct signed_parts
|
||||
|
|
@ -211,7 +211,7 @@ namespace currency
|
|||
struct txin_to_key
|
||||
{
|
||||
uint64_t amount;
|
||||
std::vector<txout_v> key_offsets;
|
||||
std::vector<txout_ref_v> key_offsets;
|
||||
crypto::key_image k_image; // double spending protection
|
||||
std::vector<txin_etc_details_v> etc_details; //this flag used when TX_FLAG_SIGNATURE_MODE_SEPARATE flag is set, point to which amount of outputs(starting from zero) used in signature
|
||||
|
||||
|
|
@ -223,6 +223,15 @@ namespace currency
|
|||
END_SERIALIZE()
|
||||
};
|
||||
|
||||
struct txin_htlc: public txin_to_key
|
||||
{
|
||||
std::string hltc_origin;
|
||||
BEGIN_SERIALIZE_OBJECT()
|
||||
FIELD(hltc_origin)
|
||||
FIELDS(*static_cast<txin_to_key*>(this))
|
||||
END_SERIALIZE()
|
||||
};
|
||||
|
||||
struct txin_multisig
|
||||
{
|
||||
uint64_t amount;
|
||||
|
|
@ -249,9 +258,28 @@ namespace currency
|
|||
END_SERIALIZE()
|
||||
};
|
||||
|
||||
typedef boost::variant<txin_gen, txin_to_key, txin_multisig> txin_v;
|
||||
#define CURRENCY_TXOUT_HTLC_FLAGS_HASH_TYPE_MASK 0x01 // 0 - SHA256, 1 - RIPEMD160
|
||||
|
||||
typedef boost::variant<txout_to_key, txout_multisig> txout_target_v;
|
||||
struct txout_htlc
|
||||
{
|
||||
crypto::hash htlc_hash;
|
||||
uint8_t flags; //select type of the hash, may be some extra info in future
|
||||
uint64_t expiration;
|
||||
crypto::public_key pkey_redeem; //works before expiration
|
||||
crypto::public_key pkey_refund; //works after expiration
|
||||
|
||||
BEGIN_SERIALIZE_OBJECT()
|
||||
FIELD(htlc_hash)
|
||||
FIELD(flags)
|
||||
VARINT_FIELD(expiration)
|
||||
FIELD(pkey_redeem)
|
||||
FIELD(pkey_refund)
|
||||
END_SERIALIZE()
|
||||
};
|
||||
|
||||
typedef boost::variant<txin_gen, txin_to_key, txin_multisig, txin_htlc> txin_v;
|
||||
|
||||
typedef boost::variant<txout_to_key, txout_multisig, txout_htlc> txout_target_v;
|
||||
|
||||
//typedef std::pair<uint64_t, txout> out_t;
|
||||
struct tx_out
|
||||
|
|
@ -531,7 +559,7 @@ namespace currency
|
|||
{
|
||||
public:
|
||||
// tx version information
|
||||
size_t version{};
|
||||
uint64_t version{};
|
||||
//extra
|
||||
std::vector<extra_v> extra;
|
||||
std::vector<txin_v> vin;
|
||||
|
|
@ -767,6 +795,10 @@ SET_VARIANT_TAGS(currency::tx_receiver, 32, "receiver2");
|
|||
// @#@ TODO @#@
|
||||
SET_VARIANT_TAGS(currency::extra_alias_entry, 33, "alias_entry2");
|
||||
|
||||
//htlc
|
||||
SET_VARIANT_TAGS(currency::txin_htlc, 34, "txin_htlc");
|
||||
SET_VARIANT_TAGS(currency::txout_htlc, 35, "txout_htlc");
|
||||
|
||||
|
||||
|
||||
#undef SET_VARIANT_TAGS
|
||||
|
|
|
|||
|
|
@ -56,6 +56,16 @@ namespace boost
|
|||
a & x.keys;
|
||||
}
|
||||
|
||||
template <class Archive>
|
||||
inline void serialize(Archive &a, currency::txout_htlc &x, const boost::serialization::version_type ver)
|
||||
{
|
||||
a & x.expiration;
|
||||
a & x.flags;
|
||||
a & x.htlc_hash;
|
||||
a & x.pkey_redeem;
|
||||
a & x.pkey_refund;
|
||||
}
|
||||
|
||||
template <class Archive>
|
||||
inline void serialize(Archive &a, currency::txin_gen &x, const boost::serialization::version_type ver)
|
||||
{
|
||||
|
|
@ -83,6 +93,16 @@ namespace boost
|
|||
a & x.etc_details;
|
||||
}
|
||||
|
||||
template <class Archive>
|
||||
inline void serialize(Archive &a, currency::txin_htlc &x, const boost::serialization::version_type ver)
|
||||
{
|
||||
a & x.amount;
|
||||
a & x.etc_details;
|
||||
a & x.hltc_origin;
|
||||
a & x.k_image;
|
||||
a & x.key_offsets;
|
||||
}
|
||||
|
||||
template <class Archive>
|
||||
inline void serialize(Archive &a, currency::tx_out &x, const boost::serialization::version_type ver)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
#ifndef TESTNET
|
||||
#define CURRENCY_FORMATION_VERSION 84
|
||||
#else
|
||||
#define CURRENCY_FORMATION_VERSION 86
|
||||
#define CURRENCY_FORMATION_VERSION 88
|
||||
#endif
|
||||
|
||||
#define CURRENCY_GENESIS_NONCE (CURRENCY_FORMATION_VERSION + 101011010121) //bender's nightmare
|
||||
|
|
@ -27,7 +27,9 @@
|
|||
#define CURRENCY_PUBLIC_AUDITABLE_INTEG_ADDRESS_BASE58_PREFIX 0x8a49 // auditable integrated addresses start with 'aiZX'
|
||||
#define CURRENCY_MINED_MONEY_UNLOCK_WINDOW 10
|
||||
#define CURRENT_TRANSACTION_VERSION 1
|
||||
#define CURRENT_BLOCK_MAJOR_VERSION 1
|
||||
#define HF1_BLOCK_MAJOR_VERSION 1
|
||||
#define CURRENT_BLOCK_MAJOR_VERSION 2
|
||||
|
||||
#define CURRENT_BLOCK_MINOR_VERSION 0
|
||||
#define CURRENCY_BLOCK_FUTURE_TIME_LIMIT 60*60*2
|
||||
#define CURRENCY_POS_BLOCK_FUTURE_TIME_LIMIT 60*20
|
||||
|
|
@ -222,7 +224,7 @@
|
|||
#define BC_OFFERS_CURRENCY_MARKET_FILENAME "market.bin"
|
||||
|
||||
|
||||
#define WALLET_FILE_SERIALIZATION_VERSION (CURRENCY_FORMATION_VERSION+68)
|
||||
#define WALLET_FILE_SERIALIZATION_VERSION (CURRENCY_FORMATION_VERSION+69)
|
||||
|
||||
|
||||
#define CURRENT_MEMPOOL_ARCHIVE_VER (CURRENCY_FORMATION_VERSION+31)
|
||||
|
|
@ -230,13 +232,15 @@
|
|||
//hard forks section
|
||||
#define BLOCK_MAJOR_VERSION_GENESIS 1
|
||||
#define BLOCK_MINOR_VERSION_GENESIS 0
|
||||
#define BLOCK_MAJOR_VERSION_INITAL 0
|
||||
#define BLOCK_MAJOR_VERSION_INITIAL 0
|
||||
#ifndef TESTNET
|
||||
#define ZANO_HARDFORK_01_AFTER_HEIGHT 194624
|
||||
#define ZANO_HARDFORK_02_AFTER_HEIGHT 999999
|
||||
#define ZANO_HARDFORK_03_AFTER_HEIGHT 1082577
|
||||
#else
|
||||
#define ZANO_HARDFORK_01_AFTER_HEIGHT 1440
|
||||
#define ZANO_HARDFORK_02_AFTER_HEIGHT 999999
|
||||
#define ZANO_HARDFORK_02_AFTER_HEIGHT 1800
|
||||
#define ZANO_HARDFORK_03_AFTER_HEIGHT 1801
|
||||
#endif
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ using namespace epee;
|
|||
#include "genesis.h"
|
||||
#include "genesis_acc.h"
|
||||
#include "common/mnemonic-encoding.h"
|
||||
#include "crypto/bitcoin/sha256_helper.h"
|
||||
|
||||
namespace currency
|
||||
{
|
||||
|
|
@ -205,7 +206,7 @@ namespace currency
|
|||
std::set<uint16_t> deriv_cache;
|
||||
for (auto& d : destinations)
|
||||
{
|
||||
bool r = construct_tx_out(d, txkey.sec, no, tx, deriv_cache);
|
||||
bool r = construct_tx_out(d, txkey.sec, no, tx, deriv_cache, account_keys());
|
||||
CHECK_AND_ASSERT_MES(r, false, "Failed to contruct miner tx out");
|
||||
no++;
|
||||
}
|
||||
|
|
@ -590,7 +591,25 @@ namespace currency
|
|||
// return true;
|
||||
// }
|
||||
//---------------------------------------------------------------
|
||||
bool construct_tx_out(const tx_destination_entry& de, const crypto::secret_key& tx_sec_key, size_t output_index, transaction& tx, std::set<uint16_t>& deriv_cache, uint8_t tx_outs_attr)
|
||||
std::string generate_origin_for_htlc(const txout_htlc& htlc, const account_keys& acc_keys)
|
||||
{
|
||||
std::string blob;
|
||||
string_tools::apped_pod_to_strbuff(blob, htlc.pkey_redeem);
|
||||
string_tools::apped_pod_to_strbuff(blob, htlc.pkey_refund);
|
||||
string_tools::apped_pod_to_strbuff(blob, acc_keys.spend_secret_key);
|
||||
crypto::hash origin_hs = crypto::cn_fast_hash(blob.data(), blob.size());
|
||||
std::string origin_blob;
|
||||
string_tools::apped_pod_to_strbuff(origin_blob, origin_hs);
|
||||
return origin_blob;
|
||||
}
|
||||
//---------------------------------------------------------------
|
||||
bool construct_tx_out(const tx_destination_entry& de, const crypto::secret_key& tx_sec_key, size_t output_index, transaction& tx, std::set<uint16_t>& deriv_cache, const account_keys& self, uint8_t tx_outs_attr)
|
||||
{
|
||||
finalized_tx result = AUTO_VAL_INIT(result);
|
||||
return construct_tx_out(de, tx_sec_key, output_index, tx, deriv_cache, self, result, tx_outs_attr);
|
||||
}
|
||||
//---------------------------------------------------------------
|
||||
bool construct_tx_out(const tx_destination_entry& de, const crypto::secret_key& tx_sec_key, size_t output_index, transaction& tx, std::set<uint16_t>& deriv_cache, const account_keys& self, finalized_tx& result, uint8_t tx_outs_attr)
|
||||
{
|
||||
CHECK_AND_ASSERT_MES(de.addr.size() == 1 || (de.addr.size() > 1 && de.minimum_sigs <= de.addr.size()), false, "Invalid destination entry: amount: " << de.amount << " minimum_sigs: " << de.minimum_sigs << " addr.size(): " << de.addr.size());
|
||||
|
||||
|
|
@ -622,10 +641,58 @@ namespace currency
|
|||
|
||||
tx_out out;
|
||||
out.amount = de.amount;
|
||||
if (target_keys.size() == 1)
|
||||
if (de.htlc_options.expiration != 0)
|
||||
{
|
||||
const destination_option_htlc_out& htlc_dest = de.htlc_options;
|
||||
//out htlc
|
||||
CHECK_AND_ASSERT_MES(target_keys.size() == 1, false, "Unexpected htl keys count = " << target_keys.size() << ", expected ==1");
|
||||
txout_htlc htlc = AUTO_VAL_INIT(htlc);
|
||||
htlc.expiration = htlc_dest.expiration;
|
||||
htlc.flags = 0; //0 - SHA256, 1 - RIPEMD160, by default leave SHA256
|
||||
//receiver key
|
||||
htlc.pkey_redeem = *target_keys.begin();
|
||||
//generate refund key
|
||||
crypto::key_derivation derivation = AUTO_VAL_INIT(derivation);
|
||||
crypto::public_key out_eph_public_key = AUTO_VAL_INIT(out_eph_public_key);
|
||||
bool r = derive_public_key_from_target_address(self.account_address, tx_sec_key, output_index, out_eph_public_key, derivation);
|
||||
CHECK_AND_ASSERT_MES(r, false, "failed to derive_public_key_from_target_address");
|
||||
htlc.pkey_refund = out_eph_public_key;
|
||||
//add derivation hint for refund address
|
||||
uint16_t hint = get_derivation_hint(derivation);
|
||||
if (deriv_cache.count(hint) == 0)
|
||||
{
|
||||
tx.extra.push_back(make_tx_derivation_hint_from_uint16(hint));
|
||||
deriv_cache.insert(hint);
|
||||
}
|
||||
|
||||
|
||||
if (htlc_dest.htlc_hash == null_hash)
|
||||
{
|
||||
//we use deterministic origin, to make possible access origin on different wallets copies
|
||||
|
||||
result.htlc_origin = generate_origin_for_htlc(htlc, self);
|
||||
|
||||
//calculate hash
|
||||
if (!htlc.flags&CURRENCY_TXOUT_HTLC_FLAGS_HASH_TYPE_MASK)
|
||||
{
|
||||
htlc.htlc_hash = crypto::sha256_hash(result.htlc_origin.data(), result.htlc_origin.size());
|
||||
}
|
||||
else
|
||||
{
|
||||
crypto::hash160 h160 = crypto::RIPEMD160_hash(result.htlc_origin.data(), result.htlc_origin.size());
|
||||
std::memcpy(&htlc.htlc_hash, &h160, sizeof(h160));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
htlc.htlc_hash = htlc_dest.htlc_hash;
|
||||
}
|
||||
out.target = htlc;
|
||||
}
|
||||
else if (target_keys.size() == 1)
|
||||
{
|
||||
//out to key
|
||||
txout_to_key tk;
|
||||
txout_to_key tk = AUTO_VAL_INIT(tk);
|
||||
tk.key = target_keys.back();
|
||||
|
||||
if (de.addr.front().is_auditable()) // check only the first address because there's only one in this branch
|
||||
|
|
@ -927,7 +994,29 @@ namespace currency
|
|||
}
|
||||
}
|
||||
//---------------------------------------------------------------
|
||||
uint64_t get_tx_type(const transaction& tx)
|
||||
void load_wallet_transfer_info_flags(tools::wallet_public::wallet_transfer_info& x)
|
||||
{
|
||||
x.is_service = currency::is_service_tx(x.tx);
|
||||
x.is_mixing = currency::does_tx_have_only_mixin_inputs(x.tx);
|
||||
x.is_mining = currency::is_coinbase(x.tx);
|
||||
if (!x.is_mining)
|
||||
x.fee = currency::get_tx_fee(x.tx);
|
||||
else
|
||||
x.fee = 0;
|
||||
x.show_sender = currency::is_showing_sender_addres(x.tx);
|
||||
tx_out htlc_out = AUTO_VAL_INIT(htlc_out);
|
||||
txin_htlc htlc_in = AUTO_VAL_INIT(htlc_in);
|
||||
|
||||
x.tx_type = get_tx_type_ex(x.tx, htlc_out, htlc_in);
|
||||
if(x.tx_type == GUI_TX_TYPE_HTLC_DEPOSIT && x.is_income == true)
|
||||
{
|
||||
//need to override amount
|
||||
x.amount = htlc_out.amount;
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
uint64_t get_tx_type_ex(const transaction& tx, tx_out& htlc_out, txin_htlc& htlc_in)
|
||||
{
|
||||
if (is_coinbase(tx))
|
||||
return GUI_TX_TYPE_COIN_BASE;
|
||||
|
|
@ -942,7 +1031,7 @@ namespace currency
|
|||
else
|
||||
return GUI_TX_TYPE_NEW_ALIAS;
|
||||
}
|
||||
|
||||
|
||||
// offers
|
||||
tx_service_attachment a = AUTO_VAL_INIT(a);
|
||||
if (get_type_in_variant_container(tx.attachment, a))
|
||||
|
|
@ -957,7 +1046,7 @@ namespace currency
|
|||
return GUI_TX_TYPE_CANCEL_OFFER;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// escrow
|
||||
tx_service_attachment tsa = AUTO_VAL_INIT(tsa);
|
||||
if (bc_services::get_first_service_attachment_by_id(tx, BC_ESCROW_SERVICE_ID, BC_ESCROW_SERVICE_INSTRUCTION_RELEASE_TEMPLATES, tsa))
|
||||
|
|
@ -973,9 +1062,31 @@ namespace currency
|
|||
if (bc_services::get_first_service_attachment_by_id(tx, BC_ESCROW_SERVICE_ID, BC_ESCROW_SERVICE_INSTRUCTION_CANCEL_PROPOSAL, tsa))
|
||||
return GUI_TX_TYPE_ESCROW_CANCEL_PROPOSAL;
|
||||
|
||||
for (auto o : tx.vout)
|
||||
{
|
||||
if (o.target.type() == typeid(txout_htlc))
|
||||
{
|
||||
htlc_out = o;
|
||||
return GUI_TX_TYPE_HTLC_DEPOSIT;
|
||||
}
|
||||
}
|
||||
|
||||
if (get_type_in_variant_container(tx.vin, htlc_in))
|
||||
{
|
||||
return GUI_TX_TYPE_HTLC_REDEEM;
|
||||
}
|
||||
|
||||
|
||||
return GUI_TX_TYPE_NORMAL;
|
||||
}
|
||||
//---------------------------------------------------------------
|
||||
uint64_t get_tx_type(const transaction& tx)
|
||||
{
|
||||
tx_out htlc_out = AUTO_VAL_INIT(htlc_out);
|
||||
txin_htlc htlc_in = AUTO_VAL_INIT(htlc_in);
|
||||
return get_tx_type_ex(tx, htlc_out, htlc_in);
|
||||
}
|
||||
//---------------------------------------------------------------
|
||||
size_t get_multisig_out_index(const std::vector<tx_out>& outs)
|
||||
{
|
||||
size_t n = 0;
|
||||
|
|
@ -1024,7 +1135,7 @@ namespace currency
|
|||
shuffle,
|
||||
flags);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
bool construct_tx(const account_keys& sender_account_keys, const std::vector<tx_source_entry>& sources,
|
||||
const std::vector<tx_destination_entry>& destinations,
|
||||
const std::vector<extra_v>& extra,
|
||||
|
|
@ -1038,6 +1149,45 @@ namespace currency
|
|||
bool shuffle,
|
||||
uint64_t flags)
|
||||
{
|
||||
//extra copy operation, but creating transaction is not sensitive to this
|
||||
finalize_tx_param ftp = AUTO_VAL_INIT(ftp);
|
||||
ftp.sources = sources;
|
||||
ftp.prepared_destinations = destinations;
|
||||
ftp.extra = extra;
|
||||
ftp.attachments = attachments;
|
||||
ftp.unlock_time = unlock_time;
|
||||
ftp.crypt_address = crypt_destination_addr;
|
||||
ftp.expiration_time = expiration_time;
|
||||
ftp.tx_outs_attr = tx_outs_attr;
|
||||
ftp.shuffle = shuffle;
|
||||
ftp.flags = flags;
|
||||
|
||||
finalized_tx ft = AUTO_VAL_INIT(ft);
|
||||
ft.tx = tx;
|
||||
ft.one_time_key = one_time_secret_key;
|
||||
bool r = construct_tx(sender_account_keys, ftp, ft);
|
||||
tx = ft.tx;
|
||||
one_time_secret_key = ft.one_time_key;
|
||||
return r;
|
||||
}
|
||||
//---------------------------------------------------------------
|
||||
bool construct_tx(const account_keys& sender_account_keys, const finalize_tx_param& ftp, finalized_tx& result)
|
||||
{
|
||||
const std::vector<tx_source_entry>& sources = ftp.sources;
|
||||
const std::vector<tx_destination_entry>& destinations = ftp.prepared_destinations;
|
||||
const std::vector<extra_v>& extra = ftp.extra;
|
||||
const std::vector<attachment_v>& attachments = ftp.attachments;
|
||||
const uint64_t& unlock_time = ftp.unlock_time;
|
||||
const account_public_address& crypt_destination_addr = ftp.crypt_address;
|
||||
const uint64_t& expiration_time = ftp.expiration_time;
|
||||
const uint8_t& tx_outs_attr = ftp.tx_outs_attr;
|
||||
const bool& shuffle = ftp.shuffle;
|
||||
const uint64_t& flags = ftp.flags;
|
||||
|
||||
transaction& tx = result.tx;
|
||||
crypto::secret_key& one_time_secret_key = result.one_time_key;
|
||||
|
||||
result.ftp = ftp;
|
||||
CHECK_AND_ASSERT_MES(destinations.size() <= CURRENCY_TX_MAX_ALLOWED_OUTS, false, "Too many outs (" << destinations.size() << ")! Tx can't be constructed.");
|
||||
|
||||
bool watch_only_mode = sender_account_keys.spend_secret_key == null_skey;
|
||||
|
|
@ -1119,8 +1269,56 @@ namespace currency
|
|||
for (const tx_source_entry& src_entr : sources)
|
||||
{
|
||||
in_contexts.push_back(input_generation_context_data());
|
||||
if (!src_entr.is_multisig())
|
||||
if(src_entr.is_multisig())
|
||||
{//multisig input
|
||||
txin_multisig input_multisig = AUTO_VAL_INIT(input_multisig);
|
||||
summary_inputs_money += input_multisig.amount = src_entr.amount;
|
||||
input_multisig.multisig_out_id = src_entr.multisig_id;
|
||||
input_multisig.sigs_count = src_entr.ms_sigs_count;
|
||||
tx.vin.push_back(input_multisig);
|
||||
}
|
||||
else if (src_entr.htlc_origin.size())
|
||||
{
|
||||
//htlc redeem
|
||||
keypair& in_ephemeral = in_contexts.back().in_ephemeral;
|
||||
//txin_to_key
|
||||
if(src_entr.outputs.size() != 1)
|
||||
{
|
||||
LOG_ERROR("htlc in: wrong output src_entr.outputs.size() = " << src_entr.outputs.size());
|
||||
return false;
|
||||
}
|
||||
summary_inputs_money += src_entr.amount;
|
||||
|
||||
//key_derivation recv_derivation;
|
||||
crypto::key_image img;
|
||||
if (!generate_key_image_helper(sender_account_keys, src_entr.real_out_tx_key, src_entr.real_output_in_tx_index, in_ephemeral, img))
|
||||
return false;
|
||||
|
||||
//check that derivated key is equal with real output key
|
||||
if (!(in_ephemeral.pub == src_entr.outputs[src_entr.real_output].second))
|
||||
{
|
||||
LOG_ERROR("derived public key missmatch with output public key! " << ENDL << "derived_key:"
|
||||
<< string_tools::pod_to_hex(in_ephemeral.pub) << ENDL << "real output_public_key:"
|
||||
<< string_tools::pod_to_hex(src_entr.outputs[src_entr.real_output].second));
|
||||
return false;
|
||||
}
|
||||
|
||||
//put key image into tx input
|
||||
txin_htlc input_to_key;
|
||||
input_to_key.amount = src_entr.amount;
|
||||
input_to_key.k_image = img;
|
||||
input_to_key.hltc_origin = src_entr.htlc_origin;
|
||||
|
||||
//fill outputs array and use relative offsets
|
||||
BOOST_FOREACH(const tx_source_entry::output_entry& out_entry, src_entr.outputs)
|
||||
input_to_key.key_offsets.push_back(out_entry.first);
|
||||
|
||||
input_to_key.key_offsets = absolute_output_offsets_to_relative(input_to_key.key_offsets);
|
||||
tx.vin.push_back(input_to_key);
|
||||
}
|
||||
else
|
||||
{
|
||||
//regular to key out
|
||||
keypair& in_ephemeral = in_contexts.back().in_ephemeral;
|
||||
//txin_to_key
|
||||
if (src_entr.real_output >= src_entr.outputs.size())
|
||||
|
|
@ -1145,7 +1343,26 @@ namespace currency
|
|||
}
|
||||
|
||||
//put key image into tx input
|
||||
txin_to_key input_to_key;
|
||||
txin_v in_v;
|
||||
txin_to_key* ptokey = nullptr;
|
||||
if (src_entr.htlc_origin.size())
|
||||
{
|
||||
//add txin_htlc
|
||||
txin_htlc in_htlc = AUTO_VAL_INIT(in_htlc);
|
||||
in_htlc.hltc_origin = src_entr.htlc_origin;
|
||||
in_v = in_htlc;
|
||||
txin_htlc& in_v_ref = boost::get<txin_htlc>(in_v);
|
||||
ptokey = static_cast<txin_to_key*>(&in_v_ref);
|
||||
}
|
||||
else
|
||||
{
|
||||
in_v = txin_to_key();
|
||||
txin_to_key& in_v_ref = boost::get<txin_to_key>(in_v);
|
||||
ptokey = &in_v_ref;
|
||||
}
|
||||
txin_to_key& input_to_key = *ptokey;
|
||||
|
||||
|
||||
input_to_key.amount = src_entr.amount;
|
||||
input_to_key.k_image = img;
|
||||
|
||||
|
|
@ -1154,16 +1371,9 @@ namespace currency
|
|||
input_to_key.key_offsets.push_back(out_entry.first);
|
||||
|
||||
input_to_key.key_offsets = absolute_output_offsets_to_relative(input_to_key.key_offsets);
|
||||
tx.vin.push_back(input_to_key);
|
||||
}
|
||||
else
|
||||
{//multisig input
|
||||
txin_multisig input_multisig = AUTO_VAL_INIT(input_multisig);
|
||||
summary_inputs_money += input_multisig.amount = src_entr.amount;
|
||||
input_multisig.multisig_out_id = src_entr.multisig_id;
|
||||
input_multisig.sigs_count = src_entr.ms_sigs_count;
|
||||
tx.vin.push_back(input_multisig);
|
||||
tx.vin.push_back(in_v);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// "Shuffle" outs
|
||||
|
|
@ -1178,7 +1388,7 @@ namespace currency
|
|||
for(const tx_destination_entry& dst_entr : shuffled_dsts)
|
||||
{
|
||||
CHECK_AND_ASSERT_MES(dst_entr.amount > 0, false, "Destination with wrong amount: " << dst_entr.amount);
|
||||
bool r = construct_tx_out(dst_entr, txkey.sec, output_index, tx, deriv_cache, tx_outs_attr);
|
||||
bool r = construct_tx_out(dst_entr, txkey.sec, output_index, tx, deriv_cache, sender_account_keys, result, tx_outs_attr);
|
||||
CHECK_AND_ASSERT_MES(r, false, "Failed to construc tx out");
|
||||
output_index++;
|
||||
summary_outs_money += dst_entr.amount;
|
||||
|
|
@ -1250,9 +1460,14 @@ namespace currency
|
|||
tx.signatures.push_back(std::vector<crypto::signature>());
|
||||
std::vector<crypto::signature>& sigs = tx.signatures.back();
|
||||
|
||||
if (!src_entr.is_multisig())
|
||||
if(src_entr.is_multisig())
|
||||
{
|
||||
// txin_to_key
|
||||
// txin_multisig -- don't sign anything here (see also sign_multisig_input_in_tx())
|
||||
sigs.resize(src_entr.ms_keys_count, null_sig); // just reserve keys.size() null signatures (NOTE: not minimum_sigs!)
|
||||
}
|
||||
else
|
||||
{
|
||||
// regular txin_to_key or htlc
|
||||
ss_ring_s << "input #" << input_index << ", pub_keys:" << ENDL;
|
||||
std::vector<const crypto::public_key*> keys_ptrs;
|
||||
BOOST_FOREACH(const tx_source_entry::output_entry& o, src_entr.outputs)
|
||||
|
|
@ -1263,17 +1478,12 @@ namespace currency
|
|||
sigs.resize(src_entr.outputs.size());
|
||||
|
||||
if (!watch_only_mode)
|
||||
crypto::generate_ring_signature(tx_hash_for_signature, boost::get<txin_to_key>(tx.vin[input_index]).k_image, keys_ptrs, in_contexts[in_context_index].in_ephemeral.sec, src_entr.real_output, sigs.data());
|
||||
|
||||
crypto::generate_ring_signature(tx_hash_for_signature, get_to_key_input_from_txin_v(tx.vin[input_index]).k_image, keys_ptrs, in_contexts[in_context_index].in_ephemeral.sec, src_entr.real_output, sigs.data());
|
||||
|
||||
ss_ring_s << "signatures:" << ENDL;
|
||||
std::for_each(sigs.begin(), sigs.end(), [&ss_ring_s](const crypto::signature& s) { ss_ring_s << s << ENDL; });
|
||||
ss_ring_s << "prefix_hash: " << tx_prefix_hash << ENDL << "in_ephemeral_key: " << in_contexts[in_context_index].in_ephemeral.sec << ENDL << "real_output: " << src_entr.real_output << ENDL;
|
||||
}
|
||||
else
|
||||
{
|
||||
// txin_multisig -- don't sign anything here (see also sign_multisig_input_in_tx())
|
||||
sigs.resize(src_entr.ms_keys_count, null_sig); // just reserve keys.size() null signatures (NOTE: not minimum_sigs!)
|
||||
}
|
||||
if (src_entr.separately_signed_tx_complete)
|
||||
{
|
||||
// if separately signed tx is complete, put one more signature to the last bunch using tx secret key, which confirms that transaction has been generated by authorized subject
|
||||
|
|
@ -1449,10 +1659,9 @@ namespace currency
|
|||
{
|
||||
for(const auto& in : tx.vin)
|
||||
{
|
||||
CHECK_AND_ASSERT_MES(in.type() == typeid(txin_to_key) || in.type() == typeid(txin_multisig), false, "wrong variant type: "
|
||||
<< in.type().name() << ", expected " << typeid(txin_to_key).name()
|
||||
CHECK_AND_ASSERT_MES(in.type() == typeid(txin_to_key) || in.type() == typeid(txin_multisig) || in.type() == typeid(txin_htlc), false, "wrong variant type: "
|
||||
<< in.type().name()
|
||||
<< ", in transaction id=" << get_transaction_hash(tx));
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
@ -1523,6 +1732,14 @@ namespace currency
|
|||
if (!check_key(boost::get<txout_to_key>(out.target).key))
|
||||
return false;
|
||||
}
|
||||
else if (out.target.type() == typeid(txout_htlc))
|
||||
{
|
||||
const txout_htlc& htlc = boost::get<txout_htlc>(out.target);
|
||||
if (!check_key(htlc.pkey_redeem))
|
||||
return false;
|
||||
if (!check_key(htlc.pkey_refund))
|
||||
return false;
|
||||
}
|
||||
else if (out.target.type() == typeid(txout_multisig))
|
||||
{
|
||||
const txout_multisig& ms = boost::get<txout_multisig>(out.target);
|
||||
|
|
@ -1559,8 +1776,13 @@ namespace currency
|
|||
}
|
||||
else if (in.type() == typeid(txin_multisig))
|
||||
{
|
||||
CHECKED_GET_SPECIFIC_VARIANT(in, const txin_multisig, tokey_in, false);
|
||||
this_amount = tokey_in.amount;
|
||||
CHECKED_GET_SPECIFIC_VARIANT(in, const txin_multisig, ms_in, false);
|
||||
this_amount = ms_in.amount;
|
||||
}
|
||||
else if (in.type() == typeid(txin_htlc))
|
||||
{
|
||||
CHECKED_GET_SPECIFIC_VARIANT(in, const txin_htlc, htlc_in, false);
|
||||
this_amount = htlc_in.amount;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -1674,6 +1896,12 @@ namespace currency
|
|||
}
|
||||
//---------------------------------------------------------------
|
||||
bool lookup_acc_outs(const account_keys& acc, const transaction& tx, const crypto::public_key& tx_pub_key, std::vector<size_t>& outs, uint64_t& money_transfered, crypto::key_derivation& derivation)
|
||||
{
|
||||
std::list<htlc_info> htlc_info_list;
|
||||
return lookup_acc_outs(acc, tx, tx_pub_key, outs, money_transfered, derivation, htlc_info_list);
|
||||
}
|
||||
//---------------------------------------------------------------
|
||||
bool lookup_acc_outs(const account_keys& acc, const transaction& tx, const crypto::public_key& tx_pub_key, std::vector<size_t>& outs, uint64_t& money_transfered, crypto::key_derivation& derivation, std::list<htlc_info>& htlc_info_list)
|
||||
{
|
||||
money_transfered = 0;
|
||||
bool r = generate_key_derivation(tx_pub_key, acc.view_secret_key, derivation);
|
||||
|
|
@ -1685,7 +1913,6 @@ namespace currency
|
|||
return lookup_acc_outs_genesis(acc, tx, tx_pub_key, outs, money_transfered, derivation);
|
||||
}
|
||||
|
||||
|
||||
if (!check_tx_derivation_hint(tx, derivation))
|
||||
return true;
|
||||
|
||||
|
|
@ -1708,6 +1935,23 @@ namespace currency
|
|||
//don't count this money
|
||||
}
|
||||
}
|
||||
else if (o.target.type() == typeid(txout_htlc))
|
||||
{
|
||||
htlc_info hi = AUTO_VAL_INIT(hi);
|
||||
const txout_htlc& htlc = boost::get<txout_htlc>(o.target);
|
||||
if (is_out_to_acc(acc, htlc.pkey_redeem, derivation, i))
|
||||
{
|
||||
hi.hltc_our_out_is_before_expiration = true;
|
||||
htlc_info_list.push_back(hi);
|
||||
outs.push_back(i);
|
||||
}
|
||||
else if (is_out_to_acc(acc, htlc.pkey_refund, derivation, i))
|
||||
{
|
||||
hi.hltc_our_out_is_before_expiration = false;
|
||||
htlc_info_list.push_back(hi);
|
||||
outs.push_back(i);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_ERROR("Wrong type at lookup_acc_outs, unexpected type is: " << o.target.type().name());
|
||||
|
|
@ -2049,11 +2293,11 @@ namespace currency
|
|||
return genesis_id;
|
||||
}
|
||||
//---------------------------------------------------------------
|
||||
std::vector<txout_v> relative_output_offsets_to_absolute(const std::vector<txout_v>& off)
|
||||
std::vector<txout_ref_v> relative_output_offsets_to_absolute(const std::vector<txout_ref_v>& off)
|
||||
{
|
||||
//if array has both types of outs, then global index (uint64_t) should be first, and then the rest could be out_by_id
|
||||
|
||||
std::vector<txout_v> res = off;
|
||||
std::vector<txout_ref_v> res = off;
|
||||
for (size_t i = 1; i < res.size(); i++)
|
||||
{
|
||||
if (res[i].type() == typeid(ref_by_id))
|
||||
|
|
@ -2064,13 +2308,13 @@ namespace currency
|
|||
return res;
|
||||
}
|
||||
//---------------------------------------------------------------
|
||||
std::vector<txout_v> absolute_output_offsets_to_relative(const std::vector<txout_v>& off)
|
||||
std::vector<txout_ref_v> absolute_output_offsets_to_relative(const std::vector<txout_ref_v>& off)
|
||||
{
|
||||
std::vector<txout_v> res = off;
|
||||
std::vector<txout_ref_v> res = off;
|
||||
if (off.size() < 2)
|
||||
return res;
|
||||
|
||||
std::sort(res.begin(), res.end(), [](const txout_v& lft, const txout_v& rght)
|
||||
std::sort(res.begin(), res.end(), [](const txout_ref_v& lft, const txout_ref_v& rght)
|
||||
{
|
||||
if (lft.type() == typeid(uint64_t))
|
||||
{
|
||||
|
|
@ -2128,11 +2372,11 @@ namespace currency
|
|||
return have_type_in_variant_container<tx_payer>(tx.attachment) || have_type_in_variant_container<tx_payer_old>(tx.attachment);
|
||||
}
|
||||
//---------------------------------------------------------------
|
||||
bool is_mixin_tx(const transaction& tx)
|
||||
bool does_tx_have_only_mixin_inputs(const transaction& tx)
|
||||
{
|
||||
for (const auto& e : tx.vin)
|
||||
{
|
||||
if (e.type() != typeid(txin_to_key))
|
||||
if (e.type() != typeid(txin_to_key) || e.type() != typeid(txin_multisig) || e.type() != typeid(txin_htlc))
|
||||
return false;
|
||||
if (boost::get<txin_to_key>(e).key_offsets.size() < 2)
|
||||
return false;
|
||||
|
|
@ -2408,6 +2652,12 @@ namespace currency
|
|||
}
|
||||
tei.outs.back().minimum_sigs = otm.minimum_sigs;
|
||||
}
|
||||
else if (out.target.type() == typeid(txout_htlc))
|
||||
{
|
||||
const txout_htlc& otk = boost::get<txout_htlc>(out.target);
|
||||
tei.outs.back().pub_keys.push_back(epee::string_tools::pod_to_hex(otk.pkey_redeem) + "(htlc_pkey_redeem)");
|
||||
tei.outs.back().pub_keys.push_back(epee::string_tools::pod_to_hex(otk.pkey_refund) + "(htlc_pkey_refund)");
|
||||
}
|
||||
|
||||
++i;
|
||||
}
|
||||
|
|
@ -2424,12 +2674,13 @@ namespace currency
|
|||
{
|
||||
tei.ins.back().amount = 0;
|
||||
}
|
||||
else if (in.type() == typeid(txin_to_key))
|
||||
else if (in.type() == typeid(txin_to_key) || in.type() == typeid(txin_htlc))
|
||||
{
|
||||
txin_to_key& tk = boost::get<txin_to_key>(in);
|
||||
//TODO: add htlc info
|
||||
const txin_to_key& tk = get_to_key_input_from_txin_v(in);
|
||||
tei.ins.back().amount = tk.amount;
|
||||
tei.ins.back().kimage_or_ms_id = epee::string_tools::pod_to_hex(tk.k_image);
|
||||
std::vector<txout_v> absolute_offsets = relative_output_offsets_to_absolute(tk.key_offsets);
|
||||
std::vector<txout_ref_v> absolute_offsets = relative_output_offsets_to_absolute(tk.key_offsets);
|
||||
for (auto& ao : absolute_offsets)
|
||||
{
|
||||
tei.ins.back().global_indexes.push_back(0);
|
||||
|
|
@ -2443,6 +2694,10 @@ namespace currency
|
|||
tei.ins.back().global_indexes.back() = std::numeric_limits<uint64_t>::max();
|
||||
}
|
||||
}
|
||||
if (in.type() == typeid(txin_htlc))
|
||||
{
|
||||
tei.ins.back().htlc_origin = epee::string_tools::buff_to_hex_nodelimer(boost::get<txin_htlc>(in).hltc_origin);
|
||||
}
|
||||
//tk.etc_details -> visualize it may be later
|
||||
}
|
||||
else if (in.type() == typeid(txin_multisig))
|
||||
|
|
@ -2511,7 +2766,7 @@ namespace currency
|
|||
{
|
||||
for (size_t n = 0; n < tx.vout.size(); ++n)
|
||||
{
|
||||
if (tx.vout[n].target.type() == typeid(txout_to_key))
|
||||
if (tx.vout[n].target.type() == typeid(txout_to_key) || tx.vout[n].target.type() == typeid(txout_htlc))
|
||||
{
|
||||
uint64_t amount = tx.vout[n].amount;
|
||||
gindices[amount] += 1;
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
#include "currency_format_utils_blocks.h"
|
||||
#include "currency_format_utils_transactions.h"
|
||||
#include "core_runtime_config.h"
|
||||
#include "wallet/wallet_public_structs_defs.h"
|
||||
|
||||
|
||||
// ------ get_tx_type_definition -------------
|
||||
|
|
@ -44,6 +45,8 @@
|
|||
#define GUI_TX_TYPE_ESCROW_RELEASE_BURN 10
|
||||
#define GUI_TX_TYPE_ESCROW_CANCEL_PROPOSAL 11
|
||||
#define GUI_TX_TYPE_ESCROW_RELEASE_CANCEL 12
|
||||
#define GUI_TX_TYPE_HTLC_DEPOSIT 13
|
||||
#define GUI_TX_TYPE_HTLC_REDEEM 14
|
||||
|
||||
|
||||
|
||||
|
|
@ -132,6 +135,62 @@ namespace currency
|
|||
END_KV_SERIALIZE_MAP()
|
||||
};
|
||||
|
||||
struct htlc_info
|
||||
{
|
||||
bool hltc_our_out_is_before_expiration;
|
||||
};
|
||||
|
||||
|
||||
struct finalize_tx_param
|
||||
{
|
||||
uint64_t unlock_time;
|
||||
std::vector<currency::extra_v> extra;
|
||||
std::vector<currency::attachment_v> attachments;
|
||||
currency::account_public_address crypt_address;
|
||||
uint8_t tx_outs_attr;
|
||||
bool shuffle;
|
||||
uint8_t flags;
|
||||
crypto::hash multisig_id;
|
||||
std::vector<currency::tx_source_entry> sources;
|
||||
std::vector<uint64_t> selected_transfers;
|
||||
std::vector<currency::tx_destination_entry> prepared_destinations;
|
||||
uint64_t expiration_time;
|
||||
crypto::public_key spend_pub_key; // only for validations
|
||||
|
||||
BEGIN_SERIALIZE_OBJECT()
|
||||
FIELD(unlock_time)
|
||||
FIELD(extra)
|
||||
FIELD(attachments)
|
||||
FIELD(crypt_address)
|
||||
FIELD(tx_outs_attr)
|
||||
FIELD(shuffle)
|
||||
FIELD(flags)
|
||||
FIELD(multisig_id)
|
||||
FIELD(sources)
|
||||
FIELD(selected_transfers)
|
||||
FIELD(prepared_destinations)
|
||||
FIELD(expiration_time)
|
||||
FIELD(spend_pub_key)
|
||||
END_SERIALIZE()
|
||||
};
|
||||
|
||||
struct finalized_tx
|
||||
{
|
||||
currency::transaction tx;
|
||||
crypto::secret_key one_time_key;
|
||||
finalize_tx_param ftp;
|
||||
std::string htlc_origin;
|
||||
std::vector<serializable_pair<uint64_t, crypto::key_image>> outs_key_images; // pairs (out_index, key_image) for each change output
|
||||
|
||||
BEGIN_SERIALIZE_OBJECT()
|
||||
FIELD(tx)
|
||||
FIELD(one_time_key)
|
||||
FIELD(ftp)
|
||||
FIELD(htlc_origin)
|
||||
FIELD(outs_key_images)
|
||||
END_SERIALIZE()
|
||||
};
|
||||
|
||||
|
||||
//---------------------------------------------------------------
|
||||
bool construct_miner_tx(size_t height, size_t median_size, const boost::multiprecision::uint128_t& already_generated_coins,
|
||||
|
|
@ -158,7 +217,8 @@ namespace currency
|
|||
|
||||
//---------------------------------------------------------------
|
||||
uint64_t get_string_uint64_hash(const std::string& str);
|
||||
bool construct_tx_out(const tx_destination_entry& de, const crypto::secret_key& tx_sec_key, size_t output_index, transaction& tx, std::set<uint16_t>& deriv_cache, uint8_t tx_outs_attr = CURRENCY_TO_KEY_OUT_RELAXED);
|
||||
bool construct_tx_out(const tx_destination_entry& de, const crypto::secret_key& tx_sec_key, size_t output_index, transaction& tx, std::set<uint16_t>& deriv_cache, const account_keys& self, finalized_tx& result, uint8_t tx_outs_attr = CURRENCY_TO_KEY_OUT_RELAXED);
|
||||
bool construct_tx_out(const tx_destination_entry& de, const crypto::secret_key& tx_sec_key, size_t output_index, transaction& tx, std::set<uint16_t>& deriv_cache, const account_keys& self, uint8_t tx_outs_attr = CURRENCY_TO_KEY_OUT_RELAXED);
|
||||
bool validate_alias_name(const std::string& al);
|
||||
bool validate_password(const std::string& password);
|
||||
void get_attachment_extra_info_details(const std::vector<attachment_v>& attachment, extra_attachment_info& eai);
|
||||
|
|
@ -181,6 +241,7 @@ namespace currency
|
|||
uint8_t tx_outs_attr = CURRENCY_TO_KEY_OUT_RELAXED,
|
||||
bool shuffle = true,
|
||||
uint64_t flags = 0);
|
||||
|
||||
bool construct_tx(const account_keys& sender_account_keys,
|
||||
const std::vector<tx_source_entry>& sources,
|
||||
const std::vector<tx_destination_entry>& destinations,
|
||||
|
|
@ -195,6 +256,9 @@ namespace currency
|
|||
bool shuffle = true,
|
||||
uint64_t flags = 0);
|
||||
|
||||
bool construct_tx(const account_keys& sender_account_keys, const finalize_tx_param& param, finalized_tx& result);
|
||||
|
||||
|
||||
bool sign_multisig_input_in_tx(currency::transaction& tx, size_t ms_input_index, const currency::account_keys& keys, const currency::transaction& source_tx, bool *p_is_input_fully_signed = nullptr);
|
||||
|
||||
bool sign_extra_alias_entry(extra_alias_entry& ai, const crypto::public_key& pkey, const crypto::secret_key& skey);
|
||||
|
|
@ -210,6 +274,7 @@ namespace currency
|
|||
bool is_out_to_acc(const account_keys& acc, const txout_to_key& out_key, const crypto::key_derivation& derivation, size_t output_index);
|
||||
bool is_out_to_acc(const account_keys& acc, const txout_multisig& out_multisig, const crypto::key_derivation& derivation, size_t output_index);
|
||||
bool lookup_acc_outs(const account_keys& acc, const transaction& tx, const crypto::public_key& tx_pub_key, std::vector<size_t>& outs, uint64_t& money_transfered, crypto::key_derivation& derivation);
|
||||
bool lookup_acc_outs(const account_keys& acc, const transaction& tx, const crypto::public_key& tx_pub_key, std::vector<size_t>& outs, uint64_t& money_transfered, crypto::key_derivation& derivation, std::list<htlc_info>& htlc_info_list);
|
||||
bool lookup_acc_outs(const account_keys& acc, const transaction& tx, std::vector<size_t>& outs, uint64_t& money_transfered, crypto::key_derivation& derivation);
|
||||
bool get_tx_fee(const transaction& tx, uint64_t & fee);
|
||||
uint64_t get_tx_fee(const transaction& tx);
|
||||
|
|
@ -220,10 +285,13 @@ namespace currency
|
|||
std::string short_hash_str(const crypto::hash& h);
|
||||
bool is_mixattr_applicable_for_fake_outs_counter(uint8_t mix_attr, uint64_t fake_attr_count);
|
||||
bool is_tx_spendtime_unlocked(uint64_t unlock_time, uint64_t current_blockchain_size, uint64_t current_time);
|
||||
crypto::key_derivation get_encryption_key_derivation(bool is_income, const transaction& tx, const account_keys& acc_keys);
|
||||
bool decrypt_payload_items(bool is_income, const transaction& tx, const account_keys& acc_keys, std::vector<payload_items_v>& decrypted_items);
|
||||
void encrypt_attachments(transaction& tx, const account_keys& sender_keys, const account_public_address& destination_addr, const keypair& tx_random_key);
|
||||
bool is_derivation_used_to_encrypt(const transaction& tx, const crypto::key_derivation& derivation);
|
||||
void load_wallet_transfer_info_flags(tools::wallet_public::wallet_transfer_info& x);
|
||||
uint64_t get_tx_type(const transaction& tx);
|
||||
uint64_t get_tx_type_ex(const transaction& tx, tx_out& htlc_out, txin_htlc& htlc_in);
|
||||
size_t get_multisig_out_index(const std::vector<tx_out>& outs);
|
||||
size_t get_multisig_in_index(const std::vector<txin_v>& inputs);
|
||||
|
||||
|
|
@ -255,8 +323,8 @@ namespace currency
|
|||
bool check_inputs_overflow(const transaction& tx);
|
||||
uint64_t get_block_height(const transaction& coinbase);
|
||||
uint64_t get_block_height(const block& b);
|
||||
std::vector<txout_v> relative_output_offsets_to_absolute(const std::vector<txout_v>& off);
|
||||
std::vector<txout_v> absolute_output_offsets_to_relative(const std::vector<txout_v>& off);
|
||||
std::vector<txout_ref_v> relative_output_offsets_to_absolute(const std::vector<txout_ref_v>& off);
|
||||
std::vector<txout_ref_v> absolute_output_offsets_to_relative(const std::vector<txout_ref_v>& off);
|
||||
|
||||
// prints amount in format "3.14", "0.0"
|
||||
std::string print_money_brief(uint64_t amount);
|
||||
|
|
@ -267,7 +335,7 @@ namespace currency
|
|||
bool set_payment_id_to_tx(std::vector<attachment_v>& att, const std::string& payment_id);
|
||||
bool add_padding_to_tx(transaction& tx, size_t count);
|
||||
bool is_service_tx(const transaction& tx);
|
||||
bool is_mixin_tx(const transaction& tx);
|
||||
bool does_tx_have_only_mixin_inputs(const transaction& tx);
|
||||
bool is_showing_sender_addres(const transaction& tx);
|
||||
uint64_t get_amount_for_zero_pubkeys(const transaction& tx);
|
||||
//std::string get_comment_from_tx(const transaction& tx);
|
||||
|
|
@ -293,7 +361,7 @@ namespace currency
|
|||
void append_per_block_increments_for_tx(const transaction& tx, std::unordered_map<uint64_t, uint32_t>& gindices);
|
||||
std::string get_word_from_timstamp(uint64_t timestamp, bool use_password);
|
||||
uint64_t get_timstamp_from_word(std::string word, bool& password_used);
|
||||
|
||||
std::string generate_origin_for_htlc(const txout_htlc& htlc, const account_keys& acc_keys);
|
||||
template<class t_txin_v>
|
||||
typename std::conditional<std::is_const<t_txin_v>::value, const std::vector<txin_etc_details_v>, std::vector<txin_etc_details_v> >::type& get_txin_etc_options(t_txin_v& in)
|
||||
{
|
||||
|
|
@ -304,6 +372,8 @@ namespace currency
|
|||
|
||||
if (in.type() == typeid(txin_to_key))
|
||||
return boost::get<txin_to_key>(in).etc_details;
|
||||
else if (in.type() == typeid(txin_htlc))
|
||||
return boost::get<txin_htlc>(in).etc_details;
|
||||
else if (in.type() == typeid(txin_multisig))
|
||||
return boost::get<txin_multisig>(in).etc_details;
|
||||
else
|
||||
|
|
@ -434,16 +504,29 @@ namespace currency
|
|||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------
|
||||
template<class add_type_t, class container_type>
|
||||
add_type_t& get_or_add_field_to_variant_vector(container_type& container)
|
||||
{
|
||||
for (auto& ev : container)
|
||||
{
|
||||
if (ev.type() == typeid(add_type_t))
|
||||
return boost::get<add_type_t>(ev);
|
||||
}
|
||||
container.push_back(add_type_t());
|
||||
return boost::get<add_type_t>(container.back());
|
||||
}
|
||||
//---------------------------------------------------------------
|
||||
template<class extra_t>
|
||||
extra_t& get_or_add_field_to_extra(std::vector<extra_v>& extra)
|
||||
{
|
||||
for (auto& ev : extra)
|
||||
{
|
||||
if (ev.type() == typeid(extra_t))
|
||||
return boost::get<extra_t>(ev);
|
||||
}
|
||||
extra.push_back(extra_t());
|
||||
return boost::get<extra_t>(extra.back());
|
||||
// for (auto& ev : extra)
|
||||
// {
|
||||
// if (ev.type() == typeid(extra_t))
|
||||
// return boost::get<extra_t>(ev);
|
||||
// }
|
||||
// extra.push_back(extra_t());
|
||||
// return boost::get<extra_t>(extra.back());
|
||||
return get_or_add_field_to_variant_vector<extra_t>(extra);
|
||||
}
|
||||
//---------------------------------------------------------------
|
||||
template<class variant_t, class variant_type_t>
|
||||
|
|
@ -570,6 +653,7 @@ namespace currency
|
|||
size_t operator()(const txin_gen& /*txin*/) const { return 0; }
|
||||
size_t operator()(const txin_to_key& txin) const { return txin.key_offsets.size(); }
|
||||
size_t operator()(const txin_multisig& txin) const { return txin.sigs_count; }
|
||||
size_t operator()(const txin_htlc& txin) const { return 1; }
|
||||
};
|
||||
|
||||
return boost::apply_visitor(txin_signature_size_visitor(), tx_in);
|
||||
|
|
@ -579,6 +663,8 @@ namespace currency
|
|||
{
|
||||
if (in.type().hash_code() == typeid(txin_to_key).hash_code())
|
||||
return &boost::get<txin_to_key>(in).etc_details;
|
||||
if (in.type().hash_code() == typeid(txin_htlc).hash_code())
|
||||
return &boost::get<txin_htlc>(in).etc_details;
|
||||
if (in.type().hash_code() == typeid(txin_multisig).hash_code())
|
||||
return &boost::get<txin_multisig>(in).etc_details;
|
||||
return nullptr;
|
||||
|
|
@ -588,6 +674,8 @@ namespace currency
|
|||
{
|
||||
if (in.type().hash_code() == typeid(txin_to_key).hash_code())
|
||||
return &boost::get<txin_to_key>(in).etc_details;
|
||||
if (in.type().hash_code() == typeid(txin_htlc).hash_code())
|
||||
return &boost::get<txin_htlc>(in).etc_details;
|
||||
if (in.type().hash_code() == typeid(txin_multisig).hash_code())
|
||||
return &boost::get<txin_multisig>(in).etc_details;
|
||||
return nullptr;
|
||||
|
|
|
|||
|
|
@ -129,6 +129,22 @@ namespace currency
|
|||
}
|
||||
return found;
|
||||
}
|
||||
inline
|
||||
const txin_to_key& get_to_key_input_from_txin_v(const txin_v& in_v)
|
||||
{
|
||||
if (in_v.type() == typeid(txin_to_key))
|
||||
{
|
||||
return boost::get<txin_to_key>(in_v);
|
||||
}
|
||||
else if (in_v.type() == typeid(txin_htlc))
|
||||
{
|
||||
const txin_htlc& in = boost::get<txin_htlc>(in_v);
|
||||
return static_cast<const txin_to_key&>(in);
|
||||
}
|
||||
else {
|
||||
ASSERT_MES_AND_THROW("[get_to_key_input_from_txin_v] Wrong type " << in_v.type().name());
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------
|
||||
template<typename variant_container_t>
|
||||
bool check_allowed_types_in_variant_container(const variant_container_t& container, const std::unordered_set<std::type_index>& allowed_types, bool elements_must_be_unique = true)
|
||||
|
|
|
|||
|
|
@ -262,10 +262,10 @@ namespace currency
|
|||
std::unordered_set<crypto::key_image> ki;
|
||||
BOOST_FOREACH(const auto& in, tx.vin)
|
||||
{
|
||||
if (in.type() == typeid(txin_to_key))
|
||||
if (in.type() == typeid(txin_to_key) || in.type() == typeid(txin_htlc))
|
||||
{
|
||||
CHECKED_GET_SPECIFIC_VARIANT(in, const txin_to_key, tokey_in, false);
|
||||
if (!ki.insert(tokey_in.k_image).second)
|
||||
|
||||
if (!ki.insert(get_to_key_input_from_txin_v(in).k_image).second)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ namespace currency
|
|||
{
|
||||
struct tx_source_entry
|
||||
{
|
||||
typedef serializable_pair<txout_v, crypto::public_key> output_entry; // txout_v is either global output index or ref_by_id; public_key - is output ephemeral pub key
|
||||
typedef serializable_pair<txout_ref_v, crypto::public_key> output_entry; // txout_v is either global output index or ref_by_id; public_key - is output ephemeral pub key
|
||||
|
||||
std::vector<output_entry> outputs; //index + key
|
||||
uint64_t real_output; //index in outputs vector of real output_entry
|
||||
|
|
@ -28,6 +28,7 @@ namespace currency
|
|||
size_t ms_sigs_count; //if txin_multisig: must be equal to output's minimum_sigs
|
||||
size_t ms_keys_count; //if txin_multisig: must be equal to size of output's keys container
|
||||
bool separately_signed_tx_complete; //for separately signed tx only: denotes the last source entry in complete tx to explicitly mark the final step of tx creation
|
||||
std::string htlc_origin; //for htlc, specify origin
|
||||
|
||||
bool is_multisig() const { return ms_sigs_count > 0; }
|
||||
|
||||
|
|
@ -42,21 +43,38 @@ namespace currency
|
|||
FIELD(ms_sigs_count)
|
||||
FIELD(ms_keys_count)
|
||||
FIELD(separately_signed_tx_complete)
|
||||
END_SERIALIZE()
|
||||
FIELD(htlc_origin)
|
||||
END_SERIALIZE()
|
||||
};
|
||||
|
||||
|
||||
//if this struct is present, then creating htlc out, expiration -> number of blocks that htlc proposal is active
|
||||
struct destination_option_htlc_out
|
||||
{
|
||||
uint64_t expiration;
|
||||
crypto::hash htlc_hash;
|
||||
|
||||
BEGIN_SERIALIZE_OBJECT()
|
||||
FIELD(expiration)
|
||||
FIELD(htlc_hash)
|
||||
END_SERIALIZE()
|
||||
};
|
||||
|
||||
|
||||
struct tx_destination_entry
|
||||
{
|
||||
uint64_t amount; //money
|
||||
std::list<account_public_address> addr; //destination address, in case of 1 address - txout_to_key, in case of more - txout_multisig
|
||||
size_t minimum_sigs; // if txout_multisig: minimum signatures that are required to spend this output (minimum_sigs <= addr.size()) IF txout_to_key - not used
|
||||
uint64_t amount_to_provide; //amount money that provided by initial creator of tx, used with partially created transactions
|
||||
uint64_t amount; //money
|
||||
std::list<account_public_address> addr; //destination address, in case of 1 address - txout_to_key, in case of more - txout_multisig
|
||||
size_t minimum_sigs; //if txout_multisig: minimum signatures that are required to spend this output (minimum_sigs <= addr.size()) IF txout_to_key - not used
|
||||
uint64_t amount_to_provide; //amount money that provided by initial creator of tx, used with partially created transactions
|
||||
uint64_t unlock_time;
|
||||
|
||||
tx_destination_entry() : amount(0), minimum_sigs(0), amount_to_provide(0), unlock_time(0){}
|
||||
tx_destination_entry(uint64_t a, const account_public_address& ad) : amount(a), addr(1, ad), minimum_sigs(0), amount_to_provide(0), unlock_time(0){}
|
||||
tx_destination_entry(uint64_t a, const account_public_address& ad, uint64_t ut) : amount(a), addr(1, ad), minimum_sigs(0), amount_to_provide(0), unlock_time(ut) {}
|
||||
tx_destination_entry(uint64_t a, const std::list<account_public_address>& addr) : amount(a), addr(addr), minimum_sigs(addr.size()), amount_to_provide(0), unlock_time(0){}
|
||||
destination_option_htlc_out htlc_options; //htlc options
|
||||
|
||||
|
||||
tx_destination_entry() : amount(0), minimum_sigs(0), amount_to_provide(0), unlock_time(0), htlc_options(destination_option_htlc_out()){}
|
||||
tx_destination_entry(uint64_t a, const account_public_address& ad) : amount(a), addr(1, ad), minimum_sigs(0), amount_to_provide(0), unlock_time(0), htlc_options(destination_option_htlc_out()) {}
|
||||
tx_destination_entry(uint64_t a, const account_public_address& ad, uint64_t ut) : amount(a), addr(1, ad), minimum_sigs(0), amount_to_provide(0), unlock_time(ut), htlc_options(destination_option_htlc_out()) {}
|
||||
tx_destination_entry(uint64_t a, const std::list<account_public_address>& addr) : amount(a), addr(addr), minimum_sigs(addr.size()), amount_to_provide(0), unlock_time(0), htlc_options(destination_option_htlc_out()) {}
|
||||
|
||||
BEGIN_SERIALIZE_OBJECT()
|
||||
FIELD(amount)
|
||||
|
|
@ -64,6 +82,7 @@ namespace currency
|
|||
FIELD(minimum_sigs)
|
||||
FIELD(amount_to_provide)
|
||||
FIELD(unlock_time)
|
||||
FIELD(htlc_options)
|
||||
END_SERIALIZE()
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -102,6 +102,14 @@ namespace currency
|
|||
return false;
|
||||
}
|
||||
|
||||
if (!m_blockchain.validate_tx_for_hardfork_specific_terms(tx, id))
|
||||
{
|
||||
//
|
||||
LOG_ERROR("Transaction " << id <<" doesn't fit current hardfork");
|
||||
tvc.m_verification_failed = true;
|
||||
return false;
|
||||
}
|
||||
|
||||
TIME_MEASURE_START_PD(tx_processing_time);
|
||||
TIME_MEASURE_START_PD(check_inputs_types_supported_time);
|
||||
if(!check_inputs_types_supported(tx))
|
||||
|
|
|
|||
|
|
@ -192,25 +192,6 @@ namespace currency
|
|||
key_image_cache m_key_images;
|
||||
mutable epee::critical_section m_remove_stuck_txs_lock;
|
||||
|
||||
|
||||
/************************************************************************/
|
||||
/* */
|
||||
/************************************************************************/
|
||||
class amount_visitor: public boost::static_visitor<uint64_t>
|
||||
{
|
||||
public:
|
||||
uint64_t operator()(const txin_to_key& tx) const
|
||||
{
|
||||
return tx.amount;
|
||||
}
|
||||
uint64_t operator()(const txin_gen& /*tx*/) const
|
||||
{
|
||||
CHECK_AND_ASSERT_MES(false, 0, "coinbase transaction in memory pool");
|
||||
return 0;
|
||||
}
|
||||
uint64_t operator()(const txin_multisig& in) const { return in.amount; }
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -30,6 +30,12 @@ namespace currency
|
|||
if (!ki.insert(tokey_in.k_image).second)
|
||||
return false;
|
||||
}
|
||||
else if (in.type() == typeid(txin_htlc))
|
||||
{
|
||||
CHECKED_GET_SPECIFIC_VARIANT(in, const txin_htlc, htlc_in, false);
|
||||
if (!ki.insert(htlc_in.k_image).second)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ public:
|
|||
m_cmd_binder.set_handler("print_bc_outs_stats", boost::bind(&daemon_commands_handler::print_bc_outs_stats, this, _1));
|
||||
m_cmd_binder.set_handler("print_block", boost::bind(&daemon_commands_handler::print_block, this, _1), "Print block, print_block <block_hash> | <block_height>");
|
||||
m_cmd_binder.set_handler("print_block_info", boost::bind(&daemon_commands_handler::print_block_info, this, _1), "Print block info, print_block <block_hash> | <block_height>");
|
||||
m_cmd_binder.set_handler("print_tx_prun_info", boost::bind(&daemon_commands_handler::print_tx_prun_info, this, _1), "Print tx prunning info");
|
||||
m_cmd_binder.set_handler("print_tx", boost::bind(&daemon_commands_handler::print_tx, this, _1), "Print transaction, print_tx <transaction_hash>");
|
||||
m_cmd_binder.set_handler("start_mining", boost::bind(&daemon_commands_handler::start_mining, this, _1), "Start mining for specified address, start_mining <addr> [threads=1]");
|
||||
m_cmd_binder.set_handler("stop_mining", boost::bind(&daemon_commands_handler::stop_mining, this, _1), "Stop mining");
|
||||
|
|
@ -630,6 +631,56 @@ private:
|
|||
return true;
|
||||
}
|
||||
//--------------------------------------------------------------------------------
|
||||
bool print_tx_prun_info(const std::vector<std::string>& arg)
|
||||
{
|
||||
currency::blockchain_storage& bcs = m_srv.get_payload_object().get_core().get_blockchain_storage();
|
||||
|
||||
size_t txs = 0;
|
||||
size_t pruned_txs = 0;
|
||||
size_t signatures = 0;
|
||||
size_t attachments = 0;
|
||||
size_t blocks = 0;
|
||||
|
||||
uint64_t last_block_height = bcs.get_top_block_height();
|
||||
|
||||
LOG_PRINT_MAGENTA("start getting stats from 0 to " << last_block_height << " block, please wait ...", LOG_LEVEL_0);
|
||||
|
||||
for (uint64_t height = 0; height <= last_block_height; height++, blocks++)
|
||||
{
|
||||
currency::block_extended_info bei = AUTO_VAL_INIT(bei);
|
||||
bool r = bcs.get_block_extended_info_by_height(height, bei);
|
||||
if (!r)
|
||||
{
|
||||
LOG_PRINT_RED("Failed to get block #" << height, LOG_LEVEL_0);
|
||||
break;
|
||||
}
|
||||
|
||||
for (const auto& h : bei.bl.tx_hashes)
|
||||
{
|
||||
auto ptx = bcs.get_tx(h);
|
||||
CHECK_AND_ASSERT_MES(ptx != nullptr, false, "failed to find transaction " << h << " in blockchain index, in block on height = " << height);
|
||||
|
||||
if (ptx->signatures.size() == 0)
|
||||
pruned_txs += 1;
|
||||
|
||||
txs += 1;
|
||||
signatures += ptx->signatures.size();
|
||||
attachments += ptx->attachment.size();
|
||||
}
|
||||
}
|
||||
|
||||
LOG_PRINT_MAGENTA(ENDL << "blockchain pruning stats:" << ENDL <<
|
||||
" last block height: " << last_block_height << ENDL <<
|
||||
" blocks processed: " << blocks << ENDL <<
|
||||
" total txs: " << txs << ENDL <<
|
||||
" pruned txs: " << pruned_txs << ENDL <<
|
||||
" total signatures: " << signatures << ENDL <<
|
||||
" total attachments: " << attachments << ENDL <<
|
||||
(pruned_txs == 0 ? "*** The database seems to be unpruned!" : "The database contains pruned transactions."), LOG_LEVEL_0);
|
||||
|
||||
return true;
|
||||
}
|
||||
//--------------------------------------------------------------------------------
|
||||
bool print_tx(const std::vector<std::string>& args)
|
||||
{
|
||||
if (args.empty())
|
||||
|
|
|
|||
2
src/gui/qt-daemon/.gitignore
vendored
|
|
@ -1 +1 @@
|
|||
*.user
|
||||
*.user
|
||||
|
|
|
|||
|
|
@ -4,9 +4,7 @@
|
|||
<dict>
|
||||
<key>LSEnvironment</key>
|
||||
<dict>
|
||||
<key>QTWEBENGINE_REMOTE_DEBUGGING</key>
|
||||
<string>11113</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>BuildMachineOSBuild</key>
|
||||
<string>14E46</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
|
|
|
|||
|
|
@ -1,15 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="icons" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 384 384" style="enable-background:new 0 0 384 384;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#FFFFFF;}
|
||||
</style>
|
||||
<path id="account" class="st0" d="M192,0C86,0,0,86,0,192s86,192,192,192s192-86,192-192S298,0,192,0z M86,86
|
||||
c28.3-28.3,66-43.9,106-43.9S269.7,57.7,298,86c28.3,28.3,43.9,66,43.9,106c0,26.4-6.8,51.7-19.4,74c-12.7-12.8-28.6-23.3-46.7-31
|
||||
c8.4-15.6,13.2-33.7,13.2-53c0-32.3-9.8-59.2-28.3-78.1c-17.2-17.5-41.6-27.2-68.7-27.2s-51.5,9.7-68.7,27.2
|
||||
C104.8,122.8,95,149.7,95,182c0,19.2,4.8,37.3,13.1,52.8C90,242.5,74,252.9,61.3,265.7c-12.6-22.2-19.3-47.4-19.3-73.7
|
||||
C42.1,151.9,57.7,114.3,86,86z M137,182c0-40.2,20.1-63.3,55-63.3s55,23.1,55,63.3c0,34.9-24.7,63.3-55,63.3S137,216.9,137,182z
|
||||
M87.3,299.3c1.4-1.6,3-3.3,4.9-5.1c11.7-11.3,26.9-19.8,45.1-25.4c15.6,11.6,34.4,18.4,54.7,18.4c20.2,0,39-6.8,54.6-18.3
|
||||
c26.4,8.1,41.7,21.2,49.9,30.6c-28.1,27.4-65.1,42.4-104.5,42.4C152.6,341.9,115.5,326.8,87.3,299.3z"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.2 KiB |
|
|
@ -1,9 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#FFFFFF;}
|
||||
</style>
|
||||
<path class="st0" d="M16,0C7.2,0,0,7.2,0,16s7.2,16,16,16s16-7.2,16-16S24.8,0,16,0z M18,25h-4v-4h4V25z M18,18h-4V7h4V18z"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 529 B |
|
|
@ -1,9 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#FFFFFF;}
|
||||
</style>
|
||||
<polygon class="st0" points="0,8 32,8 16,24"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 453 B |
|
|
@ -1,9 +0,0 @@
|
|||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="451.846px" height="451.847px" viewBox="0 0 451.846 451.847" style="enable-background:new 0 0 451.846 451.847;"
|
||||
xml:space="preserve">
|
||||
<g>
|
||||
<path d="M345.441,248.292L151.154,442.573c-12.359,12.365-32.397,12.365-44.75,0c-12.354-12.354-12.354-32.391,0-44.744
|
||||
L278.318,225.92L106.409,54.017c-12.354-12.359-12.354-32.394,0-44.748c12.354-12.359,32.391-12.359,44.75,0l194.287,194.284
|
||||
c6.177,6.18,9.262,14.271,9.262,22.366C354.708,234.018,351.617,242.115,345.441,248.292z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 606 B |
|
|
@ -1,9 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#FFFFFF;}
|
||||
</style>
|
||||
<polygon class="st0" points="0,24 32,24 16,8"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 454 B |
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Setup master password",
|
||||
"SETUP_CONFIRM_PASS": "Confirm the password",
|
||||
"MASTER_PASS": "Master password",
|
||||
"BUTTON_NEXT": "Next",
|
||||
"BUTTON_SKIP": "Skip",
|
||||
"BUTTON_RESET": "Reset",
|
||||
"INCORRECT_PASSWORD": "Invalid password",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"CONFIRM_REQUIRED": "Confirmation is required",
|
||||
"MISMATCH": "Mismatch"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Go back"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"SAVE_PHRASE": "Save your seed phrase",
|
||||
"OPEN_WALLET": "Open existing wallet",
|
||||
"RESTORE_WALLET": "Restore from backup",
|
||||
"WALLET_DETAILS": "Wallet details",
|
||||
"ASSIGN_ALIAS": "Assign alias",
|
||||
"EDIT_ALIAS": "Edit alias",
|
||||
"TRANSFER_ALIAS": "Transfer alias",
|
||||
"CONTRACTS": "Contracts",
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"OLD_PURCHASE": "Purchase"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Wallets",
|
||||
"ADD_NEW": "+ Add",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "New offers/Messages",
|
||||
"SYNCING": "Syncing wallet"
|
||||
},
|
||||
"CONTACTS": "Contacts",
|
||||
"SETTINGS": "Settings",
|
||||
"LOG_OUT": "Log out",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "System error",
|
||||
"COMPLETE": "Completion",
|
||||
"SYNCING": "Syncing blockchain",
|
||||
"LOADING": "Loading blockchain data"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Update available",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Get new update.</span><br><span>Update is recommended!</span>",
|
||||
"IMPORTANT": "Update available",
|
||||
"IMPORTANT_HINT": "Important update!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Get new update.</span><br><span>Important update!</span>",
|
||||
"CRITICAL": "Update available",
|
||||
"CRITICAL_HINT": "Critical update!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Critical update available.</span><i class=\"icon\"></i><span>Update strongly recommended!</span>",
|
||||
"TIME": "System time differs from network",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Wrong system time!</span><br><span>Check and repair your system time.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Create or open the wallet to start using Zano",
|
||||
"BUTTON_NEW_WALLET": "Create new wallet",
|
||||
"BUTTON_OPEN_WALLET": "Open existing wallet",
|
||||
"BUTTON_RESTORE_BACKUP": "Restore from backup",
|
||||
"HELP": "How to create wallet?",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Set wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"TITLE_SAVE": "Save the wallet file.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open",
|
||||
"FILE_NOT_FOUND1": "Wallet file not found",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open wallet\" button.",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Type wallet password",
|
||||
"LABEL": "Password to this wallet",
|
||||
"OPEN": "Open wallet",
|
||||
"SKIP": "Skip",
|
||||
"NOT_FOUND": "Not found"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_PHRASE_KEY": "Seed phrase / tracking seed",
|
||||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match",
|
||||
"KEY_REQUIRED": "Key is required",
|
||||
"KEY_NOT_VALID": "Key not valid"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Create wallet",
|
||||
"BUTTON_COPY": "Copy"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"SELECT_LOCATION": "Select wallet location",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"RESTORE_WALLET": "Restore from backup"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings",
|
||||
"DARK_THEME": "Dark theme",
|
||||
"WHITE_THEME": "White theme",
|
||||
"GRAY_THEME": "Grey theme",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Lock app after:",
|
||||
"TIME1": "5 min",
|
||||
"TIME2": "15 min",
|
||||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
"NEW": "New password",
|
||||
"CONFIRM": "New password confirmation",
|
||||
"BUTTON": "Save"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"PASS_NOT_MATCH": "Old password not match",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
},
|
||||
"LAST_BUILD": "Current build: {{value}}",
|
||||
"APP_LOG_TITLE": "Log level:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Register an alias",
|
||||
"DETAILS": "Details",
|
||||
"LOCK": "Lock",
|
||||
"AVAILABLE_BALANCE": "Available <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Locked <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "What does that mean?",
|
||||
"TABS": {
|
||||
"SEND": "Send",
|
||||
"RECEIVE": "Receive",
|
||||
"HISTORY": "History",
|
||||
"CONTRACTS": "Contracts",
|
||||
"MESSAGES": "Messages",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_FILE_LOCATION": "Wallet file location",
|
||||
"LABEL_SEED_PHRASE": "Seed phrase",
|
||||
"SEED_PHRASE_HINT": "Click to reveal the seed phrase",
|
||||
"BUTTON_SAVE": "Save",
|
||||
"BUTTON_REMOVE": "Close wallet",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later."
|
||||
},
|
||||
"COST": "Alias fee {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"ONE_ALIAS": "You can create only one alias per wallet",
|
||||
"REQUEST_ADD_REG": "The alias will be assigned within 10 minutes"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "You do not have enough funds to change the comment to this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"COST": "Fee {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Edit"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transfer to",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "No wallet with this account exists",
|
||||
"ALIAS_EXISTS": "This account already has an alias",
|
||||
"NO_MONEY": "You do not have enough funds to transfer this alias"
|
||||
},
|
||||
"COST": "Transfer fee {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transfer",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"REQUEST_SEND_REG": "The alias will be transferred within 10 minutes"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Address",
|
||||
"AMOUNT": "Amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"HIDE": "Hide your wallet address from recipient",
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "Transaction sent",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"ALIAS_NOT_VALID": "Alias not valid",
|
||||
"AMOUNT_REQUIRED": "Amount is required",
|
||||
"AMOUNT_ZERO": "Amount is zero",
|
||||
"FEE_REQUIRED": "Fee is required",
|
||||
"FEE_MINIMUM": "Minimum fee: {{fee}}",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
"STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Locked till {{date}}",
|
||||
"SEND": "Sent",
|
||||
"RECEIVED": "Received",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"FEE": "Fee",
|
||||
"ADDRESS": "Address",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "Payment ID",
|
||||
"ID": "Transaction ID",
|
||||
"SIZE": "Transaction size",
|
||||
"SIZE_VALUE": "{{value}} bytes",
|
||||
"HEIGHT": "Height",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Comment"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "hidden",
|
||||
"UNDEFINED": "Undefined",
|
||||
"COMPLETE_BUYER": "Contract completed",
|
||||
"COMPLETE_SELLER": "Contract completed",
|
||||
"CREATE_ALIAS": "Fee for assigning alias",
|
||||
"UPDATE_ALIAS": "Fee for editing alias",
|
||||
"POW_REWARD": "POW reward",
|
||||
"POS_REWARD": "POS reward",
|
||||
"CREATE_CONTRACT": "Contract proposal",
|
||||
"PLEDGE_CONTRACT": "Contract deposit",
|
||||
"NULLIFY_CONTRACT": "Burn deposits",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Cancellation request",
|
||||
"CANCEL_CONTRACT": "Cancel and return deposits"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "No active contracts",
|
||||
"CONTRACTS": "Contracts",
|
||||
"PURCHASE": "Purchase",
|
||||
"SELL": "Sell",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"STATUS": "Status",
|
||||
"COMMENTS": "Comments",
|
||||
"PURCHASE_BUTTON": "New Purchase",
|
||||
"LISTING_BUTTON": "Create listing",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Less than an hour to respond",
|
||||
"REMAINING_ONE": "{{time}} hour remains",
|
||||
"REMAINING_MANY": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT": "{{time}} hours remain",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} hour remains",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_ONE_WAITING": "Waiting for {{time}} hour",
|
||||
"REMAINING_MANY_WAITING": "Waiting for {{time}} hours",
|
||||
"REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "New contract proposal",
|
||||
"IGNORED": "You ignored contract proposal",
|
||||
"ACCEPTED": "Contract started",
|
||||
"WAIT": "Waiting for contract confirmation",
|
||||
"WAITING_BUYER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "You ignored cancellation proposal",
|
||||
"EXPIRED": "Contract proposal has expired"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "Waiting for response",
|
||||
"IGNORED": "Seller ignored your contract proposal",
|
||||
"ACCEPTED": "Seller accepted your contract proposal",
|
||||
"WAIT": "Waiting for deposits confirmation",
|
||||
"WAITING_SELLER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"WAITING_CANCEL": "Waiting for contract cancellation",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract",
|
||||
"EXPIRED": "The contract proposal has expired"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Description",
|
||||
"SELLER": "Seller",
|
||||
"AMOUNT": "Amount",
|
||||
"YOUR_DEPOSIT": "Your deposit",
|
||||
"SELLER_DEPOSIT": "Seller deposit",
|
||||
"BUYER_DEPOSIT": "Buyer deposit",
|
||||
"SAME_AMOUNT": "Same amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"SEND_BUTTON": "Send",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Description required",
|
||||
"DESC_MAXIMUM": "Maximum field length reached",
|
||||
"SELLER_REQUIRED": "Address required",
|
||||
"SELLER_NOT_VALID": "Invalid address",
|
||||
"ALIAS_NOT_VALID": "Invalid alias",
|
||||
"AMOUNT_REQUIRED": "Amount required",
|
||||
"AMOUNT_ZERO": "Amount cannot be zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Deposit required",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Seller deposit required",
|
||||
"SELLER_SAME": "Use separate account",
|
||||
"COMMENT_MAXIMUM": "Maximum field length reached"
|
||||
},
|
||||
"PROGRESS_NEW": "New purchase",
|
||||
"PROGRESS_WAIT": "Awaiting reply",
|
||||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"WAITING_SELLER": "Waiting for response",
|
||||
"WAITING_BUYER": "Contract proposal received",
|
||||
"WAITING_CONFIRMATION": "Waiting for deposits confirmation",
|
||||
"WAITING_DELIVERY": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"IGNORED_BUYER": "Contract proposal ignored",
|
||||
"IGNORED_SELLER": "The seller ignored your contract proposal",
|
||||
"PROPOSAL_CANCEL_SELLER": "Cancellation request sent",
|
||||
"PROPOSAL_CANCEL_BUYER": "Cancellation request received",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract",
|
||||
"IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"EXPIRED": "Contract proposal expired",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contract started",
|
||||
"IGNORED_ACCEPT": "Contract proposal ignored",
|
||||
"BURN_PROPOSAL": "Deposits burned",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contract completed",
|
||||
"SEND_CANCEL_PROPOSAL": "Cancellation request sent",
|
||||
"IGNORED_CANCEL": "Contract cancellation proposal ignored",
|
||||
"DEALS_CANCELED_WAIT": "Cancellation in progress",
|
||||
"WAITING_TIME": "Response time",
|
||||
"NEED_MONEY": "Insufficient funds",
|
||||
"BUTTON_MAKE_PLEDGE": "Accept and make deposit",
|
||||
"BUTTON_IGNORE": "Ignore and hide offer",
|
||||
"BUTTON_NULLIFY": "Terminate and burn deposits",
|
||||
"BUTTON_RECEIVED": "Complete and release deposits",
|
||||
"BUTTON_CANCEL_BUYER": "Cancel and return deposits",
|
||||
"BUTTON_NOT_CANCEL": "Ignore request",
|
||||
"BUTTON_CANCEL_SELLER": "Confirm and return deposits",
|
||||
"HOUR": "hour",
|
||||
"HOURS": "hours",
|
||||
"CANCEL": "Cancel",
|
||||
"NULLIFY_QUESTION": "Are you sure you want to burn both deposits?",
|
||||
"BUTTON_NULLIFY_SHORT": "Burn",
|
||||
"WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Error",
|
||||
"SUCCESS": "Success",
|
||||
"INFO": "Information",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Send",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"TITLE": "Confirm transaction",
|
||||
"MESSAGE": {
|
||||
"SEND": "Send",
|
||||
"FROM": "From",
|
||||
"TO": "To",
|
||||
"COMMENT": "Comment"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Pending",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Time period:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 week",
|
||||
"WEEK2": "2 week",
|
||||
"MONTH1": "1 month",
|
||||
"MONTH3": "3 month",
|
||||
"MONTH6": "6 month",
|
||||
"YEAR": "1 year",
|
||||
"ALL": "All"
|
||||
},
|
||||
"TITLE_GROUP": "Group:",
|
||||
"GROUP": {
|
||||
"DAY": "day",
|
||||
"WEEK": "week",
|
||||
"MONTH": "month"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Contact list",
|
||||
"IMPORT_EXPORT": "Import or export contacts",
|
||||
"IMPORT": "Import",
|
||||
"EXPORT": "Export",
|
||||
"ADD": "Add/edit contact",
|
||||
"SEND": "Send",
|
||||
"SEND_FROM": "Send from",
|
||||
"SEND_TO": "To",
|
||||
"OPEN_ADD_WALLET": "Open/Add wallet",
|
||||
"COPY": "- Copy",
|
||||
"TABLE": {
|
||||
"NAME": "Name",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes",
|
||||
"EMPTY": "Contact list is empty"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Name",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUBLICATED": "Name is dublicated",
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"SET_MASTER_PASSWORD": "Set master password",
|
||||
"ADDRESS_DUBLICATED": "Address is dublicated",
|
||||
"MAX_LENGTH": "Maximum notes length reached",
|
||||
"NAME_LENGTH": "The name must be 4-25 characters long"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Send",
|
||||
"EDIT": "Edit",
|
||||
"DELETE": "Delete",
|
||||
"ADD": "Add contact",
|
||||
"ADD_EDIT": "Add/Save",
|
||||
"GO_TO_WALLET": "Go to wallet",
|
||||
"IMPORT_EXPORT": "Import/export"
|
||||
},
|
||||
"SUCCESS_SENT": "Contact added",
|
||||
"SUCCESS_SAVE": "Contact is edited",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Error is occured while reading file!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Not enough money",
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error: core is busy",
|
||||
"DAEMON_BUSY": "Internal error: daemon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with",
|
||||
"TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Transaction not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.",
|
||||
"TX_TYPE_NORMAL": "Error. The payment from the wallet",
|
||||
"TX_TYPE_NORMAL_TO": "to",
|
||||
"TX_TYPE_NORMAL_END": "was not completed.",
|
||||
"TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Please try again.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe",
|
||||
"TX_TYPE_COIN_BASE": "Error. The payment was not completed."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copy",
|
||||
"PASTE": "paste",
|
||||
"SELECT": "select all"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Quit",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Payment received",
|
||||
"MINED": "Mined",
|
||||
"LOCKED": "Blocked",
|
||||
"IS_MINIMIZE": "Zano application is minimized to the system tray",
|
||||
"RESTORE": "You can recover it by clicking or using the context menu",
|
||||
"TRAY_MENU_SHOW": "Resize",
|
||||
"TRAY_MENU_MINIMIZE": "Minimize"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Setup master password",
|
||||
"SETUP_CONFIRM_PASS": "Confirm the password",
|
||||
"MASTER_PASS": "Master password",
|
||||
"BUTTON_NEXT": "Next",
|
||||
"BUTTON_SKIP": "Skip",
|
||||
"BUTTON_RESET": "Reset",
|
||||
"INCORRECT_PASSWORD": "Invalid password",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"CONFIRM_REQUIRED": "Confirmation is required",
|
||||
"MISMATCH": "Mismatch"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Go back"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"SAVE_PHRASE": "Save your seed phrase",
|
||||
"OPEN_WALLET": "Open existing wallet",
|
||||
"RESTORE_WALLET": "Restore from backup",
|
||||
"WALLET_DETAILS": "Wallet details",
|
||||
"ASSIGN_ALIAS": "Assign alias",
|
||||
"EDIT_ALIAS": "Edit alias",
|
||||
"TRANSFER_ALIAS": "Transfer alias",
|
||||
"CONTRACTS": "Contracts",
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"OLD_PURCHASE": "Purchase"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Wallets",
|
||||
"ADD_NEW": "+ Add",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "New offers/Messages",
|
||||
"SYNCING": "Syncing wallet"
|
||||
},
|
||||
"CONTACTS": "Contacts",
|
||||
"SETTINGS": "Settings",
|
||||
"LOG_OUT": "Log out",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "System error",
|
||||
"COMPLETE": "Completion",
|
||||
"SYNCING": "Syncing blockchain",
|
||||
"LOADING": "Loading blockchain data"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Update available",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Get new update.</span><br><span>Update is recommended!</span>",
|
||||
"IMPORTANT": "Update available",
|
||||
"IMPORTANT_HINT": "Important update!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Get new update.</span><br><span>Important update!</span>",
|
||||
"CRITICAL": "Update available",
|
||||
"CRITICAL_HINT": "Critical update!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Critical update available.</span><i class=\"icon\"></i><span>Update strongly recommended!</span>",
|
||||
"TIME": "System time differs from network",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Wrong system time!</span><br><span>Check and repair your system time.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Create or open the wallet to start using Zano",
|
||||
"BUTTON_NEW_WALLET": "Create new wallet",
|
||||
"BUTTON_OPEN_WALLET": "Open existing wallet",
|
||||
"BUTTON_RESTORE_BACKUP": "Restore from backup",
|
||||
"HELP": "How to create wallet?",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Set wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"TITLE_SAVE": "Save the wallet file.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open",
|
||||
"FILE_NOT_FOUND1": "Wallet file not found",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open wallet\" button.",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Type wallet password",
|
||||
"LABEL": "Password to this wallet",
|
||||
"OPEN": "Open wallet",
|
||||
"SKIP": "Skip",
|
||||
"NOT_FOUND": "Not found"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_PHRASE_KEY": "Seed phrase / tracking seed",
|
||||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match",
|
||||
"KEY_REQUIRED": "Key is required",
|
||||
"KEY_NOT_VALID": "Key not valid"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Create wallet",
|
||||
"BUTTON_COPY": "Copy"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"SELECT_LOCATION": "Select wallet location",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"RESTORE_WALLET": "Restore from backup"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings",
|
||||
"DARK_THEME": "Dark theme",
|
||||
"WHITE_THEME": "White theme",
|
||||
"GRAY_THEME": "Grey theme",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Lock app after:",
|
||||
"TIME1": "5 min",
|
||||
"TIME2": "15 min",
|
||||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
"NEW": "New password",
|
||||
"CONFIRM": "New password confirmation",
|
||||
"BUTTON": "Save"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"PASS_NOT_MATCH": "Old password not match",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
},
|
||||
"LAST_BUILD": "Current build: {{value}}",
|
||||
"APP_LOG_TITLE": "Log level:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Register an alias",
|
||||
"DETAILS": "Details",
|
||||
"LOCK": "Lock",
|
||||
"AVAILABLE_BALANCE": "Available <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Locked <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "What does that mean?",
|
||||
"TABS": {
|
||||
"SEND": "Send",
|
||||
"RECEIVE": "Receive",
|
||||
"HISTORY": "History",
|
||||
"CONTRACTS": "Contracts",
|
||||
"MESSAGES": "Messages",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_FILE_LOCATION": "Wallet file location",
|
||||
"LABEL_SEED_PHRASE": "Seed phrase",
|
||||
"SEED_PHRASE_HINT": "Click to reveal the seed phrase",
|
||||
"BUTTON_SAVE": "Save",
|
||||
"BUTTON_REMOVE": "Close wallet",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later."
|
||||
},
|
||||
"COST": "Alias fee {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"ONE_ALIAS": "You can create only one alias per wallet",
|
||||
"REQUEST_ADD_REG": "The alias will be assigned within 10 minutes"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "You do not have enough funds to change the comment to this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"COST": "Fee {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Edit"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transfer to",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "No wallet with this account exists",
|
||||
"ALIAS_EXISTS": "This account already has an alias",
|
||||
"NO_MONEY": "You do not have enough funds to transfer this alias"
|
||||
},
|
||||
"COST": "Transfer fee {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transfer",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"REQUEST_SEND_REG": "The alias will be transferred within 10 minutes"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Address",
|
||||
"AMOUNT": "Amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"HIDE": "Hide your wallet address from recipient",
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "Transaction sent",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"ALIAS_NOT_VALID": "Alias not valid",
|
||||
"AMOUNT_REQUIRED": "Amount is required",
|
||||
"AMOUNT_ZERO": "Amount is zero",
|
||||
"FEE_REQUIRED": "Fee is required",
|
||||
"FEE_MINIMUM": "Minimum fee: {{fee}}",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
"STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Locked till {{date}}",
|
||||
"SEND": "Sent",
|
||||
"RECEIVED": "Received",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"FEE": "Fee",
|
||||
"ADDRESS": "Address",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "Payment ID",
|
||||
"ID": "Transaction ID",
|
||||
"SIZE": "Transaction size",
|
||||
"SIZE_VALUE": "{{value}} bytes",
|
||||
"HEIGHT": "Height",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Comment"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "hidden",
|
||||
"UNDEFINED": "Undefined",
|
||||
"COMPLETE_BUYER": "Contract completed",
|
||||
"COMPLETE_SELLER": "Contract completed",
|
||||
"CREATE_ALIAS": "Fee for assigning alias",
|
||||
"UPDATE_ALIAS": "Fee for editing alias",
|
||||
"POW_REWARD": "POW reward",
|
||||
"POS_REWARD": "POS reward",
|
||||
"CREATE_CONTRACT": "Contract proposal",
|
||||
"PLEDGE_CONTRACT": "Contract deposit",
|
||||
"NULLIFY_CONTRACT": "Burn deposits",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Cancellation request",
|
||||
"CANCEL_CONTRACT": "Cancel and return deposits"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "No active contracts",
|
||||
"CONTRACTS": "Contracts",
|
||||
"PURCHASE": "Purchase",
|
||||
"SELL": "Sell",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"STATUS": "Status",
|
||||
"COMMENTS": "Comments",
|
||||
"PURCHASE_BUTTON": "New Purchase",
|
||||
"LISTING_BUTTON": "Create listing",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Less than an hour to respond",
|
||||
"REMAINING_ONE": "{{time}} hour remains",
|
||||
"REMAINING_MANY": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT": "{{time}} hours remain",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} hour remains",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_ONE_WAITING": "Waiting for {{time}} hour",
|
||||
"REMAINING_MANY_WAITING": "Waiting for {{time}} hours",
|
||||
"REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "New contract proposal",
|
||||
"IGNORED": "You ignored contract proposal",
|
||||
"ACCEPTED": "Contract started",
|
||||
"WAIT": "Waiting for contract confirmation",
|
||||
"WAITING_BUYER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "You ignored cancellation proposal",
|
||||
"EXPIRED": "Contract proposal has expired"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "Waiting for response",
|
||||
"IGNORED": "Seller ignored your contract proposal",
|
||||
"ACCEPTED": "Seller accepted your contract proposal",
|
||||
"WAIT": "Waiting for deposits confirmation",
|
||||
"WAITING_SELLER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"WAITING_CANCEL": "Waiting for contract cancellation",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract",
|
||||
"EXPIRED": "The contract proposal has expired"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Description",
|
||||
"SELLER": "Seller",
|
||||
"AMOUNT": "Amount",
|
||||
"YOUR_DEPOSIT": "Your deposit",
|
||||
"SELLER_DEPOSIT": "Seller deposit",
|
||||
"BUYER_DEPOSIT": "Buyer deposit",
|
||||
"SAME_AMOUNT": "Same amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"SEND_BUTTON": "Send",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Description required",
|
||||
"DESC_MAXIMUM": "Maximum field length reached",
|
||||
"SELLER_REQUIRED": "Address required",
|
||||
"SELLER_NOT_VALID": "Invalid address",
|
||||
"ALIAS_NOT_VALID": "Invalid alias",
|
||||
"AMOUNT_REQUIRED": "Amount required",
|
||||
"AMOUNT_ZERO": "Amount cannot be zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Deposit required",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Seller deposit required",
|
||||
"SELLER_SAME": "Use separate account",
|
||||
"COMMENT_MAXIMUM": "Maximum field length reached"
|
||||
},
|
||||
"PROGRESS_NEW": "New purchase",
|
||||
"PROGRESS_WAIT": "Awaiting reply",
|
||||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"WAITING_SELLER": "Waiting for response",
|
||||
"WAITING_BUYER": "Contract proposal received",
|
||||
"WAITING_CONFIRMATION": "Waiting for deposits confirmation",
|
||||
"WAITING_DELIVERY": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"IGNORED_BUYER": "Contract proposal ignored",
|
||||
"IGNORED_SELLER": "The seller ignored your contract proposal",
|
||||
"PROPOSAL_CANCEL_SELLER": "Cancellation request sent",
|
||||
"PROPOSAL_CANCEL_BUYER": "Cancellation request received",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract",
|
||||
"IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"EXPIRED": "Contract proposal expired",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contract started",
|
||||
"IGNORED_ACCEPT": "Contract proposal ignored",
|
||||
"BURN_PROPOSAL": "Deposits burned",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contract completed",
|
||||
"SEND_CANCEL_PROPOSAL": "Cancellation request sent",
|
||||
"IGNORED_CANCEL": "Contract cancellation proposal ignored",
|
||||
"DEALS_CANCELED_WAIT": "Cancellation in progress",
|
||||
"WAITING_TIME": "Response time",
|
||||
"NEED_MONEY": "Insufficient funds",
|
||||
"BUTTON_MAKE_PLEDGE": "Accept and make deposit",
|
||||
"BUTTON_IGNORE": "Ignore and hide offer",
|
||||
"BUTTON_NULLIFY": "Terminate and burn deposits",
|
||||
"BUTTON_RECEIVED": "Complete and release deposits",
|
||||
"BUTTON_CANCEL_BUYER": "Cancel and return deposits",
|
||||
"BUTTON_NOT_CANCEL": "Ignore request",
|
||||
"BUTTON_CANCEL_SELLER": "Confirm and return deposits",
|
||||
"HOUR": "hour",
|
||||
"HOURS": "hours",
|
||||
"CANCEL": "Cancel",
|
||||
"NULLIFY_QUESTION": "Are you sure you want to burn both deposits?",
|
||||
"BUTTON_NULLIFY_SHORT": "Burn",
|
||||
"WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Error",
|
||||
"SUCCESS": "Success",
|
||||
"INFO": "Information",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Send",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"TITLE": "Confirm transaction",
|
||||
"MESSAGE": {
|
||||
"SEND": "Send",
|
||||
"FROM": "From",
|
||||
"TO": "To",
|
||||
"COMMENT": "Comment"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Pending",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Time period:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 week",
|
||||
"WEEK2": "2 week",
|
||||
"MONTH1": "1 month",
|
||||
"MONTH3": "3 month",
|
||||
"MONTH6": "6 month",
|
||||
"YEAR": "1 year",
|
||||
"ALL": "All"
|
||||
},
|
||||
"TITLE_GROUP": "Group:",
|
||||
"GROUP": {
|
||||
"DAY": "day",
|
||||
"WEEK": "week",
|
||||
"MONTH": "month"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Contact list",
|
||||
"IMPORT_EXPORT": "Import or export contacts",
|
||||
"IMPORT": "Import",
|
||||
"EXPORT": "Export",
|
||||
"ADD": "Add/edit contact",
|
||||
"SEND": "Send",
|
||||
"SEND_FROM": "Send from",
|
||||
"SEND_TO": "To",
|
||||
"OPEN_ADD_WALLET": "Open/Add wallet",
|
||||
"COPY": "- Copy",
|
||||
"TABLE": {
|
||||
"NAME": "Name",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes",
|
||||
"EMPTY": "Contact list is empty"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Name",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUBLICATED": "Name is dublicated",
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"SET_MASTER_PASSWORD": "Set master password",
|
||||
"ADDRESS_DUBLICATED": "Address is dublicated",
|
||||
"MAX_LENGTH": "Maximum notes length reached",
|
||||
"NAME_LENGTH": "The name must be 4-25 characters long"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Send",
|
||||
"EDIT": "Edit",
|
||||
"DELETE": "Delete",
|
||||
"ADD": "Add contact",
|
||||
"ADD_EDIT": "Add/Save",
|
||||
"GO_TO_WALLET": "Go to wallet",
|
||||
"IMPORT_EXPORT": "Import/export"
|
||||
},
|
||||
"SUCCESS_SENT": "Contact added",
|
||||
"SUCCESS_SAVE": "Contact is edited",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Error is occured while reading file!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Not enough money",
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error: core is busy",
|
||||
"DAEMON_BUSY": "Internal error: daemon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with",
|
||||
"TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Transaction not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.",
|
||||
"TX_TYPE_NORMAL": "Error. The payment from the wallet",
|
||||
"TX_TYPE_NORMAL_TO": "to",
|
||||
"TX_TYPE_NORMAL_END": "was not completed.",
|
||||
"TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Please try again.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe",
|
||||
"TX_TYPE_COIN_BASE": "Error. The payment was not completed."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copy",
|
||||
"PASTE": "paste",
|
||||
"SELECT": "select all"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Quit",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Payment received",
|
||||
"MINED": "Mined",
|
||||
"LOCKED": "Blocked",
|
||||
"IS_MINIMIZE": "Zano application is minimized to the system tray",
|
||||
"RESTORE": "You can recover it by clicking or using the context menu",
|
||||
"TRAY_MENU_SHOW": "Resize",
|
||||
"TRAY_MENU_MINIMIZE": "Minimize"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Setup master password",
|
||||
"SETUP_CONFIRM_PASS": "Confirm the password",
|
||||
"MASTER_PASS": "Master password",
|
||||
"BUTTON_NEXT": "Next",
|
||||
"BUTTON_SKIP": "Skip",
|
||||
"BUTTON_RESET": "Reset",
|
||||
"INCORRECT_PASSWORD": "Invalid password",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"CONFIRM_REQUIRED": "Confirmation is required",
|
||||
"MISMATCH": "Mismatch"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Go back"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"SAVE_PHRASE": "Save your seed phrase",
|
||||
"OPEN_WALLET": "Open existing wallet",
|
||||
"RESTORE_WALLET": "Restore from backup",
|
||||
"WALLET_DETAILS": "Wallet details",
|
||||
"ASSIGN_ALIAS": "Assign alias",
|
||||
"EDIT_ALIAS": "Edit alias",
|
||||
"TRANSFER_ALIAS": "Transfer alias",
|
||||
"CONTRACTS": "Contracts",
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"OLD_PURCHASE": "Purchase"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Wallets",
|
||||
"ADD_NEW": "+ Add",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "New offers/Messages",
|
||||
"SYNCING": "Syncing wallet"
|
||||
},
|
||||
"CONTACTS": "Contacts",
|
||||
"SETTINGS": "Settings",
|
||||
"LOG_OUT": "Log out",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "System error",
|
||||
"COMPLETE": "Completion",
|
||||
"SYNCING": "Syncing blockchain",
|
||||
"LOADING": "Loading blockchain data"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Update available",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Get new update.</span><br><span>Update is recommended!</span>",
|
||||
"IMPORTANT": "Update available",
|
||||
"IMPORTANT_HINT": "Important update!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Get new update.</span><br><span>Important update!</span>",
|
||||
"CRITICAL": "Update available",
|
||||
"CRITICAL_HINT": "Critical update!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Critical update available.</span><i class=\"icon\"></i><span>Update strongly recommended!</span>",
|
||||
"TIME": "System time differs from network",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Wrong system time!</span><br><span>Check and repair your system time.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Create or open the wallet to start using Zano",
|
||||
"BUTTON_NEW_WALLET": "Create new wallet",
|
||||
"BUTTON_OPEN_WALLET": "Open existing wallet",
|
||||
"BUTTON_RESTORE_BACKUP": "Restore from backup",
|
||||
"HELP": "How to create wallet?",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Set wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"TITLE_SAVE": "Save the wallet file.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open",
|
||||
"FILE_NOT_FOUND1": "Wallet file not found",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open wallet\" button.",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Type wallet password",
|
||||
"LABEL": "Password to this wallet",
|
||||
"OPEN": "Open wallet",
|
||||
"SKIP": "Skip",
|
||||
"NOT_FOUND": "Not found"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_PHRASE_KEY": "Seed phrase / tracking seed",
|
||||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match",
|
||||
"KEY_REQUIRED": "Key is required",
|
||||
"KEY_NOT_VALID": "Key not valid"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Create wallet",
|
||||
"BUTTON_COPY": "Copy"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"SELECT_LOCATION": "Select wallet location",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"RESTORE_WALLET": "Restore from backup"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings",
|
||||
"DARK_THEME": "Dark theme",
|
||||
"WHITE_THEME": "White theme",
|
||||
"GRAY_THEME": "Grey theme",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Lock app after:",
|
||||
"TIME1": "5 min",
|
||||
"TIME2": "15 min",
|
||||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
"NEW": "New password",
|
||||
"CONFIRM": "New password confirmation",
|
||||
"BUTTON": "Save"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"PASS_NOT_MATCH": "Old password not match",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
},
|
||||
"LAST_BUILD": "Current build: {{value}}",
|
||||
"APP_LOG_TITLE": "Log level:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Register an alias",
|
||||
"DETAILS": "Details",
|
||||
"LOCK": "Lock",
|
||||
"AVAILABLE_BALANCE": "Available <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Locked <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "What does that mean?",
|
||||
"TABS": {
|
||||
"SEND": "Send",
|
||||
"RECEIVE": "Receive",
|
||||
"HISTORY": "History",
|
||||
"CONTRACTS": "Contracts",
|
||||
"MESSAGES": "Messages",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_FILE_LOCATION": "Wallet file location",
|
||||
"LABEL_SEED_PHRASE": "Seed phrase",
|
||||
"SEED_PHRASE_HINT": "Click to reveal the seed phrase",
|
||||
"BUTTON_SAVE": "Save",
|
||||
"BUTTON_REMOVE": "Close wallet",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later."
|
||||
},
|
||||
"COST": "Alias fee {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"ONE_ALIAS": "You can create only one alias per wallet",
|
||||
"REQUEST_ADD_REG": "The alias will be assigned within 10 minutes"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "You do not have enough funds to change the comment to this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"COST": "Fee {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Edit"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transfer to",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "No wallet with this account exists",
|
||||
"ALIAS_EXISTS": "This account already has an alias",
|
||||
"NO_MONEY": "You do not have enough funds to transfer this alias"
|
||||
},
|
||||
"COST": "Transfer fee {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transfer",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"REQUEST_SEND_REG": "The alias will be transferred within 10 minutes"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Address",
|
||||
"AMOUNT": "Amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"HIDE": "Hide your wallet address from recipient",
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "Transaction sent",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"ALIAS_NOT_VALID": "Alias not valid",
|
||||
"AMOUNT_REQUIRED": "Amount is required",
|
||||
"AMOUNT_ZERO": "Amount is zero",
|
||||
"FEE_REQUIRED": "Fee is required",
|
||||
"FEE_MINIMUM": "Minimum fee: {{fee}}",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
"STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Locked till {{date}}",
|
||||
"SEND": "Sent",
|
||||
"RECEIVED": "Received",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"FEE": "Fee",
|
||||
"ADDRESS": "Address",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "Payment ID",
|
||||
"ID": "Transaction ID",
|
||||
"SIZE": "Transaction size",
|
||||
"SIZE_VALUE": "{{value}} bytes",
|
||||
"HEIGHT": "Height",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Comment"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "hidden",
|
||||
"UNDEFINED": "Undefined",
|
||||
"COMPLETE_BUYER": "Contract completed",
|
||||
"COMPLETE_SELLER": "Contract completed",
|
||||
"CREATE_ALIAS": "Fee for assigning alias",
|
||||
"UPDATE_ALIAS": "Fee for editing alias",
|
||||
"POW_REWARD": "POW reward",
|
||||
"POS_REWARD": "POS reward",
|
||||
"CREATE_CONTRACT": "Contract proposal",
|
||||
"PLEDGE_CONTRACT": "Contract deposit",
|
||||
"NULLIFY_CONTRACT": "Burn deposits",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Cancellation request",
|
||||
"CANCEL_CONTRACT": "Cancel and return deposits"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "No active contracts",
|
||||
"CONTRACTS": "Contracts",
|
||||
"PURCHASE": "Purchase",
|
||||
"SELL": "Sell",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"STATUS": "Status",
|
||||
"COMMENTS": "Comments",
|
||||
"PURCHASE_BUTTON": "New Purchase",
|
||||
"LISTING_BUTTON": "Create listing",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Less than an hour to respond",
|
||||
"REMAINING_ONE": "{{time}} hour remains",
|
||||
"REMAINING_MANY": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT": "{{time}} hours remain",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} hour remains",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_ONE_WAITING": "Waiting for {{time}} hour",
|
||||
"REMAINING_MANY_WAITING": "Waiting for {{time}} hours",
|
||||
"REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "New contract proposal",
|
||||
"IGNORED": "You ignored contract proposal",
|
||||
"ACCEPTED": "Contract started",
|
||||
"WAIT": "Waiting for contract confirmation",
|
||||
"WAITING_BUYER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "You ignored cancellation proposal",
|
||||
"EXPIRED": "Contract proposal has expired"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "Waiting for response",
|
||||
"IGNORED": "Seller ignored your contract proposal",
|
||||
"ACCEPTED": "Seller accepted your contract proposal",
|
||||
"WAIT": "Waiting for deposits confirmation",
|
||||
"WAITING_SELLER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"WAITING_CANCEL": "Waiting for contract cancellation",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract",
|
||||
"EXPIRED": "The contract proposal has expired"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Description",
|
||||
"SELLER": "Seller",
|
||||
"AMOUNT": "Amount",
|
||||
"YOUR_DEPOSIT": "Your deposit",
|
||||
"SELLER_DEPOSIT": "Seller deposit",
|
||||
"BUYER_DEPOSIT": "Buyer deposit",
|
||||
"SAME_AMOUNT": "Same amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"SEND_BUTTON": "Send",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Description required",
|
||||
"DESC_MAXIMUM": "Maximum field length reached",
|
||||
"SELLER_REQUIRED": "Address required",
|
||||
"SELLER_NOT_VALID": "Invalid address",
|
||||
"ALIAS_NOT_VALID": "Invalid alias",
|
||||
"AMOUNT_REQUIRED": "Amount required",
|
||||
"AMOUNT_ZERO": "Amount cannot be zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Deposit required",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Seller deposit required",
|
||||
"SELLER_SAME": "Use separate account",
|
||||
"COMMENT_MAXIMUM": "Maximum field length reached"
|
||||
},
|
||||
"PROGRESS_NEW": "New purchase",
|
||||
"PROGRESS_WAIT": "Awaiting reply",
|
||||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"WAITING_SELLER": "Waiting for response",
|
||||
"WAITING_BUYER": "Contract proposal received",
|
||||
"WAITING_CONFIRMATION": "Waiting for deposits confirmation",
|
||||
"WAITING_DELIVERY": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"IGNORED_BUYER": "Contract proposal ignored",
|
||||
"IGNORED_SELLER": "The seller ignored your contract proposal",
|
||||
"PROPOSAL_CANCEL_SELLER": "Cancellation request sent",
|
||||
"PROPOSAL_CANCEL_BUYER": "Cancellation request received",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract",
|
||||
"IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"EXPIRED": "Contract proposal expired",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contract started",
|
||||
"IGNORED_ACCEPT": "Contract proposal ignored",
|
||||
"BURN_PROPOSAL": "Deposits burned",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contract completed",
|
||||
"SEND_CANCEL_PROPOSAL": "Cancellation request sent",
|
||||
"IGNORED_CANCEL": "Contract cancellation proposal ignored",
|
||||
"DEALS_CANCELED_WAIT": "Cancellation in progress",
|
||||
"WAITING_TIME": "Response time",
|
||||
"NEED_MONEY": "Insufficient funds",
|
||||
"BUTTON_MAKE_PLEDGE": "Accept and make deposit",
|
||||
"BUTTON_IGNORE": "Ignore and hide offer",
|
||||
"BUTTON_NULLIFY": "Terminate and burn deposits",
|
||||
"BUTTON_RECEIVED": "Complete and release deposits",
|
||||
"BUTTON_CANCEL_BUYER": "Cancel and return deposits",
|
||||
"BUTTON_NOT_CANCEL": "Ignore request",
|
||||
"BUTTON_CANCEL_SELLER": "Confirm and return deposits",
|
||||
"HOUR": "hour",
|
||||
"HOURS": "hours",
|
||||
"CANCEL": "Cancel",
|
||||
"NULLIFY_QUESTION": "Are you sure you want to burn both deposits?",
|
||||
"BUTTON_NULLIFY_SHORT": "Burn",
|
||||
"WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Error",
|
||||
"SUCCESS": "Success",
|
||||
"INFO": "Information",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Send",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"TITLE": "Confirm transaction",
|
||||
"MESSAGE": {
|
||||
"SEND": "Send",
|
||||
"FROM": "From",
|
||||
"TO": "To",
|
||||
"COMMENT": "Comment"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Pending",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Time period:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 week",
|
||||
"WEEK2": "2 week",
|
||||
"MONTH1": "1 month",
|
||||
"MONTH3": "3 month",
|
||||
"MONTH6": "6 month",
|
||||
"YEAR": "1 year",
|
||||
"ALL": "All"
|
||||
},
|
||||
"TITLE_GROUP": "Group:",
|
||||
"GROUP": {
|
||||
"DAY": "day",
|
||||
"WEEK": "week",
|
||||
"MONTH": "month"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Contact list",
|
||||
"IMPORT_EXPORT": "Import or export contacts",
|
||||
"IMPORT": "Import",
|
||||
"EXPORT": "Export",
|
||||
"ADD": "Add/edit contact",
|
||||
"SEND": "Send",
|
||||
"SEND_FROM": "Send from",
|
||||
"SEND_TO": "To",
|
||||
"OPEN_ADD_WALLET": "Open/Add wallet",
|
||||
"COPY": "- Copy",
|
||||
"TABLE": {
|
||||
"NAME": "Name",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes",
|
||||
"EMPTY": "Contact list is empty"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Name",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUBLICATED": "Name is dublicated",
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"SET_MASTER_PASSWORD": "Set master password",
|
||||
"ADDRESS_DUBLICATED": "Address is dublicated",
|
||||
"MAX_LENGTH": "Maximum notes length reached",
|
||||
"NAME_LENGTH": "The name must be 4-25 characters long"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Send",
|
||||
"EDIT": "Edit",
|
||||
"DELETE": "Delete",
|
||||
"ADD": "Add contact",
|
||||
"ADD_EDIT": "Add/Save",
|
||||
"GO_TO_WALLET": "Go to wallet",
|
||||
"IMPORT_EXPORT": "Import/export"
|
||||
},
|
||||
"SUCCESS_SENT": "Contact added",
|
||||
"SUCCESS_SAVE": "Contact is edited",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Error is occured while reading file!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Not enough money",
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error: core is busy",
|
||||
"DAEMON_BUSY": "Internal error: daemon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with",
|
||||
"TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Transaction not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.",
|
||||
"TX_TYPE_NORMAL": "Error. The payment from the wallet",
|
||||
"TX_TYPE_NORMAL_TO": "to",
|
||||
"TX_TYPE_NORMAL_END": "was not completed.",
|
||||
"TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Please try again.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe",
|
||||
"TX_TYPE_COIN_BASE": "Error. The payment was not completed."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copy",
|
||||
"PASTE": "paste",
|
||||
"SELECT": "select all"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Quit",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Payment received",
|
||||
"MINED": "Mined",
|
||||
"LOCKED": "Blocked",
|
||||
"IS_MINIMIZE": "Zano application is minimized to the system tray",
|
||||
"RESTORE": "You can recover it by clicking or using the context menu",
|
||||
"TRAY_MENU_SHOW": "Resize",
|
||||
"TRAY_MENU_MINIMIZE": "Minimize"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Nastavit hlavní heslo",
|
||||
"SETUP_CONFIRM_PASS": "Potvrdit heslo",
|
||||
"MASTER_PASS": "Hlavní heslo",
|
||||
"BUTTON_NEXT": "Další",
|
||||
"BUTTON_SKIP": "Přeskočit",
|
||||
"BUTTON_RESET": "Resetovat",
|
||||
"INCORRECT_PASSWORD": "Neplatné heslo",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Je vyžadováno heslo",
|
||||
"CONFIRM_REQUIRED": "Je požadováno potvrzení",
|
||||
"MISMATCH": "Neodpovídající"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Jít zpět"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Přidat peněženku",
|
||||
"CREATE_WALLET": "Vytvořit novou peněženku",
|
||||
"SAVE_PHRASE": "Uložit svoji seed frázi",
|
||||
"OPEN_WALLET": "Otevřít existující peněženku",
|
||||
"RESTORE_WALLET": "Obnovení z zálohy",
|
||||
"WALLET_DETAILS": "Podrobnosti o peněžence",
|
||||
"ASSIGN_ALIAS": "Přidělit přezdívku",
|
||||
"EDIT_ALIAS": "Upravit přezdívku",
|
||||
"TRANSFER_ALIAS": "Převést přezdívku",
|
||||
"CONTRACTS": "Kontrakty",
|
||||
"NEW_PURCHASE": "Nový nákup",
|
||||
"OLD_PURCHASE": "Nákup"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Peněženky",
|
||||
"ADD_NEW": "+ Přidat",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "Nové nabídky/zprávy",
|
||||
"SYNCING": "Synchronizace pěněženky"
|
||||
},
|
||||
"CONTACTS": "Contacts",
|
||||
"SETTINGS": "Nastavení",
|
||||
"LOG_OUT": "Odhlásit se",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "Chyba systému",
|
||||
"COMPLETE": "Dokončení",
|
||||
"SYNCING": "Sychronizace blockchainu",
|
||||
"LOADING": "Nahrávání blockchainových dat"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Aktualizace k dispozici",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Získejte novou aktualizaci.</span><br><span>Doporučená aktualizace!</span>",
|
||||
"IMPORTANT": "Aktualizace k dispozici",
|
||||
"IMPORTANT_HINT": "Důležitá aktualizace!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Získejte novou aktualizaci.</span><br><span>Důležitá aktualizace!</span>",
|
||||
"CRITICAL": "Aktualizace k dispozici",
|
||||
"CRITICAL_HINT": "Kritická aktualizace!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Kritická aktualizace k dispozici.</span><i class=\"icon\"></i><span>Aktualizaci důrazně doporučujeme!</span>",
|
||||
"TIME": "Systémový čas se liší od sítového",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Špatný systémový čas!</span><br><span>Zkontrolujte a nastavte systémový čas.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Chcete-li začít používat Zano, vytvořte nebo otevřete peněženku",
|
||||
"BUTTON_NEW_WALLET": "Vytvořit novou peněženku",
|
||||
"BUTTON_OPEN_WALLET": "Otevřít existující peněženku",
|
||||
"BUTTON_RESTORE_BACKUP": "Obnovení ze zálohy",
|
||||
"HELP": "Jak vytvořit peněženku?",
|
||||
"CHOOSE_PATH": "Zvolte prosím cestu"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Název peněženky",
|
||||
"PASS": "Nastavit heslo peněženky",
|
||||
"CONFIRM": "Potvrdit heslo k peněžence",
|
||||
"BUTTON_SELECT": "Vyberte cestu k pěněžence",
|
||||
"BUTTON_CREATE": "Vytvořit peněženku",
|
||||
"TITLE_SAVE": "Uložte soubor peněženky.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Stávající soubory peněženky nelze nahradit nebo přepsat",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Soubory peněženky nelze uložit na diskový oddíl s operačním systémem",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Název je povinný",
|
||||
"NAME_DUPLICATE": "Název je duplicitní",
|
||||
"MAX_LENGTH": "Dosáhli jste maximální délky názvu",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open",
|
||||
"FILE_NOT_FOUND1": "Wallet file not found",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open wallet\" button.",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Type wallet password",
|
||||
"LABEL": "Password to this wallet",
|
||||
"OPEN": "Open wallet",
|
||||
"SKIP": "Skip",
|
||||
"NOT_FOUND": "Not found"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_PHRASE_KEY": "Seed phrase / tracking seed",
|
||||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match",
|
||||
"KEY_REQUIRED": "Key is required",
|
||||
"KEY_NOT_VALID": "Key not valid"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Create wallet",
|
||||
"BUTTON_COPY": "Copy"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"SELECT_LOCATION": "Select wallet location",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"RESTORE_WALLET": "Restore from backup"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings",
|
||||
"DARK_THEME": "Dark theme",
|
||||
"WHITE_THEME": "White theme",
|
||||
"GRAY_THEME": "Grey theme",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Lock app after:",
|
||||
"TIME1": "5 min",
|
||||
"TIME2": "15 min",
|
||||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
"NEW": "New password",
|
||||
"CONFIRM": "New password confirmation",
|
||||
"BUTTON": "Save"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"PASS_NOT_MATCH": "Old password not match",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
},
|
||||
"LAST_BUILD": "Current build: {{value}}",
|
||||
"APP_LOG_TITLE": "Log level:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Register an alias",
|
||||
"DETAILS": "Details",
|
||||
"LOCK": "Lock",
|
||||
"AVAILABLE_BALANCE": "Available <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Locked <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "What does that mean?",
|
||||
"TABS": {
|
||||
"SEND": "Send",
|
||||
"RECEIVE": "Receive",
|
||||
"HISTORY": "History",
|
||||
"CONTRACTS": "Contracts",
|
||||
"MESSAGES": "Messages",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_FILE_LOCATION": "Wallet file location",
|
||||
"LABEL_SEED_PHRASE": "Seed phrase",
|
||||
"SEED_PHRASE_HINT": "Click to reveal the seed phrase",
|
||||
"BUTTON_SAVE": "Save",
|
||||
"BUTTON_REMOVE": "Close wallet",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later."
|
||||
},
|
||||
"COST": "Alias fee {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"ONE_ALIAS": "You can create only one alias per wallet",
|
||||
"REQUEST_ADD_REG": "The alias will be assigned within 10 minutes"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "You do not have enough funds to change the comment to this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"COST": "Fee {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Edit"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transfer to",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "No wallet with this account exists",
|
||||
"ALIAS_EXISTS": "This account already has an alias",
|
||||
"NO_MONEY": "You do not have enough funds to transfer this alias"
|
||||
},
|
||||
"COST": "Transfer fee {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transfer",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"REQUEST_SEND_REG": "The alias will be transferred within 10 minutes"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Address",
|
||||
"AMOUNT": "Amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"HIDE": "Hide your wallet address from recipient",
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "Transaction sent",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"ALIAS_NOT_VALID": "Alias not valid",
|
||||
"AMOUNT_REQUIRED": "Amount is required",
|
||||
"AMOUNT_ZERO": "Amount is zero",
|
||||
"FEE_REQUIRED": "Fee is required",
|
||||
"FEE_MINIMUM": "Minimum fee: {{fee}}",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
"STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Locked till {{date}}",
|
||||
"SEND": "Sent",
|
||||
"RECEIVED": "Received",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"FEE": "Fee",
|
||||
"ADDRESS": "Address",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "Payment ID",
|
||||
"ID": "Transaction ID",
|
||||
"SIZE": "Transaction size",
|
||||
"SIZE_VALUE": "{{value}} bytes",
|
||||
"HEIGHT": "Height",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Comment"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "hidden",
|
||||
"UNDEFINED": "Undefined",
|
||||
"COMPLETE_BUYER": "Contract completed",
|
||||
"COMPLETE_SELLER": "Contract completed",
|
||||
"CREATE_ALIAS": "Fee for assigning alias",
|
||||
"UPDATE_ALIAS": "Fee for editing alias",
|
||||
"POW_REWARD": "POW reward",
|
||||
"POS_REWARD": "POS reward",
|
||||
"CREATE_CONTRACT": "Contract proposal",
|
||||
"PLEDGE_CONTRACT": "Contract deposit",
|
||||
"NULLIFY_CONTRACT": "Burn deposits",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Cancellation request",
|
||||
"CANCEL_CONTRACT": "Cancel and return deposits"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "No active contracts",
|
||||
"CONTRACTS": "Contracts",
|
||||
"PURCHASE": "Purchase",
|
||||
"SELL": "Sell",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"STATUS": "Status",
|
||||
"COMMENTS": "Comments",
|
||||
"PURCHASE_BUTTON": "New Purchase",
|
||||
"LISTING_BUTTON": "Create listing",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Less than an hour to respond",
|
||||
"REMAINING_ONE": "{{time}} hour remains",
|
||||
"REMAINING_MANY": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT": "{{time}} hours remain",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} hour remains",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_ONE_WAITING": "Waiting for {{time}} hour",
|
||||
"REMAINING_MANY_WAITING": "Waiting for {{time}} hours",
|
||||
"REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "New contract proposal",
|
||||
"IGNORED": "You ignored contract proposal",
|
||||
"ACCEPTED": "Contract started",
|
||||
"WAIT": "Waiting for contract confirmation",
|
||||
"WAITING_BUYER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "You ignored cancellation proposal",
|
||||
"EXPIRED": "Contract proposal has expired"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "Waiting for response",
|
||||
"IGNORED": "Seller ignored your contract proposal",
|
||||
"ACCEPTED": "Seller accepted your contract proposal",
|
||||
"WAIT": "Waiting for deposits confirmation",
|
||||
"WAITING_SELLER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"WAITING_CANCEL": "Waiting for contract cancellation",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract",
|
||||
"EXPIRED": "The contract proposal has expired"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Description",
|
||||
"SELLER": "Seller",
|
||||
"AMOUNT": "Amount",
|
||||
"YOUR_DEPOSIT": "Your deposit",
|
||||
"SELLER_DEPOSIT": "Seller deposit",
|
||||
"BUYER_DEPOSIT": "Buyer deposit",
|
||||
"SAME_AMOUNT": "Same amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"SEND_BUTTON": "Send",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Description required",
|
||||
"DESC_MAXIMUM": "Maximum field length reached",
|
||||
"SELLER_REQUIRED": "Address required",
|
||||
"SELLER_NOT_VALID": "Invalid address",
|
||||
"ALIAS_NOT_VALID": "Invalid alias",
|
||||
"AMOUNT_REQUIRED": "Amount required",
|
||||
"AMOUNT_ZERO": "Amount cannot be zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Deposit required",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Seller deposit required",
|
||||
"SELLER_SAME": "Use separate account",
|
||||
"COMMENT_MAXIMUM": "Maximum field length reached"
|
||||
},
|
||||
"PROGRESS_NEW": "New purchase",
|
||||
"PROGRESS_WAIT": "Awaiting reply",
|
||||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"WAITING_SELLER": "Waiting for response",
|
||||
"WAITING_BUYER": "Contract proposal received",
|
||||
"WAITING_CONFIRMATION": "Waiting for deposits confirmation",
|
||||
"WAITING_DELIVERY": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"IGNORED_BUYER": "Contract proposal ignored",
|
||||
"IGNORED_SELLER": "The seller ignored your contract proposal",
|
||||
"PROPOSAL_CANCEL_SELLER": "Cancellation request sent",
|
||||
"PROPOSAL_CANCEL_BUYER": "Cancellation request received",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract",
|
||||
"IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"EXPIRED": "Contract proposal expired",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contract started",
|
||||
"IGNORED_ACCEPT": "Contract proposal ignored",
|
||||
"BURN_PROPOSAL": "Deposits burned",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contract completed",
|
||||
"SEND_CANCEL_PROPOSAL": "Cancellation request sent",
|
||||
"IGNORED_CANCEL": "Contract cancellation proposal ignored",
|
||||
"DEALS_CANCELED_WAIT": "Cancellation in progress",
|
||||
"WAITING_TIME": "Response time",
|
||||
"NEED_MONEY": "Insufficient funds",
|
||||
"BUTTON_MAKE_PLEDGE": "Accept and make deposit",
|
||||
"BUTTON_IGNORE": "Ignore and hide offer",
|
||||
"BUTTON_NULLIFY": "Terminate and burn deposits",
|
||||
"BUTTON_RECEIVED": "Complete and release deposits",
|
||||
"BUTTON_CANCEL_BUYER": "Cancel and return deposits",
|
||||
"BUTTON_NOT_CANCEL": "Ignore request",
|
||||
"BUTTON_CANCEL_SELLER": "Confirm and return deposits",
|
||||
"HOUR": "hour",
|
||||
"HOURS": "hours",
|
||||
"CANCEL": "Cancel",
|
||||
"NULLIFY_QUESTION": "Are you sure you want to burn both deposits?",
|
||||
"BUTTON_NULLIFY_SHORT": "Burn",
|
||||
"WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Error",
|
||||
"SUCCESS": "Success",
|
||||
"INFO": "Information",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Send",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"TITLE": "Confirm transaction",
|
||||
"MESSAGE": {
|
||||
"SEND": "Send",
|
||||
"FROM": "From",
|
||||
"TO": "To",
|
||||
"COMMENT": "Comment"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Pending",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Time period:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 week",
|
||||
"WEEK2": "2 week",
|
||||
"MONTH1": "1 month",
|
||||
"MONTH3": "3 month",
|
||||
"MONTH6": "6 month",
|
||||
"YEAR": "1 year",
|
||||
"ALL": "All"
|
||||
},
|
||||
"TITLE_GROUP": "Group:",
|
||||
"GROUP": {
|
||||
"DAY": "day",
|
||||
"WEEK": "week",
|
||||
"MONTH": "month"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Contact list",
|
||||
"IMPORT_EXPORT": "Import or export contacts",
|
||||
"IMPORT": "Import",
|
||||
"EXPORT": "Export",
|
||||
"ADD": "Add/edit contact",
|
||||
"SEND": "Send",
|
||||
"SEND_FROM": "Send from",
|
||||
"SEND_TO": "To",
|
||||
"OPEN_ADD_WALLET": "Open/Add wallet",
|
||||
"COPY": "- Copy",
|
||||
"TABLE": {
|
||||
"NAME": "Name",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes",
|
||||
"EMPTY": "Contact list is empty"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Name",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUBLICATED": "Name is dublicated",
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"SET_MASTER_PASSWORD": "Set master password",
|
||||
"ADDRESS_DUBLICATED": "Address is dublicated",
|
||||
"MAX_LENGTH": "Maximum notes length reached",
|
||||
"NAME_LENGTH": "The name must be 4-25 characters long"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Send",
|
||||
"EDIT": "Edit",
|
||||
"DELETE": "Delete",
|
||||
"ADD": "Add contact",
|
||||
"ADD_EDIT": "Add/Save",
|
||||
"GO_TO_WALLET": "Go to wallet",
|
||||
"IMPORT_EXPORT": "Import/export"
|
||||
},
|
||||
"SUCCESS_SENT": "Contact added",
|
||||
"SUCCESS_SAVE": "Contact is edited",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Error is occured while reading file!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Not enough money",
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error: core is busy",
|
||||
"DAEMON_BUSY": "Internal error: daemon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with",
|
||||
"TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Transaction not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.",
|
||||
"TX_TYPE_NORMAL": "Error. The payment from the wallet",
|
||||
"TX_TYPE_NORMAL_TO": "to",
|
||||
"TX_TYPE_NORMAL_END": "was not completed.",
|
||||
"TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Please try again.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe",
|
||||
"TX_TYPE_COIN_BASE": "Error. The payment was not completed."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copy",
|
||||
"PASTE": "paste",
|
||||
"SELECT": "select all"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Quit",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Payment received",
|
||||
"MINED": "Mined",
|
||||
"LOCKED": "Blocked",
|
||||
"IS_MINIMIZE": "Zano application is minimized to the system tray",
|
||||
"RESTORE": "You can recover it by clicking or using the context menu",
|
||||
"TRAY_MENU_SHOW": "Resize",
|
||||
"TRAY_MENU_MINIMIZE": "Minimize"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Setup master password",
|
||||
"SETUP_CONFIRM_PASS": "Confirm the password",
|
||||
"MASTER_PASS": "Master password",
|
||||
"BUTTON_NEXT": "Next",
|
||||
"BUTTON_SKIP": "Skip",
|
||||
"BUTTON_RESET": "Reset",
|
||||
"INCORRECT_PASSWORD": "Invalid password",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"CONFIRM_REQUIRED": "Confirmation is required",
|
||||
"MISMATCH": "Mismatch"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Go back"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"SAVE_PHRASE": "Save your seed phrase",
|
||||
"OPEN_WALLET": "Open existing wallet",
|
||||
"RESTORE_WALLET": "Restore from backup",
|
||||
"WALLET_DETAILS": "Wallet details",
|
||||
"ASSIGN_ALIAS": "Assign alias",
|
||||
"EDIT_ALIAS": "Edit alias",
|
||||
"TRANSFER_ALIAS": "Transfer alias",
|
||||
"CONTRACTS": "Contracts",
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"OLD_PURCHASE": "Purchase"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Wallets",
|
||||
"ADD_NEW": "+ Add",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "New offers/Messages",
|
||||
"SYNCING": "Syncing wallet"
|
||||
},
|
||||
"CONTACTS": "Contacts",
|
||||
"SETTINGS": "Settings",
|
||||
"LOG_OUT": "Log out",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "System error",
|
||||
"COMPLETE": "Completion",
|
||||
"SYNCING": "Syncing blockchain",
|
||||
"LOADING": "Loading blockchain data"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Update available",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Get new update.</span><br><span>Update is recommended!</span>",
|
||||
"IMPORTANT": "Update available",
|
||||
"IMPORTANT_HINT": "Important update!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Get new update.</span><br><span>Important update!</span>",
|
||||
"CRITICAL": "Update available",
|
||||
"CRITICAL_HINT": "Critical update!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Critical update available.</span><i class=\"icon\"></i><span>Update strongly recommended!</span>",
|
||||
"TIME": "System time differs from network",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Wrong system time!</span><br><span>Check and repair your system time.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Create or open the wallet to start using Zano",
|
||||
"BUTTON_NEW_WALLET": "Create new wallet",
|
||||
"BUTTON_OPEN_WALLET": "Open existing wallet",
|
||||
"BUTTON_RESTORE_BACKUP": "Restore from backup",
|
||||
"HELP": "How to create wallet?",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Set wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"TITLE_SAVE": "Save the wallet file.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open",
|
||||
"FILE_NOT_FOUND1": "Wallet file not found",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open wallet\" button.",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Type wallet password",
|
||||
"LABEL": "Password to this wallet",
|
||||
"OPEN": "Open wallet",
|
||||
"SKIP": "Skip",
|
||||
"NOT_FOUND": "Not found"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_PHRASE_KEY": "Seed phrase / tracking seed",
|
||||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match",
|
||||
"KEY_REQUIRED": "Key is required",
|
||||
"KEY_NOT_VALID": "Key not valid"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Create wallet",
|
||||
"BUTTON_COPY": "Copy"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"SELECT_LOCATION": "Select wallet location",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"RESTORE_WALLET": "Restore from backup"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings",
|
||||
"DARK_THEME": "Dark theme",
|
||||
"WHITE_THEME": "White theme",
|
||||
"GRAY_THEME": "Grey theme",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Lock app after:",
|
||||
"TIME1": "5 min",
|
||||
"TIME2": "15 min",
|
||||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
"NEW": "New password",
|
||||
"CONFIRM": "New password confirmation",
|
||||
"BUTTON": "Save"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"PASS_NOT_MATCH": "Old password not match",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
},
|
||||
"LAST_BUILD": "Current build: {{value}}",
|
||||
"APP_LOG_TITLE": "Log level:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Register an alias",
|
||||
"DETAILS": "Details",
|
||||
"LOCK": "Lock",
|
||||
"AVAILABLE_BALANCE": "Available <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Locked <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "What does that mean?",
|
||||
"TABS": {
|
||||
"SEND": "Send",
|
||||
"RECEIVE": "Receive",
|
||||
"HISTORY": "History",
|
||||
"CONTRACTS": "Contracts",
|
||||
"MESSAGES": "Messages",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_FILE_LOCATION": "Wallet file location",
|
||||
"LABEL_SEED_PHRASE": "Seed phrase",
|
||||
"SEED_PHRASE_HINT": "Click to reveal the seed phrase",
|
||||
"BUTTON_SAVE": "Save",
|
||||
"BUTTON_REMOVE": "Close wallet",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later."
|
||||
},
|
||||
"COST": "Alias fee {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"ONE_ALIAS": "You can create only one alias per wallet",
|
||||
"REQUEST_ADD_REG": "The alias will be assigned within 10 minutes"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "You do not have enough funds to change the comment to this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"COST": "Fee {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Edit"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transfer to",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "No wallet with this account exists",
|
||||
"ALIAS_EXISTS": "This account already has an alias",
|
||||
"NO_MONEY": "You do not have enough funds to transfer this alias"
|
||||
},
|
||||
"COST": "Transfer fee {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transfer",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"REQUEST_SEND_REG": "The alias will be transferred within 10 minutes"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Address",
|
||||
"AMOUNT": "Amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"HIDE": "Hide your wallet address from recipient",
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "Transaction sent",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"ALIAS_NOT_VALID": "Alias not valid",
|
||||
"AMOUNT_REQUIRED": "Amount is required",
|
||||
"AMOUNT_ZERO": "Amount is zero",
|
||||
"FEE_REQUIRED": "Fee is required",
|
||||
"FEE_MINIMUM": "Minimum fee: {{fee}}",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
"STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Locked till {{date}}",
|
||||
"SEND": "Sent",
|
||||
"RECEIVED": "Received",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"FEE": "Fee",
|
||||
"ADDRESS": "Address",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "Payment ID",
|
||||
"ID": "Transaction ID",
|
||||
"SIZE": "Transaction size",
|
||||
"SIZE_VALUE": "{{value}} bytes",
|
||||
"HEIGHT": "Height",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Comment"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "hidden",
|
||||
"UNDEFINED": "Undefined",
|
||||
"COMPLETE_BUYER": "Contract completed",
|
||||
"COMPLETE_SELLER": "Contract completed",
|
||||
"CREATE_ALIAS": "Fee for assigning alias",
|
||||
"UPDATE_ALIAS": "Fee for editing alias",
|
||||
"POW_REWARD": "POW reward",
|
||||
"POS_REWARD": "POS reward",
|
||||
"CREATE_CONTRACT": "Contract proposal",
|
||||
"PLEDGE_CONTRACT": "Contract deposit",
|
||||
"NULLIFY_CONTRACT": "Burn deposits",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Cancellation request",
|
||||
"CANCEL_CONTRACT": "Cancel and return deposits"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "No active contracts",
|
||||
"CONTRACTS": "Contracts",
|
||||
"PURCHASE": "Purchase",
|
||||
"SELL": "Sell",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"STATUS": "Status",
|
||||
"COMMENTS": "Comments",
|
||||
"PURCHASE_BUTTON": "New Purchase",
|
||||
"LISTING_BUTTON": "Create listing",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Less than an hour to respond",
|
||||
"REMAINING_ONE": "{{time}} hour remains",
|
||||
"REMAINING_MANY": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT": "{{time}} hours remain",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} hour remains",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_ONE_WAITING": "Waiting for {{time}} hour",
|
||||
"REMAINING_MANY_WAITING": "Waiting for {{time}} hours",
|
||||
"REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "New contract proposal",
|
||||
"IGNORED": "You ignored contract proposal",
|
||||
"ACCEPTED": "Contract started",
|
||||
"WAIT": "Waiting for contract confirmation",
|
||||
"WAITING_BUYER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "You ignored cancellation proposal",
|
||||
"EXPIRED": "Contract proposal has expired"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "Waiting for response",
|
||||
"IGNORED": "Seller ignored your contract proposal",
|
||||
"ACCEPTED": "Seller accepted your contract proposal",
|
||||
"WAIT": "Waiting for deposits confirmation",
|
||||
"WAITING_SELLER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"WAITING_CANCEL": "Waiting for contract cancellation",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract",
|
||||
"EXPIRED": "The contract proposal has expired"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Description",
|
||||
"SELLER": "Seller",
|
||||
"AMOUNT": "Amount",
|
||||
"YOUR_DEPOSIT": "Your deposit",
|
||||
"SELLER_DEPOSIT": "Seller deposit",
|
||||
"BUYER_DEPOSIT": "Buyer deposit",
|
||||
"SAME_AMOUNT": "Same amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"SEND_BUTTON": "Send",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Description required",
|
||||
"DESC_MAXIMUM": "Maximum field length reached",
|
||||
"SELLER_REQUIRED": "Address required",
|
||||
"SELLER_NOT_VALID": "Invalid address",
|
||||
"ALIAS_NOT_VALID": "Invalid alias",
|
||||
"AMOUNT_REQUIRED": "Amount required",
|
||||
"AMOUNT_ZERO": "Amount cannot be zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Deposit required",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Seller deposit required",
|
||||
"SELLER_SAME": "Use separate account",
|
||||
"COMMENT_MAXIMUM": "Maximum field length reached"
|
||||
},
|
||||
"PROGRESS_NEW": "New purchase",
|
||||
"PROGRESS_WAIT": "Awaiting reply",
|
||||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"WAITING_SELLER": "Waiting for response",
|
||||
"WAITING_BUYER": "Contract proposal received",
|
||||
"WAITING_CONFIRMATION": "Waiting for deposits confirmation",
|
||||
"WAITING_DELIVERY": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"IGNORED_BUYER": "Contract proposal ignored",
|
||||
"IGNORED_SELLER": "The seller ignored your contract proposal",
|
||||
"PROPOSAL_CANCEL_SELLER": "Cancellation request sent",
|
||||
"PROPOSAL_CANCEL_BUYER": "Cancellation request received",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract",
|
||||
"IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"EXPIRED": "Contract proposal expired",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contract started",
|
||||
"IGNORED_ACCEPT": "Contract proposal ignored",
|
||||
"BURN_PROPOSAL": "Deposits burned",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contract completed",
|
||||
"SEND_CANCEL_PROPOSAL": "Cancellation request sent",
|
||||
"IGNORED_CANCEL": "Contract cancellation proposal ignored",
|
||||
"DEALS_CANCELED_WAIT": "Cancellation in progress",
|
||||
"WAITING_TIME": "Response time",
|
||||
"NEED_MONEY": "Insufficient funds",
|
||||
"BUTTON_MAKE_PLEDGE": "Accept and make deposit",
|
||||
"BUTTON_IGNORE": "Ignore and hide offer",
|
||||
"BUTTON_NULLIFY": "Terminate and burn deposits",
|
||||
"BUTTON_RECEIVED": "Complete and release deposits",
|
||||
"BUTTON_CANCEL_BUYER": "Cancel and return deposits",
|
||||
"BUTTON_NOT_CANCEL": "Ignore request",
|
||||
"BUTTON_CANCEL_SELLER": "Confirm and return deposits",
|
||||
"HOUR": "hour",
|
||||
"HOURS": "hours",
|
||||
"CANCEL": "Cancel",
|
||||
"NULLIFY_QUESTION": "Are you sure you want to burn both deposits?",
|
||||
"BUTTON_NULLIFY_SHORT": "Burn",
|
||||
"WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Error",
|
||||
"SUCCESS": "Success",
|
||||
"INFO": "Information",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Send",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"TITLE": "Confirm transaction",
|
||||
"MESSAGE": {
|
||||
"SEND": "Send",
|
||||
"FROM": "From",
|
||||
"TO": "To",
|
||||
"COMMENT": "Comment"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Pending",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Time period:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 week",
|
||||
"WEEK2": "2 week",
|
||||
"MONTH1": "1 month",
|
||||
"MONTH3": "3 month",
|
||||
"MONTH6": "6 month",
|
||||
"YEAR": "1 year",
|
||||
"ALL": "All"
|
||||
},
|
||||
"TITLE_GROUP": "Group:",
|
||||
"GROUP": {
|
||||
"DAY": "day",
|
||||
"WEEK": "week",
|
||||
"MONTH": "month"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Contact list",
|
||||
"IMPORT_EXPORT": "Import or export contacts",
|
||||
"IMPORT": "Import",
|
||||
"EXPORT": "Export",
|
||||
"ADD": "Add/edit contact",
|
||||
"SEND": "Send",
|
||||
"SEND_FROM": "Send from",
|
||||
"SEND_TO": "To",
|
||||
"OPEN_ADD_WALLET": "Open/Add wallet",
|
||||
"COPY": "- Copy",
|
||||
"TABLE": {
|
||||
"NAME": "Name",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes",
|
||||
"EMPTY": "Contact list is empty"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Name",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUBLICATED": "Name is dublicated",
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"SET_MASTER_PASSWORD": "Set master password",
|
||||
"ADDRESS_DUBLICATED": "Address is dublicated",
|
||||
"MAX_LENGTH": "Maximum notes length reached",
|
||||
"NAME_LENGTH": "The name must be 4-25 characters long"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Send",
|
||||
"EDIT": "Edit",
|
||||
"DELETE": "Delete",
|
||||
"ADD": "Add contact",
|
||||
"ADD_EDIT": "Add/Save",
|
||||
"GO_TO_WALLET": "Go to wallet",
|
||||
"IMPORT_EXPORT": "Import/export"
|
||||
},
|
||||
"SUCCESS_SENT": "Contact added",
|
||||
"SUCCESS_SAVE": "Contact is edited",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Error is occured while reading file!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Not enough money",
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error: core is busy",
|
||||
"DAEMON_BUSY": "Internal error: daemon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with",
|
||||
"TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Transaction not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.",
|
||||
"TX_TYPE_NORMAL": "Error. The payment from the wallet",
|
||||
"TX_TYPE_NORMAL_TO": "to",
|
||||
"TX_TYPE_NORMAL_END": "was not completed.",
|
||||
"TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Please try again.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe",
|
||||
"TX_TYPE_COIN_BASE": "Error. The payment was not completed."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copy",
|
||||
"PASTE": "paste",
|
||||
"SELECT": "select all"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Quit",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Payment received",
|
||||
"MINED": "Mined",
|
||||
"LOCKED": "Blocked",
|
||||
"IS_MINIMIZE": "Zano application is minimized to the system tray",
|
||||
"RESTORE": "You can recover it by clicking or using the context menu",
|
||||
"TRAY_MENU_SHOW": "Resize",
|
||||
"TRAY_MENU_MINIMIZE": "Minimize"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Master-Passwort einrichten",
|
||||
"SETUP_CONFIRM_PASS": "Passwort bestätigen",
|
||||
"MASTER_PASS": "Master-Passwort",
|
||||
"BUTTON_NEXT": "Weiter",
|
||||
"BUTTON_SKIP": "Überspringen",
|
||||
"BUTTON_RESET": "Zurücksetzen",
|
||||
"INCORRECT_PASSWORD": "Ungültiges Passwort",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Passwort ist erforderlich",
|
||||
"CONFIRM_REQUIRED": "Bestätigung ist erforderlich",
|
||||
"MISMATCH": "Fehlanpassung"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Zurück"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Wallet hinzufügen",
|
||||
"CREATE_WALLET": "Neue Wallet erstellen",
|
||||
"SAVE_PHRASE": "Speichere deinen Seed-Satz",
|
||||
"OPEN_WALLET": "Vorhandene Wallet öffnen",
|
||||
"RESTORE_WALLET": "Aus Backup wiederherstellen",
|
||||
"WALLET_DETAILS": "Wallet-Details",
|
||||
"ASSIGN_ALIAS": "Alias zuweisen",
|
||||
"EDIT_ALIAS": "Alias bearbeiten",
|
||||
"TRANSFER_ALIAS": "Alias übertragen",
|
||||
"CONTRACTS": "Verträge",
|
||||
"NEW_PURCHASE": "Neuer Kauf",
|
||||
"OLD_PURCHASE": "Kauf"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Wallets",
|
||||
"ADD_NEW": "+ Hinzufügen",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "Neue Angebote/Nachrichten",
|
||||
"SYNCING": "Wallet synchronisieren"
|
||||
},
|
||||
"CONTACTS": "Kontakte",
|
||||
"SETTINGS": "Einstellungen",
|
||||
"LOG_OUT": "Abmelden",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "Systemfehler",
|
||||
"COMPLETE": "Abschluss",
|
||||
"SYNCING": "Syncing block",
|
||||
"LOADING": "Lade Blockchain-Daten"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Update verfügbar",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Neues Update ausführen.</span><br><span>Update wird empfohlen!</span>",
|
||||
"IMPORTANT": "Update verfügbar",
|
||||
"IMPORTANT_HINT": "Wichtiges Update!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Neues Update ausführen.</span><br><span>Wichtiges Update!</span>",
|
||||
"CRITICAL": "Update verfügbar",
|
||||
"CRITICAL_HINT": "Kritisches Update!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Kritisches Update verfügbar.</span><i class=\"icon\"></i><span>Update dringend empfohlen!</span>",
|
||||
"TIME": "Systemzeit unterscheidet sich vom Netzwerk",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Falsche Systemzeit!</span><br><span>Prüfen und korrigieren Sie Ihre Systemzeit.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Erstellen oder öffnen Sie die Wallet, um Zano zu verwenden",
|
||||
"BUTTON_NEW_WALLET": "Neue Wallet erstellen",
|
||||
"BUTTON_OPEN_WALLET": "Vorhandene Wallet öffnen",
|
||||
"BUTTON_RESTORE_BACKUP": "Aus Backup wiederherstellen",
|
||||
"HELP": "Wie Wallet erstellen?",
|
||||
"CHOOSE_PATH": "Bitte wählen Sie einen Pfad"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet-Name",
|
||||
"PASS": "Wallet-Passwort festlegen",
|
||||
"CONFIRM": "Wallet-Passwort bestätigen",
|
||||
"BUTTON_SELECT": "Wallet-Verzeichnis auswählen",
|
||||
"BUTTON_CREATE": "Wallet erstellen",
|
||||
"TITLE_SAVE": "Wallet-Datei speichern.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Bestehende Wallet-Dateien können nicht ersetzt oder überschrieben werden",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Wallet-Dateien können nicht auf der OS-Partition gespeichert werden",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name ist erforderlich",
|
||||
"NAME_DUPLICATE": "Name existiert bereits",
|
||||
"MAX_LENGTH": "Maximale Namenslänge erreicht",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet-Name",
|
||||
"PASS": "Wallet-Passwort",
|
||||
"BUTTON": "Wallet öffnen",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "Eine Wallet mit dieser Adresse ist bereits geöffnet",
|
||||
"FILE_NOT_FOUND1": "Wallet-Datei nicht gefunden",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> Es wurde umbenannt oder verschoben. <br/> Um es zu öffnen, verwenden Sie den \"Wallet öffnen\"-Knopf.",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name ist erforderlich",
|
||||
"NAME_DUPLICATE": "Name existiert bereits",
|
||||
"MAX_LENGTH": "Maximale Namenslänge erreicht"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Wallet-Passwort eingeben",
|
||||
"LABEL": "Passwort für diese Wallet",
|
||||
"OPEN": "Wallet öffnen",
|
||||
"SKIP": "Überspringen",
|
||||
"NOT_FOUND": "Nicht gefunden"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet-Name",
|
||||
"LABEL_PHRASE_KEY": "Seed-Satz / Private-Key",
|
||||
"PASS": "Wallet-Passwort",
|
||||
"CONFIRM": "Wallet-Passwort bestätigen",
|
||||
"BUTTON_SELECT": "Wallet-Verzeichnis auswählen",
|
||||
"BUTTON_CREATE": "Wallet erstellen",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Ungültige Wallet-Datei oder Passwort stimmt nicht überein",
|
||||
"CHOOSE_PATH": "Bitte wählen Sie einen Pfad",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name ist erforderlich",
|
||||
"NAME_DUPLICATE": "Name existiert bereits",
|
||||
"MAX_LENGTH": "Maximale Namenslänge erreicht",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match",
|
||||
"KEY_REQUIRED": "Schlüssel ist erforderlich",
|
||||
"KEY_NOT_VALID": "Schlüssel ungültig"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Stellen Sie sicher, dass Ihr Seed-Satz an einem sicheren Ort bleibt. Wenn Sie Ihren Seed-Satz vergessen, können Sie Ihre Wallet nicht wiederherstellen.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Wallet erstellen",
|
||||
"BUTTON_COPY": "Kopieren"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Wallet hinzufügen",
|
||||
"SELECT_LOCATION": "Wallet-Verzeichnis auswählen",
|
||||
"CREATE_WALLET": "Neue Wallet erstellen",
|
||||
"RESTORE_WALLET": "Aus Backup wiederherstellen"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Einstellungen",
|
||||
"DARK_THEME": "Nachtmodus",
|
||||
"WHITE_THEME": "Tagmodus",
|
||||
"GRAY_THEME": "Graumodus",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Programm sperren nach:",
|
||||
"TIME1": "5 Minuten",
|
||||
"TIME2": "15 Minuten",
|
||||
"TIME3": "1 Stunde",
|
||||
"TIME4": "Nie"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% Rahmen",
|
||||
"100": "100% Rahmen",
|
||||
"125": "125% Rahmen",
|
||||
"150": "150% Rahmen"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Master-Passwort aktualisieren",
|
||||
"OLD": "Altes Passwort",
|
||||
"NEW": "Neues Passwort",
|
||||
"CONFIRM": "New password confirmation",
|
||||
"BUTTON": "Speichern"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Passwort ist erforderlich",
|
||||
"PASS_NOT_MATCH": "Old password not match",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
},
|
||||
"LAST_BUILD": "Aktueller Build: {{value}}",
|
||||
"APP_LOG_TITLE": "Log-Level:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Alias registrieren",
|
||||
"DETAILS": "Details",
|
||||
"LOCK": "Verschlüsseln",
|
||||
"AVAILABLE_BALANCE": "Verfügbar <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Gesperrt <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "Was bedeutet das?",
|
||||
"TABS": {
|
||||
"SEND": "Senden",
|
||||
"RECEIVE": "Empfangen",
|
||||
"HISTORY": "Verlauf",
|
||||
"CONTRACTS": "Verträge",
|
||||
"MESSAGES": "Nachrichten",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Wallet-Name",
|
||||
"LABEL_FILE_LOCATION": "Wallet-Datei-Verzeichnis",
|
||||
"LABEL_SEED_PHRASE": "Seed-Satz",
|
||||
"SEED_PHRASE_HINT": "Klicken, um den Seed-Satz anzuzeigen",
|
||||
"BUTTON_SAVE": "Speichern",
|
||||
"BUTTON_REMOVE": "Wallet schließen",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name ist erforderlich",
|
||||
"NAME_DUPLICATE": "Name existiert bereits",
|
||||
"MAX_LENGTH": "Maximale Namenslänge erreicht"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Alias eingeben",
|
||||
"TOOLTIP": "Ein Alias ist eine verkürzte Form Ihres Kontos. Ein Alias kann nur lateinische Buchstaben, Zahlen und die Zeichen „.“ und “-” enthalten. Es muss mit “@” beginnen."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Kommentar",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "Der Kommentar wird für jeden sichtbar sein, der eine Zahlung an Ihren Alias vornehmen möchte. Sie können Details über Ihre Geschäfte, Kontakte oder Text angeben. Kommentare können später bearbeitet werden."
|
||||
},
|
||||
"COST": "Alias-Gebühr {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Zuweisen",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name ist erforderlich",
|
||||
"NAME_WRONG": "Ungültiger Name: zulässige Symbole \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "Der Alias muss 6-25 Zeichen lang sein",
|
||||
"NAME_EXISTS": "Alias-Name existiert bereits",
|
||||
"NO_MONEY": "Du hast nicht genug Geldmittel, um diesen Alias zuzuweisen",
|
||||
"MAX_LENGTH": "Maximale Kommentarlänge erreicht"
|
||||
},
|
||||
"ONE_ALIAS": "Sie können nur einen Alias pro Wallet erstellen",
|
||||
"REQUEST_ADD_REG": "Der Alias wird innerhalb von 10 Minuten zugewiesen"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Alias eingeben"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Kommentar",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "Sie haben nicht genügend Geldmittel, um den Kommentar zu diesem Alias zu ändern",
|
||||
"MAX_LENGTH": "Maximale Kommentarlänge erreicht"
|
||||
},
|
||||
"COST": "Gebühr {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Bearbeiten"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Alias eingeben"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Kommentar",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "transferieren zu",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "Keine Wallet mit diesem Konto existiert",
|
||||
"ALIAS_EXISTS": "Dieses Konto hat bereits einen Alias",
|
||||
"NO_MONEY": "Du hast nicht genug Geldmittel, um diesen Alias zu transferieren"
|
||||
},
|
||||
"COST": "Überweisungsgebühr {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transfer",
|
||||
"BUTTON_CANCEL": "Abbrechen",
|
||||
"REQUEST_SEND_REG": "Der Alias wird innerhalb von 10 Minuten übertragen"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Adresse",
|
||||
"AMOUNT": "Betrag",
|
||||
"COMMENT": "Kommentar",
|
||||
"DETAILS": "Zusätzliche Informationen",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Gebühr",
|
||||
"HIDE": "Verstecke deine Wallet-Adresse vom Empfänger",
|
||||
"BUTTON": "Senden",
|
||||
"SUCCESS_SENT": "Transaktion gesendet",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Adresse benötigt",
|
||||
"ADDRESS_NOT_VALID": "Adresse ungültig",
|
||||
"ALIAS_NOT_VALID": "Alias ungültig",
|
||||
"AMOUNT_REQUIRED": "Betrag ist erforderlich",
|
||||
"AMOUNT_ZERO": "Betrag ist Null",
|
||||
"FEE_REQUIRED": "Gebühr ist erforderlich",
|
||||
"FEE_MINIMUM": "Mindestgebühr: {{fee}}",
|
||||
"MAX_LENGTH": "Maximale Kommentarlänge erreicht"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
"STATUS_TOOLTIP": "Bestätigungen {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Gesperrt bis {{date}}",
|
||||
"SEND": "Gesendet",
|
||||
"RECEIVED": "Empfangen",
|
||||
"DATE": "Datum",
|
||||
"AMOUNT": "Betrag",
|
||||
"FEE": "Gebühr",
|
||||
"ADDRESS": "Adresse",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "Zahlungs-ID",
|
||||
"ID": "Transaktions-ID",
|
||||
"SIZE": "Transaktionsgröße",
|
||||
"SIZE_VALUE": "{{value}} Bytes",
|
||||
"HEIGHT": "Höhe",
|
||||
"CONFIRMATION": "Bestätigung",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Kommentar"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "versteckt",
|
||||
"UNDEFINED": "Unbedefiniert",
|
||||
"COMPLETE_BUYER": "Vertrag abgeschlossen",
|
||||
"COMPLETE_SELLER": "Vertrag abgeschlossen",
|
||||
"CREATE_ALIAS": "Gebühr für die Zuordnung eines Alias",
|
||||
"UPDATE_ALIAS": "Gebühr für die Bearbeitung eines Alias",
|
||||
"POW_REWARD": "POW-Belohnung",
|
||||
"POS_REWARD": "POS-Belohnung",
|
||||
"CREATE_CONTRACT": "Vertragsvorschlag",
|
||||
"PLEDGE_CONTRACT": "Vertrag-Einzahlung",
|
||||
"NULLIFY_CONTRACT": "Einzahlungen verbrennen",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Stornierungsanfrage",
|
||||
"CANCEL_CONTRACT": "Abbrechen und Einzahlungen zurückzahlen"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "Keine aktiven Verträge",
|
||||
"CONTRACTS": "Verträge",
|
||||
"PURCHASE": "Kauf",
|
||||
"SELL": "Verkaufen",
|
||||
"DATE": "Datum",
|
||||
"AMOUNT": "Betrag",
|
||||
"STATUS": "Status",
|
||||
"COMMENTS": "Kommentare",
|
||||
"PURCHASE_BUTTON": "Neuer Kauf",
|
||||
"LISTING_BUTTON": "Auflistung erstellen",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Weniger als eine Stunde, um zu antworten",
|
||||
"REMAINING_ONE": "{{time}} verbleibende Stunde",
|
||||
"REMAINING_MANY": "{{time}} verbleibende Stunden",
|
||||
"REMAINING_MANY_ALT": "{{time}} verbleibende Stunden",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} verbleibende Stunde",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} verbleibende Stunde",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} verbleibende Stunden",
|
||||
"REMAINING_ONE_WAITING": "Warte für {{time}} Stunde",
|
||||
"REMAINING_MANY_WAITING": "Warte für {{time}} Stunden",
|
||||
"REMAINING_MANY_ALT_WAITING": "Warte für {{Zeit}} Stunden"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "Neuer Vertragsvorschlag",
|
||||
"IGNORED": "Sie haben den Vertragsvorschlag ignoriert",
|
||||
"ACCEPTED": "Vertrag gestartet",
|
||||
"WAIT": "Warten auf Bestätitung des Vertrages",
|
||||
"WAITING_BUYER": "Warte auf Sendung",
|
||||
"COMPLETED": "Vertrag abgeschlossen",
|
||||
"NOT_RECEIVED": "Senden fehlgeschlagen",
|
||||
"NULLIFIED": "Alle Einzahlungen verbrannt",
|
||||
"PROPOSAL_CANCEL": "Neuer Vorschlag, Vertrag zu kündigen und Einzahlungen zurückzugeben",
|
||||
"BEING_CANCELLED": "Abbruch wird durchgeführt",
|
||||
"CANCELLED": "Vertrag abgebrochen",
|
||||
"IGNORED_CANCEL": "Sie haben den Stornierungsvorschlag ignoriert",
|
||||
"EXPIRED": "Vertragsvorschlag ist abgelaufen"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "Warte auf Antwort",
|
||||
"IGNORED": "Verkäufer ignorierte Ihren Vertragsvorschlag",
|
||||
"ACCEPTED": "Verkäufer hat Ihren Vertragsvorschlag akzeptiert",
|
||||
"WAIT": "Warten auf die Bestätigung der Einzahlungen",
|
||||
"WAITING_SELLER": "Warte auf Sendung",
|
||||
"COMPLETED": "Vertrag abgeschlossen",
|
||||
"NOT_RECEIVED": "Senden fehlgeschlagen",
|
||||
"NULLIFIED": "Alle Einzahlungen verbrannt",
|
||||
"WAITING_CANCEL": "Warten auf Stornierung des Vertrages",
|
||||
"BEING_CANCELLED": "Abbruch wird durchgeführt",
|
||||
"CANCELLED": "Vertrag abgebrochen",
|
||||
"IGNORED_CANCEL": "Der Verkäufer hat Ihren Vorschlag zur Stornierung des Vertrages ignoriert",
|
||||
"EXPIRED": "Der Vertragsvorschlag ist abgelaufen"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Beschreibung",
|
||||
"SELLER": "Verkäufer",
|
||||
"AMOUNT": "Betrag",
|
||||
"YOUR_DEPOSIT": "Ihre Einzahlung",
|
||||
"SELLER_DEPOSIT": "Einzahlung Verkäufer",
|
||||
"BUYER_DEPOSIT": "Einzahlung Käufer",
|
||||
"SAME_AMOUNT": "Gleicher Betrag",
|
||||
"COMMENT": "Kommentar",
|
||||
"DETAILS": "Zusätzliche Informationen",
|
||||
"SEND_BUTTON": "Senden",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Beschreibung erforderlich",
|
||||
"DESC_MAXIMUM": "Maximale Feldlänge erreicht",
|
||||
"SELLER_REQUIRED": "Adresse benötigt",
|
||||
"SELLER_NOT_VALID": "Ungültige Adresse",
|
||||
"ALIAS_NOT_VALID": "Ungültiger Alias",
|
||||
"AMOUNT_REQUIRED": "Betrag ist erforderlich",
|
||||
"AMOUNT_ZERO": "Betrag darf nicht Null sein",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Einzahlung erforderlich",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Verkäufer-Einzahlung erforderlich",
|
||||
"SELLER_SAME": "Anderes Konto verwenden",
|
||||
"COMMENT_MAXIMUM": "Maximale Feldlänge erreicht"
|
||||
},
|
||||
"PROGRESS_NEW": "Neuer Kauf",
|
||||
"PROGRESS_WAIT": "Warte auf Antwort",
|
||||
"PROGRESS_RECEIVE": "Antwort erhalten",
|
||||
"PROGRESS_COMPLETE": "Abgeschlossen",
|
||||
"FEE": "Gebühr",
|
||||
"PAYMENT": "Zahlungs-ID",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "Neuer Kauf",
|
||||
"WAITING_SELLER": "Warte auf Antwort",
|
||||
"WAITING_BUYER": "Vertragsvorschlag erhalten",
|
||||
"WAITING_CONFIRMATION": "Warten auf die Bestätigung der Einzahlungen",
|
||||
"WAITING_DELIVERY": "Warte auf Sendung",
|
||||
"COMPLETED": "Vertrag abgeschlossen",
|
||||
"IGNORED_BUYER": "Vertragsvorschlag ignoriert",
|
||||
"IGNORED_SELLER": "Der Verkäufer ignorierte Ihren Vertragsvorschlag",
|
||||
"PROPOSAL_CANCEL_SELLER": "Stornierungsanfrage gesendet",
|
||||
"PROPOSAL_CANCEL_BUYER": "Stornierungsanfrage erhalten",
|
||||
"BEING_CANCELLED": "Abbruch wird durchgeführt",
|
||||
"IGNORED_CANCEL_SELLER": "Der Verkäufer hat Ihren Vorschlag zur Stornierung des Vertrages ignoriert",
|
||||
"IGNORED_CANCEL_BUYER": "Vertragsstornierungsanfrage ignoriert",
|
||||
"CANCELLED": "Vertrag abgebrochen",
|
||||
"EXPIRED": "Vertragsvorschlag abgelaufen",
|
||||
"NOT_RECEIVED": "Senden fehlgeschlagen",
|
||||
"NULLIFIED": "Alle Einzahlungen verbrannt"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Vertrag gestartet",
|
||||
"IGNORED_ACCEPT": "Vertragsvorschlag ignoriert",
|
||||
"BURN_PROPOSAL": "Einzahlungen verbrannt",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Vertrag abgeschlossen",
|
||||
"SEND_CANCEL_PROPOSAL": "Stornierungsanfrage gesendet",
|
||||
"IGNORED_CANCEL": "Vertragsstornierungsanfrage ignoriert",
|
||||
"DEALS_CANCELED_WAIT": "Abbruch wird durchgeführt",
|
||||
"WAITING_TIME": "Antwortzeit",
|
||||
"NEED_MONEY": "Unzureichendes Guthaben",
|
||||
"BUTTON_MAKE_PLEDGE": "Akzeptieren und Einzahlung tätigen",
|
||||
"BUTTON_IGNORE": "Angebot ignorieren und ausblenden",
|
||||
"BUTTON_NULLIFY": "Beenden und Einzahlungen verbrennen",
|
||||
"BUTTON_RECEIVED": "Einzahlungen abschließen und freigeben",
|
||||
"BUTTON_CANCEL_BUYER": "Einzahlungen abbrechen und zurückzahlen",
|
||||
"BUTTON_NOT_CANCEL": "Anfrage ignorieren",
|
||||
"BUTTON_CANCEL_SELLER": "Einzahlungen bestätigen und zurückzahlen",
|
||||
"HOUR": "Stunde",
|
||||
"HOURS": "Stunden",
|
||||
"CANCEL": "Abbrechen",
|
||||
"NULLIFY_QUESTION": "Sind Sie sicher, dass Sie beide Einzahlungen verbrennen möchten?",
|
||||
"BUTTON_NULLIFY_SHORT": "Verbrennen",
|
||||
"WAITING_TIME_QUESTION": "Sind Sie sicher, dass Sie den Vertrag kündigen möchten?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Adresse",
|
||||
"MESSAGE": "Nachricht",
|
||||
"SEND_PLACEHOLDER": "Nachricht eingeben...",
|
||||
"SEND_BUTTON": "Senden"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Fehler",
|
||||
"SUCCESS": "Erfolg",
|
||||
"INFO": "Informationen",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Senden",
|
||||
"BUTTON_CANCEL": "Abbrechen",
|
||||
"TITLE": "Transaktion bestätigen",
|
||||
"MESSAGE": {
|
||||
"SEND": "Senden",
|
||||
"FROM": "Von",
|
||||
"TO": "Zu",
|
||||
"COMMENT": "Kommentar"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Ausstehend",
|
||||
"TITLE_TOTAL": "Gesamt",
|
||||
"TITLE_PERIOD": "Zeitspanne:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 Woche",
|
||||
"WEEK2": "2 Wochen",
|
||||
"MONTH1": "1 Monat",
|
||||
"MONTH3": "3 Monate",
|
||||
"MONTH6": "6 Monate",
|
||||
"YEAR": "1 Jahr",
|
||||
"ALL": "Alle"
|
||||
},
|
||||
"TITLE_GROUP": "Gruppe:",
|
||||
"GROUP": {
|
||||
"DAY": "Tag",
|
||||
"WEEK": "Woche",
|
||||
"MONTH": "Monat"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "AN",
|
||||
"OFF": "AUS"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Kontaktliste",
|
||||
"IMPORT_EXPORT": "Kontakte importieren oder exportieren",
|
||||
"IMPORT": "Importieren",
|
||||
"EXPORT": "Exportieren",
|
||||
"ADD": "Kontakt hinzufügen/bearbeiten",
|
||||
"SEND": "Senden",
|
||||
"SEND_FROM": "Senden von",
|
||||
"SEND_TO": "Zu",
|
||||
"OPEN_ADD_WALLET": "Wallet öffnen/hinzufügen",
|
||||
"COPY": "- Kopieren",
|
||||
"TABLE": {
|
||||
"NAME": "Name",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Adresse",
|
||||
"NOTES": "Notizen",
|
||||
"EMPTY": "Kontaktliste ist leer"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Name",
|
||||
"ADDRESS": "Adresse",
|
||||
"NOTES": "Notizen"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name ist erforderlich",
|
||||
"NAME_DUBLICATED": "Name existiert bereits",
|
||||
"ADDRESS_REQUIRED": "Adresse benötigt",
|
||||
"ADDRESS_NOT_VALID": "Adresse ungültig",
|
||||
"SET_MASTER_PASSWORD": "Master-Passwort festlegen",
|
||||
"ADDRESS_DUBLICATED": "Adresse existiert bereits",
|
||||
"MAX_LENGTH": "Maximale Länge der Notiz erreicht",
|
||||
"NAME_LENGTH": "Der Name muss 4-25 Zeichen lang sein"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Senden",
|
||||
"EDIT": "Bearbeiten",
|
||||
"DELETE": "Löschen",
|
||||
"ADD": "Kontakt hinzufügen",
|
||||
"ADD_EDIT": "Hinzufügen/Speichern",
|
||||
"GO_TO_WALLET": "Zu Wallet gehen",
|
||||
"IMPORT_EXPORT": "importieren/exportieren"
|
||||
},
|
||||
"SUCCESS_SENT": "Kontakt hinzugefügt",
|
||||
"SUCCESS_SAVE": "Kontakt wurde bearbeitet",
|
||||
"SUCCESS_IMPORT": "Kontakte wurden importiert",
|
||||
"SUCCESS_EXPORT": "Kontakte wurden exportiert",
|
||||
"ERROR_IMPORT": "Fehler beim Lesen der Datei!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Ungültiger Dateityp. Datei als .csv speichern",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Nicht genügend Geld",
|
||||
"NOT_ENOUGH_MONEY": "Unzureichendes Guthaben im Konto",
|
||||
"CORE_BUSY": "Interner Fehler: Kern ist beschäftigt",
|
||||
"DAEMON_BUSY": "Interner Fehler: Daemon ist beschäftigt",
|
||||
"NO_MONEY_REMOVE_OFFER": "Es gibt keine Gebühr für das Löschen eines Angebots, aber um das Netzwerk vor Spam-Transaktionen zu schützen, müssen Sie mindestens {{fee}} {{currency}} in Ihrer Wallet haben",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in-Nummer ist zu groß für den aktuellen Blockchain-Status. Nicht genügend unverbrauchte outputs zum Mischen",
|
||||
"TRANSACTION_IS_TO_BIG": "Transaktion überschreitet das Netzwerk-Limit. Sendet benötigten Betrag mit mehreren Transaktionen.",
|
||||
"TRANSFER_ATTEMPT": "Keine Verbindung zum Zano-Netzwerk",
|
||||
"ACCESS_DENIED": "Zugriff verweigert",
|
||||
"TRANSACTION_ERROR": "Fehler. Transaktion nicht abgeschlossen.",
|
||||
"BAD_ARG": "Ungültiges Argument",
|
||||
"WALLET_WRONG_ID": "Ungültige Wallet-ID",
|
||||
"WRONG_PASSWORD": "Ungültiges Passwort",
|
||||
"FILE_RESTORED": "Die Wallet-Datei wurde beschädigt. Wir haben die Schlüssel und die Wallet von der Blockchain wiederhergestellt",
|
||||
"FILE_NOT_FOUND": "Datei nicht gefunden",
|
||||
"FILE_EXIST": "Eine Datei mit diesem Namen existiert bereits. Geben Sie einen anderen Namen ein, um die Datei zu speichern",
|
||||
"FILE_NOT_SAVED": "Sie können keine Wallet-Datei in diesem Ordner speichern. Bitte wählen Sie einen anderen Ordner.",
|
||||
"TX_TYPE_NORMAL": "Fehler. Die Zahlung von der Wallet",
|
||||
"TX_TYPE_NORMAL_TO": "zu",
|
||||
"TX_TYPE_NORMAL_END": "wurde nicht abgeschlossen.",
|
||||
"TX_TYPE_NEW_ALIAS": "Fehler. Fehler beim Registrieren des Alias zum Speichern",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Bitte nochmals versuchen.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Fehler. Fehlgeschlagen Kommentar von gespeichertem Alias zu ändern",
|
||||
"TX_TYPE_COIN_BASE": "Fehler. Die Zahlung wurde nicht abgeschlossen."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "kopieren",
|
||||
"PASTE": "einfügen",
|
||||
"SELECT": "alle auswählen"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Beenden",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Eingehende Zahlung (nicht bestätigt)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Zahlung erhalten",
|
||||
"MINED": "Mined",
|
||||
"LOCKED": "Blockiert",
|
||||
"IS_MINIMIZE": "Zano-Anwendung wird auf die Systemleiste minimiert",
|
||||
"RESTORE": "Sie können es wiederherstellen, indem Sie auf das Kontextmenü benutzen oder anklicken ",
|
||||
"TRAY_MENU_SHOW": "Größe ändern",
|
||||
"TRAY_MENU_MINIMIZE": "Minimieren"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Setup master password",
|
||||
"SETUP_CONFIRM_PASS": "Confirm the password",
|
||||
"MASTER_PASS": "Master password",
|
||||
"BUTTON_NEXT": "Next",
|
||||
"BUTTON_SKIP": "Skip",
|
||||
"BUTTON_RESET": "Reset",
|
||||
"INCORRECT_PASSWORD": "Invalid password",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"CONFIRM_REQUIRED": "Confirmation is required",
|
||||
"MISMATCH": "Mismatch"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Go back"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"SAVE_PHRASE": "Save your seed phrase",
|
||||
"OPEN_WALLET": "Open existing wallet",
|
||||
"RESTORE_WALLET": "Restore from backup",
|
||||
"WALLET_DETAILS": "Wallet details",
|
||||
"ASSIGN_ALIAS": "Assign alias",
|
||||
"EDIT_ALIAS": "Edit alias",
|
||||
"TRANSFER_ALIAS": "Transfer alias",
|
||||
"CONTRACTS": "Contracts",
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"OLD_PURCHASE": "Purchase"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Wallets",
|
||||
"ADD_NEW": "+ Add",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "New offers/Messages",
|
||||
"SYNCING": "Syncing wallet"
|
||||
},
|
||||
"CONTACTS": "Contacts",
|
||||
"SETTINGS": "Settings",
|
||||
"LOG_OUT": "Log out",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "System error",
|
||||
"COMPLETE": "Completion",
|
||||
"SYNCING": "Syncing blockchain",
|
||||
"LOADING": "Loading blockchain data"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Update available",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Get new update.</span><br><span>Update is recommended!</span>",
|
||||
"IMPORTANT": "Update available",
|
||||
"IMPORTANT_HINT": "Important update!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Get new update.</span><br><span>Important update!</span>",
|
||||
"CRITICAL": "Update available",
|
||||
"CRITICAL_HINT": "Critical update!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Critical update available.</span><i class=\"icon\"></i><span>Update strongly recommended!</span>",
|
||||
"TIME": "System time differs from network",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Wrong system time!</span><br><span>Check and repair your system time.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Create or open the wallet to start using Zano",
|
||||
"BUTTON_NEW_WALLET": "Create new wallet",
|
||||
"BUTTON_OPEN_WALLET": "Open existing wallet",
|
||||
"BUTTON_RESTORE_BACKUP": "Restore from backup",
|
||||
"HELP": "How to create wallet?",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Set wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"TITLE_SAVE": "Save the wallet file.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open",
|
||||
"FILE_NOT_FOUND1": "Wallet file not found",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open wallet\" button.",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Type wallet password",
|
||||
"LABEL": "Password to this wallet",
|
||||
"OPEN": "Open wallet",
|
||||
"SKIP": "Skip",
|
||||
"NOT_FOUND": "Not found"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_PHRASE_KEY": "Seed phrase / tracking seed",
|
||||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match",
|
||||
"KEY_REQUIRED": "Key is required",
|
||||
"KEY_NOT_VALID": "Key not valid"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Create wallet",
|
||||
"BUTTON_COPY": "Copy"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"SELECT_LOCATION": "Select wallet location",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"RESTORE_WALLET": "Restore from backup"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings",
|
||||
"DARK_THEME": "Dark theme",
|
||||
"WHITE_THEME": "White theme",
|
||||
"GRAY_THEME": "Grey theme",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Lock app after:",
|
||||
"TIME1": "5 min",
|
||||
"TIME2": "15 min",
|
||||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
"NEW": "New password",
|
||||
"CONFIRM": "New password confirmation",
|
||||
"BUTTON": "Save"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"PASS_NOT_MATCH": "Old password not match",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
},
|
||||
"LAST_BUILD": "Current build: {{value}}",
|
||||
"APP_LOG_TITLE": "Log level:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Register an alias",
|
||||
"DETAILS": "Details",
|
||||
"LOCK": "Lock",
|
||||
"AVAILABLE_BALANCE": "Available <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Locked <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "What does that mean?",
|
||||
"TABS": {
|
||||
"SEND": "Send",
|
||||
"RECEIVE": "Receive",
|
||||
"HISTORY": "History",
|
||||
"CONTRACTS": "Contracts",
|
||||
"MESSAGES": "Messages",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_FILE_LOCATION": "Wallet file location",
|
||||
"LABEL_SEED_PHRASE": "Seed phrase",
|
||||
"SEED_PHRASE_HINT": "Click to reveal the seed phrase",
|
||||
"BUTTON_SAVE": "Save",
|
||||
"BUTTON_REMOVE": "Close wallet",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later."
|
||||
},
|
||||
"COST": "Alias fee {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"ONE_ALIAS": "You can create only one alias per wallet",
|
||||
"REQUEST_ADD_REG": "The alias will be assigned within 10 minutes"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "You do not have enough funds to change the comment to this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"COST": "Fee {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Edit"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transfer to",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "No wallet with this account exists",
|
||||
"ALIAS_EXISTS": "This account already has an alias",
|
||||
"NO_MONEY": "You do not have enough funds to transfer this alias"
|
||||
},
|
||||
"COST": "Transfer fee {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transfer",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"REQUEST_SEND_REG": "The alias will be transferred within 10 minutes"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Address",
|
||||
"AMOUNT": "Amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"HIDE": "Hide your wallet address from recipient",
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "Transaction sent",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"ALIAS_NOT_VALID": "Alias not valid",
|
||||
"AMOUNT_REQUIRED": "Amount is required",
|
||||
"AMOUNT_ZERO": "Amount is zero",
|
||||
"FEE_REQUIRED": "Fee is required",
|
||||
"FEE_MINIMUM": "Minimum fee: {{fee}}",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
"STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Locked till {{date}}",
|
||||
"SEND": "Sent",
|
||||
"RECEIVED": "Received",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"FEE": "Fee",
|
||||
"ADDRESS": "Address",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "Payment ID",
|
||||
"ID": "Transaction ID",
|
||||
"SIZE": "Transaction size",
|
||||
"SIZE_VALUE": "{{value}} bytes",
|
||||
"HEIGHT": "Height",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Comment"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "hidden",
|
||||
"UNDEFINED": "Undefined",
|
||||
"COMPLETE_BUYER": "Contract completed",
|
||||
"COMPLETE_SELLER": "Contract completed",
|
||||
"CREATE_ALIAS": "Fee for assigning alias",
|
||||
"UPDATE_ALIAS": "Fee for editing alias",
|
||||
"POW_REWARD": "POW reward",
|
||||
"POS_REWARD": "POS reward",
|
||||
"CREATE_CONTRACT": "Contract proposal",
|
||||
"PLEDGE_CONTRACT": "Contract deposit",
|
||||
"NULLIFY_CONTRACT": "Burn deposits",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Cancellation request",
|
||||
"CANCEL_CONTRACT": "Cancel and return deposits"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "No active contracts",
|
||||
"CONTRACTS": "Contracts",
|
||||
"PURCHASE": "Purchase",
|
||||
"SELL": "Sell",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"STATUS": "Status",
|
||||
"COMMENTS": "Comments",
|
||||
"PURCHASE_BUTTON": "New Purchase",
|
||||
"LISTING_BUTTON": "Create listing",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Less than an hour to respond",
|
||||
"REMAINING_ONE": "{{time}} hour remains",
|
||||
"REMAINING_MANY": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT": "{{time}} hours remain",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} hour remains",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_ONE_WAITING": "Waiting for {{time}} hour",
|
||||
"REMAINING_MANY_WAITING": "Waiting for {{time}} hours",
|
||||
"REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "New contract proposal",
|
||||
"IGNORED": "You ignored contract proposal",
|
||||
"ACCEPTED": "Contract started",
|
||||
"WAIT": "Waiting for contract confirmation",
|
||||
"WAITING_BUYER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "You ignored cancellation proposal",
|
||||
"EXPIRED": "Contract proposal has expired"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "Waiting for response",
|
||||
"IGNORED": "Seller ignored your contract proposal",
|
||||
"ACCEPTED": "Seller accepted your contract proposal",
|
||||
"WAIT": "Waiting for deposits confirmation",
|
||||
"WAITING_SELLER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"WAITING_CANCEL": "Waiting for contract cancellation",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract",
|
||||
"EXPIRED": "The contract proposal has expired"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Description",
|
||||
"SELLER": "Seller",
|
||||
"AMOUNT": "Amount",
|
||||
"YOUR_DEPOSIT": "Your deposit",
|
||||
"SELLER_DEPOSIT": "Seller deposit",
|
||||
"BUYER_DEPOSIT": "Buyer deposit",
|
||||
"SAME_AMOUNT": "Same amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"SEND_BUTTON": "Send",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Description required",
|
||||
"DESC_MAXIMUM": "Maximum field length reached",
|
||||
"SELLER_REQUIRED": "Address required",
|
||||
"SELLER_NOT_VALID": "Invalid address",
|
||||
"ALIAS_NOT_VALID": "Invalid alias",
|
||||
"AMOUNT_REQUIRED": "Amount required",
|
||||
"AMOUNT_ZERO": "Amount cannot be zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Deposit required",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Seller deposit required",
|
||||
"SELLER_SAME": "Use separate account",
|
||||
"COMMENT_MAXIMUM": "Maximum field length reached"
|
||||
},
|
||||
"PROGRESS_NEW": "New purchase",
|
||||
"PROGRESS_WAIT": "Awaiting reply",
|
||||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"WAITING_SELLER": "Waiting for response",
|
||||
"WAITING_BUYER": "Contract proposal received",
|
||||
"WAITING_CONFIRMATION": "Waiting for deposits confirmation",
|
||||
"WAITING_DELIVERY": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"IGNORED_BUYER": "Contract proposal ignored",
|
||||
"IGNORED_SELLER": "The seller ignored your contract proposal",
|
||||
"PROPOSAL_CANCEL_SELLER": "Cancellation request sent",
|
||||
"PROPOSAL_CANCEL_BUYER": "Cancellation request received",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract",
|
||||
"IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"EXPIRED": "Contract proposal expired",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contract started",
|
||||
"IGNORED_ACCEPT": "Contract proposal ignored",
|
||||
"BURN_PROPOSAL": "Deposits burned",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contract completed",
|
||||
"SEND_CANCEL_PROPOSAL": "Cancellation request sent",
|
||||
"IGNORED_CANCEL": "Contract cancellation proposal ignored",
|
||||
"DEALS_CANCELED_WAIT": "Cancellation in progress",
|
||||
"WAITING_TIME": "Response time",
|
||||
"NEED_MONEY": "Insufficient funds",
|
||||
"BUTTON_MAKE_PLEDGE": "Accept and make deposit",
|
||||
"BUTTON_IGNORE": "Ignore and hide offer",
|
||||
"BUTTON_NULLIFY": "Terminate and burn deposits",
|
||||
"BUTTON_RECEIVED": "Complete and release deposits",
|
||||
"BUTTON_CANCEL_BUYER": "Cancel and return deposits",
|
||||
"BUTTON_NOT_CANCEL": "Ignore request",
|
||||
"BUTTON_CANCEL_SELLER": "Confirm and return deposits",
|
||||
"HOUR": "hour",
|
||||
"HOURS": "hours",
|
||||
"CANCEL": "Cancel",
|
||||
"NULLIFY_QUESTION": "Are you sure you want to burn both deposits?",
|
||||
"BUTTON_NULLIFY_SHORT": "Burn",
|
||||
"WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Error",
|
||||
"SUCCESS": "Success",
|
||||
"INFO": "Information",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Send",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"TITLE": "Confirm transaction",
|
||||
"MESSAGE": {
|
||||
"SEND": "Send",
|
||||
"FROM": "From",
|
||||
"TO": "To",
|
||||
"COMMENT": "Comment"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Pending",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Time period:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 week",
|
||||
"WEEK2": "2 week",
|
||||
"MONTH1": "1 month",
|
||||
"MONTH3": "3 month",
|
||||
"MONTH6": "6 month",
|
||||
"YEAR": "1 year",
|
||||
"ALL": "All"
|
||||
},
|
||||
"TITLE_GROUP": "Group:",
|
||||
"GROUP": {
|
||||
"DAY": "day",
|
||||
"WEEK": "week",
|
||||
"MONTH": "month"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Contact list",
|
||||
"IMPORT_EXPORT": "Import or export contacts",
|
||||
"IMPORT": "Import",
|
||||
"EXPORT": "Export",
|
||||
"ADD": "Add/edit contact",
|
||||
"SEND": "Send",
|
||||
"SEND_FROM": "Send from",
|
||||
"SEND_TO": "To",
|
||||
"OPEN_ADD_WALLET": "Open/Add wallet",
|
||||
"COPY": "- Copy",
|
||||
"TABLE": {
|
||||
"NAME": "Name",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes",
|
||||
"EMPTY": "Contact list is empty"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Name",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUBLICATED": "Name is dublicated",
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"SET_MASTER_PASSWORD": "Set master password",
|
||||
"ADDRESS_DUBLICATED": "Address is dublicated",
|
||||
"MAX_LENGTH": "Maximum notes length reached",
|
||||
"NAME_LENGTH": "The name must be 4-25 characters long"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Send",
|
||||
"EDIT": "Edit",
|
||||
"DELETE": "Delete",
|
||||
"ADD": "Add contact",
|
||||
"ADD_EDIT": "Add/Save",
|
||||
"GO_TO_WALLET": "Go to wallet",
|
||||
"IMPORT_EXPORT": "Import/export"
|
||||
},
|
||||
"SUCCESS_SENT": "Contact added",
|
||||
"SUCCESS_SAVE": "Contact is edited",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Error is occured while reading file!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Not enough money",
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error: core is busy",
|
||||
"DAEMON_BUSY": "Internal error: daemon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with",
|
||||
"TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Transaction not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.",
|
||||
"TX_TYPE_NORMAL": "Error. The payment from the wallet",
|
||||
"TX_TYPE_NORMAL_TO": "to",
|
||||
"TX_TYPE_NORMAL_END": "was not completed.",
|
||||
"TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Please try again.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe",
|
||||
"TX_TYPE_COIN_BASE": "Error. The payment was not completed."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copy",
|
||||
"PASTE": "paste",
|
||||
"SELECT": "select all"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Quit",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Payment received",
|
||||
"MINED": "Mined",
|
||||
"LOCKED": "Blocked",
|
||||
"IS_MINIMIZE": "Zano application is minimized to the system tray",
|
||||
"RESTORE": "You can recover it by clicking or using the context menu",
|
||||
"TRAY_MENU_SHOW": "Resize",
|
||||
"TRAY_MENU_MINIMIZE": "Minimize"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,632 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Setup master password",
|
||||
"SETUP_CONFIRM_PASS": "Confirm the password",
|
||||
"MASTER_PASS": "Master password",
|
||||
"BUTTON_NEXT": "Next",
|
||||
"BUTTON_SKIP": "Skip",
|
||||
"BUTTON_RESET": "Reset",
|
||||
"INCORRECT_PASSWORD": "Invalid password",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"CONFIRM_REQUIRED": "Confirmation is required",
|
||||
"MISMATCH": "Mismatch"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Go back"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"SAVE_PHRASE": "Save your seed phrase",
|
||||
"OPEN_WALLET": "Open existing wallet",
|
||||
"RESTORE_WALLET": "Restore from backup",
|
||||
"WALLET_DETAILS": "Wallet details",
|
||||
"ASSIGN_ALIAS": "Assign alias",
|
||||
"EDIT_ALIAS": "Edit alias",
|
||||
"TRANSFER_ALIAS": "Transfer alias",
|
||||
"CONTRACTS": "Contracts",
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"OLD_PURCHASE": "Purchase"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Wallets",
|
||||
"ADD_NEW": "+ Add",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "New offers/Messages",
|
||||
"SYNCING": "Syncing wallet"
|
||||
},
|
||||
"CONTACTS": "Contacts",
|
||||
"CONTACTS_TOOLTIP": "Contacts option available only with Master Password enabled",
|
||||
"SETTINGS": "Settings",
|
||||
"LOG_OUT": "Log out",
|
||||
"LOG_OUT_TOOLTIP": "Logout option available only with Master Password enabled",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "System error",
|
||||
"COMPLETE": "Completion",
|
||||
"SYNCING": "Syncing block",
|
||||
"LOADING": "Loading blockchain data",
|
||||
"DOWNLOADING": "Downloading",
|
||||
"SLASH": "/",
|
||||
"MB": "MB"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Update available",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Get new update.</span><br><span>Update is recommended!</span>",
|
||||
"IMPORTANT": "Update available",
|
||||
"IMPORTANT_HINT": "Important update!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Get new update.</span><br><span>Important update!</span>",
|
||||
"CRITICAL": "Update available",
|
||||
"CRITICAL_HINT": "Critical update!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Critical update available.</span><i class=\"icon\"></i><span>Update strongly recommended!</span>",
|
||||
"TIME": "System time differs from network",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Wrong system time!</span><br><span>Check and repair your system time.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Create or open the wallet to start using Zano",
|
||||
"BUTTON_NEW_WALLET": "Create new wallet",
|
||||
"BUTTON_OPEN_WALLET": "Open existing wallet",
|
||||
"BUTTON_RESTORE_BACKUP": "Restore from backup",
|
||||
"HELP": "How to create wallet?",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Set wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"TITLE_SAVE": "Save the wallet file.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open",
|
||||
"FILE_NOT_FOUND1": "Wallet file not found",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open wallet\" button.",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Type wallet password",
|
||||
"LABEL": "Password to this wallet",
|
||||
"OPEN": "Open wallet",
|
||||
"SKIP": "Skip",
|
||||
"NOT_FOUND": "Not found"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_PHRASE_KEY": "Seed phrase / tracking seed",
|
||||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path",
|
||||
"SEED_PASSWORD": "Seed password",
|
||||
"OK": "OK",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match",
|
||||
"KEY_REQUIRED": "Key is required",
|
||||
"KEY_NOT_VALID": "Key not valid",
|
||||
"INCORRECT_PASSWORD": "Incorrect password"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Create wallet",
|
||||
"BUTTON_COPY": "Copy"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"SELECT_LOCATION": "Select wallet location",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"RESTORE_WALLET": "Restore from backup"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings",
|
||||
"DARK_THEME": "Dark theme",
|
||||
"WHITE_THEME": "White theme",
|
||||
"GRAY_THEME": "Grey theme",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Lock app after:",
|
||||
"TIME1": "5 min",
|
||||
"TIME2": "15 min",
|
||||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"LANGUAGE": {
|
||||
"TITLE": "Language",
|
||||
"EN": "English",
|
||||
"FR": "French",
|
||||
"DE": "Deutsch",
|
||||
"IT": "Italian",
|
||||
"PT": "Portuguese"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Current password",
|
||||
"NEW": "New password",
|
||||
"CONFIRM": "New password confirmation",
|
||||
"BUTTON": "Save"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"PASS_NOT_MATCH": "Incorrect password",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
},
|
||||
"LAST_BUILD": "Current build: {{value}}",
|
||||
"APP_LOG_TITLE": "Log level:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Register an alias",
|
||||
"DETAILS": "Details",
|
||||
"LOCK": "Lock",
|
||||
"AVAILABLE_BALANCE": "Available <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Locked <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "What does that mean?",
|
||||
"CONFIRM": {
|
||||
"TITLE": "Remove wallet from the list?",
|
||||
"MESSAGE": "To access it you’ll have to add it again"
|
||||
},
|
||||
"TABS": {
|
||||
"SEND": "Send",
|
||||
"RECEIVE": "Receive",
|
||||
"HISTORY": "History",
|
||||
"CONTRACTS": "Contracts",
|
||||
"MESSAGES": "Messages",
|
||||
"STAKING": "Staking"
|
||||
},
|
||||
"TOOLTIPS": {
|
||||
"EDIT_ALIAS": "Edit alias",
|
||||
"TRANSFER_ALIAS": "Transfer alias",
|
||||
"SETTINGS": "Settings",
|
||||
"CLOSE": "Close wallet"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_FILE_LOCATION": "Wallet file location",
|
||||
"LABEL_SEED_PHRASE": "Seed phrase",
|
||||
"SEED_PHRASE_HINT": "Click to reveal the seed phrase",
|
||||
"BUTTON_SAVE": "Save",
|
||||
"BUTTON_REMOVE": "Close wallet",
|
||||
"CREATE_PASSWORD_SECURE": "Create a password to secure your seed",
|
||||
"INFO": "info",
|
||||
"SEED_IS_UNSECURED": "Seed is unsecured",
|
||||
"SEED_IS_SECURED": "Seed is secured",
|
||||
"REMEMBER_YOU_WILL_REQUIRE": "Remember, you will require the password to restore it.",
|
||||
"FORM": {
|
||||
"CONFIRM_PASSWORD": "Confirm password",
|
||||
"GENERATE_SECURE_SEED": "Generate Secure Seed",
|
||||
"SECURED_SEED_WILL_REQUIRE": "Secured seed will require this password to restore."
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"PASSWORDS_DONT_MATCH": "Passwords don't match"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later."
|
||||
},
|
||||
"COST": "Alias fee {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"ONE_ALIAS": "You can create only one alias per wallet",
|
||||
"REQUEST_ADD_REG": "The alias will be assigned within 10 minutes"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "You do not have enough funds to change the comment to this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"COST": "Fee {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Edit"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transfer to",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "No wallet with this account exists",
|
||||
"ALIAS_EXISTS": "This account already has an alias",
|
||||
"NO_MONEY": "You do not have enough funds to transfer this alias"
|
||||
},
|
||||
"COST": "Transfer fee {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transfer",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"REQUEST_SEND_REG": "The alias will be transferred within 10 minutes"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Address",
|
||||
"AMOUNT": "Amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"HIDE": "Hide your wallet address from recipient",
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "Transaction sent",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"ALIAS_NOT_VALID": "Alias not valid",
|
||||
"AMOUNT_REQUIRED": "Amount is required",
|
||||
"AMOUNT_ZERO": "Amount is zero",
|
||||
"FEE_REQUIRED": "Fee is required",
|
||||
"FEE_MINIMUM": "Minimum fee: {{fee}}",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
"STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Locked till {{date}}",
|
||||
"SEND": "Sent",
|
||||
"RECEIVED": "Received",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"FEE": "Fee",
|
||||
"ADDRESS": "Address",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "Payment ID",
|
||||
"ID": "Transaction ID",
|
||||
"SIZE": "Transaction size",
|
||||
"SIZE_VALUE": "{{value}} bytes",
|
||||
"HEIGHT": "Height",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Comment"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "hidden",
|
||||
"UNDEFINED": "Undefined",
|
||||
"COMPLETE_BUYER": "Contract completed",
|
||||
"COMPLETE_SELLER": "Contract completed",
|
||||
"CREATE_ALIAS": "Fee for assigning alias",
|
||||
"UPDATE_ALIAS": "Fee for editing alias",
|
||||
"POW_REWARD": "POW reward",
|
||||
"POS_REWARD": "POS reward",
|
||||
"CREATE_CONTRACT": "Contract proposal",
|
||||
"PLEDGE_CONTRACT": "Contract deposit",
|
||||
"NULLIFY_CONTRACT": "Burn deposits",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Cancellation request",
|
||||
"CANCEL_CONTRACT": "Cancel and return deposits"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "No active contracts",
|
||||
"CONTRACTS": "Contracts",
|
||||
"PURCHASE": "Purchase",
|
||||
"SELL": "Sell",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"STATUS": "Status",
|
||||
"COMMENTS": "Comments",
|
||||
"PURCHASE_BUTTON": "New Purchase",
|
||||
"LISTING_BUTTON": "Create listing",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Less than an hour to respond",
|
||||
"REMAINING_ONE": "{{time}} hour remains",
|
||||
"REMAINING_MANY": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT": "{{time}} hours remain",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} hour remains",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_ONE_WAITING": "Waiting for {{time}} hour",
|
||||
"REMAINING_MANY_WAITING": "Waiting for {{time}} hours",
|
||||
"REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "New contract proposal",
|
||||
"IGNORED": "You ignored contract proposal",
|
||||
"ACCEPTED": "Contract started",
|
||||
"WAIT": "Waiting for contract confirmation",
|
||||
"WAITING_BUYER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "You ignored cancellation proposal",
|
||||
"EXPIRED": "Contract proposal has expired"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "Waiting for response",
|
||||
"IGNORED": "Seller ignored your contract proposal",
|
||||
"ACCEPTED": "Seller accepted your contract proposal",
|
||||
"WAIT": "Waiting for deposits confirmation",
|
||||
"WAITING_SELLER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"WAITING_CANCEL": "Waiting for contract cancellation",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract",
|
||||
"EXPIRED": "The contract proposal has expired"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Description",
|
||||
"SELLER": "Seller",
|
||||
"AMOUNT": "Amount",
|
||||
"YOUR_DEPOSIT": "Your deposit",
|
||||
"SELLER_DEPOSIT": "Seller deposit",
|
||||
"BUYER_DEPOSIT": "Buyer deposit",
|
||||
"SAME_AMOUNT": "Same amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"SEND_BUTTON": "Send",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Description required",
|
||||
"DESC_MAXIMUM": "Maximum field length reached",
|
||||
"SELLER_REQUIRED": "Address required",
|
||||
"SELLER_NOT_VALID": "Invalid address",
|
||||
"ALIAS_NOT_VALID": "Invalid alias",
|
||||
"AMOUNT_REQUIRED": "Amount required",
|
||||
"AMOUNT_ZERO": "Amount cannot be zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Deposit required",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Seller deposit required",
|
||||
"SELLER_SAME": "Use separate account",
|
||||
"COMMENT_MAXIMUM": "Maximum field length reached"
|
||||
},
|
||||
"PROGRESS_NEW": "New purchase",
|
||||
"PROGRESS_WAIT": "Awaiting reply",
|
||||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"WAITING_SELLER": "Waiting for response",
|
||||
"WAITING_BUYER": "Contract proposal received",
|
||||
"WAITING_CONFIRMATION": "Waiting for deposits confirmation",
|
||||
"WAITING_DELIVERY": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"IGNORED_BUYER": "Contract proposal ignored",
|
||||
"IGNORED_SELLER": "The seller ignored your contract proposal",
|
||||
"PROPOSAL_CANCEL_SELLER": "Cancellation request sent",
|
||||
"PROPOSAL_CANCEL_BUYER": "Cancellation request received",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract",
|
||||
"IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"EXPIRED": "Contract proposal expired",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contract started",
|
||||
"IGNORED_ACCEPT": "Contract proposal ignored",
|
||||
"BURN_PROPOSAL": "Deposits burned",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contract completed",
|
||||
"SEND_CANCEL_PROPOSAL": "Cancellation request sent",
|
||||
"IGNORED_CANCEL": "Contract cancellation proposal ignored",
|
||||
"DEALS_CANCELED_WAIT": "Cancellation in progress",
|
||||
"WAITING_TIME": "Response time",
|
||||
"NEED_MONEY": "Insufficient funds",
|
||||
"BUTTON_MAKE_PLEDGE": "Accept and make deposit",
|
||||
"BUTTON_IGNORE": "Ignore and hide offer",
|
||||
"BUTTON_NULLIFY": "Terminate and burn deposits",
|
||||
"BUTTON_RECEIVED": "Complete and release deposits",
|
||||
"BUTTON_CANCEL_BUYER": "Cancel and return deposits",
|
||||
"BUTTON_NOT_CANCEL": "Ignore request",
|
||||
"BUTTON_CANCEL_SELLER": "Confirm and return deposits",
|
||||
"HOUR": "hour",
|
||||
"HOURS": "hours",
|
||||
"CANCEL": "Cancel",
|
||||
"NULLIFY_QUESTION": "Are you sure you want to burn both deposits?",
|
||||
"BUTTON_NULLIFY_SHORT": "Burn",
|
||||
"WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Error",
|
||||
"SUCCESS": "Success",
|
||||
"INFO": "Information",
|
||||
"OK": "OK",
|
||||
"CANCEL": "Cancel"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Send",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"TITLE": "Confirm transaction",
|
||||
"MESSAGE": {
|
||||
"SEND": "Send",
|
||||
"FROM": "From",
|
||||
"TO": "To",
|
||||
"COMMENT": "Comment"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Pending",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Time period:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 week",
|
||||
"WEEK2": "2 week",
|
||||
"MONTH1": "1 month",
|
||||
"MONTH3": "3 month",
|
||||
"MONTH6": "6 month",
|
||||
"YEAR": "1 year",
|
||||
"ALL": "All"
|
||||
},
|
||||
"TITLE_GROUP": "Group:",
|
||||
"GROUP": {
|
||||
"DAY": "day",
|
||||
"WEEK": "week",
|
||||
"MONTH": "month"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Contact list",
|
||||
"IMPORT_EXPORT": "Import or export contacts",
|
||||
"IMPORT": "Import",
|
||||
"EXPORT": "Export",
|
||||
"ADD": "Add/edit contact",
|
||||
"SEND": "Send",
|
||||
"SEND_FROM": "Send from",
|
||||
"SEND_TO": "To",
|
||||
"OPEN_ADD_WALLET": "Open/Add wallet",
|
||||
"COPY": "- Copy"
|
||||
, "TABLE": {
|
||||
"NAME": "Name",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes",
|
||||
"EMPTY": "Contact list is empty"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Name",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUBLICATED": "Name is dublicated",
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"SET_MASTER_PASSWORD": "Set master password",
|
||||
"ADDRESS_DUBLICATED": "Address is dublicated",
|
||||
"MAX_LENGTH": "Maximum notes length reached",
|
||||
"NAME_LENGTH": "The name must be 4-25 characters long"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Send",
|
||||
"EDIT": "Edit",
|
||||
"DELETE": "Delete",
|
||||
"ADD": "Add contact",
|
||||
"ADD_EDIT": "Add/Save",
|
||||
"GO_TO_WALLET": "Go to wallet",
|
||||
"IMPORT_EXPORT": "Import/export"
|
||||
},
|
||||
"SUCCESS_SENT": "Contact added",
|
||||
"SUCCESS_SAVE": "Contact is edited",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Error is occured while reading file!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Not enough money",
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error: core is busy",
|
||||
"DAEMON_BUSY": "Internal error: daemon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with",
|
||||
"TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Transaction not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WALLET_WATCH_ONLY_NOT_SUPPORTED": "Watch-only wallets can only be opened by simplewallet",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.",
|
||||
"TX_TYPE_NORMAL": "Error. The payment from the wallet",
|
||||
"TX_TYPE_NORMAL_TO": "to",
|
||||
"TX_TYPE_NORMAL_END": "was not completed.",
|
||||
"TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Please try again.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe",
|
||||
"TX_TYPE_COIN_BASE": "Error. The payment was not completed."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copy",
|
||||
"PASTE": "paste",
|
||||
"SELECT": "select all"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Quit",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Payment received",
|
||||
"MINED": "Mined",
|
||||
"LOCKED": "Blocked",
|
||||
"IS_MINIMIZE": "Zano application is minimized to the system tray",
|
||||
"RESTORE": "You can recover it by clicking or using the context menu",
|
||||
"TRAY_MENU_SHOW": "Resize",
|
||||
"TRAY_MENU_MINIMIZE": "Minimize"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Setup master password",
|
||||
"SETUP_CONFIRM_PASS": "Confirm the password",
|
||||
"MASTER_PASS": "Master password",
|
||||
"BUTTON_NEXT": "Next",
|
||||
"BUTTON_SKIP": "Skip",
|
||||
"BUTTON_RESET": "Reset",
|
||||
"INCORRECT_PASSWORD": "Invalid password",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"CONFIRM_REQUIRED": "Confirmation is required",
|
||||
"MISMATCH": "Mismatch"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Go back"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"SAVE_PHRASE": "Save your seed phrase",
|
||||
"OPEN_WALLET": "Open existing wallet",
|
||||
"RESTORE_WALLET": "Restore from backup",
|
||||
"WALLET_DETAILS": "Wallet details",
|
||||
"ASSIGN_ALIAS": "Assign alias",
|
||||
"EDIT_ALIAS": "Edit alias",
|
||||
"TRANSFER_ALIAS": "Transfer alias",
|
||||
"CONTRACTS": "Contracts",
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"OLD_PURCHASE": "Purchase"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Wallets",
|
||||
"ADD_NEW": "+ Add",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "New offers/Messages",
|
||||
"SYNCING": "Syncing wallet"
|
||||
},
|
||||
"CONTACTS": "Contacts",
|
||||
"SETTINGS": "Settings",
|
||||
"LOG_OUT": "Log out",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "System error",
|
||||
"COMPLETE": "Completion",
|
||||
"SYNCING": "Syncing blockchain",
|
||||
"LOADING": "Loading blockchain data"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Update available",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Get new update.</span><br><span>Update is recommended!</span>",
|
||||
"IMPORTANT": "Update available",
|
||||
"IMPORTANT_HINT": "Important update!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Get new update.</span><br><span>Important update!</span>",
|
||||
"CRITICAL": "Update available",
|
||||
"CRITICAL_HINT": "Critical update!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Critical update available.</span><i class=\"icon\"></i><span>Update strongly recommended!</span>",
|
||||
"TIME": "System time differs from network",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Wrong system time!</span><br><span>Check and repair your system time.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Create or open the wallet to start using Zano",
|
||||
"BUTTON_NEW_WALLET": "Create new wallet",
|
||||
"BUTTON_OPEN_WALLET": "Open existing wallet",
|
||||
"BUTTON_RESTORE_BACKUP": "Restore from backup",
|
||||
"HELP": "How to create wallet?",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Set wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"TITLE_SAVE": "Save the wallet file.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open",
|
||||
"FILE_NOT_FOUND1": "Wallet file not found",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open wallet\" button.",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Type wallet password",
|
||||
"LABEL": "Password to this wallet",
|
||||
"OPEN": "Open wallet",
|
||||
"SKIP": "Skip",
|
||||
"NOT_FOUND": "Not found"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_PHRASE_KEY": "Seed phrase / tracking seed",
|
||||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match",
|
||||
"KEY_REQUIRED": "Key is required",
|
||||
"KEY_NOT_VALID": "Key not valid"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Create wallet",
|
||||
"BUTTON_COPY": "Copy"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"SELECT_LOCATION": "Select wallet location",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"RESTORE_WALLET": "Restore from backup"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings",
|
||||
"DARK_THEME": "Dark theme",
|
||||
"WHITE_THEME": "White theme",
|
||||
"GRAY_THEME": "Grey theme",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Lock app after:",
|
||||
"TIME1": "5 min",
|
||||
"TIME2": "15 min",
|
||||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
"NEW": "New password",
|
||||
"CONFIRM": "New password confirmation",
|
||||
"BUTTON": "Save"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"PASS_NOT_MATCH": "Old password not match",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
},
|
||||
"LAST_BUILD": "Current build: {{value}}",
|
||||
"APP_LOG_TITLE": "Log level:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Register an alias",
|
||||
"DETAILS": "Details",
|
||||
"LOCK": "Lock",
|
||||
"AVAILABLE_BALANCE": "Available <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Locked <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "What does that mean?",
|
||||
"TABS": {
|
||||
"SEND": "Send",
|
||||
"RECEIVE": "Receive",
|
||||
"HISTORY": "History",
|
||||
"CONTRACTS": "Contracts",
|
||||
"MESSAGES": "Messages",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_FILE_LOCATION": "Wallet file location",
|
||||
"LABEL_SEED_PHRASE": "Seed phrase",
|
||||
"SEED_PHRASE_HINT": "Click to reveal the seed phrase",
|
||||
"BUTTON_SAVE": "Save",
|
||||
"BUTTON_REMOVE": "Close wallet",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later."
|
||||
},
|
||||
"COST": "Alias fee {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Nombre no válido: símbolos permitidos \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"ONE_ALIAS": "You can create only one alias per wallet",
|
||||
"REQUEST_ADD_REG": "The alias will be assigned within 10 minutes"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "You do not have enough funds to change the comment to this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"COST": "Fee {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Edit"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transfer to",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "No wallet with this account exists",
|
||||
"ALIAS_EXISTS": "This account already has an alias",
|
||||
"NO_MONEY": "You do not have enough funds to transfer this alias"
|
||||
},
|
||||
"COST": "Transfer fee {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transfer",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"REQUEST_SEND_REG": "The alias will be transferred within 10 minutes"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Address",
|
||||
"AMOUNT": "Amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"HIDE": "Hide your wallet address from recipient",
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "Transaction sent",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"ALIAS_NOT_VALID": "Alias not valid",
|
||||
"AMOUNT_REQUIRED": "Amount is required",
|
||||
"AMOUNT_ZERO": "Amount is zero",
|
||||
"FEE_REQUIRED": "Fee is required",
|
||||
"FEE_MINIMUM": "Minimum fee: {{fee}}",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
"STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Locked till {{date}}",
|
||||
"SEND": "Sent",
|
||||
"RECEIVED": "Received",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"FEE": "Fee",
|
||||
"ADDRESS": "Address",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "Payment ID",
|
||||
"ID": "Transaction ID",
|
||||
"SIZE": "Transaction size",
|
||||
"SIZE_VALUE": "{{value}} bytes",
|
||||
"HEIGHT": "Height",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Comment"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "hidden",
|
||||
"UNDEFINED": "Undefined",
|
||||
"COMPLETE_BUYER": "Contract completed",
|
||||
"COMPLETE_SELLER": "Contract completed",
|
||||
"CREATE_ALIAS": "Fee for assigning alias",
|
||||
"UPDATE_ALIAS": "Fee for editing alias",
|
||||
"POW_REWARD": "POW reward",
|
||||
"POS_REWARD": "POS reward",
|
||||
"CREATE_CONTRACT": "Contract proposal",
|
||||
"PLEDGE_CONTRACT": "Contract deposit",
|
||||
"NULLIFY_CONTRACT": "Burn deposits",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Cancellation request",
|
||||
"CANCEL_CONTRACT": "Cancel and return deposits"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "No active contracts",
|
||||
"CONTRACTS": "Contracts",
|
||||
"PURCHASE": "Purchase",
|
||||
"SELL": "Sell",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"STATUS": "Status",
|
||||
"COMMENTS": "Comments",
|
||||
"PURCHASE_BUTTON": "New Purchase",
|
||||
"LISTING_BUTTON": "Create listing",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Less than an hour to respond",
|
||||
"REMAINING_ONE": "{{time}} hour remains",
|
||||
"REMAINING_MANY": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT": "{{time}} hours remain",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} hour remains",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_ONE_WAITING": "Waiting for {{time}} hour",
|
||||
"REMAINING_MANY_WAITING": "Waiting for {{time}} hours",
|
||||
"REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "New contract proposal",
|
||||
"IGNORED": "You ignored contract proposal",
|
||||
"ACCEPTED": "Contract started",
|
||||
"WAIT": "Waiting for contract confirmation",
|
||||
"WAITING_BUYER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "You ignored cancellation proposal",
|
||||
"EXPIRED": "Contract proposal has expired"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "Waiting for response",
|
||||
"IGNORED": "Seller ignored your contract proposal",
|
||||
"ACCEPTED": "Seller accepted your contract proposal",
|
||||
"WAIT": "Waiting for deposits confirmation",
|
||||
"WAITING_SELLER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"WAITING_CANCEL": "Waiting for contract cancellation",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract",
|
||||
"EXPIRED": "The contract proposal has expired"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Description",
|
||||
"SELLER": "Seller",
|
||||
"AMOUNT": "Amount",
|
||||
"YOUR_DEPOSIT": "Your deposit",
|
||||
"SELLER_DEPOSIT": "Seller deposit",
|
||||
"BUYER_DEPOSIT": "Buyer deposit",
|
||||
"SAME_AMOUNT": "Same amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"SEND_BUTTON": "Send",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Description required",
|
||||
"DESC_MAXIMUM": "Maximum field length reached",
|
||||
"SELLER_REQUIRED": "Address required",
|
||||
"SELLER_NOT_VALID": "Invalid address",
|
||||
"ALIAS_NOT_VALID": "Invalid alias",
|
||||
"AMOUNT_REQUIRED": "Amount required",
|
||||
"AMOUNT_ZERO": "Amount cannot be zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Deposit required",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Seller deposit required",
|
||||
"SELLER_SAME": "Use separate account",
|
||||
"COMMENT_MAXIMUM": "Maximum field length reached"
|
||||
},
|
||||
"PROGRESS_NEW": "New purchase",
|
||||
"PROGRESS_WAIT": "Awaiting reply",
|
||||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"WAITING_SELLER": "Waiting for response",
|
||||
"WAITING_BUYER": "Contract proposal received",
|
||||
"WAITING_CONFIRMATION": "Waiting for deposits confirmation",
|
||||
"WAITING_DELIVERY": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"IGNORED_BUYER": "Contract proposal ignored",
|
||||
"IGNORED_SELLER": "The seller ignored your contract proposal",
|
||||
"PROPOSAL_CANCEL_SELLER": "Cancellation request sent",
|
||||
"PROPOSAL_CANCEL_BUYER": "Cancellation request received",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract",
|
||||
"IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"EXPIRED": "Contract proposal expired",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contract started",
|
||||
"IGNORED_ACCEPT": "Contract proposal ignored",
|
||||
"BURN_PROPOSAL": "Deposits burned",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contract completed",
|
||||
"SEND_CANCEL_PROPOSAL": "Cancellation request sent",
|
||||
"IGNORED_CANCEL": "Contract cancellation proposal ignored",
|
||||
"DEALS_CANCELED_WAIT": "Cancellation in progress",
|
||||
"WAITING_TIME": "Response time",
|
||||
"NEED_MONEY": "Insufficient funds",
|
||||
"BUTTON_MAKE_PLEDGE": "Accept and make deposit",
|
||||
"BUTTON_IGNORE": "Ignore and hide offer",
|
||||
"BUTTON_NULLIFY": "Terminate and burn deposits",
|
||||
"BUTTON_RECEIVED": "Complete and release deposits",
|
||||
"BUTTON_CANCEL_BUYER": "Cancel and return deposits",
|
||||
"BUTTON_NOT_CANCEL": "Ignore request",
|
||||
"BUTTON_CANCEL_SELLER": "Confirm and return deposits",
|
||||
"HOUR": "hour",
|
||||
"HOURS": "hours",
|
||||
"CANCEL": "Cancel",
|
||||
"NULLIFY_QUESTION": "Are you sure you want to burn both deposits?",
|
||||
"BUTTON_NULLIFY_SHORT": "Burn",
|
||||
"WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Error",
|
||||
"SUCCESS": "Success",
|
||||
"INFO": "Information",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Send",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"TITLE": "Confirm transaction",
|
||||
"MESSAGE": {
|
||||
"SEND": "Send",
|
||||
"FROM": "From",
|
||||
"TO": "To",
|
||||
"COMMENT": "Comment"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Pending",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Time period:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 week",
|
||||
"WEEK2": "2 week",
|
||||
"MONTH1": "1 month",
|
||||
"MONTH3": "3 month",
|
||||
"MONTH6": "6 month",
|
||||
"YEAR": "1 year",
|
||||
"ALL": "All"
|
||||
},
|
||||
"TITLE_GROUP": "Group:",
|
||||
"GROUP": {
|
||||
"DAY": "day",
|
||||
"WEEK": "week",
|
||||
"MONTH": "month"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Contact list",
|
||||
"IMPORT_EXPORT": "Import or export contacts",
|
||||
"IMPORT": "Import",
|
||||
"EXPORT": "Export",
|
||||
"ADD": "Add/edit contact",
|
||||
"SEND": "Send",
|
||||
"SEND_FROM": "Send from",
|
||||
"SEND_TO": "To",
|
||||
"OPEN_ADD_WALLET": "Open/Add wallet",
|
||||
"COPY": "- Copy",
|
||||
"TABLE": {
|
||||
"NAME": "Name",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes",
|
||||
"EMPTY": "Contact list is empty"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Name",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUBLICATED": "Name is dublicated",
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"SET_MASTER_PASSWORD": "Set master password",
|
||||
"ADDRESS_DUBLICATED": "Address is dublicated",
|
||||
"MAX_LENGTH": "Maximum notes length reached",
|
||||
"NAME_LENGTH": "The name must be 4-25 characters long"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Send",
|
||||
"EDIT": "Edit",
|
||||
"DELETE": "Delete",
|
||||
"ADD": "Add contact",
|
||||
"ADD_EDIT": "Add/Save",
|
||||
"GO_TO_WALLET": "Go to wallet",
|
||||
"IMPORT_EXPORT": "Import/export"
|
||||
},
|
||||
"SUCCESS_SENT": "Contact added",
|
||||
"SUCCESS_SAVE": "Contact is edited",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Error is occured while reading file!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Not enough money",
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error: core is busy",
|
||||
"DAEMON_BUSY": "Internal error: daemon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with",
|
||||
"TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Transaction not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.",
|
||||
"TX_TYPE_NORMAL": "Error. The payment from the wallet",
|
||||
"TX_TYPE_NORMAL_TO": "to",
|
||||
"TX_TYPE_NORMAL_END": "was not completed.",
|
||||
"TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Please try again.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe",
|
||||
"TX_TYPE_COIN_BASE": "Error. The payment was not completed."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copy",
|
||||
"PASTE": "paste",
|
||||
"SELECT": "select all"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Quit",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Payment received",
|
||||
"MINED": "Mined",
|
||||
"LOCKED": "Blocked",
|
||||
"IS_MINIMIZE": "Zano application is minimized to the system tray",
|
||||
"RESTORE": "You can recover it by clicking or using the context menu",
|
||||
"TRAY_MENU_SHOW": "Resize",
|
||||
"TRAY_MENU_MINIMIZE": "Minimize"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Setup master password",
|
||||
"SETUP_CONFIRM_PASS": "Confirm the password",
|
||||
"MASTER_PASS": "Master password",
|
||||
"BUTTON_NEXT": "Next",
|
||||
"BUTTON_SKIP": "Skip",
|
||||
"BUTTON_RESET": "Reset",
|
||||
"INCORRECT_PASSWORD": "Invalid password",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"CONFIRM_REQUIRED": "Confirmation is required",
|
||||
"MISMATCH": "Mismatch"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Go back"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"SAVE_PHRASE": "Save your seed phrase",
|
||||
"OPEN_WALLET": "Open existing wallet",
|
||||
"RESTORE_WALLET": "Restore from backup",
|
||||
"WALLET_DETAILS": "Wallet details",
|
||||
"ASSIGN_ALIAS": "Assign alias",
|
||||
"EDIT_ALIAS": "Edit alias",
|
||||
"TRANSFER_ALIAS": "Transfer alias",
|
||||
"CONTRACTS": "Contracts",
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"OLD_PURCHASE": "Purchase"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Wallets",
|
||||
"ADD_NEW": "+ Add",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "New offers/Messages",
|
||||
"SYNCING": "Syncing wallet"
|
||||
},
|
||||
"CONTACTS": "Contacts",
|
||||
"SETTINGS": "Settings",
|
||||
"LOG_OUT": "Log out",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "System error",
|
||||
"COMPLETE": "Completion",
|
||||
"SYNCING": "Syncing blockchain",
|
||||
"LOADING": "Loading blockchain data"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Update available",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Get new update.</span><br><span>Update is recommended!</span>",
|
||||
"IMPORTANT": "Update available",
|
||||
"IMPORTANT_HINT": "Important update!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Get new update.</span><br><span>Important update!</span>",
|
||||
"CRITICAL": "Update available",
|
||||
"CRITICAL_HINT": "Critical update!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Critical update available.</span><i class=\"icon\"></i><span>Update strongly recommended!</span>",
|
||||
"TIME": "System time differs from network",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Wrong system time!</span><br><span>Check and repair your system time.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Create or open the wallet to start using Zano",
|
||||
"BUTTON_NEW_WALLET": "Create new wallet",
|
||||
"BUTTON_OPEN_WALLET": "Open existing wallet",
|
||||
"BUTTON_RESTORE_BACKUP": "Restore from backup",
|
||||
"HELP": "How to create wallet?",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Set wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"TITLE_SAVE": "Save the wallet file.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open",
|
||||
"FILE_NOT_FOUND1": "Wallet file not found",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open wallet\" button.",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Type wallet password",
|
||||
"LABEL": "Password to this wallet",
|
||||
"OPEN": "Open wallet",
|
||||
"SKIP": "Skip",
|
||||
"NOT_FOUND": "Not found"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_PHRASE_KEY": "Seed phrase / tracking seed",
|
||||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match",
|
||||
"KEY_REQUIRED": "Key is required",
|
||||
"KEY_NOT_VALID": "Key not valid"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Create wallet",
|
||||
"BUTTON_COPY": "Copy"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"SELECT_LOCATION": "Select wallet location",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"RESTORE_WALLET": "Restore from backup"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings",
|
||||
"DARK_THEME": "Dark theme",
|
||||
"WHITE_THEME": "White theme",
|
||||
"GRAY_THEME": "Grey theme",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Lock app after:",
|
||||
"TIME1": "5 min",
|
||||
"TIME2": "15 min",
|
||||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
"NEW": "New password",
|
||||
"CONFIRM": "New password confirmation",
|
||||
"BUTTON": "Save"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"PASS_NOT_MATCH": "Old password not match",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
},
|
||||
"LAST_BUILD": "Current build: {{value}}",
|
||||
"APP_LOG_TITLE": "Log level:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Register an alias",
|
||||
"DETAILS": "Details",
|
||||
"LOCK": "Lock",
|
||||
"AVAILABLE_BALANCE": "Available <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Locked <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "What does that mean?",
|
||||
"TABS": {
|
||||
"SEND": "Send",
|
||||
"RECEIVE": "Receive",
|
||||
"HISTORY": "History",
|
||||
"CONTRACTS": "Contracts",
|
||||
"MESSAGES": "Messages",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_FILE_LOCATION": "Wallet file location",
|
||||
"LABEL_SEED_PHRASE": "Seed phrase",
|
||||
"SEED_PHRASE_HINT": "Click to reveal the seed phrase",
|
||||
"BUTTON_SAVE": "Save",
|
||||
"BUTTON_REMOVE": "Close wallet",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later."
|
||||
},
|
||||
"COST": "Alias fee {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"ONE_ALIAS": "You can create only one alias per wallet",
|
||||
"REQUEST_ADD_REG": "The alias will be assigned within 10 minutes"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "You do not have enough funds to change the comment to this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"COST": "Fee {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Edit"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transfer to",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "No wallet with this account exists",
|
||||
"ALIAS_EXISTS": "This account already has an alias",
|
||||
"NO_MONEY": "You do not have enough funds to transfer this alias"
|
||||
},
|
||||
"COST": "Transfer fee {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transfer",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"REQUEST_SEND_REG": "The alias will be transferred within 10 minutes"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Address",
|
||||
"AMOUNT": "Amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"HIDE": "Hide your wallet address from recipient",
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "Transaction sent",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"ALIAS_NOT_VALID": "Alias not valid",
|
||||
"AMOUNT_REQUIRED": "Amount is required",
|
||||
"AMOUNT_ZERO": "Amount is zero",
|
||||
"FEE_REQUIRED": "Fee is required",
|
||||
"FEE_MINIMUM": "Minimum fee: {{fee}}",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
"STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Locked till {{date}}",
|
||||
"SEND": "Sent",
|
||||
"RECEIVED": "Received",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"FEE": "Fee",
|
||||
"ADDRESS": "Address",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "Payment ID",
|
||||
"ID": "Transaction ID",
|
||||
"SIZE": "Transaction size",
|
||||
"SIZE_VALUE": "{{value}} bytes",
|
||||
"HEIGHT": "Height",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Comment"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "hidden",
|
||||
"UNDEFINED": "Undefined",
|
||||
"COMPLETE_BUYER": "Contract completed",
|
||||
"COMPLETE_SELLER": "Contract completed",
|
||||
"CREATE_ALIAS": "Fee for assigning alias",
|
||||
"UPDATE_ALIAS": "Fee for editing alias",
|
||||
"POW_REWARD": "POW reward",
|
||||
"POS_REWARD": "POS reward",
|
||||
"CREATE_CONTRACT": "Contract proposal",
|
||||
"PLEDGE_CONTRACT": "Contract deposit",
|
||||
"NULLIFY_CONTRACT": "Burn deposits",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Cancellation request",
|
||||
"CANCEL_CONTRACT": "Cancel and return deposits"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "No active contracts",
|
||||
"CONTRACTS": "Contracts",
|
||||
"PURCHASE": "Purchase",
|
||||
"SELL": "Sell",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"STATUS": "Status",
|
||||
"COMMENTS": "Comments",
|
||||
"PURCHASE_BUTTON": "New Purchase",
|
||||
"LISTING_BUTTON": "Create listing",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Less than an hour to respond",
|
||||
"REMAINING_ONE": "{{time}} hour remains",
|
||||
"REMAINING_MANY": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT": "{{time}} hours remain",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} hour remains",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_ONE_WAITING": "Waiting for {{time}} hour",
|
||||
"REMAINING_MANY_WAITING": "Waiting for {{time}} hours",
|
||||
"REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "New contract proposal",
|
||||
"IGNORED": "You ignored contract proposal",
|
||||
"ACCEPTED": "Contract started",
|
||||
"WAIT": "Waiting for contract confirmation",
|
||||
"WAITING_BUYER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "You ignored cancellation proposal",
|
||||
"EXPIRED": "Contract proposal has expired"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "Waiting for response",
|
||||
"IGNORED": "Seller ignored your contract proposal",
|
||||
"ACCEPTED": "Seller accepted your contract proposal",
|
||||
"WAIT": "Waiting for deposits confirmation",
|
||||
"WAITING_SELLER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"WAITING_CANCEL": "Waiting for contract cancellation",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract",
|
||||
"EXPIRED": "The contract proposal has expired"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Description",
|
||||
"SELLER": "Seller",
|
||||
"AMOUNT": "Amount",
|
||||
"YOUR_DEPOSIT": "Your deposit",
|
||||
"SELLER_DEPOSIT": "Seller deposit",
|
||||
"BUYER_DEPOSIT": "Buyer deposit",
|
||||
"SAME_AMOUNT": "Same amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"SEND_BUTTON": "Send",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Description required",
|
||||
"DESC_MAXIMUM": "Maximum field length reached",
|
||||
"SELLER_REQUIRED": "Address required",
|
||||
"SELLER_NOT_VALID": "Invalid address",
|
||||
"ALIAS_NOT_VALID": "Invalid alias",
|
||||
"AMOUNT_REQUIRED": "Amount required",
|
||||
"AMOUNT_ZERO": "Amount cannot be zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Deposit required",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Seller deposit required",
|
||||
"SELLER_SAME": "Use separate account",
|
||||
"COMMENT_MAXIMUM": "Maximum field length reached"
|
||||
},
|
||||
"PROGRESS_NEW": "New purchase",
|
||||
"PROGRESS_WAIT": "Awaiting reply",
|
||||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"WAITING_SELLER": "Waiting for response",
|
||||
"WAITING_BUYER": "Contract proposal received",
|
||||
"WAITING_CONFIRMATION": "Waiting for deposits confirmation",
|
||||
"WAITING_DELIVERY": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"IGNORED_BUYER": "Contract proposal ignored",
|
||||
"IGNORED_SELLER": "The seller ignored your contract proposal",
|
||||
"PROPOSAL_CANCEL_SELLER": "Cancellation request sent",
|
||||
"PROPOSAL_CANCEL_BUYER": "Cancellation request received",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract",
|
||||
"IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"EXPIRED": "Contract proposal expired",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contract started",
|
||||
"IGNORED_ACCEPT": "Contract proposal ignored",
|
||||
"BURN_PROPOSAL": "Deposits burned",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contract completed",
|
||||
"SEND_CANCEL_PROPOSAL": "Cancellation request sent",
|
||||
"IGNORED_CANCEL": "Contract cancellation proposal ignored",
|
||||
"DEALS_CANCELED_WAIT": "Cancellation in progress",
|
||||
"WAITING_TIME": "Response time",
|
||||
"NEED_MONEY": "Insufficient funds",
|
||||
"BUTTON_MAKE_PLEDGE": "Accept and make deposit",
|
||||
"BUTTON_IGNORE": "Ignore and hide offer",
|
||||
"BUTTON_NULLIFY": "Terminate and burn deposits",
|
||||
"BUTTON_RECEIVED": "Complete and release deposits",
|
||||
"BUTTON_CANCEL_BUYER": "Cancel and return deposits",
|
||||
"BUTTON_NOT_CANCEL": "Ignore request",
|
||||
"BUTTON_CANCEL_SELLER": "Confirm and return deposits",
|
||||
"HOUR": "hour",
|
||||
"HOURS": "hours",
|
||||
"CANCEL": "Cancel",
|
||||
"NULLIFY_QUESTION": "Are you sure you want to burn both deposits?",
|
||||
"BUTTON_NULLIFY_SHORT": "Burn",
|
||||
"WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Error",
|
||||
"SUCCESS": "Success",
|
||||
"INFO": "Information",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Send",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"TITLE": "Confirm transaction",
|
||||
"MESSAGE": {
|
||||
"SEND": "Send",
|
||||
"FROM": "From",
|
||||
"TO": "To",
|
||||
"COMMENT": "Comment"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Pending",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Time period:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 week",
|
||||
"WEEK2": "2 week",
|
||||
"MONTH1": "1 month",
|
||||
"MONTH3": "3 month",
|
||||
"MONTH6": "6 month",
|
||||
"YEAR": "1 year",
|
||||
"ALL": "All"
|
||||
},
|
||||
"TITLE_GROUP": "Group:",
|
||||
"GROUP": {
|
||||
"DAY": "day",
|
||||
"WEEK": "week",
|
||||
"MONTH": "month"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Contact list",
|
||||
"IMPORT_EXPORT": "Import or export contacts",
|
||||
"IMPORT": "Import",
|
||||
"EXPORT": "Export",
|
||||
"ADD": "Add/edit contact",
|
||||
"SEND": "Send",
|
||||
"SEND_FROM": "Send from",
|
||||
"SEND_TO": "To",
|
||||
"OPEN_ADD_WALLET": "Open/Add wallet",
|
||||
"COPY": "- Copy",
|
||||
"TABLE": {
|
||||
"NAME": "Name",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes",
|
||||
"EMPTY": "Contact list is empty"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Name",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUBLICATED": "Name is dublicated",
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"SET_MASTER_PASSWORD": "Set master password",
|
||||
"ADDRESS_DUBLICATED": "Address is dublicated",
|
||||
"MAX_LENGTH": "Maximum notes length reached",
|
||||
"NAME_LENGTH": "The name must be 4-25 characters long"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Send",
|
||||
"EDIT": "Edit",
|
||||
"DELETE": "Delete",
|
||||
"ADD": "Add contact",
|
||||
"ADD_EDIT": "Add/Save",
|
||||
"GO_TO_WALLET": "Go to wallet",
|
||||
"IMPORT_EXPORT": "Import/export"
|
||||
},
|
||||
"SUCCESS_SENT": "Contact added",
|
||||
"SUCCESS_SAVE": "Contact is edited",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Error is occured while reading file!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Not enough money",
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error: core is busy",
|
||||
"DAEMON_BUSY": "Internal error: daemon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with",
|
||||
"TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Transaction not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.",
|
||||
"TX_TYPE_NORMAL": "Error. The payment from the wallet",
|
||||
"TX_TYPE_NORMAL_TO": "to",
|
||||
"TX_TYPE_NORMAL_END": "was not completed.",
|
||||
"TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Please try again.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe",
|
||||
"TX_TYPE_COIN_BASE": "Error. The payment was not completed."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copy",
|
||||
"PASTE": "paste",
|
||||
"SELECT": "select all"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Quit",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Payment received",
|
||||
"MINED": "Mined",
|
||||
"LOCKED": "Blocked",
|
||||
"IS_MINIMIZE": "Zano application is minimized to the system tray",
|
||||
"RESTORE": "You can recover it by clicking or using the context menu",
|
||||
"TRAY_MENU_SHOW": "Resize",
|
||||
"TRAY_MENU_MINIMIZE": "Minimize"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Configurer le mot de passe principal",
|
||||
"SETUP_CONFIRM_PASS": "Confirmer le mot de passe",
|
||||
"MASTER_PASS": "Mot de passe principal",
|
||||
"BUTTON_NEXT": "Suivant",
|
||||
"BUTTON_SKIP": "Sauter",
|
||||
"BUTTON_RESET": "Réinitialiser",
|
||||
"INCORRECT_PASSWORD": "Mot de passe invalide",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Mot de passe requis",
|
||||
"CONFIRM_REQUIRED": "Confirmation requise",
|
||||
"MISMATCH": "Non-concordant"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Retour"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Ajouter un portefeuille",
|
||||
"CREATE_WALLET": "Créer un nouveau portefeuille",
|
||||
"SAVE_PHRASE": "Enregistrer votre phrase de sécurité",
|
||||
"OPEN_WALLET": "Ouvrir un portefeuille existant",
|
||||
"RESTORE_WALLET": "Restaurer depuis une sauvegarde",
|
||||
"WALLET_DETAILS": "Détails du portefeuille",
|
||||
"ASSIGN_ALIAS": "Assigner un alias",
|
||||
"EDIT_ALIAS": "Modifier l'alias",
|
||||
"TRANSFER_ALIAS": "Transférer l'alias",
|
||||
"CONTRACTS": "Contrats",
|
||||
"NEW_PURCHASE": "Nouvel achat",
|
||||
"OLD_PURCHASE": "Achat"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Portefeuilles",
|
||||
"ADD_NEW": "+ Ajouter",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Mise",
|
||||
"MESSAGES": "Nouvelles offres/Messages",
|
||||
"SYNCING": "Synchronisation du portefeuille"
|
||||
},
|
||||
"CONTACTS": "Contacts",
|
||||
"SETTINGS": "Paramètres",
|
||||
"LOG_OUT": "Déconnexion",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Hors ligne",
|
||||
"ONLINE": "En ligne",
|
||||
"ERROR": "Erreur de système",
|
||||
"COMPLETE": "Fermeture",
|
||||
"SYNCING": "Syncing block",
|
||||
"LOADING": "Chargement des données de la blockchain"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Mise à jour disponible",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Mise à jour.</span><br><span>La mise à jour est recommandée.</span>",
|
||||
"IMPORTANT": "Mise à jour disponible",
|
||||
"IMPORTANT_HINT": "Mise à jour importante !",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Mise à jour.</span><br><span>La mise à jour est recommandée.</span>",
|
||||
"CRITICAL": "Mise à jour disponible",
|
||||
"CRITICAL_HINT": "Mise à jour critique !",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Mise à jour critique disponible.</span><i class=\"icon\"></i><span>Mise à jour fortement recommandée.</span>",
|
||||
"TIME": "Le temps du système diffère de celui du réseau",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Mauvais temps de système</span><br><span>Vérifier et corriger votre temps de système.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Créer ou ouvrir le portefeuille pour commencer à utiliser Zano",
|
||||
"BUTTON_NEW_WALLET": "Créer un nouveau portefeuille",
|
||||
"BUTTON_OPEN_WALLET": "Ouvrir un portefeuille existant",
|
||||
"BUTTON_RESTORE_BACKUP": "Restaurer depuis une sauvegarde",
|
||||
"HELP": "Comment créer un portefeuille ?",
|
||||
"CHOOSE_PATH": "Veuillez choisir un chemin"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Nom du portefeuille",
|
||||
"PASS": "Définir le mot de passe du portefeuille",
|
||||
"CONFIRM": "Confirmer le mot de passe du portefeuille",
|
||||
"BUTTON_SELECT": "Sélectionner l'emplacement du portefeuille",
|
||||
"BUTTON_CREATE": "Créer un portefeuille",
|
||||
"TITLE_SAVE": "Enregistrer le fichier du portefeuille.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Les fichiers de portefeuille existants ne peuvent pas être remplacés ou écrasés",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Les fichiers de portefeuille ne peuvent pas être sauvegardés sur la partition du OS",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Le nom est requis",
|
||||
"NAME_DUPLICATE": "Nom déjà utilisé",
|
||||
"MAX_LENGTH": "Longueur maximale du nom atteinte",
|
||||
"CONFIRM_NOT_MATCH": "La confirmation du mot de passe ne correspond pas"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Nom du portefeuille",
|
||||
"PASS": "Mot de passe du portefeuille",
|
||||
"BUTTON": "Ouvrir un portefeuille",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "Un portefeuille avec cette adresse est déjà ouvert",
|
||||
"FILE_NOT_FOUND1": "Fichier de portefeuille introuvable",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> Il aurait peut-être été renommé ou déplacé. <br/> Pour l'ouvrir, utilisez le bouton \"Ouvrir le portefeuille\".",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Le nom est requis",
|
||||
"NAME_DUPLICATE": "Nom déjà utilisé",
|
||||
"MAX_LENGTH": "Longueur maximale du nom atteinte"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Entrer le mot de passe du portefeuille",
|
||||
"LABEL": "Mot de passe de ce portefeuille",
|
||||
"OPEN": "Ouvrir un portefeuille",
|
||||
"SKIP": "Sauter",
|
||||
"NOT_FOUND": "Introuvable"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Nom du portefeuille",
|
||||
"LABEL_PHRASE_KEY": "Phrase de sécurité / clé privée",
|
||||
"PASS": "Mot de passe du portefeuille",
|
||||
"CONFIRM": "Confirmer le mot de passe du portefeuille",
|
||||
"BUTTON_SELECT": "Sélectionner l'emplacement du portefeuille",
|
||||
"BUTTON_CREATE": "Créer un portefeuille",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Le fichier est invalide ou mot de passe du portefeuille ne correspond pas",
|
||||
"CHOOSE_PATH": "Veuillez choisir un chemin",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Le nom est requis",
|
||||
"NAME_DUPLICATE": "Nom déjà utilisé",
|
||||
"MAX_LENGTH": "Longueur maximale atteinte",
|
||||
"CONFIRM_NOT_MATCH": "La confirmation du mot de passe ne correspond pas",
|
||||
"KEY_REQUIRED": "Clé requise",
|
||||
"KEY_NOT_VALID": "Clé invalide"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Assurez-vous de garder votre phrase de sécurité dans un endroit sûr. Si vous oubliez votre phrase de sécurité, vous ne pourrez pas récupérer votre portefeuille.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Créer un portefeuille",
|
||||
"BUTTON_COPY": "Copier"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Ajouter un portefeuille",
|
||||
"SELECT_LOCATION": "Sélectionner l'emplacement du portefeuille",
|
||||
"CREATE_WALLET": "Créer un nouveau portefeuille",
|
||||
"RESTORE_WALLET": "Restaurer depuis une sauvegarde"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Paramètres",
|
||||
"DARK_THEME": "Thème sombre",
|
||||
"WHITE_THEME": "Thème blanc",
|
||||
"GRAY_THEME": "Thème gris",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Verrouiller l'application après :",
|
||||
"TIME1": "5 min",
|
||||
"TIME2": "15 min",
|
||||
"TIME3": "1 heure",
|
||||
"TIME4": "Jamais"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% échelle",
|
||||
"100": "100% échelle",
|
||||
"125": "125% échelle",
|
||||
"150": "150% échelle"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Mettre à jour le mot de passe principal",
|
||||
"OLD": "Ancien mot de passe",
|
||||
"NEW": "Nouveau mot de passe",
|
||||
"CONFIRM": "Confirmer le mot de passe",
|
||||
"BUTTON": "Enregistrer"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Mot de passe requis",
|
||||
"PASS_NOT_MATCH": "Ancien mot de passe non correspondant",
|
||||
"CONFIRM_NOT_MATCH": "La confirmation du mot de passe ne correspond pas"
|
||||
},
|
||||
"LAST_BUILD": "Version actuelle : {{value}}",
|
||||
"APP_LOG_TITLE": "Niveau de log :"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Enregistrer un alias",
|
||||
"DETAILS": "Détails",
|
||||
"LOCK": "Verrouillage",
|
||||
"AVAILABLE_BALANCE": "Disponible <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Vérouillé<b>{{locked}}{{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "Que signifie cela?",
|
||||
"TABS": {
|
||||
"SEND": "Envoyer",
|
||||
"RECEIVE": "Recevoir",
|
||||
"HISTORY": "Historique",
|
||||
"CONTRACTS": "Contrats",
|
||||
"MESSAGES": "Messages",
|
||||
"STAKING": "Mise"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Nom du portefeuille",
|
||||
"LABEL_FILE_LOCATION": "Emplacement du fichier de portefeuille",
|
||||
"LABEL_SEED_PHRASE": "Phrase de sécurité",
|
||||
"SEED_PHRASE_HINT": "Cliquez pour révéler la phrase de sécurité",
|
||||
"BUTTON_SAVE": "Enregistrer",
|
||||
"BUTTON_REMOVE": "Fermer le portefeuille",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Le nom est requis",
|
||||
"NAME_DUPLICATE": "Nom déjà utilisé",
|
||||
"MAX_LENGTH": "Longueur maximale atteinte"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Entrer l'alias",
|
||||
"TOOLTIP": "Un alias est une forme abréviée pour votre compte. Un alias ne peut inclure que des lettres, des chiffres et des caractères latins « » et « - ». Il doit commencer par « @ »."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Commentaire",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "Le commentaire sera visible à quiconque souhaite effectuer un paiement à votre alias. Vous pouvez fournir des détails sur votre entreprise, vos informations de contact ou inclure tout texte. Les commentaires peuvent être modifiés plus tard."
|
||||
},
|
||||
"COST": "Frais d'alias {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assigner",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Le nom est requis",
|
||||
"NAME_WRONG": "Nom invalide: symboles autorisés \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "L'alias doit contenir 6-25 caractères",
|
||||
"NAME_EXISTS": "Alias déjà existant",
|
||||
"NO_MONEY": "Vous n'avez pas assez de fonds pour assigner cet alias",
|
||||
"MAX_LENGTH": "Longueur maximale du commentaire atteinte"
|
||||
},
|
||||
"ONE_ALIAS": "Vous pouvez créer un seul alias par portefeuille",
|
||||
"REQUEST_ADD_REG": "L'alias sera assigné dans les 10 prochaines minutes"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Entrer l'alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Commentaire",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "Vous n'avez pas assez de fonds pour changer le commentaire de cet alias",
|
||||
"MAX_LENGTH": "Longueur maximale du commentaire atteinte"
|
||||
},
|
||||
"COST": "Frais {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Modifier"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Entrer l'alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Commentaire",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transférer à",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "Aucun portefeuille avec ce compte n'existe",
|
||||
"ALIAS_EXISTS": "Ce compte a déjà un alias",
|
||||
"NO_MONEY": "Vous n'avez pas assez de fonds pour transférer cet alias"
|
||||
},
|
||||
"COST": "Frais de transfert {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transférer",
|
||||
"BUTTON_CANCEL": "Annuler",
|
||||
"REQUEST_SEND_REG": "L'alias sera transféré dans les 10 prochaines minutes"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Adresse",
|
||||
"AMOUNT": "Montant",
|
||||
"COMMENT": "Commentaire",
|
||||
"DETAILS": "Détails supplémentaires",
|
||||
"MIXIN": "Mélange",
|
||||
"FEE": "Frais",
|
||||
"HIDE": "Masquer votre adresse de portefeuille au destinataire",
|
||||
"BUTTON": "Envoyer",
|
||||
"SUCCESS_SENT": "Transaction envoyée",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Adresse requise",
|
||||
"ADDRESS_NOT_VALID": "Addresse invalide",
|
||||
"ALIAS_NOT_VALID": "Alias non valide",
|
||||
"AMOUNT_REQUIRED": "Le Montant est requis",
|
||||
"AMOUNT_ZERO": "Le montant est zéro",
|
||||
"FEE_REQUIRED": "Les frais sont requis",
|
||||
"FEE_MINIMUM": "Frais minimum : {{fee}}",
|
||||
"MAX_LENGTH": "Longueur maximale du commentaire atteinte"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Statut",
|
||||
"STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Verrouillé jusqu'à {{date}}",
|
||||
"SEND": "Envoyé",
|
||||
"RECEIVED": "Reçu",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Montant",
|
||||
"FEE": "Frais",
|
||||
"ADDRESS": "Adresse",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "ID de paiement",
|
||||
"ID": "ID de transaction",
|
||||
"SIZE": "Taille de la transaction",
|
||||
"SIZE_VALUE": "{{value}} octets",
|
||||
"HEIGHT": "Hauteur",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"INPUTS": "Entrées",
|
||||
"OUTPUTS": "Sorties",
|
||||
"COMMENT": "Commentaire"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "caché",
|
||||
"UNDEFINED": "Non défini",
|
||||
"COMPLETE_BUYER": "Contrat complété",
|
||||
"COMPLETE_SELLER": "Contrat complété",
|
||||
"CREATE_ALIAS": "Frais pour assigner l'alias",
|
||||
"UPDATE_ALIAS": "Frais pour modifier l'alias",
|
||||
"POW_REWARD": "Récompense POW",
|
||||
"POS_REWARD": "Récompense POS",
|
||||
"CREATE_CONTRACT": "Proposition de contrat",
|
||||
"PLEDGE_CONTRACT": "Dépôt de contrat",
|
||||
"NULLIFY_CONTRACT": "Brûler les dépôts",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Demande d'annulation",
|
||||
"CANCEL_CONTRACT": "Annuler et retourner les dépôts"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "Aucun contrat actif",
|
||||
"CONTRACTS": "Contrats",
|
||||
"PURCHASE": "Achat",
|
||||
"SELL": "Vendre",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Montant",
|
||||
"STATUS": "Statut",
|
||||
"COMMENTS": "Commentaires",
|
||||
"PURCHASE_BUTTON": "Nouvel achat",
|
||||
"LISTING_BUTTON": "Créer une offre",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Moins d'une heure pour répondre",
|
||||
"REMAINING_ONE": "{{time}} heure restante",
|
||||
"REMAINING_MANY": "{{time}} heures restantes",
|
||||
"REMAINING_MANY_ALT": "{{time}} heures restantes",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} heure restante",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} heures restantes",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} heures restantes",
|
||||
"REMAINING_ONE_WAITING": "En attente de {{time}} heure",
|
||||
"REMAINING_MANY_WAITING": "En attente de {{time}} heures",
|
||||
"REMAINING_MANY_ALT_WAITING": "En attente de {{time}} heures"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "Nouvelle proposition de contrat",
|
||||
"IGNORED": "Vous avez ignoré la proposition de contrat",
|
||||
"ACCEPTED": "Contrat démarré",
|
||||
"WAIT": "En attente de confirmation du contrat",
|
||||
"WAITING_BUYER": "En attente de livraison",
|
||||
"COMPLETED": "Contrat terminé",
|
||||
"NOT_RECEIVED": "Échec de la livraison",
|
||||
"NULLIFIED": "Tous les dépôts ont été brûlés",
|
||||
"PROPOSAL_CANCEL": "Nouvelle proposition d'annulation de contrat et retour des dépôts",
|
||||
"BEING_CANCELLED": "Annulation en cours",
|
||||
"CANCELLED": "Contrat annulé",
|
||||
"IGNORED_CANCEL": "Vous avez ignoré la proposition d'annulation",
|
||||
"EXPIRED": "La proposition de contrat a expiré"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "En attente d'une réponse",
|
||||
"IGNORED": "Le vendeur a ignoré votre proposition de contrat",
|
||||
"ACCEPTED": "Le vendeur a accepté votre proposition de contrat",
|
||||
"WAIT": "En attente de confirmation des dépôts",
|
||||
"WAITING_SELLER": "En attente de livraison",
|
||||
"COMPLETED": "Contrat complété",
|
||||
"NOT_RECEIVED": "Échec de la livraison",
|
||||
"NULLIFIED": "Tous les dépôts ont été brûlés",
|
||||
"WAITING_CANCEL": "En attente d'annulation du contrat",
|
||||
"BEING_CANCELLED": "Annulation en cours",
|
||||
"CANCELLED": "Contrat annulé",
|
||||
"IGNORED_CANCEL": "Le vendeur a ignoré votre proposition d'annuler le contrat",
|
||||
"EXPIRED": "La proposition de contrat a expiré"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Description",
|
||||
"SELLER": "Vendeur",
|
||||
"AMOUNT": "Montant",
|
||||
"YOUR_DEPOSIT": "Votre dépôt",
|
||||
"SELLER_DEPOSIT": "Dépôt du vendeur",
|
||||
"BUYER_DEPOSIT": "Dépôt d'acheteur",
|
||||
"SAME_AMOUNT": "Montant identique",
|
||||
"COMMENT": "Commentaire",
|
||||
"DETAILS": "Détails supplémentaires",
|
||||
"SEND_BUTTON": "Envoyer",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Description requise",
|
||||
"DESC_MAXIMUM": "Longueur maximale du champ atteinte",
|
||||
"SELLER_REQUIRED": "Adresse requise",
|
||||
"SELLER_NOT_VALID": "Adresse invalide",
|
||||
"ALIAS_NOT_VALID": "Alias invalide",
|
||||
"AMOUNT_REQUIRED": "Montant requis",
|
||||
"AMOUNT_ZERO": "Le montant ne peut pas être nul",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Dépôt requis",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Dépôt de vendeur requis",
|
||||
"SELLER_SAME": "Utiliser un compte séparé",
|
||||
"COMMENT_MAXIMUM": "Longueur maximale du champ atteinte"
|
||||
},
|
||||
"PROGRESS_NEW": "Nouvel achat",
|
||||
"PROGRESS_WAIT": "En attente d'une réponse",
|
||||
"PROGRESS_RECEIVE": "Réponse reçue",
|
||||
"PROGRESS_COMPLETE": "Complété",
|
||||
"FEE": "Frais",
|
||||
"PAYMENT": "ID de paiement",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "Nouvel achat",
|
||||
"WAITING_SELLER": "En attente d'une réponse",
|
||||
"WAITING_BUYER": "Proposition de contrat reçue",
|
||||
"WAITING_CONFIRMATION": "En attente de confirmation des dépôts",
|
||||
"WAITING_DELIVERY": "En attente de livraison",
|
||||
"COMPLETED": "Contrat complété",
|
||||
"IGNORED_BUYER": "Proposition de contrat ignorée",
|
||||
"IGNORED_SELLER": "Le vendeur a ignoré votre proposition de contrat",
|
||||
"PROPOSAL_CANCEL_SELLER": "Demande d'annulation envoyée",
|
||||
"PROPOSAL_CANCEL_BUYER": "Demande d'annulation reçue",
|
||||
"BEING_CANCELLED": "Annulation en cours",
|
||||
"IGNORED_CANCEL_SELLER": "Le vendeur a ignoré votre proposition d'annuler le contrat",
|
||||
"IGNORED_CANCEL_BUYER": "Proposition d'annulation du contrat ignorée",
|
||||
"CANCELLED": "Contrat annulé",
|
||||
"EXPIRED": "Proposition de contrat expirée",
|
||||
"NOT_RECEIVED": "Échec de la livraison",
|
||||
"NULLIFIED": "Tous les dépôts ont été brûlés"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contrat débuté",
|
||||
"IGNORED_ACCEPT": "Proposition de contrat ignorée",
|
||||
"BURN_PROPOSAL": "Dépositions brûlées",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contrat complété",
|
||||
"SEND_CANCEL_PROPOSAL": "Demande d'annulation envoyée",
|
||||
"IGNORED_CANCEL": "Proposition d'annulation du contrat ignorée",
|
||||
"DEALS_CANCELED_WAIT": "Annulation en cours",
|
||||
"WAITING_TIME": "Heure de réponse",
|
||||
"NEED_MONEY": "Fonds insuffisants",
|
||||
"BUTTON_MAKE_PLEDGE": "Accepter et effectuer un dépôt",
|
||||
"BUTTON_IGNORE": "Ignorer et cacher l'offre",
|
||||
"BUTTON_NULLIFY": "Terminer et brûler les dépôts",
|
||||
"BUTTON_RECEIVED": "Compléter et libérer les dépôts",
|
||||
"BUTTON_CANCEL_BUYER": "Annuler et retourner les dépôts",
|
||||
"BUTTON_NOT_CANCEL": "Ignorer la requête",
|
||||
"BUTTON_CANCEL_SELLER": "Confirmer et retourner les dépôts",
|
||||
"HOUR": "heure",
|
||||
"HOURS": "heures",
|
||||
"CANCEL": "Annuler",
|
||||
"NULLIFY_QUESTION": "Êtes-vous sûr de vouloir brûler les deux dépôts ?",
|
||||
"BUTTON_NULLIFY_SHORT": "Brûler",
|
||||
"WAITING_TIME_QUESTION": "Êtes-vous sûr de vouloir annuler le contrat ?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Adresse",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Tapez un message...",
|
||||
"SEND_BUTTON": "Envoyer"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Erreur",
|
||||
"SUCCESS": "Succès",
|
||||
"INFO": "Information",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Envoyer",
|
||||
"BUTTON_CANCEL": "Annuler",
|
||||
"TITLE": "Confirmer la transaction",
|
||||
"MESSAGE": {
|
||||
"SEND": "Envoyer",
|
||||
"FROM": "De",
|
||||
"TO": "À",
|
||||
"COMMENT": "Commentaire"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Mise",
|
||||
"TITLE_PENDING": "En attente",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Période de temps:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 semaine",
|
||||
"WEEK2": "2 semaines",
|
||||
"MONTH1": "1 mois",
|
||||
"MONTH3": "3 mois",
|
||||
"MONTH6": "6 mois",
|
||||
"YEAR": "1 an",
|
||||
"ALL": "Tout"
|
||||
},
|
||||
"TITLE_GROUP": "Groupe :",
|
||||
"GROUP": {
|
||||
"DAY": "jour",
|
||||
"WEEK": "semaine",
|
||||
"MONTH": "mois"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Liste de contacts",
|
||||
"IMPORT_EXPORT": "Importer ou exporter des contacts",
|
||||
"IMPORT": "Importer",
|
||||
"EXPORT": "Exporter",
|
||||
"ADD": "Ajouter/modifier un contact",
|
||||
"SEND": "Envoyer",
|
||||
"SEND_FROM": "Envoyer de",
|
||||
"SEND_TO": "À",
|
||||
"OPEN_ADD_WALLET": "Ouvrir/Ajouter un portefeuille",
|
||||
"COPY": "- Copier",
|
||||
"TABLE": {
|
||||
"NAME": "Nom",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Adresse",
|
||||
"NOTES": "Notes",
|
||||
"EMPTY": "La liste de contacts est vide"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Nom",
|
||||
"ADDRESS": "Adresse",
|
||||
"NOTES": "Notes"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Le nom est requis",
|
||||
"NAME_DUBLICATED": "Nom déjà utilisé",
|
||||
"ADDRESS_REQUIRED": "Adresse requise",
|
||||
"ADDRESS_NOT_VALID": "Addresse invalide",
|
||||
"SET_MASTER_PASSWORD": "Définir le mot de passe maître",
|
||||
"ADDRESS_DUBLICATED": "L'addresse est dupliquée",
|
||||
"MAX_LENGTH": "Longueur maximale des notes atteinte",
|
||||
"NAME_LENGTH": "Le nom doit contenir 4-25 caractères"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Envoyer",
|
||||
"EDIT": "Modifier",
|
||||
"DELETE": "Supprimer",
|
||||
"ADD": "Ajouter un contact",
|
||||
"ADD_EDIT": "Ajouter/Enregistrer",
|
||||
"GO_TO_WALLET": "Aller au portefeuille",
|
||||
"IMPORT_EXPORT": "Importer/exporter"
|
||||
},
|
||||
"SUCCESS_SENT": "Contact ajouté",
|
||||
"SUCCESS_SAVE": "Contact modifié",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Erreur lors de la lecture du fichier !",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Pas assez de fonds",
|
||||
"NOT_ENOUGH_MONEY": "Fonds insuffisants dans le compte",
|
||||
"CORE_BUSY": "Erreur interne : le noyau est occupé",
|
||||
"DAEMON_BUSY": "Erreur interne : le daemon est occupé",
|
||||
"NO_MONEY_REMOVE_OFFER": "Il n'y a pas de frais pour supprimer une offre, mais pour protéger le réseau contre les transactions de spam, vous devez avoir au moins {{fee}} {{currency}} dans votre portefeuille",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Le nombre de mixage est trop grand pour l'état actuel de la blockchain. Il n'y a pas assez de sorties non utilisées pour mélanger avec",
|
||||
"TRANSACTION_IS_TO_BIG": "La transaction dépasse la limite réseau, envoyez le montant requis avec plusieurs transactions",
|
||||
"TRANSFER_ATTEMPT": "Il n'y a pas de connexion au réseau Zano",
|
||||
"ACCESS_DENIED": "Accès refusé",
|
||||
"TRANSACTION_ERROR": "Erreur. Transaction non complétée.",
|
||||
"BAD_ARG": "Argument invalide",
|
||||
"WALLET_WRONG_ID": "ID de portefeuille invalide",
|
||||
"WRONG_PASSWORD": "Mot de passe invalide",
|
||||
"FILE_RESTORED": "Le fichier de portefeuille a été corrompu. Nous avons récupéré les clés et le portefeuille de la blockchain",
|
||||
"FILE_NOT_FOUND": "Fichier introuvable",
|
||||
"FILE_EXIST": "Un fichier avec ce nom existe déjà. Entrez un autre nom pour enregistrer le fichier sous",
|
||||
"FILE_NOT_SAVED": "Vous ne pouvez pas enregistrer un fichier de portefeuille dans ce dossier. Veuillez choisir un autre dossier.",
|
||||
"TX_TYPE_NORMAL": "Erreur. paiement du portefeuille",
|
||||
"TX_TYPE_NORMAL_TO": "à",
|
||||
"TX_TYPE_NORMAL_END": "n'a pas été complété.",
|
||||
"TX_TYPE_NEW_ALIAS": "Erreur. Impossible d'enregistrer l'alias dans la blockchain",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Veuillez réessayer.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Erreur. Impossible de changer le commentaire de l'alias actuel",
|
||||
"TX_TYPE_COIN_BASE": "Erreur. Le paiement n'a pas été complété."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copier",
|
||||
"PASTE": "coller",
|
||||
"SELECT": "tout sélectionner"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Quitter",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Paiement entrant (non confirmé)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Paiement reçu",
|
||||
"MINED": "Miné",
|
||||
"LOCKED": "Bloqué",
|
||||
"IS_MINIMIZE": "L'application Zano est minimisée dans la barre d'état",
|
||||
"RESTORE": "Vous pouvez le récupérer en cliquant ou en utilisant le menu contextuel",
|
||||
"TRAY_MENU_SHOW": "Redimensionner",
|
||||
"TRAY_MENU_MINIMIZE": "Réduire"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Setup master password",
|
||||
"SETUP_CONFIRM_PASS": "Confirm the password",
|
||||
"MASTER_PASS": "Master password",
|
||||
"BUTTON_NEXT": "Next",
|
||||
"BUTTON_SKIP": "Skip",
|
||||
"BUTTON_RESET": "Reset",
|
||||
"INCORRECT_PASSWORD": "Invalid password",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"CONFIRM_REQUIRED": "Confirmation is required",
|
||||
"MISMATCH": "Mismatch"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Go back"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"SAVE_PHRASE": "Save your seed phrase",
|
||||
"OPEN_WALLET": "Open existing wallet",
|
||||
"RESTORE_WALLET": "Restore from backup",
|
||||
"WALLET_DETAILS": "Wallet details",
|
||||
"ASSIGN_ALIAS": "Assign alias",
|
||||
"EDIT_ALIAS": "Edit alias",
|
||||
"TRANSFER_ALIAS": "Transfer alias",
|
||||
"CONTRACTS": "Contracts",
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"OLD_PURCHASE": "Purchase"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Wallets",
|
||||
"ADD_NEW": "+ Add",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "New offers/Messages",
|
||||
"SYNCING": "Syncing wallet"
|
||||
},
|
||||
"CONTACTS": "Contacts",
|
||||
"SETTINGS": "Settings",
|
||||
"LOG_OUT": "Log out",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "System error",
|
||||
"COMPLETE": "Completion",
|
||||
"SYNCING": "Syncing blockchain",
|
||||
"LOADING": "Loading blockchain data"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Update available",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Get new update.</span><br><span>Update is recommended!</span>",
|
||||
"IMPORTANT": "Update available",
|
||||
"IMPORTANT_HINT": "Important update!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Get new update.</span><br><span>Important update!</span>",
|
||||
"CRITICAL": "Update available",
|
||||
"CRITICAL_HINT": "Critical update!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Critical update available.</span><i class=\"icon\"></i><span>Update strongly recommended!</span>",
|
||||
"TIME": "System time differs from network",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Wrong system time!</span><br><span>Check and repair your system time.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Create or open the wallet to start using Zano",
|
||||
"BUTTON_NEW_WALLET": "Create new wallet",
|
||||
"BUTTON_OPEN_WALLET": "Open existing wallet",
|
||||
"BUTTON_RESTORE_BACKUP": "Restore from backup",
|
||||
"HELP": "How to create wallet?",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Set wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"TITLE_SAVE": "Save the wallet file.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open",
|
||||
"FILE_NOT_FOUND1": "Wallet file not found",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open wallet\" button.",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Type wallet password",
|
||||
"LABEL": "Password to this wallet",
|
||||
"OPEN": "Open wallet",
|
||||
"SKIP": "Skip",
|
||||
"NOT_FOUND": "Not found"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_PHRASE_KEY": "Seed phrase / tracking seed",
|
||||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match",
|
||||
"KEY_REQUIRED": "Key is required",
|
||||
"KEY_NOT_VALID": "Key not valid"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Create wallet",
|
||||
"BUTTON_COPY": "Copy"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"SELECT_LOCATION": "Select wallet location",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"RESTORE_WALLET": "Restore from backup"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings",
|
||||
"DARK_THEME": "Dark theme",
|
||||
"WHITE_THEME": "White theme",
|
||||
"GRAY_THEME": "Grey theme",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Lock app after:",
|
||||
"TIME1": "5 min",
|
||||
"TIME2": "15 min",
|
||||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
"NEW": "New password",
|
||||
"CONFIRM": "New password confirmation",
|
||||
"BUTTON": "Save"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"PASS_NOT_MATCH": "Old password not match",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
},
|
||||
"LAST_BUILD": "Current build: {{value}}",
|
||||
"APP_LOG_TITLE": "Log level:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Register an alias",
|
||||
"DETAILS": "Details",
|
||||
"LOCK": "Lock",
|
||||
"AVAILABLE_BALANCE": "Available <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Locked <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "What does that mean?",
|
||||
"TABS": {
|
||||
"SEND": "Send",
|
||||
"RECEIVE": "Receive",
|
||||
"HISTORY": "History",
|
||||
"CONTRACTS": "Contracts",
|
||||
"MESSAGES": "Messages",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_FILE_LOCATION": "Wallet file location",
|
||||
"LABEL_SEED_PHRASE": "Seed phrase",
|
||||
"SEED_PHRASE_HINT": "Click to reveal the seed phrase",
|
||||
"BUTTON_SAVE": "Save",
|
||||
"BUTTON_REMOVE": "Close wallet",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later."
|
||||
},
|
||||
"COST": "Alias fee {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"ONE_ALIAS": "You can create only one alias per wallet",
|
||||
"REQUEST_ADD_REG": "The alias will be assigned within 10 minutes"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "You do not have enough funds to change the comment to this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"COST": "Fee {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Edit"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transfer to",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "No wallet with this account exists",
|
||||
"ALIAS_EXISTS": "This account already has an alias",
|
||||
"NO_MONEY": "You do not have enough funds to transfer this alias"
|
||||
},
|
||||
"COST": "Transfer fee {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transfer",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"REQUEST_SEND_REG": "The alias will be transferred within 10 minutes"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Address",
|
||||
"AMOUNT": "Amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"HIDE": "Hide your wallet address from recipient",
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "Transaction sent",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"ALIAS_NOT_VALID": "Alias not valid",
|
||||
"AMOUNT_REQUIRED": "Amount is required",
|
||||
"AMOUNT_ZERO": "Amount is zero",
|
||||
"FEE_REQUIRED": "Fee is required",
|
||||
"FEE_MINIMUM": "Minimum fee: {{fee}}",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
"STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Locked till {{date}}",
|
||||
"SEND": "Sent",
|
||||
"RECEIVED": "Received",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"FEE": "Fee",
|
||||
"ADDRESS": "Address",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "Payment ID",
|
||||
"ID": "Transaction ID",
|
||||
"SIZE": "Transaction size",
|
||||
"SIZE_VALUE": "{{value}} bytes",
|
||||
"HEIGHT": "Height",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Comment"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "hidden",
|
||||
"UNDEFINED": "Undefined",
|
||||
"COMPLETE_BUYER": "Contract completed",
|
||||
"COMPLETE_SELLER": "Contract completed",
|
||||
"CREATE_ALIAS": "Fee for assigning alias",
|
||||
"UPDATE_ALIAS": "Fee for editing alias",
|
||||
"POW_REWARD": "POW reward",
|
||||
"POS_REWARD": "POS reward",
|
||||
"CREATE_CONTRACT": "Contract proposal",
|
||||
"PLEDGE_CONTRACT": "Contract deposit",
|
||||
"NULLIFY_CONTRACT": "Burn deposits",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Cancellation request",
|
||||
"CANCEL_CONTRACT": "Cancel and return deposits"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "No active contracts",
|
||||
"CONTRACTS": "Contracts",
|
||||
"PURCHASE": "Purchase",
|
||||
"SELL": "Sell",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"STATUS": "Status",
|
||||
"COMMENTS": "Comments",
|
||||
"PURCHASE_BUTTON": "New Purchase",
|
||||
"LISTING_BUTTON": "Create listing",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Less than an hour to respond",
|
||||
"REMAINING_ONE": "{{time}} hour remains",
|
||||
"REMAINING_MANY": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT": "{{time}} hours remain",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} hour remains",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_ONE_WAITING": "Waiting for {{time}} hour",
|
||||
"REMAINING_MANY_WAITING": "Waiting for {{time}} hours",
|
||||
"REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "New contract proposal",
|
||||
"IGNORED": "You ignored contract proposal",
|
||||
"ACCEPTED": "Contract started",
|
||||
"WAIT": "Waiting for contract confirmation",
|
||||
"WAITING_BUYER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "You ignored cancellation proposal",
|
||||
"EXPIRED": "Contract proposal has expired"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "Waiting for response",
|
||||
"IGNORED": "Seller ignored your contract proposal",
|
||||
"ACCEPTED": "Seller accepted your contract proposal",
|
||||
"WAIT": "Waiting for deposits confirmation",
|
||||
"WAITING_SELLER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"WAITING_CANCEL": "Waiting for contract cancellation",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract",
|
||||
"EXPIRED": "The contract proposal has expired"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Description",
|
||||
"SELLER": "Seller",
|
||||
"AMOUNT": "Amount",
|
||||
"YOUR_DEPOSIT": "Your deposit",
|
||||
"SELLER_DEPOSIT": "Seller deposit",
|
||||
"BUYER_DEPOSIT": "Buyer deposit",
|
||||
"SAME_AMOUNT": "Same amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"SEND_BUTTON": "Send",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Description required",
|
||||
"DESC_MAXIMUM": "Maximum field length reached",
|
||||
"SELLER_REQUIRED": "Address required",
|
||||
"SELLER_NOT_VALID": "Invalid address",
|
||||
"ALIAS_NOT_VALID": "Invalid alias",
|
||||
"AMOUNT_REQUIRED": "Amount required",
|
||||
"AMOUNT_ZERO": "Amount cannot be zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Deposit required",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Seller deposit required",
|
||||
"SELLER_SAME": "Use separate account",
|
||||
"COMMENT_MAXIMUM": "Maximum field length reached"
|
||||
},
|
||||
"PROGRESS_NEW": "New purchase",
|
||||
"PROGRESS_WAIT": "Awaiting reply",
|
||||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"WAITING_SELLER": "Waiting for response",
|
||||
"WAITING_BUYER": "Contract proposal received",
|
||||
"WAITING_CONFIRMATION": "Waiting for deposits confirmation",
|
||||
"WAITING_DELIVERY": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"IGNORED_BUYER": "Contract proposal ignored",
|
||||
"IGNORED_SELLER": "The seller ignored your contract proposal",
|
||||
"PROPOSAL_CANCEL_SELLER": "Cancellation request sent",
|
||||
"PROPOSAL_CANCEL_BUYER": "Cancellation request received",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract",
|
||||
"IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"EXPIRED": "Contract proposal expired",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contract started",
|
||||
"IGNORED_ACCEPT": "Contract proposal ignored",
|
||||
"BURN_PROPOSAL": "Deposits burned",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contract completed",
|
||||
"SEND_CANCEL_PROPOSAL": "Cancellation request sent",
|
||||
"IGNORED_CANCEL": "Contract cancellation proposal ignored",
|
||||
"DEALS_CANCELED_WAIT": "Cancellation in progress",
|
||||
"WAITING_TIME": "Response time",
|
||||
"NEED_MONEY": "Insufficient funds",
|
||||
"BUTTON_MAKE_PLEDGE": "Accept and make deposit",
|
||||
"BUTTON_IGNORE": "Ignore and hide offer",
|
||||
"BUTTON_NULLIFY": "Terminate and burn deposits",
|
||||
"BUTTON_RECEIVED": "Complete and release deposits",
|
||||
"BUTTON_CANCEL_BUYER": "Cancel and return deposits",
|
||||
"BUTTON_NOT_CANCEL": "Ignore request",
|
||||
"BUTTON_CANCEL_SELLER": "Confirm and return deposits",
|
||||
"HOUR": "hour",
|
||||
"HOURS": "hours",
|
||||
"CANCEL": "Cancel",
|
||||
"NULLIFY_QUESTION": "Are you sure you want to burn both deposits?",
|
||||
"BUTTON_NULLIFY_SHORT": "Burn",
|
||||
"WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Error",
|
||||
"SUCCESS": "Success",
|
||||
"INFO": "Information",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Send",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"TITLE": "Confirm transaction",
|
||||
"MESSAGE": {
|
||||
"SEND": "Send",
|
||||
"FROM": "From",
|
||||
"TO": "To",
|
||||
"COMMENT": "Comment"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Pending",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Time period:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 week",
|
||||
"WEEK2": "2 week",
|
||||
"MONTH1": "1 month",
|
||||
"MONTH3": "3 month",
|
||||
"MONTH6": "6 month",
|
||||
"YEAR": "1 year",
|
||||
"ALL": "All"
|
||||
},
|
||||
"TITLE_GROUP": "Group:",
|
||||
"GROUP": {
|
||||
"DAY": "day",
|
||||
"WEEK": "week",
|
||||
"MONTH": "month"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Contact list",
|
||||
"IMPORT_EXPORT": "Import or export contacts",
|
||||
"IMPORT": "Import",
|
||||
"EXPORT": "Export",
|
||||
"ADD": "Add/edit contact",
|
||||
"SEND": "Send",
|
||||
"SEND_FROM": "Send from",
|
||||
"SEND_TO": "To",
|
||||
"OPEN_ADD_WALLET": "Open/Add wallet",
|
||||
"COPY": "- Copy",
|
||||
"TABLE": {
|
||||
"NAME": "Name",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes",
|
||||
"EMPTY": "Contact list is empty"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Name",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUBLICATED": "Name is dublicated",
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"SET_MASTER_PASSWORD": "Set master password",
|
||||
"ADDRESS_DUBLICATED": "Address is dublicated",
|
||||
"MAX_LENGTH": "Maximum notes length reached",
|
||||
"NAME_LENGTH": "The name must be 4-25 characters long"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Send",
|
||||
"EDIT": "Edit",
|
||||
"DELETE": "Delete",
|
||||
"ADD": "Add contact",
|
||||
"ADD_EDIT": "Add/Save",
|
||||
"GO_TO_WALLET": "Go to wallet",
|
||||
"IMPORT_EXPORT": "Import/export"
|
||||
},
|
||||
"SUCCESS_SENT": "Contact added",
|
||||
"SUCCESS_SAVE": "Contact is edited",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Error is occured while reading file!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Not enough money",
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error: core is busy",
|
||||
"DAEMON_BUSY": "Internal error: daemon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with",
|
||||
"TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Transaction not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.",
|
||||
"TX_TYPE_NORMAL": "Error. The payment from the wallet",
|
||||
"TX_TYPE_NORMAL_TO": "to",
|
||||
"TX_TYPE_NORMAL_END": "was not completed.",
|
||||
"TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Please try again.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe",
|
||||
"TX_TYPE_COIN_BASE": "Error. The payment was not completed."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copy",
|
||||
"PASTE": "paste",
|
||||
"SELECT": "select all"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Quit",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Payment received",
|
||||
"MINED": "Mined",
|
||||
"LOCKED": "Blocked",
|
||||
"IS_MINIMIZE": "Zano application is minimized to the system tray",
|
||||
"RESTORE": "You can recover it by clicking or using the context menu",
|
||||
"TRAY_MENU_SHOW": "Resize",
|
||||
"TRAY_MENU_MINIMIZE": "Minimize"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Setup master password",
|
||||
"SETUP_CONFIRM_PASS": "Confirm the password",
|
||||
"MASTER_PASS": "Master password",
|
||||
"BUTTON_NEXT": "Next",
|
||||
"BUTTON_SKIP": "Skip",
|
||||
"BUTTON_RESET": "Reset",
|
||||
"INCORRECT_PASSWORD": "Invalid password",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"CONFIRM_REQUIRED": "Confirmation is required",
|
||||
"MISMATCH": "Mismatch"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Go back"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"SAVE_PHRASE": "Save your seed phrase",
|
||||
"OPEN_WALLET": "Open existing wallet",
|
||||
"RESTORE_WALLET": "Restore from backup",
|
||||
"WALLET_DETAILS": "Wallet details",
|
||||
"ASSIGN_ALIAS": "Assign alias",
|
||||
"EDIT_ALIAS": "Edit alias",
|
||||
"TRANSFER_ALIAS": "Transfer alias",
|
||||
"CONTRACTS": "Contracts",
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"OLD_PURCHASE": "Purchase"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Wallets",
|
||||
"ADD_NEW": "+ Add",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "New offers/Messages",
|
||||
"SYNCING": "Syncing wallet"
|
||||
},
|
||||
"CONTACTS": "Contacts",
|
||||
"SETTINGS": "Settings",
|
||||
"LOG_OUT": "Log out",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "System error",
|
||||
"COMPLETE": "Completion",
|
||||
"SYNCING": "Syncing blockchain",
|
||||
"LOADING": "Loading blockchain data"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Update available",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Get new update.</span><br><span>Update is recommended!</span>",
|
||||
"IMPORTANT": "Update available",
|
||||
"IMPORTANT_HINT": "Important update!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Get new update.</span><br><span>Important update!</span>",
|
||||
"CRITICAL": "Update available",
|
||||
"CRITICAL_HINT": "Critical update!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Critical update available.</span><i class=\"icon\"></i><span>Update strongly recommended!</span>",
|
||||
"TIME": "System time differs from network",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Wrong system time!</span><br><span>Check and repair your system time.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Create or open the wallet to start using Zano",
|
||||
"BUTTON_NEW_WALLET": "Create new wallet",
|
||||
"BUTTON_OPEN_WALLET": "Open existing wallet",
|
||||
"BUTTON_RESTORE_BACKUP": "Restore from backup",
|
||||
"HELP": "How to create wallet?",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Set wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"TITLE_SAVE": "Save the wallet file.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open",
|
||||
"FILE_NOT_FOUND1": "Wallet file not found",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open wallet\" button.",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Type wallet password",
|
||||
"LABEL": "Password to this wallet",
|
||||
"OPEN": "Open wallet",
|
||||
"SKIP": "Skip",
|
||||
"NOT_FOUND": "Not found"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_PHRASE_KEY": "Seed phrase / tracking seed",
|
||||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match",
|
||||
"KEY_REQUIRED": "Key is required",
|
||||
"KEY_NOT_VALID": "Key not valid"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Create wallet",
|
||||
"BUTTON_COPY": "Copy"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"SELECT_LOCATION": "Select wallet location",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"RESTORE_WALLET": "Restore from backup"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings",
|
||||
"DARK_THEME": "Dark theme",
|
||||
"WHITE_THEME": "White theme",
|
||||
"GRAY_THEME": "Grey theme",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Lock app after:",
|
||||
"TIME1": "5 min",
|
||||
"TIME2": "15 min",
|
||||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
"NEW": "New password",
|
||||
"CONFIRM": "New password confirmation",
|
||||
"BUTTON": "Save"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"PASS_NOT_MATCH": "Old password not match",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
},
|
||||
"LAST_BUILD": "Current build: {{value}}",
|
||||
"APP_LOG_TITLE": "Log level:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Register an alias",
|
||||
"DETAILS": "Details",
|
||||
"LOCK": "Lock",
|
||||
"AVAILABLE_BALANCE": "Available <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Locked <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "What does that mean?",
|
||||
"TABS": {
|
||||
"SEND": "Send",
|
||||
"RECEIVE": "Receive",
|
||||
"HISTORY": "History",
|
||||
"CONTRACTS": "Contracts",
|
||||
"MESSAGES": "Messages",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_FILE_LOCATION": "Wallet file location",
|
||||
"LABEL_SEED_PHRASE": "Seed phrase",
|
||||
"SEED_PHRASE_HINT": "Click to reveal the seed phrase",
|
||||
"BUTTON_SAVE": "Save",
|
||||
"BUTTON_REMOVE": "Close wallet",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later."
|
||||
},
|
||||
"COST": "Alias fee {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"ONE_ALIAS": "You can create only one alias per wallet",
|
||||
"REQUEST_ADD_REG": "The alias will be assigned within 10 minutes"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "You do not have enough funds to change the comment to this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"COST": "Fee {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Edit"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transfer to",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "No wallet with this account exists",
|
||||
"ALIAS_EXISTS": "This account already has an alias",
|
||||
"NO_MONEY": "You do not have enough funds to transfer this alias"
|
||||
},
|
||||
"COST": "Transfer fee {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transfer",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"REQUEST_SEND_REG": "The alias will be transferred within 10 minutes"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Address",
|
||||
"AMOUNT": "Amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"HIDE": "Hide your wallet address from recipient",
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "Transaction sent",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"ALIAS_NOT_VALID": "Alias not valid",
|
||||
"AMOUNT_REQUIRED": "Amount is required",
|
||||
"AMOUNT_ZERO": "Amount is zero",
|
||||
"FEE_REQUIRED": "Fee is required",
|
||||
"FEE_MINIMUM": "Minimum fee: {{fee}}",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
"STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Locked till {{date}}",
|
||||
"SEND": "Sent",
|
||||
"RECEIVED": "Received",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"FEE": "Fee",
|
||||
"ADDRESS": "Address",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "Payment ID",
|
||||
"ID": "Transaction ID",
|
||||
"SIZE": "Transaction size",
|
||||
"SIZE_VALUE": "{{value}} bytes",
|
||||
"HEIGHT": "Height",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Comment"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "hidden",
|
||||
"UNDEFINED": "Undefined",
|
||||
"COMPLETE_BUYER": "Contract completed",
|
||||
"COMPLETE_SELLER": "Contract completed",
|
||||
"CREATE_ALIAS": "Fee for assigning alias",
|
||||
"UPDATE_ALIAS": "Fee for editing alias",
|
||||
"POW_REWARD": "POW reward",
|
||||
"POS_REWARD": "POS reward",
|
||||
"CREATE_CONTRACT": "Contract proposal",
|
||||
"PLEDGE_CONTRACT": "Contract deposit",
|
||||
"NULLIFY_CONTRACT": "Burn deposits",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Cancellation request",
|
||||
"CANCEL_CONTRACT": "Cancel and return deposits"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "No active contracts",
|
||||
"CONTRACTS": "Contracts",
|
||||
"PURCHASE": "Purchase",
|
||||
"SELL": "Sell",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"STATUS": "Status",
|
||||
"COMMENTS": "Comments",
|
||||
"PURCHASE_BUTTON": "New Purchase",
|
||||
"LISTING_BUTTON": "Create listing",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Less than an hour to respond",
|
||||
"REMAINING_ONE": "{{time}} hour remains",
|
||||
"REMAINING_MANY": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT": "{{time}} hours remain",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} hour remains",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_ONE_WAITING": "Waiting for {{time}} hour",
|
||||
"REMAINING_MANY_WAITING": "Waiting for {{time}} hours",
|
||||
"REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "New contract proposal",
|
||||
"IGNORED": "You ignored contract proposal",
|
||||
"ACCEPTED": "Contract started",
|
||||
"WAIT": "Waiting for contract confirmation",
|
||||
"WAITING_BUYER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "You ignored cancellation proposal",
|
||||
"EXPIRED": "Contract proposal has expired"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "Waiting for response",
|
||||
"IGNORED": "Seller ignored your contract proposal",
|
||||
"ACCEPTED": "Seller accepted your contract proposal",
|
||||
"WAIT": "Waiting for deposits confirmation",
|
||||
"WAITING_SELLER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"WAITING_CANCEL": "Waiting for contract cancellation",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract",
|
||||
"EXPIRED": "The contract proposal has expired"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Description",
|
||||
"SELLER": "Seller",
|
||||
"AMOUNT": "Amount",
|
||||
"YOUR_DEPOSIT": "Your deposit",
|
||||
"SELLER_DEPOSIT": "Seller deposit",
|
||||
"BUYER_DEPOSIT": "Buyer deposit",
|
||||
"SAME_AMOUNT": "Same amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"SEND_BUTTON": "Send",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Description required",
|
||||
"DESC_MAXIMUM": "Maximum field length reached",
|
||||
"SELLER_REQUIRED": "Address required",
|
||||
"SELLER_NOT_VALID": "Invalid address",
|
||||
"ALIAS_NOT_VALID": "Invalid alias",
|
||||
"AMOUNT_REQUIRED": "Amount required",
|
||||
"AMOUNT_ZERO": "Amount cannot be zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Deposit required",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Seller deposit required",
|
||||
"SELLER_SAME": "Use separate account",
|
||||
"COMMENT_MAXIMUM": "Maximum field length reached"
|
||||
},
|
||||
"PROGRESS_NEW": "New purchase",
|
||||
"PROGRESS_WAIT": "Awaiting reply",
|
||||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"WAITING_SELLER": "Waiting for response",
|
||||
"WAITING_BUYER": "Contract proposal received",
|
||||
"WAITING_CONFIRMATION": "Waiting for deposits confirmation",
|
||||
"WAITING_DELIVERY": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"IGNORED_BUYER": "Contract proposal ignored",
|
||||
"IGNORED_SELLER": "The seller ignored your contract proposal",
|
||||
"PROPOSAL_CANCEL_SELLER": "Cancellation request sent",
|
||||
"PROPOSAL_CANCEL_BUYER": "Cancellation request received",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract",
|
||||
"IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"EXPIRED": "Contract proposal expired",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contract started",
|
||||
"IGNORED_ACCEPT": "Contract proposal ignored",
|
||||
"BURN_PROPOSAL": "Deposits burned",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contract completed",
|
||||
"SEND_CANCEL_PROPOSAL": "Cancellation request sent",
|
||||
"IGNORED_CANCEL": "Contract cancellation proposal ignored",
|
||||
"DEALS_CANCELED_WAIT": "Cancellation in progress",
|
||||
"WAITING_TIME": "Response time",
|
||||
"NEED_MONEY": "Insufficient funds",
|
||||
"BUTTON_MAKE_PLEDGE": "Accept and make deposit",
|
||||
"BUTTON_IGNORE": "Ignore and hide offer",
|
||||
"BUTTON_NULLIFY": "Terminate and burn deposits",
|
||||
"BUTTON_RECEIVED": "Complete and release deposits",
|
||||
"BUTTON_CANCEL_BUYER": "Cancel and return deposits",
|
||||
"BUTTON_NOT_CANCEL": "Ignore request",
|
||||
"BUTTON_CANCEL_SELLER": "Confirm and return deposits",
|
||||
"HOUR": "hour",
|
||||
"HOURS": "hours",
|
||||
"CANCEL": "Cancel",
|
||||
"NULLIFY_QUESTION": "Are you sure you want to burn both deposits?",
|
||||
"BUTTON_NULLIFY_SHORT": "Burn",
|
||||
"WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Error",
|
||||
"SUCCESS": "Success",
|
||||
"INFO": "Information",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Send",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"TITLE": "Confirm transaction",
|
||||
"MESSAGE": {
|
||||
"SEND": "Send",
|
||||
"FROM": "From",
|
||||
"TO": "To",
|
||||
"COMMENT": "Comment"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Pending",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Time period:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 week",
|
||||
"WEEK2": "2 week",
|
||||
"MONTH1": "1 month",
|
||||
"MONTH3": "3 month",
|
||||
"MONTH6": "6 month",
|
||||
"YEAR": "1 year",
|
||||
"ALL": "All"
|
||||
},
|
||||
"TITLE_GROUP": "Group:",
|
||||
"GROUP": {
|
||||
"DAY": "day",
|
||||
"WEEK": "week",
|
||||
"MONTH": "month"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Contact list",
|
||||
"IMPORT_EXPORT": "Import or export contacts",
|
||||
"IMPORT": "Import",
|
||||
"EXPORT": "Export",
|
||||
"ADD": "Add/edit contact",
|
||||
"SEND": "Send",
|
||||
"SEND_FROM": "Send from",
|
||||
"SEND_TO": "To",
|
||||
"OPEN_ADD_WALLET": "Open/Add wallet",
|
||||
"COPY": "- Copy",
|
||||
"TABLE": {
|
||||
"NAME": "Name",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes",
|
||||
"EMPTY": "Contact list is empty"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Name",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUBLICATED": "Name is dublicated",
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"SET_MASTER_PASSWORD": "Set master password",
|
||||
"ADDRESS_DUBLICATED": "Address is dublicated",
|
||||
"MAX_LENGTH": "Maximum notes length reached",
|
||||
"NAME_LENGTH": "The name must be 4-25 characters long"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Send",
|
||||
"EDIT": "Edit",
|
||||
"DELETE": "Delete",
|
||||
"ADD": "Add contact",
|
||||
"ADD_EDIT": "Add/Save",
|
||||
"GO_TO_WALLET": "Go to wallet",
|
||||
"IMPORT_EXPORT": "Import/export"
|
||||
},
|
||||
"SUCCESS_SENT": "Contact added",
|
||||
"SUCCESS_SAVE": "Contact is edited",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Error is occured while reading file!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Not enough money",
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error: core is busy",
|
||||
"DAEMON_BUSY": "Internal error: daemon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with",
|
||||
"TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Transaction not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.",
|
||||
"TX_TYPE_NORMAL": "Error. The payment from the wallet",
|
||||
"TX_TYPE_NORMAL_TO": "to",
|
||||
"TX_TYPE_NORMAL_END": "was not completed.",
|
||||
"TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Please try again.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe",
|
||||
"TX_TYPE_COIN_BASE": "Error. The payment was not completed."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copy",
|
||||
"PASTE": "paste",
|
||||
"SELECT": "select all"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Quit",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Payment received",
|
||||
"MINED": "Mined",
|
||||
"LOCKED": "Blocked",
|
||||
"IS_MINIMIZE": "Zano application is minimized to the system tray",
|
||||
"RESTORE": "You can recover it by clicking or using the context menu",
|
||||
"TRAY_MENU_SHOW": "Resize",
|
||||
"TRAY_MENU_MINIMIZE": "Minimize"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Imposta password principale",
|
||||
"SETUP_CONFIRM_PASS": "Conferma la password",
|
||||
"MASTER_PASS": "Password principale",
|
||||
"BUTTON_NEXT": "Prossimo",
|
||||
"BUTTON_SKIP": "Salta",
|
||||
"BUTTON_RESET": "Azzera",
|
||||
"INCORRECT_PASSWORD": "Password non valida",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "La password è necessaria",
|
||||
"CONFIRM_REQUIRED": "La conferma è necessaria",
|
||||
"MISMATCH": "Non corrisponde"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Torna indietro"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Aggiungi portafoglio",
|
||||
"CREATE_WALLET": "Crea un nuovo portafoglio",
|
||||
"SAVE_PHRASE": "Salva la tua frase segreta",
|
||||
"OPEN_WALLET": "Apri portafoglio esistente",
|
||||
"RESTORE_WALLET": "Ripristina da backup",
|
||||
"WALLET_DETAILS": "Dettagli portafoglio",
|
||||
"ASSIGN_ALIAS": "Assegna alias",
|
||||
"EDIT_ALIAS": "Modifica alias",
|
||||
"TRANSFER_ALIAS": "Trasferisci alias",
|
||||
"CONTRACTS": "Contratti",
|
||||
"NEW_PURCHASE": "Nuovo acquisto",
|
||||
"OLD_PURCHASE": "Acquisto"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Portafogli",
|
||||
"ADD_NEW": "+ Aggiungi",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "Nuove offerte/messaggi",
|
||||
"SYNCING": "Sincronizzazione portafoglio"
|
||||
},
|
||||
"CONTACTS": "Contatti",
|
||||
"SETTINGS": "Impostazioni",
|
||||
"LOG_OUT": "Esci",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "Errore di sistema",
|
||||
"COMPLETE": "Completata",
|
||||
"SYNCING": "Syncing block",
|
||||
"LOADING": "Caricamento dati blockchain"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Aggiornamento disponibile",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Ottieni un nuovo aggiornamento.</span><br><span>L'aggiornamento è consigliato!</span>",
|
||||
"IMPORTANT": "Aggiornamento disponibile",
|
||||
"IMPORTANT_HINT": "Aggiornamento importante!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Ottieni un nuovo aggiornamento.</span><br><span>Aggiornamento importante!</span>",
|
||||
"CRITICAL": "Aggiornamento disponibile",
|
||||
"CRITICAL_HINT": "Aggiornamento critico!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Aggiornamento critico disponibile.</span><i class=\"icon\"></i><span>Aggiornamento fortemente consigliato!</span>",
|
||||
"TIME": "L'orario di sistema differisce dalla rete",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">L'orario di sistema è sbagliato!</span><br><span>Controlla e sistema l'orario di sistema.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Crea o apri il portafoglio per iniziare a usare Zano",
|
||||
"BUTTON_NEW_WALLET": "Crea un nuovo portafoglio",
|
||||
"BUTTON_OPEN_WALLET": "Apri portafoglio esistente",
|
||||
"BUTTON_RESTORE_BACKUP": "Ripristina da backup",
|
||||
"HELP": "Come creare il portafoglio?",
|
||||
"CHOOSE_PATH": "Scegli un percorso"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Nome del portafoglio",
|
||||
"PASS": "Imposta password portafoglio",
|
||||
"CONFIRM": "Conferma password portafoglio",
|
||||
"BUTTON_SELECT": "Seleziona posizione portafoglio",
|
||||
"BUTTON_CREATE": "Crea portafoglio",
|
||||
"TITLE_SAVE": "Salva il file del portafoglio.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "I file del portafoglio esistenti non possono essere sostituiti o sovrascritti",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "I file del portafoglio non possono essere salvati nella partizione di sistema",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Il nome è richiesto",
|
||||
"NAME_DUPLICATE": "Il nome è duplicato",
|
||||
"MAX_LENGTH": "Lunghezza massima del nome raggiunta",
|
||||
"CONFIRM_NOT_MATCH": "La password di conferma non corrisponde"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Nome del portafoglio",
|
||||
"PASS": "Password portafoglio",
|
||||
"BUTTON": "Apri portafoglio",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "Un portafoglio con questo indirizzo è già aperto",
|
||||
"FILE_NOT_FOUND1": "File del portafoglio non trovato",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> Potrebbe essere stato rinominato o spostato. <br/> Per aprirlo, usa il pulsante \"Apri portafoglio\".",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Il nome è richiesto",
|
||||
"NAME_DUPLICATE": "Il nome è un duplicato",
|
||||
"MAX_LENGTH": "Lunghezza massima del nome raggiunta"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Imposta password portafoglio",
|
||||
"LABEL": "Password per questo portafoglio",
|
||||
"OPEN": "Apri portafoglio",
|
||||
"SKIP": "Salta",
|
||||
"NOT_FOUND": "Non trovato"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Nome del portafoglio",
|
||||
"LABEL_PHRASE_KEY": "Frase segreta / chiave privata",
|
||||
"PASS": "Password portafoglio",
|
||||
"CONFIRM": "Conferma password portafoglio",
|
||||
"BUTTON_SELECT": "Seleziona posizione portafoglio",
|
||||
"BUTTON_CREATE": "Crea portafoglio",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "File del portafoglio non valido o password non corrispondente",
|
||||
"CHOOSE_PATH": "Scegli un percorso",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Il nome è richiesto",
|
||||
"NAME_DUPLICATE": "Il nome è un duplicato",
|
||||
"MAX_LENGTH": "Lunghezza massima del nome raggiunta",
|
||||
"CONFIRM_NOT_MATCH": "La password di conferma non corrisponde",
|
||||
"KEY_REQUIRED": "Chiave richiesta",
|
||||
"KEY_NOT_VALID": "Chiave non valida"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Assicurati di mantenere la tua frase segreta in un posto sicuro. Se dimentichi la tua frase segreta non sarai in grado di recuperare il tuo portafoglio.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Crea portafoglio",
|
||||
"BUTTON_COPY": "Copia"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Aggiungi portafoglio",
|
||||
"SELECT_LOCATION": "Seleziona posizione portafoglio",
|
||||
"CREATE_WALLET": "Crea un nuovo portafoglio",
|
||||
"RESTORE_WALLET": "Ripristina da backup"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Impostazioni",
|
||||
"DARK_THEME": "Tema scuro",
|
||||
"WHITE_THEME": "Tema bianco",
|
||||
"GRAY_THEME": "Tema grigio",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Blocca app dopo:",
|
||||
"TIME1": "5 minuti",
|
||||
"TIME2": "15 minuti",
|
||||
"TIME3": "1 ora",
|
||||
"TIME4": "Mai"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scala",
|
||||
"100": "100% scala",
|
||||
"125": "125% scala",
|
||||
"150": "150% scala"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Aggiorna password principale",
|
||||
"OLD": "Vecchia password",
|
||||
"NEW": "Nuova password",
|
||||
"CONFIRM": "Conferma nuova password",
|
||||
"BUTTON": "Salva"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "La password è necessaria",
|
||||
"PASS_NOT_MATCH": "La vecchia password non corrisponde",
|
||||
"CONFIRM_NOT_MATCH": "La password di conferma non corrisponde"
|
||||
},
|
||||
"LAST_BUILD": "Build attuale: {{value}}",
|
||||
"APP_LOG_TITLE": "Livello di log:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Registra un alias",
|
||||
"DETAILS": "Dettagli",
|
||||
"LOCK": "Blocca",
|
||||
"AVAILABLE_BALANCE": "Disponibile <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Bloccato <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "Che cosa significa?",
|
||||
"TABS": {
|
||||
"SEND": "Invia",
|
||||
"RECEIVE": "Ricevi",
|
||||
"HISTORY": "Storico",
|
||||
"CONTRACTS": "Contratti",
|
||||
"MESSAGES": "Messaggi",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Nome portafoglio",
|
||||
"LABEL_FILE_LOCATION": "Posizione file portafoglio",
|
||||
"LABEL_SEED_PHRASE": "Frase segreta",
|
||||
"SEED_PHRASE_HINT": "Clicca per rivelare la frase segreta",
|
||||
"BUTTON_SAVE": "Salva",
|
||||
"BUTTON_REMOVE": "Chiudi portafoglio",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Il nome è richiesto",
|
||||
"NAME_DUPLICATE": "Il nome è un duplicato",
|
||||
"MAX_LENGTH": "Lunghezza massima del nome raggiunta"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Inserisci alias",
|
||||
"TOOLTIP": "Un alias è un modulo abbreviato o il tuo account. Un alias può solo includere lettere latine, numeri e caratteri “.” e “-”. Deve iniziare con “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Commento",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "Il commento sarà visibile a chiunque desideri effettuare un pagamento al tuo alias. Puoi fornire dettagli sul tuo business, contatti o includere qualsiasi testo. I commenti possono essere modificati più tardi."
|
||||
},
|
||||
"COST": "Quota alias {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assegna",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Il nome è richiesto",
|
||||
"NAME_WRONG": "Nome Ungültiger: zulässige Symbole \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "L'alias deve essere lungo 6-25 caratteri",
|
||||
"NAME_EXISTS": "Il nome dell'alias esiste già",
|
||||
"NO_MONEY": "Non hai fondi sufficienti per assegnare questo alias",
|
||||
"MAX_LENGTH": "Lunghezza massima del nome raggiunta"
|
||||
},
|
||||
"ONE_ALIAS": "Puoi creare solo un alias per portafoglio",
|
||||
"REQUEST_ADD_REG": "L'alias sarà assegnato entro 10 minuti"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Inserisci alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Commento",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "Non hai fondi sufficienti per modificare il commento a questo alias",
|
||||
"MAX_LENGTH": "Lunghezza massima del commento raggiunta"
|
||||
},
|
||||
"COST": "Tassa {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Modifica"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Inserisci alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Commento",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Trasferisci a",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "Non esiste alcun portafoglio con questo account",
|
||||
"ALIAS_EXISTS": "Questo account ha già un alias",
|
||||
"NO_MONEY": "Non hai fondi sufficienti per trasferire questo alias"
|
||||
},
|
||||
"COST": "Trasferimento commissione {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Trasferisci",
|
||||
"BUTTON_CANCEL": "Cancella",
|
||||
"REQUEST_SEND_REG": "L'alias verrà trasferito entro 10 minuti"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Indirizzo",
|
||||
"AMOUNT": "Importo",
|
||||
"COMMENT": "Commento",
|
||||
"DETAILS": "Dettagli aggiuntivi",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Commissione",
|
||||
"HIDE": "Nascondi l'indirizzo del tuo portafoglio dal destinatario",
|
||||
"BUTTON": "Invia",
|
||||
"SUCCESS_SENT": "Transazione inviata",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Indirizzo richiesto",
|
||||
"ADDRESS_NOT_VALID": "Indirizzo non valido",
|
||||
"ALIAS_NOT_VALID": "Alias non valido",
|
||||
"AMOUNT_REQUIRED": "Importo richiesto",
|
||||
"AMOUNT_ZERO": "Importo è zero",
|
||||
"FEE_REQUIRED": "La commissione è richiesta",
|
||||
"FEE_MINIMUM": "Costo minimo: {{fee}}",
|
||||
"MAX_LENGTH": "Lunghezza massima del commento raggiunta"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Stato",
|
||||
"STATUS_TOOLTIP": "Conferme {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Bloccato fino a {{date}}",
|
||||
"SEND": "Inviato",
|
||||
"RECEIVED": "Ricevuto",
|
||||
"DATE": "Data",
|
||||
"AMOUNT": "Importo",
|
||||
"FEE": "Commissione",
|
||||
"ADDRESS": "Indirizzo",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "ID pagamento",
|
||||
"ID": "ID transazione",
|
||||
"SIZE": "Dimensione transazione",
|
||||
"SIZE_VALUE": "{{value}} byte",
|
||||
"HEIGHT": "Altezza",
|
||||
"CONFIRMATION": "Conferme",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Commenti"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "nascosto",
|
||||
"UNDEFINED": "Non definito",
|
||||
"COMPLETE_BUYER": "Contratto completato",
|
||||
"COMPLETE_SELLER": "Contratto completato",
|
||||
"CREATE_ALIAS": "Tassa per l'assegnazione dell'alias",
|
||||
"UPDATE_ALIAS": "Tassa per modificare alias",
|
||||
"POW_REWARD": "Ricompensa POW",
|
||||
"POS_REWARD": "Ricompensa POS",
|
||||
"CREATE_CONTRACT": "Proposta contratto",
|
||||
"PLEDGE_CONTRACT": "Deposito contratto",
|
||||
"NULLIFY_CONTRACT": "Burn deposit",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Richiesta di cancellazione",
|
||||
"CANCEL_CONTRACT": "Annulla e restituisce depositi"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "Nessun contratto attivo",
|
||||
"CONTRACTS": "Contratti",
|
||||
"PURCHASE": "Acquisti",
|
||||
"SELL": "Vendite",
|
||||
"DATE": "Data",
|
||||
"AMOUNT": "Importo",
|
||||
"STATUS": "Stato",
|
||||
"COMMENTS": "Commenti",
|
||||
"PURCHASE_BUTTON": "Nuovo acquisto",
|
||||
"LISTING_BUTTON": "Crea elenco",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Meno di un'ora per rispondere",
|
||||
"REMAINING_ONE": "{{time}} ora rimasta",
|
||||
"REMAINING_MANY": "{{time}} ore rimaste",
|
||||
"REMAINING_MANY_ALT": "{{time}} ore rimaste",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} ora rimasta",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} ore rimaste",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} ore rimaste",
|
||||
"REMAINING_ONE_WAITING": "Attendi {{time}} ora",
|
||||
"REMAINING_MANY_WAITING": "Attendi {{time}} ore",
|
||||
"REMAINING_MANY_ALT_WAITING": "Attendi {{time}} ore"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "Nuova proposta di contratto",
|
||||
"IGNORED": "Hai ignorato la proposta di contratto",
|
||||
"ACCEPTED": "Contratto iniziato",
|
||||
"WAIT": "In attesa di conferma del contratto",
|
||||
"WAITING_BUYER": "In attesa di consegna",
|
||||
"COMPLETED": "Contratto completato",
|
||||
"NOT_RECEIVED": "Consegna fallita",
|
||||
"NULLIFIED": "Tutti i depositi bruciati",
|
||||
"PROPOSAL_CANCEL": "Nuova proposta di cancellare il contratto e restituire i depositi",
|
||||
"BEING_CANCELLED": "Cancellazione in corso",
|
||||
"CANCELLED": "Contratto cancellato",
|
||||
"IGNORED_CANCEL": "Hai ignorato la proposta di cancellazione",
|
||||
"EXPIRED": "La proposta del contratto è scaduta"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "In attesa di risposta",
|
||||
"IGNORED": "Il venditore ha ignorato la tua proposta di contratto",
|
||||
"ACCEPTED": "Il venditore ha accettato la tua proposta di contratto",
|
||||
"WAIT": "In attesa della conferma dei depositi",
|
||||
"WAITING_SELLER": "In attesa di consegna",
|
||||
"COMPLETED": "Contratto completato",
|
||||
"NOT_RECEIVED": "Consegna fallita",
|
||||
"NULLIFIED": "Tutti i depositi bruciati",
|
||||
"WAITING_CANCEL": "In attesa della cancellazione del contratto",
|
||||
"BEING_CANCELLED": "Cancellazione in corso",
|
||||
"CANCELLED": "Contratto cancellato",
|
||||
"IGNORED_CANCEL": "Il venditore ha ignorato la tua proposta di annullare il contratto",
|
||||
"EXPIRED": "La proposta di contratto è scaduta"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Descrizione",
|
||||
"SELLER": "Venditore",
|
||||
"AMOUNT": "Importo",
|
||||
"YOUR_DEPOSIT": "Il tuo deposito",
|
||||
"SELLER_DEPOSIT": "Deposito venditore",
|
||||
"BUYER_DEPOSIT": "Deposito acquirente",
|
||||
"SAME_AMOUNT": "Stesso importo",
|
||||
"COMMENT": "Commento",
|
||||
"DETAILS": "Dettagli aggiuntivi",
|
||||
"SEND_BUTTON": "Invia",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Descrizione richiesta",
|
||||
"DESC_MAXIMUM": "Lunghezza massima del campo raggiunta",
|
||||
"SELLER_REQUIRED": "Indirizzo richiesto",
|
||||
"SELLER_NOT_VALID": "Indirizzo non valido",
|
||||
"ALIAS_NOT_VALID": "Alias non valido",
|
||||
"AMOUNT_REQUIRED": "Importo richiesto",
|
||||
"AMOUNT_ZERO": "L'importo non può essere zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Deposito richiesto",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Deposito venditore richiesto",
|
||||
"SELLER_SAME": "Usa account separato",
|
||||
"COMMENT_MAXIMUM": "Lunghezza massima del campo raggiunta"
|
||||
},
|
||||
"PROGRESS_NEW": "Nuovo acquisto",
|
||||
"PROGRESS_WAIT": "In attesa di risposta",
|
||||
"PROGRESS_RECEIVE": "Risposta ricevuta",
|
||||
"PROGRESS_COMPLETE": "Completato",
|
||||
"FEE": "Commissione",
|
||||
"PAYMENT": "ID pagamento",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "Nuovo acquisto",
|
||||
"WAITING_SELLER": "In attesa di risposta",
|
||||
"WAITING_BUYER": "Proposta contratto ricevuta",
|
||||
"WAITING_CONFIRMATION": "In attesa della conferma dei depositi",
|
||||
"WAITING_DELIVERY": "In attesa di consegna",
|
||||
"COMPLETED": "Contratto completato",
|
||||
"IGNORED_BUYER": "Proposta del contratto ignorata",
|
||||
"IGNORED_SELLER": "Il venditore ha ignorato la tua proposta di contratto",
|
||||
"PROPOSAL_CANCEL_SELLER": "Richiesta di cancellazione inviata",
|
||||
"PROPOSAL_CANCEL_BUYER": "Richiesta di cancellazione ricevuta",
|
||||
"BEING_CANCELLED": "Cancellazione in corso",
|
||||
"IGNORED_CANCEL_SELLER": "Il venditore ha ignorato la tua proposta di cancellare il contratto",
|
||||
"IGNORED_CANCEL_BUYER": "Proposta di cancellazione del contratto ignorata",
|
||||
"CANCELLED": "Contratto cancellato",
|
||||
"EXPIRED": "Proposta contratto scaduta",
|
||||
"NOT_RECEIVED": "Consegna fallita",
|
||||
"NULLIFIED": "Tutti i depositi bruciati"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contratto iniziato",
|
||||
"IGNORED_ACCEPT": "Proposta del contratto ignorata",
|
||||
"BURN_PROPOSAL": "Depositi bruciati",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contratto completato",
|
||||
"SEND_CANCEL_PROPOSAL": "Richiesta di cancellazione inviata",
|
||||
"IGNORED_CANCEL": "Proposta di cancellazione del contratto ignorata",
|
||||
"DEALS_CANCELED_WAIT": "Cancellazione in corso",
|
||||
"WAITING_TIME": "Tempo di risposta",
|
||||
"NEED_MONEY": "Fondi insufficienti",
|
||||
"BUTTON_MAKE_PLEDGE": "Accetta e effettua il deposito",
|
||||
"BUTTON_IGNORE": "Ignora e nascondi l'offerta",
|
||||
"BUTTON_NULLIFY": "Termina e brucia i depositi",
|
||||
"BUTTON_RECEIVED": "Completa e rilascia i depositi",
|
||||
"BUTTON_CANCEL_BUYER": "Cancella e restituisce i depositi",
|
||||
"BUTTON_NOT_CANCEL": "Ignora richiesta",
|
||||
"BUTTON_CANCEL_SELLER": "Conferma e restituisce depositi",
|
||||
"HOUR": "ora",
|
||||
"HOURS": "ore",
|
||||
"CANCEL": "Cancella",
|
||||
"NULLIFY_QUESTION": "Sei sicuro di voler bruciare entrambi i depositi?",
|
||||
"BUTTON_NULLIFY_SHORT": "Bruciare",
|
||||
"WAITING_TIME_QUESTION": "Sei sicuro di voler cancellare il contratto?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Indirizzo",
|
||||
"MESSAGE": "Messaggio",
|
||||
"SEND_PLACEHOLDER": "Digita un messaggio...",
|
||||
"SEND_BUTTON": "Invia"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Errore",
|
||||
"SUCCESS": "Successo",
|
||||
"INFO": "Informazioni",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Invia",
|
||||
"BUTTON_CANCEL": "Cancella",
|
||||
"TITLE": "Conferma la transazione",
|
||||
"MESSAGE": {
|
||||
"SEND": "Invia",
|
||||
"FROM": "Da",
|
||||
"TO": "A",
|
||||
"COMMENT": "Commento"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "In sospeso",
|
||||
"TITLE_TOTAL": "Totale",
|
||||
"TITLE_PERIOD": "Periodo di tempo:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 settimana",
|
||||
"WEEK2": "2 settimane",
|
||||
"MONTH1": "1 mese",
|
||||
"MONTH3": "3 mesi",
|
||||
"MONTH6": "6 mesi",
|
||||
"YEAR": "1 anno",
|
||||
"ALL": "Tutti"
|
||||
},
|
||||
"TITLE_GROUP": "Gruppo:",
|
||||
"GROUP": {
|
||||
"DAY": "giorno",
|
||||
"WEEK": "settimana",
|
||||
"MONTH": "mese"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Lista contatti",
|
||||
"IMPORT_EXPORT": "Importa o esporta contatti",
|
||||
"IMPORT": "Importa",
|
||||
"EXPORT": "Esporta",
|
||||
"ADD": "Aggiungi/modifica contatto",
|
||||
"SEND": "Invia",
|
||||
"SEND_FROM": "Invia da",
|
||||
"SEND_TO": "A",
|
||||
"OPEN_ADD_WALLET": "Apri/Aggiungi portafoglio",
|
||||
"COPY": "- Copia",
|
||||
"TABLE": {
|
||||
"NAME": "Nome",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Indirizzo",
|
||||
"NOTES": "Note",
|
||||
"EMPTY": "La lista dei contatti è vuota"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Nome",
|
||||
"ADDRESS": "Indirizzo",
|
||||
"NOTES": "Note"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Il nome è richiesto",
|
||||
"NAME_DUBLICATED": "Il nome è un duplicato",
|
||||
"ADDRESS_REQUIRED": "Indirizzo è richiesto",
|
||||
"ADDRESS_NOT_VALID": "Indirizzo non valido",
|
||||
"SET_MASTER_PASSWORD": "Imposta password principale",
|
||||
"ADDRESS_DUBLICATED": "Indirizzo è un duplicato",
|
||||
"MAX_LENGTH": "Lunghezza massima delle note raggiunta",
|
||||
"NAME_LENGTH": "Il nome deve essere lungo da 4 a 25 caratteri"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Invia",
|
||||
"EDIT": "Modifica",
|
||||
"DELETE": "Elimina",
|
||||
"ADD": "Aggiungi contatto",
|
||||
"ADD_EDIT": "Aggiungi/Salva",
|
||||
"GO_TO_WALLET": "Vai al portafoglio",
|
||||
"IMPORT_EXPORT": "Importa/esporta"
|
||||
},
|
||||
"SUCCESS_SENT": "Contatto aggiunto",
|
||||
"SUCCESS_SAVE": "Contatto modificato",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Si è verificato un errore durante la lettura del file!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Non abbastanza denaro",
|
||||
"NOT_ENOUGH_MONEY": "Fondi insufficienti nell'account",
|
||||
"CORE_BUSY": "Errore interno: il core è occupato",
|
||||
"DAEMON_BUSY": "Errore interno: daemon è occupato",
|
||||
"NO_MONEY_REMOVE_OFFER": "Non c'è alcun costo per eliminare un'offerta ma, per proteggere la rete dalle molte transazioni, devi avere almeno {{fee}} {{currency}} nel tuo portafoglio",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Il numero di Mix-in è troppo grande per lo stato corrente della blockchain. Non ci sono abbastanza output non spesi per mescolare con",
|
||||
"TRANSACTION_IS_TO_BIG": "La transazione supera il limite di rete, invia l'importo richiesto con transazioni multiple",
|
||||
"TRANSFER_ATTEMPT": "Non c'è connessione alla rete Zano",
|
||||
"ACCESS_DENIED": "Accesso negato",
|
||||
"TRANSACTION_ERROR": "Errore. Transazione non completata.",
|
||||
"BAD_ARG": "Argomento non valido",
|
||||
"WALLET_WRONG_ID": "ID portafoglio non valido",
|
||||
"WRONG_PASSWORD": "Password non valida",
|
||||
"FILE_RESTORED": "Il file del portafoglio è stato danneggiato. Abbiamo recuperato le chiavi e il portafoglio dalla blockchain",
|
||||
"FILE_NOT_FOUND": "File non trovato",
|
||||
"FILE_EXIST": "Esiste già un file con questo nome. Inserisci un altro nome per salvare il file",
|
||||
"FILE_NOT_SAVED": "Non puoi salvare un file di portafoglio in questa cartella. Scegli un'altra cartella.",
|
||||
"TX_TYPE_NORMAL": "Errore. Il pagamento dal portafoglio",
|
||||
"TX_TYPE_NORMAL_TO": "a",
|
||||
"TX_TYPE_NORMAL_END": "non è stato completato.",
|
||||
"TX_TYPE_NEW_ALIAS": "Errore. Impossibile registrare l'alias in sicurezza",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Per favore riprova.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Errore. Impossibile cambiare il commento all'alias in sicurezza",
|
||||
"TX_TYPE_COIN_BASE": "Errore. Il pagamento non è stato completato."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copia",
|
||||
"PASTE": "incolla",
|
||||
"SELECT": "seleziona tutto"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Esci",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Pagamento in arrivo (non confermato)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Pagamento ricevuto",
|
||||
"MINED": "Minato",
|
||||
"LOCKED": "Bloccato",
|
||||
"IS_MINIMIZE": "L'applicazione Zano è minimizzata nella barra di sistema",
|
||||
"RESTORE": "Puoi recuperarlo cliccando o utilizzando il menu contestuale",
|
||||
"TRAY_MENU_SHOW": "Ridimensiona",
|
||||
"TRAY_MENU_MINIMIZE": "Minimizza"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,588 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Setup master password",
|
||||
"SETUP_CONFIRM_PASS": "Confirm the password",
|
||||
"MASTER_PASS": "Master password",
|
||||
"BUTTON_NEXT": "Next",
|
||||
"BUTTON_SKIP": "Skip",
|
||||
"BUTTON_RESET": "Reset",
|
||||
"INCORRECT_PASSWORD": "Invalid password",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"CONFIRM_REQUIRED": "Confirmation is required",
|
||||
"MISMATCH": "Mismatch"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Go back"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"SAVE_PHRASE": "Save your seed phrase",
|
||||
"OPEN_WALLET": "Open existing wallet",
|
||||
"RESTORE_WALLET": "Restore from backup",
|
||||
"WALLET_DETAILS": "Wallet details",
|
||||
"ASSIGN_ALIAS": "Assign alias",
|
||||
"EDIT_ALIAS": "Edit alias",
|
||||
"TRANSFER_ALIAS": "Transfer alias",
|
||||
"CONTRACTS": "Contracts",
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"OLD_PURCHASE": "Purchase"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Wallets",
|
||||
"ADD_NEW": "+ Add",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "New offers/Messages",
|
||||
"SYNCING": "Syncing wallet"
|
||||
},
|
||||
"CONTACTS": "Contacts",
|
||||
"SETTINGS": "Settings",
|
||||
"LOG_OUT": "Log out",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "System error",
|
||||
"COMPLETE": "Completion",
|
||||
"SYNCING": "Syncing blockchain",
|
||||
"LOADING": "Loading blockchain data"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Update available",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Get new update.</span><br><span>Update is recommended!</span>",
|
||||
"IMPORTANT": "Update available",
|
||||
"IMPORTANT_HINT": "Important update!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Get new update.</span><br><span>Important update!</span>",
|
||||
"CRITICAL": "Update available",
|
||||
"CRITICAL_HINT": "Critical update!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Critical update available.</span><i class=\"icon\"></i><span>Update strongly recommended!</span>",
|
||||
"TIME": "System time differs from network",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Wrong system time!</span><br><span>Check and repair your system time.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Create or open the wallet to start using Zano",
|
||||
"BUTTON_NEW_WALLET": "Create new wallet",
|
||||
"BUTTON_OPEN_WALLET": "Open existing wallet",
|
||||
"BUTTON_RESTORE_BACKUP": "Restore from backup",
|
||||
"HELP": "How to create wallet?",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Set wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"TITLE_SAVE": "Save the wallet file.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open",
|
||||
"FILE_NOT_FOUND1": "Wallet file not found",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open wallet\" button.",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Type wallet password",
|
||||
"LABEL": "Password to this wallet",
|
||||
"OPEN": "Open wallet",
|
||||
"SKIP": "Skip",
|
||||
"NOT_FOUND": "Not found"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_PHRASE_KEY": "Seed phrase / tracking seed",
|
||||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match",
|
||||
"KEY_REQUIRED": "Key is required",
|
||||
"KEY_NOT_VALID": "Key not valid"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Create wallet",
|
||||
"BUTTON_COPY": "Copy"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"SELECT_LOCATION": "Select wallet location",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"RESTORE_WALLET": "Restore from backup"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings",
|
||||
"DARK_THEME": "Dark theme",
|
||||
"WHITE_THEME": "White theme",
|
||||
"GRAY_THEME": "Grey theme",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Lock app after:",
|
||||
"TIME1": "5 min",
|
||||
"TIME2": "15 min",
|
||||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
"NEW": "New password",
|
||||
"CONFIRM": "New password confirmation",
|
||||
"BUTTON": "Save"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"PASS_NOT_MATCH": "Old password not match",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
},
|
||||
"LAST_BUILD": "Current build: {{value}}",
|
||||
"APP_LOG_TITLE": "Log level:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Register an alias",
|
||||
"DETAILS": "Details",
|
||||
"LOCK": "Lock",
|
||||
"AVAILABLE_BALANCE": "Available <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Locked <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "What does that mean?",
|
||||
"TABS": {
|
||||
"SEND": "Send",
|
||||
"RECEIVE": "Receive",
|
||||
"HISTORY": "History",
|
||||
"CONTRACTS": "Contracts",
|
||||
"MESSAGES": "Messages",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_FILE_LOCATION": "Wallet file location",
|
||||
"LABEL_SEED_PHRASE": "Seed phrase",
|
||||
"SEED_PHRASE_HINT": "Click to reveal the seed phrase",
|
||||
"BUTTON_SAVE": "Save",
|
||||
"BUTTON_REMOVE": "Close wallet",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later."
|
||||
},
|
||||
"COST": "Alias fee {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"ONE_ALIAS": "You can create only one alias per wallet",
|
||||
"REQUEST_ADD_REG": "The alias will be assigned within 10 minutes"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "You do not have enough funds to change the comment to this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"COST": "Fee {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Edit"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transfer to",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "No wallet with this account exists",
|
||||
"ALIAS_EXISTS": "This account already has an alias",
|
||||
"NO_MONEY": "You do not have enough funds to transfer this alias"
|
||||
},
|
||||
"COST": "Transfer fee {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transfer",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"REQUEST_SEND_REG": "The alias will be transferred within 10 minutes"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Address",
|
||||
"AMOUNT": "Amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"HIDE": "Hide your wallet address from recipient",
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "Transaction sent",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"ALIAS_NOT_VALID": "Alias not valid",
|
||||
"AMOUNT_REQUIRED": "Amount is required",
|
||||
"AMOUNT_ZERO": "Amount is zero",
|
||||
"FEE_REQUIRED": "Fee is required",
|
||||
"FEE_MINIMUM": "Minimum fee: {{fee}}",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
"STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Locked till {{date}}",
|
||||
"SEND": "Sent",
|
||||
"RECEIVED": "Received",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"FEE": "Fee",
|
||||
"ADDRESS": "Address",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "Payment ID",
|
||||
"ID": "Transaction ID",
|
||||
"SIZE": "Transaction size",
|
||||
"SIZE_VALUE": "{{value}} bytes",
|
||||
"HEIGHT": "Height",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Comment"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "hidden",
|
||||
"UNDEFINED": "Undefined",
|
||||
"COMPLETE_BUYER": "Contract completed",
|
||||
"COMPLETE_SELLER": "Contract completed",
|
||||
"CREATE_ALIAS": "Fee for assigning alias",
|
||||
"UPDATE_ALIAS": "Fee for editing alias",
|
||||
"POW_REWARD": "POW reward",
|
||||
"POS_REWARD": "POS reward",
|
||||
"CREATE_CONTRACT": "Contract proposal",
|
||||
"PLEDGE_CONTRACT": "Contract deposit",
|
||||
"NULLIFY_CONTRACT": "Burn deposits",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Cancellation request",
|
||||
"CANCEL_CONTRACT": "Cancel and return deposits"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "No active contracts",
|
||||
"CONTRACTS": "Contracts",
|
||||
"PURCHASE": "Purchase",
|
||||
"SELL": "Sell",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"STATUS": "Status",
|
||||
"COMMENTS": "Comments",
|
||||
"PURCHASE_BUTTON": "New Purchase",
|
||||
"LISTING_BUTTON": "Create listing",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Less than an hour to respond",
|
||||
"REMAINING_ONE": "{{time}} hour remains",
|
||||
"REMAINING_MANY": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT": "{{time}} hours remain",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} hour remains",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_ONE_WAITING": "Waiting for {{time}} hour",
|
||||
"REMAINING_MANY_WAITING": "Waiting for {{time}} hours",
|
||||
"REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "New contract proposal",
|
||||
"IGNORED": "You ignored contract proposal",
|
||||
"ACCEPTED": "Contract started",
|
||||
"WAIT": "Waiting for contract confirmation",
|
||||
"WAITING_BUYER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "You ignored cancellation proposal",
|
||||
"EXPIRED": "Contract proposal has expired"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "Waiting for response",
|
||||
"IGNORED": "Seller ignored your contract proposal",
|
||||
"ACCEPTED": "Seller accepted your contract proposal",
|
||||
"WAIT": "Waiting for deposits confirmation",
|
||||
"WAITING_SELLER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"WAITING_CANCEL": "Waiting for contract cancellation",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract",
|
||||
"EXPIRED": "The contract proposal has expired"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Description",
|
||||
"SELLER": "Seller",
|
||||
"AMOUNT": "Amount",
|
||||
"YOUR_DEPOSIT": "Your deposit",
|
||||
"SELLER_DEPOSIT": "Seller deposit",
|
||||
"BUYER_DEPOSIT": "Buyer deposit",
|
||||
"SAME_AMOUNT": "Same amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"SEND_BUTTON": "Send",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Description required",
|
||||
"DESC_MAXIMUM": "Maximum field length reached",
|
||||
"SELLER_REQUIRED": "Address required",
|
||||
"SELLER_NOT_VALID": "Invalid address",
|
||||
"ALIAS_NOT_VALID": "Invalid alias",
|
||||
"AMOUNT_REQUIRED": "Amount required",
|
||||
"AMOUNT_ZERO": "Amount cannot be zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Deposit required",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Seller deposit required",
|
||||
"SELLER_SAME": "Use separate account",
|
||||
"COMMENT_MAXIMUM": "Maximum field length reached"
|
||||
},
|
||||
"PROGRESS_NEW": "New purchase",
|
||||
"PROGRESS_WAIT": "Awaiting reply",
|
||||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"WAITING_SELLER": "Waiting for response",
|
||||
"WAITING_BUYER": "Contract proposal received",
|
||||
"WAITING_CONFIRMATION": "Waiting for deposits confirmation",
|
||||
"WAITING_DELIVERY": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"IGNORED_BUYER": "Contract proposal ignored",
|
||||
"IGNORED_SELLER": "The seller ignored your contract proposal",
|
||||
"PROPOSAL_CANCEL_SELLER": "Cancellation request sent",
|
||||
"PROPOSAL_CANCEL_BUYER": "Cancellation request received",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract",
|
||||
"IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"EXPIRED": "Contract proposal expired",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contract started",
|
||||
"IGNORED_ACCEPT": "Contract proposal ignored",
|
||||
"BURN_PROPOSAL": "Deposits burned",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contract completed",
|
||||
"SEND_CANCEL_PROPOSAL": "Cancellation request sent",
|
||||
"IGNORED_CANCEL": "Contract cancellation proposal ignored",
|
||||
"DEALS_CANCELED_WAIT": "Cancellation in progress",
|
||||
"WAITING_TIME": "Response time",
|
||||
"NEED_MONEY": "Insufficient funds",
|
||||
"BUTTON_MAKE_PLEDGE": "Accept and make deposit",
|
||||
"BUTTON_IGNORE": "Ignore and hide offer",
|
||||
"BUTTON_NULLIFY": "Terminate and burn deposits",
|
||||
"BUTTON_RECEIVED": "Complete and release deposits",
|
||||
"BUTTON_CANCEL_BUYER": "Cancel and return deposits",
|
||||
"BUTTON_NOT_CANCEL": "Ignore request",
|
||||
"BUTTON_CANCEL_SELLER": "Confirm and return deposits",
|
||||
"HOUR": "hour",
|
||||
"HOURS": "hours",
|
||||
"CANCEL": "Cancel",
|
||||
"NULLIFY_QUESTION": "Are you sure you want to burn both deposits?",
|
||||
"BUTTON_NULLIFY_SHORT": "Burn",
|
||||
"WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Error",
|
||||
"SUCCESS": "Success",
|
||||
"INFO": "Information",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Send",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"TITLE": "Confirm transaction",
|
||||
"MESSAGE": {
|
||||
"SEND": "Send",
|
||||
"FROM": "From",
|
||||
"TO": "To",
|
||||
"COMMENT": "Comment"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Pending",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Time period:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 week",
|
||||
"WEEK2": "2 week",
|
||||
"MONTH1": "1 month",
|
||||
"MONTH3": "3 month",
|
||||
"MONTH6": "6 month",
|
||||
"YEAR": "1 year",
|
||||
"ALL": "All"
|
||||
},
|
||||
"TITLE_GROUP": "Group:",
|
||||
"GROUP": {
|
||||
"DAY": "day",
|
||||
"WEEK": "week",
|
||||
"MONTH": "month"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Contact list",
|
||||
"IMPORT_EXPORT": "Import or export contacts",
|
||||
"IMPORT": "Import",
|
||||
"EXPORT": "Export",
|
||||
"ADD": "Add/edit contact",
|
||||
"SEND": "Send",
|
||||
"SEND_FROM": "Send from",
|
||||
"SEND_TO": "To",
|
||||
"OPEN_ADD_WALLET": "Open/Add wallet",
|
||||
"COPY": "- Copy",
|
||||
"TABLE": {
|
||||
"NAME": "Name",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes",
|
||||
"EMPTY": "Contact list is empty"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Name",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUBLICATED": "Name is dublicated",
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"SET_MASTER_PASSWORD": "Set master password",
|
||||
"ADDRESS_DUBLICATED": "Address is dublicated",
|
||||
"MAX_LENGTH": "Maximum notes length reached",
|
||||
"NAME_LENGTH": "The name must be 4-25 characters long"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Send",
|
||||
"EDIT": "Edit",
|
||||
"DELETE": "Delete",
|
||||
"ADD": "Add contact",
|
||||
"ADD_EDIT": "Add/Save",
|
||||
"GO_TO_WALLET": "Go to wallet",
|
||||
"IMPORT_EXPORT": "Import/export"
|
||||
},
|
||||
"SUCCESS_SENT": "Contact added",
|
||||
"SUCCESS_SAVE": "Contact is edited",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Error is occured while reading file!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Not enough money",
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error: core is busy",
|
||||
"DAEMON_BUSY": "Internal error: daemon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with",
|
||||
"TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Transaction not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.",
|
||||
"TX_TYPE_NORMAL": "Error. The payment from the wallet",
|
||||
"TX_TYPE_NORMAL_TO": "to",
|
||||
"TX_TYPE_NORMAL_END": "was not completed.",
|
||||
"TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Please try again.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe",
|
||||
"TX_TYPE_COIN_BASE": "Error. The payment was not completed."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copy",
|
||||
"PASTE": "paste",
|
||||
"SELECT": "select all"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Quit",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Payment received",
|
||||
"MINED": "Mined",
|
||||
"LOCKED": "Blocked",
|
||||
"IS_MINIMIZE": "Zano application is minimized to the system tray",
|
||||
"RESTORE": "You can recover it by clicking or using the context menu",
|
||||
"TRAY_MENU_SHOW": "Resize",
|
||||
"TRAY_MENU_MINIMIZE": "Minimize"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Setup master password",
|
||||
"SETUP_CONFIRM_PASS": "Confirm the password",
|
||||
"MASTER_PASS": "Master password",
|
||||
"BUTTON_NEXT": "Next",
|
||||
"BUTTON_SKIP": "Skip",
|
||||
"BUTTON_RESET": "Reset",
|
||||
"INCORRECT_PASSWORD": "Invalid password",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"CONFIRM_REQUIRED": "Confirmation is required",
|
||||
"MISMATCH": "Mismatch"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Go back"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"SAVE_PHRASE": "Save your seed phrase",
|
||||
"OPEN_WALLET": "Open existing wallet",
|
||||
"RESTORE_WALLET": "Restore from backup",
|
||||
"WALLET_DETAILS": "Wallet details",
|
||||
"ASSIGN_ALIAS": "Assign alias",
|
||||
"EDIT_ALIAS": "Edit alias",
|
||||
"TRANSFER_ALIAS": "Transfer alias",
|
||||
"CONTRACTS": "Contracts",
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"OLD_PURCHASE": "Purchase"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Wallets",
|
||||
"ADD_NEW": "+ Add",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "New offers/Messages",
|
||||
"SYNCING": "Syncing wallet"
|
||||
},
|
||||
"CONTACTS": "Contacts",
|
||||
"SETTINGS": "Settings",
|
||||
"LOG_OUT": "Log out",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "System error",
|
||||
"COMPLETE": "Completion",
|
||||
"SYNCING": "Syncing blockchain",
|
||||
"LOADING": "Loading blockchain data"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Update available",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Get new update.</span><br><span>Update is recommended!</span>",
|
||||
"IMPORTANT": "Update available",
|
||||
"IMPORTANT_HINT": "Important update!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Get new update.</span><br><span>Important update!</span>",
|
||||
"CRITICAL": "Update available",
|
||||
"CRITICAL_HINT": "Critical update!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Critical update available.</span><i class=\"icon\"></i><span>Update strongly recommended!</span>",
|
||||
"TIME": "System time differs from network",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Wrong system time!</span><br><span>Check and repair your system time.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Create or open the wallet to start using Zano",
|
||||
"BUTTON_NEW_WALLET": "Create new wallet",
|
||||
"BUTTON_OPEN_WALLET": "Open existing wallet",
|
||||
"BUTTON_RESTORE_BACKUP": "Restore from backup",
|
||||
"HELP": "How to create wallet?",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Set wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"TITLE_SAVE": "Save the wallet file.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open",
|
||||
"FILE_NOT_FOUND1": "Wallet file not found",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open wallet\" button.",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Type wallet password",
|
||||
"LABEL": "Password to this wallet",
|
||||
"OPEN": "Open wallet",
|
||||
"SKIP": "Skip",
|
||||
"NOT_FOUND": "Not found"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_PHRASE_KEY": "Seed phrase / tracking seed",
|
||||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match",
|
||||
"KEY_REQUIRED": "Key is required",
|
||||
"KEY_NOT_VALID": "Key not valid"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Create wallet",
|
||||
"BUTTON_COPY": "Copy"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"SELECT_LOCATION": "Select wallet location",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"RESTORE_WALLET": "Restore from backup"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings",
|
||||
"DARK_THEME": "Dark theme",
|
||||
"WHITE_THEME": "White theme",
|
||||
"GRAY_THEME": "Grey theme",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Lock app after:",
|
||||
"TIME1": "5 min",
|
||||
"TIME2": "15 min",
|
||||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
"NEW": "New password",
|
||||
"CONFIRM": "New password confirmation",
|
||||
"BUTTON": "Save"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"PASS_NOT_MATCH": "Old password not match",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
},
|
||||
"LAST_BUILD": "Current build: {{value}}",
|
||||
"APP_LOG_TITLE": "Log level:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Register an alias",
|
||||
"DETAILS": "Details",
|
||||
"LOCK": "Lock",
|
||||
"AVAILABLE_BALANCE": "Available <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Locked <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "What does that mean?",
|
||||
"TABS": {
|
||||
"SEND": "Send",
|
||||
"RECEIVE": "Receive",
|
||||
"HISTORY": "History",
|
||||
"CONTRACTS": "Contracts",
|
||||
"MESSAGES": "Messages",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_FILE_LOCATION": "Wallet file location",
|
||||
"LABEL_SEED_PHRASE": "Seed phrase",
|
||||
"SEED_PHRASE_HINT": "Click to reveal the seed phrase",
|
||||
"BUTTON_SAVE": "Save",
|
||||
"BUTTON_REMOVE": "Close wallet",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later."
|
||||
},
|
||||
"COST": "Alias fee {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"ONE_ALIAS": "You can create only one alias per wallet",
|
||||
"REQUEST_ADD_REG": "The alias will be assigned within 10 minutes"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "You do not have enough funds to change the comment to this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"COST": "Fee {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Edit"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transfer to",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "No wallet with this account exists",
|
||||
"ALIAS_EXISTS": "This account already has an alias",
|
||||
"NO_MONEY": "You do not have enough funds to transfer this alias"
|
||||
},
|
||||
"COST": "Transfer fee {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transfer",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"REQUEST_SEND_REG": "The alias will be transferred within 10 minutes"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Address",
|
||||
"AMOUNT": "Amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"HIDE": "Hide your wallet address from recipient",
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "Transaction sent",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"ALIAS_NOT_VALID": "Alias not valid",
|
||||
"AMOUNT_REQUIRED": "Amount is required",
|
||||
"AMOUNT_ZERO": "Amount is zero",
|
||||
"FEE_REQUIRED": "Fee is required",
|
||||
"FEE_MINIMUM": "Minimum fee: {{fee}}",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
"STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Locked till {{date}}",
|
||||
"SEND": "Sent",
|
||||
"RECEIVED": "Received",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"FEE": "Fee",
|
||||
"ADDRESS": "Address",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "Payment ID",
|
||||
"ID": "Transaction ID",
|
||||
"SIZE": "Transaction size",
|
||||
"SIZE_VALUE": "{{value}} bytes",
|
||||
"HEIGHT": "Height",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Comment"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "hidden",
|
||||
"UNDEFINED": "Undefined",
|
||||
"COMPLETE_BUYER": "Contract completed",
|
||||
"COMPLETE_SELLER": "Contract completed",
|
||||
"CREATE_ALIAS": "Fee for assigning alias",
|
||||
"UPDATE_ALIAS": "Fee for editing alias",
|
||||
"POW_REWARD": "POW reward",
|
||||
"POS_REWARD": "POS reward",
|
||||
"CREATE_CONTRACT": "Contract proposal",
|
||||
"PLEDGE_CONTRACT": "Contract deposit",
|
||||
"NULLIFY_CONTRACT": "Burn deposits",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Cancellation request",
|
||||
"CANCEL_CONTRACT": "Cancel and return deposits"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "No active contracts",
|
||||
"CONTRACTS": "Contracts",
|
||||
"PURCHASE": "Purchase",
|
||||
"SELL": "Sell",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"STATUS": "Status",
|
||||
"COMMENTS": "Comments",
|
||||
"PURCHASE_BUTTON": "New Purchase",
|
||||
"LISTING_BUTTON": "Create listing",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Less than an hour to respond",
|
||||
"REMAINING_ONE": "{{time}} hour remains",
|
||||
"REMAINING_MANY": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT": "{{time}} hours remain",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} hour remains",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_ONE_WAITING": "Waiting for {{time}} hour",
|
||||
"REMAINING_MANY_WAITING": "Waiting for {{time}} hours",
|
||||
"REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "New contract proposal",
|
||||
"IGNORED": "You ignored contract proposal",
|
||||
"ACCEPTED": "Contract started",
|
||||
"WAIT": "Waiting for contract confirmation",
|
||||
"WAITING_BUYER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "You ignored cancellation proposal",
|
||||
"EXPIRED": "Contract proposal has expired"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "Waiting for response",
|
||||
"IGNORED": "Seller ignored your contract proposal",
|
||||
"ACCEPTED": "Seller accepted your contract proposal",
|
||||
"WAIT": "Waiting for deposits confirmation",
|
||||
"WAITING_SELLER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"WAITING_CANCEL": "Waiting for contract cancellation",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract",
|
||||
"EXPIRED": "The contract proposal has expired"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Description",
|
||||
"SELLER": "Seller",
|
||||
"AMOUNT": "Amount",
|
||||
"YOUR_DEPOSIT": "Your deposit",
|
||||
"SELLER_DEPOSIT": "Seller deposit",
|
||||
"BUYER_DEPOSIT": "Buyer deposit",
|
||||
"SAME_AMOUNT": "Same amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"SEND_BUTTON": "Send",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Description required",
|
||||
"DESC_MAXIMUM": "Maximum field length reached",
|
||||
"SELLER_REQUIRED": "Address required",
|
||||
"SELLER_NOT_VALID": "Invalid address",
|
||||
"ALIAS_NOT_VALID": "Invalid alias",
|
||||
"AMOUNT_REQUIRED": "Amount required",
|
||||
"AMOUNT_ZERO": "Amount cannot be zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Deposit required",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Seller deposit required",
|
||||
"SELLER_SAME": "Use separate account",
|
||||
"COMMENT_MAXIMUM": "Maximum field length reached"
|
||||
},
|
||||
"PROGRESS_NEW": "New purchase",
|
||||
"PROGRESS_WAIT": "Awaiting reply",
|
||||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"WAITING_SELLER": "Waiting for response",
|
||||
"WAITING_BUYER": "Contract proposal received",
|
||||
"WAITING_CONFIRMATION": "Waiting for deposits confirmation",
|
||||
"WAITING_DELIVERY": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"IGNORED_BUYER": "Contract proposal ignored",
|
||||
"IGNORED_SELLER": "The seller ignored your contract proposal",
|
||||
"PROPOSAL_CANCEL_SELLER": "Cancellation request sent",
|
||||
"PROPOSAL_CANCEL_BUYER": "Cancellation request received",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract",
|
||||
"IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"EXPIRED": "Contract proposal expired",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contract started",
|
||||
"IGNORED_ACCEPT": "Contract proposal ignored",
|
||||
"BURN_PROPOSAL": "Deposits burned",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contract completed",
|
||||
"SEND_CANCEL_PROPOSAL": "Cancellation request sent",
|
||||
"IGNORED_CANCEL": "Contract cancellation proposal ignored",
|
||||
"DEALS_CANCELED_WAIT": "Cancellation in progress",
|
||||
"WAITING_TIME": "Response time",
|
||||
"NEED_MONEY": "Insufficient funds",
|
||||
"BUTTON_MAKE_PLEDGE": "Accept and make deposit",
|
||||
"BUTTON_IGNORE": "Ignore and hide offer",
|
||||
"BUTTON_NULLIFY": "Terminate and burn deposits",
|
||||
"BUTTON_RECEIVED": "Complete and release deposits",
|
||||
"BUTTON_CANCEL_BUYER": "Cancel and return deposits",
|
||||
"BUTTON_NOT_CANCEL": "Ignore request",
|
||||
"BUTTON_CANCEL_SELLER": "Confirm and return deposits",
|
||||
"HOUR": "hour",
|
||||
"HOURS": "hours",
|
||||
"CANCEL": "Cancel",
|
||||
"NULLIFY_QUESTION": "Are you sure you want to burn both deposits?",
|
||||
"BUTTON_NULLIFY_SHORT": "Burn",
|
||||
"WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Error",
|
||||
"SUCCESS": "Success",
|
||||
"INFO": "Information",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Send",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"TITLE": "Confirm transaction",
|
||||
"MESSAGE": {
|
||||
"SEND": "Send",
|
||||
"FROM": "From",
|
||||
"TO": "To",
|
||||
"COMMENT": "Comment"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Pending",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Time period:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 week",
|
||||
"WEEK2": "2 week",
|
||||
"MONTH1": "1 month",
|
||||
"MONTH3": "3 month",
|
||||
"MONTH6": "6 month",
|
||||
"YEAR": "1 year",
|
||||
"ALL": "All"
|
||||
},
|
||||
"TITLE_GROUP": "Group:",
|
||||
"GROUP": {
|
||||
"DAY": "day",
|
||||
"WEEK": "week",
|
||||
"MONTH": "month"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Contact list",
|
||||
"IMPORT_EXPORT": "Import or export contacts",
|
||||
"IMPORT": "Import",
|
||||
"EXPORT": "Export",
|
||||
"ADD": "Add/edit contact",
|
||||
"SEND": "Send",
|
||||
"SEND_FROM": "Send from",
|
||||
"SEND_TO": "To",
|
||||
"OPEN_ADD_WALLET": "Open/Add wallet",
|
||||
"COPY": "- Copy",
|
||||
"TABLE": {
|
||||
"NAME": "Name",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes",
|
||||
"EMPTY": "Contact list is empty"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Name",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUBLICATED": "Name is dublicated",
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"SET_MASTER_PASSWORD": "Set master password",
|
||||
"ADDRESS_DUBLICATED": "Address is dublicated",
|
||||
"MAX_LENGTH": "Maximum notes length reached",
|
||||
"NAME_LENGTH": "The name must be 4-25 characters long"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Send",
|
||||
"EDIT": "Edit",
|
||||
"DELETE": "Delete",
|
||||
"ADD": "Add contact",
|
||||
"ADD_EDIT": "Add/Save",
|
||||
"GO_TO_WALLET": "Go to wallet",
|
||||
"IMPORT_EXPORT": "Import/export"
|
||||
},
|
||||
"SUCCESS_SENT": "Contact added",
|
||||
"SUCCESS_SAVE": "Contact is edited",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Error is occured while reading file!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Not enough money",
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error: core is busy",
|
||||
"DAEMON_BUSY": "Internal error: daemon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with",
|
||||
"TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Transaction not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.",
|
||||
"TX_TYPE_NORMAL": "Error. The payment from the wallet",
|
||||
"TX_TYPE_NORMAL_TO": "to",
|
||||
"TX_TYPE_NORMAL_END": "was not completed.",
|
||||
"TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Please try again.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe",
|
||||
"TX_TYPE_COIN_BASE": "Error. The payment was not completed."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copy",
|
||||
"PASTE": "paste",
|
||||
"SELECT": "select all"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Quit",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Payment received",
|
||||
"MINED": "Mined",
|
||||
"LOCKED": "Blocked",
|
||||
"IS_MINIMIZE": "Zano application is minimized to the system tray",
|
||||
"RESTORE": "You can recover it by clicking or using the context menu",
|
||||
"TRAY_MENU_SHOW": "Resize",
|
||||
"TRAY_MENU_MINIMIZE": "Minimize"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Setup master password",
|
||||
"SETUP_CONFIRM_PASS": "Confirm the password",
|
||||
"MASTER_PASS": "Master password",
|
||||
"BUTTON_NEXT": "Next",
|
||||
"BUTTON_SKIP": "Skip",
|
||||
"BUTTON_RESET": "Reset",
|
||||
"INCORRECT_PASSWORD": "Invalid password",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"CONFIRM_REQUIRED": "Confirmation is required",
|
||||
"MISMATCH": "Mismatch"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Go back"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"SAVE_PHRASE": "Save your seed phrase",
|
||||
"OPEN_WALLET": "Open existing wallet",
|
||||
"RESTORE_WALLET": "Restore from backup",
|
||||
"WALLET_DETAILS": "Wallet details",
|
||||
"ASSIGN_ALIAS": "Assign alias",
|
||||
"EDIT_ALIAS": "Edit alias",
|
||||
"TRANSFER_ALIAS": "Transfer alias",
|
||||
"CONTRACTS": "Contracts",
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"OLD_PURCHASE": "Purchase"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Wallets",
|
||||
"ADD_NEW": "+ Add",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "New offers/Messages",
|
||||
"SYNCING": "Syncing wallet"
|
||||
},
|
||||
"CONTACTS": "Contacts",
|
||||
"SETTINGS": "Settings",
|
||||
"LOG_OUT": "Log out",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "System error",
|
||||
"COMPLETE": "Completion",
|
||||
"SYNCING": "Syncing blockchain",
|
||||
"LOADING": "Loading blockchain data"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Update available",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Get new update.</span><br><span>Update is recommended!</span>",
|
||||
"IMPORTANT": "Update available",
|
||||
"IMPORTANT_HINT": "Important update!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Get new update.</span><br><span>Important update!</span>",
|
||||
"CRITICAL": "Update available",
|
||||
"CRITICAL_HINT": "Critical update!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Critical update available.</span><i class=\"icon\"></i><span>Update strongly recommended!</span>",
|
||||
"TIME": "System time differs from network",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Wrong system time!</span><br><span>Check and repair your system time.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Create or open the wallet to start using Zano",
|
||||
"BUTTON_NEW_WALLET": "Create new wallet",
|
||||
"BUTTON_OPEN_WALLET": "Open existing wallet",
|
||||
"BUTTON_RESTORE_BACKUP": "Restore from backup",
|
||||
"HELP": "How to create wallet?",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Set wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"TITLE_SAVE": "Save the wallet file.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open",
|
||||
"FILE_NOT_FOUND1": "Wallet file not found",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open wallet\" button.",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Type wallet password",
|
||||
"LABEL": "Password to this wallet",
|
||||
"OPEN": "Open wallet",
|
||||
"SKIP": "Skip",
|
||||
"NOT_FOUND": "Not found"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_PHRASE_KEY": "Seed phrase / tracking seed",
|
||||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match",
|
||||
"KEY_REQUIRED": "Key is required",
|
||||
"KEY_NOT_VALID": "Key not valid"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Create wallet",
|
||||
"BUTTON_COPY": "Copy"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"SELECT_LOCATION": "Select wallet location",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"RESTORE_WALLET": "Restore from backup"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings",
|
||||
"DARK_THEME": "Dark theme",
|
||||
"WHITE_THEME": "White theme",
|
||||
"GRAY_THEME": "Grey theme",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Lock app after:",
|
||||
"TIME1": "5 min",
|
||||
"TIME2": "15 min",
|
||||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
"NEW": "New password",
|
||||
"CONFIRM": "New password confirmation",
|
||||
"BUTTON": "Save"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"PASS_NOT_MATCH": "Old password not match",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
},
|
||||
"LAST_BUILD": "Current build: {{value}}",
|
||||
"APP_LOG_TITLE": "Log level:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Register an alias",
|
||||
"DETAILS": "Details",
|
||||
"LOCK": "Lock",
|
||||
"AVAILABLE_BALANCE": "Available <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Locked <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "What does that mean?",
|
||||
"TABS": {
|
||||
"SEND": "Send",
|
||||
"RECEIVE": "Receive",
|
||||
"HISTORY": "History",
|
||||
"CONTRACTS": "Contracts",
|
||||
"MESSAGES": "Messages",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_FILE_LOCATION": "Wallet file location",
|
||||
"LABEL_SEED_PHRASE": "Seed phrase",
|
||||
"SEED_PHRASE_HINT": "Click to reveal the seed phrase",
|
||||
"BUTTON_SAVE": "Save",
|
||||
"BUTTON_REMOVE": "Close wallet",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later."
|
||||
},
|
||||
"COST": "Alias fee {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"ONE_ALIAS": "You can create only one alias per wallet",
|
||||
"REQUEST_ADD_REG": "The alias will be assigned within 10 minutes"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "You do not have enough funds to change the comment to this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"COST": "Fee {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Edit"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transfer to",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "No wallet with this account exists",
|
||||
"ALIAS_EXISTS": "This account already has an alias",
|
||||
"NO_MONEY": "You do not have enough funds to transfer this alias"
|
||||
},
|
||||
"COST": "Transfer fee {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transfer",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"REQUEST_SEND_REG": "The alias will be transferred within 10 minutes"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Address",
|
||||
"AMOUNT": "Amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"HIDE": "Hide your wallet address from recipient",
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "Transaction sent",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"ALIAS_NOT_VALID": "Alias not valid",
|
||||
"AMOUNT_REQUIRED": "Amount is required",
|
||||
"AMOUNT_ZERO": "Amount is zero",
|
||||
"FEE_REQUIRED": "Fee is required",
|
||||
"FEE_MINIMUM": "Minimum fee: {{fee}}",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
"STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Locked till {{date}}",
|
||||
"SEND": "Sent",
|
||||
"RECEIVED": "Received",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"FEE": "Fee",
|
||||
"ADDRESS": "Address",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "Payment ID",
|
||||
"ID": "Transaction ID",
|
||||
"SIZE": "Transaction size",
|
||||
"SIZE_VALUE": "{{value}} bytes",
|
||||
"HEIGHT": "Height",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Comment"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "hidden",
|
||||
"UNDEFINED": "Undefined",
|
||||
"COMPLETE_BUYER": "Contract completed",
|
||||
"COMPLETE_SELLER": "Contract completed",
|
||||
"CREATE_ALIAS": "Fee for assigning alias",
|
||||
"UPDATE_ALIAS": "Fee for editing alias",
|
||||
"POW_REWARD": "POW reward",
|
||||
"POS_REWARD": "POS reward",
|
||||
"CREATE_CONTRACT": "Contract proposal",
|
||||
"PLEDGE_CONTRACT": "Contract deposit",
|
||||
"NULLIFY_CONTRACT": "Burn deposits",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Cancellation request",
|
||||
"CANCEL_CONTRACT": "Cancel and return deposits"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "No active contracts",
|
||||
"CONTRACTS": "Contracts",
|
||||
"PURCHASE": "Purchase",
|
||||
"SELL": "Sell",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"STATUS": "Status",
|
||||
"COMMENTS": "Comments",
|
||||
"PURCHASE_BUTTON": "New Purchase",
|
||||
"LISTING_BUTTON": "Create listing",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Less than an hour to respond",
|
||||
"REMAINING_ONE": "{{time}} hour remains",
|
||||
"REMAINING_MANY": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT": "{{time}} hours remain",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} hour remains",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_ONE_WAITING": "Waiting for {{time}} hour",
|
||||
"REMAINING_MANY_WAITING": "Waiting for {{time}} hours",
|
||||
"REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "New contract proposal",
|
||||
"IGNORED": "You ignored contract proposal",
|
||||
"ACCEPTED": "Contract started",
|
||||
"WAIT": "Waiting for contract confirmation",
|
||||
"WAITING_BUYER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "You ignored cancellation proposal",
|
||||
"EXPIRED": "Contract proposal has expired"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "Waiting for response",
|
||||
"IGNORED": "Seller ignored your contract proposal",
|
||||
"ACCEPTED": "Seller accepted your contract proposal",
|
||||
"WAIT": "Waiting for deposits confirmation",
|
||||
"WAITING_SELLER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"WAITING_CANCEL": "Waiting for contract cancellation",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract",
|
||||
"EXPIRED": "The contract proposal has expired"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Description",
|
||||
"SELLER": "Seller",
|
||||
"AMOUNT": "Amount",
|
||||
"YOUR_DEPOSIT": "Your deposit",
|
||||
"SELLER_DEPOSIT": "Seller deposit",
|
||||
"BUYER_DEPOSIT": "Buyer deposit",
|
||||
"SAME_AMOUNT": "Same amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"SEND_BUTTON": "Send",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Description required",
|
||||
"DESC_MAXIMUM": "Maximum field length reached",
|
||||
"SELLER_REQUIRED": "Address required",
|
||||
"SELLER_NOT_VALID": "Invalid address",
|
||||
"ALIAS_NOT_VALID": "Invalid alias",
|
||||
"AMOUNT_REQUIRED": "Amount required",
|
||||
"AMOUNT_ZERO": "Amount cannot be zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Deposit required",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Seller deposit required",
|
||||
"SELLER_SAME": "Use separate account",
|
||||
"COMMENT_MAXIMUM": "Maximum field length reached"
|
||||
},
|
||||
"PROGRESS_NEW": "New purchase",
|
||||
"PROGRESS_WAIT": "Awaiting reply",
|
||||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"WAITING_SELLER": "Waiting for response",
|
||||
"WAITING_BUYER": "Contract proposal received",
|
||||
"WAITING_CONFIRMATION": "Waiting for deposits confirmation",
|
||||
"WAITING_DELIVERY": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"IGNORED_BUYER": "Contract proposal ignored",
|
||||
"IGNORED_SELLER": "The seller ignored your contract proposal",
|
||||
"PROPOSAL_CANCEL_SELLER": "Cancellation request sent",
|
||||
"PROPOSAL_CANCEL_BUYER": "Cancellation request received",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract",
|
||||
"IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"EXPIRED": "Contract proposal expired",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contract started",
|
||||
"IGNORED_ACCEPT": "Contract proposal ignored",
|
||||
"BURN_PROPOSAL": "Deposits burned",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contract completed",
|
||||
"SEND_CANCEL_PROPOSAL": "Cancellation request sent",
|
||||
"IGNORED_CANCEL": "Contract cancellation proposal ignored",
|
||||
"DEALS_CANCELED_WAIT": "Cancellation in progress",
|
||||
"WAITING_TIME": "Response time",
|
||||
"NEED_MONEY": "Insufficient funds",
|
||||
"BUTTON_MAKE_PLEDGE": "Accept and make deposit",
|
||||
"BUTTON_IGNORE": "Ignore and hide offer",
|
||||
"BUTTON_NULLIFY": "Terminate and burn deposits",
|
||||
"BUTTON_RECEIVED": "Complete and release deposits",
|
||||
"BUTTON_CANCEL_BUYER": "Cancel and return deposits",
|
||||
"BUTTON_NOT_CANCEL": "Ignore request",
|
||||
"BUTTON_CANCEL_SELLER": "Confirm and return deposits",
|
||||
"HOUR": "hour",
|
||||
"HOURS": "hours",
|
||||
"CANCEL": "Cancel",
|
||||
"NULLIFY_QUESTION": "Are you sure you want to burn both deposits?",
|
||||
"BUTTON_NULLIFY_SHORT": "Burn",
|
||||
"WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Error",
|
||||
"SUCCESS": "Success",
|
||||
"INFO": "Information",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Send",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"TITLE": "Confirm transaction",
|
||||
"MESSAGE": {
|
||||
"SEND": "Send",
|
||||
"FROM": "From",
|
||||
"TO": "To",
|
||||
"COMMENT": "Comment"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Pending",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Time period:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 week",
|
||||
"WEEK2": "2 week",
|
||||
"MONTH1": "1 month",
|
||||
"MONTH3": "3 month",
|
||||
"MONTH6": "6 month",
|
||||
"YEAR": "1 year",
|
||||
"ALL": "All"
|
||||
},
|
||||
"TITLE_GROUP": "Group:",
|
||||
"GROUP": {
|
||||
"DAY": "day",
|
||||
"WEEK": "week",
|
||||
"MONTH": "month"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Contact list",
|
||||
"IMPORT_EXPORT": "Import or export contacts",
|
||||
"IMPORT": "Import",
|
||||
"EXPORT": "Export",
|
||||
"ADD": "Add/edit contact",
|
||||
"SEND": "Send",
|
||||
"SEND_FROM": "Send from",
|
||||
"SEND_TO": "To",
|
||||
"OPEN_ADD_WALLET": "Open/Add wallet",
|
||||
"COPY": "- Copy",
|
||||
"TABLE": {
|
||||
"NAME": "Name",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes",
|
||||
"EMPTY": "Contact list is empty"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Name",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUBLICATED": "Name is dublicated",
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"SET_MASTER_PASSWORD": "Set master password",
|
||||
"ADDRESS_DUBLICATED": "Address is dublicated",
|
||||
"MAX_LENGTH": "Maximum notes length reached",
|
||||
"NAME_LENGTH": "The name must be 4-25 characters long"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Send",
|
||||
"EDIT": "Edit",
|
||||
"DELETE": "Delete",
|
||||
"ADD": "Add contact",
|
||||
"ADD_EDIT": "Add/Save",
|
||||
"GO_TO_WALLET": "Go to wallet",
|
||||
"IMPORT_EXPORT": "Import/export"
|
||||
},
|
||||
"SUCCESS_SENT": "Contact added",
|
||||
"SUCCESS_SAVE": "Contact is edited",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Error is occured while reading file!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Not enough money",
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error: core is busy",
|
||||
"DAEMON_BUSY": "Internal error: daemon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with",
|
||||
"TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Transaction not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.",
|
||||
"TX_TYPE_NORMAL": "Error. The payment from the wallet",
|
||||
"TX_TYPE_NORMAL_TO": "to",
|
||||
"TX_TYPE_NORMAL_END": "was not completed.",
|
||||
"TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Please try again.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe",
|
||||
"TX_TYPE_COIN_BASE": "Error. The payment was not completed."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copy",
|
||||
"PASTE": "paste",
|
||||
"SELECT": "select all"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Quit",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Payment received",
|
||||
"MINED": "Mined",
|
||||
"LOCKED": "Blocked",
|
||||
"IS_MINIMIZE": "Zano application is minimized to the system tray",
|
||||
"RESTORE": "You can recover it by clicking or using the context menu",
|
||||
"TRAY_MENU_SHOW": "Resize",
|
||||
"TRAY_MENU_MINIMIZE": "Minimize"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Setup master password",
|
||||
"SETUP_CONFIRM_PASS": "Confirm the password",
|
||||
"MASTER_PASS": "Master password",
|
||||
"BUTTON_NEXT": "Next",
|
||||
"BUTTON_SKIP": "Skip",
|
||||
"BUTTON_RESET": "Reset",
|
||||
"INCORRECT_PASSWORD": "Invalid password",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"CONFIRM_REQUIRED": "Confirmation is required",
|
||||
"MISMATCH": "Mismatch"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Go back"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"SAVE_PHRASE": "Save your seed phrase",
|
||||
"OPEN_WALLET": "Open existing wallet",
|
||||
"RESTORE_WALLET": "Restore from backup",
|
||||
"WALLET_DETAILS": "Wallet details",
|
||||
"ASSIGN_ALIAS": "Assign alias",
|
||||
"EDIT_ALIAS": "Edit alias",
|
||||
"TRANSFER_ALIAS": "Transfer alias",
|
||||
"CONTRACTS": "Contracts",
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"OLD_PURCHASE": "Purchase"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Wallets",
|
||||
"ADD_NEW": "+ Add",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "New offers/Messages",
|
||||
"SYNCING": "Syncing wallet"
|
||||
},
|
||||
"CONTACTS": "Contacts",
|
||||
"SETTINGS": "Settings",
|
||||
"LOG_OUT": "Log out",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "System error",
|
||||
"COMPLETE": "Completion",
|
||||
"SYNCING": "Syncing blockchain",
|
||||
"LOADING": "Loading blockchain data"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Update available",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Get new update.</span><br><span>Update is recommended!</span>",
|
||||
"IMPORTANT": "Update available",
|
||||
"IMPORTANT_HINT": "Important update!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Get new update.</span><br><span>Important update!</span>",
|
||||
"CRITICAL": "Update available",
|
||||
"CRITICAL_HINT": "Critical update!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Critical update available.</span><i class=\"icon\"></i><span>Update strongly recommended!</span>",
|
||||
"TIME": "System time differs from network",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Wrong system time!</span><br><span>Check and repair your system time.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Create or open the wallet to start using Zano",
|
||||
"BUTTON_NEW_WALLET": "Create new wallet",
|
||||
"BUTTON_OPEN_WALLET": "Open existing wallet",
|
||||
"BUTTON_RESTORE_BACKUP": "Restore from backup",
|
||||
"HELP": "How to create wallet?",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Set wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"TITLE_SAVE": "Save the wallet file.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open",
|
||||
"FILE_NOT_FOUND1": "Wallet file not found",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open wallet\" button.",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Type wallet password",
|
||||
"LABEL": "Password to this wallet",
|
||||
"OPEN": "Open wallet",
|
||||
"SKIP": "Skip",
|
||||
"NOT_FOUND": "Not found"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_PHRASE_KEY": "Seed phrase / tracking seed",
|
||||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match",
|
||||
"KEY_REQUIRED": "Key is required",
|
||||
"KEY_NOT_VALID": "Key not valid"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Create wallet",
|
||||
"BUTTON_COPY": "Copy"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"SELECT_LOCATION": "Select wallet location",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"RESTORE_WALLET": "Restore from backup"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings",
|
||||
"DARK_THEME": "Dark theme",
|
||||
"WHITE_THEME": "White theme",
|
||||
"GRAY_THEME": "Grey theme",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Lock app after:",
|
||||
"TIME1": "5 min",
|
||||
"TIME2": "15 min",
|
||||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
"NEW": "New password",
|
||||
"CONFIRM": "New password confirmation",
|
||||
"BUTTON": "Save"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"PASS_NOT_MATCH": "Old password not match",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
},
|
||||
"LAST_BUILD": "Current build: {{value}}",
|
||||
"APP_LOG_TITLE": "Log level:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Register an alias",
|
||||
"DETAILS": "Details",
|
||||
"LOCK": "Lock",
|
||||
"AVAILABLE_BALANCE": "Available <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Locked <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "What does that mean?",
|
||||
"TABS": {
|
||||
"SEND": "Send",
|
||||
"RECEIVE": "Receive",
|
||||
"HISTORY": "History",
|
||||
"CONTRACTS": "Contracts",
|
||||
"MESSAGES": "Messages",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_FILE_LOCATION": "Wallet file location",
|
||||
"LABEL_SEED_PHRASE": "Seed phrase",
|
||||
"SEED_PHRASE_HINT": "Click to reveal the seed phrase",
|
||||
"BUTTON_SAVE": "Save",
|
||||
"BUTTON_REMOVE": "Close wallet",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later."
|
||||
},
|
||||
"COST": "Alias fee {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"ONE_ALIAS": "You can create only one alias per wallet",
|
||||
"REQUEST_ADD_REG": "The alias will be assigned within 10 minutes"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "You do not have enough funds to change the comment to this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"COST": "Fee {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Edit"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transfer to",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "No wallet with this account exists",
|
||||
"ALIAS_EXISTS": "This account already has an alias",
|
||||
"NO_MONEY": "You do not have enough funds to transfer this alias"
|
||||
},
|
||||
"COST": "Transfer fee {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transfer",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"REQUEST_SEND_REG": "The alias will be transferred within 10 minutes"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Address",
|
||||
"AMOUNT": "Amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"HIDE": "Hide your wallet address from recipient",
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "Transaction sent",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"ALIAS_NOT_VALID": "Alias not valid",
|
||||
"AMOUNT_REQUIRED": "Amount is required",
|
||||
"AMOUNT_ZERO": "Amount is zero",
|
||||
"FEE_REQUIRED": "Fee is required",
|
||||
"FEE_MINIMUM": "Minimum fee: {{fee}}",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
"STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Locked till {{date}}",
|
||||
"SEND": "Sent",
|
||||
"RECEIVED": "Received",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"FEE": "Fee",
|
||||
"ADDRESS": "Address",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "Payment ID",
|
||||
"ID": "Transaction ID",
|
||||
"SIZE": "Transaction size",
|
||||
"SIZE_VALUE": "{{value}} bytes",
|
||||
"HEIGHT": "Height",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Comment"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "hidden",
|
||||
"UNDEFINED": "Undefined",
|
||||
"COMPLETE_BUYER": "Contract completed",
|
||||
"COMPLETE_SELLER": "Contract completed",
|
||||
"CREATE_ALIAS": "Fee for assigning alias",
|
||||
"UPDATE_ALIAS": "Fee for editing alias",
|
||||
"POW_REWARD": "POW reward",
|
||||
"POS_REWARD": "POS reward",
|
||||
"CREATE_CONTRACT": "Contract proposal",
|
||||
"PLEDGE_CONTRACT": "Contract deposit",
|
||||
"NULLIFY_CONTRACT": "Burn deposits",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Cancellation request",
|
||||
"CANCEL_CONTRACT": "Cancel and return deposits"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "No active contracts",
|
||||
"CONTRACTS": "Contracts",
|
||||
"PURCHASE": "Purchase",
|
||||
"SELL": "Sell",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"STATUS": "Status",
|
||||
"COMMENTS": "Comments",
|
||||
"PURCHASE_BUTTON": "New Purchase",
|
||||
"LISTING_BUTTON": "Create listing",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Less than an hour to respond",
|
||||
"REMAINING_ONE": "{{time}} hour remains",
|
||||
"REMAINING_MANY": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT": "{{time}} hours remain",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} hour remains",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_ONE_WAITING": "Waiting for {{time}} hour",
|
||||
"REMAINING_MANY_WAITING": "Waiting for {{time}} hours",
|
||||
"REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "New contract proposal",
|
||||
"IGNORED": "You ignored contract proposal",
|
||||
"ACCEPTED": "Contract started",
|
||||
"WAIT": "Waiting for contract confirmation",
|
||||
"WAITING_BUYER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "You ignored cancellation proposal",
|
||||
"EXPIRED": "Contract proposal has expired"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "Waiting for response",
|
||||
"IGNORED": "Seller ignored your contract proposal",
|
||||
"ACCEPTED": "Seller accepted your contract proposal",
|
||||
"WAIT": "Waiting for deposits confirmation",
|
||||
"WAITING_SELLER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"WAITING_CANCEL": "Waiting for contract cancellation",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract",
|
||||
"EXPIRED": "The contract proposal has expired"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Description",
|
||||
"SELLER": "Seller",
|
||||
"AMOUNT": "Amount",
|
||||
"YOUR_DEPOSIT": "Your deposit",
|
||||
"SELLER_DEPOSIT": "Seller deposit",
|
||||
"BUYER_DEPOSIT": "Buyer deposit",
|
||||
"SAME_AMOUNT": "Same amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"SEND_BUTTON": "Send",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Description required",
|
||||
"DESC_MAXIMUM": "Maximum field length reached",
|
||||
"SELLER_REQUIRED": "Address required",
|
||||
"SELLER_NOT_VALID": "Invalid address",
|
||||
"ALIAS_NOT_VALID": "Invalid alias",
|
||||
"AMOUNT_REQUIRED": "Amount required",
|
||||
"AMOUNT_ZERO": "Amount cannot be zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Deposit required",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Seller deposit required",
|
||||
"SELLER_SAME": "Use separate account",
|
||||
"COMMENT_MAXIMUM": "Maximum field length reached"
|
||||
},
|
||||
"PROGRESS_NEW": "New purchase",
|
||||
"PROGRESS_WAIT": "Awaiting reply",
|
||||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"WAITING_SELLER": "Waiting for response",
|
||||
"WAITING_BUYER": "Contract proposal received",
|
||||
"WAITING_CONFIRMATION": "Waiting for deposits confirmation",
|
||||
"WAITING_DELIVERY": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"IGNORED_BUYER": "Contract proposal ignored",
|
||||
"IGNORED_SELLER": "The seller ignored your contract proposal",
|
||||
"PROPOSAL_CANCEL_SELLER": "Cancellation request sent",
|
||||
"PROPOSAL_CANCEL_BUYER": "Cancellation request received",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract",
|
||||
"IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"EXPIRED": "Contract proposal expired",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contract started",
|
||||
"IGNORED_ACCEPT": "Contract proposal ignored",
|
||||
"BURN_PROPOSAL": "Deposits burned",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contract completed",
|
||||
"SEND_CANCEL_PROPOSAL": "Cancellation request sent",
|
||||
"IGNORED_CANCEL": "Contract cancellation proposal ignored",
|
||||
"DEALS_CANCELED_WAIT": "Cancellation in progress",
|
||||
"WAITING_TIME": "Response time",
|
||||
"NEED_MONEY": "Insufficient funds",
|
||||
"BUTTON_MAKE_PLEDGE": "Accept and make deposit",
|
||||
"BUTTON_IGNORE": "Ignore and hide offer",
|
||||
"BUTTON_NULLIFY": "Terminate and burn deposits",
|
||||
"BUTTON_RECEIVED": "Complete and release deposits",
|
||||
"BUTTON_CANCEL_BUYER": "Cancel and return deposits",
|
||||
"BUTTON_NOT_CANCEL": "Ignore request",
|
||||
"BUTTON_CANCEL_SELLER": "Confirm and return deposits",
|
||||
"HOUR": "hour",
|
||||
"HOURS": "hours",
|
||||
"CANCEL": "Cancel",
|
||||
"NULLIFY_QUESTION": "Are you sure you want to burn both deposits?",
|
||||
"BUTTON_NULLIFY_SHORT": "Burn",
|
||||
"WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Error",
|
||||
"SUCCESS": "Success",
|
||||
"INFO": "Information",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Send",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"TITLE": "Confirm transaction",
|
||||
"MESSAGE": {
|
||||
"SEND": "Send",
|
||||
"FROM": "From",
|
||||
"TO": "To",
|
||||
"COMMENT": "Comment"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Pending",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Time period:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 week",
|
||||
"WEEK2": "2 week",
|
||||
"MONTH1": "1 month",
|
||||
"MONTH3": "3 month",
|
||||
"MONTH6": "6 month",
|
||||
"YEAR": "1 year",
|
||||
"ALL": "All"
|
||||
},
|
||||
"TITLE_GROUP": "Group:",
|
||||
"GROUP": {
|
||||
"DAY": "day",
|
||||
"WEEK": "week",
|
||||
"MONTH": "month"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Contact list",
|
||||
"IMPORT_EXPORT": "Import or export contacts",
|
||||
"IMPORT": "Import",
|
||||
"EXPORT": "Export",
|
||||
"ADD": "Add/edit contact",
|
||||
"SEND": "Send",
|
||||
"SEND_FROM": "Send from",
|
||||
"SEND_TO": "To",
|
||||
"OPEN_ADD_WALLET": "Open/Add wallet",
|
||||
"COPY": "- Copy",
|
||||
"TABLE": {
|
||||
"NAME": "Name",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes",
|
||||
"EMPTY": "Contact list is empty"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Name",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUBLICATED": "Name is dublicated",
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"SET_MASTER_PASSWORD": "Set master password",
|
||||
"ADDRESS_DUBLICATED": "Address is dublicated",
|
||||
"MAX_LENGTH": "Maximum notes length reached",
|
||||
"NAME_LENGTH": "The name must be 4-25 characters long"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Send",
|
||||
"EDIT": "Edit",
|
||||
"DELETE": "Delete",
|
||||
"ADD": "Add contact",
|
||||
"ADD_EDIT": "Add/Save",
|
||||
"GO_TO_WALLET": "Go to wallet",
|
||||
"IMPORT_EXPORT": "Import/export"
|
||||
},
|
||||
"SUCCESS_SENT": "Contact added",
|
||||
"SUCCESS_SAVE": "Contact is edited",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Error is occured while reading file!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Not enough money",
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error: core is busy",
|
||||
"DAEMON_BUSY": "Internal error: daemon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with",
|
||||
"TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Transaction not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.",
|
||||
"TX_TYPE_NORMAL": "Error. The payment from the wallet",
|
||||
"TX_TYPE_NORMAL_TO": "to",
|
||||
"TX_TYPE_NORMAL_END": "was not completed.",
|
||||
"TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Please try again.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe",
|
||||
"TX_TYPE_COIN_BASE": "Error. The payment was not completed."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copy",
|
||||
"PASTE": "paste",
|
||||
"SELECT": "select all"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Quit",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Payment received",
|
||||
"MINED": "Mined",
|
||||
"LOCKED": "Blocked",
|
||||
"IS_MINIMIZE": "Zano application is minimized to the system tray",
|
||||
"RESTORE": "You can recover it by clicking or using the context menu",
|
||||
"TRAY_MENU_SHOW": "Resize",
|
||||
"TRAY_MENU_MINIMIZE": "Minimize"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Setup master password",
|
||||
"SETUP_CONFIRM_PASS": "Confirm the password",
|
||||
"MASTER_PASS": "Master password",
|
||||
"BUTTON_NEXT": "Next",
|
||||
"BUTTON_SKIP": "Skip",
|
||||
"BUTTON_RESET": "Reset",
|
||||
"INCORRECT_PASSWORD": "Invalid password",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"CONFIRM_REQUIRED": "Confirmation is required",
|
||||
"MISMATCH": "Mismatch"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Go back"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"SAVE_PHRASE": "Save your seed phrase",
|
||||
"OPEN_WALLET": "Open existing wallet",
|
||||
"RESTORE_WALLET": "Restore from backup",
|
||||
"WALLET_DETAILS": "Wallet details",
|
||||
"ASSIGN_ALIAS": "Assign alias",
|
||||
"EDIT_ALIAS": "Edit alias",
|
||||
"TRANSFER_ALIAS": "Transfer alias",
|
||||
"CONTRACTS": "Contracts",
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"OLD_PURCHASE": "Purchase"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Wallets",
|
||||
"ADD_NEW": "+ Add",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "New offers/Messages",
|
||||
"SYNCING": "Syncing wallet"
|
||||
},
|
||||
"CONTACTS": "Contacts",
|
||||
"SETTINGS": "Settings",
|
||||
"LOG_OUT": "Log out",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "System error",
|
||||
"COMPLETE": "Completion",
|
||||
"SYNCING": "Syncing blockchain",
|
||||
"LOADING": "Loading blockchain data"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Update available",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Get new update.</span><br><span>Update is recommended!</span>",
|
||||
"IMPORTANT": "Update available",
|
||||
"IMPORTANT_HINT": "Important update!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Get new update.</span><br><span>Important update!</span>",
|
||||
"CRITICAL": "Update available",
|
||||
"CRITICAL_HINT": "Critical update!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Critical update available.</span><i class=\"icon\"></i><span>Update strongly recommended!</span>",
|
||||
"TIME": "System time differs from network",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Wrong system time!</span><br><span>Check and repair your system time.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Create or open the wallet to start using Zano",
|
||||
"BUTTON_NEW_WALLET": "Create new wallet",
|
||||
"BUTTON_OPEN_WALLET": "Open existing wallet",
|
||||
"BUTTON_RESTORE_BACKUP": "Restore from backup",
|
||||
"HELP": "How to create wallet?",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Set wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"TITLE_SAVE": "Save the wallet file.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open",
|
||||
"FILE_NOT_FOUND1": "Wallet file not found",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open wallet\" button.",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Type wallet password",
|
||||
"LABEL": "Password to this wallet",
|
||||
"OPEN": "Open wallet",
|
||||
"SKIP": "Skip",
|
||||
"NOT_FOUND": "Not found"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_PHRASE_KEY": "Seed phrase / tracking seed",
|
||||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match",
|
||||
"KEY_REQUIRED": "Key is required",
|
||||
"KEY_NOT_VALID": "Key not valid"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Create wallet",
|
||||
"BUTTON_COPY": "Copy"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"SELECT_LOCATION": "Select wallet location",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"RESTORE_WALLET": "Restore from backup"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings",
|
||||
"DARK_THEME": "Dark theme",
|
||||
"WHITE_THEME": "White theme",
|
||||
"GRAY_THEME": "Grey theme",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Lock app after:",
|
||||
"TIME1": "5 min",
|
||||
"TIME2": "15 min",
|
||||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
"NEW": "New password",
|
||||
"CONFIRM": "New password confirmation",
|
||||
"BUTTON": "Save"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"PASS_NOT_MATCH": "Old password not match",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
},
|
||||
"LAST_BUILD": "Current build: {{value}}",
|
||||
"APP_LOG_TITLE": "Log level:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Register an alias",
|
||||
"DETAILS": "Details",
|
||||
"LOCK": "Lock",
|
||||
"AVAILABLE_BALANCE": "Available <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Locked <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "What does that mean?",
|
||||
"TABS": {
|
||||
"SEND": "Send",
|
||||
"RECEIVE": "Receive",
|
||||
"HISTORY": "History",
|
||||
"CONTRACTS": "Contracts",
|
||||
"MESSAGES": "Messages",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_FILE_LOCATION": "Wallet file location",
|
||||
"LABEL_SEED_PHRASE": "Seed phrase",
|
||||
"SEED_PHRASE_HINT": "Click to reveal the seed phrase",
|
||||
"BUTTON_SAVE": "Save",
|
||||
"BUTTON_REMOVE": "Close wallet",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later."
|
||||
},
|
||||
"COST": "Alias fee {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"ONE_ALIAS": "You can create only one alias per wallet",
|
||||
"REQUEST_ADD_REG": "The alias will be assigned within 10 minutes"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "You do not have enough funds to change the comment to this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"COST": "Fee {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Edit"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transfer to",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "No wallet with this account exists",
|
||||
"ALIAS_EXISTS": "This account already has an alias",
|
||||
"NO_MONEY": "You do not have enough funds to transfer this alias"
|
||||
},
|
||||
"COST": "Transfer fee {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transfer",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"REQUEST_SEND_REG": "The alias will be transferred within 10 minutes"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Address",
|
||||
"AMOUNT": "Amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"HIDE": "Hide your wallet address from recipient",
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "Transaction sent",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"ALIAS_NOT_VALID": "Alias not valid",
|
||||
"AMOUNT_REQUIRED": "Amount is required",
|
||||
"AMOUNT_ZERO": "Amount is zero",
|
||||
"FEE_REQUIRED": "Fee is required",
|
||||
"FEE_MINIMUM": "Minimum fee: {{fee}}",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
"STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Locked till {{date}}",
|
||||
"SEND": "Sent",
|
||||
"RECEIVED": "Received",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"FEE": "Fee",
|
||||
"ADDRESS": "Address",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "Payment ID",
|
||||
"ID": "Transaction ID",
|
||||
"SIZE": "Transaction size",
|
||||
"SIZE_VALUE": "{{value}} bytes",
|
||||
"HEIGHT": "Height",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Comment"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "hidden",
|
||||
"UNDEFINED": "Undefined",
|
||||
"COMPLETE_BUYER": "Contract completed",
|
||||
"COMPLETE_SELLER": "Contract completed",
|
||||
"CREATE_ALIAS": "Fee for assigning alias",
|
||||
"UPDATE_ALIAS": "Fee for editing alias",
|
||||
"POW_REWARD": "POW reward",
|
||||
"POS_REWARD": "POS reward",
|
||||
"CREATE_CONTRACT": "Contract proposal",
|
||||
"PLEDGE_CONTRACT": "Contract deposit",
|
||||
"NULLIFY_CONTRACT": "Burn deposits",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Cancellation request",
|
||||
"CANCEL_CONTRACT": "Cancel and return deposits"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "No active contracts",
|
||||
"CONTRACTS": "Contracts",
|
||||
"PURCHASE": "Purchase",
|
||||
"SELL": "Sell",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"STATUS": "Status",
|
||||
"COMMENTS": "Comments",
|
||||
"PURCHASE_BUTTON": "New Purchase",
|
||||
"LISTING_BUTTON": "Create listing",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Less than an hour to respond",
|
||||
"REMAINING_ONE": "{{time}} hour remains",
|
||||
"REMAINING_MANY": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT": "{{time}} hours remain",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} hour remains",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_ONE_WAITING": "Waiting for {{time}} hour",
|
||||
"REMAINING_MANY_WAITING": "Waiting for {{time}} hours",
|
||||
"REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "New contract proposal",
|
||||
"IGNORED": "You ignored contract proposal",
|
||||
"ACCEPTED": "Contract started",
|
||||
"WAIT": "Waiting for contract confirmation",
|
||||
"WAITING_BUYER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "You ignored cancellation proposal",
|
||||
"EXPIRED": "Contract proposal has expired"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "Waiting for response",
|
||||
"IGNORED": "Seller ignored your contract proposal",
|
||||
"ACCEPTED": "Seller accepted your contract proposal",
|
||||
"WAIT": "Waiting for deposits confirmation",
|
||||
"WAITING_SELLER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"WAITING_CANCEL": "Waiting for contract cancellation",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract",
|
||||
"EXPIRED": "The contract proposal has expired"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Description",
|
||||
"SELLER": "Seller",
|
||||
"AMOUNT": "Amount",
|
||||
"YOUR_DEPOSIT": "Your deposit",
|
||||
"SELLER_DEPOSIT": "Seller deposit",
|
||||
"BUYER_DEPOSIT": "Buyer deposit",
|
||||
"SAME_AMOUNT": "Same amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"SEND_BUTTON": "Send",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Description required",
|
||||
"DESC_MAXIMUM": "Maximum field length reached",
|
||||
"SELLER_REQUIRED": "Address required",
|
||||
"SELLER_NOT_VALID": "Invalid address",
|
||||
"ALIAS_NOT_VALID": "Invalid alias",
|
||||
"AMOUNT_REQUIRED": "Amount required",
|
||||
"AMOUNT_ZERO": "Amount cannot be zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Deposit required",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Seller deposit required",
|
||||
"SELLER_SAME": "Use separate account",
|
||||
"COMMENT_MAXIMUM": "Maximum field length reached"
|
||||
},
|
||||
"PROGRESS_NEW": "New purchase",
|
||||
"PROGRESS_WAIT": "Awaiting reply",
|
||||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"WAITING_SELLER": "Waiting for response",
|
||||
"WAITING_BUYER": "Contract proposal received",
|
||||
"WAITING_CONFIRMATION": "Waiting for deposits confirmation",
|
||||
"WAITING_DELIVERY": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"IGNORED_BUYER": "Contract proposal ignored",
|
||||
"IGNORED_SELLER": "The seller ignored your contract proposal",
|
||||
"PROPOSAL_CANCEL_SELLER": "Cancellation request sent",
|
||||
"PROPOSAL_CANCEL_BUYER": "Cancellation request received",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract",
|
||||
"IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"EXPIRED": "Contract proposal expired",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contract started",
|
||||
"IGNORED_ACCEPT": "Contract proposal ignored",
|
||||
"BURN_PROPOSAL": "Deposits burned",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contract completed",
|
||||
"SEND_CANCEL_PROPOSAL": "Cancellation request sent",
|
||||
"IGNORED_CANCEL": "Contract cancellation proposal ignored",
|
||||
"DEALS_CANCELED_WAIT": "Cancellation in progress",
|
||||
"WAITING_TIME": "Response time",
|
||||
"NEED_MONEY": "Insufficient funds",
|
||||
"BUTTON_MAKE_PLEDGE": "Accept and make deposit",
|
||||
"BUTTON_IGNORE": "Ignore and hide offer",
|
||||
"BUTTON_NULLIFY": "Terminate and burn deposits",
|
||||
"BUTTON_RECEIVED": "Complete and release deposits",
|
||||
"BUTTON_CANCEL_BUYER": "Cancel and return deposits",
|
||||
"BUTTON_NOT_CANCEL": "Ignore request",
|
||||
"BUTTON_CANCEL_SELLER": "Confirm and return deposits",
|
||||
"HOUR": "hour",
|
||||
"HOURS": "hours",
|
||||
"CANCEL": "Cancel",
|
||||
"NULLIFY_QUESTION": "Are you sure you want to burn both deposits?",
|
||||
"BUTTON_NULLIFY_SHORT": "Burn",
|
||||
"WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Error",
|
||||
"SUCCESS": "Success",
|
||||
"INFO": "Information",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Send",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"TITLE": "Confirm transaction",
|
||||
"MESSAGE": {
|
||||
"SEND": "Send",
|
||||
"FROM": "From",
|
||||
"TO": "To",
|
||||
"COMMENT": "Comment"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Pending",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Time period:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 week",
|
||||
"WEEK2": "2 week",
|
||||
"MONTH1": "1 month",
|
||||
"MONTH3": "3 month",
|
||||
"MONTH6": "6 month",
|
||||
"YEAR": "1 year",
|
||||
"ALL": "All"
|
||||
},
|
||||
"TITLE_GROUP": "Group:",
|
||||
"GROUP": {
|
||||
"DAY": "day",
|
||||
"WEEK": "week",
|
||||
"MONTH": "month"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Contact list",
|
||||
"IMPORT_EXPORT": "Import or export contacts",
|
||||
"IMPORT": "Import",
|
||||
"EXPORT": "Export",
|
||||
"ADD": "Add/edit contact",
|
||||
"SEND": "Send",
|
||||
"SEND_FROM": "Send from",
|
||||
"SEND_TO": "To",
|
||||
"OPEN_ADD_WALLET": "Open/Add wallet",
|
||||
"COPY": "- Copy",
|
||||
"TABLE": {
|
||||
"NAME": "Name",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes",
|
||||
"EMPTY": "Contact list is empty"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Name",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUBLICATED": "Name is dublicated",
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"SET_MASTER_PASSWORD": "Set master password",
|
||||
"ADDRESS_DUBLICATED": "Address is dublicated",
|
||||
"MAX_LENGTH": "Maximum notes length reached",
|
||||
"NAME_LENGTH": "The name must be 4-25 characters long"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Send",
|
||||
"EDIT": "Edit",
|
||||
"DELETE": "Delete",
|
||||
"ADD": "Add contact",
|
||||
"ADD_EDIT": "Add/Save",
|
||||
"GO_TO_WALLET": "Go to wallet",
|
||||
"IMPORT_EXPORT": "Import/export"
|
||||
},
|
||||
"SUCCESS_SENT": "Contact added",
|
||||
"SUCCESS_SAVE": "Contact is edited",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Error is occured while reading file!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Not enough money",
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error: core is busy",
|
||||
"DAEMON_BUSY": "Internal error: daemon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with",
|
||||
"TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Transaction not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.",
|
||||
"TX_TYPE_NORMAL": "Error. The payment from the wallet",
|
||||
"TX_TYPE_NORMAL_TO": "to",
|
||||
"TX_TYPE_NORMAL_END": "was not completed.",
|
||||
"TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Please try again.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe",
|
||||
"TX_TYPE_COIN_BASE": "Error. The payment was not completed."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copy",
|
||||
"PASTE": "paste",
|
||||
"SELECT": "select all"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Quit",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Payment received",
|
||||
"MINED": "Mined",
|
||||
"LOCKED": "Blocked",
|
||||
"IS_MINIMIZE": "Zano application is minimized to the system tray",
|
||||
"RESTORE": "You can recover it by clicking or using the context menu",
|
||||
"TRAY_MENU_SHOW": "Resize",
|
||||
"TRAY_MENU_MINIMIZE": "Minimize"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Configurar password mestra",
|
||||
"SETUP_CONFIRM_PASS": "Confirmar a password",
|
||||
"MASTER_PASS": "Password mestra",
|
||||
"BUTTON_NEXT": "Próximo",
|
||||
"BUTTON_SKIP": "Saltar",
|
||||
"BUTTON_RESET": "Redefinir",
|
||||
"INCORRECT_PASSWORD": "Password inválida",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password é obrigatória",
|
||||
"CONFIRM_REQUIRED": "Confirmação é obrigatória",
|
||||
"MISMATCH": "Não correspondem"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Voltar"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Adicionar carteira",
|
||||
"CREATE_WALLET": "Criar nova carteira",
|
||||
"SAVE_PHRASE": "Guardar a sua frase semente",
|
||||
"OPEN_WALLET": "Abrir carteira existente",
|
||||
"RESTORE_WALLET": "Restaurar de cópia",
|
||||
"WALLET_DETAILS": "Detalhes da carteira",
|
||||
"ASSIGN_ALIAS": "Atribuir alias",
|
||||
"EDIT_ALIAS": "Editar alias",
|
||||
"TRANSFER_ALIAS": "Transferir alias",
|
||||
"CONTRACTS": "Contratos",
|
||||
"NEW_PURCHASE": "Nova compra",
|
||||
"OLD_PURCHASE": "Compra"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Carteiras",
|
||||
"ADD_NEW": "+ Adicionar",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "Novas ofertas/Mensagens",
|
||||
"SYNCING": "A sincronizar carteira"
|
||||
},
|
||||
"CONTACTS": "Contactos",
|
||||
"SETTINGS": "Definições",
|
||||
"LOG_OUT": "Terminar sessão",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "Erro de sistema",
|
||||
"COMPLETE": "Conclusão",
|
||||
"SYNCING": "Syncing block",
|
||||
"LOADING": "A carregar informação da blockchain"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Atualização disponível",
|
||||
"STANDARD_TOOLTIP": "Obter nova atualização. É recomendado atualizar!",
|
||||
"IMPORTANT": "Atualização disponível",
|
||||
"IMPORTANT_HINT": "Atualização importante!",
|
||||
"IMPORTANT_TOOLTIP": "Obter nova atualização. É recomendado atualizar!",
|
||||
"CRITICAL": "Atualização disponível",
|
||||
"CRITICAL_HINT": "Atualização crítica!",
|
||||
"CRITICAL_TOOLTIP": "Atualização crítica disponível. É fortemente recomendado atualizar!",
|
||||
"TIME": "Tempo de sistema difere da rede",
|
||||
"TIME_TOOLTIP": "Tempo de sistema errado! Verifique e repare o seu tempo de sistema."
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Crie ou abra a carteira para começar a usar Zano",
|
||||
"BUTTON_NEW_WALLET": "Criar nova carteira",
|
||||
"BUTTON_OPEN_WALLET": "Abrir carteira existente",
|
||||
"BUTTON_RESTORE_BACKUP": "Restaurar de cópia",
|
||||
"HELP": "Como criar carteira?",
|
||||
"CHOOSE_PATH": "Por favor escolha um caminho"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Nome da carteira",
|
||||
"PASS": "Definir password da carteira",
|
||||
"CONFIRM": "Confirmar password da carteira",
|
||||
"BUTTON_SELECT": "Escolher localização da carteira",
|
||||
"BUTTON_CREATE": "Criar carteira",
|
||||
"TITLE_SAVE": "Gravar o ficheiro de carteira.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Ficheiros de carteira existentes não podem ser substituídos ou sobrescritos",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Ficheiros da carteira não podem ser guardados na partição do sistema operativo",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Nome é necessário",
|
||||
"NAME_DUPLICATE": "Nome é duplicado",
|
||||
"MAX_LENGTH": "Atingido comprimento máximo do nome",
|
||||
"CONFIRM_NOT_MATCH": "Password de confirmação não corresponde"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Nome da carteira",
|
||||
"PASS": "Password da carteira",
|
||||
"BUTTON": "Abrir carteira",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "Uma carteira com este endereço já está aberta",
|
||||
"FILE_NOT_FOUND1": "Ficheiro de carteira não encontrado",
|
||||
"FILE_NOT_FOUND2": "<br/> <br/> Pode ter sido renomeado ou movido. <br/> Para abri-lo, use o botão \"Abrir carteira\".",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Nome é necessário",
|
||||
"NAME_DUPLICATE": "Nome é duplicado",
|
||||
"MAX_LENGTH": "Atingido comprimento máximo do nome"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Escrever password da carteira",
|
||||
"LABEL": "Password para esta carteira",
|
||||
"OPEN": "Abrir carteira",
|
||||
"SKIP": "Saltar",
|
||||
"NOT_FOUND": "Não encontrado"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Nome da carteira",
|
||||
"LABEL_PHRASE_KEY": "Frase semente / chave privada",
|
||||
"PASS": "Password da carteira",
|
||||
"CONFIRM": "Confirmar password da carteira",
|
||||
"BUTTON_SELECT": "Escolher localização da carteira",
|
||||
"BUTTON_CREATE": "Criar carteira",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Ficheiro de carteira inválido ou senha não corresponde",
|
||||
"CHOOSE_PATH": "Por favor escolha um caminho",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Nome é necessário",
|
||||
"NAME_DUPLICATE": "Nome é duplicado",
|
||||
"MAX_LENGTH": "Atingido comprimento máximo do nome",
|
||||
"CONFIRM_NOT_MATCH": "Password de confirmação não corresponde",
|
||||
"KEY_REQUIRED": "Chave é necessária",
|
||||
"KEY_NOT_VALID": "Chave inválida"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Certifique-se de manter sua frase-semente num lugar seguro. Se see esquecer da sua frase-semente, não poderá recuperar a sua carteira.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Criar carteira",
|
||||
"BUTTON_COPY": "Copiar"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Adicionar carteira",
|
||||
"SELECT_LOCATION": "Escolher localização da carteira",
|
||||
"CREATE_WALLET": "Criar nova carteira",
|
||||
"RESTORE_WALLET": "Restaurar de cópia"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Definições",
|
||||
"DARK_THEME": "Tema escuro",
|
||||
"WHITE_THEME": "Tema branco",
|
||||
"GRAY_THEME": "Tema cinzento",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Bloquear aplicação após:",
|
||||
"TIME1": "5 minutos",
|
||||
"TIME2": "15 minutos",
|
||||
"TIME3": "1 hora",
|
||||
"TIME4": "Nunca"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% escala",
|
||||
"100": "100% escala",
|
||||
"125": "125% escala",
|
||||
"150": "150% escala"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Atualizar password mestra",
|
||||
"OLD": "Antiga password",
|
||||
"NEW": "Nova password",
|
||||
"CONFIRM": "Confirmação de nova password",
|
||||
"BUTTON": "Guardar"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password é necessária",
|
||||
"PASS_NOT_MATCH": "Antiga password não corresponde",
|
||||
"CONFIRM_NOT_MATCH": "Password de confirmação não corresponde"
|
||||
},
|
||||
"LAST_BUILD": "Versão atual: {{value}}",
|
||||
"APP_LOG_TITLE": "Nível de registro:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Registar um alias",
|
||||
"DETAILS": "Detalhes",
|
||||
"LOCK": "Bloquear",
|
||||
"AVAILABLE_BALANCE": "Disponível <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Bloqueado <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "O que isso quer dizer?",
|
||||
"TABS": {
|
||||
"SEND": "Enviar",
|
||||
"RECEIVE": "Receber",
|
||||
"HISTORY": "Histórico",
|
||||
"CONTRACTS": "Contratos",
|
||||
"MESSAGES": "Mensagens",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Nome da carteira",
|
||||
"LABEL_FILE_LOCATION": "Localização do ficheiro de carteira",
|
||||
"LABEL_SEED_PHRASE": "Frase semente",
|
||||
"SEED_PHRASE_HINT": "Clique para revelar a frase semente",
|
||||
"BUTTON_SAVE": "Guardar",
|
||||
"BUTTON_REMOVE": "Fechar carteira",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Nome é necessário",
|
||||
"NAME_DUPLICATE": "Nome é duplicado",
|
||||
"MAX_LENGTH": "Atingido comprimento máximo do nome"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Introduzir alias",
|
||||
"TOOLTIP": "Um alias é uma forma abreviada da sua conta. Um alias só pode incluir letras, números e caracteres latinos “.” e “-”. Deve começar com “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comentar",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "O comentário ficará visível para quem quiser efetuar um pagamento para o seu alias. Pode fornecer detalhes sobre sua empresa, contatos ou incluir qualquer texto. Os comentários podem ser editados posteriormente."
|
||||
},
|
||||
"COST": "Taxa de Alias {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Atribuir",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Nome é necessário",
|
||||
"NAME_WRONG": "Nome inválido: símbolos permitidos \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "O alias deve ter entre 6 e 25 caracteres",
|
||||
"NAME_EXISTS": "Nome de alias já existe",
|
||||
"NO_MONEY": "Não tem fundos suficientes para atribuir esse alias",
|
||||
"MAX_LENGTH": "Atingido comprimento máximo do comentário"
|
||||
},
|
||||
"ONE_ALIAS": "Pode criar apenas um alias por carteira",
|
||||
"REQUEST_ADD_REG": "O alias será atribuído em 10 minutos"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Introduzir alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comentário",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "Não tem fundos suficientes para comentar esse alias",
|
||||
"MAX_LENGTH": "Atingido comprimento máximo do comentário"
|
||||
},
|
||||
"COST": "Taxa {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Editar"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Introduzir alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comentar",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transferir para",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "Não existe nenhuma carteira com esta conta",
|
||||
"ALIAS_EXISTS": "Esta conta já tem um alias",
|
||||
"NO_MONEY": "Não tem fundos suficientes para transferir esse alias"
|
||||
},
|
||||
"COST": "Taxa de Transferência {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transferir",
|
||||
"BUTTON_CANCEL": "Cancelar",
|
||||
"REQUEST_SEND_REG": "O alias será transferido em 10 minutos"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Endereço",
|
||||
"AMOUNT": "Montante",
|
||||
"COMMENT": "Comentar",
|
||||
"DETAILS": "Detalhes adicionais",
|
||||
"MIXIN": "Mixagem",
|
||||
"FEE": "Taxa",
|
||||
"HIDE": "Ocultar o seu endereço de carteira do recipiente",
|
||||
"BUTTON": "Enviar",
|
||||
"SUCCESS_SENT": "Transação enviada",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Endereço é necessário",
|
||||
"ADDRESS_NOT_VALID": "Endereço inválido",
|
||||
"ALIAS_NOT_VALID": "Alias inválido",
|
||||
"AMOUNT_REQUIRED": "Montante é necessário",
|
||||
"AMOUNT_ZERO": "Montante é zero",
|
||||
"FEE_REQUIRED": "Taxa é necessária",
|
||||
"FEE_MINIMUM": "Taxa mínima: {{fee}}",
|
||||
"MAX_LENGTH": "Atingido comprimento máximo do comentário"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Estado",
|
||||
"STATUS_TOOLTIP": "Confirmações {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Bloqueado até {{date}}",
|
||||
"SEND": "Enviado",
|
||||
"RECEIVED": "Recebido",
|
||||
"DATE": "Data",
|
||||
"AMOUNT": "Montante",
|
||||
"FEE": "Taxa",
|
||||
"ADDRESS": "Endereço",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "ID de Pagamento",
|
||||
"ID": "ID da transação",
|
||||
"SIZE": "Tamanho da transação",
|
||||
"SIZE_VALUE": "{{value}} bytes",
|
||||
"HEIGHT": "Altura",
|
||||
"CONFIRMATION": "Confirmação",
|
||||
"INPUTS": "Entradas",
|
||||
"OUTPUTS": "Saídas",
|
||||
"COMMENT": "Comentário"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "escondido",
|
||||
"UNDEFINED": "Indefinido",
|
||||
"COMPLETE_BUYER": "Contrato completado",
|
||||
"COMPLETE_SELLER": "Contrato completado",
|
||||
"CREATE_ALIAS": "Taxa para atribuição de alias",
|
||||
"UPDATE_ALIAS": "Taxa para edição de alias",
|
||||
"POW_REWARD": "Recompensa de POW",
|
||||
"POS_REWARD": "Recompensa de POS",
|
||||
"CREATE_CONTRACT": "Proposta de contrato",
|
||||
"PLEDGE_CONTRACT": "Depósito de contrato",
|
||||
"NULLIFY_CONTRACT": "Queimar depósitos",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Cancelar pedido",
|
||||
"CANCEL_CONTRACT": "Cancelar e retornar depósitos"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "Sem contratos ativos",
|
||||
"CONTRACTS": "Contratos",
|
||||
"PURCHASE": "Compra",
|
||||
"SELL": "Venda",
|
||||
"DATE": "Data",
|
||||
"AMOUNT": "Montante",
|
||||
"STATUS": "Estado",
|
||||
"COMMENTS": "Comentários",
|
||||
"PURCHASE_BUTTON": "Nova Compra",
|
||||
"LISTING_BUTTON": "Criar lista",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Menos de uma hora para responder",
|
||||
"REMAINING_ONE": "Falta {{time}} hora\n",
|
||||
"REMAINING_MANY": "Falta {{time}} horas\n",
|
||||
"REMAINING_MANY_ALT": "Faltam {{time}} horas",
|
||||
"REMAINING_ONE_RESPONSE": "Falta {{time}} hora",
|
||||
"REMAINING_MANY_RESPONSE": "Faltam {{time}} horas\n",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "Faltam {{time}} horas\n",
|
||||
"REMAINING_ONE_WAITING": "À espera à {{time}} hora",
|
||||
"REMAINING_MANY_WAITING": "À espera à {{time}} horas",
|
||||
"REMAINING_MANY_ALT_WAITING": "À espera à {{time}} horas"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "Nova proposta de contrato",
|
||||
"IGNORED": "Ignorou uma proposta de contrato",
|
||||
"ACCEPTED": "Contrato iniciado",
|
||||
"WAIT": "À espera de confirmação de contrato",
|
||||
"WAITING_BUYER": "À espera de entrega",
|
||||
"COMPLETED": "Contrato completado",
|
||||
"NOT_RECEIVED": "Entrega falhada",
|
||||
"NULLIFIED": "Todos os depósitos queimados",
|
||||
"PROPOSAL_CANCEL": "Nova proposta para cancelar contrato e retornar depósitos",
|
||||
"BEING_CANCELLED": "Cancelamento em progresso",
|
||||
"CANCELLED": "Contrato cancelado",
|
||||
"IGNORED_CANCEL": "Ignorou uma proposta de cancelamento",
|
||||
"EXPIRED": "Proposta de contrato expirou"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "À espera de resposta",
|
||||
"IGNORED": "O Vendedor ignorou a sua proposta de contrato",
|
||||
"ACCEPTED": "O Vendedor aceitou a sua proposta de contrato",
|
||||
"WAIT": "À espera de confirmação de depósitos",
|
||||
"WAITING_SELLER": "À espera de entrega",
|
||||
"COMPLETED": "Contrato completado",
|
||||
"NOT_RECEIVED": "Entrega falhada",
|
||||
"NULLIFIED": "Todos os depósitos queimados",
|
||||
"WAITING_CANCEL": "À espera de cancelamento de contrato",
|
||||
"BEING_CANCELLED": "Cancelamento em progresso",
|
||||
"CANCELLED": "Contrato cancelado",
|
||||
"IGNORED_CANCEL": "O vendedor ignorou a sua proposta para cancelar o contrato",
|
||||
"EXPIRED": "A proposta de contrato expirou"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Descrição",
|
||||
"SELLER": "Vendedor",
|
||||
"AMOUNT": "Montante",
|
||||
"YOUR_DEPOSIT": "O seu depósito",
|
||||
"SELLER_DEPOSIT": "Depósito do vendedor",
|
||||
"BUYER_DEPOSIT": "Depósito do comprador",
|
||||
"SAME_AMOUNT": "Mesmo montante",
|
||||
"COMMENT": "Comentário",
|
||||
"DETAILS": "Detalhes adicionais",
|
||||
"SEND_BUTTON": "Enviar",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Descrição necessária",
|
||||
"DESC_MAXIMUM": "Atingido comprimento máximo do campo",
|
||||
"SELLER_REQUIRED": "Endereço necessário",
|
||||
"SELLER_NOT_VALID": "Endereço inválido",
|
||||
"ALIAS_NOT_VALID": "Alias inválido",
|
||||
"AMOUNT_REQUIRED": "Montante necessário",
|
||||
"AMOUNT_ZERO": "Montante não pode ser zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Depósito necessário",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Necessário depósito de vendedor",
|
||||
"SELLER_SAME": "Usar conta separada",
|
||||
"COMMENT_MAXIMUM": "Atingido comprimento máximo do campo"
|
||||
},
|
||||
"PROGRESS_NEW": "Nova compra",
|
||||
"PROGRESS_WAIT": "À espera de resposta",
|
||||
"PROGRESS_RECEIVE": "Resposta recebida",
|
||||
"PROGRESS_COMPLETE": "Completado",
|
||||
"FEE": "Taxa",
|
||||
"PAYMENT": "ID de Pagamento",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "Nova compra",
|
||||
"WAITING_SELLER": "À espera de resposta",
|
||||
"WAITING_BUYER": "Proposta de contrato recebida",
|
||||
"WAITING_CONFIRMATION": "À espera de confirmação de depósitos",
|
||||
"WAITING_DELIVERY": "À espera de entrega",
|
||||
"COMPLETED": "Contrato completado",
|
||||
"IGNORED_BUYER": "Proposta de contrato ignorada",
|
||||
"IGNORED_SELLER": "O vendedor ignorou a sua proposta de contrato",
|
||||
"PROPOSAL_CANCEL_SELLER": "Pedido de cancelamento enviado",
|
||||
"PROPOSAL_CANCEL_BUYER": "Pedido de cancelamento recebido",
|
||||
"BEING_CANCELLED": "Cancelamento em progresso",
|
||||
"IGNORED_CANCEL_SELLER": "O vendedor ignorou a sua proposta para cancelar o contrato",
|
||||
"IGNORED_CANCEL_BUYER": "Proposta de cancelamento de contrato ignorada",
|
||||
"CANCELLED": "Contrato cancelado",
|
||||
"EXPIRED": "Proposta de contrato expirada",
|
||||
"NOT_RECEIVED": "Entrega falhada",
|
||||
"NULLIFIED": "Todos os depósitos queimados"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contrato iniciado",
|
||||
"IGNORED_ACCEPT": "Proposta de contrato ignorada",
|
||||
"BURN_PROPOSAL": "Depósitos queimados",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contrato completado",
|
||||
"SEND_CANCEL_PROPOSAL": "Pedido de cancelamento enviado",
|
||||
"IGNORED_CANCEL": "Proposta de cancelamento de contrato ignorada",
|
||||
"DEALS_CANCELED_WAIT": "Cancelamento em progresso",
|
||||
"WAITING_TIME": "Tempo de resposta",
|
||||
"NEED_MONEY": "Fundos insuficientes",
|
||||
"BUTTON_MAKE_PLEDGE": "Aceitar e fazer depósito",
|
||||
"BUTTON_IGNORE": "Ignorar e ocultar oferta",
|
||||
"BUTTON_NULLIFY": "Terminar e queimar depósitos",
|
||||
"BUTTON_RECEIVED": "Completar e libertar depósitos",
|
||||
"BUTTON_CANCEL_BUYER": "Cancelar e retornar depósitos",
|
||||
"BUTTON_NOT_CANCEL": "Ignorar pedido",
|
||||
"BUTTON_CANCEL_SELLER": "Confirmar e retornar depósitos",
|
||||
"HOUR": "hora",
|
||||
"HOURS": "horas",
|
||||
"CANCEL": "Cancelar",
|
||||
"NULLIFY_QUESTION": "Tem a certeza que quer queimar ambos os depósitos?",
|
||||
"BUTTON_NULLIFY_SHORT": "Queimar",
|
||||
"WAITING_TIME_QUESTION": "Tem a certeza que quer cancelar o contrato?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Endereço",
|
||||
"MESSAGE": "Mensagem",
|
||||
"SEND_PLACEHOLDER": "Escreva uma mensagem...",
|
||||
"SEND_BUTTON": "Enviar"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Erro",
|
||||
"SUCCESS": "Sucesso",
|
||||
"INFO": "Informação",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Enviar",
|
||||
"BUTTON_CANCEL": "Cancelar",
|
||||
"TITLE": "Confirmar transação",
|
||||
"MESSAGE": {
|
||||
"SEND": "Enviar",
|
||||
"FROM": "De",
|
||||
"TO": "Para",
|
||||
"COMMENT": "Comentário"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Pendente",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Período de tempo:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 semana",
|
||||
"WEEK2": "2 semanas",
|
||||
"MONTH1": "1 mês",
|
||||
"MONTH3": "3 meses",
|
||||
"MONTH6": "6 meses",
|
||||
"YEAR": "1 ano",
|
||||
"ALL": "Todo"
|
||||
},
|
||||
"TITLE_GROUP": "Grupo:",
|
||||
"GROUP": {
|
||||
"DAY": "dia",
|
||||
"WEEK": "semana",
|
||||
"MONTH": "mês"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Lista de Contactos",
|
||||
"IMPORT_EXPORT": "Importar ou exportar contactos",
|
||||
"IMPORT": "Importar",
|
||||
"EXPORT": "Exportar",
|
||||
"ADD": "Adicionar/editar contacto",
|
||||
"SEND": "Enviar",
|
||||
"SEND_FROM": "Enviar de",
|
||||
"SEND_TO": "Para",
|
||||
"OPEN_ADD_WALLET": "Abrir/Adicionar carteira",
|
||||
"COPY": "- Copiar",
|
||||
"TABLE": {
|
||||
"NAME": "Nome",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Endereço",
|
||||
"NOTES": "Notas",
|
||||
"EMPTY": "Lista de contactos está vazia"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Nome",
|
||||
"ADDRESS": "Endereço",
|
||||
"NOTES": "Notas"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Nome é necessário",
|
||||
"NAME_DUBLICATED": "Nome está duplicado",
|
||||
"ADDRESS_REQUIRED": "Endereço é necessário",
|
||||
"ADDRESS_NOT_VALID": "Endereço inválido",
|
||||
"SET_MASTER_PASSWORD": "Definir password mestra",
|
||||
"ADDRESS_DUBLICATED": "Endereço está duplicado",
|
||||
"MAX_LENGTH": "Atingido comprimento máximo das Notas",
|
||||
"NAME_LENGTH": "O alias deve ter entre 4 e 25 caracteres"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Enviar",
|
||||
"EDIT": "Editar",
|
||||
"DELETE": "Eliminar",
|
||||
"ADD": "Adicionar contacto",
|
||||
"ADD_EDIT": "Adicionar/Guardar",
|
||||
"GO_TO_WALLET": "Ir para carteira",
|
||||
"IMPORT_EXPORT": "Importar/exportar"
|
||||
},
|
||||
"SUCCESS_SENT": "Contacto adicionado",
|
||||
"SUCCESS_SAVE": "Contacto editado",
|
||||
"SUCCESS_IMPORT": "Contactos importados",
|
||||
"SUCCESS_EXPORT": "Contactos exportados",
|
||||
"ERROR_IMPORT": "Erro ocorrido na leitura de ficheiro!",
|
||||
"ERROR_TYPE_FILE": "Por favor importe um ficheiro .csv válido",
|
||||
"ERROR_EXPORT": "Tipo de ficheiro inválido. Guarde ficheiro como .csv",
|
||||
"ERROR_EMPTY_LIST": "Lista de contactos está vazia",
|
||||
"ERROR_IMPORT_EMPTY": "Ficheiro está vazio"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Sem dinheiro suficiente",
|
||||
"NOT_ENOUGH_MONEY": "Fundos insuficientes na conta",
|
||||
"CORE_BUSY": "Erro interno: core está ocupado",
|
||||
"DAEMON_BUSY": "Erro interno: daemon está ocupado",
|
||||
"NO_MONEY_REMOVE_OFFER": "Não há taxa para excluir uma oferta, mas para proteger a rede contra transações de inundação, é preciso ter pelo menos {{fee}} {{currency}} na sua carteira",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "O número de mixagem é muito grande para o estado atual da blockchain. Não há saídas não gastas suficientes para misturar",
|
||||
"TRANSACTION_IS_TO_BIG": "Transação excede o limite de rede, envie quantidade necessária com várias transações",
|
||||
"TRANSFER_ATTEMPT": "Sem conexão à rede Zano",
|
||||
"ACCESS_DENIED": "Acesso negado",
|
||||
"TRANSACTION_ERROR": "Erro. Transação não completada.",
|
||||
"BAD_ARG": "Argumento inválido",
|
||||
"WALLET_WRONG_ID": "ID de carteira inválido",
|
||||
"WRONG_PASSWORD": "Password inválida",
|
||||
"FILE_RESTORED": "O ficheiro de carteira estava corrompido. Recuperámos as chaves e a carteira a partir da blockchain",
|
||||
"FILE_NOT_FOUND": "Ficheiro não encontrado",
|
||||
"FILE_EXIST": "Já existe um ficheiro com esse nome. Insira outro nome para gravar o ficheiro sob",
|
||||
"FILE_NOT_SAVED": "Não pode gravar um ficheiro de carteira nesta pasta. Por favor escolha outra pasta.",
|
||||
"TX_TYPE_NORMAL": "Erro. O pagamento da carteira",
|
||||
"TX_TYPE_NORMAL_TO": "para",
|
||||
"TX_TYPE_NORMAL_END": "não foi completado.",
|
||||
"TX_TYPE_NEW_ALIAS": "Erro. Falha ao registar alias para seguro",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Por favor tente novamente.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Erro. Falha ao mudar comentário a um alias seguro",
|
||||
"TX_TYPE_COIN_BASE": "Erro. Pagamento não foi completado."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copiar",
|
||||
"PASTE": "colar",
|
||||
"SELECT": "selecionar tudo"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Sair",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Pagamento recebido (não confirmado)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Pagamento recebido",
|
||||
"MINED": "Minerado",
|
||||
"LOCKED": "Bloqueado",
|
||||
"IS_MINIMIZE": "Aplicação Zano foi minimizada na bandeja do sistema",
|
||||
"RESTORE": "Pode recuperá-lo ao clicar ou usar o menu de contexto",
|
||||
"TRAY_MENU_SHOW": "Redimensionar",
|
||||
"TRAY_MENU_MINIMIZE": "Minimizar"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Setup master password",
|
||||
"SETUP_CONFIRM_PASS": "Confirm the password",
|
||||
"MASTER_PASS": "Master password",
|
||||
"BUTTON_NEXT": "Next",
|
||||
"BUTTON_SKIP": "Skip",
|
||||
"BUTTON_RESET": "Reset",
|
||||
"INCORRECT_PASSWORD": "Invalid password",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"CONFIRM_REQUIRED": "Confirmation is required",
|
||||
"MISMATCH": "Mismatch"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Go back"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"SAVE_PHRASE": "Save your seed phrase",
|
||||
"OPEN_WALLET": "Open existing wallet",
|
||||
"RESTORE_WALLET": "Restore from backup",
|
||||
"WALLET_DETAILS": "Wallet details",
|
||||
"ASSIGN_ALIAS": "Assign alias",
|
||||
"EDIT_ALIAS": "Edit alias",
|
||||
"TRANSFER_ALIAS": "Transfer alias",
|
||||
"CONTRACTS": "Contracts",
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"OLD_PURCHASE": "Purchase"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Wallets",
|
||||
"ADD_NEW": "+ Add",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "New offers/Messages",
|
||||
"SYNCING": "Syncing wallet"
|
||||
},
|
||||
"CONTACTS": "Contacts",
|
||||
"SETTINGS": "Settings",
|
||||
"LOG_OUT": "Log out",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "System error",
|
||||
"COMPLETE": "Completion",
|
||||
"SYNCING": "Syncing blockchain",
|
||||
"LOADING": "Loading blockchain data"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Update available",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Get new update.</span><br><span>Update is recommended!</span>",
|
||||
"IMPORTANT": "Update available",
|
||||
"IMPORTANT_HINT": "Important update!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Get new update.</span><br><span>Important update!</span>",
|
||||
"CRITICAL": "Update available",
|
||||
"CRITICAL_HINT": "Critical update!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Critical update available.</span><i class=\"icon\"></i><span>Update strongly recommended!</span>",
|
||||
"TIME": "System time differs from network",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Wrong system time!</span><br><span>Check and repair your system time.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Create or open the wallet to start using Zano",
|
||||
"BUTTON_NEW_WALLET": "Create new wallet",
|
||||
"BUTTON_OPEN_WALLET": "Open existing wallet",
|
||||
"BUTTON_RESTORE_BACKUP": "Restore from backup",
|
||||
"HELP": "How to create wallet?",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Set wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"TITLE_SAVE": "Save the wallet file.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open",
|
||||
"FILE_NOT_FOUND1": "Wallet file not found",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open wallet\" button.",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Type wallet password",
|
||||
"LABEL": "Password to this wallet",
|
||||
"OPEN": "Open wallet",
|
||||
"SKIP": "Skip",
|
||||
"NOT_FOUND": "Not found"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_PHRASE_KEY": "Seed phrase / tracking seed",
|
||||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match",
|
||||
"KEY_REQUIRED": "Key is required",
|
||||
"KEY_NOT_VALID": "Key not valid"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Create wallet",
|
||||
"BUTTON_COPY": "Copy"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"SELECT_LOCATION": "Select wallet location",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"RESTORE_WALLET": "Restore from backup"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings",
|
||||
"DARK_THEME": "Dark theme",
|
||||
"WHITE_THEME": "White theme",
|
||||
"GRAY_THEME": "Grey theme",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Lock app after:",
|
||||
"TIME1": "5 min",
|
||||
"TIME2": "15 min",
|
||||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
"NEW": "New password",
|
||||
"CONFIRM": "New password confirmation",
|
||||
"BUTTON": "Save"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"PASS_NOT_MATCH": "Old password not match",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
},
|
||||
"LAST_BUILD": "Current build: {{value}}",
|
||||
"APP_LOG_TITLE": "Log level:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Register an alias",
|
||||
"DETAILS": "Details",
|
||||
"LOCK": "Lock",
|
||||
"AVAILABLE_BALANCE": "Available <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Locked <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "What does that mean?",
|
||||
"TABS": {
|
||||
"SEND": "Send",
|
||||
"RECEIVE": "Receive",
|
||||
"HISTORY": "History",
|
||||
"CONTRACTS": "Contracts",
|
||||
"MESSAGES": "Messages",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_FILE_LOCATION": "Wallet file location",
|
||||
"LABEL_SEED_PHRASE": "Seed phrase",
|
||||
"SEED_PHRASE_HINT": "Click to reveal the seed phrase",
|
||||
"BUTTON_SAVE": "Save",
|
||||
"BUTTON_REMOVE": "Close wallet",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later."
|
||||
},
|
||||
"COST": "Alias fee {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"ONE_ALIAS": "You can create only one alias per wallet",
|
||||
"REQUEST_ADD_REG": "The alias will be assigned within 10 minutes"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "You do not have enough funds to change the comment to this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"COST": "Fee {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Edit"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transfer to",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "No wallet with this account exists",
|
||||
"ALIAS_EXISTS": "This account already has an alias",
|
||||
"NO_MONEY": "You do not have enough funds to transfer this alias"
|
||||
},
|
||||
"COST": "Transfer fee {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transfer",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"REQUEST_SEND_REG": "The alias will be transferred within 10 minutes"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Address",
|
||||
"AMOUNT": "Amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"HIDE": "Hide your wallet address from recipient",
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "Transaction sent",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"ALIAS_NOT_VALID": "Alias not valid",
|
||||
"AMOUNT_REQUIRED": "Amount is required",
|
||||
"AMOUNT_ZERO": "Amount is zero",
|
||||
"FEE_REQUIRED": "Fee is required",
|
||||
"FEE_MINIMUM": "Minimum fee: {{fee}}",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
"STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Locked till {{date}}",
|
||||
"SEND": "Sent",
|
||||
"RECEIVED": "Received",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"FEE": "Fee",
|
||||
"ADDRESS": "Address",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "Payment ID",
|
||||
"ID": "Transaction ID",
|
||||
"SIZE": "Transaction size",
|
||||
"SIZE_VALUE": "{{value}} bytes",
|
||||
"HEIGHT": "Height",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Comment"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "hidden",
|
||||
"UNDEFINED": "Undefined",
|
||||
"COMPLETE_BUYER": "Contract completed",
|
||||
"COMPLETE_SELLER": "Contract completed",
|
||||
"CREATE_ALIAS": "Fee for assigning alias",
|
||||
"UPDATE_ALIAS": "Fee for editing alias",
|
||||
"POW_REWARD": "POW reward",
|
||||
"POS_REWARD": "POS reward",
|
||||
"CREATE_CONTRACT": "Contract proposal",
|
||||
"PLEDGE_CONTRACT": "Contract deposit",
|
||||
"NULLIFY_CONTRACT": "Burn deposits",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Cancellation request",
|
||||
"CANCEL_CONTRACT": "Cancel and return deposits"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "No active contracts",
|
||||
"CONTRACTS": "Contracts",
|
||||
"PURCHASE": "Purchase",
|
||||
"SELL": "Sell",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"STATUS": "Status",
|
||||
"COMMENTS": "Comments",
|
||||
"PURCHASE_BUTTON": "New Purchase",
|
||||
"LISTING_BUTTON": "Create listing",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Less than an hour to respond",
|
||||
"REMAINING_ONE": "{{time}} hour remains",
|
||||
"REMAINING_MANY": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT": "{{time}} hours remain",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} hour remains",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_ONE_WAITING": "Waiting for {{time}} hour",
|
||||
"REMAINING_MANY_WAITING": "Waiting for {{time}} hours",
|
||||
"REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "New contract proposal",
|
||||
"IGNORED": "You ignored contract proposal",
|
||||
"ACCEPTED": "Contract started",
|
||||
"WAIT": "Waiting for contract confirmation",
|
||||
"WAITING_BUYER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "You ignored cancellation proposal",
|
||||
"EXPIRED": "Contract proposal has expired"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "Waiting for response",
|
||||
"IGNORED": "Seller ignored your contract proposal",
|
||||
"ACCEPTED": "Seller accepted your contract proposal",
|
||||
"WAIT": "Waiting for deposits confirmation",
|
||||
"WAITING_SELLER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"WAITING_CANCEL": "Waiting for contract cancellation",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract",
|
||||
"EXPIRED": "The contract proposal has expired"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Description",
|
||||
"SELLER": "Seller",
|
||||
"AMOUNT": "Amount",
|
||||
"YOUR_DEPOSIT": "Your deposit",
|
||||
"SELLER_DEPOSIT": "Seller deposit",
|
||||
"BUYER_DEPOSIT": "Buyer deposit",
|
||||
"SAME_AMOUNT": "Same amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"SEND_BUTTON": "Send",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Description required",
|
||||
"DESC_MAXIMUM": "Maximum field length reached",
|
||||
"SELLER_REQUIRED": "Address required",
|
||||
"SELLER_NOT_VALID": "Invalid address",
|
||||
"ALIAS_NOT_VALID": "Invalid alias",
|
||||
"AMOUNT_REQUIRED": "Amount required",
|
||||
"AMOUNT_ZERO": "Amount cannot be zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Deposit required",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Seller deposit required",
|
||||
"SELLER_SAME": "Use separate account",
|
||||
"COMMENT_MAXIMUM": "Maximum field length reached"
|
||||
},
|
||||
"PROGRESS_NEW": "New purchase",
|
||||
"PROGRESS_WAIT": "Awaiting reply",
|
||||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"WAITING_SELLER": "Waiting for response",
|
||||
"WAITING_BUYER": "Contract proposal received",
|
||||
"WAITING_CONFIRMATION": "Waiting for deposits confirmation",
|
||||
"WAITING_DELIVERY": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"IGNORED_BUYER": "Contract proposal ignored",
|
||||
"IGNORED_SELLER": "The seller ignored your contract proposal",
|
||||
"PROPOSAL_CANCEL_SELLER": "Cancellation request sent",
|
||||
"PROPOSAL_CANCEL_BUYER": "Cancellation request received",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract",
|
||||
"IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"EXPIRED": "Contract proposal expired",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contract started",
|
||||
"IGNORED_ACCEPT": "Contract proposal ignored",
|
||||
"BURN_PROPOSAL": "Deposits burned",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contract completed",
|
||||
"SEND_CANCEL_PROPOSAL": "Cancellation request sent",
|
||||
"IGNORED_CANCEL": "Contract cancellation proposal ignored",
|
||||
"DEALS_CANCELED_WAIT": "Cancellation in progress",
|
||||
"WAITING_TIME": "Response time",
|
||||
"NEED_MONEY": "Insufficient funds",
|
||||
"BUTTON_MAKE_PLEDGE": "Accept and make deposit",
|
||||
"BUTTON_IGNORE": "Ignore and hide offer",
|
||||
"BUTTON_NULLIFY": "Terminate and burn deposits",
|
||||
"BUTTON_RECEIVED": "Complete and release deposits",
|
||||
"BUTTON_CANCEL_BUYER": "Cancel and return deposits",
|
||||
"BUTTON_NOT_CANCEL": "Ignore request",
|
||||
"BUTTON_CANCEL_SELLER": "Confirm and return deposits",
|
||||
"HOUR": "hour",
|
||||
"HOURS": "hours",
|
||||
"CANCEL": "Cancel",
|
||||
"NULLIFY_QUESTION": "Are you sure you want to burn both deposits?",
|
||||
"BUTTON_NULLIFY_SHORT": "Burn",
|
||||
"WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Error",
|
||||
"SUCCESS": "Success",
|
||||
"INFO": "Information",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Send",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"TITLE": "Confirm transaction",
|
||||
"MESSAGE": {
|
||||
"SEND": "Send",
|
||||
"FROM": "From",
|
||||
"TO": "To",
|
||||
"COMMENT": "Comment"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Pending",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Time period:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 week",
|
||||
"WEEK2": "2 week",
|
||||
"MONTH1": "1 month",
|
||||
"MONTH3": "3 month",
|
||||
"MONTH6": "6 month",
|
||||
"YEAR": "1 year",
|
||||
"ALL": "All"
|
||||
},
|
||||
"TITLE_GROUP": "Group:",
|
||||
"GROUP": {
|
||||
"DAY": "day",
|
||||
"WEEK": "week",
|
||||
"MONTH": "month"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Contact list",
|
||||
"IMPORT_EXPORT": "Import or export contacts",
|
||||
"IMPORT": "Import",
|
||||
"EXPORT": "Export",
|
||||
"ADD": "Add/edit contact",
|
||||
"SEND": "Send",
|
||||
"SEND_FROM": "Send from",
|
||||
"SEND_TO": "To",
|
||||
"OPEN_ADD_WALLET": "Open/Add wallet",
|
||||
"COPY": "- Copy",
|
||||
"TABLE": {
|
||||
"NAME": "Name",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes",
|
||||
"EMPTY": "Contact list is empty"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Name",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUBLICATED": "Name is dublicated",
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"SET_MASTER_PASSWORD": "Set master password",
|
||||
"ADDRESS_DUBLICATED": "Address is dublicated",
|
||||
"MAX_LENGTH": "Maximum notes length reached",
|
||||
"NAME_LENGTH": "The name must be 4-25 characters long"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Send",
|
||||
"EDIT": "Edit",
|
||||
"DELETE": "Delete",
|
||||
"ADD": "Add contact",
|
||||
"ADD_EDIT": "Add/Save",
|
||||
"GO_TO_WALLET": "Go to wallet",
|
||||
"IMPORT_EXPORT": "Import/export"
|
||||
},
|
||||
"SUCCESS_SENT": "Contact added",
|
||||
"SUCCESS_SAVE": "Contact is edited",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Error is occured while reading file!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Not enough money",
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error: core is busy",
|
||||
"DAEMON_BUSY": "Internal error: daemon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with",
|
||||
"TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Transaction not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.",
|
||||
"TX_TYPE_NORMAL": "Error. The payment from the wallet",
|
||||
"TX_TYPE_NORMAL_TO": "to",
|
||||
"TX_TYPE_NORMAL_END": "was not completed.",
|
||||
"TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Please try again.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe",
|
||||
"TX_TYPE_COIN_BASE": "Error. The payment was not completed."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copy",
|
||||
"PASTE": "paste",
|
||||
"SELECT": "select all"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Quit",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Payment received",
|
||||
"MINED": "Mined",
|
||||
"LOCKED": "Blocked",
|
||||
"IS_MINIMIZE": "Zano application is minimized to the system tray",
|
||||
"RESTORE": "You can recover it by clicking or using the context menu",
|
||||
"TRAY_MENU_SHOW": "Resize",
|
||||
"TRAY_MENU_MINIMIZE": "Minimize"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Setup master password",
|
||||
"SETUP_CONFIRM_PASS": "Confirm the password",
|
||||
"MASTER_PASS": "Master password",
|
||||
"BUTTON_NEXT": "Next",
|
||||
"BUTTON_SKIP": "Skip",
|
||||
"BUTTON_RESET": "Reset",
|
||||
"INCORRECT_PASSWORD": "Invalid password",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"CONFIRM_REQUIRED": "Confirmation is required",
|
||||
"MISMATCH": "Mismatch"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Go back"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"SAVE_PHRASE": "Save your seed phrase",
|
||||
"OPEN_WALLET": "Open existing wallet",
|
||||
"RESTORE_WALLET": "Restore from backup",
|
||||
"WALLET_DETAILS": "Wallet details",
|
||||
"ASSIGN_ALIAS": "Assign alias",
|
||||
"EDIT_ALIAS": "Edit alias",
|
||||
"TRANSFER_ALIAS": "Transfer alias",
|
||||
"CONTRACTS": "Contracts",
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"OLD_PURCHASE": "Purchase"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Wallets",
|
||||
"ADD_NEW": "+ Add",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "New offers/Messages",
|
||||
"SYNCING": "Syncing wallet"
|
||||
},
|
||||
"CONTACTS": "Contacts",
|
||||
"SETTINGS": "Settings",
|
||||
"LOG_OUT": "Log out",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "System error",
|
||||
"COMPLETE": "Completion",
|
||||
"SYNCING": "Syncing blockchain",
|
||||
"LOADING": "Loading blockchain data"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Update available",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Get new update.</span><br><span>Update is recommended!</span>",
|
||||
"IMPORTANT": "Update available",
|
||||
"IMPORTANT_HINT": "Important update!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Get new update.</span><br><span>Important update!</span>",
|
||||
"CRITICAL": "Update available",
|
||||
"CRITICAL_HINT": "Critical update!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Critical update available.</span><i class=\"icon\"></i><span>Update strongly recommended!</span>",
|
||||
"TIME": "System time differs from network",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Wrong system time!</span><br><span>Check and repair your system time.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Create or open the wallet to start using Zano",
|
||||
"BUTTON_NEW_WALLET": "Create new wallet",
|
||||
"BUTTON_OPEN_WALLET": "Open existing wallet",
|
||||
"BUTTON_RESTORE_BACKUP": "Restore from backup",
|
||||
"HELP": "How to create wallet?",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Set wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"TITLE_SAVE": "Save the wallet file.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open",
|
||||
"FILE_NOT_FOUND1": "Wallet file not found",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open wallet\" button.",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Type wallet password",
|
||||
"LABEL": "Password to this wallet",
|
||||
"OPEN": "Open wallet",
|
||||
"SKIP": "Skip",
|
||||
"NOT_FOUND": "Not found"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_PHRASE_KEY": "Seed phrase / tracking seed",
|
||||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match",
|
||||
"KEY_REQUIRED": "Key is required",
|
||||
"KEY_NOT_VALID": "Key not valid"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Create wallet",
|
||||
"BUTTON_COPY": "Copy"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"SELECT_LOCATION": "Select wallet location",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"RESTORE_WALLET": "Restore from backup"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings",
|
||||
"DARK_THEME": "Dark theme",
|
||||
"WHITE_THEME": "White theme",
|
||||
"GRAY_THEME": "Grey theme",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Lock app after:",
|
||||
"TIME1": "5 min",
|
||||
"TIME2": "15 min",
|
||||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
"NEW": "New password",
|
||||
"CONFIRM": "New password confirmation",
|
||||
"BUTTON": "Save"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"PASS_NOT_MATCH": "Old password not match",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
},
|
||||
"LAST_BUILD": "Current build: {{value}}",
|
||||
"APP_LOG_TITLE": "Log level:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Register an alias",
|
||||
"DETAILS": "Details",
|
||||
"LOCK": "Lock",
|
||||
"AVAILABLE_BALANCE": "Available <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Locked <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "What does that mean?",
|
||||
"TABS": {
|
||||
"SEND": "Send",
|
||||
"RECEIVE": "Receive",
|
||||
"HISTORY": "History",
|
||||
"CONTRACTS": "Contracts",
|
||||
"MESSAGES": "Messages",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_FILE_LOCATION": "Wallet file location",
|
||||
"LABEL_SEED_PHRASE": "Seed phrase",
|
||||
"SEED_PHRASE_HINT": "Click to reveal the seed phrase",
|
||||
"BUTTON_SAVE": "Save",
|
||||
"BUTTON_REMOVE": "Close wallet",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later."
|
||||
},
|
||||
"COST": "Alias fee {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"ONE_ALIAS": "You can create only one alias per wallet",
|
||||
"REQUEST_ADD_REG": "The alias will be assigned within 10 minutes"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "You do not have enough funds to change the comment to this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"COST": "Fee {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Edit"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transfer to",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "No wallet with this account exists",
|
||||
"ALIAS_EXISTS": "This account already has an alias",
|
||||
"NO_MONEY": "You do not have enough funds to transfer this alias"
|
||||
},
|
||||
"COST": "Transfer fee {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transfer",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"REQUEST_SEND_REG": "The alias will be transferred within 10 minutes"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Address",
|
||||
"AMOUNT": "Amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"HIDE": "Hide your wallet address from recipient",
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "Transaction sent",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"ALIAS_NOT_VALID": "Alias not valid",
|
||||
"AMOUNT_REQUIRED": "Amount is required",
|
||||
"AMOUNT_ZERO": "Amount is zero",
|
||||
"FEE_REQUIRED": "Fee is required",
|
||||
"FEE_MINIMUM": "Minimum fee: {{fee}}",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
"STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Locked till {{date}}",
|
||||
"SEND": "Sent",
|
||||
"RECEIVED": "Received",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"FEE": "Fee",
|
||||
"ADDRESS": "Address",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "Payment ID",
|
||||
"ID": "Transaction ID",
|
||||
"SIZE": "Transaction size",
|
||||
"SIZE_VALUE": "{{value}} bytes",
|
||||
"HEIGHT": "Height",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Comment"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "hidden",
|
||||
"UNDEFINED": "Undefined",
|
||||
"COMPLETE_BUYER": "Contract completed",
|
||||
"COMPLETE_SELLER": "Contract completed",
|
||||
"CREATE_ALIAS": "Fee for assigning alias",
|
||||
"UPDATE_ALIAS": "Fee for editing alias",
|
||||
"POW_REWARD": "POW reward",
|
||||
"POS_REWARD": "POS reward",
|
||||
"CREATE_CONTRACT": "Contract proposal",
|
||||
"PLEDGE_CONTRACT": "Contract deposit",
|
||||
"NULLIFY_CONTRACT": "Burn deposits",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Cancellation request",
|
||||
"CANCEL_CONTRACT": "Cancel and return deposits"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "No active contracts",
|
||||
"CONTRACTS": "Contracts",
|
||||
"PURCHASE": "Purchase",
|
||||
"SELL": "Sell",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"STATUS": "Status",
|
||||
"COMMENTS": "Comments",
|
||||
"PURCHASE_BUTTON": "New Purchase",
|
||||
"LISTING_BUTTON": "Create listing",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Less than an hour to respond",
|
||||
"REMAINING_ONE": "{{time}} hour remains",
|
||||
"REMAINING_MANY": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT": "{{time}} hours remain",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} hour remains",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_ONE_WAITING": "Waiting for {{time}} hour",
|
||||
"REMAINING_MANY_WAITING": "Waiting for {{time}} hours",
|
||||
"REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "New contract proposal",
|
||||
"IGNORED": "You ignored contract proposal",
|
||||
"ACCEPTED": "Contract started",
|
||||
"WAIT": "Waiting for contract confirmation",
|
||||
"WAITING_BUYER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "You ignored cancellation proposal",
|
||||
"EXPIRED": "Contract proposal has expired"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "Waiting for response",
|
||||
"IGNORED": "Seller ignored your contract proposal",
|
||||
"ACCEPTED": "Seller accepted your contract proposal",
|
||||
"WAIT": "Waiting for deposits confirmation",
|
||||
"WAITING_SELLER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"WAITING_CANCEL": "Waiting for contract cancellation",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract",
|
||||
"EXPIRED": "The contract proposal has expired"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Description",
|
||||
"SELLER": "Seller",
|
||||
"AMOUNT": "Amount",
|
||||
"YOUR_DEPOSIT": "Your deposit",
|
||||
"SELLER_DEPOSIT": "Seller deposit",
|
||||
"BUYER_DEPOSIT": "Buyer deposit",
|
||||
"SAME_AMOUNT": "Same amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"SEND_BUTTON": "Send",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Description required",
|
||||
"DESC_MAXIMUM": "Maximum field length reached",
|
||||
"SELLER_REQUIRED": "Address required",
|
||||
"SELLER_NOT_VALID": "Invalid address",
|
||||
"ALIAS_NOT_VALID": "Invalid alias",
|
||||
"AMOUNT_REQUIRED": "Amount required",
|
||||
"AMOUNT_ZERO": "Amount cannot be zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Deposit required",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Seller deposit required",
|
||||
"SELLER_SAME": "Use separate account",
|
||||
"COMMENT_MAXIMUM": "Maximum field length reached"
|
||||
},
|
||||
"PROGRESS_NEW": "New purchase",
|
||||
"PROGRESS_WAIT": "Awaiting reply",
|
||||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"WAITING_SELLER": "Waiting for response",
|
||||
"WAITING_BUYER": "Contract proposal received",
|
||||
"WAITING_CONFIRMATION": "Waiting for deposits confirmation",
|
||||
"WAITING_DELIVERY": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"IGNORED_BUYER": "Contract proposal ignored",
|
||||
"IGNORED_SELLER": "The seller ignored your contract proposal",
|
||||
"PROPOSAL_CANCEL_SELLER": "Cancellation request sent",
|
||||
"PROPOSAL_CANCEL_BUYER": "Cancellation request received",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract",
|
||||
"IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"EXPIRED": "Contract proposal expired",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contract started",
|
||||
"IGNORED_ACCEPT": "Contract proposal ignored",
|
||||
"BURN_PROPOSAL": "Deposits burned",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contract completed",
|
||||
"SEND_CANCEL_PROPOSAL": "Cancellation request sent",
|
||||
"IGNORED_CANCEL": "Contract cancellation proposal ignored",
|
||||
"DEALS_CANCELED_WAIT": "Cancellation in progress",
|
||||
"WAITING_TIME": "Response time",
|
||||
"NEED_MONEY": "Insufficient funds",
|
||||
"BUTTON_MAKE_PLEDGE": "Accept and make deposit",
|
||||
"BUTTON_IGNORE": "Ignore and hide offer",
|
||||
"BUTTON_NULLIFY": "Terminate and burn deposits",
|
||||
"BUTTON_RECEIVED": "Complete and release deposits",
|
||||
"BUTTON_CANCEL_BUYER": "Cancel and return deposits",
|
||||
"BUTTON_NOT_CANCEL": "Ignore request",
|
||||
"BUTTON_CANCEL_SELLER": "Confirm and return deposits",
|
||||
"HOUR": "hour",
|
||||
"HOURS": "hours",
|
||||
"CANCEL": "Cancel",
|
||||
"NULLIFY_QUESTION": "Are you sure you want to burn both deposits?",
|
||||
"BUTTON_NULLIFY_SHORT": "Burn",
|
||||
"WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Error",
|
||||
"SUCCESS": "Success",
|
||||
"INFO": "Information",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Send",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"TITLE": "Confirm transaction",
|
||||
"MESSAGE": {
|
||||
"SEND": "Send",
|
||||
"FROM": "From",
|
||||
"TO": "To",
|
||||
"COMMENT": "Comment"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Pending",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Time period:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 week",
|
||||
"WEEK2": "2 week",
|
||||
"MONTH1": "1 month",
|
||||
"MONTH3": "3 month",
|
||||
"MONTH6": "6 month",
|
||||
"YEAR": "1 year",
|
||||
"ALL": "All"
|
||||
},
|
||||
"TITLE_GROUP": "Group:",
|
||||
"GROUP": {
|
||||
"DAY": "day",
|
||||
"WEEK": "week",
|
||||
"MONTH": "month"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Contact list",
|
||||
"IMPORT_EXPORT": "Import or export contacts",
|
||||
"IMPORT": "Import",
|
||||
"EXPORT": "Export",
|
||||
"ADD": "Add/edit contact",
|
||||
"SEND": "Send",
|
||||
"SEND_FROM": "Send from",
|
||||
"SEND_TO": "To",
|
||||
"OPEN_ADD_WALLET": "Open/Add wallet",
|
||||
"COPY": "- Copy",
|
||||
"TABLE": {
|
||||
"NAME": "Name",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes",
|
||||
"EMPTY": "Contact list is empty"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Name",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUBLICATED": "Name is dublicated",
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"SET_MASTER_PASSWORD": "Set master password",
|
||||
"ADDRESS_DUBLICATED": "Address is dublicated",
|
||||
"MAX_LENGTH": "Maximum notes length reached",
|
||||
"NAME_LENGTH": "The name must be 4-25 characters long"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Send",
|
||||
"EDIT": "Edit",
|
||||
"DELETE": "Delete",
|
||||
"ADD": "Add contact",
|
||||
"ADD_EDIT": "Add/Save",
|
||||
"GO_TO_WALLET": "Go to wallet",
|
||||
"IMPORT_EXPORT": "Import/export"
|
||||
},
|
||||
"SUCCESS_SENT": "Contact added",
|
||||
"SUCCESS_SAVE": "Contact is edited",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Error is occured while reading file!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Not enough money",
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error: core is busy",
|
||||
"DAEMON_BUSY": "Internal error: daemon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with",
|
||||
"TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Transaction not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.",
|
||||
"TX_TYPE_NORMAL": "Error. The payment from the wallet",
|
||||
"TX_TYPE_NORMAL_TO": "to",
|
||||
"TX_TYPE_NORMAL_END": "was not completed.",
|
||||
"TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Please try again.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe",
|
||||
"TX_TYPE_COIN_BASE": "Error. The payment was not completed."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copy",
|
||||
"PASTE": "paste",
|
||||
"SELECT": "select all"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Quit",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Payment received",
|
||||
"MINED": "Mined",
|
||||
"LOCKED": "Blocked",
|
||||
"IS_MINIMIZE": "Zano application is minimized to the system tray",
|
||||
"RESTORE": "You can recover it by clicking or using the context menu",
|
||||
"TRAY_MENU_SHOW": "Resize",
|
||||
"TRAY_MENU_MINIMIZE": "Minimize"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Setup master password",
|
||||
"SETUP_CONFIRM_PASS": "Confirm the password",
|
||||
"MASTER_PASS": "Master password",
|
||||
"BUTTON_NEXT": "Next",
|
||||
"BUTTON_SKIP": "Skip",
|
||||
"BUTTON_RESET": "Reset",
|
||||
"INCORRECT_PASSWORD": "Invalid password",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"CONFIRM_REQUIRED": "Confirmation is required",
|
||||
"MISMATCH": "Mismatch"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Go back"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"SAVE_PHRASE": "Save your seed phrase",
|
||||
"OPEN_WALLET": "Open existing wallet",
|
||||
"RESTORE_WALLET": "Restore from backup",
|
||||
"WALLET_DETAILS": "Wallet details",
|
||||
"ASSIGN_ALIAS": "Assign alias",
|
||||
"EDIT_ALIAS": "Edit alias",
|
||||
"TRANSFER_ALIAS": "Transfer alias",
|
||||
"CONTRACTS": "Contracts",
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"OLD_PURCHASE": "Purchase"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Wallets",
|
||||
"ADD_NEW": "+ Add",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "New offers/Messages",
|
||||
"SYNCING": "Syncing wallet"
|
||||
},
|
||||
"CONTACTS": "Contacts",
|
||||
"SETTINGS": "Settings",
|
||||
"LOG_OUT": "Log out",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "System error",
|
||||
"COMPLETE": "Completion",
|
||||
"SYNCING": "Syncing blockchain",
|
||||
"LOADING": "Loading blockchain data"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Update available",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Get new update.</span><br><span>Update is recommended!</span>",
|
||||
"IMPORTANT": "Update available",
|
||||
"IMPORTANT_HINT": "Important update!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Get new update.</span><br><span>Important update!</span>",
|
||||
"CRITICAL": "Update available",
|
||||
"CRITICAL_HINT": "Critical update!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Critical update available.</span><i class=\"icon\"></i><span>Update strongly recommended!</span>",
|
||||
"TIME": "System time differs from network",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Wrong system time!</span><br><span>Check and repair your system time.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Create or open the wallet to start using Zano",
|
||||
"BUTTON_NEW_WALLET": "Create new wallet",
|
||||
"BUTTON_OPEN_WALLET": "Open existing wallet",
|
||||
"BUTTON_RESTORE_BACKUP": "Restore from backup",
|
||||
"HELP": "How to create wallet?",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Set wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"TITLE_SAVE": "Save the wallet file.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open",
|
||||
"FILE_NOT_FOUND1": "Wallet file not found",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open wallet\" button.",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Type wallet password",
|
||||
"LABEL": "Password to this wallet",
|
||||
"OPEN": "Open wallet",
|
||||
"SKIP": "Skip",
|
||||
"NOT_FOUND": "Not found"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_PHRASE_KEY": "Seed phrase / tracking seed",
|
||||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match",
|
||||
"KEY_REQUIRED": "Key is required",
|
||||
"KEY_NOT_VALID": "Key not valid"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Create wallet",
|
||||
"BUTTON_COPY": "Copy"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"SELECT_LOCATION": "Select wallet location",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"RESTORE_WALLET": "Restore from backup"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings",
|
||||
"DARK_THEME": "Dark theme",
|
||||
"WHITE_THEME": "White theme",
|
||||
"GRAY_THEME": "Grey theme",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Lock app after:",
|
||||
"TIME1": "5 min",
|
||||
"TIME2": "15 min",
|
||||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
"NEW": "New password",
|
||||
"CONFIRM": "New password confirmation",
|
||||
"BUTTON": "Save"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"PASS_NOT_MATCH": "Old password not match",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
},
|
||||
"LAST_BUILD": "Current build: {{value}}",
|
||||
"APP_LOG_TITLE": "Log level:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Register an alias",
|
||||
"DETAILS": "Details",
|
||||
"LOCK": "Lock",
|
||||
"AVAILABLE_BALANCE": "Available <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Locked <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "What does that mean?",
|
||||
"TABS": {
|
||||
"SEND": "Send",
|
||||
"RECEIVE": "Receive",
|
||||
"HISTORY": "History",
|
||||
"CONTRACTS": "Contracts",
|
||||
"MESSAGES": "Messages",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_FILE_LOCATION": "Wallet file location",
|
||||
"LABEL_SEED_PHRASE": "Seed phrase",
|
||||
"SEED_PHRASE_HINT": "Click to reveal the seed phrase",
|
||||
"BUTTON_SAVE": "Save",
|
||||
"BUTTON_REMOVE": "Close wallet",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later."
|
||||
},
|
||||
"COST": "Alias fee {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"ONE_ALIAS": "You can create only one alias per wallet",
|
||||
"REQUEST_ADD_REG": "The alias will be assigned within 10 minutes"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "You do not have enough funds to change the comment to this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"COST": "Fee {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Edit"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transfer to",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "No wallet with this account exists",
|
||||
"ALIAS_EXISTS": "This account already has an alias",
|
||||
"NO_MONEY": "You do not have enough funds to transfer this alias"
|
||||
},
|
||||
"COST": "Transfer fee {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transfer",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"REQUEST_SEND_REG": "The alias will be transferred within 10 minutes"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Address",
|
||||
"AMOUNT": "Amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"HIDE": "Hide your wallet address from recipient",
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "Transaction sent",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"ALIAS_NOT_VALID": "Alias not valid",
|
||||
"AMOUNT_REQUIRED": "Amount is required",
|
||||
"AMOUNT_ZERO": "Amount is zero",
|
||||
"FEE_REQUIRED": "Fee is required",
|
||||
"FEE_MINIMUM": "Minimum fee: {{fee}}",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
"STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Locked till {{date}}",
|
||||
"SEND": "Sent",
|
||||
"RECEIVED": "Received",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"FEE": "Fee",
|
||||
"ADDRESS": "Address",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "Payment ID",
|
||||
"ID": "Transaction ID",
|
||||
"SIZE": "Transaction size",
|
||||
"SIZE_VALUE": "{{value}} bytes",
|
||||
"HEIGHT": "Height",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Comment"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "hidden",
|
||||
"UNDEFINED": "Undefined",
|
||||
"COMPLETE_BUYER": "Contract completed",
|
||||
"COMPLETE_SELLER": "Contract completed",
|
||||
"CREATE_ALIAS": "Fee for assigning alias",
|
||||
"UPDATE_ALIAS": "Fee for editing alias",
|
||||
"POW_REWARD": "POW reward",
|
||||
"POS_REWARD": "POS reward",
|
||||
"CREATE_CONTRACT": "Contract proposal",
|
||||
"PLEDGE_CONTRACT": "Contract deposit",
|
||||
"NULLIFY_CONTRACT": "Burn deposits",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Cancellation request",
|
||||
"CANCEL_CONTRACT": "Cancel and return deposits"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "No active contracts",
|
||||
"CONTRACTS": "Contracts",
|
||||
"PURCHASE": "Purchase",
|
||||
"SELL": "Sell",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"STATUS": "Status",
|
||||
"COMMENTS": "Comments",
|
||||
"PURCHASE_BUTTON": "New Purchase",
|
||||
"LISTING_BUTTON": "Create listing",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Less than an hour to respond",
|
||||
"REMAINING_ONE": "{{time}} hour remains",
|
||||
"REMAINING_MANY": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT": "{{time}} hours remain",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} hour remains",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_ONE_WAITING": "Waiting for {{time}} hour",
|
||||
"REMAINING_MANY_WAITING": "Waiting for {{time}} hours",
|
||||
"REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "New contract proposal",
|
||||
"IGNORED": "You ignored contract proposal",
|
||||
"ACCEPTED": "Contract started",
|
||||
"WAIT": "Waiting for contract confirmation",
|
||||
"WAITING_BUYER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "You ignored cancellation proposal",
|
||||
"EXPIRED": "Contract proposal has expired"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "Waiting for response",
|
||||
"IGNORED": "Seller ignored your contract proposal",
|
||||
"ACCEPTED": "Seller accepted your contract proposal",
|
||||
"WAIT": "Waiting for deposits confirmation",
|
||||
"WAITING_SELLER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"WAITING_CANCEL": "Waiting for contract cancellation",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract",
|
||||
"EXPIRED": "The contract proposal has expired"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Description",
|
||||
"SELLER": "Seller",
|
||||
"AMOUNT": "Amount",
|
||||
"YOUR_DEPOSIT": "Your deposit",
|
||||
"SELLER_DEPOSIT": "Seller deposit",
|
||||
"BUYER_DEPOSIT": "Buyer deposit",
|
||||
"SAME_AMOUNT": "Same amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"SEND_BUTTON": "Send",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Description required",
|
||||
"DESC_MAXIMUM": "Maximum field length reached",
|
||||
"SELLER_REQUIRED": "Address required",
|
||||
"SELLER_NOT_VALID": "Invalid address",
|
||||
"ALIAS_NOT_VALID": "Invalid alias",
|
||||
"AMOUNT_REQUIRED": "Amount required",
|
||||
"AMOUNT_ZERO": "Amount cannot be zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Deposit required",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Seller deposit required",
|
||||
"SELLER_SAME": "Use separate account",
|
||||
"COMMENT_MAXIMUM": "Maximum field length reached"
|
||||
},
|
||||
"PROGRESS_NEW": "New purchase",
|
||||
"PROGRESS_WAIT": "Awaiting reply",
|
||||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"WAITING_SELLER": "Waiting for response",
|
||||
"WAITING_BUYER": "Contract proposal received",
|
||||
"WAITING_CONFIRMATION": "Waiting for deposits confirmation",
|
||||
"WAITING_DELIVERY": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"IGNORED_BUYER": "Contract proposal ignored",
|
||||
"IGNORED_SELLER": "The seller ignored your contract proposal",
|
||||
"PROPOSAL_CANCEL_SELLER": "Cancellation request sent",
|
||||
"PROPOSAL_CANCEL_BUYER": "Cancellation request received",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract",
|
||||
"IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"EXPIRED": "Contract proposal expired",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contract started",
|
||||
"IGNORED_ACCEPT": "Contract proposal ignored",
|
||||
"BURN_PROPOSAL": "Deposits burned",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contract completed",
|
||||
"SEND_CANCEL_PROPOSAL": "Cancellation request sent",
|
||||
"IGNORED_CANCEL": "Contract cancellation proposal ignored",
|
||||
"DEALS_CANCELED_WAIT": "Cancellation in progress",
|
||||
"WAITING_TIME": "Response time",
|
||||
"NEED_MONEY": "Insufficient funds",
|
||||
"BUTTON_MAKE_PLEDGE": "Accept and make deposit",
|
||||
"BUTTON_IGNORE": "Ignore and hide offer",
|
||||
"BUTTON_NULLIFY": "Terminate and burn deposits",
|
||||
"BUTTON_RECEIVED": "Complete and release deposits",
|
||||
"BUTTON_CANCEL_BUYER": "Cancel and return deposits",
|
||||
"BUTTON_NOT_CANCEL": "Ignore request",
|
||||
"BUTTON_CANCEL_SELLER": "Confirm and return deposits",
|
||||
"HOUR": "hour",
|
||||
"HOURS": "hours",
|
||||
"CANCEL": "Cancel",
|
||||
"NULLIFY_QUESTION": "Are you sure you want to burn both deposits?",
|
||||
"BUTTON_NULLIFY_SHORT": "Burn",
|
||||
"WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Error",
|
||||
"SUCCESS": "Success",
|
||||
"INFO": "Information",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Send",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"TITLE": "Confirm transaction",
|
||||
"MESSAGE": {
|
||||
"SEND": "Send",
|
||||
"FROM": "From",
|
||||
"TO": "To",
|
||||
"COMMENT": "Comment"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Pending",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Time period:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 week",
|
||||
"WEEK2": "2 week",
|
||||
"MONTH1": "1 month",
|
||||
"MONTH3": "3 month",
|
||||
"MONTH6": "6 month",
|
||||
"YEAR": "1 year",
|
||||
"ALL": "All"
|
||||
},
|
||||
"TITLE_GROUP": "Group:",
|
||||
"GROUP": {
|
||||
"DAY": "day",
|
||||
"WEEK": "week",
|
||||
"MONTH": "month"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Contact list",
|
||||
"IMPORT_EXPORT": "Import or export contacts",
|
||||
"IMPORT": "Import",
|
||||
"EXPORT": "Export",
|
||||
"ADD": "Add/edit contact",
|
||||
"SEND": "Send",
|
||||
"SEND_FROM": "Send from",
|
||||
"SEND_TO": "To",
|
||||
"OPEN_ADD_WALLET": "Open/Add wallet",
|
||||
"COPY": "- Copy",
|
||||
"TABLE": {
|
||||
"NAME": "Name",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes",
|
||||
"EMPTY": "Contact list is empty"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Name",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUBLICATED": "Name is dublicated",
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"SET_MASTER_PASSWORD": "Set master password",
|
||||
"ADDRESS_DUBLICATED": "Address is dublicated",
|
||||
"MAX_LENGTH": "Maximum notes length reached",
|
||||
"NAME_LENGTH": "The name must be 4-25 characters long"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Send",
|
||||
"EDIT": "Edit",
|
||||
"DELETE": "Delete",
|
||||
"ADD": "Add contact",
|
||||
"ADD_EDIT": "Add/Save",
|
||||
"GO_TO_WALLET": "Go to wallet",
|
||||
"IMPORT_EXPORT": "Import/export"
|
||||
},
|
||||
"SUCCESS_SENT": "Contact added",
|
||||
"SUCCESS_SAVE": "Contact is edited",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Error is occured while reading file!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Not enough money",
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error: core is busy",
|
||||
"DAEMON_BUSY": "Internal error: daemon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with",
|
||||
"TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Transaction not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.",
|
||||
"TX_TYPE_NORMAL": "Error. The payment from the wallet",
|
||||
"TX_TYPE_NORMAL_TO": "to",
|
||||
"TX_TYPE_NORMAL_END": "was not completed.",
|
||||
"TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Please try again.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe",
|
||||
"TX_TYPE_COIN_BASE": "Error. The payment was not completed."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copy",
|
||||
"PASTE": "paste",
|
||||
"SELECT": "select all"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Quit",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Payment received",
|
||||
"MINED": "Mined",
|
||||
"LOCKED": "Blocked",
|
||||
"IS_MINIMIZE": "Zano application is minimized to the system tray",
|
||||
"RESTORE": "You can recover it by clicking or using the context menu",
|
||||
"TRAY_MENU_SHOW": "Resize",
|
||||
"TRAY_MENU_MINIMIZE": "Minimize"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Setup master password",
|
||||
"SETUP_CONFIRM_PASS": "Confirm the password",
|
||||
"MASTER_PASS": "Master password",
|
||||
"BUTTON_NEXT": "Next",
|
||||
"BUTTON_SKIP": "Skip",
|
||||
"BUTTON_RESET": "Reset",
|
||||
"INCORRECT_PASSWORD": "Invalid password",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"CONFIRM_REQUIRED": "Confirmation is required",
|
||||
"MISMATCH": "Mismatch"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Go back"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"SAVE_PHRASE": "Save your seed phrase",
|
||||
"OPEN_WALLET": "Open existing wallet",
|
||||
"RESTORE_WALLET": "Restore from backup",
|
||||
"WALLET_DETAILS": "Wallet details",
|
||||
"ASSIGN_ALIAS": "Assign alias",
|
||||
"EDIT_ALIAS": "Edit alias",
|
||||
"TRANSFER_ALIAS": "Transfer alias",
|
||||
"CONTRACTS": "Contracts",
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"OLD_PURCHASE": "Purchase"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Wallets",
|
||||
"ADD_NEW": "+ Add",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "New offers/Messages",
|
||||
"SYNCING": "Syncing wallet"
|
||||
},
|
||||
"CONTACTS": "Contacts",
|
||||
"SETTINGS": "Settings",
|
||||
"LOG_OUT": "Log out",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "System error",
|
||||
"COMPLETE": "Completion",
|
||||
"SYNCING": "Syncing blockchain",
|
||||
"LOADING": "Loading blockchain data"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Update available",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Get new update.</span><br><span>Update is recommended!</span>",
|
||||
"IMPORTANT": "Update available",
|
||||
"IMPORTANT_HINT": "Important update!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Get new update.</span><br><span>Important update!</span>",
|
||||
"CRITICAL": "Update available",
|
||||
"CRITICAL_HINT": "Critical update!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Critical update available.</span><i class=\"icon\"></i><span>Update strongly recommended!</span>",
|
||||
"TIME": "System time differs from network",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Wrong system time!</span><br><span>Check and repair your system time.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Create or open the wallet to start using Zano",
|
||||
"BUTTON_NEW_WALLET": "Create new wallet",
|
||||
"BUTTON_OPEN_WALLET": "Open existing wallet",
|
||||
"BUTTON_RESTORE_BACKUP": "Restore from backup",
|
||||
"HELP": "How to create wallet?",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Set wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"TITLE_SAVE": "Save the wallet file.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open",
|
||||
"FILE_NOT_FOUND1": "Wallet file not found",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open wallet\" button.",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Type wallet password",
|
||||
"LABEL": "Password to this wallet",
|
||||
"OPEN": "Open wallet",
|
||||
"SKIP": "Skip",
|
||||
"NOT_FOUND": "Not found"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_PHRASE_KEY": "Seed phrase / tracking seed",
|
||||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match",
|
||||
"KEY_REQUIRED": "Key is required",
|
||||
"KEY_NOT_VALID": "Key not valid"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Create wallet",
|
||||
"BUTTON_COPY": "Copy"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"SELECT_LOCATION": "Select wallet location",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"RESTORE_WALLET": "Restore from backup"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings",
|
||||
"DARK_THEME": "Dark theme",
|
||||
"WHITE_THEME": "White theme",
|
||||
"GRAY_THEME": "Grey theme",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Lock app after:",
|
||||
"TIME1": "5 min",
|
||||
"TIME2": "15 min",
|
||||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
"NEW": "New password",
|
||||
"CONFIRM": "New password confirmation",
|
||||
"BUTTON": "Save"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"PASS_NOT_MATCH": "Old password not match",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
},
|
||||
"LAST_BUILD": "Current build: {{value}}",
|
||||
"APP_LOG_TITLE": "Log level:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Register an alias",
|
||||
"DETAILS": "Details",
|
||||
"LOCK": "Lock",
|
||||
"AVAILABLE_BALANCE": "Available <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Locked <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "What does that mean?",
|
||||
"TABS": {
|
||||
"SEND": "Send",
|
||||
"RECEIVE": "Receive",
|
||||
"HISTORY": "History",
|
||||
"CONTRACTS": "Contracts",
|
||||
"MESSAGES": "Messages",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_FILE_LOCATION": "Wallet file location",
|
||||
"LABEL_SEED_PHRASE": "Seed phrase",
|
||||
"SEED_PHRASE_HINT": "Click to reveal the seed phrase",
|
||||
"BUTTON_SAVE": "Save",
|
||||
"BUTTON_REMOVE": "Close wallet",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later."
|
||||
},
|
||||
"COST": "Alias fee {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"ONE_ALIAS": "You can create only one alias per wallet",
|
||||
"REQUEST_ADD_REG": "The alias will be assigned within 10 minutes"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "You do not have enough funds to change the comment to this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"COST": "Fee {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Edit"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transfer to",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "No wallet with this account exists",
|
||||
"ALIAS_EXISTS": "This account already has an alias",
|
||||
"NO_MONEY": "You do not have enough funds to transfer this alias"
|
||||
},
|
||||
"COST": "Transfer fee {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transfer",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"REQUEST_SEND_REG": "The alias will be transferred within 10 minutes"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Address",
|
||||
"AMOUNT": "Amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"HIDE": "Hide your wallet address from recipient",
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "Transaction sent",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"ALIAS_NOT_VALID": "Alias not valid",
|
||||
"AMOUNT_REQUIRED": "Amount is required",
|
||||
"AMOUNT_ZERO": "Amount is zero",
|
||||
"FEE_REQUIRED": "Fee is required",
|
||||
"FEE_MINIMUM": "Minimum fee: {{fee}}",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
"STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Locked till {{date}}",
|
||||
"SEND": "Sent",
|
||||
"RECEIVED": "Received",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"FEE": "Fee",
|
||||
"ADDRESS": "Address",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "Payment ID",
|
||||
"ID": "Transaction ID",
|
||||
"SIZE": "Transaction size",
|
||||
"SIZE_VALUE": "{{value}} bytes",
|
||||
"HEIGHT": "Height",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Comment"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "hidden",
|
||||
"UNDEFINED": "Undefined",
|
||||
"COMPLETE_BUYER": "Contract completed",
|
||||
"COMPLETE_SELLER": "Contract completed",
|
||||
"CREATE_ALIAS": "Fee for assigning alias",
|
||||
"UPDATE_ALIAS": "Fee for editing alias",
|
||||
"POW_REWARD": "POW reward",
|
||||
"POS_REWARD": "POS reward",
|
||||
"CREATE_CONTRACT": "Contract proposal",
|
||||
"PLEDGE_CONTRACT": "Contract deposit",
|
||||
"NULLIFY_CONTRACT": "Burn deposits",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Cancellation request",
|
||||
"CANCEL_CONTRACT": "Cancel and return deposits"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "No active contracts",
|
||||
"CONTRACTS": "Contracts",
|
||||
"PURCHASE": "Purchase",
|
||||
"SELL": "Sell",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"STATUS": "Status",
|
||||
"COMMENTS": "Comments",
|
||||
"PURCHASE_BUTTON": "New Purchase",
|
||||
"LISTING_BUTTON": "Create listing",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Less than an hour to respond",
|
||||
"REMAINING_ONE": "{{time}} hour remains",
|
||||
"REMAINING_MANY": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT": "{{time}} hours remain",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} hour remains",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_ONE_WAITING": "Waiting for {{time}} hour",
|
||||
"REMAINING_MANY_WAITING": "Waiting for {{time}} hours",
|
||||
"REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "New contract proposal",
|
||||
"IGNORED": "You ignored contract proposal",
|
||||
"ACCEPTED": "Contract started",
|
||||
"WAIT": "Waiting for contract confirmation",
|
||||
"WAITING_BUYER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "You ignored cancellation proposal",
|
||||
"EXPIRED": "Contract proposal has expired"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "Waiting for response",
|
||||
"IGNORED": "Seller ignored your contract proposal",
|
||||
"ACCEPTED": "Seller accepted your contract proposal",
|
||||
"WAIT": "Waiting for deposits confirmation",
|
||||
"WAITING_SELLER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"WAITING_CANCEL": "Waiting for contract cancellation",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract",
|
||||
"EXPIRED": "The contract proposal has expired"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Description",
|
||||
"SELLER": "Seller",
|
||||
"AMOUNT": "Amount",
|
||||
"YOUR_DEPOSIT": "Your deposit",
|
||||
"SELLER_DEPOSIT": "Seller deposit",
|
||||
"BUYER_DEPOSIT": "Buyer deposit",
|
||||
"SAME_AMOUNT": "Same amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"SEND_BUTTON": "Send",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Description required",
|
||||
"DESC_MAXIMUM": "Maximum field length reached",
|
||||
"SELLER_REQUIRED": "Address required",
|
||||
"SELLER_NOT_VALID": "Invalid address",
|
||||
"ALIAS_NOT_VALID": "Invalid alias",
|
||||
"AMOUNT_REQUIRED": "Amount required",
|
||||
"AMOUNT_ZERO": "Amount cannot be zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Deposit required",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Seller deposit required",
|
||||
"SELLER_SAME": "Use separate account",
|
||||
"COMMENT_MAXIMUM": "Maximum field length reached"
|
||||
},
|
||||
"PROGRESS_NEW": "New purchase",
|
||||
"PROGRESS_WAIT": "Awaiting reply",
|
||||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"WAITING_SELLER": "Waiting for response",
|
||||
"WAITING_BUYER": "Contract proposal received",
|
||||
"WAITING_CONFIRMATION": "Waiting for deposits confirmation",
|
||||
"WAITING_DELIVERY": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"IGNORED_BUYER": "Contract proposal ignored",
|
||||
"IGNORED_SELLER": "The seller ignored your contract proposal",
|
||||
"PROPOSAL_CANCEL_SELLER": "Cancellation request sent",
|
||||
"PROPOSAL_CANCEL_BUYER": "Cancellation request received",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract",
|
||||
"IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"EXPIRED": "Contract proposal expired",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contract started",
|
||||
"IGNORED_ACCEPT": "Contract proposal ignored",
|
||||
"BURN_PROPOSAL": "Deposits burned",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contract completed",
|
||||
"SEND_CANCEL_PROPOSAL": "Cancellation request sent",
|
||||
"IGNORED_CANCEL": "Contract cancellation proposal ignored",
|
||||
"DEALS_CANCELED_WAIT": "Cancellation in progress",
|
||||
"WAITING_TIME": "Response time",
|
||||
"NEED_MONEY": "Insufficient funds",
|
||||
"BUTTON_MAKE_PLEDGE": "Accept and make deposit",
|
||||
"BUTTON_IGNORE": "Ignore and hide offer",
|
||||
"BUTTON_NULLIFY": "Terminate and burn deposits",
|
||||
"BUTTON_RECEIVED": "Complete and release deposits",
|
||||
"BUTTON_CANCEL_BUYER": "Cancel and return deposits",
|
||||
"BUTTON_NOT_CANCEL": "Ignore request",
|
||||
"BUTTON_CANCEL_SELLER": "Confirm and return deposits",
|
||||
"HOUR": "hour",
|
||||
"HOURS": "hours",
|
||||
"CANCEL": "Cancel",
|
||||
"NULLIFY_QUESTION": "Are you sure you want to burn both deposits?",
|
||||
"BUTTON_NULLIFY_SHORT": "Burn",
|
||||
"WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Error",
|
||||
"SUCCESS": "Success",
|
||||
"INFO": "Information",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Send",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"TITLE": "Confirm transaction",
|
||||
"MESSAGE": {
|
||||
"SEND": "Send",
|
||||
"FROM": "From",
|
||||
"TO": "To",
|
||||
"COMMENT": "Comment"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Pending",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Time period:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 week",
|
||||
"WEEK2": "2 week",
|
||||
"MONTH1": "1 month",
|
||||
"MONTH3": "3 month",
|
||||
"MONTH6": "6 month",
|
||||
"YEAR": "1 year",
|
||||
"ALL": "All"
|
||||
},
|
||||
"TITLE_GROUP": "Group:",
|
||||
"GROUP": {
|
||||
"DAY": "day",
|
||||
"WEEK": "week",
|
||||
"MONTH": "month"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Contact list",
|
||||
"IMPORT_EXPORT": "Import or export contacts",
|
||||
"IMPORT": "Import",
|
||||
"EXPORT": "Export",
|
||||
"ADD": "Add/edit contact",
|
||||
"SEND": "Send",
|
||||
"SEND_FROM": "Send from",
|
||||
"SEND_TO": "To",
|
||||
"OPEN_ADD_WALLET": "Open/Add wallet",
|
||||
"COPY": "- Copy",
|
||||
"TABLE": {
|
||||
"NAME": "Name",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes",
|
||||
"EMPTY": "Contact list is empty"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Name",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUBLICATED": "Name is dublicated",
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"SET_MASTER_PASSWORD": "Set master password",
|
||||
"ADDRESS_DUBLICATED": "Address is dublicated",
|
||||
"MAX_LENGTH": "Maximum notes length reached",
|
||||
"NAME_LENGTH": "The name must be 4-25 characters long"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Send",
|
||||
"EDIT": "Edit",
|
||||
"DELETE": "Delete",
|
||||
"ADD": "Add contact",
|
||||
"ADD_EDIT": "Add/Save",
|
||||
"GO_TO_WALLET": "Go to wallet",
|
||||
"IMPORT_EXPORT": "Import/export"
|
||||
},
|
||||
"SUCCESS_SENT": "Contact added",
|
||||
"SUCCESS_SAVE": "Contact is edited",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Error is occured while reading file!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Not enough money",
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error: core is busy",
|
||||
"DAEMON_BUSY": "Internal error: daemon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with",
|
||||
"TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Transaction not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.",
|
||||
"TX_TYPE_NORMAL": "Error. The payment from the wallet",
|
||||
"TX_TYPE_NORMAL_TO": "to",
|
||||
"TX_TYPE_NORMAL_END": "was not completed.",
|
||||
"TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Please try again.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe",
|
||||
"TX_TYPE_COIN_BASE": "Error. The payment was not completed."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copy",
|
||||
"PASTE": "paste",
|
||||
"SELECT": "select all"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Quit",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Payment received",
|
||||
"MINED": "Mined",
|
||||
"LOCKED": "Blocked",
|
||||
"IS_MINIMIZE": "Zano application is minimized to the system tray",
|
||||
"RESTORE": "You can recover it by clicking or using the context menu",
|
||||
"TRAY_MENU_SHOW": "Resize",
|
||||
"TRAY_MENU_MINIMIZE": "Minimize"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Setup master password",
|
||||
"SETUP_CONFIRM_PASS": "Confirm the password",
|
||||
"MASTER_PASS": "Master password",
|
||||
"BUTTON_NEXT": "Next",
|
||||
"BUTTON_SKIP": "Skip",
|
||||
"BUTTON_RESET": "Reset",
|
||||
"INCORRECT_PASSWORD": "Invalid password",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"CONFIRM_REQUIRED": "Confirmation is required",
|
||||
"MISMATCH": "Mismatch"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Go back"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"SAVE_PHRASE": "Save your seed phrase",
|
||||
"OPEN_WALLET": "Open existing wallet",
|
||||
"RESTORE_WALLET": "Restore from backup",
|
||||
"WALLET_DETAILS": "Wallet details",
|
||||
"ASSIGN_ALIAS": "Assign alias",
|
||||
"EDIT_ALIAS": "Edit alias",
|
||||
"TRANSFER_ALIAS": "Transfer alias",
|
||||
"CONTRACTS": "Contracts",
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"OLD_PURCHASE": "Purchase"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Wallets",
|
||||
"ADD_NEW": "+ Add",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "New offers/Messages",
|
||||
"SYNCING": "Syncing wallet"
|
||||
},
|
||||
"CONTACTS": "Contacts",
|
||||
"SETTINGS": "Settings",
|
||||
"LOG_OUT": "Log out",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "System error",
|
||||
"COMPLETE": "Completion",
|
||||
"SYNCING": "Syncing blockchain",
|
||||
"LOADING": "Loading blockchain data"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Update available",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Get new update.</span><br><span>Update is recommended!</span>",
|
||||
"IMPORTANT": "Update available",
|
||||
"IMPORTANT_HINT": "Important update!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Get new update.</span><br><span>Important update!</span>",
|
||||
"CRITICAL": "Update available",
|
||||
"CRITICAL_HINT": "Critical update!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Critical update available.</span><i class=\"icon\"></i><span>Update strongly recommended!</span>",
|
||||
"TIME": "System time differs from network",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Wrong system time!</span><br><span>Check and repair your system time.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Create or open the wallet to start using Zano",
|
||||
"BUTTON_NEW_WALLET": "Create new wallet",
|
||||
"BUTTON_OPEN_WALLET": "Open existing wallet",
|
||||
"BUTTON_RESTORE_BACKUP": "Restore from backup",
|
||||
"HELP": "How to create wallet?",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Set wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"TITLE_SAVE": "Save the wallet file.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open",
|
||||
"FILE_NOT_FOUND1": "Wallet file not found",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open wallet\" button.",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Type wallet password",
|
||||
"LABEL": "Password to this wallet",
|
||||
"OPEN": "Open wallet",
|
||||
"SKIP": "Skip",
|
||||
"NOT_FOUND": "Not found"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_PHRASE_KEY": "Seed phrase / tracking seed",
|
||||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match",
|
||||
"KEY_REQUIRED": "Key is required",
|
||||
"KEY_NOT_VALID": "Key not valid"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Create wallet",
|
||||
"BUTTON_COPY": "Copy"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"SELECT_LOCATION": "Select wallet location",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"RESTORE_WALLET": "Restore from backup"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings",
|
||||
"DARK_THEME": "Dark theme",
|
||||
"WHITE_THEME": "White theme",
|
||||
"GRAY_THEME": "Grey theme",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Lock app after:",
|
||||
"TIME1": "5 min",
|
||||
"TIME2": "15 min",
|
||||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
"NEW": "New password",
|
||||
"CONFIRM": "New password confirmation",
|
||||
"BUTTON": "Save"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"PASS_NOT_MATCH": "Old password not match",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
},
|
||||
"LAST_BUILD": "Current build: {{value}}",
|
||||
"APP_LOG_TITLE": "Log level:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Register an alias",
|
||||
"DETAILS": "Details",
|
||||
"LOCK": "Lock",
|
||||
"AVAILABLE_BALANCE": "Available <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Locked <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "What does that mean?",
|
||||
"TABS": {
|
||||
"SEND": "Send",
|
||||
"RECEIVE": "Receive",
|
||||
"HISTORY": "History",
|
||||
"CONTRACTS": "Contracts",
|
||||
"MESSAGES": "Messages",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_FILE_LOCATION": "Wallet file location",
|
||||
"LABEL_SEED_PHRASE": "Seed phrase",
|
||||
"SEED_PHRASE_HINT": "Click to reveal the seed phrase",
|
||||
"BUTTON_SAVE": "Save",
|
||||
"BUTTON_REMOVE": "Close wallet",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later."
|
||||
},
|
||||
"COST": "Alias fee {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"ONE_ALIAS": "You can create only one alias per wallet",
|
||||
"REQUEST_ADD_REG": "The alias will be assigned within 10 minutes"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "You do not have enough funds to change the comment to this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"COST": "Fee {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Edit"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transfer to",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "No wallet with this account exists",
|
||||
"ALIAS_EXISTS": "This account already has an alias",
|
||||
"NO_MONEY": "You do not have enough funds to transfer this alias"
|
||||
},
|
||||
"COST": "Transfer fee {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transfer",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"REQUEST_SEND_REG": "The alias will be transferred within 10 minutes"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Address",
|
||||
"AMOUNT": "Amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"HIDE": "Hide your wallet address from recipient",
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "Transaction sent",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"ALIAS_NOT_VALID": "Alias not valid",
|
||||
"AMOUNT_REQUIRED": "Amount is required",
|
||||
"AMOUNT_ZERO": "Amount is zero",
|
||||
"FEE_REQUIRED": "Fee is required",
|
||||
"FEE_MINIMUM": "Minimum fee: {{fee}}",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
"STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Locked till {{date}}",
|
||||
"SEND": "Sent",
|
||||
"RECEIVED": "Received",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"FEE": "Fee",
|
||||
"ADDRESS": "Address",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "Payment ID",
|
||||
"ID": "Transaction ID",
|
||||
"SIZE": "Transaction size",
|
||||
"SIZE_VALUE": "{{value}} bytes",
|
||||
"HEIGHT": "Height",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Comment"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "hidden",
|
||||
"UNDEFINED": "Undefined",
|
||||
"COMPLETE_BUYER": "Contract completed",
|
||||
"COMPLETE_SELLER": "Contract completed",
|
||||
"CREATE_ALIAS": "Fee for assigning alias",
|
||||
"UPDATE_ALIAS": "Fee for editing alias",
|
||||
"POW_REWARD": "POW reward",
|
||||
"POS_REWARD": "POS reward",
|
||||
"CREATE_CONTRACT": "Contract proposal",
|
||||
"PLEDGE_CONTRACT": "Contract deposit",
|
||||
"NULLIFY_CONTRACT": "Burn deposits",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Cancellation request",
|
||||
"CANCEL_CONTRACT": "Cancel and return deposits"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "No active contracts",
|
||||
"CONTRACTS": "Contracts",
|
||||
"PURCHASE": "Purchase",
|
||||
"SELL": "Sell",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"STATUS": "Status",
|
||||
"COMMENTS": "Comments",
|
||||
"PURCHASE_BUTTON": "New Purchase",
|
||||
"LISTING_BUTTON": "Create listing",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Less than an hour to respond",
|
||||
"REMAINING_ONE": "{{time}} hour remains",
|
||||
"REMAINING_MANY": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT": "{{time}} hours remain",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} hour remains",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_ONE_WAITING": "Waiting for {{time}} hour",
|
||||
"REMAINING_MANY_WAITING": "Waiting for {{time}} hours",
|
||||
"REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "New contract proposal",
|
||||
"IGNORED": "You ignored contract proposal",
|
||||
"ACCEPTED": "Contract started",
|
||||
"WAIT": "Waiting for contract confirmation",
|
||||
"WAITING_BUYER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "You ignored cancellation proposal",
|
||||
"EXPIRED": "Contract proposal has expired"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "Waiting for response",
|
||||
"IGNORED": "Seller ignored your contract proposal",
|
||||
"ACCEPTED": "Seller accepted your contract proposal",
|
||||
"WAIT": "Waiting for deposits confirmation",
|
||||
"WAITING_SELLER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"WAITING_CANCEL": "Waiting for contract cancellation",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract",
|
||||
"EXPIRED": "The contract proposal has expired"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Description",
|
||||
"SELLER": "Seller",
|
||||
"AMOUNT": "Amount",
|
||||
"YOUR_DEPOSIT": "Your deposit",
|
||||
"SELLER_DEPOSIT": "Seller deposit",
|
||||
"BUYER_DEPOSIT": "Buyer deposit",
|
||||
"SAME_AMOUNT": "Same amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"SEND_BUTTON": "Send",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Description required",
|
||||
"DESC_MAXIMUM": "Maximum field length reached",
|
||||
"SELLER_REQUIRED": "Address required",
|
||||
"SELLER_NOT_VALID": "Invalid address",
|
||||
"ALIAS_NOT_VALID": "Invalid alias",
|
||||
"AMOUNT_REQUIRED": "Amount required",
|
||||
"AMOUNT_ZERO": "Amount cannot be zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Deposit required",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Seller deposit required",
|
||||
"SELLER_SAME": "Use separate account",
|
||||
"COMMENT_MAXIMUM": "Maximum field length reached"
|
||||
},
|
||||
"PROGRESS_NEW": "New purchase",
|
||||
"PROGRESS_WAIT": "Awaiting reply",
|
||||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"WAITING_SELLER": "Waiting for response",
|
||||
"WAITING_BUYER": "Contract proposal received",
|
||||
"WAITING_CONFIRMATION": "Waiting for deposits confirmation",
|
||||
"WAITING_DELIVERY": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"IGNORED_BUYER": "Contract proposal ignored",
|
||||
"IGNORED_SELLER": "The seller ignored your contract proposal",
|
||||
"PROPOSAL_CANCEL_SELLER": "Cancellation request sent",
|
||||
"PROPOSAL_CANCEL_BUYER": "Cancellation request received",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract",
|
||||
"IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"EXPIRED": "Contract proposal expired",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contract started",
|
||||
"IGNORED_ACCEPT": "Contract proposal ignored",
|
||||
"BURN_PROPOSAL": "Deposits burned",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contract completed",
|
||||
"SEND_CANCEL_PROPOSAL": "Cancellation request sent",
|
||||
"IGNORED_CANCEL": "Contract cancellation proposal ignored",
|
||||
"DEALS_CANCELED_WAIT": "Cancellation in progress",
|
||||
"WAITING_TIME": "Response time",
|
||||
"NEED_MONEY": "Insufficient funds",
|
||||
"BUTTON_MAKE_PLEDGE": "Accept and make deposit",
|
||||
"BUTTON_IGNORE": "Ignore and hide offer",
|
||||
"BUTTON_NULLIFY": "Terminate and burn deposits",
|
||||
"BUTTON_RECEIVED": "Complete and release deposits",
|
||||
"BUTTON_CANCEL_BUYER": "Cancel and return deposits",
|
||||
"BUTTON_NOT_CANCEL": "Ignore request",
|
||||
"BUTTON_CANCEL_SELLER": "Confirm and return deposits",
|
||||
"HOUR": "hour",
|
||||
"HOURS": "hours",
|
||||
"CANCEL": "Cancel",
|
||||
"NULLIFY_QUESTION": "Are you sure you want to burn both deposits?",
|
||||
"BUTTON_NULLIFY_SHORT": "Burn",
|
||||
"WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Error",
|
||||
"SUCCESS": "Success",
|
||||
"INFO": "Information",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Send",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"TITLE": "Confirm transaction",
|
||||
"MESSAGE": {
|
||||
"SEND": "Send",
|
||||
"FROM": "From",
|
||||
"TO": "To",
|
||||
"COMMENT": "Comment"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Pending",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Time period:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 week",
|
||||
"WEEK2": "2 week",
|
||||
"MONTH1": "1 month",
|
||||
"MONTH3": "3 month",
|
||||
"MONTH6": "6 month",
|
||||
"YEAR": "1 year",
|
||||
"ALL": "All"
|
||||
},
|
||||
"TITLE_GROUP": "Group:",
|
||||
"GROUP": {
|
||||
"DAY": "day",
|
||||
"WEEK": "week",
|
||||
"MONTH": "month"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Contact list",
|
||||
"IMPORT_EXPORT": "Import or export contacts",
|
||||
"IMPORT": "Import",
|
||||
"EXPORT": "Export",
|
||||
"ADD": "Add/edit contact",
|
||||
"SEND": "Send",
|
||||
"SEND_FROM": "Send from",
|
||||
"SEND_TO": "To",
|
||||
"OPEN_ADD_WALLET": "Open/Add wallet",
|
||||
"COPY": "- Copy",
|
||||
"TABLE": {
|
||||
"NAME": "Name",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes",
|
||||
"EMPTY": "Contact list is empty"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Name",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUBLICATED": "Name is dublicated",
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"SET_MASTER_PASSWORD": "Set master password",
|
||||
"ADDRESS_DUBLICATED": "Address is dublicated",
|
||||
"MAX_LENGTH": "Maximum notes length reached",
|
||||
"NAME_LENGTH": "The name must be 4-25 characters long"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Send",
|
||||
"EDIT": "Edit",
|
||||
"DELETE": "Delete",
|
||||
"ADD": "Add contact",
|
||||
"ADD_EDIT": "Add/Save",
|
||||
"GO_TO_WALLET": "Go to wallet",
|
||||
"IMPORT_EXPORT": "Import/export"
|
||||
},
|
||||
"SUCCESS_SENT": "Contact added",
|
||||
"SUCCESS_SAVE": "Contact is edited",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Error is occured while reading file!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Not enough money",
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error: core is busy",
|
||||
"DAEMON_BUSY": "Internal error: daemon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with",
|
||||
"TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Transaction not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.",
|
||||
"TX_TYPE_NORMAL": "Error. The payment from the wallet",
|
||||
"TX_TYPE_NORMAL_TO": "to",
|
||||
"TX_TYPE_NORMAL_END": "was not completed.",
|
||||
"TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Please try again.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe",
|
||||
"TX_TYPE_COIN_BASE": "Error. The payment was not completed."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copy",
|
||||
"PASTE": "paste",
|
||||
"SELECT": "select all"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Quit",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Payment received",
|
||||
"MINED": "Mined",
|
||||
"LOCKED": "Blocked",
|
||||
"IS_MINIMIZE": "Zano application is minimized to the system tray",
|
||||
"RESTORE": "You can recover it by clicking or using the context menu",
|
||||
"TRAY_MENU_SHOW": "Resize",
|
||||
"TRAY_MENU_MINIMIZE": "Minimize"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Setup master password",
|
||||
"SETUP_CONFIRM_PASS": "Confirm the password",
|
||||
"MASTER_PASS": "Master password",
|
||||
"BUTTON_NEXT": "Next",
|
||||
"BUTTON_SKIP": "Skip",
|
||||
"BUTTON_RESET": "Reset",
|
||||
"INCORRECT_PASSWORD": "Invalid password",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"CONFIRM_REQUIRED": "Confirmation is required",
|
||||
"MISMATCH": "Mismatch"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Go back"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"SAVE_PHRASE": "Save your seed phrase",
|
||||
"OPEN_WALLET": "Open existing wallet",
|
||||
"RESTORE_WALLET": "Restore from backup",
|
||||
"WALLET_DETAILS": "Wallet details",
|
||||
"ASSIGN_ALIAS": "Assign alias",
|
||||
"EDIT_ALIAS": "Edit alias",
|
||||
"TRANSFER_ALIAS": "Transfer alias",
|
||||
"CONTRACTS": "Contracts",
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"OLD_PURCHASE": "Purchase"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Wallets",
|
||||
"ADD_NEW": "+ Add",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "New offers/Messages",
|
||||
"SYNCING": "Syncing wallet"
|
||||
},
|
||||
"CONTACTS": "Contacts",
|
||||
"SETTINGS": "Settings",
|
||||
"LOG_OUT": "Log out",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "System error",
|
||||
"COMPLETE": "Completion",
|
||||
"SYNCING": "Syncing blockchain",
|
||||
"LOADING": "Loading blockchain data"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Update available",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Get new update.</span><br><span>Update is recommended!</span>",
|
||||
"IMPORTANT": "Update available",
|
||||
"IMPORTANT_HINT": "Important update!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Get new update.</span><br><span>Important update!</span>",
|
||||
"CRITICAL": "Update available",
|
||||
"CRITICAL_HINT": "Critical update!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Critical update available.</span><i class=\"icon\"></i><span>Update strongly recommended!</span>",
|
||||
"TIME": "System time differs from network",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Wrong system time!</span><br><span>Check and repair your system time.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Create or open the wallet to start using Zano",
|
||||
"BUTTON_NEW_WALLET": "Create new wallet",
|
||||
"BUTTON_OPEN_WALLET": "Open existing wallet",
|
||||
"BUTTON_RESTORE_BACKUP": "Restore from backup",
|
||||
"HELP": "How to create wallet?",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Set wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"TITLE_SAVE": "Save the wallet file.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open",
|
||||
"FILE_NOT_FOUND1": "Wallet file not found",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open wallet\" button.",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Type wallet password",
|
||||
"LABEL": "Password to this wallet",
|
||||
"OPEN": "Open wallet",
|
||||
"SKIP": "Skip",
|
||||
"NOT_FOUND": "Not found"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_PHRASE_KEY": "Seed phrase / tracking seed",
|
||||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match",
|
||||
"KEY_REQUIRED": "Key is required",
|
||||
"KEY_NOT_VALID": "Key not valid"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Create wallet",
|
||||
"BUTTON_COPY": "Copy"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"SELECT_LOCATION": "Select wallet location",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"RESTORE_WALLET": "Restore from backup"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings",
|
||||
"DARK_THEME": "Dark theme",
|
||||
"WHITE_THEME": "White theme",
|
||||
"GRAY_THEME": "Grey theme",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Lock app after:",
|
||||
"TIME1": "5 min",
|
||||
"TIME2": "15 min",
|
||||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
"NEW": "New password",
|
||||
"CONFIRM": "New password confirmation",
|
||||
"BUTTON": "Save"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"PASS_NOT_MATCH": "Old password not match",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
},
|
||||
"LAST_BUILD": "Current build: {{value}}",
|
||||
"APP_LOG_TITLE": "Log level:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Register an alias",
|
||||
"DETAILS": "Details",
|
||||
"LOCK": "Lock",
|
||||
"AVAILABLE_BALANCE": "Available <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Locked <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "What does that mean?",
|
||||
"TABS": {
|
||||
"SEND": "Send",
|
||||
"RECEIVE": "Receive",
|
||||
"HISTORY": "History",
|
||||
"CONTRACTS": "Contracts",
|
||||
"MESSAGES": "Messages",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_FILE_LOCATION": "Wallet file location",
|
||||
"LABEL_SEED_PHRASE": "Seed phrase",
|
||||
"SEED_PHRASE_HINT": "Click to reveal the seed phrase",
|
||||
"BUTTON_SAVE": "Save",
|
||||
"BUTTON_REMOVE": "Close wallet",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later."
|
||||
},
|
||||
"COST": "Alias fee {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"ONE_ALIAS": "You can create only one alias per wallet",
|
||||
"REQUEST_ADD_REG": "The alias will be assigned within 10 minutes"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "You do not have enough funds to change the comment to this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"COST": "Fee {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Edit"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transfer to",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "No wallet with this account exists",
|
||||
"ALIAS_EXISTS": "This account already has an alias",
|
||||
"NO_MONEY": "You do not have enough funds to transfer this alias"
|
||||
},
|
||||
"COST": "Transfer fee {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transfer",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"REQUEST_SEND_REG": "The alias will be transferred within 10 minutes"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Address",
|
||||
"AMOUNT": "Amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"HIDE": "Hide your wallet address from recipient",
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "Transaction sent",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"ALIAS_NOT_VALID": "Alias not valid",
|
||||
"AMOUNT_REQUIRED": "Amount is required",
|
||||
"AMOUNT_ZERO": "Amount is zero",
|
||||
"FEE_REQUIRED": "Fee is required",
|
||||
"FEE_MINIMUM": "Minimum fee: {{fee}}",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
"STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Locked till {{date}}",
|
||||
"SEND": "Sent",
|
||||
"RECEIVED": "Received",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"FEE": "Fee",
|
||||
"ADDRESS": "Address",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "Payment ID",
|
||||
"ID": "Transaction ID",
|
||||
"SIZE": "Transaction size",
|
||||
"SIZE_VALUE": "{{value}} bytes",
|
||||
"HEIGHT": "Height",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Comment"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "hidden",
|
||||
"UNDEFINED": "Undefined",
|
||||
"COMPLETE_BUYER": "Contract completed",
|
||||
"COMPLETE_SELLER": "Contract completed",
|
||||
"CREATE_ALIAS": "Fee for assigning alias",
|
||||
"UPDATE_ALIAS": "Fee for editing alias",
|
||||
"POW_REWARD": "POW reward",
|
||||
"POS_REWARD": "POS reward",
|
||||
"CREATE_CONTRACT": "Contract proposal",
|
||||
"PLEDGE_CONTRACT": "Contract deposit",
|
||||
"NULLIFY_CONTRACT": "Burn deposits",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Cancellation request",
|
||||
"CANCEL_CONTRACT": "Cancel and return deposits"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "No active contracts",
|
||||
"CONTRACTS": "Contracts",
|
||||
"PURCHASE": "Purchase",
|
||||
"SELL": "Sell",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"STATUS": "Status",
|
||||
"COMMENTS": "Comments",
|
||||
"PURCHASE_BUTTON": "New Purchase",
|
||||
"LISTING_BUTTON": "Create listing",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Less than an hour to respond",
|
||||
"REMAINING_ONE": "{{time}} hour remains",
|
||||
"REMAINING_MANY": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT": "{{time}} hours remain",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} hour remains",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_ONE_WAITING": "Waiting for {{time}} hour",
|
||||
"REMAINING_MANY_WAITING": "Waiting for {{time}} hours",
|
||||
"REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "New contract proposal",
|
||||
"IGNORED": "You ignored contract proposal",
|
||||
"ACCEPTED": "Contract started",
|
||||
"WAIT": "Waiting for contract confirmation",
|
||||
"WAITING_BUYER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "You ignored cancellation proposal",
|
||||
"EXPIRED": "Contract proposal has expired"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "Waiting for response",
|
||||
"IGNORED": "Seller ignored your contract proposal",
|
||||
"ACCEPTED": "Seller accepted your contract proposal",
|
||||
"WAIT": "Waiting for deposits confirmation",
|
||||
"WAITING_SELLER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"WAITING_CANCEL": "Waiting for contract cancellation",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract",
|
||||
"EXPIRED": "The contract proposal has expired"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Description",
|
||||
"SELLER": "Seller",
|
||||
"AMOUNT": "Amount",
|
||||
"YOUR_DEPOSIT": "Your deposit",
|
||||
"SELLER_DEPOSIT": "Seller deposit",
|
||||
"BUYER_DEPOSIT": "Buyer deposit",
|
||||
"SAME_AMOUNT": "Same amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"SEND_BUTTON": "Send",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Description required",
|
||||
"DESC_MAXIMUM": "Maximum field length reached",
|
||||
"SELLER_REQUIRED": "Address required",
|
||||
"SELLER_NOT_VALID": "Invalid address",
|
||||
"ALIAS_NOT_VALID": "Invalid alias",
|
||||
"AMOUNT_REQUIRED": "Amount required",
|
||||
"AMOUNT_ZERO": "Amount cannot be zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Deposit required",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Seller deposit required",
|
||||
"SELLER_SAME": "Use separate account",
|
||||
"COMMENT_MAXIMUM": "Maximum field length reached"
|
||||
},
|
||||
"PROGRESS_NEW": "New purchase",
|
||||
"PROGRESS_WAIT": "Awaiting reply",
|
||||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"WAITING_SELLER": "Waiting for response",
|
||||
"WAITING_BUYER": "Contract proposal received",
|
||||
"WAITING_CONFIRMATION": "Waiting for deposits confirmation",
|
||||
"WAITING_DELIVERY": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"IGNORED_BUYER": "Contract proposal ignored",
|
||||
"IGNORED_SELLER": "The seller ignored your contract proposal",
|
||||
"PROPOSAL_CANCEL_SELLER": "Cancellation request sent",
|
||||
"PROPOSAL_CANCEL_BUYER": "Cancellation request received",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract",
|
||||
"IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"EXPIRED": "Contract proposal expired",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contract started",
|
||||
"IGNORED_ACCEPT": "Contract proposal ignored",
|
||||
"BURN_PROPOSAL": "Deposits burned",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contract completed",
|
||||
"SEND_CANCEL_PROPOSAL": "Cancellation request sent",
|
||||
"IGNORED_CANCEL": "Contract cancellation proposal ignored",
|
||||
"DEALS_CANCELED_WAIT": "Cancellation in progress",
|
||||
"WAITING_TIME": "Response time",
|
||||
"NEED_MONEY": "Insufficient funds",
|
||||
"BUTTON_MAKE_PLEDGE": "Accept and make deposit",
|
||||
"BUTTON_IGNORE": "Ignore and hide offer",
|
||||
"BUTTON_NULLIFY": "Terminate and burn deposits",
|
||||
"BUTTON_RECEIVED": "Complete and release deposits",
|
||||
"BUTTON_CANCEL_BUYER": "Cancel and return deposits",
|
||||
"BUTTON_NOT_CANCEL": "Ignore request",
|
||||
"BUTTON_CANCEL_SELLER": "Confirm and return deposits",
|
||||
"HOUR": "hour",
|
||||
"HOURS": "hours",
|
||||
"CANCEL": "Cancel",
|
||||
"NULLIFY_QUESTION": "Are you sure you want to burn both deposits?",
|
||||
"BUTTON_NULLIFY_SHORT": "Burn",
|
||||
"WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Error",
|
||||
"SUCCESS": "Success",
|
||||
"INFO": "Information",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Send",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"TITLE": "Confirm transaction",
|
||||
"MESSAGE": {
|
||||
"SEND": "Send",
|
||||
"FROM": "From",
|
||||
"TO": "To",
|
||||
"COMMENT": "Comment"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Pending",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Time period:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 week",
|
||||
"WEEK2": "2 week",
|
||||
"MONTH1": "1 month",
|
||||
"MONTH3": "3 month",
|
||||
"MONTH6": "6 month",
|
||||
"YEAR": "1 year",
|
||||
"ALL": "All"
|
||||
},
|
||||
"TITLE_GROUP": "Group:",
|
||||
"GROUP": {
|
||||
"DAY": "day",
|
||||
"WEEK": "week",
|
||||
"MONTH": "month"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Contact list",
|
||||
"IMPORT_EXPORT": "Import or export contacts",
|
||||
"IMPORT": "Import",
|
||||
"EXPORT": "Export",
|
||||
"ADD": "Add/edit contact",
|
||||
"SEND": "Send",
|
||||
"SEND_FROM": "Send from",
|
||||
"SEND_TO": "To",
|
||||
"OPEN_ADD_WALLET": "Open/Add wallet",
|
||||
"COPY": "- Copy",
|
||||
"TABLE": {
|
||||
"NAME": "Name",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes",
|
||||
"EMPTY": "Contact list is empty"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Name",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUBLICATED": "Name is dublicated",
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"SET_MASTER_PASSWORD": "Set master password",
|
||||
"ADDRESS_DUBLICATED": "Address is dublicated",
|
||||
"MAX_LENGTH": "Maximum notes length reached",
|
||||
"NAME_LENGTH": "The name must be 4-25 characters long"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Send",
|
||||
"EDIT": "Edit",
|
||||
"DELETE": "Delete",
|
||||
"ADD": "Add contact",
|
||||
"ADD_EDIT": "Add/Save",
|
||||
"GO_TO_WALLET": "Go to wallet",
|
||||
"IMPORT_EXPORT": "Import/export"
|
||||
},
|
||||
"SUCCESS_SENT": "Contact added",
|
||||
"SUCCESS_SAVE": "Contact is edited",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Error is occured while reading file!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Not enough money",
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error: core is busy",
|
||||
"DAEMON_BUSY": "Internal error: daemon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with",
|
||||
"TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Transaction not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.",
|
||||
"TX_TYPE_NORMAL": "Error. The payment from the wallet",
|
||||
"TX_TYPE_NORMAL_TO": "to",
|
||||
"TX_TYPE_NORMAL_END": "was not completed.",
|
||||
"TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Please try again.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe",
|
||||
"TX_TYPE_COIN_BASE": "Error. The payment was not completed."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copy",
|
||||
"PASTE": "paste",
|
||||
"SELECT": "select all"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Quit",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Payment received",
|
||||
"MINED": "Mined",
|
||||
"LOCKED": "Blocked",
|
||||
"IS_MINIMIZE": "Zano application is minimized to the system tray",
|
||||
"RESTORE": "You can recover it by clicking or using the context menu",
|
||||
"TRAY_MENU_SHOW": "Resize",
|
||||
"TRAY_MENU_MINIMIZE": "Minimize"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Setup master password",
|
||||
"SETUP_CONFIRM_PASS": "Confirm the password",
|
||||
"MASTER_PASS": "Master password",
|
||||
"BUTTON_NEXT": "Next",
|
||||
"BUTTON_SKIP": "Skip",
|
||||
"BUTTON_RESET": "Reset",
|
||||
"INCORRECT_PASSWORD": "Invalid password",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"CONFIRM_REQUIRED": "Confirmation is required",
|
||||
"MISMATCH": "Mismatch"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Go back"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"SAVE_PHRASE": "Save your seed phrase",
|
||||
"OPEN_WALLET": "Open existing wallet",
|
||||
"RESTORE_WALLET": "Restore from backup",
|
||||
"WALLET_DETAILS": "Wallet details",
|
||||
"ASSIGN_ALIAS": "Assign alias",
|
||||
"EDIT_ALIAS": "Edit alias",
|
||||
"TRANSFER_ALIAS": "Transfer alias",
|
||||
"CONTRACTS": "Contracts",
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"OLD_PURCHASE": "Purchase"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Wallets",
|
||||
"ADD_NEW": "+ Add",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "New offers/Messages",
|
||||
"SYNCING": "Syncing wallet"
|
||||
},
|
||||
"CONTACTS": "Contacts",
|
||||
"SETTINGS": "Settings",
|
||||
"LOG_OUT": "Log out",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "System error",
|
||||
"COMPLETE": "Completion",
|
||||
"SYNCING": "Syncing blockchain",
|
||||
"LOADING": "Loading blockchain data"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Update available",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Get new update.</span><br><span>Update is recommended!</span>",
|
||||
"IMPORTANT": "Update available",
|
||||
"IMPORTANT_HINT": "Important update!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Get new update.</span><br><span>Important update!</span>",
|
||||
"CRITICAL": "Update available",
|
||||
"CRITICAL_HINT": "Critical update!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Critical update available.</span><i class=\"icon\"></i><span>Update strongly recommended!</span>",
|
||||
"TIME": "System time differs from network",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Wrong system time!</span><br><span>Check and repair your system time.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Create or open the wallet to start using Zano",
|
||||
"BUTTON_NEW_WALLET": "Create new wallet",
|
||||
"BUTTON_OPEN_WALLET": "Open existing wallet",
|
||||
"BUTTON_RESTORE_BACKUP": "Restore from backup",
|
||||
"HELP": "How to create wallet?",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Set wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"TITLE_SAVE": "Save the wallet file.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open",
|
||||
"FILE_NOT_FOUND1": "Wallet file not found",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open wallet\" button.",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Type wallet password",
|
||||
"LABEL": "Password to this wallet",
|
||||
"OPEN": "Open wallet",
|
||||
"SKIP": "Skip",
|
||||
"NOT_FOUND": "Not found"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_PHRASE_KEY": "Seed phrase / tracking seed",
|
||||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match",
|
||||
"KEY_REQUIRED": "Key is required",
|
||||
"KEY_NOT_VALID": "Key not valid"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Create wallet",
|
||||
"BUTTON_COPY": "Copy"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"SELECT_LOCATION": "Select wallet location",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"RESTORE_WALLET": "Restore from backup"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings",
|
||||
"DARK_THEME": "Dark theme",
|
||||
"WHITE_THEME": "White theme",
|
||||
"GRAY_THEME": "Grey theme",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Lock app after:",
|
||||
"TIME1": "5 min",
|
||||
"TIME2": "15 min",
|
||||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
"NEW": "New password",
|
||||
"CONFIRM": "New password confirmation",
|
||||
"BUTTON": "Save"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"PASS_NOT_MATCH": "Old password not match",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
},
|
||||
"LAST_BUILD": "Current build: {{value}}",
|
||||
"APP_LOG_TITLE": "Log level:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Register an alias",
|
||||
"DETAILS": "Details",
|
||||
"LOCK": "Lock",
|
||||
"AVAILABLE_BALANCE": "Available <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Locked <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "What does that mean?",
|
||||
"TABS": {
|
||||
"SEND": "Send",
|
||||
"RECEIVE": "Receive",
|
||||
"HISTORY": "History",
|
||||
"CONTRACTS": "Contracts",
|
||||
"MESSAGES": "Messages",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_FILE_LOCATION": "Wallet file location",
|
||||
"LABEL_SEED_PHRASE": "Seed phrase",
|
||||
"SEED_PHRASE_HINT": "Click to reveal the seed phrase",
|
||||
"BUTTON_SAVE": "Save",
|
||||
"BUTTON_REMOVE": "Close wallet",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later."
|
||||
},
|
||||
"COST": "Alias fee {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"ONE_ALIAS": "You can create only one alias per wallet",
|
||||
"REQUEST_ADD_REG": "The alias will be assigned within 10 minutes"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "You do not have enough funds to change the comment to this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"COST": "Fee {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Edit"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transfer to",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "No wallet with this account exists",
|
||||
"ALIAS_EXISTS": "This account already has an alias",
|
||||
"NO_MONEY": "You do not have enough funds to transfer this alias"
|
||||
},
|
||||
"COST": "Transfer fee {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transfer",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"REQUEST_SEND_REG": "The alias will be transferred within 10 minutes"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Address",
|
||||
"AMOUNT": "Amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"HIDE": "Hide your wallet address from recipient",
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "Transaction sent",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"ALIAS_NOT_VALID": "Alias not valid",
|
||||
"AMOUNT_REQUIRED": "Amount is required",
|
||||
"AMOUNT_ZERO": "Amount is zero",
|
||||
"FEE_REQUIRED": "Fee is required",
|
||||
"FEE_MINIMUM": "Minimum fee: {{fee}}",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
"STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Locked till {{date}}",
|
||||
"SEND": "Sent",
|
||||
"RECEIVED": "Received",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"FEE": "Fee",
|
||||
"ADDRESS": "Address",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "Payment ID",
|
||||
"ID": "Transaction ID",
|
||||
"SIZE": "Transaction size",
|
||||
"SIZE_VALUE": "{{value}} bytes",
|
||||
"HEIGHT": "Height",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Comment"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "hidden",
|
||||
"UNDEFINED": "Undefined",
|
||||
"COMPLETE_BUYER": "Contract completed",
|
||||
"COMPLETE_SELLER": "Contract completed",
|
||||
"CREATE_ALIAS": "Fee for assigning alias",
|
||||
"UPDATE_ALIAS": "Fee for editing alias",
|
||||
"POW_REWARD": "POW reward",
|
||||
"POS_REWARD": "POS reward",
|
||||
"CREATE_CONTRACT": "Contract proposal",
|
||||
"PLEDGE_CONTRACT": "Contract deposit",
|
||||
"NULLIFY_CONTRACT": "Burn deposits",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Cancellation request",
|
||||
"CANCEL_CONTRACT": "Cancel and return deposits"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "No active contracts",
|
||||
"CONTRACTS": "Contracts",
|
||||
"PURCHASE": "Purchase",
|
||||
"SELL": "Sell",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"STATUS": "Status",
|
||||
"COMMENTS": "Comments",
|
||||
"PURCHASE_BUTTON": "New Purchase",
|
||||
"LISTING_BUTTON": "Create listing",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Less than an hour to respond",
|
||||
"REMAINING_ONE": "{{time}} hour remains",
|
||||
"REMAINING_MANY": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT": "{{time}} hours remain",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} hour remains",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_ONE_WAITING": "Waiting for {{time}} hour",
|
||||
"REMAINING_MANY_WAITING": "Waiting for {{time}} hours",
|
||||
"REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "New contract proposal",
|
||||
"IGNORED": "You ignored contract proposal",
|
||||
"ACCEPTED": "Contract started",
|
||||
"WAIT": "Waiting for contract confirmation",
|
||||
"WAITING_BUYER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "You ignored cancellation proposal",
|
||||
"EXPIRED": "Contract proposal has expired"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "Waiting for response",
|
||||
"IGNORED": "Seller ignored your contract proposal",
|
||||
"ACCEPTED": "Seller accepted your contract proposal",
|
||||
"WAIT": "Waiting for deposits confirmation",
|
||||
"WAITING_SELLER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"WAITING_CANCEL": "Waiting for contract cancellation",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract",
|
||||
"EXPIRED": "The contract proposal has expired"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Description",
|
||||
"SELLER": "Seller",
|
||||
"AMOUNT": "Amount",
|
||||
"YOUR_DEPOSIT": "Your deposit",
|
||||
"SELLER_DEPOSIT": "Seller deposit",
|
||||
"BUYER_DEPOSIT": "Buyer deposit",
|
||||
"SAME_AMOUNT": "Same amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"SEND_BUTTON": "Send",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Description required",
|
||||
"DESC_MAXIMUM": "Maximum field length reached",
|
||||
"SELLER_REQUIRED": "Address required",
|
||||
"SELLER_NOT_VALID": "Invalid address",
|
||||
"ALIAS_NOT_VALID": "Invalid alias",
|
||||
"AMOUNT_REQUIRED": "Amount required",
|
||||
"AMOUNT_ZERO": "Amount cannot be zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Deposit required",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Seller deposit required",
|
||||
"SELLER_SAME": "Use separate account",
|
||||
"COMMENT_MAXIMUM": "Maximum field length reached"
|
||||
},
|
||||
"PROGRESS_NEW": "New purchase",
|
||||
"PROGRESS_WAIT": "Awaiting reply",
|
||||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"WAITING_SELLER": "Waiting for response",
|
||||
"WAITING_BUYER": "Contract proposal received",
|
||||
"WAITING_CONFIRMATION": "Waiting for deposits confirmation",
|
||||
"WAITING_DELIVERY": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"IGNORED_BUYER": "Contract proposal ignored",
|
||||
"IGNORED_SELLER": "The seller ignored your contract proposal",
|
||||
"PROPOSAL_CANCEL_SELLER": "Cancellation request sent",
|
||||
"PROPOSAL_CANCEL_BUYER": "Cancellation request received",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract",
|
||||
"IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"EXPIRED": "Contract proposal expired",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contract started",
|
||||
"IGNORED_ACCEPT": "Contract proposal ignored",
|
||||
"BURN_PROPOSAL": "Deposits burned",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contract completed",
|
||||
"SEND_CANCEL_PROPOSAL": "Cancellation request sent",
|
||||
"IGNORED_CANCEL": "Contract cancellation proposal ignored",
|
||||
"DEALS_CANCELED_WAIT": "Cancellation in progress",
|
||||
"WAITING_TIME": "Response time",
|
||||
"NEED_MONEY": "Insufficient funds",
|
||||
"BUTTON_MAKE_PLEDGE": "Accept and make deposit",
|
||||
"BUTTON_IGNORE": "Ignore and hide offer",
|
||||
"BUTTON_NULLIFY": "Terminate and burn deposits",
|
||||
"BUTTON_RECEIVED": "Complete and release deposits",
|
||||
"BUTTON_CANCEL_BUYER": "Cancel and return deposits",
|
||||
"BUTTON_NOT_CANCEL": "Ignore request",
|
||||
"BUTTON_CANCEL_SELLER": "Confirm and return deposits",
|
||||
"HOUR": "hour",
|
||||
"HOURS": "hours",
|
||||
"CANCEL": "Cancel",
|
||||
"NULLIFY_QUESTION": "Are you sure you want to burn both deposits?",
|
||||
"BUTTON_NULLIFY_SHORT": "Burn",
|
||||
"WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Error",
|
||||
"SUCCESS": "Success",
|
||||
"INFO": "Information",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Send",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"TITLE": "Confirm transaction",
|
||||
"MESSAGE": {
|
||||
"SEND": "Send",
|
||||
"FROM": "From",
|
||||
"TO": "To",
|
||||
"COMMENT": "Comment"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Pending",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Time period:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 week",
|
||||
"WEEK2": "2 week",
|
||||
"MONTH1": "1 month",
|
||||
"MONTH3": "3 month",
|
||||
"MONTH6": "6 month",
|
||||
"YEAR": "1 year",
|
||||
"ALL": "All"
|
||||
},
|
||||
"TITLE_GROUP": "Group:",
|
||||
"GROUP": {
|
||||
"DAY": "day",
|
||||
"WEEK": "week",
|
||||
"MONTH": "month"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Contact list",
|
||||
"IMPORT_EXPORT": "Import or export contacts",
|
||||
"IMPORT": "Import",
|
||||
"EXPORT": "Export",
|
||||
"ADD": "Add/edit contact",
|
||||
"SEND": "Send",
|
||||
"SEND_FROM": "Send from",
|
||||
"SEND_TO": "To",
|
||||
"OPEN_ADD_WALLET": "Open/Add wallet",
|
||||
"COPY": "- Copy",
|
||||
"TABLE": {
|
||||
"NAME": "Name",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes",
|
||||
"EMPTY": "Contact list is empty"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Name",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUBLICATED": "Name is dublicated",
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"SET_MASTER_PASSWORD": "Set master password",
|
||||
"ADDRESS_DUBLICATED": "Address is dublicated",
|
||||
"MAX_LENGTH": "Maximum notes length reached",
|
||||
"NAME_LENGTH": "The name must be 4-25 characters long"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Send",
|
||||
"EDIT": "Edit",
|
||||
"DELETE": "Delete",
|
||||
"ADD": "Add contact",
|
||||
"ADD_EDIT": "Add/Save",
|
||||
"GO_TO_WALLET": "Go to wallet",
|
||||
"IMPORT_EXPORT": "Import/export"
|
||||
},
|
||||
"SUCCESS_SENT": "Contact added",
|
||||
"SUCCESS_SAVE": "Contact is edited",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Error is occured while reading file!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Not enough money",
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error: core is busy",
|
||||
"DAEMON_BUSY": "Internal error: daemon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with",
|
||||
"TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Transaction not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.",
|
||||
"TX_TYPE_NORMAL": "Error. The payment from the wallet",
|
||||
"TX_TYPE_NORMAL_TO": "to",
|
||||
"TX_TYPE_NORMAL_END": "was not completed.",
|
||||
"TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Please try again.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe",
|
||||
"TX_TYPE_COIN_BASE": "Error. The payment was not completed."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copy",
|
||||
"PASTE": "paste",
|
||||
"SELECT": "select all"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Quit",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Payment received",
|
||||
"MINED": "Mined",
|
||||
"LOCKED": "Blocked",
|
||||
"IS_MINIMIZE": "Zano application is minimized to the system tray",
|
||||
"RESTORE": "You can recover it by clicking or using the context menu",
|
||||
"TRAY_MENU_SHOW": "Resize",
|
||||
"TRAY_MENU_MINIMIZE": "Minimize"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,593 +0,0 @@
|
|||
{
|
||||
"LOGIN": {
|
||||
"SETUP_MASTER_PASS": "Setup master password",
|
||||
"SETUP_CONFIRM_PASS": "Confirm the password",
|
||||
"MASTER_PASS": "Master password",
|
||||
"BUTTON_NEXT": "Next",
|
||||
"BUTTON_SKIP": "Skip",
|
||||
"BUTTON_RESET": "Reset",
|
||||
"INCORRECT_PASSWORD": "Invalid password",
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"CONFIRM_REQUIRED": "Confirmation is required",
|
||||
"MISMATCH": "Mismatch"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Go back"
|
||||
},
|
||||
"BREADCRUMBS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"SAVE_PHRASE": "Save your seed phrase",
|
||||
"OPEN_WALLET": "Open existing wallet",
|
||||
"RESTORE_WALLET": "Restore from backup",
|
||||
"WALLET_DETAILS": "Wallet details",
|
||||
"ASSIGN_ALIAS": "Assign alias",
|
||||
"EDIT_ALIAS": "Edit alias",
|
||||
"TRANSFER_ALIAS": "Transfer alias",
|
||||
"CONTRACTS": "Contracts",
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"OLD_PURCHASE": "Purchase"
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"TITLE": "Wallets",
|
||||
"ADD_NEW": "+ Add",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "New offers/Messages",
|
||||
"SYNCING": "Syncing wallet"
|
||||
},
|
||||
"CONTACTS": "Contacts",
|
||||
"SETTINGS": "Settings",
|
||||
"LOG_OUT": "Log out",
|
||||
"SYNCHRONIZATION": {
|
||||
"OFFLINE": "Offline",
|
||||
"ONLINE": "Online",
|
||||
"ERROR": "System error",
|
||||
"COMPLETE": "Completion",
|
||||
"SYNCING": "Syncing blockchain",
|
||||
"LOADING": "Loading blockchain data"
|
||||
},
|
||||
"UPDATE": {
|
||||
"STANDARD": "Update available",
|
||||
"STANDARD_TOOLTIP": "<span class=\"standard-update\">Get new update.</span><br><span>Update is recommended!</span>",
|
||||
"IMPORTANT": "Update available",
|
||||
"IMPORTANT_HINT": "Important update!",
|
||||
"IMPORTANT_TOOLTIP": "<span class=\"important-update\">Get new update.</span><br><span>Important update!</span>",
|
||||
"CRITICAL": "Update available",
|
||||
"CRITICAL_HINT": "Critical update!",
|
||||
"CRITICAL_TOOLTIP": "<span class=\"critical-update\">Critical update available.</span><i class=\"icon\"></i><span>Update strongly recommended!</span>",
|
||||
"TIME": "System time differs from network",
|
||||
"TIME_TOOLTIP": "<span class=\"wrong-time\">Wrong system time!</span><br><span>Check and repair your system time.</span>"
|
||||
}
|
||||
},
|
||||
"MAIN": {
|
||||
"TITLE": "Create or open the wallet to start using Zano",
|
||||
"BUTTON_NEW_WALLET": "Create new wallet",
|
||||
"BUTTON_OPEN_WALLET": "Open existing wallet",
|
||||
"BUTTON_RESTORE_BACKUP": "Restore from backup",
|
||||
"HELP": "How to create wallet?",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Set wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"TITLE_SAVE": "Save the wallet file.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
}
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open",
|
||||
"FILE_NOT_FOUND1": "Wallet file not found",
|
||||
"FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open wallet\" button.",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
},
|
||||
"MODAL": {
|
||||
"TITLE": "Type wallet password",
|
||||
"LABEL": "Password to this wallet",
|
||||
"OPEN": "Open wallet",
|
||||
"SKIP": "Skip",
|
||||
"NOT_FOUND": "Not found"
|
||||
}
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_PHRASE_KEY": "Seed phrase / tracking seed",
|
||||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match",
|
||||
"KEY_REQUIRED": "Key is required",
|
||||
"KEY_NOT_VALID": "Key not valid"
|
||||
}
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.",
|
||||
"BUTTON_CREATE_ACCOUNT": "Create wallet",
|
||||
"BUTTON_COPY": "Copy"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"ADD_WALLET": "Add wallet",
|
||||
"SELECT_LOCATION": "Select wallet location",
|
||||
"CREATE_WALLET": "Create new wallet",
|
||||
"RESTORE_WALLET": "Restore from backup"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings",
|
||||
"DARK_THEME": "Dark theme",
|
||||
"WHITE_THEME": "White theme",
|
||||
"GRAY_THEME": "Grey theme",
|
||||
"APP_LOCK": {
|
||||
"TITLE": "Lock app after:",
|
||||
"TIME1": "5 min",
|
||||
"TIME2": "15 min",
|
||||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
"NEW": "New password",
|
||||
"CONFIRM": "New password confirmation",
|
||||
"BUTTON": "Save"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"PASS_REQUIRED": "Password is required",
|
||||
"PASS_NOT_MATCH": "Old password not match",
|
||||
"CONFIRM_NOT_MATCH": "Confirm password not match"
|
||||
},
|
||||
"LAST_BUILD": "Current build: {{value}}",
|
||||
"APP_LOG_TITLE": "Log level:"
|
||||
},
|
||||
"WALLET": {
|
||||
"REGISTER_ALIAS": "Register an alias",
|
||||
"DETAILS": "Details",
|
||||
"LOCK": "Lock",
|
||||
"AVAILABLE_BALANCE": "Available <b>{{available}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE": "Locked <b>{{locked}} {{currency}}<b/>",
|
||||
"LOCKED_BALANCE_LINK": "What does that mean?",
|
||||
"TABS": {
|
||||
"SEND": "Send",
|
||||
"RECEIVE": "Receive",
|
||||
"HISTORY": "History",
|
||||
"CONTRACTS": "Contracts",
|
||||
"MESSAGES": "Messages",
|
||||
"STAKING": "Staking"
|
||||
}
|
||||
},
|
||||
"WALLET_DETAILS": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
"LABEL_FILE_LOCATION": "Wallet file location",
|
||||
"LABEL_SEED_PHRASE": "Seed phrase",
|
||||
"SEED_PHRASE_HINT": "Click to reveal the seed phrase",
|
||||
"BUTTON_SAVE": "Save",
|
||||
"BUTTON_REMOVE": "Close wallet",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUPLICATE": "Name is duplicate",
|
||||
"MAX_LENGTH": "Maximum name length reached"
|
||||
}
|
||||
},
|
||||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": "",
|
||||
"TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later."
|
||||
},
|
||||
"COST": "Alias fee {{value}} {{currency}}",
|
||||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"ONE_ALIAS": "You can create only one alias per wallet",
|
||||
"REQUEST_ADD_REG": "The alias will be assigned within 10 minutes"
|
||||
},
|
||||
"EDIT_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NO_MONEY": "You do not have enough funds to change the comment to this alias",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
},
|
||||
"COST": "Fee {{value}} {{currency}}",
|
||||
"BUTTON_EDIT": "Edit"
|
||||
},
|
||||
"TRANSFER_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias"
|
||||
},
|
||||
"COMMENT": {
|
||||
"LABEL": "Comment",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"ADDRESS": {
|
||||
"LABEL": "Transfer to",
|
||||
"PLACEHOLDER": ""
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"WRONG_ADDRESS": "No wallet with this account exists",
|
||||
"ALIAS_EXISTS": "This account already has an alias",
|
||||
"NO_MONEY": "You do not have enough funds to transfer this alias"
|
||||
},
|
||||
"COST": "Transfer fee {{value}} {{currency}}",
|
||||
"BUTTON_TRANSFER": "Transfer",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"REQUEST_SEND_REG": "The alias will be transferred within 10 minutes"
|
||||
},
|
||||
"SEND": {
|
||||
"ADDRESS": "Address",
|
||||
"AMOUNT": "Amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"HIDE": "Hide your wallet address from recipient",
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "Transaction sent",
|
||||
"FORM_ERRORS": {
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"ALIAS_NOT_VALID": "Alias not valid",
|
||||
"AMOUNT_REQUIRED": "Amount is required",
|
||||
"AMOUNT_ZERO": "Amount is zero",
|
||||
"FEE_REQUIRED": "Fee is required",
|
||||
"FEE_MINIMUM": "Minimum fee: {{fee}}",
|
||||
"MAX_LENGTH": "Maximum comment length reached"
|
||||
}
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
"STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
|
||||
"LOCK_TOOLTIP": "Locked till {{date}}",
|
||||
"SEND": "Sent",
|
||||
"RECEIVED": "Received",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"FEE": "Fee",
|
||||
"ADDRESS": "Address",
|
||||
"DETAILS": {
|
||||
"PAYMENT_ID": "Payment ID",
|
||||
"ID": "Transaction ID",
|
||||
"SIZE": "Transaction size",
|
||||
"SIZE_VALUE": "{{value}} bytes",
|
||||
"HEIGHT": "Height",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"INPUTS": "Inputs",
|
||||
"OUTPUTS": "Outputs",
|
||||
"COMMENT": "Comment"
|
||||
},
|
||||
"TYPE_MESSAGES": {
|
||||
"HIDDEN": "hidden",
|
||||
"UNDEFINED": "Undefined",
|
||||
"COMPLETE_BUYER": "Contract completed",
|
||||
"COMPLETE_SELLER": "Contract completed",
|
||||
"CREATE_ALIAS": "Fee for assigning alias",
|
||||
"UPDATE_ALIAS": "Fee for editing alias",
|
||||
"POW_REWARD": "POW reward",
|
||||
"POS_REWARD": "POS reward",
|
||||
"CREATE_CONTRACT": "Contract proposal",
|
||||
"PLEDGE_CONTRACT": "Contract deposit",
|
||||
"NULLIFY_CONTRACT": "Burn deposits",
|
||||
"PROPOSAL_CANCEL_CONTRACT": "Cancellation request",
|
||||
"CANCEL_CONTRACT": "Cancel and return deposits"
|
||||
}
|
||||
},
|
||||
"CONTRACTS": {
|
||||
"EMPTY": "No active contracts",
|
||||
"CONTRACTS": "Contracts",
|
||||
"PURCHASE": "Purchase",
|
||||
"SELL": "Sell",
|
||||
"DATE": "Date",
|
||||
"AMOUNT": "Amount",
|
||||
"STATUS": "Status",
|
||||
"COMMENTS": "Comments",
|
||||
"PURCHASE_BUTTON": "New Purchase",
|
||||
"LISTING_BUTTON": "Create listing",
|
||||
"TIME_LEFT": {
|
||||
"REMAINING_LESS_ONE": "Less than an hour to respond",
|
||||
"REMAINING_ONE": "{{time}} hour remains",
|
||||
"REMAINING_MANY": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT": "{{time}} hours remain",
|
||||
"REMAINING_ONE_RESPONSE": "{{time}} hour remains",
|
||||
"REMAINING_MANY_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain",
|
||||
"REMAINING_ONE_WAITING": "Waiting for {{time}} hour",
|
||||
"REMAINING_MANY_WAITING": "Waiting for {{time}} hours",
|
||||
"REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours"
|
||||
},
|
||||
"STATUS_MESSAGES": {
|
||||
"SELLER": {
|
||||
"NEW_CONTRACT": "New contract proposal",
|
||||
"IGNORED": "You ignored contract proposal",
|
||||
"ACCEPTED": "Contract started",
|
||||
"WAIT": "Waiting for contract confirmation",
|
||||
"WAITING_BUYER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "You ignored cancellation proposal",
|
||||
"EXPIRED": "Contract proposal has expired"
|
||||
},
|
||||
"BUYER": {
|
||||
"WAITING": "Waiting for response",
|
||||
"IGNORED": "Seller ignored your contract proposal",
|
||||
"ACCEPTED": "Seller accepted your contract proposal",
|
||||
"WAIT": "Waiting for deposits confirmation",
|
||||
"WAITING_SELLER": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned",
|
||||
"WAITING_CANCEL": "Waiting for contract cancellation",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract",
|
||||
"EXPIRED": "The contract proposal has expired"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PURCHASE": {
|
||||
"DESCRIPTION": "Description",
|
||||
"SELLER": "Seller",
|
||||
"AMOUNT": "Amount",
|
||||
"YOUR_DEPOSIT": "Your deposit",
|
||||
"SELLER_DEPOSIT": "Seller deposit",
|
||||
"BUYER_DEPOSIT": "Buyer deposit",
|
||||
"SAME_AMOUNT": "Same amount",
|
||||
"COMMENT": "Comment",
|
||||
"DETAILS": "Additional details",
|
||||
"SEND_BUTTON": "Send",
|
||||
"FORM_ERRORS": {
|
||||
"DESC_REQUIRED": "Description required",
|
||||
"DESC_MAXIMUM": "Maximum field length reached",
|
||||
"SELLER_REQUIRED": "Address required",
|
||||
"SELLER_NOT_VALID": "Invalid address",
|
||||
"ALIAS_NOT_VALID": "Invalid alias",
|
||||
"AMOUNT_REQUIRED": "Amount required",
|
||||
"AMOUNT_ZERO": "Amount cannot be zero",
|
||||
"YOUR_DEPOSIT_REQUIRED": "Deposit required",
|
||||
"SELLER_DEPOSIT_REQUIRED": "Seller deposit required",
|
||||
"SELLER_SAME": "Use separate account",
|
||||
"COMMENT_MAXIMUM": "Maximum field length reached"
|
||||
},
|
||||
"PROGRESS_NEW": "New purchase",
|
||||
"PROGRESS_WAIT": "Awaiting reply",
|
||||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID",
|
||||
"STATUS_MESSAGES": {
|
||||
"NEW_PURCHASE": "New purchase",
|
||||
"WAITING_SELLER": "Waiting for response",
|
||||
"WAITING_BUYER": "Contract proposal received",
|
||||
"WAITING_CONFIRMATION": "Waiting for deposits confirmation",
|
||||
"WAITING_DELIVERY": "Waiting for delivery",
|
||||
"COMPLETED": "Contract completed",
|
||||
"IGNORED_BUYER": "Contract proposal ignored",
|
||||
"IGNORED_SELLER": "The seller ignored your contract proposal",
|
||||
"PROPOSAL_CANCEL_SELLER": "Cancellation request sent",
|
||||
"PROPOSAL_CANCEL_BUYER": "Cancellation request received",
|
||||
"BEING_CANCELLED": "Cancellation in progress",
|
||||
"IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract",
|
||||
"IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored",
|
||||
"CANCELLED": "Contract canceled",
|
||||
"EXPIRED": "Contract proposal expired",
|
||||
"NOT_RECEIVED": "Delivery failed",
|
||||
"NULLIFIED": "All deposits burned"
|
||||
},
|
||||
"ACCEPT_STATE_WAIT_BIG": "Contract started",
|
||||
"IGNORED_ACCEPT": "Contract proposal ignored",
|
||||
"BURN_PROPOSAL": "Deposits burned",
|
||||
"SUCCESS_FINISH_PROPOSAL": "Contract completed",
|
||||
"SEND_CANCEL_PROPOSAL": "Cancellation request sent",
|
||||
"IGNORED_CANCEL": "Contract cancellation proposal ignored",
|
||||
"DEALS_CANCELED_WAIT": "Cancellation in progress",
|
||||
"WAITING_TIME": "Response time",
|
||||
"NEED_MONEY": "Insufficient funds",
|
||||
"BUTTON_MAKE_PLEDGE": "Accept and make deposit",
|
||||
"BUTTON_IGNORE": "Ignore and hide offer",
|
||||
"BUTTON_NULLIFY": "Terminate and burn deposits",
|
||||
"BUTTON_RECEIVED": "Complete and release deposits",
|
||||
"BUTTON_CANCEL_BUYER": "Cancel and return deposits",
|
||||
"BUTTON_NOT_CANCEL": "Ignore request",
|
||||
"BUTTON_CANCEL_SELLER": "Confirm and return deposits",
|
||||
"HOUR": "hour",
|
||||
"HOURS": "hours",
|
||||
"CANCEL": "Cancel",
|
||||
"NULLIFY_QUESTION": "Are you sure you want to burn both deposits?",
|
||||
"BUTTON_NULLIFY_SHORT": "Burn",
|
||||
"WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"MODALS": {
|
||||
"ERROR": "Error",
|
||||
"SUCCESS": "Success",
|
||||
"INFO": "Information",
|
||||
"OK": "OK"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"BUTTON_CONFIRM": "Send",
|
||||
"BUTTON_CANCEL": "Cancel",
|
||||
"TITLE": "Confirm transaction",
|
||||
"MESSAGE": {
|
||||
"SEND": "Send",
|
||||
"FROM": "From",
|
||||
"TO": "To",
|
||||
"COMMENT": "Comment"
|
||||
}
|
||||
},
|
||||
"STAKING": {
|
||||
"TITLE": "Staking",
|
||||
"TITLE_PENDING": "Pending",
|
||||
"TITLE_TOTAL": "Total",
|
||||
"TITLE_PERIOD": "Time period:",
|
||||
"PERIOD": {
|
||||
"WEEK1": "1 week",
|
||||
"WEEK2": "2 week",
|
||||
"MONTH1": "1 month",
|
||||
"MONTH3": "3 month",
|
||||
"MONTH6": "6 month",
|
||||
"YEAR": "1 year",
|
||||
"ALL": "All"
|
||||
},
|
||||
"TITLE_GROUP": "Group:",
|
||||
"GROUP": {
|
||||
"DAY": "day",
|
||||
"WEEK": "week",
|
||||
"MONTH": "month"
|
||||
},
|
||||
"SWITCH": {
|
||||
"ON": "ON",
|
||||
"OFF": "OFF"
|
||||
}
|
||||
},
|
||||
"CONTACTS": {
|
||||
"TITLE": "Contact list",
|
||||
"IMPORT_EXPORT": "Import or export contacts",
|
||||
"IMPORT": "Import",
|
||||
"EXPORT": "Export",
|
||||
"ADD": "Add/edit contact",
|
||||
"SEND": "Send",
|
||||
"SEND_FROM": "Send from",
|
||||
"SEND_TO": "To",
|
||||
"OPEN_ADD_WALLET": "Open/Add wallet",
|
||||
"COPY": "- Copy",
|
||||
"TABLE": {
|
||||
"NAME": "Name",
|
||||
"ALIAS": "Alias",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes",
|
||||
"EMPTY": "Contact list is empty"
|
||||
},
|
||||
"FORM": {
|
||||
"NAME": "Name",
|
||||
"ADDRESS": "Address",
|
||||
"NOTES": "Notes"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_DUBLICATED": "Name is dublicated",
|
||||
"ADDRESS_REQUIRED": "Address is required",
|
||||
"ADDRESS_NOT_VALID": "Address not valid",
|
||||
"SET_MASTER_PASSWORD": "Set master password",
|
||||
"ADDRESS_DUBLICATED": "Address is dublicated",
|
||||
"MAX_LENGTH": "Maximum notes length reached",
|
||||
"NAME_LENGTH": "The name must be 4-25 characters long"
|
||||
},
|
||||
"BUTTON": {
|
||||
"SEND": "Send",
|
||||
"EDIT": "Edit",
|
||||
"DELETE": "Delete",
|
||||
"ADD": "Add contact",
|
||||
"ADD_EDIT": "Add/Save",
|
||||
"GO_TO_WALLET": "Go to wallet",
|
||||
"IMPORT_EXPORT": "Import/export"
|
||||
},
|
||||
"SUCCESS_SENT": "Contact added",
|
||||
"SUCCESS_SAVE": "Contact is edited",
|
||||
"SUCCESS_IMPORT": "Contacts are imported",
|
||||
"SUCCESS_EXPORT": "Contacts are exported",
|
||||
"ERROR_IMPORT": "Error is occured while reading file!",
|
||||
"ERROR_TYPE_FILE": "Please import valid .csv file",
|
||||
"ERROR_EXPORT": "Invalid file type. Save file as .csv",
|
||||
"ERROR_EMPTY_LIST": "Contact list is empty",
|
||||
"ERROR_IMPORT_EMPTY": "File is empty"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NO_MONEY": "Not enough money",
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error: core is busy",
|
||||
"DAEMON_BUSY": "Internal error: daemon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with",
|
||||
"TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Transaction not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.",
|
||||
"TX_TYPE_NORMAL": "Error. The payment from the wallet",
|
||||
"TX_TYPE_NORMAL_TO": "to",
|
||||
"TX_TYPE_NORMAL_END": "was not completed.",
|
||||
"TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe",
|
||||
"TX_TYPE_NEW_ALIAS_END": "Please try again.",
|
||||
"TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe",
|
||||
"TX_TYPE_COIN_BASE": "Error. The payment was not completed."
|
||||
},
|
||||
"CONTEXT_MENU": {
|
||||
"COPY": "copy",
|
||||
"PASTE": "paste",
|
||||
"SELECT": "select all"
|
||||
},
|
||||
"BACKEND_LOCALIZATION": {
|
||||
"QUIT": "Quit",
|
||||
"IS_RECEIVED": "",
|
||||
"IS_CONFIRMED": "",
|
||||
"INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)",
|
||||
"INCOME_TRANSFER_CONFIRMED": "Payment received",
|
||||
"MINED": "Mined",
|
||||
"LOCKED": "Blocked",
|
||||
"IS_MINIMIZE": "Zano application is minimized to the system tray",
|
||||
"RESTORE": "You can recover it by clicking or using the context menu",
|
||||
"TRAY_MENU_SHOW": "Resize",
|
||||
"TRAY_MENU_MINIMIZE": "Minimize"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="icons" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 384 384" style="enable-background:new 0 0 384 384;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#FFFFFF;}
|
||||
</style>
|
||||
<path id="account" class="st0" d="M192,0C86,0,0,86,0,192s86,192,192,192s192-86,192-192S298,0,192,0z M86,86
|
||||
c28.3-28.3,66-43.9,106-43.9S269.7,57.7,298,86c28.3,28.3,43.9,66,43.9,106c0,26.4-6.8,51.7-19.4,74c-12.7-12.8-28.6-23.3-46.7-31
|
||||
c8.4-15.6,13.2-33.7,13.2-53c0-32.3-9.8-59.2-28.3-78.1c-17.2-17.5-41.6-27.2-68.7-27.2s-51.5,9.7-68.7,27.2
|
||||
C104.8,122.8,95,149.7,95,182c0,19.2,4.8,37.3,13.1,52.8C90,242.5,74,252.9,61.3,265.7c-12.6-22.2-19.3-47.4-19.3-73.7
|
||||
C42.1,151.9,57.7,114.3,86,86z M137,182c0-40.2,20.1-63.3,55-63.3s55,23.1,55,63.3c0,34.9-24.7,63.3-55,63.3S137,216.9,137,182z
|
||||
M87.3,299.3c1.4-1.6,3-3.3,4.9-5.1c11.7-11.3,26.9-19.8,45.1-25.4c15.6,11.6,34.4,18.4,54.7,18.4c20.2,0,39-6.8,54.6-18.3
|
||||
c26.4,8.1,41.7,21.2,49.9,30.6c-28.1,27.4-65.1,42.4-104.5,42.4C152.6,341.9,115.5,326.8,87.3,299.3z"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.2 KiB |
|
|
@ -1,9 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 18 18" style="enable-background:new 0 0 18 18;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#FFFFFF;}
|
||||
</style>
|
||||
<polygon class="st0" points="18,7 11,7 11,0 7,0 7,7 0,7 0,11 7,11 7,18 11,18 11,11 18,11 "/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 499 B |
|
|
@ -1,9 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#FFFFFF;}
|
||||
</style>
|
||||
<path class="st0" d="M16,0C7.2,0,0,7.2,0,16s7.2,16,16,16s16-7.2,16-16S24.8,0,16,0z M18,25h-4v-4h4V25z M18,18h-4V7h4V18z"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 529 B |
|
|
@ -1,9 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#FFFFFF;}
|
||||
</style>
|
||||
<polygon class="st0" points="0,8 32,8 16,24"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 453 B |
|
|
@ -1,9 +0,0 @@
|
|||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="451.846px" height="451.847px" viewBox="0 0 451.846 451.847" style="enable-background:new 0 0 451.846 451.847;"
|
||||
xml:space="preserve">
|
||||
<g>
|
||||
<path d="M345.441,248.292L151.154,442.573c-12.359,12.365-32.397,12.365-44.75,0c-12.354-12.354-12.354-32.391,0-44.744
|
||||
L278.318,225.92L106.409,54.017c-12.354-12.359-12.354-32.394,0-44.748c12.354-12.359,32.391-12.359,44.75,0l194.287,194.284
|
||||
c6.177,6.18,9.262,14.271,9.262,22.366C354.708,234.018,351.617,242.115,345.441,248.292z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 606 B |
|
|
@ -1,9 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#FFFFFF;}
|
||||
</style>
|
||||
<polygon class="st0" points="0,24 32,24 16,8"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 454 B |
|
|
@ -1,10 +0,0 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 240.823 240.823" style="enable-background:new 0 0 240.823 240.823;" xml:space="preserve">
|
||||
<g>
|
||||
<path id="Chevron_Right" d="M57.633,129.007L165.93,237.268c4.752,4.74,12.451,4.74,17.215,0c4.752-4.74,4.752-12.439,0-17.179
|
||||
l-99.707-99.671l99.695-99.671c4.752-4.74,4.752-12.439,0-17.191c-4.752-4.74-12.463-4.74-17.215,0L57.621,111.816
|
||||
C52.942,116.507,52.942,124.327,57.633,129.007z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 675 B |
|
|
@ -1,10 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 23.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 34 34" style="enable-background:new 0 0 34 34;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#4db1ff;}
|
||||
</style>
|
||||
<polygon class="st0" points="31.9,4.9 29.1,2.1 17,14.2 4.9,2.1 2.1,4.9 14.2,17 2.1,29.1 4.9,31.9 17,19.8 29.1,31.9 31.9,29.1
|
||||
19.8,17 "/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 549 B |
|
|
@ -1,10 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 23.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 34 34" style="enable-background:new 0 0 34 34;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#FFFFFF;}
|
||||
</style>
|
||||
<polygon class="st0" points="31.9,4.9 29.1,2.1 17,14.2 4.9,2.1 2.1,4.9 14.2,17 2.1,29.1 4.9,31.9 17,19.8 29.1,31.9 31.9,29.1
|
||||
19.8,17 "/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 545 B |
|
|
@ -1,18 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 23.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 384 384" style="enable-background:new 0 0 384 384;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#FFFFFF;}
|
||||
</style>
|
||||
<g id="Layer_1">
|
||||
</g>
|
||||
<g id="Layer_1_copy">
|
||||
</g>
|
||||
<g id="Layer_4">
|
||||
<polygon class="st0" points="300,105.1 278.9,84 192,170.9 105.1,84 84,105.1 170.9,192 84,278.9 105.1,300 192,213.1 278.9,300
|
||||
300,278.9 213.1,192 "/>
|
||||
</g>
|
||||
<g id="Layer_2">
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 644 B |