mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-10-08 06:26:39 +00:00
chore(i18n): auto-fill missing translations in messages/{locale}/common.json
Source: d5bce37
Triggered by: workflow_dispatch
This commit is contained in:
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user