diff --git a/android/app/src/main/java/com/cakewallet/cake_wallet/MainActivity.java b/android/app/src/main/java/com/cakewallet/cake_wallet/MainActivity.java index cf650375f..26cc56187 100644 --- a/android/app/src/main/java/com/cakewallet/cake_wallet/MainActivity.java +++ b/android/app/src/main/java/com/cakewallet/cake_wallet/MainActivity.java @@ -1,15 +1,49 @@ package com.cakewallet.cake_wallet; import androidx.annotation.NonNull; + import io.flutter.embedding.android.FlutterFragmentActivity; import io.flutter.embedding.engine.FlutterEngine; import io.flutter.plugins.GeneratedPluginRegistrant; +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; + +import android.os.AsyncTask; +import android.os.Handler; +import android.os.Looper; + +import java.security.SecureRandom; public class MainActivity extends FlutterFragmentActivity { + final String UTILS_CHANNEL = "com.cake_wallet/native_utils"; @Override public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) { GeneratedPluginRegistrant.registerWith(flutterEngine); + + MethodChannel utilsChannel = + new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), + UTILS_CHANNEL); + + utilsChannel.setMethodCallHandler(this::handle); + } + + private void handle(@NonNull MethodCall call, @NonNull MethodChannel.Result result) { + Handler handler = new Handler(Looper.getMainLooper()); + + try { + if (call.method.equals("sec_random")) { + int count = call.argument("count"); + SecureRandom random = new SecureRandom(); + byte bytes[] = new byte[count]; + random.nextBytes(bytes); + handler.post(() -> result.success(bytes)); + } else { + handler.post(() -> result.notImplemented()); + } + } catch (Exception e) { + handler.post(() -> result.error("UNCAUGHT_ERROR", e.getMessage(), null)); + } } } diff --git a/android/app/src/main/kotlin/com/cakewallet/cake_wallet/MainActivity.kt b/android/app/src/main/kotlin/com/cakewallet/cake_wallet/MainActivity.kt deleted file mode 100644 index b5c933268..000000000 --- a/android/app/src/main/kotlin/com/cakewallet/cake_wallet/MainActivity.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.cakewallet.cake_wallet - -import androidx.annotation.NonNull; -import io.flutter.embedding.android.FlutterActivity -import io.flutter.embedding.android.FlutterFragmentActivity -import io.flutter.embedding.engine.FlutterEngine -import io.flutter.plugins.GeneratedPluginRegistrant - -class MainActivity: FlutterActivity() { - override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine){ - GeneratedPluginRegistrant.registerWith(flutterEngine); - } -} diff --git a/android/app/src/main/res/drawable/ic_launcher.png b/android/app/src/main/res/drawable/ic_launcher.png new file mode 100755 index 000000000..a96724f1c Binary files /dev/null and b/android/app/src/main/res/drawable/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 000000000..b2c4ad887 --- /dev/null +++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index 5d9200d0a..b11806d56 100644 Binary files a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 83a98b56d..b76508e83 100644 Binary files a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png index c8cbe84dd..1d32c2836 100644 Binary files a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index c4352f579..d5b7374a7 100644 Binary files a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 73fe04234..af40ea947 100644 Binary files a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/assets/images/2.0x/cake_logo.png b/assets/images/2.0x/cake_logo.png index c464cdcd4..277816813 100644 Binary files a/assets/images/2.0x/cake_logo.png and b/assets/images/2.0x/cake_logo.png differ diff --git a/assets/images/3.0x/cake_logo.png b/assets/images/3.0x/cake_logo.png index 5da47a539..87dd05ce2 100644 Binary files a/assets/images/3.0x/cake_logo.png and b/assets/images/3.0x/cake_logo.png differ diff --git a/assets/images/app_logo.png b/assets/images/app_logo.png index 4540659cf..bf6896ad2 100644 Binary files a/assets/images/app_logo.png and b/assets/images/app_logo.png differ diff --git a/assets/images/cake_logo.png b/assets/images/cake_logo.png index fb5267a79..8a85bf225 100644 Binary files a/assets/images/cake_logo.png and b/assets/images/cake_logo.png differ diff --git a/ios/CakeWallet/secRandom.swift b/ios/CakeWallet/secRandom.swift new file mode 100644 index 000000000..c9b2e3593 --- /dev/null +++ b/ios/CakeWallet/secRandom.swift @@ -0,0 +1,12 @@ +import Foundation + +func secRandom(count: Int) -> Data? { + var bytes = [Int8](repeating: 0, count: count) + let status = SecRandomCopyBytes(kSecRandomDefault, bytes.count, &bytes) + + if status == errSecSuccess { + return Data(bytes: bytes, count: bytes.count) + } + + return nil +} diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 4dc5104c4..9deb7b43a 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -8,6 +8,7 @@ /* Begin PBXBuildFile section */ 0C44A71A2518EF8000B570ED /* decrypt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C44A7192518EF8000B570ED /* decrypt.swift */; }; + 0C9D68C9264854B60011B691 /* secRandom.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C9D68C8264854B60011B691 /* secRandom.swift */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 20ED0868E1BD7E12278C0CB3 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B26E3F56D69167FBB1DC160A /* Pods_Runner.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; @@ -21,6 +22,7 @@ 0C400E0F25B21ABB0025E469 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = ""; }; 0C44A7192518EF8000B570ED /* decrypt.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = decrypt.swift; sourceTree = ""; }; 0C9986A3251A932F00D566FD /* CryptoSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = CryptoSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 0C9D68C8264854B60011B691 /* secRandom.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = secRandom.swift; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 20F67A1B2C2FCB2A3BB048C1 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; @@ -65,6 +67,7 @@ isa = PBXGroup; children = ( 0C44A7192518EF8000B570ED /* decrypt.swift */, + 0C9D68C8264854B60011B691 /* secRandom.swift */, ); path = CakeWallet; sourceTree = ""; @@ -274,6 +277,7 @@ files = ( 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + 0C9D68C9264854B60011B691 /* secRandom.swift in Sources */, 0C44A71A2518EF8000B570ED /* decrypt.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -358,7 +362,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 36; + CURRENT_PROJECT_VERSION = 38; DEVELOPMENT_TEAM = 32J6BB6VUS; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -501,7 +505,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 36; + CURRENT_PROJECT_VERSION = 38; DEVELOPMENT_TEAM = 32J6BB6VUS; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -536,7 +540,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 36; + CURRENT_PROJECT_VERSION = 38; DEVELOPMENT_TEAM = 32J6BB6VUS; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift index 01aa14195..e7c300079 100644 --- a/ios/Runner/AppDelegate.swift +++ b/ios/Runner/AppDelegate.swift @@ -8,9 +8,10 @@ import Flutter didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { let controller : FlutterViewController = window?.rootViewController as! FlutterViewController - let batteryChannel = FlutterMethodChannel(name: "com.cakewallet.cakewallet/legacy_wallet_migration", - binaryMessenger: controller.binaryMessenger) - batteryChannel.setMethodCallHandler({ + let legacyMigrationChannel = FlutterMethodChannel( + name: "com.cakewallet.cakewallet/legacy_wallet_migration", + binaryMessenger: controller.binaryMessenger) + legacyMigrationChannel.setMethodCallHandler({ (call: FlutterMethodCall, result: @escaping FlutterResult) -> Void in switch call.method { @@ -52,6 +53,24 @@ import Flutter } }) + let utilsChannel = FlutterMethodChannel( + name: "com.cake_wallet/native_utils", + binaryMessenger: controller.binaryMessenger) + utilsChannel.setMethodCallHandler({ (call: FlutterMethodCall, result: @escaping FlutterResult) -> Void in + switch call.method { + case "sec_random": + guard let args = call.arguments as? Dictionary, + let count = args["count"] as? Int else { + result(nil) + return + } + + result(secRandom(count: count)) + default: + result(FlutterMethodNotImplemented) + } + }) + GeneratedPluginRegistrant.register(with: self) return super.application(application, didFinishLaunchingWithOptions: launchOptions) } diff --git a/lib/bitcoin/bitcoin_mnemonic.dart b/lib/bitcoin/bitcoin_mnemonic.dart index 7f4bcd13c..4f56161e0 100644 --- a/lib/bitcoin/bitcoin_mnemonic.dart +++ b/lib/bitcoin/bitcoin_mnemonic.dart @@ -4,23 +4,11 @@ import 'dart:typed_data'; import 'package:crypto/crypto.dart'; import 'package:unorm_dart/unorm_dart.dart' as unorm; import 'package:cryptography/cryptography.dart' as cryptography; +import 'package:cake_wallet/core/sec_random_native.dart'; const segwit = '100'; final wordlist = englishWordlist; -Uint8List randomBytes(int length, {bool secure = false}) { - assert(length > 0); - - final random = secure ? Random.secure() : Random(); - final ret = Uint8List(length); - - for (var i = 0; i < length; i++) { - ret[i] = random.nextInt(256); - } - - return ret; -} - double logBase(num x, num base) => log(x) / log(base); String mnemonicEncode(int i) { @@ -102,14 +90,15 @@ List prefixMatches(String source, List prefixes) { return prefixes.map((prefix) => hx.startsWith(prefix.toLowerCase())).toList(); } -String generateMnemonic({int strength = 132, String prefix = segwit}) { +Future generateMnemonic( + {int strength = 264, String prefix = segwit}) async { final wordBitlen = logBase(wordlist.length, 2).ceil(); final wordCount = strength / wordBitlen; final byteCount = ((wordCount * wordBitlen).ceil() / 8).ceil(); var result = ''; do { - final bytes = randomBytes(byteCount); + final bytes = await secRandom(byteCount); maskBytes(bytes, strength); result = encode(bytes); } while (!prefixMatches(result, [prefix]).first); @@ -134,7 +123,7 @@ bool matchesAnyPrefix(String mnemonic) => bool validateMnemonic(String mnemonic, {String prefix = segwit}) { try { return matchesAnyPrefix(mnemonic); - } catch(e) { + } catch (e) { return false; } } diff --git a/lib/bitcoin/bitcoin_mnemonic_is_incorrect_exception.dart b/lib/bitcoin/bitcoin_mnemonic_is_incorrect_exception.dart index 761b02601..5171a4f05 100644 --- a/lib/bitcoin/bitcoin_mnemonic_is_incorrect_exception.dart +++ b/lib/bitcoin/bitcoin_mnemonic_is_incorrect_exception.dart @@ -1,5 +1,5 @@ class BitcoinMnemonicIsIncorrectException implements Exception { @override String toString() => - 'Bitcoin mnemonic has incorrect format. Mnemonic should contain 12 words separated by space.'; + 'Bitcoin mnemonic has incorrect format. Mnemonic should contain 24 words separated by space.'; } diff --git a/lib/bitcoin/bitcoin_wallet_service.dart b/lib/bitcoin/bitcoin_wallet_service.dart index 8b09accd3..aefe0fadf 100644 --- a/lib/bitcoin/bitcoin_wallet_service.dart +++ b/lib/bitcoin/bitcoin_wallet_service.dart @@ -24,7 +24,7 @@ class BitcoinWalletService extends WalletService< @override Future create(BitcoinNewWalletCredentials credentials) async { final wallet = BitcoinWallet( - mnemonic: generateMnemonic(), + mnemonic: await generateMnemonic(), password: credentials.password, walletInfo: credentials.walletInfo); await wallet.save(); diff --git a/lib/core/sec_random_native.dart b/lib/core/sec_random_native.dart new file mode 100644 index 000000000..b9800fd71 --- /dev/null +++ b/lib/core/sec_random_native.dart @@ -0,0 +1,13 @@ +import 'dart:typed_data'; + +import 'package:flutter/services.dart'; + +const utils = const MethodChannel('com.cake_wallet/native_utils'); + +Future secRandom(int count) async { + try { + return await utils.invokeMethod('sec_random', {'count': count}); + } on PlatformException catch (_) { + return Uint8List.fromList([]); + } +} diff --git a/lib/entities/crypto_currency.dart b/lib/entities/crypto_currency.dart index d5f23a0fa..7f27da7d6 100644 --- a/lib/entities/crypto_currency.dart +++ b/lib/entities/crypto_currency.dart @@ -19,7 +19,6 @@ class CryptoCurrency extends EnumerableItem with Serializable { CryptoCurrency.eos, CryptoCurrency.eth, CryptoCurrency.ltc, - CryptoCurrency.nano, CryptoCurrency.trx, CryptoCurrency.usdt, CryptoCurrency.usdterc20, @@ -29,7 +28,7 @@ class CryptoCurrency extends EnumerableItem with Serializable { static const xmr = CryptoCurrency(title: 'XMR', raw: 0); static const ada = CryptoCurrency(title: 'ADA', raw: 1); static const bch = CryptoCurrency(title: 'BCH', raw: 2); - static const bnb = CryptoCurrency(title: 'BNB', raw: 3); + static const bnb = CryptoCurrency(title: 'BNB BEP2', raw: 3); static const btc = CryptoCurrency(title: 'BTC', raw: 4); static const dai = CryptoCurrency(title: 'DAI', raw: 5); static const dash = CryptoCurrency(title: 'DASH', raw: 6); @@ -90,7 +89,7 @@ class CryptoCurrency extends EnumerableItem with Serializable { return CryptoCurrency.ada; case 'bch': return CryptoCurrency.bch; - case 'bnb': + case 'bnbmainnet': return CryptoCurrency.bnb; case 'btc': return CryptoCurrency.btc; diff --git a/lib/entities/language_service.dart b/lib/entities/language_service.dart index e405522c0..33e5ca5be 100644 --- a/lib/entities/language_service.dart +++ b/lib/entities/language_service.dart @@ -15,7 +15,9 @@ class LanguageService { 'pt': 'Português (Portuguese)', 'ru': 'Русский (Russian)', 'uk': 'Українська (Ukrainian)', - 'zh': '中文 (Chinese)' + 'zh': '中文 (Chinese)', + 'hr': 'Hrvatski (Croatian)', + 'it': 'Italiano (Italian)' }; static final list = {}; diff --git a/lib/exchange/changenow/changenow_exchange_provider.dart b/lib/exchange/changenow/changenow_exchange_provider.dart index 69674131d..0adaf6c83 100644 --- a/lib/exchange/changenow/changenow_exchange_provider.dart +++ b/lib/exchange/changenow/changenow_exchange_provider.dart @@ -48,7 +48,9 @@ class ChangeNowExchangeProvider extends ExchangeProvider { @override Future fetchLimits({CryptoCurrency from, CryptoCurrency to, bool isFixedRateMode}) async { - final symbol = from.toString() + '_' + to.toString(); + final fromTitle = defineCurrencyTitle(from); + final toTitle = defineCurrencyTitle(to); + final symbol = fromTitle + '_' + toTitle; final url = isFixedRateMode ? apiUri + _marketInfoUriSufix + _fixedRateUriSufix + apiKey : apiUri + _minAmountUriSufix + symbol; @@ -61,8 +63,7 @@ class ChangeNowExchangeProvider extends ExchangeProvider { final elemFrom = elem["from"] as String; final elemTo = elem["to"] as String; - if ((elemFrom == from.toString().toLowerCase()) && - (elemTo == to.toString().toLowerCase())) { + if ((elemFrom == fromTitle) && (elemTo == toTitle)) { final min = elem["min"] as double; final max = elem["max"] as double; @@ -84,9 +85,11 @@ class ChangeNowExchangeProvider extends ExchangeProvider { ? apiUri + _transactionsUriSufix + _fixedRateUriSufix + apiKey : apiUri + _transactionsUriSufix + apiKey; final _request = request as ChangeNowRequest; + final fromTitle = defineCurrencyTitle(_request.from); + final toTitle = defineCurrencyTitle(_request.to); final body = { - 'from': _request.from.toString(), - 'to': _request.to.toString(), + 'from': fromTitle, + 'to': toTitle, 'address': _request.address, 'amount': _request.amount, 'refundAddress': _request.refundAddress @@ -182,6 +185,8 @@ class ChangeNowExchangeProvider extends ExchangeProvider { final url = apiUri + _marketInfoUriSufix + _fixedRateUriSufix + apiKey; final response = await get(url); final responseJSON = json.decode(response.body) as List; + final fromTitle = defineCurrencyTitle(from); + final toTitle = defineCurrencyTitle(to); var rate = 0.0; var fee = 0.0; @@ -189,8 +194,7 @@ class ChangeNowExchangeProvider extends ExchangeProvider { final elemFrom = elem["from"] as String; final elemTo = elem["to"] as String; - if ((elemFrom == to.toString().toLowerCase()) && - (elemTo == from.toString().toLowerCase())) { + if ((elemFrom == toTitle) && (elemTo == fromTitle)) { rate = elem["rate"] as double; fee = elem["minerFee"] as double; break; @@ -216,22 +220,32 @@ class ChangeNowExchangeProvider extends ExchangeProvider { CryptoCurrency to, double amount, bool isFixedRateMode) { + final fromTitle = defineCurrencyTitle(from); + final toTitle = defineCurrencyTitle(to); + return isFixedRateMode ? apiUri + _exchangeAmountUriSufix + _fixedRateUriSufix + amount.toString() + '/' + - from.toString() + + fromTitle + '_' + - to.toString() + + toTitle + '?api_key=' + apiKey : apiUri + _exchangeAmountUriSufix + amount.toString() + '/' + - from.toString() + + fromTitle + '_' + - to.toString(); + toTitle; + } + + static String defineCurrencyTitle(CryptoCurrency currency) { + const bnbTitle = 'bnbmainnet'; + final currencyTitle = currency == CryptoCurrency.bnb + ? bnbTitle : currency.title.toLowerCase(); + return currencyTitle; } } diff --git a/lib/monero/monero_wallet_service.dart b/lib/monero/monero_wallet_service.dart index 669c83593..7795b8700 100644 --- a/lib/monero/monero_wallet_service.dart +++ b/lib/monero/monero_wallet_service.dart @@ -221,7 +221,7 @@ class MoneroWalletService extends WalletService< final name = f.path.split('/').last; final newPath = newWalletDirPath + '/$name'; final newFile = File(newPath); - print(file.path); + if (!newFile.existsSync()) { newFile.createSync(); } diff --git a/lib/router.dart b/lib/router.dart index 0474758e3..19a6b760f 100644 --- a/lib/router.dart +++ b/lib/router.dart @@ -237,9 +237,11 @@ Route createRoute(RouteSettings settings) { case Routes.unlock: return MaterialPageRoute( fullscreenDialog: true, - builder: (_) => getIt.get( - param1: settings.arguments as OnAuthenticationFinished, - param2: false)); + builder: (_) => WillPopScope( + child: getIt.get( + param1: settings.arguments as OnAuthenticationFinished, + param2: false), + onWillPop: () async => false)); case Routes.nodeList: return CupertinoPageRoute( diff --git a/lib/src/screens/dashboard/dashboard_page.dart b/lib/src/screens/dashboard/dashboard_page.dart index 172483ed0..400b34060 100644 --- a/lib/src/screens/dashboard/dashboard_page.dart +++ b/lib/src/screens/dashboard/dashboard_page.dart @@ -1,7 +1,9 @@ import 'package:cake_wallet/entities/wallet_type.dart'; import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/routes.dart'; +import 'package:cake_wallet/src/widgets/alert_with_one_action.dart'; import 'package:cake_wallet/themes/theme_base.dart'; +import 'package:cake_wallet/utils/show_pop_up.dart'; import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart'; @@ -42,7 +44,7 @@ class DashboardPage extends BasePage { child: scaffold); @override - bool get resizeToAvoidBottomPadding => false; + bool get resizeToAvoidBottomInset => false; @override Widget get endDrawer => MenuWidget(walletViewModel); @@ -114,7 +116,7 @@ class DashboardPage extends BasePage { )), Container( padding: EdgeInsets.only(left: 45, right: 45, bottom: 24), - child: Observer(builder: (_) => Row( + child: Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ ActionButton( @@ -125,7 +127,7 @@ class DashboardPage extends BasePage { image: exchangeImage, title: S.of(context).exchange, route: Routes.exchange), - if (walletViewModel.type == WalletType.bitcoin) Observer( + Observer( builder: (_) => Stack( clipBehavior: Clip.none, alignment: Alignment.topCenter, @@ -143,23 +145,11 @@ class DashboardPage extends BasePage { title: S.of(context).buy, onClick: walletViewModel.isRunningWebView ? null - : () async { - try { - walletViewModel.isRunningWebView = true; - final url = - await walletViewModel.wyreViewModel.wyreUrl; - await Navigator.of(context) - .pushNamed(Routes.wyre, arguments: url); - walletViewModel.isRunningWebView = false; - } catch(e) { - print(e.toString()); - walletViewModel.isRunningWebView = false; - } - }) + : () async => await _onClickBuyButton(context)) ], )), ], - )), + ), ) ], )); @@ -176,4 +166,32 @@ class DashboardPage extends BasePage { _isEffectsInstalled = true; } + + Future _onClickBuyButton(BuildContext context) async { + final walletType = walletViewModel.type; + + switch (walletType) { + case WalletType.monero: + await showPopUp( + context: context, + builder: (BuildContext context) { + return AlertWithOneAction( + alertTitle: S.of(context).buy, + alertContent: S.of(context).buy_alert_content, + buttonText: S.of(context).ok, + buttonAction: () => Navigator.of(context).pop()); + }); + break; + default: + try { + walletViewModel.isRunningWebView = true; + final url = await walletViewModel.wyreViewModel.wyreUrl; + await Navigator.of(context).pushNamed(Routes.wyre, arguments: url); + walletViewModel.isRunningWebView = false; + } catch(_) { + walletViewModel.isRunningWebView = false; + } + break; + } + } } diff --git a/lib/src/screens/seed/pre_seed_page.dart b/lib/src/screens/seed/pre_seed_page.dart index 03fc17425..0a12b752a 100644 --- a/lib/src/screens/seed/pre_seed_page.dart +++ b/lib/src/screens/seed/pre_seed_page.dart @@ -13,7 +13,7 @@ class PreSeedPage extends BasePage { imageDark = Image.asset('assets/images/pre_seed_dark.png'), wordsCount = type == WalletType.monero ? 25 - : 12; // FIXME: Stupid fast implementation + : 24; // FIXME: Stupid fast implementation final Image imageDark; final Image imageLight; @@ -49,7 +49,9 @@ class PreSeedPage extends BasePage { Padding( padding: EdgeInsets.only(top: 70, left: 16, right: 16), child: Text( - S.of(context).pre_seed_description(wordsCount.toString()), + S + .of(context) + .pre_seed_description(wordsCount.toString()), textAlign: TextAlign.center, style: TextStyle( fontSize: 14, diff --git a/lib/view_model/auth_view_model.dart b/lib/view_model/auth_view_model.dart index 5bf5c25a1..76df95283 100644 --- a/lib/view_model/auth_view_model.dart +++ b/lib/view_model/auth_view_model.dart @@ -110,8 +110,6 @@ abstract class AuthViewModelBase with Store { if (isAuthenticated) { state = ExecutedSuccessfullyState(); - } else { - state = FailureState('Failure biometric authentication'); } } } catch(e) { diff --git a/lib/view_model/exchange/exchange_view_model.dart b/lib/view_model/exchange/exchange_view_model.dart index 026bec348..f3f00cd77 100644 --- a/lib/view_model/exchange/exchange_view_model.dart +++ b/lib/view_model/exchange/exchange_view_model.dart @@ -33,8 +33,8 @@ class ExchangeViewModel = ExchangeViewModelBase with _$ExchangeViewModel; abstract class ExchangeViewModelBase with Store { ExchangeViewModelBase(this.wallet, this.trades, this._exchangeTemplateStore, this.tradesStore, this._settingsStore) { + const excludeCurrencies = [CryptoCurrency.xlm, CryptoCurrency.xrp, CryptoCurrency.bnb]; providerList = [ChangeNowExchangeProvider()]; - _initialPairBasedOnWallet(); isDepositAddressEnabled = !(depositCurrency == wallet.currency); isReceiveAddressEnabled = !(receiveCurrency == wallet.currency); @@ -56,10 +56,8 @@ abstract class ExchangeViewModelBase with Store { } }); receiveCurrencies = CryptoCurrency.all - .where((cryptoCurrency) => - (cryptoCurrency != CryptoCurrency.xlm) && - (cryptoCurrency != CryptoCurrency.xrp)) - .toList(); + .where((cryptoCurrency) => !excludeCurrencies.contains(cryptoCurrency)) + .toList(); _defineIsReceiveAmountEditable(); isFixedRateMode = false; isReceiveAmountEntered = false; diff --git a/pubspec.yaml b/pubspec.yaml index 13c73338a..ee63a7b68 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -11,7 +11,7 @@ description: Cake Wallet. # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 4.2.0+46 +version: 4.2.0+48 environment: sdk: ">=2.7.0 <3.0.0" diff --git a/res/values/strings_de.arb b/res/values/strings_de.arb index 6d1d66b84..c9836f13b 100644 --- a/res/values/strings_de.arb +++ b/res/values/strings_de.arb @@ -170,7 +170,7 @@ "restore_wallet_restore_description" : "Beschreibung zur Wiederherstellung der Brieftasche", "restore_new_seed" : "Neuer Seed", "restore_active_seed" : "Aktives Seed", - "restore_bitcoin_description_from_seed" : "Stellen Sie Ihre Brieftasche aus dem 12-Wort-Kombinationscode wieder her", + "restore_bitcoin_description_from_seed" : "Stellen Sie Ihre Brieftasche aus dem 24-Wort-Kombinationscode wieder her", "restore_bitcoin_description_from_keys" : "Stellen Sie Ihre Brieftasche aus der generierten WIF-Zeichenfolge aus Ihren privaten Schlüsseln wieder her", "restore_bitcoin_title_from_keys" : "Aus WIF wiederherstellen", "restore_from_date_or_blockheight" : "Bitte geben Sie einige Tage vor dem Erstellen dieser Brieftasche ein Datum ein. Oder wenn Sie die Blockhöhe kennen, geben Sie sie stattdessen ein", @@ -469,5 +469,7 @@ "unconfirmed" : "Unbestätigt", "displayable" : "Anzeigebar", - "submit_request" : "Einen Antrag stellen" + "submit_request" : "Einen Antrag stellen", + + "buy_alert_content" : "Derzeit unterstützen wir nur den Kauf von Bitcoin. Um Bitcoin zu kaufen, erstellen Sie bitte Ihre Bitcoin-Brieftasche oder wechseln Sie zu dieser" } \ No newline at end of file diff --git a/res/values/strings_en.arb b/res/values/strings_en.arb index b0d98b7c9..2364bca10 100644 --- a/res/values/strings_en.arb +++ b/res/values/strings_en.arb @@ -170,7 +170,7 @@ "restore_wallet_restore_description" : "Wallet restore description", "restore_new_seed" : "New seed", "restore_active_seed" : "Active seed", - "restore_bitcoin_description_from_seed" : "Restore your wallet from 12 word combination code", + "restore_bitcoin_description_from_seed" : "Restore your wallet from 24 word combination code", "restore_bitcoin_description_from_keys" : "Restore your wallet from generated WIF string from your private keys", "restore_bitcoin_title_from_keys" : "Restore from WIF", "restore_from_date_or_blockheight" : "Please enter a date a few days before you created this wallet. Or if you know the blockheight, please enter it instead", @@ -469,5 +469,7 @@ "unconfirmed" : "Unconfirmed", "displayable" : "Displayable", - "submit_request" : "submit a request" + "submit_request" : "submit a request", + + "buy_alert_content" : "Currently we only support the purchase of Bitcoin. To buy Bitcoin, please create or switch to your Bitcoin wallet" } \ No newline at end of file diff --git a/res/values/strings_es.arb b/res/values/strings_es.arb index 190ad4304..a57886fe8 100644 --- a/res/values/strings_es.arb +++ b/res/values/strings_es.arb @@ -170,7 +170,7 @@ "restore_wallet_restore_description" : "Restaurar billetera", "restore_new_seed" : "Nueva semilla", "restore_active_seed" : "Semilla activa", - "restore_bitcoin_description_from_seed" : "Restaure su billetera a partir del código de combinación de 12 palabras", + "restore_bitcoin_description_from_seed" : "Restaure su billetera a partir del código de combinación de 24 palabras", "restore_bitcoin_description_from_keys" : "Restaure su billetera a partir de una cadena WIF generada a partir de sus claves privadas", "restore_bitcoin_title_from_keys" : "Restaurar desde WIF", "restore_from_date_or_blockheight" : "Ingrese una fecha unos días antes de crear esta billetera. O si conoce la altura del bloque, ingréselo en su lugar", @@ -469,5 +469,7 @@ "unconfirmed" : "Inconfirmado", "displayable" : "Visualizable", - "submit_request" : "presentar una solicitud" + "submit_request" : "presentar una solicitud", + + "buy_alert_content" : "Actualmente solo apoyamos la compra de Bitcoin. Para comprar Bitcoin, cree o cambie a su billetera Bitcoin" } \ No newline at end of file diff --git a/res/values/strings_hi.arb b/res/values/strings_hi.arb index 6eac14e99..852e249c9 100644 --- a/res/values/strings_hi.arb +++ b/res/values/strings_hi.arb @@ -170,7 +170,7 @@ "restore_wallet_restore_description" : "बटुआ विवरण पुनर्स्थापित करें", "restore_new_seed" : "नया बीज", "restore_active_seed" : "सक्रिय बीज", - "restore_bitcoin_description_from_seed" : "12 शब्द संयोजन कोड से अपने वॉलेट को पुनर्स्थापित करें", + "restore_bitcoin_description_from_seed" : "24 शब्द संयोजन कोड से अपने वॉलेट को पुनर्स्थापित करें", "restore_bitcoin_description_from_keys" : "अपने निजी कुंजी से उत्पन्न WIF स्ट्रिंग से अपने वॉलेट को पुनर्स्थापित करें", "restore_bitcoin_title_from_keys" : "WIF से पुनर्स्थापित करें", "restore_from_date_or_blockheight" : "कृपया इस वॉलेट को बनाने से कुछ दिन पहले एक तारीख दर्ज करें। या यदि आप ब्लॉकचेट जानते हैं, तो कृपया इसके बजाय इसे दर्ज करें", @@ -469,5 +469,7 @@ "unconfirmed" : "अपुष्ट", "displayable" : "प्रदर्शन योग्य", - "submit_request" : "एक अनुरोध सबमिट करें" + "submit_request" : "एक अनुरोध सबमिट करें", + + "buy_alert_content" : "वर्तमान में हम केवल बिटकॉइन की खरीद का समर्थन करते हैं। बिटकॉइन खरीदने के लिए, कृपया अपना बिटकॉइन वॉलेट बनाएं या स्विच करें" } \ No newline at end of file diff --git a/res/values/strings_hr.arb b/res/values/strings_hr.arb new file mode 100644 index 000000000..a27384dde --- /dev/null +++ b/res/values/strings_hr.arb @@ -0,0 +1,473 @@ +{ + "welcome" : "Dobrodošli na", + "cake_wallet" : "Cake Wallet", + "first_wallet_text" : "Odličan novčanik za Monero i Bitcoin", + "please_make_selection" : "Molimo odaberite opcije niže za izradu novog novčanika ili za oporavak postojećeg.", + "create_new" : "Izradi novi novčanik", + "restore_wallet" : "Oporavi novčanik", + + + "accounts" : "Računi", + "edit" : "Uredi", + "account" : "Račun", + "add" : "Dodaj", + + + "address_book" : "Imenik", + "contact" : "Kontakt", + "please_select" : "Molimo odaberite:", + "cancel" : "Poništi", + "ok" : "OK", + "contact_name" : "Ime kontakta", + "reset" : "Resetiraj", + "save" : "Spremi", + "address_remove_contact" : "Ukloni kontakt", + "address_remove_content" : "Jeste li sigurni da želite ukloniti odabrani kontakt?", + + + "authenticated" : "Autentificiran", + "authentication" : "Autentifikacija", + "failed_authentication" : "Autentifikacija neuspješna. ${state_error}", + + + "wallet_menu" : "Izbornik", + "Blocks_remaining" : "${status} preostalih blokova", + "please_try_to_connect_to_another_node" : "Molimo pokušajte se spojiti na drugi node.", + "xmr_hidden" : "Sakriven", + "xmr_available_balance" : "Raspoloživ iznos", + "xmr_full_balance" : "Ukupan iznos", + "send" : "Pošalji", + "receive" : "Primi", + "transactions" : "Transakcije", + "incoming" : "Dolazno", + "outgoing" : "Odlazno", + "transactions_by_date" : "Transakcije prema datumu", + "trades" : "Razmjene", + "filters" : "Filter", + "today" : "Danas", + "yesterday" : "Jučer", + "received" : "Primljeno", + "sent" : "Poslano", + "pending" : " (u tijeku)", + "rescan" : "Ponovno skeniranje", + "reconnect" : "Ponovno povezivanje", + "wallets" : "Novčanici", + "show_seed" : "Prikaži pristupni izraz", + "show_keys" : "Prikaži pristupni izraz/ključ", + "address_book_menu" : "Imenik", + "reconnection" : "Ponovno povezivanje", + "reconnect_alert_text" : "Jeste li sigurni da se želite ponovno povezati?", + + + "exchange" : "Razmijeni", + "clear" : "Izbriši", + "refund_address" : "Adresa za povrat", + "change_exchange_provider" : "Promjena davatelja usluge razmjene", + "you_will_send" : "Razmijeni iz", + "you_will_get" : "Razmijeni u", + "amount_is_guaranteed" : "Iznos koji ćete primiti je zajamčen", + "amount_is_estimate" : "Iznos koji ćete primiti je okviran", + "powered_by" : "Omogućio ${title}", + "error" : "Greška", + "estimated" : "procijenjen", + "min_value" : "Min.: ${value} ${currency}", + "max_value" : "Maks.: ${value} ${currency}", + "change_currency" : "Promijenite valutu", + + + "copy_id" : "Kopirati ID", + "exchange_result_write_down_trade_id" : "Molimo kopirajte ili zapišite transakcijski ID za nastavak.", + "trade_id" : "Transakcijski ID:", + "copied_to_clipboard" : "Kopirano u međuspremnik", + "saved_the_trade_id" : "Spremio/la sam transakcijski ID", + "fetching" : "Dohvaćanje", + "id" : "ID: ", + "amount" : "Iznos: ", + "payment_id" : "ID plaćanja: ", + "status" : "Status: ", + "offer_expires_in" : "Ponuda istječe za: ", + "trade_is_powered_by" : "Razmjenu je omogućio ${provider}", + "copy_address" : "Kopiraj adresu", + "exchange_result_confirm" : "Pritiskom na potvrdi, poslat ćete ${fetchingLabel} ${from} sa svog novčanika pod nazivom ${walletName} na adresu prikazanu ispod ili iznos možete poslati s vanjskog novčanika na niže navedenu adresu. /QR code.\n\nMolimo potvrdite za nastavak ili se vratite natrag za promjenu iznosa.", + "exchange_result_description" : "Potrebno poslati minimalno ${fetchingLabel} ${from} na adresu prikazanu na sljedećoj stranici. Ukoliko pošaljete iznos manji od ${fetchingLabel} ${from}, postoji mogućnost da razmjena neće biti uspješna i da iznos neće biti vraćen.", + "exchange_result_write_down_ID" : "*Molimo kopirajte ili zapišite svoj ID prikazan ispod.", + "confirm" : "Potvrdi", + "confirm_sending" : "Potvrdi slanje", + "commit_transaction_amount_fee" : "Izvrši transakciju \nAmount: ${amount}\nFee: ${fee}", + "sending" : "Slanje", + "transaction_sent" : "Transakcija provedena!", + "expired" : "Isteklo", + "time" : "${minutes}m ${seconds}s", + "send_xmr" : "Pošalji XMR", + "exchange_new_template" : "Novi predložak", + + "faq" : "FAQ", + + + "enter_your_pin" : "Upišite PIN", + "loading_your_wallet" : "Novčanik se učitava", + + + "new_wallet" : "Novi novčanik", + "wallet_name" : "Ime novčanika", + "continue_text" : "Nastavak", + "choose_wallet_currency" : "Molimo odaberite valutu novčanika:", + + + "node_new" : "Novi node", + "node_address" : "Node adresa", + "node_port" : "Node port", + "login" : "Prijava", + "password" : "Lozinka", + "nodes" : "Nodes", + "node_reset_settings_title" : "Resetiraj postavke", + "nodes_list_reset_to_default_message" : "Jeste li sigurni da se želite vratiti na početne postavke?", + "change_current_node" : "Jeste li sigurni da želite promijeniti trenutni node na ${node}?", + "change" : "Promijeni", + "remove_node" : "Ukloni node", + "remove_node_message" : "Jeste li sigurni da želite ukloniti odabrani node?", + "remove" : "Ukloni", + "delete" : "Izbriši", + "add_new_node" : "Dodaj novi node", + "change_current_node_title" : "Promijeni trenutni node", + "node_test" : "Provjeri", + "node_connection_successful" : "Uspješno spajanje", + "node_connection_failed" : "Neuspješno spajanje", + "new_node_testing" : "Provjera novog nodea", + + + "use" : "Prebaci na", + "digit_pin" : "-znamenkasti PIN", + + + "share_address" : "Podijeli adresu", + "receive_amount" : "Iznos", + "subaddresses" : "Podadrese", + "addresses" : "Adrese", + "scan_qr_code" : "Skeniraj QR kod za dobivanje adrese", + "rename" : "Preimenuj", + "choose_account" : "Odaberi račun", + "create_new_account" : "Izradi novi račun", + "accounts_subaddresses" : "Računi i podadrese", + + + "restore_restore_wallet" : "Oporavi novčanik", + "restore_title_from_seed_keys" : "Oporavi pomoću pristupnog izraza/ključa", + "restore_description_from_seed_keys" : "Oporavi novčanik pomoću pristupnog izraza/ključa spremljenog na sigurno mjesto", + "restore_next" : "Dalje", + "restore_title_from_backup" : "Oporavak pomoću sigurnosne kopije", + "restore_description_from_backup" : "Možete oporaviti cijelu Cake Wallet aplikaciju pomoću vlastite datoteke sa sigurnosnom kopijom", + "restore_seed_keys_restore" : "Oporavak pomoću pristupnog izraza/ključa", + "restore_title_from_seed" : "Oporavi pomoću pristupnog izraza", + "restore_description_from_seed" : "Oporavi novčanik pomoću koda koji sadrži kombinaciju od 25 ili 13 riječi", + "restore_title_from_keys" : "Oporavi pomoću ključa", + "restore_description_from_keys" : "Oporavi novčanik pomoću generiranih pritisaka na tipke spremljenih od vlastitih privatnih ključeva (keys)", + "restore_wallet_name" : "Ime novčanika", + "restore_address" : "Adresa", + "restore_view_key_private" : "View key (privatni)", + "restore_spend_key_private" : "Spend key (privatni)", + "restore_recover" : "Oporavi", + "restore_wallet_restore_description" : "Opis oporavka novčanika", + "restore_new_seed" : "Novi pristupi izraz", + "restore_active_seed" : "Aktivan pristupni izraz", + "restore_bitcoin_description_from_seed" : "Oporavi novčanik pomoću koda od 12 riječi", + "restore_bitcoin_description_from_keys" : "Oporavi novčanik pomoću WIF niza generiranog iz vlastitih privatnih ključeva (keys)", + "restore_bitcoin_title_from_keys" : "Oporavi pomoću formata uvoza novčanika (WIF)", + "restore_from_date_or_blockheight" : "Molimo unesite datum od nekoliko dana prije nego što ste izradili ovaj novčanik ili ako znate visinu bloka, molimo unesite je.", + + + "seed_reminder" : "Molimo zapišite ih u slučaju da izgubite mobitel ili izbrišete podatke", + "seed_title" : "Prisupni izraz", + "seed_share" : "Podijeli pristupni izraz", + "copy" : "Kopiraj", + + + "seed_language_choose" : "Molimo odaberite jezik pristupnog izraza:", + "seed_choose" : "Odaberi jezik pristupnog izraza", + "seed_language_next" : "Dalje", + "seed_language_english" : "Engleski", + "seed_language_chinese" : "Kineski", + "seed_language_dutch" : "Nizozemski", + "seed_language_german" : "Njemački", + "seed_language_japanese" : "Japanski", + "seed_language_portuguese" : "Portugalski", + "seed_language_russian" : "Ruski", + "seed_language_spanish" : "Španjolski", + + + "send_title" : "Pošalji", + "send_your_wallet" : "Tvoj novčanik", + "send_address" : "${cryptoCurrency} adresa", + "send_payment_id" : "ID plaćanja (nije obvezno)", + "all" : "SVE", + "send_error_minimum_value" : "Minimalna vrijednost iznosa je 0.01", + "send_error_currency" : "Iznos smije sadržavati samo brojeve", + "send_estimated_fee" : "Procijenjena naknada:", + "send_priority" : "Trenutno se naknada nalazi na ${transactionPriority} mjestu prioriteta.\nPrioritet transakcije moguće je prilagoditi u postavkama", + "send_creating_transaction" : "Izrada transakcije", + "send_templates" : "Predlošci", + "send_new" : "Novi", + "send_amount" : "Iznos:", + "send_fee" : "Naknada:", + "send_name" : "Ime", + "send_got_it" : "U redu", + "send_sending" : "Slanje...", + "send_success" : "Vaš ${crypto} je uspješno poslan", + + + "settings_title" : "Postavke", + "settings_nodes" : "Nodovi", + "settings_current_node" : "Trenutni node", + "settings_wallets" : "Novčanik", + "settings_display_balance_as" : "Prikaži stanje računa kao", + "settings_currency" : "Valuta", + "settings_fee_priority" : "Prioritet naknade", + "settings_save_recipient_address" : "Spremi primateljevu adresu", + "settings_personal" : "Osobni", + "settings_change_pin" : "Promijeni PIN", + "settings_change_language" : "Promijeni jezik", + "settings_allow_biometrical_authentication" : "Dopusti biometrijsku autentifikaciju", + "settings_dark_mode" : "Tamni način rada", + "settings_transactions" : "Transakcije", + "settings_trades" : "Razmjene", + "settings_display_on_dashboard_list" : "Prikaži na listi kontrolne ploče", + "settings_all" : "SVE", + "settings_only_trades" : "Samo razmjene", + "settings_only_transactions" : "Samo transakcije", + "settings_none" : "Nijedno", + "settings_support" : "Podrška", + "settings_terms_and_conditions" : "Uvjeti i odredbe", + "pin_is_incorrect" : "Netočan PIN", + + + "setup_pin" : "Podesi PIN", + "enter_your_pin_again" : "Ponovno upišite pin", + "setup_successful" : "Vaš je pin uspješno postavljen!", + + + "wallet_keys" : "Pristupni izraz/ključ novčanika", + "wallet_seed" : "Pristupni izraz novčanika", + "private_key" : "Privatni ključ", + "public_key" : "Javni ključ", + "view_key_private" : "View key (privatni)", + "view_key_public" : "View key (javni)", + "spend_key_private" : "Spend key (privatni)", + "spend_key_public" : "Spend key (javni)", + "copied_key_to_clipboard" : "${key} kopiran u međuspremnik", + + + "new_subaddress_title" : "Nova adresa", + "new_subaddress_label_name" : "Oznaka", + "new_subaddress_create" : "Izradi", + + + "subaddress_title" : "Lista podadresa", + + + "trade_details_title" : "Detalji razmjene", + "trade_details_id" : "ID", + "trade_details_state" : "Stanje", + "trade_details_fetching" : "Dohvaćanje", + "trade_details_provider" : "Pružatelj", + "trade_details_created_at" : "Stvoreno u", + "trade_details_pair" : "Upari", + "trade_details_copied" : "${title} kopiran u međuspremnik", + + + "trade_history_title" : "Povijest razmjena", + + + "transaction_details_title" : "Detalji transakcije", + "transaction_details_transaction_id" : "Transakcijski ID", + "transaction_details_date" : "Datum", + "transaction_details_height" : "Visina", + "transaction_details_amount" : "Iznos", + "transaction_details_fee" : "Naknada", + "transaction_details_copied" : "${title} kopiran u međuspremnik", + "transaction_details_recipient_address" : "Primateljeva adresa", + + + "wallet_list_title" : "Monero novčanik", + "wallet_list_create_new_wallet" : "Izradi novi novčanik", + "wallet_list_restore_wallet" : "Oporavi novčanik", + "wallet_list_load_wallet" : "Učitaj novčanik", + "wallet_list_loading_wallet" : "Učitavanje novčanika ${wallet_name}", + "wallet_list_failed_to_load" : "Neuspješno učitavanje novčanika ${wallet_name}. ${error}", + "wallet_list_removing_wallet" : "Uklanjanje novčanika ${wallet_name}", + "wallet_list_failed_to_remove" : "Neuspješno uklanjanje novčanika ${wallet_name}. ${error}", + + + "widgets_address" : "Adresa", + "widgets_restore_from_blockheight" : "Oporavi pomoću visine bloka", + "widgets_restore_from_date" : "Oporavi pomoću datuma", + "widgets_or" : "ili", + "widgets_seed" : "pristupnog izraza", + + + "router_no_route" : "Nije definirana ruta za ${name}", + + + "error_text_account_name" : "Ime računa smije sadržavati samo slova i brojeve\nte mora biti dužine između 1 i 15 znakova", + "error_text_contact_name" : "Ime kontakta ne smije sadržavati znakove ` , ' \" \ni mora biti dužine između 1 i 32 znaka", + "error_text_address" : "Adresa novčanika mora odgovarati\nvrsti kriptovalute", + "error_text_node_address" : "Molimo unesite iPv4 adresu", + "error_text_node_port" : "Node port smije sadržavati samo brojeve između 0 i 65535", + "error_text_payment_id" : "ID plaćanja smije sadržavati samo od 16 do 64 znakova hex vrijednosti", + "error_text_xmr" : "XMR vrijednost ne smije biti veća od raspoloživog iznosa.\nBroj decimala smije biti 12 ili manji.", + "error_text_fiat" : "Vrijednost iznosa ne smije biti veća od raspoloživog iznosa.\nBroj decimala smije biti 2 ili manji.", + "error_text_subaddress_name" : "Ime podadrese ne smije sadržavati znakove ` , ' \" \ni mora biti dužine između 1 i 20 znakova", + "error_text_amount" : "Iznos smije sadržavati samo brojeve", + "error_text_wallet_name" : "Ime novčanika smije sadržavati samo slova i brojeve\nte mora biti dužine između 1 i 15 znakova", + "error_text_keys" : "Novčanik smije sadržavati samo 64 znakova hex vrijednosti", + "error_text_crypto_currency" : "Broj decimala mora\nbiti 12 ili manji", + "error_text_minimal_limit" : "Razmjena za ${provider} nije izrađena. Iznos je manji od minimalnog: ${min} ${currency}", + "error_text_maximum_limit" : "Razmjena za ${provider} nije izrađena. Iznos je veći od maskimalnog: ${max} ${currency}", + "error_text_limits_loading_failed" : "Razmjena za ${provider} nije izrađena. Neuspješno učitavanje limita", + "error_text_template" : "Ime i adresa predloška ne smiju sadržavati znakove ` , ' \" \ni moraju biti dužine između 1 i 106 znakova", + + + "auth_store_ban_timeout" : "ban_timeout", + "auth_store_banned_for" : "Suspendiran na ", + "auth_store_banned_minutes" : " minute", + "auth_store_incorrect_password" : "Pogrešan PIN", + "wallet_store_monero_wallet" : "Monero novčanik", + "wallet_restoration_store_incorrect_seed_length" : "Netočna dužina pristupnog izraza", + + + "full_balance" : "Pun iznos", + "available_balance" : "Raspoloživ iznos", + "hidden_balance" : "Skriven iznos", + + + "sync_status_syncronizing" : "SINKRONIZIRANJE", + "sync_status_syncronized" : "SINKRONIZIRANO", + "sync_status_not_connected" : "NIJE POVEZANO", + "sync_status_starting_sync" : "ZAPOČINJEMO SINKRONIZIRANJE", + "sync_status_failed_connect" : "ISKLJUČENO", + "sync_status_connecting" : "SPAJANJE", + "sync_status_connected" : "SPOJENO", + + + "transaction_priority_slow" : "Sporo", + "transaction_priority_regular" : "Uobičajeno", + "transaction_priority_medium" : "Srednje", + "transaction_priority_fast" : "Brzo", + "transaction_priority_fastest" : "Najbrže", + + + "trade_for_not_created" : "Razmjena za ${title} nije izrađena.", + "trade_not_created" : "Razmjena nije izrađena.", + "trade_id_not_found" : "Razmjena ${tradeId} za ${title} nije pronađena.", + "trade_not_found" : "Razmjena nije pronađena.", + + + "trade_state_pending" : "U tijeku", + "trade_state_confirming" : "Potvrđivanje", + "trade_state_trading" : "Razmjenjivanje", + "trade_state_traded" : "Razmijenjeno", + "trade_state_complete" : "Dovršeno", + "trade_state_to_be_created" : "Stvaranje", + "trade_state_unpaid" : "Neplaćen", + "trade_state_underpaid" : "Nedovoljno plaćen", + "trade_state_paid_unconfirmed" : "Plaćanje nije potrđeno", + "trade_state_paid" : "Plaćen", + "trade_state_btc_sent" : "BTC poslan", + "trade_state_timeout" : "Isteklo", + "trade_state_created" : "Stvoreno", + "trade_state_finished" : "Završeno", + + "change_language" : "Promijeni jezik", + "change_language_to" : "Promijeni jezik u ${language}?", + + "paste" : "Zalijepi", + "restore_from_seed_placeholder" : "Molimo unesite ili zalijepite svoj pristupni izraz ovdje", + "add_new_word" : "Dodaj novu riječ", + "incorrect_seed" : "Uneseni tekst nije valjan.", + + "biometric_auth_reason" : "Skenirajte svoj otisak prsta za autentifikaciju", + "version" : "Verzija ${currentVersion}", + + "openalias_alert_title" : "XMR primatelj otkriven", + "openalias_alert_content" : "Poslat ćete sredstva primatelju\n${recipient_name}", + + "card_address" : "Adresa:", + "buy" : "Kupi", + + "placeholder_transactions" : "Vaše će transakcije biti prikazane ovdje", + "placeholder_contacts" : "Vaši će kontakti biti prikazani ovdje", + + "template" : "Predložak", + "confirm_delete_template" : "Ovom ćete radnjom izbrisati ovaj predložak. Želite li nastaviti?", + "confirm_delete_wallet" : "Ovom ćete radnjom izbrisati ovaj novčanik. Želite li nastaviti?", + + "picker_description" : "Da biste odabrali ChangeNOW ili MorphToken, molimo da prvo odabete dvije valute za trgovanje", + + "change_wallet_alert_title" : "Izmijeni trenutni novčanik", + "change_wallet_alert_content" : "Želite li promijeniti trenutni novčanik u ${wallet_name}?", + + "creating_new_wallet" : "Stvaranje novog novčanika", + "creating_new_wallet_error" : "Greška: ${description}", + + "seed_alert_title" : "Upozorenje", + "seed_alert_content" : "Pristupni izraz jedini je način za oporavak novčanika. Jeste li ga zapisali?", + "seed_alert_back" : "Vrati se natrag", + "seed_alert_yes" : "Jesam", + + "exchange_sync_alert_content" : "Molimo pričekajte dok se Vaš novčanik ne sinkronizira.", + + "pre_seed_title" : "VAŽNO", + "pre_seed_description" : "Na sljedećoj ćete stranici vidjeti niz ${words} riječi. Radi se o Vašem jedinstvenom i tajnom pristupnom izrazu koji je ujedno i JEDINI način na koji možete oporaviti svoj novčanik u slučaju gubitka ili kvara. VAŠA je odgovornost zapisati ga te pohraniti na sigurno mjesto izvan Cake Wallet aplikacije.", + "pre_seed_button_text" : "Razumijem. Prikaži mi moj pristupni izraz", + + "xmr_to_error" : "XMR.TO greška", + "xmr_to_error_description" : "Nevažeći iznos. Dopušteno je najviše 8 znamenki iza točke", + + "provider_error" : "${provider} greška", + + "use_ssl" : "Koristi SSL", + + "color_theme" : "Shema boja", + "light_theme" : "Svijetla", + "bright_theme" : "Jarka", + "dark_theme" : "Tamna", + "enter_your_note" : "Unesite svoju poruku…", + "note_optional" : "Poruka (nije obvezno)", + "note_tap_to_change" : "Poruka (dodirnite za promjenu)", + "transaction_key" : "Transakcijski ključ", + "confirmations" : "Potvrde", + "recipient_address" : "Primateljeva adresa", + + "extra_id" : "Dodatni ID:", + "destination_tag" : "Odredišna oznaka:", + "memo" : "Memo:", + + "backup" : "Sigurnosna kopija", + "change_password" : "Promijeni lozinku", + "backup_password" : "Lozinka za sigurnosnu kopiju", + "write_down_backup_password" : "Molimo zapišite svoju lozinku za sigurnosnu kopiju koja se koristi za uvoz datoteka sigurnosne kopije.", + "export_backup" : "Izvezi sigurnosnu kopiju", + "save_backup_password" : "Molimo pobrinite se da spremite svoju lozinku za sigurnosnu kopiju. Bez nje nećete moći uvesti datoteke sigurnosne kopije.", + "backup_file" : "Sigurnosna kopija datoteke", + + "edit_backup_password" : "Uredi lozinku za sigurnosnu kopiju", + "save_backup_password_alert" : "Spremi lozinku za sigurnosnu kopiju", + "change_backup_password_alert" : "Nećemo moći uvesti Vaše prethodne datoteke sigurnosne kopije s novom lozinkom za sigurnosnu kopiju. Novu lozinku za sigurnosnu kopiju moći ćete koristiti samo za nove datoteke sigurnosne kopije. Jeste li sigurni da želite promijeniti lozinku za sigurnosnu kopiju?", + + "enter_backup_password" : "Unesite svoju lozinku za sigurnosnu kopiju ovdje", + "select_backup_file" : "Odaberite datoteku sigurnosne kopije", + "import" : "Uvezi", + "please_select_backup_file" : "Molimo odaberite datoteku sigurnosne kopije i unesite lozinku za sigurnosnu kopiju.", + + "fixed_rate" : "Fiksna stopa", + "fixed_rate_alert" : "Moći ćete unijeti iznos koji želite primiti nakon što označite način rada fiksne stope. Želite li se prebaciti na način rada fiksne stope?", + + "xlm_extra_info" : "Molimo ne zaboravite navesti memo ID prilikom slanja XLM transakcije na razmjenu", + "xrp_extra_info" : "Molimo ne zaboravite navesti odredišnu oznaku prilikom slanja XRP transakcije na razmjenu", + + "exchange_incorrect_current_wallet_for_xmr" : "Ako želite razmijeniti XMR s vlastitog Monero računa na Cake Wallet novčaniku, molimo prvo se prebacite na svoj Monero novčanik.", + "confirmed" : "Potvrđeno", + "unconfirmed" : "Nepotvrđeno", + "displayable" : "Dostupno za prikaz", + + "submit_request" : "podnesi zahtjev" +} \ No newline at end of file diff --git a/res/values/strings_it.arb b/res/values/strings_it.arb new file mode 100644 index 000000000..21f61ec6f --- /dev/null +++ b/res/values/strings_it.arb @@ -0,0 +1,473 @@ +{ + "welcome" : "Benvenuto", + "cake_wallet" : "Cake Wallet", + "first_wallet_text" : "Fantastico portafoglio per Monero e Bitcoin", + "please_make_selection" : "Gentilmente seleziona se vuoi generare o recuperare il tuo portafoglio.", + "create_new" : "Genera nuovo Portafoglio", + "restore_wallet" : "Recupera Portafoglio", + + + "accounts" : "Accounts", + "edit" : "Modifica", + "account" : "Account", + "add" : "Aggiungi", + + + "address_book" : "Rubrica indirizzi", + "contact" : "Contatta", + "please_select" : "Gentilmente seleziona:", + "cancel" : "Cancella", + "ok" : "OK", + "contact_name" : "Nome Contatto", + "reset" : "Resetta", + "save" : "Salva", + "address_remove_contact" : "Rimuovi contatto", + "address_remove_content" : "Sei sicuro di voler eliminare il contatto selezionato?", + + + "authenticated" : "Autenticato", + "authentication" : "Autenticazione", + "failed_authentication" : "Autenticazione fallita. ${state_error}", + + + "wallet_menu" : "Menu", + "Blocks_remaining" : "${status} Blocchi Rimanenti", + "please_try_to_connect_to_another_node" : "Gentilmente prova a connetterti ad un altro nodo", + "xmr_hidden" : "Nascosto", + "xmr_available_balance" : "Saldo Disponibile", + "xmr_full_balance" : "Saldo Completo", + "send" : "Invia", + "receive" : "Ricevi", + "transactions" : "Transazioni", + "incoming" : "In arrivo", + "outgoing" : "In uscita", + "transactions_by_date" : "Transazioni per data", + "trades" : "Scambi", + "filters" : "Filtri", + "today" : "Oggi", + "yesterday" : "Ieri", + "received" : "Ricevuto", + "sent" : "Inviato", + "pending" : " (pendente)", + "rescan" : "Scansiona di nuovo", + "reconnect" : "Riconnetti", + "wallets" : "Portafogli", + "show_seed" : "Mostra seme", + "show_keys" : "Mostra seme/chiavi", + "address_book_menu" : "Rubrica indirizzi", + "reconnection" : "Riconnessione", + "reconnect_alert_text" : "Sei sicuro di volerti riconnettere?", + + + "exchange" : "Scambia", + "clear" : "Pulisci", + "refund_address" : "Indirizzo di rimborso", + "change_exchange_provider" : "Cambia Exchange", + "you_will_send" : "Conveti da", + "you_will_get" : "Converti a", + "amount_is_guaranteed" : "L'ammonare da ricevere è fissato", + "amount_is_estimate" : "L'ammontare da ricevere è una stima", + "powered_by" : "Sviluppato da ${title}", + "error" : "Errore", + "estimated" : "Stimato", + "min_value" : "Min: ${value} ${currency}", + "max_value" : "Max: ${value} ${currency}", + "change_currency" : "Cambia Moneta", + + + "copy_id" : "Copia ID", + "exchange_result_write_down_trade_id" : "Gentilmente fai una copia o trascrivi l'ID dello scambio per continuare.", + "trade_id" : "ID Scambio:", + "copied_to_clipboard" : "Copiato negli Appunti", + "saved_the_trade_id" : "Ho salvato l'ID dello scambio", + "fetching" : "Recupero", + "id" : "ID: ", + "amount" : "Ammontare: ", + "payment_id" : "ID Pagamento: ", + "status" : "Stato: ", + "offer_expires_in" : "Offerta termina tra: ", + "trade_is_powered_by" : "Questo scambio è fornito da ${provider}", + "copy_address" : "Copia Indirizzo", + "exchange_result_confirm" : "Cliccando su Conferma, invierai ${fetchingLabel} ${from} dal tuo portafoglio chiamato ${walletName} all'indirizzo mostrato qui in basso. O puoi inviare dal tuo portafoglio esterno all'indirizzo/codice QR mostrato in basso.\n\nGentilmente clicca su Conferma per continuare o torna indietro per cambiare l'ammontare.", + "exchange_result_description" : "Devi inviare un minimo di ${fetchingLabel} ${from} all'indirizzo mostrato nella pagina seguente. Se invii un ammontare inferiore a ${fetchingLabel} ${from} la conversione potrebbe non andare a buon fine e l'indirizzo potrebbe non essere rimborsato.", + "exchange_result_write_down_ID" : "*Gentilmente fai una copia o trascrivi il tuo ID mostrato in alto.", + "confirm" : "Conferma", + "confirm_sending" : "Conferma l'invio", + "commit_transaction_amount_fee" : "Invia transazione\nAmmontare: ${amount}\nCommissione: ${fee}", + "sending" : "Invio", + "transaction_sent" : "Transazione inviata!", + "expired" : "Scaduta", + "time" : "${minutes}m ${seconds}s", + "send_xmr" : "Invia XMR", + "exchange_new_template" : "Nuovo modello", + + "faq" : "Domande Frequenti", + + + "enter_your_pin" : "Inserisci il tuo PIN", + "loading_your_wallet" : "Caricamento portafoglio", + + + "new_wallet" : "Nuovo Portafoglio", + "wallet_name" : "Nome del Portafoglio", + "continue_text" : "Continua", + "choose_wallet_currency" : "Gentilmente scegli la moneta del portafoglio:", + + + "node_new" : "Nuovo Nodo", + "node_address" : "Indirizzo Nodo", + "node_port" : "Porta Nodo", + "login" : "Accedi", + "password" : "Password", + "nodes" : "Nodi", + "node_reset_settings_title" : "Ripristina impostazioni", + "nodes_list_reset_to_default_message" : "Sei sicuro di voler ripristinare le impostazioni predefinite?", + "change_current_node" : "Sei sicuro di voler cambiare il nodo corrente con ${node}?", + "change" : "Cambia", + "remove_node" : "Rimuovi nodo", + "remove_node_message" : "Sei sicuro di voler rimuovere il nodo selezionato?", + "remove" : "Remuovi", + "delete" : "Elimina", + "add_new_node" : "Aggiungi nuovo nodo", + "change_current_node_title" : "Cambia nodo corrente", + "node_test" : "Test", + "node_connection_successful" : "Connessione avvenuta con successo", + "node_connection_failed" : "Connessione fallita", + "new_node_testing" : "Test novo nodo", + + + "use" : "Passa a ", + "digit_pin" : "-cifre PIN", + + + "share_address" : "Condividi indirizzo", + "receive_amount" : "Ammontare", + "subaddresses" : "Sottoindirizzi", + "addresses" : "Indirizzi", + "scan_qr_code" : "Scansiona il codice QR per ottenere l'indirizzo", + "rename" : "Rinomina", + "choose_account" : "Scegli account", + "create_new_account" : "Crea nuovo account", + "accounts_subaddresses" : "Accounts e sottoindirizzi", + + + "restore_restore_wallet" : "Recupera Portafoglio", + "restore_title_from_seed_keys" : "Recupera dal seme/chiavi", + "restore_description_from_seed_keys" : "Recupera il tuo portafoglio dal seme/chiavi che hai salvato in un posto sicuro", + "restore_next" : "Prossimo", + "restore_title_from_backup" : "Recupera da backup", + "restore_description_from_backup" : "Puoi recuperare l'app Cake Wallet per intero dal tuo file di backup", + "restore_seed_keys_restore" : "Recupera Seme/Chiavi", + "restore_title_from_seed" : "Recupera dal seme", + "restore_description_from_seed" : "Recupera il tuo portafoglio da una combinazione di 25 o 13 parole", + "restore_title_from_keys" : "Recupera dalle chiavi", + "restore_description_from_keys" : "Recupera il tuo portafoglio da una sequenza di caratteri generati dalle tue chiavi private", + "restore_wallet_name" : "Nome Portafoglio", + "restore_address" : "Indirizzo", + "restore_view_key_private" : "Chiave di Visualizzazione (privata)", + "restore_spend_key_private" : "Chiave di Spesa (privata)", + "restore_recover" : "Recupera", + "restore_wallet_restore_description" : "Descrizione recupero Portafoglio", + "restore_new_seed" : "Nuovo seme", + "restore_active_seed" : "Seme attivo", + "restore_bitcoin_description_from_seed" : "Recupera il tuo portafoglio da una combinazione di 12 parole", + "restore_bitcoin_description_from_keys" : "Recupera il tuo portafoglio da una stringa WIF generata dalle tue chiavi private", + "restore_bitcoin_title_from_keys" : "Recupera da WIF", + "restore_from_date_or_blockheight" : "Gentilmente inserisci la data di un paio di giorni prima che hai creato questo portafoglio. Oppure inserisci l'altezza del blocco se la conosci", + + + "seed_reminder" : "Gentilmente trascrivi le parole. Ti tornerà utie in caso perdessi o ripristinassi il tuo telefono", + "seed_title" : "Seme", + "seed_share" : "Condividi seme", + "copy" : "Copia", + + + "seed_language_choose" : "Gentilmente scegli la lingua del seme:", + "seed_choose" : "Scegli la lingua del seme", + "seed_language_next" : "Prossimo", + "seed_language_english" : "Inglese", + "seed_language_chinese" : "Cinese", + "seed_language_dutch" : "Olandese", + "seed_language_german" : "Tedesco", + "seed_language_japanese" : "Giapponese", + "seed_language_portuguese" : "Portoghese", + "seed_language_russian" : "Russo", + "seed_language_spanish" : "Spagnolo", + + + "send_title" : "Invia", + "send_your_wallet" : "Il tuo portafoglio", + "send_address" : "${cryptoCurrency} indirizzo", + "send_payment_id" : "ID Pagamento (opzionale)", + "all" : "TUTTO", + "send_error_minimum_value" : "L'ammontare minimo è 0.01", + "send_error_currency" : "L'ammontare può contenere solo numeri", + "send_estimated_fee" : "Commissione stimata:", + "send_priority" : "Attualmente la commissione è impostata a priorità ${transactionPriority} .\nLa priorità della transazione può essere modificata nelle impostazioni", + "send_creating_transaction" : "Creazione della transazione", + "send_templates" : "Modelli", + "send_new" : "Nuovo", + "send_amount" : "Ammontare:", + "send_fee" : "Commissione:", + "send_name" : "Nome", + "send_got_it" : "Ho capito", + "send_sending" : "Invio...", + "send_success" : " ${crypto} inviati con successo", + + + "settings_title" : "Impostazioni", + "settings_nodes" : "Nodi", + "settings_current_node" : "Nodo attuale", + "settings_wallets" : "Portafogli", + "settings_display_balance_as" : "Mostra saldo come", + "settings_currency" : "Moneta", + "settings_fee_priority" : "Priorità commissione", + "settings_save_recipient_address" : "Salva indirizzo di destinazione", + "settings_personal" : "Personali", + "settings_change_pin" : "Cambia PIN", + "settings_change_language" : "Cambia lingua", + "settings_allow_biometrical_authentication" : "Consenti autenticazione biometrica", + "settings_dark_mode" : "Tema scuro", + "settings_transactions" : "Transazioni", + "settings_trades" : "Scambi", + "settings_display_on_dashboard_list" : "Mostra nella lista della pagina principale", + "settings_all" : "TUTTO", + "settings_only_trades" : "Solo scambi", + "settings_only_transactions" : "Solo transazioni", + "settings_none" : "Nessuno", + "settings_support" : "Supporto", + "settings_terms_and_conditions" : "Termini e condizioni", + "pin_is_incorrect" : "Il PIN non è corretto", + + + "setup_pin" : "Imposta PIN", + "enter_your_pin_again" : "Inserisci il tuo pin di nuovo", + "setup_successful" : "Il tuo PIN è stato impostato con successo!", + + + "wallet_keys" : "Seme Portafoglio /chiavi", + "wallet_seed" : "Seme Portafoglio", + "private_key" : "Chiave privata", + "public_key" : "Chiave pubblica", + "view_key_private" : "Chiave di visualizzazione (privata)", + "view_key_public" : "Chiave di visualizzazione (pubblica)", + "spend_key_private" : "Chiave di spesa (privata)", + "spend_key_public" : "Chiave di spesa (pubblica)", + "copied_key_to_clipboard" : " ${key} copiata negli Appunti", + + + "new_subaddress_title" : "Nuovo indirizzo", + "new_subaddress_label_name" : "Nome etichetta", + "new_subaddress_create" : "Crea", + + + "subaddress_title" : "Lista sottoindirizzi", + + + "trade_details_title" : "Dettagli Scambio", + "trade_details_id" : "ID", + "trade_details_state" : "Stato", + "trade_details_fetching" : "Recupero", + "trade_details_provider" : "Fornitore", + "trade_details_created_at" : "Creato alle", + "trade_details_pair" : "Coppia", + "trade_details_copied" : "${title} copiati negli Appunti", + + + "trade_history_title" : "Storico scambi", + + + "transaction_details_title" : "Dettagli Transazione", + "transaction_details_transaction_id" : "ID Transazione", + "transaction_details_date" : "Data", + "transaction_details_height" : "Altezza", + "transaction_details_amount" : "Ammontare", + "transaction_details_fee" : "Commissione", + "transaction_details_copied" : "${title} copiati negli Appunti", + "transaction_details_recipient_address" : "Indirizzo destinatario", + + + "wallet_list_title" : "Portafoglio Monero", + "wallet_list_create_new_wallet" : "Crea Nuovo Portafoglio", + "wallet_list_restore_wallet" : "Recupera Portafoglio", + "wallet_list_load_wallet" : "Caricamento Portafoglio", + "wallet_list_loading_wallet" : "Caricamento portafoglio ${wallet_name}", + "wallet_list_failed_to_load" : "Caricamento portafoglio ${wallet_name} fallito. ${error}", + "wallet_list_removing_wallet" : "Rimozione portafoglio ${wallet_name}", + "wallet_list_failed_to_remove" : "Rimozione portafoglio ${wallet_name} fallita. ${error}", + + + "widgets_address" : "Indirizzo", + "widgets_restore_from_blockheight" : "Recupera da altezza blocco", + "widgets_restore_from_date" : "Recupera da data", + "widgets_or" : "o", + "widgets_seed" : "Seme", + + + "router_no_route" : "Nessun percorso definito per ${name}", + + + "error_text_account_name" : "Il nome dell'Account può contenere solo lettere, numeri\ne deve avere una lunghezza compresa tra 1 e 15 caratteri", + "error_text_contact_name" : "Il nome del Contatto non può contenere i simboli ` , ' \" \ne deve avere una lunghezza compresa tra 1 e 32 caratteri", + "error_text_address" : "L'indirizzo del Portafoglio deve corrispondere alla tipologia\ndi criptovaluta", + "error_text_node_address" : "Gentilmente inserisci un indirizzo iPv4", + "error_text_node_port" : "La porta del nodo può contenere solo numeri compresi tra 0 e 65535", + "error_text_payment_id" : "l'ID del pagamento può contenere solo da 16 a 64 caratteri in hex", + "error_text_xmr" : "Il valore XMR non può eccedere il saldo disponibile.\nIl numero delle cifre decimali deve essere inferiore o uguale a 12", + "error_text_fiat" : "L'ammontare non può eccedere il saldo dispoinibile.\nIl numero di cifre decimali deve essere inferiore o uguale a 2", + "error_text_subaddress_name" : "Il nome del sottoindirizzo non può contenere i simboli ` , ' \" \ne deve avere una lunghezza compresa tra 1 e 20 caratteri", + "error_text_amount" : "L'ammontare può contenere solo numeri", + "error_text_wallet_name" : "Il nome del portafoglio può contenere solo lettere, numeri\ne deve avere una lunghezza compresa tra 1 e 15 caratteri", + "error_text_keys" : "Le chiavi del portafoglio possono contenere solo 64 caratteri in hex", + "error_text_crypto_currency" : "Il numero delle cifre decimali\ndeve essere inferiore o uguale a 12", + "error_text_minimal_limit" : "Lo scambio per ${provider} non è stato creato. L'ammontare è inferiore al minimo: ${min} ${currency}", + "error_text_maximum_limit" : "Lo scambio per ${provider} non è stato creato. L'ammontare è superiore al massimo: ${max} ${currency}", + "error_text_limits_loading_failed" : "Lo scambio per ${provider} non è stato creato. Caricamento dei limiti fallito", + "error_text_template" : "Il nome del modello e l'indirizzo non possono contenere i simboli ` , ' \" \ne devono avere una lunghezza compresa tra 1 e 106 caratteri", + + + "auth_store_ban_timeout" : "ban_timeout", + "auth_store_banned_for" : "Bannato per ", + "auth_store_banned_minutes" : " minuti", + "auth_store_incorrect_password" : "PIN non corretto", + "wallet_store_monero_wallet" : "Portafoglio Monero", + "wallet_restoration_store_incorrect_seed_length" : "Lunghezza seme non corretta", + + + "full_balance" : "Saldo Completo", + "available_balance" : "Saldo Disponibile", + "hidden_balance" : "Saldo Nascosto", + + + "sync_status_syncronizing" : "SINCRONIZZAZIONE", + "sync_status_syncronized" : "SINCRONIZZATO", + "sync_status_not_connected" : "NON CONNESSO", + "sync_status_starting_sync" : "INIZIO SINC", + "sync_status_failed_connect" : "DISCONNESSO", + "sync_status_connecting" : "CONNESSIONE", + "sync_status_connected" : "CONNESSO", + + + "transaction_priority_slow" : "Bassa", + "transaction_priority_regular" : "Regolare", + "transaction_priority_medium" : "Media", + "transaction_priority_fast" : "Alta", + "transaction_priority_fastest" : "Massima", + + + "trade_for_not_created" : "Lo scambio per ${title} non è stato creato.", + "trade_not_created" : "Scambio non creato.", + "trade_id_not_found" : "Scambio ${tradeId} di ${title} not trovato.", + "trade_not_found" : "Scambio non trovato.", + + + "trade_state_pending" : "In corso", + "trade_state_confirming" : "Conferma", + "trade_state_trading" : "Scambio", + "trade_state_traded" : "Scambiato", + "trade_state_complete" : "Completato", + "trade_state_to_be_created" : "Da creare", + "trade_state_unpaid" : "Non pagato", + "trade_state_underpaid" : "Sottopagato", + "trade_state_paid_unconfirmed" : "Pagato non confermato", + "trade_state_paid" : "Pagato", + "trade_state_btc_sent" : "Btc inviati", + "trade_state_timeout" : "Timeout", + "trade_state_created" : "Creato", + "trade_state_finished" : "Finito", + + "change_language" : "Cambia lingua", + "change_language_to" : "Cambia lingua in ${language}?", + + "paste" : "Incolla", + "restore_from_seed_placeholder" : "Gentilmente inserisci o incolla il tuo seme qui", + "add_new_word" : "Aggiungi nuova parola", + "incorrect_seed" : "Il testo inserito non è valido.", + + "biometric_auth_reason" : "Scansiona la tua impronta per autenticarti", + "version" : "Versione ${currentVersion}", + + "openalias_alert_title" : "XMR Destinatario Rilevato", + "openalias_alert_content" : "Invierai i tuoi fondi a\n${recipient_name}", + + "card_address" : "Indirizzo:", + "buy" : "Compra", + + "placeholder_transactions" : "Le tue transazioni saranno mostrate qui", + "placeholder_contacts" : "I tuoi contatti saranno mostrati qui", + + "template" : "Modello", + "confirm_delete_template" : "Questa azione cancellerà questo modello. Desideri continuare?", + "confirm_delete_wallet" : "Questa azione cancellerà questo portafoglio. Desideri continuare?", + + "picker_description" : "Per scegliere ChangeNOW o MorphToken, gentilmente cambia prima la tua coppia di valute", + + "change_wallet_alert_title" : "Cambia portafoglio attuale", + "change_wallet_alert_content" : "Sei sicuro di voler cambiare il portafoglio attuale con ${wallet_name}?", + + "creating_new_wallet" : "Creazione nuovo portafoglio", + "creating_new_wallet_error" : "Errore: ${description}", + + "seed_alert_title" : "Attenzione", + "seed_alert_content" : "Il seme è l'unico modo per recuperare il tuo portafoglio. L'hai trascritto?", + "seed_alert_back" : "Torna indietro", + "seed_alert_yes" : "Sì, l'ho fatto", + + "exchange_sync_alert_content" : "Gentilmente aspetta che il tuo portafoglio sia sincronizzato", + + "pre_seed_title" : "IMPORTANTE", + "pre_seed_description" : "Nella pagina seguente ti sarà mostrata una serie di parole ${words}. Questo è il tuo seme unico e privato ed è l'UNICO modo per recuperare il tuo portafoglio in caso di perdita o malfunzionamento. E' TUA responsabilità trascriverlo e conservarlo in un posto sicuro fuori dall'app Cake Wallet.", + "pre_seed_button_text" : "Ho capito. Mostrami il seme", + + "xmr_to_error" : "XMR.TO errore", + "xmr_to_error_description" : "Ammontare invalido. Il limite massimo è 8 cifre dopo il punto decimale", + + "provider_error" : "${provider} errore", + + "use_ssl" : "Usa SSL", + + "color_theme" : "Colore tema", + "light_theme" : "Bianco", + "bright_theme" : "Colorato", + "dark_theme" : "Scuro", + "enter_your_note" : "Inserisci la tua nota…", + "note_optional" : "Nota (opzionale)", + "note_tap_to_change" : "Nota (clicca per cambiare)", + "transaction_key" : "Chiave Transazione", + "confirmations" : "Conferme", + "recipient_address" : "Indirizzo di destinazione", + + "extra_id" : "Extra ID:", + "destination_tag" : "Tag destinazione:", + "memo" : "Memo:", + + "backup" : "Backup", + "change_password" : "Cambia password", + "backup_password" : "Backup password", + "write_down_backup_password" : "Gentilmente trascrivi la password del backup, che è usata per importare i tuoi file di backup.", + "export_backup" : "Esporta backup", + "save_backup_password" : "Gentilmente assicurati di aver salvato la password del tuo backup. Senza questa non sarai in grado di importare i tuoi file di backup.", + "backup_file" : "Backup file", + + "edit_backup_password" : "Modifica Password Backup", + "save_backup_password_alert" : "Salva password Backup", + "change_backup_password_alert" : "I precedenti file di backup non potranno essere importati con la nuova password di backup. La nuova password di backup verrà usata soltanto per i nuovi file di backup. Sei sicuro di voler cambiare la tua password di backup?", + + "enter_backup_password" : "Inserisci la password di backup qui", + "select_backup_file" : "Seleziona file di backup", + "import" : "Importa", + "please_select_backup_file" : "Gentilmente seleziona il file di backup e inserisci la password di backup.", + + "fixed_rate" : "Tasso fisso", + "fixed_rate_alert" : "Potrai inserire l'ammontare da ricevere quando il tasso è fisso. Vuoi cambiare alla modalità tasso fisso?", + + "xlm_extra_info" : "Gentilmente ricorda di indicare il Memo ID quando invii la transazione XLM per lo scambio", + "xrp_extra_info" : "Gentilmente ricorda di indicare il Tag di Destinazione quando invii una transazione XRP per lo scambio", + + "exchange_incorrect_current_wallet_for_xmr" : "Se vuoi scambiare XMR dal tuo saldo Cake Wallet Monero, gentilmente passa al tuo portafoglio Monero.", + "confirmed" : "Confermato", + "unconfirmed" : "Non confermato", + "displayable" : "Visualizzabile", + + "submit_request" : "invia una richiesta" +} \ No newline at end of file diff --git a/res/values/strings_ja.arb b/res/values/strings_ja.arb index 291d5afd3..0df4e9dda 100644 --- a/res/values/strings_ja.arb +++ b/res/values/strings_ja.arb @@ -170,7 +170,7 @@ "restore_wallet_restore_description" : "ウォレットの復元", "restore_new_seed" : "新しい種", "restore_active_seed" : "アクティブシード", - "restore_bitcoin_description_from_seed" : "12ワードの組み合わせコードからウォレットを復元する", + "restore_bitcoin_description_from_seed" : "24ワードの組み合わせコードからウォレットを復元する", "restore_bitcoin_description_from_keys" : "秘密鍵から生成されたWIF文字列からウォレットを復元します", "restore_bitcoin_title_from_keys" : "WIFから復元", "restore_from_date_or_blockheight" : "このウォレットを作成する数日前に日付を入力してください。 または、ブロックの高さがわかっている場合は、代わりに入力してください", @@ -469,5 +469,7 @@ "unconfirmed" : "未確認", "displayable" : "表示可能", - "submit_request" : "リクエストを送信する" + "submit_request" : "リクエストを送信する", + + "buy_alert_content" : "現在、ビットコインの購入のみをサポートしています。 ビットコインを購入するには、ビットコインウォレットを作成するか切り替えてください" } \ No newline at end of file diff --git a/res/values/strings_ko.arb b/res/values/strings_ko.arb index 781df8d8a..ade3cc847 100644 --- a/res/values/strings_ko.arb +++ b/res/values/strings_ko.arb @@ -170,7 +170,7 @@ "restore_wallet_restore_description" : "월렛 복원 설명", "restore_new_seed" : "새로운 씨앗", "restore_active_seed" : "활성 종자", - "restore_bitcoin_description_from_seed" : "12 단어 조합 코드에서 지갑 복원", + "restore_bitcoin_description_from_seed" : "24 단어 조합 코드에서 지갑 복원", "restore_bitcoin_description_from_keys" : "개인 키에서 생성 된 WIF 문자열에서 지갑 복원", "restore_bitcoin_title_from_keys" : "WIF에서 복원", "restore_from_date_or_blockheight" : "이 지갑을 생성하기 며칠 전에 날짜를 입력하십시오. 또는 블록 높이를 알고있는 경우 대신 입력하십시오.", @@ -469,5 +469,7 @@ "unconfirmed" : "미확인", "displayable" : "표시 가능", - "submit_request" : "요청을 제출" + "submit_request" : "요청을 제출", + + "buy_alert_content" : "현재 우리는 비트 코인 구매 만 지원합니다. 비트 코인을 구매하려면 비트 코인 지갑을 생성하거나 전환하십시오" } \ No newline at end of file diff --git a/res/values/strings_nl.arb b/res/values/strings_nl.arb index 9a6183efb..8f50f7102 100644 --- a/res/values/strings_nl.arb +++ b/res/values/strings_nl.arb @@ -170,7 +170,7 @@ "restore_wallet_restore_description" : "Portemonnee-herstelbeschrijving", "restore_new_seed" : "Nieuw zaad", "restore_active_seed" : "Actief zaad", - "restore_bitcoin_description_from_seed" : "Herstel uw portemonnee met een combinatiecode van 12 woorden", + "restore_bitcoin_description_from_seed" : "Herstel uw portemonnee met een combinatiecode van 24 woorden", "restore_bitcoin_description_from_keys" : "Herstel uw portemonnee van de gegenereerde WIF-string van uw privésleutels", "restore_bitcoin_title_from_keys" : "Herstel van WIF", "restore_from_date_or_blockheight" : "Voer een datum in een paar dagen voordat u deze portemonnee heeft gemaakt. Of als u de blokhoogte kent, voert u deze in", @@ -469,5 +469,7 @@ "unconfirmed" : "Niet bevestigd", "displayable" : "Weer te geven", - "submit_request" : "een verzoek indienen" + "submit_request" : "een verzoek indienen", + + "buy_alert_content" : "Momenteel ondersteunen we alleen de aankoop van Bitcoin. Om Bitcoin te kopen, moet u uw Bitcoin-portemonnee aanmaken of naar uw Bitcoin-portemonnee overschakelen" } \ No newline at end of file diff --git a/res/values/strings_pl.arb b/res/values/strings_pl.arb index 6db66958e..84a8ba338 100644 --- a/res/values/strings_pl.arb +++ b/res/values/strings_pl.arb @@ -170,7 +170,7 @@ "restore_wallet_restore_description" : "Opis przywracania portfela", "restore_new_seed" : "Nowe nasienie", "restore_active_seed" : "Aktywne nasiona", - "restore_bitcoin_description_from_seed" : "Przywróć swój portfel z kodu złożonego z 12 słów", + "restore_bitcoin_description_from_seed" : "Przywróć swój portfel z kodu złożonego z 24 słów", "restore_bitcoin_description_from_keys" : "Przywróć swój portfel z wygenerowanego ciągu WIF z kluczy prywatnych", "restore_bitcoin_title_from_keys" : "Przywróć z WIF", "restore_from_date_or_blockheight" : "Wprowadź datę na kilka dni przed utworzeniem tego portfela. Lub jeśli znasz wysokość bloku, wprowadź go zamiast tego", @@ -469,5 +469,7 @@ "unconfirmed" : "Niepotwierdzony", "displayable" : "Wyświetlane", - "submit_request" : "złożyć wniosek" + "submit_request" : "złożyć wniosek", + + "buy_alert_content" : "Obecnie obsługujemy tylko zakup Bitcoinów. Aby kupić Bitcoin, utwórz lub przełącz się na swój portfel Bitcoin" } \ No newline at end of file diff --git a/res/values/strings_pt.arb b/res/values/strings_pt.arb index 631be8f42..18a5ad9b5 100644 --- a/res/values/strings_pt.arb +++ b/res/values/strings_pt.arb @@ -170,7 +170,7 @@ "restore_wallet_restore_description" : "Restauração da carteira", "restore_new_seed" : "Nova semente", "restore_active_seed" : "Semente ativa", - "restore_bitcoin_description_from_seed" : "Restaure sua carteira a partir de um código de combinação de 12 palavras", + "restore_bitcoin_description_from_seed" : "Restaure sua carteira a partir de um código de combinação de 24 palavras", "restore_bitcoin_description_from_keys" : "Restaure sua carteira a partir da string WIF gerada de suas chaves privadas", "restore_bitcoin_title_from_keys" : "Restaurar de WIF", "restore_from_date_or_blockheight" : "Insira uma data alguns dias antes de criar esta carteira. Ou se você souber a altura do bloco, insira-o", @@ -469,5 +469,7 @@ "unconfirmed" : "Não confirmado", "displayable" : "Exibível", - "submit_request" : "enviar um pedido" + "submit_request" : "enviar um pedido", + + "buy_alert_content" : "Atualmente, apoiamos apenas a compra de Bitcoin. Para comprar Bitcoin, crie ou mude para sua carteira Bitcoin" } \ No newline at end of file diff --git a/res/values/strings_ru.arb b/res/values/strings_ru.arb index 333a823d8..711d4fa07 100644 --- a/res/values/strings_ru.arb +++ b/res/values/strings_ru.arb @@ -170,7 +170,7 @@ "restore_wallet_restore_description" : "Описание восстановления кошелька", "restore_new_seed" : "Новая мнемоническая фраза", "restore_active_seed" : "Активная мнемоническая фраза", - "restore_bitcoin_description_from_seed" : "Вы можете восстановить кошелёк используя 12-ти значную мнемоническую фразу", + "restore_bitcoin_description_from_seed" : "Вы можете восстановить кошелёк используя 24-ти значную мнемоническую фразу", "restore_bitcoin_description_from_keys" : "Вы можете восстановить кошелёк с помощью WIF", "restore_bitcoin_title_from_keys" : "Восстановить с помощью WIF", "restore_from_date_or_blockheight" : "Пожалуйста, введите дату за несколько дней до создания этого кошелька. Или, если вы знаете высоту блока, введите ее значение", @@ -469,5 +469,7 @@ "unconfirmed" : "Неподтвержденный", "displayable" : "Отображаемый", - "submit_request" : "отправить запрос" + "submit_request" : "отправить запрос", + + "buy_alert_content" : "В настоящее время мы поддерживаем только покупку Bitcoin. Чтобы купить Bitcoin, создайте или переключитесь на ваш Bitcoin кошелек" } \ No newline at end of file diff --git a/res/values/strings_uk.arb b/res/values/strings_uk.arb index cc10a2d89..46c82da58 100644 --- a/res/values/strings_uk.arb +++ b/res/values/strings_uk.arb @@ -170,7 +170,7 @@ "restore_wallet_restore_description" : "Опис відновлюваного гаманця", "restore_new_seed" : "Нова мнемонічна фраза", "restore_active_seed" : "Активна мнемонічна фраза", - "restore_bitcoin_description_from_seed" : "Ви можете відновити гаманець використовуючи 12-ти слівну мнемонічну фразу", + "restore_bitcoin_description_from_seed" : "Ви можете відновити гаманець використовуючи 24-ти слівну мнемонічну фразу", "restore_bitcoin_description_from_keys" : "Ви можете відновити гаманець за допомогою WIF", "restore_bitcoin_title_from_keys" : "Відновити за допомогою WIF", "restore_from_date_or_blockheight" : "Будь ласка, введіть дату за кілька днів до створення цього гаманця. Або, якщо ви знаєте висоту блоку, введіть її значення", @@ -469,5 +469,7 @@ "unconfirmed" : "Непідтверджений", "displayable" : "Відображуваний", - "submit_request" : "надіслати запит" + "submit_request" : "надіслати запит", + + "buy_alert_content" : "На даний час ми підтримуємо тільки покупку Bitcoin. Щоб купити Bitcoin, будь ласка, створіть або переключіться на ваш Bitcoin гаманець" } \ No newline at end of file diff --git a/res/values/strings_zh.arb b/res/values/strings_zh.arb index 639babcbc..cff7833b1 100644 --- a/res/values/strings_zh.arb +++ b/res/values/strings_zh.arb @@ -1,28 +1,28 @@ { - "welcome" : "歡迎來到", + "welcome" : "欢迎使用", "cake_wallet" : "Cake Wallet", - "first_wallet_text" : "很棒的Monero和比特幣錢包", + "first_wallet_text" : "很棒的门罗币和比特币钱包", "please_make_selection" : "请在下面进行选择 创建或恢复您的钱包.", "create_new" : "创建新钱包", "restore_wallet" : "恢复钱包", - "accounts" : "帐目", + "accounts" : "账户", "edit" : "编辑", "account" : "帐户", - "add" : "加", + "add" : "添加", "address_book" : "地址簿", "contact" : "联系", "please_select" : "请选择:", "cancel" : "取消", - "ok" : "好", + "ok" : "确认", "contact_name" : "联系人姓名", - "reset" : "重启", + "reset" : "重置", "save" : "保存", - "address_remove_contact" : "刪除聯繫人", - "address_remove_content" : "您確定要刪除所選的聯繫人嗎?", + "address_remove_contact" : "刪除联系人", + "address_remove_content" : "您确定要刪除所选的联系人吗?", "authenticated" : "已认证", @@ -32,18 +32,18 @@ "wallet_menu" : "钱包菜单", "Blocks_remaining" : "${status} 剩余的块", - "please_try_to_connect_to_another_node" : "请尝试连接到另一个节点", - "xmr_hidden" : "隱", + "please_try_to_connect_to_another_node" : "请尝试连接到其他节点", + "xmr_hidden" : "隐藏", "xmr_available_balance" : "可用余额 ", "xmr_full_balance" : "全部余额", "send" : "发送", "receive" : "接收", - "transactions" : "交易次数", - "incoming" : "传入", - "outgoing" : "外向", + "transactions" : "交易情况", + "incoming" : "收到", + "outgoing" : "发送", "transactions_by_date" : "按日期交易", "trades" : "交易", - "filters" : "過濾", + "filters" : "过滤", "today" : "今天", "yesterday" : "昨天", "received" : "已收到", @@ -51,67 +51,67 @@ "pending" : " (待定)", "rescan" : "重新扫描", "reconnect" : "重新连接", - "wallets" : "皮夹", + "wallets" : "钱包", "show_seed" : "显示种子", - "show_keys" : "顯示種子/密鑰", + "show_keys" : "显示种子/密钥", "address_book_menu" : "地址簿", - "reconnection" : "重新连线", + "reconnection" : "重新连接", "reconnect_alert_text" : "您确定要重新连接吗?", - "exchange" : "交换", - "clear" : "明确", + "exchange" : "兑换", + "clear" : "清空", "refund_address" : "退款地址", - "change_exchange_provider" : "更改交易所提供商", - "you_will_send" : "從轉換", - "you_will_get" : "轉換成", - "amount_is_guaranteed" : "接收金額有保證", + "change_exchange_provider" : "更改交易所", + "you_will_send" : "转换自", + "you_will_get" : "转换到", + "amount_is_guaranteed" : "保证收到的金额", "amount_is_estimate" : "收款金额为估算值", - "powered_by" : "供电 ${title}", + "powered_by" : "Powered by ${title}", "error" : "错误", - "estimated" : "估计的", - "min_value" : "敏: ${value} ${currency}", + "estimated" : "估计值", + "min_value" : "最低: ${value} ${currency}", "max_value" : "最高: ${value} ${currency}", "change_currency" : "更改币种", - "copy_id" : "复印ID", + "copy_id" : "复制ID", "exchange_result_write_down_trade_id" : "请复制或写下交易编号以继续.", - "trade_id" : "贸易编号:", + "trade_id" : "交易编号:", "copied_to_clipboard" : "复制到剪贴板", - "saved_the_trade_id" : "我已经保存了交易ID", - "fetching" : "正在取得", + "saved_the_trade_id" : "我已经保存了交易编号", + "fetching" : "正在获取", "id" : "ID: ", - "amount" : "量: ", + "amount" : "金额: ", "payment_id" : "付款 ID: ", "status" : "状态: ", "offer_expires_in" : "优惠有效期至 ", "trade_is_powered_by" : "该交易由 ${provider}", "copy_address" : "复制地址", - "exchange_result_confirm" : "点击确认 您将发送 ${fetchingLabel} ${from} 从你的钱包里 ${walletName} 到下面顯示的地址。 或者您可以從外部錢包發送到以下地址/ QR码。\n\n请按确认继续或返回以更改金额", - "exchange_result_description" : "您必須至少發送 ${fetchingLabel} ${from} 到下一頁上顯示的地址。 如果您發送的金額少於 ${fetchingLabel} ${from},則可能無法轉換,因此無法退還。", + "exchange_result_confirm" : "点击确认 您将发送 ${fetchingLabel} ${from} 从你的钱包里 ${walletName} 到下面显示的地址。 或者您可以从外部钱包发送到以下地址/ QR码。\n\n请按确认继续或返回以更改金额", + "exchange_result_description" : "您必須至少发送 ${fetchingLabel} ${from} 到下一页上显示的地址。 如果您发送的金额少于 ${fetchingLabel} ${from},则可能无法转换,因此无法退还。", "exchange_result_write_down_ID" : "*请复制或写下您上面显示的ID.", "confirm" : "确认", "confirm_sending" : "确认发送", - "commit_transaction_amount_fee" : "提交交易\n量: ${amount}\nFee: ${fee}", + "commit_transaction_amount_fee" : "提交交易\n金额: ${amount}\n手续费: ${fee}", "sending" : "正在发送", "transaction_sent" : "交易已发送", "expired" : "已过期", "time" : "${minutes}m ${seconds}s", "send_xmr" : "发送 XMR", - "exchange_new_template" : "新範本", + "exchange_new_template" : "新模板", "faq" : "FAQ", "enter_your_pin" : "输入密码", - "loading_your_wallet" : "装钱包", + "loading_your_wallet" : "加载您的钱包", "new_wallet" : "新钱包", "wallet_name" : "钱包名称", "continue_text" : "继续", - "choose_wallet_currency" : "請選擇錢包貨幣:", + "choose_wallet_currency" : "请选择钱包货币:", "node_new" : "新节点", @@ -128,27 +128,27 @@ "remove_node_message" : "您确定要删除所选节点吗?", "remove" : "去掉", "delete" : "删除", - "add_new_node" : "添加新節點", - "change_current_node_title" : "更改當前節點", - "node_test" : "測試", - "node_connection_successful" : "連接成功", - "node_connection_failed" : "連接失敗", - "new_node_testing" : "新節點測試", + "add_new_node" : "添加新节点", + "change_current_node_title" : "更改当前节点", + "node_test" : "测试", + "node_connection_successful" : "连接成功", + "node_connection_failed" : "连接失敗", + "new_node_testing" : "新节点测试", - "use" : "採用 ", - "digit_pin" : "数字别针", + "use" : "使用 ", + "digit_pin" : "位 PIN", "share_address" : "分享地址", - "receive_amount" : "量", + "receive_amount" : "金额", "subaddresses" : "子地址", "addresses" : "地址", - "scan_qr_code" : "掃描二維碼獲取地址", - "rename" : "改名", - "choose_account" : "選擇帳號", - "create_new_account" : "建立新帳戶", - "accounts_subaddresses" : "帳戶和子地址", + "scan_qr_code" : "扫描二维码获取地址", + "rename" : "重命名", + "choose_account" : "选择账户", + "create_new_account" : "建立新账户", + "accounts_subaddresses" : "账户和子地址", "restore_restore_wallet" : "恢复钱包", @@ -161,41 +161,40 @@ "restore_title_from_seed" : "从种子还原", "restore_description_from_seed" : "从25个字中恢复您的钱包或13个字的组合码", "restore_title_from_keys" : "从密钥还原", - "restore_description_from_keys" : "R从生成的电子钱包从您的私钥中保存的击键", + "restore_description_from_keys" : "使用私钥恢复钱包", "restore_wallet_name" : "钱包名称", "restore_address" : "地址", - "restore_view_key_private" : "查看金钥 (私人的)", - "restore_spend_key_private" : "支出金钥 (私人的)", + "restore_view_key_private" : "View私钥", + "restore_spend_key_private" : "Spend私钥", "restore_recover" : "恢复", "restore_wallet_restore_description" : "钱包还原说明", - "restore_new_seed" : "新種子", - "restore_active_seed" : "活性種子", - "restore_bitcoin_description_from_seed" : "從12個單詞的組合碼恢復您的錢包", - "restore_bitcoin_description_from_keys" : "從私鑰中生成的WIF字符串還原您的錢包", - "restore_bitcoin_title_from_keys" : "從WIF還原", - "restore_from_date_or_blockheight" : "請在創建此錢包之前幾天輸入一個日期。 或者,如果您知道塊高,請改為輸入", + "restore_new_seed" : "新种子", + "restore_active_seed" : "活性种子", + "restore_bitcoin_description_from_seed" : "从24个文字的组成码恢复您的钱包", + "restore_bitcoin_description_from_keys" : "从私钥中生成的WIF字符串恢复您钱包", + "restore_bitcoin_title_from_keys" : "从WIF还原", + "restore_from_date_or_blockheight" : "请输入您创建这个钱包前几天的日期。或者如果您知道区块高度,请输入区块高度", - - "seed_reminder" : "請寫下這些,以防丟失或擦拭手機", + "seed_reminder" : "请记下这些内容,以防丟失或数据损坏", "seed_title" : "种子", "seed_share" : "分享种子", "copy" : "复制", - "seed_language_choose" : "請選擇種子語言:", - "seed_choose" : "選擇種子語言", + "seed_language_choose" : "请选择种子语言:", + "seed_choose" : "选择种子语言", "seed_language_next" : "下一个", - "seed_language_english" : "英語", + "seed_language_english" : "英文", "seed_language_chinese" : "中文", - "seed_language_dutch" : "荷蘭人", - "seed_language_german" : "德語", - "seed_language_japanese" : "日本", - "seed_language_portuguese" : "葡萄牙語", - "seed_language_russian" : "俄語", + "seed_language_dutch" : "荷兰文", + "seed_language_german" : "德文", + "seed_language_japanese" : "日文", + "seed_language_portuguese" : "葡萄牙文", + "seed_language_russian" : "俄文", "seed_language_spanish" : "西班牙文", - "send_title" : "發送", + "send_title" : "发送", "send_your_wallet" : "你的钱包", "send_address" : "${cryptoCurrency} 地址", "send_payment_id" : "付款编号 (可选的)", @@ -205,37 +204,37 @@ "send_estimated_fee" : "预估费用:", "send_priority" : "目前,费用设置为 ${transactionPriority} 优先.\n交易优先级可以在设置中进行调整", "send_creating_transaction" : "创建交易", - "send_templates" : "範本", - "send_new" : "新", - "send_amount" : "量:", - "send_fee" : "費用:", - "send_name" : "名稱", - "send_got_it" : "得到它了", - "send_sending" : "正在發送...", - "send_success" : "你${crypto}已成功發送", + "send_templates" : "模板", + "send_new" : "新建", + "send_amount" : "金额:", + "send_fee" : "手续费:", + "send_name" : "名称", + "send_got_it" : "明白", + "send_sending" : "正在发送...", + "send_success" : "您的${crypto}已成功发送", "settings_title" : "设定值", "settings_nodes" : "节点数", "settings_current_node" : "当前节点", - "settings_wallets" : "皮夹", + "settings_wallets" : "钱包", "settings_display_balance_as" : "将余额显示为", "settings_currency" : "货币", - "settings_fee_priority" : "费用优先", + "settings_fee_priority" : "交易优先级", "settings_save_recipient_address" : "保存收件人地址", "settings_personal" : "个人", "settings_change_pin" : "更改密码", - "settings_change_language" : "改变语言", - "settings_allow_biometrical_authentication" : "允许生物特征认证", - "settings_dark_mode" : "暗模式", - "settings_transactions" : "交易次数", + "settings_change_language" : "修改语言", + "settings_allow_biometrical_authentication" : "允许生物识别认证", + "settings_dark_mode" : "黑暗模式", + "settings_transactions" : "交易情况", "settings_trades" : "交易", "settings_display_on_dashboard_list" : "显示在仪表板上", "settings_all" : "所有", "settings_only_trades" : "只交易", "settings_only_transactions" : "仅交易", "settings_none" : "没有", - "settings_support" : "支持", + "settings_support" : "帮助", "settings_terms_and_conditions" : "条款和条件", "pin_is_incorrect" : "PIN码不正确", @@ -245,14 +244,14 @@ "setup_successful" : "您的PIN码已成功设置!", - "wallet_keys" : "錢包種子/鑰匙", - "wallet_seed" : "錢包種子", - "private_key" : "私鑰", - "public_key" : "公鑰", - "view_key_private" : "查看金钥 (私人的)", - "view_key_public" : "查看金钥 (public)", - "spend_key_private" : "支出金钥 (私人的)", - "spend_key_public" : "支出金钥 (public)", + "wallet_keys" : "钱包种子/密钥", + "wallet_seed" : "钱包种子", + "private_key" : "私钥", + "public_key" : "公钥", + "view_key_private" : "View 密钥(私钥)", + "view_key_public" : "View 密钥(公钥)", + "spend_key_private" : "Spend 密钥 (私钥)", + "spend_key_public" : "Spend 密钥 (公钥)", "copied_key_to_clipboard" : "复制 ${key} 到剪贴板", @@ -261,7 +260,7 @@ "new_subaddress_create" : "创建", - "subaddress_title" : "子地址清单", + "subaddress_title" : "子地址列表", "trade_details_title" : "交易明细", @@ -280,9 +279,9 @@ "transaction_details_title" : "交易明细", "transaction_details_transaction_id" : "交易编号", "transaction_details_date" : "日期", - "transaction_details_height" : "高度", - "transaction_details_amount" : "量", - "transaction_details_fee" : "費用", + "transaction_details_height" : "区块高度", + "transaction_details_amount" : "金额", + "transaction_details_fee" : "手续费", "transaction_details_copied" : "${title} 复制到剪贴板", "transaction_details_recipient_address" : "收件人地址", @@ -290,17 +289,17 @@ "wallet_list_title" : "Monero 钱包", "wallet_list_create_new_wallet" : "创建新钱包", "wallet_list_restore_wallet" : "恢复钱包", - "wallet_list_load_wallet" : "装入钱包", + "wallet_list_load_wallet" : "加载钱包", "wallet_list_loading_wallet" : "载入中 ${wallet_name} 钱包", "wallet_list_failed_to_load" : "加载失败 ${wallet_name} 钱包. ${error}", - "wallet_list_removing_wallet" : "拆下 ${wallet_name} 钱包", + "wallet_list_removing_wallet" : "删除 ${wallet_name} 钱包", "wallet_list_failed_to_remove" : "删除失败 ${wallet_name} 钱包. ${error}", "widgets_address" : "地址", "widgets_restore_from_blockheight" : "从块高还原", "widgets_restore_from_date" : "从日期还原", - "widgets_or" : "要么", + "widgets_or" : "或者", "widgets_seed" : "种子", @@ -310,7 +309,7 @@ "error_text_account_name" : "帐户名称只能包含字母数字\n且必须介于1到15个字符之间", "error_text_contact_name" : "联系人姓名不能包含`,' \" 符号\n并且必须介于1到32个字符之间", "error_text_address" : "钱包地址必须与类型对应\n加密货币", - "error_text_node_address" : "请输入一个iPv4地址", + "error_text_node_address" : "请输入一个IPv4地址", "error_text_node_port" : "节点端口只能包含0到65535之间的数字", "error_text_payment_id" : "付款ID只能包含16到64个字符(十六进制)", "error_text_xmr" : "XMR值不能超过可用余额.\n小数位数必须小于或等于12", @@ -320,10 +319,10 @@ "error_text_wallet_name" : "钱包名称只能包含字母,数字\n且必须介于1到15个字符之间", "error_text_keys" : "钱包密钥只能包含16个字符的十六进制字符", "error_text_crypto_currency" : "小数位数\n必须小于或等于12", - "error_text_minimal_limit" : "未創建 ${provider} 交易。 金額少於最小值:${min} ${currency}", - "error_text_maximum_limit" : "未創建 ${provider} 交易。 金額大於最大值:${max} ${currency}", - "error_text_limits_loading_failed" : "未創建 ${provider} 交易。 限制加載失敗", - "error_text_template" : "模板名稱和地址不能包含`,' \" 符号\n并且必须在1到106个字符之间", + "error_text_minimal_limit" : "未创建 ${provider} 交易。 金额小于最小值:${min} ${currency}", + "error_text_maximum_limit" : "未创建 ${provider} 交易。 金额大于最大值:${max} ${currency}", + "error_text_limits_loading_failed" : "未创建 ${provider} 交易。 限制加载失敗", + "error_text_template" : "模板名称和地址不能包含`,' \" 符号\n并且必须在1到106个字符之间", "auth_store_ban_timeout" : "禁止超时", @@ -339,32 +338,32 @@ "hidden_balance" : "隐藏余额", - "sync_status_syncronizing" : "同步化", + "sync_status_syncronizing" : "正在同步", "sync_status_syncronized" : "已同步", "sync_status_not_connected" : "未连接", "sync_status_starting_sync" : "开始同步", - "sync_status_failed_connect" : "斷線", + "sync_status_failed_connect" : "断线", "sync_status_connecting" : "连接中", - "sync_status_connected" : "连接的", + "sync_status_connected" : "已连接", - "transaction_priority_slow" : "慢", - "transaction_priority_regular" : "定期", - "transaction_priority_medium" : "介质", + "transaction_priority_slow" : "慢速", + "transaction_priority_regular" : "常规", + "transaction_priority_medium" : "中等", "transaction_priority_fast" : "快速", - "transaction_priority_fastest" : "最快的", + "transaction_priority_fastest" : "最快", "trade_for_not_created" : "交易 ${title} 未创建.", "trade_not_created" : "未建立交易.", - "trade_id_not_found" : "贸易方式 ${tradeId} 的 ${title} 未找到.", + "trade_id_not_found" : "交易方式 ${tradeId} 的 ${title} 未找到.", "trade_not_found" : "找不到交易.", "trade_state_pending" : "待定", "trade_state_confirming" : "确认中", - "trade_state_trading" : "贸易", - "trade_state_traded" : "交易", + "trade_state_trading" : "交易", + "trade_state_traded" : "已交易", "trade_state_complete" : "完成", "trade_state_to_be_created" : "待创建", "trade_state_unpaid" : "未付", @@ -376,98 +375,98 @@ "trade_state_created" : "已建立", "trade_state_finished" : "已完成", - "change_language" : "改變語言", - "change_language_to" : "將語言更改為 ${language}?", + "change_language" : "修改语言", + "change_language_to" : "修改语言为 ${language}?", - "paste" : "糊", + "paste" : "粘贴", "restore_from_seed_placeholder" : "请在此处输入或粘贴您的代码短语", "add_new_word" : "添加新词", "incorrect_seed" : "输入的文字无效。", - "biometric_auth_reason" : "掃描指紋以進行身份驗證", - "version" : "版 ${currentVersion}", + "biometric_auth_reason" : "扫描指纹进行身份认证", + "version" : "版本 ${currentVersion}", - "openalias_alert_title" : "檢測到XMR收件人", - "openalias_alert_content" : "您將匯款至\n${recipient_name}", + "openalias_alert_title" : "检测到XMR收件人", + "openalias_alert_content" : "您将汇款至\n${recipient_name}", "card_address" : "地址:", - "buy" : "購買", + "buy" : "购买", - "placeholder_transactions" : "您的交易將顯示在這裡", - "placeholder_contacts" : "您的聯繫人將顯示在這裡", + "placeholder_transactions" : "您的交易将显示在这里", + "placeholder_contacts" : "您的联系人将显示在这里", "template" : "模板", - "confirm_delete_template" : "此操作將刪除此模板。 你想繼續嗎?", - "confirm_delete_wallet" : "此操作將刪除此錢包。 你想繼續嗎?", + "confirm_delete_template" : "此操作将刪除此模板。 确定吗?", + "confirm_delete_wallet" : "此操作将刪除此钱包。确定吗?", - "picker_description" : "要選擇ChangeNOW或MorphToken,請先更改您的交易對", + "picker_description" : "要选择ChangeNOW或MorphToken,请先更改您的交易币", - "change_wallet_alert_title" : "更換當前錢包", - "change_wallet_alert_content" : "您要將當前的錢包更改為 ${wallet_name}?", + "change_wallet_alert_title" : "更换当前钱包", + "change_wallet_alert_content" : "您是否想将当前钱包改为 ${wallet_name}?", - "creating_new_wallet" : "創建新錢包", - "creating_new_wallet_error" : "錯誤: ${description}", + "creating_new_wallet" : "创建新钱包", + "creating_new_wallet_error" : "错误: ${description}", "seed_alert_title" : "注意", - "seed_alert_content" : "種子是恢復錢包的唯一方法。 你寫下來了嗎?", - "seed_alert_back" : "回去", - "seed_alert_yes" : "是的,我有", + "seed_alert_content" : "种子是恢复钱包的唯一方法。记住了吗?", + "seed_alert_back" : "返回", + "seed_alert_yes" : "确定", - "exchange_sync_alert_content" : "請等待,直到您的錢包同步", + "exchange_sync_alert_content" : "请等待,直到您的钱包同步", "pre_seed_title" : "重要", - "pre_seed_description" : "在下一頁上,您將看到一系列${words}個單詞。 這是您獨特的私人種子,是丟失或出現故障時恢復錢包的唯一方法。 您有責任將其寫下並存儲在Cake Wallet應用程序外部的安全地方。", - "pre_seed_button_text" : "我明白。 給我看我的種子", + "pre_seed_description" : "在下一页上,您将看到${words}个文字。 这是您独有的种子,是丟失或出现故障时恢复钱包的唯一方法。 您有必须将其写下并储存在Cake Wallet应用程序以外的安全地方。", + "pre_seed_button_text" : "我明白。 查看种子", - "xmr_to_error" : "XMR.TO錯誤", - "xmr_to_error_description" : "無效的金額。 小數點後最多8位數字", + "xmr_to_error" : "XMR.TO 错误", + "xmr_to_error_description" : "无效的金额。 小数点后最多8位数字", - "provider_error" : "${provider} 錯誤", + "provider_error" : "${provider} 错误", "use_ssl" : "使用SSL", - "color_theme" : "顏色主題", - "light_theme" : "光", - "bright_theme" : "亮", + "color_theme" : "主題", + "light_theme" : "艳丽", + "bright_theme" : "明亮", "dark_theme" : "黑暗", - "enter_your_note" : "輸入您的筆記...", - "note_optional" : "注意(可選)", - "note_tap_to_change" : "注意(輕按即可更改)", - "transaction_key" : "交易密碼", - "confirmations" : "確認書", + "enter_your_note" : "输入您的笔记...", + "note_optional" : "注意(可选)", + "note_tap_to_change" : "注意(轻按即可更改)", + "transaction_key" : "交易密码", + "confirmations" : "确认", "recipient_address" : "收件人地址", - "extra_id" : "額外編號:", - "destination_tag" : "目標標籤:", - "memo" : "備忘錄:", + "extra_id" : "额外ID:", + "destination_tag" : "目标Tag:", + "memo" : "备忘录:", - "backup" : "後備", - "change_password" : "更改密碼", - "backup_password" : "備用密碼", - "write_down_backup_password" : "請寫下您的備份密碼,該密碼用於導入備份文件。", - "export_backup" : "導出備份", - "save_backup_password" : "請確保您已保存備份密碼。 沒有它,您將無法導入備份文件。", - "backup_file" : "備份檔案", + "backup" : "备份", + "change_password" : "更改密码", + "backup_password" : "备份密码", + "write_down_backup_password" : "请写下您的备份密码,该密码用于导入备份文件。", + "export_backup" : "导出备份", + "save_backup_password" : "请确保您已保存备份密码。 沒有它,您将无法导入备份文件。", + "backup_file" : "备份文件", - "edit_backup_password" : "編輯備份密碼", - "save_backup_password_alert" : "保存備份密碼", - "change_backup_password_alert" : "您以前的備份文件將無法使用新的備份密碼導入。 新的備份密碼將僅用於新的備份文件。 您確定要更改備份密碼嗎?", + "edit_backup_password" : "编辑备份密码", + "save_backup_password_alert" : "保存备份密码", + "change_backup_password_alert" : "您以前的备份文件将无法使用新的备份密码導入。 新的备份密码将仅用于新的备份文件。 您确定要更改备份密码吗?", - "enter_backup_password" : "在此處輸入備用密碼", - "select_backup_file" : "選擇備份文件", - "import" : "進口", - "please_select_backup_file" : "請選擇備份文件,然後輸入備份密碼。", + "enter_backup_password" : "在此处输入備用密码", + "select_backup_file" : "选择备份文件", + "import" : "导入", + "please_select_backup_file" : "请选择备份文件,然后输入备份密码。", - "fixed_rate" : "固定利率", - "fixed_rate_alert" : "選中固定費率模式後,您將可以輸入接收金額。 您要切換到固定速率模式嗎?", + "fixed_rate" : "固定汇率", + "fixed_rate_alert" : "选中固定汇率模式后,您将可以输入接收金额。 您要切换到固定汇率模式吗?", - "xlm_extra_info" : "發送用於交換的XLM交易時,請不要忘記指定備忘錄ID", - "xrp_extra_info" : "發送用於交換的XRP交易時,請不要忘記指定目標標記", + "xlm_extra_info" : "发送用于交换的XLM交易时,请不要忘记指定备忘录ID", + "xrp_extra_info" : "发送用于交换的XRP交易时,请不要忘记指定目标Tag", "exchange_incorrect_current_wallet_for_xmr" : "如果要从Cake Wallet Monero余额中兑换XMR,请先切换到Monero钱包。", "confirmed" : "已确认", "unconfirmed" : "未经证实", "displayable" : "可显示", - - "submit_request" : "提交請求" + "submit_request" : "提交请求", + "buy_alert_content" : "目前,我們僅支持購買比特幣。 要購買比特幣,請創建或切換到您的比特幣錢包" } \ No newline at end of file