mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-10-26 06:08:40 +01:00
feat: Add memo support for swap (#3229)
* feat: Add memo support for swap * fix: Error on swap page select receiver bottomsheet when picking receiveing currency that's not a wallet type * feat: exclude providers that do not support memo when receive currency needs it, also show passed memo in confirmation and trade history sheets * fix: overflow for destination tag on swap confirmation * Update lib/view_model/exchange/exchange_view_model.dart [skip ci] * Update lib/exchange/provider/trocador_exchange_provider.dart [skip ci] --------- Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
This commit is contained in:
co-authored by
Omar Hatem
parent
d10f2f2a60
commit
1d652c76aa
@@ -0,0 +1,13 @@
|
||||
import 'package:cw_core/crypto_currency.dart';
|
||||
|
||||
enum MemoLabelType { destinationTag, memo }
|
||||
|
||||
const Map<CryptoCurrency, MemoLabelType> _currenciesRequiringMemo = {
|
||||
CryptoCurrency.xrp: MemoLabelType.destinationTag,
|
||||
CryptoCurrency.xlm: MemoLabelType.memo,
|
||||
CryptoCurrency.ton: MemoLabelType.memo,
|
||||
CryptoCurrency.eos: MemoLabelType.memo,
|
||||
CryptoCurrency.hbar: MemoLabelType.memo,
|
||||
};
|
||||
|
||||
MemoLabelType? memoLabelTypeFor(CryptoCurrency currency) => _currenciesRequiringMemo[currency];
|
||||
@@ -41,7 +41,7 @@ Future<void> initDb({String? pathOverride}) async {
|
||||
}
|
||||
}
|
||||
await db?.close();
|
||||
db = await openDatabase(dbFile.path, version: 6,
|
||||
db = await openDatabase(dbFile.path, version: 7,
|
||||
onUpgrade: (Database db, int oldVersion, int newVersion) async {
|
||||
printV("migrating: $oldVersion, $newVersion");
|
||||
if (oldVersion <= 1) {
|
||||
@@ -96,6 +96,14 @@ CREATE TABLE IF NOT EXISTS BalanceCardStyleSettings (
|
||||
if (oldVersion <= 5) {
|
||||
await _createTradeTable(db);
|
||||
}
|
||||
if (oldVersion <= 6) {
|
||||
await _addColumnIfNotExists(
|
||||
db,
|
||||
table: 'Trade',
|
||||
column: 'toAddressExtraId',
|
||||
definition: 'TEXT',
|
||||
);
|
||||
}
|
||||
},
|
||||
onCreate: (Database db, int version) async {
|
||||
await db.execute(
|
||||
@@ -234,6 +242,7 @@ CREATE TABLE IF NOT EXISTS Trade (
|
||||
refundAddress TEXT,
|
||||
walletId TEXT,
|
||||
payoutAddress TEXT,
|
||||
toAddressExtraId TEXT,
|
||||
password TEXT,
|
||||
providerId TEXT,
|
||||
providerName TEXT,
|
||||
|
||||
@@ -51,6 +51,9 @@ class ChainflipExchangeProvider extends ExchangeProvider {
|
||||
@override
|
||||
bool get supportsFixedRate => false;
|
||||
|
||||
@override
|
||||
bool get supportsMemoOrDestinationTag => false;
|
||||
|
||||
@override
|
||||
ExchangeProviderDescription get description =>
|
||||
ExchangeProviderDescription.chainflip;
|
||||
|
||||
@@ -189,6 +189,7 @@ class ChangeNowExchangeProvider extends ExchangeProvider {
|
||||
if (!isFixedRateMode) 'fromAmount': request.fromAmount,
|
||||
if (isFixedRateMode) 'toAmount': request.toAmount,
|
||||
'address': request.toAddress,
|
||||
if (request.toAddressExtraId.isNotEmpty) 'extraId': request.toAddressExtraId,
|
||||
'flow': _getFlow(isFixedRateMode),
|
||||
'type': type,
|
||||
'refundAddress': request.refundAddress,
|
||||
@@ -248,6 +249,7 @@ class ChangeNowExchangeProvider extends ExchangeProvider {
|
||||
state: TradeState.created,
|
||||
payoutAddress: payoutAddress,
|
||||
isSendAll: isSendAll,
|
||||
toAddressExtraId: request.toAddressExtraId,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -19,6 +19,8 @@ abstract class ExchangeProvider {
|
||||
|
||||
bool get supportsOnionAddress => false;
|
||||
|
||||
bool get supportsMemoOrDestinationTag => true;
|
||||
|
||||
@override
|
||||
String toString() => title;
|
||||
|
||||
|
||||
@@ -198,6 +198,8 @@ class ExolixExchangeProvider extends ExchangeProvider {
|
||||
'networkFrom': _networkFor(request.fromCurrency),
|
||||
'networkTo': _networkFor(request.toCurrency),
|
||||
'withdrawalAddress': await _normalizeAddress(request.toAddress),
|
||||
if (request.toAddressExtraId.isNotEmpty)
|
||||
'withdrawalExtraId': request.toAddressExtraId,
|
||||
'refundAddress': await _normalizeAddress(request.refundAddress),
|
||||
'rateType': _getRateType(isFixedRateMode),
|
||||
'apiToken': apiKey,
|
||||
@@ -315,6 +317,7 @@ class ExolixExchangeProvider extends ExchangeProvider {
|
||||
state: TradeState.created,
|
||||
payoutAddress: payoutAddress,
|
||||
isSendAll: isSendAll,
|
||||
toAddressExtraId: request.toAddressExtraId,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -41,6 +41,9 @@ class JupiterExchangeProvider extends ExchangeProvider {
|
||||
@override
|
||||
bool get supportsFixedRate => false; // Jupiter doesn't support fixed rate
|
||||
|
||||
@override
|
||||
bool get supportsMemoOrDestinationTag => false;
|
||||
|
||||
@override
|
||||
ExchangeProviderDescription get description => ExchangeProviderDescription.jupiter;
|
||||
|
||||
|
||||
@@ -174,7 +174,7 @@ class LetsExchangeExchangeProvider extends ExchangeProvider {
|
||||
if (!isFixedRateMode) 'deposit_amount': request.fromAmount.toString(),
|
||||
'withdrawal': withdrawalAddress,
|
||||
if (isFixedRateMode) 'withdrawal_amount': request.toAmount.toString(),
|
||||
'withdrawal_extra_id': '',
|
||||
'withdrawal_extra_id': request.toAddressExtraId,
|
||||
'return': returnAddress,
|
||||
'rate_id': rateId,
|
||||
if (networkFrom != null) 'network_from': networkFrom,
|
||||
@@ -302,6 +302,7 @@ class LetsExchangeExchangeProvider extends ExchangeProvider {
|
||||
expiredAt: expiredAt,
|
||||
extraId: extraId,
|
||||
isSendAll: isSendAll,
|
||||
toAddressExtraId: request.toAddressExtraId,
|
||||
);
|
||||
} catch (e, s) {
|
||||
ExchangeProviderLogger.logError(
|
||||
|
||||
@@ -88,6 +88,9 @@ class NearIntentsExchangeProvider extends ExchangeProvider {
|
||||
@override
|
||||
bool get supportsFixedRate => true;
|
||||
|
||||
@override
|
||||
bool get supportsMemoOrDestinationTag => false;
|
||||
|
||||
@override
|
||||
ExchangeProviderDescription get description =>
|
||||
ExchangeProviderDescription.nearIntents;
|
||||
|
||||
@@ -216,6 +216,7 @@ class SideShiftExchangeProvider extends ExchangeProvider {
|
||||
final body = {
|
||||
'affiliateId': affiliateId,
|
||||
'settleAddress': request.toAddress,
|
||||
if (request.toAddressExtraId.isNotEmpty) 'settleMemo': request.toAddressExtraId,
|
||||
'refundAddress': request.refundAddress,
|
||||
};
|
||||
|
||||
@@ -336,6 +337,7 @@ class SideShiftExchangeProvider extends ExchangeProvider {
|
||||
createdAt: DateTime.now(),
|
||||
isSendAll: isSendAll,
|
||||
extraId: depositMemo,
|
||||
toAddressExtraId: request.toAddressExtraId,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -180,7 +180,8 @@ class SimpleSwapExchangeProvider extends ExchangeProvider {
|
||||
"amount": request.fromAmount,
|
||||
"fixed": isFixedRateMode,
|
||||
"user_refund_address": _normalizeAddress(request.refundAddress),
|
||||
"address_to": _normalizeAddress(request.toAddress)
|
||||
"address_to": _normalizeAddress(request.toAddress),
|
||||
if (request.toAddressExtraId.isNotEmpty) "extra_id_to": request.toAddressExtraId,
|
||||
};
|
||||
final uri = Uri.https(apiAuthority, createExchangePath, params);
|
||||
|
||||
@@ -289,6 +290,7 @@ class SimpleSwapExchangeProvider extends ExchangeProvider {
|
||||
payoutAddress: payoutAddress,
|
||||
createdAt: DateTime.now(),
|
||||
isSendAll: isSendAll,
|
||||
toAddressExtraId: request.toAddressExtraId,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -186,6 +186,7 @@ class StealthExExchangeProvider extends ExchangeProvider {
|
||||
'amount':
|
||||
isFixedRateMode ? double.parse(request.toAmount) : double.parse(request.fromAmount),
|
||||
'address': _normalizeAddress(request.toAddress),
|
||||
if (request.toAddressExtraId.isNotEmpty) 'extra_id': request.toAddressExtraId,
|
||||
'refund_address': _normalizeAddress(request.refundAddress),
|
||||
'additional_fee_percent': _additionalFeePercent,
|
||||
};
|
||||
@@ -299,6 +300,7 @@ class StealthExExchangeProvider extends ExchangeProvider {
|
||||
expiredAt: expiredAt,
|
||||
extraId: extraId,
|
||||
isSendAll: isSendAll,
|
||||
toAddressExtraId: request.toAddressExtraId,
|
||||
);
|
||||
} catch (e, s) {
|
||||
ExchangeProviderLogger.logError(
|
||||
|
||||
@@ -54,6 +54,9 @@ class SwapsXyzExchangeProvider extends ExchangeProvider {
|
||||
@override
|
||||
bool get supportsFixedRate => false;
|
||||
|
||||
@override
|
||||
bool get supportsMemoOrDestinationTag => false;
|
||||
|
||||
@override
|
||||
ExchangeProviderDescription get description =>
|
||||
ExchangeProviderDescription.swapsXyz;
|
||||
|
||||
@@ -37,6 +37,9 @@ class SwapTradeExchangeProvider extends ExchangeProvider {
|
||||
@override
|
||||
bool get supportsFixedRate => false;
|
||||
|
||||
@override
|
||||
bool get supportsMemoOrDestinationTag => false;
|
||||
|
||||
@override
|
||||
ExchangeProviderDescription get description => ExchangeProviderDescription.swapTrade;
|
||||
|
||||
|
||||
@@ -36,6 +36,9 @@ class ThorChainExchangeProvider extends ExchangeProvider {
|
||||
@override
|
||||
bool get supportsFixedRate => false;
|
||||
|
||||
@override
|
||||
bool get supportsMemoOrDestinationTag => false;
|
||||
|
||||
@override
|
||||
ExchangeProviderDescription get description => ExchangeProviderDescription.thorChain;
|
||||
|
||||
|
||||
@@ -235,6 +235,7 @@ class TrocadorExchangeProvider extends ExchangeProvider {
|
||||
if (!isFixedRateMode) 'amount_from': request.fromAmount,
|
||||
if (isFixedRateMode) 'amount_to': request.toAmount,
|
||||
'address': request.toAddress,
|
||||
if (request.toAddressExtraId.isNotEmpty) 'address_memo': request.toAddressExtraId,
|
||||
'refund': request.refundAddress,
|
||||
'refund_memo': '0',
|
||||
};
|
||||
@@ -392,6 +393,7 @@ class TrocadorExchangeProvider extends ExchangeProvider {
|
||||
payoutAddress: payoutAddress,
|
||||
isSendAll: isSendAll,
|
||||
extraId: addressProviderMemo,
|
||||
toAddressExtraId: request.toAddressExtraId,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -321,6 +321,7 @@ class XOSwapExchangeProvider extends ExchangeProvider {
|
||||
'fromAddress': request.refundAddress,
|
||||
'toAmount': request.toAmount,
|
||||
'toAddress': request.toAddress,
|
||||
if (request.toAddressExtraId.isNotEmpty) 'toAddressTag': request.toAddressExtraId,
|
||||
'pairId': pairId,
|
||||
};
|
||||
|
||||
@@ -424,6 +425,7 @@ class XOSwapExchangeProvider extends ExchangeProvider {
|
||||
payoutAddress: payoutAddress,
|
||||
extraId: extraId,
|
||||
isSendAll: isSendAll,
|
||||
toAddressExtraId: request.toAddressExtraId,
|
||||
);
|
||||
} catch (e, s) {
|
||||
ExchangeProviderLogger.logError(
|
||||
|
||||
@@ -27,6 +27,7 @@ class Trade {
|
||||
this.refundAddress,
|
||||
this.walletId,
|
||||
this.payoutAddress,
|
||||
this.toAddressExtraId,
|
||||
this.password,
|
||||
this.providerId,
|
||||
this.providerName,
|
||||
@@ -86,6 +87,9 @@ class Trade {
|
||||
String? refundAddress;
|
||||
String? walletId;
|
||||
String? payoutAddress;
|
||||
|
||||
// holds the receive address memo or destination tag that was passed for this trade
|
||||
String? toAddressExtraId;
|
||||
String? password;
|
||||
String? providerId;
|
||||
String? providerName;
|
||||
@@ -221,6 +225,7 @@ class Trade {
|
||||
'refundAddress': refundAddress,
|
||||
'walletId': walletId,
|
||||
'payoutAddress': payoutAddress,
|
||||
'toAddressExtraId': toAddressExtraId,
|
||||
'password': password,
|
||||
'providerId': providerId,
|
||||
'providerName': providerName,
|
||||
@@ -264,6 +269,7 @@ class Trade {
|
||||
refundAddress: row['refundAddress'] as String?,
|
||||
walletId: row['walletId'] as String?,
|
||||
payoutAddress: row['payoutAddress'] as String?,
|
||||
toAddressExtraId: row['toAddressExtraId'] as String?,
|
||||
password: row['password'] as String?,
|
||||
providerId: row['providerId'] as String?,
|
||||
providerName: row['providerName'] as String?,
|
||||
|
||||
@@ -8,6 +8,7 @@ class TradeRequest {
|
||||
required this.refundAddress,
|
||||
required this.fromAmount,
|
||||
this.toAmount = '',
|
||||
this.toAddressExtraId = '',
|
||||
this.isFixedRate = false});
|
||||
|
||||
final CryptoCurrency fromCurrency;
|
||||
@@ -16,5 +17,6 @@ class TradeRequest {
|
||||
final String refundAddress;
|
||||
final String fromAmount;
|
||||
final String toAmount;
|
||||
final String toAddressExtraId;
|
||||
final bool isFixedRate;
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ 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/receive_page/receive_top_bar.dart';
|
||||
import 'package:cake_wallet/new-ui/widgets/send_page/fiat_amount_bar.dart';
|
||||
import 'package:cake_wallet/new-ui/widgets/send_page/send_memo_input.dart';
|
||||
import 'package:cake_wallet/new-ui/widgets/send_page/send_syncing_indicator.dart';
|
||||
import 'package:cake_wallet/new-ui/widgets/swap_page/provider_selector_page.dart';
|
||||
import 'package:cake_wallet/new-ui/widgets/swap_page/refund_address_modal.dart';
|
||||
@@ -37,6 +38,7 @@ import 'package:cake_wallet/view_model/exchange/exchange_trade_view_model.dart';
|
||||
import 'package:cake_wallet/view_model/exchange/exchange_view_model.dart';
|
||||
import 'package:cake_wallet/view_model/wallet_switcher_view_model.dart';
|
||||
import 'package:cw_core/crypto_currency.dart';
|
||||
import 'package:cw_core/currencies_with_memo.dart';
|
||||
import 'package:cw_core/currency.dart';
|
||||
import 'package:cw_core/sync_status.dart';
|
||||
import 'package:cw_core/utils/print_verbose.dart';
|
||||
@@ -837,12 +839,43 @@ class SwapAmountBoxState extends State<SwapAmountBox> {
|
||||
final amountController = TextEditingController();
|
||||
final fiatAmountController = TextEditingController();
|
||||
final amountFocusNode = FocusNode();
|
||||
final memoController = TextEditingController();
|
||||
ReactionDisposer? _memoReactionDisposer;
|
||||
VoidCallback? _memoListener;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
_selectedCurrency = widget.initialCurrency;
|
||||
|
||||
super.initState();
|
||||
|
||||
if (widget.isReceiverCard) {
|
||||
memoController.text = widget.exchangeViewModel.receiveAddressExtraId;
|
||||
|
||||
_memoListener = () {
|
||||
if (widget.exchangeViewModel.receiveAddressExtraId != memoController.text) {
|
||||
widget.exchangeViewModel.receiveAddressExtraId = memoController.text;
|
||||
}
|
||||
};
|
||||
memoController.addListener(_memoListener!);
|
||||
|
||||
_memoReactionDisposer =
|
||||
reaction((_) => widget.exchangeViewModel.receiveAddressExtraId, (String value) {
|
||||
if (memoController.text != value) {
|
||||
memoController.text = value;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
if (_memoListener != null) {
|
||||
memoController.removeListener(_memoListener!);
|
||||
}
|
||||
_memoReactionDisposer?.call();
|
||||
memoController.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
late Currency _selectedCurrency;
|
||||
@@ -1128,7 +1161,29 @@ class SwapAmountBoxState extends State<SwapAmountBox> {
|
||||
],
|
||||
);
|
||||
},
|
||||
)
|
||||
),
|
||||
if (widget.isReceiverCard)
|
||||
Observer(builder: (_) {
|
||||
final selected = widget.exchangeViewModel.receiveCurrency;
|
||||
final labelType = memoLabelTypeFor(selected);
|
||||
if (labelType == null) return const SizedBox.shrink();
|
||||
|
||||
final isDestinationTag = labelType == MemoLabelType.destinationTag;
|
||||
final hint = isDestinationTag
|
||||
? S.of(context).destination_tag_optional
|
||||
: S.of(context).memo_optional;
|
||||
final disclaimer = isDestinationTag
|
||||
? S.of(context).destination_tag_swap_disclaimer
|
||||
: S.of(context).memo_swap_disclaimer;
|
||||
|
||||
return NewSendMemoInput(
|
||||
memoController: memoController,
|
||||
maxMemoLength: isDestinationTag ? 20 : 256,
|
||||
memoLength: memoController.text.length,
|
||||
hintText: hint,
|
||||
disclaimerText: disclaimer,
|
||||
);
|
||||
}),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
@@ -8,11 +8,15 @@ class NewSendMemoInput extends StatelessWidget {
|
||||
{super.key,
|
||||
required this.memoController,
|
||||
required this.maxMemoLength,
|
||||
required this.memoLength});
|
||||
required this.memoLength,
|
||||
this.hintText,
|
||||
this.disclaimerText});
|
||||
|
||||
final TextEditingController memoController;
|
||||
final int maxMemoLength;
|
||||
final int memoLength;
|
||||
final String? hintText;
|
||||
final String? disclaimerText;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@@ -30,8 +34,8 @@ class NewSendMemoInput extends StatelessWidget {
|
||||
child: TextField(
|
||||
maxLength: maxMemoLength,
|
||||
controller: memoController,
|
||||
decoration:
|
||||
InputDecoration(hintText: S.of(context).memo_optional, counterText: ""),
|
||||
decoration: InputDecoration(
|
||||
hintText: hintText ?? S.of(context).memo_optional, counterText: ""),
|
||||
),
|
||||
),
|
||||
SizedBox(width: 12),
|
||||
@@ -52,9 +56,12 @@ class NewSendMemoInput extends StatelessWidget {
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text(S.of(context).memo_disclaimer,
|
||||
style: TextStyle(
|
||||
fontSize: 12, color: Theme.of(context).colorScheme.onSurfaceVariant)),
|
||||
Expanded(
|
||||
child: Text(disclaimerText ?? S.of(context).memo_disclaimer,
|
||||
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))
|
||||
],
|
||||
|
||||
@@ -14,6 +14,7 @@ import 'package:cake_wallet/src/widgets/new_list_row/new_list_section.dart';
|
||||
import 'package:cake_wallet/view_model/exchange/exchange_trade_view_model.dart';
|
||||
import 'package:cake_wallet/view_model/exchange/exchange_view_model.dart';
|
||||
import 'package:cake_wallet/view_model/send/send_view_model_state.dart';
|
||||
import 'package:cw_core/currencies_with_memo.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_mobx/flutter_mobx.dart';
|
||||
@@ -191,7 +192,19 @@ class SwapTransactionDetails extends StatelessWidget {
|
||||
showArrow: false,
|
||||
trailingText: exchangeViewModel.receiveAddressDisplayName ??
|
||||
middleTruncate(
|
||||
exchangeTradeViewModel.trade.payoutAddress ?? "", 8, 8))
|
||||
exchangeTradeViewModel.trade.payoutAddress ?? "", 8, 8)),
|
||||
if ((exchangeTradeViewModel.trade.toAddressExtraId ?? '').isNotEmpty)
|
||||
ListItemRegularRow(
|
||||
keyValue: "receive memo",
|
||||
showArrow: false,
|
||||
label: memoLabelTypeFor(exchangeViewModel.receiveCurrency) ==
|
||||
MemoLabelType.destinationTag
|
||||
? S.of(context).destination_tag
|
||||
: S.of(context).memo,
|
||||
trailingText: middleTruncate(
|
||||
exchangeTradeViewModel.trade.toAddressExtraId ?? "", 8, 8),
|
||||
copyableText: exchangeTradeViewModel.trade.toAddressExtraId,
|
||||
),
|
||||
],
|
||||
"${S.of(context).swap_id} (${S.of(context).tap_to_copy})": [
|
||||
ListItemRegularRow(
|
||||
|
||||
@@ -57,6 +57,7 @@ import 'package:cake_wallet/view_model/send/fees_view_model.dart';
|
||||
import 'package:cake_wallet/view_model/unspent_coins/unspent_coins_list_view_model.dart';
|
||||
import 'package:cw_core/crypto_amount_format.dart';
|
||||
import 'package:cw_core/crypto_currency.dart';
|
||||
import 'package:cw_core/currencies_with_memo.dart';
|
||||
import 'package:cw_core/erc20_token.dart';
|
||||
import 'package:cw_core/spl_token.dart';
|
||||
import 'package:cw_core/sync_status.dart';
|
||||
@@ -124,12 +125,7 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
|
||||
_useTorOnly = _settingsStore.exchangeStatus == ExchangeApiMode.torOnly;
|
||||
_setProviders();
|
||||
const excludeDepositCurrencies = [CryptoCurrency.btt];
|
||||
const excludeReceiveCurrencies = [
|
||||
CryptoCurrency.xlm,
|
||||
CryptoCurrency.xrp,
|
||||
CryptoCurrency.bnb,
|
||||
CryptoCurrency.btt
|
||||
];
|
||||
const excludeReceiveCurrencies = [CryptoCurrency.btt];
|
||||
_initialPairBasedOnWallet();
|
||||
|
||||
unspentCoinsListViewModel.initialSetup().then((_) {
|
||||
@@ -391,6 +387,9 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
|
||||
@observable
|
||||
String receiveAddress;
|
||||
|
||||
@observable
|
||||
String receiveAddressExtraId = '';
|
||||
|
||||
@observable
|
||||
String? receiveAddressDisplayName;
|
||||
|
||||
@@ -436,13 +435,18 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
|
||||
|
||||
@computed
|
||||
Future<List<WalletInfo>> get receiveWallets async {
|
||||
WalletType? type;
|
||||
type = cryptoCurrencyOrTokenToWalletType(receiveCurrency);
|
||||
if (type == null) {
|
||||
type = cryptoCurrencyOrTokenToWalletType(CryptoCurrency.fromString(receiveCurrency.tag ?? ""));
|
||||
}
|
||||
try {
|
||||
WalletType? type;
|
||||
type = cryptoCurrencyOrTokenToWalletType(receiveCurrency);
|
||||
if (type == null) {
|
||||
type =
|
||||
cryptoCurrencyOrTokenToWalletType(CryptoCurrency.fromString(receiveCurrency.tag ?? ""));
|
||||
}
|
||||
|
||||
return await WalletInfo.selectList("type = ?", [type!.index]);
|
||||
return await WalletInfo.selectList("type = ?", [type!.index]);
|
||||
} catch (e) {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
Future<List<WalletInfoAddressInfo>> addressesForAccountsWallet(WalletInfo wallet) async {
|
||||
@@ -761,6 +765,9 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
|
||||
currency == receiveCurrency)) {
|
||||
receiveAddress = "";
|
||||
}
|
||||
if (currency != receiveCurrency) {
|
||||
receiveAddressExtraId = "";
|
||||
}
|
||||
|
||||
receiveCurrency = currency;
|
||||
isFixedRateMode = false;
|
||||
@@ -884,6 +891,9 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
|
||||
(provider.description == ExchangeProviderDescription.swapsXyz ||
|
||||
provider.description == ExchangeProviderDescription.nearIntents);
|
||||
|
||||
bool _excludeProviderForReceiveExtraId(ExchangeProvider provider) =>
|
||||
memoLabelTypeFor(receiveCurrency) != null && !provider.supportsMemoOrDestinationTag;
|
||||
|
||||
Future<void> calculateBestRate() async {
|
||||
if (depositCurrency == receiveCurrency) {
|
||||
bestRate = 0.0;
|
||||
@@ -895,6 +905,7 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
|
||||
|
||||
final validProvidersForAmount = _tradeAvailableProviders.where((provider) {
|
||||
if (_excludeProviderForSwapAll(provider)) return false;
|
||||
if (_excludeProviderForReceiveExtraId(provider)) return false;
|
||||
|
||||
final limits = _providerLimits[provider];
|
||||
|
||||
@@ -972,6 +983,7 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
|
||||
try {
|
||||
final futures = selectedProviders
|
||||
.where((provider) => providerList.contains(provider))
|
||||
.where((provider) => !_excludeProviderForReceiveExtraId(provider))
|
||||
.map((provider) async {
|
||||
final limits = await provider
|
||||
.fetchLimits(
|
||||
@@ -1050,6 +1062,13 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
|
||||
}
|
||||
}
|
||||
|
||||
if (forcedProvider != null && _excludeProviderForReceiveExtraId(forcedProvider!)) {
|
||||
tradeState = TradeIsCreatedFailure(
|
||||
title: S.current.trade_not_created,
|
||||
error: S.current.none_of_selected_providers_can_exchange);
|
||||
return;
|
||||
}
|
||||
|
||||
Map<double, ExchangeProvider> providers;
|
||||
if (forcedProvider != null) {
|
||||
providers = {forcedProviderRate: forcedProvider!};
|
||||
@@ -1138,6 +1157,10 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
|
||||
if (isFixedRateMode && provider.supportsFixedRate == false) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (_excludeProviderForReceiveExtraId(provider)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Skip Swaps.xyz when sending from external
|
||||
if (isSendFromExternal &&
|
||||
@@ -1160,6 +1183,7 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
|
||||
toAmount: _receiveAmount.replaceAll(',', '.'),
|
||||
refundAddress: depositAddress,
|
||||
toAddress: receiveAddress,
|
||||
toAddressExtraId: receiveAddressExtraId.trim(),
|
||||
isFixedRate: isFixedRateMode,
|
||||
);
|
||||
|
||||
@@ -1260,6 +1284,7 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
|
||||
depositCurrency == wallet.currency ? wallet.walletAddresses.addressForExchange : '';
|
||||
receiveAddress =
|
||||
receiveCurrency == wallet.currency ? wallet.walletAddresses.addressForExchange : '';
|
||||
receiveAddressExtraId = '';
|
||||
isDepositAddressEnabled = !(depositCurrency == wallet.currency);
|
||||
isFixedRateMode = false;
|
||||
_onPairChange();
|
||||
|
||||
@@ -26,6 +26,7 @@ import 'package:cake_wallet/src/screens/transaction_details/standart_list_item.d
|
||||
import 'package:cake_wallet/store/app_store.dart';
|
||||
import 'package:cake_wallet/utils/date_formatter.dart';
|
||||
import 'package:cake_wallet/utils/show_bar.dart';
|
||||
import 'package:cw_core/currencies_with_memo.dart';
|
||||
import 'package:cw_core/utils/print_verbose.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:mobx/mobx.dart';
|
||||
@@ -182,6 +183,18 @@ abstract class TradeDetailsViewModelBase with Store {
|
||||
));
|
||||
}
|
||||
|
||||
final destinationMemo = trade.toAddressExtraId;
|
||||
final destinationCurrency = trade.to;
|
||||
if (destinationMemo != null &&
|
||||
destinationMemo.isNotEmpty &&
|
||||
destinationCurrency != null) {
|
||||
final isDestinationTag =
|
||||
memoLabelTypeFor(destinationCurrency) == MemoLabelType.destinationTag;
|
||||
items.add(StandartListItem(
|
||||
title: isDestinationTag ? S.current.destination_tag : S.current.memo,
|
||||
value: destinationMemo));
|
||||
}
|
||||
|
||||
items.add(StandartListItem(
|
||||
title: S.current.trade_details_provider, value: trade.provider.toString()));
|
||||
|
||||
|
||||
@@ -308,6 +308,8 @@
|
||||
"descending": "تنازلي",
|
||||
"description": "الوصف",
|
||||
"destination_tag": "وسم الوجهة:",
|
||||
"destination_tag_optional": "علامة الوجهة (اختياري)",
|
||||
"destination_tag_swap_disclaimer": "مطلوب من قبل المتلقي لإيداع أموالك. العلامة المفقودة أو الخاطئة تعني فقدان الأموال.",
|
||||
"deuro_about_deuro": "حول dEURO",
|
||||
"deuro_collect_interest": "تحصيل",
|
||||
"deuro_reinvest_interest": "إعادة الاستثمار",
|
||||
@@ -616,6 +618,7 @@
|
||||
"memo": "مذكرة",
|
||||
"memo_disclaimer": "ستكون هذه المذكرة مرئية للمستلم",
|
||||
"memo_optional": "مذكرة (اختيارية)",
|
||||
"memo_swap_disclaimer": "مطلوب من قبل المتلقي لإيداع أموالك. المذكرة المفقودة أو الخاطئة تعني فقدان الأموال.",
|
||||
"message": "رسالة",
|
||||
"message_verified": "تم التحقق من الرسالة بنجاح",
|
||||
"messages": "الرسائل",
|
||||
@@ -1374,4 +1377,4 @@
|
||||
"zcash_card_missing_funds": "هل أموالك مفقودة؟",
|
||||
"zcash_card_scan": "مسح",
|
||||
"zcash_card_warning": "لا تُغلق التطبيق حتى يكتمل الإجراء، لأنك إن فعلت ذلك فستحتاج هذه العملية إلى البدء من جديد من البداية."
|
||||
}
|
||||
}
|
||||
@@ -308,6 +308,8 @@
|
||||
"descending": "Низходящо",
|
||||
"description": "Описание",
|
||||
"destination_tag": "Таг на получателя:",
|
||||
"destination_tag_optional": "Етикет за дестинация (по избор)",
|
||||
"destination_tag_swap_disclaimer": "Изисква се от получателя, за да кредитира вашите средства. Липсващ или грешен етикет означава загубени средства.",
|
||||
"deuro_about_deuro": "Относно dEURO",
|
||||
"deuro_collect_interest": "Събери",
|
||||
"deuro_reinvest_interest": "Реинвестирай",
|
||||
@@ -616,6 +618,7 @@
|
||||
"memo": "Мемо",
|
||||
"memo_disclaimer": "Това поле „memo“ ще бъде видимо за получателя",
|
||||
"memo_optional": "Мемо (по избор)",
|
||||
"memo_swap_disclaimer": "Изисква се от получателя, за да кредитира вашите средства. Липсваща или грешна бележка означава загуба на средства.",
|
||||
"message": "Съобщение",
|
||||
"message_verified": "Съобщението беше успешно потвърдено",
|
||||
"messages": "Съобщения",
|
||||
@@ -1374,4 +1377,4 @@
|
||||
"zcash_card_missing_funds": "Липсват средства?",
|
||||
"zcash_card_scan": "Сканирай",
|
||||
"zcash_card_warning": "Не затваряйте приложението, докато процедурата не приключи. Ако го направите, процесът ще трябва да започне отначало."
|
||||
}
|
||||
}
|
||||
@@ -308,6 +308,8 @@
|
||||
"descending": "Sestupně",
|
||||
"description": "Popis",
|
||||
"destination_tag": "Cílový tag:",
|
||||
"destination_tag_optional": "Cílová značka (volitelné)",
|
||||
"destination_tag_swap_disclaimer": "Požadováno příjemcem k připsání vašich prostředků. Chybějící nebo nesprávný štítek znamená ztracené prostředky.",
|
||||
"deuro_about_deuro": "O dEURO",
|
||||
"deuro_collect_interest": "Vybrat",
|
||||
"deuro_reinvest_interest": "Reinvestovat",
|
||||
@@ -616,6 +618,7 @@
|
||||
"memo": "Memo",
|
||||
"memo_disclaimer": "Tato poznámka bude viditelná příjemci",
|
||||
"memo_optional": "Memo (volitelné)",
|
||||
"memo_swap_disclaimer": "Požadováno příjemcem k připsání vašich prostředků. Chybějící nebo nesprávný záznam znamená ztracené finanční prostředky.",
|
||||
"message": "Zpráva",
|
||||
"message_verified": "Zpráva byla úspěšně ověřena",
|
||||
"messages": "Zprávy",
|
||||
@@ -1374,4 +1377,4 @@
|
||||
"zcash_card_missing_funds": "Chybějící prostředky?",
|
||||
"zcash_card_scan": "Skenovat",
|
||||
"zcash_card_warning": "Nezavírejte aplikaci, dokud se postup nedokončí. Pokud tak učiníte, bude nutné tento proces spustit znovu od začátku."
|
||||
}
|
||||
}
|
||||
@@ -308,6 +308,8 @@
|
||||
"descending": "Absteigend",
|
||||
"description": "Beschreibung",
|
||||
"destination_tag": "Ziel-Tag:",
|
||||
"destination_tag_optional": "Ziel-Tag (optional)",
|
||||
"destination_tag_swap_disclaimer": "Wird vom Empfänger benötigt, um Ihr Geld gutzuschreiben. Fehlendes oder falsches Etikett bedeutet verlorenes Geld.",
|
||||
"deuro_about_deuro": "Über dEURO",
|
||||
"deuro_collect_interest": "Einziehen",
|
||||
"deuro_reinvest_interest": "Reinvestieren",
|
||||
@@ -616,6 +618,7 @@
|
||||
"memo": "Memo",
|
||||
"memo_disclaimer": "Dieses Memo wird für den Empfänger sichtbar sein",
|
||||
"memo_optional": "Memo (optional)",
|
||||
"memo_swap_disclaimer": "Wird vom Empfänger benötigt, um Ihr Geld gutzuschreiben. Ein fehlendes oder falsches Memo bedeutet verlorenes Geld.",
|
||||
"message": "Nachricht",
|
||||
"message_verified": "Die Nachricht wurde erfolgreich verifiziert",
|
||||
"messages": "Nachrichten",
|
||||
@@ -1378,4 +1381,4 @@
|
||||
"zcash_card_missing_funds": "Fehlende Gelder?",
|
||||
"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."
|
||||
}
|
||||
}
|
||||
@@ -310,6 +310,8 @@
|
||||
"descending": "Descending",
|
||||
"description": "Description",
|
||||
"destination_tag": "Destination tag:",
|
||||
"destination_tag_optional": "Destination tag (optional)",
|
||||
"destination_tag_swap_disclaimer": "Required by the receiver to credit your funds. Missing or wrong tag means lost funds.",
|
||||
"deuro_about_deuro": "About dEURO",
|
||||
"deuro_collect_interest": "Collect",
|
||||
"deuro_reinvest_interest": "Reinvest",
|
||||
@@ -620,6 +622,7 @@
|
||||
"memo": "Memo",
|
||||
"memo_disclaimer": "This memo will be visible to the receiver",
|
||||
"memo_optional": "Memo (optional)",
|
||||
"memo_swap_disclaimer": "Required by the receiver to credit your funds. Missing or wrong memo means lost funds.",
|
||||
"message": "Message",
|
||||
"message_verified": "The message was successfully verified",
|
||||
"messages": "Messages",
|
||||
|
||||
@@ -308,6 +308,8 @@
|
||||
"descending": "Descendente",
|
||||
"description": "Descripción",
|
||||
"destination_tag": "Etiqueta de destino:",
|
||||
"destination_tag_optional": "Etiqueta de destino (opcional)",
|
||||
"destination_tag_swap_disclaimer": "Requerido por el receptor para acreditar sus fondos. La etiqueta faltante o incorrecta significa fondos perdidos.",
|
||||
"deuro_about_deuro": "Acerca de dEURO",
|
||||
"deuro_collect_interest": "Cobrar",
|
||||
"deuro_reinvest_interest": "Reinvertir",
|
||||
@@ -616,6 +618,7 @@
|
||||
"memo": "Memo",
|
||||
"memo_disclaimer": "Este memo será visible para el destinatario",
|
||||
"memo_optional": "Memo (opcional)",
|
||||
"memo_swap_disclaimer": "Requerido por el receptor para acreditar sus fondos. Una nota faltante o incorrecta significa fondos perdidos.",
|
||||
"message": "Mensaje",
|
||||
"message_verified": "El mensaje se verificó correctamente",
|
||||
"messages": "Mensajes",
|
||||
@@ -1376,4 +1379,4 @@
|
||||
"zcash_card_missing_funds": "¿Faltan fondos?",
|
||||
"zcash_card_scan": "Escanear",
|
||||
"zcash_card_warning": "No cierre la aplicación hasta que se complete el procedimiento; si lo hace, este proceso deberá reiniciarse desde cero."
|
||||
}
|
||||
}
|
||||
@@ -306,6 +306,8 @@
|
||||
"descending": "نزولی",
|
||||
"description": "توضیحات",
|
||||
"destination_tag": "برچسب مقصد:",
|
||||
"destination_tag_optional": "برچسب مقصد (اختیاری)",
|
||||
"destination_tag_swap_disclaimer": "توسط گیرنده برای اعتبار وجوه شما مورد نیاز است. برچسب گم شده یا اشتباه به معنای از دست رفتن وجوه است.",
|
||||
"deuro_about_deuro": "درباره dEURO",
|
||||
"deuro_collect_interest": "دریافت",
|
||||
"deuro_reinvest_interest": "سرمایهگذاری مجدد",
|
||||
@@ -614,6 +616,7 @@
|
||||
"memo": "یادداشت",
|
||||
"memo_disclaimer": "این یادداشت برای گیرنده قابل مشاهده خواهد بود",
|
||||
"memo_optional": "یادداشت (اختیاری)",
|
||||
"memo_swap_disclaimer": "توسط گیرنده برای اعتبار وجوه شما مورد نیاز است. یادداشت گم شده یا اشتباه به معنای از دست رفتن وجوه است.",
|
||||
"message": "پیام",
|
||||
"message_verified": "پیام با موفقیت تأیید شد",
|
||||
"messages": "پیامها",
|
||||
@@ -1371,4 +1374,4 @@
|
||||
"zcash_card_missing_funds": "موجودی گم شده؟",
|
||||
"zcash_card_scan": "اسکن",
|
||||
"zcash_card_warning": "تا زمانی که این فرایند کامل نشده است، برنامه را نبندید؛ در غیر این صورت، این فرایند باید از ابتدا دوباره شروع شود."
|
||||
}
|
||||
}
|
||||
@@ -308,6 +308,8 @@
|
||||
"descending": "Décroissant",
|
||||
"description": "Description",
|
||||
"destination_tag": "Tag de destination :",
|
||||
"destination_tag_optional": "Balise de destination (facultatif)",
|
||||
"destination_tag_swap_disclaimer": "Requis par le destinataire pour créditer vos fonds. Une étiquette manquante ou erronée signifie une perte de fonds.",
|
||||
"deuro_about_deuro": "À propos de dEURO",
|
||||
"deuro_collect_interest": "Collecter",
|
||||
"deuro_reinvest_interest": "Réinvestir",
|
||||
@@ -616,6 +618,7 @@
|
||||
"memo": "Mémo",
|
||||
"memo_disclaimer": "Ce mémo sera visible par le destinataire",
|
||||
"memo_optional": "Mémo (facultatif)",
|
||||
"memo_swap_disclaimer": "Requis par le destinataire pour créditer vos fonds. Un mémo manquant ou erroné signifie une perte de fonds.",
|
||||
"message": "Message",
|
||||
"message_verified": "Le message a été vérifié avec succès",
|
||||
"messages": "Messages",
|
||||
@@ -1374,4 +1377,4 @@
|
||||
"zcash_card_missing_funds": "Fonds manquants ?",
|
||||
"zcash_card_scan": "Scanner",
|
||||
"zcash_card_warning": "Ne fermez pas l'application tant que la procédure n'est pas terminée. Si vous le faites, ce processus devra redémarrer depuis le début."
|
||||
}
|
||||
}
|
||||
@@ -249,6 +249,8 @@
|
||||
"descending": "Oguejy",
|
||||
"description": "Ñemombe’u",
|
||||
"destination_tag": "Teramoĩha hag̃ua:",
|
||||
"destination_tag_optional": "Etiqueta destino rehegua (opcional) .",
|
||||
"destination_tag_swap_disclaimer": "Ojeruréva receptor oacredita haguã nde fondo. Etiqueta ofaltáva térã ojavýva he'ise fondo okañýva.",
|
||||
"dfx_option_description": "Ejogua cripto EUR ha CHF reheve. Oipurukuaa hag̃ua ñemuhára michĩ ha mba’apohaguasu Europape.",
|
||||
"did_you_back_up_seeds": "¿Rejapo raʼe backup opaite nde raʼỹi rehegua?",
|
||||
"didnt_get_code": "¿Nererejapýi kódigo?",
|
||||
@@ -479,6 +481,7 @@
|
||||
"memo": "Mandu’a",
|
||||
"memo_disclaimer": "Ko memo ojehecháta ohupytývape",
|
||||
"memo_optional": "Memo (opcional)",
|
||||
"memo_swap_disclaimer": "Ojeruréva receptor oacredita haguã nde fondo. Memo ofaltáva térã ojavýva he'ise fondo okañýva.",
|
||||
"message": "Marandu",
|
||||
"message_verified": "Pe marandu ojehechajey porã",
|
||||
"methods": "Mba’éichapa",
|
||||
@@ -1113,4 +1116,4 @@
|
||||
"zcash_card_missing_funds": "¿Nde fondo okañy?",
|
||||
"zcash_card_scan": "Escanear",
|
||||
"zcash_card_warning": "Ani remboty pe app pe procedimiento opa hag̃ua, rejapo ramo upéicha ko proceso tekotevẽta oñepyrũ jey cero guive."
|
||||
}
|
||||
}
|
||||
@@ -308,6 +308,8 @@
|
||||
"descending": "Mai saukowa",
|
||||
"description": "Bayanin",
|
||||
"destination_tag": "Alamar makoma:",
|
||||
"destination_tag_optional": "Alamar wuri (na zaɓi)",
|
||||
"destination_tag_swap_disclaimer": "Mai karɓa ya buƙaci ya ba da kuɗin ku. Bacewa ko kuskuren tag yana nufin asarar kuɗi.",
|
||||
"deuro_about_deuro": "Game da dEURO",
|
||||
"deuro_collect_interest": "Karɓa",
|
||||
"deuro_reinvest_interest": "Sake saka",
|
||||
@@ -616,6 +618,7 @@
|
||||
"memo": "Memo",
|
||||
"memo_disclaimer": "Wannan memo zai kasance a bayyane ga mai karɓa",
|
||||
"memo_optional": "Memo (na zaɓi)",
|
||||
"memo_swap_disclaimer": "Mai karɓa ya buƙaci ya ba da kuɗin ku. Memo na ɓace ko kuskure yana nufin asarar kuɗi.",
|
||||
"message": "Saƙo",
|
||||
"message_verified": "An tabbatar da saƙon cikin nasara",
|
||||
"messages": "Saƙonni",
|
||||
@@ -1377,4 +1380,4 @@
|
||||
"zcash_card_missing_funds": "Kuɗi sun ɓace?",
|
||||
"zcash_card_scan": "Duba",
|
||||
"zcash_card_warning": "Kada ku rufe manhajar har sai an kammala aikin; idan kun yi haka, wannan tsari zai buƙaci a sake farawa daga farko."
|
||||
}
|
||||
}
|
||||
@@ -308,6 +308,8 @@
|
||||
"descending": "अवरोही",
|
||||
"description": "विवरण",
|
||||
"destination_tag": "गंतव्य टैग:",
|
||||
"destination_tag_optional": "गंतव्य टैग (वैकल्पिक)",
|
||||
"destination_tag_swap_disclaimer": "प्राप्तकर्ता द्वारा आपके फंड को क्रेडिट करना आवश्यक है। गुम या गलत टैग का अर्थ है खोया हुआ धन।",
|
||||
"deuro_about_deuro": "dEURO के बारे में",
|
||||
"deuro_collect_interest": "एकत्र करें",
|
||||
"deuro_reinvest_interest": "पुनर्निवेश करें",
|
||||
@@ -616,6 +618,7 @@
|
||||
"memo": "मेमो",
|
||||
"memo_disclaimer": "यह मेमो प्राप्तकर्ता को दिखाई देगा",
|
||||
"memo_optional": "मेमो (वैकल्पिक)",
|
||||
"memo_swap_disclaimer": "प्राप्तकर्ता द्वारा आपके फंड को क्रेडिट करना आवश्यक है। मेमो के गुम या गलत होने का अर्थ है धन की हानि।",
|
||||
"message": "संदेश",
|
||||
"message_verified": "संदेश सफलतापूर्वक सत्यापित हो गया",
|
||||
"messages": "संदेश",
|
||||
@@ -733,8 +736,8 @@
|
||||
"payjoin_unavailable_sheet_title": "Payjoin उपलब्ध क्यों नहीं है?",
|
||||
"payment_id": "भुगतान आईडी: ",
|
||||
"payment_made_easy": "भुगतान करना आसान",
|
||||
"Payment_was_received": "आपका भुगतान प्राप्त हो गया था।",
|
||||
"payment_was_received": "आपका भुगतान प्राप्त हो गया।",
|
||||
"Payment_was_received": "आपका भुगतान प्राप्त हो गया था।",
|
||||
"payments": "भुगतान",
|
||||
"pending": " (लंबित)",
|
||||
"percentageOf": "${amount} का",
|
||||
@@ -1376,4 +1379,4 @@
|
||||
"zcash_card_missing_funds": "फंड गायब हैं?",
|
||||
"zcash_card_scan": "स्कैन",
|
||||
"zcash_card_warning": "प्रक्रिया पूरी होने तक ऐप बंद न करें। यदि आप ऐसा करते हैं, तो यह प्रक्रिया शुरू से फिर से शुरू करनी होगी।"
|
||||
}
|
||||
}
|
||||
@@ -308,6 +308,8 @@
|
||||
"descending": "Silazno",
|
||||
"description": "Opis",
|
||||
"destination_tag": "Odredišna oznaka:",
|
||||
"destination_tag_optional": "Oznaka odredišta (nije obavezno)",
|
||||
"destination_tag_swap_disclaimer": "Primatelj zahtijeva da kreditira vaša sredstva. Nedostatak ili pogrešna oznaka znači gubitak sredstava.",
|
||||
"deuro_about_deuro": "O dEURO-u",
|
||||
"deuro_collect_interest": "Preuzmi",
|
||||
"deuro_reinvest_interest": "Reinvestiraj",
|
||||
@@ -616,6 +618,7 @@
|
||||
"memo": "Memo",
|
||||
"memo_disclaimer": "Ova će bilješka biti vidljiva primatelju",
|
||||
"memo_optional": "Memo (nije obavezno)",
|
||||
"memo_swap_disclaimer": "Primatelj zahtijeva da kreditira vaša sredstva. Nedostatak ili pogrešan dopis znači gubitak sredstava.",
|
||||
"message": "Poruka",
|
||||
"message_verified": "Poruka je uspješno verificirana",
|
||||
"messages": "Poruke",
|
||||
@@ -1374,4 +1377,4 @@
|
||||
"zcash_card_missing_funds": "Nedostaju sredstva?",
|
||||
"zcash_card_scan": "Skeniraj",
|
||||
"zcash_card_warning": "Ne zatvarajte aplikaciju dok se postupak ne dovrši; ako to učinite, postupak će se morati ponovno pokrenuti ispočetka."
|
||||
}
|
||||
}
|
||||
@@ -308,6 +308,8 @@
|
||||
"descending": "Նվազման կարգով",
|
||||
"description": "Նկարագրություն",
|
||||
"destination_tag": "Նշանակման թեգը:",
|
||||
"destination_tag_optional": "Նպատակակետի պիտակ (ըստ ցանկության)",
|
||||
"destination_tag_swap_disclaimer": "Ստացողի կողմից պահանջվում է ձեր միջոցները վարկավորելու համար: Բացակայող կամ սխալ պիտակ նշանակում է կորցրած միջոցներ:",
|
||||
"deuro_about_deuro": "dEURO-ի մասին",
|
||||
"deuro_collect_interest": "Հավաքել",
|
||||
"deuro_reinvest_interest": "Վերաներդնել",
|
||||
@@ -616,6 +618,7 @@
|
||||
"memo": "Մեմո",
|
||||
"memo_disclaimer": "Այս հուշագիրը տեսանելի կլինի ստացողին",
|
||||
"memo_optional": "Մեմո (ըստ ցանկության)",
|
||||
"memo_swap_disclaimer": "Ստացողի կողմից պահանջվում է ձեր միջոցները վարկավորելու համար: Հուշագրի բացակայությունը կամ սխալը նշանակում է կորցրած միջոցներ:",
|
||||
"message": "Հաղորդագրություն",
|
||||
"message_verified": "Հաղորդագրությունը հաջողությամբ ստուգվեց",
|
||||
"messages": "Հաղորդագրություններ",
|
||||
@@ -1372,4 +1375,4 @@
|
||||
"zcash_card_missing_funds": "Միջոցները բացակա՞յում են",
|
||||
"zcash_card_scan": "Սկանավորել",
|
||||
"zcash_card_warning": "Մի փակեք հավելվածը մինչև ընթացակարգի ավարտը, քանի որ հակառակ դեպքում այս գործընթացը պետք է վերագործարկվի զրոյից։"
|
||||
}
|
||||
}
|
||||
@@ -308,6 +308,8 @@
|
||||
"descending": "Menurun",
|
||||
"description": "Deskripsi",
|
||||
"destination_tag": "Tag tujuan:",
|
||||
"destination_tag_optional": "Tag tujuan (opsional)",
|
||||
"destination_tag_swap_disclaimer": "Diperlukan oleh penerima untuk mengkreditkan dana Anda. Tag yang hilang atau salah berarti dana hilang.",
|
||||
"deuro_about_deuro": "Tentang dEURO",
|
||||
"deuro_collect_interest": "Kumpulkan",
|
||||
"deuro_reinvest_interest": "Investasikan kembali",
|
||||
@@ -616,6 +618,7 @@
|
||||
"memo": "Memo",
|
||||
"memo_disclaimer": "Memo ini akan terlihat oleh penerima",
|
||||
"memo_optional": "Memo (opsional)",
|
||||
"memo_swap_disclaimer": "Diperlukan oleh penerima untuk mengkreditkan dana Anda. Memo yang hilang atau salah berarti dana hilang.",
|
||||
"message": "Pesan",
|
||||
"message_verified": "Pesan berhasil diverifikasi",
|
||||
"messages": "Pesan",
|
||||
@@ -1377,4 +1380,4 @@
|
||||
"zcash_card_missing_funds": "Dana hilang?",
|
||||
"zcash_card_scan": "Pindai",
|
||||
"zcash_card_warning": "Jangan tutup aplikasi sampai prosedur selesai. Jika Anda melakukannya, proses ini harus dimulai ulang dari awal."
|
||||
}
|
||||
}
|
||||
@@ -308,6 +308,8 @@
|
||||
"descending": "Decrescente",
|
||||
"description": "Descrizione",
|
||||
"destination_tag": "Tag di destinazione:",
|
||||
"destination_tag_optional": "Tag di destinazione (facoltativo)",
|
||||
"destination_tag_swap_disclaimer": "Richiesto dal destinatario per accreditare i tuoi fondi. Tag mancante o sbagliato significa perdita di fondi.",
|
||||
"deuro_about_deuro": "Informazioni su dEURO",
|
||||
"deuro_collect_interest": "Raccogli",
|
||||
"deuro_reinvest_interest": "Reinvesti",
|
||||
@@ -616,6 +618,7 @@
|
||||
"memo": "Memo",
|
||||
"memo_disclaimer": "Questo memo sarà visibile al destinatario",
|
||||
"memo_optional": "Memo (facoltativo)",
|
||||
"memo_swap_disclaimer": "Richiesto dal destinatario per accreditare i tuoi fondi. Una nota mancante o errata significa perdita di fondi.",
|
||||
"message": "Messaggio",
|
||||
"message_verified": "Il messaggio è stato verificato con successo",
|
||||
"messages": "Messaggi",
|
||||
@@ -1376,4 +1379,4 @@
|
||||
"zcash_card_missing_funds": "Fondi mancanti?",
|
||||
"zcash_card_scan": "Scansiona",
|
||||
"zcash_card_warning": "Non chiudere l'app finché la procedura non è completata, altrimenti sarà necessario riavviare il processo da zero."
|
||||
}
|
||||
}
|
||||
@@ -308,6 +308,8 @@
|
||||
"descending": "降順",
|
||||
"description": "説明",
|
||||
"destination_tag": "宛先タグ:",
|
||||
"destination_tag_optional": "宛先タグ (オプション)",
|
||||
"destination_tag_swap_disclaimer": "受取人があなたの資金を入金するために必要とします。タグが欠落しているか間違っていると、資金が失われます。",
|
||||
"deuro_about_deuro": "dEUROについて",
|
||||
"deuro_collect_interest": "受け取る",
|
||||
"deuro_reinvest_interest": "再投資",
|
||||
@@ -617,6 +619,7 @@
|
||||
"memo": "メモ",
|
||||
"memo_disclaimer": "このメモは受取人に表示されます",
|
||||
"memo_optional": "メモ(任意)",
|
||||
"memo_swap_disclaimer": "受取人があなたの資金を入金するために必要とします。メモの紛失または間違ったメモは資金の損失を意味します。",
|
||||
"message": "メッセージ",
|
||||
"message_verified": "メッセージは正常に検証されました",
|
||||
"messages": "メッセージ",
|
||||
@@ -1374,4 +1377,4 @@
|
||||
"zcash_card_missing_funds": "資金が見当たりませんか?",
|
||||
"zcash_card_scan": "スキャン",
|
||||
"zcash_card_warning": "手順が完了するまでアプリを閉じないでください。閉じると、このプロセスを最初からやり直す必要があります。"
|
||||
}
|
||||
}
|
||||
@@ -308,6 +308,8 @@
|
||||
"descending": "내림차순",
|
||||
"description": "설명",
|
||||
"destination_tag": "목적지 태그:",
|
||||
"destination_tag_optional": "대상 태그(선택사항)",
|
||||
"destination_tag_swap_disclaimer": "귀하의 자금을 입금하기 위해 수신자가 필요합니다. 태그가 없거나 잘못된 경우 자금 손실이 발생합니다.",
|
||||
"deuro_about_deuro": "dEURO 소개",
|
||||
"deuro_collect_interest": "수령",
|
||||
"deuro_reinvest_interest": "재투자",
|
||||
@@ -616,6 +618,7 @@
|
||||
"memo": "메모",
|
||||
"memo_disclaimer": "이 메모는 수신자에게 표시됩니다.",
|
||||
"memo_optional": "메모(선택)",
|
||||
"memo_swap_disclaimer": "귀하의 자금을 입금하기 위해 수신자가 필요합니다. 누락되거나 잘못된 메모는 자금 손실을 의미합니다.",
|
||||
"message": "메시지",
|
||||
"message_verified": "메시지가 성공적으로 검증되었습니다",
|
||||
"messages": "메시지",
|
||||
@@ -1374,4 +1377,4 @@
|
||||
"zcash_card_missing_funds": "자금이 사라졌나요?",
|
||||
"zcash_card_scan": "스캔",
|
||||
"zcash_card_warning": "절차가 완료될 때까지 앱을 닫지 마십시오. 닫으면 이 과정을 처음부터 다시 시작해야 합니다."
|
||||
}
|
||||
}
|
||||
@@ -308,6 +308,8 @@
|
||||
"descending": "အနိမ့်မှအမြင့်သို့",
|
||||
"description": "ဖော်ပြချက်",
|
||||
"destination_tag": "ဦးတည်ရာ Tag:",
|
||||
"destination_tag_optional": "ဦးတည်ရာတဂ် (ချန်လှပ်ထားနိုင်သည်)",
|
||||
"destination_tag_swap_disclaimer": "သင့်ရန်ပုံငွေများကို အကြွေးတင်ရန်အတွက် လက်ခံသူမှ လိုအပ်ပါသည်။ ပျောက်ဆုံးနေသော သို့မဟုတ် မှားယွင်းသော tag ဆိုသည်မှာ ဆုံးရှုံးသွားသော ရန်ပုံငွေများကို ဆိုလိုသည်။",
|
||||
"deuro_about_deuro": "dEURO အကြောင်း",
|
||||
"deuro_collect_interest": "ရယူ",
|
||||
"deuro_reinvest_interest": "ပြန်လည်ရင်းနှီးမြှုပ်နှံရန်",
|
||||
@@ -616,6 +618,7 @@
|
||||
"memo": "မှတ်စု",
|
||||
"memo_disclaimer": "ဤ memo ကို လက်ခံသူက မြင်နိုင်ပါမည်။",
|
||||
"memo_optional": "Memo (ရွေးချယ်နိုင်သည်)",
|
||||
"memo_swap_disclaimer": "သင့်ရန်ပုံငွေများကို အကြွေးတင်ရန်အတွက် လက်ခံသူမှ လိုအပ်ပါသည်။ မှတ်စုတို ပျောက်ဆုံးခြင်း သို့မဟုတ် မှားယွင်းခြင်းဆိုသည်မှာ ဆုံးရှုံးသွားသော ရန်ပုံငွေများကို ဆိုလိုသည်။",
|
||||
"message": "မက်ဆေ့ချ်",
|
||||
"message_verified": "မက်ဆေ့ချ်ကို အောင်မြင်စွာ အတည်ပြုပြီးပါပြီ",
|
||||
"messages": "မက်ဆေ့ချ်များ",
|
||||
@@ -1373,4 +1376,4 @@
|
||||
"zcash_card_missing_funds": "ငွေကြေး ပျောက်ဆုံးနေပါသလား?",
|
||||
"zcash_card_scan": "စကင်",
|
||||
"zcash_card_warning": "လုပ်ငန်းစဉ် ပြီးဆုံးသည်အထိ အက်ပ်ကို မပိတ်ပါနှင့်။ ပိတ်လိုက်ပါက ဤလုပ်ငန်းစဉ်ကို အစမှ ပြန်လည်စတင်ရမည်ဖြစ်သည်။"
|
||||
}
|
||||
}
|
||||
@@ -306,6 +306,8 @@
|
||||
"descending": "Aflopend",
|
||||
"description": "Beschrijving",
|
||||
"destination_tag": "Bestemmingstag:",
|
||||
"destination_tag_optional": "Bestemmingstag (optioneel)",
|
||||
"destination_tag_swap_disclaimer": "Vereist door de ontvanger om uw geld te crediteren. Ontbrekende of verkeerde tag betekent verloren geld.",
|
||||
"deuro_about_deuro": "Over dEURO",
|
||||
"deuro_collect_interest": "Verzamelen",
|
||||
"deuro_reinvest_interest": "Herinvesteren",
|
||||
@@ -613,6 +615,7 @@
|
||||
"memo": "Memo",
|
||||
"memo_disclaimer": "Deze memo is zichtbaar voor de ontvanger",
|
||||
"memo_optional": "Memo (optioneel)",
|
||||
"memo_swap_disclaimer": "Vereist door de ontvanger om uw geld te crediteren. Ontbrekende of verkeerde memo betekent verloren geld.",
|
||||
"message": "Bericht",
|
||||
"message_verified": "Het bericht is succesvol geverifieerd",
|
||||
"messages": "Berichten",
|
||||
@@ -1371,4 +1374,4 @@
|
||||
"zcash_card_missing_funds": "Fondsen ontbreken?",
|
||||
"zcash_card_scan": "Scannen",
|
||||
"zcash_card_warning": "Sluit de app niet voordat de procedure is voltooid. Als je dit wel doet, moet dit proces helemaal opnieuw worden gestart."
|
||||
}
|
||||
}
|
||||
@@ -308,6 +308,8 @@
|
||||
"descending": "Malejąco",
|
||||
"description": "Opis",
|
||||
"destination_tag": "Tag docelowy:",
|
||||
"destination_tag_optional": "Znacznik miejsca docelowego (opcjonalnie)",
|
||||
"destination_tag_swap_disclaimer": "Wymagane przez odbiorcę w celu uznania Twoich środków. Brakujący lub błędny tag oznacza utratę środków.",
|
||||
"deuro_about_deuro": "O dEURO",
|
||||
"deuro_collect_interest": "Odbierz",
|
||||
"deuro_reinvest_interest": "Reinwestuj",
|
||||
@@ -615,6 +617,7 @@
|
||||
"memo": "Memo",
|
||||
"memo_disclaimer": "To memo będzie widoczne dla odbiorcy",
|
||||
"memo_optional": "Memo (opcjonalne)",
|
||||
"memo_swap_disclaimer": "Wymagane przez odbiorcę w celu uznania Twoich środków. Brakująca lub błędna notatka oznacza utratę środków.",
|
||||
"message": "Wiadomość",
|
||||
"message_verified": "Wiadomość została pomyślnie zweryfikowana",
|
||||
"messages": "Wiadomości",
|
||||
@@ -1372,4 +1375,4 @@
|
||||
"zcash_card_missing_funds": "Brakuje środków?",
|
||||
"zcash_card_scan": "Skanuj",
|
||||
"zcash_card_warning": "Nie zamykaj aplikacji do czasu zakończenia procedury. Jeśli to zrobisz, proces będzie musiał rozpocząć się od nowa."
|
||||
}
|
||||
}
|
||||
@@ -308,6 +308,8 @@
|
||||
"descending": "Descendente",
|
||||
"description": "Descrição",
|
||||
"destination_tag": "Tag de destino:",
|
||||
"destination_tag_optional": "Tag de destino (opcional)",
|
||||
"destination_tag_swap_disclaimer": "Exigido pelo destinatário para creditar seus fundos. Etiqueta ausente ou errada significa perda de fundos.",
|
||||
"deuro_about_deuro": "Sobre dEURO",
|
||||
"deuro_collect_interest": "Coletar",
|
||||
"deuro_reinvest_interest": "Reinvestir",
|
||||
@@ -617,6 +619,7 @@
|
||||
"memo": "Memo",
|
||||
"memo_disclaimer": "Este memo ficará visível para o destinatário",
|
||||
"memo_optional": "Memo (opcional)",
|
||||
"memo_swap_disclaimer": "Exigido pelo destinatário para creditar seus fundos. Memorando ausente ou errado significa perda de fundos.",
|
||||
"message": "Mensagem",
|
||||
"message_verified": "A mensagem foi verificada com sucesso",
|
||||
"messages": "Mensagens",
|
||||
@@ -1376,4 +1379,4 @@
|
||||
"zcash_card_missing_funds": "Fundos em falta?",
|
||||
"zcash_card_scan": "Escanear",
|
||||
"zcash_card_warning": "Não feche o aplicativo até que o procedimento seja concluído; se você fizer isso, esse processo precisará ser reiniciado do zero."
|
||||
}
|
||||
}
|
||||
@@ -306,6 +306,8 @@
|
||||
"descending": "Decrescente",
|
||||
"description": "Descrição",
|
||||
"destination_tag": "Tag de destino:",
|
||||
"destination_tag_optional": "Tag de destino (opcional)",
|
||||
"destination_tag_swap_disclaimer": "Exigido pelo destinatário para creditar seus fundos. Etiqueta ausente ou errada significa perda de fundos.",
|
||||
"deuro_about_deuro": "Sobre dEURO",
|
||||
"deuro_collect_interest": "Coletar",
|
||||
"deuro_reinvest_interest": "Reinvestir",
|
||||
@@ -612,6 +614,7 @@
|
||||
"memo": "Memo",
|
||||
"memo_disclaimer": "Este memo será visível para o destinatário",
|
||||
"memo_optional": "Memo (opcional)",
|
||||
"memo_swap_disclaimer": "Exigido pelo destinatário para creditar seus fundos. Memorando ausente ou errado significa perda de fundos.",
|
||||
"message": "Mensagem",
|
||||
"message_verified": "A mensagem foi verificada com sucesso",
|
||||
"messages": "Mensagens",
|
||||
@@ -1368,4 +1371,4 @@
|
||||
"zcash_card_missing_funds": "Fundos ausentes?",
|
||||
"zcash_card_scan": "Escanear",
|
||||
"zcash_card_warning": "Não feche o app até que o procedimento seja concluído; caso contrário, este processo precisará ser reiniciado do zero."
|
||||
}
|
||||
}
|
||||
@@ -308,6 +308,8 @@
|
||||
"descending": "По убыванию",
|
||||
"description": "Описание",
|
||||
"destination_tag": "Тег назначения:",
|
||||
"destination_tag_optional": "Тег назначения (необязательно)",
|
||||
"destination_tag_swap_disclaimer": "Требуется получателю для зачисления ваших средств. Отсутствие или неправильный тег означает потерю средств.",
|
||||
"deuro_about_deuro": "О dEURO",
|
||||
"deuro_collect_interest": "Собрать",
|
||||
"deuro_reinvest_interest": "Реинвестировать",
|
||||
@@ -616,6 +618,7 @@
|
||||
"memo": "Мемо",
|
||||
"memo_disclaimer": "Это примечание будет видно получателю",
|
||||
"memo_optional": "Мемо (необязательно)",
|
||||
"memo_swap_disclaimer": "Требуется получателю для зачисления ваших средств. Отсутствие или неправильная памятка означает потерю средств.",
|
||||
"message": "Сообщение",
|
||||
"message_verified": "Сообщение было успешно проверено",
|
||||
"messages": "Сообщения",
|
||||
@@ -1374,4 +1377,4 @@
|
||||
"zcash_card_missing_funds": "Не хватает средств?",
|
||||
"zcash_card_scan": "Сканировать",
|
||||
"zcash_card_warning": "Не закрывайте приложение до завершения процедуры. Если вы это сделаете, процесс придется перезапустить с нуля."
|
||||
}
|
||||
}
|
||||
@@ -308,6 +308,8 @@
|
||||
"descending": "จากมากไปน้อย",
|
||||
"description": "คำอธิบาย",
|
||||
"destination_tag": "แท็กปลายทาง:",
|
||||
"destination_tag_optional": "แท็กปลายทาง (ไม่บังคับ)",
|
||||
"destination_tag_swap_disclaimer": "ผู้รับต้องการให้เครดิตเงินของคุณ แท็กที่หายไปหรือผิดหมายถึงสูญเสียเงิน",
|
||||
"deuro_about_deuro": "เกี่ยวกับ dEURO",
|
||||
"deuro_collect_interest": "รับ",
|
||||
"deuro_reinvest_interest": "ลงทุนซ้ำ",
|
||||
@@ -616,6 +618,7 @@
|
||||
"memo": "บันทึก",
|
||||
"memo_disclaimer": "บันทึกนี้จะมองเห็นได้โดยผู้รับ",
|
||||
"memo_optional": "บันทึก (ไม่บังคับ)",
|
||||
"memo_swap_disclaimer": "ผู้รับต้องการให้เครดิตเงินของคุณ บันทึกที่หายไปหรือผิดหมายถึงสูญเสียเงิน",
|
||||
"message": "ข้อความ",
|
||||
"message_verified": "ตรวจสอบข้อความสำเร็จแล้ว",
|
||||
"messages": "ข้อความ",
|
||||
@@ -1373,4 +1376,4 @@
|
||||
"zcash_card_missing_funds": "ยอดเงินหายไป?",
|
||||
"zcash_card_scan": "สแกน",
|
||||
"zcash_card_warning": "อย่าปิดแอปจนกว่าขั้นตอนจะเสร็จสิ้น หากคุณปิดแอป กระบวนการนี้จะต้องเริ่มใหม่ตั้งแต่ต้น"
|
||||
}
|
||||
}
|
||||
@@ -308,6 +308,8 @@
|
||||
"descending": "Pababa",
|
||||
"description": "Paglalarawan",
|
||||
"destination_tag": "Destination tag:",
|
||||
"destination_tag_optional": "Destination tag (opsyonal)",
|
||||
"destination_tag_swap_disclaimer": "Kinakailangan ng tatanggap na ikredito ang iyong mga pondo. Ang nawawala o maling tag ay nangangahulugan ng mga nawalang pondo.",
|
||||
"deuro_about_deuro": "Tungkol sa dEURO",
|
||||
"deuro_collect_interest": "Kolektahin",
|
||||
"deuro_reinvest_interest": "Muling i-invest",
|
||||
@@ -616,6 +618,7 @@
|
||||
"memo": "Memo",
|
||||
"memo_disclaimer": "Makikita ng tatanggap ang memo na ito",
|
||||
"memo_optional": "Memo (opsyonal)",
|
||||
"memo_swap_disclaimer": "Kinakailangan ng tatanggap na ikredito ang iyong mga pondo. Ang nawawala o maling memo ay nangangahulugan ng nawalang pondo.",
|
||||
"message": "Mensahe",
|
||||
"message_verified": "Matagumpay na na-verify ang mensahe",
|
||||
"messages": "Mga Mensahe",
|
||||
@@ -1373,4 +1376,4 @@
|
||||
"zcash_card_missing_funds": "Nawawalang pondo?",
|
||||
"zcash_card_scan": "I-scan",
|
||||
"zcash_card_warning": "Huwag isara ang app hanggang sa makumpleto ang proseso; kung gagawin mo ito, kakailanganing magsimula muli mula sa simula."
|
||||
}
|
||||
}
|
||||
@@ -308,6 +308,8 @@
|
||||
"descending": "Azalan",
|
||||
"description": "Açıklama",
|
||||
"destination_tag": "Hedef etiketi:",
|
||||
"destination_tag_optional": "Hedef etiketi (isteğe bağlı)",
|
||||
"destination_tag_swap_disclaimer": "Alıcının paranızı yatırması için gereklidir. Eksik veya yanlış etiket, para kaybı anlamına gelir.",
|
||||
"deuro_about_deuro": "dEURO hakkında",
|
||||
"deuro_collect_interest": "Topla",
|
||||
"deuro_reinvest_interest": "Yeniden yatır",
|
||||
@@ -616,6 +618,7 @@
|
||||
"memo": "Not",
|
||||
"memo_disclaimer": "Bu memo alıcı tarafından görülebilecektir",
|
||||
"memo_optional": "Memo (isteğe bağlı)",
|
||||
"memo_swap_disclaimer": "Alıcının paranızı yatırması için gereklidir. Eksik veya yanlış not, para kaybı anlamına gelir.",
|
||||
"message": "Mesaj",
|
||||
"message_verified": "Mesaj başarıyla doğrulandı",
|
||||
"messages": "Mesajlar",
|
||||
@@ -1373,4 +1376,4 @@
|
||||
"zcash_card_missing_funds": "Bakiye eksik mi?",
|
||||
"zcash_card_scan": "Tara",
|
||||
"zcash_card_warning": "İşlem tamamlanana kadar uygulamayı kapatmayın; aksi takdirde bu işlemin baştan yeniden başlatılması gerekecektir."
|
||||
}
|
||||
}
|
||||
@@ -308,6 +308,8 @@
|
||||
"descending": "За спаданням",
|
||||
"description": "Опис",
|
||||
"destination_tag": "Тег призначення:",
|
||||
"destination_tag_optional": "Тег призначення (необов’язково)",
|
||||
"destination_tag_swap_disclaimer": "Потрібний одержувачу для зарахування ваших коштів. Відсутній або неправильний тег означає втрату коштів.",
|
||||
"deuro_about_deuro": "Про dEURO",
|
||||
"deuro_collect_interest": "Зібрати",
|
||||
"deuro_reinvest_interest": "Реінвестувати",
|
||||
@@ -616,6 +618,7 @@
|
||||
"memo": "Мемо",
|
||||
"memo_disclaimer": "Ця примітка буде видима одержувачу",
|
||||
"memo_optional": "Мемо (необов'язково)",
|
||||
"memo_swap_disclaimer": "Потрібний одержувачу для зарахування ваших коштів. Відсутня або неправильна нотатка означає втрату коштів.",
|
||||
"message": "Повідомлення",
|
||||
"message_verified": "Повідомлення було успішно перевірено",
|
||||
"messages": "Повідомлення",
|
||||
@@ -1374,4 +1377,4 @@
|
||||
"zcash_card_missing_funds": "Зникли кошти?",
|
||||
"zcash_card_scan": "Сканувати",
|
||||
"zcash_card_warning": "Не закривайте застосунок, доки процедура не завершиться. Якщо ви це зробите, цей процес потрібно буде перезапустити з нуля."
|
||||
}
|
||||
}
|
||||
@@ -308,6 +308,8 @@
|
||||
"descending": "نزولی",
|
||||
"description": "تفصیل",
|
||||
"destination_tag": "ڈیسٹینیشن ٹیگ:",
|
||||
"destination_tag_optional": "منزل کا ٹیگ (اختیاری)",
|
||||
"destination_tag_swap_disclaimer": "وصول کنندہ کے ذریعہ آپ کے فنڈز کو کریڈٹ کرنے کی ضرورت ہے۔ گمشدہ یا غلط ٹیگ کا مطلب ہے کھوئے ہوئے فنڈز۔",
|
||||
"deuro_about_deuro": "dEURO کے بارے میں",
|
||||
"deuro_collect_interest": "وصول کریں",
|
||||
"deuro_reinvest_interest": "دوبارہ سرمایہ کاری کریں",
|
||||
@@ -616,6 +618,7 @@
|
||||
"memo": "میمو",
|
||||
"memo_disclaimer": "یہ میمو وصول کنندہ کو نظر آئے گا۔",
|
||||
"memo_optional": "میمو (اختیاری)",
|
||||
"memo_swap_disclaimer": "وصول کنندہ کے ذریعہ آپ کے فنڈز کو کریڈٹ کرنے کی ضرورت ہے۔ گمشدہ یا غلط میمو کا مطلب ہے کھوئے ہوئے فنڈز۔",
|
||||
"message": "پیغام",
|
||||
"message_verified": "پیغام کی کامیابی سے تصدیق ہو گئی",
|
||||
"messages": "پیغامات",
|
||||
@@ -1375,4 +1378,4 @@
|
||||
"zcash_card_missing_funds": "فنڈز غائب ہیں؟",
|
||||
"zcash_card_scan": "اسکین کریں",
|
||||
"zcash_card_warning": "طریقہ کار مکمل ہونے تک ایپ بند نہ کریں۔ اگر آپ ایسا کریں گے تو یہ عمل شروع سے دوبارہ شروع کرنا پڑے گا۔"
|
||||
}
|
||||
}
|
||||
@@ -307,6 +307,8 @@
|
||||
"descending": "Giảm dần",
|
||||
"description": "Mô tả",
|
||||
"destination_tag": "Thẻ đích:",
|
||||
"destination_tag_optional": "Thẻ đích (tùy chọn)",
|
||||
"destination_tag_swap_disclaimer": "Người nhận yêu cầu ghi có tiền của bạn. Thẻ bị thiếu hoặc sai có nghĩa là tiền bị mất.",
|
||||
"deuro_about_deuro": "Giới thiệu về dEURO",
|
||||
"deuro_collect_interest": "Thu",
|
||||
"deuro_reinvest_interest": "Tái đầu tư",
|
||||
@@ -615,6 +617,7 @@
|
||||
"memo": "Ghi chú",
|
||||
"memo_disclaimer": "Ghi chú này sẽ hiển thị cho người nhận",
|
||||
"memo_optional": "Ghi chú (tùy chọn)",
|
||||
"memo_swap_disclaimer": "Người nhận yêu cầu ghi có tiền của bạn. Bản ghi nhớ bị thiếu hoặc sai có nghĩa là tiền bị mất.",
|
||||
"message": "Tin nhắn",
|
||||
"message_verified": "Tin nhắn đã được xác minh thành công",
|
||||
"messages": "Tin nhắn",
|
||||
@@ -1370,4 +1373,4 @@
|
||||
"zcash_card_missing_funds": "Thiếu tiền?",
|
||||
"zcash_card_scan": "Quét",
|
||||
"zcash_card_warning": "Không đóng ứng dụng cho đến khi quy trình hoàn tất; nếu bạn làm vậy, quy trình này sẽ phải bắt đầu lại từ đầu."
|
||||
}
|
||||
}
|
||||
@@ -308,6 +308,8 @@
|
||||
"descending": "Sísọ̀kalẹ̀",
|
||||
"description": "Apejuwe",
|
||||
"destination_tag": "Ami ìbùdó:",
|
||||
"destination_tag_optional": "Aami ibi-afẹde (aṣayan)",
|
||||
"destination_tag_swap_disclaimer": "Ti beere lọwọ olugba lati gbese awọn owo rẹ. Sonu tabi ti ko tọ tag tumo si sọnu owo.",
|
||||
"deuro_about_deuro": "Nipa dEURO",
|
||||
"deuro_collect_interest": "Gba",
|
||||
"deuro_reinvest_interest": "Tun fi èrè padà sí i",
|
||||
@@ -617,6 +619,7 @@
|
||||
"memo": "Àkọsílẹ̀",
|
||||
"memo_disclaimer": "Akọsilẹ yii yoo han si olugba",
|
||||
"memo_optional": "Akọsilẹ (aṣayan)",
|
||||
"memo_swap_disclaimer": "Ti beere lọwọ olugba lati gbese awọn owo rẹ. Pipadanu tabi akọsilẹ aṣiṣe tumọ si awọn owo ti o sọnu.",
|
||||
"message": "Ifiranṣẹ",
|
||||
"message_verified": "A ti jẹrisi ifiranṣẹ naa ni aṣeyọri",
|
||||
"messages": "Awọn ifiranṣẹ",
|
||||
@@ -1374,4 +1377,4 @@
|
||||
"zcash_card_missing_funds": "Ṣe owó rẹ sọnù?",
|
||||
"zcash_card_scan": "Ṣàwárí",
|
||||
"zcash_card_warning": "Maṣe pa ohun elo naa titi ilana naa yoo fi pari; bí o bá ṣe bẹ́ẹ̀, ilana yìí yóò ní láti tún bẹ̀rẹ̀ láti ìbẹ̀rẹ̀."
|
||||
}
|
||||
}
|
||||
@@ -308,6 +308,8 @@
|
||||
"descending": "降序",
|
||||
"description": "描述",
|
||||
"destination_tag": "目标标签:",
|
||||
"destination_tag_optional": "目的地标签(可选)",
|
||||
"destination_tag_swap_disclaimer": "收款人要求存入您的资金。标签丢失或错误意味着资金损失。",
|
||||
"deuro_about_deuro": "关于 dEURO",
|
||||
"deuro_collect_interest": "领取",
|
||||
"deuro_reinvest_interest": "再投资",
|
||||
@@ -616,6 +618,7 @@
|
||||
"memo": "备注",
|
||||
"memo_disclaimer": "此备注将对接收方可见",
|
||||
"memo_optional": "备注(可选)",
|
||||
"memo_swap_disclaimer": "收款人要求存入您的资金。备忘录丢失或错误意味着资金损失。",
|
||||
"message": "消息",
|
||||
"message_verified": "消息已成功验证",
|
||||
"messages": "消息",
|
||||
@@ -1373,4 +1376,4 @@
|
||||
"zcash_card_missing_funds": "资金不见了?",
|
||||
"zcash_card_scan": "扫描",
|
||||
"zcash_card_warning": "在该过程完成之前请勿关闭应用程序,否则该过程将需要从头重新开始。"
|
||||
}
|
||||
}
|
||||
@@ -259,6 +259,8 @@
|
||||
"descending": "降序",
|
||||
"description": "描述",
|
||||
"destination_tag": "目的地標籤:",
|
||||
"destination_tag_optional": "目的地標籤(可選)",
|
||||
"destination_tag_swap_disclaimer": "收款人要求存入您的資金。標籤丟失或錯誤意味著資金損失。",
|
||||
"deuro_about_deuro": "關於 dEURO",
|
||||
"deuro_collect_interest": "領取",
|
||||
"deuro_reinvest_interest": "再投資",
|
||||
@@ -523,6 +525,7 @@
|
||||
"max_amount": "最大: ${value}",
|
||||
"max_value": "最大值:${value} ${currency}",
|
||||
"memo": "備註",
|
||||
"memo_swap_disclaimer": "收款人要求存入您的資金。備忘錄丟失或錯誤意味著資金損失。",
|
||||
"message": "訊息",
|
||||
"message_verified": "訊息已成功驗證",
|
||||
"messages": "訊息",
|
||||
@@ -1177,4 +1180,4 @@
|
||||
"youCanGoBackToYourDapp": "您現在可以返回您的 dApp",
|
||||
"your": "您的",
|
||||
"yy": "YY"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user