diff --git a/packages/at_onboarding_flutter/CHANGELOG.md b/packages/at_onboarding_flutter/CHANGELOG.md index 951da8f8a..f0c900f98 100644 --- a/packages/at_onboarding_flutter/CHANGELOG.md +++ b/packages/at_onboarding_flutter/CHANGELOG.md @@ -1,10 +1,21 @@ +## 6.1.10 + +- **FEAT** Language support added for: + - Spanish (Latin America) + - Portuguese + - Brazilian Portuguese + - Mandarin + - Cantonese + ## 6.1.9 + - build[deps]: Upgraded dependencies for the following packages: - at_client: 3.2.2 - at_client_mobile: 3.2.19 - at_auth: 2.0.7 - at_commons: 5.0.0 - at_utils: 3.0.19 + ## 6.1.8 - **CHORE**: Updated dependencies diff --git a/packages/at_onboarding_flutter/example/ios/Podfile.lock b/packages/at_onboarding_flutter/example/ios/Podfile.lock index d3e09e904..4942f9069 100644 --- a/packages/at_onboarding_flutter/example/ios/Podfile.lock +++ b/packages/at_onboarding_flutter/example/ios/Podfile.lock @@ -72,7 +72,6 @@ PODS: - Flutter - webview_flutter_wkwebview (0.0.1): - Flutter - - FlutterMacOS DEPENDENCIES: - at_backupkey_flutter (from `.symlinks/plugins/at_backupkey_flutter/ios`) @@ -91,7 +90,7 @@ DEPENDENCIES: - share_plus (from `.symlinks/plugins/share_plus/ios`) - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) - - webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/darwin`) + - webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/ios`) SPEC REPOS: trunk: @@ -135,7 +134,7 @@ EXTERNAL SOURCES: url_launcher_ios: :path: ".symlinks/plugins/url_launcher_ios/ios" webview_flutter_wkwebview: - :path: ".symlinks/plugins/webview_flutter_wkwebview/darwin" + :path: ".symlinks/plugins/webview_flutter_wkwebview/ios" SPEC CHECKSUMS: at_backupkey_flutter: 2fc3d01138175e41bce8b574387a47544c53e01b @@ -159,8 +158,8 @@ SPEC CHECKSUMS: shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 SwiftyGif: 6c3eafd0ce693cad58bb63d2b2fb9bacb8552780 url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe - webview_flutter_wkwebview: 0982481e3d9c78fd5c6f62a002fcd24fc791f1e4 + webview_flutter_wkwebview: 2a23822e9039b7b1bc52e5add778e5d89ad488d1 PODFILE CHECKSUM: 4e8f8b2be68aeea4c0d5beb6ff1e79fface1d048 -COCOAPODS: 1.14.3 +COCOAPODS: 1.15.2 diff --git a/packages/at_onboarding_flutter/example/lib/main.dart b/packages/at_onboarding_flutter/example/lib/main.dart index 74cfc0774..d6b2cdc54 100644 --- a/packages/at_onboarding_flutter/example/lib/main.dart +++ b/packages/at_onboarding_flutter/example/lib/main.dart @@ -38,6 +38,13 @@ class MyAppState extends State { bool isChangeLanguage = false; var _currentLocale = const Locale('en', ''); + final frenchLocale = const Locale('fr'); + final englishLocale = const Locale('en'); + final spanishLocale = const Locale('es'); + final portugueseLocale = const Locale('pt'); + final brazillianPortugueseLocale = const Locale('pt', 'BR'); + final chineseTraditionalLocale = const Locale.fromSubtags(languageCode: 'zh', scriptCode: 'Hant', countryCode: 'HK'); + final chineseSimplifiedLocale = const Locale.fromSubtags(languageCode: 'zh', scriptCode: 'Hans', countryCode: 'CN'); @override Widget build(BuildContext context) { @@ -67,9 +74,14 @@ class MyAppState extends State { GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], - supportedLocales: const [ - Locale('fr'), - Locale('en'), + supportedLocales: [ + englishLocale, + frenchLocale, + spanishLocale, + portugueseLocale, + brazillianPortugueseLocale, + chineseTraditionalLocale, + chineseSimplifiedLocale, ], themeMode: themeMode, home: Scaffold( @@ -177,16 +189,23 @@ class MyAppState extends State { children: [ const Text("Change language:"), const SizedBox(width: 10), - DropdownButton( + DropdownButton( onChanged: (value) { setState(() { - value == 'en' ? _currentLocale = const Locale('en') : _currentLocale = const Locale('fr'); + _currentLocale = value!; }); }, - value: _currentLocale.languageCode, - items: const [ - DropdownMenuItem(value: 'en', child: Text('English')), - DropdownMenuItem(value: 'fr', child: Text('French')), + value: _currentLocale, + items: [ + DropdownMenuItem(value: englishLocale, child: const Text('English')), + DropdownMenuItem(value: frenchLocale, child: const Text('French')), + DropdownMenuItem(value: spanishLocale, child: const Text('Spanish')), + DropdownMenuItem(value: portugueseLocale, child: const Text('Portuguese')), + DropdownMenuItem( + value: brazillianPortugueseLocale, child: const Text('Brazilian Portuguese')), + DropdownMenuItem( + value: chineseTraditionalLocale, child: const Text('Chinese (Traditional)')), + DropdownMenuItem(value: chineseSimplifiedLocale, child: const Text('Chinese (Simplified)')), ], ) ], diff --git a/packages/at_onboarding_flutter/example/macos/Podfile.lock b/packages/at_onboarding_flutter/example/macos/Podfile.lock index 0403151df..23b512376 100644 --- a/packages/at_onboarding_flutter/example/macos/Podfile.lock +++ b/packages/at_onboarding_flutter/example/macos/Podfile.lock @@ -65,13 +65,13 @@ SPEC CHECKSUMS: at_file_saver: 1fc6ed722f17c7a20ce79cce168d1100fcad4b95 biometric_storage: 43caa6e7ef00e8e19c074216e7e1786dacda9e76 device_info_plus: ce1b7762849d3ec103d0e0517299f2db7ad60720 - file_selector_macos: 54fdab7caa3ac3fc43c9fac4d7d8d231277f8cf2 + file_selector_macos: cc3858c981fe6889f364731200d6232dac1d812d FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 - package_info_plus: fa739dd842b393193c5ca93c26798dff6e3d0e0c + package_info_plus: 12f1c5c2cfe8727ca46cbd0b26677728972d9a5b path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 - share_plus: 36537c04ce0c3e3f5bd297ce4318b6d5ee5fd6cf + share_plus: 1fa619de8392a4398bfaf176d441853922614e89 shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 - url_launcher_macos: 5f437abeda8c85500ceb03f5c1938a8c5a705399 + url_launcher_macos: c82c93949963e55b228a30115bd219499a6fe404 webview_flutter_wkwebview: 0982481e3d9c78fd5c6f62a002fcd24fc791f1e4 PODFILE CHECKSUM: 353c8bcc5d5b0994e508d035b5431cfe18c1dea7 diff --git a/packages/at_onboarding_flutter/example/pubspec.yaml b/packages/at_onboarding_flutter/example/pubspec.yaml index c0f0336b2..19bcdfc31 100644 --- a/packages/at_onboarding_flutter/example/pubspec.yaml +++ b/packages/at_onboarding_flutter/example/pubspec.yaml @@ -46,8 +46,6 @@ dev_dependencies: flutter_lints: ^4.0.0 flutter_test: sdk: flutter - - # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/packages/at_onboarding_flutter/lib/at_onboarding.dart b/packages/at_onboarding_flutter/lib/at_onboarding.dart index 7ec312245..6dd052c7b 100644 --- a/packages/at_onboarding_flutter/lib/at_onboarding.dart +++ b/packages/at_onboarding_flutter/lib/at_onboarding.dart @@ -1,184 +1,5 @@ -import 'dart:io'; +library at_onboarding_legacy; -import 'package:at_onboarding_flutter/at_onboarding_result.dart'; -import 'package:at_onboarding_flutter/localizations/generated/l10n.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_activate_screen.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_intro_screen.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_reset_screen.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_start_screen.dart'; -import 'package:at_onboarding_flutter/services/at_onboarding_config.dart'; -import 'package:at_onboarding_flutter/services/at_onboarding_theme.dart'; -import 'package:at_onboarding_flutter/services/onboarding_service.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_app_constants.dart'; -import 'package:flutter/material.dart'; - -class AtOnboarding { - /// Using this function to get onboard atsing. - /// - /// @param context The build context. - /// @param config The config for the onboard - /// @param isSwitchingAtsign True - alway show UI for add new atsign. False - check onboard if existing atsing. Default is false - /// @param atsign The atsign name when change the primary atsign. - /// - /// Return [AtOnboardingResult] - static Future onboard({ - required BuildContext context, - required AtOnboardingConfig config, - bool isSwitchingAtsign = false, - String? atsign, - }) async { - AtOnboardingConstants.setApiKey(config.appAPIKey ?? - (AtOnboardingConstants.rootEnvironment.apikey ?? '')); - AtOnboardingConstants.rootDomain = - config.domain ?? AtOnboardingConstants.rootEnvironment.domain; - - /// Initial Setup - await _initialSetup(context); - - /// user sharing is not supported on Android, iOS and Linux. - if (Platform.isAndroid || Platform.isIOS || Platform.isLinux) { - config.showPopupSharedStorage = false; - } - - if (config.theme == null) { - final defaultConfig = config.copyWith( - theme: AtOnboardingTheme(), - ); - config = defaultConfig; - } - - if (!isSwitchingAtsign || (atsign ?? '').trim().isNotEmpty) { - if ((atsign ?? '').trim().isNotEmpty) { - await changePrimaryAtsign(atsign: atsign!); - } - - //Check if existing an atsign => return onboard success - // ignore: use_build_context_synchronously - AtOnboardingResult? result; - if (context.mounted) { - result = await showDialog( - context: context, - barrierDismissible: false, - builder: (_) => AtOnboardingStartScreen( - config: config, - ), - ); - } - - if (result is AtOnboardingResult) { - return result; - } - - return AtOnboardingResult.cancelled(); - } - - if (context.mounted) { - final result = await Navigator.push( - context, - MaterialPageRoute( - builder: (BuildContext context) { - return AtOnboardingIntroScreen( - config: config, - ); - }, - ), - ); - - if (result is AtOnboardingResult) { - //Update primary atsign after onboard success - if (result.status == AtOnboardingResultStatus.success && - result.atsign != null) { - await changePrimaryAtsign(atsign: result.atsign!); - } - return result; - } - } - - return AtOnboardingResult.cancelled(); - } - - static Future activateAccount({ - required BuildContext context, - required AtOnboardingConfig config, - }) async { - /// Initial Setup - await _initialSetup(context); - - if (context.mounted) { - final result = await Navigator.push( - context, - MaterialPageRoute( - builder: (BuildContext context) { - return AtOnboardingActivateScreen( - hideReferences: false, - config: config, - ); - }, - ), - ); - - if (result is AtOnboardingResult) { - return result; - } - } - - return AtOnboardingResult.cancelled(); - } - - static Future changePrimaryAtsign({required String atsign}) async { - return await OnboardingService.getInstance() - .changePrimaryAtsign(atsign: atsign); - } - - static Future reset({ - required BuildContext context, - required AtOnboardingConfig config, - }) async { - /// Initial Setup - await _initialSetup(context); - - if (context.mounted) { - final result = await Navigator.push(context, - MaterialPageRoute(builder: (BuildContext context) { - return AtOnboardingResetScreen(config: config); - })); - - if (result is AtOnboardingResetResult) { - return result; - } - } - - return AtOnboardingResetResult.cancelled; - } - - Future enableUsingSharedStorage() async { - if (Platform.isAndroid || Platform.isIOS || Platform.isLinux) { - throw UnsupportedError('user sharing not supported'); - } - - final result = - await OnboardingService.getInstance().enableUsingSharedStorage(); - return result; - } - - Future disableUsingSharedStorage() async { - if (Platform.isAndroid || Platform.isIOS || Platform.isLinux) { - throw UnsupportedError('user sharing not supported'); - } - - final result = - await OnboardingService.getInstance().disableUsingSharedStorage(); - return result; - } - - static Future _initialSetup(BuildContext context) async { - /// Configure Localization - const AppLocalizationDelegate _delegate = AppLocalizationDelegate(); - final currentLocal = Localizations.localeOf(context); - if (_delegate.isSupported(currentLocal)) { - _delegate.load(currentLocal); - } else { - _delegate.load(const Locale.fromSubtags(languageCode: 'en')); - } - } -} +@Deprecated( + "This is a legacy export and will be removed in a future version: use at_onboarding_flutter.dart instead") +export 'src/at_onboarding.dart'; diff --git a/packages/at_onboarding_flutter/lib/at_onboarding_flutter.dart b/packages/at_onboarding_flutter/lib/at_onboarding_flutter.dart index ca5e7ff79..231ba9b99 100644 --- a/packages/at_onboarding_flutter/lib/at_onboarding_flutter.dart +++ b/packages/at_onboarding_flutter/lib/at_onboarding_flutter.dart @@ -1,10 +1,14 @@ library at_onboarding_flutter; -export './utils/at_onboarding_app_constants.dart' show RootEnvironment; +// Re-export some important external dependencies export 'package:at_backupkey_flutter/at_backupkey_flutter.dart'; -export './at_onboarding.dart'; -export 'services/at_onboarding_config.dart'; -export 'at_onboarding_result.dart'; export 'package:at_client_mobile/at_client_mobile.dart'; -export './localizations/generated/l10n.dart'; -export './services/at_onboarding_theme.dart'; + +// Additional customizations +export 'generated/l10n.dart'; +// Core package requirements +export 'src/at_onboarding.dart'; +export 'src/at_onboarding_result.dart'; +export 'src/services/at_onboarding_config.dart'; +export 'src/services/at_onboarding_theme.dart'; +export 'src/utils/at_onboarding_app_constants.dart' show RootEnvironment; diff --git a/packages/at_onboarding_flutter/lib/at_onboarding_result.dart b/packages/at_onboarding_flutter/lib/at_onboarding_result.dart index f5f17d2b4..754389409 100644 --- a/packages/at_onboarding_flutter/lib/at_onboarding_result.dart +++ b/packages/at_onboarding_flutter/lib/at_onboarding_result.dart @@ -1,73 +1,5 @@ -/// The status of onboard's result -/// -/// Values include: success, error, cancel -/// -enum AtOnboardingResultStatus { - success, //Authenticate success - error, //Authenticate error - cancel, //User canceled -} +library at_onboarding_result_legacy; -enum AtOnboardingResetResult { - cancelled, - success, -} - -/// The result returned after onboard -class AtOnboardingResult { - /// Status of result - AtOnboardingResultStatus status; - - /// The message returned when onboard failed - String? message; - - /// The error code returned when onboard failed - String? errorCode; - - /// The atSign returned when onboard successfully - String? atsign; - - AtOnboardingResult._({ - required this.status, - this.message, - this.errorCode, - this.atsign, - }); - - /// Create instance with success status - /// - /// [atsign] The name of atSign - /// - factory AtOnboardingResult.success({ - required String atsign, - }) { - return AtOnboardingResult._( - status: AtOnboardingResultStatus.success, - atsign: atsign, - ); - } - - /// Create instance with error status - /// - /// [message] The message returned when onboard failed - /// - /// [errorCode] The error code returned when onboard failed - /// - factory AtOnboardingResult.error({ - String? message, - String? errorCode, - }) { - return AtOnboardingResult._( - status: AtOnboardingResultStatus.error, - message: message, - errorCode: errorCode, - ); - } - - /// Create instance with cancel status - factory AtOnboardingResult.cancelled() { - return AtOnboardingResult._( - status: AtOnboardingResultStatus.cancel, - ); - } -} +@Deprecated( + "This is a legacy export and will be removed in a future version: use at_onboarding_flutter.dart instead") +export 'src/at_onboarding_result.dart'; diff --git a/packages/at_onboarding_flutter/lib/at_onboarding_screens.dart b/packages/at_onboarding_flutter/lib/at_onboarding_screens.dart new file mode 100644 index 000000000..8664fc752 --- /dev/null +++ b/packages/at_onboarding_flutter/lib/at_onboarding_screens.dart @@ -0,0 +1,16 @@ +library at_onboarding_screens; + +export "src/screen/at_onboarding_accounts_screen.dart"; +export "src/screen/at_onboarding_activate_screen.dart"; +export "src/screen/at_onboarding_backup_screen.dart"; +export "src/screen/at_onboarding_generate_screen.dart"; +export "src/screen/at_onboarding_home_screen.dart"; +export "src/screen/at_onboarding_input_atsign_screen.dart"; +export "src/screen/at_onboarding_intro_screen.dart"; +export "src/screen/at_onboarding_otp_screen.dart"; +export "src/screen/at_onboarding_pair_screen.dart"; +export "src/screen/at_onboarding_qrcode_screen.dart"; +export "src/screen/at_onboarding_reference_screen.dart"; +export "src/screen/at_onboarding_reset_screen.dart"; +export "src/screen/at_onboarding_start_screen.dart"; +export "src/screen/at_onboarding_webview_screen.dart"; diff --git a/packages/at_onboarding_flutter/lib/at_onboarding_services.dart b/packages/at_onboarding_flutter/lib/at_onboarding_services.dart new file mode 100644 index 000000000..4a4c6e929 --- /dev/null +++ b/packages/at_onboarding_flutter/lib/at_onboarding_services.dart @@ -0,0 +1,15 @@ +library at_onboarding_services; + +export 'src/services/at_keys_file_upload_service.dart'; +export 'src/services/at_onboarding_backup_service.dart'; +export 'src/services/at_onboarding_theme.dart'; +export 'src/services/at_onboarding_tutorial_service.dart'; +export 'src/services/backend_service.dart'; +export 'src/services/free_atsign_service.dart'; +export 'src/services/onboarding_service.dart'; +export 'src/services/sdk_service.dart'; + +// Don't export this here even though it's a service, +// otherwise it will conflict with the at_onboarding_flutter.dart library +// Please leave this comment here to prevent future pain +// export 'src/services/at_onboarding_config.dart'; diff --git a/packages/at_onboarding_flutter/lib/at_onboarding_widgets.dart b/packages/at_onboarding_flutter/lib/at_onboarding_widgets.dart new file mode 100644 index 000000000..67e50bf71 --- /dev/null +++ b/packages/at_onboarding_flutter/lib/at_onboarding_widgets.dart @@ -0,0 +1,4 @@ +library at_onboarding_widgets; + +export 'src/widgets/at_onboarding_button.dart'; +export 'src/widgets/at_onboarding_dialog.dart'; diff --git a/packages/at_onboarding_flutter/lib/localizations/generated/intl/messages_all.dart b/packages/at_onboarding_flutter/lib/generated/intl/messages_all.dart similarity index 71% rename from packages/at_onboarding_flutter/lib/localizations/generated/intl/messages_all.dart rename to packages/at_onboarding_flutter/lib/generated/intl/messages_all.dart index f9e94e515..1d0e68a99 100644 --- a/packages/at_onboarding_flutter/lib/localizations/generated/intl/messages_all.dart +++ b/packages/at_onboarding_flutter/lib/generated/intl/messages_all.dart @@ -17,20 +17,44 @@ import 'package:intl/message_lookup_by_library.dart'; import 'package:intl/src/intl_helpers.dart'; import 'messages_en.dart' as messages_en; +import 'messages_es.dart' as messages_es; import 'messages_fr.dart' as messages_fr; +import 'messages_pt.dart' as messages_pt; +import 'messages_pt_BR.dart' as messages_pt_br; +import 'messages_zh.dart' as messages_zh; +import 'messages_zh_Hans_CH.dart' as messages_zh_hans_ch; +import 'messages_zh_Hant_HK.dart' as messages_zh_hant_hk; typedef Future LibraryLoader(); Map _deferredLibraries = { 'en': () => new SynchronousFuture(null), + 'es': () => new SynchronousFuture(null), 'fr': () => new SynchronousFuture(null), + 'pt': () => new SynchronousFuture(null), + 'pt_BR': () => new SynchronousFuture(null), + 'zh': () => new SynchronousFuture(null), + 'zh_Hans_CH': () => new SynchronousFuture(null), + 'zh_Hant_HK': () => new SynchronousFuture(null), }; MessageLookupByLibrary? _findExact(String localeName) { switch (localeName) { case 'en': return messages_en.messages; + case 'es': + return messages_es.messages; case 'fr': return messages_fr.messages; + case 'pt': + return messages_pt.messages; + case 'pt_BR': + return messages_pt_br.messages; + case 'zh': + return messages_zh.messages; + case 'zh_Hans_CH': + return messages_zh_hans_ch.messages; + case 'zh_Hant_HK': + return messages_zh_hant_hk.messages; default: return null; } diff --git a/packages/at_onboarding_flutter/lib/localizations/generated/intl/messages_en.dart b/packages/at_onboarding_flutter/lib/generated/intl/messages_en.dart similarity index 100% rename from packages/at_onboarding_flutter/lib/localizations/generated/intl/messages_en.dart rename to packages/at_onboarding_flutter/lib/generated/intl/messages_en.dart diff --git a/packages/at_onboarding_flutter/lib/generated/intl/messages_es.dart b/packages/at_onboarding_flutter/lib/generated/intl/messages_es.dart new file mode 100644 index 000000000..e6bace06f --- /dev/null +++ b/packages/at_onboarding_flutter/lib/generated/intl/messages_es.dart @@ -0,0 +1,235 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a es locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'es'; + + static String m0(givenAtsign) => + "El atSign no coincide. Por favor, proporciona el código QR de ${givenAtsign} para vincularlo."; + + static String m1(givenAtsign) => + "El atSign no coincide. Por favor, proporciona el archivo de clave de respaldo de ${givenAtsign} para vincularlo."; + + static String m2(atsign) => + "${atsign} ya estaba vinculado a este dispositivo. Primero elimina/reinicia este atSign del dispositivo para agregarlo."; + + static String m3(contactAddress) => + "¡Tiempo de espera de respuesta del servidor!\nPor favor, verifica tu conexión de red e inténtalo de nuevo. Contacta a ${contactAddress} si el problema persiste."; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "activate": MessageLookupByLibrary.simpleMessage("Activar"), + "activate_an_atSign": + MessageLookupByLibrary.simpleMessage("Activar un atSign"), + "already_have_an_atSign": + MessageLookupByLibrary.simpleMessage("¿Ya tienes un atSign?"), + "atSign_mismatches_need_to_provide_QRCode": m0, + "atSign_mismatches_need_to_provide_backupKey": m1, + "btn_activate_atSign": + MessageLookupByLibrary.simpleMessage("Activar atSign"), + "btn_already_have_atSign": + MessageLookupByLibrary.simpleMessage("¿Ya tienes un atSign?"), + "btn_cancel": MessageLookupByLibrary.simpleMessage("Cancelar"), + "btn_close": MessageLookupByLibrary.simpleMessage("Cerrar"), + "btn_continue": MessageLookupByLibrary.simpleMessage("CONTINUAR"), + "btn_generate_atSign": + MessageLookupByLibrary.simpleMessage("Generar un atSign gratuito"), + "btn_no": MessageLookupByLibrary.simpleMessage("No"), + "btn_pair": MessageLookupByLibrary.simpleMessage("Vincular"), + "btn_refresh": MessageLookupByLibrary.simpleMessage("Actualizar"), + "btn_remind_me_later": + MessageLookupByLibrary.simpleMessage("Recordarme más tarde"), + "btn_save": MessageLookupByLibrary.simpleMessage("GUARDAR"), + "btn_scan_QRCode": + MessageLookupByLibrary.simpleMessage("Escanear código QR"), + "btn_skip_tutorial": + MessageLookupByLibrary.simpleMessage("OMITIR TUTORIAL"), + "btn_upload_QRCode": + MessageLookupByLibrary.simpleMessage("Subir código QR"), + "btn_yes": MessageLookupByLibrary.simpleMessage("Sí"), + "btn_yes_continue": + MessageLookupByLibrary.simpleMessage("Sí, continuar"), + "enter_atSign_need_to_activate": MessageLookupByLibrary.simpleMessage( + "Ingresa el atSign que deseas activar"), + "enter_code": MessageLookupByLibrary.simpleMessage( + "Por favor, ingresa el código de verificación de 4 caracteres que se envió a tu dirección de correo electrónico"), + "enter_verification_code": MessageLookupByLibrary.simpleMessage( + "Ingresa el código de verificación"), + "enter_your_email_address": MessageLookupByLibrary.simpleMessage( + "Ingresa tu dirección de correo electrónico"), + "error_activate_server": MessageLookupByLibrary.simpleMessage( + "No se pudo activar el servidor. Por favor, contacta al administrador."), + "error_atSign_activated": MessageLookupByLibrary.simpleMessage( + "Este atSign ya ha sido activado. Por favor, sube tus atKeys para vincularlo con este dispositivo"), + "error_atSign_already_paired": m2, + "error_atSign_logged": MessageLookupByLibrary.simpleMessage( + "Este atSign ya ha sido activado y vinculado a este dispositivo"), + "error_authenticated_failed": + MessageLookupByLibrary.simpleMessage("Autenticación fallida"), + "error_enter_valid_email": MessageLookupByLibrary.simpleMessage( + "Ingresa una dirección de correo electrónico válida"), + "error_incorrect_QRFile": + MessageLookupByLibrary.simpleMessage("Archivo QR incorrecto"), + "error_invalid_atSign_provided": MessageLookupByLibrary.simpleMessage( + "Se proporcionó un atSign inválido. Por favor, contacta al administrador."), + "error_perform_operation": MessageLookupByLibrary.simpleMessage( + "No se pudo realizar la operación de lectura/escritura. Por favor, inténtalo de nuevo."), + "error_please_enter_email": MessageLookupByLibrary.simpleMessage( + "Por favor, ingresa una dirección de correo electrónico válida"), + "error_process_file": MessageLookupByLibrary.simpleMessage( + "Error al procesar el archivo"), + "error_processing": MessageLookupByLibrary.simpleMessage( + "Error en el procesamiento. Por favor, inténtalo de nuevo."), + "error_processing_files": MessageLookupByLibrary.simpleMessage( + "Error al procesar los archivos. Por favor, inténtalo de nuevo"), + "error_provide_backupKey": MessageLookupByLibrary.simpleMessage( + "Por favor, proporciona un archivo de clave de respaldo válido para continuar."), + "error_provide_relevant_backupKey": MessageLookupByLibrary.simpleMessage( + "Por favor, proporciona un archivo de clave de respaldo relevante para autenticarte."), + "error_provide_valid_QRCode": MessageLookupByLibrary.simpleMessage( + "Por favor, proporciona un código QR válido para autenticarte."), + "error_server_not_found": + MessageLookupByLibrary.simpleMessage("Servidor no encontrado"), + "error_server_response_timed_out": m3, + "error_server_unavailable": MessageLookupByLibrary.simpleMessage( + "El servidor no está disponible. Por favor, inténtalo más tarde."), + "error_unable_connect": MessageLookupByLibrary.simpleMessage( + "No se puede conectar. Por favor, verifica tu conexión de red e inténtalo de nuevo."), + "error_unable_to_authenticate": MessageLookupByLibrary.simpleMessage( + "No se pudo autenticar. Por favor, inténtalo de nuevo."), + "error_unable_to_connect_server": MessageLookupByLibrary.simpleMessage( + "No se pudo conectar al servidor. Por favor, inténtalo más tarde."), + "error_unable_to_perform_this_action": MessageLookupByLibrary.simpleMessage( + "No se puede realizar esta acción. Por favor, inténtalo de nuevo."), + "error_unknown": + MessageLookupByLibrary.simpleMessage("Error desconocido."), + "get_free_atSign": + MessageLookupByLibrary.simpleMessage("Obtener un atSign gratuito"), + "have_QRCode": + MessageLookupByLibrary.simpleMessage("¿Tienes un código QR?"), + "images": MessageLookupByLibrary.simpleMessage("imágenes"), + "invalid_QR": MessageLookupByLibrary.simpleMessage("QR inválido."), + "learn_about_atSign": + MessageLookupByLibrary.simpleMessage("Aprende más sobre atSign"), + "learn_more": MessageLookupByLibrary.simpleMessage("Aprende más"), + "loading_atSigns": + MessageLookupByLibrary.simpleMessage("Cargando atSigns"), + "msg_action_cannot_undone": MessageLookupByLibrary.simpleMessage( + "Advertencia: Esta acción no se puede deshacer"), + "msg_atSign_cannot_empty": MessageLookupByLibrary.simpleMessage( + "El atSign no puede estar vacío"), + "msg_atSign_not_registered": MessageLookupByLibrary.simpleMessage( + "Tu atSign aún no está registrado. Por favor, inténtalo con uno registrado."), + "msg_atSign_required": + MessageLookupByLibrary.simpleMessage("Se requiere un atSign."), + "msg_atSign_unreachable": MessageLookupByLibrary.simpleMessage( + "Tu atSign y el servidor son inaccesibles. Por favor, inténtalo de nuevo o contacta a support@atsign.com"), + "msg_auth_failed": + MessageLookupByLibrary.simpleMessage("Autenticación fallida"), + "msg_cannot_fetch_keys_from_chosen_file": + MessageLookupByLibrary.simpleMessage( + "No se pudieron obtener las claves del archivo seleccionado. Por favor, selecciona el archivo correcto"), + "msg_maximum_atSign_next": MessageLookupByLibrary.simpleMessage( + " para seleccionar uno de tus atSigns existentes."), + "msg_maximum_atSign_prev": MessageLookupByLibrary.simpleMessage( + "¡Ups! Ya tienes el número máximo de atSigns gratuitos. Por favor, inicia sesión en "), + "msg_refresh_atSign": MessageLookupByLibrary.simpleMessage( + "Actualiza hasta que veas un atSign que te guste, luego presiona Vincular"), + "msg_response_time_out": MessageLookupByLibrary.simpleMessage( + "Tiempo de espera de respuesta"), + "msg_save_atKey_in_secure_location": MessageLookupByLibrary.simpleMessage( + "Por favor, guarda tu clave en un lugar seguro (recomendamos Google Drive o iCloud Drive). La necesitarás para volver a iniciar sesión Y usar otras aplicaciones de atPlatform."), + "msg_shared_storage": MessageLookupByLibrary.simpleMessage( + "Esto te ahorrará el proceso de integrar este atSign en otras aplicaciones nuevamente."), + "msg_wait_fetching_atSign": MessageLookupByLibrary.simpleMessage( + "Por favor, espera mientras se obtiene el estado del atSign"), + "no_atSigns_paired_to_reset": MessageLookupByLibrary.simpleMessage( + "No hay atSigns vinculados para restablecer. "), + "no_permission": MessageLookupByLibrary.simpleMessage("Sin permiso"), + "note": MessageLookupByLibrary.simpleMessage("Nota:"), + "note_otp_content": MessageLookupByLibrary.simpleMessage( + " Si no recibiste nuestro correo electrónico:\n- Confirma que tu dirección de correo electrónico se ingresó correctamente.\n- Revisa tu carpeta de spam/correo no deseado o promociones."), + "note_pair_content": MessageLookupByLibrary.simpleMessage( + "Nota: No compartimos tu información personal ni la usamos para obtener ganancias financieras."), + "notice": MessageLookupByLibrary.simpleMessage("Aviso"), + "onboarding": MessageLookupByLibrary.simpleMessage("Integración"), + "pair_atSign": MessageLookupByLibrary.simpleMessage( + "Vincular un atSign usando tus atKeys"), + "processing": MessageLookupByLibrary.simpleMessage("Procesando..."), + "remove": MessageLookupByLibrary.simpleMessage("Eliminar"), + "resend_code": MessageLookupByLibrary.simpleMessage("Reenviar código"), + "reset": MessageLookupByLibrary.simpleMessage("Restablecer"), + "reset_description": MessageLookupByLibrary.simpleMessage( + "Esto eliminará el atSign seleccionado y sus detalles de esta aplicación solamente."), + "scan_your_QR": MessageLookupByLibrary.simpleMessage("¡Escanea tu QR!"), + "select_all": MessageLookupByLibrary.simpleMessage("Seleccionar todo"), + "select_atSign": + MessageLookupByLibrary.simpleMessage("Seleccionar atSigns"), + "select_atSign_to_reset": MessageLookupByLibrary.simpleMessage( + "Por favor, selecciona al menos un atSign para restablecer"), + "send_code": MessageLookupByLibrary.simpleMessage("Enviar código"), + "sub_upload_atKeys": MessageLookupByLibrary.simpleMessage( + "Sube tu archivo atKey. Este archivo se generó cuando activaste y vinculaste tu atSign y se te pidió que lo guardaras en un lugar seguro."), + "title_FAQ": + MessageLookupByLibrary.simpleMessage("Preguntas frecuentes"), + "title_activate_an_atSign": + MessageLookupByLibrary.simpleMessage("¿Activar un atSign?"), + "title_important": MessageLookupByLibrary.simpleMessage("¡IMPORTANTE!"), + "title_intro": MessageLookupByLibrary.simpleMessage( + "Esta aplicación fue construida en la plataforma atPlatform. Todas las aplicaciones atPlatform requieren un atSign. "), + "title_pair_atSign_next": MessageLookupByLibrary.simpleMessage( + "para vincular con este dispositivo"), + "title_pair_atSign_prev": + MessageLookupByLibrary.simpleMessage("Has seleccionado "), + "title_save_your_key": + MessageLookupByLibrary.simpleMessage("Guarda tu clave"), + "title_select_atSign": MessageLookupByLibrary.simpleMessage( + "Ya tienes algunos atSigns existentes. Por favor, selecciona un atSign o continúa con uno nuevo."), + "title_session_expired": + MessageLookupByLibrary.simpleMessage("Tu sesión ha expirado"), + "title_setting_up_your_atSign": + MessageLookupByLibrary.simpleMessage("Configurando tu atSign"), + "title_shared_storage": MessageLookupByLibrary.simpleMessage( + "¿Deseas compartir este atSign integrado con otras aplicaciones en atPlatform?"), + "tutorial_activate_your_atSign": MessageLookupByLibrary.simpleMessage( + "Toca aquí para activar tu atSign"), + "tutorial_generate_atSign": MessageLookupByLibrary.simpleMessage( + "Toca para generar un nuevo atSign gratuito"), + "tutorial_get_atSign": MessageLookupByLibrary.simpleMessage( + "Si no tienes un atSign, toca aquí para obtener uno"), + "tutorial_scan_QRCode": MessageLookupByLibrary.simpleMessage( + "Toca para escanear el código QR"), + "tutorial_upload_atSign_key": MessageLookupByLibrary.simpleMessage( + "Si tienes un atSign, toca para subir la clave del atSign"), + "tutorial_upload_image_QRCode": MessageLookupByLibrary.simpleMessage( + "Toca para subir la imagen del código QR"), + "tutorial_upload_your_atKey": MessageLookupByLibrary.simpleMessage( + "Si tienes un atSign activado, toca para subir tus atKeys"), + "upload_atKeys": MessageLookupByLibrary.simpleMessage("Subir atKeys"), + "verification_code_has_been_sent_to": + MessageLookupByLibrary.simpleMessage( + "Se ha enviado un código de verificación a"), + "verification_code_sent_to": MessageLookupByLibrary.simpleMessage( + "Código de verificación enviado a"), + "verify_and_login": + MessageLookupByLibrary.simpleMessage("Verificar e iniciar sesión"), + "your_registered_email": MessageLookupByLibrary.simpleMessage( + "tu correo electrónico registrado.") + }; +} diff --git a/packages/at_onboarding_flutter/lib/localizations/generated/intl/messages_fr.dart b/packages/at_onboarding_flutter/lib/generated/intl/messages_fr.dart similarity index 100% rename from packages/at_onboarding_flutter/lib/localizations/generated/intl/messages_fr.dart rename to packages/at_onboarding_flutter/lib/generated/intl/messages_fr.dart diff --git a/packages/at_onboarding_flutter/lib/generated/intl/messages_pt.dart b/packages/at_onboarding_flutter/lib/generated/intl/messages_pt.dart new file mode 100644 index 000000000..5d01c9d33 --- /dev/null +++ b/packages/at_onboarding_flutter/lib/generated/intl/messages_pt.dart @@ -0,0 +1,235 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a pt locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'pt'; + + static String m0(givenAtsign) => + "O atSign não coincide. Por favor, forneça o código QR de ${givenAtsign} para emparelhar."; + + static String m1(givenAtsign) => + "O atSign não coincide. Por favor, forneça o ficheiro de chave de backup de ${givenAtsign} para emparelhar."; + + static String m2(atsign) => + "O ${atsign} já estava emparelhado com este dispositivo. Primeiro remova/redefina este atSign do dispositivo para adicionar."; + + static String m3(contactAddress) => + "Tempo de espera de resposta do servidor!\nPor favor, verifique a sua ligação à internet e tente novamente. Contacte ${contactAddress} se o problema persistir."; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "activate": MessageLookupByLibrary.simpleMessage("Ativar"), + "activate_an_atSign": + MessageLookupByLibrary.simpleMessage("Ativar um atSign"), + "already_have_an_atSign": + MessageLookupByLibrary.simpleMessage("Já tem um atSign?"), + "atSign_mismatches_need_to_provide_QRCode": m0, + "atSign_mismatches_need_to_provide_backupKey": m1, + "btn_activate_atSign": + MessageLookupByLibrary.simpleMessage("Ativar atSign"), + "btn_already_have_atSign": + MessageLookupByLibrary.simpleMessage("Já tem um atSign?"), + "btn_cancel": MessageLookupByLibrary.simpleMessage("Cancelar"), + "btn_close": MessageLookupByLibrary.simpleMessage("Fechar"), + "btn_continue": MessageLookupByLibrary.simpleMessage("CONTINUAR"), + "btn_generate_atSign": + MessageLookupByLibrary.simpleMessage("Gerar um atSign gratuito"), + "btn_no": MessageLookupByLibrary.simpleMessage("Não"), + "btn_pair": MessageLookupByLibrary.simpleMessage("Emparelhar"), + "btn_refresh": MessageLookupByLibrary.simpleMessage("Atualizar"), + "btn_remind_me_later": + MessageLookupByLibrary.simpleMessage("Lembrar-me mais tarde"), + "btn_save": MessageLookupByLibrary.simpleMessage("GUARDAR"), + "btn_scan_QRCode": + MessageLookupByLibrary.simpleMessage("Ler código QR"), + "btn_skip_tutorial": + MessageLookupByLibrary.simpleMessage("Saltar Tutorial"), + "btn_upload_QRCode": + MessageLookupByLibrary.simpleMessage("Carregar código QR"), + "btn_yes": MessageLookupByLibrary.simpleMessage("Sim"), + "btn_yes_continue": + MessageLookupByLibrary.simpleMessage("Sim, continuar"), + "enter_atSign_need_to_activate": MessageLookupByLibrary.simpleMessage( + "Introduza o atSign que pretende ativar"), + "enter_code": MessageLookupByLibrary.simpleMessage( + "Por favor, introduza o código de verificação de 4 caracteres que foi enviado para o seu endereço de e-mail"), + "enter_verification_code": MessageLookupByLibrary.simpleMessage( + "Introduzir código de verificação"), + "enter_your_email_address": MessageLookupByLibrary.simpleMessage( + "Introduza o seu endereço de e-mail"), + "error_activate_server": MessageLookupByLibrary.simpleMessage( + "Não foi possível ativar o servidor. Contacte o administrador."), + "error_atSign_activated": MessageLookupByLibrary.simpleMessage( + "Este atSign já foi ativado. Carregue as suas atKeys para emparelhar com este dispositivo"), + "error_atSign_already_paired": m2, + "error_atSign_logged": MessageLookupByLibrary.simpleMessage( + "Este atSign já foi ativado e emparelhado com este dispositivo"), + "error_authenticated_failed": + MessageLookupByLibrary.simpleMessage("Autenticação falhou"), + "error_enter_valid_email": MessageLookupByLibrary.simpleMessage( + "Introduza um endereço de e-mail válido"), + "error_incorrect_QRFile": + MessageLookupByLibrary.simpleMessage("Ficheiro QR incorreto"), + "error_invalid_atSign_provided": MessageLookupByLibrary.simpleMessage( + "O atSign fornecido é inválido. Contacte o administrador."), + "error_perform_operation": MessageLookupByLibrary.simpleMessage( + "Não foi possível realizar a operação de leitura/escrita. Por favor, tente novamente."), + "error_please_enter_email": MessageLookupByLibrary.simpleMessage( + "Por favor, introduza um endereço de e-mail válido"), + "error_process_file": MessageLookupByLibrary.simpleMessage( + "Falha ao processar o ficheiro"), + "error_processing": MessageLookupByLibrary.simpleMessage( + "Falha no processamento. Por favor, tente novamente."), + "error_processing_files": MessageLookupByLibrary.simpleMessage( + "Falha ao processar os ficheiros. Por favor, tente novamente"), + "error_provide_backupKey": MessageLookupByLibrary.simpleMessage( + "Por favor, forneça um ficheiro de chave de backup válido para continuar."), + "error_provide_relevant_backupKey": MessageLookupByLibrary.simpleMessage( + "Por favor, forneça um ficheiro de chave de backup relevante para autenticação."), + "error_provide_valid_QRCode": MessageLookupByLibrary.simpleMessage( + "Por favor, forneça um código QR válido para autenticação."), + "error_server_not_found": + MessageLookupByLibrary.simpleMessage("Servidor não encontrado"), + "error_server_response_timed_out": m3, + "error_server_unavailable": MessageLookupByLibrary.simpleMessage( + "Servidor indisponível. Por favor, tente novamente mais tarde."), + "error_unable_connect": MessageLookupByLibrary.simpleMessage( + "Não foi possível conectar. Por favor, verifique a sua ligação à internet e tente novamente."), + "error_unable_to_authenticate": MessageLookupByLibrary.simpleMessage( + "Não foi possível autenticar. Por favor, tente novamente."), + "error_unable_to_connect_server": MessageLookupByLibrary.simpleMessage( + "Não foi possível conectar ao servidor. Por favor, tente novamente mais tarde."), + "error_unable_to_perform_this_action": MessageLookupByLibrary.simpleMessage( + "Não foi possível executar esta ação. Por favor, tente novamente."), + "error_unknown": + MessageLookupByLibrary.simpleMessage("Erro desconhecido."), + "get_free_atSign": + MessageLookupByLibrary.simpleMessage("Obter um atSign gratuito"), + "have_QRCode": + MessageLookupByLibrary.simpleMessage("Tem um código QR?"), + "images": MessageLookupByLibrary.simpleMessage("imagens"), + "invalid_QR": MessageLookupByLibrary.simpleMessage("QR inválido."), + "learn_about_atSign": + MessageLookupByLibrary.simpleMessage("Saiba mais sobre atSign"), + "learn_more": MessageLookupByLibrary.simpleMessage("Saiba mais"), + "loading_atSigns": + MessageLookupByLibrary.simpleMessage("A carregar atSign"), + "msg_action_cannot_undone": MessageLookupByLibrary.simpleMessage( + "Atenção: Esta ação não pode ser desfeita"), + "msg_atSign_cannot_empty": MessageLookupByLibrary.simpleMessage( + "O atSign não pode estar vazio"), + "msg_atSign_not_registered": MessageLookupByLibrary.simpleMessage( + "O seu atSign ainda não está registado. Por favor, tente com um registado."), + "msg_atSign_required": + MessageLookupByLibrary.simpleMessage("É necessário um atSign."), + "msg_atSign_unreachable": MessageLookupByLibrary.simpleMessage( + "O seu atSign e o servidor são inacessíveis. Por favor, tente novamente ou contacte support@atsign.com"), + "msg_auth_failed": + MessageLookupByLibrary.simpleMessage("Autenticação falhou"), + "msg_cannot_fetch_keys_from_chosen_file": + MessageLookupByLibrary.simpleMessage( + "Não foi possível obter as chaves do ficheiro selecionado. Por favor, selecione o ficheiro correto"), + "msg_maximum_atSign_next": MessageLookupByLibrary.simpleMessage( + " para selecionar um dos seus atSigns existentes."), + "msg_maximum_atSign_prev": MessageLookupByLibrary.simpleMessage( + "Ops! Já tem o número máximo de atSigns gratuitos. Por favor, faça login em "), + "msg_refresh_atSign": MessageLookupByLibrary.simpleMessage( + "Atualize até ver um atSign que goste, depois carregue em Emparelhar"), + "msg_response_time_out": + MessageLookupByLibrary.simpleMessage("Tempo limite de resposta"), + "msg_save_atKey_in_secure_location": MessageLookupByLibrary.simpleMessage( + "Por favor, guarde a sua chave num local seguro (recomendamos Google Drive ou iCloud Drive). Vai precisar dela para voltar a iniciar sessão E usar outras aplicações atPlatform."), + "msg_shared_storage": MessageLookupByLibrary.simpleMessage( + "Isto poupará o processo de integrar este atSign noutras aplicações novamente."), + "msg_wait_fetching_atSign": MessageLookupByLibrary.simpleMessage( + "Por favor, aguarde enquanto obtemos o estado do atSign"), + "no_atSigns_paired_to_reset": MessageLookupByLibrary.simpleMessage( + "Não existem atSigns emparelhados para redefinir. "), + "no_permission": MessageLookupByLibrary.simpleMessage("Sem permissão"), + "note": MessageLookupByLibrary.simpleMessage("Nota:"), + "note_otp_content": MessageLookupByLibrary.simpleMessage( + "Se não recebeu o nosso e-mail:\n- Confirme se o seu endereço de e-mail está correto.\n- Verifique a sua pasta de spam/lixo ou promoções."), + "note_pair_content": MessageLookupByLibrary.simpleMessage( + "Nota: Não partilhamos a sua informação pessoal nem a usamos para ganhos financeiros."), + "notice": MessageLookupByLibrary.simpleMessage("Aviso"), + "onboarding": MessageLookupByLibrary.simpleMessage("Integração"), + "pair_atSign": MessageLookupByLibrary.simpleMessage( + "Emparelhar um atSign usando as suas atKeys"), + "processing": MessageLookupByLibrary.simpleMessage("A processar..."), + "remove": MessageLookupByLibrary.simpleMessage("Remover"), + "resend_code": MessageLookupByLibrary.simpleMessage("Reenviar código"), + "reset": MessageLookupByLibrary.simpleMessage("Redefinir"), + "reset_description": MessageLookupByLibrary.simpleMessage( + "Isto irá remover o atSign selecionado e os seus detalhes apenas desta aplicação."), + "scan_your_QR": MessageLookupByLibrary.simpleMessage("Leia o seu QR!"), + "select_all": MessageLookupByLibrary.simpleMessage("Selecionar tudo"), + "select_atSign": + MessageLookupByLibrary.simpleMessage("Selecionar atSigns"), + "select_atSign_to_reset": MessageLookupByLibrary.simpleMessage( + "Por favor, selecione pelo menos um atSign para redefinir"), + "send_code": MessageLookupByLibrary.simpleMessage("Enviar código"), + "sub_upload_atKeys": MessageLookupByLibrary.simpleMessage( + "Carregue o seu ficheiro atKey. Este ficheiro foi gerado quando ativou e emparelhou o seu atSign e foi-lhe pedido para o guardar num local seguro."), + "title_FAQ": MessageLookupByLibrary.simpleMessage("FAQ"), + "title_activate_an_atSign": + MessageLookupByLibrary.simpleMessage("Ativar um atSign?"), + "title_important": MessageLookupByLibrary.simpleMessage("IMPORTANTE!"), + "title_intro": MessageLookupByLibrary.simpleMessage( + "Esta aplicação foi construída na plataforma atPlatform. Todas as aplicações atPlatform requerem um atSign. "), + "title_pair_atSign_next": MessageLookupByLibrary.simpleMessage( + "para emparelhar com este dispositivo"), + "title_pair_atSign_prev": + MessageLookupByLibrary.simpleMessage("Selecionou "), + "title_save_your_key": + MessageLookupByLibrary.simpleMessage("Guarde a sua chave"), + "title_select_atSign": MessageLookupByLibrary.simpleMessage( + "Já tem alguns atSigns existentes. Por favor, selecione um atSign ou continue com um novo."), + "title_session_expired": + MessageLookupByLibrary.simpleMessage("A sua sessão expirou"), + "title_setting_up_your_atSign": + MessageLookupByLibrary.simpleMessage("A configurar o seu atSign"), + "title_shared_storage": MessageLookupByLibrary.simpleMessage( + "Deseja partilhar este atSign integrado com outras aplicações na atPlatform?"), + "tutorial_activate_your_atSign": MessageLookupByLibrary.simpleMessage( + "Toque aqui para ativar o seu atSign"), + "tutorial_generate_atSign": MessageLookupByLibrary.simpleMessage( + "Toque para gerar um novo atSign gratuito"), + "tutorial_get_atSign": MessageLookupByLibrary.simpleMessage( + "Se não tem um atSign, toque aqui para obter um"), + "tutorial_scan_QRCode": + MessageLookupByLibrary.simpleMessage("Toque para ler o código QR"), + "tutorial_upload_atSign_key": MessageLookupByLibrary.simpleMessage( + "Se tem um atSign, toque para carregar a chave do atSign"), + "tutorial_upload_image_QRCode": MessageLookupByLibrary.simpleMessage( + "Toque para carregar a imagem do código QR"), + "tutorial_upload_your_atKey": MessageLookupByLibrary.simpleMessage( + "Se tem um atSign ativado, toque para carregar as suas atKeys"), + "upload_atKeys": + MessageLookupByLibrary.simpleMessage("Carregar atKeys"), + "verification_code_has_been_sent_to": + MessageLookupByLibrary.simpleMessage( + "Um código de verificação foi enviado para"), + "verification_code_sent_to": MessageLookupByLibrary.simpleMessage( + "Código de verificação enviado para"), + "verify_and_login": + MessageLookupByLibrary.simpleMessage("Verificar e iniciar sessão"), + "your_registered_email": + MessageLookupByLibrary.simpleMessage("o seu e-mail registado.") + }; +} diff --git a/packages/at_onboarding_flutter/lib/generated/intl/messages_pt_BR.dart b/packages/at_onboarding_flutter/lib/generated/intl/messages_pt_BR.dart new file mode 100644 index 000000000..7e92bd3e4 --- /dev/null +++ b/packages/at_onboarding_flutter/lib/generated/intl/messages_pt_BR.dart @@ -0,0 +1,237 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a pt_BR locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'pt_BR'; + + static String m0(givenAtsign) => + "O atSign não confere. Forneça o código QR de ${givenAtsign} para emparelhar."; + + static String m1(givenAtsign) => + "O atSign não confere. Forneça o arquivo de chave de backup de ${givenAtsign} para emparelhar."; + + static String m2(atsign) => + "${atsign} já foi emparelhado com este dispositivo. Primeiro, remova/redefina este atSign do dispositivo para adicionar."; + + static String m3(contactAddress) => + "Tempo limite de resposta do servidor!\nVerifique sua conexão com a internet e tente novamente. Entre em contato com ${contactAddress} se o problema persistir."; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "activate": MessageLookupByLibrary.simpleMessage("Ativar"), + "activate_an_atSign": + MessageLookupByLibrary.simpleMessage("Ativar um atSign"), + "already_have_an_atSign": + MessageLookupByLibrary.simpleMessage("Já possui um atSign?"), + "atSign_mismatches_need_to_provide_QRCode": m0, + "atSign_mismatches_need_to_provide_backupKey": m1, + "btn_activate_atSign": + MessageLookupByLibrary.simpleMessage("Ativar atSign"), + "btn_already_have_atSign": + MessageLookupByLibrary.simpleMessage("Já possui um atSign?"), + "btn_cancel": MessageLookupByLibrary.simpleMessage("Cancelar"), + "btn_close": MessageLookupByLibrary.simpleMessage("Fechar"), + "btn_continue": MessageLookupByLibrary.simpleMessage("CONTINUAR"), + "btn_generate_atSign": + MessageLookupByLibrary.simpleMessage("Gerar um atSign gratuito"), + "btn_no": MessageLookupByLibrary.simpleMessage("Não"), + "btn_pair": MessageLookupByLibrary.simpleMessage("Emparelhar"), + "btn_refresh": MessageLookupByLibrary.simpleMessage("Atualizar"), + "btn_remind_me_later": + MessageLookupByLibrary.simpleMessage("Lembrar-me mais tarde"), + "btn_save": MessageLookupByLibrary.simpleMessage("SALVAR"), + "btn_scan_QRCode": + MessageLookupByLibrary.simpleMessage("Escanear código QR"), + "btn_skip_tutorial": + MessageLookupByLibrary.simpleMessage("Pular tutorial"), + "btn_upload_QRCode": + MessageLookupByLibrary.simpleMessage("Carregar código QR"), + "btn_yes": MessageLookupByLibrary.simpleMessage("Sim"), + "btn_yes_continue": + MessageLookupByLibrary.simpleMessage("Sim, continuar"), + "enter_atSign_need_to_activate": MessageLookupByLibrary.simpleMessage( + "Digite o atSign que deseja ativar"), + "enter_code": MessageLookupByLibrary.simpleMessage( + "Digite o código de verificação de 4 caracteres enviado para seu endereço de e-mail"), + "enter_verification_code": MessageLookupByLibrary.simpleMessage( + "Digite o código de verificação"), + "enter_your_email_address": MessageLookupByLibrary.simpleMessage( + "Digite seu endereço de e-mail"), + "error_activate_server": MessageLookupByLibrary.simpleMessage( + "Não foi possível ativar o servidor. Entre em contato com o administrador."), + "error_atSign_activated": MessageLookupByLibrary.simpleMessage( + "Este atSign já foi ativado. Carregue suas atKeys para emparelhar com este dispositivo"), + "error_atSign_already_paired": m2, + "error_atSign_logged": MessageLookupByLibrary.simpleMessage( + "Este atSign já foi ativado e emparelhado com este dispositivo"), + "error_authenticated_failed": + MessageLookupByLibrary.simpleMessage("Falha na autenticação"), + "error_enter_valid_email": MessageLookupByLibrary.simpleMessage( + "Digite um endereço de e-mail válido"), + "error_incorrect_QRFile": + MessageLookupByLibrary.simpleMessage("Arquivo QR incorreto"), + "error_invalid_atSign_provided": MessageLookupByLibrary.simpleMessage( + "O atSign fornecido é inválido. Entre em contato com o administrador."), + "error_perform_operation": MessageLookupByLibrary.simpleMessage( + "Não foi possível realizar a operação de leitura/escrita. Tente novamente."), + "error_please_enter_email": MessageLookupByLibrary.simpleMessage( + "Por favor, digite um endereço de e-mail válido"), + "error_process_file": MessageLookupByLibrary.simpleMessage( + "Falha ao processar o arquivo"), + "error_processing": MessageLookupByLibrary.simpleMessage( + "Falha no processamento. Tente novamente."), + "error_processing_files": MessageLookupByLibrary.simpleMessage( + "Falha ao processar os arquivos. Tente novamente"), + "error_provide_backupKey": MessageLookupByLibrary.simpleMessage( + "Forneça um arquivo de chave de backup válido para continuar."), + "error_provide_relevant_backupKey": MessageLookupByLibrary.simpleMessage( + "Forneça um arquivo de chave de backup relevante para autenticação."), + "error_provide_valid_QRCode": MessageLookupByLibrary.simpleMessage( + "Forneça um código QR válido para autenticação."), + "error_server_not_found": + MessageLookupByLibrary.simpleMessage("Servidor não encontrado"), + "error_server_response_timed_out": m3, + "error_server_unavailable": MessageLookupByLibrary.simpleMessage( + "Servidor indisponível. Tente novamente mais tarde."), + "error_unable_connect": MessageLookupByLibrary.simpleMessage( + "Não foi possível conectar. Verifique sua conexão com a internet e tente novamente."), + "error_unable_to_authenticate": MessageLookupByLibrary.simpleMessage( + "Não foi possível autenticar. Tente novamente."), + "error_unable_to_connect_server": MessageLookupByLibrary.simpleMessage( + "Não foi possível conectar ao servidor. Tente novamente mais tarde."), + "error_unable_to_perform_this_action": + MessageLookupByLibrary.simpleMessage( + "Não foi possível executar esta ação. Tente novamente."), + "error_unknown": + MessageLookupByLibrary.simpleMessage("Erro desconhecido."), + "get_free_atSign": + MessageLookupByLibrary.simpleMessage("Obter um atSign gratuito"), + "have_QRCode": + MessageLookupByLibrary.simpleMessage("Possui um código QR?"), + "images": MessageLookupByLibrary.simpleMessage("imagens"), + "invalid_QR": MessageLookupByLibrary.simpleMessage("QR inválido."), + "learn_about_atSign": + MessageLookupByLibrary.simpleMessage("Saiba mais sobre atSign"), + "learn_more": MessageLookupByLibrary.simpleMessage("Saiba mais"), + "loading_atSigns": + MessageLookupByLibrary.simpleMessage("Carregando atSigns"), + "msg_action_cannot_undone": MessageLookupByLibrary.simpleMessage( + "Atenção: Esta ação não pode ser desfeita"), + "msg_atSign_cannot_empty": MessageLookupByLibrary.simpleMessage( + "O atSign não pode estar vazio"), + "msg_atSign_not_registered": MessageLookupByLibrary.simpleMessage( + "Seu atSign ainda não está registrado. Tente com um registrado."), + "msg_atSign_required": + MessageLookupByLibrary.simpleMessage("É necessário um atSign."), + "msg_atSign_unreachable": MessageLookupByLibrary.simpleMessage( + "Seu atSign e o servidor estão inacessíveis. Tente novamente ou entre em contato com support@atsign.com"), + "msg_auth_failed": + MessageLookupByLibrary.simpleMessage("Autenticação falhou"), + "msg_cannot_fetch_keys_from_chosen_file": + MessageLookupByLibrary.simpleMessage( + "Não foi possível obter as chaves do arquivo selecionado. Selecione o arquivo correto"), + "msg_maximum_atSign_next": MessageLookupByLibrary.simpleMessage( + " para selecionar um de seus atSigns existentes."), + "msg_maximum_atSign_prev": MessageLookupByLibrary.simpleMessage( + "Ops! Você já possui o número máximo de atSigns gratuitos. Faça login em "), + "msg_refresh_atSign": MessageLookupByLibrary.simpleMessage( + "Atualize até ver um atSign que goste, então pressione Emparelhar"), + "msg_response_time_out": + MessageLookupByLibrary.simpleMessage("Tempo limite de resposta"), + "msg_save_atKey_in_secure_location": MessageLookupByLibrary.simpleMessage( + "Salve sua chave em um local seguro (recomendamos Google Drive ou iCloud Drive). Você precisará dela para fazer login novamente E usar outros aplicativos atPlatform."), + "msg_shared_storage": MessageLookupByLibrary.simpleMessage( + "Isso economizará o processo de integrar este atSign em outros aplicativos novamente."), + "msg_wait_fetching_atSign": MessageLookupByLibrary.simpleMessage( + "Aguarde enquanto buscamos o status do atSign"), + "no_atSigns_paired_to_reset": MessageLookupByLibrary.simpleMessage( + "Nenhum atSign está emparelhado para redefinição. "), + "no_permission": MessageLookupByLibrary.simpleMessage("Sem permissão"), + "note": MessageLookupByLibrary.simpleMessage("Observação:"), + "note_otp_content": MessageLookupByLibrary.simpleMessage( + "Se você não recebeu nosso e-mail:\n- Confirme se seu endereço de e-mail está correto.\n- Verifique sua caixa de spam/lixo ou promoções."), + "note_pair_content": MessageLookupByLibrary.simpleMessage( + "Observação: Não compartilhamos suas informações pessoais nem as usamos para ganhos financeiros."), + "notice": MessageLookupByLibrary.simpleMessage("Aviso"), + "onboarding": MessageLookupByLibrary.simpleMessage("Integração"), + "pair_atSign": MessageLookupByLibrary.simpleMessage( + "Emparelhar um atSign usando suas atKeys"), + "processing": MessageLookupByLibrary.simpleMessage("Processando..."), + "remove": MessageLookupByLibrary.simpleMessage("Remover"), + "resend_code": MessageLookupByLibrary.simpleMessage("Reenviar código"), + "reset": MessageLookupByLibrary.simpleMessage("Redefinir"), + "reset_description": MessageLookupByLibrary.simpleMessage( + "Isso removerá o atSign selecionado e seus detalhes apenas deste aplicativo."), + "scan_your_QR": + MessageLookupByLibrary.simpleMessage("Escanear seu QR!"), + "select_all": MessageLookupByLibrary.simpleMessage("Selecionar todos"), + "select_atSign": + MessageLookupByLibrary.simpleMessage("Selecionar atSigns"), + "select_atSign_to_reset": MessageLookupByLibrary.simpleMessage( + "Selecione pelo menos um atSign para redefinir"), + "send_code": MessageLookupByLibrary.simpleMessage("Enviar código"), + "sub_upload_atKeys": MessageLookupByLibrary.simpleMessage( + "Carregue seu arquivo atKey. Este arquivo foi gerado quando você ativou e emparelhou seu atSign e foi solicitado a armazená-lo em um local seguro."), + "title_FAQ": MessageLookupByLibrary.simpleMessage("FAQ"), + "title_activate_an_atSign": + MessageLookupByLibrary.simpleMessage("Ativar um atSign?"), + "title_important": MessageLookupByLibrary.simpleMessage("IMPORTANTE!"), + "title_intro": MessageLookupByLibrary.simpleMessage( + "Este aplicativo foi criado na plataforma atPlatform. Todos os aplicativos atPlatform exigem um atSign. "), + "title_pair_atSign_next": MessageLookupByLibrary.simpleMessage( + "para emparelhar com este dispositivo"), + "title_pair_atSign_prev": + MessageLookupByLibrary.simpleMessage("Você selecionou "), + "title_save_your_key": + MessageLookupByLibrary.simpleMessage("Salve sua chave"), + "title_select_atSign": MessageLookupByLibrary.simpleMessage( + "Você já possui alguns atSigns existentes. Selecione um atSign ou continue com um novo."), + "title_session_expired": + MessageLookupByLibrary.simpleMessage("Sua sessão expirou"), + "title_setting_up_your_atSign": + MessageLookupByLibrary.simpleMessage("Configurando seu atSign"), + "title_shared_storage": MessageLookupByLibrary.simpleMessage( + "Deseja compartilhar este atSign integrado com outros aplicativos na atPlatform?"), + "tutorial_activate_your_atSign": MessageLookupByLibrary.simpleMessage( + "Toque aqui para ativar seu atSign"), + "tutorial_generate_atSign": MessageLookupByLibrary.simpleMessage( + "Toque para gerar um novo atSign gratuito"), + "tutorial_get_atSign": MessageLookupByLibrary.simpleMessage( + "Se você não possui um atSign, toque aqui para obter um"), + "tutorial_scan_QRCode": MessageLookupByLibrary.simpleMessage( + "Toque para escanear o código QR"), + "tutorial_upload_atSign_key": MessageLookupByLibrary.simpleMessage( + "Se você possui um atSign, toque para carregar a chave do atSign"), + "tutorial_upload_image_QRCode": MessageLookupByLibrary.simpleMessage( + "Toque para carregar a imagem do código QR"), + "tutorial_upload_your_atKey": MessageLookupByLibrary.simpleMessage( + "Se você possui um atSign ativado, toque para carregar suas atKeys"), + "upload_atKeys": + MessageLookupByLibrary.simpleMessage("Carregar atKeys"), + "verification_code_has_been_sent_to": + MessageLookupByLibrary.simpleMessage( + "Um código de verificação foi enviado para"), + "verification_code_sent_to": MessageLookupByLibrary.simpleMessage( + "Código de verificação enviado para"), + "verify_and_login": + MessageLookupByLibrary.simpleMessage("Verificar e fazer login"), + "your_registered_email": + MessageLookupByLibrary.simpleMessage("seu e-mail registrado.") + }; +} diff --git a/packages/at_onboarding_flutter/lib/generated/intl/messages_zh.dart b/packages/at_onboarding_flutter/lib/generated/intl/messages_zh.dart new file mode 100644 index 000000000..32cee7308 --- /dev/null +++ b/packages/at_onboarding_flutter/lib/generated/intl/messages_zh.dart @@ -0,0 +1,209 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a zh locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'zh'; + + static String m0(givenAtsign) => "atSign不匹配。请提供${givenAtsign}的二维码进行配对。"; + + static String m1(givenAtsign) => "atSign不匹配。请提供${givenAtsign}的备份密钥文件进行配对。"; + + static String m2(atsign) => "${atsign}已与该设备配对。请先从设备中删除/重置此atSign才能添加。"; + + static String m3(contactAddress) => + "服务器响应超时!\n请检查您的网络连接并重试。如果问题仍然存在,请联系${contactAddress}。"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "activate": MessageLookupByLibrary.simpleMessage("激活"), + "activate_an_atSign": + MessageLookupByLibrary.simpleMessage("激活一个atSign"), + "already_have_an_atSign": + MessageLookupByLibrary.simpleMessage("已经有atSign了吗?"), + "atSign_mismatches_need_to_provide_QRCode": m0, + "atSign_mismatches_need_to_provide_backupKey": m1, + "btn_activate_atSign": MessageLookupByLibrary.simpleMessage("激活atSign"), + "btn_already_have_atSign": + MessageLookupByLibrary.simpleMessage("已经有atSign了吗?"), + "btn_cancel": MessageLookupByLibrary.simpleMessage("取消"), + "btn_close": MessageLookupByLibrary.simpleMessage("关闭"), + "btn_continue": MessageLookupByLibrary.simpleMessage("继续"), + "btn_generate_atSign": + MessageLookupByLibrary.simpleMessage("生成一个免费atSign"), + "btn_no": MessageLookupByLibrary.simpleMessage("否"), + "btn_pair": MessageLookupByLibrary.simpleMessage("配对"), + "btn_refresh": MessageLookupByLibrary.simpleMessage("刷新"), + "btn_remind_me_later": MessageLookupByLibrary.simpleMessage("稍后提醒我"), + "btn_save": MessageLookupByLibrary.simpleMessage("保存"), + "btn_scan_QRCode": MessageLookupByLibrary.simpleMessage("扫描二维码"), + "btn_skip_tutorial": MessageLookupByLibrary.simpleMessage("跳过教程"), + "btn_upload_QRCode": MessageLookupByLibrary.simpleMessage("上传二维码"), + "btn_yes": MessageLookupByLibrary.simpleMessage("是"), + "btn_yes_continue": MessageLookupByLibrary.simpleMessage("是的,继续"), + "enter_atSign_need_to_activate": + MessageLookupByLibrary.simpleMessage("输入您想要激活的atSign"), + "enter_code": MessageLookupByLibrary.simpleMessage("请输入发送到您邮箱的4位验证码"), + "enter_verification_code": + MessageLookupByLibrary.simpleMessage("输入验证码"), + "enter_your_email_address": + MessageLookupByLibrary.simpleMessage("输入您的邮箱地址"), + "error_activate_server": + MessageLookupByLibrary.simpleMessage("无法激活服务器。请联系管理员。"), + "error_atSign_activated": MessageLookupByLibrary.simpleMessage( + "此atSign已被激活。请上传您的atKeys与该设备配对"), + "error_atSign_already_paired": m2, + "error_atSign_logged": + MessageLookupByLibrary.simpleMessage("此atSign已激活并与该设备配对"), + "error_authenticated_failed": + MessageLookupByLibrary.simpleMessage("身份验证失败"), + "error_enter_valid_email": + MessageLookupByLibrary.simpleMessage("请输入有效的邮箱地址"), + "error_incorrect_QRFile": + MessageLookupByLibrary.simpleMessage("二维码文件错误"), + "error_invalid_atSign_provided": + MessageLookupByLibrary.simpleMessage("提供的atSign无效。请联系管理员。"), + "error_perform_operation": + MessageLookupByLibrary.simpleMessage("无法执行读/写操作。请重试。"), + "error_please_enter_email": + MessageLookupByLibrary.simpleMessage("请输入有效的邮箱地址"), + "error_process_file": MessageLookupByLibrary.simpleMessage("文件处理失败"), + "error_processing": MessageLookupByLibrary.simpleMessage("处理失败。请重试。"), + "error_processing_files": + MessageLookupByLibrary.simpleMessage("文件处理失败。请重试"), + "error_provide_backupKey": + MessageLookupByLibrary.simpleMessage("请提供有效的备份密钥文件以继续。"), + "error_provide_relevant_backupKey": + MessageLookupByLibrary.simpleMessage("请提供相关的备份密钥文件进行身份验证。"), + "error_provide_valid_QRCode": + MessageLookupByLibrary.simpleMessage("请提供有效的二维码进行身份验证。"), + "error_server_not_found": + MessageLookupByLibrary.simpleMessage("服务器未找到"), + "error_server_response_timed_out": m3, + "error_server_unavailable": + MessageLookupByLibrary.simpleMessage("服务器不可用。请稍后再试。"), + "error_unable_connect": + MessageLookupByLibrary.simpleMessage("无法连接。请检查网络连接并重试。"), + "error_unable_to_authenticate": + MessageLookupByLibrary.simpleMessage("无法进行身份验证。请重试。"), + "error_unable_to_connect_server": + MessageLookupByLibrary.simpleMessage("无法连接服务器。请稍后再试。"), + "error_unable_to_perform_this_action": + MessageLookupByLibrary.simpleMessage("无法执行此操作。请重试。"), + "error_unknown": MessageLookupByLibrary.simpleMessage("未知错误。"), + "get_free_atSign": MessageLookupByLibrary.simpleMessage("获取免费atSign"), + "have_QRCode": MessageLookupByLibrary.simpleMessage("有二维码吗?"), + "images": MessageLookupByLibrary.simpleMessage("图片"), + "invalid_QR": MessageLookupByLibrary.simpleMessage("二维码无效。"), + "learn_about_atSign": + MessageLookupByLibrary.simpleMessage("了解更多关于atSign的信息"), + "learn_more": MessageLookupByLibrary.simpleMessage("了解更多"), + "loading_atSigns": MessageLookupByLibrary.simpleMessage("正在加载atSign"), + "msg_action_cannot_undone": + MessageLookupByLibrary.simpleMessage("警告:此操作无法撤销"), + "msg_atSign_cannot_empty": + MessageLookupByLibrary.simpleMessage("atSign不能为空"), + "msg_atSign_not_registered": MessageLookupByLibrary.simpleMessage( + "您的atSign尚未注册。请尝试使用已注册的atSign。"), + "msg_atSign_required": + MessageLookupByLibrary.simpleMessage("需要一个atSign。"), + "msg_atSign_unreachable": MessageLookupByLibrary.simpleMessage( + "您的atSign和服务器无法访问。请重试或联系support@atsign.com"), + "msg_auth_failed": MessageLookupByLibrary.simpleMessage("身份验证失败"), + "msg_cannot_fetch_keys_from_chosen_file": + MessageLookupByLibrary.simpleMessage("无法从所选文件中获取密钥。请选择正确的文件"), + "msg_maximum_atSign_next": + MessageLookupByLibrary.simpleMessage("来选择您现有的atSign之一。"), + "msg_maximum_atSign_prev": + MessageLookupByLibrary.simpleMessage("糟糕!您已经拥有了最大数量的免费atSign。请登录到"), + "msg_refresh_atSign": + MessageLookupByLibrary.simpleMessage("刷新直到您看到您喜欢的atSign,然后点击配对"), + "msg_response_time_out": MessageLookupByLibrary.simpleMessage("响应超时"), + "msg_save_atKey_in_secure_location": MessageLookupByLibrary.simpleMessage( + "请将您的密钥保存在安全的地方(我们建议使用Google Drive或iCloud Drive)。您需要它才能重新登录并使用其他atPlatform应用程序。"), + "msg_shared_storage": MessageLookupByLibrary.simpleMessage( + "这将节省您在其他应用程序上再次集成此atSign的过程。"), + "msg_wait_fetching_atSign": + MessageLookupByLibrary.simpleMessage("请等待获取atSign状态"), + "no_atSigns_paired_to_reset": + MessageLookupByLibrary.simpleMessage("没有atSign需要重置。"), + "no_permission": MessageLookupByLibrary.simpleMessage("无权限"), + "note": MessageLookupByLibrary.simpleMessage("注意:"), + "note_otp_content": MessageLookupByLibrary.simpleMessage( + "如果您没有收到我们的邮件:\n- 确认您的邮箱地址输入正确。\n- 检查您的垃圾邮件/垃圾箱或推广文件夹。"), + "note_pair_content": + MessageLookupByLibrary.simpleMessage("注意:我们不会分享您的个人信息或将其用于牟利。"), + "notice": MessageLookupByLibrary.simpleMessage("通知"), + "onboarding": MessageLookupByLibrary.simpleMessage("入门"), + "pair_atSign": + MessageLookupByLibrary.simpleMessage("使用您的atKeys配对atSign"), + "processing": MessageLookupByLibrary.simpleMessage("处理中..."), + "remove": MessageLookupByLibrary.simpleMessage("移除"), + "resend_code": MessageLookupByLibrary.simpleMessage("重新发送验证码"), + "reset": MessageLookupByLibrary.simpleMessage("重置"), + "reset_description": + MessageLookupByLibrary.simpleMessage("这将仅从该应用程序中删除所选atSign及其详细信息。"), + "scan_your_QR": MessageLookupByLibrary.simpleMessage("扫描您的二维码!"), + "select_all": MessageLookupByLibrary.simpleMessage("全选"), + "select_atSign": MessageLookupByLibrary.simpleMessage("选择atSign"), + "select_atSign_to_reset": + MessageLookupByLibrary.simpleMessage("请选择至少一个atSign进行重置"), + "send_code": MessageLookupByLibrary.simpleMessage("发送验证码"), + "sub_upload_atKeys": MessageLookupByLibrary.simpleMessage( + "上传您的atKey文件。此文件在您激活并配对atSign时生成,并提示您将其存储在安全位置。"), + "title_FAQ": MessageLookupByLibrary.simpleMessage("常见问题"), + "title_activate_an_atSign": + MessageLookupByLibrary.simpleMessage("激活一个atSign?"), + "title_important": MessageLookupByLibrary.simpleMessage("重要提示!"), + "title_intro": MessageLookupByLibrary.simpleMessage( + "此应用程序基于atPlatform构建。所有atPlatform应用程序都需要一个atSign。"), + "title_pair_atSign_next": + MessageLookupByLibrary.simpleMessage("与该设备配对"), + "title_pair_atSign_prev": MessageLookupByLibrary.simpleMessage("您已选择"), + "title_save_your_key": MessageLookupByLibrary.simpleMessage("保存您的密钥"), + "title_select_atSign": MessageLookupByLibrary.simpleMessage( + "您已经有了一些现有的atSign。请选择一个atSign,或者继续使用新的atSign。"), + "title_session_expired": + MessageLookupByLibrary.simpleMessage("您的会话已过期"), + "title_setting_up_your_atSign": + MessageLookupByLibrary.simpleMessage("设置您的atSign"), + "title_shared_storage": MessageLookupByLibrary.simpleMessage( + "您是否希望将此已集成的atSign与atPlatform上的其他应用程序共享?"), + "tutorial_activate_your_atSign": + MessageLookupByLibrary.simpleMessage("点击此处激活您的atSign"), + "tutorial_generate_atSign": + MessageLookupByLibrary.simpleMessage("点击此处生成新的免费atSign"), + "tutorial_get_atSign": + MessageLookupByLibrary.simpleMessage("如果您没有atSign,请点击此处获取一个"), + "tutorial_scan_QRCode": + MessageLookupByLibrary.simpleMessage("点击此处扫描二维码"), + "tutorial_upload_atSign_key": + MessageLookupByLibrary.simpleMessage("如果您有atSign,请点击此处上传atSign密钥"), + "tutorial_upload_image_QRCode": + MessageLookupByLibrary.simpleMessage("点击此处上传二维码图片"), + "tutorial_upload_your_atKey": MessageLookupByLibrary.simpleMessage( + "如果您已激活atSign,请点击此处上传您的atKeys"), + "upload_atKeys": MessageLookupByLibrary.simpleMessage("上传atKeys"), + "verification_code_has_been_sent_to": + MessageLookupByLibrary.simpleMessage("验证码已发送到"), + "verification_code_sent_to": + MessageLookupByLibrary.simpleMessage("验证码已发送到"), + "verify_and_login": MessageLookupByLibrary.simpleMessage("验证并登录"), + "your_registered_email": MessageLookupByLibrary.simpleMessage("您注册的邮箱。") + }; +} diff --git a/packages/at_onboarding_flutter/lib/generated/intl/messages_zh_Hans_CH.dart b/packages/at_onboarding_flutter/lib/generated/intl/messages_zh_Hans_CH.dart new file mode 100644 index 000000000..86fb31d57 --- /dev/null +++ b/packages/at_onboarding_flutter/lib/generated/intl/messages_zh_Hans_CH.dart @@ -0,0 +1,211 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a zh_Hans_CH locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'zh_Hans_CH'; + + static String m0(givenAtsign) => "atSign 不符。請提供 ${givenAtsign} 的二維碼以配對。"; + + static String m1(givenAtsign) => "atSign 不符。請提供 ${givenAtsign} 的備份金鑰檔案以配對。"; + + static String m2(atsign) => "${atsign} 已經與此裝置配對。請先從裝置中刪除/重置此 atSign 才能新增。"; + + static String m3(contactAddress) => + "伺服器回應逾時!\n請檢查您的網絡連線並重試。如果問題仍然存在,請聯絡 ${contactAddress}。"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "activate": MessageLookupByLibrary.simpleMessage("啟動"), + "activate_an_atSign": + MessageLookupByLibrary.simpleMessage("啟動一個 atSign"), + "already_have_an_atSign": + MessageLookupByLibrary.simpleMessage("已經有 atSign 了?"), + "atSign_mismatches_need_to_provide_QRCode": m0, + "atSign_mismatches_need_to_provide_backupKey": m1, + "btn_activate_atSign": + MessageLookupByLibrary.simpleMessage("啟動 atSign"), + "btn_already_have_atSign": + MessageLookupByLibrary.simpleMessage("已經有 atSign 了嗎?"), + "btn_cancel": MessageLookupByLibrary.simpleMessage("取消"), + "btn_close": MessageLookupByLibrary.simpleMessage("關閉"), + "btn_continue": MessageLookupByLibrary.simpleMessage("繼續"), + "btn_generate_atSign": + MessageLookupByLibrary.simpleMessage("生成一個免費 atSign"), + "btn_no": MessageLookupByLibrary.simpleMessage("否"), + "btn_pair": MessageLookupByLibrary.simpleMessage("配對"), + "btn_refresh": MessageLookupByLibrary.simpleMessage("重新整理"), + "btn_remind_me_later": MessageLookupByLibrary.simpleMessage("稍後提醒我"), + "btn_save": MessageLookupByLibrary.simpleMessage("儲存"), + "btn_scan_QRCode": MessageLookupByLibrary.simpleMessage("掃描二維碼"), + "btn_skip_tutorial": MessageLookupByLibrary.simpleMessage("跳過教學"), + "btn_upload_QRCode": MessageLookupByLibrary.simpleMessage("上傳二維碼"), + "btn_yes": MessageLookupByLibrary.simpleMessage("是"), + "btn_yes_continue": MessageLookupByLibrary.simpleMessage("是,繼續"), + "enter_atSign_need_to_activate": + MessageLookupByLibrary.simpleMessage("輸入您想啟動的 atSign"), + "enter_code": + MessageLookupByLibrary.simpleMessage("請輸入已發送到您的電郵地址的4位驗證碼"), + "enter_verification_code": + MessageLookupByLibrary.simpleMessage("輸入驗證碼"), + "enter_your_email_address": + MessageLookupByLibrary.simpleMessage("輸入您的電郵地址"), + "error_activate_server": + MessageLookupByLibrary.simpleMessage("無法啟動伺服器。請聯絡管理員。"), + "error_atSign_activated": MessageLookupByLibrary.simpleMessage( + "此 atSign 已啟動。請上傳您的 atKeys 以與此裝置配對"), + "error_atSign_already_paired": m2, + "error_atSign_logged": + MessageLookupByLibrary.simpleMessage("此 atSign 已啟動並與此裝置配對"), + "error_authenticated_failed": + MessageLookupByLibrary.simpleMessage("身份驗證失敗"), + "error_enter_valid_email": + MessageLookupByLibrary.simpleMessage("請輸入有效的電郵地址"), + "error_incorrect_QRFile": + MessageLookupByLibrary.simpleMessage("二維碼檔案錯誤"), + "error_invalid_atSign_provided": + MessageLookupByLibrary.simpleMessage("提供的 atSign 無效。請聯絡管理員。"), + "error_perform_operation": + MessageLookupByLibrary.simpleMessage("無法執行讀取/寫入操作。請重試。"), + "error_please_enter_email": + MessageLookupByLibrary.simpleMessage("請輸入有效的電郵地址"), + "error_process_file": MessageLookupByLibrary.simpleMessage("檔案處理失敗"), + "error_processing": MessageLookupByLibrary.simpleMessage("處理失敗。請重試。"), + "error_processing_files": + MessageLookupByLibrary.simpleMessage("檔案處理失敗。請重試"), + "error_provide_backupKey": + MessageLookupByLibrary.simpleMessage("請提供有效的備份金鑰檔案以繼續。"), + "error_provide_relevant_backupKey": + MessageLookupByLibrary.simpleMessage("請提供相關的備份金鑰檔案以進行身份驗證。"), + "error_provide_valid_QRCode": + MessageLookupByLibrary.simpleMessage("請提供有效的二維碼以進行身份驗證。"), + "error_server_not_found": + MessageLookupByLibrary.simpleMessage("伺服器找不到"), + "error_server_response_timed_out": m3, + "error_server_unavailable": + MessageLookupByLibrary.simpleMessage("伺服器不可用。請稍後再試。"), + "error_unable_connect": + MessageLookupByLibrary.simpleMessage("無法連線。請檢查網絡連線並重試。"), + "error_unable_to_authenticate": + MessageLookupByLibrary.simpleMessage("無法進行身份驗證。請重試。"), + "error_unable_to_connect_server": + MessageLookupByLibrary.simpleMessage("無法連接伺服器。請稍後再試。"), + "error_unable_to_perform_this_action": + MessageLookupByLibrary.simpleMessage("無法執行此操作。請重試。"), + "error_unknown": MessageLookupByLibrary.simpleMessage("不明錯誤。"), + "get_free_atSign": MessageLookupByLibrary.simpleMessage("取得免費 atSign"), + "have_QRCode": MessageLookupByLibrary.simpleMessage("有二維碼嗎?"), + "images": MessageLookupByLibrary.simpleMessage("圖片"), + "invalid_QR": MessageLookupByLibrary.simpleMessage("二維碼無效。"), + "learn_about_atSign": + MessageLookupByLibrary.simpleMessage("了解更多關於 atSign 的資訊"), + "learn_more": MessageLookupByLibrary.simpleMessage("了解更多"), + "loading_atSigns": MessageLookupByLibrary.simpleMessage("正在載入 atSign"), + "msg_action_cannot_undone": + MessageLookupByLibrary.simpleMessage("警告:此操作無法復原"), + "msg_atSign_cannot_empty": + MessageLookupByLibrary.simpleMessage("atSign 不可為空"), + "msg_atSign_not_registered": MessageLookupByLibrary.simpleMessage( + "您的 atSign 尚未註冊。請嘗試使用已註冊的 atSign。"), + "msg_atSign_required": + MessageLookupByLibrary.simpleMessage("需要一個 atSign。"), + "msg_atSign_unreachable": MessageLookupByLibrary.simpleMessage( + "您的 atSign 和伺服器無法連線。請重試或聯絡 support@atsign.com"), + "msg_auth_failed": MessageLookupByLibrary.simpleMessage("身份驗證失敗"), + "msg_cannot_fetch_keys_from_chosen_file": + MessageLookupByLibrary.simpleMessage("無法從已選檔案取得金鑰。請選擇正確的檔案"), + "msg_maximum_atSign_next": + MessageLookupByLibrary.simpleMessage("以選擇您現有的 atSign 之一。"), + "msg_maximum_atSign_prev": + MessageLookupByLibrary.simpleMessage("糟糕!您已經擁有最多數量的免費 atSign。請登入"), + "msg_refresh_atSign": + MessageLookupByLibrary.simpleMessage("重新整理直到您看到您喜歡的 atSign,然後點擊配對"), + "msg_response_time_out": MessageLookupByLibrary.simpleMessage("回應逾時"), + "msg_save_atKey_in_secure_location": MessageLookupByLibrary.simpleMessage( + "請將您的金鑰儲存在安全的地方(我們建議使用 Google Drive 或 iCloud Drive)。您需要它才能再次登入和使用其他 atPlatform 應用程式。"), + "msg_shared_storage": MessageLookupByLibrary.simpleMessage( + "這將節省您在其他應用程式上再次整合此 atSign 的步驟。"), + "msg_wait_fetching_atSign": + MessageLookupByLibrary.simpleMessage("請等待擷取 atSign 狀態"), + "no_atSigns_paired_to_reset": + MessageLookupByLibrary.simpleMessage("沒有 atSign 需要重置。"), + "no_permission": MessageLookupByLibrary.simpleMessage("沒有權限"), + "note": MessageLookupByLibrary.simpleMessage("注意:"), + "note_otp_content": MessageLookupByLibrary.simpleMessage( + "如果您沒有收到我們的電郵:\n- 確認您的電郵地址輸入正確。\n- 檢查您的垃圾郵件/垃圾郵件或促銷郵件資料夾。"), + "note_pair_content": + MessageLookupByLibrary.simpleMessage("注意:我們不會分享您的個人資料或將其用於牟利。"), + "notice": MessageLookupByLibrary.simpleMessage("通知"), + "onboarding": MessageLookupByLibrary.simpleMessage("開始使用"), + "pair_atSign": + MessageLookupByLibrary.simpleMessage("使用您的 atKeys 配對 atSign"), + "processing": MessageLookupByLibrary.simpleMessage("處理中..."), + "remove": MessageLookupByLibrary.simpleMessage("移除"), + "resend_code": MessageLookupByLibrary.simpleMessage("重新傳送驗證碼"), + "reset": MessageLookupByLibrary.simpleMessage("重置"), + "reset_description": MessageLookupByLibrary.simpleMessage( + "這將只會從此應用程式中移除所選 atSign 及其詳細資料。"), + "scan_your_QR": MessageLookupByLibrary.simpleMessage("掃描您的二維碼!"), + "select_all": MessageLookupByLibrary.simpleMessage("全選"), + "select_atSign": MessageLookupByLibrary.simpleMessage("選擇 atSign"), + "select_atSign_to_reset": + MessageLookupByLibrary.simpleMessage("請選擇至少一個 atSign 以進行重置"), + "send_code": MessageLookupByLibrary.simpleMessage("傳送驗證碼"), + "sub_upload_atKeys": MessageLookupByLibrary.simpleMessage( + "上傳您的 atKey 檔案。此檔案是在您啟動及配對您的 atSign 時生成的,並已提示您將其儲存在安全位置。"), + "title_FAQ": MessageLookupByLibrary.simpleMessage("常見問題"), + "title_activate_an_atSign": + MessageLookupByLibrary.simpleMessage("啟動一個 atSign?"), + "title_important": MessageLookupByLibrary.simpleMessage("重要提示!"), + "title_intro": MessageLookupByLibrary.simpleMessage( + "此應用程式建基於 atPlatform。所有 atPlatform 應用程式都需要一個 atSign。"), + "title_pair_atSign_next": + MessageLookupByLibrary.simpleMessage("以與此裝置配對"), + "title_pair_atSign_prev": MessageLookupByLibrary.simpleMessage("您已選擇"), + "title_save_your_key": MessageLookupByLibrary.simpleMessage("儲存您的金鑰"), + "title_select_atSign": MessageLookupByLibrary.simpleMessage( + "您已經擁有一些現有的 atSign。請選擇一個 atSign,或繼續使用新的 atSign。"), + "title_session_expired": + MessageLookupByLibrary.simpleMessage("您的工作階段已過期"), + "title_setting_up_your_atSign": + MessageLookupByLibrary.simpleMessage("設定您的 atSign"), + "title_shared_storage": MessageLookupByLibrary.simpleMessage( + "您想將此已整合的 atSign 與 atPlatform 上的其他應用程式分享嗎?"), + "tutorial_activate_your_atSign": + MessageLookupByLibrary.simpleMessage("點按此處以啟動您的 atSign"), + "tutorial_generate_atSign": + MessageLookupByLibrary.simpleMessage("點按以生成新的免費 atSign"), + "tutorial_get_atSign": + MessageLookupByLibrary.simpleMessage("如果您沒有 atSign,請點按此處以取得一個"), + "tutorial_scan_QRCode": + MessageLookupByLibrary.simpleMessage("點按以掃描二維碼"), + "tutorial_upload_atSign_key": MessageLookupByLibrary.simpleMessage( + "如果您有 atSign,請點按以上傳 atSign 金鑰"), + "tutorial_upload_image_QRCode": + MessageLookupByLibrary.simpleMessage("點按以上傳二維碼圖片"), + "tutorial_upload_your_atKey": MessageLookupByLibrary.simpleMessage( + "如果您已啟動 atSign,請點按以上傳您的 atKeys"), + "upload_atKeys": MessageLookupByLibrary.simpleMessage("上傳 atKeys"), + "verification_code_has_been_sent_to": + MessageLookupByLibrary.simpleMessage("驗證碼已發送到"), + "verification_code_sent_to": + MessageLookupByLibrary.simpleMessage("驗證碼已發送到"), + "verify_and_login": MessageLookupByLibrary.simpleMessage("驗證並登入"), + "your_registered_email": MessageLookupByLibrary.simpleMessage("您註冊的電郵。") + }; +} diff --git a/packages/at_onboarding_flutter/lib/generated/intl/messages_zh_Hant_HK.dart b/packages/at_onboarding_flutter/lib/generated/intl/messages_zh_Hant_HK.dart new file mode 100644 index 000000000..d982c85a3 --- /dev/null +++ b/packages/at_onboarding_flutter/lib/generated/intl/messages_zh_Hant_HK.dart @@ -0,0 +1,211 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a zh_Hant_HK locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'zh_Hant_HK'; + + static String m0(givenAtsign) => "atSign 不符。請提供 ${givenAtsign} 的二維碼以配對。"; + + static String m1(givenAtsign) => "atSign 不符。請提供 ${givenAtsign} 的備份金鑰檔案以配對。"; + + static String m2(atsign) => "${atsign} 已經與此裝置配對。請先從裝置中刪除/重置此 atSign 才能新增。"; + + static String m3(contactAddress) => + "伺服器回應逾時!\n請檢查您的網絡連線並重試。如果問題仍然存在,請聯絡 ${contactAddress}。"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "activate": MessageLookupByLibrary.simpleMessage("啟動"), + "activate_an_atSign": + MessageLookupByLibrary.simpleMessage("啟動一個 atSign"), + "already_have_an_atSign": + MessageLookupByLibrary.simpleMessage("已經有 atSign 了?"), + "atSign_mismatches_need_to_provide_QRCode": m0, + "atSign_mismatches_need_to_provide_backupKey": m1, + "btn_activate_atSign": + MessageLookupByLibrary.simpleMessage("啟動 atSign"), + "btn_already_have_atSign": + MessageLookupByLibrary.simpleMessage("已經有 atSign 了嗎?"), + "btn_cancel": MessageLookupByLibrary.simpleMessage("取消"), + "btn_close": MessageLookupByLibrary.simpleMessage("關閉"), + "btn_continue": MessageLookupByLibrary.simpleMessage("繼續"), + "btn_generate_atSign": + MessageLookupByLibrary.simpleMessage("生成一個免費 atSign"), + "btn_no": MessageLookupByLibrary.simpleMessage("否"), + "btn_pair": MessageLookupByLibrary.simpleMessage("配對"), + "btn_refresh": MessageLookupByLibrary.simpleMessage("重新整理"), + "btn_remind_me_later": MessageLookupByLibrary.simpleMessage("稍後提醒我"), + "btn_save": MessageLookupByLibrary.simpleMessage("儲存"), + "btn_scan_QRCode": MessageLookupByLibrary.simpleMessage("掃描二維碼"), + "btn_skip_tutorial": MessageLookupByLibrary.simpleMessage("跳過教學"), + "btn_upload_QRCode": MessageLookupByLibrary.simpleMessage("上傳二維碼"), + "btn_yes": MessageLookupByLibrary.simpleMessage("是"), + "btn_yes_continue": MessageLookupByLibrary.simpleMessage("是,繼續"), + "enter_atSign_need_to_activate": + MessageLookupByLibrary.simpleMessage("輸入您想啟動的 atSign"), + "enter_code": + MessageLookupByLibrary.simpleMessage("請輸入已發送到您的電郵地址的4位驗證碼"), + "enter_verification_code": + MessageLookupByLibrary.simpleMessage("輸入驗證碼"), + "enter_your_email_address": + MessageLookupByLibrary.simpleMessage("輸入您的電郵地址"), + "error_activate_server": + MessageLookupByLibrary.simpleMessage("無法啟動伺服器。請聯絡管理員。"), + "error_atSign_activated": MessageLookupByLibrary.simpleMessage( + "此 atSign 已啟動。請上傳您的 atKeys 以與此裝置配對"), + "error_atSign_already_paired": m2, + "error_atSign_logged": + MessageLookupByLibrary.simpleMessage("此 atSign 已啟動並與此裝置配對"), + "error_authenticated_failed": + MessageLookupByLibrary.simpleMessage("身份驗證失敗"), + "error_enter_valid_email": + MessageLookupByLibrary.simpleMessage("請輸入有效的電郵地址"), + "error_incorrect_QRFile": + MessageLookupByLibrary.simpleMessage("二維碼檔案錯誤"), + "error_invalid_atSign_provided": + MessageLookupByLibrary.simpleMessage("提供的 atSign 無效。請聯絡管理員。"), + "error_perform_operation": + MessageLookupByLibrary.simpleMessage("無法執行讀取/寫入操作。請重試。"), + "error_please_enter_email": + MessageLookupByLibrary.simpleMessage("請輸入有效的電郵地址"), + "error_process_file": MessageLookupByLibrary.simpleMessage("檔案處理失敗"), + "error_processing": MessageLookupByLibrary.simpleMessage("處理失敗。請重試。"), + "error_processing_files": + MessageLookupByLibrary.simpleMessage("檔案處理失敗。請重試"), + "error_provide_backupKey": + MessageLookupByLibrary.simpleMessage("請提供有效的備份金鑰檔案以繼續。"), + "error_provide_relevant_backupKey": + MessageLookupByLibrary.simpleMessage("請提供相關的備份金鑰檔案以進行身份驗證。"), + "error_provide_valid_QRCode": + MessageLookupByLibrary.simpleMessage("請提供有效的二維碼以進行身份驗證。"), + "error_server_not_found": + MessageLookupByLibrary.simpleMessage("伺服器找不到"), + "error_server_response_timed_out": m3, + "error_server_unavailable": + MessageLookupByLibrary.simpleMessage("伺服器不可用。請稍後再試。"), + "error_unable_connect": + MessageLookupByLibrary.simpleMessage("無法連線。請檢查網絡連線並重試。"), + "error_unable_to_authenticate": + MessageLookupByLibrary.simpleMessage("無法進行身份驗證。請重試。"), + "error_unable_to_connect_server": + MessageLookupByLibrary.simpleMessage("無法連接伺服器。請稍後再試。"), + "error_unable_to_perform_this_action": + MessageLookupByLibrary.simpleMessage("無法執行此操作。請重試。"), + "error_unknown": MessageLookupByLibrary.simpleMessage("不明錯誤。"), + "get_free_atSign": MessageLookupByLibrary.simpleMessage("取得免費 atSign"), + "have_QRCode": MessageLookupByLibrary.simpleMessage("有二維碼嗎?"), + "images": MessageLookupByLibrary.simpleMessage("圖片"), + "invalid_QR": MessageLookupByLibrary.simpleMessage("二維碼無效。"), + "learn_about_atSign": + MessageLookupByLibrary.simpleMessage("了解更多關於 atSign 的資訊"), + "learn_more": MessageLookupByLibrary.simpleMessage("了解更多"), + "loading_atSigns": MessageLookupByLibrary.simpleMessage("正在載入 atSign"), + "msg_action_cannot_undone": + MessageLookupByLibrary.simpleMessage("警告:此操作無法復原"), + "msg_atSign_cannot_empty": + MessageLookupByLibrary.simpleMessage("atSign 不可為空"), + "msg_atSign_not_registered": MessageLookupByLibrary.simpleMessage( + "您的 atSign 尚未註冊。請嘗試使用已註冊的 atSign。"), + "msg_atSign_required": + MessageLookupByLibrary.simpleMessage("需要一個 atSign。"), + "msg_atSign_unreachable": MessageLookupByLibrary.simpleMessage( + "您的 atSign 和伺服器無法連線。請重試或聯絡 support@atsign.com"), + "msg_auth_failed": MessageLookupByLibrary.simpleMessage("身份驗證失敗"), + "msg_cannot_fetch_keys_from_chosen_file": + MessageLookupByLibrary.simpleMessage("無法從已選檔案取得金鑰。請選擇正確的檔案"), + "msg_maximum_atSign_next": + MessageLookupByLibrary.simpleMessage("以選擇您現有的 atSign 之一。"), + "msg_maximum_atSign_prev": + MessageLookupByLibrary.simpleMessage("糟糕!您已經擁有最多數量的免費 atSign。請登入"), + "msg_refresh_atSign": + MessageLookupByLibrary.simpleMessage("重新整理直到您看到您喜歡的 atSign,然後點擊配對"), + "msg_response_time_out": MessageLookupByLibrary.simpleMessage("回應逾時"), + "msg_save_atKey_in_secure_location": MessageLookupByLibrary.simpleMessage( + "請將您的金鑰儲存在安全的地方(我們建議使用 Google Drive 或 iCloud Drive)。您需要它才能再次登入和使用其他 atPlatform 應用程式。"), + "msg_shared_storage": MessageLookupByLibrary.simpleMessage( + "這將節省您在其他應用程式上再次整合此 atSign 的步驟。"), + "msg_wait_fetching_atSign": + MessageLookupByLibrary.simpleMessage("請等待擷取 atSign 狀態"), + "no_atSigns_paired_to_reset": + MessageLookupByLibrary.simpleMessage("沒有 atSign 需要重置。"), + "no_permission": MessageLookupByLibrary.simpleMessage("沒有權限"), + "note": MessageLookupByLibrary.simpleMessage("注意:"), + "note_otp_content": MessageLookupByLibrary.simpleMessage( + "如果您沒有收到我們的電郵:\n- 確認您的電郵地址輸入正確。\n- 檢查您的垃圾郵件/垃圾郵件或促銷郵件資料夾。"), + "note_pair_content": + MessageLookupByLibrary.simpleMessage("注意:我們不會分享您的個人資料或將其用於牟利。"), + "notice": MessageLookupByLibrary.simpleMessage("通知"), + "onboarding": MessageLookupByLibrary.simpleMessage("開始使用"), + "pair_atSign": + MessageLookupByLibrary.simpleMessage("使用您的 atKeys 配對 atSign"), + "processing": MessageLookupByLibrary.simpleMessage("處理中..."), + "remove": MessageLookupByLibrary.simpleMessage("移除"), + "resend_code": MessageLookupByLibrary.simpleMessage("重新傳送驗證碼"), + "reset": MessageLookupByLibrary.simpleMessage("重置"), + "reset_description": MessageLookupByLibrary.simpleMessage( + "這將只會從此應用程式中移除所選 atSign 及其詳細資料。"), + "scan_your_QR": MessageLookupByLibrary.simpleMessage("掃描您的二維碼!"), + "select_all": MessageLookupByLibrary.simpleMessage("全選"), + "select_atSign": MessageLookupByLibrary.simpleMessage("選擇 atSign"), + "select_atSign_to_reset": + MessageLookupByLibrary.simpleMessage("請選擇至少一個 atSign 以進行重置"), + "send_code": MessageLookupByLibrary.simpleMessage("傳送驗證碼"), + "sub_upload_atKeys": MessageLookupByLibrary.simpleMessage( + "上傳您的 atKey 檔案。此檔案是在您啟動及配對您的 atSign 時生成的,並已提示您將其儲存在安全位置。"), + "title_FAQ": MessageLookupByLibrary.simpleMessage("常見問題"), + "title_activate_an_atSign": + MessageLookupByLibrary.simpleMessage("啟動一個 atSign?"), + "title_important": MessageLookupByLibrary.simpleMessage("重要提示!"), + "title_intro": MessageLookupByLibrary.simpleMessage( + "此應用程式建基於 atPlatform。所有 atPlatform 應用程式都需要一個 atSign。"), + "title_pair_atSign_next": + MessageLookupByLibrary.simpleMessage("以與此裝置配對"), + "title_pair_atSign_prev": MessageLookupByLibrary.simpleMessage("您已選擇"), + "title_save_your_key": MessageLookupByLibrary.simpleMessage("儲存您的金鑰"), + "title_select_atSign": MessageLookupByLibrary.simpleMessage( + "您已經擁有一些現有的 atSign。請選擇一個 atSign,或繼續使用新的 atSign。"), + "title_session_expired": + MessageLookupByLibrary.simpleMessage("您的工作階段已過期"), + "title_setting_up_your_atSign": + MessageLookupByLibrary.simpleMessage("設定您的 atSign"), + "title_shared_storage": MessageLookupByLibrary.simpleMessage( + "您想將此已整合的 atSign 與 atPlatform 上的其他應用程式分享嗎?"), + "tutorial_activate_your_atSign": + MessageLookupByLibrary.simpleMessage("點按此處以啟動您的 atSign"), + "tutorial_generate_atSign": + MessageLookupByLibrary.simpleMessage("點按以生成新的免費 atSign"), + "tutorial_get_atSign": + MessageLookupByLibrary.simpleMessage("如果您沒有 atSign,請點按此處以取得一個"), + "tutorial_scan_QRCode": + MessageLookupByLibrary.simpleMessage("點按以掃描二維碼"), + "tutorial_upload_atSign_key": MessageLookupByLibrary.simpleMessage( + "如果您有 atSign,請點按以上傳 atSign 金鑰"), + "tutorial_upload_image_QRCode": + MessageLookupByLibrary.simpleMessage("點按以上傳二維碼圖片"), + "tutorial_upload_your_atKey": MessageLookupByLibrary.simpleMessage( + "如果您已啟動 atSign,請點按以上傳您的 atKeys"), + "upload_atKeys": MessageLookupByLibrary.simpleMessage("上傳 atKeys"), + "verification_code_has_been_sent_to": + MessageLookupByLibrary.simpleMessage("驗證碼已發送到"), + "verification_code_sent_to": + MessageLookupByLibrary.simpleMessage("驗證碼已發送到"), + "verify_and_login": MessageLookupByLibrary.simpleMessage("驗證並登入"), + "your_registered_email": MessageLookupByLibrary.simpleMessage("您註冊的電郵。") + }; +} diff --git a/packages/at_onboarding_flutter/lib/localizations/generated/l10n.dart b/packages/at_onboarding_flutter/lib/generated/l10n.dart similarity index 98% rename from packages/at_onboarding_flutter/lib/localizations/generated/l10n.dart rename to packages/at_onboarding_flutter/lib/generated/l10n.dart index 39a54a65b..56f8c9d01 100644 --- a/packages/at_onboarding_flutter/lib/localizations/generated/l10n.dart +++ b/packages/at_onboarding_flutter/lib/generated/l10n.dart @@ -51,731 +51,731 @@ class AtOnboardingLocalizations { context, AtOnboardingLocalizations); } - /// `Select atSigns` - String get select_atSign { + /// `Activate an atSign` + String get activate_an_atSign { return Intl.message( - 'Select atSigns', - name: 'select_atSign', + 'Activate an atSign', + name: 'activate_an_atSign', desc: '', args: [], ); } - /// `Loading atSigns` - String get loading_atSigns { + /// `Activate` + String get activate { return Intl.message( - 'Loading atSigns', - name: 'loading_atSigns', + 'Activate', + name: 'activate', desc: '', args: [], ); } - /// `You already have some existing atsigns. Please select an atSign or else continue with the new one.` - String get title_select_atSign { + /// `Already have an atSign` + String get already_have_an_atSign { return Intl.message( - 'You already have some existing atsigns. Please select an atSign or else continue with the new one.', - name: 'title_select_atSign', + 'Already have an atSign', + name: 'already_have_an_atSign', desc: '', args: [], ); } - /// `You have selected ` - String get title_pair_atSign_prev { + /// `atSign mismatches. Please provide the backup key file of {givenAtsign} to pair.` + String atSign_mismatches_need_to_provide_backupKey(Object givenAtsign) { return Intl.message( - 'You have selected ', - name: 'title_pair_atSign_prev', + 'atSign mismatches. Please provide the backup key file of $givenAtsign to pair.', + name: 'atSign_mismatches_need_to_provide_backupKey', desc: '', - args: [], + args: [givenAtsign], ); } - /// `to pair with this device` - String get title_pair_atSign_next { + /// `atSign mismatches. Please provide the QRCode of {givenAtsign} to pair.` + String atSign_mismatches_need_to_provide_QRCode(Object givenAtsign) { return Intl.message( - 'to pair with this device', - name: 'title_pair_atSign_next', + 'atSign mismatches. Please provide the QRCode of $givenAtsign to pair.', + name: 'atSign_mismatches_need_to_provide_QRCode', desc: '', - args: [], + args: [givenAtsign], ); } - /// `Yes, continue` - String get btn_yes_continue { + /// `Activate atSign` + String get btn_activate_atSign { return Intl.message( - 'Yes, continue', - name: 'btn_yes_continue', + 'Activate atSign', + name: 'btn_activate_atSign', desc: '', args: [], ); } - /// `Please wait while fetching atSign status` - String get msg_wait_fetching_atSign { + /// `Already have an atSign?` + String get btn_already_have_atSign { return Intl.message( - 'Please wait while fetching atSign status', - name: 'msg_wait_fetching_atSign', + 'Already have an atSign?', + name: 'btn_already_have_atSign', desc: '', args: [], ); } - /// `This atSign has already been activated and paired with this device` - String get error_atSign_logged { + /// `Cancel` + String get btn_cancel { return Intl.message( - 'This atSign has already been activated and paired with this device', - name: 'error_atSign_logged', + 'Cancel', + name: 'btn_cancel', desc: '', args: [], ); } - /// `This atSign has already been activated. Please upload your atKeys to pair it with this device` - String get error_atSign_activated { + /// `Close` + String get btn_close { return Intl.message( - 'This atSign has already been activated. Please upload your atKeys to pair it with this device', - name: 'error_atSign_activated', + 'Close', + name: 'btn_close', desc: '', args: [], ); } - /// `Notice` - String get notice { + /// `CONTINUE` + String get btn_continue { return Intl.message( - 'Notice', - name: 'notice', + 'CONTINUE', + name: 'btn_continue', desc: '', args: [], ); } - /// `Your session expired` - String get title_session_expired { + /// `Generate a free atSign` + String get btn_generate_atSign { return Intl.message( - 'Your session expired', - name: 'title_session_expired', + 'Generate a free atSign', + name: 'btn_generate_atSign', desc: '', args: [], ); } - /// `Authentication Failed` - String get error_authenticated_failed { + /// `No` + String get btn_no { return Intl.message( - 'Authentication Failed', - name: 'error_authenticated_failed', + 'No', + name: 'btn_no', desc: '', args: [], ); } - /// `Server not found` - String get error_server_not_found { + /// `Pair` + String get btn_pair { return Intl.message( - 'Server not found', - name: 'error_server_not_found', + 'Pair', + name: 'btn_pair', desc: '', args: [], ); } - /// `An atSign is required.` - String get msg_atSign_required { + /// `Refresh` + String get btn_refresh { return Intl.message( - 'An atSign is required.', - name: 'msg_atSign_required', + 'Refresh', + name: 'btn_refresh', desc: '', args: [], ); } - /// `CONTINUE` - String get btn_continue { + /// `Remind Me Later` + String get btn_remind_me_later { return Intl.message( - 'CONTINUE', - name: 'btn_continue', + 'Remind Me Later', + name: 'btn_remind_me_later', desc: '', args: [], ); } - /// `Remind Me Later` - String get btn_remind_me_later { + /// `SAVE` + String get btn_save { return Intl.message( - 'Remind Me Later', - name: 'btn_remind_me_later', + 'SAVE', + name: 'btn_save', desc: '', args: [], ); } - /// `Setting up your atSign` - String get title_setting_up_your_atSign { + /// `Scan QR code` + String get btn_scan_QRCode { return Intl.message( - 'Setting up your atSign', - name: 'title_setting_up_your_atSign', + 'Scan QR code', + name: 'btn_scan_QRCode', desc: '', args: [], ); } - /// `FAQ` - String get title_FAQ { + /// `SKIP TUTORIAL` + String get btn_skip_tutorial { return Intl.message( - 'FAQ', - name: 'title_FAQ', + 'SKIP TUTORIAL', + name: 'btn_skip_tutorial', desc: '', args: [], ); } - /// `Your atSign and the server is unreachable. Please try again or contact support@atsign.com` - String get msg_atSign_unreachable { + /// `Upload QR code` + String get btn_upload_QRCode { return Intl.message( - 'Your atSign and the server is unreachable. Please try again or contact support@atsign.com', - name: 'msg_atSign_unreachable', + 'Upload QR code', + name: 'btn_upload_QRCode', desc: '', args: [], ); } - /// `Your atSign is not registered yet. Please try with the registered one.` - String get msg_atSign_not_registered { + /// `Yes, continue` + String get btn_yes_continue { return Intl.message( - 'Your atSign is not registered yet. Please try with the registered one.', - name: 'msg_atSign_not_registered', + 'Yes, continue', + name: 'btn_yes_continue', desc: '', args: [], ); } - /// `Save your key` - String get title_save_your_key { + /// `Yes` + String get btn_yes { return Intl.message( - 'Save your key', - name: 'title_save_your_key', + 'Yes', + name: 'btn_yes', desc: '', args: [], ); } - /// `IMPORTANT!` - String get title_important { + /// `Enter the atSign you would like to activate` + String get enter_atSign_need_to_activate { return Intl.message( - 'IMPORTANT!', - name: 'title_important', + 'Enter the atSign you would like to activate', + name: 'enter_atSign_need_to_activate', desc: '', args: [], ); } - /// `Please save your key in a secure location (we recommend Google Drive or iCloud Drive). You will need it to sign back in AND use other atPlatform apps.` - String get msg_save_atKey_in_secure_location { + /// `Please enter the 4-character verification code that was sent to your email address` + String get enter_code { return Intl.message( - 'Please save your key in a secure location (we recommend Google Drive or iCloud Drive). You will need it to sign back in AND use other atPlatform apps.', - name: 'msg_save_atKey_in_secure_location', + 'Please enter the 4-character verification code that was sent to your email address', + name: 'enter_code', desc: '', args: [], ); } - /// `SAVE` - String get btn_save { + /// `Enter Verification Code` + String get enter_verification_code { return Intl.message( - 'SAVE', - name: 'btn_save', + 'Enter Verification Code', + name: 'enter_verification_code', desc: '', args: [], ); } - /// `SKIP TUTORIAL` - String get btn_skip_tutorial { + /// `Enter your email address` + String get enter_your_email_address { return Intl.message( - 'SKIP TUTORIAL', - name: 'btn_skip_tutorial', + 'Enter your email address', + name: 'enter_your_email_address', desc: '', args: [], ); } - /// `Tap to generate a new free atSign` - String get tutorial_generate_atSign { + /// `Unable to activate server. Please contact admin.` + String get error_activate_server { return Intl.message( - 'Tap to generate a new free atSign', - name: 'tutorial_generate_atSign', + 'Unable to activate server. Please contact admin.', + name: 'error_activate_server', desc: '', args: [], ); } - /// `If you have an atSign, Tap to upload atSign key` - String get tutorial_upload_atSign_key { + /// `This atSign has already been activated. Please upload your atKeys to pair it with this device` + String get error_atSign_activated { return Intl.message( - 'If you have an atSign, Tap to upload atSign key', - name: 'tutorial_upload_atSign_key', + 'This atSign has already been activated. Please upload your atKeys to pair it with this device', + name: 'error_atSign_activated', desc: '', args: [], ); } - /// `Generate a free atSign` - String get btn_generate_atSign { + /// `{atsign} was already paired with this device. First delete/reset this atSign from device to add.` + String error_atSign_already_paired(Object atsign) { return Intl.message( - 'Generate a free atSign', - name: 'btn_generate_atSign', + '$atsign was already paired with this device. First delete/reset this atSign from device to add.', + name: 'error_atSign_already_paired', desc: '', - args: [], + args: [atsign], ); } - /// `atSign cannot be empty` - String get msg_atSign_cannot_empty { + /// `This atSign has already been activated and paired with this device` + String get error_atSign_logged { return Intl.message( - 'atSign cannot be empty', - name: 'msg_atSign_cannot_empty', + 'This atSign has already been activated and paired with this device', + name: 'error_atSign_logged', desc: '', args: [], ); } - /// `Refresh until you see an atSign that you like, then press Pair` - String get msg_refresh_atSign { + /// `Authentication Failed` + String get error_authenticated_failed { return Intl.message( - 'Refresh until you see an atSign that you like, then press Pair', - name: 'msg_refresh_atSign', + 'Authentication Failed', + name: 'error_authenticated_failed', desc: '', args: [], ); } - /// `Learn more about atSigns` - String get learn_about_atSign { + /// `Enter a valid email address` + String get error_enter_valid_email { return Intl.message( - 'Learn more about atSigns', - name: 'learn_about_atSign', + 'Enter a valid email address', + name: 'error_enter_valid_email', desc: '', args: [], ); } - /// `Refresh` - String get btn_refresh { + /// `Incorrect QR file` + String get error_incorrect_QRFile { return Intl.message( - 'Refresh', - name: 'btn_refresh', + 'Incorrect QR file', + name: 'error_incorrect_QRFile', desc: '', args: [], ); } - /// `Pair` - String get btn_pair { + /// `Invalid atSign is provided. Please contact admin.` + String get error_invalid_atSign_provided { return Intl.message( - 'Pair', - name: 'btn_pair', + 'Invalid atSign is provided. Please contact admin.', + name: 'error_invalid_atSign_provided', desc: '', args: [], ); } - /// `Already have an atSign?` - String get btn_already_have_atSign { + /// `Unable to perform read/write operation. Please try again.` + String get error_perform_operation { return Intl.message( - 'Already have an atSign?', - name: 'btn_already_have_atSign', + 'Unable to perform read/write operation. Please try again.', + name: 'error_perform_operation', desc: '', args: [], ); } - /// `Processing...` - String get processing { + /// `Please enter a valid email address` + String get error_please_enter_email { return Intl.message( - 'Processing...', - name: 'processing', + 'Please enter a valid email address', + name: 'error_please_enter_email', desc: '', args: [], ); } - /// `Response Time out` - String get msg_response_time_out { + /// `Failed to process file` + String get error_process_file { return Intl.message( - 'Response Time out', - name: 'msg_response_time_out', + 'Failed to process file', + name: 'error_process_file', desc: '', args: [], ); } - /// `Auth Failed` - String get msg_auth_failed { + /// `Failed in processing files. Please try again` + String get error_processing_files { return Intl.message( - 'Auth Failed', - name: 'msg_auth_failed', + 'Failed in processing files. Please try again', + name: 'error_processing_files', desc: '', args: [], ); } - /// `Unable to fetch the keys from chosen file. Please choose correct file` - String get msg_cannot_fetch_keys_from_chosen_file { + /// `Failed in processing. Please try again.` + String get error_processing { return Intl.message( - 'Unable to fetch the keys from chosen file. Please choose correct file', - name: 'msg_cannot_fetch_keys_from_chosen_file', + 'Failed in processing. Please try again.', + name: 'error_processing', desc: '', args: [], ); } - /// `Failed in processing files. Please try again` - String get error_processing_files { + /// `Please provide valid backup key file to continue.` + String get error_provide_backupKey { return Intl.message( - 'Failed in processing files. Please try again', - name: 'error_processing_files', + 'Please provide valid backup key file to continue.', + name: 'error_provide_backupKey', desc: '', args: [], ); } - /// `If you have an activated atSign, tap to upload your atKeys` - String get tutorial_upload_your_atKey { + /// `Please provide a relevant backup key file to authenticate.` + String get error_provide_relevant_backupKey { return Intl.message( - 'If you have an activated atSign, tap to upload your atKeys', - name: 'tutorial_upload_your_atKey', + 'Please provide a relevant backup key file to authenticate.', + name: 'error_provide_relevant_backupKey', desc: '', args: [], ); } - /// `Tap to scan QR code` - String get tutorial_scan_QRCode { + /// `Please provide a valid QRCode to authenticate.` + String get error_provide_valid_QRCode { return Intl.message( - 'Tap to scan QR code', - name: 'tutorial_scan_QRCode', + 'Please provide a valid QRCode to authenticate.', + name: 'error_provide_valid_QRCode', desc: '', args: [], ); } - /// `Tap to upload image QR code` - String get tutorial_upload_image_QRCode { + /// `Server not found` + String get error_server_not_found { return Intl.message( - 'Tap to upload image QR code', - name: 'tutorial_upload_image_QRCode', + 'Server not found', + name: 'error_server_not_found', desc: '', args: [], ); } - /// `Tap here to activate your atSign` - String get tutorial_activate_your_atSign { + /// `Server response timed out!\nPlease check your network connection and try again. Contact {contactAddress} if the issue still persists.` + String error_server_response_timed_out(Object contactAddress) { return Intl.message( - 'Tap here to activate your atSign', - name: 'tutorial_activate_your_atSign', + 'Server response timed out!\nPlease check your network connection and try again. Contact $contactAddress if the issue still persists.', + name: 'error_server_response_timed_out', desc: '', - args: [], + args: [contactAddress], ); } - /// `If you don't have an atSign, tap here to get one` - String get tutorial_get_atSign { + /// `Server is unavailable. Please try again later.` + String get error_server_unavailable { return Intl.message( - 'If you don\'t have an atSign, tap here to get one', - name: 'tutorial_get_atSign', + 'Server is unavailable. Please try again later.', + name: 'error_server_unavailable', desc: '', args: [], ); } - /// `images` - String get images { + /// `Unable to connect. Please check with network connection and try again.` + String get error_unable_connect { return Intl.message( - 'images', - name: 'images', + 'Unable to connect. Please check with network connection and try again.', + name: 'error_unable_connect', desc: '', args: [], ); } - /// `Pair an atSign using your atKeys` - String get pair_atSign { + /// `Unable to authenticate. Please try again.` + String get error_unable_to_authenticate { return Intl.message( - 'Pair an atSign using your atKeys', - name: 'pair_atSign', + 'Unable to authenticate. Please try again.', + name: 'error_unable_to_authenticate', desc: '', args: [], ); } - /// `Upload atKeys` - String get upload_atKeys { + /// `Unable to connect server. Please try again later.` + String get error_unable_to_connect_server { return Intl.message( - 'Upload atKeys', - name: 'upload_atKeys', + 'Unable to connect server. Please try again later.', + name: 'error_unable_to_connect_server', desc: '', args: [], ); } - /// `Upload your atKey file. This file was generated when you activated and paired your atSign and you were prompted to store it in a secure location.` - String get sub_upload_atKeys { + /// `Unable to perform this action. Please try again.` + String get error_unable_to_perform_this_action { return Intl.message( - 'Upload your atKey file. This file was generated when you activated and paired your atSign and you were prompted to store it in a secure location.', - name: 'sub_upload_atKeys', + 'Unable to perform this action. Please try again.', + name: 'error_unable_to_perform_this_action', desc: '', args: [], ); } - /// `Have a QR Code?` - String get have_QRCode { + /// `Unknown error.` + String get error_unknown { return Intl.message( - 'Have a QR Code?', - name: 'have_QRCode', + 'Unknown error.', + name: 'error_unknown', desc: '', args: [], ); } - /// `Scan QR code` - String get btn_scan_QRCode { + /// `Get a free atSign` + String get get_free_atSign { return Intl.message( - 'Scan QR code', - name: 'btn_scan_QRCode', + 'Get a free atSign', + name: 'get_free_atSign', desc: '', args: [], ); } - /// `Upload QR code` - String get btn_upload_QRCode { + /// `Have a QR Code?` + String get have_QRCode { return Intl.message( - 'Upload QR code', - name: 'btn_upload_QRCode', + 'Have a QR Code?', + name: 'have_QRCode', desc: '', args: [], ); } - /// `Activate an atSign?` - String get title_activate_an_atSign { + /// `images` + String get images { return Intl.message( - 'Activate an atSign?', - name: 'title_activate_an_atSign', + 'images', + name: 'images', desc: '', args: [], ); } - /// `Activate atSign` - String get btn_activate_atSign { + /// `Invalid QR.` + String get invalid_QR { return Intl.message( - 'Activate atSign', - name: 'btn_activate_atSign', + 'Invalid QR.', + name: 'invalid_QR', desc: '', args: [], ); } - /// `Get a free atSign` - String get get_free_atSign { + /// `Learn more about atSigns` + String get learn_about_atSign { return Intl.message( - 'Get a free atSign', - name: 'get_free_atSign', + 'Learn more about atSigns', + name: 'learn_about_atSign', desc: '', args: [], ); } - /// `Incorrect QR file` - String get error_incorrect_QRFile { + /// `Learn more` + String get learn_more { return Intl.message( - 'Incorrect QR file', - name: 'error_incorrect_QRFile', + 'Learn more', + name: 'learn_more', desc: '', args: [], ); } - /// `Failed to process file` - String get error_process_file { + /// `Loading atSigns` + String get loading_atSigns { return Intl.message( - 'Failed to process file', - name: 'error_process_file', + 'Loading atSigns', + name: 'loading_atSigns', desc: '', args: [], ); } - /// `Activate an atSign` - String get activate_an_atSign { + /// `Warning: This action cannot be undone` + String get msg_action_cannot_undone { return Intl.message( - 'Activate an atSign', - name: 'activate_an_atSign', + 'Warning: This action cannot be undone', + name: 'msg_action_cannot_undone', desc: '', args: [], ); } - /// `Enter the atSign you would like to activate` - String get enter_atSign_need_to_activate { + /// `atSign cannot be empty` + String get msg_atSign_cannot_empty { return Intl.message( - 'Enter the atSign you would like to activate', - name: 'enter_atSign_need_to_activate', + 'atSign cannot be empty', + name: 'msg_atSign_cannot_empty', desc: '', args: [], ); } - /// `Activate` - String get activate { + /// `Your atSign is not registered yet. Please try with the registered one.` + String get msg_atSign_not_registered { return Intl.message( - 'Activate', - name: 'activate', + 'Your atSign is not registered yet. Please try with the registered one.', + name: 'msg_atSign_not_registered', desc: '', args: [], ); } - /// `This app was built on the atPlatform. All atPlatform apps require an atSign. ` - String get title_intro { + /// `An atSign is required.` + String get msg_atSign_required { return Intl.message( - 'This app was built on the atPlatform. All atPlatform apps require an atSign. ', - name: 'title_intro', + 'An atSign is required.', + name: 'msg_atSign_required', desc: '', args: [], ); } - /// `Learn more` - String get learn_more { + /// `Your atSign and the server is unreachable. Please try again or contact support@atsign.com` + String get msg_atSign_unreachable { return Intl.message( - 'Learn more', - name: 'learn_more', + 'Your atSign and the server is unreachable. Please try again or contact support@atsign.com', + name: 'msg_atSign_unreachable', desc: '', args: [], ); } - /// `Already have an atSign` - String get already_have_an_atSign { + /// `Auth Failed` + String get msg_auth_failed { return Intl.message( - 'Already have an atSign', - name: 'already_have_an_atSign', + 'Auth Failed', + name: 'msg_auth_failed', desc: '', args: [], ); } - /// `Enter Verification Code` - String get enter_verification_code { + /// `Unable to fetch the keys from chosen file. Please choose correct file` + String get msg_cannot_fetch_keys_from_chosen_file { return Intl.message( - 'Enter Verification Code', - name: 'enter_verification_code', + 'Unable to fetch the keys from chosen file. Please choose correct file', + name: 'msg_cannot_fetch_keys_from_chosen_file', desc: '', args: [], ); } - /// `Verify & Login` - String get verify_and_login { + /// ` to select one of your existing atSigns.` + String get msg_maximum_atSign_next { return Intl.message( - 'Verify & Login', - name: 'verify_and_login', + ' to select one of your existing atSigns.', + name: 'msg_maximum_atSign_next', desc: '', args: [], ); } - /// `Resend Code` - String get resend_code { + /// `Oops! You already have the maximum number of free atSigns. Please login to ` + String get msg_maximum_atSign_prev { return Intl.message( - 'Resend Code', - name: 'resend_code', + 'Oops! You already have the maximum number of free atSigns. Please login to ', + name: 'msg_maximum_atSign_prev', desc: '', args: [], ); } - /// `Note:` - String get note { + /// `Refresh until you see an atSign that you like, then press Pair` + String get msg_refresh_atSign { return Intl.message( - 'Note:', - name: 'note', + 'Refresh until you see an atSign that you like, then press Pair', + name: 'msg_refresh_atSign', desc: '', args: [], ); } - /// ` If you didn't receive our email:\n- Confirm that your email address was entered correctly.\n- Check your spam/junk or promotions folder.` - String get note_otp_content { + /// `Response Time out` + String get msg_response_time_out { return Intl.message( - ' If you didn\'t receive our email:\n- Confirm that your email address was entered correctly.\n- Check your spam/junk or promotions folder.', - name: 'note_otp_content', + 'Response Time out', + name: 'msg_response_time_out', desc: '', args: [], ); } - /// `Verification code sent to` - String get verification_code_sent_to { + /// `Please save your key in a secure location (we recommend Google Drive or iCloud Drive). You will need it to sign back in AND use other atPlatform apps.` + String get msg_save_atKey_in_secure_location { return Intl.message( - 'Verification code sent to', - name: 'verification_code_sent_to', + 'Please save your key in a secure location (we recommend Google Drive or iCloud Drive). You will need it to sign back in AND use other atPlatform apps.', + name: 'msg_save_atKey_in_secure_location', desc: '', args: [], ); } - /// `Close` - String get btn_close { + /// `This would save you the process to onboard this atsign on other apps again.` + String get msg_shared_storage { return Intl.message( - 'Close', - name: 'btn_close', + 'This would save you the process to onboard this atsign on other apps again.', + name: 'msg_shared_storage', desc: '', args: [], ); } - /// `Please enter the 4-character verification code that was sent to your email address` - String get enter_code { + /// `Please wait while fetching atSign status` + String get msg_wait_fetching_atSign { return Intl.message( - 'Please enter the 4-character verification code that was sent to your email address', - name: 'enter_code', + 'Please wait while fetching atSign status', + name: 'msg_wait_fetching_atSign', desc: '', args: [], ); } - /// `Oops! You already have the maximum number of free atSigns. Please login to ` - String get msg_maximum_atSign_prev { + /// `No atSigns are paired to reset. ` + String get no_atSigns_paired_to_reset { return Intl.message( - 'Oops! You already have the maximum number of free atSigns. Please login to ', - name: 'msg_maximum_atSign_prev', + 'No atSigns are paired to reset. ', + name: 'no_atSigns_paired_to_reset', desc: '', args: [], ); } - /// ` to select one of your existing atSigns.` - String get msg_maximum_atSign_next { + /// `No permission` + String get no_permission { return Intl.message( - ' to select one of your existing atSigns.', - name: 'msg_maximum_atSign_next', + 'No permission', + name: 'no_permission', desc: '', args: [], ); } - /// `Enter your email address` - String get enter_your_email_address { + /// ` If you didn't receive our email:\n- Confirm that your email address was entered correctly.\n- Check your spam/junk or promotions folder.` + String get note_otp_content { return Intl.message( - 'Enter your email address', - name: 'enter_your_email_address', + ' If you didn\'t receive our email:\n- Confirm that your email address was entered correctly.\n- Check your spam/junk or promotions folder.', + name: 'note_otp_content', desc: '', args: [], ); @@ -791,71 +791,71 @@ class AtOnboardingLocalizations { ); } - /// `Send Code` - String get send_code { + /// `Note:` + String get note { return Intl.message( - 'Send Code', - name: 'send_code', + 'Note:', + name: 'note', desc: '', args: [], ); } - /// `Please enter a valid email address` - String get error_please_enter_email { + /// `Notice` + String get notice { return Intl.message( - 'Please enter a valid email address', - name: 'error_please_enter_email', + 'Notice', + name: 'notice', desc: '', args: [], ); } - /// `Enter a valid email address` - String get error_enter_valid_email { + /// `Onboarding` + String get onboarding { return Intl.message( - 'Enter a valid email address', - name: 'error_enter_valid_email', + 'Onboarding', + name: 'onboarding', desc: '', args: [], ); } - /// `No permission` - String get no_permission { + /// `Pair an atSign using your atKeys` + String get pair_atSign { return Intl.message( - 'No permission', - name: 'no_permission', + 'Pair an atSign using your atKeys', + name: 'pair_atSign', desc: '', args: [], ); } - /// `Scan your QR!` - String get scan_your_QR { + /// `Processing...` + String get processing { return Intl.message( - 'Scan your QR!', - name: 'scan_your_QR', + 'Processing...', + name: 'processing', desc: '', args: [], ); } - /// `Invalid QR.` - String get invalid_QR { + /// `Remove` + String get remove { return Intl.message( - 'Invalid QR.', - name: 'invalid_QR', + 'Remove', + name: 'remove', desc: '', args: [], ); } - /// `Reset` - String get reset { + /// `Resend Code` + String get resend_code { return Intl.message( - 'Reset', - name: 'reset', + 'Resend Code', + name: 'resend_code', desc: '', args: [], ); @@ -871,303 +871,303 @@ class AtOnboardingLocalizations { ); } - /// `No atSigns are paired to reset. ` - String get no_atSigns_paired_to_reset { + /// `Reset` + String get reset { return Intl.message( - 'No atSigns are paired to reset. ', - name: 'no_atSigns_paired_to_reset', + 'Reset', + name: 'reset', desc: '', args: [], ); } - /// `Select All` - String get select_all { + /// `Scan your QR!` + String get scan_your_QR { return Intl.message( - 'Select All', - name: 'select_all', + 'Scan your QR!', + name: 'scan_your_QR', desc: '', args: [], ); } - /// `Warning: This action cannot be undone` - String get msg_action_cannot_undone { + /// `Select All` + String get select_all { return Intl.message( - 'Warning: This action cannot be undone', - name: 'msg_action_cannot_undone', + 'Select All', + name: 'select_all', desc: '', args: [], ); } - /// `Remove` - String get remove { + /// `Please select at least one atSign to reset` + String get select_atSign_to_reset { return Intl.message( - 'Remove', - name: 'remove', + 'Please select at least one atSign to reset', + name: 'select_atSign_to_reset', desc: '', args: [], ); } - /// `Please select at least one atSign to reset` - String get select_atSign_to_reset { + /// `Select atSigns` + String get select_atSign { return Intl.message( - 'Please select at least one atSign to reset', - name: 'select_atSign_to_reset', + 'Select atSigns', + name: 'select_atSign', desc: '', args: [], ); } - /// `Onboarding` - String get onboarding { + /// `Send Code` + String get send_code { return Intl.message( - 'Onboarding', - name: 'onboarding', + 'Send Code', + name: 'send_code', desc: '', args: [], ); } - /// `Cancel` - String get btn_cancel { + /// `Upload your atKey file. This file was generated when you activated and paired your atSign and you were prompted to store it in a secure location.` + String get sub_upload_atKeys { return Intl.message( - 'Cancel', - name: 'btn_cancel', + 'Upload your atKey file. This file was generated when you activated and paired your atSign and you were prompted to store it in a secure location.', + name: 'sub_upload_atKeys', desc: '', args: [], ); } - /// `No` - String get btn_no { + /// `Activate an atSign?` + String get title_activate_an_atSign { return Intl.message( - 'No', - name: 'btn_no', + 'Activate an atSign?', + name: 'title_activate_an_atSign', desc: '', args: [], ); } - /// `Yes` - String get btn_yes { + /// `FAQ` + String get title_FAQ { return Intl.message( - 'Yes', - name: 'btn_yes', + 'FAQ', + name: 'title_FAQ', desc: '', args: [], ); } - /// `Do you want to share this onboarded atsign with other apps on atPlatform?` - String get title_shared_storage { + /// `IMPORTANT!` + String get title_important { return Intl.message( - 'Do you want to share this onboarded atsign with other apps on atPlatform?', - name: 'title_shared_storage', + 'IMPORTANT!', + name: 'title_important', desc: '', args: [], ); } - /// `This would save you the process to onboard this atsign on other apps again.` - String get msg_shared_storage { + /// `This app was built on the atPlatform. All atPlatform apps require an atSign. ` + String get title_intro { return Intl.message( - 'This would save you the process to onboard this atsign on other apps again.', - name: 'msg_shared_storage', + 'This app was built on the atPlatform. All atPlatform apps require an atSign. ', + name: 'title_intro', desc: '', args: [], ); } - /// `A verification code has been sent to` - String get verification_code_has_been_sent_to { + /// `to pair with this device` + String get title_pair_atSign_next { return Intl.message( - 'A verification code has been sent to', - name: 'verification_code_has_been_sent_to', + 'to pair with this device', + name: 'title_pair_atSign_next', desc: '', args: [], ); } - /// `your registered email.` - String get your_registered_email { + /// `You have selected ` + String get title_pair_atSign_prev { return Intl.message( - 'your registered email.', - name: 'your_registered_email', + 'You have selected ', + name: 'title_pair_atSign_prev', desc: '', args: [], ); } - /// `Unable to perform this action. Please try again.` - String get error_unable_to_perform_this_action { + /// `Save your key` + String get title_save_your_key { return Intl.message( - 'Unable to perform this action. Please try again.', - name: 'error_unable_to_perform_this_action', + 'Save your key', + name: 'title_save_your_key', desc: '', args: [], ); } - /// `Unable to authenticate. Please try again.` - String get error_unable_to_authenticate { + /// `You already have some existing atsigns. Please select an atSign or else continue with the new one.` + String get title_select_atSign { return Intl.message( - 'Unable to authenticate. Please try again.', - name: 'error_unable_to_authenticate', + 'You already have some existing atsigns. Please select an atSign or else continue with the new one.', + name: 'title_select_atSign', desc: '', args: [], ); } - /// `Failed in processing. Please try again.` - String get error_processing { + /// `Your session expired` + String get title_session_expired { return Intl.message( - 'Failed in processing. Please try again.', - name: 'error_processing', + 'Your session expired', + name: 'title_session_expired', desc: '', args: [], ); } - /// `Unable to connect server. Please try again later.` - String get error_unable_to_connect_server { + /// `Setting up your atSign` + String get title_setting_up_your_atSign { return Intl.message( - 'Unable to connect server. Please try again later.', - name: 'error_unable_to_connect_server', + 'Setting up your atSign', + name: 'title_setting_up_your_atSign', desc: '', args: [], ); } - /// `Unable to perform read/write operation. Please try again.` - String get error_perform_operation { + /// `Do you want to share this onboarded atsign with other apps on atPlatform?` + String get title_shared_storage { return Intl.message( - 'Unable to perform read/write operation. Please try again.', - name: 'error_perform_operation', + 'Do you want to share this onboarded atsign with other apps on atPlatform?', + name: 'title_shared_storage', desc: '', args: [], ); } - /// `Unable to activate server. Please contact admin.` - String get error_activate_server { + /// `Tap here to activate your atSign` + String get tutorial_activate_your_atSign { return Intl.message( - 'Unable to activate server. Please contact admin.', - name: 'error_activate_server', + 'Tap here to activate your atSign', + name: 'tutorial_activate_your_atSign', desc: '', args: [], ); } - /// `Server is unavailable. Please try again later.` - String get error_server_unavailable { + /// `Tap to generate a new free atSign` + String get tutorial_generate_atSign { return Intl.message( - 'Server is unavailable. Please try again later.', - name: 'error_server_unavailable', + 'Tap to generate a new free atSign', + name: 'tutorial_generate_atSign', desc: '', args: [], ); } - /// `Unable to connect. Please check with network connection and try again.` - String get error_unable_connect { + /// `If you don't have an atSign, tap here to get one` + String get tutorial_get_atSign { return Intl.message( - 'Unable to connect. Please check with network connection and try again.', - name: 'error_unable_connect', + 'If you don\'t have an atSign, tap here to get one', + name: 'tutorial_get_atSign', desc: '', args: [], ); } - /// `Invalid atSign is provided. Please contact admin.` - String get error_invalid_atSign_provided { + /// `Tap to scan QR code` + String get tutorial_scan_QRCode { return Intl.message( - 'Invalid atSign is provided. Please contact admin.', - name: 'error_invalid_atSign_provided', + 'Tap to scan QR code', + name: 'tutorial_scan_QRCode', desc: '', args: [], ); } - /// `Please provide valid backup key file to continue.` - String get error_provide_backupKey { + /// `If you have an atSign, Tap to upload atSign key` + String get tutorial_upload_atSign_key { return Intl.message( - 'Please provide valid backup key file to continue.', - name: 'error_provide_backupKey', + 'If you have an atSign, Tap to upload atSign key', + name: 'tutorial_upload_atSign_key', desc: '', args: [], ); } - /// `Please provide a relevant backup key file to authenticate.` - String get error_provide_relevant_backupKey { + /// `Tap to upload image QR code` + String get tutorial_upload_image_QRCode { return Intl.message( - 'Please provide a relevant backup key file to authenticate.', - name: 'error_provide_relevant_backupKey', + 'Tap to upload image QR code', + name: 'tutorial_upload_image_QRCode', desc: '', args: [], ); } - /// `Please provide a valid QRCode to authenticate.` - String get error_provide_valid_QRCode { + /// `If you have an activated atSign, tap to upload your atKeys` + String get tutorial_upload_your_atKey { return Intl.message( - 'Please provide a valid QRCode to authenticate.', - name: 'error_provide_valid_QRCode', + 'If you have an activated atSign, tap to upload your atKeys', + name: 'tutorial_upload_your_atKey', desc: '', args: [], ); } - /// `Unknown error.` - String get error_unknown { + /// `Upload atKeys` + String get upload_atKeys { return Intl.message( - 'Unknown error.', - name: 'error_unknown', + 'Upload atKeys', + name: 'upload_atKeys', desc: '', args: [], ); } - /// `Server response timed out!\nPlease check your network connection and try again. Contact {contactAddress} if the issue still persists.` - String error_server_response_timed_out(Object contactAddress) { + /// `A verification code has been sent to` + String get verification_code_has_been_sent_to { return Intl.message( - 'Server response timed out!\nPlease check your network connection and try again. Contact $contactAddress if the issue still persists.', - name: 'error_server_response_timed_out', + 'A verification code has been sent to', + name: 'verification_code_has_been_sent_to', desc: '', - args: [contactAddress], + args: [], ); } - /// `{atsign} was already paired with this device. First delete/reset this atSign from device to add.` - String error_atSign_already_paired(Object atsign) { + /// `Verification code sent to` + String get verification_code_sent_to { return Intl.message( - '$atsign was already paired with this device. First delete/reset this atSign from device to add.', - name: 'error_atSign_already_paired', + 'Verification code sent to', + name: 'verification_code_sent_to', desc: '', - args: [atsign], + args: [], ); } - /// `atSign mismatches. Please provide the QRCode of {givenAtsign} to pair.` - String atSign_mismatches_need_to_provide_QRCode(Object givenAtsign) { + /// `Verify & Login` + String get verify_and_login { return Intl.message( - 'atSign mismatches. Please provide the QRCode of $givenAtsign to pair.', - name: 'atSign_mismatches_need_to_provide_QRCode', + 'Verify & Login', + name: 'verify_and_login', desc: '', - args: [givenAtsign], + args: [], ); } - /// `atSign mismatches. Please provide the backup key file of {givenAtsign} to pair.` - String atSign_mismatches_need_to_provide_backupKey(Object givenAtsign) { + /// `your registered email.` + String get your_registered_email { return Intl.message( - 'atSign mismatches. Please provide the backup key file of $givenAtsign to pair.', - name: 'atSign_mismatches_need_to_provide_backupKey', + 'your registered email.', + name: 'your_registered_email', desc: '', - args: [givenAtsign], + args: [], ); } } @@ -1179,7 +1179,15 @@ class AppLocalizationDelegate List get supportedLocales { return const [ Locale.fromSubtags(languageCode: 'en'), + Locale.fromSubtags(languageCode: 'es'), Locale.fromSubtags(languageCode: 'fr'), + Locale.fromSubtags(languageCode: 'pt'), + Locale.fromSubtags(languageCode: 'pt', countryCode: 'BR'), + Locale.fromSubtags(languageCode: 'zh'), + Locale.fromSubtags( + languageCode: 'zh', scriptCode: 'Hans', countryCode: 'CH'), + Locale.fromSubtags( + languageCode: 'zh', scriptCode: 'Hant', countryCode: 'HK'), ]; } diff --git a/packages/at_onboarding_flutter/lib/localizations/l10n/intl_en.arb b/packages/at_onboarding_flutter/lib/l10n/intl_en.arb similarity index 99% rename from packages/at_onboarding_flutter/lib/localizations/l10n/intl_en.arb rename to packages/at_onboarding_flutter/lib/l10n/intl_en.arb index 4b2e676a8..645ce12eb 100644 --- a/packages/at_onboarding_flutter/lib/localizations/l10n/intl_en.arb +++ b/packages/at_onboarding_flutter/lib/l10n/intl_en.arb @@ -1,114 +1,114 @@ { - "select_atSign": "Select atSigns", - "loading_atSigns": "Loading atSigns", - "title_select_atSign": "You already have some existing atsigns. Please select an atSign or else continue with the new one.", - "title_pair_atSign_prev": "You have selected ", - "title_pair_atSign_next": "to pair with this device", - "btn_yes_continue": "Yes, continue", - "msg_wait_fetching_atSign": "Please wait while fetching atSign status", - "error_atSign_logged": "This atSign has already been activated and paired with this device", - "error_atSign_activated": "This atSign has already been activated. Please upload your atKeys to pair it with this device", - "notice": "Notice", - "title_session_expired": "Your session expired", - "error_authenticated_failed": "Authentication Failed", - "error_server_not_found": "Server not found", - "msg_atSign_required": "An atSign is required.", + "activate_an_atSign": "Activate an atSign", + "activate": "Activate", + "already_have_an_atSign": "Already have an atSign", + "atSign_mismatches_need_to_provide_backupKey": "atSign mismatches. Please provide the backup key file of {givenAtsign} to pair.", + "atSign_mismatches_need_to_provide_QRCode": "atSign mismatches. Please provide the QRCode of {givenAtsign} to pair.", + "btn_activate_atSign": "Activate atSign", + "btn_already_have_atSign": "Already have an atSign?", + "btn_cancel": "Cancel", + "btn_close": "Close", "btn_continue": "CONTINUE", - "btn_remind_me_later": "Remind Me Later", - "title_setting_up_your_atSign": "Setting up your atSign", - "title_FAQ": "FAQ", - "msg_atSign_unreachable": "Your atSign and the server is unreachable. Please try again or contact support@atsign.com", - "msg_atSign_not_registered": "Your atSign is not registered yet. Please try with the registered one.", - "title_save_your_key": "Save your key", - "title_important": "IMPORTANT!", - "msg_save_atKey_in_secure_location": "Please save your key in a secure location (we recommend Google Drive or iCloud Drive). You will need it to sign back in AND use other atPlatform apps.", - "btn_save": "SAVE", - "btn_skip_tutorial": "SKIP TUTORIAL", - "tutorial_generate_atSign": "Tap to generate a new free atSign", - "tutorial_upload_atSign_key": "If you have an atSign, Tap to upload atSign key", "btn_generate_atSign": "Generate a free atSign", - "msg_atSign_cannot_empty": "atSign cannot be empty", - "msg_refresh_atSign": "Refresh until you see an atSign that you like, then press Pair", - "learn_about_atSign": "Learn more about atSigns", - "btn_refresh": "Refresh", + "btn_no": "No", "btn_pair": "Pair", - "btn_already_have_atSign": "Already have an atSign?", - "processing": "Processing...", - "msg_response_time_out": "Response Time out", - "msg_auth_failed": "Auth Failed", - "msg_cannot_fetch_keys_from_chosen_file": "Unable to fetch the keys from chosen file. Please choose correct file", - "error_processing_files": "Failed in processing files. Please try again", - "tutorial_upload_your_atKey": "If you have an activated atSign, tap to upload your atKeys", - "tutorial_scan_QRCode": "Tap to scan QR code", - "tutorial_upload_image_QRCode": "Tap to upload image QR code", - "tutorial_activate_your_atSign": "Tap here to activate your atSign", - "tutorial_get_atSign": "If you don't have an atSign, tap here to get one", - "images": "images", - "pair_atSign": "Pair an atSign using your atKeys", - "upload_atKeys": "Upload atKeys", - "sub_upload_atKeys": "Upload your atKey file. This file was generated when you activated and paired your atSign and you were prompted to store it in a secure location.", - "have_QRCode": "Have a QR Code?", + "btn_refresh": "Refresh", + "btn_remind_me_later": "Remind Me Later", + "btn_save": "SAVE", "btn_scan_QRCode": "Scan QR code", + "btn_skip_tutorial": "SKIP TUTORIAL", "btn_upload_QRCode": "Upload QR code", - "title_activate_an_atSign": "Activate an atSign?", - "btn_activate_atSign": "Activate atSign", - "get_free_atSign": "Get a free atSign", - "error_incorrect_QRFile": "Incorrect QR file", - "error_process_file": "Failed to process file", - "activate_an_atSign": "Activate an atSign", + "btn_yes_continue": "Yes, continue", + "btn_yes": "Yes", "enter_atSign_need_to_activate": "Enter the atSign you would like to activate", - "activate": "Activate", - "title_intro": "This app was built on the atPlatform. All atPlatform apps require an atSign. ", - "learn_more": "Learn more", - "already_have_an_atSign": "Already have an atSign", - "enter_verification_code": "Enter Verification Code", - "verify_and_login": "Verify & Login", - "resend_code": "Resend Code", - "note": "Note:", - "note_otp_content": " If you didn't receive our email:\n- Confirm that your email address was entered correctly.\n- Check your spam/junk or promotions folder.", - "verification_code_sent_to": "Verification code sent to", - "btn_close": "Close", "enter_code": "Please enter the 4-character verification code that was sent to your email address", - "msg_maximum_atSign_prev": "Oops! You already have the maximum number of free atSigns. Please login to ", - "msg_maximum_atSign_next": " to select one of your existing atSigns.", + "enter_verification_code": "Enter Verification Code", "enter_your_email_address": "Enter your email address", - "note_pair_content": "Note: We do not share your personal information or use it for financial gain.", - "send_code": "Send Code", - "error_please_enter_email": "Please enter a valid email address", + "error_activate_server": "Unable to activate server. Please contact admin.", + "error_atSign_activated": "This atSign has already been activated. Please upload your atKeys to pair it with this device", + "error_atSign_already_paired": "{atsign} was already paired with this device. First delete/reset this atSign from device to add.", + "error_atSign_logged": "This atSign has already been activated and paired with this device", + "error_authenticated_failed": "Authentication Failed", "error_enter_valid_email": "Enter a valid email address", - "no_permission": "No permission", - "scan_your_QR": "Scan your QR!", + "error_incorrect_QRFile": "Incorrect QR file", + "error_invalid_atSign_provided": "Invalid atSign is provided. Please contact admin.", + "error_perform_operation": "Unable to perform read/write operation. Please try again.", + "error_please_enter_email": "Please enter a valid email address", + "error_process_file": "Failed to process file", + "error_processing_files": "Failed in processing files. Please try again", + "error_processing": "Failed in processing. Please try again.", + "error_provide_backupKey": "Please provide valid backup key file to continue.", + "error_provide_relevant_backupKey": "Please provide a relevant backup key file to authenticate.", + "error_provide_valid_QRCode": "Please provide a valid QRCode to authenticate.", + "error_server_not_found": "Server not found", + "error_server_response_timed_out": "Server response timed out!\nPlease check your network connection and try again. Contact {contactAddress} if the issue still persists.", + "error_server_unavailable": "Server is unavailable. Please try again later.", + "error_unable_connect": "Unable to connect. Please check with network connection and try again.", + "error_unable_to_authenticate": "Unable to authenticate. Please try again.", + "error_unable_to_connect_server": "Unable to connect server. Please try again later.", + "error_unable_to_perform_this_action": "Unable to perform this action. Please try again.", + "error_unknown": "Unknown error.", + "get_free_atSign": "Get a free atSign", + "have_QRCode": "Have a QR Code?", + "images": "images", "invalid_QR": "Invalid QR.", - "reset": "Reset", - "reset_description": "This will remove the selected atSign and its details from this app only.", - "no_atSigns_paired_to_reset": "No atSigns are paired to reset. ", - "select_all": "Select All", + "learn_about_atSign": "Learn more about atSigns", + "learn_more": "Learn more", + "loading_atSigns": "Loading atSigns", "msg_action_cannot_undone": "Warning: This action cannot be undone", + "msg_atSign_cannot_empty": "atSign cannot be empty", + "msg_atSign_not_registered": "Your atSign is not registered yet. Please try with the registered one.", + "msg_atSign_required": "An atSign is required.", + "msg_atSign_unreachable": "Your atSign and the server is unreachable. Please try again or contact support@atsign.com", + "msg_auth_failed": "Auth Failed", + "msg_cannot_fetch_keys_from_chosen_file": "Unable to fetch the keys from chosen file. Please choose correct file", + "msg_maximum_atSign_next": " to select one of your existing atSigns.", + "msg_maximum_atSign_prev": "Oops! You already have the maximum number of free atSigns. Please login to ", + "msg_refresh_atSign": "Refresh until you see an atSign that you like, then press Pair", + "msg_response_time_out": "Response Time out", + "msg_save_atKey_in_secure_location": "Please save your key in a secure location (we recommend Google Drive or iCloud Drive). You will need it to sign back in AND use other atPlatform apps.", + "msg_shared_storage": "This would save you the process to onboard this atsign on other apps again.", + "msg_wait_fetching_atSign": "Please wait while fetching atSign status", + "no_atSigns_paired_to_reset": "No atSigns are paired to reset. ", + "no_permission": "No permission", + "note_otp_content": " If you didn't receive our email:\n- Confirm that your email address was entered correctly.\n- Check your spam/junk or promotions folder.", + "note_pair_content": "Note: We do not share your personal information or use it for financial gain.", + "note": "Note:", + "notice": "Notice", + "onboarding": "Onboarding", + "pair_atSign": "Pair an atSign using your atKeys", + "processing": "Processing...", "remove": "Remove", + "resend_code": "Resend Code", + "reset_description": "This will remove the selected atSign and its details from this app only.", + "reset": "Reset", + "scan_your_QR": "Scan your QR!", + "select_all": "Select All", "select_atSign_to_reset": "Please select at least one atSign to reset", - "onboarding": "Onboarding", - "btn_cancel": "Cancel", - "btn_no": "No", - "btn_yes": "Yes", + "select_atSign": "Select atSigns", + "send_code": "Send Code", + "sub_upload_atKeys": "Upload your atKey file. This file was generated when you activated and paired your atSign and you were prompted to store it in a secure location.", + "title_activate_an_atSign": "Activate an atSign?", + "title_FAQ": "FAQ", + "title_important": "IMPORTANT!", + "title_intro": "This app was built on the atPlatform. All atPlatform apps require an atSign. ", + "title_pair_atSign_next": "to pair with this device", + "title_pair_atSign_prev": "You have selected ", + "title_save_your_key": "Save your key", + "title_select_atSign": "You already have some existing atsigns. Please select an atSign or else continue with the new one.", + "title_session_expired": "Your session expired", + "title_setting_up_your_atSign": "Setting up your atSign", "title_shared_storage": "Do you want to share this onboarded atsign with other apps on atPlatform?", - "msg_shared_storage": "This would save you the process to onboard this atsign on other apps again.", + "tutorial_activate_your_atSign": "Tap here to activate your atSign", + "tutorial_generate_atSign": "Tap to generate a new free atSign", + "tutorial_get_atSign": "If you don't have an atSign, tap here to get one", + "tutorial_scan_QRCode": "Tap to scan QR code", + "tutorial_upload_atSign_key": "If you have an atSign, Tap to upload atSign key", + "tutorial_upload_image_QRCode": "Tap to upload image QR code", + "tutorial_upload_your_atKey": "If you have an activated atSign, tap to upload your atKeys", + "upload_atKeys": "Upload atKeys", "verification_code_has_been_sent_to": "A verification code has been sent to", - "your_registered_email": "your registered email.", - "error_unable_to_perform_this_action": "Unable to perform this action. Please try again.", - "error_unable_to_authenticate": "Unable to authenticate. Please try again.", - "error_processing": "Failed in processing. Please try again.", - "error_unable_to_connect_server": "Unable to connect server. Please try again later.", - "error_perform_operation": "Unable to perform read/write operation. Please try again.", - "error_activate_server": "Unable to activate server. Please contact admin.", - "error_server_unavailable": "Server is unavailable. Please try again later.", - "error_unable_connect": "Unable to connect. Please check with network connection and try again.", - "error_invalid_atSign_provided": "Invalid atSign is provided. Please contact admin.", - "error_provide_backupKey": "Please provide valid backup key file to continue.", - "error_provide_relevant_backupKey": "Please provide a relevant backup key file to authenticate.", - "error_provide_valid_QRCode": "Please provide a valid QRCode to authenticate.", - "error_unknown": "Unknown error.", - "error_server_response_timed_out": "Server response timed out!\nPlease check your network connection and try again. Contact {contactAddress} if the issue still persists.", - "error_atSign_already_paired": "{atsign} was already paired with this device. First delete/reset this atSign from device to add.", - "atSign_mismatches_need_to_provide_QRCode": "atSign mismatches. Please provide the QRCode of {givenAtsign} to pair.", - "atSign_mismatches_need_to_provide_backupKey": "atSign mismatches. Please provide the backup key file of {givenAtsign} to pair." + "verification_code_sent_to": "Verification code sent to", + "verify_and_login": "Verify & Login", + "your_registered_email": "your registered email." } \ No newline at end of file diff --git a/packages/at_onboarding_flutter/lib/l10n/intl_es.arb b/packages/at_onboarding_flutter/lib/l10n/intl_es.arb new file mode 100644 index 000000000..0309b2aa8 --- /dev/null +++ b/packages/at_onboarding_flutter/lib/l10n/intl_es.arb @@ -0,0 +1,114 @@ +{ + "activate_an_atSign": "Activar un atSign", + "activate": "Activar", + "already_have_an_atSign": "¿Ya tienes un atSign?", + "atSign_mismatches_need_to_provide_backupKey": "El atSign no coincide. Por favor, proporciona el archivo de clave de respaldo de {givenAtsign} para vincularlo.", + "atSign_mismatches_need_to_provide_QRCode": "El atSign no coincide. Por favor, proporciona el código QR de {givenAtsign} para vincularlo.", + "btn_activate_atSign": "Activar atSign", + "btn_already_have_atSign": "¿Ya tienes un atSign?", + "btn_cancel": "Cancelar", + "btn_close": "Cerrar", + "btn_continue": "CONTINUAR", + "btn_generate_atSign": "Generar un atSign gratuito", + "btn_no": "No", + "btn_pair": "Vincular", + "btn_refresh": "Actualizar", + "btn_remind_me_later": "Recordarme más tarde", + "btn_save": "GUARDAR", + "btn_scan_QRCode": "Escanear código QR", + "btn_skip_tutorial": "OMITIR TUTORIAL", + "btn_upload_QRCode": "Subir código QR", + "btn_yes_continue": "Sí, continuar", + "btn_yes": "Sí", + "enter_atSign_need_to_activate": "Ingresa el atSign que deseas activar", + "enter_code": "Por favor, ingresa el código de verificación de 4 caracteres que se envió a tu dirección de correo electrónico", + "enter_verification_code": "Ingresa el código de verificación", + "enter_your_email_address": "Ingresa tu dirección de correo electrónico", + "error_activate_server": "No se pudo activar el servidor. Por favor, contacta al administrador.", + "error_atSign_activated": "Este atSign ya ha sido activado. Por favor, sube tus atKeys para vincularlo con este dispositivo", + "error_atSign_already_paired": "{atsign} ya estaba vinculado a este dispositivo. Primero elimina/reinicia este atSign del dispositivo para agregarlo.", + "error_atSign_logged": "Este atSign ya ha sido activado y vinculado a este dispositivo", + "error_authenticated_failed": "Autenticación fallida", + "error_enter_valid_email": "Ingresa una dirección de correo electrónico válida", + "error_incorrect_QRFile": "Archivo QR incorrecto", + "error_invalid_atSign_provided": "Se proporcionó un atSign inválido. Por favor, contacta al administrador.", + "error_perform_operation": "No se pudo realizar la operación de lectura/escritura. Por favor, inténtalo de nuevo.", + "error_please_enter_email": "Por favor, ingresa una dirección de correo electrónico válida", + "error_process_file": "Error al procesar el archivo", + "error_processing_files": "Error al procesar los archivos. Por favor, inténtalo de nuevo", + "error_processing": "Error en el procesamiento. Por favor, inténtalo de nuevo.", + "error_provide_backupKey": "Por favor, proporciona un archivo de clave de respaldo válido para continuar.", + "error_provide_relevant_backupKey": "Por favor, proporciona un archivo de clave de respaldo relevante para autenticarte.", + "error_provide_valid_QRCode": "Por favor, proporciona un código QR válido para autenticarte.", + "error_server_not_found": "Servidor no encontrado", + "error_server_response_timed_out": "¡Tiempo de espera de respuesta del servidor!\nPor favor, verifica tu conexión de red e inténtalo de nuevo. Contacta a {contactAddress} si el problema persiste.", + "error_server_unavailable": "El servidor no está disponible. Por favor, inténtalo más tarde.", + "error_unable_connect": "No se puede conectar. Por favor, verifica tu conexión de red e inténtalo de nuevo.", + "error_unable_to_authenticate": "No se pudo autenticar. Por favor, inténtalo de nuevo.", + "error_unable_to_connect_server": "No se pudo conectar al servidor. Por favor, inténtalo más tarde.", + "error_unable_to_perform_this_action": "No se puede realizar esta acción. Por favor, inténtalo de nuevo.", + "error_unknown": "Error desconocido.", + "get_free_atSign": "Obtener un atSign gratuito", + "have_QRCode": "¿Tienes un código QR?", + "images": "imágenes", + "invalid_QR": "QR inválido.", + "learn_about_atSign": "Aprende más sobre atSign", + "learn_more": "Aprende más", + "loading_atSigns": "Cargando atSigns", + "msg_action_cannot_undone": "Advertencia: Esta acción no se puede deshacer", + "msg_atSign_cannot_empty": "El atSign no puede estar vacío", + "msg_atSign_not_registered": "Tu atSign aún no está registrado. Por favor, inténtalo con uno registrado.", + "msg_atSign_required": "Se requiere un atSign.", + "msg_atSign_unreachable": "Tu atSign y el servidor son inaccesibles. Por favor, inténtalo de nuevo o contacta a support@atsign.com", + "msg_auth_failed": "Autenticación fallida", + "msg_cannot_fetch_keys_from_chosen_file": "No se pudieron obtener las claves del archivo seleccionado. Por favor, selecciona el archivo correcto", + "msg_maximum_atSign_next": " para seleccionar uno de tus atSigns existentes.", + "msg_maximum_atSign_prev": "¡Ups! Ya tienes el número máximo de atSigns gratuitos. Por favor, inicia sesión en ", + "msg_refresh_atSign": "Actualiza hasta que veas un atSign que te guste, luego presiona Vincular", + "msg_response_time_out": "Tiempo de espera de respuesta", + "msg_save_atKey_in_secure_location": "Por favor, guarda tu clave en un lugar seguro (recomendamos Google Drive o iCloud Drive). La necesitarás para volver a iniciar sesión Y usar otras aplicaciones de atPlatform.", + "msg_shared_storage": "Esto te ahorrará el proceso de integrar este atSign en otras aplicaciones nuevamente.", + "msg_wait_fetching_atSign": "Por favor, espera mientras se obtiene el estado del atSign", + "no_atSigns_paired_to_reset": "No hay atSigns vinculados para restablecer. ", + "no_permission": "Sin permiso", + "note_otp_content": " Si no recibiste nuestro correo electrónico:\n- Confirma que tu dirección de correo electrónico se ingresó correctamente.\n- Revisa tu carpeta de spam/correo no deseado o promociones.", + "note_pair_content": "Nota: No compartimos tu información personal ni la usamos para obtener ganancias financieras.", + "note": "Nota:", + "notice": "Aviso", + "onboarding": "Integración", + "pair_atSign": "Vincular un atSign usando tus atKeys", + "processing": "Procesando...", + "remove": "Eliminar", + "resend_code": "Reenviar código", + "reset_description": "Esto eliminará el atSign seleccionado y sus detalles de esta aplicación solamente.", + "reset": "Restablecer", + "scan_your_QR": "¡Escanea tu QR!", + "select_all": "Seleccionar todo", + "select_atSign_to_reset": "Por favor, selecciona al menos un atSign para restablecer", + "select_atSign": "Seleccionar atSigns", + "send_code": "Enviar código", + "sub_upload_atKeys": "Sube tu archivo atKey. Este archivo se generó cuando activaste y vinculaste tu atSign y se te pidió que lo guardaras en un lugar seguro.", + "title_activate_an_atSign": "¿Activar un atSign?", + "title_FAQ": "Preguntas frecuentes", + "title_important": "¡IMPORTANTE!", + "title_intro": "Esta aplicación fue construida en la plataforma atPlatform. Todas las aplicaciones atPlatform requieren un atSign. ", + "title_pair_atSign_next": "para vincular con este dispositivo", + "title_pair_atSign_prev": "Has seleccionado ", + "title_save_your_key": "Guarda tu clave", + "title_select_atSign": "Ya tienes algunos atSigns existentes. Por favor, selecciona un atSign o continúa con uno nuevo.", + "title_session_expired": "Tu sesión ha expirado", + "title_setting_up_your_atSign": "Configurando tu atSign", + "title_shared_storage": "¿Deseas compartir este atSign integrado con otras aplicaciones en atPlatform?", + "tutorial_activate_your_atSign": "Toca aquí para activar tu atSign", + "tutorial_generate_atSign": "Toca para generar un nuevo atSign gratuito", + "tutorial_get_atSign": "Si no tienes un atSign, toca aquí para obtener uno", + "tutorial_scan_QRCode": "Toca para escanear el código QR", + "tutorial_upload_atSign_key": "Si tienes un atSign, toca para subir la clave del atSign", + "tutorial_upload_image_QRCode": "Toca para subir la imagen del código QR", + "tutorial_upload_your_atKey": "Si tienes un atSign activado, toca para subir tus atKeys", + "upload_atKeys": "Subir atKeys", + "verification_code_has_been_sent_to": "Se ha enviado un código de verificación a", + "verification_code_sent_to": "Código de verificación enviado a", + "verify_and_login": "Verificar e iniciar sesión", + "your_registered_email": "tu correo electrónico registrado." +} \ No newline at end of file diff --git a/packages/at_onboarding_flutter/lib/l10n/intl_fr.arb b/packages/at_onboarding_flutter/lib/l10n/intl_fr.arb new file mode 100644 index 000000000..575bf32d3 --- /dev/null +++ b/packages/at_onboarding_flutter/lib/l10n/intl_fr.arb @@ -0,0 +1,115 @@ +{ + "activate_an_atSign": "Activer un atSign", + "activate": "Activer", + "already_have_an_atSign": "A déjà un arobase", + "atSign_mismatches_need_to_provide_backupKey": "incompatibilités atSign. Veuillez fournir le fichier de clé de sauvegarde de {givenAtsign} à coupler.", + "atSign_mismatches_need_to_provide_QRCode": "incompatibilités atSign. Veuillez fournir le QRCode de {givenAtsign} à coupler.", + "btn_activate_atSign": "Activer atSign", + "btn_already_have_atSign": "Vous avez déjà un atSign?", + "btn_cancel": "Annuler", + "btn_close": "Fermer", + "btn_continue": "CONTINUE", + "btn_generate_atSign": "Générer un atSign gratuit", + "btn_no": "Non", + "btn_pair": "Coupler", + "btn_refresh": "Actualiser", + "btn_remind_me_later": "Me rappeler plus tard", + "btn_save": "SAUVEGARDER", + "btn_scan_QRCode": "Scanner le code QR", + "btn_skip_tutorial": "PASSER LE TUTORIEL", + "btn_upload_QRCode": "Télécharger le code QR", + "btn_yes_continue": "Oui, continuer", + "btn_yes": "Oui", + "enter_atSign_need_to_activate": "Entrez l'atSign que vous souhaitez activer", + "enter_code": "Veuillez entrer le code de vérification à 4 caractères qui a été envoyé à votre adresse e-mail", + "enter_verification_code": "Entrez le code de vérification", + "enter_your_email_address": "Entrez votre adresse e-mail", + "error_activate_server": "Impossible d'activer le serveur. Veuillez contacter l'administrateur.", + "error_atSign_activated": "Cet atSign a déjà été activé. Veuillez télécharger vos atKeys pour les coupler avec cet appareil", + "error_atSign_already_paired": "{atsign} était déjà associé à cet appareil. Supprimez/réinitialisez d'abord cet atSign de l'appareil à ajouter.", + "error_atSign_logged": "Cet atSign a déjà été activé et couplé avec cet appareil", + "error_authenticated_failed": "Échec de l'authentification", + "error_enter_valid_email": "Entrez une adresse email valide", + "error_incorrect_QRFile": "Fichier QR incorrect", + "error_invalid_atSign_provided": "Un atSign non valide est fourni. Veuillez contacter l'administrateur.", + "error_perform_operation": "Impossible d'effectuer une opération de lecture/écriture. Veuillez réessayer.", + "error_please_enter_email": "S'il vous plaît, mettez une adresse email valide", + "error_process_file": "Échec du traitement du fichier", + "error_processing_files": "Échec du traitement des fichiers. Veuillez réessayer", + "error_processing": "Échec du traitement. Veuillez réessayer.", + "error_provide_backupKey": "Veuillez fournir un fichier de clé de sauvegarde valide pour continuer.", + "error_provide_relevant_backupKey": "Veuillez fournir un fichier de clé de sauvegarde pertinent pour vous authentifier.", + "error_provide_valid_QRCode": "Veuillez fournir un QRCode valide pour vous authentifier.", + "error_server_not_found": "Serveur introuvable", + "error_server_response_timed_out": "La réponse du serveur a expiré!\nVeuillez vérifier votre connexion réseau et réessayer. Contactez {contactAddress} si le problème persiste.", + "error_server_unavailable": "Le serveur est indisponible. Veuillez réessayer plus tard.", + "error_unable_connect": "Impossible de se connecter. Veuillez vérifier la connexion réseau et réessayer.", + "error_unable_to_authenticate": "Impossible à authentifier. Veuillez réessayer.", + "error_unable_to_connect_server": "Impossible de se connecter au serveur. Veuillez réessayer plus tard.", + "error_unable_to_perform_this_action": "Impossible d'effectuer cette action. Veuillez réessayer.", + "error_unknown": "Erreur inconnue.", + "get_free_atSign": "Obtenez un atSign gratuit", + "have_QRCode": "Vous avez un code QR?", + "images": "images", + "invalid_QR": "QR non valide.", + "learn_about_atSign": "En savoir plus sur atSigns", + "learn_more": "En savoir plus", + "loading_atSigns": "Chargement des atSigns", + "msg_action_cannot_undone": "Attention: Cette action ne peut pas être annulée", + "msg_atSign_cannot_empty": "atSign ne peut pas être vide", + "msg_atSign_not_registered": "Votre atSign n'est pas encore enregistré. Veuillez essayer avec celui enregistré.", + "msg_atSign_required": "Un atSign est requis.", + "msg_atSign_unreachable": "Votre atSign et le serveur sont inaccessibles. Veuillez réessayer ou contacter support@atsign.com", + "msg_auth_failed": "Echec de l'authentification", + "msg_cannot_fetch_keys_from_chosen_file": "Impossible de récupérer les clés du fichier choisi. Veuillez choisir le bon fichier", + "msg_maximum_atSign_next": " pour sélectionner l'un de vos atSigns existants.", + "msg_maximum_atSign_prev": "Oops! Vous avez déjà le nombre maximum d'atSigns gratuits. Veuillez vous connecter à ", + "msg_refresh_atSign": "Actualiser jusqu'à ce que vous voyiez un atSign que vous aimez, puis appuyez sur Coupler", + "msg_response_time_out": "Délai de réponse expiré", + "msg_save_atKey_in_secure_location": "Veuillez enregistrer votre clé dans un emplacement sécurisé (nous recommandons Google Drive ou iCloud Drive). Vous en aurez besoin pour vous reconnecter ET utiliser d'autres applications atPlatform.", + "msg_shared_storage": "Cela vous éviterait d'avoir à intégrer à nouveau cet atsign sur d'autres applications.", + "msg_wait_fetching_atSign": "Veuillez patienter pendant la récupération du statut atSign", + "no_atSigns_paired_to_reset": "Aucun atSign n'est associé à la réinitialisation. ", + "no_permission": "Aucune autorisation", + "note_otp_content": " Si vous n'avez pas reçu notre e-mail: \n- Confirmez que votre adresse e-mail a été saisie correctement.\n- Vérifiez votre dossier spam/junk ou promotions.", + "note_pair_content": "Remarque: Nous ne partageons pas vos informations personnelles et ne les utilisons pas à des fins financières.", + "note": "Remarque:", + "notice": "Avis", + "onboarding": "Intégration", + "pair_atSign": "Associer un atSign à l'aide de vos atKeys", + "processing": "Traitement...", + "remove": "Supprimer", + "resend_code": "Renvoyer le code", + "reset_description": "Cela supprimera l'atSign sélectionné et ses détails de cette application uniquement.", + "reset": "Réinitialiser", + "scan_your_QR": "Scannez votre QR!", + "select_all": "Sélectionner tout", + "select_atSign_to_reset": "Veuillez sélectionner au moins un atSign à réinitialiser", + "select_atSign": "Selectionnez un atSign", + "send_code": "Envoyer le code", + "sub_upload_atKeys": "Téléchargez votre fichier atKey. Ce fichier a été généré lorsque vous avez activé et couplé votre atSign et que vous avez été invité à le stocker dans un emplacement sécurisé.", + "title_activate_an_atSign": "Activer un atSign ?", + "title_FAQ": "FAQ", + "title_important": "IMPORTANT!", + "title_intro": "Cette application a été créée sur atPlatform. Toutes les applications atPlatform nécessitent un atSign. ", + "title_pair_atSign_next": "Coupler avec cet appareil", + "title_pair_atSign_prev": "Vous avez sélectionné ", + "title_save_your_key": "Enregistrer votre clé", + "title_select_atSign": "Vous avez déjà des atsigns existants. Veuillez sélectionner un atSign ou continuer avec le nouveau.", + "title_session_expired": "Votre session a expiré", + "title_setting_up_your_atSign": "Configuration de votre atSign", + "title_shared_storage": "Voulez-vous partager cet atsign intégré avec d'autres applications sur atPlatform?", + "tutorial_activate_your_atSign": "Appuyez ici pour activer votre atSign", + "tutorial_generate_atSign": "Appuyez pour générer un nouvel atSign gratuit", + "tutorial_get_atSign": "Si vous n'avez pas d'atSign, appuyez ici pour en obtenir un", + "tutorial_scan_QRCode": "Appuyez pour scanner le code QR", + "tutorial_upload_atSign_key": "Si vous avez un atSign, appuyez pour télécharger la clé atSign", + "tutorial_upload_image_QRCode": "Appuyez pour télécharger le code QR de l'image", + "tutorial_upload_your_atKey": "Si vous avez un atSign activé, appuyez pour télécharger vos atKeys", + "upload_atKeys": "Télécharger atKeys", + "verification_code_has_been_sent_to": "Un code de vérification a été envoyé à", + "verification_code_sent_to": "Code de vérification envoyé à", + "verify_and_login": "Vérifier et se connecter", + "your_registered_email": "votre email enregistré." + } + \ No newline at end of file diff --git a/packages/at_onboarding_flutter/lib/l10n/intl_pt.arb b/packages/at_onboarding_flutter/lib/l10n/intl_pt.arb new file mode 100644 index 000000000..1e326c310 --- /dev/null +++ b/packages/at_onboarding_flutter/lib/l10n/intl_pt.arb @@ -0,0 +1,114 @@ +{ + "activate_an_atSign": "Ativar um atSign", + "activate": "Ativar", + "already_have_an_atSign": "Já tem um atSign?", + "atSign_mismatches_need_to_provide_backupKey": "O atSign não coincide. Por favor, forneça o ficheiro de chave de backup de {givenAtsign} para emparelhar.", + "atSign_mismatches_need_to_provide_QRCode": "O atSign não coincide. Por favor, forneça o código QR de {givenAtsign} para emparelhar.", + "btn_activate_atSign": "Ativar atSign", + "btn_already_have_atSign": "Já tem um atSign?", + "btn_cancel": "Cancelar", + "btn_close": "Fechar", + "btn_continue": "CONTINUAR", + "btn_generate_atSign": "Gerar um atSign gratuito", + "btn_no": "Não", + "btn_pair": "Emparelhar", + "btn_refresh": "Atualizar", + "btn_remind_me_later": "Lembrar-me mais tarde", + "btn_save": "GUARDAR", + "btn_scan_QRCode": "Ler código QR", + "btn_skip_tutorial": "Saltar Tutorial", + "btn_upload_QRCode": "Carregar código QR", + "btn_yes_continue": "Sim, continuar", + "btn_yes": "Sim", + "enter_atSign_need_to_activate": "Introduza o atSign que pretende ativar", + "enter_code": "Por favor, introduza o código de verificação de 4 caracteres que foi enviado para o seu endereço de e-mail", + "enter_verification_code": "Introduzir código de verificação", + "enter_your_email_address": "Introduza o seu endereço de e-mail", + "error_activate_server": "Não foi possível ativar o servidor. Contacte o administrador.", + "error_atSign_activated": "Este atSign já foi ativado. Carregue as suas atKeys para emparelhar com este dispositivo", + "error_atSign_already_paired": "O {atsign} já estava emparelhado com este dispositivo. Primeiro remova/redefina este atSign do dispositivo para adicionar.", + "error_atSign_logged": "Este atSign já foi ativado e emparelhado com este dispositivo", + "error_authenticated_failed": "Autenticação falhou", + "error_enter_valid_email": "Introduza um endereço de e-mail válido", + "error_incorrect_QRFile": "Ficheiro QR incorreto", + "error_invalid_atSign_provided": "O atSign fornecido é inválido. Contacte o administrador.", + "error_perform_operation": "Não foi possível realizar a operação de leitura/escrita. Por favor, tente novamente.", + "error_please_enter_email": "Por favor, introduza um endereço de e-mail válido", + "error_process_file": "Falha ao processar o ficheiro", + "error_processing_files": "Falha ao processar os ficheiros. Por favor, tente novamente", + "error_processing": "Falha no processamento. Por favor, tente novamente.", + "error_provide_backupKey": "Por favor, forneça um ficheiro de chave de backup válido para continuar.", + "error_provide_relevant_backupKey": "Por favor, forneça um ficheiro de chave de backup relevante para autenticação.", + "error_provide_valid_QRCode": "Por favor, forneça um código QR válido para autenticação.", + "error_server_not_found": "Servidor não encontrado", + "error_server_response_timed_out": "Tempo de espera de resposta do servidor!\nPor favor, verifique a sua ligação à internet e tente novamente. Contacte {contactAddress} se o problema persistir.", + "error_server_unavailable": "Servidor indisponível. Por favor, tente novamente mais tarde.", + "error_unable_connect": "Não foi possível conectar. Por favor, verifique a sua ligação à internet e tente novamente.", + "error_unable_to_authenticate": "Não foi possível autenticar. Por favor, tente novamente.", + "error_unable_to_connect_server": "Não foi possível conectar ao servidor. Por favor, tente novamente mais tarde.", + "error_unable_to_perform_this_action": "Não foi possível executar esta ação. Por favor, tente novamente.", + "error_unknown": "Erro desconhecido.", + "get_free_atSign": "Obter um atSign gratuito", + "have_QRCode": "Tem um código QR?", + "images": "imagens", + "invalid_QR": "QR inválido.", + "learn_about_atSign": "Saiba mais sobre atSign", + "learn_more": "Saiba mais", + "loading_atSigns": "A carregar atSign", + "msg_action_cannot_undone": "Atenção: Esta ação não pode ser desfeita", + "msg_atSign_cannot_empty": "O atSign não pode estar vazio", + "msg_atSign_not_registered": "O seu atSign ainda não está registado. Por favor, tente com um registado.", + "msg_atSign_required": "É necessário um atSign.", + "msg_atSign_unreachable": "O seu atSign e o servidor são inacessíveis. Por favor, tente novamente ou contacte support@atsign.com", + "msg_auth_failed": "Autenticação falhou", + "msg_cannot_fetch_keys_from_chosen_file": "Não foi possível obter as chaves do ficheiro selecionado. Por favor, selecione o ficheiro correto", + "msg_maximum_atSign_next": " para selecionar um dos seus atSigns existentes.", + "msg_maximum_atSign_prev": "Ops! Já tem o número máximo de atSigns gratuitos. Por favor, faça login em ", + "msg_refresh_atSign": "Atualize até ver um atSign que goste, depois carregue em Emparelhar", + "msg_response_time_out": "Tempo limite de resposta", + "msg_save_atKey_in_secure_location": "Por favor, guarde a sua chave num local seguro (recomendamos Google Drive ou iCloud Drive). Vai precisar dela para voltar a iniciar sessão E usar outras aplicações atPlatform.", + "msg_shared_storage": "Isto poupará o processo de integrar este atSign noutras aplicações novamente.", + "msg_wait_fetching_atSign": "Por favor, aguarde enquanto obtemos o estado do atSign", + "no_atSigns_paired_to_reset": "Não existem atSigns emparelhados para redefinir. ", + "no_permission": "Sem permissão", + "note_otp_content": "Se não recebeu o nosso e-mail:\n- Confirme se o seu endereço de e-mail está correto.\n- Verifique a sua pasta de spam/lixo ou promoções.", + "note_pair_content": "Nota: Não partilhamos a sua informação pessoal nem a usamos para ganhos financeiros.", + "note": "Nota:", + "notice": "Aviso", + "onboarding": "Integração", + "pair_atSign": "Emparelhar um atSign usando as suas atKeys", + "processing": "A processar...", + "remove": "Remover", + "resend_code": "Reenviar código", + "reset_description": "Isto irá remover o atSign selecionado e os seus detalhes apenas desta aplicação.", + "reset": "Redefinir", + "scan_your_QR": "Leia o seu QR!", + "select_all": "Selecionar tudo", + "select_atSign_to_reset": "Por favor, selecione pelo menos um atSign para redefinir", + "select_atSign": "Selecionar atSigns", + "send_code": "Enviar código", + "sub_upload_atKeys": "Carregue o seu ficheiro atKey. Este ficheiro foi gerado quando ativou e emparelhou o seu atSign e foi-lhe pedido para o guardar num local seguro.", + "title_activate_an_atSign": "Ativar um atSign?", + "title_FAQ": "FAQ", + "title_important": "IMPORTANTE!", + "title_intro": "Esta aplicação foi construída na plataforma atPlatform. Todas as aplicações atPlatform requerem um atSign. ", + "title_pair_atSign_next": "para emparelhar com este dispositivo", + "title_pair_atSign_prev": "Selecionou ", + "title_save_your_key": "Guarde a sua chave", + "title_select_atSign": "Já tem alguns atSigns existentes. Por favor, selecione um atSign ou continue com um novo.", + "title_session_expired": "A sua sessão expirou", + "title_setting_up_your_atSign": "A configurar o seu atSign", + "title_shared_storage": "Deseja partilhar este atSign integrado com outras aplicações na atPlatform?", + "tutorial_activate_your_atSign": "Toque aqui para ativar o seu atSign", + "tutorial_generate_atSign": "Toque para gerar um novo atSign gratuito", + "tutorial_get_atSign": "Se não tem um atSign, toque aqui para obter um", + "tutorial_scan_QRCode": "Toque para ler o código QR", + "tutorial_upload_atSign_key": "Se tem um atSign, toque para carregar a chave do atSign", + "tutorial_upload_image_QRCode": "Toque para carregar a imagem do código QR", + "tutorial_upload_your_atKey": "Se tem um atSign ativado, toque para carregar as suas atKeys", + "upload_atKeys": "Carregar atKeys", + "verification_code_has_been_sent_to": "Um código de verificação foi enviado para", + "verification_code_sent_to": "Código de verificação enviado para", + "verify_and_login": "Verificar e iniciar sessão", + "your_registered_email": "o seu e-mail registado." +} \ No newline at end of file diff --git a/packages/at_onboarding_flutter/lib/l10n/intl_pt_BR.arb b/packages/at_onboarding_flutter/lib/l10n/intl_pt_BR.arb new file mode 100644 index 000000000..b2a0fccc5 --- /dev/null +++ b/packages/at_onboarding_flutter/lib/l10n/intl_pt_BR.arb @@ -0,0 +1,114 @@ +{ + "activate_an_atSign": "Ativar um atSign", + "activate": "Ativar", + "already_have_an_atSign": "Já possui um atSign?", + "atSign_mismatches_need_to_provide_backupKey": "O atSign não confere. Forneça o arquivo de chave de backup de {givenAtsign} para emparelhar.", + "atSign_mismatches_need_to_provide_QRCode": "O atSign não confere. Forneça o código QR de {givenAtsign} para emparelhar.", + "btn_activate_atSign": "Ativar atSign", + "btn_already_have_atSign": "Já possui um atSign?", + "btn_cancel": "Cancelar", + "btn_close": "Fechar", + "btn_continue": "CONTINUAR", + "btn_generate_atSign": "Gerar um atSign gratuito", + "btn_no": "Não", + "btn_pair": "Emparelhar", + "btn_refresh": "Atualizar", + "btn_remind_me_later": "Lembrar-me mais tarde", + "btn_save": "SALVAR", + "btn_scan_QRCode": "Escanear código QR", + "btn_skip_tutorial": "Pular tutorial", + "btn_upload_QRCode": "Carregar código QR", + "btn_yes_continue": "Sim, continuar", + "btn_yes": "Sim", + "enter_atSign_need_to_activate": "Digite o atSign que deseja ativar", + "enter_code": "Digite o código de verificação de 4 caracteres enviado para seu endereço de e-mail", + "enter_verification_code": "Digite o código de verificação", + "enter_your_email_address": "Digite seu endereço de e-mail", + "error_activate_server": "Não foi possível ativar o servidor. Entre em contato com o administrador.", + "error_atSign_activated": "Este atSign já foi ativado. Carregue suas atKeys para emparelhar com este dispositivo", + "error_atSign_already_paired": "{atsign} já foi emparelhado com este dispositivo. Primeiro, remova/redefina este atSign do dispositivo para adicionar.", + "error_atSign_logged": "Este atSign já foi ativado e emparelhado com este dispositivo", + "error_authenticated_failed": "Falha na autenticação", + "error_enter_valid_email": "Digite um endereço de e-mail válido", + "error_incorrect_QRFile": "Arquivo QR incorreto", + "error_invalid_atSign_provided": "O atSign fornecido é inválido. Entre em contato com o administrador.", + "error_perform_operation": "Não foi possível realizar a operação de leitura/escrita. Tente novamente.", + "error_please_enter_email": "Por favor, digite um endereço de e-mail válido", + "error_process_file": "Falha ao processar o arquivo", + "error_processing_files": "Falha ao processar os arquivos. Tente novamente", + "error_processing": "Falha no processamento. Tente novamente.", + "error_provide_backupKey": "Forneça um arquivo de chave de backup válido para continuar.", + "error_provide_relevant_backupKey": "Forneça um arquivo de chave de backup relevante para autenticação.", + "error_provide_valid_QRCode": "Forneça um código QR válido para autenticação.", + "error_server_not_found": "Servidor não encontrado", + "error_server_response_timed_out": "Tempo limite de resposta do servidor!\nVerifique sua conexão com a internet e tente novamente. Entre em contato com {contactAddress} se o problema persistir.", + "error_server_unavailable": "Servidor indisponível. Tente novamente mais tarde.", + "error_unable_connect": "Não foi possível conectar. Verifique sua conexão com a internet e tente novamente.", + "error_unable_to_authenticate": "Não foi possível autenticar. Tente novamente.", + "error_unable_to_connect_server": "Não foi possível conectar ao servidor. Tente novamente mais tarde.", + "error_unable_to_perform_this_action": "Não foi possível executar esta ação. Tente novamente.", + "error_unknown": "Erro desconhecido.", + "get_free_atSign": "Obter um atSign gratuito", + "have_QRCode": "Possui um código QR?", + "images": "imagens", + "invalid_QR": "QR inválido.", + "learn_about_atSign": "Saiba mais sobre atSign", + "learn_more": "Saiba mais", + "loading_atSigns": "Carregando atSigns", + "msg_action_cannot_undone": "Atenção: Esta ação não pode ser desfeita", + "msg_atSign_cannot_empty": "O atSign não pode estar vazio", + "msg_atSign_not_registered": "Seu atSign ainda não está registrado. Tente com um registrado.", + "msg_atSign_required": "É necessário um atSign.", + "msg_atSign_unreachable": "Seu atSign e o servidor estão inacessíveis. Tente novamente ou entre em contato com support@atsign.com", + "msg_auth_failed": "Autenticação falhou", + "msg_cannot_fetch_keys_from_chosen_file": "Não foi possível obter as chaves do arquivo selecionado. Selecione o arquivo correto", + "msg_maximum_atSign_next": " para selecionar um de seus atSigns existentes.", + "msg_maximum_atSign_prev": "Ops! Você já possui o número máximo de atSigns gratuitos. Faça login em ", + "msg_refresh_atSign": "Atualize até ver um atSign que goste, então pressione Emparelhar", + "msg_response_time_out": "Tempo limite de resposta", + "msg_save_atKey_in_secure_location": "Salve sua chave em um local seguro (recomendamos Google Drive ou iCloud Drive). Você precisará dela para fazer login novamente E usar outros aplicativos atPlatform.", + "msg_shared_storage": "Isso economizará o processo de integrar este atSign em outros aplicativos novamente.", + "msg_wait_fetching_atSign": "Aguarde enquanto buscamos o status do atSign", + "no_atSigns_paired_to_reset": "Nenhum atSign está emparelhado para redefinição. ", + "no_permission": "Sem permissão", + "note_otp_content": "Se você não recebeu nosso e-mail:\n- Confirme se seu endereço de e-mail está correto.\n- Verifique sua caixa de spam/lixo ou promoções.", + "note_pair_content": "Observação: Não compartilhamos suas informações pessoais nem as usamos para ganhos financeiros.", + "note": "Observação:", + "notice": "Aviso", + "onboarding": "Integração", + "pair_atSign": "Emparelhar um atSign usando suas atKeys", + "processing": "Processando...", + "remove": "Remover", + "resend_code": "Reenviar código", + "reset_description": "Isso removerá o atSign selecionado e seus detalhes apenas deste aplicativo.", + "reset": "Redefinir", + "scan_your_QR": "Escanear seu QR!", + "select_all": "Selecionar todos", + "select_atSign_to_reset": "Selecione pelo menos um atSign para redefinir", + "select_atSign": "Selecionar atSigns", + "send_code": "Enviar código", + "sub_upload_atKeys": "Carregue seu arquivo atKey. Este arquivo foi gerado quando você ativou e emparelhou seu atSign e foi solicitado a armazená-lo em um local seguro.", + "title_activate_an_atSign": "Ativar um atSign?", + "title_FAQ": "FAQ", + "title_important": "IMPORTANTE!", + "title_intro": "Este aplicativo foi criado na plataforma atPlatform. Todos os aplicativos atPlatform exigem um atSign. ", + "title_pair_atSign_next": "para emparelhar com este dispositivo", + "title_pair_atSign_prev": "Você selecionou ", + "title_save_your_key": "Salve sua chave", + "title_select_atSign": "Você já possui alguns atSigns existentes. Selecione um atSign ou continue com um novo.", + "title_session_expired": "Sua sessão expirou", + "title_setting_up_your_atSign": "Configurando seu atSign", + "title_shared_storage": "Deseja compartilhar este atSign integrado com outros aplicativos na atPlatform?", + "tutorial_activate_your_atSign": "Toque aqui para ativar seu atSign", + "tutorial_generate_atSign": "Toque para gerar um novo atSign gratuito", + "tutorial_get_atSign": "Se você não possui um atSign, toque aqui para obter um", + "tutorial_scan_QRCode": "Toque para escanear o código QR", + "tutorial_upload_atSign_key": "Se você possui um atSign, toque para carregar a chave do atSign", + "tutorial_upload_image_QRCode": "Toque para carregar a imagem do código QR", + "tutorial_upload_your_atKey": "Se você possui um atSign ativado, toque para carregar suas atKeys", + "upload_atKeys": "Carregar atKeys", + "verification_code_has_been_sent_to": "Um código de verificação foi enviado para", + "verification_code_sent_to": "Código de verificação enviado para", + "verify_and_login": "Verificar e fazer login", + "your_registered_email": "seu e-mail registrado." +} \ No newline at end of file diff --git a/packages/at_onboarding_flutter/lib/l10n/intl_zh.arb b/packages/at_onboarding_flutter/lib/l10n/intl_zh.arb new file mode 100644 index 000000000..eb9899f17 --- /dev/null +++ b/packages/at_onboarding_flutter/lib/l10n/intl_zh.arb @@ -0,0 +1,114 @@ +{ + "activate_an_atSign": "激活一个atSign", + "activate": "激活", + "already_have_an_atSign": "已经有atSign了吗?", + "atSign_mismatches_need_to_provide_backupKey": "atSign不匹配。请提供{givenAtsign}的备份密钥文件进行配对。", + "atSign_mismatches_need_to_provide_QRCode": "atSign不匹配。请提供{givenAtsign}的二维码进行配对。", + "btn_activate_atSign": "激活atSign", + "btn_already_have_atSign": "已经有atSign了吗?", + "btn_cancel": "取消", + "btn_close": "关闭", + "btn_continue": "继续", + "btn_generate_atSign": "生成一个免费atSign", + "btn_no": "否", + "btn_pair": "配对", + "btn_refresh": "刷新", + "btn_remind_me_later": "稍后提醒我", + "btn_save": "保存", + "btn_scan_QRCode": "扫描二维码", + "btn_skip_tutorial": "跳过教程", + "btn_upload_QRCode": "上传二维码", + "btn_yes_continue": "是的,继续", + "btn_yes": "是", + "enter_atSign_need_to_activate": "输入您想要激活的atSign", + "enter_code": "请输入发送到您邮箱的4位验证码", + "enter_verification_code": "输入验证码", + "enter_your_email_address": "输入您的邮箱地址", + "error_activate_server": "无法激活服务器。请联系管理员。", + "error_atSign_activated": "此atSign已被激活。请上传您的atKeys与该设备配对", + "error_atSign_already_paired": "{atsign}已与该设备配对。请先从设备中删除/重置此atSign才能添加。", + "error_atSign_logged": "此atSign已激活并与该设备配对", + "error_authenticated_failed": "身份验证失败", + "error_enter_valid_email": "请输入有效的邮箱地址", + "error_incorrect_QRFile": "二维码文件错误", + "error_invalid_atSign_provided": "提供的atSign无效。请联系管理员。", + "error_perform_operation": "无法执行读/写操作。请重试。", + "error_please_enter_email": "请输入有效的邮箱地址", + "error_process_file": "文件处理失败", + "error_processing_files": "文件处理失败。请重试", + "error_processing": "处理失败。请重试。", + "error_provide_backupKey": "请提供有效的备份密钥文件以继续。", + "error_provide_relevant_backupKey": "请提供相关的备份密钥文件进行身份验证。", + "error_provide_valid_QRCode": "请提供有效的二维码进行身份验证。", + "error_server_not_found": "服务器未找到", + "error_server_response_timed_out": "服务器响应超时!\n请检查您的网络连接并重试。如果问题仍然存在,请联系{contactAddress}。", + "error_server_unavailable": "服务器不可用。请稍后再试。", + "error_unable_connect": "无法连接。请检查网络连接并重试。", + "error_unable_to_authenticate": "无法进行身份验证。请重试。", + "error_unable_to_connect_server": "无法连接服务器。请稍后再试。", + "error_unable_to_perform_this_action": "无法执行此操作。请重试。", + "error_unknown": "未知错误。", + "get_free_atSign": "获取免费atSign", + "have_QRCode": "有二维码吗?", + "images": "图片", + "invalid_QR": "二维码无效。", + "learn_about_atSign": "了解更多关于atSign的信息", + "learn_more": "了解更多", + "loading_atSigns": "正在加载atSign", + "msg_action_cannot_undone": "警告:此操作无法撤销", + "msg_atSign_cannot_empty": "atSign不能为空", + "msg_atSign_not_registered": "您的atSign尚未注册。请尝试使用已注册的atSign。", + "msg_atSign_required": "需要一个atSign。", + "msg_atSign_unreachable": "您的atSign和服务器无法访问。请重试或联系support@atsign.com", + "msg_auth_failed": "身份验证失败", + "msg_cannot_fetch_keys_from_chosen_file": "无法从所选文件中获取密钥。请选择正确的文件", + "msg_maximum_atSign_next": "来选择您现有的atSign之一。", + "msg_maximum_atSign_prev": "糟糕!您已经拥有了最大数量的免费atSign。请登录到", + "msg_refresh_atSign": "刷新直到您看到您喜欢的atSign,然后点击配对", + "msg_response_time_out": "响应超时", + "msg_save_atKey_in_secure_location": "请将您的密钥保存在安全的地方(我们建议使用Google Drive或iCloud Drive)。您需要它才能重新登录并使用其他atPlatform应用程序。", + "msg_shared_storage": "这将节省您在其他应用程序上再次集成此atSign的过程。", + "msg_wait_fetching_atSign": "请等待获取atSign状态", + "no_atSigns_paired_to_reset": "没有atSign需要重置。", + "no_permission": "无权限", + "note_otp_content": "如果您没有收到我们的邮件:\n- 确认您的邮箱地址输入正确。\n- 检查您的垃圾邮件/垃圾箱或推广文件夹。", + "note_pair_content": "注意:我们不会分享您的个人信息或将其用于牟利。", + "note": "注意:", + "notice": "通知", + "onboarding": "入门", + "pair_atSign": "使用您的atKeys配对atSign", + "processing": "处理中...", + "remove": "移除", + "resend_code": "重新发送验证码", + "reset_description": "这将仅从该应用程序中删除所选atSign及其详细信息。", + "reset": "重置", + "scan_your_QR": "扫描您的二维码!", + "select_all": "全选", + "select_atSign_to_reset": "请选择至少一个atSign进行重置", + "select_atSign": "选择atSign", + "send_code": "发送验证码", + "sub_upload_atKeys": "上传您的atKey文件。此文件在您激活并配对atSign时生成,并提示您将其存储在安全位置。", + "title_activate_an_atSign": "激活一个atSign?", + "title_FAQ": "常见问题", + "title_important": "重要提示!", + "title_intro": "此应用程序基于atPlatform构建。所有atPlatform应用程序都需要一个atSign。", + "title_pair_atSign_next": "与该设备配对", + "title_pair_atSign_prev": "您已选择", + "title_save_your_key": "保存您的密钥", + "title_select_atSign": "您已经有了一些现有的atSign。请选择一个atSign,或者继续使用新的atSign。", + "title_session_expired": "您的会话已过期", + "title_setting_up_your_atSign": "设置您的atSign", + "title_shared_storage": "您是否希望将此已集成的atSign与atPlatform上的其他应用程序共享?", + "tutorial_activate_your_atSign": "点击此处激活您的atSign", + "tutorial_generate_atSign": "点击此处生成新的免费atSign", + "tutorial_get_atSign": "如果您没有atSign,请点击此处获取一个", + "tutorial_scan_QRCode": "点击此处扫描二维码", + "tutorial_upload_atSign_key": "如果您有atSign,请点击此处上传atSign密钥", + "tutorial_upload_image_QRCode": "点击此处上传二维码图片", + "tutorial_upload_your_atKey": "如果您已激活atSign,请点击此处上传您的atKeys", + "upload_atKeys": "上传atKeys", + "verification_code_has_been_sent_to": "验证码已发送到", + "verification_code_sent_to": "验证码已发送到", + "verify_and_login": "验证并登录", + "your_registered_email": "您注册的邮箱。" +} \ No newline at end of file diff --git a/packages/at_onboarding_flutter/lib/l10n/intl_zh_Hans_CH.arb b/packages/at_onboarding_flutter/lib/l10n/intl_zh_Hans_CH.arb new file mode 100644 index 000000000..9ccd6960b --- /dev/null +++ b/packages/at_onboarding_flutter/lib/l10n/intl_zh_Hans_CH.arb @@ -0,0 +1,114 @@ +{ + "activate_an_atSign": "啟動一個 atSign", + "activate": "啟動", + "already_have_an_atSign": "已經有 atSign 了?", + "atSign_mismatches_need_to_provide_backupKey": "atSign 不符。請提供 {givenAtsign} 的備份金鑰檔案以配對。", + "atSign_mismatches_need_to_provide_QRCode": "atSign 不符。請提供 {givenAtsign} 的二維碼以配對。", + "btn_activate_atSign": "啟動 atSign", + "btn_already_have_atSign": "已經有 atSign 了嗎?", + "btn_cancel": "取消", + "btn_close": "關閉", + "btn_continue": "繼續", + "btn_generate_atSign": "生成一個免費 atSign", + "btn_no": "否", + "btn_pair": "配對", + "btn_refresh": "重新整理", + "btn_remind_me_later": "稍後提醒我", + "btn_save": "儲存", + "btn_scan_QRCode": "掃描二維碼", + "btn_skip_tutorial": "跳過教學", + "btn_upload_QRCode": "上傳二維碼", + "btn_yes_continue": "是,繼續", + "btn_yes": "是", + "enter_atSign_need_to_activate": "輸入您想啟動的 atSign", + "enter_code": "請輸入已發送到您的電郵地址的4位驗證碼", + "enter_verification_code": "輸入驗證碼", + "enter_your_email_address": "輸入您的電郵地址", + "error_activate_server": "無法啟動伺服器。請聯絡管理員。", + "error_atSign_activated": "此 atSign 已啟動。請上傳您的 atKeys 以與此裝置配對", + "error_atSign_already_paired": "{atsign} 已經與此裝置配對。請先從裝置中刪除/重置此 atSign 才能新增。", + "error_atSign_logged": "此 atSign 已啟動並與此裝置配對", + "error_authenticated_failed": "身份驗證失敗", + "error_enter_valid_email": "請輸入有效的電郵地址", + "error_incorrect_QRFile": "二維碼檔案錯誤", + "error_invalid_atSign_provided": "提供的 atSign 無效。請聯絡管理員。", + "error_perform_operation": "無法執行讀取/寫入操作。請重試。", + "error_please_enter_email": "請輸入有效的電郵地址", + "error_process_file": "檔案處理失敗", + "error_processing_files": "檔案處理失敗。請重試", + "error_processing": "處理失敗。請重試。", + "error_provide_backupKey": "請提供有效的備份金鑰檔案以繼續。", + "error_provide_relevant_backupKey": "請提供相關的備份金鑰檔案以進行身份驗證。", + "error_provide_valid_QRCode": "請提供有效的二維碼以進行身份驗證。", + "error_server_not_found": "伺服器找不到", + "error_server_response_timed_out": "伺服器回應逾時!\n請檢查您的網絡連線並重試。如果問題仍然存在,請聯絡 {contactAddress}。", + "error_server_unavailable": "伺服器不可用。請稍後再試。", + "error_unable_connect": "無法連線。請檢查網絡連線並重試。", + "error_unable_to_authenticate": "無法進行身份驗證。請重試。", + "error_unable_to_connect_server": "無法連接伺服器。請稍後再試。", + "error_unable_to_perform_this_action": "無法執行此操作。請重試。", + "error_unknown": "不明錯誤。", + "get_free_atSign": "取得免費 atSign", + "have_QRCode": "有二維碼嗎?", + "images": "圖片", + "invalid_QR": "二維碼無效。", + "learn_about_atSign": "了解更多關於 atSign 的資訊", + "learn_more": "了解更多", + "loading_atSigns": "正在載入 atSign", + "msg_action_cannot_undone": "警告:此操作無法復原", + "msg_atSign_cannot_empty": "atSign 不可為空", + "msg_atSign_not_registered": "您的 atSign 尚未註冊。請嘗試使用已註冊的 atSign。", + "msg_atSign_required": "需要一個 atSign。", + "msg_atSign_unreachable": "您的 atSign 和伺服器無法連線。請重試或聯絡 support@atsign.com", + "msg_auth_failed": "身份驗證失敗", + "msg_cannot_fetch_keys_from_chosen_file": "無法從已選檔案取得金鑰。請選擇正確的檔案", + "msg_maximum_atSign_next": "以選擇您現有的 atSign 之一。", + "msg_maximum_atSign_prev": "糟糕!您已經擁有最多數量的免費 atSign。請登入", + "msg_refresh_atSign": "重新整理直到您看到您喜歡的 atSign,然後點擊配對", + "msg_response_time_out": "回應逾時", + "msg_save_atKey_in_secure_location": "請將您的金鑰儲存在安全的地方(我們建議使用 Google Drive 或 iCloud Drive)。您需要它才能再次登入和使用其他 atPlatform 應用程式。", + "msg_shared_storage": "這將節省您在其他應用程式上再次整合此 atSign 的步驟。", + "msg_wait_fetching_atSign": "請等待擷取 atSign 狀態", + "no_atSigns_paired_to_reset": "沒有 atSign 需要重置。", + "no_permission": "沒有權限", + "note_otp_content": "如果您沒有收到我們的電郵:\n- 確認您的電郵地址輸入正確。\n- 檢查您的垃圾郵件/垃圾郵件或促銷郵件資料夾。", + "note_pair_content": "注意:我們不會分享您的個人資料或將其用於牟利。", + "note": "注意:", + "notice": "通知", + "onboarding": "開始使用", + "pair_atSign": "使用您的 atKeys 配對 atSign", + "processing": "處理中...", + "remove": "移除", + "resend_code": "重新傳送驗證碼", + "reset_description": "這將只會從此應用程式中移除所選 atSign 及其詳細資料。", + "reset": "重置", + "scan_your_QR": "掃描您的二維碼!", + "select_all": "全選", + "select_atSign_to_reset": "請選擇至少一個 atSign 以進行重置", + "select_atSign": "選擇 atSign", + "send_code": "傳送驗證碼", + "sub_upload_atKeys": "上傳您的 atKey 檔案。此檔案是在您啟動及配對您的 atSign 時生成的,並已提示您將其儲存在安全位置。", + "title_activate_an_atSign": "啟動一個 atSign?", + "title_FAQ": "常見問題", + "title_important": "重要提示!", + "title_intro": "此應用程式建基於 atPlatform。所有 atPlatform 應用程式都需要一個 atSign。", + "title_pair_atSign_next": "以與此裝置配對", + "title_pair_atSign_prev": "您已選擇", + "title_save_your_key": "儲存您的金鑰", + "title_select_atSign": "您已經擁有一些現有的 atSign。請選擇一個 atSign,或繼續使用新的 atSign。", + "title_session_expired": "您的工作階段已過期", + "title_setting_up_your_atSign": "設定您的 atSign", + "title_shared_storage": "您想將此已整合的 atSign 與 atPlatform 上的其他應用程式分享嗎?", + "tutorial_activate_your_atSign": "點按此處以啟動您的 atSign", + "tutorial_generate_atSign": "點按以生成新的免費 atSign", + "tutorial_get_atSign": "如果您沒有 atSign,請點按此處以取得一個", + "tutorial_scan_QRCode": "點按以掃描二維碼", + "tutorial_upload_atSign_key": "如果您有 atSign,請點按以上傳 atSign 金鑰", + "tutorial_upload_image_QRCode": "點按以上傳二維碼圖片", + "tutorial_upload_your_atKey": "如果您已啟動 atSign,請點按以上傳您的 atKeys", + "upload_atKeys": "上傳 atKeys", + "verification_code_has_been_sent_to": "驗證碼已發送到", + "verification_code_sent_to": "驗證碼已發送到", + "verify_and_login": "驗證並登入", + "your_registered_email": "您註冊的電郵。" +} \ No newline at end of file diff --git a/packages/at_onboarding_flutter/lib/l10n/intl_zh_Hant_HK.arb b/packages/at_onboarding_flutter/lib/l10n/intl_zh_Hant_HK.arb new file mode 100644 index 000000000..9ccd6960b --- /dev/null +++ b/packages/at_onboarding_flutter/lib/l10n/intl_zh_Hant_HK.arb @@ -0,0 +1,114 @@ +{ + "activate_an_atSign": "啟動一個 atSign", + "activate": "啟動", + "already_have_an_atSign": "已經有 atSign 了?", + "atSign_mismatches_need_to_provide_backupKey": "atSign 不符。請提供 {givenAtsign} 的備份金鑰檔案以配對。", + "atSign_mismatches_need_to_provide_QRCode": "atSign 不符。請提供 {givenAtsign} 的二維碼以配對。", + "btn_activate_atSign": "啟動 atSign", + "btn_already_have_atSign": "已經有 atSign 了嗎?", + "btn_cancel": "取消", + "btn_close": "關閉", + "btn_continue": "繼續", + "btn_generate_atSign": "生成一個免費 atSign", + "btn_no": "否", + "btn_pair": "配對", + "btn_refresh": "重新整理", + "btn_remind_me_later": "稍後提醒我", + "btn_save": "儲存", + "btn_scan_QRCode": "掃描二維碼", + "btn_skip_tutorial": "跳過教學", + "btn_upload_QRCode": "上傳二維碼", + "btn_yes_continue": "是,繼續", + "btn_yes": "是", + "enter_atSign_need_to_activate": "輸入您想啟動的 atSign", + "enter_code": "請輸入已發送到您的電郵地址的4位驗證碼", + "enter_verification_code": "輸入驗證碼", + "enter_your_email_address": "輸入您的電郵地址", + "error_activate_server": "無法啟動伺服器。請聯絡管理員。", + "error_atSign_activated": "此 atSign 已啟動。請上傳您的 atKeys 以與此裝置配對", + "error_atSign_already_paired": "{atsign} 已經與此裝置配對。請先從裝置中刪除/重置此 atSign 才能新增。", + "error_atSign_logged": "此 atSign 已啟動並與此裝置配對", + "error_authenticated_failed": "身份驗證失敗", + "error_enter_valid_email": "請輸入有效的電郵地址", + "error_incorrect_QRFile": "二維碼檔案錯誤", + "error_invalid_atSign_provided": "提供的 atSign 無效。請聯絡管理員。", + "error_perform_operation": "無法執行讀取/寫入操作。請重試。", + "error_please_enter_email": "請輸入有效的電郵地址", + "error_process_file": "檔案處理失敗", + "error_processing_files": "檔案處理失敗。請重試", + "error_processing": "處理失敗。請重試。", + "error_provide_backupKey": "請提供有效的備份金鑰檔案以繼續。", + "error_provide_relevant_backupKey": "請提供相關的備份金鑰檔案以進行身份驗證。", + "error_provide_valid_QRCode": "請提供有效的二維碼以進行身份驗證。", + "error_server_not_found": "伺服器找不到", + "error_server_response_timed_out": "伺服器回應逾時!\n請檢查您的網絡連線並重試。如果問題仍然存在,請聯絡 {contactAddress}。", + "error_server_unavailable": "伺服器不可用。請稍後再試。", + "error_unable_connect": "無法連線。請檢查網絡連線並重試。", + "error_unable_to_authenticate": "無法進行身份驗證。請重試。", + "error_unable_to_connect_server": "無法連接伺服器。請稍後再試。", + "error_unable_to_perform_this_action": "無法執行此操作。請重試。", + "error_unknown": "不明錯誤。", + "get_free_atSign": "取得免費 atSign", + "have_QRCode": "有二維碼嗎?", + "images": "圖片", + "invalid_QR": "二維碼無效。", + "learn_about_atSign": "了解更多關於 atSign 的資訊", + "learn_more": "了解更多", + "loading_atSigns": "正在載入 atSign", + "msg_action_cannot_undone": "警告:此操作無法復原", + "msg_atSign_cannot_empty": "atSign 不可為空", + "msg_atSign_not_registered": "您的 atSign 尚未註冊。請嘗試使用已註冊的 atSign。", + "msg_atSign_required": "需要一個 atSign。", + "msg_atSign_unreachable": "您的 atSign 和伺服器無法連線。請重試或聯絡 support@atsign.com", + "msg_auth_failed": "身份驗證失敗", + "msg_cannot_fetch_keys_from_chosen_file": "無法從已選檔案取得金鑰。請選擇正確的檔案", + "msg_maximum_atSign_next": "以選擇您現有的 atSign 之一。", + "msg_maximum_atSign_prev": "糟糕!您已經擁有最多數量的免費 atSign。請登入", + "msg_refresh_atSign": "重新整理直到您看到您喜歡的 atSign,然後點擊配對", + "msg_response_time_out": "回應逾時", + "msg_save_atKey_in_secure_location": "請將您的金鑰儲存在安全的地方(我們建議使用 Google Drive 或 iCloud Drive)。您需要它才能再次登入和使用其他 atPlatform 應用程式。", + "msg_shared_storage": "這將節省您在其他應用程式上再次整合此 atSign 的步驟。", + "msg_wait_fetching_atSign": "請等待擷取 atSign 狀態", + "no_atSigns_paired_to_reset": "沒有 atSign 需要重置。", + "no_permission": "沒有權限", + "note_otp_content": "如果您沒有收到我們的電郵:\n- 確認您的電郵地址輸入正確。\n- 檢查您的垃圾郵件/垃圾郵件或促銷郵件資料夾。", + "note_pair_content": "注意:我們不會分享您的個人資料或將其用於牟利。", + "note": "注意:", + "notice": "通知", + "onboarding": "開始使用", + "pair_atSign": "使用您的 atKeys 配對 atSign", + "processing": "處理中...", + "remove": "移除", + "resend_code": "重新傳送驗證碼", + "reset_description": "這將只會從此應用程式中移除所選 atSign 及其詳細資料。", + "reset": "重置", + "scan_your_QR": "掃描您的二維碼!", + "select_all": "全選", + "select_atSign_to_reset": "請選擇至少一個 atSign 以進行重置", + "select_atSign": "選擇 atSign", + "send_code": "傳送驗證碼", + "sub_upload_atKeys": "上傳您的 atKey 檔案。此檔案是在您啟動及配對您的 atSign 時生成的,並已提示您將其儲存在安全位置。", + "title_activate_an_atSign": "啟動一個 atSign?", + "title_FAQ": "常見問題", + "title_important": "重要提示!", + "title_intro": "此應用程式建基於 atPlatform。所有 atPlatform 應用程式都需要一個 atSign。", + "title_pair_atSign_next": "以與此裝置配對", + "title_pair_atSign_prev": "您已選擇", + "title_save_your_key": "儲存您的金鑰", + "title_select_atSign": "您已經擁有一些現有的 atSign。請選擇一個 atSign,或繼續使用新的 atSign。", + "title_session_expired": "您的工作階段已過期", + "title_setting_up_your_atSign": "設定您的 atSign", + "title_shared_storage": "您想將此已整合的 atSign 與 atPlatform 上的其他應用程式分享嗎?", + "tutorial_activate_your_atSign": "點按此處以啟動您的 atSign", + "tutorial_generate_atSign": "點按以生成新的免費 atSign", + "tutorial_get_atSign": "如果您沒有 atSign,請點按此處以取得一個", + "tutorial_scan_QRCode": "點按以掃描二維碼", + "tutorial_upload_atSign_key": "如果您有 atSign,請點按以上傳 atSign 金鑰", + "tutorial_upload_image_QRCode": "點按以上傳二維碼圖片", + "tutorial_upload_your_atKey": "如果您已啟動 atSign,請點按以上傳您的 atKeys", + "upload_atKeys": "上傳 atKeys", + "verification_code_has_been_sent_to": "驗證碼已發送到", + "verification_code_sent_to": "驗證碼已發送到", + "verify_and_login": "驗證並登入", + "your_registered_email": "您註冊的電郵。" +} \ No newline at end of file diff --git a/packages/at_onboarding_flutter/lib/localizations/l10n/intl_fr.arb b/packages/at_onboarding_flutter/lib/localizations/l10n/intl_fr.arb deleted file mode 100644 index 74641c9bf..000000000 --- a/packages/at_onboarding_flutter/lib/localizations/l10n/intl_fr.arb +++ /dev/null @@ -1,114 +0,0 @@ -{ - "select_atSign": "Selectionnez un atSign", - "loading_atSigns": "Chargement des atSigns", - "title_select_atSign": "Vous avez déjà des atsigns existants. Veuillez sélectionner un atSign ou continuer avec le nouveau.", - "title_pair_atSign_prev": "Vous avez sélectionné ", - "title_pair_atSign_next": "Coupler avec cet appareil", - "btn_yes_continue": "Oui, continuer", - "msg_wait_fetching_atSign": "Veuillez patienter pendant la récupération du statut atSign", - "error_atSign_logged": "Cet atSign a déjà été activé et couplé avec cet appareil", - "error_atSign_activated": "Cet atSign a déjà été activé. Veuillez télécharger vos atKeys pour les coupler avec cet appareil", - "notice": "Avis", - "title_session_expired": "Votre session a expiré", - "error_authenticated_failed": "Échec de l'authentification", - "error_server_not_found": "Serveur introuvable", - "msg_atSign_required": "Un atSign est requis.", - "btn_continue": "CONTINUE", - "btn_remind_me_later": "Me rappeler plus tard", - "title_setting_up_your_atSign": "Configuration de votre atSign", - "title_FAQ": "FAQ", - "msg_atSign_unreachable": "Votre atSign et le serveur sont inaccessibles. Veuillez réessayer ou contacter support@atsign.com", - "msg_atSign_not_registered": "Votre atSign n'est pas encore enregistré. Veuillez essayer avec celui enregistré.", - "title_save_your_key": "Enregistrer votre clé", - "title_important": "IMPORTANT!", - "msg_save_atKey_in_secure_location": "Veuillez enregistrer votre clé dans un emplacement sécurisé (nous recommandons Google Drive ou iCloud Drive). Vous en aurez besoin pour vous reconnecter ET utiliser d'autres applications atPlatform.", - "btn_save": "SAUVEGARDER", - "btn_skip_tutorial": "PASSER LE TUTORIEL", - "tutorial_generate_atSign": "Appuyez pour générer un nouvel atSign gratuit", - "tutorial_upload_atSign_key": "Si vous avez un atSign, appuyez pour télécharger la clé atSign", - "btn_generate_atSign": "Générer un atSign gratuit", - "msg_atSign_cannot_empty": "atSign ne peut pas être vide", - "msg_refresh_atSign": "Actualiser jusqu'à ce que vous voyiez un atSign que vous aimez, puis appuyez sur Coupler", - "learn_about_atSign": "En savoir plus sur atSigns", - "btn_refresh": "Actualiser", - "btn_pair": "Coupler", - "btn_already_have_atSign": "Vous avez déjà un atSign?", - "processing": "Traitement...", - "msg_response_time_out": "Délai de réponse expiré", - "msg_auth_failed": "Echec de l'authentification", - "msg_cannot_fetch_keys_from_chosen_file": "Impossible de récupérer les clés du fichier choisi. Veuillez choisir le bon fichier", - "error_processing_files": "Échec du traitement des fichiers. Veuillez réessayer", - "tutorial_upload_your_atKey": "Si vous avez un atSign activé, appuyez pour télécharger vos atKeys", - "tutorial_scan_QRCode": "Appuyez pour scanner le code QR", - "tutorial_upload_image_QRCode": "Appuyez pour télécharger le code QR de l'image", - "tutorial_activate_your_atSign": "Appuyez ici pour activer votre atSign", - "tutorial_get_atSign": "Si vous n'avez pas d'atSign, appuyez ici pour en obtenir un", - "images": "images", - "pair_atSign": "Associer un atSign à l'aide de vos atKeys", - "upload_atKeys": "Télécharger atKeys", - "sub_upload_atKeys": "Téléchargez votre fichier atKey. Ce fichier a été généré lorsque vous avez activé et couplé votre atSign et que vous avez été invité à le stocker dans un emplacement sécurisé.", - "have_QRCode": "Vous avez un code QR?", - "btn_scan_QRCode": "Scanner le code QR", - "btn_upload_QRCode": "Télécharger le code QR", - "title_activate_an_atSign": "Activer un atSign ?", - "btn_activate_atSign": "Activer atSign", - "get_free_atSign": "Obtenez un atSign gratuit", - "error_incorrect_QRFile": "Fichier QR incorrect", - "error_process_file": "Échec du traitement du fichier", - "activate_an_atSign": "Activer un atSign", - "enter_atSign_need_to_activate": "Entrez l'atSign que vous souhaitez activer", - "activate": "Activer", - "title_intro": "Cette application a été créée sur atPlatform. Toutes les applications atPlatform nécessitent un atSign. ", - "learn_more": "En savoir plus", - "already_have_an_atSign": "A déjà un arobase", - "enter_verification_code": "Entrez le code de vérification", - "verify_and_login": "Vérifier et se connecter", - "resend_code": "Renvoyer le code", - "note": "Remarque:", - "note_otp_content": " Si vous n'avez pas reçu notre e-mail: \n- Confirmez que votre adresse e-mail a été saisie correctement.\n- Vérifiez votre dossier spam/junk ou promotions.", - "verification_code_sent_to": "Code de vérification envoyé à", - "btn_close": "Fermer", - "enter_code": "Veuillez entrer le code de vérification à 4 caractères qui a été envoyé à votre adresse e-mail", - "msg_maximum_atSign_prev": "Oops! Vous avez déjà le nombre maximum d'atSigns gratuits. Veuillez vous connecter à ", - "msg_maximum_atSign_next": " pour sélectionner l'un de vos atSigns existants.", - "enter_your_email_address": "Entrez votre adresse e-mail", - "note_pair_content": "Remarque: Nous ne partageons pas vos informations personnelles et ne les utilisons pas à des fins financières.", - "send_code": "Envoyer le code", - "error_please_enter_email": "S'il vous plaît, mettez une adresse email valide", - "error_enter_valid_email": "Entrez une adresse email valide", - "no_permission": "Aucune autorisation", - "scan_your_QR": "Scannez votre QR!", - "invalid_QR": "QR non valide.", - "reset": "Réinitialiser", - "reset_description": "Cela supprimera l'atSign sélectionné et ses détails de cette application uniquement.", - "no_atSigns_paired_to_reset": "Aucun atSign n'est associé à la réinitialisation. ", - "select_all": "Sélectionner tout", - "msg_action_cannot_undone": "Attention: Cette action ne peut pas être annulée", - "remove": "Supprimer", - "select_atSign_to_reset": "Veuillez sélectionner au moins un atSign à réinitialiser", - "onboarding": "Intégration", - "btn_cancel": "Annuler", - "btn_no": "Non", - "btn_yes": "Oui", - "title_shared_storage": "Voulez-vous partager cet atsign intégré avec d'autres applications sur atPlatform?", - "msg_shared_storage": "Cela vous éviterait d'avoir à intégrer à nouveau cet atsign sur d'autres applications.", - "verification_code_has_been_sent_to": "Un code de vérification a été envoyé à", - "your_registered_email": "votre email enregistré.", - "error_unable_to_perform_this_action": "Impossible d'effectuer cette action. Veuillez réessayer.", - "error_unable_to_authenticate": "Impossible à authentifier. Veuillez réessayer.", - "error_processing": "Échec du traitement. Veuillez réessayer.", - "error_unable_to_connect_server": "Impossible de se connecter au serveur. Veuillez réessayer plus tard.", - "error_perform_operation": "Impossible d'effectuer une opération de lecture/écriture. Veuillez réessayer.", - "error_activate_server": "Impossible d'activer le serveur. Veuillez contacter l'administrateur.", - "error_server_unavailable": "Le serveur est indisponible. Veuillez réessayer plus tard.", - "error_unable_connect": "Impossible de se connecter. Veuillez vérifier la connexion réseau et réessayer.", - "error_invalid_atSign_provided": "Un atSign non valide est fourni. Veuillez contacter l'administrateur.", - "error_provide_backupKey": "Veuillez fournir un fichier de clé de sauvegarde valide pour continuer.", - "error_provide_relevant_backupKey": "Veuillez fournir un fichier de clé de sauvegarde pertinent pour vous authentifier.", - "error_provide_valid_QRCode": "Veuillez fournir un QRCode valide pour vous authentifier.", - "error_unknown": "Erreur inconnue.", - "error_server_response_timed_out": "La réponse du serveur a expiré!\nVeuillez vérifier votre connexion réseau et réessayer. Contactez {contactAddress} si le problème persiste.", - "error_atSign_already_paired": "{atsign} était déjà associé à cet appareil. Supprimez/réinitialisez d'abord cet atSign de l'appareil à ajouter.", - "atSign_mismatches_need_to_provide_QRCode": "incompatibilités atSign. Veuillez fournir le QRCode de {givenAtsign} à coupler.", - "atSign_mismatches_need_to_provide_backupKey": "incompatibilités atSign. Veuillez fournir le fichier de clé de sauvegarde de {givenAtsign} à coupler." -} diff --git a/packages/at_onboarding_flutter/lib/src/at_onboarding.dart b/packages/at_onboarding_flutter/lib/src/at_onboarding.dart new file mode 100644 index 000000000..fe6858fb7 --- /dev/null +++ b/packages/at_onboarding_flutter/lib/src/at_onboarding.dart @@ -0,0 +1,177 @@ +import 'dart:io'; + +import 'package:at_onboarding_flutter/generated/l10n.dart'; +import 'package:at_onboarding_flutter/src/at_onboarding_result.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_activate_screen.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_intro_screen.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_reset_screen.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_start_screen.dart'; +import 'package:at_onboarding_flutter/src/services/at_onboarding_config.dart'; +import 'package:at_onboarding_flutter/src/services/at_onboarding_theme.dart'; +import 'package:at_onboarding_flutter/src/services/onboarding_service.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_app_constants.dart'; +import 'package:flutter/material.dart'; + +class AtOnboarding { + /// Using this function to get onboard atsing. + /// + /// @param context The build context. + /// @param config The config for the onboard + /// @param isSwitchingAtsign True - alway show UI for add new atsign. False - check onboard if existing atsing. Default is false + /// @param atsign The atsign name when change the primary atsign. + /// + /// Return [AtOnboardingResult] + static Future onboard({ + required BuildContext context, + required AtOnboardingConfig config, + bool isSwitchingAtsign = false, + String? atsign, + }) async { + AtOnboardingConstants.setApiKey(config.appAPIKey ?? (AtOnboardingConstants.rootEnvironment.apikey ?? '')); + AtOnboardingConstants.rootDomain = config.domain ?? AtOnboardingConstants.rootEnvironment.domain; + + /// Initial Setup + await _initialSetup(context); + + /// user sharing is not supported on Android, iOS and Linux. + if (Platform.isAndroid || Platform.isIOS || Platform.isLinux) { + config.showPopupSharedStorage = false; + } + + if (config.theme == null) { + final defaultConfig = config.copyWith( + theme: AtOnboardingTheme(), + ); + config = defaultConfig; + } + + if (!isSwitchingAtsign || (atsign ?? '').trim().isNotEmpty) { + if ((atsign ?? '').trim().isNotEmpty) { + await changePrimaryAtsign(atsign: atsign!); + } + + //Check if existing an atsign => return onboard success + // ignore: use_build_context_synchronously + AtOnboardingResult? result; + if (context.mounted) { + result = await showDialog( + context: context, + barrierDismissible: false, + builder: (_) => AtOnboardingStartScreen( + config: config, + ), + ); + } + + if (result is AtOnboardingResult) { + return result; + } + + return AtOnboardingResult.cancelled(); + } + + if (context.mounted) { + final result = await Navigator.push( + context, + MaterialPageRoute( + builder: (BuildContext context) { + return AtOnboardingIntroScreen( + config: config, + ); + }, + ), + ); + + if (result is AtOnboardingResult) { + //Update primary atsign after onboard success + if (result.status == AtOnboardingResultStatus.success && result.atsign != null) { + await changePrimaryAtsign(atsign: result.atsign!); + } + return result; + } + } + + return AtOnboardingResult.cancelled(); + } + + static Future activateAccount({ + required BuildContext context, + required AtOnboardingConfig config, + }) async { + /// Initial Setup + await _initialSetup(context); + + if (context.mounted) { + final result = await Navigator.push( + context, + MaterialPageRoute( + builder: (BuildContext context) { + return AtOnboardingActivateScreen( + hideReferences: false, + config: config, + ); + }, + ), + ); + + if (result is AtOnboardingResult) { + return result; + } + } + + return AtOnboardingResult.cancelled(); + } + + static Future changePrimaryAtsign({required String atsign}) async { + return await OnboardingService.getInstance().changePrimaryAtsign(atsign: atsign); + } + + static Future reset({ + required BuildContext context, + required AtOnboardingConfig config, + }) async { + /// Initial Setup + await _initialSetup(context); + + if (context.mounted) { + final result = await Navigator.push(context, MaterialPageRoute(builder: (BuildContext context) { + return AtOnboardingResetScreen(config: config); + })); + + if (result is AtOnboardingResetResult) { + return result; + } + } + + return AtOnboardingResetResult.cancelled; + } + + Future enableUsingSharedStorage() async { + if (Platform.isAndroid || Platform.isIOS || Platform.isLinux) { + throw UnsupportedError('user sharing not supported'); + } + + final result = await OnboardingService.getInstance().enableUsingSharedStorage(); + return result; + } + + Future disableUsingSharedStorage() async { + if (Platform.isAndroid || Platform.isIOS || Platform.isLinux) { + throw UnsupportedError('user sharing not supported'); + } + + final result = await OnboardingService.getInstance().disableUsingSharedStorage(); + return result; + } + + static Future _initialSetup(BuildContext context) async { + /// Configure Localization + const AppLocalizationDelegate _delegate = AppLocalizationDelegate(); + final currentLocal = Localizations.localeOf(context); + if (_delegate.isSupported(currentLocal)) { + _delegate.load(currentLocal); + } else { + _delegate.load(const Locale.fromSubtags(languageCode: 'en')); + } + } +} diff --git a/packages/at_onboarding_flutter/lib/src/at_onboarding_result.dart b/packages/at_onboarding_flutter/lib/src/at_onboarding_result.dart new file mode 100644 index 000000000..f5f17d2b4 --- /dev/null +++ b/packages/at_onboarding_flutter/lib/src/at_onboarding_result.dart @@ -0,0 +1,73 @@ +/// The status of onboard's result +/// +/// Values include: success, error, cancel +/// +enum AtOnboardingResultStatus { + success, //Authenticate success + error, //Authenticate error + cancel, //User canceled +} + +enum AtOnboardingResetResult { + cancelled, + success, +} + +/// The result returned after onboard +class AtOnboardingResult { + /// Status of result + AtOnboardingResultStatus status; + + /// The message returned when onboard failed + String? message; + + /// The error code returned when onboard failed + String? errorCode; + + /// The atSign returned when onboard successfully + String? atsign; + + AtOnboardingResult._({ + required this.status, + this.message, + this.errorCode, + this.atsign, + }); + + /// Create instance with success status + /// + /// [atsign] The name of atSign + /// + factory AtOnboardingResult.success({ + required String atsign, + }) { + return AtOnboardingResult._( + status: AtOnboardingResultStatus.success, + atsign: atsign, + ); + } + + /// Create instance with error status + /// + /// [message] The message returned when onboard failed + /// + /// [errorCode] The error code returned when onboard failed + /// + factory AtOnboardingResult.error({ + String? message, + String? errorCode, + }) { + return AtOnboardingResult._( + status: AtOnboardingResultStatus.error, + message: message, + errorCode: errorCode, + ); + } + + /// Create instance with cancel status + factory AtOnboardingResult.cancelled() { + return AtOnboardingResult._( + status: AtOnboardingResultStatus.cancel, + ); + } +} diff --git a/packages/at_onboarding_flutter/lib/screen/at_onboarding_accounts_screen.dart b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_accounts_screen.dart similarity index 81% rename from packages/at_onboarding_flutter/lib/screen/at_onboarding_accounts_screen.dart rename to packages/at_onboarding_flutter/lib/src/screen/at_onboarding_accounts_screen.dart index 62a4d92b4..ff1591fa9 100644 --- a/packages/at_onboarding_flutter/lib/screen/at_onboarding_accounts_screen.dart +++ b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_accounts_screen.dart @@ -1,7 +1,8 @@ import 'package:at_onboarding_flutter/at_onboarding_flutter.dart'; -import 'package:at_onboarding_flutter/services/onboarding_service.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_dimens.dart'; -import 'package:at_onboarding_flutter/widgets/at_onboarding_button.dart'; +import 'package:at_onboarding_flutter/src/services/onboarding_service.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_dimens.dart'; +import 'package:at_onboarding_flutter/src/widgets/at_onboarding_button.dart'; + import 'package:flutter/material.dart'; /// This screen shows the list of atSign already available for the given email @@ -27,10 +28,12 @@ class AtOnboardingAccountsScreen extends StatefulWidget { }) : super(key: key); @override - State createState() => _AtOnboardingAccountsScreenState(); + State createState() => + _AtOnboardingAccountsScreenState(); } -class _AtOnboardingAccountsScreenState extends State { +class _AtOnboardingAccountsScreenState + extends State { List pairedAtsignsList = []; Object? lastSelectedIndex; late int greyStartIndex; @@ -70,7 +73,9 @@ class _AtOnboardingAccountsScreenState extends State ? Center( child: Column( children: [ - CircularProgressIndicator(valueColor: AlwaysStoppedAnimation(theme.primaryColor)), + CircularProgressIndicator( + valueColor: AlwaysStoppedAnimation( + theme.primaryColor)), Text( AtOnboardingLocalizations.current.loading_atSigns, style: const TextStyle( @@ -84,7 +89,8 @@ class _AtOnboardingAccountsScreenState extends State : Column( children: [ Text( - widget.message ?? AtOnboardingLocalizations.current.title_select_atSign, + widget.message ?? + AtOnboardingLocalizations.current.title_select_atSign, style: const TextStyle( fontWeight: FontWeight.bold, fontSize: AtOnboardingDimens.fontNormal, @@ -104,7 +110,9 @@ class _AtOnboardingAccountsScreenState extends State }, value: 'new', activeColor: theme.primaryColor, - title: Text('@${widget.newAtsign}', style: const TextStyle(fontWeight: FontWeight.bold)), + title: Text('@${widget.newAtsign}', + style: + const TextStyle(fontWeight: FontWeight.bold)), ) ], const Divider(thickness: 0.8), @@ -113,7 +121,8 @@ class _AtOnboardingAccountsScreenState extends State itemCount: widget.atsigns.length, itemBuilder: (BuildContext context, int index) { String currentItem = '@${widget.atsigns[index]}'; - bool isExist = pairedAtsignsList.contains(currentItem); + bool isExist = + pairedAtsignsList.contains(currentItem); return Padding( padding: const EdgeInsets.symmetric(vertical: 2.0), child: RadioListTile( @@ -126,7 +135,8 @@ class _AtOnboardingAccountsScreenState extends State lastSelectedIndex = value; }); _showAlert( - widget.atsigns[int.parse(lastSelectedIndex.toString())], + widget.atsigns[int.parse( + lastSelectedIndex.toString())], context, ); }, @@ -163,11 +173,15 @@ class _AtOnboardingAccountsScreenState extends State style: theme.textTheme.bodyLarge, children: [ TextSpan( - text: AtOnboardingLocalizations.current.title_pair_atSign_prev, + text: + AtOnboardingLocalizations.current.title_pair_atSign_prev, ), - TextSpan(text: ' $atsign ', style: const TextStyle(fontWeight: FontWeight.bold)), TextSpan( - text: AtOnboardingLocalizations.current.title_pair_atSign_next, + text: ' $atsign ', + style: const TextStyle(fontWeight: FontWeight.bold)), + TextSpan( + text: + AtOnboardingLocalizations.current.title_pair_atSign_next, ) ], ), diff --git a/packages/at_onboarding_flutter/lib/screen/at_onboarding_activate_screen.dart b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_activate_screen.dart similarity index 82% rename from packages/at_onboarding_flutter/lib/screen/at_onboarding_activate_screen.dart rename to packages/at_onboarding_flutter/lib/src/screen/at_onboarding_activate_screen.dart index eb7cad86b..ed4ddc307 100644 --- a/packages/at_onboarding_flutter/lib/screen/at_onboarding_activate_screen.dart +++ b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_activate_screen.dart @@ -2,19 +2,19 @@ import 'dart:convert'; import 'dart:io'; import 'package:at_client_mobile/at_client_mobile.dart'; -import 'package:at_onboarding_flutter/at_onboarding_result.dart'; -import 'package:at_onboarding_flutter/localizations/generated/l10n.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_backup_screen.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_otp_screen.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_reference_screen.dart'; -import 'package:at_onboarding_flutter/services/at_onboarding_config.dart'; -import 'package:at_onboarding_flutter/services/free_atsign_service.dart'; -import 'package:at_onboarding_flutter/services/onboarding_service.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_dimens.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_error_util.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_response_status.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_strings.dart'; -import 'package:at_onboarding_flutter/widgets/at_onboarding_dialog.dart'; +import 'package:at_onboarding_flutter/generated/l10n.dart'; +import 'package:at_onboarding_flutter/src/at_onboarding_result.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_backup_screen.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_otp_screen.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_reference_screen.dart'; +import 'package:at_onboarding_flutter/src/services/at_onboarding_config.dart'; +import 'package:at_onboarding_flutter/src/services/free_atsign_service.dart'; +import 'package:at_onboarding_flutter/src/services/onboarding_service.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_dimens.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_error_util.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_response_status.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_strings.dart'; +import 'package:at_onboarding_flutter/src/widgets/at_onboarding_dialog.dart'; import 'package:at_server_status/at_server_status.dart'; import 'package:at_sync_ui_flutter/at_sync_material.dart'; import 'package:flutter/material.dart'; @@ -32,19 +32,17 @@ class AtOnboardingActivateScreen extends StatefulWidget { final AtOnboardingConfig config; const AtOnboardingActivateScreen({ - Key? key, + super.key, required this.hideReferences, this.atSign, required this.config, - }) : super(key: key); + }); @override - State createState() => - _AtOnboardingActivateScreenState(); + State createState() => _AtOnboardingActivateScreenState(); } -class _AtOnboardingActivateScreenState - extends State { +class _AtOnboardingActivateScreenState extends State { final FreeAtsignService _freeAtsignService = FreeAtsignService(); final OnboardingService _onboardingService = OnboardingService.getInstance(); @@ -125,8 +123,7 @@ class _AtOnboardingActivateScreenState } // check if atSign already activated - AtSignStatus? atsignStatus = - await _onboardingService.checkAtsignStatus(atsign: atsign); + AtSignStatus? atsignStatus = await _onboardingService.checkAtsignStatus(atsign: atsign); if (atsignStatus == AtSignStatus.activated) { bool isPaired = await _onboardingService.isExistingAtsign(atsign); await showErrorDialog( @@ -139,14 +136,13 @@ class _AtOnboardingActivateScreenState dynamic data; - dynamic response = await _freeAtsignService - .loginWithAtsign(atsign ?? (widget.atSign ?? '')); + dynamic response = await _freeAtsignService.loginWithAtsign(atsign ?? (widget.atSign ?? '')); if (response.statusCode == 200) { data = response.body; data = jsonDecode(data); AtOnboardingOTPResult? result; - if(context.mounted) { + if (context.mounted) { result = await AtOnboardingOTPScreen.push( context: context, atSign: atsign ?? (widget.atSign ?? ''), @@ -208,19 +204,17 @@ class _AtOnboardingActivateScreenState bool isExist = await _onboardingService.isExistingAtsign(atsign); if (isExist) { - await _showAlertDialog( - AtOnboardingErrorToString().pairedAtsign(atsign)); + await _showAlertDialog(AtOnboardingErrorToString().pairedAtsign(atsign)); return; } //Delay for waiting for ServerStatus change to teapot when activating an atsign await Future.delayed(const Duration(seconds: 10)); - _onboardingService.setAtClientPreference = - widget.config.atClientPreference; + _onboardingService.setAtClientPreference = widget.config.atClientPreference; - authResponse = await _onboardingService.authenticate(atsign, - cramSecret: secret, status: OnboardingStatus.ACTIVATE); + authResponse = + await _onboardingService.authenticate(atsign, cramSecret: secret, status: OnboardingStatus.ACTIVATE); int round = 1; atSignStatus = await _onboardingService.checkAtSignServerStatus(atsign); @@ -290,8 +284,7 @@ class _AtOnboardingActivateScreenState } Future _showAlertDialog(dynamic errorMessage, {String? title}) async { - String? messageString = - AtOnboardingErrorToString().getErrorMessage(errorMessage); + String? messageString = AtOnboardingErrorToString().getErrorMessage(errorMessage); final theme = Theme.of(context).copyWith( primaryColor: widget.config.theme?.primaryColor, diff --git a/packages/at_onboarding_flutter/lib/screen/at_onboarding_backup_screen.dart b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_backup_screen.dart similarity index 91% rename from packages/at_onboarding_flutter/lib/screen/at_onboarding_backup_screen.dart rename to packages/at_onboarding_flutter/lib/src/screen/at_onboarding_backup_screen.dart index 3d17d0257..51c298faa 100644 --- a/packages/at_onboarding_flutter/lib/screen/at_onboarding_backup_screen.dart +++ b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_backup_screen.dart @@ -1,12 +1,12 @@ import 'dart:io'; import 'package:at_onboarding_flutter/at_onboarding_flutter.dart'; -import 'package:at_onboarding_flutter/services/at_onboarding_backup_service.dart'; -import 'package:at_onboarding_flutter/services/onboarding_service.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_app_constants.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_dimens.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_strings.dart'; -import 'package:at_onboarding_flutter/widgets/at_onboarding_button.dart'; +import 'package:at_onboarding_flutter/src/services/at_onboarding_backup_service.dart'; +import 'package:at_onboarding_flutter/src/services/onboarding_service.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_app_constants.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_dimens.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_strings.dart'; +import 'package:at_onboarding_flutter/src/widgets/at_onboarding_button.dart'; import 'package:flutter/material.dart'; /// This screen is for backing up an atKey during onboarding diff --git a/packages/at_onboarding_flutter/lib/screen/at_onboarding_generate_screen.dart b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_generate_screen.dart similarity index 94% rename from packages/at_onboarding_flutter/lib/screen/at_onboarding_generate_screen.dart rename to packages/at_onboarding_flutter/lib/src/screen/at_onboarding_generate_screen.dart index a3cf1a1f5..0e7d65f82 100644 --- a/packages/at_onboarding_flutter/lib/screen/at_onboarding_generate_screen.dart +++ b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_generate_screen.dart @@ -2,19 +2,19 @@ import 'dart:convert'; import 'dart:io'; import 'package:at_onboarding_flutter/at_onboarding_flutter.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_backup_screen.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_home_screen.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_pair_screen.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_reference_screen.dart'; -import 'package:at_onboarding_flutter/services/at_onboarding_tutorial_service.dart'; -import 'package:at_onboarding_flutter/services/free_atsign_service.dart'; -import 'package:at_onboarding_flutter/services/onboarding_service.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_dimens.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_error_util.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_response_status.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_strings.dart'; -import 'package:at_onboarding_flutter/widgets/at_onboarding_button.dart'; -import 'package:at_onboarding_flutter/widgets/at_onboarding_dialog.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_backup_screen.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_home_screen.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_pair_screen.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_reference_screen.dart'; +import 'package:at_onboarding_flutter/src/services/at_onboarding_tutorial_service.dart'; +import 'package:at_onboarding_flutter/src/services/free_atsign_service.dart'; +import 'package:at_onboarding_flutter/src/services/onboarding_service.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_dimens.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_error_util.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_response_status.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_strings.dart'; +import 'package:at_onboarding_flutter/src/widgets/at_onboarding_button.dart'; +import 'package:at_onboarding_flutter/src/widgets/at_onboarding_dialog.dart'; import 'package:at_sync_ui_flutter/at_sync_material.dart'; import 'package:at_utils/at_logger.dart'; import 'package:flutter/material.dart'; diff --git a/packages/at_onboarding_flutter/lib/screen/at_onboarding_home_screen.dart b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_home_screen.dart similarity index 65% rename from packages/at_onboarding_flutter/lib/screen/at_onboarding_home_screen.dart rename to packages/at_onboarding_flutter/lib/src/screen/at_onboarding_home_screen.dart index 593407dec..2404c650c 100644 --- a/packages/at_onboarding_flutter/lib/screen/at_onboarding_home_screen.dart +++ b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_home_screen.dart @@ -1,33 +1,28 @@ -import 'dart:convert'; import 'dart:io'; -import 'dart:typed_data'; -import 'package:archive/archive.dart'; import 'package:at_client_mobile/at_client_mobile.dart'; -import 'package:at_onboarding_flutter/at_onboarding_result.dart'; -import 'package:at_onboarding_flutter/localizations/generated/l10n.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_activate_screen.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_backup_screen.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_generate_screen.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_input_atsign_screen.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_reference_screen.dart'; -import 'package:at_onboarding_flutter/services/at_onboarding_config.dart'; -import 'package:at_onboarding_flutter/services/at_onboarding_tutorial_service.dart'; -import 'package:at_onboarding_flutter/services/onboarding_service.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_app_constants.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_dimens.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_error_util.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_response_status.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_strings.dart'; -import 'package:at_onboarding_flutter/widgets/at_onboarding_button.dart'; -import 'package:at_onboarding_flutter/widgets/at_onboarding_dialog.dart'; +import 'package:at_onboarding_flutter/generated/l10n.dart'; +import 'package:at_onboarding_flutter/src/at_onboarding_result.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_activate_screen.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_backup_screen.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_generate_screen.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_input_atsign_screen.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_reference_screen.dart'; +import 'package:at_onboarding_flutter/src/services/at_keys_file_upload_service.dart'; +import 'package:at_onboarding_flutter/src/services/at_onboarding_config.dart'; +import 'package:at_onboarding_flutter/src/services/at_onboarding_tutorial_service.dart'; +import 'package:at_onboarding_flutter/src/services/onboarding_service.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_dimens.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_error_util.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_response_status.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_strings.dart'; +import 'package:at_onboarding_flutter/src/widgets/at_onboarding_button.dart'; +import 'package:at_onboarding_flutter/src/widgets/at_onboarding_dialog.dart'; import 'package:at_server_status/at_server_status.dart'; import 'package:at_sync_ui_flutter/at_sync_material.dart'; import 'package:at_utils/at_logger.dart'; -import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; import 'package:image/image.dart' as img; -import 'package:path_provider/path_provider.dart' as path_provider; import 'package:permission_handler/permission_handler.dart'; import 'package:tutorial_coach_mark/tutorial_coach_mark.dart'; import 'package:url_launcher/url_launcher.dart'; @@ -55,13 +50,13 @@ class AtOnboardingHomeScreen extends StatefulWidget { final bool isFromIntroScreen; const AtOnboardingHomeScreen({ - Key? key, + super.key, required this.config, this.getAtSign = false, this.hideReferences = false, this.hideQrScan = false, this.isFromIntroScreen = false, - }) : super(key: key); + }); @override State createState() => _AtOnboardingHomeScreenState(); @@ -78,7 +73,6 @@ class _AtOnboardingHomeScreenState extends State { bool loading = false; bool permissionGrated = false; - bool _isContinue = true; String? _pairingAtsign; ServerStatus? atSignStatus; @@ -96,6 +90,8 @@ class _AtOnboardingHomeScreenState extends State { GlobalKey keyActivateAtSign = GlobalKey(); GlobalKey keyCreateAnAtSign = GlobalKey(); + late AtKeysFileUploadService filePicker; + Future askPermissions(Permission type) async { if (type == Permission.camera) { await Permission.camera.request(); @@ -165,9 +161,7 @@ class _AtOnboardingHomeScreenState extends State { key: keyUploadAtSign, height: 48, borderRadius: 24, - onPressed: (Platform.isMacOS || Platform.isLinux || Platform.isWindows) - ? _uploadKeyFileForDesktop - : _uploadKeyFile, + onPressed: _uploadKeyFile, isLoading: loading, child: Row( mainAxisAlignment: MainAxisAlignment.center, @@ -303,6 +297,7 @@ class _AtOnboardingHomeScreenState extends State { @override void initState() { _inprogressDialog = AtSyncDialog(context: context); + filePicker = AtKeysFileUploadService(config: widget.config); checkPermissions(); super.initState(); _init(); @@ -451,19 +446,6 @@ class _AtOnboardingHomeScreenState extends State { } } - Future _desktopKeyPicker() async { - try { - FilePickerResult? result = await FilePicker.platform.pickFiles( - type: FileType.custom, - allowedExtensions: ['atKeys', 'atkeys'], - ); - return result?.files.single.path; - } catch (e) { - _logger.severe('Error with desktop atKeys file picker: $e'); - return null; - } - } - void _endTutorial() async { var tutorialInfo = await AtOnboardingTutorialService.getTutorialInfo(); tutorialInfo ??= AtTutorialServiceInfo(); @@ -477,69 +459,7 @@ class _AtOnboardingHomeScreenState extends State { await _checkShowTutorial(); } - Future _processAESKey(String? atsign, String? aesKey, String contents) async { - dynamic authResponse; - assert(aesKey != null || aesKey != ''); - assert(atsign != null || atsign != ''); - assert(contents != ''); - _inprogressDialog.show( - message: AtOnboardingLocalizations.current.processing, - ); - await Future.delayed(const Duration(milliseconds: 400)); - try { - bool isExist = await _onboardingService.isExistingAtsign(atsign); - if (isExist) { - _inprogressDialog.close(); - await showErrorDialog(AtOnboardingErrorToString().pairedAtsign(atsign)); - return; - } - - _onboardingService.setAtClientPreference = widget.config.atClientPreference; - - authResponse = await _onboardingService.authenticate( - atsign, - jsonData: contents, - decryptKey: aesKey, - ); - _inprogressDialog.close(); - if (authResponse == AtOnboardingResponseStatus.authSuccess) { - //Don't show backup key for case user upload backup key - // await AtOnboardingBackupScreen.push(context: context); - if (!mounted) return; - Navigator.pop(context, AtOnboardingResult.success(atsign: atsign!)); - } else if (authResponse == AtOnboardingResponseStatus.serverNotReached) { - await _showAlertDialog( - AtOnboardingLocalizations.current.msg_atSign_unreachable, - ); - } else if (authResponse == AtOnboardingResponseStatus.authFailed) { - await _showAlertDialog( - AtOnboardingLocalizations.current.error_authenticated_failed, - ); - } else { - await showErrorDialog( - AtOnboardingLocalizations.current.msg_response_time_out, - ); - } - } catch (e) { - _inprogressDialog.close(); - if (e == AtOnboardingResponseStatus.serverNotReached && _isContinue) { - await _processAESKey(atsign, aesKey, contents); - } else if (e == AtOnboardingResponseStatus.authFailed) { - _logger.severe('Error in authenticateWithAESKey'); - await showErrorDialog( - AtOnboardingLocalizations.current.msg_auth_failed, - ); - } else if (e == AtOnboardingResponseStatus.timeOut) { - await showErrorDialog( - AtOnboardingLocalizations.current.msg_response_time_out, - ); - } else { - _logger.warning(e); - } - } - } - - Future _processSharedSecret(String atsign, String secret) async { + Future _processSharedSecret(String atsign, String secret, {bool retry = true}) async { dynamic authResponse; try { _inprogressDialog.show( @@ -615,8 +535,8 @@ class _AtOnboardingHomeScreenState extends State { e, title: AtOnboardingLocalizations.current.msg_auth_failed, ); - } else if (e == AtOnboardingResponseStatus.serverNotReached && _isContinue) { - await _processSharedSecret(atsign, secret); + } else if (e == AtOnboardingResponseStatus.serverNotReached && retry) { + await _processSharedSecret(atsign, secret, retry: false); } else if (e == AtOnboardingResponseStatus.timeOut) { await _showAlertDialog( e, @@ -710,174 +630,77 @@ class _AtOnboardingHomeScreenState extends State { )..show(context: context); } - Future _uploadKeyFile() async { - try { - if (!permissionGrated) { - await checkPermissions(); - } - _isContinue = true; - String? fileContents, aesKey, atsign; - FilePickerResult? result = await FilePicker.platform.pickFiles(type: FileType.any); - if ((result?.files ?? []).isEmpty) { - //User cancelled => do nothing - return; - } + void setLoading(bool loading) { + if (this.loading != loading) { setState(() { - loading = true; + this.loading = loading; }); - for (PlatformFile pickedFile in result?.files ?? []) { - String? path = pickedFile.path; - if (path == null) { - throw const FileSystemException( - 'FilePicker.pickFiles returned a null path', - ); - } - File selectedFile = File(path); - int length = selectedFile.lengthSync(); - if (length < 10) { - await showErrorDialog(_incorrectKeyFile); - return; - } - - if (pickedFile.extension == 'zip') { - Uint8List bytes = selectedFile.readAsBytesSync(); - Archive archive = ZipDecoder().decodeBytes(bytes); - for (ArchiveFile file in archive) { - if (file.name.contains('atKeys')) { - fileContents = String.fromCharCodes(file.content); - } else if (aesKey == null && atsign == null && file.name.contains('_private_key.png')) { - List bytes = file.content as List; - String path = (await path_provider.getTemporaryDirectory()).path; - File file1 = await File('${path}test').create(); - file1.writeAsBytesSync(bytes); - String result = decodeQrCode(file1.path); - List params = result.replaceAll('"', '').split(':'); - atsign = params[0]; - aesKey = params[1]; - await File('${path}test').delete(); - //read scan QRcode and extract atsign,aeskey - } - } - } else if (pickedFile.name.contains('atKeys')) { - fileContents = File(path.toString()).readAsStringSync(); - } else if (aesKey == null && atsign == null && pickedFile.name.contains('_private_key.png')) { - //read scan QRcode and extract atsign,aeskey - var result = decodeQrCode(path); - - List params = result.split(':'); - atsign = params[0]; - aesKey = params[1]; - } else { - Uint8List result1 = selectedFile.readAsBytesSync(); - fileContents = String.fromCharCodes(result1); - bool result = _validatePickedFileContents(fileContents); - _logger.finer('result after extracting data is......$result'); - if (!result) { - await showErrorDialog(_incorrectKeyFile); - setState(() { - loading = false; - }); - return; - } - } - } - if (aesKey == null && atsign == null && fileContents != null) { - List keyData = fileContents.split(',"@'); - List params = keyData[1].toString().substring(0, keyData[1].length - 2).split('":"'); - atsign = "@${params[0]}"; - Map keyMap = jsonDecode(fileContents); - aesKey = keyMap[AtOnboardingConstants.atSelfEncryptionKey]; - } - if (fileContents == null || (aesKey == null && atsign == null)) { - await showErrorDialog(_incorrectKeyFile); - setState(() { - loading = false; - }); - return; - } else if (OnboardingService.getInstance().formatAtSign(atsign) != _pairingAtsign && _pairingAtsign != null) { - await showErrorDialog(AtOnboardingErrorToString().atsignMismatch(_pairingAtsign)); - setState(() { - loading = false; - }); - return; - } - setState(() { - loading = false; - }); - await _processAESKey(atsign, aesKey, fileContents); - } catch (error) { - setState(() { - loading = false; - }); - _logger.severe('Uploading backup zip file throws $error'); - await showErrorDialog(_failedFileProcessing); } } - Future _uploadKeyFileForDesktop() async { - try { - _isContinue = true; - String? fileContents, aesKey, atsign; - setState(() { - loading = true; - }); - - String? path = await _desktopKeyPicker(); - if (path == null) { - setState(() { - loading = false; - }); - return; - } - - File selectedFile = File(path); - int length = selectedFile.lengthSync(); - if (length < 10) { - await showErrorDialog(_incorrectKeyFile); - return; - } - - fileContents = File(path).readAsStringSync(); - // ignore: unnecessary_null_comparison - if (aesKey == null && atsign == null && fileContents.isNotEmpty) { - List keyData = fileContents.split(',"@'); - List params = keyData[1].toString().substring(0, keyData[1].length - 2).split('":"'); - atsign = "@${params[0]}"; - Map keyMap = jsonDecode(fileContents); - aesKey = keyMap[AtOnboardingConstants.atSelfEncryptionKey]; - } - if (fileContents.isEmpty || (aesKey == null && atsign == null)) { - await showErrorDialog(_incorrectKeyFile); - setState(() { - loading = false; - }); - return; - } else if (OnboardingService.getInstance().formatAtSign(atsign) != _pairingAtsign && _pairingAtsign != null) { - await showErrorDialog(AtOnboardingErrorToString().atsignMismatch(_pairingAtsign)); - setState(() { - loading = false; - }); - return; + Future _uploadKeyFile() async { + await checkPermissions(); + Stream statusStream = filePicker.uploadKeyFile(_pairingAtsign); + statusStream.listen((status) async { + switch (status) { + case FilePickingInProgress(): + setLoading(true); + break; + case FilePickingDone(): + setLoading(false); + break; + case FilePickingCanceled(): + setLoading(false); + break; + case ErrorIncorrectKeyFile(): + await showErrorDialog(_incorrectKeyFile); + break; + case ErrorAtSignMismatch(): + await showErrorDialog(AtOnboardingErrorToString().atsignMismatch(_pairingAtsign)); + break; + case ErrorFailedFileProcessing(): + await showErrorDialog(_failedFileProcessing); + break; + case ProcessingAesKeyInProgress(): + _inprogressDialog.show( + message: AtOnboardingLocalizations.current.processing, + ); + break; + // Non constant status, so use _ for pattern match + case ErrorPairedAtsign _: + _inprogressDialog.close(); + await showErrorDialog(AtOnboardingErrorToString().pairedAtsign(status.atSign)); + break; + case ProcessingAesKeyDone(): + _inprogressDialog.close(); + break; + case ErrorAtServerUnreachable(): + await _showAlertDialog( + AtOnboardingLocalizations.current.msg_atSign_unreachable, + ); + break; + case ErrorAuthFailed(): + await _showAlertDialog( + AtOnboardingLocalizations.current.error_authenticated_failed, + ); + break; + case ErrorAuthTimeout(): + await showErrorDialog( + AtOnboardingLocalizations.current.msg_response_time_out, + ); + break; + // Non constant status, so use _ for pattern match + case FileUploadAuthSuccess _: + //Don't show backup key for case user upload backup key + // await AtOnboardingBackupScreen.push(context: context); + if (!mounted) return; + Navigator.pop(context, AtOnboardingResult.success(atsign: status.atSign!)); } + }, onDone: () { setState(() { - loading = false; - }); - await _processAESKey(atsign, aesKey, fileContents); - } catch (error) { - setState(() { - loading = false; + // Just in case + setLoading(false); }); - _logger.severe('Uploading backup zip file throws $error'); - await showErrorDialog(_failedFileProcessing); - } - } - - bool _validatePickedFileContents(String fileContents) { - bool result = fileContents.contains(BackupKeyConstants.PKAM_PRIVATE_KEY_FROM_KEY_FILE) && - fileContents.contains(BackupKeyConstants.PKAM_PUBLIC_KEY_FROM_KEY_FILE) && - fileContents.contains(BackupKeyConstants.ENCRYPTION_PRIVATE_KEY_FROM_FILE) && - fileContents.contains(BackupKeyConstants.ENCRYPTION_PUBLIC_KEY_FROM_FILE) && - fileContents.contains(BackupKeyConstants.SELF_ENCRYPTION_KEY_FROM_FILE); - return result; + }); } } diff --git a/packages/at_onboarding_flutter/lib/screen/at_onboarding_input_atsign_screen.dart b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_input_atsign_screen.dart similarity index 94% rename from packages/at_onboarding_flutter/lib/screen/at_onboarding_input_atsign_screen.dart rename to packages/at_onboarding_flutter/lib/src/screen/at_onboarding_input_atsign_screen.dart index e31c9409b..96daae5e6 100644 --- a/packages/at_onboarding_flutter/lib/screen/at_onboarding_input_atsign_screen.dart +++ b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_input_atsign_screen.dart @@ -1,10 +1,10 @@ import 'dart:io'; import 'package:at_onboarding_flutter/at_onboarding_flutter.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_reference_screen.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_dimens.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_strings.dart'; -import 'package:at_onboarding_flutter/widgets/at_onboarding_button.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_reference_screen.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_dimens.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_strings.dart'; +import 'package:at_onboarding_flutter/src/widgets/at_onboarding_button.dart'; import 'package:flutter/material.dart'; import 'package:url_launcher/url_launcher.dart'; diff --git a/packages/at_onboarding_flutter/lib/screen/at_onboarding_intro_screen.dart b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_intro_screen.dart similarity index 91% rename from packages/at_onboarding_flutter/lib/screen/at_onboarding_intro_screen.dart rename to packages/at_onboarding_flutter/lib/src/screen/at_onboarding_intro_screen.dart index b51ac35a1..e917f6bf1 100644 --- a/packages/at_onboarding_flutter/lib/screen/at_onboarding_intro_screen.dart +++ b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_intro_screen.dart @@ -1,12 +1,12 @@ import 'dart:io'; import 'package:at_onboarding_flutter/at_onboarding_flutter.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_generate_screen.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_home_screen.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_reference_screen.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_dimens.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_strings.dart'; -import 'package:at_onboarding_flutter/widgets/at_onboarding_button.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_generate_screen.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_home_screen.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_reference_screen.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_dimens.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_strings.dart'; +import 'package:at_onboarding_flutter/src/widgets/at_onboarding_button.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:url_launcher/url_launcher.dart'; diff --git a/packages/at_onboarding_flutter/lib/screen/at_onboarding_otp_screen.dart b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_otp_screen.dart similarity index 96% rename from packages/at_onboarding_flutter/lib/screen/at_onboarding_otp_screen.dart rename to packages/at_onboarding_flutter/lib/src/screen/at_onboarding_otp_screen.dart index 270664561..bc8efc508 100644 --- a/packages/at_onboarding_flutter/lib/screen/at_onboarding_otp_screen.dart +++ b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_otp_screen.dart @@ -2,14 +2,14 @@ import 'dart:convert'; import 'dart:io'; import 'package:at_onboarding_flutter/at_onboarding_flutter.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_accounts_screen.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_reference_screen.dart'; -import 'package:at_onboarding_flutter/services/free_atsign_service.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_dimens.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_input_formatter.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_strings.dart'; -import 'package:at_onboarding_flutter/widgets/at_onboarding_button.dart'; -import 'package:at_onboarding_flutter/widgets/at_onboarding_dialog.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_accounts_screen.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_reference_screen.dart'; +import 'package:at_onboarding_flutter/src/services/free_atsign_service.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_dimens.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_input_formatter.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_strings.dart'; +import 'package:at_onboarding_flutter/src/widgets/at_onboarding_button.dart'; +import 'package:at_onboarding_flutter/src/widgets/at_onboarding_dialog.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; diff --git a/packages/at_onboarding_flutter/lib/screen/at_onboarding_pair_screen.dart b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_pair_screen.dart similarity index 95% rename from packages/at_onboarding_flutter/lib/screen/at_onboarding_pair_screen.dart rename to packages/at_onboarding_flutter/lib/src/screen/at_onboarding_pair_screen.dart index 4e117f7a6..9daeb38a4 100644 --- a/packages/at_onboarding_flutter/lib/screen/at_onboarding_pair_screen.dart +++ b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_pair_screen.dart @@ -2,13 +2,13 @@ import 'dart:convert'; import 'dart:io'; import 'package:at_onboarding_flutter/at_onboarding_flutter.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_otp_screen.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_reference_screen.dart'; -import 'package:at_onboarding_flutter/services/free_atsign_service.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_dimens.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_strings.dart'; -import 'package:at_onboarding_flutter/widgets/at_onboarding_button.dart'; -import 'package:at_onboarding_flutter/widgets/at_onboarding_dialog.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_otp_screen.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_reference_screen.dart'; +import 'package:at_onboarding_flutter/src/services/free_atsign_service.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_dimens.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_strings.dart'; +import 'package:at_onboarding_flutter/src/widgets/at_onboarding_button.dart'; +import 'package:at_onboarding_flutter/src/widgets/at_onboarding_dialog.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -102,7 +102,8 @@ class _AtOnboardingPairScreenState extends State { mainAxisSize: MainAxisSize.min, children: [ Text( - AtOnboardingLocalizations.current.enter_your_email_address, + AtOnboardingLocalizations + .current.enter_your_email_address, style: const TextStyle( fontSize: AtOnboardingDimens.fontLarge, fontWeight: FontWeight.bold, diff --git a/packages/at_onboarding_flutter/lib/screen/at_onboarding_qrcode_screen.dart b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_qrcode_screen.dart similarity index 98% rename from packages/at_onboarding_flutter/lib/screen/at_onboarding_qrcode_screen.dart rename to packages/at_onboarding_flutter/lib/src/screen/at_onboarding_qrcode_screen.dart index a3361e720..0dce998ba 100644 --- a/packages/at_onboarding_flutter/lib/screen/at_onboarding_qrcode_screen.dart +++ b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_qrcode_screen.dart @@ -1,7 +1,7 @@ import 'dart:io'; import 'package:at_onboarding_flutter/at_onboarding_flutter.dart'; -import 'package:at_onboarding_flutter/widgets/at_onboarding_dialog.dart'; +import 'package:at_onboarding_flutter/src/widgets/at_onboarding_dialog.dart'; import 'package:at_sync_ui_flutter/at_sync_material.dart'; import 'package:flutter/material.dart'; import 'package:permission_handler/permission_handler.dart'; diff --git a/packages/at_onboarding_flutter/lib/screen/at_onboarding_reference_screen.dart b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_reference_screen.dart similarity index 100% rename from packages/at_onboarding_flutter/lib/screen/at_onboarding_reference_screen.dart rename to packages/at_onboarding_flutter/lib/src/screen/at_onboarding_reference_screen.dart diff --git a/packages/at_onboarding_flutter/lib/screen/at_onboarding_reset_screen.dart b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_reset_screen.dart similarity index 91% rename from packages/at_onboarding_flutter/lib/screen/at_onboarding_reset_screen.dart rename to packages/at_onboarding_flutter/lib/src/screen/at_onboarding_reset_screen.dart index 94a9dbd16..11b9cd26d 100644 --- a/packages/at_onboarding_flutter/lib/screen/at_onboarding_reset_screen.dart +++ b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_reset_screen.dart @@ -1,11 +1,11 @@ -import 'package:at_onboarding_flutter/at_onboarding_result.dart'; -import 'package:at_onboarding_flutter/localizations/generated/l10n.dart'; -import 'package:at_onboarding_flutter/services/at_onboarding_config.dart'; -import 'package:at_onboarding_flutter/services/sdk_service.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_dimens.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_error_util.dart'; -import 'package:at_onboarding_flutter/widgets/at_onboarding_button.dart'; -import 'package:at_onboarding_flutter/widgets/at_onboarding_dialog.dart'; +import 'package:at_onboarding_flutter/generated/l10n.dart'; +import 'package:at_onboarding_flutter/src/at_onboarding_result.dart'; +import 'package:at_onboarding_flutter/src/services/at_onboarding_config.dart'; +import 'package:at_onboarding_flutter/src/services/sdk_service.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_dimens.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_error_util.dart'; +import 'package:at_onboarding_flutter/src/widgets/at_onboarding_button.dart'; +import 'package:at_onboarding_flutter/src/widgets/at_onboarding_dialog.dart'; import 'package:flutter/material.dart'; /// The screen is used for resetting the paired atSign @@ -14,9 +14,9 @@ class AtOnboardingResetScreen extends StatefulWidget { final AtOnboardingConfig config; const AtOnboardingResetScreen({ - Key? key, + super.key, required this.config, - }) : super(key: key); + }); @override State createState() => _AtOnboardingResetScreenState(); diff --git a/packages/at_onboarding_flutter/lib/screen/at_onboarding_start_screen.dart b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_start_screen.dart similarity index 87% rename from packages/at_onboarding_flutter/lib/screen/at_onboarding_start_screen.dart rename to packages/at_onboarding_flutter/lib/src/screen/at_onboarding_start_screen.dart index 2a920f17d..9c6027e10 100644 --- a/packages/at_onboarding_flutter/lib/screen/at_onboarding_start_screen.dart +++ b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_start_screen.dart @@ -1,16 +1,16 @@ import 'dart:io'; import 'package:at_client_mobile/at_client_mobile.dart'; -import 'package:at_onboarding_flutter/at_onboarding.dart'; -import 'package:at_onboarding_flutter/at_onboarding_result.dart'; -import 'package:at_onboarding_flutter/localizations/generated/l10n.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_intro_screen.dart'; -import 'package:at_onboarding_flutter/services/at_onboarding_config.dart'; -import 'package:at_onboarding_flutter/services/onboarding_service.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_dimens.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_error_util.dart'; -import 'package:at_onboarding_flutter/widgets/at_onboarding_button.dart'; -import 'package:at_onboarding_flutter/widgets/at_onboarding_dialog.dart'; +import 'package:at_onboarding_flutter/generated/l10n.dart'; +import 'package:at_onboarding_flutter/src/at_onboarding.dart'; +import 'package:at_onboarding_flutter/src/at_onboarding_result.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_intro_screen.dart'; +import 'package:at_onboarding_flutter/src/services/at_onboarding_config.dart'; +import 'package:at_onboarding_flutter/src/services/onboarding_service.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_dimens.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_error_util.dart'; +import 'package:at_onboarding_flutter/src/widgets/at_onboarding_button.dart'; +import 'package:at_onboarding_flutter/src/widgets/at_onboarding_dialog.dart'; import 'package:at_sync_ui_flutter/at_sync_material.dart'; import 'package:flutter/material.dart'; @@ -20,9 +20,9 @@ class AtOnboardingStartScreen extends StatefulWidget { final AtOnboardingConfig config; const AtOnboardingStartScreen({ - Key? key, + super.key, required this.config, - }) : super(key: key); + }); @override State createState() => _AtOnboardingStartScreenState(); diff --git a/packages/at_onboarding_flutter/lib/screen/at_onboarding_webview_screen.dart b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_webview_screen.dart similarity index 91% rename from packages/at_onboarding_flutter/lib/screen/at_onboarding_webview_screen.dart rename to packages/at_onboarding_flutter/lib/src/screen/at_onboarding_webview_screen.dart index 25166bf6d..63d53a03e 100644 --- a/packages/at_onboarding_flutter/lib/screen/at_onboarding_webview_screen.dart +++ b/packages/at_onboarding_flutter/lib/src/screen/at_onboarding_webview_screen.dart @@ -1,5 +1,5 @@ import 'package:at_backupkey_flutter/utils/color_constants.dart'; -import 'package:at_onboarding_flutter/localizations/generated/l10n.dart'; +import 'package:at_onboarding_flutter/generated/l10n.dart'; import 'package:flutter/material.dart'; import 'package:webview_flutter/webview_flutter.dart'; @@ -12,14 +12,13 @@ class AtOnboardingWebviewScreen extends StatefulWidget { final String? title; const AtOnboardingWebviewScreen({ - Key? key, + super.key, this.url, this.title, - }) : super(key: key); + }); @override - State createState() => - _AtOnboardingWebviewScreenState(); + State createState() => _AtOnboardingWebviewScreenState(); } class _AtOnboardingWebviewScreenState extends State { diff --git a/packages/at_onboarding_flutter/lib/src/services/at_keys_file_upload_service.dart b/packages/at_onboarding_flutter/lib/src/services/at_keys_file_upload_service.dart new file mode 100644 index 000000000..96d0a1163 --- /dev/null +++ b/packages/at_onboarding_flutter/lib/src/services/at_keys_file_upload_service.dart @@ -0,0 +1,222 @@ +import 'dart:async'; +import 'dart:convert'; +import 'dart:io'; + +import 'package:at_onboarding_flutter/at_onboarding_flutter.dart'; +import 'package:at_onboarding_flutter/at_onboarding_services.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_app_constants.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_response_status.dart'; +import 'package:at_utils/at_logger.dart'; +import 'package:file_picker/file_picker.dart'; + +class AtKeysFileUploadService { + final AtSignLogger _logger = AtSignLogger('At Onboarding'); + final OnboardingService _onboardingService = OnboardingService.getInstance(); + final AtOnboardingConfig _config; + AtKeysFileUploadService({required AtOnboardingConfig config}) + : _config = config; + + bool get isMobile => Platform.isIOS || Platform.isAndroid; + Future pickFile() async { + try { + FilePickerResult? result = isMobile + ? await FilePicker.platform.pickFiles( + type: FileType.any, + ) + : await FilePicker.platform.pickFiles( + type: FileType.custom, + allowedExtensions: ['atKeys', 'atkeys'], + ); + + return result?.files.single.path; + } catch (e) { + _logger.severe('Error with desktop atKeys file picker: $e'); + return null; + } + } + + Stream uploadKeyFile(String? pairingAtsign) { + final StreamController streamController = + StreamController(); + _uploadKeyFileForDesktop(streamController, pairingAtsign); + return streamController.stream; + } + + Future _uploadKeyFileForDesktop( + StreamController streamController, + String? pairingAtsign) async { + try { + String? fileContents, aesKey, atsign; + streamController.add(const FilePickingInProgress()); + + String? path = await pickFile(); + if (path == null) { + streamController.add(const FilePickingCanceled()); + return; + } + + File selectedFile = File(path); + int length = selectedFile.lengthSync(); + if (length < 10) { + streamController.add(const ErrorIncorrectKeyFile()); + return; + } + + fileContents = File(path).readAsStringSync(); + if (!_validatePickedFileContents(fileContents)) { + streamController.add(const ErrorIncorrectKeyFile()); + return; + } + if (fileContents.isNotEmpty) { + List keyData = fileContents.split(',"@'); + List params = keyData[1] + .toString() + .substring(0, keyData[1].length - 2) + .split('":"'); + atsign = "@${params[0]}"; + Map keyMap = jsonDecode(fileContents); + aesKey = keyMap[AtOnboardingConstants.atSelfEncryptionKey]; + } + if (fileContents.isEmpty || (aesKey == null && atsign == null)) { + streamController.add(const ErrorIncorrectKeyFile()); + return; + } else if (OnboardingService.getInstance().formatAtSign(atsign) != + pairingAtsign && + pairingAtsign != null) { + streamController.add(const ErrorAtSignMismatch()); + return; + } + + streamController.add(const FilePickingDone()); + await _processAESKey(atsign, aesKey, fileContents, streamController); + } catch (error) { + _logger.severe('Uploading backup zip file throws $error'); + streamController.add(const ErrorFailedFileProcessing()); + } + } + + Future _processAESKey(String? atsign, String? aesKey, String contents, + StreamController? controller, + {bool retry = true}) async { + dynamic authResponse; + assert(aesKey != null || aesKey != ''); + assert(atsign != null || atsign != ''); + assert(contents != ''); + controller?.add(const ProcessingAesKeyInProgress()); + await Future.delayed(const Duration(milliseconds: 400)); + try { + bool isExist = await _onboardingService.isExistingAtsign(atsign); + if (isExist) { + controller?.add(const ProcessingAesKeyDone()); + controller?.add(ErrorPairedAtsign(atsign)); + return; + } + + _onboardingService.setAtClientPreference = _config.atClientPreference; + + authResponse = await _onboardingService.authenticate( + atsign, + jsonData: contents, + decryptKey: aesKey, + ); + controller?.add(const ProcessingAesKeyDone()); + if (authResponse == AtOnboardingResponseStatus.authSuccess) { + controller?.add(FileUploadAuthSuccess(atsign)); + } else if (authResponse == AtOnboardingResponseStatus.serverNotReached) { + controller?.add(const ErrorAtServerUnreachable()); + } else if (authResponse == AtOnboardingResponseStatus.authFailed) { + controller?.add(const ErrorAuthFailed()); + } else {} + } catch (e) { + controller?.add(const ProcessingAesKeyDone()); + if (e == AtOnboardingResponseStatus.serverNotReached && retry) { + await _processAESKey(atsign, aesKey, contents, controller, + retry: false); + } else if (e == AtOnboardingResponseStatus.authFailed) { + _logger.severe('Error in authenticateWithAESKey'); + controller?.add(const ErrorAuthFailed()); + } else if (e == AtOnboardingResponseStatus.timeOut) { + controller?.add(const ErrorAuthTimeout()); + } else { + _logger.warning(e); + } + } + } + + bool _validatePickedFileContents(String fileContents) { + bool result = fileContents + .contains(BackupKeyConstants.PKAM_PRIVATE_KEY_FROM_KEY_FILE) && + fileContents + .contains(BackupKeyConstants.PKAM_PUBLIC_KEY_FROM_KEY_FILE) && + fileContents + .contains(BackupKeyConstants.ENCRYPTION_PRIVATE_KEY_FROM_FILE) && + fileContents + .contains(BackupKeyConstants.ENCRYPTION_PUBLIC_KEY_FROM_FILE) && + fileContents.contains(BackupKeyConstants.SELF_ENCRYPTION_KEY_FROM_FILE); + return result; + } +} + +sealed class FileUploadStatus { + const FileUploadStatus(); +} + +// Errors + +class ErrorIncorrectKeyFile extends FileUploadStatus { + const ErrorIncorrectKeyFile(); +} + +class ErrorAtSignMismatch extends FileUploadStatus { + const ErrorAtSignMismatch(); +} + +class ErrorFailedFileProcessing extends FileUploadStatus { + const ErrorFailedFileProcessing(); +} + +class ErrorAtServerUnreachable extends FileUploadStatus { + const ErrorAtServerUnreachable(); +} + +class ErrorAuthFailed extends FileUploadStatus { + const ErrorAuthFailed(); +} + +class ErrorAuthTimeout extends FileUploadStatus { + const ErrorAuthTimeout(); +} + +class ErrorPairedAtsign extends FileUploadStatus { + final String? atSign; + ErrorPairedAtsign(this.atSign); +} + +// File Picking + +class FilePickingInProgress extends FileUploadStatus { + const FilePickingInProgress(); +} + +class FilePickingDone extends FileUploadStatus { + const FilePickingDone(); +} + +class FilePickingCanceled extends FileUploadStatus { + const FilePickingCanceled(); +} + +// Processing AesKey + +class ProcessingAesKeyInProgress extends FileUploadStatus { + const ProcessingAesKeyInProgress(); +} + +class ProcessingAesKeyDone extends FileUploadStatus { + const ProcessingAesKeyDone(); +} + +class FileUploadAuthSuccess extends FileUploadStatus { + final String? atSign; + FileUploadAuthSuccess(this.atSign); +} diff --git a/packages/at_onboarding_flutter/lib/services/at_onboarding_backup_service.dart b/packages/at_onboarding_flutter/lib/src/services/at_onboarding_backup_service.dart similarity index 100% rename from packages/at_onboarding_flutter/lib/services/at_onboarding_backup_service.dart rename to packages/at_onboarding_flutter/lib/src/services/at_onboarding_backup_service.dart diff --git a/packages/at_onboarding_flutter/lib/services/at_onboarding_config.dart b/packages/at_onboarding_flutter/lib/src/services/at_onboarding_config.dart similarity index 91% rename from packages/at_onboarding_flutter/lib/services/at_onboarding_config.dart rename to packages/at_onboarding_flutter/lib/src/services/at_onboarding_config.dart index d504ffea4..dec7a694b 100644 --- a/packages/at_onboarding_flutter/lib/services/at_onboarding_config.dart +++ b/packages/at_onboarding_flutter/lib/src/services/at_onboarding_config.dart @@ -1,6 +1,6 @@ -import 'package:at_onboarding_flutter/services/at_onboarding_theme.dart'; -import 'package:at_onboarding_flutter/services/at_onboarding_tutorial_service.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_app_constants.dart'; +import 'package:at_onboarding_flutter/src/services/at_onboarding_theme.dart'; +import 'package:at_onboarding_flutter/src/services/at_onboarding_tutorial_service.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_app_constants.dart'; import 'package:flutter/material.dart'; import 'package:at_client_mobile/at_client_mobile.dart'; import 'package:at_utils/at_logger.dart'; diff --git a/packages/at_onboarding_flutter/lib/services/at_onboarding_theme.dart b/packages/at_onboarding_flutter/lib/src/services/at_onboarding_theme.dart similarity index 100% rename from packages/at_onboarding_flutter/lib/services/at_onboarding_theme.dart rename to packages/at_onboarding_flutter/lib/src/services/at_onboarding_theme.dart diff --git a/packages/at_onboarding_flutter/lib/services/at_onboarding_tutorial_service.dart b/packages/at_onboarding_flutter/lib/src/services/at_onboarding_tutorial_service.dart similarity index 100% rename from packages/at_onboarding_flutter/lib/services/at_onboarding_tutorial_service.dart rename to packages/at_onboarding_flutter/lib/src/services/at_onboarding_tutorial_service.dart diff --git a/packages/at_onboarding_flutter/lib/services/backend_service.dart b/packages/at_onboarding_flutter/lib/src/services/backend_service.dart similarity index 100% rename from packages/at_onboarding_flutter/lib/services/backend_service.dart rename to packages/at_onboarding_flutter/lib/src/services/backend_service.dart diff --git a/packages/at_onboarding_flutter/lib/services/free_atsign_service.dart b/packages/at_onboarding_flutter/lib/src/services/free_atsign_service.dart similarity index 97% rename from packages/at_onboarding_flutter/lib/services/free_atsign_service.dart rename to packages/at_onboarding_flutter/lib/src/services/free_atsign_service.dart index 5213c549a..557503951 100644 --- a/packages/at_onboarding_flutter/lib/services/free_atsign_service.dart +++ b/packages/at_onboarding_flutter/lib/src/services/free_atsign_service.dart @@ -2,7 +2,7 @@ import 'dart:async'; import 'dart:convert'; import 'dart:io'; -import 'package:at_onboarding_flutter/utils/at_onboarding_app_constants.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_app_constants.dart'; import 'package:http/io_client.dart'; import 'package:http/http.dart'; diff --git a/packages/at_onboarding_flutter/lib/services/onboarding_service.dart b/packages/at_onboarding_flutter/lib/src/services/onboarding_service.dart similarity index 98% rename from packages/at_onboarding_flutter/lib/services/onboarding_service.dart rename to packages/at_onboarding_flutter/lib/src/services/onboarding_service.dart index 10e1e8296..e56096c49 100644 --- a/packages/at_onboarding_flutter/lib/services/onboarding_service.dart +++ b/packages/at_onboarding_flutter/lib/src/services/onboarding_service.dart @@ -3,8 +3,8 @@ import 'dart:convert'; import 'package:at_auth/at_auth.dart'; import 'package:at_client_mobile/at_client_mobile.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_app_constants.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_response_status.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_app_constants.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_response_status.dart'; import 'package:at_server_status/at_server_status.dart'; import 'package:at_utils/at_logger.dart'; import 'package:flutter/material.dart'; diff --git a/packages/at_onboarding_flutter/lib/services/sdk_service.dart b/packages/at_onboarding_flutter/lib/src/services/sdk_service.dart similarity index 100% rename from packages/at_onboarding_flutter/lib/services/sdk_service.dart rename to packages/at_onboarding_flutter/lib/src/services/sdk_service.dart diff --git a/packages/at_onboarding_flutter/lib/utils/at_onboarding_app_constants.dart b/packages/at_onboarding_flutter/lib/src/utils/at_onboarding_app_constants.dart similarity index 100% rename from packages/at_onboarding_flutter/lib/utils/at_onboarding_app_constants.dart rename to packages/at_onboarding_flutter/lib/src/utils/at_onboarding_app_constants.dart diff --git a/packages/at_onboarding_flutter/lib/utils/at_onboarding_dimens.dart b/packages/at_onboarding_flutter/lib/src/utils/at_onboarding_dimens.dart similarity index 100% rename from packages/at_onboarding_flutter/lib/utils/at_onboarding_dimens.dart rename to packages/at_onboarding_flutter/lib/src/utils/at_onboarding_dimens.dart diff --git a/packages/at_onboarding_flutter/lib/utils/at_onboarding_error_util.dart b/packages/at_onboarding_flutter/lib/src/utils/at_onboarding_error_util.dart similarity index 72% rename from packages/at_onboarding_flutter/lib/utils/at_onboarding_error_util.dart rename to packages/at_onboarding_flutter/lib/src/utils/at_onboarding_error_util.dart index be74a03c7..48e14af3c 100644 --- a/packages/at_onboarding_flutter/lib/utils/at_onboarding_error_util.dart +++ b/packages/at_onboarding_flutter/lib/src/utils/at_onboarding_error_util.dart @@ -1,8 +1,8 @@ import 'package:at_client_mobile/at_client_mobile.dart'; -import 'package:at_onboarding_flutter/localizations/generated/l10n.dart'; -import 'package:at_onboarding_flutter/services/onboarding_service.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_app_constants.dart'; -import 'package:at_onboarding_flutter/utils/at_onboarding_response_status.dart'; +import 'package:at_onboarding_flutter/generated/l10n.dart'; +import 'package:at_onboarding_flutter/src/services/onboarding_service.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_app_constants.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_response_status.dart'; import 'package:at_server_status/at_server_status.dart'; class AtOnboardingErrorToString { @@ -10,8 +10,7 @@ class AtOnboardingErrorToString { OnboardingService onboardingService = OnboardingService.getInstance(); switch (error.runtimeType) { case AtClientException: - return AtOnboardingLocalizations - .current.error_unable_to_perform_this_action; + return AtOnboardingLocalizations.current.error_unable_to_perform_this_action; case UnAuthenticatedException: return AtOnboardingLocalizations.current.error_unable_to_authenticate; case NoSuchMethodError: @@ -38,14 +37,12 @@ class AtOnboardingErrorToString { return AtOnboardingLocalizations.current.error_provide_backupKey; } else { return onboardingService.serverStatus == ServerStatus.activated - ? AtOnboardingLocalizations - .current.error_provide_relevant_backupKey + ? AtOnboardingLocalizations.current.error_provide_relevant_backupKey : AtOnboardingLocalizations.current.error_provide_valid_QRCode; } } else if (error == AtOnboardingResponseStatus.timeOut) { return AtOnboardingLocalizations.current - .error_server_response_timed_out( - AtOnboardingConstants.contactAddress); + .error_server_response_timed_out(AtOnboardingConstants.contactAddress); } else { return ''; } @@ -68,16 +65,13 @@ class AtOnboardingErrorToString { } } - String pairedAtsign(String? atsign) => - AtOnboardingLocalizations.current.error_atSign_already_paired('$atsign'); + String pairedAtsign(String? atsign) => AtOnboardingLocalizations.current.error_atSign_already_paired('$atsign'); String atsignMismatch(String? givenAtsign, {bool isQr = false}) { if (isQr) { - return AtOnboardingLocalizations.current - .atSign_mismatches_need_to_provide_QRCode('$givenAtsign'); + return AtOnboardingLocalizations.current.atSign_mismatches_need_to_provide_QRCode('$givenAtsign'); } else { - return AtOnboardingLocalizations.current - .atSign_mismatches_need_to_provide_backupKey('$givenAtsign'); + return AtOnboardingLocalizations.current.atSign_mismatches_need_to_provide_backupKey('$givenAtsign'); } } } diff --git a/packages/at_onboarding_flutter/lib/utils/at_onboarding_input_formatter.dart b/packages/at_onboarding_flutter/lib/src/utils/at_onboarding_input_formatter.dart similarity index 100% rename from packages/at_onboarding_flutter/lib/utils/at_onboarding_input_formatter.dart rename to packages/at_onboarding_flutter/lib/src/utils/at_onboarding_input_formatter.dart diff --git a/packages/at_onboarding_flutter/lib/utils/at_onboarding_response_status.dart b/packages/at_onboarding_flutter/lib/src/utils/at_onboarding_response_status.dart similarity index 100% rename from packages/at_onboarding_flutter/lib/utils/at_onboarding_response_status.dart rename to packages/at_onboarding_flutter/lib/src/utils/at_onboarding_response_status.dart diff --git a/packages/at_onboarding_flutter/lib/utils/at_onboarding_strings.dart b/packages/at_onboarding_flutter/lib/src/utils/at_onboarding_strings.dart similarity index 100% rename from packages/at_onboarding_flutter/lib/utils/at_onboarding_strings.dart rename to packages/at_onboarding_flutter/lib/src/utils/at_onboarding_strings.dart diff --git a/packages/at_onboarding_flutter/lib/widgets/at_onboarding_button.dart b/packages/at_onboarding_flutter/lib/src/widgets/at_onboarding_button.dart similarity index 100% rename from packages/at_onboarding_flutter/lib/widgets/at_onboarding_button.dart rename to packages/at_onboarding_flutter/lib/src/widgets/at_onboarding_button.dart diff --git a/packages/at_onboarding_flutter/lib/widgets/at_onboarding_dialog.dart b/packages/at_onboarding_flutter/lib/src/widgets/at_onboarding_dialog.dart similarity index 91% rename from packages/at_onboarding_flutter/lib/widgets/at_onboarding_dialog.dart rename to packages/at_onboarding_flutter/lib/src/widgets/at_onboarding_dialog.dart index a57a981c7..409046b54 100644 --- a/packages/at_onboarding_flutter/lib/widgets/at_onboarding_dialog.dart +++ b/packages/at_onboarding_flutter/lib/src/widgets/at_onboarding_dialog.dart @@ -1,7 +1,8 @@ -import 'package:at_onboarding_flutter/localizations/generated/l10n.dart'; -import 'package:at_onboarding_flutter/widgets/at_onboarding_button.dart'; +import 'package:at_onboarding_flutter/generated/l10n.dart'; import 'package:flutter/material.dart'; +import '../widgets/at_onboarding_button.dart'; + class AtOnboardingDialog extends StatefulWidget { static Future showError({ required BuildContext context, @@ -42,12 +43,12 @@ class AtOnboardingDialog extends StatefulWidget { final List actions; const AtOnboardingDialog({ - Key? key, + super.key, required this.title, required this.message, required this.actions, this.subMessage, - }) : super(key: key); + }); @override State createState() => _AtOnboardingDialogState(); diff --git a/packages/at_onboarding_flutter/pubspec.yaml b/packages/at_onboarding_flutter/pubspec.yaml index 064680e9c..0bed51b50 100644 --- a/packages/at_onboarding_flutter/pubspec.yaml +++ b/packages/at_onboarding_flutter/pubspec.yaml @@ -1,15 +1,15 @@ name: at_onboarding_flutter -description: A Flutter plugin project for onboarding any atSign in atPlatform - apps with ease. Provides a QRscanner option and an upload key file option to +description: A Flutter plugin project for onboarding any atSign in atPlatform apps with + ease. Provides a QRscanner option and an upload key file option to authenticate. -version: 6.1.9 +version: 6.1.10 homepage: https://docs.atsign.com/ repository: https://github.com/atsign-foundation/at_widgets/tree/trunk/packages/at_onboarding_flutter issue_tracker: https://github.com/atsign-foundation/at_widgets/issues documentation: https://docs.atsign.com/ environment: - sdk: ">=2.12.0 <4.0.0" + sdk: ">=3.0.0 <4.0.0" flutter: ">=1.20.0" dependencies: @@ -25,6 +25,8 @@ dependencies: at_auth: ^2.0.7 flutter: sdk: flutter + flutter_localizations: + sdk: flutter http: ^1.2.0 image: ^4.1.6 intl: ^0.19.0 @@ -48,6 +50,7 @@ dev_dependencies: # following page: https://dart.dev/tools/pub/pubspec # The following section is specific to Flutter. flutter: + generate: true # This section identifies this Flutter project as a plugin project. # The 'pluginClass' and Android 'package' identifiers should not ordinarily # be modified. They are used by the tooling to maintain consistency when @@ -99,5 +102,4 @@ flutter: flutter_intl: enabled: true class_name: AtOnboardingLocalizations - arb_dir: lib/localizations/l10n - output_dir: lib/localizations/generated + template-arb-file: intl_en.arb diff --git a/packages/at_onboarding_flutter/test/screens/at_onboarding_accounts_screen_test.dart b/packages/at_onboarding_flutter/test/screens/at_onboarding_accounts_screen_test.dart index b293d988f..3b65bc20b 100644 --- a/packages/at_onboarding_flutter/test/screens/at_onboarding_accounts_screen_test.dart +++ b/packages/at_onboarding_flutter/test/screens/at_onboarding_accounts_screen_test.dart @@ -1,6 +1,6 @@ import 'package:at_onboarding_flutter/at_onboarding_flutter.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_accounts_screen.dart'; -import 'package:at_onboarding_flutter/services/onboarding_service.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_accounts_screen.dart'; +import 'package:at_onboarding_flutter/src/services/onboarding_service.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; diff --git a/packages/at_onboarding_flutter/test/screens/at_onboarding_activate_screen_test.dart b/packages/at_onboarding_flutter/test/screens/at_onboarding_activate_screen_test.dart index 05b5ab963..705711920 100644 --- a/packages/at_onboarding_flutter/test/screens/at_onboarding_activate_screen_test.dart +++ b/packages/at_onboarding_flutter/test/screens/at_onboarding_activate_screen_test.dart @@ -1,6 +1,6 @@ import 'package:at_onboarding_flutter/at_onboarding_flutter.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_activate_screen.dart'; -import 'package:at_onboarding_flutter/services/onboarding_service.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_activate_screen.dart'; +import 'package:at_onboarding_flutter/src/services/onboarding_service.dart'; import 'package:at_server_status/at_server_status.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/packages/at_onboarding_flutter/test/screens/at_onboarding_backup_screen_test.dart b/packages/at_onboarding_flutter/test/screens/at_onboarding_backup_screen_test.dart index 6a5f1200a..f455d096d 100644 --- a/packages/at_onboarding_flutter/test/screens/at_onboarding_backup_screen_test.dart +++ b/packages/at_onboarding_flutter/test/screens/at_onboarding_backup_screen_test.dart @@ -1,6 +1,6 @@ import 'package:at_onboarding_flutter/at_onboarding_flutter.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_backup_screen.dart'; -import 'package:at_onboarding_flutter/services/onboarding_service.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_backup_screen.dart'; +import 'package:at_onboarding_flutter/src/services/onboarding_service.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; diff --git a/packages/at_onboarding_flutter/test/screens/at_onboarding_generate_screen_test.dart b/packages/at_onboarding_flutter/test/screens/at_onboarding_generate_screen_test.dart index 2abeec287..5105c9d57 100644 --- a/packages/at_onboarding_flutter/test/screens/at_onboarding_generate_screen_test.dart +++ b/packages/at_onboarding_flutter/test/screens/at_onboarding_generate_screen_test.dart @@ -1,5 +1,5 @@ -import 'package:at_onboarding_flutter/screen/at_onboarding_generate_screen.dart'; -import 'package:at_onboarding_flutter/services/free_atsign_service.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_generate_screen.dart'; +import 'package:at_onboarding_flutter/src/services/free_atsign_service.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:http/http.dart'; diff --git a/packages/at_onboarding_flutter/test/screens/at_onboarding_input_atsign_screen_test.dart b/packages/at_onboarding_flutter/test/screens/at_onboarding_input_atsign_screen_test.dart index 2a02fa947..d939dc534 100644 --- a/packages/at_onboarding_flutter/test/screens/at_onboarding_input_atsign_screen_test.dart +++ b/packages/at_onboarding_flutter/test/screens/at_onboarding_input_atsign_screen_test.dart @@ -1,9 +1,9 @@ import 'dart:io'; import 'package:at_onboarding_flutter/at_onboarding_flutter.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_input_atsign_screen.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_reference_screen.dart'; -import 'package:at_onboarding_flutter/widgets/at_onboarding_button.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_input_atsign_screen.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_reference_screen.dart'; +import 'package:at_onboarding_flutter/src/widgets/at_onboarding_button.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/packages/at_onboarding_flutter/test/screens/at_onboarding_otp_screen_test.dart b/packages/at_onboarding_flutter/test/screens/at_onboarding_otp_screen_test.dart index 14f70f5ca..72b2ae545 100644 --- a/packages/at_onboarding_flutter/test/screens/at_onboarding_otp_screen_test.dart +++ b/packages/at_onboarding_flutter/test/screens/at_onboarding_otp_screen_test.dart @@ -1,5 +1,5 @@ import 'package:at_onboarding_flutter/at_onboarding_flutter.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_otp_screen.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_otp_screen.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/packages/at_onboarding_flutter/test/screens/at_onboarding_pair_screen_test.dart b/packages/at_onboarding_flutter/test/screens/at_onboarding_pair_screen_test.dart index c6e8ac8dd..ec38bf468 100644 --- a/packages/at_onboarding_flutter/test/screens/at_onboarding_pair_screen_test.dart +++ b/packages/at_onboarding_flutter/test/screens/at_onboarding_pair_screen_test.dart @@ -1,8 +1,8 @@ import 'dart:io'; import 'package:at_onboarding_flutter/at_onboarding_flutter.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_pair_screen.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_reference_screen.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_pair_screen.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_reference_screen.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/packages/at_onboarding_flutter/test/screens/at_onboarding_qrcode_screen_test.dart b/packages/at_onboarding_flutter/test/screens/at_onboarding_qrcode_screen_test.dart index 9cca0fd88..1eaa10cb7 100644 --- a/packages/at_onboarding_flutter/test/screens/at_onboarding_qrcode_screen_test.dart +++ b/packages/at_onboarding_flutter/test/screens/at_onboarding_qrcode_screen_test.dart @@ -1,5 +1,5 @@ import 'package:at_onboarding_flutter/at_onboarding_flutter.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_qrcode_screen.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_qrcode_screen.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/packages/at_onboarding_flutter/test/screens/at_onboarding_reference_screen_test.dart b/packages/at_onboarding_flutter/test/screens/at_onboarding_reference_screen_test.dart index 84f37552c..f9c88755d 100644 --- a/packages/at_onboarding_flutter/test/screens/at_onboarding_reference_screen_test.dart +++ b/packages/at_onboarding_flutter/test/screens/at_onboarding_reference_screen_test.dart @@ -1,5 +1,5 @@ import 'package:at_onboarding_flutter/at_onboarding_flutter.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_reference_screen.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_reference_screen.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/packages/at_onboarding_flutter/test/screens/at_onboarding_reset_screen_test.dart b/packages/at_onboarding_flutter/test/screens/at_onboarding_reset_screen_test.dart index 54170b225..e586ea675 100644 --- a/packages/at_onboarding_flutter/test/screens/at_onboarding_reset_screen_test.dart +++ b/packages/at_onboarding_flutter/test/screens/at_onboarding_reset_screen_test.dart @@ -1,5 +1,5 @@ import 'package:at_onboarding_flutter/at_onboarding_flutter.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_reset_screen.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_reset_screen.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/packages/at_onboarding_flutter/test/screens/at_onboarding_start_screen_test.dart b/packages/at_onboarding_flutter/test/screens/at_onboarding_start_screen_test.dart index 097f9c380..540371ca2 100644 --- a/packages/at_onboarding_flutter/test/screens/at_onboarding_start_screen_test.dart +++ b/packages/at_onboarding_flutter/test/screens/at_onboarding_start_screen_test.dart @@ -1,7 +1,7 @@ import 'package:at_auth/at_auth.dart'; import 'package:at_onboarding_flutter/at_onboarding_flutter.dart'; -import 'package:at_onboarding_flutter/screen/at_onboarding_start_screen.dart'; -import 'package:at_onboarding_flutter/services/onboarding_service.dart'; +import 'package:at_onboarding_flutter/src/screen/at_onboarding_start_screen.dart'; +import 'package:at_onboarding_flutter/src/services/onboarding_service.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; @@ -15,7 +15,8 @@ class MockOnboardingService extends Mock implements OnboardingService { } @override - Future onboard({String? cramSecret, AtOnboardingRequest? atOnboardingRequest}) { + Future onboard( + {String? cramSecret, AtOnboardingRequest? atOnboardingRequest}) { throw OnboardingStatus.ACTIVATE; } } diff --git a/packages/at_onboarding_flutter/test/services/onboarding_service_test.dart b/packages/at_onboarding_flutter/test/services/onboarding_service_test.dart index ff34dd0a8..5185e1d07 100644 --- a/packages/at_onboarding_flutter/test/services/onboarding_service_test.dart +++ b/packages/at_onboarding_flutter/test/services/onboarding_service_test.dart @@ -1,4 +1,4 @@ -import 'package:at_onboarding_flutter/services/onboarding_service.dart'; +import 'package:at_onboarding_flutter/src/services/onboarding_service.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; diff --git a/packages/at_onboarding_flutter/test/services/sdk_service_test.dart b/packages/at_onboarding_flutter/test/services/sdk_service_test.dart index 8666ea592..1f838ee77 100644 --- a/packages/at_onboarding_flutter/test/services/sdk_service_test.dart +++ b/packages/at_onboarding_flutter/test/services/sdk_service_test.dart @@ -1,4 +1,4 @@ -import 'package:at_onboarding_flutter/services/sdk_service.dart'; +import 'package:at_onboarding_flutter/src/services/sdk_service.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; diff --git a/packages/at_onboarding_flutter/test/utils/at_onboarding_error_util_test.dart b/packages/at_onboarding_flutter/test/utils/at_onboarding_error_util_test.dart index 9e59c2235..45d2a871b 100644 --- a/packages/at_onboarding_flutter/test/utils/at_onboarding_error_util_test.dart +++ b/packages/at_onboarding_flutter/test/utils/at_onboarding_error_util_test.dart @@ -1,4 +1,4 @@ -import 'package:at_onboarding_flutter/utils/at_onboarding_error_util.dart'; +import 'package:at_onboarding_flutter/src/utils/at_onboarding_error_util.dart'; import 'package:flutter_test/flutter_test.dart'; main() { diff --git a/packages/at_onboarding_flutter/test/widgets/at_onboarding_button_test.dart b/packages/at_onboarding_flutter/test/widgets/at_onboarding_button_test.dart index 8e5127b31..5ba9399e0 100644 --- a/packages/at_onboarding_flutter/test/widgets/at_onboarding_button_test.dart +++ b/packages/at_onboarding_flutter/test/widgets/at_onboarding_button_test.dart @@ -1,4 +1,4 @@ -import 'package:at_onboarding_flutter/widgets/at_onboarding_button.dart'; +import 'package:at_onboarding_flutter/src/widgets/at_onboarding_button.dart'; import 'package:at_sync_ui_flutter/at_sync_material.dart'; import '../test_material_app.dart'; diff --git a/packages/at_onboarding_flutter/test/widgets/at_onboarding_dialog_test.dart b/packages/at_onboarding_flutter/test/widgets/at_onboarding_dialog_test.dart index b6039c927..f116f5fb2 100644 --- a/packages/at_onboarding_flutter/test/widgets/at_onboarding_dialog_test.dart +++ b/packages/at_onboarding_flutter/test/widgets/at_onboarding_dialog_test.dart @@ -1,6 +1,6 @@ import 'package:at_onboarding_flutter/at_onboarding_flutter.dart'; -import 'package:at_onboarding_flutter/widgets/at_onboarding_button.dart'; -import 'package:at_onboarding_flutter/widgets/at_onboarding_dialog.dart'; +import 'package:at_onboarding_flutter/src/widgets/at_onboarding_button.dart'; +import 'package:at_onboarding_flutter/src/widgets/at_onboarding_dialog.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart';