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": "Create Appointment"
},
"email_composer": {
"read_receipt_on": "درخواست تأیید خواندن فعال (کلیک برای غیرفعال کردن)",
@@ -712,7 +713,10 @@
"delete_table": "حذف جدول",
"pick_size": "انتخاب اندازه"
},
"send_filing_warning": "ارسال شد - اما پاک‌سازی پس از ارسال ناموفق بود، ممکن است پیش‌نویس قدیمی باقی بماند."
"send_filing_warning": "ارسال شد - اما پاک‌سازی پس از ارسال ناموفق بود، ممکن است پیش‌نویس قدیمی باقی بماند.",
"insert_signature": "Insert signature",
"no_signature": "No signature",
"select_signature": "Select signature"
},
"confirm_dialog": {
"confirm": "تأیید",
@@ -891,7 +895,10 @@
"downloads": "دانلودها",
"content_senders": "محتوا و فرستندگان",
"about_data": "درباره و داده‌ها",
"debug": "اشکال‌زدایی"
"debug": "اشکال‌زدایی",
"import": "Import",
"sharing": "Sharing",
"signatures": "Signatures"
},
"tab_groups": {
"general": "عمومی",
@@ -2007,7 +2014,39 @@
"preview": {
"label": "پیش‌نمایش"
}
}
},
"importer": {
"action_label": "Import",
"cancel": "Cancel",
"choose_files": "Choose files",
"conflict_copy": "Keep both",
"conflict_description": "Choose what to do when an imported message already exists.",
"conflict_label": "Duplicate handling",
"conflict_replace": "Replace duplicates",
"conflict_skip": "Skip duplicates",
"description": "Import email messages from .eml files into a folder.",
"error_details": "{count, plural, one {# error} other {# errors}}",
"fail": "Import failed",
"file_description": "Select one or more .eml files to import.",
"file_label": "Files",
"files_selected": "{count, plural, one {# file selected} other {# files selected}}",
"folder_description": "Choose the folder to import messages into.",
"folder_label": "Destination folder",
"import_complete": "Import complete",
"import_more": "Import more",
"importing": "Importing...",
"progress_failed": "{count} failed",
"progress_imported": "{count} imported",
"progress_skipped": "{count} skipped",
"start_import": "{count, plural, one {Import # file} other {Import # files}}",
"success": "{count, plural, one {# message imported} other {# messages imported}}",
"summary_failed": "{count, plural, one {# message failed} other {# messages failed}}",
"summary_imported": "{count, plural, one {# message imported} other {# messages imported}}",
"summary_skipped": "{count, plural, one {# message skipped} other {# messages skipped}}",
"title": "Import Mail"
},
"loading": "Loading...",
"refresh": "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": "Share Folder..."
},
"shortcuts": {
"title": "میانبرهای صفحه کلید",
@@ -2184,7 +2224,11 @@
"save": "ذخیره هویت",
"cancel": "انصراف",
"creating": "در حال ایجاد...",
"updating": "در حال به‌روزرسانی..."
"updating": "در حال به‌روزرسانی...",
"signature_store_default": "Default signature",
"signature_store_mapping": "Signature mapping",
"signature_store_reply": "Reply signature",
"use_global_default": "Use global default"
},
"sub_address": {
"button_tooltip": "استفاده از زیرآدرس",
@@ -2511,7 +2555,29 @@
"success": "{count, plural, one {۱ مخاطب وارد شد} other {# مخاطب وارد شد}}",
"failed": "وارد کردن ناموفق بود",
"close": "بستن",
"file_too_large": "حجم فایل بیش از حد است (حداکثر ۵ مگابایت)"
"file_too_large": "حجم فایل بیش از حد است (حداکثر ۵ مگابایت)",
"csv_address": "Address",
"csv_address_book": "Address book",
"csv_back": "Back",
"csv_city": "City",
"csv_company": "Company",
"csv_country": "Country",
"csv_email": "Email",
"csv_first_name": "First name",
"csv_ignore": "Ignore this column",
"csv_job_title": "Job title",
"csv_last_name": "Last name",
"csv_load_all": "Load all",
"csv_map_columns": "Map columns",
"csv_nickname": "Nickname",
"csv_note": "Note",
"csv_phone": "Phone",
"csv_postcode": "Postal code",
"csv_preview": "Preview",
"csv_preview_title": "Preview ({count, plural, one {# row} other {# rows}})",
"csv_region": "State/Region",
"csv_website": "Website",
"file_types_csv": ".csv files"
},
"export": {
"title": "خروجی مخاطبین",
@@ -2569,7 +2635,10 @@
"has_email": "دارای ایمیل",
"has_phone": "دارای تلفن",
"has_photo": "دارای عکس"
}
},
"delete": "Delete",
"edit": "Edit",
"send_email": "Send email"
},
"calendar": {
"title": "تقویم",
@@ -2988,6 +3057,36 @@
"due_today": "امروز",
"due_tomorrow": "فردا",
"overdue": "عقب‌افتاده"
},
"delete": "Delete",
"duplicate": "Duplicate",
"edit": "Edit",
"freeBusy": {
"busy": "Busy",
"check": "Check Availability",
"click_to_select": "Click a free slot to select this time",
"free": "Free",
"hide": "Hide Availability",
"loading": "Loading...",
"no_participants": "Add participants to check availability.",
"tentative": "Tentative",
"timezone": "Timezone",
"title": "Availability",
"unavailable": "Out of office",
"unknown": "No information"
},
"resources": {
"clear_all": "Clear all",
"filter_all": "All",
"hide": "Hide resources",
"no_resources": "No resources available",
"remove": "Remove {name}",
"search_placeholder": "Search resources...",
"title": "Resources",
"type_equipment": "Equipment",
"type_other": "Other",
"type_room": "Rooms",
"type_vehicle": "Vehicles"
}
},
"sharing": {
@@ -3011,7 +3110,14 @@
"readWrite": "خواندن و نوشتن",
"manager": "مدیر",
"custom": "سفارشی"
}
},
"accept": "Accept",
"decline": "Decline",
"no_shares_by_me": "You haven't shared anything yet.",
"no_shares_with_me": "No folders shared with you yet.",
"shared_by": "Shared by",
"tab_shared_by_me": "Shared by me",
"tab_shared_with_me": "Shared with me"
},
"advanced_search": {
"title": "جستجوی پیشرفته",
@@ -3176,7 +3282,8 @@
"disabled_description": "بارگذاری فایل‌های حجیم از طریق WebDAV می‌تواند باعث ناپایداری سرور شود.",
"stability_warning": "بارگذاری فایل‌های حجیم می‌تواند باعث ناپایداری سرور شود. با احتیاط استفاده کنید.",
"migration_title": "در حال به‌روزرسانی فایل‌های شما…",
"migration_description": "سازمان‌دهی پوشه‌ها و فایل‌ها در ساختار مناسب. فقط یک بار انجام می‌شود."
"migration_description": "سازمان‌دهی پوشه‌ها و فایل‌ها در ساختار مناسب. فقط یک بار انجام می‌شود.",
"send_as_attachment": "Send as Attachment"
},
"smime": {
"your_certificates": "گواهی‌های شما",
@@ -3324,5 +3431,55 @@
"install": "نصب",
"dont_remind": "دیگر یادآوری نکن",
"dismiss_aria": "رد کردن پیشنهاد نصب"
},
"signatures": {
"add_signature": "Add signature",
"default": "Default",
"default_signature": {
"description": "Used for new messages unless overridden per identity.",
"label": "Default signature"
},
"delete_message": "Are you sure you want to delete \"{name}\"? This cannot be undone.",
"delete_title": "Delete signature?",
"description": "Create and manage email signatures to use when composing or replying.",
"duplicate": "Duplicate",
"edit_signature": "Edit signature",
"editor_label": "Signature",
"html_preview_label": "HTML preview",
"name_label": "Name",
"name_placeholder": "e.g., Work, Personal",
"name_required": "Name is required",
"new_signature": "New signature",
"no_signature": "No signature",
"no_signatures": "No signatures yet",
"per_identity_signatures": {
"description": "Override the default and reply signature for individual identities.",
"label": "Per-identity signatures"
},
"plain_text_preview_label": "Plain text preview",
"reply": "Reply",
"reply_signature": {
"description": "Used when replying or forwarding unless overridden per identity.",
"label": "Reply signature"
},
"show_editor": "Show editor",
"show_preview": "Show preview",
"title": "Signatures",
"toolbar": {
"align_center": "Align center",
"align_left": "Align left",
"align_right": "Align right",
"bold": "Bold",
"bullet_list": "Bullet list",
"italic": "Italic",
"link": "Link",
"ordered_list": "Ordered list",
"remove_color": "Remove color",
"strikethrough": "Strikethrough",
"text_color": "Text color",
"underline": "Underline"
},
"use_global_default": "Use global default",
"your_signatures": "Your signatures ({count})"
}
}