Merge branch 'main' of https://github.com/cake-tech/cake_wallet into CW-477-add-ens

This commit is contained in:
fosse 2023-09-25 10:14:48 -04:00
commit fc4e9ac978
35 changed files with 266 additions and 138 deletions

View file

@ -132,6 +132,9 @@ class NodeForm extends StatelessWidget {
Observer( Observer(
builder: (_) => StandardCheckbox( builder: (_) => StandardCheckbox(
value: nodeViewModel.useSSL, value: nodeViewModel.useSSL,
gradientBackground: true,
borderColor: Theme.of(context).dividerColor,
iconColor: Colors.white,
onChanged: (value) => nodeViewModel.useSSL = value, onChanged: (value) => nodeViewModel.useSSL = value,
caption: S.of(context).use_ssl, caption: S.of(context).use_ssl,
), ),
@ -148,6 +151,9 @@ class NodeForm extends StatelessWidget {
Observer( Observer(
builder: (_) => StandardCheckbox( builder: (_) => StandardCheckbox(
value: nodeViewModel.trusted, value: nodeViewModel.trusted,
gradientBackground: true,
borderColor: Theme.of(context).dividerColor,
iconColor: Colors.white,
onChanged: (value) => nodeViewModel.trusted = value, onChanged: (value) => nodeViewModel.trusted = value,
caption: S.of(context).trusted, caption: S.of(context).trusted,
), ),
@ -166,6 +172,9 @@ class NodeForm extends StatelessWidget {
children: [ children: [
StandardCheckbox( StandardCheckbox(
value: nodeViewModel.useSocksProxy, value: nodeViewModel.useSocksProxy,
gradientBackground: true,
borderColor: Theme.of(context).dividerColor,
iconColor: Colors.white,
onChanged: (value) { onChanged: (value) {
if (!value) { if (!value) {
_socksAddressController.text = ''; _socksAddressController.text = '';

View file

@ -10,7 +10,7 @@ import 'package:cake_wallet/src/screens/receive/widgets/anonpay_status_section.d
import 'package:cake_wallet/src/screens/receive/widgets/qr_image.dart'; import 'package:cake_wallet/src/screens/receive/widgets/qr_image.dart';
import 'package:cake_wallet/src/screens/receive/widgets/copy_link_item.dart'; import 'package:cake_wallet/src/screens/receive/widgets/copy_link_item.dart';
import 'package:cake_wallet/themes/extensions/qr_code_theme.dart'; import 'package:cake_wallet/themes/extensions/qr_code_theme.dart';
import 'package:device_display_brightness/device_display_brightness.dart'; import 'package:cake_wallet/utils/brightness_util.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:qr_flutter/qr_flutter.dart' as qr; import 'package:qr_flutter/qr_flutter.dart' as qr;
import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart'; import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart';
@ -82,8 +82,7 @@ class AnonPayReceivePage extends BasePage {
@override @override
Widget Function(BuildContext, Widget) get rootWrapper => Widget Function(BuildContext, Widget) get rootWrapper =>
(BuildContext context, Widget scaffold) => (BuildContext context, Widget scaffold) => GradientBackground(scaffold: scaffold);
GradientBackground(scaffold: scaffold);
@override @override
Widget body(BuildContext context) { Widget body(BuildContext context) {
@ -101,19 +100,13 @@ class AnonPayReceivePage extends BasePage {
), ),
child: GestureDetector( child: GestureDetector(
onTap: () async { onTap: () async {
final double brightness = await DeviceDisplayBrightness.getBrightness(); BrightnessUtil.changeBrightnessForFunction(() async {
await Navigator.pushNamed(context, Routes.fullscreenQR,
// ignore: unawaited_futures arguments: QrViewData(
DeviceDisplayBrightness.setBrightness(1.0); data: invoiceInfo.clearnetUrl,
await Navigator.pushNamed(
context,
Routes.fullscreenQR,
arguments: QrViewData(data: invoiceInfo.clearnetUrl,
version: qr.QrVersions.auto, version: qr.QrVersions.auto,
) ));
); });
// ignore: unawaited_futures
DeviceDisplayBrightness.setBrightness(brightness);
}, },
child: Hero( child: Hero(
tag: Key(invoiceInfo.clearnetUrl), tag: Key(invoiceInfo.clearnetUrl),

View file

@ -3,10 +3,9 @@ import 'package:cake_wallet/themes/extensions/qr_code_theme.dart';
import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/src/screens/exchange/widgets/currency_picker.dart'; import 'package:cake_wallet/src/screens/exchange/widgets/currency_picker.dart';
import 'package:cake_wallet/src/screens/receive/widgets/currency_input_field.dart'; import 'package:cake_wallet/src/screens/receive/widgets/currency_input_field.dart';
import 'package:cake_wallet/utils/device_info.dart'; import 'package:cake_wallet/utils/brightness_util.dart';
import 'package:cake_wallet/utils/show_bar.dart'; import 'package:cake_wallet/utils/show_bar.dart';
import 'package:cake_wallet/utils/show_pop_up.dart'; import 'package:cake_wallet/utils/show_pop_up.dart';
import 'package:device_display_brightness/device_display_brightness.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:flutter_mobx/flutter_mobx.dart';
@ -64,7 +63,7 @@ class QRWidget extends StatelessWidget {
flex: 5, flex: 5,
child: GestureDetector( child: GestureDetector(
onTap: () { onTap: () {
changeBrightnessForRoute( BrightnessUtil.changeBrightnessForFunction(
() async { () async {
await Navigator.pushNamed(context, Routes.fullscreenQR, await Navigator.pushNamed(context, Routes.fullscreenQR,
arguments: QrViewData( arguments: QrViewData(
@ -178,23 +177,4 @@ class QRWidget extends StatelessWidget {
// update amount if currency changed // update amount if currency changed
addressListViewModel.changeAmount(amountController.text); addressListViewModel.changeAmount(amountController.text);
} }
Future<void> changeBrightnessForRoute(Future<void> Function() navigation) async {
// if not mobile, just navigate
if (!DeviceInfo.instance.isMobile) {
navigation();
return;
}
// Get the current brightness:
final brightness = await DeviceDisplayBrightness.getBrightness();
// ignore: unawaited_futures
DeviceDisplayBrightness.setBrightness(1.0);
await navigation();
// ignore: unawaited_futures
DeviceDisplayBrightness.setBrightness(brightness);
}
} }

View file

@ -14,7 +14,6 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:qr_flutter/qr_flutter.dart' as qr; import 'package:qr_flutter/qr_flutter.dart' as qr;
class Setup2FAQRPage extends BasePage { class Setup2FAQRPage extends BasePage {
Setup2FAQRPage({required this.setup2FAViewModel}); Setup2FAQRPage({required this.setup2FAViewModel});
@ -25,7 +24,6 @@ class Setup2FAQRPage extends BasePage {
@override @override
Widget body(BuildContext context) { Widget body(BuildContext context) {
final copyImage = Image.asset( final copyImage = Image.asset(
'assets/images/copy_content.png', 'assets/images/copy_content.png',
height: 12, height: 12,
@ -126,16 +124,69 @@ class Setup2FAQRPage extends BasePage {
), ),
SizedBox(height: 8), SizedBox(height: 8),
StandardListSeparator(), StandardListSeparator(),
SizedBox(height: 13),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expanded(
flex: 2,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
S.current.totp_auth_url,
style: TextStyle(
fontSize: 12,
fontWeight: FontWeight.w500,
color: Palette.darkGray,
height: 1.8333,
),
),
SizedBox(height: 8),
Text(
'${setup2FAViewModel.totpVersionOneLink}',
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w700,
height: 1.375,
),
maxLines: 1,
overflow: TextOverflow.ellipsis,
),
],
),
),
SizedBox(width: 8),
Container(
width: 32,
height: 32,
child: InkWell(
onTap: () {
ClipboardUtil.setSensitiveDataToClipboard(
ClipboardData(text: '${setup2FAViewModel.totpVersionOneLink}'));
showBar<void>(context, S.of(context).copied_to_clipboard);
},
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(6),
color: Color(0xFFF2F0FA),
),
child: copyImage,
),
),
)
],
),
SizedBox(height: 8),
StandardListSeparator(),
Spacer(), Spacer(),
PrimaryButton( PrimaryButton(
onPressed: () { onPressed: () {
Navigator.of(context).pushReplacementNamed( Navigator.of(context).pushReplacementNamed(Routes.totpAuthCodePage,
Routes.totpAuthCodePage,
arguments: TotpAuthArgumentsModel( arguments: TotpAuthArgumentsModel(
isForSetup: true, isForSetup: true,
) ));
);
}, },
text: S.current.continue_text, text: S.current.continue_text,
color: Theme.of(context).primaryColor, color: Theme.of(context).primaryColor,

View file

@ -5,10 +5,10 @@ import 'package:cake_wallet/src/widgets/list_row.dart';
import 'package:cake_wallet/src/widgets/section_divider.dart'; import 'package:cake_wallet/src/widgets/section_divider.dart';
import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/utils/brightness_util.dart';
import 'package:cake_wallet/utils/clipboard_util.dart'; import 'package:cake_wallet/utils/clipboard_util.dart';
import 'package:cake_wallet/utils/show_bar.dart'; import 'package:cake_wallet/utils/show_bar.dart';
import 'package:cake_wallet/view_model/wallet_keys_view_model.dart'; import 'package:cake_wallet/view_model/wallet_keys_view_model.dart';
import 'package:device_display_brightness/device_display_brightness.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:flutter_mobx/flutter_mobx.dart';
@ -26,19 +26,15 @@ class WalletKeysPage extends BasePage {
@override @override
Widget trailing(BuildContext context) => IconButton( Widget trailing(BuildContext context) => IconButton(
onPressed: () async { onPressed: () async {
// Get the current brightness:
final double brightness = await DeviceDisplayBrightness.getBrightness();
final url = await walletKeysViewModel.url; final url = await walletKeysViewModel.url;
// ignore: unawaited_futures BrightnessUtil.changeBrightnessForFunction(() async {
DeviceDisplayBrightness.setBrightness(1.0);
await Navigator.pushNamed( await Navigator.pushNamed(
context, context,
Routes.fullscreenQR, Routes.fullscreenQR,
arguments: QrViewData(data: url.toString(), version: QrVersions.auto), arguments: QrViewData(data: url.toString(), version: QrVersions.auto),
); );
// ignore: unawaited_futures });
DeviceDisplayBrightness.setBrightness(brightness);
}, },
splashColor: Colors.transparent, splashColor: Colors.transparent,
highlightColor: Colors.transparent, highlightColor: Colors.transparent,

View file

@ -1,3 +1,4 @@
import 'package:cake_wallet/src/widgets/standard_checkbox.dart';
import 'package:cake_wallet/themes/extensions/cake_text_theme.dart'; import 'package:cake_wallet/themes/extensions/cake_text_theme.dart';
import 'package:cake_wallet/palette.dart'; import 'package:cake_wallet/palette.dart';
import 'package:cake_wallet/utils/responsive_layout_util.dart'; import 'package:cake_wallet/utils/responsive_layout_util.dart';
@ -101,7 +102,7 @@ class CheckBoxPickerState extends State<CheckBoxPicker> {
height: 1, height: 1,
) )
: const SizedBox(), : const SizedBox(),
itemCount: items == null || items.isEmpty ? 0 : items.length, itemCount: items.isEmpty ? 0 : items.length,
itemBuilder: (context, index) => buildItem(index), itemBuilder: (context, index) => buildItem(index),
), ),
); );
@ -112,19 +113,38 @@ class CheckBoxPickerState extends State<CheckBoxPicker> {
return GestureDetector( return GestureDetector(
onTap: () { onTap: () {
Navigator.of(context).pop(); if (item.isDisabled) {
return;
}
bool newValue = !item.value;
item.value = newValue;
widget.onChanged(index, newValue);
setState(() {});
}, },
child: Container( child: Container(
height: 55, height: 55,
color: Theme.of(context).dialogTheme.backgroundColor, color: Theme.of(context).dialogTheme.backgroundColor,
padding: EdgeInsets.only(left: 24, right: 24), padding: EdgeInsets.only(left: 24, right: 24),
child: CheckboxListTile( child: Row(
children: [
StandardCheckbox(
value: item.value, value: item.value,
activeColor: item.value gradientBackground: true,
? Palette.blueCraiola borderColor: Theme.of(context).dividerColor,
: Theme.of(context).extension<FilterTheme>()!.checkboxBackgroundColor, iconColor: Colors.white,
checkColor: Colors.white, onChanged: (bool? value) {
title: widget.displayItem?.call(item) ?? if (value == null || item.isDisabled) {
return;
}
item.value = value;
widget.onChanged(index, value);
setState(() {});
},
),
SizedBox(width: 16),
widget.displayItem?.call(item) ??
Text( Text(
item.title, item.title,
style: TextStyle( style: TextStyle(
@ -136,17 +156,8 @@ class CheckBoxPickerState extends State<CheckBoxPicker> {
: Theme.of(context).extension<CakeTextTheme>()!.titleColor, : Theme.of(context).extension<CakeTextTheme>()!.titleColor,
decoration: TextDecoration.none, decoration: TextDecoration.none,
), ),
), )
onChanged: (bool? value) { ],
if (value == null) {
return;
}
item.value = value;
widget.onChanged(index, value);
setState(() {});
},
controlAffinity: ListTileControlAffinity.leading,
), ),
), ),
); );

View file

@ -0,0 +1,23 @@
import 'package:cake_wallet/utils/device_info.dart';
import 'package:device_display_brightness/device_display_brightness.dart';
class BrightnessUtil {
static Future<void> changeBrightnessForFunction(Future<void> Function() func) async {
// if not mobile, just navigate
if (!DeviceInfo.instance.isMobile) {
func();
return;
}
// Get the current brightness:
final brightness = await DeviceDisplayBrightness.getBrightness();
// ignore: unawaited_futures
DeviceDisplayBrightness.setBrightness(1.0);
await func();
// ignore: unawaited_futures
DeviceDisplayBrightness.setBrightness(brightness);
}
}

View file

@ -30,6 +30,7 @@ import 'package:cake_wallet/view_model/send/send_view_model_state.dart';
import 'package:cake_wallet/entities/parsed_address.dart'; import 'package:cake_wallet/entities/parsed_address.dart';
import 'package:cake_wallet/bitcoin/bitcoin.dart'; import 'package:cake_wallet/bitcoin/bitcoin.dart';
import 'package:cake_wallet/haven/haven.dart'; import 'package:cake_wallet/haven/haven.dart';
import 'package:cake_wallet/generated/i18n.dart';
part 'send_view_model.g.dart'; part 'send_view_model.g.dart';
@ -325,7 +326,8 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor
state = TransactionCommitted(); state = TransactionCommitted();
} catch (e) { } catch (e) {
state = FailureState(e.toString()); String translatedError = translateErrorMessage(e.toString(), wallet.type, wallet.currency);
state = FailureState(translatedError);
} }
} }
@ -412,4 +414,14 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor
selectedCryptoCurrency = wallet.currency; selectedCryptoCurrency = wallet.currency;
} }
} }
String translateErrorMessage(String error, WalletType walletType, CryptoCurrency currency,) {
if (walletType == WalletType.ethereum || walletType == WalletType.haven) {
if (error.contains('gas required exceeds allowance (0)') || error.contains('insufficient funds for gas')) {
return S.current.do_not_have_enough_gas_asset(currency.toString());
}
}
return error;
}
} }

View file

@ -689,5 +689,8 @@
"default_buy_provider": "مزود شراء الافتراضي", "default_buy_provider": "مزود شراء الافتراضي",
"ask_each_time": "اسأل في كل مرة", "ask_each_time": "اسأل في كل مرة",
"buy_provider_unavailable": "مزود حاليا غير متوفر.", "buy_provider_unavailable": "مزود حاليا غير متوفر.",
"address_from_ens": "هذا العنوان من ${domain} على ENS" "address_from_ens": "هذا العنوان من ${domain} على ENS",
"do_not_have_enough_gas_asset": "ليس لديك ما يكفي من ${currency} لإجراء معاملة وفقًا لشروط شبكة blockchain الحالية. أنت بحاجة إلى المزيد من ${currency} لدفع رسوم شبكة blockchain، حتى لو كنت ترسل أصلًا مختلفًا.",
"totp_auth_url": " TOTP ﺔﻗﺩﺎﺼﻤﻟ URL ﻥﺍﻮﻨﻋ"
} }

View file

@ -685,5 +685,7 @@
"default_buy_provider": "Доставчик по подразбиране купува", "default_buy_provider": "Доставчик по подразбиране купува",
"ask_each_time": "Питайте всеки път", "ask_each_time": "Питайте всеки път",
"buy_provider_unavailable": "Понастоящем доставчик не е наличен.", "buy_provider_unavailable": "Понастоящем доставчик не е наличен.",
"address_from_ens": "Този адрес е от ${domain} на ENS" "address_from_ens": "Този адрес е от ${domain} на ENS",
"do_not_have_enough_gas_asset": "Нямате достатъчно ${currency}, за да извършите транзакция с текущите условия на блокчейн мрежата. Имате нужда от повече ${currency}, за да платите таксите за блокчейн мрежа, дори ако изпращате различен актив.",
"totp_auth_url": "TOTP AUTH URL"
} }

View file

@ -685,5 +685,7 @@
"default_buy_provider": "Výchozí poskytovatel nákupu", "default_buy_provider": "Výchozí poskytovatel nákupu",
"ask_each_time": "Zeptejte se pokaždé", "ask_each_time": "Zeptejte se pokaždé",
"buy_provider_unavailable": "Poskytovatel aktuálně nedostupný.", "buy_provider_unavailable": "Poskytovatel aktuálně nedostupný.",
"address_from_ens": "Tato adresa pochází z ${domain} na ENS" "address_from_ens": "Tato adresa pochází z ${domain} na ENS",
"do_not_have_enough_gas_asset": "Nemáte dostatek ${currency} k provedení transakce s aktuálními podmínkami blockchainové sítě. K placení poplatků za blockchainovou síť potřebujete více ${currency}, i když posíláte jiné aktivum.",
"totp_auth_url": "URL AUTH TOTP"
} }

View file

@ -693,5 +693,7 @@
"default_buy_provider": "Standard-Kaufanbieter", "default_buy_provider": "Standard-Kaufanbieter",
"ask_each_time": "Jedes Mal fragen", "ask_each_time": "Jedes Mal fragen",
"buy_provider_unavailable": "Anbieter derzeit nicht verfügbar.", "buy_provider_unavailable": "Anbieter derzeit nicht verfügbar.",
"address_from_ens": "Diese Adresse stammt von ${domain} auf Ens" "address_from_ens": "Diese Adresse stammt von ${domain} auf Ens",
"do_not_have_enough_gas_asset": "Sie verfügen nicht über genügend ${currency}, um eine Transaktion unter den aktuellen Bedingungen des Blockchain-Netzwerks durchzuführen. Sie benötigen mehr ${currency}, um die Gebühren für das Blockchain-Netzwerk zu bezahlen, auch wenn Sie einen anderen Vermögenswert senden.",
"totp_auth_url": "TOTP-Auth-URL"
} }

View file

@ -694,5 +694,7 @@
"ask_each_time": "Ask each time", "ask_each_time": "Ask each time",
"robinhood_option_description": "Buy and transfer instantly using your debit card, bank account, or Robinhood balance. USA only.", "robinhood_option_description": "Buy and transfer instantly using your debit card, bank account, or Robinhood balance. USA only.",
"buy_provider_unavailable": "Provider currently unavailable.", "buy_provider_unavailable": "Provider currently unavailable.",
"address_from_ens": "This address is from ${domain} on ENS" "address_from_ens": "This address is from ${domain} on ENS",
"do_not_have_enough_gas_asset": "You do not have enough ${currency} to make a transaction with the current blockchain network conditions. You need more ${currency} to pay blockchain network fees, even if you are sending a different asset.",
"totp_auth_url": "TOTP AUTH URL"
} }

View file

@ -693,5 +693,7 @@
"default_buy_provider": "Proveedor de compra predeterminado", "default_buy_provider": "Proveedor de compra predeterminado",
"ask_each_time": "Pregunta cada vez", "ask_each_time": "Pregunta cada vez",
"buy_provider_unavailable": "Proveedor actualmente no disponible.", "buy_provider_unavailable": "Proveedor actualmente no disponible.",
"address_from_ens": "Esta dirección es de ${domain} en ENS" "address_from_ens": "Esta dirección es de ${domain} en ENS",
"do_not_have_enough_gas_asset": "No tienes suficiente ${currency} para realizar una transacción con las condiciones actuales de la red blockchain. Necesita más ${currency} para pagar las tarifas de la red blockchain, incluso si envía un activo diferente.",
"totp_auth_url": "URL de autenticación TOTP"
} }

View file

@ -693,5 +693,7 @@
"default_buy_provider": "Fournisseur d'achat par défaut", "default_buy_provider": "Fournisseur d'achat par défaut",
"ask_each_time": "Demandez à chaque fois", "ask_each_time": "Demandez à chaque fois",
"buy_provider_unavailable": "Fournisseur actuellement indisponible.", "buy_provider_unavailable": "Fournisseur actuellement indisponible.",
"address_from_ens": "Cette adresse provient de ${domain} sur ENS" "address_from_ens": "Cette adresse provient de ${domain} sur ENS",
"do_not_have_enough_gas_asset": "Vous n'avez pas assez de ${currency} pour effectuer une transaction avec les conditions actuelles du réseau blockchain. Vous avez besoin de plus de ${currency} pour payer les frais du réseau blockchain, même si vous envoyez un actif différent.",
"totp_auth_url": "URL D'AUTORISATION TOTP"
} }

View file

@ -671,5 +671,7 @@
"default_buy_provider": "Tsohuwar Siyarwa", "default_buy_provider": "Tsohuwar Siyarwa",
"ask_each_time": "Tambaya kowane lokaci", "ask_each_time": "Tambaya kowane lokaci",
"buy_provider_unavailable": "Mai ba da kyauta a halin yanzu babu.", "buy_provider_unavailable": "Mai ba da kyauta a halin yanzu babu.",
"address_from_ens": "Wannan adireshin daga ${domain} Don tabbatarwa" "address_from_ens": "Wannan adireshin daga ${domain} Don tabbatarwa",
"do_not_have_enough_gas_asset": "Ba ku da isassun ${currency} don yin ma'amala tare da yanayin cibiyar sadarwar blockchain na yanzu. Kuna buƙatar ƙarin ${currency} don biyan kuɗaɗen cibiyar sadarwar blockchain, koda kuwa kuna aika wata kadara daban.",
"totp_auth_url": "TOTP AUTH URL"
} }

View file

@ -693,5 +693,7 @@
"default_buy_provider": "डिफ़ॉल्ट खरीद प्रदाता", "default_buy_provider": "डिफ़ॉल्ट खरीद प्रदाता",
"ask_each_time": "हर बार पूछें", "ask_each_time": "हर बार पूछें",
"buy_provider_unavailable": "वर्तमान में प्रदाता अनुपलब्ध है।", "buy_provider_unavailable": "वर्तमान में प्रदाता अनुपलब्ध है।",
"address_from_ens": "यह पता ENS पर ${domain} से है" "address_from_ens": "यह पता ENS पर ${domain} से है",
"do_not_have_enough_gas_asset": "वर्तमान ब्लॉकचेन नेटवर्क स्थितियों में लेनदेन करने के लिए आपके पास पर्याप्त ${currency} नहीं है। ब्लॉकचेन नेटवर्क शुल्क का भुगतान करने के लिए आपको अधिक ${currency} की आवश्यकता है, भले ही आप एक अलग संपत्ति भेज रहे हों।",
"totp_auth_url": "TOTP प्रामाणिक यूआरएल"
} }

View file

@ -693,5 +693,7 @@
"default_buy_provider": "Zadani davatelj kupnje", "default_buy_provider": "Zadani davatelj kupnje",
"ask_each_time": "Pitajte svaki put", "ask_each_time": "Pitajte svaki put",
"buy_provider_unavailable": "Davatelj trenutno nije dostupan.", "buy_provider_unavailable": "Davatelj trenutno nije dostupan.",
"address_from_ens": "Ova je adresa od ${domain} na ens" "address_from_ens": "Ova je adresa od ${domain} na ens",
"do_not_have_enough_gas_asset": "Nemate dovoljno ${currency} da izvršite transakciju s trenutačnim uvjetima blockchain mreže. Trebate više ${currency} da platite naknade za blockchain mrežu, čak i ako šaljete drugu imovinu.",
"totp_auth_url": "TOTP AUTH URL"
} }

