Update list of trocador providers to be fetched from the api (#1379)

* fetch providers from Trocadore api * Update exchange_confirm_page.dart * Update exchange_view_model.dart * update trocador providers page * Revert "Update exchange_view_model.dart" This reverts commit 5722ed768a8a5e21deaaaec37d9436a7e3a2651f. * update exchange view model * pass the TrocadorExchangeProvider as a dependency [skip ci] * add missing localozation [skip ci] * minor fix * address review comments[skip ci] * update states when the provider is enabled * add kyc rating * sort providers by KYC * minor fix * Update exchange_view_model.dart * Update lib/exchange/provider/trocador_exchange_provider.dart Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com> * backward compatibility for Trocador provider states * minor fix --------- Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>

Serhii committed Mar 11, 2025 at 21:51 UTC b387c6182ae504ae7a55f5ad8bfc7f88af79f1a3
34 files changed +327 -54
lib/di.dart
+9 -1
@@ -33,6 +33,11 @@ import 'package:cake_wallet/entities/contact_record.dart';
33 import 'package:cake_wallet/entities/exchange_api_mode.dart';
34 import 'package:cake_wallet/entities/hardware_wallet/require_hardware_wallet_connection.dart';
35 import 'package:cake_wallet/entities/parse_address_from_domain.dart';
36 +import 'package:cake_wallet/exchange/provider/trocador_exchange_provider.dart';
37 +import 'package:cake_wallet/view_model/link_view_model.dart';
38 +import 'package:cake_wallet/tron/tron.dart';
39 +import 'package:cake_wallet/src/screens/transaction_details/rbf_details_page.dart';
40 +import 'package:cw_core/receive_page_option.dart';
41 import 'package:cake_wallet/entities/wallet_edit_page_arguments.dart';
42 import 'package:cake_wallet/entities/wallet_manager.dart';
43 import 'package:cake_wallet/src/screens/buy/buy_sell_options_page.dart';
@@ -897,7 +902,10 @@ Future<void> setup({
902 return PrivacySettingsViewModel(getIt.get<SettingsStore>(), getIt.get<AppStore>().wallet!);
903 });
904
900 - getIt.registerFactory(() => TrocadorProvidersViewModel(getIt.get<SettingsStore>()));
905 + getIt.registerFactory(() => TrocadorExchangeProvider());
906 +
907 + getIt.registerFactory(() => TrocadorProvidersViewModel(
908 + getIt.get<SettingsStore>(), getIt.get<TrocadorExchangeProvider>()));
909
910 getIt.registerFactory(() {
911 return OtherSettingsViewModel(getIt.get<SettingsStore>(), getIt.get<AppStore>().wallet!,
lib/entities/preferences_key.dart
+1
@@ -86,6 +86,7 @@ class PreferencesKey {
86 '${PreferencesKey.moneroWalletPasswordUpdateV1Base}_${name}';
87
88 static const exchangeProvidersSelection = 'exchange-providers-selection';
89 + static const trocadorProviderStatesKey = 'trocador_provider_states';
90 static const autoGenerateSubaddressStatusKey = 'auto_generate_subaddress_status';
91 static const moneroSeedType = 'monero_seed_type';
92 static const bitcoinSeedType = 'bitcoin_seed_type';
lib/exchange/provider/trocador_exchange_provider.dart
+57 -13
@@ -19,7 +19,7 @@ class TrocadorExchangeProvider extends ExchangeProvider {
19 super(pairList: supportedPairs(_notSupported));
20
21 bool useTorOnly;
22 - final Map<String, bool> providerStates;
22 + Map<String, bool> providerStates;
23
24 static const List<String> availableProviders = [
25 'Swapter',
@@ -59,6 +59,8 @@ class TrocadorExchangeProvider extends ExchangeProvider {
59 static const createTradePath = '/new_trade';
60 static const tradePath = '/trade';
61 static const coinPath = '/coin';
62 + static const providersListPath = '/exchanges';
63 +
64
65 String _lastUsedRateId;
66 List<dynamic> _provider;
@@ -147,7 +149,14 @@ class TrocadorExchangeProvider extends ExchangeProvider {
149 final rateId = responseJSON['trade_id'] as String? ?? '';
150
151 var quotes = responseJSON['quotes']['quotes'] as List;
150 - _provider = quotes.map((quote) => quote['provider']).toList();
152 + _provider = quotes
153 + .where((quote) => providerStates[quote['provider']] != false)
154 + .map((quote) => quote['provider'])
155 + .toList();
156 +
157 + if (_provider.isEmpty) {
158 + throw Exception('No enabled providers found for the selected trade.');
159 + }
160
161 if (rateId.isNotEmpty) _lastUsedRateId = rateId;
162
@@ -190,20 +199,11 @@ class TrocadorExchangeProvider extends ExchangeProvider {
199 params['id'] = _lastUsedRateId;
200 }
201
193 - String firstAvailableProvider = '';
194 -
195 - for (var provider in _provider) {
196 - if (providerStates.containsKey(provider) && providerStates[provider] == true) {
197 - firstAvailableProvider = provider as String;
198 - break;
199 - }
200 - }
201 -
202 - if (firstAvailableProvider.isEmpty) {
202 + if (_provider.isEmpty) {
203 throw Exception('No available provider is enabled');
204 }
205
206 - params['provider'] = firstAvailableProvider;
206 + params['provider'] = _provider.first as String;
207
208 final uri = await _getUri(createTradePath, params);
209 final response = await get(uri, headers: {'API-Key': apiKey});
@@ -288,6 +288,24 @@ class TrocadorExchangeProvider extends ExchangeProvider {
288 });
289 }
290
291 + Future<List<TrocadorPartners>> fetchProviders() async {
292 + final uri = await _getUri(providersListPath, {'api_key': apiKey});
293 + final response = await get(uri);
294 +
295 + if (response.statusCode != 200)
296 + throw Exception('Unexpected http status: ${response.statusCode}');
297 +
298 + final responseJSON = json.decode(response.body) as Map<String, dynamic>;
299 +
300 + final providersJsonList = responseJSON['list'] as List<dynamic>;
301 + final filteredProvidersList = providersJsonList
302 + .map((providerJson) => TrocadorPartners.fromJson(providerJson as Map<String, dynamic>))
303 + .where((provider) => provider.rating != 'D')
304 + .toList();
305 + filteredProvidersList.sort((a, b) => a.rating.compareTo(b.rating));
306 + return filteredProvidersList;
307 + }
308 +
309 String _networkFor(CryptoCurrency currency) {
310 switch (currency) {
311 case CryptoCurrency.eth:
@@ -343,3 +361,29 @@ class TrocadorExchangeProvider extends ExchangeProvider {
361 }
362 }
363 }
364 +
365 +class TrocadorPartners {
366 + final String name;
367 + final String rating;
368 + final double? insurance;
369 + final bool? enabledMarkup;
370 + final double? eta;
371 +
372 + TrocadorPartners({
373 + required this.name,
374 + required this.rating,
375 + required this.insurance,
376 + required this.enabledMarkup,
377 + required this.eta,
378 + });
379 +
380 + factory TrocadorPartners.fromJson(Map<String, dynamic> json) {
381 + return TrocadorPartners(
382 + name: json['name'] as String? ?? '',
383 + rating: json['rating'] as String? ?? 'N/A',
384 + insurance: json['insurance'] as double?,
385 + enabledMarkup: json['enabledmarkup'] as bool?,
386 + eta: json['eta'] as double?,
387 + );
388 + }
389 +}
lib/src/screens/exchange_trade/exchange_confirm_page.dart
+32 -15
@@ -97,22 +97,39 @@ class ExchangeConfirmPage extends BasePage {
97 ],
98 ),
99 ),
100 - Flexible(
101 - child: Center(
102 - child: Row(
103 - mainAxisAlignment: MainAxisAlignment.center,
104 - children: [
105 - (trade.provider.image?.isNotEmpty ?? false)
106 - ? ImageUtil.getImageFromPath(
107 - imagePath: trade.provider.image, width: 50)
108 - : const SizedBox(),
109 - if (!trade.provider.horizontalLogo)
110 - Padding(
111 - padding: const EdgeInsets.symmetric(horizontal: 8.0),
112 - child: Text(trade.provider.title),
100 + Expanded(
101 + child: Column(
102 + children: [
103 + if (trade.provider == ExchangeProviderDescription.trocador)
104 + Padding(
105 + padding: const EdgeInsets.only(top: 8.0),
106 + child: Text(
107 + S.of(context).selected_trocador_provider +':${trade.providerName}',
108 + textAlign: TextAlign.center,
109 + style: TextStyle(
110 + fontSize: 12.0,
111 + fontWeight: FontWeight.w500,
112 + color: Theme.of(context).extension<TransactionTradeTheme>()!.detailsTitlesColor),
113 + ),
114 + ),
115 + Flexible(
116 + child: Center(
117 + child: Row(
118 + mainAxisAlignment: MainAxisAlignment.center,
119 + children: [
120 + (trade.provider.image?.isNotEmpty ?? false)
121 + ? Image.asset(trade.provider.image, height: 50)
122 + : const SizedBox(),
123 + if (!trade.provider.horizontalLogo)
124 + Padding(
125 + padding: const EdgeInsets.symmetric(horizontal: 8.0),
126 + child: Text(trade.provider.title),
127 + ),
128 + ],
129 ),
114 - ],
115 - ),
130 + ),
131 + ),
132 + ],
133 ),
134 ),
135 ],
lib/src/screens/settings/trocador_providers_page.dart
+83 -14
@@ -1,4 +1,4 @@
1 -import 'package:cake_wallet/exchange/provider/trocador_exchange_provider.dart';
1 +import 'package:cake_wallet/generated/i18n.dart';
2 import 'package:cake_wallet/src/screens/base_page.dart';
3 import 'package:cake_wallet/src/screens/settings/widgets/settings_switcher_cell.dart';
4 import 'package:cake_wallet/view_model/settings/trocador_providers_view_model.dart';
@@ -15,23 +15,92 @@ class TrocadorProvidersPage extends BasePage {
15
16 @override
17 Widget body(BuildContext context) {
18 - final availableProviders = TrocadorExchangeProvider.availableProviders;
19 - final providerStates = trocadorProvidersViewModel.providerStates;
18 return Container(
19 padding: EdgeInsets.only(top: 10),
22 - child: ListView.builder(
23 - itemCount: availableProviders.length,
24 - itemBuilder: (_, index) {
25 - String provider = availableProviders[index];
26 - return Observer(
27 - builder: (_) => SettingsSwitcherCell(
28 - title: provider,
29 - value: providerStates[provider] ?? false,
30 - onValueChange: (BuildContext _, bool value) {
31 - trocadorProvidersViewModel.toggleProviderState(provider);
32 - }));
20 + child: Observer(
21 + builder: (_) {
22 + if (trocadorProvidersViewModel.isLoading) {
23 + return Center(child: CircularProgressIndicator());
24 + }
25 + var providerStates = trocadorProvidersViewModel.providerStates;
26 + final providerRatings = trocadorProvidersViewModel.providerRatings;
27 + if (providerStates.isEmpty) {
28 + return Center(child: Text(S.of(context).no_providers_available));
29 + }
30 + return ListView.builder(
31 + itemCount: providerStates.length,
32 + itemBuilder: (_, index) {
33 + final providerName = providerStates.keys.elementAt(index);
34 + final providerEnabled = providerStates[providerName] ?? true;
35 + return SettingsSwitcherCell(
36 + title: providerName,
37 + value: providerEnabled,
38 + leading: Badge(
39 + title: 'KYC \nRATING',
40 + subTitle: providerRatings[providerName] ?? 'N/A',
41 + textColor: Colors.white,
42 + backgroundColor: Theme.of(context).primaryColor,
43 + ),
44 + onValueChange: (BuildContext _, value) =>
45 + trocadorProvidersViewModel.toggleProviderState(providerName),
46 + );
47 + },
48 + );
49 },
50 ),
51 );
52 }
53 }
54 +
55 +class Badge extends StatelessWidget {
56 + Badge({required this.textColor, required this.backgroundColor, required this.title, required this.subTitle});
57 +
58 + final String title;
59 + final String subTitle;
60 + final Color textColor;
61 + final Color backgroundColor;
62 +
63 + @override
64 + Widget build(BuildContext context) {
65 + return Padding(
66 + padding: const EdgeInsets.only(right: 8),
67 + child: FittedBox(
68 + fit: BoxFit.fitHeight,
69 + child: Container(
70 + padding: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 4),
71 + decoration: BoxDecoration(
72 + borderRadius: BorderRadius.all(Radius.circular(24)), color: backgroundColor),
73 + alignment: Alignment.center,
74 + child: IntrinsicHeight(
75 + child: Row(
76 + mainAxisAlignment: MainAxisAlignment.spaceEvenly,
77 + children: [
78 + Text(
79 + title,
80 + textAlign: TextAlign.center,
81 + style: TextStyle(
82 + color: textColor,
83 + fontSize: 7,
84 + fontWeight: FontWeight.w600,
85 + ),
86 + ),
87 + VerticalDivider(
88 + color: textColor,
89 + thickness: 1,
90 + ),
91 + Text(
92 + subTitle,
93 + style: TextStyle(
94 + color: textColor,
95 + fontSize: 12,
96 + fontWeight: FontWeight.w600,
97 + ),
98 + ),
99 + ],
100 + ),
101 + ),
102 + ),
103 + ),
104 + );
105 + }
106 +}
lib/store/settings_store.dart
+39 -8
@@ -1,3 +1,4 @@
1 +import 'dart:convert';
2 import 'dart:io';
3
4 import 'package:cake_wallet/bitcoin/bitcoin.dart';
@@ -224,12 +225,11 @@ abstract class SettingsStoreBase with Store {
225 if (initialZanoTransactionPriority != null) {
226 priority[WalletType.zano] = initialZanoTransactionPriority;
227 }
228 +
229 if (initialCakePayCountry != null) {
230 selectedCakePayCountry = initialCakePayCountry;
231 }
232
231 - initializeTrocadorProviderStates();
232 -
233 reaction(
234 (_) => fiatCurrency,
235 (FiatCurrency fiatCurrency) => sharedPreferences.setString(
@@ -1708,16 +1708,47 @@ abstract class SettingsStoreBase with Store {
1708 powNodes[walletType] = node;
1709 }
1710
1711 - void initializeTrocadorProviderStates() {
1712 - for (var provider in TrocadorExchangeProvider.availableProviders) {
1713 - final savedState = _sharedPreferences.getBool(provider) ?? true;
1714 - trocadorProviderStates[provider] = savedState;
1711 + @action
1712 + Future<void> updateAllTrocadorProviderStates(List<String> availableProviders) async {
1713 + final jsonKey = PreferencesKey.trocadorProviderStatesKey;
1714 + String? serializedData = await _sharedPreferences.getString(jsonKey);
1715 +
1716 + if (serializedData == null) {
1717 + final Map<String, bool> migratedStates = {};
1718 + for (final provider in TrocadorExchangeProvider.availableProviders) {
1719 + final oldState = _sharedPreferences.getBool(provider) ?? true;
1720 + migratedStates[provider] = oldState;
1721 + }
1722 +
1723 + trocadorProviderStates
1724 + ..clear()
1725 + ..addAll(migratedStates);
1726 +
1727 + await saveMapToString(jsonKey, trocadorProviderStates);
1728 + } else {
1729 + final decodedMap = json.decode(serializedData) as Map<String, dynamic>;
1730 + final oldMap = decodedMap.map((k, v) => MapEntry(k, v == true));
1731 +
1732 + final Map<String, bool> newStates = {
1733 + for (final provider in availableProviders) provider: oldMap[provider] ?? true
1734 + };
1735 +
1736 + trocadorProviderStates
1737 + ..clear()
1738 + ..addAll(newStates);
1739 + await saveMapToString(jsonKey, trocadorProviderStates);
1740 }
1741 }
1742
1718 - void saveTrocadorProviderState(String providerName, bool state) {
1719 - _sharedPreferences.setBool(providerName, state);
1743 + @action
1744 + Future<void> setTrocadorProviderState(String providerName, bool state) async {
1745 trocadorProviderStates[providerName] = state;
1746 + await saveMapToString(PreferencesKey.trocadorProviderStatesKey, trocadorProviderStates);
1747 + }
1748 +
1749 + Future<void> saveMapToString(String key, Map<String, bool> map) async {
1750 + String serializedData = json.encode(map);
1751 + await _sharedPreferences.setString(key, serializedData);
1752 }
1753
1754 static Future<String?> _getDeviceName() async {
lib/view_model/exchange/exchange_view_model.dart
+22
@@ -118,6 +118,16 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
118 _setAvailableProviders();
119 calculateBestRate();
120
121 + autorun((_) {
122 + if (selectedProviders.any((provider) => provider is TrocadorExchangeProvider)) {
123 + final trocadorProvider =
124 + selectedProviders.firstWhere((provider) => provider is TrocadorExchangeProvider)
125 + as TrocadorExchangeProvider;
126 +
127 + updateAllTrocadorProviderStates(trocadorProvider);
128 + }
129 + });
130 +
131 bestRateSync = Timer.periodic(Duration(seconds: 10), (timer) => calculateBestRate());
132
133 isDepositAddressEnabled = !(depositCurrency == wallet.currency);
@@ -183,6 +193,7 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
193 useTorOnly: _useTorOnly, providerStates: _settingsStore.trocadorProviderStates),
194 ];
195
196 +
197 @observable
198 ExchangeProvider? provider;
199
@@ -810,6 +821,17 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
821 );
822 }
823
824 + @action
825 + Future<void> updateAllTrocadorProviderStates(TrocadorExchangeProvider trocadorProvider) async {
826 + try {
827 + var providers = await trocadorProvider.fetchProviders();
828 + var providerNames = providers.map((e) => e.name).toList();
829 + await _settingsStore.updateAllTrocadorProviderStates(providerNames);
830 + } catch (e) {
831 + printV('Error updating trocador provider states: $e');
832 + }
833 + }
834 +
835 bool get isAvailableInSelected {
836 final providersForPair = providersForCurrentPair();
837 return selectedProviders
lib/view_model/settings/trocador_providers_view_model.dart
+32 -3
@@ -1,3 +1,4 @@
1 +import 'package:cake_wallet/exchange/provider/trocador_exchange_provider.dart';
2 import 'package:cake_wallet/store/settings_store.dart';
3 import 'package:mobx/mobx.dart';
4
@@ -6,9 +7,37 @@ part 'trocador_providers_view_model.g.dart';
7 class TrocadorProvidersViewModel = TrocadorProvidersViewModelBase with _$TrocadorProvidersViewModel;
8
9 abstract class TrocadorProvidersViewModelBase with Store {
9 - TrocadorProvidersViewModelBase(this._settingsStore);
10 + TrocadorProvidersViewModelBase(this._settingsStore, this.trocadorExchangeProvider) {
11 + fetchTrocadorPartners();
12 + }
13
14 final SettingsStore _settingsStore;
15 + final TrocadorExchangeProvider trocadorExchangeProvider;
16 +
17 + @observable
18 + ObservableFuture<Map<String, bool>>? fetchProvidersFuture;
19 +
20 + Map<String, String> providerRatings = {};
21 +
22 + @computed
23 + bool get isLoading => fetchProvidersFuture?.status == FutureStatus.pending;
24 +
25 + @action
26 + Future<void> fetchTrocadorPartners() async {
27 + fetchProvidersFuture =
28 + ObservableFuture(trocadorExchangeProvider.fetchProviders().then((providers) {
29 + var providerNames = providers.map((e) => e.name).toList();
30 +
31 + providerRatings = {
32 + for (var provider in providers)
33 + provider.name: provider.rating
34 + };
35 +
36 + return _settingsStore
37 + .updateAllTrocadorProviderStates(providerNames)
38 + .then((_) => _settingsStore.trocadorProviderStates);
39 + }));
40 + }
41
42 @computed
43 Map<String, bool> get providerStates => _settingsStore.trocadorProviderStates;
@@ -16,6 +45,6 @@ abstract class TrocadorProvidersViewModelBase with Store {
45 @action
46 void toggleProviderState(String providerName) {
47 final currentState = providerStates[providerName] ?? false;
19 - _settingsStore.saveTrocadorProviderState(providerName, !currentState);
48 + _settingsStore.setTrocadorProviderState(providerName, !currentState);
49 }
21 -}
\ No newline at end of file
50 +}
res/values/strings_ar.arb
+2
@@ -459,6 +459,7 @@
459 "no_cards_found": "لم يتم العثور على بطاقات",
460 "no_id_needed": "لا حاجة لID!",
461 "no_id_required": "لا ID مطلوب. اشحن وانفق في أي مكان",
462 + "no_providers_available": "لا مقدمي الخدمات المتاحة",
463 "no_relay_on_domain": ".ﻡﺍﺪﺨﺘﺳﻼﻟ ﻊﺑﺎﺘﺘﻟﺍ ﺭﺎﻴﺘﺧﺍ ءﺎﺟﺮﻟﺍ .ﺡﺎﺘﻣ ﺮﻴﻏ ﻞﻴﺣﺮﺘﻟﺍ ﻥﺃ ﻭﺃ ﻡﺪﺨﺘﺴﻤﻟﺍ ﻝﺎﺠﻤﻟ ﻞﻴﺣﺮﺗ ﺪ",
464 "no_relays": "ﺕﻼﺣﺮﻤﻟﺍ ﻻ",
465 "no_relays_message": ".ﻪﺑ ﺹﺎﺨﻟﺍ Nostr ﻞﺠﺳ ﻰﻟﺇ ﺕﻼﺣﺮﻤﻟﺍ ﺔﻓﺎﺿﻹ ﻢﻠﺘﺴﻤﻟﺍ ﺩﺎﺷﺭﺇ ﻰﺟﺮﻳ .ﺕﻼﺣﺮﻣ ﻱﺃ ﻰﻠﻋ ﻱﻮﺘﺤﻳ ﻻ",
@@ -674,6 +675,7 @@
675 "select_destination": ".ﻲﻃﺎﻴﺘﺣﻻﺍ ﺦﺴﻨﻟﺍ ﻒﻠﻣ ﺔﻬﺟﻭ ﺪﻳﺪﺤﺗ ءﺎﺟﺮﻟﺍ",
676 "select_hw_account_below": "الرجاء تحديد حساب الاستعادة أدناه:",
677 "select_sell_provider_notice": ".ﻖﻴﺒﻄﺘﻟﺍ ﺕﺍﺩﺍﺪﻋﺇ ﻲﻓ ﻚﺑ ﺹﺎﺨﻟﺍ ﻲﺿﺍﺮﺘﻓﻻﺍ ﻊﻴﺒﻟﺍ ﺩﻭﺰﻣ ﻦﻴﻴﻌﺗ ﻖﻳﺮﻃ ﻦﻋ ﺔﺷﺎﺸﻟﺍ ﻩﺬﻫ ﻲﻄﺨﺗ",
678 + "selected_trocador_provider": "مزود تروكادور المختار",
679 "select_your_country": "الرجاء تحديد بلدك",
680 "sell": "بيع",
681 "sell_alert_content": ".ﺎﻬﻴﻟﺇ ﻞﻳﺪﺒﺘﻟﺍ ﻭﺃ Litecoin ﻭﺃ Ethereum ﻭﺃ Bitcoin ﺔﻈﻔﺤﻣ ءﺎﺸﻧﺇ ﻰﺟﺮﻳ .Litecoin ﻭ",
res/values/strings_bg.arb
+2
@@ -459,6 +459,7 @@
459 "no_cards_found": "Не са намерени карти",
460 "no_id_needed": "Без нужда от документ за самоличност!",
461 "no_id_required": "Без нужда от документ за самоличност. Използвайте навсякъде",
462 + "no_providers_available": "Няма налични доставчици",
463 "no_relay_on_domain": "Няма реле за домейна на потребителя или релето не е налично. Моля, изберете реле, което да използвате.",
464 "no_relays": "Без релета",
465 "no_relays_message": "Намерихме запис Nostr NIP-05 за този потребител, но той не съдържа релета. Моля, инструктирайте получателя да добави релета към своя Nostr запис.",
@@ -674,6 +675,7 @@
675 "select_destination": "Моля, изберете дестинация за архивния файл.",
676 "select_hw_account_below": "Моля, изберете кой акаунт да възстановите по -долу:",
677 "select_sell_provider_notice": "Изберете доставчик на продажба по-горе. Можете да пропуснете този екран, като зададете своя доставчик на продажба по подразбиране в настройките на приложението.",
678 + "selected_trocador_provider": "Избран доставчик на трокадор",
679 "select_your_country": "Моля, изберете вашата страна",
680 "sell": "Продаване",
681 "sell_alert_content": "В момента поддържаме само продажбата на Bitcoin, Ethereum и Litecoin. Моля, създайте или превключете към своя портфейл Bitcoin, Ethereum или Litecoin.",
res/values/strings_cs.arb
+2
@@ -459,6 +459,7 @@
459 "no_cards_found": "Žádné karty nenalezeny",
460 "no_id_needed": "Žádné ID není potřeba!",
461 "no_id_required": "Žádní ID není potřeba. Dobijte si a utrácejte kdekoliv",
462 + "no_providers_available": "Žádní poskytovatelé jsou k dispozici",
463 "no_relay_on_domain": "Pro doménu uživatele neexistuje přenos nebo je přenos nedostupný. Vyberte relé, které chcete použít.",
464 "no_relays": "Žádná relé",
465 "no_relays_message": "Pro tohoto uživatele jsme našli záznam Nostr NIP-05, který však neobsahuje žádná relé. Požádejte příjemce, aby přidal přenosy do svého záznamu Nostr.",
@@ -674,6 +675,7 @@
675 "select_destination": "Vyberte cíl pro záložní soubor.",
676 "select_hw_account_below": "Níže vyberte, který účet chcete obnovit:",
677 "select_sell_provider_notice": "Výše vyberte poskytovatele prodeje. Tuto obrazovku můžete přeskočit nastavením výchozího poskytovatele prodeje v nastavení aplikace.",
678 + "selected_trocador_provider": "Vybraný poskytovatel Trocador",
679 "select_your_country": "Vyberte prosím svou zemi",
680 "sell": "Prodat",
681 "sell_alert_content": "V současné době podporujeme pouze prodej bitcoinů, etherea a litecoinů. Vytvořte nebo přepněte na svou bitcoinovou, ethereum nebo litecoinovou peněženku.",
res/values/strings_de.arb
+2
@@ -459,6 +459,7 @@
459 "no_cards_found": "Keine Karten gefunden",
460 "no_id_needed": "Keine ID erforderlich!",
461 "no_id_required": "Keine ID erforderlich. Upgraden und überall ausgeben",
462 + "no_providers_available": "Keine Anbieter verfügbar",
463 "no_relay_on_domain": "Es gibt kein Relay für die Domäne des Benutzers oder das Relay ist nicht verfügbar. Bitte wählen Sie ein zu verwendendes Relais aus.",
464 "no_relays": "Keine Relais",
465 "no_relays_message": "Wir haben einen Nostr NIP-05-Eintrag für diesen Benutzer gefunden, der jedoch keine Relays enthält. Bitte weisen Sie den Empfänger an, Relays zu seinem Nostr-Datensatz hinzuzufügen.",
@@ -675,6 +676,7 @@
676 "select_destination": "Bitte wählen Sie das Ziel für die Sicherungsdatei aus.",
677 "select_hw_account_below": "Bitte wählen Sie unten, welches Konto unten wiederhergestellt werden soll:",
678 "select_sell_provider_notice": "Wählen Sie oben einen Verkaufsanbieter aus. Sie können diesen Bildschirm überspringen, indem Sie in den App-Einstellungen Ihren Standard-Verkaufsanbieter festlegen.",
679 + "selected_trocador_provider": "Ausgewählter Trocador -Anbieter",
680 "select_your_country": "Bitte wählen Sie Ihr Land aus",
681 "sell": "Verkaufen",
682 "sell_alert_content": "Wir unterstützen derzeit nur den Verkauf von Bitcoin, Ethereum und Litecoin. Bitte erstellen Sie Ihr Bitcoin-, Ethereum- oder Litecoin-Wallet oder wechseln Sie zu diesem.",
res/values/strings_en.arb
+2
@@ -459,6 +459,7 @@
459 "no_cards_found": "No cards found",
460 "no_id_needed": "No ID needed!",
461 "no_id_required": "No ID required. Top up and spend anywhere",
462 + "no_providers_available": "No providers available",
463 "no_relay_on_domain": "There isn't a relay for user's domain or the relay is unavailable. Please choose a relay to use.",
464 "no_relays": "No relays",
465 "no_relays_message": "We found a Nostr NIP-05 record for this user, but it does not contain any relays. Please instruct the recipient to add relays to their Nostr record.",
@@ -675,6 +676,7 @@
676 "select_destination": "Please select destination for the backup file.",
677 "select_hw_account_below": "Please select which account to restore below:",
678 "select_sell_provider_notice": "Select a sell provider above. You can skip this screen by setting your default sell provider in app settings.",
679 + "selected_trocador_provider": "selected Trocador provider",
680 "select_your_country": "Please select your country",
681 "sell": "Sell",
682 "sell_alert_content": "We currently only support the sale of Bitcoin, Ethereum and Litecoin. Please create or switch to your Bitcoin, Ethereum or Litecoin wallet.",
res/values/strings_es.arb
+2
@@ -459,6 +459,7 @@
459 "no_cards_found": "No se encuentran cartas",
460 "no_id_needed": "¡No se necesita identificación!",
461 "no_id_required": "No se requiere identificación. Recarga y gaste en cualquier lugar",
462 + "no_providers_available": "No hay proveedores disponibles",
463 "no_relay_on_domain": "No hay una retransmisión para el dominio del usuario o la retransmisión no está disponible. Elige un relay para usar.",
464 "no_relays": "Sin relays",
465 "no_relays_message": "Encontramos un registro Nostr NIP-05 para este usuario, pero no contiene ningún relay. Indica al destinatario que agregue retransmisiones a su registro Nostr.",
@@ -676,6 +677,7 @@
677 "select_hw_account_below": "Seleccione qué cuenta restaurar a continuación:",
678 "select_sell_provider_notice": "Selecciona un proveedor de venta arriba. Puede omitir esta pantalla configurando su proveedor de venta predeterminado en la configuración de la aplicación.",
679 "select_your_country": "Seleccione su país",
680 + "selected_trocador_provider": "Proveedor de Trocador seleccionado",
681 "sell": "Vender",
682 "sell_alert_content": "Actualmente solo admitimos la venta de Bitcoin, Ethereum y Litecoin. Cree o cambie a su billetera Bitcoin, Ethereum o Litecoin.",
683 "sell_monero_com_alert_content": "Aún no se admite la venta de Monero",
res/values/strings_fr.arb
+2
@@ -459,6 +459,7 @@
459 "no_cards_found": "Pas de cartes trouvées",
460 "no_id_needed": "Aucune pièce d'identité nécessaire !",
461 "no_id_required": "Aucune pièce d'identité requise. Rechargez et dépensez n'importe où",
462 + "no_providers_available": "Aucun fournisseur disponible",
463 "no_relay_on_domain": "Il n'existe pas de relais pour le domaine de l'utilisateur ou le relais n'est pas disponible. Veuillez choisir un relais à utiliser.",
464 "no_relays": "Pas de relais",
465 "no_relays_message": "Nous avons trouvé un enregistrement Nostr NIP-05 pour cet utilisateur, mais il ne contient aucun relais. Veuillez demander au destinataire d'ajouter des relais à son enregistrement Nostr.",
@@ -674,6 +675,7 @@
675 "select_destination": "Veuillez sélectionner la destination du fichier de sauvegarde.",
676 "select_hw_account_below": "Veuillez sélectionner le compte à restaurer ci-dessous:",
677 "select_sell_provider_notice": "Sélectionnez un fournisseur de vente ci-dessus. Vous pouvez ignorer cet écran en définissant votre fournisseur de vente par défaut dans les paramètres de l'application.",
678 + "selected_trocador_provider": "fournisseur de trocador sélectionné",
679 "select_your_country": "Veuillez sélectionner votre pays",
680 "sell": "Vendre",
681 "sell_alert_content": "Nous ne prenons actuellement en charge que la vente de Bitcoin, Ethereum et Litecoin. Veuillez créer ou basculer vers votre portefeuille Bitcoin, Ethereum ou Litecoin.",
res/values/strings_ha.arb
+2
@@ -459,6 +459,7 @@
459 "no_cards_found": "Babu katunan da aka samo",
460 "no_id_needed": "Babu ID da ake buƙata!",
461 "no_id_required": "Babu ID da ake buƙata. Yi da kuma ciyar a ko'ina",
462 + "no_providers_available": "Babu masu samar da wadatar",
463 "no_relay_on_domain": "Babu gudun ba da sanda ga yankin mai amfani ko kuma ba a samu ba. Da fatan za a zaɓi gudun ba da sanda don amfani.",
464 "no_relays": "Babu relays",
465 "no_relays_message": "Mun sami rikodin Nostr NIP-05 don wannan mai amfani, amma ba ya ƙunshe da kowane relays. Da fatan za a umurci mai karɓa ya ƙara relays zuwa rikodin su na Nostr.",
@@ -676,6 +677,7 @@
677 "select_destination": "Da fatan za a zaɓi wurin da za a yi wa madadin fayil ɗin.",
678 "select_hw_account_below": "Da fatan za a zabi wanda asusun zai gyara a ƙasa:",
679 "select_sell_provider_notice": "Zaɓi mai bada siyarwa a sama. Kuna iya tsallake wannan allon ta saita mai bada siyar da ku a cikin saitunan app.",
680 + "selected_trocador_provider": "Zabi mai bada TORACAD",
681 "select_your_country": "Da fatan za a zabi ƙasarku",
682 "sell": "sayar",
683 "sell_alert_content": "A halin yanzu muna tallafawa kawai siyar da Bitcoin, Ethereum da Litecoin. Da fatan za a ƙirƙiri ko canza zuwa walat ɗin ku na Bitcoin, Ethereum ko Litecoin.",
res/values/strings_hi.arb
+2
@@ -459,6 +459,7 @@
459 "no_cards_found": "कोई कार्ड नहीं मिला",
460 "no_id_needed": "कोई आईडी नहीं चाहिए!",
461 "no_id_required": "कोई आईडी आवश्यक नहीं है। टॉप अप करें और कहीं भी खर्च करें",
462 + "no_providers_available": "कोई प्रदाता उपलब्ध नहीं है",
463 "no_relay_on_domain": "उपयोगकर्ता के डोमेन के लिए कोई रिले नहीं है या रिले अनुपलब्ध है। कृपया उपयोग करने के लिए एक रिले चुनें।",
464 "no_relays": "कोई रिले नहीं",
465 "no_relays_message": "हमें इस उपयोगकर्ता के लिए एक Nostr NIP-05 रिकॉर्ड मिला, लेकिन इसमें कोई रिले नहीं है। कृपया प्राप्तकर्ता को अपने नॉस्ट्र रिकॉर्ड में रिले जोड़ने का निर्देश दें।",
@@ -676,6 +677,7 @@
677 "select_destination": "कृपया बैकअप फ़ाइल के लिए गंतव्य का चयन करें।",
678 "select_hw_account_below": "कृपया नीचे पुनर्स्थापित करने के लिए कौन सा खाता चुनें:",
679 "select_sell_provider_notice": "ऊपर एक विक्रय प्रदाता का चयन करें। आप ऐप सेटिंग में अपना डिफ़ॉल्ट विक्रय प्रदाता सेट करके इस स्क्रीन को छोड़ सकते हैं।",
680 + "selected_trocador_provider": "चयनित ट्रोकैडर प्रदाता",
681 "select_your_country": "कृपया अपने देश का चयन करें",
682 "sell": "बेचना",
683 "sell_alert_content": "हम वर्तमान में केवल बिटकॉइन, एथेरियम और लाइटकॉइन की बिक्री का समर्थन करते हैं। कृपया अपना बिटकॉइन, एथेरियम या लाइटकॉइन वॉलेट बनाएं या उसमें स्विच करें।",
res/values/strings_hr.arb
+2
@@ -459,6 +459,7 @@
459 "no_cards_found": "Nisu pronađene kartice",
460 "no_id_needed": "Nije potreban ID!",
461 "no_id_required": "Nije potreban ID. Nadopunite i potrošite bilo gdje",
462 + "no_providers_available": "Nema dostupnih pružatelja usluga",
463 "no_relay_on_domain": "Ne postoji relej za korisničku domenu ili je relej nedostupan. Odaberite relej za korištenje.",
464 "no_relays": "Nema releja",
465 "no_relays_message": "Pronašli smo zapis Nostr NIP-05 za ovog korisnika, ali on ne sadrži nikakve releje. Uputite primatelja da doda releje u svoj Nostr zapis.",
@@ -674,6 +675,7 @@
675 "select_destination": "Odaberite odredište za datoteku sigurnosne kopije.",
676 "select_hw_account_below": "Molimo odaberite koji će se račun vratiti u nastavku:",
677 "select_sell_provider_notice": "Gore odaberite pružatelja usluga prodaje. Ovaj zaslon možete preskočiti postavljanjem zadanog pružatelja usluga prodaje u postavkama aplikacije.",
678 + "selected_trocador_provider": "Odabrani pružatelj usluga trokadora",
679 "select_your_country": "Odaberite svoju zemlju",
680 "sell": "Prodavati",
681 "sell_alert_content": "Trenutno podržavamo samo prodaju Bitcoina, Ethereuma i Litecoina. Izradite ili prijeđite na svoj Bitcoin, Ethereum ili Litecoin novčanik.",
res/values/strings_id.arb
+2
@@ -459,6 +459,7 @@
459 "no_cards_found": "Tidak ada kartu yang ditemukan",
460 "no_id_needed": "Tidak perlu ID!",
461 "no_id_required": "Tidak perlu ID. Isi ulang dan belanja di mana saja",
462 + "no_providers_available": "Tidak ada penyedia yang tersedia",
463 "no_relay_on_domain": "Tidak ada relai untuk domain pengguna atau relai tidak tersedia. Silakan pilih relai yang akan digunakan.",
464 "no_relays": "Tidak ada relay",
465 "no_relays_message": "Kami menemukan catatan Nostr NIP-05 untuk pengguna ini, tetapi tidak berisi relay apa pun. Harap instruksikan penerima untuk menambahkan relay ke catatan Nostr mereka.",
@@ -677,6 +678,7 @@
678 "select_destination": "Silakan pilih tujuan untuk file cadangan.",
679 "select_hw_account_below": "Pilih akun mana yang akan dikembalikan di bawah ini:",
680 "select_sell_provider_notice": "Pilih penyedia jual di atas. Anda dapat melewati layar ini dengan mengatur penyedia penjualan default Anda di pengaturan aplikasi.",
681 + "selected_trocador_provider": "Penyedia Trocador Terpilih",
682 "select_your_country": "Pilih negara Anda",
683 "sell": "Jual",
684 "sell_alert_content": "Saat ini kami hanya mendukung penjualan Bitcoin, Ethereum, dan Litecoin. Harap buat atau alihkan ke dompet Bitcoin, Ethereum, atau Litecoin Anda.",
res/values/strings_it.arb
+2
@@ -459,6 +459,7 @@
459 "no_cards_found": "Nessuna carta trovata",
460 "no_id_needed": "Nessun ID necessario!",
461 "no_id_required": "Nessun ID richiesto. Ricarica e spendi ovunque",
462 + "no_providers_available": "Nessun fornitore disponibile",
463 "no_relay_on_domain": "Non esiste un inoltro per il dominio dell'utente oppure l'inoltro non è disponibile. Scegli un relay da utilizzare.",
464 "no_relays": "Nessun relay",
465 "no_relays_message": "Abbiamo trovato un record Nostr NIP-05 per questo utente, ma non contiene alcun relay. Indica al destinatario di aggiungere relay al proprio record Nostr.",
@@ -673,6 +674,7 @@
674 "select_backup_file": "Seleziona file di backup",
675 "select_buy_provider_notice": "Seleziona un provider di acquisto sopra. È possibile saltare questa schermata impostando il provider di acquisto predefinito nelle impostazioni dell'app.",
676 "select_destination": "Seleziona la destinazione per il file di backup.",
677 + "selected_trocador_provider": "Provider di Trocador selezionato",
678 "select_hw_account_below": "Seleziona quale account ripristinare:",
679 "select_sell_provider_notice": "Seleziona un provider di vendita sopra. Puoi saltare questa schermata impostando il tuo provider di vendita predefinito nelle impostazioni dell'app.",
680 "select_your_country": "Seleziona il tuo paese",
res/values/strings_ja.arb
+2
@@ -460,6 +460,7 @@
460 "no_cards_found": "カードは見つかりません",
461 "no_id_needed": "IDは必要ありません!",
462 "no_id_required": "IDは必要ありません。どこにでも補充して使用できます",
463 + "no_providers_available": "プロバイダーは利用できません",
464 "no_relay_on_domain": "ユーザーのドメインのリレーが存在しないか、リレーが使用できません。使用するリレーを選択してください。",
465 "no_relays": "リレーなし",
466 "no_relays_message": "このユーザーの Nostr NIP-05 レコードが見つかりましたが、リレーは含まれていません。受信者に Nostr レコードにリレーを追加するよう指示してください。",
@@ -675,6 +676,7 @@
676 "select_destination": "バックアップファイルの保存先を選択してください。",
677 "select_hw_account_below": "以下に復元するアカウントを選択してください。",
678 "select_sell_provider_notice": "上記の販売プロバイダーを選択してください。アプリ設定でデフォルトの販売プロバイダーを設定することで、この画面をスキップできます。",
679 + "selected_trocador_provider": "選択したTrocadorプロバイダー",
680 "select_your_country": "あなたの国を選択してください",
681 "sell": "売る",
682 "sell_alert_content": "現在、ビットコイン、イーサリアム、ライトコインの販売のみをサポートしています。ビットコイン、イーサリアム、またはライトコインのウォレットを作成するか、これらのウォレットに切り替えてください。",
res/values/strings_ko.arb
+2
@@ -459,6 +459,7 @@
459 "no_cards_found": "카드를 찾지 못했습니다",
460 "no_id_needed": "ID가 필요하지 않습니다!",
461 "no_id_required": "신분증이 필요하지 않습니다. 충전하고 어디에서나 사용하세요",
462 + "no_providers_available": "제공되는 제공자가 없습니다",
463 "no_relay_on_domain": "사용자 도메인에 릴레이가 없거나 릴레이를 사용할 수 없습니다. 사용할 릴레이를 선택해주세요.",
464 "no_relays": "릴레이 없음",
465 "no_relays_message": "이 사용자에 대한 Nostr NIP-05 레코드를 찾았지만 릴레이가 포함되어 있지 않습니다. 수신자에게 Nostr 기록에 릴레이를 추가하도록 지시하십시오.",
@@ -674,6 +675,7 @@
675 "select_destination": "백업 파일의 대상을 선택하십시오.",
676 "select_hw_account_below": "아래를 복원 할 계정을 선택하십시오.",
677 "select_sell_provider_notice": "위에서 판매 공급자를 선택하세요. 앱 설정에서 기본 판매 공급자를 설정하면 이 화면을 건너뛸 수 있습니다.",
678 + "selected_trocador_provider": "선정 된 트로 코더 제공 업체",
679 "select_your_country": "국가를 선택하십시오",
680 "sell": "팔다",
681 "sell_alert_content": "현재 Bitcoin, Ethereum 및 Litecoin의 판매만 지원합니다. Bitcoin, Ethereum 또는 Litecoin 지갑을 생성하거나 전환하십시오.",
res/values/strings_my.arb
+2
@@ -459,6 +459,7 @@
459 "no_cards_found": "ကဒ်များမရှိပါ",
460 "no_id_needed": "ID မလိုအပ်ပါ။",
461 "no_id_required": "ID မလိုအပ်ပါ။ ငွေဖြည့်ပြီး ဘယ်နေရာမဆို သုံးစွဲပါ။",
462 + "no_providers_available": "မရရှိနိုင်ပါ",
463 "no_relay_on_domain": "အသုံးပြုသူ၏ဒိုမိန်းအတွက် ထပ်ဆင့်လွှင့်ခြင်း မရှိပါ သို့မဟုတ် ထပ်ဆင့်လွှင့်ခြင်း မရနိုင်ပါ။ အသုံးပြုရန် relay ကိုရွေးချယ်ပါ။",
464 "no_relays": "Relay မရှိပါ။",
465 "no_relays_message": "ဤအသုံးပြုသူအတွက် Nostr NIP-05 မှတ်တမ်းကို ကျွန်ုပ်တို့တွေ့ရှိသော်လည်း ၎င်းတွင် မည်သည့် relays မှ မပါဝင်ပါ။ ကျေးဇူးပြု၍ လက်ခံသူကို ၎င်းတို့၏ Nostr မှတ်တမ်းတွင် ထပ်လောင်းထည့်ရန် ညွှန်ကြားပါ။",
@@ -674,6 +675,7 @@
675 "select_destination": "အရန်ဖိုင်အတွက် ဦးတည်ရာကို ရွေးပါ။",
676 "select_hw_account_below": "အောက်ဖော်ပြပါမည်သည့်အကောင့်ကိုရွေးပါ။",
677 "select_sell_provider_notice": "အထက်ဖော်ပြပါ အရောင်းဝန်ဆောင်မှုပေးသူကို ရွေးပါ။ အက်ပ်ဆက်တင်များတွင် သင်၏မူလရောင်းချပေးသူကို သတ်မှတ်ခြင်းဖြင့် ဤစခရင်ကို ကျော်နိုင်သည်။",
678 + "selected_trocador_provider": "ရွေးချယ်ထား Tracador ပံ့ပိုးပေး",
679 "select_your_country": "ကျေးဇူးပြု. သင့်နိုင်ငံကိုရွေးချယ်ပါ",
680 "sell": "ရောင်း",
681 "sell_alert_content": "ကျွန်ုပ်တို့သည် လက်ရှိတွင် Bitcoin၊ Ethereum နှင့် Litecoin ရောင်းချခြင်းကိုသာ ပံ့ပိုးပေးပါသည်။ သင်၏ Bitcoin၊ Ethereum သို့မဟုတ် Litecoin ပိုက်ဆံအိတ်ကို ဖန်တီးပါ သို့မဟုတ် ပြောင်းပါ။",
res/values/strings_nl.arb
+2
@@ -459,6 +459,7 @@
459 "no_cards_found": "Geen kaarten gevonden",
460 "no_id_needed": "Geen ID nodig!",
461 "no_id_required": "Geen ID vereist. Opwaarderen en overal uitgeven",
462 + "no_providers_available": "Geen providers beschikbaar",
463 "no_relay_on_domain": "Er is geen relay voor het domein van de gebruiker of de relay is niet beschikbaar. Kies een relais dat u wilt gebruiken.",
464 "no_relays": "Geen relais",
465 "no_relays_message": "We hebben een Nostr NIP-05-record voor deze gebruiker gevonden, maar deze bevat geen relays. Instrueer de ontvanger om relays toe te voegen aan zijn Nostr-record.",
@@ -674,6 +675,7 @@
675 "select_destination": "Selecteer de bestemming voor het back-upbestand.",
676 "select_hw_account_below": "Selecteer welk account u hieronder moet herstellen:",
677 "select_sell_provider_notice": "Selecteer hierboven een verkoopaanbieder. U kunt dit scherm overslaan door uw standaardverkoopprovider in te stellen in de app-instellingen.",
678 + "selected_trocador_provider": "Geselecteerde Trocador -provider",
679 "select_your_country": "Selecteer uw land",
680 "sell": "Verkopen",
681 "sell_alert_content": "We ondersteunen momenteel alleen de verkoop van Bitcoin, Ethereum en Litecoin. Maak of schakel over naar uw Bitcoin-, Ethereum- of Litecoin-portemonnee.",
res/values/strings_pl.arb
+2
@@ -459,6 +459,7 @@
459 "no_cards_found": "Nie znaleziono żadnych kart",
460 "no_id_needed": "Nie potrzeba Dowodu!",
461 "no_id_required": "Nie wymagamy Dowodu. Doładuj i wydawaj gdziekolwiek",
462 + "no_providers_available": "Brak dostępnych dostawców",
463 "no_relay_on_domain": "Brak przekaźnika dla domeny użytkownika lub przekaźnik jest niedostępny. Wybierz przekaźnik, którego chcesz użyć.",
464 "no_relays": "Żadnych przekaźników",
465 "no_relays_message": "Znaleźliśmy rekord Nostr NIP-05 dla tego użytkownika, ale nie zawiera on żadnych przekaźników. Poinstruuj odbiorcę, aby dodał przekaźniki do swojego rekordu Nostr.",
@@ -674,6 +675,7 @@
675 "select_destination": "Wybierz miejsce docelowe dla pliku kopii zapasowej.",
676 "select_hw_account_below": "Wybierz, które konto przywrócić poniżej:",
677 "select_sell_provider_notice": "Wybierz dostawcę sprzedaży powyżej. Możesz pominąć ten ekran, ustawiając domyślnego dostawcę sprzedaży w ustawieniach aplikacji.",
678 + "selected_trocador_provider": "Wybrany dostawca Trocador",
679 "select_your_country": "Wybierz swój kraj",
680 "sell": "Sprzedać",
681 "sell_alert_content": "Obecnie obsługujemy tylko sprzedaż Bitcoin, Ethereum i Litecoin. Utwórz lub przełącz się na swój portfel Bitcoin, Ethereum lub Litecoin.",
res/values/strings_pt.arb
+2
@@ -460,6 +460,7 @@
460 "no_cards_found": "Nenhum cartão encontrado",
461 "no_id_needed": "Nenhum ID necessário!",
462 "no_id_required": "Não é necessário ID. Recarregue e gaste em qualquer lugar",
463 + "no_providers_available": "Nenhum fornecedor disponível",
464 "no_relay_on_domain": "Não há uma retransmissão para o domínio do usuário ou a retransmissão está indisponível. Escolha um relé para usar.",
465 "no_relays": "Sem relés",
466 "no_relays_message": "Encontramos um registro Nostr NIP-05 para este usuário, mas ele não contém nenhum relé. Instrua o destinatário a adicionar retransmissões ao seu registro Nostr.",
@@ -676,6 +677,7 @@
677 "select_destination": "Selecione o destino para o arquivo de backup.",
678 "select_hw_account_below": "Selecione qual conta para restaurar abaixo:",
679 "select_sell_provider_notice": "Selecione um fornecedor de venda acima. Você pode pular esta tela definindo seu provedor de venda padrão nas configurações do aplicativo.",
680 + "selected_trocador_provider": "Provedor de Trocador selecionado",
681 "select_your_country": "Selecione seu país",
682 "sell": "Vender",
683 "sell_alert_content": "Atualmente, oferecemos suporte apenas à venda de Bitcoin, Ethereum e Litecoin. Crie ou troque para sua carteira Bitcoin, Ethereum ou Litecoin.",
res/values/strings_ru.arb
+2
@@ -459,6 +459,7 @@
459 "no_cards_found": "Карт не найдено",
460 "no_id_needed": "Идентификатор не нужен!",
461 "no_id_required": "Идентификатор не требуется. Пополняйте и тратьте где угодно",
462 + "no_providers_available": "Нет доступных поставщиков",
463 "no_relay_on_domain": "Для домена пользователя реле не существует или реле недоступно. Пожалуйста, выберите реле для использования.",
464 "no_relays": "Нет реле",
465 "no_relays_message": "Мы нашли запись Nostr NIP-05 для этого пользователя, но она не содержит никаких реле. Попросите получателя добавить реле в свою запись Nostr.",
@@ -675,6 +676,7 @@
676 "select_destination": "Пожалуйста, выберите место для файла резервной копии.",
677 "select_hw_account_below": "Пожалуйста, выберите, какую учетную запись восстановить ниже:",
678 "select_sell_provider_notice": "Выберите поставщика услуг продажи выше. Вы можете пропустить этот экран, установив поставщика услуг продаж по умолчанию в настройках приложения.",
679 + "selected_trocador_provider": "Выбранный провайдер Трокадора",
680 "select_your_country": "Пожалуйста, выберите свою страну",
681 "sell": "Продавать",
682 "sell_alert_content": "В настоящее время мы поддерживаем только продажу биткойнов, эфириума и лайткойна. Пожалуйста, создайте или переключитесь на свой кошелек Bitcoin, Ethereum или Litecoin.",
res/values/strings_th.arb
+2
@@ -459,6 +459,7 @@
459 "no_cards_found": "ไม่พบการ์ด",
460 "no_id_needed": "ไม่จำเป็นต้องใช้บัตรประชาชน!",
461 "no_id_required": "ไม่จำเป็นต้องใช้บัตรประจำตัว ฝากเงินและใช้งานได้ทุกที่",
462 + "no_providers_available": "ไม่มีผู้ให้บริการ",
463 "no_relay_on_domain": "ไม่มีการส่งต่อสำหรับโดเมนของผู้ใช้ หรือการส่งต่อไม่พร้อมใช้งาน กรุณาเลือกรีเลย์ที่จะใช้",
464 "no_relays": "ไม่มีรีเลย์",
465 "no_relays_message": "เราพบบันทึก Nostr NIP-05 สำหรับผู้ใช้รายนี้ แต่ไม่มีรีเลย์ใดๆ โปรดแนะนำให้ผู้รับเพิ่มรีเลย์ลงในบันทึก Nostr ของตน",
@@ -674,6 +675,7 @@
675 "select_destination": "โปรดเลือกปลายทางสำหรับไฟล์สำรอง",
676 "select_hw_account_below": "กรุณาเลือกบัญชีที่จะกู้คืนด้านล่าง:",
677 "select_sell_provider_notice": "เลือกผู้ให้บริการการขายด้านบน คุณสามารถข้ามหน้าจอนี้ได้โดยการตั้งค่าผู้ให้บริการการขายเริ่มต้นในการตั้งค่าแอป",
678 + "selected_trocador_provider": "ผู้ให้บริการ Trocador ที่เลือก",
679 "select_your_country": "กรุณาเลือกประเทศของคุณ",
680 "sell": "ขาย",
681 "sell_alert_content": "ขณะนี้เรารองรับการขาย Bitcoin, Ethereum และ Litecoin เท่านั้น โปรดสร้างหรือเปลี่ยนเป็นกระเป๋าเงิน Bitcoin, Ethereum หรือ Litecoin ของคุณ",
res/values/strings_tl.arb
+2
@@ -459,6 +459,7 @@
459 "no_cards_found": "Walang nahanap na mga card",
460 "no_id_needed": "Hindi kailangan ng ID!",
461 "no_id_required": "Hindi kailangan ng ID. I-top up at gumastos kahit saan",
462 + "no_providers_available": "Walang magagamit na mga nagbibigay",
463 "no_relay_on_domain": "Walang relay para sa domain ng user o hindi available ang relay. Mangyaring pumili ng relay na gagamitin.",
464 "no_relays": "Walang mga relay",
465 "no_relays_message": "Nakakita kami ng Nostr NIP-05 record para sa user na ito, ngunit hindi ito naglalaman ng anumang mga relay. Mangyaring atasan ang tatanggap na magdagdag ng mga relay sa kanilang Nostr record.",
@@ -674,6 +675,7 @@
675 "select_destination": "Mangyaring piliin ang patutunguhan para sa backup na file.",
676 "select_hw_account_below": "Mangyaring piliin kung aling account ang ibabalik sa ibaba:",
677 "select_sell_provider_notice": "Pumili ng provider ng nagbebenta sa itaas. Maaari mong laktawan ang screen na ito sa pamamagitan ng pagtatakda ng iyong default na sell provider sa mga setting ng app.",
678 + "selected_trocador_provider": "Napiling Trocador Provider",
679 "select_your_country": "Mangyaring piliin ang iyong bansa",
680 "sell": "Ibenta",
681 "sell_alert_content": "Kasalukuyan lamang naming sinusuportahan ang pagbebenta ng Bitcoin, Ethereum at Litecoin. Mangyaring lumikha o lumipat sa iyong Bitcoin, Ethereum o Litecoin wallet.",
res/values/strings_tr.arb
+2
@@ -459,6 +459,7 @@
459 "no_cards_found": "Kart bulunamadı",
460 "no_id_needed": "Kimlik gerekmez!",
461 "no_id_required": "Kimlik gerekmez. Para yükleyin ve istediğiniz yerde harcayın",
462 + "no_providers_available": "Sağlayıcı yok",
463 "no_relay_on_domain": "Kullanıcının alanı için bir geçiş yok veya geçiş kullanılamıyor. Lütfen kullanmak için bir röle seçin.",
464 "no_relays": "Röle yok",
465 "no_relays_message": "Bu kullanıcı için bir Nostr NIP-05 kaydı bulduk ancak bu kayıt herhangi bir aktarma içermiyor. Lütfen alıcıya Nostr kayıtlarına aktarma eklemesi talimatını verin.",
@@ -674,6 +675,7 @@
675 "select_destination": "Lütfen yedekleme dosyası için hedef seçin.",
676 "select_hw_account_below": "Lütfen aşağıda hangi hesabı geri yükleyeceğinizi seçin:",
677 "select_sell_provider_notice": "Yukarıdan bir satış sağlayıcısı seçin. Uygulama ayarlarında varsayılan satış sağlayıcınızı ayarlayarak bu ekranı atlayabilirsiniz.",
678 + "selected_trocador_provider": "Seçilmiş Trocador Sağlayıcı",
679 "select_your_country": "Lütfen ülkenizi seçin",
680 "sell": "Satış",
681 "sell_alert_content": "Şu anda yalnızca Bitcoin, Ethereum ve Litecoin satışını destekliyoruz. Lütfen Bitcoin, Ethereum veya Litecoin cüzdanınızı oluşturun veya cüzdanınıza geçin.",
res/values/strings_uk.arb
+2
@@ -459,6 +459,7 @@
459 "no_cards_found": "Карт не знайдено",
460 "no_id_needed": "Ідентифікатор не потрібен!",
461 "no_id_required": "Ідентифікатор не потрібен. Поповнюйте та витрачайте будь-де",
462 + "no_providers_available": "Немає постачальників",
463 "no_relay_on_domain": "Немає ретранслятора для домену користувача або ретранслятор недоступний. Будь ласка, виберіть реле для використання.",
464 "no_relays": "Без реле",
465 "no_relays_message": "Ми знайшли запис Nostr NIP-05 для цього користувача, але він не містить жодних реле. Будь ласка, попросіть одержувача додати реле до свого запису Nostr.",
@@ -675,6 +676,7 @@
676 "select_destination": "Виберіть місце призначення для файлу резервної копії.",
677 "select_hw_account_below": "Виберіть, який рахунок відновити нижче:",
678 "select_sell_provider_notice": "Виберіть вище постачальника послуг продажу. Ви можете пропустити цей екран, встановивши постачальника послуг продажу за умовчанням у налаштуваннях програми.",
679 + "selected_trocador_provider": "Вибраний постачальник Trocador",
680 "select_your_country": "Будь ласка, виберіть свою країну",
681 "sell": "Продати",
682 "sell_alert_content": "Наразі ми підтримуємо лише продаж Bitcoin, Ethereum і Litecoin. Створіть або перейдіть на свій гаманець Bitcoin, Ethereum або Litecoin.",
res/values/strings_ur.arb
+2
@@ -459,6 +459,7 @@
459 "no_cards_found": "کوئی کارڈ نہیں ملا",
460 "no_id_needed": "شناخت کی ضرورت نہیں!",
461 "no_id_required": "کوئی ID درکار نہیں۔ ٹاپ اپ اور کہیں بھی خرچ کریں۔",
462 + "no_providers_available": "کوئی فراہم کنندہ دستیاب نہیں ہے",
463 "no_relay_on_domain": "۔ﮟﯾﺮﮐ ﺏﺎﺨﺘﻧﺍ ﺎﮐ ﮯﻠﯾﺭ ﮯﯿﻟ ﮯﮐ ﮯﻧﺮﮐ ﻝﺎﻤﻌﺘﺳﺍ ﻡﺮﮐ ﮦﺍﺮﺑ ۔ﮯﮨ ﮟﯿﮩﻧ ﺏﺎﯿﺘﺳﺩ ﮯﻠﯾﺭ ﺎﯾ ﮯﮨ ﮟ",
464 "no_relays": "۔ﮟﯿﮩﻧ ﮯﻠﯾﺭ ﯽﺋﻮﮐ",
465 "no_relays_message": "۔ﮟﯾﺮﮐ ﻞﻣﺎﺷ ﮯﻠﯾﺭ ﮟﯿﻣ ﮈﺭﺎﮑﯾﺭ ﺮﭩﺳﻮﻧ ﮯﻨﭘﺍ ﮦﻭ ﮧﮐ ﮟﯾﺩ ﺖﯾﺍﺪﮨ ﻮﮐ ﮦﺪﻨﻨﮐ ﻝﻮﺻﻭ ﻡﺮﮐ ﮦﺍﺮﺑ ۔",
@@ -676,6 +677,7 @@
677 "select_destination": "۔ﮟﯾﺮﮐ ﺏﺎﺨﺘﻧﺍ ﺎﮐ ﻝﺰﻨﻣ ﮯﯿﻟ ﮯﮐ ﻞﺋﺎﻓ ﭖﺍ ﮏﯿﺑ ﻡﺮﮐ ﮦﺍﺮﺑ",
678 "select_hw_account_below": "براہ کرم ذیل میں کون سا اکاؤنٹ بحال کرنا ہے منتخب کریں:",
679 "select_sell_provider_notice": "۔ﮟﯿﮨ ﮯﺘﮑﺳ ﮌﻮﮭﭼ ﻮﮐ ﻦﯾﺮﮑﺳﺍ ﺱﺍ ﺮﮐ ﮮﺩ ﺐﯿﺗﺮﺗ ﻮﮐ ﮦﺪﻨﻨﮐ ﻢﮨﺍﺮﻓ ﻞﯿﺳ ﭧﻟﺎﻔﯾﮈ ﮯﻨﭘﺍ ﮟﯿﻣ ﺕﺎﺒ",
680 + "selected_trocador_provider": "منتخب کردہ ٹروکاڈور فراہم کنندہ",
681 "select_your_country": "براہ کرم اپنے ملک کو منتخب کریں",
682 "sell": "بیچنا",
683 "sell_alert_content": "۔ﮟﯾﺮﮐ ﭻﺋﻮﺳ ﺮﭘ ﺱﺍ ﺎﯾ ﮟﯿﺋﺎﻨﺑ ﭧﯿﻟﺍﻭ Litecoin ﺎﯾ Bitcoin، Ethereum ﺎﻨﭘﺍ ﻡﺮﮐ ﮦﺍﺮﺑ ۔",
res/values/strings_yo.arb
+2
@@ -460,6 +460,7 @@
460 "no_cards_found": "Ko si awọn kaadi ti a rii",
461 "no_id_needed": "Ẹ kò nílò àmì ìdánimọ̀!",
462 "no_id_required": "Ẹ kò nílò àmì ìdánimọ̀. Ẹ lè fikún owó àti san níbikíbi",
463 + "no_providers_available": "Ko si awọn olupese ti o wa",
464 "no_relay_on_domain": "Ko si iṣipopada fun agbegbe olumulo tabi yiyi ko si. Jọwọ yan yii lati lo.",
465 "no_relays": "Ko si relays",
466 "no_relays_message": "A ri igbasilẹ Nostr NIP-05 fun olumulo yii, ṣugbọn ko ni eyikeyi awọn iṣipopada ninu. Jọwọ sọ fun olugba lati ṣafikun awọn isunmọ si igbasilẹ Nostr wọn.",
@@ -675,6 +676,7 @@
676 "select_destination": "Jọwọ yan ibi ti o nlo fun faili afẹyinti.",
677 "select_hw_account_below": "Jọwọ yan iru iroyin lati mu pada ni isalẹ:",
678 "select_sell_provider_notice": "Yan olupese ti o ta loke. O le foju iboju yii nipa tito olupese iṣẹ tita aiyipada rẹ ni awọn eto app.",
679 + "selected_trocador_provider": "olupese trocador ti a yan",
680 "select_your_country": "Jọwọ yan orilẹ-ede rẹ",
681 "sell": "Tà",
682 "sell_alert_content": "Lọwọlọwọ a ṣe atilẹyin tita Bitcoin, Ethereum ati Litecoin nikan. Jọwọ ṣẹda tabi yipada si Bitcoin, Ethereum tabi apamọwọ Litecoin rẹ.",
res/values/strings_zh.arb
+2
@@ -459,6 +459,7 @@
459 "no_cards_found": "找不到卡",
460 "no_id_needed": "不需要 ID!",
461 "no_id_required": "不需要身份证。充值并在任何地方消费",
462 + "no_providers_available": "没有提供商可用",
463 "no_relay_on_domain": "用户域没有中继或中继不可用。请选择要使用的继电器。",
464 "no_relays": "无继电器",
465 "no_relays_message": "我们找到了该用户的 Nostr NIP-05 记录,但它不包含任何中继。请指示收件人将中继添加到他们的 Nostr 记录中。",
@@ -674,6 +675,7 @@
675 "select_destination": "请选择备份文件的目的地。",
676 "select_hw_account_below": "请在下面选择要还原的帐户:",
677 "select_sell_provider_notice": "选择上面的销售提供商。您可以通过在应用程序设置中设置默认销售提供商来跳过此屏幕。",
678 + "selected_trocador_provider": "选定的trocador提供商",
679 "select_your_country": "请选择你的国家",
680 "sell": "卖",
681 "sell_alert_content": "我们目前仅支持比特币、以太坊和莱特币的销售。请创建或切换到您的比特币、以太坊或莱特币钱包。",