This commit is contained in:
Rafael Saes 2023-09-06 18:26:59 -03:00
commit dcebe3ee66
41 changed files with 393 additions and 103 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -1,8 +1,8 @@
import 'package:hive/hive.dart';
import 'package:cw_core/wallet_type.dart';
import 'dart:async';
import 'package:cw_core/address_info.dart';
import 'package:cw_core/hive_type_ids.dart';
import 'package:cw_core/wallet_type.dart';
import 'package:hive/hive.dart';
part 'wallet_info.g.dart';

View file

@ -4,6 +4,7 @@ import 'dart:io';
import 'dart:math';
import 'package:cw_core/crypto_currency.dart';
import 'package:cw_core/cake_hive.dart';
import 'package:cw_core/node.dart';
import 'package:cw_core/pathForWallet.dart';
import 'package:cw_core/pending_transaction.dart';
@ -61,14 +62,11 @@ abstract class EthereumWalletBase
{CryptoCurrency.eth: initialBalance ?? ERC20Balance(BigInt.zero)}),
super(walletInfo) {
this.walletInfo = walletInfo;
transactionHistory = EthereumTransactionHistory(
walletInfo: walletInfo,
password: password,
encryptionFileUtils: encryptionFileUtils,
);
transactionHistory = EthereumTransactionHistory(walletInfo: walletInfo, password: password, encryptionFileUtils: encryptionFileUtils,
);
if (!Hive.isAdapterRegistered(Erc20Token.typeId)) {
Hive.registerAdapter(Erc20TokenAdapter());
if (!CakeHive.isAdapterRegistered(Erc20Token.typeId)) {
CakeHive.registerAdapter(Erc20TokenAdapter());
}
_sharedPrefs.complete(SharedPreferences.getInstance());
@ -107,7 +105,7 @@ abstract class EthereumWalletBase
Completer<SharedPreferences> _sharedPrefs = Completer();
Future<void> init() async {
erc20TokensBox = await Hive.openBox<Erc20Token>(Erc20Token.boxName);
erc20TokensBox = await CakeHive.openBox<Erc20Token>(Erc20Token.boxName);
await walletAddresses.init();
await transactionHistory.init();
_ethPrivateKey = await getPrivateKey(

View file

@ -1,6 +1,4 @@
import 'package:cake_wallet/buy/onramper/onramper_buy_provider.dart';
import 'package:cake_wallet/core/yat_service.dart';
import 'package:cake_wallet/entities/parse_address_from_domain.dart';
import 'package:cake_wallet/entities/preferences_key.dart';
import 'package:cake_wallet/anonpay/anonpay_api.dart';
@ -38,20 +36,22 @@ import 'package:cake_wallet/src/screens/ionia/cards/ionia_custom_redeem_page.dar
import 'package:cake_wallet/src/screens/ionia/cards/ionia_gift_card_detail_page.dart';
import 'package:cake_wallet/src/screens/ionia/cards/ionia_more_options_page.dart';
import 'package:cake_wallet/src/screens/settings/connection_sync_page.dart';
import 'package:cake_wallet/src/screens/support_chat/support_chat_page.dart';
import 'package:cake_wallet/src/screens/support_other_links/support_other_links_page.dart';
import 'package:cake_wallet/src/screens/wallet_unlock/wallet_unlock_arguments.dart';
import 'package:cake_wallet/themes/theme_list.dart';
import 'package:cake_wallet/utils/payment_request.dart';
import 'package:cake_wallet/utils/responsive_layout_util.dart';
import 'package:cake_wallet/view_model/dashboard/desktop_sidebar_view_model.dart';
import 'package:cake_wallet/src/screens/setup_2fa/modify_2fa_page.dart';
import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa_qr_page.dart';
import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa.dart';
import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa_enter_code_page.dart';
import 'package:cake_wallet/src/screens/wallet/wallet_edit_page.dart';
import 'package:cake_wallet/themes/theme_list.dart';
import 'package:cake_wallet/utils/device_info.dart';
import 'package:cake_wallet/store/anonpay/anonpay_transactions_store.dart';
import 'package:cake_wallet/utils/payment_request.dart';
import 'package:cake_wallet/utils/responsive_layout_util.dart';
import 'package:cake_wallet/view_model/anon_invoice_page_view_model.dart';
import 'package:cake_wallet/view_model/anonpay_details_view_model.dart';
import 'package:cake_wallet/view_model/dashboard/desktop_sidebar_view_model.dart';
import 'package:cake_wallet/view_model/dashboard/home_settings_view_model.dart';
import 'package:cake_wallet/view_model/dashboard/market_place_view_model.dart';
import 'package:cake_wallet/view_model/dashboard/receive_option_view_model.dart';
@ -864,6 +864,11 @@ Future<void> setup({
getIt.registerFactory(() => SupportPage(getIt.get<SupportViewModel>()));
getIt.registerFactory(() =>
SupportChatPage(getIt.get<SupportViewModel>(), secureStorage: getIt.get<SecureStorage>()));
getIt.registerFactory(() => SupportOtherLinksPage(getIt.get<SupportViewModel>()));
getIt.registerFactory(() {
final wallet = getIt.get<AppStore>().wallet;

View file

@ -41,6 +41,8 @@ import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa_qr_page.dart';
import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa.dart';
import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa_enter_code_page.dart';
import 'package:cake_wallet/src/screens/support/support_page.dart';
import 'package:cake_wallet/src/screens/support_chat/support_chat_page.dart';
import 'package:cake_wallet/src/screens/support_other_links/support_other_links_page.dart';
import 'package:cake_wallet/src/screens/unspent_coins/unspent_coins_details_page.dart';
import 'package:cake_wallet/src/screens/unspent_coins/unspent_coins_list_page.dart';
import 'package:cake_wallet/src/screens/wallet_unlock/wallet_unlock_arguments.dart';
@ -468,9 +470,16 @@ Route<dynamic> createRoute(RouteSettings settings) {
case Routes.support:
return CupertinoPageRoute<void>(
fullscreenDialog: true,
builder: (_) => getIt.get<SupportPage>());
case Routes.supportLiveChat:
return CupertinoPageRoute<void>(
builder: (_) => getIt.get<SupportChatPage>());
case Routes.supportOtherLinks:
return CupertinoPageRoute<void>(
fullscreenDialog: true,
builder: (_) => getIt.get<SupportOtherLinksPage>());
case Routes.unspentCoinsList:
return MaterialPageRoute<void>(
builder: (_) => getIt.get<UnspentCoinsListPage>());

View file

@ -47,6 +47,8 @@ class Routes {
static const editBackupPassword = '/edit_backup_passowrd';
static const restoreFromBackup = '/restore_from_backup';
static const support = '/support';
static const supportLiveChat = '/support/live_chat';
static const supportOtherLinks = '/support/other';
static const orderDetails = '/order_details';
static const preOrder = '/pre_order';
static const buyWebView = '/buy_web_view';
@ -83,7 +85,6 @@ class Routes {
static const anonPayInvoicePage = '/anon_pay_invoice_page';
static const anonPayReceivePage = '/anon_pay_receive_page';
static const anonPayDetailsPage = '/anon_pay_details_page';
static const payfuraPage = '/pay_fura_page';
static const desktop_actions = '/desktop_actions';
static const transactionsPage = '/transactions_page';
static const setup_2faPage = '/setup_2fa_page';

View file

@ -1,5 +1,4 @@
import 'package:cake_wallet/themes/extensions/keyboard_theme.dart';
import 'package:cake_wallet/themes/extensions/keyboard_theme.dart';
import 'package:cake_wallet/di.dart';
import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/src/screens/monero_accounts/monero_account_list_page.dart';

View file

@ -212,7 +212,7 @@ class _WalletNameFormState extends State<WalletNameForm> {
fontSize: 18.0,
fontWeight: FontWeight.w500,
color: Theme.of(context).extension<NewWalletTheme>()!.hintTextColor),
hintText: S.of(context).repeate_wallet_password,
hintText: S.of(context).repeat_wallet_password,
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(
color: Theme.of(context).extension<NewWalletTheme>()!.underlineColor,

View file

@ -152,7 +152,7 @@ class WalletRestoreFromKeysFromState extends State<WalletRestoreFromKeysFrom> {
padding: EdgeInsets.only(top: 20.0),
child: BaseTextFormField(
controller: repeatedPasswordTextEditingController,
hintText: S.of(context).repeate_wallet_password,
hintText: S.of(context).repeat_wallet_password,
obscureText: true))],
Container(height: 20),
_restoreFromKeysFormFields(),

View file

@ -148,7 +148,7 @@ class WalletRestoreFromSeedFormState extends State<WalletRestoreFromSeedForm> {
obscureText: true),
BaseTextFormField(
controller: repeatedPasswordTextEditingController,
hintText: S.of(context).repeate_wallet_password,
hintText: S.of(context).repeat_wallet_password,
obscureText: true)],
if (widget.displayLanguageSelector)
GestureDetector(

View file

@ -1,51 +1,78 @@
import 'package:cake_wallet/src/screens/settings/widgets/settings_cell_with_arrow.dart';
import 'package:cake_wallet/src/screens/settings/widgets/settings_link_provider_cell.dart';
import 'package:cake_wallet/src/widgets/standard_list.dart';
import 'package:cake_wallet/themes/extensions/support_page_theme.dart';
import 'package:cake_wallet/view_model/settings/link_list_item.dart';
import 'package:cake_wallet/view_model/settings/regular_list_item.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/src/screens/support/widgets/support_tiles.dart';
import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/utils/device_info.dart';
import 'package:cake_wallet/view_model/support_view_model.dart';
import 'package:flutter/material.dart';
import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:url_launcher/url_launcher.dart';
class SupportPage extends BasePage {
SupportPage(this.supportViewModel);
final SupportViewModel supportViewModel;
final imageLiveSupport = Image.asset('assets/images/live_support.png');
final imageWalletGuides = Image.asset('assets/images/wallet_guides.png');
final imageMoreLinks = Image.asset('assets/images/more_links.png');
@override
String get title => S.current.settings_support;
@override
AppBarStyle get appBarStyle => AppBarStyle.regular;
@override
Widget body(BuildContext context) {
final iconColor = Theme.of(context).extension<SupportPageTheme>()!.iconColor;
// FIX-ME: Added `context` it was not used here before, maby bug ?
return Center(
return Container(
child: Center(
child: ConstrainedBox(
constraints: BoxConstraints(maxWidth: 500),
child: SectionStandardList(
sectionCount: 1,
itemCounter: (int _) => supportViewModel.items.length,
itemBuilder: (_, index) {
final item = supportViewModel.items[index];
if (item is RegularListItem) {
return SettingsCellWithArrow(title: item.title, handler: item.handler);
constraints: BoxConstraints(maxWidth: 330),
child: Column(
children: [
Padding(
padding: EdgeInsets.only(top: 24),
child: SupportTile(
image: imageLiveSupport,
title: S.of(context).support_title_live_chat,
description: S.of(context).support_description_live_chat,
onPressed: () {
if (DeviceInfo.instance.isDesktop) {
_launchUrl(supportViewModel.fetchUrl());
} else {
Navigator.pushNamed(context, Routes.supportLiveChat);
}
if (item is LinkListItem) {
return SettingsLinkProviderCell(
title: item.title,
icon: item.icon,
iconColor: item.hasIconColor ? iconColor : null,
link: item.link,
linkTitle: item.linkTitle);
}
return Container();
}),
},
),
),
Padding(
padding: EdgeInsets.only(top: 24),
child: SupportTile(
image: imageWalletGuides,
title: S.of(context).support_title_guides,
description: S.of(context).support_description_guides,
onPressed: () => _launchUrl(supportViewModel.guidesUrl),
),
),
Padding(
padding: EdgeInsets.only(top: 24),
child: SupportTile(
image: imageMoreLinks,
title: S.of(context).support_title_other_links,
description: S.of(context).support_description_other_links,
onPressed: () => Navigator.pushNamed(context, Routes.supportOtherLinks),
),
),
],
),
),
),
);
}
void _launchUrl(String url) async {
try {
await launchUrl(Uri.parse(url), mode: LaunchMode.externalApplication);
} catch (e) {}
}
}

View file

@ -0,0 +1,38 @@
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/src/screens/support_chat/widgets/chatwoot_widget.dart';
import 'package:cake_wallet/view_model/support_view_model.dart';
import 'package:flutter/material.dart';
import 'package:cake_wallet/core/secure_storage.dart';
class SupportChatPage extends BasePage {
SupportChatPage(this.supportViewModel, {required this.secureStorage});
final SupportViewModel supportViewModel;
final SecureStorage secureStorage;
@override
String get title => S.current.settings_support;
@override
AppBarStyle get appBarStyle => AppBarStyle.regular;
@override
Widget body(BuildContext context) => FutureBuilder<String>(
future: getCookie(),
builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
print(snapshot.data);
if (snapshot.hasData)
return ChatwootWidget(
secureStorage,
supportUrl: supportViewModel.fetchUrl(authToken: snapshot.data!)
);
return Container();
},
);
Future<String> getCookie() async {
return await secureStorage.read(key: COOKIE_KEY) ?? "";
}
}

View file

@ -0,0 +1,62 @@
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:cake_wallet/core/secure_storage.dart';
const COOKIE_KEY = 'chatwootCookie';
class ChatwootWidget extends StatefulWidget {
ChatwootWidget(this.secureStorage, {required this.supportUrl});
final SecureStorage secureStorage;
final String supportUrl;
@override
ChatwootWidgetState createState() => ChatwootWidgetState();
}
class ChatwootWidgetState extends State<ChatwootWidget> {
final GlobalKey _webViewkey = GlobalKey();
@override
Widget build(BuildContext context) => InAppWebView(
key: _webViewkey,
initialOptions: InAppWebViewGroupOptions(
crossPlatform: InAppWebViewOptions(transparentBackground: true),
),
initialUrlRequest: URLRequest(url: Uri.tryParse(widget.supportUrl)),
onWebViewCreated: (InAppWebViewController controller) {
controller.addWebMessageListener(
WebMessageListener(
jsObjectName: 'ReactNativeWebView',
onPostMessage: (String? message, Uri? sourceOrigin, bool isMainFrame,
JavaScriptReplyProxy replyProxy) {
final shortenedMessage = message?.substring(16);
if (shortenedMessage != null && isJsonString(shortenedMessage)) {
final parsedMessage = jsonDecode(shortenedMessage);
final eventType = parsedMessage["event"];
if (eventType == 'loaded') {
final authToken = parsedMessage["config"]["authToken"];
print(authToken);
storeCookie(authToken as String);
}
}
},
),
);
},
);
bool isJsonString(String str) {
try {
jsonDecode(str);
} catch (e) {
return false;
}
return true;
}
Future<void> storeCookie(String value) async =>
await widget.secureStorage.write(key: COOKIE_KEY, value: value);
}

View file

@ -1,8 +1,8 @@
#!/bin/sh
cd cw_core && flutter pub get && flutter packages pub run build_runner build --delete-conflicting-outputs && cd ..
cd cw_monero && flutter pub get && flutter packages pub run build_runner build --delete-conflicting-outputs && cd ..
cd cw_bitcoin && flutter pub get && flutter packages pub run build_runner build --delete-conflicting-outputs && cd ..
cd cw_haven && flutter pub get && flutter packages pub run build_runner build --delete-conflicting-outputs && cd ..
cd cw_ethereum && flutter pub get && flutter packages pub run build_runner build --delete-conflicting-outputs && cd ..
flutter packages pub run build_runner build --delete-conflicting-outputs
cd cw_core; flutter pub get; flutter packages pub run build_runner build --delete-conflicting-outputs; cd ..
cd cw_monero; flutter pub get; flutter packages pub run build_runner build --delete-conflicting-outputs; cd ..
cd cw_bitcoin; flutter pub get; flutter packages pub run build_runner build --delete-conflicting-outputs; cd ..
cd cw_haven; flutter pub get; flutter packages pub run build_runner build --delete-conflicting-outputs; cd ..
cd cw_ethereum; flutter pub get; flutter packages pub run build_runner build --delete-conflicting-outputs; cd ..
dart run build_runner build --delete-conflicting-outputs

View file

@ -696,5 +696,11 @@
"select_destination": ".ﻲﻃﺎﻴﺘﺣﻻﺍ ﺦﺴﻨﻟﺍ ﻒﻠﻣ ﺔﻬﺟﻭ ﺪﻳﺪﺤﺗ ءﺎﺟﺮﻟﺍ",
"save_to_downloads": "ﺕﻼﻳﺰﻨﺘﻟﺍ ﻲﻓ ﻆﻔﺣ",
"support_description_other_links": "انضم إلى مجتمعاتنا أو تصل إلينا شركائنا من خلال أساليب أخرى",
"auto_generate_subaddresses": "تلقائي توليد subddresses"
"auto_generate_subaddresses": "تلقائي توليد subddresses",
"invalid_password": "رمز مرور خاطئ",
"unlock": "الغاء القفل",
"enter_wallet_password": "أدخل كلمة مرور المحفظة",
"repeat_wallet_password": "كرر كلمة مرور المحفظة",
"wallet_password_is_empty": "كلمة مرور المحفظة فارغة. يجب ألا تكون كلمة مرور المحفظة فارغة",
"repeated_password_is_incorrect": "كلمة المرور المتكررة غير صحيحة. يرجى تكرار كلمة مرور المحفظة مرة أخرى."
}

View file

@ -692,5 +692,12 @@
"support_title_other_links": "Други връзки за поддръжка",
"support_description_other_links": "Присъединете се към нашите общности или се свържете с нас нашите партньори чрез други методи",
"select_destination": "Моля, изберете дестинация за архивния файл.",
"save_to_downloads": "Запазване в Изтегляния"
"save_to_downloads": "Запазване в Изтегляния",
"settings": "Настройки",
"invalid_password": "Невалидна парола",
"unlock": "Отключване",
"enter_wallet_password": "Въведете паролата за портфейла",
"repeat_wallet_password": "Повторете паролата на портфейла",
"wallet_password_is_empty": "Паролата за портфейл е празна. Паролата за портфейл не трябва да е празна",
"repeated_password_is_incorrect": "Многократната парола е неправилна. Моля, повторете отново паролата за портфейла."
}

View file

@ -685,5 +685,11 @@
"support_title_other_links": "Další odkazy na podporu",
"support_description_other_links": "Připojte se k našim komunitám nebo se k nám oslovte další metody",
"select_destination": "Vyberte cíl pro záložní soubor.",
"save_to_downloads": "Uložit do Stažených souborů"
"save_to_downloads": "Uložit do Stažených souborů",
"invalid_password": "Neplatné heslo",
"unlock": "Odemknout",
"enter_wallet_password": "Zadejte heslo peněženky",
"repeat_wallet_password": "Opakujte heslo peněženky",
"wallet_password_is_empty": "Heslo peněženky je prázdné. Heslo peněženky by nemělo být prázdné",
"repeated_password_is_incorrect": "Opakované heslo je nesprávné. Znovu opakujte heslo peněženky."
}

View file

@ -647,7 +647,7 @@
"matrix_green_dark_theme": "Matrix Green Dark Theme",
"monero_light_theme": "Monero Light-Thema",
"auto_generate_subaddresses": "Unteradressen automatisch generieren",
"cake_2fa_preset" : "Cake 2FA-Voreinstellung",
"cake_2fa_preset": "Cake 2FA-Voreinstellung",
"narrow": "Eng",
"normal": "Normal",
"aggressive": "Übereifrig",
@ -693,5 +693,11 @@
"support_title_other_links": "Andere Support-Links",
"support_description_other_links": "Treten Sie unseren Communities bei oder erreichen Sie uns oder unsere Partner über andere Methoden",
"select_destination": "Bitte wählen Sie das Ziel für die Sicherungsdatei aus.",
"save_to_downloads": "Unter „Downloads“ speichern"
"save_to_downloads": "Unter „Downloads“ speichern",
"invalid_password": "Ungültiges Passwort",
"unlock": "Freischalten",
"enter_wallet_password": "Geben Sie das Brieftaschenkennwort ein",
"repeat_wallet_password": "Wiederholen Sie das Brieftaschenkennwort",
"wallet_password_is_empty": "Brieftaschenkennwort ist leer. Brieftaschenkennwort sollte nicht leer sein",
"repeated_password_is_incorrect": "Wiederholtes Passwort ist falsch. Bitte wiederholen Sie das Brieftaschenkennwort erneut."
}

View file

@ -693,5 +693,11 @@
"support_title_other_links": "Other support links",
"support_description_other_links": "Join our communities or reach us our our partners through other methods",
"select_destination": "Please select destination for the backup file.",
"save_to_downloads": "Save to Downloads"
"save_to_downloads": "Save to Downloads",
"invalid_password": "Invalid password",
"unlock": "Unlock",
"enter_wallet_password": "Enter the wallet password",
"repeat_wallet_password": "Repeat the wallet password",
"wallet_password_is_empty": "Wallet password is empty. Wallet password should not be empty",
"repeated_password_is_incorrect": "Repeated password is incorrect. Please repeat the wallet password again."
}

View file

@ -693,5 +693,11 @@
"support_title_other_links": "Otros enlaces de soporte",
"support_description_other_links": "Únase a nuestras comunidades o comuníquese con nosotros nuestros socios a través de otros métodos",
"select_destination": "Seleccione el destino del archivo de copia de seguridad.",
"save_to_downloads": "Guardar en Descargas"
"save_to_downloads": "Guardar en Descargas",
"invalid_password": "Contraseña invalida",
"unlock": "desbloquear",
"enter_wallet_password": "Ingrese la contraseña de la billetera",
"repeat_wallet_password": "Repita la contraseña de billetera",
"wallet_password_is_empty": "La contraseña de billetera está vacía. La contraseña de la billetera no debe estar vacía",
"repeated_password_is_incorrect": "La contraseña repetida es incorrecta. Repita la contraseña de la billetera nuevamente."
}

View file

@ -693,5 +693,11 @@
"support_title_other_links": "Autres liens d'assistance",
"support_description_other_links": "Rejoignez nos communautés ou contactez-nous nos partenaires à travers d'autres méthodes",
"select_destination": "Veuillez sélectionner la destination du fichier de sauvegarde.",
"save_to_downloads": "Enregistrer dans les téléchargements"
"save_to_downloads": "Enregistrer dans les téléchargements",
"invalid_password": "Mot de passe incorrect",
"unlock": "Ouvrir",
"enter_wallet_password": "Entrez le mot de passe du portefeuille",
"repeat_wallet_password": "Répétez le mot de passe du portefeuille",
"wallet_password_is_empty": "Le mot de passe du portefeuille est vide. Le mot de passe du portefeuille ne doit pas être vide",
"repeated_password_is_incorrect": "Le mot de passe répété est incorrect. Veuillez répéter le mot de passe du portefeuille."
}

View file

@ -671,5 +671,11 @@
"support_title_other_links": "Sauran hanyoyin tallafi",
"support_description_other_links": "Kasance tare da al'ummominmu ko kuma ka kai mu abokanmu ta hanyar wasu hanyoyi",
"select_destination": "Da fatan za a zaɓi wurin da za a yi wa madadin fayil ɗin.",
"save_to_downloads": "Ajiye zuwa Zazzagewa"
"save_to_downloads": "Ajiye zuwa Zazzagewa",
"invalid_password": "Kalmar sirri mara inganci",
"unlock": "Buɗe",
"enter_wallet_password": "Shigar da kalmar sirri ta walat",
"repeat_wallet_password": "Maimaita kalmar sirri",
"wallet_password_is_empty": "Alamar Wallet babu komai. Al'adun Wallet bai zama komai ba",
"repeated_password_is_incorrect": "Maimaita kalmar sirri ba daidai ba ce. Da fatan za a sake maimaita kalmar sirri."
}

View file

@ -693,5 +693,11 @@
"support_title_other_links": "अन्य समर्थन लिंक",
"support_description_other_links": "हमारे समुदायों में शामिल हों या अन्य तरीकों के माध्यम से हमारे साथी तक पहुंचें",
"select_destination": "कृपया बैकअप फ़ाइल के लिए गंतव्य का चयन करें।",
"save_to_downloads": "डाउनलोड में सहेजें"
"save_to_downloads": "डाउनलोड में सहेजें",
"invalid_password": "अवैध पासवर्ड",
"unlock": "अनलॉक",
"enter_wallet_password": "वॉलेट पासवर्ड दर्ज करें",
"repeat_wallet_password": "वॉलेट पासवर्ड दोहराएं",
"wallet_password_is_empty": "वॉलेट पासवर्ड खाली है। वॉलेट पासवर्ड खाली नहीं होना चाहिए",
"repeated_password_is_incorrect": "बार -बार पासवर्ड गलत है। कृपया फिर से वॉलेट पासवर्ड दोहराएं।"
}

View file

@ -693,5 +693,11 @@
"support_title_other_links": "Ostale veze za podršku",
"support_description_other_links": "Pridružite se našim zajednicama ili nam dosegnu naše partnere drugim metodama",
"select_destination": "Odaberite odredište za datoteku sigurnosne kopije.",
"save_to_downloads": "Spremi u Preuzimanja"
"save_to_downloads": "Spremi u Preuzimanja",
"invalid_password": "Netočna zaporka",
"unlock": "Otključati",
"enter_wallet_password": "Unesite lozinku za novčanik",
"repeat_wallet_password": "Ponovite lozinku za novčanik",
"wallet_password_is_empty": "Lozinka za novčanik je prazna. Lozinka za novčanik ne bi trebala biti prazna",
"repeated_password_is_incorrect": "Ponovljena lozinka je netočna. Molimo ponovite lozinku za novčanik."
}

View file

@ -682,5 +682,11 @@
"support_title_other_links": "Tautan dukungan lainnya",
"support_description_other_links": "Bergabunglah dengan komunitas kami atau hubungi kami mitra kami melalui metode lain",
"select_destination": "Silakan pilih tujuan untuk file cadangan.",
"save_to_downloads": "Simpan ke Unduhan"
"save_to_downloads": "Simpan ke Unduhan",
"invalid_password": "Kata sandi salah",
"unlock": "Membuka kunci",
"enter_wallet_password": "Masukkan Kata Sandi Dompet",
"repeat_wallet_password": "Ulangi Kata Sandi Dompet",
"wallet_password_is_empty": "Kata sandi dompet kosong. Kata sandi dompet tidak boleh kosong",
"repeated_password_is_incorrect": "Kata sandi yang diulang tidak benar. Harap ulangi kata sandi dompet lagi."
}

View file

@ -693,5 +693,11 @@
"support_title_other_links": "Altri collegamenti di supporto",
"support_description_other_links": "Unisciti alle nostre comunità o raggiungici i nostri partner attraverso altri metodi",
"select_destination": "Seleziona la destinazione per il file di backup.",
"save_to_downloads": "Salva in Download"
"save_to_downloads": "Salva in Download",
"invalid_password": "Password non valida",
"unlock": "Sbloccare",
"enter_wallet_password": "Immettere la password del portafoglio",
"repeat_wallet_password": "Ripeti la password del portafoglio",
"wallet_password_is_empty": "La password del portafoglio è vuota. La password del portafoglio non dovrebbe essere vuota",
"repeated_password_is_incorrect": "La password ripetuta non è corretta. Si prega di ripetere di nuovo la password del portafoglio."
}

