From 38da6e73d4d6a1ca5a7c13698c58475f70f22919 Mon Sep 17 00:00:00 2001 From: OmarHatem Date: Wed, 23 Nov 2022 18:06:09 +0200 Subject: [PATCH 01/43] Wrap app in zone guard --- lib/main.dart | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 3cd5679b3..193240518 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -42,9 +42,16 @@ final navigatorKey = GlobalKey(); final rootKey = GlobalKey(); Future main() async { - try { + + await runZonedGuarded(() async { WidgetsFlutterBinding.ensureInitialized(); + // FlutterError.onError = ; + + // Isolate.current.addErrorListener(RawReceivePort((pair) async { + // final List errorAndStacktrace = pair; + // }).sendPort); + final appDir = await getApplicationDocumentsDirectory(); await Hive.close(); Hive.init(appDir.path); @@ -130,7 +137,7 @@ Future main() async { secureStorage: secureStorage, initialMigrationVersion: 17); runApp(App()); - } catch (e, stacktrace) { + }, (error, stackTrace) { runApp(MaterialApp( debugShowCheckedModeBanner: true, home: Scaffold( @@ -138,10 +145,10 @@ Future main() async { margin: EdgeInsets.only(top: 50, left: 20, right: 20, bottom: 20), child: Text( - 'Error:\n${e.toString()}\nStacktrace: $stacktrace', + 'Error:\n${error.toString()}\nStacktrace: $stackTrace', style: TextStyle(fontSize: 22), ))))); - } + }); } Future initialSetup( From 68c20641b959844bb5495e48126190bfb69d8c05 Mon Sep 17 00:00:00 2001 From: OmarHatem Date: Wed, 23 Nov 2022 23:02:18 +0200 Subject: [PATCH 02/43] Save exceptions locally --- lib/main.dart | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 193240518..541415f13 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,7 @@ import 'dart:async'; +import 'dart:convert'; +import 'dart:io'; +import 'dart:isolate'; import 'package:cake_wallet/bitcoin/bitcoin.dart'; import 'package:cake_wallet/entities/language_service.dart'; import 'package:cake_wallet/buy/order.dart'; @@ -46,11 +49,24 @@ Future main() async { await runZonedGuarded(() async { WidgetsFlutterBinding.ensureInitialized(); - // FlutterError.onError = ; + FlutterError.onError = (errorDetails) { + _saveException(errorDetails.exception.toString(), errorDetails.stack); + }; - // Isolate.current.addErrorListener(RawReceivePort((pair) async { - // final List errorAndStacktrace = pair; - // }).sendPort); + PlatformDispatcher.instance.onError = (error, stack) { + _saveException(error.toString(), stack); + return true; + }; + + Isolate.current.addErrorListener(RawReceivePort((pair) async { + final errorAndStacktrace = pair as List; + _saveException( + errorAndStacktrace.first, + errorAndStacktrace.last == null + ? null + : StackTrace.fromString(errorAndStacktrace.last!), + ); + }).sendPort); final appDir = await getApplicationDocumentsDirectory(); await Hive.close(); @@ -151,6 +167,17 @@ Future main() async { }); } +void _saveException(String? error, StackTrace? stackTrace) async { + final file = File('/error.txt'); + final exception = { + "${DateTime.now()}": { + "error": error, + "stackTrace": stackTrace.toString(), + } + }; + await file.writeAsString(jsonEncode(exception), mode: FileMode.append); +} + Future initialSetup( {required SharedPreferences sharedPreferences, required Box nodes, From 34746c31c8848fa17ec54152b55d09e95aebf72d Mon Sep 17 00:00:00 2001 From: OmarHatem Date: Thu, 24 Nov 2022 16:27:29 +0200 Subject: [PATCH 03/43] Save exceptions to local file --- lib/main.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/main.dart b/lib/main.dart index 541415f13..ba5b78e44 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -154,6 +154,7 @@ Future main() async { initialMigrationVersion: 17); runApp(App()); }, (error, stackTrace) { + _saveException(error.toString(), stackTrace); runApp(MaterialApp( debugShowCheckedModeBanner: true, home: Scaffold( From 7b99e409a9e0c9a4eba92698557923e1b251eecb Mon Sep 17 00:00:00 2001 From: OmarHatem Date: Fri, 25 Nov 2022 18:59:47 +0200 Subject: [PATCH 04/43] Send error file via email --- lib/main.dart | 67 +++++++++++++++++------- lib/src/screens/failure_page.dart | 87 +++++++++++++++++++++++++++++++ pubspec_base.yaml | 1 + 3 files changed, 135 insertions(+), 20 deletions(-) create mode 100644 lib/src/screens/failure_page.dart diff --git a/lib/main.dart b/lib/main.dart index ba5b78e44..4ffb168f6 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -5,9 +5,12 @@ import 'dart:isolate'; import 'package:cake_wallet/bitcoin/bitcoin.dart'; import 'package:cake_wallet/entities/language_service.dart'; import 'package:cake_wallet/buy/order.dart'; +import 'package:cake_wallet/entities/preferences_key.dart'; import 'package:cake_wallet/ionia/ionia_category.dart'; import 'package:cake_wallet/ionia/ionia_merchant.dart'; +import 'package:cake_wallet/src/screens/failure_page.dart'; import 'package:cake_wallet/store/yat/yat_store.dart'; +import 'package:cake_wallet/themes/theme_list.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -50,24 +53,28 @@ Future main() async { WidgetsFlutterBinding.ensureInitialized(); FlutterError.onError = (errorDetails) { + print("@@@@@@@@@@@@@@@"); + print("FlutterError.onError"); + print(errorDetails); _saveException(errorDetails.exception.toString(), errorDetails.stack); }; + ErrorWidget.builder = (errorDetails) { + return FailurePage( + error: errorDetails.exception.toString(), + stackTrace: errorDetails.stack, + ); + }; + + /// A callback that is invoked when an unhandled error occurs in the root + /// isolate. PlatformDispatcher.instance.onError = (error, stack) { + print("@@@@@@@@@@@@@@@"); + print("PlatformDispatcher.instance.onError"); _saveException(error.toString(), stack); return true; }; - Isolate.current.addErrorListener(RawReceivePort((pair) async { - final errorAndStacktrace = pair as List; - _saveException( - errorAndStacktrace.first, - errorAndStacktrace.last == null - ? null - : StackTrace.fromString(errorAndStacktrace.last!), - ); - }).sendPort); - final appDir = await getApplicationDocumentsDirectory(); await Hive.close(); Hive.init(appDir.path); @@ -153,29 +160,49 @@ Future main() async { secureStorage: secureStorage, initialMigrationVersion: 17); runApp(App()); - }, (error, stackTrace) { + }, (error, stackTrace) async { _saveException(error.toString(), stackTrace); - runApp(MaterialApp( + final sharedPreferences = await SharedPreferences.getInstance(); + final theme = ThemeList.deserialize( + raw: sharedPreferences.getInt(PreferencesKey.currentTheme) ?? 0); + + final savedLanguageCode = + sharedPreferences.getString(PreferencesKey.currentLanguageCode) ?? + await LanguageService.localeDetection(); + runApp( + MaterialApp( debugShowCheckedModeBanner: true, + theme: theme.themeData, + localizationsDelegates: [ + S.delegate, + GlobalCupertinoLocalizations.delegate, + GlobalMaterialLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + ], + supportedLocales: S.delegate.supportedLocales, + locale: Locale(savedLanguageCode), home: Scaffold( - body: Container( - margin: - EdgeInsets.only(top: 50, left: 20, right: 20, bottom: 20), - child: Text( - 'Error:\n${error.toString()}\nStacktrace: $stackTrace', - style: TextStyle(fontSize: 22), - ))))); + body: FailurePage( + error: error.toString(), + stackTrace: stackTrace, + ), + ), + ), + ); }); } void _saveException(String? error, StackTrace? stackTrace) async { - final file = File('/error.txt'); + final appDocDir = await getApplicationDocumentsDirectory(); + + final file = File('${appDocDir.path}/error.txt'); final exception = { "${DateTime.now()}": { "error": error, "stackTrace": stackTrace.toString(), } }; + await file.writeAsString(jsonEncode(exception), mode: FileMode.append); } diff --git a/lib/src/screens/failure_page.dart b/lib/src/screens/failure_page.dart new file mode 100644 index 000000000..ea3d75fcb --- /dev/null +++ b/lib/src/screens/failure_page.dart @@ -0,0 +1,87 @@ +import 'dart:io'; + +import 'package:cake_wallet/generated/i18n.dart'; +import 'package:cake_wallet/src/widgets/primary_button.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_mailer/flutter_mailer.dart'; +import 'package:path_provider/path_provider.dart'; + +class FailurePage extends StatelessWidget { + final String? error; + final StackTrace? stackTrace; + + FailurePage({Key? key, this.error, this.stackTrace}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + return Scaffold( + backgroundColor: Colors.grey.shade400, + body: Center( + child: Padding( + padding: EdgeInsets.symmetric( + horizontal: MediaQuery.of(context).size.width * 0.2), + child: Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Icon( + Icons.warning, + color: theme.errorColor, + size: 50, + ), + Padding( + padding: const EdgeInsets.symmetric(vertical: 20), + child: Text( + "Oops, we got some error.", + style: theme.textTheme.headline1?.copyWith(fontSize: 20), + ), + ), + Text( + "Please send crash report to our support team to make the application better.", + textAlign: TextAlign.center, + style: theme.textTheme.headline1?.copyWith(fontSize: 16), + ), + Padding( + padding: const EdgeInsets.symmetric(vertical: 20), + child: PrimaryButton( + onPressed: _sendExceptionFile, + text: S.of(context).send, + textColor: Colors.white, + color: theme.accentTextTheme.bodyText1!.color!, + ), + ), + PrimaryButton( + onPressed: () { + }, + text: "Don't Send", + color: Theme.of(context).accentTextTheme.caption!.color!, + textColor: + Theme.of(context).primaryTextTheme.headline6!.color!, + ), + ], + ), + ), + ), + ); + } + + void _sendExceptionFile() async { + final appDocDir = await getApplicationDocumentsDirectory(); + + final file = File('${appDocDir.path}/error.txt'); + + print(file.readAsStringSync()); + + final MailOptions mailOptions = MailOptions( + subject: 'Mobile App Issue', + recipients: ['support@cakewallet.com'], + attachments: [file.path], + ); + + await FlutterMailer.send(mailOptions); + + // clear file content + // file.writeAsString("", mode: FileMode.write); + } +} diff --git a/pubspec_base.yaml b/pubspec_base.yaml index 248a06de0..fe5e6efc4 100644 --- a/pubspec_base.yaml +++ b/pubspec_base.yaml @@ -61,6 +61,7 @@ dependencies: permission_handler: ^10.0.0 device_display_brightness: ^0.0.6 platform_device_id: ^1.0.1 + flutter_mailer: ^2.0.1 cake_backup: git: url: https://github.com/cake-tech/cake_backup.git From 51ea377a52febaeab9ea61b526e9623e772408c9 Mon Sep 17 00:00:00 2001 From: OmarHatem Date: Sun, 27 Nov 2022 14:44:35 +0200 Subject: [PATCH 05/43] Temporarily comment run app on error of run zone guard --- lib/main.dart | 58 +++++++++++++++++++++++++++------------------------ 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 4ffb168f6..da0b2c531 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -161,34 +161,38 @@ Future main() async { initialMigrationVersion: 17); runApp(App()); }, (error, stackTrace) async { + print("@@@@@@@@@@@@@@@@"); + print(error); + print(stackTrace); _saveException(error.toString(), stackTrace); - final sharedPreferences = await SharedPreferences.getInstance(); - final theme = ThemeList.deserialize( - raw: sharedPreferences.getInt(PreferencesKey.currentTheme) ?? 0); - - final savedLanguageCode = - sharedPreferences.getString(PreferencesKey.currentLanguageCode) ?? - await LanguageService.localeDetection(); - runApp( - MaterialApp( - debugShowCheckedModeBanner: true, - theme: theme.themeData, - localizationsDelegates: [ - S.delegate, - GlobalCupertinoLocalizations.delegate, - GlobalMaterialLocalizations.delegate, - GlobalWidgetsLocalizations.delegate, - ], - supportedLocales: S.delegate.supportedLocales, - locale: Locale(savedLanguageCode), - home: Scaffold( - body: FailurePage( - error: error.toString(), - stackTrace: stackTrace, - ), - ), - ), - ); + // TODO: this will trigger even there is no fatal error occurred so better not build a new app instance + // final sharedPreferences = await SharedPreferences.getInstance(); + // final theme = ThemeList.deserialize( + // raw: sharedPreferences.getInt(PreferencesKey.currentTheme) ?? 0); + // + // final savedLanguageCode = + // sharedPreferences.getString(PreferencesKey.currentLanguageCode) ?? + // await LanguageService.localeDetection(); + // runApp( + // MaterialApp( + // debugShowCheckedModeBanner: true, + // theme: theme.themeData, + // localizationsDelegates: [ + // S.delegate, + // GlobalCupertinoLocalizations.delegate, + // GlobalMaterialLocalizations.delegate, + // GlobalWidgetsLocalizations.delegate, + // ], + // supportedLocales: S.delegate.supportedLocales, + // locale: Locale(savedLanguageCode), + // home: Scaffold( + // body: FailurePage( + // error: error.toString(), + // stackTrace: stackTrace, + // ), + // ), + // ), + // ); }); } From 03ea516e63384b9b5e4d28d4d483ddbf875dc36f Mon Sep 17 00:00:00 2001 From: OmarHatem Date: Tue, 29 Nov 2022 14:03:14 +0200 Subject: [PATCH 06/43] Add initial alert for errors --- lib/main.dart | 76 +++++++++++++++++++++++++++------------------------ 1 file changed, 41 insertions(+), 35 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index da0b2c531..afa5804a0 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -9,8 +9,10 @@ import 'package:cake_wallet/entities/preferences_key.dart'; import 'package:cake_wallet/ionia/ionia_category.dart'; import 'package:cake_wallet/ionia/ionia_merchant.dart'; import 'package:cake_wallet/src/screens/failure_page.dart'; +import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart'; import 'package:cake_wallet/store/yat/yat_store.dart'; import 'package:cake_wallet/themes/theme_list.dart'; +import 'package:cake_wallet/utils/show_pop_up.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -53,13 +55,19 @@ Future main() async { WidgetsFlutterBinding.ensureInitialized(); FlutterError.onError = (errorDetails) { - print("@@@@@@@@@@@@@@@"); - print("FlutterError.onError"); - print(errorDetails); + print("@@@@@@@@@@@@@@@@@ in on error"); + print(errorDetails.exception.toString()); + _onError(errorDetails); _saveException(errorDetails.exception.toString(), errorDetails.stack); }; ErrorWidget.builder = (errorDetails) { + print("@@@@@@@@@@@@@@@@@ in widget error"); + // TODO: uncomment + // if (kDebugMode) { + // return ErrorWidget(errorDetails.exception); + // } + return FailurePage( error: errorDetails.exception.toString(), stackTrace: errorDetails.stack, @@ -161,38 +169,8 @@ Future main() async { initialMigrationVersion: 17); runApp(App()); }, (error, stackTrace) async { - print("@@@@@@@@@@@@@@@@"); - print(error); - print(stackTrace); - _saveException(error.toString(), stackTrace); - // TODO: this will trigger even there is no fatal error occurred so better not build a new app instance - // final sharedPreferences = await SharedPreferences.getInstance(); - // final theme = ThemeList.deserialize( - // raw: sharedPreferences.getInt(PreferencesKey.currentTheme) ?? 0); - // - // final savedLanguageCode = - // sharedPreferences.getString(PreferencesKey.currentLanguageCode) ?? - // await LanguageService.localeDetection(); - // runApp( - // MaterialApp( - // debugShowCheckedModeBanner: true, - // theme: theme.themeData, - // localizationsDelegates: [ - // S.delegate, - // GlobalCupertinoLocalizations.delegate, - // GlobalMaterialLocalizations.delegate, - // GlobalWidgetsLocalizations.delegate, - // ], - // supportedLocales: S.delegate.supportedLocales, - // locale: Locale(savedLanguageCode), - // home: Scaffold( - // body: FailurePage( - // error: error.toString(), - // stackTrace: stackTrace, - // ), - // ), - // ), - // ); + print("@@@@@@@@@@@@@@@@ in run zone guard"); + _onError(FlutterErrorDetails(exception: error, stack: stackTrace)); }); } @@ -210,6 +188,34 @@ void _saveException(String? error, StackTrace? stackTrace) async { await file.writeAsString(jsonEncode(exception), mode: FileMode.append); } +void _onError(FlutterErrorDetails details) { + print("#############"); + print(details.exception.toString()); + WidgetsBinding.instance.addPostFrameCallback( + (timeStamp) { + showPopUp( + context: navigatorKey.currentContext!, + builder: (context) { + return AlertWithTwoActions( + isDividerExist: true, + alertTitle: S.of(context).error, + alertContent: "Oops, we got some error.\n\nPlease send crash report to our support team to make the application better.", + rightButtonText: S.of(context).send, + leftButtonText: "Don't send", + actionRightButton: () async { + Navigator.of(context).pop(); + }, + actionLeftButton: () { + Navigator.of(context).pop(); + _saveException(details.exception.toString(), details.stack); + }, + ); + }, + ); + }, + ); +} + Future initialSetup( {required SharedPreferences sharedPreferences, required Box nodes, From b8293ac0aeb001fa262da82f7fcd1fefbb339c19 Mon Sep 17 00:00:00 2001 From: Godwin Asuquo Date: Thu, 5 Jan 2023 09:40:05 +0100 Subject: [PATCH 07/43] replace webview plugin with inappwebview plugin to check camera permission once in app --- android/app/src/main/AndroidManifestBase.xml | 10 +++++++ lib/main.dart | 3 +- lib/src/screens/buy/buy_webview_page.dart | 31 ++++++++------------ pubspec_base.yaml | 2 +- 4 files changed, 26 insertions(+), 20 deletions(-) diff --git a/android/app/src/main/AndroidManifestBase.xml b/android/app/src/main/AndroidManifestBase.xml index 22278d5f1..9faf1c704 100644 --- a/android/app/src/main/AndroidManifestBase.xml +++ b/android/app/src/main/AndroidManifestBase.xml @@ -6,6 +6,7 @@ + + + + diff --git a/lib/main.dart b/lib/main.dart index 11eee146b..f93eed545 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -11,6 +11,7 @@ import 'package:flutter/services.dart'; import 'package:hive/hive.dart'; import 'package:cake_wallet/di.dart'; import 'package:path_provider/path_provider.dart'; +import 'package:permission_handler/permission_handler.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; @@ -44,7 +45,7 @@ final rootKey = GlobalKey(); Future main() async { try { WidgetsFlutterBinding.ensureInitialized(); - + await Permission.camera.request(); final appDir = await getApplicationDocumentsDirectory(); await Hive.close(); Hive.init(appDir.path); diff --git a/lib/src/screens/buy/buy_webview_page.dart b/lib/src/screens/buy/buy_webview_page.dart index 7c0ca903f..3c6089c19 100644 --- a/lib/src/screens/buy/buy_webview_page.dart +++ b/lib/src/screens/buy/buy_webview_page.dart @@ -9,11 +9,10 @@ import 'package:cake_wallet/src/screens/base_page.dart'; import 'package:cake_wallet/store/dashboard/orders_store.dart'; import 'package:cake_wallet/view_model/buy/buy_view_model.dart'; import 'package:flutter/material.dart'; -import 'package:webview_flutter/webview_flutter.dart'; +import 'package:flutter_inappwebview/flutter_inappwebview.dart'; class BuyWebViewPage extends BasePage { - BuyWebViewPage({required this.buyViewModel, - required this.ordersStore, required this.url}); + BuyWebViewPage({required this.buyViewModel, required this.ordersStore, required this.url}); final OrdersStore ordersStore; final String url; @@ -46,12 +45,12 @@ class BuyWebViewPageBody extends StatefulWidget { class BuyWebViewPageBodyState extends State { BuyWebViewPageBodyState() - : _webViewkey = GlobalKey(), - _isSaving = false, - orderId = ''; + : _webViewkey = GlobalKey(), + _isSaving = false, + orderId = ''; String orderId; - WebViewController? _webViewController; + InAppWebViewController? _webViewController; GlobalKey _webViewkey; Timer? _timer; bool _isSaving; @@ -63,8 +62,6 @@ class BuyWebViewPageBodyState extends State { _isSaving = false; widget.ordersStore.orderId = ''; - if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView(); - if (widget.buyViewModel.selectedProvider is WyreBuyProvider) { _saveOrder(keyword: 'completed', splitSymbol: '/'); } @@ -76,31 +73,29 @@ class BuyWebViewPageBodyState extends State { @override Widget build(BuildContext context) { - return WebView( + return InAppWebView( key: _webViewkey, - initialUrl: widget.url, - javascriptMode: JavascriptMode.unrestricted, - onWebViewCreated: (WebViewController controller) => + initialUrlRequest: URLRequest(url: Uri.tryParse(widget.url ?? '')), + onWebViewCreated: (InAppWebViewController controller) => setState(() => _webViewController = controller)); } void _saveOrder({required String keyword, required String splitSymbol}) { _timer?.cancel(); _timer = Timer.periodic(Duration(seconds: 1), (timer) async { - try { if (_webViewController == null || _isSaving) { return; } - final url = await _webViewController!.currentUrl(); - + final url = await _webViewController!.getUrl(); + final urlString = url.toString(); if (url == null) { throw Exception('_saveOrder: Url is null'); } - if (url!.contains(keyword)) { - final urlParts = url!.split(splitSymbol); + if (urlString.toString().contains(keyword)) { + final urlParts = urlString.split(splitSymbol); orderId = urlParts.last; widget.ordersStore.orderId = orderId; diff --git a/pubspec_base.yaml b/pubspec_base.yaml index 00e1a39b1..8c9b75379 100644 --- a/pubspec_base.yaml +++ b/pubspec_base.yaml @@ -38,7 +38,7 @@ dependencies: auto_size_text: ^3.0.0 dotted_border: ^2.0.0+2 smooth_page_indicator: ^1.0.0+2 - webview_flutter: ^3.0.4 + flutter_inappwebview: ^5.7.2+3 flutter_spinkit: ^5.1.0 uni_links: ^0.5.1 lottie: ^1.3.0 From d21c879db147b1614061d29fd9251e2e3e6c5448 Mon Sep 17 00:00:00 2001 From: OmarHatem Date: Thu, 5 Jan 2023 15:54:48 +0200 Subject: [PATCH 08/43] Update Ubuntu version --- .github/workflows/pr_test_build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr_test_build.yml b/.github/workflows/pr_test_build.yml index 00fd16199..ac2ba7ebd 100644 --- a/.github/workflows/pr_test_build.yml +++ b/.github/workflows/pr_test_build.yml @@ -7,7 +7,7 @@ on: jobs: test: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 From d8f29a4ac39a175923fc66cee5f723e54ea0ce5d Mon Sep 17 00:00:00 2001 From: OmarHatem Date: Thu, 5 Jan 2023 16:10:38 +0200 Subject: [PATCH 09/43] Force build externals to check compatibility with ubuntu version --- .github/workflows/pr_test_build.yml | 38 +++++++++++++++-------------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/.github/workflows/pr_test_build.yml b/.github/workflows/pr_test_build.yml index ac2ba7ebd..b6c08fc38 100644 --- a/.github/workflows/pr_test_build.yml +++ b/.github/workflows/pr_test_build.yml @@ -34,27 +34,29 @@ jobs: ./install_ndk.sh source ./app_env.sh cakewallet ./app_config.sh - - - name: Cache Externals - id: cache-externals - uses: actions/cache@v3 - with: - path: | - /opt/android/cake_wallet/cw_haven/android/.cxx - /opt/android/cake_wallet/cw_haven/ios/External - /opt/android/cake_wallet/cw_monero/android/.cxx - /opt/android/cake_wallet/cw_monero/ios/External - /opt/android/cake_wallet/cw_shared_external/ios/External - key: ${{ hashFiles('**/build_monero.sh', '**/build_haven.sh') }} - - - if: ${{ steps.cache-externals.outputs.cache-hit != 'true' }} - name: Generate Externals - run: | - cd /opt/android/cake_wallet/scripts/android/ - source ./app_env.sh cakewallet ./build_all.sh ./copy_monero_deps.sh +# - name: Cache Externals +# id: cache-externals +# uses: actions/cache@v3 +# with: +# path: | +# /opt/android/cake_wallet/cw_haven/android/.cxx +# /opt/android/cake_wallet/cw_haven/ios/External +# /opt/android/cake_wallet/cw_monero/android/.cxx +# /opt/android/cake_wallet/cw_monero/ios/External +# /opt/android/cake_wallet/cw_shared_external/ios/External +# key: ${{ hashFiles('**/build_monero.sh', '**/build_haven.sh') }} +# +# - if: ${{ steps.cache-externals.outputs.cache-hit != 'true' }} +# name: Generate Externals +# run: | +# cd /opt/android/cake_wallet/scripts/android/ +# source ./app_env.sh cakewallet +# ./build_all.sh +# ./copy_monero_deps.sh + - name: Install Flutter dependencies run: | cd /opt/android/cake_wallet From 5881b553367a68d34a175c410487c00c636dec52 Mon Sep 17 00:00:00 2001 From: OmarHatem Date: Thu, 5 Jan 2023 18:02:59 +0200 Subject: [PATCH 10/43] Re-add caching after ensuring everything is working with the new Ubuntu version --- .github/workflows/pr_test_build.yml | 38 ++++++++++++++--------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/.github/workflows/pr_test_build.yml b/.github/workflows/pr_test_build.yml index b6c08fc38..ac2ba7ebd 100644 --- a/.github/workflows/pr_test_build.yml +++ b/.github/workflows/pr_test_build.yml @@ -34,29 +34,27 @@ jobs: ./install_ndk.sh source ./app_env.sh cakewallet ./app_config.sh + + - name: Cache Externals + id: cache-externals + uses: actions/cache@v3 + with: + path: | + /opt/android/cake_wallet/cw_haven/android/.cxx + /opt/android/cake_wallet/cw_haven/ios/External + /opt/android/cake_wallet/cw_monero/android/.cxx + /opt/android/cake_wallet/cw_monero/ios/External + /opt/android/cake_wallet/cw_shared_external/ios/External + key: ${{ hashFiles('**/build_monero.sh', '**/build_haven.sh') }} + + - if: ${{ steps.cache-externals.outputs.cache-hit != 'true' }} + name: Generate Externals + run: | + cd /opt/android/cake_wallet/scripts/android/ + source ./app_env.sh cakewallet ./build_all.sh ./copy_monero_deps.sh -# - name: Cache Externals -# id: cache-externals -# uses: actions/cache@v3 -# with: -# path: | -# /opt/android/cake_wallet/cw_haven/android/.cxx -# /opt/android/cake_wallet/cw_haven/ios/External -# /opt/android/cake_wallet/cw_monero/android/.cxx -# /opt/android/cake_wallet/cw_monero/ios/External -# /opt/android/cake_wallet/cw_shared_external/ios/External -# key: ${{ hashFiles('**/build_monero.sh', '**/build_haven.sh') }} -# -# - if: ${{ steps.cache-externals.outputs.cache-hit != 'true' }} -# name: Generate Externals -# run: | -# cd /opt/android/cake_wallet/scripts/android/ -# source ./app_env.sh cakewallet -# ./build_all.sh -# ./copy_monero_deps.sh - - name: Install Flutter dependencies run: | cd /opt/android/cake_wallet From 3dbf5d8b8cb49bd47c755c523fcfe251bb54f80b Mon Sep 17 00:00:00 2001 From: Godwin Asuquo Date: Fri, 6 Jan 2023 08:08:36 +0100 Subject: [PATCH 11/43] update onramperpage webview --- lib/src/screens/buy/buy_webview_page.dart | 3 +++ lib/src/screens/buy/onramper_page.dart | 20 +++++++++----------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/lib/src/screens/buy/buy_webview_page.dart b/lib/src/screens/buy/buy_webview_page.dart index 3c6089c19..c51aaee83 100644 --- a/lib/src/screens/buy/buy_webview_page.dart +++ b/lib/src/screens/buy/buy_webview_page.dart @@ -75,6 +75,9 @@ class BuyWebViewPageBodyState extends State { Widget build(BuildContext context) { return InAppWebView( key: _webViewkey, + initialOptions: InAppWebViewGroupOptions( + crossPlatform: InAppWebViewOptions(transparentBackground: true), + ), initialUrlRequest: URLRequest(url: Uri.tryParse(widget.url ?? '')), onWebViewCreated: (InAppWebViewController controller) => setState(() => _webViewController = controller)); diff --git a/lib/src/screens/buy/onramper_page.dart b/lib/src/screens/buy/onramper_page.dart index b766fd388..1eb052f74 100644 --- a/lib/src/screens/buy/onramper_page.dart +++ b/lib/src/screens/buy/onramper_page.dart @@ -4,8 +4,8 @@ import 'package:cake_wallet/src/screens/base_page.dart'; import 'package:cake_wallet/store/settings_store.dart'; import 'package:cw_core/wallet_base.dart'; import 'package:flutter/material.dart'; -import 'package:webview_flutter/webview_flutter.dart'; import 'package:cake_wallet/.secrets.g.dart' as secrets; +import 'package:flutter_inappwebview/flutter_inappwebview.dart'; class OnRamperPage extends BasePage { OnRamperPage({ @@ -70,17 +70,15 @@ class OnRamperPageBody extends StatefulWidget { class OnRamperPageBodyState extends State { OnRamperPageBodyState(); - @override - void initState() { - super.initState(); - if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView(); - } - @override Widget build(BuildContext context) { - return WebView( - initialUrl: widget.uri.toString(), - backgroundColor: widget.backgroundColor, - javascriptMode: JavascriptMode.unrestricted); + return InAppWebView( + initialOptions: InAppWebViewGroupOptions( + crossPlatform: InAppWebViewOptions(transparentBackground: true), + ), + initialUrlRequest: URLRequest(url: Uri.tryParse(widget.uri.toString(), + ), + ) + ); } } From e904c0a7b751cee11031dd953ddf035df2d7f872 Mon Sep 17 00:00:00 2001 From: OmarHatem Date: Fri, 6 Jan 2023 19:42:37 +0200 Subject: [PATCH 12/43] Show popup on un-caught exceptions to send errors via email --- lib/main.dart | 65 ++++++++++++++--------- lib/src/screens/failure_page.dart | 87 ------------------------------- pubspec_base.yaml | 2 +- 3 files changed, 40 insertions(+), 114 deletions(-) delete mode 100644 lib/src/screens/failure_page.dart diff --git a/lib/main.dart b/lib/main.dart index d9f35805a..8e565e763 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -9,7 +9,6 @@ import 'package:cake_wallet/buy/order.dart'; import 'package:cake_wallet/entities/preferences_key.dart'; import 'package:cake_wallet/ionia/ionia_category.dart'; import 'package:cake_wallet/ionia/ionia_merchant.dart'; -import 'package:cake_wallet/src/screens/failure_page.dart'; import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart'; import 'package:cake_wallet/store/yat/yat_store.dart'; import 'package:cake_wallet/themes/theme_list.dart'; @@ -17,6 +16,7 @@ import 'package:cake_wallet/utils/show_pop_up.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_mailer/flutter_mailer.dart'; import 'package:hive/hive.dart'; import 'package:cake_wallet/di.dart'; import 'package:path_provider/path_provider.dart'; @@ -57,31 +57,14 @@ Future main() async { WidgetsFlutterBinding.ensureInitialized(); FlutterError.onError = (errorDetails) { - print("@@@@@@@@@@@@@@@@@ in on error"); - print(errorDetails.exception.toString()); _onError(errorDetails); - _saveException(errorDetails.exception.toString(), errorDetails.stack); - }; - - ErrorWidget.builder = (errorDetails) { - print("@@@@@@@@@@@@@@@@@ in widget error"); - // TODO: uncomment - // if (kDebugMode) { - // return ErrorWidget(errorDetails.exception); - // } - - return FailurePage( - error: errorDetails.exception.toString(), - stackTrace: errorDetails.stack, - ); }; /// A callback that is invoked when an unhandled error occurs in the root /// isolate. PlatformDispatcher.instance.onError = (error, stack) { - print("@@@@@@@@@@@@@@@"); - print("PlatformDispatcher.instance.onError"); - _saveException(error.toString(), stack); + _onError(FlutterErrorDetails(exception: error, stack: stack)); + return true; }; @@ -187,12 +170,42 @@ void _saveException(String? error, StackTrace? stackTrace) async { } }; - await file.writeAsString(jsonEncode(exception), mode: FileMode.append); + String separator = "\n\n==========================================================" + + "\n==========================================================\n\n"; + + await file.writeAsString( + jsonEncode(exception) + separator, + mode: FileMode.append, + ); } -void _onError(FlutterErrorDetails details) { - print("#############"); - print(details.exception.toString()); +void _sendExceptionFile() async { + final appDocDir = await getApplicationDocumentsDirectory(); + + final file = File('${appDocDir.path}/error.txt'); + + print(file.readAsStringSync()); + + final MailOptions mailOptions = MailOptions( + subject: 'Mobile App Issue', + recipients: ['support@cakewallet.com'], + attachments: [file.path], + ); + + final result = await FlutterMailer.send(mailOptions); + + // clear file content if the error was sent or saved + // on android we can't know if it was sent or saved + if (result.name == MailerResponse.sent.name || + result.name == MailerResponse.saved.name || + result.name == MailerResponse.android.name) { + file.writeAsString("", mode: FileMode.write); + } +} + +void _onError(FlutterErrorDetails errorDetails) { + _saveException(errorDetails.exception.toString(), errorDetails.stack); + WidgetsBinding.instance.addPostFrameCallback( (timeStamp) { showPopUp( @@ -204,12 +217,12 @@ void _onError(FlutterErrorDetails details) { alertContent: "Oops, we got some error.\n\nPlease send crash report to our support team to make the application better.", rightButtonText: S.of(context).send, leftButtonText: "Don't send", - actionRightButton: () async { + actionRightButton: () { Navigator.of(context).pop(); + _sendExceptionFile(); }, actionLeftButton: () { Navigator.of(context).pop(); - _saveException(details.exception.toString(), details.stack); }, ); }, diff --git a/lib/src/screens/failure_page.dart b/lib/src/screens/failure_page.dart deleted file mode 100644 index ea3d75fcb..000000000 --- a/lib/src/screens/failure_page.dart +++ /dev/null @@ -1,87 +0,0 @@ -import 'dart:io'; - -import 'package:cake_wallet/generated/i18n.dart'; -import 'package:cake_wallet/src/widgets/primary_button.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_mailer/flutter_mailer.dart'; -import 'package:path_provider/path_provider.dart'; - -class FailurePage extends StatelessWidget { - final String? error; - final StackTrace? stackTrace; - - FailurePage({Key? key, this.error, this.stackTrace}); - - @override - Widget build(BuildContext context) { - final theme = Theme.of(context); - return Scaffold( - backgroundColor: Colors.grey.shade400, - body: Center( - child: Padding( - padding: EdgeInsets.symmetric( - horizontal: MediaQuery.of(context).size.width * 0.2), - child: Column( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Icon( - Icons.warning, - color: theme.errorColor, - size: 50, - ), - Padding( - padding: const EdgeInsets.symmetric(vertical: 20), - child: Text( - "Oops, we got some error.", - style: theme.textTheme.headline1?.copyWith(fontSize: 20), - ), - ), - Text( - "Please send crash report to our support team to make the application better.", - textAlign: TextAlign.center, - style: theme.textTheme.headline1?.copyWith(fontSize: 16), - ), - Padding( - padding: const EdgeInsets.symmetric(vertical: 20), - child: PrimaryButton( - onPressed: _sendExceptionFile, - text: S.of(context).send, - textColor: Colors.white, - color: theme.accentTextTheme.bodyText1!.color!, - ), - ), - PrimaryButton( - onPressed: () { - }, - text: "Don't Send", - color: Theme.of(context).accentTextTheme.caption!.color!, - textColor: - Theme.of(context).primaryTextTheme.headline6!.color!, - ), - ], - ), - ), - ), - ); - } - - void _sendExceptionFile() async { - final appDocDir = await getApplicationDocumentsDirectory(); - - final file = File('${appDocDir.path}/error.txt'); - - print(file.readAsStringSync()); - - final MailOptions mailOptions = MailOptions( - subject: 'Mobile App Issue', - recipients: ['support@cakewallet.com'], - attachments: [file.path], - ); - - await FlutterMailer.send(mailOptions); - - // clear file content - // file.writeAsString("", mode: FileMode.write); - } -} diff --git a/pubspec_base.yaml b/pubspec_base.yaml index 7981c6690..59ce2867d 100644 --- a/pubspec_base.yaml +++ b/pubspec_base.yaml @@ -61,7 +61,7 @@ dependencies: permission_handler: ^10.0.0 device_display_brightness: ^0.0.6 platform_device_id: ^1.0.1 - flutter_mailer: ^2.0.1 + flutter_mailer: ^2.0.2 cake_backup: git: url: https://github.com/cake-tech/cake_backup.git From a373253fd294320847bd3ef9805564ebd44e92bc Mon Sep 17 00:00:00 2001 From: OmarHatem Date: Mon, 9 Jan 2023 18:16:50 +0200 Subject: [PATCH 13/43] Add localizations for error dialog content --- lib/main.dart | 9 ++++----- res/values/strings_de.arb | 4 +++- res/values/strings_en.arb | 4 +++- res/values/strings_es.arb | 4 +++- res/values/strings_fr.arb | 4 +++- res/values/strings_hi.arb | 4 +++- res/values/strings_hr.arb | 4 +++- res/values/strings_it.arb | 4 +++- res/values/strings_ja.arb | 4 +++- res/values/strings_ko.arb | 4 +++- res/values/strings_nl.arb | 4 +++- res/values/strings_pl.arb | 4 +++- res/values/strings_pt.arb | 4 +++- res/values/strings_ru.arb | 4 +++- res/values/strings_th.arb | 4 +++- res/values/strings_uk.arb | 4 +++- res/values/strings_zh.arb | 4 +++- 17 files changed, 52 insertions(+), 21 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 8e565e763..a6594a097 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -154,7 +154,6 @@ Future main() async { initialMigrationVersion: 19); runApp(App()); }, (error, stackTrace) async { - print("@@@@@@@@@@@@@@@@ in run zone guard"); _onError(FlutterErrorDetails(exception: error, stack: stackTrace)); }); } @@ -165,8 +164,8 @@ void _saveException(String? error, StackTrace? stackTrace) async { final file = File('${appDocDir.path}/error.txt'); final exception = { "${DateTime.now()}": { - "error": error, - "stackTrace": stackTrace.toString(), + "Error": error, + "StackTrace": stackTrace.toString(), } }; @@ -214,9 +213,9 @@ void _onError(FlutterErrorDetails errorDetails) { return AlertWithTwoActions( isDividerExist: true, alertTitle: S.of(context).error, - alertContent: "Oops, we got some error.\n\nPlease send crash report to our support team to make the application better.", + alertContent: S.of(context).error_dialog_content, rightButtonText: S.of(context).send, - leftButtonText: "Don't send", + leftButtonText: S.of(context).do_not_send, actionRightButton: () { Navigator.of(context).pop(); _sendExceptionFile(); diff --git a/res/values/strings_de.arb b/res/values/strings_de.arb index 9ba0a7553..65057fce2 100644 --- a/res/values/strings_de.arb +++ b/res/values/strings_de.arb @@ -679,5 +679,7 @@ "tor_only": "Nur Tor", "unmatched_currencies": "Die Währung Ihres aktuellen Wallets stimmt nicht mit der des gescannten QR überein", "contact_list_contacts": "Kontakte", - "contact_list_wallets": "Meine Geldbörsen" + "contact_list_wallets": "Meine Geldbörsen", + "do_not_send": "Nicht senden", + "error_dialog_content": "Hoppla, wir haben einen Fehler.\n\nBitte senden Sie einen Absturzbericht an unser Support-Team, um die Anwendung zu verbessern." } diff --git a/res/values/strings_en.arb b/res/values/strings_en.arb index e9a0c4d49..1be48ce47 100644 --- a/res/values/strings_en.arb +++ b/res/values/strings_en.arb @@ -679,5 +679,7 @@ "tor_only": "Tor only", "unmatched_currencies": "Your current wallet's currency does not match that of the scanned QR", "contact_list_contacts": "Contacts", - "contact_list_wallets": "My Wallets" + "contact_list_wallets": "My Wallets", + "do_not_send": "Don't send", + "error_dialog_content": "Oops, we got some error.\n\nPlease send crash report to our support team to make the application better." } diff --git a/res/values/strings_es.arb b/res/values/strings_es.arb index 10c866676..a5ed4fe9e 100644 --- a/res/values/strings_es.arb +++ b/res/values/strings_es.arb @@ -679,5 +679,7 @@ "tor_only": "solo Tor", "unmatched_currencies": "La moneda de su billetera actual no coincide con la del QR escaneado", "contact_list_contacts": "Contactos", - "contact_list_wallets": "Mis billeteras" + "contact_list_wallets": "Mis billeteras", + "do_not_send": "no enviar", + "error_dialog_content": "Vaya, tenemos un error.\n\nEnvíe un informe de fallas a nuestro equipo de soporte para mejorar la aplicación." } diff --git a/res/values/strings_fr.arb b/res/values/strings_fr.arb index 99fbcd282..1d8eed7eb 100644 --- a/res/values/strings_fr.arb +++ b/res/values/strings_fr.arb @@ -677,5 +677,7 @@ "tor_only": "Tor uniquement", "unmatched_currencies": "La devise de votre portefeuille (wallet) actuel ne correspond pas à celle du QR code scanné", "contact_list_contacts": "Contacts", - "contact_list_wallets": "Mes portefeuilles (wallets)" + "contact_list_wallets": "Mes portefeuilles (wallets)", + "do_not_send": "N'envoyez pas", + "error_dialog_content": "Oups, nous avons eu une erreur.\n\nVeuillez envoyer un rapport de plantage à notre équipe d'assistance pour améliorer l'application." } diff --git a/res/values/strings_hi.arb b/res/values/strings_hi.arb index a5c27ddb4..df324f40b 100644 --- a/res/values/strings_hi.arb +++ b/res/values/strings_hi.arb @@ -679,5 +679,7 @@ "tor_only": "Tor केवल", "unmatched_currencies": "आपके वर्तमान वॉलेट की मुद्रा स्कैन किए गए क्यूआर से मेल नहीं खाती" , "contact_list_contacts": "संपर्क", - "contact_list_wallets": "मेरा बटुआ" + "contact_list_wallets": "मेरा बटुआ", + "do_not_send": "मत भेजो", + "error_dialog_content": "ओह, हमसे कुछ गड़बड़ी हुई है.\n\nएप्लिकेशन को बेहतर बनाने के लिए कृपया हमारी सहायता टीम को क्रैश रिपोर्ट भेजें।" } diff --git a/res/values/strings_hr.arb b/res/values/strings_hr.arb index 9aa9f0b4f..97c39195c 100644 --- a/res/values/strings_hr.arb +++ b/res/values/strings_hr.arb @@ -679,5 +679,7 @@ "tor_only": "Samo Tor", "unmatched_currencies": "Valuta vašeg trenutnog novčanika ne odgovara onoj na skeniranom QR-u", "contact_list_contacts": "Kontakti", - "contact_list_wallets": "Moji novčanici" + "contact_list_wallets": "Moji novčanici", + "do_not_send": "Ne šalji", + "error_dialog_content": "Ups, imamo grešku.\n\nPošaljite izvješće o padu našem timu za podršku kako bismo poboljšali aplikaciju." } diff --git a/res/values/strings_it.arb b/res/values/strings_it.arb index e90fc20c2..59cbf5909 100644 --- a/res/values/strings_it.arb +++ b/res/values/strings_it.arb @@ -679,5 +679,7 @@ "tor_only": "Solo Tor", "unmatched_currencies": "La valuta del tuo portafoglio attuale non corrisponde a quella del QR scansionato", "contact_list_contacts": "Contatti", - "contact_list_wallets": "I miei portafogli" + "contact_list_wallets": "I miei portafogli", + "do_not_send": "Non inviare", + "error_dialog_content": "Spiacenti, abbiamo riscontrato un errore.\n\nSi prega di inviare un rapporto sugli arresti anomali al nostro team di supporto per migliorare l'applicazione." } diff --git a/res/values/strings_ja.arb b/res/values/strings_ja.arb index 3c5a5d951..86d2bbaef 100644 --- a/res/values/strings_ja.arb +++ b/res/values/strings_ja.arb @@ -679,5 +679,7 @@ "tor_only": "Torのみ", "unmatched_currencies": "現在のウォレットの通貨がスキャンされたQRの通貨と一致しません", "contact_list_contacts": "連絡先", - "contact_list_wallets": "マイウォレット" + "contact_list_wallets": "マイウォレット", + "do_not_send": "送信しない", + "error_dialog_content": "エラーが発生しました。\n\nアプリケーションを改善するために、クラッシュ レポートをサポート チームに送信してください。" } diff --git a/res/values/strings_ko.arb b/res/values/strings_ko.arb index 216a3a143..847321465 100644 --- a/res/values/strings_ko.arb +++ b/res/values/strings_ko.arb @@ -679,5 +679,7 @@ "tor_only": "Tor 뿐", "unmatched_currencies": "현재 지갑의 통화가 스캔한 QR의 통화와 일치하지 않습니다.", "contact_list_contacts": "콘택트 렌즈", - "contact_list_wallets": "내 지갑" + "contact_list_wallets": "내 지갑", + "do_not_send": "보내지 마세요", + "error_dialog_content": "죄송합니다. 오류가 발생했습니다.\n\n응용 프로그램을 개선하려면 지원 팀에 충돌 보고서를 보내주십시오." } diff --git a/res/values/strings_nl.arb b/res/values/strings_nl.arb index 9ac0cd1d1..d3bca52b6 100644 --- a/res/values/strings_nl.arb +++ b/res/values/strings_nl.arb @@ -679,5 +679,7 @@ "tor_only": "Alleen Tor", "unmatched_currencies": "De valuta van uw huidige portemonnee komt niet overeen met die van de gescande QR", "contact_list_contacts": "Contacten", - "contact_list_wallets": "Mijn portefeuilles" + "contact_list_wallets": "Mijn portefeuilles", + "do_not_send": "Niet sturen", + "error_dialog_content": "Oeps, er is een fout opgetreden.\n\nStuur een crashrapport naar ons ondersteuningsteam om de applicatie te verbeteren." } diff --git a/res/values/strings_pl.arb b/res/values/strings_pl.arb index 11bf637e5..4d93b8ee8 100644 --- a/res/values/strings_pl.arb +++ b/res/values/strings_pl.arb @@ -679,5 +679,7 @@ "tor_only": "Tylko Tor", "unmatched_currencies": "Waluta Twojego obecnego portfela nie odpowiada walucie zeskanowanego kodu QR", "contact_list_contacts": "Łączność", - "contact_list_wallets": "Moje portfele" + "contact_list_wallets": "Moje portfele", + "do_not_send": "Nie wysyłaj", + "error_dialog_content": "Ups, wystąpił błąd.\n\nPrześlij raport o awarii do naszego zespołu wsparcia, aby ulepszyć aplikację." } diff --git a/res/values/strings_pt.arb b/res/values/strings_pt.arb index 8529aadb8..acdb861af 100644 --- a/res/values/strings_pt.arb +++ b/res/values/strings_pt.arb @@ -678,5 +678,7 @@ "tor_only": "Tor apenas", "unmatched_currencies": "A moeda da sua carteira atual não corresponde à do QR digitalizado", "contact_list_contacts": "Contatos", - "contact_list_wallets": "minhas carteiras" + "contact_list_wallets": "minhas carteiras", + "do_not_send": "não envie", + "error_dialog_content": "Ops, houve algum erro.\n\nEnvie um relatório de falha para nossa equipe de suporte para melhorar o aplicativo." } diff --git a/res/values/strings_ru.arb b/res/values/strings_ru.arb index 1ba5fd85c..dadcc67e4 100644 --- a/res/values/strings_ru.arb +++ b/res/values/strings_ru.arb @@ -679,5 +679,7 @@ "tor_only": "Только Tor", "unmatched_currencies": "Валюта вашего текущего кошелька не соответствует валюте отсканированного QR-кода.", "contact_list_contacts": "Контакты", - "contact_list_wallets": "Мои кошельки" + "contact_list_wallets": "Мои кошельки", + "do_not_send": "Не отправлять", + "error_dialog_content": "Ой, у нас какая-то ошибка.\n\nПожалуйста, отправьте отчет о сбое в нашу службу поддержки, чтобы сделать приложение лучше." } diff --git a/res/values/strings_th.arb b/res/values/strings_th.arb index 242a8d110..60a09b747 100644 --- a/res/values/strings_th.arb +++ b/res/values/strings_th.arb @@ -677,5 +677,7 @@ "tor_only" : "Tor เท่านั้น", "unmatched_currencies" : "สกุลเงินของกระเป๋าปัจจุบันของคุณไม่ตรงกับของ QR ที่สแกน", "contact_list_contacts": "ติดต่อ", - "contact_list_wallets": "กระเป๋าเงินของฉัน" + "contact_list_wallets": "กระเป๋าเงินของฉัน", + "do_not_send": "อย่าส่ง", + "error_dialog_content": "อ๊ะ เราพบข้อผิดพลาดบางอย่าง\n\nโปรดส่งรายงานข้อขัดข้องไปยังทีมสนับสนุนของเราเพื่อปรับปรุงแอปพลิเคชันให้ดียิ่งขึ้น" } diff --git a/res/values/strings_uk.arb b/res/values/strings_uk.arb index 4fad9a19d..284b59c29 100644 --- a/res/values/strings_uk.arb +++ b/res/values/strings_uk.arb @@ -678,5 +678,7 @@ "tor_only": "Тільки Tor", "unmatched_currencies": "Валюта вашого гаманця не збігається з валютою сканованого QR-коду", "contact_list_contacts": "Контакти", - "contact_list_wallets": "Мої гаманці" + "contact_list_wallets": "Мої гаманці", + "do_not_send": "Не надсилайте", + "error_dialog_content": "На жаль, ми отримали помилку.\n\nБудь ласка, надішліть звіт про збій нашій команді підтримки, щоб покращити додаток." } diff --git a/res/values/strings_zh.arb b/res/values/strings_zh.arb index 7c0f4ab74..d04831cc2 100644 --- a/res/values/strings_zh.arb +++ b/res/values/strings_zh.arb @@ -677,5 +677,7 @@ "tor_only": "仅限 Tor", "unmatched_currencies": "您当前钱包的货币与扫描的 QR 的货币不匹配", "contact_list_contacts": "联系人", - "contact_list_wallets": "我的钱包" + "contact_list_wallets": "我的钱包", + "do_not_send": "不要发送", + "error_dialog_content": "糟糕,我们遇到了一些错误。\n\n请将崩溃报告发送给我们的支持团队,以改进应用程序。" } From 8d68ccfc7b0a3a7491d3665da798c9b41c21e4a9 Mon Sep 17 00:00:00 2001 From: OmarHatem Date: Mon, 9 Jan 2023 20:03:26 +0200 Subject: [PATCH 14/43] Ignore UI issues from exceptions report --- lib/main.dart | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index a6594a097..126bd213f 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -57,7 +57,10 @@ Future main() async { WidgetsFlutterBinding.ensureInitialized(); FlutterError.onError = (errorDetails) { - _onError(errorDetails); + // if not a UI error + if (errorDetails.library != "widgets library") { + _onError(errorDetails); + } }; /// A callback that is invoked when an unhandled error occurs in the root @@ -193,8 +196,8 @@ void _sendExceptionFile() async { final result = await FlutterMailer.send(mailOptions); - // clear file content if the error was sent or saved - // on android we can't know if it was sent or saved + // Clear file content if the error was sent or saved. + // On android we can't know if it was sent or saved if (result.name == MailerResponse.sent.name || result.name == MailerResponse.saved.name || result.name == MailerResponse.android.name) { From e4af355b2493dc3aaba6246f7bad54d58cbab877 Mon Sep 17 00:00:00 2001 From: OmarHatem Date: Mon, 9 Jan 2023 20:31:24 +0200 Subject: [PATCH 15/43] Fix Translation typo [skip ci] --- README.md | 1 + res/values/strings_de.arb | 2 +- res/values/strings_en.arb | 2 +- res/values/strings_es.arb | 2 +- res/values/strings_fr.arb | 2 +- res/values/strings_hi.arb | 2 +- res/values/strings_it.arb | 2 +- res/values/strings_ja.arb | 2 +- res/values/strings_nl.arb | 2 +- res/values/strings_pt.arb | 2 +- 10 files changed, 10 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index f485ca244..e4d057e94 100644 --- a/README.md +++ b/README.md @@ -100,6 +100,7 @@ Edit the applicable `strings_XX.arb` file in `res/values/` and open a pull reque - Japanese - Chinese - Korean +- Thai ## Add a new language diff --git a/res/values/strings_de.arb b/res/values/strings_de.arb index 65057fce2..a8a4f8086 100644 --- a/res/values/strings_de.arb +++ b/res/values/strings_de.arb @@ -681,5 +681,5 @@ "contact_list_contacts": "Kontakte", "contact_list_wallets": "Meine Geldbörsen", "do_not_send": "Nicht senden", - "error_dialog_content": "Hoppla, wir haben einen Fehler.\n\nBitte senden Sie einen Absturzbericht an unser Support-Team, um die Anwendung zu verbessern." + "error_dialog_content": "Hoppla, wir haben einen Fehler.\n\nBitte senden Sie den Absturzbericht an unser Support-Team, um die Anwendung zu verbessern." } diff --git a/res/values/strings_en.arb b/res/values/strings_en.arb index 1be48ce47..07937b0e7 100644 --- a/res/values/strings_en.arb +++ b/res/values/strings_en.arb @@ -681,5 +681,5 @@ "contact_list_contacts": "Contacts", "contact_list_wallets": "My Wallets", "do_not_send": "Don't send", - "error_dialog_content": "Oops, we got some error.\n\nPlease send crash report to our support team to make the application better." + "error_dialog_content": "Oops, we got some error.\n\nPlease send the crash report to our support team to make the application better." } diff --git a/res/values/strings_es.arb b/res/values/strings_es.arb index a5ed4fe9e..b69978d6f 100644 --- a/res/values/strings_es.arb +++ b/res/values/strings_es.arb @@ -681,5 +681,5 @@ "contact_list_contacts": "Contactos", "contact_list_wallets": "Mis billeteras", "do_not_send": "no enviar", - "error_dialog_content": "Vaya, tenemos un error.\n\nEnvíe un informe de fallas a nuestro equipo de soporte para mejorar la aplicación." + "error_dialog_content": "Vaya, tenemos un error.\n\nEnvíe el informe de bloqueo a nuestro equipo de soporte para mejorar la aplicación." } diff --git a/res/values/strings_fr.arb b/res/values/strings_fr.arb index 1d8eed7eb..df8f1e48d 100644 --- a/res/values/strings_fr.arb +++ b/res/values/strings_fr.arb @@ -679,5 +679,5 @@ "contact_list_contacts": "Contacts", "contact_list_wallets": "Mes portefeuilles (wallets)", "do_not_send": "N'envoyez pas", - "error_dialog_content": "Oups, nous avons eu une erreur.\n\nVeuillez envoyer un rapport de plantage à notre équipe d'assistance pour améliorer l'application." + "error_dialog_content": "Oups, nous avons eu une erreur.\n\nVeuillez envoyer le rapport de plantage à notre équipe d'assistance pour améliorer l'application." } diff --git a/res/values/strings_hi.arb b/res/values/strings_hi.arb index df324f40b..40df82dc0 100644 --- a/res/values/strings_hi.arb +++ b/res/values/strings_hi.arb @@ -681,5 +681,5 @@ "contact_list_contacts": "संपर्क", "contact_list_wallets": "मेरा बटुआ", "do_not_send": "मत भेजो", - "error_dialog_content": "ओह, हमसे कुछ गड़बड़ी हुई है.\n\nएप्लिकेशन को बेहतर बनाने के लिए कृपया हमारी सहायता टीम को क्रैश रिपोर्ट भेजें।" + "error_dialog_content": "ओह, हमसे कुछ गड़बड़ी हुई है.\n\nएप्लिकेशन को बेहतर बनाने के लिए कृपया क्रैश रिपोर्ट हमारी सहायता टीम को भेजें।" } diff --git a/res/values/strings_it.arb b/res/values/strings_it.arb index 59cbf5909..d48a96baa 100644 --- a/res/values/strings_it.arb +++ b/res/values/strings_it.arb @@ -681,5 +681,5 @@ "contact_list_contacts": "Contatti", "contact_list_wallets": "I miei portafogli", "do_not_send": "Non inviare", - "error_dialog_content": "Spiacenti, abbiamo riscontrato un errore.\n\nSi prega di inviare un rapporto sugli arresti anomali al nostro team di supporto per migliorare l'applicazione." + "error_dialog_content": "Ups, imamo grešku.\n\nPošaljite izvješće o padu našem timu za podršku kako bismo poboljšali aplikaciju." } diff --git a/res/values/strings_ja.arb b/res/values/strings_ja.arb index 86d2bbaef..d928b960e 100644 --- a/res/values/strings_ja.arb +++ b/res/values/strings_ja.arb @@ -681,5 +681,5 @@ "contact_list_contacts": "連絡先", "contact_list_wallets": "マイウォレット", "do_not_send": "送信しない", - "error_dialog_content": "エラーが発生しました。\n\nアプリケーションを改善するために、クラッシュ レポートをサポート チームに送信してください。" + "error_dialog_content": "Spiacenti, abbiamo riscontrato un errore.\n\nSi prega di inviare il rapporto sull'arresto anomalo al nostro team di supporto per migliorare l'applicazione." } diff --git a/res/values/strings_nl.arb b/res/values/strings_nl.arb index d3bca52b6..eabb30216 100644 --- a/res/values/strings_nl.arb +++ b/res/values/strings_nl.arb @@ -681,5 +681,5 @@ "contact_list_contacts": "Contacten", "contact_list_wallets": "Mijn portefeuilles", "do_not_send": "Niet sturen", - "error_dialog_content": "Oeps, er is een fout opgetreden.\n\nStuur een crashrapport naar ons ondersteuningsteam om de applicatie te verbeteren." + "error_dialog_content": "Oeps, er is een fout opgetreden.\n\nStuur het crashrapport naar ons ondersteuningsteam om de applicatie te verbeteren." } diff --git a/res/values/strings_pt.arb b/res/values/strings_pt.arb index acdb861af..cd7a79b0e 100644 --- a/res/values/strings_pt.arb +++ b/res/values/strings_pt.arb @@ -680,5 +680,5 @@ "contact_list_contacts": "Contatos", "contact_list_wallets": "minhas carteiras", "do_not_send": "não envie", - "error_dialog_content": "Ops, houve algum erro.\n\nEnvie um relatório de falha para nossa equipe de suporte para melhorar o aplicativo." + "error_dialog_content": "Ops, houve algum erro.\n\nPor favor, envie o relatório de falha para nossa equipe de suporte para melhorar o aplicativo." } From f3bface5e8786bf8e5c831d16d5c01dcc06919ff Mon Sep 17 00:00:00 2001 From: Godwin Asuquo Date: Tue, 10 Jan 2023 18:01:03 +0100 Subject: [PATCH 16/43] update webview permission implementation --- ios/Podfile | 2 +- ios/Podfile.lock | 48 +++++++++++++++++--------- lib/main.dart | 2 -- lib/src/screens/buy/onramper_page.dart | 16 +++++---- 4 files changed, 41 insertions(+), 27 deletions(-) diff --git a/ios/Podfile b/ios/Podfile index b29d40484..8ced976e3 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '11.0' +platform :ios, '13.0' source 'https://github.com/CocoaPods/Specs.git' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 3a810430d..c3ebfa6e2 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -7,7 +7,7 @@ PODS: - connectivity (0.0.1): - Flutter - Reachability - - CryptoSwift (1.3.2) + - CryptoSwift (1.6.0) - cw_haven (0.0.1): - cw_haven/Boost (= 0.0.1) - cw_haven/Haven (= 0.0.1) @@ -67,14 +67,14 @@ PODS: - Flutter - devicelocale (0.0.1): - Flutter - - DKImagePickerController/Core (4.3.2): + - DKImagePickerController/Core (4.3.4): - DKImagePickerController/ImageDataManager - DKImagePickerController/Resource - - DKImagePickerController/ImageDataManager (4.3.2) - - DKImagePickerController/PhotoGallery (4.3.2): + - DKImagePickerController/ImageDataManager (4.3.4) + - DKImagePickerController/PhotoGallery (4.3.4): - DKImagePickerController/Core - DKPhotoGallery - - DKImagePickerController/Resource (4.3.2) + - DKImagePickerController/Resource (4.3.4) - DKPhotoGallery (0.0.17): - DKPhotoGallery/Core (= 0.0.17) - DKPhotoGallery/Model (= 0.0.17) @@ -102,11 +102,19 @@ PODS: - DKImagePickerController/PhotoGallery - Flutter - Flutter (1.0.0) + - flutter_inappwebview (0.0.1): + - Flutter + - flutter_inappwebview/Core (= 0.0.1) + - OrderedSet (~> 5.0) + - flutter_inappwebview/Core (0.0.1): + - Flutter + - OrderedSet (~> 5.0) - flutter_secure_storage (3.3.1): - Flutter - local_auth_ios (0.0.1): - Flutter - MTBBarcodeScanner (5.0.11) + - OrderedSet (5.0.0) - package_info (0.0.1): - Flutter - path_provider_ios (0.0.1): @@ -116,15 +124,15 @@ PODS: - platform_device_id (0.0.1): - Flutter - Reachability (3.2) - - SDWebImage (5.9.1): - - SDWebImage/Core (= 5.9.1) - - SDWebImage/Core (5.9.1) + - SDWebImage (5.14.2): + - SDWebImage/Core (= 5.14.2) + - SDWebImage/Core (5.14.2) - share_plus (0.0.1): - Flutter - shared_preferences_ios (0.0.1): - Flutter - - SwiftProtobuf (1.18.0) - - SwiftyGif (5.3.0) + - SwiftProtobuf (1.20.3) + - SwiftyGif (5.4.3) - uni_links (0.0.1): - Flutter - UnstoppableDomainsResolution (4.0.0): @@ -147,6 +155,7 @@ DEPENDENCIES: - devicelocale (from `.symlinks/plugins/devicelocale/ios`) - file_picker (from `.symlinks/plugins/file_picker/ios`) - Flutter (from `Flutter`) + - flutter_inappwebview (from `.symlinks/plugins/flutter_inappwebview/ios`) - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`) - local_auth_ios (from `.symlinks/plugins/local_auth_ios/ios`) - package_info (from `.symlinks/plugins/package_info/ios`) @@ -167,6 +176,7 @@ SPEC REPOS: - DKImagePickerController - DKPhotoGallery - MTBBarcodeScanner + - OrderedSet - Reachability - SDWebImage - SwiftProtobuf @@ -194,6 +204,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/file_picker/ios" Flutter: :path: Flutter + flutter_inappwebview: + :path: ".symlinks/plugins/flutter_inappwebview/ios" flutter_secure_storage: :path: ".symlinks/plugins/flutter_secure_storage/ios" local_auth_ios: @@ -221,35 +233,37 @@ SPEC CHECKSUMS: barcode_scan2: 0af2bb63c81b4565aab6cd78278e4c0fa136dbb0 BigInt: f668a80089607f521586bbe29513d708491ef2f7 connectivity: c4130b2985d4ef6fd26f9702e886bd5260681467 - CryptoSwift: 093499be1a94b0cae36e6c26b70870668cb56060 + CryptoSwift: 562f8eceb40e80796fffc668b0cad9313284cfa6 cw_haven: b3e54e1fbe7b8e6fda57a93206bc38f8e89b898a cw_monero: 4cf3b96f2da8e95e2ef7d6703dd4d2c509127b7d cw_shared_external: 2972d872b8917603478117c9957dfca611845a92 device_display_brightness: 1510e72c567a1f6ce6ffe393dcd9afd1426034f7 device_info: d7d233b645a32c40dfdc212de5cf646ca482f175 devicelocale: b22617f40038496deffba44747101255cee005b0 - DKImagePickerController: b5eb7f7a388e4643264105d648d01f727110fc3d + DKImagePickerController: b512c28220a2b8ac7419f21c491fc8534b7601ac DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179 file_picker: 817ab1d8cd2da9d2da412a417162deee3500fc95 Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 + flutter_inappwebview: bfd58618f49dc62f2676de690fc6dcda1d6c3721 flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec local_auth_ios: 0d333dde7780f669e66f19d2ff6005f3ea84008d MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb + OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62 path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02 permission_handler_apple: 44366e37eaf29454a1e7b1b7d736c2cceaeb17ce platform_device_id: 81b3e2993881f87d0c82ef151dc274df4869aef5 Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96 - SDWebImage: a990c053fff71e388a10f3357edb0be17929c9c5 + SDWebImage: b9a731e1d6307f44ca703b3976d18c24ca561e84 share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68 shared_preferences_ios: 548a61f8053b9b8a49ac19c1ffbc8b92c50d68ad - SwiftProtobuf: c3c12645230d9b09c72267e0de89468c5543bd86 - SwiftyGif: e466e86c660d343357ab944a819a101c4127cb40 + SwiftProtobuf: b02b5075dcf60c9f5f403000b3b0c202a11b6ae1 + SwiftyGif: 6c3eafd0ce693cad58bb63d2b2fb9bacb8552780 uni_links: d97da20c7701486ba192624d99bffaaffcfc298a UnstoppableDomainsResolution: c3c67f4d0a5e2437cb00d4bd50c2e00d6e743841 url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de webview_flutter_wkwebview: b7e70ef1ddded7e69c796c7390ee74180182971f -PODFILE CHECKSUM: ae71bdf0eb731a1ffc399c122f6aa4dea0cb5f6f +PODFILE CHECKSUM: bf84c4e13798f92b867c8ebcbd04acc127fec6be -COCOAPODS: 1.11.3 +COCOAPODS: 1.11.2 diff --git a/lib/main.dart b/lib/main.dart index f93eed545..056d7b1d7 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -11,7 +11,6 @@ import 'package:flutter/services.dart'; import 'package:hive/hive.dart'; import 'package:cake_wallet/di.dart'; import 'package:path_provider/path_provider.dart'; -import 'package:permission_handler/permission_handler.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; @@ -45,7 +44,6 @@ final rootKey = GlobalKey(); Future main() async { try { WidgetsFlutterBinding.ensureInitialized(); - await Permission.camera.request(); final appDir = await getApplicationDocumentsDirectory(); await Hive.close(); Hive.init(appDir.path); diff --git a/lib/src/screens/buy/onramper_page.dart b/lib/src/screens/buy/onramper_page.dart index 1eb052f74..72fe59eee 100644 --- a/lib/src/screens/buy/onramper_page.dart +++ b/lib/src/screens/buy/onramper_page.dart @@ -1,4 +1,3 @@ -import 'dart:io'; import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/src/screens/base_page.dart'; import 'package:cake_wallet/store/settings_store.dart'; @@ -73,12 +72,15 @@ class OnRamperPageBodyState extends State { @override Widget build(BuildContext context) { return InAppWebView( - initialOptions: InAppWebViewGroupOptions( - crossPlatform: InAppWebViewOptions(transparentBackground: true), - ), - initialUrlRequest: URLRequest(url: Uri.tryParse(widget.uri.toString(), - ), - ) + initialOptions: InAppWebViewGroupOptions( + crossPlatform: InAppWebViewOptions(transparentBackground: true), + ), + androidOnPermissionRequest: (_, __, resources) async { + return PermissionRequestResponse( + resources: resources, + action: PermissionRequestResponseAction.GRANT, + ); + }, ); } } From 6434f36f1af450b9c3d642369c41de6cacbd55e6 Mon Sep 17 00:00:00 2001 From: Godwin Asuquo Date: Tue, 10 Jan 2023 18:14:26 +0100 Subject: [PATCH 17/43] update webview permission implementation --- lib/main.dart | 2 -- lib/src/screens/buy/onramper_page.dart | 16 +++++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index f93eed545..056d7b1d7 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -11,7 +11,6 @@ import 'package:flutter/services.dart'; import 'package:hive/hive.dart'; import 'package:cake_wallet/di.dart'; import 'package:path_provider/path_provider.dart'; -import 'package:permission_handler/permission_handler.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; @@ -45,7 +44,6 @@ final rootKey = GlobalKey(); Future main() async { try { WidgetsFlutterBinding.ensureInitialized(); - await Permission.camera.request(); final appDir = await getApplicationDocumentsDirectory(); await Hive.close(); Hive.init(appDir.path); diff --git a/lib/src/screens/buy/onramper_page.dart b/lib/src/screens/buy/onramper_page.dart index 1eb052f74..72fe59eee 100644 --- a/lib/src/screens/buy/onramper_page.dart +++ b/lib/src/screens/buy/onramper_page.dart @@ -1,4 +1,3 @@ -import 'dart:io'; import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/src/screens/base_page.dart'; import 'package:cake_wallet/store/settings_store.dart'; @@ -73,12 +72,15 @@ class OnRamperPageBodyState extends State { @override Widget build(BuildContext context) { return InAppWebView( - initialOptions: InAppWebViewGroupOptions( - crossPlatform: InAppWebViewOptions(transparentBackground: true), - ), - initialUrlRequest: URLRequest(url: Uri.tryParse(widget.uri.toString(), - ), - ) + initialOptions: InAppWebViewGroupOptions( + crossPlatform: InAppWebViewOptions(transparentBackground: true), + ), + androidOnPermissionRequest: (_, __, resources) async { + return PermissionRequestResponse( + resources: resources, + action: PermissionRequestResponseAction.GRANT, + ); + }, ); } } From 92729151541b94407a01f0e3cf74fea9da85c52d Mon Sep 17 00:00:00 2001 From: Godwin Asuquo Date: Tue, 10 Jan 2023 18:17:09 +0100 Subject: [PATCH 18/43] delete pod --- ios/Podfile | 85 --------------- ios/Podfile.lock | 269 ----------------------------------------------- 2 files changed, 354 deletions(-) delete mode 100644 ios/Podfile delete mode 100644 ios/Podfile.lock diff --git a/ios/Podfile b/ios/Podfile deleted file mode 100644 index 8ced976e3..000000000 --- a/ios/Podfile +++ /dev/null @@ -1,85 +0,0 @@ -# Uncomment this line to define a global platform for your project -platform :ios, '13.0' -source 'https://github.com/CocoaPods/Specs.git' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def flutter_root - generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) - unless File.exist?(generated_xcode_build_settings_path) - raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" - end - - File.foreach(generated_xcode_build_settings_path) do |line| - matches = line.match(/FLUTTER_ROOT\=(.*)/) - return matches[1].strip if matches - end - raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_ios_podfile_setup - -target 'Runner' do - use_frameworks! - use_modular_headers! - - flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) - - # Cake Wallet (Legacy) - pod 'CryptoSwift' - pod 'UnstoppableDomainsResolution', '~> 4.0.0' -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_ios_build_settings(target) - - target.build_configurations.each do |config| - config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [ - '$(inherited)', - - ## dart: PermissionGroup.calendar - 'PERMISSION_EVENTS=0', - - ## dart: PermissionGroup.reminders - 'PERMISSION_REMINDERS=0', - - ## dart: PermissionGroup.contacts - 'PERMISSION_CONTACTS=0', - - ## dart: PermissionGroup.camera - 'PERMISSION_CAMERA=0', - - ## dart: PermissionGroup.microphone - 'PERMISSION_MICROPHONE=0', - - ## dart: PermissionGroup.speech - 'PERMISSION_SPEECH_RECOGNIZER=0', - - ## dart: PermissionGroup.photos - 'PERMISSION_PHOTOS=0', - - ## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse] - 'PERMISSION_LOCATION=0', - - ## dart: PermissionGroup.notification - 'PERMISSION_NOTIFICATIONS=0', - - ## dart: PermissionGroup.mediaLibrary - 'PERMISSION_MEDIA_LIBRARY=0', - - ## dart: PermissionGroup.sensors - 'PERMISSION_SENSORS=0' - ] - end - end -end diff --git a/ios/Podfile.lock b/ios/Podfile.lock deleted file mode 100644 index c3ebfa6e2..000000000 --- a/ios/Podfile.lock +++ /dev/null @@ -1,269 +0,0 @@ -PODS: - - barcode_scan2 (0.0.1): - - Flutter - - MTBBarcodeScanner - - SwiftProtobuf - - BigInt (5.2.0) - - connectivity (0.0.1): - - Flutter - - Reachability - - CryptoSwift (1.6.0) - - cw_haven (0.0.1): - - cw_haven/Boost (= 0.0.1) - - cw_haven/Haven (= 0.0.1) - - cw_haven/OpenSSL (= 0.0.1) - - cw_haven/Sodium (= 0.0.1) - - cw_shared_external - - Flutter - - cw_haven/Boost (0.0.1): - - cw_shared_external - - Flutter - - cw_haven/Haven (0.0.1): - - cw_shared_external - - Flutter - - cw_haven/OpenSSL (0.0.1): - - cw_shared_external - - Flutter - - cw_haven/Sodium (0.0.1): - - cw_shared_external - - Flutter - - cw_monero (0.0.2): - - cw_monero/Boost (= 0.0.2) - - cw_monero/Monero (= 0.0.2) - - cw_monero/OpenSSL (= 0.0.2) - - cw_monero/Sodium (= 0.0.2) - - cw_monero/Unbound (= 0.0.2) - - cw_shared_external - - Flutter - - cw_monero/Boost (0.0.2): - - cw_shared_external - - Flutter - - cw_monero/Monero (0.0.2): - - cw_shared_external - - Flutter - - cw_monero/OpenSSL (0.0.2): - - cw_shared_external - - Flutter - - cw_monero/Sodium (0.0.2): - - cw_shared_external - - Flutter - - cw_monero/Unbound (0.0.2): - - cw_shared_external - - Flutter - - cw_shared_external (0.0.1): - - cw_shared_external/Boost (= 0.0.1) - - cw_shared_external/OpenSSL (= 0.0.1) - - cw_shared_external/Sodium (= 0.0.1) - - Flutter - - cw_shared_external/Boost (0.0.1): - - Flutter - - cw_shared_external/OpenSSL (0.0.1): - - Flutter - - cw_shared_external/Sodium (0.0.1): - - Flutter - - device_display_brightness (0.0.1): - - Flutter - - device_info (0.0.1): - - Flutter - - devicelocale (0.0.1): - - Flutter - - DKImagePickerController/Core (4.3.4): - - DKImagePickerController/ImageDataManager - - DKImagePickerController/Resource - - DKImagePickerController/ImageDataManager (4.3.4) - - DKImagePickerController/PhotoGallery (4.3.4): - - DKImagePickerController/Core - - DKPhotoGallery - - DKImagePickerController/Resource (4.3.4) - - DKPhotoGallery (0.0.17): - - DKPhotoGallery/Core (= 0.0.17) - - DKPhotoGallery/Model (= 0.0.17) - - DKPhotoGallery/Preview (= 0.0.17) - - DKPhotoGallery/Resource (= 0.0.17) - - SDWebImage - - SwiftyGif - - DKPhotoGallery/Core (0.0.17): - - DKPhotoGallery/Model - - DKPhotoGallery/Preview - - SDWebImage - - SwiftyGif - - DKPhotoGallery/Model (0.0.17): - - SDWebImage - - SwiftyGif - - DKPhotoGallery/Preview (0.0.17): - - DKPhotoGallery/Model - - DKPhotoGallery/Resource - - SDWebImage - - SwiftyGif - - DKPhotoGallery/Resource (0.0.17): - - SDWebImage - - SwiftyGif - - file_picker (0.0.1): - - DKImagePickerController/PhotoGallery - - Flutter - - Flutter (1.0.0) - - flutter_inappwebview (0.0.1): - - Flutter - - flutter_inappwebview/Core (= 0.0.1) - - OrderedSet (~> 5.0) - - flutter_inappwebview/Core (0.0.1): - - Flutter - - OrderedSet (~> 5.0) - - flutter_secure_storage (3.3.1): - - Flutter - - local_auth_ios (0.0.1): - - Flutter - - MTBBarcodeScanner (5.0.11) - - OrderedSet (5.0.0) - - package_info (0.0.1): - - Flutter - - path_provider_ios (0.0.1): - - Flutter - - permission_handler_apple (9.0.4): - - Flutter - - platform_device_id (0.0.1): - - Flutter - - Reachability (3.2) - - SDWebImage (5.14.2): - - SDWebImage/Core (= 5.14.2) - - SDWebImage/Core (5.14.2) - - share_plus (0.0.1): - - Flutter - - shared_preferences_ios (0.0.1): - - Flutter - - SwiftProtobuf (1.20.3) - - SwiftyGif (5.4.3) - - uni_links (0.0.1): - - Flutter - - UnstoppableDomainsResolution (4.0.0): - - BigInt - - CryptoSwift - - url_launcher_ios (0.0.1): - - Flutter - - webview_flutter_wkwebview (0.0.1): - - Flutter - -DEPENDENCIES: - - barcode_scan2 (from `.symlinks/plugins/barcode_scan2/ios`) - - connectivity (from `.symlinks/plugins/connectivity/ios`) - - CryptoSwift - - cw_haven (from `.symlinks/plugins/cw_haven/ios`) - - cw_monero (from `.symlinks/plugins/cw_monero/ios`) - - cw_shared_external (from `.symlinks/plugins/cw_shared_external/ios`) - - device_display_brightness (from `.symlinks/plugins/device_display_brightness/ios`) - - device_info (from `.symlinks/plugins/device_info/ios`) - - devicelocale (from `.symlinks/plugins/devicelocale/ios`) - - file_picker (from `.symlinks/plugins/file_picker/ios`) - - Flutter (from `Flutter`) - - flutter_inappwebview (from `.symlinks/plugins/flutter_inappwebview/ios`) - - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`) - - local_auth_ios (from `.symlinks/plugins/local_auth_ios/ios`) - - package_info (from `.symlinks/plugins/package_info/ios`) - - path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`) - - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) - - platform_device_id (from `.symlinks/plugins/platform_device_id/ios`) - - share_plus (from `.symlinks/plugins/share_plus/ios`) - - shared_preferences_ios (from `.symlinks/plugins/shared_preferences_ios/ios`) - - uni_links (from `.symlinks/plugins/uni_links/ios`) - - UnstoppableDomainsResolution (~> 4.0.0) - - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) - - webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/ios`) - -SPEC REPOS: - https://github.com/CocoaPods/Specs.git: - - BigInt - - CryptoSwift - - DKImagePickerController - - DKPhotoGallery - - MTBBarcodeScanner - - OrderedSet - - Reachability - - SDWebImage - - SwiftProtobuf - - SwiftyGif - - UnstoppableDomainsResolution - -EXTERNAL SOURCES: - barcode_scan2: - :path: ".symlinks/plugins/barcode_scan2/ios" - connectivity: - :path: ".symlinks/plugins/connectivity/ios" - cw_haven: - :path: ".symlinks/plugins/cw_haven/ios" - cw_monero: - :path: ".symlinks/plugins/cw_monero/ios" - cw_shared_external: - :path: ".symlinks/plugins/cw_shared_external/ios" - device_display_brightness: - :path: ".symlinks/plugins/device_display_brightness/ios" - device_info: - :path: ".symlinks/plugins/device_info/ios" - devicelocale: - :path: ".symlinks/plugins/devicelocale/ios" - file_picker: - :path: ".symlinks/plugins/file_picker/ios" - Flutter: - :path: Flutter - flutter_inappwebview: - :path: ".symlinks/plugins/flutter_inappwebview/ios" - flutter_secure_storage: - :path: ".symlinks/plugins/flutter_secure_storage/ios" - local_auth_ios: - :path: ".symlinks/plugins/local_auth_ios/ios" - package_info: - :path: ".symlinks/plugins/package_info/ios" - path_provider_ios: - :path: ".symlinks/plugins/path_provider_ios/ios" - permission_handler_apple: - :path: ".symlinks/plugins/permission_handler_apple/ios" - platform_device_id: - :path: ".symlinks/plugins/platform_device_id/ios" - share_plus: - :path: ".symlinks/plugins/share_plus/ios" - shared_preferences_ios: - :path: ".symlinks/plugins/shared_preferences_ios/ios" - uni_links: - :path: ".symlinks/plugins/uni_links/ios" - url_launcher_ios: - :path: ".symlinks/plugins/url_launcher_ios/ios" - webview_flutter_wkwebview: - :path: ".symlinks/plugins/webview_flutter_wkwebview/ios" - -SPEC CHECKSUMS: - barcode_scan2: 0af2bb63c81b4565aab6cd78278e4c0fa136dbb0 - BigInt: f668a80089607f521586bbe29513d708491ef2f7 - connectivity: c4130b2985d4ef6fd26f9702e886bd5260681467 - CryptoSwift: 562f8eceb40e80796fffc668b0cad9313284cfa6 - cw_haven: b3e54e1fbe7b8e6fda57a93206bc38f8e89b898a - cw_monero: 4cf3b96f2da8e95e2ef7d6703dd4d2c509127b7d - cw_shared_external: 2972d872b8917603478117c9957dfca611845a92 - device_display_brightness: 1510e72c567a1f6ce6ffe393dcd9afd1426034f7 - device_info: d7d233b645a32c40dfdc212de5cf646ca482f175 - devicelocale: b22617f40038496deffba44747101255cee005b0 - DKImagePickerController: b512c28220a2b8ac7419f21c491fc8534b7601ac - DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179 - file_picker: 817ab1d8cd2da9d2da412a417162deee3500fc95 - Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 - flutter_inappwebview: bfd58618f49dc62f2676de690fc6dcda1d6c3721 - flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec - local_auth_ios: 0d333dde7780f669e66f19d2ff6005f3ea84008d - MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb - OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c - package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62 - path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02 - permission_handler_apple: 44366e37eaf29454a1e7b1b7d736c2cceaeb17ce - platform_device_id: 81b3e2993881f87d0c82ef151dc274df4869aef5 - Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96 - SDWebImage: b9a731e1d6307f44ca703b3976d18c24ca561e84 - share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68 - shared_preferences_ios: 548a61f8053b9b8a49ac19c1ffbc8b92c50d68ad - SwiftProtobuf: b02b5075dcf60c9f5f403000b3b0c202a11b6ae1 - SwiftyGif: 6c3eafd0ce693cad58bb63d2b2fb9bacb8552780 - uni_links: d97da20c7701486ba192624d99bffaaffcfc298a - UnstoppableDomainsResolution: c3c67f4d0a5e2437cb00d4bd50c2e00d6e743841 - url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de - webview_flutter_wkwebview: b7e70ef1ddded7e69c796c7390ee74180182971f - -PODFILE CHECKSUM: bf84c4e13798f92b867c8ebcbd04acc127fec6be - -COCOAPODS: 1.11.2 From 11fcda6e3d82632a26a2dedd618c39523432b27c Mon Sep 17 00:00:00 2001 From: Godwin Asuquo Date: Tue, 10 Jan 2023 18:23:32 +0100 Subject: [PATCH 19/43] Add deleted podfile --- ios/Podfile | 85 ++++++++++++++++ ios/Podfile.lock | 255 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 340 insertions(+) create mode 100644 ios/Podfile create mode 100644 ios/Podfile.lock diff --git a/ios/Podfile b/ios/Podfile new file mode 100644 index 000000000..3b0e0e510 --- /dev/null +++ b/ios/Podfile @@ -0,0 +1,85 @@ +# Uncomment this line to define a global platform for your project +platform :ios, '11.0' +source 'https://github.com/CocoaPods/Specs.git' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + + # Cake Wallet (Legacy) + pod 'CryptoSwift' + pod 'UnstoppableDomainsResolution', '~> 4.0.0' +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + + target.build_configurations.each do |config| + config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [ + '$(inherited)', + + ## dart: PermissionGroup.calendar + 'PERMISSION_EVENTS=0', + + ## dart: PermissionGroup.reminders + 'PERMISSION_REMINDERS=0', + + ## dart: PermissionGroup.contacts + 'PERMISSION_CONTACTS=0', + + ## dart: PermissionGroup.camera + 'PERMISSION_CAMERA=0', + + ## dart: PermissionGroup.microphone + 'PERMISSION_MICROPHONE=0', + + ## dart: PermissionGroup.speech + 'PERMISSION_SPEECH_RECOGNIZER=0', + + ## dart: PermissionGroup.photos + 'PERMISSION_PHOTOS=0', + + ## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse] + 'PERMISSION_LOCATION=0', + + ## dart: PermissionGroup.notification + 'PERMISSION_NOTIFICATIONS=0', + + ## dart: PermissionGroup.mediaLibrary + 'PERMISSION_MEDIA_LIBRARY=0', + + ## dart: PermissionGroup.sensors + 'PERMISSION_SENSORS=0' + ] + end + end +end \ No newline at end of file diff --git a/ios/Podfile.lock b/ios/Podfile.lock new file mode 100644 index 000000000..863e3ca76 --- /dev/null +++ b/ios/Podfile.lock @@ -0,0 +1,255 @@ +PODS: + - barcode_scan2 (0.0.1): + - Flutter + - MTBBarcodeScanner + - SwiftProtobuf + - BigInt (5.2.0) + - connectivity (0.0.1): + - Flutter + - Reachability + - CryptoSwift (1.3.2) + - cw_haven (0.0.1): + - cw_haven/Boost (= 0.0.1) + - cw_haven/Haven (= 0.0.1) + - cw_haven/OpenSSL (= 0.0.1) + - cw_haven/Sodium (= 0.0.1) + - cw_shared_external + - Flutter + - cw_haven/Boost (0.0.1): + - cw_shared_external + - Flutter + - cw_haven/Haven (0.0.1): + - cw_shared_external + - Flutter + - cw_haven/OpenSSL (0.0.1): + - cw_shared_external + - Flutter + - cw_haven/Sodium (0.0.1): + - cw_shared_external + - Flutter + - cw_monero (0.0.2): + - cw_monero/Boost (= 0.0.2) + - cw_monero/Monero (= 0.0.2) + - cw_monero/OpenSSL (= 0.0.2) + - cw_monero/Sodium (= 0.0.2) + - cw_monero/Unbound (= 0.0.2) + - cw_shared_external + - Flutter + - cw_monero/Boost (0.0.2): + - cw_shared_external + - Flutter + - cw_monero/Monero (0.0.2): + - cw_shared_external + - Flutter + - cw_monero/OpenSSL (0.0.2): + - cw_shared_external + - Flutter + - cw_monero/Sodium (0.0.2): + - cw_shared_external + - Flutter + - cw_monero/Unbound (0.0.2): + - cw_shared_external + - Flutter + - cw_shared_external (0.0.1): + - cw_shared_external/Boost (= 0.0.1) + - cw_shared_external/OpenSSL (= 0.0.1) + - cw_shared_external/Sodium (= 0.0.1) + - Flutter + - cw_shared_external/Boost (0.0.1): + - Flutter + - cw_shared_external/OpenSSL (0.0.1): + - Flutter + - cw_shared_external/Sodium (0.0.1): + - Flutter + - device_display_brightness (0.0.1): + - Flutter + - device_info (0.0.1): + - Flutter + - devicelocale (0.0.1): + - Flutter + - DKImagePickerController/Core (4.3.2): + - DKImagePickerController/ImageDataManager + - DKImagePickerController/Resource + - DKImagePickerController/ImageDataManager (4.3.2) + - DKImagePickerController/PhotoGallery (4.3.2): + - DKImagePickerController/Core + - DKPhotoGallery + - DKImagePickerController/Resource (4.3.2) + - DKPhotoGallery (0.0.17): + - DKPhotoGallery/Core (= 0.0.17) + - DKPhotoGallery/Model (= 0.0.17) + - DKPhotoGallery/Preview (= 0.0.17) + - DKPhotoGallery/Resource (= 0.0.17) + - SDWebImage + - SwiftyGif + - DKPhotoGallery/Core (0.0.17): + - DKPhotoGallery/Model + - DKPhotoGallery/Preview + - SDWebImage + - SwiftyGif + - DKPhotoGallery/Model (0.0.17): + - SDWebImage + - SwiftyGif + - DKPhotoGallery/Preview (0.0.17): + - DKPhotoGallery/Model + - DKPhotoGallery/Resource + - SDWebImage + - SwiftyGif + - DKPhotoGallery/Resource (0.0.17): + - SDWebImage + - SwiftyGif + - file_picker (0.0.1): + - DKImagePickerController/PhotoGallery + - Flutter + - Flutter (1.0.0) + - flutter_secure_storage (3.3.1): + - Flutter + - local_auth_ios (0.0.1): + - Flutter + - MTBBarcodeScanner (5.0.11) + - package_info (0.0.1): + - Flutter + - path_provider_ios (0.0.1): + - Flutter + - permission_handler_apple (9.0.4): + - Flutter + - platform_device_id (0.0.1): + - Flutter + - Reachability (3.2) + - SDWebImage (5.9.1): + - SDWebImage/Core (= 5.9.1) + - SDWebImage/Core (5.9.1) + - share_plus (0.0.1): + - Flutter + - shared_preferences_ios (0.0.1): + - Flutter + - SwiftProtobuf (1.18.0) + - SwiftyGif (5.3.0) + - uni_links (0.0.1): + - Flutter + - UnstoppableDomainsResolution (4.0.0): + - BigInt + - CryptoSwift + - url_launcher_ios (0.0.1): + - Flutter + - webview_flutter_wkwebview (0.0.1): + - Flutter + +DEPENDENCIES: + - barcode_scan2 (from `.symlinks/plugins/barcode_scan2/ios`) + - connectivity (from `.symlinks/plugins/connectivity/ios`) + - CryptoSwift + - cw_haven (from `.symlinks/plugins/cw_haven/ios`) + - cw_monero (from `.symlinks/plugins/cw_monero/ios`) + - cw_shared_external (from `.symlinks/plugins/cw_shared_external/ios`) + - device_display_brightness (from `.symlinks/plugins/device_display_brightness/ios`) + - device_info (from `.symlinks/plugins/device_info/ios`) + - devicelocale (from `.symlinks/plugins/devicelocale/ios`) + - file_picker (from `.symlinks/plugins/file_picker/ios`) + - Flutter (from `Flutter`) + - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`) + - local_auth_ios (from `.symlinks/plugins/local_auth_ios/ios`) + - package_info (from `.symlinks/plugins/package_info/ios`) + - path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`) + - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) + - platform_device_id (from `.symlinks/plugins/platform_device_id/ios`) + - share_plus (from `.symlinks/plugins/share_plus/ios`) + - shared_preferences_ios (from `.symlinks/plugins/shared_preferences_ios/ios`) + - uni_links (from `.symlinks/plugins/uni_links/ios`) + - UnstoppableDomainsResolution (~> 4.0.0) + - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) + - webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/ios`) + +SPEC REPOS: + https://github.com/CocoaPods/Specs.git: + - BigInt + - CryptoSwift + - DKImagePickerController + - DKPhotoGallery + - MTBBarcodeScanner + - Reachability + - SDWebImage + - SwiftProtobuf + - SwiftyGif + - UnstoppableDomainsResolution + +EXTERNAL SOURCES: + barcode_scan2: + :path: ".symlinks/plugins/barcode_scan2/ios" + connectivity: + :path: ".symlinks/plugins/connectivity/ios" + cw_haven: + :path: ".symlinks/plugins/cw_haven/ios" + cw_monero: + :path: ".symlinks/plugins/cw_monero/ios" + cw_shared_external: + :path: ".symlinks/plugins/cw_shared_external/ios" + device_display_brightness: + :path: ".symlinks/plugins/device_display_brightness/ios" + device_info: + :path: ".symlinks/plugins/device_info/ios" + devicelocale: + :path: ".symlinks/plugins/devicelocale/ios" + file_picker: + :path: ".symlinks/plugins/file_picker/ios" + Flutter: + :path: Flutter + flutter_secure_storage: + :path: ".symlinks/plugins/flutter_secure_storage/ios" + local_auth_ios: + :path: ".symlinks/plugins/local_auth_ios/ios" + package_info: + :path: ".symlinks/plugins/package_info/ios" + path_provider_ios: + :path: ".symlinks/plugins/path_provider_ios/ios" + permission_handler_apple: + :path: ".symlinks/plugins/permission_handler_apple/ios" + platform_device_id: + :path: ".symlinks/plugins/platform_device_id/ios" + share_plus: + :path: ".symlinks/plugins/share_plus/ios" + shared_preferences_ios: + :path: ".symlinks/plugins/shared_preferences_ios/ios" + uni_links: + :path: ".symlinks/plugins/uni_links/ios" + url_launcher_ios: + :path: ".symlinks/plugins/url_launcher_ios/ios" + webview_flutter_wkwebview: + :path: ".symlinks/plugins/webview_flutter_wkwebview/ios" + +SPEC CHECKSUMS: + barcode_scan2: 0af2bb63c81b4565aab6cd78278e4c0fa136dbb0 + BigInt: f668a80089607f521586bbe29513d708491ef2f7 + connectivity: c4130b2985d4ef6fd26f9702e886bd5260681467 + CryptoSwift: 093499be1a94b0cae36e6c26b70870668cb56060 + cw_haven: b3e54e1fbe7b8e6fda57a93206bc38f8e89b898a + cw_monero: 4cf3b96f2da8e95e2ef7d6703dd4d2c509127b7d + cw_shared_external: 2972d872b8917603478117c9957dfca611845a92 + device_display_brightness: 1510e72c567a1f6ce6ffe393dcd9afd1426034f7 + device_info: d7d233b645a32c40dfdc212de5cf646ca482f175 + devicelocale: b22617f40038496deffba44747101255cee005b0 + DKImagePickerController: b5eb7f7a388e4643264105d648d01f727110fc3d + DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179 + file_picker: 817ab1d8cd2da9d2da412a417162deee3500fc95 + Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 + flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec + local_auth_ios: 0d333dde7780f669e66f19d2ff6005f3ea84008d + MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb + package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62 + path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02 + permission_handler_apple: 44366e37eaf29454a1e7b1b7d736c2cceaeb17ce + platform_device_id: 81b3e2993881f87d0c82ef151dc274df4869aef5 + Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96 + SDWebImage: a990c053fff71e388a10f3357edb0be17929c9c5 + share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68 + shared_preferences_ios: 548a61f8053b9b8a49ac19c1ffbc8b92c50d68ad + SwiftProtobuf: c3c12645230d9b09c72267e0de89468c5543bd86 + SwiftyGif: e466e86c660d343357ab944a819a101c4127cb40 + uni_links: d97da20c7701486ba192624d99bffaaffcfc298a + UnstoppableDomainsResolution: c3c67f4d0a5e2437cb00d4bd50c2e00d6e743841 + url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de + webview_flutter_wkwebview: b7e70ef1ddded7e69c796c7390ee74180182971f + +PODFILE CHECKSUM: ae71bdf0eb731a1ffc399c122f6aa4dea0cb5f6f + +COCOAPODS: 1.11.3 \ No newline at end of file From 8c0b90eff7aa58f9b5bef75253e1d20b595d24aa Mon Sep 17 00:00:00 2001 From: Godwin Asuquo Date: Tue, 10 Jan 2023 18:27:34 +0100 Subject: [PATCH 20/43] Add deleted podfile --- ios/Podfile | 2 +- ios/Podfile.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/Podfile b/ios/Podfile index 3b0e0e510..b29d40484 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -82,4 +82,4 @@ post_install do |installer| ] end end -end \ No newline at end of file +end diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 863e3ca76..3a810430d 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -252,4 +252,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: ae71bdf0eb731a1ffc399c122f6aa4dea0cb5f6f -COCOAPODS: 1.11.3 \ No newline at end of file +COCOAPODS: 1.11.3 From 8be2079b02c16dfe0b492934510bb6efc8f473f4 Mon Sep 17 00:00:00 2001 From: Mathias Herberts Date: Wed, 11 Jan 2023 09:44:27 +0100 Subject: [PATCH 21/43] Minor changes for a more natural feel --- res/values/strings_fr.arb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/res/values/strings_fr.arb b/res/values/strings_fr.arb index 99fbcd282..00f514f7b 100644 --- a/res/values/strings_fr.arb +++ b/res/values/strings_fr.arb @@ -149,7 +149,7 @@ "subaddresses" : "Sous-adresses", "addresses" : "Adresses", "scan_qr_code" : "Scannez le QR code pour obtenir l'adresse", - "qr_fullscreen" : "Appuyez pour ouvrir le QR code en plein écran", + "qr_fullscreen" : "Appuyez pour ouvrir le QR code en mode plein écran", "rename" : "Renommer", "choose_account" : "Choisir le compte", "create_new_account" : "Créer un nouveau compte", @@ -267,7 +267,7 @@ "new_subaddress_label_name" : "Nom", "new_subaddress_create" : "Créer", - "address_label" : "Étiquette de l'adresse", + "address_label" : "Nom de l'adresse", "subaddress_title" : "Liste des sous-adresses", From 1c139386a71e4d02436eeae4db04f08f3231c735 Mon Sep 17 00:00:00 2001 From: HardenedSteel Date: Wed, 11 Jan 2023 02:19:16 +0300 Subject: [PATCH 22/43] Add Turkish Language --- assets/images/flags/tur.png | Bin 0 -> 6608 bytes lib/entities/language_service.dart | 6 +- res/values/strings_tr.arb | 683 +++++++++++++++++++++++++++++ 3 files changed, 687 insertions(+), 2 deletions(-) create mode 100644 assets/images/flags/tur.png create mode 100644 res/values/strings_tr.arb diff --git a/assets/images/flags/tur.png b/assets/images/flags/tur.png new file mode 100644 index 0000000000000000000000000000000000000000..71a0d8ffcef38e9509f166a24290b584095c2e4c GIT binary patch literal 6608 zcmeAS@N?(olHy`uVBq!ia0vp^T0pGA!3HG%pIo60q*&4&eH|GXHuiJ>Nn~YUU~J8F zb`J1#c2+1T%1_J8No8Qrm{>c}+T(D5NZbEyUQ0t{bd(-VSZK9XVPC-&Es=#zD@3D8 z4R*fdo@JtdV0j8%t)Pg~7e3CjOW~vP_0;M2EyQKNeLmAM(eu2pdq-;$ z`)S!TUTt1Bo-&~!y`TO@P8U5FJ?E-d@78xG<0Z~zYoCr;ZrY`r( zE!j(EcwDYLblCpM57(lTPqdmRCNqYvm>^^SL;laawUIL<$|oP!vW)hrCa}AWi$BfS+#eqYk$MO+y{?#tvy+N;3=QMk0su1Pdpf-{y8yL z*e}jM#rSu-L&n*;(XVBe^Ei(P=vFcJ2O<~vB!wu*kwWvQ z1KXoO|NZ~Z@Ts+j;dB2KhW|f)qBx3GLydt|SDWGY<*O*-lyHa+QD#XAV7u!u0~0SV z*uD=H^$cGo&%|vv3os1+{9#~ZXJh#P=Pv`pUmzwCAcrW?xt=E@3GT>W=PxmQnKBE% zwLnLL0F$5~17AfULMu*D(t;sRbcnJjD!?`WzJ3$V#>HUd=3?Ls^kER_ZDn9!W@ZrRYyxLMavTY=gJ_51 zauB`5iFW9pd-vgPV%1cKvvD#0fBnYref<`O55?8sjP#+rj^Y28FASiPgB(C~8vOw* z%vp6n{b&XTp40?}uM3wEolZY>_9HSMnVE^`5d8wIasGY!1a>H^fi442P8yhvlK>S@ zK=AMVdxlRP{Rm~i@|PSyv_t>Cc**cSrvzy8Kd?Ol?F|fkRV56JoE#YTf@&vN^7#Mr z7g=Q}x}hkA8ZlKUXOJ(0;M86QCO$r}S>P&k&whqKH*YgA^6^5d&{gXhzHiuqZWqaX z localeCountryCode = { @@ -40,7 +41,8 @@ class LanguageService { 'hr': 'hrv', 'it': 'ita', 'th': 'tha', - 'ar': 'sau' + 'ar': 'sau', + 'tr': 'tur' }; static final list = {}; diff --git a/res/values/strings_tr.arb b/res/values/strings_tr.arb new file mode 100644 index 000000000..9263417d5 --- /dev/null +++ b/res/values/strings_tr.arb @@ -0,0 +1,683 @@ +{ + "welcome" : "Hoş Geldiniz", + "cake_wallet" : "Cake Wallet", + "first_wallet_text" : "Monero, Bitcoin, Litecoin ve Haven için harika cüzdan", + "please_make_selection" : "Cüzdan oluşturmak veya geri döndürmek için aşağıdan seçim yap.", + "create_new" : "Yeni Cüzdan Oluştur", + "restore_wallet" : "Cüzdanı Geri Döndür", + + "monero_com": "Cake Wallet tarafından Monero.com", + "monero_com_wallet_text": "Monero için harika cüzdan", + + "haven_app": "Cake Wallet tarafından Haven", + "haven_app_wallet_text": "Haven için harika cüzdan ", + + "accounts" : "Hesaplar", + "edit" : "Düzenle", + "account" : "Hesap", + "add" : "Ekle", + + + "address_book" : "Adres Defteri", + "contact" : "Rehber", + "please_select" : "Lütfen seçim yap:", + "cancel" : "İptal", + "ok" : "Tamam", + "contact_name" : "Kişi ismi", + "reset" : "Sıfırla", + "save" : "Kaydet", + "address_remove_contact" : "Kişiyi sil", + "address_remove_content" : "Seçili kişiyi silmek istediğinden emin misin?", + + + "authenticated" : "Doğrulandı", + "authentication" : "Doğrulama", + "failed_authentication" : "Doğrulama başarısız oldu. ${state_error}", + + + "wallet_menu" : "Menü", + "Blocks_remaining" : "${status} Blok Kaldı", + "please_try_to_connect_to_another_node" : "Lütfen farklı düğüme bağlanmayı dene", + "xmr_hidden" : "Gizli", + "xmr_available_balance" : "Kullanılabilir Bakiye", + "xmr_full_balance" : "Tüm Bakiye", + "send" : "Para Gönder", + "receive" : "Para Al", + "transactions" : "İşlemler", + "incoming" : "Gelen", + "outgoing" : "Giden", + "transactions_by_date" : "Tarihe göre transferler", + "trades" : "Takaslar", + "filter_by": "Şuna göre filtrele", + "today" : "Bugün", + "yesterday" : "Dün", + "received" : "Alındı", + "sent" : "Gönderildi", + "pending" : " (bekleyen)", + "rescan" : "Yeniden Tara", + "reconnect" : "Yeniden Bağlan", + "wallets" : "Cüzdanlar", + "show_seed" : "Tohumları göster", + "show_keys" : "Tohumları/anahtarları göster", + "address_book_menu" : "Adres defteri", + "reconnection" : "Yeniden bağlantı", + "reconnect_alert_text" : "Yeniden bağlanmak istediğinden emin misin?", + + + "exchange" : "Takas", + "clear" : "Temizle", + "refund_address" : "İade adresi", + "change_exchange_provider" : "Takas sağlayıcısını değiştir", + "you_will_send" : "Biçiminden dönüştür:", + "you_will_get" : "Biçimine dönüştür:", + "amount_is_guaranteed" : "Alacağınız tutar garantilidir", + "amount_is_estimate" : "Alacağınız tutar tahminidir", + "powered_by" : "${title} tarafından desteklenmektedir", + "error" : "Hata", + "estimated" : "Tahmini", + "min_value" : "En az: ${value} ${currency}", + "max_value" : "En fazla: ${value} ${currency}", + "change_currency" : "Para Birimini Değiştir", + "overwrite_amount" : "Miktarın üzerine yaz", + "qr_payment_amount" : "Bu QR kodu ödeme tutarını içeriyor. Geçerli miktarın üzerine yazmak istediğine emin misin?", + + "copy_id" : "ID'yi kopyala", + "exchange_result_write_down_trade_id" : "Devam etmek için lütfen ID'yi kopyala veya bir yere yaz.", + "trade_id" : "Takas ID'si:", + "copied_to_clipboard" : "Panoya Kopyalandı", + "saved_the_trade_id" : "Takas ID'imi kaydettim", + "fetching" : "Getiriliyor", + "id" : "ID: ", + "amount" : "Miktar: ", + "payment_id" : "Ödeme ID'si: ", + "status" : "Durum: ", + "offer_expires_in" : "Teklifin bitmesine kalan: ", + "trade_is_powered_by" : "Bu takas ${provider} tarafından desteklenmektedir", + "copy_address" : "Adresi kopyala", + "exchange_result_confirm" : "Onaylaya basarak, ${fetchingLabel} ${from} miktarında ${walletName} olarak adlandırılan cüzdanından aşağıda gösterilen adrese gönderilecek. Veya harici cüzdanından aşağıdaki adrese / QR koduna gönderebilirsin.\n\nLütfen devam etmek için onayla'ya bas veya tutarı değiştirmek için geri dön.", + "exchange_result_description" : "Lütfen en az ${fetchingLabel} miktarındaki ${from}'yi sonraki sayfada gönsterilen adrese gönder. Eğer ${fetchingLabel} ${from}'den az gönderirsen takas gerçekleşmeyebilir ve size geri iade edilebilir.", + "exchange_result_write_down_ID" : "*Lütfen yukarıda gösterilen ID'ni kopyala veya bir yere yaz.", + "confirm" : "Onayla", + "confirm_sending" : "Göndermeyi onayla", + "commit_transaction_amount_fee" : "Transferi gerçekleştir\nMiktar: ${amount}\nKomisyon: ${fee}", + "sending" : "Gönderiliyor", + "transaction_sent" : "Transfer gönderildi!", + "expired" : "Süresi doldu", + "time" : "${minutes}d ${seconds}s", + "send_xmr" : "XMR gönder", + "exchange_new_template" : "Yeni şablon", + + "faq" : "SSS", + + + "enter_your_pin" : "PIN'ini gir", + "loading_your_wallet" : "Cüzdanın yükleniyor", + + + "new_wallet" : "Yeni Cüzdan", + "wallet_name" : "Cüzdan ismi", + "continue_text" : "Devam et", + "choose_wallet_currency" : "Lütfen cüzdanın para birimini seç:", + + + "node_new" : "Yeni düğüm", + "node_address" : "Düğüm adresi", + "node_port" : "Düğüm port'u", + "login" : "Login", + "password" : "Parola", + "nodes" : "Düğümler", + "node_reset_settings_title" : "Ayarları sıfırla", + "nodes_list_reset_to_default_message" : "Ayarları varsayılana sıfırlamak istediğinizden emin misin?", + "change_current_node" : "Şimdiki düğümü ${node} düğümüne değiştirmek istediğinizden emin misin?", + "change" : "Değiştir", + "remove_node" : "Düğümü kaldır", + "remove_node_message" : "Seçili düğümü kaldırmak istediğinden emin misin?", + "remove" : "Kaldır", + "delete" : "Sil", + "add_new_node" : "Yeni düğüm ekle", + "change_current_node_title" : "Şimdiki düğümü değiştir", + "node_test" : "Test Et", + "node_connection_successful" : "Bağlantı başarılı oldu", + "node_connection_failed" : "Bağlantı başarısız oldu", + "new_node_testing" : "Yeni düğüm test ediliyor", + + + "use" : "Şuna geç: ", + "digit_pin" : " haneli PIN", + + + "share_address" : "Adresi paylaş", + "receive_amount" : "Miktar", + "subaddresses" : "Alt adresler", + "addresses" : "Adresler", + "scan_qr_code" : "Adresi getirmek için QR kodunu tara", + "qr_fullscreen" : "QR kodunu tam ekranda açmak için dokun", + "rename" : "Yeniden adlandır", + "choose_account" : "Hesabı seç", + "create_new_account" : "Yeni hesap oluştur", + "accounts_subaddresses" : "Hesaplar ve alt adresler", + + + "restore_restore_wallet" : "Cüzdanı Geri Döndür", + "restore_title_from_seed_keys" : "Tohumdan/anahtarlardan geri döndür", + "restore_description_from_seed_keys" : "Güvenli bir yere kaydettiğin tohumdan/anahtarlardan cüzdanını geri döndür", + "restore_next" : "İleri", + "restore_title_from_backup" : "Yedekten geri döndür", + "restore_description_from_backup" : "Yedek dosyandan tüm Cake Wallet uygulamasını geri döndürebilirsin", + "restore_seed_keys_restore" : "Tohumu/Anahtarları Geri Döndür", + "restore_title_from_seed" : "Tohumdan geri döndür", + "restore_description_from_seed" : "Cüzdanınızı 25 veya 13 kelimelik kombinasyon kodundan geri döndürün", + "restore_title_from_keys" : "Anahtarlardan geri döndür", + "restore_description_from_keys" : "Cüzdanınızı özel anahtarlarınızdan kaydedilen oluşturulmuş tuş vuruşlarından geri yükleyin", + "restore_wallet_name" : "Cüzdan ismi", + "restore_address" : "Adres", + "restore_view_key_private" : "İzleme anahtarı (Özel)", + "restore_spend_key_private" : "Harcama anahtarı (Özel)", + "restore_recover" : "Geri döndür", + "restore_wallet_restore_description" : "Cüzdan geri döndürme açıklaması", + "restore_new_seed" : "Yeni tohum", + "restore_active_seed" : "Tohumu aktifleştir", + "restore_bitcoin_description_from_seed" : "Cüzdanınızı 24 kelimelik kombinasyon kodundan geri yükle", + "restore_bitcoin_description_from_keys" : "Cüzdanını, oluşturulan WIF dizesinden veya özel anahtarlarından geri yükle", + "restore_bitcoin_title_from_keys" : "WIF'den geri yükle", + "restore_from_date_or_blockheight" : "Lütfen bu cüzdanı oluşturmadan birkaç gün önceki bir tarihi girin. Veya blok yüksekliğini biliyorsan, lütfen bunu gir", + + + "seed_reminder" : "Telefonunu kaybetmen veya silinmesi ihtimaline karşı lütfen bunları not et", + "seed_title" : "Tohum", + "seed_share" : "Tohumu paylaş", + "copy" : "Kopyala", + + + "seed_language_choose" : "Lütfen tohum dilini seç:", + "seed_choose" : "Tohum dilini seçin", + "seed_language_next" : "İleri", + "seed_language_english" : "İngilizce", + "seed_language_chinese" : "Çince", + "seed_language_dutch" : "Flemenkçe", + "seed_language_german" : "Almanca", + "seed_language_japanese" : "Japonca", + "seed_language_portuguese" : "Portekizce", + "seed_language_russian" : "Rusça", + "seed_language_spanish" : "İspanyolca", + "seed_language_french": "Fransızca", + "seed_language_italian": "İtalyanca", + + + "send_title" : "Gönder", + "send_your_wallet" : "Cüzdanın", + "send_address" : "${cryptoCurrency} adresi", + "send_payment_id" : "Ödeme ID'si (isteğe bağlı)", + "all" : "HEPSİ", + "send_error_minimum_value" : "Minimum tutar değeri 0.01'dir", + "send_error_currency" : "Para birimi sadece sayı içerebilir", + "send_estimated_fee" : "Tahmini komisyon:", + "send_priority" : "Şu anda ücret ${transactionPriority} önceliğine ayarlanmıştır.\nİşlem önceliği ayarlardan değiştirilebilir", + "send_creating_transaction" : "İşlem oluşturuluyor", + "send_templates" : "Şablonlar", + "send_new" : "Yeni", + "send_amount" : "Miktar:", + "send_fee" : "Komisyon:", + "send_name" : "İsim", + "send_got_it" : "Tamamdır", + "send_sending" : "Gönderiliyor...", + "send_success" : "${crypto} başarıyla gönderildi", + + + "settings_title" : "Ayarlar", + "settings_nodes" : "Düğümler", + "settings_current_node" : "Şimdiki düğüm", + "settings_wallets" : "Cüzdanlar", + "settings_display_balance" : "Bakiyeyi göster", + "settings_currency" : "Para birimi", + "settings_fee_priority" : "İşlem Komsiyonu önceliği", + "settings_save_recipient_address" : "Gönderilen adresi kaydet", + "settings_personal" : "Kişisel", + "settings_change_pin" : "PIN'i değiştir", + "settings_change_language" : "Dili değiştir", + "settings_allow_biometrical_authentication" : "Biyometrik doğrulamaya izin ver", + "settings_dark_mode" : "Karanlık mod", + "settings_transactions" : "İşlemler", + "settings_trades" : "Takaslar", + "settings_display_on_dashboard_list" : "Gösterge tablosu listesinde göster", + "settings_all" : "HEPSİ", + "settings_only_trades" : "Sadece takaslar", + "settings_only_transactions" : "Sadece transferler", + "settings_none" : "Hiçbiri", + "settings_support" : "Destek", + "settings_terms_and_conditions" : "Şartlar ve Koşullar", + "pin_is_incorrect" : "PIN kodu hatalı", + + + "setup_pin" : "PIN kodu kurulumu", + "enter_your_pin_again" : "PIN kodunu tekrar girin", + "setup_successful" : "PIN kodun başarıyla ayarlandı!", + + + "wallet_keys" : "Cüzdan tohumu/anahtarları", + "wallet_seed" : "Cüzdan tohumu", + "private_key" : "Özel anahtar", + "public_key" : "Genel Anahtar", + "view_key_private" : "İzleme anahtarı (özel)", + "view_key_public" : "İzleme anahtarı (genel)", + "spend_key_private" : "Harcama anahtarı (özel)", + "spend_key_public" : "Harcama anahtarı (genel)", + "copied_key_to_clipboard" : "${key} panoya kopyalandı", + + + "new_subaddress_title" : "Yeni adres", + "new_subaddress_label_name" : "Etiket ismi", + "new_subaddress_create" : "Oluştur", + + "address_label" : "Adres etiketi", + + "subaddress_title" : "Alt adres listesi", + + + "trade_details_title" : "Takas Detayları", + "trade_details_id" : "ID", + "trade_details_state" : "Durum", + "trade_details_fetching" : "Getiriliyor", + "trade_details_provider" : "Sağlayıcı", + "trade_details_created_at" : "'da oluşturuldu", + "trade_details_pair" : "Parite", + "trade_details_copied" : "${title} panoya kopyalandı", + + + "trade_history_title" : "Takas geçmişi", + + + "transaction_details_title" : "İşlem Detayları", + "transaction_details_transaction_id" : "İşem ID'si", + "transaction_details_date" : "Tarih", + "transaction_details_height" : "Yükseklik", + "transaction_details_amount" : "Miktar", + "transaction_details_fee" : "Fee", + "transaction_details_copied" : "${title} panoya kopyalandı", + "transaction_details_recipient_address" : "Alıcı adres", + + + "wallet_list_title" : "Monero Cüzdanı", + "wallet_list_create_new_wallet" : "Yeni Cüzdan Oluştur", + "wallet_list_restore_wallet" : "Cüzdanı Geri Yükle", + "wallet_list_load_wallet" : "Cüzdanı yükle", + "wallet_list_loading_wallet" : "${wallet_name} cüzdanı yükleniyor", + "wallet_list_failed_to_load" : "Failed to load ${wallet_name} wallet. ${error}", + "wallet_list_removing_wallet" : "Removing ${wallet_name} wallet", + "wallet_list_failed_to_remove" : "${wallet_name} cüzdanı yüklenirken hata oluştu. ${error}", + + + "widgets_address" : "Adres", + "widgets_restore_from_blockheight" : "Blok yüksekliğinden geri yükle", + "widgets_restore_from_date" : "Tarihten geri yükle", + "widgets_or" : "veya", + "widgets_seed" : "Tohum", + + + "router_no_route" : "${name} için rota tanımlanmadı", + + + "error_text_account_name" : "Hesap ismi yalnızca harf, rakam \nve 1 ile 15 uzunluğunda karakter içermelidir.", + "error_text_contact_name" : "Kişi ismi ` , ' \" sembollerini içeremez \nve 1 ile 32 uzunluğunda karakter içermelidir", + "error_text_address" : "Cüzdan adresi kripto para biriminin\ntürüne karşılık gelmelidir", + "error_text_node_address" : "Lütfen iPv4 adresi girin", + "error_text_node_port" : "Düğüm port'u yalnızca 0 ve 65535 arasında rakam içerebilir", + "error_text_payment_id" : "Ödeme ID'si yalnızca onaltılık (hex) olarak 16 veya 64 karakter içerebilir", + "error_text_xmr" : "XMR miktarı kullanılabilir bakiyeyi aşamaz.\nKesir basamaklarının sayısı 12'ye eşit veya daha az olmalıdır", + "error_text_fiat" : "Tutarın değeri, mevcut bakiyeyi aşamaz.\nKesir basamaklarının sayısı 2'ye eşit veya daha az olmalıdır", + "error_text_subaddress_name" : "Alt adres ismi ` , ' \" sembolleri içeremez\nve 1 ile 20 karakter arasında olmalıdır", + "error_text_amount" : "Miktar sadece sayı içerebilir", + "error_text_wallet_name" : "Cüzdan ismi yalnızca harf, rakam \nve 1 ile 33 uzunluğunda karakter içermelidir.", + "error_text_keys" : "Cüzdan anahtarları onaltılık (hex) olarak yalnızca 64 karakter içerebilir", + "error_text_crypto_currency" : "Kesir basamaklarının sayısı\n12'ye eşit veya daha az olmalıdır", + "error_text_minimal_limit" : "${provider} için işlem oluşturulmadı. Miktar minimumdan daha azdır: ${min} ${currency}", + "error_text_maximum_limit" : "${provider} için işlem oluşturulmadı. Miktar maksimumdan daha fazla: ${max} ${currency}", + "error_text_limits_loading_failed" : "${provider} için işlem oluşturulmadı. Limitler yüklenirken hata oluştu.", + "error_text_template" : "Şablon adı ve adresi ` , ' \" sembolleri içeremez\nve 1 ila 106 karakter uzunluğunda olmalı", + + + "auth_store_ban_timeout" : "ban_timeout", + "auth_store_banned_for" : "Bu kadar süreliğine yasaklandınız: ", + "auth_store_banned_minutes" : " dakika", + "auth_store_incorrect_password" : "Hatalı PIN", + "wallet_store_monero_wallet" : "Monero Cüzdanı", + "wallet_restoration_store_incorrect_seed_length" : "Yanlış tohum uzunluğu", + + + "full_balance" : "Tüm bakiye", + "available_balance" : "Kullanılabilir Bakiye", + "hidden_balance" : "Gizli Bakiye", + + + "sync_status_syncronizing" : "SENKRONİZE EDİLİYOR", + "sync_status_syncronized" : "SENKRONİZE EDİLDİ", + "sync_status_not_connected" : "BAĞLI DEĞİL", + "sync_status_starting_sync" : "SENKRONİZE BAŞLATILIYOR", + "sync_status_failed_connect" : "BAĞLANTI KESİLDİ", + "sync_status_connecting" : "BAĞLANILIYOR", + "sync_status_connected" : "BAĞLANILDI", + "sync_status_attempting_sync" : "SENKRONİZE EDİLMEYE ÇALIŞILIYOR", + + + "transaction_priority_slow" : "Yavaş", + "transaction_priority_regular" : "Normal", + "transaction_priority_medium" : "Orta", + "transaction_priority_fast" : "Hızlı", + "transaction_priority_fastest" : "En Hızlı", + + + "trade_for_not_created" : "${title} için takas oluşturulmadı.", + "trade_not_created" : "Takas oluşturulmadı", + "trade_id_not_found" : "Trade ${tradeId} of ${title} not found.", + "trade_not_found" : "Takas bulunamadı.", + + + "trade_state_pending" : "Beklemede", + "trade_state_confirming" : "Onaylanıyor", + "trade_state_trading" : "Takas yapılıyor", + "trade_state_traded" : "Takas yapıldı", + "trade_state_complete" : "Tamamlandı", + "trade_state_to_be_created" : "Oluşturulacak", + "trade_state_unpaid" : "Ödenmedi", + "trade_state_underpaid" : "Eksik ödendi", + "trade_state_paid_unconfirmed" : "Ödendi onaylanmadı", + "trade_state_paid" : "Ödendi", + "trade_state_btc_sent" : "Btc gönderildi", + "trade_state_timeout" : "Zaman aşımı", + "trade_state_created" : "Oluşturuldu", + "trade_state_finished" : "Tamamlandı", + + "change_language" : "Dili değiştir", + "change_language_to" : "Dili şuna değiştir: ${language}?", + + "paste" : "Yapıştır", + "restore_from_seed_placeholder" : "Lütfen tohumunu buraya gir veya yapıştır", + "add_new_word" : "Yeni kelime ekle", + "incorrect_seed" : "Girilen metin geçerli değil.", + + "biometric_auth_reason" : "Kimlik doğrulaması için parmak izini okutun", + "version" : "Sürüm ${currentVersion}", + + "openalias_alert_title" : "Adres tespit edildi", + "openalias_alert_content" : "Parayı buraya gönderceksin:\n${recipient_name}", + + "card_address" : "Adres:", + "buy" : "Alış", + "sell": "Satış", + + "placeholder_transactions" : "İşlemlerin burada görüntülenecek", + "placeholder_contacts" : "Kişilerin burada görüntülenecek", + + "template" : "Şablon", + "confirm_delete_template" : "Bu eylem, bu şablonu silecek. Devam etmek istiyor musun?", + "confirm_delete_wallet" : "Bu eylem, bu cüzdanı silecek. Devam etmek istiyor musun?", + + "picker_description" : "ChangeNOW veya MorphToken'ı seçmek için lütfen önce işlem paritenizi değiştirin", + + "change_wallet_alert_title" : "Şimdiki cüzdanı değiştir", + "change_wallet_alert_content" : "Şimdiki cüzdanı ${wallet_name} cüzdanı ile değiştirmek istediğinden emin misin?", + + "creating_new_wallet" : "Cüzdan oluşturuluyor", + "creating_new_wallet_error" : "Hata: ${description}", + + "seed_alert_title" : "Dikkat", + "seed_alert_content" : "Cüzdanını kurtarmanın tek yolu tohumdur. Tohumunu yazdın mı?", + "seed_alert_back" : "Geriye dön", + "seed_alert_yes" : "Evet yazdım", + + "exchange_sync_alert_content" : "Lütfen cüzdanın senkronize olana kadar bekle", + + "pre_seed_title" : "UYARI", + "pre_seed_description" : "Bir sonraki sayfada ${words} kelime göreceksin. Bu senin benzersiz ve özel tohumundur, kaybetmen veya silinmesi durumunda cüzdanını kurtarmanın TEK YOLUDUR. Bunu yazmak ve Cake Wallet uygulaması dışında güvenli bir yerde saklamak tamamen SENİN sorumluluğunda.", + "pre_seed_button_text" : "Anladım. Bana tohumumu göster.", + + "xmr_to_error" : "XMR.TO hatası", + "xmr_to_error_description" : "Geçersiz tutar. Ondalık noktadan sonra maksimum limit 8 basamaktır", + + "provider_error" : "${provider} hatası", + + "use_ssl" : "SSL kullan", + "trusted" : "Güvenilir", + + "color_theme" : "Renk teması", + "light_theme" : "Aydınlık", + "bright_theme" : "Parlak", + "dark_theme" : "Karanlık", + "enter_your_note" : "Notunu gir…", + "note_optional" : "Not (isteğe bağlı)", + "note_tap_to_change" : "Not (değiştirmek için dokunun)", + "view_in_block_explorer" : "Blok Gezgini'nde görüntüle", + "view_transaction_on" : "İşlemi şurada görüntüle ", + "transaction_key" : "İşlem Anahtarı", + "confirmations" : "Onay", + "recipient_address" : "Alıcı adresi", + + "extra_id" : "Ekstra ID:", + "destination_tag" : "Hedef Etiketi:", + "memo" : "Memo:", + + "backup" : "Yedek", + "change_password" : "Parolayı değiştir", + "backup_password" : "Yedek parolası", + "write_down_backup_password" : "Lütfen yedekleme dosyasının içe aktarılması için kullanılan yedekleme parolanı not et.", + "export_backup" : "Yedeği dışa aktar", + "save_backup_password" : "Lütfen yedekleme parolanı kaydettiğinden emin ol. Bu parola olmadan yedekleme dosyasını içe aktaramazsın.", + "backup_file" : "Yedek dosyası", + + "edit_backup_password" : "Yedek parolasını değiştir", + "save_backup_password_alert" : "Yedek parolasını kaydet", + "change_backup_password_alert" : "Önceki yedekleme dosyaların yeni yedek parolası ile içe aktarılamayacaktır. Yeni yedekleme parolası yalnızca yeni yedekleme dosyaları için kullanılabilir olacak. Yedekleme parolasını değiştirmek istediğinden emin misin?", + + "enter_backup_password" : "Yedekleme parolasını buraya gir", + "select_backup_file" : "Yedek dosyası seç", + "import" : "İçe aktar", + "please_select_backup_file" : "Lütfen yedekleme dosyasını seç ve yedekleme parolasını gir.", + + "fixed_rate" : "Sabit oran", + "fixed_rate_alert" : "Sabit oran modunu işaretlersen alım tutarını girebilirsin. Sabit oran moduna geçmek ister misin?", + + "xlm_extra_info" : "Lütfen takas için XLM işlemi gönderirken Memo ID'yi belirtmeyi unutmayın", + "xrp_extra_info" : "Lütfen takas için XRP işlemi gönderirken Hedef Etiketi (Destination Tag) belirtmeyi unutmayın", + + "exchange_incorrect_current_wallet_for_xmr" : "Cake Wallet'daki Monero bakiyenizi kullanarak takas yapmak istiyorsan, lütfen önce Monero cüzdanına geç.", + "confirmed" : "Onaylı", + "unconfirmed" : "Onaylanmamış", + "displayable" : "Gösterilebilir", + + "submit_request" : "talep gönder", + + "buy_alert_content" : "Şu anda sadece Bitcoin ve Litecoin satın alımını destekliyoruz. Bitcoin veya Litecoin satın almak için lütfen Bitcoin veya Litecoin cüzdanınızı oluşturun veya bu cüzdanlardan birine geçiş yapın.", + "sell_alert_content": "Şu anda sadece Bitcoin satışını destekliyoruz. Bitcoin satmak için lütfen Bitcoin cüzdanınızı oluşturun veya Bitcoin cüzdanınıza geçiş yapın.", + + "outdated_electrum_wallet_description" : "Cake'te oluşturulan yeni Bitcoin cüzdanları artık 24 kelimelik bir tohuma sahip. Yeni bir Bitcoin cüzdanı oluşturmanız ve tüm paranızı 24 kelimelik yeni cüzdana aktarmanız ve 12 kelimelik tohuma sahip cüzdanları kullanmayı bırakmanız zorunludur. Lütfen paranızı güvence altına almak için bunu hemen yapın.", + "understand" : "Anladım", + + "apk_update" : "APK güncellemesi", + + "buy_bitcoin" : "Bitcoin Satın Al", + "buy_with" : "Şunun ile al: ", + "moonpay_alert_text" : "Tutar ${minAmount} ${fiatCurrency} miktarına eşit veya daha fazla olmalıdır", + + "outdated_electrum_wallet_receive_warning": "Bu cüzdanın 12 kelimelik bir tohumu varsa ve Cake'te oluşturulduysa, bu cüzdana Bitcoin YATIRMAYIN. Bu cüzdana aktarılan tüm BTC'ler kaybolabilir. 24 kelimelik yeni bir cüzdan oluşturun (sağ üstteki menüye dokunun, Cüzdanlar'ı seçin, Yeni Cüzdan Oluştur'u seçin, ardından Bitcoin'i seçin) ve BTC'nizi HEMEN oraya taşıyın. Cake'in yeni (24 kelimelik) BTC cüzdanları güvenlidir", + "do_not_show_me": "Bana bunu bir daha gösterme", + + "unspent_coins_title" : "Harcanmamış koinler", + "unspent_coins_details_title" : "Harcanmamış koin detayları", + "freeze" : "Dondur", + "frozen" : "Dondurulmuş", + "coin_control" : "Koin kontrolü (isteğe bağlı)", + + "address_detected" : "Adres tespit edildi", + "address_from_domain" : "Bu adres Unstoppable Domains'deki' ${domain} adresinden alındı", + + "add_receiver" : "Başka bir alıcı ekle (isteğe bağlı)", + + "manage_yats" : "Yats'ları yönet", + "yat_alert_title" : "Yat ile daha kolay kripto gönderin ve alın", + "yat_alert_content" : "Cake Wallet kullanıcıları artık tüm favori koin birimlerini benzersiz emoji tabanlı kullanıcı adıyla gönderebilir ve alabilirler.", + "get_your_yat" : "Yat'ını al", + "connect_an_existing_yat" : "Mevcut bir Yat'ı bağla", + "connect_yats": "Yat'lara bağlan", + "yat_address" : "Yat adresi", + "yat" : "Yat", + "address_from_yat" : "Bu adres Yat'taki ${emoji} adresinden alındı", + "yat_error" : "Yat hatası", + "yat_error_content" : "Bu Yat'a bağlı bir adres yok. Başka bir Yat'ı deneyin", + "choose_address" : "\n\nLütfen adresi seçin:", + "yat_popup_title" : "Cüzdan adresiniz emojileştirilebilir.", + "yat_popup_content" : "Artık Cake Wallet'ta kısa, emoji tabanlı bir kullanıcı adı olan Yat'ınızla kripto gönderebilir ve alabilirsiniz. Yats'ı istediğiniz zaman ayarlar ekranından yönetebilirsiniz", + "second_intro_title" : "Hepsini yönetebilen tek bir emoji adresi", + "second_intro_content" : "Yat'ınız, tüm para birimleriniz için uzun onaltılık adreslerinizin yerini alan benzersiz emoji adresidir.", + "third_intro_title" : "Yat diğerleriyle iyi çalışır", + "third_intro_content" : "Yat'lar Cake Wallet'ın dışında da çalışabilir. Dünya üzerindeki herhangi bir cüzdan adresi Yat ile değiştirilebilir!", + "learn_more" : "Daha fazla öğren", + "search": "Arat", + "search_language": "Dil arat", + "search_currency": "Para birimi ara", + "new_template" : "Yeni Şablon", + "electrum_address_disclaimer": "Adresini her kullandığında yeni adres oluşturuyoruz, ancak önceki adresler de çalışmaya devam eder", + "wallet_name_exists": "Bu isimde bir cüzdan zaten mevcut. Lütfen farklı bir isim seç veya önce diğer cüzdanı yeniden adlandır.", + "market_place": "Pazar Alanı", + "cake_pay_title": "Cake Pay Hediye Kartları", + "cake_pay_subtitle": "İndirimli hediye kartları satın alın (yalnızca ABD)", + "cake_pay_web_cards_title": "Cake Pay Web Kartları", + "cake_pay_web_cards_subtitle": "Dünya çapında ön ödemeli kartlar ve hediye kartları satın alın", + "about_cake_pay": "Cake Pay, Amerika Birleşik Devletleri'ndeki 150.000'den fazla işyerinde anında harcanabilen sanal varlıklarla kolayca hediye kartları satın almanızı sağlar.", + "cake_pay_account_note": "Kartları görmek ve satın almak için sadece bir e-posta adresiyle kaydolun. Hatta bazıları indirimli olarak bile mevcut!", + "already_have_account": "Zaten bir hesabınız var mı?", + "create_account": "Hesap oluştur", + "privacy_policy": "Gizlilik Politikası", + "welcome_to_cakepay": "Cake Pay'e Hoş Geldiniz!", + "sign_up": "Kaydol", + "forgot_password": "Parolamı unuttum", + "reset_password": "Parolamı sıfırla", + "gift_cards": "Hediye kartları", + "setup_your_debit_card": "Banka kartını ayarla", + "no_id_required": "Kimlik gerekmez. Para yükleyin ve istediğiniz yerde harcayın", + "how_to_use_card": "Bu kart nasıl kullanılır", + "purchase_gift_card": "Hediye Kartı Satın Al", + "verification": "Doğrulama", + "fill_code": "Lütfen e-postanıza gelen doğrulama kodunu girin", + "dont_get_code": "Kod gelmedi mi?", + "resend_code": "Lütfen tekrar gönder", + "debit_card": "Ön ödemeli Kart", + "cakepay_prepaid_card": "CakePay Ön Ödemeli Kart", + "no_id_needed": "Kimlik gerekmez!", + "frequently_asked_questions": "Sıkça sorulan sorular", + "debit_card_terms": "Ödeme kartı numaranızın (ve kart numaranıza karşılık gelen kimlik bilgilerinin) bu dijital cüzdanda saklanması ve kullanılması, zaman zaman yürürlükte olan ödeme kartı veren kuruluşla yapılan ilgili kart sahibi sözleşmesinin Hüküm ve Koşullarına tabidir.", + "please_reference_document": "Daha fazla bilgi için lütfen aşağıdaki belgelere bakınız.", + "cardholder_agreement": "Kart Sahibi Sözleşmesi", + "e_sign_consent": "E-İmza Onayı", + "agree_and_continue": "Kabul Et & Devam Et", + "email_address": "E-posta Adresi", + "agree_to": "Hesap oluşturarak bunları kabul etmiş olursunuz ", + "and": "ve", + "enter_code": "Kodu girin", + "congratulations": "Tebrikler!", + "you_now_have_debit_card": "Artık bir ön ödemeli kartın var", + "min_amount" : "Min: ${value}", + "max_amount" : "Maks: ${value}", + "enter_amount": "Miktar Girin", + "billing_address_info": "Eğer fatura adresi istenirse, kargo adresinizi girin", + "order_physical_card": "Fiziksel Kart Siparişi", + "add_value": "Değer ekle", + "activate": "Aktifleştir", + "get_a": "Bir ", + "digital_and_physical_card": " Dijital para birimleri ile para yükleyebileceğiniz ve ek bilgiye gerek olmayan", + "get_card_note": " dijital ve fiziksel ön ödemeli banka kartı edinin!", + "signup_for_card_accept_terms": "Kart için kaydol ve koşulları kabul et.", + "add_fund_to_card": "Ön ödemeli kartlara para ekle (En fazla yüklenebilir tutar: ${değer})", + "use_card_info_two": "Paralar, dijital para birimlerinde değil, ön ödemeli hesapta tutulduğunda USD'ye dönüştürülür.", + "use_card_info_three": "Dijital kartı çevrimiçi olarak veya temassız ödeme yöntemleriyle kullanın.", + "optionally_order_card": "İsteğe bağlı olarak fiziksel bir kart sipariş edin.", + "hide_details" : "Detayları Gizle", + "show_details" : "Detayları Göster", + "upto": "Şu miktara kadar: ${value}", + "discount": "%${value} tasarruf et", + "gift_card_amount": "Hediye Kartı Tutarı", + "bill_amount": "Fatura Tutarı", + "you_pay": "Şu kadar ödeyeceksin: ", + "tip": "Bahşiş:", + "custom": "özel", + "by_cake_pay": "Cake Pay tarafından", + "expires": "Son kullanma tarihi", + "mm": "AA", + "yy": "YY", + "online": "Çevrimiçi", + "offline": "Çevrimdışı", + "gift_card_number": "Hediye kartı numarası", + "pin_number": "PIN kodu", + "total_saving": "Toplam Tasarruf", + "last_30_days": "Son 30 gün", + "avg_savings": "Ortalama Tasarruf", + "view_all": "Hepsini göster", + "active_cards": "Aktif kartlar", + "delete_account": "Hesabı sil", + "cards": "Kartlar", + "active": "Aktif", + "redeemed": "Kullanılmış", + "gift_card_balance_note": "Bakiyesi kalan olan hediye kartları burada görünecek", + "gift_card_redeemed_note": "Harcadığın hediye kartları burada görünecek", + "logout": "Çıkış yap", + "add_tip": "Bahşiş Ekle", + "percentageOf": "of ${amount}", + "is_percentage": "is", + "search_category": "Kategori ara", + "mark_as_redeemed": "Harcanmış olarak işaretle", + "more_options": "Daha Fazla Seçenek", + "awaiting_payment_confirmation": "Ödemenin onaylanması bekleniyor", + "transaction_sent_notice": "Ekran 1 dakika sonra ilerlemezse, blok gezgininden ve e-postanızdan kontrol edin.", + "agree": "Kabul Et", + "in_store": "Mağazada", + "generating_gift_card": "Hediye Kartı Oluşturuluyor", + "payment_was_received": "Ödemeniz alındı.", + "proceed_after_one_minute": "Ekran 1 dakika sonra ilerlemezse, e-postanızı kontrol edin.", + "order_id": "Sipariş ID'si", + "gift_card_is_generated": "Hediye Kartı oluşturuldu", + "open_gift_card": "Hediye Kartını Aç", + "contact_support": "Destek ile İletişime Geç", + "gift_cards_unavailable": "Hediye kartları şu anda yalnızca Monero, Bitcoin ve Litecoin ile satın alınabilir", + "introducing_cake_pay": "Cake Pay ile tanışın!", + "cake_pay_learn_more": "Uygulamada anında hediye kartları satın alın ve harcayın!\nDaha fazla öğrenmek için soldan sağa kaydır.", + "automatic": "Otomatik", + "fixed_pair_not_supported": "Bu sabit paritesi seçilen borsalarda desteklenmemekte", + "variable_pair_not_supported": "Bu değişken paritesi seçilen borsalarda desteklenmemekte", + "none_of_selected_providers_can_exchange": "Seçilen sağlayıcılardan hiçbiri bu takası yapamaz", + "choose_one": "Birini seç", + "choose_from_available_options": "Mevcut seçenekler arasından seçim yap:", + "custom_redeem_amount": "Özel Harcama Tutarı", + "add_custom_redemption": "Özel Bozdurma Ekle", + "remaining": "kalan", + "delete_wallet": "Cüzdanı sil", + "delete_wallet_confirm_message" : "${wallet_name} isimli cüzdanını silmek istediğinden emin misin?", + "low_fee": "Düşük komisyon", + "low_fee_alert": "Şu anda düşük bir ağ ücreti önceliği kullanıyorsunuz. Bu durum uzun beklemeler, farklı oranlar veya iptal edilen işlemlere neden olabilir. Daha iyi bir deneyim için daha yüksek bir ücret belirlemenizi öneririz.", + "ignor": "Yoksay", + "use_suggested": "Önerileni Kullan", + "do_not_share_warning_text" : "Bunları destek de dahil olmak üzere başka kimseyle paylaşma.\n\nParan çalınabilir ve çalınacaktır!", + "help": "yardım", + "all_transactions": "Tüm transferler", + "all_trades": "Tüm takaslar", + "connection_sync": "Bağlantı ve senkronizasyon", + "security_and_backup": "Güvenlik ve yedekleme", + "create_backup": "Yedek oluştur", + "privacy_settings": "Gizlilik ayarları", + "privacy": "Gizlilik", + "display_settings": "Görüntü ayarları", + "other_settings": "Diğer ayarlar", + "require_pin_after": "Şu kadar süre sonra PIN iste", + "always": "Her Zaman", + "minutes_to_pin_code": "${minute} dakika", + "disable_exchange": "Borsayı devre dışı bırak", + "advanced_privacy_settings": "Gelişmiş Gizlilik Ayarları", + "settings_can_be_changed_later": "Bu ayarlar daha sonra uygulama ayarlarından da değiştirilebilir", + "add_custom_node": "Yeni Özel Düğüm Ekleme", + "disable_fiat": "İtibari paraları devre dışı bırak", + "fiat_api": "İtibari Para API", + "disabled": "Devre dışı", + "enabled": "Etkin", + "tor_only": "Yalnızca Tor", + "unmatched_currencies": "Mevcut cüzdanınızın para birimi taranan QR ile eşleşmiyor", + "contact_list_contacts": "Rehberim", + "contact_list_wallets": "Cüzdanlarım" +} From d79b481d3e883a0718e5ec5c188f9d40c993c785 Mon Sep 17 00:00:00 2001 From: OmarHatem Date: Thu, 12 Jan 2023 17:08:38 +0200 Subject: [PATCH 23/43] Wrap sending error file in try/catch for unexpected behaviors [skip ci] --- lib/main.dart | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 126bd213f..78879bdb5 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -172,8 +172,9 @@ void _saveException(String? error, StackTrace? stackTrace) async { } }; - String separator = "\n\n==========================================================" + - "\n==========================================================\n\n"; + const String separator = + '''\n\n========================================================== + ==========================================================\n\n'''; await file.writeAsString( jsonEncode(exception) + separator, @@ -182,26 +183,28 @@ void _saveException(String? error, StackTrace? stackTrace) async { } void _sendExceptionFile() async { - final appDocDir = await getApplicationDocumentsDirectory(); + try { + final appDocDir = await getApplicationDocumentsDirectory(); - final file = File('${appDocDir.path}/error.txt'); + final file = File('${appDocDir.path}/error.txt'); - print(file.readAsStringSync()); + final MailOptions mailOptions = MailOptions( + subject: 'Mobile App Issue', + recipients: ['support@cakewallet.com'], + attachments: [file.path], + ); - final MailOptions mailOptions = MailOptions( - subject: 'Mobile App Issue', - recipients: ['support@cakewallet.com'], - attachments: [file.path], - ); + final result = await FlutterMailer.send(mailOptions); - final result = await FlutterMailer.send(mailOptions); - - // Clear file content if the error was sent or saved. - // On android we can't know if it was sent or saved - if (result.name == MailerResponse.sent.name || - result.name == MailerResponse.saved.name || - result.name == MailerResponse.android.name) { - file.writeAsString("", mode: FileMode.write); + // Clear file content if the error was sent or saved. + // On android we can't know if it was sent or saved + if (result.name == MailerResponse.sent.name || + result.name == MailerResponse.saved.name || + result.name == MailerResponse.android.name) { + file.writeAsString("", mode: FileMode.write); + } + } catch (e, s) { + _saveException(e.toString(), s); } } From 9bc337534cc32e84b862f14a7f8e0dbc8f22c1c2 Mon Sep 17 00:00:00 2001 From: Godwin Asuquo Date: Thu, 12 Jan 2023 18:06:07 +0100 Subject: [PATCH 24/43] Fix initial url --- lib/src/screens/buy/onramper_page.dart | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/src/screens/buy/onramper_page.dart b/lib/src/screens/buy/onramper_page.dart index 72fe59eee..eb0370a67 100644 --- a/lib/src/screens/buy/onramper_page.dart +++ b/lib/src/screens/buy/onramper_page.dart @@ -75,6 +75,11 @@ class OnRamperPageBodyState extends State { initialOptions: InAppWebViewGroupOptions( crossPlatform: InAppWebViewOptions(transparentBackground: true), ), + initialUrlRequest: URLRequest( + url: Uri.tryParse( + widget.uri.toString(), + ), + ), androidOnPermissionRequest: (_, __, resources) async { return PermissionRequestResponse( resources: resources, From d45adb8e5096fc0bccfad0418d6ad577c767c787 Mon Sep 17 00:00:00 2001 From: HardenedSteel Date: Thu, 12 Jan 2023 23:13:44 +0300 Subject: [PATCH 25/43] Update Turkish flag size --- assets/images/flags/tur.png | Bin 6608 -> 1037 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/images/flags/tur.png b/assets/images/flags/tur.png index 71a0d8ffcef38e9509f166a24290b584095c2e4c..166c6313a131fbe928dda9d4811f343a79cf7a6d 100644 GIT binary patch delta 992 zcmV<610Vd*GmQw47k?TE1^@s6!MV=%0004mX+uL$Nkc;*aB^>EX>4Tx04R}tkv&Mm zP!xqvQ>8^J4rUM$%ut;yh>AFB6^c+H)C#RSn7s54nlvOSE{=k0!NH%!s)LKOt`4q( zAov5~>f)s6A|>9}6k5c1;qgAsyXWxUeSlCeGu`eQ2Xw=+Qh$lKl*z72p;rVDfrv1M z6=s`rvYdo(ece+x)m@Bd`S<-FU+$pX(5t#oRhSR|GT9jtaRD_T176meA34ayfX9&4PpIP2vqYu%H-Fp@J? zmbp%A2nj4=34byqsHmcZG91KcH%PIOqVu?qf3WG7$)%F31V)YpRG>p?`oaI;_iXL_ zs zMIj2=tKi3?n_{6wK}9H9XvxBeRix653q@P8P%%;${s9F=G)8oxh*2SN%vYP4jEjLu zL}+46sx`T*_uxL>;c(8q2U^vnC6r&@%Rcj80=Frfu<n37dpLrbU;L@h>EDjCXBUO%FIJvWabqXGg{L^&ZU9ol z=SW|^wv4DG&~=1=HEo!>0fwszWf7Sw?6QCQHKZ0s1X`#ruM#G z`<%Hk1!nalR~;Il_)Vj2cQ^S*^JMSLG;TaeU7PK5;bp9{raEL?2lwL{9|2LsGkO6* zQECGDe-3>8?YokzckZazZ)UROre{f=Is=A5YUnIxI*lBE3N}`w`MD_0?to>iV~5F1 z-Ktur+Gx0Bz8cL`HKXZ?Ns5|gF}kM*rT=&Z3M>wa$t2pPa2eHRV}Tl<5+wTvp;!dK zbMZXt=|Kcn`!BuDfZvvfxwur*4E^I3>N<1)@0D>Js#;p1kDs8&;s~nSTA{b6$<55x zb%oZHN5u^{>#b0-Z!gl8E)YfZSe)F$s3nmvU+bPnTfw<$gLA8zwtfI^a>0r$-m)D4 O0000Nn~YUU~J8F zb`J1#c2+1T%1_J8No8Qrm{>c}+T(D5NZbEyUQ0t{bd(-VSZK9XVPC-&Es=#zD@3D8 z4R*fdo@JtdV0j8%t)Pg~7e3CjOW~vP_0;M2EyQKNeLmAM(eu2pdq-;$ z`)S!TUTt1Bo-&~!y`TO@P8U5FJ?E-d@78xG<0Z~zYoCr;ZrY`r( zE!j(EcwDYLblCpM57(lTPqdmRCNqYvm>^^SL;laawUIL<$|oP!vW)hrCa}AWi$BfS+#eqYk$MO+y{?#tvy+N;3=QMk0su1Pdpf-{y8yL z*e}jM#rSu-L&n*;(XVBe^Ei(P=vFcJ2O<~vB!wu*kwWvQ z1KXoO|NZ~Z@Ts+j;dB2KhW|f)qBx3GLydt|SDWGY<*O*-lyHa+QD#XAV7u!u0~0SV z*uD=H^$cGo&%|vv3os1+{9#~ZXJh#P=Pv`pUmzwCAcrW?xt=E@3GT>W=PxmQnKBE% zwLnLL0F$5~17AfULMu*D(t;sRbcnJjD!?`WzJ3$V#>HUd=3?Ls^kER_ZDn9!W@ZrRYyxLMavTY=gJ_51 zauB`5iFW9pd-vgPV%1cKvvD#0fBnYref<`O55?8sjP#+rj^Y28FASiPgB(C~8vOw* z%vp6n{b&XTp40?}uM3wEolZY>_9HSMnVE^`5d8wIasGY!1a>H^fi442P8yhvlK>S@ zK=AMVdxlRP{Rm~i@|PSyv_t>Cc**cSrvzy8Kd?Ol?F|fkRV56JoE#YTf@&vN^7#Mr z7g=Q}x}hkA8ZlKUXOJ(0;M86QCO$r}S>P&k&whqKH*YgA^6^5d&{gXhzHiuqZWqaX z Date: Fri, 13 Jan 2023 03:48:39 +0200 Subject: [PATCH 26/43] Update caching workflow operating system version [skip ci] --- .github/workflows/cache_dependencies.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cache_dependencies.yml b/.github/workflows/cache_dependencies.yml index 9d49ed3d8..4d2dc136c 100644 --- a/.github/workflows/cache_dependencies.yml +++ b/.github/workflows/cache_dependencies.yml @@ -7,7 +7,7 @@ on: jobs: test: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 From 3d5bce903d48c2706dc3c49dd16a8668998dbf86 Mon Sep 17 00:00:00 2001 From: Godwin Asuquo Date: Mon, 16 Jan 2023 17:46:04 +0100 Subject: [PATCH 27/43] Fix android permission request --- lib/src/screens/buy/onramper_page.dart | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/src/screens/buy/onramper_page.dart b/lib/src/screens/buy/onramper_page.dart index eb0370a67..2f7ab60cf 100644 --- a/lib/src/screens/buy/onramper_page.dart +++ b/lib/src/screens/buy/onramper_page.dart @@ -5,6 +5,7 @@ import 'package:cw_core/wallet_base.dart'; import 'package:flutter/material.dart'; import 'package:cake_wallet/.secrets.g.dart' as secrets; import 'package:flutter_inappwebview/flutter_inappwebview.dart'; +import 'package:permission_handler/permission_handler.dart'; class OnRamperPage extends BasePage { OnRamperPage({ @@ -81,6 +82,11 @@ class OnRamperPageBodyState extends State { ), ), androidOnPermissionRequest: (_, __, resources) async { + + if (await Permission.camera.status != PermissionStatus.granted){ + await Permission.camera.request(); + } + return PermissionRequestResponse( resources: resources, action: PermissionRequestResponseAction.GRANT, From aced1ed14719d4681b69601497a50bd6436d6cc3 Mon Sep 17 00:00:00 2001 From: Godwin Asuquo Date: Mon, 16 Jan 2023 19:25:29 +0100 Subject: [PATCH 28/43] Update permission status --- lib/src/screens/buy/onramper_page.dart | 41 +++++++++++--------------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/lib/src/screens/buy/onramper_page.dart b/lib/src/screens/buy/onramper_page.dart index 2f7ab60cf..ff6cfd931 100644 --- a/lib/src/screens/buy/onramper_page.dart +++ b/lib/src/screens/buy/onramper_page.dart @@ -8,9 +8,7 @@ import 'package:flutter_inappwebview/flutter_inappwebview.dart'; import 'package:permission_handler/permission_handler.dart'; class OnRamperPage extends BasePage { - OnRamperPage({ - required this.settingsStore, - required this.wallet}); + OnRamperPage({required this.settingsStore, required this.wallet}); final SettingsStore settingsStore; final WalletBase wallet; @@ -25,22 +23,20 @@ class OnRamperPage extends BasePage { settingsStore: settingsStore, wallet: wallet, darkMode: darkMode, - backgroundColor: darkMode - ? backgroundDarkColor - : backgroundLightColor, + backgroundColor: darkMode ? backgroundDarkColor : backgroundLightColor, supportSell: false, supportSwap: false); } } class OnRamperPageBody extends StatefulWidget { - OnRamperPageBody({ - required this.settingsStore, - required this.wallet, - required this.darkMode, - required this.supportSell, - required this.supportSwap, - required this.backgroundColor}); + OnRamperPageBody( + {required this.settingsStore, + required this.wallet, + required this.darkMode, + required this.supportSell, + required this.supportSwap, + required this.backgroundColor}); static const baseUrl = 'widget.onramper.com'; final SettingsStore settingsStore; @@ -50,18 +46,15 @@ class OnRamperPageBody extends StatefulWidget { final bool supportSell; final bool supportSwap; - Uri get uri - => Uri.https( - baseUrl, - '', - { + Uri get uri => Uri.https(baseUrl, '', { 'apiKey': secrets.onramperApiKey, 'defaultCrypto': wallet.currency.title, 'defaultFiat': settingsStore.fiatCurrency.title, 'wallets': '${wallet.currency.title}:${wallet.walletAddresses.address}', 'darkMode': darkMode.toString(), 'supportSell': supportSell.toString(), - 'supportSwap': supportSwap.toString()}); + 'supportSwap': supportSwap.toString() + }); @override OnRamperPageBodyState createState() => OnRamperPageBodyState(); @@ -82,14 +75,16 @@ class OnRamperPageBodyState extends State { ), ), androidOnPermissionRequest: (_, __, resources) async { - - if (await Permission.camera.status != PermissionStatus.granted){ - await Permission.camera.request(); + bool permissionNotGranted = await Permission.camera.status != PermissionStatus.granted; + if (permissionNotGranted) { + permissionNotGranted = await Permission.camera.request().isGranted; } return PermissionRequestResponse( resources: resources, - action: PermissionRequestResponseAction.GRANT, + action: permissionNotGranted + ? PermissionRequestResponseAction.DENY + : PermissionRequestResponseAction.GRANT, ); }, ); From 1b92a868429ce4c5e148b5de2583e13892413310 Mon Sep 17 00:00:00 2001 From: Godwin Asuquo Date: Wed, 18 Jan 2023 09:01:11 +0100 Subject: [PATCH 29/43] Update permission check logic --- android/.project | 11 +++++ .../org.eclipse.buildship.core.prefs | 13 ++++- android/app/.classpath | 2 +- android/app/.project | 11 +++++ cw_monero/android/.classpath | 2 +- cw_monero/android/.project | 11 +++++ ios/Podfile | 2 +- ios/Podfile.lock | 48 ++++++++++++------- lib/src/screens/buy/onramper_page.dart | 16 +++---- 9 files changed, 86 insertions(+), 30 deletions(-) diff --git a/android/.project b/android/.project index 17c95d4b1..cc3f5ca16 100644 --- a/android/.project +++ b/android/.project @@ -14,4 +14,15 @@ org.eclipse.buildship.core.gradleprojectnature + + + 1673893500381 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/android/.settings/org.eclipse.buildship.core.prefs b/android/.settings/org.eclipse.buildship.core.prefs index 9d2efc8e7..52768efe3 100644 --- a/android/.settings/org.eclipse.buildship.core.prefs +++ b/android/.settings/org.eclipse.buildship.core.prefs @@ -1,2 +1,13 @@ +arguments=--init-script /var/folders/_g/6xnbffg10l741qh63jr5cds80000gp/T/d146c9752a26f79b52047fb6dc6ed385d064e120494f96f08ca63a317c41f94c.gradle --init-script /var/folders/_g/6xnbffg10l741qh63jr5cds80000gp/T/52cde0cfcf3e28b8b7510e992210d9614505e0911af0c190bd590d7158574963.gradle +auto.sync=false +build.scans.enabled=false +connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER) connection.project.dir= -eclipse.preferences.version=1 \ No newline at end of file +eclipse.preferences.version=1 +gradle.user.home= +java.home=/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home +jvm.arguments= +offline.mode=false +override.workspace.settings=true +show.console.view=true +show.executions.view=true diff --git a/android/app/.classpath b/android/app/.classpath index 4a04201ca..eb19361b5 100644 --- a/android/app/.classpath +++ b/android/app/.classpath @@ -1,6 +1,6 @@ - + diff --git a/android/app/.project b/android/app/.project index ac485d7c3..21dd86b97 100644 --- a/android/app/.project +++ b/android/app/.project @@ -20,4 +20,15 @@ org.eclipse.jdt.core.javanature org.eclipse.buildship.core.gradleprojectnature + + + 1673884227808 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/cw_monero/android/.classpath b/cw_monero/android/.classpath index 4a04201ca..eb19361b5 100644 --- a/cw_monero/android/.classpath +++ b/cw_monero/android/.classpath @@ -1,6 +1,6 @@ - + diff --git a/cw_monero/android/.project b/cw_monero/android/.project index e0799208f..e933af770 100644 --- a/cw_monero/android/.project +++ b/cw_monero/android/.project @@ -20,4 +20,15 @@ org.eclipse.jdt.core.javanature org.eclipse.buildship.core.gradleprojectnature + + + 1673884227818 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/ios/Podfile b/ios/Podfile index b29d40484..8ced976e3 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '11.0' +platform :ios, '13.0' source 'https://github.com/CocoaPods/Specs.git' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 3a810430d..c3ebfa6e2 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -7,7 +7,7 @@ PODS: - connectivity (0.0.1): - Flutter - Reachability - - CryptoSwift (1.3.2) + - CryptoSwift (1.6.0) - cw_haven (0.0.1): - cw_haven/Boost (= 0.0.1) - cw_haven/Haven (= 0.0.1) @@ -67,14 +67,14 @@ PODS: - Flutter - devicelocale (0.0.1): - Flutter - - DKImagePickerController/Core (4.3.2): + - DKImagePickerController/Core (4.3.4): - DKImagePickerController/ImageDataManager - DKImagePickerController/Resource - - DKImagePickerController/ImageDataManager (4.3.2) - - DKImagePickerController/PhotoGallery (4.3.2): + - DKImagePickerController/ImageDataManager (4.3.4) + - DKImagePickerController/PhotoGallery (4.3.4): - DKImagePickerController/Core - DKPhotoGallery - - DKImagePickerController/Resource (4.3.2) + - DKImagePickerController/Resource (4.3.4) - DKPhotoGallery (0.0.17): - DKPhotoGallery/Core (= 0.0.17) - DKPhotoGallery/Model (= 0.0.17) @@ -102,11 +102,19 @@ PODS: - DKImagePickerController/PhotoGallery - Flutter - Flutter (1.0.0) + - flutter_inappwebview (0.0.1): + - Flutter + - flutter_inappwebview/Core (= 0.0.1) + - OrderedSet (~> 5.0) + - flutter_inappwebview/Core (0.0.1): + - Flutter + - OrderedSet (~> 5.0) - flutter_secure_storage (3.3.1): - Flutter - local_auth_ios (0.0.1): - Flutter - MTBBarcodeScanner (5.0.11) + - OrderedSet (5.0.0) - package_info (0.0.1): - Flutter - path_provider_ios (0.0.1): @@ -116,15 +124,15 @@ PODS: - platform_device_id (0.0.1): - Flutter - Reachability (3.2) - - SDWebImage (5.9.1): - - SDWebImage/Core (= 5.9.1) - - SDWebImage/Core (5.9.1) + - SDWebImage (5.14.2): + - SDWebImage/Core (= 5.14.2) + - SDWebImage/Core (5.14.2) - share_plus (0.0.1): - Flutter - shared_preferences_ios (0.0.1): - Flutter - - SwiftProtobuf (1.18.0) - - SwiftyGif (5.3.0) + - SwiftProtobuf (1.20.3) + - SwiftyGif (5.4.3) - uni_links (0.0.1): - Flutter - UnstoppableDomainsResolution (4.0.0): @@ -147,6 +155,7 @@ DEPENDENCIES: - devicelocale (from `.symlinks/plugins/devicelocale/ios`) - file_picker (from `.symlinks/plugins/file_picker/ios`) - Flutter (from `Flutter`) + - flutter_inappwebview (from `.symlinks/plugins/flutter_inappwebview/ios`) - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`) - local_auth_ios (from `.symlinks/plugins/local_auth_ios/ios`) - package_info (from `.symlinks/plugins/package_info/ios`) @@ -167,6 +176,7 @@ SPEC REPOS: - DKImagePickerController - DKPhotoGallery - MTBBarcodeScanner + - OrderedSet - Reachability - SDWebImage - SwiftProtobuf @@ -194,6 +204,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/file_picker/ios" Flutter: :path: Flutter + flutter_inappwebview: + :path: ".symlinks/plugins/flutter_inappwebview/ios" flutter_secure_storage: :path: ".symlinks/plugins/flutter_secure_storage/ios" local_auth_ios: @@ -221,35 +233,37 @@ SPEC CHECKSUMS: barcode_scan2: 0af2bb63c81b4565aab6cd78278e4c0fa136dbb0 BigInt: f668a80089607f521586bbe29513d708491ef2f7 connectivity: c4130b2985d4ef6fd26f9702e886bd5260681467 - CryptoSwift: 093499be1a94b0cae36e6c26b70870668cb56060 + CryptoSwift: 562f8eceb40e80796fffc668b0cad9313284cfa6 cw_haven: b3e54e1fbe7b8e6fda57a93206bc38f8e89b898a cw_monero: 4cf3b96f2da8e95e2ef7d6703dd4d2c509127b7d cw_shared_external: 2972d872b8917603478117c9957dfca611845a92 device_display_brightness: 1510e72c567a1f6ce6ffe393dcd9afd1426034f7 device_info: d7d233b645a32c40dfdc212de5cf646ca482f175 devicelocale: b22617f40038496deffba44747101255cee005b0 - DKImagePickerController: b5eb7f7a388e4643264105d648d01f727110fc3d + DKImagePickerController: b512c28220a2b8ac7419f21c491fc8534b7601ac DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179 file_picker: 817ab1d8cd2da9d2da412a417162deee3500fc95 Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 + flutter_inappwebview: bfd58618f49dc62f2676de690fc6dcda1d6c3721 flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec local_auth_ios: 0d333dde7780f669e66f19d2ff6005f3ea84008d MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb + OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62 path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02 permission_handler_apple: 44366e37eaf29454a1e7b1b7d736c2cceaeb17ce platform_device_id: 81b3e2993881f87d0c82ef151dc274df4869aef5 Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96 - SDWebImage: a990c053fff71e388a10f3357edb0be17929c9c5 + SDWebImage: b9a731e1d6307f44ca703b3976d18c24ca561e84 share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68 shared_preferences_ios: 548a61f8053b9b8a49ac19c1ffbc8b92c50d68ad - SwiftProtobuf: c3c12645230d9b09c72267e0de89468c5543bd86 - SwiftyGif: e466e86c660d343357ab944a819a101c4127cb40 + SwiftProtobuf: b02b5075dcf60c9f5f403000b3b0c202a11b6ae1 + SwiftyGif: 6c3eafd0ce693cad58bb63d2b2fb9bacb8552780 uni_links: d97da20c7701486ba192624d99bffaaffcfc298a UnstoppableDomainsResolution: c3c67f4d0a5e2437cb00d4bd50c2e00d6e743841 url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de webview_flutter_wkwebview: b7e70ef1ddded7e69c796c7390ee74180182971f -PODFILE CHECKSUM: ae71bdf0eb731a1ffc399c122f6aa4dea0cb5f6f +PODFILE CHECKSUM: bf84c4e13798f92b867c8ebcbd04acc127fec6be -COCOAPODS: 1.11.3 +COCOAPODS: 1.11.2 diff --git a/lib/src/screens/buy/onramper_page.dart b/lib/src/screens/buy/onramper_page.dart index ff6cfd931..094ff3b3c 100644 --- a/lib/src/screens/buy/onramper_page.dart +++ b/lib/src/screens/buy/onramper_page.dart @@ -70,21 +70,19 @@ class OnRamperPageBodyState extends State { crossPlatform: InAppWebViewOptions(transparentBackground: true), ), initialUrlRequest: URLRequest( - url: Uri.tryParse( - widget.uri.toString(), - ), + url: widget.uri, ), androidOnPermissionRequest: (_, __, resources) async { - bool permissionNotGranted = await Permission.camera.status != PermissionStatus.granted; - if (permissionNotGranted) { - permissionNotGranted = await Permission.camera.request().isGranted; + bool permissionGranted = await Permission.camera.status == PermissionStatus.granted; + if (!permissionGranted) { + permissionGranted = await Permission.camera.request().isGranted; } return PermissionRequestResponse( resources: resources, - action: permissionNotGranted - ? PermissionRequestResponseAction.DENY - : PermissionRequestResponseAction.GRANT, + action: permissionGranted + ? PermissionRequestResponseAction.GRANT + : PermissionRequestResponseAction.DENY, ); }, ); From 2393fca435aa38ba6ed68d683d583ccd05c59eaf Mon Sep 17 00:00:00 2001 From: Godwin Asuquo Date: Wed, 18 Jan 2023 09:21:07 +0100 Subject: [PATCH 30/43] [skip ci] Update permission check logic --- lib/src/screens/buy/buy_webview_page.dart | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/src/screens/buy/buy_webview_page.dart b/lib/src/screens/buy/buy_webview_page.dart index c51aaee83..b19a112fc 100644 --- a/lib/src/screens/buy/buy_webview_page.dart +++ b/lib/src/screens/buy/buy_webview_page.dart @@ -91,14 +91,13 @@ class BuyWebViewPageBodyState extends State { return; } - final url = await _webViewController!.getUrl(); - final urlString = url.toString(); + final url = (await _webViewController!.getUrl())?.toString(); if (url == null) { throw Exception('_saveOrder: Url is null'); } - if (urlString.toString().contains(keyword)) { - final urlParts = urlString.split(splitSymbol); + if (url.contains(keyword)) { + final urlParts = url.split(splitSymbol); orderId = urlParts.last; widget.ordersStore.orderId = orderId; From 2d81a9b89a70ca8b8aaeadeefee7127545172e7f Mon Sep 17 00:00:00 2001 From: Godwin Asuquo Date: Wed, 18 Jan 2023 16:52:14 +0100 Subject: [PATCH 31/43] remove unrelated files --- android/.project | 11 ----- .../org.eclipse.buildship.core.prefs | 12 +---- android/app/.classpath | 2 +- android/app/.project | 11 ----- cw_monero/android/.classpath | 2 +- cw_monero/android/.project | 11 ----- ios/Podfile | 2 +- ios/Podfile.lock | 48 +++++++------------ 8 files changed, 21 insertions(+), 78 deletions(-) diff --git a/android/.project b/android/.project index cc3f5ca16..17c95d4b1 100644 --- a/android/.project +++ b/android/.project @@ -14,15 +14,4 @@ org.eclipse.buildship.core.gradleprojectnature - - - 1673893500381 - - 30 - - org.eclipse.core.resources.regexFilterMatcher - node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ - - - diff --git a/android/.settings/org.eclipse.buildship.core.prefs b/android/.settings/org.eclipse.buildship.core.prefs index 52768efe3..67daf4ebf 100644 --- a/android/.settings/org.eclipse.buildship.core.prefs +++ b/android/.settings/org.eclipse.buildship.core.prefs @@ -1,13 +1,3 @@ -arguments=--init-script /var/folders/_g/6xnbffg10l741qh63jr5cds80000gp/T/d146c9752a26f79b52047fb6dc6ed385d064e120494f96f08ca63a317c41f94c.gradle --init-script /var/folders/_g/6xnbffg10l741qh63jr5cds80000gp/T/52cde0cfcf3e28b8b7510e992210d9614505e0911af0c190bd590d7158574963.gradle -auto.sync=false -build.scans.enabled=false -connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER) connection.project.dir= eclipse.preferences.version=1 -gradle.user.home= -java.home=/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home -jvm.arguments= -offline.mode=false -override.workspace.settings=true -show.console.view=true -show.executions.view=true + diff --git a/android/app/.classpath b/android/app/.classpath index eb19361b5..4a04201ca 100644 --- a/android/app/.classpath +++ b/android/app/.classpath @@ -1,6 +1,6 @@ - + diff --git a/android/app/.project b/android/app/.project index 21dd86b97..ac485d7c3 100644 --- a/android/app/.project +++ b/android/app/.project @@ -20,15 +20,4 @@ org.eclipse.jdt.core.javanature org.eclipse.buildship.core.gradleprojectnature - - - 1673884227808 - - 30 - - org.eclipse.core.resources.regexFilterMatcher - node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ - - - diff --git a/cw_monero/android/.classpath b/cw_monero/android/.classpath index eb19361b5..4a04201ca 100644 --- a/cw_monero/android/.classpath +++ b/cw_monero/android/.classpath @@ -1,6 +1,6 @@ - + diff --git a/cw_monero/android/.project b/cw_monero/android/.project index e933af770..e0799208f 100644 --- a/cw_monero/android/.project +++ b/cw_monero/android/.project @@ -20,15 +20,4 @@ org.eclipse.jdt.core.javanature org.eclipse.buildship.core.gradleprojectnature - - - 1673884227818 - - 30 - - org.eclipse.core.resources.regexFilterMatcher - node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ - - - diff --git a/ios/Podfile b/ios/Podfile index 8ced976e3..b29d40484 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '13.0' +platform :ios, '11.0' source 'https://github.com/CocoaPods/Specs.git' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. diff --git a/ios/Podfile.lock b/ios/Podfile.lock index c3ebfa6e2..3a810430d 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -7,7 +7,7 @@ PODS: - connectivity (0.0.1): - Flutter - Reachability - - CryptoSwift (1.6.0) + - CryptoSwift (1.3.2) - cw_haven (0.0.1): - cw_haven/Boost (= 0.0.1) - cw_haven/Haven (= 0.0.1) @@ -67,14 +67,14 @@ PODS: - Flutter - devicelocale (0.0.1): - Flutter - - DKImagePickerController/Core (4.3.4): + - DKImagePickerController/Core (4.3.2): - DKImagePickerController/ImageDataManager - DKImagePickerController/Resource - - DKImagePickerController/ImageDataManager (4.3.4) - - DKImagePickerController/PhotoGallery (4.3.4): + - DKImagePickerController/ImageDataManager (4.3.2) + - DKImagePickerController/PhotoGallery (4.3.2): - DKImagePickerController/Core - DKPhotoGallery - - DKImagePickerController/Resource (4.3.4) + - DKImagePickerController/Resource (4.3.2) - DKPhotoGallery (0.0.17): - DKPhotoGallery/Core (= 0.0.17) - DKPhotoGallery/Model (= 0.0.17) @@ -102,19 +102,11 @@ PODS: - DKImagePickerController/PhotoGallery - Flutter - Flutter (1.0.0) - - flutter_inappwebview (0.0.1): - - Flutter - - flutter_inappwebview/Core (= 0.0.1) - - OrderedSet (~> 5.0) - - flutter_inappwebview/Core (0.0.1): - - Flutter - - OrderedSet (~> 5.0) - flutter_secure_storage (3.3.1): - Flutter - local_auth_ios (0.0.1): - Flutter - MTBBarcodeScanner (5.0.11) - - OrderedSet (5.0.0) - package_info (0.0.1): - Flutter - path_provider_ios (0.0.1): @@ -124,15 +116,15 @@ PODS: - platform_device_id (0.0.1): - Flutter - Reachability (3.2) - - SDWebImage (5.14.2): - - SDWebImage/Core (= 5.14.2) - - SDWebImage/Core (5.14.2) + - SDWebImage (5.9.1): + - SDWebImage/Core (= 5.9.1) + - SDWebImage/Core (5.9.1) - share_plus (0.0.1): - Flutter - shared_preferences_ios (0.0.1): - Flutter - - SwiftProtobuf (1.20.3) - - SwiftyGif (5.4.3) + - SwiftProtobuf (1.18.0) + - SwiftyGif (5.3.0) - uni_links (0.0.1): - Flutter - UnstoppableDomainsResolution (4.0.0): @@ -155,7 +147,6 @@ DEPENDENCIES: - devicelocale (from `.symlinks/plugins/devicelocale/ios`) - file_picker (from `.symlinks/plugins/file_picker/ios`) - Flutter (from `Flutter`) - - flutter_inappwebview (from `.symlinks/plugins/flutter_inappwebview/ios`) - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`) - local_auth_ios (from `.symlinks/plugins/local_auth_ios/ios`) - package_info (from `.symlinks/plugins/package_info/ios`) @@ -176,7 +167,6 @@ SPEC REPOS: - DKImagePickerController - DKPhotoGallery - MTBBarcodeScanner - - OrderedSet - Reachability - SDWebImage - SwiftProtobuf @@ -204,8 +194,6 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/file_picker/ios" Flutter: :path: Flutter - flutter_inappwebview: - :path: ".symlinks/plugins/flutter_inappwebview/ios" flutter_secure_storage: :path: ".symlinks/plugins/flutter_secure_storage/ios" local_auth_ios: @@ -233,37 +221,35 @@ SPEC CHECKSUMS: barcode_scan2: 0af2bb63c81b4565aab6cd78278e4c0fa136dbb0 BigInt: f668a80089607f521586bbe29513d708491ef2f7 connectivity: c4130b2985d4ef6fd26f9702e886bd5260681467 - CryptoSwift: 562f8eceb40e80796fffc668b0cad9313284cfa6 + CryptoSwift: 093499be1a94b0cae36e6c26b70870668cb56060 cw_haven: b3e54e1fbe7b8e6fda57a93206bc38f8e89b898a cw_monero: 4cf3b96f2da8e95e2ef7d6703dd4d2c509127b7d cw_shared_external: 2972d872b8917603478117c9957dfca611845a92 device_display_brightness: 1510e72c567a1f6ce6ffe393dcd9afd1426034f7 device_info: d7d233b645a32c40dfdc212de5cf646ca482f175 devicelocale: b22617f40038496deffba44747101255cee005b0 - DKImagePickerController: b512c28220a2b8ac7419f21c491fc8534b7601ac + DKImagePickerController: b5eb7f7a388e4643264105d648d01f727110fc3d DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179 file_picker: 817ab1d8cd2da9d2da412a417162deee3500fc95 Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 - flutter_inappwebview: bfd58618f49dc62f2676de690fc6dcda1d6c3721 flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec local_auth_ios: 0d333dde7780f669e66f19d2ff6005f3ea84008d MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb - OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62 path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02 permission_handler_apple: 44366e37eaf29454a1e7b1b7d736c2cceaeb17ce platform_device_id: 81b3e2993881f87d0c82ef151dc274df4869aef5 Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96 - SDWebImage: b9a731e1d6307f44ca703b3976d18c24ca561e84 + SDWebImage: a990c053fff71e388a10f3357edb0be17929c9c5 share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68 shared_preferences_ios: 548a61f8053b9b8a49ac19c1ffbc8b92c50d68ad - SwiftProtobuf: b02b5075dcf60c9f5f403000b3b0c202a11b6ae1 - SwiftyGif: 6c3eafd0ce693cad58bb63d2b2fb9bacb8552780 + SwiftProtobuf: c3c12645230d9b09c72267e0de89468c5543bd86 + SwiftyGif: e466e86c660d343357ab944a819a101c4127cb40 uni_links: d97da20c7701486ba192624d99bffaaffcfc298a UnstoppableDomainsResolution: c3c67f4d0a5e2437cb00d4bd50c2e00d6e743841 url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de webview_flutter_wkwebview: b7e70ef1ddded7e69c796c7390ee74180182971f -PODFILE CHECKSUM: bf84c4e13798f92b867c8ebcbd04acc127fec6be +PODFILE CHECKSUM: ae71bdf0eb731a1ffc399c122f6aa4dea0cb5f6f -COCOAPODS: 1.11.2 +COCOAPODS: 1.11.3 From e71e8c83501c79041aaee3b4ee4370d843b89bc6 Mon Sep 17 00:00:00 2001 From: Godwin Asuquo Date: Wed, 18 Jan 2023 17:01:09 +0100 Subject: [PATCH 32/43] remove unrelated files --- android/.settings/org.eclipse.buildship.core.prefs | 3 +-- lib/main.dart | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/android/.settings/org.eclipse.buildship.core.prefs b/android/.settings/org.eclipse.buildship.core.prefs index 67daf4ebf..9d2efc8e7 100644 --- a/android/.settings/org.eclipse.buildship.core.prefs +++ b/android/.settings/org.eclipse.buildship.core.prefs @@ -1,3 +1,2 @@ connection.project.dir= -eclipse.preferences.version=1 - +eclipse.preferences.version=1 \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index 0f5570c66..a9edfed33 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -46,6 +46,7 @@ final RouteObserver routeObserver = RouteObserver(); Future main() async { try { WidgetsFlutterBinding.ensureInitialized(); + final appDir = await getApplicationDocumentsDirectory(); await Hive.close(); Hive.init(appDir.path); From fa16d5e278e273cc816d2dd97459fc277a1f88b4 Mon Sep 17 00:00:00 2001 From: Godwin Asuquo Date: Wed, 18 Jan 2023 17:11:35 +0100 Subject: [PATCH 33/43] [skip ci] remove unrelated files --- lib/main.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/main.dart b/lib/main.dart index a9edfed33..f3fb3acdd 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -46,7 +46,7 @@ final RouteObserver routeObserver = RouteObserver(); Future main() async { try { WidgetsFlutterBinding.ensureInitialized(); - + final appDir = await getApplicationDocumentsDirectory(); await Hive.close(); Hive.init(appDir.path); From 131f085f4c3ff3ad8de5d8391b35b2d409530963 Mon Sep 17 00:00:00 2001 From: Omar Hatem Date: Wed, 18 Jan 2023 21:55:01 +0200 Subject: [PATCH 34/43] Trigger workflow build --- lib/src/screens/buy/onramper_page.dart | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/src/screens/buy/onramper_page.dart b/lib/src/screens/buy/onramper_page.dart index 094ff3b3c..4973cef0b 100644 --- a/lib/src/screens/buy/onramper_page.dart +++ b/lib/src/screens/buy/onramper_page.dart @@ -69,9 +69,7 @@ class OnRamperPageBodyState extends State { initialOptions: InAppWebViewGroupOptions( crossPlatform: InAppWebViewOptions(transparentBackground: true), ), - initialUrlRequest: URLRequest( - url: widget.uri, - ), + initialUrlRequest: URLRequest(url: widget.uri), androidOnPermissionRequest: (_, __, resources) async { bool permissionGranted = await Permission.camera.status == PermissionStatus.granted; if (!permissionGranted) { From e022d4dfcf1f60811bbae5086b358c908b4d30e2 Mon Sep 17 00:00:00 2001 From: qweewqi <102307285+qweewqi@users.noreply.github.com> Date: Thu, 19 Jan 2023 03:36:48 +0200 Subject: [PATCH 35/43] mmr lang --- README.md | 1 + assets/images/flags/mmr.png | Bin 0 -> 902 bytes lib/entities/language_service.dart | 6 +- res/values/strings_my.arb | 684 +++++++++++++++++++++++++++++ 4 files changed, 689 insertions(+), 2 deletions(-) create mode 100644 assets/images/flags/mmr.png create mode 100644 res/values/strings_my.arb diff --git a/README.md b/README.md index 655ba8acc..ebeb9d43d 100644 --- a/README.md +++ b/README.md @@ -101,6 +101,7 @@ Edit the applicable `strings_XX.arb` file in `res/values/` and open a pull reque - Chinese - Korean - Arabic +- Burmese ## Add a new language diff --git a/assets/images/flags/mmr.png b/assets/images/flags/mmr.png new file mode 100644 index 0000000000000000000000000000000000000000..7fc6e1661e30095a674fc29adc152e21974b3022 GIT binary patch literal 902 zcmV;119|+3P)OEPLqO5J6qpmWOs7&Dvy;(WFV*`{($Ot;@~U{9B*{_l3i~zr*j( z_xHW`oO>=j#{U$e)Nn2_4@7{>#?Vqf%GK{hqD0PH(MRPn77 z<%&KWY`_x%1eo(pm7#g51W*9cbsW)i3JOij43sG<9!6gUv;ZB$(9(-&JzA8ZNm96| zU0kkh4XH9)AjlS$2!#e2^!5U9+4Cleg>wY`n@~!X`PYhjn~#g=fz&|7Fo8fyNix64 zav=pmE0$F@WZ~1jA24{w_n-EUI5>5#sIqJ+wx?{oEgfv}b)%F*-PdwCrXEbRLo+Le ztvahnCHds}|!purjnt z4_Z}4OKR8b31~tiXat#Dn56&5ehy6@Vm3QlHEywx8tB{UcWs<+DH?5>J^fvxfWY5Ttq(`HR=ks^Eph>&(N3e zugzJ1PooMe7`t`?@NWNmgunU)>*fMRsJ*WIBkK`8d{(PHix7}rgoE!ucq;(8ugA%p z_!yPT6F7B}wv!(cFanJ52Aur@+QXonhKRb}gk<#9C2Bl5sZ|q|&C>b%1afmH>7fx; zE}Td2*@iH5%$YczffosVKZXnixwU5qOcT*sc}prmCVXXT(_N$S51ehG$D-uF`Hp1o zOPGKCixJz22>8M4#fZItH9JQt_8QBdk7C54U|9{9Ygkc)0LQ^uNFqW(gue~!vV|fg ztgPUqZXv^)!Q%m^=11>RwDDtzQXmAfyQ^rIlY}BE!$3y5@7WEaoM?ukqL0F_$VPK` cj7J0i0iaD6g5?oxDgXcg07*qoM6N<$g0{o7^8f$< literal 0 HcmV?d00001 diff --git a/lib/entities/language_service.dart b/lib/entities/language_service.dart index 6ef876abd..a06040d19 100644 --- a/lib/entities/language_service.dart +++ b/lib/entities/language_service.dart @@ -20,7 +20,8 @@ class LanguageService { 'hr': 'Hrvatski (Croatian)', 'it': 'Italiano (Italian)', 'th': 'ภาษาไทย (Thai)', - 'ar': 'العربية (Arabic)' + 'ar': 'العربية (Arabic)', + 'my': 'မြန်မာ (Burmese)' }; static const Map localeCountryCode = { @@ -40,7 +41,8 @@ class LanguageService { 'hr': 'hrv', 'it': 'ita', 'th': 'tha', - 'ar': 'sau' + 'ar': 'sau', + 'my': 'mmr' }; static final list = {}; diff --git a/res/values/strings_my.arb b/res/values/strings_my.arb new file mode 100644 index 000000000..a2b1cc702 --- /dev/null +++ b/res/values/strings_my.arb @@ -0,0 +1,684 @@ +{ + "welcome" : "Welcome to", + "cake_wallet" : "Cake Wallet", + "first_wallet_text" : "Awesome wallet for Monero, Bitcoin, Litecoin, and Haven", + "please_make_selection" : "Please make a selection below to create or recover your wallet.", + "create_new" : "Create New Wallet", + "restore_wallet" : "Restore Wallet", + + "monero_com": "Monero.com by Cake Wallet", + "monero_com_wallet_text": "Awesome wallet for Monero", + + "haven_app": "Haven by Cake Wallet", + "haven_app_wallet_text": "Awesome wallet for Haven", + + "accounts" : "Accounts", + "edit" : "Edit", + "account" : "Account", + "add" : "Add", + + + "address_book" : "Address Book", + "contact" : "Contact", + "please_select" : "Please select:", + "cancel" : "Cancel", + "ok" : "OK", + "contact_name" : "Contact Name", + "reset" : "Reset", + "save" : "Save", + "address_remove_contact" : "Remove contact", + "address_remove_content" : "Are you sure that you want to remove selected contact?", + + + "authenticated" : "Authenticated", + "authentication" : "Authentication", + "failed_authentication" : "Failed authentication. ${state_error}", + + + "wallet_menu" : "Menu", + "Blocks_remaining" : "${status} Blocks Remaining", + "please_try_to_connect_to_another_node" : "Please try to connect to another node", + "xmr_hidden" : "Hidden", + "xmr_available_balance" : "Available Balance", + "xmr_full_balance" : "Full Balance", + "send" : "Send", + "receive" : "Receive", + "transactions" : "Transactions", + "incoming" : "Incoming", + "outgoing" : "Outgoing", + "transactions_by_date" : "Transactions by date", + "trades" : "Trades", + "filter_by": "Filter by", + "today" : "Today", + "yesterday" : "Yesterday", + "received" : "Received", + "sent" : "Sent", + "pending" : " (pending)", + "rescan" : "Rescan", + "reconnect" : "Reconnect", + "wallets" : "Wallets", + "show_seed" : "Show seed", + "show_keys" : "Show seed/keys", + "address_book_menu" : "Address book", + "reconnection" : "Reconnection", + "reconnect_alert_text" : "Are you sure you want to reconnect?", + + + "exchange" : "Exchange", + "clear" : "Clear", + "refund_address" : "Refund address", + "change_exchange_provider" : "Change Exchange Provider", + "you_will_send" : "Convert from", + "you_will_get" : "Convert to", + "amount_is_guaranteed" : "The receive amount is guaranteed", + "amount_is_estimate" : "The receive amount is an estimate", + "powered_by" : "Powered by ${title}", + "error" : "Error", + "estimated" : "Estimated", + "min_value" : "Min: ${value} ${currency}", + "max_value" : "Max: ${value} ${currency}", + "change_currency" : "Change Currency", + "overwrite_amount" : "Overwrite amount", + "qr_payment_amount" : "This QR code contains a payment amount. Do you want to overwrite the current value?", + + "copy_id" : "Copy ID", + "exchange_result_write_down_trade_id" : "Please copy or write down the trade ID to continue.", + "trade_id" : "Trade ID:", + "copied_to_clipboard" : "Copied to Clipboard", + "saved_the_trade_id" : "I've saved the trade ID", + "fetching" : "Fetching", + "id" : "ID: ", + "amount" : "Amount: ", + "payment_id" : "Payment ID: ", + "status" : "Status: ", + "offer_expires_in" : "Offer expires in: ", + "trade_is_powered_by" : "This trade is powered by ${provider}", + "copy_address" : "Copy Address", + "exchange_result_confirm" : "By pressing confirm, you will be sending ${fetchingLabel} ${from} from your wallet called ${walletName} to the address shown below. Or you can send from your external wallet to the below address/QR code.\n\nPlease press confirm to continue or go back to change the amounts.", + "exchange_result_description" : "You must send a minimum of ${fetchingLabel} ${from} to the address shown on the next page. If you send an amount lower than ${fetchingLabel} ${from} it may not get converted and it may not be refunded.", + "exchange_result_write_down_ID" : "*Please copy or write down your ID shown above.", + "confirm" : "Confirm", + "confirm_sending" : "Confirm sending", + "commit_transaction_amount_fee" : "Commit transaction\nAmount: ${amount}\nFee: ${fee}", + "sending" : "Sending", + "transaction_sent" : "Transaction sent!", + "expired" : "Expired", + "time" : "${minutes}m ${seconds}s", + "send_xmr" : "Send XMR", + "exchange_new_template" : "New template", + + "faq" : "FAQ", + + + "enter_your_pin" : "Enter your PIN", + "loading_your_wallet" : "Loading your wallet", + + + "new_wallet" : "New Wallet", + "wallet_name" : "Wallet name", + "continue_text" : "Continue", + "choose_wallet_currency" : "Please choose wallet currency:", + + + "node_new" : "New Node", + "node_address" : "Node Address", + "node_port" : "Node port", + "login" : "Login", + "password" : "Password", + "nodes" : "Nodes", + "node_reset_settings_title" : "Reset settings", + "nodes_list_reset_to_default_message" : "Are you sure that you want to reset settings to default?", + "change_current_node" : "Are you sure to change current node to ${node}?", + "change" : "Change", + "remove_node" : "Remove node", + "remove_node_message" : "Are you sure that you want to remove selected node?", + "remove" : "Remove", + "delete" : "Delete", + "add_new_node" : "Add new node", + "change_current_node_title" : "Change current node", + "node_test" : "Test", + "node_connection_successful" : "Connection was successful", + "node_connection_failed" : "Connection was failed", + "new_node_testing" : "New node testing", + + + "use" : "Switch to ", + "digit_pin" : "-digit PIN", + + + "share_address" : "Share address", + "receive_amount" : "Amount", + "subaddresses" : "Subaddresses", + "addresses" : "Addresses", + "scan_qr_code" : "Scan the QR code to get the address", + "qr_fullscreen" : "Tap to open full screen QR code", + "rename" : "Rename", + "choose_account" : "Choose account", + "create_new_account" : "Create new account", + "accounts_subaddresses" : "Accounts and subaddresses", + + + "restore_restore_wallet" : "Restore Wallet", + "restore_title_from_seed_keys" : "Restore from seed/keys", + "restore_description_from_seed_keys" : "Get back your wallet from seed/keys that you've saved to secure place", + "restore_next" : "Next", + "restore_title_from_backup" : "Restore from backup", + "restore_description_from_backup" : "You can restore the whole Cake Wallet app from your back-up file", + "restore_seed_keys_restore" : "Seed/Keys Restore", + "restore_title_from_seed" : "Restore from seed", + "restore_description_from_seed" : "Restore your wallet from either the 25 word or 13 word combination code", + "restore_title_from_keys" : "Restore from keys", + "restore_description_from_keys" : "Restore your wallet from generated keystrokes saved from your private keys", + "restore_wallet_name" : "Wallet name", + "restore_address" : "Address", + "restore_view_key_private" : "View key (private)", + "restore_spend_key_private" : "Spend key (private)", + "restore_recover" : "Restore", + "restore_wallet_restore_description" : "Wallet restore description", + "restore_new_seed" : "New seed", + "restore_active_seed" : "Active seed", + "restore_bitcoin_description_from_seed" : "Restore your wallet from 24 word combination code", + "restore_bitcoin_description_from_keys" : "Restore your wallet from generated WIF string from your private keys", + "restore_bitcoin_title_from_keys" : "Restore from WIF", + "restore_from_date_or_blockheight" : "Please enter a date a few days before you created this wallet. Or if you know the blockheight, please enter it instead", + + + "seed_reminder" : "Please write these down in case you lose or wipe your phone", + "seed_title" : "Seed", + "seed_share" : "Share seed", + "copy" : "Copy", + + + "seed_language_choose" : "Please choose seed language:", + "seed_choose" : "Choose seed language", + "seed_language_next" : "Next", + "seed_language_english" : "English", + "seed_language_chinese" : "Chinese", + "seed_language_dutch" : "Dutch", + "seed_language_german" : "German", + "seed_language_japanese" : "Japanese", + "seed_language_portuguese" : "Portuguese", + "seed_language_russian" : "Russian", + "seed_language_spanish" : "Spanish", + "seed_language_french": "French", + "seed_language_italian": "Italian", + + + "send_title" : "Send", + "send_your_wallet" : "Your wallet", + "send_address" : "${cryptoCurrency} address", + "send_payment_id" : "Payment ID (optional)", + "all" : "ALL", + "send_error_minimum_value" : "Minimum value of amount is 0.01", + "send_error_currency" : "Currency can only contain numbers", + "send_estimated_fee" : "Estimated fee:", + "send_priority" : "Currently the fee is set at ${transactionPriority} priority.\nTransaction priority can be adjusted in the settings", + "send_creating_transaction" : "Creating transaction", + "send_templates" : "Templates", + "send_new" : "New", + "send_amount" : "Amount:", + "send_fee" : "Fee:", + "send_name" : "Name", + "send_got_it" : "Got it", + "send_sending" : "Sending...", + "send_success" : "Your ${crypto} was successfully sent", + + + "settings_title" : "Settings", + "settings_nodes" : "Nodes", + "settings_current_node" : "Current node", + "settings_wallets" : "Wallets", + "settings_display_balance" : "Display balance", + "settings_currency" : "Currency", + "settings_fee_priority" : "Fee priority", + "settings_save_recipient_address" : "Save recipient address", + "settings_personal" : "Personal", + "settings_change_pin" : "Change PIN", + "settings_change_language" : "Change language", + "settings_allow_biometrical_authentication" : "Allow biometrical authentication", + "settings_dark_mode" : "Dark mode", + "settings_transactions" : "Transactions", + "settings_trades" : "Trades", + "settings_display_on_dashboard_list" : "Display on dashboard list", + "settings_all" : "ALL", + "settings_only_trades" : "Only trades", + "settings_only_transactions" : "Only transactions", + "settings_none" : "None", + "settings_support" : "Support", + "settings_terms_and_conditions" : "Terms and Conditions", + "pin_is_incorrect" : "PIN is incorrect", + + + "setup_pin" : "Setup PIN", + "enter_your_pin_again" : "Enter your pin again", + "setup_successful" : "Your PIN has been set up successfully!", + + + "wallet_keys" : "Wallet seed/keys", + "wallet_seed" : "Wallet seed", + "private_key" : "Private key", + "public_key" : "Public key", + "view_key_private" : "View key (private)", + "view_key_public" : "View key (public)", + "spend_key_private" : "Spend key (private)", + "spend_key_public" : "Spend key (public)", + "copied_key_to_clipboard" : "Copied ${key} to Clipboard", + + + "new_subaddress_title" : "New address", + "new_subaddress_label_name" : "Label name", + "new_subaddress_create" : "Create", + + "address_label" : "Address label", + + "subaddress_title" : "Subaddress list", + + + "trade_details_title" : "Trade Details", + "trade_details_id" : "ID", + "trade_details_state" : "Status", + "trade_details_fetching" : "Fetching", + "trade_details_provider" : "Provider", + "trade_details_created_at" : "Created at", + "trade_details_pair" : "Pair", + "trade_details_copied" : "${title} copied to Clipboard", + + + "trade_history_title" : "Trade history", + + + "transaction_details_title" : "Transaction Details", + "transaction_details_transaction_id" : "Transaction ID", + "transaction_details_date" : "Date", + "transaction_details_height" : "Height", + "transaction_details_amount" : "Amount", + "transaction_details_fee" : "Fee", + "transaction_details_copied" : "${title} copied to Clipboard", + "transaction_details_recipient_address" : "Recipient addresses", + + + "wallet_list_title" : "Monero Wallet", + "wallet_list_create_new_wallet" : "Create New Wallet", + "wallet_list_restore_wallet" : "Restore Wallet", + "wallet_list_load_wallet" : "Load wallet", + "wallet_list_loading_wallet" : "Loading ${wallet_name} wallet", + "wallet_list_failed_to_load" : "Failed to load ${wallet_name} wallet. ${error}", + "wallet_list_removing_wallet" : "Removing ${wallet_name} wallet", + "wallet_list_failed_to_remove" : "Failed to remove ${wallet_name} wallet. ${error}", + + + "widgets_address" : "Address", + "widgets_restore_from_blockheight" : "Restore from blockheight", + "widgets_restore_from_date" : "Restore from date", + "widgets_or" : "or", + "widgets_seed" : "Seed", + + + "router_no_route" : "No route defined for ${name}", + + + "error_text_account_name" : "Account name can only contain letters, numbers\nand must be between 1 and 15 characters long", + "error_text_contact_name" : "Contact name can't contain ` , ' \" symbols\nand must be between 1 and 32 characters long", + "error_text_address" : "Wallet address must correspond to the type\nof cryptocurrency", + "error_text_node_address" : "Please enter a iPv4 address", + "error_text_node_port" : "Node port can only contain numbers between 0 and 65535", + "error_text_payment_id" : "Payment ID can only contain from 16 to 64 chars in hex", + "error_text_xmr" : "XMR value can't exceed available balance.\nThe number of fraction digits must be less or equal to 12", + "error_text_fiat" : "Value of amount can't exceed available balance.\nThe number of fraction digits must be less or equal to 2", + "error_text_subaddress_name" : "Subaddress name can't contain ` , ' \" symbols\nand must be between 1 and 20 characters long", + "error_text_amount" : "Amount can only contain numbers", + "error_text_wallet_name" : "Wallet name can only contain letters, numbers, _ - symbols \nand must be between 1 and 33 characters long", + "error_text_keys" : "Wallet keys can only contain 64 chars in hex", + "error_text_crypto_currency" : "The number of fraction digits\nmust be less or equal to 12", + "error_text_minimal_limit" : "Trade for ${provider} is not created. Amount is less then minimal: ${min} ${currency}", + "error_text_maximum_limit" : "Trade for ${provider} is not created. Amount is more then maximum: ${max} ${currency}", + "error_text_limits_loading_failed" : "Trade for ${provider} is not created. Limits loading failed", + "error_text_template" : "Template name and address can't contain ` , ' \" symbols\nand must be between 1 and 106 characters long", + + + "auth_store_ban_timeout" : "ban_timeout", + "auth_store_banned_for" : "Banned for ", + "auth_store_banned_minutes" : " minutes", + "auth_store_incorrect_password" : "Wrong PIN", + "wallet_store_monero_wallet" : "Monero Wallet", + "wallet_restoration_store_incorrect_seed_length" : "Incorrect seed length", + + + "full_balance" : "Full Balance", + "available_balance" : "Available Balance", + "hidden_balance" : "Hidden Balance", + + + "sync_status_syncronizing" : "SYNCHRONIZING", + "sync_status_syncronized" : "SYNCHRONIZED", + "sync_status_not_connected" : "NOT CONNECTED", + "sync_status_starting_sync" : "STARTING SYNC", + "sync_status_failed_connect" : "DISCONNECTED", + "sync_status_connecting" : "CONNECTING", + "sync_status_connected" : "CONNECTED", + "sync_status_attempting_sync" : "ATTEMPTING SYNC", + + + "transaction_priority_slow" : "Slow", + "transaction_priority_regular" : "Regular", + "transaction_priority_medium" : "Medium", + "transaction_priority_fast" : "Fast", + "transaction_priority_fastest" : "Fastest", + + + "trade_for_not_created" : "Trade for ${title} is not created.", + "trade_not_created" : "Trade not created", + "trade_id_not_found" : "Trade ${tradeId} of ${title} not found.", + "trade_not_found" : "Trade not found.", + + + "trade_state_pending" : "Pending", + "trade_state_confirming" : "Confirming", + "trade_state_trading" : "Trading", + "trade_state_traded" : "Traded", + "trade_state_complete" : "Complete", + "trade_state_to_be_created" : "To be created", + "trade_state_unpaid" : "Unpaid", + "trade_state_underpaid" : "Underpaid", + "trade_state_paid_unconfirmed" : "Paid unconfirmed", + "trade_state_paid" : "Paid", + "trade_state_btc_sent" : "Btc sent", + "trade_state_timeout" : "Timeout", + "trade_state_created" : "Created", + "trade_state_finished" : "Finished", + + "change_language" : "Change language", + "change_language_to" : "Change language to ${language}?", + + "paste" : "Paste", + "restore_from_seed_placeholder" : "Please enter or paste your seed here", + "add_new_word" : "Add new word", + "incorrect_seed" : "The text entered is not valid.", + + "biometric_auth_reason" : "Scan your fingerprint to authenticate", + "version" : "Version ${currentVersion}", + + "openalias_alert_title" : "Address Detected", + "openalias_alert_content" : "You will be sending funds to\n${recipient_name}", + + "card_address" : "Address:", + "buy" : "Buy", + "sell": "Sell", + + "placeholder_transactions" : "Your transactions will be displayed here", + "placeholder_contacts" : "Your contacts will be displayed here", + + "template" : "Template", + "confirm_delete_template" : "This action will delete this template. Do you wish to continue?", + "confirm_delete_wallet" : "This action will delete this wallet. Do you wish to continue?", + + "picker_description" : "To choose ChangeNOW or MorphToken, please change your trading pair first", + + "change_wallet_alert_title" : "Change current wallet", + "change_wallet_alert_content" : "Do you want to change current wallet to ${wallet_name}?", + + "creating_new_wallet" : "Creating new wallet", + "creating_new_wallet_error" : "Error: ${description}", + + "seed_alert_title" : "Attention", + "seed_alert_content" : "The seed is the only way to recover your wallet. Have you written it down?", + "seed_alert_back" : "Go back", + "seed_alert_yes" : "Yes, I have", + + "exchange_sync_alert_content" : "Please wait until your wallet is synchronized", + + "pre_seed_title" : "IMPORTANT", + "pre_seed_description" : "On the next page you will see a series of ${words} words. This is your unique and private seed and it is the ONLY way to recover your wallet in case of loss or malfunction. It is YOUR responsibility to write it down and store it in a safe place outside of the Cake Wallet app.", + "pre_seed_button_text" : "I understand. Show me my seed", + + "xmr_to_error" : "XMR.TO error", + "xmr_to_error_description" : "Invalid amount. Maximum limit 8 digits after the decimal point", + + "provider_error" : "${provider} error", + + "use_ssl" : "Use SSL", + "trusted" : "Trusted", + + "color_theme" : "Color theme", + "light_theme" : "Light", + "bright_theme" : "Bright", + "dark_theme" : "Dark", + "enter_your_note" : "Enter your note…", + "note_optional" : "Note (optional)", + "note_tap_to_change" : "Note (tap to change)", + "view_in_block_explorer" : "View in Block Explorer", + "view_transaction_on" : "View Transaction on ", + "transaction_key" : "Transaction Key", + "confirmations" : "Confirmations", + "recipient_address" : "Recipient address", + + "extra_id" : "Extra ID:", + "destination_tag" : "Destination tag:", + "memo" : "Memo:", + + "backup" : "Backup", + "change_password" : "Change password", + "backup_password" : "Backup password", + "write_down_backup_password" : "Please write down your backup password, which is used for the import of your backup files.", + "export_backup" : "Export backup", + "save_backup_password" : "Please make sure that you have saved your backup password. You will not be able to import your backup files without it.", + "backup_file" : "Backup file", + + "edit_backup_password" : "Edit Backup Password", + "save_backup_password_alert" : "Save backup password", + "change_backup_password_alert" : "Your previous backup files will be not available to import with new backup password. New backup password will be used only for new backup files. Are you sure that you want to change backup password?", + + "enter_backup_password" : "Enter backup password here", + "select_backup_file" : "Select backup file", + "import" : "Import", + "please_select_backup_file" : "Please select backup file and enter backup password.", + + "fixed_rate" : "Fixed rate", + "fixed_rate_alert" : "You will be able to enter receive amount when fixed rate mode is checked. Do you want to switch to fixed rate mode?", + + "xlm_extra_info" : "Please don’t forget to specify the Memo ID while sending the XLM transaction for the exchange", + "xrp_extra_info" : "Please don’t forget to specify the Destination Tag while sending the XRP transaction for the exchange", + + "exchange_incorrect_current_wallet_for_xmr" : "If you want to exchange XMR from your Cake Wallet Monero balance, please switch to your Monero wallet first.", + "confirmed" : "Confirmed", + "unconfirmed" : "Unconfirmed", + "displayable" : "Displayable", + + "submit_request" : "submit a request", + + "buy_alert_content" : "Currently we only support the purchase of Bitcoin and Litecoin. To buy Bitcoin or Litecoin, please create or switch to your Bitcoin or Litecoin wallet.", + "sell_alert_content": "We currently only support the sale of Bitcoin. To sell Bitcoin, please create or switch to your Bitcoin wallet.", + + "outdated_electrum_wallet_description" : "New Bitcoin wallets created in Cake now have a 24-word seed. It is mandatory that you create a new Bitcoin wallet and transfer all of your funds to the new 24-word wallet, and stop using wallets with a 12-word seed. Please do this immediately to secure your funds.", + "understand" : "I understand", + + "apk_update" : "APK update", + + "buy_bitcoin" : "Buy Bitcoin", + "buy_with" : "Buy with", + "moonpay_alert_text" : "Value of the amount must be more or equal to ${minAmount} ${fiatCurrency}", + + "outdated_electrum_wallet_receive_warning": "If this wallet has a 12-word seed and was created in Cake, DO NOT deposit Bitcoin into this wallet. Any BTC transferred to this wallet may be lost. Create a new 24-word wallet (tap the menu at the top right, select Wallets, choose Create New Wallet, then select Bitcoin) and IMMEDIATELY move your BTC there. New (24-word) BTC wallets from Cake are secure", + "do_not_show_me": "Do not show me this again", + + "unspent_coins_title" : "Unspent coins", + "unspent_coins_details_title" : "Unspent coins details", + "freeze" : "Freeze", + "frozen" : "Frozen", + "coin_control" : "Coin control (optional)", + + "address_detected" : "Address detected", + "address_from_domain" : "This address is from ${domain} on Unstoppable Domains", + + "add_receiver" : "Add another receiver (optional)", + + "manage_yats" : "Manage Yats", + "yat_alert_title" : "Send and receive crypto more easily with Yat", + "yat_alert_content" : "Cake Wallet users can now send and receive all their favorite currencies with a one-of-a-kind emoji-based username.", + "get_your_yat" : "Get your Yat", + "connect_an_existing_yat" : "Connect an existing Yat", + "connect_yats": "Connect Yats", + "yat_address" : "Yat Address", + "yat" : "Yat", + "address_from_yat" : "This address is from ${emoji} on Yat", + "yat_error" : "Yat error", + "yat_error_content" : "No addresses linked with this Yat. Try another Yat", + "choose_address" : "\n\nPlease choose the address:", + "yat_popup_title" : "Your wallet address can be emojified.", + "yat_popup_content" : "You can now send and receive crypto in Cake Wallet with your Yat - a short, emoji-based username. Manage Yats at any time on the settings screen", + "second_intro_title" : "One emoji address to rule them all", + "second_intro_content" : "Your Yat is a single unique emoji address that replaces all of your long hexadecimal addresses for all of your currencies.", + "third_intro_title" : "Yat plays nicely with others", + "third_intro_content" : "Yats live outside of Cake Wallet, too. Any wallet address on earth can be replaced with a Yat!", + "learn_more" : "Learn More", + "search": "Search", + "search_language": "Search language", + "search_currency": "Search currency", + "new_template" : "New Template", + "electrum_address_disclaimer": "We generate new addresses each time you use one, but previous addresses continue to work", + "wallet_name_exists": "A wallet with that name already exists. Please choose a different name or rename the other wallet first.", + "market_place": "Marketplace", + "cake_pay_title": "Cake Pay Gift Cards", + "cake_pay_subtitle": "Buy discounted gift cards (USA only)", + "cake_pay_web_cards_title": "Cake Pay Web Cards", + "cake_pay_web_cards_subtitle": "Buy worldwide prepaid cards and gift cards", + "about_cake_pay": "Cake Pay allows you to easily buy gift cards with virtual assets, spendable instantly at over 150,000 merchants in the United States.", + "cake_pay_account_note": "Sign up with just an email address to see and purchase cards. Some are even available at a discount!", + "already_have_account": "Already have an account?", + "create_account": "Create Account", + "privacy_policy": "Privacy Policy", + "welcome_to_cakepay": "Welcome to Cake Pay!", + "sign_up": "Sign Up", + "forgot_password": "Forgot Password", + "reset_password": "Reset Password", + "gift_cards": "Gift Cards", + "setup_your_debit_card": "Set up your debit card", + "no_id_required": "No ID required. Top up and spend anywhere", + "how_to_use_card": "How to use this card", + "purchase_gift_card": "Purchase Gift Card", + "verification": "Verification", + "fill_code": "Please fill in the verification code provided to your email", + "dont_get_code": "Don't get code?", + "resend_code": "Please resend it", + "debit_card": "Debit Card", + "cakepay_prepaid_card": "CakePay Prepaid Debit Card", + "no_id_needed": "No ID needed!", + "frequently_asked_questions": "Frequently asked questions", + "debit_card_terms": "The storage and usage of your payment card number (and credentials corresponding to your payment card number) in this digital wallet are subject to the Terms and Conditions of the applicable cardholder agreement with the payment card issuer, as in effect from time to time.", + "please_reference_document": "Please reference the documents below for more information.", + "cardholder_agreement": "Cardholder Agreement", + "e_sign_consent": "E-Sign Consent", + "agree_and_continue": "Agree & Continue", + "email_address": "Email Address", + "agree_to": "By creating account you agree to the ", + "and": "and", + "enter_code": "Enter code", + "congratulations": "Congratulations!", + "you_now_have_debit_card": "You now have a debit card", + "min_amount" : "Min: ${value}", + "max_amount" : "Max: ${value}", + "enter_amount": "Enter Amount", + "billing_address_info": "If asked for a billing address, provide your shipping address", + "order_physical_card": "Order Physical Card", + "add_value": "Add value", + "activate": "Activate", + "get_a": "Get a ", + "digital_and_physical_card": " digital and physical prepaid debit card", + "get_card_note": " that you can reload with digital currencies. No additional information needed!", + "signup_for_card_accept_terms": "Sign up for the card and accept the terms.", + "add_fund_to_card": "Add prepaid funds to the cards (up to ${value})", + "use_card_info_two": "Funds are converted to USD when the held in the prepaid account, not in digital currencies.", + "use_card_info_three": "Use the digital card online or with contactless payment methods.", + "optionally_order_card": "Optionally order a physical card.", + "hide_details" : "Hide Details", + "show_details" : "Show Details", + "upto": "up to ${value}", + "discount": "Save ${value}%", + "gift_card_amount": "Gift Card Amount", + "bill_amount": "Bill Amount", + "you_pay": "You Pay", + "tip": "Tip:", + "custom": "custom", + "by_cake_pay": "by Cake Pay", + "expires": "Expires", + "mm": "MM", + "yy": "YY", + "online": "Online", + "offline": "Offline", + "gift_card_number": "Gift card number", + "pin_number": "PIN number", + "total_saving": "Total Savings", + "last_30_days": "Last 30 days", + "avg_savings": "Avg. Savings", + "view_all": "View all", + "active_cards": "Active cards", + "delete_account": "Delete Account", + "cards": "Cards", + "active": "Active", + "redeemed": "Redeemed", + "gift_card_balance_note": "Gift cards with a balance remaining will appear here", + "gift_card_redeemed_note": "Gift cards you’ve redeemed will appear here", + "logout": "Logout", + "add_tip": "Add Tip", + "percentageOf": "of ${amount}", + "is_percentage": "is", + "search_category": "Search category", + "mark_as_redeemed": "Mark As Redeemed", + "more_options": "More Options", + "awaiting_payment_confirmation": "Awaiting Payment Confirmation", + "transaction_sent_notice": "If the screen doesn’t proceed after 1 minute, check a block explorer and your email.", + "agree": "Agree", + "in_store": "In Store", + "generating_gift_card": "Generating Gift Card", + "payment_was_received": "Your payment was received.", + "proceed_after_one_minute": "If the screen doesn’t proceed after 1 minute, check your email.", + "order_id": "Order ID", + "gift_card_is_generated": "Gift Card is generated", + "open_gift_card": "Open Gift Card", + "contact_support": "Contact Support", + "gift_cards_unavailable": "Gift cards are available for purchase only with Monero, Bitcoin, and Litecoin at this time", + "introducing_cake_pay": "Introducing Cake Pay!", + "cake_pay_learn_more": "Instantly purchase and redeem gift cards in the app!\nSwipe left to right to learn more.", + "automatic": "Automatic", + "fixed_pair_not_supported": "This fixed pair is not supported with the selected exchanges", + "variable_pair_not_supported": "This variable pair is not supported with the selected exchanges", + "none_of_selected_providers_can_exchange": "None of the selected providers can make this exchange", + "choose_one": "Choose one", + "choose_from_available_options": "Choose from the available options:", + "custom_redeem_amount": "Custom Redeem Amount", + "add_custom_redemption": "Add Custom Redemption", + "remaining": "remaining", + "delete_wallet": "Delete wallet", + "delete_wallet_confirm_message" : "Are you sure that you want to delete ${wallet_name} wallet?", + "low_fee": "Low fee", + "low_fee_alert": "You currently are using a low network fee priority. This could cause long waits, different rates, or canceled trades. We recommend setting a higher fee for a better experience.", + "ignor": "Ignore", + "use_suggested": "Use Suggested", + "do_not_share_warning_text" : "Do not share these with anyone else, including support.\n\nYour funds can and will be stolen!", + "help": "help", + "all_transactions": "All transactions", + "all_trades": "All trades", + "connection_sync": "Connection and sync", + "security_and_backup": "Security and backup", + "create_backup": "Create backup", + "privacy_settings": "Privacy settings", + "privacy": "Privacy", + "display_settings": "Display settings", + "other_settings": "Other settings", + "require_pin_after": "Require PIN after", + "always": "Always", + "minutes_to_pin_code": "${minute} minutes", + "disable_exchange": "Disable exchange", + "advanced_privacy_settings": "Advanced Privacy Settings", + "settings_can_be_changed_later": "These settings can be changed later in the app settings", + "add_custom_node": "Add New Custom Node", + "disable_fiat": "Disable fiat", + "fiat_api": "Fiat API", + "disabled": "Disabled", + "enabled": "Enabled", + "tor_only": "Tor only", + "unmatched_currencies": "Your current wallet's currency does not match that of the scanned QR", + "orbot_running_alert": "Please make sure Orbot is running prior to connecting to this node.", + "contact_list_contacts": "Contacts", + "contact_list_wallets": "My Wallets" +} From 76bf0d2deeb22efadaae1c2ac4fa6a2cb25b14c5 Mon Sep 17 00:00:00 2001 From: qweewqi <102307285+qweewqi@users.noreply.github.com> Date: Thu, 19 Jan 2023 03:42:41 +0200 Subject: [PATCH 36/43] update_mmr --- res/values/strings_my.arb | 1153 ++++++++++++++++++------------------- 1 file changed, 576 insertions(+), 577 deletions(-) diff --git a/res/values/strings_my.arb b/res/values/strings_my.arb index a2b1cc702..352b8d191 100644 --- a/res/values/strings_my.arb +++ b/res/values/strings_my.arb @@ -1,684 +1,683 @@ { - "welcome" : "Welcome to", - "cake_wallet" : "Cake Wallet", - "first_wallet_text" : "Awesome wallet for Monero, Bitcoin, Litecoin, and Haven", - "please_make_selection" : "Please make a selection below to create or recover your wallet.", - "create_new" : "Create New Wallet", - "restore_wallet" : "Restore Wallet", + "welcome" : "မှကြိုဆိုပါတယ်။", + "cake_wallet" : "Cake ပိုက်ဆံအိတ်", + "first_wallet_text" : "Monero၊ Bitcoin၊ Litecoin နှင့် Haven အတွက် အလွန်ကောင်းမွန်သော ပိုက်ဆံအိတ်", + "please_make_selection" : "သင့်ပိုက်ဆံအိတ်ကို ဖန်တီးရန် သို့မဟုတ် ပြန်လည်ရယူရန် အောက်တွင် ရွေးချယ်မှုတစ်ခု ပြုလုပ်ပါ။", + "create_new" : "Wallet အသစ်ဖန်တီးပါ။", + "restore_wallet" : "ပိုက်ဆံအိတ်ကို ပြန်ယူပါ။", - "monero_com": "Monero.com by Cake Wallet", - "monero_com_wallet_text": "Awesome wallet for Monero", + "monero_com" : "Monero.com မှ Cake ပိုက်ဆံအိတ်", + "monero_com_wallet_text" : "Monero အတွက် အမိုက်စား ပိုက်ဆံအိတ်", - "haven_app": "Haven by Cake Wallet", - "haven_app_wallet_text": "Awesome wallet for Haven", + "haven_app" : "ဟေးဗင် ကိတ် ဝေါလက်", + "haven_app_wallet_text" : "ဟေဗင်အတွက် အံ့ဩစရာကောင်းတဲ့ ပိုက်ဆံအုံး", - "accounts" : "Accounts", - "edit" : "Edit", - "account" : "Account", - "add" : "Add", + "accounts" : "အကောင့်များ", + "edit" : "တည်းဖြတ်ပါ။", + "account" : "အကောင့်", + "add" : "ထည့်ပါ။", - "address_book" : "Address Book", - "contact" : "Contact", - "please_select" : "Please select:", - "cancel" : "Cancel", - "ok" : "OK", - "contact_name" : "Contact Name", - "reset" : "Reset", - "save" : "Save", - "address_remove_contact" : "Remove contact", - "address_remove_content" : "Are you sure that you want to remove selected contact?", + "address_book" : "လိပ်စာစာအုပ်", + "contact" : "ဆက်သွယ်ရန်", + "please_select" : "ကျေးဇူးပြု၍ ရွေးချယ်ပါ-", + "cancel" : "မလုပ်တော့", + "ok" : "ရလား", + "contact_name" : "ဆက်သွယ်ရန်အမည်", + "reset" : "ပြန်လည်သတ်မှတ်ပါ။", + "save" : "သိမ်းဆည်းပါ။", + "address_remove_contact" : "အဆက်အသွယ်ကို ဖယ်ရှားပါ။", + "address_remove_content" : "ရွေးချယ်ထားသောအဆက်အသွယ်ကို ဖယ်ရှားလိုသည်မှာ သေချာပါသလား။", - "authenticated" : "Authenticated", - "authentication" : "Authentication", - "failed_authentication" : "Failed authentication. ${state_error}", + "authenticated" : "အစစ်အမှန်", + "authentication" : "စစ်ဆေးခြင်း", + "failed_authentication" : "အထောက်အထားစိစစ်ခြင်း မအောင်မြင်ပါ။. ${state_error}", - "wallet_menu" : "Menu", - "Blocks_remaining" : "${status} Blocks Remaining", - "please_try_to_connect_to_another_node" : "Please try to connect to another node", - "xmr_hidden" : "Hidden", - "xmr_available_balance" : "Available Balance", - "xmr_full_balance" : "Full Balance", - "send" : "Send", - "receive" : "Receive", - "transactions" : "Transactions", - "incoming" : "Incoming", - "outgoing" : "Outgoing", - "transactions_by_date" : "Transactions by date", - "trades" : "Trades", - "filter_by": "Filter by", - "today" : "Today", - "yesterday" : "Yesterday", - "received" : "Received", - "sent" : "Sent", - "pending" : " (pending)", - "rescan" : "Rescan", - "reconnect" : "Reconnect", - "wallets" : "Wallets", - "show_seed" : "Show seed", - "show_keys" : "Show seed/keys", - "address_book_menu" : "Address book", - "reconnection" : "Reconnection", - "reconnect_alert_text" : "Are you sure you want to reconnect?", + "wallet_menu" : "မီနူး", + "Blocks_remaining" : "${status} ဘလောက်များ ကျန်နေပါသည်။", + "please_try_to_connect_to_another_node" : "အခြား node သို့ ချိတ်ဆက်ရန် ကြိုးစားပါ။", + "xmr_hidden" : "ဝှက်ထားသည်။", + "xmr_available_balance" : "လက်ကျန်ငွေ ရရှိနိုင်", + "xmr_full_balance" : "မျှတမှု အပြည့်အစုံ", + "send" : "ပို့ပါ။", + "receive" : "လက်ခံသည်။", + "transactions" : "ငွေပေးငွေယူ", + "incoming" : "ဝင်လာ", + "outgoing" : "အထွက်", + "transactions_by_date" : "ရက်စွဲအလိုက် ငွေလွှဲမှုများ", + "trades" : "ကုန်သွယ်မှုများ", + "filter_by" : "အလိုက် စစ်ထုတ်ပါ။", + "today" : "ဒီနေ့", + "yesterday" : "မနေ့က", + "received" : "ရရှိခဲ့သည်။", + "sent" : "ပို့လိုက်ပါတယ်။", + "pending" : " (ဆိုင်းငံ့)", + "rescan" : "ပြန်စကင်န်လုပ်ပါ။", + "reconnect" : "ပြန်လည်ချိတ်ဆက်ပါ။", + "wallets" : "ပိုက်ဆံအိတ်", + "show_seed" : "မျိုးစေ့ကိုပြပါ။", + "show_keys" : "မျိုးစေ့ /သော့များကို ပြပါ။", + "address_book_menu" : "လိပ်စာစာအုပ်", + "reconnection" : "ပြန်လည်ချိတ်ဆက်မှု", + "reconnect_alert_text" : "ပြန်လည်ချိတ်ဆက်လိုသည်မှာ သေချာပါသလား။ ?", - "exchange" : "Exchange", - "clear" : "Clear", - "refund_address" : "Refund address", - "change_exchange_provider" : "Change Exchange Provider", - "you_will_send" : "Convert from", - "you_will_get" : "Convert to", - "amount_is_guaranteed" : "The receive amount is guaranteed", - "amount_is_estimate" : "The receive amount is an estimate", - "powered_by" : "Powered by ${title}", - "error" : "Error", - "estimated" : "Estimated", - "min_value" : "Min: ${value} ${currency}", - "max_value" : "Max: ${value} ${currency}", - "change_currency" : "Change Currency", - "overwrite_amount" : "Overwrite amount", - "qr_payment_amount" : "This QR code contains a payment amount. Do you want to overwrite the current value?", + "exchange" : "ချိန်းတယ်။", + "clear" : "ရှင်းလင်းသော", + "refund_address" : "ပြန်အမ်းငွေလိပ်စာ", + "change_exchange_provider" : "အပြန်အလှန် လဲလှယ်ရေး ထောက်ပံ့ပေးသူကို ပြောင်းလဲပါ", + "you_will_send" : "မှပြောင်းပါ။", + "you_will_get" : "သို့ပြောင်းပါ။", + "amount_is_guaranteed" : "ရရှိသည့်ပမာဏကို အာမခံပါသည်။", + "amount_is_estimate" : "ရရှိသည့်ပမာဏသည် ခန့်မှန်းချက်တစ်ခုဖြစ်သည်။", + "powered_by" : "${title} မှ ပံ့ပိုးပေးသည်", + "error" : "အမှား", + "estimated" : "ခန့်မှန်း", + "min_value" : "အနည်းဆုံး- ${value} ${currency}", + "max_value" : "အများဆုံး- ${value} ${currency}", + "change_currency" : "ငွေကြေးကိုပြောင်းပါ။", + "overwrite_amount" : "ပမာဏကို ထပ်ရေးပါ။", + "qr_payment_amount" : "ဤ QR ကုဒ်တွင် ငွေပေးချေမှုပမာဏတစ်ခုပါရှိသည်။ လက်ရှိတန်ဖိုးကို ထပ်ရေးလိုပါသလား။", - "copy_id" : "Copy ID", - "exchange_result_write_down_trade_id" : "Please copy or write down the trade ID to continue.", - "trade_id" : "Trade ID:", - "copied_to_clipboard" : "Copied to Clipboard", - "saved_the_trade_id" : "I've saved the trade ID", - "fetching" : "Fetching", - "id" : "ID: ", - "amount" : "Amount: ", - "payment_id" : "Payment ID: ", - "status" : "Status: ", - "offer_expires_in" : "Offer expires in: ", - "trade_is_powered_by" : "This trade is powered by ${provider}", - "copy_address" : "Copy Address", - "exchange_result_confirm" : "By pressing confirm, you will be sending ${fetchingLabel} ${from} from your wallet called ${walletName} to the address shown below. Or you can send from your external wallet to the below address/QR code.\n\nPlease press confirm to continue or go back to change the amounts.", - "exchange_result_description" : "You must send a minimum of ${fetchingLabel} ${from} to the address shown on the next page. If you send an amount lower than ${fetchingLabel} ${from} it may not get converted and it may not be refunded.", - "exchange_result_write_down_ID" : "*Please copy or write down your ID shown above.", - "confirm" : "Confirm", - "confirm_sending" : "Confirm sending", - "commit_transaction_amount_fee" : "Commit transaction\nAmount: ${amount}\nFee: ${fee}", - "sending" : "Sending", - "transaction_sent" : "Transaction sent!", - "expired" : "Expired", + "copy_id" : "ID ကူးယူပါ။", + "exchange_result_write_down_trade_id" : "ရှေ့ဆက်ရန် ကုန်သွယ်မှု ID ကို ကူးယူ သို့မဟုတ် ချရေးပါ။", + "trade_id" : "ကုန်သွယ်မှု ID:", + "copied_to_clipboard" : "ကလစ်ဘုတ်သို့ ကူးယူထားသည်။", + "saved_the_trade_id" : "ကုန်သွယ်မှု ID ကို သိမ်းဆည်းပြီးပါပြီ။", + "fetching" : "ခေါ်ယူခြင်း။", + "id" : "ID:", + "amount" : "ပမာဏ:", + "payment_id" : "ငွေပေးချေမှု ID:", + "status" : "အခြေအနေ:", + "offer_expires_in" : "ကမ်းလှမ်းချက် သက်တမ်းကုန်သည်:", + "trade_is_powered_by" : "ဤကုန်သွယ်မှုကို ${provider} မှ လုပ်ဆောင်သည်", + "copy_address" : "လိပ်စာကို ကူးယူပါ။", + "exchange_result_confirm" : "အတည်ပြုချက်ကို နှိပ်ခြင်းဖြင့်၊ သင်သည် ${fetchingLabel} ${from} ဟုခေါ်သော သင့်ပိုက်ဆံအိတ်မှ ${walletName} ကို အောက်ဖော်ပြပါလိပ်စာသို့ ပေးပို့မည်ဖြစ်ပါသည်။ သို့မဟုတ် သင့်ပြင်ပပိုက်ဆံအိတ်မှ အောက်ပါလိပ်စာ/QR ကုဒ်သို့ ပေးပို့နိုင်ပါသည်။\n\nပမာဏများကို ပြောင်းလဲရန် ဆက်လက်လုပ်ဆောင်ရန် သို့မဟုတ် ပြန်သွားရန် အတည်ပြုချက်ကို နှိပ်ပါ။", + "exchange_result_description" : "သင်သည် အနည်းဆုံး ${fetchingLabel} ${from} ကို နောက်စာမျက်နှာတွင် ပြသထားသည့် လိပ်စာသို့ ပေးပို့ရပါမည်။ ${fetchingLabel} ${from} ထက်နည်းသော ပမာဏကို ပေးပို့ပါက ၎င်းသည် ပြောင်းလဲ၍မရသည့်အပြင် ပြန်အမ်းမည်မဟုတ်ပါ။", + "exchange_result_write_down_ID" : "* ကျေးဇူးပြု၍ အထက်ဖော်ပြပါ သင်၏ ID ကို ကော်ပီ သို့မဟုတ် ရေးမှတ်ပါ။", + "confirm" : "အတည်ပြုပါ။", + "confirm_sending" : "ပေးပို့အတည်ပြုပါ။", + "commit_transaction_amount_fee" : "ငွေလွှဲခြင်း\nပမာဏ- ${amount}\nအခကြေးငွေ- ${fee}", + "sending" : "ပေးပို့ခြင်း။", + "transaction_sent" : "ငွေပေးချေမှု ပို့ပြီးပါပြီ။!", + "expired" : "သက်တမ်းကုန်သွားပြီ", "time" : "${minutes}m ${seconds}s", - "send_xmr" : "Send XMR", - "exchange_new_template" : "New template", + "send_xmr" : "XMR ပို့ပါ။", + "exchange_new_template" : "ပုံစံအသစ်", - "faq" : "FAQ", + "faq" : "အမြဲမေးလေ့ရှိသောမေးခွန်းများ", - "enter_your_pin" : "Enter your PIN", - "loading_your_wallet" : "Loading your wallet", + "enter_your_pin" : "သင်၏ PIN ကိုထည့်ပါ။", + "loading_your_wallet" : "သင့်ပိုက်ဆံအိတ်ကို ဖွင့်နေသည်။", - "new_wallet" : "New Wallet", - "wallet_name" : "Wallet name", - "continue_text" : "Continue", - "choose_wallet_currency" : "Please choose wallet currency:", + "new_wallet" : "ပိုက်ဆံအိတ်အသစ်", + "wallet_name" : "ပိုက်ဆံအိတ်နာမည", + "continue_text" : "ဆက်လက်", + "choose_wallet_currency" : "ပိုက်ဆံအိတ်ငွေကြေးကို ရွေးပါ-", - "node_new" : "New Node", - "node_address" : "Node Address", - "node_port" : "Node port", - "login" : "Login", - "password" : "Password", - "nodes" : "Nodes", - "node_reset_settings_title" : "Reset settings", - "nodes_list_reset_to_default_message" : "Are you sure that you want to reset settings to default?", - "change_current_node" : "Are you sure to change current node to ${node}?", - "change" : "Change", - "remove_node" : "Remove node", - "remove_node_message" : "Are you sure that you want to remove selected node?", - "remove" : "Remove", - "delete" : "Delete", - "add_new_node" : "Add new node", - "change_current_node_title" : "Change current node", - "node_test" : "Test", - "node_connection_successful" : "Connection was successful", - "node_connection_failed" : "Connection was failed", - "new_node_testing" : "New node testing", + "node_new" : "နော်ဒီအသစ်", + "node_address" : "နိုဒီ လိပ်စာ", + "node_port" : "နော်ဒီဆိပ်ကမ်း", + "login" : "လော့ဂ်အင်", + "password" : "စကားဝှက်", + "nodes" : "ဆုံမှတ်များ", + "node_reset_settings_title" : "ဆက်တင်များကို ပြန်လည်သတ်မှတ်ပါ။", + "nodes_list_reset_to_default_message" : "ဆက်တင်များကို မူရင်းအတိုင်း ပြန်လည်သတ်မှတ်လိုသည်မှာ သေချာပါသလား။", + "change_current_node" : "လက်ရှိ နှာခေါင်း ကို ${node} သို့ ပြောင်းရန် သေချာပါသလား။", + "change" : "ပြောင်းလဲပါ။", + "remove_node" : "နှာခေါင်း ကို ဖယ်ရှားပါ။", + "remove_node_message" : "ရွေးချယ်ထားသော ကုဒ်ကို ဖယ်ရှားလိုသည်မှာ သေချာပါသလား။", + "remove" : "ဖယ်ရှားပါ။", + "delete" : "ဖျက်ပါ။", + "add_new_node" : "နှာခေါင်း အသစ်ထည့်ပါ။", + "change_current_node_title" : "လက်ရှိ နှာခေါင်း ကိုပြောင်းပါ။", + "node_test" : "စမ်း", + "node_connection_successful" : "ချိတ်ဆက်မှု အောင်မြင်ခဲ့သည်။", + "node_connection_failed" : "ချိတ်ဆက်မှု မအောင်မြင်ပါ။", + "new_node_testing" : "နှာခေါင်း အသစ်စမ်းသပ်ခြင်း။", - "use" : "Switch to ", - "digit_pin" : "-digit PIN", + "use" : "သို့ပြောင်းပါ။", + "digit_pin" : "-ဂဏန်း PIN", - "share_address" : "Share address", - "receive_amount" : "Amount", - "subaddresses" : "Subaddresses", - "addresses" : "Addresses", - "scan_qr_code" : "Scan the QR code to get the address", - "qr_fullscreen" : "Tap to open full screen QR code", - "rename" : "Rename", - "choose_account" : "Choose account", - "create_new_account" : "Create new account", - "accounts_subaddresses" : "Accounts and subaddresses", + "share_address" : "လိပ်စာမျှဝေပါ။", + "receive_amount" : "ပမာဏ", + "subaddresses" : "လိပ်စာများ", + "addresses" : "လိပ်စာများ", + "scan_qr_code" : "လိပ်စာရယူရန် QR ကုဒ်ကို စကင်န်ဖတ်ပါ။", + "qr_fullscreen" : "မျက်နှာပြင်အပြည့် QR ကုဒ်ကိုဖွင့်ရန် တို့ပါ။", + "rename" : "အမည်ပြောင်းပါ။", + "choose_account" : "အကောင့်ကို ရွေးပါ။", + "create_new_account" : "အကောင့်အသစ်ဖန်တီးပါ။", + "accounts_subaddresses" : "အကောင့်များနှင့် လိပ်စာများ", - "restore_restore_wallet" : "Restore Wallet", - "restore_title_from_seed_keys" : "Restore from seed/keys", - "restore_description_from_seed_keys" : "Get back your wallet from seed/keys that you've saved to secure place", - "restore_next" : "Next", - "restore_title_from_backup" : "Restore from backup", - "restore_description_from_backup" : "You can restore the whole Cake Wallet app from your back-up file", - "restore_seed_keys_restore" : "Seed/Keys Restore", - "restore_title_from_seed" : "Restore from seed", - "restore_description_from_seed" : "Restore your wallet from either the 25 word or 13 word combination code", - "restore_title_from_keys" : "Restore from keys", - "restore_description_from_keys" : "Restore your wallet from generated keystrokes saved from your private keys", - "restore_wallet_name" : "Wallet name", - "restore_address" : "Address", - "restore_view_key_private" : "View key (private)", - "restore_spend_key_private" : "Spend key (private)", - "restore_recover" : "Restore", - "restore_wallet_restore_description" : "Wallet restore description", - "restore_new_seed" : "New seed", - "restore_active_seed" : "Active seed", - "restore_bitcoin_description_from_seed" : "Restore your wallet from 24 word combination code", - "restore_bitcoin_description_from_keys" : "Restore your wallet from generated WIF string from your private keys", - "restore_bitcoin_title_from_keys" : "Restore from WIF", - "restore_from_date_or_blockheight" : "Please enter a date a few days before you created this wallet. Or if you know the blockheight, please enter it instead", + "restore_restore_wallet" : "ပိုက်ဆံအိတ်ကို ပြန်ယူပါ။", + "restore_title_from_seed_keys" : "မျိုးစေ့/သော့များမှ ပြန်လည်ရယူပါ။", + "restore_description_from_seed_keys" : "သင့်ပိုက်ဆံအိတ်ကို လုံခြုံသောနေရာတွင် သိမ်းဆည်းထားသော မျိုးစေ့/သော့များမှ ပြန်လည်ရယူပါ။", + "restore_next" : "နောက်တစ်ခု", + "restore_title_from_backup" : "အရန်သိမ်းခြင်းမှ ပြန်လည်ရယူပါ။", + "restore_description_from_backup" : "သင့်အရန်ဖိုင်မှ Cake Wallet အက်ပ်တစ်ခုလုံးကို သင်ပြန်လည်ရယူနိုင်သည်။", + "restore_seed_keys_restore" : "မျိုးစေ့/သော့များ ပြန်လည်ရယူပါ။", + "restore_title_from_seed" : "မျိုးစေ့မှပြန်လည်ရယူပါ။", + "restore_description_from_seed" : "25 စကားလုံး သို့မဟုတ် 13 စကားလုံးပေါင်းစပ်ကုဒ်မှ သင့်ပိုက်ဆံအိတ်ကို ပြန်လည်ရယူပါ။", + "restore_title_from_keys" : "သော့များမှ ပြန်လည်ရယူပါ။", + "restore_description_from_keys" : "သင့်ကိုယ်ပိုင်သော့များမှ သိမ်းဆည်းထားသော ထုတ်ပေးထားသော သော့ချက်များမှ သင့်ပိုက်ဆံအိတ်ကို ပြန်လည်ရယူပါ။", + "restore_wallet_name" : "ပိုက်ဆံအိတ်နာမည်", + "restore_address" : "လိပ်စာ", + "restore_view_key_private" : "သော့ကိုကြည့်ရန် (သီးသန့်)", + "restore_spend_key_private" : "သော့သုံးရန် (သီးသန့်)", + "restore_recover" : "ပြန်ယူပါ။", + "restore_wallet_restore_description" : "Wallet ပြန်လည်ရယူသည့် ဖော်ပြချက်", + "restore_new_seed" : "မျိုးစေ့အသစ်", + "restore_active_seed" : "တက်ကြွသောအစေ့", + "restore_bitcoin_description_from_seed" : "24 စကားလုံးပေါင်းစပ်ကုဒ်မှ သင့်ပိုက်ဆံအိတ်ကို ပြန်ယူပါ။", + "restore_bitcoin_description_from_keys" : "သင့်ကိုယ်ပိုင်သော့များမှ ထုတ်လုပ်ထားသော WIF စာကြောင်းမှ သင့်ပိုက်ဆံအိတ်ကို ပြန်လည်ရယူပါ။", + "restore_bitcoin_title_from_keys" : "WIF မှ ပြန်လည်ရယူပါ။", + "restore_from_date_or_blockheight" : "ဤပိုက်ဆံအိတ်ကို သင်မဖန်တီးမီ ရက်အနည်းငယ်အလိုတွင် ရက်စွဲတစ်ခု ထည့်သွင်းပါ။ သို့မဟုတ် ဘလော့ခ်ဟိုက် ကို သိပါက ၎င်းအစား ၎င်းကို ထည့်ပါ။", - "seed_reminder" : "Please write these down in case you lose or wipe your phone", - "seed_title" : "Seed", - "seed_share" : "Share seed", - "copy" : "Copy", + "seed_reminder" : "ကျေးဇူးပြု၍ သင့်ဖုန်းကို ပျောက်ဆုံးသွားပါက သို့မဟုတ် ဖျက်မိပါက ၎င်းတို့ကို ချရေးပါ။", + "seed_title" : "မျိုးစေ့", + "seed_share" : "မျိုးစေ့မျှဝေပါ။", + "copy" : "ကော်ပီ", - "seed_language_choose" : "Please choose seed language:", - "seed_choose" : "Choose seed language", - "seed_language_next" : "Next", - "seed_language_english" : "English", - "seed_language_chinese" : "Chinese", - "seed_language_dutch" : "Dutch", - "seed_language_german" : "German", - "seed_language_japanese" : "Japanese", - "seed_language_portuguese" : "Portuguese", - "seed_language_russian" : "Russian", - "seed_language_spanish" : "Spanish", - "seed_language_french": "French", - "seed_language_italian": "Italian", + "seed_language_choose" : "ကျေးဇူးပြု၍ မျိုးစေ့ဘာသာစကားကို ရွေးပါ-", + "seed_choose" : "မျိုးစေ့ဘာသာစကားကို ရွေးချယ်ပါ။", + "seed_language_next" : "နောက်တစ်ခု", + "seed_language_english" : "အင်္ဂလိပ်စာ", + "seed_language_chinese" : "တရုတ်", + "seed_language_dutch" : "ဒတ်ခ်ျ", + "seed_language_german" : "ဂျာမန်", + "seed_language_japanese" : "ဂျပန်", + "seed_language_portuguese" : "ပေါ်တူဂီ", + "seed_language_russian" : "ရုရှ", + "seed_language_spanish" : "ငပိ", + "seed_language_french" : "ပြင်သစ်", + "seed_language_italian" : "အီတလီ", - "send_title" : "Send", - "send_your_wallet" : "Your wallet", - "send_address" : "${cryptoCurrency} address", - "send_payment_id" : "Payment ID (optional)", - "all" : "ALL", - "send_error_minimum_value" : "Minimum value of amount is 0.01", - "send_error_currency" : "Currency can only contain numbers", - "send_estimated_fee" : "Estimated fee:", - "send_priority" : "Currently the fee is set at ${transactionPriority} priority.\nTransaction priority can be adjusted in the settings", - "send_creating_transaction" : "Creating transaction", - "send_templates" : "Templates", - "send_new" : "New", - "send_amount" : "Amount:", - "send_fee" : "Fee:", - "send_name" : "Name", - "send_got_it" : "Got it", - "send_sending" : "Sending...", - "send_success" : "Your ${crypto} was successfully sent", + "send_title" : "ပို့ပါ။", + "send_your_wallet" : "သင့်ပိုက်ဆံအိတ်", + "send_address" : "${cryptoCurrency} လိပ်စာ", + "send_payment_id" : "ငွေပေးချေမှု ID (ချန်လှပ်ထား)", + "all" : "အားလုံး", + "send_error_minimum_value" : "ပမာဏ၏ အနည်းဆုံးတန်ဖိုးမှာ 0.01 ဖြစ်သည်။", + "send_error_currency" : "ငွေကြေးတွင် နံပါတ်များသာ ပါဝင်နိုင်သည်။", + "send_estimated_fee" : "ခန့်မှန်းကြေး-", + "send_priority" : "လောလောဆယ်အခကြေးငွေကို ${transactionPriority} ဦးစားပေးတွင် သတ်မှတ်ထားပါသည်။\nငွေပေးငွေယူဦးစားပေးကို ဆက်တင်များတွင် ချိန်ညှိနိုင်ပါသည်။", + "send_creating_transaction" : "အရောင်းအဝယ်ပြုလုပ်ခြင်း။", + "send_templates" : "ပုံစံများ", + "send_new" : "အသစ်", + "send_amount" : "ပမာဏ-", + "send_fee" : "အခကြေးငွေ-", + "send_name" : "နာမည်", + "send_got_it" : "ရပြီ", + "send_sending" : "ပို့နေသည်...", + "send_success" : "သင်၏ ${crypto} ကို အောင်မြင်စွာ ပို့လိုက်ပါပြီ။", - "settings_title" : "Settings", - "settings_nodes" : "Nodes", - "settings_current_node" : "Current node", - "settings_wallets" : "Wallets", - "settings_display_balance" : "Display balance", - "settings_currency" : "Currency", - "settings_fee_priority" : "Fee priority", - "settings_save_recipient_address" : "Save recipient address", - "settings_personal" : "Personal", - "settings_change_pin" : "Change PIN", - "settings_change_language" : "Change language", - "settings_allow_biometrical_authentication" : "Allow biometrical authentication", - "settings_dark_mode" : "Dark mode", - "settings_transactions" : "Transactions", - "settings_trades" : "Trades", - "settings_display_on_dashboard_list" : "Display on dashboard list", - "settings_all" : "ALL", - "settings_only_trades" : "Only trades", - "settings_only_transactions" : "Only transactions", - "settings_none" : "None", - "settings_support" : "Support", - "settings_terms_and_conditions" : "Terms and Conditions", - "pin_is_incorrect" : "PIN is incorrect", + "settings_title" : "ဆက်တင်များ", + "settings_nodes" : "ဆုံမှတ်များ", + "settings_current_node" : "လက်ရှိ node", + "settings_wallets" : "ပိုက်ဆံအိတ်", + "settings_display_balance" : "ပြသချိန်ခွင်", + "settings_currency" : "ငွေကြေး", + "settings_fee_priority" : "အခကြေးငွေဦးစားပေး", + "settings_save_recipient_address" : "လက်ခံသူလိပ်စာကို သိမ်းဆည်းပါ။", + "settings_personal" : "ပုဂ္ဂိုလ်ရေး", + "settings_change_pin" : "ပင်နံပါတ်ပြောင်းပါ။", + "settings_change_language" : "ဘာသာစကားပြောင်းပါ။", + "settings_allow_biometrical_authentication" : "ဇီဝဗေဒဆိုင်ရာ အထောက်အထားစိစစ်ခြင်းကို ခွင့်ပြုပါ။", + "settings_dark_mode" : "အမှောင်မုဒ်", + "settings_transactions" : "ငွေပေးငွေယူ", + "settings_trades" : "ကုန်သွယ်မှုများ", + "settings_display_on_dashboard_list" : "ဒက်ရှ်ဘုတ်စာရင်းတွင် ပြသပါ။", + "settings_all" : "အားလုံး", + "settings_only_trades" : "အရောင်းအဝယ်တွေချည်းပဲ။", + "settings_only_transactions" : "အရောင်းအဝယ်များသာ", + "settings_none" : "တစ်ခုမှ", + "settings_support" : "အထောက်အပံ့", + "settings_terms_and_conditions" : "စည်းကမ်းနှင့်သတ်မှတ်ချက်များ", + "pin_is_incorrect" : "ပင်နံပါတ် မမှန်ပါ။", - "setup_pin" : "Setup PIN", - "enter_your_pin_again" : "Enter your pin again", - "setup_successful" : "Your PIN has been set up successfully!", + "setup_pin" : "ပင်နံပါတ်ကို စနစ်ထည့်သွင်းပါ။", + "enter_your_pin_again" : "သင့်ပင်နံပါတ်ကို ထပ်မံထည့်သွင်းပါ။", + "setup_successful" : "သင့်ပင်နံပါတ်ကို အောင်မြင်စွာ သတ်မှတ်ပြီးပါပြီ။", - "wallet_keys" : "Wallet seed/keys", - "wallet_seed" : "Wallet seed", - "private_key" : "Private key", - "public_key" : "Public key", - "view_key_private" : "View key (private)", - "view_key_public" : "View key (public)", - "spend_key_private" : "Spend key (private)", - "spend_key_public" : "Spend key (public)", - "copied_key_to_clipboard" : "Copied ${key} to Clipboard", + "wallet_keys" : "ပိုက်ဆံအိတ် အစေ့/သော့များ", + "wallet_seed" : "ပိုက်ဆံအိတ်စေ့", + "private_key" : "သီးသန့်သော့", + "public_key" : "အများသူငှာသော့", + "view_key_private" : "သော့ကိုကြည့်ရန် (သီးသန့်)", + "view_key_public" : "သော့ကိုကြည့်ရန် (အများပြည်သူ)", + "spend_key_private" : "သော့သုံးရန် (သီးသန့်)", + "spend_key_public" : "သုံးစွဲရန်သော့ (အများပြည်သူ)", + "copied_key_to_clipboard" : "${key} ကို Clipboard သို့ ကူးယူထားသည်။", - "new_subaddress_title" : "New address", - "new_subaddress_label_name" : "Label name", - "new_subaddress_create" : "Create", + "new_subaddress_title" : "လိပ်စာအသစ်", + "new_subaddress_label_name" : "အညွှန်းအမည်", + "new_subaddress_create" : "ဖန်တီးပါ။", - "address_label" : "Address label", + "address_label" : "လိပ်စာတံဆိပ်", - "subaddress_title" : "Subaddress list", + "subaddress_title" : "လိပ်စာစာရင်း", - "trade_details_title" : "Trade Details", - "trade_details_id" : "ID", - "trade_details_state" : "Status", - "trade_details_fetching" : "Fetching", - "trade_details_provider" : "Provider", - "trade_details_created_at" : "Created at", - "trade_details_pair" : "Pair", - "trade_details_copied" : "${title} copied to Clipboard", + "trade_details_title" : "ကုန်သွယ်မှုအသေးစိတ်", + "trade_details_id" : "အမှတ်သညာ", + "trade_details_state" : "အဆင့်အတန်း", + "trade_details_fetching" : "ခေါ်ယူခြင်း။", + "trade_details_provider" : "ပံ့ပိုးပေးသူ", + "trade_details_created_at" : "တွင်ဖန်တီးခဲ့သည်။", + "trade_details_pair" : "တွဲ", + "trade_details_copied" : "${title} ကို Clipboard သို့ ကူးယူထားသည်။", - "trade_history_title" : "Trade history", + "trade_history_title" : "ကုန်သွယ်မှုသမိုင်း", - "transaction_details_title" : "Transaction Details", - "transaction_details_transaction_id" : "Transaction ID", - "transaction_details_date" : "Date", - "transaction_details_height" : "Height", - "transaction_details_amount" : "Amount", - "transaction_details_fee" : "Fee", - "transaction_details_copied" : "${title} copied to Clipboard", - "transaction_details_recipient_address" : "Recipient addresses", + "transaction_details_title" : "ငွေပေးငွေယူအသေးစိတ်", + "transaction_details_transaction_id" : "ငွေပေးငွေယူ ID", + "transaction_details_date" : "ရက်စွဲ", + "transaction_details_height" : "အရပ်အမြင့်", + "transaction_details_amount" : "ပမာဏ", + "transaction_details_fee" : "ကြေး", + "transaction_details_copied" : "${title} ကို Clipboard သို့ ကူးယူထားသည်။", + "transaction_details_recipient_address" : "လက်ခံသူလိပ်စာများ", - "wallet_list_title" : "Monero Wallet", - "wallet_list_create_new_wallet" : "Create New Wallet", - "wallet_list_restore_wallet" : "Restore Wallet", - "wallet_list_load_wallet" : "Load wallet", - "wallet_list_loading_wallet" : "Loading ${wallet_name} wallet", - "wallet_list_failed_to_load" : "Failed to load ${wallet_name} wallet. ${error}", - "wallet_list_removing_wallet" : "Removing ${wallet_name} wallet", - "wallet_list_failed_to_remove" : "Failed to remove ${wallet_name} wallet. ${error}", + "wallet_list_title" : "Monero ပိုက်ဆံအိတ်", + "wallet_list_create_new_wallet" : "Wallet အသစ်ဖန်တီးပါ။", + "wallet_list_restore_wallet" : "ပိုက်ဆံအိတ်ကို ပြန်ယူပါ။", + "wallet_list_load_wallet" : "ပိုက်ဆံအိတ်ကို တင်ပါ။", + "wallet_list_loading_wallet" : "${wallet_name} ပိုက်ဆံအိတ်ကို ဖွင့်နေသည်။", + "wallet_list_failed_to_load" : "${wallet_name} ပိုက်ဆံအိတ်ကို ဖွင့်၍မရပါ။ ${error}", + "wallet_list_removing_wallet" : "${wallet_name} ပိုက်ဆံအိတ်ကို ဖယ်ရှားခြင်း။", + "wallet_list_failed_to_remove" : "${wallet_name} ပိုက်ဆံအိတ်ကို ဖယ်ရှား၍မရပါ။ ${error}", - "widgets_address" : "Address", - "widgets_restore_from_blockheight" : "Restore from blockheight", - "widgets_restore_from_date" : "Restore from date", - "widgets_or" : "or", - "widgets_seed" : "Seed", + "widgets_address" : "လိပ်စာ", + "widgets_restore_from_blockheight" : "အမြင့်မှ ပြန်လည်ရယူပါ။", + "widgets_restore_from_date" : "ရက်စွဲမှ ပြန်လည်ရယူပါ။", + "widgets_or" : "သို့မဟုတ်", + "widgets_seed" : "မျိုးစေ့", - "router_no_route" : "No route defined for ${name}", + "router_no_route" : "${name} အတွက် သတ်မှတ်ထားသော လမ်းကြောင်းမရှိပါ", - "error_text_account_name" : "Account name can only contain letters, numbers\nand must be between 1 and 15 characters long", - "error_text_contact_name" : "Contact name can't contain ` , ' \" symbols\nand must be between 1 and 32 characters long", - "error_text_address" : "Wallet address must correspond to the type\nof cryptocurrency", - "error_text_node_address" : "Please enter a iPv4 address", - "error_text_node_port" : "Node port can only contain numbers between 0 and 65535", - "error_text_payment_id" : "Payment ID can only contain from 16 to 64 chars in hex", - "error_text_xmr" : "XMR value can't exceed available balance.\nThe number of fraction digits must be less or equal to 12", - "error_text_fiat" : "Value of amount can't exceed available balance.\nThe number of fraction digits must be less or equal to 2", - "error_text_subaddress_name" : "Subaddress name can't contain ` , ' \" symbols\nand must be between 1 and 20 characters long", - "error_text_amount" : "Amount can only contain numbers", - "error_text_wallet_name" : "Wallet name can only contain letters, numbers, _ - symbols \nand must be between 1 and 33 characters long", - "error_text_keys" : "Wallet keys can only contain 64 chars in hex", - "error_text_crypto_currency" : "The number of fraction digits\nmust be less or equal to 12", - "error_text_minimal_limit" : "Trade for ${provider} is not created. Amount is less then minimal: ${min} ${currency}", - "error_text_maximum_limit" : "Trade for ${provider} is not created. Amount is more then maximum: ${max} ${currency}", - "error_text_limits_loading_failed" : "Trade for ${provider} is not created. Limits loading failed", - "error_text_template" : "Template name and address can't contain ` , ' \" symbols\nand must be between 1 and 106 characters long", + "error_text_account_name" : "အကောင့်အမည်သည် အက္ခရာများ၊ နံပါတ်များသာ ပါဝင်နိုင်သည်\nနှင့် စာလုံးရေ 1 နှင့် 15 ကြားရှိရပါမည်။", + "error_text_contact_name" : "အဆက်အသွယ်အမည်တွင် ` , ' \" သင်္ကေတများ မပါဝင်နိုင်ပါ\nနှင့် စာလုံးအရှည် 1 နှင့် 32 ကြားရှိရမည်", + "error_text_address" : "Wallet လိပ်စာသည် အမျိုးအစား\no cryptocurrency နှင့် ကိုက်ညီရပါမည်။", + "error_text_node_address" : "ကျေးဇူးပြု၍ iPv4 လိပ်စာကို ထည့်ပါ။", + "error_text_node_port" : "နော်ဒီဆိပ်ကမ်း တွင် 0 နှင့် 65535 အကြား နံပါတ်များသာ ပါဝင်နိုင်သည်။", + "error_text_payment_id" : "ငွေပေးချေမှု ID တွင် hex တွင် စာလုံး 16 လုံးမှ 64 လုံးသာ ပါဝင်နိုင်သည်။", + "error_text_xmr" : "XMR တန်ဖိုးသည် ရနိုင်သောလက်ကျန်ကို ကျော်လွန်၍မရပါ။\nအပိုင်းကိန်းဂဏန်းများ သည် 12 နှင့် လျော့နည်းရမည်", + "error_text_fiat" : "ပမာဏ၏တန်ဖိုးသည် ရနိုင်သောလက်ကျန်ကို မကျော်လွန်နိုင်ပါ။\nအပိုင်းကိန်းဂဏန်းအရေအတွက်သည် 2 နှင့် လျော့နည်းရမည်", + "error_text_subaddress_name" : "လိပ်စာခွဲအမည်တွင် ` , ' \" သင်္ကေတများ မပါဝင်နိုင်ပါ\nနှင့် စာလုံးရေ 1 နှင့် 20 ကြားရှိရမည်", + "error_text_amount" : "ပမာဏသည် နံပါတ်များသာ ပါဝင်နိုင်သည်။", + "error_text_wallet_name" : "ပိုက်ဆံအိတ်အမည်တွင် စာလုံးများ၊ နံပါတ်များ၊ _ - သင်္ကေတများသာ ပါဝင်နိုင်သည် \n နှင့် စာလုံးအရှည် 1 နှင့် 33 ကြားရှိရမည်", + "error_text_keys" : "ပိုက်ဆံအိတ်သော့များတွင် hex တွင် 64 လုံးသာပါဝင်နိုင်သည်။", + "error_text_crypto_currency" : "အပိုင်းကိန်းဂဏန်းများ၏ အရေအတွက်\nလျော့နည်းသည် သို့မဟုတ် 12 နှင့် ညီမျှရပါမည်။", + "error_text_minimal_limit" : "${provider} အတွက် ကုန်သွယ်မှုကို ဖန်တီးမထားပါ။ ပမာဏသည် အနည်းငယ်ထက်နည်းသည်- ${min} ${currency}", + "error_text_maximum_limit" : "${provider} အတွက် ကုန်သွယ်မှုကို ဖန်တီးမထားပါ။ ပမာဏသည် အများဆုံးထက် ပိုများသည်- ${max} ${currency}", + "error_text_limits_loading_failed" : "${provider} အတွက် ကုန်သွယ်မှုကို ဖန်တီးမထားပါ။ ကန့်သတ်ချက်များ တင်ခြင်း မအောင်မြင်ပါ။", + "error_text_template" : "နမူနာပုံစံအမည်နှင့် လိပ်စာတွင် ` , ' \" သင်္ကေတများ မပါဝင်နိုင်ပါ\nနှင့် စာလုံးအရှည် 1 နှင့် 106 ကြား ရှိရမည်", - "auth_store_ban_timeout" : "ban_timeout", - "auth_store_banned_for" : "Banned for ", - "auth_store_banned_minutes" : " minutes", - "auth_store_incorrect_password" : "Wrong PIN", - "wallet_store_monero_wallet" : "Monero Wallet", - "wallet_restoration_store_incorrect_seed_length" : "Incorrect seed length", + "auth_store_ban_timeout" : "အချိန်ကို ပိတ်ပင်ခြင်း", + "auth_store_banned_for" : "ပိတ်ပင်ထားသည်။", + "auth_store_banned_minutes" : " မိနစ်များ", + "auth_store_incorrect_password" : "ပင်နံပါတ် မှားနေသည်။", + "wallet_store_monero_wallet" : "Monero ပိုက်ဆံအိတ်", + "wallet_restoration_store_incorrect_seed_length" : "မျိုးစေ့အရှည် မမှန်ပါ။", - "full_balance" : "Full Balance", - "available_balance" : "Available Balance", + "full_balance" : "Balance အပြည့်", + "available_balance" : "လက်ကျန်ငွေ ရရှိနိုင်", "hidden_balance" : "Hidden Balance", - "sync_status_syncronizing" : "SYNCHRONIZING", - "sync_status_syncronized" : "SYNCHRONIZED", - "sync_status_not_connected" : "NOT CONNECTED", - "sync_status_starting_sync" : "STARTING SYNC", - "sync_status_failed_connect" : "DISCONNECTED", - "sync_status_connecting" : "CONNECTING", - "sync_status_connected" : "CONNECTED", - "sync_status_attempting_sync" : "ATTEMPTING SYNC", + "sync_status_syncronizing" : "ထပ်တူပြုခြင်း။", + "sync_status_syncronized" : "ထပ်တူပြုထားသည်။", + "sync_status_not_connected" : "မချိတ်ဆက်ပါ။", + "sync_status_starting_sync" : "စင့်ခ်လုပ်ခြင်း။", + "sync_status_failed_connect" : "အဆက်အသွယ်ဖြတ်ထားသည်။", + "sync_status_connecting" : "ချိတ်ဆက်ခြင်း။", + "sync_status_connected" : "ချိတ်ဆက်ထားသည်။", + "sync_status_attempting_sync" : "ချိန်ကိုက်ခြင်းကို ကြိုးစားနေသည်။", - "transaction_priority_slow" : "Slow", - "transaction_priority_regular" : "Regular", - "transaction_priority_medium" : "Medium", - "transaction_priority_fast" : "Fast", - "transaction_priority_fastest" : "Fastest", + "transaction_priority_slow" : "နှေးနှေး", + "transaction_priority_regular" : "ပုံမှန်အစည်းအဝေး", + "transaction_priority_medium" : "အလယ်အလတ်", + "transaction_priority_fast" : "မြန်သည်။", + "transaction_priority_fastest" : "အမြန်ဆုံး", - "trade_for_not_created" : "Trade for ${title} is not created.", - "trade_not_created" : "Trade not created", - "trade_id_not_found" : "Trade ${tradeId} of ${title} not found.", - "trade_not_found" : "Trade not found.", + "trade_for_not_created" : "${title} အတွက် ကုန်သွယ်မှုကို ဖန်တီးမထားပါ။", + "trade_not_created" : "ကုန်သွယ်မှု မဖန်တီးပါ။", + "trade_id_not_found" : "${title} ၏ ${tradeId} ကုန်သွယ်မှုကို ရှာမတွေ့ပါ။", + "trade_not_found" : "ကုန်သွယ်မှု မတွေ့။", - "trade_state_pending" : "Pending", - "trade_state_confirming" : "Confirming", - "trade_state_trading" : "Trading", - "trade_state_traded" : "Traded", - "trade_state_complete" : "Complete", - "trade_state_to_be_created" : "To be created", - "trade_state_unpaid" : "Unpaid", - "trade_state_underpaid" : "Underpaid", - "trade_state_paid_unconfirmed" : "Paid unconfirmed", - "trade_state_paid" : "Paid", - "trade_state_btc_sent" : "Btc sent", - "trade_state_timeout" : "Timeout", - "trade_state_created" : "Created", - "trade_state_finished" : "Finished", + "trade_state_pending" : "ဆိုင်းငံ့ထားသည်။", + "trade_state_confirming" : "အတည်ပြုခြင်း။", + "trade_state_trading" : "ရောင်းဝယ်ရေး", + "trade_state_traded" : "အရောင်းအဝယ်ဖြစ်ခဲ့သည်။", + "trade_state_complete" : "ပြီးအောင်", + "trade_state_to_be_created" : "ဖန်တီးဖို့", + "trade_state_unpaid" : "အခကြေးငွေမယူရသေး", + "trade_state_underpaid" : "ပေးချေမှုနည်းပါးသည်။", + "trade_state_paid_unconfirmed" : "အတည်မပြုနိုင်သေးပါ။", + "trade_state_paid" : "အခကြေးငွေ", + "trade_state_btc_sent" : "Btc ပို့လိုက်ပါတယ်။", + "trade_state_timeout" : "ခဏပွဲရပ်ခြင်း", + "trade_state_created" : "ဖန်တီးခဲ့သည်။", + "trade_state_finished" : "ပြီးပြီ။", - "change_language" : "Change language", - "change_language_to" : "Change language to ${language}?", + "change_language" : "ဘာသာစကားပြောင်းပါ။", + "change_language_to" : "ဘာသာစကားကို ${language} သို့ ပြောင်းမလား။", - "paste" : "Paste", - "restore_from_seed_placeholder" : "Please enter or paste your seed here", - "add_new_word" : "Add new word", - "incorrect_seed" : "The text entered is not valid.", + "paste" : "ငါးပိ", + "restore_from_seed_placeholder" : "သင့်အစေ့ကို ဤနေရာတွင် ထည့်ပါ သို့မဟုတ် ကူးထည့်ပါ။", + "add_new_word" : "စကားလုံးအသစ်ထည့်ပါ။", + "incorrect_seed" : "ထည့်သွင်းထားသော စာသားသည် မမှန်ကန်ပါ။", - "biometric_auth_reason" : "Scan your fingerprint to authenticate", - "version" : "Version ${currentVersion}", + "biometric_auth_reason" : "စစ်မှန်ကြောင်းအထောက်အထားပြရန် သင့်လက်ဗွေကို စကန်ဖတ်ပါ။", + "version" : "ဗားရှင်း ${currentVersion}", - "openalias_alert_title" : "Address Detected", - "openalias_alert_content" : "You will be sending funds to\n${recipient_name}", + "openalias_alert_title" : "လိပ်စာကို ရှာတွေ့သည်။", + "openalias_alert_content" : "သင်သည် \n${recipient_name} သို့ ရန်ပုံငွေများ ပေးပို့ပါမည်", - "card_address" : "Address:", - "buy" : "Buy", - "sell": "Sell", + "card_address" : "လိပ်စာ-", + "buy" : "ဝယ်ပါ။", + "sell" : "ရောင်း", - "placeholder_transactions" : "Your transactions will be displayed here", - "placeholder_contacts" : "Your contacts will be displayed here", + "placeholder_transactions" : "သင်၏ ငွေပေးငွေယူများကို ဤနေရာတွင် ပြသပါမည်။", + "placeholder_contacts" : "သင့်အဆက်အသွယ်များကို ဤနေရာတွင် ပြသပါမည်။", - "template" : "Template", - "confirm_delete_template" : "This action will delete this template. Do you wish to continue?", - "confirm_delete_wallet" : "This action will delete this wallet. Do you wish to continue?", + "template" : "ပုံစံခွက်", + "confirm_delete_template" : "ဤလုပ်ဆောင်ချက်သည် ဤပုံစံပြားကို ဖျက်လိုက်ပါမည်။ ဆက်လုပ်လိုပါသလား။", + "confirm_delete_wallet" : "ဤလုပ်ဆောင်ချက်သည် ဤပိုက်ဆံအိတ်ကို ဖျက်လိုက်ပါမည်။ ဆက်လုပ်လိုပါသလား။", - "picker_description" : "To choose ChangeNOW or MorphToken, please change your trading pair first", + "picker_description" : "ChangeNOW သို့မဟုတ် MorphToken ကိုရွေးချယ်ရန်၊ ကျေးဇူးပြု၍ သင်၏ကုန်သွယ်မှုအတွဲကို ဦးစွာပြောင်းလဲပါ။", - "change_wallet_alert_title" : "Change current wallet", - "change_wallet_alert_content" : "Do you want to change current wallet to ${wallet_name}?", + "change_wallet_alert_title" : "လက်ရှိပိုက်ဆံအိတ်ကို ပြောင်းပါ။", + "change_wallet_alert_content" : "လက်ရှိပိုက်ဆံအိတ်ကို ${wallet_name} သို့ ပြောင်းလိုပါသလား။", - "creating_new_wallet" : "Creating new wallet", - "creating_new_wallet_error" : "Error: ${description}", + "creating_new_wallet" : "ပိုက်ဆံအိတ်အသစ်ဖန်တီးခြင်း။", + "creating_new_wallet_error" : "အမှား- ${description}", - "seed_alert_title" : "Attention", - "seed_alert_content" : "The seed is the only way to recover your wallet. Have you written it down?", - "seed_alert_back" : "Go back", - "seed_alert_yes" : "Yes, I have", + "seed_alert_title" : "အာရုံ", + "seed_alert_content" : "မျိုးစေ့သည် သင့်ပိုက်ဆံအိတ်ကို ပြန်လည်ရယူရန် တစ်ခုတည်းသောနည်းလမ်းဖြစ်သည်။ ရေးပြီးပြီလား။", + "seed_alert_back" : "ပြန်သွားသည်", + "seed_alert_yes" : "ဟုတ်ကဲ့၊", - "exchange_sync_alert_content" : "Please wait until your wallet is synchronized", + "exchange_sync_alert_content" : "သင့်ပိုက်ဆံအိတ်ကို စင့်ခ်လုပ်ထားသည့်အချိန်အထိ စောင့်ပါ။", - "pre_seed_title" : "IMPORTANT", - "pre_seed_description" : "On the next page you will see a series of ${words} words. This is your unique and private seed and it is the ONLY way to recover your wallet in case of loss or malfunction. It is YOUR responsibility to write it down and store it in a safe place outside of the Cake Wallet app.", - "pre_seed_button_text" : "I understand. Show me my seed", + "pre_seed_title" : "အရေးကြီးသည်။", + "pre_seed_description" : "နောက်စာမျက်နှာတွင် ${words} စကားလုံးများ အတွဲလိုက်ကို တွေ့ရပါမည်။ ၎င်းသည် သင်၏ထူးခြားပြီး သီးသန့်မျိုးစေ့ဖြစ်ပြီး ပျောက်ဆုံးခြင်း သို့မဟုတ် ချွတ်ယွင်းမှုရှိပါက သင့်ပိုက်ဆံအိတ်ကို ပြန်လည်ရယူရန် တစ်ခုတည်းသောနည်းလမ်းဖြစ်သည်။ ၎င်းကို Cake Wallet အက်ပ်၏အပြင်ဘက်တွင် လုံခြုံသောနေရာတွင် သိမ်းဆည်းရန်မှာ သင်၏တာဝန်ဖြစ်သည်။", + "pre_seed_button_text" : "ကျွန်တော်နားလည်ပါတယ်။ ငါ့အမျိုးအနွယ်ကို ပြလော့", - "xmr_to_error" : "XMR.TO error", - "xmr_to_error_description" : "Invalid amount. Maximum limit 8 digits after the decimal point", + "xmr_to_error" : "XMR.TO အမှား", + "xmr_to_error_description" : "ပမာဏ မမှန်ပါ။ ဒဿမအမှတ်ပြီးနောက် ဂဏန်း ၈ လုံးတွင် အများဆုံးကန့်သတ်ချက်", - "provider_error" : "${provider} error", + "provider_error" : "${provider} အမှား", - "use_ssl" : "Use SSL", - "trusted" : "Trusted", + "use_ssl" : "SSL ကိုသုံးပါ။", + "trusted" : "ယုံတယ်။", - "color_theme" : "Color theme", - "light_theme" : "Light", - "bright_theme" : "Bright", - "dark_theme" : "Dark", - "enter_your_note" : "Enter your note…", - "note_optional" : "Note (optional)", - "note_tap_to_change" : "Note (tap to change)", - "view_in_block_explorer" : "View in Block Explorer", - "view_transaction_on" : "View Transaction on ", - "transaction_key" : "Transaction Key", - "confirmations" : "Confirmations", - "recipient_address" : "Recipient address", + "color_theme" : "အရောင်အပြင်အဆင်", + "light_theme" : "အလင်း", + "bright_theme" : "တောက်ပ", + "dark_theme" : "မှောငျမိုကျသော", + "enter_your_note" : "သင့်မှတ်စုကို ထည့်ပါ...", + "note_optional" : "မှတ်ချက် (ချန်လှပ်ထားနိုင်သည်)", + "note_tap_to_change" : "မှတ်ချက် (ပြောင်းလဲရန် တို့ပါ)", + "view_in_block_explorer" : "Block Explorer တွင်ကြည့်ရှုပါ။", + "view_transaction_on" : "ငွေလွှဲခြင်းကို ဖွင့်ကြည့်ပါ။", + "transaction_key" : "ငွေသွင်းငွေထုတ်ကီး", + "confirmations" : "အတည်ပြုချက်များ", + "recipient_address" : "လက်ခံသူလိပ်စာ", - "extra_id" : "Extra ID:", - "destination_tag" : "Destination tag:", - "memo" : "Memo:", + "extra_id" : "အပို ID-", + "destination_tag" : "ခရီးဆုံးအမှတ်-", + "memo" : "မှတ်စုတို:", - "backup" : "Backup", - "change_password" : "Change password", - "backup_password" : "Backup password", - "write_down_backup_password" : "Please write down your backup password, which is used for the import of your backup files.", - "export_backup" : "Export backup", - "save_backup_password" : "Please make sure that you have saved your backup password. You will not be able to import your backup files without it.", - "backup_file" : "Backup file", + "backup" : "မိတ္တူ", + "change_password" : "စကားဝှက်ကိုပြောင်းရန်", + "backup_password" : "စကားဝှက်ကို အရန်သိမ်းဆည်းပါ။", + "write_down_backup_password" : "သင်၏ အရန်ဖိုင်များကို တင်သွင်းရန်အတွက် အသုံးပြုသည့် သင်၏ အရန်စကားဝှက်ကို ချရေးပါ။", + "export_backup" : "အရန်ကူးထုတ်ရန်", + "save_backup_password" : "သင်၏ အရန်စကားဝှက်ကို သိမ်းဆည်းထားကြောင်း သေချာပါစေ။ ၎င်းမပါဘဲ သင်၏ အရန်ဖိုင်များကို တင်သွင်းနိုင်မည် မဟုတ်ပါ။", + "backup_file" : "အရန်ဖိုင်", - "edit_backup_password" : "Edit Backup Password", - "save_backup_password_alert" : "Save backup password", - "change_backup_password_alert" : "Your previous backup files will be not available to import with new backup password. New backup password will be used only for new backup files. Are you sure that you want to change backup password?", + "edit_backup_password" : "Backup Password ကို တည်းဖြတ်ပါ။", + "save_backup_password_alert" : "အရန်စကားဝှက်ကို သိမ်းဆည်းပါ။", + "change_backup_password_alert" : "အရန်စကားဝှက်အသစ်ဖြင့် သင်၏ယခင်မိတ္တူဖိုင်များကို တင်သွင်းရန် မရနိုင်ပါ။ အရန်စကားဝှက်အသစ်ကို အရန်ဖိုင်အသစ်အတွက်သာ အသုံးပြုပါမည်။ အရန်စကားဝှက်ကို ပြောင်းလိုသည်မှာ သေချာပါသလား။", - "enter_backup_password" : "Enter backup password here", - "select_backup_file" : "Select backup file", - "import" : "Import", - "please_select_backup_file" : "Please select backup file and enter backup password.", + "enter_backup_password" : "အရန်စကားဝှက်ကို ဤနေရာတွင် ထည့်ပါ။", + "select_backup_file" : "အရန်ဖိုင်ကို ရွေးပါ။", + "import" : "သွင်းကုန်", + "please_select_backup_file" : "အရန်ဖိုင်ကို ရွေးပြီး အရန်စကားဝှက်ကို ထည့်ပါ။", - "fixed_rate" : "Fixed rate", - "fixed_rate_alert" : "You will be able to enter receive amount when fixed rate mode is checked. Do you want to switch to fixed rate mode?", + "fixed_rate" : "ပုံသေနှုန်း", + "fixed_rate_alert" : "ပုံသေနှုန်းထားမုဒ်ကို စစ်ဆေးသည့်အခါ လက်ခံပမာဏကို ထည့်သွင်းနိုင်မည်ဖြစ်သည်။ ပုံသေနှုန်းမုဒ်သို့ ပြောင်းလိုပါသလား။", - "xlm_extra_info" : "Please don’t forget to specify the Memo ID while sending the XLM transaction for the exchange", - "xrp_extra_info" : "Please don’t forget to specify the Destination Tag while sending the XRP transaction for the exchange", + "xlm_extra_info" : "လဲလှယ်မှုအတွက် XLM ငွေလွှဲပို့နေစဉ် Memo ID ကို သတ်မှတ်ရန် မမေ့ပါနှင့်", + "xrp_extra_info" : "လဲလှယ်မှုအတွက် XRP ငွေလွှဲပို့နေစဉ် Destination Tag ကို သတ်မှတ်ရန် မမေ့ပါနှင့်", - "exchange_incorrect_current_wallet_for_xmr" : "If you want to exchange XMR from your Cake Wallet Monero balance, please switch to your Monero wallet first.", - "confirmed" : "Confirmed", - "unconfirmed" : "Unconfirmed", - "displayable" : "Displayable", + "exchange_incorrect_current_wallet_for_xmr" : "သင်၏ Cake Wallet Monero လက်ကျန်မှ XMR ကိုလဲလှယ်လိုပါက၊ သင်၏ Monero ပိုက်ဆံအိတ်သို့ ဦးစွာပြောင်းပါ။", + "confirmed" : "အတည်ပြုခဲ့သည်။", + "unconfirmed" : "အတည်မပြုနိုင်ပါ။", + "displayable" : "ပြသနိုင်သည်။", - "submit_request" : "submit a request", + "submit_request" : "တောင်းဆိုချက်တစ်ခုတင်ပြပါ။", - "buy_alert_content" : "Currently we only support the purchase of Bitcoin and Litecoin. To buy Bitcoin or Litecoin, please create or switch to your Bitcoin or Litecoin wallet.", - "sell_alert_content": "We currently only support the sale of Bitcoin. To sell Bitcoin, please create or switch to your Bitcoin wallet.", + "buy_alert_content" : "လောလောဆယ် ကျွန်ုပ်တို့သည် Bitcoin နှင့် Litecoin ဝယ်ယူမှုကိုသာ ပံ့ပိုးပေးပါသည်။ Bitcoin သို့မဟုတ် Litecoin ဝယ်ယူရန်၊ သင်၏ Bitcoin သို့မဟုတ် Litecoin ပိုက်ဆံအိတ်ကို ဖန်တီးပါ သို့မဟုတ် ပြောင်းပါ။", + "sell_alert_content" : "ကျွန်ုပ်တို့သည် လက်ရှိတွင် Bitcoin ရောင်းချခြင်းကိုသာ ပံ့ပိုးပေးပါသည်။ Bitcoin ရောင်းချရန်၊ သင်၏ Bitcoin ပိုက်ဆံအိတ်ကို ဖန်တီးပါ သို့မဟုတ် ပြောင်းပါ။", - "outdated_electrum_wallet_description" : "New Bitcoin wallets created in Cake now have a 24-word seed. It is mandatory that you create a new Bitcoin wallet and transfer all of your funds to the new 24-word wallet, and stop using wallets with a 12-word seed. Please do this immediately to secure your funds.", - "understand" : "I understand", + "outdated_electrum_wallet_description" : "ယခု Cake တွင်ဖန်တီးထားသော Bitcoin ပိုက်ဆံအိတ်အသစ်တွင် စကားလုံး 24 မျိုးရှိသည်။ Bitcoin ပိုက်ဆံအိတ်အသစ်တစ်ခုကို ဖန်တီးပြီး သင့်ငွေအားလုံးကို 24 စကားလုံးပိုက်ဆံအိတ်အသစ်သို့ လွှဲပြောင်းပြီး 12 စကားလုံးမျိုးစေ့ဖြင့် ပိုက်ဆံအိတ်များကို အသုံးပြုခြင်းကို ရပ်တန့်ရန် မဖြစ်မနေလိုအပ်ပါသည်။ သင့်ရန်ပုံငွေများကို လုံခြုံစေရန်အတွက် ၎င်းကိုချက်ချင်းလုပ်ဆောင်ပါ။", + "understand" : "ကျွန်တော်နားလည်ပါတယ်", - "apk_update" : "APK update", + "apk_update" : "APK အပ်ဒိတ်", - "buy_bitcoin" : "Buy Bitcoin", - "buy_with" : "Buy with", - "moonpay_alert_text" : "Value of the amount must be more or equal to ${minAmount} ${fiatCurrency}", + "buy_bitcoin" : "Bitcoin ကိုဝယ်ပါ။", + "buy_with" : "အတူဝယ်ပါ။", + "moonpay_alert_text" : "ပမာဏ၏တန်ဖိုးသည် ${minAmount} ${fiatCurrency} နှင့် ပိုနေရမည်", - "outdated_electrum_wallet_receive_warning": "If this wallet has a 12-word seed and was created in Cake, DO NOT deposit Bitcoin into this wallet. Any BTC transferred to this wallet may be lost. Create a new 24-word wallet (tap the menu at the top right, select Wallets, choose Create New Wallet, then select Bitcoin) and IMMEDIATELY move your BTC there. New (24-word) BTC wallets from Cake are secure", - "do_not_show_me": "Do not show me this again", + "outdated_electrum_wallet_receive_warning" : "ဤပိုက်ဆံအိတ်တွင် စာလုံး 12 လုံးပါပြီး ကိတ်မုန့်တွင် ဖန်တီးပါက၊ Bitcoin ကို ဤပိုက်ဆံအိတ်ထဲသို့ မထည့်ပါနှင့်။ ဤပိုက်ဆံအိတ်သို့ လွှဲပြောင်းပေးသည့် မည်သည့် BTC မဆို ဆုံးရှုံးနိုင်သည်။ 24 စကားလုံးပိုက်ဆံအိတ်အသစ်တစ်ခုဖန်တီးပါ (ညာဘက်အပေါ်ထောင့်ရှိမီနူးကိုနှိပ်ပါ၊ Wallets ကိုရွေးချယ်ပါ၊ ပိုက်ဆံအိတ်အသစ်ဖန်တီးရန်ကိုရွေးချယ်ပါ၊ ထို့နောက် Bitcoin ကိုရွေးချယ်ပါ) နှင့်သင်၏ BTC ကိုထိုနေရာသို့ချက်ချင်းရွှေ့ပါ။ Cake မှ (24 စာလုံး) BTC ပိုက်ဆံအိတ်အသစ်များသည် လုံခြုံပါသည်။", + "do_not_show_me" : "ဒါကို ထပ်မပြနဲ့", - "unspent_coins_title" : "Unspent coins", - "unspent_coins_details_title" : "Unspent coins details", - "freeze" : "Freeze", - "frozen" : "Frozen", - "coin_control" : "Coin control (optional)", + "unspent_coins_title" : "အသုံးမဝင်သော အကြွေစေ့များ", + "unspent_coins_details_title" : "အသုံးမဝင်သော အကြွေစေ့အသေးစိတ်များ", + "freeze" : "အေးခဲ", + "frozen" : "ဖြူဖြူ", + "coin_control" : "အကြွေစေ့ထိန်းချုပ်မှု (ချန်လှပ်ထားနိုင်သည်)", - "address_detected" : "Address detected", - "address_from_domain" : "This address is from ${domain} on Unstoppable Domains", + "address_detected" : "လိပ်စာကို တွေ့ရှိခဲ့သည်။", + "address_from_domain" : "ဤလိပ်စာသည် Unstoppable Domains ရှိ ${domain} မှဖြစ်သည်။", - "add_receiver" : "Add another receiver (optional)", + "add_receiver" : "အခြားလက်ခံသူ ထည့်ပါ (ချန်လှပ်ထားနိုင်သည်)", - "manage_yats" : "Manage Yats", - "yat_alert_title" : "Send and receive crypto more easily with Yat", - "yat_alert_content" : "Cake Wallet users can now send and receive all their favorite currencies with a one-of-a-kind emoji-based username.", - "get_your_yat" : "Get your Yat", - "connect_an_existing_yat" : "Connect an existing Yat", - "connect_yats": "Connect Yats", - "yat_address" : "Yat Address", - "yat" : "Yat", - "address_from_yat" : "This address is from ${emoji} on Yat", - "yat_error" : "Yat error", - "yat_error_content" : "No addresses linked with this Yat. Try another Yat", - "choose_address" : "\n\nPlease choose the address:", - "yat_popup_title" : "Your wallet address can be emojified.", - "yat_popup_content" : "You can now send and receive crypto in Cake Wallet with your Yat - a short, emoji-based username. Manage Yats at any time on the settings screen", - "second_intro_title" : "One emoji address to rule them all", - "second_intro_content" : "Your Yat is a single unique emoji address that replaces all of your long hexadecimal addresses for all of your currencies.", - "third_intro_title" : "Yat plays nicely with others", - "third_intro_content" : "Yats live outside of Cake Wallet, too. Any wallet address on earth can be replaced with a Yat!", - "learn_more" : "Learn More", - "search": "Search", - "search_language": "Search language", - "search_currency": "Search currency", - "new_template" : "New Template", - "electrum_address_disclaimer": "We generate new addresses each time you use one, but previous addresses continue to work", - "wallet_name_exists": "A wallet with that name already exists. Please choose a different name or rename the other wallet first.", - "market_place": "Marketplace", - "cake_pay_title": "Cake Pay Gift Cards", - "cake_pay_subtitle": "Buy discounted gift cards (USA only)", - "cake_pay_web_cards_title": "Cake Pay Web Cards", - "cake_pay_web_cards_subtitle": "Buy worldwide prepaid cards and gift cards", - "about_cake_pay": "Cake Pay allows you to easily buy gift cards with virtual assets, spendable instantly at over 150,000 merchants in the United States.", - "cake_pay_account_note": "Sign up with just an email address to see and purchase cards. Some are even available at a discount!", - "already_have_account": "Already have an account?", - "create_account": "Create Account", - "privacy_policy": "Privacy Policy", - "welcome_to_cakepay": "Welcome to Cake Pay!", - "sign_up": "Sign Up", - "forgot_password": "Forgot Password", - "reset_password": "Reset Password", - "gift_cards": "Gift Cards", - "setup_your_debit_card": "Set up your debit card", - "no_id_required": "No ID required. Top up and spend anywhere", - "how_to_use_card": "How to use this card", - "purchase_gift_card": "Purchase Gift Card", - "verification": "Verification", - "fill_code": "Please fill in the verification code provided to your email", - "dont_get_code": "Don't get code?", - "resend_code": "Please resend it", - "debit_card": "Debit Card", - "cakepay_prepaid_card": "CakePay Prepaid Debit Card", - "no_id_needed": "No ID needed!", - "frequently_asked_questions": "Frequently asked questions", - "debit_card_terms": "The storage and usage of your payment card number (and credentials corresponding to your payment card number) in this digital wallet are subject to the Terms and Conditions of the applicable cardholder agreement with the payment card issuer, as in effect from time to time.", - "please_reference_document": "Please reference the documents below for more information.", - "cardholder_agreement": "Cardholder Agreement", - "e_sign_consent": "E-Sign Consent", - "agree_and_continue": "Agree & Continue", - "email_address": "Email Address", - "agree_to": "By creating account you agree to the ", - "and": "and", - "enter_code": "Enter code", - "congratulations": "Congratulations!", - "you_now_have_debit_card": "You now have a debit card", - "min_amount" : "Min: ${value}", - "max_amount" : "Max: ${value}", - "enter_amount": "Enter Amount", - "billing_address_info": "If asked for a billing address, provide your shipping address", - "order_physical_card": "Order Physical Card", - "add_value": "Add value", - "activate": "Activate", - "get_a": "Get a ", - "digital_and_physical_card": " digital and physical prepaid debit card", - "get_card_note": " that you can reload with digital currencies. No additional information needed!", - "signup_for_card_accept_terms": "Sign up for the card and accept the terms.", - "add_fund_to_card": "Add prepaid funds to the cards (up to ${value})", - "use_card_info_two": "Funds are converted to USD when the held in the prepaid account, not in digital currencies.", - "use_card_info_three": "Use the digital card online or with contactless payment methods.", - "optionally_order_card": "Optionally order a physical card.", - "hide_details" : "Hide Details", - "show_details" : "Show Details", - "upto": "up to ${value}", - "discount": "Save ${value}%", - "gift_card_amount": "Gift Card Amount", - "bill_amount": "Bill Amount", - "you_pay": "You Pay", - "tip": "Tip:", - "custom": "custom", - "by_cake_pay": "by Cake Pay", - "expires": "Expires", + "manage_yats" : "Yats ကို စီမံပါ။", + "yat_alert_title" : "Yat ဖြင့် crypto ကိုပိုမိုလွယ်ကူစွာပေးပို့လက်ခံပါ။", + "yat_alert_content" : "Cake Wallet အသုံးပြုသူများသည် တစ်မျိုးတည်းသော အီမိုဂျီအခြေခံအသုံးပြုသူအမည်ဖြင့် ၎င်းတို့၏ စိတ်ကြိုက်ငွေကြေးအားလုံးကို ပေးပို့နိုင်ပါပြီ။", + "get_your_yat" : "မင်းရဲ့ Yat ကိုယူလိုက်ပါ။", + "connect_an_existing_yat" : "ရှိပြီးသား Yat ကို ချိတ်ဆက်ပါ။", + "connect_yats" : "Yats ကိုချိတ်ဆက်ပါ။", + "yat_address" : "Yat လိပ်စာ", + "yat" : "ယတ်", + "address_from_yat" : "ဤလိပ်စာသည် Yat ရှိ ${emoji} မှဖြစ်သည်။", + "yat_error" : "Yat အမှား", + "yat_error_content" : "ဤ Yat နှင့် ချိတ်ဆက်ထားသော လိပ်စာမရှိပါ။ နောက်ထပ် Yat စမ်းကြည့်ပါ။", + "choose_address" : "\n\nလိပ်စာကို ရွေးပါ-", + "yat_popup_title" : "သင့်ပိုက်ဆံအိတ်လိပ်စာကို emojified လုပ်နိုင်ပါသည်။", + "yat_popup_content" : "သင်၏ Yat - တိုတောင်းသော အီမိုဂျီအခြေခံအသုံးပြုသူအမည်ဖြင့် Cake Wallet တွင် crypto ကို ယခု ပေးပို့နိုင်ပါပြီ။ ဆက်တင်စခရင်ပေါ်တွင် Yats ကို အချိန်မရွေး စီမံခန့်ခွဲပါ။", + "second_intro_title" : "၎င်းတို့အားလုံးကို အုပ်ချုပ်ရန် အီမိုဂျီလိပ်စာတစ်ခု", + "second_intro_content" : "သင်၏ Yat သည် သင့်ငွေကြေးအားလုံးအတွက် သင်၏ ရှည်လျားသော ဆဋ္ဌမကိန်းဂဏန်းများအားလုံးကို အစားထိုးသည့် တစ်မူထူးခြားသော အီမိုဂျီလိပ်စာတစ်ခုဖြစ်သည်။", + "third_intro_title" : "Yat သည် အခြားသူများနှင့် ကောင်းစွာကစားသည်။", + "third_intro_content" : "Yats သည် Cake Wallet အပြင်ဘက်တွင် နေထိုင်ပါသည်။ ကမ္ဘာပေါ်ရှိ မည်သည့်ပိုက်ဆံအိတ်လိပ်စာကို Yat ဖြင့် အစားထိုးနိုင်ပါသည်။", + "learn_more" : "ပိုမိုသိရှိရန်", + "search" : "ရှာရန်", + "search_language" : "ဘာသာစကားရှာပါ။", + "search_currency" : "ငွေကြေးကိုရှာပါ။", + "new_template" : "ပုံစံအသစ်", + "electrum_address_disclaimer" : "သင်အသုံးပြုသည့်အချိန်တိုင်းတွင် ကျွန်ုပ်တို့သည် လိပ်စာအသစ်များကို ထုတ်ပေးသော်လည်း ယခင်လိပ်စာများသည် ဆက်လက်အလုပ်လုပ်နေပါသည်။", + "wallet_name_exists" : "ထိုအမည်ဖြင့် ပိုက်ဆံအိတ်တစ်ခု ရှိနှင့်ပြီးဖြစ်သည်။ အခြားအမည်တစ်ခုကို ရွေးပါ သို့မဟုတ် အခြားပိုက်ဆံအိတ်ကို ဦးစွာ အမည်ပြောင်းပါ။", + "market_place" : "ဈေး", + "cake_pay_title" : "ကိတ်မုန့်လက်ဆောင်ကတ်များ", + "cake_pay_subtitle" : "လျှော့စျေးလက်ဆောင်ကတ်များဝယ်ပါ (USA သာ)", + "cake_pay_web_cards_title" : "Cake Pay ဝဘ်ကတ်များ", + "cake_pay_web_cards_subtitle" : "ကမ္ဘာတစ်ဝှမ်း ကြိုတင်ငွေပေးကတ်များနှင့် လက်ဆောင်ကတ်များကို ဝယ်ယူပါ။", + "about_cake_pay" : "Cake Pay သည် အမေရိကန်ပြည်ထောင်စုရှိ ကုန်သည် 150,000 ကျော်တွင် လက်ဆောင်ကတ်များကို လက်ဆောင်ကတ်များကို အလွယ်တကူ ဝယ်ယူနိုင်စေပါသည်။", + "cake_pay_account_note" : "ကတ်များကြည့်ရှုဝယ်ယူရန် အီးမေးလ်လိပ်စာတစ်ခုဖြင့် စာရင်းသွင်းပါ။ အချို့ကို လျှော့ဈေးဖြင့်ပင် ရနိုင်သည်။", + "already_have_account" : "အကောင့်ရှိပြီးသားလား?", + "create_account" : "အကောင့်ပြုလုပ်ပါ", + "privacy_policy" : "ကိုယ်ရေးအချက်အလက်မူဝါဒ", + "welcome_to_cakepay" : "Cake Pay မှကြိုဆိုပါသည်။", + "sign_up" : "ဆိုင်းအပ်", + "forgot_password" : "စကားဝှက်မေ့နေပါသလား", + "reset_password" : "လျှို့ဝှတ်နံပါတ်အားမူလအတိုင်းပြန်လုပ်သည်", + "gift_cards" : "လက်ဆောင်ကဒ်ပြား", + "setup_your_debit_card" : "သင့်ဒက်ဘစ်ကတ်ကို စနစ်ထည့်သွင်းပါ။", + "no_id_required" : "ID မလိုအပ်ပါ။ ငွေဖြည့်ပြီး ဘယ်နေရာမဆို သုံးစွဲပါ။", + "how_to_use_card" : "ဒီကတ်ကို ဘယ်လိုသုံးမလဲ။", + "purchase_gift_card" : "လက်ဆောင်ကတ်ဝယ်ပါ။", + "verification" : "စိစစ်ခြင်း။", + "fill_code" : "သင့်အီးမေးလ်သို့ ပေးထားသည့် အတည်ပြုကုဒ်ကို ဖြည့်ပါ။", + "dont_get_code" : "ကုဒ်ကို မရဘူးလား?", + "resend_code" : "ကျေးဇူးပြု၍ ပြန်ပို့ပါ။", + "debit_card" : "ဒက်ဘစ်ကတ်", + "cakepay_prepaid_card" : "CakePay ကြိုတင်ငွေဖြည့်ဒက်ဘစ်ကတ်", + "no_id_needed" : "ID မလိုအပ်ပါ။", + "frequently_asked_questions" : "မေးလေ့ရှိသောမေးခွန်းများ", + "debit_card_terms" : "ဤဒစ်ဂျစ်တယ်ပိုက်ဆံအိတ်ရှိ သင့်ငွေပေးချေမှုကတ်နံပါတ် (နှင့် သင့်ငွေပေးချေကတ်နံပါတ်နှင့် သက်ဆိုင်သောအထောက်အထားများ) ၏ သိုလှောင်မှုနှင့် အသုံးပြုမှုသည် အချိန်အခါနှင့်အမျှ သက်ရောက်မှုရှိသကဲ့သို့ ကတ်ကိုင်ဆောင်ထားသူ၏ သဘောတူညီချက်၏ စည်းကမ်းသတ်မှတ်ချက်များနှင့် ကိုက်ညီပါသည်။", + "please_reference_document" : "နောက်ထပ်အချက်အလက်များအတွက် အောက်ပါစာရွက်စာတမ်းများကို ကိုးကားပါ။", + "cardholder_agreement" : "ကတ်ကိုင်ဆောင်သူ သဘောတူညီချက်", + "e_sign_consent" : "E-Sign သဘောတူညီချက်", + "agree_and_continue" : "သဘောတူပြီး ရှေ့ဆက်ပါ။", + "email_address" : "အီးမေးလ်လိပ်စာ", + "agree_to" : "အကောင့်ဖန်တီးခြင်းဖြင့် သင်သည် ဤအရာကို သဘောတူပါသည်။", + "and" : "နှင့်", + "enter_code" : "ကုဒ်ထည့်ပါ။", + "congratulations" : "ဂုဏ်ယူပါသည်။", + "you_now_have_debit_card" : "ယခု သင့်တွင် ဒက်ဘစ်ကတ်တစ်ခုရှိသည်။", + "min_amount" : "အနည်းဆုံး- ${value}", + "max_amount" : "အများဆုံး- ${value}", + "enter_amount" : "ပမာဏကို ထည့်ပါ။", + "billing_address_info" : "ငွေပေးချေရမည့်လိပ်စာကို တောင်းဆိုပါက သင့်ပို့ဆောင်ရေးလိပ်စာကို ပေးပါ။", + "order_physical_card" : "ရုပ်ပိုင်းဆိုင်ရာကတ်ကို မှာယူပါ။", + "add_value" : "တန်ဖိုးထည့်ပါ။", + "activate" : "အသက်သွင်းပါ။", + "get_a" : "တစ်ခုရယူပါ။", + "digital_and_physical_card" : " ဒစ်ဂျစ်တယ်နှင့် ရုပ်ပိုင်းဆိုင်ရာ ကြိုတင်ငွေပေးချေသော ဒက်ဘစ်ကတ်", + "get_card_note" : " ဒစ်ဂျစ်တယ်ငွေကြေးများဖြင့် ပြန်လည်စတင်နိုင်သည်။ နောက်ထပ် အချက်အလက် မလိုအပ်ပါ။", + "signup_for_card_accept_terms" : "ကတ်အတွက် စာရင်းသွင်းပြီး စည်းကမ်းချက်များကို လက်ခံပါ။", + "add_fund_to_card" : "ကတ်များသို့ ကြိုတင်ငွေပေးငွေများ ထည့်ပါ (${value} အထိ)", + "use_card_info_two" : "ဒစ်ဂျစ်တယ်ငွေကြေးများဖြင့်မဟုတ်ဘဲ ကြိုတင်ငွေပေးချေသည့်အကောင့်တွင် သိမ်းထားသည့်အခါ ရန်ပုံငွေများကို USD သို့ ပြောင်းလဲပါသည်။", + "use_card_info_three" : "ဒစ်ဂျစ်တယ်ကတ်ကို အွန်လိုင်း သို့မဟုတ် ထိတွေ့မှုမဲ့ ငွေပေးချေမှုနည်းလမ်းများဖြင့် အသုံးပြုပါ။", + "optionally_order_card" : "ရုပ်ပိုင်းဆိုင်ရာကတ်ကို ရွေးချယ်နိုင်သည် ။", + "hide_details" : "အသေးစိတ်ကို ဝှက်ပါ။", + "show_details" : "အသေးစိတ်ပြ", + "upto" : "${value} အထိ", + "discount" : "${value}% ချွေတာ", + "gift_card_amount" : "လက်ဆောင်ကတ် ပမာဏ", + "bill_amount" : "ဘီလ်ပမာဏ", + "you_pay" : "သင်ပေးချေပါ။", + "tip" : "အကြံပြုချက်-", + "custom" : "စိတ်ကြိုက်", + "by_cake_pay" : "Cake Pay ဖြင့်", + "expires" : "သက်တမ်းကုန်သည်။", "mm": "MM", "yy": "YY", - "online": "Online", - "offline": "Offline", - "gift_card_number": "Gift card number", - "pin_number": "PIN number", - "total_saving": "Total Savings", - "last_30_days": "Last 30 days", - "avg_savings": "Avg. Savings", - "view_all": "View all", - "active_cards": "Active cards", - "delete_account": "Delete Account", - "cards": "Cards", - "active": "Active", - "redeemed": "Redeemed", - "gift_card_balance_note": "Gift cards with a balance remaining will appear here", - "gift_card_redeemed_note": "Gift cards you’ve redeemed will appear here", - "logout": "Logout", - "add_tip": "Add Tip", - "percentageOf": "of ${amount}", - "is_percentage": "is", - "search_category": "Search category", - "mark_as_redeemed": "Mark As Redeemed", - "more_options": "More Options", - "awaiting_payment_confirmation": "Awaiting Payment Confirmation", - "transaction_sent_notice": "If the screen doesn’t proceed after 1 minute, check a block explorer and your email.", - "agree": "Agree", - "in_store": "In Store", - "generating_gift_card": "Generating Gift Card", - "payment_was_received": "Your payment was received.", - "proceed_after_one_minute": "If the screen doesn’t proceed after 1 minute, check your email.", - "order_id": "Order ID", - "gift_card_is_generated": "Gift Card is generated", - "open_gift_card": "Open Gift Card", - "contact_support": "Contact Support", - "gift_cards_unavailable": "Gift cards are available for purchase only with Monero, Bitcoin, and Litecoin at this time", - "introducing_cake_pay": "Introducing Cake Pay!", - "cake_pay_learn_more": "Instantly purchase and redeem gift cards in the app!\nSwipe left to right to learn more.", - "automatic": "Automatic", - "fixed_pair_not_supported": "This fixed pair is not supported with the selected exchanges", - "variable_pair_not_supported": "This variable pair is not supported with the selected exchanges", - "none_of_selected_providers_can_exchange": "None of the selected providers can make this exchange", - "choose_one": "Choose one", - "choose_from_available_options": "Choose from the available options:", - "custom_redeem_amount": "Custom Redeem Amount", - "add_custom_redemption": "Add Custom Redemption", - "remaining": "remaining", - "delete_wallet": "Delete wallet", - "delete_wallet_confirm_message" : "Are you sure that you want to delete ${wallet_name} wallet?", - "low_fee": "Low fee", - "low_fee_alert": "You currently are using a low network fee priority. This could cause long waits, different rates, or canceled trades. We recommend setting a higher fee for a better experience.", - "ignor": "Ignore", - "use_suggested": "Use Suggested", - "do_not_share_warning_text" : "Do not share these with anyone else, including support.\n\nYour funds can and will be stolen!", - "help": "help", - "all_transactions": "All transactions", - "all_trades": "All trades", - "connection_sync": "Connection and sync", - "security_and_backup": "Security and backup", - "create_backup": "Create backup", - "privacy_settings": "Privacy settings", - "privacy": "Privacy", - "display_settings": "Display settings", - "other_settings": "Other settings", - "require_pin_after": "Require PIN after", - "always": "Always", - "minutes_to_pin_code": "${minute} minutes", - "disable_exchange": "Disable exchange", - "advanced_privacy_settings": "Advanced Privacy Settings", - "settings_can_be_changed_later": "These settings can be changed later in the app settings", - "add_custom_node": "Add New Custom Node", - "disable_fiat": "Disable fiat", - "fiat_api": "Fiat API", - "disabled": "Disabled", - "enabled": "Enabled", - "tor_only": "Tor only", - "unmatched_currencies": "Your current wallet's currency does not match that of the scanned QR", - "orbot_running_alert": "Please make sure Orbot is running prior to connecting to this node.", - "contact_list_contacts": "Contacts", - "contact_list_wallets": "My Wallets" + "online" : "အွန်လိုင်း", + "offline" : "အော့ဖ်လိုင်း", + "gift_card_number" : "လက်ဆောင်ကတ်နံပါတ်", + "pin_number" : "လျှို့ဝှက်နံပါတ်", + "total_saving" : "စုစုပေါင်းစုဆောင်းငွေ", + "last_30_days" : "လွန်ခဲ့သော ရက် 30", + "avg_savings" : "ပျမ်းမျှ စုဆောင်းငွေ", + "view_all" : "အားလုံးကိုကြည့်ရှုပါ။", + "active_cards" : "အသက်ဝင်သောကတ်များ", + "delete_account" : "အကောင့်ဖျက်ပါ။", + "cards" : "ကတ်များ", + "active" : "အသက်ဝင်သည်။", + "redeemed" : "ရွေးနှုတ်ခဲ့သည်။", + "gift_card_balance_note" : "လက်ကျန်လက်ကျန်ရှိသည့် လက်ဆောင်ကတ်များ ဤနေရာတွင် ပေါ်လာပါမည်။", + "gift_card_redeemed_note" : "သင်ရွေးယူထားသော လက်ဆောင်ကတ်များ ဤနေရာတွင် ပေါ်လာပါမည်။", + "logout" : "ထွက်လိုက်ပါ။", + "add_tip" : "အကြံပြုချက်ထည့်ပါ။", + "percentageOf" : "${amount} ၏", + "is_percentage" : "သည်", + "search_category" : "ရှာဖွေမှုအမျိုးအစား", + "mark_as_redeemed" : "ရွေးနှုတ်ခြင်းအဖြစ် အမှတ်အသားပြုပါ။", + "more_options" : "နောက်ထပ် ရွေးချယ်စရာများ", + "awaiting_payment_confirmation" : "ငွေပေးချေမှု အတည်ပြုချက်ကို စောင့်မျှော်နေပါသည်။", + "transaction_sent_notice" : "မျက်နှာပြင်သည် ၁ မိနစ်အကြာတွင် ဆက်လက်မလုပ်ဆောင်ပါက၊ ပိတ်ဆို့ရှာဖွေသူနှင့် သင့်အီးမေးလ်ကို စစ်ဆေးပါ။", + "agree" : "သဘောတူသည်။", + "in_store" : "စတိုးတွင်", + "generating_gift_card" : "လက်ဆောင်ကတ်ထုတ်ပေးခြင်း။", + "payment_was_received" : "သင့်ငွေပေးချေမှုကို လက်ခံရရှိခဲ့သည်။", + "proceed_after_one_minute" : "မျက်နှာပြင်သည် ၁ မိနစ်အကြာတွင် ဆက်လက်မလုပ်ဆောင်ပါက သင့်အီးမေးလ်ကို စစ်ဆေးပါ။", + "order_id" : "မှာယူမှု ID", + "gift_card_is_generated" : "Gift Card ထုတ်ပေးပါသည်။", + "open_gift_card" : "Gift Card ကိုဖွင့်ပါ။", + "contact_support" : "ပံ့ပိုးကူညီမှုထံ ဆက်သွယ်ပါ။", + "gift_cards_unavailable" : "လက်ဆောင်ကတ်များကို ယခုအချိန်တွင် Monero၊ Bitcoin နှင့် Litecoin တို့ဖြင့်သာ ဝယ်ယူနိုင်ပါပြီ။", + "introducing_cake_pay" : "Cake Pay ကို မိတ်ဆက်ခြင်း။", + "cake_pay_learn_more" : "အက်ပ်ရှိ လက်ဆောင်ကတ်များကို ချက်ချင်းဝယ်ယူပြီး ကူပွန်ဖြင့် လဲလှယ်ပါ။\nပိုမိုလေ့လာရန် ဘယ်မှညာသို့ ပွတ်ဆွဲပါ။", + "automatic" : "အလိုအလျောက်", + "fixed_pair_not_supported" : "ရွေးချယ်ထားသော ဖလှယ်မှုများဖြင့် ဤပုံသေအတွဲကို ပံ့ပိုးမထားပါ။", + "variable_pair_not_supported" : "ရွေးချယ်ထားသော ဖလှယ်မှုများဖြင့် ဤပြောင်းလဲနိုင်သောအတွဲကို ပံ့ပိုးမထားပါ။", + "none_of_selected_providers_can_exchange" : "ရွေးချယ်ထားသော ဝန်ဆောင်မှုပေးသူများမှ ဤလဲလှယ်မှုကို ပြုလုပ်၍မရပါ။", + "choose_one" : "တစ်ခုရွေးပါ။", + "choose_from_available_options" : "ရနိုင်သောရွေးချယ်မှုများမှ ရွေးပါ-", + "custom_redeem_amount" : "စိတ်ကြိုက်သုံးငွေပမာဏ", + "add_custom_redemption" : "စိတ်ကြိုက်ရွေးယူမှုကို ထည့်ပါ။", + "remaining" : "ကျန်", + "delete_wallet" : "ပိုက်ဆံအိတ်ကို ဖျက်ပါ။", + "delete_wallet_confirm_message" : "${wallet_name} ပိုက်ဆံအိတ်ကို ဖျက်လိုသည်မှာ သေချာပါသလား။", + "low_fee" : "အနိမ့်ကြေး", + "low_fee_alert" : "သင်သည် လက်ရှိတွင် သက်သာသော ကွန်ရက်အခကြေးငွေဦးစားပေးကို အသုံးပြုနေပါသည်။ ၎င်းသည် အကြာကြီးစောင့်ဆိုင်းခြင်း၊ မတူညီသောနှုန်းထားများ သို့မဟုတ် ပယ်ဖျက်ထားသော ကုန်သွယ်မှုများကို ဖြစ်စေနိုင်သည်။ ပိုမိုကောင်းမွန်သော အတွေ့အကြုံအတွက် ပိုမိုမြင့်မားသော အခကြေးငွေ သတ်မှတ်ပေးရန် အကြံပြုအပ်ပါသည်။", + "ignor" : "လျစ်လျူရှုပါ။", + "use_suggested" : "အကြံပြုထားသည်ကို အသုံးပြုပါ။", + "do_not_share_warning_text" : "ပံ့ပိုးကူညီမှုအပါအဝင် ဤအရာများကို အခြားမည်သူနှင့်မျှ မမျှဝေပါနှင့်။\n\nသင့်ငွေများကို ခိုးယူခံရနိုင်သည်!", + "help" : "ကူညီပါ", + "all_transactions" : "အရောင်းအဝယ်အားလုံး", + "all_trades" : "ကုန်သွယ်မှုအားလုံး", + "connection_sync" : "ချိတ်ဆက်မှုနှင့် ထပ်တူပြုခြင်း။", + "security_and_backup" : "လုံခြုံရေးနှင့် မိတ္တူ", + "create_backup" : "အရန်သိမ်းခြင်းကို ဖန်တီးပါ။", + "privacy_settings" : "Privacy settings တွေကို", + "privacy" : "ကိုယ်ရေးကိုယ်တာ", + "display_settings" : "ပြသရန် ဆက်တင်များ", + "other_settings" : "အခြားဆက်တင်များ", + "require_pin_after" : "ပြီးနောက် PIN လိုအပ်ပါသည်။", + "always" : "အမြဲတမ်း", + "minutes_to_pin_code" : "${minute} မိနစ်", + "disable_exchange" : "လဲလှယ်မှုကို ပိတ်ပါ။", + "advanced_privacy_settings" : "အဆင့်မြင့် ကိုယ်ရေးကိုယ်တာ ဆက်တင်များ", + "settings_can_be_changed_later" : "အက်ပ်ဆက်တင်များတွင် ဤဆက်တင်များကို နောက်ပိုင်းတွင် ပြောင်းလဲနိုင်သည်။", + "add_custom_node" : "စိတ်ကြိုက် Node အသစ်ကို ထည့်ပါ။", + "disable_fiat" : "Fiat ကိုပိတ်ပါ။", + "fiat_api" : "Fiat API", + "disabled" : "မသန်စွမ်း", + "enabled" : "ဖွင့်ထားသည်။", + "tor_only" : "Tor သာ", + "unmatched_currencies" : "သင့်လက်ရှိပိုက်ဆံအိတ်၏ငွေကြေးသည် စကင်ဖတ်ထားသော QR နှင့် မကိုက်ညီပါ။", + "contact_list_contacts" : "အဆက်အသွယ်များ", + "contact_list_wallets" : "ကျွန်ုပ်၏ ပိုက်ဆံအိတ်များ" } From c647129e8b3f61ea1e6cc17574be8c91e8408b93 Mon Sep 17 00:00:00 2001 From: HardenedSteel Date: Fri, 20 Jan 2023 12:30:33 +0300 Subject: [PATCH 37/43] fix accidentally translated parameter + add Turkish to ReadME.md --- README.md | 1 + res/values/strings_tr.arb | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ebeb9d43d..a8432e75e 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,7 @@ Edit the applicable `strings_XX.arb` file in `res/values/` and open a pull reque - Korean - Arabic - Burmese +- Turkish ## Add a new language diff --git a/res/values/strings_tr.arb b/res/values/strings_tr.arb index 9263417d5..678b3609f 100644 --- a/res/values/strings_tr.arb +++ b/res/values/strings_tr.arb @@ -586,7 +586,7 @@ "digital_and_physical_card": " Dijital para birimleri ile para yükleyebileceğiniz ve ek bilgiye gerek olmayan", "get_card_note": " dijital ve fiziksel ön ödemeli banka kartı edinin!", "signup_for_card_accept_terms": "Kart için kaydol ve koşulları kabul et.", - "add_fund_to_card": "Ön ödemeli kartlara para ekle (En fazla yüklenebilir tutar: ${değer})", + "add_fund_to_card": "Ön ödemeli kartlara para ekle (En fazla yüklenebilir tutar: ${value})", "use_card_info_two": "Paralar, dijital para birimlerinde değil, ön ödemeli hesapta tutulduğunda USD'ye dönüştürülür.", "use_card_info_three": "Dijital kartı çevrimiçi olarak veya temassız ödeme yöntemleriyle kullanın.", "optionally_order_card": "İsteğe bağlı olarak fiziksel bir kart sipariş edin.", From b4fe38f78ff7eef9cc74521261ff6e15c38e743d Mon Sep 17 00:00:00 2001 From: Omar Hatem Date: Fri, 20 Jan 2023 16:52:16 +0200 Subject: [PATCH 38/43] Create pull request template --- .github/pull_request_template.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .github/pull_request_template.md diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 000000000..d7c1b7241 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,9 @@ +Issue Number (if Applicable): Fixes # + +# Description + +Please include a summary of the changes and which issue is fixed / feature is added. + +# Pull Request - Checklist + +- [ ] Initial Manual Tests Passed From 38012abb561169d1753f54231a0a2568dc4bf318 Mon Sep 17 00:00:00 2001 From: Justin Ehrenhofer Date: Mon, 23 Jan 2023 12:37:20 -0600 Subject: [PATCH 39/43] Change Ionia ToS links --- lib/src/screens/ionia/auth/ionia_create_account_page.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/src/screens/ionia/auth/ionia_create_account_page.dart b/lib/src/screens/ionia/auth/ionia_create_account_page.dart index 30a58850e..d2ced5dae 100644 --- a/lib/src/screens/ionia/auth/ionia_create_account_page.dart +++ b/lib/src/screens/ionia/auth/ionia_create_account_page.dart @@ -32,8 +32,8 @@ class IoniaCreateAccountPage extends BasePage { final FocusNode _emailFocus; final TextEditingController _emailController; - static const privacyPolicyUrl = 'https://ionia.docsend.com/view/jaqsmbq9w7dzvnqf'; - static const termsAndConditionsUrl = 'https://ionia.docsend.com/view/hi9awnwxr6mqgiqj'; + static const privacyPolicyUrl = 'https://ionia.docsend.com/view/jhjvdn7qq7k3ukwt'; + static const termsAndConditionsUrl = 'https://ionia.docsend.com/view/uceirymz2ijacq5g'; @override Widget middle(BuildContext context) { From 0dc7474e6232ff29dcd5eef19f0d016d80aaabb2 Mon Sep 17 00:00:00 2001 From: Justin Ehrenhofer Date: Mon, 23 Jan 2023 14:31:44 -0600 Subject: [PATCH 40/43] Bump Haven to 3.0.7 https://github.com/haven-protocol-org/haven-main/compare/v3.0.3...v3.0.7 --- scripts/android/build_haven.sh | 2 +- scripts/ios/build_haven.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/android/build_haven.sh b/scripts/android/build_haven.sh index ec5732e86..f745e942e 100755 --- a/scripts/android/build_haven.sh +++ b/scripts/android/build_haven.sh @@ -1,7 +1,7 @@ #!/bin/sh . ./config.sh -HAVEN_VERSION=tags/v3.0.3 +HAVEN_VERSION=tags/v3.0.7 HAVEN_SRC_DIR=${WORKDIR}/haven git clone https://github.com/haven-protocol-org/haven-main.git ${HAVEN_SRC_DIR} diff --git a/scripts/ios/build_haven.sh b/scripts/ios/build_haven.sh index d9974b060..8de8b4c83 100755 --- a/scripts/ios/build_haven.sh +++ b/scripts/ios/build_haven.sh @@ -4,7 +4,7 @@ HAVEN_URL="https://github.com/haven-protocol-org/haven-main.git" HAVEN_DIR_PATH="${EXTERNAL_IOS_SOURCE_DIR}/haven" -HAVEN_VERSION=tags/v3.0.3 +HAVEN_VERSION=tags/v3.0.7 BUILD_TYPE=release PREFIX=${EXTERNAL_IOS_DIR} DEST_LIB_DIR=${EXTERNAL_IOS_LIB_DIR}/haven From c1c49e878eb8d825c6630b9934095dae91f5010f Mon Sep 17 00:00:00 2001 From: OmarHatem Date: Tue, 24 Jan 2023 02:46:22 +0200 Subject: [PATCH 41/43] [skip ci] - Revert disabling UI error reporting as it will also disable some errors from the view models - Fix warnings in node list row (potential nullability issue fix) --- lib/main.dart | 5 +---- lib/src/screens/nodes/widgets/node_list_row.dart | 8 ++------ 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 78879bdb5..a8d0064f4 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -57,10 +57,7 @@ Future main() async { WidgetsFlutterBinding.ensureInitialized(); FlutterError.onError = (errorDetails) { - // if not a UI error - if (errorDetails.library != "widgets library") { - _onError(errorDetails); - } + _onError(errorDetails); }; /// A callback that is invoked when an unhandled error occurs in the root diff --git a/lib/src/screens/nodes/widgets/node_list_row.dart b/lib/src/screens/nodes/widgets/node_list_row.dart index 580aba170..90bb3eba1 100644 --- a/lib/src/screens/nodes/widgets/node_list_row.dart +++ b/lib/src/screens/nodes/widgets/node_list_row.dart @@ -1,9 +1,5 @@ -import 'package:cake_wallet/generated/i18n.dart'; -import 'package:cake_wallet/palette.dart'; import 'package:cake_wallet/src/screens/nodes/widgets/node_indicator.dart'; -import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart'; import 'package:cake_wallet/src/widgets/standard_list.dart'; -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; class NodeListRow extends StandardListRow { @@ -23,7 +19,7 @@ class NodeListRow extends StandardListRow { builder: (context, snapshot) { switch (snapshot.connectionState) { case ConnectionState.done: - return NodeIndicator(isLive: (snapshot.data as bool)??false); + return NodeIndicator(isLive: (snapshot.data as bool?) ?? false); default: return NodeIndicator(isLive: false); } @@ -40,7 +36,7 @@ class NodeHeaderListRow extends StandardListRow { return SizedBox( width: 20, child: Icon(Icons.add, - color: Theme.of(context).accentTextTheme!.subtitle1!.color!, size: 24.0), + color: Theme.of(context).accentTextTheme.subtitle1?.color, size: 24.0), ); } } From 33337f42d06acf636910b70ac9cb9f2011aa1c50 Mon Sep 17 00:00:00 2001 From: OmarHatem Date: Tue, 24 Jan 2023 03:06:40 +0200 Subject: [PATCH 42/43] [skip ci] merge master --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7f0653f93..96f59e704 100644 --- a/README.md +++ b/README.md @@ -102,8 +102,8 @@ Edit the applicable `strings_XX.arb` file in `res/values/` and open a pull reque - Korean - Thai - Arabic -- Burmese - Turkish +- Burmese ## Add a new language From ddd5b1ecb3637bf12993198a97723ec9a215ce61 Mon Sep 17 00:00:00 2001 From: OmarHatem Date: Wed, 25 Jan 2023 15:29:59 +0200 Subject: [PATCH 43/43] Fix QR scheme to compare with currency full name not the abbreviated one --- lib/view_model/send/send_view_model.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/view_model/send/send_view_model.dart b/lib/view_model/send/send_view_model.dart index b6604789a..e0ae5dab8 100644 --- a/lib/view_model/send/send_view_model.dart +++ b/lib/view_model/send/send_view_model.dart @@ -180,7 +180,8 @@ abstract class SendViewModelBase with Store { WalletType get walletType => _wallet.type; - String? get walletCurrencyName => _wallet.currency.name?.toLowerCase(); + String? get walletCurrencyName => + _wallet.currency.fullName?.toLowerCase() ?? _wallet.currency.name; bool get hasCurrecyChanger => walletType == WalletType.haven;