CW-1045-Ledger-Bugs-Enhancements (#2278)

* feat: prepare ledger.dart to use callbacks

* feat: set ledger callback using monero_c

* fix(cw_monero): async ledger

* build: Bump monero_c dependencies

* feat: Add "How to connect" to HW Device selection screen

* refactor: use monero_c free to clean pointer

* fix: use new monero_c deps

* fix: merge conflicts regarding new theming

* feat: add status bottomsheet indicating an ongoing signing process

* fix: getLastLedgerCommand monero.dart generation

* reformat send_view_model.dart [skip ci]

---------

Co-authored-by: Czarek Nakamoto <cyjan@mrcyjanek.net>
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
This commit is contained in:
Konstantin Ullrich 2025-05-26 17:38:51 +02:00 committed by GitHub
parent e03dcc7fe9
commit 90aee053cd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
46 changed files with 660 additions and 315 deletions

View file

@ -388,9 +388,7 @@ Future<void> loadWallet(
if (gLedger == null) {
throw Exception("Tried to open a ledger wallet with no ledger connected");
}
final dummyWPtr = (currentWallet ??
wmPtr.openWallet(path: '', password: ''));
enableLedgerExchange(dummyWPtr, gLedger!);
enableLedgerExchange(gLedger!);
}
final addr = wmPtr.ffiAddress();

View file

@ -2,75 +2,50 @@ import 'dart:async';
import 'dart:ffi';
import 'dart:typed_data';
import 'package:collection/collection.dart';
import 'package:cw_core/utils/print_verbose.dart';
import 'package:ffi/ffi.dart';
import 'package:flutter/foundation.dart';
import 'package:ledger_flutter_plus/ledger_flutter_plus.dart';
import 'package:ledger_flutter_plus/ledger_flutter_plus_dart.dart';
import 'package:monero/src/wallet2.dart';
import 'package:monero/src/monero.dart' as api;
LedgerConnection? gLedger;
String? latestLedgerCommand;
Timer? _ledgerExchangeTimer;
Timer? _ledgerKeepAlive;
typedef LedgerCallback = Void Function(Pointer<UnsignedChar>, UnsignedInt);
NativeCallable<LedgerCallback>? callable;
void enableLedgerExchange(Wallet2Wallet wallet, LedgerConnection connection) {
_ledgerExchangeTimer?.cancel();
_ledgerExchangeTimer = Timer.periodic(Duration(milliseconds: 1), (_) async {
final ledgerRequestLength = wallet.getSendToDeviceLength();
final ledgerRequest = wallet.getSendToDevice()
.cast<Uint8>()
.asTypedList(ledgerRequestLength);
if (ledgerRequestLength > 0) {
_ledgerKeepAlive?.cancel();
void enableLedgerExchange(LedgerConnection connection) {
callable?.close();
final Pointer<Uint8> emptyPointer = malloc<Uint8>(0);
wallet.setDeviceSendData(
emptyPointer.cast<UnsignedChar>(), 0);
malloc.free(emptyPointer);
void callback(Pointer<UnsignedChar> request, int requestLength) async {
final ledgerRequest = request.cast<Uint8>().asTypedList(requestLength);
_logLedgerCommand(ledgerRequest, false);
final response = await exchange(connection, ledgerRequest);
_logLedgerCommand(response, true);
if (ListEquality().equals(response, [0x55, 0x15])) {
await connection.disconnect();
// // TODO: Show POPUP pls unlock your device
// await Future.delayed(Duration(seconds: 15));
// response = await exchange(connection, ledgerRequest);
}
final Pointer<Uint8> result = malloc<Uint8>(response.length);
for (var i = 0; i < response.length; i++) {
result.asTypedList(response.length)[i] = response[i];
}
wallet.setDeviceReceivedData(
result.cast<UnsignedChar>(), response.length);
malloc.free(result);
keepAlive(connection);
}
});
}
latestLedgerCommand = _ledgerMoneroCommands[ledgerRequest[1]];
void keepAlive(LedgerConnection connection) {
if (connection.connectionType == ConnectionType.ble) {
_ledgerKeepAlive = Timer.periodic(Duration(seconds: 10), (_) async {
UniversalBle.setNotifiable(
connection.device.id,
connection.device.deviceInfo.serviceId,
connection.device.deviceInfo.notifyCharacteristicKey,
BleInputProperty.notification,
).onError((_, __) async {});
});
api.MoneroWallet.setDeviceReceivedData(
result.cast<UnsignedChar>(), response.length);
api.MoneroFree().free(result.cast());
}
callable = NativeCallable<LedgerCallback>.listener(callback);
api.MoneroWallet.setLedgerCallback(callable!.nativeFunction);
}
void disableLedgerExchange() {
_ledgerExchangeTimer?.cancel();
_ledgerKeepAlive?.cancel();
callable?.close();
gLedger?.disconnect();
gLedger = null;
latestLedgerCommand = null;
}
Future<Uint8List> exchange(LedgerConnection connection, Uint8List data) async =>
@ -135,8 +110,6 @@ void _logLedgerCommand(Uint8List command, [bool isResponse = true]) {
String toHexString(Uint8List data) =>
data.map((e) => e.toRadixString(16).padLeft(2, '0')).join();
if (isResponse) {
printV("< ${toHexString(command)}");
} else {

View file

@ -927,8 +927,7 @@ abstract class MoneroWalletBase extends WalletBase<MoneroBalance,
}
void setLedgerConnection(LedgerConnection connection) {
final dummyWPtr = createWalletPointer();
enableLedgerExchange(dummyWPtr, connection);
enableLedgerExchange(connection);
}
@override

View file

@ -294,12 +294,7 @@ class MoneroWalletService extends WalletService<
final password = credentials.password;
final height = credentials.height;
if (currentWallet == null) {
final tmpWptr = monero_wallet_manager.createWalletPointer();
enableLedgerExchange(tmpWptr, credentials.ledgerConnection);
} else {
enableLedgerExchange(currentWallet!, credentials.ledgerConnection);
}
enableLedgerExchange(credentials.ledgerConnection);
await monero_wallet_manager.restoreWalletFromHardwareWallet(
path: path,

View file

@ -42,10 +42,10 @@ packages:
dependency: transitive
description:
name: async
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63
url: "https://pub.dev"
source: hosted
version: "2.11.0"
version: "2.12.0"
bip32:
dependency: "direct main"
description:
@ -83,10 +83,10 @@ packages:
dependency: transitive
description:
name: boolean_selector
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "2.1.2"
bs58check:
dependency: transitive
description:
@ -172,10 +172,10 @@ packages:
dependency: transitive
description:
name: characters
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803
url: "https://pub.dev"
source: hosted
version: "1.3.0"
version: "1.4.0"
checked_yaml:
dependency: transitive
description:
@ -188,10 +188,10 @@ packages:
dependency: transitive
description:
name: clock
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
url: "https://pub.dev"
source: hosted
version: "1.1.1"
version: "1.1.2"
code_builder:
dependency: transitive
description:
@ -204,10 +204,10 @@ packages:
dependency: transitive
description:
name: collection
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
url: "https://pub.dev"
source: hosted
version: "1.19.0"
version: "1.19.1"
convert:
dependency: transitive
description:
@ -283,10 +283,10 @@ packages:
dependency: transitive
description:
name: fake_async
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc"
url: "https://pub.dev"
source: hosted
version: "1.3.1"
version: "1.3.2"
ffi:
dependency: "direct main"
description:
@ -461,18 +461,18 @@ packages:
dependency: transitive
description:
name: leak_tracker
sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec
url: "https://pub.dev"
source: hosted
version: "10.0.7"
version: "10.0.8"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573
url: "https://pub.dev"
source: hosted
version: "3.0.8"
version: "3.0.9"
leak_tracker_testing:
dependency: transitive
description:
@ -517,10 +517,10 @@ packages:
dependency: transitive
description:
name: matcher
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
url: "https://pub.dev"
source: hosted
version: "0.12.16+1"
version: "0.12.17"
material_color_utilities:
dependency: transitive
description:
@ -533,10 +533,10 @@ packages:
dependency: transitive
description:
name: meta
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
url: "https://pub.dev"
source: hosted
version: "1.15.0"
version: "1.16.0"
mime:
dependency: transitive
description:
@ -573,8 +573,8 @@ packages:
dependency: "direct main"
description:
path: "impls/monero.dart"
ref: b335585a7fb94b315eb52bd88f2da6d3489fa508
resolved-ref: b335585a7fb94b315eb52bd88f2da6d3489fa508
ref: "4868eb9220962a4176a7ed0fc7c809c6200e71a0"
resolved-ref: "4868eb9220962a4176a7ed0fc7c809c6200e71a0"
url: "https://github.com/mrcyjanek/monero_c"
source: git
version: "0.0.0"
@ -615,10 +615,10 @@ packages:
dependency: transitive
description:
name: path
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
url: "https://pub.dev"
source: hosted
version: "1.9.0"
version: "1.9.1"
path_provider:
dependency: "direct main"
description:
@ -804,26 +804,26 @@ packages:
dependency: transitive
description:
name: source_span
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c"
url: "https://pub.dev"
source: hosted
version: "1.10.0"
version: "1.10.1"
stack_trace:
dependency: transitive
description:
name: stack_trace
sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
url: "https://pub.dev"
source: hosted
version: "1.12.0"
version: "1.12.1"
stream_channel:
dependency: transitive
description:
name: stream_channel
sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
version: "2.1.4"
stream_transform:
dependency: transitive
description:
@ -836,26 +836,26 @@ packages:
dependency: transitive
description:
name: string_scanner
sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
url: "https://pub.dev"
source: hosted
version: "1.3.0"
version: "1.4.1"
term_glyph:
dependency: transitive
description:
name: term_glyph
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
url: "https://pub.dev"
source: hosted
version: "1.2.1"
version: "1.2.2"
test_api:
dependency: transitive
description:
name: test_api
sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd
url: "https://pub.dev"
source: hosted
version: "0.7.3"
version: "0.7.4"
timing:
dependency: transitive
description:
@ -916,10 +916,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14"
url: "https://pub.dev"
source: hosted
version: "14.3.0"
version: "14.3.1"
watcher:
dependency: "direct overridden"
description:
@ -977,5 +977,5 @@ packages:
source: hosted
version: "3.1.3"
sdks:
dart: ">=3.6.0 <4.0.0"
dart: ">=3.7.0-0 <4.0.0"
flutter: ">=3.24.0"

View file

@ -2,11 +2,10 @@ name: cw_monero
description: A new flutter plugin project.
version: 0.0.1
publish_to: none
author: Cake Wallet
homepage: https://cakewallet.com
environment:
sdk: ">=2.19.0 <3.0.0"
sdk: ^3.5.0
flutter: ">=1.20.0"
dependencies:
@ -27,7 +26,7 @@ dependencies:
monero:
git:
url: https://github.com/mrcyjanek/monero_c
ref: b335585a7fb94b315eb52bd88f2da6d3489fa508
ref: a27fbcb24d91143715ed930a05aaa4d853fba1f2
path: impls/monero.dart
mutex: ^3.1.0
ledger_flutter_plus: ^1.4.1

View file

@ -37,10 +37,10 @@ packages:
dependency: transitive
description:
name: async
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63
url: "https://pub.dev"
source: hosted
version: "2.11.0"
version: "2.12.0"
blockchain_utils:
dependency: transitive
description:
@ -54,10 +54,10 @@ packages:
dependency: transitive
description:
name: boolean_selector
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "2.1.2"
build:
dependency: transitive
description:
@ -135,10 +135,10 @@ packages:
dependency: transitive
description:
name: characters
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803
url: "https://pub.dev"
source: hosted
version: "1.3.0"
version: "1.4.0"
checked_yaml:
dependency: transitive
description:
@ -151,10 +151,10 @@ packages:
dependency: transitive
description:
name: clock
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
url: "https://pub.dev"
source: hosted
version: "1.1.1"
version: "1.1.2"
code_builder:
dependency: transitive
description:
@ -167,10 +167,10 @@ packages:
dependency: transitive
description:
name: collection
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
url: "https://pub.dev"
source: hosted
version: "1.19.0"
version: "1.19.1"
convert:
dependency: transitive
description:
@ -238,10 +238,10 @@ packages:
dependency: transitive
description:
name: fake_async
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc"
url: "https://pub.dev"
source: hosted
version: "1.3.1"
version: "1.3.2"
ffi:
dependency: "direct main"
description:
@ -400,18 +400,18 @@ packages:
dependency: transitive
description:
name: leak_tracker
sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec
url: "https://pub.dev"
source: hosted
version: "10.0.7"
version: "10.0.8"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573
url: "https://pub.dev"
source: hosted
version: "3.0.8"
version: "3.0.9"
leak_tracker_testing:
dependency: transitive
description:
@ -432,10 +432,10 @@ packages:
dependency: transitive
description:
name: matcher
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
url: "https://pub.dev"
source: hosted
version: "0.12.16+1"
version: "0.12.17"
material_color_utilities:
dependency: transitive
description:
@ -448,10 +448,10 @@ packages:
dependency: transitive
description:
name: meta
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
url: "https://pub.dev"
source: hosted
version: "1.15.0"
version: "1.16.0"
mime:
dependency: transitive
description:
@ -480,8 +480,8 @@ packages:
dependency: "direct main"
description:
path: "impls/monero.dart"
ref: b335585a7fb94b315eb52bd88f2da6d3489fa508
resolved-ref: b335585a7fb94b315eb52bd88f2da6d3489fa508
ref: "4868eb9220962a4176a7ed0fc7c809c6200e71a0"
resolved-ref: "4868eb9220962a4176a7ed0fc7c809c6200e71a0"
url: "https://github.com/mrcyjanek/monero_c"
source: git
version: "0.0.0"
@ -522,10 +522,10 @@ packages:
dependency: transitive
description:
name: path
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
url: "https://pub.dev"
source: hosted
version: "1.9.0"
version: "1.9.1"
path_provider:
dependency: "direct main"
description:
@ -695,26 +695,26 @@ packages:
dependency: transitive
description:
name: source_span
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c"
url: "https://pub.dev"
source: hosted
version: "1.10.0"
version: "1.10.1"
stack_trace:
dependency: transitive
description:
name: stack_trace
sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
url: "https://pub.dev"
source: hosted
version: "1.12.0"
version: "1.12.1"
stream_channel:
dependency: transitive
description:
name: stream_channel
sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
version: "2.1.4"
stream_transform:
dependency: transitive
description:
@ -727,26 +727,26 @@ packages:
dependency: transitive
description:
name: string_scanner
sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
url: "https://pub.dev"
source: hosted
version: "1.3.0"
version: "1.4.1"
term_glyph:
dependency: transitive
description:
name: term_glyph
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
url: "https://pub.dev"
source: hosted
version: "1.2.1"
version: "1.2.2"
test_api:
dependency: transitive
description:
name: test_api
sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd
url: "https://pub.dev"
source: hosted
version: "0.7.3"
version: "0.7.4"
timing:
dependency: transitive
description:
@ -791,10 +791,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14"
url: "https://pub.dev"
source: hosted
version: "14.3.0"
version: "14.3.1"
watcher:
dependency: "direct overridden"
description:
@ -844,5 +844,5 @@ packages:
source: hosted
version: "3.1.3"
sdks:
dart: ">=3.5.0 <4.0.0"
dart: ">=3.7.0-0 <4.0.0"
flutter: ">=3.24.0"

View file

@ -2,7 +2,6 @@ name: cw_wownero
description: A new flutter plugin project.
version: 0.0.1
publish_to: none
author: Cake Wallet
homepage: https://cakewallet.com
environment:
@ -25,7 +24,7 @@ dependencies:
monero:
git:
url: https://github.com/mrcyjanek/monero_c
ref: b335585a7fb94b315eb52bd88f2da6d3489fa508 # monero_c hash
ref: a27fbcb24d91143715ed930a05aaa4d853fba1f2 # monero_c hash
path: impls/monero.dart
mutex: ^3.1.0

View file

@ -37,10 +37,10 @@ packages:
dependency: transitive
description:
name: async
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63
url: "https://pub.dev"
source: hosted
version: "2.11.0"
version: "2.12.0"
blockchain_utils:
dependency: transitive
description:
@ -54,10 +54,10 @@ packages:
dependency: transitive
description:
name: boolean_selector
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "2.1.2"
build:
dependency: transitive
description:
@ -135,10 +135,10 @@ packages:
dependency: transitive
description:
name: characters
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803
url: "https://pub.dev"
source: hosted
version: "1.3.0"
version: "1.4.0"
checked_yaml:
dependency: transitive
description:
@ -151,10 +151,10 @@ packages:
dependency: transitive
description:
name: clock
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
url: "https://pub.dev"
source: hosted
version: "1.1.1"
version: "1.1.2"
code_builder:
dependency: transitive
description:
@ -167,10 +167,10 @@ packages:
dependency: transitive
description:
name: collection
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
url: "https://pub.dev"
source: hosted
version: "1.19.0"
version: "1.19.1"
convert:
dependency: transitive
description:
@ -238,10 +238,10 @@ packages:
dependency: transitive
description:
name: fake_async
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc"
url: "https://pub.dev"
source: hosted
version: "1.3.1"
version: "1.3.2"
ffi:
dependency: "direct main"
description:
@ -405,18 +405,18 @@ packages:
dependency: transitive
description:
name: leak_tracker
sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec
url: "https://pub.dev"
source: hosted
version: "10.0.7"
version: "10.0.8"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573
url: "https://pub.dev"
source: hosted
version: "3.0.8"
version: "3.0.9"
leak_tracker_testing:
dependency: transitive
description:
@ -437,10 +437,10 @@ packages:
dependency: transitive
description:
name: matcher
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
url: "https://pub.dev"
source: hosted
version: "0.12.16+1"
version: "0.12.17"
material_color_utilities:
dependency: transitive
description:
@ -453,10 +453,10 @@ packages:
dependency: transitive
description:
name: meta
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
url: "https://pub.dev"
source: hosted
version: "1.15.0"
version: "1.16.0"
mime:
dependency: transitive
description:
@ -485,8 +485,8 @@ packages:
dependency: "direct main"
description:
path: "impls/monero.dart"
ref: b335585a7fb94b315eb52bd88f2da6d3489fa508
resolved-ref: b335585a7fb94b315eb52bd88f2da6d3489fa508
ref: "4868eb9220962a4176a7ed0fc7c809c6200e71a0"
resolved-ref: "4868eb9220962a4176a7ed0fc7c809c6200e71a0"
url: "https://github.com/mrcyjanek/monero_c"
source: git
version: "0.0.0"
@ -519,10 +519,10 @@ packages:
dependency: transitive
description:
name: path
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
url: "https://pub.dev"
source: hosted
version: "1.9.0"
version: "1.9.1"
path_provider:
dependency: "direct main"
description:
@ -692,26 +692,26 @@ packages:
dependency: transitive
description:
name: source_span
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c"
url: "https://pub.dev"
source: hosted
version: "1.10.0"
version: "1.10.1"
stack_trace:
dependency: transitive
description:
name: stack_trace
sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
url: "https://pub.dev"
source: hosted
version: "1.12.0"
version: "1.12.1"
stream_channel:
dependency: transitive
description:
name: stream_channel
sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
version: "2.1.4"
stream_transform:
dependency: transitive
description:
@ -724,26 +724,26 @@ packages:
dependency: transitive
description:
name: string_scanner
sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
url: "https://pub.dev"
source: hosted
version: "1.3.0"
version: "1.4.1"
term_glyph:
dependency: transitive
description:
name: term_glyph
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
url: "https://pub.dev"
source: hosted
version: "1.2.1"
version: "1.2.2"
test_api:
dependency: transitive
description:
name: test_api
sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd
url: "https://pub.dev"
source: hosted
version: "0.7.3"
version: "0.7.4"
timing:
dependency: transitive
description:
@ -788,10 +788,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14"
url: "https://pub.dev"
source: hosted
version: "14.3.0"
version: "14.3.1"
watcher:
dependency: "direct overridden"
description:
@ -841,5 +841,5 @@ packages:
source: hosted
version: "3.1.3"
sdks:
dart: ">=3.5.0 <4.0.0"
flutter: ">=3.27.4"
dart: ">=3.7.0-0 <4.0.0"
flutter: ">=3.24.0"

View file

@ -2,7 +2,6 @@ name: cw_zano
description: A new flutter plugin project.
version: 0.0.1
publish_to: none
author: Cake Wallet
homepage: https://cakewallet.com
environment:
@ -26,7 +25,7 @@ dependencies:
monero:
git:
url: https://github.com/mrcyjanek/monero_c
ref: b335585a7fb94b315eb52bd88f2da6d3489fa508 # monero_c hash
ref: a27fbcb24d91143715ed930a05aaa4d853fba1f2 # monero_c hash
path: impls/monero.dart
dev_dependencies:
flutter_test:

View file

@ -421,6 +421,7 @@ class CWMonero extends Monero {
moneroWallet.setLedgerConnection(connection);
}
@override
void resetLedgerConnection() {
disableLedgerExchange();
}
@ -428,9 +429,11 @@ class CWMonero extends Monero {
@override
void setGlobalLedgerConnection(ledger.LedgerConnection connection) {
gLedger = connection;
keepAlive(connection);
}
@override
String? getLastLedgerCommand() => latestLedgerCommand;
bool isViewOnly() {
return isViewOnlyBySpendKey(null);
}
@ -439,5 +442,4 @@ class CWMonero extends Monero {
Map<String, List<int>> debugCallLength() {
return monero_wallet_api.debugCallLength();
}
}

View file

@ -5,7 +5,9 @@ import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/src/screens/connect_device/widgets/device_tile.dart';
import 'package:cake_wallet/src/widgets/bottom_sheet/info_steps_bottom_sheet_widget.dart';
import 'package:cake_wallet/src/widgets/primary_button.dart';
import 'package:cake_wallet/themes/core/material_base_theme.dart';
import 'package:cake_wallet/utils/responsive_layout_util.dart';
import 'package:cake_wallet/view_model/hardware_wallet/ledger_view_model.dart';
import 'package:cw_core/utils/print_verbose.dart';
@ -60,6 +62,7 @@ class ConnectDevicePage extends BasePage {
onConnectDevice,
allowChangeWallet,
ledgerVM,
currentTheme,
));
}
@ -68,12 +71,14 @@ class ConnectDevicePageBody extends StatefulWidget {
final OnConnectDevice onConnectDevice;
final bool allowChangeWallet;
final LedgerViewModel ledgerVM;
final MaterialThemeBase currentTheme;
const ConnectDevicePageBody(
this.walletType,
this.onConnectDevice,
this.allowChangeWallet,
this.ledgerVM,
this.currentTheme,
);
@override
@ -179,11 +184,12 @@ class ConnectDevicePageBodyState extends State<ConnectDevicePageBody> {
@override
Widget build(BuildContext context) {
return Center(
child: Container(
return Container(
width: ResponsiveLayoutUtilBase.kDesktopMaxWidthConstraint,
height: double.infinity,
padding: EdgeInsets.symmetric(vertical: 24, horizontal: 24),
child: Column(
children: [
Expanded(
child: SingleChildScrollView(
child: Column(
children: [
@ -193,7 +199,8 @@ class ConnectDevicePageBodyState extends State<ConnectDevicePageBody> {
Platform.isIOS
? S.of(context).connect_your_hardware_wallet_ios
: S.of(context).connect_your_hardware_wallet,
style: Theme.of(context).textTheme.titleMedium,
style: Theme.of(context)
.textTheme.titleMedium,
textAlign: TextAlign.center,
),
),
@ -203,7 +210,8 @@ class ConnectDevicePageBodyState extends State<ConnectDevicePageBody> {
padding: EdgeInsets.only(left: 20, right: 20, bottom: 20),
child: Text(
S.of(context).if_you_dont_see_your_device,
style: Theme.of(context).textTheme.titleMedium,
style: Theme.of(context)
.textTheme.titleMedium,
textAlign: TextAlign.center,
),
),
@ -212,10 +220,12 @@ class ConnectDevicePageBodyState extends State<ConnectDevicePageBody> {
builder: (_) => Offstage(
offstage: widget.ledgerVM.bleIsEnabled,
child: Padding(
padding: EdgeInsets.only(left: 20, right: 20, bottom: 20),
padding:
EdgeInsets.only(left: 20, right: 20, bottom: 20),
child: Text(
S.of(context).ledger_please_enable_bluetooth,
style: Theme.of(context).textTheme.titleMedium,
style: Theme.of(context)
.textTheme.titleMedium,
textAlign: TextAlign.center,
),
),
@ -228,7 +238,8 @@ class ConnectDevicePageBodyState extends State<ConnectDevicePageBody> {
width: double.infinity,
child: Text(
S.of(context).bluetooth,
style: Theme.of(context).textTheme.bodyMedium,
style: Theme.of(context)
.textTheme.bodyMedium,
),
),
),
@ -253,7 +264,8 @@ class ConnectDevicePageBodyState extends State<ConnectDevicePageBody> {
width: double.infinity,
child: Text(
S.of(context).usb,
style: Theme.of(context).textTheme.bodyMedium,
style: Theme.of(context)
.textTheme.bodyMedium,
),
),
),
@ -274,8 +286,10 @@ class ConnectDevicePageBodyState extends State<ConnectDevicePageBody> {
if (widget.allowChangeWallet) ...[
PrimaryButton(
text: S.of(context).wallets,
color: Theme.of(context).colorScheme.primary,
textColor: Theme.of(context).colorScheme.onPrimary,
color: Theme.of(context)
.colorScheme.primary,
textColor: Theme.of(context)
.colorScheme.onPrimary,
onPressed: _onChangeWallet,
)
],
@ -283,6 +297,14 @@ class ConnectDevicePageBodyState extends State<ConnectDevicePageBody> {
),
),
),
PrimaryButton(
text: S.of(context).how_to_connect,
color: Theme.of(context).colorScheme.surfaceContainer,
textColor: Theme.of(context).colorScheme.onSecondaryContainer,
onPressed: () => _onHowToConnect(context),
)
],
),
);
}
@ -293,4 +315,21 @@ class ConnectDevicePageBodyState extends State<ConnectDevicePageBody> {
.pushNamedAndRemoveUntil(Routes.dashboard, (route) => false),
);
}
void _onHowToConnect(BuildContext context) {
showModalBottomSheet(
context: context,
isScrollControlled: true,
builder: (BuildContext bottomSheetContext) => InfoStepsBottomSheet(
titleText: S.of(context).how_to_connect,
currentTheme: widget.currentTheme,
steps: [
InfoStep('${S.of(context).step} 1', S.of(context).connect_hw_info_step_1),
InfoStep('${S.of(context).step} 2', S.of(context).connect_hw_info_step_2),
InfoStep('${S.of(context).step} 3', S.of(context).connect_hw_info_step_3),
InfoStep('${S.of(context).step} 4', S.of(context).connect_hw_info_step_4),
],
),
);
}
}

View file

@ -684,6 +684,21 @@ class SendPage extends BasePage {
});
}
if (state is IsDeviceSigningResponseState) {
WidgetsBinding.instance.addPostFrameCallback((_) {
if (!context.mounted) return;
showModalBottomSheet<void>(
context: context,
isDismissible: false,
builder: (context) {
dialogContext = context;
return LoadingBottomSheet(titleText: S.of(context).device_is_signing);
},
);
});
}
if (state is IsAwaitingDeviceResponseState) {
WidgetsBinding.instance.addPostFrameCallback((_) {
if (!context.mounted) return;
@ -691,21 +706,24 @@ class SendPage extends BasePage {
showModalBottomSheet<void>(
context: context,
isDismissible: false,
builder: (BuildContext bottomSheetContext) => InfoBottomSheet(
builder: (context) {
dialogContext = context;
return InfoBottomSheet(
currentTheme: currentTheme,
titleText: S.of(bottomSheetContext).proceed_on_device,
contentImage: 'assets/images/hardware_wallet/ledger_nano_x.png',
titleText: S.of(context).proceed_on_device,
contentImage:
'assets/images/hardware_wallet/ledger_nano_x.png',
contentImageColor: Theme.of(context).colorScheme.onSurface,
content: S.of(bottomSheetContext).proceed_on_device_description,
content: S.of(context).proceed_on_device_description,
isTwoAction: false,
actionButtonText: S.of(context).cancel,
actionButton: () {
sendViewModel.state = InitialExecutionState();
Navigator.of(bottomSheetContext).pop();
Navigator.of(context).pop();
},
),
);
});
});
}
});

View file

@ -0,0 +1,114 @@
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/src/widgets/primary_button.dart';
import 'package:cake_wallet/themes/core/material_base_theme.dart';
import 'package:flutter/material.dart';
import 'base_bottom_sheet_widget.dart';
class InfoStep {
final String title;
final String description;
const InfoStep(this.title, this.description);
}
class InfoStepsBottomSheet extends BaseBottomSheet {
final MaterialThemeBase currentTheme;
final List<InfoStep> steps;
InfoStepsBottomSheet({
required String titleText,
required this.steps,
String? titleIconPath,
required this.currentTheme,
}) : super(titleText: titleText, titleIconPath: titleIconPath);
@override
Widget contentWidget(BuildContext context) => SizedBox(
height: 500,
child: Column(
children: [
Expanded(
child: SingleChildScrollView(
child: Column(
children: steps
.map((step) => Container(
margin: EdgeInsets.only(
bottom: 15, left: 20, right: 20),
padding: EdgeInsets.all(10),
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Theme.of(context).cardColor,
),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Expanded(
child: Padding(
padding: EdgeInsets.only(left: 16),
child: Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
Text(
step.title,
style: Theme.of(context)
.textTheme
.bodyMedium!
.copyWith(
fontSize: 20,
fontWeight: FontWeight.w500,
color: Theme.of(context)
.colorScheme
.onSurface,
),
),
Padding(
padding: EdgeInsets.only(top: 5),
child: Text(
step.description,
style: Theme.of(context)
.textTheme
.bodyMedium!
.copyWith(
color: Theme.of(context)
.colorScheme
.onSurfaceVariant,
),
),
)
],
),
),
)
],
),
))
.toList(),
),
),
),
Padding(
padding: const EdgeInsets.all(16),
child: PrimaryButton(
text: S.of(context).close,
color: Theme.of(context).colorScheme.primary,
textColor: currentTheme.isDark
? Theme.of(context).colorScheme.onSurfaceVariant
: Theme.of(context).colorScheme.onPrimary,
onPressed: () => Navigator.of(context).pop(),
),
)
],
),
);
@override
Widget footerWidget(BuildContext context) => SizedBox.shrink();
}

