{
  "alert": {
    "memory_high": "Mémoire élevée",
    "load_high": "Charge élevée",
    "disk_high": "Disque élevé"
  },
  "loadFailed": "Échec du chargement des métriques",
  "projectUsageFailed": "Échec du chargement de l'utilisation des projets",
  "procListFailed": "Échec de la liste des processus",
  "streamEnded": "Flux terminé ({{reason}})",
  "streamOpenFailed": "Impossible d'ouvrir le flux",
  "signalFailed": "Échec du signal",
  "detailFailed": "Impossible de charger les détails",
  "alertCount": "{{count}} alerte(s)",
  "attention": "Nécessite une attention",
  "normal": "OK",
  "disk": "Disque",
  "alerts": "Alertes",
  "auto5s": "Automatique 5s",
  "hostSettings": "Paramètres de l'hôte",
  "loading": "Chargement des métriques…",
  "tabs": {
    "overview": "Vue d'ensemble",
    "live": "Processus en direct",
    "disk": "Disque",
    "projectUsage": "Utilisation des projets",
    "alerts": "Alertes"
  },
  "load": "Charge",
  "load1m": "Charge 1m",
  "uptime": "Temps de disponibilité",
  "filterCpu5": "≥5 % du processeur",
  "filterMem5": "≥5% de mémoire",
  "signalHint": "Sélectionnez un processus, puis envoyez TERM ou KILL.",
  "signalFromRow": "Sélectionnez ce processus pour TERM / KILL",
  "selectForSignal": "Sélectionner",
  "forceKillTitleNamed": "TUER LE PID {{pid}} ({{cmd}}) ?",
  "sendSigTitleNamed": "Envoyer TERM au PID {{pid}} ({{cmd}}) ?",
  "min1": "1m",
  "min5": "5m",
  "min15": "15m",
  "loadHint": "Relatif à {{cpus}} CPU ; au-dessus de 1,0× peut mettre en file d'attente.",
  "memory": "Mémoire",
  "total": "Total",
  "available": "Disponible",
  "mainDisk": "Disque racine",
  "path": "Chemin",
  "diskReadFail": "Impossible de lire le disque",
  "viewAllMounts": "Voir les {{count}} points de montage →",
  "nAlerts": "{{count}} alertes",
  "details": "Détails",
  "noThresholdAlerts": "Aucune alerte de seuil mémoire / charge / disque",
  "projectDisk": "Disque des projets (du réel)",
  "viewAllProjectUsage": "Voir toute l'utilisation des projets →",
  "loadProjectDisk": "Charger l'utilisation disque des projets (du réel) →",
  "followSse": "Suivre (SSE)",
  "interval": "Intervalle",
  "sort": "Trier",
  "rows": "Lignes",
  "onceQuery": "Requête ponctuelle",
  "procSearchPh": "Rechercher PID / USER / COMMAND",
  "procSearchAria": "Rechercher des processus",
  "filterAll": "Tous",
  "filterMine": "Non système",
  "selectedN": "{{count}} sélectionné(s)",
  "showOf": " · affichage {{shown}}/{{total}}",
  "topLoading": "Chargement du résumé top… (double échantillon /proc/stat)",
  "topAria": "résumé top",
  "perCore": "Par cœur",
  "noPerCore": "Aucune donnée par cœur",
  "uptimeDays": "{{d}} jours, {{h}}:{{m}}",
  "used": "Utilisé",
  "free": "Libre",
  "signal": "Signal",
  "kill": "Tuer",
  "send": "Envoyer",
  "procDetail": "Détail du processus",
  "refreshProc": "Actualiser les processus",
  "noProcs": "Aucun processus",
  "noProcsFilter": "Aucun processus ne correspond aux filtres",
  "mounts": "Montages",
  "fs": "Système de fichiers",
  "mount": "Montage",
  "size": "Taille",
  "usage": "Utilisation",
  "project": "Projet",
  "quota": "Quota",
  "ratio": "Partager",
  "unlimited": "Illimité",
  "noProjects": "Aucun projet pour le moment",
  "noProjectsDesc": "Créez un projet pour voir ici l’utilisation réelle du home",
  "usageNote": "Utilisation via du local (non estimée). Le quota est une limite souple du plan de contrôle ; un setquota dur nécessite apply-to-host.",
  "thresholdAlerts": "Alertes de seuil",
  "alertsBuiltinOnly": "Seuils intégrés CPU/mémoire/disque uniquement. Pas de courrier électronique, de webhook ou de canal Slack.",
  "lastEvaluated": "Dernière vérification",
  "alertsOkTitle": "Tout est clair",
  "alertsOkDesc": "Aucune alerte de seuil mémoire / charge / disque.",
  "cpu": "CPU",
  "command": "Commande",
  "user": "Utilisateur",
  "clearSelection": "Effacer la sélection",
  "batchSignal": "Signal groupé",
  "liveHint": "Liste de processus en direct (SSE ou poll). Les signaux nécessitent root + YSK_EXECUTE.",
  "signalTo": "Signal {{sig}} → PID {{pid}}",
  "procAlive": "Processus toujours actif (kill -0 ok)",
  "procGone": "Processus terminé",
  "procTable": "Processus ({{count}}{{more}})",
  "procTableDesc": "liste ps · sélectionner pour TERM/KILL (nécessite YSK_EXECUTE)",
  "selectAllAria": "Sélectionner tous les filtrés",
  "selectPidAria": "Sélectionner le PID {{pid}}",
  "controlPlane": "Plan de contrôle",
  "controlPlaneNoSignal": "Le processus du plan de contrôle ne peut pas être signalé",
  "protectedPid": "PID 1 / init / systemd ne peut pas être signalé depuis le panneau",
  "sigTermTitle": "Envoyer SIGTERM (demander au processus de quitter)",
  "sigKillTitle": "Envoyer SIGKILL (force kill – ne peut pas être attrapé)",
  "batchTerm": "TERM",
  "batchKill": "KILL",
  "rawTopLabel": "Haut brut (non traduit)",
  "followSseLabel": "Suivre (diffusion en direct)",
  "alertsReadOnly": "Seuils intégrés CPU/mémoire/disque uniquement. Pas de courrier électronique, de webhook ou de canal Slack.",
  "alertsGoNotifications": "Ouvrir le centre de notifications",
  "lastCheck": "Dernière vérification",
  "rawTopHint": "Sortie top(1) non traduite",
  "detailShort": "Informations",
  "procUnavailable": "Impossible d’obtenir les processus",
  "noProcData": "Aucune donnée de processus pour l’instant",
  "noProcFilter": "Aucun processus ne correspond aux filtres",
  "clickOnceOrFollow": "Lancer une requête ponctuelle ou activer le suivi",
  "liveFootnote": "Comme top en SSH : double échantillon /proc/stat pour %Cpu (par cœur = « 1 » de top), Mem/Swap, Tasks ; table des processus via ps. Pas un PTY interactif. Kill nécessite YSK_EXECUTE ; le PID 1 et le plan de contrôle sont protégés par défaut.",
  "forceKillTitle": "Forcer la fin du PID {{pid}} (SIGKILL)",
  "sendSigTitle": "Envoyer SIG{{sig}} au PID {{pid}}",
  "forceKillDesc": "Ne peut pas être intercepté ; risque de perte de données. Commande : {{cmd}}",
  "termDesc": "Le processus peut se nettoyer et se terminer. Commande : {{cmd}}",
  "forceKillBtn": "Forcer KILL",
  "sendTermBtn": "Envoyer TERM",
  "procPidTitle": "Processus PID {{pid}}",
  "readingProc": "Lecture de /proc…",
  "applyRenice": "Appliquer renice",
  "reniceHint": "-20 le plus élevé · 19 le plus bas (nécessite EXECUTE)",
  "noData": "Aucune donnée",
  "shareOfMeasured": "{{pct}}% de la mesure",
  "mountsTitle": "Points de montage disque ({{count}})",
  "mountsDesc": "df -P -B1 réel (tmpfs filtrés)",
  "noMounts": "Aucune liste de montages",
  "noMountsDesc": "df indisponible ou filtré. Le disque racine reste sur l’aperçu.",
  "seeProjectUsage": "L’usage des home projets est dans l’onglet Utilisation des projets (du réel · {{size}})",
  "measuringDu": "Mesure des home projets (du)…",
  "projectUsageTitle": "Utilisation disque des projets ({{count}})",
  "projectUsageDesc": "du réel · total {{total}} · {{at}}",
  "projectUsageDescEmpty": "Exécuter du sur chaque home_dir de projet",
  "remeasure": "Remesurer",
  "usageNoteFull": "Utilisation via du local (non estimée). Le quota est une limite souple du plan de contrôle ; un setquota dur nécessite apply-to-host.",
  "sseNeedLogin": "Non connecté ; impossible d’ouvrir le SSE",
  "sseSessionExpired": "Non connecté ou session expirée ; impossible d’ouvrir le SSE",
  "sseHttpError": "flux HTTP {{status}}",
  "colFilesystem": "Système de fichiers",
  "colMount": "Monter",
  "colSize": "Taille",
  "colUsed": "Utilisé",
  "colAvail": "Disponible",
  "colUsePct": "Utilisé %",
  "colHome": "Maison",
  "usageNoteLink": "Quota souple du plan de contrôle. Appliquez des limites strictes dans l’onglet Isolation du projet.",
  "shareNoQuotaHint": "Sans quota, la part n’est pas un pourcentage. Définissez-la dans l’onglet Isolation du projet.",
  "setQuotaLink": "Définir le quota",
  "unusualHome": "Chemin inhabituel",
  "unusualHomeHint": "Pas une maison de projet /home/…. L'isolement canonique est /home/ysk-server-{id}."
}
