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": "Copié !",
"copy_failed": "Échec de la copie"
},
"send_now": "Envoyer maintenant"
"send_now": "Envoyer maintenant",
"create_appointment": "Créer un rendez-vous"
},
"email_composer": {
"read_receipt_on": "Accusé de lecture demandé (cliquez pour désactiver)",
@@ -712,7 +713,10 @@
"delete_table": "Supprimer le tableau",
"pick_size": "Choisir la taille"
},
"send_filing_warning": "Envoyé - mais le nettoyage après envoi a échoué, un ancien brouillon peut subsister."
"send_filing_warning": "Envoyé - mais le nettoyage après envoi a échoué, un ancien brouillon peut subsister.",
"insert_signature": "Insérer une signature",
"no_signature": "Aucune signature",
"select_signature": "Sélectionner une signature"
},
"confirm_dialog": {
"confirm": "Confirmer",
@@ -888,7 +892,10 @@
"downloads": "Téléchargements",
"content_senders": "Contenu et expéditeurs",
"about_data": "À propos et données",
"debug": "Débogage"
"debug": "Débogage",
"import": "Importation",
"sharing": "Partage",
"signatures": "Signatures"
},
"tab_groups": {
"general": "Général",
@@ -2007,7 +2014,39 @@
"scoped": {
"back": "Retour à mon compte",
"managing": "Gestion : {name}"
}
},
"importer": {
"action_label": "Importer",
"cancel": "Annuler",
"choose_files": "Choisir des fichiers",
"conflict_copy": "Conserver les deux",
"conflict_description": "Choisissez l'action à effectuer lorsqu'un message importé existe déjà.",
"conflict_label": "Gestion des doublons",
"conflict_replace": "Remplacer les doublons",
"conflict_skip": "Ignorer les doublons",
"description": "Importez des messages e-mail à partir de fichiers .eml vers un dossier.",
"error_details": "{count, plural, one {# erreur} other {# erreurs}}",
"fail": "Échec de l'importation",
"file_description": "Sélectionnez un ou plusieurs fichiers .eml à importer.",
"file_label": "Fichiers",
"files_selected": "{count, plural, one {# fichier sélectionné} other {# fichiers sélectionnés}}",
"folder_description": "Choisissez le dossier dans lequel importer les messages.",
"folder_label": "Dossier de destination",
"import_complete": "Importation terminée",
"import_more": "Importer d'autres fichiers",
"importing": "Importation en cours...",
"progress_failed": "{count} échoués",
"progress_imported": "{count} importés",
"progress_skipped": "{count} ignorés",
"start_import": "{count, plural, one {Importer # fichier} other {Importer # fichiers}}",
"success": "{count, plural, one {# message importé} other {# messages importés}}",
"summary_failed": "{count, plural, one {# message en échec} other {# messages en échec}}",
"summary_imported": "{count, plural, one {# message importé} other {# messages importés}}",
"summary_skipped": "{count, plural, one {# message ignoré} other {# messages ignorés}}",
"title": "Importation de courrier"
},
"loading": "Chargement...",
"refresh": "Actualiser"
},
"errors": {
"page_error_title": "Une erreur s'est produite",
@@ -2085,7 +2124,8 @@
"toast_error_delete_has_email": "Le dossier n'est pas vide. Videz-le d'abord.",
"placeholder_folder_name": "Nom du dossier",
"create": "Créer",
"rename_confirm": "Renommer"
"rename_confirm": "Renommer",
"share_folder": "Partager le dossier..."
},
"shortcuts": {
"title": "Raccourcis clavier",
@@ -2184,7 +2224,11 @@
"save": "Enregistrer l'identité",
"cancel": "Annuler",
"creating": "Création...",
"updating": "Mise à jour..."
"updating": "Mise à jour...",
"signature_store_default": "Signature par défaut",
"signature_store_mapping": "Association de signatures",
"signature_store_reply": "Signature de réponse",
"use_global_default": "Utiliser la valeur par défaut globale"
},
"sub_address": {
"button_tooltip": "Utiliser le sous-adressage",
@@ -2510,7 +2554,29 @@
"success": "{count, plural, one {1 contact importé} other {# contacts importés}}",
"failed": "Échec de l'importation",
"close": "Fermer",
"file_too_large": "Fichier trop volumineux (max 5 Mo)"
"file_too_large": "Fichier trop volumineux (max 5 Mo)",
"csv_address": "Adresse",
"csv_address_book": "Carnet d'adresses",
"csv_back": "Retour",
"csv_city": "Ville",
"csv_company": "Société",
"csv_country": "Pays",
"csv_email": "E-mail",
"csv_first_name": "Prénom",
"csv_ignore": "Ignorer cette colonne",
"csv_job_title": "Fonction",
"csv_last_name": "Nom",
"csv_load_all": "Tout charger",
"csv_map_columns": "Associer les colonnes",
"csv_nickname": "Surnom",
"csv_note": "Note",
"csv_phone": "Téléphone",
"csv_postcode": "Code postal",
"csv_preview": "Aperçu",
"csv_preview_title": "Aperçu ({count, plural, one {# ligne} other {# lignes}})",
"csv_region": "État/Région",
"csv_website": "Site web",
"file_types_csv": "fichiers .csv"
},
"export": {
"title": "Exporter les contacts",
@@ -2569,7 +2635,10 @@
"has_phone": "Avec téléphone",
"has_photo": "Avec photo"
},
"open_categories": "Ouvrir les catégories"
"open_categories": "Ouvrir les catégories",
"delete": "Supprimer",
"edit": "Modifier",
"send_email": "Envoyer un e-mail"
},
"calendar": {
"title": "Calendrier",
@@ -2988,7 +3057,37 @@
"due_tomorrow": "Échéance demain",
"overdue": "En retard"
},
"nav_open_menu": "Ouvrir le menu"
"nav_open_menu": "Ouvrir le menu",
"delete": "Supprimer",
"duplicate": "Dupliquer",
"edit": "Modifier",
"freeBusy": {
"busy": "Occupé",
"check": "Vérifier la disponibilité",
"click_to_select": "Cliquez sur un créneau libre pour sélectionner cette heure",
"free": "Libre",
"hide": "Masquer la disponibilité",
"loading": "Chargement...",
"no_participants": "Ajoutez des participants pour vérifier la disponibilité.",
"tentative": "Provisoire",
"timezone": "Fuseau horaire",
"title": "Disponibilité",
"unavailable": "Absent du bureau",
"unknown": "Aucune information"
},
"resources": {
"clear_all": "Tout effacer",
"filter_all": "Toutes",
"hide": "Masquer les ressources",
"no_resources": "Aucune ressource disponible",
"remove": "Retirer {name}",
"search_placeholder": "Rechercher des ressources...",
"title": "Ressources",
"type_equipment": "Équipement",
"type_other": "Autre",
"type_room": "Salles",
"type_vehicle": "Véhicules"
}
},
"advanced_search": {
"title": "Recherche avancée",
@@ -3153,7 +3252,8 @@
"open_folder_tree": "Ouvrir l'arborescence des dossiers",
"other_accounts": "Autres comptes",
"migration_title": "Mise à jour de vos fichiers…",
"migration_description": "Organisation des dossiers et fichiers dans leur structure appropriée. Cela ne se produit qu'une seule fois."
"migration_description": "Organisation des dossiers et fichiers dans leur structure appropriée. Cela ne se produit qu'une seule fois.",
"send_as_attachment": "Envoyer en pièce jointe"
},
"smime": {
"your_certificates": "Vos certificats",
@@ -3308,7 +3408,14 @@
"readWrite": "Lecture & écriture",
"manager": "Gestionnaire",
"custom": "Personnalisé"
}
},
"accept": "Accepter",
"decline": "Refuser",
"no_shares_by_me": "Vous n'avez encore rien partagé.",
"no_shares_with_me": "Aucun dossier n'a encore été partagé avec vous.",
"shared_by": "Partagé par",
"tab_shared_by_me": "Partagé par moi",
"tab_shared_with_me": "Partagé avec moi"
},
"quote_header": {
"reply_line": "Le {date}, {from} a écrit :",
@@ -3324,5 +3431,55 @@
"install": "Installer",
"dont_remind": "Ne plus me le rappeler",
"dismiss_aria": "Fermer l'invite d'installation"
},
"signatures": {
"add_signature": "Ajouter une signature",
"default": "Par défaut",
"default_signature": {
"description": "Utilisée pour les nouveaux messages, sauf si remplacée par identité.",
"label": "Signature par défaut"
},
"delete_message": "Êtes-vous sûr de vouloir supprimer \"{name}\" ? Cette action est irréversible.",
"delete_title": "Supprimer la signature ?",
"description": "Créez et gérez des signatures e-mail à utiliser lors de la rédaction ou de la réponse.",
"duplicate": "Dupliquer",
"edit_signature": "Modifier la signature",
"editor_label": "Signature",
"html_preview_label": "Aperçu HTML",
"name_label": "Nom",
"name_placeholder": "p. ex. Travail, Personnel",
"name_required": "Le nom est requis",
"new_signature": "Nouvelle signature",
"no_signature": "Aucune signature",
"no_signatures": "Aucune signature pour le moment",
"per_identity_signatures": {
"description": "Remplacez la signature par défaut et de réponse pour des identités individuelles.",
"label": "Signatures par identité"
},
"plain_text_preview_label": "Aperçu en texte brut",
"reply": "Réponse",
"reply_signature": {
"description": "Utilisée lors d'une réponse ou d'un transfert, sauf si remplacée par identité.",
"label": "Signature de réponse"
},
"show_editor": "Afficher l'éditeur",
"show_preview": "Afficher l'aperçu",
"title": "Signatures",
"toolbar": {
"align_center": "Centrer",
"align_left": "Aligner à gauche",
"align_right": "Aligner à droite",
"bold": "Gras",
"bullet_list": "Liste à puces",
"italic": "Italique",
"link": "Lien",
"ordered_list": "Liste numérotée",
"remove_color": "Supprimer la couleur",
"strikethrough": "Barré",
"text_color": "Couleur du texte",
"underline": "Souligné"
},
"use_global_default": "Utiliser la valeur par défaut globale",
"your_signatures": "Vos signatures ({count})"
}
}