View file

@ -681,5 +681,7 @@
"default_buy_provider": "Penyedia beli default", "default_buy_provider": "Penyedia beli default",
"ask_each_time": "Tanyakan setiap kali", "ask_each_time": "Tanyakan setiap kali",
"buy_provider_unavailable": "Penyedia saat ini tidak tersedia.", "buy_provider_unavailable": "Penyedia saat ini tidak tersedia.",
"address_from_ens": "Alamat ini dari ${domain} di ENS" "address_from_ens": "Alamat ini dari ${domain} di ENS",
"do_not_have_enough_gas_asset": "Anda tidak memiliki cukup ${currency} untuk melakukan transaksi dengan kondisi jaringan blockchain saat ini. Anda memerlukan lebih banyak ${currency} untuk membayar biaya jaringan blockchain, meskipun Anda mengirimkan aset yang berbeda.",
"totp_auth_url": "URL Otentikasi TOTP"
} }

View file

@ -693,5 +693,7 @@
"default_buy_provider": "Provider di acquisto predefinito", "default_buy_provider": "Provider di acquisto predefinito",
"ask_each_time": "Chiedi ogni volta", "ask_each_time": "Chiedi ogni volta",
"buy_provider_unavailable": "Provider attualmente non disponibile.", "buy_provider_unavailable": "Provider attualmente non disponibile.",
"address_from_ens": "Questo indirizzo è da ${domain} su ENS" "address_from_ens": "Questo indirizzo è da ${domain} su ENS",
"do_not_have_enough_gas_asset": "Non hai abbastanza ${currency} per effettuare una transazione con le attuali condizioni della rete blockchain. Hai bisogno di più ${currency} per pagare le commissioni della rete blockchain, anche se stai inviando una risorsa diversa.",
"totp_auth_url": "URL DI AUT. TOTP"
} }

