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": "Copiat!",
"copy_failed": "Copierea a eșuat"
},
"send_now": "Trimite acum"
"send_now": "Trimite acum",
"create_appointment": "Creați o programare"
},
"email_composer": {
"read_receipt_on": "Solicitare confirmare de citire (faceți clic pentru a dezactiva)",
@@ -712,7 +713,10 @@
"delete_table": "Șterge tabelul",
"pick_size": "Alege dimensiunea"
},
"send_filing_warning": "Trimis - dar curățarea ulterioară a eșuat, poate rămâne o ciornă veche."
"send_filing_warning": "Trimis - dar curățarea ulterioară a eșuat, poate rămâne o ciornă veche.",
"insert_signature": "Inserează semnătura",
"no_signature": "Fără semnătură",
"select_signature": "Selectați semnătura"
},
"confirm_dialog": {
"confirm": "Confirmare",
@@ -891,7 +895,10 @@
"downloads": "Descărcări",
"content_senders": "Conținut și expeditori",
"about_data": "Despre & Date",
"debug": "Depanare"
"debug": "Depanare",
"import": "Import",
"sharing": "Partajare",
"signatures": "Semnături"
},
"tab_groups": {
"general": "Generalități",
@@ -2007,7 +2014,39 @@
"preview": {
"label": "Previzualizare"
}
}
},
"importer": {
"action_label": "Import",
"cancel": "Anulează",
"choose_files": "Alegeți fișierele",
"conflict_copy": "Păstrează ambele",
"conflict_description": "Alegeți ce se întâmplă atunci când un mesaj importat există deja.",
"conflict_label": "Gestionarea duplicatelor",
"conflict_replace": "Înlocuiește duplicatele",
"conflict_skip": "Omite duplicatele",
"description": "Importați mesaje de e-mail din fișiere .eml într-un dosar.",
"error_details": "{count, plural, one {# eroare} other {# erori}}",
"fail": "Importul a eșuat",
"file_description": "Selectați unul sau mai multe fișiere .eml pentru a le importa.",
"file_label": "Fișiere",
"files_selected": "{count, plural, one {# fișier selectat} other {# fișiere selectate}}",
"folder_description": "Alegeți dosarul în care se vor importa mesajele.",
"folder_label": "Dosar de destinație",
"import_complete": "Import finalizat",
"import_more": "Importă mai multe",
"importing": "Se importă...",
"progress_failed": "{count} eșuate",
"progress_imported": "{count} importate",
"progress_skipped": "{count} omise",
"start_import": "{count, plural, one {Importă # fișier} other {Importă # fișiere}}",
"success": "{count, plural, one {# mesaj importat} other {# mesaje importate}}",
"summary_failed": "{count, plural, one {# mesaj eșuat} other {# mesaje eșuate}}",
"summary_imported": "{count, plural, one {# mesaj importat} other {# mesaje importate}}",
"summary_skipped": "{count, plural, one {# mesaj omis} other {# mesaje omise}}",
"title": "Import mesaje"
},
"loading": "Se încarcă...",
"refresh": "Reîmprospătează"
},
"errors": {
"page_error_title": "A apărut o eroare",
@@ -2085,7 +2124,8 @@
"toast_error_rename": "Nu s-a putut redenumi folderul",
"toast_error_delete": "Nu s-a putut șterge folderul",
"toast_error_delete_has_children": "Dosarul conține subdosare. Ștergeți-le mai întâi.",
"toast_error_delete_has_email": "Dosarul nu este gol. Goliți-l mai întâi."
"toast_error_delete_has_email": "Dosarul nu este gol. Goliți-l mai întâi.",
"share_folder": "Partajare dosar..."
},
"shortcuts": {
"title": "Comenzi rapide de la tastatură",
@@ -2184,7 +2224,11 @@
"save": "Salvați identitatea",
"cancel": "Anulează",
"creating": "Se creează...",
"updating": "Se actualizează..."
"updating": "Se actualizează...",
"signature_store_default": "Semnătură implicită",
"signature_store_mapping": "Mapare semnături",
"signature_store_reply": "Semnătură pentru răspuns",
"use_global_default": "Utilizați valoarea implicită globală"
},
"sub_address": {
"button_tooltip": "Utilizați subadrese",
@@ -2511,7 +2555,29 @@
"success": "{count, plural, one {1 contact importat} few {# contacte importate} other {# de contacte importate}}",
"failed": "Importul a eșuat",
"close": "Închide",
"file_too_large": "Fișierul este prea mare (max. 5 MB)"
"file_too_large": "Fișierul este prea mare (max. 5 MB)",
"csv_address": "Adresă",
"csv_address_book": "Agendă",
"csv_back": "Înapoi",
"csv_city": "Oraș",
"csv_company": "Companie",
"csv_country": "Țară",
"csv_email": "E-mail",
"csv_first_name": "Prenume",
"csv_ignore": "Ignoră această coloană",
"csv_job_title": "Funcție",
"csv_last_name": "Nume de familie",
"csv_load_all": "Încarcă tot",
"csv_map_columns": "Mapare coloane",
"csv_nickname": "Pseudonim",
"csv_note": "Notă",
"csv_phone": "Telefon",
"csv_postcode": "Cod poștal",
"csv_preview": "Previzualizare",
"csv_preview_title": "Previzualizare ({count, plural, one {# rând} other {# rânduri}})",
"csv_region": "Stat/Regiune",
"csv_website": "Site web",
"file_types_csv": "fișiere .csv"
},
"export": {
"title": "Exportați contactele",
@@ -2569,7 +2635,10 @@
"has_email": "Are e-mail",
"has_phone": "Are telefon",
"has_photo": "Are fotografie"
}
},
"delete": "Șterge",
"edit": "Editare",
"send_email": "Trimite e-mail"
},
"calendar": {
"title": "Calendar",
@@ -2988,6 +3057,36 @@
"due_today": "Astăzi",
"due_tomorrow": "Mâine",
"overdue": "Restant"
},
"delete": "Șterge",
"duplicate": "Duplică",
"edit": "Editare",
"freeBusy": {
"busy": "Ocupat",
"check": "Verifică disponibilitatea",
"click_to_select": "Faceți clic pe un interval liber pentru a selecta această oră",
"free": "Liber",
"hide": "Ascunde disponibilitatea",
"loading": "Se încarcă...",
"no_participants": "Adăugați participanți pentru a verifica disponibilitatea.",
"tentative": "Provizoriu",
"timezone": "Fus orar",
"title": "Disponibilitate",
"unavailable": "În afara biroului",
"unknown": "Fără informații"
},
"resources": {
"clear_all": "Șterge tot",
"filter_all": "Toate",
"hide": "Ascunde resursele",
"no_resources": "Nu sunt resurse disponibile",
"remove": "Elimină {name}",
"search_placeholder": "Căutare resurse...",
"title": "Resurse",
"type_equipment": "Echipamente",
"type_other": "Altele",
"type_room": "Săli",
"type_vehicle": "Vehicule"
}
},
"sharing": {
@@ -3011,7 +3110,14 @@
"readWrite": "Citire și scriere",
"manager": "Manager",
"custom": "Personalizat"
}
},
"accept": "Acceptă",
"decline": "Refuză",
"no_shares_by_me": "Nu ați partajat încă nimic.",
"no_shares_with_me": "Niciun dosar partajat cu dvs. încă.",
"shared_by": "Partajat de",
"tab_shared_by_me": "Partajate de mine",
"tab_shared_with_me": "Partajate cu mine"
},
"advanced_search": {
"title": "Căutare avansată",
@@ -3176,7 +3282,8 @@
"disabled_description": "Încărcarea fișierelor de dimensiuni mari prin intermediul WebDAV poate provoca instabilitate în Stalwart /RocksDB, inclusiv blocări din cauza epuizării memoriei și utilizare irecuperabilă a spațiului pe disc. Este posibil ca fișierele șterse să nu fie eliminate imediat din spațiul de stocare blob. Această funcție nu este recomandată pentru mediile de producție.",
"stability_warning": "Încărcarea fișierelor de dimensiuni mari poate provoca instabilitatea serverului. Este posibil ca fișierele șterse să nu fie eliminate imediat din spațiul de stocare. Utilizați cu precauție.",
"migration_title": "Se actualizează fișierele...",
"migration_description": "Organizarea dosarelor și a fișierelor în structura corespunzătoare. Această operațiune se efectuează o singură dată."
"migration_description": "Organizarea dosarelor și a fișierelor în structura corespunzătoare. Această operațiune se efectuează o singură dată.",
"send_as_attachment": "Trimite ca atașament"
},
"smime": {
"your_certificates": "Certificatele dvs.",
@@ -3324,5 +3431,55 @@
"install": "Instalați",
"dont_remind": "Nu-mi mai reaminti",
"dismiss_aria": "Ignorați solicitarea de instalare"
},
"signatures": {
"add_signature": "Adăugați semnătură",
"default": "Implicit",
"default_signature": {
"description": "Utilizată pentru mesajele noi, cu excepția cazului în care este suprascrisă pentru o anumită identitate.",
"label": "Semnătură implicită"
},
"delete_message": "Sunteți sigur că doriți să ștergeți \"{name}\"? Această acțiune nu poate fi anulată.",
"delete_title": "Ștergeți semnătura?",
"description": "Creați și gestionați semnături de e-mail pentru a le utiliza la redactare sau răspuns.",
"duplicate": "Duplică",
"edit_signature": "Editați semnătura",
"editor_label": "Semnătură",
"html_preview_label": "Previzualizare HTML",
"name_label": "Nume",
"name_placeholder": "de ex. Serviciu, Personal",
"name_required": "Numele este obligatoriu",
"new_signature": "Semnătură nouă",
"no_signature": "Fără semnătură",
"no_signatures": "Nicio semnătură încă",
"per_identity_signatures": {
"description": "Suprascrieți semnătura implicită și cea de răspuns pentru identități individuale.",
"label": "Semnături pe identitate"
},
"plain_text_preview_label": "Previzualizare text simplu",
"reply": "Răspuns",
"reply_signature": {
"description": "Utilizată la răspuns sau redirecționare, cu excepția cazului în care este suprascrisă pentru o anumită identitate.",
"label": "Semnătură pentru răspuns"
},
"show_editor": "Afișează editorul",
"show_preview": "Afișează previzualizarea",
"title": "Semnături",
"toolbar": {
"align_center": "Centrare",
"align_left": "Aliniere la stânga",
"align_right": "Aliniere la dreapta",
"bold": "Aldin",
"bullet_list": "Listă cu marcatori",
"italic": "Cursiv",
"link": "Link",
"ordered_list": "Listă numerotată",
"remove_color": "Elimină culoarea",
"strikethrough": "Tăiat",
"text_color": "Culoarea textului",
"underline": "Subliniat"
},
"use_global_default": "Utilizați valoarea implicită globală",
"your_signatures": "Semnăturile dvs. ({count})"
}
}