feat: zashi zkool sweep, and minor fixes (#2838)
What changed, and why it matters
This commit adds a feature to Cake Wallet that helps Zcash users recover funds that may be hidden on internal change addresses (a known issue with some wallets like Zashi). It also adds the ability to restore a Zcash wallet from a private key instead of only from a seed phrase, and makes several small UI and error-message improvements. There is no clear security vulnerability in the diff itself; the changes appear to be defensive/recovery functionality.
Review the zkool dependency for supply-chain trust and audit the Rust bridge code, since it handles seeds and private keys. Verify that the temporary sweep database is cleaned up and that the hardcoded password is only used for an ephemeral local cache. Confirm that exposing tsk/uvk/private keys in the UI is intentional and gated by existing authentication. No immediate patch is required for a vulnerability, but treat this as a high-touch crypto/key-management change.
Security signals we found
New external Rust dependency (zkool from https://github.com/hhanh00/zkool2) added to Zcash module
New wallet sweep logic creates a temporary database with a hardcoded password ('cw_zcash_migration')
Private key restore path added for Zcash with regex validation for secret-extended-key-main1 format
Additional Zcash sensitive keys (tsk, uvk, private spend/view keys) now displayed in UI
Null-safety fixes prevent crashes when seed is absent in Zcash t-address rotation
Build workflow adds NDK version symlink workaround (28.2.13676358 -> 25.1.8937393)
Evidence from the diff
The patch introduces a new ZkoolSweep class (cw_zcash/lib/src/legacy/zkool_sweep.dart) that uses the zkool Rust library to create a temporary mirror wallet, sync it, and sweep any discovered balance to the user’s Orchard address. It wires this into the Zcash wallet via rescanInternalChange(), gated by a new dashboard card (showZcashMissingFundsCard). It also implements restoreKeys() for Zcash from a secret-extended-key-main1 private key, adds a blockchain height selector to the key-restore form, exposes additional Zcash keys (privateSpendKey, privateViewKey, uvk, tsk) in the keys screen, and hardens null-safety around seed handling in t-address rotation. Minor changes include NDK build-workaround symlinks, dependency overrides, and more descriptive exception messages.
Changed components
cw_zcash Zcash wallet implementationZcash restore-from-keys flowDashboard balance card UIWallet keys display screenSettings/display preferencesAndroid NDK build configurationDependency resolution (pubspec_base.yaml, cw_zcash/pubspec.yaml)Inspect captured patch +885 / −92
diff --git a/.github/workflows/reusable-build.yml b/.github/workflows/reusable-build.yml
index 7c21897..d93e56e 100644
--- a/.github/workflows/reusable-build.yml
+++ b/.github/workflows/reusable-build.yml
@@ -199,6 +199,11 @@ jobs:
- name: Build
run: |
+ export ANDROID_NDK_HOME="$ANDROID_SDK_ROOT/ndk/$ANDROID_NDK_VERSION"
+ export ANDROID_NDK="$ANDROID_NDK_HOME"
+ pushd $ANDROID_SDK_ROOT/ndk
+ ln -s 28.2.13676358 25.1.8937393
+ popd
flutter build apk --dart-define=hasDevOptions=true --release --split-per-abi
- name: Rename apk file
diff --git a/android/gradle.properties b/android/gradle.properties
index d130e53..8c323ab 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -2,3 +2,4 @@ org.gradle.jvmargs=-Xmx4096M
android.enableR8=true
android.useAndroidX=true
android.enableJetifier=true
+android.ndk.suppressMinSdkVersionError=21
diff --git a/cw_zcash/lib/src/legacy/zkool_sweep.dart b/cw_zcash/lib/src/legacy/zkool_sweep.dart
new file mode 100644
index 0000000..20f04da
--- /dev/null
+++ b/cw_zcash/lib/src/legacy/zkool_sweep.dart
@@ -0,0 +1,196 @@
+import 'dart:io';
+
+import 'package:cw_core/utils/print_verbose.dart';
+import 'package:path/path.dart' as p;
+import 'package:zkool/src/rust/api/account.dart' as zkool_account;
+import 'package:zkool/src/rust/api/coin.dart' as zkool_coin;
+import 'package:zkool/src/rust/api/sync.dart' as zkool_sync;
+import 'package:zkool/src/rust/api/pay.dart' as zkool_pay;
+import 'package:zkool/src/rust/api/key.dart' as zkool_key;
+import 'package:zkool/src/rust/api/network.dart' as zkool_network;
+import 'package:zkool/src/rust/pay.dart' as zkool_paydart;
+import 'package:zkool/src/rust/frb_generated.dart' as zkool_frb;
+
+class ZkoolSweep {
+ ZkoolSweep({
+ required this.currentBalance,
+ required this.cacheDir,
+ required this.seed,
+ required this.passphrase,
+ required this.address,
+ required this.url,
+ required this.height,
+ });
+ final int currentBalance;
+ final String seed;
+ final String cacheDir;
+ final String passphrase;
+ final String address;
+ final String url;
+ final int height;
+ static SweepUpdate msg = SweepUpdate(message: 'Idling', currentHeight: 0, networkHeight: 0);
+ Future<void> start() async {
+ try {
+ await _init();
+ if (!zkool_key.isValidAddress(address: address)) {
+ msg.message = "$address is not valid";
+ return;
+ }
+
+ msg = SweepUpdate(message: 'Starting import', currentHeight: 0, networkHeight: 0);
+ await _newAccount();
+ msg.message = "Starting sync";
+ await warpSync();
+ msg.message = "Waiting";
+ while (msg.blocksLeft != 0 && msg.networkHeight != 0) {
+ await Future.delayed(Duration(seconds: 1));
+ }
+ await Future.delayed(Duration(seconds: 5));
+ final balance = await getBalance();
+ if (balance.toInt() == balance) {
+ msg.message = "No need to sweep, balance is the same";
+ return;
+ }
+ msg.message = "Sweeping";
+ await sweep(balance);
+ } catch (e) {
+ msg.message = e.toString();
+ printV("zkool_sweep: $e");
+ rethrow;
+ }
+ }
+
+ Future<BigInt> getBalance() async {
+ final b = await zkool_sync.balance(c: c);
+ return b.field0.reduce((final a, final b) => a + b);
+ }
+
+ Future<void> sweep(final BigInt amount) async {
+ msg.message = "prepare";
+ final tx = await zkool_pay.prepare(
+ recipients: [zkool_paydart.Recipient(address: address, amount: amount)],
+ options: zkool_pay.PaymentOptions(
+ srcPools: 7,
+ recipientPaysFee: true,
+ smartTransparent: false,
+ ),
+ c: c,
+ );
+ msg.message = "getLatestHeight";
+ final height = await getLatestHeight();
+ msg.message = "signTransaction";
+ final signTx = await zkool_pay.signTransaction(pczt: tx, c: c);
+ msg.message = "extractTransaction";
+ final txBytes = await zkool_pay.extractTransaction(package: signTx);
+ msg.message = "broadcastTransaction";
+ final result = await zkool_pay.broadcastTransaction(height: height, txBytes: txBytes, c: c);
+ msg.message = "result";
+ if (result.isEmpty) {
+ msg.message = "Unknown error";
+ throw Exception(result);
+ }
+ }
+
+ static var c = zkool_coin.Coin();
+
+ static bool _isInit = false;
+
+ File get dbFile => File(p.join(cacheDir, "zkool-tmp-mirror.db"));
+
+ Future<int> warpSync() async {
+ final currentHeight = await getLatestHeight();
+ msg.networkHeight = currentHeight;
+ final sync = zkool_sync.synchronize(
+ accounts: [currentAccount],
+ currentHeight: currentHeight,
+ actionsPerSync: 10000,
+ transparentLimit: 100,
+ checkpointAge: 200,
+ c: c,
+ );
+ bool success = false;
+ await sync.listen(
+ (final syncProgress) {
+ msg.currentHeight = syncProgress.height;
+ msg.message = "Sync ${syncProgress.height} / ${syncProgress.time}";
+ },
+ onError: (final e) {
+ msg.message = e.toString();
+ },
+ onDone: () {
+ msg.message = "Sync done!";
+ success = true;
+ },
+ );
+
+ if (msg.currentHeight != currentHeight && msg.currentHeight != 0) {
+ msg.message = "Canceling sync";
+ await zkool_sync.cancelSync();
+ await Future.delayed(Duration(seconds: 1));
+ return warpSync();
+ }
+ return 0;
+ }
+
+ Future<int> getLatestHeight() async {
+ try {
+ return await zkool_network.getCurrentHeight(c: c);
+ } catch (e) {
+ printV("getLatestHeight: $e");
+ }
+ return 0;
+ }
+
+ Future<void> _newAccount() async {
+ final id = await zkool_account.newAccount(
+ na: zkool_account.NewAccount(
+ name: 'restoretmp' + DateTime.now().microsecondsSinceEpoch.toString(),
+ restore: true,
+ passphrase: "",
+ key: seed,
+ aindex: 0,
+ birth: height,
+ folder: '',
+ useInternal: true,
+ internal: false,
+ ledger: false,
+ ),
+ c: c,
+ );
+ currentAccount = id;
+ c = await c.setAccount(account: id);
+ }
+
+ int currentAccount = 0;
+
+ Future<void> _init() async {
+ if (_isInit) return;
+ _isInit = true;
+ printV(".init()");
+ await zkool_frb.RustLib.init();
+ await zkool_network.initDatadir(directory: dbFile.parent.path);
+ c = await c.openDatabase(dbFilepath: dbFile.path, password: 'cw_zcash_migration');
+ c = c.setLwd(url: url, serverType: 0);
+ printV(".init(): Done");
+ }
+}
+
+class SweepUpdate {
+ SweepUpdate({required this.message, required this.currentHeight, required this.networkHeight});
+ String message;
+ int currentHeight;
+ int networkHeight;
+ double get progress {
+ if (networkHeight == 0) return 0.01;
+ return currentHeight / networkHeight;
+ }
+
+ int get blocksLeft => networkHeight - currentHeight;
+
+ Map<String, dynamic> toJson() => {
+ "message": message,
+ "currentHeight": currentHeight,
+ "networkHeight": networkHeight,
+ "progress": progress,
+ };
+}
diff --git a/cw_zcash/lib/src/models.dart b/cw_zcash/lib/src/models.dart
index 0dba32a..e6886b1 100644
--- a/cw_zcash/lib/src/models.dart
+++ b/cw_zcash/lib/src/models.dart
@@ -34,8 +34,8 @@ class ZcashFromKeysWalletCredentials extends WalletCredentials {
ZcashFromKeysWalletCredentials({
required final String name,
final String? password,
- required final String? passphrase,
+ required final int? height,
required this.privateKey,
- }) : super(name: name, password: password, passphrase: passphrase);
+ }) : super(name: name, password: password, height: height);
final String? privateKey;
}
diff --git a/cw_zcash/lib/src/zcash_taddress_rotation.dart b/cw_zcash/lib/src/zcash_taddress_rotation.dart
index 7b17afd..14bdc53 100644
--- a/cw_zcash/lib/src/zcash_taddress_rotation.dart
+++ b/cw_zcash/lib/src/zcash_taddress_rotation.dart
@@ -46,7 +46,8 @@ class ZcashTaddressRotation {
return seedWords.join(" ");
}
- static bool isSeedForWallet(final String mainWallet, final String subWallet) {
+ static bool isSeedForWallet(final String? mainWallet, final String? subWallet) {
+ if (mainWallet == null || subWallet == null) return false;
return seedForOffset(mainWallet.trim()) == subWallet;
}
@@ -195,6 +196,7 @@ class ZcashTaddressRotation {
final acc = accounts[i];
final backup = WarpApi.getBackup(coin, acc.id);
await WarpApi.transparentSync(coin, acc.id, syncHeight);
+ if (backup.seed == null) continue;
seeds[acc.id] = backup.seed!;
}
for (int i = 0; i < accounts.length; i++) {
@@ -210,7 +212,7 @@ class ZcashTaddressRotation {
for (int i = 0; i < raKeys.length; i++) {
final accs = accounts.where((final a) {
final seed = WarpApi.getBackup(coin, a.id).seed;
- return isSeedForWallet(seeds[raKeys[i]]!, seed!);
+ return isSeedForWallet(seeds[raKeys[i]], seed);
}).toList();
rotationAccounts[raKeys[i]]!.addAll(accs);
final acc = accountForSeed(seeds[raKeys[i]]!)!;
@@ -264,7 +266,7 @@ class ZcashTaddressRotation {
printV(raKeys[i]);
rotationAccounts[raKeys[i]]!.forEach((final a) {
final b = WarpApi.getBackup(coin, a.id);
- printV("${a.id} / ${b.seed}");
+ printV("${a.id}");
});
didAddNewAccount = true;
}
@@ -418,7 +420,8 @@ class ZcashTaddressRotation {
}
static List<String>? allUsedAddressesForAccount(final int accountId) {
- final seed = WarpApi.getBackup(coin, accountId).seed!;
+ final seed = WarpApi.getBackup(coin, accountId).seed;
+ if (seed == null) return [];
final acc = rotationAccounts[seed]?.toList();
if (acc == null) {
printV("Nothing found");
diff --git a/cw_zcash/lib/src/zcash_wallet.dart b/cw_zcash/lib/src/zcash_wallet.dart
index 3a8ad9a..4599fa9 100644
--- a/cw_zcash/lib/src/zcash_wallet.dart
+++ b/cw_zcash/lib/src/zcash_wallet.dart
@@ -18,15 +18,18 @@ import 'package:cw_core/wallet_info.dart';
import 'package:cw_core/wallet_type.dart';
import 'package:bip39/bip39.dart' as bip39;
import 'package:cw_zcash/cw_zcash.dart';
+import 'package:cw_zcash/src/legacy/zkool_sweep.dart';
import 'package:cw_zcash/src/util/crc32.dart';
import 'package:cw_zcash/src/zcash_taddress_rotation.dart';
import 'package:cw_zcash/src/zcash_wallet_addresses.dart';
+import 'package:flutter/foundation.dart';
import 'package:mobx/mobx.dart';
import 'package:warp_api/warp_api.dart';
import 'package:warp_api/data_fb_generated.dart';
import 'package:flutter/services.dart';
import 'package:mutex/mutex.dart';
import 'package:path/path.dart' as p;
+import 'package:path_provider/path_provider.dart';
part 'zcash_wallet.g.dart';
@@ -96,9 +99,11 @@ abstract class ZcashWalletBase
await ZcashWalletService.runInDbMutex(() async => WarpApi.cancelSync());
}
+ Node? lastNode;
@override
@action
Future<void> connectToNode({required final Node node}) async {
+ lastNode = node;
printV("connecting to node: ${node.uriRaw}");
syncStatus = ConnectingSyncStatus();
try {
@@ -319,7 +324,17 @@ abstract class ZcashWalletBase
}
@override
- Object get keys => {};
+ Object get keys {
+ final backup = WarpApi.getBackup(coin, accountId);
+ return {
+ // "seed": backup.seed,
+ // "index": backup.index,
+ "privateSpendKey": backup.sk,
+ "privateViewKey": backup.fvk,
+ "uvk": backup.uvk,
+ "tsk": backup.tsk,
+ };
+ }
@override
String get password => _password!;
@@ -338,12 +353,36 @@ abstract class ZcashWalletBase
@override
bool get hasRescan => true;
+ static Future<void> storeZcashHeight(final int height) async {
+ final zcashDir = await pathForWalletTypeDir(type: WalletType.zcash);
+ final zcashInitialSync = File(p.join(zcashDir, ".initial-sync-marker"));
+ zcashInitialSync.writeAsBytesSync([0x00]);
+ zcashInitialSync.writeAsStringSync(height.toString(), mode: FileMode.writeOnlyAppend);
+ }
+
+ static Future<int?> loadZcashHeight() async {
+ final zcashDir = await pathForWalletTypeDir(type: WalletType.zcash);
+ final zcashInitialSync = File(p.join(zcashDir, ".initial-sync-marker"));
+ if (!await zcashInitialSync.exists()) {
+ return null;
+ }
+ final bytes = await zcashInitialSync.readAsBytes();
+ if (bytes.isEmpty) {
+ return null;
+ }
+ final heightString = String.fromCharCodes(bytes.skip(1));
+ return int.tryParse(heightString);
+ }
+
+ static int zashiAnnouncedBlockHeight = 2419420;
+
@override
@action
Future<void> rescan({required final int height}) async {
try {
syncStatus = StartingScanSyncStatus(height);
printV("rescanning from: $height");
+ await storeZcashHeight(height);
await ZcashWalletService.runInDbMutex(() async => WarpApi.rescanFrom(coin, height));
await startSync();
} catch (e) {
@@ -403,7 +442,10 @@ abstract class ZcashWalletBase
String? get seed {
try {
final backup = WarpApi.getBackup(coin, accountId);
- final seed = backup.seed!.split(" ");
+ final seed = backup.seed?.split(" ");
+ if (seed == null) {
+ return null;
+ }
if ([13, 25].contains(seed.length)) {
seed.removeLast();
}
@@ -417,7 +459,10 @@ abstract class ZcashWalletBase
String? get passphrase {
try {
final backup = WarpApi.getBackup(coin, accountId);
- final seed = backup.seed!.split(" ");
+ final seed = backup.seed?.split(" ");
+ if (seed == null) {
+ return null;
+ }
if ([13, 25].contains(seed.length)) {
final passphrase = seed.removeLast();
return passphrase;
@@ -478,8 +523,7 @@ abstract class ZcashWalletBase
await ZcashWalletService.runInDbMutex(
() async => await WarpApi.rescanFrom(coin, chainHeight - 150000),
);
- zcashInitialSync.writeAsBytesSync([0x00]);
- zcashInitialSync.writeAsStringSync(chainHeight.toString(), mode: FileMode.writeOnlyAppend);
+ await storeZcashHeight(chainHeight);
}
}
@@ -827,15 +871,48 @@ abstract class ZcashWalletBase
await wallet.walletAddresses.saveAddressesInBox();
printV("height: ${credentials.height}");
if (credentials.height != null) {
- final zcashDir = await pathForWalletTypeDir(type: WalletType.zcash);
- final zcashInitialSync = File(p.join(zcashDir, ".initial-sync-marker"));
- zcashInitialSync.writeAsBytesSync([0x00]);
- zcashInitialSync.writeAsStringSync(
- credentials.height.toString(),
- mode: FileMode.writeOnlyAppend,
+ await storeZcashHeight(credentials.height!);
+ unawaited(
+ Future.delayed(Duration(seconds: 2)).then(
+ (_) => ZcashWalletService.runInDbMutex(
+ () async => await WarpApi.rescanFrom(coin, credentials.height ?? 0),
+ ),
+ ),
);
+ }
+ return wallet;
+ }
+
+ static Future<ZcashWallet> restoreKeys(final WalletCredentials credentials) async {
+ await _init();
+ final fromKeysCredentials = credentials as ZcashFromKeysWalletCredentials;
+ final String? keys = fromKeysCredentials.privateKey;
+ if (keys == null || keys.isEmpty) {
+ throw Exception('Key is required for wallet restoration');
+ }
+
+ final zcashSecretExtendedKeyRegex = RegExp(r'^secret-extended-key-main1[a-z0-9]+$');
+ if (!zcashSecretExtendedKeyRegex.hasMatch(keys)) {
+ throw Exception('Key is not in secret-extended-key-main1 format');
+ }
+
+ final accountId = await _restoreZcashWalletFromSeed(
+ name: credentials.name,
+ seed: keys,
+ passphrase: fromKeysCredentials.passphrase,
+ );
+ await _saveAccountId(credentials.name, accountId);
+ final wallet = await open(
+ name: credentials.name,
+ password: credentials.password!,
+ walletInfo: credentials.walletInfo!,
+ );
+ await wallet.walletAddresses.saveAddressesInBox();
+ printV("height: ${credentials.height}");
+ if (credentials.height != null) {
+ await storeZcashHeight(credentials.height!);
unawaited(
- Future.delayed(Duration(seconds: 8)).then(
+ Future.delayed(Duration(seconds: 2)).then(
(_) => ZcashWalletService.runInDbMutex(
() async => await WarpApi.rescanFrom(coin, credentials.height ?? 0),
),
@@ -1022,4 +1099,55 @@ abstract class ZcashWalletBase
}
return height;
}
+
+ bool couldBeZashiWallet() {
+ final backup = WarpApi.getBackup(coin, accountId);
+ final seed = backup.seed?.split(" ");
+ if (seed == null) return false;
+ if (zkoolSweep != null) return false;
+ if (!(syncStatus is SyncedSyncStatus)) return false;
+ return seed.length == 24;
+ }
+
+ static ZkoolSweep? zkoolSweep;
+
+ static bool _didRunRescanInternalChange = false;
+ Future<void> rescanInternalChange() async {
+ if (_didRunRescanInternalChange) {
+ return;
+ }
+ _didRunRescanInternalChange = true;
+ final bal =
+ balance[CryptoCurrency.zec]!.confirmed +
+ balance[CryptoCurrency.zec]!.unconfirmed +
+ balance[CryptoCurrency.zec]!.frozen;
+ final osCacheDir = await getApplicationCacheDirectory();
+ final cacheDir = osCacheDir.createTempSync("zkool-import");
+ zkoolSweep = ZkoolSweep(
+ currentBalance: bal,
+ cacheDir: cacheDir.path,
+ seed: seed ?? '',
+ passphrase: password,
+ address: (walletAddresses as ZcashWalletAddresses).orchardAddress,
+ url: (lastNode!.isSSL ? 'https://' : 'http://') + lastNode!.uriRaw,
+ height: (await loadZcashHeight()) ?? zashiAnnouncedBlockHeight,
+ );
+ unawaited(zkoolSweep!.start());
+ int count = 0;
+ Timer.periodic(Duration(milliseconds: 1000 ~/ 120), (final Timer t) {
+ final msg = ZkoolSweep.msg;
+ if (kDebugMode && (++count % (120 ~/ 10)) == 0) {
+ printV(msg.message);
+ }
+ if (msg.blocksLeft == 0 && msg.networkHeight != 0) {
+ zkoolSweep = null;
+ t.cancel();
+ }
+ if (msg.blocksLeft == 0) {
+ syncStatus = ConnectedSyncStatus();
+ return;
+ }
+ syncStatus = SyncingSyncStatus(msg.blocksLeft, msg.progress);
+ });
+ }
}
diff --git a/cw_zcash/lib/src/zcash_wallet_service.dart b/cw_zcash/lib/src/zcash_wallet_service.dart
index ac6fab5..0d79e70 100644
--- a/cw_zcash/lib/src/zcash_wallet_service.dart
+++ b/cw_zcash/lib/src/zcash_wallet_service.dart
@@ -153,7 +153,7 @@ class ZcashWalletService
final ZcashFromKeysWalletCredentials credentials, {
final bool? isTestnet,
}) async {
- throw UnimplementedError();
+ return ZcashWalletBase.restoreKeys(credentials);
}
@override
diff --git a/cw_zcash/pubspec.yaml b/cw_zcash/pubspec.yaml
index 70314f7..1a153f9 100644
--- a/cw_zcash/pubspec.yaml
+++ b/cw_zcash/pubspec.yaml
@@ -19,6 +19,14 @@ dependencies:
path: any
flat_buffers: any
+ zkool:
+ git:
+ url: https://github.com/hhanh00/zkool2
+ ref: 5d53a3f5a2d8f5b0619248384d7431f0a185e171
+
+dependency_overrides:
+ decimal: ^2.3.3
+
dev_dependencies:
flutter_test:
sdk: flutter
diff --git a/lib/entities/preferences_key.dart b/lib/entities/preferences_key.dart
index 08e96e9..a33c5a7 100644
--- a/lib/entities/preferences_key.dart
+++ b/lib/entities/preferences_key.dart
@@ -65,6 +65,7 @@ class PreferencesKey {
static const customBitcoinFeeRate = 'custom_electrum_fee_rate';
static const silentPaymentsCardDisplay = 'silentPaymentsCardDisplay';
static const mwebCardDisplay = 'mwebCardDisplay';
+ static const showZcashMissingFundsCard = 'showZcashMissingFundsCard';
static const mwebEnabled = 'mwebEnabled';
static const hasEnabledMwebBefore = 'hasEnabledMwebBefore';
static const mwebAlwaysScan = 'mwebAlwaysScan';
diff --git a/lib/src/screens/dashboard/pages/balance/crypto_balance_widget.dart b/lib/src/screens/dashboard/pages/balance/crypto_balance_widget.dart
index 2b54ec1..acfaf5e 100644
--- a/lib/src/screens/dashboard/pages/balance/crypto_balance_widget.dart
+++ b/lib/src/screens/dashboard/pages/balance/crypto_balance_widget.dart
@@ -333,6 +333,36 @@ class CryptoBalanceWidget extends StatelessWidget {
),
),
),
+ ],
+ if (dashboardViewModel.showZcashMissingFundsCard) ...[
+ SizedBox(height: 10),
+ Padding(
+ padding: const EdgeInsets.fromLTRB(16, 0, 16, 8),
+ child: InfoCard(
+ title: S.of(context).zcash_card_missing_funds,
+ description: S.of(context).zcash_card_description,
+ leftButtonTitle: S.of(context).zcash_card_dismiss,
+ rightButtonTitle: S.of(context).zcash_card_scan,
+ image: 'assets/images/zec_icon.png',
+ leftButtonAction: () => _dismissZcash(context),
+ rightButtonAction: () => _rescanInternalChangeZcash(context),
+ hintWidget: GestureDetector(
+ behavior: HitTestBehavior.opaque,
+ onTap: () => launchUrl(
+ Uri.parse("https://docs.cakewallet.com/tutorials/zashi/#creating-a-new-zcash-wallet-on-cake"),
+ mode: LaunchMode.externalApplication,
+ ),
+ child: Text(
+ S.of(context).learn_more,
+ style: Theme.of(context).textTheme.bodySmall?.copyWith(
+ color: Theme.of(context).colorScheme.onSurfaceVariant,
+ height: 1,
+ ),
+ softWrap: true,
+ ),
+ ),
+ ),
+ ),
],
if (dashboardViewModel.showDecredInfoCard) ...[
SizedBox(height: 10),
@@ -462,6 +492,22 @@ class CryptoBalanceWidget extends StatelessWidget {
}
dashboardViewModel.setMwebEnabled();
}
+
+ Future<void> _rescanInternalChangeZcash(BuildContext context) async {
+ dashboardViewModel.rescanInternalChangeZcash();
+ await showPopUp<void>(
+ context: context,
+ builder: (BuildContext context) => AlertWithOneAction(
+ alertTitle: S.of(context).alert_notice,
+ alertContent: S.of(context).zcash_card_warning,
+ buttonText: S.of(context).understand,
+ buttonAction: () {
+ Navigator.of(context).pop();
+ },
+ ),
+ );
+ }
+
Future<void> _dismissMweb(BuildContext context) async {
await showPopUp<void>(
@@ -476,4 +522,18 @@ class CryptoBalanceWidget extends StatelessWidget {
));
dashboardViewModel.dismissMweb();
}
+
+ Future<void> _dismissZcash(BuildContext context) async {
+ await showPopUp<void>(
+ context: context,
+ builder: (BuildContext context) => AlertWithOneAction(
+ alertTitle: S.of(context).alert_notice,
+ alertContent: S.of(context).zcash_card_enable_later,
+ buttonText: S.of(context).understand,
+ buttonAction: () {
+ Navigator.of(context).pop();
+ },
+ ));
+ dashboardViewModel.dismissZcash();
+ }
}
diff --git a/lib/src/screens/restore/wallet_restore_from_keys_form.dart b/lib/src/screens/restore/wallet_restore_from_keys_form.dart
index 41c9436..bdc7437 100644
--- a/lib/src/screens/restore/wallet_restore_from_keys_form.dart
+++ b/lib/src/screens/restore/wallet_restore_from_keys_form.dart
@@ -232,14 +232,26 @@ class WalletRestoreFromKeysFormState extends State<WalletRestoreFromKeysForm> {
bool nanoBased = widget.walletRestoreViewModel.type == WalletType.nano ||
widget.walletRestoreViewModel.type == WalletType.banano;
- return AddressTextField(
- addressKey: ValueKey('wallet_restore_from_key_private_key_textfield_key'),
- controller: privateKeyController,
- placeholder: nanoBased ? S.of(context).seed_hex_form : S.of(context).private_key,
- options: [AddressTextFieldOption.paste],
- onPushPasteButton: (_) {
- _pasteText();
- },
+ return Column(
+ children: [
+ AddressTextField(
+ addressKey: ValueKey('wallet_restore_from_key_private_key_textfield_key'),
+ controller: privateKeyController,
+ placeholder: nanoBased ? S.of(context).seed_hex_form : S.of(context).private_key,
+ options: [AddressTextFieldOption.paste],
+ onPushPasteButton: (_) {
+ _pasteText();
+ },
+ ),
+ if (widget.walletRestoreViewModel.hasBlockchainHeightSelector)
+ BlockchainHeightWidget(
+ key: blockchainHeightKey,
+ hasDatePicker: widget.walletRestoreViewModel.type != WalletType.haven,
+ onHeightChange: (_) => null,
+ onHeightOrDateEntered: widget.onHeightOrDateEntered,
+ walletType: widget.walletRestoreViewModel.type,
+ ),
+ ]
);
}
diff --git a/lib/src/screens/settings/display_settings_page.dart b/lib/src/screens/settings/display_settings_page.dart
index c28db58..3fd30e8 100644
--- a/lib/src/screens/settings/display_settings_page.dart
+++ b/lib/src/screens/settings/display_settings_page.dart
@@ -50,6 +50,13 @@ class DisplaySettingsPage extends BasePage {
_displaySettingsViewModel.setShowAddressBookPopup(value);
},
),
+ SettingsSwitcherCell(
+ title: S.of(context).show_zcash_card,
+ value: _displaySettingsViewModel.showZcashCard,
+ onValueChange: (_, bool value) {
+ _displaySettingsViewModel.setShowZcashCard(value);
+ },
+ ),
SettingsPickerCell<SyncStatusDisplayMode>(
title: S.current.sync_status_display_mode,
items: SyncStatusDisplayMode.values.toList(),
diff --git a/lib/store/settings_store.dart b/lib/store/settings_store.dart
index cabf3ba..6ae2909 100644
--- a/lib/store/settings_store.dart
+++ b/lib/store/settings_store.dart
@@ -133,6 +133,7 @@ abstract class SettingsStoreBase with Store {
required this.silentPaymentsCardDisplay,
required this.mwebAlwaysScan,
required this.mwebCardDisplay,
+ required this.showZcashMissingFundsCard,
required this.mwebEnabled,
required this.hasEnabledMwebBefore,
required this.mwebNodeUri,
@@ -660,6 +661,11 @@ abstract class SettingsStoreBase with Store {
(bool mwebCardDisplay) =>
_sharedPreferences.setBool(PreferencesKey.mwebCardDisplay, mwebCardDisplay));
+ reaction(
+ (_) => showZcashMissingFundsCard,
+ (bool showZcashMissingFundsCard) =>
+ _sharedPreferences.setBool(PreferencesKey.showZcashMissingFundsCard, showZcashMissingFundsCard));
+
reaction((_) => mwebEnabled,
(bool mwebEnabled) => _sharedPreferences.setBool(PreferencesKey.mwebEnabled, mwebEnabled));
@@ -937,6 +943,9 @@ abstract class SettingsStoreBase with Store {
@observable
bool mwebCardDisplay;
+
+ @observable
+ bool showZcashMissingFundsCard;
@observable
bool mwebEnabled;
@@ -1197,6 +1206,7 @@ abstract class SettingsStoreBase with Store {
sharedPreferences.getBool(PreferencesKey.silentPaymentsCardDisplay) ?? true;
final mwebAlwaysScan = sharedPreferences.getBool(PreferencesKey.mwebAlwaysScan) ?? false;
final mwebCardDisplay = sharedPreferences.getBool(PreferencesKey.mwebCardDisplay) ?? true;
+ final showZcashMissingFundsCard = sharedPreferences.getBool(PreferencesKey.showZcashMissingFundsCard) ?? true;
final mwebEnabled = sharedPreferences.getBool(PreferencesKey.mwebEnabled) ?? false;
final hasEnabledMwebBefore =
sharedPreferences.getBool(PreferencesKey.hasEnabledMwebBefore) ?? false;
@@ -1554,6 +1564,7 @@ abstract class SettingsStoreBase with Store {
silentPaymentsCardDisplay: silentPaymentsCardDisplay,
mwebAlwaysScan: mwebAlwaysScan,
mwebCardDisplay: mwebCardDisplay,
+ showZcashMissingFundsCard: showZcashMissingFundsCard,
mwebEnabled: mwebEnabled,
mwebNodeUri: mwebNodeUri,
hasEnabledMwebBefore: hasEnabledMwebBefore,
@@ -1768,6 +1779,7 @@ abstract class SettingsStoreBase with Store {
sharedPreferences.getBool(PreferencesKey.silentPaymentsCardDisplay) ?? true;
mwebAlwaysScan = sharedPreferences.getBool(PreferencesKey.mwebAlwaysScan) ?? false;
mwebCardDisplay = sharedPreferences.getBool(PreferencesKey.mwebCardDisplay) ?? true;
+ showZcashMissingFundsCard = sharedPreferences.getBool(PreferencesKey.showZcashMissingFundsCard) ?? true;
mwebEnabled = sharedPreferences.getBool(PreferencesKey.mwebEnabled) ?? false;
hasEnabledMwebBefore = sharedPreferences.getBool(PreferencesKey.hasEnabledMwebBefore) ?? false;
final nodeId = sharedPreferences.getInt(PreferencesKey.currentNodeIdKey);
diff --git a/lib/view_model/dashboard/dashboard_view_model.dart b/lib/view_model/dashboard/dashboard_view_model.dart
index f1ee457..bc58a89 100644
--- a/lib/view_model/dashboard/dashboard_view_model.dart
+++ b/lib/view_model/dashboard/dashboard_view_model.dart
@@ -19,6 +19,7 @@ import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
import 'package:cake_wallet/store/dashboard/order_filter_store.dart';
import 'package:cake_wallet/utils/device_info.dart';
import 'package:cake_wallet/utils/show_pop_up.dart';
+import 'package:cake_wallet/zcash/zcash.dart';
import 'package:cw_core/utils/proxy_wrapper.dart';
import 'package:cake_wallet/utils/tor.dart';
import 'package:cake_wallet/wownero/wownero.dart' as wow;
@@ -580,6 +581,13 @@ abstract class DashboardViewModelBase with Store {
];
return errors;
}
+
+ @computed
+ bool get showZcashMissingFundsCard {
+ if (wallet.type != WalletType.zcash) return false;
+ if (!settingsStore.showZcashMissingFundsCard) return false;
+ return zcash!.showMissingFundsCard(wallet);
+ }
@computed
bool get hasSilentPayments =>
@@ -852,6 +860,16 @@ abstract class DashboardViewModelBase with Store {
mwebEnabled = false;
bitcoin!.setMwebEnabled(wallet, false);
}
+
+ @action
+ Future<void> rescanInternalChangeZcash() async {
+ await zcash!.rescanInternalChange(wallet);
+ }
+
+ @action
+ void dismissZcash() {
+ settingsStore.showZcashMissingFundsCard = false;
+ }
@action
void dismissDecredInfoCard() {
diff --git a/lib/view_model/hardware_wallet/bitbox_view_model.dart b/lib/view_model/hardware_wallet/bitbox_view_model.dart
index 3dc2c8a..07a412c 100644
--- a/lib/view_model/hardware_wallet/bitbox_view_model.dart
+++ b/lib/view_model/hardware_wallet/bitbox_view_model.dart
@@ -105,7 +105,7 @@ abstract class BitboxViewModelBase extends HardwareWalletViewModel with Store {
case WalletType.polygon:
return evm!.setHardwareWalletService(wallet, await getHardwareWalletService(wallet.type));
default:
- throw Exception('Unexpected wallet type: ${wallet.type}');
+ throw Exception('Unexpected wallet type: ${wallet.type} for bitbox');
}
}
}
diff --git a/lib/view_model/hardware_wallet/ledger_view_model.dart b/lib/view_model/hardware_wallet/ledger_view_model.dart
index 2820492..793f0df 100644
--- a/lib/view_model/hardware_wallet/ledger_view_model.dart
+++ b/lib/view_model/hardware_wallet/ledger_view_model.dart
@@ -189,7 +189,7 @@ abstract class LedgerViewModelBase extends HardwareWalletViewModel with Store {
case WalletType.polygon:
return evm!.setHardwareWalletService(wallet, await getHardwareWalletService(wallet.type));
default:
- throw Exception('Unexpected wallet type: ${wallet.type}');
+ throw Exception('Unexpected wallet type: ${wallet.type} for ledger');
}
}
diff --git a/lib/view_model/hardware_wallet/trezor_view_model.dart b/lib/view_model/hardware_wallet/trezor_view_model.dart
index d75a275..8a56fb1 100644
--- a/lib/view_model/hardware_wallet/trezor_view_model.dart
+++ b/lib/view_model/hardware_wallet/trezor_view_model.dart
@@ -73,7 +73,7 @@ abstract class TrezorViewModelBase extends HardwareWalletViewModel with Store {
case WalletType.polygon:
return evm!.setHardwareWalletService(wallet, await getHardwareWalletService(wallet.type));
default:
- throw Exception('Unexpected wallet type: ${wallet.type}');
+ throw Exception('Unexpected wallet type: ${wallet.type} for trezor');
}
}
}
diff --git a/lib/view_model/monero_account_list/monero_account_list_view_model.dart b/lib/view_model/monero_account_list/monero_account_list_view_model.dart
index 37b2898..5671a7f 100644
--- a/lib/view_model/monero_account_list/monero_account_list_view_model.dart
+++ b/lib/view_model/monero_account_list/monero_account_list_view_model.dart
@@ -53,7 +53,7 @@ abstract class MoneroAccountListViewModelBase with Store {
.toList();
}
- throw Exception('Unexpected wallet type: ${_wallet.type}');
+ throw Exception('Unexpected wallet type: ${_wallet.type} for monero');
}
final WalletBase _wallet;
diff --git a/lib/view_model/nano_account_list/nano_account_list_view_model.dart b/lib/view_model/nano_account_list/nano_account_list_view_model.dart
index ac92931..3bd0686 100644
--- a/lib/view_model/nano_account_list/nano_account_list_view_model.dart
+++ b/lib/view_model/nano_account_list/nano_account_list_view_model.dart
@@ -36,7 +36,7 @@ abstract class NanoAccountListViewModelBase with Store {
.toList();
}
- throw Exception('Unexpected wallet type: ${_wallet.type}');
+ throw Exception('Unexpected wallet type: ${_wallet.type} for nano');
}
final WalletBase _wallet;
diff --git a/lib/view_model/node_list/pow_node_list_view_model.dart b/lib/view_model/node_list/pow_node_list_view_model.dart
index 0e270a6..d917779 100644
--- a/lib/view_model/node_list/pow_node_list_view_model.dart
+++ b/lib/view_model/node_list/pow_node_list_view_model.dart
@@ -63,7 +63,7 @@ abstract class PowNodeListViewModelBase with Store {
node = getNanoDefaultPowNode(nodes: _nodeSource)!;
break;
default:
- throw Exception('Unexpected wallet type: ${_appStore.wallet!.type}');
+ throw Exception('Unexpected wallet type: ${_appStore.wallet!.type} for pow node list');
}
await setAsCurrent(node);
diff --git a/lib/view_model/send/send_view_model.dart b/lib/view_model/send/send_view_model.dart
index 3db878c..6fa3ac7 100644
--- a/lib/view_model/send/send_view_model.dart
+++ b/lib/view_model/send/send_view_model.dart
@@ -1035,7 +1035,7 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor
// priority: priority,
);
default:
- throw Exception('Unexpected wallet type: ${wallet.type}');
+ throw Exception('Unexpected wallet type: ${wallet.type} for send');
}
}
diff --git a/lib/view_model/settings/display_settings_view_model.dart b/lib/view_model/settings/display_settings_view_model.dart
index 0250008..4557638 100644
--- a/lib/view_model/settings/display_settings_view_model.dart
+++ b/lib/view_model/settings/display_settings_view_model.dart
@@ -49,6 +49,9 @@ abstract class DisplaySettingsViewModelBase with Store {
@computed
bool get showAddressBookPopup => _settingsStore.showAddressBookPopupEnabled;
+
+ @computed
+ bool get showZcashCard => _settingsStore.showZcashMissingFundsCard;
@computed
SyncStatusDisplayMode get syncStatusDisplayMode => _settingsStore.syncStatusDisplayMode;
@@ -103,6 +106,9 @@ abstract class DisplaySettingsViewModelBase with Store {
@action
void setBalanceDisplayMode(BalanceDisplayMode value) => _settingsStore.balanceDisplayMode = value;
+ @action
+ void setShowZcashCard(bool value) => _settingsStore.showZcashMissingFundsCard = value;
+
@action
void setShouldDisplayBalance(bool value) {
if (value) {
diff --git a/lib/view_model/wallet_keys_view_model.dart b/lib/view_model/wallet_keys_view_model.dart
index 002f574..83d1485 100644
--- a/lib/view_model/wallet_keys_view_model.dart
+++ b/lib/view_model/wallet_keys_view_model.dart
@@ -5,6 +5,7 @@ import 'package:cake_wallet/src/screens/transaction_details/standart_list_item.d
import 'package:cake_wallet/store/app_store.dart';
import 'package:cake_wallet/wownero/wownero.dart';
import 'package:cake_wallet/zano/zano.dart';
+import 'package:cake_wallet/zcash/zcash.dart';
import 'package:cw_core/transaction_direction.dart';
import 'package:cw_core/transaction_info.dart';
import 'package:cw_core/wallet_base.dart';
@@ -139,13 +140,15 @@ abstract class WalletKeysViewModelBase with Store {
case WalletType.zano:
keys = zano!.getKeys(_wallet);
break;
+ case WalletType.zcash:
+ keys = zcash!.getKeys(_wallet);
+ break;
case WalletType.ethereum:
case WalletType.polygon:
case WalletType.base:
case WalletType.arbitrum:
case WalletType.bsc:
case WalletType.solana:
- case WalletType.zcash:
case WalletType.tron:
items.addAll([
if (_wallet.privateKey != null)
@@ -208,35 +211,47 @@ abstract class WalletKeysViewModelBase with Store {
if (keys != null) {
items.addAll([
- if (keys['primaryAddress'] != null)
+ if ((keys['primaryAddress']??'').isNotEmpty)
StandartListItem(
key: ValueKey('${_walletName}_wallet_primary_address_item_key'),
title: S.current.primary_address,
value: keys['primaryAddress']!),
- if (keys['publicSpendKey'] != null)
+ if ((keys['publicSpendKey']??'').isNotEmpty)
StandartListItem(
key: ValueKey('${_walletName}_wallet_public_spend_key_item_key'),
title: S.current.spend_key_public,
value: keys['publicSpendKey']!,
),
- if (keys['privateSpendKey'] != null)
+ if ((keys['privateSpendKey']??'').isNotEmpty)
StandartListItem(
key: ValueKey('${_walletName}_wallet_private_spend_key_item_key'),
title: S.current.spend_key_private,
value: keys['privateSpendKey']!,
),
- if (keys['publicViewKey'] != null)
+ if ((keys['publicViewKey']??'').isNotEmpty)
StandartListItem(
key: ValueKey('${_walletName}_wallet_public_view_key_item_key'),
title: S.current.view_key_public,
value: keys['publicViewKey']!,
),
- if (keys['privateViewKey'] != null)
+ if ((keys['privateViewKey']??'').isNotEmpty)
StandartListItem(
key: ValueKey('${_walletName}_wallet_private_view_key_item_key'),
title: S.current.view_key_private,
value: keys['privateViewKey']!,
),
+ if ((keys['tsk']??'').isNotEmpty)
+ StandartListItem(
+ key: ValueKey('${_walletName}_wallet_transparent_secret_key_item_key'),
+ title: S.current.transparent_secret_key,
+ value: keys['tsk']!,
+ ),
+ if ((keys['uvk']??'').isNotEmpty)
+ StandartListItem(
+ key: ValueKey('${_walletName}_wallet_unified_view_key_item_key'),
+ title: S.current.unified_view_key,
+ value: keys['uvk']!,
+ ),
]);
}
}
@@ -292,7 +307,7 @@ abstract class WalletKeysViewModelBase with Store {
case WalletType.zcash:
return 'zcash-wallet';
default:
- throw Exception('Unexpected wallet type: ${_wallet.type.toString()}');
+ throw Exception('Unexpected wallet type: ${_wallet.type.toString()} for wallet keys');
}
}
diff --git a/lib/view_model/wallet_restore_view_model.dart b/lib/view_model/wallet_restore_view_model.dart
index e212e4c..4fdfc62 100644
--- a/lib/view_model/wallet_restore_view_model.dart
+++ b/lib/view_model/wallet_restore_view_model.dart
@@ -57,11 +57,11 @@ abstract class WalletRestoreViewModelBase extends WalletCreationVM with Store {
case WalletType.decred:
case WalletType.bitcoin:
case WalletType.litecoin:
+ case WalletType.zcash:
availableModes = [WalletRestoreMode.seed, WalletRestoreMode.keys];
break;
case WalletType.bitcoinCash:
case WalletType.zano:
- case WalletType.zcash:
case WalletType.dogecoin:
availableModes = [WalletRestoreMode.seed];
break;
@@ -95,7 +95,8 @@ abstract class WalletRestoreViewModelBase extends WalletCreationVM with Store {
WalletType.nano,
WalletType.banano,
WalletType.solana,
- WalletType.tron
+ WalletType.tron,
+ WalletType.zcash,
].contains(type);
late final bool onlyViewKeyRestore =
@@ -307,6 +308,13 @@ abstract class WalletRestoreViewModelBase extends WalletCreationVM with Store {
password: password,
pubkey: viewKey!,
);
+ case WalletType.zcash:
+ return zcash!.createZcashRestoreWalletFromPrivateKey(
+ name: name,
+ privateKey: options['private_key'] as String,
+ password: password,
+ height: height
+ );
default:
break;
}
diff --git a/lib/zcash/cw_zcash.dart b/lib/zcash/cw_zcash.dart
index 5f7b2f8..ce0de5e 100644
--- a/lib/zcash/cw_zcash.dart
+++ b/lib/zcash/cw_zcash.dart
@@ -20,8 +20,14 @@ class CWZcash extends Zcash {
WalletCredentials createZcashRestoreWalletFromPrivateKey(
{required String name,
required String privateKey,
- required String password}) {
- throw UnimplementedError();
+ required String password,
+ required int height}) {
+ return ZcashFromKeysWalletCredentials(
+ name: name,
+ height: height,
+ privateKey: privateKey,
+ password: password,
+ );
}
@override
@@ -122,11 +128,10 @@ class CWZcash extends Zcash {
Map<String, String> getKeys(Object wallet) {
final zcashWallet = wallet as ZcashWallet;
final seed = zcashWallet.seed;
- final address = zcashWallet.walletAddresses.address;
return <String, String>{
if (seed != null) 'seed': seed,
- 'primaryAddress': address,
+ ...(zcashWallet.keys as Map<String, String?>).map((final k, final v) => MapEntry(k, v??'')),
};
}
@@ -209,6 +214,18 @@ class CWZcash extends Zcash {
Future<int> getHeightByDate(DateTime date) {
return ZcashWalletBase.getHeightByDate(date);
}
+
+ @override
+ bool showMissingFundsCard(WalletBase wallet) {
+ final zcashWallet = wallet as ZcashWallet;
+ return zcashWallet.couldBeZashiWallet();
+ }
+
+ @override
+ Future<void> rescanInternalChange(WalletBase wallet) {
+ final zcashWallet = wallet as ZcashWallet;
+ return zcashWallet.rescanInternalChange();
+ }
}
const wordList = [
diff --git a/pubspec_base.yaml b/pubspec_base.yaml
index f8016d3..73bf78d 100644
--- a/pubspec_base.yaml
+++ b/pubspec_base.yaml
@@ -65,11 +65,11 @@ dependencies:
ref: c414574bc5ac349450f601e7f72c7b9f31b4d087
permission_handler: 11.4.0
device_display_brightness:
- git:
- url: https://github.com/MrCyjaneK/device_display_brightness.git
- ref: 4cac18c446ce686f3d75b1565badbd7da439bbd9
+ git:
+ url: https://github.com/MrCyjaneK/device_display_brightness.git
+ ref: 4cac18c446ce686f3d75b1565badbd7da439bbd9
wakelock_plus: ^1.2.5
- flutter_mailer:
+ flutter_mailer:
git:
url: https://github.com/taljacobson/flutter_mailer
ref: 9c4ed111a9151a2bbfb9afe2c18a37599c6f84f3
@@ -97,10 +97,10 @@ dependencies:
url: https://github.com/cake-tech/ens_dart.git
ref: 9fa09b9db69b8645d5d50a844652aa570451d101
fluttertoast: 8.2.12
-# tor:
-# git:
-# url: https://github.com/cake-tech/tor.git
-# ref: main
+ # tor:
+ # git:
+ # url: https://github.com/cake-tech/tor.git
+ # ref: main
socks5_proxy:
git:
url: https://github.com/LacticWhale/socks_dart
@@ -204,6 +204,17 @@ dependency_overrides:
web_socket_channel: ^3.0.2
freezed_annotation: 2.4.4
intl: 0.20.2
+ qr_flutter:
+ git:
+ url: https://github.com/cake-tech/qr.flutter.git
+ ref: cake-4.0.2
+ version: 4.0.2
+ file_picker:
+ git:
+ url: https://github.com/cake-tech/flutter_file_picker.git
+ ref: c414574bc5ac349450f601e7f72c7b9f31b4d087
+ decimal: ^2.3.3
+ flutter_rust_bridge: ^2.9.0
flutter_icons:
image_path: "assets/images/app_logo.png"
diff --git a/res/values/strings_ar.arb b/res/values/strings_ar.arb
index c782c27..5b49480 100644
--- a/res/values/strings_ar.arb
+++ b/res/values/strings_ar.arb
@@ -884,6 +884,7 @@
"show_keys": "اظهار السييد / المفاتيح",
"show_market_place": "إظهار السوق",
"show_seed": "عرض السييد",
+ "show_zcash_card": "إظهار بطاقة الأموال المفقودة zcash",
"sign_all": "قم بتوقيع الكل",
"sign_message": "تسجيل رسالة",
"sign_one": "وقع واحد",
@@ -1040,6 +1041,7 @@
"transaction_sent_notice": "إذا لم تستمر الشاشة بعد دقيقة واحدة ، فتحقق من مستكشف البلوك والبريد الإلكتروني.",
"transactions": "المعاملات",
"transactions_by_date": "المعاملات حسب التاريخ",
+ "transparent_secret_key": "مفتاح سري شفاف",
"transport_type": "نوع النقل",
"trongrid_history": "تاريخ ترونغريد",
"trusted": "موثوق به",
@@ -1063,6 +1065,7 @@
"unavailable_balance_description": ".ﺎﻫﺪﻴﻤﺠﺗ ءﺎﻐﻟﺇ ﺭﺮﻘﺗ ﻰﺘﺣ ﺕﻼﻣﺎﻌﻤﻠﻟ ﻝﻮﺻﻮﻠﻟ ﺔﻠﺑﺎﻗ ﺮﻴﻏ ﺓﺪﻤﺠﻤﻟﺍ ﺓﺪﺻﺭﻷﺍ ﻞﻈﺗ ﺎﻤﻨﻴﺑ ،ﺎﻬﺑ ﺔﺻﺎﺨﻟﺍ ﺕﻼﻣﺎﻌﻤﻟﺍ ﻝﺎﻤﺘﻛﺍ ﺩﺮﺠﻤﺑ ﺔﺣﺎﺘﻣ ﺔﻠﻔﻘﻤﻟﺍ ﺓﺪﺻﺭﻷﺍ ﺢﺒﺼﺘﺳ .ﻚﺑ ﺔﺻﺎﺨﻟﺍ ﺕﻼﻤﻌﻟﺍ ﻲﻓ ﻢﻜﺤﺘﻟﺍ ﺕﺍﺩﺍﺪﻋﺇ ﻲﻓ ﻂﺸﻧ ﻞﻜﺸﺑ ﺎﻫﺪﻴﻤﺠﺘﺑ ﺖﻤﻗ",
"unconfirmed": "رصيد غير مؤكد",
"understand": "لقد فهمت",
+ "unified_view_key": "مفتاح العرض الموحد",
"unlock": "الغاء القفل",
"unmatched_currencies": "عملة محفظتك الحالية لا تتطابق مع عملة QR الممسوحة ضوئيًا",
"unrestricted_background_service": "خدمة خلفية غير مقيدة",
@@ -1172,5 +1175,11 @@
"you_will_send": "تحويل من",
"youCanGoBackToYourDapp": "يمكنك العودة إلى DAPP الخاص بك الآن",
"your": "لك",
- "yy": "YY"
+ "yy": "YY",
+ "zcash_card_description": "إذا كنت لا ترى رصيدك الكامل، فيمكن لـ Cake Wallet محاولة سحب الأموال من عناوين التغيير الداخلية التي تستخدمها بعض المحافظ.",
+ "zcash_card_dismiss": "رفض",
+ "zcash_card_enable_later": "يمكنك دائمًا تمكين هذه البطاقة لاحقًا في الإعدادات",
+ "zcash_card_missing_funds": "الأموال المفقودة؟",
+ "zcash_card_scan": "مسح",
+ "zcash_card_warning": "لا تغلق التطبيق حتى يكتمل الإجراء، إذا قمت بذلك، فستحتاج إلى إعادة تشغيل هذه العملية من البداية."
}
\ No newline at end of file
diff --git a/res/values/strings_bg.arb b/res/values/strings_bg.arb
index a47b5ed..e79192e 100644
--- a/res/values/strings_bg.arb
+++ b/res/values/strings_bg.arb
@@ -884,6 +884,7 @@
"show_keys": "Покажи seed/keys",
"show_market_place": "Покажи пазар",
"show_seed": "Покажи seed",
+ "show_zcash_card": "Показване на zcash карта с липсващи средства",
"sign_all": "Подпишете всички",
"sign_message": "Съобщение за подписване",
"sign_one": "Подпишете един",
@@ -1040,6 +1041,7 @@
"transaction_sent_notice": "Ако процесът продължи повече от 1 минута, проверете някой block explorer и своя имейл.",
"transactions": "Транзакции",
"transactions_by_date": "Транзакции по дата",
+ "transparent_secret_key": "Прозрачен таен ключ",
"transport_type": "Тип транспорт",
"trongrid_history": "Trongrid History",
"trusted": "Надежден",
@@ -1063,6 +1065,7 @@
"unavailable_balance_description": "Неналично салдо: Тази обща сума включва средства, които са заключени в чакащи транзакции и тези, които сте замразили активно в настройките за контрол на монетите. Заключените баланси ще станат достъпни, след като съответните им транзакции бъдат завършени, докато замразените баланси остават недостъпни за транзакции, докато не решите да ги размразите.",
"unconfirmed": "Непотвърден баланс",
"understand": "Разбирам",
+ "unified_view_key": "Ключ за унифициран изглед",
"unlock": "Отключване",
"unmatched_currencies": "Валутата на този портфейл не съвпада с тази от сканирания QR код",
"unrestricted_background_service": "Неограничена фонова услуга",
@@ -1172,5 +1175,11 @@
"you_will_send": "Обръщане от",
"youCanGoBackToYourDapp": "Можете да се върнете при вашия Dapp сега",
"your": "Вашия",
- "yy": "гг"
+ "yy": "гг",
+ "zcash_card_description": "Ако не виждате пълния си баланс, Cake Wallet може да се опита да изтегли средства от вътрешни адреси за промяна, използвани от някои портфейли.",
+ "zcash_card_dismiss": "Отхвърляне",
+ "zcash_card_enable_later": "Винаги можете да активирате тази карта по-късно в настройките",
+ "zcash_card_missing_funds": "Липсват средства?",
+ "zcash_card_scan": "Сканиране",
+ "zcash_card_warning": "Не затваряйте приложението, докато процедурата не приключи, ако го направите, този процес ще трябва да се рестартира от нулата."
}
\ No newline at end of file
diff --git a/res/values/strings_cs.arb b/res/values/strings_cs.arb
index 166f91f..1a9927b 100644
--- a/res/values/strings_cs.arb
+++ b/res/values/strings_cs.arb
@@ -884,6 +884,7 @@
"show_keys": "Zobrazit seed/klíče",
"show_market_place": "Zobrazit trh",
"show_seed": "Zobrazit seed",
+ "show_zcash_card": "Ukažte kartu s chybějícími prostředky zcash",
"sign_all": "Podepište všechny",
"sign_message": "Podepsat zprávu",
"sign_one": "Podepsat jeden",
@@ -1040,6 +1041,7 @@
"transaction_sent_notice": "Pokud proces nepokročí během 1 minuty, zkontrolujte block explorer a svůj e-mail.",
"transactions": "Transakce",
"transactions_by_date": "Transakce podle data",
+ "transparent_secret_key": "Transparentní tajný klíč",
"transport_type": "Typ transportu",
"trongrid_history": "Trongridní historie",
"trusted": "Důvěřovat",
@@ -1063,6 +1065,7 @@
"unavailable_balance_description": "Nedostupný zůstatek: Tento součet zahrnuje prostředky, které jsou uzamčeny v nevyřízených transakcích a ty, které jste aktivně zmrazili v nastavení kontroly mincí. Uzamčené zůstatky budou k dispozici po dokončení příslušných transakcí, zatímco zmrazené zůstatky zůstanou pro transakce nepřístupné, dokud se nerozhodnete je uvolnit.",
"unconfirmed": "Nepotvrzený zůstatek",
"understand": "Rozumím",
+ "unified_view_key": "Klíč jednotného zobrazení",
"unlock": "Odemknout",
"unmatched_currencies": "Měna vaší současné peněženky neodpovídá té v naskenovaném QR kódu",
"unrestricted_background_service": "Neomezená služba na pozadí",
@@ -1172,5 +1175,11 @@
"you_will_send": "Směnit z",
"youCanGoBackToYourDapp": "Nyní se můžete vrátit do svého dappu",
"your": "Vaše",
- "yy": "YY"
+ "yy": "YY",
+ "zcash_card_description": "Pokud nevidíte svůj úplný zůstatek, Peněženka Cake se může pokusit vymést prostředky z interních změnových adres používaných některými peněženkami.",
+ "zcash_card_dismiss": "Propustit",
+ "zcash_card_enable_later": "Tuto kartu můžete kdykoli povolit později v nastavení",
+ "zcash_card_missing_funds": "Chybějící finanční prostředky?",
+ "zcash_card_scan": "Skenovat",
+ "zcash_card_warning": "Nezavírejte aplikaci, dokud se postup nedokončí, pokud tak učiníte, bude nutné tento proces restartovat od nuly."
}
\ No newline at end of file
diff --git a/res/values/strings_de.arb b/res/values/strings_de.arb
index 1d02603..27ed6cf 100644
--- a/res/values/strings_de.arb
+++ b/res/values/strings_de.arb
@@ -885,6 +885,7 @@
"show_keys": "Seed/Schlüssel anzeigen",
"show_market_place": "Marktplatz anzeigen",
"show_seed": "Seed zeigen",
+ "show_zcash_card": "Zeigen Sie die Karte mit fehlendem Zcash-Guthaben an",
"sign_all": "Alle unterschreiben",
"sign_message": "Nachricht unterschreiben",
"sign_one": "Unterschreiben",
@@ -1041,6 +1042,7 @@
"transaction_sent_notice": "Wenn der Bildschirm nach 1 Minute nicht weitergeht, überprüfen Sie einen Block-Explorer und Ihre E-Mail.",
"transactions": "Transaktionen",
"transactions_by_date": "Transaktionen nach Datum",
+ "transparent_secret_key": "Transparenter Geheimschlüssel",
"transport_type": "Transporttyp",
"trongrid_history": "Trongrid-Historie",
"trusted": "Vertrauenswürdige",
@@ -1065,6 +1067,7 @@
"unconfirmed": "Unbestätigter Saldo",
"und": "und",
"understand": "Ich verstehe",
+ "unified_view_key": "Einheitlicher Ansichtsschlüssel",
"unlock": "Freischalten",
"unmatched_currencies": "Die Währung Ihres aktuellen Wallets stimmt nicht mit der des gescannten QR überein",
"unrestricted_background_service": "Uneingeschränkter Hintergrunddienst",
@@ -1175,5 +1178,11 @@
"you_will_send": "Konvertieren von",
"youCanGoBackToYourDapp": "Sie können jetzt zu Ihrem Dapp zurückkehren",
"your": "Dein",
- "yy": "YY"
+ "yy": "YY",
+ "zcash_card_description": "Wenn Sie nicht Ihr vollständiges Guthaben sehen, kann Cake Wallet versuchen, Geld von internen Wechseladressen abzuheben, die von einigen Wallets verwendet werden.",
+ "zcash_card_dismiss": "Zurückweisen",
+ "zcash_card_enable_later": "Sie können diese Karte später jederzeit in den Einstellungen aktivieren",
+ "zcash_card_missing_funds": "Fehlende Mittel?",
+ "zcash_card_scan": "Scan",
+ "zcash_card_warning": "Schließen Sie die App nicht, bis der Vorgang abgeschlossen ist. Andernfalls muss der Vorgang von Grund auf neu gestartet werden."
}
\ No newline at end of file
diff --git a/res/values/strings_en.arb b/res/values/strings_en.arb
index 74b4b2e..f7b9016 100644
--- a/res/values/strings_en.arb
+++ b/res/values/strings_en.arb
@@ -885,6 +885,7 @@
"show_keys": "Show seed/keys",
"show_market_place": "Show Marketplace",
"show_seed": "Show seed",
+ "show_zcash_card": "Show zcash missing funds card",
"sign_all": "Sign All",
"sign_message": "Sign Message",
"sign_one": "Sign One",
@@ -1041,6 +1042,7 @@
"transaction_sent_notice": "If the screen doesn’t proceed after 1 minute, check a block explorer and your email.",
"transactions": "Transactions",
"transactions_by_date": "Transactions by date",
+ "transparent_secret_key": "Transparent Secret Key",
"transport_type": "Transport Type",
"trongrid_history": "TronGrid history",
"trusted": "Trusted",
@@ -1064,6 +1066,7 @@
"unavailable_balance_description": "Unavailable Balance: This total includes funds that are locked in pending transactions and those you have actively frozen in your coin control settings. Locked balances will become available once their respective transactions are completed, while frozen balances remain inaccessible for transactions until you decide to unfreeze them.",
"unconfirmed": "Unconfirmed Balance",
"understand": "I understand",
+ "unified_view_key": "Unified View Key",
"unlock": "Unlock",
"unmatched_currencies": "Your current wallet's currency does not match that of the scanned QR",
"unrestricted_background_service": "Unrestricted background service",
@@ -1173,5 +1176,11 @@
"you_will_send": "Convert from",
"youCanGoBackToYourDapp": "You can go back to your dApp now",
"your": "Your",
- "yy": "YY"
+ "yy": "YY",
+ "zcash_card_description": "If you don't see your full balance Cake Wallet can attempt to sweep funds from internal change addresses used by some wallets.",
+ "zcash_card_dismiss": "Dismiss",
+ "zcash_card_enable_later": "You can always enable this card later in settings",
+ "zcash_card_missing_funds": "Missing funds?",
+ "zcash_card_scan": "Scan",
+ "zcash_card_warning": "Do not close the app until the procedure completes, if you do so this process will need to restart from scratch."
}
\ No newline at end of file
diff --git a/res/values/strings_es.arb b/res/values/strings_es.arb
index 65712e6..fe4e499 100644
--- a/res/values/strings_es.arb
+++ b/res/values/strings_es.arb
@@ -885,6 +885,7 @@
"show_keys": "Mostrar semilla/claves",
"show_market_place": "Mostrar Cake Features",
"show_seed": "Mostrar semilla",
+ "show_zcash_card": "Mostrar tarjeta de fondos faltantes de zcash",
"sign_all": "Firmar Todo",
"sign_message": "Firmar mensaje",
"sign_one": "Firmar 1",
@@ -1041,6 +1042,7 @@
"transaction_sent_notice": "Si la pantalla no avanza después de 1 minuto, verifica un explorador de bloques y tu correo electrónico.",
"transactions": "Transacciones",
"transactions_by_date": "Transacciones por fecha",
+ "transparent_secret_key": "Clave secreta transparente",
"transport_type": "Tipo de Transporte",
"trongrid_history": "Historial de TronGrid",
"trusted": "Confiable",
@@ -1064,6 +1066,7 @@
"unavailable_balance_description": "Saldo no disponible: este total incluye fondos que están bloqueados en transacciones pendientes y los que has congelado activamente en la configuración de Control de Monedas. Los saldos bloqueados estarán disponibles una vez que sus respectivas transacciones se completen, mientras que los saldos congelados permanecerán inaccesibles para transacciones hasta que decidas descongelarlos.",
"unconfirmed": "Saldo no confirmado",
"understand": "Entiendo",
+ "unified_view_key": "Clave de vista unificada",
"unlock": "Desbloquear",
"unmatched_currencies": "La moneda de tu billetera actual no coincide con la del código QR escaneado",
"unrestricted_background_service": "Servicio en segundo plano sin restricciones",
@@ -1174,5 +1177,11 @@
"you_will_send": "Convertir desde",
"youCanGoBackToYourDapp": "Ahora puedes volver a tu dApp",
"your": "Tu",
- "yy": "YY"
+ "yy": "YY",
+ "zcash_card_description": "Si no ve su saldo completo, Cake Wallet puede intentar barrer fondos de las direcciones de cambio internas utilizadas por algunas billeteras.",
+ "zcash_card_dismiss": "Despedir",
+ "zcash_card_enable_later": "Siempre puedes habilitar esta tarjeta más tarde en la configuración",
+ "zcash_card_missing_funds": "¿Faltan fondos?",
+ "zcash_card_scan": "Escanear",
+ "zcash_card_warning": "No cierre la aplicación hasta que se complete el procedimiento; si lo hace, este proceso deberá reiniciarse desde cero."
}
\ No newline at end of file
diff --git a/res/values/strings_fa.arb b/res/values/strings_fa.arb
index faeca5a..411bb3f 100644
--- a/res/values/strings_fa.arb
+++ b/res/values/strings_fa.arb
@@ -885,6 +885,7 @@
"show_keys": "نمایش سید/کلیدها",
"show_market_place": "نمایش بازارچه",
"show_seed": "نمایش سید",
+ "show_zcash_card": "کارت zcash کمبود وجوه را نشان دهید",
"sign_all": "امضای همه",
"sign_message": "امضای پیام",
"sign_one": "امضای یکی",
@@ -1041,6 +1042,7 @@
"transaction_sent_notice": "اگر صفحه بعد از ۱ دقیقه پیش نرفت، یک کاوشگر بلاک و ایمیل خود را چک کنید.",
"transactions": "تراکنشها",
"transactions_by_date": "تراکنشها بر اساس تاریخ",
+ "transparent_secret_key": "کلید مخفی شفاف",
"transport_type": "نوع انتقال",
"trongrid_history": "تاریخچه TronGrid",
"trusted": "قابل اعتماد",
@@ -1063,6 +1065,7 @@
"unavailable_balance_description": "موجودی غیرقابل دسترس: این مجموع شامل وجوهی است که در تراکنشهای در انتظار قفل شدهاند و آنهایی که شما به طور فعال در تنظیمات کنترل کوین خود مسدود کردهاید.\nموجودیهای قفل شده پس از تکمیل تراکنشهای مربوطه در دسترس قرار میگیرند، در حالی که موجودیهای مسدود شده تا زمانی که تصمیم به رفع مسدودی آنها نگیرید، برای تراکنشها غیرقابل دسترس باقی میمانند.",
"unconfirmed": "موجودی تایید نشده",
"understand": "متوجه شدم",
+ "unified_view_key": "کلید نمای یکپارچه",
"unlock": "باز کردن قفل",
"unmatched_currencies": "ارز کیف پول فعلی شما با کد QR اسکن شده مطابقت ندارد",
"unrestricted_background_service": "سرویس پسزمینه نامحدود",
@@ -1171,5 +1174,11 @@
"you_will_send": "تبدیل از",
"youCanGoBackToYourDapp": "اکنون میتوانید به dApp خود بازگردید",
"your": "شما",
- "yy": "YY"
+ "yy": "YY",
+ "zcash_card_description": "اگر موجودی کامل خود را نمیبینید، Cake Wallet میتواند تلاش کند از آدرسهای تغییرات داخلی استفاده شده توسط برخی کیف پولها، وجوهی را جمعآوری کند.",
+ "zcash_card_dismiss": "رد کردن",
+ "zcash_card_enable_later": "همیشه میتوانید این کارت را بعداً در تنظیمات فعال کنید",
+ "zcash_card_missing_funds": "کمبود بودجه؟",
+ "zcash_card_scan": "اسکن کنید",
+ "zcash_card_warning": "تا زمانی که مراحل کامل نشده است، برنامه را نبندید، در صورت انجام این کار، این فرآیند باید از ابتدا مجدداً راه اندازی شود."
}
\ No newline at end of file
diff --git a/res/values/strings_fr.arb b/res/values/strings_fr.arb
index cb1b42e..bec9ac1 100644
--- a/res/values/strings_fr.arb
+++ b/res/values/strings_fr.arb
@@ -884,6 +884,7 @@
"show_keys": "Visualiser la phrase secrète (seed) et les clefs",
"show_market_place": "Afficher la place de marché",
"show_seed": "Visualiser la phrase secrète (seed)",
+ "show_zcash_card": "Afficher la carte de fonds manquants zcash",
"sign_all": "Signer tout",
"sign_message": "Signer le message",
"sign_one": "Signer un",
@@ -1040,6 +1041,7 @@
"transaction_sent_notice": "Si l'écran ne continue pas après 1 minute, vérifiez un explorateur de blocs et votre e-mail.",
"transactions": "Transactions",
"transactions_by_date": "Transactions par date",
+ "transparent_secret_key": "Clé secrète transparente",
"transport_type": "Type de transport",
"trongrid_history": "Histoire de la trongride",
"trusted": "de confiance",
@@ -1063,6 +1065,7 @@
"unavailable_balance_description": "Solde indisponible : ce total comprend les fonds bloqués dans les transactions en attente et ceux que vous avez activement gelés dans vos paramètres de contrôle des pièces. Les soldes bloqués deviendront disponibles une fois leurs transactions respectives terminées, tandis que les soldes gelés resteront inaccessibles aux transactions jusqu'à ce que vous décidiez de les débloquer.",
"unconfirmed": "Solde non confirmé",
"understand": "J'ai compris",
+ "unified_view_key": "Clé de vue unifiée",
"unlock": "Ouvrir",
"unmatched_currencies": "La devise de votre portefeuille (wallet) actuel ne correspond pas à celle du QR code scanné",
"unrestricted_background_service": "Service de fond sans restriction",
@@ -1172,5 +1175,11 @@
"you_will_send": "Convertir depuis",
"youCanGoBackToYourDapp": "Vous pouvez retourner à votre Dapp maintenant",
"your": "Ton",
- "yy": "AA"
+ "yy": "AA",
+ "zcash_card_description": "Si vous ne voyez pas votre solde complet, Cake Wallet peut tenter de récupérer des fonds à partir d'adresses de modification internes utilisées par certains portefeuilles.",
+ "zcash_card_dismiss": "Rejeter",
+ "zcash_card_enable_later": "Vous pourrez toujours activer cette carte plus tard dans les paramètres",
+ "zcash_card_missing_funds": "Des fonds manquants ?",
+ "zcash_card_scan": "Balayage",
+ "zcash_card_warning": "Ne fermez pas l'application tant que la procédure n'est pas terminée, si vous le faites, ce processus devra redémarrer à partir de zéro."
}
\ No newline at end of file
diff --git a/res/values/strings_gn.arb b/res/values/strings_gn.arb
index 2c64db5..278fcf8 100644
--- a/res/values/strings_gn.arb
+++ b/res/values/strings_gn.arb
@@ -679,6 +679,7 @@
"show_keys": "Hechauka ñe’ẽñemi",
"show_market_place": "Hechauka ñemuha renda",
"show_seed": "Hechauka ñe’ẽñemi",
+ "show_zcash_card": "Ohechauka zcash tarjeta de fondos ofaltáva .",
"sign_message": "Marandu ñemboheraguapy rehegua",
"sign_up": "Mboguapy kuatiápe",
"sign_verify_message": "Ñemboheraguapy térã vichea jey marandu",
@@ -809,6 +810,7 @@
"transaction_sent_notice": "Ko pantalla ndohasai ramo aravo’ive rire, eheka pe jehekaha bloque-pe ha nde korreo electrónico-pe.",
"transactions": "jehuperehaí-kuera",
"transactions_by_date": "Ára ñembohasa-kuera rehegua",
+ "transparent_secret_key": "Clave secreta transparente rehegua .",
"trongrid_history": "trongrid rapykuere",
"trusted": "jeroviaha",
"tx_commit_exception_no_dust_on_change": "Oñemboyke pe transacción ko monto reheve. Ko’ã moneda rupive ikatu remondo ${min} ndorekóiva ñemoambue térã ${max} ombohasa jey pe ñemoambue.",
@@ -829,6 +831,7 @@
"unavailable_balance_description": "Ndoikói saldo ojeipuru haguã: ko enteroite oguereko viru oñembotýva transacción oha’arõhápe ha avei umi remohãtãva ne configuración-pe moneda ñangarekohápe. Umi saldo ojejokóva ikatúta ojepuru og̃uahembavove transacción-kuéra, ha umi saldo oĩva jejokópe opytáta ndaikatúi hag̃ua ojeipuru, reipe´apeve peve jejokógui.",
"unconfirmed": "noñemoañetepái gueteri saldo",
"understand": "Apilla",
+ "unified_view_key": "Clave de Visión Unificial rehegua .",
"unlock": "jeipe’a jokohagui",
"unmatched_currencies": "Pe moneda ndebilletera ko’agagua ndojoajúi pe QR oje-escaneva ndive",
"unspent_change": "Moambue",
@@ -913,5 +916,11 @@
"you_pay": "Nde rehepymeʼẽ",
"you_will_get": "Oñemoambue haguã",
"you_will_send": "Oñemoambue pe",
- "yy": "Ha"
+ "yy": "Ha",
+ "zcash_card_description": "Nderehecháiramo nde billetera de torta de balance completo ikatu oñeha’ã ombojere fondo umi dirección de cambio interno-gui oiporúva algunas billeteras.",
+ "zcash_card_dismiss": "Mboyke",
+ "zcash_card_enable_later": "Ikatu akóinte emboguata ko tarjeta upe rire ñembohekorãme .",
+ "zcash_card_missing_funds": "¿Ofalta umi fondo?",
+ "zcash_card_scan": "Escaneo rehegua .",
+ "zcash_card_warning": "Ani remboty pe app ojejapopa peve pe procedimiento, rejapo ramo upéicha ko proceso tekotevẽta oñepyrũ jey cero guive."
}
\ No newline at end of file
diff --git a/res/values/strings_ha.arb b/res/values/strings_ha.arb
index c755a98..b98c939 100644
--- a/res/values/strings_ha.arb
+++ b/res/values/strings_ha.arb
@@ -886,6 +886,7 @@
"show_keys": "Nuna iri/maɓallai",
"show_market_place": "Nuna dan kasuwa",
"show_seed": "Nuna iri",
+ "show_zcash_card": "Nuna katin kuɗi da ya ɓace zcash",
"sign_all": "Shiga All",
"sign_message": "Sa hannu",
"sign_one": "Alamar daya",
@@ -1042,6 +1043,7 @@
"transaction_sent_notice": "Idan allon bai ci gaba ba bayan minti 1, duba mai binciken toshewa da imel ɗin ku.",
"transactions": "Ma'amaloli",
"transactions_by_date": "Ma'amaloli ta kwanan wata",
+ "transparent_secret_key": "Maɓallin Sirrin Maɓalli",
"transport_type": "Nau'in sufuri",
"trongrid_history": "Tarihin Trongrid",
"trusted": "Amintacce",
@@ -1065,6 +1067,7 @@
"unavailable_balance_description": "Ma'auni Babu: Wannan jimlar ya haɗa da kuɗi waɗanda ke kulle a cikin ma'amaloli da ke jiran aiki da waɗanda kuka daskare sosai a cikin saitunan sarrafa kuɗin ku. Ma'auni da aka kulle za su kasance da zarar an kammala ma'amalolinsu, yayin da daskararrun ma'auni ba za su iya samun damar yin ciniki ba har sai kun yanke shawarar cire su.",
"unconfirmed": "Ba a tabbatar ba",
"understand": "na gane",
+ "unified_view_key": "Maɓallin Duba Haɗin Kai",
"unlock": "Buɗe",
"unmatched_currencies": "Nau'in walat ɗin ku na yanzu bai dace da na lambar QR da aka bincika ba",
"unrestricted_background_service": "Sabis na baya",
@@ -1175,5 +1178,11 @@
"you_will_send": "Maida daga",
"youCanGoBackToYourDapp": "Kuna iya komawa zuwa DPP ɗinku yanzu",
"your": "Naku",
- "yy": "YY"
+ "yy": "YY",
+ "zcash_card_description": "Idan ba ku ga cikakken ma'auni na Cake Wallet na iya ƙoƙarin share kuɗi daga adiresoshin canji na ciki waɗanda wasu wallet ɗin ke amfani da su.",
+ "zcash_card_dismiss": "Korar",
+ "zcash_card_enable_later": "Kuna iya kunna wannan katin koyaushe a cikin saitunan",
+ "zcash_card_missing_funds": "Bace kudi?",
+ "zcash_card_scan": "Duba",
+ "zcash_card_warning": "Kar a rufe app ɗin har sai an kammala aikin, idan kun yi haka wannan tsari zai buƙaci sake farawa daga karce."
}
\ No newline at end of file
diff --git a/res/values/strings_hi.arb b/res/values/strings_hi.arb
index 1b9e681..3b71a9a 100644
--- a/res/values/strings_hi.arb
+++ b/res/values/strings_hi.arb
@@ -622,8 +622,8 @@
"payjoin_unavailable_sheet_title": "Payjoin अनुपलब्ध क्यों है?",
"payment_id": "भुगतान ID: ",
"payment_made_easy": "भुगतान आसान किया गया",
- "Payment_was_received": "आपका भुगतान प्राप्त हो गया था।",
"payment_was_received": "आपका भुगतान प्राप्त हुआ था।",
+ "Payment_was_received": "आपका भुगतान प्राप्त हो गया था।",
"payments": "भुगतान",
"pending": " (अपूर्ण)",
"percentageOf": "${amount} का",
@@ -886,6 +886,7 @@
"show_keys": "बीज / कुंजियाँ दिखाएँ",
"show_market_place": "बाज़ार दिखाएँ",
"show_seed": "बीज दिखाओ",
+ "show_zcash_card": "Zcash गुम फंड कार्ड दिखाएं",
"sign_all": "साइन इन करें",
"sign_message": "हस्ताक्षर संदेश",
"sign_one": "साइन वन",
@@ -1042,6 +1043,7 @@
"transaction_sent_notice": "अगर 1 मिनट के बाद भी स्क्रीन आगे नहीं बढ़ती है, तो ब्लॉक एक्सप्लोरर और अपना ईमेल देखें।",
"transactions": "लेन-देन",
"transactions_by_date": "तारीख से लेन-देन",
+ "transparent_secret_key": "पारदर्शी गुप्त कुंजी",
"transport_type": "परिवहन प्रकार",
"trongrid_history": "ट्रॉन्ग्रिड का इतिहास",
"trusted": "भरोसा",
@@ -1065,6 +1067,7 @@
"unavailable_balance_description": "अनुपलब्ध शेष राशि: इस कुल में वे धनराशि शामिल हैं जो लंबित लेनदेन में बंद हैं और जिन्हें आपने अपनी सिक्का नियंत्रण सेटिंग्स में सक्रिय रूप से जमा कर रखा है। लॉक किए गए शेष उनके संबंधित लेन-देन पूरे होने के बाद उपलब्ध हो जाएंगे, जबकि जमे हुए शेष लेन-देन के लिए अप्राप्य रहेंगे जब तक कि आप उन्हें अनफ्रीज करने का निर्णय नहीं लेते।",
"unconfirmed": "अपुष्ट शेष राशि",
"understand": "मुझे समझ",
+ "unified_view_key": "एकीकृत दृश्य कुंजी",
"unlock": "अनलॉक",
"unmatched_currencies": "आपके वर्तमान वॉलेट की मुद्रा स्कैन किए गए क्यूआर से मेल नहीं खाती",
"unrestricted_background_service": "अप्रतिबंधित पृष्ठभूमि सेवा",
@@ -1174,5 +1177,11 @@
"you_will_send": "से रूपांतरित करें",
"youCanGoBackToYourDapp": "अब आप अपने DAPP पर वापस जा सकते हैं",
"your": "आपका",
- "yy": "वाईवाई"
+ "yy": "वाईवाई",
+ "zcash_card_description": "यदि आपको अपना पूरा बैलेंस नहीं दिख रहा है तो केक वॉलेट कुछ वॉलेट्स द्वारा उपयोग किए गए आंतरिक परिवर्तन पतों से धनराशि निकालने का प्रयास कर सकता है।",
+ "zcash_card_dismiss": "नकार देना",
+ "zcash_card_enable_later": "आप इस कार्ड को बाद में सेटिंग में कभी भी सक्षम कर सकते हैं",
+ "zcash_card_missing_funds": "धन की कमी?",
+ "zcash_card_scan": "स्कैन",
+ "zcash_card_warning": "प्रक्रिया पूरी होने तक ऐप को बंद न करें, यदि आप ऐसा करते हैं तो इस प्रक्रिया को स्क्रैच से पुनः आरंभ करने की आवश्यकता होगी।"
}
\ No newline at end of file
diff --git a/res/values/strings_hr.arb b/res/values/strings_hr.arb
index f009db3..8b0716d 100644
--- a/res/values/strings_hr.arb
+++ b/res/values/strings_hr.arb
@@ -884,6 +884,7 @@
"show_keys": "Prikaži pristupni izraz/ključ",
"show_market_place": "Prikaži tržište",
"show_seed": "Prikaži pristupni izraz",
+ "show_zcash_card": "Prikaži zcash karticu s nedostajućim sredstvima",
"sign_all": "Potpisati sve",
"sign_message": "Poruka",
"sign_one": "Potpisati jedan",
@@ -1040,6 +1041,7 @@
"transaction_sent_notice": "Ako se zaslon ne nastavi nakon 1 minute, provjerite block explorer i svoju e-poštu.",
"transactions": "Transakcije",
"transactions_by_date": "Transakcije prema datumu",
+ "transparent_secret_key": "Prozirni tajni ključ",
"transport_type": "Transportni tip",
"trongrid_history": "Povijest Trongrida",
"trusted": "vjerovao",
@@ -1063,6 +1065,7 @@
"unavailable_balance_description": "Nedostupno stanje: Ovaj ukupni iznos uključuje sredstva koja su zaključana u transakcijama na čekanju i ona koja ste aktivno zamrznuli u postavkama kontrole novčića. Zaključani saldi postat će dostupni kada se dovrše njihove transakcije, dok zamrznuti saldi ostaju nedostupni za transakcije sve dok ih ne odlučite odmrznuti.",
"unconfirmed": "Nepotvrđeno stanje",
"understand": "Razumijem",
+ "unified_view_key": "Unified View Key",
"unlock": "Otključati",
"unmatched_currencies": "Valuta vašeg trenutnog novčanika ne odgovara onoj na skeniranom QR-u",
"unrestricted_background_service": "Neograničena pozadinska usluga",
@@ -1172,5 +1175,11 @@
"you_will_send": "Razmijeni iz",
"youCanGoBackToYourDapp": "Sada se možete vratiti na svoj dapp",
"your": "Vaš",
- "yy": "GG"
+ "yy": "GG",
+ "zcash_card_description": "Ako ne vidite svoj puni saldo, Cake Wallet može pokušati počistiti sredstva s internih adresa za promjenu koje koriste neki novčanici.",
+ "zcash_card_dismiss": "Odbaciti",
+ "zcash_card_enable_later": "Tu karticu uvijek možete omogućiti kasnije u postavkama",
+ "zcash_card_missing_funds": "Nedostaju sredstva?",
+ "zcash_card_scan": "Skenirati",
+ "zcash_card_warning": "Ne zatvarajte aplikaciju dok se postupak ne dovrši, ako to učinite, ovaj će se postupak morati ponovno pokrenuti ispočetka."
}
\ No newline at end of file
diff --git a/res/values/strings_hy.arb b/res/values/strings_hy.arb
index 1e92f7e..7c5317f 100644
--- a/res/values/strings_hy.arb
+++ b/res/values/strings_hy.arb
@@ -882,6 +882,7 @@
"show_keys": "Ցուցադրել բանալիներ",
"show_market_place": "Ցուցադրել շուկան",
"show_seed": "Ցուցադրել սերմ",
+ "show_zcash_card": "Ցույց տալ zcash բացակայող միջոցների քարտը",
"sign_all": "Ստորագրեք բոլորը",
"sign_message": "Կնքել հաղորդագրություն",
"sign_one": "Ստորագրել մեկը",
@@ -1038,6 +1039,7 @@
"transaction_sent_notice": "Եթե էկրանը 1 րոպեի ընթացքում չի թարմանում, խնդրում ենք ստուգել բլոկի բացահայտիչը և Ձեր էլ. փոստը",
"transactions": "Փոխանցումներ",
"transactions_by_date": "Փոխանցումներ ամսաթվով",
+ "transparent_secret_key": "Թափանցիկ գաղտնի բանալի",
"transport_type": "Տրանսպորտի տեսակը",
"trongrid_history": "TronGrid պատմություն",
"trusted": "Վստահելի",
@@ -1061,6 +1063,7 @@
"unavailable_balance_description": "Անհասանելի մնացորդ: Այս ընդհանուր գումարը ներառում է այն միջոցները, որոնք արգելափակված են ընթացիկ գործարքներում և նրանք, որոնք դուք ակտիվորեն սառեցրել եք արժույթների վերահսկման կարգավորումների մեջ։ Արգելափակված մնացորդները կդառնան հասանելի, երբ համապատասխան գործարքները կավարտվեն, մինչդեռ սառեցված մնացորդները կմնան անհասանելի մինչև դուք որոշեք դրանք ապասառեցնել։",
"unconfirmed": "Չհաստատված մնացորդ",
"understand": "Ես հասկանում եմ",
+ "unified_view_key": "Դիտման միասնական բանալի",
"unlock": "Բացել",
"unmatched_currencies": "Ձեր ընթացիկ դրամապանակի արժույթը չի համապատասխանում սկանավորված QR կոդի արժույթին",
"unrestricted_background_service": "Անսահմանափակ ֆոնային ծառայություն",
@@ -1170,5 +1173,11 @@
"you_will_send": "Փոխանակեք",
"youCanGoBackToYourDapp": "Այժմ կարող եք վերադառնալ ձեր DAPP- ին",
"your": "Քո",
- "yy": "ՏՏ"
+ "yy": "ՏՏ",
+ "zcash_card_description": "Եթե դուք չեք տեսնում ձեր ամբողջական մնացորդը Cake Wallet-ը կարող է փորձել միջոցներ հավաքել որոշ դրամապանակների կողմից օգտագործվող ներքին փոփոխության հասցեներից:",
+ "zcash_card_dismiss": "Հեռացնել",
+ "zcash_card_enable_later": "Դուք միշտ կարող եք ակտիվացնել այս քարտը կարգավորումներում",
+ "zcash_card_missing_funds": "Բացակայող միջոցներ.",
+ "zcash_card_scan": "Սկանավորել",
+ "zcash_card_warning": "Մի փակեք հավելվածը մինչև ընթացակարգի ավարտը, եթե դա անեք, այս գործընթացը պետք է վերագործարկվի զրոյից:"
}
\ No newline at end of file
diff --git a/res/values/strings_id.arb b/res/values/strings_id.arb
index ccaf0ef..a3c56a8 100644
--- a/res/values/strings_id.arb
+++ b/res/values/strings_id.arb
@@ -887,6 +887,7 @@
"show_keys": "Tampilkan seed/kunci",
"show_market_place": "Tampilkan Pasar",
"show_seed": "Tampilkan seed",
+ "show_zcash_card": "Tunjukkan kartu dana zcash yang hilang",
"sign_all": "Menandatangani semua",
"sign_message": "Pesan tanda",
"sign_one": "Tanda satu",
@@ -1043,6 +1044,7 @@
"transaction_sent_notice": "Jika layar tidak bergerak setelah 1 menit, periksa block explorer dan email Anda.",
"transactions": "Transaksi",
"transactions_by_date": "Transaksi berdasarkan tanggal",
+ "transparent_secret_key": "Kunci Rahasia Transparan",
"transport_type": "Jenis transportasi",
"trongrid_history": "Sejarah Trongrid",
"trusted": "Dipercayai",
@@ -1066,6 +1068,7 @@
"unavailable_balance_description": "Saldo Tidak Tersedia: Total ini termasuk dana yang terkunci dalam transaksi yang tertunda dan dana yang telah Anda bekukan secara aktif di pengaturan kontrol koin Anda. Saldo yang terkunci akan tersedia setelah transaksi masing-masing selesai, sedangkan saldo yang dibekukan tetap tidak dapat diakses untuk transaksi sampai Anda memutuskan untuk mencairkannya.",
"unconfirmed": "Saldo Belum Dikonfirmasi",
"understand": "Saya mengerti",
+ "unified_view_key": "Kunci Tampilan Terpadu",
"unlock": "Membuka kunci",
"unmatched_currencies": "Mata uang dompet Anda saat ini tidak cocok dengan yang ditandai QR",
"unrestricted_background_service": "Layanan latar belakang tidak terbatas",
@@ -1175,5 +1178,11 @@
"you_will_send": "Konversi dari",
"youCanGoBackToYourDapp": "Anda dapat kembali ke dapp Anda sekarang",
"your": "Milikmu",
- "yy": "YY"
+ "yy": "YY",
+ "zcash_card_description": "Jika Anda tidak melihat saldo penuh, Cake Wallet dapat mencoba menyapu dana dari alamat perubahan internal yang digunakan oleh beberapa dompet.",
+ "zcash_card_dismiss": "Membubarkan",
+ "zcash_card_enable_later": "Anda selalu dapat mengaktifkan kartu ini nanti di pengaturan",
+ "zcash_card_missing_funds": "Dana hilang?",
+ "zcash_card_scan": "Pindai",
+ "zcash_card_warning": "Jangan tutup aplikasi hingga prosedur selesai, jika Anda melakukannya, proses ini perlu dimulai ulang dari awal."
}
\ No newline at end of file
diff --git a/res/values/strings_it.arb b/res/values/strings_it.arb
index a3143a4..827d21e 100644
--- a/res/values/strings_it.arb
+++ b/res/values/strings_it.arb
@@ -885,6 +885,7 @@
"show_keys": "Mostra seme/chiavi",
"show_market_place": "Mostra mercato",
"show_seed": "Mostra seme",
+ "show_zcash_card": "Mostra la carta con fondi mancanti zcash",
"sign_all": "Firma tutto",
"sign_message": "Firma messaggio",
"sign_one": "Segna uno",
@@ -1041,6 +1042,7 @@
"transaction_sent_notice": "Se la schermata non procede dopo 1 minuto, controlla un block explorer e la tua email.",
"transactions": "Transazioni",
"transactions_by_date": "Transazioni per data",
+ "transparent_secret_key": "Chiave segreta trasparente",
"transport_type": "Tipo di trasporto",
"trongrid_history": "Cronologia TronGrid",
"trusted": "Fidato",
@@ -1064,6 +1066,7 @@
"unavailable_balance_description": "Saldo non disponibile: questo totale include i fondi bloccati nelle transazioni in sospeso e quelli che hai congelato attivamente nelle impostazioni di Controllo monete. I saldi bloccati diventeranno disponibili una volta completate le rispettive transazioni, mentre i saldi congelati rimarranno inaccessibili per le transazioni finché non deciderai di sbloccarli.",
"unconfirmed": "Saldo non confermato",
"understand": "Capisco",
+ "unified_view_key": "Chiave di visualizzazione unificata",
"unlock": "Sblocca",
"unmatched_currencies": "La valuta del tuo portafoglio attuale non corrisponde a quella del QR scansionato",
"unrestricted_background_service": "Servizio di background senza restrizioni",
@@ -1175,5 +1178,11 @@
"you_will_send": "Conveti da",
"youCanGoBackToYourDapp": "Puoi tornare al tuo DApp ora",
"your": "Tuo",
- "yy": "YY"
+ "yy": "YY",
+ "zcash_card_description": "Se non vedi il saldo completo, Cake Wallet può tentare di prelevare fondi dagli indirizzi di modifica interni utilizzati da alcuni portafogli.",
+ "zcash_card_dismiss": "Congedare",
+ "zcash_card_enable_later": "Puoi sempre abilitare questa carta in un secondo momento nelle impostazioni",
+ "zcash_card_missing_funds": "Fondi mancanti?",
+ "zcash_card_scan": "Scansione",
+ "zcash_card_warning": "Non chiudere l'app fino al completamento della procedura, altrimenti sarà necessario riavviare il processo da zero."
}
\ No newline at end of file
diff --git a/res/values/strings_ja.arb b/res/values/strings_ja.arb
index b94f177..c00b94b 100644
--- a/res/values/strings_ja.arb
+++ b/res/values/strings_ja.arb
@@ -885,6 +885,7 @@
"show_keys": "シード/キーを表示する",
"show_market_place": "マーケットプレイスを表示",
"show_seed": "シードを表示",
+ "show_zcash_card": "zcash 不足資金カードを提示する",
"sign_all": "すべてに署名します",
"sign_message": "署名メッセージ",
"sign_one": "1つに署名します",
@@ -1041,6 +1042,7 @@
"transaction_sent_notice": "1分経っても画面が進まない場合は、ブロックエクスプローラーとメールアドレスを確認してください。",
"transactions": "取引",
"transactions_by_date": "日付ごとの取引",
+ "transparent_secret_key": "透明な秘密鍵",
"transport_type": "輸送タイプ",
"trongrid_history": "トロンリッドの歴史",
"trusted": "信頼できる",
@@ -1064,6 +1066,7 @@
"unavailable_balance_description": "利用不可能な残高: この合計には、保留中のトランザクションにロックされている資金と、コイン管理設定でアクティブに凍結した資金が含まれます。ロックされた残高は、それぞれの取引が完了すると利用可能になりますが、凍結された残高は、凍結を解除するまで取引にアクセスできません。",
"unconfirmed": "残高未確認",
"understand": "わかります",
+ "unified_view_key": "統合ビューキー",
"unlock": "ロックを解除します",
"unmatched_currencies": "現在のウォレットの通貨がスキャンされたQRの通貨と一致しません",
"unrestricted_background_service": "無制限のバックグラウンドサービス",
@@ -1173,5 +1176,11 @@
"you_will_send": "から変換",
"youCanGoBackToYourDapp": "あなたは今あなたのダップに戻ることができます",
"your": "あなたの",
- "yy": "YY"
+ "yy": "YY",
+ "zcash_card_description": "残高が全額表示されない場合、Cake Wallet は一部のウォレットで使用されている内部変更アドレスから資金を掃引しようとする可能性があります。",
+ "zcash_card_dismiss": "却下する",
+ "zcash_card_enable_later": "このカードは後から設定でいつでも有効にできます",
+ "zcash_card_missing_funds": "資金が不足していますか?",
+ "zcash_card_scan": "スキャン",
+ "zcash_card_warning": "手順が完了するまでアプリを閉じないでください。閉じた場合、このプロセスを最初からやり直す必要があります。"
}
\ No newline at end of file
diff --git a/res/values/strings_ko.arb b/res/values/strings_ko.arb
index 1367849..649b1e4 100644
--- a/res/values/strings_ko.arb
+++ b/res/values/strings_ko.arb
@@ -885,6 +885,7 @@
"show_keys": "시드/키 표시",
"show_market_place": "마켓플레이스 표시",
"show_seed": "시드 표시",
+ "show_zcash_card": "zcash 누락 자금 카드 표시",
"sign_all": "모두 서명",
"sign_message": "메시지 서명",
"sign_one": "하나 서명",
@@ -1041,6 +1042,7 @@
"transaction_sent_notice": "1분 후에도 화면이 진행되지 않으면 블록 탐색기와 이메일을 확인하세요.",
"transactions": "트랜잭션",
"transactions_by_date": "날짜별 트랜잭션",
+ "transparent_secret_key": "투명한 비밀키",
"transport_type": "전송 유형",
"trongrid_history": "TronGrid 내역",
"trusted": "신뢰됨",
@@ -1064,6 +1066,7 @@
"unavailable_balance_description": "사용 불가 잔액: 이 총액에는 보류 중인 트랜잭션에 잠긴 자금과 코인 제어 설정에서 적극적으로 동결한 자금이 포함됩니다. 잠긴 잔액은 해당 트랜잭션이 완료되면 사용할 수 있게 되며, 동결된 잔액은 동결 해제를 결정할 때까지 트랜잭션에 액세스할 수 없습니다.",
"unconfirmed": "미확정 잔액",
"understand": "이해합니다",
+ "unified_view_key": "통합 보기 키",
"unlock": "잠금 해제",
"unmatched_currencies": "현재 지갑 통화가 스캔된 QR의 통화와 일치하지 않습니다.",
"unrestricted_background_service": "제한 없는 백그라운드 서비스",
@@ -1173,5 +1176,11 @@
"you_will_send": "전환 출처",
"youCanGoBackToYourDapp": "이제 dApp으로 돌아갈 수 있습니다",
"your": "당신의",
- "yy": "YY"
+ "yy": "YY",
+ "zcash_card_description": "전체 잔액이 표시되지 않으면 Cake Wallet은 일부 지갑에서 사용하는 내부 변경 주소에서 자금을 회수하려고 시도할 수 있습니다.",
+ "zcash_card_dismiss": "해고하다",
+ "zcash_card_enable_later": "나중에 설정에서 언제든지 이 카드를 활성화할 수 있습니다.",
+ "zcash_card_missing_funds": "자금이 부족합니까?",
+ "zcash_card_scan": "주사",
+ "zcash_card_warning": "절차가 완료될 때까지 앱을 닫지 마십시오. 그렇게 하면 이 프로세스를 처음부터 다시 시작해야 합니다."
}
\ No newline at end of file
diff --git a/res/values/strings_my.arb b/res/values/strings_my.arb
index dad217e..c6992fa 100644
--- a/res/values/strings_my.arb
+++ b/res/values/strings_my.arb
@@ -884,6 +884,7 @@
"show_keys": "မျိုးစေ့ /သော့များကို ပြပါ။",
"show_market_place": "စျေးကွက်ကိုပြသပါ။",
"show_seed": "မျိုးစေ့ကိုပြပါ။",
+ "show_zcash_card": "zcash ပျောက်ဆုံးနေသော ရန်ပုံငွေကတ်ကို ပြပါ။",
"sign_all": "အားလုံးလက်မှတ်ထိုးပါ",
"sign_message": "လက်မှတ်စာ",
"sign_one": "လက်မှတ်ထိုးပါ",
@@ -1040,6 +1041,7 @@
"transaction_sent_notice": "မျက်နှာပြင်သည် ၁ မိနစ်အကြာတွင် ဆက်လက်မလုပ်ဆောင်ပါက၊ ပိတ်ဆို့ရှာဖွေသူနှင့် သင့်အီးမေးလ်ကို စစ်ဆေးပါ။",
"transactions": "ငွေပေးငွေယူ",
"transactions_by_date": "ရက်စွဲအလိုက် ငွေလွှဲမှုများ",
+ "transparent_secret_key": "လျှို့ဝှက်သော့",
"transport_type": "သယ်ယူပို့ဆောင်ရေးအမျိုးအစား",
"trongrid_history": "Trongrid သမိုင်း",
"trusted": "ယုံတယ်။",
@@ -1063,6 +1065,7 @@
"unavailable_balance_description": "မရရှိနိုင်သော လက်ကျန်ငွေ- ဤစုစုပေါင်းတွင် ဆိုင်းငံ့ထားသော ငွေပေးငွေယူများတွင် သော့ခတ်ထားသော ငွေကြေးများနှင့် သင်၏ coin ထိန်းချုပ်မှုဆက်တင်များတွင် သင် တက်ကြွစွာ အေးခဲထားသော ငွေများ ပါဝင်သည်။ သော့ခတ်ထားသော လက်ကျန်ငွေများကို ၎င်းတို့၏ သက်ဆိုင်ရာ ငွေပေးငွေယူများ ပြီးမြောက်သည်နှင့် တပြိုင်နက် ရရှိနိုင်မည်ဖြစ်ပြီး၊ အေးခဲထားသော လက်ကျန်များကို ၎င်းတို့အား ပြန်ဖြုတ်ရန် သင်ဆုံးဖြတ်သည်အထိ ငွေပေးငွေယူများအတွက် ဆက်လက်၍မရနိုင်ပါ။",
"unconfirmed": "အတည်မပြုနိုင်သော လက်ကျန်ငွေ",
"understand": "ကျွန်တော်နားလည်ပါတယ်",
+ "unified_view_key": "ပေါင်းစည်းထားသော View Key",
"unlock": "သော့ဖွင့်",
"unmatched_currencies": "သင့်လက်ရှိပိုက်ဆံအိတ်၏ငွေကြေးသည် စကင်ဖတ်ထားသော QR နှင့် မကိုက်ညီပါ။",
"unrestricted_background_service": "အကန့်အသတ်မရှိနောက်ခံဝန်ဆောင်မှု",
@@ -1172,5 +1175,11 @@
"you_will_send": "မှပြောင်းပါ။",
"youCanGoBackToYourDapp": "သငျသညျယခုသင်၏ dapp ကိုပြန်သွားနိုင်ပါတယ်",
"your": "ခင်ဗျားတို့၏",
- "yy": "YY"
+ "yy": "YY",
+ "zcash_card_description": "သင့်လက်ကျန်ငွေ အပြည့်အစုံကို မတွေ့ပါက Cake Wallet အချို့သော ပိုက်ဆံအိတ်များတွင် အသုံးပြုသော အတွင်းပိုင်းပြောင်းလဲမှုလိပ်စာများမှ ရန်ပုံငွေများကို ထုတ်ယူရန် ကြိုးပမ်းနိုင်ပါသည်။",
+ "zcash_card_dismiss": "ပယ်ရန်",
+ "zcash_card_enable_later": "သင်သည် ဤကတ်ကို ဆက်တင်များတွင် နောက်ပိုင်းတွင် အမြဲဖွင့်နိုင်သည်။",
+ "zcash_card_missing_funds": "ရန်ပုံငွေများ ပျောက်ဆုံးနေပါသလား။",
+ "zcash_card_scan": "စကင်န်",
+ "zcash_card_warning": "လုပ်ထုံးလုပ်နည်းမပြီးမချင်း အက်ပ်ကို မပိတ်ပါနှင့်၊ အကယ်၍ သင်သည် ဤလုပ်ငန်းစဉ်ကို အစမှ ပြန်လည်စတင်ရန် လိုအပ်မည်ဖြစ်သည်။"
}
\ No newline at end of file
diff --git a/res/values/strings_nl.arb b/res/values/strings_nl.arb
index c9063b4..c64917a 100644
--- a/res/values/strings_nl.arb
+++ b/res/values/strings_nl.arb
@@ -884,6 +884,7 @@
"show_keys": "Toon zaad/sleutels",
"show_market_place": "Toon Marktplaats",
"show_seed": "Toon zaad",
+ "show_zcash_card": "Toon zcash ontbrekende fondsenkaart",
"sign_all": "Teken alles",
"sign_message": "Aanmeldingsbericht",
"sign_one": "Ondertekenen een",
@@ -1040,6 +1041,7 @@
"transaction_sent_notice": "Als het scherm na 1 minuut niet verder gaat, controleer dan een blokverkenner en je e-mail.",
"transactions": "Transacties",
"transactions_by_date": "Transacties op datum",
+ "transparent_secret_key": "Transparante geheime sleutel",
"transport_type": "Transporttype",
"trongrid_history": "Trongrid geschiedenis",
"trusted": "vertrouwd",
@@ -1063,6 +1065,7 @@
"unavailable_balance_description": "Niet-beschikbaar saldo: Dit totaal omvat het geld dat is vergrendeld in lopende transacties en het geld dat u actief hebt bevroren in uw muntcontrole-instellingen. Vergrendelde saldi komen beschikbaar zodra de betreffende transacties zijn voltooid, terwijl bevroren saldi ontoegankelijk blijven voor transacties totdat u besluit ze weer vrij te geven.",
"unconfirmed": "Onbevestigd saldo",
"understand": "Ik begrijp het",
+ "unified_view_key": "Uniforme weergavesleutel",
"unlock": "Ontgrendelen",
"unmatched_currencies": "De valuta van uw huidige portemonnee komt niet overeen met die van de gescande QR",
"unrestricted_background_service": "Onbeperkte achtergrondservice",
@@ -1173,5 +1176,11 @@
"you_will_send": "Converteren van",
"youCanGoBackToYourDapp": "U kunt nu terug naar uw DApp gaan",
"your": "Jouw",
- "yy": "JJ"
+ "yy": "JJ",
+ "zcash_card_description": "Als u uw volledige saldo niet ziet, kan Cake Wallet proberen geld op te halen van interne wijzigingsadressen die door sommige portemonnees worden gebruikt.",
+ "zcash_card_dismiss": "Afwijzen",
+ "zcash_card_enable_later": "Je kunt deze kaart altijd later inschakelen in de instellingen",
+ "zcash_card_missing_funds": "Ontbrekende fondsen?",
+ "zcash_card_scan": "Scannen",
+ "zcash_card_warning": "Sluit de app niet totdat de procedure is voltooid. Als u dit wel doet, moet dit proces helemaal opnieuw worden opgestart."
}
\ No newline at end of file
diff --git a/res/values/strings_pl.arb b/res/values/strings_pl.arb
index 39dfc30..76ecbda 100644
--- a/res/values/strings_pl.arb
+++ b/res/values/strings_pl.arb
@@ -883,6 +883,7 @@
"show_keys": "Pokaż seed/klucze",
"show_market_place": "Pokaż Marketplace",
"show_seed": "Pokaż seed",
+ "show_zcash_card": "Pokaż brakującą kartę środków Zcash",
"sign_all": "Podpisz Wszystkie",
"sign_message": "Podpisz wiadomość",
"sign_one": "Podpisz 1",
@@ -1039,6 +1040,7 @@
"transaction_sent_notice": "Jeśli po upływie 1 minuty ekran nie przejdzie dalej, sprawdź eksplorator bloków i swoją skrzynkę e‑mail.",
"transactions": "Transakcje",
"transactions_by_date": "Transakcje według daty",
+ "transparent_secret_key": "Przezroczysty tajny klucz",
"transport_type": "Typ transportu",
"trongrid_history": "Historia TronGrid",
"trusted": "Zaufany",
@@ -1062,6 +1064,7 @@
"unavailable_balance_description": "Niedostępne saldo: Ta suma obejmuje środki zablokowane w transakcjach oczekujących oraz te, które aktywnie zamroziłeś w ustawieniach kontroli monet. Zablokowane środki staną się dostępne po zakończeniu odpowiednich transakcji, natomiast zamrożone środki pozostaną niedostępne dla transakcji, dopóki nie zdecydujesz się ich odmrozić.",
"unconfirmed": "Niepotwierdzone Saldo",
"understand": "Rozumiem",
+ "unified_view_key": "Ujednolicony klucz widoku",
"unlock": "Odblokuj",
"unmatched_currencies": "Waluta Twojego aktualnego portfela nie jest zgodna z walutą zeskanowanego kodu QR",
"unrestricted_background_service": "Usługa w tle bez ograniczeń",
@@ -1171,5 +1174,11 @@
"you_will_send": "Konwertuj z",
"youCanGoBackToYourDapp": "Możesz teraz wrócić do swojego dApp",
"your": "Twoje",
- "yy": "RR"
+ "yy": "RR",
+ "zcash_card_description": "Jeśli nie widzisz swojego pełnego salda, Cake Wallet może podjąć próbę pobrania środków z wewnętrznych adresów zmian używanych przez niektóre portfele.",
+ "zcash_card_dismiss": "Odrzucać",
+ "zcash_card_enable_later": "Zawsze możesz włączyć tę kartę później w ustawieniach",
+ "zcash_card_missing_funds": "Brakuje środków?",
+ "zcash_card_scan": "Skandować",
+ "zcash_card_warning": "Nie zamykaj aplikacji do czasu zakończenia procedury. Jeśli to zrobisz, proces będzie musiał zostać uruchomiony od nowa."
}
\ No newline at end of file
diff --git a/res/values/strings_pt.arb b/res/values/strings_pt.arb
index 9c68682..a783952 100644
--- a/res/values/strings_pt.arb
+++ b/res/values/strings_pt.arb
@@ -886,6 +886,7 @@
"show_keys": "Mostrar semente/chaves",
"show_market_place": "Mostrar mercado",
"show_seed": "Mostrar semente",
+ "show_zcash_card": "Mostrar cartão de fundos perdidos do zcash",
"sign_all": "Assine tudo",
"sign_message": "Mensagem de assinar",
"sign_one": "Assine um",
@@ -1042,6 +1043,7 @@
"transaction_sent_notice": "Se a tela não prosseguir após 1 minuto, verifique um explorador de blocos e seu e-mail.",
"transactions": "Transações",
"transactions_by_date": "Transações por data",
+ "transparent_secret_key": "Chave secreta transparente",
"transport_type": "Tipo de transporte",
"trongrid_history": "História de Trongrid",
"trusted": "confiável",
@@ -1065,6 +1067,7 @@
"unavailable_balance_description": "Saldo Indisponível: Este total inclui fundos bloqueados em transações pendentes e aqueles que você congelou ativamente nas configurações de controle de moedas. Os saldos bloqueados ficarão disponíveis assim que suas respectivas transações forem concluídas, enquanto os saldos congelados permanecerão inacessíveis para transações até que você decida descongelá-los.",
"unconfirmed": "Saldo não confirmado",
"understand": "Entendo",
+ "unified_view_key": "Chave de visualização unificada",
"unlock": "Desbloquear",
"unmatched_currencies": "A moeda da sua carteira atual não corresponde à do QR digitalizado",
"unrestricted_background_service": "Serviço de fundo irrestrito",
@@ -1175,5 +1178,11 @@
"you_will_send": "Converter de",
"youCanGoBackToYourDapp": "Você pode voltar para o seu dapp agora",
"your": "Seu",
- "yy": "aa"
+ "yy": "aa",
+ "zcash_card_description": "Se você não vir seu saldo total, a Cake Wallet pode tentar varrer fundos de endereços de câmbio internos usados por algumas carteiras.",
+ "zcash_card_dismiss": "Liberar",
+ "zcash_card_enable_later": "Você sempre pode ativar este cartão posteriormente nas configurações",
+ "zcash_card_missing_funds": "Faltam fundos?",
+ "zcash_card_scan": "Digitalizar",
+ "zcash_card_warning": "Não feche o aplicativo até que o procedimento seja concluído; se você fizer isso, o processo precisará ser reiniciado do zero."
}
\ No newline at end of file
diff --git a/res/values/strings_pt_BR.arb b/res/values/strings_pt_BR.arb
index c73f941..6a27e00 100644
--- a/res/values/strings_pt_BR.arb
+++ b/res/values/strings_pt_BR.arb
@@ -884,6 +884,7 @@
"show_keys": "Mostrar semente/chaves",
"show_market_place": "Mostrar mercado",
"show_seed": "Mostrar semente",
+ "show_zcash_card": "Show zcash missing funds card",
"sign_all": "Assine tudo",
"sign_message": "Mensagem de assinar",
"sign_one": "Assine um",
@@ -1040,6 +1041,7 @@
"transaction_sent_notice": "Se a tela não prosseguir após 1 minuto, verifique um explorador de blocos e seu e-mail.",
"transactions": "Transações",
"transactions_by_date": "Transações por data",
+ "transparent_secret_key": "Transparent Secret Key",
"transport_type": "Tipo de transporte",
"trongrid_history": "História de Trongrid",
"trusted": "confiável",
@@ -1062,6 +1064,7 @@
"unavailable_balance_description": "Saldo Indisponível: Este total inclui fundos bloqueados em transações pendentes e aqueles que você congelou ativamente nas configurações de controle de moedas. Os saldos bloqueados ficarão disponíveis assim que suas respectivas transações forem concluídas, enquanto os saldos congelados permanecerão inacessíveis para transações até que você decida descongelá-los.",
"unconfirmed": "Saldo não confirmado",
"understand": "Entendo",
+ "unified_view_key": "Unified View Key",
"unlock": "Desbloquear",
"unmatched_currencies": "A moeda da sua carteira atual não corresponde à do QR digitalizado",
"unrestricted_background_service": "Serviço de fundo irrestrito",
@@ -1170,5 +1173,11 @@
"you_will_send": "Converter de",
"youCanGoBackToYourDapp": "Você pode voltar para o seu dapp agora",
"your": "Seu",
- "yy": "aa"
+ "yy": "aa",
+ "zcash_card_description": "If you don't see your full balance Cake Wallet can attempt to sweep funds from internal change addresses used by some wallets.",
+ "zcash_card_dismiss": "Dismiss",
+ "zcash_card_enable_later": "You can always enable this card later in settings",
+ "zcash_card_missing_funds": "Missing funds?",
+ "zcash_card_scan": "Scan",
+ "zcash_card_warning": "Do not close the app until the procedure completes, if you do so this process will need to restart from scratch."
}
\ No newline at end of file
diff --git a/res/values/strings_ru.arb b/res/values/strings_ru.arb
index d6cf0a2..2550af5 100644
--- a/res/values/strings_ru.arb
+++ b/res/values/strings_ru.arb
@@ -885,6 +885,7 @@
"show_keys": "Показать мнемоническую фразу/ключи",
"show_market_place": "Показать торговую площадку",
"show_seed": "Показать мнемоническую фразу",
+ "show_zcash_card": "Покажите карту zcash с недостающими средствами",
"sign_all": "Подписать все",
"sign_message": "Сообщение о знаке",
"sign_one": "Подписать один",
@@ -1041,6 +1042,7 @@
"transaction_sent_notice": "Если экран не отображается через 1 минуту, проверьте обозреватель блоков и свою электронную почту.",
"transactions": "Транзакции",
"transactions_by_date": "Сортировать по дате",
+ "transparent_secret_key": "Прозрачный секретный ключ",
"transport_type": "Транспортный тип",
"trongrid_history": "История Тронгрида",
"trusted": "доверенный",
@@ -1064,6 +1066,7 @@
"unavailable_balance_description": "Недоступный баланс: в эту сумму входят средства, заблокированные в ожидающих транзакциях, и средства, которые вы активно заморозили в настройках управления монетами. Заблокированные балансы станут доступны после завершения соответствующих транзакций, а замороженные балансы останутся недоступными для транзакций, пока вы не решите их разморозить.",
"unconfirmed": "Неподтвержденный баланс",
"understand": "Понятно",
+ "unified_view_key": "Ключ единого представления",
"unlock": "Разблокировать",
"unmatched_currencies": "Валюта вашего текущего кошелька не соответствует валюте отсканированного QR-кода.",
"unrestricted_background_service": "Неограниченная фоновая служба",
@@ -1173,5 +1176,11 @@
"you_will_send": "Конвертировать из",
"youCanGoBackToYourDapp": "Вы можете вернуться к своему даппу сейчас",
"your": "Твой",
- "yy": "ГГ"
+ "yy": "ГГ",
+ "zcash_card_description": "Если вы не видите свой полный баланс, Cake Wallet может попытаться вывести средства с внутренних адресов обмена, используемых некоторыми кошельками.",
+ "zcash_card_dismiss": "Увольнять",
+ "zcash_card_enable_later": "Вы всегда можете включить эту карту позже в настройках.",
+ "zcash_card_missing_funds": "Не хватает средств?",
+ "zcash_card_scan": "Сканировать",
+ "zcash_card_warning": "Не закрывайте приложение до завершения процедуры. В этом случае процесс придется перезапустить с нуля."
}
\ No newline at end of file
diff --git a/res/values/strings_th.arb b/res/values/strings_th.arb
index bdeebd7..e9d319d 100644
--- a/res/values/strings_th.arb
+++ b/res/values/strings_th.arb
@@ -884,6 +884,7 @@
"show_keys": "แสดงซีด/คีย์",
"show_market_place": "แสดงตลาดกลาง",
"show_seed": "แสดงซีด",
+ "show_zcash_card": "แสดงบัตรกองทุน zcash ที่หายไป",
"sign_all": "ลงนามทั้งหมด",
"sign_message": "ลงนามข้อความ",
"sign_one": "ลงชื่อเข้าใช้",
@@ -1040,6 +1041,7 @@
"transaction_sent_notice": "ถ้าหน้าจอไม่ขึ้นหลังจาก 1 นาทีแล้ว ให้ตรวจสอบ block explorer และอีเมลของคุณ",
"transactions": "ธุรกรรม",
"transactions_by_date": "ธุรกรรมตามวันที่",
+ "transparent_secret_key": "รหัสลับที่โปร่งใส",
"transport_type": "ประเภทการขนส่ง",
"trongrid_history": "ประวัติศาสตร์ Trongrid",
"trusted": "มั่นคง",
@@ -1063,6 +1065,7 @@
"unavailable_balance_description": "ยอดคงเหลือที่ไม่พร้อมใช้งาน: ยอดรวมนี้รวมถึงเงินทุนที่ถูกล็อคในการทำธุรกรรมที่รอดำเนินการและที่คุณได้แช่แข็งไว้ในการตั้งค่าการควบคุมเหรียญของคุณ ยอดคงเหลือที่ถูกล็อคจะพร้อมใช้งานเมื่อธุรกรรมที่เกี่ยวข้องเสร็จสมบูรณ์ ในขณะที่ยอดคงเหลือที่แช่แข็งจะไม่สามารถเข้าถึงได้สำหรับธุรกรรมจนกว่าคุณจะตัดสินใจยกเลิกการแช่แข็ง",
"unconfirmed": "ยอดคงเหลือที่ไม่ได้รับการยืนยัน",
"understand": "ฉันเข้าใจ",
+ "unified_view_key": "คีย์มุมมองแบบรวม",
"unlock": "ปลดล็อค",
"unmatched_currencies": "สกุลเงินของกระเป๋าปัจจุบันของคุณไม่ตรงกับของ QR ที่สแกน",
"unrestricted_background_service": "บริการพื้นหลังที่ไม่ จำกัด",
@@ -1172,5 +1175,11 @@
"you_will_send": "แปลงจาก",
"youCanGoBackToYourDapp": "คุณสามารถกลับไปที่ dapp ของคุณได้ทันที",
"your": "ของคุณ",
- "yy": "ปี"
+ "yy": "ปี",
+ "zcash_card_description": "หากคุณไม่เห็นยอดคงเหลือทั้งหมด Cake Wallet สามารถพยายามกวาดเงินจากที่อยู่การเปลี่ยนแปลงภายในที่ใช้โดยกระเป๋าเงินบางกระเป๋าได้",
+ "zcash_card_dismiss": "อนุญาตให้ออกไป",
+ "zcash_card_enable_later": "คุณสามารถเปิดใช้งานการ์ดนี้ได้ในภายหลังในการตั้งค่า",
+ "zcash_card_missing_funds": "เงินทุนหายไป?",
+ "zcash_card_scan": "สแกน",
+ "zcash_card_warning": "อย่าปิดแอปจนกว่าขั้นตอนจะเสร็จสิ้น หากคุณทำเช่นนั้น กระบวนการนี้จะต้องเริ่มต้นใหม่ตั้งแต่ต้น"
}
\ No newline at end of file
diff --git a/res/values/strings_tl.arb b/res/values/strings_tl.arb
index 8387238..9b137a4 100644
--- a/res/values/strings_tl.arb
+++ b/res/values/strings_tl.arb
@@ -884,6 +884,7 @@
"show_keys": "Ipakita ang mga seed/key",
"show_market_place": "Ipakita ang Marketplace",
"show_seed": "Ipakita ang seed",
+ "show_zcash_card": "Ipakita ang zcash na nawawalang funds card",
"sign_all": "Mag -sign lahat",
"sign_message": "Mag -sign Message",
"sign_one": "Mag -sign ng isa",
@@ -1040,6 +1041,7 @@
"transaction_sent_notice": "Kung hindi magpapatuloy ang screen pagkatapos ng 1 minuto, tingnan ang block explorer at ang iyong email.",
"transactions": "Mga Transaksyon",
"transactions_by_date": "Mga transaksyon ayon sa petsa",
+ "transparent_secret_key": "Transparent na Lihim na Susi",
"transport_type": "Uri ng transportasyon",
"trongrid_history": "Kasaysayan ng TronGrid",
"trusted": "Pinagkakatiwalaan",
@@ -1063,6 +1065,7 @@
"unavailable_balance_description": "Hindi available na balanse: Kasama sa kabuuang ito ang mga pondong naka-lock sa mga nakabinbing transaksyon at ang mga aktibong na-freeze mo sa iyong mga setting ng Coin Control. Magiging available ang mga naka-lock na balanse kapag nakumpleto na ang kani-kanilang mga transaksyon, habang ang mga nakapirming balanse ay nananatiling hindi naa-access para sa mga transaksyon hanggang sa magpasya kang i-unfreeze ang mga ito.",
"unconfirmed": "Hindi nakumpirma na balanse",
"understand": "Naiitindihan ko",
+ "unified_view_key": "Pinag-isang View Key",
"unlock": "I-unlock",
"unmatched_currencies": "Hindi tumutugma ang pera ng iyong kasalukuyang wallet sa na-scan na QR",
"unrestricted_background_service": "Hindi pinigilan na serbisyo sa background",
@@ -1172,5 +1175,11 @@
"you_will_send": "I-convert mula sa",
"youCanGoBackToYourDapp": "Maaari kang bumalik sa iyong dapp ngayon",
"your": "IYONG",
- "yy": "YY"
-}
\ No newline at end of file
+ "yy": "YY",
+ "zcash_card_description": "Kung hindi mo makita ang iyong buong balanse, maaaring subukan ng Cake Wallet na walisin ang mga pondo mula sa mga panloob na pagbabago sa mga address na ginagamit ng ilang wallet.",
+ "zcash_card_dismiss": "I-dismiss",
+ "zcash_card_enable_later": "Maaari mong paganahin ang card na ito anumang oras sa ibang pagkakataon sa mga setting",
+ "zcash_card_missing_funds": "Kulang ng pondo?",
+ "zcash_card_scan": "I-scan",
+ "zcash_card_warning": "Huwag isara ang app hanggang sa makumpleto ang pamamaraan, kung gagawin mo ito, kakailanganing i-restart ang prosesong ito mula sa simula."
+}
diff --git a/res/values/strings_tr.arb b/res/values/strings_tr.arb
index 32261b3..ea8a577 100644
--- a/res/values/strings_tr.arb
+++ b/res/values/strings_tr.arb
@@ -884,6 +884,7 @@
"show_keys": "Tohumları/anahtarları göster",
"show_market_place": "Pazar Yerini Göster",
"show_seed": "Tohumları göster",
+ "show_zcash_card": "zcash eksik fon kartını göster",
"sign_all": "Hepsini imzalamak",
"sign_message": "İşaret mesajı",
"sign_one": "Bir İmza",
@@ -1040,6 +1041,7 @@
"transaction_sent_notice": "Ekran 1 dakika sonra ilerlemezse, blok gezgininden ve e-postanızdan kontrol edin.",
"transactions": "İşlemler",
"transactions_by_date": "Tarihe göre transferler",
+ "transparent_secret_key": "Şeffaf Gizli Anahtar",
"transport_type": "Taşıma tipi",
"trongrid_history": "Trongrid tarihi",
"trusted": "Güvenilir",
@@ -1063,6 +1065,7 @@
"unavailable_balance_description": "Kullanılamayan Bakiye: Bu toplam, bekleyen işlemlerde kilitlenen fonları ve jeton kontrol ayarlarınızda aktif olarak dondurduğunuz fonları içerir. Kilitli bakiyeler, ilgili işlemleri tamamlandıktan sonra kullanılabilir hale gelir; dondurulmuş bakiyeler ise siz onları dondurmaya karar verene kadar işlemler için erişilemez durumda kalır.",
"unconfirmed": "Onaylanmamış Bakiye",
"understand": "Anladım",
+ "unified_view_key": "Birleşik Görünüm Anahtarı",
"unlock": "Kilidini aç",
"unmatched_currencies": "Mevcut cüzdanınızın para birimi taranan QR ile eşleşmiyor",
"unrestricted_background_service": "Sınırsız arka plan hizmeti",
@@ -1172,5 +1175,11 @@
"you_will_send": "Biçiminden dönüştür:",
"youCanGoBackToYourDapp": "Şimdi Dapp'ınıza geri dönebilirsin",
"your": "Senin",
- "yy": "YY"
+ "yy": "YY",
+ "zcash_card_description": "Bakiyenizin tamamını görmüyorsanız Cake Wallet, bazı cüzdanlar tarafından kullanılan dahili değişiklik adreslerinden para çekmeyi deneyebilir.",
+ "zcash_card_dismiss": "Azletmek",
+ "zcash_card_enable_later": "Bu kartı daha sonra istediğiniz zaman ayarlardan etkinleştirebilirsiniz",
+ "zcash_card_missing_funds": "Fonlar mı eksik?",
+ "zcash_card_scan": "Tara",
+ "zcash_card_warning": "Prosedür tamamlanana kadar uygulamayı kapatmayın, bunu yaparsanız bu işlemin sıfırdan yeniden başlatılması gerekecektir."
}
\ No newline at end of file
diff --git a/res/values/strings_uk.arb b/res/values/strings_uk.arb
index a3c3d4c..f809758 100644
--- a/res/values/strings_uk.arb
+++ b/res/values/strings_uk.arb
@@ -885,6 +885,7 @@
"show_keys": "Показати мнемонічну фразу/ключі",
"show_market_place": "Відображати маркетплейс",
"show_seed": "Показати мнемонічну фразу",
+ "show_zcash_card": "Показати картку відсутніх коштів у zcash",
"sign_all": "Підписати все",
"sign_message": "Підпишіть повідомлення",
"sign_one": "Підписати один",
@@ -1041,6 +1042,7 @@
"transaction_sent_notice": "Якщо екран не відображається через 1 хвилину, перевірте провідник блоків і свою електронну пошту.",
"transactions": "Транзакції",
"transactions_by_date": "Сортувати по даті",
+ "transparent_secret_key": "Прозорий секретний ключ",
"transport_type": "Транспортний тип",
"trongrid_history": "Тронгрідська історія",
"trusted": "довіряють",
@@ -1064,6 +1066,7 @@
"unavailable_balance_description": "Недоступний баланс: ця сума включає кошти, заблоковані в незавершених транзакціях, і ті, які ви активно заморозили в налаштуваннях контролю монет. Заблоковані баланси стануть доступними після завершення відповідних транзакцій, тоді як заморожені баланси залишаються недоступними для транзакцій, доки ви не вирішите їх розморозити.",
"unconfirmed": "Непідтверджений баланс",
"understand": "Зрозуміло",
+ "unified_view_key": "Уніфікований ключ перегляду",
"unlock": "Розблокувати",
"unmatched_currencies": "Валюта вашого гаманця не збігається з валютою сканованого QR-коду",
"unrestricted_background_service": "Необмежена фонова послуга",
@@ -1173,5 +1176,11 @@
"you_will_send": "Конвертувати з",
"youCanGoBackToYourDapp": "Ви можете повернутися до свого DAPP зараз",
"your": "Ваш",
- "yy": "YY"
+ "yy": "YY",
+ "zcash_card_description": "Якщо ви не бачите повного балансу, Cake Wallet може спробувати вичистити кошти з внутрішніх змінних адрес, які використовуються деякими гаманцями.",
+ "zcash_card_dismiss": "Відхилити",
+ "zcash_card_enable_later": "Ви завжди можете ввімкнути цю картку пізніше в налаштуваннях",
+ "zcash_card_missing_funds": "Бракує коштів?",
+ "zcash_card_scan": "Сканувати",
+ "zcash_card_warning": "Не закривайте програму, доки процедура не завершиться, якщо ви це зробите, цей процес потрібно буде перезапустити з нуля."
}
\ No newline at end of file
diff --git a/res/values/strings_ur.arb b/res/values/strings_ur.arb
index e88065f..8be53a8 100644
--- a/res/values/strings_ur.arb
+++ b/res/values/strings_ur.arb
@@ -886,6 +886,7 @@
"show_keys": "بیج / چابیاں دکھائیں۔",
"show_market_place": "بازار دکھائیں۔",
"show_seed": "بیج دکھائیں۔",
+ "show_zcash_card": "زکاش لاپتہ فنڈز کارڈ دکھائیں",
"sign_all": "سب پر دستخط کریں",
"sign_message": "سائن پیغام",
"sign_one": "ایک پر دستخط کریں",
@@ -1042,6 +1043,7 @@
"transaction_sent_notice": "اگر اسکرین 1 منٹ کے بعد آگے نہیں بڑھتی ہے، تو بلاک ایکسپلورر اور اپنا ای میل چیک کریں۔",
"transactions": "لین دین",
"transactions_by_date": "تاریخ کے لحاظ سے لین دین",
+ "transparent_secret_key": "شفاف خفیہ کلید",
"transport_type": "ٹرانسپورٹ کی قسم",
"trongrid_history": "ٹرانگریڈ ہسٹری",
"trusted": "قابل اعتماد",
@@ -1065,6 +1067,7 @@
"unavailable_balance_description": "۔ﮯﺗﺮﮐ ﮟﯿﮩﻧ ﮧﻠﺼﯿﻓ ﺎﮐ ﮯﻧﺮﮐ ﺪﻤﺠﻨﻣ ﻥﺍ ﮟﯿﮩﻧﺍ ﭖﺁ ﮧﮐ ﮏﺗ ﺐﺟ ﮟﯿﮨ ﮯﺘﮨﺭ ﯽﺋﺎﺳﺭ ﻞﺑﺎﻗﺎﻧ ﮏﺗ ﺖﻗﻭ ﺱﺍ ﮯﯿﻟ ﮯﮐ ﻦﯾﺩ ﻦﯿﻟ ﺲﻨﻠﯿﺑ ﺪﻤﺠﻨﻣ ﮧﮐ ﺐﺟ ،ﮯﮔ ﮟﯿﺋﺎﺟ ﻮﮨ ﺏﺎﯿﺘﺳﺩ ﺲﻨﻠﯿﺑ ﻞﻔﻘﻣ ﺪﻌﺑ ﮯﮐ ﮯﻧﻮﮨ ﻞﻤﮑﻣ ﻦﯾﺩ ﻦﯿﻟ ﮧﻘﻠﻌﺘﻣ ﮯﮐ ﻥﺍ ۔ﮯﮨ ﺎﮭﮐﺭ ﺮ",
"unconfirmed": "غیر تصدیق شدہ بیلنس",
"understand": "میں سمجھتا ہوں۔",
+ "unified_view_key": "یونیفائیڈ ویو کی کلید",
"unlock": "غیر مقفل",
"unmatched_currencies": "آپ کے پرس کی موجودہ کرنسی اسکین شدہ QR سے مماثل نہیں ہے۔",
"unrestricted_background_service": "غیر محدود پس منظر کی خدمت",
@@ -1174,5 +1177,11 @@
"you_will_send": "سے تبدیل کریں۔",
"youCanGoBackToYourDapp": "اب آپ اپنے ڈی اے پی پی پر واپس جاسکتے ہیں",
"your": "آپ کا",
- "yy": "YY"
+ "yy": "YY",
+ "zcash_card_description": "اگر آپ نہیں دیکھتے ہیں کہ آپ کا مکمل بیلنس کیک کا پرس کچھ بٹوے کے ذریعہ استعمال ہونے والے داخلی تبدیلی کے پتے سے فنڈز جھاڑو دینے کی کوشش کرسکتا ہے۔",
+ "zcash_card_dismiss": "مسترد",
+ "zcash_card_enable_later": "آپ ہمیشہ اس کارڈ کو بعد میں ترتیبات میں فعال کرسکتے ہیں",
+ "zcash_card_missing_funds": "گمشدہ فنڈز؟",
+ "zcash_card_scan": "اسکین",
+ "zcash_card_warning": "اس وقت تک ایپ کو بند نہ کریں جب تک کہ طریقہ کار مکمل نہ ہوجائے ، اگر آپ ایسا کرتے ہیں تو اس عمل کو شروع سے دوبارہ شروع کرنے کی ضرورت ہوگی۔"
}
\ No newline at end of file
diff --git a/res/values/strings_vi.arb b/res/values/strings_vi.arb
index 3499954..7126697 100644
--- a/res/values/strings_vi.arb
+++ b/res/values/strings_vi.arb
@@ -881,6 +881,7 @@
"show_keys": "Hiển thị hạt giống/khóa",
"show_market_place": "Hiển thị Thị trường",
"show_seed": "Hiển thị hạt giống",
+ "show_zcash_card": "Hiển thị thẻ tiền còn thiếu của zcash",
"sign_all": "Ký tất cả",
"sign_message": "Ký tin nhắn",
"sign_one": "Ký một",
@@ -1037,6 +1038,7 @@
"transaction_sent_notice": "Nếu màn hình không tiếp tục sau 1 phút, hãy kiểm tra trình khám phá khối và email của bạn.",
"transactions": "Giao dịch",
"transactions_by_date": "Giao dịch theo ngày",
+ "transparent_secret_key": "Khóa bí mật trong suốt",
"transport_type": "Loại vận chuyển",
"trongrid_history": "Lịch sử TronGrid",
"trusted": "Đã tin cậy",
@@ -1060,6 +1062,7 @@
"unavailable_balance_description": "Số dư không khả dụng: Tổng số này bao gồm các khoản tiền bị khóa trong các giao dịch chờ xử lý và những khoản bạn đã chủ động đóng băng trong cài đặt điều khiển tiền của bạn. Các số dư bị khóa sẽ trở nên khả dụng khi các giao dịch tương ứng của chúng hoàn tất, trong khi các số dư bị đóng băng vẫn không thể truy cập cho các giao dịch cho đến khi bạn quyết định mở khóa chúng.",
"unconfirmed": "Số dư chưa xác nhận",
"understand": "Tôi hiểu",
+ "unified_view_key": "Khóa xem hợp nhất",
"unlock": "Mở khóa",
"unmatched_currencies": "Tiền tệ của ví hiện tại của bạn không khớp với QR đã quét",
"unrestricted_background_service": "Dịch vụ nền không giới hạn",
@@ -1169,5 +1172,11 @@
"you_will_send": "Chuyển đổi từ",
"youCanGoBackToYourDapp": "Bạn có thể quay lại DAPP của mình ngay bây giờ",
"your": "Của bạn",
- "yy": "YY"
+ "yy": "YY",
+ "zcash_card_description": "Nếu bạn không thấy số dư đầy đủ của mình, Cake Wallet có thể cố gắng quét tiền từ các địa chỉ thay đổi nội bộ được một số ví sử dụng.",
+ "zcash_card_dismiss": "Miễn nhiệm",
+ "zcash_card_enable_later": "Bạn luôn có thể bật thẻ này sau trong cài đặt",
+ "zcash_card_missing_funds": "Thiếu tiền?",
+ "zcash_card_scan": "Quét",
+ "zcash_card_warning": "Không đóng ứng dụng cho đến khi quy trình hoàn tất, nếu bạn làm như vậy thì quy trình này sẽ cần phải khởi động lại từ đầu."
}
\ No newline at end of file
diff --git a/res/values/strings_yo.arb b/res/values/strings_yo.arb
index 812cc24..a685bc4 100644
--- a/res/values/strings_yo.arb
+++ b/res/values/strings_yo.arb
@@ -885,6 +885,7 @@
"show_keys": "Wo hóró / àwọn kọ́kọ́rọ́",
"show_market_place": "Wa Sopọ Pataki",
"show_seed": "Wo hóró",
+ "show_zcash_card": "Ṣe afihan kaadi owo ti o padanu zcash",
"sign_all": "Wọlé gbogbo",
"sign_message": "Ifiranṣẹ Ami",
"sign_one": "Mikọ",
@@ -1041,6 +1042,7 @@
"transaction_sent_notice": "Tí aṣàfihàn kò bá tẹ̀síwájú l'áàárín ìṣẹ́jú kan, ẹ tọ́ olùṣèwádìí àkójọpọ̀ àti ímeèlì yín wò.",
"transactions": "Àwọn àránṣẹ́",
"transactions_by_date": "Àwọn àránṣẹ́ t'á ti fi aago ṣa",
+ "transparent_secret_key": "Sihin Secret Key",
"transport_type": "Iru irinna",
"trongrid_history": "Itan Trongrid",
"trusted": "A ti fọkàn ẹ̀ tán",
@@ -1064,6 +1066,7 @@
"unavailable_balance_description": "Iwontunws.funfun ti ko si: Lapapọ yii pẹlu awọn owo ti o wa ni titiipa ni awọn iṣowo isunmọ ati awọn ti o ti didi ni itara ninu awọn eto iṣakoso owo rẹ. Awọn iwọntunwọnsi titiipa yoo wa ni kete ti awọn iṣowo oniwun wọn ba ti pari, lakoko ti awọn iwọntunwọnsi tio tutunini ko ni iraye si fun awọn iṣowo titi iwọ o fi pinnu lati mu wọn kuro.",
"unconfirmed": "A kò tí ì jẹ́rìí ẹ̀",
"understand": "Ó ye mi",
+ "unified_view_key": "Bọtini Wo Iṣọkan",
"unlock": "Sisalẹ",
"unmatched_currencies": "Irú owó ti àpamọ́wọ́ yín kì í ṣe irú ti yíya àmì ìlujá",
"unrestricted_background_service": "Iṣẹ ipilẹṣẹ ti ko nilẹ",
@@ -1173,5 +1176,11 @@
"you_will_send": "Ṣe pàṣípààrọ̀ láti",
"youCanGoBackToYourDapp": "O le pada si tapla rẹ bayi",
"your": "Rẹ",
- "yy": "Ọd"
+ "yy": "Ọd",
+ "zcash_card_description": "Ti o ko ba ri iwọntunwọnsi rẹ ni kikun Apamọwọ Akara oyinbo le gbiyanju lati gba owo lati awọn adirẹsi iyipada inu ti awọn apamọwọ kan lo.",
+ "zcash_card_dismiss": "Yọọ kuro",
+ "zcash_card_enable_later": "O le nigbagbogbo mu kaadi yi ṣiṣẹ nigbamii ni awọn eto",
+ "zcash_card_missing_funds": "Awọn owo ti o padanu?",
+ "zcash_card_scan": "Ṣayẹwo",
+ "zcash_card_warning": "Maṣe pa ohun elo naa titi ti ilana naa yoo fi pari, ti o ba ṣe bẹ ilana yii yoo nilo lati tun bẹrẹ lati ibere."
}
\ No newline at end of file
diff --git a/res/values/strings_zh.arb b/res/values/strings_zh.arb
index d68bbac..6c05bcb 100644
--- a/res/values/strings_zh.arb
+++ b/res/values/strings_zh.arb
@@ -884,6 +884,7 @@
"show_keys": "显示助记词/密钥",
"show_market_place": "显示市场",
"show_seed": "显示助记词",
+ "show_zcash_card": "显示 zcash 缺少资金卡",
"sign_all": "签署全部",
"sign_message": "签名消息",
"sign_one": "签一个",
@@ -1040,6 +1041,7 @@
"transaction_sent_notice": "如果屏幕在 1 分钟后没有继续,请检查区块浏览器和您的电子邮件。",
"transactions": "交易",
"transactions_by_date": "按日期交易",
+ "transparent_secret_key": "透明密钥",
"transport_type": "运输类型",
"trongrid_history": "Trongrid历史",
"trusted": "值得信赖",
@@ -1063,6 +1065,7 @@
"unavailable_balance_description": "不可用余额:此总额包括锁定在待处理交易中的资金以及您在选币控制设置中主动冻结的资金。一旦各自的交易完成,锁定的余额将变得可用,而冻结的余额在您决定解冻之前仍然无法进行交易。",
"unconfirmed": "未确认余额",
"understand": "我已知晓",
+ "unified_view_key": "统一视图键",
"unlock": "开锁",
"unmatched_currencies": "您当前钱包的货币与扫描的 QR 的货币不匹配",
"unrestricted_background_service": "不受限制的背景服务",
@@ -1172,5 +1175,11 @@
"you_will_send": "转换自",
"youCanGoBackToYourDapp": "您现在可以回到DApp",
"your": "您的",
- "yy": "YY"
+ "yy": "YY",
+ "zcash_card_description": "如果您没有看到全部余额,Cake Wallet 可以尝试从某些钱包使用的内部找零地址中清除资金。",
+ "zcash_card_dismiss": "解雇",
+ "zcash_card_enable_later": "您可以稍后在设置中启用此卡",
+ "zcash_card_missing_funds": "缺少资金?",
+ "zcash_card_scan": "扫描",
+ "zcash_card_warning": "在该过程完成之前请勿关闭应用程序,如果这样做,此过程将需要从头开始重新启动。"
}
\ No newline at end of file
diff --git a/tool/configure.dart b/tool/configure.dart
index aa43adb..02835ed 100644
--- a/tool/configure.dart
+++ b/tool/configure.dart
@@ -1608,7 +1608,7 @@ abstract class Zcash {
String? passphrase,
required int? height});
WalletCredentials createZcashRestoreWalletFromPrivateKey(
- {required String name, required String privateKey, required String password});
+ {required String name, required String privateKey, required String password, required int height});
String getAddress(WalletBase wallet);
String getPrivateKey(WalletBase wallet);
String getPublicKey(WalletBase wallet);
@@ -1643,8 +1643,9 @@ abstract class Zcash {
dynamic getOptionToType(ReceivePageOption option);
void unlockDatabase(String password);
Future<int> getHeightByDate(DateTime date);
+ bool showMissingFundsCard(WalletBase wallet);
+ Future<void> rescanInternalChange(WalletBase wallet);
}
-
""";
const zcashEmptyDefinition = 'Zcash? zcash;\n';
diff --git a/tool/utils/translation/translation_utils.dart b/tool/utils/translation/translation_utils.dart
index 173b66c..f53a8d1 100644
--- a/tool/utils/translation/translation_utils.dart
+++ b/tool/utils/translation/translation_utils.dart
@@ -1,5 +1,6 @@
import 'package:translator/translator.dart';
+import '../../print_verbose_dummy.dart';
import 'arb_file_utils.dart';
import 'translation_constants.dart';
@@ -33,8 +34,12 @@ Future<String> getTranslation(String text, String lang) async {
final placeholder =
regExp.allMatches(text).map((e) => text.substring(e.start, e.end)).toList().asMap();
- var translation = (await translator.translate(text, from: defaultLang, to: lang)).text;
-
+ String translation = text;
+ try {
+ translation = (await translator.translate(text, from: defaultLang, to: lang)).text;
+ } catch (e) {
+ printV("$lang, $text, $e");
+ }
placeholder.forEach((index, value) {
final translatedPlaceholder = regExp.allMatches(translation).toList()[index];
translation =
Why this scored 32/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.