Merge branch 'main' of https://github.com/cake-tech/cake_wallet into CW-394-mac-auth

This commit is contained in:
Matthew Fosse 2024-04-16 12:08:12 -07:00
commit c84df3935f
90 changed files with 1481 additions and 522 deletions

View file

@ -139,7 +139,9 @@ jobs:
echo "const anonPayReferralCode = '${{ secrets.ANON_PAY_REFERRAL_CODE }}';" >> lib/.secrets.g.dart echo "const anonPayReferralCode = '${{ secrets.ANON_PAY_REFERRAL_CODE }}';" >> lib/.secrets.g.dart
echo "const fiatApiKey = '${{ secrets.FIAT_API_KEY }}';" >> lib/.secrets.g.dart echo "const fiatApiKey = '${{ secrets.FIAT_API_KEY }}';" >> lib/.secrets.g.dart
echo "const payfuraApiKey = '${{ secrets.PAYFURA_API_KEY }}';" >> lib/.secrets.g.dart echo "const payfuraApiKey = '${{ secrets.PAYFURA_API_KEY }}';" >> lib/.secrets.g.dart
echo "const ankrApiKey = '${{ secrets.ANKR_API_KEY }}';" >> lib/.secrets.g.dart
echo "const etherScanApiKey = '${{ secrets.ETHER_SCAN_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart echo "const etherScanApiKey = '${{ secrets.ETHER_SCAN_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
echo "const moralisApiKey = '${{ secrets.MORALIS_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
echo "const chatwootWebsiteToken = '${{ secrets.CHATWOOT_WEBSITE_TOKEN }}';" >> lib/.secrets.g.dart echo "const chatwootWebsiteToken = '${{ secrets.CHATWOOT_WEBSITE_TOKEN }}';" >> lib/.secrets.g.dart
echo "const exolixApiKey = '${{ secrets.EXOLIX_API_KEY }}';" >> lib/.secrets.g.dart echo "const exolixApiKey = '${{ secrets.EXOLIX_API_KEY }}';" >> lib/.secrets.g.dart
echo "const robinhoodApplicationId = '${{ secrets.ROBINHOOD_APPLICATION_ID }}';" >> lib/.secrets.g.dart echo "const robinhoodApplicationId = '${{ secrets.ROBINHOOD_APPLICATION_ID }}';" >> lib/.secrets.g.dart

12
SECURITY.md Normal file
View file

@ -0,0 +1,12 @@
# Security Policy
## Reporting a Vulnerability
If you need to report a vulnerability, please either:
* Open a security advisory: https://github.com/cake-tech/cake_wallet/security/advisories/new
* Send an email to `dev@cakewallet.com` with details on the vulnerability
## Supported Versions
As we don't maintain prevoius versions of the app, only the latest release for each platform is supported and any updates will bump the version number.

View file

@ -3,4 +3,26 @@
useSSL: true useSSL: true
is_default: true is_default: true
- -
uri: node.perish.co:9076 uri: node.nautilus.io
path: /api
useSSL: true
-
uri: app.natrium.io
path: /api
useSSL: true
-
uri: rainstorm.city
path: /api
useSSL: true
-
uri: node.somenano.com
path: /proxy
useSSL: true
-
uri: nanoslo.0x.no
path: /proxy
useSSL: true
-
uri: www.bitrequest.app
port: 8020
useSSL: true

View file

@ -1,2 +1,2 @@
Exchange flow enhancements and fixes UI enhancements
Generic enhancements and bug fixes Bug fixes

View file

@ -1,6 +1,7 @@
Exchange flow enhancements and fixes Add Replace-By-Fee to boost pending Bitcoin transactions
Add MoonPay to Buy options Enable WalletConnect for Solana
Add THORChain to Exchange providers WalletConnect Enhancements
Improve Bitcoin fee calculations Enhancements for ERC-20 tokens and Solana tokens
Fixes and enhancements for Solana Enhancements for Nano wallet
Generic enhancements and bug fixes UI enhancements
Bug fixes

View file

@ -241,6 +241,8 @@ abstract class ElectrumWalletAddressesBase extends WalletAddresses with Store {
final index = _addresses.indexOf(addressRecord); final index = _addresses.indexOf(addressRecord);
_addresses.remove(addressRecord); _addresses.remove(addressRecord);
_addresses.insert(index, addressRecord); _addresses.insert(index, addressRecord);
updateAddressesByMatch();
} }
@action @action

31
cw_core/lib/n2_node.dart Normal file
View file

@ -0,0 +1,31 @@
class N2Node {
N2Node({
this.weight,
this.uptime,
this.score,
this.account,
this.alias,
});
String? uptime;
double? weight;
int? score;
String? account;
String? alias;
factory N2Node.fromJson(Map<String, dynamic> json) => N2Node(
weight: double.tryParse((json['weight'] as num?).toString()),
uptime: json['uptime'] as String?,
score: json['score'] as int?,
account: json['rep_address'] as String?,
alias: json['alias'] as String?,
);
Map<String, dynamic> toJson() => <String, dynamic>{
'uptime': uptime,
'weight': weight,
'score': score,
'rep_address': account,
'alias': alias,
};
}

View file

@ -21,6 +21,7 @@ class Node extends HiveObject with Keyable {
this.trusted = false, this.trusted = false,
this.socksProxyAddress, this.socksProxyAddress,
String? uri, String? uri,
String? path,
WalletType? type, WalletType? type,
}) { }) {
if (uri != null) { if (uri != null) {
@ -29,10 +30,14 @@ class Node extends HiveObject with Keyable {
if (type != null) { if (type != null) {
this.type = type; this.type = type;
} }
if (path != null) {
this.path = path;
}
} }
Node.fromMap(Map<String, Object?> map) Node.fromMap(Map<String, Object?> map)
: uriRaw = map['uri'] as String? ?? '', : uriRaw = map['uri'] as String? ?? '',
path = map['path'] as String? ?? '',
login = map['login'] as String?, login = map['login'] as String?,
password = map['password'] as String?, password = map['password'] as String?,
useSSL = map['useSSL'] as bool?, useSSL = map['useSSL'] as bool?,
@ -63,6 +68,9 @@ class Node extends HiveObject with Keyable {
@HiveField(6) @HiveField(6)
String? socksProxyAddress; String? socksProxyAddress;
@HiveField(7, defaultValue: '')
String? path;
bool get isSSL => useSSL ?? false; bool get isSSL => useSSL ?? false;
bool get useSocksProxy => socksProxyAddress == null ? false : socksProxyAddress!.isNotEmpty; bool get useSocksProxy => socksProxyAddress == null ? false : socksProxyAddress!.isNotEmpty;
@ -79,9 +87,9 @@ class Node extends HiveObject with Keyable {
case WalletType.nano: case WalletType.nano:
case WalletType.banano: case WalletType.banano:
if (isSSL) { if (isSSL) {
return Uri.https(uriRaw, ''); return Uri.https(uriRaw, path ?? '');
} else { } else {
return Uri.http(uriRaw, ''); return Uri.http(uriRaw, path ?? '');
} }
case WalletType.ethereum: case WalletType.ethereum:
case WalletType.polygon: case WalletType.polygon:
@ -103,7 +111,8 @@ class Node extends HiveObject with Keyable {
other.typeRaw == typeRaw && other.typeRaw == typeRaw &&
other.useSSL == useSSL && other.useSSL == useSSL &&
other.trusted == trusted && other.trusted == trusted &&
other.socksProxyAddress == socksProxyAddress); other.socksProxyAddress == socksProxyAddress &&
other.path == path);
@override @override
int get hashCode => int get hashCode =>
@ -113,7 +122,8 @@ class Node extends HiveObject with Keyable {
typeRaw.hashCode ^ typeRaw.hashCode ^
useSSL.hashCode ^ useSSL.hashCode ^
trusted.hashCode ^ trusted.hashCode ^
socksProxyAddress.hashCode; socksProxyAddress.hashCode ^
path.hashCode;
@override @override
dynamic get keyIndex { dynamic get keyIndex {

View file

@ -41,5 +41,6 @@ abstract class WalletAddresses {
} }
} }
bool containsAddress(String address) => allAddressesMap.containsKey(address); bool containsAddress(String address) =>
addressesMap.containsKey(address) || allAddressesMap.containsKey(address);
} }

View file

@ -1,4 +1,5 @@
import 'dart:async'; import 'dart:async';
import 'dart:convert';
import 'dart:developer'; import 'dart:developer';
import 'package:cw_core/node.dart'; import 'package:cw_core/node.dart';
@ -9,6 +10,7 @@ import 'package:cw_evm/evm_erc20_balance.dart';
import 'package:cw_evm/evm_chain_transaction_model.dart'; import 'package:cw_evm/evm_chain_transaction_model.dart';
import 'package:cw_evm/pending_evm_chain_transaction.dart'; import 'package:cw_evm/pending_evm_chain_transaction.dart';
import 'package:cw_evm/evm_chain_transaction_priority.dart'; import 'package:cw_evm/evm_chain_transaction_priority.dart';
import 'package:cw_evm/.secrets.g.dart' as secrets;
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:http/http.dart'; import 'package:http/http.dart';
@ -211,26 +213,61 @@ abstract class EVMChainClient {
return EVMChainERC20Balance(balance, exponent: exponent); return EVMChainERC20Balance(balance, exponent: exponent);
} }
Future<Erc20Token?> getErc20Token(String contractAddress) async { Future<Erc20Token?> getErc20Token(String contractAddress, String chainName) async {
try { try {
final erc20 = ERC20(address: EthereumAddress.fromHex(contractAddress), client: _client!); final uri = Uri.https(
final name = await erc20.name(); 'deep-index.moralis.io',
final symbol = await erc20.symbol(); '/api/v2.2/erc20/metadata',
final decimal = await erc20.decimals(); {
"chain": chainName,
"addresses": contractAddress,
},
);
final response = await httpClient.get(
uri,
headers: {
"Accept": "application/json",
"X-API-Key": secrets.moralisApiKey,
},
);
final decodedResponse = jsonDecode(response.body)[0] as Map<String, dynamic>;
final name = decodedResponse['name'] ?? '';
final symbol = decodedResponse['symbol'] ?? '';
final decimal = decodedResponse['decimals'] ?? '0';
final iconPath = decodedResponse['logo'] ?? '';
return Erc20Token( return Erc20Token(
name: name, name: name,
symbol: symbol, symbol: symbol,
contractAddress: contractAddress, contractAddress: contractAddress,
decimal: decimal.toInt(), decimal: int.tryParse(decimal) ?? 0,
iconPath: iconPath,
); );
} catch (e) { } catch (e) {
try {
final erc20 = ERC20(address: EthereumAddress.fromHex(contractAddress), client: _client!);
final name = await erc20.name();
final symbol = await erc20.symbol();
final decimal = await erc20.decimals();
return Erc20Token(
name: name,
symbol: symbol,
contractAddress: contractAddress,
decimal: decimal.toInt(),
);
} catch (_) {}
return null; return null;
} }
} }
Uint8List hexToBytes(String hexString) { Uint8List hexToBytes(String hexString) {
return Uint8List.fromList(hex.HEX.decode(hexString.startsWith('0x') ? hexString.substring(2) : hexString)); return Uint8List.fromList(
hex.HEX.decode(hexString.startsWith('0x') ? hexString.substring(2) : hexString));
} }
void stop() { void stop() {

View file

@ -439,11 +439,16 @@ abstract class EVMChainWalletBase
Future<void> addErc20Token(Erc20Token token) async { Future<void> addErc20Token(Erc20Token token) async {
String? iconPath; String? iconPath;
try {
iconPath = CryptoCurrency.all if (token.iconPath == null || token.iconPath!.isEmpty) {
.firstWhere((element) => element.title.toUpperCase() == token.symbol.toUpperCase()) try {
.iconPath; iconPath = CryptoCurrency.all
} catch (_) {} .firstWhere((element) => element.title.toUpperCase() == token.symbol.toUpperCase())
.iconPath;
} catch (_) {}
} else {
iconPath = token.iconPath;
}
final newToken = createNewErc20TokenObject(token, iconPath); final newToken = createNewErc20TokenObject(token, iconPath);
@ -466,8 +471,8 @@ abstract class EVMChainWalletBase
_updateBalance(); _updateBalance();
} }
Future<Erc20Token?> getErc20Token(String contractAddress) async => Future<Erc20Token?> getErc20Token(String contractAddress, String chainName) async =>
await _client.getErc20Token(contractAddress); await _client.getErc20Token(contractAddress, chainName);
void _onNewTransaction() { void _onNewTransaction() {
_updateBalance(); _updateBalance();

View file

@ -2,6 +2,7 @@ import 'dart:async';
import 'dart:convert'; import 'dart:convert';
import 'package:cw_core/nano_account_info_response.dart'; import 'package:cw_core/nano_account_info_response.dart';
import 'package:cw_core/n2_node.dart';
import 'package:cw_nano/nano_balance.dart'; import 'package:cw_nano/nano_balance.dart';
import 'package:cw_nano/nano_transaction_model.dart'; import 'package:cw_nano/nano_transaction_model.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
@ -16,6 +17,8 @@ class NanoClient {
"nano-app": "cake-wallet" "nano-app": "cake-wallet"
}; };
static const String N2_REPS_ENDPOINT = "https://rpc.nano.to";
NanoClient() { NanoClient() {
SharedPreferences.getInstance().then((value) => prefs = value); SharedPreferences.getInstance().then((value) => prefs = value);
} }
@ -418,7 +421,7 @@ class NanoClient {
body: jsonEncode({ body: jsonEncode({
"action": "account_history", "action": "account_history",
"account": address, "account": address,
"count": "250", // TODO: pick a number "count": "100",
// "raw": true, // "raw": true,
})); }));
final data = await jsonDecode(response.body); final data = await jsonDecode(response.body);
@ -434,4 +437,37 @@ class NanoClient {
return []; return [];
} }
} }
Future<List<N2Node>> getN2Reps() async {
final response = await http.post(
Uri.parse(N2_REPS_ENDPOINT),
headers: CAKE_HEADERS,
body: jsonEncode({"action": "reps"}),
);
try {
final List<N2Node> nodes = (json.decode(response.body) as List<dynamic>)
.map((dynamic e) => N2Node.fromJson(e as Map<String, dynamic>))
.toList();
return nodes;
} catch (error) {
return [];
}
}
Future<int> getRepScore(String rep) async {
final response = await http.post(
Uri.parse(N2_REPS_ENDPOINT),
headers: CAKE_HEADERS,
body: jsonEncode({
"action": "rep_info",
"account": rep,
}),
);
try {
final N2Node node = N2Node.fromJson(json.decode(response.body) as Map<String, dynamic>);
return node.score ?? 100;
} catch (error) {
return 100;
}
}
} }

View file

@ -13,6 +13,7 @@ import 'package:cw_core/transaction_priority.dart';
import 'package:cw_core/wallet_info.dart'; import 'package:cw_core/wallet_info.dart';
import 'package:cw_nano/file.dart'; import 'package:cw_nano/file.dart';
import 'package:cw_core/nano_account.dart'; import 'package:cw_core/nano_account.dart';
import 'package:cw_core/n2_node.dart';
import 'package:cw_nano/nano_balance.dart'; import 'package:cw_nano/nano_balance.dart';
import 'package:cw_nano/nano_client.dart'; import 'package:cw_nano/nano_client.dart';
import 'package:cw_nano/nano_transaction_credentials.dart'; import 'package:cw_nano/nano_transaction_credentials.dart';
@ -65,9 +66,11 @@ abstract class NanoWalletBase
String? _privateKey; String? _privateKey;
String? _publicAddress; String? _publicAddress;
String? _hexSeed; String? _hexSeed;
Timer? _receiveTimer;
String? _representativeAddress; String? _representativeAddress;
Timer? _receiveTimer; int repScore = 100;
bool get isRepOk => repScore >= 90;
late final NanoClient _client; late final NanoClient _client;
bool _isTransactionUpdating; bool _isTransactionUpdating;
@ -375,7 +378,7 @@ abstract class NanoWalletBase
final data = json.decode(jsonSource) as Map; final data = json.decode(jsonSource) as Map;
final mnemonic = data['mnemonic'] as String; final mnemonic = data['mnemonic'] as String;
final balance = NanoBalance.fromRawString( final balance = NanoBalance.fromRawString(
currentBalance: data['currentBalance'] as String? ?? "0", currentBalance: data['currentBalance'] as String? ?? "0",
receivableBalance: data['receivableBalance'] as String? ?? "0", receivableBalance: data['receivableBalance'] as String? ?? "0",
@ -429,6 +432,8 @@ abstract class NanoWalletBase
_representativeAddress = await _client.getRepFromPrefs(); _representativeAddress = await _client.getRepFromPrefs();
throw Exception("Failed to get representative address $e"); throw Exception("Failed to get representative address $e");
} }
repScore = await _client.getRepScore(_representativeAddress!);
} }
Future<void> regenerateAddress() async { Future<void> regenerateAddress() async {
@ -465,6 +470,10 @@ abstract class NanoWalletBase
} }
} }
Future<List<N2Node>> getN2Reps() async {
return _client.getN2Reps();
}
Future<void>? updateBalance() async => await _updateBalance(); Future<void>? updateBalance() async => await _updateBalance();
@override @override

View file

@ -533,4 +533,21 @@ class SolanaWalletClient {
throw Exception(e); throw Exception(e);
} }
} }
Future<String?> getIconImageFromTokenUri(String uri) async {
try {
final response = await httpClient.get(Uri.parse(uri));
final jsonResponse = json.decode(response.body) as Map<String, dynamic>;
if (response.statusCode >= 200 && response.statusCode < 300) {
return jsonResponse['image'];
} else {
return null;
}
} catch (e) {
print('Error occurred while fetching token image: \n${e.toString()}');
return null;
}
}
} }

View file

@ -464,11 +464,17 @@ abstract class SolanaWalletBase
return null; return null;
} }
String? iconPath;
try {
iconPath = await _client.getIconImageFromTokenUri(token.uri);
} catch (_) {}
return SPLToken.fromMetadata( return SPLToken.fromMetadata(
name: token.name, name: token.name,
mint: token.mint, mint: token.mint,
symbol: token.symbol, symbol: token.symbol,
mintAddress: mintAddress, mintAddress: mintAddress,
iconPath: iconPath,
); );
} catch (e) { } catch (e) {
return null; return null;

View file

@ -55,6 +55,7 @@ class SPLToken extends CryptoCurrency with HiveObjectMixin {
required String mint, required String mint,
required String symbol, required String symbol,
required String mintAddress, required String mintAddress,
String? iconPath
}) { }) {
return SPLToken( return SPLToken(
name: name, name: name,
@ -62,7 +63,7 @@ class SPLToken extends CryptoCurrency with HiveObjectMixin {
mintAddress: mintAddress, mintAddress: mintAddress,
decimal: 0, decimal: 0,
mint: mint, mint: mint,
iconPath: '', iconPath: iconPath,
); );
} }

View file

@ -155,7 +155,7 @@ class MoonPayProvider extends BuyProvider {
'baseCurrencyAmount': amount ?? '0', 'baseCurrencyAmount': amount ?? '0',
'currencyCode': currencyCode, 'currencyCode': currencyCode,
'walletAddress': walletAddress, 'walletAddress': walletAddress,
'lockAmount': 'true', 'lockAmount': 'false',
'showAllCurrencies': 'false', 'showAllCurrencies': 'false',
'showWalletAddressForm': 'false', 'showWalletAddressForm': 'false',
'enabledPaymentMethods': 'enabledPaymentMethods':
@ -256,44 +256,44 @@ class MoonPayProvider extends BuyProvider {
@override @override
Future<void> launchProvider(BuildContext context, bool? isBuyAction) async { Future<void> launchProvider(BuildContext context, bool? isBuyAction) async {
// try { try {
late final Uri uri; late final Uri uri;
if (isBuyAction ?? true) { if (isBuyAction ?? true) {
uri = await requestBuyMoonPayUrl( uri = await requestBuyMoonPayUrl(
currency: wallet.currency, currency: wallet.currency,
walletAddress: wallet.walletAddresses.address, walletAddress: wallet.walletAddresses.address,
settingsStore: _settingsStore, settingsStore: _settingsStore,
); );
} else {
uri = await requestSellMoonPayUrl(
currency: wallet.currency,
refundWalletAddress: wallet.walletAddresses.address,
settingsStore: _settingsStore,
);
}
if (await canLaunchUrl(uri)) {
if (DeviceInfo.instance.isMobile) {
Navigator.of(context).pushNamed(Routes.webViewPage, arguments: ['MoonPay', uri]);
} else { } else {
await launchUrl(uri, mode: LaunchMode.externalApplication); uri = await requestSellMoonPayUrl(
currency: wallet.currency,
refundWalletAddress: wallet.walletAddresses.address,
settingsStore: _settingsStore,
);
} }
} else {
throw Exception('Could not launch URL'); if (await canLaunchUrl(uri)) {
if (DeviceInfo.instance.isMobile) {
Navigator.of(context).pushNamed(Routes.webViewPage, arguments: ['MoonPay', uri]);
} else {
await launchUrl(uri, mode: LaunchMode.externalApplication);
}
} else {
throw Exception('Could not launch URL');
}
} catch (e) {
await showDialog<void>(
context: context,
builder: (BuildContext context) {
return AlertWithOneAction(
alertTitle: 'MoonPay',
alertContent: 'The MoonPay service is currently unavailable: $e',
buttonText: S.of(context).ok,
buttonAction: () => Navigator.of(context).pop(),
);
},
);
} }
// } catch (e) {
// await showDialog<void>(
// context: context,
// builder: (BuildContext context) {
// return AlertWithOneAction(
// alertTitle: 'MoonPay',
// alertContent: 'The MoonPay service is currently unavailable: $e',
// buttonText: S.of(context).ok,
// buttonAction: () => Navigator.of(context).pop(),
// );
// },
// );
// }
} }
String _normalizeCurrency(CryptoCurrency currency) { String _normalizeCurrency(CryptoCurrency currency) {

View file

@ -8,3 +8,8 @@ class NodeAddressValidator extends TextValidator {
pattern: pattern:
'^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\$|^[0-9a-zA-Z.\-]+\$'); '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\$|^[0-9a-zA-Z.\-]+\$');
} }
class NodePathValidator extends TextValidator {
NodePathValidator()
: super(errorMessage: S.current.error_text_node_address, pattern: '^([/0-9a-zA-Z.\-]+)?\$');
}

View file

