From b387c6182ae504ae7a55f5ad8bfc7f88af79f1a3 Mon Sep 17 00:00:00 2001 From: Serhii Date: Tue, 11 Mar 2025 21:51:52 +0200 Subject: [PATCH] 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 * backward compatibility for Trocador provider states * minor fix --------- Co-authored-by: Omar Hatem --- lib/di.dart | 10 +- lib/entities/preferences_key.dart | 1 + .../provider/trocador_exchange_provider.dart | 70 ++++++++++--- .../exchange_trade/exchange_confirm_page.dart | 47 ++++++--- .../settings/trocador_providers_page.dart | 97 ++++++++++++++++--- lib/store/settings_store.dart | 47 +++++++-- .../exchange/exchange_view_model.dart | 22 +++++ .../trocador_providers_view_model.dart | 35 ++++++- res/values/strings_ar.arb | 2 + res/values/strings_bg.arb | 2 + res/values/strings_cs.arb | 2 + res/values/strings_de.arb | 2 + res/values/strings_en.arb | 2 + res/values/strings_es.arb | 2 + res/values/strings_fr.arb | 2 + res/values/strings_ha.arb | 2 + res/values/strings_hi.arb | 2 + res/values/strings_hr.arb | 2 + res/values/strings_id.arb | 2 + res/values/strings_it.arb | 2 + res/values/strings_ja.arb | 2 + res/values/strings_ko.arb | 2 + res/values/strings_my.arb | 2 + res/values/strings_nl.arb | 2 + res/values/strings_pl.arb | 2 + res/values/strings_pt.arb | 2 + res/values/strings_ru.arb | 2 + res/values/strings_th.arb | 2 + res/values/strings_tl.arb | 2 + res/values/strings_tr.arb | 2 + res/values/strings_uk.arb | 2 + res/values/strings_ur.arb | 2 + res/values/strings_yo.arb | 2 + res/values/strings_zh.arb | 2 + 34 files changed, 327 insertions(+), 54 deletions(-) diff --git a/lib/di.dart b/lib/di.dart index c4ecb74ca..7e844b37c 100644 --- a/lib/di.dart +++ b/lib/di.dart @@ -33,6 +33,11 @@ import 'package:cake_wallet/entities/contact_record.dart'; import 'package:cake_wallet/entities/exchange_api_mode.dart'; import 'package:cake_wallet/entities/hardware_wallet/require_hardware_wallet_connection.dart'; import 'package:cake_wallet/entities/parse_address_from_domain.dart'; +import 'package:cake_wallet/exchange/provider/trocador_exchange_provider.dart'; +import 'package:cake_wallet/view_model/link_view_model.dart'; +import 'package:cake_wallet/tron/tron.dart'; +import 'package:cake_wallet/src/screens/transaction_details/rbf_details_page.dart'; +import 'package:cw_core/receive_page_option.dart'; import 'package:cake_wallet/entities/wallet_edit_page_arguments.dart'; import 'package:cake_wallet/entities/wallet_manager.dart'; import 'package:cake_wallet/src/screens/buy/buy_sell_options_page.dart'; @@ -897,7 +902,10 @@ Future setup({ return PrivacySettingsViewModel(getIt.get(), getIt.get().wallet!); }); - getIt.registerFactory(() => TrocadorProvidersViewModel(getIt.get())); + getIt.registerFactory(() => TrocadorExchangeProvider()); + + getIt.registerFactory(() => TrocadorProvidersViewModel( + getIt.get(), getIt.get())); getIt.registerFactory(() { return OtherSettingsViewModel(getIt.get(), getIt.get().wallet!, diff --git a/lib/entities/preferences_key.dart b/lib/entities/preferences_key.dart index 15baa02b8..7fbdb645a 100644 --- a/lib/entities/preferences_key.dart +++ b/lib/entities/preferences_key.dart @@ -86,6 +86,7 @@ class PreferencesKey { '${PreferencesKey.moneroWalletPasswordUpdateV1Base}_${name}'; static const exchangeProvidersSelection = 'exchange-providers-selection'; + static const trocadorProviderStatesKey = 'trocador_provider_states'; static const autoGenerateSubaddressStatusKey = 'auto_generate_subaddress_status'; static const moneroSeedType = 'monero_seed_type'; static const bitcoinSeedType = 'bitcoin_seed_type'; diff --git a/lib/exchange/provider/trocador_exchange_provider.dart b/lib/exchange/provider/trocador_exchange_provider.dart index 4d262049f..26a9b2e35 100644 --- a/lib/exchange/provider/trocador_exchange_provider.dart +++ b/lib/exchange/provider/trocador_exchange_provider.dart @@ -19,7 +19,7 @@ class TrocadorExchangeProvider extends ExchangeProvider { super(pairList: supportedPairs(_notSupported)); bool useTorOnly; - final Map providerStates; + Map providerStates; static const List availableProviders = [ 'Swapter', @@ -59,6 +59,8 @@ class TrocadorExchangeProvider extends ExchangeProvider { static const createTradePath = '/new_trade'; static const tradePath = '/trade'; static const coinPath = '/coin'; + static const providersListPath = '/exchanges'; + String _lastUsedRateId; List _provider; @@ -147,7 +149,14 @@ class TrocadorExchangeProvider extends ExchangeProvider { final rateId = responseJSON['trade_id'] as String? ?? ''; var quotes = responseJSON['quotes']['quotes'] as List; - _provider = quotes.map((quote) => quote['provider']).toList(); + _provider = quotes + .where((quote) => providerStates[quote['provider']] != false) + .map((quote) => quote['provider']) + .toList(); + + if (_provider.isEmpty) { + throw Exception('No enabled providers found for the selected trade.'); + } if (rateId.isNotEmpty) _lastUsedRateId = rateId; @@ -190,20 +199,11 @@ class TrocadorExchangeProvider extends ExchangeProvider { params['id'] = _lastUsedRateId; } - String firstAvailableProvider = ''; - - for (var provider in _provider) { - if (providerStates.containsKey(provider) && providerStates[provider] == true) { - firstAvailableProvider = provider as String; - break; - } - } - - if (firstAvailableProvider.isEmpty) { + if (_provider.isEmpty) { throw Exception('No available provider is enabled'); } - params['provider'] = firstAvailableProvider; + params['provider'] = _provider.first as String; final uri = await _getUri(createTradePath, params); final response = await get(uri, headers: {'API-Key': apiKey}); @@ -288,6 +288,24 @@ class TrocadorExchangeProvider extends ExchangeProvider { }); } + Future> fetchProviders() async { + final uri = await _getUri(providersListPath, {'api_key': apiKey}); + final response = await get(uri); + + if (response.statusCode != 200) + throw Exception('Unexpected http status: ${response.statusCode}'); + + final responseJSON = json.decode(response.body) as Map; + + final providersJsonList = responseJSON['list'] as List; + final filteredProvidersList = providersJsonList + .map((providerJson) => TrocadorPartners.fromJson(providerJson as Map)) + .where((provider) => provider.rating != 'D') + .toList(); + filteredProvidersList.sort((a, b) => a.rating.compareTo(b.rating)); + return filteredProvidersList; + } + String _networkFor(CryptoCurrency currency) { switch (currency) { case CryptoCurrency.eth: @@ -343,3 +361,29 @@ class TrocadorExchangeProvider extends ExchangeProvider { } } } + +class TrocadorPartners { + final String name; + final String rating; + final double? insurance; + final bool? enabledMarkup; + final double? eta; + + TrocadorPartners({ + required this.name, + required this.rating, + required this.insurance, + required this.enabledMarkup, + required this.eta, + }); + + factory TrocadorPartners.fromJson(Map json) { + return TrocadorPartners( + name: json['name'] as String? ?? '', + rating: json['rating'] as String? ?? 'N/A', + insurance: json['insurance'] as double?, + enabledMarkup: json['enabledmarkup'] as bool?, + eta: json['eta'] as double?, + ); + } +} diff --git a/lib/src/screens/exchange_trade/exchange_confirm_page.dart b/lib/src/screens/exchange_trade/exchange_confirm_page.dart index a179ee473..cbf29b19b 100644 --- a/lib/src/screens/exchange_trade/exchange_confirm_page.dart +++ b/lib/src/screens/exchange_trade/exchange_confirm_page.dart @@ -97,22 +97,39 @@ class ExchangeConfirmPage extends BasePage { ], ), ), - Flexible( - child: Center( - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - (trade.provider.image?.isNotEmpty ?? false) - ? ImageUtil.getImageFromPath( - imagePath: trade.provider.image, width: 50) - : const SizedBox(), - if (!trade.provider.horizontalLogo) - Padding( - padding: const EdgeInsets.symmetric(horizontal: 8.0), - child: Text(trade.provider.title), + Expanded( + child: Column( + children: [ + if (trade.provider == ExchangeProviderDescription.trocador) + Padding( + padding: const EdgeInsets.only(top: 8.0), + child: Text( + S.of(context).selected_trocador_provider +':${trade.providerName}', + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 12.0, + fontWeight: FontWeight.w500, + color: Theme.of(context).extension()!.detailsTitlesColor), + ), + ), + Flexible( + child: Center( + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + (trade.provider.image?.isNotEmpty ?? false) + ? Image.asset(trade.provider.image, height: 50) + : const SizedBox(), + if (!trade.provider.horizontalLogo) + Padding( + padding: const EdgeInsets.symmetric(horizontal: 8.0), + child: Text(trade.provider.title), + ), + ], ), - ], - ), + ), + ), + ], ), ), ], diff --git a/lib/src/screens/settings/trocador_providers_page.dart b/lib/src/screens/settings/trocador_providers_page.dart index b972c22d5..d0646bb3a 100644 --- a/lib/src/screens/settings/trocador_providers_page.dart +++ b/lib/src/screens/settings/trocador_providers_page.dart @@ -1,4 +1,4 @@ -import 'package:cake_wallet/exchange/provider/trocador_exchange_provider.dart'; +import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/src/screens/base_page.dart'; import 'package:cake_wallet/src/screens/settings/widgets/settings_switcher_cell.dart'; import 'package:cake_wallet/view_model/settings/trocador_providers_view_model.dart'; @@ -15,23 +15,92 @@ class TrocadorProvidersPage extends BasePage { @override Widget body(BuildContext context) { - final availableProviders = TrocadorExchangeProvider.availableProviders; - final providerStates = trocadorProvidersViewModel.providerStates; return Container( padding: EdgeInsets.only(top: 10), - child: ListView.builder( - itemCount: availableProviders.length, - itemBuilder: (_, index) { - String provider = availableProviders[index]; - return Observer( - builder: (_) => SettingsSwitcherCell( - title: provider, - value: providerStates[provider] ?? false, - onValueChange: (BuildContext _, bool value) { - trocadorProvidersViewModel.toggleProviderState(provider); - })); + child: Observer( + builder: (_) { + if (trocadorProvidersViewModel.isLoading) { + return Center(child: CircularProgressIndicator()); + } + var providerStates = trocadorProvidersViewModel.providerStates; + final providerRatings = trocadorProvidersViewModel.providerRatings; + if (providerStates.isEmpty) { + return Center(child: Text(S.of(context).no_providers_available)); + } + return ListView.builder( + itemCount: providerStates.length, + itemBuilder: (_, index) { + final providerName = providerStates.keys.elementAt(index); + final providerEnabled = providerStates[providerName] ?? true; + return SettingsSwitcherCell( + title: providerName, + value: providerEnabled, + leading: Badge( + title: 'KYC \nRATING', + subTitle: providerRatings[providerName] ?? 'N/A', + textColor: Colors.white, + backgroundColor: Theme.of(context).primaryColor, + ), + onValueChange: (BuildContext _, value) => + trocadorProvidersViewModel.toggleProviderState(providerName), + ); + }, + ); }, ), ); } } + +class Badge extends StatelessWidget { + Badge({required this.textColor, required this.backgroundColor, required this.title, required this.subTitle}); + + final String title; + final String subTitle; + final Color textColor; + final Color backgroundColor; + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.only(right: 8), + child: FittedBox( + fit: BoxFit.fitHeight, + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 4), + decoration: BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(24)), color: backgroundColor), + alignment: Alignment.center, + child: IntrinsicHeight( + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Text( + title, + textAlign: TextAlign.center, + style: TextStyle( + color: textColor, + fontSize: 7, + fontWeight: FontWeight.w600, + ), + ), + VerticalDivider( + color: textColor, + thickness: 1, + ), + Text( + subTitle, + style: TextStyle( + color: textColor, + fontSize: 12, + fontWeight: FontWeight.w600, + ), + ), + ], + ), + ), + ), + ), + ); + } +} diff --git a/lib/store/settings_store.dart b/lib/store/settings_store.dart index 800c3634e..ef9ab94a4 100644 --- a/lib/store/settings_store.dart +++ b/lib/store/settings_store.dart @@ -1,3 +1,4 @@ +import 'dart:convert'; import 'dart:io'; import 'package:cake_wallet/bitcoin/bitcoin.dart'; @@ -224,12 +225,11 @@ abstract class SettingsStoreBase with Store { if (initialZanoTransactionPriority != null) { priority[WalletType.zano] = initialZanoTransactionPriority; } + if (initialCakePayCountry != null) { selectedCakePayCountry = initialCakePayCountry; } - initializeTrocadorProviderStates(); - reaction( (_) => fiatCurrency, (FiatCurrency fiatCurrency) => sharedPreferences.setString( @@ -1708,16 +1708,47 @@ abstract class SettingsStoreBase with Store { powNodes[walletType] = node; } - void initializeTrocadorProviderStates() { - for (var provider in TrocadorExchangeProvider.availableProviders) { - final savedState = _sharedPreferences.getBool(provider) ?? true; - trocadorProviderStates[provider] = savedState; + @action + Future updateAllTrocadorProviderStates(List availableProviders) async { + final jsonKey = PreferencesKey.trocadorProviderStatesKey; + String? serializedData = await _sharedPreferences.getString(jsonKey); + + if (serializedData == null) { + final Map migratedStates = {}; + for (final provider in TrocadorExchangeProvider.availableProviders) { + final oldState = _sharedPreferences.getBool(provider) ?? true; + migratedStates[provider] = oldState; + } + + trocadorProviderStates + ..clear() + ..addAll(migratedStates); + + await saveMapToString(jsonKey, trocadorProviderStates); + } else { + final decodedMap = json.decode(serializedData) as Map; + final oldMap = decodedMap.map((k, v) => MapEntry(k, v == true)); + + final Map newStates = { + for (final provider in availableProviders) provider: oldMap[provider] ?? true + }; + + trocadorProviderStates + ..clear() + ..addAll(newStates); + await saveMapToString(jsonKey, trocadorProviderStates); } } - void saveTrocadorProviderState(String providerName, bool state) { - _sharedPreferences.setBool(providerName, state); + @action + Future setTrocadorProviderState(String providerName, bool state) async { trocadorProviderStates[providerName] = state; + await saveMapToString(PreferencesKey.trocadorProviderStatesKey, trocadorProviderStates); + } + + Future saveMapToString(String key, Map map) async { + String serializedData = json.encode(map); + await _sharedPreferences.setString(key, serializedData); } static Future _getDeviceName() async { diff --git a/lib/view_model/exchange/exchange_view_model.dart b/lib/view_model/exchange/exchange_view_model.dart index f10860c7d..6a3b32b9b 100644 --- a/lib/view_model/exchange/exchange_view_model.dart +++ b/lib/view_model/exchange/exchange_view_model.dart @@ -118,6 +118,16 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with _setAvailableProviders(); calculateBestRate(); + autorun((_) { + if (selectedProviders.any((provider) => provider is TrocadorExchangeProvider)) { + final trocadorProvider = + selectedProviders.firstWhere((provider) => provider is TrocadorExchangeProvider) + as TrocadorExchangeProvider; + + updateAllTrocadorProviderStates(trocadorProvider); + } + }); + bestRateSync = Timer.periodic(Duration(seconds: 10), (timer) => calculateBestRate()); isDepositAddressEnabled = !(depositCurrency == wallet.currency); @@ -183,6 +193,7 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with useTorOnly: _useTorOnly, providerStates: _settingsStore.trocadorProviderStates), ]; + @observable ExchangeProvider? provider; @@ -810,6 +821,17 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with ); } + @action + Future updateAllTrocadorProviderStates(TrocadorExchangeProvider trocadorProvider) async { + try { + var providers = await trocadorProvider.fetchProviders(); + var providerNames = providers.map((e) => e.name).toList(); + await _settingsStore.updateAllTrocadorProviderStates(providerNames); + } catch (e) { + printV('Error updating trocador provider states: $e'); + } + } + bool get isAvailableInSelected { final providersForPair = providersForCurrentPair(); return selectedProviders diff --git a/lib/view_model/settings/trocador_providers_view_model.dart b/lib/view_model/settings/trocador_providers_view_model.dart index 19204d1f9..98587da08 100644 --- a/lib/view_model/settings/trocador_providers_view_model.dart +++ b/lib/view_model/settings/trocador_providers_view_model.dart @@ -1,3 +1,4 @@ +import 'package:cake_wallet/exchange/provider/trocador_exchange_provider.dart'; import 'package:cake_wallet/store/settings_store.dart'; import 'package:mobx/mobx.dart'; @@ -6,9 +7,37 @@ part 'trocador_providers_view_model.g.dart'; class TrocadorProvidersViewModel = TrocadorProvidersViewModelBase with _$TrocadorProvidersViewModel; abstract class TrocadorProvidersViewModelBase with Store { - TrocadorProvidersViewModelBase(this._settingsStore); + TrocadorProvidersViewModelBase(this._settingsStore, this.trocadorExchangeProvider) { + fetchTrocadorPartners(); + } final SettingsStore _settingsStore; + final TrocadorExchangeProvider trocadorExchangeProvider; + + @observable + ObservableFuture>? fetchProvidersFuture; + + Map providerRatings = {}; + + @computed + bool get isLoading => fetchProvidersFuture?.status == FutureStatus.pending; + + @action + Future fetchTrocadorPartners() async { + fetchProvidersFuture = + ObservableFuture(trocadorExchangeProvider.fetchProviders().then((providers) { + var providerNames = providers.map((e) => e.name).toList(); + + providerRatings = { + for (var provider in providers) + provider.name: provider.rating + }; + + return _settingsStore + .updateAllTrocadorProviderStates(providerNames) + .then((_) => _settingsStore.trocadorProviderStates); + })); + } @computed Map get providerStates => _settingsStore.trocadorProviderStates; @@ -16,6 +45,6 @@ abstract class TrocadorProvidersViewModelBase with Store { @action void toggleProviderState(String providerName) { final currentState = providerStates[providerName] ?? false; - _settingsStore.saveTrocadorProviderState(providerName, !currentState); + _settingsStore.setTrocadorProviderState(providerName, !currentState); } -} \ No newline at end of file +} diff --git a/res/values/strings_ar.arb b/res/values/strings_ar.arb index faf14e18d..ecbf2ad6f 100644 --- a/res/values/strings_ar.arb +++ b/res/values/strings_ar.arb @@ -459,6 +459,7 @@ "no_cards_found": "لم يتم العثور على بطاقات", "no_id_needed": "لا حاجة لID!", "no_id_required": "لا ID مطلوب. اشحن وانفق في أي مكان", + "no_providers_available": "لا مقدمي الخدمات المتاحة", "no_relay_on_domain": ".ﻡﺍﺪﺨﺘﺳﻼﻟ ﻊﺑﺎﺘﺘﻟﺍ ﺭﺎﻴﺘﺧﺍ ءﺎﺟﺮﻟﺍ .ﺡﺎﺘﻣ ﺮﻴﻏ ﻞﻴﺣﺮﺘﻟﺍ ﻥﺃ ﻭﺃ ﻡﺪﺨﺘﺴﻤﻟﺍ ﻝﺎﺠﻤﻟ ﻞﻴﺣﺮﺗ ﺪ", "no_relays": "ﺕﻼﺣﺮﻤﻟﺍ ﻻ", "no_relays_message": ".ﻪﺑ ﺹﺎﺨﻟﺍ Nostr ﻞﺠﺳ ﻰﻟﺇ ﺕﻼﺣﺮﻤﻟﺍ ﺔﻓﺎﺿﻹ ﻢﻠﺘﺴﻤﻟﺍ ﺩﺎﺷﺭﺇ ﻰﺟﺮﻳ .ﺕﻼﺣﺮﻣ ﻱﺃ ﻰﻠﻋ ﻱﻮﺘﺤﻳ ﻻ", @@ -674,6 +675,7 @@ "select_destination": ".ﻲﻃﺎﻴﺘﺣﻻﺍ ﺦﺴﻨﻟﺍ ﻒﻠﻣ ﺔﻬﺟﻭ ﺪﻳﺪﺤﺗ ءﺎﺟﺮﻟﺍ", "select_hw_account_below": "الرجاء تحديد حساب الاستعادة أدناه:", "select_sell_provider_notice": ".ﻖﻴﺒﻄﺘﻟﺍ ﺕﺍﺩﺍﺪﻋﺇ ﻲﻓ ﻚﺑ ﺹﺎﺨﻟﺍ ﻲﺿﺍﺮﺘﻓﻻﺍ ﻊﻴﺒﻟﺍ ﺩﻭﺰﻣ ﻦﻴﻴﻌﺗ ﻖﻳﺮﻃ ﻦﻋ ﺔﺷﺎﺸﻟﺍ ﻩﺬﻫ ﻲﻄﺨﺗ", + "selected_trocador_provider": "مزود تروكادور المختار", "select_your_country": "الرجاء تحديد بلدك", "sell": "بيع", "sell_alert_content": ".ﺎﻬﻴﻟﺇ ﻞﻳﺪﺒﺘﻟﺍ ﻭﺃ Litecoin ﻭﺃ Ethereum ﻭﺃ Bitcoin ﺔﻈﻔﺤﻣ ءﺎﺸﻧﺇ ﻰﺟﺮﻳ .Litecoin ﻭ", diff --git a/res/values/strings_bg.arb b/res/values/strings_bg.arb index 7ac75f00e..e1959d195 100644 --- a/res/values/strings_bg.arb +++ b/res/values/strings_bg.arb @@ -459,6 +459,7 @@ "no_cards_found": "Не са намерени карти", "no_id_needed": "Без нужда от документ за самоличност!", "no_id_required": "Без нужда от документ за самоличност. Използвайте навсякъде", + "no_providers_available": "Няма налични доставчици", "no_relay_on_domain": "Няма реле за домейна на потребителя или релето не е налично. Моля, изберете реле, което да използвате.", "no_relays": "Без релета", "no_relays_message": "Намерихме запис Nostr NIP-05 за този потребител, но той не съдържа релета. Моля, инструктирайте получателя да добави релета към своя Nostr запис.", @@ -674,6 +675,7 @@ "select_destination": "Моля, изберете дестинация за архивния файл.", "select_hw_account_below": "Моля, изберете кой акаунт да възстановите по -долу:", "select_sell_provider_notice": "Изберете доставчик на продажба по-горе. Можете да пропуснете този екран, като зададете своя доставчик на продажба по подразбиране в настройките на приложението.", + "selected_trocador_provider": "Избран доставчик на трокадор", "select_your_country": "Моля, изберете вашата страна", "sell": "Продаване", "sell_alert_content": "В момента поддържаме само продажбата на Bitcoin, Ethereum и Litecoin. Моля, създайте или превключете към своя портфейл Bitcoin, Ethereum или Litecoin.", diff --git a/res/values/strings_cs.arb b/res/values/strings_cs.arb index f777ffe60..bed37c456 100644 --- a/res/values/strings_cs.arb +++ b/res/values/strings_cs.arb @@ -459,6 +459,7 @@ "no_cards_found": "Žádné karty nenalezeny", "no_id_needed": "Žádné ID není potřeba!", "no_id_required": "Žádní ID není potřeba. Dobijte si a utrácejte kdekoliv", + "no_providers_available": "Žádní poskytovatelé jsou k dispozici", "no_relay_on_domain": "Pro doménu uživatele neexistuje přenos nebo je přenos nedostupný. Vyberte relé, které chcete použít.", "no_relays": "Žádná relé", "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 @@ "select_destination": "Vyberte cíl pro záložní soubor.", "select_hw_account_below": "Níže vyberte, který účet chcete obnovit:", "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.", + "selected_trocador_provider": "Vybraný poskytovatel Trocador", "select_your_country": "Vyberte prosím svou zemi", "sell": "Prodat", "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.", diff --git a/res/values/strings_de.arb b/res/values/strings_de.arb index 35012b20d..beca8957e 100644 --- a/res/values/strings_de.arb +++ b/res/values/strings_de.arb @@ -459,6 +459,7 @@ "no_cards_found": "Keine Karten gefunden", "no_id_needed": "Keine ID erforderlich!", "no_id_required": "Keine ID erforderlich. Upgraden und überall ausgeben", + "no_providers_available": "Keine Anbieter verfügbar", "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.", "no_relays": "Keine Relais", "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 @@ "select_destination": "Bitte wählen Sie das Ziel für die Sicherungsdatei aus.", "select_hw_account_below": "Bitte wählen Sie unten, welches Konto unten wiederhergestellt werden soll:", "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.", + "selected_trocador_provider": "Ausgewählter Trocador -Anbieter", "select_your_country": "Bitte wählen Sie Ihr Land aus", "sell": "Verkaufen", "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.", diff --git a/res/values/strings_en.arb b/res/values/strings_en.arb index 6875794fd..0bd5d7138 100644 --- a/res/values/strings_en.arb +++ b/res/values/strings_en.arb @@ -459,6 +459,7 @@ "no_cards_found": "No cards found", "no_id_needed": "No ID needed!", "no_id_required": "No ID required. Top up and spend anywhere", + "no_providers_available": "No providers available", "no_relay_on_domain": "There isn't a relay for user's domain or the relay is unavailable. Please choose a relay to use.", "no_relays": "No relays", "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 @@ "select_destination": "Please select destination for the backup file.", "select_hw_account_below": "Please select which account to restore below:", "select_sell_provider_notice": "Select a sell provider above. You can skip this screen by setting your default sell provider in app settings.", + "selected_trocador_provider": "selected Trocador provider", "select_your_country": "Please select your country", "sell": "Sell", "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.", diff --git a/res/values/strings_es.arb b/res/values/strings_es.arb index 42e7eedc0..e2da76a97 100644 --- a/res/values/strings_es.arb +++ b/res/values/strings_es.arb @@ -459,6 +459,7 @@ "no_cards_found": "No se encuentran cartas", "no_id_needed": "¡No se necesita identificación!", "no_id_required": "No se requiere identificación. Recarga y gaste en cualquier lugar", + "no_providers_available": "No hay proveedores disponibles", "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.", "no_relays": "Sin relays", "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 @@ "select_hw_account_below": "Seleccione qué cuenta restaurar a continuación:", "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.", "select_your_country": "Seleccione su país", + "selected_trocador_provider": "Proveedor de Trocador seleccionado", "sell": "Vender", "sell_alert_content": "Actualmente solo admitimos la venta de Bitcoin, Ethereum y Litecoin. Cree o cambie a su billetera Bitcoin, Ethereum o Litecoin.", "sell_monero_com_alert_content": "Aún no se admite la venta de Monero", diff --git a/res/values/strings_fr.arb b/res/values/strings_fr.arb index 4960d980a..0e65bdb08 100644 --- a/res/values/strings_fr.arb +++ b/res/values/strings_fr.arb @@ -459,6 +459,7 @@ "no_cards_found": "Pas de cartes trouvées", "no_id_needed": "Aucune pièce d'identité nécessaire !", "no_id_required": "Aucune pièce d'identité requise. Rechargez et dépensez n'importe où", + "no_providers_available": "Aucun fournisseur disponible", "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.", "no_relays": "Pas de relais", "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 @@ "select_destination": "Veuillez sélectionner la destination du fichier de sauvegarde.", "select_hw_account_below": "Veuillez sélectionner le compte à restaurer ci-dessous:", "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.", + "selected_trocador_provider": "fournisseur de trocador sélectionné", "select_your_country": "Veuillez sélectionner votre pays", "sell": "Vendre", "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.", diff --git a/res/values/strings_ha.arb b/res/values/strings_ha.arb index 068457568..53cfd164b 100644 --- a/res/values/strings_ha.arb +++ b/res/values/strings_ha.arb @@ -459,6 +459,7 @@ "no_cards_found": "Babu katunan da aka samo", "no_id_needed": "Babu ID da ake buƙata!", "no_id_required": "Babu ID da ake buƙata. Yi da kuma ciyar a ko'ina", + "no_providers_available": "Babu masu samar da wadatar", "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.", "no_relays": "Babu relays", "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 @@ "select_destination": "Da fatan za a zaɓi wurin da za a yi wa madadin fayil ɗin.", "select_hw_account_below": "Da fatan za a zabi wanda asusun zai gyara a ƙasa:", "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.", + "selected_trocador_provider": "Zabi mai bada TORACAD", "select_your_country": "Da fatan za a zabi ƙasarku", "sell": "sayar", "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.", diff --git a/res/values/strings_hi.arb b/res/values/strings_hi.arb index 248b0230c..002aa8246 100644 --- a/res/values/strings_hi.arb +++ b/res/values/strings_hi.arb @@ -459,6 +459,7 @@ "no_cards_found": "कोई कार्ड नहीं मिला", "no_id_needed": "कोई आईडी नहीं चाहिए!", "no_id_required": "कोई आईडी आवश्यक नहीं है। टॉप अप करें और कहीं भी खर्च करें", + "no_providers_available": "कोई प्रदाता उपलब्ध नहीं है", "no_relay_on_domain": "उपयोगकर्ता के डोमेन के लिए कोई रिले नहीं है या रिले अनुपलब्ध है। कृपया उपयोग करने के लिए एक रिले चुनें।", "no_relays": "कोई रिले नहीं", "no_relays_message": "हमें इस उपयोगकर्ता के लिए एक Nostr NIP-05 रिकॉर्ड मिला, लेकिन इसमें कोई रिले नहीं है। कृपया प्राप्तकर्ता को अपने नॉस्ट्र रिकॉर्ड में रिले जोड़ने का निर्देश दें।", @@ -676,6 +677,7 @@ "select_destination": "कृपया बैकअप फ़ाइल के लिए गंतव्य का चयन करें।", "select_hw_account_below": "कृपया नीचे पुनर्स्थापित करने के लिए कौन सा खाता चुनें:", "select_sell_provider_notice": "ऊपर एक विक्रय प्रदाता का चयन करें। आप ऐप सेटिंग में अपना डिफ़ॉल्ट विक्रय प्रदाता सेट करके इस स्क्रीन को छोड़ सकते हैं।", + "selected_trocador_provider": "चयनित ट्रोकैडर प्रदाता", "select_your_country": "कृपया अपने देश का चयन करें", "sell": "बेचना", "sell_alert_content": "हम वर्तमान में केवल बिटकॉइन, एथेरियम और लाइटकॉइन की बिक्री का समर्थन करते हैं। कृपया अपना बिटकॉइन, एथेरियम या लाइटकॉइन वॉलेट बनाएं या उसमें स्विच करें।", diff --git a/res/values/strings_hr.arb b/res/values/strings_hr.arb index 5c83942a1..45fc66005 100644 --- a/res/values/strings_hr.arb +++ b/res/values/strings_hr.arb @@ -459,6 +459,7 @@ "no_cards_found": "Nisu pronađene kartice", "no_id_needed": "Nije potreban ID!", "no_id_required": "Nije potreban ID. Nadopunite i potrošite bilo gdje", + "no_providers_available": "Nema dostupnih pružatelja usluga", "no_relay_on_domain": "Ne postoji relej za korisničku domenu ili je relej nedostupan. Odaberite relej za korištenje.", "no_relays": "Nema releja", "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 @@ "select_destination": "Odaberite odredište za datoteku sigurnosne kopije.", "select_hw_account_below": "Molimo odaberite koji će se račun vratiti u nastavku:", "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.", + "selected_trocador_provider": "Odabrani pružatelj usluga trokadora", "select_your_country": "Odaberite svoju zemlju", "sell": "Prodavati", "sell_alert_content": "Trenutno podržavamo samo prodaju Bitcoina, Ethereuma i Litecoina. Izradite ili prijeđite na svoj Bitcoin, Ethereum ili Litecoin novčanik.", diff --git a/res/values/strings_id.arb b/res/values/strings_id.arb index ccf4367e3..f5b0bb285 100644 --- a/res/values/strings_id.arb +++ b/res/values/strings_id.arb @@ -459,6 +459,7 @@ "no_cards_found": "Tidak ada kartu yang ditemukan", "no_id_needed": "Tidak perlu ID!", "no_id_required": "Tidak perlu ID. Isi ulang dan belanja di mana saja", + "no_providers_available": "Tidak ada penyedia yang tersedia", "no_relay_on_domain": "Tidak ada relai untuk domain pengguna atau relai tidak tersedia. Silakan pilih relai yang akan digunakan.", "no_relays": "Tidak ada relay", "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 @@ "select_destination": "Silakan pilih tujuan untuk file cadangan.", "select_hw_account_below": "Pilih akun mana yang akan dikembalikan di bawah ini:", "select_sell_provider_notice": "Pilih penyedia jual di atas. Anda dapat melewati layar ini dengan mengatur penyedia penjualan default Anda di pengaturan aplikasi.", + "selected_trocador_provider": "Penyedia Trocador Terpilih", "select_your_country": "Pilih negara Anda", "sell": "Jual", "sell_alert_content": "Saat ini kami hanya mendukung penjualan Bitcoin, Ethereum, dan Litecoin. Harap buat atau alihkan ke dompet Bitcoin, Ethereum, atau Litecoin Anda.", diff --git a/res/values/strings_it.arb b/res/values/strings_it.arb index a1682a11f..3c55f909d 100644 --- a/res/values/strings_it.arb +++ b/res/values/strings_it.arb @@ -459,6 +459,7 @@ "no_cards_found": "Nessuna carta trovata", "no_id_needed": "Nessun ID necessario!", "no_id_required": "Nessun ID richiesto. Ricarica e spendi ovunque", + "no_providers_available": "Nessun fornitore disponibile", "no_relay_on_domain": "Non esiste un inoltro per il dominio dell'utente oppure l'inoltro non è disponibile. Scegli un relay da utilizzare.", "no_relays": "Nessun relay", "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 @@ "select_backup_file": "Seleziona file di backup", "select_buy_provider_notice": "Seleziona un provider di acquisto sopra. È possibile saltare questa schermata impostando il provider di acquisto predefinito nelle impostazioni dell'app.", "select_destination": "Seleziona la destinazione per il file di backup.", + "selected_trocador_provider": "Provider di Trocador selezionato", "select_hw_account_below": "Seleziona quale account ripristinare:", "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.", "select_your_country": "Seleziona il tuo paese", diff --git a/res/values/strings_ja.arb b/res/values/strings_ja.arb index f97baf7b4..23414628a 100644 --- a/res/values/strings_ja.arb +++ b/res/values/strings_ja.arb @@ -460,6 +460,7 @@ "no_cards_found": "カードは見つかりません", "no_id_needed": "IDは必要ありません!", "no_id_required": "IDは必要ありません。どこにでも補充して使用できます", + "no_providers_available": "プロバイダーは利用できません", "no_relay_on_domain": "ユーザーのドメインのリレーが存在しないか、リレーが使用できません。使用するリレーを選択してください。", "no_relays": "リレーなし", "no_relays_message": "このユーザーの Nostr NIP-05 レコードが見つかりましたが、リレーは含まれていません。受信者に Nostr レコードにリレーを追加するよう指示してください。", @@ -675,6 +676,7 @@ "select_destination": "バックアップファイルの保存先を選択してください。", "select_hw_account_below": "以下に復元するアカウントを選択してください。", "select_sell_provider_notice": "上記の販売プロバイダーを選択してください。アプリ設定でデフォルトの販売プロバイダーを設定することで、この画面をスキップできます。", + "selected_trocador_provider": "選択したTrocadorプロバイダー", "select_your_country": "あなたの国を選択してください", "sell": "売る", "sell_alert_content": "現在、ビットコイン、イーサリアム、ライトコインの販売のみをサポートしています。ビットコイン、イーサリアム、またはライトコインのウォレットを作成するか、これらのウォレットに切り替えてください。", diff --git a/res/values/strings_ko.arb b/res/values/strings_ko.arb index 75af5c195..6b73f54b8 100644 --- a/res/values/strings_ko.arb +++ b/res/values/strings_ko.arb @@ -459,6 +459,7 @@ "no_cards_found": "카드를 찾지 못했습니다", "no_id_needed": "ID가 필요하지 않습니다!", "no_id_required": "신분증이 필요하지 않습니다. 충전하고 어디에서나 사용하세요", + "no_providers_available": "제공되는 제공자가 없습니다", "no_relay_on_domain": "사용자 도메인에 릴레이가 없거나 릴레이를 사용할 수 없습니다. 사용할 릴레이를 선택해주세요.", "no_relays": "릴레이 없음", "no_relays_message": "이 사용자에 대한 Nostr NIP-05 레코드를 찾았지만 릴레이가 포함되어 있지 않습니다. 수신자에게 Nostr 기록에 릴레이를 추가하도록 지시하십시오.", @@ -674,6 +675,7 @@ "select_destination": "백업 파일의 대상을 선택하십시오.", "select_hw_account_below": "아래를 복원 할 계정을 선택하십시오.", "select_sell_provider_notice": "위에서 판매 공급자를 선택하세요. 앱 설정에서 기본 판매 공급자를 설정하면 이 화면을 건너뛸 수 있습니다.", + "selected_trocador_provider": "선정 된 트로 코더 제공 업체", "select_your_country": "국가를 선택하십시오", "sell": "팔다", "sell_alert_content": "현재 Bitcoin, Ethereum 및 Litecoin의 판매만 지원합니다. Bitcoin, Ethereum 또는 Litecoin 지갑을 생성하거나 전환하십시오.", diff --git a/res/values/strings_my.arb b/res/values/strings_my.arb index 9f200a030..9a86dda6c 100644 --- a/res/values/strings_my.arb +++ b/res/values/strings_my.arb @@ -459,6 +459,7 @@ "no_cards_found": "ကဒ်များမရှိပါ", "no_id_needed": "ID မလိုအပ်ပါ။", "no_id_required": "ID မလိုအပ်ပါ။ ငွေဖြည့်ပြီး ဘယ်နေရာမဆို သုံးစွဲပါ။", + "no_providers_available": "မရရှိနိုင်ပါ", "no_relay_on_domain": "အသုံးပြုသူ၏ဒိုမိန်းအတွက် ထပ်ဆင့်လွှင့်ခြင်း မရှိပါ သို့မဟုတ် ထပ်ဆင့်လွှင့်ခြင်း မရနိုင်ပါ။ အသုံးပြုရန် relay ကိုရွေးချယ်ပါ။", "no_relays": "Relay မရှိပါ။", "no_relays_message": "ဤအသုံးပြုသူအတွက် Nostr NIP-05 မှတ်တမ်းကို ကျွန်ုပ်တို့တွေ့ရှိသော်လည်း ၎င်းတွင် မည်သည့် relays မှ မပါဝင်ပါ။ ကျေးဇူးပြု၍ လက်ခံသူကို ၎င်းတို့၏ Nostr မှတ်တမ်းတွင် ထပ်လောင်းထည့်ရန် ညွှန်ကြားပါ။", @@ -674,6 +675,7 @@ "select_destination": "အရန်ဖိုင်အတွက် ဦးတည်ရာကို ရွေးပါ။", "select_hw_account_below": "အောက်ဖော်ပြပါမည်သည့်အကောင့်ကိုရွေးပါ။", "select_sell_provider_notice": "အထက်ဖော်ပြပါ အရောင်းဝန်ဆောင်မှုပေးသူကို ရွေးပါ။ အက်ပ်ဆက်တင်များတွင် သင်၏မူလရောင်းချပေးသူကို သတ်မှတ်ခြင်းဖြင့် ဤစခရင်ကို ကျော်နိုင်သည်။", + "selected_trocador_provider": "ရွေးချယ်ထား Tracador ပံ့ပိုးပေး", "select_your_country": "ကျေးဇူးပြု. သင့်နိုင်ငံကိုရွေးချယ်ပါ", "sell": "ရောင်း", "sell_alert_content": "ကျွန်ုပ်တို့သည် လက်ရှိတွင် Bitcoin၊ Ethereum နှင့် Litecoin ရောင်းချခြင်းကိုသာ ပံ့ပိုးပေးပါသည်။ သင်၏ Bitcoin၊ Ethereum သို့မဟုတ် Litecoin ပိုက်ဆံအိတ်ကို ဖန်တီးပါ သို့မဟုတ် ပြောင်းပါ။", diff --git a/res/values/strings_nl.arb b/res/values/strings_nl.arb index 1b41eea22..69280dbbe 100644 --- a/res/values/strings_nl.arb +++ b/res/values/strings_nl.arb @@ -459,6 +459,7 @@ "no_cards_found": "Geen kaarten gevonden", "no_id_needed": "Geen ID nodig!", "no_id_required": "Geen ID vereist. Opwaarderen en overal uitgeven", + "no_providers_available": "Geen providers beschikbaar", "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.", "no_relays": "Geen relais", "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 @@ "select_destination": "Selecteer de bestemming voor het back-upbestand.", "select_hw_account_below": "Selecteer welk account u hieronder moet herstellen:", "select_sell_provider_notice": "Selecteer hierboven een verkoopaanbieder. U kunt dit scherm overslaan door uw standaardverkoopprovider in te stellen in de app-instellingen.", + "selected_trocador_provider": "Geselecteerde Trocador -provider", "select_your_country": "Selecteer uw land", "sell": "Verkopen", "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.", diff --git a/res/values/strings_pl.arb b/res/values/strings_pl.arb index 8b96bde04..0e57ecf8c 100644 --- a/res/values/strings_pl.arb +++ b/res/values/strings_pl.arb @@ -459,6 +459,7 @@ "no_cards_found": "Nie znaleziono żadnych kart", "no_id_needed": "Nie potrzeba Dowodu!", "no_id_required": "Nie wymagamy Dowodu. Doładuj i wydawaj gdziekolwiek", + "no_providers_available": "Brak dostępnych dostawców", "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ć.", "no_relays": "Żadnych przekaźników", "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 @@ "select_destination": "Wybierz miejsce docelowe dla pliku kopii zapasowej.", "select_hw_account_below": "Wybierz, które konto przywrócić poniżej:", "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.", + "selected_trocador_provider": "Wybrany dostawca Trocador", "select_your_country": "Wybierz swój kraj", "sell": "Sprzedać", "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.", diff --git a/res/values/strings_pt.arb b/res/values/strings_pt.arb index 096c3f413..ccc87926d 100644 --- a/res/values/strings_pt.arb +++ b/res/values/strings_pt.arb @@ -460,6 +460,7 @@ "no_cards_found": "Nenhum cartão encontrado", "no_id_needed": "Nenhum ID necessário!", "no_id_required": "Não é necessário ID. Recarregue e gaste em qualquer lugar", + "no_providers_available": "Nenhum fornecedor disponível", "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.", "no_relays": "Sem relés", "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 @@ "select_destination": "Selecione o destino para o arquivo de backup.", "select_hw_account_below": "Selecione qual conta para restaurar abaixo:", "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.", + "selected_trocador_provider": "Provedor de Trocador selecionado", "select_your_country": "Selecione seu país", "sell": "Vender", "sell_alert_content": "Atualmente, oferecemos suporte apenas à venda de Bitcoin, Ethereum e Litecoin. Crie ou troque para sua carteira Bitcoin, Ethereum ou Litecoin.", diff --git a/res/values/strings_ru.arb b/res/values/strings_ru.arb index 6fe82abcf..757d8b7bd 100644 --- a/res/values/strings_ru.arb +++ b/res/values/strings_ru.arb @@ -459,6 +459,7 @@ "no_cards_found": "Карт не найдено", "no_id_needed": "Идентификатор не нужен!", "no_id_required": "Идентификатор не требуется. Пополняйте и тратьте где угодно", + "no_providers_available": "Нет доступных поставщиков", "no_relay_on_domain": "Для домена пользователя реле не существует или реле недоступно. Пожалуйста, выберите реле для использования.", "no_relays": "Нет реле", "no_relays_message": "Мы нашли запись Nostr NIP-05 для этого пользователя, но она не содержит никаких реле. Попросите получателя добавить реле в свою запись Nostr.", @@ -675,6 +676,7 @@ "select_destination": "Пожалуйста, выберите место для файла резервной копии.", "select_hw_account_below": "Пожалуйста, выберите, какую учетную запись восстановить ниже:", "select_sell_provider_notice": "Выберите поставщика услуг продажи выше. Вы можете пропустить этот экран, установив поставщика услуг продаж по умолчанию в настройках приложения.", + "selected_trocador_provider": "Выбранный провайдер Трокадора", "select_your_country": "Пожалуйста, выберите свою страну", "sell": "Продавать", "sell_alert_content": "В настоящее время мы поддерживаем только продажу биткойнов, эфириума и лайткойна. Пожалуйста, создайте или переключитесь на свой кошелек Bitcoin, Ethereum или Litecoin.", diff --git a/res/values/strings_th.arb b/res/values/strings_th.arb index 35e94e508..0ac198a58 100644 --- a/res/values/strings_th.arb +++ b/res/values/strings_th.arb @@ -459,6 +459,7 @@ "no_cards_found": "ไม่พบการ์ด", "no_id_needed": "ไม่จำเป็นต้องใช้บัตรประชาชน!", "no_id_required": "ไม่จำเป็นต้องใช้บัตรประจำตัว ฝากเงินและใช้งานได้ทุกที่", + "no_providers_available": "ไม่มีผู้ให้บริการ", "no_relay_on_domain": "ไม่มีการส่งต่อสำหรับโดเมนของผู้ใช้ หรือการส่งต่อไม่พร้อมใช้งาน กรุณาเลือกรีเลย์ที่จะใช้", "no_relays": "ไม่มีรีเลย์", "no_relays_message": "เราพบบันทึก Nostr NIP-05 สำหรับผู้ใช้รายนี้ แต่ไม่มีรีเลย์ใดๆ โปรดแนะนำให้ผู้รับเพิ่มรีเลย์ลงในบันทึก Nostr ของตน", @@ -674,6 +675,7 @@ "select_destination": "โปรดเลือกปลายทางสำหรับไฟล์สำรอง", "select_hw_account_below": "กรุณาเลือกบัญชีที่จะกู้คืนด้านล่าง:", "select_sell_provider_notice": "เลือกผู้ให้บริการการขายด้านบน คุณสามารถข้ามหน้าจอนี้ได้โดยการตั้งค่าผู้ให้บริการการขายเริ่มต้นในการตั้งค่าแอป", + "selected_trocador_provider": "ผู้ให้บริการ Trocador ที่เลือก", "select_your_country": "กรุณาเลือกประเทศของคุณ", "sell": "ขาย", "sell_alert_content": "ขณะนี้เรารองรับการขาย Bitcoin, Ethereum และ Litecoin เท่านั้น โปรดสร้างหรือเปลี่ยนเป็นกระเป๋าเงิน Bitcoin, Ethereum หรือ Litecoin ของคุณ", diff --git a/res/values/strings_tl.arb b/res/values/strings_tl.arb index d9cdbbb3e..6a17a4c9d 100644 --- a/res/values/strings_tl.arb +++ b/res/values/strings_tl.arb @@ -459,6 +459,7 @@ "no_cards_found": "Walang nahanap na mga card", "no_id_needed": "Hindi kailangan ng ID!", "no_id_required": "Hindi kailangan ng ID. I-top up at gumastos kahit saan", + "no_providers_available": "Walang magagamit na mga nagbibigay", "no_relay_on_domain": "Walang relay para sa domain ng user o hindi available ang relay. Mangyaring pumili ng relay na gagamitin.", "no_relays": "Walang mga relay", "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 @@ "select_destination": "Mangyaring piliin ang patutunguhan para sa backup na file.", "select_hw_account_below": "Mangyaring piliin kung aling account ang ibabalik sa ibaba:", "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.", + "selected_trocador_provider": "Napiling Trocador Provider", "select_your_country": "Mangyaring piliin ang iyong bansa", "sell": "Ibenta", "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.", diff --git a/res/values/strings_tr.arb b/res/values/strings_tr.arb index 5d7c77050..9f58e6861 100644 --- a/res/values/strings_tr.arb +++ b/res/values/strings_tr.arb @@ -459,6 +459,7 @@ "no_cards_found": "Kart bulunamadı", "no_id_needed": "Kimlik gerekmez!", "no_id_required": "Kimlik gerekmez. Para yükleyin ve istediğiniz yerde harcayın", + "no_providers_available": "Sağlayıcı yok", "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.", "no_relays": "Röle yok", "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 @@ "select_destination": "Lütfen yedekleme dosyası için hedef seçin.", "select_hw_account_below": "Lütfen aşağıda hangi hesabı geri yükleyeceğinizi seçin:", "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.", + "selected_trocador_provider": "Seçilmiş Trocador Sağlayıcı", "select_your_country": "Lütfen ülkenizi seçin", "sell": "Satış", "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.", diff --git a/res/values/strings_uk.arb b/res/values/strings_uk.arb index 1a6d113b0..af255c26a 100644 --- a/res/values/strings_uk.arb +++ b/res/values/strings_uk.arb @@ -459,6 +459,7 @@ "no_cards_found": "Карт не знайдено", "no_id_needed": "Ідентифікатор не потрібен!", "no_id_required": "Ідентифікатор не потрібен. Поповнюйте та витрачайте будь-де", + "no_providers_available": "Немає постачальників", "no_relay_on_domain": "Немає ретранслятора для домену користувача або ретранслятор недоступний. Будь ласка, виберіть реле для використання.", "no_relays": "Без реле", "no_relays_message": "Ми знайшли запис Nostr NIP-05 для цього користувача, але він не містить жодних реле. Будь ласка, попросіть одержувача додати реле до свого запису Nostr.", @@ -675,6 +676,7 @@ "select_destination": "Виберіть місце призначення для файлу резервної копії.", "select_hw_account_below": "Виберіть, який рахунок відновити нижче:", "select_sell_provider_notice": "Виберіть вище постачальника послуг продажу. Ви можете пропустити цей екран, встановивши постачальника послуг продажу за умовчанням у налаштуваннях програми.", + "selected_trocador_provider": "Вибраний постачальник Trocador", "select_your_country": "Будь ласка, виберіть свою країну", "sell": "Продати", "sell_alert_content": "Наразі ми підтримуємо лише продаж Bitcoin, Ethereum і Litecoin. Створіть або перейдіть на свій гаманець Bitcoin, Ethereum або Litecoin.", diff --git a/res/values/strings_ur.arb b/res/values/strings_ur.arb index a7b70dae2..cb86f8af6 100644 --- a/res/values/strings_ur.arb +++ b/res/values/strings_ur.arb @@ -459,6 +459,7 @@ "no_cards_found": "کوئی کارڈ نہیں ملا", "no_id_needed": "شناخت کی ضرورت نہیں!", "no_id_required": "کوئی ID درکار نہیں۔ ٹاپ اپ اور کہیں بھی خرچ کریں۔", + "no_providers_available": "کوئی فراہم کنندہ دستیاب نہیں ہے", "no_relay_on_domain": "۔ﮟﯾﺮﮐ ﺏﺎﺨﺘﻧﺍ ﺎﮐ ﮯﻠﯾﺭ ﮯﯿﻟ ﮯﮐ ﮯﻧﺮﮐ ﻝﺎﻤﻌﺘﺳﺍ ﻡﺮﮐ ﮦﺍﺮﺑ ۔ﮯﮨ ﮟﯿﮩﻧ ﺏﺎﯿﺘﺳﺩ ﮯﻠﯾﺭ ﺎﯾ ﮯﮨ ﮟ", "no_relays": "۔ﮟﯿﮩﻧ ﮯﻠﯾﺭ ﯽﺋﻮﮐ", "no_relays_message": "۔ﮟﯾﺮﮐ ﻞﻣﺎﺷ ﮯﻠﯾﺭ ﮟﯿﻣ ﮈﺭﺎﮑﯾﺭ ﺮﭩﺳﻮﻧ ﮯﻨﭘﺍ ﮦﻭ ﮧﮐ ﮟﯾﺩ ﺖﯾﺍﺪﮨ ﻮﮐ ﮦﺪﻨﻨﮐ ﻝﻮﺻﻭ ﻡﺮﮐ ﮦﺍﺮﺑ ۔", @@ -676,6 +677,7 @@ "select_destination": "۔ﮟﯾﺮﮐ ﺏﺎﺨﺘﻧﺍ ﺎﮐ ﻝﺰﻨﻣ ﮯﯿﻟ ﮯﮐ ﻞﺋﺎﻓ ﭖﺍ ﮏﯿﺑ ﻡﺮﮐ ﮦﺍﺮﺑ", "select_hw_account_below": "براہ کرم ذیل میں کون سا اکاؤنٹ بحال کرنا ہے منتخب کریں:", "select_sell_provider_notice": "۔ﮟﯿﮨ ﮯﺘﮑﺳ ﮌﻮﮭﭼ ﻮﮐ ﻦﯾﺮﮑﺳﺍ ﺱﺍ ﺮﮐ ﮮﺩ ﺐﯿﺗﺮﺗ ﻮﮐ ﮦﺪﻨﻨﮐ ﻢﮨﺍﺮﻓ ﻞﯿﺳ ﭧﻟﺎﻔﯾﮈ ﮯﻨﭘﺍ ﮟﯿﻣ ﺕﺎﺒ", + "selected_trocador_provider": "منتخب کردہ ٹروکاڈور فراہم کنندہ", "select_your_country": "براہ کرم اپنے ملک کو منتخب کریں", "sell": "بیچنا", "sell_alert_content": "۔ﮟﯾﺮﮐ ﭻﺋﻮﺳ ﺮﭘ ﺱﺍ ﺎﯾ ﮟﯿﺋﺎﻨﺑ ﭧﯿﻟﺍﻭ Litecoin ﺎﯾ Bitcoin، Ethereum ﺎﻨﭘﺍ ﻡﺮﮐ ﮦﺍﺮﺑ ۔", diff --git a/res/values/strings_yo.arb b/res/values/strings_yo.arb index 6eb66754c..e5e94b01f 100644 --- a/res/values/strings_yo.arb +++ b/res/values/strings_yo.arb @@ -460,6 +460,7 @@ "no_cards_found": "Ko si awọn kaadi ti a rii", "no_id_needed": "Ẹ kò nílò àmì ìdánimọ̀!", "no_id_required": "Ẹ kò nílò àmì ìdánimọ̀. Ẹ lè fikún owó àti san níbikíbi", + "no_providers_available": "Ko si awọn olupese ti o wa", "no_relay_on_domain": "Ko si iṣipopada fun agbegbe olumulo tabi yiyi ko si. Jọwọ yan yii lati lo.", "no_relays": "Ko si relays", "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 @@ "select_destination": "Jọwọ yan ibi ti o nlo fun faili afẹyinti.", "select_hw_account_below": "Jọwọ yan iru iroyin lati mu pada ni isalẹ:", "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.", + "selected_trocador_provider": "olupese trocador ti a yan", "select_your_country": "Jọwọ yan orilẹ-ede rẹ", "sell": "Tà", "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ẹ.", diff --git a/res/values/strings_zh.arb b/res/values/strings_zh.arb index ed890c17a..eeba24191 100644 --- a/res/values/strings_zh.arb +++ b/res/values/strings_zh.arb @@ -459,6 +459,7 @@ "no_cards_found": "找不到卡", "no_id_needed": "不需要 ID!", "no_id_required": "不需要身份证。充值并在任何地方消费", + "no_providers_available": "没有提供商可用", "no_relay_on_domain": "用户域没有中继或中继不可用。请选择要使用的继电器。", "no_relays": "无继电器", "no_relays_message": "我们找到了该用户的 Nostr NIP-05 记录,但它不包含任何中继。请指示收件人将中继添加到他们的 Nostr 记录中。", @@ -674,6 +675,7 @@ "select_destination": "请选择备份文件的目的地。", "select_hw_account_below": "请在下面选择要还原的帐户:", "select_sell_provider_notice": "选择上面的销售提供商。您可以通过在应用程序设置中设置默认销售提供商来跳过此屏幕。", + "selected_trocador_provider": "选定的trocador提供商", "select_your_country": "请选择你的国家", "sell": "卖", "sell_alert_content": "我们目前仅支持比特币、以太坊和莱特币的销售。请创建或切换到您的比特币、以太坊或莱特币钱包。",