View file

@ -693,5 +693,11 @@
"support_description_other_links": "私たちのコミュニティに参加するか、他の方法を通して私たちのパートナーに連絡してください",
"select_destination": "バックアップファイルの保存先を選択してください。",
"save_to_downloads": "ダウンロードに保存",
"auto_generate_subaddresses": "Autoはサブアドレスを生成します"
"auto_generate_subaddresses": "Autoはサブアドレスを生成します",
"invalid_password": "無効なパスワード",
"unlock": "ロックを解除します",
"enter_wallet_password": "ウォレットパスワードを入力します",
"repeat_wallet_password": "ウォレットパスワードを繰り返します",
"wallet_password_is_empty": "ウォレットパスワードは空です。ウォレットのパスワードは空にしてはいけません",
"repeated_password_is_incorrect": "繰り返しパスワードが正しくありません。ウォレットのパスワードをもう一度繰り返してください。"
}

View file

@ -693,5 +693,11 @@
"support_description_other_links": "다른 방법을 통해 커뮤니티에 가입하거나 파트너에게 연락하십시오.",
"select_destination": "백업 파일의 대상을 선택하십시오.",
"save_to_downloads": "다운로드에 저장",
"auto_generate_subaddresses": "자동 생성 서브 아드 드레스"
"auto_generate_subaddresses": "자동 생성 서브 아드 드레스",
"invalid_password": "유효하지 않은 비밀번호",
"unlock": "터놓다",
"enter_wallet_password": "지갑 암호를 입력하십시오",
"repeat_wallet_password": "지갑 암호를 반복하십시오",
"wallet_password_is_empty": "지갑 암호는 비어 있습니다. 지갑 암호는 비어 있지 않아야합니다",
"repeated_password_is_incorrect": "반복 된 비밀번호가 올바르지 않습니다. 지갑 암호를 다시 반복하십시오."
}