@ -2,8 +2,8 @@ import 'solana_chain_service.dart';
enum SolanaChainId { enum SolanaChainId {
mainnet, mainnet,
testnet, // testnet,
devnet, // devnet,
} }
extension SolanaChainIdX on SolanaChainId { extension SolanaChainIdX on SolanaChainId {
@ -13,13 +13,16 @@ extension SolanaChainIdX on SolanaChainId {
switch (this) { switch (this) {
case SolanaChainId.mainnet: case SolanaChainId.mainnet:
name = '4sGjMW1sUnHzSxGspuhpqLDx6wiyjNtZ'; name = '4sGjMW1sUnHzSxGspuhpqLDx6wiyjNtZ';
// solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp
break; break;
case SolanaChainId.testnet: // case SolanaChainId.devnet:
name = '8E9rvCKLFQia2Y35HXjjpWzj8weVo44K'; // name = '8E9rvCKLFQia2Y35HXjjpWzj8weVo44K';
break; // // solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1
case SolanaChainId.devnet: // break;
name = ''; // case SolanaChainId.testnet:
break; // name = '';
// // solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z
// break;
} }
return '${SolanaChainServiceImpl.namespace}:$name'; return '${SolanaChainServiceImpl.namespace}:$name';

View file

@ -43,7 +43,7 @@ class SolanaChainServiceImpl implements ChainService {
SolanaClient( SolanaClient(
rpcUrl: rpcUrl, rpcUrl: rpcUrl,
websocketUrl: Uri.parse(webSocketUrl), websocketUrl: Uri.parse(webSocketUrl),
timeout: const Duration(minutes: 2), timeout: const Duration(minutes: 5),
) { ) {
for (final String event in getEvents()) { for (final String event in getEvents()) {
wallet.registerEventEmitter(chainId: getChainId(), event: event); wallet.registerEventEmitter(chainId: getChainId(), event: event);
@ -72,7 +72,7 @@ class SolanaChainServiceImpl implements ChainService {
@override @override
List<String> getEvents() { List<String> getEvents() {
return ['']; return ['chainChanged', 'accountsChanged'];
} }
Future<String?> requestAuthorization(String? text) async { Future<String?> requestAuthorization(String? text) async {
@ -100,8 +100,7 @@ class SolanaChainServiceImpl implements ChainService {
Future<String> solanaSignTransaction(String topic, dynamic parameters) async { Future<String> solanaSignTransaction(String topic, dynamic parameters) async {
log('received solana sign transaction request $parameters'); log('received solana sign transaction request $parameters');
final solanaSignTx = final solanaSignTx = SolanaSignTransaction.fromJson(parameters as Map<String, dynamic>);
SolanaSignTransaction.fromJson(parameters as Map<String, dynamic>);
final String? authError = await requestAuthorization('Confirm request to sign transaction?'); final String? authError = await requestAuthorization('Confirm request to sign transaction?');
@ -122,10 +121,13 @@ class SolanaChainServiceImpl implements ChainService {
return ''; return '';
} }
String signature = sign.signatures.first.toBase58(); String signature = await solanaClient.sendAndConfirmTransaction(
message: message,
signers: [ownerKeyPair!],
commitment: Commitment.confirmed,
);
print(signature); print(signature);
print(signature.runtimeType);
bottomSheetService.queueBottomSheet( bottomSheetService.queueBottomSheet(
isModalDismissible: true, isModalDismissible: true,

View file

@ -1,10 +1,12 @@
import 'dart:async'; import 'dart:async';
import 'dart:convert';
import 'dart:developer'; import 'dart:developer';
import 'dart:typed_data'; import 'dart:typed_data';
import 'package:cake_wallet/core/wallet_connect/chain_service/eth/evm_chain_id.dart'; import 'package:cake_wallet/core/wallet_connect/chain_service/eth/evm_chain_id.dart';
import 'package:cake_wallet/core/wallet_connect/chain_service/eth/evm_chain_service.dart'; import 'package:cake_wallet/core/wallet_connect/chain_service/eth/evm_chain_service.dart';
import 'package:cake_wallet/core/wallet_connect/wallet_connect_key_service.dart'; import 'package:cake_wallet/core/wallet_connect/wallet_connect_key_service.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/core/wallet_connect/models/auth_request_model.dart'; import 'package:cake_wallet/core/wallet_connect/models/auth_request_model.dart';
import 'package:cake_wallet/core/wallet_connect/models/chain_key_model.dart'; import 'package:cake_wallet/core/wallet_connect/models/chain_key_model.dart';
@ -19,6 +21,7 @@ import 'package:cw_core/wallet_type.dart';
import 'package:eth_sig_util/eth_sig_util.dart'; import 'package:eth_sig_util/eth_sig_util.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mobx/mobx.dart'; import 'package:mobx/mobx.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:walletconnect_flutter_v2/walletconnect_flutter_v2.dart'; import 'package:walletconnect_flutter_v2/walletconnect_flutter_v2.dart';
import 'chain_service/solana/solana_chain_id.dart'; import 'chain_service/solana/solana_chain_id.dart';
@ -32,6 +35,7 @@ class Web3WalletService = Web3WalletServiceBase with _$Web3WalletService;
abstract class Web3WalletServiceBase with Store { abstract class Web3WalletServiceBase with Store {
final AppStore appStore; final AppStore appStore;
final SharedPreferences sharedPreferences;
final BottomSheetService _bottomSheetHandler; final BottomSheetService _bottomSheetHandler;
final WalletConnectKeyService walletKeyService; final WalletConnectKeyService walletKeyService;
@ -52,7 +56,8 @@ abstract class Web3WalletServiceBase with Store {
@observable @observable
ObservableList<StoredCacao> auth; ObservableList<StoredCacao> auth;
Web3WalletServiceBase(this._bottomSheetHandler, this.walletKeyService, this.appStore) Web3WalletServiceBase(
this._bottomSheetHandler, this.walletKeyService, this.appStore, this.sharedPreferences)
: pairings = ObservableList<PairingInfo>(), : pairings = ObservableList<PairingInfo>(),
sessions = ObservableList<SessionData>(), sessions = ObservableList<SessionData>(),
auth = ObservableList<StoredCacao>(), auth = ObservableList<StoredCacao>(),
@ -133,13 +138,27 @@ abstract class Web3WalletServiceBase with Store {
if (appStore.wallet!.type == WalletType.solana) { if (appStore.wallet!.type == WalletType.solana) {
for (final cId in SolanaChainId.values) { for (final cId in SolanaChainId.values) {
final node = appStore.settingsStore.getCurrentNode(appStore.wallet!.type); final node = appStore.settingsStore.getCurrentNode(appStore.wallet!.type);
final rpcUri = node.uri;
final webSocketUri = 'wss://${node.uriRaw}/ws${node.uri.path}'; Uri? rpcUri;
String webSocketUrl;
bool isModifiedNodeUri = false;
if (node.uriRaw == 'rpc.ankr.com') {
isModifiedNodeUri = true;
//A better way to handle this instead of adding this to the general secrets?
String ankrApiKey = secrets.ankrApiKey;
rpcUri = Uri.https(node.uriRaw, '/solana/$ankrApiKey');
webSocketUrl = 'wss://${node.uriRaw}/solana/ws/$ankrApiKey';
} else {
webSocketUrl = 'wss://${node.uriRaw}';
}
SolanaChainServiceImpl( SolanaChainServiceImpl(
reference: cId, reference: cId,
rpcUrl: rpcUri, rpcUrl: isModifiedNodeUri ? rpcUri! : node.uri,
webSocketUrl: webSocketUri, webSocketUrl: webSocketUrl,
wcKeyService: walletKeyService, wcKeyService: walletKeyService,
bottomSheetService: _bottomSheetHandler, bottomSheetService: _bottomSheetHandler,
wallet: _web3Wallet, wallet: _web3Wallet,
@ -177,13 +196,6 @@ abstract class Web3WalletServiceBase with Store {
_refreshPairings(); _refreshPairings();
} }
@action
void _refreshPairings() {
pairings.clear();
final allPairings = _web3Wallet.pairings.getAll();
pairings.addAll(allPairings);
}
Future<void> _onSessionProposalError(SessionProposalErrorEvent? args) async { Future<void> _onSessionProposalError(SessionProposalErrorEvent? args) async {
log(args.toString()); log(args.toString());
} }
@ -246,14 +258,37 @@ abstract class Web3WalletServiceBase with Store {
} }
} }
@action
void _refreshPairings() {
print('Refreshing pairings');
pairings.clear();
final allPairings = _web3Wallet.pairings.getAll();
final keyForWallet = getKeyForStoringTopicsForWallet();
final currentTopicsForWallet = getPairingTopicsForWallet(keyForWallet);
final filteredPairings =
allPairings.where((pairing) => currentTopicsForWallet.contains(pairing.topic)).toList();
pairings.addAll(filteredPairings);
}
void _onPairingCreate(PairingEvent? args) { void _onPairingCreate(PairingEvent? args) {
log('Pairing Create Event: $args'); log('Pairing Create Event: $args');
} }
@action @action
void _onSessionConnect(SessionConnect? args) { Future<void> _onSessionConnect(SessionConnect? args) async {
if (args != null) { if (args != null) {
log('Session Connected $args');
await savePairingTopicToLocalStorage(args.session.pairingTopic);
sessions.add(args.session); sessions.add(args.session);
_refreshPairings();
} }
} }
@ -321,4 +356,53 @@ abstract class Web3WalletServiceBase with Store {
List<SessionData> getSessionsForPairingInfo(PairingInfo pairing) { List<SessionData> getSessionsForPairingInfo(PairingInfo pairing) {
return sessions.where((element) => element.pairingTopic == pairing.topic).toList(); return sessions.where((element) => element.pairingTopic == pairing.topic).toList();
} }
String getKeyForStoringTopicsForWallet() {
List<ChainKeyModel> chainKeys = walletKeyService.getKeysForChain(appStore.wallet!);
final keyForPairingTopic =
PreferencesKey.walletConnectPairingTopicsListForWallet(chainKeys.first.publicKey);
return keyForPairingTopic;
}
List<String> getPairingTopicsForWallet(String key) {
// Get the JSON-encoded string from shared preferences
final jsonString = sharedPreferences.getString(key);
// If the string is null, return an empty list
if (jsonString == null) {
return [];
}
// Decode the JSON string to a list of strings
final List<dynamic> jsonList = jsonDecode(jsonString) as List<dynamic>;
// Cast each item to a string
return jsonList.map((item) => item as String).toList();
}
Future<void> savePairingTopicToLocalStorage(String pairingTopic) async {
// Get key specific to the current wallet
final key = getKeyForStoringTopicsForWallet();
// Get all pairing topics attached to this key
final pairingTopicsForWallet = getPairingTopicsForWallet(key);
print(pairingTopicsForWallet);
bool isPairingTopicAlreadySaved = pairingTopicsForWallet.contains(pairingTopic);
print('Is Pairing Topic Saved: $isPairingTopicAlreadySaved');
if (!isPairingTopicAlreadySaved) {
// Update the list with the most recent pairing topic
pairingTopicsForWallet.add(pairingTopic);
// Convert the list of updated pairing topics to a JSON-encoded string
final jsonString = jsonEncode(pairingTopicsForWallet);
// Save the encoded string to shared preferences
await sharedPreferences.setString(key, jsonString);
}
}
} }

View file

@ -493,6 +493,7 @@ Future<void> setup({
getIt.get<BottomSheetService>(), getIt.get<BottomSheetService>(),
getIt.get<WalletConnectKeyService>(), getIt.get<WalletConnectKeyService>(),
appStore, appStore,
getIt.get<SharedPreferences>()
); );
web3WalletService.create(); web3WalletService.create();
return web3WalletService; return web3WalletService;

View file

@ -216,6 +216,10 @@ Future<void> defaultSettingsMigration(
await disableServiceStatusFiatDisabled(sharedPreferences); await disableServiceStatusFiatDisabled(sharedPreferences);
break; break;
case 31:
await updateNanoNodeList(nodes: nodes);
break;
default: default:
break; break;
} }
@ -230,9 +234,35 @@ Future<void> defaultSettingsMigration(
await sharedPreferences.setInt(PreferencesKey.currentDefaultSettingsMigrationVersion, version); await sharedPreferences.setInt(PreferencesKey.currentDefaultSettingsMigrationVersion, version);
} }
Future<void> updateNanoNodeList({required Box<Node> nodes}) async {
final nodeList = await loadDefaultNanoNodes();
var listOfNewEndpoints = <String>[
"app.natrium.io",
"rainstorm.city",
"node.somenano.com",
"nanoslo.0x.no",
"www.bitrequest.app",
];
// add new nodes:
for (final node in nodeList) {
if (listOfNewEndpoints.contains(node.uriRaw)) {
await nodes.add(node);
}
}
// update the nautilus node:
final nautilusNode =
nodes.values.firstWhereOrNull((element) => element.uriRaw == "node.perish.co");
if (nautilusNode != null) {
nautilusNode.uriRaw = "node.nautilus.io";
nautilusNode.path = "/api";
nautilusNode.useSSL = true;
await nautilusNode.save();
}
}
Future<void> disableServiceStatusFiatDisabled(SharedPreferences sharedPreferences) async { Future<void> disableServiceStatusFiatDisabled(SharedPreferences sharedPreferences) async {
final currentFiat = final currentFiat = await sharedPreferences.getInt(PreferencesKey.currentFiatApiModeKey) ?? -1;
await sharedPreferences.getInt(PreferencesKey.currentFiatApiModeKey) ?? -1;
if (currentFiat == -1 || currentFiat == FiatApiMode.enabled.raw) { if (currentFiat == -1 || currentFiat == FiatApiMode.enabled.raw) {
return; return;
} }

View file

@ -45,6 +45,7 @@ class PreferencesKey {
static const customBitcoinFeeRate = 'custom_electrum_fee_rate'; static const customBitcoinFeeRate = 'custom_electrum_fee_rate';
static const shouldShowReceiveWarning = 'should_show_receive_warning'; static const shouldShowReceiveWarning = 'should_show_receive_warning';
static const shouldShowYatPopup = 'should_show_yat_popup'; static const shouldShowYatPopup = 'should_show_yat_popup';
static const shouldShowRepWarning = 'should_show_rep_warning';
static const moneroWalletPasswordUpdateV1Base = 'monero_wallet_update_v1'; static const moneroWalletPasswordUpdateV1Base = 'monero_wallet_update_v1';
static const syncModeKey = 'sync_mode'; static const syncModeKey = 'sync_mode';
static const syncAllKey = 'sync_all'; static const syncAllKey = 'sync_all';
@ -75,4 +76,7 @@ class PreferencesKey {
static const shouldShowMarketPlaceInDashboard = 'should_show_marketplace_in_dashboard'; static const shouldShowMarketPlaceInDashboard = 'should_show_marketplace_in_dashboard';
static const isNewInstall = 'is_new_install'; static const isNewInstall = 'is_new_install';
static const serviceStatusShaKey = 'service_status_sha_key'; static const serviceStatusShaKey = 'service_status_sha_key';
static const walletConnectPairingTopicsList = 'wallet_connect_pairing_topics_list';
static String walletConnectPairingTopicsListForWallet(String publicKey) =>
'${PreferencesKey.walletConnectPairingTopicsList}_${publicKey}';
} }

View file

@ -131,7 +131,7 @@ class CWEthereum extends Ethereum {
@override @override
Future<Erc20Token?> getErc20Token(WalletBase wallet, String contractAddress) async { Future<Erc20Token?> getErc20Token(WalletBase wallet, String contractAddress) async {
final ethereumWallet = wallet as EthereumWallet; final ethereumWallet = wallet as EthereumWallet;
return await ethereumWallet.getErc20Token(contractAddress); return await ethereumWallet.getErc20Token(contractAddress, 'eth');
} }
@override @override

View file

@ -32,7 +32,17 @@ class TrocadorExchangeProvider extends ExchangeProvider {
'Exolix', 'Exolix',
'Godex', 'Godex',
'Exch', 'Exch',
'CoinCraddle' 'CoinCraddle',
'Alfacash',
'LocalMonero',
'XChange',
'NeroSwap',
'Changee',
'BitcoinVN',
'EasyBit',
'WizardSwap',
'Quantex',
'SwapSpace',
]; ];
static const List<CryptoCurrency> _notSupported = [ static const List<CryptoCurrency> _notSupported = [

View file

@ -163,7 +163,7 @@ Future<void> initializeAppConfigs() async {
transactionDescriptions: transactionDescriptions, transactionDescriptions: transactionDescriptions,
secureStorage: secureStorage, secureStorage: secureStorage,
anonpayInvoiceInfo: anonpayInvoiceInfo, anonpayInvoiceInfo: anonpayInvoiceInfo,
initialMigrationVersion: 30, initialMigrationVersion: 31,
); );
} }

View file

@ -186,6 +186,16 @@ class CWNano extends Nano {
String getRepresentative(Object wallet) { String getRepresentative(Object wallet) {
return (wallet as NanoWallet).representative; return (wallet as NanoWallet).representative;
} }
@override
Future<List<N2Node>> getN2Reps(Object wallet) async {
return (wallet as NanoWallet).getN2Reps();
}
@override
bool isRepOk(Object wallet) {
return (wallet as NanoWallet).isRepOk;
}
} }
class CWNanoUtil extends NanoUtil { class CWNanoUtil extends NanoUtil {

View file

@ -129,7 +129,7 @@ class CWPolygon extends Polygon {
@override @override
Future<Erc20Token?> getErc20Token(WalletBase wallet, String contractAddress) async { Future<Erc20Token?> getErc20Token(WalletBase wallet, String contractAddress) async {
final polygonWallet = wallet as PolygonWallet; final polygonWallet = wallet as PolygonWallet;
return await polygonWallet.getErc20Token(contractAddress); return await polygonWallet.getErc20Token(contractAddress, 'polygon');
} }
@override @override

View file

@ -16,6 +16,7 @@ bool isWalletConnectCompatibleChain(WalletType walletType) {
switch (walletType) { switch (walletType) {
case WalletType.polygon: case WalletType.polygon:
case WalletType.ethereum: case WalletType.ethereum:
case WalletType.solana:
return true; return true;
default: default:
return false; return false;

View file

@ -86,6 +86,7 @@ class CWSolana extends Solana {
decimal: token.decimals, decimal: token.decimals,
mint: token.name.toUpperCase(), mint: token.name.toUpperCase(),
enabled: token.enabled, enabled: token.enabled,
iconPath: token.iconPath,
); );
await (wallet as SolanaWallet).addSPLToken(splToken); await (wallet as SolanaWallet).addSPLToken(splToken);

View file

@ -51,14 +51,25 @@ class DashboardPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final screenHeight = MediaQuery.of(context).size.height;
return Scaffold( return Scaffold(
body: Observer( body: Observer(
builder: (_) { builder: (_) {
final dashboardPageView = _DashboardPageView( final dashboardPageView = RefreshIndicator(
balancePage: balancePage, displacement: screenHeight * 0.1,
bottomSheetService: bottomSheetService, onRefresh: () async => await dashboardViewModel.refreshDashboard(),
dashboardViewModel: dashboardViewModel, child: SingleChildScrollView(
addressListViewModel: addressListViewModel, physics: AlwaysScrollableScrollPhysics(),
child: Container(
height: screenHeight,
child: _DashboardPageView(
balancePage: balancePage,
bottomSheetService: bottomSheetService,
dashboardViewModel: dashboardViewModel,
addressListViewModel: addressListViewModel,
),
),
),
); );
if (DeviceInfo.instance.isDesktop) { if (DeviceInfo.instance.isDesktop) {
@ -106,10 +117,10 @@ class _DashboardPageView extends BasePage {
Widget leading(BuildContext context) { Widget leading(BuildContext context) {
return Observer( return Observer(
builder: (context) { builder: (context) {
if (dashboardViewModel.isEnabledBulletinAction) { return ServicesUpdatesWidget(
return ServicesUpdatesWidget(dashboardViewModel.getServicesStatus()); dashboardViewModel.getServicesStatus(),
} enabled: dashboardViewModel.isEnabledBulletinAction,
return const SizedBox(); );
}, },
); );
} }

View file

@ -107,7 +107,10 @@ class DesktopSidebarWrapper extends BasePage {
: unselectedIconPath, : unselectedIconPath,
), ),
SideMenuItem( SideMenuItem(
widget: ServicesUpdatesWidget(dashboardViewModel.getServicesStatus()), widget: ServicesUpdatesWidget(
dashboardViewModel.getServicesStatus(),
enabled: dashboardViewModel.isEnabledBulletinAction,
),
isSelected: desktopSidebarViewModel.currentPage == SidebarItem.status, isSelected: desktopSidebarViewModel.currentPage == SidebarItem.status,
onTap: () {}, onTap: () {},
), ),

View file

@ -59,6 +59,7 @@ class _EditTokenPageBodyState extends State<EditTokenPageBody> {
final TextEditingController _tokenNameController = TextEditingController(); final TextEditingController _tokenNameController = TextEditingController();
final TextEditingController _tokenSymbolController = TextEditingController(); final TextEditingController _tokenSymbolController = TextEditingController();
final TextEditingController _tokenDecimalController = TextEditingController(); final TextEditingController _tokenDecimalController = TextEditingController();
final TextEditingController _tokenIconPathController = TextEditingController();
final FocusNode _contractAddressFocusNode = FocusNode(); final FocusNode _contractAddressFocusNode = FocusNode();
final FocusNode _tokenNameFocusNode = FocusNode(); final FocusNode _tokenNameFocusNode = FocusNode();
@ -83,6 +84,7 @@ class _EditTokenPageBodyState extends State<EditTokenPageBody> {
_tokenNameController.text = widget.token!.name; _tokenNameController.text = widget.token!.name;
_tokenSymbolController.text = widget.token!.title; _tokenSymbolController.text = widget.token!.title;
_tokenDecimalController.text = widget.token!.decimals.toString(); _tokenDecimalController.text = widget.token!.decimals.toString();
_tokenIconPathController.text = widget.token?.iconPath ?? '';
} }
if (widget.initialContractAddress != null) { if (widget.initialContractAddress != null) {
@ -200,6 +202,7 @@ class _EditTokenPageBodyState extends State<EditTokenPageBody> {
name: _tokenNameController.text, name: _tokenNameController.text,
title: _tokenSymbolController.text.toUpperCase(), title: _tokenSymbolController.text.toUpperCase(),
decimals: int.parse(_tokenDecimalController.text), decimals: int.parse(_tokenDecimalController.text),
iconPath: _tokenIconPathController.text,
), ),
contractAddress: _contractAddressController.text, contractAddress: _contractAddressController.text,
); );
@ -228,6 +231,8 @@ class _EditTokenPageBodyState extends State<EditTokenPageBody> {
if (token != null) { if (token != null) {
if (_tokenNameController.text.isEmpty) _tokenNameController.text = token.name; if (_tokenNameController.text.isEmpty) _tokenNameController.text = token.name;
if (_tokenSymbolController.text.isEmpty) _tokenSymbolController.text = token.title; if (_tokenSymbolController.text.isEmpty) _tokenSymbolController.text = token.title;
if (_tokenIconPathController.text.isEmpty)
_tokenIconPathController.text = token.iconPath ?? '';
if (_tokenDecimalController.text.isEmpty) if (_tokenDecimalController.text.isEmpty)
_tokenDecimalController.text = token.decimals.toString(); _tokenDecimalController.text = token.decimals.toString();
} }
@ -305,10 +310,15 @@ class _EditTokenPageBodyState extends State<EditTokenPageBody> {
if (text?.isEmpty ?? true) { if (text?.isEmpty ?? true) {
return S.of(context).field_required; return S.of(context).field_required;
} }
if (int.tryParse(text!) == null) { if (int.tryParse(text!) == null) {
return S.of(context).invalid_input; return S.of(context).invalid_input;
} }
if (int.tryParse(text) == 0) {
return S.current.decimals_cannot_be_zero;
}
return null; return null;
}, },
), ),

View file

@ -129,25 +129,29 @@ class HomeSettingsPage extends BasePage {
'token': token, 'token': token,
}); });
}, },
leading: CakeImageWidget( leading: Container(
imageUrl: token.iconPath, clipBehavior: Clip.hardEdge,
height: 40, decoration: BoxDecoration(shape: BoxShape.circle),
width: 40, child: CakeImageWidget(
displayOnError: Container( imageUrl: token.iconPath,
height: 30.0, height: 40,
width: 30.0, width: 40,
child: Center( displayOnError: Container(
child: Text( height: 30.0,
token.title.substring(0, min(token.title.length, 2)), width: 30.0,
style: TextStyle(fontSize: 11), child: Center(
), child: Text(
), token.title.substring(0, min(token.title.length, 2)),
decoration: BoxDecoration( style: TextStyle(fontSize: 11),
shape: BoxShape.circle,
color: Colors.grey.shade400,
), ),
),
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.grey.shade400,
),
),
), ),
), ),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Theme.of(context).cardColor, color: Theme.of(context).cardColor,
borderRadius: BorderRadius.circular(30), borderRadius: BorderRadius.circular(30),

View file

@ -163,12 +163,7 @@ class AddressPage extends BasePage {
if (addressListViewModel.hasAddressList) { if (addressListViewModel.hasAddressList) {
return SelectButton( return SelectButton(
text: addressListViewModel.buttonTitle, text: addressListViewModel.buttonTitle,
onTap: () async => dashboardViewModel.isAutoGenerateSubaddressesEnabled && onTap: () async => Navigator.of(context).pushNamed(Routes.receive),
(WalletType.monero == addressListViewModel.wallet.type ||
WalletType.haven == addressListViewModel.wallet.type)
? await showPopUp<void>(
context: context, builder: (_) => getIt.get<MoneroAccountListPage>())
: Navigator.of(context).pushNamed(Routes.receive),
textColor: Theme.of(context).extension<SyncIndicatorTheme>()!.textColor, textColor: Theme.of(context).extension<SyncIndicatorTheme>()!.textColor,
color: Theme.of(context).extension<SyncIndicatorTheme>()!.syncedBackgroundColor, color: Theme.of(context).extension<SyncIndicatorTheme>()!.syncedBackgroundColor,
borderColor: Theme.of(context).extension<BalancePageTheme>()!.cardBorderColor, borderColor: Theme.of(context).extension<BalancePageTheme>()!.cardBorderColor,
@ -176,17 +171,11 @@ class AddressPage extends BasePage {
textSize: 14, textSize: 14,
height: 50, height: 50,
); );
} else if (dashboardViewModel.isAutoGenerateSubaddressesEnabled || }
addressListViewModel.isElectrumWallet) { else {
return Text(S.of(context).electrum_address_disclaimer,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 15,
color: Theme.of(context).extension<BalancePageTheme>()!.labelTextColor));
} else {
return const SizedBox(); return const SizedBox();
} }
}) }),
], ],
), ),
)); ));

View file

@ -8,6 +8,7 @@ import 'package:cake_wallet/src/screens/dashboard/pages/nft_listing_page.dart';
import 'package:cake_wallet/src/screens/dashboard/widgets/home_screen_account_widget.dart'; import 'package:cake_wallet/src/screens/dashboard/widgets/home_screen_account_widget.dart';
import 'package:cake_wallet/src/widgets/cake_image_widget.dart'; import 'package:cake_wallet/src/widgets/cake_image_widget.dart';
import 'package:cake_wallet/src/screens/exchange_trade/information_page.dart'; import 'package:cake_wallet/src/screens/exchange_trade/information_page.dart';
import 'package:cake_wallet/src/widgets/dashboard_card_widget.dart';
import 'package:cake_wallet/src/widgets/introducing_card.dart'; import 'package:cake_wallet/src/widgets/introducing_card.dart';
import 'package:cake_wallet/store/settings_store.dart'; import 'package:cake_wallet/store/settings_store.dart';
import 'package:cake_wallet/themes/extensions/balance_page_theme.dart'; import 'package:cake_wallet/themes/extensions/balance_page_theme.dart';
@ -183,6 +184,22 @@ class CryptoBalanceWidget extends StatelessWidget {
return Container(); return Container();
}, },
), ),
Observer(builder: (_) {
if (!dashboardViewModel.showRepWarning) {
return const SizedBox();
}
return Padding(
padding: const EdgeInsets.fromLTRB(16, 0, 16, 8),
child: DashBoardRoundedCardWidget(
title: S.current.rep_warning,
subTitle: S.current.rep_warning_sub,
onTap: () => Navigator.of(context).pushNamed(Routes.changeRep),
onClose: () {
dashboardViewModel.settingsStore.shouldShowRepWarning = false;
},
),
);
}),
Observer( Observer(
builder: (_) { builder: (_) {
return ListView.separated( return ListView.separated(
@ -323,7 +340,7 @@ class BalanceRowWidget extends StatelessWidget {
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
fontFamily: 'Lato', fontFamily: 'Lato',
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Theme.of(context).extension<BalancePageTheme>()!.textColor, color: Theme.of(context).extension<BalancePageTheme>()!.textColor,
height: 1)), height: 1)),
], ],
@ -334,24 +351,28 @@ class BalanceRowWidget extends StatelessWidget {
child: Center( child: Center(
child: Column( child: Column(
children: [ children: [
CakeImageWidget( Container(
imageUrl: currency.iconPath, clipBehavior: Clip.antiAlias,
height: 40, decoration: BoxDecoration(shape: BoxShape.circle),
width: 40, child: CakeImageWidget(
displayOnError: Container( imageUrl: currency.iconPath,
height: 30.0, height: 40,
width: 30.0, width: 40,
child: Center( displayOnError: Container(
child: Text( height: 30.0,
currency.title.substring(0, min(currency.title.length, 2)), width: 30.0,
style: TextStyle(fontSize: 11), child: Center(
), child: Text(
), currency.title.substring(0, min(currency.title.length, 2)),
decoration: BoxDecoration( style: TextStyle(fontSize: 11),
shape: BoxShape.circle,
color: Colors.grey.shade400,
), ),
), ),
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.grey.shade400,
),
),
),
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
Text( Text(
@ -410,9 +431,7 @@ class BalanceRowWidget extends StatelessWidget {
fontSize: 20, fontSize: 20,
fontFamily: 'Lato', fontFamily: 'Lato',
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: Theme.of(context) color: Theme.of(context).extension<BalancePageTheme>()!.balanceAmountColor,
.extension<BalancePageTheme>()!
.balanceAmountColor,
height: 1, height: 1,
), ),
maxLines: 1, maxLines: 1,

View file

@ -2,6 +2,7 @@ import 'package:cake_wallet/src/screens/dashboard/widgets/anonpay_transaction_ro
import 'package:cake_wallet/src/screens/dashboard/widgets/order_row.dart'; import 'package:cake_wallet/src/screens/dashboard/widgets/order_row.dart';
import 'package:cake_wallet/themes/extensions/placeholder_theme.dart'; import 'package:cake_wallet/themes/extensions/placeholder_theme.dart';
import 'package:cake_wallet/src/widgets/dashboard_card_widget.dart'; import 'package:cake_wallet/src/widgets/dashboard_card_widget.dart';
import 'package:cake_wallet/utils/device_info.dart';
import 'package:cake_wallet/utils/responsive_layout_util.dart'; import 'package:cake_wallet/utils/responsive_layout_util.dart';
import 'package:cake_wallet/view_model/dashboard/anonpay_transaction_list_item.dart'; import 'package:cake_wallet/view_model/dashboard/anonpay_transaction_list_item.dart';
import 'package:cake_wallet/view_model/dashboard/order_list_item.dart'; import 'package:cake_wallet/view_model/dashboard/order_list_item.dart';
@ -20,6 +21,7 @@ import 'package:cake_wallet/view_model/dashboard/date_section_item.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/generated/i18n.dart';
import 'package:url_launcher/url_launcher.dart';
class TransactionsPage extends StatelessWidget { class TransactionsPage extends StatelessWidget {
TransactionsPage({required this.dashboardViewModel}); TransactionsPage({required this.dashboardViewModel});
@ -46,11 +48,17 @@ class TransactionsPage extends StatelessWidget {
return Padding( return Padding(
padding: const EdgeInsets.fromLTRB(24, 0, 24, 8), padding: const EdgeInsets.fromLTRB(24, 0, 24, 8),
child: DashBoardRoundedCardWidget( child: DashBoardRoundedCardWidget(
onTap: () => Navigator.of(context).pushNamed(Routes.webViewPage, arguments: [ onTap: () {
'', try {
Uri.parse( final uri = Uri.parse(
'https://guides.cakewallet.com/docs/FAQ/why_are_my_funds_not_appearing/') "https://guides.cakewallet.com/docs/FAQ/why_are_my_funds_not_appearing/");
]), if (DeviceInfo.instance.isMobile) {
Navigator.of(context).pushNamed(Routes.webViewPage, arguments: ['', uri]);
} else {
launchUrl(uri);
}
} catch (_) {}
},
title: S.of(context).syncing_wallet_alert_title, title: S.of(context).syncing_wallet_alert_title,
subTitle: S.of(context).syncing_wallet_alert_content, subTitle: S.of(context).syncing_wallet_alert_content,
), ),

View file

@ -5,10 +5,12 @@ 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/settings_store.dart'; import 'package:cake_wallet/store/settings_store.dart';
import 'package:cake_wallet/themes/extensions/address_theme.dart'; import 'package:cake_wallet/themes/extensions/address_theme.dart';
import 'package:cake_wallet/themes/extensions/cake_text_theme.dart';
import 'package:cake_wallet/utils/payment_request.dart'; import 'package:cake_wallet/utils/payment_request.dart';
import 'package:cake_wallet/utils/show_pop_up.dart'; import 'package:cake_wallet/utils/show_pop_up.dart';
import 'package:cw_core/crypto_currency.dart'; import 'package:cw_core/crypto_currency.dart';
import 'package:cw_core/wallet_base.dart'; import 'package:cw_core/wallet_base.dart';
import 'package:cw_core/n2_node.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/generated/i18n.dart';
@ -21,9 +23,7 @@ class NanoChangeRepPage extends BasePage {
: _wallet = wallet, : _wallet = wallet,
_settingsStore = settingsStore, _settingsStore = settingsStore,
_addressController = TextEditingController(), _addressController = TextEditingController(),
_formKey = GlobalKey<FormState>() { _formKey = GlobalKey<FormState>() {}
_addressController.text = nano!.getRepresentative(wallet);
}
final TextEditingController _addressController; final TextEditingController _addressController;
final WalletBase _wallet; final WalletBase _wallet;
@ -34,105 +34,314 @@ class NanoChangeRepPage extends BasePage {
@override @override
String get title => S.current.change_rep; String get title => S.current.change_rep;
N2Node getCurrentRepNode(List<N2Node> nodes) {
final currentRepAccount = nano!.getRepresentative(_wallet);
final currentNode = nodes.firstWhere(
(node) => node.account == currentRepAccount,
orElse: () => N2Node(
account: currentRepAccount,
alias: currentRepAccount,
score: 0,
uptime: "???",
weight: 0,
),
);
return currentNode;
}
@override @override
Widget body(BuildContext context) { Widget body(BuildContext context) {
return Form( return Form(
key: _formKey, key: _formKey,
child: Container( child: FutureBuilder(
padding: EdgeInsets.only(left: 24, right: 24), future: nano!.getN2Reps(_wallet),
child: ScrollableWithBottomSection( builder: (context, snapshot) {
contentPadding: EdgeInsets.only(bottom: 24.0), if (snapshot.data == null) {
content: Container( return SizedBox();
child: Column( }
children: <Widget>[
Row( return Container(
children: <Widget>[ padding: EdgeInsets.only(left: 24, right: 24),
Expanded( child: ScrollableWithBottomSection(
child: AddressTextField( topSectionPadding: EdgeInsets.only(bottom: 24),
controller: _addressController, topSection: Column(
onURIScanned: (uri) { children: [
final paymentRequest = PaymentRequest.fromUri(uri); Row(
_addressController.text = paymentRequest.address; children: <Widget>[
}, Expanded(
options: [ child: AddressTextField(
AddressTextFieldOption.paste, controller: _addressController,
AddressTextFieldOption.qrCode, onURIScanned: (uri) {
], final paymentRequest = PaymentRequest.fromUri(uri);
buttonColor: Theme.of(context).extension<AddressTheme>()!.actionButtonColor, _addressController.text = paymentRequest.address;
validator: AddressValidator(type: CryptoCurrency.nano), },
options: [
AddressTextFieldOption.paste,
AddressTextFieldOption.qrCode,
],
buttonColor:
Theme.of(context).extension<AddressTheme>()!.actionButtonColor,
validator: AddressValidator(type: CryptoCurrency.nano),
),
)
],
),
Column(
children: [
Container(
margin: EdgeInsets.only(top: 12),
child: Text(
S.current.nano_current_rep,
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w700,
),
),
), ),
) _buildSingleRepresentative(
], context,
getCurrentRepNode(snapshot.data as List<N2Node>),
isList: false,
),
Divider(height: 20),
Container(
margin: EdgeInsets.only(top: 12),
child: Text(
S.current.nano_pick_new_rep,
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w700,
),
),
),
],
),
],
),
contentPadding: EdgeInsets.only(bottom: 24),
content: Container(
child: Column(
children: _getRepresentativeWidgets(context, snapshot.data as List<N2Node>),
),
),
bottomSectionPadding: EdgeInsets.only(bottom: 24),
bottomSection: Observer(
builder: (_) => Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Flexible(
child: Container(
padding: EdgeInsets.only(right: 8.0),
child: LoadingPrimaryButton(
onPressed: () => _onSubmit(context),
text: S.of(context).change,
color: Theme.of(context).primaryColor,
textColor: Colors.white,
),
)),
],
)),
),
);
},
),
);
}
Future<void> _onSubmit(BuildContext context) async {
if (_formKey.currentState != null && !_formKey.currentState!.validate()) {
return;
}
final confirmed = await showPopUp<bool>(
context: context,
builder: (BuildContext context) {
return AlertWithTwoActions(
alertTitle: S.of(context).change_rep,
alertContent: S.of(context).change_rep_message,
rightButtonText: S.of(context).change,
leftButtonText: S.of(context).cancel,
actionRightButton: () => Navigator.pop(context, true),
actionLeftButton: () => Navigator.pop(context, false));
}) ??
false;
if (confirmed) {
try {
_settingsStore.defaultNanoRep = _addressController.text;
await nano!.changeRep(_wallet, _addressController.text);
// reset this flag whenever we successfully change reps:
_settingsStore.shouldShowRepWarning = true;
await showPopUp<void>(
context: context,
builder: (BuildContext context) {
return AlertWithOneAction(
alertTitle: S.of(context).successful,
alertContent: S.of(context).change_rep_successful,
buttonText: S.of(context).ok,
buttonAction: () => Navigator.pop(context));
});
} catch (e) {
await showPopUp<void>(
context: context,
builder: (BuildContext context) {
return AlertWithOneAction(
alertTitle: S.of(context).error,
alertContent: e.toString(),
buttonText: S.of(context).ok,
buttonAction: () => Navigator.pop(context));
});
throw e;
}
}
}
List<Widget> _getRepresentativeWidgets(BuildContext context, List<N2Node>? list) {
if (list == null) {
return [];
}
final List<Widget> ret = [];
for (final N2Node node in list) {
if (node.alias != null && node.alias!.trim().isNotEmpty) {
ret.add(_buildSingleRepresentative(context, node));
}
}
return ret;
}
Widget _buildSingleRepresentative(BuildContext context, N2Node rep, {bool isList = true}) {
return Column(
children: <Widget>[
if (isList)
Divider(
height: 2,
),
TextButton(
style: TextButton.styleFrom(
padding: EdgeInsets.zero,
),
onPressed: () async {
if (!isList) {
return;
}
_addressController.text = rep.account!;
},
child: Container(
margin: const EdgeInsets.symmetric(vertical: 20),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Container(
margin: const EdgeInsetsDirectional.only(start: 24),
width: MediaQuery.of(context).size.width * 0.50,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
_sanitizeAlias(rep.alias),
style: TextStyle(
color: Theme.of(context).extension<CakeTextTheme>()!.titleColor,
fontWeight: FontWeight.w700,
fontSize: 18,
),
),
Container(
margin: const EdgeInsets.only(top: 7),
child: RichText(
text: TextSpan(
text: "${S.current.voting_weight}: ${rep.weight.toString()}%",
style: TextStyle(
color:
Theme.of(context).extension<CakeTextTheme>()!.secondaryTextColor,
fontWeight: FontWeight.w700,
fontSize: 14.0,
),
),
),
),
Container(
margin: const EdgeInsets.only(top: 4),
child: RichText(
text: TextSpan(
text: '',
children: [
TextSpan(
text: "${S.current.uptime}: ",
style: TextStyle(
color: Theme.of(context)
.extension<CakeTextTheme>()!
.secondaryTextColor,
fontWeight: FontWeight.w700,
fontSize: 14,
),
),
TextSpan(
text: rep.uptime,
style: TextStyle(
color: Theme.of(context)
.extension<CakeTextTheme>()!
.secondaryTextColor,
fontWeight: FontWeight.w900,
fontSize: 14,
),
),
],
),
),
),
],
),
),
Container(
margin: const EdgeInsetsDirectional.only(end: 24, start: 14),
child: Stack(
children: <Widget>[
Icon(
Icons.verified,
color: Theme.of(context).primaryColor,
size: 50,
),
Positioned.fill(
child: Container(
margin: EdgeInsets.all(13),
color: Theme.of(context).primaryColor,
),
),
Container(
alignment: const AlignmentDirectional(-0.03, 0.03),
width: 50,
height: 50,
child: Text(
(rep.score).toString(),
textAlign: TextAlign.center,
style: TextStyle(
color: Theme.of(context).extension<CakeTextTheme>()!.titleColor,
fontSize: 13,
fontWeight: FontWeight.w800,
),
),
),
],
),
), ),
], ],
), ),
), ),
bottomSectionPadding: EdgeInsets.only(bottom: 24),
bottomSection: Observer(
builder: (_) => Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Flexible(
child: Container(
padding: EdgeInsets.only(right: 8.0),
child: LoadingPrimaryButton(
onPressed: () async {
if (_formKey.currentState != null &&
!_formKey.currentState!.validate()) {
return;
}
final confirmed = await showPopUp<bool>(
context: context,
builder: (BuildContext context) {
return AlertWithTwoActions(
alertTitle: S.of(context).change_rep,
alertContent: S.of(context).change_rep_message,
rightButtonText: S.of(context).change,
leftButtonText: S.of(context).cancel,
actionRightButton: () => Navigator.pop(context, true),
actionLeftButton: () => Navigator.pop(context, false));
}) ??
false;
if (confirmed) {
try {
_settingsStore.defaultNanoRep = _addressController.text;
await nano!.changeRep(_wallet, _addressController.text);
await showPopUp<void>(
context: context,
builder: (BuildContext context) {
return AlertWithOneAction(
alertTitle: S.of(context).successful,
alertContent: S.of(context).change_rep_successful,
buttonText: S.of(context).ok,
buttonAction: () => Navigator.pop(context));
});
} catch (e) {
await showPopUp<void>(
context: context,
builder: (BuildContext context) {
return AlertWithOneAction(
alertTitle: S.of(context).error,
alertContent: e.toString(),
buttonText: S.of(context).ok,
buttonAction: () => Navigator.pop(context));
});
throw e;
}
}
},
text: S.of(context).change,
color: Theme.of(context).primaryColor,
textColor: Colors.white,
),
)),
],
)),
), ),
), ],
); );
} }
String _sanitizeAlias(String? alias) {
if (alias != null) {
return alias.replaceAll(RegExp(r'[^a-zA-Z_.!?_;:-]'), '');
}
return '';
}
} }

View file

@ -18,6 +18,7 @@ class NodeCreateOrEditPage extends BasePage {
NodeCreateOrEditPage({required this.nodeCreateOrEditViewModel,this.editingNode, this.isSelected}) NodeCreateOrEditPage({required this.nodeCreateOrEditViewModel,this.editingNode, this.isSelected})
: _formKey = GlobalKey<FormState>(), : _formKey = GlobalKey<FormState>(),
_addressController = TextEditingController(), _addressController = TextEditingController(),
_pathController = TextEditingController(),
_portController = TextEditingController(), _portController = TextEditingController(),
_loginController = TextEditingController(), _loginController = TextEditingController(),
_passwordController = TextEditingController() { _passwordController = TextEditingController() {
@ -49,6 +50,8 @@ class NodeCreateOrEditPage extends BasePage {
_addressController.addListener( _addressController.addListener(
() => nodeCreateOrEditViewModel.address = _addressController.text); () => nodeCreateOrEditViewModel.address = _addressController.text);
_pathController.addListener(
() => nodeCreateOrEditViewModel.path = _pathController.text);
_portController.addListener( _portController.addListener(
() => nodeCreateOrEditViewModel.port = _portController.text); () => nodeCreateOrEditViewModel.port = _portController.text);
_loginController.addListener( _loginController.addListener(
@ -59,6 +62,7 @@ class NodeCreateOrEditPage extends BasePage {
final GlobalKey<FormState> _formKey; final GlobalKey<FormState> _formKey;
final TextEditingController _addressController; final TextEditingController _addressController;
final TextEditingController _pathController;
final TextEditingController _portController; final TextEditingController _portController;
final TextEditingController _loginController; final TextEditingController _loginController;
final TextEditingController _passwordController; final TextEditingController _passwordController;

View file

@ -16,13 +16,15 @@ class NodeForm extends StatelessWidget {
required this.formKey, required this.formKey,
this.editingNode, this.editingNode,
}) : _addressController = TextEditingController(text: editingNode?.uri.host.toString()), }) : _addressController = TextEditingController(text: editingNode?.uri.host.toString()),
_pathController = TextEditingController(text: editingNode?.path.toString()),
_portController = TextEditingController(text: editingNode?.uri.port.toString()), _portController = TextEditingController(text: editingNode?.uri.port.toString()),
_loginController = TextEditingController(text: editingNode?.login), _loginController = TextEditingController(text: editingNode?.login),
_passwordController = TextEditingController(text: editingNode?.password), _passwordController = TextEditingController(text: editingNode?.password),
_socksAddressController = TextEditingController(text: editingNode?.socksProxyAddress){ _socksAddressController = TextEditingController(text: editingNode?.socksProxyAddress) {
if (editingNode != null) { if (editingNode != null) {
nodeViewModel nodeViewModel
..setAddress((editingNode!.uri.host.toString())) ..setAddress((editingNode!.uri.host.toString()))
..setPath((editingNode!.path.toString()))
..setPort((editingNode!.uri.port.toString())) ..setPort((editingNode!.uri.port.toString()))
..setPassword((editingNode!.password ?? '')) ..setPassword((editingNode!.password ?? ''))
..setLogin((editingNode!.login ?? '')) ..setLogin((editingNode!.login ?? ''))
@ -57,10 +59,12 @@ class NodeForm extends StatelessWidget {
}); });
_addressController.addListener(() => nodeViewModel.address = _addressController.text); _addressController.addListener(() => nodeViewModel.address = _addressController.text);
_pathController.addListener(() => nodeViewModel.path = _pathController.text);
_portController.addListener(() => nodeViewModel.port = _portController.text); _portController.addListener(() => nodeViewModel.port = _portController.text);
_loginController.addListener(() => nodeViewModel.login = _loginController.text); _loginController.addListener(() => nodeViewModel.login = _loginController.text);
_passwordController.addListener(() => nodeViewModel.password = _passwordController.text); _passwordController.addListener(() => nodeViewModel.password = _passwordController.text);
_socksAddressController.addListener(() => nodeViewModel.socksProxyAddress = _socksAddressController.text); _socksAddressController
.addListener(() => nodeViewModel.socksProxyAddress = _socksAddressController.text);
} }
final NodeCreateOrEditViewModel nodeViewModel; final NodeCreateOrEditViewModel nodeViewModel;
@ -68,6 +72,7 @@ class NodeForm extends StatelessWidget {
final Node? editingNode; final Node? editingNode;
final TextEditingController _addressController; final TextEditingController _addressController;
final TextEditingController _pathController;
final TextEditingController _portController; final TextEditingController _portController;
final TextEditingController _loginController; final TextEditingController _loginController;
final TextEditingController _passwordController; final TextEditingController _passwordController;
@ -91,6 +96,18 @@ class NodeForm extends StatelessWidget {
], ],
), ),
SizedBox(height: 10.0), SizedBox(height: 10.0),
Row(
children: <Widget>[
Expanded(
child: BaseTextFormField(
controller: _pathController,
hintText: "/path",
validator: NodePathValidator(),
),
)
],
),
SizedBox(height: 10.0),
Row( Row(
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
@ -103,6 +120,26 @@ class NodeForm extends StatelessWidget {
], ],
), ),
SizedBox(height: 10.0), SizedBox(height: 10.0),
Padding(
padding: EdgeInsets.only(top: 20),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
mainAxisSize: MainAxisSize.max,
children: [
Observer(
builder: (_) => StandardCheckbox(
value: nodeViewModel.useSSL,
gradientBackground: true,
borderColor: Theme.of(context).dividerColor,
iconColor: Colors.white,
onChanged: (value) => nodeViewModel.useSSL = value,
caption: S.of(context).use_ssl,
),
)
],
),
),
SizedBox(height: 10.0),
if (nodeViewModel.hasAuthCredentials) ...[ if (nodeViewModel.hasAuthCredentials) ...[
Row( Row(
children: <Widget>[ children: <Widget>[
@ -123,25 +160,6 @@ class NodeForm extends StatelessWidget {
)) ))
], ],
), ),
Padding(
padding: EdgeInsets.only(top: 20),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
mainAxisSize: MainAxisSize.max,
children: [
Observer(
builder: (_) => StandardCheckbox(
value: nodeViewModel.useSSL,
gradientBackground: true,
borderColor: Theme.of(context).dividerColor,
iconColor: Colors.white,
onChanged: (value) => nodeViewModel.useSSL = value,
caption: S.of(context).use_ssl,
),
)
],
),
),
Padding( Padding(
padding: EdgeInsets.only(top: 20), padding: EdgeInsets.only(top: 20),
child: Row( child: Row(
@ -163,44 +181,44 @@ class NodeForm extends StatelessWidget {
), ),
Observer( Observer(
builder: (_) => Column( builder: (_) => Column(
children: [ children: [
Padding( Padding(
padding: EdgeInsets.only(top: 20), padding: EdgeInsets.only(top: 20),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
children: [ children: [
StandardCheckbox( StandardCheckbox(
value: nodeViewModel.useSocksProxy, value: nodeViewModel.useSocksProxy,
gradientBackground: true, gradientBackground: true,
borderColor: Theme.of(context).dividerColor, borderColor: Theme.of(context).dividerColor,
iconColor: Colors.white, iconColor: Colors.white,
onChanged: (value) { onChanged: (value) {
if (!value) { if (!value) {
_socksAddressController.text = ''; _socksAddressController.text = '';
} }
nodeViewModel.useSocksProxy = value; nodeViewModel.useSocksProxy = value;
}, },
caption: 'SOCKS Proxy', caption: 'SOCKS Proxy',
), ),
], ],
), ),
), ),
if (nodeViewModel.useSocksProxy) ...[ if (nodeViewModel.useSocksProxy) ...[
SizedBox(height: 10.0), SizedBox(height: 10.0),
Row( Row(
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
child: BaseTextFormField( child: BaseTextFormField(
controller: _socksAddressController, controller: _socksAddressController,
hintText: '[<ip>:]<port>', hintText: '[<ip>:]<port>',
validator: SocksProxyNodeAddressValidator(), validator: SocksProxyNodeAddressValidator(),
)) ))
], ],
), ),
] ]
], ],
)), )),
] ]
], ],
), ),

View file

