CWA-215 | applied new design to address book page
Oleksandr Sobol committed
May 19, 2020 at 20:47 UTC
3f1bb416d453f0e43436e18d2ff807677c4cc537
17 files changed
+179
-109
assets/images/2.0x/litecoin.png
Binary files /dev/null and b/assets/images/2.0x/litecoin.png differ
assets/images/3.0x/litecoin.png
Binary files /dev/null and b/assets/images/3.0x/litecoin.png differ
assets/images/litecoin.png
Binary files /dev/null and b/assets/images/litecoin.png differ
lib/generated/i18n.dart
+46
@@ -29,6 +29,8 @@ class S implements WidgetsLocalizations {
29
String get add_new_word => "Add new word";
30
String get address_book => "Address Book";
31
String get address_book_menu => "Address book";
32
+ String get address_remove_contact => "Remove contact";
33
+ String get address_remove_content => "Are you sure that you want to remove selected contact?";
34
String get all => "ALL";
35
String get amount => "Amount: ";
36
String get amount_is_estimate => "The receive amount is an estimate";
@@ -766,6 +768,8 @@ class $de extends S {
768
@override
769
String get trade_history_title => "Handelsgeschichte";
770
@override
771
+ String get address_remove_contact => "Kontakt entfernen";
772
+ @override
773
String get error_text_wallet_name => "Der Wallet darf nur Buchstaben und Zahlen enthalten\nund muss zwischen 1 und 15 Zeichen lang sein";
774
@override
775
String get restore_description_from_keys => "Stellen Sie Ihr Wallet von generiert wieder her Tastenanschläge, die von Ihren privaten Schlüsseln gespeichert wurden";
@@ -836,6 +840,8 @@ class $de extends S {
840
@override
841
String get ok => "OK";
842
@override
843
+ String get address_remove_content => "Sind Sie sicher, dass Sie den ausgewählten Kontakt entfernen möchten?";
844
+ @override
845
String get wallet_list_title => "Monero Wallet";
846
@override
847
String get authentication => "Authentifizierung";
@@ -1378,6 +1384,8 @@ class $hi extends S {
1384
@override
1385
String get trade_history_title => "व्यापार का इतिहास";
1386
@override
1387
+ String get address_remove_contact => "संपर्क हटाये";
1388
+ @override
1389
String get error_text_wallet_name => "वॉलेट नाम में केवल अक्षर, संख्याएं हो सकती हैं\nऔर 1 और 15 वर्णों के बीच लंबा होना चाहिए";
1390
@override
1391
String get restore_description_from_keys => "अपने वॉलेट को जेनरेट से पुनर्स्थापित करें आपकी निजी कुंजी से कीस्ट्रोक्स सहेजे गए";
@@ -1448,6 +1456,8 @@ class $hi extends S {
1456
@override
1457
String get ok => "ठीक है";
1458
@override
1459
+ String get address_remove_content => "क्या आप वाकई चयनित संपर्क को हटाना चाहते हैं?";
1460
+ @override
1461
String get wallet_list_title => "Monero बटुआ";
1462
@override
1463
String get authentication => "प्रमाणीकरण";
@@ -1990,6 +2000,8 @@ class $ru extends S {
2000
@override
2001
String get trade_history_title => "История сделок";
2002
@override
2003
+ String get address_remove_contact => "Удалить контакт";
2004
+ @override
2005
String get error_text_wallet_name => "Имя кошелька может содержать только буквы, цифры\nи должно быть от 1 до 15 символов в длину";
2006
@override
2007
String get restore_description_from_keys => "Вы можете восстановить кошелёк с помощью приватных ключей";
@@ -2060,6 +2072,8 @@ class $ru extends S {
2072
@override
2073
String get ok => "OK";
2074
@override
2075
+ String get address_remove_content => "Вы уверены, что хотите удалить выбранный контакт?";
2076
+ @override
2077
String get wallet_list_title => "Monero Кошелёк";
2078
@override
2079
String get authentication => "Аутентификация";
@@ -2602,6 +2616,8 @@ class $ko extends S {
2616
@override
2617
String get trade_history_title => "무역 역사";
2618
@override
2619
+ String get address_remove_contact => "연락처 삭제";
2620
+ @override
2621
String get error_text_wallet_name => "지갑 이름은 문자, 숫자 만 포함 할 수 있습니다\n1 ~ 15 자 사이 여야합니다";
2622
@override
2623
String get restore_description_from_keys => "개인 키에서 저장된 생성 된 키 스트로크에서 월렛 복원";
@@ -2672,6 +2688,8 @@ class $ko extends S {
2688
@override
2689
String get ok => "승인";
2690
@override
2691
+ String get address_remove_content => "선택한 연락처를 삭제 하시겠습니까?";
2692
+ @override
2693
String get wallet_list_title => "모네로 월렛";
2694
@override
2695
String get authentication => "입증";
@@ -3214,6 +3232,8 @@ class $pt extends S {
3232
@override
3233
String get trade_history_title => "Histórico de trocas";
3234
@override
3235
+ String get address_remove_contact => "Remover contato";
3236
+ @override
3237
String get error_text_wallet_name => "O nome da carteira só pode conter letras, números\ne deve ter entre 1 e 15 caracteres";
3238
@override
3239
String get restore_description_from_keys => "Restaure sua carteira a partir de suas chaves privadas";
@@ -3284,6 +3304,8 @@ class $pt extends S {
3304
@override
3305
String get ok => "Ok";
3306
@override
3307
+ String get address_remove_content => "Tem certeza de que deseja remover o contato selecionado?";
3308
+ @override
3309
String get wallet_list_title => "Carteira Monero";
3310
@override
3311
String get authentication => "Autenticação";
@@ -3826,6 +3848,8 @@ class $uk extends S {
3848
@override
3849
String get trade_history_title => "Історія операцій";
3850
@override
3851
+ String get address_remove_contact => "Видалити контакт";
3852
+ @override
3853
String get error_text_wallet_name => "Ім'я гаманця може містити тільки букви, цифри\nі повинно бути від 1 до 15 символів в довжину";
3854
@override
3855
String get restore_description_from_keys => "Ви можете відновити гаманець за допомогою приватних ключів";
@@ -3896,6 +3920,8 @@ class $uk extends S {
3920
@override
3921
String get ok => "OK";
3922
@override
3923
+ String get address_remove_content => "Ви впевнені, що хочете видалити вибраний контакт?";
3924
+ @override
3925
String get wallet_list_title => "Monero Гаманець";
3926
@override
3927
String get authentication => "Аутентифікація";
@@ -4438,6 +4464,8 @@ class $ja extends S {
4464
@override
4465
String get trade_history_title => "取引履歴";
4466
@override
4467
+ String get address_remove_contact => "連絡先を削除します";
4468
+ @override
4469
String get error_text_wallet_name => "ウォレット名には文字のみを含めることができます\n1〜15文字である必要があります";
4470
@override
4471
String get restore_description_from_keys => "生成されたウォレットを復元します秘密鍵から保存されたキーストローク";
@@ -4508,6 +4536,8 @@ class $ja extends S {
4536
@override
4537
String get ok => "OK";
4538
@override
4539
+ String get address_remove_content => "選択した連絡先を削除してもよろしいですか?";
4540
+ @override
4541
String get wallet_list_title => "Monero 財布";
4542
@override
4543
String get authentication => "認証";
@@ -5054,6 +5084,8 @@ class $pl extends S {
5084
@override
5085
String get trade_history_title => "Historia handlu";
5086
@override
5087
+ String get address_remove_contact => "Usuń kontakt";
5088
+ @override
5089
String get error_text_wallet_name => "Nazwa portfela może zawierać tylko litery i cyfry\ni musi mieć od 1 do 15 znaków";
5090
@override
5091
String get restore_description_from_keys => "Przywróć swój portfel z wygenerowanego naciśnięcia klawiszy zapisane z kluczy prywatnych";
@@ -5124,6 +5156,8 @@ class $pl extends S {
5156
@override
5157
String get ok => "Dobrze";
5158
@override
5159
+ String get address_remove_content => "Czy na pewno chcesz usunąć wybrany kontakt?";
5160
+ @override
5161
String get wallet_list_title => "Portfel Monero";
5162
@override
5163
String get authentication => "Poświadczenie";
@@ -5666,6 +5700,8 @@ class $es extends S {
5700
@override
5701
String get trade_history_title => "Historia del comercio";
5702
@override
5703
+ String get address_remove_contact => "Remover contacto";
5704
+ @override
5705
String get error_text_wallet_name => "El nombre de la billetera solo puede contener letras, números \ny debe tener entre 1 y 15 caracteres de longitud";
5706
@override
5707
String get restore_description_from_keys => "Restaure su billetera de las pulsaciones de teclas generadas guardadas de sus claves privadas";
@@ -5736,6 +5772,8 @@ class $es extends S {
5772
@override
5773
String get ok => "OK";
5774
@override
5775
+ String get address_remove_content => "¿Estás seguro de que quieres eliminar el contacto seleccionado?";
5776
+ @override
5777
String get wallet_list_title => "Monedero Monero";
5778
@override
5779
String get authentication => "Autenticación";
@@ -6278,6 +6316,8 @@ class $nl extends S {
6316
@override
6317
String get trade_history_title => "Handelsgeschiedenis";
6318
@override
6319
+ String get address_remove_contact => "Contact verwijderen";
6320
+ @override
6321
String get error_text_wallet_name => "Naam portemonnee kan alleen letters, cijfers bevatten\nen moet tussen de 1 en 15 tekens lang zijn";
6322
@override
6323
String get restore_description_from_keys => "Herstel uw portemonnee van gegenereerd toetsaanslagen opgeslagen van uw privésleutels";
@@ -6348,6 +6388,8 @@ class $nl extends S {
6388
@override
6389
String get ok => "OK";
6390
@override
6391
+ String get address_remove_content => "Weet u zeker dat u het geselecteerde contact wilt verwijderen?";
6392
+ @override
6393
String get wallet_list_title => "Monero portemonnee";
6394
@override
6395
String get authentication => "Authenticatie";
@@ -6890,6 +6932,8 @@ class $zh extends S {
6932
@override
6933
String get trade_history_title => "交易历史";
6934
@override
6935
+ String get address_remove_contact => "刪除聯繫人";
6936
+ @override
6937
String get error_text_wallet_name => "钱包名称只能包含字母,数字\n且必须介于1到15个字符之间";
6938
@override
6939
String get restore_description_from_keys => "R从生成的电子钱包从您的私钥中保存的击键";
@@ -6960,6 +7004,8 @@ class $zh extends S {
7004
@override
7005
String get ok => "好";
7006
@override
7007
+ String get address_remove_content => "您確定要刪除所選的聯繫人嗎?";
7008
+ @override
7009
String get wallet_list_title => "Monero 钱包";
7010
@override
7011
String get authentication => "认证方式";
lib/src/screens/address_book/address_book_page.dart
+109
-109
@@ -10,6 +10,7 @@ import 'package:cake_wallet/generated/i18n.dart';
10
import 'package:cake_wallet/src/domain/common/crypto_currency.dart';
11
import 'package:cake_wallet/src/stores/address_book/address_book_store.dart';
12
import 'package:cake_wallet/src/screens/base_page.dart';
13
+import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart';
14
15
class AddressBookPage extends BasePage {
16
AddressBookPage({this.isEditable = true});
@@ -17,14 +18,11 @@ class AddressBookPage extends BasePage {
18
final bool isEditable;
19
20
@override
20
- bool get isModalBackButton => true;
21
+ Color get backgroundColor => PaletteDark.historyPanel;
22
23
@override
24
String get title => S.current.address_book;
25
25
- @override
26
- AppBarStyle get appBarStyle => AppBarStyle.withShadow;
27
-
26
@override
27
Widget trailing(BuildContext context) {
28
if (!isEditable) {
@@ -34,17 +32,17 @@ class AddressBookPage extends BasePage {
32
final addressBookStore = Provider.of<AddressBookStore>(context);
33
34
return Container(
37
- width: 28.0,
38
- height: 28.0,
35
+ width: 32.0,
36
+ height: 32.0,
37
decoration: BoxDecoration(
40
- shape: BoxShape.circle, color: Theme.of(context).selectedRowColor),
38
+ shape: BoxShape.circle, color: PaletteDark.menuList),
39
child: Stack(
40
alignment: Alignment.center,
41
children: <Widget>[
44
- Icon(Icons.add, color: Palette.violet, size: 22.0),
42
+ Icon(Icons.add, color: Colors.white, size: 22.0),
43
ButtonTheme(
46
- minWidth: 28.0,
47
- height: 28.0,
44
+ minWidth: 32.0,
45
+ height: 32.0,
46
child: FlatButton(
47
shape: CircleBorder(),
48
onPressed: () async {
@@ -63,20 +61,30 @@ class AddressBookPage extends BasePage {
61
final addressBookStore = Provider.of<AddressBookStore>(context);
62
63
return Container(
64
+ color: PaletteDark.historyPanel,
65
padding: EdgeInsets.only(top: 20.0, bottom: 20.0),
66
child: Observer(
67
builder: (_) => ListView.separated(
69
- separatorBuilder: (_, __) => Divider(
70
- color: Theme.of(context).dividerTheme.color,
71
- height: 1.0,
72
- ),
68
+ separatorBuilder: (_, __) => Container(
69
+ height: 1,
70
+ padding: EdgeInsets.only(left: 24),
71
+ color: PaletteDark.menuList,
72
+ child: Container(
73
+ height: 1,
74
+ color: PaletteDark.mainBackgroundColor,
75
+ ),
76
+ ),
77
itemCount: addressBookStore.contactList == null
78
? 0
79
: addressBookStore.contactList.length,
80
itemBuilder: (BuildContext context, int index) {
81
final contact = addressBookStore.contactList[index];
82
+ final image = _getCurrencyImage(contact.type);
83
79
- final content = ListTile(
84
+ final isDrawTop = index == 0 ? true : false;
85
+ final isDrawBottom = index == addressBookStore.contactList.length - 1 ? true : false;
86
+
87
+ final content = GestureDetector(
88
onTap: () async {
89
if (!isEditable) {
90
Navigator.of(context).pop(contact);
@@ -86,39 +94,69 @@ class AddressBookPage extends BasePage {
94
final isCopied = await showNameAndAddressDialog(
95
context, contact.name, contact.address);
96
89
- if (isCopied) {
97
+ if (isCopied != null && isCopied) {
98
await Clipboard.setData(
99
ClipboardData(text: contact.address));
100
Scaffold.of(context).showSnackBar(
101
SnackBar(
94
- content: Text('Copied to Clipboard'),
102
+ content: Text(
103
+ S.of(context).copied_to_clipboard,
104
+ style: TextStyle(
105
+ color: Colors.white
106
+ ),
107
+ ),
108
backgroundColor: Colors.green,
109
duration: Duration(milliseconds: 1500),
110
),
111
);
112
}
113
},
101
- leading: Container(
102
- height: 25.0,
103
- width: 48.0,
104
- alignment: Alignment.center,
105
- decoration: BoxDecoration(
106
- color: _getCurrencyBackgroundColor(contact.type),
107
- borderRadius: BorderRadius.circular(6.0),
108
- ),
109
- child: Text(
110
- contact.type.toString(),
111
- style: TextStyle(
112
- fontSize: 11.0,
113
- color: _getCurrencyTextColor(contact.type),
114
+ child: Column(
115
+ children: <Widget>[
116
+ isDrawTop
117
+ ? Container(
118
+ width: double.infinity,
119
+ height: 1,
120
+ color: PaletteDark.mainBackgroundColor,
121
+ )
122
+ : Offstage(),
123
+ Container(
124
+ width: double.infinity,
125
+ color: PaletteDark.menuList,
126
+ child: Padding(
127
+ padding: const EdgeInsets.only(left: 24, top: 16, bottom: 16, right: 24),
128
+ child: Row(
129
+ mainAxisSize: MainAxisSize.min,
130
+ mainAxisAlignment: MainAxisAlignment.start,
131
+ crossAxisAlignment: CrossAxisAlignment.center,
132
+ children: <Widget>[
133
+ image != null
134
+ ? image
135
+ : Offstage(),
136
+ Padding(
137
+ padding: image != null
138
+ ? EdgeInsets.only(left: 12)
139
+ : EdgeInsets.only(left: 0),
140
+ child: Text(
141
+ contact.name,
142
+ style: TextStyle(
143
+ fontSize: 14,
144
+ color: Colors.white
145
+ ),
146
+ ),
147
+ )
148
+ ],
149
+ )
150
+ ),
151
),
115
- ),
116
- ),
117
- title: Text(
118
- contact.name,
119
- style: TextStyle(
120
- fontSize: 16.0,
121
- color: Theme.of(context).primaryTextTheme.title.color),
152
+ isDrawBottom
153
+ ? Container(
154
+ width: double.infinity,
155
+ height: 1,
156
+ color: PaletteDark.mainBackgroundColor,
157
+ )
158
+ : Offstage(),
159
+ ],
160
),
161
);
162
@@ -130,7 +168,7 @@ class AddressBookPage extends BasePage {
168
child: content,
169
secondaryActions: <Widget>[
170
IconSlideAction(
133
- caption: 'Edit',
171
+ caption: S.of(context).edit,
172
color: Colors.blue,
173
icon: Icons.edit,
174
onTap: () async {
@@ -141,7 +179,7 @@ class AddressBookPage extends BasePage {
179
},
180
),
181
IconSlideAction(
144
- caption: 'Delete',
182
+ caption: S.of(context).delete,
183
color: Colors.red,
184
icon: CupertinoIcons.delete,
185
onTap: () async {
@@ -171,95 +209,68 @@ class AddressBookPage extends BasePage {
209
));
210
}
211
174
- Color _getCurrencyBackgroundColor(CryptoCurrency currency) {
175
- Color color;
212
+ Image _getCurrencyImage(CryptoCurrency currency) {
213
+ Image image;
214
switch (currency) {
215
case CryptoCurrency.xmr:
178
- color = Palette.cakeGreenWithOpacity;
216
+ image = Image.asset('assets/images/monero.png', height: 24, width: 24);
217
break;
218
case CryptoCurrency.ada:
181
- color = Colors.blue[200];
219
+ image = null;
220
break;
221
case CryptoCurrency.bch:
184
- color = Colors.orangeAccent;
222
+ image = null;
223
break;
224
case CryptoCurrency.bnb:
187
- color = Colors.blue;
225
+ image = null;
226
break;
227
case CryptoCurrency.btc:
190
- color = Colors.orange;
228
+ image = Image.asset('assets/images/bitcoin.png', height: 24, width: 24);
229
break;
230
case CryptoCurrency.dash:
193
- color = Colors.blue;
231
+ image = null;
232
break;
233
case CryptoCurrency.eos:
196
- color = Colors.orangeAccent;
234
+ image = null;
235
break;
236
case CryptoCurrency.eth:
199
- color = Colors.black;
237
+ image = null;
238
break;
239
case CryptoCurrency.ltc:
202
- color = Colors.blue[200];
240
+ image = Image.asset('assets/images/litecoin.png', height: 24, width: 24);
241
break;
242
case CryptoCurrency.nano:
205
- color = Colors.orange;
243
+ image = null;
244
break;
245
case CryptoCurrency.trx:
208
- color = Colors.black;
246
+ image = null;
247
break;
248
case CryptoCurrency.usdt:
211
- color = Colors.blue[200];
249
+ image = null;
250
break;
251
case CryptoCurrency.xlm:
214
- color = color = Colors.blue;
252
+ image = null;
253
break;
254
case CryptoCurrency.xrp:
217
- color = Colors.orangeAccent;
218
- break;
219
- default:
220
- color = Colors.white;
221
- }
222
- return color;
223
- }
224
-
225
- Color _getCurrencyTextColor(CryptoCurrency currency) {
226
- Color color;
227
- switch (currency) {
228
- case CryptoCurrency.xmr:
229
- color = Palette.cakeGreen;
230
- break;
231
- case CryptoCurrency.ltc:
232
- case CryptoCurrency.ada:
233
- case CryptoCurrency.usdt:
234
- color = Palette.lightBlue;
255
+ image = null;
256
break;
257
default:
237
- color = Colors.white;
258
+ image = null;
259
}
239
- return color;
260
+ return image;
261
}
262
263
Future<bool> showAlertDialog(BuildContext context) async {
264
return await showDialog(
265
context: context,
266
builder: (BuildContext context) {
246
- return AlertDialog(
247
- title: const Text(
248
- 'Remove contact',
249
- textAlign: TextAlign.center,
250
- ),
251
- content: const Text(
252
- 'Are you sure that you want to remove selected contact?',
253
- textAlign: TextAlign.center,
254
- ),
255
- actions: <Widget>[
256
- FlatButton(
257
- onPressed: () => Navigator.of(context).pop( false),
258
- child: const Text('Cancel')),
259
- FlatButton(
260
- onPressed: () => Navigator.of(context).pop(true),
261
- child: const Text('Remove')),
262
- ],
267
+ return AlertWithTwoActions(
268
+ alertTitle: S.of(context).address_remove_contact,
269
+ alertContent: S.of(context).address_remove_content,
270
+ leftButtonText: S.of(context).remove,
271
+ rightButtonText: S.of(context).cancel,
272
+ actionLeftButton: () => Navigator.of(context).pop(true),
273
+ actionRightButton: () => Navigator.of(context).pop(false)
274
);
275
});
276
}
@@ -269,24 +280,13 @@ class AddressBookPage extends BasePage {
280
return await showDialog(
281
context: context,
282
builder: (BuildContext context) {
272
- return AlertDialog(
273
- title: Text(
274
- name,
275
- textAlign: TextAlign.center,
276
- style: TextStyle(fontWeight: FontWeight.bold),
277
- ),
278
- content: Text(
279
- address,
280
- textAlign: TextAlign.center,
281
- ),
282
- actions: <Widget>[
283
- FlatButton(
284
- onPressed: () => Navigator.of(context).pop(false),
285
- child: Text('Cancel')),
286
- FlatButton(
287
- onPressed: () => Navigator.of(context).pop(true),
288
- child: Text('Copy'))
289
- ],
283
+ return AlertWithTwoActions(
284
+ alertTitle: name,
285
+ alertContent: address,
286
+ leftButtonText: S.of(context).copy,
287
+ rightButtonText: S.of(context).cancel,
288
+ actionLeftButton: () => Navigator.of(context).pop(true),
289
+ actionRightButton: () => Navigator.of(context).pop(false)
290
);
291
});
292
}
res/values/strings_de.arb
+2
@@ -21,6 +21,8 @@
21
"contact_name" : "Name des Ansprechpartners",
22
"reset" : "Zurücksetzen",
23
"save" : "speichern",
24
+ "address_remove_contact" : "Kontakt entfernen",
25
+ "address_remove_content" : "Sind Sie sicher, dass Sie den ausgewählten Kontakt entfernen möchten?",
26
27
28
"authenticated" : "Authentifiziert",
res/values/strings_en.arb
+2
@@ -21,6 +21,8 @@
21
"contact_name" : "Contact Name",
22
"reset" : "Reset",
23
"save" : "Save",
24
+ "address_remove_contact" : "Remove contact",
25
+ "address_remove_content" : "Are you sure that you want to remove selected contact?",
26
27
28
"authenticated" : "Authenticated",
res/values/strings_es.arb
+2
@@ -21,6 +21,8 @@
21
"contact_name" : "Nombre de contacto",
22
"reset" : "Reiniciar",
23
"save" : "Salvar",
24
+ "address_remove_contact" : "Remover contacto",
25
+ "address_remove_content" : "¿Estás seguro de que quieres eliminar el contacto seleccionado?",
26
27
28
"authenticated" : "Autenticados",
res/values/strings_hi.arb
+2
@@ -21,6 +21,8 @@
21
"contact_name" : "संपर्क नाम",
22
"reset" : "रीसेट",
23
"save" : "बचाना",
24
+ "address_remove_contact" : "संपर्क हटाये",
25
+ "address_remove_content" : "क्या आप वाकई चयनित संपर्क को हटाना चाहते हैं?",
26
27
28
"authenticated" : "प्रमाणीकृत",
res/values/strings_ja.arb
+2
@@ -21,6 +21,8 @@
21
"contact_name" : "連絡先",
22
"reset" : "リセットする",
23
"save" : "セーブ",
24
+ "address_remove_contact" : "連絡先を削除します",
25
+ "address_remove_content" : "選択した連絡先を削除してもよろしいですか?",
26
27
28
"authenticated" : "認証済み",
res/values/strings_ko.arb
+2
@@ -21,6 +21,8 @@
21
"contact_name" : "담당자 이름",
22
"reset" : "다시 놓기",
23
"save" : "구하다",
24
+ "address_remove_contact" : "연락처 삭제",
25
+ "address_remove_content" : "선택한 연락처를 삭제 하시겠습니까?",
26
27
28
"authenticated" : "인증",
res/values/strings_nl.arb
+2
@@ -21,6 +21,8 @@
21
"contact_name" : "Contactnaam",
22
"reset" : "Reset",
23
"save" : "Opslaan",
24
+ "address_remove_contact" : "Contact verwijderen",
25
+ "address_remove_content" : "Weet u zeker dat u het geselecteerde contact wilt verwijderen?",
26
27
28
"authenticated" : "Authenticated",
res/values/strings_pl.arb
+2
@@ -21,6 +21,8 @@
21
"contact_name" : "Nazwa Kontaktu",
22
"reset" : "Nastawić",
23
"save" : "Zapisać",
24
+ "address_remove_contact" : "Usuń kontakt",
25
+ "address_remove_content" : "Czy na pewno chcesz usunąć wybrany kontakt?",
26
27
28
"authenticated" : "Zalegalizowany",
res/values/strings_pt.arb
+2
@@ -21,6 +21,8 @@
21
"contact_name" : "Nome do contato",
22
"reset" : "Limpar",
23
"save" : "Salvar",
24
+ "address_remove_contact" : "Remover contato",
25
+ "address_remove_content" : "Tem certeza de que deseja remover o contato selecionado?",
26
27
28
"authenticated" : "Autenticado",
res/values/strings_ru.arb
+2
@@ -21,6 +21,8 @@
21
"contact_name" : "Имя контакта",
22
"reset" : "Сброс",
23
"save" : "Сохранить",
24
+ "address_remove_contact" : "Удалить контакт",
25
+ "address_remove_content" : "Вы уверены, что хотите удалить выбранный контакт?",
26
27
28
"authenticated" : "Аутентифицировано",
res/values/strings_uk.arb
+2
@@ -21,6 +21,8 @@
21
"contact_name" : "Ім'я контакту",
22
"reset" : "Скинути",
23
"save" : "Зберегти",
24
+ "address_remove_contact" : "Видалити контакт",
25
+ "address_remove_content" : "Ви впевнені, що хочете видалити вибраний контакт?",
26
27
28
"authenticated" : "Аутентифіковано",
res/values/strings_zh.arb
+2
@@ -21,6 +21,8 @@
21
"contact_name" : "联系人姓名",
22
"reset" : "重启",
23
"save" : "保存",
24
+ "address_remove_contact" : "刪除聯繫人",
25
+ "address_remove_content" : "您確定要刪除所選的聯繫人嗎?",
26
27
28
"authenticated" : "已认证",