View file

@ -691,5 +691,11 @@
"support_description_other_links": "ကျွန်ုပ်တို့၏လူမှုအသိုင်းအဝိုင်းများသို့ 0 င်ရောက်ပါ",
"select_destination": "အရန်ဖိုင်အတွက် ဦးတည်ရာကို ရွေးပါ။",
"save_to_downloads": "ဒေါင်းလုဒ်များထံ သိမ်းဆည်းပါ။",
"auto_generate_subaddresses": "အော်တို Generate Subaddresses"
"auto_generate_subaddresses": "အော်တို Generate Subaddresses",
"invalid_password": "မမှန်ကန်သောစကားဝှက်",
"unlock": "သော့ဖွင့်",
"enter_wallet_password": "ပိုက်ဆံအိတ်စကားဝှက်ကိုရိုက်ထည့်ပါ",
"repeat_wallet_password": "ပိုက်ဆံအိတ်စကားဝှက်ကိုပြန်လုပ်ပါ",
"wallet_password_is_empty": "ပိုက်ဆံအိတ်စကားဝှက်သည်ဗလာဖြစ်သည်။ ပိုက်ဆံအိတ်စကားဝှက်သည်အချည်းနှီးဖြစ်သင့်သည်",
"repeated_password_is_incorrect": "ထပ်ခါတလဲလဲစကားဝှက်မမှန်ကန်ပါ ကျေးဇူးပြုပြီးပိုက်ဆံအိတ်စကားဝှက်ကိုပြန်လုပ်ပါ။"
}