View file

@ -693,5 +693,7 @@
"default_buy_provider": "デフォルトの購入プロバイダー", "default_buy_provider": "デフォルトの購入プロバイダー",
"ask_each_time": "毎回尋ねてください", "ask_each_time": "毎回尋ねてください",
"buy_provider_unavailable": "現在、プロバイダーは利用できません。", "buy_provider_unavailable": "現在、プロバイダーは利用できません。",
"address_from_ens": "このアドレスはENSの${domain}からです" "address_from_ens": "このアドレスはENSの${domain}からです",
"do_not_have_enough_gas_asset": "現在のブロックチェーン ネットワークの状況では、トランザクションを行うのに十分な ${currency} がありません。別のアセットを送信する場合でも、ブロックチェーン ネットワーク料金を支払うにはさらに ${currency} が必要です。",
"totp_auth_url": "TOTP認証URL"
} }

View file

@ -693,5 +693,7 @@
"default_buy_provider": "기본 구매 제공자", "default_buy_provider": "기본 구매 제공자",
"ask_each_time": "매번 물어보십시오", "ask_each_time": "매번 물어보십시오",
"buy_provider_unavailable": "제공자는 현재 사용할 수 없습니다.", "buy_provider_unavailable": "제공자는 현재 사용할 수 없습니다.",
"address_from_ens": "이 주소는 ens의 ${domain}에서입니다." "address_from_ens": "이 주소는 ens의 ${domain}에서입니다.",
"do_not_have_enough_gas_asset": "현재 블록체인 네트워크 조건으로 거래를 하기에는 ${currency}이(가) 충분하지 않습니다. 다른 자산을 보내더라도 블록체인 네트워크 수수료를 지불하려면 ${currency}가 더 필요합니다.",
"totp_auth_url": "TOTP 인증 URL"
} }

