chore(i18n): auto-fill missing translations in messages/{locale}/common.json

Source: d5bce37
Triggered by: workflow_dispatch
This commit is contained in:
ProxMenuxBot
2026-09-18 18:07:38 +00:00
parent d5bce37ed2
commit f6e3738c1e
6 changed files with 4512 additions and 30 deletions
+752 -5
View File
@@ -1822,6 +1822,12 @@
},
"other": {
"label": "Autre"
},
"hardware": {
"label": "Matériel"
},
"system": {
"label": "Système"
}
},
"eventTypes": {
@@ -1920,7 +1926,9 @@
"secure_gateway_update_available": "Mise à jour de Secure Gateway disponible",
"nvidia_driver_update_available": "Mise à jour du pilote NVIDIA disponible",
"coral_driver_update_available": "Mise à jour du pilote Coral TPU disponible",
"app_update_available": "mise à jour de l'application disponible"
"app_update_available": "mise à jour de l'application disponible",
"lxc_update_applied": "mise à jour LXC appliquée",
"docker_stack_update_available": "Docker mises à jour disponibles"
},
"ui": {
"quietHours": "Heures calmes",
@@ -1982,7 +1990,10 @@
"systemHostname": "Nom d'hôte du système",
"displayNameHint": "Nom affiché dans les notifications. Modifiez-le ou laissez-le vide pour utiliser le nom d'hôte du système.",
"activeFooter": "Les notifications sont actives. Chaque chaîne suit sa propre catégorie et sa propre sélection d'événements.",
"inactiveFooter": "Activez les notifications pour recevoir des alertes système, de santé et de sécurité via les canaux configurés."
"inactiveFooter": "Activez les notifications pour recevoir des alertes système, de santé et de sécurité via les canaux configurés.",
"notificationLanguage": "Langue de notification",
"selectNotificationLanguage": "sélectionnez la langue de notification",
"notificationLanguageHint": "utilisé pour les notifications d'exécution déterministes, même lorsque l'IA est désactivée."
},
"ai": {
"title": "Amélioration de l'IA",
@@ -5173,7 +5184,8 @@
},
"lynisTest": "Test",
"lynisWarning": "Avertissement",
"couldNotRead": "N'a pas pu être lu"
"couldNotRead": "N'a pas pu être lu",
"readOnlyScope": "L’évaluation inspecte les paramètres et l’état de l’hôte.Il peut rédiger des rapports et des journaux ;les vérifications de l'état de démarrage peuvent monter temporairement les partitions système EFI."
},
"title": "Audit & Report",
"loading": "Loading assessment…",
@@ -5406,7 +5418,8 @@
"synchronised": "Les {total} partitions d'amorçage portent les mêmes noyaux",
"attention": "{count} partitions d'amorçage sur {total} demandent un examen",
"evaluationFailed": "The check could not be evaluated"
}
},
"rationale": "Le système EFI partitionne les rapports proxmox-boot-tool et les noyaux que chacun transporte.L'état proxmox-boot-tool peut monter temporairement les partitions système EFI ;aucun démarrage n'est tenté."
},
"failed_units": {
"title": "Services essentiels et unités en échec",
@@ -5924,7 +5937,8 @@
"security": "Host exposure and access.",
"backup": "Guest protection and whether it is real.",
"capacity": "Room to grow and the wear on the disks."
}
},
"scopeReadOnly": "L’évaluation inspecte les paramètres et l’état de l’hôte.Il peut rédiger des rapports et des journaux ;les vérifications de l'état de démarrage peuvent monter temporairement les partitions système EFI."
},
"results": "Résultats",
"classifications": {
@@ -6079,6 +6093,739 @@
"withLynis": "Run with Lynis",
"withoutLynis": "Run without Lynis",
"cancel": "Cancel"
},
"readOnlyNotice": "L’évaluation inspecte les paramètres et l’état de l’hôte.Il peut rédiger des rapports et des journaux ;les vérifications de l'état de démarrage peuvent monter temporairement les partitions système EFI."
},
"runtime": {
"notifications": {
"templates": {
"state_change": {
"title": "{hostname} : {category} remplacé par {current}{entity_suffix}",
"body": "le statut {category} est passé de {previous} à {current}.\n{reason}",
"label": "L’état de santé a changé"
},
"new_error": {
"title": "{hostname} : Nouveau {severity} - {category}{entity_suffix}",
"body": "{reason}",
"label": "Nouveau problème de santé"
},
"error_resolved": {
"title": "{hostname} : Résolu - {category}{entity_suffix}",
"body": "Le problème {category} a été résolu.\n{reason}\n🚦 Gravité précédente : {original_severity}\n⏱️ Durée : {duration}",
"label": "Notification de récupération"
},
"error_escalated": {
"title": "{hostname} : remonté à {severity} - {category}{entity_suffix}",
"body": "{reason}",
"label": "Le problème de santé s'est aggravé"
},
"health_degraded": {
"title": "{title_or_default}",
"body": "{reason}",
"label": "Bilan de santé dégradé"
},
"lxc_updates_available": {
"title": "{hostname} : {count} LXC(s) avec mises à jour de packages disponibles",
"body": "📊 {count} LXC(s) avec mises à jour de packages en attente (📦 {total_packages} total, 🔒 {security_count} sécurité) :\n\n{ct_list}",
"label": "LXC mises à jour disponibles (expérimentales)"
},
"lxc_update_applied": {
"title": "{hostname} : LXC {ct_name} ({vmid}) mise à jour {result}",
"body": "{details}",
"label": "mise à jour LXC appliquée"
},
"app_update_available": {
"title": "{hostname} : mise à jour {app_name} disponible sur CT {vmid}",
"body": "{app_name} sur CT {vmid} ({ct_name}) a une nouvelle version :\n{installed} → {latest}",
"label": "mise à jour de l'application disponible"
},
"docker_stack_update_available": {
"title": "{hostname} : mises à jour Docker disponibles sur CT {vmid}",
"body": "Container {ct_name} (CT {vmid}) has {count} Docker update(s):\n{details}",
"label": "Docker mises à jour disponibles"
},
"vm_start": {
"title": "{hostname} : VM {vmname} ({vmid}) démarrée",
"body": "La machine virtuelle {vmname} (ID : {vmid}) est maintenant en cours d'exécution.",
"label": "VM démarrée"
},
"vm_start_warning": {
"title": "{hostname} : VM {vmname} ({vmid}) démarrée avec des avertissements",
"body": "La machine virtuelle {vmname} (ID : {vmid}) a démarré avec succès mais contient des avertissements.\nAvertissements : {reason}",
"label": "VM démarrée (avertissements)"
},
"vm_stop": {
"title": "{hostname} : VM {vmname} ({vmid}) arrêtée",
"body": "La machine virtuelle {vmname} (ID : {vmid}) a été arrêtée.",
"label": "VM arrêtée"
},
"vm_shutdown": {
"title": "{hostname} : VM {vmname} ({vmid}) arrêtée",
"body": "La machine virtuelle {vmname} (ID : {vmid}) a été proprement arrêtée.",
"label": "Arrêt de la VM"
},
"vm_fail": {
"title": "{hostname} : VM {vmname} ({vmid}) ÉCHEC",
"body": "La machine virtuelle {vmname} (ID : {vmid}) est tombée en panne ou n'a pas réussi à démarrer.\nRaison : {reason}",
"label": "ÉCHEC de la VM"
},
"vm_restart": {
"title": "{hostname} : VM {vmname} ({vmid}) redémarrée",
"body": "La machine virtuelle {vmname} (ID : {vmid}) a été redémarrée.",
"label": "VM redémarrée"
},
"ct_start": {
"title": "{hostname} : CT {vmname} ({vmid}) démarré",
"body": "Le conteneur {vmname} (ID : {vmid}) est maintenant en cours d'exécution.",
"label": "CT démarré"
},
"ct_start_warning": {
"title": "{hostname} : CT {vmname} ({vmid}) démarré avec des avertissements",
"body": "Le conteneur {vmname} (ID : {vmid}) a démarré avec succès mais contient des avertissements.\nAvertissements : {reason}",
"label": "CT démarré (avertissements)"
},
"ct_stop": {
"title": "{hostname} : CT {vmname} ({vmid}) arrêté",
"body": "le conteneur {vmname} (ID : {vmid}) a été arrêté.",
"label": "CT arrêté"
},
"ct_shutdown": {
"title": "{hostname} : CT {vmname} ({vmid}) arrêté",
"body": "Le conteneur {vmname} (ID : {vmid}) a été proprement arrêté.",
"label": "Arrêt du CT"
},
"ct_restart": {
"title": "{hostname} : CT {vmname} ({vmid}) redémarré",
"body": "le conteneur {vmname} (ID : {vmid}) a été redémarré.",
"label": "CT redémarré"
},
"ct_fail": {
"title": "{hostname} : CT {vmname} ({vmid}) ÉCHEC",
"body": "Le conteneur {vmname} (ID : {vmid}) est tombé en panne ou n'a pas pu démarrer.\nRaison : {reason}",
"label": "ÉCHEC du CT"
},
"migration_start": {
"title": "{hostname} : migration démarrée – {vmname} ({vmid})",
"body": "La migration en direct de {vmname} (ID : {vmid}) vers le nœud {target_node} a commencé.",
"label": "Migration commencée"
},
"migration_complete": {
"title": "{hostname} : Migration terminée — {vmname} ({vmid})",
"body": "{vmname} (ID : {vmid}) a migré avec succès vers le nœud {target_node}.",
"label": "Migration terminée"
},
"migration_warning": {
"title": "{hostname} : migration terminée avec avertissements — {vmname} ({vmid})",
"body": "{vmname} (ID : {vmid}) a migré vers le nœud {target_node} mais a rencontré des avertissements.\nAvertissements : {reason}",
"label": "Migration (avertissements)"
},
"migration_fail": {
"title": "{hostname} : Échec de la migration — {vmname} ({vmid})",
"body": "La migration de {vmname} (ID : {vmid}) vers le nœud {target_node} a échoué.\nRaison : {reason}",
"label": "Échec de la migration"
},
"replication_fail": {
"title": "{hostname} : ÉCHEC de la réplication — {vmname} ({vmid})",
"body": "La réplication de {vmname} (ID : {vmid}) a échoué.\nRaison : {reason}",
"label": "ÉCHEC de la réplication"
},
"replication_complete": {
"title": "{hostname} : réplication terminée — {vmname} ({vmid})",
"body": "La réplication de {vmname} (ID : {vmid}) s'est terminée avec succès.",
"label": "Réplication terminée"
},
"backup_start": {
"title": "{hostname} : sauvegarde démarrée le {storage}",
"body": "La tâche de sauvegarde a démarré sur le stockage {storage}.\n{reason}",
"label": "Sauvegarde démarrée"
},
"backup_complete": {
"title": "{hostname} → {storage} : Sauvegarde terminée — {vmname} ({vmid})",
"body": "La sauvegarde de {vmname} (ID : {vmid}) s'est terminée avec succès le {storage}.\nTaille : {size}",
"label": "Sauvegarde terminée"
},
"backup_warning": {
"title": "{hostname} → {storage} : sauvegarde complète avec avertissements — {vmname} ({vmid})",
"body": "Sauvegarde de {vmname} (ID : {vmid}) sur {storage} terminée mais a rencontré des avertissements.\nAvertissements : {reason}",
"label": "Sauvegarde (avertissements)"
},
"backup_fail": {
"title": "{hostname} → {storage} : Échec de la sauvegarde — {vmname} ({vmid})",
"body": "La sauvegarde de {vmname} (ID : {vmid}) a échoué le {storage}.\nRaison : {reason}",
"label": "Échec de la sauvegarde"
},
"host_backup_start": {
"title": "{hostname} : sauvegarde de l'hôte démarrée → {backend_label}",
"body": "Travail : {job_id}\nServeur : {backend_label}\nDestination : {destination}\nProfil : {profile_mode}",
"label": "La sauvegarde de l'hôte a démarré"
},
"host_backup_complete": {
"title": "{hostname} : sauvegarde de l'hôte terminée → {backend_label}",
"body": "Travail : {job_id}\nServeur : {backend_label}\nDestination : {destination}\nTaille des données : {data_size}\nTaille des archives : {archive_size}\nDurée : {duration}",
"label": "Sauvegarde de l'hôte terminée"
},
"host_backup_fail": {
"title": "{hostname} : ÉCHEC de la sauvegarde de l'hôte → {backend_label}",
"body": "Travail : {job_id}\nServeur : {backend_label}\nDestination : {destination}\nDurée avant échec : {duration}\nRaison : {reason}\nJournal : {log_file}",
"label": "ÉCHEC de la sauvegarde de l'hôte"
},
"snapshot_complete": {
"title": "{hostname} : instantané créé — {vmname} ({vmid})",
"body": "instantané \"{snapshot_name}\" créé pour {vmname} (ID : {vmid}).",
"label": "instantané créé"
},
"snapshot_fail": {
"title": "{hostname} : échec de l'instantané — {vmname} ({vmid})",
"body": "La création d'un instantané pour {vmname} (ID : {vmid}) a échoué.\nRaison : {reason}",
"label": "Échec de l'instantané"
},
"cpu_high": {
"title": "{hostname} : utilisation élevée du processeur – {value} %",
"body": "L'utilisation du processeur a atteint {value} % sur {cores} cœurs.\n{details}",
"label": "Utilisation élevée du processeur"
},
"ram_high": {
"title": "{hostname} : utilisation élevée de la mémoire – {value} %",
"body": "Utilisation de la mémoire : {used} / {total} ({value}%).\n{details}",
"label": "Utilisation élevée de la mémoire"
},
"temp_high": {
"title": "{hostname} : température élevée du processeur – {value}°C",
"body": "La température du processeur a atteint {value}°C (seuil : {threshold}°C).\n{details}",
"label": "Haute température"
},
"disk_space_low": {
"title": "{hostname} : espace disque faible sur {mount}",
"body": "Système de fichiers {mount} : {used} % utilisé ({available} disponible).\nLibérez de l'espace disque pour éviter toute interruption de service.",
"label": "Espace disque faible"
},
"disk_io_error": {
"title": "{hostname} : défaillance de disque détectée – {device}",
"body": "erreur d'E/S ou panne de disque détectée sur le périphérique {device}.\n{reason}",
"label": "Panne de disque / Erreur d'E/S"
},
"storage_unavailable": {
"title": "{hostname} : stockage indisponible — {storage_name}",
"body": "le stockage PVE \"{storage_name}\" (type : {storage_type}) n'est pas accessible.\nRaison : {reason}",
"label": "Stockage indisponible"
},
"smart_test_complete": {
"title": "{hostname} : test SMART terminé – {device}",
"body": "Le test SMART {test_type} sur /dev/{device} est terminé.\nRésultat : {result}\nDurée : {duration}",
"label": "test SMART terminé"
},
"smart_test_failed": {
"title": "{hostname} : ÉCHEC du test SMART — {device}",
"body": "Le test SMART {test_type} sur /dev/{device} a échoué.\nRésultat : {result}\nRaison : {reason}",
"label": "ÉCHEC du test SMART"
},
"gpu_mode_switch": {
"title": "{hostname} : le mode GPU est devenu {new_mode}",
"body": "le mode passthrough GPU a été commuté.\nGPU : {gpu_name} ({gpu_pci})\nMode précédent : {old_mode}\nNouveau mode : {new_mode}\n{details}",
"label": "mode GPU commuté"
},
"gpu_passthrough_blocked": {
"title": "{hostname} : {guest_type} {guest_id} bloqué au démarrage",
"body": "La protection de passage PCIe a empêché {guest_type} {guest_id} ({guest_name}) de démarrer.\nRaison : {reason}\n{details}",
"label": "passthrough GPU bloqué"
},
"pci_passthrough_conflict": {
"title": "{hostname} : conflit de périphérique PCIe détecté — {device_pci}",
"body": "Un périphérique PCIe est attribué à plusieurs invités.\nAppareil : {device_pci}\nInvités en conflit : {guest_list}\nAction requise : Arrêtez l'un des invités ou réaffectez l'appareil.",
"label": "Conflit de périphérique PCIe"
},
"load_high": {
"title": "{hostname} : charge système élevée – {value}",
"body": "La charge moyenne du système est de {value} sur les cœurs {cores}.\n{details}",
"label": "Charge système élevée"
},
"network_down": {
"title": "{hostname} : connectivité réseau perdue{entity_suffix}",
"body": "Le nœud a perdu la connectivité réseau.\nRaison : {reason}",
"label": "Connectivité réseau perdue"
},
"network_latency": {
"title": "{hostname} : latence réseau élevée – {value}ms",
"body": "Latence vers la passerelle : {value}ms (seuil : {threshold}ms).\nCela peut indiquer une congestion du réseau ou des problèmes matériels.",
"label": "Latence réseau élevée"
},
"auth_fail": {
"title": "{hostname} : échec d'authentification",
"body": "échec de la tentative de connexion détectée.\nIP source : {source_ip}\nUtilisateur : {username}\nService : {service}",
"label": "Échec d’authentification"
},
"ip_block": {
"title": "{hostname} : IP bloquée par Fail2Ban",
"body": "L'adresse IP {source_ip} a été bannie.\nPrison : {jail}\nTentatives échouées : {failures}",
"label": "IP bloquée par Fail2Ban"
},
"firewall_issue": {
"title": "{hostname} : problème de pare-feu détecté{entity_suffix}",
"body": "Un problème de configuration du pare-feu a été détecté.\nRaison : {reason}",
"label": "Problème de pare-feu détecté"
},
"user_permission_change": {
"title": "{hostname} : autorisation utilisateur modifiée",
"body": "Utilisateur : {username}\nModification : {change_details}",
"label": "l'autorisation de l'utilisateur a été modifiée"
},
"split_brain": {
"title": "{hostname} : SPLIT-BRAIN détecté",
"body": "Une condition de division du cerveau en cluster a été détectée.Le quorum pourrait être perdu.\nStatut du quorum : {quorum}",
"label": "SPLIT-BRAIN détecté"
},
"node_disconnect": {
"title": "{hostname} : nœud {node_name} déconnecté",
"body": "le nœud {node_name} s'est déconnecté du cluster.",
"label": "Nœud déconnecté"
},
"node_reconnect": {
"title": "{hostname} : nœud {node_name} reconnecté",
"body": "Le nœud {node_name} a rejoint le cluster avec succès.",
"label": "Nœud reconnecté"
},
"system_startup": {
"title": "{hostname} : {reason}",
"body": "{summary}",
"label": "Rapport de démarrage du système"
},
"system_shutdown": {
"title": "{hostname} : Arrêt du système",
"body": "Le nœud est en train de s'arrêter.\n{reason}",
"label": "Arrêt du système"
},
"system_reboot": {
"title": "{hostname} : redémarrage du système",
"body": "Le nœud redémarre.\n{reason}",
"label": "Redémarrage du système"
},
"system_restore_completed": {
"title": "{hostname} : restauration de l'hôte terminée",
"body": "tâches post-restauration effectuées en arrière-plan.\n\nInvités postulés : {guests}\nTalons de montage liés : {stubs}\nRépertoires de nœuds obsolètes supprimés : {stale_nodes}\nComposants réinstallés : {components}\nDurée : {duration}\n{warnings_block}\nLe nœud est maintenant entièrement prêt à être utilisé.",
"label": "Restauration de l'hôte terminée"
},
"system_problem": {
"title": "{hostname} : problème système détecté{entity_suffix}",
"body": "Un problème au niveau du système a été détecté.\nRaison : {reason}",
"label": "Problème système détecté"
},
"service_fail": {
"title": "{hostname} : échec du service — {service_name}",
"body": "Le service système \"{service_name}\" a échoué.\nRaison : {reason}",
"label": "Le service a échoué"
},
"oom_kill": {
"title": "{hostname} : MOO Kill — {process}",
"body": "Le processus « {process} » a été interrompu par le gestionnaire de mémoire insuffisante.\n{reason}",
"label": "Tuer par manque de mémoire"
},
"service_fail_batch": {
"title": "{hostname} : échec des services {service_count}{entity_suffix}",
"body": "{reason}",
"label": "Lot d'échecs de service"
},
"cron_output": {
"title": "{hostname} : {pve_title}",
"body": "{reason}",
"label": "Sortie de la tâche Cron (sortie standard par cron via mail)"
},
"system_mail": {
"title": "{hostname} : {pve_title}",
"body": "{reason}",
"label": "Smartd / mail rebondit (courrier du système PVE)"
},
"apt_listchanges": {
"title": "{hostname} : {pve_title}",
"body": "informations sur le package en amont transmises par Proxmox VE via apt-listchanges.Le texte suivant provient du responsable du package et ne constitue pas une recommandation ProxMenux.\n\n{reason}",
"label": "avis de paquet apt-listchanges"
},
"webhook_test": {
"title": "{hostname} : test Webhook reçu",
"body": "Test de connectivité du webhook PVE réussi.\n{reason}",
"label": "test Webhook"
},
"update_available": {
"title": "{hostname} : mises à jour disponibles",
"body": "Nombre total de mises à jour : {total_count}\nSécurité : {security_count}\nProxmox : {pve_count}\nNoyau : {kernel_count}\nForfaits importants :\n{important_list}",
"label": "mises à jour disponibles (héritées)"
},
"unknown_persistent": {
"title": "{hostname} : Chèque indisponible - {category}{entity_suffix}",
"body": "Le contrôle de santé pour {category} n'est pas disponible depuis plus de 3 cycles.\n{reason}",
"label": "Chèque indisponible"
},
"health_persistent": {
"title": "{hostname} : {count} problème(s) de santé actif{entity_suffix}",
"body": "Les problèmes de santé suivants restent non résolus :\n{issue_list}\n\nCe résumé est envoyé toutes les 24 heures tant que les problèmes persistent.",
"label": "Problèmes de santé actifs (quotidiennement)"
},
"health_issue_new": {
"title": "{hostname} : Nouveau problème de santé — {category}{entity_suffix}",
"body": "Nouveau problème {severity} détecté dans : {category}\nDétails : {reason}",
"label": "Nouveau problème de santé"
},
"health_issue_resolved": {
"title": "{hostname} : Résolu - {category}{entity_suffix}",
"body": "le problème {category} a été résolu.\n{reason}\nDurée : {duration}",
"label": "Problème de santé résolu"
},
"update_summary": {
"title": "{hostname} : mises à jour disponibles",
"body": "Nombre total de mises à jour : {total_count}\nMises à jour de sécurité : {security_count}\nMises à jour liées à Proxmox : {pve_count}\nMises à jour du noyau : {kernel_count}\nForfaits importants :\n{important_list}",
"label": "mises à jour du package hôte"
},
"pve_update": {
"title": "{hostname} : Proxmox VE {new_version} disponible",
"body": "Une nouvelle version Proxmox VE est disponible.\nActuel : {current_version}\nNouveau : {new_version}\n{details}",
"label": "Proxmox Mise à jour VE disponible"
},
"update_complete": {
"title": "{hostname} : mise à jour du système terminée",
"body": "Les packages système ont été mis à jour avec succès.\n{details}",
"label": "Mise à jour de l'hôte terminée"
},
"ai_model_migrated": {
"title": "{hostname} : modèle d'IA mis à jour",
"body": "Le modèle d'IA pour les notifications a été automatiquement mis à jour.\nFournisseur : {provider}\nModèle précédent : {old_model}\nNouveau modèle : {new_model}\n\n{message}",
"label": "modèle d'IA mis à jour automatiquement"
},
"proxmenux_update": {
"title": "{hostname} : ProxMenux {new_version} disponible",
"body": "Une nouvelle version de ProxMenux est disponible.\nActuel : {current_version}\nNouveau : {new_version}",
"label": "mise à jour ProxMenux disponible"
},
"mount_stale": {
"title": "{hostname} : montage à distance obsolète {mount_target}",
"body": "Le montage à distance {mount_target} ({fstype}) à partir de {mount_source} est obsolète {lxc_scope}.\nStat a expiré ou a renvoyé une erreur : {error}\n\nLes applications écrivant sur ce chemin atterriront silencieusement sur le système de fichiers sous-jacent et pourront remplir le disque.Remontez ou réparez la connectivité dès que possible.",
"label": "Montage à distance obsolète"
},
"mount_readonly": {
"title": "{hostname} : le montage à distance {mount_target} est en lecture seule",
"body": "Le montage à distance {mount_target} ({fstype}) à partir de {mount_source} est monté en lecture seule {lxc_scope}.Les écritures échoueront.Si ce n'était pas intentionnel, remontez avec rw.",
"label": "Montage à distance en lecture seule"
},
"lxc_disk_low": {
"title": "{hostname} : CT {vmid} rootfs à {usage_percent} %",
"body": "CT {vmid} ({name}) rootfs est à {usage_percent}% ({disk_bytes_human} / {maxdisk_bytes_human}).\n\nUn rootfs LXC complet empêche le conteneur de démarrer proprement.Soit développez le rootfs (pct resize {vmid} rootfs +1G), soit libérez de l'espace à l'intérieur du conteneur.",
"label": "LXC rootfs presque plein"
},
"vm_disk_low": {
"title": "{hostname} : systèmes de fichiers VM {vmid} à {usage_percent}%",
"body": "les systèmes de fichiers invités de la VM {vmid} ({name}) sont à {usage_percent}% ({disk_bytes_human} / {maxdisk_bytes_human}).\n\nSignalé par l'agent invité QEMU.Inclut tous les systèmes de fichiers persistants que l'invité monte sur un périphérique bloc : disques virtuels et lecteurs PCI passthrough.Libérez de l'espace à l'intérieur de l'invité ou développez le stockage concerné avant que les écritures ne commencent à échouer.",
"label": "systèmes de fichiers VM presque pleins"
},
"lxc_mount_low": {
"title": "{hostname} : CT {vmid} monter {mount} à {usage_percent} %",
"body": "Le support {mount} à l'intérieur du CT {vmid} ({name}) est utilisé à {usage_percent} %.\nType de système de fichiers : {fstype}\n\nUn montage complet à l'intérieur d'un conteneur bloque souvent l'application de manière silencieuse : les écritures échouent ou, pire encore, atterrissent sur le rootfs et déclenchent ensuite l'alerte rootfs.Libérez de l'espace sur le support ou agrandissez-le.",
"label": "LXC montage presque plein"
},
"pve_storage_full": {
"title": "{hostname} : stockage PVE {storage_name} à {usage_percent}%",
"body": "Le stockage Proxmox \"{storage_name}\" (type : {storage_type}) est utilisé à {usage_percent} %.\n\nUne fois plein, aucune nouvelle VM/CT ne peut être provisionnée et les invités existants peuvent ne pas parvenir à écrire.Déplacez/supprimez les volumes inutilisés ou développez l’image pool/LV/RBD sous-jacente.",
"label": "Stockage PVE presque plein"
},
"zfs_pool_full": {
"title": "{hostname} : ZFS pool {pool_name} à {usage_percent} %",
"body": "Le pool ZFS \"{pool_name}\" a une capacité de {usage_percent} %.\n\nLes performances de ZFS et la fiabilité d'écriture se dégradent fortement au-dessus d'environ 80 % de la capacité (CoW a besoin d'espace libre pour les nouveaux blocs).Libérez des instantanés, élaguez les anciens ensembles de données ou ajoutez davantage de vdevs au pool.",
"label": "ZFS piscine presque pleine"
},
"post_install_update": {
"title": "{hostname} : {count} ProxMenux mise à jour(s) d'optimisation disponible(s)",
"body": "{count} ProxMenux mise à jour(s) d'optimisation disponible sur cet hôte.\n\n🛠️ Versions disponibles :\n{tool_list}\n\n💡 Postulez à partir de :\n• ProxMenux Moniteur → Paramètres → ProxMenux Optimisations\n• Ou exécutez le menu post-installation (option 2) → \"Appliquer les mises à jour disponibles\"",
"label": "ProxMenux mises à jour d'optimisation disponibles"
},
"secure_gateway_update_available": {
"title": "{hostname} : {app_name} mise à jour disponible{update_title_suffix}",
"body": "{app_name} (géré par ProxMenux) a 📦 {package_count} mise à jour(s) du package en attente dans son conteneur.\n{version_line}\n\n💡 Ouvrez ProxMenux Monitor > Paramètres > Secure Gateway et cliquez sur « Mettre à jour » pour appliquer.\n\n🗂️ Forfaits :\n{package_list}",
"label": "mise à jour de Secure Gateway disponible"
},
"nvidia_driver_update_available": {
"title": "{hostname} : mise à jour du pilote NVIDIA disponible – v{latest_version}",
"body": "Une version de maintenance plus récente est disponible pour la branche du pilote NVIDIA installée.\n🔹 Actuellement installé : v{current_version}\n🟢 Dernière disponible : v{latest_version}\n\n{upgrade_reason}\n\n💡 Pour réinstaller :\n• Depuis le menu de post-installation ProxMenux : {menu_label}\n\nLa réinstallation reconstruit le module DKMS sur le noyau en cours d'exécution et nécessite un redémarrage pour charger le nouveau pilote.",
"label": "Mise à jour du pilote NVIDIA disponible"
},
"coral_driver_update_available": {
"title": "{hostname} : Coral Mise à jour du pilote TPU disponible — {latest_version}",
"body": "un {variant_label} plus récent est disponible.\n🔹 Actuellement installé : {current_version}\n🟢 Dernière disponible : {latest_version}\n\n{upgrade_reason}\n\n💡 Pour réinstaller :\n• Depuis le menu de post-installation ProxMenux : {menu_label}\n\n{reboot_note}",
"label": "Coral Mise à jour du pilote TPU disponible"
},
"burst_auth_fail": {
"title": "{hostname} : +{count} échecs d'authentification supplémentaires dans {window}",
"body": "+{count} échecs d'authentification supplémentaires détectés dans {window} ({total_count} au total).\nSources : {entity_list}",
"label": "Les échecs d’authentification éclatent"
},
"burst_ip_block": {
"title": "{hostname} : Fail2Ban interdit +{count} IP supplémentaires dans {window}",
"body": "+{count} IP supplémentaires interdites par Fail2Ban en {window} ({total_count} au total).\nIP : {entity_list}",
"label": "rafale de bloc IP"
},
"burst_disk_io": {
"title": "{hostname} : +{count} plus d'erreurs d'E/S disque sur {entity_list}",
"body": "+{count} erreurs d'E/S supplémentaires détectées dans {window} ({total_count} au total).\nAppareils : {entity_list}",
"label": "rafale d'E/S disque"
},
"burst_cluster": {
"title": "{hostname} : battement de cluster détecté (+{count} plus de modifications)",
"body": "l'état du cluster a changé +{count} fois de plus en {window} ({total_count} au total).\nNœuds : {entity_list}",
"label": "Rafale de battement de cluster"
},
"burst_service_fail": {
"title": "{hostname} : +{count} échec de services supplémentaires dans {window}",
"body": "+{count} échecs de service supplémentaires détectés dans {window} ({total_count} au total).\nCela indique généralement un redémarrage du nœud ou un redémarrage du service PVE.\n\nÉchecs supplémentaires :\n{details}",
"label": "Échec du service en rafale"
},
"burst_system": {
"title": "{hostname} : +{count} plus de problèmes système dans {window}",
"body": "+{count} problèmes système supplémentaires détectés dans {window} ({total_count} au total).\n\nProblèmes supplémentaires :\n{details}",
"label": "Les problèmes du système éclatent"
},
"burst_generic": {
"title": "{hostname} : +{count} autres événements {event_type} dans {window}",
"body": "+{count} événements supplémentaires de type {event_type} dans {window} ({total_count} total).\n\nÉvénements supplémentaires :\n{details}",
"label": "rafale générique"
},
"kernel_warning": {
"title": "{hostname} : événement de diagnostic du noyau détecté",
"body": "Le noyau a enregistré un événement de diagnostic : {kernel_details}",
"label": "avertissements du noyau et traces de diagnostic"
}
},
"lxcUpdate": {
"status": {
"success": "réussi",
"failure": "échoué",
"partial": "complété partiellement",
"deferred": "différé",
"skipped": "ignoré"
},
"source": {
"scheduled": "programmé",
"manual": "Manuel"
},
"sourceLabel": "Source",
"targets": "Cibles",
"osPending": "packages de système d'exploitation en attente : {before} → {after}",
"osUnverified": "packages de système d'exploitation : commande de mise à jour exécutée ;résultat non vérifié",
"applications": "Applications : {items}",
"applicationsUnverified": "Applications : programme de mise à jour exécuté ;aucun changement de version suivi n'a été observé",
"dockerEngineChange": "Docker Moteur : {before} → {after}",
"dockerEngineVerified": "Docker Moteur : vérifié à {version}",
"dockerEngineUnverified": "Docker Moteur : commande de mise à jour exécutée ;version non vérifiée",
"dockerImagesPending": "Docker images en attente : {before} → {after}",
"dockerImagesChanged": "Docker images modifiées : {images}",
"deferredTargets": "Cibles différées : {targets}",
"reason": "Raison : {reason}",
"restartRequired": "Redémarrage requis : {value}",
"yes": "oui",
"no": "non",
"verificationPending": "Vérification en attente jusqu'à ce que le conteneur soit en cours d'exécution",
"verificationWarning": "Avertissement de vérification : {error}",
"duration": "Durée : {duration}"
},
"fallback": {
"unknownTitle": "{hostname} : {event_type}",
"healthCheckDegraded": "Bilan de santé dégradé",
"none": "aucun"
},
"fields": {
"vmid": "VM/CT",
"name": "Nom",
"device": "Appareil",
"sourceIp": "IP source",
"node": "nœud",
"category": "Catégorie",
"service": "Service",
"jail": "Prison",
"user": "Utilisateur",
"count": "Comte",
"window": "Fenêtre",
"affected": "affecté"
},
"vzdump": {
"size": "Taille : {value}",
"duration": "Durée : {value}",
"file": "Fichier",
"backups": "sauvegardes {count}",
"failed": "{count} a échoué",
"total": "Total : {value}",
"time": "Heure : {value}"
},
"startup": {
"issuesTitle": "{hostname} : démarrage du système – problème(s) {count} détecté(s)",
"completeTitle": "{hostname} : démarrage du système terminé",
"operational": "Tous les systèmes opérationnels.",
"vmCountOne": "{count} VM",
"vmCountMany": "{count} VM",
"ctCountOne": "{count} CT",
"ctCountMany": "{count} CT",
"started": "✅ {counts} a commencé",
"vmFailed": "❌ Échec de la VM : {name} - {reason}",
"ctFailed": "❌ Échec du CT : {name} - {reason}",
"unknownError": "erreur inconnue",
"storageUnavailable": "⚠️ Stockage : {count} indisponible ({names})",
"servicesFailed": "⚠️ Services : {count} a échoué ({names})",
"duration": "⏱️ Démarrage terminé en {minutes} min"
},
"appUpdates": {
"singleTitle": "{hostname} : mise à jour {app_name} disponible sur CT {vmid}",
"singleBody": "{app_name} sur CT {vmid} ({ct_name}) a une nouvelle version :\n{installed} → {latest}",
"emptyTitle": "{hostname} : mises à jour de l'application disponibles",
"emptyBody": "des mises à jour de l'application sont disponibles.",
"batchTitle": "{hostname} : mises à jour de l'application {count} disponibles",
"batchLeadOneContainer": "Les applications {count} dans le conteneur {container_count} LXC ont une version plus récente :",
"batchLeadManyContainers": "Les applications {count} dans les conteneurs {container_count} LXC ont une version plus récente :",
"additional": "… {count} demande(s) supplémentaire(s)",
"app": "application",
"unknown": "inconnu"
},
"healthDegraded": {
"categories": {
"cpu": "Utilisation et température du processeur",
"memory": "Mémoire et échange",
"storage": "Supports de stockage et espace",
"disks": "E/S de disque et erreurs",
"network": "Interfaces réseau",
"vms": "VM et conteneurs",
"services": "services PVE",
"logs": "Journaux système",
"updates": "Mises à jour du système",
"security": "Sécurité"
},
"severity": {
"critical": "Critique",
"warning": "Avertissement"
},
"reasons": {
"cpuSustained": "le processeur est supérieur à {threshold} % pour les {duration}."
},
"singleTitle": "{hostname} : état de santé de {severity} – {category}",
"multipleTitle": "{hostname} : bilans de santé {count} dégradés",
"multipleLine": "• {severity} : {category}\n{reason}"
},
"digest": {
"groups": {
"vm_ct": "VM et CT",
"backup": "Sauvegarde",
"resources": "Ressources",
"storage": "Stockage",
"network": "Réseau",
"security": "Sécurité",
"cluster": "Cluster",
"services": "Services",
"health": "Santé",
"updates": "mises à jour",
"hardware": "Matériel",
"system": "Système",
"other": "Autre"
},
"title": "{hostname} : résumé de 24 h ({timestamp})",
"readFailed": "échec de la lecture du résumé : {error}",
"empty": "aucun événement INFO mis en mémoire tampon pour cette fenêtre de résumé.",
"lead": "{count} Événements INFO regroupés par catégorie :",
"more": "• … et {count} plus",
"footer": "(Les événements critiques/avertissements sont arrivés au moment où ils se sont produits, pas dans ce résumé.)",
"quietTitle": "{hostname} : événements {count} mis en mémoire tampon pendant les heures calmes"
},
"test": {
"title": "ProxMenux Test",
"welcome": "Bienvenue sur le moniteur ProxMenux !",
"verify": "Il s'agit d'un message de test pour vérifier que votre canal de notification fonctionne correctement.",
"configuration": "Configuration des canaux :",
"iconsEnabled": "Icônes : activées",
"iconsDisabled": "Icônes : désactivé",
"aiEnabled": "IA : activé ({info})",
"aiDisabled": "IA : désactivée",
"alerts": "vous recevrez des alertes sur les événements du système, les changements d'état de santé et les incidents de sécurité.",
"photoCaption": "vous pouvez utiliser cette image comme photo de profil pour votre robot de notification."
},
"channels": {
"discord": {
"category": "Catégorie",
"host": "Hôte",
"severity": "Gravité"
},
"email": {
"severity": {
"critical": "Critique",
"warning": "Avertissement",
"info": "Informations",
"ok": "Résolu",
"default": "Avis"
},
"groups": {
"vm_ct": "Machine Virtuelle / Conteneur",
"backup": "Sauvegarde et instantané",
"resources": "ressources système",
"storage": "Stockage",
"network": "Réseau",
"security": "Sécurité",
"cluster": "Cluster",
"services": "Services système",
"health": "Moniteur de santé",
"updates": "mises à jour du système",
"system": "Système",
"hardware": "Matériel",
"other": "Notification système"
},
"fields": {
"vmCtId": "ID VM/CT",
"name": "Nom",
"action": "Action",
"targetNode": "nœud cible",
"reason": "Raison",
"storage": "Stockage",
"status": "Statut",
"size": "Taille",
"duration": "Durée",
"snapshot": "instantané",
"metric": "Métrique",
"currentValue": "valeur actuelle",
"threshold": "Seuil",
"cpuCores": "Cœurs de processeur",
"memory": "Mémoire",
"temperature": "Température",
"mountPoint": "Point de montage",
"usage": "Utilisation",
"available": "disponible",
"device": "Appareil",
"severity": "Gravité",
"storageName": "Nom de stockage",
"type": "Type",
"interface": "Interface",
"latency": "Latence",
"event": "Événement",
"sourceIp": "IP source",
"username": "nom d'utilisateur",
"service": "Service",
"jail": "Prison",
"failures": "Échecs",
"change": "Changer",
"node": "nœud",
"quorum": "Quorum",
"nodesAffected": "nœuds affectés",
"process": "Processus",
"category": "Catégorie",
"previousSeverity": "Gravité précédente",
"activeIssues": "problèmes actifs",
"totalUpdates": "mises à jour totales",
"securityUpdates": "mises à jour de sécurité",
"proxmoxUpdates": "Proxmox mises à jour",
"kernelUpdates": "mises à jour du noyau",
"importantPackages": "Forfaits importants",
"currentVersion": "version actuelle",
"newVersion": "Nouvelle version"
},
"status": {
"failed": "Échec",
"completed": "Terminé",
"started": "commencé"
},
"report": "Rapport {group}",
"details": "Détails",
"host": "Hôte",
"footer": "ProxMenux Service de notification"
}
}
}
}
}