View file

@ -693,5 +693,11 @@
"support_title_other_links": "Andere ondersteuningslinks",
"support_description_other_links": "Word lid van onze gemeenschappen of bereik ons onze partners via andere methoden",
"select_destination": "Selecteer de bestemming voor het back-upbestand.",
"save_to_downloads": "Opslaan in downloads"
"save_to_downloads": "Opslaan in downloads",
"invalid_password": "Ongeldig wachtwoord",
"unlock": "Ontgrendelen",
"enter_wallet_password": "Voer het Wallet -wachtwoord in",
"repeat_wallet_password": "Herhaal het Wallet -wachtwoord",
"wallet_password_is_empty": "Wallet -wachtwoord is leeg. Wallet -wachtwoord mag niet leeg zijn",
"repeated_password_is_incorrect": "Herhaald wachtwoord is onjuist. Herhaal het Wallet -wachtwoord opnieuw."
}

View file

@ -693,5 +693,11 @@
"support_title_other_links": "Inne linki wsparcia",
"support_description_other_links": "Dołącz do naszych społeczności lub skontaktuj się z nami naszymi partnerami za pomocą innych metod",
"select_destination": "Wybierz miejsce docelowe dla pliku kopii zapasowej.",
"save_to_downloads": "Zapisz w Pobranych"
"save_to_downloads": "Zapisz w Pobranych",
"invalid_password": "Nieprawidłowe hasło",
"unlock": "Odblokować",
"enter_wallet_password": "Wprowadź hasło portfela",
"repeat_wallet_password": "Powtórz hasło portfela",
"wallet_password_is_empty": "Hasło portfela jest puste. Hasło portfela nie powinno być puste",
"repeated_password_is_incorrect": "Powtarzane hasło jest nieprawidłowe. Powtórz ponownie hasło portfela."
}

