From 3f1bb416d453f0e43436e18d2ff807677c4cc537 Mon Sep 17 00:00:00 2001 From: Oleksandr Sobol Date: Tue, 19 May 2020 20:47:42 +0300 Subject: [PATCH] CWA-215 | applied new design to address book page --- assets/images/2.0x/litecoin.png | Bin 0 -> 1980 bytes assets/images/3.0x/litecoin.png | Bin 0 -> 3368 bytes assets/images/litecoin.png | Bin 0 -> 941 bytes lib/generated/i18n.dart | 46 ++++ .../address_book/address_book_page.dart | 218 +++++++++--------- res/values/strings_de.arb | 2 + res/values/strings_en.arb | 2 + res/values/strings_es.arb | 2 + res/values/strings_hi.arb | 2 + res/values/strings_ja.arb | 2 + res/values/strings_ko.arb | 2 + res/values/strings_nl.arb | 2 + res/values/strings_pl.arb | 2 + res/values/strings_pt.arb | 2 + res/values/strings_ru.arb | 2 + res/values/strings_uk.arb | 2 + res/values/strings_zh.arb | 2 + 17 files changed, 179 insertions(+), 109 deletions(-) create mode 100644 assets/images/2.0x/litecoin.png create mode 100644 assets/images/3.0x/litecoin.png create mode 100644 assets/images/litecoin.png diff --git a/assets/images/2.0x/litecoin.png b/assets/images/2.0x/litecoin.png new file mode 100644 index 0000000000000000000000000000000000000000..ea6d0e6a0acadd445e3b3155681c5a0c6b0588fd GIT binary patch literal 1980 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 P00000NkvXXu0mjf^D>u9 literal 0 HcmV?d00001 diff --git a/lib/generated/i18n.dart b/lib/generated/i18n.dart index 608c882b0..56fac72e2 100644 --- a/lib/generated/i18n.dart +++ b/lib/generated/i18n.dart @@ -29,6 +29,8 @@ class S implements WidgetsLocalizations { String get add_new_word => "Add new word"; String get address_book => "Address Book"; String get address_book_menu => "Address book"; + String get address_remove_contact => "Remove contact"; + String get address_remove_content => "Are you sure that you want to remove selected contact?"; String get all => "ALL"; String get amount => "Amount: "; String get amount_is_estimate => "The receive amount is an estimate"; @@ -766,6 +768,8 @@ class $de extends S { @override String get trade_history_title => "Handelsgeschichte"; @override + String get address_remove_contact => "Kontakt entfernen"; + @override String get error_text_wallet_name => "Der Wallet darf nur Buchstaben und Zahlen enthalten\nund muss zwischen 1 und 15 Zeichen lang sein"; @override 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 { @override String get ok => "OK"; @override + String get address_remove_content => "Sind Sie sicher, dass Sie den ausgewählten Kontakt entfernen möchten?"; + @override String get wallet_list_title => "Monero Wallet"; @override String get authentication => "Authentifizierung"; @@ -1378,6 +1384,8 @@ class $hi extends S { @override String get trade_history_title => "व्यापार का इतिहास"; @override + String get address_remove_contact => "संपर्क हटाये"; + @override String get error_text_wallet_name => "वॉलेट नाम में केवल अक्षर, संख्याएं हो सकती हैं\nऔर 1 और 15 वर्णों के बीच लंबा होना चाहिए"; @override String get restore_description_from_keys => "अपने वॉलेट को जेनरेट से पुनर्स्थापित करें आपकी निजी कुंजी से कीस्ट्रोक्स सहेजे गए"; @@ -1448,6 +1456,8 @@ class $hi extends S { @override String get ok => "ठीक है"; @override + String get address_remove_content => "क्या आप वाकई चयनित संपर्क को हटाना चाहते हैं?"; + @override String get wallet_list_title => "Monero बटुआ"; @override String get authentication => "प्रमाणीकरण"; @@ -1990,6 +2000,8 @@ class $ru extends S { @override String get trade_history_title => "История сделок"; @override + String get address_remove_contact => "Удалить контакт"; + @override String get error_text_wallet_name => "Имя кошелька может содержать только буквы, цифры\nи должно быть от 1 до 15 символов в длину"; @override String get restore_description_from_keys => "Вы можете восстановить кошелёк с помощью приватных ключей"; @@ -2060,6 +2072,8 @@ class $ru extends S { @override String get ok => "OK"; @override + String get address_remove_content => "Вы уверены, что хотите удалить выбранный контакт?"; + @override String get wallet_list_title => "Monero Кошелёк"; @override String get authentication => "Аутентификация"; @@ -2602,6 +2616,8 @@ class $ko extends S { @override String get trade_history_title => "무역 역사"; @override + String get address_remove_contact => "연락처 삭제"; + @override String get error_text_wallet_name => "지갑 이름은 문자, 숫자 만 포함 할 수 있습니다\n1 ~ 15 자 사이 여야합니다"; @override String get restore_description_from_keys => "개인 키에서 저장된 생성 된 키 스트로크에서 월렛 복원"; @@ -2672,6 +2688,8 @@ class $ko extends S { @override String get ok => "승인"; @override + String get address_remove_content => "선택한 연락처를 삭제 하시겠습니까?"; + @override String get wallet_list_title => "모네로 월렛"; @override String get authentication => "입증"; @@ -3214,6 +3232,8 @@ class $pt extends S { @override String get trade_history_title => "Histórico de trocas"; @override + String get address_remove_contact => "Remover contato"; + @override String get error_text_wallet_name => "O nome da carteira só pode conter letras, números\ne deve ter entre 1 e 15 caracteres"; @override String get restore_description_from_keys => "Restaure sua carteira a partir de suas chaves privadas"; @@ -3284,6 +3304,8 @@ class $pt extends S { @override String get ok => "Ok"; @override + String get address_remove_content => "Tem certeza de que deseja remover o contato selecionado?"; + @override String get wallet_list_title => "Carteira Monero"; @override String get authentication => "Autenticação"; @@ -3826,6 +3848,8 @@ class $uk extends S { @override String get trade_history_title => "Історія операцій"; @override + String get address_remove_contact => "Видалити контакт"; + @override String get error_text_wallet_name => "Ім'я гаманця може містити тільки букви, цифри\nі повинно бути від 1 до 15 символів в довжину"; @override String get restore_description_from_keys => "Ви можете відновити гаманець за допомогою приватних ключів"; @@ -3896,6 +3920,8 @@ class $uk extends S { @override String get ok => "OK"; @override + String get address_remove_content => "Ви впевнені, що хочете видалити вибраний контакт?"; + @override String get wallet_list_title => "Monero Гаманець"; @override String get authentication => "Аутентифікація"; @@ -4438,6 +4464,8 @@ class $ja extends S { @override String get trade_history_title => "取引履歴"; @override + String get address_remove_contact => "連絡先を削除します"; + @override String get error_text_wallet_name => "ウォレット名には文字のみを含めることができます\n1〜15文字である必要があります"; @override String get restore_description_from_keys => "生成されたウォレットを復元します秘密鍵から保存されたキーストローク"; @@ -4508,6 +4536,8 @@ class $ja extends S { @override String get ok => "OK"; @override + String get address_remove_content => "選択した連絡先を削除してもよろしいですか?"; + @override String get wallet_list_title => "Monero 財布"; @override String get authentication => "認証"; @@ -5054,6 +5084,8 @@ class $pl extends S { @override String get trade_history_title => "Historia handlu"; @override + String get address_remove_contact => "Usuń kontakt"; + @override String get error_text_wallet_name => "Nazwa portfela może zawierać tylko litery i cyfry\ni musi mieć od 1 do 15 znaków"; @override 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 { @override String get ok => "Dobrze"; @override + String get address_remove_content => "Czy na pewno chcesz usunąć wybrany kontakt?"; + @override String get wallet_list_title => "Portfel Monero"; @override String get authentication => "Poświadczenie"; @@ -5666,6 +5700,8 @@ class $es extends S { @override String get trade_history_title => "Historia del comercio"; @override + String get address_remove_contact => "Remover contacto"; + @override 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"; @override 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 { @override String get ok => "OK"; @override + String get address_remove_content => "¿Estás seguro de que quieres eliminar el contacto seleccionado?"; + @override String get wallet_list_title => "Monedero Monero"; @override String get authentication => "Autenticación"; @@ -6278,6 +6316,8 @@ class $nl extends S { @override String get trade_history_title => "Handelsgeschiedenis"; @override + String get address_remove_contact => "Contact verwijderen"; + @override String get error_text_wallet_name => "Naam portemonnee kan alleen letters, cijfers bevatten\nen moet tussen de 1 en 15 tekens lang zijn"; @override 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 { @override String get ok => "OK"; @override + String get address_remove_content => "Weet u zeker dat u het geselecteerde contact wilt verwijderen?"; + @override String get wallet_list_title => "Monero portemonnee"; @override String get authentication => "Authenticatie"; @@ -6890,6 +6932,8 @@ class $zh extends S { @override String get trade_history_title => "交易历史"; @override + String get address_remove_contact => "刪除聯繫人"; + @override String get error_text_wallet_name => "钱包名称只能包含字母,数字\n且必须介于1到15个字符之间"; @override String get restore_description_from_keys => "R从生成的电子钱包从您的私钥中保存的击键"; @@ -6960,6 +7004,8 @@ class $zh extends S { @override String get ok => "好"; @override + String get address_remove_content => "您確定要刪除所選的聯繫人嗎?"; + @override String get wallet_list_title => "Monero 钱包"; @override String get authentication => "认证方式"; diff --git a/lib/src/screens/address_book/address_book_page.dart b/lib/src/screens/address_book/address_book_page.dart index 97351f91b..4a66c3092 100644 --- a/lib/src/screens/address_book/address_book_page.dart +++ b/lib/src/screens/address_book/address_book_page.dart @@ -10,6 +10,7 @@ import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/src/domain/common/crypto_currency.dart'; import 'package:cake_wallet/src/stores/address_book/address_book_store.dart'; import 'package:cake_wallet/src/screens/base_page.dart'; +import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart'; class AddressBookPage extends BasePage { AddressBookPage({this.isEditable = true}); @@ -17,14 +18,11 @@ class AddressBookPage extends BasePage { final bool isEditable; @override - bool get isModalBackButton => true; + Color get backgroundColor => PaletteDark.historyPanel; @override String get title => S.current.address_book; - @override - AppBarStyle get appBarStyle => AppBarStyle.withShadow; - @override Widget trailing(BuildContext context) { if (!isEditable) { @@ -34,17 +32,17 @@ class AddressBookPage extends BasePage { final addressBookStore = Provider.of(context); return Container( - width: 28.0, - height: 28.0, + width: 32.0, + height: 32.0, decoration: BoxDecoration( - shape: BoxShape.circle, color: Theme.of(context).selectedRowColor), + shape: BoxShape.circle, color: PaletteDark.menuList), child: Stack( alignment: Alignment.center, children: [ - Icon(Icons.add, color: Palette.violet, size: 22.0), + Icon(Icons.add, color: Colors.white, size: 22.0), ButtonTheme( - minWidth: 28.0, - height: 28.0, + minWidth: 32.0, + height: 32.0, child: FlatButton( shape: CircleBorder(), onPressed: () async { @@ -63,20 +61,30 @@ class AddressBookPage extends BasePage { final addressBookStore = Provider.of(context); return Container( + color: PaletteDark.historyPanel, padding: EdgeInsets.only(top: 20.0, bottom: 20.0), child: Observer( builder: (_) => ListView.separated( - separatorBuilder: (_, __) => Divider( - color: Theme.of(context).dividerTheme.color, - height: 1.0, - ), + separatorBuilder: (_, __) => Container( + height: 1, + padding: EdgeInsets.only(left: 24), + color: PaletteDark.menuList, + child: Container( + height: 1, + color: PaletteDark.mainBackgroundColor, + ), + ), itemCount: addressBookStore.contactList == null ? 0 : addressBookStore.contactList.length, itemBuilder: (BuildContext context, int index) { final contact = addressBookStore.contactList[index]; + final image = _getCurrencyImage(contact.type); - final content = ListTile( + final isDrawTop = index == 0 ? true : false; + final isDrawBottom = index == addressBookStore.contactList.length - 1 ? true : false; + + final content = GestureDetector( onTap: () async { if (!isEditable) { Navigator.of(context).pop(contact); @@ -86,39 +94,69 @@ class AddressBookPage extends BasePage { final isCopied = await showNameAndAddressDialog( context, contact.name, contact.address); - if (isCopied) { + if (isCopied != null && isCopied) { await Clipboard.setData( ClipboardData(text: contact.address)); Scaffold.of(context).showSnackBar( SnackBar( - content: Text('Copied to Clipboard'), + content: Text( + S.of(context).copied_to_clipboard, + style: TextStyle( + color: Colors.white + ), + ), backgroundColor: Colors.green, duration: Duration(milliseconds: 1500), ), ); } }, - leading: Container( - height: 25.0, - width: 48.0, - alignment: Alignment.center, - decoration: BoxDecoration( - color: _getCurrencyBackgroundColor(contact.type), - borderRadius: BorderRadius.circular(6.0), - ), - child: Text( - contact.type.toString(), - style: TextStyle( - fontSize: 11.0, - color: _getCurrencyTextColor(contact.type), + child: Column( + children: [ + isDrawTop + ? Container( + width: double.infinity, + height: 1, + color: PaletteDark.mainBackgroundColor, + ) + : Offstage(), + Container( + width: double.infinity, + color: PaletteDark.menuList, + child: Padding( + padding: const EdgeInsets.only(left: 24, top: 16, bottom: 16, right: 24), + child: Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + image != null + ? image + : Offstage(), + Padding( + padding: image != null + ? EdgeInsets.only(left: 12) + : EdgeInsets.only(left: 0), + child: Text( + contact.name, + style: TextStyle( + fontSize: 14, + color: Colors.white + ), + ), + ) + ], + ) + ), ), - ), - ), - title: Text( - contact.name, - style: TextStyle( - fontSize: 16.0, - color: Theme.of(context).primaryTextTheme.title.color), + isDrawBottom + ? Container( + width: double.infinity, + height: 1, + color: PaletteDark.mainBackgroundColor, + ) + : Offstage(), + ], ), ); @@ -130,7 +168,7 @@ class AddressBookPage extends BasePage { child: content, secondaryActions: [ IconSlideAction( - caption: 'Edit', + caption: S.of(context).edit, color: Colors.blue, icon: Icons.edit, onTap: () async { @@ -141,7 +179,7 @@ class AddressBookPage extends BasePage { }, ), IconSlideAction( - caption: 'Delete', + caption: S.of(context).delete, color: Colors.red, icon: CupertinoIcons.delete, onTap: () async { @@ -171,95 +209,68 @@ class AddressBookPage extends BasePage { )); } - Color _getCurrencyBackgroundColor(CryptoCurrency currency) { - Color color; + Image _getCurrencyImage(CryptoCurrency currency) { + Image image; switch (currency) { case CryptoCurrency.xmr: - color = Palette.cakeGreenWithOpacity; + image = Image.asset('assets/images/monero.png', height: 24, width: 24); break; case CryptoCurrency.ada: - color = Colors.blue[200]; + image = null; break; case CryptoCurrency.bch: - color = Colors.orangeAccent; + image = null; break; case CryptoCurrency.bnb: - color = Colors.blue; + image = null; break; case CryptoCurrency.btc: - color = Colors.orange; + image = Image.asset('assets/images/bitcoin.png', height: 24, width: 24); break; case CryptoCurrency.dash: - color = Colors.blue; + image = null; break; case CryptoCurrency.eos: - color = Colors.orangeAccent; + image = null; break; case CryptoCurrency.eth: - color = Colors.black; + image = null; break; case CryptoCurrency.ltc: - color = Colors.blue[200]; + image = Image.asset('assets/images/litecoin.png', height: 24, width: 24); break; case CryptoCurrency.nano: - color = Colors.orange; + image = null; break; case CryptoCurrency.trx: - color = Colors.black; + image = null; break; case CryptoCurrency.usdt: - color = Colors.blue[200]; + image = null; break; case CryptoCurrency.xlm: - color = color = Colors.blue; + image = null; break; case CryptoCurrency.xrp: - color = Colors.orangeAccent; + image = null; break; default: - color = Colors.white; + image = null; } - return color; - } - - Color _getCurrencyTextColor(CryptoCurrency currency) { - Color color; - switch (currency) { - case CryptoCurrency.xmr: - color = Palette.cakeGreen; - break; - case CryptoCurrency.ltc: - case CryptoCurrency.ada: - case CryptoCurrency.usdt: - color = Palette.lightBlue; - break; - default: - color = Colors.white; - } - return color; + return image; } Future showAlertDialog(BuildContext context) async { return await showDialog( context: context, builder: (BuildContext context) { - return AlertDialog( - title: const Text( - 'Remove contact', - textAlign: TextAlign.center, - ), - content: const Text( - 'Are you sure that you want to remove selected contact?', - textAlign: TextAlign.center, - ), - actions: [ - FlatButton( - onPressed: () => Navigator.of(context).pop( false), - child: const Text('Cancel')), - FlatButton( - onPressed: () => Navigator.of(context).pop(true), - child: const Text('Remove')), - ], + return AlertWithTwoActions( + alertTitle: S.of(context).address_remove_contact, + alertContent: S.of(context).address_remove_content, + leftButtonText: S.of(context).remove, + rightButtonText: S.of(context).cancel, + actionLeftButton: () => Navigator.of(context).pop(true), + actionRightButton: () => Navigator.of(context).pop(false) ); }); } @@ -269,24 +280,13 @@ class AddressBookPage extends BasePage { return await showDialog( context: context, builder: (BuildContext context) { - return AlertDialog( - title: Text( - name, - textAlign: TextAlign.center, - style: TextStyle(fontWeight: FontWeight.bold), - ), - content: Text( - address, - textAlign: TextAlign.center, - ), - actions: [ - FlatButton( - onPressed: () => Navigator.of(context).pop(false), - child: Text('Cancel')), - FlatButton( - onPressed: () => Navigator.of(context).pop(true), - child: Text('Copy')) - ], + return AlertWithTwoActions( + alertTitle: name, + alertContent: address, + leftButtonText: S.of(context).copy, + rightButtonText: S.of(context).cancel, + actionLeftButton: () => Navigator.of(context).pop(true), + actionRightButton: () => Navigator.of(context).pop(false) ); }); } diff --git a/res/values/strings_de.arb b/res/values/strings_de.arb index 4b78f6af2..147a49dba 100644 --- a/res/values/strings_de.arb +++ b/res/values/strings_de.arb @@ -21,6 +21,8 @@ "contact_name" : "Name des Ansprechpartners", "reset" : "Zurücksetzen", "save" : "speichern", + "address_remove_contact" : "Kontakt entfernen", + "address_remove_content" : "Sind Sie sicher, dass Sie den ausgewählten Kontakt entfernen möchten?", "authenticated" : "Authentifiziert", diff --git a/res/values/strings_en.arb b/res/values/strings_en.arb index 3f8ba3280..bbd4dd53e 100644 --- a/res/values/strings_en.arb +++ b/res/values/strings_en.arb @@ -21,6 +21,8 @@ "contact_name" : "Contact Name", "reset" : "Reset", "save" : "Save", + "address_remove_contact" : "Remove contact", + "address_remove_content" : "Are you sure that you want to remove selected contact?", "authenticated" : "Authenticated", diff --git a/res/values/strings_es.arb b/res/values/strings_es.arb index 54acc7d85..c36c2bb4b 100644 --- a/res/values/strings_es.arb +++ b/res/values/strings_es.arb @@ -21,6 +21,8 @@ "contact_name" : "Nombre de contacto", "reset" : "Reiniciar", "save" : "Salvar", + "address_remove_contact" : "Remover contacto", + "address_remove_content" : "¿Estás seguro de que quieres eliminar el contacto seleccionado?", "authenticated" : "Autenticados", diff --git a/res/values/strings_hi.arb b/res/values/strings_hi.arb index 1751b594e..3ed5edec7 100644 --- a/res/values/strings_hi.arb +++ b/res/values/strings_hi.arb @@ -21,6 +21,8 @@ "contact_name" : "संपर्क नाम", "reset" : "रीसेट", "save" : "बचाना", + "address_remove_contact" : "संपर्क हटाये", + "address_remove_content" : "क्या आप वाकई चयनित संपर्क को हटाना चाहते हैं?", "authenticated" : "प्रमाणीकृत", diff --git a/res/values/strings_ja.arb b/res/values/strings_ja.arb index 6ea4b08be..f11766e4f 100644 --- a/res/values/strings_ja.arb +++ b/res/values/strings_ja.arb @@ -21,6 +21,8 @@ "contact_name" : "連絡先", "reset" : "リセットする", "save" : "セーブ", + "address_remove_contact" : "連絡先を削除します", + "address_remove_content" : "選択した連絡先を削除してもよろしいですか?", "authenticated" : "認証済み", diff --git a/res/values/strings_ko.arb b/res/values/strings_ko.arb index 1a89f243d..cb559ccf4 100644 --- a/res/values/strings_ko.arb +++ b/res/values/strings_ko.arb @@ -21,6 +21,8 @@ "contact_name" : "담당자 이름", "reset" : "다시 놓기", "save" : "구하다", + "address_remove_contact" : "연락처 삭제", + "address_remove_content" : "선택한 연락처를 삭제 하시겠습니까?", "authenticated" : "인증", diff --git a/res/values/strings_nl.arb b/res/values/strings_nl.arb index 079bcfd55..346365ee8 100644 --- a/res/values/strings_nl.arb +++ b/res/values/strings_nl.arb @@ -21,6 +21,8 @@ "contact_name" : "Contactnaam", "reset" : "Reset", "save" : "Opslaan", + "address_remove_contact" : "Contact verwijderen", + "address_remove_content" : "Weet u zeker dat u het geselecteerde contact wilt verwijderen?", "authenticated" : "Authenticated", diff --git a/res/values/strings_pl.arb b/res/values/strings_pl.arb index 10c2cdb75..9ba148c0a 100644 --- a/res/values/strings_pl.arb +++ b/res/values/strings_pl.arb @@ -21,6 +21,8 @@ "contact_name" : "Nazwa Kontaktu", "reset" : "Nastawić", "save" : "Zapisać", + "address_remove_contact" : "Usuń kontakt", + "address_remove_content" : "Czy na pewno chcesz usunąć wybrany kontakt?", "authenticated" : "Zalegalizowany", diff --git a/res/values/strings_pt.arb b/res/values/strings_pt.arb index 2a0f779e6..f2aa35201 100644 --- a/res/values/strings_pt.arb +++ b/res/values/strings_pt.arb @@ -21,6 +21,8 @@ "contact_name" : "Nome do contato", "reset" : "Limpar", "save" : "Salvar", + "address_remove_contact" : "Remover contato", + "address_remove_content" : "Tem certeza de que deseja remover o contato selecionado?", "authenticated" : "Autenticado", diff --git a/res/values/strings_ru.arb b/res/values/strings_ru.arb index 35d67247a..b8833ff7a 100644 --- a/res/values/strings_ru.arb +++ b/res/values/strings_ru.arb @@ -21,6 +21,8 @@ "contact_name" : "Имя контакта", "reset" : "Сброс", "save" : "Сохранить", + "address_remove_contact" : "Удалить контакт", + "address_remove_content" : "Вы уверены, что хотите удалить выбранный контакт?", "authenticated" : "Аутентифицировано", diff --git a/res/values/strings_uk.arb b/res/values/strings_uk.arb index 07464070f..f420442da 100644 --- a/res/values/strings_uk.arb +++ b/res/values/strings_uk.arb @@ -21,6 +21,8 @@ "contact_name" : "Ім'я контакту", "reset" : "Скинути", "save" : "Зберегти", + "address_remove_contact" : "Видалити контакт", + "address_remove_content" : "Ви впевнені, що хочете видалити вибраний контакт?", "authenticated" : "Аутентифіковано", diff --git a/res/values/strings_zh.arb b/res/values/strings_zh.arb index 5c1c2c100..00f9c1ce9 100644 --- a/res/values/strings_zh.arb +++ b/res/values/strings_zh.arb @@ -21,6 +21,8 @@ "contact_name" : "联系人姓名", "reset" : "重启", "save" : "保存", + "address_remove_contact" : "刪除聯繫人", + "address_remove_content" : "您確定要刪除所選的聯繫人嗎?", "authenticated" : "已认证",