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
+168 -11
View File
@@ -567,7 +567,8 @@
"copied": "Kopiert!",
"copy_failed": "Kopieren fehlgeschlagen"
},
"send_now": "Jetzt senden"
"send_now": "Jetzt senden",
"create_appointment": "Termin erstellen"
},
"email_composer": {
"read_receipt_on": "Lesebestätigung angefordert (klicken zum Deaktivieren)",
@@ -712,7 +713,10 @@
"delete_table": "Tabelle löschen",
"pick_size": "Größe wählen"
},
"send_filing_warning": "Gesendet - aber das Aufräumen danach schlug fehl, evtl. bleibt ein alter Entwurf sichtbar."
"send_filing_warning": "Gesendet - aber das Aufräumen danach schlug fehl, evtl. bleibt ein alter Entwurf sichtbar.",
"insert_signature": "Signatur einfügen",
"no_signature": "Keine Signatur",
"select_signature": "Signatur auswählen"
},
"confirm_dialog": {
"confirm": "Bestätigen",
@@ -888,7 +892,10 @@
"downloads": "Downloads",
"content_senders": "Inhalte & Absender",
"about_data": "Über & Daten",
"debug": "Debug"
"debug": "Debug",
"import": "Import",
"sharing": "Freigabe",
"signatures": "Signaturen"
},
"tab_groups": {
"general": "Allgemein",
@@ -2007,7 +2014,39 @@
"scoped": {
"back": "Zurück zu meinem Konto",
"managing": "Verwaltung: {name}"
}
},
"importer": {
"action_label": "Importieren",
"cancel": "Abbrechen",
"choose_files": "Dateien auswählen",
"conflict_copy": "Beide behalten",
"conflict_description": "Legen Sie fest, was geschehen soll, wenn eine importierte Nachricht bereits existiert.",
"conflict_label": "Umgang mit Duplikaten",
"conflict_replace": "Duplikate ersetzen",
"conflict_skip": "Duplikate überspringen",
"description": "Importieren Sie E-Mail-Nachrichten aus .eml-Dateien in einen Ordner.",
"error_details": "{count, plural, one {# Fehler} other {# Fehler}}",
"fail": "Import fehlgeschlagen",
"file_description": "Wählen Sie eine oder mehrere .eml-Dateien zum Importieren aus.",
"file_label": "Dateien",
"files_selected": "{count, plural, one {# Datei ausgewählt} other {# Dateien ausgewählt}}",
"folder_description": "Wählen Sie den Ordner, in den die Nachrichten importiert werden sollen.",
"folder_label": "Zielordner",
"import_complete": "Import abgeschlossen",
"import_more": "Weitere importieren",
"importing": "Wird importiert...",
"progress_failed": "{count} fehlgeschlagen",
"progress_imported": "{count} importiert",
"progress_skipped": "{count} übersprungen",
"start_import": "{count, plural, one {# Datei importieren} other {# Dateien importieren}}",
"success": "{count, plural, one {# Nachricht importiert} other {# Nachrichten importiert}}",
"summary_failed": "{count, plural, one {# Nachricht fehlgeschlagen} other {# Nachrichten fehlgeschlagen}}",
"summary_imported": "{count, plural, one {# Nachricht importiert} other {# Nachrichten importiert}}",
"summary_skipped": "{count, plural, one {# Nachricht übersprungen} other {# Nachrichten übersprungen}}",
"title": "E-Mail importieren"
},
"loading": "Lädt...",
"refresh": "Aktualisieren"
},
"errors": {
"page_error_title": "Etwas ist schiefgelaufen",
@@ -2085,7 +2124,8 @@
"toast_error_rename": "Ordner konnte nicht umbenannt werden",
"toast_error_delete": "Ordner konnte nicht gelöscht werden",
"toast_error_delete_has_children": "Ordner enthält Unterordner. Entferne diese zuerst.",
"toast_error_delete_has_email": "Ordner ist nicht leer. Leere ihn zuerst."
"toast_error_delete_has_email": "Ordner ist nicht leer. Leere ihn zuerst.",
"share_folder": "Ordner freigeben..."
},
"shortcuts": {
"title": "Tastaturkürzel",
@@ -2184,7 +2224,11 @@
"save": "Identität speichern",
"cancel": "Abbrechen",
"creating": "Wird erstellt...",
"updating": "Wird aktualisiert..."
"updating": "Wird aktualisiert...",
"signature_store_default": "Standardsignatur",
"signature_store_mapping": "Signaturzuordnung",
"signature_store_reply": "Antwortsignatur",
"use_global_default": "Globalen Standard verwenden"
},
"sub_address": {
"button_tooltip": "Sub-Adresse verwenden",
@@ -2510,7 +2554,29 @@
"success": "{count, plural, one {1 Kontakt importiert} other {# Kontakte importiert}}",
"failed": "Import fehlgeschlagen",
"close": "Schließen",
"file_too_large": "Datei ist zu groß (max. 5 MB)"
"file_too_large": "Datei ist zu groß (max. 5 MB)",
"csv_address": "Adresse",
"csv_address_book": "Adressbuch",
"csv_back": "Zurück",
"csv_city": "Stadt",
"csv_company": "Firma",
"csv_country": "Land",
"csv_email": "E-Mail",
"csv_first_name": "Vorname",
"csv_ignore": "Diese Spalte ignorieren",
"csv_job_title": "Berufsbezeichnung",
"csv_last_name": "Nachname",
"csv_load_all": "Alle laden",
"csv_map_columns": "Spalten zuordnen",
"csv_nickname": "Spitzname",
"csv_note": "Notiz",
"csv_phone": "Telefon",
"csv_postcode": "Postleitzahl",
"csv_preview": "Vorschau",
"csv_preview_title": "Vorschau ({count, plural, one {# Zeile} other {# Zeilen}})",
"csv_region": "Bundesland/Region",
"csv_website": "Webseite",
"file_types_csv": ".csv-Dateien"
},
"export": {
"title": "Kontakte exportieren",
@@ -2569,7 +2635,10 @@
"has_phone": "Mit Telefon",
"has_photo": "Mit Foto"
},
"open_categories": "Kategorien öffnen"
"open_categories": "Kategorien öffnen",
"delete": "Löschen",
"edit": "Bearbeiten",
"send_email": "E-Mail senden"
},
"calendar": {
"title": "Kalender",
@@ -2988,7 +3057,37 @@
"bah": "Bahman",
"esf": "Esfand"
},
"nav_open_menu": "Menü öffnen"
"nav_open_menu": "Menü öffnen",
"delete": "Löschen",
"duplicate": "Duplizieren",
"edit": "Bearbeiten",
"freeBusy": {
"busy": "Beschäftigt",
"check": "Verfügbarkeit prüfen",
"click_to_select": "Klicken Sie auf einen freien Termin, um diese Zeit auszuwählen",
"free": "Frei",
"hide": "Verfügbarkeit ausblenden",
"loading": "Lädt...",
"no_participants": "Fügen Sie Teilnehmer hinzu, um die Verfügbarkeit zu prüfen.",
"tentative": "Vorläufig",
"timezone": "Zeitzone",
"title": "Verfügbarkeit",
"unavailable": "Abwesend",
"unknown": "Keine Informationen"
},
"resources": {
"clear_all": "Alle entfernen",
"filter_all": "Alle",
"hide": "Ressourcen ausblenden",
"no_resources": "Keine Ressourcen verfügbar",
"remove": "{name} entfernen",
"search_placeholder": "Ressourcen suchen...",
"title": "Ressourcen",
"type_equipment": "Ausrüstung",
"type_other": "Sonstige",
"type_room": "Räume",
"type_vehicle": "Fahrzeuge"
}
},
"advanced_search": {
"title": "Erweiterte Suche",
@@ -3153,7 +3252,8 @@
"open_folder_tree": "Ordnerbaum öffnen",
"other_accounts": "Andere Konten",
"migration_title": "Ihre Dateien werden aktualisiert…",
"migration_description": "Ordner und Dateien werden in die richtige Struktur gebracht. Dies geschieht nur einmal."
"migration_description": "Ordner und Dateien werden in die richtige Struktur gebracht. Dies geschieht nur einmal.",
"send_as_attachment": "Als Anhang senden"
},
"smime": {
"your_certificates": "Ihre Zertifikate",
@@ -3308,7 +3408,14 @@
"readWrite": "Lesen & schreiben",
"manager": "Verwalten",
"custom": "Benutzerdefiniert"
}
},
"accept": "Annehmen",
"decline": "Ablehnen",
"no_shares_by_me": "Sie haben noch nichts freigegeben.",
"no_shares_with_me": "Es wurden Ihnen noch keine Ordner freigegeben.",
"shared_by": "Freigegeben von",
"tab_shared_by_me": "Von mir freigegeben",
"tab_shared_with_me": "Für mich freigegeben"
},
"quote_header": {
"reply_line": "Am {date} schrieb {from}:",
@@ -3324,5 +3431,55 @@
"install": "Installieren",
"dont_remind": "Nicht mehr erinnern",
"dismiss_aria": "Installationshinweis schließen"
},
"signatures": {
"add_signature": "Signatur hinzufügen",
"default": "Standard",
"default_signature": {
"description": "Wird für neue Nachrichten verwendet, sofern nicht pro Identität überschrieben.",
"label": "Standardsignatur"
},
"delete_message": "Möchten Sie \"{name}\" wirklich löschen? Dies kann nicht rückgängig gemacht werden.",
"delete_title": "Signatur löschen?",
"description": "Erstellen und verwalten Sie E-Mail-Signaturen zum Verfassen und Antworten.",
"duplicate": "Duplizieren",
"edit_signature": "Signatur bearbeiten",
"editor_label": "Signatur",
"html_preview_label": "HTML-Vorschau",
"name_label": "Name",
"name_placeholder": "z. B. Arbeit, Privat",
"name_required": "Name ist erforderlich",
"new_signature": "Neue Signatur",
"no_signature": "Keine Signatur",
"no_signatures": "Noch keine Signaturen vorhanden",
"per_identity_signatures": {
"description": "Überschreiben Sie die Standard- und Antwortsignatur für einzelne Identitäten.",
"label": "Signaturen pro Identität"
},
"plain_text_preview_label": "Nur-Text-Vorschau",
"reply": "Antwort",
"reply_signature": {
"description": "Wird beim Antworten oder Weiterleiten verwendet, sofern nicht pro Identität überschrieben.",
"label": "Antwortsignatur"
},
"show_editor": "Editor anzeigen",
"show_preview": "Vorschau anzeigen",
"title": "Signaturen",
"toolbar": {
"align_center": "Zentriert",
"align_left": "Linksbündig",
"align_right": "Rechtsbündig",
"bold": "Fett",
"bullet_list": "Aufzählung",
"italic": "Kursiv",
"link": "Link",
"ordered_list": "Nummerierte Liste",
"remove_color": "Farbe entfernen",
"strikethrough": "Durchgestrichen",
"text_color": "Textfarbe",
"underline": "Unterstrichen"
},
"use_global_default": "Globalen Standard verwenden",
"your_signatures": "Ihre Signaturen ({count})"
}
}