{
  "title": "Runtimes d'agents IA",
  "body": "Installation et supervision OpenClaw / Hermes / IonClaw ; tous les appels d'outils passent par Allowlist et approbation.",
  "status": {
    "running": "En cours",
    "activating": "Départ",
    "stuck": "Commencez bloqué",
    "connected": "En ligne",
    "registered": "Enregistré uniquement",
    "stale": "Obsolète",
    "disconnected": "Hors ligne",
    "not_installed": "Non installé",
    "failed": "Échoué",
    "error": "Erreur",
    "unknown": "Non sondé",
    "fallback": "Inconnu"
  },
  "cmdStatus": {
    "queued": "En file d'attente",
    "acked": "Acquitté",
    "done": "Fait",
    "error": "Erreur"
  },
  "activatingStuckHint": "Activation de plus de 5 minutes : considérée comme un échec. Vérifiez le journal.",
  "noOnlineAgents": "Aucun agent en ligne",
  "journal": "journal",
  "writeUnit": "Unité d'écriture",
  "writeUnitConfirm": "Écrivez l'unité systemd pour {{kind}} sous /etc/systemd. Le service n'est pas démarré ou activé.",
  "liveN": "{{count}} en ligne",
  "registeredOnly": "Enregistré uniquement",
  "awaitProbe": "En attente de sondage",
  "runtimes": "Durées d'exécution",
  "running": "En cours",
  "liveAgents": "Agents en ligne",
  "fleet": "Flotte",
  "aiTasks": "Tâches IA",
  "expBanner": "Expérimental.",
  "expBody": "Enregistrement ≠ en ligne. Les opérations réelles passent par la CLI :",
  "expDocs": "Docs : dépôt",
  "expEdge": "Sur un bord :",
  "expPayload": "; recommandation de charge utile de commande",
  "fleetCan": "Ce que la flotte peut faire",
  "fleetCanDesc": "Pas une liste creuse — de vraies capacités du plan de contrôle pour les nœuds edge",
  "capRegister": "Enregistrer",
  "capRegisterD": "Écrit la liste du plan de contrôle (statut « enregistré uniquement ») — le processus peut ne pas tourner",
  "capCommand": "Commande",
  "capCommandD": "Préréglages CLI (readiness / host / projects…) ou personnalisé ; l'edge récupère, exécute ysk-server et accuse réception",
  "capHistory": "Historique des commandes",
  "capHistoryD": "en file / terminé / erreur, code de sortie, résultat JSON formaté",
  "capDelete": "Supprimer",
  "capDeleteD": "Supprime la session et les messages associés",
  "capStatus": "Statut",
  "capStatusD": "Enregistré uniquement → en ligne (heartbeat) → obsolète (>60 s sans heartbeat)",
  "statusFlowTitle": "Flux de statut",
  "statusFlow": "Enregistré uniquement → en ligne → obsolète (> 60 s) → hors ligne (déconnecté). Le filtre « Hors ligne » est déconnecté.",
  "colSession": "UUID de session",
  "copySession": "Copier l'UUID de session pour le cluster/CLI --session",
  "staleFor": "Invisible {{age}}",
  "commandTitle": "Mettre une commande en file d'attente pour cette session",
  "historyTitleShort": "Ouvrir l'historique des commandes (lecture seule)",
  "fleetTitle": "Flotte ({{count}})",
  "fleetDesc": "Registre du plan de contrôle · enregistré ≠ nœud en ligne",
  "registerPlus": "+ Enregistrer un agent",
  "colId": "ID",
  "colStatus": "Statut",
  "colGroup": "Groupe",
  "colLastSeen": "Dernière activité",
  "command": "Commande",
  "history": "Historique",
  "emptyAgents": "Aucun agent enregistré",
  "emptyAgentsDesc": "Enregistrez depuis la liste, ou attendez que les processus edge s'enregistrent seuls",
  "historyTitle": "Historique des commandes · {{id}}",
  "historyDesc": "en file jusqu'à ce que le nœud récupère ;",
  "refreshHistory": "Actualiser l'historique",
  "colTime": "Heure",
  "finishedAt": "Terminé {{at}}",
  "colCommand": "Commande",
  "colResult": "Résumé du résultat",
  "colExit": "Sortie",
  "hasResult": "A un résultat",
  "emptyCmds": "Aucune commande pour l'instant",
  "emptyCmdsDesc": "Mettez en file avec « Commande » ; reste en file tant que l'agent edge n'est pas en ligne",
  "edgeOnlineTitle": "Comment les agents edge passent en ligne",
  "edgeOnlineDesc": "Après l'enregistrement dans le panneau, le nœud doit exécuter la boucle sortante pour le heartbeat / récupérer les commandes",
  "controlPlaneApi": "API du plan de contrôle :",
  "controlPlaneHint": "(doit être accessible ; utilisez l'adresse réelle du panneau en production)",
  "queueNote": "Sans processus edge, « Commande » fonctionne toujours : elle reste en file jusqu'à ce que l'agent soit en ligne.",
  "runtimeTitle": "Runtimes IA",
  "runtimeDesc": "Sonder les chemins et les units ;",
  "emptyRuntime": "Aucun résultat de sonde pour l'instant",
  "emptyRuntimeDesc": "Actualisez pour charger les runtimes, ou sondez individuellement",
  "pathExists": "Existe",
  "pathMissing": "Non installé",
  "unitUnknown": "{{unit}} · inconnu",
  "unitFallback": "unité",
  "path": "Chemin",
  "probe": "Sonder",
  "install": "Installer",
  "recentOps": "Ops récentes",
  "registerTitle": "Enregistrer l'agent",
  "registerDesc": "Écrit uniquement la liste du plan de contrôle ; ne signifie pas que le nœud est en ligne",
  "register": "Enregistrer",
  "agentId": "ID agent",
  "agentIdHint": "ID unique, ex. edge-1 ou office-gateway",
  "group": "Groupe",
  "groupHint": "Pour le zonage / filtres de liste",
  "registerNote": "Le statut affiche « registered only » tant que le nœud n'exécute pas l'agent sortant et les heartbeats.",
  "cmdTitle": "Commande · {{id}}",
  "cmdTitlePlain": "Commande",
  "cmdDesc": "En file ; l'agent edge récupère, exécute et acquitte (reste en file hors ligne)",
  "enqueue": "Mettre en file",
  "cmdPreset": "Commande (CLI d'abord)",
  "cmdTypeAria": "Type de commande",
  "customCli": "CLI personnalisée",
  "cliArgs": "Arguments CLI",
  "cliArgsHint": "N'incluez pas ysk-server ; ex. logs journal --unit nginx.service",
  "cmdNote": "L'agent edge ysk-server run exécute le JSON CLI localement (ajoute --json). Les modifications hôte exigent toujours YSK_EXECUTE=1 sur l'edge. Voir le code de sortie et le JSON dans l'Historique.",
  "resultTitle": "Résultat de la commande · exit {{code}}",
  "resultTitlePlain": "Résultat de la commande",
  "codeComment": "# Concept : register → boucle heartbeat → pull des commandes → ack\n# Library : ysk-server-core runOutboundAgent / agentCycle",
  "resultOuter": "Externe : ack edge (exitCode / stderr). Résultat interne :",
  "deleteTitle": "Supprimer {{id}} ?",
  "deleteTitlePlain": "Supprimer l'agent ?",
  "deleteDesc": "L'historique des commandes associées sera également supprimé.",
  "fact": {
    "kind": "Taper",
    "name": "Nom",
    "status": "Statut",
    "unitActive": "Service",
    "unitName": "Unité",
    "pathExists": "Le chemin existe",
    "installPath": "Chemin d'installation"
  },
  "installBlocked": "Impossible de terminer l'installation dans le panneau d'administration",
  "registeredMsg": "Enregistré {{id}} (plan de contrôle uniquement ; le nœud doit exécuter l'agent sortant et le heartbeat pour passer en ligne)",
  "registerFailed": "Échec de l'enregistrement",
  "removedFleet": "Enregistrement de flotte supprimé",
  "enqueuedMsg": "Commande {{id}} mise en file… (s'exécute après le pull du nœud)",
  "enqueueFailed": "Échec de la mise en file d'attente",
  "loadCommandsFailed": "Échec du chargement des commandes",
  "probedMsg": "{{kind}} sondé",
  "probeFailed": "Échec du sondage",
  "wroteUnitMsg": "Paramètres d'unité {{kind}} écrits",
  "writeFailed": "Échec de l'écriture",
  "installedMsg": "{{kind}} installé",
  "installIncomplete": "Installation incomplète",
  "badgeDryRun": "essai à sec",
  "badgeBlocked": "bloqué",
  "labelStderr": "stderr",
  "labelAckCli": "accusé de réception + CLI JSON",
  "labelStdoutBody": "Corps stdout CLI",
  "resultOuterHint": "Le résultat externe est la sortie stdout de CLI --json.",
  "noteAllowlist": "Les appels à l'outil d'agent doivent passer la liste autorisée.",
  "noteRbacCap": "Le rôle de l'agent est limité à l'écriture faible."
}