View file

@ -692,5 +692,11 @@
"support_title_other_links": "Outros links de suporte",
"support_description_other_links": "Junte -se às nossas comunidades ou chegue a nós nossos parceiros por meio de outros métodos",
"select_destination": "Selecione o destino para o arquivo de backup.",
"save_to_downloads": "Salvar em Downloads"
"save_to_downloads": "Salvar em Downloads",
"invalid_password": "Senha inválida",
"unlock": "Desbloquear",
"enter_wallet_password": "Digite a senha da carteira",
"repeat_wallet_password": "Repita a senha da carteira",
"wallet_password_is_empty": "A senha da carteira está vazia. A senha da carteira não deve estar vazia",
"repeated_password_is_incorrect": "A senha repetida está incorreta. Repita a senha da carteira novamente."
}

View file

@ -694,5 +694,11 @@
"support_description_other_links": "Присоединяйтесь к нашим сообществам или охватите нас наших партнеров с помощью других методов",
"select_destination": "Пожалуйста, выберите место для файла резервной копии.",
"save_to_downloads": "Сохранить в загрузках",
"auto_generate_subaddresses": "Авто генерируйте Subaddresses"
"auto_generate_subaddresses": "Авто генерируйте Subaddresses",
"invalid_password": "Неверный пароль",
"unlock": "Разблокировать",
"enter_wallet_password": "Введите пароль кошелька",
"repeat_wallet_password": "Повторите пароль кошелька",
"wallet_password_is_empty": "Пароль кошелька пуст. Пароль кошелька не должен быть пустым",
"repeated_password_is_incorrect": "Повторный пароль неверен. Пожалуйста, повторите пароль кошелька снова."
}

