CW-1090-ledger-issues (#2314)

* build: bump ledger_flutter_plus dependencies

* fix: handle connection errors occurring during connecting to a ledger device

* fix: enhance ledger error handling and improve wallet connection reliability

* fix: enhance ledger error handling and improve wallet connection reliability

* feat: add localized strings for "Try again" and update Ledger error handling on auth

* fix: handle rethrow behavior in onAuthenticationStateChange

* fix: improve Ledger error handling and refine error code interpretation

* fix: refine Ledger error code interpretation and enhance error handling [skip-ci]

* add missing ledger error codes

---------

Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
This commit is contained in:
Konstantin Ullrich 2025-06-19 19:00:16 +02:00 committed by GitHub
parent 4b137bc968
commit 18c2ba9366
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
36 changed files with 159 additions and 31 deletions

View file

@ -30,6 +30,7 @@ dependencies:
git: git:
url: https://github.com/cake-tech/ledger-flutter-plus-plugins url: https://github.com/cake-tech/ledger-flutter-plus-plugins
path: packages/ledger-ethereum path: packages/ledger-ethereum
ref: f4761cd5171d4c1e2e42fd3298261650539fb2db
dependency_overrides: dependency_overrides:
web3dart: web3dart:

View file

@ -73,8 +73,11 @@ class WalletLoadingService {
return wallet; return wallet;
} catch (error, stack) { } catch (error, stack) {
await ExceptionHandler.resetLastPopupDate(); await ExceptionHandler.resetLastPopupDate();
final isLedgerError = await ExceptionHandler.isLedgerError(error);
if (isLedgerError) rethrow;
await ExceptionHandler.onError(FlutterErrorDetails(exception: error, stack: stack)); await ExceptionHandler.onError(FlutterErrorDetails(exception: error, stack: stack));
// try fetching the seeds of the corrupted wallet to show it to the user // try fetching the seeds of the corrupted wallet to show it to the user
String corruptedWalletsSeeds = "Corrupted wallets seeds (if retrievable, empty otherwise):"; String corruptedWalletsSeeds = "Corrupted wallets seeds (if retrievable, empty otherwise):";
try { try {

View file

@ -9,6 +9,7 @@ import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/src/screens/connect_device/connect_device_page.dart'; import 'package:cake_wallet/src/screens/connect_device/connect_device_page.dart';
import 'package:cake_wallet/src/screens/wallet_connect/services/bottom_sheet_service.dart'; import 'package:cake_wallet/src/screens/wallet_connect/services/bottom_sheet_service.dart';
import 'package:cake_wallet/src/widgets/alert_with_one_action.dart'; import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart';
import 'package:cake_wallet/store/authentication_store.dart'; import 'package:cake_wallet/store/authentication_store.dart';
import 'package:cake_wallet/store/settings_store.dart'; import 'package:cake_wallet/store/settings_store.dart';
import 'package:cake_wallet/utils/exception_handler.dart'; import 'package:cake_wallet/utils/exception_handler.dart';
@ -63,14 +64,49 @@ void startAuthenticationStateChange(
monero!.setGlobalLedgerConnection(ledgerVM.connection); monero!.setGlobalLedgerConnection(ledgerVM.connection);
showPopUp<void>( showPopUp<void>(
context: context, context: context,
builder: (BuildContext context) => AlertWithOneAction( builder: (context) => AlertWithOneAction(
alertTitle: S.of(context).proceed_on_device, alertTitle: S.of(context).proceed_on_device,
alertContent: S.of(context).proceed_on_device_description, alertContent: S.of(context).proceed_on_device_description,
buttonText: S.of(context).cancel, buttonText: S.of(context).cancel,
alertBarrierDismissible: false, alertBarrierDismissible: false,
buttonAction: () => Navigator.of(context).pop()), buttonAction: () => Navigator.of(context).pop(),
),
); );
bool tryOpening = true;
while (tryOpening) {
try {
await loadCurrentWallet(); await loadCurrentWallet();
tryOpening = false;
} on Exception catch (e) {
final errorCode = RegExp(r'0x\S*?(?= )').firstMatch(
e.toString());
final errorMessage = ledgerVM.interpretErrorCode(
errorCode?.group(0).toString().replaceAll("0x", "") ??
"");
if (errorMessage != null) {
await showPopUp<void>(
context: context,
builder: (context) => AlertWithTwoActions(
alertTitle: "Ledger Error",
alertContent: errorMessage,
leftButtonText: S.of(context).try_again,
alertBarrierDismissible: false,
actionLeftButton: () => Navigator.of(context).pop(),
rightButtonText: S.of(context).cancel,
actionRightButton: () {
tryOpening = false;
Navigator.of(context).pop();
},
),
);
} else {
tryOpening = false;
rethrow;
}
}
}
getIt.get<BottomSheetService>().showNext(); getIt.get<BottomSheetService>().showNext();
await navigatorKey.currentState! await navigatorKey.currentState!
.pushNamedAndRemoveUntil(Routes.dashboard, (route) => false); .pushNamedAndRemoveUntil(Routes.dashboard, (route) => false);

View file

@ -165,8 +165,9 @@ class ConnectDevicePageBodyState extends State<ConnectDevicePageBody> {
} }
Future<void> _connectToDevice(LedgerDevice device) async { Future<void> _connectToDevice(LedgerDevice device) async {
final isConnected =
await widget.ledgerVM.connectLedger(device, widget.walletType); await widget.ledgerVM.connectLedger(device, widget.walletType);
widget.onConnectDevice(context, widget.ledgerVM); if (isConnected) widget.onConnectDevice(context, widget.ledgerVM);
} }
String _getDeviceTileLeading(LedgerDeviceType deviceInfo) { String _getDeviceTileLeading(LedgerDeviceType deviceInfo) {

View file

@ -4,8 +4,10 @@ import 'package:cake_wallet/di.dart';
import 'package:cake_wallet/entities/preferences_key.dart'; import 'package:cake_wallet/entities/preferences_key.dart';
import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/main.dart'; import 'package:cake_wallet/main.dart';
import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart'; import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart';
import 'package:cake_wallet/store/app_store.dart'; import 'package:cake_wallet/store/app_store.dart';
import 'package:cake_wallet/utils/package_info.dart';
import 'package:cake_wallet/utils/show_bar.dart'; import 'package:cake_wallet/utils/show_bar.dart';
import 'package:cake_wallet/utils/show_pop_up.dart'; import 'package:cake_wallet/utils/show_pop_up.dart';
import 'package:cw_core/root_dir.dart'; import 'package:cw_core/root_dir.dart';
@ -15,7 +17,6 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_mailer/flutter_mailer.dart'; import 'package:flutter_mailer/flutter_mailer.dart';
import 'package:cake_wallet/utils/package_info.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
class ExceptionHandler { class ExceptionHandler {
@ -113,6 +114,8 @@ class ExceptionHandler {
} }
static Future<void> onError(FlutterErrorDetails errorDetails) async { static Future<void> onError(FlutterErrorDetails errorDetails) async {
if (await onLedgerError(errorDetails)) return;
if (kDebugMode || kProfileMode) { if (kDebugMode || kProfileMode) {
FlutterError.presentError(errorDetails); FlutterError.presentError(errorDetails);
printV(errorDetails.toString()); printV(errorDetails.toString());
@ -183,6 +186,57 @@ class ExceptionHandler {
_hasError = false; _hasError = false;
} }
static const List<String> _ledgerErrors = [
'Wrong Device Status',
'PlatformException(133, Failed to write: (Unknown Error: 133), null, null)',
'PlatformException(IllegalArgument, Unknown deviceId:',
'ServiceNotSupportedException(ConnectionType.ble, Required service not supported. Write characteristic: false, Notify characteristic: false)',
'Exception: 6e01', // Wrong App
'Exception: 6d02',
'Exception: 6511',
'Exception: 6e00',
'Exception: 6985',
'Exception: 5515',
];
static bool isLedgerError(Object exception) =>
_ledgerErrors.any((element) => exception.toString().contains(element));
static Future<bool> onLedgerError(FlutterErrorDetails errorDetails) async {
if (!isLedgerError(errorDetails.exception)) return false;
String? interpretErrorCode(String errorCode) {
if (errorCode.contains("6985")) {
return S.current.ledger_error_tx_rejected_by_user;
} else if (errorCode.contains("5515")) {
return S.current.ledger_error_device_locked;
} else
if (["6e01", "6d02", "6511", "6e00"].any((e) => errorCode.contains(e))) {
return S.current.ledger_error_wrong_app;
}
return null;
}
printV(errorDetails.exception);
if (navigatorKey.currentContext != null) {
await showPopUp<void>(
context: navigatorKey.currentContext!,
builder: (context) => AlertWithOneAction(
alertTitle: "Ledger Error",
alertContent:
interpretErrorCode(errorDetails.exception.toString()) ??
S.of(context).ledger_connection_error,
buttonText: S.of(context).close,
buttonAction: () => Navigator.of(context).pop(),
),
);
}
_hasError = false;
return true;
}
/// Ignore User related errors or system errors /// Ignore User related errors or system errors
static bool _ignoreError(String error) => static bool _ignoreError(String error) =>
_ignoredErrors.any((element) => error.contains(element)); _ignoredErrors.any((element) => error.contains(element));
@ -227,6 +281,7 @@ class ExceptionHandler {
"core/auth_service.dart:64", "core/auth_service.dart:64",
"core/key_service.dart:14", "core/key_service.dart:14",
"core/wallet_loading_service.dart:139", "core/wallet_loading_service.dart:139",
"Wrong Device Status: 0x5515 (UNKNOWN)",
]; ];
static Future<void> _addDeviceInfo(File file) async { static Future<void> _addDeviceInfo(File file) async {

View file

@ -96,7 +96,8 @@ abstract class LedgerViewModelBase with Store {
if (!Platform.isIOS) await ledgerPlusUSB.stopScanning(); if (!Platform.isIOS) await ledgerPlusUSB.stopScanning();
} }
Future<void> connectLedger(sdk.LedgerDevice device, WalletType type) async { Future<bool> connectLedger(sdk.LedgerDevice device, WalletType type) async {
if (_isConnecting) return false;
_isConnecting = true; _isConnecting = true;
_connectingWalletType = type; _connectingWalletType = type;
if (isConnected) { if (isConnected) {
@ -110,17 +111,25 @@ abstract class LedgerViewModelBase with Store {
: ledgerPlusUSB; : ledgerPlusUSB;
if (_connectionChangeSubscription == null) { if (_connectionChangeSubscription == null) {
_connectionChangeSubscription = _connectionChangeSubscription = ledger
ledger.deviceStateChanges.listen(_connectionChangeListener); .deviceStateChanges(device.id)
.listen(_connectionChangeListener);
} }
try {
_connection = await ledger.connect(device); _connection = await ledger.connect(device);
_isConnecting = false; _isConnecting = false;
return true;
} catch (e) {
printV(e);
}
_isConnecting = false;
return false;
} }
StreamSubscription<sdk.BleConnectionState>? _connectionChangeSubscription; StreamSubscription<sdk.BleConnectionState>? _connectionChangeSubscription;
sdk.LedgerConnection? _connection; sdk.LedgerConnection? _connection;
bool _isConnecting = true; bool _isConnecting = false;
WalletType? _connectingWalletType; WalletType? _connectingWalletType;
void _connectionChangeListener(sdk.BleConnectionState event) { void _connectionChangeListener(sdk.BleConnectionState event) {
@ -168,17 +177,14 @@ abstract class LedgerViewModelBase with Store {
} }
String? interpretErrorCode(String errorCode) { String? interpretErrorCode(String errorCode) {
switch (errorCode) { if (errorCode.contains("6985")) {
case "6985":
return S.current.ledger_error_tx_rejected_by_user; return S.current.ledger_error_tx_rejected_by_user;
case "5515": } else if (errorCode.contains("5515")) {
return S.current.ledger_error_device_locked; return S.current.ledger_error_device_locked;
case "6d02": // UNKNOWN_APDU } else
case "6511": if (["6e01", "6a87", "6d02", "6511", "6e00"].any((e) => errorCode.contains(e))) {
case "6e00":
return S.current.ledger_error_wrong_app; return S.current.ledger_error_wrong_app;
default: }
return null; return null;
} }
} }
}

View file

@ -80,11 +80,9 @@ abstract class WalletHardwareRestoreViewModelBase extends WalletCreationVM with
availableAccounts.addAll(accounts); availableAccounts.addAll(accounts);
_nextIndex += limit; _nextIndex += limit;
// } on LedgerException catch (e) {
// error = ledgerViewModel.interpretErrorCode(e.errorCode.toRadixString(16));
} catch (e) { } catch (e) {
printV(e); printV(e);
error = S.current.ledger_connection_error; error = ledgerViewModel.interpretErrorCode(e.toString()) ?? S.current.ledger_connection_error;
} }
isLoadingMoreAccounts = false; isLoadingMoreAccounts = false;

View file

@ -110,7 +110,7 @@ dependencies:
ledger_flutter_plus: ledger_flutter_plus:
git: git:
url: https://github.com/vespr-wallet/ledger-flutter-plus url: https://github.com/vespr-wallet/ledger-flutter-plus
ref: c2e341d8038f1108690ad6f80f7b4b7156aacc76 ref: 60817d4b20144f9da9029f5034790272795b9d38
hashlib: ^1.19.2 hashlib: ^1.19.2
on_chain: on_chain:
git: git:
@ -165,7 +165,7 @@ dependency_overrides:
ledger_flutter_plus: ledger_flutter_plus:
git: git:
url: https://github.com/vespr-wallet/ledger-flutter-plus url: https://github.com/vespr-wallet/ledger-flutter-plus
ref: c2e341d8038f1108690ad6f80f7b4b7156aacc76 ref: 60817d4b20144f9da9029f5034790272795b9d38
web_socket_channel: ^3.0.2 web_socket_channel: ^3.0.2
freezed_annotation: 2.4.4 freezed_annotation: 2.4.4

View file

@ -979,6 +979,7 @@
"transport_type": "نوع النقل", "transport_type": "نوع النقل",
"trongrid_history": "تاريخ ترونغريد", "trongrid_history": "تاريخ ترونغريد",
"trusted": "موثوق به", "trusted": "موثوق به",
"try_again": "حاول ثانية",
"tx_commit_exception_no_dust_on_change": "يتم رفض المعاملة مع هذا المبلغ. باستخدام هذه العملات المعدنية ، يمكنك إرسال ${min} دون تغيير أو ${max} الذي يعيد التغيير.", "tx_commit_exception_no_dust_on_change": "يتم رفض المعاملة مع هذا المبلغ. باستخدام هذه العملات المعدنية ، يمكنك إرسال ${min} دون تغيير أو ${max} الذي يعيد التغيير.",
"tx_commit_failed": "فشل ارتكاب المعاملة. يرجى الاتصال بالدعم.", "tx_commit_failed": "فشل ارتكاب المعاملة. يرجى الاتصال بالدعم.",
"tx_commit_failed_no_peers": "فشل المعاملة في البث ، يرجى المحاولة مرة أخرى في ثانية أو نحو ذلك", "tx_commit_failed_no_peers": "فشل المعاملة في البث ، يرجى المحاولة مرة أخرى في ثانية أو نحو ذلك",

View file

@ -979,6 +979,7 @@
"transport_type": "Тип транспорт", "transport_type": "Тип транспорт",
"trongrid_history": "Trongrid History", "trongrid_history": "Trongrid History",
"trusted": "Надежден", "trusted": "Надежден",
"try_again": "Опитайте отново",
"tx_commit_exception_no_dust_on_change": "Сделката се отхвърля с тази сума. С тези монети можете да изпратите ${min} без промяна или ${max}, която връща промяна.", "tx_commit_exception_no_dust_on_change": "Сделката се отхвърля с тази сума. С тези монети можете да изпратите ${min} без промяна или ${max}, която връща промяна.",
"tx_commit_failed": "Компетацията на транзакцията не успя. Моля, свържете се с поддръжката.", "tx_commit_failed": "Компетацията на транзакцията не успя. Моля, свържете се с поддръжката.",
"tx_commit_failed_no_peers": "Сделката не успя да излъчи, моля, опитайте отново след секунда или така", "tx_commit_failed_no_peers": "Сделката не успя да излъчи, моля, опитайте отново след секунда или така",

View file

@ -979,6 +979,7 @@
"transport_type": "Typ transportu", "transport_type": "Typ transportu",
"trongrid_history": "Trongridní historie", "trongrid_history": "Trongridní historie",
"trusted": "Důvěřovat", "trusted": "Důvěřovat",
"try_again": "Zkuste to znovu",
"tx_commit_exception_no_dust_on_change": "Transakce je zamítnuta s touto částkou. S těmito mincemi můžete odeslat ${min} bez změny nebo ${max}, které se vrátí změna.", "tx_commit_exception_no_dust_on_change": "Transakce je zamítnuta s touto částkou. S těmito mincemi můžete odeslat ${min} bez změny nebo ${max}, které se vrátí změna.",
"tx_commit_failed": "Transakce COMPORT selhala. Kontaktujte prosím podporu.", "tx_commit_failed": "Transakce COMPORT selhala. Kontaktujte prosím podporu.",
"tx_commit_failed_no_peers": "Transakce se nepodařilo vysílat, zkuste to prosím znovu za vteřinu", "tx_commit_failed_no_peers": "Transakce se nepodařilo vysílat, zkuste to prosím znovu za vteřinu",

View file

@ -980,6 +980,7 @@
"transport_type": "Transporttyp", "transport_type": "Transporttyp",
"trongrid_history": "Trongrid-Historie", "trongrid_history": "Trongrid-Historie",
"trusted": "Vertrauenswürdige", "trusted": "Vertrauenswürdige",
"try_again": "Erneut versuchen",
"tx_commit_exception_no_dust_on_change": "Die Transaktion wird diesen Betrag abgelehnt. Mit diesen Münzen können Sie ${min} ohne Veränderung oder ${max} senden, die Änderungen zurückgeben.", "tx_commit_exception_no_dust_on_change": "Die Transaktion wird diesen Betrag abgelehnt. Mit diesen Münzen können Sie ${min} ohne Veränderung oder ${max} senden, die Änderungen zurückgeben.",
"tx_commit_failed": "Transaktionsausschüsse ist fehlgeschlagen. Bitte wenden Sie sich an Support.", "tx_commit_failed": "Transaktionsausschüsse ist fehlgeschlagen. Bitte wenden Sie sich an Support.",
"tx_commit_failed_no_peers": "Transaktion konnte nicht übertragen werden. Bitte versuchen Sie es in einer Sekunde oder so erneut", "tx_commit_failed_no_peers": "Transaktion konnte nicht übertragen werden. Bitte versuchen Sie es in einer Sekunde oder so erneut",

View file

@ -980,6 +980,7 @@
"transport_type": "Transport Type", "transport_type": "Transport Type",
"trongrid_history": "TronGrid history", "trongrid_history": "TronGrid history",
"trusted": "Trusted", "trusted": "Trusted",
"try_again": "Try again",
"tx_commit_exception_no_dust_on_change": "The transaction is rejected with this amount. With these coins you can send ${min} without change or ${max} that returns change.", "tx_commit_exception_no_dust_on_change": "The transaction is rejected with this amount. With these coins you can send ${min} without change or ${max} that returns change.",
"tx_commit_failed": "Transaction commit failed. Please contact support.", "tx_commit_failed": "Transaction commit failed. Please contact support.",
"tx_commit_failed_no_peers": "Transaction failed to broadcast, please try again in a second or so", "tx_commit_failed_no_peers": "Transaction failed to broadcast, please try again in a second or so",

View file

@ -980,6 +980,7 @@
"transport_type": "Tipo de transporte", "transport_type": "Tipo de transporte",
"trongrid_history": "Historia trongrid", "trongrid_history": "Historia trongrid",
"trusted": "de confianza", "trusted": "de confianza",
"try_again": "Intentar otra vez",
"tx_commit_exception_no_dust_on_change": "La transacción se rechaza con esta cantidad. Con estas monedas puede enviar ${min} sin cambios o ${max} que devuelve el cambio.", "tx_commit_exception_no_dust_on_change": "La transacción se rechaza con esta cantidad. Con estas monedas puede enviar ${min} sin cambios o ${max} que devuelve el cambio.",
"tx_commit_failed": "La confirmación de transacción falló. Ponte en contacto con el soporte.", "tx_commit_failed": "La confirmación de transacción falló. Ponte en contacto con el soporte.",
"tx_commit_failed_no_peers": "La transacción no se transmitió, intenta nuevamente en un segundo más o menos", "tx_commit_failed_no_peers": "La transacción no se transmitió, intenta nuevamente en un segundo más o menos",

View file

@ -979,6 +979,7 @@
"transport_type": "Type de transport", "transport_type": "Type de transport",
"trongrid_history": "Histoire de la trongride", "trongrid_history": "Histoire de la trongride",
"trusted": "de confiance", "trusted": "de confiance",
"try_again": "Essayer à nouveau",
"tx_commit_exception_no_dust_on_change": "La transaction est rejetée avec ce montant. Avec ces pièces, vous pouvez envoyer ${min} sans changement ou ${max} qui renvoie le changement.", "tx_commit_exception_no_dust_on_change": "La transaction est rejetée avec ce montant. Avec ces pièces, vous pouvez envoyer ${min} sans changement ou ${max} qui renvoie le changement.",
"tx_commit_failed": "La validation de la transaction a échoué. Veuillez contacter l'assistance.", "tx_commit_failed": "La validation de la transaction a échoué. Veuillez contacter l'assistance.",
"tx_commit_failed_no_peers": "La transaction n'a pas été diffusée, veuillez réessayer dans une seconde environ", "tx_commit_failed_no_peers": "La transaction n'a pas été diffusée, veuillez réessayer dans une seconde environ",

View file

@ -981,6 +981,7 @@
"transport_type": "Nau'in sufuri", "transport_type": "Nau'in sufuri",
"trongrid_history": "Tarihin Trongrid", "trongrid_history": "Tarihin Trongrid",
"trusted": "Amintacce", "trusted": "Amintacce",
"try_again": "Gwada kuma",
"tx_commit_exception_no_dust_on_change": "An ƙi ma'amala da wannan adadin. Tare da waɗannan tsabar kudi Zaka iya aika ${min}, ba tare da canji ba ko ${max} wanda ya dawo canzawa.", "tx_commit_exception_no_dust_on_change": "An ƙi ma'amala da wannan adadin. Tare da waɗannan tsabar kudi Zaka iya aika ${min}, ba tare da canji ba ko ${max} wanda ya dawo canzawa.",
"tx_commit_failed": "Ma'amala ya kasa. Da fatan za a tuntuɓi goyan baya.", "tx_commit_failed": "Ma'amala ya kasa. Da fatan za a tuntuɓi goyan baya.",
"tx_commit_failed_no_peers": "Kasuwanci ya kasa watsa, don Allah sake gwadawa a cikin na biyu ko", "tx_commit_failed_no_peers": "Kasuwanci ya kasa watsa, don Allah sake gwadawa a cikin na biyu ko",

View file

@ -981,6 +981,7 @@
"transport_type": "परिवहन प्रकार", "transport_type": "परिवहन प्रकार",
"trongrid_history": "ट्रॉन्ग्रिड का इतिहास", "trongrid_history": "ट्रॉन्ग्रिड का इतिहास",
"trusted": "भरोसा", "trusted": "भरोसा",
"try_again": "पुनः प्रयास करें",
"tx_commit_exception_no_dust_on_change": "लेनदेन को इस राशि से खारिज कर दिया जाता है। इन सिक्कों के साथ आप चेंज या ${min} के बिना ${max} को भेज सकते हैं जो परिवर्तन लौटाता है।", "tx_commit_exception_no_dust_on_change": "लेनदेन को इस राशि से खारिज कर दिया जाता है। इन सिक्कों के साथ आप चेंज या ${min} के बिना ${max} को भेज सकते हैं जो परिवर्तन लौटाता है।",
"tx_commit_failed": "लेन -देन प्रतिबद्ध विफल। कृपया संपर्क समर्थन करें।", "tx_commit_failed": "लेन -देन प्रतिबद्ध विफल। कृपया संपर्क समर्थन करें।",
"tx_commit_failed_no_peers": "लेन -देन प्रसारित करने में विफल रहा, कृपया एक या दो सेकंड में पुनः प्रयास करें", "tx_commit_failed_no_peers": "लेन -देन प्रसारित करने में विफल रहा, कृपया एक या दो सेकंड में पुनः प्रयास करें",

View file

@ -979,6 +979,7 @@
"transport_type": "Transportni tip", "transport_type": "Transportni tip",
"trongrid_history": "Povijest Trongrida", "trongrid_history": "Povijest Trongrida",
"trusted": "vjerovao", "trusted": "vjerovao",
"try_again": "Pokušajte ponovo",
"tx_commit_exception_no_dust_on_change": "Transakcija se odbija s tim iznosom. Pomoću ovih kovanica možete poslati ${min} bez promjene ili ${max} koja vraća promjenu.", "tx_commit_exception_no_dust_on_change": "Transakcija se odbija s tim iznosom. Pomoću ovih kovanica možete poslati ${min} bez promjene ili ${max} koja vraća promjenu.",
"tx_commit_failed": "Obveza transakcije nije uspjela. Molimo kontaktirajte podršku.", "tx_commit_failed": "Obveza transakcije nije uspjela. Molimo kontaktirajte podršku.",
"tx_commit_failed_no_peers": "Transakcija nije uspjela emitirati, pokušajte ponovo u sekundi ili tako", "tx_commit_failed_no_peers": "Transakcija nije uspjela emitirati, pokušajte ponovo u sekundi ili tako",

View file

@ -977,6 +977,7 @@
"transport_type": "Տրանսպորտի տեսակը", "transport_type": "Տրանսպորտի տեսակը",
"trongrid_history": "TronGrid պատմություն", "trongrid_history": "TronGrid պատմություն",
"trusted": "Վստահելի", "trusted": "Վստահելի",
"try_again": "Կրկին փորձեք",
"tx_commit_exception_no_dust_on_change": "Փոխանցումը մերժվել է այս գումարով: Այս արժույթներով կարող եք ուղարկել ${min} առանց փոփոխության կամ ${max} որը վերադարձնում է փոփոխությունը", "tx_commit_exception_no_dust_on_change": "Փոխանցումը մերժվել է այս գումարով: Այս արժույթներով կարող եք ուղարկել ${min} առանց փոփոխության կամ ${max} որը վերադարձնում է փոփոխությունը",
"tx_commit_failed": "Փոխանցումը ձախողվել է: Խնդրում ենք դիմել աջակցությանը", "tx_commit_failed": "Փոխանցումը ձախողվել է: Խնդրում ենք դիմել աջակցությանը",
"tx_commit_failed_no_peers": "Գործարքը չի հաջողվել հեռարձակել, խնդրում ենք կրկին փորձել մեկ վայրկյանում", "tx_commit_failed_no_peers": "Գործարքը չի հաջողվել հեռարձակել, խնդրում ենք կրկին փորձել մեկ վայրկյանում",

View file

@ -982,6 +982,7 @@
"transport_type": "Jenis transportasi", "transport_type": "Jenis transportasi",
"trongrid_history": "Sejarah Trongrid", "trongrid_history": "Sejarah Trongrid",
"trusted": "Dipercayai", "trusted": "Dipercayai",
"try_again": "Coba lagi",
"tx_commit_exception_no_dust_on_change": "Transaksi ditolak dengan jumlah ini. Dengan koin ini Anda dapat mengirim ${min} tanpa perubahan atau ${max} yang mengembalikan perubahan.", "tx_commit_exception_no_dust_on_change": "Transaksi ditolak dengan jumlah ini. Dengan koin ini Anda dapat mengirim ${min} tanpa perubahan atau ${max} yang mengembalikan perubahan.",
"tx_commit_failed": "Transaksi Gagal. Silakan hubungi Dukungan.", "tx_commit_failed": "Transaksi Gagal. Silakan hubungi Dukungan.",
"tx_commit_failed_no_peers": "Transaksi gagal untuk disiarkan, silakan coba lagi sebentar lagi", "tx_commit_failed_no_peers": "Transaksi gagal untuk disiarkan, silakan coba lagi sebentar lagi",

View file

@ -980,6 +980,7 @@
"transport_type": "Tipo di trasporto", "transport_type": "Tipo di trasporto",
"trongrid_history": "Cronologia TronGrid", "trongrid_history": "Cronologia TronGrid",
"trusted": "Fidato", "trusted": "Fidato",
"try_again": "Riprova",
"tx_commit_exception_no_dust_on_change": "La transazione viene respinta con questo importo. Con queste monete è possibile inviare ${min} senza modifiche o ${max} che restituisce il cambiamento.", "tx_commit_exception_no_dust_on_change": "La transazione viene respinta con questo importo. Con queste monete è possibile inviare ${min} senza modifiche o ${max} che restituisce il cambiamento.",
"tx_commit_failed": "Commit di transazione non riuscita. Si prega di contattare il supporto.", "tx_commit_failed": "Commit di transazione non riuscita. Si prega di contattare il supporto.",
"tx_commit_failed_no_peers": "Errore nella trasmissione della transazione, si prega di provare nuovamente", "tx_commit_failed_no_peers": "Errore nella trasmissione della transazione, si prega di provare nuovamente",

View file

@ -980,6 +980,7 @@
"transport_type": "輸送タイプ", "transport_type": "輸送タイプ",
"trongrid_history": "トロンリッドの歴史", "trongrid_history": "トロンリッドの歴史",
"trusted": "信頼できる", "trusted": "信頼できる",
"try_again": "もう一度やり直してください",
"tx_commit_exception_no_dust_on_change": "この金額ではトランザクションは拒否されます。 これらのコインを使用すると、おつりなしの ${min} またはおつりを返す ${max} を送信できます。", "tx_commit_exception_no_dust_on_change": "この金額ではトランザクションは拒否されます。 これらのコインを使用すると、おつりなしの ${min} またはおつりを返す ${max} を送信できます。",
"tx_commit_failed": "トランザクションコミットは失敗しました。サポートに連絡してください。", "tx_commit_failed": "トランザクションコミットは失敗しました。サポートに連絡してください。",
"tx_commit_failed_no_peers": "トランザクションはブロードキャストに失敗しました。一瞬かそこらで再試行してください", "tx_commit_failed_no_peers": "トランザクションはブロードキャストに失敗しました。一瞬かそこらで再試行してください",

View file

@ -980,6 +980,7 @@
"transport_type": "전송 유형", "transport_type": "전송 유형",
"trongrid_history": "TronGrid 내역", "trongrid_history": "TronGrid 내역",
"trusted": "신뢰됨", "trusted": "신뢰됨",
"try_again": "다시 시도하십시오",
"tx_commit_exception_no_dust_on_change": "이 금액으로는 트랜잭션이 거부됩니다. 이 코인으로는 잔돈 없이 ${min}을(를) 보내거나 잔돈이 반환되는 ${max}을(를) 보낼 수 있습니다.", "tx_commit_exception_no_dust_on_change": "이 금액으로는 트랜잭션이 거부됩니다. 이 코인으로는 잔돈 없이 ${min}을(를) 보내거나 잔돈이 반환되는 ${max}을(를) 보낼 수 있습니다.",
"tx_commit_failed": "트랜잭션 커밋 실패. 지원팀에 문의하세요.", "tx_commit_failed": "트랜잭션 커밋 실패. 지원팀에 문의하세요.",
"tx_commit_failed_no_peers": "트랜잭션 전파 실패. 잠시 후 다시 시도하세요.", "tx_commit_failed_no_peers": "트랜잭션 전파 실패. 잠시 후 다시 시도하세요.",

View file

@ -979,6 +979,7 @@
"transport_type": "သယ်ယူပို့ဆောင်ရေးအမျိုးအစား", "transport_type": "သယ်ယူပို့ဆောင်ရေးအမျိုးအစား",
"trongrid_history": "Trongrid သမိုင်း", "trongrid_history": "Trongrid သမိုင်း",
"trusted": "ယုံတယ်။", "trusted": "ယုံတယ်။",
"try_again": "ထပ်ကြိုးစားပါ",
"tx_commit_exception_no_dust_on_change": "အဆိုပါငွေပေးငွေယူကဒီပမာဏနှင့်အတူပယ်ချခံရသည်။ ဤဒင်္ဂါးပြားများနှင့်အတူပြောင်းလဲမှုကိုပြန်လည်ပြောင်းလဲခြင်းသို့မဟုတ် ${min} မပါဘဲ ${max} ပေးပို့နိုင်သည်။", "tx_commit_exception_no_dust_on_change": "အဆိုပါငွေပေးငွေယူကဒီပမာဏနှင့်အတူပယ်ချခံရသည်။ ဤဒင်္ဂါးပြားများနှင့်အတူပြောင်းလဲမှုကိုပြန်လည်ပြောင်းလဲခြင်းသို့မဟုတ် ${min} မပါဘဲ ${max} ပေးပို့နိုင်သည်။",
"tx_commit_failed": "ငွေပေးငွေယူကျူးလွန်မှုပျက်ကွက်။ ကျေးဇူးပြုပြီးပံ့ပိုးမှုဆက်သွယ်ပါ။", "tx_commit_failed": "ငွေပေးငွေယူကျူးလွန်မှုပျက်ကွက်။ ကျေးဇူးပြုပြီးပံ့ပိုးမှုဆက်သွယ်ပါ။",
"tx_commit_failed_no_peers": "ငွေပေးငွေယူထုတ်လွှင့်ရန်ပျက်ကွက်ပါက ကျေးဇူးပြု. ဒုတိယသို့မဟုတ်ထိုအတိုင်းထပ်မံကြိုးစားပါ", "tx_commit_failed_no_peers": "ငွေပေးငွေယူထုတ်လွှင့်ရန်ပျက်ကွက်ပါက ကျေးဇူးပြု. ဒုတိယသို့မဟုတ်ထိုအတိုင်းထပ်မံကြိုးစားပါ",

View file

@ -979,6 +979,7 @@
"transport_type": "Transporttype", "transport_type": "Transporttype",
"trongrid_history": "Trongrid geschiedenis", "trongrid_history": "Trongrid geschiedenis",
"trusted": "vertrouwd", "trusted": "vertrouwd",
"try_again": "Probeer het opnieuw",
"tx_commit_exception_no_dust_on_change": "De transactie wordt afgewezen met dit bedrag. Met deze munten kunt u ${min} verzenden zonder verandering of ${max} die wijziging retourneert.", "tx_commit_exception_no_dust_on_change": "De transactie wordt afgewezen met dit bedrag. Met deze munten kunt u ${min} verzenden zonder verandering of ${max} die wijziging retourneert.",
"tx_commit_failed": "Transactiebewissing is mislukt. Neem contact op met de ondersteuning.", "tx_commit_failed": "Transactiebewissing is mislukt. Neem contact op met de ondersteuning.",
"tx_commit_failed_no_peers": "De transactie is niet uitgezonden, probeer het opnieuw binnen een seconde of zo", "tx_commit_failed_no_peers": "De transactie is niet uitgezonden, probeer het opnieuw binnen een seconde of zo",

View file

@ -979,6 +979,7 @@
"transport_type": "Typ transportu", "transport_type": "Typ transportu",
"trongrid_history": "Historia Trongrida", "trongrid_history": "Historia Trongrida",
"trusted": "Zaufany", "trusted": "Zaufany",
"try_again": "Spróbuj ponownie",
"tx_commit_exception_no_dust_on_change": "Transakcja została odrzucana z tą kwotą. Za pomocą tych monet możesz wysłać ${min} bez reszty lub ${max}, które zwrócą resztę.", "tx_commit_exception_no_dust_on_change": "Transakcja została odrzucana z tą kwotą. Za pomocą tych monet możesz wysłać ${min} bez reszty lub ${max}, które zwrócą resztę.",
"tx_commit_failed": "Zatwierdzenie transakcji nie powiodło się. Skontaktuj się z obsługą.", "tx_commit_failed": "Zatwierdzenie transakcji nie powiodło się. Skontaktuj się z obsługą.",
"tx_commit_failed_no_peers": "Transakcja nie była transmitowana, spróbuj ponownie za około sekundę", "tx_commit_failed_no_peers": "Transakcja nie była transmitowana, spróbuj ponownie za około sekundę",

View file

@ -981,6 +981,7 @@
"transport_type": "Tipo de transporte", "transport_type": "Tipo de transporte",
"trongrid_history": "História de Trongrid", "trongrid_history": "História de Trongrid",
"trusted": "confiável", "trusted": "confiável",
"try_again": "Tente novamente",
"tx_commit_exception_no_dust_on_change": "A transação é rejeitada com esse valor. Com essas moedas, você pode enviar ${min} sem alteração ou ${max} que retorna alterações.", "tx_commit_exception_no_dust_on_change": "A transação é rejeitada com esse valor. Com essas moedas, você pode enviar ${min} sem alteração ou ${max} que retorna alterações.",
"tx_commit_failed": "A confirmação da transação falhou. Entre em contato com o suporte.", "tx_commit_failed": "A confirmação da transação falhou. Entre em contato com o suporte.",
"tx_commit_failed_no_peers": "A transação não foi transmitida, tente novamente em um segundo", "tx_commit_failed_no_peers": "A transação não foi transmitida, tente novamente em um segundo",

View file

@ -980,6 +980,7 @@
"transport_type": "Транспортный тип", "transport_type": "Транспортный тип",
"trongrid_history": "История Тронгрида", "trongrid_history": "История Тронгрида",
"trusted": "доверенный", "trusted": "доверенный",
"try_again": "Попробуйте еще раз",
"tx_commit_exception_no_dust_on_change": "Транзакция отклоняется с этой суммой. С этими монетами вы можете отправлять ${min} без изменения или ${max}, которые возвращают изменение.", "tx_commit_exception_no_dust_on_change": "Транзакция отклоняется с этой суммой. С этими монетами вы можете отправлять ${min} без изменения или ${max}, которые возвращают изменение.",
"tx_commit_failed": "Комплект транзакции не удался. Пожалуйста, свяжитесь с поддержкой.", "tx_commit_failed": "Комплект транзакции не удался. Пожалуйста, свяжитесь с поддержкой.",
"tx_commit_failed_no_peers": "Транзакция не смогла передать, попробуйте еще раз через секунду или около того", "tx_commit_failed_no_peers": "Транзакция не смогла передать, попробуйте еще раз через секунду или около того",

View file

@ -979,6 +979,7 @@
"transport_type": "ประเภทการขนส่ง", "transport_type": "ประเภทการขนส่ง",
"trongrid_history": "ประวัติศาสตร์ Trongrid", "trongrid_history": "ประวัติศาสตร์ Trongrid",
"trusted": "มั่นคง", "trusted": "มั่นคง",
"try_again": "ลองอีกครั้ง",
"tx_commit_exception_no_dust_on_change": "ธุรกรรมถูกปฏิเสธด้วยจำนวนเงินนี้ ด้วยเหรียญเหล่านี้คุณสามารถส่ง ${min} โดยไม่ต้องเปลี่ยนแปลงหรือ ${max} ที่ส่งคืนการเปลี่ยนแปลง", "tx_commit_exception_no_dust_on_change": "ธุรกรรมถูกปฏิเสธด้วยจำนวนเงินนี้ ด้วยเหรียญเหล่านี้คุณสามารถส่ง ${min} โดยไม่ต้องเปลี่ยนแปลงหรือ ${max} ที่ส่งคืนการเปลี่ยนแปลง",
"tx_commit_failed": "การทำธุรกรรมล้มเหลว กรุณาติดต่อฝ่ายสนับสนุน", "tx_commit_failed": "การทำธุรกรรมล้มเหลว กรุณาติดต่อฝ่ายสนับสนุน",
"tx_commit_failed_no_peers": "การทำธุรกรรมล้มเหลวในการออกอากาศโปรดลองอีกครั้งในวินาทีหรือมากกว่านั้น", "tx_commit_failed_no_peers": "การทำธุรกรรมล้มเหลวในการออกอากาศโปรดลองอีกครั้งในวินาทีหรือมากกว่านั้น",

View file

@ -979,6 +979,7 @@
"transport_type": "Uri ng transportasyon", "transport_type": "Uri ng transportasyon",
"trongrid_history": "Kasaysayan ng TronGrid", "trongrid_history": "Kasaysayan ng TronGrid",
"trusted": "Pinagkakatiwalaan", "trusted": "Pinagkakatiwalaan",
"try_again": "Subukang muli",
"tx_commit_exception_no_dust_on_change": "Ang transaksyon ay tinanggihan sa halagang ito. Sa mga barya na ito maaari kang magpadala ng ${min} nang walang sukli o ${max} na nagbabalik ng sukli.", "tx_commit_exception_no_dust_on_change": "Ang transaksyon ay tinanggihan sa halagang ito. Sa mga barya na ito maaari kang magpadala ng ${min} nang walang sukli o ${max} na nagbabalik ng sukli.",
"tx_commit_failed": "Nabigo ang transaksyon. Mangyaring makipag-ugnay sa suporta.", "tx_commit_failed": "Nabigo ang transaksyon. Mangyaring makipag-ugnay sa suporta.",
"tx_commit_failed_no_peers": "Nabigo ang transaksyon na mag -broadcast, mangyaring subukang muli sa isang segundo o higit pa", "tx_commit_failed_no_peers": "Nabigo ang transaksyon na mag -broadcast, mangyaring subukang muli sa isang segundo o higit pa",

View file

@ -979,6 +979,7 @@
"transport_type": "Taşıma tipi", "transport_type": "Taşıma tipi",
"trongrid_history": "Trongrid tarihi", "trongrid_history": "Trongrid tarihi",
"trusted": "Güvenilir", "trusted": "Güvenilir",
"try_again": "Tekrar deneyin",
"tx_commit_exception_no_dust_on_change": "İşlem bu miktarla reddedilir. Bu madeni paralarla değişiklik yapmadan ${min} veya değişikliği döndüren ${max} gönderebilirsiniz.", "tx_commit_exception_no_dust_on_change": "İşlem bu miktarla reddedilir. Bu madeni paralarla değişiklik yapmadan ${min} veya değişikliği döndüren ${max} gönderebilirsiniz.",
"tx_commit_failed": "İşlem taahhüdü başarısız oldu. Lütfen Destek ile iletişime geçin.", "tx_commit_failed": "İşlem taahhüdü başarısız oldu. Lütfen Destek ile iletişime geçin.",
"tx_commit_failed_no_peers": "İşlem yayın yapamadı, lütfen bir saniye içinde tekrar deneyin", "tx_commit_failed_no_peers": "İşlem yayın yapamadı, lütfen bir saniye içinde tekrar deneyin",

View file

@ -980,6 +980,7 @@
"transport_type": "Транспортний тип", "transport_type": "Транспортний тип",
"trongrid_history": "Тронгрідська історія", "trongrid_history": "Тронгрідська історія",
"trusted": "довіряють", "trusted": "довіряють",
"try_again": "Спробуйте ще раз",
"tx_commit_exception_no_dust_on_change": "Транзакція відхилена цією сумою. За допомогою цих монет ви можете надіслати ${min} без змін або ${max}, що повертає зміни.", "tx_commit_exception_no_dust_on_change": "Транзакція відхилена цією сумою. За допомогою цих монет ви можете надіслати ${min} без змін або ${max}, що повертає зміни.",
"tx_commit_failed": "Транзакційна комісія не вдалося. Будь ласка, зв'яжіться з підтримкою.", "tx_commit_failed": "Транзакційна комісія не вдалося. Будь ласка, зв'яжіться з підтримкою.",
"tx_commit_failed_no_peers": "Транзакція не вдалося транслювати, спробуйте ще раз за секунду або близько того", "tx_commit_failed_no_peers": "Транзакція не вдалося транслювати, спробуйте ще раз за секунду або близько того",

View file

@ -981,6 +981,7 @@
"transport_type": "ٹرانسپورٹ کی قسم", "transport_type": "ٹرانسپورٹ کی قسم",
"trongrid_history": "ٹرانگریڈ ہسٹری", "trongrid_history": "ٹرانگریڈ ہسٹری",
"trusted": "قابل اعتماد", "trusted": "قابل اعتماد",
"try_again": "دوبارہ کوشش کریں",
"tx_commit_exception_no_dust_on_change": "اس رقم سے لین دین کو مسترد کردیا گیا ہے۔ ان سککوں کے ذریعہ آپ بغیر کسی تبدیلی کے ${min} یا ${max} بھیج سکتے ہیں جو لوٹتے ہیں۔", "tx_commit_exception_no_dust_on_change": "اس رقم سے لین دین کو مسترد کردیا گیا ہے۔ ان سککوں کے ذریعہ آپ بغیر کسی تبدیلی کے ${min} یا ${max} بھیج سکتے ہیں جو لوٹتے ہیں۔",
"tx_commit_failed": "ٹرانزیکشن کمٹ ناکام ہوگیا۔ براہ کرم سپورٹ سے رابطہ کریں۔", "tx_commit_failed": "ٹرانزیکشن کمٹ ناکام ہوگیا۔ براہ کرم سپورٹ سے رابطہ کریں۔",
"tx_commit_failed_no_peers": "ٹرانزیکشن نشر کرنے میں ناکام ، براہ کرم ایک سیکنڈ یا اس میں دوبارہ کوشش کریں", "tx_commit_failed_no_peers": "ٹرانزیکشن نشر کرنے میں ناکام ، براہ کرم ایک سیکنڈ یا اس میں دوبارہ کوشش کریں",

View file

@ -976,6 +976,7 @@
"transport_type": "Loại vận chuyển", "transport_type": "Loại vận chuyển",
"trongrid_history": "Lịch sử TronGrid", "trongrid_history": "Lịch sử TronGrid",
"trusted": "Đã tin cậy", "trusted": "Đã tin cậy",
"try_again": "Hãy thử lại",
"tx_commit_exception_no_dust_on_change": "Giao dịch bị từ chối với số tiền này. Với số tiền này bạn có thể gửi ${min} mà không cần đổi tiền lẻ hoặc ${max} trả lại tiền lẻ.", "tx_commit_exception_no_dust_on_change": "Giao dịch bị từ chối với số tiền này. Với số tiền này bạn có thể gửi ${min} mà không cần đổi tiền lẻ hoặc ${max} trả lại tiền lẻ.",
"tx_commit_failed": "Giao dịch không thành công. Vui lòng liên hệ với hỗ trợ.", "tx_commit_failed": "Giao dịch không thành công. Vui lòng liên hệ với hỗ trợ.",
"tx_commit_failed_no_peers": "Giao dịch không phát sóng, vui lòng thử lại trong một giây hoặc lâu hơn", "tx_commit_failed_no_peers": "Giao dịch không phát sóng, vui lòng thử lại trong một giây hoặc lâu hơn",

View file

@ -980,6 +980,7 @@
"transport_type": "Iru irinna", "transport_type": "Iru irinna",
"trongrid_history": "Itan Trongrid", "trongrid_history": "Itan Trongrid",
"trusted": "A ti fọkàn ẹ̀ tán", "trusted": "A ti fọkàn ẹ̀ tán",
"try_again": "Gbiyanju lẹẹkansi",
"tx_commit_exception_no_dust_on_change": "Iṣowo naa ti kọ pẹlu iye yii. Pẹlu awọn owó wọnyi o le firanṣẹ ${min} laisi ayipada tabi ${max} ni iyipada iyipada.", "tx_commit_exception_no_dust_on_change": "Iṣowo naa ti kọ pẹlu iye yii. Pẹlu awọn owó wọnyi o le firanṣẹ ${min} laisi ayipada tabi ${max} ni iyipada iyipada.",
"tx_commit_failed": "Idunadura iṣowo kuna. Jọwọ kan si atilẹyin.", "tx_commit_failed": "Idunadura iṣowo kuna. Jọwọ kan si atilẹyin.",
"tx_commit_failed_no_peers": "Idunadura kuna lati wa igbohungbe, jọwọ gbiyanju lẹẹkansi ni iṣẹju keji tabi bẹẹ", "tx_commit_failed_no_peers": "Idunadura kuna lati wa igbohungbe, jọwọ gbiyanju lẹẹkansi ni iṣẹju keji tabi bẹẹ",

View file

@ -979,6 +979,7 @@
"transport_type": "运输类型", "transport_type": "运输类型",
"trongrid_history": "Trongrid历史", "trongrid_history": "Trongrid历史",
"trusted": "值得信赖", "trusted": "值得信赖",
"try_again": "再试一次",
"tx_commit_exception_no_dust_on_change": "交易被此金额拒绝。使用这些硬币,您可以发送${min}无需更改或返回${max}的变化。", "tx_commit_exception_no_dust_on_change": "交易被此金额拒绝。使用这些硬币,您可以发送${min}无需更改或返回${max}的变化。",
"tx_commit_failed": "交易承诺失败。请联系支持。", "tx_commit_failed": "交易承诺失败。请联系支持。",
"tx_commit_failed_no_peers": "交易无法广播,请在一秒钟左右的时间内重试", "tx_commit_failed_no_peers": "交易无法广播,请在一秒钟左右的时间内重试",