Generic enhancements (#1668)

* Add more choices for pin code required duration

* Fix spacing in Cake Features

* Update Cake Features cards

* Update Cake Pay image

* Add NanoGPT image

* Update Sign/Verify strings

* Update more flags

* update moonpay currency name

* Update more icons

* Add friendly message for less than minimum fee

* fix translation [skip ci]

* Fix icon theming and add Telegram link

* Fix color issue for restore screen

* rename matic poly to pol

* minor potential fix [skip ci]

* minor fix [skip ci]

* Update analysis_options.yaml

* fix translations

* fix translation

* revert regex changes

* Update bitcoin_cash_electrum_server_list.yml

* Update address_validator.dart

---------

Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
This commit is contained in:
tuxsudo 2024-09-23 10:10:40 -04:00 committed by GitHub
parent e2b3507134
commit 6592b7a3c5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
58 changed files with 276 additions and 194 deletions

View file

@ -1,5 +1,6 @@
include: package:lints/recommended.yaml
analyzer:
exclude: [
build/**,

View file

@ -1,3 +1,10 @@
-
uri: bitcoincash.stackwallet.com:50002
is_default: true
useSSL: true
-
uri: bch.aftrek.org:50002
useSSL: true
-
uri: node.minisatoshi.cash:50002
useSSL: true

BIN
assets/images/cards.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 367 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 692 B

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 845 B

After

Width:  |  Height:  |  Size: 975 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 695 B

After

Width:  |  Height:  |  Size: 366 B

BIN
assets/images/nanogpt.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 505 KiB

View file

@ -30,4 +30,6 @@ class BitcoinTransactionCommitFailedVoutNegative extends TransactionCommitFailed
class BitcoinTransactionCommitFailedBIP68Final extends TransactionCommitFailedBIP68Final {}
class BitcoinTransactionCommitFailedLessThanMin extends TransactionCommitFailedBIP68Final {}
class BitcoinTransactionSilentPaymentsNotSupported extends TransactionInputNotSupported {}

View file

@ -91,6 +91,10 @@ class PendingBitcoinTransaction with PendingTransaction {
throw BitcoinTransactionCommitFailedBIP68Final();
}
if (error.contains("min fee not met")) {
throw BitcoinTransactionCommitFailedLessThanMin();
}
throw BitcoinTransactionCommitFailed(errorMessage: error);
}

View file

@ -178,7 +178,7 @@ class CryptoCurrency extends EnumerableItem<int> with Serializable<int> implemen
static const dcr = CryptoCurrency(title: 'DCR', fullName: 'Decred', raw: 47, name: 'dcr', iconPath: 'assets/images/dcr_icon.png', decimals: 8);
static const kmd = CryptoCurrency(title: 'KMD', fullName: 'Komodo', raw: 48, name: 'kmd', iconPath: 'assets/images/kmd_icon.png', decimals: 8);
static const mana = CryptoCurrency(title: 'MANA', tag: 'ETH', fullName: 'Decentraland', raw: 49, name: 'mana', iconPath: 'assets/images/mana_icon.png', decimals: 18);
static const maticpoly = CryptoCurrency(title: 'MATIC', tag: 'POLY', fullName: 'Polygon', raw: 50, name: 'maticpoly', iconPath: 'assets/images/matic_icon.png', decimals: 18);
static const maticpoly = CryptoCurrency(title: 'POL', tag: 'POLY', fullName: 'Polygon', raw: 50, name: 'maticpoly', iconPath: 'assets/images/matic_icon.png', decimals: 18);
static const matic = CryptoCurrency(title: 'MATIC', tag: 'ETH', fullName: 'Polygon', raw: 51, name: 'matic', iconPath: 'assets/images/matic_icon.png', decimals: 18);
static const mkr = CryptoCurrency(title: 'MKR', tag: 'ETH', fullName: 'Maker', raw: 52, name: 'mkr', iconPath: 'assets/images/mkr_icon.png', decimals: 18);
static const near = CryptoCurrency(title: 'NEAR', fullName: 'NEAR Protocol', raw: 53, name: 'near', iconPath: 'assets/images/near_icon.png', decimals: 24);

View file

@ -36,4 +36,6 @@ class TransactionCommitFailedVoutNegative implements Exception {}
class TransactionCommitFailedBIP68Final implements Exception {}
class TransactionCommitFailedLessThanMin implements Exception {}
class TransactionInputNotSupported implements Exception {}

View file

@ -142,7 +142,7 @@ class EthereumWallet extends EVMChainWallet {
if (!hasKeysFile) rethrow;
}
final balance = EVMChainERC20Balance.fromJSON(data?['balance'] as String) ??
final balance = EVMChainERC20Balance.fromJSON(data?['balance'] as String?) ??
EVMChainERC20Balance(BigInt.zero);
final WalletKeysData keysData;

View file

@ -298,7 +298,9 @@ class MoonPayProvider extends BuyProvider {
String _normalizeCurrency(CryptoCurrency currency) {
if (currency == CryptoCurrency.maticpoly) {
return "MATIC_POLYGON";
return "POL_POLYGON";
} else if (currency == CryptoCurrency.matic) {
return "POL";
}
return currency.toString().toLowerCase();

View file

@ -5,9 +5,6 @@ import 'package:cake_wallet/solana/solana.dart';
import 'package:cw_core/crypto_currency.dart';
import 'package:cw_core/erc20_token.dart';
const BEFORE_REGEX = '(^|\s)';
const AFTER_REGEX = '(\$|\s)';
class AddressValidator extends TextValidator {
AddressValidator({required CryptoCurrency type})
: super(
@ -22,23 +19,21 @@ class AddressValidator extends TextValidator {
length: getLength(type));
static String getPattern(CryptoCurrency type) {
var pattern = "";
if (type is Erc20Token) {
pattern = '0x[0-9a-zA-Z]';
return '0x[0-9a-zA-Z]';
}
switch (type) {
case CryptoCurrency.xmr:
pattern = '4[0-9a-zA-Z]{94}|8[0-9a-zA-Z]{94}|[0-9a-zA-Z]{106}';
return '^4[0-9a-zA-Z]{94}\$|^8[0-9a-zA-Z]{94}\$|^[0-9a-zA-Z]{106}\$';
case CryptoCurrency.ada:
pattern = '[0-9a-zA-Z]{59}|[0-9a-zA-Z]{92}|[0-9a-zA-Z]{104}'
'|[0-9a-zA-Z]{105}|addr1[0-9a-zA-Z]{98}';
return '^[0-9a-zA-Z]{59}\$|^[0-9a-zA-Z]{92}\$|^[0-9a-zA-Z]{104}\$'
'|^[0-9a-zA-Z]{105}\$|^addr1[0-9a-zA-Z]{98}\$';
case CryptoCurrency.btc:
pattern =
'${P2pkhAddress.regex.pattern}|${P2shAddress.regex.pattern}|${P2wpkhAddress.regex.pattern}|${P2trAddress.regex.pattern}|${P2wshAddress.regex.pattern}|${SilentPaymentAddress.regex.pattern}';
return '^${P2pkhAddress.regex.pattern}\$|^${P2shAddress.regex.pattern}\$|^${P2wpkhAddress.regex.pattern}\$|${P2trAddress.regex.pattern}\$|^${P2wshAddress.regex.pattern}\$|^${SilentPaymentAddress.regex.pattern}\$';
case CryptoCurrency.nano:
pattern = '[0-9a-zA-Z_]';
return '[0-9a-zA-Z_]';
case CryptoCurrency.banano:
pattern = '[0-9a-zA-Z_]';
return '[0-9a-zA-Z_]';
case CryptoCurrency.usdc:
case CryptoCurrency.usdcpoly:
case CryptoCurrency.usdtPoly:
@ -74,11 +69,11 @@ class AddressValidator extends TextValidator {
case CryptoCurrency.dydx:
case CryptoCurrency.steth:
case CryptoCurrency.shib:
pattern = '0x[0-9a-zA-Z]';
return '0x[0-9a-zA-Z]';
case CryptoCurrency.xrp:
pattern = '[0-9a-zA-Z]{34}|X[0-9a-zA-Z]{46}';
return '^[0-9a-zA-Z]{34}\$|^X[0-9a-zA-Z]{46}\$';
case CryptoCurrency.xhv:
pattern = 'hvx|hvi|hvs[0-9a-zA-Z]';
return '^hvx|hvi|hvs[0-9a-zA-Z]';
case CryptoCurrency.xag:
case CryptoCurrency.xau:
case CryptoCurrency.xaud:
@ -100,43 +95,40 @@ class AddressValidator extends TextValidator {
case CryptoCurrency.dash:
case CryptoCurrency.eos:
case CryptoCurrency.wow:
pattern = '[0-9a-zA-Z]';
return '[0-9a-zA-Z]';
case CryptoCurrency.bch:
pattern =
'(?!bitcoincash:)[0-9a-zA-Z]*|(?!bitcoincash:)q|p[0-9a-zA-Z]{41}|(?!bitcoincash:)q|p[0-9a-zA-Z]{42}|bitcoincash:q|p[0-9a-zA-Z]{41}|bitcoincash:q|p[0-9a-zA-Z]{42}';
return '^(?!bitcoincash:)[0-9a-zA-Z]*\$|^(?!bitcoincash:)q|p[0-9a-zA-Z]{41}\$|^(?!bitcoincash:)q|p[0-9a-zA-Z]{42}\$|^bitcoincash:q|p[0-9a-zA-Z]{41}\$|^bitcoincash:q|p[0-9a-zA-Z]{42}\$';
case CryptoCurrency.bnb:
pattern = '[0-9a-zA-Z]';
return '[0-9a-zA-Z]';
case CryptoCurrency.ltc:
pattern = '(?!(ltc|LTC)1)[0-9a-zA-Z]*|(LTC1[A-Z0-9]*)|(ltc1[a-z0-9]*)';
return '^(?!(ltc|LTC)1)[0-9a-zA-Z]*\$|(^LTC1[A-Z0-9]*\$)|(^ltc1[a-z0-9]*\$)';
case CryptoCurrency.hbar:
pattern = '[0-9a-zA-Z.]';
return '[0-9a-zA-Z.]';
case CryptoCurrency.zaddr:
pattern = 'zs[0-9a-zA-Z]{75}';
return '^zs[0-9a-zA-Z]{75}';
case CryptoCurrency.zec:
pattern = 't1[0-9a-zA-Z]{33}|t3[0-9a-zA-Z]{33}';
return '^t1[0-9a-zA-Z]{33}\$|^t3[0-9a-zA-Z]{33}\$';
case CryptoCurrency.dcr:
pattern = 'D[ksecS]([0-9a-zA-Z])+';
return 'D[ksecS]([0-9a-zA-Z])+';
case CryptoCurrency.rvn:
pattern = '[Rr]([1-9a-km-zA-HJ-NP-Z]){33}';
return '[Rr]([1-9a-km-zA-HJ-NP-Z]){33}';
case CryptoCurrency.near:
pattern = '[0-9a-f]{64}';
return '[0-9a-f]{64}';
case CryptoCurrency.rune:
pattern = 'thor1[0-9a-z]{38}';
return 'thor1[0-9a-z]{38}';
case CryptoCurrency.scrt:
pattern = 'secret1[0-9a-z]{38}';
return 'secret1[0-9a-z]{38}';
case CryptoCurrency.stx:
pattern = 'S[MP][0-9a-zA-Z]+';
return 'S[MP][0-9a-zA-Z]+';
case CryptoCurrency.kmd:
pattern = 'R[0-9a-zA-Z]{33}';
return 'R[0-9a-zA-Z]{33}';
case CryptoCurrency.pivx:
pattern = 'D([1-9a-km-zA-HJ-NP-Z]){33}';
return 'D([1-9a-km-zA-HJ-NP-Z]){33}';
case CryptoCurrency.btcln:
pattern = '(lnbc|LNBC)([0-9]{1,}[a-zA-Z0-9]+)';
return '^(lnbc|LNBC)([0-9]{1,}[a-zA-Z0-9]+)';
default:
pattern = '[0-9a-zA-Z]';
return '[0-9a-zA-Z]';
}
return '$BEFORE_REGEX$pattern$AFTER_REGEX';
}
static List<int>? getLength(CryptoCurrency type) {
@ -277,54 +269,56 @@ class AddressValidator extends TextValidator {
}
static String? getAddressFromStringPattern(CryptoCurrency type) {
String? pattern = null;
switch (type) {
case CryptoCurrency.xmr:
case CryptoCurrency.wow:
pattern = '4[0-9a-zA-Z]{94}'
'|8[0-9a-zA-Z]{94}'
'|[0-9a-zA-Z]{106}';
return '([^0-9a-zA-Z]|^)4[0-9a-zA-Z]{94}([^0-9a-zA-Z]|\$)'
'|([^0-9a-zA-Z]|^)8[0-9a-zA-Z]{94}([^0-9a-zA-Z]|\$)'
'|([^0-9a-zA-Z]|^)[0-9a-zA-Z]{106}([^0-9a-zA-Z]|\$)';
case CryptoCurrency.btc:
pattern =
'${P2pkhAddress.regex.pattern}|${P2shAddress.regex.pattern}|${P2wpkhAddress.regex.pattern}|${P2trAddress.regex.pattern}|${P2wshAddress.regex.pattern}|${SilentPaymentAddress.regex.pattern}';
return '([^0-9a-zA-Z]|^)([1mn][a-km-zA-HJ-NP-Z1-9]{25,34})([^0-9a-zA-Z]|\$)' //P2pkhAddress type
'|([^0-9a-zA-Z]|^)([23][a-km-zA-HJ-NP-Z1-9]{25,34})([^0-9a-zA-Z]|\$)' //P2shAddress type
'|([^0-9a-zA-Z]|^)((bc|tb)1q[ac-hj-np-z02-9]{25,39})([^0-9a-zA-Z]|\$)' //P2wpkhAddress type
'|([^0-9a-zA-Z]|^)((bc|tb)1q[ac-hj-np-z02-9]{40,80})([^0-9a-zA-Z]|\$)' //P2wshAddress type
'|([^0-9a-zA-Z]|^)((bc|tb)1p([ac-hj-np-z02-9]{39}|[ac-hj-np-z02-9]{59}|[ac-hj-np-z02-9]{8,89}))([^0-9a-zA-Z]|\$)' //P2trAddress type
'|${SilentPaymentAddress.regex.pattern}\$';
case CryptoCurrency.ltc:
pattern = '^L[a-zA-Z0-9]{26,33}'
'|[LM][a-km-zA-HJ-NP-Z1-9]{26,33}'
'|ltc[a-zA-Z0-9]{26,45}';
return '([^0-9a-zA-Z]|^)^L[a-zA-Z0-9]{26,33}([^0-9a-zA-Z]|\$)'
'|([^0-9a-zA-Z]|^)[LM][a-km-zA-HJ-NP-Z1-9]{26,33}([^0-9a-zA-Z]|\$)'
'|([^0-9a-zA-Z]|^)ltc[a-zA-Z0-9]{26,45}([^0-9a-zA-Z]|\$)';
case CryptoCurrency.eth:
pattern = '0x[0-9a-zA-Z]{42}';
return '0x[0-9a-zA-Z]{42}';
case CryptoCurrency.maticpoly:
pattern = '0x[0-9a-zA-Z]{42}';
return '0x[0-9a-zA-Z]{42}';
case CryptoCurrency.nano:
pattern = 'nano_[0-9a-zA-Z]{60}';
return 'nano_[0-9a-zA-Z]{60}';
case CryptoCurrency.banano:
pattern = 'ban_[0-9a-zA-Z]{60}';
return 'ban_[0-9a-zA-Z]{60}';
case CryptoCurrency.bch:
pattern = '(bitcoincash:)?q[0-9a-zA-Z]{41,42}';
return 'bitcoincash:q[0-9a-zA-Z]{41}([^0-9a-zA-Z]|\$)'
'|bitcoincash:q[0-9a-zA-Z]{42}([^0-9a-zA-Z]|\$)'
'|([^0-9a-zA-Z]|^)q[0-9a-zA-Z]{41}([^0-9a-zA-Z]|\$)'
'|([^0-9a-zA-Z]|^)q[0-9a-zA-Z]{42}([^0-9a-zA-Z]|\$)';
case CryptoCurrency.sol:
pattern = '[1-9A-HJ-NP-Za-km-z]{43,44}';
return '([^0-9a-zA-Z]|^)[1-9A-HJ-NP-Za-km-z]{43,44}([^0-9a-zA-Z]|\$)';
case CryptoCurrency.trx:
pattern = '(T|t)[1-9A-HJ-NP-Za-km-z]{33}';
return '(T|t)[1-9A-HJ-NP-Za-km-z]{33}';
default:
if (type.tag == CryptoCurrency.eth.title) {
pattern = '0x[0-9a-zA-Z]{42}';
return '0x[0-9a-zA-Z]{42}';
}
if (type.tag == CryptoCurrency.maticpoly.tag) {
pattern = '0x[0-9a-zA-Z]{42}';
return '0x[0-9a-zA-Z]{42}';
}
if (type.tag == CryptoCurrency.sol.title) {
pattern = '[1-9A-HJ-NP-Za-km-z]{43,44}';
return '([^0-9a-zA-Z]|^)[1-9A-HJ-NP-Za-km-z]{43,44}([^0-9a-zA-Z]|\$)';
}
if (type.tag == CryptoCurrency.trx.title) {
pattern = '(T|t)[1-9A-HJ-NP-Za-km-z]{33}';
}
}
if (pattern != null) {
return "$BEFORE_REGEX$pattern$AFTER_REGEX";
return '(T|t)[1-9A-HJ-NP-Za-km-z]{33}';
}
return null;
}
}
}

View file

@ -2,10 +2,13 @@ import 'package:cake_wallet/generated/i18n.dart';
enum PinCodeRequiredDuration {
always(0),
tenminutes(10),
onehour(60);
tenMinutes(10),
halfHour(30),
fortyFiveMinutes(45),
oneHour(60);
const PinCodeRequiredDuration(this.value);
final int value;
static PinCodeRequiredDuration deserialize({required int raw}) =>
@ -18,15 +21,19 @@ enum PinCodeRequiredDuration {
case PinCodeRequiredDuration.always:
label = S.current.always;
break;
case PinCodeRequiredDuration.tenminutes:
case PinCodeRequiredDuration.tenMinutes:
label = S.current.minutes_to_pin_code('10');
break;
case PinCodeRequiredDuration.onehour:
case PinCodeRequiredDuration.oneHour:
label = S.current.minutes_to_pin_code('60');
break;
case PinCodeRequiredDuration.halfHour:
label = S.current.minutes_to_pin_code('30');
break;
case PinCodeRequiredDuration.fortyFiveMinutes:
label = S.current.minutes_to_pin_code('45');
break;
}
return label;
}
}

View file

@ -236,7 +236,7 @@ class SimpleSwapExchangeProvider extends ExchangeProvider {
case CryptoCurrency.usdcsol:
return 'usdcspl';
case CryptoCurrency.matic:
return 'maticerc20';
return 'pol';
case CryptoCurrency.maticpoly:
return 'matic';
default:

View file

@ -156,7 +156,8 @@ class CWPolygon extends Polygon {
@override
CryptoCurrency assetOfTransaction(WalletBase wallet, TransactionInfo transaction) {
transaction as EVMChainTransactionInfo;
if (transaction.tokenSymbol == CryptoCurrency.maticpoly.title) {
if (transaction.tokenSymbol == CryptoCurrency.maticpoly.title ||
transaction.tokenSymbol == "MATIC") {
return CryptoCurrency.maticpoly;
}

View file

@ -52,20 +52,26 @@ class CakeFeaturesPage extends StatelessWidget {
onTap: () => _navigatorToGiftCardsPage(context),
title: 'Cake Pay',
subTitle: S.of(context).cake_pay_subtitle,
svgPicture: SvgPicture.asset(
'assets/images/cards.svg',
height: 125,
width: 125,
image: Image.asset(
'assets/images/cards.png',
height: 100,
width: 115,
fit: BoxFit.cover,
),
),
SizedBox(height: 10),
DashBoardRoundedCardWidget(
onTap: () => _launchUrl("cake.nano-gpt.com"),
title: "NanoGPT",
subTitle: S.of(context).nanogpt_subtitle,
onTap: () => _launchUrl("cake.nano-gpt.com"),
image: Image.asset(
'assets/images/nanogpt.png',
height: 80,
width: 80,
fit: BoxFit.cover,
),
SizedBox(height: 20),
),
SizedBox(height: 10),
Observer(
builder: (context) {
if (!dashboardViewModel.hasSignMessages) {
@ -75,6 +81,12 @@ class CakeFeaturesPage extends StatelessWidget {
onTap: () => Navigator.of(context).pushNamed(Routes.signPage),
title: S.current.sign_verify_message,
subTitle: S.current.sign_verify_message_sub,
icon: Icon(
Icons.speaker_notes_rounded,
color:
Theme.of(context).extension<DashboardPageTheme>()!.pageTitleTextColor,
size: 75,
),
);
},
),

View file

@ -8,7 +8,6 @@ import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/src/screens/pin_code/pin_code_widget.dart';
import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
import 'package:cake_wallet/src/widgets/option_tile.dart';
import 'package:cake_wallet/themes/extensions/option_tile_theme.dart';
import 'package:cake_wallet/utils/device_info.dart';
import 'package:cake_wallet/utils/permission_handler.dart';
import 'package:cake_wallet/utils/responsive_layout_util.dart';
@ -20,6 +19,9 @@ import 'package:cw_core/hardware/device_connection_type.dart';
import 'package:cw_core/wallet_type.dart';
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart';
import 'package:cake_wallet/themes/extensions/info_theme.dart';
import 'package:cake_wallet/themes/theme_base.dart';
class RestoreOptionsPage extends BasePage {
RestoreOptionsPage({required this.isNewInstall});
@ -44,12 +46,16 @@ class RestoreOptionsPage extends BasePage {
@override
Widget body(BuildContext context) {
final imageColor = Theme.of(context).extension<OptionTileTheme>()!.titleColor;
final mainImageColor = Theme.of(context).extension<DashboardPageTheme>()!.pageTitleTextColor;
final brightImageColor = Theme.of(context).extension<InfoTheme>()!.textColor;
final imageColor = currentTheme.type == ThemeType.bright ? brightImageColor : mainImageColor;
final imageLedger = Image.asset('assets/images/ledger_nano.png', width: 40, color: imageColor);
final imageSeedKeys = Image.asset('assets/images/restore_wallet_image.png', color: imageColor);
final imageBackup = Image.asset('assets/images/backup.png', color: imageColor);
final qrCode = Image.asset('assets/images/restore_qr.png', color: imageColor);
return Center(
child: Container(
width: ResponsiveLayoutUtilBase.kDesktopMaxWidthConstraint,
@ -98,10 +104,13 @@ class RestoreOptionsPage extends BasePage {
child: OptionTile(
key: ValueKey('restore_options_from_qr_button_key'),
onPressed: () => _onScanQRCode(context),
image: qrCode,
title: S.of(context).scan_qr_code,
description: S.of(context).cold_or_recover_wallet,
icon: Icon(
Icons.qr_code_rounded,
color: imageColor,
size: 50,
),
title: S.of(context).scan_qr_code,
description: S.of(context).cold_or_recover_wallet),
)
],
),

View file

@ -2,17 +2,20 @@ import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/src/widgets/option_tile.dart';
import 'package:cake_wallet/themes/extensions/info_theme.dart';
import 'package:cake_wallet/utils/device_info.dart';
import 'package:cake_wallet/view_model/support_view_model.dart';
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart';
import 'package:cake_wallet/themes/theme_base.dart';
class SupportPage extends BasePage {
SupportPage(this.supportViewModel);
final SupportViewModel supportViewModel;
final imageLiveSupport = Image.asset('assets/images/live_support.png');
final imageLiveSupport = Image.asset('assets/images/cake_icon.png');
final imageWalletGuides = Image.asset('assets/images/wallet_guides.png');
final imageMoreLinks = Image.asset('assets/images/more_links.png');
@ -22,8 +25,16 @@ class SupportPage extends BasePage {
@override
AppBarStyle get appBarStyle => AppBarStyle.regular;
@override
Widget body(BuildContext context) {
final mainColor = Theme.of(context).extension<DashboardPageTheme>()!.pageTitleTextColor;
final brightColor = Theme.of(context).extension<InfoTheme>()!.textColor;
final iconColor = currentTheme.type == ThemeType.bright ? brightColor : mainColor;
return Container(
child: Center(
child: ConstrainedBox(
@ -33,7 +44,11 @@ class SupportPage extends BasePage {
Padding(
padding: EdgeInsets.only(top: 24),
child: OptionTile(
image: imageLiveSupport,
icon: Icon(
Icons.support_agent,
color: iconColor,
size: 50,
),
title: S.of(context).support_title_live_chat,
description: S.of(context).support_description_live_chat,
onPressed: () {
@ -48,7 +63,11 @@ class SupportPage extends BasePage {
Padding(
padding: EdgeInsets.only(top: 24),
child: OptionTile(
image: imageWalletGuides,
icon: Icon(
Icons.find_in_page,
color: iconColor,
size: 50,
),
title: S.of(context).support_title_guides,
description: S.of(context).support_description_guides,
onPressed: () => _launchUrl(supportViewModel.guidesUrl),
@ -57,7 +76,11 @@ class SupportPage extends BasePage {
Padding(
padding: EdgeInsets.only(top: 24),
child: OptionTile(
image: imageMoreLinks,
icon: Icon(
Icons.contact_support,
color: iconColor,
size: 50,
),
title: S.of(context).support_title_other_links,
description: S.of(context).support_description_other_links,
onPressed: () => Navigator.pushNamed(context, Routes.supportOtherLinks),

View file

@ -37,7 +37,6 @@ class SupportOtherLinksPage extends BasePage {
itemCounter: (int _) => supportViewModel.items.length,
itemBuilder: (_, index) {
final item = supportViewModel.items[index];
if (item is RegularListItem) {
return SettingsCellWithArrow(title: item.title, handler: item.handler);
}

View file

@ -11,6 +11,7 @@ class DashBoardRoundedCardWidget extends StatelessWidget {
required this.subTitle,
this.hint,
this.svgPicture,
this.image,
this.icon,
this.onClose,
this.customBorder,
@ -22,6 +23,7 @@ class DashBoardRoundedCardWidget extends StatelessWidget {
final String subTitle;
final Widget? hint;
final SvgPicture? svgPicture;
final Image? image;
final Icon? icon;
final double? customBorder;
@ -77,7 +79,8 @@ class DashBoardRoundedCardWidget extends StatelessWidget {
],
),
),
if (svgPicture != null) svgPicture!,
if (image != null) image!
else if (svgPicture != null) svgPicture!,
if (icon != null) icon!
],
),

View file

@ -4,13 +4,16 @@ import 'package:flutter/material.dart';
class OptionTile extends StatelessWidget {
const OptionTile(
{required this.onPressed,
required this.image,
this.image,
this.icon,
required this.title,
required this.description,
super.key});
super.key})
: assert(image!=null || icon!=null);
final VoidCallback onPressed;
final Image image;
final Image? image;
final Icon? icon;
final String title;
final String description;
@ -31,7 +34,7 @@ class OptionTile extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
image,
icon ?? image!,
Expanded(
child: Padding(
padding: EdgeInsets.only(left: 16),

View file

@ -570,7 +570,7 @@ abstract class SettingsStoreBase with Store {
static const defaultPinLength = 4;
static const defaultActionsMode = 11;
static const defaultPinCodeTimeOutDuration = PinCodeRequiredDuration.tenminutes;
static const defaultPinCodeTimeOutDuration = PinCodeRequiredDuration.tenMinutes;
static const defaultAutoGenerateSubaddressStatus = AutoGenerateSubaddressStatus.initialized;
static final walletPasswordDirectInput = Platform.isLinux;
static const defaultSeedPhraseLength = SeedPhraseLength.twelveWords;

View file

@ -21,9 +21,9 @@ class ExceptionHandler {
static File? _file;
static void _saveException(String? error, StackTrace? stackTrace, {String? library}) async {
if (_file == null) {
final appDocDir = await getAppDir();
if (_file == null) {
_file = File('${appDocDir.path}/error.txt');
}

View file

@ -692,6 +692,9 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor
if (error is TransactionCommitFailedBIP68Final) {
return S.current.tx_rejected_bip68_final;
}
if (error is TransactionCommitFailedLessThanMin) {
return S.current.fee_less_than_min;
}
if (error is TransactionNoDustOnChangeException) {
return S.current.tx_commit_exception_no_dust_on_change(error.min, error.max);
}

View file

@ -14,11 +14,13 @@ abstract class SupportViewModelBase with Store {
: items = [
LinkListItem(
title: 'Email',
icon: 'assets/images/support_icon.png',
linkTitle: 'support@cakewallet.com',
link: 'mailto:support@cakewallet.com'),
if (!isMoneroOnly)
LinkListItem(
title: 'Website',
icon: 'assets/images/global.png',
linkTitle: 'cakewallet.com',
link: 'https://cakewallet.com'),
if (!isMoneroOnly)
@ -29,7 +31,12 @@ abstract class SupportViewModelBase with Store {
linkTitle: S.current.apk_update,
link: 'https://github.com/cake-tech/cake_wallet/releases'),
LinkListItem(
title: 'Telegram',
title: 'Telegram Community',
icon: 'assets/images/Telegram.png',
linkTitle: 't.me/cakewallet',
link: 'https://t.me/cakewallet'),
LinkListItem(
title: 'Telegram Support Bot',
icon: 'assets/images/Telegram.png',
linkTitle: '@cakewallet_bot',
link: 'https://t.me/cakewallet_bot'),

View file

@ -129,6 +129,7 @@
"choose_from_available_options": "اختر من بين الخيارات المتاحة:",
"choose_one": "اختر واحدة",
"choose_relay": "ﻡﺍﺪﺨﺘﺳﻼﻟ ﻊﺑﺎﺘﺘﻟﺍ ﺭﺎﻴﺘﺧﺍ ءﺎﺟﺮﻟﺍ",
"choose_wallet_currency": "الرجاء اختيار عملة المحفظة:",
"choose_wallet_group": "اختر مجموعة المحفظة",
"clear": "مسح",
"clearnet_link": "رابط Clearnet",
@ -297,6 +298,7 @@
"failed_authentication": "${state_error} فشل المصادقة.",
"faq": "الأسئلة الشائعة",
"features": "سمات",
"fee_less_than_min": "الرسوم المحددة أقل من الحد الأدنى ، يرجى زيادة الرسوم لتكون قادرة على إرسال المعاملة",
"fee_rate": "معدل الرسوم",
"fetching": "جار الجلب",
"fiat_api": "Fiat API",
@ -605,6 +607,7 @@
"seedtype_alert_title": "تنبيه البذور",
"seedtype_legacy": "إرث (25 كلمة)",
"seedtype_polyseed": "بوليسيد (16 كلمة)",
"seedtype_wownero": "Wownero (14 كلمة)",
"select_backup_file": "حدد ملف النسخ الاحتياطي",
"select_buy_provider_notice": "حدد مزود شراء أعلاه. يمكنك تخطي هذه الشاشة عن طريق تعيين مزود شراء الافتراضي في إعدادات التطبيق.",
"select_destination": ".ﻲﻃﺎﻴﺘﺣﻻﺍ ﺦﺴﻨﻟﺍ ﻒﻠﻣ ﺔﻬﺟﻭ ﺪﻳﺪﺤﺗ ءﺎﺟﺮﻟﺍ",
@ -676,7 +679,7 @@
"show_seed": "عرض السييد",
"sign_message": "تسجيل رسالة",
"sign_up": "اشتراك",
"sign_verify_message": "توقيع أو التحقق من الرسالة",
"sign_verify_message": "تسجيل / تحقق",
"sign_verify_message_sub": "قم بتوقيع أو التحقق من رسالة باستخدام المفتاح الخاص بك",
"sign_verify_title": "تسجيل / تحقق",
"signature": "إمضاء",

View file

@ -298,6 +298,7 @@
"failed_authentication": "Неуспешно удостоверяване. ${state_error}",
"faq": "FAQ",
"features": "Характеристика",
"fee_less_than_min": "Избраната такса е по -малка от минимума, моля, увеличете таксите, за да можете да изпратите транзакцията",
"fee_rate": "Такса ставка",
"fetching": "Обработване",
"fiat_api": "Fiat API",
@ -606,6 +607,7 @@
"seedtype_alert_title": "Сигнал за семена",
"seedtype_legacy": "Наследство (25 думи)",
"seedtype_polyseed": "Поли семе (16 думи)",
"seedtype_wownero": "Wownero (14 думи)",
"select_backup_file": "Избор на резервно копие",
"select_buy_provider_notice": "Изберете доставчик на покупка по -горе. Можете да пропуснете този екран, като зададете вашия доставчик по подразбиране по подразбиране в настройките на приложението.",
"select_destination": "Моля, изберете дестинация за архивния файл.",
@ -677,7 +679,7 @@
"show_seed": "Покажи seed",
"sign_message": "Съобщение за подписване",
"sign_up": "Регистрация",
"sign_verify_message": "Подпишете или проверете съобщението",
"sign_verify_message": "Подпишете / проверете",
"sign_verify_message_sub": "Подпишете или проверете съобщение с помощта на вашия личен ключ",
"sign_verify_title": "Подпишете / проверете",
"signature": "Подпис",

View file

@ -298,6 +298,7 @@
"failed_authentication": "Ověřování selhalo. ${state_error}",
"faq": "FAQ",
"features": "Funkce",
"fee_less_than_min": "Vybraný poplatek je menší než minimum, zvýšit poplatky, abyste mohli transakci odeslat",
"fee_rate": "Sazba poplatků",
"fetching": "Načítá se",
"fiat_api": "Fiat API",
@ -606,6 +607,7 @@
"seedtype_alert_title": "Upozornění seedtype",
"seedtype_legacy": "Legacy (25 slov)",
"seedtype_polyseed": "Polyseed (16 slov)",
"seedtype_wownero": "Wownero (14 slov)",
"select_backup_file": "Vybrat soubor se zálohou",
"select_buy_provider_notice": "Vyberte výše uvedeného poskytovatele nákupu. Tuto obrazovku můžete přeskočit nastavením výchozího poskytovatele nákupu v nastavení aplikace.",
"select_destination": "Vyberte cíl pro záložní soubor.",
@ -677,7 +679,7 @@
"show_seed": "Zobrazit seed",
"sign_message": "Podepsat zprávu",
"sign_up": "Registrovat se",
"sign_verify_message": "Podepište nebo ověřte zprávu",
"sign_verify_message": "Podepsat / ověřit",
"sign_verify_message_sub": "Podepište nebo ověřte zprávu pomocí soukromého klíče",
"sign_verify_title": "Podepsat / ověřit",
"signature": "Podpis",

View file

@ -298,6 +298,7 @@
"failed_authentication": "Authentifizierung fehlgeschlagen. ${state_error}",
"faq": "Häufig gestellte Fragen",
"features": "Merkmale",
"fee_less_than_min": "Die ausgewählte Gebühr ist geringer als das Minimum. Bitte erhöhen Sie die Gebühren, um die Transaktion senden zu können",
"fee_rate": "Gebührenpreis",
"fetching": "Frage ab",
"fiat_api": "Fiat API",
@ -607,6 +608,7 @@
"seedtype_alert_title": "Seedype -Alarm",
"seedtype_legacy": "Veraltet (25 Wörter)",
"seedtype_polyseed": "Polyseed (16 Wörter)",
"seedtype_wownero": "WOWNO (14 Wörter)",
"select_backup_file": "Sicherungsdatei auswählen",
"select_buy_provider_notice": "Wählen Sie oben einen Anbieter kaufen. Sie können diese Seite überspringen, indem Sie Ihren Standard-Kaufanbieter in den App-Einstellungen festlegen.",
"select_destination": "Bitte wählen Sie das Ziel für die Sicherungsdatei aus.",
@ -678,7 +680,7 @@
"show_seed": "Seed zeigen",
"sign_message": "Nachricht unterschreiben",
"sign_up": "Anmelden",
"sign_verify_message": "Nachricht unterschreiben oder überprüfen",
"sign_verify_message": "Zeichen / überprüfen",
"sign_verify_message_sub": "Unterschreiben oder überprüfen Sie eine Nachricht mit Ihrem privaten Schlüssel",
"sign_verify_title": "Zeichen / überprüfen",
"signature": "Signatur",

View file

@ -299,6 +299,7 @@
"faq": "FAQ",
"features": "Features",
"fee_rate": "Fee rate",
"fee_less_than_min": "Selected Fee is less than the minimum, please increase the fees to be able to send the transaction",
"fetching": "Fetching",
"fiat_api": "Fiat API",
"fiat_balance": "Fiat Balance",
@ -678,7 +679,7 @@
"show_seed": "Show seed",
"sign_message": "Sign Message",
"sign_up": "Sign Up",
"sign_verify_message": "Sign or verify message",
"sign_verify_message": "Sign / Verify",
"sign_verify_message_sub": "Sign or verify a message using your private key",
"sign_verify_title": "Sign / Verify",
"signature": "Signature",

View file

@ -298,6 +298,7 @@
"failed_authentication": "Autenticación fallida. ${state_error}",
"faq": "FAQ",
"features": "Características",
"fee_less_than_min": "La tarifa seleccionada es menor que la mínima, aumente las tarifas para poder enviar la transacción",
"fee_rate": "Tarifa",
"fetching": "Cargando",
"fiat_api": "Fiat API",
@ -607,6 +608,7 @@
"seedtype_alert_title": "Alerta de type de semillas",
"seedtype_legacy": "Legado (25 palabras)",
"seedtype_polyseed": "Polieta (16 palabras)",
"seedtype_wownero": "Wownero (14 palabras)",
"select_backup_file": "Seleccionar archivo de respaldo",
"select_buy_provider_notice": "Seleccione un proveedor de compra arriba. Puede omitir esta pantalla configurando su proveedor de compra predeterminado en la configuración de la aplicación.",
"select_destination": "Seleccione el destino del archivo de copia de seguridad.",
@ -678,7 +680,7 @@
"show_seed": "Mostrar semilla",
"sign_message": "Mensaje de firma",
"sign_up": "Registrarse",
"sign_verify_message": "Firmar o verificar el mensaje",
"sign_verify_message": "Firmar / verificar",
"sign_verify_message_sub": "Firmar o verificar un mensaje usando su clave privada",
"sign_verify_title": "Firmar / verificar",
"signature": "Firma",

View file

@ -298,6 +298,7 @@
"failed_authentication": "Échec d'authentification. ${state_error}",
"faq": "FAQ",
"features": "Caractéristiques",
"fee_less_than_min": "Les frais sélectionnés sont inférieurs au minimum, veuillez augmenter les frais pour pouvoir envoyer la transaction",
"fee_rate": "Taux de frais",
"fetching": "Récupération",
"fiat_api": "Fiat API",
@ -606,6 +607,7 @@
"seedtype_alert_title": "Alerte de type SeedType",
"seedtype_legacy": "Héritage (25 mots)",
"seedtype_polyseed": "Polyseed (16 mots)",
"seedtype_wownero": "WOWNERO (14 mots)",
"select_backup_file": "Sélectionnez le fichier de sauvegarde",
"select_buy_provider_notice": "Sélectionnez un fournisseur d'achat ci-dessus. Vous pouvez ignorer cet écran en définissant votre fournisseur d'achat par défaut dans les paramètres de l'application.",
"select_destination": "Veuillez sélectionner la destination du fichier de sauvegarde.",
@ -677,7 +679,7 @@
"show_seed": "Visualiser la phrase secrète (seed)",
"sign_message": "Signer le message",
"sign_up": "S'inscrire",
"sign_verify_message": "Signer ou vérifier le message",
"sign_verify_message": "Signe / vérifier",
"sign_verify_message_sub": "Signez ou vérifiez un message en utilisant votre clé privée",
"sign_verify_title": "Signe / vérifier",
"signature": "Signature",

View file

@ -298,6 +298,7 @@
"failed_authentication": "Binne wajen shiga. ${state_error}",
"faq": "FAQ",
"features": "Fasas",
"fee_less_than_min": "Kudin da aka zaba kasa da mafi karancin, don Allah ƙara kudaden don samun damar aika ma'amala",
"fee_rate": "Kudi",
"fetching": "Daukewa",
"fiat_api": "API ɗin Fiat",
@ -608,6 +609,7 @@
"seedtype_alert_title": "Seedtype farke",
"seedtype_legacy": "Legacy (25 kalmomi)",
"seedtype_polyseed": "Polyseed (16 kalmomi)",
"seedtype_wownero": "WowRero (kalmomi 14)",
"select_backup_file": "Zaɓi fayil ɗin madadin",
"select_buy_provider_notice": "Zaɓi mai ba da kyauta a sama. Zaka iya tsallake wannan allon ta hanyar saita mai ba da isasshen busasshen mai ba da isasshen busasshiyar saiti.",
"select_destination": "Da fatan za a zaɓi wurin da za a yi wa madadin fayil ɗin.",
@ -679,7 +681,7 @@
"show_seed": "Nuna iri",
"sign_message": "Sa hannu",
"sign_up": "Shiga",
"sign_verify_message": "Shiga ko Tabbatar da Saƙo",
"sign_verify_message": "Sa hannu / Tabbatar",
"sign_verify_message_sub": "Shiga ko tabbatar da saƙo ta amfani da Maɓallinku na sirri",
"sign_verify_title": "Sa hannu / Tabbatar",
"signature": "Sa hannu",

View file

@ -236,7 +236,7 @@
"email_address": "ईमेल पता",
"enable_mempool_api": "सटीक शुल्क और तिथियों के लिए मेमपूल एपीआई",
"enable_replace_by_fee": "प्रतिस्थापित-दर-शुल्क सक्षम करें",
"enable_silent_payments_scanning": "साइलेंट पेमेंट्स को स्कैन करना शुरू करें, जब तक कि टिप तक पहुंच न जाए",
"enable_silent_payments_scanning": "मूक भुगतान स्कैनिंग सक्षम करें",
"enabled": "सक्रिय",
"enter_amount": "राशि दर्ज करें",
"enter_backup_password": "यहां बैकअप पासवर्ड डालें",
@ -298,6 +298,7 @@
"failed_authentication": "प्रमाणीकरण विफल. ${state_error}",
"faq": "FAQ",
"features": "विशेषताएँ",
"fee_less_than_min": "चयनित शुल्क न्यूनतम से कम है, कृपया लेन -देन भेजने में सक्षम होने के लिए शुल्क बढ़ाएं",
"fee_rate": "शुल्क दर",
"fetching": "ला रहा है",
"fiat_api": "फिएट पैसे API",
@ -604,10 +605,11 @@
"seed_share": "बीज साझा करें",
"seed_title": "बीज",
"seedtype": "बीज",
"seedtype_alert_content": "अन्य बटुए के साथ बीज साझा करना केवल BIP39 SEEDTYPE के साथ संभव है।",
"seedtype_alert_content": "अन्य पर्स के साथ बीज साझा करना केवल BIP39 सीडटाइप के साथ संभव है।",
"seedtype_alert_title": "बीजगणित अलर्ट",
"seedtype_legacy": "विरासत (25 शब्द)",
"seedtype_polyseed": "पॉलीसीड (16 शब्द)",
"seedtype_wownero": "Wownero (14 शब्द)",
"select_backup_file": "बैकअप फ़ाइल का चयन करें",
"select_buy_provider_notice": "ऊपर एक खरीद प्रदाता का चयन करें। आप इस स्क्रीन को ऐप सेटिंग्स में अपना डिफ़ॉल्ट बाय प्रदाता सेट करके छोड़ सकते हैं।",
"select_destination": "कृपया बैकअप फ़ाइल के लिए गंतव्य का चयन करें।",
@ -679,7 +681,7 @@
"show_seed": "बीज दिखाओ",
"sign_message": "हस्ताक्षर संदेश",
"sign_up": "साइन अप करें",
"sign_verify_message": "संदेश पर हस्ताक्षर या सत्यापित करें",
"sign_verify_message": "हस्ताक्षर / सत्यापित करें",
"sign_verify_message_sub": "अपनी निजी कुंजी का उपयोग करके किसी संदेश पर हस्ताक्षर या सत्यापित करें",
"sign_verify_title": "हस्ताक्षर / सत्यापित करें",
"signature": "हस्ताक्षर",
@ -862,7 +864,7 @@
"wallet_group_description_one": "केक बटुए में, आप एक बना सकते हैं",
"wallet_group_description_three": "उपलब्ध वॉलेट और/या वॉलेट समूह स्क्रीन देखने के लिए। या चुनें",
"wallet_group_description_two": "एक बीज साझा करने के लिए एक मौजूदा बटुए का चयन करके। प्रत्येक वॉलेट समूह में प्रत्येक मुद्रा प्रकार का एक एकल वॉलेट हो सकता है।\n\nआप चयन कर सकते हैं",
"wallet_group_empty_state_text_one": "लगता है कि आपके पास कोई संगत बटुआ समूह नहीं है !\n\n टैप करें",
"wallet_group_empty_state_text_one": "लगता है कि आपके पास कोई संगत बटुआ समूह नहीं है!\n\nनल",
"wallet_group_empty_state_text_two": "नीचे एक नया बनाने के लिए।",
"wallet_keys": "बटुआ बीज / चाबियाँ",
"wallet_list_create_new_wallet": "नया बटुआ बनाएँ",

View file

@ -298,6 +298,7 @@
"failed_authentication": "Autentifikacija neuspješna. ${state_error}",
"faq": "FAQ",
"features": "Značajke",
"fee_less_than_min": "Odabrana naknada je manja od minimalnog, povećajte naknade kako biste mogli poslati transakciju",
"fee_rate": "Stopa naknade",
"fetching": "Dohvaćanje",
"fiat_api": "Fiat API",
@ -606,6 +607,7 @@
"seedtype_alert_title": "Upozorenje o sjemenu",
"seedtype_legacy": "Nasljeđe (25 riječi)",
"seedtype_polyseed": "Poliseed (16 riječi)",
"seedtype_wownero": "WANERO (14 riječi)",
"select_backup_file": "Odaberite datoteku sigurnosne kopije",
"select_buy_provider_notice": "Odaberite gornji davatelj kupnje. Ovaj zaslon možete preskočiti postavljanjem zadanog davatelja usluga kupnje u postavkama aplikacija.",
"select_destination": "Odaberite odredište za datoteku sigurnosne kopije.",
@ -677,7 +679,7 @@
"show_seed": "Prikaži pristupni izraz",
"sign_message": "Poruka",
"sign_up": "Prijavite se",
"sign_verify_message": "Potpisati ili provjeriti poruku",
"sign_verify_message": "Potpisati / provjeriti",
"sign_verify_message_sub": "Potpišite ili provjerite poruku pomoću privatnog ključa",
"sign_verify_title": "Potpisati / provjeriti",
"signature": "Potpis",

View file

@ -198,6 +198,7 @@
"delete_wallet_confirm_message": "Դուք վստահ եք, որ ուզում եք ջնջել ${wallet_name} դրամապանակը?",
"deleteConnectionConfirmationPrompt": "Դուք վստահ եք, որ ուզում եք ջնջել կապը",
"denominations": "Անվանակարգեր",
"derivationpath": "Ածանցման ուղին",
"descending": "Նվազող",
"description": "Նկարագրություն",
"destination_tag": "Նպատակակետի պիտակ:",
@ -235,7 +236,7 @@
"email_address": "Էլ. փոստի հասցե",
"enable_mempool_api": "Mempool API ճշգրիտ վճարների եւ ամսաթվերի համար",
"enable_replace_by_fee": "Միացնել փոխարինումը միջնորդավճարով",
"enable_silent_payments_scanning": "Սկսեք սկանավորել լուռ վճարումները, մինչեւ որ ծայրը հասնի",
"enable_silent_payments_scanning": "Միացնել Լուռ Վճարումների սկանավորումը",
"enabled": "Միացված",
"enter_amount": "Մուտքագրեք գումար",
"enter_backup_password": "Մուտքագրեք կրկնօրինակի գաղտնաբառը",
@ -297,6 +298,7 @@
"failed_authentication": "Վավերացումը ձախողվեց. ${state_error}",
"faq": "Հաճախ տրվող հարցեր",
"features": "Հատկանիշներ",
"fee_less_than_min": "Ընտրված վճարը նվազագույնից պակաս է, խնդրում ենք ավելացնել վճարները, որպեսզի կարողանաք գործարքը ուղարկել",
"fee_rate": "Վճարման տոկոսադրույքը",
"fetching": "Ստացվում է",
"fiat_api": "Fiat API",
@ -677,7 +679,7 @@
"show_seed": "Ցուցադրել սերմ",
"sign_message": "Կնքել հաղորդագրություն",
"sign_up": "Գրանցվել",
"sign_verify_message": "Կնքել կամ ստուգել հաղորդագրություն",
"sign_verify_message": "Նշեք / ստուգեք",
"sign_verify_message_sub": "Կնքել կամ ստուգել հաղորդագրությունը ձեր գախտնի բանալիով",
"sign_verify_title": "Կնքել / Ստուգել",
"signature": "Կնիք",
@ -859,8 +861,8 @@
"wallet_group_description_four": "Ամբողջովին նոր սերմով դրամապանակ ստեղծելու համար:",
"wallet_group_description_one": "Տորթի դրամապանակում կարող եք ստեղծել ա",
"wallet_group_description_three": "Տեսնել առկա դրամապանակներն ու (կամ) դրամապանակների խմբերի էկրանը: Կամ ընտրել",
"wallet_group_description_two": "ընտրելով գոյություն ունեցող դրամապանակ `սերմը կիսելու համար: Դրամապանակների յուրաքանչյուր խումբ կարող է պարունակել յուրաքանչյուր արժույթի տիպի մեկ դրամապանակ: \n\n Կարող եք ընտրել",
"wallet_group_empty_state_text_one": "Կարծես թե դուք չունեք որեւէ համատեղելի դրամապանակների խմբեր !\n\n թակել",
"wallet_group_description_two": "ընտրելով գոյություն ունեցող դրամապանակ `սերմը կիսելու համար: Դրամապանակների յուրաքանչյուր խումբ կարող է պարունակել յուրաքանչյուր արժույթի տեսակի մեկ դրամապանակ:\n\nԿարող եք ընտրել",
"wallet_group_empty_state_text_one": "Կարծես թե որեւէ համատեղելի դրամապանակի խմբեր չունեք:\n\nԹակել",
"wallet_group_empty_state_text_two": "ներքեւում `նորը կազմելու համար:",
"wallet_keys": "Դրամապանակի սերմ/բանալիներ",
"wallet_list_create_new_wallet": "Ստեղծել Նոր Դրամապանակ",

View file

@ -298,6 +298,7 @@
"failed_authentication": "Otentikasi gagal. ${state_error}",
"faq": "Pertanyaan yang Sering Diajukan",
"features": "Fitur",
"fee_less_than_min": "Biaya yang dipilih kurang dari minimum, harap tingkatkan biaya untuk dapat mengirim transaksi",
"fee_rate": "Tarif biaya",
"fetching": "Mengambil",
"fiat_api": "API fiat",
@ -609,6 +610,7 @@
"seedtype_alert_title": "Peringatan seedtype",
"seedtype_legacy": "Legacy (25 kata)",
"seedtype_polyseed": "Polyseed (16 kata)",
"seedtype_wownero": "Wownero (14 kata)",
"select_backup_file": "Pilih file cadangan",
"select_buy_provider_notice": "Pilih penyedia beli di atas. Anda dapat melewatkan layar ini dengan mengatur penyedia pembelian default Anda di pengaturan aplikasi.",
"select_destination": "Silakan pilih tujuan untuk file cadangan.",
@ -680,7 +682,7 @@
"show_seed": "Tampilkan seed",
"sign_message": "Pesan tanda",
"sign_up": "Daftar",
"sign_verify_message": "Tanda tangan atau verifikasi pesan",
"sign_verify_message": "Tanda / verifikasi",
"sign_verify_message_sub": "Menandatangani atau memverifikasi pesan menggunakan kunci pribadi Anda",
"sign_verify_title": "Tanda / verifikasi",
"signature": "Tanda tangan",

View file

@ -299,6 +299,7 @@
"failed_authentication": "Autenticazione fallita. ${state_error}",
"faq": "Domande Frequenti",
"features": "Caratteristiche",
"fee_less_than_min": "La commissione selezionata è inferiore al minimo, aumenta le commissioni per poter inviare la transazione",
"fee_rate": "Tasso di commissione",
"fetching": "Recupero",
"fiat_api": "Fiat API",
@ -608,6 +609,7 @@
"seedtype_alert_title": "Avviso seedType",
"seedtype_legacy": "Legacy (25 parole)",
"seedtype_polyseed": "Polyseed (16 parole)",
"seedtype_wownero": "Wownero (14 parole)",
"select_backup_file": "Seleziona file di backup",
"select_buy_provider_notice": "Seleziona un fornitore di acquisto sopra. È possibile saltare questa schermata impostando il provider di acquisto predefinito nelle impostazioni dell'app.",
"select_destination": "Seleziona la destinazione per il file di backup.",
@ -679,7 +681,7 @@
"show_seed": "Mostra seme",
"sign_message": "Messaggio di firma",
"sign_up": "Registrati",
"sign_verify_message": "Firmare o verificare il messaggio",
"sign_verify_message": "Firmare / verificare",
"sign_verify_message_sub": "Firma o verifica un messaggio utilizzando la chiave privata",
"sign_verify_title": "Firmare / verificare",
"signature": "Firma",

View file

@ -298,6 +298,7 @@
"failed_authentication": "認証失敗. ${state_error}",
"faq": "FAQ",
"features": "特徴",
"fee_less_than_min": "選択した料金は最低額よりも少ないので、取引を送信できるように料金を引き上げてください",
"fee_rate": "料金金利",
"fetching": "フェッチング",
"fiat_api": "不換紙幣 API",
@ -607,6 +608,7 @@
"seedtype_alert_title": "SeedTypeアラート",
"seedtype_legacy": "レガシー25語",
"seedtype_polyseed": "ポリシード16語",
"seedtype_wownero": "wownero14ワード",
"select_backup_file": "バックアップファイルを選択",
"select_buy_provider_notice": "上記の購入プロバイダーを選択してください。デフォルトの購入プロバイダーをアプリ設定で設定して、この画面をスキップできます。",
"select_destination": "バックアップファイルの保存先を選択してください。",
@ -678,7 +680,7 @@
"show_seed": "シードを表示",
"sign_message": "署名メッセージ",
"sign_up": "サインアップ",
"sign_verify_message": "メッセージに署名または確認します",
"sign_verify_message": "署名 /検証",
"sign_verify_message_sub": "秘密鍵を使用してメッセージに署名または確認します",
"sign_verify_title": "署名 /検証",
"signature": "サイン",

View file

@ -298,6 +298,7 @@
"failed_authentication": "인증 실패. ${state_error}",
"faq": "FAQ",
"features": "특징",
"fee_less_than_min": "선택된 수수료는 최소값보다 적습니다. 거래를 보낼 수있는 수수료를 늘리십시오.",
"fee_rate": "수수료",
"fetching": "가져 오는 중",
"fiat_api": "명목 화폐 API",
@ -607,6 +608,7 @@
"seedtype_alert_title": "종자 경보",
"seedtype_legacy": "레거시 (25 단어)",
"seedtype_polyseed": "다문 (16 단어)",
"seedtype_wownero": "Wownero (14 단어)",
"select_backup_file": "백업 파일 선택",
"select_buy_provider_notice": "위의 구매 제공자를 선택하십시오. 앱 설정에서 기본 구매 제공자를 설정 하여이 화면을 건너 뛸 수 있습니다.",
"select_destination": "백업 파일의 대상을 선택하십시오.",

View file

@ -298,6 +298,7 @@
"failed_authentication": "အထောက်အထားစိစစ်ခြင်း မအောင်မြင်ပါ။. ${state_error}",
"faq": "အမြဲမေးလေ့ရှိသောမေးခွန်းများ",
"features": "အင်္ဂါရပ်များ",
"fee_less_than_min": "ရွေးချယ်ထားသည့်အခကြေးငွေသည်အနည်းဆုံးထက်နည်းသည်, ငွေပေးချေမှုကိုပေးပို့နိုင်ရန်အခကြေးငွေကိုတိုးမြှင့်ပေးပါ",
"fee_rate": "ကြေးနှုန်း",
"fetching": "ခေါ်ယူခြင်း။",
"fiat_api": "Fiat API",
@ -606,6 +607,7 @@
"seedtype_alert_title": "ပျိုးပင်သတိပေးချက်",
"seedtype_legacy": "အမွေအနှစ် (စကားလုံး 25 လုံး)",
"seedtype_polyseed": "polyseed (စကားလုံး 16 လုံး)",
"seedtype_wownero": "Wownero (စကားလုံး 14 လုံး)",
"select_backup_file": "အရန်ဖိုင်ကို ရွေးပါ။",
"select_buy_provider_notice": "အပေါ်ကဝယ်သူတစ် ဦး ကိုရွေးချယ်ပါ။ သင်၏ default 0 ယ်သူအား app settings တွင် setting လုပ်ခြင်းဖြင့်ဤ screen ကိုကျော်သွားနိုင်သည်။",
"select_destination": "အရန်ဖိုင်အတွက် ဦးတည်ရာကို ရွေးပါ။",
@ -677,7 +679,7 @@
"show_seed": "မျိုးစေ့ကိုပြပါ။",
"sign_message": "လက်မှတ်စာ",
"sign_up": "ဆိုင်းအပ်",
"sign_verify_message": "မက်ဆေ့ခ်ျကိုလက်မှတ်ထိုးသို့မဟုတ်အတည်ပြုရန်",
"sign_verify_message": "လက်မှတ်ထိုး / အတည်ပြုရန်",
"sign_verify_message_sub": "သင်၏ကိုယ်ပိုင်သော့ကို သုံး. မက်ဆေ့ခ်ျကိုလက်မှတ်ထိုးပါ",
"sign_verify_title": "လက်မှတ်ထိုး / အတည်ပြုရန်",
"signature": "လက်မှတ်",

View file

@ -298,6 +298,7 @@
"failed_authentication": "Mislukte authenticatie. ${state_error}",
"faq": "FAQ",
"features": "Functies",
"fee_less_than_min": "Geselecteerde vergoeding is lager dan het minimum, verhoog de kosten om de transactie te kunnen verzenden",
"fee_rate": "Tarief",
"fetching": "Ophalen",
"fiat_api": "Fiat API",
@ -606,6 +607,7 @@
"seedtype_alert_title": "Zaadtype alert",
"seedtype_legacy": "Legacy (25 woorden)",
"seedtype_polyseed": "Polyseed (16 woorden)",
"seedtype_wownero": "WOWNERO (14 woorden)",
"select_backup_file": "Selecteer een back-upbestand",
"select_buy_provider_notice": "Selecteer hierboven een koopprovider. U kunt dit scherm overslaan door uw standaard kopenprovider in te stellen in app -instellingen.",
"select_destination": "Selecteer de bestemming voor het back-upbestand.",

View file

@ -298,6 +298,7 @@
"failed_authentication": "Nieudane uwierzytelnienie. ${state_error}",
"faq": "FAQ",
"features": "Cechy",
"fee_less_than_min": "Wybrana opłata jest niższa niż minimum, proszę zwiększyć opłaty, aby móc wysłać transakcję",
"fee_rate": "Stawka opłaty",
"fetching": "Pobieranie",
"fiat_api": "API Walut FIAT",
@ -606,6 +607,7 @@
"seedtype_alert_title": "Ustanowienie typu sedype",
"seedtype_legacy": "Dziedzictwo (25 słów)",
"seedtype_polyseed": "Poliqueed (16 słów)",
"seedtype_wownero": "Wowero (14 słów)",
"select_backup_file": "Wybierz plik kopii zapasowej",
"select_buy_provider_notice": "Wybierz powyższe dostawcę zakupu. Możesz pominąć ten ekran, ustawiając domyślnego dostawcę zakupu w ustawieniach aplikacji.",
"select_destination": "Wybierz miejsce docelowe dla pliku kopii zapasowej.",

View file

@ -298,6 +298,7 @@
"failed_authentication": "Falha na autenticação. ${state_error}",
"faq": "FAQ",
"features": "Funcionalidades",
"fee_less_than_min": "A taxa selecionada é menor que o mínimo, aumente as taxas para poder enviar a transação",
"fee_rate": "Taxa de transação",
"fetching": "Buscando",
"fiat_api": "API da Fiat",
@ -608,6 +609,7 @@
"seedtype_alert_title": "Alerta de SeedType",
"seedtype_legacy": "Legado (25 palavras)",
"seedtype_polyseed": "Polyseed (16 palavras)",
"seedtype_wownero": "Wowrone (14 palavras)",
"select_backup_file": "Selecione o arquivo de backup",
"select_buy_provider_notice": "Selecione um provedor de compra acima. Você pode pular esta tela definindo seu provedor de compra padrão nas configurações de aplicativos.",
"select_destination": "Selecione o destino para o arquivo de backup.",

View file

@ -298,6 +298,7 @@
"failed_authentication": "Ошибка аутентификации. ${state_error}",
"faq": "FAQ",
"features": "Функции",
"fee_less_than_min": "Выбранный сбор меньше, чем минимум, пожалуйста, увеличьте сборы, чтобы быть в состоянии отправить транзакцию",
"fee_rate": "Плата",
"fetching": "Загрузка",
"fiat_api": "Фиат API",
@ -607,6 +608,7 @@
"seedtype_alert_title": "SEEDTYPE ALERT",
"seedtype_legacy": "Наследие (25 слов)",
"seedtype_polyseed": "Полиса (16 слов)",
"seedtype_wownero": "Wownero (14 слов)",
"select_backup_file": "Выберите файл резервной копии",
"select_buy_provider_notice": "Выберите поставщика покупки выше. Вы можете пропустить этот экран, установив поставщика покупки по умолчанию в настройках приложения.",
"select_destination": "Пожалуйста, выберите место для файла резервной копии.",

View file

@ -298,6 +298,7 @@
"failed_authentication": "การยืนยันสิทธิ์ล้มเหลว ${state_error}",
"faq": "คำถามที่พบบ่อย",
"features": "คุณสมบัติ",
"fee_less_than_min": "ค่าธรรมเนียมที่เลือกน้อยกว่าขั้นต่ำโปรดเพิ่มค่าธรรมเนียมเพื่อให้สามารถส่งธุรกรรมได้",
"fee_rate": "อัตราค่าธรรมเนียม",
"fetching": "กำลังโหลด",
"fiat_api": "API สกุลเงินตรา",
@ -606,6 +607,7 @@
"seedtype_alert_title": "การแจ้งเตือน seedtype",
"seedtype_legacy": "มรดก (25 คำ)",
"seedtype_polyseed": "โพลีส (16 คำ)",
"seedtype_wownero": "wownero (14 คำ)",
"select_backup_file": "เลือกไฟล์สำรอง",
"select_buy_provider_notice": "เลือกผู้ให้บริการซื้อด้านบน คุณสามารถข้ามหน้าจอนี้ได้โดยการตั้งค่าผู้ให้บริการซื้อเริ่มต้นในการตั้งค่าแอป",
"select_destination": "โปรดเลือกปลายทางสำหรับไฟล์สำรอง",

View file

@ -298,6 +298,7 @@
"failed_authentication": "Nabigo ang pagpapatunay. ${state_error}",
"faq": "FAQ",
"features": "Mga tampok",
"fee_less_than_min": "Ang napiling bayad ay mas mababa sa minimum, mangyaring dagdagan ang mga bayarin upang maipadala ang transaksyon",
"fee_rate": "Rate ng bayad",
"fetching": "Pagkuha",
"fiat_api": "Fiat API",
@ -606,6 +607,7 @@
"seedtype_alert_title": "Alerto ng Seedtype",
"seedtype_legacy": "Legacy (25 na salita)",
"seedtype_polyseed": "Polyseed (16 na salita)",
"seedtype_wownero": "Wownero (14 na salita)",
"select_backup_file": "Piliin ang backup na file",
"select_buy_provider_notice": "Pumili ng provider ng pagbili sa itaas. Maaari mong laktawan ang screen na ito sa pamamagitan ng pagtatakda ng iyong default na provider ng pagbili sa mga setting ng app.",
"select_destination": "Mangyaring piliin ang patutunguhan para sa backup na file.",

View file

@ -298,6 +298,7 @@
"failed_authentication": "Doğrulama başarısız oldu. ${state_error}",
"faq": "SSS",
"features": "Özellikler",
"fee_less_than_min": "Seçilen ücret asgari düzeyden azdır, lütfen işlemi gönderebilmek için ücretleri artırın",
"fee_rate": "Ücret oranı",
"fetching": "Getiriliyor",
"fiat_api": "İtibari Para API",
@ -606,6 +607,7 @@
"seedtype_alert_title": "SeedType uyarısı",
"seedtype_legacy": "Miras (25 kelime)",
"seedtype_polyseed": "Polyseed (16 kelime)",
"seedtype_wownero": "Wownero (14 kelime)",
"select_backup_file": "Yedek dosyası seç",
"select_buy_provider_notice": "Yukarıda bir satın alma sağlayıcısı seçin. App ayarlarında varsayılan satın alma sağlayıcınızı ayarlayarak bu ekranı atlayabilirsiniz.",
"select_destination": "Lütfen yedekleme dosyası için hedef seçin.",

View file

@ -298,6 +298,7 @@
"failed_authentication": "Помилка аутентифікації. ${state_error}",
"faq": "FAQ",
"features": "Особливості",
"fee_less_than_min": "Вибрана плата менша, ніж мінімум, будь ласка, збільште збори, щоб мати можливість відправити транзакцію",
"fee_rate": "Ставка плати",
"fetching": "Завантаження",
"fiat_api": "Фіат API",
@ -607,6 +608,7 @@
"seedtype_alert_title": "Попередження насінника",
"seedtype_legacy": "Спадщина (25 слів)",
"seedtype_polyseed": "Полісей (16 слів)",
"seedtype_wownero": "Влонеро (14 слів)",
"select_backup_file": "Виберіть файл резервної копії",
"select_buy_provider_notice": "Виберіть постачальника купівлі вище. Ви можете пропустити цей екран, встановивши свого постачальника купівлі за замовчуванням у налаштуваннях додатків.",
"select_destination": "Виберіть місце призначення для файлу резервної копії.",

View file

@ -298,6 +298,7 @@
"failed_authentication": "ناکام تصدیق۔ ${state_error}",
"faq": "عمومی سوالات",
"features": "خصوصیات",
"fee_less_than_min": "منتخب فیس کم سے کم سے کم ہے ، براہ کرم لین دین بھیجنے کے قابل فیس میں اضافہ کریں",
"fee_rate": "فیس کی شرح",
"fetching": "لا رہا ہے۔",
"fiat_api": "Fiat API",
@ -608,6 +609,7 @@
"seedtype_alert_title": "سیڈ ٹائپ الرٹ",
"seedtype_legacy": "میراث (25 الفاظ)",
"seedtype_polyseed": "پالیسیڈ (16 الفاظ)",
"seedtype_wownero": "واونرو (14 الفاظ)",
"select_backup_file": "بیک اپ فائل کو منتخب کریں۔",
"select_buy_provider_notice": "اوپر خریدنے والا خریدنے والا منتخب کریں۔ آپ ایپ کی ترتیبات میں اپنے پہلے سے طے شدہ خریدنے والے کو ترتیب دے کر اس اسکرین کو چھوڑ سکتے ہیں۔",
"select_destination": "۔ﮟﯾﺮﮐ ﺏﺎﺨﺘﻧﺍ ﺎﮐ ﻝﺰﻨﻣ ﮯﯿﻟ ﮯﮐ ﻞﺋﺎﻓ ﭖﺍ ﮏﯿﺑ ﻡﺮﮐ ﮦﺍﺮﺑ",

View file

@ -143,6 +143,7 @@
"confirm_delete_wallet": "Thao tác này sẽ xóa ví này. Bạn có muốn tiếp tục không?",
"confirm_fee_dedction_content": "Bạn có đồng ý trừ phí từ đầu ra không?",
"confirm_fee_deduction": "Xác nhận Khấu trừ Phí",
"confirm_fee_deduction_content": "Bạn có đồng ý khấu trừ phí từ đầu ra không?",
"confirm_sending": "Xác nhận gửi",
"confirm_silent_payments_switch_node": "Nút hiện tại của bạn không hỗ trợ thanh toán im lặng\\nCake Wallet sẽ chuyển sang một nút tương thích chỉ để quét",
"confirmations": "Xác nhận",
@ -161,6 +162,7 @@
"contact_name": "Tên liên hệ",
"contact_support": "Liên hệ Hỗ trợ",
"continue_text": "Tiếp tục",
"contract_warning": "Địa chỉ hợp đồng này đã được gắn cờ là có khả năng lừa đảo. Vui lòng xử lý một cách thận trọng.",
"contractName": "Tên Hợp đồng",
"contractSymbol": "Ký hiệu Hợp đồng",
"copied_key_to_clipboard": "Đã sao chép ${key} vào khay nhớ tạm",
@ -221,6 +223,7 @@
"displayable": "Có thể hiển thị",
"do_not_have_enough_gas_asset": "Bạn không có đủ ${currency} để thực hiện giao dịch với điều kiện mạng blockchain hiện tại. Bạn cần thêm ${currency} để trả phí mạng blockchain, ngay cả khi bạn đang gửi tài sản khác.",
"do_not_send": "Đừng gửi",
"do_not_send_funds_to_contract_address_warning": "Không gửi tiền đến địa chỉ này\n\n Đây chỉ là một mã định danh cho mã thông báo, bất kỳ khoản tiền nào được gửi đến địa chỉ này sẽ bị mất.\n\n Lưu ý: Bánh sẽ không bao giờ yêu cầu bạn thêm địa chỉ hợp đồng",
"do_not_share_warning_text": "Không chia sẻ điều này với bất kỳ ai, bao gồm cả bộ phận hỗ trợ.\n\nTài sản của bạn có thể và sẽ bị đánh cắp!",
"do_not_show_me": "Không hiển thị lại cho tôi",
"domain_looks_up": "Tra cứu tên miền",
@ -296,6 +299,8 @@
"failed_authentication": "Xác thực không thành công. ${state_error}",
"faq": "FAQ",
"features": "Tính năng",
"fee_less_than_min": "Phí được chọn ít hơn mức tối thiểu, vui lòng tăng phí để có thể gửi giao dịch",
"fee_rate": "Tỷ lệ phí",
"fetching": "Đang tải",
"fiat_api": "API Fiat",
"fiat_balance": "Số dư Fiat",
@ -599,6 +604,8 @@
"seed_share": "Chia sẻ hạt giống",
"seed_title": "Hạt giống",
"seedtype": "Loại hạt giống",
"seedtype_alert_content": "Chia sẻ hạt giống với ví khác chỉ có thể với BIP39 SeedType.",
"seedtype_alert_title": "Cảnh báo hạt giống",
"seedtype_legacy": "Di sản (25 từ)",
"seedtype_polyseed": "Polyseed (16 từ)",
"seedtype_wownero": "Wownero (14 từ)",
@ -612,6 +619,7 @@
"send": "Gửi",
"send_address": "Địa chỉ ${cryptoCurrency}",
"send_amount": "Số tiền:",
"send_change_to_you": "Thay đổi, cho bạn:",
"send_creating_transaction": "Tạo giao dịch",
"send_error_currency": "Tiền tệ chỉ có thể chứa số",
"send_error_minimum_value": "Giá trị tối thiểu của số tiền là 0.01",
@ -665,6 +673,7 @@
"setup_your_debit_card": "Thiết lập thẻ ghi nợ của bạn",
"share": "Chia sẻ",
"share_address": "Chia sẻ địa chỉ",
"shared_seed_wallet_groups": "Nhóm ví hạt được chia sẻ",
"show_details": "Hiển thị chi tiết",
"show_keys": "Hiển thị hạt giống/khóa",
"show_market_place": "Hiển thị Thị trường",
@ -678,6 +687,7 @@
"signature_invalid_error": "Chữ ký không hợp lệ cho tin nhắn đã cho",
"signTransaction": "Ký giao dịch",
"signup_for_card_accept_terms": "Đăng ký thẻ và chấp nhận các điều khoản.",
"silent_payment": "Thanh toán im lặng",
"silent_payments": "Thanh toán im lặng",
"silent_payments_always_scan": "Đặt Thanh toán im lặng luôn quét",
"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.",
@ -688,6 +698,7 @@
"silent_payments_scanned_tip": "ĐÃ QUÉT ĐỂ TIP! (${tip})",
"silent_payments_scanning": "Đang quét thanh toán im lặng",
"silent_payments_settings": "Cài đặt thanh toán im lặng",
"single_seed_wallets_group": "Ví hạt đơn",
"slidable": "Có thể kéo",
"sort_by": "Sắp xếp theo",
"spend_key_private": "Khóa chi tiêu (riêng tư)",
@ -710,6 +721,7 @@
"switchToEVMCompatibleWallet": "Vui lòng chuyển sang ví tương thích EVM và thử lại (Ethereum, Polygon)",
"symbol": "Ký hiệu",
"sync_all_wallets": "Đồng bộ tất cả các ví",
"sync_status_attempting_scan": "Cố gắng quét",
"sync_status_attempting_sync": "ĐANG THỬ ĐỒNG BỘ",
"sync_status_connected": "ĐÃ KẾT NỐI",
"sync_status_connecting": "ĐANG KẾT NỐI",
@ -846,6 +858,7 @@
"view_transaction_on": "Xem giao dịch trên",
"voting_weight": "Trọng số bỏ phiếu",
"waitFewSecondForTxUpdate": "Vui lòng đợi vài giây để giao dịch được phản ánh trong lịch sử giao dịch",
"wallet_group": "Nhóm ví",
"wallet_group_description_four": "Để tạo ra một ví với một hạt giống hoàn toàn mới.",
"wallet_group_description_one": "Trong ví bánh, bạn có thể tạo",
"wallet_group_description_three": "Để xem ví trên ví và/hoặc màn hình nhóm ví. Hoặc chọn",
@ -854,6 +867,7 @@
"wallet_group_empty_state_text_two": "Dưới đây để làm một cái mới.",
"wallet_keys": "Hạt giống/khóa ví",
"wallet_list_create_new_wallet": "Tạo ví mới",
"wallet_list_edit_group_name": "Chỉnh sửa tên nhóm",
"wallet_list_edit_wallet": "Chỉnh sửa ví",
"wallet_list_failed_to_load": "Tải ví ${wallet_name} không thành công. ${error}",
"wallet_list_failed_to_remove": "Xóa ví ${wallet_name} không thành công. ${error}",

View file

@ -299,6 +299,7 @@
"failed_authentication": "Ìfẹ̀rílàdí pipòfo. ${state_error}",
"faq": "Àwọn ìbéèrè l'a máa ń bèèrè",
"features": "Awọn ẹya",
"fee_less_than_min": "Owo ti a ti yan kere ju ti o kere ju, jọwọ mu awọn owo naa pọ si lati ni anfani lati firanṣẹ iṣowo naa",
"fee_rate": "Oṣuwọn owo ọya",
"fetching": "ń wá",
"fiat_api": "Ojú ètò áàpù owó tí ìjọba pàṣẹ wa lò",
@ -607,6 +608,7 @@
"seedtype_alert_title": "Ṣajọpọ Seeytype",
"seedtype_legacy": "Legacy (awọn ọrọ 25)",
"seedtype_polyseed": "Polyseed (awọn ọrọ 16)",
"seedtype_wownero": "Wowero (awọn ọrọ 14)",
"select_backup_file": "Select backup file",
"select_buy_provider_notice": "Yan olupese Ra loke. O le skii iboju yii nipa ṣiṣeto olupese rẹ ni awọn eto App.",
"select_destination": "Jọwọ yan ibi ti o nlo fun faili afẹyinti.",

View file

@ -298,6 +298,7 @@
"failed_authentication": "身份验证失败. ${state_error}",
"faq": "FAQ",
"features": "特征",
"fee_less_than_min": "选定费用小于最低费用,请增加费用以发送交易",
"fee_rate": "费率",
"fetching": "正在获取",
"fiat_api": "法币API",
@ -606,6 +607,7 @@
"seedtype_alert_title": "籽粒警报",
"seedtype_legacy": "遗产25个单词",
"seedtype_polyseed": "多种物品16个单词",
"seedtype_wownero": "沃恩罗14个单词",
"select_backup_file": "选择备份文件",
"select_buy_provider_notice": "在上面选择买入提供商。您可以通过在应用程序设置中设置默认的购买提供商来跳过此屏幕。",
"select_destination": "请选择备份文件的目的地。",