Merge branch 'dev' into dev

This commit is contained in:
BSN ∞/21M
2026-08-07 14:47:23 +02:00
committed by GitHub
106 changed files with 4681 additions and 1624 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

+4
View File
@@ -1,6 +1,8 @@
import "package:analysis_server_plugin/plugin.dart";
import "package:analysis_server_plugin/registry.dart";
import "package:cw_custom_lints/http_force_proxy/http_force_proxy_rule.dart";
import "package:cw_custom_lints/modal_top_bar_semantics/modal_top_bar_semantics_rule.dart";
import "package:cw_custom_lints/modern_button_semantics/modern_button_semantics_rule.dart";
import "package:cw_custom_lints/print_verbose/print_verbose_fix.dart";
import "package:cw_custom_lints/print_verbose/print_verbose_rule.dart";
import "package:cw_custom_lints/restricted_imports/restricted_imports_rule.dart";
@@ -16,6 +18,8 @@ class CwCustomLintsPlugin extends Plugin {
registry.registerWarningRule(PrintVerboseRule());
registry.registerWarningRule(RestrictedImportsRule());
registry.registerWarningRule(HttpForceProxyRule());
registry.registerWarningRule(ModernButtonSemanticsRule());
registry.registerWarningRule(ModalTopBarSemanticsRule());
registry.registerFixForRule(PrintVerboseRule.code, ReplaceWithPrintV.new);
}
@@ -0,0 +1,69 @@
import "package:analyzer/analysis_rule/analysis_rule.dart";
import "package:analyzer/analysis_rule/rule_context.dart";
import "package:analyzer/analysis_rule/rule_visitor_registry.dart";
import "package:analyzer/dart/ast/ast.dart";
import "package:analyzer/dart/ast/visitor.dart";
import "package:analyzer/error/error.dart";
import "package:cw_custom_lints/utils/widget_arguments.dart";
class ModalTopBarSemanticsRule extends AnalysisRule {
ModalTopBarSemanticsRule()
: super(
name: "require_modal_top_bar_semantics",
description:
"ModalTopBar icons need a semantic label, because the icon alone does not say whether it closes the modal, goes back or does something else.",
);
static const LintCode code = LintCode(
"require_modal_top_bar_semantics",
"ModalTopBar was given a {0} without a {1}, so screen readers have nothing to announce.",
correctionMessage: "Pass a localized {1} next to the {0}.",
severity: DiagnosticSeverity.WARNING,
);
static const _iconSemanticLabels = {
"leadingIcon": "leadingSemanticLabel",
"trailingIcon": "trailingSemanticLabel",
};
@override
LintCode get diagnosticCode => code;
@override
void registerNodeProcessors(RuleVisitorRegistry registry, RuleContext context) =>
registry.addInstanceCreationExpression(this, _Visitor(this));
}
class _Visitor extends SimpleAstVisitor<void> {
_Visitor(this.rule);
final AnalysisRule rule;
@override
void visitInstanceCreationExpression(InstanceCreationExpression node) {
if (!isCakeWalletWidget(node.constructorName, "ModalTopBar")) {
return;
}
for (final slot in ModalTopBarSemanticsRule._iconSemanticLabels.entries) {
_checkSlot(node.argumentList, iconName: slot.key, semanticLabelName: slot.value);
}
}
void _checkSlot(
ArgumentList argumentList, {
required String iconName,
required String semanticLabelName,
}) {
final icon = namedArgument(argumentList, iconName);
if (icon == null || icon.argumentExpression is NullLiteral) {
return;
}
if (!isMissingOrEmptyText(namedArgumentExpression(argumentList, semanticLabelName))) {
return;
}
rule.reportAtToken(icon.name, arguments: [iconName, semanticLabelName]);
}
}
@@ -0,0 +1,56 @@
import "package:analyzer/analysis_rule/analysis_rule.dart";
import "package:analyzer/analysis_rule/rule_context.dart";
import "package:analyzer/analysis_rule/rule_visitor_registry.dart";
import "package:analyzer/dart/ast/ast.dart";
import "package:analyzer/dart/ast/visitor.dart";
import "package:analyzer/error/error.dart";
import "package:cw_custom_lints/utils/widget_arguments.dart";
class ModernButtonSemanticsRule extends AnalysisRule {
ModernButtonSemanticsRule()
: super(
name: "require_modern_button_semantics",
description:
"ModernButton needs a semanticLabel when it has no visible label, otherwise screen readers announce an unnamed button.",
);
static const LintCode code = LintCode(
"require_modern_button_semantics",
"ModernButton has no visible label, so screen readers have nothing to announce.",
correctionMessage: "Pass a localized semanticLabel, or a non-empty label.",
severity: DiagnosticSeverity.WARNING,
);
@override
LintCode get diagnosticCode => code;
@override
void registerNodeProcessors(RuleVisitorRegistry registry, RuleContext context) =>
registry.addInstanceCreationExpression(this, _Visitor(this));
}
class _Visitor extends SimpleAstVisitor<void> {
_Visitor(this.rule);
final AnalysisRule rule;
@override
void visitInstanceCreationExpression(InstanceCreationExpression node) {
final constructorName = node.constructorName;
if (!isCakeWalletWidget(constructorName, "ModernButton")) {
return;
}
final argumentList = node.argumentList;
final hasLabel = !isMissingOrEmptyText(namedArgumentExpression(argumentList, "label"));
final hasSemanticLabel = !isMissingOrEmptyText(
namedArgumentExpression(argumentList, "semanticLabel"),
);
if (hasLabel || hasSemanticLabel) {
return;
}
rule.reportAtNode(constructorName);
}
}
@@ -0,0 +1,51 @@
import "package:analyzer/analysis_rule/analysis_rule.dart";
import "package:analyzer/analysis_rule/rule_context.dart";
import "package:analyzer/analysis_rule/rule_visitor_registry.dart";
import "package:analyzer/dart/ast/ast.dart";
import "package:analyzer/dart/ast/visitor.dart";
import "package:analyzer/error/error.dart";
class NoBareCatchRule extends AnalysisRule {
NoBareCatchRule()
: super(
name: "no_bare_catch",
description: "please specify the exception class to catch (on SomeException catch (e))",
);
static const LintCode code = LintCode(
"no_bare_catch",
"please specify the exception class to catch (on SomeException catch (e))",
severity: DiagnosticSeverity.WARNING,
);
@override
LintCode get diagnosticCode => code;
@override
void registerNodeProcessors(RuleVisitorRegistry registry, RuleContext context) {
registry.addCatchClause(this, _Visitor(this));
}
}
class _Visitor extends SimpleAstVisitor<void> {
_Visitor(this.rule);
final AnalysisRule rule;
@override
void visitCatchClause(CatchClause node) {
if (node.exceptionType != null) {
return;
}
final tryStatement = node.parent;
if (tryStatement is TryStatement) {
final precedingClauses = tryStatement.catchClauses.takeWhile((clause) => clause != node);
if (precedingClauses.any((clause) => clause.exceptionType != null)) {
return;
}
}
rule.reportAtNode(node);
}
}
@@ -0,0 +1,39 @@
import "package:analyzer/dart/ast/ast.dart";
bool isCakeWalletWidget(ConstructorName constructorName, String className) {
final element = constructorName.type.element;
if (element == null || element.name != className) {
return false;
}
final libraryUri = element.library?.uri;
if (libraryUri == null || libraryUri.scheme != "package") {
return false;
}
final segments = libraryUri.pathSegments;
return segments.isNotEmpty && segments.first == "cake_wallet";
}
NamedArgument? namedArgument(ArgumentList argumentList, String name) {
for (final argument in argumentList.arguments) {
if (argument is NamedArgument && argument.name.lexeme == name) {
return argument;
}
}
return null;
}
Expression? namedArgumentExpression(ArgumentList argumentList, String name) =>
namedArgument(argumentList, name)?.argumentExpression;
// passed null or ""
// does NOT work if a runtime expression evaluates to an empty string or null
bool isMissingOrEmptyText(Expression? expression) {
if (expression == null || expression is NullLiteral) {
return true;
}
return expression is StringLiteral && (expression.stringValue?.isEmpty ?? false);
}
+2
View File
@@ -370,6 +370,8 @@ abstract class MoneroWalletBase
};
}
bool hasUnknownKeyImages() => currentWallet!.hasUnknownKeyImages();
bool needExportOutputs(Money amount) {
if (int.tryParse(currentWallet!.secretSpendKey()) != 0) {
return false;
+22 -19
View File
@@ -1,27 +1,28 @@
import 'dart:convert';
import "dart:convert";
import 'package:cw_core/hardware/hardware_wallet_service.dart';
import 'package:trezor_flutter/trezor_flutter.dart';
import "package:cw_core/hardware/hardware_wallet_service.dart";
import "package:trezor_flutter/trezor_flutter.dart";
class MoneroTrezorService extends HardwareWalletService {
final TrezorClient client;
MoneroTrezorService(this.client);
final TrezorClient client;
}
class MoneroTrezorWatchCredentials {
const MoneroTrezorWatchCredentials(this.watchKey, this.address);
final String watchKey;
final String address;
const MoneroTrezorWatchCredentials(this.watchKey, this.address);
}
class Trezor {
final MoneroTrezorService service;
Trezor(this.service);
final MoneroTrezorService service;
String? _sessionPassphrase;
Future<void> newPassphraseSession(String? passphrase) async {
if (passphrase == null) return;
@@ -42,21 +43,23 @@ class Trezor {
final txIds = <MoneroKeyImageTxData>[];
for (final tdi in tdisList) {
txIds.add(MoneroKeyImageTxData(
outKey: tdi["out_key"],
txPubKey: tdi["tx_pub_key"],
internalOutputIndex: tdi["internal_output_index"],
subAddrMajor: tdi["sub_addr_major"],
subAddrMinor: tdi["sub_addr_minor"],
txIds.add(
MoneroKeyImageTxData(
outKey: tdi["out_key"] as String,
txPubKey: tdi["tx_pub_key"] as String,
internalOutputIndex: tdi["internal_output_index"] as int,
subAddrMajor: tdi["sub_addr_major"] as int,
subAddrMinor: tdi["sub_addr_minor"] as int,
additionalTxPubKeys:
(tdi["additional_tx_pub_keys"] as List?)?.map((e) => e as String).toList() ?? []));
(tdi["additional_tx_pub_keys"] as List?)?.map((e) => e as String).toList() ?? [],
),
);
}
final keyImages = await TrezorMonero(service.client).syncKeyImages(txIds);
return jsonEncode(keyImages.toMap());
}
Future<String> signTransaction(String json) async {
return TrezorMonero(service.client).signTransaction(jsonDecode(json));
}
Future<String> signTransaction(String json) =>
TrezorMonero(service.client).signTransaction(jsonDecode(json) as Map<String, dynamic>);
}
+4 -4
View File
@@ -921,8 +921,8 @@ packages:
dependency: "direct main"
description:
path: trezor-flutter
ref: "944080d950a62dd48a199b9736237cbe580351de"
resolved-ref: "944080d950a62dd48a199b9736237cbe580351de"
ref: "7a736320f6d53ad5c763734ab832d6bea560a327"
resolved-ref: "7a736320f6d53ad5c763734ab832d6bea560a327"
url: "https://github.com/cake-tech/trezor-flutter.git"
source: git
version: "0.1.0"
@@ -930,8 +930,8 @@ packages:
dependency: transitive
description:
path: trezor_usb_transport
ref: "944080d950a62dd48a199b9736237cbe580351de"
resolved-ref: "944080d950a62dd48a199b9736237cbe580351de"
ref: "7a736320f6d53ad5c763734ab832d6bea560a327"
resolved-ref: "7a736320f6d53ad5c763734ab832d6bea560a327"
url: "https://github.com/cake-tech/trezor-flutter.git"
source: git
version: "0.0.1"
+1 -1
View File
@@ -33,7 +33,7 @@ dependencies:
trezor_flutter:
git:
url: https://github.com/cake-tech/trezor-flutter.git
ref: 944080d950a62dd48a199b9736237cbe580351de
ref: 7d27e19b7bcdcd6241df35953f9a6ec2df0c7a97
path: trezor-flutter
dev_dependencies:
+9
View File
@@ -100,6 +100,15 @@ class DefaultSPLTokens {
iconPath: 'assets/images/avdo_icon.png',
enabled: false,
),
SPLToken(
name: "The Bitcoin Bull",
symbol: "TBB",
mintAddress: "42cXQvAAr7hcPBPWAS4ocVtDyeJ4Fa6gRR2uG4gppump",
decimal: 6,
mint: "tbb",
iconPath: "assets/images/tbb_icon.png",
enabled: false,
),
SPLToken(
name: "Tether Gold",
symbol: "XAUT0",
+44
View File
@@ -52,6 +52,8 @@ class SolanaWalletClient {
SolanaRPC? _provider;
bool _isStopped = false;
final Map<String, bool> _jupiterVerificationCache = {};
bool connect(Node node) {
try {
_isStopped = false;
@@ -1905,6 +1907,48 @@ class SolanaWalletClient {
return [];
}
}
Future<bool?> isTokenVerifiedOnJupiter(String mintAddress) async {
if (_jupiterVerificationCache.containsKey(mintAddress)) {
return _jupiterVerificationCache[mintAddress];
}
try {
final uri = Uri.https(
"lite-api.jup.ag",
"/tokens/v2/search",
{"query": mintAddress},
);
final response = await client.get(
uri,
headers: {"Accept": "application/json"},
);
if (response.statusCode < 200 || response.statusCode >= 300) {
printV("Jupiter token API returned status: ${response.statusCode}");
return null;
}
final decodedResponse = jsonDecode(response.body) as List;
for (final item in decodedResponse) {
final tokenData = item as Map<String, dynamic>;
if (tokenData["id"] == mintAddress) {
final isVerified = tokenData["isVerified"] as bool? ?? false;
_jupiterVerificationCache[mintAddress] = isVerified;
return isVerified;
}
}
// this means Jupiter doesn't index this mint at all, so we can't say either
return null;
} catch (e) {
printV("Error checking Jupiter verification: ${e.toString()}");
return null;
}
}
}
class MoralisSolanaTokenBalance {
+3
View File
@@ -902,6 +902,9 @@ abstract class SolanaWalletBase
}
}
Future<bool?> isTokenVerifiedOnJupiter(String mintAddress) =>
_client.isTokenVerifiedOnJupiter(mintAddress);
void _setTransactionUpdateTimer() {
if (_transactionsUpdateTimer?.isActive ?? false) {
_transactionsUpdateTimer!.cancel();
+118 -110
View File
@@ -521,10 +521,10 @@ abstract class ZcashWalletBase
static const _dispPhrase = "Received to disposable address";
bool _hasExternalOutputs(final ZkoolTx tx) =>
tx.outputsWithAddress.any((final o) => !_addressBelongsToWallet(o.address));
bool _hasExternalOutputs(final ZkoolTx tx, final Set<String> ownedAddresses) =>
tx.outputsWithAddress.any((final o) => !_isOwnedAddress(o.address, ownedAddresses));
bool _isIronwoodMigrationTx(final ZkoolTx tx) {
bool _isIronwoodMigrationTx(final ZkoolTx tx, final Set<String> ownedAddresses) {
// zkool classifies migration as selfTransfer with fee-sized net value.
if (tx.type != TxType.selfTransfer) {
return false;
@@ -540,7 +540,7 @@ abstract class ZcashWalletBase
return true;
}
// Orchard → Orchard split step (SD notes created, all outputs are ours).
if (tx.orchardReceived > BigInt.zero && !_hasExternalOutputs(tx)) {
if (tx.orchardReceived > BigInt.zero && !_hasExternalOutputs(tx, ownedAddresses)) {
return true;
}
// Orchard → Ironwood before the IW note is attached to tx details.
@@ -577,10 +577,7 @@ abstract class ZcashWalletBase
.whereType<String>()
.where((final m) => m.isNotEmpty)
.firstOrNull;
final recipientAddresses = _recipientAddresses(
accountNotes.map((final n) => n.address).whereType<String>(),
direction,
);
final recipientAddresses = const <String>[];
final info = ZcashTransactionInfo(
id: txHash,
@@ -608,17 +605,20 @@ abstract class ZcashWalletBase
final bool isShieldAction = false,
final TransactionDirection? directionOverride,
final BigInt? amountOverride,
required final Set<String> ownedAddresses,
}) {
final confirmations = tx.height > 0 && currentHeight >= tx.height
? currentHeight - tx.height + 1
: 0;
final memo = extraMemo != null ? "${tx.memo ?? ''}\n$extraMemo".trim() : tx.memo;
final isMigration = directionOverride == null && _isIronwoodMigrationTx(tx);
final isMigration = directionOverride == null && _isIronwoodMigrationTx(tx, ownedAddresses);
final direction = directionOverride ??
(isMigration ? TransactionDirection.outgoing : tx.direction);
final recipientAddresses = _recipientAddresses(_paymentOutputAddresses(tx), direction);
final amount = amountOverride ??
(isMigration ? _migrationDisplayAmount(tx) : tx.value);
final recipientAddresses = direction == TransactionDirection.outgoing
? _outgoingRecipientAddresses(tx, ownedAddresses: ownedAddresses)
: const <String>[];
final info = ZcashTransactionInfo(
id: tx.txHash,
amount: Money(amount, currency),
@@ -641,14 +641,18 @@ abstract class ZcashWalletBase
return info;
}
bool _isShieldActionTx(final ZkoolTx tx, {required final Set<String> rotationSweepHashes}) {
bool _isShieldActionTx(
final ZkoolTx tx, {
required final Set<String> rotationSweepHashes,
required final Set<String> ownedAddresses,
}) {
if (ZcashWalletService.isAutoshieldTx(tx.txHash)) {
return true;
}
if (rotationSweepHashes.contains(tx.txHash)) {
return true;
}
if (_isPayToSelfAutoshield(tx)) {
if (_isPayToSelfAutoshield(tx, ownedAddresses)) {
return true;
}
if (tx.direction == TransactionDirection.outgoing &&
@@ -658,7 +662,7 @@ abstract class ZcashWalletBase
return false;
}
bool _isPayToSelfAutoshield(final ZkoolTx tx) {
bool _isPayToSelfAutoshield(final ZkoolTx tx, final Set<String> ownedAddresses) {
if (tx.type != TxType.shield && tx.type != TxType.transparentSelfTransfer) {
return false;
}
@@ -669,18 +673,23 @@ abstract class ZcashWalletBase
return false;
}
for (final dest in tx.outputAddresses) {
if (_addressBelongsToWallet(dest)) {
if (_isOwnedAddress(dest, ownedAddresses)) {
return true;
}
}
return tx.orchardReceived > BigInt.zero;
}
bool _shouldSplitAutoshieldTx(final ZkoolTx tx, {required final bool isShield}) {
bool _shouldSplitAutoshieldTx(
final ZkoolTx tx, {
required final bool isShield,
required final Set<String> ownedAddresses,
}) {
if (!isShield) {
return false;
}
if (ZcashWalletService.isAutoshieldTx(tx.txHash) || _isPayToSelfAutoshield(tx)) {
if (ZcashWalletService.isAutoshieldTx(tx.txHash) ||
_isPayToSelfAutoshield(tx, ownedAddresses)) {
return tx.transparentOrSaplingSpent > BigInt.zero && tx.orchardReceived > BigInt.zero;
}
return false;
@@ -724,104 +733,57 @@ abstract class ZcashWalletBase
}
}
bool _addressBelongsToWallet(final String addr) {
final addrs = walletAddresses;
if (addrs.containsAddress(addr) ||
addrs.hiddenAddresses.contains(addr) ||
addrs.usedAddresses.contains(addr)) {
return true;
}
for (final infos in addrs.addressInfos.values) {
for (final info in infos) {
if (info.address == addr) {
return true;
}
}
}
for (final own in [
addrs.orchardAddress,
addrs.unifiedAddress,
addrs.saplingAddress,
addrs.transparentAddress,
addrs.address,
]) {
if (own == null || own.isEmpty || own.startsWith('unknown ')) {
Future<Set<String>> _ownedAddressSet(final zkool_coin.Coin coin) async {
final owned = <String>{};
for (final address in await zkool_account.listOwnedAddresses(c: coin)) {
if (address.isEmpty) {
continue;
}
if (addr == own || addr.startsWith(own) || own.startsWith(addr)) {
return true;
owned.add(address);
if (address.startsWith('u')) {
owned.addAll(_uaReceivers(address));
}
}
return false;
}
List<String> _paymentOutputAddresses(final ZkoolTx tx) {
final all = tx.outputsWithAddress.toList();
final external = all.where((final o) => !_addressBelongsToWallet(o.address)).toList();
final outputs = external.isNotEmpty ? external : all;
final transparent = outputs.where((final o) => o.pool == NotePool.transparent.index).toList();
if (transparent.length >= 2) {
return transparent.map((final o) => o.address).toList();
final addrs = walletAddresses;
for (final infos in addrs.addressInfos.values) {
for (final info in infos) {
owned.add(info.address);
}
}
return outputs.map((final o) => o.address).toList();
owned.addAll(addrs.hiddenAddresses);
owned.addAll(addrs.usedAddresses);
return owned;
}
List<String> _recipientAddresses(
final Iterable<String> raw,
final TransactionDirection direction,
) {
bool _isOwnedAddress(final String addr, final Set<String> ownedAddresses) =>
ownedAddresses.contains(addr);
List<String> _outgoingRecipientAddresses(
final ZkoolTx tx, {
required final Set<String> ownedAddresses,
}) {
var outputs = tx.outputsWithAddress
.where((final o) => !_isOwnedAddress(o.address, ownedAddresses))
.toList();
if (outputs.isEmpty) {
return [];
}
final transparent =
outputs.where((final o) => o.pool == NotePool.transparent.index).toList();
if (transparent.length >= 2) {
outputs = transparent;
}
return _dedupeAddresses(outputs.map((final o) => o.address));
}
List<String> _dedupeAddresses(final Iterable<String> raw) {
final seen = <String>{};
final addresses = [
return [
for (final address in raw)
if (address.trim().isNotEmpty && seen.add(address.trim())) address.trim(),
];
if (addresses.isEmpty) {
return [];
}
final external = direction == TransactionDirection.incoming
? addresses
: [
for (final address in addresses)
if (!_addressBelongsToWallet(address)) address,
];
final list = external.isNotEmpty ? external : addresses;
if (list.isEmpty) {
return [];
}
final embedded = {
for (final address in list)
if (address.startsWith('u')) ..._uaReceivers(address),
};
var result = embedded.isEmpty
? list
: [
for (final address in list)
if (address.startsWith('u') || !embedded.contains(address)) address,
];
if (result.isEmpty) {
result = list;
}
final standalone = [
for (final address in result)
if (!address.startsWith('u') && !embedded.contains(address)) address,
];
if (standalone.length >= 2) {
result = standalone;
}
if (direction == TransactionDirection.incoming) {
return [
result.firstWhere(
(final a) => a.startsWith('u'),
orElse: () =>
result.firstWhere((final a) => a.startsWith('z'), orElse: () => result.first),
),
];
}
return result;
}
Set<String> _uaReceivers(final String ua) {
@@ -839,9 +801,10 @@ abstract class ZcashWalletBase
@override
Future<Map<String, ZcashTransactionInfo>> fetchTransactions() async {
await ZcashWalletService.loadShieldTxs();
final (txs, currentHeight) = await runWithCoin(
final (txs, currentHeight, ownedAddresses) = await runWithCoin(
accountId: accountId,
func: (coin) async {
final owned = await _ownedAddressSet(coin);
final txsI = await zkool_account.listTxHistory(c: coin);
final txsA = await Future.wait(
txsI.map((final tx) => zkool_account.getTxDetails(idTx: tx.id, c: coin)),
@@ -857,7 +820,7 @@ abstract class ZcashWalletBase
} catch (e) {
printV("failed to get height: $e");
}
return (txs, currentHeight);
return (txs, currentHeight, owned);
},
);
final Map<String, ZcashTransactionInfo> byHash = {};
@@ -871,11 +834,25 @@ abstract class ZcashWalletBase
if (tx.direction == TransactionDirection.incoming) {
_offerTx(
byHash,
_zcashInfoFromZkoolTx(tx, currentHeight, extraMemo: _dispPhrase, isRotationReceive: true),
_zcashInfoFromZkoolTx(
tx,
currentHeight,
extraMemo: _dispPhrase,
isRotationReceive: true,
ownedAddresses: ownedAddresses,
),
);
continue;
}
_offerTx(byHash, _zcashInfoFromZkoolTx(tx, currentHeight, isShieldAction: true));
_offerTx(
byHash,
_zcashInfoFromZkoolTx(
tx,
currentHeight,
isShieldAction: true,
ownedAddresses: ownedAddresses,
),
);
}
final Map<String, ZcashTransactionInfo> splitEntries = {};
@@ -884,8 +861,12 @@ abstract class ZcashWalletBase
if (tx.height > 0) {
ZcashMempoolService.instance.removeTx(tx.txHash);
}
final isShield = _isShieldActionTx(tx, rotationSweepHashes: rotationSweepHashes);
if (_shouldSplitAutoshieldTx(tx, isShield: isShield)) {
final isShield = _isShieldActionTx(
tx,
rotationSweepHashes: rotationSweepHashes,
ownedAddresses: ownedAddresses,
);
if (_shouldSplitAutoshieldTx(tx, isShield: isShield, ownedAddresses: ownedAddresses)) {
byHash.remove(tx.txHash);
splitEntries[_txResultKey(tx.txHash, suffix: '_shield')] = _zcashInfoFromZkoolTx(
tx,
@@ -893,16 +874,26 @@ abstract class ZcashWalletBase
isShieldAction: true,
directionOverride: TransactionDirection.outgoing,
amountOverride: tx.transparentOrSaplingSpent,
ownedAddresses: ownedAddresses,
);
splitEntries[_txResultKey(tx.txHash, suffix: '_recv')] = _zcashInfoFromZkoolTx(
tx,
currentHeight,
directionOverride: TransactionDirection.incoming,
amountOverride: tx.orchardReceived,
ownedAddresses: ownedAddresses,
);
continue;
}
_offerTx(byHash, _zcashInfoFromZkoolTx(tx, currentHeight, isShieldAction: isShield));
_offerTx(
byHash,
_zcashInfoFromZkoolTx(
tx,
currentHeight,
isShieldAction: isShield,
ownedAddresses: ownedAddresses,
),
);
}
final knownHashes = {
@@ -1214,6 +1205,23 @@ abstract class ZcashWalletBase
return migratable;
}
Future<bool> hasOrchardMigratableBalance() async {
final (active, migratableOrchard) = await runWithCoin(
accountId: accountId,
func: (final coin) async => (
await zkool_network.isIronwoodActive(c: coin),
await _migratableOrchardTotal(coin),
),
);
if(!active) {
return false;
}
return migratableOrchard > BigInt.zero;
}
Future<void> _$autoShield() async {
if (syncStatus is! SyncedSyncStatus) {
return;
+1 -1
View File
@@ -21,7 +21,7 @@ dependencies:
# path: ../../zkool2
git:
url: https://github.com/cake-tech/zkool2.git
ref: 6329d4aacb4568ee80ff84baba5ea93b07ae1013
ref: 16fd3d11575f850939f498c3ea75d391915456d1
path_provider: any
sqflite_common_ffi: any
+3 -1
View File
@@ -434,7 +434,9 @@ Future<void> setup({
() => TrezorConnect("cakewallet://trezor_connect", appName: "Cake Wallet"),
);
getIt.registerLazySingleton(() => TrezorConnectViewModel(getIt<TrezorConnect>()));
getIt.registerLazySingleton(
() => TrezorConnectViewModel(getIt<TrezorConnect>(), getIt<SecureStorage>()),
);
getIt.registerFactory<KeyService>(() => KeyService(getIt.get<SecureStorage>()));
@@ -635,6 +635,9 @@ Future<void> defaultSettingsMigration(
enabled: false,
);
break;
case 70:
await _addTbbTokenToExistingSolanaWallets();
break;
default:
break;
}
@@ -1325,3 +1328,40 @@ Future<void> _addXaut0TokenToExistingSolanaWallets() async {
printV('Error in XAUT0 migration: $e');
}
}
Future<void> _addTbbTokenToExistingSolanaWallets() async {
try {
final tbbToken = SPLToken(
name: "The Bitcoin Bull",
symbol: "TBB",
mintAddress: "42cXQvAAr7hcPBPWAS4ocVtDyeJ4Fa6gRR2uG4gppump",
decimal: 6,
mint: "tbb",
enabled: false,
iconPath: "assets/images/tbb_icon.png",
);
final allWallets = await WalletInfo.getAll();
final solanaWallets = allWallets.where((wallet) => wallet.type == WalletType.solana).toList();
for (final walletInfo in solanaWallets) {
final sanitizedName = walletInfo.name.replaceAll(" ", "_");
final boxName = "${sanitizedName}_${SPLToken.boxName}";
Box<SPLToken> tokenBox;
if (CakeHive.isBoxOpen(boxName)) {
tokenBox = CakeHive.box<SPLToken>(boxName);
} else {
tokenBox = await CakeHive.openBox<SPLToken>(boxName);
}
final tbbAddress = tbbToken.mintAddress;
if (!tokenBox.containsKey(tbbAddress)) {
await tokenBox.put(tbbAddress, tbbToken);
}
}
} catch (e) {
printV("Error in TBB migration: $e");
}
}
+1
View File
@@ -145,4 +145,5 @@ class PreferencesKey {
static const backgroundImage = 'background_image';
static const mwebAdDismissed = "mweb_ad_dismissed";
static const balanceHideCounter = "balance_hide_counter";
static const zcashMigrationModalViewed = "zcash_migration_modal_viewed";
}
+1 -1
View File
@@ -69,7 +69,7 @@ class _BarcodeScannerSimpleState extends State<BarcodeScannerSimple> {
return AlertWithOneAction(
alertTitle: S.of(context).error,
alertContent: S.of(context).error_dialog_content,
buttonText: 'ok',
buttonText: S.of(context).ok,
buttonAction: () {
Navigator.of(context).pop();
},
+1 -1
View File
@@ -316,7 +316,7 @@ Future<void> initializeAppConfigs({bool loadWallet = true}) async {
payjoinSessionSource: payjoinSessionSource,
anonpayInvoiceInfo: anonpayInvoiceInfo,
havenSeedStore: havenSeedStore,
initialMigrationVersion: 69,
initialMigrationVersion: 70,
);
}
+6
View File
@@ -420,6 +420,12 @@ class CWMonero extends Monero {
return moneroWallet.needExportOutputs(amount);
}
@override
bool hasUnknownKeyImages(Object wallet) {
final moneroWallet = wallet as MoneroWallet;
return moneroWallet.hasUnknownKeyImages();
}
@override
void monerocCheck() => checkIfMoneroCIsFine();
+177 -138
View File
@@ -20,6 +20,7 @@ import 'package:cake_wallet/wownero/wownero.dart';
import 'package:cw_core/card_design.dart';
import 'package:cw_core/wallet_type.dart';
import 'package:flutter/material.dart';
import 'package:flutter/semantics.dart';
import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:cake_wallet/utils/list_item.dart';
@@ -213,24 +214,31 @@ class AddressSearchBox extends StatelessWidget {
border: Border.all(
color: Theme.of(context).colorScheme.surfaceContainerHighest, width: 1),
borderRadius: BorderRadius.circular(99999)),
child: TextField(
controller: controller,
decoration: InputDecoration(
hintText: S.of(context).search,
hintStyle: TextStyle(
fontWeight: FontWeight.w600,
// The hint names the field only while it is empty, so the label is
// supplied once there is text to keep exactly one announcement.
child: MergeSemantics(
child: Semantics(
label: controller.text.isEmpty ? null : S.of(context).search,
child: TextField(
controller: controller,
decoration: InputDecoration(
hintText: S.of(context).search,
hintStyle: TextStyle(
fontWeight: FontWeight.w600,
),
prefixIcon: ExcludeSemantics(child: Icon(Icons.search)),
filled: false,
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(99999),
borderSide: BorderSide.none,
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(99999),
borderSide: BorderSide.none,
),
contentPadding: EdgeInsets.symmetric(vertical: 8),
),
),
prefixIcon: Icon(Icons.search),
filled: false,
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(99999),
borderSide: BorderSide.none,
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(99999),
borderSide: BorderSide.none,
),
contentPadding: EdgeInsets.symmetric(vertical: 8),
),
),
),
@@ -334,116 +342,139 @@ class AddressRow extends StatelessWidget {
@override
Widget build(BuildContext context) {
final hasLabel = item.name != null && item.name!.isNotEmpty;
final hideLabel = item.isHidden ? S.of(context).unhide_address : S.of(context).hide_address;
return GestureDetector(
onTap: onSelect,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: LongPressPopupBuilder(
popup: LongPressMenu(
items: [
LongPressMenuItem(
label: S.of(context).set_label,
iconPath: "assets/new-ui/address_set_label.svg",
onSelected: () async {
Navigator.of(context, rootNavigator: true).pop();
final res = await showPopUp(
context: context,
builder: (context) => getIt.get<AddressLabelInputPopup>(param1: item));
Future<void> editLabel() async {
final res = await showPopUp(
context: context, builder: (context) => getIt.get<AddressLabelInputPopup>(param1: item));
if (res != null) {
onLabelChanged();
}
}),
LongPressMenuItem(
label: item.isHidden ? S.of(context).unhide_address : S.of(context).hide_address,
iconPath: "assets/new-ui/address_hide.svg",
onSelected: () {
Navigator.of(context, rootNavigator: true).pop();
onAddressHidden();
},
color: Theme.of(context).colorScheme.error),
LongPressMenuItem(
label: 'Info',
iconPath: "assets/images/info_icon.svg",
onSelected: () async {
Navigator.of(context, rootNavigator: true).pop();
await showPopUp(
context: context,
builder: (context) => getIt.get<AddressInfoPopup>(param1: item));
}),
],
),
child: AnimatedContainer(
duration: Duration(milliseconds: 150),
decoration: BoxDecoration(
color: selected
? Theme.of(context).colorScheme.surfaceContainerHigh
: Theme.of(context).colorScheme.surfaceContainer,
borderRadius: BorderRadius.vertical(
top: Radius.circular(first ? 16 : 0),
bottom: Radius.circular(last ? 16 : 0),
if (res != null) {
onLabelChanged();
}
}
Future<void> showInfo() async {
await showPopUp(
context: context, builder: (context) => getIt.get<AddressInfoPopup>(param1: item));
}
// The row is a single control: selection on tap, and the actions that are
// otherwise reachable only by long press exposed as custom actions.
return MergeSemantics(
child: Semantics(
button: true,
selected: selected,
customSemanticsActions: <CustomSemanticsAction, VoidCallback>{
CustomSemanticsAction(label: S.of(context).set_label): editLabel,
CustomSemanticsAction(label: hideLabel): onAddressHidden,
CustomSemanticsAction(label: S.of(context).info): showInfo,
},
child: GestureDetector(
onTap: onSelect,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: LongPressPopupBuilder(
popup: LongPressMenu(
items: [
LongPressMenuItem(
label: S.of(context).set_label,
iconPath: "assets/new-ui/address_set_label.svg",
onSelected: () {
Navigator.of(context, rootNavigator: true).pop();
editLabel();
}),
LongPressMenuItem(
label: hideLabel,
iconPath: "assets/new-ui/address_hide.svg",
onSelected: () {
Navigator.of(context, rootNavigator: true).pop();
onAddressHidden();
},
color: Theme.of(context).colorScheme.error),
LongPressMenuItem(
label: S.of(context).info,
iconPath: "assets/images/info_icon.svg",
onSelected: () {
Navigator.of(context, rootNavigator: true).pop();
showInfo();
}),
],
),
),
child: Padding(
padding: const EdgeInsets.all(12.0),
child: Row(
spacing: 8,
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Column(
children: [
Row(
spacing: 4,
child: AnimatedContainer(
duration: Duration(milliseconds: 150),
decoration: BoxDecoration(
color: selected
? Theme.of(context).colorScheme.surfaceContainerHigh
: Theme.of(context).colorScheme.surfaceContainer,
borderRadius: BorderRadius.vertical(
top: Radius.circular(first ? 16 : 0),
bottom: Radius.circular(last ? 16 : 0),
),
),
child: Padding(
padding: const EdgeInsets.all(12.0),
child: Row(
spacing: 8,
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Column(
children: [
if (hasLabel)
Text(
item.name!,
style: TextStyle(
fontSize: 12,
color: Theme.of(context).colorScheme.onSurface,
fontWeight: FontWeight.w500),
),
Expanded(
child: AddressFormatter.buildSegmentedAddress(
address: item.address,
walletType: walletType,
textAlign: TextAlign.left,
evenTextStyle: Theme.of(context).textTheme.bodyMedium!.copyWith(
Row(
spacing: 4,
children: [
if (hasLabel)
Text(
item.name!,
style: TextStyle(
fontSize: 12,
fontWeight: FontWeight.w400,
color: hasLabel
? Theme.of(context).colorScheme.onSurfaceVariant
: Theme.of(context).colorScheme.onSurface,
),
shouldTruncate: (hasLabel)),
color: Theme.of(context).colorScheme.onSurface,
fontWeight: FontWeight.w500),
),
Expanded(
child: AddressFormatter.buildSegmentedAddress(
address: item.address,
walletType: walletType,
textAlign: TextAlign.left,
evenTextStyle: Theme.of(context).textTheme.bodyMedium!.copyWith(
fontSize: 12,
fontWeight: FontWeight.w400,
color: hasLabel
? Theme.of(context).colorScheme.onSurfaceVariant
: Theme.of(context).colorScheme.onSurface,
),
shouldTruncate: (hasLabel)),
),
],
),
Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
"${S.of(context).transactions}: ${item.txCount}",
style: TextStyle(
fontSize: 12,
color: Theme.of(context).colorScheme.onSurfaceVariant),
),
Text(
"${hasReceived ? S.of(context).received : S.of(context).balance}: ${item.balance}",
style: TextStyle(
fontSize: 12,
color: Theme.of(context).colorScheme.onSurfaceVariant)),
],
)
],
),
Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
"${S.of(context).transactions}: ${item.txCount}",
style: TextStyle(
fontSize: 12,
color: Theme.of(context).colorScheme.onSurfaceVariant),
),
Text(
"${hasReceived ? S.of(context).received : S.of(context).balance}: ${item.balance}",
style: TextStyle(
fontSize: 12,
color: Theme.of(context).colorScheme.onSurfaceVariant)),
],
)
],
),
),
// The row's selected state carries this information.
if (selected)
ExcludeSemantics(
child: CakeImageWidget(imageUrl: "assets/new-ui/checkmark.svg"))
],
),
if (selected) CakeImageWidget(imageUrl: "assets/new-ui/checkmark.svg")
],
),
),
),
),
@@ -463,26 +494,34 @@ class ShowHiddenButton extends StatelessWidget {
child: Column(
children: [
Material(
child: InkWell(
onTap: () {
Navigator.of(context).pushNamed(Routes.receiveAddresses, arguments: true);
},
child: Container(
height: 48,
decoration: BoxDecoration(
color: Theme.of(context).colorScheme.surfaceContainer,
borderRadius: BorderRadius.vertical(top: Radius.circular(16)),
),
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(S.of(context).show_hidden_addresses),
RotatedBox(
quarterTurns: 1,
child: CakeImageWidget(imageUrl: "assets/new-ui/dropdown_arrow.svg"))
],
child: MergeSemantics(
child: Semantics(
button: true,
child: InkWell(
onTap: () {
Navigator.of(context).pushNamed(Routes.receiveAddresses, arguments: true);
},
child: Container(
height: 48,
decoration: BoxDecoration(
color: Theme.of(context).colorScheme.surfaceContainer,
borderRadius: BorderRadius.vertical(top: Radius.circular(16)),
),
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(S.of(context).show_hidden_addresses),
ExcludeSemantics(
child: RotatedBox(
quarterTurns: 1,
child:
CakeImageWidget(imageUrl: "assets/new-ui/dropdown_arrow.svg")),
)
],
),
),
),
),
),
+22
View File
@@ -13,10 +13,14 @@ import 'package:cake_wallet/new-ui/widgets/coins_page/mweb_ad.dart';
import 'package:cake_wallet/new-ui/widgets/coins_page/top_bar_widget/top_bar.dart';
import 'package:cake_wallet/new-ui/widgets/coins_page/unconfirmed_balance_widget.dart';
import 'package:cake_wallet/new-ui/widgets/coins_page/wallet_info.dart';
import "package:cake_wallet/new-ui/widgets/coins_page/zcash_migration_modal.dart";
import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart';
import 'package:cake_wallet/view_model/dashboard/nft_view_model.dart';
import 'package:cake_wallet/view_model/monero_account_list/monero_account_edit_or_create_view_model.dart';
import 'package:cake_wallet/view_model/monero_account_list/monero_account_list_view_model.dart';
import "package:cw_core/amount/money.dart";
import "package:cw_core/crypto_currency.dart";
import "package:cw_core/transaction_direction.dart";
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
@@ -48,6 +52,24 @@ class _NewHomePageState extends State<NewHomePage> {
_lightningMode = false;
});
});
reaction((_) => widget.dashboardViewModel.isMigratingToIronwood, (val) {
if (val && !widget.dashboardViewModel.settingsStore.zcashMigrationModalViewed) {
if(!context.mounted) {
return;
}
widget.dashboardViewModel.settingsStore.zcashMigrationModalViewed = true;
showMaterialModalBottomSheet(
context: context,
backgroundColor: Colors.transparent,
builder: (context) => ZcashMigrationModal(
hasContinue: true,
balance: widget.dashboardViewModel.wallet.balance.values.first.unavailable
.toStringWithSymbol(),
),
);
}
});
}
void _setAccountViewModel() {
+29 -5
View File
@@ -97,6 +97,10 @@ class _NewReceivePageState extends State<NewReceivePage> {
) as WalletAddressListItem?;
reaction((_) => widget.receiveOptionViewModel.selectedReceiveOption, (option) {
// The infobox depends on the selected address type, so the page has to be
// rebuilt when it changes.
if (mounted) setState(() {});
if (widget.dashboardViewModel.type == WalletType.bitcoin &&
bitcoin!.isBitcoinReceivePageOption(option)) {
widget.addressListViewModel.setAddressType(bitcoin!.getOptionToType(option));
@@ -179,6 +183,7 @@ class _NewReceivePageState extends State<NewReceivePage> {
autoGenerateSubaddressStatus: widget.lightningMode
? AutoGenerateSubaddressStatus.disabled
: widget.dashboardViewModel.settingsStore.autoGenerateSubaddressStatus,
addressRotates: _selectedAddressRotates,
);
return Container(
@@ -275,11 +280,23 @@ class _NewReceivePageState extends State<NewReceivePage> {
ReceiveAddressWidget(
addressListViewModel: widget.addressListViewModel,
),
GestureDetector(
onTap: _showLabelModal,
child: ReceiveLabelWidget(
name: _addressItemWithLabel?.name ?? "",
largeQrMode: _largeQrMode,
// The label chip animates to zero height when there is no
// label (or in large QR mode); keep it out of the semantics
// tree entirely while it is collapsed.
ExcludeSemantics(
excluding: _largeQrMode || !hasLabel,
child: MergeSemantics(
child: Semantics(
button: true,
hint: S.of(context).set_label,
child: GestureDetector(
onTap: _showLabelModal,
child: ReceiveLabelWidget(
name: _addressItemWithLabel?.name ?? "",
largeQrMode: _largeQrMode,
),
),
),
),
),
Observer(
@@ -354,6 +371,13 @@ class _NewReceivePageState extends State<NewReceivePage> {
);
}
/// Zcash is the only wallet type that also offers static address types, so
/// the rotation notice must not be shown for it unless the disposable
/// transparent type is the one currently selected.
bool get _selectedAddressRotates =>
widget.addressListViewModel.type != WalletType.zcash ||
zcash!.isRotatingAddressOption(widget.receiveOptionViewModel.selectedReceiveOption);
void _showLabelModal() {
showMaterialModalBottomSheet(
context: context,
+124 -88
View File
@@ -76,46 +76,50 @@ class _ScanPageState extends State<ScanPage> {
controller: controller,
onDetect: _handleBarcode,
),
// A full screen tap target would otherwise show up as one giant unlabeled
// node; leaving text mode is also possible with the back button.
Positioned.fill(
child: GestureDetector(
onTap: () => setState(() {
_textInputMode = false;
}),
child: RepaintBoundary(
child: AnimatedSwitcher(
switchInCurve: Curves.easeOutCubic,
switchOutCurve: Curves.easeInQuad,
duration: textModeSwitchDuration,
child: _textInputMode
? BackdropFilter(
key: ValueKey(1),
filter: ImageFilter.blur(sigmaX: 8.0, sigmaY: 8.0),
child: Container(
color: _frontFlashMode ? Colors.white : Colors.black.withAlpha(153),
),
)
: TweenAnimationBuilder<double>(
key: const ValueKey(0),
tween: Tween<double>(begin: 0.0, end: targetRadius),
duration: const Duration(milliseconds: 500),
curve: Curves.easeOutCubic,
child: BackdropFilter(
child: ExcludeSemantics(
child: GestureDetector(
onTap: () => setState(() {
_textInputMode = false;
}),
child: RepaintBoundary(
child: AnimatedSwitcher(
switchInCurve: Curves.easeOutCubic,
switchOutCurve: Curves.easeInQuad,
duration: textModeSwitchDuration,
child: _textInputMode
? BackdropFilter(
key: ValueKey(1),
filter: ImageFilter.blur(sigmaX: 8.0, sigmaY: 8.0),
child: Container(
color: _frontFlashMode ? Colors.white : Colors.black.withAlpha(153),
),
),
builder: (context, radius, child) {
return ClipPath(
clipper: HoleClipper(
width: cutoutSize,
height: cutoutSize,
radius: radius,
)
: TweenAnimationBuilder<double>(
key: const ValueKey(0),
tween: Tween<double>(begin: 0.0, end: targetRadius),
duration: const Duration(milliseconds: 500),
curve: Curves.easeOutCubic,
child: BackdropFilter(
filter: ImageFilter.blur(sigmaX: 8.0, sigmaY: 8.0),
child: Container(
color: _frontFlashMode ? Colors.white : Colors.black.withAlpha(153),
),
child: child,
);
},
),
),
builder: (context, radius, child) {
return ClipPath(
clipper: HoleClipper(
width: cutoutSize,
height: cutoutSize,
radius: radius,
),
child: child,
);
},
),
),
),
),
),
@@ -241,20 +245,25 @@ class _ScanPageState extends State<ScanPage> {
spacing: 10,
children: [
Expanded(
child: TextField(
enabled: _textInputMode,
controller: textController,
focusNode: textFocusNode,
onSubmitted: (val) {
if (val.isNotEmpty) {
Navigator.of(context).pop(val);
} else {
setState(() {
_textInputMode = false;
});
}
},
decoration: InputDecoration(hintText: S.of(context).enter_code),
child: MergeSemantics(
child: Semantics(
label: S.of(context).enter_code,
child: TextField(
enabled: _textInputMode,
controller: textController,
focusNode: textFocusNode,
onSubmitted: (val) {
if (val.isNotEmpty) {
Navigator.of(context).pop(val);
} else {
setState(() {
_textInputMode = false;
});
}
},
decoration: InputDecoration(hintText: S.of(context).enter_code),
),
),
),
),
FloatingIconButton(
@@ -336,6 +345,7 @@ class _ScanPageState extends State<ScanPage> {
}
},
icon: Icons.question_mark,
semanticsLabel: S.of(context).help,
buttonColor: buttonColor,
buttonIconColor: buttonIconColor)
],
@@ -366,27 +376,39 @@ class _ScanPageState extends State<ScanPage> {
child: AnimatedOpacity(
duration: Duration(milliseconds: 500),
opacity: isScanningURQR ? 1 : 0,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
"${decoder.processedPartsCount()}",
style: TextStyle(
fontSize: 45,
fontWeight: FontWeight.w500,
color: Theme.of(context).colorScheme.primary),
// Three separate digits mean nothing on their own: announce the progress
// as one node, and only while a multi part code is actually being scanned.
child: ExcludeSemantics(
excluding: !isScanningURQR,
child: Semantics(
container: true,
liveRegion: true,
label: S.of(context).qr_parts_scanned(
"${decoder.processedPartsCount()}", "${decoder.expectedPartCount() ?? 0}"),
excludeSemantics: true,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
"${decoder.processedPartsCount()}",
style: TextStyle(
fontSize: 45,
fontWeight: FontWeight.w500,
color: Theme.of(context).colorScheme.primary),
),
Text(
"/",
style: TextStyle(
fontSize: 45, color: Theme.of(context).colorScheme.onSurfaceVariant),
),
Text(
"${decoder.expectedPartCount()}",
style: TextStyle(
fontSize: 45, color: Theme.of(context).colorScheme.onSurface),
),
],
),
Text(
"/",
style: TextStyle(
fontSize: 45, color: Theme.of(context).colorScheme.onSurfaceVariant),
),
Text(
"${decoder.expectedPartCount()}",
style:
TextStyle(fontSize: 45, color: Theme.of(context).colorScheme.onSurface),
),
],
),
),
),
),
@@ -406,7 +428,7 @@ class _ScanPageState extends State<ScanPage> {
return AlertWithOneAction(
alertTitle: S.of(context).error,
alertContent: S.of(context).error_dialog_content,
buttonText: 'ok',
buttonText: S.of(context).ok,
buttonAction: () {
Navigator.of(context).pop();
},
@@ -459,37 +481,51 @@ class ScanPageButton extends StatelessWidget {
required this.onTap,
required this.icon,
this.label,
this.semanticsLabel,
required this.buttonColor,
required this.buttonIconColor});
final VoidCallback onTap;
final IconData icon;
final String? label;
/// Name for the icon-only variant, which has no visible [label].
final String? semanticsLabel;
final Color buttonColor;
final Color buttonIconColor;
@override
Widget build(BuildContext context) {
return GestureDetector(
return Semantics(
button: true,
enabled: true,
label: semanticsLabel ?? label,
onTap: onTap,
behavior: HitTestBehavior.opaque,
child: Container(
decoration: BoxDecoration(color: buttonColor, borderRadius: BorderRadius.circular(99999)),
child: Padding(
padding: EdgeInsets.only(
top: 10, bottom: 10, left: label == null ? 10 : 16, right: label == null ? 10 : 20),
child: Row(
spacing: 10,
children: [
Icon(icon, size: 28, color: buttonIconColor),
if (label != null)
Text(label!,
style: TextStyle(
fontSize: 16, fontWeight: FontWeight.w500, color: buttonIconColor))
],
),
),
));
excludeSemantics: true,
child: GestureDetector(
onTap: onTap,
behavior: HitTestBehavior.opaque,
child: Container(
decoration:
BoxDecoration(color: buttonColor, borderRadius: BorderRadius.circular(99999)),
child: Padding(
padding: EdgeInsets.only(
top: 10,
bottom: 10,
left: label == null ? 10 : 16,
right: label == null ? 10 : 20),
child: Row(
spacing: 10,
children: [
Icon(icon, size: 28, color: buttonIconColor),
if (label != null)
Text(label!,
style: TextStyle(
fontSize: 16, fontWeight: FontWeight.w500, color: buttonIconColor))
],
),
),
)));
}
}
+32 -32
View File
@@ -19,6 +19,7 @@ import "package:cake_wallet/new-ui/widgets/currency_picker/currency_picker_sheet
import "package:cake_wallet/new-ui/widgets/currency_picker/fiat_currency_picker_sheet.dart";
import "package:cake_wallet/new-ui/widgets/keyboard_hide_overlay.dart";
import "package:cake_wallet/new-ui/widgets/modern_button.dart";
import "package:cake_wallet/new-ui/widgets/new_future_primary_button.dart";
import "package:cake_wallet/new-ui/widgets/new_primary_button.dart";
import "package:cake_wallet/new-ui/widgets/picker.dart";
import "package:cake_wallet/new-ui/widgets/receive_page/receive_top_bar.dart";
@@ -42,7 +43,6 @@ import "package:cake_wallet/src/widgets/bottom_sheet/token_selection_bottom_shee
import "package:cake_wallet/src/widgets/bottom_sheet/wallet_switcher_bottom_sheet.dart";
import "package:cake_wallet/src/widgets/cake_image_widget.dart";
import "package:cake_wallet/src/widgets/new_list_row/list_item_regular_row_widget.dart";
import "package:cake_wallet/src/widgets/primary_button.dart";
import "package:cake_wallet/src/widgets/standard_checkbox.dart";
import "package:cake_wallet/store/app_store.dart";
import "package:cake_wallet/utils/payment_request.dart";
@@ -417,7 +417,12 @@ class _NewSendPageState extends State<NewSendPage> {
crossAxisAlignment: CrossAxisAlignment.start,
spacing: 12,
children: [
Text(S.of(context).address_or_alias),
// NewSendAddressInput merges this label onto its
// own text-field node, so announcing the caption
// as well would read it twice.
ExcludeSemantics(
child: Text(S.of(context).address_or_alias),
),
NewSendAddressInput(
displayName: output.displayName,
validator: output.isParsedAddress
@@ -481,6 +486,12 @@ class _NewSendPageState extends State<NewSendPage> {
crossAxisAlignment: CrossAxisAlignment.start,
spacing: 12,
children: [
// This caption is the amount field's accessible name
// and must stay in the semantics tree:
// NewSendAmountInput deliberately carries no label of
// its own, because labelling the field made Android
// announce the amount twice. Covered by
// test/new-ui/widgets/send_page/send_amount_input_test.dart.
Text(S.of(context).amount),
NewSendAmountInput(
validator: output.sendAll
@@ -558,17 +569,18 @@ class _NewSendPageState extends State<NewSendPage> {
label: S.of(context).fees,
subtitle:
"~${output.estimatedFee} ${widget.sendViewModel.currencySymbol} (${output.estimatedFeeFiatAmount} ${widget.sendViewModel.fiatCurrency})",
onTap: () {
if (widget.sendViewModel.feesViewModel
.hasFeesPriority) {
pickTransactionPriority(context, output);
}
},
// Without fee priorities the row does nothing,
// so it must not be announced as interactive.
onTap: widget.sendViewModel.feesViewModel
.hasFeesPriority
? () =>
pickTransactionPriority(context, output)
: null,
),
if (widget.sendViewModel.hasCoinControl)
ListItemRegularRowWidget(
keyValue: "",
label: "Coin Control",
label: S.of(context).coin_control,
onTap: () {
showCupertinoModalBottomSheet(
enableDrag: false,
@@ -606,9 +618,9 @@ class _NewSendPageState extends State<NewSendPage> {
selectedDot: _selectedOutput,
),
Observer(
builder: (_) => LoadingPrimaryButton(
builder: (_) => NewFuturePrimaryButton(
key: const ValueKey("send_page_send_button_key"),
onPressed: () {
onPressed: () async {
//Request dummy node to get the focus out of the text fields
FocusScope.of(context).requestFocus(FocusNode());
@@ -617,11 +629,11 @@ class _NewSendPageState extends State<NewSendPage> {
}
if (widget.mode == SendPageModes.normal) {
_handleSend();
await _handleSend();
} else if (widget.mode ==
SendPageModes.lightningDeposit ||
widget.mode == SendPageModes.mwebDeposit) {
Navigator.of(context).push(
await Navigator.of(context).push(
CupertinoPageRoute(
builder: (context) => Material(
child: L2ActionWalletSelector(
@@ -640,7 +652,7 @@ class _NewSendPageState extends State<NewSendPage> {
} else if (widget.mode ==
SendPageModes.lightningWithdrawal ||
widget.mode == SendPageModes.mwebWithdrawal) {
Navigator.of(context).push(
await Navigator.of(context).push(
CupertinoPageRoute(
builder: (context) => Material(
child: L2ActionWalletSelector(
@@ -661,13 +673,7 @@ class _NewSendPageState extends State<NewSendPage> {
text: S.of(context).continue_text,
color: Theme.of(context).colorScheme.primary,
textColor: Theme.of(context).colorScheme.onPrimary,
isLoading: widget.sendViewModel.state is IsExecutingState ||
widget.sendViewModel.state is TransactionCommitting ||
widget.sendViewModel.state
is IsAwaitingDeviceResponseState ||
widget.sendViewModel.state
is LoadingTemplateExecutingState,
isDisabled: !widget.sendViewModel.isReadyForSend ||
disabled: !widget.sendViewModel.isReadyForSend ||
widget.sendViewModel.state is ExecutedSuccessfullyState,
),
),
@@ -846,17 +852,11 @@ class _NewSendPageState extends State<NewSendPage> {
for (final item in widget.sendViewModel.outputs) {
amount += item.cryptoAmountMoney;
}
if (monero!.needExportOutputs(widget.sendViewModel.wallet, amount)) {
if (widget.sendViewModel.wallet.hardwareWalletType == HardwareWalletType.trezor) {
await monero!.syncTrezor(widget.sendViewModel.wallet);
} else {
if (mounted) {
await Navigator.of(context).pushNamed(
Routes.urqrAnimatedPage,
arguments: monero!.exportOutputsUR(widget.sendViewModel.wallet),
);
}
}
if (monero!.hasUnknownKeyImages(widget.sendViewModel.wallet) && mounted) {
await Navigator.of(context).pushNamed(
Routes.syncKeyImagesDevices,
arguments: monero!.exportOutputsUR(widget.sendViewModel.wallet),
);
await Future.delayed(const Duration(seconds: 1)); // wait for monero to refresh the state
}
if (monero!.needExportOutputs(widget.sendViewModel.wallet, amount)) {
+24 -16
View File
@@ -9,10 +9,9 @@ import 'package:cake_wallet/src/widgets/cake_image_widget.dart';
import 'package:cake_wallet/src/widgets/new_list_row/new_list_section.dart';
import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart';
import 'package:cw_core/wallet_info.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:modal_bottom_sheet/modal_bottom_sheet.dart';
import "package:cw_core/wallet_type.dart";
import 'package:flutter/material.dart';
import 'package:modal_bottom_sheet/modal_bottom_sheet.dart';
bool _trueFunc(DashboardViewModel _) => true;
@@ -26,10 +25,21 @@ bool _hasMweb(DashboardViewModel vm) => vm.hasMweb;
bool _hasWalletConnect(DashboardViewModel vm) => vm.hasWalletConnect;
bool _isCupcake(DashboardViewModel vm) =>
vm.wallet.hardwareWalletType == HardwareWalletType.cupcake;
bool _requiresKeyImageSync(DashboardViewModel vm) =>
vm.wallet.type == WalletType.monero &&
[HardwareWalletType.cupcake, HardwareWalletType.trezor].contains(vm.wallet.hardwareWalletType);
class SettingsListItem {
const SettingsListItem(
this.iconPath,
this.title,
this.route, {
this.requireAuth = false,
this.use2fa = _falseFunc,
this.condition = _trueFunc,
this.routeArgs,
});
final String iconPath;
final String title;
final String route;
@@ -37,21 +47,15 @@ class SettingsListItem {
final bool requireAuth;
final bool Function(DashboardViewModel) use2fa;
final bool Function(DashboardViewModel) condition;
const SettingsListItem(this.iconPath, this.title, this.route,
{this.routeArgs = null,
this.requireAuth = false,
this.use2fa = _falseFunc,
this.condition = _trueFunc});
}
class SettingsSectionData {
const SettingsSectionData(this.title, this.titleIconPath, this.items);
final String title;
final String titleIconPath;
final List<SettingsListItem> items;
const SettingsSectionData(this.title, this.titleIconPath, this.items);
static SettingsSectionData walletSettings =
SettingsSectionData(S.current.wallet_settings, "assets/new-ui/wallet-setting.svg", [
SettingsListItem(
@@ -71,9 +75,13 @@ class SettingsSectionData {
condition: _hasWalletConnect),
//SettingsListItem("assets/new-ui/settings_row_icons/silent-payments.svg", S.current.silent_payments_settings, Routes.silentPaymentsSettings, condition: _isBtc),
//SettingsListItem("assets/new-ui/settings_row_icons/mweb.svg", S.current.litecoin_mweb_settings, Routes.mwebSettings, condition: _hasMweb),
SettingsListItem("assets/new-ui/settings_row_icons/cupcake.svg", S.current.export_outputs,
Routes.urqrAnimatedPage,
routeArgs: {'export-outputs': 'export-outputs'}, condition: _isCupcake),
SettingsListItem(
"assets/new-ui/settings_row_icons/sync-balance.svg",
S.current.resync_device,
Routes.syncKeyImagesDevices,
routeArgs: {'export-outputs': 'export-outputs'},
condition: _requiresKeyImageSync,
),
SettingsListItem(
"assets/new-ui/settings_row_icons/other.svg", S.current.other, Routes.otherSettingsPage),
]);
@@ -1,8 +1,10 @@
import 'package:cake_wallet/generated/i18n.dart';
import "package:cake_wallet/new-ui/widgets/coins_page/zcash_migration_modal.dart";
import 'package:cake_wallet/new-ui/widgets/new_primary_button.dart';
import 'package:cake_wallet/new-ui/widgets/receive_page/receive_top_bar.dart';
import 'package:cake_wallet/src/widgets/cake_image_widget.dart';
import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart';
import "package:flutter/cupertino.dart";
import 'package:flutter/material.dart';
import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:modal_bottom_sheet/modal_bottom_sheet.dart';
@@ -21,6 +23,7 @@ class UnconfirmedBalanceWidget extends StatelessWidget {
return Observer(builder: (_) {
final show = dashboardViewModel.balanceViewModel
.hasAdditionalBalance(dashboardViewModel.wallet.currency);
final isIronwoodMigration = dashboardViewModel.isMigratingToIronwood;
return AnimatedSize(
duration: const Duration(milliseconds: 300),
@@ -44,13 +47,17 @@ class UnconfirmedBalanceWidget extends StatelessWidget {
color: Colors.transparent,
child: InkWell(
onTap: () {
final modal = isIronwoodMigration
? ZcashMigrationModal(
hasContinue: false, balance: "${balance} ${currency.symbol}")
: UnconfirmedBalanceModal(
balance: balance.toStringWithSymbol(),
currencyIconPath: currency.iconPath ?? "",
);
showMaterialModalBottomSheet(
backgroundColor: Colors.transparent,
context: context,
builder: (context) => UnconfirmedBalanceModal(
balance: balance.toStringWithSymbol(),
currencyIconPath: currency.iconPath ?? "",
));
builder: (context) => modal);
},
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 12.0),
@@ -63,8 +70,12 @@ class UnconfirmedBalanceWidget extends StatelessWidget {
SizedBox(
height: 20,
width: 20,
child: CircularProgressIndicator(
strokeWidth: 2,
child: isIronwoodMigration
? CupertinoActivityIndicator(
color: Theme.of(context).colorScheme.primary,
)
: CircularProgressIndicator(
strokeWidth: 2,
backgroundColor:
Theme.of(context).colorScheme.primary.withAlpha(50),
color: Theme.of(context).colorScheme.primary,
@@ -80,7 +91,7 @@ class UnconfirmedBalanceWidget extends StatelessWidget {
color: Theme.of(context).colorScheme.primary,
),
),
Text(S.of(context).confirming),
Text(isIronwoodMigration ? S.of(context).migrating_to_ironwood : S.of(context).confirming),
],
)
],
@@ -172,3 +183,4 @@ class UnconfirmedBalanceModal extends StatelessWidget {
);
}
}
@@ -0,0 +1,152 @@
import "package:cake_wallet/generated/i18n.dart";
import "package:cake_wallet/new-ui/widgets/new_primary_button.dart";
import "package:cake_wallet/new-ui/widgets/receive_page/receive_top_bar.dart";
import "package:cake_wallet/src/widgets/cake_image_widget.dart";
import "package:flutter/material.dart";
import "package:url_launcher/url_launcher.dart";
class ZcashMigrationModal extends StatelessWidget {
const ZcashMigrationModal({required this.hasContinue, required this.balance, super.key});
final String balance;
final bool hasContinue;
@override
Widget build(BuildContext context) => SafeArea(
bottom: false,
child: Container(
decoration: BoxDecoration(
color: Theme.of(context).colorScheme.surface,
borderRadius: const BorderRadius.vertical(top: Radius.circular(16)),),
child: SafeArea(
top: false,
child: Column(
children: [
ModalTopBar(
title: S.of(context).zcash_network_upgrade,
trailingIcon: const Icon(Icons.close),
onTrailingPressed: Navigator.of(context).pop,
trailingSemanticLabel: S.of(context).close,
),
Expanded(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: Column(
children: [
Expanded(
child: Column(
spacing: 40,
mainAxisAlignment: MainAxisAlignment.center,
children: [
SizedBox(
width: 146,
height: 79,
child: Stack(
children: [
const Positioned(
left: 67,
top: 0,
bottom: 0,
child: CakeImageWidget(
imageUrl: "assets/new-ui/ironwood_migration.svg",
width: 75,
height: 75,
),
),
Positioned(
left: 0,
child: Container(
width: 79,
height: 79,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(99999999),
border: Border.all(
color: Theme.of(context).colorScheme.surface,
width: 4,),),
child: const CakeImageWidget(
imageUrl: "assets/new-ui/crypto_full_icons/zcash.svg",
height: 75,
width: 75,
),
),
),
],
),
),
Container(
width: double.infinity,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
color: Theme.of(context).colorScheme.surfaceContainer,),
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 12),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
spacing: 4,
children: [
Text(
balance,
style: TextStyle(
color: Theme.of(context).colorScheme.primary,),
),
Text(S.of(context).is_currently_being_migrated),
],
),
),),
RichText(
textAlign: TextAlign.center,
text: TextSpan(
children: [
TextSpan(
text: "${S.of(context).zcash_network_upgrade_desc_1}\n\n",
style: Theme.of(context).textTheme.bodyMedium,),
TextSpan(
text: "${S.of(context).zcash_network_upgrade_desc_2}\n\n",
style: Theme.of(context).textTheme.bodyMedium,),
TextSpan(
text: "${S.of(context).zcash_network_upgrade_desc_3}\n\n",
style: Theme.of(context).textTheme.bodyMedium?.copyWith(
color: const Color(0xFFF9C03C),
),
),
],
),
),
],
),
),
],
),
),
),
Padding(
padding: const EdgeInsets.all(12),
child: Column(
spacing: 12,
children: [
NewPrimaryButton(
onPressed: _launchDocs,
text: S.of(context).learn_more,
color: Theme.of(context).colorScheme.surfaceContainer,
textColor: Theme.of(context).colorScheme.primary,),
if (hasContinue)
NewPrimaryButton(
onPressed: Navigator.of(context).pop,
text: S.of(context).continue_text,
color: Theme.of(context).colorScheme.primary,
textColor: Theme.of(context).colorScheme.onPrimary,),
],
),
),
],
),
),
),
);
void _launchDocs() {
try {
launchUrl(Uri.parse("https://docs.cakewallet.com/cryptos/zcash/ironwood-migration"));
} catch (_) {}
}
}
+57 -8
View File
@@ -1,8 +1,10 @@
import 'dart:io';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/utils/clipboard_util.dart';
import 'package:device_info_plus/device_info_plus.dart';
import 'package:flutter/material.dart';
import 'package:flutter/semantics.dart';
import 'package:flutter/services.dart';
class CopyWrapper extends StatefulWidget {
@@ -11,13 +13,25 @@ class CopyWrapper extends StatefulWidget {
this.data,
this.requireLongPress = false,
this.isSensitive = false,
required this.builder,
this.duration = const Duration(milliseconds: 1200)});
this.builder,
this.controlBuilder,
this.duration = const Duration(milliseconds: 1200)})
: assert((builder == null) != (controlBuilder == null),
"Provide exactly one of builder or controlBuilder");
final ClipboardData? data;
final bool isSensitive;
final bool requireLongPress;
final Widget Function(BuildContext, bool) builder;
/// Builds content that this widget makes copyable with its own gesture
/// detector. Receives the transient "copied" state.
final Widget Function(BuildContext, bool)? builder;
/// Builds a control that performs the copy itself, so no extra gesture
/// detector or actionable semantics node is stacked on top of it. [onCopy] is
/// null when there is nothing to copy.
final Widget Function(BuildContext context, bool copied, VoidCallback? onCopy)? controlBuilder;
final Duration duration;
@override
@@ -31,6 +45,11 @@ class _CopyWrapperState extends State<CopyWrapper> {
if (widget.data == null) return;
ClipboardUtil.setSensitiveDataToClipboard(widget.data!, isSensitive: widget.isSensitive);
HapticFeedback.mediumImpact();
// Screen readers learn about the copy from the transient "copied" state
// below, which build() marks as a live region, instead of from a push
// announcement: those are deprecated on Android and make TalkBack drop
// whatever it was saying. Where we don't render that state, android 13+
// already shows its own clipboard confirmation.
if (await shouldShowCopied()) {
setState(() => copied = true);
Future.delayed(widget.duration, () {
@@ -41,11 +60,41 @@ class _CopyWrapperState extends State<CopyWrapper> {
@override
Widget build(BuildContext context) {
return GestureDetector(
behavior: HitTestBehavior.translucent,
onTap: widget.requireLongPress ? null : handleCopy,
onLongPress: !widget.requireLongPress ? null : handleCopy,
child: widget.builder(context, copied),
final VoidCallback? onCopy = widget.data == null ? null : handleCopy;
// The control's own label carries the copied state (Copy -> Copied), so
// merging it into one node and marking that node a live region while copied
// is enough for a screen reader to pick the change up.
if (widget.controlBuilder != null) {
return MergeSemantics(
child: Semantics(
liveRegion: copied,
child: widget.controlBuilder!(context, copied, onCopy),
),
);
}
final content = widget.builder!(context, copied);
// Nothing to copy: don't leave behind a gesture detector that a screen
// reader would present as an actionable target that does nothing.
if (onCopy == null) return content;
return MergeSemantics(
child: Semantics(
button: !widget.requireLongPress,
liveRegion: copied,
hint: widget.requireLongPress ? S.of(context).long_press_to_copy : S.of(context).copy,
customSemanticsActions: <CustomSemanticsAction, VoidCallback>{
CustomSemanticsAction(label: S.of(context).copy): onCopy,
},
child: GestureDetector(
behavior: HitTestBehavior.translucent,
onTap: widget.requireLongPress ? null : onCopy,
onLongPress: !widget.requireLongPress ? null : onCopy,
child: content,
),
),
);
}
@@ -56,24 +56,31 @@ class _ChainChip extends StatelessWidget {
final colors = Theme.of(context).colorScheme;
return Padding(
padding: const EdgeInsetsDirectional.only(end: 8),
child: InkWell(
onTap: onTap,
borderRadius: BorderRadius.circular(80),
child: Container(
padding: const EdgeInsets.symmetric(horizontal: 10),
decoration: BoxDecoration(
color: isSelected ? colors.primary : colors.surfaceContainer,
borderRadius: BorderRadius.circular(20),
),
child: Center(
child: Text(
label,
style: Theme.of(context).textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w500,
fontSize: isSelected ? 14 : 12,
letterSpacing: -0.07,
color: isSelected ? colors.onPrimary : colors.primary,
),
child: MergeSemantics(
child: Semantics(
button: true,
selected: isSelected,
inMutuallyExclusiveGroup: true,
child: InkWell(
onTap: onTap,
borderRadius: BorderRadius.circular(80),
child: Container(
padding: const EdgeInsets.symmetric(horizontal: 10),
decoration: BoxDecoration(
color: isSelected ? colors.primary : colors.surfaceContainer,
borderRadius: BorderRadius.circular(20),
),
child: Center(
child: Text(
label,
style: Theme.of(context).textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w500,
fontSize: isSelected ? 14 : 12,
letterSpacing: -0.07,
color: isSelected ? colors.onPrimary : colors.primary,
),
),
),
),
),
),
@@ -24,55 +24,65 @@ class CurrencyPickerRow extends StatelessWidget {
@override
Widget build(BuildContext context) {
final colors = Theme.of(context).colorScheme;
return InkWell(
onTap: onTap,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 12),
child: Row(
children: [
_IconWithBadge(currency: currency, badgePath: chainBadgePath),
const SizedBox(width: 12),
Expanded(
child: Row(
children: [
Flexible(
child: Text(
currency.fullName ?? currency.title,
overflow: TextOverflow.ellipsis,
style: Theme.of(context).textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w500,
return MergeSemantics(
child: Semantics(
button: true,
selected: isSelected,
child: InkWell(
onTap: onTap,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 12),
child: Row(
children: [
ExcludeSemantics(
child: _IconWithBadge(currency: currency, badgePath: chainBadgePath),
),
const SizedBox(width: 12),
Expanded(
child: Row(
children: [
Flexible(
child: Text(
currency.fullName ?? currency.title,
overflow: TextOverflow.ellipsis,
style: Theme.of(context).textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w500,
),
),
),
if (chainPillLabel != null) ...[
const SizedBox(width: 8),
Container(
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 2),
decoration: BoxDecoration(
color: colors.surfaceContainerHigh,
borderRadius: BorderRadius.circular(10),
),
),
child: Text(
chainPillLabel!,
style: Theme.of(context).textTheme.bodySmall?.copyWith(
fontWeight: FontWeight.w500,
color: colors.onSecondaryContainer,
),
),
),
],
],
),
if (chainPillLabel != null) ...[
const SizedBox(width: 8),
Container(
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 2),
decoration: BoxDecoration(
color: colors.surfaceContainerHigh,
borderRadius: BorderRadius.circular(10),
),
child: Text(
chainPillLabel!,
style: Theme.of(context).textTheme.bodySmall?.copyWith(
fontWeight: FontWeight.w500,
color: colors.onSecondaryContainer,
),
),
),
],
],
),
),
const SizedBox(width: 8),
trailing,
const SizedBox(width: 8),
ExcludeSemantics(
child: Icon(
Icons.chevron_right,
size: 20,
color: isSelected ? colors.primary : colors.onSurfaceVariant,
),
),
],
),
const SizedBox(width: 8),
trailing,
const SizedBox(width: 8),
Icon(
Icons.chevron_right,
size: 20,
color: isSelected ? colors.primary : colors.onSurfaceVariant,
),
],
),
),
),
);
@@ -1,3 +1,4 @@
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/new-ui/widgets/currency_picker/currency_picker_args.dart';
import 'package:cw_core/crypto_currency.dart';
import 'package:flutter/material.dart';
@@ -27,30 +28,41 @@ class CurrencyPickerSearchField extends StatelessWidget {
),
child: Row(
children: [
Icon(Icons.search, size: 20, color: colors.primary),
ExcludeSemantics(child: Icon(Icons.search, size: 20, color: colors.primary)),
const SizedBox(width: 10),
Expanded(
child: TextFormField(
controller: controller,
style: Theme.of(context).textTheme.bodyMedium,
decoration: InputDecoration(
isCollapsed: true,
border: InputBorder.none,
focusedBorder: InputBorder.none,
hintText: hintText,
hintStyle: Theme.of(context).textTheme.bodyMedium?.copyWith(
color: colors.onSurfaceVariant,
),
// The hint names the field only while it is empty, so the label is
// supplied once there is text to keep exactly one announcement.
child: MergeSemantics(
child: Semantics(
label: controller.text.isEmpty ? null : hintText,
child: TextFormField(
controller: controller,
style: Theme.of(context).textTheme.bodyMedium,
decoration: InputDecoration(
isCollapsed: true,
border: InputBorder.none,
focusedBorder: InputBorder.none,
hintText: hintText,
hintStyle: Theme.of(context).textTheme.bodyMedium?.copyWith(
color: colors.onSurfaceVariant,
),
),
),
),
),
),
if (controller.text.isNotEmpty)
InkWell(
onTap: controller.clear,
customBorder: const CircleBorder(),
child: Padding(
padding: const EdgeInsets.all(4),
child: Icon(Icons.close, size: 16, color: colors.onSurfaceVariant),
Semantics(
button: true,
label: S.of(context).clear,
child: InkWell(
onTap: controller.clear,
customBorder: const CircleBorder(),
child: Padding(
padding: const EdgeInsets.all(4),
child: Icon(Icons.close, size: 16, color: colors.onSurfaceVariant),
),
),
),
],
@@ -39,11 +39,14 @@ class SelectNetworkPage extends StatelessWidget {
onLeadingPressed: () => Navigator.of(context).maybePop(),
),
const SizedBox(height: 24),
CakeImageWidget(
imageUrl: assetIconPath,
width: 75,
height: 75,
fit: BoxFit.cover,
// Illustration of the asset named by the title below it.
ExcludeSemantics(
child: CakeImageWidget(
imageUrl: assetIconPath,
width: 75,
height: 75,
fit: BoxFit.cover,
),
),
const SizedBox(height: 12),
Text(
@@ -107,33 +110,42 @@ class _NetworkRow extends StatelessWidget {
final networkIconPath =
wt != null ? getCryptoCurrencyIconForWalletListItem(wt) : variant.iconPath;
final networkName = chainNameForCurrency(variant);
return InkWell(
onTap: onTap,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 14),
child: Row(
children: [
CakeImageWidget(
imageUrl: networkIconPath,
width: 28,
height: 28,
fit: BoxFit.cover,
return MergeSemantics(
child: Semantics(
button: true,
child: InkWell(
onTap: onTap,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 14),
child: Row(
children: [
ExcludeSemantics(
child: CakeImageWidget(
imageUrl: networkIconPath,
width: 28,
height: 28,
fit: BoxFit.cover,
),
),
const SizedBox(width: 12),
Expanded(
child: Text(
networkName,
style: Theme.of(context).textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w500,
),
),
),
ExcludeSemantics(
child: Icon(
Icons.chevron_right,
size: 20,
color: colors.onSurfaceVariant,
),
),
],
),
const SizedBox(width: 12),
Expanded(
child: Text(
networkName,
style: Theme.of(context).textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w500,
),
),
),
Icon(
Icons.chevron_right,
size: 20,
color: colors.onSurfaceVariant,
),
],
),
),
),
);
+38 -31
View File
@@ -11,38 +11,45 @@ class DropdownRow extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
decoration: BoxDecoration(
color: Theme.of(context).colorScheme.surfaceContainer,
borderRadius: BorderRadius.vertical(
top: Radius.circular(18),
bottom: expanded ? Radius.zero : Radius.circular(18),
return Semantics(
button: true,
expanded: expanded,
label: text,
onTap: onTap,
excludeSemantics: true,
child: Container(
decoration: BoxDecoration(
color: Theme.of(context).colorScheme.surfaceContainer,
borderRadius: BorderRadius.vertical(
top: Radius.circular(18),
bottom: expanded ? Radius.zero : Radius.circular(18),
),
),
),
height: 48,
child: Material(
color: Colors.transparent,
child: InkWell(
onTap: onTap,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
text,
style: TextStyle(fontSize: 14, color: Theme.of(context).colorScheme.primary),
),
AnimatedRotation(
duration: Duration(milliseconds: 300),
turns: expanded ? 0.0 : 0.5,
curve: Curves.easeOut,
child: CakeImageWidget(
imageUrl: "assets/new-ui/dropdown_arrow.svg",
colorFilter:
ColorFilter.mode(Theme.of(context).colorScheme.primary, BlendMode.srcIn),
))
],
height: 48,
child: Material(
color: Colors.transparent,
child: InkWell(
onTap: onTap,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
text,
style: TextStyle(fontSize: 14, color: Theme.of(context).colorScheme.primary),
),
AnimatedRotation(
duration: Duration(milliseconds: 300),
turns: expanded ? 0.0 : 0.5,
curve: Curves.easeOut,
child: CakeImageWidget(
imageUrl: "assets/new-ui/dropdown_arrow.svg",
colorFilter: ColorFilter.mode(
Theme.of(context).colorScheme.primary, BlendMode.srcIn),
))
],
),
),
),
),
@@ -0,0 +1,224 @@
import "package:cake_wallet/generated/i18n.dart";
import "package:cake_wallet/new-ui/widgets/receive_page/receive_top_bar.dart";
import "package:cake_wallet/new-ui/widgets/send_page/directional_switcher.dart";
import "package:cake_wallet/routes.dart";
import "package:cake_wallet/src/screens/connect_device/connect_device_page.dart";
import "package:cake_wallet/src/widgets/alert_with_two_actions.dart";
import "package:cake_wallet/src/widgets/base_alert_dialog.dart";
import "package:cake_wallet/src/widgets/cake_image_widget.dart";
import "package:cake_wallet/src/widgets/primary_button.dart";
import "package:cake_wallet/store/app_store.dart";
import "package:cake_wallet/utils/show_pop_up.dart";
import "package:cake_wallet/view_model/hardware_wallet/trezor_connect_view_model.dart";
import "package:cw_core/wallet_base.dart";
import "package:cw_core/wallet_info.dart";
import "package:flutter/cupertino.dart";
import "package:flutter/material.dart";
class SyncKeyImagesSheet extends StatefulWidget {
const SyncKeyImagesSheet({
required this.appStore,
required this.trezorConnectVM,
super.key,
});
final AppStore appStore;
final TrezorConnectViewModelBase trezorConnectVM;
WalletBase get wallet => appStore.wallet!;
@override
State<SyncKeyImagesSheet> createState() => _HardwareWalletProceedOnDeviceSheetState();
}
class _HardwareWalletProceedOnDeviceSheetState extends State<SyncKeyImagesSheet> {
_KeyImageSyncState _state = _KeyImageSyncState.initial;
@override
Widget build(BuildContext context) => PopScope(
canPop: false,
child: SafeArea(
bottom: false,
child: Container(
width: MediaQuery.of(context).size.width,
decoration: BoxDecoration(
color: Theme.of(context).colorScheme.surface,
borderRadius: const BorderRadius.vertical(top: Radius.circular(16)),
),
child: SafeArea(
child: Padding(
padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
child: Column(
children: [
ModalTopBar(
title: S.of(context).resync_device,
leadingIcon: Icon(
Icons.close,
color: Theme.of(context).colorScheme.onSurfaceVariant,
),
onLeadingPressed: () => showPopUp(
context: context,
builder: (context) => AlertWithTwoActions(
alertTitle: S.of(context).are_you_sure_exit,
alertContent: S.of(context).resync_device_cancel_warning_desc,
leftButtonText: S.of(context).cancel,
rightButtonText: S.of(context).yes_exit,
rightAlertButtonStyle: AlertButtonStyle.error(context),
actionLeftButton: Navigator.of(context).pop,
actionRightButton: () {
Navigator.of(context).pop();
Navigator.of(context).pop();
},
),
),
),
Expanded(
child: Column(
spacing: 12,
mainAxisAlignment: MainAxisAlignment.center,
children: [
CakeImageWidget(
imageUrl: hardwareWalletIcon,
width: 100,
colorFilter: ColorFilter.mode(
Theme.of(context).colorScheme.onSurfaceVariant,
BlendMode.srcIn,
),
),
DirectionalAnimatedSwitcher(
duration: const Duration(milliseconds: 400),
child: content,
),
],
),
),
Padding(
padding: const EdgeInsets.all(24),
child: AnimatedOpacity(
curve: Curves.easeOutQuad,
opacity: _state == _KeyImageSyncState.initial ? 1 : 0,
duration: const Duration(milliseconds: 300),
child: PrimaryButton(
text: S.of(context).continue_text,
color: Theme.of(context).colorScheme.primary,
textColor: Theme.of(context).colorScheme.onPrimary,
onPressed: _onContinuePressed,
),
),
),
],
),
),
),
),
),
);
Widget get content {
if (_state == _KeyImageSyncState.syncing) {
return _syncingKeyImages();
}
return _initial();
}
String? get hardwareWalletIcon {
switch (widget.wallet.hardwareWalletType) {
case HardwareWalletType.bitbox:
return "assets/new-ui/hardware_wallets/device_bitbox.svg";
case HardwareWalletType.ledger:
return "assets/new-ui/hardware_wallets/device_ledger_nano_x.svg";
case HardwareWalletType.trezor:
return "assets/new-ui/hardware_wallets/device_trezor_safe_7.svg";
case HardwareWalletType.cupcake:
return "assets/images/cupcake.svg";
case HardwareWalletType.coldcard:
case HardwareWalletType.seedsigner:
case HardwareWalletType.keystone:
case null:
return "assets/images/hardware_wallet/device_qr.svg";
}
}
Widget _initial() => Column(
key: const ValueKey(0),
spacing: 12,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Padding(
padding: const EdgeInsets.symmetric(horizontal: 20),
child: Text(
S.of(context).resync_device_desc,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 16,
color: Theme.of(context).colorScheme.onSurfaceVariant,
),
),
),
],
);
Widget _syncingKeyImages() => Column(
key: const ValueKey(1),
spacing: 12,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
S.of(context).proceed_on_device,
style: TextStyle(
fontWeight: FontWeight.w500,
fontSize: 20,
),
),
Padding(
padding: EdgeInsets.symmetric(horizontal: 20),
child: Text(
S.of(context).proceed_on_device_description,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 16,
color: Theme.of(context).colorScheme.onSurfaceVariant,
),
),
)
],
);
Future<void> _onContinuePressed() async {
setState(() => _state = _KeyImageSyncState.syncing);
if (!widget.trezorConnectVM.isConnected(widget.wallet.type)) {
await Navigator.of(context).pushNamed(
Routes.connectDevices,
arguments: ConnectDevicePageParams(
walletType: widget.wallet.type,
hardwareWalletType: widget.wallet.walletInfo.hardwareWalletType!,
onConnectDevice: (_, __) {
widget.trezorConnectVM.initWallet(widget.wallet);
Navigator.of(context).pop();
},
isReconnect: false,
),
);
// Recheck to handle tap-backs
if (!widget.trezorConnectVM.isConnected(widget.wallet.type)) {
setState(() => _state = _KeyImageSyncState.initial);
return;
}
} else {
await widget.trezorConnectVM.initWallet(widget.wallet);
}
final result = await widget.trezorConnectVM.syncKeyImages(widget.wallet);
if (result && context.mounted) {
Navigator.of(context).pop();
}
}
}
enum _KeyImageSyncState {
initial,
syncing;
}
+2 -6
View File
@@ -28,9 +28,7 @@ class ModernButton extends StatelessWidget {
this.backgroundColor,
this.label,
this.semanticLabel})
: svgPath = null,
assert(semanticLabel != null || (label != null && label != ""),
"ModernButton needs a semanticLabel when it has no visible label");
: svgPath = null;
const ModernButton.svg(
{super.key,
@@ -42,9 +40,7 @@ class ModernButton extends StatelessWidget {
this.backgroundColor,
this.label,
this.semanticLabel})
: icon = null,
assert(semanticLabel != null || (label != null && label != ""),
"ModernButton needs a semanticLabel when it has no visible label");
: icon = null;
@override
Widget build(BuildContext context) {
@@ -0,0 +1,57 @@
import "package:cake_wallet/new-ui/widgets/new_primary_button.dart";
import "package:flutter/material.dart";
import "package:flutter_svg/flutter_svg.dart";
class NewFuturePrimaryButton extends StatefulWidget {
const NewFuturePrimaryButton({
required this.onPressed,
required this.text,
required this.color,
required this.textColor,
this.borderColor = Colors.transparent,
this.disabled = false,
this.image,
super.key,
});
final Future<void> Function() onPressed;
final bool disabled;
final SvgPicture? image;
final Color color;
final Color textColor;
final Color borderColor;
final String text;
@override
State<StatefulWidget> createState() => _NewFuturePrimaryButtonState();
}
class _NewFuturePrimaryButtonState extends State<NewFuturePrimaryButton> {
bool isLoading = false;
Future<void> _onPressed() async {
if (isLoading) {
return;
}
setState(() => isLoading = true);
try {
await widget.onPressed.call();
} finally {
if (mounted) {
setState(() => isLoading = false);
}
}
}
@override
Widget build(BuildContext context) => NewPrimaryButton(
onPressed: _onPressed,
image: widget.image,
text: widget.text,
color: widget.color,
textColor: widget.textColor,
isLoading: isLoading,
borderColor: widget.borderColor,
disabled: widget.disabled,
);
}
@@ -4,6 +4,7 @@ import 'package:cake_wallet/new-ui/widgets/receive_page/receive_top_bar.dart';
import 'package:cake_wallet/src/widgets/new_list_row/new_list_section.dart';
import 'package:cw_core/payment_uris.dart';
import 'package:flutter/material.dart';
import 'package:flutter/semantics.dart';
import 'package:flutter/services.dart';
class PayjoinCopyModal extends StatelessWidget {
@@ -33,7 +34,7 @@ class PayjoinCopyModal extends StatelessWidget {
"": [
ListItemRegularRow(
keyValue: "btc",
label: "Standard",
label: S.of(context).standard,
iconPath: "assets/new-ui/pjmodal_btc.svg",
onTap: () {
Clipboard.setData(
@@ -42,6 +43,7 @@ class PayjoinCopyModal extends StatelessWidget {
? BitcoinURI(amount: uri.amount, address: uri.address).toString()
: uri.address),
);
_announceCopied(context);
Navigator.of(context).pop();
}),
ListItemRegularRow(
@@ -52,6 +54,7 @@ class PayjoinCopyModal extends StatelessWidget {
Clipboard.setData(
ClipboardData(text: uri.toString()),
);
_announceCopied(context);
Navigator.of(context).pop();
})
]
@@ -63,4 +66,15 @@ class PayjoinCopyModal extends StatelessWidget {
),
);
}
// Copying pops this sheet right away, so no widget survives to carry a
// semantics state change: this path still needs a direct announcement. It is
// skipped on platforms that deprecate announcements (android, where they
// clear TalkBack's speech queue and the system shows its own clipboard
// confirmation anyway).
void _announceCopied(BuildContext context) {
if (!MediaQuery.supportsAnnounceOf(context)) return;
SemanticsService.sendAnnouncement(
View.of(context), S.of(context).copied, Directionality.of(context));
}
}
@@ -42,52 +42,64 @@ class ReceiveAddressTypeDisplay extends StatelessWidget {
iconPath = "assets/new-ui/address-type-picker-icons/litecoin.svg";
}
return GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () => _showPicker(context),
child: Row(
key: ValueKey("$text$largeQrMode"),
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
spacing: 12.0,
children: [
if (iconPath != null)
CakeImageWidget(
imageUrl: iconPath,
width: 24,
height: 24,
colorFilter: ColorFilter.mode(
Theme.of(context).colorScheme.primary,
BlendMode.srcIn,
),
),
Text(
text,
style: TextStyle(
fontSize: 16,
color: Theme.of(context).colorScheme.primary,
),
),
if (!largeQrMode)
Container(
width: 24,
height: 24,
decoration: BoxDecoration(
color: Theme.of(context).colorScheme.surfaceContainer,
borderRadius: BorderRadius.circular(999999),
),
child: IconButton(
padding: EdgeInsets.zero,
constraints: BoxConstraints(),
onPressed: () => _showPicker(context),
icon: (Icon(
// The row and the chevron button trigger the same picker, so only the
// row is exposed and the chevron is treated as decoration.
return MergeSemantics(
child: Semantics(
button: true,
label: S.of(context).address_type,
child: GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () => _showPicker(context),
child: Row(
key: ValueKey("$text$largeQrMode"),
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
spacing: 12.0,
children: [
if (iconPath != null)
ExcludeSemantics(
child: CakeImageWidget(
imageUrl: iconPath,
width: 24,
height: 24,
colorFilter: ColorFilter.mode(
Theme.of(context).colorScheme.primary,
BlendMode.srcIn,
),
),
),
Text(
text,
style: TextStyle(
fontSize: 16,
color: Theme.of(context).colorScheme.primary,
size: 20,
Icons.keyboard_arrow_down,
)),
),
),
),
],
if (!largeQrMode)
ExcludeSemantics(
child: Container(
width: 24,
height: 24,
decoration: BoxDecoration(
color: Theme.of(context).colorScheme.surfaceContainer,
borderRadius: BorderRadius.circular(999999),
),
child: IconButton(
padding: EdgeInsets.zero,
constraints: BoxConstraints(),
onPressed: () => _showPicker(context),
icon: (Icon(
color: Theme.of(context).colorScheme.primary,
size: 20,
Icons.keyboard_arrow_down,
)),
),
),
),
],
),
),
),
);
},
@@ -134,38 +134,49 @@ class _ReceiveAddressTypeSelectorState extends State<ReceiveAddressTypeSelector>
borderRadius: BorderRadius.vertical(
top: Radius.circular(20),
bottom: _otherOptionsExpanded ? Radius.zero : Radius.circular(20)),
child: InkWell(
highlightColor: Theme.of(context).colorScheme.surfaceContainerHighest,
borderRadius: BorderRadius.vertical(
top: Radius.circular(20),
bottom: !_otherOptionsExpanded ? Radius.zero : Radius.circular(20)),
onTap: () {
setState(() {
_otherOptionsExpanded = !_otherOptionsExpanded;
});
},
child: Container(
height: 64.0,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 18.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
S.of(context).more_options,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w400,
color: Theme.of(context).colorScheme.primary),
child: MergeSemantics(
child: Semantics(
button: true,
expanded: _otherOptionsExpanded,
child: InkWell(
highlightColor:
Theme.of(context).colorScheme.surfaceContainerHighest,
borderRadius: BorderRadius.vertical(
top: Radius.circular(20),
bottom: !_otherOptionsExpanded
? Radius.zero
: Radius.circular(20)),
onTap: () {
setState(() {
_otherOptionsExpanded = !_otherOptionsExpanded;
});
},
child: Container(
height: 64.0,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 18.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
S.of(context).more_options,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w400,
color: Theme.of(context).colorScheme.primary),
),
ExcludeSemantics(
child: AnimatedRotation(
duration: ReceiveAddressTypeSelector
.otherOptionsExpandDuration,
turns: _otherOptionsExpanded ? 0.0 : 0.5,
curve: Curves.easeOut,
child: CakeImageWidget(
imageUrl: "assets/new-ui/dropdown_arrow.svg")),
)
],
),
AnimatedRotation(
duration:
ReceiveAddressTypeSelector.otherOptionsExpandDuration,
turns: _otherOptionsExpanded ? 0.0 : 0.5,
curve: Curves.easeOut,
child: CakeImageWidget(
imageUrl: "assets/new-ui/dropdown_arrow.svg"))
],
),
),
),
),
@@ -180,40 +191,45 @@ class _ReceiveAddressTypeSelectorState extends State<ReceiveAddressTypeSelector>
duration: ReceiveAddressTypeSelector.otherOptionsExpandDuration,
curve: Curves.easeOut,
alignment: Alignment.topCenter,
child: Container(
height: _otherOptionsExpanded ? null : 0,
child: ListView.separated(
shrinkWrap: true,
padding: EdgeInsets.zero,
physics: NeverScrollableScrollPhysics(),
itemCount: otherOptions.length,
itemBuilder: (context, index) {
final opt = otherOptions[index];
// Collapsed to zero height: keep the options out of
// the semantics tree so they cannot be focused.
child: ExcludeSemantics(
excluding: !_otherOptionsExpanded,
child: Container(
height: _otherOptionsExpanded ? null : 0,
child: ListView.separated(
shrinkWrap: true,
padding: EdgeInsets.zero,
physics: NeverScrollableScrollPhysics(),
itemCount: otherOptions.length,
itemBuilder: (context, index) {
final opt = otherOptions[index];
return ReceiveAddressTypeRow(
option: opt,
roundedTop: false,
roundedBottom: index == otherOptions.length - 1,
selected:
widget.receiveOptionViewModel.selectedReceiveOption == opt,
onItemTap: () {
Navigator.of(context).pop(opt);
},
receiveOptionViewModel: widget.receiveOptionViewModel,
);
},
separatorBuilder: (context, index) {
if ((widget.receiveOptionViewModel.selectedReceiveOption ==
otherOptions[index]) ||
(index != otherOptions.length - 1 &&
widget.receiveOptionViewModel.selectedReceiveOption ==
otherOptions[index + 1])) return Container();
return ReceiveAddressTypeRow(
option: opt,
roundedTop: false,
roundedBottom: index == otherOptions.length - 1,
selected:
widget.receiveOptionViewModel.selectedReceiveOption == opt,
onItemTap: () {
Navigator.of(context).pop(opt);
},
receiveOptionViewModel: widget.receiveOptionViewModel,
);
},
separatorBuilder: (context, index) {
if ((widget.receiveOptionViewModel.selectedReceiveOption ==
otherOptions[index]) ||
(index != otherOptions.length - 1 &&
widget.receiveOptionViewModel.selectedReceiveOption ==
otherOptions[index + 1])) return Container();
return Padding(
padding: const EdgeInsets.only(left: 44.0, right: 36.0),
child: HorizontalSectionDivider(),
);
},
return Padding(
padding: const EdgeInsets.only(left: 44.0, right: 36.0),
child: HorizontalSectionDivider(),
);
},
),
),
),
),
@@ -264,65 +280,75 @@ class ReceiveAddressTypeRow extends StatelessWidget {
top: roundedTop ? Radius.circular(20) : Radius.zero,
bottom: roundedBottom ? Radius.circular(20) : Radius.zero,
),
child: InkWell(
onTap: onItemTap,
child: Container(
height: rowHeight,
decoration: BoxDecoration(
color: selected
? Theme.of(context).colorScheme.surfaceContainerHigh
: Colors.transparent,
borderRadius: BorderRadius.vertical(
top: roundedTop ? Radius.circular(20) : Radius.zero,
bottom: roundedBottom ? Radius.circular(20) : Radius.zero,
)),
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 10.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisSize: MainAxisSize.max,
children: [
Row(
// The row itself carries the selection state; the checkbox next to it is
// only a visual echo of it and must not be announced separately.
child: MergeSemantics(
child: Semantics(
selected: selected,
inMutuallyExclusiveGroup: true,
child: InkWell(
onTap: onItemTap,
child: Container(
height: rowHeight,
decoration: BoxDecoration(
color: selected
? Theme.of(context).colorScheme.surfaceContainerHigh
: Colors.transparent,
borderRadius: BorderRadius.vertical(
top: roundedTop ? Radius.circular(20) : Radius.zero,
bottom: roundedBottom ? Radius.circular(20) : Radius.zero,
)),
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 10.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisSize: MainAxisSize.max,
children: [
if (iconPath != null)
CakeImageWidget(
imageUrl: iconPath!,
width: iconSize,
height: iconSize,
colorFilter: ColorFilter.mode(
Theme.of(context).colorScheme.onSurfaceVariant, BlendMode.srcIn),
)
else
Container(width: iconSize, height: iconSize),
Padding(
padding: const EdgeInsets.all(10.0),
child: Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
option.value,
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w500,
color: Theme.of(context).colorScheme.onSurface),
Row(
children: [
if (iconPath != null)
ExcludeSemantics(
child: CakeImageWidget(
imageUrl: iconPath!,
width: iconSize,
height: iconSize,
colorFilter: ColorFilter.mode(
Theme.of(context).colorScheme.onSurfaceVariant, BlendMode.srcIn),
),
)
else
Container(width: iconSize, height: iconSize),
Padding(
padding: const EdgeInsets.all(10.0),
child: Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
option.value,
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w500,
color: Theme.of(context).colorScheme.onSurface),
),
if (option.description != null)
Text(
option.description!,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w400,
color: Theme.of(context).colorScheme.onSurfaceVariant),
)
],
),
if (option.description != null)
Text(
option.description!,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w400,
color: Theme.of(context).colorScheme.onSurfaceVariant),
)
],
),
)
)
],
),
ExcludeSemantics(child: RoundedCheckbox(value: selected))
],
),
RoundedCheckbox(value: selected)
],
),
),
),
),
@@ -22,50 +22,54 @@ class ReceiveAmountDisplay extends StatelessWidget {
curve: Curves.easeOutCubic,
heightFactor: largeQrMode || walletAddressListViewModel.displayAmount.isEmpty ? 0 : 1,
alignment: Alignment.topCenter,
child: Container(
width: double.infinity,
child: Row(
spacing: 4,
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
color: Theme.of(context).colorScheme.surfaceContainer),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
spacing: 8.0,
children: [
Text(
walletAddressListViewModel.displayAmount,
style: TextStyle(
color: Theme.of(context).colorScheme.primary,
fontSize: 16,
fontWeight: FontWeight.w500),
),
Text(walletAddressListViewModel.cryptoCurrencySymbol,
// Amount, currency symbol and fiat equivalent describe one value, so
// they are announced as a single node.
child: MergeSemantics(
child: Container(
width: double.infinity,
child: Row(
spacing: 4,
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
color: Theme.of(context).colorScheme.surfaceContainer),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
spacing: 8.0,
children: [
Text(
walletAddressListViewModel.displayAmount,
style: TextStyle(
color: Theme.of(context).colorScheme.primary,
fontSize: 16,
fontWeight: FontWeight.w500))
],
fontWeight: FontWeight.w500),
),
Text(walletAddressListViewModel.cryptoCurrencySymbol,
style: TextStyle(
color: Theme.of(context).colorScheme.primary,
fontSize: 16,
fontWeight: FontWeight.w500))
],
),
),
),
),
if (!walletAddressListViewModel.isFiatDisabled)
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
_getFiatAmount(),
style: TextStyle(
color: Theme.of(context).colorScheme.onSurfaceVariant,
fontSize: 16,
fontWeight: FontWeight.w500),
),
)
],
if (!walletAddressListViewModel.isFiatDisabled)
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
_getFiatAmount(),
style: TextStyle(
color: Theme.of(context).colorScheme.onSurfaceVariant,
fontSize: 16,
fontWeight: FontWeight.w500),
),
)
],
),
),
),
),
@@ -66,54 +66,68 @@ class _ReceiveAmountModalState extends State<ReceiveAmountModal> {
spacing: 12,
children: [
if (widget.walletAddressListViewModel.hasTokensList) ...[
Text("Token"),
GestureDetector(
onTap: () {
_presentTokenCurrencyPicker(context);
},
child: Observer(
builder: (_) => Container(
height: 60,
decoration: BoxDecoration(
color: Theme.of(context).colorScheme.surfaceContainerHigh,
borderRadius: BorderRadius.circular(16),
),
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
spacing: 8,
children: [
TokenImageWidget(
imageUrl: widget.walletAddressListViewModel.tokenCurrency
?.iconPath ??
widget.walletAddressListViewModel.currencies.first
.iconPath ??
"",
size: 32,
),
Text((widget.walletAddressListViewModel.tokenCurrency ??
widget.walletAddressListViewModel.currencies.first
as CryptoCurrency)
.title
.toUpperCase())
],
),
RotatedBox(
quarterTurns: 2,
child: CakeImageWidget(
imageUrl: "assets/new-ui/dropdown_arrow.svg"))
],
// The caption is reused as the picker's semantics label,
// so it must not be announced as a separate node.
ExcludeSemantics(child: Text(S.of(context).token)),
MergeSemantics(
child: Semantics(
button: true,
label: S.of(context).select_token,
child: GestureDetector(
onTap: () {
_presentTokenCurrencyPicker(context);
},
child: Observer(
builder: (_) => Container(
height: 60,
decoration: BoxDecoration(
color: Theme.of(context).colorScheme.surfaceContainerHigh,
borderRadius: BorderRadius.circular(16),
),
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
spacing: 8,
children: [
ExcludeSemantics(
child: TokenImageWidget(
imageUrl: widget.walletAddressListViewModel
.tokenCurrency?.iconPath ??
widget.walletAddressListViewModel.currencies.first
.iconPath ??
"",
size: 32,
),
),
Text((widget.walletAddressListViewModel.tokenCurrency ??
widget.walletAddressListViewModel.currencies.first
as CryptoCurrency)
.title
.toUpperCase())
],
),
ExcludeSemantics(
child: RotatedBox(
quarterTurns: 2,
child: CakeImageWidget(
imageUrl: "assets/new-ui/dropdown_arrow.svg")),
)
],
),
),
),
),
)),
),
),
),
],
SizedBox(),
Text(S.of(context).amount),
// The caption is reused as the field's semantics label.
ExcludeSemantics(child: Text(S.of(context).amount)),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
@@ -133,74 +147,91 @@ class _ReceiveAmountModalState extends State<ReceiveAmountModal> {
width: 2,
),
),
child: TextField(
textAlign: TextAlign.left,
textAlignVertical: TextAlignVertical.center,
controller: _amountController,
keyboardType: TextInputType.numberWithOptions(
signed: false,
decimal:
widget.walletAddressListViewModel.selectedCurrencyDecimals > 0,
),
inputFormatters: [
DecimalInputFormatter(
maxDecimals:
widget.walletAddressListViewModel.selectedCurrencyDecimals,
),
],
decoration: InputDecoration(
hint: Text(
widget.walletAddressListViewModel.useSatoshi ? "0" : "0.00000000",
child: MergeSemantics(
child: Semantics(
label: S.of(context).amount,
child: TextField(
textAlign: TextAlign.left,
style: TextStyle(
fontSize: 16,
color: Theme.of(
context,
).colorScheme.onSurface.withValues(alpha: 0.5),
textAlignVertical: TextAlignVertical.center,
controller: _amountController,
keyboardType: TextInputType.numberWithOptions(
signed: false,
decimal:
widget.walletAddressListViewModel.selectedCurrencyDecimals >
0,
),
inputFormatters: [
DecimalInputFormatter(
maxDecimals:
widget.walletAddressListViewModel.selectedCurrencyDecimals,
),
],
decoration: InputDecoration(
hint: Text(
widget.walletAddressListViewModel.useSatoshi
? "0"
: "0.00000000",
textAlign: TextAlign.left,
style: TextStyle(
fontSize: 16,
color: Theme.of(
context,
).colorScheme.onSurface.withValues(alpha: 0.5),
),
),
border: InputBorder.none,
filled: true,
fillColor: Colors.transparent,
),
style:
TextStyle(color: Theme.of(context).colorScheme.onSurface),
),
border: InputBorder.none,
filled: true,
fillColor: Colors.transparent,
),
style: TextStyle(color: Theme.of(context).colorScheme.onSurface),
),
),
),
Expanded(
flex: 25,
child: GestureDetector(
onTap: () {
_presentFiatCurrencyPicker(context);
},
child: Container(
height: 60,
decoration: BoxDecoration(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(0),
bottomLeft: Radius.circular(0),
topRight: Radius.circular(18),
bottomRight: Radius.circular(18),
),
color: Theme.of(context).colorScheme.surfaceContainerHigh,
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
spacing: 4.0,
children: [
Observer(
builder: (_) => Text(
widget.walletAddressListViewModel.selectedCurrencySymbol,
style: TextStyle(
color: Theme.of(context).colorScheme.onSurface,
),
child: MergeSemantics(
child: Semantics(
button: true,
label: S.of(context).select_fiat_currency_title,
child: GestureDetector(
onTap: () {
_presentFiatCurrencyPicker(context);
},
child: Container(
height: 60,
decoration: BoxDecoration(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(0),
bottomLeft: Radius.circular(0),
topRight: Radius.circular(18),
bottomRight: Radius.circular(18),
),
color: Theme.of(context).colorScheme.surfaceContainerHigh,
),
Icon(
Icons.keyboard_arrow_down,
color: Theme.of(context).colorScheme.primary,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
spacing: 4.0,
children: [
Observer(
builder: (_) => Text(
widget.walletAddressListViewModel.selectedCurrencySymbol,
style: TextStyle(
color: Theme.of(context).colorScheme.onSurface,
),
),
),
ExcludeSemantics(
child: Icon(
Icons.keyboard_arrow_down,
color: Theme.of(context).colorScheme.primary,
),
),
],
),
],
),
),
),
),
@@ -52,32 +52,25 @@ class _ReceiveBottomButtonsState extends State<ReceiveBottomButtons> {
mainAxisAlignment: MainAxisAlignment.center,
spacing: 16,
children: [
GestureDetector(
onTap: widget.copyData == null ? widget.onCopyButtonPressed : null,
behavior: HitTestBehavior.opaque,
child: IgnorePointer(
ignoring: widget.copyData == null,
child: CopyWrapper(
data: widget.copyData,
builder: (context, copied) => AnimatedSwitcher(
duration: const Duration(milliseconds: 200),
child: IgnorePointer(
child: ModernButton.svg(
key: ValueKey(copied),
size: 60,
iconSize: 32,
svgPath: "assets/new-ui/copy.svg",
onPressed: () {},
label: copied ? S.of(context).copied : S.of(context).copy,
iconColor: copied
? Theme.of(context).colorScheme.primary
: Theme.of(context).colorScheme.surfaceContainer,
backgroundColor: copied
? Theme.of(context).colorScheme.surfaceContainerHighest
: Theme.of(context).colorScheme.primary,
),
),
),
// The button itself is the only control: it copies when there
// is data to copy, otherwise it opens the payjoin copy modal.
CopyWrapper(
data: widget.copyData,
controlBuilder: (context, copied, onCopy) => AnimatedSwitcher(
duration: const Duration(milliseconds: 200),
child: ModernButton.svg(
key: ValueKey(copied),
size: 60,
iconSize: 32,
svgPath: "assets/new-ui/copy.svg",
onPressed: onCopy ?? widget.onCopyButtonPressed,
label: copied ? S.of(context).copied : S.of(context).copy,
iconColor: copied
? Theme.of(context).colorScheme.primary
: Theme.of(context).colorScheme.surfaceContainer,
backgroundColor: copied
? Theme.of(context).colorScheme.surfaceContainerHighest
: Theme.of(context).colorScheme.primary,
),
),
),
@@ -16,10 +16,15 @@ class ReceiveInfoBox extends StatelessWidget {
required this.onDismissed,
this.bottomWidget});
/// [addressRotates] tells whether the address type currently selected on the
/// receive page actually rotates. Most wallet types only ever expose rotating
/// address types, so it defaults to true; Zcash also offers static types, for
/// which the rotation notice would be wrong.
static ReceiveInfoBox? forWalletType(WalletType type,
{required VoidCallback onDismissed,
required AutoGenerateSubaddressStatus autoGenerateSubaddressStatus,
List<CryptoCurrency>? supportedCurrencies}) {
List<CryptoCurrency>? supportedCurrencies,
bool addressRotates = true}) {
switch (type) {
case WalletType.nano:
return null;
@@ -43,6 +48,7 @@ class ReceiveInfoBox extends StatelessWidget {
));
default:
if (autoGenerateSubaddressStatus == AutoGenerateSubaddressStatus.disabled) return null;
if (!addressRotates) return null;
return ReceiveInfoBox(
iconPath: "assets/new-ui/info.svg",
message: S.current.infobox_auto_address,
@@ -71,12 +77,14 @@ class ReceiveInfoBox extends StatelessWidget {
spacing: 10,
children: [
if (iconPath.isNotEmpty)
CakeImageWidget(
imageUrl: iconPath,
width: 16,
height: 16,
colorFilter: ColorFilter.mode(
Theme.of(context).colorScheme.onSurfaceVariant, BlendMode.srcIn),
ExcludeSemantics(
child: CakeImageWidget(
imageUrl: iconPath,
width: 16,
height: 16,
colorFilter: ColorFilter.mode(
Theme.of(context).colorScheme.onSurfaceVariant, BlendMode.srcIn),
),
),
Flexible(
child: Column(
@@ -96,15 +104,20 @@ class ReceiveInfoBox extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
if (bottomWidget != null) bottomWidget!,
GestureDetector(
onTap: onDismissed,
child: Text(
S.of(context).dismiss,
style: TextStyle(
color: Theme.of(context).colorScheme.primary,
fontSize: 12,
fontWeight: FontWeight.w300),
)),
MergeSemantics(
child: Semantics(
button: true,
child: GestureDetector(
onTap: onDismissed,
child: Text(
S.of(context).dismiss,
style: TextStyle(
color: Theme.of(context).colorScheme.primary,
fontSize: 12,
fontWeight: FontWeight.w300),
)),
),
),
],
)
]),
@@ -136,65 +149,69 @@ class InfoboxCurrencyRow extends StatelessWidget {
final double stackWidth = iconSize + (overlap * (currenciesLimited.length));
return Row(
spacing: 8,
children: [
CakeImageWidget(
imageUrl: chainIconPath,
width: 20,
height: 20,
colorFilter:
ColorFilter.mode(Theme.of(context).colorScheme.onSurfaceVariant, BlendMode.srcIn),
),
Container(
height: 28,
width: 1,
color: Theme.of(context).colorScheme.surfaceContainerHigh,
),
SizedBox(
height: iconSize + iconBorder * 2,
width: stackWidth,
child: Stack(
children: [
Positioned(
top: iconBorder,
left: overlap * currenciesLimited.length,
child: Container(
width: 24,
height: 24,
decoration: BoxDecoration(
color: Colors.white.withAlpha(25),
borderRadius: BorderRadius.circular(9999999)),
child: Icon(
Icons.add,
size: 16,
color: Colors.white.withAlpha(128),
// Purely illustrative: the meaning ("receive any token on <chain>") is
// carried by the infobox message text next to it.
return ExcludeSemantics(
child: Row(
spacing: 8,
children: [
CakeImageWidget(
imageUrl: chainIconPath,
width: 20,
height: 20,
colorFilter:
ColorFilter.mode(Theme.of(context).colorScheme.onSurfaceVariant, BlendMode.srcIn),
),
Container(
height: 28,
width: 1,
color: Theme.of(context).colorScheme.surfaceContainerHigh,
),
SizedBox(
height: iconSize + iconBorder * 2,
width: stackWidth,
child: Stack(
children: [
Positioned(
top: iconBorder,
left: overlap * currenciesLimited.length,
child: Container(
width: 24,
height: 24,
decoration: BoxDecoration(
color: Colors.white.withAlpha(25),
borderRadius: BorderRadius.circular(9999999)),
child: Icon(
Icons.add,
size: 16,
color: Colors.white.withAlpha(128),
),
),
),
),
...currenciesLimited
.asMap()
.entries
.map((entry) => Positioned(
left: 16.0 * entry.key,
child: Container(
decoration: BoxDecoration(
border: Border.all(
color: Theme.of(context).colorScheme.surfaceContainer,
width: iconBorder),
borderRadius: BorderRadius.circular(9999999)),
child: TokenImageWidget(
imageUrl: entry.value.iconPath ?? '',
size: 24,
...currenciesLimited
.asMap()
.entries
.map((entry) => Positioned(
left: 16.0 * entry.key,
child: Container(
decoration: BoxDecoration(
border: Border.all(
color: Theme.of(context).colorScheme.surfaceContainer,
width: iconBorder),
borderRadius: BorderRadius.circular(9999999)),
child: TokenImageWidget(
imageUrl: entry.value.iconPath ?? '',
size: 24,
),
),
),
))
.toList()
.reversed,
],
),
)
],
))
.toList()
.reversed,
],
),
)
],
),
);
}
}
@@ -92,27 +92,32 @@ class _ReceiveLabelModalState extends State<ReceiveLabelModal> {
return SizedBox(width: 8);
},
itemBuilder: (context, index) {
return Container(
height: 36,
decoration: BoxDecoration(
color: Theme.of(context).colorScheme.surfaceContainerHigh,
borderRadius: BorderRadius.circular(999)),
child: Material(
color: Colors.transparent,
borderRadius: BorderRadius.circular(999),
child: InkWell(
borderRadius: BorderRadius.circular(999),
onTap: () {
_controller.text = defaultLabels[index];
},
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 10.0),
child: Center(
child: Text(
defaultLabels[index],
style: TextStyle(
fontWeight: FontWeight.w400,
color: Theme.of(context).colorScheme.primary),
return MergeSemantics(
child: Semantics(
button: true,
child: Container(
height: 36,
decoration: BoxDecoration(
color: Theme.of(context).colorScheme.surfaceContainerHigh,
borderRadius: BorderRadius.circular(999)),
child: Material(
color: Colors.transparent,
borderRadius: BorderRadius.circular(999),
child: InkWell(
borderRadius: BorderRadius.circular(999),
onTap: () {
_controller.text = defaultLabels[index];
},
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 10.0),
child: Center(
child: Text(
defaultLabels[index],
style: TextStyle(
fontWeight: FontWeight.w400,
color: Theme.of(context).colorScheme.primary),
),
),
),
),
),
@@ -22,14 +22,16 @@ class ReceiveLabelWidget extends StatelessWidget {
spacing: 8,
mainAxisSize: MainAxisSize.min,
children: [
ClipRect(
child: CakeImageWidget(
imageUrl: "assets/new-ui/label.svg",
width: 24,
height: 24,
colorFilter: ColorFilter.mode(
Theme.of(context).colorScheme.onSurfaceVariant, BlendMode.srcIn),
)),
ExcludeSemantics(
child: ClipRect(
child: CakeImageWidget(
imageUrl: "assets/new-ui/label.svg",
width: 24,
height: 24,
colorFilter: ColorFilter.mode(
Theme.of(context).colorScheme.onSurfaceVariant, BlendMode.srcIn),
)),
),
Text(name,
style: TextStyle(
fontSize: 12, color: Theme.of(context).colorScheme.onSurfaceVariant)),
@@ -16,12 +16,7 @@ class ModalTopBar extends StatelessWidget {
this.leadingWidget,
this.trailingWidget,
this.leadingSemanticLabel,
this.trailingSemanticLabel})
: assert(leadingIcon == null || (leadingSemanticLabel != null && leadingSemanticLabel != ""),
"leadingIcon requires a non-empty leadingSemanticLabel"),
assert(
trailingIcon == null || (trailingSemanticLabel != null && trailingSemanticLabel != ""),
"trailingIcon requires a non-empty trailingSemanticLabel") {
this.trailingSemanticLabel}) {
if (leadingIcon != null && leadingWidget != null) {
throw Exception("Cannot have both leadingIcon and leadingWidget");
}
+16 -2
View File
@@ -11,6 +11,20 @@ import 'package:url_launcher/url_launcher.dart';
class ScanPageNetworkList extends StatelessWidget {
const ScanPageNetworkList({super.key});
/// Same icon the row would render from `trailingIconPath`, but it now carries the
/// information that following the row leaves the app.
Widget _externalLinkIcon(BuildContext context) => Semantics(
label: S.of(context).opens_in_browser,
excludeSemantics: true,
child: CakeImageWidget(
imageUrl: "assets/new-ui/external_link.svg",
height: 18,
width: 18,
colorFilter:
ColorFilter.mode(Theme.of(context).colorScheme.onSurfaceVariant, BlendMode.srcIn),
),
);
@override
Widget build(BuildContext context) {
return Container(
@@ -81,7 +95,7 @@ class ScanPageNetworkList extends StatelessWidget {
keyValue: "wc",
label: "WalletConnect",
subtitle: S.of(context).wc_desc,
trailingIconPath: "assets/new-ui/external_link.svg",
trailingWidget: _externalLinkIcon(context),
onTap: () {
launchUrl(Uri.https("walletconnect.com"));
}),
@@ -90,7 +104,7 @@ class ScanPageNetworkList extends StatelessWidget {
keyValue: "ocp",
label: "OpenCryptoPay",
subtitle: S.of(context).ocp_desc,
trailingIconPath: "assets/new-ui/external_link.svg",
trailingWidget: _externalLinkIcon(context),
onTap: () {
launchUrl(Uri.https("opencryptopay.io"));
})
@@ -35,46 +35,65 @@ class FiatAmountBar extends StatelessWidget {
final Color? allAmountTextColor;
@override
Widget build(BuildContext context) => Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Widget build(BuildContext context) {
final convertedAmount = fiatInputMode
? "${cryptoAmount.isEmpty ? "0" : cryptoAmount.withMaxDecimals(8)} $cryptoCurrencySymbol"
: "${fiatAmount.isEmpty ? "0" : fiatAmount} $fiatCurrencySymbol";
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
spacing: 8,
children: [
ModernButton.svg(
backgroundColor: foregroundElementColor,
size: 28,
svgPath: "assets/new-ui/switch.svg",
iconSize: 18,
onPressed: onSwitchButtonPressed,
semanticLabel: S.of(context).switch_input_currency,
),
// Announced as the converted value only: the switch button next to it already
// exposes the same action, so this must not become a second control.
Semantics(
label: convertedAmount,
excludeSemantics: true,
child: GestureDetector(
onTap: onSwitchButtonPressed,
child: Text(
convertedAmount,
style: TextStyle(color: textColor ?? Theme.of(context).colorScheme.onSurface),
),
),
),
],
),
if (allAmount != null && allAmount!.isNotEmpty)
Row(
spacing: 8,
children: [
ModernButton.svg(
backgroundColor: foregroundElementColor,
size: 28,
svgPath: "assets/new-ui/switch.svg",
iconSize: 18,
onPressed: onSwitchButtonPressed,
semanticLabel: S.of(context).switch_input_currency,
),
GestureDetector(
onTap: onSwitchButtonPressed,
// The caption is part of the chip's label below.
ExcludeSemantics(
child: Text(
fiatInputMode
? "${cryptoAmount.isEmpty ? "0" : cryptoAmount.withMaxDecimals(8)} $cryptoCurrencySymbol"
: "${fiatAmount.isEmpty ? "0" : fiatAmount} $fiatCurrencySymbol",
style: TextStyle(color: textColor ?? Theme.of(context).colorScheme.onSurface),
),
),
],
),
if (allAmount != null && allAmount!.isNotEmpty)
Row(
spacing: 8,
children: [
Text(
"${S.of(context).max}.",
style: TextStyle(color: textColor ?? Theme.of(context).colorScheme.onSurface),
),
Container(
decoration: BoxDecoration(borderRadius: BorderRadius.circular(999999)),
child: Material(
color: allAmountColor ??
foregroundElementColor ??
Theme.of(context).colorScheme.surfaceContainer,
borderRadius: BorderRadius.circular(99999),
),
Container(
decoration: BoxDecoration(borderRadius: BorderRadius.circular(999999)),
child: Material(
color: allAmountColor ??
foregroundElementColor ??
Theme.of(context).colorScheme.surfaceContainer,
borderRadius: BorderRadius.circular(99999),
child: Semantics(
button: true,
enabled: onAllButtonPressed != null,
label: S.of(context).max,
value: _formatAmount(allAmount!),
onTap: onAllButtonPressed,
excludeSemantics: true,
child: InkWell(
borderRadius: BorderRadius.circular(99999),
onTap: onAllButtonPressed,
@@ -90,10 +109,12 @@ class FiatAmountBar extends StatelessWidget {
),
),
),
],
),
],
);
),
],
),
],
);
}
String _formatAmount(String amount) {
try {
@@ -1,3 +1,4 @@
import 'package:cake_wallet/generated/i18n.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
@@ -179,32 +180,44 @@ class _RecipientDotState extends State<RecipientDot> {
curve: Curves.easeOutCubic,
top: _created ? 0 : widget.size,
child: Material(
child: AnimatedSwitcher(
duration: Duration(milliseconds: 150),
child: GestureDetector(
key: ValueKey(widget.selected),
// Dots scaled all the way down are not visible, so they must not be
// reachable by a screen reader either.
child: ExcludeSemantics(
excluding: widget.textOpacity <= 0,
child: Semantics(
button: true,
selected: widget.selected,
label: S.of(context).recipient_number("${widget.index + 1}"),
onTap: widget.onTap,
child: Container(
width: widget.size,
height: widget.size,
margin: EdgeInsets.symmetric(horizontal: widget.spacing / 2),
decoration: BoxDecoration(
color: widget.selected
? Theme.of(context).colorScheme.primary
: Theme.of(context).colorScheme.surfaceContainer,
shape: BoxShape.circle,
),
alignment: Alignment.center,
child: Opacity(
opacity: widget.textOpacity,
child: Text(
(widget.index + 1).toString(),
style: TextStyle(
color: widget.selected
? Theme.of(context).colorScheme.onPrimary
: Theme.of(context).colorScheme.onSurface,
fontSize: 14,
fontWeight: FontWeight.w500),
excludeSemantics: true,
child: AnimatedSwitcher(
duration: Duration(milliseconds: 150),
child: GestureDetector(
key: ValueKey(widget.selected),
onTap: widget.onTap,
child: Container(
width: widget.size,
height: widget.size,
margin: EdgeInsets.symmetric(horizontal: widget.spacing / 2),
decoration: BoxDecoration(
color: widget.selected
? Theme.of(context).colorScheme.primary
: Theme.of(context).colorScheme.surfaceContainer,
shape: BoxShape.circle,
),
alignment: Alignment.center,
child: Opacity(
opacity: widget.textOpacity,
child: Text(
(widget.index + 1).toString(),
style: TextStyle(
color: widget.selected
? Theme.of(context).colorScheme.onPrimary
: Theme.of(context).colorScheme.onSurface,
fontSize: 14,
fontWeight: FontWeight.w500),
),
),
),
),
),
@@ -86,22 +86,27 @@ class _NewSendAddressInputState extends State<NewSendAddressInput> {
Expanded(
child: Stack(
children: [
TextField(
focusNode: widget.focusNode,
autocorrect: false,
enableSuggestions: false,
onSubmitted: (val) => FocusScope.of(context).unfocus(),
onChanged: state.didChange,
onEditingComplete: () {
widget.onEditingComplete();
},
onTapOutside: (_) {
widget.onEditingComplete();
},
controller: widget.addressController,
decoration: InputDecoration(
hintText: widget.hintText ?? S.of(context).search_or_enter,
errorMaxLines: 3,
MergeSemantics(
child: Semantics(
label: _fieldSemanticsLabel(context),
child: TextField(
focusNode: widget.focusNode,
autocorrect: false,
enableSuggestions: false,
onSubmitted: (val) => FocusScope.of(context).unfocus(),
onChanged: state.didChange,
onEditingComplete: () {
widget.onEditingComplete();
},
onTapOutside: (_) {
widget.onEditingComplete();
},
controller: widget.addressController,
decoration: InputDecoration(
hintText: widget.hintText ?? S.of(context).search_or_enter,
errorMaxLines: 3,
),
),
),
),
Positioned.fill(
@@ -113,9 +118,13 @@ class _NewSendAddressInputState extends State<NewSendAddressInput> {
widget.addressController.text.isEmpty)
? 0
: 1,
child: SendAddressOverlay(
address: widget.addressController.text,
displayName: widget.displayName,
// Purely visual copy of the field content; announcing it again
// would read the address twice.
child: ExcludeSemantics(
child: SendAddressOverlay(
address: widget.addressController.text,
displayName: widget.displayName,
),
)),
),
),
@@ -150,9 +159,15 @@ class _NewSendAddressInputState extends State<NewSendAddressInput> {
if (state.hasError)
Padding(
padding: EdgeInsets.only(top: 6, left: 8),
child: Text(
state.errorText!,
style: TextStyle(fontSize: 12, color: Theme.of(context).colorScheme.error),
child: Semantics(
container: true,
liveRegion: true,
label: "${S.of(context).address_or_alias}, ${state.errorText!}",
excludeSemantics: true,
child: Text(
state.errorText!,
style: TextStyle(fontSize: 12, color: Theme.of(context).colorScheme.error),
),
),
)
],
@@ -161,6 +176,19 @@ class _NewSendAddressInputState extends State<NewSendAddressInput> {
);
}
String _fieldSemanticsLabel(BuildContext context) {
final label = S.of(context).address_or_alias;
final displayName = widget.displayName;
if (displayName == null ||
displayName.isEmpty ||
displayName == widget.addressController.text) {
return label;
}
return "$label, $displayName";
}
Future<void> _presentQRScanner(BuildContext context) async {
bool isCameraPermissionGranted =
await PermissionHandler.checkPermission(Permission.camera, context);
@@ -1,3 +1,4 @@
import "package:cake_wallet/generated/i18n.dart";
import "package:cake_wallet/new-ui/widgets/coins_page/token_image_widget.dart";
import "package:cake_wallet/new-ui/widgets/send_page/floating_icon_button.dart";
import "package:cake_wallet/src/widgets/cake_image_widget.dart";
@@ -67,6 +68,14 @@ class _NewSendAmountInputState extends State<NewSendAmountInput> {
mainAxisSize: MainAxisSize.max,
spacing: 8,
children: [
// Deliberately unwrapped. Naming the field with
// MergeSemantics > Semantics(label:) made Android announce
// the amount twice: FormField's own wrapper node reflects
// its descendants' text, so the authored label came back a
// second time on the container. The visible "Amount:"
// caption on the send page carries the name instead, and it
// must stay in the semantics tree for this field to be
// named at all.
Expanded(
child: TextField(
keyboardType: TextInputType.numberWithOptions(
@@ -105,44 +114,58 @@ class _NewSendAmountInputState extends State<NewSendAmountInput> {
),
IntrinsicWidth(
child: Observer(
builder: (_) => GestureDetector(
onTap: widget.onPickerClicked,
child: Container(
alignment: Alignment.center,
width: double.infinity,
decoration: BoxDecoration(
borderRadius: const BorderRadius.only(
topRight: Radius.circular(18),
bottomRight: Radius.circular(18),
// `container: true` is load bearing. FormField wraps this
// builder in its own non-container Semantics annotation, so
// without a container of its own this configuration is
// absorbed into that wrapper node — which then parents the
// amount TextField and hides it from screen readers.
builder: (_) => Semantics(
container: true,
button: widget.hasPicker ? true : null,
enabled: widget.hasPicker ? true : null,
label: widget.hasPicker ? S.of(context).select_asset : widget.currency,
value: widget.hasPicker ? widget.currency : null,
onTap: widget.hasPicker ? widget.onPickerClicked : null,
excludeSemantics: true,
child: GestureDetector(
onTap: widget.onPickerClicked,
child: Container(
alignment: Alignment.center,
width: double.infinity,
decoration: BoxDecoration(
borderRadius: const BorderRadius.only(
topRight: Radius.circular(18),
bottomRight: Radius.circular(18),
),
color: widget.hasPicker
? Theme.of(context).colorScheme.surfaceContainerHigh
: Theme.of(context).colorScheme.surfaceContainer,
),
color: widget.hasPicker
? Theme.of(context).colorScheme.surfaceContainerHigh
: Theme.of(context).colorScheme.surfaceContainer,
),
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 12),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
spacing: 8,
children: [
if (widget.hasPicker && widget.currencyIconPath.isNotEmpty)
TokenImageWidget(
imageUrl: widget.currencyIconPath,
size: 24,
),
Text(widget.currency),
if (widget.hasPicker)
CakeImageWidget(
imageUrl: "assets/new-ui/chooser.svg",
width: 12,
height: 12,
colorFilter: ColorFilter.mode(
Theme.of(context).colorScheme.primary,
BlendMode.srcIn,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 12),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
spacing: 8,
children: [
if (widget.hasPicker && widget.currencyIconPath.isNotEmpty)
TokenImageWidget(
imageUrl: widget.currencyIconPath,
size: 24,
),
),
],
Text(widget.currency),
if (widget.hasPicker)
CakeImageWidget(
imageUrl: "assets/new-ui/chooser.svg",
width: 12,
height: 12,
colorFilter: ColorFilter.mode(
Theme.of(context).colorScheme.primary,
BlendMode.srcIn,
),
),
],
),
),
),
),
@@ -155,9 +178,15 @@ class _NewSendAmountInputState extends State<NewSendAmountInput> {
if (state.hasError)
Padding(
padding: const EdgeInsets.only(top: 6, left: 8),
child: Text(
state.errorText!,
style: TextStyle(fontSize: 12, color: Theme.of(context).colorScheme.error),
child: Semantics(
container: true,
liveRegion: true,
label: "${S.of(context).amount}${state.errorText!}",
excludeSemantics: true,
child: Text(
state.errorText!,
style: TextStyle(fontSize: 12, color: Theme.of(context).colorScheme.error),
),
),
),
],
@@ -80,18 +80,25 @@ class LoadingBottomWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Row(
mainAxisAlignment: MainAxisAlignment.center,
spacing: 12,
children: [
CupertinoActivityIndicator(
color: Theme.of(context).colorScheme.onSurfaceVariant,
),
Text(
text,
style: TextStyle(color: Theme.of(context).colorScheme.onSurfaceVariant),
)
],
// One node per state so each step of the send is announced exactly once.
return Semantics(
container: true,
liveRegion: true,
label: text,
excludeSemantics: true,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
spacing: 12,
children: [
CupertinoActivityIndicator(
color: Theme.of(context).colorScheme.onSurfaceVariant,
),
Text(
text,
style: TextStyle(color: Theme.of(context).colorScheme.onSurfaceVariant),
)
],
),
);
}
}
@@ -106,45 +113,51 @@ class TransactionErrorActions extends StatelessWidget {
return Column(
spacing: 12,
children: [
Container(
decoration: BoxDecoration(
color: Theme.of(context).colorScheme.errorContainer.withAlpha(64),
borderRadius: BorderRadius.circular(16),
),
child: Padding(
padding: const EdgeInsets.all(12.0),
child: Column(
spacing: 12,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.center,
spacing: 8,
children: [
CakeImageWidget(
imageUrl: "assets/new-ui/warning.svg",
height: 24,
width: 24,
colorFilter:
ColorFilter.mode(Theme.of(context).colorScheme.error, BlendMode.srcIn),
),
Text(
S.of(context).transaction_error,
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w400,
color: Theme.of(context).colorScheme.error),
)
],
),
Text(
errorText,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w400,
color: Theme.of(context).colorScheme.error),
textAlign: TextAlign.center,
),
],
Semantics(
container: true,
liveRegion: true,
label: "${S.of(context).transaction_error}\n$errorText",
excludeSemantics: true,
child: Container(
decoration: BoxDecoration(
color: Theme.of(context).colorScheme.errorContainer.withAlpha(64),
borderRadius: BorderRadius.circular(16),
),
child: Padding(
padding: const EdgeInsets.all(12.0),
child: Column(
spacing: 12,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.center,
spacing: 8,
children: [
CakeImageWidget(
imageUrl: "assets/new-ui/warning.svg",
height: 24,
width: 24,
colorFilter:
ColorFilter.mode(Theme.of(context).colorScheme.error, BlendMode.srcIn),
),
Text(
S.of(context).transaction_error,
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w400,
color: Theme.of(context).colorScheme.error),
)
],
),
Text(
errorText,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w400,
color: Theme.of(context).colorScheme.error),
textAlign: TextAlign.center,
),
],
),
),
),
),
@@ -87,11 +87,15 @@ class _SendConfirmSheetState extends State<SendConfirmSheet> {
offset: _committed ? const Offset(-1, 0) : Offset.zero,
duration: const Duration(milliseconds: 300),
curve: Curves.easeOutCubic,
child: SendTransactionDetails(
sendViewModel: widget.sendViewModel,
isPage: widget.isPage,
title: widget.title,
iconPath: widget.iconPath,
// Both screens stay mounted; only the visible one may be reachable.
child: ExcludeSemantics(
excluding: _committed,
child: SendTransactionDetails(
sendViewModel: widget.sendViewModel,
isPage: widget.isPage,
title: widget.title,
iconPath: widget.iconPath,
),
),
),
),
@@ -102,8 +106,11 @@ class _SendConfirmSheetState extends State<SendConfirmSheet> {
offset: _committed ? Offset.zero : const Offset(1, 0),
duration: const Duration(milliseconds: 300),
curve: Curves.easeOutCubic,
child: TransactionCommitedScreen(
sendViewModel: widget.sendViewModel,
child: ExcludeSemantics(
excluding: !_committed,
child: TransactionCommitedScreen(
sendViewModel: widget.sendViewModel,
),
),
),
),
@@ -154,9 +161,15 @@ class SendTransactionDetails extends StatelessWidget {
width: 28,
height: 28,
),
Text(
title ?? S.of(context).send,
style: TextStyle(fontWeight: FontWeight.w500, fontSize: 20),
Semantics(
header: true,
// Android reads the heading from headingLevel since the
// Flutter 3.41 engine; header: alone only covers iOS.
headingLevel: 1,
child: Text(
title ?? S.of(context).send,
style: TextStyle(fontWeight: FontWeight.w500, fontSize: 20),
),
)
],
),
@@ -250,37 +263,40 @@ class SendTransactionDetails extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.start,
spacing: 24,
children: [
Column(
children: [
Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
spacing: 4,
children: [
Flexible(
child: Text(
amount,
style: TextStyle(
fontSize: 36,
fontWeight: FontWeight.w400,
color: Theme.of(context).colorScheme.onSurface),
// The amount being sent is the value under review: announce it as one group.
MergeSemantics(
child: Column(
children: [
Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
spacing: 4,
children: [
Flexible(
child: Text(
amount,
style: TextStyle(
fontSize: 36,
fontWeight: FontWeight.w400,
color: Theme.of(context).colorScheme.onSurface),
),
),
),
Text(currencySymbol,
style: TextStyle(
fontSize: 36,
fontWeight: FontWeight.w400,
color: Theme.of(context).colorScheme.onSurfaceVariant))
],
),
Text(
fiatAmount,
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.w500,
color: Theme.of(context).colorScheme.onSurfaceVariant),
),
],
Text(currencySymbol,
style: TextStyle(
fontSize: 36,
fontWeight: FontWeight.w400,
color: Theme.of(context).colorScheme.onSurfaceVariant))
],
),
Text(
fiatAmount,
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.w500,
color: Theme.of(context).colorScheme.onSurfaceVariant),
),
],
),
),
if (outputs.length >= 1 &&
(outputs.first.extractedAddress.isNotEmpty || outputs.first.address.isNotEmpty) &&
@@ -352,32 +368,34 @@ class SendTransactionDetails extends StatelessWidget {
children: [
Padding(
padding: const EdgeInsets.all(12.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(S.of(context).fee,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w400,
color: Theme.of(context).colorScheme.onSurface)),
Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Text(
"${fee.withLocalSeperator(sendViewModel.languageCode)} ${sendViewModel.currencySymbol}",
child: MergeSemantics(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(S.of(context).fee,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w400,
color: Theme.of(context).colorScheme.onSurfaceVariant),
),
Text(fiatFee.withLocalSeperator(sendViewModel.languageCode),
color: Theme.of(context).colorScheme.onSurface)),
Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Text(
"${fee.withLocalSeperator(sendViewModel.languageCode)} ${sendViewModel.currencySymbol}",
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w400,
color: Theme.of(context).colorScheme.onSurfaceVariant))
],
)
],
color: Theme.of(context).colorScheme.onSurfaceVariant),
),
Text(fiatFee.withLocalSeperator(sendViewModel.languageCode),
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w400,
color: Theme.of(context).colorScheme.onSurfaceVariant))
],
)
],
),
),
),
if (sendViewModel.isElectrumWallet) ...[
@@ -390,27 +408,29 @@ class SendTransactionDetails extends StatelessWidget {
),
Padding(
padding: const EdgeInsets.all(12.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(S.of(context).network,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w400,
color: Theme.of(context).colorScheme.onSurface)),
Column(
children: [
Text(
sendViewModel.selectedCryptoCurrency == CryptoCurrency.btcln
? "Lightning"
: bitcoin!.getNetworkName(sendViewModel.wallet),
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w400,
color: Theme.of(context).colorScheme.onSurfaceVariant))
],
)
],
child: MergeSemantics(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(S.of(context).network,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w400,
color: Theme.of(context).colorScheme.onSurface)),
Column(
children: [
Text(
sendViewModel.selectedCryptoCurrency == CryptoCurrency.btcln
? "Lightning"
: bitcoin!.getNetworkName(sendViewModel.wallet),
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w400,
color: Theme.of(context).colorScheme.onSurfaceVariant))
],
)
],
),
),
)
],
@@ -459,9 +479,14 @@ class _TransactionCommitedScreenState extends State<TransactionCommitedScreen> {
SizedBox(
height: 12,
),
Text(
S.of(context).transaction_sent_new,
style: TextStyle(fontSize: 24, fontWeight: FontWeight.w600),
// The sheet swaps its content in place, so this title becoming visible is what
// tells a screen reader that the transaction went through.
Semantics(
liveRegion: true,
child: Text(
S.of(context).transaction_sent_new,
style: TextStyle(fontSize: 24, fontWeight: FontWeight.w600),
),
),
SizedBox(),
CakeImageWidget(width: 200, height: 200, imageUrl: "assets/new-ui/birthday_cake.svg"),
@@ -552,37 +577,44 @@ class TransactionCommittedScreenActionButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Flexible(
child: GestureDetector(
onTap: onTap,
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16),
color: Theme.of(context).colorScheme.surfaceContainer),
child: Padding(
padding: EdgeInsets.all(16),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
spacing: 10,
children: [
isLoading
? CupertinoActivityIndicator()
: CakeImageWidget(
imageUrl: iconPath,
width: 24,
height: 24,
colorFilter: ColorFilter.mode(
Theme.of(context).colorScheme.primary, BlendMode.srcIn),
),
Text(
text,
style: TextStyle(
color: Theme.of(context).colorScheme.primary,
fontWeight: FontWeight.w500),
)
],
),
),
)));
child: Semantics(
button: true,
enabled: !isLoading,
label: text,
value: isLoading ? S.of(context).loading : null,
onTap: isLoading ? null : onTap,
excludeSemantics: true,
child: GestureDetector(
onTap: isLoading ? null : onTap,
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16),
color: Theme.of(context).colorScheme.surfaceContainer),
child: Padding(
padding: EdgeInsets.all(16),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
spacing: 10,
children: [
isLoading
? CupertinoActivityIndicator()
: CakeImageWidget(
imageUrl: iconPath,
width: 24,
height: 24,
colorFilter: ColorFilter.mode(
Theme.of(context).colorScheme.primary, BlendMode.srcIn),
),
Text(
text,
style: TextStyle(
color: Theme.of(context).colorScheme.primary,
fontWeight: FontWeight.w500),
)
],
),
),
))));
}
}
@@ -623,16 +655,28 @@ class _MultiSendAddressPreviewState extends State<MultiSendAddressPreview> {
style: TextStyle(fontFamily: "IBM Plex Mono"),
),
if (!_expanded)
GestureDetector(
onTap: () {
setState(() {
_expanded = true;
});
},
child: Text(middleTruncate(widget.address, 8, 8),
style: TextStyle(
fontFamily: "IBM Plex Mono",
color: Theme.of(context).colorScheme.primary)))
Semantics(
button: true,
// Read the whole address rather than the truncated form.
label: widget.address,
hint: S.of(context).show_full_address,
onTap: () {
setState(() {
_expanded = true;
});
},
excludeSemantics: true,
child: GestureDetector(
onTap: () {
setState(() {
_expanded = true;
});
},
child: Text(middleTruncate(widget.address, 8, 8),
style: TextStyle(
fontFamily: "IBM Plex Mono",
color: Theme.of(context).colorScheme.primary))),
)
else
AddressFormatter.buildSegmentedAddress(
address: widget.address,
@@ -31,11 +31,16 @@ class NewSendMemoInput extends StatelessWidget {
child: Row(
children: [
Expanded(
child: TextField(
maxLength: maxMemoLength,
controller: memoController,
decoration: InputDecoration(
hintText: hintText ?? S.of(context).memo_optional, counterText: ""),
child: MergeSemantics(
child: Semantics(
label: hintText ?? S.of(context).memo_optional,
child: TextField(
maxLength: maxMemoLength,
controller: memoController,
decoration: InputDecoration(
hintText: hintText ?? S.of(context).memo_optional, counterText: ""),
),
),
),
),
SizedBox(width: 12),
@@ -61,8 +66,12 @@ class NewSendMemoInput extends StatelessWidget {
style: TextStyle(
fontSize: 12, color: Theme.of(context).colorScheme.onSurfaceVariant)),
),
Text("${memoController.text.length} / ${maxMemoLength}",
style: TextStyle(fontSize: 12, color: Theme.of(context).colorScheme.primary))
// The field itself already reports the character count through
// maxValueLength/currentValueLength, so this visual counter stays silent.
ExcludeSemantics(
child: Text("${memoController.text.length} / ${maxMemoLength}",
style: TextStyle(fontSize: 12, color: Theme.of(context).colorScheme.primary)),
)
],
),
)
@@ -1,3 +1,4 @@
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cw_core/sync_status.dart';
import 'package:flutter/material.dart';
@@ -18,28 +19,40 @@ class SendSyncingIndicator extends StatelessWidget {
eta = "";
}
return Container(
height: 48,
decoration: BoxDecoration(color: backgroundColor, borderRadius: BorderRadius.circular(99999)),
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 12.0),
child: Row(
mainAxisSize: MainAxisSize.min,
spacing: 10,
children: [
if (status.progress() > 0)
SizedBox(
width: 24,
height: 24,
child: CircularProgressIndicator(
value: status.progress(),
strokeWidth: 3,
strokeCap: StrokeCap.round,
color: outlineColor,
final statusText = "${S.of(context).synchronizing}... ${eta}";
// A single status node: progress ticks keep updating the value, and without a live
// region they do not interrupt the user on every tick.
return Semantics(
container: true,
label: statusText,
value: status.progress() > 0 ? "${(status.progress() * 100).round()}%" : null,
excludeSemantics: true,
child: Container(
height: 48,
decoration:
BoxDecoration(color: backgroundColor, borderRadius: BorderRadius.circular(99999)),
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 12.0),
child: Row(
mainAxisSize: MainAxisSize.min,
spacing: 10,
children: [
if (status.progress() > 0)
SizedBox(
width: 24,
height: 24,
child: CircularProgressIndicator(
value: status.progress(),
strokeWidth: 3,
strokeCap: StrokeCap.round,
color: outlineColor,
semanticsLabel: S.of(context).synchronizing,
),
),
),
Text("Synchronizing... ${eta}", style: TextStyle(color: outlineColor)),
],
Text(statusText, style: TextStyle(color: outlineColor)),
],
),
),
),
);
@@ -212,6 +212,10 @@ class _SwapSendExternalModalState extends State<SwapSendExternalModal> {
child: Icon(
copied ? Icons.check : Icons.copy,
key: ValueKey(copied),
// Only the icon changes here, so label
// the copied state for CopyWrapper's
// live region to announce.
semanticLabel: copied ? S.of(context).copied : null,
size: 18,
color: Theme.of(context).colorScheme.primary,
),
@@ -146,7 +146,9 @@ void startAuthenticationStateChange(
),
);
} else {
await navigatorKey.currentState!.pushNamedAndRemoveUntil(Routes.dashboard, (route) => false);
unawaited(
navigatorKey.currentState!.pushNamedAndRemoveUntil(Routes.dashboard, (route) => false),
);
}
WidgetsBinding.instance.addPostFrameCallback((_) {
final linkViewModel = getIt.get<LinkViewModel>();
+27 -3
View File
@@ -4,14 +4,15 @@ import 'package:cake_wallet/anonpay/anonpay_invoice_info.dart';
import 'package:cake_wallet/core/new_wallet_arguments.dart';
import 'package:cake_wallet/new-ui/new_dashboard.dart';
import 'package:cake_wallet/new-ui/pages/about_page.dart';
import 'package:cake_wallet/new-ui/pages/bridge/bridge_confirm_sheet.dart';
import 'package:cake_wallet/new-ui/pages/bridge/bridge_history_page.dart';
import 'package:cake_wallet/new-ui/pages/bridge/bridge_network_page.dart';
import 'package:cake_wallet/new-ui/pages/bridge/bridge_receiving_wallet_page.dart';
import 'package:cake_wallet/new-ui/pages/coin_control_page.dart';
import 'package:cake_wallet/new-ui/pages/addresses_page.dart';
import 'package:cake_wallet/new-ui/pages/lightning_username_page.dart';
import "package:cake_wallet/new-ui/pages/receive_page.dart";
import 'package:cake_wallet/new-ui/pages/send_page.dart';
import 'package:cake_wallet/new-ui/widgets/hardware_wallet/sync_key_images_sheet.dart';
import 'package:cake_wallet/order/order.dart';
import 'package:cake_wallet/core/new_wallet_type_arguments.dart';
import 'package:cake_wallet/core/totp_request_details.dart';
@@ -50,6 +51,7 @@ import 'package:cake_wallet/src/screens/dev/monero_background_sync.dart';
import 'package:cake_wallet/src/screens/dev/moneroc_cache_debug.dart';
import 'package:cake_wallet/src/screens/dev/moneroc_call_profiler.dart';
import 'package:cake_wallet/src/screens/dev/network_requests.dart';
import 'package:cake_wallet/store/app_store.dart';
import 'package:cake_wallet/utils/feature_flag.dart';
import 'package:cake_wallet/src/screens/dev/qr_tools_page.dart';
import 'package:cake_wallet/src/screens/dev/secure_preferences_page.dart';
@@ -125,7 +127,6 @@ import 'package:cake_wallet/src/screens/trade_details/trade_details_page.dart';
import 'package:cake_wallet/src/screens/transaction_details/rbf_details_page.dart';
import 'package:cake_wallet/src/screens/transaction_details/transaction_details_page.dart';
import 'package:cake_wallet/src/screens/unspent_coins/unspent_coins_details_page.dart';
import 'package:cake_wallet/src/screens/unspent_coins/unspent_coins_list_page.dart';
import 'package:cake_wallet/src/screens/ur/animated_ur_page.dart';
import 'package:cake_wallet/src/screens/wallet/wallet_edit_page.dart';
import 'package:cake_wallet/src/screens/wallet_connect/services/walletkit_service.dart';
@@ -145,7 +146,7 @@ import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart';
import 'package:cake_wallet/view_model/dashboard/nft_view_model.dart';
import 'package:cake_wallet/view_model/dashboard/sign_view_model.dart';
import 'package:cake_wallet/view_model/hardware_wallet/hardware_wallet_view_model.dart';
import 'package:cake_wallet/view_model/hardware_wallet/ledger_view_model.dart';
import 'package:cake_wallet/view_model/hardware_wallet/trezor_connect_view_model.dart';
import 'package:cake_wallet/view_model/monero_account_list/account_list_item.dart';
import 'package:cake_wallet/view_model/node_list/node_create_or_edit_view_model.dart';
import 'package:cake_wallet/view_model/restore/restore_wallet.dart';
@@ -469,6 +470,16 @@ Route<dynamic> createRoute(RouteSettings settings) {
return handleRouteWithPlatformAwareness((context) => getIt.get<AddressPage>(),
settings: settings);
case Routes.newReceivePage:
if (FeatureFlag.hasNewUi) {
return handleRouteWithPlatformAwareness(
(context) => Material(child: getIt.get<NewReceivePage>(param1: false, param2: null)),
settings: settings,
);
}
return handleRouteWithPlatformAwareness((context) => getIt.get<AddressPage>(),
settings: settings);
case Routes.transactionDetails:
return CupertinoPageRoute<void>(
fullscreenDialog: true,
@@ -897,6 +908,19 @@ Route<dynamic> createRoute(RouteSettings settings) {
case Routes.setup2faInfoPage:
return MaterialPageRoute<void>(builder: (_) => getIt.get<Setup2FAInfoPage>());
case Routes.syncKeyImagesDevices:
final hardwareWalletType = getIt<AppStore>().wallet!.hardwareWalletType;
if (hardwareWalletType == HardwareWalletType.trezor) {
return MaterialPageRoute<void>(
builder: (_) => SyncKeyImagesSheet(
appStore: getIt<AppStore>(),
trezorConnectVM: getIt<TrezorConnectViewModel>(),
),
);
}
return MaterialPageRoute<void>(
builder: (_) => getIt.get<AnimatedURPage>(param1: settings.arguments));
case Routes.urqrAnimatedPage:
return MaterialPageRoute<void>(
builder: (_) => getIt.get<AnimatedURPage>(param1: settings.arguments));
+2
View File
@@ -71,6 +71,7 @@ class Routes {
static const unspentCoinsList = '/unspent_coins_list';
static const unspentCoinsDetails = '/unspent_coins_details';
static const addressPage = '/address_page';
static const newReceivePage = '/new_receive_page';
static const fullscreenQR = '/fullscreen_qr';
static const cakePayWelcomePage = '/cake_pay_welcome_page';
static const cakePayLoginPage = '/cake_pay_login_page';
@@ -132,6 +133,7 @@ class Routes {
static const signPage = '/sign_page';
static const connectDevices = '/device/connect';
static const syncKeyImagesDevices = '/device/sync_key_images';
static const urqrAnimatedPage = '/urqr/animated_page';
static const walletGroupsDisplayPage = '/wallet_groups_display_page';
static const walletGroupDescription = '/wallet_group_description';
+6
View File
@@ -116,6 +116,12 @@ class CWSolana extends Solana {
return await solanaWallet.getSPLToken(mintAddress);
}
@override
Future<bool?> isTokenVerifiedOnJupiter(WalletBase wallet, String mintAddress) {
final solanaWallet = wallet as SolanaWallet;
return solanaWallet.isTokenVerifiedOnJupiter(mintAddress);
}
@override
CryptoCurrency assetOfTransaction(WalletBase wallet, TransactionInfo transaction) {
if (transaction.amount.currency.symbol == CryptoCurrency.sol.symbol) {
+51 -35
View File
@@ -40,13 +40,11 @@ class EditTokenPage extends BasePage {
: S.current.add_token;
@override
Widget body(BuildContext context) {
return EditTokenPageBody(
Widget body(BuildContext context) => EditTokenPageBody(
homeSettingsViewModel: homeSettingsViewModel,
token: token,
initialContractAddress: initialContractAddress,
);
}
}
class EditTokenPageBody extends StatefulWidget {
@@ -83,6 +81,11 @@ class _EditTokenPageBodyState extends State<EditTokenPageBody> {
bool _disclaimerChecked = false;
bool isEditingToken = false;
bool _isTokenVerified = false;
bool _isJupiterVerified = false;
String? _jupiterVerifiedAddress;
bool get _isJupiterVerifiedForCurrentAddress =>
_isJupiterVerified && _jupiterVerifiedAddress == _contractAddressController.text;
@override
void initState() {
@@ -129,14 +132,28 @@ class _EditTokenPageBodyState extends State<EditTokenPageBody> {
final isVerified = widget.homeSettingsViewModel.checkIfTokenIsWhitelisted(contractAddress);
if (!mounted) return;
setState(() {
_isTokenVerified = isVerified;
});
_checkIfTokenIsVerifiedOnJupiter(contractAddress);
}
Future<void> _checkIfTokenIsVerifiedOnJupiter(String contractAddress) async {
final isVerified =
await widget.homeSettingsViewModel.checkIfTokenIsVerifiedOnJupiter(contractAddress);
if (!mounted || _contractAddressController.text != contractAddress) return;
setState(() {
_isJupiterVerified = isVerified ?? false;
_jupiterVerifiedAddress = contractAddress;
});
}
@override
Widget build(BuildContext context) {
return GestureDetector(
Widget build(BuildContext context) => GestureDetector(
onTap: () => FocusScope.of(context).unfocus(),
child: ScrollableWithBottomSection(
contentPadding: EdgeInsets.zero,
@@ -174,8 +191,7 @@ class _EditTokenPageBodyState extends State<EditTokenPageBody> {
SizedBox(height: 20),
],
Observer(
builder: (context) {
return Row(
builder: (context) => Row(
children: <Widget>[
Expanded(
child: LoadingPrimaryButton(
@@ -210,14 +226,12 @@ class _EditTokenPageBodyState extends State<EditTokenPageBody> {
if (isTokenAlreadyAdded) {
showPopUp<void>(
context: context,
builder: (dialogContext) {
return AlertWithOneAction(
builder: (dialogContext) => AlertWithOneAction(
alertTitle: S.current.warning,
alertContent: S.of(context).token_already_exists,
buttonText: S.of(context).ok,
buttonAction: () => Navigator.of(dialogContext).pop(),
);
},
),
);
return;
}
@@ -225,13 +239,15 @@ class _EditTokenPageBodyState extends State<EditTokenPageBody> {
final isWhitelisted = await widget.homeSettingsViewModel
.checkIfTokenIsWhitelisted(_contractAddressController.text);
final hasPotentialError = !isWhitelisted &&
final isTrusted = isWhitelisted || _isJupiterVerifiedForCurrentAddress;
final hasPotentialError = !isTrusted &&
await widget.homeSettingsViewModel
.checkIfERC20TokenContractAddressIsAPotentialScamAddress(
_contractAddressController.text,
);
bool isPotentialScam = hasPotentialError && !isWhitelisted;
bool isPotentialScam = hasPotentialError && !isTrusted;
// Normalize to catch homoglyph spoofing attacks
final tokenSymbol = normalizeHomoglyphs(
@@ -243,7 +259,7 @@ class _EditTokenPageBodyState extends State<EditTokenPageBody> {
// (e.g. fake ETH on Ethereum, fake SOL on Solana)
final nativeSymbol =
widget.homeSettingsViewModel.nativeToken.title.toUpperCase();
if (tokenSymbol == nativeSymbol && !isWhitelisted) {
if (tokenSymbol == nativeSymbol && !isTrusted) {
isPotentialScam = true;
}
@@ -252,7 +268,7 @@ class _EditTokenPageBodyState extends State<EditTokenPageBody> {
if (widget.homeSettingsViewModel.checkIfTokenSymbolMatchesDefaultToken(
tokenSymbol,
) &&
!isWhitelisted) {
!isTrusted) {
isPotentialScam = true;
}
@@ -277,23 +293,20 @@ class _EditTokenPageBodyState extends State<EditTokenPageBody> {
} catch (e) {
showPopUp<void>(
context: context,
builder: (dialogContext) {
return AlertWithOneAction(
builder: (dialogContext) => AlertWithOneAction(
alertTitle: S.current.warning,
alertContent: e.toString(),
buttonText: S.of(context).ok,
buttonAction: () => Navigator.of(dialogContext).pop(),
);
},
),
);
}
};
if (hasPotentialError && !isWhitelisted) {
if (hasPotentialError && !isTrusted) {
showPopUp<void>(
context: context,
builder: (dialogContext) {
return AlertWithTwoActions(
builder: (dialogContext) => AlertWithTwoActions(
alertTitle: S.current.warning,
alertContent: S.current.contract_warning,
rightButtonText: S.of(context).continue_text,
@@ -303,8 +316,7 @@ class _EditTokenPageBodyState extends State<EditTokenPageBody> {
await actionCall();
},
actionLeftButton: () => Navigator.of(dialogContext).pop(),
);
},
),
);
} else {
try {
@@ -312,14 +324,12 @@ class _EditTokenPageBodyState extends State<EditTokenPageBody> {
} catch (e) {
showPopUp<void>(
context: context,
builder: (dialogContext) {
return AlertWithOneAction(
builder: (dialogContext) => AlertWithOneAction(
alertTitle: "Unable to add token",
alertContent: "$e",
buttonText: S.of(context).ok,
buttonAction: () => Navigator.of(context).pop(),
);
},
),
);
}
if (mounted) {
@@ -334,14 +344,12 @@ class _EditTokenPageBodyState extends State<EditTokenPageBody> {
),
),
],
);
},
),
),
],
),
),
);
}
void _getTokenInfo() async {
if (_contractAddressController.text.isNotEmpty) {
@@ -377,8 +385,7 @@ class _EditTokenPageBodyState extends State<EditTokenPageBody> {
}
}
Widget _tokenForm() {
return Form(
Widget _tokenForm() => Form(
key: _formKey,
child: Column(
mainAxisSize: MainAxisSize.min,
@@ -402,7 +409,7 @@ class _EditTokenPageBodyState extends State<EditTokenPageBody> {
size: 75,
),
),
if (_isTokenVerified)
if (_isTokenVerified || _isJupiterVerifiedForCurrentAddress)
Positioned(
bottom: 0,
right: 0,
@@ -425,6 +432,16 @@ class _EditTokenPageBodyState extends State<EditTokenPageBody> {
),
],
),
if (_isJupiterVerifiedForCurrentAddress) ...[
const SizedBox(height: 12),
Text(
S.of(context).token_verified_on_jupiter,
style: Theme.of(context).textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w500,
color: Theme.of(context).colorScheme.primary,
),
),
],
SizedBox(height: 25),
AddressTextField(
controller: _contractAddressController,
@@ -517,5 +534,4 @@ class _EditTokenPageBodyState extends State<EditTokenPageBody> {
],
),
);
}
}
@@ -300,6 +300,7 @@ class _WalletKeysPageBodyState extends State<WalletKeysPageBody>
color: Theme.of(context).colorScheme.surfaceContainer,
),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
@@ -313,21 +314,25 @@ class _WalletKeysPageBodyState extends State<WalletKeysPageBody>
const SizedBox(width: 6),
Expanded(
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Observer(
builder: (BuildContext context) {
return Text(
(widget.walletKeysViewModel.obscurePassphrase)
? "*****"
: widget.walletKeysViewModel.passphrase,
style: Theme.of(context).textTheme.bodyMedium!.copyWith(
fontWeight: FontWeight.w500,
color: Theme.of(context).colorScheme.onSurfaceVariant,
),
);
},
Expanded(
child: Observer(
builder: (BuildContext context) {
return Text(
(widget.walletKeysViewModel.obscurePassphrase)
? "*****"
: widget.walletKeysViewModel.passphrase,
style: Theme.of(context).textTheme.bodyMedium!.copyWith(
fontWeight: FontWeight.w500,
color: Theme.of(context).colorScheme.onSurfaceVariant,
),
);
},
),
),
const SizedBox(width: 6),
Observer(
builder: (BuildContext context) {
return GestureDetector(
+48 -29
View File
@@ -1,3 +1,4 @@
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/utils/responsive_layout_util.dart';
import 'package:dotted_border/dotted_border.dart';
import 'package:flutter/cupertino.dart';
@@ -92,35 +93,53 @@ class LoadingPrimaryButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ConstrainedBox(
constraints: BoxConstraints(maxWidth: ResponsiveLayoutUtilBase.kDesktopMaxWidthConstraint),
child: SizedBox(
width: double.infinity,
height: 52.0,
child: TextButton(
onPressed: (isLoading || isDisabled)
? null
: () {
FocusScope.of(context).unfocus();
onPressed.call();
},
style: ButtonStyle(
backgroundColor: WidgetStateProperty.all(isDisabled ? color.withOpacity(0.5) : color),
shape: WidgetStateProperty.all<RoundedRectangleBorder>(
RoundedRectangleBorder(
borderRadius: BorderRadius.circular(18.0),
),
)),
child: isLoading
? CupertinoActivityIndicator(animating: true, color: textColor)
: Text(
text,
style: Theme.of(context).textTheme.bodyMedium!.copyWith(
fontSize: 15.0,
fontWeight: FontWeight.w600,
color: isDisabled ? textColor.withOpacity(0.5) : textColor,
),
),
final isEnabled = !isLoading && !isDisabled;
// The spinner replaces the label while loading, so the name is kept on a single
// semantics node that also reports the loading and disabled states.
return Semantics(
button: true,
enabled: isEnabled,
label: text,
value: isLoading ? S.of(context).loading : null,
onTap: isEnabled
? () {
FocusScope.of(context).unfocus();
onPressed.call();
}
: null,
excludeSemantics: true,
child: ConstrainedBox(
constraints: BoxConstraints(maxWidth: ResponsiveLayoutUtilBase.kDesktopMaxWidthConstraint),
child: SizedBox(
width: double.infinity,
height: 52.0,
child: TextButton(
onPressed: (isLoading || isDisabled)
? null
: () {
FocusScope.of(context).unfocus();
onPressed.call();
},
style: ButtonStyle(
backgroundColor:
WidgetStateProperty.all(isDisabled ? color.withOpacity(0.5) : color),
shape: WidgetStateProperty.all<RoundedRectangleBorder>(
RoundedRectangleBorder(
borderRadius: BorderRadius.circular(18.0),
),
)),
child: isLoading
? CupertinoActivityIndicator(animating: true, color: textColor)
: Text(
text,
style: Theme.of(context).textTheme.bodyMedium!.copyWith(
fontSize: 15.0,
fontWeight: FontWeight.w600,
color: isDisabled ? textColor.withOpacity(0.5) : textColor,
),
),
),
),
),
);
+9
View File
@@ -151,6 +151,7 @@ abstract class SettingsStoreBase with Store {
required this.mwebNodeUri,
required this.mwebAdDismissed,
required this.balanceHideCounter,
required this.zcashMigrationModalViewed,
required bool initialEnableAutomaticNodeSwitching,
required String initialBackgroundImage,
TransactionPriority? initialBitcoinTransactionPriority,
@@ -766,6 +767,9 @@ abstract class SettingsStoreBase with Store {
(int balanceHideCounter) =>
_sharedPreferences.setInt(PreferencesKey.balanceHideCounter, balanceHideCounter));
reaction((_) => zcashMigrationModalViewed,
(val) => _sharedPreferences.setBool(PreferencesKey.zcashMigrationModalViewed, val));
this.nodes.observe((change) {
if (change.newValue != null && change.key != null) {
_saveCurrentNode(change.newValue!, change.key!);
@@ -1075,6 +1079,9 @@ abstract class SettingsStoreBase with Store {
@observable
bool mwebAdDismissed;
@observable
bool zcashMigrationModalViewed;
final SecureStorage _secureStorage;
final SharedPreferences _sharedPreferences;
@@ -1350,6 +1357,7 @@ abstract class SettingsStoreBase with Store {
final enableAutomaticNodeSwitching =
sharedPreferences.getBool(PreferencesKey.enableAutomaticNodeSwitching) ?? true;
final backgroundImage = sharedPreferences.getString(PreferencesKey.backgroundImage) ?? '';
final zcashMigrationModalViewed = sharedPreferences.getBool(PreferencesKey.zcashMigrationModalViewed) ?? false;
// If no value
if (pinLength == null || pinLength == 0) {
@@ -1762,6 +1770,7 @@ abstract class SettingsStoreBase with Store {
initialBuiltinTor: builtinTor,
mwebAdDismissed: mwebAdDismissed,
balanceHideCounter: balanceHideCounter,
zcashMigrationModalViewed: zcashMigrationModalViewed
);
}
@@ -96,6 +96,7 @@ abstract class DashboardViewModelBase with Store {
isShowFirstYatIntroduction = false,
isShowSecondYatIntroduction = false,
isShowThirdYatIntroduction = false,
isMigratingToIronwood = false,
filterItems = [],
exchangeFilterItems = [],
subname = '',
@@ -250,6 +251,8 @@ abstract class DashboardViewModelBase with Store {
reaction((_) => tradesStore.trades, (_) => tradeMonitor.monitorActiveTrades(wallet.id));
addZcashMigrationReaction();
tradeMonitor.monitorActiveTrades(wallet.id);
}
@@ -374,6 +377,22 @@ abstract class DashboardViewModelBase with Store {
);
}
@observable
ReactionDisposer? zcashMigrationReactionDisposer;
@action
void addZcashMigrationReaction() {
zcashMigrationReactionDisposer?.reaction.dispose();
zcashMigrationReactionDisposer = null;
if (wallet.type == WalletType.zcash) {
zcashMigrationReactionDisposer = reaction((_) => wallet.balance.values.first, (_) async {
isMigratingToIronwood =
wallet.type == WalletType.zcash && await zcash!.hasOrchardMigratableBalance(wallet);
});
}
}
@computed
bool get isSyncHeavy {
if ([
@@ -1270,6 +1289,8 @@ abstract class DashboardViewModelBase with Store {
name = wallet.name;
loadFilterItems();
addZcashMigrationReaction();
if (wallet.type == WalletType.monero) {
subname = monero!.getCurrentAccount(wallet).label;
@@ -1551,6 +1572,9 @@ abstract class DashboardViewModelBase with Store {
}
}
@observable
bool isMigratingToIronwood;
String getTransactionType(TransactionInfo tx) {
if (wallet.type == WalletType.bitcoin) {
if (tx.isReplaced == true) return ' (replaced)';
@@ -408,6 +408,14 @@ abstract class HomeSettingsViewModelBase with Store {
return null;
}
Future<bool?> checkIfTokenIsVerifiedOnJupiter(String mintAddress) async {
if (_balanceViewModel.wallet.type != WalletType.solana) {
return null;
}
return solana!.isTokenVerifiedOnJupiter(_balanceViewModel.wallet, mintAddress);
}
CryptoCurrency get nativeToken => _balanceViewModel.wallet.currency;
void _updateFiatPrices(CryptoCurrency token) async {
@@ -1,43 +1,43 @@
import 'dart:async';
import 'dart:io';
import "dart:async";
import "dart:convert";
import "dart:io";
import 'package:cake_wallet/bitcoin/bitcoin.dart';
import 'package:cake_wallet/entities/hardware_wallet/hardware_wallet_device.dart';
import 'package:cake_wallet/evm/evm.dart';
import 'package:cake_wallet/main.dart';
import 'package:cake_wallet/monero/monero.dart';
import 'package:cake_wallet/new-ui/widgets/hardware_wallet/proceed_on_device_sheet.dart';
import 'package:cake_wallet/view_model/hardware_wallet/hardware_wallet_view_model.dart';
import 'package:cake_wallet/wallet_type_utils.dart';
import 'package:cw_core/hardware/device_connection_type.dart';
import 'package:cw_core/hardware/hardware_wallet_service.dart';
import 'package:cw_core/utils/print_verbose.dart';
import 'package:cw_core/wallet_base.dart';
import 'package:cw_core/wallet_info.dart';
import 'package:cw_core/wallet_type.dart';
import 'package:device_info_plus/device_info_plus.dart';
import 'package:flutter/material.dart';
import 'package:mobx/mobx.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:trezor_connect/trezor_connect.dart' as connect_sdk;
import 'package:trezor_flutter/trezor_flutter.dart' as sdk;
import "package:cake_wallet/bitcoin/bitcoin.dart";
import "package:cake_wallet/core/secure_storage.dart";
import "package:cake_wallet/entities/hardware_wallet/hardware_wallet_device.dart";
import "package:cake_wallet/evm/evm.dart";
import "package:cake_wallet/main.dart";
import "package:cake_wallet/monero/monero.dart";
import "package:cake_wallet/new-ui/widgets/hardware_wallet/proceed_on_device_sheet.dart";
import "package:cake_wallet/view_model/hardware_wallet/hardware_wallet_view_model.dart";
import "package:cake_wallet/wallet_type_utils.dart";
import "package:cw_core/encryption_file_utils.dart";
import "package:cw_core/hardware/device_connection_type.dart";
import "package:cw_core/hardware/hardware_wallet_service.dart";
import "package:cw_core/key.dart";
import "package:cw_core/root_dir.dart";
import "package:cw_core/utils/print_verbose.dart";
import "package:cw_core/wallet_base.dart";
import "package:cw_core/wallet_info.dart";
import "package:cw_core/wallet_type.dart";
import "package:device_info_plus/device_info_plus.dart";
import "package:flutter/material.dart";
import "package:mobx/mobx.dart";
import "package:permission_handler/permission_handler.dart";
import "package:trezor_connect/trezor_connect.dart" as connect_sdk;
import "package:trezor_flutter/trezor_flutter.dart" as sdk;
part 'trezor_connect_view_model.g.dart';
part "trezor_connect_view_model.g.dart";
class TrezorConnectViewModel = TrezorConnectViewModelBase with _$TrezorConnectViewModel;
abstract class TrezorConnectViewModelBase extends HardwareWalletViewModel with Store {
final connect_sdk.TrezorConnect trezorConnect;
late final sdk.TrezorInterface trezorBLE;
late final sdk.TrezorInterface trezorUSB;
sdk.ThpState _state = sdk.ThpState();
TrezorConnectViewModelBase(this.trezorConnect) {
TrezorConnectViewModelBase(this.trezorConnect, this._secureStorage) {
if (_doesSupportHardwareWallets) {
reaction((_) => isBleEnabled, (_) {
if (isBleEnabled) _initBLE();
if (isBleEnabled) {
_initBLE();
}
});
updateBleState();
@@ -47,11 +47,21 @@ abstract class TrezorConnectViewModelBase extends HardwareWalletViewModel with S
}
}
final connect_sdk.TrezorConnect trezorConnect;
final SecureStorage _secureStorage;
late final sdk.TrezorInterface trezorBLE;
late final sdk.TrezorInterface trezorUSB;
sdk.ThpState? _state;
bool get _doesSupportHardwareWallets {
if (isMoneroOnly) {
return DeviceConnectionType.supportedConnectionTypes(
WalletType.monero, HardwareWalletType.trezor, Platform.isIOS)
.isNotEmpty;
WalletType.monero,
HardwareWalletType.trezor,
Platform.isIOS,
).isNotEmpty;
}
return true;
@@ -63,9 +73,11 @@ abstract class TrezorConnectViewModelBase extends HardwareWalletViewModel with S
if (isBleEnabled && !_bleIsInitialized) {
trezorBLE = sdk.TrezorInterface.ble(
onPermissionRequest: (_) async {
if (Platform.isMacOS) return true;
if (Platform.isMacOS) {
return true;
}
Map<Permission, PermissionStatus> statuses = await [
final Map<Permission, PermissionStatus> statuses = await [
Permission.bluetoothScan,
Permission.bluetoothConnect,
Permission.bluetoothAdvertise,
@@ -73,7 +85,7 @@ abstract class TrezorConnectViewModelBase extends HardwareWalletViewModel with S
return statuses.values.where((status) => status.isDenied).isEmpty;
},
bleOptions: sdk.BluetoothOptions(maxScanDuration: Duration(minutes: 5)),
bleOptions: sdk.BluetoothOptions(maxScanDuration: const Duration(minutes: 5)),
);
_bleIsInitialized = true;
}
@@ -99,21 +111,27 @@ abstract class TrezorConnectViewModelBase extends HardwareWalletViewModel with S
final newState = bleState == sdk.AvailabilityState.poweredOn;
if (newState != isBleEnabled) isBleEnabled = newState;
if (newState != isBleEnabled) {
isBleEnabled = newState;
}
}
@override
Stream<HardwareWalletDevice> scanForBleDevices() =>
trezorBLE.scan().map((d) => TrezorHardwareWalletDevice(d));
trezorBLE.scan().map(TrezorHardwareWalletDevice.new);
@override
Future<List<HardwareWalletDevice>> getAllUsbDevices() => trezorUSB.devices
.then((devices) => devices.map((d) => TrezorHardwareWalletDevice(d)).toList());
Future<List<HardwareWalletDevice>> getAllUsbDevices() =>
trezorUSB.devices.then((devices) => devices.map(TrezorHardwareWalletDevice.new).toList());
@override
Future<void> stopScanning() async {
if (_bleIsInitialized) await trezorBLE.stopScanning();
if (!Platform.isIOS) await trezorUSB.stopScanning();
if (_bleIsInitialized) {
await trezorBLE.stopScanning();
}
if (!Platform.isIOS) {
await trezorUSB.stopScanning();
}
}
sdk.TrezorClient? _client;
@@ -127,10 +145,17 @@ abstract class TrezorConnectViewModelBase extends HardwareWalletViewModel with S
@override
@action
Future<bool> connectDevice(HardwareWalletDevice device, WalletType type,
[bool isRetry = false]) async {
if (!(device is TrezorHardwareWalletDevice)) return false;
if (isConnecting) return false;
Future<bool> connectDevice(
HardwareWalletDevice device,
WalletType type, [
bool isRetry = false,
]) async {
if (device is! TrezorHardwareWalletDevice) {
return false;
}
if (isConnecting) {
return false;
}
isConnecting = true;
paringState = TrezorParingState.initial;
@@ -140,16 +165,19 @@ abstract class TrezorConnectViewModelBase extends HardwareWalletViewModel with S
final connection = await trezorInterface.connect(device.device);
if (!isRetry) {
showModalBottomSheet(
context: navigatorKey.currentContext!,
isScrollControlled: true,
isDismissible: false,
enableDrag: false,
useSafeArea: true,
builder: (context) => HardwareWalletProceedOnDeviceSheet(
unawaited(
showModalBottomSheet(
context: navigatorKey.currentContext!,
isScrollControlled: true,
isDismissible: false,
enableDrag: false,
useSafeArea: true,
builder: (_) => HardwareWalletProceedOnDeviceSheet(
hardwareWalletType: hardwareWalletType,
trezorConnectVM: this,
onRetry: () => connectDevice(device, type, true)),
onRetry: () => connectDevice(device, type, true),
),
),
);
}
@@ -159,15 +187,18 @@ abstract class TrezorConnectViewModelBase extends HardwareWalletViewModel with S
final res = await _pinCompleter!.future;
paringState = TrezorParingState.verifyingPin;
if (res == null) throw Exception();
if (res == null) {
throw Exception();
}
return res;
}
final deviceInfo = await _deviceName;
_state ??= await _getState();
_client = sdk.TrezorClient.getClientForConnection(
connection,
_state,
_state!,
"Cake Wallet",
deviceInfo,
onPinCode,
@@ -175,6 +206,16 @@ abstract class TrezorConnectViewModelBase extends HardwareWalletViewModel with S
await _client!.createChannel();
if (!_state!.pairingCredentials.any((c) => c.autoconnect == true)) {
if (_client case final sdk.TrezorClientV2 clientV2) {
try {
final auto = await clientV2.getAutoPairingCredentials();
_state!.setPairingCredentials([auto]);
await _saveState();
} catch (_) {}
}
}
paringState = TrezorParingState.success;
return true;
} catch (e) {
@@ -192,8 +233,12 @@ abstract class TrezorConnectViewModelBase extends HardwareWalletViewModel with S
Future<String> get _deviceName async {
final deviceInfo = DeviceInfoPlugin();
if (Platform.isAndroid) return (await deviceInfo.androidInfo).model;
if (Platform.isIOS) return (await deviceInfo.iosInfo).name;
if (Platform.isAndroid) {
return (await deviceInfo.androidInfo).model;
}
if (Platform.isIOS) {
return (await deviceInfo.iosInfo).name;
}
return "Computer";
}
@@ -231,9 +276,61 @@ abstract class TrezorConnectViewModelBase extends HardwareWalletViewModel with S
case WalletType.polygon:
return evm!.setHardwareWalletService(wallet, getHardwareWalletService(wallet.type));
default:
throw Exception('Unexpected wallet type: ${wallet.type} for trezor');
throw Exception("Unexpected wallet type: ${wallet.type} for trezor");
}
}
final EncryptionFileUtils _encryptionFileUtils = encryptionFileUtilsFor(true);
static const String _secureStorageKey = "com.cakewallet.trezor/thp_state";
Future<String> get _thpJsonFile async => "${(await getAppDir()).path}/thp_state.json.enc";
Future<sdk.ThpState> _getState() async {
final password = await _secureStorage.read(key: _secureStorageKey);
if (password == null) {
return _saveState();
}
try {
final state = await _encryptionFileUtils.read(path: await _thpJsonFile, password: password);
return sdk.ThpState.fromJson(state);
} catch (_) {
return _saveState();
}
}
Future<sdk.ThpState> _saveState() async {
try {
final password = generateKey();
await _secureStorage.write(key: _secureStorageKey, value: password);
final file = File(await _thpJsonFile);
if (!file.existsSync()) {
file.createSync();
}
final state = _state ?? sdk.ThpState();
await _encryptionFileUtils.write(
path: file.path,
password: password,
data: jsonEncode(state.toMap()),
);
_state = state;
return state;
} catch (_) {
throw Exception("Unable to save Trezor State");
}
}
Future<bool> syncKeyImages(WalletBase wallet) async {
if (wallet.type == WalletType.monero) {
try {
await monero!.syncTrezor(wallet);
} catch (_) {
return false;
}
}
return true;
}
}
abstract class TrezorParingState {
@@ -241,6 +338,7 @@ abstract class TrezorParingState {
static TrezorParingState enterPin = EnterPinTrezorParingState();
static TrezorParingState verifyingPin = VerifyingPinTrezorParingState();
static TrezorParingState success = SuccessTrezorParingState();
static TrezorParingState fail(String message) => FailTrezorParingState(message);
}
@@ -253,7 +351,7 @@ class VerifyingPinTrezorParingState extends TrezorParingState {}
class SuccessTrezorParingState extends TrezorParingState {}
class FailTrezorParingState extends TrezorParingState {
final String message;
FailTrezorParingState(this.message);
final String message;
}
+1 -1
View File
@@ -47,7 +47,7 @@ class LinkViewModel {
case 'send':
return Routes.send;
case 'receive':
return Routes.addressPage;
return Routes.newReceivePage;
default:
return null;
}
+13
View File
@@ -176,6 +176,14 @@ class CWZcash extends Zcash {
return getSelectedAddressType(wallet) == ZcashReceivePageOption.transparentRotated;
}
/// The disposable transparent type is the only Zcash address type that
/// rotates. The public transparent address, both shielded types and the
/// unified address are all derived from the account and stay the same.
@override
bool isRotatingAddressOption(ReceivePageOption option) {
return option == ZcashReceivePageOption.transparentRotated;
}
@override
dynamic getZcashAddressType(ReceivePageOption option) {
return (option as ZcashReceivePageOption).toType();
@@ -213,6 +221,11 @@ class CWZcash extends Zcash {
bool ironwoodActive(WalletAddresses walletAddresses) {
return (walletAddresses as ZcashWalletAddresses).ironwoodActive;
}
@override
Future<bool> hasOrchardMigratableBalance(WalletBase wallet) {
return (wallet as ZcashWallet).hasOrchardMigratableBalance();
}
}
const wordList = [
+3
View File
@@ -0,0 +1,3 @@
<svg width="75" height="75" viewBox="0 0 75 75" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.7438 43.75H18.9104C19.391 39.6528 21.258 36.1979 24.5115 33.3854C27.7642 30.5729 31.6076 29.1667 36.0417 29.1667C38.8625 29.1667 41.8701 30.0736 45.0646 31.8875C48.259 33.7007 50.8979 36.266 52.9812 39.5833H43.4292V43.75H60.0958V27.0833H55.9292V36.5865C53.3868 32.6656 50.2767 29.7542 46.599 27.8521C42.9205 25.9507 39.4014 25 36.0417 25C30.4062 25 25.5944 26.8083 21.6063 30.425C17.6188 34.041 15.3313 38.4826 14.7438 43.75ZM37.5135 75C32.3281 75 27.4528 74.016 22.8875 72.0479C18.3229 70.0799 14.3521 67.409 10.975 64.0354C7.59792 60.6618 4.92465 56.6944 2.95521 52.1333C0.985069 47.5729 0 42.6997 0 37.5135C0 32.3281 0.984027 27.4528 2.95208 22.8875C4.92014 18.3229 7.59097 14.3521 10.9646 10.975C14.3382 7.59792 18.3056 4.92465 22.8667 2.95521C27.4271 0.985069 32.3003 0 37.4865 0C42.6719 0 47.5472 0.984031 52.1125 2.95209C56.6771 4.92014 60.6479 7.59097 64.025 10.9646C67.4021 14.3382 70.0753 18.3056 72.0448 22.8667C74.0149 27.4271 75 32.3003 75 37.4865C75 42.6719 74.016 47.5472 72.0479 52.1125C70.0799 56.6771 67.409 60.6479 64.0354 64.025C60.6618 67.4021 56.6944 70.0753 52.1333 72.0448C47.5729 74.0149 42.6997 75 37.5135 75Z" fill="#8C9FBB"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,19 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_23056_316844)">
<path d="M-0.046875 7.78076C-0.046875 4.9805 -0.046875 3.58037 0.498092 2.51081C0.977459 1.57 1.74236 0.805096 2.68317 0.325729C3.75273 -0.219238 5.15286 -0.219238 7.95312 -0.219238H15.9531C18.7534 -0.219238 20.1535 -0.219238 21.2231 0.325729C22.1639 0.805096 22.9288 1.57 23.4082 2.51081C23.9531 3.58037 23.9531 4.9805 23.9531 7.78076V15.7808C23.9531 18.581 23.9531 19.9812 23.4082 21.0507C22.9288 21.9915 22.1639 22.7564 21.2231 23.2358C20.1535 23.7808 18.7534 23.7808 15.9531 23.7808H7.95312C5.15286 23.7808 3.75273 23.7808 2.68317 23.2358C1.74236 22.7564 0.977459 21.9915 0.498092 21.0507C-0.046875 19.9812 -0.046875 18.581 -0.046875 15.7808V7.78076Z" fill="url(#paint0_linear_23056_316844)"/>
<path d="M6.53906 11.6423C6.53906 12.2751 6.65859 12.8903 6.89766 13.488C7.13672 14.0856 7.50938 14.6376 8.01563 15.1438L8.22656 15.3548V14.1313C8.22656 13.8923 8.30742 13.6919 8.46914 13.5302C8.63086 13.3685 8.83125 13.2876 9.07031 13.2876C9.30938 13.2876 9.50977 13.3685 9.67148 13.5302C9.8332 13.6919 9.91406 13.8923 9.91406 14.1313V17.5063C9.91406 17.7454 9.8332 17.9458 9.67148 18.1075C9.50977 18.2692 9.30938 18.3501 9.07031 18.3501H5.69531C5.45625 18.3501 5.25586 18.2692 5.09414 18.1075C4.93242 17.9458 4.85156 17.7454 4.85156 17.5063C4.85156 17.2673 4.93242 17.0669 5.09414 16.9052C5.25586 16.7435 5.45625 16.6626 5.69531 16.6626H7.17188L6.83438 16.3673C6.10312 15.7204 5.58984 14.9821 5.29453 14.1524C4.99922 13.3228 4.85156 12.486 4.85156 11.6423C4.85156 10.3204 5.18906 9.12158 5.86406 8.0458C6.53906 6.97002 7.44609 6.14385 8.58516 5.56729C8.78203 5.45479 8.98945 5.44775 9.20742 5.54619C9.42539 5.64463 9.56953 5.80635 9.63984 6.03135C9.71016 6.24229 9.70664 6.45322 9.6293 6.66416C9.55195 6.8751 9.41484 7.03682 9.21797 7.14932C8.40234 7.59932 7.75195 8.22158 7.2668 9.01611C6.78164 9.81064 6.53906 10.686 6.53906 11.6423ZM16.6641 11.5579C16.6641 10.9251 16.5445 10.3099 16.3055 9.71221C16.0664 9.11455 15.6938 8.5626 15.1875 8.05635L14.9766 7.84541V9.06885C14.9766 9.30791 14.8957 9.5083 14.734 9.67002C14.5723 9.83174 14.3719 9.9126 14.1328 9.9126C13.8938 9.9126 13.6934 9.83174 13.5316 9.67002C13.3699 9.5083 13.2891 9.30791 13.2891 9.06885V5.69385C13.2891 5.45479 13.3699 5.25439 13.5316 5.09268C13.6934 4.93096 13.8938 4.8501 14.1328 4.8501H17.5078C17.7469 4.8501 17.9473 4.93096 18.109 5.09268C18.2707 5.25439 18.3516 5.45479 18.3516 5.69385C18.3516 5.93291 18.2707 6.1333 18.109 6.29502C17.9473 6.45674 17.7469 6.5376 17.5078 6.5376H16.0313L16.3688 6.83291C17.0578 7.52197 17.5605 8.2708 17.877 9.07939C18.1934 9.88799 18.3516 10.7142 18.3516 11.5579C18.3516 12.8798 18.0141 14.0786 17.3391 15.1544C16.6641 16.2302 15.757 17.0563 14.618 17.6329C14.4211 17.7454 14.2137 17.7524 13.9957 17.654C13.7777 17.5556 13.6336 17.3938 13.5633 17.1688C13.493 16.9579 13.4965 16.747 13.5738 16.536C13.6512 16.3251 13.7883 16.1634 13.9852 16.0509C14.8008 15.6009 15.4512 14.9786 15.9363 14.1841C16.4215 13.3896 16.6641 12.5142 16.6641 11.5579Z" fill="url(#paint1_linear_23056_316844)"/>
</g>
<defs>
<linearGradient id="paint0_linear_23056_316844" x1="11.9531" y1="-0.219238" x2="11.9531" y2="23.7808" gradientUnits="userSpaceOnUse">
<stop stop-color="#F2C738"/>
<stop offset="1" stop-color="#745C0E"/>
</linearGradient>
<linearGradient id="paint1_linear_23056_316844" x1="11.6016" y1="4.8501" x2="11.6016" y2="18.3501" gradientUnits="userSpaceOnUse">
<stop stop-color="white"/>
<stop offset="1" stop-color="#E3D376"/>
</linearGradient>
<clipPath id="clip0_23056_316844">
<rect width="24" height="24" rx="5" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

+36 -2
View File
@@ -76,6 +76,7 @@
"approve_tokens": "الموافقة على الرموز",
"apps": "التطبيقات",
"arbiscan_history": "سجل ArbiScan",
"are_you_sure_exit": "هل أنت متأكد أنك تريد الخروج؟",
"arrive_in_this_address": "سيصل ${currency} ${tag} إلى هذا العنوان",
"ascending": "تصاعديًا",
"ask_each_time": "اسأل في كل مرة",
@@ -89,6 +90,7 @@
"auto_generate_addresses": "إنشاء العناوين تلقائيًا",
"auto_generate_subaddresses": "إنشاء العناوين الفرعية تلقائيًا",
"automatic": "تلقائي",
"available": "متاح",
"available_balance": "الرصيد المتاح",
"available_balance_description": "يشير “Available Balance” أو “Confirmed Balance” إلى الأموال التي يمكن إنفاقها فورًا. إذا ظهرت الأموال في الرصيد السفلي ولكن ليس في الرصيد العلوي، فعليك الانتظار بضع دقائق حتى تحصل الأموال الواردة على المزيد من تأكيدات الشبكة. بعد حصولها على المزيد من التأكيدات، ستصبح قابلة للإنفاق.",
"avg_savings": "متوسط التوفير",
@@ -125,6 +127,7 @@
"block_remaining": "كتلة واحدة متبقية",
"Blocks_remaining": "${status} كتل متبقية",
"bluetooth": "بلوتوث",
"bridging": "جسر العملات",
"bright_theme": "ساطع",
"bscscan_history": "سجل BSCScan",
"bump_fee": "زيادة الرسوم",
@@ -216,6 +219,8 @@
"color_theme": "سمة الألوان",
"coming_soon_tag": "قريبًا",
"commit_transaction_amount_fee": "تأكيد المعاملة\nالمبلغ: ${amount}\nالرسوم: ${fee}",
"compatible_services": "الخدمات المتوافقة",
"compatible_services_desc": "استخدم أداة المسح لقراءة الأنواع التالية من رموز QR المدعومة في Cake Wallet:",
"configure": "تهيئة",
"confirm": "تأكيد",
"confirm_delete_template": "سيؤدي هذا الإجراء إلى حذف هذا القالب. هل ترغب في المتابعة؟",
@@ -279,6 +284,7 @@
"creating_new_wallet": "جارٍ إنشاء محفظة جديدة",
"creating_new_wallet_error": "خطأ: ${description}",
"creation_date": "تاريخ الإنشاء",
"crypto_addresses": "عناوين العملات المشفرة",
"csv_nothing_to_export": "لا يوجد شيء للتصدير",
"current_swap": "المبادلة الحالية",
"current_wallet": "المحفظة الحالية",
@@ -301,6 +307,7 @@
"default_sell_provider": "مزود البيع الافتراضي",
"delete": "حذف",
"delete_account": "حذف الحساب",
"delete_this_node": "حذف هذه العقدة",
"delete_wallet": "حذف المحفظة",
"delete_wallet_confirm_message": "هل أنت متأكد أنك تريد حذف محفظة ${wallet_name}؟",
"deleteConnectionConfirmationPrompt": "هل أنت متأكد أنك تريد حذف الاتصال بـ",
@@ -330,6 +337,7 @@
"deuro_savings_welcome_description": "dEURO هو عملة مستقرة لامركزية بالكامل، مضمونة بضمانات ومربوطة باليورو — آمنة، متعددة الاستخدامات، ومقاومة للرقابة دون الحاجة إلى الاعتماد على الأوراكل. 1 dEURO = 1 EURO.",
"deuro_tooltip_no_eth": "لتفعيل dEURO، يجب أن يكون لديك ETH في محفظتك.",
"deuro_tx_commited_content": "قد يستغرق الأمر بضع ثوانٍ حتى يتم تأكيد المعاملة وتنعكس على الشاشة",
"device_confirmation": "تأكيد الجهاز",
"device_is_signing": "الجهاز يقوم بالتوقيع",
"dfx_option_description": "اشترِ العملات المشفرة بـ EUR و CHF. للعملاء الأفراد والشركات في أوروبا",
"did_you_back_up_seeds": "هل قمت بعمل نسخة احتياطية لجميع عبارات الاسترداد الخاصة بك؟",
@@ -466,6 +474,8 @@
"extracted_address_content": "ستقوم بإرسال الأموال إلى\n${recipient_name}",
"failed_authentication": "فشلت المصادقة. ${state_error}",
"faq": "الأسئلة الشائعة",
"favorite_token": "التوكن المفضل",
"favorite_token_desc": "سيظهر رصيد التوكن المفضل على بطاقة الرصيد.",
"features": "الميزات",
"fee": "رسوم",
"fee_less_than_min": "الرسوم المحددة أقل من الحد الأدنى. يُرجى زيادة الرسوم لتتمكن من إرسال المعاملة",
@@ -491,6 +501,7 @@
"frozen": "مجمَّد",
"frozen_balance": "الرصيد المجمّد",
"full_balance": "الرصيد الكامل",
"gallery": "المعرض",
"gas_exceeds_allowance": "الغاز المطلوب للمعاملة يتجاوز الحدّ المسموح به.",
"gas_price": "سعر الغاز",
"general": "عام",
@@ -526,10 +537,10 @@
"how_to_connect": "كيفية الاتصال",
"how_to_use": "كيفية الاستخدام",
"how_to_use_card": "كيفية استخدام هذه البطاقة",
"hww_exit_desc": "سيؤدي هذا إلى إنهاء عملية الإقران الجارية مع جهازك الصلب",
"i_understand": "أفهم",
"icon_style": "نمط الأيقونة",
"id": "المعرّف: ",
"if_you_dont_see_your_device": "إذا لم يظهر جهازك أعلاه، يُرجى التأكد من أن Ledger قيد التشغيل ومفتوح القفل!",
"ignor": "تجاهل",
"import": "استيراد",
"importNFTs": "استيراد رموز NFT",
@@ -541,6 +552,7 @@
"infobox_auto_address": "سيدور عنوان الاستلام الخاص بك تلقائيًا في كل مرة تستلم فيها معاملة",
"infobox_multichain": "استخدم هذا العنوان لاستلام أي توكن أو مقتنى على",
"infobox_rotation": "سيتم تدوير عنوان الاستلام الخاص بك في كل مرة تُغلق فيها هذه الشاشة وتعيد فتحها",
"input": "إدخال",
"inputs": "المدخلات",
"insufficient_funds_for_tx": "أموال غير كافية لتنفيذ المعاملة بنجاح.",
"insufficient_lamport_for_tx": "ليس لديك ما يكفي من SOL لتغطية المعاملة ورسومها. يُرجى إضافة المزيد من SOL إلى محفظتك أو تقليل مبلغ SOL الذي ترسله.",
@@ -606,6 +618,7 @@
"manage_pow_nodes": "إدارة عُقَد PoW",
"manage_providers": "إدارة المزوّدين",
"manage_yats": "إدارة Yats",
"manual_input": "إدخال يدوي",
"mark_as_redeemed": "وضع علامة كمسترد",
"market_place": "المتجر",
"mask": "قناع",
@@ -651,6 +664,7 @@
"nanogpt_subtitle": "جميع أحدث النماذج (GPT-5.3، Claude 4.6).\nبدون اشتراك، ادفع بالعملات المشفرة.",
"narrow": "ضيق",
"network": "الشبكة",
"networks": "الشبكات",
"new_first_wallet_text": "الحفاظ على أمان عملاتك المشفرة سهل للغاية",
"new_node_testing": "اختبار العقدة الجديدة",
"new_subaddress_create": "إنشاء",
@@ -679,8 +693,10 @@
"node_new": "عقدة جديدة",
"node_port": "منفذ العقدة",
"node_reset_settings_title": "إعادة تعيين الإعدادات",
"node_share_desc": "امسح رمز QR هذا من شاشة المسح لاستيراد هذه العقدة.",
"node_test": "اختبار",
"nodes": "العُقَد",
"nodes_desc": "إدارة العقد الموجودة أو إضافة عقدة مخصصة.",
"nodes_list_reset_to_default_message": "هل أنت متأكد أنك تريد إعادة تعيين الإعدادات إلى الإعدادات الافتراضية؟",
"none_of_selected_providers_can_exchange": "لا يمكن لأيٍّ من المزوّدين المحدّدين إجراء هذه المبادلة",
"noNFTYet": "لا توجد رموز NFT بعد",
@@ -690,6 +706,7 @@
"note_tap_to_change": "ملاحظة (اضغط للتغيير)",
"notification_permission_denied": "تم رفض إذن الإشعارات بشكل دائم. يُرجى تمكينه يدويًا من الإعدادات",
"nullURIError": "URI فارغ",
"ocp_desc": "ادفع بالعملات المشفرة في المتاجر",
"offer_expires_in": "ينتهي العرض خلال: ",
"offline": "غير متصل",
"ok": "موافق",
@@ -716,8 +733,13 @@
"outputs": "المخرجات",
"overshot": "تجاوز الحد",
"overwrite_amount": "استبدال المبلغ",
"pairing_code": "رمز الإقران",
"pairing_code_desc_1": "سيعرض جهازك رمز إقران.",
"pairing_code_desc_2": "أدخله هنا للمتابعة",
"pairing_error": "خطأ في الإقران",
"pairingInvalidEvent": "حدث إقران غير صالح",
"passphrase": "عبارة المرور (اختياري)",
"passphrase_view_keys": "عبارة المرور",
"passphrases_doesnt_match": "عبارتا المرور غير متطابقتين، يرجى المحاولة مرة أخرى",
"password": "كلمة المرور",
"paste": "لصق",
@@ -733,6 +755,7 @@
"payjoin_unavailable_sheet_content": "يتطلب استلام معاملة Payjoin أن يكون لديك بيتكوين جاهز للاستخدام.\n\nبمجرد أن تحتوي محفظتك على رصيد، سيتم تفعيل Payjoin تلقائيًا.",
"payjoin_unavailable_sheet_title": "لماذا Payjoin غير متاح؟",
"payment_id": "معرّف الدفع: ",
"payment_invoices": "فواتير الدفع",
"payment_made_easy": "المدفوعات أصبحت أسهل",
"payment_was_received": "تم استلام دفعتك.",
"payments": "المدفوعات",
@@ -888,6 +911,7 @@
"save": "حفظ",
"save_backup_password": "يرجى التأكد من أنك حفظت كلمة مرور النسخة الاحتياطية. لن تتمكن من استيراد ملفات النسخ الاحتياطي بدونها.",
"save_backup_password_alert": "حفظ كلمة مرور النسخة الاحتياطية",
"save_contact": "حفظ جهة الاتصال",
"save_to_downloads": "حفظ في التنزيلات",
"saved_the_trade_id": "لقد حفظت معرّف الصفقة",
"savings": "المدخرات",
@@ -1037,6 +1061,7 @@
"setup_your_debit_card": "قم بإعداد بطاقة الخصم الخاصة بك",
"share": "مشاركة",
"share_address": "مشاركة العنوان",
"share_this_node": "مشاركة هذه العقدة",
"shared_seed_wallet_groups": "مجموعات محافظ عبارة الاسترداد المشتركة",
"shared_seed_wallets": "محافظ العبارة الأولية المشتركة",
"show": "إظهار",
@@ -1044,6 +1069,7 @@
"show_balance": "اضغط مطولًا لإظهار الرصيد",
"show_balance_send_page": "انقر للكشف",
"show_balance_toast": "اضغط مطولًا لإخفاء الرصيد أو إظهاره",
"show_combined_balance": "إظهار الرصيد المجمّع",
"show_details": "عرض التفاصيل",
"show_hidden_addresses": "إظهار العناوين المخفية",
"show_keys": "إظهار عبارة الاسترداد/المفاتيح",
@@ -1109,6 +1135,7 @@
"swap_providers": "مزودو المبادلة",
"sweeping_wallet": "محفظة السحب الشامل",
"sweeping_wallet_alert": "لن يستغرق هذا وقتًا طويلًا. لا تغادر هذه الشاشة وإلا فقد تُفقد الأموال المُسحوبة.",
"swipe_to_bridge": "اسحب لإجراء الجسر",
"swipe_to_send": "اسحب للإرسال",
"switch_wallet": "تبديل المحفظة",
"switchToETHWallet": "يرجى التبديل إلى محفظة Ethereum والمحاولة مرة أخرى",
@@ -1149,6 +1176,7 @@
"testnet_coins_no_value": "عملات شبكة الاختبار (Testnet) لا قيمة لها",
"third_intro_content": "توجد Yats خارج Cake Wallet أيضًا. يمكن استبدال أي عنوان محفظة في العالم بـ Yat!",
"third_intro_title": "Yat يعمل بسلاسة مع الآخرين",
"this_can_take_few_seconds": "قد يستغرق هذا بضع ثوانٍ",
"this_pair_is_not_supported_warning": "هذا الزوج غير مدعوم مع منصّة/منصّات التداول المحددة حاليًا. يُرجى اختيار منصّة تداول أخرى.",
"thorchain_contract_address_not_supported": "THORChain لا يدعم الإرسال إلى عنوان عقد",
"thorchain_taproot_address_not_supported": "لا يدعم مزوّد ThorChain عناوين Taproot. يُرجى تغيير العنوان أو اختيار مزوّد آخر.",
@@ -1162,6 +1190,7 @@
"token_decimal": "عدد المنازل العشرية للتوكن (مثال: USDT)",
"token_name": "اسم التوكن (مثال: Tether)",
"token_symbol": "رمز التوكن (مثل: USDT)",
"token_verified_on_jupiter": "تم التحقق من هذا الرمز المميز على Jupiter",
"tokenID": "المعرّف",
"tokens": "التوكنات",
"tokens_strong_warning": "لا تُرسل الرموز المميّزة إلى هذا العنوان أبداً!",
@@ -1290,6 +1319,7 @@
"username": "اسم المستخدم",
"username_available": "اسم المستخدم متاح",
"username_character_error": "يجب أن تحتوي أسماء المستخدمين فقط على",
"username_check_your_network": "تعذّر التحقق من اسم المستخدم. يُرجى التحقق من اتصالك بالشبكة.",
"username_length_error": "يجب أن تتكون أسماء المستخدمين من 6 إلى 32 حرفًا أو رقمًا.",
"username_length_error_1_64": "يجب أن تحتوي أسماء المستخدمين على 1 إلى 64 حرفًا أو رقمًا.",
"username_not_available": "اسم المستخدم هذا غير متاح.",
@@ -1300,6 +1330,7 @@
"verify_message": "التحقق من الرسالة",
"verify_seed": "تحقق من عبارة الاسترداد",
"verify_with_2fa": "تحقق عبر Cake 2FA",
"verifying_code": "جارٍ التحقق من الرمز",
"version": "الإصدار ${currentVersion}",
"view_all": "عرض الكل",
"view_in_block_explorer": "عرض في مستكشف الكتل",
@@ -1311,6 +1342,7 @@
"waitFewSecondForTxUpdate": "يرجى الانتظار بضع ثوانٍ حتى تنعكس المعاملة في سجل المعاملات",
"wallet": "محفظة",
"wallet_accounts": "حسابات المحفظة",
"wallet_balance": "رصيد المحفظة",
"wallet_group": "مجموعة المحفظة",
"wallet_group_description_existing_seed": "لقد اخترت استخدام عبارة الاسترداد (Seed) الموجودة لهذه المحفظة. يمكنك التحقق من عبارة الاسترداد (Seed) مرة أخرى إذا كنت بحاجة إلى تأكيدها أو تدوينها.",
"wallet_group_description_four": "لإنشاء محفظة بعبارة استرداد جديدة تمامًا.",
@@ -1352,6 +1384,7 @@
"wc_approve_request_title": "الموافقة على الطلب",
"wc_connect_request_title": "طلب الاتصال",
"wc_connected_to": "متصل بـ ${name}",
"wc_desc": "اتصل بسهولة بتطبيقات DApps",
"wc_max_network_fee": "الحد الأقصى لرسوم الشبكة",
"wc_message_to_sign": "رسالة للتوقيع",
"wc_network_fee": "رسوم الشبكة",
@@ -1402,6 +1435,7 @@
"yat_popup_content": "يمكنك الآن إرسال واستلام العملات المشفرة في Cake Wallet باستخدام Yat - اسم مستخدم قصير يعتمد على الرموز التعبيرية. يمكنك إدارة Yats في أي وقت من شاشة الإعدادات",
"yat_popup_title": "يمكن تحويل عنوان محفظتك إلى رموز تعبيرية.",
"yes": "نعم",
"yes_exit": "نعم. اخرج",
"yesterday": "الأمس",
"you_now_have_debit_card": "لديك الآن بطاقة خصم",
"you_pay": "أنت تدفع",
@@ -1451,4 +1485,4 @@
"wallet_balance": "رصيد المحفظة",
"wc_desc": "اتصل بسهولة بتطبيقات DApps",
"yes_exit": "نعم. اخرج"
}
}
+36 -2
View File
@@ -76,6 +76,7 @@
"approve_tokens": "Одобряване на токени",
"apps": "Приложения",
"arbiscan_history": "История в ArbiScan",
"are_you_sure_exit": "Сигурни ли сте, че искате да излезете?",
"arrive_in_this_address": "${currency} ${tag}ще пристигне на този адрес",
"ascending": "Възходящ",
"ask_each_time": "Питай всеки път",
@@ -89,6 +90,7 @@
"auto_generate_addresses": "Автоматично генериране на адреси",
"auto_generate_subaddresses": "Автоматично генериране на подадреси",
"automatic": "Автоматично",
"available": "Налично",
"available_balance": "Наличен баланс",
"available_balance_description": "„Наличният баланс“ или „Потвърденият баланс“ са средства, които могат да бъдат изразходвани веднага. Ако средствата се появяват в долния баланс, но не и в горния, трябва да изчакате няколко минути, докато входящите средства получат повече мрежови потвърждения. След като получат повече потвърждения, те ще могат да бъдат изразходвани.",
"avg_savings": "Средни спестявания",
@@ -125,6 +127,7 @@
"block_remaining": "Остава 1 блок",
"Blocks_remaining": "Остават ${status} блока",
"bluetooth": "Bluetooth",
"bridging": "Прехвърляне",
"bright_theme": "Светла",
"bscscan_history": "История в BSCScan",
"bump_fee": "Увеличи таксата",
@@ -216,6 +219,8 @@
"color_theme": "Цветова тема",
"coming_soon_tag": "Очаквайте скоро",
"commit_transaction_amount_fee": "Потвърдете транзакцията\nСума: ${amount}\nТакса: ${fee}",
"compatible_services": "Съвместими услуги",
"compatible_services_desc": "Използвайте инструмента за сканиране, за да четете следните типове QR кодове, поддържани в Cake Wallet:",
"configure": "Конфигуриране",
"confirm": "Потвърди",
"confirm_delete_template": "Това действие ще изтрие този шаблон. Желаете ли да продължите?",
@@ -279,6 +284,7 @@
"creating_new_wallet": "Създаване на нов портфейл",
"creating_new_wallet_error": "Грешка: ${description}",
"creation_date": "Дата на създаване",
"crypto_addresses": "Крипто адреси",
"csv_nothing_to_export": "Няма какво да се експортира",
"current_swap": "Текущ суап",
"current_wallet": "Текущ портфейл",
@@ -301,6 +307,7 @@
"default_sell_provider": "Доставчик за продажба по подразбиране",
"delete": "Изтрий",
"delete_account": "Изтриване на акаунта",
"delete_this_node": "Изтриване на този възел",
"delete_wallet": "Изтриване на портфейл",
"delete_wallet_confirm_message": "Сигурни ли сте, че искате да изтриете портфейла ${wallet_name}?",
"deleteConnectionConfirmationPrompt": "Сигурни ли сте, че искате да изтриете връзката с",
@@ -330,6 +337,7 @@
"deuro_savings_welcome_description": "dEURO е напълно децентрализиран, обезпечен стабилкойн, обвързан с еврото — сигурен, универсален и устойчив на цензура, без да се налага да се разчита на оракули. 1 dEURO = 1 EURO.",
"deuro_tooltip_no_eth": "За да активирате dEURO, трябва да имате ETH в портфейла си.",
"deuro_tx_commited_content": "Може да отнеме няколко секунди, докато транзакцията се потвърди и се отрази на екрана",
"device_confirmation": "Потвърждение от устройството",
"device_is_signing": "Устройството подписва",
"dfx_option_description": "Купете крипто с EUR и CHF. За частни и корпоративни клиенти в Европа",
"did_you_back_up_seeds": "Архивирахте ли всички свои seed фрази?",
@@ -466,6 +474,8 @@
"extracted_address_content": "Ще изпратите средства до\n${recipient_name}",
"failed_authentication": "Неуспешно удостоверяване. ${state_error}",
"faq": "ЧЗВ",
"favorite_token": "Любим токен",
"favorite_token_desc": "Балансът на любимия токен ще се показва на картата с баланса.",
"features": "Функции",
"fee": "Такса",
"fee_less_than_min": "Избраната такса е по-ниска от минималната. Моля, увеличете таксата, за да можете да изпратите транзакцията.",
@@ -491,6 +501,7 @@
"frozen": "Замразено",
"frozen_balance": "Замразен баланс",
"full_balance": "Пълен баланс",
"gallery": "Галерия",
"gas_exceeds_allowance": "Газът, необходим за транзакцията, надвишава допустимото.",
"gas_price": "Цена на gas",
"general": "Общи",
@@ -526,10 +537,10 @@
"how_to_connect": "Как да се свържете",
"how_to_use": "Как да използвате",
"how_to_use_card": "Как да използвате тази карта",
"hww_exit_desc": "Това ще прекрати текущия процес на сдвояване с вашето хардуерно устройство",
"i_understand": "Разбирам",
"icon_style": "Стил на иконата",
"id": "ID: ",
"if_you_dont_see_your_device": "Ако не виждате устройството си по-горе, моля, уверете се, че вашият Ledger е буден и отключен!",
"ignor": "Игнорирай",
"import": "Импортиране",
"importNFTs": "Импортиране на NFT",
@@ -541,6 +552,7 @@
"infobox_auto_address": "Вашият адрес за получаване ще се сменя всеки път, когато получите транзакция",
"infobox_multichain": "Използвайте този адрес, за да получавате всеки токен или колекционерски предмет в",
"infobox_rotation": "Вашият адрес за получаване ще се сменя всеки път, когато затворите и отворите отново този екран",
"input": "Вход",
"inputs": "Входове",
"insufficient_funds_for_tx": "Недостатъчни средства за успешно изпълнение на транзакцията.",
"insufficient_lamport_for_tx": "Нямате достатъчно SOL, за да покриете транзакцията и таксата за нея. Моля, добавете още SOL към портфейла си или намалете количеството SOL, което изпращате.",
@@ -606,6 +618,7 @@
"manage_pow_nodes": "Управление на PoW възли",
"manage_providers": "Управление на доставчици",
"manage_yats": "Управление на Yats",
"manual_input": "Ръчно въвеждане",
"mark_as_redeemed": "Маркирай като осребрен",
"market_place": "Пазар",
"mask": "Маска",
@@ -651,6 +664,7 @@
"nanogpt_subtitle": "Всички най-нови модели (GPT-5.3, Claude 4.6).\\nБез абонамент, плащайте с крипто.",
"narrow": "Тесен",
"network": "Мрежа",
"networks": "Мрежи",
"new_first_wallet_text": "Да пазите криптовалутата си в безопасност е лесно като парче торта",
"new_node_testing": "Тестване на нов възел",
"new_subaddress_create": "Създай",
@@ -679,8 +693,10 @@
"node_new": "Нов възел",
"node_port": "Порт на възела",
"node_reset_settings_title": "Нулиране на настройките",
"node_share_desc": "Сканирайте този QR код от екрана за сканиране, за да импортирате този възел.",
"node_test": "Тест",
"nodes": "Възли",
"nodes_desc": "Управлявайте съществуващите възли или добавете персонализиран.",
"nodes_list_reset_to_default_message": "Сигурни ли сте, че искате да възстановите настройките по подразбиране?",
"none_of_selected_providers_can_exchange": "Нито един от избраните доставчици не може да извърши този суап",
"noNFTYet": "Все още няма NFT",
@@ -690,6 +706,7 @@
"note_tap_to_change": "Бележка (докоснете, за да промените)",
"notification_permission_denied": "Разрешението за известия е окончателно отказано. Моля, включете го ръчно в настройките.",
"nullURIError": "URI е null",
"ocp_desc": "Плащайте с крипто в магазини",
"offer_expires_in": "Офертата изтича след: ",
"offline": "Офлайн",
"ok": "ОК",
@@ -716,8 +733,13 @@
"outputs": "Изходи",
"overshot": "Надвишено",
"overwrite_amount": "Презапиши сумата",
"pairing_code": "Код за сдвояване",
"pairing_code_desc_1": "Вашето устройство ще покаже код за сдвояване.",
"pairing_code_desc_2": "Въведете го тук, за да продължите",
"pairing_error": "Грешка при сдвояване",
"pairingInvalidEvent": "Невалидно събитие при сдвояване",
"passphrase": "Парола за достъп (по избор)",
"passphrase_view_keys": "Парола за достъп",
"passphrases_doesnt_match": "Пасфразите не съвпадат, моля, опитайте отново",
"password": "Парола",
"paste": "Поставяне",
@@ -733,6 +755,7 @@
"payjoin_unavailable_sheet_content": "Получаването на Payjoin транзакция изисква да имате наличен Bitcoin за използване.\n\nВеднага щом портфейлът ви има средства, Payjoin ще бъде автоматично активиран.",
"payjoin_unavailable_sheet_title": "Защо Payjoin не е наличен?",
"payment_id": "ID на плащане: ",
"payment_invoices": "Фактури за плащане",
"payment_made_easy": "Плащанията са лесни",
"payment_was_received": "Плащането ви беше получено.",
"payments": "Плащания",
@@ -888,6 +911,7 @@
"save": "Запази",
"save_backup_password": "Моля, уверете се, че сте запазили паролата за резервното копие. Няма да можете да импортирате файловете от резервното си копие без нея.",
"save_backup_password_alert": "Запазване на паролата за резервно копие",
"save_contact": "Запазване на контакт",
"save_to_downloads": "Запази в „Изтегляния“",
"saved_the_trade_id": "Запазих ID на сделката",
"savings": "Спестявания",
@@ -1037,6 +1061,7 @@
"setup_your_debit_card": "Настройте дебитната си карта",
"share": "Споделяне",
"share_address": "Споделяне на адрес",
"share_this_node": "Споделяне на този възел",
"shared_seed_wallet_groups": "Групи портфейли със споделена seed фраза",
"shared_seed_wallets": "Портфейли със споделена seed фраза",
"show": "Покажи",
@@ -1044,6 +1069,7 @@
"show_balance": "Натиснете и задръжте, за да покажете баланса",
"show_balance_send_page": "Докоснете, за да разкриете",
"show_balance_toast": "Натиснете и задръжте, за да скриете или покажете баланса",
"show_combined_balance": "Показване на общия баланс",
"show_details": "Покажи подробности",
"show_hidden_addresses": "Показване на скритите адреси",
"show_keys": "Показване на seed/ключове",
@@ -1109,6 +1135,7 @@
"swap_providers": "Доставчици за суап",
"sweeping_wallet": "Изчистване на портфейл",
"sweeping_wallet_alert": "Това не би трябвало да отнеме много време. НЕ НАПУСКАЙТЕ ТОЗИ ЕКРАН, ИНАЧЕ ИЗМЕТЕНИТЕ СРЕДСТВА МОГАТ ДА БЪДАТ ЗАГУБЕНИ.",
"swipe_to_bridge": "Плъзнете, за да прехвърлите",
"swipe_to_send": "Плъзнете, за да изпратите",
"switch_wallet": "Превключване на портфейл",
"switchToETHWallet": "Моля, превключете към портфейл за Ethereum и опитайте отново",
@@ -1149,6 +1176,7 @@
"testnet_coins_no_value": "Монетите в тестовата мрежа нямат стойност",
"third_intro_content": "Yats също съществуват извън Cake Wallet. Всеки адрес на портфейл по света може да бъде заменен с Yat!",
"third_intro_title": "Yat работи добре с другите",
"this_can_take_few_seconds": "Това може да отнеме няколко секунди",
"this_pair_is_not_supported_warning": "Тази двойка не се поддържа от избраната(ите) в момента борса(и). Моля, изберете друга борса.",
"thorchain_contract_address_not_supported": "THORChain не поддържа изпращане към адрес на смарт договор",
"thorchain_taproot_address_not_supported": "Доставчикът на ThorChain не поддържа Taproot адреси. Моля, променете адреса или изберете друг доставчик.",
@@ -1162,6 +1190,7 @@
"token_decimal": "Десетични знаци на токена (напр.: USDT)",
"token_name": "Име на токен (напр.: Tether)",
"token_symbol": "Символ на токена (напр.: USDT)",
"token_verified_on_jupiter": "Този токен е проверен на Jupiter",
"tokenID": "ID",
"tokens": "Токени",
"tokens_strong_warning": "Никога не изпращайте токени на този адрес!",
@@ -1290,6 +1319,7 @@
"username": "Потребителско име",
"username_available": "Потребителското име е налично",
"username_character_error": "Потребителските имена трябва да съдържат само",
"username_check_your_network": "Неуспешна проверка на потребителското име. Моля, проверете мрежовата си връзка.",
"username_length_error": "Потребителските имена трябва да съдържат 6–32 буквено-цифрови знака.",
"username_length_error_1_64": "Потребителските имена трябва да съдържат 1-64 буквено-цифрови знака.",
"username_not_available": "Това потребителско име не е налично.",
@@ -1300,6 +1330,7 @@
"verify_message": "Потвърдете съобщението",
"verify_seed": "Потвърдете seed фразата",
"verify_with_2fa": "Потвърдете с Cake 2FA",
"verifying_code": "Проверка на кода",
"version": "Версия ${currentVersion}",
"view_all": "Виж всички",
"view_in_block_explorer": "Преглед в Block Explorer",
@@ -1311,6 +1342,7 @@
"waitFewSecondForTxUpdate": "Моля, изчакайте няколко секунди, докато транзакцията се появи в историята на транзакциите",
"wallet": "Портфейл",
"wallet_accounts": "Акаунти на портфейла",
"wallet_balance": "Баланс на портфейла",
"wallet_group": "Група портфейли",
"wallet_group_description_existing_seed": "Избрали сте да използвате съществуваща seed фраза за този портфейл. Можете да я проверите отново, ако трябва да я потвърдите или да я запишете.",
"wallet_group_description_four": "за да създадете портфейл с изцяло нова seed фраза.",
@@ -1352,6 +1384,7 @@
"wc_approve_request_title": "Одобряване на заявката",
"wc_connect_request_title": "Заявка за свързване",
"wc_connected_to": "Свързан с ${name}",
"wc_desc": "Свържете се лесно с dApps",
"wc_max_network_fee": "Максимална мрежова такса",
"wc_message_to_sign": "Съобщение за подпис",
"wc_network_fee": "Мрежова такса",
@@ -1402,6 +1435,7 @@
"yat_popup_content": "Вече можете да изпращате и получавате крипто в Cake Wallet с вашия Yat – кратко потребителско име, базирано на емоджита. Управлявайте своите Yats по всяко време от екрана с настройки",
"yat_popup_title": "Адресът на вашия портфейл може да бъде превърнат в емоджита.",
"yes": "Да",
"yes_exit": "Да. Изход",
"yesterday": "Вчера",
"you_now_have_debit_card": "Вече имате дебитна карта",
"you_pay": "Вие плащате",
@@ -1451,4 +1485,4 @@
"wallet_balance": "Баланс на портфейла",
"wc_desc": "Свържете се лесно с dApps",
"yes_exit": "Да. Изход"
}
}
+36 -2
View File
@@ -76,6 +76,7 @@
"approve_tokens": "Schválit tokeny",
"apps": "Aplikace",
"arbiscan_history": "Historie ArbiScan",
"are_you_sure_exit": "Opravdu chcete ukončit aplikaci?",
"arrive_in_this_address": "${currency} ${tag}dorazí na tuto adresu",
"ascending": "Vzestupně",
"ask_each_time": "Zeptat se pokaždé",
@@ -89,6 +90,7 @@
"auto_generate_addresses": "Automaticky generovat adresy",
"auto_generate_subaddresses": "Automaticky generovat podadresy",
"automatic": "Automaticky",
"available": "Dostupné",
"available_balance": "Dostupný zůstatek",
"available_balance_description": "„Dostupný zůstatek“ nebo „Potvrzený zůstatek“ jsou prostředky, které lze okamžitě utratit. Pokud se prostředky zobrazují ve spodním zůstatku, ale ne v horním, musíte několik minut počkat, než příchozí prostředky získají více síťových potvrzení. Jakmile získají více potvrzení, bude možné je utratit.",
"avg_savings": "Prům. úspora",
@@ -125,6 +127,7 @@
"block_remaining": "Zbývá 1 blok",
"Blocks_remaining": "Zbývá ${status} bloků",
"bluetooth": "Bluetooth",
"bridging": "Přemostění",
"bright_theme": "Světlý",
"bscscan_history": "Historie BSCScan",
"bump_fee": "Navýšit poplatek",
@@ -216,6 +219,8 @@
"color_theme": "Barevné téma",
"coming_soon_tag": "Již brzy",
"commit_transaction_amount_fee": "Potvrdit transakci\nČástka: ${amount}\nPoplatek: ${fee}",
"compatible_services": "Kompatibilní služby",
"compatible_services_desc": "Pomocí nástroje pro skenování načtěte následující typy QR kódů podporované v Cake Wallet:",
"configure": "Konfigurovat",
"confirm": "Potvrdit",
"confirm_delete_template": "Tato akce odstraní tuto šablonu. Přejete si pokračovat?",
@@ -279,6 +284,7 @@
"creating_new_wallet": "Vytváření nové peněženky",
"creating_new_wallet_error": "Chyba: ${description}",
"creation_date": "Datum vytvoření",
"crypto_addresses": "Krypto adresy",
"csv_nothing_to_export": "Není co exportovat",
"current_swap": "Aktuální swap",
"current_wallet": "Aktuální peněženka",
@@ -301,6 +307,7 @@
"default_sell_provider": "Výchozí poskytovatel pro prodej",
"delete": "Smazat",
"delete_account": "Smazat účet",
"delete_this_node": "Smazat tento uzel",
"delete_wallet": "Smazat peněženku",
"delete_wallet_confirm_message": "Opravdu chcete smazat peněženku ${wallet_name}?",
"deleteConnectionConfirmationPrompt": "Opravdu chcete odstranit připojení k",
@@ -330,6 +337,7 @@
"deuro_savings_welcome_description": "dEURO je plně decentralizovaný, kolateralizovaný stablecoin navázaný na euro — bezpečný, všestranný a odolný vůči cenzuře, aniž by se musel spoléhat na orákly. 1 dEURO = 1 EURO.",
"deuro_tooltip_no_eth": "Abyste mohli povolit dEURO, musíte mít v peněžence ETH.",
"deuro_tx_commited_content": "Může trvat několik sekund, než se transakce potvrdí a projeví se na obrazovce",
"device_confirmation": "Potvrzení na zařízení",
"device_is_signing": "Zařízení podepisuje",
"dfx_option_description": "Kupte krypto za EUR a CHF. Pro maloobchodní a firemní zákazníky v Evropě",
"did_you_back_up_seeds": "Zálohovali jste všechny své seed fráze?",
@@ -466,6 +474,8 @@
"extracted_address_content": "Budete odesílat prostředky na\n${recipient_name}",
"failed_authentication": "Ověření se nezdařilo. ${state_error}",
"faq": "FAQ",
"favorite_token": "Oblíbený token",
"favorite_token_desc": "Zůstatek oblíbeného tokenu se zobrazí na kartě zůstatku.",
"features": "Funkce",
"fee": "Poplatek",
"fee_less_than_min": "Vybraný poplatek je nižší než minimum. Zvyšte prosím poplatek, abyste mohli transakci odeslat.",
@@ -491,6 +501,7 @@
"frozen": "Zmrazeno",
"frozen_balance": "Zmrazený zůstatek",
"full_balance": "Celkový zůstatek",
"gallery": "Galerie",
"gas_exceeds_allowance": "Plyn vyžadovaný transakcí překračuje povolený limit.",
"gas_price": "Cena gasu",
"general": "Obecné",
@@ -526,10 +537,10 @@
"how_to_connect": "Jak se připojit",
"how_to_use": "Jak používat",
"how_to_use_card": "Jak tuto kartu používat",
"hww_exit_desc": "Tímto ukončíte probíhající proces párování s vaším hardwarovým zařízením",
"i_understand": "Rozumím",
"icon_style": "Styl ikony",
"id": "ID: ",
"if_you_dont_see_your_device": "Pokud své zařízení výše nevidíte, ujistěte se, že je váš Ledger zapnutý a odemčený!",
"ignor": "Ignorovat",
"import": "Importovat",
"importNFTs": "Importovat NFT",
@@ -541,6 +552,7 @@
"infobox_auto_address": "Vaše přijímací adresa se bude měnit pokaždé, když obdržíte transakci",
"infobox_multichain": "Použijte tuto adresu k přijetí jakéhokoli tokenu nebo sběratelského předmětu na",
"infobox_rotation": "Vaše přijímací adresa se bude měnit pokaždé, když zavřete a znovu otevřete tuto obrazovku",
"input": "Vstup",
"inputs": "Vstupy",
"insufficient_funds_for_tx": "Nedostatečné prostředky pro úspěšné provedení transakce.",
"insufficient_lamport_for_tx": "Nemáte dostatek SOL na pokrytí transakce a transakčního poplatku. Přidejte do své peněženky více SOL nebo snižte množství SOL, které odesíláte.",
@@ -606,6 +618,7 @@
"manage_pow_nodes": "Spravovat PoW uzly",
"manage_providers": "Spravovat poskytovatele",
"manage_yats": "Spravovat Yats",
"manual_input": "Ruční zadání",
"mark_as_redeemed": "Označit jako uplatněné",
"market_place": "Marketplace",
"mask": "Maska",
@@ -651,6 +664,7 @@
"nanogpt_subtitle": "Všechny nejnovější modely (GPT-5.3, Claude 4.6).\nBez předplatného, plaťte kryptem.",
"narrow": "Úzké",
"network": "Síť",
"networks": "Sítě",
"new_first_wallet_text": "Udržet vaše krypto v bezpečí je hračka",
"new_node_testing": "Testování nového uzlu",
"new_subaddress_create": "Vytvořit",
@@ -679,8 +693,10 @@
"node_new": "Nový uzel",
"node_port": "Port uzlu",
"node_reset_settings_title": "Obnovit nastavení",
"node_share_desc": "Naskenováním tohoto QR kódu na obrazovce skenování tento uzel importujete.",
"node_test": "Test",
"nodes": "Uzly",
"nodes_desc": "Spravujte stávající uzly nebo přidejte vlastní.",
"nodes_list_reset_to_default_message": "Opravdu chcete obnovit nastavení na výchozí?",
"none_of_selected_providers_can_exchange": "Žádný z vybraných poskytovatelů nemůže tento swap provést",
"noNFTYet": "Zatím žádné NFT",
@@ -690,6 +706,7 @@
"note_tap_to_change": "Poznámka (klepnutím změnit)",
"notification_permission_denied": "Oprávnění k oznámením bylo trvale zamítnuto, prosím ručně jej povolte v nastavení",
"nullURIError": "URI je prázdné",
"ocp_desc": "Plaťte kryptem v obchodech",
"offer_expires_in": "Platnost nabídky vyprší za: ",
"offline": "Offline",
"ok": "OK",
@@ -716,8 +733,13 @@
"outputs": "Výstupy",
"overshot": "Přestřelení",
"overwrite_amount": "Přepsat částku",
"pairing_code": "Párovací kód",
"pairing_code_desc_1": "Vaše zařízení zobrazí párovací kód.",
"pairing_code_desc_2": "Zadejte ho zde a pokračujte",
"pairing_error": "Chyba párování",
"pairingInvalidEvent": "Neplatná událost párování",
"passphrase": "Přístupová fráze (volitelné)",
"passphrase_view_keys": "Přístupová fráze",
"passphrases_doesnt_match": "Heslové fráze se neshodují, zkuste to znovu",
"password": "Heslo",
"paste": "Vložit",
@@ -733,6 +755,7 @@
"payjoin_unavailable_sheet_content": "Přijetí transakce Payjoin vyžaduje, abyste měli Bitcoin připravený k použití.\n\nJakmile bude mít vaše peněženka prostředky, Payjoin se automaticky povolí.",
"payjoin_unavailable_sheet_title": "Proč je Payjoin nedostupný?",
"payment_id": "ID platby: ",
"payment_invoices": "Platební faktury",
"payment_made_easy": "Platby snadno",
"payment_was_received": "Vaše platba byla přijata.",
"payments": "Platby",
@@ -888,6 +911,7 @@
"save": "Uložit",
"save_backup_password": "Ujistěte se prosím, že máte uložené heslo k záloze. Bez něj nebudete moci importovat záložní soubory.",
"save_backup_password_alert": "Uložit heslo k záloze",
"save_contact": "Uložit kontakt",
"save_to_downloads": "Uložit do složky Stažené",
"saved_the_trade_id": "Uložil jsem si ID obchodu",
"savings": "Úspory",
@@ -1037,6 +1061,7 @@
"setup_your_debit_card": "Nastavte si debetní kartu",
"share": "Sdílet",
"share_address": "Sdílet adresu",
"share_this_node": "Sdílet tento uzel",
"shared_seed_wallet_groups": "Skupiny peněženek se sdílenou seed frází",
"shared_seed_wallets": "Peněženky se sdíleným seedem",
"show": "Zobrazit",
@@ -1044,6 +1069,7 @@
"show_balance": "Dlouhým stisknutím zobrazíte zůstatek",
"show_balance_send_page": "Klepnutím odhalíte",
"show_balance_toast": "Dlouhým stisknutím skryjete nebo zobrazíte zůstatek",
"show_combined_balance": "Zobrazit souhrnný zůstatek",
"show_details": "Zobrazit podrobnosti",
"show_hidden_addresses": "Zobrazit skryté adresy",
"show_keys": "Zobrazit seed/klíče",
@@ -1109,6 +1135,7 @@
"swap_providers": "Poskytovatelé swapu",
"sweeping_wallet": "Peněženka pro sweep",
"sweeping_wallet_alert": "To by nemělo trvat dlouho. NEOPUŠTĚJTE TUTO OBRAZOVKU, JINAK MOHOU BÝT PŘESUNUTÉ PROSTŘEDKY ZTRACENY.",
"swipe_to_bridge": "Přemostění přejetím prstem",
"swipe_to_send": "Přejeďte pro odeslání",
"switch_wallet": "Přepnout peněženku",
"switchToETHWallet": "Přepněte na peněženku Ethereum a zkuste to znovu",
@@ -1149,6 +1176,7 @@
"testnet_coins_no_value": "Testnetové mince nemají žádnou hodnotu",
"third_intro_content": "Yaty existují i mimo Cake Wallet. Jakákoli adresa peněženky na světě může být nahrazena Yatem!",
"third_intro_title": "Yat si dobře rozumí s ostatními",
"this_can_take_few_seconds": "Může to trvat několik sekund",
"this_pair_is_not_supported_warning": "Tento pár není podporován aktuálně vybranou burzou (burzami). Vyberte prosím jinou burzu.",
"thorchain_contract_address_not_supported": "THORChain nepodporuje odesílání na adresu kontraktu",
"thorchain_taproot_address_not_supported": "Poskytovatel ThorChain nepodporuje Taproot adresy. Změňte adresu nebo vyberte jiného poskytovatele.",
@@ -1162,6 +1190,7 @@
"token_decimal": "Desetinná místa tokenu (např.: USDT)",
"token_name": "Název tokenu (např.: Tether)",
"token_symbol": "Symbol tokenu (např.: USDT)",
"token_verified_on_jupiter": "Tento token je ověřen na Jupiteru",
"tokenID": "ID",
"tokens": "Tokeny",
"tokens_strong_warning": "Nikdy neposílejte tokeny na tuto adresu!",
@@ -1290,6 +1319,7 @@
"username": "Uživatelské jméno",
"username_available": "Uživatelské jméno je k dispozici",
"username_character_error": "Uživatelská jména mohou obsahovat pouze",
"username_check_your_network": "Nelze ověřit uživatelské jméno. Zkontrolujte prosím připojení k síti.",
"username_length_error": "Uživatelská jména musí obsahovat 6–32 alfanumerických znaků.",
"username_length_error_1_64": "Uživatelská jména musí obsahovat 1–64 alfanumerických znaků.",
"username_not_available": "Toto uživatelské jméno není k dispozici.",
@@ -1300,6 +1330,7 @@
"verify_message": "Ověřit zprávu",
"verify_seed": "Ověřit seed",
"verify_with_2fa": "Ověřit pomocí Cake 2FA",
"verifying_code": "Ověřování kódu",
"version": "Verze ${currentVersion}",
"view_all": "Zobrazit vše",
"view_in_block_explorer": "Zobrazit v průzkumníku bloků",
@@ -1311,6 +1342,7 @@
"waitFewSecondForTxUpdate": "Počkejte prosím několik sekund, než se transakce zobrazí v historii transakcí",
"wallet": "Peněženka",
"wallet_accounts": "Účty v peněžence",
"wallet_balance": "Zůstatek peněženky",
"wallet_group": "Skupina peněženek",
"wallet_group_description_existing_seed": "Zvolili jste použití existující seed fráze pro tuto peněženku. Seed frázi můžete znovu ověřit, pokud ji potřebujete potvrdit nebo si ji zapsat.",
"wallet_group_description_four": "vytvořit peněženku se zcela novým seedem.",
@@ -1352,6 +1384,7 @@
"wc_approve_request_title": "Schválit žádost",
"wc_connect_request_title": "Žádost o připojení",
"wc_connected_to": "Připojeno k ${name}",
"wc_desc": "Snadno se připojte k dApps",
"wc_max_network_fee": "Max síťový poplatek",
"wc_message_to_sign": "Zpráva k podpisu",
"wc_network_fee": "Síťový poplatek",
@@ -1402,6 +1435,7 @@
"yat_popup_content": "Nyní můžete v Cake Wallet posílat a přijímat kryptoměny pomocí svého Yatu – krátkého uživatelského jména složeného z emoji. Yaty můžete kdykoli spravovat na obrazovce nastavení",
"yat_popup_title": "Adresa vaší peněženky může být emojifikována.",
"yes": "Ano",
"yes_exit": "Ano. Ukončit",
"yesterday": "Včera",
"you_now_have_debit_card": "Nyní máte debetní kartu",
"you_pay": "Platíte",
@@ -1451,4 +1485,4 @@
"wallet_balance": "Zůstatek peněženky",
"wc_desc": "Snadno se připojte k dApps",
"yes_exit": "Ano. Ukončit"
}
}
+45 -38
View File
@@ -79,6 +79,7 @@
"approve_tokens": "Tokens genehmigen",
"apps": "Apps",
"arbiscan_history": "ArbiScan-Verlauf",
"are_you_sure_exit": "Möchten Sie die App wirklich verlassen?",
"arrive_in_this_address": "${currency} ${tag} wird an dieser Adresse eingehen",
"ascending": "Aufsteigend",
"ask_each_time": "Jedes Mal fragen",
@@ -92,6 +93,7 @@
"auto_generate_addresses": "Adressen automatisch generieren",
"auto_generate_subaddresses": "Unteradressen automatisch generieren",
"automatic": "Automatisch",
"available": "Verfügbar",
"available_balance": "Verfügbares Guthaben",
"available_balance_description": "Der „Verfügbare Kontostand“ bzw. „Bestätigter Kontostand“ sind Guthaben, die sofort ausgegeben werden können. Wenn Guthaben im unteren Kontostand angezeigt wird, aber nicht im oberen, müssen Sie ein paar Minuten warten, bis die eingehenden Gelder weitere Netzwerkbestätigungen erhalten. Sobald sie mehr Bestätigungen haben, können sie ausgegeben werden.",
"avg_savings": "Durchschn. Ersparnis",
@@ -128,6 +130,7 @@
"block_remaining": "1 Block verbleibend",
"Blocks_remaining": "${status} Blöcke verbleibend",
"bluetooth": "Bluetooth",
"bridging": "Bridge-Vorgang",
"bright_theme": "Hell",
"bscscan_history": "BSCScan-Verlauf",
"bump_fee": "Gebühr erhöhen",
@@ -220,6 +223,8 @@
"color_theme": "Farbschema",
"coming_soon_tag": "Demnächst verfügbar",
"commit_transaction_amount_fee": "Transaktion bestätigen\nBetrag: ${amount}\nGebühr: ${fee}",
"compatible_services": "Kompatible Dienste",
"compatible_services_desc": "Verwenden Sie das Scan-Tool, um die folgenden von Cake Wallet unterstützten QR-Code-Typen zu lesen:",
"configure": "Konfigurieren",
"confirm": "Bestätigen",
"confirm_delete_template": "Diese Aktion wird diese Vorlage löschen. Möchten Sie fortfahren?",
@@ -283,6 +288,7 @@
"creating_new_wallet": "Neues Wallet wird erstellt",
"creating_new_wallet_error": "Fehler: ${description}",
"creation_date": "Erstellungsdatum",
"crypto_addresses": "Krypto-Adressen",
"csv_nothing_to_export": "Nichts zum Exportieren",
"current_swap": "Aktueller Swap",
"current_wallet": "Aktuelle Wallet",
@@ -305,6 +311,7 @@
"default_sell_provider": "Standardanbieter für Verkäufe",
"delete": "Löschen",
"delete_account": "Konto löschen",
"delete_this_node": "Diesen Node löschen",
"delete_wallet": "Wallet löschen",
"delete_wallet_confirm_message": "Sind Sie sicher, dass Sie die Wallet ${wallet_name} löschen möchten?",
"deleteConnectionConfirmationPrompt": "Sind Sie sicher, dass Sie die Verbindung zu",
@@ -334,6 +341,7 @@
"deuro_savings_welcome_description": "dEURO ist ein vollständig dezentraler, besicherter Stablecoin, der an den Euro gekoppelt ist – sicher, vielseitig und zensurresistent, ohne auf Orakel angewiesen zu sein. 1 dEURO = 1 EURO.",
"deuro_tooltip_no_eth": "Um dEURO zu aktivieren, müssen Sie ETH in Ihrem Wallet haben.",
"deuro_tx_commited_content": "Es kann ein paar Sekunden dauern, bis die Transaktion bestätigt wird und auf dem Bildschirm angezeigt wird.",
"device_confirmation": "Gerätebestätigung",
"device_is_signing": "Das Gerät signiert",
"dfx_option_description": "Kaufen Sie Krypto mit EUR & CHF. Für Privat- und Unternehmenskunden in Europa",
"did_you_back_up_seeds": "Haben Sie alle Ihre Seeds gesichert?",
@@ -370,6 +378,9 @@
"donation_link_details": "Details zum Spendenlink",
"done": "Fertig",
"duress_pin_description": "Dadurch wird eine Notfall-PIN eingerichtet, eine erweiterte Funktion, die von den meisten Nutzern nicht verwendet werden sollte. Diese PIN sollte nur verwendet werden, wenn Sie in Gefahr sind. Nachdem Sie diese PIN verwendet haben, werden alle Ihre Wallets gelöscht. Stellen Sie daher bitte sicher, dass alle Ihre Seeds gesichert sind, bevor Sie sie verwenden.",
"duress_PIN_set_up_successfully": "Die Notfall-PIN wurde erfolgreich eingerichtet",
"durres_PIN": "Notfall-PIN",
"durres_PIN_set_up_successfully": "Die Notfall-PIN wurde erfolgreich eingerichtet",
"e_sign_consent": "Einwilligung zur E-Signatur",
"edit": "Bearbeiten",
"edit_account": "Konto bearbeiten",
@@ -469,6 +480,8 @@
"extracted_address_content": "Sie senden Guthaben an\n${recipient_name}",
"failed_authentication": "Authentifizierung fehlgeschlagen. ${state_error}",
"faq": "FAQ",
"favorite_token": "Bevorzugter Token",
"favorite_token_desc": "Der Kontostand des bevorzugten Tokens wird auf der Guthabenkarte angezeigt.",
"features": "Funktionen",
"fee": "Gebühr",
"fee_less_than_min": "Die ausgewählte Gebühr liegt unter dem Minimum. Bitte erhöhen Sie die Gebühr, um die Transaktion senden zu können.",
@@ -495,6 +508,7 @@
"frozen": "Eingefroren",
"frozen_balance": "Eingefrorenes Guthaben",
"full_balance": "Gesamtsaldo",
"gallery": "Galerie",
"gas_exceeds_allowance": "Das für die Transaktion erforderliche Gas überschreitet das Limit.",
"gas_price": "Gaspreis",
"general": "Allgemein",
@@ -530,10 +544,13 @@
"how_to_connect": "So verbinden Sie sich",
"how_to_use": "So verwenden Sie",
"how_to_use_card": "So verwenden Sie diese Karte",
"hww_exit_desc": "Dadurch wird der laufende Kopplungsvorgang mit Ihrem Hardware-Gerät beendet",
"i_understand": "Ich verstehe",
"icon_style": "Symbolstil",
"id": "ID: ",
"if_you_dont_see_your_device": "Wenn Sie Ihr Gerät oben nicht sehen, stellen Sie bitte sicher, dass Ihr Ledger eingeschaltet und entsperrt ist!",
"if_you_dont_see_your_device": "Wenn Sie Ihr Gerät oben nicht sehen, stellen Sie bitte sicher, dass Ihr Gerät eingeschaltet und entsperrt ist!",
"ignore": "Ignorieren",
"import": "Importieren",
"importNFTs": "NFTs importieren",
"in_store": "Im Geschäft",
@@ -544,6 +561,7 @@
"infobox_auto_address": "Ihre Empfangsadresse wird jedes Mal gewechselt, wenn Sie eine Transaktion erhalten",
"infobox_multichain": "Mit dieser Adresse können Sie beliebige Token oder Sammlerstücke im folgenden Netzwerk empfangen:",
"infobox_rotation": "Ihre Empfangsadresse wird jedes Mal rotiert, wenn Sie diesen Bildschirm schließen und erneut öffnen",
"input": "Eingabe",
"inputs": "Eingaben",
"insufficient_funds_for_tx": "Unzureichendes Guthaben, um die Transaktion erfolgreich auszuführen.",
"insufficient_lamport_for_tx": "Sie haben nicht genug SOL, um die Transaktion und die Transaktionsgebühr zu decken. Bitte fügen Sie Ihrer Wallet mehr SOL hinzu oder reduzieren Sie den SOL-Betrag, den Sie senden.",
@@ -610,6 +628,7 @@
"manage_pow_nodes": "PoW-Nodes verwalten",
"manage_providers": "Anbieter verwalten",
"manage_yats": "Yats verwalten",
"manual_input": "Manuelle Eingabe",
"mark_as_redeemed": "Als eingelöst markieren",
"market_place": "Marktplatz",
"mask": "Maske",
@@ -655,6 +674,7 @@
"nanogpt_subtitle": "Alle neuesten Modelle (GPT-5.3, Claude 4.6).\nKein Abonnement – bezahlen Sie mit Krypto.",
"narrow": "Schmal",
"network": "Netzwerk",
"networks": "Netzwerke",
"new_first_wallet_text": "Ihre Kryptowährungen sicher aufzubewahren ist ein Kinderspiel",
"new_node_testing": "Testen des neuen Nodes",
"new_subaddress_create": "Erstellen",
@@ -684,8 +704,10 @@
"node_new": "Neuer Node",
"node_port": "Node-Port",
"node_reset_settings_title": "Einstellungen zurücksetzen",
"node_share_desc": "Scannen Sie diesen QR-Code im Scan-Bildschirm, um diesen Node zu importieren.",
"node_test": "Test",
"nodes": "Nodes",
"nodes_desc": "Verwalten Sie bestehende Nodes oder fügen Sie einen benutzerdefinierten Node hinzu.",
"nodes_list_reset_to_default_message": "Sind Sie sicher, dass Sie die Einstellungen auf die Standardeinstellungen zurücksetzen möchten?",
"none_of_selected_providers_can_exchange": "Keiner der ausgewählten Anbieter kann diesen Swap durchführen",
"noNFTYet": "Noch keine NFTs",
@@ -695,6 +717,7 @@
"note_tap_to_change": "Notiz (zum Ändern tippen)",
"notification_permission_denied": "Die Benachrichtigungsberechtigung wurde dauerhaft verweigert. Bitte aktivieren Sie sie manuell in den Einstellungen.",
"nullURIError": "URI ist null",
"ocp_desc": "Mit Krypto im Geschäft bezahlen",
"offer_expires_in": "Angebot läuft ab in: ",
"offline": "Offline",
"ok": "OK",
@@ -721,10 +744,15 @@
"outputs": "Ausgänge",
"overshot": "Überschuss",
"overwrite_amount": "Betrag überschreiben",
"pairing_code": "Kopplungscode",
"pairing_code_desc_1": "Ihr Gerät zeigt einen Kopplungscode an.",
"pairing_code_desc_2": "Geben Sie ihn hier ein, um fortzufahren",
"pairing_error": "Kopplungsfehler",
"pairingInvalidEvent": "Ungültiges Pairing-Ereignis",
"passphrase": "Passphrase (Optional)",
"passphrase_raw": "Passphrase",
"passphrase_entry": "Passphrase-Eingabe",
"passphrase_view_keys": "Passphrase",
"passphrases_doesnt_match": "Passphrasen stimmen nicht überein, bitte versuchen Sie es erneut",
"password": "Passwort",
"paste": "Einfügen",
@@ -740,6 +768,7 @@
"payjoin_unavailable_sheet_content": "Um eine Payjoin-Transaktion zu empfangen, müssen Sie Bitcoin in Ihrem Wallet verfügbar haben.\n\nSobald Ihr Wallet über Guthaben verfügt, wird Payjoin automatisch aktiviert.",
"payjoin_unavailable_sheet_title": "Warum ist Payjoin nicht verfügbar?",
"payment_id": "Zahlungs-ID: ",
"payment_invoices": "Zahlungsanfragen",
"payment_made_easy": "Zahlungen leicht gemacht",
"payment_was_received": "Ihre Zahlung ist eingegangen.",
"payments": "Zahlungen",
@@ -769,6 +798,7 @@
"please_choose_one": "Bitte wählen Sie eine Option",
"please_fill_totp": "Bitte geben Sie den 8-stelligen Code ein, der auf Ihrem anderen Gerät angezeigt wird",
"please_make_selection": "Bitte treffen Sie unten eine Auswahl, um Ihre Wallet zu erstellen oder wiederherzustellen.",
"Please_reference_document": "Weitere Informationen finden Sie in den Dokumenten unten.",
"please_reference_document": "Bitte beachten Sie die untenstehenden Dokumente für weitere Informationen.",
"please_select": "Bitte auswählen:",
"please_select_backup_file": "Bitte wählen Sie eine Sicherungsdatei aus und geben Sie das Sicherungskennwort ein.",
@@ -888,6 +918,9 @@
"restore_wallet": "Wallet wiederherstellen",
"restore_wallet_name": "Wallet-Name",
"restore_wallet_restore_description": "Beschreibung der Wallet-Wiederherstellung",
"resync_device": "Gerät resyncen",
"resync_device_desc": "Um das Guthaben aktuell zu halten muss Cake Wallet gelegentlich sich mit dem Gerät synchonisieren.",
"resync_device_cancel_warning_desc": "Dadurch wird der laufende Synchronisierungsprozess mit Ihrem Hardware-Gerät beendet.",
"return_address_desc": "Im seltenen Fall eines fehlgeschlagenen Swaps können unsere Partner Ihre Zahlung automatisch an die angegebene Rückerstattungsadresse erstatten.",
"return_address_desc_external": "Da Sie „Von extern senden“ ausgewählt haben, legen Sie bitte unten manuell eine Erstattungsadresse fest.",
"robinhood_option_description": "Kaufen und übertragen Sie sofort mit Ihrer Debitkarte, Ihrem Bankkonto oder Ihrem Robinhood-Guthaben. Nur USA.",
@@ -897,6 +930,7 @@
"save": "Speichern",
"save_backup_password": "Bitte stellen Sie sicher, dass Sie Ihr Sicherungskennwort gespeichert haben. Sie können Ihre Sicherungsdateien ohne dieses nicht importieren.",
"save_backup_password_alert": "Backup-Passwort speichern",
"save_contact": "Kontakt speichern",
"save_to_downloads": "In „Downloads“ speichern",
"saved_the_trade_id": "Ich habe die Trade-ID gespeichert",
"savings": "Ersparnisse",
@@ -1046,6 +1080,7 @@
"setup_your_debit_card": "Richten Sie Ihre Debitkarte ein",
"share": "Teilen",
"share_address": "Adresse teilen",
"share_this_node": "Diesen Node teilen",
"shared_seed_wallet_groups": "Geteilte Seed-Wallet-Gruppen",
"shared_seed_wallets": "Wallets mit gemeinsamem Seed",
"shielding": "Autoshield",
@@ -1054,6 +1089,7 @@
"show_balance": "Lange drücken, um den Kontostand anzuzeigen",
"show_balance_send_page": "Tippen, um anzuzeigen",
"show_balance_toast": "Lange drücken, um den Kontostand auszublenden oder anzuzeigen",
"show_combined_balance": "Kombinierten Kontostand anzeigen",
"show_details": "Details anzeigen",
"show_hidden_addresses": "Versteckte Adressen anzeigen",
"show_keys": "Seed/Schlüssel anzeigen",
@@ -1120,6 +1156,7 @@
"swap_reverse_direction": "Swap-Richtung umkehren",
"sweeping_wallet": "Wallet leeren",
"sweeping_wallet_alert": "Das sollte nicht lange dauern. Verlassen Sie diesen Bildschirm nicht, sonst können die geleerten Guthaben verloren gehen.",
"swipe_to_bridge": "Zum Bridging wischen",
"swipe_to_send": "Zum Senden wischen",
"switch_camera": "Kamera wechseln",
"switch_input_currency": "Zwischen Krypto- und Fiat-Eingabe wechseln",
@@ -1163,6 +1200,7 @@
"testnet_coins_no_value": "Testnet-Coins haben keinen Wert",
"third_intro_content": "Yats existieren auch außerhalb von Cake Wallet. Jede Wallet-Adresse auf der Welt kann durch ein Yat ersetzt werden!",
"third_intro_title": "Yat kommt gut mit anderen zurecht",
"this_can_take_few_seconds": "Dies kann einige Sekunden dauern",
"this_pair_is_not_supported_warning": "Dieses Paar wird von den derzeit ausgewählten Börsen nicht unterstützt. Bitte wählen Sie eine andere Börse.",
"thorchain_contract_address_not_supported": "THORChain unterstützt das Senden an eine Vertragsadresse nicht",
"thorchain_taproot_address_not_supported": "Der ThorChain-Anbieter unterstützt keine Taproot-Adressen. Bitte ändern Sie die Adresse oder wählen Sie einen anderen Anbieter aus.",
@@ -1176,6 +1214,7 @@
"token_decimal": "Token-Dezimalstelle (z. B.: USDT)",
"token_name": "Token-Name (z. B.: Tether)",
"token_symbol": "Token-Symbol (z. B.: USDT)",
"token_verified_on_jupiter": "Dieser Token ist auf Jupiter verifiziert",
"tokenID": "ID",
"tokens": "Token",
"tokens_strong_warning": "Senden Sie niemals Token an diese Adresse!",
@@ -1319,6 +1358,7 @@
"verify_message": "Nachricht verifizieren",
"verify_seed": "Seed verifizieren",
"verify_with_2fa": "Mit Cake 2FA verifizieren",
"verifying_code": "Code wird überprüft",
"version": "Version ${currentVersion}",
"view_all": "Alle anzeigen",
"view_in_block_explorer": "Im Block Explorer anzeigen",
@@ -1330,6 +1370,7 @@
"waitFewSecondForTxUpdate": "Bitte warten Sie einige Sekunden, bis die Transaktion im Transaktionsverlauf angezeigt wird.",
"wallet": "Wallet",
"wallet_accounts": "Wallet-Konten",
"wallet_balance": "Wallet-Guthaben",
"wallet_group": "Wallet-Gruppe",
"wallet_group_description_existing_seed": "Sie haben sich entschieden, für diese Wallet einen vorhandenen Seed zu verwenden. Sie können den Seed erneut überprüfen, wenn Sie ihn bestätigen oder aufschreiben müssen.",
"wallet_group_description_four": "um eine Wallet mit einem völlig neuen Seed zu erstellen.",
@@ -1371,6 +1412,7 @@
"wc_approve_request_title": "Anfrage genehmigen",
"wc_connect_request_title": "Verbindungsanfrage",
"wc_connected_to": "Verbunden mit ${name}",
"wc_desc": "Einfach mit DApps verbinden",
"wc_max_network_fee": "Maximale Netzwerkgebühr",
"wc_message_to_sign": "Zu signierende Nachricht",
"wc_network_fee": "Netzwerkgebühr",
@@ -1421,6 +1463,7 @@
"yat_popup_content": "Sie können jetzt in Cake Wallet mit Ihrem Yat Krypto senden und empfangen – ein kurzer, emoji-basierter Benutzername. Verwalten Sie Yats jederzeit im Einstellungsbildschirm",
"yat_popup_title": "Ihre Wallet-Adresse kann in Emojis umgewandelt werden.",
"yes": "Ja",
"yes_exit": "Ja, beenden",
"yesterday": "Gestern",
"you_now_have_debit_card": "Sie haben jetzt eine Debitkarte",
"you_pay": "Sie zahlen",
@@ -1435,41 +1478,5 @@
"zcash_card_enable_later": "Sie können diese Karte jederzeit später in den Einstellungen aktivieren",
"zcash_card_missing_funds": "Fehlendes Guthaben?",
"zcash_card_scan": "Scannen",
"zcash_card_warning": "Schließen Sie die App nicht, bis der Vorgang abgeschlossen ist. Andernfalls muss der Vorgang von Grund auf neu gestartet werden.",
"are_you_sure_exit": "Möchten Sie die App wirklich verlassen?",
"available": "Verfügbar",
"bridging": "Bridge-Vorgang",
"compatible_services": "Kompatible Dienste",
"compatible_services_desc": "Verwenden Sie das Scan-Tool, um die folgenden von Cake Wallet unterstützten QR-Code-Typen zu lesen:",
"crypto_addresses": "Krypto-Adressen",
"delete_this_node": "Diesen Node löschen",
"device_confirmation": "Gerätebestätigung",
"durres_PIN": "Notfall-PIN",
"durres_PIN_set_up_successfully": "Die Notfall-PIN wurde erfolgreich eingerichtet",
"favorite_token": "Bevorzugter Token",
"favorite_token_desc": "Der Kontostand des bevorzugten Tokens wird auf der Guthabenkarte angezeigt.",
"gallery": "Galerie",
"hww_exit_desc": "Dadurch wird der laufende Kopplungsvorgang mit Ihrem Hardware-Gerät beendet",
"ignor": "Ignorieren",
"input": "Eingabe",
"manual_input": "Manuelle Eingabe",
"networks": "Netzwerke",
"node_share_desc": "Scannen Sie diesen QR-Code im Scan-Bildschirm, um diesen Node zu importieren.",
"nodes_desc": "Verwalten Sie bestehende Nodes oder fügen Sie einen benutzerdefinierten Node hinzu.",
"ocp_desc": "Mit Krypto im Geschäft bezahlen",
"pairing_code": "Kopplungscode",
"pairing_code_desc_1": "Ihr Gerät zeigt einen Kopplungscode an.",
"pairing_code_desc_2": "Geben Sie ihn hier ein, um fortzufahren",
"pairing_error": "Kopplungsfehler",
"passphrase_view_keys": "Passphrase",
"payment_invoices": "Zahlungsanfragen",
"save_contact": "Kontakt speichern",
"share_this_node": "Diesen Node teilen",
"show_combined_balance": "Kombinierten Kontostand anzeigen",
"swipe_to_bridge": "Zum Bridging wischen",
"this_can_take_few_seconds": "Dies kann einige Sekunden dauern",
"verifying_code": "Code wird überprüft",
"wallet_balance": "Wallet-Guthaben",
"wc_desc": "Einfach mit DApps verbinden",
"yes_exit": "Ja, beenden"
}
"zcash_card_warning": "Schließen Sie die App nicht, bis der Vorgang abgeschlossen ist. Andernfalls muss der Vorgang von Grund auf neu gestartet werden."
}
+22 -5
View File
@@ -544,11 +544,11 @@
"how_to_connect": "How to Connect",
"how_to_use": "How to use",
"how_to_use_card": "How to use this card",
"hww_exit_desc": "This will ed the ongoing pairing process with your hardware device",
"hww_exit_desc": "This will end the ongoing pairing process with your hardware device",
"i_understand": "I understand",
"icon_style": "Icon style",
"id": "ID: ",
"if_you_dont_see_your_device": "If you don't see your device above, please be sure your Ledger is awake and unlocked!",
"if_you_dont_see_your_device": "If you don't see your device above, please be sure your device is awake and unlocked!",
"ignor": "Ignore",
"import": "Import",
"importNFTs": "Import NFTs",
@@ -557,6 +557,7 @@
"incorrect_seed": "The text entered is not valid.",
"incorrect_seed_option": "Incorrect. Please try again",
"incorrect_seed_option_back": "Incorrect. Please make sure your seed is saved correctly and try again.",
"info": "Info",
"infobox_auto_address": "Your receive address will rotate every time you receive a transaction",
"infobox_multichain": "Use this address to receive any token or collectible on",
"infobox_rotation": "Your receive address will rotate every time you close and reopen this screen",
@@ -571,6 +572,7 @@
"invalid_input": "Invalid input",
"invalid_password": "Invalid password",
"invoice_details": "Invoice details",
"is_currently_being_migrated": "is currently being migrated",
"is_percentage": "is",
"keys": "Keys",
"label": "Label",
@@ -622,6 +624,7 @@
"long_press_edit_address": "Long press to edit address",
"long_press_hide_balance": "Long press card to hide balance",
"long_press_show_balance": "Long press card to show balance",
"long_press_to_copy": "Long press to copy",
"low_fee": "Low fee",
"low_fee_alert": "You currently are using a low network fee priority. This could cause long waits, different rates, or canceled trades. We recommend setting a higher fee for a better experience.",
"made_easy": "made easy",
@@ -646,6 +649,7 @@
"messages": "Messages",
"method": "Method",
"methods": "Methods",
"migrating_to_ironwood": "migrating to Ironwood",
"min_amount": "Min: ${value}",
"min_value": "Min: ${value} ${currency}",
"mining": "Mining",
@@ -729,6 +733,7 @@
"onramper_option_description": "Quickly buy crypto with many payment methods. Available in most countries. Spreads and fees vary.",
"open_gift_card": "Open Gift Card",
"open_wallet": "Open Wallet",
"opens_in_browser": "Opens in browser",
"opens_externally": "Opens externally",
"optional_description": "Optional description",
"optional_email_hint": "Optional payee notification email",
@@ -752,8 +757,8 @@
"pairing_error": "Pairing Error",
"pairingInvalidEvent": "Pairing Invalid Event",
"passphrase": "Passphrase (Optional)",
"passphrase_raw": "Passphrase",
"passphrase_entry": "Passphrase entry",
"passphrase_raw": "Passphrase",
"passphrase_view_keys": "Passphrase",
"passphrases_doesnt_match": "Passphrases do not match, please try again",
"password": "Password",
@@ -841,6 +846,7 @@
"qr_code_format_note": "Different QR code formats are used by different hardware wallets in the Bitcoin space",
"qr_fullscreen": "Tap to open full screen QR code",
"qr_instruction": "Use this address to receive any token or collectible on",
"qr_parts_scanned": "Scanned ${scanned} of ${total} QR code parts",
"qr_payment_amount": "This QR code contains a payment amount. Do you want to overwrite the current value?",
"quantity": "Quantity",
"question_to_disable_2fa": "Are you sure that you want to disable Cake 2FA? A 2FA code will no longer be needed to access the wallet and certain functions.",
@@ -852,6 +858,7 @@
"receiving": "Receiving",
"recieving": "Recieving",
"recipient_address": "Recipient address",
"recipient_number": "Recipient ${number}",
"reconnect": "Reconnect",
"reconnect_alert_text": "Are you sure you want to reconnect?",
"reconnect_your_hardware_wallet": "Reconnect your Hardware Wallet",
@@ -919,6 +926,9 @@
"restore_wallet": "Restore Wallet",
"restore_wallet_name": "Wallet name",
"restore_wallet_restore_description": "Wallet restore description",
"resync_device": "Resync device",
"resync_device_desc": "Balance updating requires occasional resyncing Cake Wallet with the device.",
"resync_device_cancel_warning_desc": "This will end the ongoing sync process with your hardware device",
"return_address_desc": "In the rare case of a failed swap, our partners can automatically refund your payment to the provided refund address.",
"return_address_desc_external": "Since you chose Send From External, please set a refund address manually below.",
"robinhood_option_description": "Buy and transfer instantly using your debit card, bank account, or Robinhood balance. USA only.",
@@ -1081,7 +1091,6 @@
"share_this_node": "Share this node",
"shared_seed_wallet_groups": "Shared Seed Wallet Groups",
"shared_seed_wallets": "Shared Seed Wallets",
"share_this_node": "Share this node",
"shielding": "Autoshield",
"show": "Show",
"show_address_book_popup": "Show Address Book popup",
@@ -1090,6 +1099,7 @@
"show_balance_toast": "Long press to hide or show balance",
"show_combined_balance": "Show combined balance",
"show_details": "Show Details",
"show_full_address": "Show full address",
"show_hidden_addresses": "Show hidden addresses",
"show_keys": "Show seed/keys",
"show_market_place": "Show Marketplace",
@@ -1132,6 +1142,7 @@
"sort_by": "Sort by",
"spend_key_private": "Spend key (private)",
"spend_key_public": "Spend key (public)",
"standard": "Standard",
"starting_tor_proxy": "Starting Tor proxy",
"status": "Status: ",
"step": "Step",
@@ -1209,10 +1220,12 @@
"to_lightning": "to Lightning",
"to_on_chain": "to on-chain",
"today": "Today",
"token": "Token",
"token_already_exists": "Token already exists",
"token_decimal": "Token decimal (eg: 6 for USDT)",
"token_name": "Token name (eg: Tether)",
"token_symbol": "Token symbol (eg: USDT)",
"token_verified_on_jupiter": "This token is verified on Jupiter",
"tokenID": "ID",
"tokens": "Tokens",
"tokens_strong_warning": "Never send tokens to this address!",
@@ -1476,5 +1489,9 @@
"zcash_card_enable_later": "You can always enable this card later in settings",
"zcash_card_missing_funds": "Missing funds?",
"zcash_card_scan": "Scan",
"zcash_card_warning": "Do not close the app until the procedure completes, if you do so this process will need to restart from scratch."
"zcash_card_warning": "Do not close the app until the procedure completes, if you do so this process will need to restart from scratch.",
"zcash_network_upgrade": "Zcash Network Upgrade",
"zcash_network_upgrade_desc_1": "Zcash has undergone a network upgrade called Ironwood that requires migration of funds before they can be spent. This migration is automatic, privacy-preserving, and starts as soon as you open your Zcash wallet.",
"zcash_network_upgrade_desc_2": "When the migration finishes, your Available Balance will return to normal, and you can continue to send and receive Zcash as usual.",
"zcash_network_upgrade_desc_3": "Please allow your Zcash wallet to finishing syncing, and then leave the app open until migration finishes which can take a few minutes depending on the balance."
}
+37 -3
View File
@@ -76,6 +76,7 @@
"approve_tokens": "Aprobar tokens",
"apps": "Apps",
"arbiscan_history": "Historial de ArbiScan",
"are_you_sure_exit": "¿Seguro que quieres salir?",
"arrive_in_this_address": "${currency} ${tag}llegará a esta dirección",
"ascending": "Ascendente",
"ask_each_time": "Preguntar cada vez",
@@ -89,6 +90,7 @@
"auto_generate_addresses": "Generar direcciones automáticamente",
"auto_generate_subaddresses": "Generar subdirecciones automáticamente",
"automatic": "Automático",
"available": "Disponible",
"available_balance": "Saldo disponible",
"available_balance_description": "El “Saldo Disponible” o “Saldo Confirmado” son fondos que pueden gastarse de inmediato. Si los fondos aparecen en el saldo inferior pero no en el saldo superior, deberás esperar unos minutos a que los fondos entrantes obtengan más confirmaciones de la red. Una vez que tengan más confirmaciones, podrás gastarlos.",
"avg_savings": "Ahorro prom.",
@@ -125,6 +127,7 @@
"block_remaining": "1 bloque restante",
"Blocks_remaining": "${status} bloques restantes",
"bluetooth": "Bluetooth",
"bridging": "Transfiriendo entre cadenas",
"bright_theme": "Brillante",
"bscscan_history": "Historial de BSCScan",
"bump_fee": "Aumentar comisión",
@@ -216,6 +219,8 @@
"color_theme": "Tema de color",
"coming_soon_tag": "Próximamente",
"commit_transaction_amount_fee": "Confirmar transacción\nCantidad: ${amount}\nComisión: ${fee}",
"compatible_services": "Servicios compatibles",
"compatible_services_desc": "Usa la herramienta Escanear para leer los siguientes tipos de códigos QR compatibles con Cake Wallet:",
"configure": "Configurar",
"confirm": "Confirmar",
"confirm_delete_template": "Esta acción eliminará esta plantilla. ¿Deseas continuar?",
@@ -279,6 +284,7 @@
"creating_new_wallet": "Creando una nueva billetera",
"creating_new_wallet_error": "Error: ${description}",
"creation_date": "Fecha de creación",
"crypto_addresses": "Direcciones cripto",
"csv_nothing_to_export": "No hay nada que exportar",
"current_swap": "Intercambio actual",
"current_wallet": "Cartera actual",
@@ -301,6 +307,7 @@
"default_sell_provider": "Proveedor de venta predeterminado",
"delete": "Eliminar",
"delete_account": "Eliminar cuenta",
"delete_this_node": "Eliminar este nodo",
"delete_wallet": "Eliminar monedero",
"delete_wallet_confirm_message": "¿Seguro que deseas eliminar la wallet ${wallet_name}?",
"deleteConnectionConfirmationPrompt": "¿Estás seguro de que quieres eliminar la conexión con",
@@ -330,6 +337,7 @@
"deuro_savings_welcome_description": "dEURO es una stablecoin totalmente descentralizada y colateralizada, vinculada al euro — segura, versátil y resistente a la censura sin tener que depender de oráculos. 1 dEURO = 1 EURO.",
"deuro_tooltip_no_eth": "Para habilitar dEURO, debes tener ETH en tu billetera.",
"deuro_tx_commited_content": "Puede tardar un par de segundos en que la transacción se confirme y se refleje en la pantalla",
"device_confirmation": "Confirmación del dispositivo",
"device_is_signing": "El dispositivo está firmando",
"dfx_option_description": "Compra cripto con EUR y CHF. Para clientes minoristas y corporativos en Europa",
"did_you_back_up_seeds": "¿Hiciste una copia de seguridad de todas tus semillas?",
@@ -466,6 +474,8 @@
"extracted_address_content": "Enviarás fondos a\n${recipient_name}",
"failed_authentication": "Falló la autenticación. ${state_error}",
"faq": "Preguntas frecuentes",
"favorite_token": "Token favorito",
"favorite_token_desc": "El saldo del token favorito se mostrará en la tarjeta de saldo.",
"features": "Funciones",
"fee": "Comisión",
"fee_less_than_min": "La comisión seleccionada es inferior a la mínima. Por favor, aumenta la comisión para poder enviar la transacción.",
@@ -491,6 +501,7 @@
"frozen": "Congelado",
"frozen_balance": "Saldo congelado",
"full_balance": "Saldo total",
"gallery": "Galería",
"gas_exceeds_allowance": "El gas requerido por la transacción excede el límite permitido.",
"gas_price": "Precio del gas",
"general": "General",
@@ -526,10 +537,10 @@
"how_to_connect": "Cómo conectarse",
"how_to_use": "Cómo usar",
"how_to_use_card": "Cómo usar esta tarjeta",
"hww_exit_desc": "Esto finalizará el proceso de emparejamiento en curso con tu dispositivo de hardware",
"i_understand": "Entiendo",
"icon_style": "Estilo de icono",
"id": "ID: ",
"if_you_dont_see_your_device": "Si no ves tu dispositivo arriba, asegúrate de que tu Ledger esté encendido y desbloqueado.",
"ignor": "Ignorar",
"import": "Importar",
"importNFTs": "Importar NFTs",
@@ -541,6 +552,7 @@
"infobox_auto_address": "Su dirección de recepción rotará cada vez que reciba una transacción",
"infobox_multichain": "Utilice esta dirección para recibir cualquier token o coleccionable en",
"infobox_rotation": "Su dirección de recepción rotará cada vez que cierre y vuelva a abrir esta pantalla",
"input": "Entrada",
"inputs": "Entradas",
"insufficient_funds_for_tx": "Fondos insuficientes para ejecutar correctamente la transacción.",
"insufficient_lamport_for_tx": "No tienes suficiente SOL para cubrir la transacción y su comisión. Por favor, añade más SOL a tu billetera o reduce la cantidad de SOL que estás enviando.",
@@ -555,8 +567,8 @@
"keys": "Claves",
"label": "Etiqueta",
"label_address": "Etiquetar dirección",
"last_7_days": "Últimos 7 días",
"last_30_days": "Últimos 30 días",
"last_7_days": "Últimos 7 días",
"learn_more": "Más información",
"ledger_connection_error": "No se pudo conectar a tu Ledger. Inténtalo de nuevo.",
"ledger_error_device_locked": "El Ledger está bloqueado",
@@ -607,6 +619,7 @@
"manage_pow_nodes": "Gestionar nodos PoW",
"manage_providers": "Gestionar proveedores",
"manage_yats": "Gestionar Yats",
"manual_input": "Entrada manual",
"mark_as_redeemed": "Marcar como canjeado",
"market_place": "Marketplace",
"mask": "Máscara",
@@ -652,6 +665,7 @@
"nanogpt_subtitle": "Todos los modelos más recientes (GPT-5.3, Claude 4.6).\nSin suscripción, paga con cripto.",
"narrow": "Estrecho",
"network": "Red",
"networks": "Redes",
"new_first_wallet_text": "Mantener tus criptomonedas seguras es pan comido",
"new_node_testing": "Prueba de nuevo nodo",
"new_subaddress_create": "Crear",
@@ -680,8 +694,10 @@
"node_new": "Nuevo nodo",
"node_port": "Puerto del nodo",
"node_reset_settings_title": "Restablecer configuración",
"node_share_desc": "Escanea este código QR desde la pantalla Escanear para importar este nodo.",
"node_test": "Prueba",
"nodes": "Nodos",
"nodes_desc": "Administra los nodos existentes o añade uno personalizado.",
"nodes_list_reset_to_default_message": "¿Seguro que deseas restablecer la configuración a los valores predeterminados?",
"none_of_selected_providers_can_exchange": "Ninguno de los proveedores seleccionados puede realizar este swap",
"noNFTYet": "Aún no hay NFT",
@@ -691,6 +707,7 @@
"note_tap_to_change": "Nota (toca para cambiar)",
"notification_permission_denied": "El permiso de notificaciones se ha denegado permanentemente. Por favor, habilítalo manualmente en la configuración.",
"nullURIError": "El URI es nulo",
"ocp_desc": "Paga con cripto en tiendas",
"offer_expires_in": "La oferta caduca en: ",
"offline": "Sin conexión",
"ok": "OK",
@@ -717,8 +734,13 @@
"outputs": "Salidas",
"overshot": "Excedido",
"overwrite_amount": "Sobrescribir monto",
"pairing_code": "Código de emparejamiento",
"pairing_code_desc_1": "Tu dispositivo mostrará un código de emparejamiento.",
"pairing_code_desc_2": "Introdúcelo aquí para continuar",
"pairing_error": "Error de emparejamiento",
"pairingInvalidEvent": "Evento de emparejamiento no válido",
"passphrase": "Frase de contraseña (opcional)",
"passphrase_view_keys": "Frase de contraseña",
"passphrases_doesnt_match": "Las frases de contraseña no coinciden, inténtelo de nuevo",
"password": "Contraseña",
"paste": "Pegar",
@@ -734,6 +756,7 @@
"payjoin_unavailable_sheet_content": "Recibir una transacción Payjoin requiere que tenga Bitcoin listo para usar.\n\nEn cuanto su billetera tenga fondos, Payjoin se habilitará automáticamente.",
"payjoin_unavailable_sheet_title": "¿Por qué Payjoin no está disponible?",
"payment_id": "ID de pago: ",
"payment_invoices": "Facturas de pago",
"payment_made_easy": "Pagos fáciles",
"payment_was_received": "Tu pago fue recibido.",
"payments": "Pagos",
@@ -890,6 +913,7 @@
"save": "Guardar",
"save_backup_password": "Asegúrate de haber guardado tu contraseña de copia de seguridad. No podrás importar tus archivos de copia de seguridad sin ella.",
"save_backup_password_alert": "Guardar contraseña de la copia de seguridad",
"save_contact": "Guardar contacto",
"save_to_downloads": "Guardar en Descargas",
"saved_the_trade_id": "He guardado el ID de la operación",
"savings": "Ahorros",
@@ -1039,6 +1063,7 @@
"setup_your_debit_card": "Configura tu tarjeta de débito",
"share": "Compartir",
"share_address": "Compartir dirección",
"share_this_node": "Compartir este nodo",
"shared_seed_wallet_groups": "Grupos de carteras con semilla compartida",
"shared_seed_wallets": "Carteras con semilla compartida",
"show": "Mostrar",
@@ -1046,6 +1071,7 @@
"show_balance": "Mantén pulsado para mostrar el saldo",
"show_balance_send_page": "Toca para revelar",
"show_balance_toast": "Mantén pulsado para ocultar o mostrar el saldo",
"show_combined_balance": "Mostrar saldo combinado",
"show_details": "Mostrar detalles",
"show_hidden_addresses": "Mostrar direcciones ocultas",
"show_keys": "Mostrar frase semilla/claves",
@@ -1111,6 +1137,7 @@
"swap_providers": "Proveedores de intercambio",
"sweeping_wallet": "Cartera de barrido",
"sweeping_wallet_alert": "Esto no debería tardar mucho. NO SALGAS DE ESTA PANTALLA O LOS FONDOS BARRIDOS PODRÍAN PERDERSE.",
"swipe_to_bridge": "Desliza para transferir entre cadenas",
"swipe_to_send": "Desliza para enviar",
"switch_wallet": "Cambiar cartera",
"switchToETHWallet": "Por favor, cambia a una billetera de Ethereum y vuelve a intentarlo.",
@@ -1151,6 +1178,7 @@
"testnet_coins_no_value": "Las monedas de testnet no tienen valor",
"third_intro_content": "Los Yats también existen fuera de Cake Wallet. ¡Cualquier dirección de billetera del mundo puede reemplazarse por un Yat!",
"third_intro_title": "Yat se lleva bien con otros",
"this_can_take_few_seconds": "Esto puede tardar unos segundos",
"this_pair_is_not_supported_warning": "Este par no es compatible con el/los exchange(s) seleccionado(s) actualmente. Seleccione otro exchange.",
"thorchain_contract_address_not_supported": "THORChain no admite envíos a una dirección de contrato",
"thorchain_taproot_address_not_supported": "El proveedor de ThorChain no admite direcciones Taproot. Por favor, cambia la dirección o selecciona otro proveedor.",
@@ -1164,6 +1192,7 @@
"token_decimal": "Decimales del token (ej.: USDT)",
"token_name": "Nombre del token (p. ej., Tether)",
"token_symbol": "Símbolo del token (p. ej.: USDT)",
"token_verified_on_jupiter": "Este token está verificado en Jupiter",
"tokenID": "ID",
"tokens": "Tokens",
"tokens_strong_warning": "¡Nunca envíes tokens a esta dirección!",
@@ -1292,6 +1321,7 @@
"username": "Nombre de usuario",
"username_available": "Nombre de usuario disponible",
"username_character_error": "Los nombres de usuario solo deben contener",
"username_check_your_network": "No se pudo verificar el nombre de usuario. Comprueba tu conexión de red.",
"username_length_error": "Los nombres de usuario deben contener entre 6 y 32 caracteres alfanuméricos.",
"username_length_error_1_64": "Los nombres de usuario deben contener entre 1 y 64 caracteres alfanuméricos.",
"username_not_available": "Este nombre de usuario no está disponible.",
@@ -1302,6 +1332,7 @@
"verify_message": "Verificar mensaje",
"verify_seed": "Verificar frase semilla",
"verify_with_2fa": "Verificar con Cake 2FA",
"verifying_code": "Verificando código",
"version": "Versión ${currentVersion}",
"view_all": "Ver todo",
"view_in_block_explorer": "Ver en el explorador de bloques",
@@ -1313,6 +1344,7 @@
"waitFewSecondForTxUpdate": "Por favor, espera unos segundos para que la transacción se refleje en el historial de transacciones.",
"wallet": "Cartera",
"wallet_accounts": "Cuentas de la cartera",
"wallet_balance": "Saldo de la cartera",
"wallet_group": "Grupo de billeteras",
"wallet_group_description_existing_seed": "Has elegido usar una frase semilla existente para esta billetera. Puedes verificar la frase semilla de nuevo si necesitas confirmarla o anotarla.",
"wallet_group_description_four": "para crear una billetera con una frase semilla completamente nueva.",
@@ -1354,6 +1386,7 @@
"wc_approve_request_title": "Aprobar solicitud",
"wc_connect_request_title": "Solicitud de conexión",
"wc_connected_to": "Conectado a ${name}",
"wc_desc": "Conéctate fácilmente a dApps",
"wc_max_network_fee": "Tarifa máxima de red",
"wc_message_to_sign": "Mensaje para firmar",
"wc_network_fee": "Tarifa de red",
@@ -1405,6 +1438,7 @@
"yat_popup_content": "Ahora puedes enviar y recibir criptomonedas en Cake Wallet con tu Yat, un nombre de usuario corto basado en emojis. Administra tus Yats en cualquier momento desde la pantalla de configuración",
"yat_popup_title": "La dirección de tu billetera se puede convertir en emojis.",
"yes": "Sí",
"yes_exit": "Sí. Salir",
"yesterday": "Ayer",
"you_now_have_debit_card": "Ahora tienes una tarjeta de débito",
"you_pay": "Tú pagas",
@@ -1454,4 +1488,4 @@
"wallet_balance": "Saldo de la cartera",
"wc_desc": "Conéctate fácilmente a dApps",
"yes_exit": "Sí. Salir"
}
}
+39 -2
View File
@@ -76,6 +76,7 @@
"approve_tokens": "تأیید توکن‌ها",
"apps": "برنامه‌ها",
"arbiscan_history": "تاریخچه ArbiScan",
"are_you_sure_exit": "آیا مطمئن هستید که می‌خواهید خارج شوید؟",
"arrive_in_this_address": "${currency} ${tag}به این آدرس خواهد رسید",
"ascending": "صعودی",
"ask_each_time": "هر بار بپرس",
@@ -89,6 +90,7 @@
"auto_generate_addresses": "تولید خودکار آدرس‌ها",
"auto_generate_subaddresses": "تولید خودکار زیرآدرس‌ها",
"automatic": "خودکار",
"available": "در دسترس",
"available_balance": "موجودی در دسترس",
"available_balance_description": "«موجودی قابل‌دسترس» یا «موجودی تأییدشده» وجوهی هستند که می‌توان بلافاصله خرج کرد.\nاگر وجوه در موجودی پایین‌تر ظاهر شوند اما در موجودی بالا نباشند، باید چند دقیقه صبر کنید تا وجوه ورودی تأییدهای شبکه بیشتری دریافت کنند.\nپس از دریافت تأییدهای بیشتر، قابل خرج کردن خواهند بود.",
"avg_savings": "میانگین صرفه‌جویی",
@@ -118,11 +120,14 @@
"bitcoin_amount_display": "نمایش مقدار بیت‌کوین",
"bitcoin_dark_theme": "تم تیره بیت‌کوین",
"bitcoin_light_theme": "تم روشن بیت‌کوین",
"bitcoin_lightning_deposit": "واریز",
"bitcoin_lightning_withdraw": "برداشت",
"bitcoin_payments_require_1_confirmation": "پرداخت‌های بیت‌کوین به ۱ تأیید نیاز دارند که ممکن است ۲۰ دقیقه یا بیشتر طول بکشد.\nاز شکیبایی شما سپاسگزاریم! پس از تأیید پرداخت، از طریق ایمیل به شما اطلاع داده خواهد شد.",
"block_height": "ارتفاع بلاک",
"block_remaining": "۱ بلاک باقی مانده",
"Blocks_remaining": "${status} بلاک باقی‌مانده",
"bluetooth": "بلوتوث",
"bridging": "در حال پل‌زدن",
"bright_theme": "روشن",
"bscscan_history": "تاریخچه BSCScan",
"bump_fee": "افزایش کارمزد",
@@ -214,6 +219,8 @@
"color_theme": "تم رنگ",
"coming_soon_tag": "به‌زودی",
"commit_transaction_amount_fee": "ثبت تراکنش\nمقدار: ${amount}\nکارمزد: ${fee}",
"compatible_services": "سرویس‌های سازگار",
"compatible_services_desc": "از ابزار اسکن برای خواندن انواع کدهای QR زیر که در Cake Wallet پشتیبانی می‌شوند استفاده کنید:",
"configure": "پیکربندی",
"confirm": "تأیید",
"confirm_delete_template": "این اقدام این قالب را حذف می‌کند.\nآیا مایلید ادامه دهید؟",
@@ -277,6 +284,7 @@
"creating_new_wallet": "در حال ایجاد کیف پول جدید",
"creating_new_wallet_error": "خطا: ${description}",
"creation_date": "تاریخ ایجاد",
"crypto_addresses": "آدرس‌های رمزارز",
"csv_nothing_to_export": "چیزی برای صدور وجود ندارد",
"current_swap": "سواپ فعلی",
"current_wallet": "کیف پول فعلی",
@@ -299,6 +307,7 @@
"default_sell_provider": "ارائه‌دهنده پیش‌فرض فروش",
"delete": "حذف",
"delete_account": "حذف حساب",
"delete_this_node": "حذف این نود",
"delete_wallet": "حذف کیف پول",
"delete_wallet_confirm_message": "آیا مطمئن هستید که می‌خواهید کیف پول ${wallet_name} را حذف کنید؟",
"deleteConnectionConfirmationPrompt": "آیا مطمئن هستید که می‌خواهید اتصال به",
@@ -328,6 +337,7 @@
"deuro_savings_welcome_description": "dEURO یک استیبل‌کوین کاملاً غیرمتمرکز و وثیقه‌گذاری‌شده است که به یورو متصل است — امن، چندمنظوره و مقاوم در برابر سانسور، بدون نیاز به تکیه بر اوراکل‌ها. 1 dEURO = 1 EURO.",
"deuro_tooltip_no_eth": "برای فعال‌سازی dEURO، باید در کیف پول خود ETH داشته باشید.",
"deuro_tx_commited_content": "ممکن است چند ثانیه طول بکشد تا تراکنش تأیید شود و در صفحه نمایش داده شود",
"device_confirmation": "تأیید دستگاه",
"device_is_signing": "دستگاه در حال امضا کردن است",
"dfx_option_description": "خرید کریپتو با EUR و CHF.\nبرای مشتریان خرد و شرکتی در اروپا",
"did_you_back_up_seeds": "آیا از تمام عبارت‌های بازیابی خود نسخهٔ پشتیبان تهیه کرده‌اید؟",
@@ -464,6 +474,8 @@
"extracted_address_content": "شما در حال ارسال وجه به\n${recipient_name} هستید",
"failed_authentication": "احراز هویت ناموفق بود. ${state_error}",
"faq": "پرسش‌های متداول",
"favorite_token": "توکن موردعلاقه",
"favorite_token_desc": "موجودی توکن موردعلاقه روی کارت موجودی نمایش داده می‌شود.",
"features": "ویژگی‌ها",
"fee": "کارمزد",
"fee_less_than_min": "کارمزد انتخاب‌شده کمتر از حداقل است؛ لطفاً برای اینکه بتوانید تراکنش را ارسال کنید، کارمزد را افزایش دهید",
@@ -489,6 +501,7 @@
"frozen": "منجمد",
"frozen_balance": "موجودی فریز شده",
"full_balance": "موجودی کامل",
"gallery": "گالری",
"gas_exceeds_allowance": "گس (Gas) مورد نیاز برای تراکنش از حد مجاز فراتر می‌رود.",
"gas_price": "قیمت گس",
"general": "عمومی",
@@ -524,10 +537,10 @@
"how_to_connect": "چگونه متصل شویم",
"how_to_use": "نحوه استفاده",
"how_to_use_card": "چگونه از این کارت استفاده کنیم",
"hww_exit_desc": "این کار، فرایند جفت‌سازی در حال انجام با دستگاه سخت‌افزاری شما را پایان می‌دهد",
"i_understand": "متوجه شدم",
"icon_style": "سبک آیکون",
"id": "شناسه: ",
"if_you_dont_see_your_device": "اگر دستگاه خود را در بالا نمی‌بینید، لطفاً مطمئن شوید که Ledger شما روشن است و قفل آن باز شده است!",
"ignor": "نادیده گرفتن",
"import": "درون‌ریزی",
"importNFTs": "وارد کردن NFTها",
@@ -539,6 +552,7 @@
"infobox_auto_address": "آدرس دریافت شما هر بار که یک تراکنش دریافت می‌کنید تغییر می‌کند",
"infobox_multichain": "از این آدرس برای دریافت هر توکن یا کالکتیبل در",
"infobox_rotation": "هر بار که این صفحه را ببندید و دوباره باز کنید، آدرس دریافت شما تغییر می‌کند",
"input": "ورودی",
"inputs": "ورودی‌ها",
"insufficient_funds_for_tx": "موجودی کافی برای انجام موفقیت‌آمیز تراکنش وجود ندارد.",
"insufficient_lamport_for_tx": "شما SOL کافی برای پوشش تراکنش و کارمزد آن ندارید.\nلطفاً SOL بیشتری به کیف پول خود اضافه کنید یا مقدار SOL ارسالی را کاهش دهید.",
@@ -604,6 +618,7 @@
"manage_pow_nodes": "مدیریت نودهای PoW",
"manage_providers": "مدیریت ارائه‌دهندگان",
"manage_yats": "مدیریت Yatها",
"manual_input": "ورود دستی",
"mark_as_redeemed": "علامت‌گذاری به‌عنوان بازخریدشده",
"market_place": "بازار",
"mask": "ماسک",
@@ -649,6 +664,7 @@
"nanogpt_subtitle": "همه جدیدترین مدل‌ها (GPT-5.3, Claude 4.6).\nبدون اشتراک، پرداخت با کریپتو.",
"narrow": "باریک",
"network": "شبکه",
"networks": "شبکه‌ها",
"new_first_wallet_text": "امن نگه داشتن رمزارزهای شما مثل آب خوردن است",
"new_node_testing": "آزمایش نود جدید",
"new_subaddress_create": "ایجاد",
@@ -677,8 +693,10 @@
"node_new": "گره جدید",
"node_port": "پورت نود",
"node_reset_settings_title": "بازنشانی تنظیمات",
"node_share_desc": "برای وارد کردن این نود، این کد QR را از صفحهٔ اسکن اسکن کنید.",
"node_test": "آزمایشی",
"nodes": "نودها",
"nodes_desc": "نودهای موجود را مدیریت کنید یا یک نود سفارشی اضافه کنید.",
"nodes_list_reset_to_default_message": "آیا مطمئن هستید که می‌خواهید تنظیمات را به حالت پیش‌فرض بازنشانی کنید؟",
"none_of_selected_providers_can_exchange": "هیچ‌یک از ارائه‌دهندگان انتخاب‌شده نمی‌توانند این سواپ را انجام دهند",
"noNFTYet": "هنوز هیچ NFT‌ای وجود ندارد",
@@ -688,6 +706,7 @@
"note_tap_to_change": "یادداشت (برای تغییر ضربه بزنید)",
"notification_permission_denied": "مجوز اعلان‌ها به‌طور دائمی رد شده است، لطفاً آن را به‌صورت دستی در تنظیمات فعال کنید",
"nullURIError": "URI تهی است",
"ocp_desc": "پرداخت با رمزارز در فروشگاه‌ها",
"offer_expires_in": "این پیشنهاد تا این زمان معتبر است: ",
"offline": "آفلاین",
"ok": "تأیید",
@@ -714,6 +733,10 @@
"outputs": "خروجی‌ها",
"overshot": "فراتر رفت",
"overwrite_amount": "بازنویسی مقدار",
"pairing_code": "کد جفت‌سازی",
"pairing_code_desc_1": "دستگاه شما یک کد جفت‌سازی نمایش می‌دهد.",
"pairing_code_desc_2": "برای ادامه، اینجا وارد کنید",
"pairing_error": "خطای جفت‌سازی",
"pairingInvalidEvent": "رویداد نامعتبر جفت‌سازی",
"passphrase": "عبارت عبور (اختیاری)",
"passphrase_view_keys": "عبارت عبور (Passphrase)",
@@ -732,6 +755,7 @@
"payjoin_unavailable_sheet_content": "برای دریافت یک تراکنش Payjoin باید بیت‌کوین آمادهٔ استفاده داشته باشید.\n\nبه محض اینکه کیف پول شما موجودی داشته باشد، Payjoin به‌طور خودکار فعال می‌شود.",
"payjoin_unavailable_sheet_title": "چرا Payjoin در دسترس نیست؟",
"payment_id": "شناسه پرداخت: ",
"payment_invoices": "صورتحساب‌های پرداخت",
"payment_made_easy": "پرداخت‌ها آسان شده‌اند",
"payment_was_received": "پرداخت شما دریافت شد.",
"payments": "پرداخت‌ها",
@@ -887,6 +911,7 @@
"save": "ذخیره",
"save_backup_password": "لطفاً مطمئن شوید که رمز عبور پشتیبان خود را ذخیره کرده‌اید.\nبدون آن نمی‌توانید فایل‌های پشتیبان خود را وارد کنید.",
"save_backup_password_alert": "ذخیره گذرواژهٔ پشتیبان",
"save_contact": "ذخیره مخاطب",
"save_to_downloads": "ذخیره در پوشهٔ دانلودها",
"saved_the_trade_id": "شناسه معامله را ذخیره کردم",
"savings": "پس‌انداز",
@@ -1036,6 +1061,7 @@
"setup_your_debit_card": "راه‌اندازی کارت دبیت خود",
"share": "اشتراک‌گذاری",
"share_address": "اشتراک‌گذاری آدرس",
"share_this_node": "اشتراک‌گذاری این نود",
"shared_seed_wallet_groups": "گروه‌های کیف پول با سید مشترک",
"shared_seed_wallets": "کیف پول‌های سید مشترک",
"show": "نمایش",
@@ -1043,6 +1069,7 @@
"show_balance": "برای نمایش موجودی، لمس طولانی کنید",
"show_balance_send_page": "برای آشکار کردن ضربه بزنید",
"show_balance_toast": "برای مخفی یا نمایش دادن موجودی، لمس طولانی کنید",
"show_combined_balance": "نمایش موجودی ترکیبی",
"show_details": "نمایش جزئیات",
"show_hidden_addresses": "نمایش آدرس‌های مخفی",
"show_keys": "نمایش عبارت بازیابی/کلیدها",
@@ -1108,6 +1135,7 @@
"swap_providers": "ارائه‌دهندگان سواپ",
"sweeping_wallet": "در حال انتقال موجودی کیف پول",
"sweeping_wallet_alert": "این کار نباید طول بکشد.\nاین صفحه را ترک نکنید، وگرنه ممکن است وجوه انتقال‌یافته از دست برود.",
"swipe_to_bridge": "برای پل‌زدن، انگشت خود را بکشید",
"swipe_to_send": "برای ارسال، انگشت خود را بکشید",
"switch_wallet": "تعویض کیف پول",
"switchToETHWallet": "لطفاً به کیف پول اتریوم تغییر دهید و دوباره تلاش کنید",
@@ -1148,6 +1176,7 @@
"testnet_coins_no_value": "کوین‌های تست‌نت هیچ ارزشی ندارند",
"third_intro_content": "Yatها خارج از Cake Wallet هم وجود دارند.\nهر آدرس کیف پولی در دنیا می‌تواند با یک Yat جایگزین شود!",
"third_intro_title": "Yat با دیگران به‌خوبی کار می‌کند",
"this_can_take_few_seconds": "این ممکن است چند ثانیه طول بکشد",
"this_pair_is_not_supported_warning": "این جفت‌ارز با صرافی(های) انتخاب‌شده در حال حاضر پشتیبانی نمی‌شود.\nلطفاً صرافی دیگری را انتخاب کنید.",
"thorchain_contract_address_not_supported": "THORChain از ارسال به آدرس قرارداد پشتیبانی نمی‌کند",
"thorchain_taproot_address_not_supported": "ارائه‌دهنده ThorChain از آدرس‌های Taproot پشتیبانی نمی‌کند.\nلطفاً آدرس را تغییر دهید یا ارائه‌دهنده دیگری را انتخاب کنید.",
@@ -1161,6 +1190,7 @@
"token_decimal": "اعشار توکن (مثلاً: ۶ برای USDT)",
"token_name": "نام توکن (مثلاً: Tether)",
"token_symbol": "نماد توکن (مثلاً: USDT)",
"token_verified_on_jupiter": "این توکن در Jupiter تأیید شده است",
"tokenID": "شناسه",
"tokens": "توکن‌ها",
"tokens_strong_warning": "هرگز توکن‌ها را به این آدرس ارسال نکنید!",
@@ -1252,6 +1282,7 @@
"tx_rejected_dust_output": "تراکنش به‌دلیل قوانین شبکه رد شد؛ مقدار خروجی کم است (داست).\nلطفاً مقدار را افزایش دهید.",
"tx_rejected_dust_output_send_all": "تراکنش طبق قوانین شبکه رد شد؛ مقدار خروجی کم است (داست).\nلطفاً موجودی کوین‌های انتخاب‌شده در Coin Control را بررسی کنید.",
"tx_rejected_vout_negative": "موجودی کافی برای پرداخت کارمزدهای این تراکنش وجود ندارد.\nلطفاً موجودی کوین‌ها را در بخش Coin Control بررسی کنید.",
"tx_retry_message": "هنگام پردازش تراکنش خطایی رخ داد. لطفاً تراکنش را دوباره تلاش کنید.",
"tx_wrong_balance_exception": "شما به اندازه کافی ${currency} برای ارسال این مقدار ندارید.",
"tx_wrong_balance_with_amount_exception": "شما به اندازه کافی ${currency} برای ارسال مبلغ کل ${amount} ندارید",
"tx_zero_fee_exception": "نمی‌توان تراکنشی با کارمزد ۰ ارسال کرد.\nسعی کنید نرخ را افزایش دهید یا برای دریافت آخرین برآوردها اتصال خود را بررسی کنید.",
@@ -1276,6 +1307,7 @@
"upto": "تا ${value}",
"usb": "USB",
"use": "تغییر به ",
"use_blink_protection": "استفاده از محافظت Blink",
"use_card_info_three": "از کارت دیجیتال به‌صورت آنلاین یا با روش‌های پرداخت بدون تماس استفاده کنید.",
"use_card_info_two": "وجوه زمانی که در حساب پیش‌پرداخت نگهداری می‌شوند به دلار آمریکا (USD) تبدیل می‌شوند، نه به ارزهای دیجیتال.",
"use_device_theme": "استفاده از تم دستگاه",
@@ -1287,6 +1319,7 @@
"username": "نام کاربری",
"username_available": "نام کاربری در دسترس است",
"username_character_error": "نام‌های کاربری فقط باید شامل",
"username_check_your_network": "بررسی نام کاربری امکان‌پذیر نیست. لطفاً اتصال شبکهٔ خود را بررسی کنید.",
"username_length_error": "نام‌های کاربری باید شامل ۶ تا ۳۲ کاراکتر حرفی-عددی باشند.",
"username_length_error_1_64": "نام‌های کاربری باید شامل ۱ تا ۶۴ نویسهٔ حرفی-عددی باشند.",
"username_not_available": "این نام کاربری در دسترس نیست.",
@@ -1297,6 +1330,7 @@
"verify_message": "تأیید پیام",
"verify_seed": "تأیید عبارت بازیابی",
"verify_with_2fa": "تأیید با Cake 2FA",
"verifying_code": "در حال تأیید کد",
"version": "نسخه ${currentVersion}",
"view_all": "مشاهده همه",
"view_in_block_explorer": "مشاهده در بلاک اکسپلورر",
@@ -1308,6 +1342,7 @@
"waitFewSecondForTxUpdate": "لطفاً چند ثانیه صبر کنید تا تراکنش در تاریخچه تراکنش‌ها نمایش داده شود",
"wallet": "کیف پول",
"wallet_accounts": "حساب‌های کیف پول",
"wallet_balance": "موجودی کیف پول",
"wallet_group": "گروه کیف پول",
"wallet_group_description_existing_seed": "شما انتخاب کرده‌اید که از یک سید موجود برای این کیف پول استفاده کنید.\nاگر لازم است آن را تأیید کنید یا یادداشتش کنید، می‌توانید سید را دوباره بررسی کنید.",
"wallet_group_description_four": "برای ایجاد یک کیف پول با سید کاملاً جدید.",
@@ -1349,6 +1384,7 @@
"wc_approve_request_title": "درخواست را تایید کنید",
"wc_connect_request_title": "درخواست اتصال",
"wc_connected_to": "متصل به ${name}",
"wc_desc": "به‌راحتی به dAppها متصل شوید",
"wc_max_network_fee": "حداکثر هزینه شبکه",
"wc_message_to_sign": "برای امضا پیام دهید",
"wc_network_fee": "هزینه شبکه",
@@ -1399,6 +1435,7 @@
"yat_popup_content": "اکنون می‌توانید در Cake Wallet با Yat خود — یک نام کاربری کوتاه مبتنی بر ایموجی — رمزارز ارسال و دریافت کنید.\nYatها را هر زمان از صفحه تنظیمات مدیریت کنید",
"yat_popup_title": "آدرس کیف پول شما می‌تواند به ایموجی تبدیل شود.",
"yes": "بله",
"yes_exit": "بله. خروج",
"yesterday": "دیروز",
"you_now_have_debit_card": "شما اکنون یک کارت دبیت دارید",
"you_pay": "شما پرداخت می‌کنید",
@@ -1451,4 +1488,4 @@
"wallet_balance": "موجودی کیف پول",
"wc_desc": "به‌راحتی به dAppها متصل شوید",
"yes_exit": "بله. خروج"
}
}
+36 -2
View File
@@ -76,6 +76,7 @@
"approve_tokens": "Approuver les tokens",
"apps": "Apps",
"arbiscan_history": "Historique ArbiScan",
"are_you_sure_exit": "Êtes-vous sûr de vouloir quitter ?",
"arrive_in_this_address": "${currency} ${tag}arriveront à cette adresse",
"ascending": "Croissant",
"ask_each_time": "Demander à chaque fois",
@@ -89,6 +90,7 @@
"auto_generate_addresses": "Générer automatiquement des adresses",
"auto_generate_subaddresses": "Générer automatiquement des sous-adresses",
"automatic": "Automatique",
"available": "Disponible",
"available_balance": "Solde disponible",
"available_balance_description": "Le « Solde disponible » ou le « Solde confirmé » correspond aux fonds que vous pouvez dépenser immédiatement. Si des fonds apparaissent dans le solde inférieur mais pas dans le solde supérieur, vous devez attendre quelques minutes pour que les fonds entrants obtiennent davantage de confirmations sur le réseau. Une fois qu’ils auront reçu plus de confirmations, ils pourront être dépensés.",
"avg_savings": "Économies moy.",
@@ -125,6 +127,7 @@
"block_remaining": "1 bloc restant",
"Blocks_remaining": "${status} blocs restants",
"bluetooth": "Bluetooth",
"bridging": "Transfert inter-chaînes",
"bright_theme": "Clair",
"bscscan_history": "Historique BSCScan",
"bump_fee": "Augmenter les frais",
@@ -216,6 +219,8 @@
"color_theme": "Thème de couleur",
"coming_soon_tag": "Bientôt disponible",
"commit_transaction_amount_fee": "Confirmer la transaction\nMontant : ${amount}\nFrais : ${fee}",
"compatible_services": "Services compatibles",
"compatible_services_desc": "Utilisez l'outil Scan pour lire les types de codes QR suivants pris en charge par Cake Wallet :",
"configure": "Configurer",
"confirm": "Confirmer",
"confirm_delete_template": "Cette action supprimera ce modèle. Souhaitez-vous continuer ?",
@@ -279,6 +284,7 @@
"creating_new_wallet": "Création d'un nouveau portefeuille",
"creating_new_wallet_error": "Erreur : ${description}",
"creation_date": "Date de création",
"crypto_addresses": "Adresses crypto",
"csv_nothing_to_export": "Nothing to export",
"current_swap": "Swap en cours",
"current_wallet": "Portefeuille actuel",
@@ -301,6 +307,7 @@
"default_sell_provider": "Fournisseur de vente par défaut",
"delete": "Supprimer",
"delete_account": "Supprimer le compte",
"delete_this_node": "Supprimer ce nœud",
"delete_wallet": "Supprimer le portefeuille",
"delete_wallet_confirm_message": "Êtes-vous sûr de vouloir supprimer le portefeuille ${wallet_name} ?",
"deleteConnectionConfirmationPrompt": "Êtes-vous sûr de vouloir supprimer la connexion à",
@@ -330,6 +337,7 @@
"deuro_savings_welcome_description": "dEURO est un stablecoin entièrement décentralisé et surcollatéralisé, indexé sur l’euro — sécurisé, polyvalent et résistant à la censure, sans avoir à dépendre d’oracles. 1 dEURO = 1 EURO.",
"deuro_tooltip_no_eth": "Pour activer dEURO, vous devez avoir de l'ETH dans votre portefeuille.",
"deuro_tx_commited_content": "La transaction peut prendre quelques secondes à être confirmée et à s'afficher à l'écran",
"device_confirmation": "Confirmation sur l'appareil",
"device_is_signing": "L'appareil signe",
"dfx_option_description": "Achetez des cryptos avec EUR & CHF. Pour les clients particuliers et entreprises en Europe",
"did_you_back_up_seeds": "Avez-vous sauvegardé toutes vos phrases de récupération ?",
@@ -466,6 +474,8 @@
"extracted_address_content": "Vous allez envoyer des fonds à\n${recipient_name}",
"failed_authentication": "Échec de l'authentification. ${state_error}",
"faq": "FAQ",
"favorite_token": "Jeton favori",
"favorite_token_desc": "Le solde du jeton favori s'affichera sur la carte de solde.",
"features": "Fonctionnalités",
"fee": "Frais",
"fee_less_than_min": "Les frais sélectionnés sont inférieurs au minimum. Veuillez augmenter les frais afin de pouvoir envoyer la transaction.",
@@ -491,6 +501,7 @@
"frozen": "Gelé",
"frozen_balance": "Solde gelé",
"full_balance": "Solde total",
"gallery": "Galerie",
"gas_exceeds_allowance": "Le gas requis par la transaction dépasse l'allocation.",
"gas_price": "Prix du gas",
"general": "Général",
@@ -526,10 +537,10 @@
"how_to_connect": "Comment se connecter",
"how_to_use": "Comment utiliser",
"how_to_use_card": "Comment utiliser cette carte",
"hww_exit_desc": "Cela mettra fin au processus de jumelage en cours avec votre appareil matériel",
"i_understand": "Je comprends",
"icon_style": "Style d'icône",
"id": "ID : ",
"if_you_dont_see_your_device": "Si vous ne voyez pas votre appareil ci‑dessus, assurez‑vous que votre Ledger est allumé et déverrouillé !",
"ignor": "Ignorer",
"import": "Importer",
"importNFTs": "Importer des NFTs",
@@ -541,6 +552,7 @@
"infobox_auto_address": "Votre adresse de réception changera à chaque fois que vous recevrez une transaction",
"infobox_multichain": "Utilisez cette adresse pour recevoir n'importe quel jeton ou objet de collection sur",
"infobox_rotation": "Votre adresse de réception sera renouvelée à chaque fois que vous fermerez et rouvrirez cet écran",
"input": "Entrée",
"inputs": "Entrées",
"insufficient_funds_for_tx": "Fonds insuffisants pour exécuter la transaction avec succès.",
"insufficient_lamport_for_tx": "Vous n'avez pas assez de SOL pour couvrir la transaction et ses frais. Veuillez ajouter du SOL à votre portefeuille ou réduire le montant de SOL que vous envoyez.",
@@ -606,6 +618,7 @@
"manage_pow_nodes": "Gérer les nœuds PoW",
"manage_providers": "Gérer les prestataires",
"manage_yats": "Gérer les Yats",
"manual_input": "Saisie manuelle",
"mark_as_redeemed": "Marquer comme utilisé",
"market_place": "Marketplace",
"mask": "Masquer",
@@ -651,6 +664,7 @@
"nanogpt_subtitle": "Tous les modèles les plus récents (GPT-5.3, Claude 4.6).\nPas d'abonnement, payez en crypto.",
"narrow": "Étroit",
"network": "Réseau",
"networks": "Réseaux",
"new_first_wallet_text": "Garder vos cryptos en sécurité, c'est du gâteau",
"new_node_testing": "Test d’un nouveau nœud",
"new_subaddress_create": "Créer",
@@ -679,8 +693,10 @@
"node_new": "Nouveau nœud",
"node_port": "Port du nœud",
"node_reset_settings_title": "Réinitialiser les paramètres",
"node_share_desc": "Scannez ce code QR depuis l'écran Scan pour importer ce nœud.",
"node_test": "Test",
"nodes": "Nœuds",
"nodes_desc": "Gérez les nœuds existants ou ajoutez-en un personnalisé.",
"nodes_list_reset_to_default_message": "Êtes-vous sûr de vouloir réinitialiser les paramètres par défaut ?",
"none_of_selected_providers_can_exchange": "Aucun des fournisseurs sélectionnés ne peut effectuer ce swap",
"noNFTYet": "Aucun NFT pour le moment",
@@ -690,6 +706,7 @@
"note_tap_to_change": "Note (appuyez pour modifier)",
"notification_permission_denied": "L'autorisation des notifications a été refusée de manière permanente. Veuillez l'activer manuellement dans les paramètres.",
"nullURIError": "L'URI est null",
"ocp_desc": "Payez avec des cryptos en magasin",
"offer_expires_in": "L'offre expire dans : ",
"offline": "Hors ligne",
"ok": "OK",
@@ -716,8 +733,13 @@
"outputs": "Sorties",
"overshot": "Dépassement",
"overwrite_amount": "Écraser le montant",
"pairing_code": "Code de jumelage",
"pairing_code_desc_1": "Votre appareil affichera un code de jumelage.",
"pairing_code_desc_2": "Saisissez-le ici pour continuer",
"pairing_error": "Erreur de jumelage",
"pairingInvalidEvent": "Événement de jumelage non valide",
"passphrase": "Phrase secrète (facultatif)",
"passphrase_view_keys": "Phrase secrète",
"passphrases_doesnt_match": "Les phrases secrètes ne correspondent pas, veuillez réessayer",
"password": "Mot de passe",
"paste": "Coller",
@@ -733,6 +755,7 @@
"payjoin_unavailable_sheet_content": "La réception d'une transaction Payjoin nécessite que vous ayez des bitcoins disponibles.\n\nDès que votre portefeuille sera approvisionné, Payjoin sera automatiquement activé.",
"payjoin_unavailable_sheet_title": "Pourquoi Payjoin est-il indisponible ?",
"payment_id": "ID de paiement : ",
"payment_invoices": "Factures de paiement",
"payment_made_easy": "Paiements simplifiés",
"payment_was_received": "Votre paiement a été reçu.",
"payments": "Paiements",
@@ -888,6 +911,7 @@
"save": "Enregistrer",
"save_backup_password": "Veuillez vous assurer d'avoir bien enregistré votre mot de passe de sauvegarde. Vous ne pourrez pas importer vos fichiers de sauvegarde sans celui-ci.",
"save_backup_password_alert": "Enregistrer le mot de passe de sauvegarde",
"save_contact": "Enregistrer le contact",
"save_to_downloads": "Enregistrer dans Téléchargements",
"saved_the_trade_id": "J'ai enregistré l'ID de la transaction",
"savings": "Épargne",
@@ -1037,6 +1061,7 @@
"setup_your_debit_card": "Configurez votre carte de débit",
"share": "Partager",
"share_address": "Partager l’adresse",
"share_this_node": "Partager ce nœud",
"shared_seed_wallet_groups": "Groupes de portefeuilles à phrase de récupération partagée",
"shared_seed_wallets": "Portefeuilles à phrase de récupération partagée",
"show": "Afficher",
@@ -1044,6 +1069,7 @@
"show_balance": "Appuyez longuement pour afficher le solde",
"show_balance_send_page": "Appuyez pour afficher",
"show_balance_toast": "Appuyez longuement pour masquer ou afficher le solde",
"show_combined_balance": "Afficher le solde combiné",
"show_details": "Afficher les détails",
"show_hidden_addresses": "Afficher les adresses masquées",
"show_keys": "Afficher la phrase de récupération/les clés",
@@ -1109,6 +1135,7 @@
"swap_providers": "Fournisseurs de swap",
"sweeping_wallet": "Balayage du portefeuille",
"sweeping_wallet_alert": "Cela ne devrait pas prendre longtemps. NE QUITTEZ PAS CET ÉCRAN, SINON LES FONDS BALAYÉS RISQUENT D’ÊTRE PERDUS.",
"swipe_to_bridge": "Glissez pour transférer (bridge)",
"swipe_to_send": "Faites glisser pour envoyer",
"switch_wallet": "Changer de portefeuille",
"switchToETHWallet": "Veuillez passer à un portefeuille Ethereum et réessayer",
@@ -1149,6 +1176,7 @@
"testnet_coins_no_value": "Les coins de testnet n'ont aucune valeur",
"third_intro_content": "Les Yats existent aussi en dehors de Cake Wallet. N'importe quelle adresse de portefeuille peut être remplacée par un Yat !",
"third_intro_title": "Yat s'entend bien avec les autres",
"this_can_take_few_seconds": "Cela peut prendre quelques secondes",
"this_pair_is_not_supported_warning": "Cette paire n'est pas prise en charge avec le(s) échange(s) actuellement sélectionné(s). Veuillez sélectionner un autre échange.",
"thorchain_contract_address_not_supported": "THORChain ne prend pas en charge l'envoi vers une adresse de contrat",
"thorchain_taproot_address_not_supported": "Le fournisseur ThorChain ne prend pas en charge les adresses Taproot. Veuillez modifier l'adresse ou sélectionner un autre fournisseur.",
@@ -1162,6 +1190,7 @@
"token_decimal": "Décimales du token (ex. : USDT)",
"token_name": "Nom du jeton (ex. : Tether)",
"token_symbol": "Symbole du jeton (ex. : USDT)",
"token_verified_on_jupiter": "Ce jeton est vérifié sur Jupiter",
"tokenID": "ID",
"tokens": "Jetons",
"tokens_strong_warning": "N'envoyez jamais de jetons à cette adresse !",
@@ -1290,6 +1319,7 @@
"username": "Nom d'utilisateur",
"username_available": "Nom d'utilisateur disponible",
"username_character_error": "Les noms d'utilisateur ne doivent contenir que",
"username_check_your_network": "Impossible de vérifier le nom d'utilisateur. Veuillez vérifier votre connexion réseau.",
"username_length_error": "Les noms d'utilisateur doivent contenir entre 6 et 32 caractères alphanumériques.",
"username_length_error_1_64": "Les noms d'utilisateur doivent contenir entre 1 et 64 caractères alphanumériques.",
"username_not_available": "Ce nom d'utilisateur n'est pas disponible.",
@@ -1300,6 +1330,7 @@
"verify_message": "Vérifier le message",
"verify_seed": "Vérifier la phrase de récupération",
"verify_with_2fa": "Vérifier avec Cake 2FA",
"verifying_code": "Vérification du code",
"version": "Version ${currentVersion}",
"view_all": "Voir tout",
"view_in_block_explorer": "Voir dans l'explorateur de blocs",
@@ -1311,6 +1342,7 @@
"waitFewSecondForTxUpdate": "Veuillez patienter quelques secondes pour que la transaction apparaisse dans l'historique des transactions.",
"wallet": "Portefeuille",
"wallet_accounts": "Comptes du portefeuille",
"wallet_balance": "Solde du portefeuille",
"wallet_group": "Groupe de portefeuilles",
"wallet_group_description_existing_seed": "Vous avez choisi d'utiliser une seed existante pour ce portefeuille. Vous pouvez la vérifier à nouveau si vous devez la confirmer ou la noter.",
"wallet_group_description_four": "pour créer un portefeuille avec une nouvelle phrase mnémonique.",
@@ -1352,6 +1384,7 @@
"wc_approve_request_title": "Approuver la demande",
"wc_connect_request_title": "Demande de connexion",
"wc_connected_to": "Connecté à ${name}",
"wc_desc": "Connectez-vous facilement aux dApps",
"wc_max_network_fee": "Frais de réseau maximum",
"wc_message_to_sign": "Message à signer",
"wc_network_fee": "Frais de réseau",
@@ -1402,6 +1435,7 @@
"yat_popup_content": "Vous pouvez désormais envoyer et recevoir des cryptos dans Cake Wallet avec votre Yat — un nom d'utilisateur court basé sur des emojis. Gérez vos Yats à tout moment depuis l'écran des paramètres",
"yat_popup_title": "L'adresse de votre portefeuille peut être convertie en emojis.",
"yes": "Oui",
"yes_exit": "Oui. Quitter",
"yesterday": "Hier",
"you_now_have_debit_card": "Vous avez maintenant une carte de débit",
"you_pay": "Vous payez",
@@ -1451,4 +1485,4 @@
"wallet_balance": "Solde du portefeuille",
"wc_desc": "Connectez-vous facilement aux dApps",
"yes_exit": "Oui. Quitter"
}
}
File diff suppressed because it is too large Load Diff
+36 -2
View File
@@ -76,6 +76,7 @@
"approve_tokens": "Amince token",
"apps": "Manhajoji",
"arbiscan_history": "Tarihin ArbiScan",
"are_you_sure_exit": "Kun tabbata kuna so ku fita?",
"arrive_in_this_address": "${currency} ${tag} za su iso a wannan adireshin",
"ascending": "Hawa",
"ask_each_time": "Tambaya kowane lokaci",
@@ -89,6 +90,7 @@
"auto_generate_addresses": "Samar da adireshi ta atomatik",
"auto_generate_subaddresses": "Ƙirƙiri ƙananan adireshi ta atomatik",
"automatic": "Atomatik",
"available": "Akwai",
"available_balance": "Ma’aunin da ake da shi",
"available_balance_description": "“Ma'aunin da ake da shi” ko “Tabbataccen Ma'auni” su ne kuɗaɗen da za a iya kashewa nan take. Idan kuɗaɗe sun bayyana a ƙananan ma'auni amma ba a babban ma'auni ba, to dole ne ku jira 'yan mintoci kaɗan domin kuɗaɗen da ke shigowa su sami ƙarin tabbaci daga hanyar sadarwa. Bayan sun sami ƙarin tabbaci, za a iya kashe su.",
"avg_savings": "Matsakaitan Ajiya",
@@ -125,6 +127,7 @@
"block_remaining": "Toshe 1 ya rage",
"Blocks_remaining": "${status} Tubalan da suka rage",
"bluetooth": "Bluetooth",
"bridging": "Ana gada",
"bright_theme": "Haske",
"bscscan_history": "Tarihin BSCScan",
"bump_fee": "Ƙara kuɗin ma'amala",
@@ -216,6 +219,8 @@
"color_theme": "Jigon launi",
"coming_soon_tag": "Zai zo nan ba da jimawa ba",
"commit_transaction_amount_fee": "Tabbatar da ma'amala\nAdadi: ${amount}\nKuɗi: ${fee}",
"compatible_services": "Sabis masu jituwa",
"compatible_services_desc": "Yi amfani da kayan aikin Scan don karanta nau'ikan QR code masu zuwa da Cake Wallet ke goyon baya:",
"configure": "Saita",
"confirm": "Tabbatar",
"confirm_delete_template": "Wannan aikin zai goge wannan samfuri. Kuna so ku ci gaba?",
@@ -279,6 +284,7 @@
"creating_new_wallet": "Ana ƙirƙirar sabon walat",
"creating_new_wallet_error": "Kuskure: ${description}",
"creation_date": "Ranar ƙirƙira",
"crypto_addresses": "Adiresoshin crypto",
"csv_nothing_to_export": "Babu abin da za a fitar",
"current_swap": "Musayar Yanzu",
"current_wallet": "Walit na yanzu",
@@ -301,6 +307,7 @@
"default_sell_provider": "Mai Ba da Sabis na Siyarwa na Tsoho",
"delete": "Sharewa",
"delete_account": "Share Account",
"delete_this_node": "Share wannan node",
"delete_wallet": "Share walat",
"delete_wallet_confirm_message": "Shin kun tabbata cewa kuna son goge walat ɗin ${wallet_name}?",
"deleteConnectionConfirmationPrompt": "Shin kun tabbata kuna son share haɗin zuwa",
@@ -330,6 +337,7 @@
"deuro_savings_welcome_description": "dEURO stablecoin ne mai cikakken rarrabawa (decentralized) kuma mai jingina (collateralized) da aka daure shi da Yuro — amintacce, mai sassauci, kuma mai jurewa takunkumi ba tare da dogaro da oracles ba. 1 dEURO = 1 EURO.",
"deuro_tooltip_no_eth": "Don kunna dEURO, dole ne ka kasance da ETH a cikin walat ɗinka.",
"deuro_tx_commited_content": "Yana iya ɗaukar 'yan daƙiƙu kaɗan kafin ma'amalar ta tabbatar kuma ta bayyana a allon",
"device_confirmation": "Tabbatarwa ta na'ura",
"device_is_signing": "Na'urar tana sa hannu",
"dfx_option_description": "Sayi crypto da EUR & CHF. Don abokan cinikin dillalai da na kamfanoni a Turai",
"did_you_back_up_seeds": "Ka adana dukkan seed ɗinka?",
@@ -466,6 +474,8 @@
"extracted_address_content": "Za ka tura kuɗi zuwa\n${recipient_name}",
"failed_authentication": "An kasa tantancewa. ${state_error}",
"faq": "FAQ",
"favorite_token": "Token da aka fi so",
"favorite_token_desc": "Ma'aunin token da aka fi so zai bayyana a katin ma'auni.",
"features": "Fasali",
"fee": "Kuɗi",
"fee_less_than_min": "Kudin da aka zaɓa ya yi ƙasa da mafi ƙarancin kuɗin ma'amala, don Allah ƙara kuɗin ma'amala domin a iya aika ma'amalar.",
@@ -491,6 +501,7 @@
"frozen": "Daskare",
"frozen_balance": "Ma'aunin da aka daskare",
"full_balance": "Cikakken Ma’auni",
"gallery": "Hoton gallery",
"gas_exceeds_allowance": "Gas da ake buƙata don ma'amalar ya wuce adadin da aka amince.",
"gas_price": "Farashin gas",
"general": "Gabaɗaya",
@@ -526,10 +537,10 @@
"how_to_connect": "Yadda ake Haɗawa",
"how_to_use": "Yadda ake amfani da shi",
"how_to_use_card": "Yadda ake amfani da wannan kati",
"hww_exit_desc": "Wannan zai kawo ƙarshen aikin haɗawa (pairing) da ke gudana da na'urarka ta hardware",
"i_understand": "Na fahimta",
"icon_style": "Salon icon",
"id": "ID: ",
"if_you_dont_see_your_device": "Idan ba ka ga na'urarka a sama ba, da fatan ka tabbatar Ledger ɗinka yana kunne kuma a buɗe!",
"ignor": "Yi watsi",
"import": "Shigo da",
"importNFTs": "Shigo da NFT",
@@ -541,6 +552,7 @@
"infobox_auto_address": "Adireshin karɓar ku zai canza duk lokacin da kuka karɓi ma'amala",
"infobox_multichain": "Yi amfani da wannan adireshin don karɓar kowace token ko collectible a",
"infobox_rotation": "Adireshin karɓar ku zai canza duk lokacin da kuka rufe sannan ku sake buɗe wannan allon",
"input": "Shigarwa",
"inputs": "Shigarwa",
"insufficient_funds_for_tx": "Ba a da isasshen kuɗi don kammala ma'amala cikin nasara.",
"insufficient_lamport_for_tx": "Ba ku da isasshen SOL don rufe ma'amalar da kuɗin ma'amalarta. Da fatan za ku ƙara SOL a walat ɗinku ko ku rage adadin SOL da kuke aikawa.",
@@ -606,6 +618,7 @@
"manage_pow_nodes": "Sarrafa nododin PoW",
"manage_providers": "Sarrafa masu ba da sabis",
"manage_yats": "Sarrafa Yats ɗinka",
"manual_input": "Shigarwa da hannu",
"mark_as_redeemed": "Yi Alama a Matsayin An Fansa",
"market_place": "Kasuwa",
"mask": "Ɓoye",
@@ -651,6 +664,7 @@
"nanogpt_subtitle": "Duk sabbin samfura (GPT-5.3, Claude 4.6).\nBabu biyan kuɗin rajista, biya da crypto.",
"narrow": "Kunkuntar",
"network": "Hanyar sadarwa",
"networks": "Hanyoyin sadarwa",
"new_first_wallet_text": "Kare kuɗin crypto ɗinka cikin aminci abu ne mai sauƙi",
"new_node_testing": "Gwajin sabon node",
"new_subaddress_create": "Ƙirƙira",
@@ -679,8 +693,10 @@
"node_new": "Sabon Node",
"node_port": "Tashar node",
"node_reset_settings_title": "Sake saiti",
"node_share_desc": "Duba wannan QR code daga allon Scan don shigo da wannan node.",
"node_test": "Gwaji",
"nodes": "Nododi",
"nodes_desc": "Sarrafa nododi da ke akwai ko ƙara naka na musamman.",
"nodes_list_reset_to_default_message": "Kuna da tabbacin kuna so ku mayar da saituna zuwa tsoho?",
"none_of_selected_providers_can_exchange": "Babu ɗaya daga cikin masu ba da sabis da aka zaɓa da zai iya yin wannan musayar",
"noNFTYet": "Babu NFT tukuna",
@@ -690,6 +706,7 @@
"note_tap_to_change": "Bayanan kula (taɓa don canjawa)",
"notification_permission_denied": "An ƙi ba da izinin sanarwa har abada, don Allah ka kunna shi da hannu a cikin saituna",
"nullURIError": "URI ba shi da komai",
"ocp_desc": "Biya da crypto a shaguna",
"offer_expires_in": "Tayin zai ƙare a: ",
"offline": "Ba ya kan layi",
"ok": "OK",
@@ -718,8 +735,13 @@
"outputs": "Fitarwa",
"overshot": "Overshot",
"overwrite_amount": "Maye gurbin adadi",
"pairing_code": "Lambar haɗawa (pairing)",
"pairing_code_desc_1": "Na'urarka za ta nuna lambar haɗawa (pairing).",
"pairing_code_desc_2": "Shigar da ita a nan don ci gaba",
"pairing_error": "Kuskuren haɗawa (pairing)",
"pairingInvalidEvent": "Taron Haɗawa mara inganci",
"passphrase": "Passphrase (Zaɓi)",
"passphrase_view_keys": "Passphrase",
"passphrases_doesnt_match": "Passphrases ba su dace ba, don Allah a sake gwadawa",
"password": "Kalmar sirri",
"paste": "Manna",
@@ -735,6 +757,7 @@
"payjoin_unavailable_sheet_content": "Karɓar ma'amalar Payjoin yana buƙatar ka/ki kasance da Bitcoin a shirye don amfani.\n\nDa zarar walat ɗinka/ɗinki yana da kuɗi, Payjoin za a kunna ta atomatik.",
"payjoin_unavailable_sheet_title": "Me yasa Payjoin ba ya samuwa?",
"payment_id": "ID na biyan kuɗi: ",
"payment_invoices": "Daftarin biyan kuɗi",
"payment_made_easy": "An sauƙaƙa biyan kuɗi",
"payment_was_received": "An karɓi biyan ku.",
"payments": "Biyan kuɗi",
@@ -890,6 +913,7 @@
"save": "Ajiye",
"save_backup_password": "Da fatan a tabbatar kun adana kalmar sirrin ajiyar ku. Ba za ku iya shigo da fayilolin ajiyar ku ba tare da ita ba.",
"save_backup_password_alert": "Ajiye kalmar sirrin ajiyar baya",
"save_contact": "Ajiye Tuntuɓa",
"save_to_downloads": "Ajiye zuwa Fayilolin da aka zazzage",
"saved_the_trade_id": "Na ajiye ID na ciniki",
"savings": "Ajiya",
@@ -1039,6 +1063,7 @@
"setup_your_debit_card": "Saita katin cire kuɗinka",
"share": "Raba",
"share_address": "Raba adireshi",
"share_this_node": "Raba wannan node",
"shared_seed_wallet_groups": "Ƙungiyoyin Walat na Iri ɗaya da aka Raba",
"shared_seed_wallets": "Wallets Masu Seed da Aka Raba",
"show": "Nuna",
@@ -1046,6 +1071,7 @@
"show_balance": "Danna ka riƙe don nuna ma'auni",
"show_balance_send_page": "Taɓa don bayyana",
"show_balance_toast": "Danna ka riƙe don ɓoye ko nuna ma'auni",
"show_combined_balance": "Nuna haɗaɗɗen ma'auni",
"show_details": "Nuna Cikakkun Bayani",
"show_hidden_addresses": "Nuna adiresoshin da aka ɓoye",
"show_keys": "Nuna seed/maɓallai",
@@ -1111,6 +1137,7 @@
"swap_providers": "Masu samar da Swap",
"sweeping_wallet": "Ana kwashe kuɗi daga walat",
"sweeping_wallet_alert": "Wannan bai kamata ya ɗauki lokaci mai tsawo ba. KADA KA BAR WANNAN ALLON KO KUDADEN DA AKA KWASO NA IYA ɓACEWA.",
"swipe_to_bridge": "Zame don gada",
"swipe_to_send": "Zame don aikawa",
"switch_wallet": "Canja Wallet",
"switchToETHWallet": "Da fatan za a koma zuwa walat ɗin Ethereum kuma a sake gwadawa",
@@ -1151,6 +1178,7 @@
"testnet_coins_no_value": "Tsabar kuɗin Testnet ba su da daraja",
"third_intro_content": "Yats suna aiki a wajen Cake Wallet ma. Ana iya maye gurbin kowane adireshin walat a duniya da Yat!",
"third_intro_title": "Yat yana aiki da kyau tare da wasu",
"this_can_take_few_seconds": "Wannan na iya ɗaukar 'yan daƙiƙu kaɗan",
"this_pair_is_not_supported_warning": "Ba a tallafa wa wannan ma'aurata a musayar(ori) da aka zaɓa a yanzu ba. Da fatan za a zaɓi wata musaya.",
"thorchain_contract_address_not_supported": "THORChain ba ya goyon bayan aika zuwa adireshin kwangila",
"thorchain_taproot_address_not_supported": "Mai ba da sabis na ThorChain ba ya goyon bayan adiresoshin Taproot. Da fatan za a canza adireshin ko a zaɓi wani mai ba da sabis daban.",
@@ -1164,6 +1192,7 @@
"token_decimal": "Adadin decimal na token (misali: USDT)",
"token_name": "Sunan token (misali: Tether)",
"token_symbol": "Alamar token (misali: USDT)",
"token_verified_on_jupiter": "An tabbatar da wannan alamar akan Jupiter",
"tokenID": "ID",
"tokens": "Token",
"tokens_strong_warning": "Kada ka taɓa aika token zuwa wannan adireshin!",
@@ -1292,6 +1321,7 @@
"username": "Sunan mai amfani",
"username_available": "Sunan mai amfani yana samuwa",
"username_character_error": "Sunayen masu amfani dole ne su ƙunshi kawai",
"username_check_your_network": "An kasa duba sunan mai amfani. Da fatan za a duba haɗin cibiyar sadarwarka.",
"username_length_error": "Dole sunayen masu amfani su ƙunshi haruffa da lambobi 6-32.",
"username_length_error_1_64": "Dole ne sunayen masu amfani su ƙunshi haruffa da lambobi 1-64.",
"username_not_available": "Wannan sunan mai amfani ba ya samuwa.",
@@ -1302,6 +1332,7 @@
"verify_message": "Tabbatar da Saƙo",
"verify_seed": "Tabbatar da Seed",
"verify_with_2fa": "Tabbatar da Cake 2FA",
"verifying_code": "Ana tabbatar da lamba",
"version": "Sigar ${currentVersion}",
"view_all": "Duba duk",
"view_in_block_explorer": "Duba a Block Explorer",
@@ -1313,6 +1344,7 @@
"waitFewSecondForTxUpdate": "Da fatan za a jira ƴan daƙiƙa kaɗan domin ma'amalar ta bayyana a tarihin ma'amaloli",
"wallet": "Walati",
"wallet_accounts": "Asusun Walat",
"wallet_balance": "Ma'aunin walat",
"wallet_group": "Rukunin Wallet",
"wallet_group_description_existing_seed": "Ka zaɓi amfani da seed da ke akwai don wannan Wallet. Za ka iya sake tabbatar da seed ɗin idan kana buƙatar tabbatarwa ko rubuta shi.",
"wallet_group_description_four": "don ƙirƙirar walat tare da sabon iri gaba ɗaya.",
@@ -1354,6 +1386,7 @@
"wc_approve_request_title": "Amincewa da buƙata",
"wc_connect_request_title": "Buƙatar haɗin kai",
"wc_connected_to": "An haɗa zuwa ${name}",
"wc_desc": "Haɗa da DApps cikin sauƙi",
"wc_max_network_fee": "Matsakaicin kuɗin hanyar sadarwa",
"wc_message_to_sign": "Saƙo don sa hannu",
"wc_network_fee": "Kudin hanyar sadarwa",
@@ -1405,6 +1438,7 @@
"yat_popup_content": "Yanzu za ku iya aikawa da karɓar crypto a cikin Cake Wallet ta amfani da Yat ɗinku — gajeren sunan mai amfani na emoji. Kuna iya sarrafa Yats a kowane lokaci a allon saituna",
"yat_popup_title": "Ana iya mayar da adireshin walat ɗinka zuwa emojis.",
"yes": "Eh",
"yes_exit": "Eh. Fita",
"yesterday": "Jiya",
"you_now_have_debit_card": "Yanzu kana da katin zare kudi",
"you_pay": "Ka Biya",
@@ -1454,4 +1488,4 @@
"wallet_balance": "Ma'aunin walat",
"wc_desc": "Haɗa da DApps cikin sauƙi",
"yes_exit": "Eh. Fita"
}
}
+36 -2
View File
@@ -76,6 +76,7 @@
"approve_tokens": "टोकन अनुमोदित करें",
"apps": "ऐप्स",
"arbiscan_history": "ArbiScan इतिहास",
"are_you_sure_exit": "क्या आप वाकई बाहर निकलना चाहते हैं?",
"arrive_in_this_address": "${currency} ${tag} इस पते पर आएंगे",
"ascending": "आरोही क्रम",
"ask_each_time": "हर बार पूछें",
@@ -89,6 +90,7 @@
"auto_generate_addresses": "पते स्वतः जनरेट करें",
"auto_generate_subaddresses": "उप-पते स्वतः जनरेट करें",
"automatic": "स्वचालित",
"available": "उपलब्ध",
"available_balance": "उपलब्ध शेष राशि",
"available_balance_description": "“Available Balance” या “Confirmed Balance” वे धनराशि हैं जिन्हें तुरंत खर्च किया जा सकता है। यदि फंड नीचे वाले बैलेंस में दिखाई देते हैं, लेकिन ऊपर वाले बैलेंस में नहीं, तो आने वाले फंड को नेटवर्क पर और अधिक पुष्टिकरण मिलने के लिए आपको कुछ मिनट इंतज़ार करना होगा। अधिक पुष्टिकरण मिलने के बाद, वे खर्च करने योग्य हो जाएंगे।",
"avg_savings": "औसत बचत",
@@ -125,6 +127,7 @@
"block_remaining": "1 ब्लॉक शेष",
"Blocks_remaining": "${status} ब्लॉक शेष",
"bluetooth": "ब्लूटूथ",
"bridging": "ब्रिजिंग",
"bright_theme": "उज्ज्वल",
"bscscan_history": "BSCScan इतिहास",
"bump_fee": "फीस बढ़ाएँ",
@@ -216,6 +219,8 @@
"color_theme": "रंग थीम",
"coming_soon_tag": "जल्द आ रहा है",
"commit_transaction_amount_fee": "लेन-देन कमिट करें\nराशि: ${amount}\nशुल्क: ${fee}",
"compatible_services": "संगत सेवाएँ",
"compatible_services_desc": "Cake Wallet पर समर्थित निम्न प्रकार के QR कोड पढ़ने के लिए स्कैन टूल का उपयोग करें:",
"configure": "कॉन्फ़िगर करें",
"confirm": "पुष्टि करें",
"confirm_delete_template": "यह कार्रवाई इस टेम्पलेट को हटा देगी। क्या आप जारी रखना चाहते हैं?",
@@ -279,6 +284,7 @@
"creating_new_wallet": "नया वॉलेट बनाया जा रहा है",
"creating_new_wallet_error": "त्रुटि: ${description}",
"creation_date": "निर्माण तिथि",
"crypto_addresses": "क्रिप्टो पते",
"csv_nothing_to_export": "निर्यात करने के लिए कुछ नहीं है",
"current_swap": "वर्तमान स्वैप",
"current_wallet": "वर्तमान वॉलेट",
@@ -301,6 +307,7 @@
"default_sell_provider": "डिफ़ॉल्ट सेल प्रदाता",
"delete": "हटाएं",
"delete_account": "खाता हटाएँ",
"delete_this_node": "इस नोड को हटाएँ",
"delete_wallet": "वॉलेट हटाएँ",
"delete_wallet_confirm_message": "क्या आप वाकई ${wallet_name} वॉलेट को हटाना चाहते हैं?",
"deleteConnectionConfirmationPrompt": "क्या आप वाकई इसके साथ कनेक्शन हटाना चाहते हैं",
@@ -330,6 +337,7 @@
"deuro_savings_welcome_description": "dEURO एक पूरी तरह से विकेंद्रीकृत, संपार्श्विक-समर्थित स्टेबलकॉइन है जो यूरो से पेग्ड है — सुरक्षित, बहुमुखी और सेंसरशिप-प्रतिरोधी, और इसके लिए oracles पर निर्भर होने की ज़रूरत नहीं होती। 1 dEURO = 1 EURO.",
"deuro_tooltip_no_eth": "dEURO को सक्षम करने के लिए, आपके वॉलेट में ETH होना चाहिए।",
"deuro_tx_commited_content": "लेन-देन की पुष्टि होने और स्क्रीन पर दिखाई देने में कुछ सेकंड लग सकते हैं",
"device_confirmation": "डिवाइस पुष्टिकरण",
"device_is_signing": "डिवाइस साइन कर रहा है",
"dfx_option_description": "EUR और CHF के साथ क्रिप्टो खरीदें। यूरोप में खुदरा और कॉर्पोरेट ग्राहकों के लिए",
"did_you_back_up_seeds": "क्या आपने अपने सभी सीड्स का बैकअप ले लिया?",
@@ -466,6 +474,8 @@
"extracted_address_content": "आप निम्न को धनराशि भेजेंगे\n${recipient_name}",
"failed_authentication": "प्रमाणीकरण विफल रहा। ${state_error}",
"faq": "FAQ",
"favorite_token": "पसंदीदा टोकन",
"favorite_token_desc": "पसंदीदा टोकन का बैलेंस बैलेंस कार्ड पर दिखाई देगा।",
"features": "विशेषताएँ",
"fee": "फीस",
"fee_less_than_min": "चयनित शुल्क न्यूनतम से कम है, कृपया लेन-देन भेजने के लिए शुल्क बढ़ाएँ",
@@ -491,6 +501,7 @@
"frozen": "फ्रीज़",
"frozen_balance": "फ्रीज़ किया गया बैलेंस",
"full_balance": "कुल शेष राशि",
"gallery": "गैलरी",
"gas_exceeds_allowance": "लेनदेन के लिए आवश्यक गैस अनुमत सीमा से अधिक है।",
"gas_price": "गैस मूल्य",
"general": "सामान्य",
@@ -526,10 +537,10 @@
"how_to_connect": "कनेक्ट कैसे करें",
"how_to_use": "कैसे उपयोग करें",
"how_to_use_card": "इस कार्ड का उपयोग कैसे करें",
"hww_exit_desc": "इससे आपके हार्डवेयर डिवाइस के साथ चल रही पेयरिंग प्रक्रिया समाप्त हो जाएगी",
"i_understand": "मैं समझता/समझती हूँ",
"icon_style": "चिह्न शैली",
"id": "ID: ",
"if_you_dont_see_your_device": "यदि आपको ऊपर अपना डिवाइस नहीं दिख रहा है, तो कृपया सुनिश्चित करें कि आपका Ledger चालू है और अनलॉक है!",
"ignor": "नज़रअंदाज़ करें",
"import": "इम्पोर्ट",
"importNFTs": "NFTs आयात करें",
@@ -541,6 +552,7 @@
"infobox_auto_address": "हर बार जब आप कोई लेन-देन प्राप्त करेंगे, आपका प्राप्ति पता बदल जाएगा",
"infobox_multichain": "किसी भी टोकन या संग्रहणीय वस्तु को प्राप्त करने के लिए इस पते का उपयोग करें",
"infobox_rotation": "जब भी आप इस स्क्रीन को बंद करके दोबारा खोलेंगे, आपका प्राप्ति पता बदल जाएगा",
"input": "इनपुट",
"inputs": "इनपुट",
"insufficient_funds_for_tx": "लेनदेन को सफलतापूर्वक निष्पादित करने के लिए अपर्याप्त धनराशि।",
"insufficient_lamport_for_tx": "आपके पास लेनदेन और उसके शुल्क को कवर करने के लिए पर्याप्त SOL नहीं है। कृपया अपने वॉलेट में और SOL जोड़ें या आप जितनी SOL भेज रहे हैं, वह राशि कम करें।",
@@ -606,6 +618,7 @@
"manage_pow_nodes": "PoW नोड प्रबंधित करें",
"manage_providers": "प्रोवाइडर्स प्रबंधित करें",
"manage_yats": "Yats मैनेज करें",
"manual_input": "मैन्युअल इनपुट",
"mark_as_redeemed": "रिडीम के रूप में चिह्नित करें",
"market_place": "मार्केटप्लेस",
"mask": "मास्क",
@@ -651,6 +664,7 @@
"nanogpt_subtitle": "सभी नवीनतम मॉडल (GPT-5.3, Claude 4.6)।\nकोई सब्सक्रिप्शन नहीं, क्रिप्टो से भुगतान करें।",
"narrow": "संकीर्ण",
"network": "नेटवर्क",
"networks": "नेटवर्क",
"new_first_wallet_text": "अपने क्रिप्टो को सुरक्षित रखना बहुत आसान है",
"new_node_testing": "नए नोड का परीक्षण",
"new_subaddress_create": "बनाएँ",
@@ -679,8 +693,10 @@
"node_new": "नया नोड",
"node_port": "नोड पोर्ट",
"node_reset_settings_title": "सेटिंग्स रीसेट करें",
"node_share_desc": "इस नोड को आयात करने के लिए स्कैन स्क्रीन से इस QR कोड को स्कैन करें।",
"node_test": "टेस्ट",
"nodes": "नोड्स",
"nodes_desc": "मौजूदा नोड्स प्रबंधित करें या एक कस्टम नोड जोड़ें।",
"nodes_list_reset_to_default_message": "क्या आप वाकई सेटिंग्स को डिफ़ॉल्ट पर रीसेट करना चाहते हैं?",
"none_of_selected_providers_can_exchange": "चयनित प्रदाताओं में से कोई भी यह स्वैप नहीं कर सकता",
"noNFTYet": "अभी तक कोई NFT नहीं",
@@ -690,6 +706,7 @@
"note_tap_to_change": "नोट (बदलने के लिए टैप करें)",
"notification_permission_denied": "अधिसूचना की अनुमति स्थायी रूप से अस्वीकार कर दी गई है, कृपया इसे सेटिंग्स में जाकर मैन्युअल रूप से सक्षम करें",
"nullURIError": "URI शून्य है",
"ocp_desc": "स्टोर में क्रिप्टो से भुगतान करें",
"offer_expires_in": "ऑफ़र की समय-सीमा समाप्त होने में: ",
"offline": "ऑफ़लाइन",
"ok": "ठीक है",
@@ -716,8 +733,13 @@
"outputs": "आउटपुट",
"overshot": "लक्ष्य से अधिक हो गया",
"overwrite_amount": "राशि ओवरराइट करें",
"pairing_code": "पेयरिंग कोड",
"pairing_code_desc_1": "आपका डिवाइस एक पेयरिंग कोड दिखाएगा।",
"pairing_code_desc_2": "जारी रखने के लिए यहाँ दर्ज करें",
"pairing_error": "पेयरिंग त्रुटि",
"pairingInvalidEvent": "अमान्य पेयरिंग इवेंट",
"passphrase": "पासफ़्रेज़ (वैकल्पिक)",
"passphrase_view_keys": "पासफ़्रेज़",
"passphrases_doesnt_match": "Passphrase मेल नहीं खाते, कृपया फिर से प्रयास करें",
"password": "पासवर्ड",
"paste": "पेस्ट करें",
@@ -733,6 +755,7 @@
"payjoin_unavailable_sheet_content": "Payjoin लेन-देन प्राप्त करने के लिए आपके पास उपयोग के लिए तैयार Bitcoin होना आवश्यक है।\n\nजैसे ही आपके वॉलेट में फंड होंगे, Payjoin अपने-आप सक्षम हो जाएगा।",
"payjoin_unavailable_sheet_title": "Payjoin उपलब्ध क्यों नहीं है?",
"payment_id": "भुगतान आईडी: ",
"payment_invoices": "भुगतान इनवॉइस",
"payment_made_easy": "भुगतान करना आसान",
"payment_was_received": "आपका भुगतान प्राप्त हो गया।",
"Payment_was_received": "आपका भुगतान प्राप्त हो गया था।",
@@ -890,6 +913,7 @@
"save": "सहेजें",
"save_backup_password": "कृपया सुनिश्चित करें कि आपने अपना बैकअप पासवर्ड सहेज लिया है। इसके बिना आप अपनी बैकअप फ़ाइलें आयात नहीं कर पाएंगे।",
"save_backup_password_alert": "बैकअप पासवर्ड सहेजें",
"save_contact": "संपर्क सहेजें",
"save_to_downloads": "डाउनलोड में सहेजें",
"saved_the_trade_id": "मैंने ट्रेड ID सेव कर ली है",
"savings": "बचत",
@@ -1039,6 +1063,7 @@
"setup_your_debit_card": "अपना डेबिट कार्ड सेट अप करें",
"share": "शेयर करें",
"share_address": "पता साझा करें",
"share_this_node": "इस नोड को साझा करें",
"shared_seed_wallet_groups": "साझा सीड वॉलेट समूह",
"shared_seed_wallets": "साझा सीड वॉलेट",
"show": "दिखाएँ",
@@ -1046,6 +1071,7 @@
"show_balance": "बैलेंस दिखाने के लिए देर तक दबाएँ",
"show_balance_send_page": "दिखाने के लिए टैप करें",
"show_balance_toast": "बैलेंस छिपाने या दिखाने के लिए लंबे समय तक दबाएं",
"show_combined_balance": "संयुक्त बैलेंस दिखाएँ",
"show_details": "विवरण दिखाएँ",
"show_hidden_addresses": "छिपे हुए पते दिखाएँ",
"show_keys": "सीड/कुंजियाँ दिखाएँ",
@@ -1111,6 +1137,7 @@
"swap_providers": "स्वैप प्रदाता",
"sweeping_wallet": "वॉलेट स्वीप करना",
"sweeping_wallet_alert": "इसमें ज़्यादा समय नहीं लगना चाहिए। इस स्क्रीन को न छोड़ें, वरना स्वीप किए गए फंड खो सकते हैं।",
"swipe_to_bridge": "ब्रिज करने के लिए स्वाइप करें",
"swipe_to_send": "भेजने के लिए स्वाइप करें",
"switch_wallet": "वॉलेट बदलें",
"switchToETHWallet": "कृपया Ethereum वॉलेट पर स्विच करें और फिर से प्रयास करें",
@@ -1151,6 +1178,7 @@
"testnet_coins_no_value": "टेस्टनेट कॉइन्स का कोई मूल्य नहीं है",
"third_intro_content": "Yats, Cake Wallet के बाहर भी मौजूद हैं। दुनिया के किसी भी वॉलेट पते को Yat से बदला जा सकता है!",
"third_intro_title": "Yat दूसरों के साथ अच्छी तरह काम करता है",
"this_can_take_few_seconds": "इसमें कुछ सेकंड लग सकते हैं",
"this_pair_is_not_supported_warning": "यह जोड़ी वर्तमान में चयनित एक्सचेंज(ों) के साथ समर्थित नहीं है। कृपया कोई अन्य एक्सचेंज चुनें।",
"thorchain_contract_address_not_supported": "THORChain कॉन्ट्रैक्ट पते पर भेजने का समर्थन नहीं करता है",
"thorchain_taproot_address_not_supported": "ThorChain प्रदाता Taproot पतों का समर्थन नहीं करता है। कृपया पता बदलें या कोई अन्य प्रदाता चुनें।",
@@ -1164,6 +1192,7 @@
"token_decimal": "टोकन दशमलव (उदा: USDT)",
"token_name": "टोकन का नाम (उदाहरण: Tether)",
"token_symbol": "टोकन प्रतीक (उदा.: USDT)",
"token_verified_on_jupiter": "यह टोकन Jupiter पर सत्यापित है",
"tokenID": "आईडी",
"tokens": "टोकन",
"tokens_strong_warning": "इस पते पर कभी भी टोकन न भेजें!",
@@ -1292,6 +1321,7 @@
"username": "उपयोगकर्ता नाम",
"username_available": "उपयोगकर्ता नाम उपलब्ध है",
"username_character_error": "यूज़रनेम में केवल शामिल हो सकते हैं",
"username_check_your_network": "उपयोगकर्ता नाम जाँचने में असमर्थ। कृपया अपना नेटवर्क कनेक्शन जाँचें।",
"username_length_error": "उपयोगकर्ता नाम में 6-32 अल्फ़ान्यूमेरिक वर्ण होने चाहिए।",
"username_length_error_1_64": "उपयोगकर्ता नाम में 1-64 अल्फ़ान्यूमेरिक वर्ण होने चाहिए।",
"username_not_available": "यह उपयोगकर्ता नाम उपलब्ध नहीं है।",
@@ -1302,6 +1332,7 @@
"verify_message": "संदेश सत्यापित करें",
"verify_seed": "सीड सत्यापित करें",
"verify_with_2fa": "Cake 2FA के साथ सत्यापित करें",
"verifying_code": "कोड सत्यापित किया जा रहा है",
"version": "संस्करण ${currentVersion}",
"view_all": "सभी देखें",
"view_in_block_explorer": "ब्लॉक एक्सप्लोरर में देखें",
@@ -1313,6 +1344,7 @@
"waitFewSecondForTxUpdate": "कृपया लेन-देन इतिहास में लेन-देन दिखने के लिए कुछ सेकंड प्रतीक्षा करें",
"wallet": "वॉलेट",
"wallet_accounts": "वॉलेट खाते",
"wallet_balance": "वॉलेट बैलेंस",
"wallet_group": "वॉलेट समूह",
"wallet_group_description_existing_seed": "आपने इस वॉलेट के लिए मौजूदा सीड का उपयोग करना चुना है। यदि आपको पुष्टि करने या लिखने के लिए इसकी आवश्यकता हो, तो आप सीड को फिर से सत्यापित कर सकते हैं।",
"wallet_group_description_four": "पूरी तरह नए सीड के साथ वॉलेट बनाने के लिए।",
@@ -1354,6 +1386,7 @@
"wc_approve_request_title": "अनुरोध स्वीकृत करें",
"wc_connect_request_title": "कनेक्ट अनुरोध",
"wc_connected_to": "${name} से कनेक्टेड",
"wc_desc": "DApps से आसानी से कनेक्ट करें",
"wc_max_network_fee": "अधिकतम नेटवर्क शुल्क",
"wc_message_to_sign": "हस्ताक्षर करने के लिए संदेश",
"wc_network_fee": "नेटवर्क शुल्क",
@@ -1404,6 +1437,7 @@
"yat_popup_content": "अब आप Cake Wallet में अपने Yat—एक छोटा, इमोजी-आधारित उपयोगकर्ता नाम—के साथ क्रिप्टो भेज और प्राप्त कर सकते हैं। सेटिंग्स स्क्रीन पर किसी भी समय Yats को प्रबंधित करें",
"yat_popup_title": "आपका वॉलेट पता इमोजी में बदला जा सकता है।",
"yes": "हाँ",
"yes_exit": "हाँ। बाहर निकलें",
"yesterday": "कल",
"you_now_have_debit_card": "अब आपके पास एक डेबिट कार्ड है",
"you_pay": "आप भुगतान करते हैं",
@@ -1453,4 +1487,4 @@
"wallet_balance": "वॉलेट बैलेंस",
"wc_desc": "DApps से आसानी से कनेक्ट करें",
"yes_exit": "हाँ। बाहर निकलें"
}
}
+36 -2
View File
@@ -76,6 +76,7 @@
"approve_tokens": "Odobri tokene",
"apps": "Aplikacije",
"arbiscan_history": "Povijest na ArbiScanu",
"are_you_sure_exit": "Jeste li sigurni da želite izaći?",
"arrive_in_this_address": "${currency} ${tag}će stići na ovu adresu",
"ascending": "Uzlazno",
"ask_each_time": "Pitaj svaki put",
@@ -89,6 +90,7 @@
"auto_generate_addresses": "Automatsko generiranje adresa",
"auto_generate_subaddresses": "Automatski generiraj podadrese",
"automatic": "Automatski",
"available": "Dostupno",
"available_balance": "Raspoloživo stanje",
"available_balance_description": "“Dostupno stanje” ili “Potvrđeno stanje” su sredstva koja možete odmah potrošiti. Ako se sredstva prikazuju u donjem stanju, ali ne i u gornjem, morate pričekati nekoliko minuta da dolazna sredstva dobiju više mrežnih potvrda. Nakon što dobiju više potvrda, moći ćete ih potrošiti.",
"avg_savings": "Prosj. ušteda",
@@ -125,6 +127,7 @@
"block_remaining": "Preostao je 1 blok",
"Blocks_remaining": "${status} preostalih blokova",
"bluetooth": "Bluetooth",
"bridging": "Premošćivanje",
"bright_theme": "Svijetla",
"bscscan_history": "Povijest BSCScan-a",
"bump_fee": "Povećaj naknadu",
@@ -216,6 +219,8 @@
"color_theme": "Tema boja",
"coming_soon_tag": "Uskoro",
"commit_transaction_amount_fee": "Potvrdi transakciju\nIznos: ${amount}\nNaknada: ${fee}",
"compatible_services": "Kompatibilne usluge",
"compatible_services_desc": "Upotrijebite alat Skeniraj za čitanje sljedećih vrsta QR kodova podržanih u Cake Walletu:",
"configure": "Konfiguriraj",
"confirm": "Potvrdi",
"confirm_delete_template": "Ovom radnjom izbrisat ćete ovaj predložak. Želite li nastaviti?",
@@ -279,6 +284,7 @@
"creating_new_wallet": "Stvaranje novog novčanika",
"creating_new_wallet_error": "Greška: ${description}",
"creation_date": "Datum izrade",
"crypto_addresses": "Kripto adrese",
"csv_nothing_to_export": "Nema ničega za izvoz",
"current_swap": "Trenutna zamjena",
"current_wallet": "Trenutni novčanik",
@@ -301,6 +307,7 @@
"default_sell_provider": "Zadani pružatelj usluge prodaje",
"delete": "Izbriši",
"delete_account": "Izbriši račun",
"delete_this_node": "Izbriši ovaj čvor",
"delete_wallet": "Izbriši novčanik",
"delete_wallet_confirm_message": "Jeste li sigurni da želite izbrisati novčanik ${wallet_name}?",
"deleteConnectionConfirmationPrompt": "Jeste li sigurni da želite izbrisati vezu s",
@@ -330,6 +337,7 @@
"deuro_savings_welcome_description": "dEURO je potpuno decentralizirani, kolateralizirani stablecoin vezan uz euro — siguran, svestran i otporan na cenzuru, bez potrebe oslanjanja na orakle. 1 dEURO = 1 EURO.",
"deuro_tooltip_no_eth": "Da biste omogućili dEURO, morate imati ETH u svom novčaniku.",
"deuro_tx_commited_content": "Može potrajati nekoliko sekundi da se transakcija potvrdi i prikaže na zaslonu",
"device_confirmation": "Potvrda uređaja",
"device_is_signing": "Uređaj potpisuje",
"dfx_option_description": "Kupite kriptovalute uz EUR i CHF. Za maloprodajne i korporativne kupce u Europi",
"did_you_back_up_seeds": "Jeste li sigurnosno kopirali sve svoje seed fraze?",
@@ -466,6 +474,8 @@
"extracted_address_content": "Poslat ćete sredstva na\n${recipient_name}",
"failed_authentication": "Neuspješna autentifikacija. ${state_error}",
"faq": "FAQ",
"favorite_token": "Omiljeni token",
"favorite_token_desc": "Stanje omiljenog tokena prikazat će se na kartici stanja.",
"features": "Značajke",
"fee": "Naknada",
"fee_less_than_min": "Odabrana naknada je manja od minimalne, povećajte naknadu kako biste mogli poslati transakciju",
@@ -491,6 +501,7 @@
"frozen": "Zamrznuto",
"frozen_balance": "Zamrznuto stanje",
"full_balance": "Puni saldo",
"gallery": "Galerija",
"gas_exceeds_allowance": "Gas potreban za transakciju premašuje dopušteni iznos.",
"gas_price": "Cijena gasa",
"general": "Općenito",
@@ -526,10 +537,10 @@
"how_to_connect": "Kako se povezati",
"how_to_use": "Kako koristiti",
"how_to_use_card": "Kako koristiti ovu karticu",
"hww_exit_desc": "Ovo će prekinuti tekući postupak uparivanja s vašim hardverskim uređajem",
"i_understand": "Razumijem",
"icon_style": "Stil ikone",
"id": "ID: ",
"if_you_dont_see_your_device": "Ako gore ne vidite svoj uređaj, provjerite je li vaš Ledger uključen i otključan!",
"ignor": "Zanemari",
"import": "Uvoz",
"importNFTs": "Uvezi NFT-ove",
@@ -541,6 +552,7 @@
"infobox_auto_address": "Vaša adresa za primanje mijenjat će se svaki put kada primite transakciju",
"infobox_multichain": "Koristite ovu adresu za primanje bilo kojeg tokena ili kolekcionarskog predmeta na",
"infobox_rotation": "Vaša adresa za primanje će se mijenjati svaki put kada zatvorite i ponovno otvorite ovaj zaslon",
"input": "Unos",
"inputs": "Ulazi",
"insufficient_funds_for_tx": "Nedovoljno sredstava za uspješno izvršenje transakcije.",
"insufficient_lamport_for_tx": "Nemate dovoljno SOL-a za pokrivanje transakcije i transakcijske naknade. Dodajte više SOL-a u svoj novčanik ili smanjite iznos SOL-a koji šaljete.",
@@ -606,6 +618,7 @@
"manage_pow_nodes": "Upravljaj PoW čvorovima",
"manage_providers": "Upravljanje pružateljima",
"manage_yats": "Upravljanje Yatovima",
"manual_input": "Ručni unos",
"mark_as_redeemed": "Označi kao iskorišteno",
"market_place": "Tržište",
"mask": "Maska",
@@ -651,6 +664,7 @@
"nanogpt_subtitle": "Svi najnoviji modeli (GPT-5.3, Claude 4.6).\nBez pretplate, plaćajte kriptom.",
"narrow": "Usko",
"network": "Mreža",
"networks": "Mreže",
"new_first_wallet_text": "Čuvanje vaše kriptovalute sigurnom je mačji kašalj",
"new_node_testing": "Testiranje novog noda",
"new_subaddress_create": "Izradi",
@@ -679,8 +693,10 @@
"node_new": "Novi čvor",
"node_port": "Port čvora",
"node_reset_settings_title": "Ponovno postavi postavke",
"node_share_desc": "Skenirajte ovaj QR kod sa zaslona Skeniraj da biste uvezli ovaj čvor.",
"node_test": "Test",
"nodes": "Čvorovi",
"nodes_desc": "Upravljajte postojećim čvorovima ili dodajte prilagođeni.",
"nodes_list_reset_to_default_message": "Jeste li sigurni da želite vratiti postavke na zadane vrijednosti?",
"none_of_selected_providers_can_exchange": "Nijedan od odabranih pružatelja ne može izvršiti ovu zamjenu",
"noNFTYet": "Još nema NFT-ova",
@@ -690,6 +706,7 @@
"note_tap_to_change": "Napomena (dodirnite za promjenu)",
"notification_permission_denied": "Dozvola za obavijesti trajno je odbijena, molimo ručno je omogućite u postavkama",
"nullURIError": "URI je null",
"ocp_desc": "Plaćajte kriptovalutom u trgovinama",
"offer_expires_in": "Ponuda istječe za: ",
"offline": "Izvan mreže",
"ok": "OK",
@@ -716,8 +733,13 @@
"outputs": "Izlazi",
"overshot": "Prekoračeno",
"overwrite_amount": "Prepiši iznos",
"pairing_code": "Kod za uparivanje",
"pairing_code_desc_1": "Vaš će uređaj prikazati kod za uparivanje.",
"pairing_code_desc_2": "Unesite ga ovdje za nastavak",
"pairing_error": "Pogreška pri uparivanju",
"pairingInvalidEvent": "Nevažeći događaj uparivanja",
"passphrase": "Lozinka (neobavezno)",
"passphrase_view_keys": "Lozinka",
"passphrases_doesnt_match": "Lozinke se ne podudaraju, pokušajte ponovno",
"password": "Lozinka",
"paste": "Zalijepi",
@@ -733,6 +755,7 @@
"payjoin_unavailable_sheet_content": "Primanje Payjoin transakcije zahtijeva da imate Bitcoin spreman za korištenje.\n\nČim vaš novčanik bude imao sredstva, Payjoin će se automatski omogućiti.",
"payjoin_unavailable_sheet_title": "Zašto Payjoin nije dostupan?",
"payment_id": "ID plaćanja: ",
"payment_invoices": "Računi za plaćanje",
"payment_made_easy": "Plaćanja su jednostavna",
"payment_was_received": "Vaša uplata je primljena.",
"payments": "Plaćanja",
@@ -888,6 +911,7 @@
"save": "Spremi",
"save_backup_password": "Molimo provjerite jeste li spremili lozinku za sigurnosnu kopiju. Bez nje nećete moći uvesti svoje datoteke sigurnosne kopije.",
"save_backup_password_alert": "Spremi lozinku sigurnosne kopije",
"save_contact": "Spremi kontakt",
"save_to_downloads": "Spremi u Preuzimanja",
"saved_the_trade_id": "Spremio/la sam ID trgovine",
"savings": "Štednja",
@@ -1037,6 +1061,7 @@
"setup_your_debit_card": "Postavite svoju debitnu karticu",
"share": "Podijeli",
"share_address": "Podijeli adresu",
"share_this_node": "Podijeli ovaj čvor",
"shared_seed_wallet_groups": "Grupe novčanika sa zajedničkom seed frazom",
"shared_seed_wallets": "Novčanici sa zajedničkom seed frazom",
"show": "Prikaži",
@@ -1044,6 +1069,7 @@
"show_balance": "Dugo pritisnite za prikaz stanja",
"show_balance_send_page": "Dodirnite za prikaz",
"show_balance_toast": "Dugo pritisnite za skrivanje ili prikaz stanja",
"show_combined_balance": "Prikaži kombinirano stanje",
"show_details": "Prikaži detalje",
"show_hidden_addresses": "Prikaži skrivene adrese",
"show_keys": "Prikaži seed/ključeve",
@@ -1109,6 +1135,7 @@
"swap_providers": "Pružatelji usluga zamjene",
"sweeping_wallet": "Prebacivanje sredstava u novčanik",
"sweeping_wallet_alert": "Ovo ne bi trebalo dugo trajati. NE NAPUŠTAJTE OVAJ ZASLON ILI PREBAČENA SREDSTVA MOGU BITI IZGUBLJENA.",
"swipe_to_bridge": "Prijeđite prstom za premošćivanje",
"swipe_to_send": "Prijeđite prstom za slanje",
"switch_wallet": "Prebaci novčanik",
"switchToETHWallet": "Molimo prebacite se na Ethereum novčanik i pokušajte ponovno",
@@ -1149,6 +1176,7 @@
"testnet_coins_no_value": "Testnet kovanice nemaju vrijednost",
"third_intro_content": "Yatovi žive i izvan Cake Walleta. Bilo koja adresa novčanika na svijetu može se zamijeniti Yatom!",
"third_intro_title": "Yat se dobro slaže s drugima",
"this_can_take_few_seconds": "Ovo može potrajati nekoliko sekundi",
"this_pair_is_not_supported_warning": "Ovaj par nije podržan na trenutno odabranoj razmjeni/razmjenama. Molimo odaberite drugu razmjenu.",
"thorchain_contract_address_not_supported": "THORChain ne podržava slanje na adresu ugovora",
"thorchain_taproot_address_not_supported": "Pružatelj usluge ThorChain ne podržava Taproot adrese. Promijenite adresu ili odaberite drugog pružatelja usluge.",
@@ -1162,6 +1190,7 @@
"token_decimal": "Decimalni broj tokena (npr.: USDT)",
"token_name": "Naziv tokena (npr.: Tether)",
"token_symbol": "Simbol tokena (npr.: USDT)",
"token_verified_on_jupiter": "Ovaj token je verificiran na Jupiteru",
"tokenID": "ID",
"tokens": "Tokeni",
"tokens_strong_warning": "Nikada nemojte slati tokene na ovu adresu!",
@@ -1290,6 +1319,7 @@
"username": "Korisničko ime",
"username_available": "Korisničko ime je dostupno",
"username_character_error": "Korisnička imena smiju sadržavati samo",
"username_check_your_network": "Nije moguće provjeriti korisničko ime. Provjerite mrežnu vezu.",
"username_length_error": "Korisnička imena moraju sadržavati 6–32 alfanumerička znaka.",
"username_length_error_1_64": "Korisnička imena moraju sadržavati 1–64 alfanumerička znaka.",
"username_not_available": "Ovo korisničko ime nije dostupno.",
@@ -1300,6 +1330,7 @@
"verify_message": "Potvrdi poruku",
"verify_seed": "Potvrdite seed",
"verify_with_2fa": "Potvrdite uz Cake 2FA",
"verifying_code": "Provjera koda",
"version": "Verzija ${currentVersion}",
"view_all": "Prikaži sve",
"view_in_block_explorer": "Prikaži u Block Exploreru",
@@ -1311,6 +1342,7 @@
"waitFewSecondForTxUpdate": "Pričekajte nekoliko sekundi da se transakcija prikaže u povijesti transakcija.",
"wallet": "Novčanik",
"wallet_accounts": "Računi u novčaniku",
"wallet_balance": "Stanje novčanika",
"wallet_group": "Grupa novčanika",
"wallet_group_description_existing_seed": "Odabrali ste koristiti postojeću seed frazu za ovaj novčanik. Možete je ponovno provjeriti ako je trebate potvrditi ili zapisati.",
"wallet_group_description_four": "za izradu novčanika s potpuno novom seed frazom.",
@@ -1352,6 +1384,7 @@
"wc_approve_request_title": "Odobri zahtjev",
"wc_connect_request_title": "Zahtjev za povezivanje",
"wc_connected_to": "Povezan s ${name}",
"wc_desc": "Jednostavno se povežite s DApp-ovima",
"wc_max_network_fee": "Maksimalna mrežna naknada",
"wc_message_to_sign": "Poruka za potpisivanje",
"wc_network_fee": "Mrežna naknada",
@@ -1402,6 +1435,7 @@
"yat_popup_content": "Sada možete slati i primati kripto u Cake Walletu pomoću svog Yata – kratkog korisničkog imena temeljenog na emojijima. Yatovima možete upravljati u bilo kojem trenutku na zaslonu postavki",
"yat_popup_title": "Adresa vašeg novčanika može se pretvoriti u emojije.",
"yes": "Da",
"yes_exit": "Da. Izađi",
"yesterday": "Jučer",
"you_now_have_debit_card": "Sada imate debitnu karticu",
"you_pay": "Vi plaćate",
@@ -1451,4 +1485,4 @@
"wallet_balance": "Stanje novčanika",
"wc_desc": "Jednostavno se povežite s DApp-ovima",
"yes_exit": "Da. Izađi"
}
}
+39 -2
View File
@@ -76,6 +76,7 @@
"approve_tokens": "Հաստատել թոքենները",
"apps": "Հավելվածներ",
"arbiscan_history": "ArbiScan-ի պատմություն",
"are_you_sure_exit": "Վստա՞հ եք, որ ցանկանում եք դուրս գալ։",
"arrive_in_this_address": "${currency} ${tag}կհասնի այս հասցեին",
"ascending": "Աճման կարգով",
"ask_each_time": "Հարցնել ամեն անգամ",
@@ -89,6 +90,7 @@
"auto_generate_addresses": "Հասցեների ավտոմատ ստեղծում",
"auto_generate_subaddresses": "Ենթահասցեների ավտոմատ ստեղծում",
"automatic": "Ավտոմատ",
"available": "Հասանելի",
"available_balance": "Հասանելի մնացորդ",
"available_balance_description": "«Հասանելի մնացորդը» կամ «Հաստատված մնացորդը» միջոցներ են, որոնք կարելի է անմիջապես ծախսել։ Եթե միջոցները երևում են ստորին մնացորդում, բայց ոչ վերևի մնացորդում, ապա պետք է մի քանի րոպե սպասեք, մինչև մուտքագրվող միջոցները ստանան ավելի շատ ցանցային հաստատումներ։ Ավելի շատ հաստատումներ ստանալուց հետո դրանք հնարավոր կլինի ծախսել։",
"avg_savings": "Միջին խնայողություն",
@@ -125,6 +127,7 @@
"block_remaining": "Մնացել է 1 բլոկ",
"Blocks_remaining": "${status} Բլոկ է մնացել",
"bluetooth": "Bluetooth",
"bridging": "Կամրջում",
"bright_theme": "Պայծառ",
"bscscan_history": "BSCScan-ի պատմություն",
"bump_fee": "Բարձրացնել վճարը",
@@ -216,6 +219,8 @@
"color_theme": "Գունային թեմա",
"coming_soon_tag": "Շուտով",
"commit_transaction_amount_fee": "Հաստատել գործարքը\nԳումար՝ ${amount}\nՄիջնորդավճար՝ ${fee}",
"compatible_services": "Համատեղելի ծառայություններ",
"compatible_services_desc": "Օգտագործեք Սկանավորման գործիքը՝ Cake Wallet-ի կողմից աջակցվող QR կոդերի հետևյալ տեսակները կարդալու համար՝",
"configure": "Կարգավորել",
"confirm": "Հաստատել",
"confirm_delete_template": "Այս գործողությունը կջնջի այս ձևանմուշը։ Ցանկանու՞մ եք շարունակել։",
@@ -279,6 +284,7 @@
"creating_new_wallet": "Ստեղծվում է նոր դրամապանակ",
"creating_new_wallet_error": "Սխալ՝ ${description}",
"creation_date": "Ստեղծման ամսաթիվ",
"crypto_addresses": "Կրիպտո հասցեներ",
"csv_nothing_to_export": "Արտահանելու ոչինչ չկա",
"current_swap": "Ընթացիկ փոխանակում",
"current_wallet": "Ընթացիկ դրամապանակ",
@@ -301,6 +307,7 @@
"default_sell_provider": "Վաճառքի լռելյայն մատակարար",
"delete": "Ջնջել",
"delete_account": "Ջնջել հաշիվը",
"delete_this_node": "Ջնջել այս հանգույցը",
"delete_wallet": "Ջնջել դրամապանակը",
"delete_wallet_confirm_message": "Վստա՞հ եք, որ ցանկանում եք ջնջել ${wallet_name} դրամապանակը։",
"deleteConnectionConfirmationPrompt": "Վստա՞հ եք, որ ցանկանում եք ջնջել կապը",
@@ -330,6 +337,7 @@
"deuro_savings_welcome_description": "dEURO-ն լիովին ապակենտրոնացված, գրավով ապահովված ստեյբլքոյն է՝ կապված եվրոյին․ անվտանգ, բազմակողմանի և գրաքննության նկատմամբ դիմացկուն՝ առանց օրաքլների վրա հենվելու։ 1 dEURO = 1 EURO։",
"deuro_tooltip_no_eth": "dEURO-ն միացնելու համար ձեր դրամապանակում պետք է ունենաք ETH։",
"deuro_tx_commited_content": "Գործարքի հաստատման և էկրանին արտացոլվելու համար կարող է պահանջվել մի քանի վայրկյան",
"device_confirmation": "Սարքի հաստատում",
"device_is_signing": "Սարքը ստորագրում է",
"dfx_option_description": "Գնեք կրիպտոարժույթ EUR և CHF-ով։ Եվրոպայում գործող մանրածախ և կորպորատիվ հաճախորդների համար",
"did_you_back_up_seeds": "Դուք պահուստավորե՞լ եք ձեր բոլոր սիդերը։",
@@ -466,6 +474,8 @@
"extracted_address_content": "Դուք կուղարկեք միջոցներ\n${recipient_name}-ին",
"failed_authentication": "Նույնականացումը ձախողվեց. ${state_error}",
"faq": "ՀՏՀ",
"favorite_token": "Նախընտրած թոքեն",
"favorite_token_desc": "Նախընտրած թոքենի մնացորդը կցուցադրվի մնացորդի քարտի վրա։",
"features": "Ֆունկցիաներ",
"fee": "Միջնորդավճար",
"fee_less_than_min": "Ընտրված միջնորդավճարը նվազագույնից պակաս է, խնդրում ենք ավելացնել միջնորդավճարը, որպեսզի կարողանաք ուղարկել գործարքը",
@@ -491,6 +501,7 @@
"frozen": "Սառեցված",
"frozen_balance": "Սառեցված մնացորդ",
"full_balance": "Ամբողջական մնացորդ",
"gallery": "Պատկերասրահ",
"gas_exceeds_allowance": "Գործարքի համար պահանջվող գազը գերազանցում է թույլատրելի սահմանաչափը։",
"gas_price": "Գազի գին",
"general": "Ընդհանուր",
@@ -526,10 +537,10 @@
"how_to_connect": "Ինչպես միանալ",
"how_to_use": "Ինչպես օգտագործել",
"how_to_use_card": "Ինչպես օգտագործել այս քարտը",
"hww_exit_desc": "Սա կդադարեցնի ձեր ապարատային սարքի հետ ընթացիկ զուգակցման գործընթացը",
"i_understand": "Հասկացա",
"icon_style": "Սրբապատկերների ոճը",
"id": "ID: ",
"if_you_dont_see_your_device": "Եթե վերևում չեք տեսնում ձեր սարքը, համոզվեք, որ ձեր Ledger-ը միացված է և ապակողպված է։",
"ignor": "Անտեսել",
"import": "Ներմուծում",
"importNFTs": "Ներմուծել NFT-ներ",
@@ -541,6 +552,7 @@
"infobox_auto_address": "Ձեր ստացման հասցեն կպտտվի ամեն անգամ, երբ դուք ստանաք գործարք",
"infobox_multichain": "Օգտագործեք այս հասցեն՝ ցանկացած թոքեն կամ հավաքածու ստանալու համար",
"infobox_rotation": "Ձեր ստացման հասցեն կփոխվի ամեն անգամ, երբ փակեք և նորից բացեք այս էկրանը",
"input": "Մուտք",
"inputs": "Մուտքեր",
"insufficient_funds_for_tx": "Գործարքը հաջողությամբ կատարելու համար բավարար միջոցներ չկան։",
"insufficient_lamport_for_tx": "Դուք չունեք բավարար SOL՝ գործարքը և դրա գործարքի վճարը ծածկելու համար։ Խնդրում ենք ավելացնել ավելի շատ SOL ձեր դրամապանակում կամ նվազեցնել ուղարկվող SOL-ի քանակը։",
@@ -606,6 +618,7 @@
"manage_pow_nodes": "Կառավարել PoW հանգույցները",
"manage_providers": "Կառավարել մատակարարներին",
"manage_yats": "Կառավարել Yats-երը",
"manual_input": "Ձեռքով մուտքագրում",
"mark_as_redeemed": "Նշել որպես օգտագործված",
"market_place": "Շուկա",
"mask": "Դիմակ",
@@ -651,6 +664,7 @@
"nanogpt_subtitle": "Բոլոր ամենանոր մոդելները (GPT-5.3, Claude 4.6).\nԱռանց բաժանորդագրության՝ վճարեք կրիպտոարժույթով։",
"narrow": "Նեղ",
"network": "Ցանց",
"networks": "Ցանցեր",
"new_first_wallet_text": "Ձեր կրիպտոն անվտանգ պահելը շատ հեշտ է",
"new_node_testing": "Նոր հանգույցի փորձարկում",
"new_subaddress_create": "Ստեղծել",
@@ -667,6 +681,7 @@
"no_extra_detail": "Լրացուցիչ մանրամասներ հասանելի չեն",
"no_id_needed": "ID չի պահանջվում!",
"no_id_required": "Անձը հաստատող փաստաթուղթ չի պահանջվում։ Լրացրեք հաշիվը և ծախսեք ամենուր",
"no_providers_available": "Մատակարարներ չկան",
"no_relay_on_domain": "Օգտատիրոջ տիրույթի համար ռելե չկա կամ ռելեն անհասանելի է։ Խնդրում ենք ընտրել օգտագործելու համար ռելե։",
"no_relays": "Ռելեներ չկան",
"no_relays_message": "Մենք գտել ենք Nostr NIP-05 գրառում այս օգտատիրոջ համար, բայց այն չի պարունակում որևէ relay։ Խնդրում ենք ստացողին տեղեկացնել, որ իր Nostr գրառման մեջ ավելացնի relay-ներ։",
@@ -678,8 +693,10 @@
"node_new": "Նոր հանգույց",
"node_port": "Հանգույցի պորտ",
"node_reset_settings_title": "Կարգավորումների վերակայում",
"node_share_desc": "Սկանավորեք այս QR կոդը Սկանավորման էկրանից՝ այս հանգույցը ներմուծելու համար։",
"node_test": "Թեստ",
"nodes": "Հանգույցներ",
"nodes_desc": "Կառավարեք առկա հանգույցները կամ ավելացրեք անհատական հանգույց։",
"nodes_list_reset_to_default_message": "Վստա՞հ եք, որ ցանկանում եք վերականգնել կարգավորումները լռելյայնին:",
"none_of_selected_providers_can_exchange": "Ընտրված մատակարարներից ոչ մեկը չի կարող կատարել այս սվոփը",
"noNFTYet": "Դեռևս NFT-ներ չկան",
@@ -689,6 +706,7 @@
"note_tap_to_change": "Նշում (հպեք՝ փոխելու համար)",
"notification_permission_denied": "Ծանուցումների թույլտվությունը մշտապես մերժվել է, խնդրում ենք այն ձեռքով միացնել կարգավորումներում",
"nullURIError": "URI-ն null է",
"ocp_desc": "Վճարեք կրիպտոյով խանութներում",
"offer_expires_in": "Առաջարկը կավարտվի՝ ",
"offline": "Անցանց",
"ok": "Լավ",
@@ -715,8 +733,13 @@
"outputs": "Ելքեր",
"overshot": "Գերազանցել է",
"overwrite_amount": "Վերագրել գումարը",
"pairing_code": "Զուգակցման կոդ",
"pairing_code_desc_1": "Ձեր սարքը ցույց կտա զուգակցման կոդ։",
"pairing_code_desc_2": "Մուտքագրեք այստեղ՝ շարունակելու համար",
"pairing_error": "Զուգակցման սխալ",
"pairingInvalidEvent": "Զուգակցման անվավեր իրադարձություն",
"passphrase": "Գաղտնաբառային արտահայտություն (Ոչ պարտադիր)",
"passphrase_view_keys": "Գաղտնաբառային արտահայտություն",
"passphrases_doesnt_match": "Գաղտնաբառերը չեն համընկնում, խնդրում ենք կրկին փորձել",
"password": "Գաղտնաբառ",
"paste": "Փակցնել",
@@ -732,6 +755,7 @@
"payjoin_unavailable_sheet_content": "Payjoin գործարք ստանալու համար անհրաժեշտ է, որ ձեր դրամապանակում օգտագործման համար պատրաստ Bitcoin ունենաք։\n\nՀենց որ ձեր դրամապանակում միջոցներ լինեն, Payjoin-ը ավտոմատ կերպով կմիանա։",
"payjoin_unavailable_sheet_title": "Ինչո՞ւ է Payjoin-ը անհասանելի։",
"payment_id": "Վճարման ID՝ ",
"payment_invoices": "Վճարման հաշիվ-ապրանքագրեր",
"payment_made_easy": "Վճարումները՝ հեշտ ու արագ",
"payment_was_received": "Ձեր վճարումը ստացվել է։",
"payments": "Վճարումներ",
@@ -887,6 +911,7 @@
"save": "Պահպանել",
"save_backup_password": "Խնդրում ենք համոզվել, որ պահպանել եք ձեր կրկնօրինակի գաղտնաբառը։ Առանց դրա դուք չեք կարողանա ներմուծել ձեր կրկնօրինակման ֆայլերը։",
"save_backup_password_alert": "Պահպանել պահուստային պատճենման գաղտնաբառը",
"save_contact": "Պահպանել կոնտակտը",
"save_to_downloads": "Պահպանել «Ներբեռնումներ» պանակում",
"saved_the_trade_id": "Ես պահպանել եմ փոխանակման ID-ն",
"savings": "Խնայողություններ",
@@ -958,6 +983,7 @@
"select_sell_provider_notice": "Վերևում ընտրեք վաճառքի մատակարար։ Դուք կարող եք բաց թողնել այս էկրանը՝ հավելվածի կարգավորումներում սահմանելով ձեր լռելայն վաճառքի մատակարարին։",
"select_token": "Ընտրեք թոքեն",
"select_your_country": "Խնդրում ենք ընտրել ձեր երկիրը",
"selected_trocador_provider": "ընտրված Trocador մատակարար",
"sell": "Վաճառել",
"sell_alert_content": "Մենք ներկայումս աջակցում ենք միայն Bitcoin, Ethereum և Litecoin-ի վաճառքին։ Խնդրում ենք ստեղծել կամ անցնել ձեր Bitcoin, Ethereum կամ Litecoin դրամապանակին։",
"sell_monero_com_alert_content": "Monero-ի վաճառքը դեռ չի աջակցվում",
@@ -1035,6 +1061,7 @@
"setup_your_debit_card": "Կարգավորել ձեր դեբետային քարտը",
"share": "Կիսվել",
"share_address": "Կիսվել հասցեով",
"share_this_node": "Կիսվել այս հանգույցով",
"shared_seed_wallet_groups": "Համօգտագործվող սիդով դրամապանակների խմբեր",
"shared_seed_wallets": "Համօգտագործվող սիդով դրամապանակներ",
"show": "Ցուցադրել",
@@ -1042,6 +1069,7 @@
"show_balance": "Երկար սեղմեք՝ մնացորդը ցուցադրելու համար",
"show_balance_send_page": "Հպեք՝ ցուցադրելու համար",
"show_balance_toast": "Երկար սեղմեք՝ մնացորդը թաքցնելու կամ ցույց տալու համար",
"show_combined_balance": "Ցուցադրել համակցված մնացորդը",
"show_details": "Ցույց տալ մանրամասները",
"show_hidden_addresses": "Ցույց տալ թաքնված հասցեները",
"show_keys": "Ցուցադրել seed-ը/բանալիները",
@@ -1107,6 +1135,7 @@
"swap_providers": "Փոխանակման մատակարարներ",
"sweeping_wallet": "Դրամապանակի սվիպինգ",
"sweeping_wallet_alert": "Սա երկար չի տևի։ ՄԻ ԼՔԵՔ ԱՅՍ ԷԿՐԱՆԸ, ՀԱԿԱՌԱԿ ԴԵՊՔՈՒՄ ՄԱՔՐՎՈՂ ՄԻՋՈՑՆԵՐԸ ԿԱՐՈՂ ԵՆ ԿՈՐՉԵԼ։",
"swipe_to_bridge": "Սահեցրեք՝ կամրջելու համար",
"swipe_to_send": "Ուղարկելու համար սահեցրեք",
"switch_wallet": "Փոխել դրամապանակը",
"switchToETHWallet": "Խնդրում ենք անցնել Ethereum դրամապանակի և կրկին փորձել",
@@ -1147,6 +1176,7 @@
"testnet_coins_no_value": "Testnet մետաղադրամները արժեք չունեն",
"third_intro_content": "Yat-երը գործում են նաև Cake Wallet-ից դուրս։ Աշխարհի ցանկացած դրամապանակի հասցե կարելի է փոխարինել Yat-ով։",
"third_intro_title": "Yat-ը լավ է համատեղվում ուրիշների հետ",
"this_can_take_few_seconds": "Սա կարող է տևել մի քանի վայրկյան",
"this_pair_is_not_supported_warning": "Այս զույգը չի աջակցվում ներկայումս ընտրված փոխանակման հարթակ(ներ)ում։ Խնդրում ենք ընտրել մեկ այլ փոխանակման հարթակ։",
"thorchain_contract_address_not_supported": "THORChain-ը չի աջակցում պայմանագրային հասցե ուղարկելուն",
"thorchain_taproot_address_not_supported": "ThorChain մատակարարը չի աջակցում Taproot հասցեներին։ Խնդրում ենք փոխել հասցեն կամ ընտրել այլ մատակարար։",
@@ -1160,6 +1190,7 @@
"token_decimal": "Թոքենի տասնորդականներ (օր.՝ USDT)",
"token_name": "Թոքենի անունը (օր.՝ Tether)",
"token_symbol": "Թոքենի նշան (օր.՝ USDT)",
"token_verified_on_jupiter": "Այս նշանը հաստատված է Jupiter-ի վրա",
"tokenID": "ID",
"tokens": "Թոքեններ",
"tokens_strong_warning": "Երբեք մի ուղարկեք թոքեններ այս հասցեին!",
@@ -1288,6 +1319,7 @@
"username": "Օգտատիրոջ անուն",
"username_available": "Օգտանունը հասանելի է",
"username_character_error": "Օգտվողի անունները պետք է պարունակեն միայն",
"username_check_your_network": "Չհաջողվեց ստուգել օգտանունը։ Խնդրում ենք ստուգել ձեր ցանցային կապը։",
"username_length_error": "Օգտվողի անունները պետք է պարունակեն 6-32 այբբենաթվային նիշ։",
"username_length_error_1_64": "Օգտվողի անունները պետք է պարունակեն 1-64 այբբենաթվային նիշ։",
"username_not_available": "Այս օգտանունը հասանելի չէ։",
@@ -1298,6 +1330,7 @@
"verify_message": "Ստուգել հաղորդագրությունը",
"verify_seed": "Հաստատել սիդը",
"verify_with_2fa": "Հաստատեք Cake 2FA-ով",
"verifying_code": "Կոդի ստուգում",
"version": "Տարբերակ ${currentVersion}",
"view_all": "Դիտել բոլորը",
"view_in_block_explorer": "Դիտել բլոկների դիտարկիչում",
@@ -1309,6 +1342,7 @@
"waitFewSecondForTxUpdate": "Խնդրում ենք սպասել մի քանի վայրկյան, որպեսզի գործարքը արտացոլվի գործարքների պատմության մեջ",
"wallet": "Դրամապանակ",
"wallet_accounts": "Դրամապանակի հաշիվներ",
"wallet_balance": "Դրամապանակի մնացորդ",
"wallet_group": "Դրամապանակների խումբ",
"wallet_group_description_existing_seed": "Դուք ընտրել եք այս դրամապանակի համար օգտագործել գոյություն ունեցող սիդը։ Անհրաժեշտության դեպքում կարող եք կրկին ստուգել սիդը՝ այն հաստատելու կամ գրի առնելու համար։",
"wallet_group_description_four": "ամբողջովին նոր սիդով դրամապանակ ստեղծելու համար։",
@@ -1346,9 +1380,11 @@
"walletConnect": "WalletConnect",
"wallets": "Դրամապանակներ",
"warning": "Զգուշացում",
"wc_action_approve": "Հաստատել",
"wc_approve_request_title": "Հաստատել հարցումը",
"wc_connect_request_title": "Միացման հարցում",
"wc_connected_to": "Միացված է ${name}-ին",
"wc_desc": "Հեշտությամբ միացեք DApps-երին",
"wc_max_network_fee": "Ցանցի առավելագույն վճար",
"wc_message_to_sign": "Հաղորդագրություն ստորագրելու համար",
"wc_network_fee": "Ցանցի վճար",
@@ -1399,6 +1435,7 @@
"yat_popup_content": "Այժմ դուք կարող եք ուղարկել և ստանալ կրիպտո Cake Wallet-ում ձեր Yat-ի միջոցով՝ կարճ, էմոջի-ների վրա հիմնված օգտանունով։ Կառավարեք Yat-երը ցանկացած ժամանակ կարգավորումների էկրանին",
"yat_popup_title": "Ձեր դրամապանակի հասցեն կարող է էմոջիֆիկացվել։",
"yes": "Այո",
"yes_exit": "Այո։ Դուրս գալ",
"yesterday": "Երեկ",
"you_now_have_debit_card": "Այժմ դուք ունեք դեբետային քարտ",
"you_pay": "Դուք վճարում եք",
@@ -1451,4 +1488,4 @@
"wc_action_approve": "Հաստատել",
"wc_desc": "Հեշտությամբ միացեք DApps-երին",
"yes_exit": "Այո։ Դուրս գալ"
}
}
+37 -2
View File
@@ -76,6 +76,7 @@
"approve_tokens": "Setujui token",
"apps": "Aplikasi",
"arbiscan_history": "Riwayat ArbiScan",
"are_you_sure_exit": "Apakah Anda yakin ingin keluar?",
"arrive_in_this_address": "${currency} ${tag}akan masuk ke alamat ini",
"ascending": "Urut naik",
"ask_each_time": "Tanya setiap kali",
@@ -89,6 +90,7 @@
"auto_generate_addresses": "Buat alamat secara otomatis",
"auto_generate_subaddresses": "Buat subalamat secara otomatis",
"automatic": "Otomatis",
"available": "Tersedia",
"available_balance": "Saldo Tersedia",
"available_balance_description": "“Saldo Tersedia” atau “Saldo Terkonfirmasi” adalah dana yang dapat langsung dibelanjakan. Jika dana muncul di saldo bawah tetapi tidak di saldo atas, maka Anda harus menunggu beberapa menit agar dana masuk mendapatkan konfirmasi jaringan tambahan. Setelah mendapatkan lebih banyak konfirmasi, dana tersebut akan dapat dibelanjakan.",
"avg_savings": "Rata-rata Penghematan",
@@ -125,6 +127,7 @@
"block_remaining": "1 Blok Tersisa",
"Blocks_remaining": "${status} Blok Tersisa",
"bluetooth": "Bluetooth",
"bridging": "Menjembatani",
"bright_theme": "Terang",
"bscscan_history": "Riwayat BSCScan",
"bump_fee": "Naikkan biaya",
@@ -216,6 +219,8 @@
"color_theme": "Tema warna",
"coming_soon_tag": "Segera hadir",
"commit_transaction_amount_fee": "Konfirmasi transaksi\nJumlah: ${amount}\nBiaya: ${fee}",
"compatible_services": "Layanan yang Kompatibel",
"compatible_services_desc": "Gunakan alat Pindai untuk membaca jenis kode QR berikut yang didukung di Cake Wallet:",
"configure": "Konfigurasi",
"confirm": "Konfirmasi",
"confirm_delete_template": "Tindakan ini akan menghapus templat ini. Apakah Anda ingin melanjutkan?",
@@ -279,6 +284,7 @@
"creating_new_wallet": "Membuat dompet baru",
"creating_new_wallet_error": "Kesalahan: ${description}",
"creation_date": "Tanggal Pembuatan",
"crypto_addresses": "Alamat Kripto",
"csv_nothing_to_export": "Tidak ada yang dapat diekspor",
"current_swap": "Swap Saat Ini",
"current_wallet": "Dompet saat ini",
@@ -301,6 +307,7 @@
"default_sell_provider": "Penyedia Jual Default",
"delete": "Hapus",
"delete_account": "Hapus Akun",
"delete_this_node": "Hapus node ini",
"delete_wallet": "Hapus dompet",
"delete_wallet_confirm_message": "Apakah Anda yakin ingin menghapus dompet ${wallet_name}?",
"deleteConnectionConfirmationPrompt": "Apakah Anda yakin ingin menghapus koneksi ke",
@@ -330,6 +337,7 @@
"deuro_savings_welcome_description": "dEURO adalah stablecoin yang sepenuhnya terdesentralisasi dan dijaminkan, dipatok ke Euro — aman, serbaguna, dan tahan sensor tanpa harus bergantung pada oracle. 1 dEURO = 1 EURO.",
"deuro_tooltip_no_eth": "Untuk mengaktifkan dEURO, Anda harus memiliki ETH di dompet Anda.",
"deuro_tx_commited_content": "Mungkin perlu beberapa detik agar transaksi dikonfirmasi dan ditampilkan di layar",
"device_confirmation": "Konfirmasi Perangkat",
"device_is_signing": "Perangkat sedang menandatangani",
"dfx_option_description": "Beli kripto dengan EUR & CHF. Untuk pelanggan ritel dan korporat di Eropa",
"did_you_back_up_seeds": "Apakah Anda sudah mencadangkan semua seed Anda?",
@@ -466,6 +474,8 @@
"extracted_address_content": "Anda akan mengirim dana ke\n${recipient_name}",
"failed_authentication": "Autentikasi gagal. ${state_error}",
"faq": "FAQ",
"favorite_token": "Token favorit",
"favorite_token_desc": "Saldo token favorit akan ditampilkan di kartu saldo.",
"features": "Fitur",
"fee": "Biaya",
"fee_less_than_min": "Biaya yang dipilih lebih rendah dari minimum, harap tingkatkan biaya agar dapat mengirim transaksi",
@@ -491,6 +501,7 @@
"frozen": "Dibekukan",
"frozen_balance": "Saldo Dibekukan",
"full_balance": "Saldo Penuh",
"gallery": "Galeri",
"gas_exceeds_allowance": "Gas yang diperlukan oleh transaksi melebihi batas yang diizinkan.",
"gas_price": "Harga gas",
"general": "Umum",
@@ -526,10 +537,10 @@
"how_to_connect": "Cara Menghubungkan",
"how_to_use": "Cara menggunakan",
"how_to_use_card": "Cara menggunakan kartu ini",
"hww_exit_desc": "Ini akan mengakhiri proses pairing yang sedang berlangsung dengan perangkat keras Anda",
"i_understand": "Saya mengerti",
"icon_style": "Gaya ikon",
"id": "ID: ",
"if_you_dont_see_your_device": "Jika Anda tidak melihat perangkat Anda di atas, pastikan Ledger Anda menyala dan tidak terkunci!",
"ignor": "Abaikan",
"import": "Impor",
"importNFTs": "Impor NFT",
@@ -541,6 +552,7 @@
"infobox_auto_address": "Alamat penerimaan Anda akan berganti setiap kali Anda menerima transaksi",
"infobox_multichain": "Gunakan alamat ini untuk menerima token atau koleksi apa pun di",
"infobox_rotation": "Alamat penerimaan Anda akan berubah setiap kali Anda menutup dan membuka kembali layar ini",
"input": "Input",
"inputs": "Input",
"insufficient_funds_for_tx": "Saldo tidak mencukupi untuk berhasil mengeksekusi transaksi.",
"insufficient_lamport_for_tx": "Anda tidak memiliki cukup SOL untuk menutupi transaksi dan biaya transaksinya. Mohon tambahkan lebih banyak SOL ke dompet Anda atau kurangi jumlah SOL yang Anda kirim.",
@@ -606,6 +618,7 @@
"manage_pow_nodes": "Kelola node PoW",
"manage_providers": "Kelola penyedia",
"manage_yats": "Kelola Yats",
"manual_input": "Input Manual",
"mark_as_redeemed": "Tandai sebagai Ditukarkan",
"market_place": "Marketplace",
"mask": "Mask",
@@ -651,6 +664,7 @@
"nanogpt_subtitle": "Semua model terbaru (GPT-5.3, Claude 4.6).\nTanpa langganan, bayar dengan kripto.",
"narrow": "Sempit",
"network": "Jaringan",
"networks": "Jaringan",
"new_first_wallet_text": "Menjaga kripto Anda tetap aman itu semudah membalik telapak tangan",
"new_node_testing": "Pengujian node baru",
"new_subaddress_create": "Buat",
@@ -679,8 +693,10 @@
"node_new": "Node Baru",
"node_port": "Port node",
"node_reset_settings_title": "Atur ulang pengaturan",
"node_share_desc": "Pindai kode QR ini dari layar Pindai untuk mengimpor node ini.",
"node_test": "Uji",
"nodes": "Node",
"nodes_desc": "Kelola node yang ada atau tambahkan node kustom.",
"nodes_list_reset_to_default_message": "Apakah Anda yakin ingin mengatur ulang pengaturan ke pengaturan bawaan?",
"none_of_selected_providers_can_exchange": "Tidak ada penyedia yang dipilih yang dapat melakukan swap ini",
"noNFTYet": "Belum ada NFT",
@@ -690,6 +706,7 @@
"note_tap_to_change": "Catatan (ketuk untuk mengubah)",
"notification_permission_denied": "Izin notifikasi ditolak secara permanen, mohon aktifkan secara manual di pengaturan",
"nullURIError": "URI bernilai null",
"ocp_desc": "Bayar dengan kripto di toko",
"offer_expires_in": "Penawaran berakhir dalam: ",
"offline": "Offline",
"ok": "OK",
@@ -718,8 +735,13 @@
"outputs": "Output",
"overshot": "Melebihi",
"overwrite_amount": "Timpa jumlah",
"pairing_code": "Kode Pairing",
"pairing_code_desc_1": "Perangkat Anda akan menampilkan kode pairing.",
"pairing_code_desc_2": "Masukkan di sini untuk melanjutkan",
"pairing_error": "Kesalahan Pairing",
"pairingInvalidEvent": "Peristiwa Pairing Tidak Valid",
"passphrase": "Frasa sandi (Opsional)",
"passphrase_view_keys": "Frasa sandi",
"passphrases_doesnt_match": "Frasa sandi tidak cocok, silakan coba lagi",
"password": "Kata Sandi",
"paste": "Tempel",
@@ -735,6 +757,7 @@
"payjoin_unavailable_sheet_content": "Menerima transaksi Payjoin mengharuskan Anda memiliki Bitcoin yang siap digunakan.\n\nBegitu dompet Anda memiliki dana, Payjoin akan otomatis diaktifkan.",
"payjoin_unavailable_sheet_title": "Mengapa Payjoin tidak tersedia?",
"payment_id": "ID Pembayaran: ",
"payment_invoices": "Faktur Pembayaran",
"payment_made_easy": "Pembayaran jadi mudah",
"payment_was_received": "Pembayaran Anda telah diterima.",
"payments": "Pembayaran",
@@ -891,6 +914,7 @@
"save": "Simpan",
"save_backup_password": "Harap pastikan Anda telah menyimpan kata sandi cadangan Anda. Anda tidak akan dapat mengimpor file cadangan Anda tanpanya.",
"save_backup_password_alert": "Simpan kata sandi cadangan",
"save_contact": "Simpan Kontak",
"save_to_downloads": "Simpan ke Unduhan",
"saved_the_trade_id": "Saya telah menyimpan ID transaksi",
"savings": "Tabungan",
@@ -1040,6 +1064,7 @@
"setup_your_debit_card": "Siapkan kartu debit Anda",
"share": "Bagikan",
"share_address": "Bagikan alamat",
"share_this_node": "Bagikan node ini",
"shared_seed_wallet_groups": "Grup Dompet Seed Bersama",
"shared_seed_wallets": "Dompet Seed Bersama",
"show": "Tampilkan",
@@ -1047,6 +1072,7 @@
"show_balance": "Tekan lama untuk menampilkan saldo",
"show_balance_send_page": "Ketuk untuk menampilkan",
"show_balance_toast": "Tekan lama untuk menyembunyikan atau menampilkan saldo",
"show_combined_balance": "Tampilkan saldo gabungan",
"show_details": "Tampilkan Detail",
"show_hidden_addresses": "Tampilkan alamat yang disembunyikan",
"show_keys": "Tampilkan seed/kunci",
@@ -1112,6 +1138,7 @@
"swap_providers": "Penyedia swap",
"sweeping_wallet": "Dompet sweep",
"sweeping_wallet_alert": "Ini seharusnya tidak memakan waktu lama. JANGAN TINGGALKAN LAYAR INI ATAU DANA YANG DISAPU DAPAT HILANG.",
"swipe_to_bridge": "Geser untuk menjembatani",
"swipe_to_send": "Geser untuk mengirim",
"switch_wallet": "Ganti Wallet",
"switchToETHWallet": "Silakan beralih ke dompet Ethereum dan coba lagi",
@@ -1152,6 +1179,7 @@
"testnet_coins_no_value": "Koin testnet tidak memiliki nilai",
"third_intro_content": "Yat juga bisa digunakan di luar Cake Wallet. Alamat dompet apa pun di dunia dapat digantikan dengan Yat!",
"third_intro_title": "Yat cocok digunakan dengan yang lain",
"this_can_take_few_seconds": "Ini dapat memakan waktu beberapa detik",
"this_pair_is_not_supported_warning": "Pasangan ini tidak didukung oleh bursa yang saat ini dipilih. Silakan pilih bursa lain.",
"thorchain_contract_address_not_supported": "THORChain tidak mendukung pengiriman ke alamat kontrak",
"thorchain_taproot_address_not_supported": "Penyedia ThorChain tidak mendukung alamat Taproot. Harap ubah alamat tersebut atau pilih penyedia lain.",
@@ -1165,6 +1193,7 @@
"token_decimal": "Desimal token (mis: USDT)",
"token_name": "Nama token (mis: Tether)",
"token_symbol": "Simbol token (mis: USDT)",
"token_verified_on_jupiter": "Token ini diverifikasi di Jupiter",
"tokenID": "ID",
"tokens": "Token",
"tokens_strong_warning": "Jangan pernah mengirim token ke alamat ini!",
@@ -1293,6 +1322,7 @@
"username": "Nama pengguna",
"username_available": "Nama Pengguna Tersedia",
"username_character_error": "Nama pengguna hanya boleh berisi",
"username_check_your_network": "Tidak dapat memeriksa nama pengguna. Silakan periksa koneksi jaringan Anda.",
"username_length_error": "Nama pengguna harus terdiri dari 6-32 karakter alfanumerik.",
"username_length_error_1_64": "Nama pengguna harus terdiri dari 1–64 karakter alfanumerik.",
"username_not_available": "Nama pengguna ini tidak tersedia.",
@@ -1303,6 +1333,7 @@
"verify_message": "Verifikasi Pesan",
"verify_seed": "Verifikasi seed",
"verify_with_2fa": "Verifikasi dengan Cake 2FA",
"verifying_code": "Memverifikasi Kode",
"version": "Versi ${currentVersion}",
"view_all": "Lihat semua",
"view_in_block_explorer": "Lihat di Penjelajah Blok",
@@ -1314,6 +1345,7 @@
"waitFewSecondForTxUpdate": "Mohon tunggu beberapa detik hingga transaksi muncul di riwayat transaksi",
"wallet": "Dompet",
"wallet_accounts": "Akun Dompet",
"wallet_balance": "Saldo Dompet",
"wallet_group": "Grup Dompet",
"wallet_group_description_existing_seed": "Anda telah memilih untuk menggunakan seed yang sudah ada untuk dompet ini. Anda dapat memverifikasi seed lagi jika perlu untuk mengonfirmasi atau mencatatnya.",
"wallet_group_description_four": "untuk membuat dompet dengan seed yang sepenuhnya baru.",
@@ -1351,9 +1383,11 @@
"walletConnect": "WalletConnect",
"wallets": "Dompet",
"warning": "Peringatan",
"wc_action_approve": "Setujui",
"wc_approve_request_title": "Setujui permintaan",
"wc_connect_request_title": "Hubungkan permintaan",
"wc_connected_to": "Terhubung ke ${name}",
"wc_desc": "Hubungkan dengan mudah ke DApps",
"wc_max_network_fee": "Biaya jaringan maksimal",
"wc_message_to_sign": "Pesan untuk ditandatangani",
"wc_network_fee": "Biaya jaringan",
@@ -1404,6 +1438,7 @@
"yat_popup_content": "Anda kini dapat mengirim dan menerima kripto di Cake Wallet dengan Yat Anda—nama pengguna pendek berbasis emoji. Kelola Yat kapan saja di layar pengaturan",
"yat_popup_title": "Alamat dompet Anda dapat diubah menjadi emoji.",
"yes": "Ya",
"yes_exit": "Ya. Keluar",
"yesterday": "Kemarin",
"you_now_have_debit_card": "Anda sekarang memiliki kartu debit",
"you_pay": "Anda Bayar",
@@ -1454,4 +1489,4 @@
"wc_action_approve": "Setujui",
"wc_desc": "Hubungkan dengan mudah ke DApps",
"yes_exit": "Ya. Keluar"
}
}
+38 -2
View File
@@ -76,6 +76,7 @@
"approve_tokens": "Approva token",
"apps": "App",
"arbiscan_history": "Cronologia ArbiScan",
"are_you_sure_exit": "Sei sicuro di voler uscire?",
"arrive_in_this_address": "${currency} ${tag}arriverà a questo indirizzo",
"ascending": "Crescente",
"ask_each_time": "Chiedi ogni volta",
@@ -89,6 +90,7 @@
"auto_generate_addresses": "Genera automaticamente gli indirizzi",
"auto_generate_subaddresses": "Genera automaticamente sottoindirizzi",
"automatic": "Automatico",
"available": "Disponibile",
"available_balance": "Saldo disponibile",
"available_balance_description": "Il “Saldo disponibile” o “Saldo confermato” sono fondi che possono essere spesi immediatamente. Se i fondi compaiono nel saldo in basso ma non in quello in alto, devi attendere qualche minuto affinché i fondi in arrivo ottengano ulteriori conferme di rete. Dopo aver ricevuto più conferme, saranno spendibili.",
"avg_savings": "Risparmio medio",
@@ -125,6 +127,7 @@
"block_remaining": "1 blocco rimanente",
"Blocks_remaining": "${status} blocchi rimanenti",
"bluetooth": "Bluetooth",
"bridging": "Bridging in corso",
"bright_theme": "Chiaro",
"bscscan_history": "Cronologia BSCScan",
"bump_fee": "Aumento commissione",
@@ -216,6 +219,8 @@
"color_theme": "Tema colore",
"coming_soon_tag": "Prossimamente",
"commit_transaction_amount_fee": "Conferma transazione\nImporto: ${amount}\nCommissione: ${fee}",
"compatible_services": "Servizi compatibili",
"compatible_services_desc": "Usa lo strumento Scansione per leggere i seguenti tipi di codici QR supportati su Cake Wallet:",
"configure": "Configura",
"confirm": "Conferma",
"confirm_delete_template": "Questa azione eliminerà questo modello. Desideri continuare?",
@@ -279,6 +284,7 @@
"creating_new_wallet": "Creazione di un nuovo portafoglio",
"creating_new_wallet_error": "Errore: ${description}",
"creation_date": "Data di creazione",
"crypto_addresses": "Indirizzi crypto",
"csv_nothing_to_export": "Niente da esportare",
"current_swap": "Scambio in corso",
"current_wallet": "Portafoglio corrente",
@@ -301,6 +307,7 @@
"default_sell_provider": "Provider di vendita predefinito",
"delete": "Elimina",
"delete_account": "Elimina account",
"delete_this_node": "Elimina questo nodo",
"delete_wallet": "Elimina wallet",
"delete_wallet_confirm_message": "Sei sicuro di voler eliminare il wallet ${wallet_name}?",
"deleteConnectionConfirmationPrompt": "Sei sicuro di voler eliminare la connessione a",
@@ -330,6 +337,7 @@
"deuro_savings_welcome_description": "dEURO è una stablecoin completamente decentralizzata e collateralizzata, ancorata all'euro — sicura, versatile e resistente alla censura senza dover fare affidamento su oracoli. 1 dEURO = 1 EURO.",
"deuro_tooltip_no_eth": "Per abilitare dEURO, devi avere ETH nel tuo wallet.",
"deuro_tx_commited_content": "Potrebbero essere necessari un paio di secondi affinché la transazione venga confermata e venga visualizzata sullo schermo",
"device_confirmation": "Conferma sul dispositivo",
"device_is_signing": "Il dispositivo sta firmando",
"dfx_option_description": "Acquista crypto con EUR e CHF. Per clienti retail e aziendali in Europa",
"did_you_back_up_seeds": "Hai eseguito il backup di tutte le seed?",
@@ -466,6 +474,8 @@
"extracted_address_content": "Invierai fondi a\n${recipient_name}",
"failed_authentication": "Autenticazione non riuscita. ${state_error}",
"faq": "FAQ",
"favorite_token": "Token preferito",
"favorite_token_desc": "Il saldo del token preferito verrà mostrato sulla scheda del saldo.",
"features": "Funzionalità",
"fee": "Commissione",
"fee_less_than_min": "La commissione selezionata è inferiore al minimo. Aumenta la commissione per poter inviare la transazione",
@@ -491,6 +501,7 @@
"frozen": "Congelato",
"frozen_balance": "Saldo congelato",
"full_balance": "Saldo totale",
"gallery": "Galleria",
"gas_exceeds_allowance": "Il gas richiesto dalla transazione supera il limite consentito.",
"gas_price": "Prezzo del gas",
"general": "Generale",
@@ -526,10 +537,10 @@
"how_to_connect": "Come connettersi",
"how_to_use": "Come usare",
"how_to_use_card": "Come usare questa carta",
"hww_exit_desc": "Questo terminerà il processo di associazione in corso con il tuo dispositivo hardware",
"i_understand": "Ho capito",
"icon_style": "Stile dell'icona",
"id": "ID: ",
"if_you_dont_see_your_device": "Se non vedi il tuo dispositivo qui sopra, assicurati che il tuo Ledger sia acceso e sbloccato!",
"ignor": "Ignora",
"import": "Importa",
"importNFTs": "Importa NFT",
@@ -541,6 +552,7 @@
"infobox_auto_address": "Il tuo indirizzo di ricezione cambierà ogni volta che ricevi una transazione",
"infobox_multichain": "Usa questo indirizzo per ricevere qualsiasi token o oggetto da collezione su",
"infobox_rotation": "Il tuo indirizzo di ricezione cambierà ogni volta che chiudi e riapri questa schermata",
"input": "Input",
"inputs": "Input",
"insufficient_funds_for_tx": "Fondi insufficienti per eseguire correttamente la transazione.",
"insufficient_lamport_for_tx": "Non hai abbastanza SOL per coprire la transazione e la relativa commissione. Aggiungi più SOL al tuo wallet oppure riduci l'importo di SOL che stai inviando.",
@@ -606,6 +618,7 @@
"manage_pow_nodes": "Gestisci i nodi PoW",
"manage_providers": "Gestisci i provider",
"manage_yats": "Gestisci gli Yats",
"manual_input": "Inserimento manuale",
"mark_as_redeemed": "Segna come riscattato",
"market_place": "Marketplace",
"mask": "Maschera",
@@ -651,6 +664,7 @@
"nanogpt_subtitle": "Tutti i modelli più recenti (GPT-5.3, Claude 4.6).\nNessun abbonamento, paga con cripto.",
"narrow": "Stretto",
"network": "Rete",
"networks": "Reti",
"new_first_wallet_text": "Tenere al sicuro le tue crypto è un gioco da ragazzi",
"new_node_testing": "Test di un nuovo nodo",
"new_subaddress_create": "Crea",
@@ -679,8 +693,10 @@
"node_new": "Nuovo nodo",
"node_port": "Porta del nodo",
"node_reset_settings_title": "Ripristina le impostazioni",
"node_share_desc": "Scansiona questo codice QR dalla schermata Scansione per importare questo nodo.",
"node_test": "Test",
"nodes": "Nodi",
"nodes_desc": "Gestisci i nodi esistenti o aggiungine uno personalizzato.",
"nodes_list_reset_to_default_message": "Sei sicuro di voler ripristinare le impostazioni predefinite?",
"none_of_selected_providers_can_exchange": "Nessuno dei provider selezionati può effettuare questo swap",
"noNFTYet": "Nessun NFT ancora",
@@ -690,6 +706,7 @@
"note_tap_to_change": "Nota (tocca per cambiare)",
"notification_permission_denied": "L'autorizzazione alle notifiche è stata negata in modo permanente, abilitala manualmente nelle impostazioni",
"nullURIError": "L'URI è null",
"ocp_desc": "Paga con crypto nei negozi",
"offer_expires_in": "L'offerta scade tra: ",
"offline": "Offline",
"ok": "OK",
@@ -717,8 +734,13 @@
"outputs": "Output",
"overshot": "Superato",
"overwrite_amount": "Sovrascrivi importo",
"pairing_code": "Codice di associazione",
"pairing_code_desc_1": "Il tuo dispositivo mostrerà un codice di associazione.",
"pairing_code_desc_2": "Inseriscilo qui per continuare",
"pairing_error": "Errore di associazione",
"pairingInvalidEvent": "Evento di associazione non valido",
"passphrase": "Passphrase (Opzionale)",
"passphrase_view_keys": "Passphrase",
"passphrases_doesnt_match": "Le passphrase non corrispondono, riprova",
"password": "Password",
"paste": "Incolla",
@@ -734,6 +756,7 @@
"payjoin_unavailable_sheet_content": "Per ricevere una transazione Payjoin è necessario avere Bitcoin pronti all'uso.\n\nNon appena il tuo portafoglio avrà dei fondi, Payjoin verrà abilitato automaticamente.",
"payjoin_unavailable_sheet_title": "Perché Payjoin non è disponibile?",
"payment_id": "ID pagamento: ",
"payment_invoices": "Fatture di pagamento",
"payment_made_easy": "Pagamenti resi semplici",
"payment_was_received": "Il tuo pagamento è stato ricevuto.",
"payments": "Pagamenti",
@@ -813,6 +836,7 @@
"receive_to": "Ricevi su",
"received": "Ricevuto",
"receiving": "Ricezione",
"recieving": "Ricezione",
"recipient_address": "Indirizzo del destinatario",
"reconnect": "Riconnetti",
"reconnect_alert_text": "Sei sicuro di voler riconnetterti?",
@@ -888,6 +912,7 @@
"save": "Salva",
"save_backup_password": "Assicurati di aver salvato la password di backup. Senza di essa non potrai importare i tuoi file di backup.",
"save_backup_password_alert": "Salva la password di backup",
"save_contact": "Salva contatto",
"save_to_downloads": "Salva in Download",
"saved_the_trade_id": "Ho salvato l'ID della transazione",
"savings": "Risparmi",
@@ -1037,6 +1062,7 @@
"setup_your_debit_card": "Configura la tua carta di debito",
"share": "Condividi",
"share_address": "Condividi indirizzo",
"share_this_node": "Condividi questo nodo",
"shared_seed_wallet_groups": "Gruppi di wallet con seed condiviso",
"shared_seed_wallets": "Portafogli con seed condiviso",
"show": "Mostra",
@@ -1044,6 +1070,7 @@
"show_balance": "Tieni premuto per mostrare il saldo",
"show_balance_send_page": "Tocca per mostrare",
"show_balance_toast": "Tieni premuto per nascondere o mostrare il saldo",
"show_combined_balance": "Mostra saldo combinato",
"show_details": "Mostra dettagli",
"show_hidden_addresses": "Mostra indirizzi nascosti",
"show_keys": "Mostra seed/chiavi",
@@ -1109,6 +1136,7 @@
"swap_providers": "Provider di swap",
"sweeping_wallet": "Svuotamento del portafoglio",
"sweeping_wallet_alert": "Questo non dovrebbe richiedere molto tempo. NON LASCIARE QUESTA SCHERMATA O I FONDI SPOSTATI POTREBBERO ANDARE PERSI.",
"swipe_to_bridge": "Scorri per il bridge",
"swipe_to_send": "Scorri per inviare",
"switch_wallet": "Cambia wallet",
"switchToETHWallet": "Passa a un wallet Ethereum e riprova",
@@ -1149,6 +1177,7 @@
"testnet_coins_no_value": "Le monete di testnet non hanno valore",
"third_intro_content": "Gli Yat esistono anche al di fuori di Cake Wallet. Qualsiasi indirizzo di portafoglio al mondo può essere sostituito con uno Yat!",
"third_intro_title": "Yat va d'accordo con gli altri",
"this_can_take_few_seconds": "Questo può richiedere alcuni secondi",
"this_pair_is_not_supported_warning": "Questa coppia non è supportata con l'exchange attualmente selezionato. Seleziona un altro exchange.",
"thorchain_contract_address_not_supported": "THORChain non supporta l'invio a un indirizzo di contratto",
"thorchain_taproot_address_not_supported": "Il provider ThorChain non supporta gli indirizzi Taproot. Modifica l'indirizzo o seleziona un provider diverso.",
@@ -1162,6 +1191,7 @@
"token_decimal": "Decimali del token (es: USDT)",
"token_name": "Nome del token (es: Tether)",
"token_symbol": "Simbolo del token (es: USDT)",
"token_verified_on_jupiter": "Questo token è verificato su Jupiter",
"tokenID": "ID",
"tokens": "Token",
"tokens_strong_warning": "Non inviare mai token a questo indirizzo!",
@@ -1290,6 +1320,7 @@
"username": "Nome utente",
"username_available": "Nome utente disponibile",
"username_character_error": "I nomi utente devono contenere solo",
"username_check_your_network": "Impossibile verificare il nome utente. Controlla la tua connessione di rete.",
"username_length_error": "I nomi utente devono contenere da 6 a 32 caratteri alfanumerici.",
"username_length_error_1_64": "I nomi utente devono contenere 1-64 caratteri alfanumerici.",
"username_not_available": "Questo nome utente non è disponibile.",
@@ -1300,6 +1331,7 @@
"verify_message": "Verifica messaggio",
"verify_seed": "Verifica il seed",
"verify_with_2fa": "Verifica con Cake 2FA",
"verifying_code": "Verifica del codice in corso",
"version": "Versione ${currentVersion}",
"view_all": "Visualizza tutti",
"view_in_block_explorer": "Visualizza nel Block Explorer",
@@ -1312,6 +1344,7 @@
"waiting_payment_confirmation": "In attesa di conferma del pagamento",
"wallet": "Wallet",
"wallet_accounts": "Account del wallet",
"wallet_balance": "Saldo del wallet",
"wallet_group": "Gruppo di wallet",
"wallet_group_description_existing_seed": "Hai scelto di utilizzare un seed esistente per questo wallet. Puoi verificare di nuovo il seed se devi confermarlo o annotarlo.",
"wallet_group_description_four": "per creare un wallet con un seed completamente nuovo.",
@@ -1349,9 +1382,11 @@
"walletConnect": "WalletConnect",
"wallets": "Portafogli",
"warning": "Attenzione",
"wc_action_approve": "Approva",
"wc_approve_request_title": "Approva la richiesta",
"wc_connect_request_title": "Richiesta di connessione",
"wc_connected_to": "Connesso a ${name}",
"wc_desc": "Connettiti facilmente alle dApp",
"wc_max_network_fee": "Tariffa di rete massima",
"wc_message_to_sign": "Messaggio da firmare",
"wc_network_fee": "Tariffa di rete",
@@ -1403,6 +1438,7 @@
"yat_popup_content": "Ora puoi inviare e ricevere criptovalute in Cake Wallet con il tuo Yat, un breve nome utente basato su emoji. Puoi gestire gli Yat in qualsiasi momento nella schermata delle impostazioni",
"yat_popup_title": "L'indirizzo del tuo wallet può essere trasformato in emoji.",
"yes": "Sì",
"yes_exit": "Sì. Esci",
"yesterday": "Ieri",
"you_now_have_debit_card": "Ora hai una carta di debito",
"you_pay": "Tu paghi",
@@ -1454,4 +1490,4 @@
"wc_action_approve": "Approva",
"wc_desc": "Connettiti facilmente alle dApp",
"yes_exit": "Sì. Esci"
}
}
+38 -2
View File
@@ -76,6 +76,7 @@
"approve_tokens": "トークンを承認",
"apps": "アプリ",
"arbiscan_history": "ArbiScan 履歴",
"are_you_sure_exit": "終了してもよろしいですか?",
"arrive_in_this_address": "${currency} ${tag}はこのアドレスに着金します",
"ascending": "昇順",
"ask_each_time": "毎回確認する",
@@ -89,6 +90,7 @@
"auto_generate_addresses": "アドレスを自動生成",
"auto_generate_subaddresses": "サブアドレスを自動生成",
"automatic": "自動",
"available": "利用可能",
"available_balance": "利用可能残高",
"available_balance_description": "「利用可能な残高」または「承認済み残高」は、すぐに使用できる資金です。下の残高には表示されているのに上の残高に表示されない場合は、受信した資金がネットワークでさらに承認(確認)されるまで数分待つ必要があります。承認数が増えると、使用できるようになります。",
"avg_savings": "平均節約額",
@@ -125,6 +127,7 @@
"block_remaining": "残り1ブロック",
"Blocks_remaining": "${status} ブロック残り",
"bluetooth": "Bluetooth",
"bridging": "ブリッジ中",
"bright_theme": "明るい",
"bscscan_history": "BSCScan履歴",
"bump_fee": "手数料を上げる",
@@ -216,6 +219,8 @@
"color_theme": "カラーテーマ",
"coming_soon_tag": "近日公開",
"commit_transaction_amount_fee": "トランザクションを確定\n金額: ${amount}\n手数料: ${fee}",
"compatible_services": "対応サービス",
"compatible_services_desc": "スキャンツールを使用して、Cake Walletで対応している以下の種類のQRコードを読み取れます:",
"configure": "設定",
"confirm": "確認",
"confirm_delete_template": "この操作により、このテンプレートは削除されます。続行しますか?",
@@ -279,6 +284,7 @@
"creating_new_wallet": "新しいウォレットを作成中",
"creating_new_wallet_error": "エラー: ${description}",
"creation_date": "作成日",
"crypto_addresses": "暗号資産アドレス",
"csv_nothing_to_export": "エクスポートするものがありません",
"current_swap": "現在のスワップ",
"current_wallet": "現在のウォレット",
@@ -301,6 +307,7 @@
"default_sell_provider": "デフォルトの売却プロバイダー",
"delete": "削除",
"delete_account": "アカウントを削除",
"delete_this_node": "このノードを削除",
"delete_wallet": "ウォレットを削除",
"delete_wallet_confirm_message": "${wallet_name} ウォレットを削除してもよろしいですか?",
"deleteConnectionConfirmationPrompt": "への接続を削除してもよろしいですか?",
@@ -330,6 +337,7 @@
"deuro_savings_welcome_description": "dEUROは、オラクルに頼ることなく、ユーロにペッグされた完全分散型の担保型ステーブルコインです。安全で汎用性が高く、検閲耐性を備えています。1 dEURO = 1 EURO。",
"deuro_tooltip_no_eth": "dEUROを有効にするには、ウォレットにETHが必要です。",
"deuro_tx_commited_content": "トランザクションが承認され、画面に反映されるまでに数秒かかる場合があります",
"device_confirmation": "デバイスでの確認",
"device_is_signing": "デバイスが署名中です",
"dfx_option_description": "EUR・CHFで暗号資産を購入。ヨーロッパの個人および法人のお客様向け",
"did_you_back_up_seeds": "すべてのシードをバックアップしましたか?",
@@ -466,6 +474,8 @@
"extracted_address_content": "次の宛先に送金します\n${recipient_name}",
"failed_authentication": "認証に失敗しました。${state_error}",
"faq": "FAQ",
"favorite_token": "お気に入りのトークン",
"favorite_token_desc": "お気に入りのトークンの残高が残高カードに表示されます。",
"features": "機能",
"fee": "手数料",
"fee_less_than_min": "選択した手数料が最小値を下回っています。トランザクションを送信できるように、手数料を増やしてください",
@@ -491,6 +501,7 @@
"frozen": "凍結",
"frozen_balance": "凍結残高",
"full_balance": "全残高",
"gallery": "ギャラリー",
"gas_exceeds_allowance": "取引に必要なガスが許容上限を超えています。",
"gas_price": "ガス価格",
"general": "一般",
@@ -527,10 +538,10 @@
"how_to_connect": "接続方法",
"how_to_use": "使い方",
"how_to_use_card": "このカードの使い方",
"hww_exit_desc": "ハードウェアデバイスとの進行中のペアリング処理を終了します",
"i_understand": "理解しました",
"icon_style": "アイコンのスタイル",
"id": "ID: ",
"if_you_dont_see_your_device": "上記にデバイスが表示されない場合は、Ledgerが起動していてロック解除されていることを確認してください!",
"ignor": "無視",
"import": "インポート",
"importNFTs": "NFTをインポート",
@@ -542,6 +553,7 @@
"infobox_auto_address": "受信アドレスは、トランザクションを受信するたびに自動的に切り替わります",
"infobox_multichain": "このアドレスを使用して、次のネットワーク上で任意のトークンまたはコレクティブルを受け取れます",
"infobox_rotation": "この画面を閉じて再度開くたびに、受信アドレスがローテーションされます。",
"input": "入力",
"inputs": "入力",
"insufficient_funds_for_tx": "トランザクションを正常に実行するための残高が不足しています。",
"insufficient_lamport_for_tx": "トランザクションおよびその取引手数料を支払うためのSOLが不足しています。ウォレットにSOLを追加するか、送信するSOLの量を減らしてください。",
@@ -607,6 +619,7 @@
"manage_pow_nodes": "PoWノードを管理",
"manage_providers": "プロバイダーを管理",
"manage_yats": "Yatsを管理",
"manual_input": "手動入力",
"mark_as_redeemed": "使用済みとしてマーク",
"market_place": "マーケットプレイス",
"mask": "マスク",
@@ -652,6 +665,7 @@
"nanogpt_subtitle": "すべての最新モデル(GPT-5.3、Claude 4.6)。\nサブスクリプション不要、暗号資産で支払い。",
"narrow": "狭い",
"network": "ネットワーク",
"networks": "ネットワーク",
"new_first_wallet_text": "暗号資産を安全に守るのはお手のものです",
"new_node_testing": "新しいノードのテスト",
"new_subaddress_create": "作成",
@@ -680,8 +694,10 @@
"node_new": "新規ノード",
"node_port": "ノードポート",
"node_reset_settings_title": "設定をリセット",
"node_share_desc": "このノードをインポートするには、スキャン画面でこのQRコードをスキャンしてください。",
"node_test": "テスト",
"nodes": "ノード",
"nodes_desc": "既存のノードを管理するか、カスタムノードを追加します。",
"nodes_list_reset_to_default_message": "設定をデフォルトにリセットしてもよろしいですか?",
"none_of_selected_providers_can_exchange": "選択したプロバイダーはいずれもこのスワップを実行できません",
"noNFTYet": "NFTはまだありません",
@@ -691,6 +707,7 @@
"note_tap_to_change": "メモ(タップして変更)",
"notification_permission_denied": "通知の権限が永久に拒否されました。設定で手動で有効にしてください",
"nullURIError": "URIがnullです",
"ocp_desc": "店舗で暗号資産を使って支払う",
"offer_expires_in": "オファーの有効期限: ",
"offline": "オフライン",
"ok": "OK",
@@ -717,8 +734,13 @@
"outputs": "アウトプット",
"overshot": "オーバーシュート",
"overwrite_amount": "金額を上書き",
"pairing_code": "ペアリングコード",
"pairing_code_desc_1": "デバイスにペアリングコードが表示されます。",
"pairing_code_desc_2": "続行するにはここに入力してください",
"pairing_error": "ペアリングエラー",
"pairingInvalidEvent": "無効なペアリングイベント",
"passphrase": "パスフレーズ(任意)",
"passphrase_view_keys": "パスフレーズ",
"passphrases_doesnt_match": "パスフレーズが一致しません。もう一度お試しください",
"password": "パスワード",
"paste": "貼り付け",
@@ -734,6 +756,7 @@
"payjoin_unavailable_sheet_content": "Payjoinトランザクションを受信するには、使用可能なビットコインが必要です。\n\nウォレットに資金が入ると、Payjoinは自動的に有効になります。",
"payjoin_unavailable_sheet_title": "Payjoinが利用できないのはなぜですか?",
"payment_id": "支払いID: ",
"payment_invoices": "支払い請求書",
"payment_made_easy": "支払いが簡単に",
"payment_was_received": "お支払いを受領しました。",
"payments": "支払い",
@@ -813,6 +836,7 @@
"receive_to": "受取先",
"received": "受信",
"receiving": "受信",
"recieving": "受信中",
"recipient_address": "受取人アドレス",
"reconnect": "再接続",
"reconnect_alert_text": "再接続してもよろしいですか?",
@@ -888,6 +912,7 @@
"save": "保存",
"save_backup_password": "バックアップパスワードを保存していることを必ず確認してください。これがないとバックアップファイルをインポートできません。",
"save_backup_password_alert": "バックアップ用パスワードを保存",
"save_contact": "連絡先を保存",
"save_to_downloads": "ダウンロードに保存",
"saved_the_trade_id": "取引IDを保存しました",
"savings": "貯蓄",
@@ -1037,6 +1062,7 @@
"setup_your_debit_card": "デビットカードを設定する",
"share": "共有",
"share_address": "アドレスを共有",
"share_this_node": "このノードを共有",
"shared_seed_wallet_groups": "共有シードのウォレットグループ",
"shared_seed_wallets": "共有シードのウォレット",
"show": "表示",
@@ -1044,6 +1070,7 @@
"show_balance": "長押しして残高を表示",
"show_balance_send_page": "タップして表示",
"show_balance_toast": "長押しして残高を非表示/表示",
"show_combined_balance": "合計残高を表示",
"show_details": "詳細を表示",
"show_hidden_addresses": "非表示のアドレスを表示",
"show_keys": "シード/キーを表示",
@@ -1109,6 +1136,7 @@
"swap_providers": "スワッププロバイダー",
"sweeping_wallet": "スイーピングウォレット",
"sweeping_wallet_alert": "すぐに完了します。この画面から離れないでください。離れると、スイープした資金が失われる可能性があります。",
"swipe_to_bridge": "スワイプしてブリッジ",
"swipe_to_send": "スワイプして送信",
"switch_wallet": "ウォレットを切り替える",
"switchToETHWallet": "Ethereumウォレットに切り替えて、もう一度お試しください",
@@ -1149,6 +1177,7 @@
"testnet_coins_no_value": "テストネットコインには価値がありません",
"third_intro_content": "YatはCake Walletの外でも使えます。地球上のどのウォレットアドレスもYatに置き換えられます!",
"third_intro_title": "Yatは他のサービスとも相性がいい",
"this_can_take_few_seconds": "数秒かかる場合があります",
"this_pair_is_not_supported_warning": "このペアは、現在選択されている取引所ではサポートされていません。別の取引所を選択してください。",
"thorchain_contract_address_not_supported": "THORChainはコントラクトアドレスへの送信をサポートしていません",
"thorchain_taproot_address_not_supported": "ThorChainプロバイダーはTaprootアドレスをサポートしていません。アドレスを変更するか、別のプロバイダーを選択してください。",
@@ -1162,6 +1191,7 @@
"token_decimal": "トークンの小数点以下桁数(例:USDT)",
"token_name": "トークン名(例:Tether)",
"token_symbol": "トークンシンボル(例:USDT)",
"token_verified_on_jupiter": "このトークンは Jupiter で検証されています",
"tokenID": "ID",
"tokens": "トークン",
"tokens_strong_warning": "このアドレスにトークンを絶対に送信しないでください!",
@@ -1290,6 +1320,7 @@
"username": "ユーザー名",
"username_available": "ユーザー名は利用可能です",
"username_character_error": "ユーザー名には次の文字のみを含める必要があります",
"username_check_your_network": "ユーザー名を確認できません。ネットワーク接続を確認してください。",
"username_length_error": "ユーザー名は6~32文字の英数字である必要があります。",
"username_length_error_1_64": "ユーザー名は1~64文字の英数字である必要があります。",
"username_not_available": "このユーザー名は利用できません。",
@@ -1300,6 +1331,7 @@
"verify_message": "メッセージを検証",
"verify_seed": "シードを確認",
"verify_with_2fa": "Cake 2FAで認証する",
"verifying_code": "コードを確認中",
"version": "バージョン ${currentVersion}",
"view_all": "すべて表示",
"view_in_block_explorer": "ブロックエクスプローラーで表示",
@@ -1311,6 +1343,7 @@
"waitFewSecondForTxUpdate": "取引履歴に取引が反映されるまで、数秒お待ちください。",
"wallet": "ウォレット",
"wallet_accounts": "ウォレットアカウント",
"wallet_balance": "ウォレット残高",
"wallet_group": "ウォレットグループ",
"wallet_group_description_existing_seed": "このウォレットでは既存のシードを使用することを選択しました。確認したり書き留めたりする必要がある場合は、シードをもう一度確認できます。",
"wallet_group_description_four": "まったく新しいシードでウォレットを作成するため。",
@@ -1348,9 +1381,11 @@
"walletConnect": "WalletConnect",
"wallets": "ウォレット",
"warning": "警告",
"wc_action_approve": "承認",
"wc_approve_request_title": "リクエストの承認",
"wc_connect_request_title": "接続リクエスト",
"wc_connected_to": "${name} に接続しました",
"wc_desc": "dApp に簡単に接続",
"wc_max_network_fee": "最大ネットワーク料金",
"wc_message_to_sign": "署名するメッセージ",
"wc_network_fee": "ネットワーク料金",
@@ -1401,6 +1436,7 @@
"yat_popup_content": "Yat(短い絵文字ベースのユーザー名)を使って、Cake Walletで暗号資産を送受信できるようになりました。設定画面でいつでもYatを管理できます",
"yat_popup_title": "あなたのウォレットアドレスは絵文字化できます。",
"yes": "はい",
"yes_exit": "はい。終了する",
"yesterday": "昨日",
"you_now_have_debit_card": "デビットカードを利用できるようになりました",
"you_pay": "支払う金額",
@@ -1452,4 +1488,4 @@
"wc_action_approve": "承認",
"wc_desc": "dApp に簡単に接続",
"yes_exit": "はい。終了する"
}
}
+37 -2
View File
@@ -76,6 +76,7 @@
"approve_tokens": "토큰 승인",
"apps": "앱",
"arbiscan_history": "ArbiScan 기록",
"are_you_sure_exit": "정말 종료하시겠습니까?",
"arrive_in_this_address": "${currency} ${tag}은(는) 이 주소로 입금됩니다",
"ascending": "오름차순",
"ask_each_time": "매번 확인",
@@ -89,6 +90,7 @@
"auto_generate_addresses": "주소 자동 생성",
"auto_generate_subaddresses": "서브주소 자동 생성",
"automatic": "자동",
"available": "사용 가능",
"available_balance": "사용 가능 잔액",
"available_balance_description": "“사용 가능 잔액” 또는 “확정 잔액”은 즉시 사용할 수 있는 자금입니다. 자금이 아래 잔액에는 표시되지만 위 잔액에는 표시되지 않는 경우, 입금된 자금이 네트워크에서 더 많은 컨펌(확인)을 받을 때까지 몇 분 정도 기다려야 합니다. 더 많은 컨펌을 받은 후에는 사용할 수 있습니다.",
"avg_savings": "평균 절감액",
@@ -125,6 +127,7 @@
"block_remaining": "1 블록 남음",
"Blocks_remaining": "${status}개 블록 남음",
"bluetooth": "블루투스",
"bridging": "브리징",
"bright_theme": "밝게",
"bscscan_history": "BSCScan 기록",
"bump_fee": "수수료 올리기",
@@ -216,6 +219,8 @@
"color_theme": "색상 테마",
"coming_soon_tag": "출시 예정",
"commit_transaction_amount_fee": "트랜잭션 제출\n금액: ${amount}\n수수료: ${fee}",
"compatible_services": "호환 서비스",
"compatible_services_desc": "스캔 도구를 사용하여 Cake Wallet에서 지원하는 다음 유형의 QR 코드를 읽으세요:",
"configure": "설정",
"confirm": "확인",
"confirm_delete_template": "이 작업을 수행하면 이 템플릿이 삭제됩니다. 계속하시겠습니까?",
@@ -279,6 +284,7 @@
"creating_new_wallet": "새 지갑 생성 중",
"creating_new_wallet_error": "오류: ${description}",
"creation_date": "생성일",
"crypto_addresses": "암호화폐 주소",
"csv_nothing_to_export": "내보낼 항목이 없습니다",
"current_swap": "현재 스왑",
"current_wallet": "현재 지갑",
@@ -301,6 +307,7 @@
"default_sell_provider": "기본 판매 제공업체",
"delete": "삭제",
"delete_account": "계정 삭제",
"delete_this_node": "이 노드 삭제",
"delete_wallet": "지갑 삭제",
"delete_wallet_confirm_message": "${wallet_name} 지갑을 삭제하시겠습니까?",
"deleteConnectionConfirmationPrompt": "다음에 대한 연결을 삭제하시겠습니까?",
@@ -330,6 +337,7 @@
"deuro_savings_welcome_description": "dEURO는 유로에 페그된 완전한 탈중앙화 담보 기반 스테이블코인으로, 오라클에 의존하지 않으면서도 안전하고 다용도로 사용할 수 있으며 검열 저항성이 있습니다. 1 dEURO = 1 EURO.",
"deuro_tooltip_no_eth": "dEURO를 활성화하려면 지갑에 ETH가 있어야 합니다.",
"deuro_tx_commited_content": "거래가 확인되어 화면에 반영되기까지 몇 초 정도 걸릴 수 있습니다.",
"device_confirmation": "기기 확인",
"device_is_signing": "장치가 서명하고 있습니다",
"dfx_option_description": "EUR 및 CHF로 암호화폐 구매. 유럽의 개인 및 기업 고객용",
"did_you_back_up_seeds": "모든 시드 문구를 백업하셨나요?",
@@ -466,6 +474,8 @@
"extracted_address_content": "다음 수신자에게 자금을 전송합니다\n${recipient_name}",
"failed_authentication": "인증에 실패했습니다. ${state_error}",
"faq": "FAQ",
"favorite_token": "즐겨찾는 토큰",
"favorite_token_desc": "즐겨찾는 토큰의 잔액이 잔액 카드에 표시됩니다.",
"features": "기능",
"fee": "수수료",
"fee_less_than_min": "선택한 수수료가 최소 수수료보다 낮습니다. 거래를 전송하려면 수수료를 높여주세요.",
@@ -491,6 +501,7 @@
"frozen": "동결",
"frozen_balance": "동결 잔액",
"full_balance": "전체 잔액",
"gallery": "갤러리",
"gas_exceeds_allowance": "트랜잭션에 필요한 가스가 허용량을 초과합니다.",
"gas_price": "가스 가격",
"general": "일반",
@@ -526,10 +537,10 @@
"how_to_connect": "연결하는 방법",
"how_to_use": "사용 방법",
"how_to_use_card": "이 카드 사용 방법",
"hww_exit_desc": "하드웨어 기기와 진행 중인 페어링 과정을 종료합니다",
"i_understand": "이해했습니다",
"icon_style": "아이콘 스타일",
"id": "ID: ",
"if_you_dont_see_your_device": "위에서 기기가 보이지 않으면 Ledger가 켜져 있고 잠금 해제되어 있는지 확인하세요!",
"ignor": "무시",
"import": "가져오기",
"importNFTs": "NFT 가져오기",
@@ -541,6 +552,7 @@
"infobox_auto_address": "수신 주소는 거래를 받을 때마다 변경됩니다.",
"infobox_multichain": "이 주소를 사용하여 다음에서 어떤 토큰이나 수집품이든 받으세요",
"infobox_rotation": "이 화면을 닫았다가 다시 열 때마다 수신 주소가 변경됩니다.",
"input": "입력",
"inputs": "입력값",
"insufficient_funds_for_tx": "트랜잭션을 성공적으로 실행하기에 잔액이 부족합니다.",
"insufficient_lamport_for_tx": "트랜잭션 및 트랜잭션 수수료를 충당할 SOL이 부족합니다. 지갑에 SOL을 더 추가하거나 전송하는 SOL 금액을 줄여 주세요.",
@@ -606,6 +618,7 @@
"manage_pow_nodes": "PoW 노드 관리",
"manage_providers": "제공업체 관리",
"manage_yats": "Yats 관리",
"manual_input": "수동 입력",
"mark_as_redeemed": "사용 완료로 표시",
"market_place": "마켓플레이스",
"mask": "마스크",
@@ -651,6 +664,7 @@
"nanogpt_subtitle": "최신 모델 모두(GPT-5.3, Claude 4.6).\n구독 없이 암호화폐로 결제.",
"narrow": "좁게",
"network": "네트워크",
"networks": "네트워크",
"new_first_wallet_text": "암호화폐를 안전하게 지키는 건 식은 죽 먹기예요",
"new_node_testing": "새 노드 테스트",
"new_subaddress_create": "생성",
@@ -679,8 +693,10 @@
"node_new": "새 노드",
"node_port": "노드 포트",
"node_reset_settings_title": "설정 재설정",
"node_share_desc": "이 노드를 가져오려면 스캔 화면에서 이 QR 코드를 스캔하세요.",
"node_test": "테스트",
"nodes": "노드",
"nodes_desc": "기존 노드를 관리하거나 사용자 지정 노드를 추가하세요.",
"nodes_list_reset_to_default_message": "설정을 기본값으로 재설정하시겠습니까?",
"none_of_selected_providers_can_exchange": "선택한 제공업체 중 이 스왑을 지원하는 곳이 없습니다",
"noNFTYet": "아직 NFT가 없습니다",
@@ -690,6 +706,7 @@
"note_tap_to_change": "메모 (탭하여 변경)",
"notification_permission_denied": "알림 권한이 영구적으로 거부되었습니다. 설정에서 수동으로 활성화해 주세요.",
"nullURIError": "URI가 null입니다",
"ocp_desc": "매장에서 암호화폐로 결제",
"offer_expires_in": "오퍼 만료까지: ",
"offline": "오프라인",
"ok": "확인",
@@ -716,6 +733,10 @@
"outputs": "출력",
"overshot": "초과",
"overwrite_amount": "금액 덮어쓰기",
"pairing_code": "페어링 코드",
"pairing_code_desc_1": "기기에 페어링 코드가 표시됩니다.",
"pairing_code_desc_2": "계속하려면 여기에 입력하세요",
"pairing_error": "페어링 오류",
"pairingInvalidEvent": "유효하지 않은 페어링 이벤트",
"passphrase": "패스프레이즈(선택 사항)",
"passphrase_view_keys": "패스프레이즈",
@@ -734,6 +755,7 @@
"payjoin_unavailable_sheet_content": "Payjoin 트랜잭션을 수신하려면 사용할 수 있는 비트코인이 준비되어 있어야 합니다.\n\n지갑에 자금이 들어오면 Payjoin이 자동으로 활성화됩니다.",
"payjoin_unavailable_sheet_title": "Payjoin을 사용할 수 없는 이유는 무엇인가요?",
"payment_id": "결제 ID: ",
"payment_invoices": "결제 청구서",
"payment_made_easy": "결제를 쉽게",
"payment_was_received": "결제가 수신되었습니다.",
"payments": "결제",
@@ -813,6 +835,7 @@
"receive_to": "받는 주소",
"received": "수신됨",
"receiving": "수신",
"recieving": "수신 중",
"recipient_address": "수신자 주소",
"reconnect": "재연결",
"reconnect_alert_text": "정말 다시 연결하시겠습니까?",
@@ -888,6 +911,7 @@
"save": "저장",
"save_backup_password": "백업 비밀번호를 저장했는지 꼭 확인하세요. 비밀번호가 없으면 백업 파일을 가져올 수 없습니다.",
"save_backup_password_alert": "백업 비밀번호 저장",
"save_contact": "연락처 저장",
"save_to_downloads": "다운로드 폴더에 저장",
"saved_the_trade_id": "거래 ID를 저장했어요",
"savings": "저축",
@@ -1037,6 +1061,7 @@
"setup_your_debit_card": "직불카드 설정",
"share": "공유",
"share_address": "주소 공유",
"share_this_node": "이 노드 공유",
"shared_seed_wallet_groups": "공유 시드 지갑 그룹",
"shared_seed_wallets": "공유 시드 지갑",
"show": "보기",
@@ -1044,6 +1069,7 @@
"show_balance": "길게 눌러 잔액 표시",
"show_balance_send_page": "탭하여 표시",
"show_balance_toast": "길게 눌러 잔액을 숨기거나 표시하세요",
"show_combined_balance": "합산 잔액 표시",
"show_details": "세부 정보 보기",
"show_hidden_addresses": "숨겨진 주소 표시",
"show_keys": "시드/키 보기",
@@ -1109,6 +1135,7 @@
"swap_providers": "스왑 제공업체",
"sweeping_wallet": "지갑 스윕",
"sweeping_wallet_alert": "오래 걸리지 않습니다. 이 화면을 떠나지 마세요. 그렇지 않으면 스윕된 자금이 손실될 수 있습니다.",
"swipe_to_bridge": "스와이프하여 브리지",
"swipe_to_send": "밀어서 보내기",
"switch_wallet": "지갑 전환",
"switchToETHWallet": "이더리움 지갑으로 전환한 후 다시 시도하세요",
@@ -1149,6 +1176,7 @@
"testnet_coins_no_value": "테스트넷 코인은 가치가 없습니다",
"third_intro_content": "Yat은 Cake Wallet 밖에서도 사용할 수 있어요. 지구상의 어떤 지갑 주소든 Yat으로 대체할 수 있습니다!",
"third_intro_title": "Yat은 다른 서비스와도 잘 어울립니다",
"this_can_take_few_seconds": "몇 초 정도 걸릴 수 있습니다",
"this_pair_is_not_supported_warning": "현재 선택된 거래소에서는 이 페어가 지원되지 않습니다. 다른 거래소를 선택하세요.",
"thorchain_contract_address_not_supported": "THORChain은 컨트랙트 주소로의 전송을 지원하지 않습니다",
"thorchain_taproot_address_not_supported": "ThorChain 제공자는 Taproot 주소를 지원하지 않습니다. 주소를 변경하거나 다른 제공자를 선택하세요.",
@@ -1162,6 +1190,7 @@
"token_decimal": "토큰 소수점(예: USDT)",
"token_name": "토큰 이름(예: 테더)",
"token_symbol": "토큰 심볼(예: USDT)",
"token_verified_on_jupiter": "이 토큰은 Jupiter에서 확인되었습니다.",
"tokenID": "ID",
"tokens": "토큰",
"tokens_strong_warning": "절대 이 주소로 토큰을 보내지 마세요!",
@@ -1290,6 +1319,7 @@
"username": "사용자명",
"username_available": "사용 가능한 사용자 이름",
"username_character_error": "사용자 이름에는 다음만 포함될 수 있습니다.",
"username_check_your_network": "사용자 이름을 확인할 수 없습니다. 네트워크 연결을 확인해 주세요.",
"username_length_error": "사용자 이름은 6~32자의 영숫자로 구성되어야 합니다.",
"username_length_error_1_64": "사용자 이름은 1~64자의 영숫자 문자로 구성되어야 합니다.",
"username_not_available": "이 사용자 이름은 사용할 수 없습니다.",
@@ -1300,6 +1330,7 @@
"verify_message": "메시지 확인",
"verify_seed": "시드 문구 확인",
"verify_with_2fa": "Cake 2FA로 인증",
"verifying_code": "코드 확인 중",
"version": "버전 ${currentVersion}",
"view_all": "모두 보기",
"view_in_block_explorer": "블록 탐색기에서 보기",
@@ -1311,6 +1342,7 @@
"waitFewSecondForTxUpdate": "트랜잭션이 거래 내역에 반영될 때까지 몇 초간 기다려 주십시오",
"wallet": "지갑",
"wallet_accounts": "지갑 계정",
"wallet_balance": "지갑 잔액",
"wallet_group": "지갑 그룹",
"wallet_group_description_existing_seed": "이 지갑에 기존 시드를 사용하도록 선택했습니다. 확인하거나 적어둘 필요가 있다면 시드를 다시 확인할 수 있습니다.",
"wallet_group_description_four": "완전히 새로운 시드로 지갑을 생성하려면",
@@ -1348,9 +1380,11 @@
"walletConnect": "WalletConnect",
"wallets": "지갑",
"warning": "경고",
"wc_action_approve": "승인",
"wc_approve_request_title": "요청 승인",
"wc_connect_request_title": "연결 요청",
"wc_connected_to": "${name}에 연결됨",
"wc_desc": "DApp에 손쉽게 연결",
"wc_max_network_fee": "최대 네트워크 수수료",
"wc_message_to_sign": "서명하라는 메시지",
"wc_network_fee": "네트워크 수수료",
@@ -1401,6 +1435,7 @@
"yat_popup_content": "이제 짧은 이모지 기반 사용자 이름인 Yat으로 Cake Wallet에서 암호화폐를 보내고 받을 수 있습니다. 설정 화면에서 언제든지 Yat을 관리할 수 있습니다.",
"yat_popup_title": "지갑 주소를 이모지로 변환할 수 있습니다.",
"yes": "예",
"yes_exit": "예. 종료",
"yesterday": "어제",
"you_now_have_debit_card": "이제 직불카드가 생겼습니다",
"you_pay": "결제 금액",
@@ -1451,4 +1486,4 @@
"wc_action_approve": "승인",
"wc_desc": "DApp에 손쉽게 연결",
"yes_exit": "예. 종료"
}
}
+38 -2
View File
@@ -76,6 +76,7 @@
"approve_tokens": "တိုကင်များကို အတည်ပြုပါ",
"apps": "အက်ပ်များ",
"arbiscan_history": "ArbiScan မှတ်တမ်း",
"are_you_sure_exit": "ထွက်လိုသည်မှာ သေချာပါသလား။",
"arrive_in_this_address": "${currency} ${tag}သည် ဤလိပ်စာသို့ ရောက်ရှိပါမည်",
"ascending": "အတက်",
"ask_each_time": "အကြိမ်တိုင်း မေးပါ",
@@ -89,6 +90,7 @@
"auto_generate_addresses": "လိပ်စာများကို အလိုအလျောက် ထုတ်ပေးရန်",
"auto_generate_subaddresses": "Subaddress များကို အလိုအလျောက် ဖန်တီးပါ",
"automatic": "အလိုအလျောက်",
"available": "ရရှိနိုင်သည်",
"available_balance": "ရရှိနိုင်သော လက်ကျန်",
"available_balance_description": "“Available Balance” သို့မဟုတ် “Confirmed Balance” သည် ချက်ချင်းသုံးစွဲနိုင်သော လက်ကျန်ငွေဖြစ်သည်။ လက်ကျန်အောက်ပိုင်းတွင်သာ ဝင်လာသော်လည်း အပေါ်ပိုင်းလက်ကျန်တွင် မပေါ်သေးပါက ကွန်ယက်အတည်ပြုချက် (network confirmations) ပိုမိုရရှိရန် မိနစ်အနည်းငယ် စောင့်ရပါမည်။ အတည်ပြုချက်များ ပိုမိုရရှိပြီးနောက် ထိုငွေများကို သုံးစွဲနိုင်ပါလိမ့်မည်။",
"avg_savings": "ပျမ်းမျှ ချွေတာမှု",
@@ -125,6 +127,7 @@
"block_remaining": "Block 1 ခု ကျန်ရှိသေးသည်",
"Blocks_remaining": "${status} ဘလောက် ကျန်နေပါသည်",
"bluetooth": "ဘလူးတုသ်",
"bridging": "Bridge လုပ်နေသည်",
"bright_theme": "တောက်ပ",
"bscscan_history": "BSCScan မှတ်တမ်း",
"bump_fee": "အခကြေးငွေ တိုးမြှင့်ရန်",
@@ -216,6 +219,8 @@
"color_theme": "အရောင်အပြင်အဆင်",
"coming_soon_tag": "မကြာမီလာမည်",
"commit_transaction_amount_fee": "ငွေလွှဲမှုကို အတည်ပြုပါ\nပမာဏ: ${amount}\nအခကြေးငွေ: ${fee}",
"compatible_services": "တွဲဖက်အသုံးပြုနိုင်သော ဝန်ဆောင်မှုများ",
"compatible_services_desc": "Cake Wallet တွင် ပံ့ပိုးထားသော အောက်ပါ QR ကုဒ်အမျိုးအစားများကို ဖတ်ရန် Scan tool ကို အသုံးပြုပါ:",
"configure": "ပြင်ဆင်ရန်",
"confirm": "အတည်ပြု",
"confirm_delete_template": "ဤလုပ်ဆောင်ချက်သည် ဤတမ်းပလိတ်ကို ဖျက်ပစ်မည်ဖြစ်သည်။ ဆက်လက်လုပ်ဆောင်လိုပါသလား။",
@@ -279,6 +284,7 @@
"creating_new_wallet": "ပိုက်ဆံအိတ်အသစ် ဖန်တီးနေသည်",
"creating_new_wallet_error": "အမှား: ${description}",
"creation_date": "ဖန်တီးသည့်နေ့စွဲ",
"crypto_addresses": "Crypto လိပ်စာများ",
"csv_nothing_to_export": "ထုတ်ယူရန် မရှိပါ",
"current_swap": "လက်ရှိ Swap",
"current_wallet": "လက်ရှိ Wallet",
@@ -301,6 +307,7 @@
"default_sell_provider": "မူလရောင်းချဝန်ဆောင်မှုပေးသူ",
"delete": "ဖျက်ရန်",
"delete_account": "အကောင့်ကို ဖျက်ပါ",
"delete_this_node": "ဤ node ကို ဖျက်ပါ",
"delete_wallet": "ပိုက်ဆံအိတ်ကို ဖျက်မည်",
"delete_wallet_confirm_message": "${wallet_name} wallet ကို ဖျက်ချင်တာ သေချာပါသလား။",
"deleteConnectionConfirmationPrompt": "ဤချိတ်ဆက်မှုကို ဖျက်လိုသည်မှာ သေချာပါသလား",
@@ -330,6 +337,7 @@
"deuro_savings_welcome_description": "dEURO သည် ယူရိုနှင့် ချိတ်ဆက်ထားသော အပြည့်အဝ ဗဟိုချုပ်ကိုင်မှုမရှိသော အာမခံပစ္စည်းအခြေပြု stablecoin တစ်ခုဖြစ်ပြီး — လုံခြုံမှုရှိ၊ အသုံးချနိုင်မှုမြင့်ပြီး၊ censorship ကိုခံနိုင်ရည်ရှိကာ oracles များကို မမှီခိုဘဲ လုပ်ဆောင်နိုင်သည်။ 1 dEURO = 1 EURO။",
"deuro_tooltip_no_eth": "dEURO ကို enable လုပ်ရန် သင့်ပိုက်ဆံအိတ်ထဲမှာ ETH ရှိရမယ်။",
"deuro_tx_commited_content": "ငွေပေးငွေယူကို အတည်ပြုရန်နှင့် မျက်နှာပြင်ပေါ်တွင် ပြသလာရန် စက္ကန့်အနည်းငယ် ကြာနိုင်ပါသည်",
"device_confirmation": "စက်ပစ္စည်း အတည်ပြုခြင်း",
"device_is_signing": "ကိရိယာက လက်မှတ်ရေးထိုးနေသည်",
"dfx_option_description": "EUR & CHF ဖြင့် crypto ကို ဝယ်ယူပါ။ ဥရောပရှိ လက်လီနှင့် ကော်ပိုရိတ် ဖောက်သည်များအတွက်",
"did_you_back_up_seeds": "သင့် Seed စကားလုံးများအားလုံးကို အရန်ကူးယူပြီးပြီလား?",
@@ -466,6 +474,8 @@
"extracted_address_content": "သင်သည် ရန်ပုံငွေများကို\n${recipient_name} သို့ ပေးပို့ပါမည်",
"failed_authentication": "အထောက်အထားစိစစ်ခြင်း မအောင်မြင်ပါ။ ${state_error}",
"faq": "FAQ",
"favorite_token": "အကြိုက်ဆုံး တိုကင်",
"favorite_token_desc": "အကြိုက်ဆုံး တိုကင်၏ လက်ကျန်ကို လက်ကျန် ကတ်ပေါ်တွင် ပြသပါမည်။",
"features": "အင်္ဂါရပ်များ",
"fee": "အခကြေးငွေ",
"fee_less_than_min": "ရွေးချယ်ထားသော အခကြေးငွေသည် အနည်းဆုံးသတ်မှတ်ချက်ထက် နည်းနေပါသည်။ လွှဲပြောင်းမှုကို ပို့နိုင်ရန် အခကြေးငွေကို တိုးမြှင့်ပါ။",
@@ -491,6 +501,7 @@
"frozen": "ရပ်ဆိုင်းထားသည်",
"frozen_balance": "အေးခဲထားသော လက်ကျန်",
"full_balance": "လက်ကျန်ငွေ အပြည့်",
"gallery": "ပြခန်း",
"gas_exceeds_allowance": "ငွေပေးငွေယူအတွက် လိုအပ်သော Gas ပမာဏသည် ခွင့်ပြုထားသော ပမာဏကို ကျော်လွန်နေသည်။",
"gas_price": "ဂတ်စ်စျေးနှုန်း",
"general": "အထွေထွေ",
@@ -526,10 +537,10 @@
"how_to_connect": "ချိတ်ဆက်နည်း",
"how_to_use": "အသုံးပြုနည်း",
"how_to_use_card": "ဒီကတ်ကို ဘယ်လိုသုံးရမလဲ",
"hww_exit_desc": "၎င်းသည် သင့်ဟာ့ဒ်ဝဲ စက်ပစ္စည်းနှင့် ဆက်လက်လုပ်ဆောင်နေသော တွဲချိတ်မှု လုပ်ငန်းစဉ်ကို ရပ်တန့်စေမည်ဖြစ်သည်။",
"i_understand": "နားလည်ပါတယ်",
"icon_style": "အိုင်ကွန်စတိုင်",
"id": "ID: ",
"if_you_dont_see_your_device": "အထက်မှာ သင့်စက်ကို မတွေ့ပါက သင့် Ledger ကို ဖွင့်ထားပြီး လော့ခ်ဖွင့်ထားကြောင်း သေချာပါစေ။",
"ignor": "လျစ်လျူရှုပါ",
"import": "တင်သွင်း",
"importNFTs": "NFT များကို တင်သွင်းပါ",
@@ -541,6 +552,7 @@
"infobox_auto_address": "သင့်လက်ခံရရှိရန် လိပ်စာသည် ငွေပေးငွေယူတစ်ခု လက်ခံရရှိတိုင်း အလိုအလျောက် ပြောင်းလဲသွားမည်ဖြစ်သည်။",
"infobox_multichain": "မည်သည့် တိုကင် သို့မဟုတ် စုဆောင်းပစ္စည်းကိုမဆို လက်ခံရန် ဤလိပ်စာကို အသုံးပြုပါ။",
"infobox_rotation": "သင် ဤစခရင်ကို ပိတ်ပြီး ပြန်ဖွင့်သည့်အခါတိုင်း သင့်လက်ခံရရှိရန် လိပ်စာသည် ပြောင်းလဲသွားပါမည်။",
"input": "ထည့်သွင်းမှု",
"inputs": "အဝင်များ",
"insufficient_funds_for_tx": "ငွေပေးငွေယူကို အောင်မြင်စွာ ဆောင်ရွက်ရန် လက်ကျန်ငွေ မလုံလောက်ပါ။",
"insufficient_lamport_for_tx": "ငွေပေးငွေယူနှင့် ၎င်း၏ ငွေပေးငွေယူခကို ပေးချေရန် SOL မလုံလောက်ပါ။ ကျေးဇူးပြု၍ သင့် wallet ထဲသို့ SOL ကို ထပ်မံထည့်ပါ သို့မဟုတ် သင်ပို့မည့် SOL ပမာဏကို လျှော့ချပါ။",
@@ -606,6 +618,7 @@
"manage_pow_nodes": "PoW node များကို စီမံပါ",
"manage_providers": "ဝန်ဆောင်မှုပေးသူများကို စီမံခန့်ခွဲပါ",
"manage_yats": "Yats ကို စီမံခန့်ခွဲပါ",
"manual_input": "လက်ဖြင့် ထည့်သွင်းခြင်း",
"mark_as_redeemed": "အသုံးပြုပြီးဖြစ်သည်ဟု အမှတ်အသားပြုပါ",
"market_place": "စျေးကွက်",
"mask": "Mask",
@@ -651,6 +664,7 @@
"nanogpt_subtitle": "နောက်ဆုံးပေါ်မော်ဒယ်များအားလုံး (GPT-5.3, Claude 4.6)။\nစာရင်းသွင်းမှုမလို၊ crypto ဖြင့်ပေးချေပါ။",
"narrow": "ကျဉ်း",
"network": "ကွန်ရက်",
"networks": "ကွန်ရက်များ",
"new_first_wallet_text": "သင့်ရဲ့ crypto ကို လုံခြုံအောင် ထိန်းသိမ်းတာက လွယ်လွယ်ကူကူပါပဲ",
"new_node_testing": "နိုဒ်အသစ် စမ်းသပ်ခြင်း",
"new_subaddress_create": "ဖန်တီးရန်",
@@ -679,8 +693,10 @@
"node_new": "နိုဒ်အသစ်",
"node_port": "Node ပေါက်",
"node_reset_settings_title": "ဆက်တင်များကို ပြန်လည်သတ်မှတ်ပါ",
"node_share_desc": "ဤ node ကို တင်သွင်းရန် Scan စခရင်မှ ဤ QR ကုဒ်ကို စကင်ဖတ်ပါ။",
"node_test": "စမ်းသပ်",
"nodes": "နိုဒ်များ",
"nodes_desc": "ရှိပြီးသား node များကို စီမံပါ သို့မဟုတ် စိတ်ကြိုက်တစ်ခု ထည့်ပါ။",
"nodes_list_reset_to_default_message": "ဆက်တင်များကို မူရင်းအတိုင်း ပြန်လည်သတ်မှတ်လိုသည်မှာ သေချာပါသလား။",
"none_of_selected_providers_can_exchange": "ရွေးချယ်ထားသော ပံ့ပိုးပေးသူများထဲမှ မည်သူမျှ ဒီ swap ကို မလုပ်နိုင်ပါ",
"noNFTYet": "NFT မရှိသေးပါ",
@@ -690,6 +706,7 @@
"note_tap_to_change": "မှတ်ချက် (ပြောင်းလဲရန် နှိပ်ပါ)",
"notification_permission_denied": "အသိပေးချက်ခွင့်ပြုချက်ကို အပြီးတိုင် ငြင်းပယ်ထားပါသည်၊ ကျေးဇူးပြု၍ ချိန်ညှိချက်များတွင် လက်ဖြင့် ဖွင့်ပေးပါ",
"nullURIError": "URI သည် null ဖြစ်သည်",
"ocp_desc": "ဆိုင်များတွင် crypto ဖြင့် ပေးချေပါ",
"offer_expires_in": "ကမ်းလှမ်းချက် သက်တမ်းကုန်ဆုံးမည့်အချိန်: ",
"offline": "အော့ဖ်လိုင်း",
"ok": "OK",
@@ -716,8 +733,13 @@
"outputs": "အထွက်များ",
"overshot": "ကျော်လွန်သွားသည်",
"overwrite_amount": "ပမာဏကို အစားထိုးရေးပါ",
"pairing_code": "တွဲချိတ်ကုဒ်",
"pairing_code_desc_1": "သင့်စက်ပစ္စည်းသည် တွဲချိတ်ကုဒ်တစ်ခုကို ပြသပါမည်။",
"pairing_code_desc_2": "ဆက်လက်လုပ်ဆောင်ရန် ဤနေရာတွင် ထည့်ပါ",
"pairing_error": "တွဲချိတ်မှု အမှား",
"pairingInvalidEvent": "မမှန်ကန်သော တွဲချိတ်မှု ဖြစ်ရပ်",
"passphrase": "စကားဝှက်စာစု (မဖြစ်မနေ မလိုအပ်ပါ)",
"passphrase_view_keys": "Passphrase",
"passphrases_doesnt_match": "Passphrase များ မကိုက်ညီပါ၊ ကျေးဇူးပြု၍ ထပ်မံကြိုးစားပါ",
"password": "စကားဝှက်",
"paste": "ကူးထည့်",
@@ -733,6 +755,7 @@
"payjoin_unavailable_sheet_content": "Payjoin လွှဲပြောင်းမှုကို လက်ခံရန် သင့်တွင် အသုံးပြုရန် အသင့်ဖြစ်သော Bitcoin ရှိထားရန် လိုအပ်သည်။\n\nသင့်ပိုက်ဆံအိတ်တွင် ရန်ပုံငွေများ ရှိလာသည်နှင့်တပြိုင်နက် Payjoin ကို အလိုအလျောက် ဖွင့်ပေးမည်ဖြစ်သည်။",
"payjoin_unavailable_sheet_title": "Payjoin ကို ဘာကြောင့် မရနိုင်တာလဲ။",
"payment_id": "Payment ID: ",
"payment_invoices": "ငွေပေးချေမှု ငွေတောင်းခံလွှာများ",
"payment_made_easy": "ငွေပေးချေမှုကို လွယ်ကူစေသည်",
"payment_was_received": "သင့်ငွေပေးချေမှုကို လက်ခံရရှိပါသည်။",
"payments": "ပေးချေမှုများ",
@@ -812,6 +835,7 @@
"receive_to": "သို့ လက်ခံရန်",
"received": "လက်ခံရရှိ",
"receiving": "လက်ခံနေသည်",
"recieving": "လက်ခံနေသည်",
"recipient_address": "လက်ခံသူ၏ လိပ်စာ",
"reconnect": "ပြန်လည်ချိတ်ဆက်ရန်",
"reconnect_alert_text": "ပြန်လည်ချိတ်ဆက်လိုသည်မှာ သေချာပါသလား?",
@@ -887,6 +911,7 @@
"save": "သိမ်းဆည်း",
"save_backup_password": "သင်၏ အရန်စကားဝှက်ကို သိမ်းဆည်းထားပြီးဖြစ်ကြောင်း သေချာပါစေ။ ၎င်းမရှိပါက သင်၏ အရန်ဖိုင်များကို တင်သွင်းနိုင်မည် မဟုတ်ပါ။",
"save_backup_password_alert": "အရန်ကူးယူမှု စကားဝှက်ကို သိမ်းဆည်းပါ",
"save_contact": "အဆက်အသွယ်ကို သိမ်းဆည်းပါ",
"save_to_downloads": "ဒေါင်းလုဒ်များသို့ သိမ်းဆည်းပါ",
"saved_the_trade_id": "ကုန်သွယ်မှု ID ကို သိမ်းဆည်းထားပြီးပါပြီ။",
"savings": "စုဆောင်းငွေ",
@@ -1036,6 +1061,7 @@
"setup_your_debit_card": "သင့်ဒက်ဘစ်ကတ်ကို စနစ်ထည့်သွင်းပါ",
"share": "မျှဝေ",
"share_address": "လိပ်စာကို မျှဝေပါ",
"share_this_node": "ဤ node ကို မျှဝေပါ",
"shared_seed_wallet_groups": "မျှဝေထားသော Seed ပိုက်ဆံအိတ်အုပ်စုများ",
"shared_seed_wallets": "မျှဝေထားသော Seed Wallet များ",
"show": "ပြပါ",
@@ -1043,6 +1069,7 @@
"show_balance": "လက်ကျန်ငွေကို ပြရန် ကြာကြာနှိပ်ပါ",
"show_balance_send_page": "ဖော်ပြရန် နှိပ်ပါ",
"show_balance_toast": "လက်ချောင်းကို ကြာကြာဖိထားပြီး လက်ကျန်ငွေကို ဖျောက်/ပြပါ",
"show_combined_balance": "ပေါင်းစပ်လက်ကျန်ကို ပြပါ",
"show_details": "အသေးစိတ်ပြရန်",
"show_hidden_addresses": "ဝှက်ထားသောလိပ်စာများကို ပြပါ",
"show_keys": "Seed/Key များကို ပြပါ",
@@ -1108,6 +1135,7 @@
"swap_providers": "Swap ဝန်ဆောင်မှုပေးသူများ",
"sweeping_wallet": "ပိုက်ဆံအိတ် ရှင်းလင်းခြင်း",
"sweeping_wallet_alert": "ဒါက ကြာကြာမခံသင့်ပါဘူး။ ဒီစခရင်ကနေ မထွက်ပါနဲ့၊ မဟုတ်ရင် sweep လုပ်ထားတဲ့ ရန်ပုံငွေတွေ ပျောက်ဆုံးနိုင်ပါတယ်။",
"swipe_to_bridge": "Bridge လုပ်ရန် ပွတ်ဆွဲပါ",
"swipe_to_send": "ပို့ရန် ပွတ်ဆွဲပါ",
"switch_wallet": "ပိုက်ဆံအိတ် ပြောင်းရန်",
"switchToETHWallet": "ကျေးဇူးပြု၍ Ethereum ပိုက်ဆံအိတ်သို့ ပြောင်းပြီး ထပ်မံကြိုးစားကြည့်ပါ။",
@@ -1148,6 +1176,7 @@
"testnet_coins_no_value": "Testnet ဒင်္ဂါးများမှာ တန်ဖိုးမရှိပါ",
"third_intro_content": "Yats သည် Cake Wallet အပြင်ဘက်တွင်လည်း အသုံးပြုနိုင်ပါသည်။ ကမ္ဘာပေါ်ရှိ မည်သည့် wallet address မဆို Yat ဖြင့် အစားထိုးနိုင်ပါသည်။",
"third_intro_title": "Yat သည် အခြားဝန်ဆောင်မှုများနှင့်လည်း ကောင်းစွာ တွဲဖက်အသုံးပြုနိုင်သည်။",
"this_can_take_few_seconds": "၎င်းသည် စက္ကန့်အနည်းငယ် ကြာနိုင်ပါသည်",
"this_pair_is_not_supported_warning": "ဤအတွဲကို လက်ရှိရွေးချယ်ထားသော လဲလှယ်ရေး(များ) ဖြင့် မပံ့ပိုးပါ။ ကျေးဇူးပြု၍ အခြား လဲလှယ်ရေးကို ရွေးချယ်ပါ။",
"thorchain_contract_address_not_supported": "THORChain သည် စာချုပ်လိပ်စာသို့ ပို့ခြင်းကို မပံ့ပိုးပါ",
"thorchain_taproot_address_not_supported": "ThorChain ပံ့ပိုးပေးသူသည် Taproot လိပ်စာများကို မထောက်ပံ့ပါ။ ကျေးဇူးပြု၍ လိပ်စာကို ပြောင်းလဲပါ သို့မဟုတ် အခြားပံ့ပိုးပေးသူကို ရွေးချယ်ပါ။",
@@ -1161,6 +1190,7 @@
"token_decimal": "တိုကင် ဒဿမ (ဥပမာ: USDT)",
"token_name": "တိုကင်အမည် (ဥပမာ: Tether)",
"token_symbol": "တိုကင်သင်္ကေတ (ဥပမာ: USDT)",
"token_verified_on_jupiter": "ဤတိုကင်ကို Jupiter တွင် အတည်ပြုထားသည်။",
"tokenID": "ID",
"tokens": "တိုကင်များ",
"tokens_strong_warning": "ဒီလိပ်စာသို့ တိုကင်များကို ဘယ်တော့မှ မပို့ပါနဲ့!",
@@ -1289,6 +1319,7 @@
"username": "အသုံးပြုသူအမည်",
"username_available": "အသုံးပြုသူအမည် ရနိုင်သည်",
"username_character_error": "အသုံးပြုသူအမည်များတွင်သာ ပါဝင်ရမည်",
"username_check_your_network": "အသုံးပြုသူအမည်ကို စစ်ဆေး၍ မရပါ။ ကျေးဇူးပြု၍ သင့်ကွန်ရက်ချိတ်ဆက်မှုကို စစ်ဆေးပါ။",
"username_length_error": "အသုံးပြုသူအမည်များတွင် အက္ခရာနှင့် ဂဏန်း ၆-၃၂ လုံး ပါဝင်ရပါမည်။",
"username_length_error_1_64": "အသုံးပြုသူအမည်များတွင် အက္ခရာနှင့် ဂဏန်း စာလုံး 1-64 လုံး ပါဝင်ရပါမည်။",
"username_not_available": "ဤအသုံးပြုသူအမည်ကို မရနိုင်ပါ။",
@@ -1299,6 +1330,7 @@
"verify_message": "မက်ဆေ့ချ်ကို အတည်ပြုရန်",
"verify_seed": "Seed ကို အတည်ပြုပါ",
"verify_with_2fa": "Cake 2FA ဖြင့် အတည်ပြုပါ",
"verifying_code": "ကုဒ်ကို စိစစ်နေသည်",
"version": "ဗားရှင်း ${currentVersion}",
"view_all": "အားလုံးကြည့်ရန်",
"view_in_block_explorer": "Block Explorer တွင် ကြည့်ရှုပါ",
@@ -1310,6 +1342,7 @@
"waitFewSecondForTxUpdate": "ငွေပေးငွေယူမှတ်တမ်းတွင် ပြသလာရန် စက္ကန့်အနည်းငယ် စောင့်ပါ။",
"wallet": "ပိုက်ဆံအိတ်",
"wallet_accounts": "Wallet အကောင့်များ",
"wallet_balance": "ပိုက်ဆံအိတ် လက်ကျန်",
"wallet_group": "ပိုက်ဆံအိတ်အုပ်စု",
"wallet_group_description_existing_seed": "ဒီပိုက်ဆံအိတ်အတွက် ရှိပြီးသား seed ကို သုံးဖို့ သင်ရွေးချယ်ထားပါတယ်။ အတည်ပြုရန် သို့မဟုတ် မှတ်သားရေးသားရန် လိုအပ်ပါက seed ကို ထပ်မံစစ်ဆေးအတည်ပြုနိုင်ပါတယ်။",
"wallet_group_description_four": "လုံးဝအသစ်သော seed ဖြင့် wallet တစ်ခုဖန်တီးရန်။",
@@ -1347,9 +1380,11 @@
"walletConnect": "WalletConnect",
"wallets": "ဝေါလက်များ",
"warning": "သတိပေးချက်",
"wc_action_approve": "အတည်ပြု",
"wc_approve_request_title": "တောင်းဆိုချက်ကို အတည်ပြုပါ။",
"wc_connect_request_title": "တောင်းဆိုချက်ကို ချိတ်ဆက်ပါ။",
"wc_connected_to": "${name} သို့ ချိတ်ဆက်ထားသည်",
"wc_desc": "dApp များသို့ လွယ်ကူစွာ ချိတ်ဆက်ပါ",
"wc_max_network_fee": "အများဆုံးကွန်ရက်အခကြေးငွေ",
"wc_message_to_sign": "လက်မှတ်ထိုးရန် မက်ဆေ့ချ်",
"wc_network_fee": "ကွန်ရက်ကြေး",
@@ -1400,6 +1435,7 @@
"yat_popup_content": "သင်၏ Yat — အီမိုဂျီအခြေပြု တိုတောင်းသော အသုံးပြုသူအမည် — ဖြင့် Cake Wallet တွင် crypto ကို ယခု ပေးပို့ခြင်းနှင့် လက်ခံခြင်း ပြုလုပ်နိုင်ပါပြီ။ ဆက်တင်များ စခရင်ပေါ်တွင် Yats ကို အချိန်မရွေး စီမံခန့်ခွဲနိုင်ပါသည်။",
"yat_popup_title": "သင့်ပိုက်ဆံအိတ်လိပ်စာကို emoji အဖြစ်ပြောင်းလဲနိုင်ပါသည်။",
"yes": "ဟုတ်ကဲ့",
"yes_exit": "ဟုတ်ကဲ့။ ထွက်ပါ",
"yesterday": "မနေ့က",
"you_now_have_debit_card": "ယခု သင့်တွင် ဒက်ဘစ်ကတ် ရရှိပြီးပါပြီ",
"you_pay": "သင်ပေးချေသည်",
@@ -1451,4 +1487,4 @@
"wc_action_approve": "အတည်ပြု",
"wc_desc": "dApp များသို့ လွယ်ကူစွာ ချိတ်ဆက်ပါ",
"yes_exit": "ဟုတ်ကဲ့။ ထွက်ပါ"
}
}
+41 -2
View File
@@ -76,9 +76,11 @@
"approve_tokens": "Tokens goedkeuren",
"apps": "Apps",
"arbiscan_history": "ArbiScan-geschiedenis",
"are_you_sure_exit": "Weet je zeker dat je wilt afsluiten?",
"arrive_in_this_address": "${currency} ${tag}komt aan op dit adres",
"ascending": "Stijgend",
"ask_each_time": "Vraag het elke keer",
"assets": "Activa",
"auth_store_ban_timeout": "Blokkeringstime-out",
"auth_store_banned_for": "Geblokkeerd voor ",
"auth_store_banned_minutes": " minuten",
@@ -88,6 +90,7 @@
"auto_generate_addresses": "Automatisch adressen genereren",
"auto_generate_subaddresses": "Automatisch subadressen genereren",
"automatic": "Automatisch",
"available": "Beschikbaar",
"available_balance": "Beschikbaar saldo",
"available_balance_description": "Het “Beschikbare saldo” of “Bevestigde saldo” zijn fondsen die direct kunnen worden uitgegeven. Als fondsen in het lagere saldo verschijnen maar niet in het bovenste saldo, dan moet je een paar minuten wachten tot de inkomende fondsen meer netwerkbevestigingen krijgen. Daarna kan het worden uitgegeven.",
"avg_savings": "Gem. besparingen",
@@ -124,6 +127,7 @@
"block_remaining": "1 blok resterend",
"Blocks_remaining": "${status} resterende blokken",
"bluetooth": "Bluetooth",
"bridging": "Bridgen",
"bright_theme": "Helder",
"bscscan_history": "BscScan-geschiedenis",
"bump_fee": "Vergoeding verhogen",
@@ -198,6 +202,7 @@
"choose_qr_code_format": "Kies QR-code-formaat",
"choose_qr_code_format_note": "Kies het juiste formaat voor je hardware-wallet:",
"choose_relay": "Kies een relay die je wilt gebruiken",
"choose_wallet": "Kies wallet",
"choose_wallet_currency": "Kies een walletvaluta:",
"choose_wallet_group": "Kies walletgroep",
"clear": "Wissen",
@@ -214,6 +219,8 @@
"color_theme": "Kleurthema",
"coming_soon_tag": "Binnenkort",
"commit_transaction_amount_fee": "Bevestig transactie\nBedrag: ${amount}\nKosten: ${fee}",
"compatible_services": "Compatibele services",
"compatible_services_desc": "Gebruik de Scan-tool om de volgende soorten QR-codes te lezen die door Cake Wallet worden ondersteund:",
"configure": "Configureren",
"confirm": "Bevestigen",
"confirm_delete_template": "Met deze actie wordt deze sjabloon verwijderd. Wil je doorgaan?",
@@ -277,6 +284,7 @@
"creating_new_wallet": "Nieuwe wallet aanmaken",
"creating_new_wallet_error": "Fout: ${description}",
"creation_date": "Aanmaakdatum",
"crypto_addresses": "Crypto-adressen",
"csv_nothing_to_export": "Niets om te exporteren",
"current_swap": "Huidige swap",
"current_wallet": "Huidige wallet",
@@ -299,6 +307,7 @@
"default_sell_provider": "Standaard verkoopprovider",
"delete": "Verwijderen",
"delete_account": "Account verwijderen",
"delete_this_node": "Deze node verwijderen",
"delete_wallet": "Wallet verwijderen",
"delete_wallet_confirm_message": "Weet je zeker dat je de wallet ${wallet_name} wilt verwijderen?",
"deleteConnectionConfirmationPrompt": "Weet je zeker dat je de verbinding wilt verwijderen met",
@@ -328,6 +337,7 @@
"deuro_savings_welcome_description": "dEURO is een volledig gedecentraliseerde, door onderpand gedekte stablecoin gekoppeld aan de euro — beveiligd, veelzijdig en censuurbestendig zonder te moeten vertrouwen op orakels. 1 dEURO = 1 EURO.",
"deuro_tooltip_no_eth": "Om dEURO in te schakelen, moet je ETH in je wallet hebben.",
"deuro_tx_commited_content": "Het kan een paar seconden duren voordat de transactie wordt bevestigd en weerspiegeld op het scherm",
"device_confirmation": "Apparaatbevestiging",
"device_is_signing": "Apparaat ondertekent",
"dfx_option_description": "Koop crypto met EUR & CHF. Voor retail- en zakelijke klanten in Europa",
"did_you_back_up_seeds": "Heb je een back-up gemaakt van al je seeds?",
@@ -464,6 +474,8 @@
"extracted_address_content": "Je stuurt fondsen naar\n${recipient_name}",
"failed_authentication": "Mislukte authenticatie. ${state_error}",
"faq": "FAQ",
"favorite_token": "Favoriete token",
"favorite_token_desc": "Het saldo van de favoriete token wordt op de saldokaart weergegeven.",
"features": "Functies",
"fee": "Kosten",
"fee_less_than_min": "Geselecteerde vergoeding is lager dan het minimum, verhoog de vergoeding om de transactie te kunnen verzenden",
@@ -489,6 +501,7 @@
"frozen": "Bevroren",
"frozen_balance": "Bevroren saldo",
"full_balance": "Volledig saldo",
"gallery": "Galerij",
"gas_exceeds_allowance": "Gas vereist door transactie overschrijdt het toegestane maximum.",
"gas_price": "Gasprijs",
"general": "Algemeen",
@@ -524,10 +537,10 @@
"how_to_connect": "Hoe te verbinden",
"how_to_use": "Hoe te gebruiken",
"how_to_use_card": "Hoe je deze kaart gebruikt",
"hww_exit_desc": "Hiermee wordt het lopende koppelingsproces met je hardware-apparaat beëindigd",
"i_understand": "Ik begrijp het",
"icon_style": "Pictogramstijl",
"id": "ID: ",
"if_you_dont_see_your_device": "Als je je apparaat hierboven niet ziet, zorg er dan voor dat je Ledger ontgrendeld is!",
"ignor": "Negeren",
"import": "Importeren",
"importNFTs": "NFT's importeren",
@@ -539,6 +552,7 @@
"infobox_auto_address": "Je ontvangstadres wisselt elke keer dat je een transactie ontvangt",
"infobox_multichain": "Gebruik dit adres om een token of collectible te ontvangen op",
"infobox_rotation": "Je ontvangstadres wisselt telkens wanneer je dit scherm sluit en opnieuw opent",
"input": "Invoer",
"inputs": "Invoer",
"insufficient_funds_for_tx": "Onvoldoende fondsen om de transactie met succes uit te voeren.",
"insufficient_lamport_for_tx": "Je hebt niet genoeg SOL om de transactie en de transactiekosten te dekken. Voeg meer SOL toe aan je wallet of verminder de hoeveelheid SOL die je verzendt.",
@@ -577,6 +591,7 @@
"litecoin_mweb_always_scan": "Stel MWEB altijd op scannen",
"litecoin_mweb_description": "MWEB is een nieuw protocol dat snellere, goedkopere en meer privacy-vriendelijke transacties naar Litecoin brengt",
"litecoin_mweb_dismiss": "Afwijzen",
"litecoin_mweb_display": "Toon MWEB op startscherm",
"litecoin_mweb_display_card": "Toon MWEB-kaart",
"litecoin_mweb_enable": "MWEB inschakelen",
"litecoin_mweb_enable_later": "Je kunt ervoor kiezen om MWEB opnieuw in te schakelen onder weergave-instellingen.",
@@ -603,6 +618,7 @@
"manage_pow_nodes": "PoW-nodes beheren",
"manage_providers": "Providers beheren",
"manage_yats": "Yats beheren",
"manual_input": "Handmatige invoer",
"mark_as_redeemed": "Markeer als ingewisseld",
"market_place": "Marketplace",
"mask": "Masker",
@@ -648,6 +664,7 @@
"nanogpt_subtitle": "Alle nieuwste modellen (GPT-5.3, Claude 4.6).\nGeen abonnement, betaal met crypto.",
"narrow": "Smal",
"network": "Netwerk",
"networks": "Netwerken",
"new_first_wallet_text": "Je crypto veilig houden is een fluitje van een cent",
"new_node_testing": "Nieuwe node testen",
"new_subaddress_create": "Creëren",
@@ -676,8 +693,10 @@
"node_new": "Nieuwe node",
"node_port": "Node-poort",
"node_reset_settings_title": "Reset instellingen",
"node_share_desc": "Scan deze QR-code vanaf het Scan-scherm om deze node te importeren.",
"node_test": "Test",
"nodes": "Nodes",
"nodes_desc": "Beheer bestaande nodes of voeg een aangepaste toe.",
"nodes_list_reset_to_default_message": "Weet je zeker dat je de standaardinstellingen wilt herstellen?",
"none_of_selected_providers_can_exchange": "Geen van de geselecteerde providers kan deze swap maken",
"noNFTYet": "Nog geen NFT's",
@@ -687,6 +706,7 @@
"note_tap_to_change": "Notitie (tik om te wijzigen)",
"notification_permission_denied": "Meldingstoestemming is permanent geweigerd. Schakel deze handmatig in via de instellingen.",
"nullURIError": "URI is null",
"ocp_desc": "Betaal met crypto in winkels",
"offer_expires_in": "Aanbieding verloopt over: ",
"offline": "Offline",
"ok": "OK",
@@ -713,8 +733,13 @@
"outputs": "Outputs",
"overshot": "Overschreden",
"overwrite_amount": "Bedrag overschrijven",
"pairing_code": "Koppelingscode",
"pairing_code_desc_1": "Je apparaat toont een koppelingscode.",
"pairing_code_desc_2": "Voer deze hier in om door te gaan",
"pairing_error": "Koppelingsfout",
"pairingInvalidEvent": "Ongeldige koppelingsgebeurtenis",
"passphrase": "Wachtwoordzin (optioneel)",
"passphrase_view_keys": "Wachtwoordzin",
"passphrases_doesnt_match": "Wachtwoordzinnen komen niet overeen, probeer het opnieuw",
"password": "Wachtwoord",
"paste": "Plakken",
@@ -730,6 +755,7 @@
"payjoin_unavailable_sheet_content": "Het ontvangen van een Payjoin-transactie vereist dat je Bitcoin klaar hebt om te gebruiken.\n\nZodra je wallet fondsen heeft, wordt Payjoin automatisch ingeschakeld.",
"payjoin_unavailable_sheet_title": "Waarom is Payjoin niet beschikbaar?",
"payment_id": "Betaling ID: ",
"payment_invoices": "Betalingsfacturen",
"payment_made_easy": "Betalingen gemakkelijk gemaakt",
"payment_was_received": "Je betaling is ontvangen.",
"payments": "Betalingen",
@@ -809,6 +835,7 @@
"receive_to": "Ontvangen op",
"received": "Ontvangen",
"receiving": "Bezig met ontvangen",
"recieving": "Bezig met ontvangen",
"recipient_address": "Adres ontvanger",
"reconnect": "Opnieuw verbinden",
"reconnect_alert_text": "Weet je zeker dat je opnieuw verbinding wilt maken?",
@@ -884,6 +911,7 @@
"save": "Opslaan",
"save_backup_password": "Zorg ervoor dat je je back-upwachtwoord hebt opgeslagen. Zonder dit kun je je back-upbestanden niet importeren.",
"save_backup_password_alert": "Bewaar back-upwachtwoord",
"save_contact": "Contact opslaan",
"save_to_downloads": "Opslaan in downloads",
"saved_the_trade_id": "Ik heb de trade-ID opgeslagen",
"savings": "Spaargeld",
@@ -1033,6 +1061,7 @@
"setup_your_debit_card": "Stel je debetkaart in",
"share": "Deel",
"share_address": "Deel adres",
"share_this_node": "Deel deze node",
"shared_seed_wallet_groups": "Gedeelde seed-walletgroepen",
"shared_seed_wallets": "Gedeelde seed-wallets",
"show": "Tonen",
@@ -1040,6 +1069,7 @@
"show_balance": "Lang indrukken om saldo te tonen",
"show_balance_send_page": "Tik om te tonen",
"show_balance_toast": "Lang indrukken om saldo te verbergen of te tonen",
"show_combined_balance": "Toon gecombineerd saldo",
"show_details": "Toon details",
"show_hidden_addresses": "Verborgen adressen tonen",
"show_keys": "Toon seed/sleutels",
@@ -1105,6 +1135,7 @@
"swap_providers": "Swapproviders",
"sweeping_wallet": "Wallet wordt geveegd",
"sweeping_wallet_alert": "Dit duurt niet lang. VERLAAT DIT SCHERM NIET, ANDERS KUNNEN DE FONDSEN VERLOREN GAAN.",
"swipe_to_bridge": "Veeg om te bridgen",
"swipe_to_send": "Swipe om te verzenden",
"switch_wallet": "Wissel van wallet",
"switchToETHWallet": "Schakel over naar een Ethereum-wallet en probeer het opnieuw",
@@ -1145,6 +1176,7 @@
"testnet_coins_no_value": "Testnet-munten hebben geen waarde",
"third_intro_content": "Yats bestaan ook buiten Cake Wallet. Elk walletadres op aarde kan worden vervangen door een Yat!",
"third_intro_title": "Yat werkt goed samen met anderen",
"this_can_take_few_seconds": "Dit kan een paar seconden duren",
"this_pair_is_not_supported_warning": "Dit paar wordt niet ondersteund met de momenteel geselecteerde exchange(s). Selecteer een andere exchange.",
"thorchain_contract_address_not_supported": "THORChain ondersteunt het verzenden naar een contractadres niet",
"thorchain_taproot_address_not_supported": "De THORChain-provider ondersteunt geen Taproot-adressen. Wijzig het adres of selecteer een andere provider.",
@@ -1158,6 +1190,7 @@
"token_decimal": "Token decimaal (bijv. 6 voor USDT)",
"token_name": "Tokennaam (bijv. Tether)",
"token_symbol": "Tokensymbool (bijv. USDT)",
"token_verified_on_jupiter": "Dit token is geverifieerd op Jupiter",
"tokenID": "Token-ID",
"tokens": "Tokens",
"tokens_strong_warning": "Stuur nooit tokens naar dit adres!",
@@ -1286,6 +1319,7 @@
"username": "Gebruikersnaam",
"username_available": "Gebruikersnaam beschikbaar",
"username_character_error": "Gebruikersnamen mogen alleen bevatten",
"username_check_your_network": "Kan gebruikersnaam niet controleren. Controleer je netwerkverbinding.",
"username_length_error": "Gebruikersnamen moeten 6-32 alfanumerieke tekens bevatten.",
"username_length_error_1_64": "Gebruikersnamen moeten 1-64 alfanumerieke tekens bevatten.",
"username_not_available": "Deze gebruikersnaam is niet beschikbaar.",
@@ -1296,6 +1330,7 @@
"verify_message": "Verifieer bericht",
"verify_seed": "Controleer seed",
"verify_with_2fa": "Controleer met Cake 2FA",
"verifying_code": "Code verifiëren",
"version": "Versie ${currentVersion}",
"view_all": "Alles bekijken",
"view_in_block_explorer": "Bekijk in Block Explorer",
@@ -1308,6 +1343,7 @@
"waiting_payment_confirmation": "In afwachting van betalingsbevestiging",
"wallet": "Wallet",
"wallet_accounts": "Walletaccounts",
"wallet_balance": "Walletsaldo",
"wallet_group": "Walletgroep",
"wallet_group_description_existing_seed": "Je hebt ervoor gekozen om een bestaande seed voor deze wallet te gebruiken. Je kunt de seed opnieuw verifiëren als je het moet bevestigen of opschrijven.",
"wallet_group_description_four": "om een wallet te maken met een geheel nieuwe seed.",
@@ -1345,9 +1381,11 @@
"walletConnect": "WalletConnect",
"wallets": "Wallets",
"warning": "Waarschuwing",
"wc_action_approve": "Goedkeuren",
"wc_approve_request_title": "Aanvraag goedkeuren",
"wc_connect_request_title": "Verbind verzoek",
"wc_connected_to": "Verbonden met ${name}",
"wc_desc": "Maak eenvoudig verbinding met dApps",
"wc_max_network_fee": "Maximale netwerkkosten",
"wc_message_to_sign": "Bericht om te ondertekenen",
"wc_network_fee": "Netwerk vergoeding",
@@ -1398,6 +1436,7 @@
"yat_popup_content": "Je kunt nu crypto verzenden en ontvangen in Cake Wallet met je Yat - een korte, op emoji gebaseerde gebruikersnaam. Beheer Yats op elk moment op het instellingenscherm",
"yat_popup_title": "Je walletadres kan worden omgezet naar emoji's.",
"yes": "Ja",
"yes_exit": "Ja. Afsluiten",
"yesterday": "Gisteren",
"you_now_have_debit_card": "Je hebt nu een debetkaart",
"you_pay": "Je betaalt",
@@ -1452,4 +1491,4 @@
"wc_action_approve": "Goedkeuren",
"wc_desc": "Maak eenvoudig verbinding met dApps",
"yes_exit": "Ja. Afsluiten"
}
}
+39 -2
View File
@@ -76,6 +76,7 @@
"approve_tokens": "Zatwierdź tokeny",
"apps": "Aplikacje",
"arbiscan_history": "Historia ArbiScan",
"are_you_sure_exit": "Czy na pewno chcesz wyjść?",
"arrive_in_this_address": "${currency} ${tag}dotrze na ten adres",
"ascending": "Rosnąco",
"ask_each_time": "Pytaj za każdym razem",
@@ -89,6 +90,7 @@
"auto_generate_addresses": "Automatyczne generowanie adresów",
"auto_generate_subaddresses": "Automatyczne generowanie podadresów",
"automatic": "Automatyczny",
"available": "Dostępne",
"available_balance": "Dostępne saldo",
"available_balance_description": "„Dostępne saldo” lub „Potwierdzone saldo” to środki, które można wydać od razu. Jeśli środki pojawiają się w dolnym saldzie, ale nie w górnym, musisz poczekać kilka minut, aż przychodzące środki uzyskają więcej potwierdzeń sieci. Gdy uzyskają więcej potwierdzeń, będzie można je wydać.",
"avg_savings": "Śr. oszczędności",
@@ -125,6 +127,7 @@
"block_remaining": "Pozostał 1 blok",
"Blocks_remaining": "Pozostało bloków: ${status}",
"bluetooth": "Bluetooth",
"bridging": "Mostkowanie",
"bright_theme": "Jasny",
"bscscan_history": "Historia BSCScan",
"bump_fee": "Podbij opłatę",
@@ -216,6 +219,8 @@
"color_theme": "Motyw kolorystyczny",
"coming_soon_tag": "Wkrótce",
"commit_transaction_amount_fee": "Zatwierdź transakcję\nKwota: ${amount}\nOpłata: ${fee}",
"compatible_services": "Zgodne usługi",
"compatible_services_desc": "Użyj narzędzia Skanuj, aby odczytać następujące typy kodów QR obsługiwane w Cake Wallet:",
"configure": "Konfiguruj",
"confirm": "Potwierdź",
"confirm_delete_template": "Ta czynność usunie ten szablon. Czy chcesz kontynuować?",
@@ -279,6 +284,7 @@
"creating_new_wallet": "Tworzenie nowego portfela",
"creating_new_wallet_error": "Błąd: ${description}",
"creation_date": "Data utworzenia",
"crypto_addresses": "Adresy krypto",
"csv_nothing_to_export": "Brak danych do eksportu",
"current_swap": "Bieżący swap",
"current_wallet": "Bieżący portfel",
@@ -301,6 +307,7 @@
"default_sell_provider": "Domyślny dostawca sprzedaży",
"delete": "Usuń",
"delete_account": "Usuń konto",
"delete_this_node": "Usuń ten węzeł",
"delete_wallet": "Usuń portfel",
"delete_wallet_confirm_message": "Czy na pewno chcesz usunąć portfel ${wallet_name}?",
"deleteConnectionConfirmationPrompt": "Czy na pewno chcesz usunąć połączenie z",
@@ -330,6 +337,7 @@
"deuro_savings_welcome_description": "dEURO jest w pełni zdecentralizowanym, zabezpieczonym stablecoinem powiązanym z euro — bezpiecznym, wszechstronnym i odpornym na cenzurę, bez konieczności polegania na wyroczniach. 1 dEURO = 1 EURO.",
"deuro_tooltip_no_eth": "Aby włączyć dEURO, musisz mieć ETH w swoim portfelu.",
"deuro_tx_commited_content": "Może to potrwać kilka sekund, zanim transakcja zostanie potwierdzona i pojawi się na ekranie",
"device_confirmation": "Potwierdzenie na urządzeniu",
"device_is_signing": "Urządzenie podpisuje",
"dfx_option_description": "Kup kryptowaluty za EUR i CHF. Dla klientów detalicznych i firm w Europie",
"did_you_back_up_seeds": "Czy wykonałeś kopię zapasową wszystkich fraz seed?",
@@ -435,6 +443,7 @@
"etherscan_history": "Historia w Etherscan",
"event": "Zdarzenie",
"events": "Zdarzenia",
"evm_ecosystem_description": "W razie potrzeby zmień sieć i token, których chcesz użyć do tej płatności.",
"exchange": "Wymiana",
"exchange_extra_info": "Proszę nie zapomnieć podać Memo lub Extra ID podczas wysyłania tej transakcji do wymiany",
"exchange_incorrect_current_wallet_for_xmr": "Jeśli chcesz wymienić XMR z salda Monero w Cake Wallet, najpierw przełącz się na swój portfel Monero.",
@@ -465,6 +474,8 @@
"extracted_address_content": "Wyślesz środki do\n${recipient_name}",
"failed_authentication": "Nieudane uwierzytelnienie. ${state_error}",
"faq": "FAQ",
"favorite_token": "Ulubiony token",
"favorite_token_desc": "Saldo ulubionego tokena będzie wyświetlane na karcie salda.",
"features": "Funkcje",
"fee": "Opłata",
"fee_less_than_min": "Wybrana opłata jest niższa niż minimalna. Zwiększ opłatę, aby móc wysłać transakcję.",
@@ -490,6 +501,7 @@
"frozen": "Zamrożone",
"frozen_balance": "Zamrożone saldo",
"full_balance": "Pełne saldo",
"gallery": "Galeria",
"gas_exceeds_allowance": "Gaz wymagany przez transakcję przekracza dozwolony limit.",
"gas_price": "Cena gas",
"general": "Ogólne",
@@ -525,10 +537,10 @@
"how_to_connect": "Jak się połączyć",
"how_to_use": "Jak używać",
"how_to_use_card": "Jak używać tej karty",
"hww_exit_desc": "Spowoduje to zakończenie trwającego procesu parowania z Twoim urządzeniem sprzętowym",
"i_understand": "Rozumiem",
"icon_style": "Styl ikony",
"id": "ID: ",
"if_you_dont_see_your_device": "Jeśli nie widzisz swojego urządzenia powyżej, upewnij się, że Twój Ledger jest aktywny i odblokowany!",
"ignor": "Ignoruj",
"import": "Importuj",
"importNFTs": "Importuj NFT",
@@ -540,6 +552,7 @@
"infobox_auto_address": "Twój adres do odbioru będzie się zmieniał za każdym razem, gdy otrzymasz transakcję",
"infobox_multichain": "Użyj tego adresu, aby otrzymać dowolny token lub przedmiot kolekcjonerski na",
"infobox_rotation": "Twój adres do odbioru będzie się zmieniać za każdym razem, gdy zamkniesz i ponownie otworzysz ten ekran",
"input": "Dane wejściowe",
"inputs": "Wejścia",
"insufficient_funds_for_tx": "Niewystarczające środki, aby pomyślnie zrealizować transakcję.",
"insufficient_lamport_for_tx": "Nie masz wystarczającej ilości SOL, aby pokryć transakcję oraz opłatę transakcyjną. Dodaj więcej SOL do swojego portfela lub zmniejsz kwotę SOL, którą wysyłasz.",
@@ -605,6 +618,7 @@
"manage_pow_nodes": "Zarządzaj węzłami PoW",
"manage_providers": "Zarządzaj dostawcami",
"manage_yats": "Zarządzaj Yats",
"manual_input": "Wprowadzanie ręczne",
"mark_as_redeemed": "Oznacz jako zrealizowane",
"market_place": "Marketplace",
"mask": "Maska",
@@ -650,6 +664,7 @@
"nanogpt_subtitle": "Wszystkie najnowsze modele (GPT-5.3, Claude 4.6).\nBez subskrypcji, płać kryptowalutą.",
"narrow": "Wąski",
"network": "Sieć",
"networks": "Sieci",
"new_first_wallet_text": "Bezpieczne przechowywanie Twoich kryptowalut to bułka z masłem",
"new_node_testing": "Testowanie nowego węzła",
"new_subaddress_create": "Utwórz",
@@ -678,8 +693,10 @@
"node_new": "Nowy węzeł",
"node_port": "Port węzła",
"node_reset_settings_title": "Resetuj ustawienia",
"node_share_desc": "Zeskanuj ten kod QR z ekranu Skanuj, aby zaimportować ten węzeł.",
"node_test": "Test",
"nodes": "Węzły",
"nodes_desc": "Zarządzaj istniejącymi węzłami lub dodaj własny.",
"nodes_list_reset_to_default_message": "Czy na pewno chcesz przywrócić ustawienia domyślne?",
"none_of_selected_providers_can_exchange": "Żaden z wybranych dostawców nie może wykonać tej wymiany",
"noNFTYet": "Brak NFT",
@@ -689,6 +706,7 @@
"note_tap_to_change": "Notatka (stuknij, aby zmienić)",
"notification_permission_denied": "Uprawnienie do powiadomień zostało trwale odrzucone. Włącz je ręcznie w ustawieniach.",
"nullURIError": "URI ma wartość null",
"ocp_desc": "Płać kryptowalutą w sklepach",
"offer_expires_in": "Oferta wygasa za: ",
"offline": "Offline",
"ok": "OK",
@@ -715,8 +733,13 @@
"outputs": "Wyjścia",
"overshot": "Przekroczono",
"overwrite_amount": "Nadpisz kwotę",
"pairing_code": "Kod parowania",
"pairing_code_desc_1": "Twoje urządzenie wyświetli kod parowania.",
"pairing_code_desc_2": "Wprowadź go tutaj, aby kontynuować",
"pairing_error": "Błąd parowania",
"pairingInvalidEvent": "Nieprawidłowe zdarzenie parowania",
"passphrase": "Fraza hasła (Opcjonalnie)",
"passphrase_view_keys": "Fraza hasła",
"passphrases_doesnt_match": "Hasła nie pasują, spróbuj ponownie",
"password": "Hasło",
"paste": "Wklej",
@@ -732,6 +755,7 @@
"payjoin_unavailable_sheet_content": "Otrzymanie transakcji Payjoin wymaga posiadania gotowych do użycia bitcoinów.\n\nGdy tylko w Twoim portfelu pojawią się środki, Payjoin zostanie automatycznie włączony.",
"payjoin_unavailable_sheet_title": "Dlaczego Payjoin jest niedostępny?",
"payment_id": "Identyfikator płatności: ",
"payment_invoices": "Faktury płatności",
"payment_made_easy": "Płatności są proste",
"payment_was_received": "Twoja płatność została otrzymana.",
"payments": "Płatności",
@@ -811,6 +835,7 @@
"receive_to": "Odbierz na",
"received": "Otrzymane",
"receiving": "Odbieranie",
"recieving": "Odbieranie",
"recipient_address": "Adres odbiorcy",
"reconnect": "Połącz ponownie",
"reconnect_alert_text": "Czy na pewno chcesz połączyć się ponownie?",
@@ -886,6 +911,7 @@
"save": "Zapisz",
"save_backup_password": "Upewnij się, że zapisałeś hasło do kopii zapasowej. Bez niego nie będziesz mógł zaimportować plików kopii zapasowej.",
"save_backup_password_alert": "Zapisz hasło kopii zapasowej",
"save_contact": "Zapisz kontakt",
"save_to_downloads": "Zapisz w folderze Pobrane",
"saved_the_trade_id": "Zapisałem identyfikator transakcji",
"savings": "Oszczędności",
@@ -1035,6 +1061,7 @@
"setup_your_debit_card": "Skonfiguruj swoją kartę debetową",
"share": "Udostępnij",
"share_address": "Udostępnij adres",
"share_this_node": "Udostępnij ten węzeł",
"shared_seed_wallet_groups": "Grupy portfeli ze współdzielonym seedem",
"shared_seed_wallets": "Portfele ze współdzieloną frazą seed",
"show": "Pokaż",
@@ -1042,6 +1069,7 @@
"show_balance": "Naciśnij i przytrzymaj, aby wyświetlić saldo",
"show_balance_send_page": "Dotknij, aby odkryć",
"show_balance_toast": "Naciśnij i przytrzymaj, aby ukryć lub pokazać saldo",
"show_combined_balance": "Pokaż łączne saldo",
"show_details": "Pokaż szczegóły",
"show_hidden_addresses": "Pokaż ukryte adresy",
"show_keys": "Pokaż seed/klucze",
@@ -1107,6 +1135,7 @@
"swap_providers": "Dostawcy wymiany",
"sweeping_wallet": "Opróżnianie portfela",
"sweeping_wallet_alert": "To nie powinno zająć dużo czasu. NIE OPUSZCZAJ TEGO EKRANU, W PRZECIWNYM RAZIE ZAMIATANE ŚRODKI MOGĄ ZOSTAĆ UTRACONE.",
"swipe_to_bridge": "Przesuń, aby zmostkować",
"swipe_to_send": "Przesuń, aby wysłać",
"switch_wallet": "Przełącz portfel",
"switchToETHWallet": "Przełącz się na portfel Ethereum i spróbuj ponownie",
@@ -1147,6 +1176,7 @@
"testnet_coins_no_value": "Monety testnet nie mają wartości",
"third_intro_content": "Yaty działają także poza Cake Wallet. Każdy adres portfela na świecie można zastąpić Yatem!",
"third_intro_title": "Yat dobrze współpracuje z innymi",
"this_can_take_few_seconds": "To może potrwać kilka sekund",
"this_pair_is_not_supported_warning": "Ta para nie jest obsługiwana przez aktualnie wybraną giełdę/wybrane giełdy. Wybierz inną giełdę.",
"thorchain_contract_address_not_supported": "THORChain nie obsługuje wysyłania na adres kontraktu",
"thorchain_taproot_address_not_supported": "Dostawca ThorChain nie obsługuje adresów Taproot. Zmień adres lub wybierz innego dostawcę.",
@@ -1160,6 +1190,7 @@
"token_decimal": "Liczba miejsc dziesiętnych tokena (np. USDT)",
"token_name": "Nazwa tokena (np. Tether)",
"token_symbol": "Symbol tokenu (np.: USDT)",
"token_verified_on_jupiter": "Token ten jest zweryfikowany na Jupiterze",
"tokenID": "ID",
"tokens": "Tokeny",
"tokens_strong_warning": "Nigdy nie wysyłaj tokenów na ten adres!",
@@ -1288,6 +1319,7 @@
"username": "Nazwa użytkownika",
"username_available": "Nazwa użytkownika dostępna",
"username_character_error": "Nazwy użytkowników mogą zawierać tylko",
"username_check_your_network": "Nie można sprawdzić nazwy użytkownika. Sprawdź połączenie sieciowe.",
"username_length_error": "Nazwy użytkowników muszą zawierać 6–32 znaki alfanumeryczne.",
"username_length_error_1_64": "Nazwy użytkowników muszą zawierać 1–64 znaki alfanumeryczne.",
"username_not_available": "Ta nazwa użytkownika jest niedostępna.",
@@ -1298,6 +1330,7 @@
"verify_message": "Zweryfikuj wiadomość",
"verify_seed": "Zweryfikuj frazę seed",
"verify_with_2fa": "Zweryfikuj za pomocą Cake 2FA",
"verifying_code": "Weryfikowanie kodu",
"version": "Wersja ${currentVersion}",
"view_all": "Zobacz wszystko",
"view_in_block_explorer": "Wyświetl w eksploratorze bloków",
@@ -1309,6 +1342,7 @@
"waitFewSecondForTxUpdate": "Proszę poczekać kilka sekund, aż transakcja pojawi się w historii transakcji",
"wallet": "Portfel",
"wallet_accounts": "Konta portfela",
"wallet_balance": "Saldo portfela",
"wallet_group": "Grupa portfeli",
"wallet_group_description_existing_seed": "Wybrałeś użycie istniejącego seeda dla tego portfela. Możesz ponownie zweryfikować seed, jeśli potrzebujesz go potwierdzić lub zapisać.",
"wallet_group_description_four": "aby utworzyć portfel z całkowicie nowym seedem.",
@@ -1346,9 +1380,11 @@
"walletConnect": "WalletConnect",
"wallets": "Portfele",
"warning": "Ostrzeżenie",
"wc_action_approve": "Zatwierdź",
"wc_approve_request_title": "Zatwierdź żądanie",
"wc_connect_request_title": "Połącz żądanie",
"wc_connected_to": "Połączono z ${name}",
"wc_desc": "Łatwo łącz się z aplikacjami dApp",
"wc_max_network_fee": "Maksymalna opłata sieciowa",
"wc_message_to_sign": "Wiadomość do podpisania",
"wc_network_fee": "Opłata sieciowa",
@@ -1399,6 +1435,7 @@
"yat_popup_content": "Możesz teraz wysyłać i odbierać kryptowaluty w Cake Wallet za pomocą swojego Yat — krótkiej, opartej na emoji nazwy użytkownika. Zarządzaj Yatami w dowolnym momencie na ekranie ustawień",
"yat_popup_title": "Twój adres portfela może zostać zamieniony na emoji.",
"yes": "Tak",
"yes_exit": "Tak. Wyjdź",
"yesterday": "Wczoraj",
"you_now_have_debit_card": "Masz teraz kartę debetową",
"you_pay": "Płacisz",
@@ -1451,4 +1488,4 @@
"wc_action_approve": "Zatwierdź",
"wc_desc": "Łatwo łącz się z aplikacjami dApp",
"yes_exit": "Tak. Wyjdź"
}
}
+38 -2
View File
@@ -76,6 +76,7 @@
"approve_tokens": "Aprovar tokens",
"apps": "Apps",
"arbiscan_history": "Histórico do ArbiScan",
"are_you_sure_exit": "Tem a certeza de que pretende sair?",
"arrive_in_this_address": "${currency} ${tag}chegará a este endereço",
"ascending": "Ascendente",
"ask_each_time": "Perguntar sempre",
@@ -89,6 +90,7 @@
"auto_generate_addresses": "Gerar endereços automaticamente",
"auto_generate_subaddresses": "Gerar subendereços automaticamente",
"automatic": "Automático",
"available": "Disponível",
"available_balance": "Saldo disponível",
"available_balance_description": "O “Saldo Disponível” ou “Saldo Confirmado” são fundos que podem ser gastos imediatamente. Se os fundos aparecerem no saldo inferior, mas não no saldo superior, você deve aguardar alguns minutos para que os fundos recebidos obtenham mais confirmações na rede. Depois que tiverem mais confirmações, eles poderão ser gastos.",
"avg_savings": "Poupança média",
@@ -125,6 +127,7 @@
"block_remaining": "1 Bloco restante",
"Blocks_remaining": "${status} Blocos restantes",
"bluetooth": "Bluetooth",
"bridging": "A fazer bridge",
"bright_theme": "Claro",
"bscscan_history": "Histórico do BSCScan",
"bump_fee": "Aumentar taxa",
@@ -216,6 +219,8 @@
"color_theme": "Tema de cores",
"coming_soon_tag": "Em breve",
"commit_transaction_amount_fee": "Confirmar transação\nValor: ${amount}\nTaxa: ${fee}",
"compatible_services": "Serviços compatíveis",
"compatible_services_desc": "Use a ferramenta de digitalização para ler os seguintes tipos de códigos QR suportados na Cake Wallet:",
"configure": "Configurar",
"confirm": "Confirmar",
"confirm_delete_template": "Esta ação excluirá este modelo. Deseja continuar?",
@@ -279,6 +284,7 @@
"creating_new_wallet": "Criando nova carteira",
"creating_new_wallet_error": "Erro: ${description}",
"creation_date": "Data de criação",
"crypto_addresses": "Endereços de cripto",
"csv_nothing_to_export": "Nada para exportar",
"current_swap": "Troca atual",
"current_wallet": "Carteira atual",
@@ -301,6 +307,7 @@
"default_sell_provider": "Provedor de venda padrão",
"delete": "Excluir",
"delete_account": "Excluir conta",
"delete_this_node": "Eliminar este nó",
"delete_wallet": "Excluir carteira",
"delete_wallet_confirm_message": "Tem certeza de que deseja excluir a carteira ${wallet_name}?",
"deleteConnectionConfirmationPrompt": "Tem certeza de que deseja excluir a conexão com",
@@ -330,6 +337,7 @@
"deuro_savings_welcome_description": "dEURO é uma stablecoin totalmente descentralizada e colateralizada, atrelada ao euro — segura, versátil e resistente à censura, sem precisar depender de oráculos. 1 dEURO = 1 EURO.",
"deuro_tooltip_no_eth": "Para ativar dEURO, você deve ter ETH na sua carteira.",
"deuro_tx_commited_content": "Pode levar alguns segundos para a transação ser confirmada e aparecer na tela",
"device_confirmation": "Confirmação no dispositivo",
"device_is_signing": "O dispositivo está assinando",
"dfx_option_description": "Compre cripto com EUR e CHF. Para clientes de varejo e corporativos na Europa",
"did_you_back_up_seeds": "Você fez backup de todas as suas seeds?",
@@ -466,6 +474,8 @@
"extracted_address_content": "Você enviará fundos para\n${recipient_name}",
"failed_authentication": "Falha na autenticação. ${state_error}",
"faq": "FAQ",
"favorite_token": "Token favorito",
"favorite_token_desc": "O saldo do token favorito será apresentado no cartão de saldo.",
"features": "Recursos",
"fee": "Taxa",
"fee_less_than_min": "A taxa selecionada é inferior ao mínimo. Aumente a taxa para poder enviar a transação.",
@@ -491,6 +501,7 @@
"frozen": "Congelado",
"frozen_balance": "Saldo congelado",
"full_balance": "Saldo total",
"gallery": "Galeria",
"gas_exceeds_allowance": "O gás exigido pela transação excede o limite permitido.",
"gas_price": "Preço do gas",
"general": "Geral",
@@ -526,10 +537,10 @@
"how_to_connect": "Como Conectar",
"how_to_use": "Como usar",
"how_to_use_card": "Como usar este cartão",
"hww_exit_desc": "Isto irá terminar o processo de emparelhamento em curso com o seu dispositivo de hardware",
"i_understand": "Eu entendo",
"icon_style": "Estilo do ícone",
"id": "ID: ",
"if_you_dont_see_your_device": "Se você não vir seu dispositivo acima, verifique se o seu Ledger está ligado e desbloqueado!",
"ignor": "Ignorar",
"import": "Importar",
"importNFTs": "Importar NFTs",
@@ -541,6 +552,7 @@
"infobox_auto_address": "Seu endereço de recebimento mudará a cada transação recebida",
"infobox_multichain": "Use este endereço para receber qualquer token ou colecionável em",
"infobox_rotation": "Seu endereço de recebimento será alterado sempre que você fechar e reabrir esta tela",
"input": "Entrada",
"inputs": "Entradas",
"insufficient_funds_for_tx": "Fundos insuficientes para executar a transação com sucesso.",
"insufficient_lamport_for_tx": "Você não tem SOL suficiente para cobrir a transação e a taxa de transação. Por favor, adicione mais SOL à sua carteira ou reduza a quantidade de SOL que você está enviando.",
@@ -606,6 +618,7 @@
"manage_pow_nodes": "Gerenciar nós de PoW",
"manage_providers": "Gerenciar provedores",
"manage_yats": "Gerenciar Yats",
"manual_input": "Introdução manual",
"mark_as_redeemed": "Marcar como resgatado",
"mark_as_redemed": "Marcar como resgatado",
"market_place": "Marketplace",
@@ -652,6 +665,7 @@
"nanogpt_subtitle": "Todos os modelos mais recentes (GPT-5.3, Claude 4.6).\nSem assinatura, pague com cripto.",
"narrow": "Estreito",
"network": "Rede",
"networks": "Redes",
"new_first_wallet_text": "Manter suas criptos seguras é moleza",
"new_node_testing": "Teste de novo nó",
"new_subaddress_create": "Criar",
@@ -680,8 +694,10 @@
"node_new": "Novo nó",
"node_port": "Porta do nó",
"node_reset_settings_title": "Redefinir configurações",
"node_share_desc": "Digitalize este código QR a partir do ecrã de digitalização para importar este nó.",
"node_test": "Teste",
"nodes": "Nós",
"nodes_desc": "Faça a gestão dos nós existentes ou adicione um personalizado.",
"nodes_list_reset_to_default_message": "Tem certeza de que deseja redefinir as configurações para o padrão?",
"none_of_selected_providers_can_exchange": "Nenhum dos provedores selecionados pode realizar esta troca",
"noNFTYet": "Ainda não há NFTs",
@@ -691,6 +707,7 @@
"note_tap_to_change": "Nota (toque para mudar)",
"notification_permission_denied": "A permissão de notificações foi negada permanentemente. Ative-a manualmente nas configurações.",
"nullURIError": "O URI é nulo",
"ocp_desc": "Pague com cripto em lojas",
"offer_expires_in": "A oferta expira em: ",
"offline": "Offline",
"ok": "OK",
@@ -718,8 +735,13 @@
"outputs": "Saídas",
"overshot": "Excedido",
"overwrite_amount": "Substituir valor",
"pairing_code": "Código de emparelhamento",
"pairing_code_desc_1": "O seu dispositivo irá mostrar um código de emparelhamento.",
"pairing_code_desc_2": "Introduza-o aqui para continuar",
"pairing_error": "Erro de emparelhamento",
"pairingInvalidEvent": "Evento de emparelhamento inválido",
"passphrase": "Frase-senha (Opcional)",
"passphrase_view_keys": "Frase-senha",
"passphrases_doesnt_match": "As frases-passe não correspondem, por favor tente novamente",
"password": "Senha",
"paste": "Colar",
@@ -735,6 +757,7 @@
"payjoin_unavailable_sheet_content": "Receber uma transação Payjoin exige que você tenha Bitcoin pronto para uso.\n\nAssim que sua carteira tiver fundos, o Payjoin será ativado automaticamente.",
"payjoin_unavailable_sheet_title": "Por que o Payjoin não está disponível?",
"payment_id": "ID do pagamento: ",
"payment_invoices": "Faturas de pagamento",
"payment_made_easy": "Pagamentos facilitados",
"payment_was_received": "Seu pagamento foi recebido.",
"payments": "Pagamentos",
@@ -814,6 +837,7 @@
"receive_to": "Receber para",
"received": "Recebido",
"receiving": "Recebendo",
"recieving": "A receber",
"recipient_address": "Endereço do destinatário",
"reconnect": "Reconectar",
"reconnect_alert_text": "Tem certeza de que deseja reconectar?",
@@ -889,6 +913,7 @@
"save": "Salvar",
"save_backup_password": "Certifique-se de que salvou a sua senha de backup. Você não poderá importar os seus arquivos de backup sem ela.",
"save_backup_password_alert": "Salvar senha do backup",
"save_contact": "Guardar contacto",
"save_to_downloads": "Salvar em Downloads",
"saved_the_trade_id": "Salvei o ID da troca",
"savings": "Poupança",
@@ -1038,6 +1063,7 @@
"setup_your_debit_card": "Configure seu cartão de débito",
"share": "Compartilhar",
"share_address": "Compartilhar endereço",
"share_this_node": "Partilhar este nó",
"shared_seed_wallet_groups": "Grupos de carteiras com seed compartilhada",
"shared_seed_wallets": "Carteiras com frase-semente compartilhada",
"show": "Mostrar",
@@ -1045,6 +1071,7 @@
"show_balance": "Pressione e segure para mostrar o saldo",
"show_balance_send_page": "Toque para revelar",
"show_balance_toast": "Pressione e segure para ocultar ou mostrar o saldo",
"show_combined_balance": "Mostrar saldo combinado",
"show_details": "Mostrar detalhes",
"show_hidden_addresses": "Mostrar endereços ocultos",
"show_keys": "Mostrar seed/chaves",
@@ -1110,6 +1137,7 @@
"swap_providers": "Provedores de swap",
"sweeping_wallet": "Carteira de varredura",
"sweeping_wallet_alert": "Isso não deve demorar muito. NÃO SAIA DESTA TELA OU OS FUNDOS VARRIDOS PODEM SER PERDIDOS.",
"swipe_to_bridge": "Deslize para fazer bridge",
"swipe_to_send": "Deslize para enviar",
"switch_wallet": "Alternar carteira",
"switchToETHWallet": "Por favor, mude para uma carteira Ethereum e tente novamente",
@@ -1150,6 +1178,7 @@
"testnet_coins_no_value": "As moedas de testnet não têm valor",
"third_intro_content": "Os Yats também existem fora da Cake Wallet. Qualquer endereço de carteira no mundo pode ser substituído por um Yat!",
"third_intro_title": "Yat funciona bem com os outros",
"this_can_take_few_seconds": "Isto pode demorar alguns segundos",
"this_pair_is_not_supported_warning": "Este par não é suportado com a(s) exchange(s) selecionada(s) atualmente. Selecione outra exchange.",
"thorchain_contract_address_not_supported": "A THORChain não suporta envios para um endereço de contrato",
"thorchain_taproot_address_not_supported": "O provedor ThorChain não oferece suporte a endereços Taproot. Altere o endereço ou selecione um provedor diferente.",
@@ -1163,6 +1192,7 @@
"token_decimal": "Decimal do token (ex: USDT)",
"token_name": "Nome do token (ex.: Tether)",
"token_symbol": "Símbolo do token (ex.: USDT)",
"token_verified_on_jupiter": "Este token é verificado em Jupiter",
"tokenID": "ID",
"tokens": "Tokens",
"tokens_strong_warning": "Nunca envie tokens para este endereço!",
@@ -1291,6 +1321,7 @@
"username": "Nome de usuário",
"username_available": "Nome de usuário disponível",
"username_character_error": "Os nomes de usuário devem conter apenas",
"username_check_your_network": "Não foi possível verificar o nome de utilizador. Verifique a sua ligação de rede.",
"username_length_error": "Os nomes de usuário devem conter de 6 a 32 caracteres alfanuméricos.",
"username_length_error_1_64": "Os nomes de usuário devem conter de 1 a 64 caracteres alfanuméricos.",
"username_not_available": "Este nome de usuário não está disponível.",
@@ -1301,6 +1332,7 @@
"verify_message": "Verificar mensagem",
"verify_seed": "Verificar a seed",
"verify_with_2fa": "Verificar com o Cake 2FA",
"verifying_code": "A verificar o código",
"version": "Versão ${currentVersion}",
"view_all": "Ver tudo",
"view_in_block_explorer": "Ver no Explorador de Blocos",
@@ -1313,6 +1345,7 @@
"waiting_payment_confirmation": "Aguardando confirmação de pagamento",
"wallet": "Carteira",
"wallet_accounts": "Contas da carteira",
"wallet_balance": "Saldo da carteira",
"wallet_group": "Grupo de carteiras",
"wallet_group_description_existing_seed": "Você optou por usar uma seed existente para esta carteira. Você pode verificar a seed novamente se precisar confirmar ou anotá-la.",
"wallet_group_description_four": "para criar uma carteira com uma semente totalmente nova.",
@@ -1350,9 +1383,11 @@
"walletConnect": "WalletConnect",
"wallets": "Carteiras",
"warning": "Aviso",
"wc_action_approve": "Aprovar",
"wc_approve_request_title": "Aprovar solicitação",
"wc_connect_request_title": "Solicitação de conexão",
"wc_connected_to": "Conectado a ${name}",
"wc_desc": "Ligue-se facilmente a DApps",
"wc_max_network_fee": "Taxa máxima de rede",
"wc_message_to_sign": "Mensagem para assinar",
"wc_network_fee": "Taxa de rede",
@@ -1403,6 +1438,7 @@
"yat_popup_content": "Agora você pode enviar e receber cripto na Cake Wallet com seu Yat — um nome de usuário curto baseado em emojis. Gerencie Yats a qualquer momento na tela de configurações",
"yat_popup_title": "O endereço da sua carteira pode ser transformado em emojis.",
"yes": "Sim",
"yes_exit": "Sim. Sair",
"yesterday": "Ontem",
"you_now_have_debit_card": "Agora você tem um cartão de débito",
"you_pay": "Você paga",
@@ -1454,4 +1490,4 @@
"wc_action_approve": "Aprovar",
"wc_desc": "Ligue-se facilmente a DApps",
"yes_exit": "Sim. Sair"
}
}
+1 -1
View File
@@ -524,7 +524,6 @@
"i_understand": "Eu entendo",
"icon_style": "Estilo do ícone",
"id": "ID: ",
"if_you_dont_see_your_device": "Se você não vir seu dispositivo acima, certifique-se de que seu Ledger esteja ligado e desbloqueado!",
"ignor": "Ignorar",
"import": "Importar",
"importNFTs": "Importar NFTs",
@@ -1141,6 +1140,7 @@
"token_name": "Nome do token (ex: Tether)",
"token_symbol": "Símbolo do token (ex: USDT)",
"tokenID": "ID",
"token_verified_on_jupiter": "Este token é verificado em Jupiter",
"tokens": "Tokens",
"tokens_strong_warning": "Nunca envie tokens para este endereço!",
"tor_connection": "Conexão Tor",
+38 -2
View File
@@ -76,6 +76,7 @@
"approve_tokens": "Одобрить токены",
"apps": "Приложения",
"arbiscan_history": "История ArbiScan",
"are_you_sure_exit": "Вы уверены, что хотите выйти?",
"arrive_in_this_address": "${currency} ${tag}поступит на этот адрес",
"ascending": "По возрастанию",
"ask_each_time": "Спрашивать каждый раз",
@@ -89,6 +90,7 @@
"auto_generate_addresses": "Автоматически генерировать адреса",
"auto_generate_subaddresses": "Автоматически генерировать субадреса",
"automatic": "Автоматически",
"available": "Доступно",
"available_balance": "Доступный баланс",
"available_balance_description": "«Доступный баланс» или «Подтверждённый баланс» — это средства, которые можно потратить сразу. Если средства отображаются в нижнем балансе, но не в верхнем, значит, нужно подождать несколько минут, пока входящие средства получат больше подтверждений сети. После получения дополнительных подтверждений их можно будет потратить.",
"avg_savings": "Средняя экономия",
@@ -125,6 +127,7 @@
"block_remaining": "Остался 1 блок",
"Blocks_remaining": "${status} блоков осталось",
"bluetooth": "Bluetooth",
"bridging": "Перенос через мост",
"bright_theme": "Светлая",
"bscscan_history": "История BSCScan",
"bump_fee": "Увеличить комиссию",
@@ -216,6 +219,8 @@
"color_theme": "Цветовая тема",
"coming_soon_tag": "Скоро",
"commit_transaction_amount_fee": "Подтвердить транзакцию\nСумма: ${amount}\nКомиссия: ${fee}",
"compatible_services": "Совместимые сервисы",
"compatible_services_desc": "Используйте инструмент сканирования, чтобы считывать следующие типы QR-кодов, поддерживаемые в Cake Wallet:",
"configure": "Настроить",
"confirm": "Подтвердить",
"confirm_delete_template": "Это действие удалит этот шаблон. Вы хотите продолжить?",
@@ -279,6 +284,7 @@
"creating_new_wallet": "Создание нового кошелька",
"creating_new_wallet_error": "Ошибка: ${description}",
"creation_date": "Дата создания",
"crypto_addresses": "Криптоадреса",
"csv_nothing_to_export": "Нечего экспортировать",
"current_swap": "Текущий обмен",
"current_wallet": "Текущий кошелёк",
@@ -301,6 +307,7 @@
"default_sell_provider": "Провайдер продажи по умолчанию",
"delete": "Удалить",
"delete_account": "Удалить аккаунт",
"delete_this_node": "Удалить этот узел",
"delete_wallet": "Удалить кошелек",
"delete_wallet_confirm_message": "Вы уверены, что хотите удалить кошелёк ${wallet_name}?",
"deleteConnectionConfirmationPrompt": "Вы уверены, что хотите удалить подключение к",
@@ -330,6 +337,7 @@
"deuro_savings_welcome_description": "dEURO — полностью децентрализованный обеспеченный стейблкоин, привязанный к евро: безопасный, универсальный и устойчивый к цензуре, без необходимости полагаться на оракулы. 1 dEURO = 1 EURO.",
"deuro_tooltip_no_eth": "Чтобы включить dEURO, в вашем кошельке должен быть ETH.",
"deuro_tx_commited_content": "Подтверждение транзакции и её отображение на экране может занять пару секунд",
"device_confirmation": "Подтверждение на устройстве",
"device_is_signing": "Устройство подписывает",
"dfx_option_description": "Покупайте криптовалюту за EUR и CHF. Для розничных и корпоративных клиентов в Европе",
"did_you_back_up_seeds": "Вы сделали резервную копию всех своих сид-фраз?",
@@ -466,6 +474,8 @@
"extracted_address_content": "Вы отправляете средства\n${recipient_name}",
"failed_authentication": "Ошибка аутентификации. ${state_error}",
"faq": "FAQ",
"favorite_token": "Избранный токен",
"favorite_token_desc": "Баланс избранного токена будет отображаться на карточке баланса.",
"features": "Возможности",
"fee": "Комиссия",
"fee_less_than_min": "Выбранная комиссия ниже минимальной. Пожалуйста, увеличьте комиссию, чтобы отправить транзакцию",
@@ -491,6 +501,7 @@
"frozen": "Заморожено",
"frozen_balance": "Замороженный баланс",
"full_balance": "Полный баланс",
"gallery": "Галерея",
"gas_exceeds_allowance": "Требуемый для транзакции газ превышает лимит.",
"gas_price": "Цена газа",
"general": "Общие",
@@ -526,10 +537,10 @@
"how_to_connect": "Как подключиться",
"how_to_use": "Как использовать",
"how_to_use_card": "Как пользоваться этой картой",
"hww_exit_desc": "Это завершит текущий процесс сопряжения с вашим аппаратным устройством",
"i_understand": "Я понимаю",
"icon_style": "Стиль иконок",
"id": "ID: ",
"if_you_dont_see_your_device": "Если вы не видите свое устройство выше, пожалуйста, убедитесь, что ваш Ledger включен и разблокирован!",
"ignor": "Игнорировать",
"import": "Импорт",
"importNFTs": "Импортировать NFT",
@@ -541,6 +552,7 @@
"infobox_auto_address": "Ваш адрес для получения будет меняться каждый раз, когда вы получаете транзакцию",
"infobox_multichain": "Используйте этот адрес, чтобы получать любые токены или коллекционные предметы в",
"infobox_rotation": "Ваш адрес для получения будет меняться каждый раз, когда вы закроете и снова откроете этот экран.",
"input": "Вход",
"inputs": "Входы",
"insufficient_funds_for_tx": "Недостаточно средств для успешного выполнения транзакции.",
"insufficient_lamport_for_tx": "У вас недостаточно SOL, чтобы покрыть транзакцию и комиссию за неё. Пожалуйста, пополните кошелёк SOL или уменьшите сумму SOL, которую вы отправляете.",
@@ -606,6 +618,7 @@
"manage_pow_nodes": "Управление PoW-узлами",
"manage_providers": "Управление провайдерами",
"manage_yats": "Управление Yat",
"manual_input": "Ручной ввод",
"mark_as_redeemed": "Отметить как использовано",
"market_place": "Маркетплейс",
"mask": "Замаскировать",
@@ -651,6 +664,7 @@
"nanogpt_subtitle": "Все новейшие модели (GPT-5.3, Claude 4.6).\nБез подписки, оплата криптовалютой.",
"narrow": "Узкий",
"network": "Сеть",
"networks": "Сети",
"new_first_wallet_text": "Хранить вашу криптовалюту в безопасности — проще простого",
"new_node_testing": "Тестирование новой ноды",
"new_subaddress_create": "Создать",
@@ -679,8 +693,10 @@
"node_new": "Новый узел",
"node_port": "Порт узла",
"node_reset_settings_title": "Сброс настроек",
"node_share_desc": "Отсканируйте этот QR-код на экране сканирования, чтобы импортировать этот узел.",
"node_test": "Тест",
"nodes": "Узлы",
"nodes_desc": "Управляйте существующими узлами или добавьте пользовательский.",
"nodes_list_reset_to_default_message": "Вы уверены, что хотите сбросить настройки до значений по умолчанию?",
"none_of_selected_providers_can_exchange": "Ни один из выбранных провайдеров не может выполнить этот обмен",
"noNFTYet": "Пока нет NFT",
@@ -690,6 +706,7 @@
"note_tap_to_change": "Примечание (нажмите, чтобы изменить)",
"notification_permission_denied": "Разрешение на уведомления было навсегда отклонено, пожалуйста, включите его вручную в настройках",
"nullURIError": "URI равен null",
"ocp_desc": "Платите криптовалютой в магазинах",
"offer_expires_in": "Предложение истекает через: ",
"offline": "Офлайн",
"ok": "OK",
@@ -717,8 +734,13 @@
"outputs": "Выходы",
"overshot": "Превышено",
"overwrite_amount": "Перезаписать сумму",
"pairing_code": "Код сопряжения",
"pairing_code_desc_1": "Ваше устройство покажет код сопряжения.",
"pairing_code_desc_2": "Введите его здесь, чтобы продолжить",
"pairing_error": "Ошибка сопряжения",
"pairingInvalidEvent": "Недопустимое событие сопряжения",
"passphrase": "Пассфраза (необязательно)",
"passphrase_view_keys": "Парольная фраза",
"passphrases_doesnt_match": "Пасфразы не совпадают, попробуйте ещё раз",
"password": "Пароль",
"paste": "Вставить",
@@ -734,6 +756,7 @@
"payjoin_unavailable_sheet_content": "Для получения транзакции Payjoin у вас должны быть готовы к использованию BTC.\n\nКак только на вашем кошельке появятся средства, Payjoin будет автоматически включён.",
"payjoin_unavailable_sheet_title": "Почему Payjoin недоступен?",
"payment_id": "ID платежа: ",
"payment_invoices": "Платёжные счета",
"payment_made_easy": "Платежи — это просто",
"payment_was_received": "Ваш платеж получен.",
"payments": "Платежи",
@@ -813,6 +836,7 @@
"receive_to": "Получить на",
"received": "Получено",
"receiving": "Получение",
"recieving": "Получение",
"recipient_address": "Адрес получателя",
"reconnect": "Переподключиться",
"reconnect_alert_text": "Вы уверены, что хотите переподключиться?",
@@ -888,6 +912,7 @@
"save": "Сохранить",
"save_backup_password": "Пожалуйста, убедитесь, что вы сохранили пароль для резервной копии. Без него вы не сможете импортировать файлы резервной копии.",
"save_backup_password_alert": "Сохранить пароль для резервной копии",
"save_contact": "Сохранить контакт",
"save_to_downloads": "Сохранить в папку «Загрузки»",
"saved_the_trade_id": "Я сохранил ID обмена",
"savings": "Сбережения",
@@ -1037,6 +1062,7 @@
"setup_your_debit_card": "Настройте свою дебетовую карту",
"share": "Поделиться",
"share_address": "Поделиться адресом",
"share_this_node": "Поделиться этим узлом",
"shared_seed_wallet_groups": "Группы кошельков с общим сидом",
"shared_seed_wallets": "Кошельки с общим сидом",
"show": "Показать",
@@ -1044,6 +1070,7 @@
"show_balance": "Нажмите и удерживайте, чтобы показать баланс",
"show_balance_send_page": "Нажмите, чтобы показать",
"show_balance_toast": "Нажмите и удерживайте, чтобы скрыть или показать баланс",
"show_combined_balance": "Показать объединённый баланс",
"show_details": "Показать подробности",
"show_hidden_addresses": "Показать скрытые адреса",
"show_keys": "Показать seed/ключи",
@@ -1109,6 +1136,7 @@
"swap_providers": "Провайдеры обмена",
"sweeping_wallet": "Сканирование кошелька",
"sweeping_wallet_alert": "Это не должно занять много времени. НЕ ПОКИДАЙТЕ ЭТОТ ЭКРАН, ИНАЧЕ ПЕРЕНЕСЁННЫЕ СРЕДСТВА МОГУТ БЫТЬ ПОТЕРЯНЫ.",
"swipe_to_bridge": "Проведите, чтобы выполнить перенос через мост",
"swipe_to_send": "Проведите, чтобы отправить",
"switch_wallet": "Переключить кошелёк",
"switchToETHWallet": "Пожалуйста, переключитесь на кошелёк Ethereum и повторите попытку",
@@ -1149,6 +1177,7 @@
"testnet_coins_no_value": "Монеты тестнета не имеют ценности",
"third_intro_content": "Yat существуют и за пределами Cake Wallet. Любой адрес кошелька на земле можно заменить на Yat!",
"third_intro_title": "Yat хорошо работает с другими",
"this_can_take_few_seconds": "Это может занять несколько секунд",
"this_pair_is_not_supported_warning": "Эта пара не поддерживается выбранной(ыми) биржей(ами). Пожалуйста, выберите другую биржу.",
"thorchain_contract_address_not_supported": "THORChain не поддерживает отправку на адрес контракта",
"thorchain_taproot_address_not_supported": "Провайдер ThorChain не поддерживает Taproot-адреса. Пожалуйста, измените адрес или выберите другого провайдера.",
@@ -1162,6 +1191,7 @@
"token_decimal": "Десятичные знаки токена (например: USDT)",
"token_name": "Название токена (например: Tether)",
"token_symbol": "Символ токена (например: USDT)",
"token_verified_on_jupiter": "Этот токен проверен на Jupiter",
"tokenID": "ID",
"tokens": "Токены",
"tokens_strong_warning": "Никогда не отправляйте токены на этот адрес!",
@@ -1290,6 +1320,7 @@
"username": "Имя пользователя",
"username_available": "Имя пользователя доступно",
"username_character_error": "Имя пользователя должно содержать только",
"username_check_your_network": "Не удалось проверить имя пользователя. Пожалуйста, проверьте подключение к сети.",
"username_length_error": "Имя пользователя должно содержать 6–32 буквенно-цифровых символа.",
"username_length_error_1_64": "Имя пользователя должно содержать 1–64 буквенно-цифровых символа.",
"username_not_available": "Это имя пользователя недоступно.",
@@ -1300,6 +1331,7 @@
"verify_message": "Проверить сообщение",
"verify_seed": "Проверьте сид-фразу",
"verify_with_2fa": "Подтвердить через Cake 2FA",
"verifying_code": "Проверка кода",
"version": "Версия ${currentVersion}",
"view_all": "Посмотреть все",
"view_in_block_explorer": "Просмотреть в Block Explorer",
@@ -1311,6 +1343,7 @@
"waitFewSecondForTxUpdate": "Пожалуйста, подождите несколько секунд, пока транзакция отобразится в истории транзакций.",
"wallet": "Кошелек",
"wallet_accounts": "Аккаунты кошелька",
"wallet_balance": "Баланс кошелька",
"wallet_group": "Группа кошельков",
"wallet_group_description_existing_seed": "Вы выбрали использование существующей сид-фразы для этого кошелька. При необходимости вы можете снова проверить сид-фразу, чтобы подтвердить её или записать.",
"wallet_group_description_four": "создать кошелек с совершенно новой seed-фразой.",
@@ -1348,9 +1381,11 @@
"walletConnect": "WalletConnect",
"wallets": "Кошельки",
"warning": "Предупреждение",
"wc_action_approve": "Одобрить",
"wc_approve_request_title": "Утвердить запрос",
"wc_connect_request_title": "Запрос на подключение",
"wc_connected_to": "Подключено к ${name}",
"wc_desc": "Легко подключайтесь к dApps",
"wc_max_network_fee": "Максимальная плата за сеть",
"wc_message_to_sign": "Сообщение для подписи",
"wc_network_fee": "Сетевая плата",
@@ -1401,6 +1436,7 @@
"yat_popup_content": "Теперь вы можете отправлять и получать криптовалюту в Cake Wallet с помощью Yat — короткого имени пользователя на основе эмодзи. Управляйте Yat в любое время на экране настроек",
"yat_popup_title": "Адрес вашего кошелька можно преобразовать в эмодзи.",
"yes": "Да",
"yes_exit": "Да. Выйти",
"yesterday": "Вчера",
"you_now_have_debit_card": "Теперь у вас есть дебетовая карта",
"you_pay": "Вы платите",
@@ -1452,4 +1488,4 @@
"wc_action_approve": "Одобрить",
"wc_desc": "Легко подключайтесь к dApps",
"yes_exit": "Да. Выйти"
}
}
+38 -2
View File
@@ -76,6 +76,7 @@
"approve_tokens": "อนุมัติโทเค็น",
"apps": "แอป",
"arbiscan_history": "ประวัติ ArbiScan",
"are_you_sure_exit": "คุณแน่ใจหรือไม่ว่าต้องการออก?",
"arrive_in_this_address": "${currency} ${tag}จะถูกส่งมาที่ที่อยู่นี้",
"ascending": "จากน้อยไปมาก",
"ask_each_time": "ถามทุกครั้ง",
@@ -89,6 +90,7 @@
"auto_generate_addresses": "สร้างที่อยู่อัตโนมัติ",
"auto_generate_subaddresses": "สร้างที่อยู่ย่อยอัตโนมัติ",
"automatic": "อัตโนมัติ",
"available": "พร้อมใช้งาน",
"available_balance": "ยอดคงเหลือที่ใช้ได้",
"available_balance_description": "“ยอดคงเหลือที่ใช้ได้” หรือ “ยอดคงเหลือที่ยืนยันแล้ว” คือเงินที่สามารถใช้จ่ายได้ทันที หากเงินปรากฏในยอดคงเหลือด้านล่างแต่ไม่ปรากฏในยอดคงเหลือด้านบน คุณต้องรอสักครู่เพื่อให้เงินที่เข้ามาได้รับการยืนยันจากเครือข่ายเพิ่มขึ้น เมื่อได้รับการยืนยันมากขึ้นแล้ว เงินนั้นจะสามารถใช้จ่ายได้",
"avg_savings": "การประหยัดเฉลี่ย",
@@ -125,6 +127,7 @@
"block_remaining": "เหลืออีก 1 บล็อก",
"Blocks_remaining": "${status} บล็อกที่เหลือ",
"bluetooth": "บลูทูธ",
"bridging": "กำลังบริดจ์",
"bright_theme": "สว่าง",
"bscscan_history": "ประวัติ BSCScan",
"bump_fee": "เพิ่มค่าธรรมเนียม",
@@ -216,6 +219,8 @@
"color_theme": "ธีมสี",
"coming_soon_tag": "เร็ว ๆ นี้",
"commit_transaction_amount_fee": "ยืนยันธุรกรรม\nจำนวน: ${amount}\nค่าธรรมเนียม: ${fee}",
"compatible_services": "บริการที่รองรับ",
"compatible_services_desc": "ใช้เครื่องมือสแกนเพื่ออ่าน QR Code ประเภทต่อไปนี้ที่ Cake Wallet รองรับ:",
"configure": "ตั้งค่า",
"confirm": "ยืนยัน",
"confirm_delete_template": "การดำเนินการนี้จะลบเทมเพลตนี้ คุณต้องการดำเนินการต่อหรือไม่?",
@@ -279,6 +284,7 @@
"creating_new_wallet": "กำลังสร้างกระเป๋าเงินใหม่",
"creating_new_wallet_error": "ข้อผิดพลาด: ${description}",
"creation_date": "วันที่สร้าง",
"crypto_addresses": "ที่อยู่คริปโต",
"csv_nothing_to_export": "ไม่มีข้อมูลให้ส่งออก",
"current_swap": "การสวอปปัจจุบัน",
"current_wallet": "กระเป๋าเงินปัจจุบัน",
@@ -301,6 +307,7 @@
"default_sell_provider": "ผู้ให้บริการขายเริ่มต้น",
"delete": "ลบ",
"delete_account": "ลบบัญชี",
"delete_this_node": "ลบโหนดนี้",
"delete_wallet": "ลบกระเป๋าเงิน",
"delete_wallet_confirm_message": "คุณแน่ใจหรือไม่ว่าต้องการลบกระเป๋าเงิน ${wallet_name}?",
"deleteConnectionConfirmationPrompt": "คุณแน่ใจหรือไม่ว่าต้องการลบการเชื่อมต่อกับ",
@@ -330,6 +337,7 @@
"deuro_savings_welcome_description": "dEURO เป็นสเตเบิลคอยน์แบบกระจายอำนาจอย่างเต็มรูปแบบ มีหลักประกัน และตรึงมูลค่ากับยูโร — ปลอดภัย อเนกประสงค์ และทนต่อการเซ็นเซอร์ โดยไม่ต้องพึ่งพาออราเคิล 1 dEURO = 1 EURO.",
"deuro_tooltip_no_eth": "หากต้องการเปิดใช้งาน dEURO คุณต้องมี ETH ในกระเป๋าเงินของคุณ",
"deuro_tx_commited_content": "อาจใช้เวลาสองสามวินาทีเพื่อให้ธุรกรรมได้รับการยืนยันและแสดงบนหน้าจอ",
"device_confirmation": "การยืนยันบนอุปกรณ์",
"device_is_signing": "อุปกรณ์กำลังลงนาม",
"dfx_option_description": "ซื้อคริปโตด้วย EUR และ CHF สำหรับลูกค้ารายย่อยและลูกค้าองค์กรในยุโรป",
"did_you_back_up_seeds": "คุณได้สำรอง seed ทั้งหมดของคุณแล้วหรือยัง?",
@@ -466,6 +474,8 @@
"extracted_address_content": "คุณกำลังจะส่งเงินทุนไปยัง\n${recipient_name}",
"failed_authentication": "การยืนยันตัวตนล้มเหลว ${state_error}",
"faq": "คำถามที่พบบ่อย",
"favorite_token": "โทเค็นโปรด",
"favorite_token_desc": "ยอดคงเหลือของโทเค็นโปรดจะแสดงบนการ์ดยอดคงเหลือ",
"features": "คุณสมบัติ",
"fee": "ค่าธรรมเนียม",
"fee_less_than_min": "ค่าธรรมเนียมที่เลือกต่ำกว่าขั้นต่ำ โปรดเพิ่มค่าธรรมเนียมเพื่อให้สามารถส่งธุรกรรมได้",
@@ -491,6 +501,7 @@
"frozen": "ถูกระงับ",
"frozen_balance": "ยอดคงเหลือที่ถูกระงับ",
"full_balance": "ยอดคงเหลือทั้งหมด",
"gallery": "แกลเลอรี",
"gas_exceeds_allowance": "Gas ที่ธุรกรรมต้องใช้เกินกว่าค่าเผื่อที่กำหนด",
"gas_price": "ราคา Gas",
"general": "ทั่วไป",
@@ -526,10 +537,10 @@
"how_to_connect": "วิธีเชื่อมต่อ",
"how_to_use": "วิธีใช้งาน",
"how_to_use_card": "วิธีใช้การ์ดนี้",
"hww_exit_desc": "การดำเนินการนี้จะสิ้นสุดกระบวนการจับคู่กับอุปกรณ์ฮาร์ดแวร์ของคุณที่กำลังดำเนินอยู่",
"i_understand": "ฉันเข้าใจ",
"icon_style": "สไตล์ไอคอน",
"id": "ID: ",
"if_you_dont_see_your_device": "หากคุณไม่เห็นอุปกรณ์ของคุณด้านบน โปรดตรวจสอบให้แน่ใจว่า Ledger ของคุณเปิดอยู่และปลดล็อกแล้ว!",
"ignor": "เพิกเฉย",
"import": "นำเข้า",
"importNFTs": "นำเข้า NFT",
@@ -541,6 +552,7 @@
"infobox_auto_address": "ที่อยู่สำหรับรับของคุณจะเปลี่ยนทุกครั้งที่คุณได้รับธุรกรรม",
"infobox_multichain": "ใช้ที่อยู่นี้เพื่อรับโทเค็นหรือของสะสมใด ๆ บน",
"infobox_rotation": "ที่อยู่สำหรับรับของคุณจะเปลี่ยนทุกครั้งที่คุณปิดและเปิดหน้าจอนี้ใหม่",
"input": "อินพุต",
"inputs": "อินพุต",
"insufficient_funds_for_tx": "ยอดเงินไม่เพียงพอที่จะดำเนินการธุรกรรมให้สำเร็จ",
"insufficient_lamport_for_tx": "คุณมี SOL ไม่เพียงพอที่จะครอบคลุมธุรกรรมและค่าธรรมเนียมธุรกรรม กรุณาเพิ่ม SOL ในกระเป๋าเงินของคุณหรือปรับลดจำนวน SOL ที่คุณกำลังส่ง",
@@ -606,6 +618,7 @@
"manage_pow_nodes": "จัดการโหนด PoW",
"manage_providers": "จัดการผู้ให้บริการ",
"manage_yats": "จัดการ Yats",
"manual_input": "ป้อนข้อมูลด้วยตนเอง",
"mark_as_redeemed": "ทำเครื่องหมายว่าแลกใช้แล้ว",
"market_place": "มาร์เก็ตเพลส",
"mask": "มาสก์",
@@ -651,6 +664,7 @@
"nanogpt_subtitle": "โมเดลใหม่ล่าสุดทั้งหมด (GPT-5.3, Claude 4.6)\nไม่ต้องสมัครสมาชิก จ่ายด้วยคริปโต",
"narrow": "แคบ",
"network": "เครือข่าย",
"networks": "เครือข่าย",
"new_first_wallet_text": "การเก็บคริปโตของคุณให้ปลอดภัยเป็นเรื่องง่ายเหมือนปอกกล้วยเข้าปาก",
"new_node_testing": "การทดสอบโหนดใหม่",
"new_subaddress_create": "สร้าง",
@@ -679,8 +693,10 @@
"node_new": "โหนดใหม่",
"node_port": "พอร์ตโหนด",
"node_reset_settings_title": "รีเซ็ตการตั้งค่า",
"node_share_desc": "สแกน QR Code นี้จากหน้าจอสแกนเพื่อนำเข้าโหนดนี้",
"node_test": "ทดสอบ",
"nodes": "โหนด",
"nodes_desc": "จัดการโหนดที่มีอยู่หรือเพิ่มโหนดแบบกำหนดเอง",
"nodes_list_reset_to_default_message": "คุณแน่ใจหรือไม่ว่าต้องการรีเซ็ตการตั้งค่าเป็นค่าเริ่มต้น?",
"none_of_selected_providers_can_exchange": "ไม่มีผู้ให้บริการที่เลือกไว้รายใดสามารถทำการสวอปนี้ได้",
"noNFTYet": "ยังไม่มี NFT",
@@ -690,6 +706,7 @@
"note_tap_to_change": "หมายเหตุ (แตะเพื่อเปลี่ยน)",
"notification_permission_denied": "สิทธิ์การแจ้งเตือนถูกปฏิเสธอย่างถาวร โปรดเปิดใช้งานด้วยตนเองในการตั้งค่า",
"nullURIError": "URI เป็นค่าว่าง",
"ocp_desc": "ชำระเงินด้วยคริปโตในร้านค้า",
"offer_expires_in": "ข้อเสนอจะหมดอายุใน: ",
"offline": "ออฟไลน์",
"ok": "ตกลง",
@@ -716,8 +733,13 @@
"outputs": "เอาต์พุต",
"overshot": "เกิน",
"overwrite_amount": "เขียนทับจำนวนเงิน",
"pairing_code": "รหัสจับคู่",
"pairing_code_desc_1": "อุปกรณ์ของคุณจะแสดงรหัสจับคู่",
"pairing_code_desc_2": "ป้อนที่นี่เพื่อดำเนินการต่อ",
"pairing_error": "เกิดข้อผิดพลาดในการจับคู่",
"pairingInvalidEvent": "เหตุการณ์การจับคู่ไม่ถูกต้อง",
"passphrase": "วลีรหัสผ่าน (ไม่บังคับ)",
"passphrase_view_keys": "วลีรหัสผ่าน",
"passphrases_doesnt_match": "Passphrase ไม่ตรงกัน โปรดลองอีกครั้ง",
"password": "รหัสผ่าน",
"paste": "วาง",
@@ -733,6 +755,7 @@
"payjoin_unavailable_sheet_content": "การรับธุรกรรม Payjoin จำเป็นต้องมี Bitcoin พร้อมใช้งาน\n\nเมื่อกระเป๋าเงินของคุณมีเงินแล้ว Payjoin จะถูกเปิดใช้งานโดยอัตโนมัติ",
"payjoin_unavailable_sheet_title": "ทำไม Payjoin ถึงใช้งานไม่ได้?",
"payment_id": "รหัสการชำระเงิน: ",
"payment_invoices": "ใบแจ้งหนี้การชำระเงิน",
"payment_made_easy": "การชำระเงินที่ง่ายขึ้น",
"payment_was_received": "ได้รับการชำระเงินของคุณแล้ว",
"payments": "การชำระเงิน",
@@ -812,6 +835,7 @@
"receive_to": "รับไปยัง",
"received": "ได้รับ",
"receiving": "กำลังรับ",
"recieving": "กำลังรับ",
"recipient_address": "ที่อยู่ผู้รับ",
"reconnect": "เชื่อมต่อใหม่",
"reconnect_alert_text": "คุณแน่ใจหรือไม่ว่าต้องการเชื่อมต่อใหม่?",
@@ -887,6 +911,7 @@
"save": "บันทึก",
"save_backup_password": "โปรดตรวจสอบให้แน่ใจว่าคุณได้บันทึกรหัสผ่านสำรองข้อมูลไว้แล้ว คุณจะไม่สามารถนำเข้าไฟล์สำรองข้อมูลของคุณได้หากไม่มีรหัสผ่านดังกล่าว",
"save_backup_password_alert": "บันทึกรหัสผ่านสำหรับการสำรองข้อมูล",
"save_contact": "บันทึกผู้ติดต่อ",
"save_to_downloads": "บันทึกไปยังโฟลเดอร์ดาวน์โหลด",
"saved_the_trade_id": "ฉันได้บันทึก ID การเทรดไว้แล้ว",
"savings": "เงินออม",
@@ -1036,6 +1061,7 @@
"setup_your_debit_card": "ตั้งค่าบัตรเดบิตของคุณ",
"share": "แชร์",
"share_address": "แชร์ที่อยู่",
"share_this_node": "แชร์โหนดนี้",
"shared_seed_wallet_groups": "กลุ่มกระเป๋าเงินที่ใช้ Seed ร่วมกัน",
"shared_seed_wallets": "กระเป๋าเงิน Seed ที่ใช้ร่วมกัน",
"show": "แสดง",
@@ -1043,6 +1069,7 @@
"show_balance": "กดค้างเพื่อแสดงยอดคงเหลือ",
"show_balance_send_page": "แตะเพื่อแสดง",
"show_balance_toast": "กดค้างเพื่อซ่อนหรือแสดงยอดคงเหลือ",
"show_combined_balance": "แสดงยอดคงเหลือรวม",
"show_details": "แสดงรายละเอียด",
"show_hidden_addresses": "แสดงที่อยู่ที่ซ่อนอยู่",
"show_keys": "แสดงซีด/คีย์",
@@ -1108,6 +1135,7 @@
"swap_providers": "ผู้ให้บริการสวอป",
"sweeping_wallet": "กระเป๋าสตางค์สำหรับกวาดเหรียญ",
"sweeping_wallet_alert": "การดำเนินการนี้ใช้เวลาไม่นาน ห้ามออกจากหน้าจอนี้ มิฉะนั้นเงินที่กวาดอาจสูญหาย",
"swipe_to_bridge": "ปัดเพื่อบริดจ์",
"swipe_to_send": "ปัดเพื่อส่ง",
"switch_wallet": "สลับกระเป๋าเงิน",
"switchToETHWallet": "โปรดสลับไปยังกระเป๋าเงิน Ethereum แล้วลองอีกครั้ง",
@@ -1148,6 +1176,7 @@
"testnet_coins_no_value": "เหรียญ Testnet ไม่มีมูลค่า",
"third_intro_content": "Yat ใช้ได้นอก Cake Wallet ด้วย ที่อยู่กระเป๋าเงินใดๆ ทั่วโลกสามารถแทนที่ด้วย Yat ได้!",
"third_intro_title": "Yat ทำงานร่วมกับสิ่งอื่นได้อย่างราบรื่น",
"this_can_take_few_seconds": "การดำเนินการนี้อาจใช้เวลาสักครู่",
"this_pair_is_not_supported_warning": "คู่นี้ไม่รองรับกับแพลตฟอร์มแลกเปลี่ยนที่เลือกอยู่ในขณะนี้ โปรดเลือกแพลตฟอร์มแลกเปลี่ยนอื่น",
"thorchain_contract_address_not_supported": "THORChain ไม่รองรับการส่งไปยังที่อยู่สัญญา",
"thorchain_taproot_address_not_supported": "ผู้ให้บริการ ThorChain ไม่รองรับที่อยู่ Taproot โปรดเปลี่ยนที่อยู่หรือเลือกผู้ให้บริการอื่น",
@@ -1161,6 +1190,7 @@
"token_decimal": "ทศนิยมของโทเค็น (เช่น: USDT)",
"token_name": "ชื่อโทเค็น (เช่น: Tether)",
"token_symbol": "สัญลักษณ์โทเค็น (เช่น: USDT)",
"token_verified_on_jupiter": "โทเค็นนี้ได้รับการตรวจสอบบน Jupiter",
"tokenID": "ID",
"tokens": "โทเค็น",
"tokens_strong_warning": "ห้ามส่งโทเค็นไปยังที่อยู่นี้เด็ดขาด!",
@@ -1289,6 +1319,7 @@
"username": "ชื่อผู้ใช้",
"username_available": "ชื่อผู้ใช้พร้อมใช้งาน",
"username_character_error": "ชื่อผู้ใช้ต้องมีเฉพาะ",
"username_check_your_network": "ไม่สามารถตรวจสอบชื่อผู้ใช้ได้ โปรดตรวจสอบการเชื่อมต่อเครือข่ายของคุณ",
"username_length_error": "ชื่อผู้ใช้ต้องมีอักขระตัวอักษรและตัวเลข 6-32 ตัว",
"username_length_error_1_64": "ชื่อผู้ใช้ต้องมีอักขระตัวอักษรและตัวเลข 1-64 ตัว",
"username_not_available": "ชื่อผู้ใช้นี้ไม่พร้อมใช้งาน",
@@ -1299,6 +1330,7 @@
"verify_message": "ตรวจสอบข้อความ",
"verify_seed": "ยืนยัน Seed",
"verify_with_2fa": "ยืนยันด้วย Cake 2FA",
"verifying_code": "กำลังตรวจสอบรหัส",
"version": "เวอร์ชัน ${currentVersion}",
"view_all": "ดูทั้งหมด",
"view_in_block_explorer": "ดูใน Block Explorer",
@@ -1310,6 +1342,7 @@
"waitFewSecondForTxUpdate": "กรุณารอสักครู่เพื่อให้ธุรกรรมแสดงในประวัติธุรกรรม",
"wallet": "วอลเล็ต",
"wallet_accounts": "บัญชีกระเป๋าเงิน",
"wallet_balance": "ยอดคงเหลือในกระเป๋าเงิน",
"wallet_group": "กลุ่มวอลเล็ต",
"wallet_group_description_existing_seed": "คุณได้เลือกใช้ซีดที่มีอยู่สำหรับกระเป๋าเงินนี้ คุณสามารถตรวจสอบซีดอีกครั้งได้ หากต้องการยืนยันหรือจดบันทึกไว้",
"wallet_group_description_four": "เพื่อสร้างกระเป๋าเงินด้วยซีดใหม่ทั้งหมด",
@@ -1347,9 +1380,11 @@
"walletConnect": "WalletConnect",
"wallets": "กระเป๋าเงิน",
"warning": "คำเตือน",
"wc_action_approve": "อนุมัติ",
"wc_approve_request_title": "อนุมัติคำขอ",
"wc_connect_request_title": "เชื่อมต่อคำขอ",
"wc_connected_to": "เชื่อมต่อกับ ${name}",
"wc_desc": "เชื่อมต่อกับ DApps ได้อย่างง่ายดาย",
"wc_max_network_fee": "ค่าธรรมเนียมเครือข่ายสูงสุด",
"wc_message_to_sign": "ข้อความที่จะลงนาม",
"wc_network_fee": "ค่าธรรมเนียมเครือข่าย",
@@ -1400,6 +1435,7 @@
"yat_popup_content": "ขณะนี้คุณสามารถส่งและรับคริปโตใน Cake Wallet ด้วย Yat ของคุณ — ชื่อผู้ใช้แบบสั้นที่ใช้ อีโมจิ เป็นหลัก จัดการ Yat ได้ทุกเมื่อบนหน้าจอการตั้งค่า",
"yat_popup_title": "ที่อยู่กระเป๋าเงินของคุณสามารถแปลงเป็นอีโมจิได้",
"yes": "ใช่",
"yes_exit": "ใช่ ออก",
"yesterday": "เมื่อวาน",
"you_now_have_debit_card": "ตอนนี้คุณมีบัตรเดบิตแล้ว",
"you_pay": "คุณจ่าย",
@@ -1451,4 +1487,4 @@
"wc_action_approve": "อนุมัติ",
"wc_desc": "เชื่อมต่อกับ DApps ได้อย่างง่ายดาย",
"yes_exit": "ใช่ ออก"
}
}
+38 -2
View File
@@ -76,6 +76,7 @@
"approve_tokens": "Aprubahan ang mga token",
"apps": "Apps",
"arbiscan_history": "Kasaysayan ng ArbiScan",
"are_you_sure_exit": "Sigurado ka bang gusto mong lumabas?",
"arrive_in_this_address": "Darating ang ${currency} ${tag} sa address na ito",
"ascending": "Pataas",
"ask_each_time": "Magtanong sa bawat pagkakataon",
@@ -89,6 +90,7 @@
"auto_generate_addresses": "Awtomatikong bumuo ng mga address",
"auto_generate_subaddresses": "Awtomatikong bumuo ng mga subaddress",
"automatic": "Awtomatiko",
"available": "Available",
"available_balance": "Magagamit na Balanse",
"available_balance_description": "Ang “Magagamit na Balanse” o “Nakumpirmang Balanse” ay mga pondong maaari nang gastusin kaagad. Kung lumalabas ang mga pondo sa mas mababang balanse ngunit wala sa itaas na balanse, kailangan mong maghintay ng ilang minuto para makakuha ng mas maraming kumpirmasyon sa network ang mga papasok na pondo. Kapag nakakuha na sila ng mas maraming kumpirmasyon, maaari na silang gastusin.",
"avg_savings": "Avg. Matitipid",
@@ -125,6 +127,7 @@
"block_remaining": "1 Block ang Natitira",
"Blocks_remaining": "${status} Natitirang Block",
"bluetooth": "Bluetooth",
"bridging": "Bina-bridge",
"bright_theme": "Maningning",
"bscscan_history": "Kasaysayan ng BSCScan",
"bump_fee": "Itaas ang bayarin",
@@ -216,6 +219,8 @@
"color_theme": "Tema ng kulay",
"coming_soon_tag": "Paparating na",
"commit_transaction_amount_fee": "I-commit ang transaksyon\nHalaga: ${amount}\nBayad: ${fee}",
"compatible_services": "Mga Katugmang Serbisyo",
"compatible_services_desc": "Gamitin ang Scan tool upang basahin ang mga sumusunod na uri ng QR code na sinusuportahan sa Cake Wallet:",
"configure": "I-configure",
"confirm": "Kumpirmahin",
"confirm_delete_template": "Ide-delete ng aksyong ito ang template na ito. Gusto mo bang magpatuloy?",
@@ -279,6 +284,7 @@
"creating_new_wallet": "Gumagawa ng bagong wallet",
"creating_new_wallet_error": "Error: ${description}",
"creation_date": "Petsa ng Paglikha",
"crypto_addresses": "Mga Crypto Address",
"csv_nothing_to_export": "Walang i-e-export",
"current_swap": "Kasalukuyang Swap",
"current_wallet": "Kasalukuyang wallet",
@@ -301,6 +307,7 @@
"default_sell_provider": "Default na Provider ng Pagbebenta",
"delete": "Tanggalin",
"delete_account": "I-delete ang Account",
"delete_this_node": "Tanggalin ang node na ito",
"delete_wallet": "I-delete ang wallet",
"delete_wallet_confirm_message": "Sigurado ka bang gusto mong tanggalin ang wallet na ${wallet_name}?",
"deleteConnectionConfirmationPrompt": "Sigurado ka bang gusto mong tanggalin ang koneksyon sa",
@@ -330,6 +337,7 @@
"deuro_savings_welcome_description": "Ang dEURO ay isang ganap na desentralisado at collateralized na stablecoin na naka-peg sa Euro — secure, maraming gamit, at lumalaban sa censorship nang hindi kailangang umasa sa mga oracle. 1 dEURO = 1 EURO.",
"deuro_tooltip_no_eth": "Upang paganahin ang dEURO, dapat ay may ETH ka sa iyong wallet.",
"deuro_tx_commited_content": "Maaaring tumagal ng ilang segundo bago makumpirma ang transaksyon at lumabas sa screen",
"device_confirmation": "Kumpirmasyon sa Device",
"device_is_signing": "Pumipirma ang device",
"dfx_option_description": "Bumili ng crypto gamit ang EUR at CHF. Para sa mga retail at corporate na customer sa Europe",
"did_you_back_up_seeds": "Na-back up mo na ba ang lahat ng iyong seed?",
@@ -466,6 +474,8 @@
"extracted_address_content": "Magpapadala ka ng mga pondo sa\n${recipient_name}",
"failed_authentication": "Nabigo ang pag-authenticate. ${state_error}",
"faq": "FAQ",
"favorite_token": "Paboritong token",
"favorite_token_desc": "Ipapakita ang balanse ng paboritong token sa balance card.",
"features": "Mga Tampok",
"fee": "Bayarin",
"fee_less_than_min": "Ang napiling bayad ay mas mababa kaysa sa minimum. Mangyaring taasan ang bayad upang maipadala ang transaksyon.",
@@ -491,6 +501,7 @@
"frozen": "Naka-freeze",
"frozen_balance": "Naka-freeze na balanse",
"full_balance": "Buong Balanse",
"gallery": "Gallery",
"gas_exceeds_allowance": "Ang gas na kailangan para sa transaksyon ay lumampas sa itinakdang limitasyon.",
"gas_price": "Presyo ng gas",
"general": "Pangkalahatan",
@@ -526,10 +537,10 @@
"how_to_connect": "Paano Kumonekta",
"how_to_use": "Paano gamitin",
"how_to_use_card": "Paano gamitin ang card na ito",
"hww_exit_desc": "Tatapusin nito ang kasalukuyang proseso ng pagpa-pair sa iyong hardware device",
"i_understand": "Naiintindihan ko",
"icon_style": "Estilo ng icon",
"id": "ID: ",
"if_you_dont_see_your_device": "Kung hindi mo nakikita ang iyong device sa itaas, pakitiyak na gising at naka-unlock ang iyong Ledger!",
"ignor": "Huwag pansinin",
"import": "I-import",
"importNFTs": "Mag-import ng mga NFT",
@@ -541,6 +552,7 @@
"infobox_auto_address": "Iikot ang iyong receive address sa tuwing makakatanggap ka ng transaksyon",
"infobox_multichain": "Gamitin ang address na ito para makatanggap ng anumang token o collectible sa",
"infobox_rotation": "Ang iyong receive address ay magpapalit sa tuwing isasara mo at muling bubuksan ang screen na ito",
"input": "Input",
"inputs": "Mga input",
"insufficient_funds_for_tx": "Hindi sapat ang pondo upang matagumpay na maisagawa ang transaksyon.",
"insufficient_lamport_for_tx": "Wala kang sapat na SOL upang masakop ang transaksyon at ang bayad sa transaksyon nito. Mangyaring magdagdag pa ng SOL sa iyong wallet o bawasan ang halagang SOL na ipinapadala mo.",
@@ -606,6 +618,7 @@
"manage_pow_nodes": "Pamahalaan ang mga PoW node",
"manage_providers": "Pamahalaan ang mga provider",
"manage_yats": "Pamahalaan ang Yats",
"manual_input": "Manu-manong Paglalagay",
"mark_as_redeemed": "Markahan bilang Na-redeem",
"market_place": "Marketplace",
"mask": "Mask",
@@ -651,6 +664,7 @@
"nanogpt_subtitle": "Lahat ng pinakabagong modelo (GPT-5.3, Claude 4.6).\nWalang subscription, magbayad gamit ang crypto.",
"narrow": "Makitid",
"network": "Network",
"networks": "Mga Network",
"new_first_wallet_text": "Ang pagpapanatiling ligtas ng iyong crypto ay kasingdali ng pagkain ng keyk",
"new_node_testing": "Pagsusuri ng bagong node",
"new_subaddress_create": "Lumikha",
@@ -679,8 +693,10 @@
"node_new": "Bagong Node",
"node_port": "Port ng node",
"node_reset_settings_title": "I-reset ang mga setting",
"node_share_desc": "I-scan ang QR code na ito mula sa Scan screen upang i-import ang node na ito.",
"node_test": "Pagsubok",
"nodes": "Mga Node",
"nodes_desc": "Pamahalaan ang mga umiiral na node o magdagdag ng custom.",
"nodes_list_reset_to_default_message": "Sigurado ka bang gusto mong i-reset ang mga setting sa default?",
"none_of_selected_providers_can_exchange": "Wala sa mga napiling provider ang makakagawa ng swap na ito",
"noNFTYet": "Wala pang mga NFT",
@@ -690,6 +706,7 @@
"note_tap_to_change": "Tala (i-tap para baguhin)",
"notification_permission_denied": "Permanenteng tinanggihan ang pahintulot para sa mga abiso. Pakipaganahin ito nang manu-mano sa mga setting.",
"nullURIError": "Null ang URI",
"ocp_desc": "Magbayad gamit ang crypto sa mga tindahan",
"offer_expires_in": "Mag-e-expire ang alok sa: ",
"offline": "Offline",
"ok": "OK",
@@ -716,8 +733,13 @@
"outputs": "Mga Output",
"overshot": "Lumampas",
"overwrite_amount": "Patungan ang halaga",
"pairing_code": "Pairing Code",
"pairing_code_desc_1": "Magpapakita ang iyong device ng isang pairing code.",
"pairing_code_desc_2": "Ilagay dito upang magpatuloy",
"pairing_error": "Error sa Pagpa-pair",
"pairingInvalidEvent": "Hindi Wastong Kaganapan sa Pag-pair",
"passphrase": "Passphrase (Opsyonal)",
"passphrase_view_keys": "Passphrase",
"passphrases_doesnt_match": "Hindi magkatugma ang mga passphrase, pakisubukang muli",
"password": "Password",
"paste": "I-paste",
@@ -733,6 +755,7 @@
"payjoin_unavailable_sheet_content": "Ang pagtanggap ng isang Payjoin na transaksyon ay nangangailangan na mayroon kang Bitcoin na handang gamitin.\n\nKapag may pondo na ang iyong wallet, awtomatikong maa-enable ang Payjoin.",
"payjoin_unavailable_sheet_title": "Bakit hindi available ang Payjoin?",
"payment_id": "Payment ID: ",
"payment_invoices": "Mga Invoice ng Pagbabayad",
"payment_made_easy": "Pinadali ang mga pagbabayad",
"payment_was_received": "Natanggap ang iyong pagbabayad.",
"payments": "Mga Pagbabayad",
@@ -812,6 +835,7 @@
"receive_to": "Tumanggap sa",
"received": "Natanggap",
"receiving": "Pagtanggap",
"recieving": "Tumatanggap",
"recipient_address": "Address ng tatanggap",
"reconnect": "Muling kumonekta",
"reconnect_alert_text": "Sigurado ka bang gusto mong kumonekta muli?",
@@ -887,6 +911,7 @@
"save": "I-save",
"save_backup_password": "Pakisigurado na na-save mo ang iyong backup password. Hindi mo mai-import ang iyong mga backup file kung wala ito.",
"save_backup_password_alert": "I-save ang password ng backup",
"save_contact": "I-save ang Contact",
"save_to_downloads": "I-save sa Downloads",
"saved_the_trade_id": "Na-save ko na ang trade ID",
"savings": "Ipon",
@@ -1036,6 +1061,7 @@
"setup_your_debit_card": "I-set up ang iyong debit card",
"share": "Ibahagi",
"share_address": "Ibahagi ang address",
"share_this_node": "Ibahagi ang node na ito",
"shared_seed_wallet_groups": "Mga Grupo ng Wallet na may Ibinahaging Seed",
"shared_seed_wallets": "Mga Wallet na may Shared Seed",
"show": "Ipakita",
@@ -1043,6 +1069,7 @@
"show_balance": "Pindutin nang matagal para ipakita ang balanse",
"show_balance_send_page": "I-tap para ipakita",
"show_balance_toast": "Pindutin nang matagal upang itago o ipakita ang balanse",
"show_combined_balance": "Ipakita ang pinagsamang balanse",
"show_details": "Ipakita ang mga Detalye",
"show_hidden_addresses": "Ipakita ang mga nakatagong address",
"show_keys": "Ipakita ang seed/keys",
@@ -1108,6 +1135,7 @@
"swap_providers": "Mga provider ng swap",
"sweeping_wallet": "Sweeping wallet",
"sweeping_wallet_alert": "Hindi ito dapat magtagal. HUWAG UMALIS SA SCREEN NA ITO O MAARING MAWALA ANG MGA NA-SWEEP NA PONDO.",
"swipe_to_bridge": "Mag-swipe para mag-bridge",
"swipe_to_send": "I-swipe para magpadala",
"switch_wallet": "Lumipat ng Wallet",
"switchToETHWallet": "Mangyaring lumipat sa isang Ethereum wallet at subukang muli",
@@ -1148,6 +1176,7 @@
"testnet_coins_no_value": "Walang halaga ang mga testnet coin",
"third_intro_content": "Umiiral din ang Yats sa labas ng Cake Wallet. Anumang wallet address sa mundo ay maaaring palitan ng Yat!",
"third_intro_title": "Maganda ang pakikisama ng Yat sa iba",
"this_can_take_few_seconds": "Maaaring tumagal ito ng ilang segundo",
"this_pair_is_not_supported_warning": "Hindi sinusuportahan ang pares na ito sa kasalukuyang napiling (mga) exchange. Mangyaring pumili ng ibang exchange.",
"thorchain_contract_address_not_supported": "Hindi sinusuportahan ng THORChain ang pagpapadala sa isang contract address",
"thorchain_taproot_address_not_supported": "Hindi sinusuportahan ng ThorChain provider ang mga Taproot address. Pakibaguhin ang address o pumili ng ibang provider.",
@@ -1161,6 +1190,7 @@
"token_decimal": "Desimal ng token (hal: USDT)",
"token_name": "Pangalan ng token (hal: Tether)",
"token_symbol": "Simbolo ng token (hal: USDT)",
"token_verified_on_jupiter": "Ang token na ito ay na-verify sa Jupiter",
"tokenID": "ID",
"tokens": "Mga Token",
"tokens_strong_warning": "Huwag kailanman magpadala ng mga token sa address na ito!",
@@ -1289,6 +1319,7 @@
"username": "Username",
"username_available": "Available ang Username",
"username_character_error": "Ang mga username ay dapat maglaman lamang ng",
"username_check_your_network": "Hindi ma-check ang username. Pakisuri ang iyong koneksyon sa network.",
"username_length_error": "Ang mga username ay dapat maglaman ng 6-32 alphanumeric na karakter.",
"username_length_error_1_64": "Dapat maglaman ang mga username ng 1-64 na alphanumeric na character.",
"username_not_available": "Hindi available ang username na ito.",
@@ -1299,6 +1330,7 @@
"verify_message": "I-verify ang Mensahe",
"verify_seed": "I-verify ang Seed",
"verify_with_2fa": "I-verify gamit ang Cake 2FA",
"verifying_code": "Vine-verify ang Code",
"version": "Bersyon ${currentVersion}",
"view_all": "Tingnan lahat",
"view_in_block_explorer": "Tingnan sa Block Explorer",
@@ -1310,6 +1342,7 @@
"waitFewSecondForTxUpdate": "Mangyaring maghintay ng ilang segundo para lumabas ang transaksyon sa kasaysayan ng mga transaksyon",
"wallet": "Wallet",
"wallet_accounts": "Mga Account ng Wallet",
"wallet_balance": "Balanse ng Wallet",
"wallet_group": "Grupo ng Wallet",
"wallet_group_description_existing_seed": "Pinili mong gumamit ng umiiral na seed para sa wallet na ito. Maaari mong i-verify muli ang seed kung kailangan mong kumpirmahin o isulat ito.",
"wallet_group_description_four": "upang lumikha ng wallet na may ganap na bagong seed.",
@@ -1347,9 +1380,11 @@
"walletConnect": "WalletConnect",
"wallets": "Mga Wallet",
"warning": "Babala",
"wc_action_approve": "Aprubahan",
"wc_approve_request_title": "Aprubahan ang kahilingan",
"wc_connect_request_title": "Kahilingan sa pagkonekta",
"wc_connected_to": "Nakakonekta sa ${name}",
"wc_desc": "Madaling kumonekta sa mga DApp",
"wc_max_network_fee": "Pinakamataas na bayad sa network",
"wc_message_to_sign": "Mensahe para pirmahan",
"wc_network_fee": "Bayad sa network",
@@ -1400,6 +1435,7 @@
"yat_popup_content": "Maaari ka na ngayong magpadala at tumanggap ng crypto sa Cake Wallet gamit ang iyong Yat — isang maikling username na binubuo ng mga emoji. Pamahalaan ang mga Yat anumang oras sa screen ng mga setting",
"yat_popup_title": "Maaaring gawing emoji ang address ng iyong wallet.",
"yes": "Oo",
"yes_exit": "Oo. Lumabas",
"yesterday": "Kahapon",
"you_now_have_debit_card": "Mayroon ka na ngayong debit card",
"you_pay": "Ikaw ang Magbabayad",
@@ -1451,4 +1487,4 @@
"wc_action_approve": "Aprubahan",
"wc_desc": "Madaling kumonekta sa mga DApp",
"yes_exit": "Oo. Lumabas"
}
}
+38 -2
View File
@@ -76,6 +76,7 @@
"approve_tokens": "Tokenları onaylayın",
"apps": "Uygulamalar",
"arbiscan_history": "ArbiScan Geçmişi",
"are_you_sure_exit": "Çıkmak istediğinizden emin misiniz?",
"arrive_in_this_address": "${currency} ${tag}bu adrese ulaşacaktır",
"ascending": "Artan",
"ask_each_time": "Her seferinde sor",
@@ -89,6 +90,7 @@
"auto_generate_addresses": "Adresleri otomatik oluştur",
"auto_generate_subaddresses": "Alt adresleri otomatik oluştur",
"automatic": "Otomatik",
"available": "Kullanılabilir",
"available_balance": "Kullanılabilir Bakiye",
"available_balance_description": "“Kullanılabilir Bakiye” veya “Onaylanmış Bakiye”, hemen harcanabilen fonlardır. Fonlar alt bakiyede görünüp üst bakiyede görünmüyorsa, gelen fonların ağda daha fazla onay alması için birkaç dakika beklemeniz gerekir. Daha fazla onay aldıktan sonra harcanabilir olacaktır.",
"avg_savings": "Ort. Tasarruf",
@@ -125,6 +127,7 @@
"block_remaining": "Kalan 1 Blok",
"Blocks_remaining": "${status} Blok Kaldı",
"bluetooth": "Bluetooth",
"bridging": "Köprüleniyor",
"bright_theme": "Parlak",
"bscscan_history": "BSCScan Geçmişi",
"bump_fee": "Ücreti artır",
@@ -216,6 +219,8 @@
"color_theme": "Renk teması",
"coming_soon_tag": "Yakında",
"commit_transaction_amount_fee": "İşlemi onayla\nTutar: ${amount}\nÜcret: ${fee}",
"compatible_services": "Uyumlu Hizmetler",
"compatible_services_desc": "Cake Wallet'ta desteklenen aşağıdaki QR kodu türlerini okumak için Tarama aracını kullanın:",
"configure": "Yapılandır",
"confirm": "Onayla",
"confirm_delete_template": "Bu işlem bu şablonu silecek. Devam etmek istiyor musunuz?",
@@ -279,6 +284,7 @@
"creating_new_wallet": "Yeni cüzdan oluşturuluyor",
"creating_new_wallet_error": "Hata: ${description}",
"creation_date": "Oluşturulma Tarihi",
"crypto_addresses": "Kripto Adresleri",
"csv_nothing_to_export": "Dışa aktarılacak bir şey yok",
"current_swap": "Mevcut Takas",
"current_wallet": "Geçerli cüzdan",
@@ -301,6 +307,7 @@
"default_sell_provider": "Varsayılan Satış Sağlayıcısı",
"delete": "Sil",
"delete_account": "Hesabı Sil",
"delete_this_node": "Bu düğümü sil",
"delete_wallet": "Cüzdanı sil",
"delete_wallet_confirm_message": "${wallet_name} cüzdanını silmek istediğinden emin misin?",
"deleteConnectionConfirmationPrompt": "Şuraya olan bağlantıyı silmek istediğinizden emin misiniz:",
@@ -330,6 +337,7 @@
"deuro_savings_welcome_description": "dEURO, Euro’ya sabitlenmiş tamamen merkeziyetsiz, teminatlandırılmış bir stablecoin’dir — güvenli, çok yönlü ve oracle’lara güvenmek zorunda kalmadan sansüre dayanıklıdır. 1 dEURO = 1 EURO.",
"deuro_tooltip_no_eth": "dEURO'yu etkinleştirmek için cüzdanınızda ETH bulunmalıdır.",
"deuro_tx_commited_content": "İşlemin onaylanması ve ekrana yansıması birkaç saniye sürebilir",
"device_confirmation": "Cihaz Onayı",
"device_is_signing": "Cihaz imzalıyor",
"dfx_option_description": "EUR ve CHF ile kripto satın alın. Avrupa'daki bireysel ve kurumsal müşteriler için",
"did_you_back_up_seeds": "Tüm seed'lerinizi yedeklediniz mi?",
@@ -466,6 +474,8 @@
"extracted_address_content": "${recipient_name} adresine\nfon göndereceksiniz",
"failed_authentication": "Kimlik doğrulama başarısız oldu. ${state_error}",
"faq": "SSS",
"favorite_token": "Favori token",
"favorite_token_desc": "Favori token'ın bakiyesi bakiye kartında gösterilecektir.",
"features": "Özellikler",
"fee": "Ücret",
"fee_less_than_min": "Seçilen ücret minimum değerin altındadır, lütfen işlemi gönderebilmek için ücreti artırın",
@@ -491,6 +501,7 @@
"frozen": "Dondurulmuş",
"frozen_balance": "Dondurulmuş Bakiye",
"full_balance": "Toplam Bakiye",
"gallery": "Galeri",
"gas_exceeds_allowance": "İşlemin gerektirdiği gas, izin verilen ödeneği aşıyor.",
"gas_price": "Gas ücreti",
"general": "Genel",
@@ -526,10 +537,10 @@
"how_to_connect": "Nasıl Bağlanılır",
"how_to_use": "Nasıl kullanılır",
"how_to_use_card": "Bu kart nasıl kullanılır",
"hww_exit_desc": "Bu, donanım cihazınızla devam eden eşleştirme işlemini sonlandıracaktır",
"i_understand": "Anladım",
"icon_style": "Simge stili",
"id": "ID: ",
"if_you_dont_see_your_device": "Cihazınızı yukarıda görmüyorsanız, lütfen Ledger'ınızın açık, uyanık ve kilidinin açılmış olduğundan emin olun!",
"ignor": "Yoksay",
"import": "İçe aktar",
"importNFTs": "NFT'leri İçe Aktar",
@@ -541,6 +552,7 @@
"infobox_auto_address": "Her işlem aldığınızda alma adresiniz her seferinde değişecektir",
"infobox_multichain": "Herhangi bir token veya koleksiyon parçası almak için bu adresi kullanın",
"infobox_rotation": "Bu ekranı her kapatıp yeniden açtığınızda alma adresiniz değişecektir",
"input": "Girdi",
"inputs": "Girdiler",
"insufficient_funds_for_tx": "İşlemi başarıyla gerçekleştirmek için yeterli bakiye yok.",
"insufficient_lamport_for_tx": "İşlemi ve işlem ücretini karşılamak için yeterli SOL'unuz yok. Lütfen cüzdanınıza daha fazla SOL ekleyin veya gönderdiğiniz SOL miktarını azaltın.",
@@ -606,6 +618,7 @@
"manage_pow_nodes": "PoW düğümlerini yönet",
"manage_providers": "Sağlayıcıları yönet",
"manage_yats": "Yat'ları yönet",
"manual_input": "Manuel Giriş",
"mark_as_redeemed": "Kullanıldı olarak işaretle",
"market_place": "Pazar Yeri",
"mask": "Maske",
@@ -651,6 +664,7 @@
"nanogpt_subtitle": "En yeni modellerin tümü (GPT-5.3, Claude 4.6).\nAbonelik yok, kripto ile ödeyin.",
"narrow": "Dar",
"network": "Ağ",
"networks": "Ağlar",
"new_first_wallet_text": "Kriptonuzu güvende tutmak çocuk oyuncağı",
"new_node_testing": "Yeni düğüm testi",
"new_subaddress_create": "Oluştur",
@@ -679,8 +693,10 @@
"node_new": "Yeni düğüm",
"node_port": "Düğüm bağlantı noktası",
"node_reset_settings_title": "Ayarları sıfırla",
"node_share_desc": "Bu düğümü içe aktarmak için bu QR kodunu Tarama ekranından tarayın.",
"node_test": "Test",
"nodes": "Düğümler",
"nodes_desc": "Mevcut düğümleri yönetin veya özel bir düğüm ekleyin.",
"nodes_list_reset_to_default_message": "Ayarları varsayılanlara sıfırlamak istediğinizden emin misiniz?",
"none_of_selected_providers_can_exchange": "Seçilen sağlayıcıların hiçbiri bu takası gerçekleştiremez",
"noNFTYet": "Henüz NFT yok",
@@ -690,6 +706,7 @@
"note_tap_to_change": "Not (değiştirmek için dokunun)",
"notification_permission_denied": "Bildirim izni kalıcı olarak reddedildi, lütfen ayarlardan manuel olarak etkinleştirin",
"nullURIError": "URI null",
"ocp_desc": "Mağazalarda kripto ile ödeme yapın",
"offer_expires_in": "Teklifin sona ermesine kalan: ",
"offline": "Çevrimdışı",
"ok": "Tamam",
@@ -716,8 +733,13 @@
"outputs": "Çıktılar",
"overshot": "Aşıldı",
"overwrite_amount": "Miktarın üzerine yaz",
"pairing_code": "Eşleştirme Kodu",
"pairing_code_desc_1": "Cihazınız bir eşleştirme kodu gösterecektir.",
"pairing_code_desc_2": "Devam etmek için buraya girin",
"pairing_error": "Eşleştirme Hatası",
"pairingInvalidEvent": "Geçersiz Eşleştirme Etkinliği",
"passphrase": "Parola (İsteğe bağlı)",
"passphrase_view_keys": "Parola",
"passphrases_doesnt_match": "Parolalar eşleşmiyor, lütfen tekrar deneyin",
"password": "Şifre",
"paste": "Yapıştır",
@@ -733,6 +755,7 @@
"payjoin_unavailable_sheet_content": "Bir Payjoin işlemi almak için kullanıma hazır Bitcoin’iniz olması gerekir.\n\nCüzdanınızda fonlar olduğu anda Payjoin otomatik olarak etkinleştirilecektir.",
"payjoin_unavailable_sheet_title": "Payjoin neden kullanılamıyor?",
"payment_id": "Ödeme Kimliği: ",
"payment_invoices": "Ödeme Faturaları",
"payment_made_easy": "Ödemeler artık çok kolay",
"payment_was_received": "Ödemeniz alındı.",
"payments": "Ödemeler",
@@ -812,6 +835,7 @@
"receive_to": "Şuraya al",
"received": "Alındı",
"receiving": "Alma",
"recieving": "Alınıyor",
"recipient_address": "Alıcı adresi",
"reconnect": "Yeniden bağlan",
"reconnect_alert_text": "Yeniden bağlanmak istediğinizden emin misiniz?",
@@ -887,6 +911,7 @@
"save": "Kaydet",
"save_backup_password": "Lütfen yedekleme parolanı kaydettiğinden emin ol. Bu parola olmadan yedekleme dosyalarını içe aktaramazsın.",
"save_backup_password_alert": "Yedekleme parolasını kaydet",
"save_contact": "Kişiyi Kaydet",
"save_to_downloads": "İndirilenler'e Kaydet",
"saved_the_trade_id": "Takas kimliğini kaydettim",
"savings": "Birikimler",
@@ -1036,6 +1061,7 @@
"setup_your_debit_card": "Banka kartını ayarla",
"share": "Paylaş",
"share_address": "Adresi paylaş",
"share_this_node": "Bu düğümü paylaş",
"shared_seed_wallet_groups": "Paylaşılan Seed Cüzdan Grupları",
"shared_seed_wallets": "Paylaşılan Seed Cüzdanları",
"show": "Göster",
@@ -1043,6 +1069,7 @@
"show_balance": "Bakiyeyi Görmek İçin Uzun Basın",
"show_balance_send_page": "Göstermek için dokunun",
"show_balance_toast": "Bakiyeyi gizlemek veya göstermek için uzun basın",
"show_combined_balance": "Birleşik bakiyeyi göster",
"show_details": "Detayları Göster",
"show_hidden_addresses": "Gizli adresleri göster",
"show_keys": "Seed'i/anahtarları göster",
@@ -1108,6 +1135,7 @@
"swap_providers": "Takas sağlayıcıları",
"sweeping_wallet": "Cüzdan süpürme",
"sweeping_wallet_alert": "Bu uzun sürmemeli. BU EKRANDAN AYRILMAYIN, AKSİ TAKDİRDE SÜPÜRÜLEN FONLAR KAYBOLABİLİR.",
"swipe_to_bridge": "Köprülemek için kaydırın",
"swipe_to_send": "Göndermek için kaydırın",
"switch_wallet": "Cüzdan Değiştir",
"switchToETHWallet": "Lütfen bir Ethereum cüzdanına geçin ve tekrar deneyin",
@@ -1148,6 +1176,7 @@
"testnet_coins_no_value": "Testnet coinlerinin değeri yok",
"third_intro_content": "Yat'lar Cake Wallet'ın dışında da kullanılabilir. Dünyadaki herhangi bir cüzdan adresi bir Yat ile değiştirilebilir!",
"third_intro_title": "Yat başkalarıyla uyum içinde çalışır",
"this_can_take_few_seconds": "Bu birkaç saniye sürebilir",
"this_pair_is_not_supported_warning": "Bu parite, şu anda seçili borsa(lar) ile desteklenmiyor. Lütfen başka bir borsa seçin.",
"thorchain_contract_address_not_supported": "THORChain, bir sözleşme adresine gönderimi desteklemiyor",
"thorchain_taproot_address_not_supported": "ThorChain sağlayıcısı Taproot adreslerini desteklemiyor. Lütfen adresi değiştirin veya farklı bir sağlayıcı seçin.",
@@ -1161,6 +1190,7 @@
"token_decimal": "Token ondalığı (örn: USDT)",
"token_name": "Token adı (örn: Tether)",
"token_symbol": "Token sembolü (örn: USDT)",
"token_verified_on_jupiter": "Bu jeton Jupiter'de doğrulandı",
"tokenID": "ID",
"tokens": "Tokenlar",
"tokens_strong_warning": "Bu adrese asla token göndermeyin!",
@@ -1289,6 +1319,7 @@
"username": "Kullanıcı adı",
"username_available": "Kullanıcı adı kullanılabilir",
"username_character_error": "Kullanıcı adları yalnızca şunları içermelidir",
"username_check_your_network": "Kullanıcı adı kontrol edilemedi. Lütfen ağ bağlantınızı kontrol edin.",
"username_length_error": "Kullanıcı adları 6-32 alfanümerik karakterden oluşmalıdır.",
"username_length_error_1_64": "Kullanıcı adları 1-64 alfanümerik karakter içermelidir.",
"username_not_available": "Bu kullanıcı adı kullanılamıyor.",
@@ -1299,6 +1330,7 @@
"verify_message": "Mesajı Doğrula",
"verify_seed": "Seed'i Doğrula",
"verify_with_2fa": "Cake 2FA ile doğrulayın",
"verifying_code": "Kod doğrulanıyor",
"version": "Sürüm ${currentVersion}",
"view_all": "Tümünü görüntüle",
"view_in_block_explorer": "Blok Gezgini'nde görüntüle",
@@ -1310,6 +1342,7 @@
"waitFewSecondForTxUpdate": "İşlemin işlem geçmişine yansıması için lütfen birkaç saniye bekleyin",
"wallet": "Cüzdan",
"wallet_accounts": "Cüzdan Hesapları",
"wallet_balance": "Cüzdan Bakiyesi",
"wallet_group": "Cüzdan Grubu",
"wallet_group_description_existing_seed": "Bu cüzdan için mevcut bir seed kullanmayı seçtiniz. Onaylamanız veya not almanız gerekiyorsa seed’i tekrar doğrulayabilirsiniz.",
"wallet_group_description_four": "tamamen yeni bir seed ile bir cüzdan oluşturmak için.",
@@ -1347,9 +1380,11 @@
"walletConnect": "WalletConnect",
"wallets": "Cüzdanlar",
"warning": "Uyarı",
"wc_action_approve": "Onayla",
"wc_approve_request_title": "İsteği onayla",
"wc_connect_request_title": "Bağlantı isteği",
"wc_connected_to": "${name} ile bağlantı kuruldu",
"wc_desc": "DApp'lere kolayca bağlanın",
"wc_max_network_fee": "Maksimum ağ ücreti",
"wc_message_to_sign": "İmzalanacak mesaj",
"wc_network_fee": "Ağ ücreti",
@@ -1400,6 +1435,7 @@
"yat_popup_content": "Artık Cake Wallet'ta kısa, emoji tabanlı bir kullanıcı adı olan Yat'inizle kripto gönderebilir ve alabilirsiniz. Yat'lerinizi istediğiniz zaman ayarlar ekranından yönetebilirsiniz.",
"yat_popup_title": "Cüzdan adresiniz emojileştirilebilir.",
"yes": "Evet",
"yes_exit": "Evet. Çık",
"yesterday": "Dün",
"you_now_have_debit_card": "Artık bir banka kartın var",
"you_pay": "Sen Ödersin",
@@ -1451,4 +1487,4 @@
"wc_action_approve": "Onayla",
"wc_desc": "DApp'lere kolayca bağlanın",
"yes_exit": "Evet. Çık"
}
}
+38 -2
View File
@@ -76,6 +76,7 @@
"approve_tokens": "Схвалити токени",
"apps": "Застосунки",
"arbiscan_history": "Історія ArbiScan",
"are_you_sure_exit": "Ви впевнені, що хочете вийти?",
"arrive_in_this_address": "${currency} ${tag}надійдуть на цю адресу",
"ascending": "За зростанням",
"ask_each_time": "Запитувати щоразу",
@@ -89,6 +90,7 @@
"auto_generate_addresses": "Автоматично генерувати адреси",
"auto_generate_subaddresses": "Автоматично генерувати субадреси",
"automatic": "Автоматично",
"available": "Доступно",
"available_balance": "Доступний баланс",
"available_balance_description": "«Доступний баланс» або «Підтверджений баланс» — це кошти, які можна витратити негайно. Якщо кошти відображаються в нижньому балансі, але не у верхньому, потрібно зачекати кілька хвилин, доки вхідні кошти отримають більше підтверджень мережі. Після отримання додаткових підтверджень їх можна буде витратити.",
"avg_savings": "Сер. заощадження",
@@ -125,6 +127,7 @@
"block_remaining": "Залишився 1 блок",
"Blocks_remaining": "${status} блоків залишилось",
"bluetooth": "Bluetooth",
"bridging": "Перенесення між мережами",
"bright_theme": "Світла",
"bscscan_history": "Історія BSCScan",
"bump_fee": "Підвищити комісію",
@@ -216,6 +219,8 @@
"color_theme": "Колірна тема",
"coming_soon_tag": "Скоро",
"commit_transaction_amount_fee": "Підтвердити транзакцію\nСума: ${amount}\nКомісія: ${fee}",
"compatible_services": "Сумісні сервіси",
"compatible_services_desc": "Скористайтеся інструментом сканування, щоб зчитати такі типи QR-кодів, які підтримує Cake Wallet:",
"configure": "Налаштувати",
"confirm": "Підтвердити",
"confirm_delete_template": "Ця дія видалить цей шаблон. Бажаєте продовжити?",
@@ -279,6 +284,7 @@
"creating_new_wallet": "Створення нового гаманця",
"creating_new_wallet_error": "Помилка: ${description}",
"creation_date": "Дата створення",
"crypto_addresses": "Криптоадреси",
"csv_nothing_to_export": "Nothing to export",
"current_swap": "Поточний своп",
"current_wallet": "Поточний гаманець",
@@ -301,6 +307,7 @@
"default_sell_provider": "Провайдер продажу за замовчуванням",
"delete": "Видалити",
"delete_account": "Видалити акаунт",
"delete_this_node": "Видалити цей вузол",
"delete_wallet": "Видалити гаманець",
"delete_wallet_confirm_message": "Ви впевнені, що хочете видалити гаманець ${wallet_name}?",
"deleteConnectionConfirmationPrompt": "Ви впевнені, що хочете видалити підключення до",
@@ -330,6 +337,7 @@
"deuro_savings_welcome_description": "dEURO — це повністю децентралізований, колатералізований стейблкоїн, прив’язаний до євро — безпечний, універсальний і стійкий до цензури, без необхідності покладатися на оракули. 1 dEURO = 1 EURO.",
"deuro_tooltip_no_eth": "Щоб увімкнути dEURO, у вашому гаманці має бути ETH.",
"deuro_tx_commited_content": "Підтвердження транзакції та її відображення на екрані може зайняти кілька секунд",
"device_confirmation": "Підтвердження на пристрої",
"device_is_signing": "Пристрій підписує",
"dfx_option_description": "Купуйте криптовалюту за EUR і CHF. Для роздрібних та корпоративних клієнтів у Європі",
"did_you_back_up_seeds": "Ви створили резервні копії всіх своїх сід-фраз?",
@@ -466,6 +474,8 @@
"extracted_address_content": "Ви надсилатимете кошти\n${recipient_name}",
"failed_authentication": "Не вдалося пройти автентифікацію. ${state_error}",
"faq": "FAQ",
"favorite_token": "Улюблений токен",
"favorite_token_desc": "Баланс улюбленого токена відображатиметься на картці балансу.",
"features": "Функції",
"fee": "Комісія",
"fee_less_than_min": "Вибрана комісія менша за мінімальну, будь ласка, збільште комісію, щоб мати змогу надіслати транзакцію",
@@ -491,6 +501,7 @@
"frozen": "Заморожено",
"frozen_balance": "Заморожений баланс",
"full_balance": "Повний баланс",
"gallery": "Галерея",
"gas_exceeds_allowance": "Газ, необхідний для транзакції, перевищує ліміт.",
"gas_price": "Ціна газу",
"general": "Загальні",
@@ -526,10 +537,10 @@
"how_to_connect": "Як підключитися",
"how_to_use": "Як користуватися",
"how_to_use_card": "Як користуватися цією карткою",
"hww_exit_desc": "Це завершить поточний процес сполучення з вашим апаратним пристроєм",
"i_understand": "Я розумію",
"icon_style": "Стиль значка",
"id": "ID: ",
"if_you_dont_see_your_device": "Якщо ви не бачите свій пристрій вище, будь ласка, переконайтеся, що ваш Ledger увімкнений і розблокований!",
"ignor": "Ігнорувати",
"import": "Імпорт",
"importNFTs": "Імпорт NFT",
@@ -541,6 +552,7 @@
"infobox_auto_address": "Ваша адреса для отримання змінюватиметься щоразу, коли ви отримаєте транзакцію",
"infobox_multichain": "Використовуйте цю адресу, щоб отримати будь-який токен або колекційний предмет на",
"infobox_rotation": "Ваша адреса для отримання змінюватиметься щоразу, коли ви закриватимете та знову відкриватимете цей екран",
"input": "Введення",
"inputs": "Входи",
"insufficient_funds_for_tx": "Недостатньо коштів для успішного виконання транзакції.",
"insufficient_lamport_for_tx": "У вас недостатньо SOL, щоб покрити транзакцію та комісію за неї. Будь ласка, додайте до свого гаманця більше SOL або зменшіть суму SOL, яку ви надсилаєте.",
@@ -606,6 +618,7 @@
"manage_pow_nodes": "Керувати PoW-вузлами",
"manage_providers": "Керувати провайдерами",
"manage_yats": "Керувати Yats",
"manual_input": "Ручне введення",
"mark_as_redeemed": "Позначити як використане",
"market_place": "Маркетплейс",
"mask": "Маска",
@@ -651,6 +664,7 @@
"nanogpt_subtitle": "Усі найновіші моделі (GPT-5.3, Claude 4.6).\nБез підписки, оплата криптовалютою.",
"narrow": "Вузький",
"network": "Мережа",
"networks": "Мережі",
"new_first_wallet_text": "Зберігати вашу криптовалюту в безпеці — простіше простого",
"new_node_testing": "Тестування нового вузла",
"new_subaddress_create": "Створити",
@@ -679,8 +693,10 @@
"node_new": "Новий вузол",
"node_port": "Порт ноди",
"node_reset_settings_title": "Скинути налаштування",
"node_share_desc": "Відскануйте цей QR-код на екрані сканування, щоб імпортувати цей вузол.",
"node_test": "Тест",
"nodes": "Вузли",
"nodes_desc": "Керуйте наявними вузлами або додайте власний.",
"nodes_list_reset_to_default_message": "Ви впевнені, що хочете скинути налаштування до значень за замовчуванням?",
"none_of_selected_providers_can_exchange": "Жоден із вибраних провайдерів не може виконати цей своп",
"noNFTYet": "NFT ще немає",
@@ -690,6 +706,7 @@
"note_tap_to_change": "Примітка (натисніть, щоб змінити)",
"notification_permission_denied": "Дозвіл на сповіщення було назавжди відхилено, будь ласка, увімкніть його вручну в налаштуваннях",
"nullURIError": "URI має значення null",
"ocp_desc": "Розплачуйтеся криптовалютою в магазинах",
"offer_expires_in": "Пропозиція діє ще: ",
"offline": "Офлайн",
"ok": "OK",
@@ -716,8 +733,13 @@
"outputs": "Виходи",
"overshot": "Перевищено",
"overwrite_amount": "Перезаписати суму",
"pairing_code": "Код сполучення",
"pairing_code_desc_1": "Ваш пристрій покаже код сполучення.",
"pairing_code_desc_2": "Введіть його тут, щоб продовжити",
"pairing_error": "Помилка сполучення",
"pairingInvalidEvent": "Недійсна подія спарювання",
"passphrase": "Парольна фраза (необов’язково)",
"passphrase_view_keys": "Парольна фраза",
"passphrases_doesnt_match": "Парольні фрази не збігаються, спробуйте ще раз",
"password": "Пароль",
"paste": "Вставити",
@@ -733,6 +755,7 @@
"payjoin_unavailable_sheet_content": "Для отримання транзакції Payjoin у вас має бути готовий до використання Bitcoin.\n\nЩойно на вашому гаманці з’являться кошти, Payjoin буде автоматично ввімкнено.",
"payjoin_unavailable_sheet_title": "Чому Payjoin недоступний?",
"payment_id": "ID платежу: ",
"payment_invoices": "Платіжні інвойси",
"payment_made_easy": "Платежі стали простішими",
"payment_was_received": "Ваш платіж отримано.",
"payments": "Платежі",
@@ -812,6 +835,7 @@
"receive_to": "Отримати на",
"received": "Отримано",
"receiving": "Отримання",
"recieving": "Отримання",
"recipient_address": "Адреса отримувача",
"reconnect": "Перепідключити",
"reconnect_alert_text": "Ви впевнені, що хочете перепідключитися?",
@@ -888,6 +912,7 @@
"save": "Зберегти",
"save_backup_password": "Будь ласка, переконайтеся, що ви зберегли пароль резервної копії. Без нього ви не зможете імпортувати файли резервної копії.",
"save_backup_password_alert": "Зберегти пароль резервної копії",
"save_contact": "Зберегти контакт",
"save_to_downloads": "Зберегти в «Завантаження»",
"saved_the_trade_id": "Я зберіг ID обміну",
"savings": "Заощадження",
@@ -1037,6 +1062,7 @@
"setup_your_debit_card": "Налаштуйте свою дебетову картку",
"share": "Поділитися",
"share_address": "Поділитися адресою",
"share_this_node": "Поділитися цим вузлом",
"shared_seed_wallet_groups": "Групи гаманців зі спільною seed-фразою",
"shared_seed_wallets": "Гаманці зі спільною сід-фразою",
"show": "Показати",
@@ -1044,6 +1070,7 @@
"show_balance": "Натисніть і утримуйте, щоб показати баланс",
"show_balance_send_page": "Торкніться, щоб показати",
"show_balance_toast": "Натисніть і утримуйте, щоб приховати або показати баланс",
"show_combined_balance": "Показати сукупний баланс",
"show_details": "Показати деталі",
"show_hidden_addresses": "Показати приховані адреси",
"show_keys": "Показати сід/ключі",
@@ -1109,6 +1136,7 @@
"swap_providers": "Провайдери обміну",
"sweeping_wallet": "Змітання гаманця",
"sweeping_wallet_alert": "Це не повинно зайняти багато часу. НЕ ЗАЛИШАЙТЕ ЦЕЙ ЕКРАН, ІНАКШЕ ЗМЕТЕНІ КОШТИ МОЖУТЬ БУТИ ВТРАЧЕНІ.",
"swipe_to_bridge": "Проведіть, щоб перенести між мережами",
"swipe_to_send": "Проведіть, щоб надіслати",
"switch_wallet": "Перемкнути гаманець",
"switchToETHWallet": "Будь ласка, перемкніться на гаманець Ethereum і спробуйте ще раз",
@@ -1149,6 +1177,7 @@
"testnet_coins_no_value": "Тестнет-монети не мають цінності",
"third_intro_content": "Yat існують і поза Cake Wallet. Будь-яку адресу гаманця на землі можна замінити на Yat!",
"third_intro_title": "Yat добре працює з іншими",
"this_can_take_few_seconds": "Це може зайняти кілька секунд",
"this_pair_is_not_supported_warning": "Ця пара не підтримується для вибраної(их) біржі(ж). Будь ласка, виберіть іншу біржу.",
"thorchain_contract_address_not_supported": "THORChain не підтримує надсилання на адресу контракту",
"thorchain_taproot_address_not_supported": "Провайдер ThorChain не підтримує адреси Taproot. Будь ласка, змініть адресу або виберіть іншого провайдера.",
@@ -1162,6 +1191,7 @@
"token_decimal": "Десятковий розряд токена (напр.: USDT)",
"token_name": "Назва токена (напр.: Tether)",
"token_symbol": "Символ токена (напр.: USDT)",
"token_verified_on_jupiter": "Цей токен перевірено на Jupiter",
"tokenID": "ID",
"tokens": "Токени",
"tokens_strong_warning": "Ніколи не надсилайте токени на цю адресу!",
@@ -1290,6 +1320,7 @@
"username": "Ім’я користувача",
"username_available": "Ім'я користувача доступне",
"username_character_error": "Імена користувачів повинні містити лише",
"username_check_your_network": "Не вдалося перевірити ім’я користувача. Будь ласка, перевірте підключення до мережі.",
"username_length_error": "Ім'я користувача має містити 6–32 буквено-цифрові символи.",
"username_length_error_1_64": "Імена користувачів мають містити 1–64 буквено-цифрових символів.",
"username_not_available": "Це ім’я користувача недоступне.",
@@ -1300,6 +1331,7 @@
"verify_message": "Перевірити повідомлення",
"verify_seed": "Перевірте сід-фразу",
"verify_with_2fa": "Підтвердьте за допомогою Cake 2FA",
"verifying_code": "Перевірка коду",
"version": "Версія ${currentVersion}",
"view_all": "Переглянути всі",
"view_in_block_explorer": "Переглянути в Block Explorer",
@@ -1311,6 +1343,7 @@
"waitFewSecondForTxUpdate": "Будь ласка, зачекайте кілька секунд, поки транзакція з’явиться в історії транзакцій",
"wallet": "Гаманець",
"wallet_accounts": "Облікові записи гаманця",
"wallet_balance": "Баланс гаманця",
"wallet_group": "Група гаманців",
"wallet_group_description_existing_seed": "Ви вирішили використати наявну сід-фразу для цього гаманця. Ви можете ще раз перевірити сід-фразу, якщо потрібно підтвердити її або записати.",
"wallet_group_description_four": "щоб створити гаманець із повністю новою сід-фразою.",
@@ -1348,9 +1381,11 @@
"walletConnect": "WalletConnect",
"wallets": "Гаманці",
"warning": "Попередження",
"wc_action_approve": "Схвалити",
"wc_approve_request_title": "Підтвердити запит",
"wc_connect_request_title": "Запит на підключення",
"wc_connected_to": "Підключено до ${name}",
"wc_desc": "Легко підключайтеся до dApp",
"wc_max_network_fee": "Максимальна мережева плата",
"wc_message_to_sign": "Повідомлення для підпису",
"wc_network_fee": "Плата за мережу",
@@ -1401,6 +1436,7 @@
"yat_popup_content": "Тепер ви можете надсилати й отримувати криптовалюту в Cake Wallet за допомогою Yat — короткого імені користувача на основі емодзі. Керуйте Yat у будь-який час на екрані налаштувань",
"yat_popup_title": "Адресу вашого гаманця можна перетворити на емодзі.",
"yes": "Так",
"yes_exit": "Так. Вийти",
"yesterday": "Вчора",
"you_now_have_debit_card": "Тепер у вас є дебетова картка",
"you_pay": "Ви платите",
@@ -1452,4 +1488,4 @@
"wc_action_approve": "Схвалити",
"wc_desc": "Легко підключайтеся до dApp",
"yes_exit": "Так. Вийти"
}
}

Some files were not shown because too many files have changed in this diff Show More