sp debugging (#2426)
* feat(sp): debug logging feature * fix(sp): Receiver * feat(sp): handle and log failures and early returns --------- Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
rafael_xmr committed
Aug 6, 2025 at 10:26 UTC
4dc5be76405e120f16e80cb82a92a036e3ea8c18
36 files changed
+385
-113
cw_bitcoin/lib/electrum_wallet.dart
+125
-53
@@ -9,6 +9,7 @@ import 'package:cw_bitcoin/bitcoin_amount_format.dart';
9
import 'package:cw_core/utils/print_verbose.dart';
10
import 'package:cw_bitcoin/bitcoin_wallet.dart';
11
import 'package:cw_bitcoin/litecoin_wallet.dart';
12
+import 'package:path_provider/path_provider.dart';
13
import 'package:shared_preferences/shared_preferences.dart';
14
import 'package:blockchain_utils/blockchain_utils.dart';
15
import 'package:collection/collection.dart';
@@ -353,27 +354,32 @@ abstract class ElectrumWalletBase
354
runningIsolate.kill(priority: Isolate.immediate);
355
}
356
357
+ final appDir = await getApplicationSupportDirectory();
358
+ String debugLogPath = "${appDir.path}/logs/debug.log";
359
+
360
final receivePort = ReceivePort();
361
_isolate = Isolate.spawn(
358
- _handleScanSilentPayments,
359
- ScanData(
360
- sendPort: receivePort.sendPort,
361
- silentAddress: walletAddresses.silentAddress!,
362
- network: network,
363
- height: height,
364
- chainTip: chainTip,
365
- electrumClient: electrum.ElectrumClient(),
366
- transactionHistoryIds: transactionHistory.transactions.keys.toList(),
367
- node: (await getNodeSupportsSilentPayments()) == true
368
- ? ScanNode(node!.uri, node!.useSSL)
369
- : null,
370
- labels: walletAddresses.labels,
371
- labelIndexes: walletAddresses.silentAddresses
372
- .where((addr) => addr.type == SilentPaymentsAddresType.p2sp && addr.index >= 1)
373
- .map((addr) => addr.index)
374
- .toList(),
375
- isSingleScan: doSingleScan ?? false,
376
- ));
362
+ _handleScanSilentPayments,
363
+ ScanData(
364
+ sendPort: receivePort.sendPort,
365
+ silentAddress: walletAddresses.silentAddress!,
366
+ network: network,
367
+ height: height,
368
+ chainTip: chainTip,
369
+ electrumClient: electrum.ElectrumClient(),
370
+ transactionHistoryIds: transactionHistory.transactions.keys.toList(),
371
+ node: (await getNodeSupportsSilentPayments()) == true
372
+ ? ScanNode(node!.uri, node!.useSSL)
373
+ : null,
374
+ labels: walletAddresses.labels,
375
+ labelIndexes: walletAddresses.silentAddresses
376
+ .where((addr) => addr.type == SilentPaymentsAddresType.p2sp && addr.index >= 1)
377
+ .map((addr) => addr.index)
378
+ .toList(),
379
+ isSingleScan: doSingleScan ?? false,
380
+ debugLogPath: debugLogPath,
381
+ ),
382
+ );
383
384
await _receiveStream?.cancel();
385
_receiveStream = receivePort.listen((var message) async {
@@ -2762,6 +2768,7 @@ class ScanData {
2768
final Map<String, String> labels;
2769
final List<int> labelIndexes;
2770
final bool isSingleScan;
2771
+ final String debugLogPath;
2772
2773
ScanData({
2774
required this.sendPort,
@@ -2775,6 +2782,7 @@ class ScanData {
2782
required this.labels,
2783
required this.labelIndexes,
2784
required this.isSingleScan,
2785
+ required this.debugLogPath,
2786
});
2787
2788
factory ScanData.fromHeight(ScanData scanData, int newHeight) {
@@ -2790,6 +2798,7 @@ class ScanData {
2798
labels: scanData.labels,
2799
labelIndexes: scanData.labelIndexes,
2800
isSingleScan: scanData.isSingleScan,
2801
+ debugLogPath: scanData.debugLogPath,
2802
);
2803
}
2804
}
@@ -2802,15 +2811,21 @@ class SyncResponse {
2811
}
2812
2813
Future<void> _handleScanSilentPayments(ScanData scanData) async {
2814
+ var node = Uri.parse("tcp://electrs.cakewallet.com:50001");
2815
+
2816
+ void log(String message, LogLevel level) {
2817
+ printV("[Scanning] $message", file: scanData.debugLogPath, level: level);
2818
+ }
2819
+
2820
try {
2821
// if (scanData.shouldSwitchNodes) {
2822
var scanningClient = await ElectrumProvider.connect(
2808
- ElectrumTCPService.connect(
2809
- Uri.parse("tcp://electrs.cakewallet.com:50001"),
2810
- ),
2823
+ ElectrumTCPService.connect(node),
2824
);
2825
// }
2826
2827
+ log("connected to ${node.toString()}", LogLevel.info);
2828
+
2829
int syncHeight = scanData.height;
2830
int initialSyncHeight = syncHeight;
2831
@@ -2822,6 +2837,11 @@ Future<void> _handleScanSilentPayments(ScanData scanData) async {
2837
scanData.labelIndexes.length,
2838
);
2839
2840
+ log(
2841
+ "using receiver: b_scan: ${scanData.silentAddress.b_scan.toHex()}, B_scan: ${scanData.silentAddress.B_spend.toHex()}, b_spend: ${scanData.silentAddress.B_spend.toHex()}, B_spend: ${scanData.silentAddress.B_spend.toHex()}, network: ${scanData.network.value}, labelIndexes: ${scanData.labelIndexes}",
2842
+ LogLevel.info,
2843
+ );
2844
+
2845
int getCountToScanPerRequest(int syncHeight) {
2846
if (scanData.isSingleScan) {
2847
return 1;
@@ -2842,10 +2862,22 @@ Future<void> _handleScanSilentPayments(ScanData scanData) async {
2862
2863
var _scanningStream = await scanningClient.subscribe(req);
2864
2865
+ log(
2866
+ "initial request: height: $syncHeight, count: ${getCountToScanPerRequest(syncHeight)}",
2867
+ LogLevel.info,
2868
+ );
2869
+
2870
void listenFn(Map<String, dynamic> event, ElectrumTweaksSubscribe req) async {
2871
final response = req.onResponse(event);
2872
2873
if (response == null || _scanningStream == null) {
2874
+ log(
2875
+ "ending: response = $response, stream = $_scanningStream",
2876
+ LogLevel.error,
2877
+ );
2878
+ scanData.sendPort.send(
2879
+ SyncResponse(scanData.height, LostConnectionSyncStatus()),
2880
+ );
2881
return;
2882
}
2883
@@ -2854,6 +2886,11 @@ Future<void> _handleScanSilentPayments(ScanData scanData) async {
2886
2887
if (noData) {
2888
if (scanData.isSingleScan) {
2889
+ log("ending: noData and isSingleScan", LogLevel.info);
2890
+
2891
+ scanData.sendPort.send(
2892
+ SyncResponse(scanData.height, LostConnectionSyncStatus()),
2893
+ );
2894
return;
2895
}
2896
@@ -2861,6 +2898,11 @@ Future<void> _handleScanSilentPayments(ScanData scanData) async {
2898
final nextHeight = syncHeight + 1;
2899
2900
if (nextHeight <= scanData.chainTip) {
2901
+ log(
2902
+ "resubscribing: nextHeight: $nextHeight, count: ${getCountToScanPerRequest(nextHeight)}",
2903
+ LogLevel.info,
2904
+ );
2905
+
2906
final nextStream = scanningClient.subscribe(
2907
ElectrumTweaksSubscribe(
2908
height: nextHeight,
@@ -2878,6 +2920,10 @@ Future<void> _handleScanSilentPayments(ScanData scanData) async {
2920
}
2921
}
2922
2923
+ log(
2924
+ "ending: resubscribing: nextHeight: $nextHeight, count: ${getCountToScanPerRequest(nextHeight)}",
2925
+ LogLevel.info,
2926
+ );
2927
return;
2928
}
2929
@@ -2895,6 +2941,9 @@ Future<void> _handleScanSilentPayments(ScanData scanData) async {
2941
try {
2942
final blockTweaks = response.blockTweaks;
2943
2944
+ var blockDate = DateTime.now();
2945
+ bool isDateNow = true;
2946
+
2947
for (final txid in blockTweaks.keys) {
2948
final tweakData = blockTweaks[txid];
2949
final outputPubkeys = tweakData!.outputPubkeys;
@@ -2923,33 +2972,42 @@ Future<void> _handleScanSilentPayments(ScanData scanData) async {
2972
continue;
2973
}
2974
2926
- var txDate = DateTime.now();
2927
- bool isDateNow = true;
2928
-
2929
- final tweakBlockHash = await ProxyWrapper()
2930
- .get(
2931
- clearnetUri: Uri.parse(
2932
- "https://mempool.cakewallet.com/api/v1/block-height/$tweakHeight",
2933
- ),
2934
- )
2935
- .timeout(Duration(seconds: 15));
2936
- final blockResponse = await ProxyWrapper()
2937
- .get(
2938
- clearnetUri: Uri.parse(
2939
- "https://mempool.cakewallet.com/api/v1/block/${tweakBlockHash.body}",
2940
- ),
2941
- )
2942
- .timeout(Duration(seconds: 15));
2975
+ log(
2976
+ "FOUND: addToWallet: ${addToWallet.length}, txid: $txid, tweak: $tweak, height: $tweakHeight",
2977
+ LogLevel.info,
2978
+ );
2979
2944
- if (blockResponse.statusCode == 200 &&
2945
- blockResponse.body.isNotEmpty &&
2946
- jsonDecode(blockResponse.body)['timestamp'] != null) {
2980
+ // Every tx in the block has the same date (the block date)
2981
+ // So, if blockDate exists, reuse
2982
+ if (isDateNow) {
2983
try {
2948
- txDate = DateTime.fromMillisecondsSinceEpoch(
2949
- int.parse(jsonDecode(blockResponse.body)['timestamp'].toString()) * 1000,
2950
- );
2951
- isDateNow = false;
2952
- } catch (_) {}
2984
+ final tweakBlockHash = await ProxyWrapper()
2985
+ .get(
2986
+ clearnetUri: Uri.parse(
2987
+ "https://mempool.cakewallet.com/api/v1/block-height/$tweakHeight",
2988
+ ),
2989
+ )
2990
+ .timeout(Duration(seconds: 15));
2991
+ final blockResponse = await ProxyWrapper()
2992
+ .get(
2993
+ clearnetUri: Uri.parse(
2994
+ "https://mempool.cakewallet.com/api/v1/block/${tweakBlockHash.body}",
2995
+ ),
2996
+ )
2997
+ .timeout(Duration(seconds: 15));
2998
+
2999
+ if (blockResponse.statusCode == 200 &&
3000
+ blockResponse.body.isNotEmpty &&
3001
+ jsonDecode(blockResponse.body)['timestamp'] != null) {
3002
+ blockDate = DateTime.fromMillisecondsSinceEpoch(
3003
+ int.parse(jsonDecode(blockResponse.body)['timestamp'].toString()) * 1000,
3004
+ );
3005
+ isDateNow = false;
3006
+ }
3007
+ } catch (e, stacktrace) {
3008
+ printV(stacktrace);
3009
+ printV(e.toString());
3010
+ }
3011
}
3012
3013
// initial placeholder ElectrumTransactionInfo object to update values based on new scanned unspent(s) on the following loop
@@ -2963,7 +3021,7 @@ Future<void> _handleScanSilentPayments(ScanData scanData) async {
3021
isReplaced: false,
3022
// TODO: fetch block data and get the date from it
3023
date: scanData.network == BitcoinNetwork.mainnet
2966
- ? (isDateNow ? getDateByBitcoinHeight(tweakHeight) : txDate)
3024
+ ? (isDateNow ? getDateByBitcoinHeight(tweakHeight) : blockDate)
3025
: DateTime.now(),
3026
confirmations: scanData.chainTip - tweakHeight + 1,
3027
isReceivedSilentPayment: true,
@@ -3026,13 +3084,23 @@ Future<void> _handleScanSilentPayments(ScanData scanData) async {
3084
3085
scanData.sendPort.send({txInfo.id: txInfo});
3086
} catch (e, stacktrace) {
3029
- printV(stacktrace);
3030
- printV(e.toString());
3087
+ scanData.sendPort.send(
3088
+ SyncResponse(syncHeight, LostConnectionSyncStatus()),
3089
+ );
3090
+
3091
+ log(stacktrace.toString(), LogLevel.error);
3092
+ log(e.toString(), LogLevel.error);
3093
+ return;
3094
}
3095
}
3096
} catch (e, stacktrace) {
3034
- printV(stacktrace);
3035
- printV(e.toString());
3097
+ scanData.sendPort.send(
3098
+ SyncResponse(syncHeight, LostConnectionSyncStatus()),
3099
+ );
3100
+
3101
+ log(stacktrace.toString(), LogLevel.error);
3102
+ log(e.toString(), LogLevel.error);
3103
+ return;
3104
}
3105
3106
syncHeight = tweakHeight;
@@ -3049,13 +3117,17 @@ Future<void> _handleScanSilentPayments(ScanData scanData) async {
3117
3118
_scanningStream?.close();
3119
_scanningStream = null;
3120
+ log(
3121
+ "ending: syncHeight: $syncHeight, chainTip: ${scanData.chainTip}, isSingleScan: ${scanData.isSingleScan}",
3122
+ LogLevel.info,
3123
+ );
3124
return;
3125
}
3126
}
3127
3128
_scanningStream?.listen((event) => listenFn(event, req));
3129
} catch (e) {
3058
- printV("Error in _handleScanSilentPayments: $e");
3130
+ log("Error in _handleScanSilentPayments: $e", LogLevel.error);
3131
scanData.sendPort.send(SyncResponse(scanData.height, LostConnectionSyncStatus()));
3132
}
3133
}
cw_core/lib/utils/print_verbose.dart
+24
-4
@@ -1,9 +1,28 @@
1
+import 'dart:io';
2
import 'dart:math';
3
import 'package:flutter/foundation.dart';
4
4
-void printV(dynamic content) {
5
- CustomTrace programInfo = CustomTrace(StackTrace.current);
6
- print("${programInfo.fileName}#${programInfo.lineNumber}:${programInfo.columnNumber} ${programInfo.callerFunctionName}: $content");
5
+enum LogLevel { info, debug, warn, error }
6
+
7
+/// Pass an optional [file] to also write the log to a file.
8
+void printV(
9
+ dynamic content, {
10
+ String? file,
11
+ LogLevel level = LogLevel.info,
12
+}) {
13
+ final programInfo = CustomTrace(StackTrace.current);
14
+ final logLine =
15
+ "[${level.name.toUpperCase()}] ${programInfo.fileName}#${programInfo.lineNumber}:${programInfo.columnNumber} ${programInfo.callerFunctionName}: $content";
16
+
17
+ print(logLine);
18
+
19
+ if (file != null) {
20
+ final logFile = File(file);
21
+ if (!logFile.existsSync()) {
22
+ logFile.createSync(recursive: true);
23
+ }
24
+ logFile.writeAsStringSync("$logLine\n", mode: FileMode.append, flush: true);
25
+ }
26
}
27
28
// https://stackoverflow.com/a/59386101
@@ -62,7 +81,8 @@ class CustomTrace {
81
var traceString = frames[1];
82
83
/* Search through the string and find the index of the file name by looking for the '.dart' regex */
65
- var indexOfFileName = traceString.indexOf(RegExp(r'[/A-Za-z_]+.dart'), 1); // 1 to offest and not print the printV function name
84
+ var indexOfFileName = traceString.indexOf(
85
+ RegExp(r'[/A-Za-z_]+.dart'), 1); // 1 to offest and not print the printV function name
86
87
var fileInfo = traceString.substring(max(0, indexOfFileName));
88
lib/di.dart
+3
@@ -141,6 +141,7 @@ import 'package:cake_wallet/src/screens/settings/other_settings_page.dart';
141
import 'package:cake_wallet/src/screens/settings/privacy_page.dart';
142
import 'package:cake_wallet/src/screens/settings/security_backup_page.dart';
143
import 'package:cake_wallet/src/screens/settings/silent_payments_settings.dart';
144
+import 'package:cake_wallet/src/screens/settings/silent_payments_logs_page.dart';
145
import 'package:cake_wallet/src/screens/settings/trocador_providers_page.dart';
146
import 'package:cake_wallet/src/screens/setup_2fa/modify_2fa_page.dart';
147
import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa.dart';
@@ -1024,6 +1025,8 @@ Future<void> setup({
1025
getIt.registerFactory(
1026
() => SilentPaymentsSettingsPage(getIt.get<SilentPaymentsSettingsViewModel>()));
1027
1028
+ getIt.registerFactory(() => SilentPaymentsLogPage(getIt.get<SilentPaymentsSettingsViewModel>()));
1029
+
1030
getIt.registerFactory(() => MwebSettingsPage(getIt.get<MwebSettingsViewModel>()));
1031
1032
getIt.registerFactory(() => MwebLogsPage(getIt.get<MwebSettingsViewModel>()));
lib/router.dart
+6
@@ -95,6 +95,7 @@ import 'package:cake_wallet/src/screens/settings/other_settings_page.dart';
95
import 'package:cake_wallet/src/screens/settings/privacy_page.dart';
96
import 'package:cake_wallet/src/screens/settings/security_backup_page.dart';
97
import 'package:cake_wallet/src/screens/settings/silent_payments_settings.dart';
98
+import 'package:cake_wallet/src/screens/settings/silent_payments_logs_page.dart';
99
import 'package:cake_wallet/src/screens/settings/trocador_providers_page.dart';
100
import 'package:cake_wallet/src/screens/setup_2fa/modify_2fa_page.dart';
101
import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa.dart';
@@ -489,6 +490,11 @@ Route<dynamic> createRoute(RouteSettings settings) {
490
(context) => getIt.get<SilentPaymentsSettingsPage>(),
491
);
492
493
+ case Routes.silentPaymentsLogs:
494
+ return handleRouteWithPlatformAwareness(
495
+ (context) => getIt.get<SilentPaymentsLogPage>(),
496
+ );
497
+
498
case Routes.mwebSettings:
499
return handleRouteWithPlatformAwareness(
500
(context) => getIt.get<MwebSettingsPage>(),
lib/routes.dart
+3
-1
@@ -79,6 +79,7 @@ class Routes {
79
static const cakePayAccountPage = '/cake_pay_account_page';
80
static const webViewPage = '/web_view_page';
81
static const silentPaymentsSettings = '/silent_payments_settings';
82
+ static const silentPaymentsLogs = '/silent_payments_logs';
83
static const mwebSettings = '/mweb_settings';
84
static const mwebLogs = '/mweb_logs';
85
static const mwebNode = '/mweb_node';
@@ -127,7 +128,8 @@ class Routes {
128
static const urqrAnimatedPage = '/urqr/animated_page';
129
static const walletGroupsDisplayPage = '/wallet_groups_display_page';
130
static const walletGroupDescription = '/wallet_group_description';
130
- static const walletGroupExistingSeedDescriptionPage = '/wallet_group_existing_seed_description_page';
131
+ static const walletGroupExistingSeedDescriptionPage =
132
+ '/wallet_group_existing_seed_description_page';
133
static const walletSeedVerificationPage = '/wallet_seed_verification_page';
134
static const exchangeTradeExternalSendPage = '/exchange_trade_external_send_page';
135
lib/src/screens/settings/silent_payments_logs_page.dart
new
+121
@@ -0,0 +1,121 @@
1
+import 'dart:io';
2
+import 'package:cake_wallet/src/screens/base_page.dart';
3
+import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart';
4
+import 'package:cake_wallet/src/widgets/primary_button.dart';
5
+import 'package:cake_wallet/generated/i18n.dart';
6
+import 'package:cake_wallet/utils/exception_handler.dart';
7
+import 'package:cake_wallet/utils/share_util.dart';
8
+import 'package:cake_wallet/utils/show_pop_up.dart';
9
+import 'package:cake_wallet/view_model/settings/silent_payments_settings_view_model.dart';
10
+import 'package:file_picker/file_picker.dart';
11
+import 'package:flutter/material.dart';
12
+import 'package:path_provider/path_provider.dart';
13
+
14
+class SilentPaymentsLogPage extends BasePage {
15
+ SilentPaymentsLogPage(this.silentPaymentsSettingsViewModelBase);
16
+
17
+ final SilentPaymentsSettingsViewModel silentPaymentsSettingsViewModelBase;
18
+
19
+ @override
20
+ String get title => S.current.silent_payments_logs;
21
+
22
+ @override
23
+ Widget body(BuildContext context) {
24
+ return Stack(
25
+ fit: StackFit.expand,
26
+ children: [
27
+ FutureBuilder<String>(
28
+ future: silentPaymentsSettingsViewModelBase.getAbbreviatedLogs(),
29
+ builder: (context, snapshot) {
30
+ if (snapshot.connectionState == ConnectionState.waiting) {
31
+ return Center(child: CircularProgressIndicator());
32
+ } else if (snapshot.hasError || !snapshot.hasData || snapshot.data!.isEmpty) {
33
+ return Center(child: Text('No logs found'));
34
+ } else {
35
+ return SingleChildScrollView(
36
+ child: Padding(
37
+ padding: EdgeInsets.all(16.0),
38
+ child: Text(
39
+ snapshot.data!,
40
+ style:
41
+ Theme.of(context).textTheme.bodyMedium!.copyWith(fontFamily: 'Monospace'),
42
+ ),
43
+ ),
44
+ );
45
+ }
46
+ },
47
+ ),
48
+ Positioned(
49
+ child: LoadingPrimaryButton(
50
+ onPressed: () => onExportLogs(context),
51
+ text: S.of(context).export_logs,
52
+ color: Theme.of(context).colorScheme.primary,
53
+ textColor: Theme.of(context).colorScheme.onPrimary,
54
+ ),
55
+ bottom: 24,
56
+ left: 24,
57
+ right: 24,
58
+ )
59
+ ],
60
+ );
61
+ }
62
+
63
+ void onExportLogs(BuildContext context) {
64
+ if (Platform.isAndroid) {
65
+ onExportAndroid(context);
66
+ } else if (Platform.isIOS) {
67
+ share(context);
68
+ } else {
69
+ _saveFile();
70
+ }
71
+ }
72
+
73
+ void onExportAndroid(BuildContext context) {
74
+ showPopUp<void>(
75
+ context: context,
76
+ builder: (dialogContext) {
77
+ return AlertWithTwoActions(
78
+ alertTitle: S.of(context).export_backup,
79
+ alertContent: S.of(context).select_destination,
80
+ rightButtonText: S.of(context).save,
81
+ leftButtonText: S.of(context).cancel,
82
+ actionLeftButton: () async {
83
+ Navigator.of(dialogContext).pop();
84
+ },
85
+ actionRightButton: () async {
86
+ Navigator.of(dialogContext).pop();
87
+ try {
88
+ await share(context);
89
+ } catch (e, s) {
90
+ ExceptionHandler.onError(FlutterErrorDetails(
91
+ exception: e,
92
+ stack: s,
93
+ library: "Export Logs",
94
+ ));
95
+ }
96
+ });
97
+ });
98
+ }
99
+
100
+ Future<void> share(BuildContext context) async {
101
+ final inAppPath = "${(await getApplicationSupportDirectory()).path}/logs/debug.log";
102
+ await ShareUtil.shareFile(filePath: inAppPath, fileName: "debug.log", context: context);
103
+ }
104
+
105
+ Future<void> _saveFile() async {
106
+ String? outputFile = await FilePicker.platform
107
+ .saveFile(dialogTitle: 'Save Your File to desired location', fileName: "debug.log");
108
+
109
+ try {
110
+ final filePath = (await getApplicationSupportDirectory()).path + "/debug.log";
111
+ File debugLogFile = File(filePath);
112
+ await debugLogFile.copy(outputFile!);
113
+ } catch (exception, stackTrace) {
114
+ ExceptionHandler.onError(FlutterErrorDetails(
115
+ exception: exception,
116
+ stack: stackTrace,
117
+ library: "Export Logs",
118
+ ));
119
+ }
120
+ }
121
+}
lib/src/screens/settings/silent_payments_settings.dart
+5
@@ -41,6 +41,11 @@ class SilentPaymentsSettingsPage extends BasePage {
41
title: S.current.silent_payments_scanning,
42
handler: (BuildContext context) => Navigator.of(context).pushNamed(Routes.rescan),
43
),
44
+ SettingsCellWithArrow(
45
+ title: S.current.silent_payments_logs,
46
+ handler: (BuildContext context) =>
47
+ Navigator.of(context).pushNamed(Routes.silentPaymentsLogs),
48
+ ),
49
],
50
),
51
);
lib/view_model/settings/silent_payments_settings_view_model.dart
+15
@@ -1,7 +1,10 @@
1
+import 'dart:io';
2
+
3
import 'package:cake_wallet/bitcoin/bitcoin.dart';
4
import 'package:cake_wallet/store/settings_store.dart';
5
import 'package:cw_core/wallet_base.dart';
6
import 'package:mobx/mobx.dart';
7
+import 'package:path_provider/path_provider.dart';
8
9
part 'silent_payments_settings_view_model.g.dart';
10
@@ -30,4 +33,16 @@ abstract class SilentPaymentsSettingsViewModelBase with Store {
33
bitcoin!.setIsAlwaysScanningSP(_wallet, value);
34
if (value) bitcoin!.setScanningActive(_wallet, true);
35
}
36
+
37
+ Future<String> getAbbreviatedLogs() async {
38
+ final appSupportPath = (await getApplicationSupportDirectory()).path;
39
+ final logsFile = File("$appSupportPath/logs/debug.log");
40
+ if (!logsFile.existsSync()) {
41
+ return "";
42
+ }
43
+ final logs = logsFile.readAsStringSync();
44
+
45
+ // return last 10000 characters:
46
+ return logs.substring(logs.length > 10000 ? logs.length - 10000 : 0);
47
+ }
48
}
res/values/strings_ar.arb
+3
-2
@@ -522,12 +522,12 @@
522
"nano_pick_new_rep": "اختر ممثلًا جديدًا",
523
"nanogpt_subtitle": "جميع النماذج الأحدث (GPT-4 ، Claude). \\ nno اشتراك ، ادفع مع Crypto.",
524
"narrow": "ضيق",
525
- "new_tag": "جديد",
525
"new_first_wallet_text": "الحفاظ على سلامة التشفير الخاص بك هو قطعة من الكعكة",
526
"new_node_testing": "تجربة العقدة الجديدة",
527
"new_subaddress_create": "إنشاء",
528
"new_subaddress_label_name": "تسمية",
529
"new_subaddress_title": "عنوان جديد",
530
+ "new_tag": "جديد",
531
"new_template": "قالب جديد",
532
"new_transactions_notifications": "إرسال إشعارات حول المعاملات الجديدة",
533
"new_wallet": "إنشاء محفظة جديدة",
@@ -865,6 +865,7 @@
865
"silent_payments_always_scan": "حدد المدفوعات الصامتة دائمًا المسح الضوئي",
866
"silent_payments_disclaimer": "العناوين الجديدة ليست هويات جديدة. إنها إعادة استخدام هوية موجودة مع ملصق مختلف.",
867
"silent_payments_display_card": "عرض بطاقة المدفوعات الصامتة",
868
+ "silent_payments_logs": "سجلات الدفع الصامتة",
869
"silent_payments_scan_from_date": "فحص من التاريخ",
870
"silent_payments_scan_from_date_or_blockheight": "يرجى إدخال ارتفاع الكتلة الذي تريد بدء المسح الضوئي للمدفوعات الصامتة الواردة ، أو استخدام التاريخ بدلاً من ذلك. يمكنك اختيار ما إذا كانت المحفظة تواصل مسح كل كتلة ، أو تتحقق فقط من الارتفاع المحدد.",
871
"silent_payments_scan_from_height": "فحص من ارتفاع الكتلة",
@@ -1128,4 +1129,4 @@
1129
"you_will_send": "تحويل من",
1130
"youCanGoBackToYourDapp": "يمكنك العودة إلى DAPP الخاص بك الآن",
1131
"yy": "YY"
1131
-}
1132
+}
\ No newline at end of file
res/values/strings_bg.arb
+3
-2
@@ -522,12 +522,12 @@
522
"nano_pick_new_rep": "Изберете нов представител",
523
"nanogpt_subtitle": "Всички най-нови модели (GPT-4, Claude). \\ Nno абонамент, платете с Crypto.",
524
"narrow": "Тесен",
525
- "new_tag": "Ново",
525
"new_first_wallet_text": "Запазването на криптовалутата ви е парче торта",
526
"new_node_testing": "Тестване на нов node",
527
"new_subaddress_create": "Създаване",
528
"new_subaddress_label_name": "Име на Label",
529
"new_subaddress_title": "Нов адрес",
530
+ "new_tag": "Ново",
531
"new_template": "Нов шаблон",
532
"new_transactions_notifications": "Изпратете известия за нови транзакции",
533
"new_wallet": "Нов портфейл",
@@ -865,6 +865,7 @@
865
"silent_payments_always_scan": "Задайте мълчаливи плащания винаги сканиране",
866
"silent_payments_disclaimer": "Новите адреси не са нови идентичности. Това е повторна употреба на съществуваща идентичност с различен етикет.",
867
"silent_payments_display_card": "Показване на безшумни плащания карта",
868
+ "silent_payments_logs": "Мълчаливи дневници за плащане",
869
"silent_payments_scan_from_date": "Сканиране от дата",
870
"silent_payments_scan_from_date_or_blockheight": "Моля, въведете височината на блока, която искате да започнете да сканирате за входящи безшумни плащания, или вместо това използвайте датата. Можете да изберете дали портфейлът продължава да сканира всеки блок или проверява само определената височина.",
871
"silent_payments_scan_from_height": "Сканиране от височината на блока",
@@ -1128,4 +1129,4 @@
1129
"you_will_send": "Обръщане от",
1130
"youCanGoBackToYourDapp": "Можете да се върнете при вашия Dapp сега",
1131
"yy": "гг"
1131
-}
1132
+}
\ No newline at end of file
res/values/strings_cs.arb
+3
-2
@@ -522,12 +522,12 @@
522
"nano_pick_new_rep": "Vyberte nového zástupce",
523
"nanogpt_subtitle": "Všechny nejnovější modely (GPT-4, Claude). \\ Nno předplatné, plaťte krypto.",
524
"narrow": "Úzký",
525
- "new_tag": "Nový",
525
"new_first_wallet_text": "Udržování svého kryptového v bezpečí je kus dortu",
526
"new_node_testing": "Testování nového uzlu",
527
"new_subaddress_create": "Vytvořit",
528
"new_subaddress_label_name": "Popisek",
529
"new_subaddress_title": "Nová adresa",
530
+ "new_tag": "Nový",
531
"new_template": "Nová šablona",
532
"new_transactions_notifications": "Zašlete oznámení o nových transakcích",
533
"new_wallet": "Nová peněženka",
@@ -865,6 +865,7 @@
865
"silent_payments_always_scan": "Nastavit tiché platby vždy skenování",
866
"silent_payments_disclaimer": "Nové adresy nejsou nové identity. Je to opětovné použití existující identity s jiným štítkem.",
867
"silent_payments_display_card": "Zobrazit kartu Silent Payments",
868
+ "silent_payments_logs": "Protokoly tichých plateb",
869
"silent_payments_scan_from_date": "Skenovat od data",
870
"silent_payments_scan_from_date_or_blockheight": "Zadejte výšku bloku, kterou chcete začít skenovat, zda jsou přicházející tiché platby, nebo místo toho použijte datum. Můžete si vybrat, zda peněženka pokračuje v skenování každého bloku nebo zkontroluje pouze zadanou výšku.",
871
"silent_payments_scan_from_height": "Skenování z výšky bloku",
@@ -1128,4 +1129,4 @@
1129
"you_will_send": "Směnit z",
1130
"youCanGoBackToYourDapp": "Nyní se můžete vrátit do svého dappu",
1131
"yy": "YY"
1131
-}
1132
+}
\ No newline at end of file
res/values/strings_de.arb
+2
-1
@@ -522,12 +522,12 @@
522
"nano_pick_new_rep": "Wählen Sie einen neuen Vertreter aus",
523
"nanogpt_subtitle": "Alle neuesten Modelle (GPT-4, Claude).",
524
"narrow": "Eng",
525
- "new_tag": "Neu",
525
"new_first_wallet_text": "Wenn Sie Ihren Krypto schützen, ist ein Kinderspiel",
526
"new_node_testing": "Neuen Knoten testen",
527
"new_subaddress_create": "Erstellen",
528
"new_subaddress_label_name": "Bezeichnung",
529
"new_subaddress_title": "Neue Adresse",
530
+ "new_tag": "Neu",
531
"new_template": "neue Vorlage",
532
"new_transactions_notifications": "Senden Sie Benachrichtigungen über neue Transaktionen",
533
"new_wallet": "Neue Wallet",
@@ -866,6 +866,7 @@
866
"silent_payments_always_scan": "Setzen Sie Silent Payments auf immer scannen",
867
"silent_payments_disclaimer": "Neue Adressen sind keine neuen Identitäten. Es ist eine Wiederverwendung einer bestehenden Identität mit einem anderen Etikett.",
868
"silent_payments_display_card": "Silent Payments Karte anzeigen",
869
+ "silent_payments_logs": "Stille Zahlungsprotokolle",
870
"silent_payments_scan_from_date": "Scan ab Datum",
871
"silent_payments_scan_from_date_or_blockheight": "Bitte geben Sie die Blockhöhe ein, die Sie für eingehende Silent Payments scannen möchten, oder verwenden Sie stattdessen das Datum. Sie können wählen, ob die Wallet jeden Block scannt oder nur die angegebene Höhe überprüft.",
872
"silent_payments_scan_from_height": "Scan aus der Blockhöhe scannen",
res/values/strings_en.arb
+3
-2
@@ -522,12 +522,12 @@
522
"nano_pick_new_rep": "Pick a new representative",
523
"nanogpt_subtitle": "All the newest models (GPT-4, Claude).\\nNo subscription, pay with crypto.",
524
"narrow": "Narrow",
525
- "new_tag": "New",
525
"new_first_wallet_text": "Keeping your crypto safe is a piece of cake",
526
"new_node_testing": "New node testing",
527
"new_subaddress_create": "Create",
528
"new_subaddress_label_name": "Label name",
529
"new_subaddress_title": "New address",
530
+ "new_tag": "New",
531
"new_template": "New Template",
532
"new_transactions_notifications": "Send notifications about new transactions",
533
"new_wallet": "New Wallet",
@@ -866,6 +866,7 @@
866
"silent_payments_always_scan": "Set Silent Payments always scanning",
867
"silent_payments_disclaimer": "New addresses are not new identities. It is a re-use of an existing identity with a different label.",
868
"silent_payments_display_card": "Show Silent Payments card",
869
+ "silent_payments_logs": "Silent Payment Logs",
870
"silent_payments_scan_from_date": "Scan from date",
871
"silent_payments_scan_from_date_or_blockheight": "Please enter the block height you want to start scanning for incoming Silent Payments or use the date instead. You can choose if the wallet continues scanning every block, or checks only the specified height.",
872
"silent_payments_scan_from_height": "Scan from block height",
@@ -1129,4 +1130,4 @@
1130
"you_will_send": "Convert from",
1131
"youCanGoBackToYourDapp": "You can go back to your dApp now",
1132
"yy": "YY"
1132
-}
1133
+}
\ No newline at end of file
res/values/strings_es.arb
+2
-1
@@ -522,12 +522,12 @@
522
"nano_pick_new_rep": "Elija un nuevo representante",
523
"nanogpt_subtitle": "Todos los modelos más nuevos (GPT-4, Claude). \\nSin suscripción, pague con cripto.",
524
"narrow": "Angosto",
525
- "new_tag": "Nuevo",
525
"new_first_wallet_text": "Mantener su criptografía a salvo es un pedazo de pastel",
526
"new_node_testing": "Prueba nuevos nodos",
527
"new_subaddress_create": "Crear",
528
"new_subaddress_label_name": "Nombre de etiqueta",
529
"new_subaddress_title": "Nueva direccion",
530
+ "new_tag": "Nuevo",
531
"new_template": "Nueva plantilla",
532
"new_transactions_notifications": "Enviar notificaciones sobre nuevas transacciones",
533
"new_wallet": "Nueva billetera",
@@ -866,6 +866,7 @@
866
"silent_payments_always_scan": "Establecer pagos silenciosos siempre escaneando",
867
"silent_payments_disclaimer": "Las nuevas direcciones no son nuevas identidades. Es una reutilización de una identidad existente con una etiqueta diferente.",
868
"silent_payments_display_card": "Mostrar tarjeta de pagos silenciosos",
869
+ "silent_payments_logs": "Registros de pago silenciosos",
870
"silent_payments_scan_from_date": "Escanear desde la fecha",
871
"silent_payments_scan_from_date_or_blockheight": "Ingresa la altura de bloque que desea comenzar a escanear para pagos silenciosos entrantes, o usa la fecha en su lugar. Puedes elegir si la billetera continúa escaneando cada bloque, o verifica solo la altura especificada.",
872
"silent_payments_scan_from_height": "Escanear desde la altura de bloque específico",
res/values/strings_fr.arb
+3
-2
@@ -522,12 +522,12 @@
522
"nano_pick_new_rep": "Choisissez un nouveau représentant",
523
"nanogpt_subtitle": "Tous les modèles les plus récents (GPT-4, Claude).\nPas d'abonnement, payez avec vos crypto-monnaies.",
524
"narrow": "Rédruit",
525
- "new_tag": "Nouveau",
525
"new_first_wallet_text": "Garder vos crypto-monnaies en sécurité est un jeu d'enfant.",
526
"new_node_testing": "Test du nouveau nœud",
527
"new_subaddress_create": "Créer",
528
"new_subaddress_label_name": "Nom",
529
"new_subaddress_title": "Nouvelle adresse",
530
+ "new_tag": "Nouveau",
531
"new_template": "Nouveau Modèle",
532
"new_transactions_notifications": "Envoyer des notifications sur les nouvelles transactions",
533
"new_wallet": "Nouveau Portefeuille (Wallet)",
@@ -865,6 +865,7 @@
865
"silent_payments_always_scan": "Définir les paiements silencieux toujours à la scanne",
866
"silent_payments_disclaimer": "Les nouvelles adresses ne sont pas de nouvelles identités. Il s'agit d'une réutilisation d'une identité existante avec une étiquette différente.",
867
"silent_payments_display_card": "Afficher la carte de paiement silencieuse",
868
+ "silent_payments_logs": "Journaux de paiement silencieux",
869
"silent_payments_scan_from_date": "Analyser à partir de la date",
870
"silent_payments_scan_from_date_or_blockheight": "Veuillez saisir la hauteur du bloc que vous souhaitez commencer à scanner pour les paiements silencieux entrants, ou utilisez la date à la place. Vous pouvez choisir si le portefeuille continue de numériser chaque bloc ou ne vérifie que la hauteur spécifiée.",
871
"silent_payments_scan_from_height": "Scan à partir de la hauteur du bloc",
@@ -1128,4 +1129,4 @@
1129
"you_will_send": "Convertir depuis",
1130
"youCanGoBackToYourDapp": "Vous pouvez retourner à votre Dapp maintenant",
1131
"yy": "AA"
1131
-}
1132
+}
\ No newline at end of file
res/values/strings_ha.arb
+3
-2
@@ -522,12 +522,12 @@
522
"nano_pick_new_rep": "Dauki sabon wakili",
523
"nanogpt_subtitle": "Duk sabbin samfuran (GPT-4, CLODE). \\ NNO biyan kuɗi, biya tare da crypto.",
524
"narrow": "kunkuntar",
525
- "new_tag": "Sabo",
525
"new_first_wallet_text": "Tsayawa kayatar da lafiya",
526
"new_node_testing": "Sabbin gwajin kumburi",
527
"new_subaddress_create": "Ƙirƙiri",
528
"new_subaddress_label_name": "Lakabin suna",
529
"new_subaddress_title": "Adireshin sabuwa",
530
+ "new_tag": "Sabo",
531
"new_template": "Sabon Samfura",
532
"new_transactions_notifications": "Aika sanarwa game da sababbin ma'amaloli",
533
"new_wallet": "Sabuwar Wallet",
@@ -867,6 +867,7 @@
867
"silent_payments_always_scan": "Saita biya na shiru koyaushe",
868
"silent_payments_disclaimer": "Sabbin adiresoshin ba sabon tsari bane. Wannan shine sake amfani da asalin asalin tare da wata alama daban.",
869
"silent_payments_display_card": "Nuna katin silent",
870
+ "silent_payments_logs": "Silent na biyan kuɗi",
871
"silent_payments_scan_from_date": "Scan daga kwanan wata",
872
"silent_payments_scan_from_date_or_blockheight": "Da fatan za a shigar da toshe wurin da kake son fara bincika don biyan silins mai shigowa, ko, yi amfani da kwanan wata. Zaka iya zabar idan walat ɗin ya ci gaba da bincika kowane toshe, ko duba tsinkaye da aka ƙayyade.",
873
"silent_payments_scan_from_height": "Scan daga tsayin daka",
@@ -1131,4 +1132,4 @@
1132
"you_will_send": "Maida daga",
1133
"youCanGoBackToYourDapp": "Kuna iya komawa zuwa DPP ɗinku yanzu",
1134
"yy": "YY"
1134
-}
1135
+}
\ No newline at end of file
res/values/strings_hi.arb
+4
-3
@@ -522,12 +522,12 @@
522
"nano_pick_new_rep": "एक नया प्रतिनिधि चुनें",
523
"nanogpt_subtitle": "सभी नवीनतम मॉडल (GPT-4, क्लाउड)। \\ nno सदस्यता, क्रिप्टो के साथ भुगतान करें।",
524
"narrow": "सँकरा",
525
- "new_tag": "नया",
525
"new_first_wallet_text": "अपने क्रिप्टो को सुरक्षित रखना केक का एक टुकड़ा है",
526
"new_node_testing": "नई नोड परीक्षण",
527
"new_subaddress_create": "सर्जन करना",
528
"new_subaddress_label_name": "लेबल का नाम",
529
"new_subaddress_title": "नया पता",
530
+ "new_tag": "नया",
531
"new_template": "नया टेम्पलेट",
532
"new_transactions_notifications": "नए लेनदेन के बारे में सूचनाएं भेजें",
533
"new_wallet": "नया बटुआ",
@@ -598,8 +598,8 @@
598
"payjoin_unavailable_sheet_title": "Payjoin अनुपलब्ध क्यों है?",
599
"payment_id": "भुगतान ID: ",
600
"payment_made_easy": "भुगतान आसान किया गया",
601
- "Payment_was_received": "आपका भुगतान प्राप्त हो गया था।",
601
"payment_was_received": "आपका भुगतान प्राप्त हुआ था।",
602
+ "Payment_was_received": "आपका भुगतान प्राप्त हो गया था।",
603
"payments": "भुगतान",
604
"pending": " (अपूर्ण)",
605
"percentageOf": "${amount} का",
@@ -867,6 +867,7 @@
867
"silent_payments_always_scan": "मूक भुगतान हमेशा स्कैनिंग सेट करें",
868
"silent_payments_disclaimer": "नए पते नई पहचान नहीं हैं। यह एक अलग लेबल के साथ एक मौजूदा पहचान का पुन: उपयोग है।",
869
"silent_payments_display_card": "मूक भुगतान कार्ड दिखाएं",
870
+ "silent_payments_logs": "मूक भुगतान लॉग",
871
"silent_payments_scan_from_date": "तिथि से स्कैन करना",
872
"silent_payments_scan_from_date_or_blockheight": "कृपया उस ब्लॉक ऊंचाई दर्ज करें जिसे आप आने वाले मूक भुगतान के लिए स्कैन करना शुरू करना चाहते हैं, या, इसके बजाय तारीख का उपयोग करें। आप चुन सकते हैं कि क्या वॉलेट हर ब्लॉक को स्कैन करना जारी रखता है, या केवल निर्दिष्ट ऊंचाई की जांच करता है।",
873
"silent_payments_scan_from_height": "ब्लॉक ऊंचाई से स्कैन करें",
@@ -1130,4 +1131,4 @@
1131
"you_will_send": "से रूपांतरित करें",
1132
"youCanGoBackToYourDapp": "अब आप अपने DAPP पर वापस जा सकते हैं",
1133
"yy": "वाईवाई"
1133
-}
1134
+}
\ No newline at end of file
res/values/strings_hr.arb
+3
-2
@@ -522,12 +522,12 @@
522
"nano_pick_new_rep": "Odaberite novog predstavnika",
523
"nanogpt_subtitle": "Svi najnoviji modeli (GPT-4, Claude). \\ NNO pretplata, plaćajte kripto.",
524
"narrow": "Usko",
525
- "new_tag": "Novi",
525
"new_first_wallet_text": "Čuvanje kriptovaluta je komad torte",
526
"new_node_testing": "Provjera novog nodea",
527
"new_subaddress_create": "Izradi",
528
"new_subaddress_label_name": "Oznaka",
529
"new_subaddress_title": "Nova adresa",
530
+ "new_tag": "Novi",
531
"new_template": "novi predložak",
532
"new_transactions_notifications": "Pošaljite obavijesti o novim transakcijama",
533
"new_wallet": "Novi novčanik",
@@ -865,6 +865,7 @@
865
"silent_payments_always_scan": "Postavite tiho plaćanje uvijek skeniranje",
866
"silent_payments_disclaimer": "Nove adrese nisu novi identiteti. To je ponovna upotreba postojećeg identiteta s drugom oznakom.",
867
"silent_payments_display_card": "Prikaži karticu tihih plaćanja",
868
+ "silent_payments_logs": "Tripis tihih plaćanja",
869
"silent_payments_scan_from_date": "Skeniranje iz datuma",
870
"silent_payments_scan_from_date_or_blockheight": "Unesite visinu bloka koju želite započeti skeniranje za dolazna tiha plaćanja ili umjesto toga upotrijebite datum. Možete odabrati da li novčanik nastavlja skenirati svaki blok ili provjerava samo navedenu visinu.",
871
"silent_payments_scan_from_height": "Skeniranje s visine bloka",
@@ -1128,4 +1129,4 @@
1129
"you_will_send": "Razmijeni iz",
1130
"youCanGoBackToYourDapp": "Sada se možete vratiti na svoj dapp",
1131
"yy": "GG"
1131
-}
1132
+}
\ No newline at end of file
res/values/strings_hy.arb
+3
-2
@@ -522,12 +522,12 @@
522
"nano_pick_new_rep": "Ընտրեք նոր ներկայացուցիչ",
523
"nanogpt_subtitle": "Բոլոր ամենանոր մոդելներ (GPT-4, Claude).\\nԱռանց բաժանորդագրության, վճարեք կրիպտոարժույթով",
524
"narrow": "Նեղ",
525
- "new_tag": "Նոր",
525
"new_first_wallet_text": "Ձեր ծպտյալ անվտանգ պահելը տորթի մի կտոր է",
526
"new_node_testing": "Նոր հանգույցի փորձարկում",
527
"new_subaddress_create": "Ստեղծել",
528
"new_subaddress_label_name": "Պիտակի անուն",
529
"new_subaddress_title": "Նոր հասցե",
530
+ "new_tag": "Նոր",
531
"new_template": "Նոր նմուշ",
532
"new_transactions_notifications": "Ուղարկեք ծանուցումներ նոր գործարքների վերաբերյալ",
533
"new_wallet": "Նոր դրամապանակ",
@@ -863,6 +863,7 @@
863
"silent_payments_always_scan": "Միացնել Լուռ Վճարումներ մշտական սկանավորումը",
864
"silent_payments_disclaimer": "Նոր հասցեները նոր ինքնություն չեն։ Դա այլ պիտակով գոյություն ունեցող ինքնության վերագործածում է",
865
"silent_payments_display_card": "Ցուցադրել Լուռ Վճարումներ քարտը",
866
+ "silent_payments_logs": "Լուռ վճարման տեղեկամատյաններ",
867
"silent_payments_scan_from_date": "Սկանավորել ամսաթվից",
868
"silent_payments_scan_from_date_or_blockheight": "Խնդրում ենք մուտքագրել բլոկի բարձրությունը, որտեղից դուք ցանկանում եք սկսել սկանավորել մուտքային Լուռ Վճարումները կամ տեղափոխել ամսաթվի փոխարեն։ Դուք կարող եք ընտրել, արդյոք դրամապանակը շարունակելու է սկանավորել ամեն բլոկ կամ ստուգել միայն սահմանված բարձրությունը",
869
"silent_payments_scan_from_height": "Բլոկի բարձրությունից սկանավորել",
@@ -1126,4 +1127,4 @@
1127
"you_will_send": "Փոխանակեք",
1128
"youCanGoBackToYourDapp": "Այժմ կարող եք վերադառնալ ձեր DAPP- ին",
1129
"yy": "ՏՏ"
1129
-}
1130
+}
\ No newline at end of file
res/values/strings_id.arb
+3
-2
@@ -522,12 +522,12 @@
522
"nano_pick_new_rep": "Pilih perwakilan baru",
523
"nanogpt_subtitle": "Semua model terbaru (GPT-4, Claude). \\ Nno langganan, bayar dengan crypto.",
524
"narrow": "Sempit",
525
- "new_tag": "Baru",
525
"new_first_wallet_text": "Menjaga crypto Anda aman adalah sepotong kue",
526
"new_node_testing": "Pengujian node baru",
527
"new_subaddress_create": "Buat",
528
"new_subaddress_label_name": "Nama label",
529
"new_subaddress_title": "Alamat baru",
530
+ "new_tag": "Baru",
531
"new_template": "Template Baru",
532
"new_transactions_notifications": "Kirim pemberitahuan tentang transaksi baru",
533
"new_wallet": "Dompet Baru",
@@ -868,6 +868,7 @@
868
"silent_payments_always_scan": "Tetapkan pembayaran diam selalu pemindaian",
869
"silent_payments_disclaimer": "Alamat baru bukanlah identitas baru. Ini adalah penggunaan kembali identitas yang ada dengan label yang berbeda.",
870
"silent_payments_display_card": "Tunjukkan kartu pembayaran diam",
871
+ "silent_payments_logs": "Log pembayaran diam",
872
"silent_payments_scan_from_date": "Pindai dari tanggal",
873
"silent_payments_scan_from_date_or_blockheight": "Harap masukkan ketinggian blok yang ingin Anda mulai pemindaian untuk pembayaran diam yang masuk, atau, gunakan tanggal sebagai gantinya. Anda dapat memilih jika dompet terus memindai setiap blok, atau memeriksa hanya ketinggian yang ditentukan.",
874
"silent_payments_scan_from_height": "Pindai dari Tinggi Blok",
@@ -1131,4 +1132,4 @@
1132
"you_will_send": "Konversi dari",
1133
"youCanGoBackToYourDapp": "Anda dapat kembali ke dapp Anda sekarang",
1134
"yy": "YY"
1134
-}
1135
+}
\ No newline at end of file
res/values/strings_it.arb
+3
-2
@@ -522,12 +522,12 @@
522
"nano_pick_new_rep": "Scegli un nuovo rappresentante",
523
"nanogpt_subtitle": "Tutti i modelli più recenti (GPT-4, Claude). Nessun abbonamento, paga con cripto.",
524
"narrow": "Stretto",
525
- "new_tag": "Nuovo",
525
"new_first_wallet_text": "Mantenere la tua criptovaluta è un gioco da ragazzi",
526
"new_node_testing": "Test novo nodo",
527
"new_subaddress_create": "Crea",
528
"new_subaddress_label_name": "Nome etichetta",
529
"new_subaddress_title": "Nuovo indirizzo",
530
+ "new_tag": "Nuovo",
531
"new_template": "Nuovo modello",
532
"new_transactions_notifications": "Invia notifiche su nuove transazioni",
533
"new_wallet": "Nuovo portafoglio",
@@ -866,6 +866,7 @@
866
"silent_payments_always_scan": "Impostare la scansione perpetua di Silent Payments",
867
"silent_payments_disclaimer": "I nuovi indirizzi non sono nuove identità. È un riutilizzo di un'identità esistente con un'etichetta diversa.",
868
"silent_payments_display_card": "Mostra la carta di Silent Payments",
869
+ "silent_payments_logs": "Registri di pagamento silenziosi",
870
"silent_payments_scan_from_date": "Scansionare dalla data",
871
"silent_payments_scan_from_date_or_blockheight": "Inserisci l'altezza del blocco da cui si desidera iniziare la scansione per i pagamenti Silent Payments in arrivo, o utilizza la data. Puoi scegliere se il portafoglio continua a scansionare ogni blocco o controlla solo l'altezza specificata.",
872
"silent_payments_scan_from_height": "Scansione dall'altezza del blocco",
@@ -1131,4 +1132,4 @@
1132
"you_will_send": "Conveti da",
1133
"youCanGoBackToYourDapp": "Puoi tornare al tuo DApp ora",
1134
"yy": "YY"
1134
-}
1135
+}
\ No newline at end of file
res/values/strings_ja.arb
+3
-2
@@ -523,12 +523,12 @@
523
"nano_pick_new_rep": "新しい代表者を選びます",
524
"nanogpt_subtitle": "すべての最新モデル(GPT-4、Claude)。\\ nnoサブスクリプション、暗号で支払います。",
525
"narrow": "狭い",
526
- "new_tag": "新しい",
526
"new_first_wallet_text": "暗号を安全に保つことはケーキです",
527
"new_node_testing": "新しいノードのテスト",
528
"new_subaddress_create": "作成する",
529
"new_subaddress_label_name": "ラベル名",
530
"new_subaddress_title": "新しいアドレス",
531
+ "new_tag": "新しい",
532
"new_template": "新しいテンプレート",
533
"new_transactions_notifications": "新しいトランザクションに関する通知を送信します",
534
"new_wallet": "新しいウォレット",
@@ -866,6 +866,7 @@
866
"silent_payments_always_scan": "サイレント決済を常にスキャンします",
867
"silent_payments_disclaimer": "新しいアドレスは新しいアイデンティティではありません。これは、異なるラベルを持つ既存のアイデンティティの再利用です。",
868
"silent_payments_display_card": "サイレントペイメントカードを表示します",
869
+ "silent_payments_logs": "サイレント支払いログ",
870
"silent_payments_scan_from_date": "日付からスキャンします",
871
"silent_payments_scan_from_date_or_blockheight": "着信のサイレント決済のためにスキャンを開始するブロックの高さを入力するか、代わりに日付を使用してください。ウォレットがすべてのブロックをスキャンし続けるか、指定された高さのみをチェックするかどうかを選択できます。",
872
"silent_payments_scan_from_height": "ブロックの高さからスキャンします",
@@ -1129,4 +1130,4 @@
1130
"you_will_send": "から変換",
1131
"youCanGoBackToYourDapp": "あなたは今あなたのダップに戻ることができます",
1132
"yy": "YY"
1132
-}
1133
+}
\ No newline at end of file
res/values/strings_ko.arb
+3
-2
@@ -522,12 +522,12 @@
522
"nano_pick_new_rep": "새 대표자 선택",
523
"nanogpt_subtitle": "모든 최신 모델 (GPT-4, Claude).\n구독 없이 암호화폐로 결제.",
524
"narrow": "좁게",
525
- "new_tag": "새로운",
525
"new_first_wallet_text": "암호화폐를 안전하게 보관하는 것은 식은 죽 먹기",
526
"new_node_testing": "새 노드 테스트 중",
527
"new_subaddress_create": "생성",
528
"new_subaddress_label_name": "라벨 이름",
529
"new_subaddress_title": "새 주소",
530
+ "new_tag": "새로운",
531
"new_template": "새 템플릿",
532
"new_transactions_notifications": "새 트랜잭션 알림 보내기",
533
"new_wallet": "새 지갑",
@@ -866,6 +866,7 @@
866
"silent_payments_always_scan": "사일런트 페이먼트 항상 스캔 설정",
867
"silent_payments_disclaimer": "새 주소는 새 신원이 아닙니다. 다른 라벨이 있는 기존 신원의 재사용입니다.",
868
"silent_payments_display_card": "사일런트 페이먼트 카드 표시",
869
+ "silent_payments_logs": "조용한 결제 로그",
870
"silent_payments_scan_from_date": "날짜부터 스캔",
871
"silent_payments_scan_from_date_or_blockheight": "들어오는 사일런트 페이먼트 스캔을 시작할 블록 높이를 입력하거나 대신 날짜를 사용하세요. 지갑이 모든 블록을 계속 스캔할지 또는 지정된 높이만 확인할지 선택할 수 있습니다.",
872
"silent_payments_scan_from_height": "블록 높이부터 스캔",
@@ -1129,4 +1130,4 @@
1130
"you_will_send": "전환 출처",
1131
"youCanGoBackToYourDapp": "이제 dApp으로 돌아갈 수 있습니다",
1132
"yy": "YY"
1132
-}
1133
+}
\ No newline at end of file
res/values/strings_my.arb
+3
-2
@@ -522,12 +522,12 @@
522
"nano_pick_new_rep": "အသစ်တစ်ခုကိုရွေးပါ",
523
"nanogpt_subtitle": "အားလုံးနောက်ဆုံးပေါ်မော်ဒယ်များ (GPT-4, Claude) ။ \\ nno subscription, crypto နှင့်အတူပေးဆောင်။",
524
"narrow": "ကျဉ်းသော",
525
- "new_tag": "သစ်သော",
525
"new_first_wallet_text": "သင်၏ Crypto Safe ကိုလုံခြုံအောင်ပြုလုပ်ခြင်းသည်ကိတ်မုန့်တစ်မျိုးဖြစ်သည်",
526
"new_node_testing": "နှာခေါင်း အသစ်စမ်းသပ်ခြင်း။",
527
"new_subaddress_create": "ဖန်တီးပါ။",
528
"new_subaddress_label_name": "အညွှန်းအမည်",
529
"new_subaddress_title": "လိပ်စာအသစ်",
530
+ "new_tag": "သစ်သော",
531
"new_template": "ပုံစံအသစ်",
532
"new_transactions_notifications": "အသစ်သောအရောင်းအဝယ်အကြောင်းသတိပေးချက်များပေးပို့ပါ",
533
"new_wallet": "ပိုက်ဆံအိတ်အသစ်",
@@ -865,6 +865,7 @@
865
"silent_payments_always_scan": "အမြဲတမ်း scanning အမြဲ scanning",
866
"silent_payments_disclaimer": "လိပ်စာအသစ်များသည်အထောက်အထားအသစ်များမဟုတ်ပါ။ ၎င်းသည်ကွဲပြားခြားနားသောတံဆိပ်ဖြင့်ရှိပြီးသားဝိသေသလက်ခဏာကိုပြန်လည်အသုံးပြုခြင်းဖြစ်သည်။",
867
"silent_payments_display_card": "အသံတိတ်ငွေပေးချေမှုကဒ်ကိုပြပါ",
868
+ "silent_payments_logs": "အသံတိတ်ငွေပေးချေမှုမှတ်တမ်းများ",
869
"silent_payments_scan_from_date": "ရက်စွဲမှစကင်ဖတ်ပါ",
870
"silent_payments_scan_from_date_or_blockheight": "ကျေးဇူးပြု. သင်ဝင်လာသောအသံတိတ်ငွေပေးချေမှုအတွက်သင်စကင်ဖတ်စစ်ဆေးလိုသည့်အမြင့်ကိုဖြည့်ပါ။ သို့မဟုတ်နေ့စွဲကိုသုံးပါ။ Wallet သည်လုပ်ကွက်တိုင်းကိုဆက်လက်စကင်ဖတ်စစ်ဆေးပါကသို့မဟုတ်သတ်မှတ်ထားသောအမြင့်ကိုသာစစ်ဆေးပါကသင်ရွေးချယ်နိုင်သည်။",
871
"silent_payments_scan_from_height": "ပိတ်ပင်တားဆီးမှုအမြင့်ကနေ scan",
@@ -1128,4 +1129,4 @@
1129
"you_will_send": "မှပြောင်းပါ။",
1130
"youCanGoBackToYourDapp": "သငျသညျယခုသင်၏ dapp ကိုပြန်သွားနိုင်ပါတယ်",
1131
"yy": "YY"
1131
-}
1132
+}
\ No newline at end of file
res/values/strings_nl.arb
+3
-2
@@ -522,12 +522,12 @@
522
"nano_pick_new_rep": "Kies een nieuwe vertegenwoordiger",
523
"nanogpt_subtitle": "Alle nieuwste modellen (GPT-4, Claude). \\ Nno-abonnement, betalen met crypto.",
524
"narrow": "Smal",
525
- "new_tag": "Nieuw",
525
"new_first_wallet_text": "Je crypto veilig houden is een fluitje van een cent",
526
"new_node_testing": "Nieuwe knooppunttest",
527
"new_subaddress_create": "Creëren",
528
"new_subaddress_label_name": "Label naam",
529
"new_subaddress_title": "Nieuw adres",
530
+ "new_tag": "Nieuw",
531
"new_template": "Nieuwe sjabloon",
532
"new_transactions_notifications": "Stuur meldingen over nieuwe transacties",
533
"new_wallet": "Nieuwe portemonnee",
@@ -865,6 +865,7 @@
865
"silent_payments_always_scan": "Stel stille betalingen in het scannen",
866
"silent_payments_disclaimer": "Nieuwe adressen zijn geen nieuwe identiteiten. Het is een hergebruik van een bestaande identiteit met een ander label.",
867
"silent_payments_display_card": "Toon stille betalingskaart",
868
+ "silent_payments_logs": "Stille betalingslogboeken",
869
"silent_payments_scan_from_date": "Scan vanaf datum",
870
"silent_payments_scan_from_date_or_blockheight": "Voer de blokhoogte in die u wilt beginnen met scannen op inkomende stille betalingen, of gebruik in plaats daarvan de datum. U kunt kiezen of de portemonnee elk blok blijft scannen of alleen de opgegeven hoogte controleert.",
871
"silent_payments_scan_from_height": "Scan van blokhoogte",
@@ -1129,4 +1130,4 @@
1130
"you_will_send": "Converteren van",
1131
"youCanGoBackToYourDapp": "U kunt nu terug naar uw DApp gaan",
1132
"yy": "JJ"
1132
-}
1133
+}
\ No newline at end of file
res/values/strings_pl.arb
+3
-2
@@ -522,12 +522,12 @@
522
"nano_pick_new_rep": "Wybierz nowego przedstawiciela",
523
"nanogpt_subtitle": "Wszystkie najnowsze modele (GPT-4, Claude). \\ Nno subskrypcja, płacą za pomocą kryptografii.",
524
"narrow": "Wąski",
525
- "new_tag": "Nowy",
525
"new_first_wallet_text": "Zachowanie bezpieczeństwa kryptograficznego jest kawałkiem ciasta",
526
"new_node_testing": "Testowanie nowych węzłów",
527
"new_subaddress_create": "Stwórz",
528
"new_subaddress_label_name": "Etykieta nazwy adresu",
529
"new_subaddress_title": "Nowy adres",
530
+ "new_tag": "Nowy",
531
"new_template": "Nowy szablon",
532
"new_transactions_notifications": "Wyślij powiadomienia o nowych transakcjach",
533
"new_wallet": "Nowy portfel",
@@ -865,6 +865,7 @@
865
"silent_payments_always_scan": "Włącz ciągłe skanowanie Silent Payments",
866
"silent_payments_disclaimer": "Nowe adresy nie są nową tożsamością. Jest to ponowne wykorzystanie istniejącej tożsamości z inną etykietą.",
867
"silent_payments_display_card": "Pokaż kartę Silent Payments",
868
+ "silent_payments_logs": "Ciche dzienniki płatności",
869
"silent_payments_scan_from_date": "Skanuj z daty",
870
"silent_payments_scan_from_date_or_blockheight": "Wprowadź wysokość bloku, którą chcesz rozpocząć skanowanie w poszukiwaniu cichej płatności lub zamiast tego skorzystaj z daty. Możesz wybrać, czy portfel kontynuuje skanowanie każdego bloku, lub sprawdza tylko określoną wysokość.",
871
"silent_payments_scan_from_height": "Skanuj z wysokości bloku",
@@ -1128,4 +1129,4 @@
1129
"you_will_send": "Konwertuj z",
1130
"youCanGoBackToYourDapp": "Możesz teraz wrócić do swojego dapp",
1131
"yy": "RR"
1131
-}
1132
+}
\ No newline at end of file
res/values/strings_pt.arb
+3
-2
@@ -523,12 +523,12 @@
523
"nano_pick_new_rep": "Escolha um novo representante",
524
"nanogpt_subtitle": "Todos os modelos mais recentes (GPT-4, Claude). \\nSem assinatura, pague com criptomoeda.",
525
"narrow": "Estreito",
526
- "new_tag": "Novo",
526
"new_first_wallet_text": "Manter sua cripto segura é um pedaço de bolo",
527
"new_node_testing": "Teste de novo nó",
528
"new_subaddress_create": "Criar",
529
"new_subaddress_label_name": "Nome",
530
"new_subaddress_title": "Novo endereço",
531
+ "new_tag": "Novo",
532
"new_template": "Novo modelo",
533
"new_transactions_notifications": "Envie notificações sobre novas transações",
534
"new_wallet": "Nova carteira",
@@ -867,6 +867,7 @@
867
"silent_payments_always_scan": "Defina pagamentos silenciosos sempre escaneando",
868
"silent_payments_disclaimer": "Novos endereços não são novas identidades. É uma reutilização de uma identidade existente com um rótulo diferente.",
869
"silent_payments_display_card": "Mostrar cartão de pagamento silencioso",
870
+ "silent_payments_logs": "Toras de pagamento silenciosas",
871
"silent_payments_scan_from_date": "Escanear a partir da data",
872
"silent_payments_scan_from_date_or_blockheight": "Por favor, insira a altura do bloco que deseja iniciar o escaneamento para obter pagamentos silenciosos ou use a data. Você pode escolher se a carteira continua escaneando cada bloco ou verifica apenas a altura especificada.",
873
"silent_payments_scan_from_height": "Escanear a partir da altura do bloco",
@@ -1131,4 +1132,4 @@
1132
"you_will_send": "Converter de",
1133
"youCanGoBackToYourDapp": "Você pode voltar para o seu dapp agora",
1134
"yy": "aa"
1134
-}
1135
+}
\ No newline at end of file
res/values/strings_ru.arb
+3
-2
@@ -522,12 +522,12 @@
522
"nano_pick_new_rep": "Выберите нового представителя",
523
"nanogpt_subtitle": "Все новейшие модели (GPT-4, Claude). \\ Nno Подписка, платите с крипто.",
524
"narrow": "Узкий",
525
- "new_tag": "Новый",
525
"new_first_wallet_text": "Сохранение вашего криптографии - это кусок торта",
526
"new_node_testing": "Тестирование новой ноды",
527
"new_subaddress_create": "Создать",
528
"new_subaddress_label_name": "Имя",
529
"new_subaddress_title": "Новый адрес",
530
+ "new_tag": "Новый",
531
"new_template": "Новый шаблон",
532
"new_transactions_notifications": "Отправить уведомления о новых транзакциях",
533
"new_wallet": "Новый кошелёк",
@@ -866,6 +866,7 @@
866
"silent_payments_always_scan": "Установить молчаливые платежи всегда сканирование",
867
"silent_payments_disclaimer": "Новые адреса не являются новыми личностями. Это повторное использование существующей идентичности с другой этикеткой.",
868
"silent_payments_display_card": "Показать бесшумную платежную карту",
869
+ "silent_payments_logs": "Молчаливые журналы платежей",
870
"silent_payments_scan_from_date": "Сканирование с даты",
871
"silent_payments_scan_from_date_or_blockheight": "Пожалуйста, введите высоту блока, которую вы хотите начать сканирование для входящих молчаливых платежей, или вместо этого используйте дату. Вы можете выбрать, продолжает ли кошелек сканировать каждый блок или проверять только указанную высоту.",
872
"silent_payments_scan_from_height": "Сканирование с высоты блока",
@@ -1129,4 +1130,4 @@
1130
"you_will_send": "Конвертировать из",
1131
"youCanGoBackToYourDapp": "Вы можете вернуться к своему даппу сейчас",
1132
"yy": "ГГ"
1132
-}
1133
+}
\ No newline at end of file
res/values/strings_th.arb
+3
-2
@@ -522,12 +522,12 @@
522
"nano_pick_new_rep": "เลือกตัวแทนใหม่",
523
"nanogpt_subtitle": "รุ่นใหม่ล่าสุดทั้งหมด (GPT-4, Claude). การสมัครสมาชิก \\ nno, จ่ายด้วย crypto",
524
"narrow": "แคบ",
525
- "new_tag": "ใหม่",
525
"new_first_wallet_text": "การรักษา crypto ของคุณให้ปลอดภัยเป็นเค้กชิ้นหนึ่ง",
526
"new_node_testing": "การทดสอบโหนดใหม่",
527
"new_subaddress_create": "สร้าง",
528
"new_subaddress_label_name": "ชื่อป้ายกำกับ",
529
"new_subaddress_title": "ที่อยู่ใหม่",
530
+ "new_tag": "ใหม่",
531
"new_template": "แม่แบบใหม่",
532
"new_transactions_notifications": "ส่งการแจ้งเตือนเกี่ยวกับธุรกรรมใหม่",
533
"new_wallet": "กระเป๋าใหม่",
@@ -865,6 +865,7 @@
865
"silent_payments_always_scan": "ตั้งค่าการชำระเงินแบบเงียบเสมอ",
866
"silent_payments_disclaimer": "ที่อยู่ใหม่ไม่ใช่ตัวตนใหม่ มันเป็นการใช้ซ้ำของตัวตนที่มีอยู่ด้วยฉลากที่แตกต่างกัน",
867
"silent_payments_display_card": "แสดงบัตร Silent Payments",
868
+ "silent_payments_logs": "บันทึกการชำระเงินแบบเงียบ",
869
"silent_payments_scan_from_date": "สแกนตั้งแต่วันที่",
870
"silent_payments_scan_from_date_or_blockheight": "โปรดป้อนความสูงของบล็อกที่คุณต้องการเริ่มการสแกนสำหรับการชำระเงินแบบเงียบ ๆ หรือใช้วันที่แทน คุณสามารถเลือกได้ว่ากระเป๋าเงินยังคงสแกนทุกบล็อกหรือตรวจสอบความสูงที่ระบุเท่านั้น",
871
"silent_payments_scan_from_height": "สแกนจากความสูงของบล็อก",
@@ -1128,4 +1129,4 @@
1129
"you_will_send": "แปลงจาก",
1130
"youCanGoBackToYourDapp": "คุณสามารถกลับไปที่ dapp ของคุณได้ทันที",
1131
"yy": "ปี"
1131
-}
1132
+}
\ No newline at end of file
res/values/strings_tl.arb
+3
-2
@@ -522,12 +522,12 @@
522
"nano_pick_new_rep": "Pumili ng isang bagong representative",
523
"nanogpt_subtitle": "Ang lahat ng mga pinakabagong modelo (GPT-4, Claude). \nNo subscription, magbayad gamit ang crypto.",
524
"narrow": "Makitid",
525
- "new_tag": "Bago",
525
"new_first_wallet_text": "Ang pagpapanatiling ligtas sa iyong crypto ay isang piraso ng cake",
526
"new_node_testing": "Bagong node testing",
527
"new_subaddress_create": "Lumikha",
528
"new_subaddress_label_name": "Pangalan ng label",
529
"new_subaddress_title": "Bagong address",
530
+ "new_tag": "Bago",
531
"new_template": "Bagong Template",
532
"new_transactions_notifications": "Magpadala ng mga abiso tungkol sa mga bagong transaksyon",
533
"new_wallet": "Bagong Wallet",
@@ -865,6 +865,7 @@
865
"silent_payments_always_scan": "Itakda ang mga tahimik na pagbabayad na laging nag-scan",
866
"silent_payments_disclaimer": "Ang mga bagong address ay hindi mga bagong pagkakakilanlan. Ito ay isang muling paggamit ng isang umiiral na pagkakakilanlan na may ibang label.",
867
"silent_payments_display_card": "Ipakita ang Silent Payment Card",
868
+ "silent_payments_logs": "Tahimik na mga log ng pagbabayad",
869
"silent_payments_scan_from_date": "I-scan mula sa petsa",
870
"silent_payments_scan_from_date_or_blockheight": "Mangyaring ipasok ang block height na gusto mong simulan ang pag-scan para sa papasok na tahimik na pagbabayad, o, gamitin ang petsa sa halip. Maaari kang pumili kung ang wallet ay patuloy na pag-scan sa bawat bloke, o suriin lamang ang tinukoy na taas.",
871
"silent_payments_scan_from_height": "I-scan mula sa block height",
@@ -1128,4 +1129,4 @@
1129
"you_will_send": "I-convert mula sa",
1130
"youCanGoBackToYourDapp": "Maaari kang bumalik sa iyong dapp ngayon",
1131
"yy": "YY"
1131
-}
1132
+}
\ No newline at end of file
res/values/strings_tr.arb
+3
-2
@@ -522,12 +522,12 @@
522
"nano_pick_new_rep": "Yeni bir temsilci seçin",
523
"nanogpt_subtitle": "En yeni modeller (GPT-4, Claude). \\ Nno aboneliği, kripto ile ödeme yapın.",
524
"narrow": "Dar",
525
- "new_tag": "Yeni",
525
"new_first_wallet_text": "Kripto'nuzu güvende tutmak bir parça kek",
526
"new_node_testing": "Yeni düğüm test ediliyor",
527
"new_subaddress_create": "Oluştur",
528
"new_subaddress_label_name": "Etiket ismi",
529
"new_subaddress_title": "Yeni adres",
530
+ "new_tag": "Yeni",
531
"new_template": "Yeni Şablon",
532
"new_transactions_notifications": "Yeni işlemler hakkında bildirimler gönderin",
533
"new_wallet": "Yeni Cüzdan",
@@ -865,6 +865,7 @@
865
"silent_payments_always_scan": "Sessiz ödemeleri her zaman tarama ayarlayın",
866
"silent_payments_disclaimer": "Yeni adresler yeni kimlikler değildir. Farklı bir etikete sahip mevcut bir kimliğin yeniden kullanımıdır.",
867
"silent_payments_display_card": "Sessiz Ödeme Kartı Göster",
868
+ "silent_payments_logs": "Sessiz ödeme günlükleri",
869
"silent_payments_scan_from_date": "Tarihten tarama",
870
"silent_payments_scan_from_date_or_blockheight": "Lütfen gelen sessiz ödemeler için taramaya başlamak istediğiniz blok yüksekliğini girin veya bunun yerine tarihi kullanın. Cüzdanın her bloğu taramaya devam edip etmediğini veya yalnızca belirtilen yüksekliği kontrol edip etmediğini seçebilirsiniz.",
871
"silent_payments_scan_from_height": "Blok yüksekliğinden tarama",
@@ -1128,4 +1129,4 @@
1129
"you_will_send": "Biçiminden dönüştür:",
1130
"youCanGoBackToYourDapp": "Şimdi Dapp'ınıza geri dönebilirsin",
1131
"yy": "YY"
1131
-}
1132
+}
\ No newline at end of file
res/values/strings_uk.arb
+3
-2
@@ -522,12 +522,12 @@
522
"nano_pick_new_rep": "Виберіть нового представника",
523
"nanogpt_subtitle": "Усі найновіші моделі (GPT-4, Claude). \\ Nno підписка, оплата криптовалютою.",
524
"narrow": "вузькі",
525
- "new_tag": "Новачок",
525
"new_first_wallet_text": "Зберігання вашої криптовалюти це просто як шматок торта",
526
"new_node_testing": "Тестування нового вузла",
527
"new_subaddress_create": "Створити",
528
"new_subaddress_label_name": "Ім'я",
529
"new_subaddress_title": "Нова адреса",
530
+ "new_tag": "Новачок",
531
"new_template": "Новий шаблон",
532
"new_transactions_notifications": "Надішліть сповіщення про нові транзакції",
533
"new_wallet": "Новий гаманець",
@@ -866,6 +866,7 @@
866
"silent_payments_always_scan": "Встановити мовчазні платежі завжди сканувати",
867
"silent_payments_disclaimer": "Нові адреси - це не нові ідентичності. Це повторне використання існуючої ідентичності з іншою етикеткою.",
868
"silent_payments_display_card": "Покажіть безшумну карту платежів",
869
+ "silent_payments_logs": "Мовчазні журнали оплати",
870
"silent_payments_scan_from_date": "Сканувати з дати",
871
"silent_payments_scan_from_date_or_blockheight": "Введіть висоту блоку, яку ви хочете почати сканувати для вхідних мовчазних платежів, або скористайтеся датою замість цього. Ви можете вибрати, якщо гаманець продовжує сканувати кожен блок, або перевіряє лише вказану висоту.",
872
"silent_payments_scan_from_height": "Сканування від висоти блоку",
@@ -1129,4 +1130,4 @@
1130
"you_will_send": "Конвертувати з",
1131
"youCanGoBackToYourDapp": "Ви можете повернутися до свого DAPP зараз",
1132
"yy": "YY"
1132
-}
1133
+}
\ No newline at end of file
res/values/strings_ur.arb
+3
-2
@@ -522,12 +522,12 @@
522
"nano_pick_new_rep": "ایک نیا نمائندہ منتخب کریں",
523
"nanogpt_subtitle": "تمام تازہ ترین ماڈل (GPT-4 ، کلاڈ)۔ n n no سبسکرپشن ، کریپٹو کے ساتھ ادائیگی کریں۔",
524
"narrow": "تنگ",
525
- "new_tag": "نیا",
525
"new_first_wallet_text": "اپنے کریپٹو کو محفوظ رکھنا کیک کا ایک ٹکڑا ہے",
526
"new_node_testing": "نیا نوڈ ٹیسٹنگ",
527
"new_subaddress_create": "بنانا",
528
"new_subaddress_label_name": "لیبل کا نام",
529
"new_subaddress_title": "نیا پتہ",
530
+ "new_tag": "نیا",
531
"new_template": "نیا سانچہ",
532
"new_transactions_notifications": "نئے لین دین کے بارے میں اطلاعات بھیجیں",
533
"new_wallet": "نیا پرس",
@@ -867,6 +867,7 @@
867
"silent_payments_always_scan": "خاموش ادائیگی ہمیشہ اسکیننگ کریں",
868
"silent_payments_disclaimer": "نئے پتے نئی شناخت نہیں ہیں۔ یہ ایک مختلف لیبل کے ساتھ موجودہ شناخت کا دوبارہ استعمال ہے۔",
869
"silent_payments_display_card": "خاموش ادائیگی کارڈ دکھائیں",
870
+ "silent_payments_logs": "خاموش ادائیگی کے نوشتہ جات",
871
"silent_payments_scan_from_date": "تاریخ سے اسکین کریں",
872
"silent_payments_scan_from_date_or_blockheight": "براہ کرم بلاک اونچائی میں داخل ہوں جس سے آپ آنے والی خاموش ادائیگیوں کے لئے اسکیننگ شروع کرنا چاہتے ہیں ، یا اس کے بجائے تاریخ کا استعمال کریں۔ آپ یہ منتخب کرسکتے ہیں کہ اگر پرس ہر بلاک کو اسکیننگ جاری رکھے ہوئے ہے ، یا صرف مخصوص اونچائی کی جانچ پڑتال کرتا ہے۔",
873
"silent_payments_scan_from_height": "بلاک اونچائی سے اسکین کریں",
@@ -1130,4 +1131,4 @@
1131
"you_will_send": "سے تبدیل کریں۔",
1132
"youCanGoBackToYourDapp": "اب آپ اپنے ڈی اے پی پی پر واپس جاسکتے ہیں",
1133
"yy": "YY"
1133
-}
1134
+}
\ No newline at end of file
res/values/strings_vi.arb
+3
-2
@@ -521,12 +521,12 @@
521
"nano_pick_new_rep": "Chọn đại diện mới",
522
"nanogpt_subtitle": "Tất cả các mẫu mới nhất (GPT-4, Claude).\\nKhông cần đăng ký, thanh toán bằng tiền điện tử.",
523
"narrow": "Hẹp",
524
- "new_tag": "Mới",
524
"new_first_wallet_text": "Giữ tiền điện tử của bạn an toàn là một miếng bánh",
525
"new_node_testing": "Đang thử nghiệm nút mới",
526
"new_subaddress_create": "Tạo",
527
"new_subaddress_label_name": "Tên nhãn",
528
"new_subaddress_title": "Địa chỉ mới",
529
+ "new_tag": "Mới",
530
"new_template": "Mẫu mới",
531
"new_transactions_notifications": "Gửi thông báo về các giao dịch mới",
532
"new_wallet": "Ví mới",
@@ -862,6 +862,7 @@
862
"silent_payments_always_scan": "Đặt Thanh toán im lặng luôn quét",
863
"silent_payments_disclaimer": "Địa chỉ mới không phải là danh tính mới. Đây là việc tái sử dụng một danh tính hiện có với nhãn khác.",
864
"silent_payments_display_card": "Hiển thị thẻ Thanh toán im lặng",
865
+ "silent_payments_logs": "Nhật ký thanh toán im lặng",
866
"silent_payments_scan_from_date": "Quét từ ngày",
867
"silent_payments_scan_from_date_or_blockheight": "Vui lòng nhập chiều cao khối bạn muốn bắt đầu quét cho các thanh toán im lặng đến, hoặc, sử dụng ngày thay thế. Bạn có thể chọn nếu ví tiếp tục quét mỗi khối, hoặc chỉ kiểm tra chiều cao đã chỉ định.",
868
"silent_payments_scan_from_height": "Quét từ chiều cao khối",
@@ -1125,4 +1126,4 @@
1126
"you_will_send": "Chuyển đổi từ",
1127
"youCanGoBackToYourDapp": "Bạn có thể quay lại DAPP của mình ngay bây giờ",
1128
"yy": "YY"
1128
-}
1129
+}
\ No newline at end of file
res/values/strings_yo.arb
+3
-2
@@ -523,12 +523,12 @@
523
"nano_pick_new_rep": "Mu aṣoju tuntun kan",
524
"nanogpt_subtitle": "Gbogbo awọn awoṣe tuntun (GPT-4, Claude). \\ Nno alabapin kan, sanwo pẹlu Crypto.",
525
"narrow": "Taara",
526
- "new_tag": "Tuntun",
526
"new_first_wallet_text": "Tọju ẹrọ ti o ni aabo rẹ jẹ nkan ti akara oyinbo kan",
527
"new_node_testing": "A ń dán apẹka títun wò",
528
"new_subaddress_create": "Ṣe é",
529
"new_subaddress_label_name": "Orúkọ",
530
"new_subaddress_title": "Àdírẹ́sì títun",
531
+ "new_tag": "Tuntun",
532
"new_template": "Àwòṣe títun",
533
"new_transactions_notifications": "Firanṣẹ awọn iwifunni nipa awọn iṣowo tuntun",
534
"new_wallet": "Àpamọ́wọ́ títun",
@@ -866,6 +866,7 @@
866
"silent_payments_always_scan": "Ṣeto awọn sisanwo ipalọlọ nigbagbogbo n ṣatunṣe",
867
"silent_payments_disclaimer": "Awọn adirẹsi tuntun kii ṣe awọn idanimọ tuntun. O jẹ yiyan ti idanimọ ti o wa pẹlu aami oriṣiriṣi.",
868
"silent_payments_display_card": "Ṣafihan kaadi isanwo ti o dakẹ",
869
+ "silent_payments_logs": "Awọn ipe isanwo ti ipalọlọ",
870
"silent_payments_scan_from_date": "Scan lati ọjọ",
871
"silent_payments_scan_from_date_or_blockheight": "Jọwọ tẹ giga idibo ti o fẹ bẹrẹ ọlọjẹ fun awọn sisanwo ipalọlọ, tabi, lo ọjọ dipo. O le yan ti apamọwọ naa tẹsiwaju nṣapẹẹrẹ gbogbo bulọọki, tabi ṣayẹwo nikan giga ti o sọ tẹlẹ.",
872
"silent_payments_scan_from_height": "Scan lati Iga Iga",
@@ -1129,4 +1130,4 @@
1130
"you_will_send": "Ṣe pàṣípààrọ̀ láti",
1131
"youCanGoBackToYourDapp": "O le pada si tapla rẹ bayi",
1132
"yy": "Ọd"
1132
-}
1133
+}
\ No newline at end of file
res/values/strings_zh.arb
+3
-2
@@ -522,12 +522,12 @@
522
"nano_pick_new_rep": "选择新代表",
523
"nanogpt_subtitle": "所有最新型号(GPT-4,Claude)。\\ nno订阅,用加密货币付款。",
524
"narrow": "狭窄的",
525
- "new_tag": "新的",
525
"new_first_wallet_text": "保持加密货币是一件小菜一碟",
526
"new_node_testing": "新节点测试",
527
"new_subaddress_create": "创建",
528
"new_subaddress_label_name": "标签名称",
529
"new_subaddress_title": "新地址",
530
+ "new_tag": "新的",
531
"new_template": "新模板",
532
"new_transactions_notifications": "发送有关新交易的通知",
533
"new_wallet": "新钱包",
@@ -865,6 +865,7 @@
865
"silent_payments_always_scan": "设置无声付款总是扫描",
866
"silent_payments_disclaimer": "新地址不是新的身份。这是重复使用具有不同标签的现有身份。",
867
"silent_payments_display_card": "显示无声支付卡",
868
+ "silent_payments_logs": "无声付款日志",
869
"silent_payments_scan_from_date": "从日期开始扫描",
870
"silent_payments_scan_from_date_or_blockheight": "请输入您要开始扫描输入静音付款的块高度,或者使用日期。您可以选择钱包是否继续扫描每个块,或仅检查指定的高度。",
871
"silent_payments_scan_from_height": "从块高度扫描",
@@ -1128,4 +1129,4 @@
1129
"you_will_send": "转换自",
1130
"youCanGoBackToYourDapp": "您现在可以回到DAPP",
1131
"yy": "YY"
1131
-}
1132
+}
\ No newline at end of file