View file

@ -15,8 +15,8 @@ import 'package:cake_wallet/entities/contact_record.dart';
import 'package:cake_wallet/entities/evm_transaction_error_fees_handler.dart';
import 'package:cake_wallet/entities/fiat_currency.dart';
import 'package:cake_wallet/entities/parsed_address.dart';
import 'package:cake_wallet/entities/template.dart';
import 'package:cake_wallet/entities/preferences_key.dart';
import 'package:cake_wallet/entities/template.dart';
import 'package:cake_wallet/entities/transaction_description.dart';
import 'package:cake_wallet/entities/wallet_contact.dart';
import 'package:cake_wallet/ethereum/ethereum.dart';
@ -293,19 +293,18 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor
.toList();
@computed
bool get hasCoinControl =>
wallet.type == WalletType.bitcoin ||
wallet.type == WalletType.litecoin ||
wallet.type == WalletType.monero ||
wallet.type == WalletType.wownero ||
wallet.type == WalletType.decred ||
wallet.type == WalletType.bitcoinCash;
bool get hasCoinControl => [
WalletType.bitcoin,
WalletType.litecoin,
WalletType.monero,
WalletType.wownero,
WalletType.decred,
WalletType.bitcoinCash
].contains(wallet.type);
@computed
bool get isElectrumWallet =>
wallet.type == WalletType.bitcoin ||
wallet.type == WalletType.litecoin ||
wallet.type == WalletType.bitcoinCash;
[WalletType.bitcoin, WalletType.litecoin, WalletType.bitcoinCash].contains(wallet.type);
@observable
CryptoCurrency selectedCryptoCurrency;
@ -444,12 +443,23 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor
}
}
Timer? _ledgerTxStateTimer;
@action
Future<PendingTransaction?> createTransaction({ExchangeProvider? provider}) async {
try {
if (!(state is IsExecutingState)) state = IsExecutingState();
if (wallet.isHardwareWallet) state = IsAwaitingDeviceResponseState();
if (wallet.isHardwareWallet) {
state = IsAwaitingDeviceResponseState();
if (walletType == WalletType.monero)
_ledgerTxStateTimer = Timer.periodic(Duration(seconds: 1), (timer) {
if (monero!.getLastLedgerCommand() == "INS_CLSAG") {
timer.cancel();
state = IsDeviceSigningResponseState();
}
});
}
pendingTransaction = await wallet.createTransaction(_credentials(provider));
@ -475,6 +485,7 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor
state = ExecutedSuccessfullyState();
return pendingTransaction;
} catch (e) {
_ledgerTxStateTimer?.cancel();
// if (e is LedgerException) {
// final errorCode = e.errorCode.toRadixString(16);
// final fallbackMsg =
@ -592,7 +603,8 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor
));
}
final sharedPreferences = await SharedPreferences.getInstance();
await sharedPreferences.setString(PreferencesKey.backgroundSyncLastTrigger(wallet.name), DateTime.now().add(Duration(minutes: 1)).toIso8601String());
await sharedPreferences.setString(PreferencesKey.backgroundSyncLastTrigger(wallet.name),
DateTime.now().add(Duration(minutes: 1)).toIso8601String());
state = TransactionCommitted();
} catch (e) {
state = FailureState(translateErrorMessage(e, wallet.type, wallet.currency));

View file

@ -1,5 +1,6 @@
import 'package:cake_wallet/core/execution_state.dart';
class IsDeviceSigningResponseState extends IsExecutingState {}
class IsAwaitingDeviceResponseState extends IsExecutingState {}
class TransactionCommitting extends ExecutionState {}
class TransactionCommitted extends ExecutionState {}

View file

@ -181,6 +181,10 @@
"confirmed_tx": "مؤكد",
"congratulations": "تهانينا!",
"connect_an_existing_yat": "توصيل Yat الحالي",
"connect_hw_info_step_1": "تأكد من تشغيل جهازك.",
"connect_hw_info_step_2": "قم بتشغيل Bluetooth لكل من الجهازين وإقرانها من الهاتف ، أو قم بتوصيل أجهزتك معًا باستخدام كبل USB.",
"connect_hw_info_step_3": "افتح جهازك وانتقل إلى تطبيق التشفير المطلوب.",
"connect_hw_info_step_4": "حدد جهازك في محفظة كعكة ومتابعة الإعداد.",
"connect_yats": "توصيل Yats",
"connect_your_hardware_wallet": "قم بتوصيل محفظة الأجهزة الخاصة بك باستخدام Bluetooth أو USB",
"connect_your_hardware_wallet_ios": "قم بتوصيل محفظة الأجهزة الخاصة بك باستخدام Bluetooth",
@ -240,6 +244,7 @@
"descending": "النزول",
"description": "ﻒﺻﻭ",
"destination_tag": "علامة الوجهة:",
"device_is_signing": "الجهاز يوقع",
"dfx_option_description": "شراء التشفير مع EUR & CHF. لعملاء البيع بالتجزئة والشركات في أوروبا",
"didnt_get_code": "لم تحصل على رمز؟",
"digit_pin": "-رقم PIN",
@ -394,6 +399,7 @@
"hide_details": "أخف التفاصيل",
"high_contrast_theme": "موضوع عالي التباين",
"home_screen_settings": "إعدادات الشاشة الرئيسية",
"how_to_connect": "كيفية الاتصال",
"how_to_use": " ﻞﻤﻌﺘﺴﺗ ﻒﻴﻛ",
"how_to_use_card": "كيفية استخدام هذه البطاقة",
"id": "رقم المعرف:",
@ -842,6 +848,7 @@
"spend_key_private": "مفتاح الإنفاق (خاص)",
"spend_key_public": "مفتاح الإنفاق (عام)",
"status": "الحالة:",
"step": "خطوة",
"string_default": "تقصير",
"subaddress_title": "قائمة العناوين الفرعية",
"subaddresses": "العناوين الفرعية",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "Потвърдено",
"congratulations": "Поздравления!",
"connect_an_existing_yat": "Добавете съществуващ Yat",
"connect_hw_info_step_1": "Уверете се, че вашето устройство е включено.",
"connect_hw_info_step_2": "Включете Bluetooth както за устройства, така и за тях от телефона или свържете устройствата си заедно с USB кабел.",
"connect_hw_info_step_3": "Отключете устройството си и отворете желаното приложение за криптовалута.",
"connect_hw_info_step_4": "Изберете вашето устройство в портфейла за торта и продължете с настройката.",
"connect_yats": "Добавете Yats",
"connect_your_hardware_wallet": "Свържете хардуерния си портфейл с помощта на Bluetooth или USB",
"connect_your_hardware_wallet_ios": "Свържете хардуерния си портфейл с помощта на Bluetooth",
@ -240,6 +244,7 @@
"descending": "Низходящ",
"description": "Описание",
"destination_tag": "Destination tag:",
"device_is_signing": "Устройството подписва",
"dfx_option_description": "Купете криптовалута с Eur & CHF. За търговски и корпоративни клиенти в Европа",
"didnt_get_code": "Не получихте код?",
"digit_pin": "-цифрен PIN",
@ -394,6 +399,7 @@
"hide_details": "Скриване на подробностите",
"high_contrast_theme": "Тема с висок контраст",
"home_screen_settings": "Настройки на началния екран",
"how_to_connect": "Как да се свържа",
"how_to_use": "Как да използвам",
"how_to_use_card": "Как се ползва тази карта",
"id": "ID: ",
@ -842,6 +848,7 @@
"spend_key_private": "Spend key (таен)",
"spend_key_public": "Spend key (публичен)",
"status": "Статус: ",
"step": "Стъпка",
"string_default": "По подразбиране",
"subaddress_title": "Лист от подадреси",
"subaddresses": "Подадреси",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "Potvrzeno",
"congratulations": "Gratulujeme!",
"connect_an_existing_yat": "Připojit existující Yat",
"connect_hw_info_step_1": "Ujistěte se, že je vaše zařízení zapnuté.",
"connect_hw_info_step_2": "Zapněte Bluetooth pro obě zařízení a spárujte je z telefonu nebo připojte zařízení pomocí kabelu USB.",
"connect_hw_info_step_3": "Odemkněte zařízení a přejděte na požadovanou aplikaci Crypto.",
"connect_hw_info_step_4": "Vyberte zařízení v peněžence dortu a pokračujte v nastavení.",
"connect_yats": "Připojit Yaty",
"connect_your_hardware_wallet": "Připojte hardwarovou peněženku pomocí Bluetooth nebo USB",
"connect_your_hardware_wallet_ios": "Připojte hardwarovou peněženku pomocí Bluetooth",
@ -240,6 +244,7 @@
"descending": "Klesající",
"description": "Popis",
"destination_tag": "Destination Tag:",
"device_is_signing": "Zařízení se podpisu",
"dfx_option_description": "Koupit krypto s EUR & CHF. Pro maloobchodní a firemní zákazníky v Evropě",
"didnt_get_code": "Nepřišel Vám kód?",
"digit_pin": "-číselný PIN",
@ -394,6 +399,7 @@
"hide_details": "Skrýt detaily",
"high_contrast_theme": "Téma s vysokým kontrastem",
"home_screen_settings": "Nastavení domovské obrazovky",
"how_to_connect": "Jak se připojit",
"how_to_use": "Jak používat",
"how_to_use_card": "Jak použít tuto kartu",
"id": "ID: ",
@ -842,6 +848,7 @@
"spend_key_private": "Klíč pro platby (soukromý)",
"spend_key_public": "Klíč pro platby (veřejný)",
"status": "Status: ",
"step": "Krok",
"string_default": "Výchozí",
"subaddress_title": "Seznam subadres",
"subaddresses": "Subadresy",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "Bestätigt",
"congratulations": "Glückwunsch!",
"connect_an_existing_yat": "Verbinden Sie ein vorhandenes Yat",
"connect_hw_info_step_1": "Stellen Sie sicher, dass Ihr Gerät eingeschaltet ist.",
"connect_hw_info_step_2": "Schalten Sie Bluetooth für beide Geräte ein oder schließen Sie Ihre Geräte mit einem USB-Kabel an.",
"connect_hw_info_step_3": "Entsperren Sie Ihr Gerät und navigieren Sie zur gewünschten Krypto-App auf ihrem Gerät.",
"connect_hw_info_step_4": "Wählen Sie Ihr Gerät in Cake Wallet aus und fahren Sie mit dem Setup fort.",
"connect_yats": "Yats verbinden",
"connect_your_hardware_wallet": "Verbinden Sie Ihre Hardware-Wallet über Bluetooth oder USB",
"connect_your_hardware_wallet_ios": "Verbinden Sie Ihre Hardware-Wallet über Bluetooth",
@ -240,6 +244,7 @@
"descending": "Absteigend",
"description": "Beschreibung",
"destination_tag": "Ziel-Tag:",
"device_is_signing": "Das Gerät unterschreibt",
"dfx_option_description": "Kaufen Sie Krypto mit EUR & CHF. Für Einzelhandel und Unternehmenskunden in Europa",
"didnt_get_code": "Kein Code?",
"digit_pin": "-stellige PIN",
@ -394,6 +399,7 @@
"hide_details": "Details ausblenden",
"high_contrast_theme": "Kontrastreiches Thema",
"home_screen_settings": "Einstellungen für den Startbildschirm",
"how_to_connect": "Anleitung",
"how_to_use": "Wie benutzt man",
"how_to_use_card": "Wie man diese Karte benutzt",
"id": "ID: ",
@ -584,7 +590,7 @@
"potential_scam": "Potenzieller Betrug",
"powered_by": "Ermöglicht durch ${title}",
"pre_seed_button_text": "Verstanden. Zeig mir meinen Seed",
"pre_seed_description": "Auf der nächsten Seite sehen Sie eine Reihe von Wörtern. Dies ist Ihr einzigartiger und privater Samen und der einzige Weg, Ihre Brieftasche im Falle eines Verlusts oder einer Fehlfunktion zurückzugewinnen. Es liegt in Ihrer Verantwortung, es aufzuschreiben und an einem sicheren Ort außerhalb der Cake Wallet -App aufzubewahren.",
"pre_seed_description": "Auf der nächsten Seite sehen Sie eine Reihe von Wörtern. Dies ist Ihr einzigartiger und privater Seed und der einzige Weg, Ihre Brieftasche im Falle eines Verlusts oder einer Fehlfunktion zurückzugewinnen. Es liegt in Ihrer Verantwortung, es aufzuschreiben und an einem sicheren Ort außerhalb der Cake Wallet -App aufzubewahren.",
"pre_seed_title": "WICHTIG",
"prepaid_cards": "Karten mit Guthaben",
"prevent_screenshots": "Verhindern Sie Screenshots und Bildschirmaufzeichnungen",
@ -843,6 +849,7 @@
"spend_key_private": "Spend Key (geheim)",
"spend_key_public": "Spend Key (öffentlich)",
"status": "Status: ",
"step": "Schritt",
"string_default": "Standard",
"subaddress_title": "Unteradressenliste",
"subaddresses": "Unteradressen",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "Confirmed",
"congratulations": "Congratulations!",
"connect_an_existing_yat": "Connect an existing Yat",
"connect_hw_info_step_1": "Make sure your device is powered ON.",
"connect_hw_info_step_2": "Turn Bluetooth on for both devices and pair them from the phone, OR connect your devices together using a USB cable.",
"connect_hw_info_step_3": "Unlock your device and navigate to the desired crypto app.",
"connect_hw_info_step_4": "Select your device in Cake Wallet and continue with the setup.",
"connect_yats": "Connect Yats",
"connect_your_hardware_wallet": "Connect your hardware wallet using Bluetooth or USB",
"connect_your_hardware_wallet_ios": "Connect your hardware wallet using Bluetooth",
@ -240,6 +244,7 @@
"descending": "Descending",
"description": "Description",
"destination_tag": "Destination tag:",
"device_is_signing": "Device is signing",
"dfx_option_description": "Buy crypto with EUR & CHF. For retail and corporate customers in Europe",
"didnt_get_code": "Didn't get code?",
"digit_pin": "-digit PIN",
@ -394,6 +399,7 @@
"hide_details": "Hide Details",
"high_contrast_theme": "High Contrast Theme",
"home_screen_settings": "Home screen settings",
"how_to_connect": "How to Connect",
"how_to_use": "How to use",
"how_to_use_card": "How to use this card",
"id": "ID: ",
@ -843,6 +849,7 @@
"spend_key_private": "Spend key (private)",
"spend_key_public": "Spend key (public)",
"status": "Status: ",
"step": "Step",
"string_default": "Default",
"subaddress_title": "Subaddress list",
"subaddresses": "Subaddresses",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "Confirmado",
"congratulations": "Felicidades!",
"connect_an_existing_yat": "Conectar un Yat existente",
"connect_hw_info_step_1": "Asegúrese de que su dispositivo esté encendido.",
"connect_hw_info_step_2": "Encienda Bluetooth para ambos dispositivos y combínelos desde el teléfono o conecte sus dispositivos con un cable USB.",
"connect_hw_info_step_3": "Desbloquee su dispositivo y navegue a la aplicación de cifrado deseada.",
"connect_hw_info_step_4": "Seleccione su dispositivo en la billetera de pastel y continúe con la configuración.",
"connect_yats": "Conectar Yats",
"connect_your_hardware_wallet": "Conecta tu billetera de hardware con Bluetooth o USB",
"connect_your_hardware_wallet_ios": "Conecta tu billetera de hardware con Bluetooth",
@ -240,6 +244,7 @@
"descending": "Descendente",
"description": "Descripción",
"destination_tag": "Etiqueta de destino:",
"device_is_signing": "El dispositivo está firmando",
"dfx_option_description": "Compre cripto con EUR y CHF. Para clientes minoristas y corporativos en Europa",
"didnt_get_code": "¿No recibiste el código?",
"digit_pin": "-dígito PIN",
@ -394,6 +399,7 @@
"hide_details": "Ocultar detalles",
"high_contrast_theme": "Tema de alto contraste",
"home_screen_settings": "Configuración de la pantalla de inicio",
"how_to_connect": "Cómo conectarse",
"how_to_use": "Cómo utilizar",
"how_to_use_card": "Cómo usar esta tarjeta",
"id": "ID: ",
@ -843,6 +849,7 @@
"spend_key_private": "Llave de gasto (privada)",
"spend_key_public": "Llave de gasto (pública)",
"status": "Estado: ",
"step": "Paso",
"string_default": "Por defecto",
"subaddress_title": "Lista de subdirecciones",
"subaddresses": "Subdirecciones",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "Confirmé",
"congratulations": "Félicitations !",
"connect_an_existing_yat": "Connecter un Yat existant",
"connect_hw_info_step_1": "Assurez-vous que votre appareil est allumé.",
"connect_hw_info_step_2": "Allumez Bluetooth pour les deux appareils et associez-les à partir du téléphone, ou connectez vos appareils ensemble à l'aide d'un câble USB.",
"connect_hw_info_step_3": "Déverrouillez votre appareil et accédez à l'application Crypto souhaitée.",
"connect_hw_info_step_4": "Sélectionnez votre appareil dans le portefeuille de gâteaux et continuez avec la configuration.",
"connect_yats": "Connecter Yats",
"connect_your_hardware_wallet": "Connectez votre portefeuille matériel à l'aide de Bluetooth ou USB",
"connect_your_hardware_wallet_ios": "Connectez votre portefeuille matériel à l'aide de Bluetooth",
@ -240,6 +244,7 @@
"descending": "Descendant",
"description": "Description",
"destination_tag": "Tag de destination :",
"device_is_signing": "L'appareil signale",
"dfx_option_description": "Achetez de la crypto avec EUR & CHF. Pour les clients de la vente au détail et des entreprises en Europe",
"didnt_get_code": "Vous n'avez pas reçu le code ?",
"digit_pin": " chiffres",
@ -394,6 +399,7 @@
"hide_details": "Masquer les détails",
"high_contrast_theme": "Thème à contraste élevé",
"home_screen_settings": "Paramètres de l'écran d'accueil",
"how_to_connect": "Comment se connecter",
"how_to_use": "Comment utiliser",
"how_to_use_card": "Comment utiliser cette carte",
"id": "ID : ",
@ -842,6 +848,7 @@
"spend_key_private": "Clef de dépense (spend key) (privée)",
"spend_key_public": "Clef de dépense (spend key) (publique)",
"status": "Statut: ",
"step": "Étape",
"string_default": "Défaut",
"subaddress_title": "Liste des sous-adresses",
"subaddresses": "Sous-adresses",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "Tabbatar",
"congratulations": "Taya murna!",
"connect_an_existing_yat": "Haɗa Yat da ke akwai",
"connect_hw_info_step_1": "Tabbatar cewa na'urarka tana da iko.",
"connect_hw_info_step_2": "Juya Bluetooth akan na'urorin biyu da kuma haɗa su daga wayar, ko haɗa na'urorinku tare ta amfani da kebul na USB.",
"connect_hw_info_step_3": "Buɗe na'urarka kuma kewaya cikin app ɗin da ake so.",
"connect_hw_info_step_4": "Zaɓi na'urarka a cikin walat walat kuma ci gaba da saiti.",
"connect_yats": "Haɗa Yats",
"connect_your_hardware_wallet": "Haɗa Wallake Wallware ɗinku ta Bluetooth ko USB",
"connect_your_hardware_wallet_ios": "Haɗa kayan aikinku ta Bluetooth",
@ -240,6 +244,7 @@
"descending": "Saukowa",
"description": "Bayani",
"destination_tag": "Tambarin makoma:",
"device_is_signing": "Na'urar tana shiga",
"dfx_option_description": "Buy crypto tare da Eur & Chf. Don Retail da abokan ciniki na kamfanoni a Turai",
"didnt_get_code": "Ba a samun code?",
"digit_pin": "-lambar PIN",
@ -394,6 +399,7 @@
"hide_details": "Ɓoye cikakkun bayanai",
"high_contrast_theme": "Babban Jigon Kwatance",
"home_screen_settings": "Saitunan allo na gida",
"how_to_connect": "Yadda ake haɗa",
"how_to_use": "Yadda ake amfani da shi",
"how_to_use_card": "Yadda ake amfani da wannan kati",
"id": "ID:",
@ -844,6 +850,7 @@
"spend_key_private": "makullin biya (maɓallin kalmar sirri)",
"spend_key_public": "makullin biya (maɓallin jama'a)",
"status": "Matsayi:",
"step": "Taka",
"string_default": "Ƙin cika alƙawari",
"subaddress_title": "Jagorar subaddress",
"subaddresses": "Subaddresses",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "की पुष्टि",
"congratulations": "बधाई!",
"connect_an_existing_yat": "मौजूदा Yat कनेक्ट करें",
"connect_hw_info_step_1": "सुनिश्चित करें कि आपका डिवाइस चालू है।",
"connect_hw_info_step_2": "दोनों उपकरणों के लिए ब्लूटूथ चालू करें और उन्हें फोन से पेयर करें, या एक USB केबल का उपयोग करके अपने डिवाइस को एक साथ कनेक्ट करें।",
"connect_hw_info_step_3": "अपने डिवाइस को अनलॉक करें और वांछित क्रिप्टो ऐप पर नेविगेट करें।",
"connect_hw_info_step_4": "केक वॉलेट में अपने डिवाइस का चयन करें और सेटअप के साथ जारी रखें।",
"connect_yats": "कनेक्ट Yats",
"connect_your_hardware_wallet": "ब्लूटूथ या यूएसबी का उपयोग करके अपने हार्डवेयर वॉलेट को कनेक्ट करें",
"connect_your_hardware_wallet_ios": "ब्लूटूथ का उपयोग करके अपने हार्डवेयर वॉलेट को कनेक्ट करें",
@ -240,6 +244,7 @@
"descending": "अवरोही",
"description": "विवरण",
"destination_tag": "गंतव्य टैग:",
"device_is_signing": "उपकरण हस्ताक्षर कर रहा है",
"dfx_option_description": "EUR और CHF के साथ क्रिप्टो खरीदें। यूरोप में खुदरा और कॉर्पोरेट ग्राहकों के लिए",
"didnt_get_code": "कोड नहीं मिला?",
"digit_pin": "-अंक पिन",
@ -394,6 +399,7 @@
"hide_details": "विवरण छुपाएं",
"high_contrast_theme": "उच्च कंट्रास्ट थीम",
"home_screen_settings": "होम स्क्रीन सेटिंग्स",
"how_to_connect": "कनेक्ट कैसे करें",
"how_to_use": "का उपयोग कैसे करें",
"how_to_use_card": "इस कार्ड का उपयोग कैसे करें",
"id": "ID: ",
@ -844,6 +850,7 @@
"spend_key_private": "खर्च करना (निजी)",
"spend_key_public": "खर्च करना (जनता)",
"status": "स्थिति: ",
"step": "कदम",
"string_default": "गलती करना",
"subaddress_title": "उपखंड सूची",
"subaddresses": "उप पते",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "Potvrđen",
"congratulations": "Čestitamo!",
"connect_an_existing_yat": "Povežite postojeći Yat",
"connect_hw_info_step_1": "Provjerite je li vaš uređaj uključen.",
"connect_hw_info_step_2": "Uključite Bluetooth za oba uređaja i uparite ih s telefona ili spojite svoje uređaje zajedno pomoću USB kabela.",
"connect_hw_info_step_3": "Otključajte svoj uređaj i idite do željene kripto aplikacije.",
"connect_hw_info_step_4": "Odaberite svoj uređaj u novčanici za torte i nastavite s postavljanjem.",
"connect_yats": "Povežite Yats",
"connect_your_hardware_wallet": "Spojite svoj hardverski novčanik pomoću Bluetooth -a ili USB -a",
"connect_your_hardware_wallet_ios": "Spojite svoj hardverski novčanik pomoću Bluetooth -a",
@ -240,6 +244,7 @@
"descending": "Silazni",
"description": "Opis",
"destination_tag": "Odredišna oznaka:",
"device_is_signing": "Uređaj se potpisuje",
"dfx_option_description": "Kupite kriptovalute s Eur & CHF. Za maloprodajne i korporativne kupce u Europi",
"didnt_get_code": "Ne dobivate kod?",
"digit_pin": "-znamenkasti PIN",
@ -394,6 +399,7 @@
"hide_details": "Sakrij pojedinosti",
"high_contrast_theme": "Tema visokog kontrasta",
"home_screen_settings": "Postavke početnog zaslona",
"how_to_connect": "Kako se povezati",
"how_to_use": "Kako koristiti",
"how_to_use_card": "Kako koristiti ovu karticu",
"id": "ID: ",
@ -842,6 +848,7 @@
"spend_key_private": "Spend key (privatni)",
"spend_key_public": "Spend key (javni)",
"status": "Status: ",
"step": "Korak",
"string_default": "Zadano",
"subaddress_title": "Lista podadresa",
"subaddresses": "Podadrese",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "Հաստատված",
"congratulations": "Շնորհավորանք!",
"connect_an_existing_yat": "Միացրեք գոյություն ունեցող Yat-ը",
"connect_hw_info_step_1": "Համոզվեք, որ ձեր սարքը միացված է:",
"connect_hw_info_step_2": "Միացրեք Bluetooth- ը երկու սարքերի համար, եւ զույգացրեք հեռախոսից կամ միացրեք ձեր սարքերը միասին `օգտագործելով USB մալուխ:",
"connect_hw_info_step_3": "Բացեք ձեր սարքը եւ նավարկեք ցանկալի ծպտյալ հավելվածին:",
"connect_hw_info_step_4": "Ընտրեք ձեր սարքը տորթի դրամապանակում եւ շարունակեք կարգաբերումը:",
"connect_yats": "Միացրեք Yat-ները",
"connect_your_hardware_wallet": "Միացրեք ձեր ապարատային դրամապանակը Bluetooth-ի կամ USB-ի միջոցով",
"connect_your_hardware_wallet_ios": "Միացրեք ձեր ապարատային դրամապանակը Bluetooth-ի միջոցով",
@ -240,6 +244,7 @@
"descending": "Նվազող",
"description": "Նկարագրություն",
"destination_tag": "Նպատակակետի պիտակ:",
"device_is_signing": "Սարքը ստորագրում է",
"dfx_option_description": "Գնեք կրիպտոարժույթ EUR և CHF: Կորպորատիվ և մանրածախ հաճախորդների համար Եվրոպայում",
"didnt_get_code": "Չեք ստացել կոդը?",
"digit_pin": "-նիշ ՊԻՆ",
@ -394,6 +399,7 @@
"hide_details": "Թաքցնել մանրամասները",
"high_contrast_theme": "Բարձր հակադրության տեսք",
"home_screen_settings": "Գլխավոր էկրանի կարգավորումներ",
"how_to_connect": "Ինչպես միացնել",
"how_to_use": "Ինչպես օգտագործել",
"how_to_use_card": "Ինչպես օգտագործել այս քարտը",
"id": "ID: ",
@ -840,6 +846,7 @@
"spend_key_private": "Վճարման բանալի (գախտնի)",
"spend_key_public": "Վճարման բանալի (հանրային)",
"status": "Կարգավիճակ՝ ",
"step": "Քայլ",
"string_default": "Լռելայն",
"subaddress_title": "Ենթահասցեների ցանկ",
"subaddresses": "Ենթահասցեներ",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "Dikonfirmasi",
"congratulations": "Selamat!",
"connect_an_existing_yat": "Hubungkan Yat yang ada",
"connect_hw_info_step_1": "Pastikan perangkat Anda didukung.",
"connect_hw_info_step_2": "Nyalakan Bluetooth untuk kedua perangkat dan pasangkan dari telepon, atau hubungkan perangkat Anda bersama -sama menggunakan kabel USB.",
"connect_hw_info_step_3": "Buka kunci perangkat Anda dan arahkan ke aplikasi crypto yang diinginkan.",
"connect_hw_info_step_4": "Pilih perangkat Anda di dompet kue dan lanjutkan dengan pengaturan.",
"connect_yats": "Hubungkan Yats",
"connect_your_hardware_wallet": "Hubungkan dompet perangkat keras Anda menggunakan Bluetooth atau USB",
"connect_your_hardware_wallet_ios": "Hubungkan dompet perangkat keras Anda menggunakan Bluetooth",
@ -240,6 +244,7 @@
"descending": "Menurun",
"description": "Keterangan",
"destination_tag": "Tag tujuan:",
"device_is_signing": "Perangkat sedang menandatangani",
"dfx_option_description": "Beli crypto dengan EUR & CHF. Untuk pelanggan ritel dan perusahaan di Eropa",
"didnt_get_code": "Tidak mendapatkan kode?",
"digit_pin": "-digit PIN",
@ -394,6 +399,7 @@
"hide_details": "Sembunyikan Rincian",
"high_contrast_theme": "Tema Kontras Tinggi",
"home_screen_settings": "Pengaturan layar awal",
"how_to_connect": "Cara terhubung",
"how_to_use": "Cara Penggunaan",
"how_to_use_card": "Bagaimana menggunakan kartu ini",
"id": "ID: ",
@ -845,6 +851,7 @@
"spend_key_private": "Kunci pengeluaran (privat)",
"spend_key_public": "Kunci pengeluaran (publik)",
"status": "Status: ",
"step": "Melangkah",
"string_default": "Bawaan",
"subaddress_title": "Daftar sub-alamat",
"subaddresses": "Sub-alamat",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "Confermato",
"congratulations": "Congratulazioni!",
"connect_an_existing_yat": "Collegare un Yat esistente",
"connect_hw_info_step_1": "Assicurati che il tuo dispositivo sia acceso.",
"connect_hw_info_step_2": "Accendi Bluetooth per entrambi i dispositivi e abbinali dal telefono o collega i dispositivi utilizzando un cavo USB.",
"connect_hw_info_step_3": "Sblocca il dispositivo e naviga nell'app crittografica desiderata.",
"connect_hw_info_step_4": "Seleziona il tuo dispositivo nel portafoglio Cake e continua con l'installazione.",
"connect_yats": "Connetti Yats",
"connect_your_hardware_wallet": "Collega il tuo portafoglio hardware tramite Bluetooth o USB",
"connect_your_hardware_wallet_ios": "Collega il tuo portafoglio hardware tramite Bluetooth",
@ -240,6 +244,7 @@
"descending": "Discendente",
"description": "Descrizione",
"destination_tag": "Tag destinazione:",
"device_is_signing": "Il dispositivo sta firmando",
"dfx_option_description": "Acquista Crypto con EUR & CHF. Per i clienti al dettaglio e aziendali in Europa",
"didnt_get_code": "Non hai ricevuto il codice?",
"digit_pin": "-cifre PIN",
@ -394,6 +399,7 @@
"hide_details": "Nascondi dettagli",
"high_contrast_theme": "Tema ad alto contrasto",
"home_screen_settings": "Impostazioni della schermata iniziale",
"how_to_connect": "Come connettersi",
"how_to_use": "Come usare",
"how_to_use_card": "Come usare questa carta",
"id": "ID: ",
@ -843,6 +849,7 @@
"spend_key_private": "Chiave di spesa (privata)",
"spend_key_public": "Chiave di spesa (pubblica)",
"status": "Stato: ",
"step": "Fare un passo",
"string_default": "Predefinito",
"subaddress_title": "Lista sottoindirizzi",
"subaddresses": "Sottoindirizzi",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "確認済み",
"congratulations": "おめでとうございます!",
"connect_an_existing_yat": "既存のYatを接続します",
"connect_hw_info_step_1": "デバイスが電源を入れていることを確認してください。",
"connect_hw_info_step_2": "両方のデバイスのBluetoothをオンにして電話からペアリングするか、USBケーブルを使用してデバイスを一緒に接続します。",
"connect_hw_info_step_3": "デバイスのロックを解除し、目的のCryptoアプリに移動します。",
"connect_hw_info_step_4": "ケーキウォレットでデバイスを選択し、セットアップを続行します。",
"connect_yats": "Yatsを接続します",
"connect_your_hardware_wallet": "BluetoothまたはUSBを使用して、ハードウェアウォレットを接続します",
"connect_your_hardware_wallet_ios": "Bluetoothを使用してハードウェアウォレットを接続します",
@ -240,6 +244,7 @@
"descending": "下降",
"description": "説明",
"destination_tag": "宛先タグ:",
"device_is_signing": "デバイスが署名しています",
"dfx_option_description": "EURCHFで暗号を購入します。ヨーロッパの小売および企業の顧客向け",
"didnt_get_code": "コードを取得しませんか?",
"digit_pin": "桁ピン",
@ -395,6 +400,7 @@
"hide_details": "詳細を非表示",
"high_contrast_theme": "ハイコントラストテーマ",
"home_screen_settings": "ホーム画面の設定",
"how_to_connect": "接続方法",
"how_to_use": "使い方",
"how_to_use_card": "このカードの使用方法",
"id": "ID: ",
@ -843,6 +849,7 @@
"spend_key_private": "キーを使う (プライベート)",
"spend_key_public": "キーを使う (パブリック)",
"status": "状態: ",
"step": "ステップ",
"string_default": "デフォルト",
"subaddress_title": "サブアドレス一覧",
"subaddresses": "サブアドレス",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "확정됨",
"congratulations": "축하합니다!",
"connect_an_existing_yat": "기존 Yat 연결",
"connect_hw_info_step_1": "장치의 전원이 켜져 있는지 확인하십시오.",
"connect_hw_info_step_2": "두 장치 모두에 Bluetooth를 켜고 전화에서 페어링하거나 USB 케이블을 사용하여 장치를 함께 연결하십시오.",
"connect_hw_info_step_3": "장치를 잠금 해제하고 원하는 암호화 앱으로 이동하십시오.",
"connect_hw_info_step_4": "케이크 지갑에서 장치를 선택하고 설정을 계속하십시오.",
"connect_yats": "Yat 연결",
"connect_your_hardware_wallet": "블루투스 또는 USB를 사용하여 하드웨어 지갑 연결",
"connect_your_hardware_wallet_ios": "블루투스를 사용하여 하드웨어 지갑 연결",
@ -240,6 +244,7 @@
"descending": "내림차순",
"description": "설명",
"destination_tag": "목적지 태그:",
"device_is_signing": "장치가 서명 중입니다",
"dfx_option_description": "EUR 및 CHF로 암호화폐 구매. 유럽의 개인 및 기업 고객 대상",
"didnt_get_code": "코드를 받지 못했나요?",
"digit_pin": "자리 PIN",
@ -394,6 +399,7 @@
"hide_details": "세부 정보 숨기기",
"high_contrast_theme": "고대비 테마",
"home_screen_settings": "홈 화면 설정",
"how_to_connect": "연결 방법",
"how_to_use": "사용 방법",
"how_to_use_card": "이 카드 사용 방법",
"id": "ID: ",
@ -843,6 +849,7 @@
"spend_key_private": "지출 키 (개인)",
"spend_key_public": "지출 키 (공개)",
"status": "상태: ",
"step": "단계",
"string_default": "기본값",
"subaddress_title": "하위 주소 목록",
"subaddresses": "하위 주소",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "အတည်ပြုသည်",
"congratulations": "ဂုဏ်ယူပါသည်။",
"connect_an_existing_yat": "ရှိပြီးသား Yat ကို ချိတ်ဆက်ပါ။",
"connect_hw_info_step_1": "သင်၏ device ကိုသေချာအောင်လုပ်ပါ။",
"connect_hw_info_step_2": "ကိရိယာနှစ်ခုလုံးအတွက် Bluetooth ကိုဖွင့ ်. ဖုန်းမှတွဲပါ, သို့မဟုတ်သင်၏ကိရိယာများကို USB ကြိုးဖြင့်ချိတ်ဆက်ပါ။",
"connect_hw_info_step_3": "သင်၏ device ကိုသော့ဖွင့်ပြီးလိုချင်သော crypto app သို့သွားပါ။",
"connect_hw_info_step_4": "Cake Wallet တွင်သင်၏ device ကိုရွေးချယ်ပြီး setup ကိုဆက်လုပ်ပါ။",
"connect_yats": "Yats ကိုချိတ်ဆက်ပါ။",
"connect_your_hardware_wallet": "သင်၏ hardware ပိုက်ဆံအိတ်ကို Bluetooth သို့မဟုတ် USB ကို သုံး. ချိတ်ဆက်ပါ",
"connect_your_hardware_wallet_ios": "သင်၏ hardware ပိုက်ဆံအိတ်ကို Bluetooth ကို အသုံးပြု. ချိတ်ဆက်ပါ",
@ -240,6 +244,7 @@
"descending": "ဆင်း",
"description": "ဖော်ပြချက်",
"destination_tag": "ခရီးဆုံးအမှတ်-",
"device_is_signing": "ကိရိယာလက်မှတ်ထိုးနေသည်",
"dfx_option_description": "Crypto ကို EUR & CHF ဖြင့် 0 ယ်ပါ။ လက်လီရောင်းဝယ်မှုနှင့်ဥရောပရှိကော်ပိုရိတ်ဖောက်သည်များအတွက်",
"didnt_get_code": "ကုဒ်ကို မရဘူးလား?",
"digit_pin": "-ဂဏန်း PIN",
@ -394,6 +399,7 @@
"hide_details": "အသေးစိတ်ကို ဝှက်ပါ။",
"high_contrast_theme": "အလင်းအမှောင် မြင့်မားသော အပြင်အဆင်",
"home_screen_settings": "ပင်မစခရင် ဆက်တင်များ",
"how_to_connect": "ဘယ်လိုချိတ်ဆက်ရမလဲ",
"how_to_use": "အသုံးပြုနည်း",
"how_to_use_card": "ဒီကတ်ကို ဘယ်လိုသုံးမလဲ။",
"id": "ID:",
@ -842,6 +848,7 @@
"spend_key_private": "သော့သုံးရန် (သီးသန့်)",
"spend_key_public": "သုံးစွဲရန်သော့ (အများပြည်သူ)",
"status": "အခြေအနေ:",
"step": "လှမ်း",
"string_default": "ပျက်ကွက်ခြင်း",
"subaddress_title": "လိပ်စာစာရင်း",
"subaddresses": "လိပ်စာများ",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "Bevestigd",
"congratulations": "gefeliciteerd!",
"connect_an_existing_yat": "Verbind een bestaande Yat",
"connect_hw_info_step_1": "Zorg ervoor dat uw apparaat is ingeschakeld.",
"connect_hw_info_step_2": "Zet Bluetooth aan voor beide apparaten en combineer ze van de telefoon, of sluit uw apparaten samen met een USB -kabel.",
"connect_hw_info_step_3": "Ontgrendel uw apparaat en navigeer naar de gewenste crypto -app.",
"connect_hw_info_step_4": "Selecteer uw apparaat in cake -portemonnee en ga verder met de opstelling.",
"connect_yats": "Verbind Yats",
"connect_your_hardware_wallet": "Sluit uw hardware -portemonnee aan met Bluetooth of USB",
"connect_your_hardware_wallet_ios": "Sluit uw hardware -portemonnee aan met Bluetooth",
@ -240,6 +244,7 @@
"descending": "Aflopend",
"description": "Beschrijving",
"destination_tag": "Bestemmingstag:",
"device_is_signing": "Apparaat ondertekent",
"dfx_option_description": "Koop crypto met EUR & CHF. Voor retail- en zakelijke klanten in Europa",
"didnt_get_code": "Geen code?",
"digit_pin": "-cijferige PIN",
@ -394,6 +399,7 @@
"hide_details": "Details verbergen",
"high_contrast_theme": "Thema met hoog contrast",
"home_screen_settings": "Instellingen voor het startscherm",
"how_to_connect": "Hoe verbinding te maken",
"how_to_use": "Hoe te gebruiken",
"how_to_use_card": "Hoe deze kaart te gebruiken",
"id": "ID: ",
@ -842,6 +848,7 @@
"spend_key_private": "Sleutel uitgeven (privaat)",
"spend_key_public": "Sleutel uitgeven (openbaar)",
"status": "Staat: ",
"step": "Stap",
"string_default": "Standaard",
"subaddress_title": "Subadreslijst",
"subaddresses": "Subadressen",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "Potwierdzony",
"congratulations": "gratulacje!",
"connect_an_existing_yat": "Podłącz istniejący Yat",
"connect_hw_info_step_1": "Upewnij się, że urządzenie jest włączone.",
"connect_hw_info_step_2": "Włącz Bluetooth dla obu urządzeń i sparuj je z telefonu lub podłącz urządzenia razem za pomocą kabla USB.",
"connect_hw_info_step_3": "Odblokuj urządzenie i przejdź do żądanej aplikacji Crypto.",
"connect_hw_info_step_4": "Wybierz urządzenie w portfelu ciasta i kontynuuj konfigurację.",
"connect_yats": "Połącz Yats",
"connect_your_hardware_wallet": "Podłącz portfel sprzętowy za pomocą Bluetooth lub USB",
"connect_your_hardware_wallet_ios": "Podłącz portfel sprzętowy za pomocą Bluetooth",
@ -240,6 +244,7 @@
"descending": "Malejąco",
"description": "Opis",
"destination_tag": "Tag docelowy:",
"device_is_signing": "Urządzenie podpisuje",
"dfx_option_description": "Kup krypto za EUR & CHF. Dla klientów prywatnych i korporacyjnych w Europie",
"didnt_get_code": "Nie dostałeś kodu?",
"digit_pin": "-znakowy PIN",
@ -394,6 +399,7 @@
"hide_details": "Ukryj szczegóły",
"high_contrast_theme": "Motyw o wysokim kontraście",
"home_screen_settings": "Ustawienia ekranu głównego",
"how_to_connect": "Jak połączyć się",
"how_to_use": "Jak używać",
"how_to_use_card": "Jak korzystać z tej karty?",
"id": "ID: ",
@ -842,6 +848,7 @@
"spend_key_private": "Klucz prywatny",
"spend_key_public": "Klucz publiczny",
"status": "Status: ",
"step": "Krok",
"string_default": "Domyślny",
"subaddress_title": "Lista podadresów",
"subaddresses": "Podadresy",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "Confirmado",
"congratulations": "Parabéns!",
"connect_an_existing_yat": "Conecte um Yat existente",
"connect_hw_info_step_1": "Verifique se o seu dispositivo está ligado.",
"connect_hw_info_step_2": "Ligue o Bluetooth para os dois dispositivos e emparelhe -os do telefone ou conecte seus dispositivos usando um cabo USB.",
"connect_hw_info_step_3": "Desbloqueie seu dispositivo e navegue até o aplicativo Crypto desejado.",
"connect_hw_info_step_4": "Selecione seu dispositivo na carteira de bolo e continue com a configuração.",
"connect_yats": "Connect Yats",
"connect_your_hardware_wallet": "Conecte sua carteira de hardware usando Bluetooth ou USB",
"connect_your_hardware_wallet_ios": "Conecte sua carteira de hardware usando o Bluetooth",
@ -240,6 +244,7 @@
"descending": "descendente",
"description": "Descrição",
"destination_tag": "Tag de destino:",
"device_is_signing": "O dispositivo está assinando",
"dfx_option_description": "Compre criptografia com EUR & CHF. Para clientes de varejo e corporativo na Europa",
"didnt_get_code": "Não recebeu o código?",
"digit_pin": "dígitos",
@ -394,6 +399,7 @@
"hide_details": "Ocultar detalhes",
"high_contrast_theme": "Tema de alto contraste",
"home_screen_settings": "Configurações da tela inicial",
"how_to_connect": "Como conectar",
"how_to_use": "Como usar",
"how_to_use_card": "Como usar este cartão",
"id": "ID: ",
@ -844,6 +850,7 @@
"spend_key_private": "Chave de gastos (privada)",
"spend_key_public": "Chave de gastos (pública)",
"status": "Status: ",
"step": "Etapa",
"string_default": "Padrão",
"subaddress_title": "Sub-endereços",
"subaddresses": "Sub-endereços",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "Подтвержденный",
"congratulations": "Поздравляем!",
"connect_an_existing_yat": "Подключить существующий Yat",
"connect_hw_info_step_1": "Убедитесь, что ваше устройство включено.",
"connect_hw_info_step_2": "Включите Bluetooth для обоих устройств и соедините их с телефона или соедините свои устройства вместе с помощью USB -кабеля.",
"connect_hw_info_step_3": "Разблокируйте свое устройство и перейдите к желаемому крипто -приложению.",
"connect_hw_info_step_4": "Выберите свое устройство в кошельке для торта и продолжайте с настройкой.",
"connect_yats": "Подключить Yats",
"connect_your_hardware_wallet": "Подключите свой аппаратный кошелек с помощью Bluetooth или USB",
"connect_your_hardware_wallet_ios": "Подключите свой аппаратный кошелек с помощью Bluetooth",
@ -240,6 +244,7 @@
"descending": "Нисходящий",
"description": "Описание",
"destination_tag": "Целевой тег:",
"device_is_signing": "Устройство подписывает",
"dfx_option_description": "Купить крипто с Eur & CHF. Для розничных и корпоративных клиентов в Европе",
"didnt_get_code": "Не получить код?",
"digit_pin": "-значный PIN",
@ -394,6 +399,7 @@
"hide_details": "Скрыть детали",
"high_contrast_theme": "Высококонтрастная тема",
"home_screen_settings": "Настройки главного экрана",
"how_to_connect": "Как подключиться",
"how_to_use": "Как использовать",
"how_to_use_card": "Как использовать эту карту",
"id": "ID: ",
@ -843,6 +849,7 @@
"spend_key_private": "Приватный ключ траты",
"spend_key_public": "Публичный ключ траты",
"status": "Статус: ",
"step": "Шаг",
"string_default": "По умолчанию",
"subaddress_title": "Список субадресов",
"subaddresses": "Субадреса",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "ซึ่งยืนยันแล้ว",
"congratulations": "ขอแสดงความยินดี!",
"connect_an_existing_yat": "เชื่อมต่อ Yat ที่มีอยู่",
"connect_hw_info_step_1": "ตรวจสอบให้แน่ใจว่าอุปกรณ์ของคุณเปิดใช้งาน",
"connect_hw_info_step_2": "เปิดบลูทู ธ สำหรับอุปกรณ์ทั้งสองและจับคู่จากโทรศัพท์หรือเชื่อมต่ออุปกรณ์ของคุณเข้าด้วยกันโดยใช้สายเคเบิล USB",
"connect_hw_info_step_3": "ปลดล็อกอุปกรณ์ของคุณและนำทางไปยังแอพ crypto ที่ต้องการ",
"connect_hw_info_step_4": "เลือกอุปกรณ์ของคุณในกระเป๋าเงินเค้กและดำเนินการติดตั้งต่อไป",
"connect_yats": "เชื่อมต่อ Yats",
"connect_your_hardware_wallet": "เชื่อมต่อกระเป๋าเงินฮาร์ดแวร์ของคุณโดยใช้บลูทู ธ หรือ USB",
"connect_your_hardware_wallet_ios": "เชื่อมต่อกระเป๋าเงินฮาร์ดแวร์ของคุณโดยใช้บลูทู ธ",
@ -240,6 +244,7 @@
"descending": "ลงมา",
"description": "คำอธิบาย",
"destination_tag": "แท็กปลายทาง:",
"device_is_signing": "อุปกรณ์กำลังลงนาม",
"dfx_option_description": "ซื้อ crypto ด้วย Eur & CHF สำหรับลูกค้ารายย่อยและลูกค้าในยุโรป",
"didnt_get_code": "ไม่ได้รับรหัส?",
"digit_pin": "-หลัก PIN",
@ -394,6 +399,7 @@
"hide_details": "ซ่อนรายละเอียด",
"high_contrast_theme": "ธีมความคมชัดสูง",
"home_screen_settings": "การตั้งค่าหน้าจอหลัก",
"how_to_connect": "วิธีการเชื่อมต่อ",
"how_to_use": "วิธีใช้",
"how_to_use_card": "วิธีใช้บัตรนี้",
"id": "ID: ",
@ -842,6 +848,7 @@
"spend_key_private": "คีย์จ่าย (ส่วนตัว)",
"spend_key_public": "คีย์จ่าย (สาธารณะ)",
"status": "สถานะ: ",
"step": "ขั้นตอน",
"string_default": "ค่าเริ่มต้น",
"subaddress_title": "รายการที่อยู่ย่อย",
"subaddresses": "ที่อยู่ย่อย",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "Nakumpirma",
"congratulations": "Congratulations!",
"connect_an_existing_yat": "Ikonekta ang isang umiiral na Yat",
"connect_hw_info_step_1": "Siguraduhin na ang iyong aparato ay pinapagana.",
"connect_hw_info_step_2": "Lumiko ang Bluetooth para sa parehong mga aparato at ipares ang mga ito mula sa telepono, o ikonekta ang iyong mga aparato nang magkasama gamit ang isang USB cable.",
"connect_hw_info_step_3": "I -unlock ang iyong aparato at mag -navigate sa nais na crypto app.",
"connect_hw_info_step_4": "Piliin ang iyong aparato sa cake wallet at magpatuloy sa pag -setup.",
"connect_yats": "Ikonekta sa Yats",
"connect_your_hardware_wallet": "Ikonekta ang iyong hardware wallet gamit ang Bluetooth o USB",
"connect_your_hardware_wallet_ios": "Ikonekta ang iyong wallet gamit ang Bluetooth",
@ -240,6 +244,7 @@
"descending": "Pababang",
"description": "Paglalarawan",
"destination_tag": "Tag ng patutunguhan:",
"device_is_signing": "Nag -sign ang aparato",
"dfx_option_description": "Bumili ng crypto kasama ang EUR & CHF. Para sa mga retail customer at corporate customer sa Europe",
"didnt_get_code": "Hindi nakuha ang code?",
"digit_pin": "-digit PIN",
@ -394,6 +399,7 @@
"hide_details": "Itago ang mga detalye",
"high_contrast_theme": "High Contrast Theme",
"home_screen_settings": "Mga setting ng home screen",
"how_to_connect": "Paano kumonekta",
"how_to_use": "Paano gamitin",
"how_to_use_card": "Paano gamitin ang card na ito",
"id": "ID: ",
@ -842,6 +848,7 @@
"spend_key_private": "Spend key (private)",
"spend_key_public": "Spend key (public)",
"status": "Katayuan: ",
"step": "Hakbang",
"string_default": "Default",
"subaddress_title": "Listahan ng Subaddress",
"subaddresses": "Mga Subaddress",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "Onaylanmış",
"congratulations": "Tebrikler!",
"connect_an_existing_yat": "Mevcut bir Yat'ı bağla",
"connect_hw_info_step_1": "Cihazınızın açıldığından emin olun.",
"connect_hw_info_step_2": "Bluetooth'u her iki cihaz için açın ve telefondan eşleştirin veya bir USB kablosu kullanarak cihazlarınızı birbirine bağlayın.",
"connect_hw_info_step_3": "Cihazınızın kilidini açın ve istenen kripto uygulamasına gidin.",
"connect_hw_info_step_4": "Cihazınızı kek cüzdanında seçin ve kuruluma devam edin.",
"connect_yats": "Yat'lara bağlan",
"connect_your_hardware_wallet": "Bluetooth veya USB kullanarak donanım cüzdanınızı bağlayın",
"connect_your_hardware_wallet_ios": "Bluetooth kullanarak donanım cüzdanınızı bağlayın",
@ -240,6 +244,7 @@
"descending": "Azalan",
"description": "Tanım",
"destination_tag": "Hedef Etiketi:",
"device_is_signing": "Cihaz imzalıyor",
"dfx_option_description": "Eur & chf ile kripto satın alın. Avrupa'daki perakende ve kurumsal müşteriler için",
"didnt_get_code": "Kod gelmedi mi?",
"digit_pin": " haneli PIN",
@ -394,6 +399,7 @@
"hide_details": "Detayları Gizle",
"high_contrast_theme": "Yüksek Kontrastlı Tema",
"home_screen_settings": "Ana ekran ayarları",
"how_to_connect": "Nasıl bağlanır",
"how_to_use": "Nasıl kullanılır",
"how_to_use_card": "Bu kart nasıl kullanılır",
"id": "ID: ",
@ -842,6 +848,7 @@
"spend_key_private": "Harcama anahtarı (özel)",
"spend_key_public": "Harcama anahtarı (genel)",
"status": "Durum: ",
"step": "Adım",
"string_default": "Varsayılan",
"subaddress_title": "Alt adres listesi",
"subaddresses": "Alt adresler",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "Підтверджений",
"congratulations": "Вітаємо!",
"connect_an_existing_yat": "Підключити існуючий Yat",
"connect_hw_info_step_1": "Переконайтесь, що ваш пристрій працює.",
"connect_hw_info_step_2": "Увімкніть Bluetooth для обох пристроїв і з’єднайте їх з телефону або підключіть свої пристрої разом за допомогою USB -кабелю.",
"connect_hw_info_step_3": "Розблокуйте свій пристрій і перейдіть до потрібного програми Crypto.",
"connect_hw_info_step_4": "Виберіть свій пристрій у гаманці тортів і продовжуйте налаштування.",
"connect_yats": "Підключіть Yats",
"connect_your_hardware_wallet": "Підключіть апаратний гаманець за допомогою Bluetooth або USB",
"connect_your_hardware_wallet_ios": "Підключіть апаратний гаманець за допомогою Bluetooth",
@ -240,6 +244,7 @@
"descending": "Низхідний",
"description": "опис",
"destination_tag": "Тег призначення:",
"device_is_signing": "Пристрій підписується",
"dfx_option_description": "Купуйте криптовалюту з EUR & CHF. Для роздрібних та корпоративних клієнтів у Європі",
"didnt_get_code": "Не отримали код?",
"digit_pin": "-значний PIN",
@ -394,6 +399,7 @@
"hide_details": "Приховати деталі",
"high_contrast_theme": "Тема високої контрастності",
"home_screen_settings": "Налаштування головного екрана",
"how_to_connect": "Як підключитися",
"how_to_use": "Як використовувати",
"how_to_use_card": "Як використовувати цю картку",
"id": "ID: ",
@ -843,6 +849,7 @@
"spend_key_private": "Приватний ключ витрати",
"spend_key_public": "Публічний ключ витрати",
"status": "Статус: ",
"step": "Крок",
"string_default": "За замовчуванням",
"subaddress_title": "Список Субадрес",
"subaddresses": "Субадреси",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "تصدیق",
"congratulations": "مبارک ہو!",
"connect_an_existing_yat": "ایک موجودہ Yat کو جوڑیں۔",
"connect_hw_info_step_1": "اس بات کو یقینی بنائیں کہ آپ کا آلہ چل رہا ہے۔",
"connect_hw_info_step_2": "دونوں آلات کے لئے بلوٹوتھ کو آن کریں اور فون سے ان کو جوڑیں ، یا USB کیبل کا استعمال کرکے اپنے آلات کو ایک ساتھ جوڑیں۔",
"connect_hw_info_step_3": "اپنے آلے کو انلاک کریں اور مطلوبہ کریپٹو ایپ پر جائیں۔",
"connect_hw_info_step_4": "اپنے آلے کو کیک پرس میں منتخب کریں اور سیٹ اپ کے ساتھ جاری رکھیں۔",
"connect_yats": "Yats کو جوڑیں۔",
"connect_your_hardware_wallet": "بلوٹوتھ یا USB کا استعمال کرتے ہوئے اپنے ہارڈ ویئر پرس کو مربوط کریں",
"connect_your_hardware_wallet_ios": "بلوٹوتھ کا استعمال کرتے ہوئے اپنے ہارڈ ویئر پرس کو جوڑیں",
@ -240,6 +244,7 @@
"descending": "اترتے ہوئے",
"description": "ﻞﯿﺼﻔﺗ",
"destination_tag": "منزل کا ٹیگ:",
"device_is_signing": "ڈیوائس پر دستخط کر رہے ہیں",
"dfx_option_description": "یورو اور سی ایچ ایف کے ساتھ کرپٹو خریدیں۔ یورپ میں خوردہ اور کارپوریٹ صارفین کے لئے",
"didnt_get_code": "کوڈ نہیں ملتا؟",
"digit_pin": "-ہندسوں کا پن",
@ -394,6 +399,7 @@
"hide_details": "تفصیلات چھپائیں۔",
"high_contrast_theme": "ہائی کنٹراسٹ تھیم",
"home_screen_settings": "ہوم اسکرین کی ترتیبات",
"how_to_connect": "کیسے مربوط ہوں",
"how_to_use": " ﮧﻘﯾﺮﻃ ﺎﮐ ﮯﻧﺮﮐ ﻝﺎﻤﻌﺘﺳﺍ",
"how_to_use_card": "اس کارڈ کو استعمال کرنے کا طریقہ",
"id": "ID:",
@ -844,6 +850,7 @@
"spend_key_private": "خرچ کی کلید (نجی)",
"spend_key_public": "خرچ کی کلید (عوامی)",
"status": "حالت:",
"step": "مرحلہ",
"string_default": "پہلے سے طے شدہ",
"subaddress_title": "ذیلی ایڈریس کی فہرست",
"subaddresses": "ذیلی پتے",

View file

@ -180,6 +180,10 @@
"confirmed_tx": "Đã xác nhận",
"congratulations": "Chúc mừng!",
"connect_an_existing_yat": "Kết nối Yat hiện có",
"connect_hw_info_step_1": "Hãy chắc chắn rằng thiết bị của bạn được bật nguồn.",
"connect_hw_info_step_2": "Bật Bluetooth cho cả hai thiết bị và ghép chúng từ điện thoại hoặc kết nối các thiết bị của bạn với nhau bằng cáp USB.",
"connect_hw_info_step_3": "Mở khóa thiết bị của bạn và điều hướng đến ứng dụng tiền điện tử mong muốn.",
"connect_hw_info_step_4": "Chọn thiết bị của bạn trong ví bánh và tiếp tục với thiết lập.",
"connect_yats": "Kết nối Yats",
"connect_your_hardware_wallet": "Kết nối ví phần cứng của bạn bằng Bluetooth hoặc USB",
"connect_your_hardware_wallet_ios": "Kết nối ví phần cứng của bạn bằng Bluetooth",
@ -239,6 +243,7 @@
"descending": "Giảm dần",
"description": "Mô tả",
"destination_tag": "Thẻ đích:",
"device_is_signing": "Thiết bị đang ký",
"dfx_option_description": "Mua tiền điện tử bằng EUR & CHF. Dành cho khách hàng bán lẻ và doanh nghiệp tại Châu Âu",
"didnt_get_code": "Không nhận được mã?",
"digit_pin": "Mã PIN - số",
@ -393,6 +398,7 @@
"hide_details": "Ẩn chi tiết",
"high_contrast_theme": "Chủ đề độ tương phản cao",
"home_screen_settings": "Cài đặt màn hình chính",
"how_to_connect": "Cách kết nối",
"how_to_use": "Cách sử dụng",
"how_to_use_card": "Cách sử dụng thẻ này",
"id": "ID: ",
@ -839,6 +845,7 @@
"spend_key_private": "Khóa chi tiêu (riêng tư)",
"spend_key_public": "Khóa chi tiêu (công khai)",
"status": "Trạng thái: ",
"step": "Bước chân",
"string_default": "Mặc định",
"subaddress_title": "Danh sách địa chỉ phụ",
"subaddresses": "Địa chỉ phụ",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "Jẹrisi",
"congratulations": "Ẹ kúuṣẹ́ ooo!",
"connect_an_existing_yat": "So Yat wíwà",
"connect_hw_info_step_1": "Rii daju pe ẹrọ rẹ ni agbara lori.",
"connect_hw_info_step_2": "Tan Bluetooth lori fun awọn ẹrọ mejeeji ki o pa wọn kuro ninu foonu, tabi so awọn ẹrọ rẹ pọ pẹlu lilo okun USB.",
"connect_hw_info_step_3": "Ṣii ẹrọ rẹ ki o lọ kiri si ohun elo Crypto ti o fẹ.",
"connect_hw_info_step_4": "Yan ẹrọ rẹ ni apamọwọ akara oyinbo ki o tẹsiwaju pẹlu iṣeto.",
"connect_yats": "So àwọn Yat",
"connect_your_hardware_wallet": "So apamọwọ irinṣẹ rẹ nipa lilo Bluetooth tabi USB",
"connect_your_hardware_wallet_ios": "So apamọwọ ẹrọ rẹ ni lilo Bluetooth",
@ -240,6 +244,7 @@
"descending": "Sọkalẹ",
"description": "Apejuwe",
"destination_tag": "Orúkọ tí ìbí tó a ránṣẹ́ sí:",
"device_is_signing": "Ẹrọ n forukọsilẹ",
"dfx_option_description": "Ra Crypto pẹlu EUR & CHF. Fun soobu ati awọn alabara ile-iṣẹ ni Yuroopu",
"didnt_get_code": "Ko gba koodu?",
"digit_pin": "-díjíìtì òǹkà ìdánimọ̀ àdáni",
@ -395,6 +400,7 @@
"hide_details": "Dé ìsọfúnni kékeré",
"high_contrast_theme": "Akori Iyatọ giga",
"home_screen_settings": "Awọn eto iboju ile",
"how_to_connect": "Bi o ṣe le sopọ",
"how_to_use": "Bawo ni lati lo",
"how_to_use_card": "Báyìí ni wọ́n ṣe ń lo káàdì yìí.",
"id": "Àmì Ìdánimọ̀: ",
@ -843,6 +849,7 @@
"spend_key_private": "Kọ́kọ́rọ́ sísan (àdáni)",
"spend_key_public": "Kọ́kọ́rọ́ sísan (kò àdáni)",
"status": "Tó ń ṣẹlẹ̀: ",
"step": "Igbesẹ",
"string_default": "Aiyipada",
"subaddress_title": "Àkọsílẹ̀ ni nínú àwọn àdírẹ́sì tíwọn rẹ̀lẹ̀",
"subaddresses": "Àwọn àdírẹ́sì kékeré",

View file

@ -181,6 +181,10 @@
"confirmed_tx": "确认的",
"congratulations": "恭喜!",
"connect_an_existing_yat": "連接現有 Yat",
"connect_hw_info_step_1": "确保您的设备已上电。",
"connect_hw_info_step_2": "为这两个设备打开蓝牙然后将它们配对或使用USB电缆将设备连接在一起。",
"connect_hw_info_step_3": "解锁设备并导航到所需的加密应用程序。",
"connect_hw_info_step_4": "在蛋糕钱包中选择您的设备,然后继续设置。",
"connect_yats": "连接 Yats",
"connect_your_hardware_wallet": "使用蓝牙或USB连接硬件钱包",
"connect_your_hardware_wallet_ios": "使用蓝牙连接硬件钱包",
@ -240,6 +244,7 @@
"descending": "下降",
"description": "描述",
"destination_tag": "目标Tag:",
"device_is_signing": "设备正在签名",
"dfx_option_description": "用EurChf购买加密货币。对于欧洲的零售和企业客户",
"didnt_get_code": "没有获取代码?",
"digit_pin": "位 PIN",
@ -394,6 +399,7 @@
"hide_details": "隐藏细节",
"high_contrast_theme": "高对比度主题",
"home_screen_settings": "主屏幕设置",
"how_to_connect": "如何连接",
"how_to_use": "如何使用",
"how_to_use_card": "如何使用这张卡",
"id": "ID: ",
@ -842,6 +848,7 @@
"spend_key_private": "Spend 密钥 (私钥)",
"spend_key_public": "Spend 密钥 (公钥)",
"status": "状态: ",
"step": "步",
"string_default": "默认",
"subaddress_title": "子地址列表",
"subaddresses": "子地址",

View file

@ -8,7 +8,7 @@ if [[ ! -d "monero_c/.git" ]];
then
git clone https://github.com/mrcyjanek/monero_c --branch master monero_c
cd monero_c
git checkout b335585a7fb94b315eb52bd88f2da6d3489fa508
git checkout a27fbcb24d91143715ed930a05aaa4d853fba1f2
git reset --hard
git submodule update --init --force --recursive
./apply_patches.sh monero

View file

@ -434,6 +434,7 @@ WalletCredentials createMoneroNewWalletCredentials({required String name, requir
void setLedgerConnection(Object wallet, ledger.LedgerConnection connection);
void resetLedgerConnection();
void setGlobalLedgerConnection(ledger.LedgerConnection connection);
String? getLastLedgerCommand();
Map<String, List<int>> debugCallLength();
}