View file

@ -691,5 +691,11 @@
"support_description_other_links": "เข้าร่วมชุมชนของเราหรือเข้าถึงเราพันธมิตรของเราผ่านวิธีการอื่น ๆ",
"select_destination": "โปรดเลือกปลายทางสำหรับไฟล์สำรอง",
"save_to_downloads": "บันทึกลงดาวน์โหลด",
"auto_generate_subaddresses": "Auto สร้าง subaddresses"
"auto_generate_subaddresses": "Auto สร้าง subaddresses",
"invalid_password": "รหัสผ่านไม่ถูกต้อง",
"unlock": "ปลดล็อค",
"enter_wallet_password": "ป้อนรหัสผ่านกระเป๋าเงิน",
"repeat_wallet_password": "ทำซ้ำรหัสผ่านกระเป๋าเงิน",
"wallet_password_is_empty": "รหัสผ่านกระเป๋าเงินว่างเปล่า รหัสผ่านกระเป๋าเงินไม่ควรว่างเปล่า",
"repeated_password_is_incorrect": "รหัสผ่านซ้ำไม่ถูกต้อง โปรดทำซ้ำรหัสผ่านกระเป๋าเงินอีกครั้ง"
}

View file

@ -691,5 +691,11 @@
"support_title_other_links": "Diğer destek bağlantıları",
"support_description_other_links": "Topluluklarımıza katılın veya ortaklarımıza diğer yöntemlerle bize ulaşın",
"select_destination": "Lütfen yedekleme dosyası için hedef seçin.",
"save_to_downloads": "İndirilenlere Kaydet"
"save_to_downloads": "İndirilenlere Kaydet",
"invalid_password": "Geçersiz şifre",
"unlock": "Kilidini aç",
"enter_wallet_password": "Cüzdan şifresini girin",
"repeat_wallet_password": "Cüzdan şifresini tekrarlayın",
"wallet_password_is_empty": "Cüzdan şifresi boş. Cüzdan şifresi boş olmamalı",
"repeated_password_is_incorrect": "Tekrarlanan şifre yanlış. Lütfen cüzdan şifresini tekrarlayın."
}