View file

@ -691,5 +691,7 @@
"default_buy_provider": "Default Provider ကိုဝယ်ပါ", "default_buy_provider": "Default Provider ကိုဝယ်ပါ",
"ask_each_time": "တစ်ခုချင်းစီကိုအချိန်မေးပါ", "ask_each_time": "တစ်ခုချင်းစီကိုအချိန်မေးပါ",
"buy_provider_unavailable": "လက်ရှိတွင်လက်ရှိမရနိုင်ပါ။", "buy_provider_unavailable": "လက်ရှိတွင်လက်ရှိမရနိုင်ပါ။",
"address_from_ens": "ဒီလိပ်စာက ens အပေါ် ${domain} မှဖြစ်ပါတယ်" "address_from_ens": "ဒီလိပ်စာက ens အပေါ် ${domain} မှဖြစ်ပါတယ်",
"do_not_have_enough_gas_asset": "လက်ရှိ blockchain ကွန်ရက်အခြေအနေများနှင့် အရောင်းအဝယ်ပြုလုပ်ရန် သင့်တွင် ${currency} လုံလောက်မှုမရှိပါ။ သင်သည် မတူညီသော ပိုင်ဆိုင်မှုတစ်ခုကို ပေးပို့နေသော်လည်း blockchain ကွန်ရက်အခကြေးငွေကို ပေးဆောင်ရန် သင်သည် နောက်ထပ် ${currency} လိုအပ်ပါသည်။",
"totp_auth_url": "TOTP AUTH URL"
} }

