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 5722ed768a.

* 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>
This commit is contained in:
Serhii 2025-03-11 21:51:52 +02:00 committed by GitHub
parent dcde3fd253
commit b387c6182a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
34 changed files with 327 additions and 54 deletions

View file

@ -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<void> setup({
return PrivacySettingsViewModel(getIt.get<SettingsStore>(), getIt.get<AppStore>().wallet!);
});
getIt.registerFactory(() => TrocadorProvidersViewModel(getIt.get<SettingsStore>()));
getIt.registerFactory(() => TrocadorExchangeProvider());
getIt.registerFactory(() => TrocadorProvidersViewModel(
getIt.get<SettingsStore>(), getIt.get<TrocadorExchangeProvider>()));
getIt.registerFactory(() {
return OtherSettingsViewModel(getIt.get<SettingsStore>(), getIt.get<AppStore>().wallet!,

View file

@ -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';

View file

@ -19,7 +19,7 @@ class TrocadorExchangeProvider extends ExchangeProvider {
super(pairList: supportedPairs(_notSupported));
bool useTorOnly;
final Map<String, bool> providerStates;
Map<String, bool> providerStates;
static const List<String> 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<dynamic> _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<List<TrocadorPartners>> 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<String, dynamic>;
final providersJsonList = responseJSON['list'] as List<dynamic>;
final filteredProvidersList = providersJsonList
.map((providerJson) => TrocadorPartners.fromJson(providerJson as Map<String, dynamic>))
.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<String, dynamic> 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?,
);
}
}

View file

@ -97,14 +97,28 @@ class ExchangeConfirmPage extends BasePage {
],
),
),
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<TransactionTradeTheme>()!.detailsTitlesColor),
),
),
Flexible(
child: Center(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
(trade.provider.image?.isNotEmpty ?? false)
? ImageUtil.getImageFromPath(
imagePath: trade.provider.image, width: 50)
? Image.asset(trade.provider.image, height: 50)
: const SizedBox(),
if (!trade.provider.horizontalLogo)
Padding(
@ -116,6 +130,9 @@ class ExchangeConfirmPage extends BasePage {
),
),
],
),
),
],
)),
PrimaryButton(
key: ValueKey('exchange_confirm_page_saved_id_button_key'),

View file

@ -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,
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) {
String provider = availableProviders[index];
return Observer(
builder: (_) => SettingsSwitcherCell(
title: provider,
value: providerStates[provider] ?? false,
onValueChange: (BuildContext _, bool value) {
trocadorProvidersViewModel.toggleProviderState(provider);
}));
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,
),
),
],
),
),
),
),
);
}
}

View file

@ -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<void> updateAllTrocadorProviderStates(List<String> availableProviders) async {
final jsonKey = PreferencesKey.trocadorProviderStatesKey;
String? serializedData = await _sharedPreferences.getString(jsonKey);
if (serializedData == null) {
final Map<String, bool> 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<String, dynamic>;
final oldMap = decodedMap.map((k, v) => MapEntry(k, v == true));
final Map<String, bool> 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<void> setTrocadorProviderState(String providerName, bool state) async {
trocadorProviderStates[providerName] = state;
await saveMapToString(PreferencesKey.trocadorProviderStatesKey, trocadorProviderStates);
}
Future<void> saveMapToString(String key, Map<String, bool> map) async {
String serializedData = json.encode(map);
await _sharedPreferences.setString(key, serializedData);
}
static Future<String?> _getDeviceName() async {

View file

@ -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<void> 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

View file

@ -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<Map<String, bool>>? fetchProvidersFuture;
Map<String, String> providerRatings = {};
@computed
bool get isLoading => fetchProvidersFuture?.status == FutureStatus.pending;
@action
Future<void> 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<String, bool> 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);
}
}

View file

@ -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 ﻭ",

View file

@ -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.",

View file

@ -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.",

View file

@ -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.",

View file

@ -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.",

View file

@ -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",

View file

@ -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.",

View file

@ -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.",

View file

@ -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": "हम वर्तमान में केवल बिटकॉइन, एथेरियम और लाइटकॉइन की बिक्री का समर्थन करते हैं। कृपया अपना बिटकॉइन, एथेरियम या लाइटकॉइन वॉलेट बनाएं या उसमें स्विच करें।",

View file

@ -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.",

View file

@ -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.",

View file

@ -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",

View file

@ -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": "現在、ビットコイン、イーサリアム、ライトコインの販売のみをサポートしています。ビットコイン、イーサリアム、またはライトコインのウォレットを作成するか、これらのウォレットに切り替えてください。",

View file

@ -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 지갑을 생성하거나 전환하십시오.",

View file

@ -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 ပိုက်ဆံအိတ်ကို ဖန်တီးပါ သို့မဟုတ် ပြောင်းပါ။",

View file

@ -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.",

View file

@ -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.",

View file

@ -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.",

View file

@ -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.",

View file

@ -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 ของคุณ",

View file

@ -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.",

View file

@ -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.",

View file

@ -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.",

View file

@ -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 ﺎﻨﭘﺍ ﻡﺮﮐ ﮦﺍﺮﺑ ۔",

View file

@ -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ẹ.",

View file

@ -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": "我们目前仅支持比特币、以太坊和莱特币的销售。请创建或切换到您的比特币、以太坊或莱特币钱包。",