@ -99,12 +99,7 @@ class ReceivePage extends BasePage {
@override @override
Widget body(BuildContext context) { Widget body(BuildContext context) {
final isElectrumWallet = addressListViewModel.isElectrumWallet; return KeyboardActions(
return (addressListViewModel.type == WalletType.monero ||
addressListViewModel.type == WalletType.haven ||
addressListViewModel.type == WalletType.nano ||
isElectrumWallet)
? KeyboardActions(
config: KeyboardActionsConfig( config: KeyboardActionsConfig(
keyboardActionsPlatform: KeyboardActionsPlatform.IOS, keyboardActionsPlatform: KeyboardActionsPlatform.IOS,
keyboardBarColor: Theme.of(context).extension<KeyboardTheme>()!.keyboardBarColor, keyboardBarColor: Theme.of(context).extension<KeyboardTheme>()!.keyboardBarColor,
@ -213,32 +208,6 @@ class ReceivePage extends BasePage {
})), })),
], ],
), ),
)) ));
: Padding(
padding: EdgeInsets.fromLTRB(24, 24, 24, 32),
child: Column(
children: [
Expanded(
flex: 7,
child: QRWidget(
formKey: _formKey,
heroTag: _heroTag,
addressListViewModel: addressListViewModel,
amountTextFieldFocusNode: _cryptoAmountFocus,
amountController: _amountController,
isLight: currentTheme.type == ThemeType.light),
),
Expanded(
flex: 2,
child: SizedBox(),
),
Text(S.of(context).electrum_address_disclaimer,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 15,
color: Theme.of(context).extension<BalancePageTheme>()!.labelTextColor)),
],
),
);
} }
} }

View file

