update sending template text
Godwin Asuquo committed
Jan 12, 2022 at 18:58 UTC
3115798b707f9f7ef53a848f960fa0fa2fa104af
15 files changed
+233
-213
lib/src/screens/send/send_page.dart
+191
-199
@@ -26,7 +26,7 @@ import 'package:cake_wallet/store/yat/yat_store.dart';
26
import 'package:cake_wallet/src/screens/yat/yat_sending.dart';
27
28
class SendPage extends BasePage {
29
- SendPage({@required this.sendViewModel}) :_formKey = GlobalKey<FormState>();
29
+ SendPage({@required this.sendViewModel}) : _formKey = GlobalKey<FormState>();
30
31
final SendViewModel sendViewModel;
32
final GlobalKey<FormState> _formKey;
@@ -51,24 +51,24 @@ class SendPage extends BasePage {
51
52
@override
53
Widget trailing(context) => Observer(builder: (_) {
54
- return sendViewModel.isBatchSending
55
- ? TrailButton(
56
- caption: S.of(context).remove,
57
- onPressed: () {
58
- var pageToJump = controller.page.round() - 1;
59
- pageToJump = pageToJump > 0 ? pageToJump : 0;
60
- final output = _defineCurrentOutput();
61
- sendViewModel.removeOutput(output);
62
- controller.jumpToPage(pageToJump);
63
- })
64
- : TrailButton(
65
- caption: S.of(context).clear,
66
- onPressed: () {
67
- final output = _defineCurrentOutput();
68
- _formKey.currentState.reset();
69
- output.reset();
70
- });
71
- });
54
+ return sendViewModel.isBatchSending
55
+ ? TrailButton(
56
+ caption: S.of(context).remove,
57
+ onPressed: () {
58
+ var pageToJump = controller.page.round() - 1;
59
+ pageToJump = pageToJump > 0 ? pageToJump : 0;
60
+ final output = _defineCurrentOutput();
61
+ sendViewModel.removeOutput(output);
62
+ controller.jumpToPage(pageToJump);
63
+ })
64
+ : TrailButton(
65
+ caption: S.of(context).clear,
66
+ onPressed: () {
67
+ final output = _defineCurrentOutput();
68
+ _formKey.currentState.reset();
69
+ output.reset();
70
+ });
71
+ });
72
73
@override
74
Widget body(BuildContext context) {
@@ -96,57 +96,39 @@ class SendPage extends BasePage {
96
output: output,
97
sendViewModel: sendViewModel,
98
);
99
- }
100
- );
99
+ });
100
},
102
- )
103
- ),
101
+ )),
102
Padding(
105
- padding: EdgeInsets.only(top: 10, left: 24, right: 24, bottom: 10),
106
- child: Container(
107
- height: 10,
108
- child: Observer(builder: (_) {
109
- final count = sendViewModel.outputs.length;
103
+ padding:
104
+ EdgeInsets.only(top: 10, left: 24, right: 24, bottom: 10),
105
+ child: Container(
106
+ height: 10,
107
+ child: Observer(
108
+ builder: (_) {
109
+ final count = sendViewModel.outputs.length;
110
111
- return count > 1
111
+ return count > 1
112
? SmoothPageIndicator(
113
- controller: controller,
114
- count: count,
115
- effect: ScrollingDotsEffect(
116
- spacing: 6.0,
117
- radius: 6.0,
118
- dotWidth: 6.0,
119
- dotHeight: 6.0,
120
- dotColor: Theme.of(context)
121
- .primaryTextTheme
122
- .display2
123
- .backgroundColor,
124
- activeDotColor: Theme.of(context)
125
- .primaryTextTheme
126
- .display3
127
- .backgroundColor
113
+ controller: controller,
114
+ count: count,
115
+ effect: ScrollingDotsEffect(
116
+ spacing: 6.0,
117
+ radius: 6.0,
118
+ dotWidth: 6.0,
119
+ dotHeight: 6.0,
120
+ dotColor: Theme.of(context)
121
+ .primaryTextTheme
122
+ .display2
123
+ .backgroundColor,
124
+ activeDotColor: Theme.of(context)
125
+ .primaryTextTheme
126
+ .display3
127
+ .backgroundColor),
128
)
129
- )
129
: Offstage();
131
- })
132
- )
133
- ),
134
- Padding(
135
- padding: EdgeInsets.only(left: 24, bottom: 24),
136
- child: Row(
137
- mainAxisAlignment: MainAxisAlignment.start,
138
- children: <Widget>[
139
- Text(
140
- S.of(context).send_templates,
141
- style: TextStyle(
142
- fontSize: 18,
143
- fontWeight: FontWeight.w600,
144
- color: Theme.of(context)
145
- .primaryTextTheme
146
- .display4
147
- .color),
148
- )
149
- ],
130
+ },
131
+ ),
132
),
133
),
134
Container(
@@ -155,51 +137,60 @@ class SendPage extends BasePage {
137
padding: EdgeInsets.only(left: 24),
138
child: SingleChildScrollView(
139
scrollDirection: Axis.horizontal,
158
- child: Row(
159
- children: <Widget>[
160
- GestureDetector(
161
- onTap: () => Navigator.of(context)
162
- .pushNamed(Routes.sendTemplate),
163
- child: Container(
164
- padding: EdgeInsets.only(left: 1, right: 10),
165
- child: DottedBorder(
166
- borderType: BorderType.RRect,
167
- dashPattern: [6, 4],
168
- color: Theme.of(context)
169
- .primaryTextTheme
170
- .display2
171
- .decorationColor,
172
- strokeWidth: 2,
173
- radius: Radius.circular(20),
174
- child: Container(
175
- height: 34,
176
- width: 75,
177
- padding:
178
- EdgeInsets.only(left: 10, right: 10),
179
- alignment: Alignment.center,
180
- decoration: BoxDecoration(
181
- borderRadius:
182
- BorderRadius.all(Radius.circular(20)),
183
- color: Colors.transparent,
184
- ),
185
- child: Text(
186
- S.of(context).send_new,
187
- style: TextStyle(
188
- fontSize: 14,
189
- fontWeight: FontWeight.w600,
190
- color: Theme.of(context)
191
- .primaryTextTheme
192
- .display3
193
- .color),
194
- ),
195
- )),
196
- ),
197
- ),
198
- Observer(builder: (_) {
199
- final templates = sendViewModel.templates;
200
- final itemCount = templates.length;
140
+ child: Observer(
141
+ builder: (_) {
142
+ final templates = sendViewModel.templates;
143
+ final itemCount = templates.length;
144
202
- return ListView.builder(
145
+ return Row(
146
+ children: <Widget>[
147
+ GestureDetector(
148
+ onTap: () => Navigator.of(context)
149
+ .pushNamed(Routes.sendTemplate),
150
+ child: Container(
151
+ padding: EdgeInsets.only(left: 1, right: 10),
152
+ child: DottedBorder(
153
+ borderType: BorderType.RRect,
154
+ dashPattern: [6, 4],
155
+ color: Theme.of(context)
156
+ .primaryTextTheme
157
+ .headline2
158
+ .decorationColor,
159
+ strokeWidth: 2,
160
+ radius: Radius.circular(20),
161
+ child: Container(
162
+ height: 34,
163
+ padding: EdgeInsets.only(left: 10, right: 10),
164
+ alignment: Alignment.center,
165
+ decoration: BoxDecoration(
166
+ borderRadius:
167
+ BorderRadius.all(Radius.circular(20)),
168
+ color: Colors.transparent,
169
+ ),
170
+ child: templates.length >= 1
171
+ ? Icon(
172
+ Icons.add,
173
+ color: Theme.of(context)
174
+ .primaryTextTheme
175
+ .display3
176
+ .color,
177
+ )
178
+ : Text(
179
+ S.of(context).new_template,
180
+ style: TextStyle(
181
+ fontSize: 14,
182
+ fontWeight: FontWeight.w600,
183
+ color: Theme.of(context)
184
+ .primaryTextTheme
185
+ .display3
186
+ .color,
187
+ ),
188
+ ),
189
+ ),
190
+ ),
191
+ ),
192
+ ),
193
+ ListView.builder(
194
scrollDirection: Axis.horizontal,
195
shrinkWrap: true,
196
physics: NeverScrollableScrollPhysics(),
@@ -214,109 +205,108 @@ class SendPage extends BasePage {
205
from: template.cryptoCurrency,
206
onTap: () async {
207
final output = _defineCurrentOutput();
217
- output.address =
218
- template.address;
208
+ output.address = template.address;
209
output.setCryptoAmount(template.amount);
210
output.resetParsedAddress();
211
await output.fetchParsedAddress(context);
212
},
213
onRemove: () {
214
showPopUp<void>(
225
- context: context,
226
- builder: (dialogContext) {
227
- return AlertWithTwoActions(
228
- alertTitle:
229
- S.of(context).template,
230
- alertContent: S
231
- .of(context)
232
- .confirm_delete_template,
233
- rightButtonText:
234
- S.of(context).delete,
235
- leftButtonText:
236
- S.of(context).cancel,
237
- actionRightButton: () {
215
+ context: context,
216
+ builder: (dialogContext) {
217
+ return AlertWithTwoActions(
218
+ alertTitle: S.of(context).template,
219
+ alertContent: S
220
+ .of(context)
221
+ .confirm_delete_template,
222
+ rightButtonText: S.of(context).delete,
223
+ leftButtonText: S.of(context).cancel,
224
+ actionRightButton: () {
225
+ Navigator.of(dialogContext).pop();
226
+ sendViewModel.sendTemplateViewModel
227
+ .removeTemplate(
228
+ template: template);
229
+ },
230
+ actionLeftButton: () =>
231
Navigator.of(dialogContext)
239
- .pop();
240
- sendViewModel
241
- .sendTemplateViewModel
242
- .removeTemplate(
243
- template: template);
244
- },
245
- actionLeftButton: () =>
246
- Navigator.of(dialogContext)
247
- .pop());
248
- });
232
+ .pop());
233
+ },
234
+ );
235
},
236
);
251
- });
252
- })
253
- ],
237
+ },
238
+ ),
239
+ ],
240
+ );
241
+ },
242
),
243
),
244
)
245
],
246
),
247
bottomSectionPadding:
260
- EdgeInsets.only(left: 24, right: 24, bottom: 24),
248
+ EdgeInsets.only(left: 24, right: 24, bottom: 24),
249
bottomSection: Column(
250
children: [
251
Padding(
264
- padding: EdgeInsets.only(bottom: 12),
265
- child: PrimaryButton(
266
- onPressed: () {
267
- sendViewModel.addOutput();
268
- Future.delayed(const Duration(milliseconds: 250), () {
269
- controller.jumpToPage(sendViewModel.outputs.length - 1);
270
- });
271
- },
272
- text: S.of(context).add_receiver,
273
- color: Colors.transparent,
274
- textColor: Theme.of(context)
275
- .accentTextTheme
276
- .display2
277
- .decorationColor,
278
- isDottedBorder: true,
279
- borderColor: Theme.of(context)
280
- .primaryTextTheme
281
- .display2
282
- .decorationColor,
283
- )
284
- ),
285
- Observer(builder: (_) {
286
- return LoadingPrimaryButton(
287
- onPressed: () async {
288
- if (!_formKey.currentState.validate()) {
289
- if (sendViewModel.outputs.length > 1) {
290
- showErrorValidationAlert(context);
291
- }
252
+ padding: EdgeInsets.only(bottom: 12),
253
+ child: PrimaryButton(
254
+ onPressed: () {
255
+ sendViewModel.addOutput();
256
+ Future.delayed(const Duration(milliseconds: 250), () {
257
+ controller.jumpToPage(sendViewModel.outputs.length - 1);
258
+ });
259
+ },
260
+ text: S.of(context).add_receiver,
261
+ color: Colors.transparent,
262
+ textColor: Theme.of(context)
263
+ .accentTextTheme
264
+ .display2
265
+ .decorationColor,
266
+ isDottedBorder: true,
267
+ borderColor: Theme.of(context)
268
+ .primaryTextTheme
269
+ .display2
270
+ .decorationColor,
271
+ )),
272
+ Observer(
273
+ builder: (_) {
274
+ return LoadingPrimaryButton(
275
+ onPressed: () async {
276
+ if (!_formKey.currentState.validate()) {
277
+ if (sendViewModel.outputs.length > 1) {
278
+ showErrorValidationAlert(context);
279
+ }
280
293
- return;
294
- }
281
+ return;
282
+ }
283
296
- final notValidItems = sendViewModel.outputs
297
- .where((item) =>
298
- item.address.isEmpty || item.cryptoAmount.isEmpty)
299
- .toList();
284
+ final notValidItems = sendViewModel.outputs
285
+ .where((item) =>
286
+ item.address.isEmpty || item.cryptoAmount.isEmpty)
287
+ .toList();
288
301
- if (notValidItems?.isNotEmpty ?? false) {
302
- showErrorValidationAlert(context);
303
- return;
304
- }
289
+ if (notValidItems?.isNotEmpty ?? false) {
290
+ showErrorValidationAlert(context);
291
+ return;
292
+ }
293
306
- await sendViewModel.createTransaction();
294
+ await sendViewModel.createTransaction();
295
308
- if (!sendViewModel.isBatchSending && sendViewModel.hasYat) {
309
- Navigator.of(context).push<void>(YatSending.createRoute(sendViewModel));
310
- }
311
- },
312
- text: S.of(context).send,
313
- color: Theme.of(context).accentTextTheme.body2.color,
314
- textColor: Colors.white,
315
- isLoading: sendViewModel.state is IsExecutingState ||
316
- sendViewModel.state is TransactionCommitting,
317
- isDisabled: !sendViewModel.isReadyForSend,
318
- );
319
- },
296
+ if (!sendViewModel.isBatchSending &&
297
+ sendViewModel.hasYat) {
298
+ Navigator.of(context)
299
+ .push<void>(YatSending.createRoute(sendViewModel));
300
+ }
301
+ },
302
+ text: S.of(context).send,
303
+ color: Theme.of(context).accentTextTheme.body2.color,
304
+ textColor: Colors.white,
305
+ isLoading: sendViewModel.state is IsExecutingState ||
306
+ sendViewModel.state is TransactionCommitting,
307
+ isDisabled: !sendViewModel.isReadyForSend,
308
+ );
309
+ },
310
)
311
],
312
)),
@@ -343,8 +333,8 @@ class SendPage extends BasePage {
333
});
334
}
335
346
- if (state is ExecutedSuccessfullyState
347
- && !(!sendViewModel.isBatchSending && sendViewModel.hasYat)) {
336
+ if (state is ExecutedSuccessfullyState &&
337
+ !(!sendViewModel.isBatchSending && sendViewModel.hasYat)) {
338
WidgetsBinding.instance.addPostFrameCallback((_) {
339
showPopUp<void>(
340
context: context,
@@ -353,13 +343,17 @@ class SendPage extends BasePage {
343
alertTitle: S.of(context).confirm_sending,
344
amount: S.of(context).send_amount,
345
amountValue:
356
- sendViewModel.pendingTransaction.amountFormatted,
357
- fiatAmountValue: sendViewModel.pendingTransactionFiatAmount
358
- + ' ' + sendViewModel.fiat.title,
346
+ sendViewModel.pendingTransaction.amountFormatted,
347
+ fiatAmountValue:
348
+ sendViewModel.pendingTransactionFiatAmount +
349
+ ' ' +
350
+ sendViewModel.fiat.title,
351
fee: S.of(context).send_fee,
352
feeValue: sendViewModel.pendingTransaction.feeFormatted,
361
- feeFiatAmount: sendViewModel.pendingTransactionFeeFiatAmount
362
- + ' ' + sendViewModel.fiat.title,
353
+ feeFiatAmount:
354
+ sendViewModel.pendingTransactionFeeFiatAmount +
355
+ ' ' +
356
+ sendViewModel.fiat.title,
357
outputs: sendViewModel.outputs,
358
rightButtonText: S.of(context).ok,
359
leftButtonText: S.of(context).cancel,
@@ -380,8 +374,7 @@ class SendPage extends BasePage {
374
return AlertWithOneAction(
375
alertTitle: '',
376
alertContent: S.of(context).send_success(
383
- sendViewModel.currency
384
- .toString()),
377
+ sendViewModel.currency.toString()),
378
buttonText: S.of(context).ok,
379
buttonAction: () =>
380
Navigator.of(context).pop());
@@ -419,8 +412,7 @@ class SendPage extends BasePage {
412
alertTitle: S.of(context).error,
413
alertContent: 'Please, check receiver forms',
414
buttonText: S.of(context).ok,
422
- buttonAction: () =>
423
- Navigator.of(context).pop());
415
+ buttonAction: () => Navigator.of(context).pop());
416
});
417
}
418
}
res/values/strings_de.arb
+3
-1
@@ -516,5 +516,7 @@
516
"second_intro_content" : "Ihr Yat ist eine einzige eindeutige Emoji-Adresse, die alle Ihre langen hexadezimalen Adressen für alle Ihre Währungen ersetzt.",
517
"third_intro_title" : "Yat spielt gut mit anderen",
518
"third_intro_content" : "Yats leben auch außerhalb von Cake Wallet. Jede Wallet-Adresse auf der Welt kann durch ein Yat ersetzt werden!",
519
- "learn_more" : "Erfahren Sie mehr"
519
+ "learn_more" : "Erfahren Sie mehr",
520
+
521
+ "new_template" : "neue Vorlage"
522
}
res/values/strings_en.arb
+3
-1
@@ -517,5 +517,7 @@
517
"second_intro_content" : "Your Yat is a single unique emoji address that replaces all of your long hexadecimal addresses for all of your currencies.",
518
"third_intro_title" : "Yat plays nicely with others",
519
"third_intro_content" : "Yats live outside of Cake Wallet, too. Any wallet address on earth can be replaced with a Yat!",
520
- "learn_more" : "Learn More"
520
+ "learn_more" : "Learn More",
521
+
522
+ "new_template" : "New Template"
523
}
\ No newline at end of file
res/values/strings_es.arb
+3
-1
@@ -516,5 +516,7 @@
516
"second_intro_content" : "Tu Yat es una única dirección emoji única que reemplaza todas tus direcciones hexadecimales largas para todas tus monedas.",
517
"third_intro_title" : "Yat juega muy bien con otras",
518
"third_intro_content" : "Los Yats también viven fuera de Cake Wallet. Cualquier dirección de billetera en la tierra se puede reemplazar con un Yat!",
519
- "learn_more" : "Aprende más"
519
+ "learn_more" : "Aprende más",
520
+
521
+ "new_template" : "Nueva plantilla"
522
}
\ No newline at end of file
res/values/strings_hi.arb
+3
-1
@@ -516,5 +516,7 @@
516
"second_intro_content" : "आपका Yat एक अद्वितीय इमोजी पता है जो आपकी सभी मुद्राओं के लिए आपके सभी लंबे हेक्साडेसिमल पतों को बदल देता है।",
517
"third_intro_title" : "Yat दूसरों के साथ अच्छा खेलता है",
518
"third_intro_content" : "Yats Cake Wallet के बाहर भी रहता है। धरती पर किसी भी वॉलेट पते को Yat से बदला जा सकता है!",
519
- "learn_more" : "और अधिक जानें"
519
+ "learn_more" : "और अधिक जानें",
520
+
521
+ "new_template" : "नया टेम्पलेट"
522
}
\ No newline at end of file
res/values/strings_hr.arb
+3
-1
@@ -516,5 +516,7 @@
516
"second_intro_content" : "Vaš Yat jedinstvena je adresa emojija koja zamjenjuje sve vaše duge heksadecimalne adrese za sve vaše valute.",
517
"third_intro_title" : "Yat se lijepo igra s drugima",
518
"third_intro_content" : "Yats žive i izvan Cake Wallet -a. Bilo koja adresa novčanika na svijetu može se zamijeniti Yat!",
519
- "learn_more" : "Saznajte više"
519
+ "learn_more" : "Saznajte više",
520
+
521
+ "new_template" : "novi predložak"
522
}
\ No newline at end of file
res/values/strings_it.arb
+3
-1
@@ -516,5 +516,7 @@
516
"second_intro_content" : "Il tuo Yat è un unico indirizzo emoji univoco che sostituisce tutti i tuoi lunghi indirizzi esadecimali per tutte le tue valute.",
517
"third_intro_title" : "Yat gioca bene con gli altri",
518
"third_intro_content" : "Anche Yats vive fuori da Cake Wallet. Qualsiasi indirizzo di portafoglio sulla terra può essere sostituito con un Yat!",
519
- "learn_more" : "Impara di più"
519
+ "learn_more" : "Impara di più",
520
+
521
+ "new_template" : "Nuovo modello"
522
}
\ No newline at end of file
res/values/strings_ja.arb
+3
-1
@@ -516,5 +516,7 @@
516
"second_intro_content" : "Yatは、すべての通貨のすべての長い16進アドレスを置き換える単一の一意の絵文字アドレスです。",
517
"third_intro_title" : "Yatは他の人とうまく遊ぶ",
518
"third_intro_content" : "YatsはCakeWalletの外にも住んでいます。 地球上のどのウォレットアドレスもYatに置き換えることができます!",
519
- "learn_more" : "もっと詳しく知る"
519
+ "learn_more" : "もっと詳しく知る",
520
+
521
+ "new_template" : "新しいテンプレート"
522
}
\ No newline at end of file
res/values/strings_ko.arb
+3
-1
@@ -516,5 +516,7 @@
516
"second_intro_content" : "귀하의 Yat는 귀하의 모든 통화에 대해 긴 16진수 주소를 모두 대체하는 고유한 단일 이모지 주소입니다.",
517
"third_intro_title" : "Yat는 다른 사람들과 잘 놉니다.",
518
"third_intro_content" : "Yats는 Cake Wallet 밖에서도 살고 있습니다. 지구상의 모든 지갑 주소는 Yat!",
519
- "learn_more" : "더 알아보기"
519
+ "learn_more" : "더 알아보기",
520
+
521
+ "new_template" : "새 템플릿"
522
}
\ No newline at end of file
res/values/strings_nl.arb
+3
-1
@@ -516,5 +516,7 @@
516
"second_intro_content" : "Je Yat is een enkel uniek emoji-adres dat al je lange hexadecimale adressen vervangt voor al je valuta's.",
517
"third_intro_title" : "Yat speelt leuk met anderen",
518
"third_intro_content" : "Yats wonen ook buiten Cake Wallet. Elk portemonnee-adres op aarde kan worden vervangen door een Yat!",
519
- "learn_more" : "Kom meer te weten"
519
+ "learn_more" : "Kom meer te weten",
520
+
521
+ "new_template" : "Nieuwe sjabloon"
522
}
\ No newline at end of file
res/values/strings_pl.arb
+3
-1
@@ -516,5 +516,7 @@
516
"second_intro_content" : "Twój Yat to jeden unikalny adres emoji, który zastępuje wszystkie Twoje długie adresy szesnastkowe dla wszystkich Twoich walut.",
517
"third_intro_title" : "Yat ładnie bawi się z innymi",
518
"third_intro_content" : "Yats mieszkają również poza Cake Wallet. Każdy adres portfela na ziemi można zastąpić Yat!",
519
- "learn_more" : "Ucz się więcej"
519
+ "learn_more" : "Ucz się więcej",
520
+
521
+ "new_template" : "Nowy szablon"
522
}
\ No newline at end of file
res/values/strings_pt.arb
+3
-1
@@ -516,5 +516,7 @@
516
"second_intro_content" : "Seu Yat é um endereço de emoji único e exclusivo que substitui todos os seus endereços hexadecimais longos para todas as suas moedas.",
517
"third_intro_title" : "Yat joga bem com os outros",
518
"third_intro_content" : "Yats também mora fora da Cake Wallet. Qualquer endereço de carteira na Terra pode ser substituído por um Yat!",
519
- "learn_more" : "Saber mais"
519
+ "learn_more" : "Saber mais",
520
+
521
+ "new_template" : "Novo modelo"
522
}
\ No newline at end of file
res/values/strings_ru.arb
+3
-1
@@ -516,5 +516,7 @@
516
"second_intro_content" : "Ваш Yat - это единственный уникальный адрес эмодзи, который заменяет длинные шестнадцатеричные адреса для всех ваших валют.",
517
"third_intro_title" : "Yat хорошо взаимодействует с другими",
518
"third_intro_content" : "Yat находятся за пределами Cake Wallet. Любой адрес кошелька на земле можно заменить на Yat!",
519
- "learn_more" : "Узнать больше"
519
+ "learn_more" : "Узнать больше",
520
+
521
+ "new_template" : "Новый шаблон"
522
}
\ No newline at end of file
res/values/strings_uk.arb
+3
-1
@@ -516,5 +516,7 @@
516
"second_intro_content" : "Ваш Yat - це єдина унікальна адреса емодзі, яка замінює довгі шістнадцятиричні адреси для всіх ваших валют.",
517
"third_intro_title" : "Yat добре взаємодіє з іншими",
518
"third_intro_content" : "Yat знаходиться за межами Cake Wallet. Будь-яку адресу гаманця на землі можна замінити на Yat!",
519
- "learn_more" : "Дізнатися більше"
519
+ "learn_more" : "Дізнатися більше",
520
+
521
+ "new_template" : "Новий шаблон"
522
}
\ No newline at end of file
res/values/strings_zh.arb
+3
-1
@@ -516,5 +516,7 @@
516
"second_intro_content" : "您的 Yat 是一個唯一的表情符號地址,可替換您所有貨幣的所有長十六進制地址。",
517
"third_intro_title" : "Yat 和別人玩得很好",
518
"third_intro_content" : "Yats 也住在 Cake Wallet 之外。 地球上任何一個錢包地址都可以用一個Yat來代替!",
519
- "learn_more" : "了解更多"
519
+ "learn_more" : "了解更多",
520
+
521
+ "new_template" : "新模板"
522
}
\ No newline at end of file