From d773aaebfedd69ab2f0a17555e28a6a22acba1ac Mon Sep 17 00:00:00 2001 From: Bhoma38 Date: Mon, 12 Aug 2024 19:21:13 +0530 Subject: [PATCH] Fix For #2692, Adding Phone metadata field on EPerson Add/Edit Page --- .../eperson-form/eperson-form.component.ts | 27 ++++++++++++++++++- src/app/core/eperson/eperson-data.service.ts | 2 +- src/assets/i18n/ar.json5 | 1 + src/assets/i18n/bn.json5 | 3 +++ src/assets/i18n/ca.json5 | 3 +++ src/assets/i18n/cs.json5 | 3 +++ src/assets/i18n/de.json5 | 3 +++ src/assets/i18n/el.json5 | 1 + src/assets/i18n/en.json5 | 3 +++ src/assets/i18n/es.json5 | 3 +++ src/assets/i18n/fi.json5 | 3 +++ src/assets/i18n/fr.json5 | 3 +++ src/assets/i18n/gd.json5 | 3 +++ src/assets/i18n/hi.json5 | 2 ++ src/assets/i18n/hu.json5 | 3 +++ src/assets/i18n/it.json5 | 3 +++ src/assets/i18n/kk.json5 | 3 +++ src/assets/i18n/lv.json5 | 3 +++ src/assets/i18n/nl.json5 | 4 +++ src/assets/i18n/pl.json5 | 1 + src/assets/i18n/pt-BR.json5 | 3 +++ src/assets/i18n/pt-PT.json5 | 3 +++ src/assets/i18n/sr-cyr.json5 | 1 + src/assets/i18n/sr-lat.json5 | 1 + src/assets/i18n/sv.json5 | 3 +++ src/assets/i18n/tr.json5 | 3 +++ src/assets/i18n/uk.json5 | 3 +++ src/assets/i18n/vi.json5 | 1 + 28 files changed, 93 insertions(+), 2 deletions(-) diff --git a/src/app/access-control/epeople-registry/eperson-form/eperson-form.component.ts b/src/app/access-control/epeople-registry/eperson-form/eperson-form.component.ts index 05efde7cf7d..38ac898b0c3 100644 --- a/src/app/access-control/epeople-registry/eperson-form/eperson-form.component.ts +++ b/src/app/access-control/epeople-registry/eperson-form/eperson-form.component.ts @@ -118,6 +118,7 @@ export class EPersonFormComponent implements OnInit, OnDestroy { firstName: DynamicInputModel; lastName: DynamicInputModel; email: DynamicInputModel; + phone: DynamicInputModel; // booleans canLogIn: DynamicCheckboxModel; requireCertificate: DynamicCheckboxModel; @@ -146,6 +147,11 @@ export class EPersonFormComponent implements OnInit, OnDestroy { host: 'row', }, }, + phone: { + grid: { + host: 'row', + }, + }, canLogIn: { grid: { host: 'col col-sm-6 d-inline-block', @@ -279,10 +285,11 @@ export class EPersonFormComponent implements OnInit, OnDestroy { this.translateService.get(`${this.messagePrefix}.firstName`), this.translateService.get(`${this.messagePrefix}.lastName`), this.translateService.get(`${this.messagePrefix}.email`), + this.translateService.get(`${this.messagePrefix}.phone`), this.translateService.get(`${this.messagePrefix}.canLogIn`), this.translateService.get(`${this.messagePrefix}.requireCertificate`), this.translateService.get(`${this.messagePrefix}.emailHint`), - ]).subscribe(([firstName, lastName, email, canLogIn, requireCertificate, emailHint]) => { + ]).subscribe(([firstName, lastName, email, phone, canLogIn, requireCertificate, emailHint]) => { this.firstName = new DynamicInputModel({ id: 'firstName', label: firstName, @@ -316,6 +323,12 @@ export class EPersonFormComponent implements OnInit, OnDestroy { }, hint: emailHint, }); + this.phone = new DynamicInputModel({ + id: 'phone', + label: phone, + name: 'phone', + required: false, + }); this.canLogIn = new DynamicCheckboxModel( { id: 'canLogIn', @@ -334,6 +347,7 @@ export class EPersonFormComponent implements OnInit, OnDestroy { this.firstName, this.lastName, this.email, + this.phone, this.canLogIn, this.requireCertificate, ]; @@ -349,6 +363,7 @@ export class EPersonFormComponent implements OnInit, OnDestroy { firstName: eperson != null ? eperson.firstMetadataValue('eperson.firstname') : '', lastName: eperson != null ? eperson.firstMetadataValue('eperson.lastname') : '', email: eperson != null ? eperson.email : '', + phone: eperson != null ? eperson.firstMetadataValue('eperson.phone') : '', canLogIn: eperson != null ? eperson.canLogIn : true, requireCertificate: eperson != null ? eperson.requireCertificate : false, }); @@ -428,6 +443,11 @@ export class EPersonFormComponent implements OnInit, OnDestroy { value: this.lastName.value, }, ], + 'eperson.phone': [ + { + value: this.phone.value, + }, + ], }, email: this.email.value, canLogIn: this.canLogIn.value, @@ -485,6 +505,11 @@ export class EPersonFormComponent implements OnInit, OnDestroy { value: (this.lastName.value ? this.lastName.value : ePerson.firstMetadataValue('eperson.lastname')), }, ], + 'eperson.phone': [ + { + value: (this.phone.value ? this.phone.value : ePerson.firstMetadataValue('eperson.phone')), + }, + ], }, email: (hasValue(values.email) ? values.email : ePerson.email), canLogIn: (hasValue(values.canLogIn) ? values.canLogIn : ePerson.canLogIn), diff --git a/src/app/core/eperson/eperson-data.service.ts b/src/app/core/eperson/eperson-data.service.ts index 0de6de7407e..0c61e918fe9 100644 --- a/src/app/core/eperson/eperson-data.service.ts +++ b/src/app/core/eperson/eperson-data.service.ts @@ -269,7 +269,7 @@ export class EPersonDataService extends IdentifiableDataService impleme * @param newEPerson */ private generateOperations(oldEPerson: EPerson, newEPerson: EPerson): Operation[] { - let operations = this.comparator.diff(oldEPerson, newEPerson).filter((operation: Operation) => operation.op === 'replace'); + let operations = this.comparator.diff(oldEPerson, newEPerson).filter((operation: Operation) => operation.op === 'replace' || operation.op === 'add'); if (hasValue(oldEPerson.email) && oldEPerson.email !== newEPerson.email) { operations = [...operations, { op: 'replace', path: '/email', value: newEPerson.email, diff --git a/src/assets/i18n/ar.json5 b/src/assets/i18n/ar.json5 index 6d97effb4cc..872adb70829 100644 --- a/src/assets/i18n/ar.json5 +++ b/src/assets/i18n/ar.json5 @@ -159,6 +159,7 @@ "admin.access-control.epeople.form.email": "البريد الإلكتروني", "admin.access-control.epeople.form.emailHint": "يجب أن يكون عنوان بريد الإلكتروني صالح", "admin.access-control.epeople.form.canLogIn": "يمكننا تسجيل الدخول", + "admin.access-control.epeople.form.phone" : "هاتف", "admin.access-control.epeople.form.requireCertificate": "أنا", "admin.access-control.epeople.form.return": "رجوع", "admin.access-control.epeople.form.notification.created.success": "تم إنشاء الشخص الإلكتروني \"{{name}}\"", diff --git a/src/assets/i18n/bn.json5 b/src/assets/i18n/bn.json5 index ee61e94dd9e..e1a1cd96b8d 100644 --- a/src/assets/i18n/bn.json5 +++ b/src/assets/i18n/bn.json5 @@ -395,6 +395,9 @@ // "admin.access-control.epeople.form.canLogIn": "Can log in", "admin.access-control.epeople.form.canLogIn": "লগ ইন করতে পারেন", + // "admin.access-control.epeople.form.phone" : "Phone", + "admin.access-control.epeople.form.phone" : "ফোন", + // "admin.access-control.epeople.form.requireCertificate": "Requires certificate", "admin.access-control.epeople.form.requireCertificate": "সার্টিফিকেট প্রয়োজন", diff --git a/src/assets/i18n/ca.json5 b/src/assets/i18n/ca.json5 index e257ebafc58..e79f83a037f 100644 --- a/src/assets/i18n/ca.json5 +++ b/src/assets/i18n/ca.json5 @@ -424,6 +424,9 @@ // "admin.access-control.epeople.form.canLogIn": "Can log in", "admin.access-control.epeople.form.canLogIn": "Pot iniciar sessió", + // "admin.access-control.epeople.form.phone" : "Phone", + "admin.access-control.epeople.form.phone" : "telèfon", + // "admin.access-control.epeople.form.requireCertificate": "Requires certificate", "admin.access-control.epeople.form.requireCertificate": "Requereix certificat", diff --git a/src/assets/i18n/cs.json5 b/src/assets/i18n/cs.json5 index 0b4168cca94..5213481acbd 100644 --- a/src/assets/i18n/cs.json5 +++ b/src/assets/i18n/cs.json5 @@ -500,6 +500,9 @@ // "admin.access-control.epeople.form.canLogIn": "Can log in", "admin.access-control.epeople.form.canLogIn": "Lze se přihlásit", + // "admin.access-control.epeople.form.phone" : "Phone", + "admin.access-control.epeople.form.phone" : "Telefon", + // "admin.access-control.epeople.form.requireCertificate": "Requires certificate", "admin.access-control.epeople.form.requireCertificate": "Vyžaduje certifikát", diff --git a/src/assets/i18n/de.json5 b/src/assets/i18n/de.json5 index 285bbfa43d4..98201887667 100644 --- a/src/assets/i18n/de.json5 +++ b/src/assets/i18n/de.json5 @@ -398,6 +398,9 @@ // "admin.access-control.epeople.form.canLogIn": "Can log in", "admin.access-control.epeople.form.canLogIn": "Darf sich anmelden", + // "admin.access-control.epeople.form.phone" : "Phone", + "admin.access-control.epeople.form.phone" : "Telefon", + // "admin.access-control.epeople.form.requireCertificate": "Requires certificate", "admin.access-control.epeople.form.requireCertificate": "Es wird ein Zertifikat benötigt.", diff --git a/src/assets/i18n/el.json5 b/src/assets/i18n/el.json5 index a7e13009ffc..3f4da61f6f7 100644 --- a/src/assets/i18n/el.json5 +++ b/src/assets/i18n/el.json5 @@ -24,6 +24,7 @@ "admin.access-control.epeople.button.add": "Προσθήκη Eperson", "admin.access-control.epeople.button.see-all": "Περιήγηση σε όλα", "admin.access-control.epeople.form.canLogIn": "Δυνατότητα σύνδεσης", + "admin.access-control.epeople.form.phone" : "Τηλέφωνο", "admin.access-control.epeople.form.create": "Δημιουργία EPerson", "admin.access-control.epeople.form.edit": "Επεξεργασία EPerson", "admin.access-control.epeople.form.email": "Ηλεκτρονική Διεύθυνση", diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5 index 8f20c657f94..d9e38c63ea8 100644 --- a/src/assets/i18n/en.json5 +++ b/src/assets/i18n/en.json5 @@ -320,6 +320,9 @@ "admin.access-control.epeople.form.canLogIn": "Can log in", + // "admin.access-control.epeople.form.phone" : "Phone", + "admin.access-control.epeople.form.phone" : "Phone", + "admin.access-control.epeople.form.requireCertificate": "Requires certificate", "admin.access-control.epeople.form.return": "Back", diff --git a/src/assets/i18n/es.json5 b/src/assets/i18n/es.json5 index 55962d25b5f..564e38630cf 100644 --- a/src/assets/i18n/es.json5 +++ b/src/assets/i18n/es.json5 @@ -441,6 +441,9 @@ // "admin.access-control.epeople.form.canLogIn": "Can log in", "admin.access-control.epeople.form.canLogIn": "Puede iniciar sesión", + // "admin.access-control.epeople.form.phone" : "Phone", + "admin.access-control.epeople.form.phone" : "Teléfono", + // "admin.access-control.epeople.form.requireCertificate": "Requires certificate", "admin.access-control.epeople.form.requireCertificate": "Requiere certificado", diff --git a/src/assets/i18n/fi.json5 b/src/assets/i18n/fi.json5 index 227d3519e4a..0e6bcb6aa7a 100644 --- a/src/assets/i18n/fi.json5 +++ b/src/assets/i18n/fi.json5 @@ -417,6 +417,9 @@ // "admin.access-control.epeople.form.canLogIn": "Can log in", "admin.access-control.epeople.form.canLogIn": "Voi kirjautua", + // "admin.access-control.epeople.form.phone" : "Phone", + "admin.access-control.epeople.form.phone" : "Puhelin", + // "admin.access-control.epeople.form.requireCertificate": "Requires certificate", "admin.access-control.epeople.form.requireCertificate": "Vaatii sertifikaatin", diff --git a/src/assets/i18n/fr.json5 b/src/assets/i18n/fr.json5 index 399363f0172..a0961c01c88 100644 --- a/src/assets/i18n/fr.json5 +++ b/src/assets/i18n/fr.json5 @@ -429,6 +429,9 @@ // "admin.access-control.epeople.form.canLogIn": "Can log in", "admin.access-control.epeople.form.canLogIn": "Peut se connecter", + // "admin.access-control.epeople.form.phone" : "Phone", + "admin.access-control.epeople.form.phone" : "Telefon", + // "admin.access-control.epeople.form.requireCertificate": "Requires certificate", "admin.access-control.epeople.form.requireCertificate": "Doit avoir recours à un certificat", diff --git a/src/assets/i18n/gd.json5 b/src/assets/i18n/gd.json5 index ee9ad16a9f2..2d9ac96205d 100644 --- a/src/assets/i18n/gd.json5 +++ b/src/assets/i18n/gd.json5 @@ -386,6 +386,9 @@ // "admin.access-control.epeople.form.canLogIn": "Can log in", "admin.access-control.epeople.form.canLogIn": "Faodar logadh a-steach", + // "admin.access-control.epeople.form.phone" : "Phone", + "admin.access-control.epeople.form.phone" : "Fòn", + // "admin.access-control.epeople.form.requireCertificate": "Requires certificate", "admin.access-control.epeople.form.requireCertificate": "Teisteanas a dhìth", diff --git a/src/assets/i18n/hi.json5 b/src/assets/i18n/hi.json5 index 0513f48965c..29304007a48 100644 --- a/src/assets/i18n/hi.json5 +++ b/src/assets/i18n/hi.json5 @@ -71,6 +71,8 @@ "admin.access-control.epeople.form.lastName": "उपनाम", + "admin.access-control.epeople.form.phone" : "फ़ोन", + "admin.access-control.epeople.form.memberOfNoGroups": "यह ई-व्यक्ति किसी भी समूह का सदस्य नहीं है", "admin.access-control.epeople.form.notification.created.failure": "\"{{name}}\" ई-व्यक्ति बनाने में विफल", diff --git a/src/assets/i18n/hu.json5 b/src/assets/i18n/hu.json5 index 1b1702503f9..2a6a71673ed 100644 --- a/src/assets/i18n/hu.json5 +++ b/src/assets/i18n/hu.json5 @@ -425,6 +425,9 @@ // "admin.access-control.epeople.form.canLogIn": "Can log in", "admin.access-control.epeople.form.canLogIn": "Bejelentkezhet", + // "admin.access-control.epeople.form.phone" : "Phone", + "admin.access-control.epeople.form.phone" : "telefon", + // "admin.access-control.epeople.form.requireCertificate": "Requires certificate", "admin.access-control.epeople.form.requireCertificate": "Tanúsítvány szükséges", diff --git a/src/assets/i18n/it.json5 b/src/assets/i18n/it.json5 index 4a5d3a4881a..5ad12692d63 100644 --- a/src/assets/i18n/it.json5 +++ b/src/assets/i18n/it.json5 @@ -424,6 +424,9 @@ // "admin.access-control.epeople.form.canLogIn": "Can log in", "admin.access-control.epeople.form.canLogIn": "Può accedere", + // "admin.access-control.epeople.form.phone" : "Phone", + "admin.access-control.epeople.form.phone" : "Telefono", + // "admin.access-control.epeople.form.requireCertificate": "Requires certificate", "admin.access-control.epeople.form.requireCertificate": "Richiede certificato", diff --git a/src/assets/i18n/kk.json5 b/src/assets/i18n/kk.json5 index 09b31ff9ada..7e11f262473 100644 --- a/src/assets/i18n/kk.json5 +++ b/src/assets/i18n/kk.json5 @@ -424,6 +424,9 @@ // "admin.access-control.epeople.form.canLogIn": "Can log in", "admin.access-control.epeople.form.canLogIn": "Мен кіре аламын", + // "admin.access-control.epeople.form.phone" : "Phone", + "admin.access-control.epeople.form.phone" : "Телефон", + // "admin.access-control.epeople.form.requireCertificate": "Requires certificate", "admin.access-control.epeople.form.requireCertificate": "Сертификат қажет", diff --git a/src/assets/i18n/lv.json5 b/src/assets/i18n/lv.json5 index 4c3ba59f795..30dca5c6a88 100644 --- a/src/assets/i18n/lv.json5 +++ b/src/assets/i18n/lv.json5 @@ -395,6 +395,9 @@ // "admin.access-control.epeople.form.canLogIn": "Can log in", "admin.access-control.epeople.form.canLogIn": "Var pierakstīties", + // "admin.access-control.epeople.form.phone" : "Phone", + "admin.access-control.epeople.form.phone" : "Tālrunis", + // "admin.access-control.epeople.form.requireCertificate": "Requires certificate", "admin.access-control.epeople.form.requireCertificate": "Nepieciešams sertifikāts", diff --git a/src/assets/i18n/nl.json5 b/src/assets/i18n/nl.json5 index cb39e470550..25a349c2004 100644 --- a/src/assets/i18n/nl.json5 +++ b/src/assets/i18n/nl.json5 @@ -418,6 +418,10 @@ // TODO New key - Add a translation "admin.access-control.epeople.form.canLogIn": "Can log in", + // "admin.access-control.epeople.form.phone" : "Phone", + // TODO New key - Add a translation + "admin.access-control.epeople.form.phone" : "Phone", + // "admin.access-control.epeople.form.requireCertificate": "Requires certificate", // TODO New key - Add a translation "admin.access-control.epeople.form.requireCertificate": "Requires certificate", diff --git a/src/assets/i18n/pl.json5 b/src/assets/i18n/pl.json5 index f7fe80eabf5..4c43fa4632f 100644 --- a/src/assets/i18n/pl.json5 +++ b/src/assets/i18n/pl.json5 @@ -123,6 +123,7 @@ "admin.access-control.epeople.form.email": "E-mail", "admin.access-control.epeople.form.emailHint": "Adres e-mail musi być poprawny", "admin.access-control.epeople.form.canLogIn": "Możliwość zalogowania", + "admin.access-control.epeople.form.phone" : "Telefon", "admin.access-control.epeople.form.requireCertificate": "Wymagany certyfikat", "admin.access-control.epeople.form.return": "Powrót", "admin.access-control.epeople.form.notification.created.success": "Udało się utworzyć użytkownika \"{{name}}\"", diff --git a/src/assets/i18n/pt-BR.json5 b/src/assets/i18n/pt-BR.json5 index c3b26a09d28..b0c5bec1b29 100644 --- a/src/assets/i18n/pt-BR.json5 +++ b/src/assets/i18n/pt-BR.json5 @@ -479,6 +479,9 @@ // "admin.access-control.epeople.form.canLogIn": "Can log in", "admin.access-control.epeople.form.canLogIn": "Pode entrar", + // "admin.access-control.epeople.form.phone" : "Phone", + "admin.access-control.epeople.form.phone" : "Telefone", + // "admin.access-control.epeople.form.requireCertificate": "Requires certificate", "admin.access-control.epeople.form.requireCertificate": "Requer certificado", diff --git a/src/assets/i18n/pt-PT.json5 b/src/assets/i18n/pt-PT.json5 index 414b70448d1..b27debeb04d 100644 --- a/src/assets/i18n/pt-PT.json5 +++ b/src/assets/i18n/pt-PT.json5 @@ -458,6 +458,9 @@ // "admin.access-control.epeople.form.canLogIn": "Can log in", "admin.access-control.epeople.form.canLogIn": "Pode iniciar sessão", + // "admin.access-control.epeople.form.phone" : "Phone", + "admin.access-control.epeople.form.phone" : "telefone", + // "admin.access-control.epeople.form.requireCertificate": "Requires certificate", "admin.access-control.epeople.form.requireCertificate": "Requer certificado", diff --git a/src/assets/i18n/sr-cyr.json5 b/src/assets/i18n/sr-cyr.json5 index 548343ed610..4bd20296aee 100644 --- a/src/assets/i18n/sr-cyr.json5 +++ b/src/assets/i18n/sr-cyr.json5 @@ -147,6 +147,7 @@ "admin.access-control.epeople.form.email": "Е-мејл", "admin.access-control.epeople.form.emailHint": "Мора бити важећа Е-мејл адреса", "admin.access-control.epeople.form.canLogIn": "Може се пријавити", + "admin.access-control.epeople.form.phone" : "Телефон", "admin.access-control.epeople.form.requireCertificate": "Потребан је сертификат", "admin.access-control.epeople.form.return": "Назад", "admin.access-control.epeople.form.notification.created.success": "Успешно креиран EPerson \"{{name}}\"", diff --git a/src/assets/i18n/sr-lat.json5 b/src/assets/i18n/sr-lat.json5 index 38faa7aa189..c35bddb292f 100644 --- a/src/assets/i18n/sr-lat.json5 +++ b/src/assets/i18n/sr-lat.json5 @@ -147,6 +147,7 @@ "admin.access-control.epeople.form.email": "E-mail", "admin.access-control.epeople.form.emailHint": "Mora biti važeća e-mail adresa", "admin.access-control.epeople.form.canLogIn": "Može se prijaviti", + "admin.access-control.epeople.form.phone" : "Telefon", "admin.access-control.epeople.form.requireCertificate": "Potreban je sertifikat", "admin.access-control.epeople.form.return": "Nazad", "admin.access-control.epeople.form.notification.created.success": "Uspešno kreiran EPerson \"{{name}}\"", diff --git a/src/assets/i18n/sv.json5 b/src/assets/i18n/sv.json5 index d0c599e4e80..147256fddc6 100644 --- a/src/assets/i18n/sv.json5 +++ b/src/assets/i18n/sv.json5 @@ -398,6 +398,9 @@ // "admin.access-control.epeople.form.canLogIn": "Can log in", "admin.access-control.epeople.form.canLogIn": "Kan logga in", + // "admin.access-control.epeople.form.phone" : "Phone", + "admin.access-control.epeople.form.phone" : "Telefon", + // "admin.access-control.epeople.form.requireCertificate": "Requires certificate", "admin.access-control.epeople.form.requireCertificate": "Kräver certificate", diff --git a/src/assets/i18n/tr.json5 b/src/assets/i18n/tr.json5 index d10bcd2056d..4e79106103b 100644 --- a/src/assets/i18n/tr.json5 +++ b/src/assets/i18n/tr.json5 @@ -377,6 +377,9 @@ // "admin.access-control.epeople.form.canLogIn": "Can log in", "admin.access-control.epeople.form.canLogIn": "Giriş yapabilir", + // "admin.access-control.epeople.form.phone" : "Phone", + "admin.access-control.epeople.form.phone" : "Telefon", + // "admin.access-control.epeople.form.requireCertificate": "Requires certificate", "admin.access-control.epeople.form.requireCertificate": "Sertifika gerektirir", diff --git a/src/assets/i18n/uk.json5 b/src/assets/i18n/uk.json5 index 925cf33b00b..5bb6f642f90 100644 --- a/src/assets/i18n/uk.json5 +++ b/src/assets/i18n/uk.json5 @@ -391,6 +391,9 @@ // "admin.access-control.epeople.form.canLogIn": "Can log in", "admin.access-control.epeople.form.canLogIn": "Може увійти", + // "admin.access-control.epeople.form.phone" : "Phone", + "admin.access-control.epeople.form.phone" : "Телефон", + // "admin.access-control.epeople.form.requireCertificate": "Requires certificate", "admin.access-control.epeople.form.requireCertificate": "Вимагати сертифікат", diff --git a/src/assets/i18n/vi.json5 b/src/assets/i18n/vi.json5 index 4ebe2c05d14..557920c8e49 100644 --- a/src/assets/i18n/vi.json5 +++ b/src/assets/i18n/vi.json5 @@ -111,6 +111,7 @@ "admin.access-control.epeople.button.add": "Thêm người dùng", "admin.access-control.epeople.button.see-all": "Duyệt toàn bộ", "admin.access-control.epeople.form.canLogIn": "Có thể đăng nhập", + "admin.access-control.epeople.form.phone" : "Điện thoại", "admin.access-control.epeople.form.create": "Tạo người dùng", "admin.access-control.epeople.form.edit": "Chỉnh sửa người dùng", "admin.access-control.epeople.form.email": "E-mail",