CW-1125-d-euro-ui-enhancements (#2369)

* feat: enhance dEuro Savings UI and functionality with fiat support and tooltips * feat: add "Reinvest Interest" feature and improve dEuro Savings functionality - Implemented the "Reinvest Interest" feature for dEuro Savings. - Updated localized strings for multiple languages. - Enhanced error handling for insufficient gas fees. - Incorporated loading state and tooltips in Savings Card and Interest Card. - Improved UI responsiveness and button state management. * feat: localize deuro tooltips * feat: enhance dEuro Savings with reinvestment feature and localized strings - Added "Reinvest Interest" functionality for dEuro Savings. - Updated localized strings across multiple languages. - Improved modal bottom sheet handling for savings add/remove operations. - Enhanced tooltips and UI responsiveness. * feat: improve dEuro Savings page with info chips and localized strings * Update res/values/strings_de.arb * fix: update dEuro action type reset in transaction handling

Konstantin Ullrich committed Jul 11, 2025 at 00:36 UTC 3ba2e4283e22c0e9dbbe6cc3adec042870091925
45 files changed +1099 -286
assets/images/collect_interest.png
Binary files /dev/null and b/assets/images/collect_interest.png differ
assets/images/deuro_hero.png
Binary files /dev/null and b/assets/images/deuro_hero.png differ
assets/images/deuro_not_enough_eth.png
Binary files /dev/null and b/assets/images/deuro_not_enough_eth.png differ
cw_ethereum/lib/deuro/deuro_savings.dart
+41 -12
@@ -61,7 +61,7 @@ class DEuro {
61 final requiredBalance = estimatedGasFee;
62
63 if (currentBalance < requiredBalance) {
64 - throw DeuroGasFeeException(
64 + throw InsufficientGasFeeException(
65 requiredGasFee: requiredBalance,
66 currentBalance: currentBalance,
67 );
@@ -99,9 +99,7 @@ class DEuro {
99 } catch (e) {
100 if (e.toString().contains('insufficient funds for gas')) {
101 final ethBalance = await _wallet.getWeb3Client()!.getBalance(_address);
102 - throw DeuroGasFeeException(
103 - currentBalance: ethBalance.getInWei,
104 - );
102 + throw InsufficientGasFeeException(currentBalance: ethBalance.getInWei);
103 }
104 rethrow;
105 }
@@ -122,7 +120,7 @@ class DEuro {
120 contractAddress: _savingsGateway.self.address.hexEip55,
121 receivingAddressHex: _savingsGateway.self.address.hexEip55,
122 priority: priority,
125 - data: _savingsGateway.self.abi.functions[17].encodeCall([amount, hexToBytes(frontendCode)]),
123 + data: _savingsGateway.self.abi.functions[24].encodeCall([_address, amount, hexToBytes(frontendCode)]),
124 );
125
126 final sendTransaction = () => _wallet.getWeb3Client()!.sendRawTransaction(signedTransaction);
@@ -137,9 +135,42 @@ class DEuro {
135 } catch (e) {
136 if (e.toString().contains('insufficient funds for gas')) {
137 final ethBalance = await _wallet.getWeb3Client()!.getBalance(_address);
140 - throw DeuroGasFeeException(
141 - currentBalance: ethBalance.getInWei,
142 - );
138 + throw InsufficientGasFeeException(currentBalance: ethBalance.getInWei);
139 + }
140 + rethrow;
141 + }
142 + }
143 +
144 + Future<PendingEVMChainTransaction> reinvestInterest(EVMChainTransactionPriority priority) async {
145 + try {
146 + await _checkEthBalanceForGasFees(priority);
147 +
148 + final signedTransaction = await _savingsGateway.refreshBalance((owner: _address),
149 + credentials: _wallet.evmChainPrivateKey,
150 + );
151 +
152 + final fee = await _wallet.calculateActualEstimatedFeeForCreateTransaction(
153 + amount: BigInt.zero,
154 + contractAddress: _savingsGateway.self.address.hexEip55,
155 + receivingAddressHex: _savingsGateway.self.address.hexEip55,
156 + priority: priority,
157 + data: _savingsGateway.self.abi.functions[15].encodeCall([_address]),
158 + );
159 +
160 + final sendTransaction = () => _wallet.getWeb3Client()!.sendRawTransaction(signedTransaction);
161 +
162 + return PendingEVMChainTransaction(
163 + feeCurrency: "ETH",
164 + sendTransaction: sendTransaction,
165 + signedTransaction: signedTransaction,
166 + fee: BigInt.from(fee.estimatedGasFee),
167 + amount: 0.toString(),
168 + exponent: 18,
169 + );
170 + } catch (e) {
171 + if (e.toString().contains('insufficient funds for gas')) {
172 + final ethBalance = await _wallet.getWeb3Client()!.getBalance(_address);
173 + throw InsufficientGasFeeException(currentBalance: ethBalance.getInWei);
174 }
175 rethrow;
176 }
@@ -158,14 +189,12 @@ class DEuro {
189 _savingsGateway.self.address.hexEip55,
190 CryptoCurrency.deuro,
191 priority,
161 - "ETH"
192 + "ETH",
193 )) as PendingEVMChainTransaction;
194 } catch (e) {
195 if (e.toString().contains('insufficient funds for gas')) {
196 final ethBalance = await _wallet.getWeb3Client()!.getBalance(_address);
166 - throw DeuroGasFeeException(
167 - currentBalance: ethBalance.getInWei,
168 - );
197 + throw InsufficientGasFeeException(currentBalance: ethBalance.getInWei);
198 }
199 rethrow;
200 }
cw_ethereum/lib/deuro/deuro_savings_contract.dart
+4 -4
@@ -213,7 +213,7 @@ class SavingsGateway extends _i1.GeneratedContract {
213 /// The optional [transaction] parameter can be used to override parameters
214 /// like the gas price, nonce and max gas. The `data` and `to` fields will be
215 /// set by the contract.
216 - Future<String> refreshBalance(
216 + Future<_i2.Uint8List> refreshBalance(
217 ({_i1.EthereumAddress owner}) args, {
218 required _i1.Credentials credentials,
219 _i1.Transaction? transaction,
@@ -221,7 +221,7 @@ class SavingsGateway extends _i1.GeneratedContract {
221 final function = self.abi.functions[15];
222 assert(checkSignature(function, 'b77cd1c7'));
223 final params = [args.owner];
224 - return write(
224 + return writeRaw(
225 credentials,
226 transaction,
227 function,
@@ -232,14 +232,14 @@ class SavingsGateway extends _i1.GeneratedContract {
232 /// The optional [transaction] parameter can be used to override parameters
233 /// like the gas price, nonce and max gas. The `data` and `to` fields will be
234 /// set by the contract.
235 - Future<String> refreshMyBalance({
235 + Future<_i2.Uint8List> refreshMyBalance({
236 required _i1.Credentials credentials,
237 _i1.Transaction? transaction,
238 }) async {
239 final function = self.abi.functions[16];
240 assert(checkSignature(function, '85bd12d1'));
241 final params = [];
242 - return write(
242 + return writeRaw(
243 credentials,
244 transaction,
245 function,
cw_evm/lib/evm_chain_exceptions.dart
+2 -2
@@ -23,12 +23,12 @@ class EVMChainTransactionFeesException implements Exception {
23 String toString() => exceptionMessage;
24 }
25
26 -class DeuroGasFeeException implements Exception {
26 +class InsufficientGasFeeException implements Exception {
27 final String exceptionMessage;
28 final BigInt? requiredGasFee;
29 final BigInt? currentBalance;
30
31 - DeuroGasFeeException({
31 + InsufficientGasFeeException({
32 this.requiredGasFee,
33 this.currentBalance,
34 }) : exceptionMessage = _buildMessage(requiredGasFee, currentBalance);
lib/ethereum/cw_ethereum.dart
+5
@@ -244,6 +244,11 @@ class CWEthereum extends Ethereum {
244 DEuro(wallet as EthereumWallet)
245 .withdrawSavings(amount, priority as EVMChainTransactionPriority);
246
247 + @override
248 + Future<PendingTransaction> reinvestDEuroInterest(
249 + WalletBase wallet, TransactionPriority priority) =>
250 + DEuro(wallet as EthereumWallet).reinvestInterest(priority as EVMChainTransactionPriority);
251 +
252 @override
253 Future<PendingTransaction> enableDEuroSaving(WalletBase wallet, TransactionPriority priority) =>
254 DEuro(wallet as EthereumWallet).enableSavings(priority as EVMChainTransactionPriority);
lib/src/screens/integrations/deuro/savings_page.dart
+178 -21
@@ -1,6 +1,7 @@
1 import 'package:cake_wallet/core/execution_state.dart';
2 import 'package:cake_wallet/generated/i18n.dart';
3 import 'package:cake_wallet/src/screens/base_page.dart';
4 +import 'package:cake_wallet/src/screens/integrations/deuro/widgets/info_chip.dart';
5 import 'package:cake_wallet/src/screens/integrations/deuro/widgets/interest_card_widget.dart';
6 import 'package:cake_wallet/src/screens/integrations/deuro/widgets/savings_card_widget.dart';
7 import 'package:cake_wallet/src/screens/integrations/deuro/widgets/savings_edit_sheet.dart';
@@ -14,9 +15,11 @@ import 'package:cake_wallet/view_model/send/send_view_model_state.dart';
15 import 'package:cw_core/crypto_currency.dart';
16 import 'package:cw_core/pending_transaction.dart';
17 import 'package:cw_core/wallet_type.dart';
18 +import 'package:flutter/cupertino.dart';
19 import 'package:flutter/material.dart';
20 import 'package:flutter_mobx/flutter_mobx.dart';
21 import 'package:mobx/mobx.dart';
22 +import 'package:url_launcher/url_launcher_string.dart';
23
24 class DEuroSavingsPage extends BasePage {
25 final DEuroViewModel _dEuroViewModel;
@@ -44,8 +47,7 @@ class DEuroSavingsPage extends BasePage {
47 child: TextButton(
48 style: TextButton.styleFrom(
49 foregroundColor: Theme.of(context).colorScheme.onSurface,
47 - overlayColor: WidgetStateColor.resolveWith(
48 - (states) => Colors.transparent),
50 + overlayColor: WidgetStateColor.resolveWith((states) => Colors.transparent),
51 ),
52 onPressed: _dEuroViewModel.reloadSavingsUserData,
53 child: Icon(
@@ -61,8 +63,7 @@ class DEuroSavingsPage extends BasePage {
63
64 @override
65 Widget body(BuildContext context) {
64 - WidgetsBinding.instance
65 - .addPostFrameCallback((_) => _setReactions(context, _dEuroViewModel));
66 + WidgetsBinding.instance.addPostFrameCallback((_) => _setReactions(context, _dEuroViewModel));
67
68 return Container(
69 width: double.infinity,
@@ -73,19 +74,50 @@ class DEuroSavingsPage extends BasePage {
74 isDarkTheme: currentTheme.isDark,
75 interestRate: "${_dEuroViewModel.interestRate}%",
76 savingsBalance: _dEuroViewModel.savingsBalance,
77 + fiatSavingsBalance: _dEuroViewModel.fiatSavingsBalance,
78 currency: CryptoCurrency.deuro,
79 + fiatCurrency: _dEuroViewModel.isFiatDisabled ? null : _dEuroViewModel.fiat,
80 onAddSavingsPressed: () => _onSavingsAdd(context),
81 onRemoveSavingsPressed: () => _onSavingsRemove(context),
82 onApproveSavingsPressed: _dEuroViewModel.prepareApproval,
83 + onTooltipPressed: () => _onSavingsTooltipPressed(context),
84 isEnabled: _dEuroViewModel.isEnabled,
85 + isLoading: _dEuroViewModel.isLoading,
86 ),
87 ),
88 Observer(
89 builder: (_) => InterestCardWidget(
90 isDarkTheme: currentTheme.isDark,
91 title: S.of(context).deuro_savings_collect_interest,
87 - collectedInterest: _dEuroViewModel.accruedInterest,
92 + fiatAccruedInterest: _dEuroViewModel.fiatAccruedInterest,
93 + fiatCurrency: _dEuroViewModel.isFiatDisabled ? null : _dEuroViewModel.fiat,
94 + accruedInterest: _dEuroViewModel.accruedInterest,
95 onCollectInterest: _dEuroViewModel.prepareCollectInterest,
96 + onReinvestInterest: _dEuroViewModel.prepareReinvestInterest,
97 + onTooltipPressed: () => _onInterestTooltipPressed(context),
98 + isEnabled: _dEuroViewModel.isEnabled,
99 + ),
100 + ),
101 + Spacer(),
102 + SafeArea(
103 + child: Padding(
104 + padding: EdgeInsets.only(bottom: 30),
105 + child: Row(
106 + mainAxisAlignment: MainAxisAlignment.center,
107 + children: [
108 + InfoChip(
109 + label: S.of(context).deuro_about_deuro,
110 + icon: CupertinoIcons.info,
111 + onPressed: () => _showWelcomeTooltip(context),
112 + ),
113 + SizedBox(width: 10),
114 + InfoChip(
115 + label: S.of(context).website,
116 + icon: CupertinoIcons.globe,
117 + onPressed: () => launchUrlString("https://deuro.com/"),
118 + )
119 + ],
120 + ),
121 ),
122 ),
123 ],
@@ -94,14 +126,12 @@ class DEuroSavingsPage extends BasePage {
126 }
127
128 Future<void> _onSavingsAdd(BuildContext context) async {
97 - final amount = await Navigator.of(context).push(MaterialPageRoute<String>(
98 - builder: (BuildContext context) => SavingEditPage(isAdding: true)));
129 + final amount = await _showEditBottomSheet(context, isAdding: true);
130 if (amount != null) _dEuroViewModel.prepareSavingsEdit(amount, true);
131 }
132
133 Future<void> _onSavingsRemove(BuildContext context) async {
103 - final amount = await Navigator.of(context).push(MaterialPageRoute<String>(
104 - builder: (BuildContext context) => SavingEditPage(isAdding: false)));
134 + final amount = await _showEditBottomSheet(context, isAdding: false);
135 if (amount != null) _dEuroViewModel.prepareSavingsEdit(amount, false);
136 }
137
@@ -112,20 +142,41 @@ class DEuroSavingsPage extends BasePage {
142
143 reaction((_) => dEuroViewModel.transaction, (PendingTransaction? tx) async {
144 if (tx == null) return;
145 + String title;
146 +
147 + switch (_dEuroViewModel.actionType) {
148 + case DEuroActionType.deposit:
149 + title = S.of(context).deuro_savings_add;
150 + break;
151 + case DEuroActionType.withdraw:
152 + title = S.of(context).deuro_savings_remove;
153 + break;
154 + case DEuroActionType.reinvest:
155 + title = S.of(context).deuro_reinvest_interest;
156 + break;
157 + default:
158 + title = S.of(context).confirm_transaction;
159 + break;
160 + }
161 +
162 final result = await showModalBottomSheet<bool>(
163 context: context,
164 isDismissible: false,
165 isScrollControlled: true,
166 builder: (BuildContext bottomSheetContext) => ConfirmSendingBottomSheet(
167 key: ValueKey('savings_page_confirm_sending_dialog_key'),
121 - titleText: S.of(bottomSheetContext).confirm_transaction,
168 + titleText: title,
169 currentTheme: currentTheme,
170 walletType: WalletType.ethereum,
171 titleIconPath: CryptoCurrency.deuro.iconPath,
172 currency: CryptoCurrency.deuro,
173 amount: S.of(bottomSheetContext).send_amount,
127 - amountValue: tx.amountFormatted,
128 - fiatAmountValue: _dEuroViewModel.pendingTransactionFiatAmountFormatted,
174 + amountValue: _dEuroViewModel.actionType == DEuroActionType.reinvest
175 + ? _dEuroViewModel.accruedInterest
176 + : tx.amountFormatted,
177 + fiatAmountValue: _dEuroViewModel.actionType == DEuroActionType.reinvest
178 + ? _dEuroViewModel.fiatAccruedInterest
179 + : _dEuroViewModel.pendingTransactionFiatAmountFormatted,
180 fee: S.of(bottomSheetContext).send_estimated_fee,
181 feeValue: tx.feeFormatted,
182 feeFiatAmount: _dEuroViewModel.pendingTransactionFeeFiatAmountFormatted,
@@ -166,6 +217,7 @@ class DEuroSavingsPage extends BasePage {
217 dEuroViewModel.commitApprovalTransaction();
218 },
219 change: tx.change,
220 + explanation: S.of(context).deuro_savings_approve_app_description,
221 ),
222 );
223
@@ -186,27 +238,29 @@ class DEuroSavingsPage extends BasePage {
238 contentImage: 'assets/images/birthday_cake.png',
239 content: S.of(bottomSheetContext).deuro_tx_commited_content,
240 actionButtonText: S.of(bottomSheetContext).close,
189 - actionButtonKey: ValueKey('send_page_sent_dialog_ok_button_key'),
241 + actionButtonKey: ValueKey('savings_page_sent_dialog_ok_button_key'),
242 actionButton: () => Navigator.of(bottomSheetContext).pop(),
243 ),
244 );
245 });
246 }
247
248 + if (state is NoEtherState) {
249 + WidgetsBinding.instance.addPostFrameCallback((_) async => await _showNoEthTooltip(context));
250 + }
251 +
252 if (state is FailureState) {
253 WidgetsBinding.instance.addPostFrameCallback((_) async {
254 if (!context.mounted) return;
255
256 await showPopUp<void>(
257 context: context,
202 - builder: (BuildContext popupContext) {
203 - return AlertWithOneAction(
204 - alertTitle: S.of(popupContext).error,
205 - alertContent: state.error,
206 - buttonText: S.of(popupContext).ok,
207 - buttonAction: () => Navigator.of(popupContext).pop(),
208 - );
209 - },
258 + builder: (BuildContext popupContext) => AlertWithOneAction(
259 + alertTitle: S.of(popupContext).error,
260 + alertContent: state.error,
261 + buttonText: S.of(popupContext).ok,
262 + buttonAction: () => Navigator.of(popupContext).pop(),
263 + ),
264 );
265 });
266 }
@@ -214,4 +268,107 @@ class DEuroSavingsPage extends BasePage {
268
269 _isReactionsSet = true;
270 }
271 +
272 + void _onSavingsTooltipPressed(BuildContext context) => _showTooltip(
273 + context,
274 + title: S.of(context).deuro_savings_balance,
275 + content: S.of(context).deuro_savings_balance_tooltip,
276 + key: 'savings_tooltip',
277 + onLearnMorePressed: () {}, //ToDo
278 + );
279 +
280 + void _onInterestTooltipPressed(BuildContext context) => _showTooltip(
281 + context,
282 + title: S.of(context).deuro_savings_collect_interest,
283 + content: S.of(context).deuro_savings_collect_interest_tooltip,
284 + key: 'interest_tooltip',
285 + onLearnMorePressed: () {}, //ToDo
286 + );
287 +
288 + void _showTooltip(
289 + BuildContext context, {
290 + required String title,
291 + required String content,
292 + required String key,
293 + required VoidCallback onLearnMorePressed,
294 + }) {
295 + if (!context.mounted) return;
296 +
297 + showModalBottomSheet<void>(
298 + context: context,
299 + builder: (BuildContext bottomSheetContext) => InfoBottomSheet(
300 + currentTheme: currentTheme,
301 + titleText: title,
302 + titleIconPath: CryptoCurrency.deuro.iconPath,
303 + content: content,
304 + isTwoAction: true,
305 + rightButtonText: S.of(context).close,
306 + rightActionButtonKey: ValueKey('deuro_page_tooltip_dialog_${key}_ok_button_key'),
307 + actionRightButton: () => Navigator.of(bottomSheetContext).pop(),
308 + leftButtonText: S.of(context).learn_more,
309 + leftActionButtonKey: ValueKey('deuro_page_tooltip_dialog_${key}_learn_more_button_key'),
310 + actionLeftButton: onLearnMorePressed,
311 + ),
312 + );
313 + }
314 +
315 + Future<void> _showWelcomeTooltip(BuildContext context) async {
316 + if (!context.mounted) return;
317 +
318 + return showModalBottomSheet<void>(
319 + context: context,
320 + isScrollControlled: true,
321 + builder: (BuildContext bottomSheetContext) => InfoBottomSheet(
322 + currentTheme: currentTheme,
323 + height: 350,
324 + titleText: "dEURO",
325 + titleIconPath: CryptoCurrency.deuro.iconPath,
326 + contentImage: 'assets/images/deuro_hero.png',
327 + contentImageSize: 200,
328 + content: S.of(context).deuro_savings_welcome_description,
329 + isTwoAction: true,
330 + rightButtonText: S.of(context).close,
331 + rightActionButtonKey: ValueKey('deuro_page_tooltip_dialog_welcome_ok_button_key'),
332 + actionRightButton: () => Navigator.of(bottomSheetContext).pop(),
333 + leftButtonText: S.of(context).learn_more,
334 + leftActionButtonKey: ValueKey('deuro_page_tooltip_dialog_welcome_learn_more_button_key'),
335 + actionLeftButton: () => Navigator.of(bottomSheetContext).pop(), // ToDo
336 + ),
337 + );
338 + }
339 +
340 + Future<void> _showNoEthTooltip(BuildContext context) async {
341 + if (!context.mounted) return;
342 +
343 + return showModalBottomSheet<void>(
344 + context: context,
345 + builder: (BuildContext bottomSheetContext) => InfoBottomSheet(
346 + currentTheme: currentTheme,
347 + titleText: title,
348 + titleIconPath: CryptoCurrency.deuro.iconPath,
349 + contentImage: 'assets/images/deuro_not_enough_eth.png',
350 + content: S.of(context).deuro_tooltip_no_eth,
351 + actionButtonKey: ValueKey('deuro_page_tooltip_dialog_no_eth_ok_button_key'),
352 + actionButtonText: S.of(context).close,
353 + actionButton: () => Navigator.of(bottomSheetContext).pop(),
354 + ),
355 + );
356 + }
357 +
358 + Future<String?> _showEditBottomSheet(BuildContext context, {bool isAdding = false}) async {
359 + if (!context.mounted) return null;
360 +
361 + return showModalBottomSheet<String?>(
362 + context: context,
363 + isScrollControlled: true,
364 + builder: (BuildContext bottomSheetContext) => SavingsEditSheet(
365 + titleText: isAdding ? S.of(context).deuro_savings_add : S.of(context).deuro_savings_remove,
366 + titleIconPath: CryptoCurrency.deuro.iconPath,
367 + balanceTitle: isAdding
368 + ? S.of(context).deuro_savings_available_to_add
369 + : S.of(context).deuro_savings_available_to_remove,
370 + balance: isAdding ? _dEuroViewModel.accountBalance : _dEuroViewModel.savingsBalance,
371 + ),
372 + );
373 + }
374 }
lib/src/screens/integrations/deuro/widgets/info_chip.dart new
+41
@@ -0,0 +1,41 @@
1 +import 'package:flutter/material.dart';
2 +
3 +class InfoChip extends StatelessWidget {
4 + final String label;
5 + final IconData icon;
6 + final VoidCallback onPressed;
7 +
8 + const InfoChip({
9 + super.key,
10 + required this.label,
11 + required this.icon,
12 + required this.onPressed,
13 + });
14 +
15 + @override
16 + Widget build(BuildContext context) => Container(
17 + decoration: BoxDecoration(
18 + borderRadius: BorderRadius.circular(100),
19 + color: Theme.of(context).colorScheme.surfaceContainer,
20 + ),
21 + padding: const EdgeInsets.fromLTRB(12, 6, 12, 6),
22 + child: InkWell(
23 + onTap: onPressed,
24 + child: Row(
25 + children: [
26 + Padding(
27 + padding: const EdgeInsets.only(right: 5),
28 + child: Icon(
29 + icon,
30 + color: Theme.of(context).colorScheme.onSurface,
31 + ),
32 + ),
33 + Text(
34 + label,
35 + style: Theme.of(context).textTheme.bodyMedium,
36 + ),
37 + ],
38 + ),
39 + ),
40 + );
41 +}
lib/src/screens/integrations/deuro/widgets/interest_card_widget.dart
+75 -46
@@ -1,3 +1,4 @@
1 +import 'package:cake_wallet/entities/fiat_currency.dart';
2 import 'package:cake_wallet/generated/i18n.dart';
3 import 'package:cake_wallet/src/screens/integrations/deuro/widgets/savings_card_widget.dart';
4 import 'package:cake_wallet/themes/utils/custom_theme_colors.dart';
@@ -5,63 +6,91 @@ import 'package:cw_core/crypto_currency.dart';
6 import 'package:flutter/material.dart';
7
8 class InterestCardWidget extends StatelessWidget {
8 - InterestCardWidget({
9 + const InterestCardWidget({
10 required this.title,
10 - required this.collectedInterest,
11 - super.key,
11 + required this.accruedInterest,
12 required this.isDarkTheme,
13 + required this.isEnabled,
14 required this.onCollectInterest,
15 + required this.onReinvestInterest,
16 + required this.onTooltipPressed,
17 + this.fiatAccruedInterest,
18 + this.fiatCurrency,
19 });
20
21 final String title;
17 - final String collectedInterest;
22 + final String accruedInterest;
23 + final String? fiatAccruedInterest;
24 + final FiatCurrency? fiatCurrency;
25 final bool isDarkTheme;
26 + final bool isEnabled;
27 final VoidCallback onCollectInterest;
28 + final VoidCallback onReinvestInterest;
29 + final VoidCallback onTooltipPressed;
30
31 @override
22 - Widget build(BuildContext context) {
23 - return Stack(children: [
24 - Container(
25 - margin: EdgeInsets.symmetric(horizontal: 16),
26 - width: double.infinity,
27 - decoration: BoxDecoration(
28 - borderRadius: BorderRadius.circular(15),
29 - gradient: LinearGradient(
30 - colors: [
31 - isDarkTheme
32 - ? CustomThemeColors.cardGradientColorPrimaryDark
33 - : CustomThemeColors.cardGradientColorPrimaryLight,
34 - isDarkTheme
35 - ? CustomThemeColors.cardGradientColorSecondaryDark
36 - : CustomThemeColors.cardGradientColorSecondaryLight,
37 - ],
38 - begin: Alignment.topCenter,
39 - end: Alignment.bottomCenter,
32 + Widget build(BuildContext context) => Stack(children: [
33 + Container(
34 + margin: EdgeInsets.symmetric(horizontal: 16),
35 + width: double.infinity,
36 + decoration: BoxDecoration(
37 + borderRadius: BorderRadius.circular(15),
38 + gradient: LinearGradient(
39 + colors: [
40 + isDarkTheme
41 + ? CustomThemeColors.cardGradientColorPrimaryDark
42 + : CustomThemeColors.cardGradientColorPrimaryLight,
43 + isDarkTheme
44 + ? CustomThemeColors.cardGradientColorSecondaryDark
45 + : CustomThemeColors.cardGradientColorSecondaryLight,
46 + ],
47 + begin: Alignment.topCenter,
48 + end: Alignment.bottomCenter,
49 + ),
50 ),
41 - ),
42 - child: Padding(
43 - padding: EdgeInsets.all(20),
44 - child: Column(
45 - children: [
46 - SavingsCard.getAssetBalanceRow(
47 - context,
48 - title: title,
49 - subtitle: collectedInterest,
50 - currency: CryptoCurrency.deuro,
51 - hideSymbol: true,
52 - ),
53 - SizedBox(height: 10),
54 - SavingsCard.getButton(
55 - context,
56 - label: S.of(context).deuro_collect_interest,
57 - onPressed: onCollectInterest,
58 - backgroundColor: Theme.of(context).colorScheme.primary,
59 - color: Theme.of(context).colorScheme.onPrimary,
60 - ),
61 - ],
51 + child: Padding(
52 + padding: EdgeInsets.all(20),
53 + child: Column(
54 + children: [
55 + SavingsCard.getAssetBalanceRow(
56 + context,
57 + title: title,
58 + amount: accruedInterest,
59 + fiatAmount: fiatAccruedInterest,
60 + currency: CryptoCurrency.deuro,
61 + fiatCurrency: fiatCurrency,
62 + hideSymbol: false,
63 + onTooltipPressed: onTooltipPressed
64 + ),
65 + SizedBox(height: 10),
66 + Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [
67 + Expanded(
68 + child: SavingsCard.getButton(
69 + context,
70 + imagePath: 'assets/images/collect_interest.png',
71 + label: S.of(context).deuro_collect_interest,
72 + onPressed: onCollectInterest,
73 + backgroundColor: Theme.of(context).colorScheme.primary,
74 + color: Theme.of(context).colorScheme.onPrimary,
75 + enabled: isEnabled,
76 + ),
77 + ),
78 + SizedBox(width: 12),
79 + Expanded(
80 + child: SavingsCard.getButton(
81 + context,
82 + label: S.of(context).deuro_reinvest_interest,
83 + icon: Icons.account_balance_outlined,
84 + onPressed: onReinvestInterest,
85 + backgroundColor: Theme.of(context).colorScheme.surface,
86 + color: Theme.of(context).colorScheme.onSecondaryContainer,
87 + enabled: isEnabled,
88 + ),
89 + ),
90 + ]),
91 + ],
92 + ),
93 ),
94 ),
64 - ),
65 - ]);
66 - }
95 + ]);
96 }
lib/src/screens/integrations/deuro/widgets/savings_card_widget.dart
+193 -139
@@ -1,21 +1,27 @@
1 import 'dart:math';
2
3 import 'package:auto_size_text/auto_size_text.dart';
4 +import 'package:cake_wallet/entities/fiat_currency.dart';
5 import 'package:cake_wallet/generated/i18n.dart';
6 import 'package:cake_wallet/src/widgets/cake_image_widget.dart';
7 import 'package:cake_wallet/themes/utils/custom_theme_colors.dart';
8 import 'package:cw_core/crypto_currency.dart';
9 +import 'package:flutter/cupertino.dart';
10 import 'package:flutter/material.dart';
11
12 class SavingsCard extends StatelessWidget {
13 final bool isDarkTheme;
14 final bool isEnabled;
15 + final bool isLoading;
16 final String interestRate;
17 final String savingsBalance;
18 + final String? fiatSavingsBalance;
19 + final FiatCurrency? fiatCurrency;
20 final CryptoCurrency currency;
21 final VoidCallback onAddSavingsPressed;
22 final VoidCallback onRemoveSavingsPressed;
23 final VoidCallback onApproveSavingsPressed;
24 + final VoidCallback onTooltipPressed;
25
26 const SavingsCard({
27 super.key,
@@ -26,162 +32,187 @@ class SavingsCard extends StatelessWidget {
32 required this.onAddSavingsPressed,
33 required this.onRemoveSavingsPressed,
34 required this.onApproveSavingsPressed,
35 + required this.onTooltipPressed,
36 this.isEnabled = true,
37 + this.isLoading = false,
38 + this.fiatSavingsBalance,
39 + this.fiatCurrency,
40 });
41
42 @override
43 Widget build(BuildContext context) => Container(
34 - margin: const EdgeInsets.all(15),
35 - decoration: BoxDecoration(
36 - borderRadius: BorderRadius.circular(15),
37 - gradient: LinearGradient(
38 - colors: [
39 - isDarkTheme
40 - ? CustomThemeColors.cardGradientColorPrimaryDark
41 - : CustomThemeColors.cardGradientColorPrimaryLight,
42 - isDarkTheme
43 - ? CustomThemeColors.cardGradientColorSecondaryDark
44 - : CustomThemeColors.cardGradientColorSecondaryLight,
45 - ],
46 - begin: Alignment.topCenter,
47 - end: Alignment.bottomCenter,
44 + margin: const EdgeInsets.all(15),
45 + decoration: BoxDecoration(
46 + borderRadius: BorderRadius.circular(15),
47 + color: Theme.of(context).colorScheme.surfaceContainerLowest,
48 ),
49 - ),
50 - child: Container(
51 - padding: const EdgeInsets.all(20),
52 - child: Column(
53 - children: [
54 - getAssetBalanceRow(context,
55 - title: S.of(context).deuro_savings_balance,
56 - subtitle: savingsBalance,
57 - currency: currency),
58 - Padding(
59 - padding: const EdgeInsets.symmetric(vertical: 10),
60 - child: Row(
61 - children: [
62 - Expanded(
63 - child: Text(
64 - 'Current APR',
65 - style: Theme.of(context).textTheme.bodyMedium?.copyWith(
66 - color:
67 - Theme.of(context).colorScheme.onSurfaceVariant,
68 - fontWeight: FontWeight.w500,
69 - ),
70 - softWrap: true,
71 - ),
72 - ),
73 - Text(
74 - interestRate,
49 + child: Column(children: [
50 + Padding(
51 + padding: const EdgeInsets.only(top: 10, bottom: 10, left: 20, right: 20),
52 + child: Row(
53 + children: [
54 + Expanded(
55 + child: Text(
56 + 'Current APR', // ToDo: Localize
57 style: Theme.of(context).textTheme.bodyMedium?.copyWith(
58 color: Theme.of(context).colorScheme.onSurfaceVariant,
59 fontWeight: FontWeight.w500,
60 ),
61 softWrap: true,
62 ),
63 + ),
64 + Text(
65 + interestRate,
66 + style: Theme.of(context).textTheme.bodyMedium?.copyWith(
67 + color: Theme.of(context).colorScheme.onSurfaceVariant,
68 + fontWeight: FontWeight.w800,
69 + ),
70 + softWrap: true,
71 + ),
72 + ],
73 + ),
74 + ),
75 + Container(
76 + decoration: BoxDecoration(
77 + borderRadius: BorderRadius.circular(15),
78 + gradient: LinearGradient(
79 + colors: [
80 + isDarkTheme
81 + ? CustomThemeColors.cardGradientColorPrimaryDark
82 + : CustomThemeColors.cardGradientColorPrimaryLight,
83 + isDarkTheme
84 + ? CustomThemeColors.cardGradientColorSecondaryDark
85 + : CustomThemeColors.cardGradientColorSecondaryLight,
86 ],
87 + begin: Alignment.topCenter,
88 + end: Alignment.bottomCenter,
89 ),
90 ),
84 - Row(
85 - mainAxisAlignment: MainAxisAlignment.spaceBetween,
86 - children: isEnabled
87 - ? [
88 - Expanded(
89 - child: getButton(
90 - context,
91 - label: S.of(context).deuro_savings_add,
92 - imagePath: 'assets/images/received.png',
93 - onPressed: onAddSavingsPressed,
94 - backgroundColor:
95 - Theme.of(context).colorScheme.primary,
96 - color: Theme.of(context).colorScheme.onPrimary,
97 - ),
98 - ),
99 - SizedBox(width: 12),
100 - Expanded(
101 - child: getButton(
102 - context,
103 - label: S.of(context).deuro_savings_remove,
104 - imagePath: 'assets/images/upload.png',
105 - onPressed: onRemoveSavingsPressed,
106 - backgroundColor:
107 - Theme.of(context).colorScheme.surface,
108 - color: Theme.of(context)
109 - .colorScheme
110 - .onSecondaryContainer,
111 - ),
91 + padding: const EdgeInsets.all(20),
92 + child: Column(
93 + children: [
94 + Padding(
95 + padding: const EdgeInsets.only(bottom: 20),
96 + child: getAssetBalanceRow(
97 + context,
98 + title: S.of(context).deuro_savings_balance,
99 + amount: savingsBalance,
100 + fiatAmount: fiatSavingsBalance,
101 + currency: currency,
102 + fiatCurrency: fiatCurrency,
103 + hideSymbol: false,
104 + onTooltipPressed: onTooltipPressed,
105 + ),
106 + ),
107 + isLoading
108 + ? CupertinoActivityIndicator(color: Theme.of(context).colorScheme.onSurface)
109 + : Row(
110 + mainAxisAlignment: MainAxisAlignment.spaceBetween,
111 + children: isEnabled
112 + ? [
113 + Expanded(
114 + child: getButton(
115 + context,
116 + label: S.of(context).deuro_savings_add,
117 + imagePath: 'assets/images/received.png',
118 + onPressed: onAddSavingsPressed,
119 + backgroundColor: Theme.of(context).colorScheme.primary,
120 + color: Theme.of(context).colorScheme.onPrimary,
121 + ),
122 + ),
123 + SizedBox(width: 12),
124 + Expanded(
125 + child: getButton(
126 + context,
127 + label: S.of(context).deuro_savings_remove,
128 + imagePath: 'assets/images/upload.png',
129 + onPressed: onRemoveSavingsPressed,
130 + backgroundColor: Theme.of(context).colorScheme.surface,
131 + color: Theme.of(context).colorScheme.onSecondaryContainer,
132 + ),
133 + ),
134 + ]
135 + : [
136 + Expanded(
137 + child: getButton(
138 + context,
139 + label: S.of(context).deuro_savings_approve_app,
140 + onPressed: onApproveSavingsPressed,
141 + backgroundColor: Theme.of(context).colorScheme.primary,
142 + color: Theme.of(context).colorScheme.onPrimary,
143 + icon: Icons.check,
144 + ),
145 + )
146 + ],
147 ),
113 - ]
114 - : [
115 - Expanded(
116 - child: getButton(
117 - context,
118 - label: S.of(context).deuro_savings_set_approval,
119 - onPressed: onApproveSavingsPressed,
120 - backgroundColor:
121 - Theme.of(context).colorScheme.primary,
122 - color: Theme.of(context).colorScheme.onPrimary,
123 - ),
124 - )
125 - ],
148 + ],
149 ),
127 - ],
128 - ),
129 - ));
150 + ),
151 + ]),
152 + );
153
154 static Widget getButton(
155 BuildContext context, {
156 required String label,
134 - String? imagePath,
157 required VoidCallback onPressed,
158 required Color backgroundColor,
159 required Color color,
138 - }) =>
139 - Semantics(
140 - label: label,
141 - child: OutlinedButton(
142 - onPressed: onPressed,
143 - style: OutlinedButton.styleFrom(
144 - backgroundColor: backgroundColor,
145 - side: BorderSide(
146 - color: Theme.of(context).colorScheme.outlineVariant.withAlpha(0),
147 - width: 0,
148 - ),
149 - shape:
150 - RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
160 + String? imagePath,
161 + IconData? icon,
162 + bool enabled = true,
163 + double iconSize = 24,
164 + }) {
165 + backgroundColor = enabled ? backgroundColor : backgroundColor.withAlpha(130);
166 + color = enabled ? color : color.withAlpha(130);
167 +
168 + return Semantics(
169 + label: label,
170 + child: OutlinedButton(
171 + onPressed: enabled ? onPressed : null,
172 + style: OutlinedButton.styleFrom(
173 + backgroundColor: backgroundColor,
174 + side: BorderSide(
175 + color: Theme.of(context).colorScheme.outlineVariant.withAlpha(0),
176 + width: 0,
177 ),
152 - child: Container(
153 - padding: const EdgeInsets.symmetric(vertical: 12),
154 - child: Row(
155 - mainAxisAlignment: MainAxisAlignment.center,
156 - children: [
157 - if (imagePath != null) ...[
158 - Image.asset(
159 - imagePath,
160 - height: 30,
161 - width: 30,
162 - color: color,
163 - ),
164 - const SizedBox(width: 8),
165 - ],
166 - Text(
167 - label,
168 - style: Theme.of(context).textTheme.bodyMedium?.copyWith(
169 - color: color,
170 - fontWeight: FontWeight.w700,
171 - ),
172 - ),
178 + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
179 + ),
180 + child: Container(
181 + padding: const EdgeInsets.symmetric(vertical: 12),
182 + child: Row(
183 + mainAxisAlignment: MainAxisAlignment.center,
184 + children: [
185 + if (imagePath != null) ...[
186 + Image.asset(imagePath, height: iconSize, width: iconSize, color: color),
187 + const SizedBox(width: 8),
188 ],
174 - ),
189 + if (icon != null) ...[
190 + Icon(icon, size: iconSize, color: color),
191 + const SizedBox(width: 8),
192 + ],
193 + Text(
194 + label,
195 + style: Theme.of(context).textTheme.bodyMedium?.copyWith(
196 + color: color,
197 + fontWeight: FontWeight.w700,
198 + ),
199 + ),
200 + ],
201 ),
202 ),
177 - );
203 + ),
204 + );
205 + }
206
207 static Widget getAssetBalanceRow(
208 BuildContext context, {
209 required String title,
182 - required String subtitle,
210 + required String amount,
211 required CryptoCurrency currency,
212 bool hideSymbol = true,
213 + VoidCallback? onTooltipPressed,
214 + FiatCurrency? fiatCurrency,
215 + String? fiatAmount,
216 }) =>
217 Row(
218 mainAxisAlignment: MainAxisAlignment.spaceBetween,
@@ -190,16 +221,32 @@ class SavingsCard extends StatelessWidget {
221 Column(
222 crossAxisAlignment: CrossAxisAlignment.start,
223 children: [
193 - Text(
194 - title,
195 - style: Theme.of(context).textTheme.bodySmall?.copyWith(
196 - color: Theme.of(context).colorScheme.onSurfaceVariant,
197 - height: 1,
224 + Row(
225 + children: [
226 + Text(
227 + title,
228 + style: Theme.of(context).textTheme.bodySmall?.copyWith(
229 + color: Theme.of(context).colorScheme.onSurfaceVariant,
230 + height: 1,
231 + ),
232 + ),
233 + if (onTooltipPressed != null)
234 + Padding(
235 + padding: EdgeInsets.only(left: 4),
236 + child: InkWell(
237 + onTap: onTooltipPressed,
238 + child: Icon(
239 + CupertinoIcons.question_circle,
240 + size: 13,
241 + color: Theme.of(context).colorScheme.onSurfaceVariant,
242 + ),
243 + ),
244 ),
245 + ],
246 ),
247 SizedBox(height: 6),
248 AutoSizeText(
202 - subtitle,
249 + amount,
250 style: Theme.of(context).textTheme.titleLarge?.copyWith(
251 color: Theme.of(context).colorScheme.onSurface,
252 fontWeight: FontWeight.w900,
@@ -209,10 +256,21 @@ class SavingsCard extends StatelessWidget {
256 maxLines: 1,
257 textAlign: TextAlign.start,
258 ),
259 + if (fiatCurrency != null)
260 + AutoSizeText(
261 + "${fiatCurrency.title} $fiatAmount",
262 + style: Theme.of(context).textTheme.titleLarge?.copyWith(
263 + color: Theme.of(context).colorScheme.onSurfaceVariant,
264 + fontWeight: FontWeight.w500,
265 + fontSize: 16,
266 + height: 1.5,
267 + ),
268 + maxLines: 1,
269 + textAlign: TextAlign.start,
270 + ),
271 ],
272 ),
273 SizedBox(
215 - //width: min(MediaQuery.of(context).size.width * 0.2, 100),
274 child: Center(
275 child: Column(
276 children: [
@@ -225,15 +283,11 @@ class SavingsCard extends StatelessWidget {
283 width: 30.0,
284 child: Center(
285 child: Text(
228 - currency.title
229 - .substring(0, min(currency.title.length, 2)),
230 - style:
231 - Theme.of(context).textTheme.bodySmall?.copyWith(
232 - fontSize: 11,
233 - color: Theme.of(context)
234 - .colorScheme
235 - .onSurfaceVariant,
236 - ),
286 + currency.title.substring(0, min(currency.title.length, 2)),
287 + style: Theme.of(context).textTheme.bodySmall?.copyWith(
288 + fontSize: 11,
289 + color: Theme.of(context).colorScheme.onSurfaceVariant,
290 + ),
291 ),
292 ),
293 decoration: BoxDecoration(
@@ -243,7 +297,7 @@ class SavingsCard extends StatelessWidget {
297 ),
298 ),
299 if (!hideSymbol) ...[
246 - const SizedBox(height: 10),
300 + const SizedBox(height: 3),
301 Text(
302 currency.title,
303 style: Theme.of(context).textTheme.bodyMedium?.copyWith(
lib/src/screens/integrations/deuro/widgets/savings_edit_sheet.dart
+108 -18
@@ -1,24 +1,39 @@
1 import 'package:auto_size_text/auto_size_text.dart';
2 import 'package:cake_wallet/generated/i18n.dart';
3 -import 'package:cake_wallet/src/screens/base_page.dart';
3 import 'package:cake_wallet/src/screens/integrations/deuro/widgets/numpad.dart';
4 +import 'package:cake_wallet/src/widgets/bottom_sheet/base_bottom_sheet_widget.dart';
5 import 'package:cake_wallet/src/widgets/primary_button.dart';
6 import 'package:flutter/material.dart';
7
8 -class SavingEditPage extends BasePage {
9 - final bool isAdding;
8 +class SavingsEditSheet extends BaseBottomSheet {
9 + final String? balance;
10 + final String? balanceTitle;
11
11 - SavingEditPage({required this.isAdding});
12 + const SavingsEditSheet({
13 + required super.titleText,
14 + super.titleIconPath,
15 + this.balance,
16 + this.balanceTitle,
17 + });
18
13 - String get title =>
14 - isAdding ? S.current.deuro_savings_add : S.current.deuro_savings_remove;
19 + @override
20 + Widget contentWidget(BuildContext context) => SizedBox(
21 + height: 600,
22 + child: _SavingsEditBody(
23 + balance: balance,
24 + balanceTitle: balanceTitle,
25 + ),
26 + );
27
28 @override
17 - Widget body(BuildContext context) => _SavingsEditBody();
29 + Widget footerWidget(BuildContext context) => SizedBox.shrink();
30 }
31
32 class _SavingsEditBody extends StatefulWidget {
21 - const _SavingsEditBody();
33 + final String? balance;
34 + final String? balanceTitle;
35 +
36 + const _SavingsEditBody({this.balance, this.balanceTitle});
37
38 @override
39 State<StatefulWidget> createState() => _SavingsEditBodyState();
@@ -27,8 +42,7 @@ class _SavingsEditBody extends StatefulWidget {
42 class _SavingsEditBodyState extends State<_SavingsEditBody> {
43 @override
44 void initState() {
30 - WidgetsBinding.instance
31 - .addPostFrameCallback((_) => _numpadFocusNode.requestFocus());
45 + WidgetsBinding.instance.addPostFrameCallback((_) => _numpadFocusNode.requestFocus());
46 super.initState();
47 }
48
@@ -51,31 +65,36 @@ class _SavingsEditBodyState extends State<_SavingsEditBody> {
65 child: AutoSizeText(
66 "${amount.toString()} dEuro",
67 maxLines: 1,
54 - maxFontSize: 60,
68 + maxFontSize: 32,
69 style: Theme.of(context).textTheme.headlineMedium?.copyWith(
70 fontWeight: FontWeight.w600,
57 - fontSize: 60,
71 + fontSize: 32,
72 color: Theme.of(context).colorScheme.onSurface,
73 ),
74 textAlign: TextAlign.center,
75 ),
76 ),
77 )),
78 + if (widget.balance != null && widget.balanceTitle != null) ...[
79 + Divider(),
80 + AssetBalanceRow(
81 + title: widget.balanceTitle!,
82 + amount: widget.balance!,
83 + onAllPressed: () => setState(() => amount = widget.balance!),
84 + ),
85 + ],
86 NumberPad(
87 focusNode: _numpadFocusNode,
88 onNumberPressed: (i) => setState(
89 () => amount = amount == '0' ? i.toString() : '${amount}${i}',
90 ),
91 onDeletePressed: () => setState(
70 - () => amount = amount.length > 1
71 - ? amount.substring(0, amount.length - 1)
72 - : '0',
92 + () => amount = amount.length > 1 ? amount.substring(0, amount.length - 1) : '0',
93 ),
74 - onDecimalPressed: () =>
75 - setState(() => amount = '${amount.replaceAll('.', '')}.'),
94 + onDecimalPressed: () => setState(() => amount = '${amount.replaceAll('.', '')}.'),
95 ),
96 Padding(
78 - padding: const EdgeInsets.fromLTRB(16, 12, 16, 34),
97 + padding: const EdgeInsets.fromLTRB(16, 12, 16, 0),
98 child: LoadingPrimaryButton(
99 onPressed: () => Navigator.pop(context, amount),
100 text: S.of(context).confirm,
@@ -88,3 +107,74 @@ class _SavingsEditBodyState extends State<_SavingsEditBody> {
107 ]),
108 );
109 }
110 +
111 +class AssetBalanceRow extends StatelessWidget {
112 + final String title;
113 + final String amount;
114 + final VoidCallback onAllPressed;
115 +
116 + const AssetBalanceRow({
117 + super.key,
118 + required this.title,
119 + required this.amount,
120 + required this.onAllPressed,
121 + });
122 +
123 + @override
124 + Widget build(BuildContext context) => Padding(
125 + padding: const EdgeInsets.fromLTRB(20, 10, 20, 10),
126 + child: Row(
127 + mainAxisAlignment: MainAxisAlignment.spaceBetween,
128 + crossAxisAlignment: CrossAxisAlignment.center,
129 + children: [
130 + Column(
131 + crossAxisAlignment: CrossAxisAlignment.start,
132 + children: [
133 + Row(
134 + children: [
135 + Text(
136 + title,
137 + style: Theme.of(context).textTheme.bodySmall?.copyWith(
138 + color: Theme.of(context).colorScheme.onSurfaceVariant,
139 + height: 1,
140 + ),
141 + ),
142 + ],
143 + ),
144 + SizedBox(height: 6),
145 + AutoSizeText(
146 + amount,
147 + style: Theme.of(context).textTheme.bodyLarge?.copyWith(
148 + color: Theme.of(context).colorScheme.onSurface,
149 + fontWeight: FontWeight.w400,
150 + height: 1,
151 + ),
152 + maxLines: 1,
153 + textAlign: TextAlign.start,
154 + ),
155 + ],
156 + ),
157 + SizedBox(
158 + child: Center(
159 + child: InkWell(
160 + onTap: onAllPressed,
161 + child: Container(
162 + decoration: BoxDecoration(
163 + borderRadius: BorderRadius.circular(20),
164 + color: Theme.of(context).colorScheme.surfaceContainer,
165 + ),
166 + padding: EdgeInsets.fromLTRB(15, 10, 15, 10),
167 + child: Text(
168 + S.of(context).all,
169 + style: Theme.of(context).textTheme.bodyMedium?.copyWith(
170 + color: Theme.of(context).colorScheme.onSurface,
171 + ),
172 + ),
173 + ),
174 + ),
175 + ),
176 + ),
177 + ],
178 + ),
179 + );
180 +}
lib/src/widgets/bottom_sheet/base_bottom_sheet_widget.dart
+3 -2
@@ -3,8 +3,9 @@ import 'package:flutter/material.dart';
3 abstract class BaseBottomSheet extends StatelessWidget {
4 final String titleText;
5 final String? titleIconPath;
6 + final double maxHeight;
7
7 - const BaseBottomSheet({required this.titleText, this.titleIconPath});
8 + const BaseBottomSheet({required this.titleText, this.titleIconPath, this.maxHeight = 900});
9
10 Widget headerWidget(BuildContext context) {
11 return Column(
@@ -59,7 +60,7 @@ abstract class BaseBottomSheet extends StatelessWidget {
60 @override
61 Widget build(BuildContext context) {
62 return ConstrainedBox(
62 - constraints: BoxConstraints(maxHeight: 600),
63 + constraints: BoxConstraints(maxHeight: maxHeight),
64 child: ClipRRect(
65 borderRadius: const BorderRadius.only(
66 topLeft: Radius.circular(30.0), topRight: Radius.circular(30.0)),
lib/src/widgets/bottom_sheet/confirm_sending_bottom_sheet_widget.dart
+40 -1
@@ -22,6 +22,7 @@ class ConfirmSendingBottomSheet extends BaseBottomSheet {
22 final String fee;
23 final String feeValue;
24 final String feeFiatAmount;
25 + final String? explanation;
26 final List<Output> outputs;
27 final VoidCallback onSlideComplete;
28 final WalletType walletType;
@@ -46,6 +47,7 @@ class ConfirmSendingBottomSheet extends BaseBottomSheet {
47 required this.onSlideComplete,
48 required this.walletType,
49 this.change,
50 + this.explanation,
51 this.isOpenCryptoPay = false,
52 Key? key,
53 }) : showScrollbar = outputs.length > 3,
@@ -87,9 +89,18 @@ class ConfirmSendingBottomSheet extends BaseBottomSheet {
89 tileBackgroundColor: tileBackgroundColor,
90 ),
91 ),
92 + if (explanation != null)
93 + Padding(
94 + padding: const EdgeInsets.only(bottom: 8),
95 + child: StandardInfoTile(
96 + value: explanation!,
97 + itemTitleTextStyle: itemTitleTextStyle,
98 + tileBackgroundColor: tileBackgroundColor,
99 + ),
100 + ),
101 StandardTile(
102 itemTitle: amount,
92 - itemValue: amountValue + ' ${currency.title}',
103 + itemValue: '$amountValue ${currency.title}',
104 itemTitleTextStyle: itemTitleTextStyle,
105 itemSubTitle: fiatAmountValue,
106 itemSubTitleTextStyle: itemSubTitleTextStyle,
@@ -260,6 +271,34 @@ class StandardTile extends StatelessWidget {
271 }
272 }
273
274 +class StandardInfoTile extends StatelessWidget {
275 + const StandardInfoTile({
276 + super.key,
277 + required this.value,
278 + required this.itemTitleTextStyle,
279 + required this.tileBackgroundColor,
280 + });
281 +
282 + final String value;
283 + final TextStyle itemTitleTextStyle;
284 + final Color tileBackgroundColor;
285 +
286 + @override
287 + Widget build(BuildContext context) => Semantics(
288 + container: true,
289 + label: value,
290 + child: Container(
291 + padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 8),
292 + decoration: BoxDecoration(
293 + borderRadius: BorderRadius.circular(10),
294 + color: tileBackgroundColor,
295 + ),
296 + width: double.infinity,
297 + child: Text(value, style: itemTitleTextStyle),
298 + ),
299 + );
300 +}
301 +
302 class AddressTile extends StatelessWidget {
303 const AddressTile({
304 super.key,
lib/src/widgets/bottom_sheet/info_bottom_sheet_widget.dart
+11 -3
@@ -39,6 +39,8 @@ class InfoBottomSheet extends BaseBottomSheet {
39 final VoidCallback? actionRightButton;
40 final Key? rightActionButtonKey;
41 final Key? leftActionButtonKey;
42 + final double height;
43 + final double? contentImageSize;
44
45 InfoBottomSheet({
46 required String titleText,
@@ -46,9 +48,11 @@ class InfoBottomSheet extends BaseBottomSheet {
48 required this.currentTheme,
49 this.contentImage,
50 this.contentImageColor,
51 + this.contentImageSize,
52 this.content,
53 this.isTwoAction = false,
54 this.showDontAskMeCheckbox = false,
55 + this.height = 200,
56 this.onCheckboxChanged,
57 this.actionButtonText,
58 this.actionButton,
@@ -59,18 +63,22 @@ class InfoBottomSheet extends BaseBottomSheet {
63 this.actionRightButton,
64 this.rightActionButtonKey,
65 this.leftActionButtonKey,
62 - }) : super(titleText: titleText, titleIconPath: titleIconPath);
66 + double maxHeight = 900,
67 + }) : super(titleText: titleText, titleIconPath: titleIconPath, maxHeight: maxHeight);
68
69 @override
70 Widget contentWidget(BuildContext context) {
71 return SizedBox(
67 - height: 200,
72 + height: height,
73 child: Column(
74 children: [
75 if (contentImage != null)
76 Expanded(
77 flex: 4,
73 - child: getImage(contentImage!, imageColor: contentImageColor),
78 + child: SizedBox(
79 + width: contentImageSize,
80 + child: getImage(contentImage!, imageColor: contentImageColor),
81 + ),
82 )
83 else
84 Container(),
lib/view_model/integrations/deuro_view_model.dart
+85 -34
@@ -1,4 +1,5 @@
1 import 'package:cake_wallet/core/execution_state.dart';
2 +import 'package:cake_wallet/core/utilities.dart';
3 import 'package:cake_wallet/entities/calculate_fiat_amount.dart';
4 import 'package:cake_wallet/entities/fiat_currency.dart';
5 import 'package:cake_wallet/ethereum/ethereum.dart';
@@ -8,10 +9,9 @@ import 'package:cake_wallet/store/settings_store.dart';
9 import 'package:cake_wallet/view_model/dashboard/balance_view_model.dart';
10 import 'package:cake_wallet/view_model/send/send_view_model_state.dart';
11 import 'package:cw_core/crypto_currency.dart';
12 +import 'package:cw_core/parse_fixed.dart';
13 import 'package:cw_core/pending_transaction.dart';
12 -import 'package:cw_core/utils/print_verbose.dart';
14 import 'package:cw_core/wallet_type.dart';
14 -import 'package:cw_core/parse_fixed.dart';
15 import 'package:mobx/mobx.dart';
16
17 part 'deuro_view_model.g.dart';
@@ -21,62 +21,47 @@ class DEuroViewModel = DEuroViewModelBase with _$DEuroViewModel;
21 abstract class DEuroViewModelBase with Store {
22 final AppStore _appStore;
23
24 - DEuroViewModelBase(this._appStore, this.balanceViewModel, this._settingsStore, this._fiatConversationStore) {
24 + DEuroViewModelBase(
25 + this._appStore,
26 + this.balanceViewModel,
27 + this._settingsStore,
28 + this._fiatConversationStore,
29 + ) {
30 reloadInterestRate();
31 reloadSavingsUserData();
32 }
33 +
34 final BalanceViewModel balanceViewModel;
35 final SettingsStore _settingsStore;
36 final FiatConversionStore _fiatConversationStore;
31 -
37 +
38 @computed
39 bool get isFiatDisabled => balanceViewModel.isFiatDisabled;
40
41 @computed
42 String get pendingTransactionFiatAmountFormatted =>
37 - isFiatDisabled ? '' : pendingTransactionFiatAmount + ' ' + fiat.title;
43 + isFiatDisabled ? '' : '$pendingTransactionFiatAmount ${fiat.title}';
44
45 @computed
46 String get pendingTransactionFeeFiatAmountFormatted =>
41 - isFiatDisabled ? '' : pendingTransactionFeeFiatAmount + ' ' + fiat.title;
47 + isFiatDisabled ? '' : '$pendingTransactionFeeFiatAmount ${fiat.title}';
48
49 FiatCurrency get fiat => _settingsStore.fiatCurrency;
50
45 -
51 @computed
47 - String get pendingTransactionFiatAmount {
48 - if (transaction == null) {
49 - return '0.00';
50 - }
51 -
52 - try {
53 - final keys = _fiatConversationStore.prices.keys.toList();
54 - CryptoCurrency deuro = CryptoCurrency.deuro;
55 - for (var i = 0; i < keys.length; i++) {
56 - if (keys[i].title == "DEURO") {
57 - deuro = keys[i];
58 - }
59 - }
60 - final fiat = calculateFiatAmount(
61 - price: _fiatConversationStore.prices[deuro]!,
62 - cryptoAmount: transaction!.amountFormatted);
63 - return fiat;
64 - } catch (e) {
65 - printV(e);
66 - return '0.02';
67 - }
68 - }
52 + String get pendingTransactionFiatAmount =>
53 + transaction == null ? '0.00' : _getDEuroFiatAmount(transaction!.amountFormatted);
54
55 @computed
56 String get pendingTransactionFeeFiatAmount {
57 try {
58 if (transaction != null) {
59 final currency = CryptoCurrency.eth;
75 - final fiat = calculateFiatAmount(
76 - price: _fiatConversationStore.prices[currency]!,
77 - cryptoAmount: transaction!.feeFormatted.substring(0, transaction!.feeFormatted.indexOf(" ")),
78 - );
79 - return fiat;
60 + return calculateFiatAmount(
61 + price: _fiatConversationStore.prices[currency]!,
62 + cryptoAmount:
63 + transaction!.feeFormatted.substring(0, transaction!.feeFormatted.indexOf(" ")),
64 + );
65 } else {
66 return '0.00';
67 }
@@ -85,9 +70,20 @@ abstract class DEuroViewModelBase with Store {
70 }
71 }
72
73 + @computed
74 + String get accountBalance {
75 + final dEuroKey = balanceViewModel.balances.keys
76 + .firstWhereOrNull((e) => e.title == CryptoCurrency.deuro.title);
77 + if (dEuroKey == null) return '0.00';
78 + return balanceViewModel.balances[dEuroKey]?.availableBalance ?? '0.00';
79 + }
80 +
81 @observable
82 String savingsBalance = '0.00';
83
84 + @computed
85 + String get fiatSavingsBalance => _getDEuroFiatAmount(savingsBalance);
86 +
87 @observable
88 ExecutionState state = InitialExecutionState();
89
@@ -97,12 +93,21 @@ abstract class DEuroViewModelBase with Store {
93 @observable
94 String accruedInterest = '0.00';
95
96 + @computed
97 + String get fiatAccruedInterest => _getDEuroFiatAmount(accruedInterest);
98 +
99 @observable
100 BigInt approvedTokens = BigInt.zero;
101
102 @computed
103 bool get isEnabled => approvedTokens > BigInt.zero;
104
105 + @observable
106 + bool isLoading = true;
107 +
108 + @observable
109 + DEuroActionType actionType = DEuroActionType.none;
110 +
111 @observable
112 PendingTransaction? transaction = null;
113
@@ -122,6 +127,7 @@ abstract class DEuroViewModelBase with Store {
127 accruedInterest = ethereum!
128 .formatterEthereumAmountToDouble(amount: await accruedInterestRaw)
129 .toStringAsFixed(6);
130 + isLoading = false;
131 }
132
133 @action
@@ -133,6 +139,11 @@ abstract class DEuroViewModelBase with Store {
139
140 @action
141 Future<void> prepareApproval() async {
142 + final ethBalance = balanceViewModel.balances[CryptoCurrency.eth]?.availableBalance ?? "0";
143 + if ((double.tryParse(ethBalance) ?? 0) == 0) {
144 + state = NoEtherState();
145 + return;
146 + }
147 try {
148 state = TransactionCommitting();
149 final priority = _appStore.settingsStore.priority[WalletType.ethereum]!;
@@ -149,6 +160,7 @@ abstract class DEuroViewModelBase with Store {
160 state = TransactionCommitting();
161 final amount = parseFixed(amountRaw, 18);
162 final priority = _appStore.settingsStore.priority[WalletType.ethereum]!;
163 + actionType = isAdding ? DEuroActionType.deposit : DEuroActionType.withdraw;
164 transaction = await (isAdding
165 ? ethereum!.addDEuroSaving(_appStore.wallet!, amount, priority)
166 : ethereum!.removeDEuroSaving(_appStore.wallet!, amount, priority));
@@ -160,6 +172,18 @@ abstract class DEuroViewModelBase with Store {
172
173 Future<void> prepareCollectInterest() => prepareSavingsEdit(accruedInterest, false);
174
175 + Future<void> prepareReinvestInterest() async {
176 + try {
177 + state = TransactionCommitting();
178 + actionType = DEuroActionType.reinvest;
179 + final priority = _appStore.settingsStore.priority[WalletType.ethereum]!;
180 + transaction = await ethereum!.reinvestDEuroInterest(_appStore.wallet!, priority);
181 + state = InitialExecutionState();
182 + } catch (e) {
183 + state = FailureState(e.toString());
184 + }
185 + }
186 +
187 @action
188 Future<void> commitTransaction() async {
189 if (transaction != null) {
@@ -167,6 +191,7 @@ abstract class DEuroViewModelBase with Store {
191 state = TransactionCommitting();
192 await transaction!.commit();
193 transaction = null;
194 + actionType = DEuroActionType.none;
195 reloadSavingsUserData();
196 state = TransactionCommitted();
197 } catch (e) {
@@ -194,6 +219,32 @@ abstract class DEuroViewModelBase with Store {
219 void dismissTransaction() {
220 transaction = null;
221 approvalTransaction = null;
222 + actionType = DEuroActionType.none;
223 state = InitialExecutionState();
224 }
225 +
226 + String _getDEuroFiatAmount(String amount) {
227 + try {
228 + CryptoCurrency deuro = CryptoCurrency.deuro;
229 + final keys = _fiatConversationStore.prices.keys.toList();
230 + for (final key in keys) {
231 + if (key.title == "DEURO") deuro = key;
232 + }
233 + return calculateFiatAmount(
234 + price: _fiatConversationStore.prices[deuro]!,
235 + cryptoAmount: amount,
236 + );
237 + } catch (_) {
238 + return '0.00';
239 + }
240 + }
241 +}
242 +
243 +class NoEtherState extends ExecutionState {}
244 +
245 +enum DEuroActionType {
246 + deposit,
247 + withdraw,
248 + reinvest,
249 + none;
250 }
res/values/strings_ar.arb
+11
@@ -245,14 +245,24 @@
245 "descending": "النزول",
246 "description": "ﻒﺻﻭ",
247 "destination_tag": "علامة الوجهة:",
248 + "deuro_about_deuro": "حول ديورو",
249 "deuro_collect_interest": "يجمع",
250 + "deuro_reinvest_interest": "إعادة الاستثمار",
251 "deuro_savings": "الادخار ديورو",
252 "deuro_savings_add": "إيداع",
253 + "deuro_savings_approve_app": "الموافقة على التطبيق",
254 + "deuro_savings_approve_app_description": "اسمح لعقد Deuro Smart بإدارة رموز Deuro الخاصة بك من أجل الادخار ، ولكن ليس القدرة على إرسال أو أخذ Deuro الخاص بك.",
255 + "deuro_savings_available_to_add": "متاح للإضافة",
256 + "deuro_savings_available_to_remove": "متاح لإزالة",
257 "deuro_savings_balance": "توازن الادخار",
258 + "deuro_savings_balance_tooltip": "هذا يمثل رصيد مدخراتك الحالي ، والذي سيحقق الفائدة مع مرور الوقت. يمكنك إيداع أو سحب Deuro الخاص بك في أي وقت معين.",
259 "deuro_savings_collect_interest": "جمع الاهتمام",
260 + "deuro_savings_collect_interest_tooltip": "يمثل هذا اهتمامك الحالي المكتسب ، والذي يمكنك جمعه في رصيد Deuro الخاص بك في أي وقت.",
261 "deuro_savings_remove": "ينسحب",
262 "deuro_savings_set_approval": "تعيين الموافقة",
263 "deuro_savings_subtitle": "كسب ما يصل إلى 10 ٪ فائدة على مقتنيات Deuro Stablecoin",
264 + "deuro_savings_welcome_description": "Deuro هو stablecoin غير مركزي بالكامل ، مضمونة مربوطة إلى اليورو-آمنة ، متعددة الاستخدامات ، مقاومة للرقابة دون الاضطرار إلى الاعتماد على أوراكليس. 1 ديورو = 1 يورو.",
265 + "deuro_tooltip_no_eth": "من أجل تمكين Deuro ، يجب أن يكون لديك ETH في محفظتك.",
266 "deuro_tx_commited_content": "قد يستغرق الأمر بضع ثوانٍ حتى يتم تأكيد المعاملة وينعكس على الشاشة",
267 "device_is_signing": "الجهاز يوقع",
268 "dfx_option_description": "شراء التشفير مع EUR & CHF. لعملاء البيع بالتجزئة والشركات في أوروبا",
@@ -1077,6 +1087,7 @@
1087 "walletConnect": "WalletConnect",
1088 "wallets": "المحافظ",
1089 "warning": "تحذير",
1090 + "website": "موقع إلكتروني",
1091 "welcome": "مرحباً",
1092 "welcome_subtitle_new_wallet": "إذا كنت ترغب في البدء من جديد ، فانقر فوق إنشاء محفظة جديدة أدناه وستكون خارج السباقات.",
1093 "welcome_subtitle_restore_wallet": "إذا كان لديك محفظة موجودة تريد إحضارها إلى كعكة ، فما عليك سوى اختيار استعادة المحفظة الموجودة وسنمشيك خلال العملية.",
res/values/strings_bg.arb
+11
@@ -245,14 +245,24 @@
245 "descending": "Низходящ",
246 "description": "Описание",
247 "destination_tag": "Destination tag:",
248 + "deuro_about_deuro": "За Деуро",
249 "deuro_collect_interest": "Събиране",
250 + "deuro_reinvest_interest": "Реинвестиране",
251 "deuro_savings": "Спестявания на Деуро",
252 "deuro_savings_add": "Депозит",
253 + "deuro_savings_approve_app": "Одобрете приложението",
254 + "deuro_savings_approve_app_description": "Позволете на интелигентния договор на Deuro да управлява вашите маркери Deuro за спестявания, но не и възможността да изпращате или вземете вашето Deuro.",
255 + "deuro_savings_available_to_add": "На разположение за добавяне",
256 + "deuro_savings_available_to_remove": "На разположение за премахване",
257 "deuro_savings_balance": "Спестотен баланс",
258 + "deuro_savings_balance_tooltip": "Това представлява текущия ви спестовен баланс, което ще натрупа лихва във времето. Можете да депозирате или изтеглите вашето Deuro във всеки даден момент.",
259 "deuro_savings_collect_interest": "Събиране на интерес",
260 + "deuro_savings_collect_interest_tooltip": "Това представлява настоящата ви спечелена лихва, която можете да съберете в баланса на Deuro по всяко време.",
261 "deuro_savings_remove": "Оттегляне",
262 "deuro_savings_set_approval": "Задайте одобрение",
263 "deuro_savings_subtitle": "Печелете до 10% лихва за вашите Deuro Stablecoin Holdings",
264 + "deuro_savings_welcome_description": "Deuro е напълно децентрализиран, колатерализиран стабилност, привързан към еврото-сигурно, универсално и резистентно на цензура, без да се налага да разчита на оракули. 1 Deuro = 1 евро.",
265 + "deuro_tooltip_no_eth": "За да активирате Deuro, трябва да имате ETH в портфейла си.",
266 "deuro_tx_commited_content": "Може да отнеме няколко секунди, за да може транзакцията да се потвърди и да бъде отразена на екрана",
267 "device_is_signing": "Устройството подписва",
268 "dfx_option_description": "Купете криптовалута с Eur & CHF. За търговски и корпоративни клиенти в Европа",
@@ -1077,6 +1087,7 @@
1087 "walletConnect": "WalletConnect",
1088 "wallets": "Портфейли",
1089 "warning": "Внимание",
1090 + "website": "Уебсайт",
1091 "welcome": "Добре дошли",
1092 "welcome_subtitle_new_wallet": "Ако искате да стартирате свеж, докоснете Създайте нов портфейл по -долу и ще се откажете от състезанията.",
1093 "welcome_subtitle_restore_wallet": "Ако имате съществуващ портфейл, който искате да внесете в тортата, просто изберете възстановяване на съществуващия портфейл и ще ви преведем през процеса.",
res/values/strings_cs.arb
+11
@@ -245,14 +245,24 @@
245 "descending": "Klesající",
246 "description": "Popis",
247 "destination_tag": "Destination Tag:",
248 + "deuro_about_deuro": "O Deuro",
249 "deuro_collect_interest": "Sbírat",
250 + "deuro_reinvest_interest": "Reinvest",
251 "deuro_savings": "dEuro úspory",
252 "deuro_savings_add": "Vklad",
253 + "deuro_savings_approve_app": "Schválit aplikaci",
254 + "deuro_savings_approve_app_description": "Nechte deuro inteligentní smlouvu spravovat vaše deuro tokeny pro úspory, ale ne schopnost poslat nebo vzít svůj deuro.",
255 + "deuro_savings_available_to_add": "K dispozici k přidání",
256 + "deuro_savings_available_to_remove": "K dispozici k odstranění",
257 "deuro_savings_balance": "Úspora zůstatek",
258 + "deuro_savings_balance_tooltip": "To představuje váš současný zůstatek úspor, který v průběhu času narůstá úrok. Deuro můžete vložit nebo stáhnout v daném okamžiku.",
259 "deuro_savings_collect_interest": "Sbírat zájem",
260 + "deuro_savings_collect_interest_tooltip": "To představuje váš současný vydělaný úrok, který můžete kdykoli shromáždit do rovnováhy Deuro.",
261 "deuro_savings_remove": "Odstoupit",
262 "deuro_savings_set_approval": "Stanovit schválení",
263 "deuro_savings_subtitle": "Získejte až 10% úrok z vašeho Deuro Stablecoin Holdings",
264 + "deuro_savings_welcome_description": "Deuro je plně decentralizovaný, kolateralizovaný stablecoin navázaný na euro-bezpečný, všestranný a cenzurní odolný vůči, aniž by se musel spoléhat na věštcové. 1 deuro = 1 euro.",
265 + "deuro_tooltip_no_eth": "Chcete -li povolit Deuro, musíte mít v peněžence ETH.",
266 "deuro_tx_commited_content": "Transakce může trvat několik sekund, aby se potvrdila a odrážela se na obrazovce",
267 "device_is_signing": "Zařízení se podpisu",
268 "dfx_option_description": "Koupit krypto s EUR & CHF. Pro maloobchodní a firemní zákazníky v Evropě",
@@ -1077,6 +1087,7 @@
1087 "walletConnect": "WalletConnect",
1088 "wallets": "Peněženky",
1089 "warning": "Varování",
1090 + "website": "Web",
1091 "welcome": "Vítejte",
1092 "welcome_subtitle_new_wallet": "Pokud chcete začít čerstvě, klepněte na Vytvořit novou peněženku níže a budete na závodech.",
1093 "welcome_subtitle_restore_wallet": "Pokud máte existující peněženku, kterou chcete přinést do dortu, jednoduše si vyberte obnovení stávající peněženky a my vás projdeme procesem.",
res/values/strings_de.arb
+11
@@ -245,14 +245,24 @@
245 "descending": "Absteigend",
246 "description": "Beschreibung",
247 "destination_tag": "Ziel-Tag:",
248 + "deuro_about_deuro": "Über dEURO",
249 "deuro_collect_interest": "Auszahlen",
250 + "deuro_reinvest_interest": "Reinvestieren",
251 "deuro_savings": "dEuro-Savings",
252 "deuro_savings_add": "Einzahlen",
253 + "deuro_savings_approve_app": "App genehmigen",
254 + "deuro_savings_approve_app_description": "Erlauben Sie dem dEURO Smart Contract, Ihre dEURO-Token zu verwalten.",
255 + "deuro_savings_available_to_add": "Verfügbar zum Hinzufügen",
256 + "deuro_savings_available_to_remove": "Verfügbar zum Entfernen",
257 "deuro_savings_balance": "Sparguthaben",
258 + "deuro_savings_balance_tooltip": "Dies stellt Ihr aktuelles Sparbetrag dar, der im Laufe der Zeit Zinsen generiert. Sie können Ihren dEURO zu jedem Zeitpunkt ein- oder auszahlen.",
259 "deuro_savings_collect_interest": "Interesse sammeln",
260 + "deuro_savings_collect_interest_tooltip": "Dies stellt Ihre aktuell verdiente Zinsen dar, diese Sie können jederzeit auszahlen.",
261 "deuro_savings_remove": "Auszahlen",
262 "deuro_savings_set_approval": "Genehmigung festlegen",
263 "deuro_savings_subtitle": "Verdienen Sie bis zu 10% Zinsen für Ihre dEuro Stablecoin Holdings",
264 + "deuro_savings_welcome_description": "dEuro ist ein vollständig dezentraler, gesicherter Stablecoin, der an den Euro gebunden ist, vielseitig und zensurresistent, ohne sich auf Orakel verlassen zu müssen. 1 dEuro = 1 Euro.",
265 + "deuro_tooltip_no_eth": "Um dEURO zu aktivieren, müssen Sie ETH in Ihrer Wallet haben.",
266 "deuro_tx_commited_content": "Es kann ein paar Sekunden dauern, bis die Transaktion bestätigt und auf dem Bildschirm angezeigt",
267 "device_is_signing": "Das Gerät unterschreibt",
268 "dfx_option_description": "Kaufen Sie Krypto mit EUR & CHF. Für Einzelhandel und Unternehmenskunden in Europa",
@@ -1080,6 +1090,7 @@
1090 "walletConnect": "WalletConnect",
1091 "wallets": "Wallets",
1092 "warning": "Warnung",
1093 + "website": "Webseite",
1094 "welcome": "Willkommen",
1095 "welcome_subtitle_new_wallet": "Wenn Sie frisch anfangen möchten, tippen Sie unten neue Wallet und schon sind Sie bereit.",
1096 "welcome_subtitle_restore_wallet": "Wenn Sie über eine vorhandene Wallet verfügen, die Sie in Cake Wallet öffnen möchten, drücken Sie auf Vorhandene Wallet wiederherstellen und wir werden Sie durch den Prozess führen.",
res/values/strings_en.arb
+12 -1
@@ -245,14 +245,24 @@
245 "descending": "Descending",
246 "description": "Description",
247 "destination_tag": "Destination tag:",
248 + "deuro_about_deuro": "About dEURO",
249 "deuro_collect_interest": "Collect",
250 + "deuro_reinvest_interest": "Reinvest",
251 "deuro_savings": "dEuro Savings",
252 "deuro_savings_add": "Deposit",
253 + "deuro_savings_approve_app": "Approve App",
254 + "deuro_savings_approve_app_description": "Allow the dEURO smart contract to manage your dEURO tokens for savings, but not the ability to send or take your dEURO.",
255 + "deuro_savings_available_to_add": "Available to add",
256 + "deuro_savings_available_to_remove": "Available to remove",
257 "deuro_savings_balance": "Savings Balance",
258 + "deuro_savings_balance_tooltip": "This represents your current savings balance, which will accrue interest over time. You can deposit or withdraw your dEURO at any given time.",
259 "deuro_savings_collect_interest": "Collect interest",
260 + "deuro_savings_collect_interest_tooltip": "This represents your current earned interest, which you can collect into your dEURO balance at any time.",
261 "deuro_savings_remove": "Withdraw",
262 "deuro_savings_set_approval": "Set approval",
263 "deuro_savings_subtitle": "Earn up to 10% interest on your dEuro Stablecoin holdings",
264 + "deuro_savings_welcome_description": "dEURO is a fully decentralized, collateralized stablecoin pegged to the Euro — secure, versatile, and censorship-resistant without having to rely on oracles. 1 dEURO = 1 EURO.",
265 + "deuro_tooltip_no_eth": "In order to enable dEURO, you must have ETH in your wallet.",
266 "deuro_tx_commited_content": "It might take a couple of seconds for the transaction to confirm and be reflected on screen",
267 "device_is_signing": "Device is signing",
268 "dfx_option_description": "Buy crypto with EUR & CHF. For retail and corporate customers in Europe",
@@ -1078,6 +1088,7 @@
1088 "walletConnect": "WalletConnect",
1089 "wallets": "Wallets",
1090 "warning": "Warning",
1091 + "website": "Website",
1092 "welcome": "Welcome",
1093 "welcome_subtitle_new_wallet": "If you want to start fresh, tap Create New Wallet below and you'll be off to the races.",
1094 "welcome_subtitle_restore_wallet": "If you have an existing wallet you want to bring into Cake, simply choose Restore Existing Wallet and we'll walk you through the process.",
@@ -1114,4 +1125,4 @@
1125 "you_will_send": "Convert from",
1126 "youCanGoBackToYourDapp": "You can go back to your dApp now",
1127 "yy": "YY"
1117 -}
1128 +}
\ No newline at end of file
res/values/strings_es.arb
+12 -1
@@ -245,14 +245,24 @@
245 "descending": "Descendente",
246 "description": "Descripción",
247 "destination_tag": "Etiqueta de destino:",
248 + "deuro_about_deuro": "Sobre Deuro",
249 "deuro_collect_interest": "Recolectar",
250 + "deuro_reinvest_interest": "Reinvertir",
251 "deuro_savings": "ahorros de deuro",
252 "deuro_savings_add": "Depósito",
253 + "deuro_savings_approve_app": "Aprobar la aplicación",
254 + "deuro_savings_approve_app_description": "Permita que el contrato inteligente Deuro administre sus tokens Deuro para obtener ahorros, pero no la capacidad de enviar o tomar su Deuro.",
255 + "deuro_savings_available_to_add": "Disponible para agregar",
256 + "deuro_savings_available_to_remove": "Disponible para eliminar",
257 "deuro_savings_balance": "Saldo de ahorro",
258 + "deuro_savings_balance_tooltip": "Esto representa su saldo de ahorro actual, que acumulará interés con el tiempo. Puede depositar o retirar su Deuro en un momento dado.",
259 "deuro_savings_collect_interest": "Cobrar interés",
260 + "deuro_savings_collect_interest_tooltip": "Esto representa su interés ganado actual, que puede recolectar en su saldo Deuro en cualquier momento.",
261 "deuro_savings_remove": "Retirar",
262 "deuro_savings_set_approval": "Establecer aprobación",
263 "deuro_savings_subtitle": "Gane hasta un 10% de interés en sus Holdings de Deuro Stablecoin",
264 + "deuro_savings_welcome_description": "Deuro es un establo colateralizado totalmente descentralizado fijado al euro: seguro, versátil y resistente a la censura sin tener que confiar en los oráculos. 1 Deuro = 1 euro.",
265 + "deuro_tooltip_no_eth": "Para habilitar a Deuro, debe tener ETH en su billetera.",
266 "deuro_tx_commited_content": "La transacción puede tardar un par de segundos en confirmar y reflejarse en la pantalla",
267 "device_is_signing": "El dispositivo está firmando",
268 "dfx_option_description": "Compre cripto con EUR y CHF. Para clientes minoristas y corporativos en Europa",
@@ -1078,6 +1088,7 @@
1088 "walletConnect": "MonederoConectar",
1089 "wallets": "Carteras",
1090 "warning": "Advertencia",
1091 + "website": "Sitio web",
1092 "welcome": "Bienvenido",
1093 "welcome_only": "Bienvenido",
1094 "welcome_subtitle_new_wallet": "Si desea comenzar de nuevo, toque Crear nueva billetera a continuación y se irá a las carreras.",
@@ -1115,4 +1126,4 @@
1126 "you_will_send": "Convertir de",
1127 "youCanGoBackToYourDapp": "Puedes volver a tu dapp ahora",
1128 "yy": "YY"
1118 -}
1129 +}
\ No newline at end of file
res/values/strings_fr.arb
+11
@@ -245,14 +245,24 @@
245 "descending": "Descendant",
246 "description": "Description",
247 "destination_tag": "Tag de destination :",
248 + "deuro_about_deuro": "À propos de Deuro",
249 "deuro_collect_interest": "Collecter",
250 + "deuro_reinvest_interest": "Réinvestir",
251 "deuro_savings": "Économies de deuro",
252 "deuro_savings_add": "Dépôt",
253 + "deuro_savings_approve_app": "Approuver l'application",
254 + "deuro_savings_approve_app_description": "Autorisez le contrat intelligent Deuro pour gérer vos jetons deuro pour les économies, mais pas la possibilité d'envoyer ou de prendre votre deuro.",
255 + "deuro_savings_available_to_add": "Disponible pour ajouter",
256 + "deuro_savings_available_to_remove": "Disponible pour supprimer",
257 "deuro_savings_balance": "Solde d'épargne",
258 + "deuro_savings_balance_tooltip": "Cela représente votre solde d'épargne actuel, qui accusera l'intérêt au fil du temps. Vous pouvez déposer ou retirer votre deuro à tout moment.",
259 "deuro_savings_collect_interest": "Percevoir l'intérêt",
260 + "deuro_savings_collect_interest_tooltip": "Cela représente votre intérêt actuel gagné, que vous pouvez collecter dans votre solde de Deuro à tout moment.",
261 "deuro_savings_remove": "Retirer",
262 "deuro_savings_set_approval": "Établir l'approbation",
263 "deuro_savings_subtitle": "Gagnez jusqu'à 10% d'intérêt sur vos avoirs de Deuro Stablecoin",
264 + "deuro_savings_welcome_description": "Deuro est une stablecoin entièrement décentralisée et garantie fixée à l'euro - sécurisée, polyvalente et résistante à la censure sans avoir à compter sur des oracles. 1 DEURO = 1 EURO.",
265 + "deuro_tooltip_no_eth": "Afin d'activer Deuro, vous devez avoir ETH dans votre portefeuille.",
266 "deuro_tx_commited_content": "Il pourrait prendre quelques secondes pour que la transaction confirme et soit reflétée à l'écran",
267 "device_is_signing": "L'appareil signale",
268 "dfx_option_description": "Achetez de la crypto avec EUR & CHF. Pour les clients de la vente au détail et des entreprises en Europe",
@@ -1077,6 +1087,7 @@
1087 "walletConnect": "WalletConnect",
1088 "wallets": "Portefeuilles",
1089 "warning": "Avertissement",
1090 + "website": "Site web",
1091 "welcome": "Accueillir",
1092 "welcome_subtitle_new_wallet": "Si vous souhaitez repartir de zéro, appuyez sur Créer un nouveau portefeuille ci-dessous et vous serez prêt à commencer.",
1093 "welcome_subtitle_restore_wallet": "Si vous avez un portefeuille existant que vous souhaitez importer dans Cake, choisissez simplement Restaurer un portefeuille existant et nous vous guiderons à travers le processus.",
res/values/strings_ha.arb
+11
@@ -245,14 +245,24 @@
245 "descending": "Saukowa",
246 "description": "Bayani",
247 "destination_tag": "Tambarin makoma:",
248 + "deuro_about_deuro": "Game da Deuro",
249 "deuro_collect_interest": "Tara",
250 + "deuro_reinvest_interest": "Sarkin m",
251 "deuro_savings": "deuro tanadi",
252 "deuro_savings_add": "Yi ajiya",
253 + "deuro_savings_approve_app": "Amince da app",
254 + "deuro_savings_approve_app_description": "Bada izinin kwangila Deuro Smart don sarrafa alamomin Deuro don tanadi, amma ba ikon aikawa ba ko ɗaukar deuro.",
255 + "deuro_savings_available_to_add": "Akwai don ƙara",
256 + "deuro_savings_available_to_remove": "Akwai don Cire",
257 "deuro_savings_balance": "Ma'auni",
258 + "deuro_savings_balance_tooltip": "Wannan yana wakiltar ma'aunin ajiyar ku na yanzu, wanda zai tarwatsa sha'awa akan lokaci. Kuna iya sakawa ko cire Deuro a kowane lokaci.",
259 "deuro_savings_collect_interest": "Tattara amfani da sha'awa",
260 + "deuro_savings_collect_interest_tooltip": "Wannan yana wakiltar sha'awar da kuka samu na yanzu, wanda zaku iya tattarawa cikin ma'aunin deuro a kowane lokaci.",
261 "deuro_savings_remove": "Janye",
262 "deuro_savings_set_approval": "Saita yarda",
263 "deuro_savings_subtitle": "Sami har zuwa 10% sha'awa a kan Deuro Stovecoin Rike",
264 + "deuro_savings_welcome_description": "Deuro cikakke ne mai kyau, haɗin gwiwa wanda aka haɗa zuwa Yuro - amintacce, ba tare da tsayayya da oracles ba. 1 deuro = 1 Yuro.",
265 + "deuro_tooltip_no_eth": "Don kunna deuro, dole ne ku sami lafiyarku a cikin walat ɗinku.",
266 "deuro_tx_commited_content": "Yana iya ɗaukar wasu secondsan seconds don ma'amala don tabbatarwa kuma a nuna shi a allon",
267 "device_is_signing": "Na'urar tana shiga",
268 "dfx_option_description": "Buy crypto tare da Eur & Chf. Don Retail da abokan ciniki na kamfanoni a Turai",
@@ -1079,6 +1089,7 @@
1089 "walletConnect": "WalletConnect",
1090 "wallets": "Wallets",
1091 "warning": "Gargadi",
1092 + "website": "Gidan yanar gizo",
1093 "welcome": "Barka da zuwa",
1094 "welcome_only": "Barka da zuwa",
1095 "welcome_subtitle_new_wallet": "Idan kana son farawa sabo ne, matsa Newirƙiri Sabuwar Wallow a ƙasa kuma za ka tafi da tsere.",
res/values/strings_hi.arb
+11
@@ -245,14 +245,24 @@
245 "descending": "अवरोही",
246 "description": "विवरण",
247 "destination_tag": "गंतव्य टैग:",
248 + "deuro_about_deuro": "देउरो के बारे में",
249 "deuro_collect_interest": "इकट्ठा करना",
250 + "deuro_reinvest_interest": "पुनर्निवेश करना",
251 "deuro_savings": "देउरो बचत",
252 "deuro_savings_add": "जमा",
253 + "deuro_savings_approve_app": "ऐप को अनुमोदित करें",
254 + "deuro_savings_approve_app_description": "बचत के लिए अपने Deuro टोकन का प्रबंधन करने के लिए Deuro स्मार्ट अनुबंध की अनुमति दें, लेकिन अपने Deuro को भेजने या लेने की क्षमता नहीं।",
255 + "deuro_savings_available_to_add": "जोड़ने के लिए उपलब्ध है",
256 + "deuro_savings_available_to_remove": "निकालने के लिए उपलब्ध है",
257 "deuro_savings_balance": "बचत शेष",
258 + "deuro_savings_balance_tooltip": "यह आपके वर्तमान बचत संतुलन का प्रतिनिधित्व करता है, जो समय के साथ ब्याज अर्जित करेगा। आप किसी भी समय अपने ड्यूरो को जमा या वापस ले सकते हैं।",
259 "deuro_savings_collect_interest": "ब्याज इकट्ठा करना",
260 + "deuro_savings_collect_interest_tooltip": "यह आपके वर्तमान अर्जित ब्याज का प्रतिनिधित्व करता है, जिसे आप किसी भी समय अपने Deuro संतुलन में एकत्र कर सकते हैं।",
261 "deuro_savings_remove": "निकालना",
262 "deuro_savings_set_approval": "अनुमोदन निर्धारित करना",
263 "deuro_savings_subtitle": "अपने Deuro Stablecoin होल्डिंग्स पर 10% ब्याज कमाएँ",
264 + "deuro_savings_welcome_description": "Deuro एक पूरी तरह से विकेन्द्रीकृत, संपार्श्विक स्टैबेलकॉइन है जो यूरो के लिए पेग्ड है-सुरक्षित, बहुमुखी और सेंसरशिप-प्रतिरोधी के बिना oracles पर भरोसा किए बिना। 1 देउरो = 1 यूरो।",
265 + "deuro_tooltip_no_eth": "Deuro को सक्षम करने के लिए, आपके पास अपने बटुए में ETH होना चाहिए।",
266 "deuro_tx_commited_content": "लेन -देन की पुष्टि करने और स्क्रीन पर प्रतिबिंबित होने के लिए कुछ सेकंड लग सकते हैं",
267 "device_is_signing": "उपकरण हस्ताक्षर कर रहा है",
268 "dfx_option_description": "EUR और CHF के साथ क्रिप्टो खरीदें। यूरोप में खुदरा और कॉर्पोरेट ग्राहकों के लिए",
@@ -1079,6 +1089,7 @@
1089 "walletConnect": "वॉलेटकनेक्ट",
1090 "wallets": "पर्स",
1091 "warning": "चेतावनी",
1092 + "website": "वेबसाइट",
1093 "welcome": "स्वागत",
1094 "welcome_subtitle_new_wallet": "यदि आप ताजा शुरू करना चाहते हैं, तो नीचे नया बटुआ बनाएं और आप दौड़ से दूर हो जाएंगे।",
1095 "welcome_subtitle_restore_wallet": "यदि आपके पास एक मौजूदा बटुआ है जिसे आप केक में लाना चाहते हैं, तो बस मौजूदा बटुए को पुनर्स्थापित करें और हम आपको प्रक्रिया के माध्यम से चलेंगे।",
res/values/strings_hr.arb
+11
@@ -245,14 +245,24 @@
245 "descending": "Silazni",
246 "description": "Opis",
247 "destination_tag": "Odredišna oznaka:",
248 + "deuro_about_deuro": "O deuru",
249 "deuro_collect_interest": "Prikupiti",
250 + "deuro_reinvest_interest": "Reinvestirati",
251 "deuro_savings": "deuro ušteda",
252 "deuro_savings_add": "Depozit",
253 + "deuro_savings_approve_app": "Odobriti aplikaciju",
254 + "deuro_savings_approve_app_description": "Dopustite pametnom ugovoru Deuro da upravljate svojim Deuro tokenima za uštedu, ali ne i mogućnost slanja ili uzimanja vašeg Deuroa.",
255 + "deuro_savings_available_to_add": "Dostupno za dodavanje",
256 + "deuro_savings_available_to_remove": "Dostupno za uklanjanje",
257 "deuro_savings_balance": "Ravnoteža uštede",
258 + "deuro_savings_balance_tooltip": "To predstavlja vaš trenutni saldo štednje, što će s vremenom prikupljati kamate. Možete položiti ili povući svoj deuro u bilo kojem trenutku.",
259 "deuro_savings_collect_interest": "Prikupiti interes",
260 + "deuro_savings_collect_interest_tooltip": "To predstavlja vaš trenutni zarađeni interes, koji u bilo kojem trenutku možete prikupiti u svoj deuro ravnoteža.",
261 "deuro_savings_remove": "Povući",
262 "deuro_savings_set_approval": "Odrediti odobrenje",
263 "deuro_savings_subtitle": "Zaradite do 10% kamate na svoje Deuro Stablecoin Holdings",
264 + "deuro_savings_welcome_description": "Deuro je potpuno decentralizirani, kolateralizirani stabblecoin privezani na euro-siguran, svestran i otporan na cenzuru, a da se nije morao oslanjati na orke. 1 deuro = 1 eura.",
265 + "deuro_tooltip_no_eth": "Da biste omogućili Deuro, morate imati ETH u novčaniku.",
266 "deuro_tx_commited_content": "Možda će trebati nekoliko sekundi da se transakcija potvrdi i odrazi na zaslonu",
267 "device_is_signing": "Uređaj se potpisuje",
268 "dfx_option_description": "Kupite kriptovalute s Eur & CHF. Za maloprodajne i korporativne kupce u Europi",
@@ -1077,6 +1087,7 @@
1087 "walletConnect": "WalletConnect",
1088 "wallets": "Novčanici",
1089 "warning": "Upozorenje",
1090 + "website": "Web stranica",
1091 "welcome": "Dobrodošli",
1092 "welcome_subtitle_new_wallet": "Ako želite započeti svježe, dodirnite Create New Wallet u nastavku i krenite na utrke.",
1093 "welcome_subtitle_restore_wallet": "Ako imate postojeći novčanik koji želite unijeti u tortu, jednostavno odaberite Vratite postojeći novčanik i prošetat ćemo vas kroz postupak.",
res/values/strings_hy.arb
+11
@@ -245,14 +245,24 @@
245 "descending": "Նվազող",
246 "description": "Նկարագրություն",
247 "destination_tag": "Նպատակակետի պիտակ:",
248 + "deuro_about_deuro": "Deuro- ի մասին",
249 "deuro_collect_interest": "Հավաքել",
250 + "deuro_reinvest_interest": "Վերազինել",
251 "deuro_savings": "dEuro խնայողություններ",
252 "deuro_savings_add": "Ավանդ",
253 + "deuro_savings_approve_app": "Հաստատել ծրագիրը",
254 + "deuro_savings_approve_app_description": "Թույլ տվեք Deuro Smart պայմանագիրը կառավարել ձեր Deuro Tokens- ը խնայողությունների համար, բայց ոչ ձեր Deuro ուղարկելու կամ վերցնելու կարողությունը:",
255 + "deuro_savings_available_to_add": "Մատչելի է ավելացնել",
256 + "deuro_savings_available_to_remove": "Մատչելի է հեռացնելու համար",
257 "deuro_savings_balance": "Խնայողական հավասարակշռություն",
258 + "deuro_savings_balance_tooltip": "Սա ներկայացնում է ձեր ընթացիկ խնայողությունների մնացորդը, որը ժամանակի ընթացքում կբարձրացնի հետաքրքրությունը: Դուք կարող եք ցանկացած պահի մեկնել կամ հանել ձեր Deuro- ն:",
259 "deuro_savings_collect_interest": "Հավաքեք հետաքրքրություն",
260 + "deuro_savings_collect_interest_tooltip": "Սա ներկայացնում է ձեր ներկայիս վաստակած տոկոսադրույքը, որը ցանկացած պահի կարող եք հավաքել ձեր Deuro հավասարակշռությունը:",
261 "deuro_savings_remove": "Հեռացնել",
262 "deuro_savings_set_approval": "Սահմանել հաստատում",
263 "deuro_savings_subtitle": "Վաստակեք մինչեւ 10% տոկոսադրույքներ ձեր Deuro Stablecoin Holdings- ի համար",
264 + "deuro_savings_welcome_description": "Deuro- ն լիովին ապակենտրոնացված է, գրավադրված Stablecoin- ը, որն ապահովում է եվրոն `անվտանգ, բազմակողմանի եւ գրաքննության դիմացկուն, առանց ապավինելու Oracles- ին: 1 deuro = 1 եվրո:",
265 + "deuro_tooltip_no_eth": "Deuro- ին միացնելու համար դուք պետք է դնեք ձեր դրամապանակում:",
266 "deuro_tx_commited_content": "Գործարքի հաստատման եւ արտացոլվելու համար գործարքի համար կարող է տեւել մի քանի վայրկյան",
267 "device_is_signing": "Սարքը ստորագրում է",
268 "dfx_option_description": "Գնեք կրիպտոարժույթ EUR և CHF: Կորպորատիվ և մանրածախ հաճախորդների համար Եվրոպայում",
@@ -1075,6 +1085,7 @@
1085 "walletConnect": "WalletConnect",
1086 "wallets": "Դրամապանակներ",
1087 "warning": "Զգուշացում",
1088 + "website": "Կայք",
1089 "welcome": "Ողջույն",
1090 "welcome_subtitle_new_wallet": "Եթե ​​ցանկանում եք սկսել թարմ, հպեք Ստեղծեք նոր դրամապանակ ներքեւում եւ դուրս կգաք ցեղերի:",
1091 "welcome_subtitle_restore_wallet": "Եթե ​​ունեք գոյություն ունեցող դրամապանակ, որը ցանկանում եք տորթի մեջ մտցնել, պարզապես ընտրեք վերականգնել առկա դրամապանակը, եւ մենք ձեզ քայլելու ենք գործընթացի միջոցով:",
res/values/strings_id.arb
+11
@@ -245,14 +245,24 @@
245 "descending": "Menurun",
246 "description": "Keterangan",
247 "destination_tag": "Tag tujuan:",
248 + "deuro_about_deuro": "Tentang Deuro",
249 "deuro_collect_interest": "Mengumpulkan",
250 + "deuro_reinvest_interest": "Berinvestasi kembali",
251 "deuro_savings": "Tabungan dEuro",
252 "deuro_savings_add": "Deposito",
253 + "deuro_savings_approve_app": "Menyetujui aplikasi",
254 + "deuro_savings_approve_app_description": "Izinkan kontrak pintar Deuro untuk mengelola token Deuro Anda untuk penghematan, tetapi bukan kemampuan untuk mengirim atau mengambil Deuro Anda.",
255 + "deuro_savings_available_to_add": "Tersedia untuk ditambahkan",
256 + "deuro_savings_available_to_remove": "Tersedia untuk dihapus",
257 "deuro_savings_balance": "Keseimbangan tabungan",
258 + "deuro_savings_balance_tooltip": "Ini mewakili saldo tabungan Anda saat ini, yang akan menghasilkan bunga dari waktu ke waktu. Anda dapat menyetor atau menarik deuro Anda pada waktu tertentu.",
259 "deuro_savings_collect_interest": "Mengumpulkan minat",
260 + "deuro_savings_collect_interest_tooltip": "Ini mewakili minat yang Anda peroleh saat ini, yang dapat Anda kumpulkan ke dalam saldo Deuro Anda kapan saja.",
261 "deuro_savings_remove": "Menarik",
262 "deuro_savings_set_approval": "Tetapkan persetujuan",
263 "deuro_savings_subtitle": "Hasilkan hingga 10% bunga di Deuro Stablecoin Holdings Anda",
264 + "deuro_savings_welcome_description": "Deuro adalah stablecoin yang sepenuhnya terdesentralisasi, dipatok ke euro-aman, serbaguna, dan tahan sensor tanpa harus bergantung pada nubuat. 1 Deuro = 1 Euro.",
265 + "deuro_tooltip_no_eth": "Untuk mengaktifkan Deuro, Anda harus memiliki ETH di dompet Anda.",
266 "deuro_tx_commited_content": "Mungkin butuh beberapa detik untuk transaksi untuk mengkonfirmasi dan direfleksikan di layar",
267 "device_is_signing": "Perangkat sedang menandatangani",
268 "dfx_option_description": "Beli crypto dengan EUR & CHF. Untuk pelanggan ritel dan perusahaan di Eropa",
@@ -1080,6 +1090,7 @@
1090 "walletConnect": "DompetConnect",
1091 "wallets": "Dompet",
1092 "warning": "Peringatan",
1093 + "website": "Situs web",
1094 "welcome": "Selamat datang",
1095 "welcome_subtitle_new_wallet": "Jika Anda ingin memulai segar, ketuk membuat dompet baru di bawah ini dan Anda akan pergi ke balapan.",
1096 "welcome_subtitle_restore_wallet": "Jika Anda memiliki dompet yang ada yang ingin Anda bawa ke dalam kue, cukup pilih kembalikan dompet yang ada dan kami akan memandu Anda melalui prosesnya.",
res/values/strings_it.arb
+11
@@ -245,14 +245,24 @@
245 "descending": "Discendente",
246 "description": "Descrizione",
247 "destination_tag": "Tag destinazione:",
248 + "deuro_about_deuro": "Su Deuro",
249 "deuro_collect_interest": "Raccogliere",
250 + "deuro_reinvest_interest": "Reinvest",
251 "deuro_savings": "Risparmio di dEuro",
252 "deuro_savings_add": "Depositare",
253 + "deuro_savings_approve_app": "Approvare l'app",
254 + "deuro_savings_approve_app_description": "Consenti al contratto Smart Deuro di gestire i tuoi token Deuro per risparmi, ma non la possibilità di inviare o prendere il tuo Deuro.",
255 + "deuro_savings_available_to_add": "Disponibile per aggiungere",
256 + "deuro_savings_available_to_remove": "Disponibile per rimuovere",
257 "deuro_savings_balance": "Saldo di risparmio",
258 + "deuro_savings_balance_tooltip": "Ciò rappresenta il tuo attuale saldo di risparmio, che maturerà l'interesse nel tempo. Puoi depositare o prelevare il tuo deuro in qualsiasi momento.",
259 "deuro_savings_collect_interest": "Raccogliere interesse",
260 + "deuro_savings_collect_interest_tooltip": "Questo rappresenta il tuo attuale interesse guadagnato, che puoi raccogliere nel tuo saldo Deuro in qualsiasi momento.",
261 "deuro_savings_remove": "Ritirare",
262 "deuro_savings_set_approval": "Impostare l'approvazione",
263 "deuro_savings_subtitle": "Guadagna fino al 10% di interesse su Deuro StableCoin Holdings",
264 + "deuro_savings_welcome_description": "Deuro è uno stablecoin completamente decentralizzato e collateralizzato con anco 1 deuro = 1 euro.",
265 + "deuro_tooltip_no_eth": "Per abilitare Deuro, devi avere ETH nel tuo portafoglio.",
266 "deuro_tx_commited_content": "Potrebbero essere necessari un paio di secondi per confermare la transazione ed essere riflessa sullo schermo",
267 "device_is_signing": "Il dispositivo sta firmando",
268 "dfx_option_description": "Acquista Crypto con EUR & CHF. Per i clienti al dettaglio e aziendali in Europa",
@@ -1079,6 +1089,7 @@
1089 "walletConnect": "WalletConnect",
1090 "wallets": "Portafogli",
1091 "warning": "Attenzione",
1092 + "website": "Sito web",
1093 "welcome": "Benvenuto",
1094 "welcome_only": "Benvenuto",
1095 "welcome_subtitle_new_wallet": "Se vuoi ricominciare da capo, premi Crea un nuovo portafoglio qui sotto.",
res/values/strings_ja.arb
+11
@@ -245,14 +245,24 @@
245 "descending": "下降",
246 "description": "説明",
247 "destination_tag": "宛先タグ:",
248 + "deuro_about_deuro": "Deuroについて",
249 "deuro_collect_interest": "集める",
250 + "deuro_reinvest_interest": "再投資",
251 "deuro_savings": "dEuro Savings",
252 "deuro_savings_add": "デポジット",
253 + "deuro_savings_approve_app": "アプリを承認します",
254 + "deuro_savings_approve_app_description": "Deuro Smart ContractがDeuro Tokensを管理するために節約のために管理することはできますが、Deuroを送信または服用する能力は許可しません。",
255 + "deuro_savings_available_to_add": "追加できる",
256 + "deuro_savings_available_to_remove": "削除できます",
257 "deuro_savings_balance": "貯蓄バランス",
258 + "deuro_savings_balance_tooltip": "これは、現在の貯蓄残高を表しており、時間の経過とともに利息が生じます。 deuroをいつでも預け入れることができます。",
259 "deuro_savings_collect_interest": "興味を集めます",
260 + "deuro_savings_collect_interest_tooltip": "これは、現在の獲得された関心を表しており、いつでもデュロバランスに収集できます。",
261 "deuro_savings_remove": "撤回する",
262 "deuro_savings_set_approval": "承認を設定します",
263 "deuro_savings_subtitle": "Deuro Stablecoin Holdingsで最大10%の利息を稼ぐ",
264 + "deuro_savings_welcome_description": "Deuroは、オラクルに頼ることなく、安全で多目的で、検閲に耐えるユーロに固定された、完全に分散化された担保付きの安定した安定性です。 1 Deuro = 1ユーロ。",
265 + "deuro_tooltip_no_eth": "Deuroを有効にするには、財布にETHが必要です。",
266 "deuro_tx_commited_content": "トランザクションが確認され、画面に反映されるまでに数秒かかる場合があります",
267 "device_is_signing": "デバイスが署名しています",
268 "dfx_option_description": "EUR&CHFで暗号を購入します。ヨーロッパの小売および企業の顧客向け",
@@ -1078,6 +1088,7 @@
1088 "walletConnect": "ウォレットコネクト",
1089 "wallets": "財布",
1090 "warning": "警告",
1091 + "website": "Webサイト",
1092 "welcome": "いらっしゃいませ",
1093 "welcome_subtitle_new_wallet": "新鮮な開始したい場合は、以下の新しい財布を作成すると、レースに出かけることができます。",
1094 "welcome_subtitle_restore_wallet": "ケーキに持ち込みたい既存のウォレットがある場合は、既存のウォレットを復元するだけで、プロセスを説明します。",
res/values/strings_ko.arb
+11
@@ -245,14 +245,24 @@
245 "descending": "내림차순",
246 "description": "설명",
247 "destination_tag": "목적지 태그:",
248 + "deuro_about_deuro": "Deuro에 대해",
249 "deuro_collect_interest": "모으다",
250 + "deuro_reinvest_interest": "재투자",
251 "deuro_savings": "도로 저축",
252 "deuro_savings_add": "보증금",
253 + "deuro_savings_approve_app": "승인 앱",
254 + "deuro_savings_approve_app_description": "Deuro Smart Contract는 저축을 위해 Deuro 토큰을 관리 할 수 ​​있지만 Deuro를 보내거나 가져갈 수있는 능력은 없습니다.",
255 + "deuro_savings_available_to_add": "추가 할 수 있습니다",
256 + "deuro_savings_available_to_remove": "제거 할 수 있습니다",
257 "deuro_savings_balance": "저축 잔고",
258 + "deuro_savings_balance_tooltip": "이것은 현재 저축 잔액을 나타내며, 이는 시간이 지남에 따라이자가 발생합니다. 주어진 시간에 Deuro를 입금하거나 철회 할 수 있습니다.",
259 "deuro_savings_collect_interest": "관심을 모으십시오",
260 + "deuro_savings_collect_interest_tooltip": "이것은 현재의 이익을 나타내며 언제든지 Deuro 잔액으로 징수 할 수 있습니다.",
261 "deuro_savings_remove": "철회하다",
262 "deuro_savings_set_approval": "승인을 설정하십시오",
263 "deuro_savings_subtitle": "Deuro Stablecoin Holdings에 최대 10%의이자를 받으십시오.",
264 + "deuro_savings_welcome_description": "Deuro는 완전히 분산되고 담보 된 안정된 안정된 스타블 레코 인으로 유로에 푹 빠져 있습니다. 1 Deuro = 1 유로.",
265 + "deuro_tooltip_no_eth": "Deuro를 활성화하려면 지갑에 ETH가 있어야합니다.",
266 "deuro_tx_commited_content": "트랜잭션이 확인하고 화면에 반영되는 데 몇 초가 걸릴 수 있습니다.",
267 "device_is_signing": "장치가 서명 중입니다",
268 "dfx_option_description": "EUR 및 CHF로 암호화폐 구매. 유럽의 개인 및 기업 고객 대상",
@@ -1078,6 +1088,7 @@
1088 "walletConnect": "WalletConnect",
1089 "wallets": "지갑",
1090 "warning": "경고",
1091 + "website": "웹 사이트",
1092 "welcome": "환영",
1093 "welcome_subtitle_new_wallet": "새로 시작하려면 아래의 새 지갑 생성을 탭하면 바로 시작할 수 있습니다.",
1094 "welcome_subtitle_restore_wallet": "Cake로 가져오려는 기존 지갑이 있는 경우 기존 지갑 복구를 선택하면 과정을 안내해 드립니다.",
res/values/strings_my.arb
+11
@@ -245,14 +245,24 @@
245 "descending": "ဆင်း",
246 "description": "ဖော်ပြချက်",
247 "destination_tag": "ခရီးဆုံးအမှတ်-",
248 + "deuro_about_deuro": "Deurro အကြောင်း",
249 "deuro_collect_interest": "စုဝေး",
250 + "deuro_reinvest_interest": "အသစ်တီထွင်စိတ်ချဆုံး",
251 "deuro_savings": "dEuro ငွေစု",
252 "deuro_savings_add": "အပ်ငေှ",
253 + "deuro_savings_approve_app": "App ကိုအတည်ပြုပါ",
254 + "deuro_savings_approve_app_description": "Deurro Smart Contraction သည်သင်၏ Deuro Tokens ကိုငွေစုရန်အတွက် Deuro Tokens ကိုစီမံခန့်ခွဲရန်ခွင့်ပြုပါ။",
255 + "deuro_savings_available_to_add": "ပေါင်းထည့်ရန်ရရှိနိုင်ပါသည်",
256 + "deuro_savings_available_to_remove": "ဖယ်ရှားပစ်ရန်ရရှိနိုင်",
257 "deuro_savings_balance": "ငွေစုချိန်ခွင်လျှာ",
258 + "deuro_savings_balance_tooltip": "၎င်းသည်အချိန်ကြာလာတာနဲ့အမျှစိတ်ဝင်စားမှုကိုတိုးပွားစေမည့်သင်၏လက်ရှိငွေစုချိန်ခွင်လျှာမျှသာဖြစ်သည်။ မည်သည့်အချိန်တွင်မဆိုသင်၏ Deurro ကိုငွေသွင်းခြင်းသို့မဟုတ်ထုတ်ယူနိုင်သည်။",
259 "deuro_savings_collect_interest": "အကျိုးစီးပွားစုဆောင်းပါ",
260 + "deuro_savings_collect_interest_tooltip": "၎င်းသည်သင်၏လက်ရှိရရှိထားသောအကျိုးစီးပွားကိုကိုယ်စားပြုသည်။ ၎င်းသည်သင် Deuro Balance သို့မည်သည့်အချိန်တွင်မဆိုစုဆောင်းနိုင်သည်။",
261 "deuro_savings_remove": "ဆုတ်ခွာ",
262 "deuro_savings_set_approval": "အတည်ပြုချက်ကိုသတ်မှတ်ပါ",
263 "deuro_savings_subtitle": "သင်၏ Deuro Stabloin Holdings တွင် 10% အထိစိတ်ဝင်စားပါ",
264 + "deuro_savings_welcome_description": "Deurro သည်ဗဟိုချုပ်ကိုင်မှုလျှော့ချခြင်း, 1 Deuro = 1 ယူရို။",
265 + "deuro_tooltip_no_eth": "Deurro ကို enable လုပ်ဖို့အတွက်သင့်ရဲ့ပိုက်ဆံအိတ်ထဲမှာ et et eth ရှိရမယ်။",
266 "deuro_tx_commited_content": "၎င်းသည်ငွေပေးငွေယူကိုအတည်ပြုရန်နှင့်မျက်နှာပြင်ပေါ်တွင်ထင်ဟပ်ရန်စက္ကန့်အနည်းငယ်ကြာနိုင်သည်",
267 "device_is_signing": "ကိရိယာလက်မှတ်ထိုးနေသည်",
268 "dfx_option_description": "Crypto ကို EUR & CHF ဖြင့် 0 ယ်ပါ။ လက်လီရောင်းဝယ်မှုနှင့်ဥရောပရှိကော်ပိုရိတ်ဖောက်သည်များအတွက်",
@@ -1077,6 +1087,7 @@
1087 "walletConnect": "Wallet ချိတ်ဆက်မှု",
1088 "wallets": "ပိုက်ဆံအိတ်",
1089 "warning": "သတိပေးချက်",
1090 + "website": "ဝဘ်0င်းက္ပုဒ်စာတမ်း",
1091 "welcome": "ဝမ်းသာစွာနှုတ်ဆက်ခြင်း",
1092 "welcome_subtitle_new_wallet": "လတ်ဆတ်စွာစတင်လိုပါကအောက်ကပိုက်ဆံအိတ်အသစ်ကိုဖန်တီးပါ။",
1093 "welcome_subtitle_restore_wallet": "အကယ်. သင့်တွင်သင်ကိတ်မုန့်ထဲသို့ယူဆောင်လိုသောလက်ရှိပိုက်ဆံအိတ်ရှိပါက Restore Lestore Wallet ကိုရွေးပါ။",
res/values/strings_nl.arb
+11
@@ -245,14 +245,24 @@
245 "descending": "Aflopend",
246 "description": "Beschrijving",
247 "destination_tag": "Bestemmingstag:",
248 + "deuro_about_deuro": "Over Deuro",
249 "deuro_collect_interest": "Verzamelen",
250 + "deuro_reinvest_interest": "Herinvesteren",
251 "deuro_savings": "dEuro -besparingen",
252 "deuro_savings_add": "Borg",
253 + "deuro_savings_approve_app": "Goedkeuren app",
254 + "deuro_savings_approve_app_description": "Sta het Deuro Smart Contract toe om uw Deuro -tokens te beheren voor besparingen, maar niet de mogelijkheid om uw Deuro te verzenden of te nemen.",
255 + "deuro_savings_available_to_add": "Beschikbaar om toe te voegen",
256 + "deuro_savings_available_to_remove": "Beschikbaar om te verwijderen",
257 "deuro_savings_balance": "Spaarbalans",
258 + "deuro_savings_balance_tooltip": "Dit vertegenwoordigt uw huidige spaarbalans, dat rente in de loop van de tijd zal opleveren. U kunt uw deuro op elk moment deponeren of opnemen.",
259 "deuro_savings_collect_interest": "Verzamel interesse",
260 + "deuro_savings_collect_interest_tooltip": "Dit vertegenwoordigt uw huidige verdiende interesse, die u op elk gewenst moment in uw Deuro -saldo kunt verzamelen.",
261 "deuro_savings_remove": "Terugtrekken",
262 "deuro_savings_set_approval": "Goedkeuring instellen",
263 "deuro_savings_subtitle": "Verdien tot 10% rente op uw Deuro Stablecoin Holdings",
264 + "deuro_savings_welcome_description": "Deuro is een volledig gedecentraliseerde, onderpandstablecoin gekoppeld aan de euro-beveiligd, veelzijdig en censuurbestendig zonder te moeten vertrouwen op orakels. 1 deuro = 1 euro.",
265 + "deuro_tooltip_no_eth": "Om Deuro in te schakelen, moet u ETH in uw portemonnee hebben.",
266 "deuro_tx_commited_content": "Het kan een paar seconden duren voordat de transactie wordt bevestigd en weerspiegeld op het scherm",
267 "device_is_signing": "Apparaat ondertekent",
268 "dfx_option_description": "Koop crypto met EUR & CHF. Voor retail- en zakelijke klanten in Europa",
@@ -1078,6 +1088,7 @@
1088 "walletConnect": "WalletConnect",
1089 "wallets": "Portefeuilles",
1090 "warning": "Waarschuwing",
1091 + "website": "Website",
1092 "welcome": "Welkom",
1093 "welcome_subtitle_new_wallet": "Als u opnieuw wilt beginnen, tikt u op de nieuwe portemonnee hieronder en u bent op weg naar de races.",
1094 "welcome_subtitle_restore_wallet": "Als je een bestaande portemonnee hebt die je in cake wilt brengen, kies dan gewoon om de bestaande portemonnee te herstellen en we zullen je door het proces leiden.",
res/values/strings_pl.arb
+13 -2
@@ -245,14 +245,24 @@
245 "descending": "Malejąco",
246 "description": "Opis",
247 "destination_tag": "Tag docelowy:",
248 + "deuro_about_deuro": "O Deuro",
249 "deuro_collect_interest": "Zbierać",
250 + "deuro_reinvest_interest": "Reinwestuj",
251 "deuro_savings": "dEuro oszczędności",
252 "deuro_savings_add": "Depozyt",
253 + "deuro_savings_approve_app": "Zatwierdź aplikację",
254 + "deuro_savings_approve_app_description": "Pozwól Deuro Smart kontrakt na zarządzanie tokenami Deuro na oszczędności, ale nie na możliwość wysyłania lub przyjmowania Deuro.",
255 + "deuro_savings_available_to_add": "Dostępne do dodania",
256 + "deuro_savings_available_to_remove": "Dostępne do usunięcia",
257 "deuro_savings_balance": "Równowaga oszczędności",
258 + "deuro_savings_balance_tooltip": "Reprezentuje to twoje bieżące saldo oszczędności, które z czasem naliczą odsetki. Możesz wpłacić lub wypłacić Deuro w danym momencie.",
259 "deuro_savings_collect_interest": "Zbieraj zainteresowanie",
260 + "deuro_savings_collect_interest_tooltip": "To reprezentuje twoje obecne odsetki, które w dowolnym momencie możesz zebrać w saldzie Deuro.",
261 "deuro_savings_remove": "Wycofać",
262 "deuro_savings_set_approval": "Ustaw zatwierdzenie",
263 "deuro_savings_subtitle": "Zarabiaj do 10% odsetek od Deuro Stablecoin Holdings",
264 + "deuro_savings_welcome_description": "Deuro jest w pełni zdecentralizowanym, zabezpieczonym Stablecoinem ustawionym na euro-bezpieczne, wszechstronne i odporne na cenzurę bez konieczności polegania na wyroczach. 1 deuro = 1 euro.",
265 + "deuro_tooltip_no_eth": "Aby włączyć Deuro, musisz mieć ETH w portfelu.",
266 "deuro_tx_commited_content": "Potwierdzenie i odbicie na ekranie może potrwać kilka sekund",
267 "device_is_signing": "Urządzenie podpisuje",
268 "dfx_option_description": "Kup krypto za EUR & CHF. Dla klientów prywatnych i korporacyjnych w Europie",
@@ -922,6 +932,7 @@
932 "ton_extra_info": "Nie zapomnij określić identyfikatora notatki podczas wysyłania transakcji TON dla wymiany",
933 "tor_connection": "Połączenie przez Tor",
934 "tor_connection_timeout": "Tor Connection Timeout",
935 + "tor_experimental": "Jest to funkcja eksperymentalna. Nie wszystkie połączenia wykonane z Cake Wallet korzystają z Tor, niektóre połączenia mogą korzystać z Clearnet, aby w pełni przekierować ruch skorzystaj z Tor w trybie VPN.",
936 "tor_only": "Tylko sieć Tor",
937 "total": "Całkowity",
938 "total_saving": "Całkowite oszczędności",
@@ -1076,6 +1087,7 @@
1087 "walletConnect": "WalletConnect",
1088 "wallets": "Portfele",
1089 "warning": "Ostrzeżenie",
1090 + "website": "Strona internetowa",
1091 "welcome": "Powitanie",
1092 "welcome_subtitle_new_wallet": "Jeśli chcesz zacząć od nowa, dotknij Utwórz nowy portfel poniżej.",
1093 "welcome_subtitle_restore_wallet": "Jeśli masz istniejący portfel, który chcesz wnieść do ciasta, po prostu wybierz przywróć istniejący portfel, a my przeprowadzimy Cię przez proces.",
@@ -1111,6 +1123,5 @@
1123 "you_will_receive_estimated_amount": "Otrzymasz(oszacowane )",
1124 "you_will_send": "Konwertuj z",
1125 "youCanGoBackToYourDapp": "Możesz teraz wrócić do swojego dapp",
1114 - "yy": "RR",
1115 - "tor_experimental": "Jest to funkcja eksperymentalna. Nie wszystkie połączenia wykonane z Cake Wallet korzystają z Tor, niektóre połączenia mogą korzystać z Clearnet, aby w pełni przekierować ruch skorzystaj z Tor w trybie VPN."
1126 + "yy": "RR"
1127 }
\ No newline at end of file
res/values/strings_pt.arb
+11
@@ -245,14 +245,24 @@
245 "descending": "descendente",
246 "description": "Descrição",
247 "destination_tag": "Tag de destino:",
248 + "deuro_about_deuro": "Sobre Deuro",
249 "deuro_collect_interest": "Coletar",
250 + "deuro_reinvest_interest": "Reinvestir",
251 "deuro_savings": "dEuro Savings",
252 "deuro_savings_add": "Depósito",
253 + "deuro_savings_approve_app": "Aprovar o aplicativo",
254 + "deuro_savings_approve_app_description": "Permita que o contrato inteligente Deuro gerencie seus tokens Deuro para economizar, mas não a capacidade de enviar ou levar seu Deuro.",
255 + "deuro_savings_available_to_add": "Disponível para adicionar",
256 + "deuro_savings_available_to_remove": "Disponível para remover",
257 "deuro_savings_balance": "Balanço de poupança",
258 + "deuro_savings_balance_tooltip": "Isso representa seu equilíbrio atual de poupança, que acumulará juros ao longo do tempo. Você pode depositar ou retirar seu deuro a qualquer momento.",
259 "deuro_savings_collect_interest": "Coletar juros",
260 + "deuro_savings_collect_interest_tooltip": "Isso representa seu interesse atual ganhou, que você pode coletar em seu saldo de deuro a qualquer momento.",
261 "deuro_savings_remove": "Retirar",
262 "deuro_savings_set_approval": "Defina aprovação",
263 "deuro_savings_subtitle": "Ganhe até 10% de juros em sua Deuro Stablecoin Holdings",
264 + "deuro_savings_welcome_description": "Deuro é um Stablecoin totalmente descentralizado e colateralizado atrelado ao euro-seguro, versátil e resistente à censura sem ter que confiar em oráculos. 1 Deuro = 1 Euro.",
265 + "deuro_tooltip_no_eth": "Para ativar Deuro, você deve ter ETH em sua carteira.",
266 "deuro_tx_commited_content": "Pode levar alguns segundos para a transação confirmar e se refletir na tela",
267 "device_is_signing": "O dispositivo está assinando",
268 "dfx_option_description": "Compre criptografia com EUR & CHF. Para clientes de varejo e corporativo na Europa",
@@ -1080,6 +1090,7 @@
1090 "walletConnect": "CarteiraConectada",
1091 "wallets": "Carteiras",
1092 "warning": "Aviso",
1093 + "website": "Site",
1094 "welcome": "Bem-vindo",
1095 "welcome_subtitle_new_wallet": "Se você quiser começar de novo, toque em criar uma nova carteira abaixo e você estará nas corridas.",
1096 "welcome_subtitle_restore_wallet": "Se você tem uma carteira existente que deseja trazer para o bolo, basta escolher a carteira existente e nós o guiaremos pelo processo.",
res/values/strings_ru.arb
+11
@@ -245,14 +245,24 @@
245 "descending": "Нисходящий",
246 "description": "Описание",
247 "destination_tag": "Целевой тег:",
248 + "deuro_about_deuro": "О Deuro",
249 "deuro_collect_interest": "Собирать",
250 + "deuro_reinvest_interest": "Реинвестирование",
251 "deuro_savings": "dEuro Savings",
252 "deuro_savings_add": "Депозитный",
253 + "deuro_savings_approve_app": "Утвердить приложение",
254 + "deuro_savings_approve_app_description": "Позвольте Deuro Smart Contract управлять вашими токенами Deuro для сбережений, но не возможность отправлять или взять ваш Deuro.",
255 + "deuro_savings_available_to_add": "Доступен для добавления",
256 + "deuro_savings_available_to_remove": "Доступно для удаления",
257 "deuro_savings_balance": "Сберегательный баланс",
258 + "deuro_savings_balance_tooltip": "Это представляет ваш текущий баланс сбережений, который со временем начисляет проценты. Вы можете внести или снять свой Deuro в любой момент времени.",
259 "deuro_savings_collect_interest": "Собирать интерес",
260 + "deuro_savings_collect_interest_tooltip": "Это представляет ваш нынешний заработанный процент, который вы можете собрать в свой баланс Deuro в любое время.",
261 "deuro_savings_remove": "Отзывать",
262 "deuro_savings_set_approval": "Установить утверждение",
263 "deuro_savings_subtitle": "Заработайте до 10% процентов на ваших Deuro Stablecoin Holdings",
264 + "deuro_savings_welcome_description": "Deuro-это полностью децентрализованный, обеспеченный стабильный зал, привязанный к евро-безопасному, универсальному и цензуре, устойчивавшись к тому, чтобы полагаться на оракулы. 1 deuro = 1 евро.",
265 + "deuro_tooltip_no_eth": "Чтобы включить Deuro, вы должны иметь ETH в своем кошельке.",
266 "deuro_tx_commited_content": "Чтобы подтвердить, может потребоваться пару секунд, чтобы подтвердить и быть отраженным на экране",
267 "device_is_signing": "Устройство подписывает",
268 "dfx_option_description": "Купить крипто с Eur & CHF. Для розничных и корпоративных клиентов в Европе",
@@ -1078,6 +1088,7 @@
1088 "walletConnect": "КошелекПодключиться",
1089 "wallets": "Кошельки",
1090 "warning": "Предупреждение",
1091 + "website": "Веб -сайт",
1092 "welcome": "Добро пожаловать",
1093 "welcome_subtitle_new_wallet": "Если вы хотите начать Fresh, нажмите «Создать новый кошелек» ниже, и вы отправитесь на гонки.",
1094 "welcome_subtitle_restore_wallet": "Если у вас есть существующий кошелек, который вы хотите принести в торт, просто выберите «Восстановить существующий кошелек», и мы проведем вас через процесс.",
res/values/strings_th.arb
+11
@@ -245,14 +245,24 @@
245 "descending": "ลงมา",
246 "description": "คำอธิบาย",
247 "destination_tag": "แท็กปลายทาง:",
248 + "deuro_about_deuro": "เกี่ยวกับ Deuro",
249 "deuro_collect_interest": "เก็บรวบรวม",
250 + "deuro_reinvest_interest": "ลงทุนใหม่",
251 "deuro_savings": "การออมของ dEuro",
252 "deuro_savings_add": "เงินฝาก",
253 + "deuro_savings_approve_app": "อนุมัติแอป",
254 + "deuro_savings_approve_app_description": "อนุญาตให้ Deuro Smart Contract จัดการโทเค็น Deuro ของคุณสำหรับการออม แต่ไม่ใช่ความสามารถในการส่งหรือใช้ deuro ของคุณ",
255 + "deuro_savings_available_to_add": "พร้อมใช้งาน",
256 + "deuro_savings_available_to_remove": "สามารถลบออกได้",
257 "deuro_savings_balance": "ยอดเงินออม",
258 + "deuro_savings_balance_tooltip": "สิ่งนี้แสดงถึงยอดเงินออมปัจจุบันของคุณซึ่งจะได้รับดอกเบี้ยเมื่อเวลาผ่านไป คุณสามารถฝากหรือถอน Deuro ของคุณในเวลาใดก็ได้",
259 "deuro_savings_collect_interest": "เก็บดอกเบี้ย",
260 + "deuro_savings_collect_interest_tooltip": "สิ่งนี้แสดงถึงดอกเบี้ยที่ได้รับในปัจจุบันของคุณซึ่งคุณสามารถรวบรวมลงในยอดคงเหลือ deuro ของคุณได้ตลอดเวลา",
261 "deuro_savings_remove": "ถอน",
262 "deuro_savings_set_approval": "ตั้งค่าการอนุมัติ",
263 "deuro_savings_subtitle": "รับดอกเบี้ยมากถึง 10% สำหรับ Deuro Stablecoin Holdings ของคุณ",
264 + "deuro_savings_welcome_description": "Deuro เป็น stablecoin ที่มีการกระจายอำนาจอย่างเต็มที่และเป็นหลักประกันที่ยึดติดกับยูโร-ปลอดภัยอเนกประสงค์และทนต่อการเซ็นเซอร์โดยไม่ต้องพึ่งพา Oracles 1 Deuro = 1 ยูโร",
265 + "deuro_tooltip_no_eth": "เพื่อที่จะเปิดใช้งาน Deuro คุณต้องมี ETH ในกระเป๋าเงินของคุณ",
266 "deuro_tx_commited_content": "อาจใช้เวลาสองสามวินาทีในการทำธุรกรรมเพื่อยืนยันและสะท้อนบนหน้าจอ",
267 "device_is_signing": "อุปกรณ์กำลังลงนาม",
268 "dfx_option_description": "ซื้อ crypto ด้วย Eur & CHF สำหรับลูกค้ารายย่อยและลูกค้าในยุโรป",
@@ -1077,6 +1087,7 @@
1087 "walletConnect": "WalletConnect",
1088 "wallets": "กระเป๋า",
1089 "warning": "คำเตือน",
1090 + "website": "เว็บไซต์",
1091 "welcome": "ยินดีต้อนรับ",
1092 "welcome_subtitle_new_wallet": "หากคุณต้องการเริ่มต้นใหม่ให้แตะสร้างกระเป๋าเงินใหม่ด้านล่างและคุณจะออกจากการแข่งขัน",
1093 "welcome_subtitle_restore_wallet": "หากคุณมีกระเป๋าเงินที่มีอยู่ที่คุณต้องการนำเข้าเค้กให้เลือกคืนกระเป๋าเงินที่มีอยู่แล้วเราจะพาคุณผ่านกระบวนการ",
res/values/strings_tl.arb
+11
@@ -245,14 +245,24 @@
245 "descending": "Pababang",
246 "description": "Paglalarawan",
247 "destination_tag": "Tag ng patutunguhan:",
248 + "deuro_about_deuro": "Tungkol kay Deuro",
249 "deuro_collect_interest": "Mangolekta",
250 + "deuro_reinvest_interest": "Muling mamuhunan",
251 "deuro_savings": "Pagtipid ni dEuro",
252 "deuro_savings_add": "Deposito",
253 + "deuro_savings_approve_app": "Aprubahan ang app",
254 + "deuro_savings_approve_app_description": "Payagan ang kontrata ng Deuro Smart na pamahalaan ang iyong mga token ng Deuro para sa pag -iimpok, ngunit hindi ang kakayahang magpadala o kunin ang iyong deuro.",
255 + "deuro_savings_available_to_add": "Magagamit upang magdagdag",
256 + "deuro_savings_available_to_remove": "Magagamit upang alisin",
257 "deuro_savings_balance": "Balanse sa pagtitipid",
258 + "deuro_savings_balance_tooltip": "Ito ay kumakatawan sa iyong kasalukuyang balanse sa pagtitipid, na makukuha ang interes sa paglipas ng panahon. Maaari kang magdeposito o bawiin ang iyong Deuro sa anumang oras.",
259 "deuro_savings_collect_interest": "Mangolekta ng interes",
260 + "deuro_savings_collect_interest_tooltip": "Ito ay kumakatawan sa iyong kasalukuyang nakuha na interes, na maaari mong kolektahin sa iyong balanse ng Deuro sa anumang oras.",
261 "deuro_savings_remove": "Umatras",
262 "deuro_savings_set_approval": "Itakda ang pag -apruba",
263 "deuro_savings_subtitle": "Kumita ng hanggang sa 10% na interes sa iyong mga hawak na Deuro StableCoin",
264 + "deuro_savings_welcome_description": "Ang Deuro ay isang ganap na desentralisado, collateralized stableCoin na naka-peg sa euro-secure, maraming nalalaman, at lumalaban sa censorship nang hindi kinakailangang umasa sa mga orakulo. 1 deuro = 1 euro.",
265 + "deuro_tooltip_no_eth": "Upang paganahin ang Deuro, dapat kang magkaroon ng ETH sa iyong pitaka.",
266 "deuro_tx_commited_content": "Maaaring tumagal ng ilang segundo para sa transaksyon upang kumpirmahin at maipakita sa screen",
267 "device_is_signing": "Nag -sign ang aparato",
268 "dfx_option_description": "Bumili ng crypto kasama ang EUR & CHF. Para sa mga retail customer at corporate customer sa Europe",
@@ -1077,6 +1087,7 @@
1087 "walletConnect": "WalletConnect",
1088 "wallets": "Mga Wallet",
1089 "warning": "Babala",
1090 + "website": "Website",
1091 "welcome": "Maligayang pagdating",
1092 "welcome_subtitle_new_wallet": "Kung nais mong simulan ang sariwa, tapikin ang Lumikha ng Bagong Wallet sa ibaba at pupunta ka sa mga karera.",
1093 "welcome_subtitle_restore_wallet": "Kung mayroon kang isang umiiral na pitaka na nais mong dalhin sa cake, piliin lamang ang ibalik ang umiiral na pitaka at lalakad ka namin sa proseso.",
res/values/strings_tr.arb
+11
@@ -245,14 +245,24 @@
245 "descending": "Azalan",
246 "description": "Tanım",
247 "destination_tag": "Hedef Etiketi:",
248 + "deuro_about_deuro": "Deuro hakkında",
249 "deuro_collect_interest": "TOPLAMAK",
250 + "deuro_reinvest_interest": "Yeniden yatırım yapmak",
251 "deuro_savings": "dEuro Tasarruf",
252 "deuro_savings_add": "Yatırmak",
253 + "deuro_savings_approve_app": "Uygulamayı onaylayın",
254 + "deuro_savings_approve_app_description": "Deuro Smart Sözleşmesinin Deuro Jetonlarınızı tasarruf için yönetmesine izin verin, ancak Deuro'nuzu gönderme veya alma yeteneği değil.",
255 + "deuro_savings_available_to_add": "Eklenecek",
256 + "deuro_savings_available_to_remove": "Kaldırma için kullanılabilir",
257 "deuro_savings_balance": "Tasarruf Bakiyesi",
258 + "deuro_savings_balance_tooltip": "Bu, zaman içinde faiz tahakkuk eden mevcut tasarruf bakiyenizi temsil eder. Deuro'nuzu herhangi bir zamanda yatırabilir veya çekebilirsiniz.",
259 "deuro_savings_collect_interest": "İlgi toplamak",
260 + "deuro_savings_collect_interest_tooltip": "Bu, herhangi bir zamanda Deuro dengenize toplayabileceğiniz mevcut kazandığınız faizi temsil eder.",
261 "deuro_savings_remove": "Geri çekilmek",
262 "deuro_savings_set_approval": "Onay ayarlamak",
263 "deuro_savings_subtitle": "Deuro StableCoin Holdings'e% 10'a kadar faiz kazanın",
264 + "deuro_savings_welcome_description": "Deuro, Euro'ya sabitlenmiş tamamen merkezi olmayan, teminatlı bir stablecoin-kehanetlere güvenmek zorunda kalmadan güvenli, çok yönlü ve sansür dirençli. 1 Deuro = 1 Euro.",
265 + "deuro_tooltip_no_eth": "Deuro'yu etkinleştirmek için cüzdanınızda ETH olması gerekir.",
266 "deuro_tx_commited_content": "İşlemin onaylaması ve ekrana yansıtılması birkaç saniye sürebilir",
267 "device_is_signing": "Cihaz imzalıyor",
268 "dfx_option_description": "Eur & chf ile kripto satın alın. Avrupa'daki perakende ve kurumsal müşteriler için",
@@ -1077,6 +1087,7 @@
1087 "walletConnect": "WalletConnect",
1088 "wallets": "Cüzdanlar",
1089 "warning": "Uyarı",
1090 + "website": "Web sitesi",
1091 "welcome": "Hoş geldin",
1092 "welcome_subtitle_new_wallet": "Taze başlamak istiyorsanız, aşağıda yeni cüzdan oluşturun ve yarışlara gidersiniz.",
1093 "welcome_subtitle_restore_wallet": "Mevcut bir cüzdanınız varsa, kek içine getirmek istediğiniz, mevcut cüzdanı geri yüklemeyi seçin ve bu süreç boyunca size yol gösterelim.",
res/values/strings_uk.arb
+11
@@ -245,14 +245,24 @@
245 "descending": "Низхідний",
246 "description": "опис",
247 "destination_tag": "Тег призначення:",
248 + "deuro_about_deuro": "Про Deuro",
249 "deuro_collect_interest": "Збирати",
250 + "deuro_reinvest_interest": "Реінвестувати",
251 "deuro_savings": "заощадження dEuro",
252 "deuro_savings_add": "Депозит",
253 + "deuro_savings_approve_app": "Затвердити додаток",
254 + "deuro_savings_approve_app_description": "Дозвольте смарт -контракту Deuro керувати вашими жетонами Deuro для заощаджень, але не здатністю відправляти або приймати Deuro.",
255 + "deuro_savings_available_to_add": "Доступно додати",
256 + "deuro_savings_available_to_remove": "Доступно для видалення",
257 "deuro_savings_balance": "Баланс заощаджень",
258 + "deuro_savings_balance_tooltip": "Це являє собою поточний баланс заощаджень, який з часом отримає інтерес. Ви можете депозити або зняти свій Deuro в будь -який момент часу.",
259 "deuro_savings_collect_interest": "Збирати інтерес",
260 + "deuro_savings_collect_interest_tooltip": "Це представляє ваш поточний зароблений інтерес, який ви можете в будь -який час зібрати свій баланс Deuro.",
261 "deuro_savings_remove": "Відступати",
262 "deuro_savings_set_approval": "Встановити схвалення",
263 "deuro_savings_subtitle": "Заробляйте до 10% відсотків на ваших Holdings Deuro StableCoin",
264 + "deuro_savings_welcome_description": "Deuro-це повністю децентралізований, колатералізований стаблекуїн, прив’язаний до євро-безпечного, універсального та стійкого до цензури, не покладаючись на оракули. 1 Deuro = 1 євро.",
265 + "deuro_tooltip_no_eth": "Для того, щоб увімкнути Deuro, ви повинні мати ETH у своєму гаманці.",
266 "deuro_tx_commited_content": "Це може знадобитися кілька секунд, щоб транзакція підтвердила та відображалася на екрані",
267 "device_is_signing": "Пристрій підписується",
268 "dfx_option_description": "Купуйте криптовалюту з EUR & CHF. Для роздрібних та корпоративних клієнтів у Європі",
@@ -1078,6 +1088,7 @@
1088 "walletConnect": "WalletConnect",
1089 "wallets": "Гаманці",
1090 "warning": "УВАГА",
1091 + "website": "Веб -сайт",
1092 "welcome": "Вітати",
1093 "welcome_subtitle_new_wallet": "Якщо ви хочете почати спочатку, торкніться Створити новий гаманець нижче, і ви будете поза конкуренціею.",
1094 "welcome_subtitle_restore_wallet": "Якщо у вас є існуючий гаманець, який ви хочете ввести в торт, просто виберіть Відновити існуючий гаманець, і ми проведемо вас через процес.",
res/values/strings_ur.arb
+11
@@ -245,14 +245,24 @@
245 "descending": "اترتے ہوئے",
246 "description": "ﻞﯿﺼﻔﺗ",
247 "destination_tag": "منزل کا ٹیگ:",
248 + "deuro_about_deuro": "ڈیورو کے بارے میں",
249 "deuro_collect_interest": "جمع کریں",
250 + "deuro_reinvest_interest": "دوبارہ لگائیں",
251 "deuro_savings": "ڈیورو کی بچت",
252 "deuro_savings_add": "جمع کروائیں",
253 + "deuro_savings_approve_app": "ایپ کو منظور کریں",
254 + "deuro_savings_approve_app_description": "ڈیورو سمارٹ معاہدے کو بچت کے ل your اپنے ڈیورو ٹوکن کا انتظام کرنے کی اجازت دیں ، لیکن اپنے ڈورو بھیجنے یا لینے کی صلاحیت نہیں۔",
255 + "deuro_savings_available_to_add": "شامل کرنے کے لئے دستیاب ہے",
256 + "deuro_savings_available_to_remove": "ہٹانے کے لئے دستیاب ہے",
257 "deuro_savings_balance": "بچت کا توازن",
258 + "deuro_savings_balance_tooltip": "یہ آپ کے موجودہ بچت کے توازن کی نمائندگی کرتا ہے ، جو وقت کے ساتھ دلچسپی حاصل کرے گا۔ آپ کسی بھی وقت اپنے ڈیورو کو جمع کروا سکتے ہیں یا واپس لے سکتے ہیں۔",
259 "deuro_savings_collect_interest": "دلچسپی جمع کریں",
260 + "deuro_savings_collect_interest_tooltip": "یہ آپ کی موجودہ کمائی ہوئی دلچسپی کی نمائندگی کرتا ہے ، جسے آپ کسی بھی وقت اپنے ڈیورو بیلنس میں جمع کرسکتے ہیں۔",
261 "deuro_savings_remove": "واپس لے لو",
262 "deuro_savings_set_approval": "منظوری طے کریں",
263 "deuro_savings_subtitle": "اپنے ڈیورو اسٹبل کوئن ہولڈنگز پر 10 ٪ سود حاصل کریں",
264 + "deuro_savings_welcome_description": "ڈیورو ایک مکمل طور پر विकेंद्रीकृत ، خودکش حملہ اسٹیبلکوائن ہے جو یورو میں کھڑا ہوتا ہے-محفوظ ، ورسٹائل اور سنسرشپ سے مزاحم بغیر کسی پر بھروسہ کرنے کے۔ 1 ڈیورو = 1 یورو۔",
265 + "deuro_tooltip_no_eth": "ڈیورو کو قابل بنانے کے ل you ، آپ کو اپنے بٹوے میں ETH ہونا ضروری ہے۔",
266 "deuro_tx_commited_content": "لین دین کی تصدیق اور اسکرین پر عکاسی کرنے میں اس میں کچھ سیکنڈ لگ سکتے ہیں",
267 "device_is_signing": "ڈیوائس پر دستخط کر رہے ہیں",
268 "dfx_option_description": "یورو اور سی ایچ ایف کے ساتھ کرپٹو خریدیں۔ یورپ میں خوردہ اور کارپوریٹ صارفین کے لئے",
@@ -1079,6 +1089,7 @@
1089 "walletConnect": "WalletConnect",
1090 "wallets": "بٹوے",
1091 "warning": "وارننگ",
1092 + "website": "ویب سائٹ",
1093 "welcome": "خوش آمدید",
1094 "welcome_subtitle_new_wallet": "اگر آپ تازہ شروع کرنا چاہتے ہیں تو ، نیچے نیا پرس بنائیں پر تھپتھپائیں اور آپ ریسوں پر جائیں گے۔",
1095 "welcome_subtitle_restore_wallet": "اگر آپ کے پاس موجودہ پرس ہے تو آپ کیک میں لانا چاہتے ہیں تو ، موجودہ بٹوے کو بحال کریں کا انتخاب کریں اور ہم آپ کو اس عمل میں چلیں گے۔",
res/values/strings_vi.arb
+11
@@ -244,14 +244,24 @@
244 "descending": "Giảm dần",
245 "description": "Mô tả",
246 "destination_tag": "Thẻ đích:",
247 + "deuro_about_deuro": "Về Deuro",
248 "deuro_collect_interest": "Sưu tầm",
249 + "deuro_reinvest_interest": "Tái đầu tư",
250 "deuro_savings": "Tiết kiệm dEuro",
251 "deuro_savings_add": "Tiền gửi",
252 + "deuro_savings_approve_app": "Ứng dụng phê duyệt",
253 + "deuro_savings_approve_app_description": "Cho phép hợp đồng thông minh Deuro để quản lý mã thông báo Deuro của bạn để tiết kiệm, nhưng không phải là khả năng gửi hoặc lấy Deuro của bạn.",
254 + "deuro_savings_available_to_add": "Có sẵn để thêm",
255 + "deuro_savings_available_to_remove": "Có sẵn để loại bỏ",
256 "deuro_savings_balance": "Số dư tiết kiệm",
257 + "deuro_savings_balance_tooltip": "Điều này thể hiện số dư tiết kiệm hiện tại của bạn, sẽ tích lũy lãi theo thời gian. Bạn có thể gửi hoặc rút Deuro của bạn tại bất kỳ thời điểm nào.",
258 "deuro_savings_collect_interest": "Thu tiền lãi",
259 + "deuro_savings_collect_interest_tooltip": "Điều này thể hiện sự quan tâm kiếm được hiện tại của bạn, mà bạn có thể thu thập vào số dư Deuro của mình bất cứ lúc nào.",
260 "deuro_savings_remove": "Rút",
261 "deuro_savings_set_approval": "Đặt phê duyệt",
262 "deuro_savings_subtitle": "Kiếm tới 10% tiền lãi cho Deuro Storcoin Holdings của bạn",
263 + "deuro_savings_welcome_description": "Deuro là một stablecoin phi tập trung, tài sản thế chấp hoàn toàn được gắn với đồng euro-an toàn, linh hoạt và chống kiểm duyệt mà không phải dựa vào các nhà tiên tri. 1 Deuro = 1 Euro.",
264 + "deuro_tooltip_no_eth": "Để cho phép Deuro, bạn phải có ETH trong ví của mình.",
265 "deuro_tx_commited_content": "Có thể mất vài giây để giao dịch xác nhận và được phản ánh trên màn hình",
266 "device_is_signing": "Thiết bị đang ký",
267 "dfx_option_description": "Mua tiền điện tử bằng EUR & CHF. Dành cho khách hàng bán lẻ và doanh nghiệp tại Châu Âu",
@@ -1074,6 +1084,7 @@
1084 "walletConnect": "WalletConnect",
1085 "wallets": "Các ví",
1086 "warning": "Cảnh báo",
1087 + "website": "Trang web",
1088 "welcome": "Chào mừng",
1089 "welcome_subtitle_new_wallet": "Nếu bạn muốn bắt đầu mới, hãy nhấn Tạo ví mới bên dưới và bạn sẽ rời khỏi các cuộc đua.",
1090 "welcome_subtitle_restore_wallet": "Nếu bạn có một ví hiện có mà bạn muốn mang vào bánh, chỉ cần chọn khôi phục ví hiện có và chúng tôi sẽ hướng dẫn bạn qua quá trình này.",
res/values/strings_yo.arb
+11
@@ -245,14 +245,24 @@
245 "descending": "Sọkalẹ",
246 "description": "Apejuwe",
247 "destination_tag": "Orúkọ tí ìbí tó a ránṣẹ́ sí:",
248 + "deuro_about_deuro": "Nipa deuro",
249 "deuro_collect_interest": "Kojọ",
250 + "deuro_reinvest_interest": "Reinvest",
251 "deuro_savings": "dEuro Awọn ifowopamọ",
252 "deuro_savings_add": "Owo ifipamọ",
253 + "deuro_savings_approve_app": "Gba app app",
254 + "deuro_savings_approve_app_description": "Gba adehun Deuro Smart Deur Lati Ṣakoso awọn ami-iwọle Dura rẹ fun awọn ifowopamọ, ṣugbọn kii ṣe agbara lati firanṣẹ tabi mu deuroo rẹ.",
255 + "deuro_savings_available_to_add": "Wa lati ṣafikun",
256 + "deuro_savings_available_to_remove": "Wa lati yọ kuro",
257 "deuro_savings_balance": "Iwontunws.funfun ifowopamọ",
258 + "deuro_savings_balance_tooltip": "Eyi duro fun iwọntunwọnsi awọn ifipamọ lọwọlọwọ, eyiti yoo gba anfani pupọ lori akoko. O le gbe okun sii tabi yọ fun deroo ni eyikeyi akoko ti a fun.",
259 "deuro_savings_collect_interest": "Gba iwulo",
260 + "deuro_savings_collect_interest_tooltip": "Eyi duro fun ifẹ ti o ni iṣiro lọwọlọwọ rẹ, eyiti o le gba sinu dọgbadọgba Durro rẹ nigbakugba.",
261 "deuro_savings_remove": "Yọkuro",
262 "deuro_savings_set_approval": "Ṣeto ifọwọsi",
263 "deuro_savings_subtitle": "Jo'gun to 10% iwulo lori awọn idaduro Duroblockoin rẹ",
264 + "deuro_savings_welcome_description": "Deurro jẹ iyọrisi ni kikun, stablecoin ti ko ni aabo si Euro - aabo, gbogbopọ, ati isọdọmọ-sooro laisi wọn lati gbekele awọn ipin. 1 deuro = 1 Euro.",
265 + "deuro_tooltip_no_eth": "Ni ibere lati mu deur deuru, o gbọdọ ni o wa ninu apamọwọ rẹ.",
266 "deuro_tx_commited_content": "O le gba tọkọtaya kan ti awọn aaya fun idunadura lati jẹrisi ati ṣe afihan loju iboju",
267 "device_is_signing": "Ẹrọ n forukọsilẹ",
268 "dfx_option_description": "Ra Crypto pẹlu EUR & CHF. Fun soobu ati awọn alabara ile-iṣẹ ni Yuroopu",
@@ -1078,6 +1088,7 @@
1088 "walletConnect": "Asopọmọra apamọwọ",
1089 "wallets": "Àwọn àpamọ́wọ́",
1090 "warning": "Ikilo",
1091 + "website": "Oju opo wẹẹbu",
1092 "welcome": "Kaabọ",
1093 "welcome_subtitle_new_wallet": "Ti o ba fẹ bẹrẹ alabapade, tẹ Ṣẹda apamọwọ tuntun ni isalẹ iwọ yoo wa ni pipa si awọn ere-ije.",
1094 "welcome_subtitle_restore_wallet": "Ti o ba ni apamọwọ ti o wa tẹlẹ ti o fẹ lati mu wa sinu akara oyinbo, yan omi apamọwọ wa tẹlẹ ati pe a yoo rin ọ nipasẹ ilana naa.",
res/values/strings_zh.arb
+11
@@ -245,14 +245,24 @@
245 "descending": "下降",
246 "description": "描述",
247 "destination_tag": "目标Tag:",
248 + "deuro_about_deuro": "关于Deuro",
249 "deuro_collect_interest": "收集",
250 + "deuro_reinvest_interest": "再投资",
251 "deuro_savings": "dEuro储蓄",
252 "deuro_savings_add": "订金",
253 + "deuro_savings_approve_app": "批准应用程序",
254 + "deuro_savings_approve_app_description": "允许Deuro Smart合同管理您的Deuro代币以节省,但不使用发送或拿出Deuro的能力。",
255 + "deuro_savings_available_to_add": "可添加",
256 + "deuro_savings_available_to_remove": "可删除",
257 "deuro_savings_balance": "储蓄平衡",
258 + "deuro_savings_balance_tooltip": "这代表您当前的储蓄余额,这将随着时间的推移产生利息。您可以在任何给定时间存入或撤回Deuro。",
259 "deuro_savings_collect_interest": "收集兴趣",
260 + "deuro_savings_collect_interest_tooltip": "这代表了您目前的利息,您可以随时收集到Deuro的余额中。",
261 "deuro_savings_remove": "提取",
262 "deuro_savings_set_approval": "设定批准",
263 "deuro_savings_subtitle": "您的Deuro Stablecoin Holdings最多可赚取10%的利息",
264 + "deuro_savings_welcome_description": "Deuro是一个完全分散的,抵押的STABLECOIN,与欧元固定在一起 - 安全,多功能和耐心制度,而不必依靠Oracles。 1 deuro = 1欧元。",
265 + "deuro_tooltip_no_eth": "为了启用deuro,您必须在钱包里有ETH。",
266 "deuro_tx_commited_content": "交易可能需要几秒钟才能确认并在屏幕上反射",
267 "device_is_signing": "设备正在签名",
268 "dfx_option_description": "用Eur&Chf购买加密货币。对于欧洲的零售和企业客户",
@@ -1077,6 +1087,7 @@
1087 "walletConnect": "钱包连接",
1088 "wallets": "钱包",
1089 "warning": "警告",
1090 + "website": "网站",
1091 "welcome": "欢迎",
1092 "welcome_subtitle_new_wallet": "如果您想开始新鲜,请点击下面的创建新钱包,您将参加比赛。",
1093 "welcome_subtitle_restore_wallet": "如果您有一个现有的钱包要把蛋糕带入蛋糕,只需选择还原现有的钱包,我们将带您完成整个过程。",
tool/configure.dart
+1
@@ -755,6 +755,7 @@ abstract class Ethereum {
755 Future<BigInt> getDEuroSavingsApproved(WalletBase wallet);
756 Future<PendingTransaction> addDEuroSaving(WalletBase wallet, BigInt amount, TransactionPriority priority);
757 Future<PendingTransaction> removeDEuroSaving(WalletBase wallet, BigInt amount, TransactionPriority priority);
758 + Future<PendingTransaction> reinvestDEuroInterest(WalletBase wallet, TransactionPriority priority);
759 Future<PendingTransaction> enableDEuroSaving(WalletBase wallet, TransactionPriority priority);
760
761 void setLedgerConnection(WalletBase wallet, ledger.LedgerConnection connection);