diff --git a/cw_bitcoin/lib/electrum_transaction_history.dart b/cw_bitcoin/lib/electrum_transaction_history.dart index 209c35140..8720dd82c 100644 --- a/cw_bitcoin/lib/electrum_transaction_history.dart +++ b/cw_bitcoin/lib/electrum_transaction_history.dart @@ -86,4 +86,5 @@ abstract class ElectrumTransactionHistoryBase void _update(ElectrumTransactionInfo transaction) => transactions[transaction.id] = transaction; + } diff --git a/cw_core/lib/transaction_history.dart b/cw_core/lib/transaction_history.dart index 508f3aeca..a88d6df95 100644 --- a/cw_core/lib/transaction_history.dart +++ b/cw_core/lib/transaction_history.dart @@ -14,6 +14,8 @@ abstract class TransactionHistoryBase { void addMany(Map transactions); + void clear() => transactions.clear(); + // bool _isUpdating; // @action diff --git a/cw_monero/lib/monero_transaction_history.dart b/cw_monero/lib/monero_transaction_history.dart index 229357c1b..e23f70530 100644 --- a/cw_monero/lib/monero_transaction_history.dart +++ b/cw_monero/lib/monero_transaction_history.dart @@ -24,4 +24,5 @@ abstract class MoneroTransactionHistoryBase @override void addMany(Map transactions) => this.transactions.addAll(transactions); + } diff --git a/lib/src/screens/base_page.dart b/lib/src/screens/base_page.dart index a06e0ae5a..2e1d50f9a 100644 --- a/lib/src/screens/base_page.dart +++ b/lib/src/screens/base_page.dart @@ -5,6 +5,7 @@ import 'package:cake_wallet/palette.dart'; import 'package:cake_wallet/di.dart'; import 'package:cake_wallet/store/settings_store.dart'; import 'package:cake_wallet/src/widgets/nav_bar.dart'; +import 'package:cake_wallet/generated/i18n.dart'; enum AppBarStyle { regular, withShadow, transparent } @@ -58,7 +59,7 @@ abstract class BasePage extends StatelessWidget { child: ButtonTheme( minWidth: double.minPositive, child: Semantics( - label: 'Back', + label: S.of(context).seed_alert_back, child: TextButton( style: ButtonStyle( overlayColor: MaterialStateColor.resolveWith( diff --git a/lib/src/screens/contact/contact_list_page.dart b/lib/src/screens/contact/contact_list_page.dart index c276b9d80..ec8620ac6 100644 --- a/lib/src/screens/contact/contact_list_page.dart +++ b/lib/src/screens/contact/contact_list_page.dart @@ -24,35 +24,40 @@ class ContactListPage extends BasePage { @override Widget? trailing(BuildContext context) { - return Container( - width: 32.0, - height: 32.0, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: Theme.of(context) + return MergeSemantics( + child: Container( + width: 32.0, + height: 32.0, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: Theme.of(context) .accentTextTheme! .bodySmall! .color!), - child: Stack( - alignment: Alignment.center, - children: [ - Icon(Icons.add, - color: Theme.of(context).primaryTextTheme!.titleLarge!.color!, - size: 22.0), - ButtonTheme( - minWidth: 32.0, - height: 32.0, - child: TextButton( - // FIX-ME: Style - //shape: CircleBorder(), - onPressed: () async { - await Navigator.of(context) - .pushNamed(Routes.addressBookAddContact); - }, - child: Offstage()), - ) - ], - )); + child: Stack( + alignment: Alignment.center, + children: [ + Icon(Icons.add, + color: Theme.of(context).primaryTextTheme!.titleLarge!.color!, + size: 22.0), + ButtonTheme( + minWidth: 32.0, + height: 32.0, + child: Semantics( + label: S.of(context).add, + child: TextButton( + // FIX-ME: Style + //shape: CircleBorder(), + onPressed: () async { + await Navigator.of(context) + .pushNamed(Routes.addressBookAddContact); + }, + child: Offstage()), + ), + ) + ], + )), + ); } @override diff --git a/lib/src/screens/dashboard/dashboard_page.dart b/lib/src/screens/dashboard/dashboard_page.dart index 94717f93f..71dfda356 100644 --- a/lib/src/screens/dashboard/dashboard_page.dart +++ b/lib/src/screens/dashboard/dashboard_page.dart @@ -111,7 +111,8 @@ class _DashboardPageView extends BasePage { //splashColor: Colors.transparent, //padding: EdgeInsets.all(0), onPressed: () => onOpenEndDrawer(), - child: Semantics(label: 'Menu', child: menuButton))); + child: Semantics( + label: S.of(context).wallet_menu, child: menuButton))); } final DashboardViewModel dashboardViewModel; @@ -248,7 +249,7 @@ class _DashboardPageView extends BasePage { } if (dashboardViewModel.shouldShowMarketPlaceInDashboard) { pages.add(Semantics( - label: 'Marketplace Page', + label: S.of(context).market_place, child: MarketPlacePage( dashboardViewModel: dashboardViewModel, marketPlaceViewModel: getIt.get(), @@ -256,9 +257,9 @@ class _DashboardPageView extends BasePage { ), ); } - pages.add(Semantics(label: 'Balance Page', child: balancePage)); + pages.add(Semantics(label: S.of(context).balance_page, child: balancePage)); pages.add(Semantics( - label: 'Transactions Page', + label: S.of(context).settings_transactions, child: TransactionsPage(dashboardViewModel: dashboardViewModel))); _isEffectsInstalled = true; diff --git a/lib/src/screens/dashboard/desktop_widgets/desktop_dashboard_actions.dart b/lib/src/screens/dashboard/desktop_widgets/desktop_dashboard_actions.dart index e8fa54b49..ad2291ba5 100644 --- a/lib/src/screens/dashboard/desktop_widgets/desktop_dashboard_actions.dart +++ b/lib/src/screens/dashboard/desktop_widgets/desktop_dashboard_actions.dart @@ -14,72 +14,75 @@ class DesktopDashboardActions extends StatelessWidget { @override Widget build(BuildContext context) { - return Observer( - builder: (_) { - return Column( - children: [ - const SizedBox(height: 16), - DesktopActionButton( - title: MainActions.exchangeAction.name(context), - image: MainActions.exchangeAction.image, - canShow: MainActions.exchangeAction.canShow?.call(dashboardViewModel), - isEnabled: MainActions.exchangeAction.isEnabled?.call(dashboardViewModel), - onTap: () async => await MainActions.exchangeAction.onTap(context, dashboardViewModel), - ), - Row( - children: [ - Expanded( - child: DesktopActionButton( - title: MainActions.receiveAction.name(context), - image: MainActions.receiveAction.image, - canShow: MainActions.receiveAction.canShow?.call(dashboardViewModel), - isEnabled: MainActions.receiveAction.isEnabled?.call(dashboardViewModel), - onTap: () async => - await MainActions.receiveAction.onTap(context, dashboardViewModel), - ), - ), - Expanded( - child: DesktopActionButton( - title: MainActions.sendAction.name(context), - image: MainActions.sendAction.image, - canShow: MainActions.sendAction.canShow?.call(dashboardViewModel), - isEnabled: MainActions.sendAction.isEnabled?.call(dashboardViewModel), - onTap: () async => await MainActions.sendAction.onTap(context, dashboardViewModel), - ), - ), - ], - ), - Row( - children: [ - Expanded( - child: DesktopActionButton( - title: MainActions.buyAction.name(context), - image: MainActions.buyAction.image, - canShow: MainActions.buyAction.canShow?.call(dashboardViewModel), - isEnabled: MainActions.buyAction.isEnabled?.call(dashboardViewModel), - onTap: () async => await MainActions.buyAction.onTap(context, dashboardViewModel), - ), - ), - Expanded( - child: DesktopActionButton( - title: MainActions.sellAction.name(context), - image: MainActions.sellAction.image, - canShow: MainActions.sellAction.canShow?.call(dashboardViewModel), - isEnabled: MainActions.sellAction.isEnabled?.call(dashboardViewModel), - onTap: () async => await MainActions.sellAction.onTap(context, dashboardViewModel), - ), - ), - ], - ), - Expanded( - child: MarketPlacePage( - dashboardViewModel: dashboardViewModel, - marketPlaceViewModel: getIt.get(), + return Container( + color: Theme.of(context).colorScheme.background, + child: Observer( + builder: (_) { + return Column( + children: [ + const SizedBox(height: 16), + DesktopActionButton( + title: MainActions.exchangeAction.name(context), + image: MainActions.exchangeAction.image, + canShow: MainActions.exchangeAction.canShow?.call(dashboardViewModel), + isEnabled: MainActions.exchangeAction.isEnabled?.call(dashboardViewModel), + onTap: () async => await MainActions.exchangeAction.onTap(context, dashboardViewModel), ), - ), - ], - ); - } + Row( + children: [ + Expanded( + child: DesktopActionButton( + title: MainActions.receiveAction.name(context), + image: MainActions.receiveAction.image, + canShow: MainActions.receiveAction.canShow?.call(dashboardViewModel), + isEnabled: MainActions.receiveAction.isEnabled?.call(dashboardViewModel), + onTap: () async => + await MainActions.receiveAction.onTap(context, dashboardViewModel), + ), + ), + Expanded( + child: DesktopActionButton( + title: MainActions.sendAction.name(context), + image: MainActions.sendAction.image, + canShow: MainActions.sendAction.canShow?.call(dashboardViewModel), + isEnabled: MainActions.sendAction.isEnabled?.call(dashboardViewModel), + onTap: () async => await MainActions.sendAction.onTap(context, dashboardViewModel), + ), + ), + ], + ), + Row( + children: [ + Expanded( + child: DesktopActionButton( + title: MainActions.buyAction.name(context), + image: MainActions.buyAction.image, + canShow: MainActions.buyAction.canShow?.call(dashboardViewModel), + isEnabled: MainActions.buyAction.isEnabled?.call(dashboardViewModel), + onTap: () async => await MainActions.buyAction.onTap(context, dashboardViewModel), + ), + ), + Expanded( + child: DesktopActionButton( + title: MainActions.sellAction.name(context), + image: MainActions.sellAction.image, + canShow: MainActions.sellAction.canShow?.call(dashboardViewModel), + isEnabled: MainActions.sellAction.isEnabled?.call(dashboardViewModel), + onTap: () async => await MainActions.sellAction.onTap(context, dashboardViewModel), + ), + ), + ], + ), + Expanded( + child: MarketPlacePage( + dashboardViewModel: dashboardViewModel, + marketPlaceViewModel: getIt.get(), + ), + ), + ], + ); + } + ), ); } } diff --git a/lib/src/screens/dashboard/desktop_widgets/desktop_sidebar_wrapper.dart b/lib/src/screens/dashboard/desktop_widgets/desktop_sidebar_wrapper.dart index 31348aed4..c08b80785 100644 --- a/lib/src/screens/dashboard/desktop_widgets/desktop_sidebar_wrapper.dart +++ b/lib/src/screens/dashboard/desktop_widgets/desktop_sidebar_wrapper.dart @@ -77,27 +77,21 @@ class DesktopSidebarWrapper extends BasePage { SideMenuItem( imagePath: 'assets/images/wallet_outline.png', isSelected: desktopSidebarViewModel.currentPage == SidebarItem.dashboard, - onTap: () => desktopSidebarViewModel.onPageChange(SidebarItem.dashboard), + onTap: () { + desktopSidebarViewModel.onPageChange(SidebarItem.dashboard); + desktopNavigatorKey.currentState + ?.pushNamedAndRemoveUntil(Routes.desktop_actions, (route) => false); + }, ), SideMenuItem( onTap: () { - String? currentPath; - - desktopNavigatorKey.currentState?.popUntil((route) { - currentPath = route.settings.name; - return true; - }); - - switch (currentPath) { - case Routes.transactionsPage: - desktopSidebarViewModel.resetSidebar(); - break; - default: - desktopSidebarViewModel.resetSidebar(); - Future.delayed(Duration(milliseconds: 10), () { - desktopSidebarViewModel.onPageChange(SidebarItem.transactions); - desktopNavigatorKey.currentState?.pushNamed(Routes.transactionsPage); - }); + if (desktopSidebarViewModel.currentPage == SidebarItem.transactions) { + desktopNavigatorKey.currentState + ?.pushNamedAndRemoveUntil(Routes.desktop_actions, (route) => false); + desktopSidebarViewModel.resetSidebar(); + } else { + desktopSidebarViewModel.onPageChange(SidebarItem.transactions); + desktopNavigatorKey.currentState?.pushNamed(Routes.transactionsPage); } }, isSelected: desktopSidebarViewModel.currentPage == SidebarItem.transactions, @@ -156,20 +150,11 @@ class DesktopSidebarWrapper extends BasePage { void _setEffects() async { reaction((_) => desktopSidebarViewModel.currentPage, (page) { - String? currentPath; - - desktopNavigatorKey.currentState?.popUntil((route) { - currentPath = route.settings.name; - return true; - }); - if (page == SidebarItem.transactions) { + if (page == SidebarItem.dashboard) { + pageController.jumpToPage(0); return; } - - if (currentPath == Routes.transactionsPage) { - Navigator.of(desktopNavigatorKey.currentContext!).pop(); - } - pageController.jumpToPage(page.index); + pageController.jumpToPage(page.index - 1); }); } } diff --git a/lib/src/screens/dashboard/widgets/address_page.dart b/lib/src/screens/dashboard/widgets/address_page.dart index a047e9f29..dcfeb6030 100644 --- a/lib/src/screens/dashboard/widgets/address_page.dart +++ b/lib/src/screens/dashboard/widgets/address_page.dart @@ -82,7 +82,9 @@ class AddressPage extends BasePage { child: ButtonTheme( minWidth: double.minPositive, child: Semantics( - label: !isMobileView ? 'Close' : 'Back', + label: !isMobileView + ? S.of(context).close + : S.of(context).seed_alert_back, child: TextButton( style: ButtonStyle( overlayColor: MaterialStateColor.resolveWith( diff --git a/lib/src/screens/dashboard/widgets/balance_page.dart b/lib/src/screens/dashboard/widgets/balance_page.dart index 8ffb4a4e4..0a1000060 100644 --- a/lib/src/screens/dashboard/widgets/balance_page.dart +++ b/lib/src/screens/dashboard/widgets/balance_page.dart @@ -2,6 +2,7 @@ import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/src/screens/exchange_trade/information_page.dart'; import 'package:cake_wallet/store/settings_store.dart'; import 'package:cake_wallet/themes/theme_base.dart'; +import 'package:cake_wallet/utils/feature_flag.dart'; import 'package:cake_wallet/utils/responsive_layout_util.dart'; import 'package:cake_wallet/utils/show_pop_up.dart'; import 'package:flutter/material.dart'; @@ -17,9 +18,6 @@ class BalancePage extends StatelessWidget { final DashboardViewModel dashboardViewModel; final SettingsStore settingsStore; - Color get backgroundLightColor => - settingsStore.currentTheme.type == ThemeType.bright ? Colors.transparent : Colors.white; - @override Widget build(BuildContext context) { return GestureDetector( @@ -70,7 +68,7 @@ class BalancePage extends StatelessWidget { ), Observer( builder: (_) { - if (dashboardViewModel.balanceViewModel.isShowCard) { + if (dashboardViewModel.balanceViewModel.isShowCard && FeatureFlag.isCakePayEnabled) { return IntroducingCard( title: S.of(context).introducing_cake_pay, subTitle: S.of(context).cake_pay_learn_more, diff --git a/lib/src/screens/dashboard/widgets/market_place_page.dart b/lib/src/screens/dashboard/widgets/market_place_page.dart index c6d69764f..eeed4bee0 100644 --- a/lib/src/screens/dashboard/widgets/market_place_page.dart +++ b/lib/src/screens/dashboard/widgets/market_place_page.dart @@ -52,7 +52,10 @@ class MarketPlacePage extends StatelessWidget { children: [ SizedBox(height: 20), DashBoardRoundedCardWidget( - onTap: () => _navigatorToGiftCardsPage(context), + onTap: () => launchUrl( + Uri.parse("https://cakelabs.com/news/cake-pay-mobile-to-shut-down/"), + mode: LaunchMode.externalApplication, + ), title: S.of(context).cake_pay_title, subTitle: S.of(context).cake_pay_subtitle, ), @@ -75,6 +78,7 @@ class MarketPlacePage extends StatelessWidget { ); } + // TODO: Remove ionia flow/files if we will discard it void _navigatorToGiftCardsPage(BuildContext context) { final walletType = dashboardViewModel.type; diff --git a/lib/src/screens/exchange/exchange_page.dart b/lib/src/screens/exchange/exchange_page.dart index 04d7d1201..58026d312 100644 --- a/lib/src/screens/exchange/exchange_page.dart +++ b/lib/src/screens/exchange/exchange_page.dart @@ -126,7 +126,9 @@ class ExchangePage extends BasePage { child: ButtonTheme( minWidth: double.minPositive, child: Semantics( - label: !isMobileView ? 'Close' : 'Back', + label: !isMobileView + ? S.of(context).close + : S.of(context).seed_alert_back, child: TextButton( style: ButtonStyle( overlayColor: MaterialStateColor.resolveWith( diff --git a/lib/src/screens/ionia/cards/ionia_manage_cards_page.dart b/lib/src/screens/ionia/cards/ionia_manage_cards_page.dart index 80ebada1f..b4ab07ca7 100644 --- a/lib/src/screens/ionia/cards/ionia_manage_cards_page.dart +++ b/lib/src/screens/ionia/cards/ionia_manage_cards_page.dart @@ -66,40 +66,6 @@ class IoniaManageCardsPage extends BasePage { @override Widget get endDrawer => CardMenu(); - @override - Widget leading(BuildContext context) { - final _backButton = Icon( - Icons.arrow_back_ios, - color: Theme.of(context) - .accentTextTheme! - .displayMedium! - .backgroundColor!, - size: 16, - ); - - return SizedBox( - height: 37, - width: 37, - child: ButtonTheme( - minWidth: double.minPositive, - child: TextButton( - // FIX-ME: Style - //highlightColor: Colors.transparent, - //splashColor: Colors.transparent, - //padding: EdgeInsets.all(0), - onPressed: (){ - if (searchFocusNode.hasFocus) { - searchFocusNode.unfocus(); - return; - } - - Navigator.of(context).pop(); - }, - child: _backButton), - ), - ); - } - @override Widget middle(BuildContext context) { return Text( @@ -123,26 +89,28 @@ class IoniaManageCardsPage extends BasePage { @override Widget body(BuildContext context) { - final filterButton = InkWell( - onTap: () async { - await showCategoryFilter(context); - _cardsListViewModel.getMerchants(); - }, - child: Container( - width: 32, - padding: EdgeInsets.all(8), - decoration: BoxDecoration( - color: Theme.of(context).textTheme!.titleLarge!.backgroundColor!, - border: Border.all( - color: Colors.white.withOpacity(0.2), + final filterButton = Semantics( + label: S.of(context).filter_by, + child: InkWell( + onTap: () async { + await showCategoryFilter(context); + _cardsListViewModel.getMerchants(); + }, + child: Container( + width: 32, + padding: EdgeInsets.all(8), + decoration: BoxDecoration( + color: Theme.of(context).textTheme!.titleLarge!.backgroundColor!, + border: Border.all( + color: Colors.white.withOpacity(0.2), + ), + borderRadius: BorderRadius.circular(10), ), - borderRadius: BorderRadius.circular(10), - ), - child: Image.asset( - 'assets/images/filter.png', - color: Theme.of(context).textTheme!.bodySmall!.decorationColor!, - ), - ) + child: Image.asset( + 'assets/images/filter.png', + color: Theme.of(context).textTheme!.bodySmall!.decorationColor!, + ), + )), ); return Padding( @@ -281,11 +249,13 @@ class _SearchWidget extends StatelessWidget { final FocusNode focusNode; @override Widget build(BuildContext context) { - final searchIcon = Padding( - padding: EdgeInsets.all(8), - child: Image.asset( - 'assets/images/mini_search_icon.png', - color: Theme.of(context).textTheme!.bodySmall!.decorationColor!, + final searchIcon = ExcludeSemantics( + child: Padding( + padding: EdgeInsets.all(8), + child: Image.asset( + 'assets/images/mini_search_icon.png', + color: Theme.of(context).textTheme!.bodySmall!.decorationColor!, + ), ), ); @@ -335,18 +305,22 @@ class _TrailingIcon extends StatelessWidget { @override Widget build(BuildContext context) { - return Material( - color: Colors.transparent, - child: IconButton( - padding: EdgeInsets.zero, - constraints: BoxConstraints(), - highlightColor: Colors.transparent, - splashColor: Colors.transparent, - iconSize: 25, - onPressed: onPressed, - icon: Image.asset( - asset, - color: Theme.of(context).accentTextTheme!.displayMedium!.backgroundColor!, + return Semantics( + label: S.of(context).profile, + child: Material( + color: Colors.transparent, + child: IconButton( + padding: EdgeInsets.zero, + constraints: BoxConstraints(), + highlightColor: Colors.transparent, + splashColor: Colors.transparent, + iconSize: 25, + onPressed: onPressed, + icon: Image.asset( + asset, + color: + Theme.of(context).accentTextTheme!.displayMedium!.backgroundColor!, + ), ), ), ); diff --git a/lib/src/screens/new_wallet/advanced_privacy_settings_page.dart b/lib/src/screens/new_wallet/advanced_privacy_settings_page.dart index c49644d7c..c568761b9 100644 --- a/lib/src/screens/new_wallet/advanced_privacy_settings_page.dart +++ b/lib/src/screens/new_wallet/advanced_privacy_settings_page.dart @@ -118,19 +118,21 @@ class _AdvancedPrivacySettingsBodyState extends State SizedBox( + width: constraints.maxWidth * 0.8, + child: Text( + S.of(context).settings_can_be_changed_later, + textAlign: TextAlign.center, + style: TextStyle( + color: Theme.of(context) .accentTextTheme! .displayMedium! .color, + ), ), ), - ), + ) ], ), ), diff --git a/lib/src/screens/new_wallet/new_wallet_page.dart b/lib/src/screens/new_wallet/new_wallet_page.dart index 57da0050a..39cd006f5 100644 --- a/lib/src/screens/new_wallet/new_wallet_page.dart +++ b/lib/src/screens/new_wallet/new_wallet_page.dart @@ -146,7 +146,7 @@ class _WalletNameFormState extends State { width: 1.0), ), suffixIcon: Semantics( - label: 'Generate Name', + label: S.of(context).generate_name, child: IconButton( onPressed: () async { final rName = await generateName(); diff --git a/lib/src/screens/nodes/node_create_or_edit_page.dart b/lib/src/screens/nodes/node_create_or_edit_page.dart index 71f615c6a..ddce52774 100644 --- a/lib/src/screens/nodes/node_create_or_edit_page.dart +++ b/lib/src/screens/nodes/node_create_or_edit_page.dart @@ -115,6 +115,7 @@ class NodeCreateOrEditPage extends BasePage { bottomSectionPadding: EdgeInsets.only(bottom: 24), bottomSection: Observer( builder: (_) => Row( + mainAxisAlignment: MainAxisAlignment.center, children: [ Flexible( child: Container( diff --git a/lib/src/screens/pin_code/pin_code_widget.dart b/lib/src/screens/pin_code/pin_code_widget.dart index 628d5ab6f..e4df2d2fa 100644 --- a/lib/src/screens/pin_code/pin_code_widget.dart +++ b/lib/src/screens/pin_code/pin_code_widget.dart @@ -226,7 +226,7 @@ class PinCodeState extends State { child: Container( margin: EdgeInsets.only(left: marginLeft, right: marginRight), child: Semantics( - label: 'Delete', + label: S.of(context).delete, button: true, onTap: () => _pop(), child: TextButton( diff --git a/lib/src/screens/receive/receive_page.dart b/lib/src/screens/receive/receive_page.dart index 9077bf08c..5c498b442 100644 --- a/lib/src/screens/receive/receive_page.dart +++ b/lib/src/screens/receive/receive_page.dart @@ -87,7 +87,7 @@ class ReceivePage extends BasePage { return Material( color: Colors.transparent, child: Semantics( - label: 'Share', + label: S.of(context).share, child: IconButton( padding: EdgeInsets.zero, constraints: BoxConstraints(), diff --git a/lib/src/screens/receive/widgets/address_cell.dart b/lib/src/screens/receive/widgets/address_cell.dart index e1fe77e72..733612e0b 100644 --- a/lib/src/screens/receive/widgets/address_cell.dart +++ b/lib/src/screens/receive/widgets/address_cell.dart @@ -71,7 +71,7 @@ class AddressCell extends StatelessWidget { ), )); return Semantics( - label: 'Slidable', + label: S.of(context).slidable, selected: isCurrent, enabled: !isCurrent, child: Slidable( diff --git a/lib/src/screens/send/send_page.dart b/lib/src/screens/send/send_page.dart index 4ad1ad8ca..40c47b1f5 100644 --- a/lib/src/screens/send/send_page.dart +++ b/lib/src/screens/send/send_page.dart @@ -71,7 +71,9 @@ class SendPage extends BasePage { child: ButtonTheme( minWidth: double.minPositive, child: Semantics( - label: !isMobileView ? 'Close' : 'Back', + label: !isMobileView + ? S.of(context).close + : S.of(context).seed_alert_back, child: TextButton( style: ButtonStyle( overlayColor: MaterialStateColor.resolveWith( diff --git a/lib/src/widgets/address_text_field.dart b/lib/src/widgets/address_text_field.dart index daa2e0a60..9017aa8b1 100644 --- a/lib/src/widgets/address_text_field.dart +++ b/lib/src/widgets/address_text_field.dart @@ -114,55 +114,66 @@ class AddressTextField extends StatelessWidget { width: prefixIconWidth, height: prefixIconHeight, padding: EdgeInsets.only(top: 0), - child: InkWell( - onTap: () async => _pasteAddress(context), - child: Container( - padding: EdgeInsets.all(8), - decoration: BoxDecoration( - color: buttonColor ?? - Theme.of(context) - .accentTextTheme! + child: Semantics( + label: S.of(context).paste, + child: InkWell( + onTap: () async => _pasteAddress(context), + child: Container( + padding: EdgeInsets.all(8), + decoration: BoxDecoration( + color: buttonColor ?? + Theme.of(context) + .accentTextTheme + ! .titleLarge! - .color!, - borderRadius: - BorderRadius.all(Radius.circular(6))), - child: Image.asset( - 'assets/images/paste_ios.png', - color: iconColor ?? - Theme.of(context) - .primaryTextTheme! + .color!, + borderRadius: + BorderRadius.all(Radius.circular(6))), + child: Image.asset( + 'assets/images/paste_ios.png', + color: iconColor ?? + Theme.of(context) + .primaryTextTheme + ! .headlineMedium! - .decorationColor!, - )), + .decorationColor!, + )), + ), )), ], - if (this.options.contains(AddressTextFieldOption.qrCode) && DeviceInfo.instance.isMobile) - ...[ + if (this.options.contains(AddressTextFieldOption.qrCode) && + DeviceInfo.instance.isMobile) ...[ Container( width: prefixIconWidth, height: prefixIconHeight, padding: EdgeInsets.only(top: 0), - child: InkWell( - onTap: () async => _presentQRScanner(context), - child: Container( - padding: EdgeInsets.all(8), - decoration: BoxDecoration( - color: buttonColor ?? - Theme.of(context) - .accentTextTheme + child: Semantics( + label: S.of(context).scan_qr_code, + child: InkWell( + onTap: () async => _presentQRScanner(context), + child: Container( + padding: EdgeInsets.all(8), + decoration: BoxDecoration( + color: buttonColor ?? + Theme.of(context) + .accentTextTheme + .titleLarge! - .color!, - borderRadius: - BorderRadius.all(Radius.circular(6))), - child: Image.asset( - 'assets/images/qr_code_icon.png', - color: iconColor ?? - Theme.of(context) - .primaryTextTheme!.headlineMedium! - .decorationColor!, - )), + .color!, + borderRadius: + BorderRadius.all(Radius.circular(6))), + child: Image.asset( + 'assets/images/qr_code_icon.png', + color: iconColor ?? + Theme.of(context) + .primaryTextTheme + !.headlineMedium! + .decorationColor!, + )), + ), )) - ] else SizedBox(width: 5), + ] else + SizedBox(width: 5), if (this .options .contains(AddressTextFieldOption.addressBook)) ...[ @@ -170,26 +181,32 @@ class AddressTextField extends StatelessWidget { width: prefixIconWidth, height: prefixIconHeight, padding: EdgeInsets.only(top: 0), - child: InkWell( - onTap: () async => _presetAddressBookPicker(context), - child: Container( - padding: EdgeInsets.all(8), - decoration: BoxDecoration( - color: buttonColor ?? - Theme.of(context) - .accentTextTheme! + child: Semantics( + label: S.of(context).address_book, + child: InkWell( + onTap: () async => + _presetAddressBookPicker(context), + child: Container( + padding: EdgeInsets.all(8), + decoration: BoxDecoration( + color: buttonColor ?? + Theme.of(context) + .accentTextTheme + ! .titleLarge! - .color!, - borderRadius: - BorderRadius.all(Radius.circular(6))), - child: Image.asset( - 'assets/images/open_book.png', - color: iconColor ?? - Theme.of(context) - .primaryTextTheme! + .color!, + borderRadius: + BorderRadius.all(Radius.circular(6))), + child: Image.asset( + 'assets/images/open_book.png', + color: iconColor ?? + Theme.of(context) + .primaryTextTheme + ! .headlineMedium! - .decorationColor!, - )), + .decorationColor!, + )), + ), )) ] ], diff --git a/lib/src/widgets/introducing_card.dart b/lib/src/widgets/introducing_card.dart index 638d68c8a..0a4a27f36 100644 --- a/lib/src/widgets/introducing_card.dart +++ b/lib/src/widgets/introducing_card.dart @@ -1,6 +1,7 @@ import 'package:auto_size_text/auto_size_text.dart'; import 'package:flutter/material.dart'; import 'package:cake_wallet/palette.dart'; +import 'package:cake_wallet/generated/i18n.dart'; class IntroducingCard extends StatelessWidget { IntroducingCard( @@ -70,7 +71,7 @@ class IntroducingCard extends StatelessWidget { Padding( padding: const EdgeInsets.fromLTRB(0,16,16,0), child: Semantics( - label: 'Close', + label: S.of(context).close, child: GestureDetector( onTap: closeCard, child: Container( diff --git a/lib/utils/feature_flag.dart b/lib/utils/feature_flag.dart new file mode 100644 index 000000000..2b0d5a2b9 --- /dev/null +++ b/lib/utils/feature_flag.dart @@ -0,0 +1,3 @@ +class FeatureFlag { + static const bool isCakePayEnabled = false; +} \ No newline at end of file diff --git a/lib/view_model/dashboard/desktop_sidebar_view_model.dart b/lib/view_model/dashboard/desktop_sidebar_view_model.dart index d0320c05f..543b44b35 100644 --- a/lib/view_model/dashboard/desktop_sidebar_view_model.dart +++ b/lib/view_model/dashboard/desktop_sidebar_view_model.dart @@ -4,9 +4,9 @@ part 'desktop_sidebar_view_model.g.dart'; enum SidebarItem { dashboard, + transactions, support, settings, - transactions; } class DesktopSidebarViewModel = DesktopSidebarViewModelBase with _$DesktopSidebarViewModel; diff --git a/lib/view_model/rescan_view_model.dart b/lib/view_model/rescan_view_model.dart index 632d9ef0c..c973b7b3f 100644 --- a/lib/view_model/rescan_view_model.dart +++ b/lib/view_model/rescan_view_model.dart @@ -24,6 +24,7 @@ abstract class RescanViewModelBase with Store { Future rescanCurrentWallet({required int restoreHeight}) async { state = RescanWalletState.rescaning; await _wallet.rescan(height: restoreHeight); + _wallet.transactionHistory.clear(); state = RescanWalletState.none; } } \ No newline at end of file diff --git a/macos/Podfile.lock b/macos/Podfile.lock index 9c79281a1..2ccdc183c 100644 --- a/macos/Podfile.lock +++ b/macos/Podfile.lock @@ -115,10 +115,10 @@ SPEC CHECKSUMS: platform_device_id_macos: f763bb55f088be804d61b96eb4710b8ab6598e94 ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825 share_plus_macos: 853ee48e7dce06b633998ca0735d482dd671ade4 - shared_preferences_foundation: e2dae3258e06f44cc55f49d42024fd8dd03c590c + shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126 url_launcher_macos: 5335912b679c073563f29d89d33d10d459f95451 wakelock_macos: bc3f2a9bd8d2e6c89fee1e1822e7ddac3bd004a9 PODFILE CHECKSUM: 5107934592df7813b33d744aebc8ddc6b5a5445f -COCOAPODS: 1.11.3 +COCOAPODS: 1.12.1 diff --git a/res/values/strings_ar.arb b/res/values/strings_ar.arb index fdeec9c94..5802b325d 100644 --- a/res/values/strings_ar.arb +++ b/res/values/strings_ar.arb @@ -606,6 +606,8 @@ "error_text_input_above_maximum_limit": "المبلغ أكبر من الحد الأقصى", "show_market_place": "إظهار السوق", "prevent_screenshots": "منع لقطات الشاشة وتسجيل الشاشة", + "profile": "حساب تعريفي", + "close": "يغلق", "modify_2fa": "تعديل 2 عامل المصادقة", "disable_cake_2fa": "تعطيل 2 عامل المصادقة", "question_to_disable_2fa": "هل أنت متأكد أنك تريد تعطيل Cake 2FA؟ لن تكون هناك حاجة إلى رمز 2FA للوصول إلى المحفظة ووظائف معينة.", @@ -628,21 +630,25 @@ "available_balance_description": "الرصيد المتاح هو الرصيد الذي يمكنك إنفاقه أو تحويله إلى محفظة أخرى. يتم تجميد الرصيد المتاح للمعاملات الصادرة والمعاملات الواردة غير المؤكدة.", "syncing_wallet_alert_title": "محفظتك تتم مزامنتها", "syncing_wallet_alert_content": "قد لا يكتمل رصيدك وقائمة المعاملات الخاصة بك حتى تظهر عبارة “SYNCHRONIZED“ في الأعلى. انقر / اضغط لمعرفة المزيد.", - "home_screen_settings": "إعدادات الشاشة الرئيسية", - "sort_by": "ترتيب حسب", - "search_add_token": "بحث / إضافة رمز", - "edit_token": "تحرير الرمز المميز", - "warning": "تحذير", - "add_token_warning": "لا تقم بتحرير أو إضافة رموز وفقًا لتعليمات المحتالين.\nقم دائمًا بتأكيد عناوين الرموز مع مصادر حسنة السمعة!", - "add_token_disclaimer_check": "لقد قمت بتأكيد عنوان ومعلومات عقد الرمز المميز باستخدام مصدر حسن السمعة. يمكن أن تؤدي إضافة معلومات خبيثة أو غير صحيحة إلى خسارة الأموال.", - "token_contract_address": "عنوان عقد الرمز", - "token_name": "اسم الرمز ، على سبيل المثال: Tether", - "token_symbol": "رمز العملة ، على سبيل المثال: USDT", - "token_decimal": "رمز عشري", - "field_required": "هذه الخانة مطلوبه", - "pin_at_top": "تثبيت ${token} في الأعلى", - "invalid_input": "مدخل غير صالح", - "fiat_balance": "الرصيد فيات", - "gross_balance": "إجمالي الرصيد", - "alphabetical": "مرتب حسب الحروف الأبجدية" + "home_screen_settings": "إعدادات الشاشة الرئيسية", + "sort_by": "ترتيب حسب", + "search_add_token": "بحث / إضافة رمز", + "edit_token": "تحرير الرمز المميز", + "warning": "تحذير", + "add_token_warning": "لا تقم بتحرير أو إضافة رموز وفقًا لتعليمات المحتالين.\nقم دائمًا بتأكيد عناوين الرموز مع مصادر حسنة السمعة!", + "add_token_disclaimer_check": "لقد قمت بتأكيد عنوان ومعلومات عقد الرمز المميز باستخدام مصدر حسن السمعة. يمكن أن تؤدي إضافة معلومات خبيثة أو غير صحيحة إلى خسارة الأموال.", + "token_contract_address": "عنوان عقد الرمز", + "token_name": "اسم الرمز ، على سبيل المثال: Tether", + "token_symbol": "رمز العملة ، على سبيل المثال: USDT", + "token_decimal": "رمز عشري", + "field_required": "هذه الخانة مطلوبه", + "pin_at_top": "تثبيت ${token} في الأعلى", + "invalid_input": "مدخل غير صالح", + "fiat_balance": "الرصيد فيات", + "gross_balance": "إجمالي الرصيد", + "alphabetical": "مرتب حسب الحروف الأبجدية", + "generate_name": "توليد الاسم", + "balance_page": "صفحة التوازن", + "share": "يشارك", + "slidable": "قابل للانزلاق" } diff --git a/res/values/strings_bg.arb b/res/values/strings_bg.arb index 626123098..06248b733 100644 --- a/res/values/strings_bg.arb +++ b/res/values/strings_bg.arb @@ -602,6 +602,8 @@ "error_text_input_above_maximum_limit": "Сумата надвишава максималната", "show_market_place": "Покажи пазар", "prevent_screenshots": "Предотвратете екранни снимки и запис на екрана", + "profile": "Профил", + "close": "затвори", "modify_2fa": "Модифициране на тортата 2FA", "disable_cake_2fa": "Деактивирайте Cake 2FA", "question_to_disable_2fa": "Сигурни ли сте, че искате да деактивирате Cake 2FA? Вече няма да е необходим 2FA код за достъп до портфейла и определени функции.", @@ -640,5 +642,9 @@ "invalid_input": "Невалиден вход", "fiat_balance": "Фиат Баланс", "gross_balance": "Брутен баланс", - "alphabetical": "Азбучен ред" + "alphabetical": "Азбучен ред", + "generate_name": "Генериране на име", + "balance_page": "Страница за баланс", + "share": "Дял", + "slidable": "Плъзгащ се" } diff --git a/res/values/strings_cs.arb b/res/values/strings_cs.arb index 2e8770a30..1a3ca4d85 100644 --- a/res/values/strings_cs.arb +++ b/res/values/strings_cs.arb @@ -602,6 +602,8 @@ "error_text_input_above_maximum_limit": "Částka je větší než maximální hodnota", "show_market_place": "Zobrazit trh", "prevent_screenshots": "Zabránit vytváření snímků obrazovky a nahrávání obrazovky", + "profile": "Profil", + "close": "zavřít", "modify_2fa": "Upravte Cake 2FA", "disable_cake_2fa": "Zakázat Cake 2FA", "question_to_disable_2fa": "Opravdu chcete deaktivovat Cake 2FA? Pro přístup k peněžence a některým funkcím již nebude potřeba kód 2FA.", @@ -640,5 +642,9 @@ "invalid_input": "Neplatný vstup", "fiat_balance": "Fiat Balance", "gross_balance": "Hrubý zůstatek", - "alphabetical": "Abecední" + "alphabetical": "Abecední", + "generate_name": "Generovat jméno", + "balance_page": "Stránka zůstatku", + "share": "Podíl", + "slidable": "Posuvné" } diff --git a/res/values/strings_de.arb b/res/values/strings_de.arb index 83dfc9d85..ea994d5bd 100644 --- a/res/values/strings_de.arb +++ b/res/values/strings_de.arb @@ -608,6 +608,8 @@ "error_text_input_above_maximum_limit": "Menge ist über dem Maximum", "show_market_place": "Marktplatz anzeigen", "prevent_screenshots": "Verhindern Sie Screenshots und Bildschirmaufzeichnungen", + "profile": "Profil", + "close": "Schließen", "modify_2fa": "Kuchen 2FA ändern", "disable_cake_2fa": "Kuchen 2FA deaktivieren", "question_to_disable_2fa": "Sind Sie sicher, dass Sie Cake 2FA deaktivieren möchten? Für den Zugriff auf die Brieftasche und bestimmte Funktionen wird kein 2FA-Code mehr benötigt.", @@ -646,5 +648,9 @@ "invalid_input": "Ungültige Eingabe", "fiat_balance": "Fiat Balance", "gross_balance": "Bruttosaldo", - "alphabetical": "Alphabetisch" + "alphabetical": "Alphabetisch", + "generate_name": "Namen generieren", + "balance_page": "Balance-Seite", + "share": "Aktie", + "slidable": "Verschiebbar" } diff --git a/res/values/strings_en.arb b/res/values/strings_en.arb index a568018cf..ac9f988f8 100644 --- a/res/values/strings_en.arb +++ b/res/values/strings_en.arb @@ -608,6 +608,8 @@ "error_text_input_above_maximum_limit": "Amount is more than the maximum", "show_market_place": "Show Marketplace", "prevent_screenshots": "Prevent screenshots and screen recording", + "profile": "Profile", + "close": "Close", "modify_2fa": "Modify Cake 2FA", "disable_cake_2fa": "Disable Cake 2FA", "question_to_disable_2fa": "Are you sure that you want to disable Cake 2FA? A 2FA code will no longer be needed to access the wallet and certain functions.", @@ -646,5 +648,9 @@ "invalid_input": "Invalid input", "fiat_balance": "Fiat Balance", "gross_balance": "Gross Balance", - "alphabetical": "Alphabetical" + "alphabetical": "Alphabetical", + "generate_name": "Generate Name", + "balance_page": "Balance Page", + "share": "Share", + "slidable": "Slidable" } diff --git a/res/values/strings_es.arb b/res/values/strings_es.arb index 6e680a75d..5ff9cf3d4 100644 --- a/res/values/strings_es.arb +++ b/res/values/strings_es.arb @@ -608,6 +608,8 @@ "error_text_input_above_maximum_limit": "La cantidad es más que el máximo", "show_market_place": "Mostrar mercado", "prevent_screenshots": "Evitar capturas de pantalla y grabación de pantalla", + "profile": "Perfil", + "close": "Cerca", "modify_2fa": "Modificar torta 2FA", "disable_cake_2fa": "Desactivar pastel 2FA", "question_to_disable_2fa": "¿Está seguro de que desea deshabilitar Cake 2FA? Ya no se necesitará un código 2FA para acceder a la billetera y a ciertas funciones.", @@ -646,5 +648,9 @@ "invalid_input": "Entrada inválida", "fiat_balance": "Equilibrio Fiat", "gross_balance": "Saldo bruto", - "alphabetical": "Alfabético" + "alphabetical": "Alfabético", + "generate_name": "Generar nombre", + "balance_page": "Página de saldo", + "share": "Compartir", + "slidable": "deslizable" } diff --git a/res/values/strings_fr.arb b/res/values/strings_fr.arb index 84f0694a9..60f9392cd 100644 --- a/res/values/strings_fr.arb +++ b/res/values/strings_fr.arb @@ -608,6 +608,8 @@ "error_text_input_above_maximum_limit": "Le montant est supérieur au maximum", "show_market_place": "Afficher la place de marché", "prevent_screenshots": "Empêcher les captures d'écran et l'enregistrement d'écran", + "profile": "Profil", + "close": "Fermer", "modify_2fa": "Modifier les paramètres Cake 2FA", "disable_cake_2fa": "Désactiver Cake 2FA", "question_to_disable_2fa": "Êtes-vous sûr de vouloir désactiver Cake 2FA ? Un code 2FA ne sera plus nécessaire pour accéder au portefeuille (wallet) et à certaines fonctions.", @@ -646,5 +648,9 @@ "invalid_input": "Entrée invalide", "fiat_balance": "Fiat Balance", "gross_balance": "Solde brut", - "alphabetical": "Alphabétique" + "alphabetical": "Alphabétique", + "generate_name": "Générer un nom", + "balance_page": "Page Solde", + "share": "Partager", + "slidable": "Glissable" } diff --git a/res/values/strings_ha.arb b/res/values/strings_ha.arb index 02de77bde..d6fef5384 100644 --- a/res/values/strings_ha.arb +++ b/res/values/strings_ha.arb @@ -628,5 +628,9 @@ "invalid_input": "Shigar da ba daidai ba", "fiat_balance": "Fiat Balance", "gross_balance": "Babban Ma'auni", - "alphabetical": "Harafi" + "alphabetical": "Harafi", + "generate_name": "Ƙirƙirar Suna", + "balance_page": "Ma'auni Page", + "share": "Raba", + "slidable": "Mai iya zamewa" } diff --git a/res/values/strings_hi.arb b/res/values/strings_hi.arb index 71efb1542..7e782aefd 100644 --- a/res/values/strings_hi.arb +++ b/res/values/strings_hi.arb @@ -608,6 +608,8 @@ "error_text_input_above_maximum_limit": "राशि अधिकतम से अधिक है", "show_market_place": "बाज़ार दिखाएँ", "prevent_screenshots": "स्क्रीनशॉट और स्क्रीन रिकॉर्डिंग रोकें", + "profile": "प्रोफ़ाइल", + "close": "बंद करना", "modify_2fa": "केक 2FA संशोधित करें", "disable_cake_2fa": "केक 2FA अक्षम करें", "question_to_disable_2fa": "क्या आप सुनिश्चित हैं कि आप Cake 2FA को अक्षम करना चाहते हैं? वॉलेट और कुछ कार्यों तक पहुँचने के लिए अब 2FA कोड की आवश्यकता नहीं होगी।", @@ -646,5 +648,9 @@ "invalid_input": "अमान्य निवेश", "fiat_balance": "फिएट बैलेंस", "gross_balance": "सकल संतुलन", - "alphabetical": "वर्णमाला" + "alphabetical": "वर्णमाला", + "generate_name": "नाम जनरेट करें", + "balance_page": "बैलेंस पेज", + "share": "शेयर करना", + "slidable": "फिसलने लायक" } diff --git a/res/values/strings_hr.arb b/res/values/strings_hr.arb index 39e166498..89e2526f8 100644 --- a/res/values/strings_hr.arb +++ b/res/values/strings_hr.arb @@ -608,6 +608,8 @@ "error_text_input_above_maximum_limit": "Iznos je veći od maskimalnog", "show_market_place": "Prikaži tržište", "prevent_screenshots": "Spriječite snimke zaslona i snimanje zaslona", + "profile": "Profil", + "close": "Zatvoriti", "modify_2fa": "Izmijenite tortu 2FA", "disable_cake_2fa": "Onemogući Cake 2FA", "question_to_disable_2fa": "Jeste li sigurni da želite onemogućiti Cake 2FA? 2FA kod više neće biti potreban za pristup novčaniku i određenim funkcijama.", @@ -646,5 +648,9 @@ "invalid_input": "Pogrešan unos", "fiat_balance": "Fiat Bilans", "gross_balance": "Bruto bilanca", - "alphabetical": "Abecedno" + "alphabetical": "Abecedno", + "generate_name": "Generiraj ime", + "balance_page": "Stranica sa stanjem", + "share": "Udio", + "slidable": "Klizna" } diff --git a/res/values/strings_id.arb b/res/values/strings_id.arb index 11fa8875d..d084d6d82 100644 --- a/res/values/strings_id.arb +++ b/res/values/strings_id.arb @@ -598,6 +598,8 @@ "error_text_input_above_maximum_limit": "Jumlah lebih dari maksimal", "show_market_place": "Tampilkan Pasar", "prevent_screenshots": "Cegah tangkapan layar dan perekaman layar", + "profile": "Profil", + "close": "Menutup", "modify_2fa": "Ubah Kue 2FA", "disable_cake_2fa": "Nonaktifkan Kue 2FA", "question_to_disable_2fa": "Apakah Anda yakin ingin menonaktifkan Cake 2FA? Kode 2FA tidak lagi diperlukan untuk mengakses dompet dan fungsi tertentu.", @@ -636,5 +638,9 @@ "invalid_input": "Masukan tidak valid", "fiat_balance": "Saldo Fiat", "gross_balance": "Saldo Kotor", - "alphabetical": "Alfabetis" + "alphabetical": "Alfabetis", + "generate_name": "Hasilkan Nama", + "balance_page": "Halaman Saldo", + "share": "Membagikan", + "slidable": "Dapat digeser" } diff --git a/res/values/strings_it.arb b/res/values/strings_it.arb index a071f2a44..4973ed215 100644 --- a/res/values/strings_it.arb +++ b/res/values/strings_it.arb @@ -608,6 +608,8 @@ "error_text_input_above_maximum_limit": "L'ammontare è superiore al massimo", "show_market_place": "Mostra mercato", "prevent_screenshots": "Impedisci screenshot e registrazione dello schermo", + "profile": "Profilo", + "close": "Chiudere", "modify_2fa": "Modifica Torta 2FA", "disable_cake_2fa": "Disabilita Cake 2FA", "question_to_disable_2fa": "Sei sicuro di voler disabilitare Cake 2FA? Non sarà più necessario un codice 2FA per accedere al portafoglio e ad alcune funzioni.", @@ -646,5 +648,9 @@ "invalid_input": "Inserimento non valido", "fiat_balance": "Equilibrio fiat", "gross_balance": "Saldo lordo", - "alphabetical": "Alfabetico" + "alphabetical": "Alfabetico", + "generate_name": "Genera nome", + "balance_page": "Pagina di equilibrio", + "share": "Condividere", + "slidable": "Scorrevole" } diff --git a/res/values/strings_ja.arb b/res/values/strings_ja.arb index 043602057..8d582f529 100644 --- a/res/values/strings_ja.arb +++ b/res/values/strings_ja.arb @@ -608,6 +608,8 @@ "error_text_input_above_maximum_limit": "金額は最大値を超えています", "show_market_place": "マーケットプレイスを表示", "prevent_screenshots": "スクリーンショットと画面録画を防止する", + "profile": "プロフィール", + "close": "近い", "modify_2fa": "ケーキの 2FA を変更する", "disable_cake_2fa": "Cake 2FA を無効にする", "question_to_disable_2fa": "Cake 2FA を無効にしてもよろしいですか?ウォレットと特定の機能にアクセスするために 2FA コードは必要なくなります。", @@ -646,5 +648,9 @@ "invalid_input": "無効入力", "fiat_balance": "フィアットバランス", "gross_balance": "グロス残高", - "alphabetical": "アルファベット順" + "alphabetical": "アルファベット順", + "generate_name": "名前の生成", + "balance_page": "残高ページ", + "share": "共有", + "slidable": "スライド可能" } diff --git a/res/values/strings_ko.arb b/res/values/strings_ko.arb index 5d9488628..97f541648 100644 --- a/res/values/strings_ko.arb +++ b/res/values/strings_ko.arb @@ -608,6 +608,8 @@ "error_text_input_above_maximum_limit": "금액이 최대 값보다 많습니다.", "show_market_place": "마켓플레이스 표시", "prevent_screenshots": "스크린샷 및 화면 녹화 방지", + "profile": "프로필", + "close": "닫다", "modify_2fa": "수정 케이크 2FA", "disable_cake_2fa": "케이크 2FA 비활성화", "question_to_disable_2fa": "Cake 2FA를 비활성화하시겠습니까? 지갑 및 특정 기능에 액세스하는 데 더 이상 2FA 코드가 필요하지 않습니다.", @@ -646,5 +648,9 @@ "invalid_input": "잘못된 입력", "fiat_balance": "피아트 잔액", "gross_balance": "총 잔액", - "alphabetical": "알파벳순" + "alphabetical": "알파벳순", + "generate_name": "이름 생성", + "balance_page": "잔액 페이지", + "share": "공유하다", + "slidable": "슬라이딩 가능" } diff --git a/res/values/strings_my.arb b/res/values/strings_my.arb index b1602481f..4e751316c 100644 --- a/res/values/strings_my.arb +++ b/res/values/strings_my.arb @@ -608,6 +608,8 @@ "error_text_input_above_maximum_limit": "ပမာဏသည် အများဆုံးထက် ပိုများသည်။", "show_market_place": "စျေးကွက်ကိုပြသပါ။", "prevent_screenshots": "ဖန်သားပြင်ဓာတ်ပုံများနှင့် မျက်နှာပြင်ရိုက်ကူးခြင်းကို တားဆီးပါ။", + "profile": "ကိုယ်ရေးအကျဉ်း", + "close": "အနီးကပ်", "modify_2fa": "ကိတ်မုန့် 2FA ကို ပြင်ဆင်ပါ။", "disable_cake_2fa": "ကိတ်မုန့် 2FA ကို ပိတ်ပါ။", "question_to_disable_2fa": "Cake 2FA ကို ပိတ်လိုသည်မှာ သေချာပါသလား။ ပိုက်ဆံအိတ်နှင့် အချို့သောလုပ်ဆောင်ချက်များကို အသုံးပြုရန်အတွက် 2FA ကုဒ်တစ်ခု မလိုအပ်တော့ပါ။", @@ -646,5 +648,9 @@ "invalid_input": "ထည့်သွင်းမှု မမှန်ကန်ပါ။", "fiat_balance": "Fiat Balance", "gross_balance": "စုစုပေါင်းလက်ကျန်ငွေ", - "alphabetical": "အက္ခရာစဉ်" + "alphabetical": "အက္ခရာစဉ်", + "generate_name": "အမည်ဖန်တီးပါ။", + "balance_page": "လက်ကျန်စာမျက်နှာ", + "share": "မျှဝေပါ။", + "slidable": "လျှောချနိုင်သည်။" } diff --git a/res/values/strings_nl.arb b/res/values/strings_nl.arb index 620e5ea68..25c759eea 100644 --- a/res/values/strings_nl.arb +++ b/res/values/strings_nl.arb @@ -608,6 +608,8 @@ "error_text_input_above_maximum_limit": "Bedrag is meer dan maximaal", "show_market_place": "Toon Marktplaats", "prevent_screenshots": "Voorkom screenshots en schermopname", + "profile": "Profiel", + "close": "Dichtbij", "modify_2fa": "Wijzig Cake 2FA", "disable_cake_2fa": "Taart 2FA uitschakelen", "question_to_disable_2fa": "Weet je zeker dat je Cake 2FA wilt uitschakelen? Er is geen 2FA-code meer nodig om toegang te krijgen tot de portemonnee en bepaalde functies.", @@ -646,5 +648,9 @@ "invalid_input": "Ongeldige invoer", "fiat_balance": "Fiat Balans", "gross_balance": "Bruto saldo", - "alphabetical": "Alfabetisch" + "alphabetical": "Alfabetisch", + "generate_name": "Naam genereren", + "balance_page": "Saldo pagina", + "share": "Deel", + "slidable": "Verschuifbaar" } diff --git a/res/values/strings_pl.arb b/res/values/strings_pl.arb index 7ca22316c..4f8645c9f 100644 --- a/res/values/strings_pl.arb +++ b/res/values/strings_pl.arb @@ -608,6 +608,8 @@ "error_text_input_above_maximum_limit": "Kwota jest większa niż maksymalna", "show_market_place": "Pokaż rynek", "prevent_screenshots": "Zapobiegaj zrzutom ekranu i nagrywaniu ekranu", + "profile": "Profil", + "close": "Zamknąć", "modify_2fa": "Zmodyfikuj ciasto 2FA", "disable_cake_2fa": "Wyłącz Cake 2FA", "question_to_disable_2fa": "Czy na pewno chcesz wyłączyć Cake 2FA? Kod 2FA nie będzie już potrzebny do uzyskania dostępu do portfela i niektórych funkcji.", @@ -646,5 +648,9 @@ "invalid_input": "Nieprawidłowe dane wejściowe", "fiat_balance": "Bilans Fiata", "gross_balance": "Saldo brutto", - "alphabetical": "Alfabetyczny" + "alphabetical": "Alfabetyczny", + "generate_name": "Wygeneruj nazwę", + "balance_page": "Strona salda", + "share": "Udział", + "slidable": "Przesuwne" } diff --git a/res/values/strings_pt.arb b/res/values/strings_pt.arb index 6dfabc40f..5179a182e 100644 --- a/res/values/strings_pt.arb +++ b/res/values/strings_pt.arb @@ -436,7 +436,7 @@ "electrum_address_disclaimer": "Geramos novos endereços cada vez que você usa um, mas os endereços anteriores continuam funcionando", "wallet_name_exists": "A carteira com esse nome já existe", "market_place": "Mercado", - "cake_pay_title": "Cartões de presente de pagamento de bolo", + "cake_pay_title": "Cartões de presente de CakePay", "cake_pay_subtitle": "Compre vales-presente com desconto (somente nos EUA)", "cake_pay_web_cards_title": "Cartões Cake Pay Web", "cake_pay_web_cards_subtitle": "Compre cartões pré-pagos e cartões-presente em todo o mundo", @@ -607,11 +607,13 @@ "error_text_input_above_maximum_limit": "O valor é superior ao máximo", "show_market_place": "Mostrar mercado", "prevent_screenshots": "Evite capturas de tela e gravação de tela", - "modify_2fa": "Modificar Bolo 2FA", - "disable_cake_2fa": "Desabilitar Bolo 2FA", + "profile": "Perfil", + "close": "Fechar", + "modify_2fa": "Modificar o Cake 2FA", + "disable_cake_2fa": "Desabilitar o Cake 2FA", "question_to_disable_2fa": "Tem certeza de que deseja desativar o Cake 2FA? Um código 2FA não será mais necessário para acessar a carteira e certas funções.", "disable": "Desativar", - "setup_2fa": "Bolo de Configuração 2FA", + "setup_2fa": "Configurar o Cake 2FA", "verify_with_2fa": "Verificar com Cake 2FA", "totp_code": "Código TOTP", "please_fill_totp": "Por favor, preencha o código de 8 dígitos presente em seu outro dispositivo", @@ -645,5 +647,9 @@ "invalid_input": "Entrada inválida", "fiat_balance": "Equilíbrio Fiat", "gross_balance": "Saldo Bruto", - "alphabetical": "alfabética" + "alphabetical": "alfabética", + "generate_name": "Gerar nome", + "balance_page": "Página de saldo", + "share": "Compartilhar", + "slidable": "Deslizável" } diff --git a/res/values/strings_ru.arb b/res/values/strings_ru.arb index 4cc14643c..fecb57454 100644 --- a/res/values/strings_ru.arb +++ b/res/values/strings_ru.arb @@ -608,6 +608,8 @@ "error_text_input_above_maximum_limit": "Сумма больше максимальной", "show_market_place": "Показать торговую площадку", "prevent_screenshots": "Предотвратить скриншоты и запись экрана", + "profile": "Профиль", + "close": "Закрывать", "modify_2fa": "Изменить торт 2FA", "disable_cake_2fa": "Отключить торт 2FA", "question_to_disable_2fa": "Вы уверены, что хотите отключить Cake 2FA? Код 2FA больше не потребуется для доступа к кошельку и некоторым функциям.", @@ -646,5 +648,9 @@ "invalid_input": "Неверный Ввод", "fiat_balance": "Фиатный баланс", "gross_balance": "Валовой баланс", - "alphabetical": "Алфавитный" + "alphabetical": "Алфавитный", + "generate_name": "Создать имя", + "balance_page": "Страница баланса", + "share": "Делиться", + "slidable": "Скользящий" } diff --git a/res/values/strings_th.arb b/res/values/strings_th.arb index 6527cfc02..80590b2f6 100644 --- a/res/values/strings_th.arb +++ b/res/values/strings_th.arb @@ -608,6 +608,8 @@ "error_text_input_above_maximum_limit": "จำนวนเงินสูงกว่าค่าสูงสุด", "show_market_place": "แสดงตลาดกลาง", "prevent_screenshots": "ป้องกันภาพหน้าจอและการบันทึกหน้าจอ", + "profile": "ประวัติโดยย่อ", + "close": "ปิด", "modify_2fa": "แก้ไขเค้ก 2FA", "disable_cake_2fa": "ปิดการใช้งานเค้ก 2FA", "question_to_disable_2fa": "คุณแน่ใจหรือไม่ว่าต้องการปิดการใช้งาน Cake 2FA ไม่จำเป็นต้องใช้รหัส 2FA ในการเข้าถึงกระเป๋าเงินและฟังก์ชั่นบางอย่างอีกต่อไป", @@ -646,5 +648,9 @@ "invalid_input": "อินพุตไม่ถูกต้อง", "fiat_balance": "เฟียต บาลานซ์", "gross_balance": "ยอดคงเหลือ", - "alphabetical": "ตามตัวอักษร" + "alphabetical": "ตามตัวอักษร", + "generate_name": "สร้างชื่อ", + "balance_page": "หน้ายอดคงเหลือ", + "share": "แบ่งปัน", + "slidable": "เลื่อนได้" } diff --git a/res/values/strings_tr.arb b/res/values/strings_tr.arb index 0961fcaa4..03b425e63 100644 --- a/res/values/strings_tr.arb +++ b/res/values/strings_tr.arb @@ -608,6 +608,8 @@ "error_text_input_above_maximum_limit": "Miktar maksimumdan daha fazla", "show_market_place": "Pazar Yerini Göster", "prevent_screenshots": "Ekran görüntülerini ve ekran kaydını önleyin", + "profile": "Profil", + "close": "Kapalı", "modify_2fa": "Cake 2FA'yı Değiştirin", "disable_cake_2fa": "Cake 2FA'yı Devre Dışı Bırak", "question_to_disable_2fa": "Cake 2FA'yı devre dışı bırakmak istediğinizden emin misiniz? M-cüzdana ve belirli işlevlere erişmek için artık 2FA koduna gerek kalmayacak.", @@ -646,5 +648,9 @@ "invalid_input": "Geçersiz Giriş", "fiat_balance": "Fiat Bakiyesi", "gross_balance": "Brüt Bakiye", - "alphabetical": "Alfabetik" + "alphabetical": "Alfabetik", + "generate_name": "İsim Oluştur", + "balance_page": "Bakiye Sayfası", + "share": "Paylaşmak", + "slidable": "kaydırılabilir" } diff --git a/res/values/strings_uk.arb b/res/values/strings_uk.arb index e9b148801..0151cc6bd 100644 --- a/res/values/strings_uk.arb +++ b/res/values/strings_uk.arb @@ -608,6 +608,8 @@ "error_text_input_above_maximum_limit": "Сума більше максимальної", "show_market_place": "Відображати маркетплейс", "prevent_screenshots": "Запобігати знімкам екрана та запису екрана", + "profile": "Профіль", + "close": "Закрити", "modify_2fa": "Змінити торт 2FA", "disable_cake_2fa": "Вимкнути Cake 2FA", "question_to_disable_2fa": "Ви впевнені, що хочете вимкнути Cake 2FA? Код 2FA більше не потрібен для доступу до гаманця та певних функцій.", @@ -646,5 +648,9 @@ "invalid_input": "Неправильні дані", "fiat_balance": "Фіат Баланс", "gross_balance": "Валовий баланс", - "alphabetical": "Алфавітний" + "alphabetical": "Алфавітний", + "generate_name": "Згенерувати назву", + "balance_page": "Сторінка балансу", + "share": "Поділіться", + "slidable": "Розсувний" } diff --git a/res/values/strings_ur.arb b/res/values/strings_ur.arb index ad63ed743..fd65dc138 100644 --- a/res/values/strings_ur.arb +++ b/res/values/strings_ur.arb @@ -602,6 +602,8 @@ "error_text_input_above_maximum_limit": "رقم زیادہ سے زیادہ سے زیادہ ہے۔", "show_market_place": "بازار دکھائیں۔", "prevent_screenshots": "اسکرین شاٹس اور اسکرین ریکارڈنگ کو روکیں۔", + "profile": "پروفائل", + "close": "بند کریں", "modify_2fa": "کیک 2FA میں ترمیم کریں۔", "disable_cake_2fa": "کیک 2FA کو غیر فعال کریں۔", "question_to_disable_2fa": "کیا آپ واقعی کیک 2FA کو غیر فعال کرنا چاہتے ہیں؟ بٹوے اور بعض افعال تک رسائی کے لیے اب 2FA کوڈ کی ضرورت نہیں ہوگی۔", @@ -640,5 +642,9 @@ "invalid_input": "غلط ان پٹ", "fiat_balance": "فیاٹ بیلنس", "gross_balance": "مجموعی بیلنس", - "alphabetical": "حروف تہجی کے مطابق" + "alphabetical": "حروف تہجی کے مطابق", + "generate_name": "نام پیدا کریں۔", + "balance_page": "بیلنس صفحہ", + "share": "بانٹیں", + "slidable": "سلائیڈ ایبل" } diff --git a/res/values/strings_yo.arb b/res/values/strings_yo.arb index d530cf6e8..d13cefc6a 100644 --- a/res/values/strings_yo.arb +++ b/res/values/strings_yo.arb @@ -604,6 +604,8 @@ "error_text_input_above_maximum_limit": "Iye jọwọ ni o yẹ diẹ ti o wọle diẹ", "show_market_place": "Wa Sopọ Pataki", "prevent_screenshots": "Pese asapọ ti awọn ẹrọ eto aṣa", + "profile": "profaili", + "close": "sunmo", "modify_2fa": "Fi iṣiro 2FA sii Cake", "disable_cake_2fa": "Ko 2FA Cake sii", "question_to_disable_2fa": "Ṣe o wa daadaa pe o fẹ ko 2FA Cake? Ko si itumọ ti a yoo nilo lati ranse si iwe iwe naa ati eyikeyi iṣẹ ti o ni.", @@ -642,5 +644,9 @@ "invalid_input": "Iṣawọle ti ko tọ", "fiat_balance": "Fiat Iwontunws.funfun", "gross_balance": "Iwontunws.funfun apapọ", - "alphabetical": "Labidibi" + "alphabetical": "Labidibi", + "generate_name": "Ṣẹda Orukọ", + "balance_page": "Oju-iwe iwọntunwọnsi", + "share": "Pinpin", + "slidable": "Slidable" } diff --git a/res/values/strings_zh.arb b/res/values/strings_zh.arb index 1493dba4c..0f5a5ef7d 100644 --- a/res/values/strings_zh.arb +++ b/res/values/strings_zh.arb @@ -607,6 +607,8 @@ "error_text_input_above_maximum_limit": "金额大于最大值", "show_market_place": "显示市场", "prevent_screenshots": "防止截屏和录屏", + "profile": "轮廓", + "close": "关闭", "modify_2fa": "修改蛋糕2FA", "disable_cake_2fa": "禁用蛋糕 2FA", "question_to_disable_2fa": "您确定要禁用 Cake 2FA 吗?访问钱包和某些功能将不再需要 2FA 代码。", @@ -645,5 +647,9 @@ "invalid_input": "输入无效", "fiat_balance": "法币余额", "gross_balance": "毛余额", - "alphabetical": "按字母顺序" + "alphabetical": "按字母顺序", + "generate_name": "生成名称", + "balance_page": "余额页", + "share": "分享", + "slidable": "可滑动" }