View file

@ -693,5 +693,7 @@
"default_buy_provider": "Standaard Koopprovider", "default_buy_provider": "Standaard Koopprovider",
"ask_each_time": "Vraag het elke keer", "ask_each_time": "Vraag het elke keer",
"buy_provider_unavailable": "Provider momenteel niet beschikbaar.", "buy_provider_unavailable": "Provider momenteel niet beschikbaar.",
"address_from_ens": "Dit adres is van ${domain} op ENS" "address_from_ens": "Dit adres is van ${domain} op ENS",
"do_not_have_enough_gas_asset": "U heeft niet genoeg ${currency} om een transactie uit te voeren met de huidige blockchain-netwerkomstandigheden. U heeft meer ${currency} nodig om blockchain-netwerkkosten te betalen, zelfs als u een ander item verzendt.",
"totp_auth_url": "TOTP AUTH-URL"
} }

View file

@ -693,5 +693,7 @@
"default_buy_provider": "Domyślny dostawca zakupu", "default_buy_provider": "Domyślny dostawca zakupu",
"ask_each_time": "Zapytaj za każdym razem", "ask_each_time": "Zapytaj za każdym razem",
"buy_provider_unavailable": "Dostawca obecnie niedostępny.", "buy_provider_unavailable": "Dostawca obecnie niedostępny.",
"address_from_ens": "Ten adres pochodzi od ${domain} na ens" "address_from_ens": "Ten adres pochodzi od ${domain} na ens",
"do_not_have_enough_gas_asset": "Nie masz wystarczającej ilości ${currency}, aby dokonać transakcji przy bieżących warunkach sieci blockchain. Potrzebujesz więcej ${currency}, aby uiścić opłaty za sieć blockchain, nawet jeśli wysyłasz inny zasób.",
"totp_auth_url": "Adres URL TOTP AUTH"
} }

View file

@ -692,5 +692,7 @@
"default_buy_provider": "Provedor de compra padrão", "default_buy_provider": "Provedor de compra padrão",
"ask_each_time": "Pergunte cada vez", "ask_each_time": "Pergunte cada vez",
"buy_provider_unavailable": "Provedor atualmente indisponível.", "buy_provider_unavailable": "Provedor atualmente indisponível.",
"address_from_ens": "Este endereço é de ${domain} no ENS" "address_from_ens": "Este endereço é de ${domain} no ENS",
"do_not_have_enough_gas_asset": "Você não tem ${currency} suficiente para fazer uma transação com as condições atuais da rede blockchain. Você precisa de mais ${currency} para pagar as taxas da rede blockchain, mesmo se estiver enviando um ativo diferente.",
"totp_auth_url": "URL de autenticação TOTP"
} }

View file

@ -693,5 +693,7 @@
"default_buy_provider": "По умолчанию поставщик покупки", "default_buy_provider": "По умолчанию поставщик покупки",
"ask_each_time": "Спросите каждый раз", "ask_each_time": "Спросите каждый раз",
"buy_provider_unavailable": "Поставщик в настоящее время недоступен.", "buy_provider_unavailable": "Поставщик в настоящее время недоступен.",
"address_from_ens": "Этот адрес от ${domain} на ENS" "address_from_ens": "Этот адрес от ${domain} на ENS",
"do_not_have_enough_gas_asset": "У вас недостаточно ${currency} для совершения транзакции при текущих условиях сети блокчейн. Вам нужно больше ${currency} для оплаты комиссий за сеть блокчейна, даже если вы отправляете другой актив.",
"totp_auth_url": "URL-адрес TOTP-АВТОРИЗАЦИИ"
} }

