fix(i18n): add missing translation keys for signatures and email import

Fixes 25 failing tests across translations and eml-import test suites:

- Add 141 missing i18n keys to en/common.json for P2.1 (extended signatures
  feature) and P2.5 (email import feature). Keys cover:
  - signatures.* (signature editor, toolbar labels, per-identity settings)
  - settings.importer.* (mail import UI labels and messages)
  - settings.tabs.signatures, settings.{loading,refresh}
  - email_composer.{insert_signature,no_signature,select_signature}
  - identities.form.{signature_store_*,use_global_default}
  - calendar.{edit,delete,duplicate}, contacts.{edit,delete,send_email}
  - contacts.import.csv_* (CSV column mapping labels)
  - Other related keys for sharing, mailbox context menu, file operations

- Propagate new keys to all 23 other locale files:
  - ar, ca, cs, da, de, es, fa, fr, he, hu, it, ja, ko, lv, nl, pl, pt, ro,
    ru, sk, tr, uk, zh
  - 19 locales with real, idiomatic translations matching existing tone
  - 4 locales (da, es, fa, zh) with English placeholders pending native
    translation

- Fix eml-import test: update accept-string expectation to match actual
  EML_IMPORT_ACCEPT constant (now includes .tgz, .tar.gz, application/gzip
  support added in P2.5)