View file

@ -693,5 +693,11 @@
"support_title_other_links": "Інші посилання на підтримку",
"support_description_other_links": "Приєднуйтесь до наших спільнот або досягайте нас нашими партнерами іншими методами",
"select_destination": "Виберіть місце призначення для файлу резервної копії.",
"save_to_downloads": "Зберегти до завантажень"
"save_to_downloads": "Зберегти до завантажень",
"invalid_password": "Недійсний пароль",
"unlock": "Розблокувати",
"enter_wallet_password": "Введіть пароль гаманця",
"repeat_wallet_password": "Повторіть пароль гаманця",
"wallet_password_is_empty": "Пароль гаманця порожній. Пароль гаманця не повинен бути порожнім",
"repeated_password_is_incorrect": "Повторний пароль невірний. Будь ласка, повторіть пароль гаманця ще раз."
}

View file

@ -686,5 +686,11 @@
"support_description_other_links": "ہماری برادریوں میں شامل ہوں یا دوسرے طریقوں سے ہمارے شراکت داروں تک پہنچیں",
"select_destination": "۔ﮟﯾﺮﮐ ﺏﺎﺨﺘﻧﺍ ﺎﮐ ﻝﺰﻨﻣ ﮯﯿﻟ ﮯﮐ ﻞﺋﺎﻓ ﭖﺍ ﮏﯿﺑ ﻡﺮﮐ ﮦﺍﺮﺑ",
"save_to_downloads": "۔ﮟﯾﺮﮐ ﻅﻮﻔﺤﻣ ﮟﯿﻣ ﺯﮈﻮﻟ ﻥﺅﺍﮈ",
"auto_generate_subaddresses": "آٹو سب ایڈریس تیار کرتا ہے"
"auto_generate_subaddresses": "آٹو سب ایڈریس تیار کرتا ہے",
"invalid_password": "غلط پاسورڈ",
"unlock": "غیر مقفل",
"enter_wallet_password": "پرس کا پاس ورڈ درج کریں",
"repeat_wallet_password": "بٹوے کا پاس ورڈ دہرائیں",
"wallet_password_is_empty": "پرس کا پاس ورڈ خالی ہے۔ پرس کا پاس ورڈ خالی نہیں ہونا چاہئے",
"repeated_password_is_incorrect": "بار بار پاس ورڈ غلط ہے۔ براہ کرم دوبارہ پرس کا پاس ورڈ دہرائیں۔"
}