View file

@ -691,5 +691,7 @@
"default_buy_provider": "ผู้ให้บริการซื้อเริ่มต้น", "default_buy_provider": "ผู้ให้บริการซื้อเริ่มต้น",
"ask_each_time": "ถามทุกครั้ง", "ask_each_time": "ถามทุกครั้ง",
"buy_provider_unavailable": "ผู้ให้บริการไม่สามารถใช้งานได้ในปัจจุบัน", "buy_provider_unavailable": "ผู้ให้บริการไม่สามารถใช้งานได้ในปัจจุบัน",
"address_from_ens": "ที่อยู่นี้มาจาก ${domain} บน Ens" "address_from_ens": "ที่อยู่นี้มาจาก ${domain} บน Ens",
"do_not_have_enough_gas_asset": "คุณมี ${currency} ไม่เพียงพอที่จะทำธุรกรรมกับเงื่อนไขเครือข่ายบล็อคเชนในปัจจุบัน คุณต้องมี ${currency} เพิ่มขึ้นเพื่อชำระค่าธรรมเนียมเครือข่ายบล็อคเชน แม้ว่าคุณจะส่งสินทรัพย์อื่นก็ตาม",
"totp_auth_url": "URL การตรวจสอบสิทธิ์ TOTP"
} }

View file

@ -688,5 +688,7 @@
"support_description_other_links": "Sumali sa aming mga komunidad o maabot sa amin ang aming mga kasosyo sa pamamagitan ng iba pang mga pamamaraan", "support_description_other_links": "Sumali sa aming mga komunidad o maabot sa amin ang aming mga kasosyo sa pamamagitan ng iba pang mga pamamaraan",
"select_destination": "Mangyaring piliin ang patutunguhan para sa backup file.", "select_destination": "Mangyaring piliin ang patutunguhan para sa backup file.",
"save_to_downloads": "I -save sa mga pag -download", "save_to_downloads": "I -save sa mga pag -download",
"address_from_ens": "Ang address na ito ay mula sa ${domain} sa ens" "address_from_ens": "Ang address na ito ay mula sa ${domain} sa ens",
"do_not_have_enough_gas_asset": "Wala kang sapat na ${currency} para gumawa ng transaksyon sa kasalukuyang kundisyon ng network ng blockchain. Kailangan mo ng higit pang ${currency} upang magbayad ng mga bayarin sa network ng blockchain, kahit na nagpapadala ka ng ibang asset.",
"totp_auth_url": "TOTP AUTH URL"
} }

View file