All 53 tests now pass:
  - 48 translation completeness tests
  - 5 eml-import tests

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Bernd Rodler
2026-08-07 15:15:17 +02:00
co-authored by Claude Sonnet 5
parent a0bffa9467
commit 1189b146ef
26 changed files with 4123 additions and 253 deletions
+167 -10
View File
@@ -567,7 +567,8 @@
"copied": "تم النسخ!",
"copy_failed": "فشل النسخ"
},
"send_now": "إرسال الآن"
"send_now": "إرسال الآن",
"create_appointment": "إنشاء موعد"
},
"email_composer": {
"read_receipt_on": "إيصال القراءة مطلوب (انقر للتعطيل)",
@@ -712,7 +713,10 @@
"delete_table": "حذف الجدول",
"pick_size": "اختيار الحجم"
},
"send_filing_warning": "تم الإرسال - لكن التنظيف بعد الإرسال فشل، وقد تبقى مسودة قديمة."
"send_filing_warning": "تم الإرسال - لكن التنظيف بعد الإرسال فشل، وقد تبقى مسودة قديمة.",
"insert_signature": "إدراج التوقيع",
"no_signature": "لا يوجد توقيع",
"select_signature": "اختيار التوقيع"
},
"confirm_dialog": {
"confirm": "تأكيد",
@@ -891,7 +895,10 @@
"downloads": "التنزيلات",
"content_senders": "المحتوى والمرسلون",
"about_data": "حول والبيانات",
"debug": "التصحيح"
"debug": "التصحيح",
"import": "استيراد",
"sharing": "المشاركة",
"signatures": "التوقيعات"
},
"tab_groups": {
"general": "عام",
@@ -2007,7 +2014,39 @@
"preview": {
"label": "معاينة"
}
}
},
"importer": {
"action_label": "استيراد",
"cancel": "إلغاء",
"choose_files": "اختيار الملفات",
"conflict_copy": "الاحتفاظ بالنسختين",
"conflict_description": "اختر ما يجب فعله عند وجود رسالة مستوردة مسبقًا.",
"conflict_label": "التعامل مع التكرار",
"conflict_replace": "استبدال المكررات",
"conflict_skip": "تخطي المكررات",
"description": "استيراد رسائل البريد الإلكتروني من ملفات ‎.eml إلى مجلد.",
"error_details": "{count, plural, one {# خطأ} other {# أخطاء}}",
"fail": "فشل الاستيراد",
"file_description": "اختر ملف ‎.eml واحدًا أو أكثر للاستيراد.",
"file_label": "الملفات",
"files_selected": "{count, plural, one {تم تحديد ملف واحد} other {تم تحديد # ملف}}",
"folder_description": "اختر المجلد الذي سيتم استيراد الرسائل إليه.",
"folder_label": "المجلد الوجهة",
"import_complete": "اكتمل الاستيراد",
"import_more": "استيراد المزيد",
"importing": "جارٍ الاستيراد...",
"progress_failed": "فشل {count}",
"progress_imported": "تم استيراد {count}",
"progress_skipped": "تم تخطي {count}",
"start_import": "{count, plural, one {استيراد ملف واحد} other {استيراد # ملف}}",
"success": "{count, plural, one {تم استيراد رسالة واحدة} other {تم استيراد # رسالة}}",
"summary_failed": "{count, plural, one {فشلت رسالة واحدة} other {فشلت # رسالة}}",
"summary_imported": "{count, plural, one {تم استيراد رسالة واحدة} other {تم استيراد # رسالة}}",
"summary_skipped": "{count, plural, one {تم تخطي رسالة واحدة} other {تم تخطي # رسالة}}",
"title": "استيراد البريد"
},
"loading": "جارٍ التحميل...",
"refresh": "تحديث"
},
"errors": {
"page_error_title": "حدث خطأ ما",
@@ -2085,7 +2124,8 @@
"toast_error_rename": "فشلت إعادة تسمية المجلد",
"toast_error_delete": "فشل حذف المجلد",
"toast_error_delete_has_children": "المجلد يحتوي على مجلدات فرعية. أزلها أولًا.",
"toast_error_delete_has_email": "المجلد ليس فارغًا. أفرغه أولًا."
"toast_error_delete_has_email": "المجلد ليس فارغًا. أفرغه أولًا.",
"share_folder": "مشاركة المجلد..."
},
"shortcuts": {
"title": "اختصارات لوحة المفاتيح",
@@ -2184,7 +2224,11 @@
"save": "حفظ الهوية",
"cancel": "إلغاء",
"creating": "جارٍ الإنشاء...",
"updating": "جارٍ التحديث..."
"updating": "جارٍ التحديث...",
"signature_store_default": "التوقيع الافتراضي",
"signature_store_mapping": "تعيين التوقيع",
"signature_store_reply": "توقيع الرد",
"use_global_default": "استخدام الافتراضي العام"
},
"sub_address": {
"button_tooltip": "استخدام عنوان فرعي",
@@ -2511,7 +2555,29 @@
"success": "{count, plural, one {تم استيراد جهة اتصال واحدة} other {تم استيراد # جهة اتصال}}",
"failed": "فشل الاستيراد",
"close": "إغلاق",
"file_too_large": "الملف كبير جدًا (الحد الأقصى 5 ميغابايت)"
"file_too_large": "الملف كبير جدًا (الحد الأقصى 5 ميغابايت)",
"csv_address": "العنوان",
"csv_address_book": "دفتر العناوين",
"csv_back": "رجوع",
"csv_city": "المدينة",
"csv_company": "الشركة",
"csv_country": "البلد",
"csv_email": "البريد الإلكتروني",
"csv_first_name": "الاسم الأول",
"csv_ignore": "تجاهل هذا العمود",
"csv_job_title": "المسمى الوظيفي",
"csv_last_name": "الاسم الأخير",
"csv_load_all": "تحميل الكل",
"csv_map_columns": "تعيين الأعمدة",
"csv_nickname": "الاسم المستعار",
"csv_note": "ملاحظة",
"csv_phone": "الهاتف",
"csv_postcode": "الرمز البريدي",
"csv_preview": "معاينة",
"csv_preview_title": "معاينة ({count, plural, one {# صف} other {# صفوف}})",
"csv_region": "المنطقة/الولاية",
"csv_website": "الموقع الإلكتروني",
"file_types_csv": "ملفات .csv"
},
"export": {
"title": "تصدير جهات الاتصال",
@@ -2569,7 +2635,10 @@
"has_email": "لديه بريد إلكتروني",
"has_phone": "لديه هاتف",
"has_photo": "لديه صورة"
}
},
"delete": "حذف",
"edit": "تعديل",
"send_email": "إرسال بريد إلكتروني"
},
"calendar": {
"title": "التقويم",
@@ -2988,6 +3057,36 @@
"due_today": "اليوم",
"due_tomorrow": "غدًا",
"overdue": "متأخرة"
},
"delete": "حذف",
"duplicate": "تكرار",
"edit": "تعديل",
"freeBusy": {
"busy": "مشغول",
"check": "التحقق من التوفر",
"click_to_select": "انقر على فترة متاحة لتحديد هذا الوقت",
"free": "متاح",
"hide": "إخفاء التوفر",
"loading": "جارٍ التحميل...",
"no_participants": "أضف مشاركين للتحقق من التوفر.",
"tentative": "مبدئي",
"timezone": "المنطقة الزمنية",
"title": "التوفر",
"unavailable": "خارج المكتب",
"unknown": "لا تتوفر معلومات"
},
"resources": {
"clear_all": "مسح الكل",
"filter_all": "الكل",
"hide": "إخفاء الموارد",
"no_resources": "لا توجد موارد متاحة",
"remove": "إزالة {name}",
"search_placeholder": "بحث في الموارد...",
"title": "الموارد",
"type_equipment": "المعدات",
"type_other": "أخرى",
"type_room": "الغرف",
"type_vehicle": "المركبات"
}
},
"sharing": {
@@ -3011,7 +3110,14 @@
"readWrite": "قراءة وكتابة",
"manager": "مدير",
"custom": "مخصص"
}
},
"accept": "قبول",
"decline": "رفض",
"no_shares_by_me": "لم تشارك أي شيء بعد.",
"no_shares_with_me": "لا توجد مجلدات مشتركة معك بعد.",
"shared_by": "شارك بواسطة",
"tab_shared_by_me": "مشترك مني",
"tab_shared_with_me": "مشترك معي"
},
"advanced_search": {
"title": "بحث متقدم",
@@ -3176,7 +3282,8 @@
"disabled_description": "قد تتسبب عمليات رفع الملفات الكبيرة عبر WebDAV في زعزعة استقرار Stalwart/RocksDB، بما في ذلك انهيارات نفاد الذاكرة واستخدام غير قابل للاسترجاع لمساحة القرص. قد لا تُحذف الملفات المحذوفة فورًا من مخزن الكائنات الثنائية. لا يُنصح بهذه الميزة لبيئات الإنتاج.",
"stability_warning": "قد تتسبب عمليات رفع الملفات الكبيرة في زعزعة استقرار الخادم. قد لا تُحذف الملفات المحذوفة فورًا من التخزين. استخدمها بحذر.",
"migration_title": "جارٍ تحديث ملفاتك…",
"migration_description": "جارٍ تنظيم المجلدات والملفات في هيكلها الصحيح. يحدث هذا مرة واحدة فقط."
"migration_description": "جارٍ تنظيم المجلدات والملفات في هيكلها الصحيح. يحدث هذا مرة واحدة فقط.",
"send_as_attachment": "إرسال كمرفق"
},
"smime": {
"your_certificates": "شهاداتك",
@@ -3324,5 +3431,55 @@
"install": "تثبيت",
"dont_remind": "عدم التذكير مرة أخرى",
"dismiss_aria": "تجاهل مطالبة التثبيت"
},
"signatures": {
"add_signature": "إضافة توقيع",
"default": "افتراضي",
"default_signature": {
"description": "يُستخدم للرسائل الجديدة ما لم يتم تجاوزه لكل هوية.",
"label": "التوقيع الافتراضي"
},
"delete_message": "هل أنت متأكد أنك تريد حذف \"{name}\"؟ لا يمكن التراجع عن هذا.",
"delete_title": "حذف التوقيع؟",
"description": "إنشاء وإدارة توقيعات البريد الإلكتروني لاستخدامها عند الكتابة أو الرد.",
"duplicate": "تكرار",
"edit_signature": "تعديل التوقيع",
"editor_label": "التوقيع",
"html_preview_label": "معاينة HTML",
"name_label": "الاسم",
"name_placeholder": "مثال: العمل، الشخصي",
"name_required": "الاسم مطلوب",
"new_signature": "توقيع جديد",
"no_signature": "لا يوجد توقيع",
"no_signatures": "لا توجد توقيعات بعد",
"per_identity_signatures": {
"description": "تجاوز التوقيع الافتراضي وتوقيع الرد لهويات معينة.",
"label": "توقيعات لكل هوية"
},
"plain_text_preview_label": "معاينة النص العادي",
"reply": "رد",
"reply_signature": {
"description": "يُستخدم عند الرد أو إعادة التوجيه ما لم يتم تجاوزه لكل هوية.",
"label": "توقيع الرد"
},
"show_editor": "إظهار المحرر",
"show_preview": "إظهار المعاينة",
"title": "التوقيعات",
"toolbar": {
"align_center": "توسيط",
"align_left": "محاذاة لليسار",
"align_right": "محاذاة لليمين",
"bold": "غامق",
"bullet_list": "قائمة نقطية",
"italic": "مائل",
"link": "رابط",
"ordered_list": "قائمة مرقمة",
"remove_color": "إزالة اللون",
"strikethrough": "يتوسطه خط",
"text_color": "لون النص",
"underline": "تسطير"
},
"use_global_default": "استخدام الافتراضي العام",
"your_signatures": "توقيعاتك ({count})"
}
}