View file

@ -681,5 +681,11 @@
"monero_light_theme": "Monero Light Akori",
"select_destination": "Jọwọ yan ibi ti o nlo fun faili afẹyinti.",
"save_to_downloads": "Fipamọ si Awọn igbasilẹ",
"auto_generate_subaddresses": "Aṣiṣe Ibi-Afọwọkọ"
"auto_generate_subaddresses": "Aṣiṣe Ibi-Afọwọkọ",
"invalid_password": "Ọrọ igbaniwọle ti ko wulo",
"unlock": "Sisalẹ",
"enter_wallet_password": "Tẹ ọrọ igbaniwọle apamọwọ",
"repeat_wallet_password": "Tun ọrọ igbaniwọle apamọwọ naa",
"wallet_password_is_empty": "Ọrọ igbaniwọle apamọwọ ti ṣofo. Ọrọ igbaniwọle apamọwọ ko yẹ ki o ṣofo",
"repeated_password_is_incorrect": "Ọrọ igbaniwọle tun jẹ aṣiṣe. Jọwọ tun ọrọigbaniwọle apamọwọ lẹẹkansi."
}

View file

@ -692,5 +692,11 @@
"monero_light_theme": "门罗币浅色主题",
"select_destination": "请选择备份文件的目的地。",
"save_to_downloads": "保存到下载",
"auto_generate_subaddresses": "自动生成子辅助"
"auto_generate_subaddresses": "自动生成子辅助",
"invalid_password": "无效的密码",
"unlock": "开锁",
"enter_wallet_password": "输入钱包密码",
"repeat_wallet_password": "重复钱包密码",
"wallet_password_is_empty": "钱包密码为空。钱包密码不应为空",
"repeated_password_is_incorrect": "重复密码不正确。请再次重复钱包密码。"
}