@ -691,5 +691,7 @@
"default_buy_provider": "Varsayılan Satın Alma Sağlayıcısı", "default_buy_provider": "Varsayılan Satın Alma Sağlayıcısı",
"ask_each_time": "Her seferinde sor", "ask_each_time": "Her seferinde sor",
"buy_provider_unavailable": "Sağlayıcı şu anda kullanılamıyor.", "buy_provider_unavailable": "Sağlayıcı şu anda kullanılamıyor.",
"address_from_ens": "Bu adres ens'deki ${domain} 'den" "address_from_ens": "Bu adres ens'deki ${domain} 'den",
"do_not_have_enough_gas_asset": "Mevcut blockchain ağ koşullarıyla işlem yapmak için yeterli ${currency} paranız yok. Farklı bir varlık gönderiyor olsanız bile blockchain ağ ücretlerini ödemek için daha fazla ${currency} miktarına ihtiyacınız var.",
"totp_auth_url": "TOTP YETKİ URL'si"
} }

View file

@ -693,5 +693,7 @@
"default_buy_provider": "Постачальник покупки за замовчуванням", "default_buy_provider": "Постачальник покупки за замовчуванням",
"ask_each_time": "Запитайте кожен раз", "ask_each_time": "Запитайте кожен раз",
"buy_provider_unavailable": "В даний час постачальник недоступний.", "buy_provider_unavailable": "В даний час постачальник недоступний.",
"address_from_ens": "Ця адреса від ${domain} на ENS" "address_from_ens": "Ця адреса від ${domain} на ENS",
"do_not_have_enough_gas_asset": "У вас недостатньо ${currency}, щоб здійснити трансакцію з поточними умовами мережі блокчейн. Вам потрібно більше ${currency}, щоб сплатити комісію мережі блокчейн, навіть якщо ви надсилаєте інший актив.",
"totp_auth_url": "TOTP AUTH URL"
} }

View file

@ -685,5 +685,7 @@
"default_buy_provider": "پہلے سے طے شدہ خریدنے والا", "default_buy_provider": "پہلے سے طے شدہ خریدنے والا",
"ask_each_time": "ہر بار پوچھیں", "ask_each_time": "ہر بار پوچھیں",
"buy_provider_unavailable": "فراہم کنندہ فی الحال دستیاب نہیں ہے۔", "buy_provider_unavailable": "فراہم کنندہ فی الحال دستیاب نہیں ہے۔",
"address_from_ens": "یہ پتہ ENS پر ${domain} سے ہے" "address_from_ens": "یہ پتہ ENS پر ${domain} سے ہے",
"do_not_have_enough_gas_asset": "آپ کے پاس موجودہ بلاکچین نیٹ ورک کی شرائط کے ساتھ لین دین کرنے کے لیے کافی ${currency} نہیں ہے۔ آپ کو بلاکچین نیٹ ورک کی فیس ادا کرنے کے لیے مزید ${currency} کی ضرورت ہے، چاہے آپ کوئی مختلف اثاثہ بھیج رہے ہوں۔",
"totp_auth_url": "TOTP AUTH URL"
} }

View file

@ -687,5 +687,7 @@
"default_buy_provider": "Aiyipada Ra Olupese", "default_buy_provider": "Aiyipada Ra Olupese",
"ask_each_time": "Beere lọwọ kọọkan", "ask_each_time": "Beere lọwọ kọọkan",
"buy_provider_unavailable": "Olupese lọwọlọwọ ko si.", "buy_provider_unavailable": "Olupese lọwọlọwọ ko si.",
"address_from_ens": "Adirẹsi yii ni lati ${domain} Lori ens" "address_from_ens": "Adirẹsi yii ni lati ${domain} Lori ens",
"do_not_have_enough_gas_asset": "O ko ni to ${currency} lati ṣe idunadura kan pẹlu awọn ipo nẹtiwọki blockchain lọwọlọwọ. O nilo diẹ sii ${currency} lati san awọn owo nẹtiwọọki blockchain, paapaa ti o ba nfi dukia miiran ranṣẹ.",
"totp_auth_url": "TOTP AUTH URL"
} }

View file

@ -692,5 +692,7 @@
"default_buy_provider": "默认购买提供商", "default_buy_provider": "默认购买提供商",
"ask_each_time": "每次问", "ask_each_time": "每次问",
"buy_provider_unavailable": "提供者目前不可用。", "buy_provider_unavailable": "提供者目前不可用。",
"address_from_ens": "此地址来自ENS上的${domain}" "address_from_ens": "此地址来自ENS上的${domain}",
"do_not_have_enough_gas_asset": "您没有足够的 ${currency} 来在当前的区块链网络条件下进行交易。即使您发送的是不同的资产,您也需要更多的 ${currency} 来支付区块链网络费用。",
"totp_auth_url": "TOTP 授权 URL"
} }

View file

@ -7,7 +7,7 @@
# if you get an error `command not found` # if you get an error `command not found`
# give the correct permissions to this file using `chmod 777 append_translation.sh` # give the correct permissions to this file using `chmod 777 append_translation.sh`
langs=("ar" "bg" "cs" "de" "en" "es" "fr" "ha" "hi" "hr" "id" "it" "ja" "ko" "my" "nl" "pl" "pt" "ru" "th" "tr" "uk" "ur" "yo" "zh") langs=("ar" "bg" "cs" "de" "en" "es" "fr" "ha" "hi" "hr" "id" "it" "ja" "ko" "my" "nl" "pl" "pt" "ru" "th" "tl" "tr" "uk" "ur" "yo" "zh")
name=$1 name=$1
text=$2 text=$2