@ -1,5 +1,6 @@
import 'package:auto_size_text/auto_size_text.dart'; import 'package:auto_size_text/auto_size_text.dart';
import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/utils/responsive_layout_util.dart';
import 'package:cake_wallet/view_model/wallet_address_list/wallet_address_list_item.dart'; import 'package:cake_wallet/view_model/wallet_address_list/wallet_address_list_item.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_slidable/flutter_slidable.dart'; import 'package:flutter_slidable/flutter_slidable.dart';
@ -81,41 +82,45 @@ class AddressCell extends StatelessWidget {
child: Column( child: Column(
children: [ children: [
Row( Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: name.isNotEmpty ? MainAxisAlignment.spaceBetween : MainAxisAlignment.center,
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
children: [ children: [
if (isChange) Row(
Padding( children: [
padding: const EdgeInsets.only(right: 8.0), if (isChange)
child: Container( Padding(
height: 20, padding: const EdgeInsets.only(right: 8.0),
padding: EdgeInsets.all(4), child: Container(
decoration: BoxDecoration( height: 20,
borderRadius: BorderRadius.all(Radius.circular(8.5)), padding: EdgeInsets.all(4),
color: textColor), decoration: BoxDecoration(
alignment: Alignment.center, borderRadius: BorderRadius.all(Radius.circular(8.5)),
child: Text( color: textColor),
S.of(context).unspent_change, alignment: Alignment.center,
style: TextStyle( child: Text(
color: backgroundColor, S.of(context).unspent_change,
fontSize: 10, style: TextStyle(
fontWeight: FontWeight.w600, color: backgroundColor,
fontSize: 10,
fontWeight: FontWeight.w600,
),
),
), ),
), ),
), if (name.isNotEmpty)
), Text(
if (name.isNotEmpty) '$name',
Text( style: TextStyle(
'$name - ', fontSize: 14,
style: TextStyle( fontWeight: FontWeight.w600,
fontSize: 14, color: textColor,
fontWeight: FontWeight.w600, ),
color: textColor, ),
), ],
), ),
Flexible( Flexible(
child: AutoSizeText( child: AutoSizeText(
formattedAddress, responsiveLayoutUtil.shouldRenderTabletUI ? address : formattedAddress,
maxLines: 1, maxLines: 1,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
style: TextStyle( style: TextStyle(

View file

@ -55,7 +55,9 @@ class PrivacyPage extends BasePage {
}), }),
if (_privacySettingsViewModel.isAutoGenerateSubaddressesVisible) if (_privacySettingsViewModel.isAutoGenerateSubaddressesVisible)
SettingsSwitcherCell( SettingsSwitcherCell(
title: S.current.auto_generate_subaddresses, title: _privacySettingsViewModel.isMoneroWallet
? S.current.auto_generate_subaddresses
: S.current.auto_generate_addresses,
value: _privacySettingsViewModel.isAutoGenerateSubaddressesEnabled, value: _privacySettingsViewModel.isAutoGenerateSubaddressesEnabled,
onValueChange: (BuildContext _, bool value) { onValueChange: (BuildContext _, bool value) {
_privacySettingsViewModel.setAutoGenerateSubaddresses(value); _privacySettingsViewModel.setAutoGenerateSubaddresses(value);

View file

@ -30,7 +30,7 @@ class PairingItemWidget extends StatelessWidget {
leading: CakeImageWidget( leading: CakeImageWidget(
imageUrl: metadata.icons.isNotEmpty ? metadata.icons[0]: null, imageUrl: metadata.icons.isNotEmpty ? metadata.icons[0]: null,
displayOnError: CircleAvatar( displayOnError: CircleAvatar(
backgroundImage: AssetImage('assets/images/default_icon.png'), backgroundImage: AssetImage('assets/images/walletconnect_logo.png'),
), ),
), ),
title: Text( title: Text(

View file

@ -18,7 +18,7 @@ class CakeImageWidget extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
try { try {
if (imageUrl == null) return _displayOnError!; if (imageUrl == null || imageUrl!.isEmpty) return _displayOnError!;
if (imageUrl!.contains('assets/images')) { if (imageUrl!.contains('assets/images')) {
return Image.asset( return Image.asset(

View file

@ -4,15 +4,15 @@ import 'package:flutter/material.dart';
import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart'; import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart';
class DashBoardRoundedCardWidget extends StatelessWidget { class DashBoardRoundedCardWidget extends StatelessWidget {
DashBoardRoundedCardWidget({ DashBoardRoundedCardWidget({
required this.onTap, required this.onTap,
required this.title, required this.title,
required this.subTitle, required this.subTitle,
this.onClose,
}); });
final VoidCallback onTap; final VoidCallback onTap;
final VoidCallback? onClose;
final String title; final String title;
final String subTitle; final String subTitle;
@ -26,7 +26,7 @@ class DashBoardRoundedCardWidget extends StatelessWidget {
child: Stack( child: Stack(
children: [ children: [
Container( Container(
padding: EdgeInsets.all(20), padding: EdgeInsets.fromLTRB(20, 20, 40, 20),
width: double.infinity, width: double.infinity,
decoration: BoxDecoration( decoration: BoxDecoration(
color: Theme.of(context).extension<SyncIndicatorTheme>()!.syncedBackgroundColor, color: Theme.of(context).extension<SyncIndicatorTheme>()!.syncedBackgroundColor,
@ -35,32 +35,40 @@ class DashBoardRoundedCardWidget extends StatelessWidget {
color: Theme.of(context).extension<BalancePageTheme>()!.cardBorderColor, color: Theme.of(context).extension<BalancePageTheme>()!.cardBorderColor,
), ),
), ),
child: child: Column(
Column( crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, children: [
children: [ Text(
Text( title,
title, style: TextStyle(
style: TextStyle( color: Theme.of(context).extension<DashboardPageTheme>()!.cardTextColor,
color: Theme.of(context).extension<DashboardPageTheme>()!.cardTextColor, fontSize: 24,
fontSize: 24, fontWeight: FontWeight.w900,
fontWeight: FontWeight.w900, ),
),
),
SizedBox(height: 5),
Text(
subTitle,
style: TextStyle(
color: Theme.of(context).extension<DashboardPageTheme>()!.cardTextColor,
fontWeight: FontWeight.w500,
fontFamily: 'Lato'),
)
],
), ),
SizedBox(height: 5),
Text(
subTitle,
style: TextStyle(
color: Theme.of(context).extension<DashboardPageTheme>()!.cardTextColor,
fontWeight: FontWeight.w500,
fontFamily: 'Lato'),
)
],
),
), ),
if (onClose != null)
Positioned(
top: 10,
right: 10,
child: IconButton(
icon: Icon(Icons.close),
onPressed: onClose,
color: Theme.of(context).extension<DashboardPageTheme>()!.cardTextColor,
),
),
], ],
), ),
); );
} }
} }

View file

@ -2,16 +2,21 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class ScrollableWithBottomSection extends StatefulWidget { class ScrollableWithBottomSection extends StatefulWidget {
ScrollableWithBottomSection( ScrollableWithBottomSection({
{required this.content, required this.content,
required this.bottomSection, required this.bottomSection,
this.contentPadding, this.topSection,
this.bottomSectionPadding}); this.contentPadding,
this.bottomSectionPadding,
this.topSectionPadding,
});
final Widget content; final Widget content;
final Widget bottomSection; final Widget bottomSection;
final Widget? topSection;
final EdgeInsets? contentPadding; final EdgeInsets? contentPadding;
final EdgeInsets? bottomSectionPadding; final EdgeInsets? bottomSectionPadding;
final EdgeInsets? topSectionPadding;
@override @override
ScrollableWithBottomSectionState createState() => ScrollableWithBottomSectionState(); ScrollableWithBottomSectionState createState() => ScrollableWithBottomSectionState();
@ -22,6 +27,12 @@ class ScrollableWithBottomSectionState extends State<ScrollableWithBottomSection
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Column( return Column(
children: [ children: [
if (widget.topSection != null)
Padding(
padding: widget.topSectionPadding?.copyWith(top: 10) ??
EdgeInsets.only(top: 10, bottom: 20, right: 20, left: 20),
child: widget.topSection,
),
Expanded( Expanded(
child: SingleChildScrollView( child: SingleChildScrollView(
child: Padding( child: Padding(

View file

@ -1,10 +1,13 @@
import 'package:cake_wallet/di.dart'; 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/entities/service_status.dart'; import 'package:cake_wallet/entities/service_status.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
import 'package:cake_wallet/src/widgets/primary_button.dart'; import 'package:cake_wallet/src/widgets/primary_button.dart';
import 'package:cake_wallet/src/widgets/service_status_tile.dart'; import 'package:cake_wallet/src/widgets/service_status_tile.dart';
import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart'; import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart';
import 'package:cake_wallet/themes/extensions/wallet_list_theme.dart'; import 'package:cake_wallet/themes/extensions/wallet_list_theme.dart';
import 'package:cake_wallet/utils/show_pop_up.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
@ -12,8 +15,9 @@ import 'package:url_launcher/url_launcher.dart';
class ServicesUpdatesWidget extends StatefulWidget { class ServicesUpdatesWidget extends StatefulWidget {
final Future<ServicesResponse> servicesResponse; final Future<ServicesResponse> servicesResponse;
final bool enabled;
const ServicesUpdatesWidget(this.servicesResponse, {super.key}); const ServicesUpdatesWidget(this.servicesResponse, {super.key, required this.enabled});
@override @override
State<ServicesUpdatesWidget> createState() => _ServicesUpdatesWidgetState(); State<ServicesUpdatesWidget> createState() => _ServicesUpdatesWidgetState();
@ -24,6 +28,27 @@ class _ServicesUpdatesWidgetState extends State<ServicesUpdatesWidget> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (!widget.enabled) {
return InkWell(
onTap: () async {
await showPopUp<void>(
context: context,
builder: (BuildContext context) {
return AlertWithOneAction(
alertTitle: S.current.service_health_disabled,
alertContent: S.current.service_health_disabled_message,
buttonText: S.current.ok,
buttonAction: () => Navigator.of(context).pop(),
);
});
},
child: SvgPicture.asset(
"assets/images/notification_icon.svg",
color: Theme.of(context).extension<DashboardPageTheme>()!.pageTitleTextColor,
width: 30,
),
);
}
return Padding( return Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: FutureBuilder<ServicesResponse>( child: FutureBuilder<ServicesResponse>(

View file

@ -79,6 +79,7 @@ abstract class SettingsStoreBase with Store {
required Map<WalletType, Node> nodes, required Map<WalletType, Node> nodes,
required Map<WalletType, Node> powNodes, required Map<WalletType, Node> powNodes,
required this.shouldShowYatPopup, required this.shouldShowYatPopup,
required this.shouldShowRepWarning,
required this.isBitcoinBuyEnabled, required this.isBitcoinBuyEnabled,
required this.actionlistDisplayMode, required this.actionlistDisplayMode,
required this.pinTimeOutDuration, required this.pinTimeOutDuration,
@ -225,6 +226,9 @@ abstract class SettingsStoreBase with Store {
(bool shouldShowYatPopup) => (bool shouldShowYatPopup) =>
sharedPreferences.setBool(PreferencesKey.shouldShowYatPopup, shouldShowYatPopup)); sharedPreferences.setBool(PreferencesKey.shouldShowYatPopup, shouldShowYatPopup));
reaction((_) => shouldShowRepWarning,
(bool val) => sharedPreferences.setBool(PreferencesKey.shouldShowRepWarning, val));
defaultBuyProviders.observe((change) { defaultBuyProviders.observe((change) {
final String key = 'buyProvider_${change.key.toString()}'; final String key = 'buyProvider_${change.key.toString()}';
if (change.newValue != null) { if (change.newValue != null) {
@ -536,6 +540,9 @@ abstract class SettingsStoreBase with Store {
@observable @observable
bool shouldShowYatPopup; bool shouldShowYatPopup;
@observable
bool shouldShowRepWarning;
@observable @observable
bool shouldShowMarketPlaceInDashboard; bool shouldShowMarketPlaceInDashboard;
@ -878,6 +885,8 @@ abstract class SettingsStoreBase with Store {
final packageInfo = await PackageInfo.fromPlatform(); final packageInfo = await PackageInfo.fromPlatform();
final deviceName = await _getDeviceName() ?? ''; final deviceName = await _getDeviceName() ?? '';
final shouldShowYatPopup = sharedPreferences.getBool(PreferencesKey.shouldShowYatPopup) ?? true; final shouldShowYatPopup = sharedPreferences.getBool(PreferencesKey.shouldShowYatPopup) ?? true;
final shouldShowRepWarning =
sharedPreferences.getBool(PreferencesKey.shouldShowRepWarning) ?? true;
final generateSubaddresses = final generateSubaddresses =
sharedPreferences.getInt(PreferencesKey.autoGenerateSubaddressStatusKey); sharedPreferences.getInt(PreferencesKey.autoGenerateSubaddressStatusKey);
@ -1034,75 +1043,77 @@ abstract class SettingsStoreBase with Store {
''; '';
return SettingsStore( return SettingsStore(
secureStorage: secureStorage, secureStorage: secureStorage,
sharedPreferences: sharedPreferences, sharedPreferences: sharedPreferences,
initialShouldShowMarketPlaceInDashboard: shouldShowMarketPlaceInDashboard, initialShouldShowMarketPlaceInDashboard: shouldShowMarketPlaceInDashboard,
nodes: nodes, nodes: nodes,
powNodes: powNodes, powNodes: powNodes,
appVersion: packageInfo.version, appVersion: packageInfo.version,
deviceName: deviceName, deviceName: deviceName,
isBitcoinBuyEnabled: isBitcoinBuyEnabled, isBitcoinBuyEnabled: isBitcoinBuyEnabled,
initialFiatCurrency: currentFiatCurrency, initialFiatCurrency: currentFiatCurrency,
initialBalanceDisplayMode: currentBalanceDisplayMode, initialBalanceDisplayMode: currentBalanceDisplayMode,
initialSaveRecipientAddress: shouldSaveRecipientAddress, initialSaveRecipientAddress: shouldSaveRecipientAddress,
initialAutoGenerateSubaddressStatus: autoGenerateSubaddressStatus, initialAutoGenerateSubaddressStatus: autoGenerateSubaddressStatus,
initialMoneroSeedType: moneroSeedType, initialMoneroSeedType: moneroSeedType,
initialAppSecure: isAppSecure, initialAppSecure: isAppSecure,
initialDisableBuy: disableBuy, initialDisableBuy: disableBuy,
initialDisableSell: disableSell, initialDisableSell: disableSell,
initialDisableBulletin: disableBulletin, initialDisableBulletin: disableBulletin,
initialWalletListOrder: walletListOrder, initialWalletListOrder: walletListOrder,
initialWalletListAscending: walletListAscending, initialWalletListAscending: walletListAscending,
initialFiatMode: currentFiatApiMode, initialFiatMode: currentFiatApiMode,
initialAllowBiometricalAuthentication: allowBiometricalAuthentication, initialAllowBiometricalAuthentication: allowBiometricalAuthentication,
initialCake2FAPresetOptions: selectedCake2FAPreset, initialCake2FAPresetOptions: selectedCake2FAPreset,
initialUseTOTP2FA: useTOTP2FA, initialUseTOTP2FA: useTOTP2FA,
initialTotpSecretKey: totpSecretKey, initialTotpSecretKey: totpSecretKey,
initialFailedTokenTrial: tokenTrialNumber, initialFailedTokenTrial: tokenTrialNumber,
initialExchangeStatus: exchangeStatus, initialExchangeStatus: exchangeStatus,
initialTheme: savedTheme, initialTheme: savedTheme,
actionlistDisplayMode: actionListDisplayMode, actionlistDisplayMode: actionListDisplayMode,
initialPinLength: pinLength, initialPinLength: pinLength,
pinTimeOutDuration: pinCodeTimeOutDuration, pinTimeOutDuration: pinCodeTimeOutDuration,
seedPhraseLength: seedPhraseWordCount, seedPhraseLength: seedPhraseWordCount,
initialLanguageCode: savedLanguageCode, initialLanguageCode: savedLanguageCode,
sortBalanceBy: sortBalanceBy, sortBalanceBy: sortBalanceBy,
pinNativeTokenAtTop: pinNativeTokenAtTop, pinNativeTokenAtTop: pinNativeTokenAtTop,
useEtherscan: useEtherscan, useEtherscan: useEtherscan,
usePolygonScan: usePolygonScan, usePolygonScan: usePolygonScan,
defaultNanoRep: defaultNanoRep, defaultNanoRep: defaultNanoRep,
defaultBananoRep: defaultBananoRep, defaultBananoRep: defaultBananoRep,
lookupsTwitter: lookupsTwitter, lookupsTwitter: lookupsTwitter,
lookupsMastodon: lookupsMastodon, lookupsMastodon: lookupsMastodon,
lookupsYatService: lookupsYatService, lookupsYatService: lookupsYatService,
lookupsUnstoppableDomains: lookupsUnstoppableDomains, lookupsUnstoppableDomains: lookupsUnstoppableDomains,
lookupsOpenAlias: lookupsOpenAlias, lookupsOpenAlias: lookupsOpenAlias,
lookupsENS: lookupsENS, lookupsENS: lookupsENS,
customBitcoinFeeRate: customBitcoinFeeRate, customBitcoinFeeRate: customBitcoinFeeRate,
initialMoneroTransactionPriority: moneroTransactionPriority, initialMoneroTransactionPriority: moneroTransactionPriority,
initialBitcoinTransactionPriority: bitcoinTransactionPriority, initialBitcoinTransactionPriority: bitcoinTransactionPriority,
initialHavenTransactionPriority: havenTransactionPriority, initialHavenTransactionPriority: havenTransactionPriority,
initialLitecoinTransactionPriority: litecoinTransactionPriority, initialLitecoinTransactionPriority: litecoinTransactionPriority,
initialBitcoinCashTransactionPriority: bitcoinCashTransactionPriority, initialBitcoinCashTransactionPriority: bitcoinCashTransactionPriority,
initialShouldRequireTOTP2FAForAccessingWallet: shouldRequireTOTP2FAForAccessingWallet, initialShouldRequireTOTP2FAForAccessingWallet: shouldRequireTOTP2FAForAccessingWallet,
initialShouldRequireTOTP2FAForSendsToContact: shouldRequireTOTP2FAForSendsToContact, initialShouldRequireTOTP2FAForSendsToContact: shouldRequireTOTP2FAForSendsToContact,
initialShouldRequireTOTP2FAForSendsToNonContact: shouldRequireTOTP2FAForSendsToNonContact, initialShouldRequireTOTP2FAForSendsToNonContact: shouldRequireTOTP2FAForSendsToNonContact,
initialShouldRequireTOTP2FAForSendsToInternalWallets: initialShouldRequireTOTP2FAForSendsToInternalWallets:
shouldRequireTOTP2FAForSendsToInternalWallets, shouldRequireTOTP2FAForSendsToInternalWallets,
initialShouldRequireTOTP2FAForExchangesToInternalWallets: initialShouldRequireTOTP2FAForExchangesToInternalWallets:
shouldRequireTOTP2FAForExchangesToInternalWallets, shouldRequireTOTP2FAForExchangesToInternalWallets,
initialShouldRequireTOTP2FAForExchangesToExternalWallets: initialShouldRequireTOTP2FAForExchangesToExternalWallets:
shouldRequireTOTP2FAForExchangesToExternalWallets, shouldRequireTOTP2FAForExchangesToExternalWallets,
initialShouldRequireTOTP2FAForAddingContacts: shouldRequireTOTP2FAForAddingContacts, initialShouldRequireTOTP2FAForAddingContacts: shouldRequireTOTP2FAForAddingContacts,
initialShouldRequireTOTP2FAForCreatingNewWallets: shouldRequireTOTP2FAForCreatingNewWallets, initialShouldRequireTOTP2FAForCreatingNewWallets: shouldRequireTOTP2FAForCreatingNewWallets,
initialShouldRequireTOTP2FAForAllSecurityAndBackupSettings: initialShouldRequireTOTP2FAForAllSecurityAndBackupSettings:
shouldRequireTOTP2FAForAllSecurityAndBackupSettings, shouldRequireTOTP2FAForAllSecurityAndBackupSettings,
initialEthereumTransactionPriority: ethereumTransactionPriority, initialEthereumTransactionPriority: ethereumTransactionPriority,
initialPolygonTransactionPriority: polygonTransactionPriority, initialPolygonTransactionPriority: polygonTransactionPriority,
backgroundTasks: backgroundTasks, backgroundTasks: backgroundTasks,
initialSyncMode: savedSyncMode, initialSyncMode: savedSyncMode,
initialSyncAll: savedSyncAll, initialSyncAll: savedSyncAll,
shouldShowYatPopup: shouldShowYatPopup); shouldShowYatPopup: shouldShowYatPopup,
shouldShowRepWarning: shouldShowRepWarning,
);
} }
Future<void> reload({required Box<Node> nodeSource}) async { Future<void> reload({required Box<Node> nodeSource}) async {
@ -1198,6 +1209,8 @@ abstract class SettingsStoreBase with Store {
languageCode = sharedPreferences.getString(PreferencesKey.currentLanguageCode) ?? languageCode; languageCode = sharedPreferences.getString(PreferencesKey.currentLanguageCode) ?? languageCode;
shouldShowYatPopup = shouldShowYatPopup =
sharedPreferences.getBool(PreferencesKey.shouldShowYatPopup) ?? shouldShowYatPopup; sharedPreferences.getBool(PreferencesKey.shouldShowYatPopup) ?? shouldShowYatPopup;
shouldShowRepWarning =
sharedPreferences.getBool(PreferencesKey.shouldShowRepWarning) ?? shouldShowRepWarning;
sortBalanceBy = SortBalanceBy sortBalanceBy = SortBalanceBy
.values[sharedPreferences.getInt(PreferencesKey.sortBalanceBy) ?? sortBalanceBy.index]; .values[sharedPreferences.getInt(PreferencesKey.sortBalanceBy) ?? sortBalanceBy.index];
pinNativeTokenAtTop = sharedPreferences.getBool(PreferencesKey.pinNativeTokenAtTop) ?? true; pinNativeTokenAtTop = sharedPreferences.getBool(PreferencesKey.pinNativeTokenAtTop) ?? true;

View file

@ -46,6 +46,10 @@ abstract class ResponsiveLayoutUtilBase with Store, WidgetsBindingObserver {
(orientation == Orientation.portrait && screenWidth < screenHeight) || (orientation == Orientation.portrait && screenWidth < screenHeight) ||
(orientation == Orientation.landscape && screenWidth < screenHeight); (orientation == Orientation.landscape && screenWidth < screenHeight);
} }
bool get shouldRenderTabletUI {
return screenWidth > _kMobileThreshold && screenWidth < kDesktopMaxDashBoardWidthConstraint;
}
} }
_ResponsiveLayoutUtil _singletonResponsiveLayoutUtil = _ResponsiveLayoutUtil(); _ResponsiveLayoutUtil _singletonResponsiveLayoutUtil = _ResponsiveLayoutUtil();

View file

@ -11,6 +11,7 @@ import 'package:cake_wallet/entities/service_status.dart';
import 'package:cake_wallet/exchange/exchange_provider_description.dart'; import 'package:cake_wallet/exchange/exchange_provider_description.dart';
import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/monero/monero.dart'; import 'package:cake_wallet/monero/monero.dart';
import 'package:cake_wallet/nano/nano.dart';
import 'package:cake_wallet/store/anonpay/anonpay_transactions_store.dart'; import 'package:cake_wallet/store/anonpay/anonpay_transactions_store.dart';
import 'package:cake_wallet/store/app_store.dart'; import 'package:cake_wallet/store/app_store.dart';
import 'package:cake_wallet/store/dashboard/orders_store.dart'; import 'package:cake_wallet/store/dashboard/orders_store.dart';
@ -370,6 +371,18 @@ abstract class DashboardViewModelBase with Store {
@computed @computed
bool get hasPowNodes => wallet.type == WalletType.nano || wallet.type == WalletType.banano; bool get hasPowNodes => wallet.type == WalletType.nano || wallet.type == WalletType.banano;
bool get showRepWarning {
if (wallet.type != WalletType.nano) {
return false;
}
if (!settingsStore.shouldShowRepWarning) {
return false;
}
return !nano!.isRepOk(wallet);
}
Future<void> reconnect() async { Future<void> reconnect() async {
final node = appStore.settingsStore.getCurrentNode(wallet.type); final node = appStore.settingsStore.getCurrentNode(wallet.type);
await wallet.connectToNode(node: node); await wallet.connectToNode(node: node);
@ -534,4 +547,8 @@ abstract class DashboardViewModelBase with Store {
return ServicesResponse([], false, ''); return ServicesResponse([], false, '');
} }
} }
Future<void> refreshDashboard() async {
reconnect();
}
} }

View file

@ -54,6 +54,7 @@ abstract class HomeSettingsViewModelBase with Store {
symbol: token.title, symbol: token.title,
decimal: token.decimals, decimal: token.decimals,
contractAddress: contractAddress, contractAddress: contractAddress,
iconPath: token.iconPath,
); );
await ethereum!.addErc20Token(_balanceViewModel.wallet, erc20token); await ethereum!.addErc20Token(_balanceViewModel.wallet, erc20token);
@ -65,6 +66,7 @@ abstract class HomeSettingsViewModelBase with Store {
symbol: token.title, symbol: token.title,
decimal: token.decimals, decimal: token.decimals,
contractAddress: contractAddress, contractAddress: contractAddress,
iconPath: token.iconPath,
); );
await polygon!.addErc20Token(_balanceViewModel.wallet, polygonToken); await polygon!.addErc20Token(_balanceViewModel.wallet, polygonToken);
} }

View file

@ -12,16 +12,15 @@ import 'package:permission_handler/permission_handler.dart';
part 'node_create_or_edit_view_model.g.dart'; part 'node_create_or_edit_view_model.g.dart';
class NodeCreateOrEditViewModel = NodeCreateOrEditViewModelBase class NodeCreateOrEditViewModel = NodeCreateOrEditViewModelBase with _$NodeCreateOrEditViewModel;
with _$NodeCreateOrEditViewModel;
abstract class NodeCreateOrEditViewModelBase with Store { abstract class NodeCreateOrEditViewModelBase with Store {
NodeCreateOrEditViewModelBase( NodeCreateOrEditViewModelBase(this._nodeSource, this._walletType, this._settingsStore)
this._nodeSource, this._walletType, this._settingsStore)
: state = InitialExecutionState(), : state = InitialExecutionState(),
connectionState = InitialExecutionState(), connectionState = InitialExecutionState(),
useSSL = false, useSSL = false,
address = '', address = '',
path = '',
port = '', port = '',
login = '', login = '',
password = '', password = '',
@ -35,6 +34,9 @@ abstract class NodeCreateOrEditViewModelBase with Store {
@observable @observable
String address; String address;
@observable
String path;
@observable @observable
String port; String port;
@ -84,6 +86,7 @@ abstract class NodeCreateOrEditViewModelBase with Store {
@action @action
void reset() { void reset() {
address = ''; address = '';
path = '';
port = ''; port = '';
login = ''; login = '';
password = ''; password = '';
@ -99,6 +102,9 @@ abstract class NodeCreateOrEditViewModelBase with Store {
@action @action
void setAddress(String val) => address = val; void setAddress(String val) => address = val;
@action
void setPath(String val) => path = val;
@action @action
void setLogin(String val) => login = val; void setLogin(String val) => login = val;
@ -121,6 +127,7 @@ abstract class NodeCreateOrEditViewModelBase with Store {
Future<void> save({Node? editingNode, bool saveAsCurrent = false}) async { Future<void> save({Node? editingNode, bool saveAsCurrent = false}) async {
final node = Node( final node = Node(
uri: uri, uri: uri,
path: path,
type: _walletType, type: _walletType,
login: login, login: login,
password: password, password: password,
@ -151,6 +158,7 @@ abstract class NodeCreateOrEditViewModelBase with Store {
Future<void> connect() async { Future<void> connect() async {
final node = Node( final node = Node(
uri: uri, uri: uri,
path: path,
type: _walletType, type: _walletType,
login: login, login: login,
password: password, password: password,
@ -183,7 +191,7 @@ abstract class NodeCreateOrEditViewModelBase with Store {
Future<void> scanQRCodeForNewNode(BuildContext context) async { Future<void> scanQRCodeForNewNode(BuildContext context) async {
try { try {
bool isCameraPermissionGranted = bool isCameraPermissionGranted =
await PermissionHandler.checkPermission(Permission.camera, context); await PermissionHandler.checkPermission(Permission.camera, context);
if (!isCameraPermissionGranted) return; if (!isCameraPermissionGranted) return;
String code = await presentQRScanner(); String code = await presentQRScanner();
@ -198,7 +206,7 @@ abstract class NodeCreateOrEditViewModelBase with Store {
} }
final userInfo = uri.userInfo.split(':'); final userInfo = uri.userInfo.split(':');
if (userInfo.length < 2) { if (userInfo.length < 2) {
throw Exception('Unexpected scan QR code value: Value is invalid'); throw Exception('Unexpected scan QR code value: Value is invalid');
} }
@ -207,8 +215,11 @@ abstract class NodeCreateOrEditViewModelBase with Store {
final rpcPassword = userInfo[1]; final rpcPassword = userInfo[1];
final ipAddress = uri.host; final ipAddress = uri.host;
final port = uri.port.toString(); final port = uri.port.toString();
final path = uri.path;
setAddress(ipAddress); setAddress(ipAddress);
setPath(path);
setPassword(rpcPassword); setPassword(rpcPassword);
setLogin(rpcUser); setLogin(rpcUser);
setPort(port); setPort(port);

View file

@ -156,10 +156,10 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor
return priority; return priority;
} }
int? getCustomPriorityIndex(List<TransactionPriority> priorities) { int? getCustomPriorityIndex(List<TransactionPriority> priorities) {
if (wallet.type == WalletType.bitcoin) { if (wallet.type == WalletType.bitcoin) {
final customItem = priorities.firstWhereOrNull((element) => element == bitcoin!.getBitcoinTransactionPriorityCustom()); final customItem = priorities
.firstWhereOrNull((element) => element == bitcoin!.getBitcoinTransactionPriorityCustom());
return customItem != null ? priorities.indexOf(customItem) : null; return customItem != null ? priorities.indexOf(customItem) : null;
} }
@ -503,7 +503,9 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor
address = output.address; address = output.address;
} }
if (address.isNotEmpty && !contactAddresses.contains(address)) { if (address.isNotEmpty &&
!contactAddresses.contains(address) &&
selectedCryptoCurrency.raw != -1) {
return ContactRecord( return ContactRecord(
contactListViewModel.contactSource, contactListViewModel.contactSource,
Contact( Contact(

View file

@ -44,6 +44,8 @@ abstract class PrivacySettingsViewModelBase with Store {
_wallet.type == WalletType.litecoin || _wallet.type == WalletType.litecoin ||
_wallet.type == WalletType.bitcoinCash; _wallet.type == WalletType.bitcoinCash;
bool get isMoneroWallet => _wallet.type == WalletType.monero;
@computed @computed
bool get shouldSaveRecipientAddress => _settingsStore.shouldSaveRecipientAddress; bool get shouldSaveRecipientAddress => _settingsStore.shouldSaveRecipientAddress;

View file

@ -213,10 +213,6 @@ abstract class WalletAddressListViewModelBase extends WalletChangeListenerViewMo
return S.current.addresses; return S.current.addresses;
} }
if (isAutoGenerateSubaddressEnabled) {
return hasAccounts ? S.current.accounts : S.current.account;
}
return hasAccounts ? S.current.accounts_subaddresses : S.current.addresses; return hasAccounts ? S.current.accounts_subaddresses : S.current.addresses;
} }

View file

@ -1,3 +1,4 @@
import 'package:cake_wallet/bitcoin/bitcoin.dart';
import 'package:cake_wallet/reactions/wallet_connect.dart'; import 'package:cake_wallet/reactions/wallet_connect.dart';
import 'package:cake_wallet/store/app_store.dart'; import 'package:cake_wallet/store/app_store.dart';
import 'package:cw_core/transaction_direction.dart'; import 'package:cw_core/transaction_direction.dart';
@ -103,7 +104,15 @@ abstract class WalletKeysViewModelBase with Store {
if (_appStore.wallet!.type == WalletType.bitcoin || if (_appStore.wallet!.type == WalletType.bitcoin ||
_appStore.wallet!.type == WalletType.litecoin || _appStore.wallet!.type == WalletType.litecoin ||
_appStore.wallet!.type == WalletType.bitcoinCash) { _appStore.wallet!.type == WalletType.bitcoinCash) {
// final keys = bitcoin!.getWalletKeys(_appStore.wallet!);
items.addAll([ items.addAll([
// if (keys['wif'] != null)
// StandartListItem(title: "WIF", value: keys['wif']!),
// if (keys['privateKey'] != null)
// StandartListItem(title: S.current.private_key, value: keys['privateKey']!),
// if (keys['publicKey'] != null)
// StandartListItem(title: S.current.public_key, value: keys['publicKey']!),
StandartListItem(title: S.current.wallet_seed, value: _appStore.wallet!.seed!), StandartListItem(title: S.current.wallet_seed, value: _appStore.wallet!.seed!),
]); ]);
} }

View file

@ -104,7 +104,7 @@ dependencies:
# ref: main # ref: main
socks5_proxy: ^1.0.4 socks5_proxy: ^1.0.4
flutter_svg: ^2.0.9 flutter_svg: ^2.0.9
polyseed: ^0.0.2 polyseed: ^0.0.4
nostr_tools: ^1.0.9 nostr_tools: ^1.0.9
solana: ^0.30.1 solana: ^0.30.1
bitcoin_base: bitcoin_base:

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "PIN خطأ", "auth_store_incorrect_password": "PIN خطأ",
"authenticated": "تم المصادقة", "authenticated": "تم المصادقة",
"authentication": "المصادقة", "authentication": "المصادقة",
"auto_generate_addresses": "تلقائي توليد العناوين",
"auto_generate_subaddresses": "تلقائي توليد subddresses", "auto_generate_subaddresses": "تلقائي توليد subddresses",
"automatic": "تلقائي", "automatic": "تلقائي",
"available_balance": "الرصيد المتوفر", "available_balance": "الرصيد المتوفر",
@ -175,6 +176,7 @@
"debit_card": "بطاقة ائتمان", "debit_card": "بطاقة ائتمان",
"debit_card_terms": "يخضع تخزين واستخدام رقم بطاقة الدفع الخاصة بك (وبيانات الاعتماد المقابلة لرقم بطاقة الدفع الخاصة بك) في هذه المحفظة الرقمية لشروط وأحكام اتفاقية حامل البطاقة المعمول بها مع جهة إصدار بطاقة الدفع ، كما هو معمول به من وقت لآخر.", "debit_card_terms": "يخضع تخزين واستخدام رقم بطاقة الدفع الخاصة بك (وبيانات الاعتماد المقابلة لرقم بطاقة الدفع الخاصة بك) في هذه المحفظة الرقمية لشروط وأحكام اتفاقية حامل البطاقة المعمول بها مع جهة إصدار بطاقة الدفع ، كما هو معمول به من وقت لآخر.",
"decimal_places_error": "عدد كبير جدًا من المنازل العشرية", "decimal_places_error": "عدد كبير جدًا من المنازل العشرية",
"decimals_cannot_be_zero": "الرمز العشري لا يمكن أن يكون الصفر.",
"default_buy_provider": "مزود شراء الافتراضي", "default_buy_provider": "مزود شراء الافتراضي",
"default_sell_provider": "ﻲﺿﺍﺮﺘﻓﻻﺍ ﻊﻴﺒﻟﺍ ﺩﻭﺰﻣ", "default_sell_provider": "ﻲﺿﺍﺮﺘﻓﻻﺍ ﻊﻴﺒﻟﺍ ﺩﻭﺰﻣ",
"delete": "حذف", "delete": "حذف",
@ -355,6 +357,8 @@
"moonpay_alert_text": "يجب أن تكون قيمة المبلغ أكبر من أو تساوي ${minAmount} ${fiatCurrency}", "moonpay_alert_text": "يجب أن تكون قيمة المبلغ أكبر من أو تساوي ${minAmount} ${fiatCurrency}",
"more_options": "المزيد من الخيارات", "more_options": "المزيد من الخيارات",
"name": "ﻢﺳﺍ", "name": "ﻢﺳﺍ",
"nano_current_rep": "الممثل الحالي",
"nano_pick_new_rep": "اختر ممثلًا جديدًا",
"narrow": "ضيق", "narrow": "ضيق",
"new_first_wallet_text": "حافظ بسهولة على أمان العملة المشفرة", "new_first_wallet_text": "حافظ بسهولة على أمان العملة المشفرة",
"new_node_testing": "تجربة العقدة الجديدة", "new_node_testing": "تجربة العقدة الجديدة",
@ -463,6 +467,8 @@
"remove_node": "إزالة العقدة", "remove_node": "إزالة العقدة",
"remove_node_message": "هل أنت متأكد أنك تريد إزالة العقدة المحددة؟", "remove_node_message": "هل أنت متأكد أنك تريد إزالة العقدة المحددة؟",
"rename": "إعادة تسمية", "rename": "إعادة تسمية",
"rep_warning": "تحذير تمثيلي",
"rep_warning_sub": "لا يبدو أن ممثلك في وضع جيد. اضغط هنا لاختيار واحدة جديدة",
"require_for_adding_contacts": "تتطلب إضافة جهات اتصال", "require_for_adding_contacts": "تتطلب إضافة جهات اتصال",
"require_for_all_security_and_backup_settings": "مطلوب لجميع إعدادات الأمان والنسخ الاحتياطي", "require_for_all_security_and_backup_settings": "مطلوب لجميع إعدادات الأمان والنسخ الاحتياطي",
"require_for_assessing_wallet": "تتطلب الوصول إلى المحفظة", "require_for_assessing_wallet": "تتطلب الوصول إلى المحفظة",
@ -577,6 +583,8 @@
"send_your_wallet": "محفظتك", "send_your_wallet": "محفظتك",
"sending": "يتم الإرسال", "sending": "يتم الإرسال",
"sent": "تم الأرسال", "sent": "تم الأرسال",
"service_health_disabled": "تم تعطيل نشرة صحة الخدمة",
"service_health_disabled_message": "هذه هي صفحة نشرة صحة الخدمة ، يمكنك تمكين هذه الصفحة ضمن الإعدادات -> الخصوصية",
"settings": "إعدادات", "settings": "إعدادات",
"settings_all": "الكل", "settings_all": "الكل",
"settings_allow_biometrical_authentication": "السماح بالمصادقة البيومترية", "settings_allow_biometrical_authentication": "السماح بالمصادقة البيومترية",
@ -740,6 +748,7 @@
"unspent_coins_details_title": "تفاصيل العملات الغير المنفقة", "unspent_coins_details_title": "تفاصيل العملات الغير المنفقة",
"unspent_coins_title": "العملات الغير المنفقة", "unspent_coins_title": "العملات الغير المنفقة",
"unsupported_asset": ".ﻡﻮﻋﺪﻣ ﻞﺻﺃ ﻉﻮﻧ ﻦﻣ ﺔﻈﻔﺤﻣ ﻰﻟﺇ ﻞﻳﺪﺒﺘﻟﺍ ﻭﺃ ءﺎﺸﻧﺇ ﻰﺟﺮﻳ .ﻞﺻﻷﺍ ﺍﺬﻬﻟ ءﺍﺮﺟﻹﺍ ﺍﺬﻫ ﻢﻋﺪﻧ ﻻ ﻦﺤﻧ", "unsupported_asset": ".ﻡﻮﻋﺪﻣ ﻞﺻﺃ ﻉﻮﻧ ﻦﻣ ﺔﻈﻔﺤﻣ ﻰﻟﺇ ﻞﻳﺪﺒﺘﻟﺍ ﻭﺃ ءﺎﺸﻧﺇ ﻰﺟﺮﻳ .ﻞﺻﻷﺍ ﺍﺬﻬﻟ ءﺍﺮﺟﻹﺍ ﺍﺬﻫ ﻢﻋﺪﻧ ﻻ ﻦﺤﻧ",
"uptime": "مدة التشغيل",
"upto": "حتى ${value}", "upto": "حتى ${value}",
"use": "التبديل إلى", "use": "التبديل إلى",
"use_card_info_three": "استخدم البطاقة الرقمية عبر الإنترنت أو مع طرق الدفع غير التلامسية.", "use_card_info_three": "استخدم البطاقة الرقمية عبر الإنترنت أو مع طرق الدفع غير التلامسية.",
@ -756,6 +765,7 @@
"view_key_private": "مفتاح العرض (خاص)", "view_key_private": "مفتاح العرض (خاص)",
"view_key_public": "مفتاح العرض (عام)", "view_key_public": "مفتاح العرض (عام)",
"view_transaction_on": "عرض العملية على", "view_transaction_on": "عرض العملية على",
"voting_weight": "وزن التصويت",
"waitFewSecondForTxUpdate": "ﺕﻼﻣﺎﻌﻤﻟﺍ ﻞﺠﺳ ﻲﻓ ﺔﻠﻣﺎﻌﻤﻟﺍ ﺲﻜﻌﻨﺗ ﻰﺘﺣ ﻥﺍﻮﺛ ﻊﻀﺒﻟ ﺭﺎﻈﺘﻧﻻﺍ ﻰﺟﺮﻳ", "waitFewSecondForTxUpdate": "ﺕﻼﻣﺎﻌﻤﻟﺍ ﻞﺠﺳ ﻲﻓ ﺔﻠﻣﺎﻌﻤﻟﺍ ﺲﻜﻌﻨﺗ ﻰﺘﺣ ﻥﺍﻮﺛ ﻊﻀﺒﻟ ﺭﺎﻈﺘﻧﻻﺍ ﻰﺟﺮﻳ",
"wallet_keys": "سييد المحفظة / المفاتيح", "wallet_keys": "سييد المحفظة / المفاتيح",
"wallet_list_create_new_wallet": "إنشاء محفظة جديدة", "wallet_list_create_new_wallet": "إنشاء محفظة جديدة",

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "Грешен PIN", "auth_store_incorrect_password": "Грешен PIN",
"authenticated": "Удостоверено", "authenticated": "Удостоверено",
"authentication": "Удостоверяване", "authentication": "Удостоверяване",
"auto_generate_addresses": "Автоматично генериране на адреси",
"auto_generate_subaddresses": "Автоматично генериране на подадреси", "auto_generate_subaddresses": "Автоматично генериране на подадреси",
"automatic": "Автоматично", "automatic": "Автоматично",
"available_balance": "Наличен баланс", "available_balance": "Наличен баланс",
@ -175,6 +176,7 @@
"debit_card": "Дебитна карта", "debit_card": "Дебитна карта",
"debit_card_terms": "Съхранението и използването на данните от вашата платежна карта в този дигитален портфейл подлежат на условията на съответното съгласие за картодържец от издателя на картата.", "debit_card_terms": "Съхранението и използването на данните от вашата платежна карта в този дигитален портфейл подлежат на условията на съответното съгласие за картодържец от издателя на картата.",
"decimal_places_error": "Твърде много знаци след десетичната запетая", "decimal_places_error": "Твърде много знаци след десетичната запетая",
"decimals_cannot_be_zero": "Десетичната точка не може да бъде нула.",
"default_buy_provider": "Доставчик по подразбиране купува", "default_buy_provider": "Доставчик по подразбиране купува",
"default_sell_provider": "Доставчик за продажба по подразбиране", "default_sell_provider": "Доставчик за продажба по подразбиране",
"delete": "Изтрий", "delete": "Изтрий",
@ -355,6 +357,8 @@
"moonpay_alert_text": "Сумата трябва да бъде най-малко ${minAmount} ${fiatCurrency}", "moonpay_alert_text": "Сумата трябва да бъде най-малко ${minAmount} ${fiatCurrency}",
"more_options": "Още настройки", "more_options": "Още настройки",
"name": "Име", "name": "Име",
"nano_current_rep": "Настоящ представител",
"nano_pick_new_rep": "Изберете нов представител",
"narrow": "Тесен", "narrow": "Тесен",
"new_first_wallet_text": "Лесно пазете криптовалутата си в безопасност", "new_first_wallet_text": "Лесно пазете криптовалутата си в безопасност",
"new_node_testing": "Тестване на нов node", "new_node_testing": "Тестване на нов node",
@ -463,6 +467,8 @@
"remove_node": "Премахни node", "remove_node": "Премахни node",
"remove_node_message": "Сигурни ли сте, че искате да премахнете избрания node?", "remove_node_message": "Сигурни ли сте, че искате да премахнете избрания node?",
"rename": "Промяна на името", "rename": "Промяна на името",
"rep_warning": "Представително предупреждение",
"rep_warning_sub": "Вашият представител изглежда не е в добро състояние. Докоснете тук, за да изберете нов",
"require_for_adding_contacts": "Изисква се за добавяне на контакти", "require_for_adding_contacts": "Изисква се за добавяне на контакти",
"require_for_all_security_and_backup_settings": "Изисква се за всички настройки за сигурност и архивиране", "require_for_all_security_and_backup_settings": "Изисква се за всички настройки за сигурност и архивиране",
"require_for_assessing_wallet": "Изискване за достъп до портфейла", "require_for_assessing_wallet": "Изискване за достъп до портфейла",
@ -577,6 +583,8 @@
"send_your_wallet": "Вашият портфейл", "send_your_wallet": "Вашият портфейл",
"sending": "Изпращане", "sending": "Изпращане",
"sent": "Изпратени", "sent": "Изпратени",
"service_health_disabled": "Service Health Bulletin е деактивиран",
"service_health_disabled_message": "Това е страницата на Bulletin на Service Health, можете да активирате тази страница в Настройки -> Поверителност",
"settings": "Настройки", "settings": "Настройки",
"settings_all": "Всичко", "settings_all": "Всичко",
"settings_allow_biometrical_authentication": "Позволяване на биометрично удостоверяване.", "settings_allow_biometrical_authentication": "Позволяване на биометрично удостоверяване.",
@ -740,6 +748,7 @@
"unspent_coins_details_title": "Подробности за неизползваните монети", "unspent_coins_details_title": "Подробности за неизползваните монети",
"unspent_coins_title": "Неизползвани монети", "unspent_coins_title": "Неизползвани монети",
"unsupported_asset": "Не поддържаме това действие за този актив. Моля, създайте или преминете към портфейл от поддържан тип актив.", "unsupported_asset": "Не поддържаме това действие за този актив. Моля, създайте или преминете към портфейл от поддържан тип актив.",
"uptime": "Време за работа",
"upto": "до ${value}", "upto": "до ${value}",
"use": "Смяна на ", "use": "Смяна на ",
"use_card_info_three": "Използвайте дигиталната карта онлайн или чрез безконтактен метод на плащане.", "use_card_info_three": "Използвайте дигиталната карта онлайн или чрез безконтактен метод на плащане.",
@ -756,6 +765,7 @@
"view_key_private": "View key (таен)", "view_key_private": "View key (таен)",
"view_key_public": "View key (публичен)", "view_key_public": "View key (публичен)",
"view_transaction_on": "Вижте транзакция на ", "view_transaction_on": "Вижте транзакция на ",
"voting_weight": "Тегло на гласуване",
"waitFewSecondForTxUpdate": "Моля, изчакайте няколко секунди, докато транзакцията се отрази в историята на транзакциите", "waitFewSecondForTxUpdate": "Моля, изчакайте няколко секунди, докато транзакцията се отрази в историята на транзакциите",
"wallet_keys": "Seed/keys на портфейла", "wallet_keys": "Seed/keys на портфейла",
"wallet_list_create_new_wallet": "Създаване на нов портфейл", "wallet_list_create_new_wallet": "Създаване на нов портфейл",

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "Nesprávný PIN", "auth_store_incorrect_password": "Nesprávný PIN",
"authenticated": "Ověřeno", "authenticated": "Ověřeno",
"authentication": "Ověřování", "authentication": "Ověřování",
"auto_generate_addresses": "Automatické generování adres",
"auto_generate_subaddresses": "Automaticky generovat podadresy", "auto_generate_subaddresses": "Automaticky generovat podadresy",
"automatic": "Automatický", "automatic": "Automatický",
"available_balance": "Dostupný zůstatek", "available_balance": "Dostupný zůstatek",
@ -175,6 +176,7 @@
"debit_card": "Debetní karta", "debit_card": "Debetní karta",
"debit_card_terms": "Uložení a použití vašeho čísla platební karty (a přihlašovací údaje k vašemu číslu karty) v této digitální peněžence se řídí Obchodními podmínkami smlouvy příslušného držitele karty s vydavatelem karty (v jejich nejaktuálnější verzi).", "debit_card_terms": "Uložení a použití vašeho čísla platební karty (a přihlašovací údaje k vašemu číslu karty) v této digitální peněžence se řídí Obchodními podmínkami smlouvy příslušného držitele karty s vydavatelem karty (v jejich nejaktuálnější verzi).",
"decimal_places_error": "Příliš mnoho desetinných míst", "decimal_places_error": "Příliš mnoho desetinných míst",
"decimals_cannot_be_zero": "Desetinná desetinná škola nemůže být nulová.",
"default_buy_provider": "Výchozí poskytovatel nákupu", "default_buy_provider": "Výchozí poskytovatel nákupu",
"default_sell_provider": "Výchozí poskytovatel prodeje", "default_sell_provider": "Výchozí poskytovatel prodeje",
"delete": "Smazat", "delete": "Smazat",
@ -355,6 +357,8 @@
"moonpay_alert_text": "Částka musí být větší nebo rovna ${minAmount} ${fiatCurrency}", "moonpay_alert_text": "Částka musí být větší nebo rovna ${minAmount} ${fiatCurrency}",
"more_options": "Více možností", "more_options": "Více možností",
"name": "název", "name": "název",
"nano_current_rep": "Současný zástupce",
"nano_pick_new_rep": "Vyberte nového zástupce",
"narrow": "Úzký", "narrow": "Úzký",
"new_first_wallet_text": "Snadno udržujte svou kryptoměnu v bezpečí", "new_first_wallet_text": "Snadno udržujte svou kryptoměnu v bezpečí",
"new_node_testing": "Testování nového uzlu", "new_node_testing": "Testování nového uzlu",
@ -463,6 +467,8 @@
"remove_node": "Odstranit uzel", "remove_node": "Odstranit uzel",
"remove_node_message": "Opravdu chcete odstranit označený uzel?", "remove_node_message": "Opravdu chcete odstranit označený uzel?",
"rename": "Přejmenovat", "rename": "Přejmenovat",
"rep_warning": "Reprezentativní varování",
"rep_warning_sub": "Zdá se, že váš zástupce není v dobrém stavu. Klepnutím zde vyberte nový",
"require_for_adding_contacts": "Vyžadovat pro přidání kontaktů", "require_for_adding_contacts": "Vyžadovat pro přidání kontaktů",
"require_for_all_security_and_backup_settings": "Vyžadovat všechna nastavení zabezpečení a zálohování", "require_for_all_security_and_backup_settings": "Vyžadovat všechna nastavení zabezpečení a zálohování",
"require_for_assessing_wallet": "Vyžadovat pro přístup k peněžence", "require_for_assessing_wallet": "Vyžadovat pro přístup k peněžence",
@ -577,6 +583,8 @@
"send_your_wallet": "Vaše peněženka", "send_your_wallet": "Vaše peněženka",
"sending": "Odesílání", "sending": "Odesílání",
"sent": "Odesláno", "sent": "Odesláno",
"service_health_disabled": "Bulletin zdraví služeb je deaktivován",
"service_health_disabled_message": "Toto je stránka Bulletin Service Health Bulletin, můžete tuto stránku povolit v rámci nastavení -> Ochrana osobních údajů",
"settings": "Nastavení", "settings": "Nastavení",
"settings_all": "VŠE", "settings_all": "VŠE",
"settings_allow_biometrical_authentication": "Povolit biometrické ověření", "settings_allow_biometrical_authentication": "Povolit biometrické ověření",
@ -740,6 +748,7 @@
"unspent_coins_details_title": "Podrobnosti o neutracených mincích", "unspent_coins_details_title": "Podrobnosti o neutracených mincích",
"unspent_coins_title": "Neutracené mince", "unspent_coins_title": "Neutracené mince",
"unsupported_asset": "Tuto akci u tohoto díla nepodporujeme. Vytvořte nebo přepněte na peněženku podporovaného typu aktiv.", "unsupported_asset": "Tuto akci u tohoto díla nepodporujeme. Vytvořte nebo přepněte na peněženku podporovaného typu aktiv.",
"uptime": "Uptime",
"upto": "až ${value}", "upto": "až ${value}",
"use": "Přepnout na ", "use": "Přepnout na ",
"use_card_info_three": "Použijte tuto digitální kartu online nebo bezkontaktními platebními metodami.", "use_card_info_three": "Použijte tuto digitální kartu online nebo bezkontaktními platebními metodami.",
@ -756,6 +765,7 @@
"view_key_private": "Klíč pro zobrazení (soukromý)", "view_key_private": "Klíč pro zobrazení (soukromý)",
"view_key_public": "Klíč pro zobrazení (veřejný)", "view_key_public": "Klíč pro zobrazení (veřejný)",
"view_transaction_on": "Zobrazit transakci na ", "view_transaction_on": "Zobrazit transakci na ",
"voting_weight": "Hlasová váha",
"waitFewSecondForTxUpdate": "Počkejte několik sekund, než se transakce projeví v historii transakcí", "waitFewSecondForTxUpdate": "Počkejte několik sekund, než se transakce projeví v historii transakcí",
"wallet_keys": "Seed/klíče peněženky", "wallet_keys": "Seed/klíče peněženky",
"wallet_list_create_new_wallet": "Vytvořit novou peněženku", "wallet_list_create_new_wallet": "Vytvořit novou peněženku",

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "Falsche PIN", "auth_store_incorrect_password": "Falsche PIN",
"authenticated": "Authentifiziert", "authenticated": "Authentifiziert",
"authentication": "Authentifizierung", "authentication": "Authentifizierung",
"auto_generate_addresses": "Automatisch generieren Adressen",
"auto_generate_subaddresses": "Unteradressen automatisch generieren", "auto_generate_subaddresses": "Unteradressen automatisch generieren",
"automatic": "Automatisch", "automatic": "Automatisch",
"available_balance": "Verfügbares Guthaben", "available_balance": "Verfügbares Guthaben",
@ -175,6 +176,7 @@
"debit_card": "Debitkarte", "debit_card": "Debitkarte",
"debit_card_terms": "Die Speicherung und Nutzung Ihrer Zahlungskartennummer (und Ihrer Zahlungskartennummer entsprechenden Anmeldeinformationen) in dieser digitalen Geldbörse unterliegt den Allgemeinen Geschäftsbedingungen des geltenden Karteninhabervertrags mit dem Zahlungskartenaussteller, gültig ab von Zeit zu Zeit.", "debit_card_terms": "Die Speicherung und Nutzung Ihrer Zahlungskartennummer (und Ihrer Zahlungskartennummer entsprechenden Anmeldeinformationen) in dieser digitalen Geldbörse unterliegt den Allgemeinen Geschäftsbedingungen des geltenden Karteninhabervertrags mit dem Zahlungskartenaussteller, gültig ab von Zeit zu Zeit.",
"decimal_places_error": "Zu viele Nachkommastellen", "decimal_places_error": "Zu viele Nachkommastellen",
"decimals_cannot_be_zero": "Token -Dezimalzahl kann nicht Null sein.",
"default_buy_provider": "Standard-Kaufanbieter", "default_buy_provider": "Standard-Kaufanbieter",
"default_sell_provider": "Standard-Verkaufsanbieter", "default_sell_provider": "Standard-Verkaufsanbieter",
"delete": "Löschen", "delete": "Löschen",
@ -355,6 +357,8 @@
"moonpay_alert_text": "Der Wert des Betrags muss größer oder gleich ${minAmount} ${fiatCurrency} sein", "moonpay_alert_text": "Der Wert des Betrags muss größer oder gleich ${minAmount} ${fiatCurrency} sein",
"more_options": "Weitere Optionen", "more_options": "Weitere Optionen",
"name": "Name", "name": "Name",
"nano_current_rep": "Aktueller Vertreter",
"nano_pick_new_rep": "Wählen Sie einen neuen Vertreter aus",
"narrow": "Eng", "narrow": "Eng",
"new_first_wallet_text": "Bewahren Sie Ihre Kryptowährung einfach sicher auf", "new_first_wallet_text": "Bewahren Sie Ihre Kryptowährung einfach sicher auf",
"new_node_testing": "Neuen Knoten testen", "new_node_testing": "Neuen Knoten testen",
@ -421,8 +425,8 @@
"placeholder_transactions": "Ihre Transaktionen werden hier angezeigt", "placeholder_transactions": "Ihre Transaktionen werden hier angezeigt",
"please_fill_totp": "Bitte geben Sie den 8-stelligen Code ein, der auf Ihrem anderen Gerät vorhanden ist", "please_fill_totp": "Bitte geben Sie den 8-stelligen Code ein, der auf Ihrem anderen Gerät vorhanden ist",
"please_make_selection": "Bitte treffen Sie unten eine Auswahl zum Erstellen oder Wiederherstellen Ihrer Wallet.", "please_make_selection": "Bitte treffen Sie unten eine Auswahl zum Erstellen oder Wiederherstellen Ihrer Wallet.",
"please_reference_document": "Bitte verweisen Sie auf die folgenden Dokumente, um weitere Informationen zu erhalten.",
"Please_reference_document": "Weitere Informationen finden Sie in den Dokumenten unten.", "Please_reference_document": "Weitere Informationen finden Sie in den Dokumenten unten.",
"please_reference_document": "Bitte verweisen Sie auf die folgenden Dokumente, um weitere Informationen zu erhalten.",
"please_select": "Bitte auswählen:", "please_select": "Bitte auswählen:",
"please_select_backup_file": "Bitte wählen Sie die Sicherungsdatei und geben Sie das Sicherungskennwort ein.", "please_select_backup_file": "Bitte wählen Sie die Sicherungsdatei und geben Sie das Sicherungskennwort ein.",
"please_try_to_connect_to_another_node": "Bitte versuchen Sie, sich mit einem anderen Knoten zu verbinden", "please_try_to_connect_to_another_node": "Bitte versuchen Sie, sich mit einem anderen Knoten zu verbinden",
@ -464,6 +468,8 @@
"remove_node": "Knoten entfernen", "remove_node": "Knoten entfernen",
"remove_node_message": "Möchten Sie den ausgewählten Knoten wirklich entfernen?", "remove_node_message": "Möchten Sie den ausgewählten Knoten wirklich entfernen?",
"rename": "Umbenennen", "rename": "Umbenennen",
"rep_warning": "Repräsentative Warnung",
"rep_warning_sub": "Ihr Vertreter scheint nicht gut zu sein. Tippen Sie hier, um eine neue auszuwählen",
"require_for_adding_contacts": "Erforderlich zum Hinzufügen von Kontakten", "require_for_adding_contacts": "Erforderlich zum Hinzufügen von Kontakten",
"require_for_all_security_and_backup_settings": "Für alle Sicherheits- und Sicherungseinstellungen erforderlich", "require_for_all_security_and_backup_settings": "Für alle Sicherheits- und Sicherungseinstellungen erforderlich",
"require_for_assessing_wallet": "Für den Zugriff auf die Wallet erforderlich", "require_for_assessing_wallet": "Für den Zugriff auf die Wallet erforderlich",
@ -578,6 +584,8 @@
"send_your_wallet": "Ihre Wallet", "send_your_wallet": "Ihre Wallet",
"sending": "Senden", "sending": "Senden",
"sent": "Versendet", "sent": "Versendet",
"service_health_disabled": "Service Health Bulletin ist behindert",
"service_health_disabled_message": "Dies ist die Seite \"Service Health Bulletin\", können Sie diese Seite unter Einstellungen -> Privatsphäre aktivieren",
"settings": "Einstellungen", "settings": "Einstellungen",
"settings_all": "ALLE", "settings_all": "ALLE",
"settings_allow_biometrical_authentication": "Biometrische Authentifizierung zulassen", "settings_allow_biometrical_authentication": "Biometrische Authentifizierung zulassen",
@ -742,6 +750,7 @@
"unspent_coins_details_title": "Details zu nicht ausgegebenen Coins", "unspent_coins_details_title": "Details zu nicht ausgegebenen Coins",
"unspent_coins_title": "Nicht ausgegebene Coins", "unspent_coins_title": "Nicht ausgegebene Coins",
"unsupported_asset": "Wir unterstützen diese Aktion für dieses Asset nicht. Bitte erstellen Sie eine Wallet eines unterstützten Asset-Typs oder wechseln Sie zu einer Wallet.", "unsupported_asset": "Wir unterstützen diese Aktion für dieses Asset nicht. Bitte erstellen Sie eine Wallet eines unterstützten Asset-Typs oder wechseln Sie zu einer Wallet.",
"uptime": "Betriebszeit",
"upto": "bis zu ${value}", "upto": "bis zu ${value}",
"use": "Wechsel zu ", "use": "Wechsel zu ",
"use_card_info_three": "Verwenden Sie die digitale Karte online oder mit kontaktlosen Zahlungsmethoden.", "use_card_info_three": "Verwenden Sie die digitale Karte online oder mit kontaktlosen Zahlungsmethoden.",
@ -758,6 +767,7 @@
"view_key_private": "View Key (geheim)", "view_key_private": "View Key (geheim)",
"view_key_public": "View Key (öffentlich)", "view_key_public": "View Key (öffentlich)",
"view_transaction_on": "Anzeigen der Transaktion auf ", "view_transaction_on": "Anzeigen der Transaktion auf ",
"voting_weight": "Stimmgewicht",
"waitFewSecondForTxUpdate": "Bitte warten Sie einige Sekunden, bis die Transaktion im Transaktionsverlauf angezeigt wird", "waitFewSecondForTxUpdate": "Bitte warten Sie einige Sekunden, bis die Transaktion im Transaktionsverlauf angezeigt wird",
"waiting_payment_confirmation": "Warte auf Zahlungsbestätigung", "waiting_payment_confirmation": "Warte auf Zahlungsbestätigung",
"wallet_keys": "Wallet-Seed/-Schlüssel", "wallet_keys": "Wallet-Seed/-Schlüssel",

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "Wrong PIN", "auth_store_incorrect_password": "Wrong PIN",
"authenticated": "Authenticated", "authenticated": "Authenticated",
"authentication": "Authentication", "authentication": "Authentication",
"auto_generate_addresses": "Auto generate addresses",
"auto_generate_subaddresses": "Auto generate subaddresses", "auto_generate_subaddresses": "Auto generate subaddresses",
"automatic": "Automatic", "automatic": "Automatic",
"available_balance": "Available Balance", "available_balance": "Available Balance",
@ -175,6 +176,7 @@
"debit_card": "Debit Card", "debit_card": "Debit Card",
"debit_card_terms": "The storage and usage of your payment card number (and credentials corresponding to your payment card number) in this digital wallet are subject to the Terms and Conditions of the applicable cardholder agreement with the payment card issuer, as in effect from time to time.", "debit_card_terms": "The storage and usage of your payment card number (and credentials corresponding to your payment card number) in this digital wallet are subject to the Terms and Conditions of the applicable cardholder agreement with the payment card issuer, as in effect from time to time.",
"decimal_places_error": "Too many decimal places", "decimal_places_error": "Too many decimal places",
"decimals_cannot_be_zero": "Token decimal cannot be zero.",
"default_buy_provider": "Default Buy Provider", "default_buy_provider": "Default Buy Provider",
"default_sell_provider": "Default Sell Provider", "default_sell_provider": "Default Sell Provider",
"delete": "Delete", "delete": "Delete",
@ -355,6 +357,8 @@
"moonpay_alert_text": "Value of the amount must be more or equal to ${minAmount} ${fiatCurrency}", "moonpay_alert_text": "Value of the amount must be more or equal to ${minAmount} ${fiatCurrency}",
"more_options": "More Options", "more_options": "More Options",
"name": "Name", "name": "Name",
"nano_current_rep": "Current Representative",
"nano_pick_new_rep": "Pick a new representative",
"narrow": "Narrow", "narrow": "Narrow",
"new_first_wallet_text": "Keep your crypto safe, piece of cake", "new_first_wallet_text": "Keep your crypto safe, piece of cake",
"new_node_testing": "New node testing", "new_node_testing": "New node testing",
@ -463,6 +467,8 @@
"remove_node": "Remove node", "remove_node": "Remove node",
"remove_node_message": "Are you sure that you want to remove selected node?", "remove_node_message": "Are you sure that you want to remove selected node?",
"rename": "Rename", "rename": "Rename",
"rep_warning": "Representative Warning",
"rep_warning_sub": "Your representative does not appear to be in good standing. Tap here to select a new one",
"require_for_adding_contacts": "Require for adding contacts", "require_for_adding_contacts": "Require for adding contacts",
"require_for_all_security_and_backup_settings": "Require for all security and backup settings", "require_for_all_security_and_backup_settings": "Require for all security and backup settings",
"require_for_assessing_wallet": "Require for accessing wallet", "require_for_assessing_wallet": "Require for accessing wallet",
@ -577,6 +583,8 @@
"send_your_wallet": "Your wallet", "send_your_wallet": "Your wallet",
"sending": "Sending", "sending": "Sending",
"sent": "Sent", "sent": "Sent",
"service_health_disabled": "Service Health Bulletin is disabled",
"service_health_disabled_message": "This is the service health bulletin page, you can enable this page under Settings -> Privacy",
"settings": "Settings", "settings": "Settings",
"settings_all": "ALL", "settings_all": "ALL",
"settings_allow_biometrical_authentication": "Allow biometrical authentication", "settings_allow_biometrical_authentication": "Allow biometrical authentication",
@ -740,6 +748,7 @@
"unspent_coins_details_title": "Unspent coins details", "unspent_coins_details_title": "Unspent coins details",
"unspent_coins_title": "Unspent coins", "unspent_coins_title": "Unspent coins",
"unsupported_asset": "We don't support this action for this asset. Please create or switch to a wallet of a supported asset type.", "unsupported_asset": "We don't support this action for this asset. Please create or switch to a wallet of a supported asset type.",
"uptime": "Uptime",
"upto": "up to ${value}", "upto": "up to ${value}",
"use": "Switch to ", "use": "Switch to ",
"use_card_info_three": "Use the digital card online or with contactless payment methods.", "use_card_info_three": "Use the digital card online or with contactless payment methods.",
@ -756,6 +765,7 @@
"view_key_private": "View key (private)", "view_key_private": "View key (private)",
"view_key_public": "View key (public)", "view_key_public": "View key (public)",
"view_transaction_on": "View Transaction on ", "view_transaction_on": "View Transaction on ",
"voting_weight": "Voting Weight",
"waitFewSecondForTxUpdate": "Kindly wait for a few seconds for transaction to reflect in transactions history", "waitFewSecondForTxUpdate": "Kindly wait for a few seconds for transaction to reflect in transactions history",
"wallet_keys": "Wallet seed/keys", "wallet_keys": "Wallet seed/keys",
"wallet_list_create_new_wallet": "Create New Wallet", "wallet_list_create_new_wallet": "Create New Wallet",

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "Contraseña PIN", "auth_store_incorrect_password": "Contraseña PIN",
"authenticated": "Autenticados", "authenticated": "Autenticados",
"authentication": "Autenticación", "authentication": "Autenticación",
"auto_generate_addresses": "Auto Generar direcciones",
"auto_generate_subaddresses": "Generar subdirecciones automáticamente", "auto_generate_subaddresses": "Generar subdirecciones automáticamente",
"automatic": "Automático", "automatic": "Automático",
"available_balance": "Balance disponible", "available_balance": "Balance disponible",
@ -175,6 +176,7 @@
"debit_card": "Tarjeta de Débito", "debit_card": "Tarjeta de Débito",
"debit_card_terms": "El almacenamiento y el uso de su número de tarjeta de pago (y las credenciales correspondientes a su número de tarjeta de pago) en esta billetera digital están sujetos a los Términos y condiciones del acuerdo del titular de la tarjeta aplicable con el emisor de la tarjeta de pago, en vigor desde tiempo al tiempo.", "debit_card_terms": "El almacenamiento y el uso de su número de tarjeta de pago (y las credenciales correspondientes a su número de tarjeta de pago) en esta billetera digital están sujetos a los Términos y condiciones del acuerdo del titular de la tarjeta aplicable con el emisor de la tarjeta de pago, en vigor desde tiempo al tiempo.",
"decimal_places_error": "Demasiados lugares decimales", "decimal_places_error": "Demasiados lugares decimales",
"decimals_cannot_be_zero": "Token Decimal no puede ser cero.",
"default_buy_provider": "Proveedor de compra predeterminado", "default_buy_provider": "Proveedor de compra predeterminado",
"default_sell_provider": "Proveedor de venta predeterminado", "default_sell_provider": "Proveedor de venta predeterminado",
"delete": "Borrar", "delete": "Borrar",
@ -355,6 +357,8 @@
"moonpay_alert_text": "El valor de la cantidad debe ser mayor o igual a ${minAmount} ${fiatCurrency}", "moonpay_alert_text": "El valor de la cantidad debe ser mayor o igual a ${minAmount} ${fiatCurrency}",
"more_options": "Más Opciones", "more_options": "Más Opciones",
"name": "Nombre", "name": "Nombre",
"nano_current_rep": "Representante actual",
"nano_pick_new_rep": "Elija un nuevo representante",
"narrow": "Angosto", "narrow": "Angosto",
"new_first_wallet_text": "Mantenga fácilmente su criptomoneda segura", "new_first_wallet_text": "Mantenga fácilmente su criptomoneda segura",
"new_node_testing": "Prueba de nuevos nodos", "new_node_testing": "Prueba de nuevos nodos",
@ -464,6 +468,8 @@
"remove_node": "Eliminar nodo", "remove_node": "Eliminar nodo",
"remove_node_message": "¿Está seguro de que desea eliminar el nodo seleccionado?", "remove_node_message": "¿Está seguro de que desea eliminar el nodo seleccionado?",
"rename": "Rebautizar", "rename": "Rebautizar",
"rep_warning": "Advertencia representativa",
"rep_warning_sub": "Su representante no parece estar en buena posición. Toque aquí para seleccionar uno nuevo",
"require_for_adding_contacts": "Requerido para agregar contactos", "require_for_adding_contacts": "Requerido para agregar contactos",
"require_for_all_security_and_backup_settings": "Requerido para todas las configuraciones de seguridad y copia de seguridad", "require_for_all_security_and_backup_settings": "Requerido para todas las configuraciones de seguridad y copia de seguridad",
"require_for_assessing_wallet": "Requerido para acceder a la billetera", "require_for_assessing_wallet": "Requerido para acceder a la billetera",
@ -578,6 +584,8 @@
"send_your_wallet": "Tu billetera", "send_your_wallet": "Tu billetera",
"sending": "Enviando", "sending": "Enviando",
"sent": "Expedido", "sent": "Expedido",
"service_health_disabled": "El boletín de salud del servicio está deshabilitado",
"service_health_disabled_message": "Esta es la página del Boletín de Salud del Servicio, puede habilitar esta página en Configuración -> Privacidad",
"settings": "Configuraciones", "settings": "Configuraciones",
"settings_all": "TODOS", "settings_all": "TODOS",
"settings_allow_biometrical_authentication": "Permitir autenticación biométrica", "settings_allow_biometrical_authentication": "Permitir autenticación biométrica",
@ -741,6 +749,7 @@
"unspent_coins_details_title": "Detalles de monedas no gastadas", "unspent_coins_details_title": "Detalles de monedas no gastadas",
"unspent_coins_title": "Monedas no gastadas", "unspent_coins_title": "Monedas no gastadas",
"unsupported_asset": "No admitimos esta acción para este activo. Cree o cambie a una billetera de un tipo de activo admitido.", "unsupported_asset": "No admitimos esta acción para este activo. Cree o cambie a una billetera de un tipo de activo admitido.",
"uptime": "Tiempo de actividad",
"upto": "hasta ${value}", "upto": "hasta ${value}",
"use": "Utilizar a ", "use": "Utilizar a ",
"use_card_info_three": "Utilice la tarjeta digital en línea o con métodos de pago sin contacto.", "use_card_info_three": "Utilice la tarjeta digital en línea o con métodos de pago sin contacto.",
@ -757,6 +766,7 @@
"view_key_private": "View clave (privado)", "view_key_private": "View clave (privado)",
"view_key_public": "View clave (público)", "view_key_public": "View clave (público)",
"view_transaction_on": "View Transaction on ", "view_transaction_on": "View Transaction on ",
"voting_weight": "Peso de votación",
"waitFewSecondForTxUpdate": "Espere unos segundos para que la transacción se refleje en el historial de transacciones.", "waitFewSecondForTxUpdate": "Espere unos segundos para que la transacción se refleje en el historial de transacciones.",
"wallet_keys": "Billetera semilla/claves", "wallet_keys": "Billetera semilla/claves",
"wallet_list_create_new_wallet": "Crear nueva billetera", "wallet_list_create_new_wallet": "Crear nueva billetera",

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "Mauvais code PIN", "auth_store_incorrect_password": "Mauvais code PIN",
"authenticated": "Authentifié", "authenticated": "Authentifié",
"authentication": "Authentification", "authentication": "Authentification",
"auto_generate_addresses": "Adresses de génération automatique",
"auto_generate_subaddresses": "Générer automatiquement des sous-adresses", "auto_generate_subaddresses": "Générer automatiquement des sous-adresses",
"automatic": "Automatique", "automatic": "Automatique",
"available_balance": "Solde Disponible", "available_balance": "Solde Disponible",
@ -175,6 +176,7 @@
"debit_card": "Carte de débit", "debit_card": "Carte de débit",
"debit_card_terms": "Le stockage et l'utilisation de votre numéro de carte de paiement (et des informations d'identification correspondant à votre numéro de carte de paiement) dans ce portefeuille (wallet) numérique peuvent être soumis aux conditions générales de l'accord du titulaire de carte parfois en vigueur avec l'émetteur de la carte de paiement.", "debit_card_terms": "Le stockage et l'utilisation de votre numéro de carte de paiement (et des informations d'identification correspondant à votre numéro de carte de paiement) dans ce portefeuille (wallet) numérique peuvent être soumis aux conditions générales de l'accord du titulaire de carte parfois en vigueur avec l'émetteur de la carte de paiement.",
"decimal_places_error": "Trop de décimales", "decimal_places_error": "Trop de décimales",
"decimals_cannot_be_zero": "La décimale du jeton ne peut pas être nulle.",
"default_buy_provider": "Fournisseur d'achat par défaut", "default_buy_provider": "Fournisseur d'achat par défaut",
"default_sell_provider": "Fournisseur de vente par défaut", "default_sell_provider": "Fournisseur de vente par défaut",
"delete": "Effacer", "delete": "Effacer",
@ -355,6 +357,8 @@
"moonpay_alert_text": "Le montant doit être au moins égal à ${minAmount} ${fiatCurrency}", "moonpay_alert_text": "Le montant doit être au moins égal à ${minAmount} ${fiatCurrency}",
"more_options": "Plus d'options", "more_options": "Plus d'options",
"name": "Nom", "name": "Nom",
"nano_current_rep": "Représentant actuel",
"nano_pick_new_rep": "Choisissez un nouveau représentant",
"narrow": "Étroit", "narrow": "Étroit",
"new_first_wallet_text": "Gardez facilement votre crypto-monnaie en sécurité", "new_first_wallet_text": "Gardez facilement votre crypto-monnaie en sécurité",
"new_node_testing": "Test du nouveau nœud", "new_node_testing": "Test du nouveau nœud",
@ -463,6 +467,8 @@
"remove_node": "Supprimer le nœud", "remove_node": "Supprimer le nœud",
"remove_node_message": "Êtes vous certain de vouloir supprimer le nœud sélectionné ?", "remove_node_message": "Êtes vous certain de vouloir supprimer le nœud sélectionné ?",
"rename": "Renommer", "rename": "Renommer",
"rep_warning": "Avertissement représentatif",
"rep_warning_sub": "Votre représentant ne semble pas être en règle. Appuyez ici pour en sélectionner un nouveau",
"require_for_adding_contacts": "Requis pour ajouter des contacts", "require_for_adding_contacts": "Requis pour ajouter des contacts",
"require_for_all_security_and_backup_settings": "Exiger pour tous les paramètres de sécurité et de sauvegarde", "require_for_all_security_and_backup_settings": "Exiger pour tous les paramètres de sécurité et de sauvegarde",
"require_for_assessing_wallet": "Nécessaire pour accéder au portefeuille", "require_for_assessing_wallet": "Nécessaire pour accéder au portefeuille",
@ -577,6 +583,8 @@
"send_your_wallet": "Votre portefeuille (wallet)", "send_your_wallet": "Votre portefeuille (wallet)",
"sending": "Envoi", "sending": "Envoi",
"sent": "Envoyés", "sent": "Envoyés",
"service_health_disabled": "Le bulletin de santé du service est handicapé",
"service_health_disabled_message": "Ceci est la page du Bulletin de santé du service, vous pouvez activer cette page sous Paramètres -> Confidentialité",
"settings": "Paramètres", "settings": "Paramètres",
"settings_all": "TOUT", "settings_all": "TOUT",
"settings_allow_biometrical_authentication": "Autoriser l'authentification biométrique", "settings_allow_biometrical_authentication": "Autoriser l'authentification biométrique",
@ -740,6 +748,7 @@
"unspent_coins_details_title": "Détails des pièces (coins) non dépensées", "unspent_coins_details_title": "Détails des pièces (coins) non dépensées",
"unspent_coins_title": "Pièces (coins) non dépensées", "unspent_coins_title": "Pièces (coins) non dépensées",
"unsupported_asset": "Nous ne prenons pas en charge cette action pour cet élément. Veuillez créer ou passer à un portefeuille d'un type d'actif pris en charge.", "unsupported_asset": "Nous ne prenons pas en charge cette action pour cet élément. Veuillez créer ou passer à un portefeuille d'un type d'actif pris en charge.",
"uptime": "Durée de la baisse",
"upto": "jusqu'à ${value}", "upto": "jusqu'à ${value}",
"use": "Changer vers code PIN à ", "use": "Changer vers code PIN à ",
"use_card_info_three": "Utilisez la carte numérique en ligne ou avec des méthodes de paiement sans contact.", "use_card_info_three": "Utilisez la carte numérique en ligne ou avec des méthodes de paiement sans contact.",
@ -756,6 +765,7 @@
"view_key_private": "Clef d'audit (view key) (privée)", "view_key_private": "Clef d'audit (view key) (privée)",
"view_key_public": "Clef d'audit (view key) (publique)", "view_key_public": "Clef d'audit (view key) (publique)",
"view_transaction_on": "Voir la Transaction sur ", "view_transaction_on": "Voir la Transaction sur ",
"voting_weight": "Poids de vote",
"waitFewSecondForTxUpdate": "Veuillez attendre quelques secondes pour que la transaction soit reflétée dans l'historique des transactions.", "waitFewSecondForTxUpdate": "Veuillez attendre quelques secondes pour que la transaction soit reflétée dans l'historique des transactions.",
"wallet_keys": "Phrase secrète (seed)/Clefs du portefeuille (wallet)", "wallet_keys": "Phrase secrète (seed)/Clefs du portefeuille (wallet)",
"wallet_list_create_new_wallet": "Créer un Nouveau Portefeuille (Wallet)", "wallet_list_create_new_wallet": "Créer un Nouveau Portefeuille (Wallet)",

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "PIN na gaskiya", "auth_store_incorrect_password": "PIN na gaskiya",
"authenticated": "Ingantacce", "authenticated": "Ingantacce",
"authentication": "Tabbatarwa", "authentication": "Tabbatarwa",
"auto_generate_addresses": "Adireshin Auto",
"auto_generate_subaddresses": "Saɓaƙa subaddresses ta kai tsaye", "auto_generate_subaddresses": "Saɓaƙa subaddresses ta kai tsaye",
"automatic": "Na atomatik", "automatic": "Na atomatik",
"available_balance": "KUDI", "available_balance": "KUDI",
@ -175,6 +176,7 @@
"debit_card": "Katin Zare kudi", "debit_card": "Katin Zare kudi",
"debit_card_terms": "Adana da amfani da lambar katin kuɗin ku (da takaddun shaida masu dacewa da lambar katin kuɗin ku) a cikin wannan walat ɗin dijital suna ƙarƙashin Sharuɗɗa da Sharuɗɗa na yarjejeniya mai amfani da katin tare da mai fitar da katin biyan kuɗi, kamar yadda yake aiki daga lokaci zuwa lokaci.", "debit_card_terms": "Adana da amfani da lambar katin kuɗin ku (da takaddun shaida masu dacewa da lambar katin kuɗin ku) a cikin wannan walat ɗin dijital suna ƙarƙashin Sharuɗɗa da Sharuɗɗa na yarjejeniya mai amfani da katin tare da mai fitar da katin biyan kuɗi, kamar yadda yake aiki daga lokaci zuwa lokaci.",
"decimal_places_error": "Wadannan suna da tsawon harsuna", "decimal_places_error": "Wadannan suna da tsawon harsuna",
"decimals_cannot_be_zero": "Alamar alama ba zata iya zama sifili ba.",
"default_buy_provider": "Tsohuwar Siyarwa", "default_buy_provider": "Tsohuwar Siyarwa",
"default_sell_provider": "Tsohuwar Mai Bayar Siyarwa", "default_sell_provider": "Tsohuwar Mai Bayar Siyarwa",
"delete": "Share", "delete": "Share",
@ -355,6 +357,8 @@
"moonpay_alert_text": "Darajar adadin dole ne ya zama fiye ko daidai da ${minAmount} ${fiatCurrency}", "moonpay_alert_text": "Darajar adadin dole ne ya zama fiye ko daidai da ${minAmount} ${fiatCurrency}",
"more_options": "Ƙarin Zaɓuɓɓuka", "more_options": "Ƙarin Zaɓuɓɓuka",
"name": "Suna", "name": "Suna",
"nano_current_rep": "Wakilin Yanzu",
"nano_pick_new_rep": "Dauki sabon wakili",
"narrow": "kunkuntar", "narrow": "kunkuntar",
"new_first_wallet_text": "A sauƙaƙe kiyaye kuzarin ku", "new_first_wallet_text": "A sauƙaƙe kiyaye kuzarin ku",
"new_node_testing": "Sabbin gwajin kumburi", "new_node_testing": "Sabbin gwajin kumburi",
@ -465,6 +469,8 @@
"remove_node": "Cire node", "remove_node": "Cire node",
"remove_node_message": "Kuna tabbatar kuna so ku cire wannan node?", "remove_node_message": "Kuna tabbatar kuna so ku cire wannan node?",
"rename": "Sake suna", "rename": "Sake suna",
"rep_warning": "Gargadi Wakilin",
"rep_warning_sub": "Wakilinku bai bayyana ya kasance cikin kyakkyawan yanayi ba. Matsa nan don zaɓar sabon",
"require_for_adding_contacts": "Bukatar ƙara lambobin sadarwa", "require_for_adding_contacts": "Bukatar ƙara lambobin sadarwa",
"require_for_all_security_and_backup_settings": "Bukatar duk tsaro da saitunan wariyar ajiya", "require_for_all_security_and_backup_settings": "Bukatar duk tsaro da saitunan wariyar ajiya",
"require_for_assessing_wallet": "Bukatar samun damar walat", "require_for_assessing_wallet": "Bukatar samun damar walat",
@ -579,6 +585,8 @@
"send_your_wallet": "Walat ɗin ku", "send_your_wallet": "Walat ɗin ku",
"sending": "Aika", "sending": "Aika",
"sent": "Aika", "sent": "Aika",
"service_health_disabled": "Ba a kashe Bayar da Kiwon Lafiya",
"service_health_disabled_message": "Wannan shafin yanar gizo mai kula da sabis ne, zaka iya kunna wannan shafin a karkashin saiti -> Sirri",
"settings": "Saiti", "settings": "Saiti",
"settings_all": "DUK", "settings_all": "DUK",
"settings_allow_biometrical_authentication": "Bada izinin tantance sawun yatsa", "settings_allow_biometrical_authentication": "Bada izinin tantance sawun yatsa",
@ -742,6 +750,7 @@
"unspent_coins_details_title": "Bayanan tsabar kudi da ba a kashe ba", "unspent_coins_details_title": "Bayanan tsabar kudi da ba a kashe ba",
"unspent_coins_title": "Tsabar da ba a kashe ba", "unspent_coins_title": "Tsabar da ba a kashe ba",
"unsupported_asset": "Ba mu goyi bayan wannan aikin don wannan kadara. Da fatan za a ƙirƙira ko canza zuwa walat na nau'in kadara mai tallafi.", "unsupported_asset": "Ba mu goyi bayan wannan aikin don wannan kadara. Da fatan za a ƙirƙira ko canza zuwa walat na nau'in kadara mai tallafi.",
"uptime": "Sama",
"upto": "har zuwa ${value}", "upto": "har zuwa ${value}",
"use": "Canja zuwa", "use": "Canja zuwa",
"use_card_info_three": "Yi amfani da katin dijital akan layi ko tare da hanyoyin biyan kuɗi mara lamba.", "use_card_info_three": "Yi amfani da katin dijital akan layi ko tare da hanyoyin biyan kuɗi mara lamba.",
@ -758,6 +767,7 @@
"view_key_private": "Duba maɓallin (maɓallin kalmar sirri)", "view_key_private": "Duba maɓallin (maɓallin kalmar sirri)",
"view_key_public": "Maɓallin Duba (maɓallin jama'a)", "view_key_public": "Maɓallin Duba (maɓallin jama'a)",
"view_transaction_on": "Dubo aikace-aikacen akan", "view_transaction_on": "Dubo aikace-aikacen akan",
"voting_weight": "Nauyi mai nauyi",
"waitFewSecondForTxUpdate": "Da fatan za a jira ƴan daƙiƙa don ciniki don yin tunani a tarihin ma'amala", "waitFewSecondForTxUpdate": "Da fatan za a jira ƴan daƙiƙa don ciniki don yin tunani a tarihin ma'amala",
"wallet_keys": "Iri/maɓalli na walat", "wallet_keys": "Iri/maɓalli na walat",
"wallet_list_create_new_wallet": "Ƙirƙiri Sabon Wallet", "wallet_list_create_new_wallet": "Ƙirƙiri Sabon Wallet",

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "गलत पिन", "auth_store_incorrect_password": "गलत पिन",
"authenticated": "प्रमाणीकृत", "authenticated": "प्रमाणीकृत",
"authentication": "प्रमाणीकरण", "authentication": "प्रमाणीकरण",
"auto_generate_addresses": "ऑटो उत्पन्न पते",
"auto_generate_subaddresses": "स्वचालित रूप से उप-पते उत्पन्न करें", "auto_generate_subaddresses": "स्वचालित रूप से उप-पते उत्पन्न करें",
"automatic": "स्वचालित", "automatic": "स्वचालित",
"available_balance": "उपलब्ध शेष राशि", "available_balance": "उपलब्ध शेष राशि",
@ -175,6 +176,7 @@
"debit_card": "डेबिट कार्ड", "debit_card": "डेबिट कार्ड",
"debit_card_terms": "इस डिजिटल वॉलेट में आपके भुगतान कार्ड नंबर (और आपके भुगतान कार्ड नंबर से संबंधित क्रेडेंशियल) का भंडारण और उपयोग भुगतान कार्ड जारीकर्ता के साथ लागू कार्डधारक समझौते के नियमों और शर्तों के अधीन है, जैसा कि प्रभावी है समय - समय पर।", "debit_card_terms": "इस डिजिटल वॉलेट में आपके भुगतान कार्ड नंबर (और आपके भुगतान कार्ड नंबर से संबंधित क्रेडेंशियल) का भंडारण और उपयोग भुगतान कार्ड जारीकर्ता के साथ लागू कार्डधारक समझौते के नियमों और शर्तों के अधीन है, जैसा कि प्रभावी है समय - समय पर।",
"decimal_places_error": "बहुत अधिक दशमलव स्थान", "decimal_places_error": "बहुत अधिक दशमलव स्थान",
"decimals_cannot_be_zero": "टोकन दशमलव शून्य नहीं हो सकता।",
"default_buy_provider": "डिफ़ॉल्ट खरीद प्रदाता", "default_buy_provider": "डिफ़ॉल्ट खरीद प्रदाता",
"default_sell_provider": "डिफ़ॉल्ट विक्रय प्रदाता", "default_sell_provider": "डिफ़ॉल्ट विक्रय प्रदाता",
"delete": "हटाएं", "delete": "हटाएं",
@ -355,6 +357,8 @@
"moonpay_alert_text": "राशि का मूल्य अधिक है या करने के लिए बराबर होना चाहिए ${minAmount} ${fiatCurrency}", "moonpay_alert_text": "राशि का मूल्य अधिक है या करने के लिए बराबर होना चाहिए ${minAmount} ${fiatCurrency}",
"more_options": "और विकल्प", "more_options": "और विकल्प",
"name": "नाम", "name": "नाम",
"nano_current_rep": "वर्तमान प्रतिनिधि",
"nano_pick_new_rep": "एक नया प्रतिनिधि चुनें",
"narrow": "सँकरा", "narrow": "सँकरा",
"new_first_wallet_text": "आसानी से अपनी क्रिप्टोक्यूरेंसी को सुरक्षित रखें", "new_first_wallet_text": "आसानी से अपनी क्रिप्टोक्यूरेंसी को सुरक्षित रखें",
"new_node_testing": "नई नोड परीक्षण", "new_node_testing": "नई नोड परीक्षण",
@ -465,6 +469,8 @@
"remove_node": "नोड निकालें", "remove_node": "नोड निकालें",
"remove_node_message": "क्या आप वाकई चयनित नोड को निकालना चाहते हैं?", "remove_node_message": "क्या आप वाकई चयनित नोड को निकालना चाहते हैं?",
"rename": "नाम बदलें", "rename": "नाम बदलें",
"rep_warning": "प्रतिनिधि चेतावनी",
"rep_warning_sub": "आपका प्रतिनिधि अच्छी स्थिति में नहीं दिखाई देता है। एक नया चयन करने के लिए यहां टैप करें",
"require_for_adding_contacts": "संपर्क जोड़ने के लिए आवश्यकता है", "require_for_adding_contacts": "संपर्क जोड़ने के लिए आवश्यकता है",
"require_for_all_security_and_backup_settings": "सभी सुरक्षा और बैकअप सेटिंग्स की आवश्यकता है", "require_for_all_security_and_backup_settings": "सभी सुरक्षा और बैकअप सेटिंग्स की आवश्यकता है",
"require_for_assessing_wallet": "वॉलेट तक पहुँचने के लिए आवश्यकता है", "require_for_assessing_wallet": "वॉलेट तक पहुँचने के लिए आवश्यकता है",
@ -579,6 +585,8 @@
"send_your_wallet": "आपका बटुआ", "send_your_wallet": "आपका बटुआ",
"sending": "भेजना", "sending": "भेजना",
"sent": "भेज दिया", "sent": "भेज दिया",
"service_health_disabled": "सेवा स्वास्थ्य बुलेटिन अक्षम है",
"service_health_disabled_message": "यह सेवा स्वास्थ्य बुलेटिन पृष्ठ है, आप इस पृष्ठ को सेटिंग्स के तहत सक्षम कर सकते हैं -> गोपनीयता",
"settings": "समायोजन", "settings": "समायोजन",
"settings_all": "सब", "settings_all": "सब",
"settings_allow_biometrical_authentication": "बायोमेट्रिक प्रमाणीकरण की अनुमति दें", "settings_allow_biometrical_authentication": "बायोमेट्रिक प्रमाणीकरण की अनुमति दें",
@ -742,6 +750,7 @@
"unspent_coins_details_title": "अव्ययित सिक्कों का विवरण", "unspent_coins_details_title": "अव्ययित सिक्कों का विवरण",
"unspent_coins_title": "खर्च न किए गए सिक्के", "unspent_coins_title": "खर्च न किए गए सिक्के",
"unsupported_asset": "हम इस संपत्ति के लिए इस कार्रवाई का समर्थन नहीं करते हैं. कृपया समर्थित परिसंपत्ति प्रकार का वॉलेट बनाएं या उस पर स्विच करें।", "unsupported_asset": "हम इस संपत्ति के लिए इस कार्रवाई का समर्थन नहीं करते हैं. कृपया समर्थित परिसंपत्ति प्रकार का वॉलेट बनाएं या उस पर स्विच करें।",
"uptime": "अपटाइम",
"upto": "${value} तक", "upto": "${value} तक",
"use": "उपयोग ", "use": "उपयोग ",
"use_card_info_three": "डिजिटल कार्ड का ऑनलाइन या संपर्क रहित भुगतान विधियों के साथ उपयोग करें।", "use_card_info_three": "डिजिटल कार्ड का ऑनलाइन या संपर्क रहित भुगतान विधियों के साथ उपयोग करें।",
@ -758,6 +767,7 @@
"view_key_private": "कुंजी देखें(निजी)", "view_key_private": "कुंजी देखें(निजी)",
"view_key_public": "कुंजी देखें (जनता)", "view_key_public": "कुंजी देखें (जनता)",
"view_transaction_on": "View Transaction on ", "view_transaction_on": "View Transaction on ",
"voting_weight": "वोटिंग वेट",
"waitFewSecondForTxUpdate": "लेन-देन इतिहास में लेन-देन प्रतिबिंबित होने के लिए कृपया कुछ सेकंड प्रतीक्षा करें", "waitFewSecondForTxUpdate": "लेन-देन इतिहास में लेन-देन प्रतिबिंबित होने के लिए कृपया कुछ सेकंड प्रतीक्षा करें",
"wallet_keys": "बटुआ बीज / चाबियाँ", "wallet_keys": "बटुआ बीज / चाबियाँ",
"wallet_list_create_new_wallet": "नया बटुआ बनाएँ", "wallet_list_create_new_wallet": "नया बटुआ बनाएँ",

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "Pogrešan PIN", "auth_store_incorrect_password": "Pogrešan PIN",
"authenticated": "Autentificiran", "authenticated": "Autentificiran",
"authentication": "Autentifikacija", "authentication": "Autentifikacija",
"auto_generate_addresses": "Automatsko generiranje adresa",
"auto_generate_subaddresses": "Automatski generirajte podadrese", "auto_generate_subaddresses": "Automatski generirajte podadrese",
"automatic": "Automatski", "automatic": "Automatski",
"available_balance": "Raspoloživ iznos", "available_balance": "Raspoloživ iznos",
@ -175,6 +176,7 @@
"debit_card": "Debitna kartica", "debit_card": "Debitna kartica",
"debit_card_terms": "Pohranjivanje i korištenje broja vaše platne kartice (i vjerodajnica koje odgovaraju broju vaše platne kartice) u ovom digitalnom novčaniku podliježu Uvjetima i odredbama važećeg ugovora vlasnika kartice s izdavateljem platne kartice, koji su na snazi od S vremena na vrijeme.", "debit_card_terms": "Pohranjivanje i korištenje broja vaše platne kartice (i vjerodajnica koje odgovaraju broju vaše platne kartice) u ovom digitalnom novčaniku podliježu Uvjetima i odredbama važećeg ugovora vlasnika kartice s izdavateljem platne kartice, koji su na snazi od S vremena na vrijeme.",
"decimal_places_error": "Previše decimalnih mjesta", "decimal_places_error": "Previše decimalnih mjesta",
"decimals_cannot_be_zero": "Token Decimal ne može biti nula.",
"default_buy_provider": "Zadani davatelj kupnje", "default_buy_provider": "Zadani davatelj kupnje",
"default_sell_provider": "Zadani dobavljač prodaje", "default_sell_provider": "Zadani dobavljač prodaje",
"delete": "Izbriši", "delete": "Izbriši",
@ -355,6 +357,8 @@
"moonpay_alert_text": "Vrijednost iznosa mora biti veća ili jednaka ${minAmount} ${fiatCurrency}", "moonpay_alert_text": "Vrijednost iznosa mora biti veća ili jednaka ${minAmount} ${fiatCurrency}",
"more_options": "Više opcija", "more_options": "Više opcija",
"name": "Ime", "name": "Ime",
"nano_current_rep": "Trenutni predstavnik",
"nano_pick_new_rep": "Odaberite novog predstavnika",
"narrow": "Usko", "narrow": "Usko",
"new_first_wallet_text": "Jednostavno čuvajte svoju kripto valutu", "new_first_wallet_text": "Jednostavno čuvajte svoju kripto valutu",
"new_node_testing": "Provjera novog nodea", "new_node_testing": "Provjera novog nodea",
@ -463,6 +467,8 @@
"remove_node": "Ukloni node", "remove_node": "Ukloni node",
"remove_node_message": "Jeste li sigurni da želite ukloniti odabrani node?", "remove_node_message": "Jeste li sigurni da želite ukloniti odabrani node?",
"rename": "Preimenuj", "rename": "Preimenuj",
"rep_warning": "Reprezentativno upozorenje",
"rep_warning_sub": "Čini se da vaš predstavnik nije u dobrom stanju. Dodirnite ovdje za odabir novog",
"require_for_adding_contacts": "Zahtijeva za dodavanje kontakata", "require_for_adding_contacts": "Zahtijeva za dodavanje kontakata",
"require_for_all_security_and_backup_settings": "Zahtijeva za sve postavke sigurnosti i sigurnosne kopije", "require_for_all_security_and_backup_settings": "Zahtijeva za sve postavke sigurnosti i sigurnosne kopije",
"require_for_assessing_wallet": "Potreban za pristup novčaniku", "require_for_assessing_wallet": "Potreban za pristup novčaniku",
@ -577,6 +583,8 @@
"send_your_wallet": "Tvoj novčanik", "send_your_wallet": "Tvoj novčanik",
"sending": "Slanje", "sending": "Slanje",
"sent": "Poslano", "sent": "Poslano",
"service_health_disabled": "Zdravstveni bilten usluge je onemogućen",
"service_health_disabled_message": "Ovo je stranica zdravstvenog biltena o usluzi, možete omogućiti ovu stranicu pod postavkama -> privatnost",
"settings": "Postavke", "settings": "Postavke",
"settings_all": "SVE", "settings_all": "SVE",
"settings_allow_biometrical_authentication": "Dopusti biometrijsku autentifikaciju", "settings_allow_biometrical_authentication": "Dopusti biometrijsku autentifikaciju",
@ -740,6 +748,7 @@
"unspent_coins_details_title": "Nepotrošeni detalji o novčićima", "unspent_coins_details_title": "Nepotrošeni detalji o novčićima",
"unspent_coins_title": "Nepotrošeni novčići", "unspent_coins_title": "Nepotrošeni novčići",
"unsupported_asset": "Ne podržavamo ovu radnju za ovaj materijal. Izradite ili prijeđite na novčanik podržane vrste sredstava.", "unsupported_asset": "Ne podržavamo ovu radnju za ovaj materijal. Izradite ili prijeđite na novčanik podržane vrste sredstava.",
"uptime": "Radno vrijeme",
"upto": "do ${value}", "upto": "do ${value}",
"use": "Prebaci na", "use": "Prebaci na",
"use_card_info_three": "Koristite digitalnu karticu online ili s beskontaktnim metodama plaćanja.", "use_card_info_three": "Koristite digitalnu karticu online ili s beskontaktnim metodama plaćanja.",
@ -756,6 +765,7 @@
"view_key_private": "View key (privatni)", "view_key_private": "View key (privatni)",
"view_key_public": "View key (javni)", "view_key_public": "View key (javni)",
"view_transaction_on": "View Transaction on ", "view_transaction_on": "View Transaction on ",
"voting_weight": "Težina glasanja",
"waitFewSecondForTxUpdate": "Pričekajte nekoliko sekundi da se transakcija prikaže u povijesti transakcija", "waitFewSecondForTxUpdate": "Pričekajte nekoliko sekundi da se transakcija prikaže u povijesti transakcija",
"wallet_keys": "Pristupni izraz/ključ novčanika", "wallet_keys": "Pristupni izraz/ključ novčanika",
"wallet_list_create_new_wallet": "Izradi novi novčanik", "wallet_list_create_new_wallet": "Izradi novi novčanik",

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "PIN yang salah", "auth_store_incorrect_password": "PIN yang salah",
"authenticated": "Terotentikasi", "authenticated": "Terotentikasi",
"authentication": "Otentikasi", "authentication": "Otentikasi",
"auto_generate_addresses": "Auto menghasilkan alamat",
"auto_generate_subaddresses": "Menghasilkan subalamat secara otomatis", "auto_generate_subaddresses": "Menghasilkan subalamat secara otomatis",
"automatic": "Otomatis", "automatic": "Otomatis",
"available_balance": "Saldo Tersedia", "available_balance": "Saldo Tersedia",
@ -175,6 +176,7 @@
"debit_card": "Kartu Debit", "debit_card": "Kartu Debit",
"debit_card_terms": "Penyimpanan dan penggunaan nomor kartu pembayaran Anda (dan kredensial yang sesuai dengan nomor kartu pembayaran Anda) dalam dompet digital ini tertakluk pada Syarat dan Ketentuan persetujuan pemegang kartu yang berlaku dengan penerbit kartu pembayaran, seperti yang berlaku dari waktu ke waktu.", "debit_card_terms": "Penyimpanan dan penggunaan nomor kartu pembayaran Anda (dan kredensial yang sesuai dengan nomor kartu pembayaran Anda) dalam dompet digital ini tertakluk pada Syarat dan Ketentuan persetujuan pemegang kartu yang berlaku dengan penerbit kartu pembayaran, seperti yang berlaku dari waktu ke waktu.",
"decimal_places_error": "Terlalu banyak tempat desimal", "decimal_places_error": "Terlalu banyak tempat desimal",
"decimals_cannot_be_zero": "Token desimal tidak bisa nol.",
"default_buy_provider": "Penyedia beli default", "default_buy_provider": "Penyedia beli default",
"default_sell_provider": "Penyedia Penjualan Default", "default_sell_provider": "Penyedia Penjualan Default",
"delete": "Hapus", "delete": "Hapus",
@ -355,6 +357,8 @@
"moonpay_alert_text": "Nilai jumlah harus lebih atau sama dengan ${minAmount} ${fiatCurrency}", "moonpay_alert_text": "Nilai jumlah harus lebih atau sama dengan ${minAmount} ${fiatCurrency}",
"more_options": "Opsi Lainnya", "more_options": "Opsi Lainnya",
"name": "Nama", "name": "Nama",
"nano_current_rep": "Perwakilan saat ini",
"nano_pick_new_rep": "Pilih perwakilan baru",
"narrow": "Sempit", "narrow": "Sempit",
"new_first_wallet_text": "Dengan mudah menjaga cryptocurrency Anda aman", "new_first_wallet_text": "Dengan mudah menjaga cryptocurrency Anda aman",
"new_node_testing": "Pengujian node baru", "new_node_testing": "Pengujian node baru",
@ -465,6 +469,8 @@
"remove_node": "Hapus node", "remove_node": "Hapus node",
"remove_node_message": "Apakah Anda yakin ingin menghapus node yang dipilih?", "remove_node_message": "Apakah Anda yakin ingin menghapus node yang dipilih?",
"rename": "Ganti nama", "rename": "Ganti nama",
"rep_warning": "Peringatan Perwakilan",
"rep_warning_sub": "Perwakilan Anda tampaknya tidak bereputasi baik. Ketuk di sini untuk memilih yang baru",
"require_for_adding_contacts": "Membutuhkan untuk menambahkan kontak", "require_for_adding_contacts": "Membutuhkan untuk menambahkan kontak",
"require_for_all_security_and_backup_settings": "Memerlukan untuk semua pengaturan keamanan dan pencadangan", "require_for_all_security_and_backup_settings": "Memerlukan untuk semua pengaturan keamanan dan pencadangan",
"require_for_assessing_wallet": "Diperlukan untuk mengakses dompet", "require_for_assessing_wallet": "Diperlukan untuk mengakses dompet",
@ -580,6 +586,8 @@
"send_your_wallet": "Dompetmu", "send_your_wallet": "Dompetmu",
"sending": "Mengirim", "sending": "Mengirim",
"sent": "Dikirim", "sent": "Dikirim",
"service_health_disabled": "Buletin Kesehatan Layanan dinonaktifkan",
"service_health_disabled_message": "Ini adalah halaman Buletin Kesehatan Layanan, Anda dapat mengaktifkan halaman ini di bawah Pengaturan -> Privasi",
"settings": "Pengaturan", "settings": "Pengaturan",
"settings_all": "SEMUA", "settings_all": "SEMUA",
"settings_allow_biometrical_authentication": "Izinkan otentikasi biometrik", "settings_allow_biometrical_authentication": "Izinkan otentikasi biometrik",
@ -743,6 +751,7 @@
"unspent_coins_details_title": "Rincian koin yang tidak terpakai", "unspent_coins_details_title": "Rincian koin yang tidak terpakai",
"unspent_coins_title": "Koin yang tidak terpakai", "unspent_coins_title": "Koin yang tidak terpakai",
"unsupported_asset": "Kami tidak mendukung tindakan ini untuk aset ini. Harap buat atau alihkan ke dompet dari jenis aset yang didukung.", "unsupported_asset": "Kami tidak mendukung tindakan ini untuk aset ini. Harap buat atau alihkan ke dompet dari jenis aset yang didukung.",
"uptime": "Uptime",
"upto": "hingga ${value}", "upto": "hingga ${value}",
"use": "Beralih ke ", "use": "Beralih ke ",
"use_card_info_three": "Gunakan kartu digital secara online atau dengan metode pembayaran tanpa kontak.", "use_card_info_three": "Gunakan kartu digital secara online atau dengan metode pembayaran tanpa kontak.",
@ -759,6 +768,7 @@
"view_key_private": "Kunci tampilan (privat)", "view_key_private": "Kunci tampilan (privat)",
"view_key_public": "Kunci tampilan (publik)", "view_key_public": "Kunci tampilan (publik)",
"view_transaction_on": "Lihat Transaksi di ", "view_transaction_on": "Lihat Transaksi di ",
"voting_weight": "Berat voting",
"waitFewSecondForTxUpdate": "Mohon tunggu beberapa detik hingga transaksi terlihat di riwayat transaksi", "waitFewSecondForTxUpdate": "Mohon tunggu beberapa detik hingga transaksi terlihat di riwayat transaksi",
"wallet_keys": "Seed/kunci dompet", "wallet_keys": "Seed/kunci dompet",
"wallet_list_create_new_wallet": "Buat Dompet Baru", "wallet_list_create_new_wallet": "Buat Dompet Baru",

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "PIN non corretto", "auth_store_incorrect_password": "PIN non corretto",
"authenticated": "Autenticato", "authenticated": "Autenticato",
"authentication": "Autenticazione", "authentication": "Autenticazione",
"auto_generate_addresses": "Auto Genera indirizzi",
"auto_generate_subaddresses": "Genera automaticamente sottindirizzi", "auto_generate_subaddresses": "Genera automaticamente sottindirizzi",
"automatic": "Automatico", "automatic": "Automatico",
"available_balance": "Saldo Disponibile", "available_balance": "Saldo Disponibile",
@ -176,6 +177,7 @@
"debit_card": "Carta di debito", "debit_card": "Carta di debito",
"debit_card_terms": "L'archiviazione e l'utilizzo del numero della carta di pagamento (e delle credenziali corrispondenti al numero della carta di pagamento) in questo portafoglio digitale sono soggetti ai Termini e condizioni del contratto applicabile con il titolare della carta con l'emittente della carta di pagamento, come in vigore da tempo al tempo.", "debit_card_terms": "L'archiviazione e l'utilizzo del numero della carta di pagamento (e delle credenziali corrispondenti al numero della carta di pagamento) in questo portafoglio digitale sono soggetti ai Termini e condizioni del contratto applicabile con il titolare della carta con l'emittente della carta di pagamento, come in vigore da tempo al tempo.",
"decimal_places_error": "Troppe cifre decimali", "decimal_places_error": "Troppe cifre decimali",
"decimals_cannot_be_zero": "Il decimale token non può essere zero.",
"default_buy_provider": "Provider di acquisto predefinito", "default_buy_provider": "Provider di acquisto predefinito",
"default_sell_provider": "Fornitore di vendita predefinito", "default_sell_provider": "Fornitore di vendita predefinito",
"delete": "Elimina", "delete": "Elimina",
@ -356,6 +358,8 @@
"moonpay_alert_text": "Il valore dell'importo deve essere maggiore o uguale a ${minAmount} ${fiatCurrency}", "moonpay_alert_text": "Il valore dell'importo deve essere maggiore o uguale a ${minAmount} ${fiatCurrency}",
"more_options": "Altre opzioni", "more_options": "Altre opzioni",
"name": "Nome", "name": "Nome",
"nano_current_rep": "Rappresentante attuale",
"nano_pick_new_rep": "Scegli un nuovo rappresentante",
"narrow": "Stretto", "narrow": "Stretto",
"new_first_wallet_text": "Mantieni facilmente la tua criptovaluta al sicuro", "new_first_wallet_text": "Mantieni facilmente la tua criptovaluta al sicuro",
"new_node_testing": "Test novo nodo", "new_node_testing": "Test novo nodo",
@ -465,6 +469,8 @@
"remove_node": "Rimuovi nodo", "remove_node": "Rimuovi nodo",
"remove_node_message": "Sei sicuro di voler rimuovere il nodo selezionato?", "remove_node_message": "Sei sicuro di voler rimuovere il nodo selezionato?",
"rename": "Rinomina", "rename": "Rinomina",
"rep_warning": "Avvertenza rappresentativa",
"rep_warning_sub": "Il tuo rappresentante non sembra essere in regola. Tocca qui per selezionarne uno nuovo",
"require_for_adding_contacts": "Richiesto per l'aggiunta di contatti", "require_for_adding_contacts": "Richiesto per l'aggiunta di contatti",
"require_for_all_security_and_backup_settings": "Richiedi per tutte le impostazioni di sicurezza e backup", "require_for_all_security_and_backup_settings": "Richiedi per tutte le impostazioni di sicurezza e backup",
"require_for_assessing_wallet": "Richiesto per l'accesso al portafoglio", "require_for_assessing_wallet": "Richiesto per l'accesso al portafoglio",
@ -579,6 +585,8 @@
"send_your_wallet": "Il tuo portafoglio", "send_your_wallet": "Il tuo portafoglio",
"sending": "Invio", "sending": "Invio",
"sent": "Inviato", "sent": "Inviato",
"service_health_disabled": "Il Bollettino sanitario di servizio è disabilitato",
"service_health_disabled_message": "Questa è la pagina del Bollettino sanitario del servizio, è possibile abilitare questa pagina in Impostazioni -> Privacy",
"settings": "Impostazioni", "settings": "Impostazioni",
"settings_all": "TUTTO", "settings_all": "TUTTO",
"settings_allow_biometrical_authentication": "Consenti autenticazione biometrica", "settings_allow_biometrical_authentication": "Consenti autenticazione biometrica",
@ -742,6 +750,7 @@
"unspent_coins_details_title": "Dettagli sulle monete non spese", "unspent_coins_details_title": "Dettagli sulle monete non spese",
"unspent_coins_title": "Monete non spese", "unspent_coins_title": "Monete non spese",
"unsupported_asset": "Non supportiamo questa azione per questa risorsa. Crea o passa a un portafoglio di un tipo di asset supportato.", "unsupported_asset": "Non supportiamo questa azione per questa risorsa. Crea o passa a un portafoglio di un tipo di asset supportato.",
"uptime": "Uptime",
"upto": "fino a ${value}", "upto": "fino a ${value}",
"use": "Passa a ", "use": "Passa a ",
"use_card_info_three": "Utilizza la carta digitale online o con metodi di pagamento contactless.", "use_card_info_three": "Utilizza la carta digitale online o con metodi di pagamento contactless.",
@ -758,6 +767,7 @@
"view_key_private": "Chiave di visualizzazione (privata)", "view_key_private": "Chiave di visualizzazione (privata)",
"view_key_public": "Chiave di visualizzazione (pubblica)", "view_key_public": "Chiave di visualizzazione (pubblica)",
"view_transaction_on": "View Transaction on ", "view_transaction_on": "View Transaction on ",
"voting_weight": "Peso di voto",
"waitFewSecondForTxUpdate": "Attendi qualche secondo affinché la transazione venga riflessa nella cronologia delle transazioni", "waitFewSecondForTxUpdate": "Attendi qualche secondo affinché la transazione venga riflessa nella cronologia delle transazioni",
"waiting_payment_confirmation": "In attesa di conferma del pagamento", "waiting_payment_confirmation": "In attesa di conferma del pagamento",
"wallet_keys": "Seme Portafoglio /chiavi", "wallet_keys": "Seme Portafoglio /chiavi",

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "間違ったPIN", "auth_store_incorrect_password": "間違ったPIN",
"authenticated": "認証済み", "authenticated": "認証済み",
"authentication": "認証", "authentication": "認証",
"auto_generate_addresses": "Autoはアドレスを生成します",
"auto_generate_subaddresses": "Autoはサブアドレスを生成します", "auto_generate_subaddresses": "Autoはサブアドレスを生成します",
"automatic": "自動", "automatic": "自動",
"available_balance": "利用可能残高", "available_balance": "利用可能残高",
@ -175,6 +176,7 @@
"debit_card": "デビットカード", "debit_card": "デビットカード",
"debit_card_terms": "このデジタルウォレットでの支払いカード番号(および支払いカード番号に対応する資格情報)の保存と使用には、支払いカード発行者との該当するカード所有者契約の利用規約が適用されます。時々。", "debit_card_terms": "このデジタルウォレットでの支払いカード番号(および支払いカード番号に対応する資格情報)の保存と使用には、支払いカード発行者との該当するカード所有者契約の利用規約が適用されます。時々。",
"decimal_places_error": "小数点以下の桁数が多すぎる", "decimal_places_error": "小数点以下の桁数が多すぎる",
"decimals_cannot_be_zero": "トークン小数はゼロにすることはできません。",
"default_buy_provider": "デフォルトの購入プロバイダー", "default_buy_provider": "デフォルトの購入プロバイダー",
"default_sell_provider": "デフォルトの販売プロバイダー", "default_sell_provider": "デフォルトの販売プロバイダー",
"delete": "削除する", "delete": "削除する",
@ -356,6 +358,8 @@
"moonpay_alert_text": "金額の値は以上でなければなりません ${minAmount} ${fiatCurrency}", "moonpay_alert_text": "金額の値は以上でなければなりません ${minAmount} ${fiatCurrency}",
"more_options": "その他のオプション", "more_options": "その他のオプション",
"name": "名前", "name": "名前",
"nano_current_rep": "現在の代表",
"nano_pick_new_rep": "新しい代表者を選びます",
"narrow": "狭い", "narrow": "狭い",
"new_first_wallet_text": "暗号通貨を簡単に安全に保ちます", "new_first_wallet_text": "暗号通貨を簡単に安全に保ちます",
"new_node_testing": "新しいノードのテスト", "new_node_testing": "新しいノードのテスト",
@ -464,6 +468,8 @@
"remove_node": "ノードを削除", "remove_node": "ノードを削除",
"remove_node_message": "選択したノードを削除してもよろしいですか?", "remove_node_message": "選択したノードを削除してもよろしいですか?",
"rename": "リネーム", "rename": "リネーム",
"rep_warning": "代表的な警告",
"rep_warning_sub": "あなたの代表者は良好な状態ではないようです。ここをタップして、新しいものを選択します",
"require_for_adding_contacts": "連絡先の追加に必要", "require_for_adding_contacts": "連絡先の追加に必要",
"require_for_all_security_and_backup_settings": "すべてのセキュリティおよびバックアップ設定に必須", "require_for_all_security_and_backup_settings": "すべてのセキュリティおよびバックアップ設定に必須",
"require_for_assessing_wallet": "ウォレットにアクセスするために必要です", "require_for_assessing_wallet": "ウォレットにアクセスするために必要です",
@ -578,6 +584,8 @@
"send_your_wallet": "あなたの財布", "send_your_wallet": "あなたの財布",
"sending": "送信", "sending": "送信",
"sent": "送信済み", "sent": "送信済み",
"service_health_disabled": "サービスヘルス速報は無効です",
"service_health_disabled_message": "これはService Health Bulletinページです。設定の下でこのページを有効にすることができます - >プライバシー",
"settings": "設定", "settings": "設定",
"settings_all": "すべて", "settings_all": "すべて",
"settings_allow_biometrical_authentication": "生体認証を許可する", "settings_allow_biometrical_authentication": "生体認証を許可する",
@ -741,6 +749,7 @@
"unspent_coins_details_title": "未使用のコインの詳細", "unspent_coins_details_title": "未使用のコインの詳細",
"unspent_coins_title": "未使用のコイン", "unspent_coins_title": "未使用のコイン",
"unsupported_asset": "このアセットに対するこのアクションはサポートされていません。サポートされているアセットタイプのウォレットを作成するか、ウォレットに切り替えてください。", "unsupported_asset": "このアセットに対するこのアクションはサポートされていません。サポートされているアセットタイプのウォレットを作成するか、ウォレットに切り替えてください。",
"uptime": "稼働時間",
"upto": "up up ${value}", "upto": "up up ${value}",
"use": "使用する ", "use": "使用する ",
"use_card_info_three": "デジタルカードをオンラインまたは非接触型決済方法で使用してください。", "use_card_info_three": "デジタルカードをオンラインまたは非接触型決済方法で使用してください。",
@ -757,6 +766,7 @@
"view_key_private": "ビューキー (プライベート)", "view_key_private": "ビューキー (プライベート)",
"view_key_public": "ビューキー (パブリック)", "view_key_public": "ビューキー (パブリック)",
"view_transaction_on": "View Transaction on ", "view_transaction_on": "View Transaction on ",
"voting_weight": "投票重み",
"waitFewSecondForTxUpdate": "取引履歴に取引が反映されるまで数秒お待ちください。", "waitFewSecondForTxUpdate": "取引履歴に取引が反映されるまで数秒お待ちください。",
"wallet_keys": "ウォレットシード/キー", "wallet_keys": "ウォレットシード/キー",
"wallet_list_create_new_wallet": "新しいウォレットを作成", "wallet_list_create_new_wallet": "新しいウォレットを作成",
@ -809,4 +819,4 @@
"you_will_get": "に変換", "you_will_get": "に変換",
"you_will_send": "から変換", "you_will_send": "から変換",
"yy": "YY" "yy": "YY"
} }

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "잘못된 PIN", "auth_store_incorrect_password": "잘못된 PIN",
"authenticated": "인증", "authenticated": "인증",
"authentication": "입증", "authentication": "입증",
"auto_generate_addresses": "자동 생성 주소",
"auto_generate_subaddresses": "자동 생성 서브 아드 드레스", "auto_generate_subaddresses": "자동 생성 서브 아드 드레스",
"automatic": "자동적 인", "automatic": "자동적 인",
"available_balance": "사용 가능한 잔액", "available_balance": "사용 가능한 잔액",
@ -175,6 +176,7 @@
"debit_card": "직불 카드", "debit_card": "직불 카드",
"debit_card_terms": "이 디지털 지갑에 있는 귀하의 지불 카드 번호(및 귀하의 지불 카드 번호에 해당하는 자격 증명)의 저장 및 사용은 부터 발효되는 지불 카드 발행자와의 해당 카드 소지자 계약의 이용 약관을 따릅니다. 수시로.", "debit_card_terms": "이 디지털 지갑에 있는 귀하의 지불 카드 번호(및 귀하의 지불 카드 번호에 해당하는 자격 증명)의 저장 및 사용은 부터 발효되는 지불 카드 발행자와의 해당 카드 소지자 계약의 이용 약관을 따릅니다. 수시로.",
"decimal_places_error": "소수점 이하 자릿수가 너무 많습니다.", "decimal_places_error": "소수점 이하 자릿수가 너무 많습니다.",
"decimals_cannot_be_zero": "토큰 소수점은 0이 될 수 없습니다.",
"default_buy_provider": "기본 구매 제공자", "default_buy_provider": "기본 구매 제공자",
"default_sell_provider": "기본 판매 공급자", "default_sell_provider": "기본 판매 공급자",
"delete": "지우다", "delete": "지우다",
@ -355,6 +357,8 @@
"moonpay_alert_text": "금액은 다음보다 크거나 같아야합니다 ${minAmount} ${fiatCurrency}", "moonpay_alert_text": "금액은 다음보다 크거나 같아야합니다 ${minAmount} ${fiatCurrency}",
"more_options": "추가 옵션", "more_options": "추가 옵션",
"name": "이름", "name": "이름",
"nano_current_rep": "현재 대표",
"nano_pick_new_rep": "새로운 담당자를 선택하십시오",
"narrow": "좁은", "narrow": "좁은",
"new_first_wallet_text": "cryptocurrency를 쉽게 안전하게 유지하십시오", "new_first_wallet_text": "cryptocurrency를 쉽게 안전하게 유지하십시오",
"new_node_testing": "새로운 노드 테스트", "new_node_testing": "새로운 노드 테스트",
@ -421,8 +425,8 @@
"placeholder_transactions": "거래가 여기에 표시됩니다", "placeholder_transactions": "거래가 여기에 표시됩니다",
"please_fill_totp": "다른 기기에 있는 8자리 코드를 입력하세요.", "please_fill_totp": "다른 기기에 있는 8자리 코드를 입력하세요.",
"please_make_selection": "아래에서 선택하십시오 지갑 만들기 또는 복구.", "please_make_selection": "아래에서 선택하십시오 지갑 만들기 또는 복구.",
"Please_reference_document": "자세한 내용은 아래 문서를 참조하십시오.",
"please_reference_document": "자세한 내용은 아래 문서를 참조하십시오.", "please_reference_document": "자세한 내용은 아래 문서를 참조하십시오.",
"Please_reference_document": "자세한 내용은 아래 문서를 참조하십시오.",
"please_select": "선택 해주세요:", "please_select": "선택 해주세요:",
"please_select_backup_file": "백업 파일을 선택하고 백업 암호를 입력하십시오.", "please_select_backup_file": "백업 파일을 선택하고 백업 암호를 입력하십시오.",
"please_try_to_connect_to_another_node": "다른 노드에 연결을 시도하십시오", "please_try_to_connect_to_another_node": "다른 노드에 연결을 시도하십시오",
@ -464,6 +468,8 @@
"remove_node": "노드 제거", "remove_node": "노드 제거",
"remove_node_message": "선택한 노드를 제거 하시겠습니까?", "remove_node_message": "선택한 노드를 제거 하시겠습니까?",
"rename": "이름 바꾸기", "rename": "이름 바꾸기",
"rep_warning": "대표 경고",
"rep_warning_sub": "귀하의 대표는 양호한 상태가 아닌 것 같습니다. 새 것을 선택하려면 여기를 탭하십시오",
"require_for_adding_contacts": "연락처 추가에 필요", "require_for_adding_contacts": "연락처 추가에 필요",
"require_for_all_security_and_backup_settings": "모든 보안 및 백업 설정에 필요", "require_for_all_security_and_backup_settings": "모든 보안 및 백업 설정에 필요",
"require_for_assessing_wallet": "지갑 접근을 위해 필요", "require_for_assessing_wallet": "지갑 접근을 위해 필요",
@ -578,6 +584,8 @@
"send_your_wallet": "지갑", "send_your_wallet": "지갑",
"sending": "배상", "sending": "배상",
"sent": "보냄", "sent": "보냄",
"service_health_disabled": "서비스 건강 게시판이 장애가되었습니다",
"service_health_disabled_message": "이것은 서비스 건강 게시판 페이지입니다. 설정 에서이 페이지를 활성화 할 수 있습니다 -> 개인 정보",
"settings": "설정", "settings": "설정",
"settings_all": "모든", "settings_all": "모든",
"settings_allow_biometrical_authentication": "생체 인증 허용", "settings_allow_biometrical_authentication": "생체 인증 허용",
@ -741,6 +749,7 @@
"unspent_coins_details_title": "사용하지 않은 동전 세부 정보", "unspent_coins_details_title": "사용하지 않은 동전 세부 정보",
"unspent_coins_title": "사용하지 않은 동전", "unspent_coins_title": "사용하지 않은 동전",
"unsupported_asset": "이 저작물에 대해 이 작업을 지원하지 않습니다. 지원되는 자산 유형의 지갑을 생성하거나 전환하십시오.", "unsupported_asset": "이 저작물에 대해 이 작업을 지원하지 않습니다. 지원되는 자산 유형의 지갑을 생성하거나 전환하십시오.",
"uptime": "가동 시간",
"upto": "최대 ${value}", "upto": "최대 ${value}",
"use": "사용하다 ", "use": "사용하다 ",
"use_card_info_three": "디지털 카드를 온라인 또는 비접촉식 결제 수단으로 사용하십시오.", "use_card_info_three": "디지털 카드를 온라인 또는 비접촉식 결제 수단으로 사용하십시오.",
@ -757,6 +766,7 @@
"view_key_private": "키보기(은밀한)", "view_key_private": "키보기(은밀한)",
"view_key_public": "키보기 (공공의)", "view_key_public": "키보기 (공공의)",
"view_transaction_on": "View Transaction on ", "view_transaction_on": "View Transaction on ",
"voting_weight": "투표 중량",
"waitFewSecondForTxUpdate": "거래 내역에 거래가 반영될 때까지 몇 초 정도 기다려 주세요.", "waitFewSecondForTxUpdate": "거래 내역에 거래가 반영될 때까지 몇 초 정도 기다려 주세요.",
"wallet_keys": "지갑 시드 / 키", "wallet_keys": "지갑 시드 / 키",
"wallet_list_create_new_wallet": "새 월렛 만들기", "wallet_list_create_new_wallet": "새 월렛 만들기",
@ -810,4 +820,4 @@
"you_will_send": "다음에서 변환", "you_will_send": "다음에서 변환",
"YY": "YY", "YY": "YY",
"yy": "YY" "yy": "YY"
} }

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "ပင်နံပါတ် မှားနေသည်။", "auth_store_incorrect_password": "ပင်နံပါတ် မှားနေသည်။",
"authenticated": "အစစ်အမှန်", "authenticated": "အစစ်အမှန်",
"authentication": "စစ်ဆေးခြင်း", "authentication": "စစ်ဆေးခြင်း",
"auto_generate_addresses": "Auto Generate လိပ်စာများ",
"auto_generate_subaddresses": "အော်တို Generate Subaddresses", "auto_generate_subaddresses": "အော်တို Generate Subaddresses",
"automatic": "အလိုအလျောက်", "automatic": "အလိုအလျောက်",
"available_balance": "လက်ကျန်ငွေ ရရှိနိုင်", "available_balance": "လက်ကျန်ငွေ ရရှိနိုင်",
@ -175,6 +176,7 @@
"debit_card": "ဒက်ဘစ်ကတ်", "debit_card": "ဒက်ဘစ်ကတ်",
"debit_card_terms": "ဤဒစ်ဂျစ်တယ်ပိုက်ဆံအိတ်ရှိ သင့်ငွေပေးချေမှုကတ်နံပါတ် (နှင့် သင့်ငွေပေးချေကတ်နံပါတ်နှင့် သက်ဆိုင်သောအထောက်အထားများ) ၏ သိုလှောင်မှုနှင့် အသုံးပြုမှုသည် အချိန်အခါနှင့်အမျှ သက်ရောက်မှုရှိသကဲ့သို့ ကတ်ကိုင်ဆောင်ထားသူ၏ သဘောတူညီချက်၏ စည်းကမ်းသတ်မှတ်ချက်များနှင့် ကိုက်ညီပါသည်။", "debit_card_terms": "ဤဒစ်ဂျစ်တယ်ပိုက်ဆံအိတ်ရှိ သင့်ငွေပေးချေမှုကတ်နံပါတ် (နှင့် သင့်ငွေပေးချေကတ်နံပါတ်နှင့် သက်ဆိုင်သောအထောက်အထားများ) ၏ သိုလှောင်မှုနှင့် အသုံးပြုမှုသည် အချိန်အခါနှင့်အမျှ သက်ရောက်မှုရှိသကဲ့သို့ ကတ်ကိုင်ဆောင်ထားသူ၏ သဘောတူညီချက်၏ စည်းကမ်းသတ်မှတ်ချက်များနှင့် ကိုက်ညီပါသည်။",
"decimal_places_error": "ဒဿမနေရာများ များလွန်းသည်။", "decimal_places_error": "ဒဿမနေရာများ များလွန်းသည်။",
"decimals_cannot_be_zero": "တိုကင်ဒ decimal မသုညမဖြစ်နိုင်ပါ။",
"default_buy_provider": "Default Provider ကိုဝယ်ပါ", "default_buy_provider": "Default Provider ကိုဝယ်ပါ",
"default_sell_provider": "ပုံသေရောင်းချပေးသူ", "default_sell_provider": "ပုံသေရောင်းချပေးသူ",
"delete": "ဖျက်ပါ။", "delete": "ဖျက်ပါ။",
@ -355,6 +357,8 @@
"moonpay_alert_text": "ပမာဏ၏တန်ဖိုးသည် ${minAmount} ${fiatCurrency} နှင့် ပိုနေရမည်", "moonpay_alert_text": "ပမာဏ၏တန်ဖိုးသည် ${minAmount} ${fiatCurrency} နှင့် ပိုနေရမည်",
"more_options": "နောက်ထပ် ရွေးချယ်စရာများ", "more_options": "နောက်ထပ် ရွေးချယ်စရာများ",
"name": "နာမည်", "name": "နာမည်",
"nano_current_rep": "လက်ရှိကိုယ်စားလှယ်",
"nano_pick_new_rep": "အသစ်တစ်ခုကိုရွေးပါ",
"narrow": "ကျဉ်းသော", "narrow": "ကျဉ်းသော",
"new_first_wallet_text": "သင့်ရဲ့ cryptocurrencrencres ကိုအလွယ်တကူလုံခြုံစွာထားရှိပါ", "new_first_wallet_text": "သင့်ရဲ့ cryptocurrencrencres ကိုအလွယ်တကူလုံခြုံစွာထားရှိပါ",
"new_node_testing": "နှာခေါင်း အသစ်စမ်းသပ်ခြင်း။", "new_node_testing": "နှာခေါင်း အသစ်စမ်းသပ်ခြင်း။",
@ -463,6 +467,8 @@
"remove_node": "နှာခေါင်း ကို ဖယ်ရှားပါ။", "remove_node": "နှာခေါင်း ကို ဖယ်ရှားပါ။",
"remove_node_message": "ရွေးချယ်ထားသော ကုဒ်ကို ဖယ်ရှားလိုသည်မှာ သေချာပါသလား။", "remove_node_message": "ရွေးချယ်ထားသော ကုဒ်ကို ဖယ်ရှားလိုသည်မှာ သေချာပါသလား။",
"rename": "အမည်ပြောင်းပါ။", "rename": "အမည်ပြောင်းပါ။",
"rep_warning": "ကိုယ်စားလှယ်သတိပေးချက်",
"rep_warning_sub": "သင်၏ကိုယ်စားလှယ်သည်ကောင်းမွန်သောရပ်တည်မှုတွင်မဖြစ်သင့်ပါ။ အသစ်တစ်ခုကိုရွေးချယ်ရန်ဤနေရာတွင်အသာပုတ်ပါ",
"require_for_adding_contacts": "အဆက်အသွယ်များထည့်ရန် လိုအပ်သည်။", "require_for_adding_contacts": "အဆက်အသွယ်များထည့်ရန် လိုအပ်သည်။",
"require_for_all_security_and_backup_settings": "လုံခြုံရေးနှင့် အရန်ဆက်တင်များအားလုံးအတွက် လိုအပ်ပါသည်။", "require_for_all_security_and_backup_settings": "လုံခြုံရေးနှင့် အရန်ဆက်တင်များအားလုံးအတွက် လိုအပ်ပါသည်။",
"require_for_assessing_wallet": "ပိုက်ဆံအိတ်ကို ဝင်သုံးရန် လိုအပ်သည်။", "require_for_assessing_wallet": "ပိုက်ဆံအိတ်ကို ဝင်သုံးရန် လိုအပ်သည်။",
@ -577,6 +583,8 @@
"send_your_wallet": "သင့်ပိုက်ဆံအိတ်", "send_your_wallet": "သင့်ပိုက်ဆံအိတ်",
"sending": "ပေးပို့ခြင်း။", "sending": "ပေးပို့ခြင်း။",
"sent": "ပို့လိုက်ပါတယ်။", "sent": "ပို့လိုက်ပါတယ်။",
"service_health_disabled": "ဝန်ဆောင်မှုကျန်းမာရေးစာစောင်အားပိတ်ထားသည်",
"service_health_disabled_message": "ဤသည်မှာ 0 န်ဆောင်မှုကျန်းမာရေးစာစောင်စာမျက်နှာတွင်ဤစာမျက်နှာကို Settings အောက်တွင်ဖွင့်ထားနိုင်သည်",
"settings": "ဆက်တင်များ", "settings": "ဆက်တင်များ",
"settings_all": "အားလုံး", "settings_all": "အားလုံး",
"settings_allow_biometrical_authentication": "ဇီဝဗေဒဆိုင်ရာ အထောက်အထားစိစစ်ခြင်းကို ခွင့်ပြုပါ။", "settings_allow_biometrical_authentication": "ဇီဝဗေဒဆိုင်ရာ အထောက်အထားစိစစ်ခြင်းကို ခွင့်ပြုပါ။",
@ -740,6 +748,7 @@
"unspent_coins_details_title": "အသုံးမဝင်သော အကြွေစေ့အသေးစိတ်များ", "unspent_coins_details_title": "အသုံးမဝင်သော အကြွေစေ့အသေးစိတ်များ",
"unspent_coins_title": "အသုံးမဝင်သော အကြွေစေ့များ", "unspent_coins_title": "အသုံးမဝင်သော အကြွေစေ့များ",
"unsupported_asset": "ဤပိုင်ဆိုင်မှုအတွက် ဤလုပ်ဆောင်ချက်ကို ကျွန်ုပ်တို့ မပံ့ပိုးပါ။ ကျေးဇူးပြု၍ ပံ့ပိုးပေးထားသော ပိုင်ဆိုင်မှုအမျိုးအစား၏ ပိုက်ဆံအိတ်ကို ဖန်တီးပါ သို့မဟုတ် ပြောင်းပါ။", "unsupported_asset": "ဤပိုင်ဆိုင်မှုအတွက် ဤလုပ်ဆောင်ချက်ကို ကျွန်ုပ်တို့ မပံ့ပိုးပါ။ ကျေးဇူးပြု၍ ပံ့ပိုးပေးထားသော ပိုင်ဆိုင်မှုအမျိုးအစား၏ ပိုက်ဆံအိတ်ကို ဖန်တီးပါ သို့မဟုတ် ပြောင်းပါ။",
"uptime": "အထက်က",
"upto": "${value} အထိ", "upto": "${value} အထိ",
"use": "သို့ပြောင်းပါ။", "use": "သို့ပြောင်းပါ။",
"use_card_info_three": "ဒစ်ဂျစ်တယ်ကတ်ကို အွန်လိုင်း သို့မဟုတ် ထိတွေ့မှုမဲ့ ငွေပေးချေမှုနည်းလမ်းများဖြင့် အသုံးပြုပါ။", "use_card_info_three": "ဒစ်ဂျစ်တယ်ကတ်ကို အွန်လိုင်း သို့မဟုတ် ထိတွေ့မှုမဲ့ ငွေပေးချေမှုနည်းလမ်းများဖြင့် အသုံးပြုပါ။",
@ -756,6 +765,7 @@
"view_key_private": "သော့ကိုကြည့်ရန် (သီးသန့်)", "view_key_private": "သော့ကိုကြည့်ရန် (သီးသန့်)",
"view_key_public": "သော့ကိုကြည့်ရန် (အများပြည်သူ)", "view_key_public": "သော့ကိုကြည့်ရန် (အများပြည်သူ)",
"view_transaction_on": "ငွေလွှဲခြင်းကို ဖွင့်ကြည့်ပါ။", "view_transaction_on": "ငွေလွှဲခြင်းကို ဖွင့်ကြည့်ပါ။",
"voting_weight": "မဲပေးအလေးချိန်",
"waitFewSecondForTxUpdate": "ငွေပေးငွေယူ မှတ်တမ်းတွင် ရောင်ပြန်ဟပ်ရန် စက္ကန့်အနည်းငယ်စောင့်ပါ။", "waitFewSecondForTxUpdate": "ငွေပေးငွေယူ မှတ်တမ်းတွင် ရောင်ပြန်ဟပ်ရန် စက္ကန့်အနည်းငယ်စောင့်ပါ။",
"wallet_keys": "ပိုက်ဆံအိတ် အစေ့/သော့များ", "wallet_keys": "ပိုက်ဆံအိတ် အစေ့/သော့များ",
"wallet_list_create_new_wallet": "Wallet အသစ်ဖန်တီးပါ။", "wallet_list_create_new_wallet": "Wallet အသစ်ဖန်တီးပါ။",
@ -808,4 +818,4 @@
"you_will_get": "သို့ပြောင်းပါ။", "you_will_get": "သို့ပြောင်းပါ။",
"you_will_send": "မှပြောင်းပါ။", "you_will_send": "မှပြောင်းပါ။",
"yy": "YY" "yy": "YY"
} }

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "Incorrect PIN", "auth_store_incorrect_password": "Incorrect PIN",
"authenticated": "Authenticated", "authenticated": "Authenticated",
"authentication": "Authenticatie", "authentication": "Authenticatie",
"auto_generate_addresses": "Auto -genereer adressen",
"auto_generate_subaddresses": "Automatisch subadressen genereren", "auto_generate_subaddresses": "Automatisch subadressen genereren",
"automatic": "automatisch", "automatic": "automatisch",
"available_balance": "Beschikbaar saldo", "available_balance": "Beschikbaar saldo",
@ -175,6 +176,7 @@
"debit_card": "Debetkaart", "debit_card": "Debetkaart",
"debit_card_terms": "De opslag en het gebruik van uw betaalkaartnummer (en inloggegevens die overeenkomen met uw betaalkaartnummer) in deze digitale portemonnee zijn onderworpen aan de Algemene voorwaarden van de toepasselijke kaarthouderovereenkomst met de uitgever van de betaalkaart, zoals van kracht vanaf tijd tot tijd.", "debit_card_terms": "De opslag en het gebruik van uw betaalkaartnummer (en inloggegevens die overeenkomen met uw betaalkaartnummer) in deze digitale portemonnee zijn onderworpen aan de Algemene voorwaarden van de toepasselijke kaarthouderovereenkomst met de uitgever van de betaalkaart, zoals van kracht vanaf tijd tot tijd.",
"decimal_places_error": "Te veel decimalen", "decimal_places_error": "Te veel decimalen",
"decimals_cannot_be_zero": "Token decimaal kan niet nul zijn.",
"default_buy_provider": "Standaard Koopprovider", "default_buy_provider": "Standaard Koopprovider",
"default_sell_provider": "Standaard verkoopaanbieder", "default_sell_provider": "Standaard verkoopaanbieder",
"delete": "Delete", "delete": "Delete",
@ -355,6 +357,8 @@
"moonpay_alert_text": "Waarde van het bedrag moet meer of gelijk zijn aan ${minAmount} ${fiatCurrency}", "moonpay_alert_text": "Waarde van het bedrag moet meer of gelijk zijn aan ${minAmount} ${fiatCurrency}",
"more_options": "Meer opties", "more_options": "Meer opties",
"name": "Naam", "name": "Naam",
"nano_current_rep": "Huidige vertegenwoordiger",
"nano_pick_new_rep": "Kies een nieuwe vertegenwoordiger",
"narrow": "Smal", "narrow": "Smal",
"new_first_wallet_text": "Houd uw cryptocurrency gemakkelijk veilig", "new_first_wallet_text": "Houd uw cryptocurrency gemakkelijk veilig",
"new_node_testing": "Nieuwe knooppunttest", "new_node_testing": "Nieuwe knooppunttest",
@ -463,6 +467,8 @@
"remove_node": "Knoop verwijderen", "remove_node": "Knoop verwijderen",
"remove_node_message": "Weet u zeker dat u het geselecteerde knooppunt wilt verwijderen?", "remove_node_message": "Weet u zeker dat u het geselecteerde knooppunt wilt verwijderen?",
"rename": "Hernoemen", "rename": "Hernoemen",
"rep_warning": "Representatieve waarschuwing",
"rep_warning_sub": "Uw vertegenwoordiger lijkt niet goed te staan. Tik hier om een nieuwe te selecteren",
"require_for_adding_contacts": "Vereist voor het toevoegen van contacten", "require_for_adding_contacts": "Vereist voor het toevoegen van contacten",
"require_for_all_security_and_backup_settings": "Vereist voor alle beveiligings- en back-upinstellingen", "require_for_all_security_and_backup_settings": "Vereist voor alle beveiligings- en back-upinstellingen",
"require_for_assessing_wallet": "Vereist voor toegang tot portemonnee", "require_for_assessing_wallet": "Vereist voor toegang tot portemonnee",
@ -577,6 +583,8 @@
"send_your_wallet": "Uw portemonnee", "send_your_wallet": "Uw portemonnee",
"sending": "Bezig met verzenden", "sending": "Bezig met verzenden",
"sent": "Verzonden", "sent": "Verzonden",
"service_health_disabled": "Service Health Bulletin is uitgeschakeld",
"service_health_disabled_message": "Dit is de Service Health Bulletin -pagina, u kunt deze pagina instellingen inschakelen -> Privacy",
"settings": "Instellingen", "settings": "Instellingen",
"settings_all": "ALLE", "settings_all": "ALLE",
"settings_allow_biometrical_authentication": "Biometrische authenticatie toestaan", "settings_allow_biometrical_authentication": "Biometrische authenticatie toestaan",
@ -740,6 +748,7 @@
"unspent_coins_details_title": "Details van niet-uitgegeven munten", "unspent_coins_details_title": "Details van niet-uitgegeven munten",
"unspent_coins_title": "Ongebruikte munten", "unspent_coins_title": "Ongebruikte munten",
"unsupported_asset": "We ondersteunen deze actie niet voor dit item. Maak of schakel over naar een portemonnee van een ondersteund activatype.", "unsupported_asset": "We ondersteunen deze actie niet voor dit item. Maak of schakel over naar een portemonnee van een ondersteund activatype.",
"uptime": "Uptime",
"upto": "tot ${value}", "upto": "tot ${value}",
"use": "Gebruik ", "use": "Gebruik ",
"use_card_info_three": "Gebruik de digitale kaart online of met contactloze betaalmethoden.", "use_card_info_three": "Gebruik de digitale kaart online of met contactloze betaalmethoden.",
@ -756,6 +765,7 @@
"view_key_private": "Bekijk sleutel (privaat)", "view_key_private": "Bekijk sleutel (privaat)",
"view_key_public": "Bekijk sleutel (openbaar)", "view_key_public": "Bekijk sleutel (openbaar)",
"view_transaction_on": "View Transaction on ", "view_transaction_on": "View Transaction on ",
"voting_weight": "Stemgewicht",
"waitFewSecondForTxUpdate": "Wacht een paar seconden totdat de transactie wordt weergegeven in de transactiegeschiedenis", "waitFewSecondForTxUpdate": "Wacht een paar seconden totdat de transactie wordt weergegeven in de transactiegeschiedenis",
"waiting_payment_confirmation": "In afwachting van betalingsbevestiging", "waiting_payment_confirmation": "In afwachting van betalingsbevestiging",
"wallet_keys": "Portemonnee zaad/sleutels", "wallet_keys": "Portemonnee zaad/sleutels",
@ -809,4 +819,4 @@
"you_will_get": "Converteren naar", "you_will_get": "Converteren naar",
"you_will_send": "Converteren van", "you_will_send": "Converteren van",
"yy": "JJ" "yy": "JJ"
} }

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "Niepoprawny PIN", "auth_store_incorrect_password": "Niepoprawny PIN",
"authenticated": "Uwierzytelniony", "authenticated": "Uwierzytelniony",
"authentication": "Uwierzytelnianie", "authentication": "Uwierzytelnianie",
"auto_generate_addresses": "Auto generują adresy",
"auto_generate_subaddresses": "Automatycznie generuj podadresy", "auto_generate_subaddresses": "Automatycznie generuj podadresy",
"automatic": "Automatyczny", "automatic": "Automatyczny",
"available_balance": "Dostępne środki", "available_balance": "Dostępne środki",
@ -175,6 +176,7 @@
"debit_card": "Karta debetowa", "debit_card": "Karta debetowa",
"debit_card_terms": "Przechowywanie i używanie numeru karty płatniczej (oraz danych uwierzytelniających odpowiadających numerowi karty płatniczej) w tym portfelu cyfrowym podlega Warunkom odpowiedniej umowy posiadacza karty z wydawcą karty płatniczej, zgodnie z obowiązującym od od czasu do czasu.", "debit_card_terms": "Przechowywanie i używanie numeru karty płatniczej (oraz danych uwierzytelniających odpowiadających numerowi karty płatniczej) w tym portfelu cyfrowym podlega Warunkom odpowiedniej umowy posiadacza karty z wydawcą karty płatniczej, zgodnie z obowiązującym od od czasu do czasu.",
"decimal_places_error": "Za dużo miejsc dziesiętnych", "decimal_places_error": "Za dużo miejsc dziesiętnych",
"decimals_cannot_be_zero": "Token dziesiętny nie może być zerowy.",
"default_buy_provider": "Domyślny dostawca zakupu", "default_buy_provider": "Domyślny dostawca zakupu",
"default_sell_provider": "Domyślny dostawca sprzedaży", "default_sell_provider": "Domyślny dostawca sprzedaży",
"delete": "Skasuj", "delete": "Skasuj",
@ -355,6 +357,8 @@
"moonpay_alert_text": "Wartość kwoty musi być większa lub równa ${minAmount} ${fiatCurrency}", "moonpay_alert_text": "Wartość kwoty musi być większa lub równa ${minAmount} ${fiatCurrency}",
"more_options": "Więcej opcji", "more_options": "Więcej opcji",
"name": "Nazwa", "name": "Nazwa",
"nano_current_rep": "Obecny przedstawiciel",
"nano_pick_new_rep": "Wybierz nowego przedstawiciela",
"narrow": "Wąski", "narrow": "Wąski",
"new_first_wallet_text": "Łatwo zapewnić bezpieczeństwo kryptowalut", "new_first_wallet_text": "Łatwo zapewnić bezpieczeństwo kryptowalut",
"new_node_testing": "Testowanie nowych węzłów", "new_node_testing": "Testowanie nowych węzłów",
@ -463,6 +467,8 @@
"remove_node": "Usuń węzeł", "remove_node": "Usuń węzeł",
"remove_node_message": "Czy na pewno chcesz usunąć wybrany węzeł?", "remove_node_message": "Czy na pewno chcesz usunąć wybrany węzeł?",
"rename": "Zmień nazwę", "rename": "Zmień nazwę",
"rep_warning": "Przedstawicielskie ostrzeżenie",
"rep_warning_sub": "Twój przedstawiciel nie wydaje się mieć dobrej opinii. Stuknij tutaj, aby wybrać nowy",
"require_for_adding_contacts": "Wymagane do dodania kontaktów", "require_for_adding_contacts": "Wymagane do dodania kontaktów",
"require_for_all_security_and_backup_settings": "Wymagaj dla wszystkich ustawień zabezpieczeń i kopii zapasowych", "require_for_all_security_and_backup_settings": "Wymagaj dla wszystkich ustawień zabezpieczeń i kopii zapasowych",
"require_for_assessing_wallet": "Wymagaj dostępu do portfela", "require_for_assessing_wallet": "Wymagaj dostępu do portfela",
@ -577,6 +583,8 @@
"send_your_wallet": "Twój portfel", "send_your_wallet": "Twój portfel",
"sending": "Wysyłanie", "sending": "Wysyłanie",
"sent": "Wysłano", "sent": "Wysłano",
"service_health_disabled": "Biuletyn zdrowia usług jest wyłączony",
"service_health_disabled_message": "To jest strona Biuletynu Zdrowie Service, możesz włączyć tę stronę w Ustawieniach -> Prywatność",
"settings": "Ustawienia", "settings": "Ustawienia",
"settings_all": "Wszystkie", "settings_all": "Wszystkie",
"settings_allow_biometrical_authentication": "Zezwalaj na uwierzytelnianie biometryczne", "settings_allow_biometrical_authentication": "Zezwalaj na uwierzytelnianie biometryczne",
@ -740,6 +748,7 @@
"unspent_coins_details_title": "Szczegóły niewydanych monet", "unspent_coins_details_title": "Szczegóły niewydanych monet",
"unspent_coins_title": "Niewydane monety", "unspent_coins_title": "Niewydane monety",
"unsupported_asset": "Nie obsługujemy tego działania w przypadku tego zasobu. Utwórz lub przełącz się na portfel obsługiwanego typu aktywów.", "unsupported_asset": "Nie obsługujemy tego działania w przypadku tego zasobu. Utwórz lub przełącz się na portfel obsługiwanego typu aktywów.",
"uptime": "Czas aktu",
"upto": "do ${value}", "upto": "do ${value}",
"use": "Użyj ", "use": "Użyj ",
"use_card_info_three": "Użyj cyfrowej karty online lub za pomocą zbliżeniowych metod płatności.", "use_card_info_three": "Użyj cyfrowej karty online lub za pomocą zbliżeniowych metod płatności.",
@ -756,6 +765,7 @@
"view_key_private": "Prywatny Klucz Wglądu", "view_key_private": "Prywatny Klucz Wglądu",
"view_key_public": "Publiczny Klucz Wglądu", "view_key_public": "Publiczny Klucz Wglądu",
"view_transaction_on": "Zobacz transakcje na ", "view_transaction_on": "Zobacz transakcje na ",
"voting_weight": "Waga głosu",
"waitFewSecondForTxUpdate": "Poczekaj kilka sekund, aż transakcja zostanie odzwierciedlona w historii transakcji", "waitFewSecondForTxUpdate": "Poczekaj kilka sekund, aż transakcja zostanie odzwierciedlona w historii transakcji",
"wallet_keys": "Klucze portfela", "wallet_keys": "Klucze portfela",
"wallet_list_create_new_wallet": "Utwórz nowy portfel", "wallet_list_create_new_wallet": "Utwórz nowy portfel",
@ -808,4 +818,4 @@
"you_will_get": "Konwertuj na", "you_will_get": "Konwertuj na",
"you_will_send": "Konwertuj z", "you_will_send": "Konwertuj z",
"yy": "RR" "yy": "RR"
} }

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "PIN incorreto", "auth_store_incorrect_password": "PIN incorreto",
"authenticated": "Autenticado", "authenticated": "Autenticado",
"authentication": "Autenticação", "authentication": "Autenticação",
"auto_generate_addresses": "Endereços gerados automaticamente",
"auto_generate_subaddresses": "Gerar subendereços automaticamente", "auto_generate_subaddresses": "Gerar subendereços automaticamente",
"automatic": "Automático", "automatic": "Automático",
"available_balance": "Saldo disponível", "available_balance": "Saldo disponível",
@ -175,6 +176,7 @@
"debit_card": "Cartão de débito", "debit_card": "Cartão de débito",
"debit_card_terms": "O armazenamento e uso do número do cartão de pagamento (e credenciais correspondentes ao número do cartão de pagamento) nesta carteira digital estão sujeitos aos Termos e Condições do contrato do titular do cartão aplicável com o emissor do cartão de pagamento, em vigor a partir de tempo ao tempo.", "debit_card_terms": "O armazenamento e uso do número do cartão de pagamento (e credenciais correspondentes ao número do cartão de pagamento) nesta carteira digital estão sujeitos aos Termos e Condições do contrato do titular do cartão aplicável com o emissor do cartão de pagamento, em vigor a partir de tempo ao tempo.",
"decimal_places_error": "Muitas casas decimais", "decimal_places_error": "Muitas casas decimais",
"decimals_cannot_be_zero": "Decimal de token não pode ser zero.",
"default_buy_provider": "Provedor de compra padrão", "default_buy_provider": "Provedor de compra padrão",
"default_sell_provider": "Provedor de venda padrão", "default_sell_provider": "Provedor de venda padrão",
"delete": "Excluir", "delete": "Excluir",
@ -356,6 +358,8 @@
"moonpay_alert_text": "O valor do montante deve ser maior ou igual a ${minAmount} ${fiatCurrency}", "moonpay_alert_text": "O valor do montante deve ser maior ou igual a ${minAmount} ${fiatCurrency}",
"more_options": "Mais opções", "more_options": "Mais opções",
"name": "Nome", "name": "Nome",
"nano_current_rep": "Representante atual",
"nano_pick_new_rep": "Escolha um novo representante",
"narrow": "Estreito", "narrow": "Estreito",
"new_first_wallet_text": "Mantenha sua criptomoeda facilmente segura", "new_first_wallet_text": "Mantenha sua criptomoeda facilmente segura",
"new_node_testing": "Teste de novo nó", "new_node_testing": "Teste de novo nó",
@ -465,6 +469,8 @@
"remove_node": "Remover nó", "remove_node": "Remover nó",
"remove_node_message": "Você realmente deseja remover o nó selecionado?", "remove_node_message": "Você realmente deseja remover o nó selecionado?",
"rename": "Renomear", "rename": "Renomear",
"rep_warning": "Aviso representativo",
"rep_warning_sub": "Seu representante não parece estar em boa posição. Toque aqui para selecionar um novo",
"require_for_adding_contacts": "Requer para adicionar contatos", "require_for_adding_contacts": "Requer para adicionar contatos",
"require_for_all_security_and_backup_settings": "Exigir todas as configurações de segurança e backup", "require_for_all_security_and_backup_settings": "Exigir todas as configurações de segurança e backup",
"require_for_assessing_wallet": "Requer para acessar a carteira", "require_for_assessing_wallet": "Requer para acessar a carteira",
@ -579,6 +585,8 @@
"send_your_wallet": "Sua carteira", "send_your_wallet": "Sua carteira",
"sending": "Enviando", "sending": "Enviando",
"sent": "Enviada", "sent": "Enviada",
"service_health_disabled": "O Boletim de Saúde de Serviço está desativado",
"service_health_disabled_message": "Esta é a página do Boletim de Saúde de Serviço, você pode ativar esta página em Configurações -> Privacidade",
"settings": "Configurações", "settings": "Configurações",
"settings_all": "Tudo", "settings_all": "Tudo",
"settings_allow_biometrical_authentication": "Permitir autenticação biométrica", "settings_allow_biometrical_authentication": "Permitir autenticação biométrica",
@ -742,6 +750,7 @@
"unspent_coins_details_title": "Detalhes de moedas não gastas", "unspent_coins_details_title": "Detalhes de moedas não gastas",
"unspent_coins_title": "Moedas não gastas", "unspent_coins_title": "Moedas não gastas",
"unsupported_asset": "Não oferecemos suporte a esta ação para este recurso. Crie ou mude para uma carteira de um tipo de ativo compatível.", "unsupported_asset": "Não oferecemos suporte a esta ação para este recurso. Crie ou mude para uma carteira de um tipo de ativo compatível.",
"uptime": "Tempo de atividade",
"upto": "até ${value}", "upto": "até ${value}",
"use": "Use PIN de ", "use": "Use PIN de ",
"use_card_info_three": "Use o cartão digital online ou com métodos de pagamento sem contato.", "use_card_info_three": "Use o cartão digital online ou com métodos de pagamento sem contato.",
@ -758,6 +767,7 @@
"view_key_private": "Chave de visualização (privada)", "view_key_private": "Chave de visualização (privada)",
"view_key_public": "Chave de visualização (pública)", "view_key_public": "Chave de visualização (pública)",
"view_transaction_on": "View Transaction on ", "view_transaction_on": "View Transaction on ",
"voting_weight": "Peso de votação",
"waitFewSecondForTxUpdate": "Aguarde alguns segundos para que a transação seja refletida no histórico de transações", "waitFewSecondForTxUpdate": "Aguarde alguns segundos para que a transação seja refletida no histórico de transações",
"waiting_payment_confirmation": "Aguardando confirmação de pagamento", "waiting_payment_confirmation": "Aguardando confirmação de pagamento",
"wallet_keys": "Semente/chaves da carteira", "wallet_keys": "Semente/chaves da carteira",
@ -811,4 +821,4 @@
"you_will_get": "Converter para", "you_will_get": "Converter para",
"you_will_send": "Converter de", "you_will_send": "Converter de",
"yy": "aa" "yy": "aa"
} }

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "Некорректный PIN", "auth_store_incorrect_password": "Некорректный PIN",
"authenticated": "Аутентифицировано", "authenticated": "Аутентифицировано",
"authentication": "Аутентификация", "authentication": "Аутентификация",
"auto_generate_addresses": "Авто генерируйте адреса",
"auto_generate_subaddresses": "Авто генерируйте Subaddresses", "auto_generate_subaddresses": "Авто генерируйте Subaddresses",
"automatic": "автоматический", "automatic": "автоматический",
"available_balance": "Доступный баланс", "available_balance": "Доступный баланс",
@ -175,6 +176,7 @@
"debit_card": "Дебетовая карта", "debit_card": "Дебетовая карта",
"debit_card_terms": "Хранение и использование номера вашей платежной карты (и учетных данных, соответствующих номеру вашей платежной карты) в этом цифровом кошельке регулируются положениями и условиями применимого соглашения держателя карты с эмитентом платежной карты, действующим с время от времени.", "debit_card_terms": "Хранение и использование номера вашей платежной карты (и учетных данных, соответствующих номеру вашей платежной карты) в этом цифровом кошельке регулируются положениями и условиями применимого соглашения держателя карты с эмитентом платежной карты, действующим с время от времени.",
"decimal_places_error": "Слишком много десятичных знаков", "decimal_places_error": "Слишком много десятичных знаков",
"decimals_cannot_be_zero": "Десятичный токен не может быть нулевым.",
"default_buy_provider": "По умолчанию поставщик покупки", "default_buy_provider": "По умолчанию поставщик покупки",
"default_sell_provider": "Поставщик продаж по умолчанию", "default_sell_provider": "Поставщик продаж по умолчанию",
"delete": "Удалить", "delete": "Удалить",
@ -355,6 +357,8 @@
"moonpay_alert_text": "Сумма должна быть больше или равна ${minAmount} ${fiatCurrency}", "moonpay_alert_text": "Сумма должна быть больше или равна ${minAmount} ${fiatCurrency}",
"more_options": "Дополнительные параметры", "more_options": "Дополнительные параметры",
"name": "Имя", "name": "Имя",
"nano_current_rep": "Нынешний представитель",
"nano_pick_new_rep": "Выберите нового представителя",
"narrow": "Узкий", "narrow": "Узкий",
"new_first_wallet_text": "Легко сохранить свою криптовалюту в безопасности", "new_first_wallet_text": "Легко сохранить свою криптовалюту в безопасности",
"new_node_testing": "Тестирование новой ноды", "new_node_testing": "Тестирование новой ноды",
@ -464,6 +468,8 @@
"remove_node": "Удалить ноду", "remove_node": "Удалить ноду",
"remove_node_message": "Вы уверены, что хотите удалить текущую ноду?", "remove_node_message": "Вы уверены, что хотите удалить текущую ноду?",
"rename": "Переименовать", "rename": "Переименовать",
"rep_warning": "Представительное предупреждение",
"rep_warning_sub": "Ваш представитель, похоже, не в хорошей репутации. Нажмите здесь, чтобы выбрать новый",
"require_for_adding_contacts": "Требовать добавления контактов", "require_for_adding_contacts": "Требовать добавления контактов",
"require_for_all_security_and_backup_settings": "Требовать все настройки безопасности и резервного копирования", "require_for_all_security_and_backup_settings": "Требовать все настройки безопасности и резервного копирования",
"require_for_assessing_wallet": "Требовать для доступа к кошельку", "require_for_assessing_wallet": "Требовать для доступа к кошельку",
@ -578,6 +584,8 @@
"send_your_wallet": "Ваш кошелёк", "send_your_wallet": "Ваш кошелёк",
"sending": "Отправка", "sending": "Отправка",
"sent": "Отправленные", "sent": "Отправленные",
"service_health_disabled": "Бюллетень для здоровья обслуживания инвалид",
"service_health_disabled_message": "Это страница бюллетени обслуживания услуг, вы можете включить эту страницу в соответствии с настройками -> Конфиденциальность",
"settings": "Настройки", "settings": "Настройки",
"settings_all": "ВСЕ", "settings_all": "ВСЕ",
"settings_allow_biometrical_authentication": "Включить биометрическую аутентификацию", "settings_allow_biometrical_authentication": "Включить биометрическую аутентификацию",
@ -741,6 +749,7 @@
"unspent_coins_details_title": "Сведения о неизрасходованных монетах", "unspent_coins_details_title": "Сведения о неизрасходованных монетах",
"unspent_coins_title": "Неизрасходованные монеты", "unspent_coins_title": "Неизрасходованные монеты",
"unsupported_asset": "Мы не поддерживаем это действие для этого объекта. Пожалуйста, создайте или переключитесь на кошелек поддерживаемого типа активов.", "unsupported_asset": "Мы не поддерживаем это действие для этого объекта. Пожалуйста, создайте или переключитесь на кошелек поддерживаемого типа активов.",
"uptime": "Время безотказной работы",
"upto": "до ${value}", "upto": "до ${value}",
"use": "Использовать ", "use": "Использовать ",
"use_card_info_three": "Используйте цифровую карту онлайн или с помощью бесконтактных способов оплаты.", "use_card_info_three": "Используйте цифровую карту онлайн или с помощью бесконтактных способов оплаты.",
@ -757,6 +766,7 @@
"view_key_private": "Приватный ключ просмотра", "view_key_private": "Приватный ключ просмотра",
"view_key_public": "Публичный ключ просмотра", "view_key_public": "Публичный ключ просмотра",
"view_transaction_on": "View Transaction on ", "view_transaction_on": "View Transaction on ",
"voting_weight": "Вес голоса",
"waitFewSecondForTxUpdate": "Пожалуйста, подождите несколько секунд, чтобы транзакция отразилась в истории транзакций.", "waitFewSecondForTxUpdate": "Пожалуйста, подождите несколько секунд, чтобы транзакция отразилась в истории транзакций.",
"wallet_keys": "Мнемоническая фраза/ключи кошелька", "wallet_keys": "Мнемоническая фраза/ключи кошелька",
"wallet_list_create_new_wallet": "Создать новый кошелёк", "wallet_list_create_new_wallet": "Создать новый кошелёк",
@ -809,4 +819,4 @@
"you_will_get": "Конвертировать в", "you_will_get": "Конвертировать в",
"you_will_send": "Конвертировать из", "you_will_send": "Конвертировать из",
"yy": "ГГ" "yy": "ГГ"
} }

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "รหัสผ่านไม่ถูกต้อง", "auth_store_incorrect_password": "รหัสผ่านไม่ถูกต้อง",
"authenticated": "ได้รับการยืนยันสิทธิ์", "authenticated": "ได้รับการยืนยันสิทธิ์",
"authentication": "การยืนยันสิทธิ์", "authentication": "การยืนยันสิทธิ์",
"auto_generate_addresses": "สร้างที่อยู่อัตโนมัติ",
"auto_generate_subaddresses": "Auto สร้าง subaddresses", "auto_generate_subaddresses": "Auto สร้าง subaddresses",
"automatic": "อัตโนมัติ", "automatic": "อัตโนมัติ",
"available_balance": "ยอดคงเหลือที่ใช้งานได้", "available_balance": "ยอดคงเหลือที่ใช้งานได้",
@ -175,6 +176,7 @@
"debit_card": "บัตรเดบิต", "debit_card": "บัตรเดบิต",
"debit_card_terms": "การเก็บรักษาและใช้หมายเลขบัตรจ่ายเงิน (และข้อมูลประจำตัวที่เกี่ยวข้องกับหมายเลขบัตรจ่ายเงิน) ในกระเป๋าดิจิทัลนี้ จะต้องยึดถือข้อกำหนดและเงื่อนไขของข้อตกลงผู้ใช้บัตรของผู้ถือบัตรที่เกี่ยวข้องกับบัตรผู้ถือบัตร ซึ่งจะมีผลตั้งแต่เวลานั้น", "debit_card_terms": "การเก็บรักษาและใช้หมายเลขบัตรจ่ายเงิน (และข้อมูลประจำตัวที่เกี่ยวข้องกับหมายเลขบัตรจ่ายเงิน) ในกระเป๋าดิจิทัลนี้ จะต้องยึดถือข้อกำหนดและเงื่อนไขของข้อตกลงผู้ใช้บัตรของผู้ถือบัตรที่เกี่ยวข้องกับบัตรผู้ถือบัตร ซึ่งจะมีผลตั้งแต่เวลานั้น",
"decimal_places_error": "ทศนิยมมากเกินไป", "decimal_places_error": "ทศนิยมมากเกินไป",
"decimals_cannot_be_zero": "ทศนิยมโทเค็นไม่สามารถเป็นศูนย์ได้",
"default_buy_provider": "ผู้ให้บริการซื้อเริ่มต้น", "default_buy_provider": "ผู้ให้บริการซื้อเริ่มต้น",
"default_sell_provider": "ผู้ให้บริการการขายเริ่มต้น", "default_sell_provider": "ผู้ให้บริการการขายเริ่มต้น",
"delete": "ลบ", "delete": "ลบ",
@ -355,6 +357,8 @@
"moonpay_alert_text": "มูลค่าของจำนวนต้องมากกว่าหรือเท่ากับ ${minAmount} ${fiatCurrency}", "moonpay_alert_text": "มูลค่าของจำนวนต้องมากกว่าหรือเท่ากับ ${minAmount} ${fiatCurrency}",
"more_options": "ตัวเลือกเพิ่มเติม", "more_options": "ตัวเลือกเพิ่มเติม",
"name": "ชื่อ", "name": "ชื่อ",
"nano_current_rep": "ตัวแทนปัจจุบัน",
"nano_pick_new_rep": "เลือกตัวแทนใหม่",
"narrow": "แคบ", "narrow": "แคบ",
"new_first_wallet_text": "ทำให้สกุลเงินดิจิตอลของคุณปลอดภัยได้อย่างง่ายดาย", "new_first_wallet_text": "ทำให้สกุลเงินดิจิตอลของคุณปลอดภัยได้อย่างง่ายดาย",
"new_node_testing": "การทดสอบโหนดใหม่", "new_node_testing": "การทดสอบโหนดใหม่",
@ -463,6 +467,8 @@
"remove_node": "ลบโหนด", "remove_node": "ลบโหนด",
"remove_node_message": "คุณแน่ใจหรือว่าต้องการลบโหนดที่เลือก?", "remove_node_message": "คุณแน่ใจหรือว่าต้องการลบโหนดที่เลือก?",
"rename": "เปลี่ยนชื่อ", "rename": "เปลี่ยนชื่อ",
"rep_warning": "คำเตือนตัวแทน",
"rep_warning_sub": "ตัวแทนของคุณดูเหมือนจะไม่อยู่ในสถานะที่ดี แตะที่นี่เพื่อเลือกอันใหม่",
"require_for_adding_contacts": "ต้องการสำหรับการเพิ่มผู้ติดต่อ", "require_for_adding_contacts": "ต้องการสำหรับการเพิ่มผู้ติดต่อ",
"require_for_all_security_and_backup_settings": "จำเป็นสำหรับการตั้งค่าความปลอดภัยและการสำรองข้อมูลทั้งหมด", "require_for_all_security_and_backup_settings": "จำเป็นสำหรับการตั้งค่าความปลอดภัยและการสำรองข้อมูลทั้งหมด",
"require_for_assessing_wallet": "จำเป็นสำหรับการเข้าถึงกระเป๋าเงิน", "require_for_assessing_wallet": "จำเป็นสำหรับการเข้าถึงกระเป๋าเงิน",
@ -577,6 +583,8 @@
"send_your_wallet": "กระเป๋าของคุณ", "send_your_wallet": "กระเป๋าของคุณ",
"sending": "กำลังส่ง", "sending": "กำลังส่ง",
"sent": "ส่ง", "sent": "ส่ง",
"service_health_disabled": "Service Health Bulletin ถูกปิดใช้งาน",
"service_health_disabled_message": "นี่คือหน้า Service Health Bulletin คุณสามารถเปิดใช้งานหน้านี้ภายใต้การตั้งค่า -> ความเป็นส่วนตัว",
"settings": "การตั้งค่า", "settings": "การตั้งค่า",
"settings_all": "ทั้งหมด", "settings_all": "ทั้งหมด",
"settings_allow_biometrical_authentication": "อนุญาตให้ใช้การยืนยันตัวตนทางระบบชีวภาพ", "settings_allow_biometrical_authentication": "อนุญาตให้ใช้การยืนยันตัวตนทางระบบชีวภาพ",
@ -740,6 +748,7 @@
"unspent_coins_details_title": "รายละเอียดเหรียญที่ไม่ได้ใช้", "unspent_coins_details_title": "รายละเอียดเหรียญที่ไม่ได้ใช้",
"unspent_coins_title": "เหรียญที่ไม่ได้ใช้", "unspent_coins_title": "เหรียญที่ไม่ได้ใช้",
"unsupported_asset": "เราไม่สนับสนุนการกระทำนี้สำหรับเนื้อหานี้ โปรดสร้างหรือเปลี่ยนเป็นกระเป๋าเงินประเภทสินทรัพย์ที่รองรับ", "unsupported_asset": "เราไม่สนับสนุนการกระทำนี้สำหรับเนื้อหานี้ โปรดสร้างหรือเปลี่ยนเป็นกระเป๋าเงินประเภทสินทรัพย์ที่รองรับ",
"uptime": "เวลาทำงาน",
"upto": "สูงสุด ${value}", "upto": "สูงสุด ${value}",
"use": "สลับไปที่ ", "use": "สลับไปที่ ",
"use_card_info_three": "ใช้บัตรดิจิตอลออนไลน์หรือผ่านวิธีการชำระเงินแบบไม่ต้องใช้บัตรกระดาษ", "use_card_info_three": "ใช้บัตรดิจิตอลออนไลน์หรือผ่านวิธีการชำระเงินแบบไม่ต้องใช้บัตรกระดาษ",
@ -756,6 +765,7 @@
"view_key_private": "คีย์มุมมอง (ส่วนตัว)", "view_key_private": "คีย์มุมมอง (ส่วนตัว)",
"view_key_public": "คีย์มุมมอง (สาธารณะ)", "view_key_public": "คีย์มุมมอง (สาธารณะ)",
"view_transaction_on": "ดูการทำธุรกรรมบน ", "view_transaction_on": "ดูการทำธุรกรรมบน ",
"voting_weight": "น้ำหนักโหวต",
"waitFewSecondForTxUpdate": "กรุณารอสักครู่เพื่อให้ธุรกรรมปรากฏในประวัติการทำธุรกรรม", "waitFewSecondForTxUpdate": "กรุณารอสักครู่เพื่อให้ธุรกรรมปรากฏในประวัติการทำธุรกรรม",
"wallet_keys": "ซีดของกระเป๋า/คีย์", "wallet_keys": "ซีดของกระเป๋า/คีย์",
"wallet_list_create_new_wallet": "สร้างกระเป๋าใหม่", "wallet_list_create_new_wallet": "สร้างกระเป๋าใหม่",
@ -808,4 +818,4 @@
"you_will_get": "แปลงเป็น", "you_will_get": "แปลงเป็น",
"you_will_send": "แปลงจาก", "you_will_send": "แปลงจาก",
"yy": "ปี" "yy": "ปี"
} }

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "Maling pin", "auth_store_incorrect_password": "Maling pin",
"authenticated": "Napatunayan", "authenticated": "Napatunayan",
"authentication": "Pagpapatunay", "authentication": "Pagpapatunay",
"auto_generate_addresses": "Auto bumuo ng mga address",
"auto_generate_subaddresses": "Ang Auto ay bumubuo ng mga subaddresses", "auto_generate_subaddresses": "Ang Auto ay bumubuo ng mga subaddresses",
"automatic": "Awtomatiko", "automatic": "Awtomatiko",
"available_balance": "Magagamit na balanse", "available_balance": "Magagamit na balanse",
@ -175,6 +176,7 @@
"debit_card": "Debit card", "debit_card": "Debit card",
"debit_card_terms": "Ang pag -iimbak at paggamit ng numero ng iyong card ng pagbabayad (at mga kredensyal na naaayon sa iyong numero ng card ng pagbabayad) sa digital na pitaka na ito ay napapailalim sa mga termino at kundisyon ng naaangkop na kasunduan sa cardholder kasama ang nagbigay ng card ng pagbabayad, tulad ng sa oras -oras.", "debit_card_terms": "Ang pag -iimbak at paggamit ng numero ng iyong card ng pagbabayad (at mga kredensyal na naaayon sa iyong numero ng card ng pagbabayad) sa digital na pitaka na ito ay napapailalim sa mga termino at kundisyon ng naaangkop na kasunduan sa cardholder kasama ang nagbigay ng card ng pagbabayad, tulad ng sa oras -oras.",
"decimal_places_error": "Masyadong maraming mga lugar na desimal", "decimal_places_error": "Masyadong maraming mga lugar na desimal",
"decimals_cannot_be_zero": "Ang Token Decimal ay hindi maaaring maging zero.",
"default_buy_provider": "Default na Provider ng Pagbili", "default_buy_provider": "Default na Provider ng Pagbili",
"default_sell_provider": "Default na Sell Provider", "default_sell_provider": "Default na Sell Provider",
"delete": "Tanggalin", "delete": "Tanggalin",
@ -355,6 +357,8 @@
"moonpay_alert_text": "Ang halaga ng halaga ay dapat na higit pa o katumbas ng ${minAmount} ${fiatCurrency}", "moonpay_alert_text": "Ang halaga ng halaga ay dapat na higit pa o katumbas ng ${minAmount} ${fiatCurrency}",
"more_options": "Higit pang mga pagpipilian", "more_options": "Higit pang mga pagpipilian",
"name": "Pangalan", "name": "Pangalan",
"nano_current_rep": "Kasalukuyang kinatawan",
"nano_pick_new_rep": "Pumili ng isang bagong kinatawan",
"narrow": "Makitid", "narrow": "Makitid",
"new_first_wallet_text": "Panatilihing ligtas ang iyong crypto, piraso ng cake", "new_first_wallet_text": "Panatilihing ligtas ang iyong crypto, piraso ng cake",
"new_node_testing": "Bagong pagsubok sa node", "new_node_testing": "Bagong pagsubok sa node",
@ -463,6 +467,8 @@
"remove_node": "Alisin ang node", "remove_node": "Alisin ang node",
"remove_node_message": "Sigurado ka bang nais mong alisin ang napiling node?", "remove_node_message": "Sigurado ka bang nais mong alisin ang napiling node?",
"rename": "Palitan ang pangalan", "rename": "Palitan ang pangalan",
"rep_warning": "Babala ng kinatawan",
"rep_warning_sub": "Ang iyong kinatawan ay hindi lilitaw na nasa mabuting kalagayan. Tapikin dito upang pumili ng bago",
"require_for_adding_contacts": "Nangangailangan para sa pagdaragdag ng mga contact", "require_for_adding_contacts": "Nangangailangan para sa pagdaragdag ng mga contact",
"require_for_all_security_and_backup_settings": "Nangangailangan para sa lahat ng mga setting ng seguridad at backup", "require_for_all_security_and_backup_settings": "Nangangailangan para sa lahat ng mga setting ng seguridad at backup",
"require_for_assessing_wallet": "Nangangailangan para sa pag -access ng pitaka", "require_for_assessing_wallet": "Nangangailangan para sa pag -access ng pitaka",
@ -577,6 +583,8 @@
"send_your_wallet": "Iyong pitaka", "send_your_wallet": "Iyong pitaka",
"sending": "Pagpapadala", "sending": "Pagpapadala",
"sent": "Ipinadala", "sent": "Ipinadala",
"service_health_disabled": "Hindi pinagana ang Bulletin ng Serbisyo sa Kalusugan",
"service_health_disabled_message": "Ito ang pahina ng Bulletin ng Serbisyo ng Bulletin, maaari mong paganahin ang pahinang ito sa ilalim ng Mga Setting -> Pagkapribado",
"settings": "Mga setting", "settings": "Mga setting",
"settings_all": "Lahat", "settings_all": "Lahat",
"settings_allow_biometrical_authentication": "Payagan ang pagpapatunay ng biometrical", "settings_allow_biometrical_authentication": "Payagan ang pagpapatunay ng biometrical",
@ -740,6 +748,7 @@
"unspent_coins_details_title": "Mga Detalye ng Unspent Coins", "unspent_coins_details_title": "Mga Detalye ng Unspent Coins",
"unspent_coins_title": "Unspent barya", "unspent_coins_title": "Unspent barya",
"unsupported_asset": "Hindi namin sinusuportahan ang pagkilos na ito para sa asset na ito. Mangyaring lumikha o lumipat sa isang pitaka ng isang suportadong uri ng pag -aari.", "unsupported_asset": "Hindi namin sinusuportahan ang pagkilos na ito para sa asset na ito. Mangyaring lumikha o lumipat sa isang pitaka ng isang suportadong uri ng pag -aari.",
"uptime": "Uptime",
"upto": "Hanggang sa ${value}", "upto": "Hanggang sa ${value}",
"use": "Lumipat sa", "use": "Lumipat sa",
"use_card_info_three": "Gamitin ang digital card online o sa mga pamamaraan ng pagbabayad na walang contact.", "use_card_info_three": "Gamitin ang digital card online o sa mga pamamaraan ng pagbabayad na walang contact.",
@ -756,6 +765,7 @@
"view_key_private": "Tingnan ang Key (Pribado)", "view_key_private": "Tingnan ang Key (Pribado)",
"view_key_public": "Tingnan ang Key (Publiko)", "view_key_public": "Tingnan ang Key (Publiko)",
"view_transaction_on": "Tingnan ang transaksyon sa", "view_transaction_on": "Tingnan ang transaksyon sa",
"voting_weight": "Bigat ng pagboto",
"waitFewSecondForTxUpdate": "Mangyaring maghintay ng ilang segundo para makita ang transaksyon sa history ng mga transaksyon", "waitFewSecondForTxUpdate": "Mangyaring maghintay ng ilang segundo para makita ang transaksyon sa history ng mga transaksyon",
"wallet_keys": "Mga buto/susi ng pitaka", "wallet_keys": "Mga buto/susi ng pitaka",
"wallet_list_create_new_wallet": "Lumikha ng bagong pitaka", "wallet_list_create_new_wallet": "Lumikha ng bagong pitaka",
@ -808,4 +818,4 @@
"you_will_get": "Mag -convert sa", "you_will_get": "Mag -convert sa",
"you_will_send": "I -convert mula sa", "you_will_send": "I -convert mula sa",
"yy": "YY" "yy": "YY"
} }

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "Hatalı PIN", "auth_store_incorrect_password": "Hatalı PIN",
"authenticated": "Doğrulandı", "authenticated": "Doğrulandı",
"authentication": "Doğrulama", "authentication": "Doğrulama",
"auto_generate_addresses": "Otomatik Adres Oluşturma",
"auto_generate_subaddresses": "Alt adresleri otomatik olarak oluştur", "auto_generate_subaddresses": "Alt adresleri otomatik olarak oluştur",
"automatic": "Otomatik", "automatic": "Otomatik",
"available_balance": "Kullanılabilir Bakiye", "available_balance": "Kullanılabilir Bakiye",
@ -175,6 +176,7 @@
"debit_card": "Ön ödemeli Kart", "debit_card": "Ön ödemeli Kart",
"debit_card_terms": "Ödeme kartı numaranızın (ve kart numaranıza karşılık gelen kimlik bilgilerinin) bu dijital cüzdanda saklanması ve kullanılması, zaman zaman yürürlükte olan ödeme kartı veren kuruluşla yapılan ilgili kart sahibi sözleşmesinin Hüküm ve Koşullarına tabidir.", "debit_card_terms": "Ödeme kartı numaranızın (ve kart numaranıza karşılık gelen kimlik bilgilerinin) bu dijital cüzdanda saklanması ve kullanılması, zaman zaman yürürlükte olan ödeme kartı veren kuruluşla yapılan ilgili kart sahibi sözleşmesinin Hüküm ve Koşullarına tabidir.",
"decimal_places_error": "Çok fazla ondalık basamak", "decimal_places_error": "Çok fazla ondalık basamak",
"decimals_cannot_be_zero": "Token oncial sıfır olamaz.",
"default_buy_provider": "Varsayılan Satın Alma Sağlayıcısı", "default_buy_provider": "Varsayılan Satın Alma Sağlayıcısı",
"default_sell_provider": "Varsayılan Satış Sağlayıcısı", "default_sell_provider": "Varsayılan Satış Sağlayıcısı",
"delete": "Sil", "delete": "Sil",
@ -355,6 +357,8 @@
"moonpay_alert_text": "Tutar ${minAmount} ${fiatCurrency} miktarına eşit veya daha fazla olmalıdır", "moonpay_alert_text": "Tutar ${minAmount} ${fiatCurrency} miktarına eşit veya daha fazla olmalıdır",
"more_options": "Daha Fazla Seçenek", "more_options": "Daha Fazla Seçenek",
"name": "İsim", "name": "İsim",
"nano_current_rep": "Mevcut temsilci",
"nano_pick_new_rep": "Yeni bir temsilci seçin",
"narrow": "Dar", "narrow": "Dar",
"new_first_wallet_text": "Kripto para biriminizi kolayca güvende tutun", "new_first_wallet_text": "Kripto para biriminizi kolayca güvende tutun",
"new_node_testing": "Yeni düğüm test ediliyor", "new_node_testing": "Yeni düğüm test ediliyor",
@ -463,6 +467,8 @@
"remove_node": "Düğümü kaldır", "remove_node": "Düğümü kaldır",
"remove_node_message": "Seçili düğümü kaldırmak istediğinden emin misin?", "remove_node_message": "Seçili düğümü kaldırmak istediğinden emin misin?",
"rename": "Yeniden adlandır", "rename": "Yeniden adlandır",
"rep_warning": "Temsilci uyarı",
"rep_warning_sub": "Temsilciniz iyi durumda görünmüyor. Yeni bir tane seçmek için buraya dokunun",
"require_for_adding_contacts": "Kişi eklemek için gerekli", "require_for_adding_contacts": "Kişi eklemek için gerekli",
"require_for_all_security_and_backup_settings": "Tüm güvenlik ve yedekleme ayarları için iste", "require_for_all_security_and_backup_settings": "Tüm güvenlik ve yedekleme ayarları için iste",
"require_for_assessing_wallet": "Cüzdana erişmek için gerekli", "require_for_assessing_wallet": "Cüzdana erişmek için gerekli",
@ -577,6 +583,8 @@
"send_your_wallet": "Cüzdanın", "send_your_wallet": "Cüzdanın",
"sending": "Gönderiliyor", "sending": "Gönderiliyor",
"sent": "Gönderildi", "sent": "Gönderildi",
"service_health_disabled": "Service Health Bülten devre dışı bırakıldı",
"service_health_disabled_message": "Bu Hizmet Sağlığı Bülten Sayfası, bu sayfayı Ayarlar -> Gizlilik altında etkinleştirebilirsiniz",
"settings": "ayarlar", "settings": "ayarlar",
"settings_all": "HEPSİ", "settings_all": "HEPSİ",
"settings_allow_biometrical_authentication": "Biyometrik doğrulamaya izin ver", "settings_allow_biometrical_authentication": "Biyometrik doğrulamaya izin ver",
@ -740,6 +748,7 @@
"unspent_coins_details_title": "Harcanmamış koin detayları", "unspent_coins_details_title": "Harcanmamış koin detayları",
"unspent_coins_title": "Harcanmamış koinler", "unspent_coins_title": "Harcanmamış koinler",
"unsupported_asset": "Bu öğe için bu eylemi desteklemiyoruz. Lütfen desteklenen bir varlık türünde bir cüzdan oluşturun veya cüzdana geçiş yapın.", "unsupported_asset": "Bu öğe için bu eylemi desteklemiyoruz. Lütfen desteklenen bir varlık türünde bir cüzdan oluşturun veya cüzdana geçiş yapın.",
"uptime": "Çalışma süresi",
"upto": "Şu miktara kadar: ${value}", "upto": "Şu miktara kadar: ${value}",
"use": "Şuna geç: ", "use": "Şuna geç: ",
"use_card_info_three": "Dijital kartı çevrimiçi olarak veya temassız ödeme yöntemleriyle kullanın.", "use_card_info_three": "Dijital kartı çevrimiçi olarak veya temassız ödeme yöntemleriyle kullanın.",
@ -756,6 +765,7 @@
"view_key_private": "İzleme anahtarı (özel)", "view_key_private": "İzleme anahtarı (özel)",
"view_key_public": "İzleme anahtarı (genel)", "view_key_public": "İzleme anahtarı (genel)",
"view_transaction_on": "İşlemi şurada görüntüle ", "view_transaction_on": "İşlemi şurada görüntüle ",
"voting_weight": "Oy kullanma",
"waitFewSecondForTxUpdate": "İşlemin işlem geçmişine yansıması için lütfen birkaç saniye bekleyin", "waitFewSecondForTxUpdate": "İşlemin işlem geçmişine yansıması için lütfen birkaç saniye bekleyin",
"wallet_keys": "Cüzdan tohumu/anahtarları", "wallet_keys": "Cüzdan tohumu/anahtarları",
"wallet_list_create_new_wallet": "Yeni Cüzdan Oluştur", "wallet_list_create_new_wallet": "Yeni Cüzdan Oluştur",
@ -808,4 +818,4 @@
"you_will_get": "Biçimine dönüştür:", "you_will_get": "Biçimine dönüştür:",
"you_will_send": "Biçiminden dönüştür:", "you_will_send": "Biçiminden dönüştür:",
"yy": "YY" "yy": "YY"
} }

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "Некоректний PIN", "auth_store_incorrect_password": "Некоректний PIN",
"authenticated": "Аутентифіковано", "authenticated": "Аутентифіковано",
"authentication": "Аутентифікація", "authentication": "Аутентифікація",
"auto_generate_addresses": "Авто генерувати адреси",
"auto_generate_subaddresses": "Автоматично генерувати підадреси", "auto_generate_subaddresses": "Автоматично генерувати підадреси",
"automatic": "Автоматичний", "automatic": "Автоматичний",
"available_balance": "Доступний баланс", "available_balance": "Доступний баланс",
@ -175,6 +176,7 @@
"debit_card": "Дебетова картка", "debit_card": "Дебетова картка",
"debit_card_terms": "Зберігання та використання номера вашої платіжної картки (та облікових даних, які відповідають номеру вашої платіжної картки) у цьому цифровому гаманці регулюються Умовами відповідної угоди власника картки з емітентом платіжної картки, що діє з час від часу.", "debit_card_terms": "Зберігання та використання номера вашої платіжної картки (та облікових даних, які відповідають номеру вашої платіжної картки) у цьому цифровому гаманці регулюються Умовами відповідної угоди власника картки з емітентом платіжної картки, що діє з час від часу.",
"decimal_places_error": "Забагато знаків після коми", "decimal_places_error": "Забагато знаків після коми",
"decimals_cannot_be_zero": "Десятковий знак не може бути нульовим.",
"default_buy_provider": "Постачальник покупки за замовчуванням", "default_buy_provider": "Постачальник покупки за замовчуванням",
"default_sell_provider": "Постачальник продажу за замовчуванням", "default_sell_provider": "Постачальник продажу за замовчуванням",
"delete": "Видалити", "delete": "Видалити",
@ -355,6 +357,8 @@
"moonpay_alert_text": "Значення суми має бути більшим або дорівнювати ${minAmount} ${fiatCurrency}", "moonpay_alert_text": "Значення суми має бути більшим або дорівнювати ${minAmount} ${fiatCurrency}",
"more_options": "Більше параметрів", "more_options": "Більше параметрів",
"name": "Ім'я", "name": "Ім'я",
"nano_current_rep": "Поточний представник",
"nano_pick_new_rep": "Виберіть нового представника",
"narrow": "вузькі", "narrow": "вузькі",
"new_first_wallet_text": "Легко зберігайте свою криптовалюту в безпеці", "new_first_wallet_text": "Легко зберігайте свою криптовалюту в безпеці",
"new_node_testing": "Тестування нового вузла", "new_node_testing": "Тестування нового вузла",
@ -464,6 +468,8 @@
"remove_node": "Видалити вузол", "remove_node": "Видалити вузол",
"remove_node_message": "Ви впевнені, що хочете видалити поточний вузол?", "remove_node_message": "Ви впевнені, що хочете видалити поточний вузол?",
"rename": "Перейменувати", "rename": "Перейменувати",
"rep_warning": "Представницьке попередження",
"rep_warning_sub": "Ваш представник, схоже, не має доброго становища. Торкніться тут, щоб вибрати новий",
"require_for_adding_contacts": "Потрібен для додавання контактів", "require_for_adding_contacts": "Потрібен для додавання контактів",
"require_for_all_security_and_backup_settings": "Вимагати всіх налаштувань безпеки та резервного копіювання", "require_for_all_security_and_backup_settings": "Вимагати всіх налаштувань безпеки та резервного копіювання",
"require_for_assessing_wallet": "Потрібен доступ до гаманця", "require_for_assessing_wallet": "Потрібен доступ до гаманця",
@ -578,6 +584,8 @@
"send_your_wallet": "Ваш гаманець", "send_your_wallet": "Ваш гаманець",
"sending": "Відправлення", "sending": "Відправлення",
"sent": "Відправлені", "sent": "Відправлені",
"service_health_disabled": "Вісник охорони здоров'я інвалідів",
"service_health_disabled_message": "Це сторінка бюлетеня Health Service, ви можете включити цю сторінку в налаштуваннях -> конфіденційність",
"settings": "Налаштування", "settings": "Налаштування",
"settings_all": "ВСІ", "settings_all": "ВСІ",
"settings_allow_biometrical_authentication": "Включити біометричну аутентифікацію", "settings_allow_biometrical_authentication": "Включити біометричну аутентифікацію",
@ -741,6 +749,7 @@
"unspent_coins_details_title": "Відомості про невитрачені монети", "unspent_coins_details_title": "Відомості про невитрачені монети",
"unspent_coins_title": "Невитрачені монети", "unspent_coins_title": "Невитрачені монети",
"unsupported_asset": "Ми не підтримуємо цю дію для цього ресурсу. Створіть або перейдіть на гаманець підтримуваного типу активів.", "unsupported_asset": "Ми не підтримуємо цю дію для цього ресурсу. Створіть або перейдіть на гаманець підтримуваного типу активів.",
"uptime": "Час роботи",
"upto": "до ${value}", "upto": "до ${value}",
"use": "Використати ", "use": "Використати ",
"use_card_info_three": "Використовуйте цифрову картку онлайн або за допомогою безконтактних методів оплати.", "use_card_info_three": "Використовуйте цифрову картку онлайн або за допомогою безконтактних методів оплати.",
@ -757,6 +766,7 @@
"view_key_private": "Приватний ключ перегляду", "view_key_private": "Приватний ключ перегляду",
"view_key_public": "Публічний ключ перегляду", "view_key_public": "Публічний ключ перегляду",
"view_transaction_on": "View Transaction on ", "view_transaction_on": "View Transaction on ",
"voting_weight": "Вага голосування",
"waitFewSecondForTxUpdate": "Будь ласка, зачекайте кілька секунд, поки транзакція відобразиться в історії транзакцій", "waitFewSecondForTxUpdate": "Будь ласка, зачекайте кілька секунд, поки транзакція відобразиться в історії транзакцій",
"wallet_keys": "Мнемонічна фраза/ключі гаманця", "wallet_keys": "Мнемонічна фраза/ключі гаманця",
"wallet_list_create_new_wallet": "Створити новий гаманець", "wallet_list_create_new_wallet": "Створити новий гаманець",
@ -809,4 +819,4 @@
"you_will_get": "Конвертувати в", "you_will_get": "Конвертувати в",
"you_will_send": "Конвертувати з", "you_will_send": "Конвертувати з",
"yy": "YY" "yy": "YY"
} }

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "غلط PIN", "auth_store_incorrect_password": "غلط PIN",
"authenticated": "تصدیق شدہ", "authenticated": "تصدیق شدہ",
"authentication": "تصدیق", "authentication": "تصدیق",
"auto_generate_addresses": "آٹو پیدا کرنے والے پتے",
"auto_generate_subaddresses": "آٹو سب ایڈریس تیار کرتا ہے", "auto_generate_subaddresses": "آٹو سب ایڈریس تیار کرتا ہے",
"automatic": "خودکار", "automatic": "خودکار",
"available_balance": "دستیاب بیلنس", "available_balance": "دستیاب بیلنس",
@ -175,6 +176,7 @@
"debit_card": "ڈیبٹ کارڈ", "debit_card": "ڈیبٹ کارڈ",
"debit_card_terms": "اس ڈیجیٹل والیٹ میں آپ کے ادائیگی کارڈ نمبر (اور آپ کے ادائیگی کارڈ نمبر سے متعلقہ اسناد) کا ذخیرہ اور استعمال ادائیگی کارڈ جاری کنندہ کے ساتھ قابل اطلاق کارڈ ہولڈر کے معاہدے کی شرائط و ضوابط کے ساتھ مشروط ہے، جیسا کہ وقتاً فوقتاً نافذ ہوتا ہے۔", "debit_card_terms": "اس ڈیجیٹل والیٹ میں آپ کے ادائیگی کارڈ نمبر (اور آپ کے ادائیگی کارڈ نمبر سے متعلقہ اسناد) کا ذخیرہ اور استعمال ادائیگی کارڈ جاری کنندہ کے ساتھ قابل اطلاق کارڈ ہولڈر کے معاہدے کی شرائط و ضوابط کے ساتھ مشروط ہے، جیسا کہ وقتاً فوقتاً نافذ ہوتا ہے۔",
"decimal_places_error": "بہت زیادہ اعشاریہ جگہیں۔", "decimal_places_error": "بہت زیادہ اعشاریہ جگہیں۔",
"decimals_cannot_be_zero": "ٹوکن اعشاریہ صفر نہیں ہوسکتا۔",
"default_buy_provider": "پہلے سے طے شدہ خریدنے والا", "default_buy_provider": "پہلے سے طے شدہ خریدنے والا",
"default_sell_provider": " ﮦﺪﻨﻨﮐ ﻢﮨﺍﺮﻓ ﻞﯿﺳ ﭧﻟﺎﻔﯾﮈ", "default_sell_provider": " ﮦﺪﻨﻨﮐ ﻢﮨﺍﺮﻓ ﻞﯿﺳ ﭧﻟﺎﻔﯾﮈ",
"delete": "حذف کریں۔", "delete": "حذف کریں۔",
@ -355,6 +357,8 @@
"moonpay_alert_text": "رقم کی قدر ${minAmount} ${fiatCurrency} کے برابر یا زیادہ ہونی چاہیے۔", "moonpay_alert_text": "رقم کی قدر ${minAmount} ${fiatCurrency} کے برابر یا زیادہ ہونی چاہیے۔",
"more_options": "مزید زرائے", "more_options": "مزید زرائے",
"name": "ﻡﺎﻧ", "name": "ﻡﺎﻧ",
"nano_current_rep": "موجودہ نمائندہ",
"nano_pick_new_rep": "ایک نیا نمائندہ منتخب کریں",
"narrow": "تنگ", "narrow": "تنگ",
"new_first_wallet_text": "آسانی سے اپنے cryptocurrency محفوظ رکھیں", "new_first_wallet_text": "آسانی سے اپنے cryptocurrency محفوظ رکھیں",
"new_node_testing": "نیا نوڈ ٹیسٹنگ", "new_node_testing": "نیا نوڈ ٹیسٹنگ",
@ -465,6 +469,8 @@
"remove_node": "نوڈ کو ہٹا دیں۔", "remove_node": "نوڈ کو ہٹا دیں۔",
"remove_node_message": "کیا آپ واقعی منتخب نوڈ کو ہٹانا چاہتے ہیں؟", "remove_node_message": "کیا آپ واقعی منتخب نوڈ کو ہٹانا چاہتے ہیں؟",
"rename": "نام تبدیل کریں۔", "rename": "نام تبدیل کریں۔",
"rep_warning": "نمائندہ انتباہ",
"rep_warning_sub": "آپ کا نمائندہ اچھ standing ے مقام پر نہیں دکھائی دیتا ہے۔ نیا منتخب کرنے کے لئے یہاں ٹیپ کریں",
"require_for_adding_contacts": "رابطوں کو شامل کرنے کی ضرورت ہے۔", "require_for_adding_contacts": "رابطوں کو شامل کرنے کی ضرورت ہے۔",
"require_for_all_security_and_backup_settings": "تمام سیکورٹی اور بیک اپ کی ترتیبات کے لیے درکار ہے۔", "require_for_all_security_and_backup_settings": "تمام سیکورٹی اور بیک اپ کی ترتیبات کے لیے درکار ہے۔",
"require_for_assessing_wallet": "بٹوے تک رسائی کے لیے درکار ہے۔", "require_for_assessing_wallet": "بٹوے تک رسائی کے لیے درکار ہے۔",
@ -579,6 +585,8 @@
"send_your_wallet": "آپ کا بٹوہ", "send_your_wallet": "آپ کا بٹوہ",
"sending": "بھیج رہا ہے۔", "sending": "بھیج رہا ہے۔",
"sent": "بھیجا", "sent": "بھیجا",
"service_health_disabled": "سروس ہیلتھ بلیٹن غیر فعال ہے",
"service_health_disabled_message": "یہ سروس ہیلتھ بلیٹن پیج ہے ، آپ اس صفحے کو ترتیبات کے تحت اہل بنا سکتے ہیں -> رازداری",
"settings": "ترتیبات", "settings": "ترتیبات",
"settings_all": "تمام", "settings_all": "تمام",
"settings_allow_biometrical_authentication": "بایومیٹریکل تصدیق کی اجازت دیں۔", "settings_allow_biometrical_authentication": "بایومیٹریکل تصدیق کی اجازت دیں۔",
@ -742,6 +750,7 @@
"unspent_coins_details_title": "غیر خرچ شدہ سککوں کی تفصیلات", "unspent_coins_details_title": "غیر خرچ شدہ سککوں کی تفصیلات",
"unspent_coins_title": "غیر خرچ شدہ سکے ۔", "unspent_coins_title": "غیر خرچ شدہ سکے ۔",
"unsupported_asset": "۔ﮟﯾﺮﮐ ﭻﺋﻮﺳ ﺮﭘ ﺱﺍ ﺎﯾ ﮟﯿﺋﺎﻨﺑ ﺱﺮﭘ ﺎﮐ ﻢﺴﻗ ﯽﮐ ﮧﺛﺎﺛﺍ ﮧﺘﻓﺎﯾ ﻥﻭﺎﻌﺗ ﻡﺮﮐ ﮦﺍﺮﺑ ۔ﮟﯿﮨ ﮯﺗﺮﮐ ﮟﯿﮩﻧ ﺖﯾﺎﻤﺣ ﯽﮐ ﯽﺋﺍﻭﺭﺭﺎﮐ ﺱﺍ ﮯﯿﻟ ﮯﮐ ﮧﺛﺎﺛﺍ ﺱﺍ ﻢﮨ", "unsupported_asset": "۔ﮟﯾﺮﮐ ﭻﺋﻮﺳ ﺮﭘ ﺱﺍ ﺎﯾ ﮟﯿﺋﺎﻨﺑ ﺱﺮﭘ ﺎﮐ ﻢﺴﻗ ﯽﮐ ﮧﺛﺎﺛﺍ ﮧﺘﻓﺎﯾ ﻥﻭﺎﻌﺗ ﻡﺮﮐ ﮦﺍﺮﺑ ۔ﮟﯿﮨ ﮯﺗﺮﮐ ﮟﯿﮩﻧ ﺖﯾﺎﻤﺣ ﯽﮐ ﯽﺋﺍﻭﺭﺭﺎﮐ ﺱﺍ ﮯﯿﻟ ﮯﮐ ﮧﺛﺎﺛﺍ ﺱﺍ ﻢﮨ",
"uptime": "اپ ٹائم",
"upto": "${value} تک", "upto": "${value} تک",
"use": "تبدیل کرنا", "use": "تبدیل کرنا",
"use_card_info_three": "ڈیجیٹل کارڈ آن لائن یا کنٹیکٹ لیس ادائیگی کے طریقوں کے ساتھ استعمال کریں۔", "use_card_info_three": "ڈیجیٹل کارڈ آن لائن یا کنٹیکٹ لیس ادائیگی کے طریقوں کے ساتھ استعمال کریں۔",
@ -758,6 +767,7 @@
"view_key_private": "کلید دیکھیں (نجی)", "view_key_private": "کلید دیکھیں (نجی)",
"view_key_public": "کلید دیکھیں (عوامی)", "view_key_public": "کلید دیکھیں (عوامی)",
"view_transaction_on": "لین دین دیکھیں آن", "view_transaction_on": "لین دین دیکھیں آن",
"voting_weight": "ووٹ کا وزن",
"waitFewSecondForTxUpdate": "۔ﮟﯾﺮﮐ ﺭﺎﻈﺘﻧﺍ ﺎﮐ ﮉﻨﮑﯿﺳ ﺪﻨﭼ ﻡﺮﮐ ﮦﺍﺮﺑ ﮯﯿﻟ ﮯﮐ ﮯﻧﺮﮐ ﯽﺳﺎﮑﻋ ﯽﮐ ﻦﯾﺩ ﻦﯿﻟ ﮟﯿﻣ ﺦﯾﺭﺎﺗ ﯽﮐ ﻦ", "waitFewSecondForTxUpdate": "۔ﮟﯾﺮﮐ ﺭﺎﻈﺘﻧﺍ ﺎﮐ ﮉﻨﮑﯿﺳ ﺪﻨﭼ ﻡﺮﮐ ﮦﺍﺮﺑ ﮯﯿﻟ ﮯﮐ ﮯﻧﺮﮐ ﯽﺳﺎﮑﻋ ﯽﮐ ﻦﯾﺩ ﻦﯿﻟ ﮟﯿﻣ ﺦﯾﺭﺎﺗ ﯽﮐ ﻦ",
"wallet_keys": "بٹوے کے بیج / چابیاں", "wallet_keys": "بٹوے کے بیج / چابیاں",
"wallet_list_create_new_wallet": "نیا والیٹ بنائیں", "wallet_list_create_new_wallet": "نیا والیٹ بنائیں",
@ -810,4 +820,4 @@
"you_will_get": "میں تبدیل کریں۔", "you_will_get": "میں تبدیل کریں۔",
"you_will_send": "سے تبدیل کریں۔", "you_will_send": "سے تبدیل کریں۔",
"yy": "YY" "yy": "YY"
} }

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "Òǹkà ìdánimọ̀ àdáni kọ́ ni èyí", "auth_store_incorrect_password": "Òǹkà ìdánimọ̀ àdáni kọ́ ni èyí",
"authenticated": "A ti jẹ́rìísí yín", "authenticated": "A ti jẹ́rìísí yín",
"authentication": "Ìfẹ̀rílàdí", "authentication": "Ìfẹ̀rílàdí",
"auto_generate_addresses": "Awọn adirẹsi ṣe agbekalẹ awọn adirẹsi",
"auto_generate_subaddresses": "Aṣiṣe Ibi-Afọwọkọ", "auto_generate_subaddresses": "Aṣiṣe Ibi-Afọwọkọ",
"automatic": "Ó máa ń ṣàdédé", "automatic": "Ó máa ń ṣàdédé",
"available_balance": "Ìyókù owó tó wà níbẹ̀", "available_balance": "Ìyókù owó tó wà níbẹ̀",
@ -175,6 +176,7 @@
"debit_card": "Káàdì ìrajà", "debit_card": "Káàdì ìrajà",
"debit_card_terms": "Òfin ti olùṣe àjọrò káàdì ìrajà bójú irú ọ̀nà t'á pamọ́ àti a lo òǹkà ti káàdì ìrajà yín (àti ọ̀rọ̀ ìdánimọ̀ tí káàdì náà) nínú àpamọ́wọ́ yìí.", "debit_card_terms": "Òfin ti olùṣe àjọrò káàdì ìrajà bójú irú ọ̀nà t'á pamọ́ àti a lo òǹkà ti káàdì ìrajà yín (àti ọ̀rọ̀ ìdánimọ̀ tí káàdì náà) nínú àpamọ́wọ́ yìí.",
"decimal_places_error": "Oọ̀rọ̀ ayipada ti o wa ni o dara julọ", "decimal_places_error": "Oọ̀rọ̀ ayipada ti o wa ni o dara julọ",
"decimals_cannot_be_zero": "Token eleemel ko le jẹ odo.",
"default_buy_provider": "Aiyipada Ra Olupese", "default_buy_provider": "Aiyipada Ra Olupese",
"default_sell_provider": "Aiyipada Olupese Tita", "default_sell_provider": "Aiyipada Olupese Tita",
"delete": "Pa á", "delete": "Pa á",
@ -356,6 +358,8 @@
"moonpay_alert_text": "Iye owó kò gbọ́dọ̀ kéré ju ${minAmount} ${fiatCurrency}", "moonpay_alert_text": "Iye owó kò gbọ́dọ̀ kéré ju ${minAmount} ${fiatCurrency}",
"more_options": "Ìyàn àfikún", "more_options": "Ìyàn àfikún",
"name": "Oruko", "name": "Oruko",
"nano_current_rep": "Aṣoju lọwọlọwọ",
"nano_pick_new_rep": "Mu aṣoju tuntun kan",
"narrow": "Taara", "narrow": "Taara",
"new_first_wallet_text": "Ni rọọrun jẹ ki o jẹ ki o jẹ ki o jẹ ki a mu", "new_first_wallet_text": "Ni rọọrun jẹ ki o jẹ ki o jẹ ki o jẹ ki a mu",
"new_node_testing": "A ń dán apẹka títun wò", "new_node_testing": "A ń dán apẹka títun wò",
@ -464,6 +468,8 @@
"remove_node": "Yọ apẹka kúrò", "remove_node": "Yọ apẹka kúrò",
"remove_node_message": "Ṣé ó da yín lójú pé ẹ fẹ́ yọ apẹka lọwọ́ kúrò?", "remove_node_message": "Ṣé ó da yín lójú pé ẹ fẹ́ yọ apẹka lọwọ́ kúrò?",
"rename": "Pààrọ̀ orúkọ", "rename": "Pààrọ̀ orúkọ",
"rep_warning": "Ikilọ aṣoju",
"rep_warning_sub": "Aṣoju rẹ ko han lati wa ni iduro to dara. Fọwọ ba ibi lati yan ọkan titun kan",
"require_for_adding_contacts": "Beere fun fifi awọn olubasọrọ kun", "require_for_adding_contacts": "Beere fun fifi awọn olubasọrọ kun",
"require_for_all_security_and_backup_settings": "Beere fun gbogbo aabo ati awọn eto afẹyinti", "require_for_all_security_and_backup_settings": "Beere fun gbogbo aabo ati awọn eto afẹyinti",
"require_for_assessing_wallet": "Beere fun wiwọle si apamọwọ", "require_for_assessing_wallet": "Beere fun wiwọle si apamọwọ",
@ -578,6 +584,8 @@
"send_your_wallet": "Àpamọ́wọ́ yín", "send_your_wallet": "Àpamọ́wọ́ yín",
"sending": "Ó ń ránṣẹ́", "sending": "Ó ń ránṣẹ́",
"sent": "Owó t'á ti ránṣẹ́", "sent": "Owó t'á ti ránṣẹ́",
"service_health_disabled": "IPỌRỌ IWE TI AGBARA TI O LE RẸ",
"service_health_disabled_message": "Eyi ni oju-iwe Iwe itẹlera Iṣẹ Ile-iṣẹ Iṣẹ: O le mu oju-iwe yii ṣiṣẹ labẹ Eto -> Asiri",
"settings": "Awọn aseṣe", "settings": "Awọn aseṣe",
"settings_all": "Gbogbo", "settings_all": "Gbogbo",
"settings_allow_biometrical_authentication": "Fi àyè gba ìfẹ̀rílàdí biometrical", "settings_allow_biometrical_authentication": "Fi àyè gba ìfẹ̀rílàdí biometrical",
@ -741,6 +749,7 @@
"unspent_coins_details_title": "Àwọn owó ẹyọ t'á kò tí ì san", "unspent_coins_details_title": "Àwọn owó ẹyọ t'á kò tí ì san",
"unspent_coins_title": "Àwọn owó ẹyọ t'á kò tí ì san", "unspent_coins_title": "Àwọn owó ẹyọ t'á kò tí ì san",
"unsupported_asset": "A ko ṣe atilẹyin iṣẹ yii fun dukia yii. Jọwọ ṣẹda tabi yipada si apamọwọ iru dukia atilẹyin.", "unsupported_asset": "A ko ṣe atilẹyin iṣẹ yii fun dukia yii. Jọwọ ṣẹda tabi yipada si apamọwọ iru dukia atilẹyin.",
"uptime": "Iduro",
"upto": "kò tóbi ju ${value}", "upto": "kò tóbi ju ${value}",
"use": "Lo", "use": "Lo",
"use_card_info_three": "Ẹ lo káàdí ayélujára lórí wẹ́ẹ̀bù tàbí ẹ lò ó lórí àwọn ẹ̀rọ̀ ìrajà tíwọn kò kò.", "use_card_info_three": "Ẹ lo káàdí ayélujára lórí wẹ́ẹ̀bù tàbí ẹ lò ó lórí àwọn ẹ̀rọ̀ ìrajà tíwọn kò kò.",
@ -757,6 +766,7 @@
"view_key_private": "Kọ́kọ́rọ́ ìwò (àdáni)", "view_key_private": "Kọ́kọ́rọ́ ìwò (àdáni)",
"view_key_public": "Kọ́kọ́rọ́ ìwò (kò àdáni)", "view_key_public": "Kọ́kọ́rọ́ ìwò (kò àdáni)",
"view_transaction_on": "Wo pàṣípààrọ̀ lórí ", "view_transaction_on": "Wo pàṣípààrọ̀ lórí ",
"voting_weight": "Idibo iwuwo",
"waitFewSecondForTxUpdate": "Fi inurere duro fun awọn iṣeju diẹ fun idunadura lati ṣe afihan ninu itan-akọọlẹ iṣowo", "waitFewSecondForTxUpdate": "Fi inurere duro fun awọn iṣeju diẹ fun idunadura lati ṣe afihan ninu itan-akọọlẹ iṣowo",
"wallet_keys": "Hóró/kọ́kọ́rọ́ àpamọ́wọ́", "wallet_keys": "Hóró/kọ́kọ́rọ́ àpamọ́wọ́",
"wallet_list_create_new_wallet": "Ṣe àpamọ́wọ́ títun", "wallet_list_create_new_wallet": "Ṣe àpamọ́wọ́ títun",
@ -809,4 +819,4 @@
"you_will_get": "Ṣe pàṣípààrọ̀ sí", "you_will_get": "Ṣe pàṣípààrọ̀ sí",
"you_will_send": "Ṣe pàṣípààrọ̀ láti", "you_will_send": "Ṣe pàṣípààrọ̀ láti",
"yy": "Ọd" "yy": "Ọd"
} }

View file

@ -59,6 +59,7 @@
"auth_store_incorrect_password": "PIN码错误", "auth_store_incorrect_password": "PIN码错误",
"authenticated": "已认证", "authenticated": "已认证",
"authentication": "认证方式", "authentication": "认证方式",
"auto_generate_addresses": "自动生成地址",
"auto_generate_subaddresses": "自动生成子辅助", "auto_generate_subaddresses": "自动生成子辅助",
"automatic": "自动的", "automatic": "自动的",
"available_balance": "可用余额", "available_balance": "可用余额",
@ -175,6 +176,7 @@
"debit_card": "借记卡", "debit_card": "借记卡",
"debit_card_terms": "您的支付卡号(以及与您的支付卡号对应的凭证)在此数字钱包中的存储和使用受适用的持卡人与支付卡发卡机构签订的协议的条款和条件的约束,自时不时。", "debit_card_terms": "您的支付卡号(以及与您的支付卡号对应的凭证)在此数字钱包中的存储和使用受适用的持卡人与支付卡发卡机构签订的协议的条款和条件的约束,自时不时。",
"decimal_places_error": "小数位太多", "decimal_places_error": "小数位太多",
"decimals_cannot_be_zero": "代币十进制不能为零。",
"default_buy_provider": "默认购买提供商", "default_buy_provider": "默认购买提供商",
"default_sell_provider": "默认销售提供商", "default_sell_provider": "默认销售提供商",
"delete": "删除", "delete": "删除",
@ -355,6 +357,8 @@
"moonpay_alert_text": "金额的价值必须大于或等于 ${minAmount} ${fiatCurrency}", "moonpay_alert_text": "金额的价值必须大于或等于 ${minAmount} ${fiatCurrency}",
"more_options": "更多选项", "more_options": "更多选项",
"name": "姓名", "name": "姓名",
"nano_current_rep": "当前代表",
"nano_pick_new_rep": "选择新代表",
"narrow": "狭窄的", "narrow": "狭窄的",
"new_first_wallet_text": "轻松确保您的加密货币安全", "new_first_wallet_text": "轻松确保您的加密货币安全",
"new_node_testing": "新节点测试", "new_node_testing": "新节点测试",
@ -463,6 +467,8 @@
"remove_node": "删除节点", "remove_node": "删除节点",
"remove_node_message": "您确定要删除所选节点吗?", "remove_node_message": "您确定要删除所选节点吗?",
"rename": "重命名", "rename": "重命名",
"rep_warning": "代表性警告",
"rep_warning_sub": "您的代表似乎并不信誉良好。点击这里选择一个新的",
"require_for_adding_contacts": "需要添加联系人", "require_for_adding_contacts": "需要添加联系人",
"require_for_all_security_and_backup_settings": "需要所有安全和备份设置", "require_for_all_security_and_backup_settings": "需要所有安全和备份设置",
"require_for_assessing_wallet": "需要访问钱包", "require_for_assessing_wallet": "需要访问钱包",
@ -577,6 +583,8 @@
"send_your_wallet": "你的钱包", "send_your_wallet": "你的钱包",
"sending": "正在发送", "sending": "正在发送",
"sent": "已发送", "sent": "已发送",
"service_health_disabled": "服务健康公告被禁用",
"service_health_disabled_message": "这是服务健康公告页面,您可以在设置 - >隐私下启用此页面",
"settings": "设置", "settings": "设置",
"settings_all": "全部", "settings_all": "全部",
"settings_allow_biometrical_authentication": "允许生物识别认证", "settings_allow_biometrical_authentication": "允许生物识别认证",
@ -740,6 +748,7 @@
"unspent_coins_details_title": "未使用代幣詳情", "unspent_coins_details_title": "未使用代幣詳情",
"unspent_coins_title": "未使用的硬幣", "unspent_coins_title": "未使用的硬幣",
"unsupported_asset": "我们不支持针对该资产采取此操作。请创建或切换到支持的资产类型的钱包。", "unsupported_asset": "我们不支持针对该资产采取此操作。请创建或切换到支持的资产类型的钱包。",
"uptime": "正常运行时间",
"upto": "最高 ${value}", "upto": "最高 ${value}",
"use": "切换使用", "use": "切换使用",
"use_card_info_three": "在线使用电子卡或使用非接触式支付方式。", "use_card_info_three": "在线使用电子卡或使用非接触式支付方式。",
@ -756,6 +765,7 @@
"view_key_private": "View 密钥(私钥)", "view_key_private": "View 密钥(私钥)",
"view_key_public": "View 密钥(公钥)", "view_key_public": "View 密钥(公钥)",
"view_transaction_on": "View Transaction on ", "view_transaction_on": "View Transaction on ",
"voting_weight": "投票权重",
"waitFewSecondForTxUpdate": "请等待几秒钟,交易才会反映在交易历史记录中", "waitFewSecondForTxUpdate": "请等待几秒钟,交易才会反映在交易历史记录中",
"wallet_keys": "钱包种子/密钥", "wallet_keys": "钱包种子/密钥",
"wallet_list_create_new_wallet": "创建新钱包", "wallet_list_create_new_wallet": "创建新钱包",
@ -808,4 +818,4 @@
"you_will_get": "转换到", "you_will_get": "转换到",
"you_will_send": "转换自", "you_will_send": "转换自",
"yy": "YY" "yy": "YY"
} }

View file

@ -15,15 +15,15 @@ TYPES=($MONERO_COM $CAKEWALLET $HAVEN)
APP_ANDROID_TYPE=$1 APP_ANDROID_TYPE=$1
MONERO_COM_NAME="Monero.com" MONERO_COM_NAME="Monero.com"
MONERO_COM_VERSION="1.12.1" MONERO_COM_VERSION="1.12.2"
MONERO_COM_BUILD_NUMBER=80 MONERO_COM_BUILD_NUMBER=82
MONERO_COM_BUNDLE_ID="com.monero.app" MONERO_COM_BUNDLE_ID="com.monero.app"
MONERO_COM_PACKAGE="com.monero.app" MONERO_COM_PACKAGE="com.monero.app"
MONERO_COM_SCHEME="monero.com" MONERO_COM_SCHEME="monero.com"
CAKEWALLET_NAME="Cake Wallet" CAKEWALLET_NAME="Cake Wallet"
CAKEWALLET_VERSION="4.15.3" CAKEWALLET_VERSION="4.15.4"
CAKEWALLET_BUILD_NUMBER=202 CAKEWALLET_BUILD_NUMBER=204
CAKEWALLET_BUNDLE_ID="com.cakewallet.cake_wallet" CAKEWALLET_BUNDLE_ID="com.cakewallet.cake_wallet"
CAKEWALLET_PACKAGE="com.cakewallet.cake_wallet" CAKEWALLET_PACKAGE="com.cakewallet.cake_wallet"
CAKEWALLET_SCHEME="cakewallet" CAKEWALLET_SCHEME="cakewallet"

View file

@ -13,13 +13,13 @@ TYPES=($MONERO_COM $CAKEWALLET $HAVEN)
APP_IOS_TYPE=$1 APP_IOS_TYPE=$1
MONERO_COM_NAME="Monero.com" MONERO_COM_NAME="Monero.com"
MONERO_COM_VERSION="1.12.1" MONERO_COM_VERSION="1.12.2"
MONERO_COM_BUILD_NUMBER=77 MONERO_COM_BUILD_NUMBER=79
MONERO_COM_BUNDLE_ID="com.cakewallet.monero" MONERO_COM_BUNDLE_ID="com.cakewallet.monero"
CAKEWALLET_NAME="Cake Wallet" CAKEWALLET_NAME="Cake Wallet"
CAKEWALLET_VERSION="4.15.3" CAKEWALLET_VERSION="4.15.4"
CAKEWALLET_BUILD_NUMBER=221 CAKEWALLET_BUILD_NUMBER=228
CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet" CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet"
HAVEN_NAME="Haven" HAVEN_NAME="Haven"

View file

@ -16,13 +16,13 @@ if [ -n "$1" ]; then
fi fi
MONERO_COM_NAME="Monero.com" MONERO_COM_NAME="Monero.com"
MONERO_COM_VERSION="1.2.1" MONERO_COM_VERSION="1.2.2"
MONERO_COM_BUILD_NUMBER=11 MONERO_COM_BUILD_NUMBER=13
MONERO_COM_BUNDLE_ID="com.cakewallet.monero" MONERO_COM_BUNDLE_ID="com.cakewallet.monero"
CAKEWALLET_NAME="Cake Wallet" CAKEWALLET_NAME="Cake Wallet"
CAKEWALLET_VERSION="1.8.3" CAKEWALLET_VERSION="1.8.4"
CAKEWALLET_BUILD_NUMBER=61 CAKEWALLET_BUILD_NUMBER=63
CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet" CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet"
if ! [[ " ${TYPES[*]} " =~ " ${APP_MACOS_TYPE} " ]]; then if ! [[ " ${TYPES[*]} " =~ " ${APP_MACOS_TYPE} " ]]; then

View file

@ -795,6 +795,7 @@ import 'package:cw_core/transaction_history.dart';
import 'package:cw_core/wallet_service.dart'; import 'package:cw_core/wallet_service.dart';
import 'package:cw_core/output_info.dart'; import 'package:cw_core/output_info.dart';
import 'package:cw_core/nano_account_info_response.dart'; import 'package:cw_core/nano_account_info_response.dart';
import 'package:cw_core/n2_node.dart';
import 'package:mobx/mobx.dart'; import 'package:mobx/mobx.dart';
import 'package:hive/hive.dart'; import 'package:hive/hive.dart';
import 'package:cake_wallet/view_model/send/output.dart'; import 'package:cake_wallet/view_model/send/output.dart';
@ -853,6 +854,8 @@ abstract class Nano {
Future<bool> updateTransactions(Object wallet); Future<bool> updateTransactions(Object wallet);
BigInt getTransactionAmountRaw(TransactionInfo transactionInfo); BigInt getTransactionAmountRaw(TransactionInfo transactionInfo);
String getRepresentative(Object wallet); String getRepresentative(Object wallet);
Future<List<N2Node>> getN2Reps(Object wallet);
bool isRepOk(Object wallet);
} }
abstract class NanoAccountList { abstract class NanoAccountList {

View file

@ -37,11 +37,13 @@ class SecretKey {
SecretKey('exchangeHelperApiKey', () => ''), SecretKey('exchangeHelperApiKey', () => ''),
SecretKey('walletConnectProjectId', () => ''), SecretKey('walletConnectProjectId', () => ''),
SecretKey('moralisApiKey', () => ''), SecretKey('moralisApiKey', () => ''),
SecretKey('ankrApiKey', () => ''),
]; ];
static final evmChainsSecrets = [ static final evmChainsSecrets = [
SecretKey('etherScanApiKey', () => ''), SecretKey('etherScanApiKey', () => ''),
SecretKey('polygonScanApiKey', () => ''), SecretKey('polygonScanApiKey', () => ''),
SecretKey('moralisApiKey', () => ''),
]; ];
static final solanaSecrets = [ static final solanaSecrets = [