{
	"cli.errors.bunVersion": "erreur : le runtime Bun doit être >= {minVersion} (version v{currentVersion} détectée). Veuillez mettre à jour Bun : bun upgrade",
	"cli.errors.bunErrata": "erreur : errata du runtime Bun détecté (v{version}). Veuillez mettre à jour Bun : bun upgrade",
	"agents.errors.bothFlags": "Choisissez soit --user soit --project, pas les deux.",
	"agents.status.bundledCount": "Agents intégrés : {total}",
	"agents.status.targetDirectory": "Répertoire cible : {dir}",
	"agents.warnings.skippedExisting": "Ignorés (déjà existants) : {count} (utilisez --force pour écraser)",
	"config.errors.unknownCommand": "Commande de configuration inconnue : {action}",
	"config.errors.invalidBoolean": "Valeur booléenne invalide : {value}. Utilisez true/false, yes/no, on/off ou 1/0",
	"config.errors.invalidNumber": "Nombre invalide : {value}",
	"config.errors.invalidEnumValue": "Valeur invalide : {value}. Valeurs acceptées : {validValues}",
	"config.errors.invalidArrayJson": "JSON de tableau invalide : {value}",
	"config.errors.invalidRecordJson": "JSON d'enregistrement invalide : {value}",
	"config.help.listKeys": "Exécutez '{appName} config list' pour voir les clés disponibles",
	"config.errors.unknownSetting": "Paramètre inconnu : {key}",
	"config.status.valueSet": "{path} défini à {value}",
	"config.status.valueReset": "{path} réinitialisé à {value}",
	"file.errors.notFound": "Erreur : fichier introuvable : {path}",
	"file.warnings.tooLarge": "Avertissement : contenu du fichier ignoré (trop volumineux : {size}) : {path}",
	"file.errors.readFailed": "Erreur : impossible de lire le fichier {path} : {message}",
	"grep.errors.patternRequired": "Erreur : un motif est requis",
	"grep.results.totalMatches": "Correspondances totales : {count}",
	"grep.results.filesWithMatches": "Fichiers avec correspondances : {count}",
	"grep.results.filesSearched": "Fichiers parcourus : {count}",
	"read.errors.fileNotFound": "Erreur : fichier introuvable : {path}",
	"setup.errors.usage": "Utilisation : {appName} setup <composant>",
	"setup.python.errors.notFound": "Python introuvable",
	"setup.python.help.installPython": "Installez Python 3.8+ et assurez-vous qu'il est dans votre PATH",
	"setup.python.status.ready": "L'exécution Python est prête",
	"setup.python.warnings.missingPackages": "Manquants : {packages}",
	"setup.python.errors.noPackageManager": "Aucun gestionnaire de paquets trouvé",
	"setup.python.help.installManagers": "Installez uv (recommandé) ou pip :",
	"setup.python.errors.installationFailed": "L'installation a échoué",
	"setup.python.help.manualInstall": "Essayez l'installation manuelle :",
	"setup.python.errors.setupIncomplete": "Configuration incomplète",
	"setup.stt.status.ready": "La reconnaissance vocale est prête",
	"setup.stt.errors.pythonNotFound": "Python introuvable",
	"setup.stt.status.installingWhisper": "Installation de openai-whisper...",
	"setup.stt.errors.whisperFailed": "Échec de l'installation de openai-whisper",
	"setup.stt.help.manualWhisper": "Essayez manuellement : pip install openai-whisper",
	"setup.help.title": "setup - Installer les dépendances pour les fonctionnalités optionnelles",
	"setup.help.pythonDescription": "Installer les dépendances du noyau Jupyter pour l'exécution de code Python",
	"setup.help.sttDescription": "Installer les dépendances de reconnaissance vocale (openai-whisper, outils d'enregistrement)",
	"setup.litellm.errors.envNotSet": "Variables d'environnement requises non définies :",
	"setup.litellm.errors.baseUrlHint": "LITELLM_BASE_URL — URL du proxy LiteLLM (ex. https://your-proxy.example.com)",
	"setup.litellm.errors.apiKeyHint": "LITELLM_API_KEY  — Clé API pour le proxy LiteLLM",
	"setup.litellm.help.setEnvVars": "Définissez ces variables dans votre profil shell (.zshrc, .bashrc) ou dans un fichier .env.",
	"setup.litellm.status.generated": "Configuration LiteLLM générée",
	"setup.litellm.errors.generationFailed": "Échec de la génération de la configuration LiteLLM",
	"ssh.errors.hostRequired": "Erreur : nom d'hôte requis",
	"ssh.errors.hostFlagRequired": "Erreur : --host est obligatoire",
	"ssh.errors.invalidPort": "Erreur : le port doit être un entier compris entre 1 et 65535",
	"ssh.status.hostAdded": "Hôte SSH \"{name}\" ajouté à la configuration {scope}",
	"ssh.status.hostRemoved": "Hôte SSH \"{name}\" supprimé de la configuration {scope}",
	"ssh.controller.unknownSubcommand": "Sous-commande inconnue : {subcommand}. Tapez /ssh help pour l'aide.",
	"ssh.add.usage": "Utilisation : /ssh add <name> --host <host> [--user <user>] [--port <port>] [--key <keyPath>] [--desc <description>] [--compat] [--scope project|user]",
	"ssh.add.missingHost": "Valeur manquante pour --host.",
	"ssh.add.missingUser": "Valeur manquante pour --user.",
	"ssh.add.missingPort": "Valeur manquante pour --port.",
	"ssh.add.invalidPort": "Valeur --port invalide. Doit être un entier compris entre 1 et 65535.",
	"ssh.add.missingKey": "Valeur manquante pour --key.",
	"ssh.add.missingDesc": "Valeur manquante pour --desc.",
	"ssh.add.invalidScope": "Valeur --scope invalide. Utilisez project ou user.",
	"ssh.add.unknownOption": "Option inconnue : {option}",
	"ssh.add.nameRequired": "Nom d'hôte requis. Utilisation : /ssh add <name> --host <host> ...",
	"ssh.add.hostRequired": "--host est obligatoire. Utilisation : /ssh add <name> --host <host> ...",
	"ssh.add.failed": "Échec de l'ajout de l'hôte : {message}",
	"ssh.list.noneConfigured": "Aucun hôte SSH configuré.",
	"ssh.list.title": "Hôtes SSH configurés",
	"ssh.list.userLevel": "Niveau utilisateur",
	"ssh.list.projectLevel": "Niveau projet",
	"ssh.list.discovered": "Découvert",
	"ssh.list.readOnly": "lecture seule",
	"ssh.list.failed": "Échec de la liste des hôtes : {message}",
	"ssh.remove.invalidScope": "Valeur --scope invalide. Utilisez project ou user.",
	"ssh.remove.unknownOption": "Option inconnue : {option}",
	"ssh.remove.nameRequired": "Nom d'hôte requis. Utilisation : /ssh remove <name> [--scope project|user]",
	"ssh.remove.notFound": "Hôte \"{name}\" introuvable dans la configuration {scope}.",
	"ssh.remove.failed": "Échec de la suppression de l'hôte : {message}",
	"mode.plan.status.enabled": "Mode plan activé. Fichier de plan : {path}",
	"mode.plan.status.paused": "Mode plan mis en pause.",
	"mode.plan.status.disabled": "Mode plan désactivé.",
	"mode.plan.errors.noEditor": "Aucun éditeur configuré. Définissez la variable d'environnement $VISUAL ou $EDITOR.",
	"mode.plan.errors.fileNotFound": "Fichier de plan introuvable à {path}",
	"mode.plan.errors.editorOpenFailed": "Impossible d'ouvrir l'éditeur externe : {message}",
	"mode.plan.status.updated": "Plan mis à jour dans l'éditeur externe.",
	"mode.plan.errors.notActive": "Le mode plan n'est pas actif.",
	"mode.stt.warnings.disabled": "La reconnaissance vocale est désactivée. Activez-la dans les paramètres : stt.enabled",
	"mode.subagent.status.noActive": "Aucune session de sous-agent active",
	"ui.status.sessionCompacted": "Session compactée {times}",
	"ui.status.messageQueued": "Message mis en file d'attente pour après le compactage",
	"ui.errors.queuedMessageFailed": "Échec de l'envoi du message en file d'attente : {message}",
	"shell.errors.ttyRequired": "Erreur : la console shell nécessite un TTY interactif.",
	"search.errors.queryRequired": "Erreur : une requête est requise",
	"commands.settings.description": "Ouvrir le menu des paramètres",
	"commands.plan.description": "Activer/désactiver le mode plan (l'agent planifie avant d'exécuter)",
	"commands.plan.inlineHint": "[prompt]",
	"commands.model.description": "Sélectionner le modèle (ouvre l'interface de sélection)",
	"commands.fast.description": "Activer/désactiver le mode rapide (priorité de niveau de service OpenAI)",
	"commands.fast.sub.on.description": "Activer le mode rapide",
	"commands.fast.sub.off.description": "Désactiver le mode rapide",
	"commands.fast.sub.status.description": "Afficher l'état du mode rapide",
	"commands.fast.enabled": "Mode rapide activé.",
	"commands.fast.disabled": "Mode rapide désactivé.",
	"commands.fast.statusOn": "Le mode rapide est activé.",
	"commands.fast.statusOff": "Le mode rapide est désactivé.",
	"commands.fast.usage": "Utilisation : /fast [on|off|status]",
	"commands.export.description": "Exporter la session vers un fichier HTML",
	"commands.export.inlineHint": "[chemin]",
	"commands.dump.description": "Copier la transcription de la session dans le presse-papiers",
	"commands.share.description": "Partager la session en tant que gist GitHub secret",
	"commands.browser.description": "Basculer le navigateur entre mode headless et visible",
	"commands.browser.sub.headless.description": "Passer en mode headless",
	"commands.browser.sub.visible.description": "Passer en mode visible",
	"commands.browser.disabled": "L'outil navigateur est désactivé (activez-le dans les paramètres)",
	"commands.browser.usage": "Utilisation : /browser [headless|visible]",
	"commands.browser.modeHeadless": "Mode navigateur : headless",
	"commands.browser.modeVisible": "Mode navigateur : visible",
	"commands.browser.restartFailed": "Échec du redémarrage du navigateur : {message}",
	"commands.copy.description": "Copier le dernier message de l'agent dans le presse-papiers",
	"commands.copy.sub.last.description": "Copier intégralement le dernier message de l'agent",
	"commands.copy.sub.code.description": "Copier le dernier bloc de code",
	"commands.copy.sub.all.description": "Copier tous les blocs de code du dernier message",
	"commands.copy.sub.cmd.description": "Copier la dernière commande bash/python",
	"commands.session.description": "Commandes de gestion de session",
	"commands.session.sub.info.description": "Afficher les informations et statistiques de la session",
	"commands.session.sub.delete.description": "Supprimer la session en cours et revenir au sélecteur",
	"commands.jobs.description": "Afficher l'état des tâches en arrière-plan",
	"commands.usage.description": "Afficher l'utilisation et les limites du fournisseur",
	"commands.changelog.description": "Afficher les entrées du journal des modifications",
	"commands.changelog.sub.full.description": "Afficher le journal des modifications complet",
	"commands.hotkeys.description": "Afficher tous les raccourcis clavier",
	"commands.tools.description": "Afficher les outils actuellement visibles par l'agent",
	"commands.extensions.description": "Ouvrir le tableau de bord du Centre de contrôle des extensions",
	"commands.agents.description": "Ouvrir le tableau de bord du Centre de contrôle des agents",
	"commands.branch.description": "Créer une nouvelle branche à partir d'un message précédent",
	"commands.fork.description": "Créer un nouveau fork à partir d'un message précédent",
	"commands.tree.description": "Naviguer dans l'arbre de session (changer de branche)",
	"commands.login.description": "Se connecter avec un fournisseur OAuth",
	"commands.login.inlineHint": "[fournisseur|URL de redirection]",
	"commands.login.alreadyInProgressFor": "Connexion OAuth déjà en cours pour {provider}. Collez l'URL de redirection avec /login <url>.",
	"commands.login.alreadyInProgress": "Connexion OAuth déjà en cours. Collez l'URL de redirection avec /login <url>.",
	"commands.login.callbackReceived": "Callback OAuth reçu ; finalisation de la connexion…",
	"commands.login.noCallbackWaiting": "Aucune connexion OAuth n'attend un callback manuel.",
	"commands.logout.description": "Se déconnecter du fournisseur OAuth",
	"commands.mcp.description": "Gérer les serveurs MCP (ajouter, lister, supprimer, tester)",
	"commands.mcp.sub.add.description": "Ajouter un nouveau serveur MCP",
	"commands.mcp.sub.list.description": "Lister tous les serveurs MCP configurés",
	"commands.mcp.sub.remove.description": "Supprimer un serveur MCP",
	"commands.mcp.sub.test.description": "Tester la connexion à un serveur",
	"commands.mcp.sub.reauth.description": "Réautoriser OAuth pour un serveur",
	"commands.mcp.sub.unauth.description": "Supprimer l'authentification OAuth d'un serveur",
	"commands.mcp.sub.enable.description": "Activer un serveur MCP",
	"commands.mcp.sub.disable.description": "Désactiver un serveur MCP",
	"commands.mcp.sub.smitherySearch.description": "Rechercher dans le registre Smithery et déployer un serveur MCP",
	"commands.mcp.sub.smitheryLogin.description": "Se connecter à Smithery et mettre en cache la clé API",
	"commands.mcp.sub.smitheryLogout.description": "Supprimer la clé API Smithery en cache",
	"commands.mcp.sub.reconnect.description": "Se reconnecter à un serveur MCP spécifique",
	"commands.mcp.sub.reload.description": "Forcer le rechargement des outils MCP",
	"commands.mcp.sub.resources.description": "Lister les ressources disponibles des serveurs connectés",
	"commands.mcp.sub.prompts.description": "Lister les prompts disponibles des serveurs connectés",
	"commands.mcp.sub.notifications.description": "Afficher les capacités de notification et les abonnements",
	"commands.mcp.sub.help.description": "Afficher le message d'aide",
	"commands.ssh.description": "Gérer les hôtes SSH (ajouter, lister, supprimer)",
	"commands.ssh.sub.add.description": "Ajouter un hôte SSH",
	"commands.ssh.sub.list.description": "Lister tous les hôtes SSH configurés",
	"commands.ssh.sub.remove.description": "Supprimer un hôte SSH",
	"commands.ssh.sub.help.description": "Afficher le message d'aide",
	"commands.new.description": "Démarrer une nouvelle session",
	"commands.compact.description": "Compacter manuellement le contexte de la session",
	"commands.compact.inlineHint": "[instructions de focus]",
	"commands.handoff.description": "Transmettre le contexte de la session à une nouvelle session",
	"commands.handoff.inlineHint": "[instructions de focus]",
	"commands.resume.description": "Reprendre une session différente",
	"commands.btw.description": "Poser une question éphémère en utilisant le contexte de la session actuelle",
	"commands.btw.inlineHint": "<question>",
	"commands.background.description": "Détacher l'interface et continuer l'exécution en arrière-plan",
	"commands.debug.description": "Ouvrir le sélecteur d'outils de débogage",
	"commands.memory.description": "Inspecter et gérer la maintenance de la mémoire",
	"commands.memory.sub.view.description": "Afficher le contenu d'injection mémoire actuel",
	"commands.memory.sub.clear.description": "Effacer les données de mémoire persistantes et les artefacts",
	"commands.memory.sub.reset.description": "Alias pour clear",
	"commands.memory.sub.enqueue.description": "Mettre en file d'attente la consolidation de la mémoire",
	"commands.memory.sub.rebuild.description": "Alias pour enqueue",
	"commands.rename.description": "Renommer la session en cours",
	"commands.rename.inlineHint": "<titre>",
	"commands.rename.usage": "Utilisation : /rename <titre>",
	"commands.move.description": "Déplacer la session vers un autre répertoire de travail",
	"commands.move.inlineHint": "<chemin>",
	"commands.move.usage": "Utilisation : /move <path>",
	"commands.exit.description": "Quitter l'application",
	"commands.plugin.description": "Gérer les plugins et les sources de marketplace",
	"commands.plugin.sub.marketplace.description": "Gérer les sources de marketplace (ajouter, supprimer, mettre à jour, lister)",
	"commands.plugin.sub.install.description": "Installer un plugin",
	"commands.plugin.sub.uninstall.description": "Désinstaller un plugin",
	"commands.plugin.sub.enable.description": "Activer un plugin",
	"commands.plugin.sub.disable.description": "Désactiver un plugin",
	"commands.plugin.sub.upgrade.description": "Mettre à jour les plugins",
	"commands.plugin.sub.discover.description": "Parcourir les plugins disponibles",
	"commands.plugin.sub.list.description": "Lister tous les plugins installés",
	"commands.plugin.sub.validate.description": "Valider le manifeste d'un marketplace ou d'un plugin",
	"commands.plugin.sub.setup.description": "Configuration guidée des plugins recommandés",
	"commands.plugin.sub.help.description": "Afficher le guide d'utilisation",
	"commands.plugin.marketplace.addUsage": "Utilisation : /plugin marketplace add <source>",
	"commands.plugin.marketplace.added": "Marketplace ajouté : {name}",
	"commands.plugin.marketplace.removeUsage": "Utilisation : /plugin marketplace remove <name>",
	"commands.plugin.marketplace.removed": "Marketplace supprimé : {name}",
	"commands.plugin.marketplace.updated": "Marketplace mis à jour : {name}",
	"commands.plugin.marketplace.updatedAll": "{count} marketplace(s) mis à jour",
	"commands.plugin.marketplace.noneConfiguredGetStarted": "Aucun marketplace configuré.\n\nPour commencer :\n  /plugin marketplace add f5-sales-demo/marketplace",
	"commands.plugin.marketplace.listHint": "Utilisez /plugin discover pour parcourir les plugins",
	"commands.plugin.marketplace.noneConfiguredTry": "Aucun marketplace configuré. Essayez :\n  /plugin marketplace add f5-sales-demo/marketplace",
	"commands.plugin.marketplace.noPluginsAvailable": "Aucun plugin disponible dans les marketplaces configurés",
	"commands.plugin.installed": "{name} installé depuis {marketplace}",
	"commands.plugin.uninstalled": "{pluginId} désinstallé",
	"commands.plugin.enabled": "{pluginId} activé",
	"commands.plugin.disabled": "{pluginId} désactivé",
	"commands.plugin.upgraded": "{pluginId} mis à jour en {version}",
	"commands.plugin.allUpToDate": "Tous les plugins sont à jour",
	"commands.plugin.upgradedCount": "{count} plugin(s) mis à jour :",
	"commands.plugin.npmPlugins": "Plugins npm :",
	"commands.plugin.marketplacePlugins": "Plugins marketplace :",
	"commands.plugin.noneInstalled": "Aucun plugin installé",
	"commands.plugin.validate.marketplaceValid": "Le marketplace \"{name}\" est valide ({count} plugin(s))",
	"commands.plugin.validate.pluginValid": "Le manifeste du plugin \"{name}\" est valide",
	"commands.plugin.validate.notFound": "Aucun fichier .xcsh-plugin/marketplace.json ou .xcsh-plugin/plugin.json trouvé dans {path}",
	"commands.plugin.setup.noRecommended": "Aucun plugin recommandé trouvé dans les marketplaces configurés",
	"commands.plugin.setup.allInstalled": "Tous les plugins recommandés sont déjà installés",
	"commands.plugin.setup.title": "Configuration des plugins recommandés :",
	"commands.plugin.setup.installCount": "{installed}/{total} plugin(s) recommandé(s) installé(s)",
	"commands.plugin.setup.skippedCount": "{count} ignoré(s) — corrigez les problèmes ci-dessus et relancez /plugin setup (idempotent)",
	"commands.plugin.setup.installFailed": "échec de l'installation",
	"commands.plugin.setup.installed": "installé",
	"commands.plugin.setup.notAuthenticated": "non authentifié",
	"commands.plugin.setup.authenticatedAs": "authentifié en tant que {user}",
	"commands.plugin.setup.ready": "prêt",
	"commands.plugin.setup.pluginInstalled": "plugin installé",
	"commands.plugin.setup.pluginInstallFailed": "échec de l'installation du plugin : {message}",
	"commands.plugin.setup.notFoundInMarketplace": "introuvable dans les marketplaces",
	"commands.plugin.help": "Commandes de plugin :\n  /plugin                                    Ouvrir le tableau de bord des plugins\n  /plugin marketplace add <source>           Ajouter un marketplace (ex. owner/repo)\n  /plugin marketplace remove <name>          Supprimer un marketplace\n  /plugin marketplace update [name]          Actualiser le(s) catalogue(s)\n  /plugin marketplace list                   Lister les marketplaces configurés\n  /plugin discover [marketplace]             Parcourir les plugins disponibles\n  /plugin install <name@marketplace>         Installer un plugin\n  /plugin uninstall <name@marketplace>       Désinstaller un plugin\n  /plugin enable <name@marketplace>          Activer un plugin\n  /plugin disable <name@marketplace>         Désactiver un plugin\n  /plugin upgrade [name@marketplace]         Mettre à jour le(s) plugin(s)\n  /plugin list                               Lister les plugins installés\n  /plugin validate [path]                    Valider un marketplace ou un plugin\n  /plugin setup                              Configuration guidée des plugins recommandés\n\nDémarrage rapide :\n  /plugin marketplace add f5-sales-demo/marketplace\n  /plugin                                    (ouvre le tableau de bord des plugins)\n\nAlias : /marketplace, /plugins",
	"commands.plugin.marketplace.noneConfiguredBrowse": "Aucun marketplace configuré.\n\nPour commencer :\n  /plugin marketplace add f5-sales-demo/marketplace\n\nPuis parcourez les plugins avec /plugin ou /plugin discover",
	"commands.plugin.marketplace.listHintAll": "Utilisez /plugin discover pour parcourir les plugins, ou /plugin help pour toutes les commandes",
	"commands.plugin.error": "Erreur de plugin : {message}",
	"commands.reloadPlugins.description": "Recharger tous les plugins (skills, commandes, hooks, outils, agents, MCP)",
	"commands.reloadPlugins.done": "Plugins rechargés.",
	"commands.force.description": "Forcer le prochain tour à utiliser un outil spécifique",
	"commands.force.inlineHint": "<tool-name> [prompt]",
	"commands.force.usage": "Utilisation : /force:<tool-name> [prompt]",
	"commands.force.set": "Le prochain tour utilisera obligatoirement {toolName}.",
	"commands.quit.description": "Quitter l'application",
	"commands.context.description": "Gérer les contextes d'authentification F5 XC",
	"commands.context.sub.list.description": "Lister tous les contextes",
	"commands.context.sub.activate.description": "Basculer vers un contexte nommé",
	"commands.context.sub.validate.description": "Valider les identifiants d'un contexte sans l'activer",
	"commands.context.sub.show.description": "Afficher les détails du contexte (masqués)",
	"commands.context.sub.status.description": "Afficher l'état d'authentification actuel",
	"commands.context.sub.create.description": "Créer un nouveau contexte",
	"commands.context.sub.delete.description": "Supprimer un contexte",
	"commands.context.sub.rename.description": "Renommer un contexte",
	"commands.context.sub.export.description": "Exporter un contexte (ou tous les contextes) en JSON",
	"commands.context.sub.import.description": "Importer des contextes depuis un chemin de fichier ou du JSON en ligne",
	"commands.context.sub.namespace.description": "Changer de namespace dans le contexte actif",
	"commands.context.sub.env.description": "Gérer les variables d'environnement",
	"commands.context.sub.set.description": "Définir une ou plusieurs variables d'environnement",
	"commands.context.sub.unset.description": "Supprimer une ou plusieurs variables d'environnement",
	"commands.context.sub.wizard.description": "Configuration interactive guidée du contexte",
	"welcome.modelProvider": "Fournisseur de modèle",
	"welcome.plugins": "Plugins",
	"welcome.pluginSetupHint": "exécuter : /plugin setup",
	"welcome.updateHint": "exécuter : xcsh self-update",
	"welcome.newVersion": "nouvelle version",
	"welcome.connectionFailed": "— échec de connexion",
	"welcome.runLoginReconnect": "Exécutez /login pour vous reconnecter",
	"welcome.noModelProvider": "Aucun fournisseur de modèle configuré",
	"welcome.runLoginConnect": "Exécutez /login pour vous connecter",
	"login.wizard.urlPrompt": "Model Provider URL",
	"login.wizard.urlPlaceholder": "https://your-proxy.example.com",
	"login.wizard.apiKeyPrompt": "API Key",
	"login.wizard.apiKeyPlaceholder": "sk-...",
	"login.wizard.connecting": "Connecting to {url}…",
	"login.wizard.success": "Connected — {count} models available",
	"login.wizard.configSaved": "Configuration saved. You're ready to go!",
	"login.wizard.failed": "Connection failed — {error}",
	"login.wizard.retryHint": "Press Escape to skip, or enter a new value:",
	"gate.noProvider": "No LLM provider configured — run /login to connect one before sending a message.",
	"gate.noProviderBlock": "No LLM provider configured. Run /login to connect one, then retry. (/help and /model still work.)",
	"plugins.tabs.installed": "Installés",
	"plugins.tabs.recommended": "Recommandés",
	"plugins.tabs.discover": "Découvrir",
	"plugins.tabs.updates": "Mises à jour",
	"plugins.list.searchPlaceholder": "tapez pour filtrer",
	"plugins.list.emptyDiscover": "Aucun plugin disponible. Ajoutez d'abord un marketplace.",
	"plugins.list.emptyRecommended": "Tous les plugins recommandés sont installés.",
	"plugins.list.emptyUpdates": "Tous les plugins sont à jour.",
	"plugins.list.emptyInstalled": "Aucun plugin installé.",
	"plugins.list.shadowed": "masqué",
	"plugins.list.disabled": "désactivé",
	"plugins.dashboard.title": "Centre de plugins xcsh",
	"plugins.dashboard.helpRecommended": "↑/↓ : naviguer  Entrée : installer  A : tout installer  Tab : onglet suivant  Ctrl+R : recharger  Échap : fermer",
	"plugins.dashboard.helpDiscover": "↑/↓ : naviguer  Entrée : installer  Tab : onglet suivant  Ctrl+R : recharger  Échap : fermer",
	"plugins.dashboard.helpUpdates": "↑/↓ : naviguer  Entrée : mettre à jour  Tab : onglet suivant  Ctrl+R : recharger  Échap : fermer",
	"plugins.dashboard.helpInstalled": "↑/↓ : naviguer  Espace : basculer  Entrée : désinstaller  U : mettre à jour  Tab : onglet suivant  Ctrl+R : recharger  Échap : fermer",
	"plugins.dashboard.settingUp": "Configuration de {name}... ({current}/{total})",
	"plugins.dashboard.installCount": "{installed}/{total} plugin(s) recommandé(s) installé(s)",
	"plugins.dashboard.allRecommendedInstalled": "Tous les plugins recommandés sont déjà installés",
	"plugins.dashboard.failedCount": "{count} échoué(s)",
	"plugins.dashboard.authNeeded": "Authentification requise : {items}",
	"plugins.dashboard.uninstalled": "{name} désinstallé",
	"plugins.dashboard.uninstallFailed": "Échec de la désinstallation : {message}",
	"plugins.dashboard.upgraded": "{name} mis à jour",
	"plugins.dashboard.upgradeFailed": "Échec de la mise à jour : {message}",
	"plugins.dashboard.upgrading": "Mise à jour de {name}...",
	"controller.export.warnings.useDump": "Utilisez /dump pour copier la session dans le presse-papiers.",
	"controller.export.status.exported": "Session exportée vers : {path}",
	"controller.export.errors.failed": "Échec de l'exportation de la session : {message}",
	"controller.dump.errors.noMessages": "Aucun message à exporter pour l'instant.",
	"controller.dump.status.copied": "Session copiée dans le presse-papiers",
	"controller.dump.errors.failed": "Échec de la copie de la session : {message}",
	"controller.debug.errors.noMessages": "Aucun message à exporter pour l'instant.",
	"controller.debug.status.written": "Transcription de débogage écrite dans :\n{path}",
	"controller.debug.errors.failed": "Échec de l'écriture de la transcription de débogage : {message}",
	"controller.copy.errors.unknownSub": "Sous-commande inconnue : {sub}. Utilisez code, all, cmd ou last.",
	"controller.copy.errors.noMessages": "Aucun message de l'agent à copier pour l'instant.",
	"controller.copy.status.lastMessage": "Dernier message de l'agent copié dans le presse-papiers",
	"controller.copy.warnings.noCodeBlock": "Aucun bloc de code trouvé dans le dernier message de l'agent.",
	"controller.copy.status.codeBlock": "Dernier bloc de code copié dans le presse-papiers",
	"controller.copy.warnings.noCodeBlocks": "Aucun bloc de code trouvé dans le dernier message de l'agent.",
	"controller.copy.status.codeBlocks": "{count} bloc(s) de code copié(s) dans le presse-papiers",
	"controller.copy.status.bashCommand": "Dernière commande bash copiée dans le presse-papiers",
	"controller.copy.status.pythonCode": "Dernier code Python copié dans le presse-papiers",
	"controller.copy.warnings.noCommand": "Aucune commande bash ou Python trouvée dans la conversation.",
	"controller.session.title": "Informations de session",
	"controller.session.file": "Fichier :",
	"controller.session.inMemory": "En mémoire",
	"controller.session.id": "ID :",
	"controller.session.provider": "Fournisseur",
	"controller.session.noModel": "Aucun modèle sélectionné",
	"controller.session.messages": "Messages",
	"controller.session.user": "Utilisateur :",
	"controller.session.assistant": "Assistant :",
	"controller.session.toolCalls": "Appels d'outils :",
	"controller.session.toolResults": "Résultats d'outils :",
	"controller.session.total": "Total :",
	"controller.session.tokens": "Tokens",
	"controller.session.input": "Entrée :",
	"controller.session.output": "Sortie :",
	"controller.session.cacheRead": "Lecture du cache :",
	"controller.session.cacheWrite": "Écriture du cache :",
	"controller.session.cost": "Coût",
	"controller.session.premiumRequests": "Requêtes premium :",
	"controller.session.pythonGateway": "Passerelle Python",
	"controller.session.status": "Statut :",
	"controller.session.gatewayActive": "Actif (Global)",
	"controller.session.gatewayInactive": "Inactif",
	"controller.session.url": "URL :",
	"controller.session.pid": "PID :",
	"controller.session.python": "Python :",
	"controller.session.venv": "Venv :",
	"controller.session.uptime": "Durée de fonctionnement :",
	"controller.session.lspServers": "Serveurs LSP",
	"controller.session.mcpServers": "Serveurs MCP",
	"controller.session.noneConnected": "Aucun connecté",
	"controller.jobs.title": "Tâches en arrière-plan",
	"controller.jobs.running": "En cours :",
	"controller.jobs.noJobs": "Aucune tâche asynchrone pour l'instant.",
	"controller.jobs.runningJobs": "Tâches en cours",
	"controller.jobs.recentJobs": "Tâches récentes",
	"controller.jobs.unavailable": "Les tâches asynchrones en arrière-plan ne sont pas disponibles dans cette session.",
	"controller.usage.notConfigured": "Le rapport d'utilisation n'est pas configuré pour cette session.",
	"controller.usage.fetchFailed": "Échec de la récupération des données d'utilisation : {message}",
	"controller.usage.noData": "Aucune donnée d'utilisation disponible.",
	"controller.changelog.noEntries": "Aucune entrée dans le journal des modifications.",
	"controller.changelog.fullTitle": "Journal des modifications complet",
	"controller.changelog.recentTitle": "Modifications récentes",
	"controller.hotkeys.title": "Raccourcis clavier",
	"controller.tools.title": "Outils disponibles",
	"controller.memory.title": "Contenu d'injection mémoire",
	"controller.memory.empty": "Le contenu mémoire est vide (mémoire désactivée ou aucun résumé trouvé).",
	"controller.memory.cleared": "Données de mémoire effacées et prompt système rafraîchi.",
	"controller.memory.clearFailed": "Échec de l'effacement de la mémoire : {message}",
	"controller.memory.enqueued": "Consolidation de la mémoire mise en file d'attente.",
	"controller.memory.enqueueFailed": "Échec de la mise en file d'attente de la mémoire : {message}",
	"controller.memory.usage": "Utilisation : /memory <view|clear|reset|enqueue|rebuild>",
	"controller.newSession": "Nouvelle session démarrée",
	"controller.fork.streaming": "Attendez la fin de la réponse en cours ou annulez-la avant de forker.",
	"controller.fork.failed": "Échec du fork (session non persistée ou annulée)",
	"controller.fork.success": "Session forkée vers {path}",
	"controller.move.streaming": "Attendez la fin de la réponse en cours ou annulez-la avant de déplacer.",
	"controller.move.usage": "Utilisation : /move <path>",
	"controller.move.notDirectory": "Ce n'est pas un répertoire : {path}",
	"controller.move.notExists": "Le répertoire n'existe pas : {path}",
	"controller.move.success": "Session déplacée vers {path}",
	"controller.move.failed": "Échec du déplacement : {message}",
	"controller.rename.empty": "Le nom de la session ne peut pas être vide.",
	"controller.rename.success": "Session renommée en \"{name}\".",
	"controller.rename.failed": "Échec du renommage : {message}",
	"controller.share.ghNotLoggedIn": "GitHub CLI n'est pas connecté. Exécutez d'abord 'gh auth login'.",
	"controller.share.ghNotInstalled": "GitHub CLI (gh) n'est pas installé. Installez-le depuis https://cli.github.com/",
	"controller.share.creatingGist": "Création du gist...",
	"controller.share.sharing": "Partage en cours...",
	"controller.share.cancelled": "Partage annulé",
	"controller.share.sessionShared": "Session partagée",
	"controller.share.customFailed": "Échec du partage personnalisé : {message}",
	"controller.share.gistFailed": "Échec de la création du gist : {message}",
	"controller.share.gistParseFailed": "Impossible d'extraire l'ID du gist de la sortie gh",
	"controller.bash.failed": "Échec de la commande Bash : {message}",
	"hotkeys.navigation.title": "Navigation",
	"hotkeys.navigation.moveCursor": "Déplacer le curseur / parcourir l'historique (Haut quand vide)",
	"hotkeys.navigation.moveByWord": "Déplacer par mot",
	"hotkeys.navigation.startOfLine": "Début de ligne",
	"hotkeys.navigation.endOfLine": "Fin de ligne",
	"hotkeys.editing.title": "Édition",
	"hotkeys.editing.sendMessage": "Envoyer le message",
	"hotkeys.editing.newLine": "Nouvelle ligne",
	"hotkeys.editing.deleteWordBackwards": "Supprimer le mot précédent",
	"hotkeys.editing.deleteToStart": "Supprimer jusqu'au début de la ligne",
	"hotkeys.editing.deleteToEnd": "Supprimer jusqu'à la fin de la ligne",
	"hotkeys.editing.copyLine": "Copier la ligne courante",
	"hotkeys.editing.copyPrompt": "Copier tout le prompt",
	"hotkeys.other.title": "Autre",
	"hotkeys.other.pathCompletion": "Complétion de chemin / accepter l'auto-complétion",
	"hotkeys.other.cancelInterrupt": "Annuler l'auto-complétion / interrompre le travail en cours",
	"hotkeys.other.clearExit": "Effacer l'éditeur (premier) / quitter (second)",
	"hotkeys.other.exit": "Quitter (quand l'éditeur est vide)",
	"hotkeys.other.suspend": "Suspendre en arrière-plan",
	"hotkeys.other.cycleThinking": "Changer le niveau de réflexion",
	"hotkeys.other.cycleModelsForward": "Changer les modèles de rôle (lent/défaut/petit)",
	"hotkeys.other.cycleModelsBackward": "Changer les modèles de rôle (temporaire)",
	"hotkeys.other.selectModelTemp": "Sélectionner un modèle (temporaire)",
	"hotkeys.other.selectModel": "Sélectionner un modèle (définir les rôles)",
	"hotkeys.other.togglePlan": "Activer/désactiver le mode plan",
	"hotkeys.other.searchHistory": "Rechercher dans l'historique des prompts",
	"hotkeys.other.toggleToolExpand": "Développer/réduire la sortie des outils",
	"hotkeys.other.toggleThinking": "Afficher/masquer le bloc de réflexion",
	"hotkeys.other.externalEditor": "Modifier le message dans un éditeur externe",
	"hotkeys.other.pasteImage": "Coller une image depuis le presse-papiers",
	"hotkeys.other.toggleStt": "Activer/désactiver l'enregistrement vocal",
	"hotkeys.other.promptActions": "Ouvrir les actions de prompt",
	"hotkeys.other.slashCommands": "Commandes slash",
	"hotkeys.other.runBash": "Exécuter une commande bash",
	"hotkeys.other.runBashExcluded": "Exécuter une commande bash (exclue du contexte)",
	"hotkeys.other.runPython": "Exécuter Python dans le noyau partagé",
	"hotkeys.other.runPythonExcluded": "Exécuter Python (exclu du contexte)",
	"tools.emptyState": "Aucun outil n'est actuellement visible par l'agent.",
	"tools.noDescription": "Aucune description fournie.",
	"tools.tableHeaderTool": "Outil",
	"tools.tableHeaderDescription": "Description",
	"context.list.noneFound": "Aucun contexte F5 XC trouvé. Utilisez /context create ou demandez-moi de vous aider à en configurer un.",
	"context.activate.usage": "Utilisation : /context activate <name>. Exécutez `/context list` pour voir les contextes disponibles.",
	"context.activate.notFound": "Contexte '{name}' introuvable. Exécutez /context list pour voir les contextes disponibles, ou /context create {name} <url> <token> pour en créer un.",
	"context.show.noActive": "Aucun contexte actif. Exécutez `/context create <name>` pour en créer un, ou `/context activate <name>` si des contextes existent.",
	"context.show.notFound": "Contexte '{name}' introuvable. Exécutez `/context list` pour voir les contextes disponibles.",
	"context.validate.usage": "Nom de contexte manquant. Utilisation : /context validate <name>. Pour le contexte actif, utilisez /context status.",
	"context.status.notConfigured": "Non configuré. Utilisez /context create ou demandez-moi de vous aider à en configurer un.",
	"context.create.usage": "Utilisation : /context create <name> <url> <token> [namespace]",
	"context.create.invalidName": "Le nom du contexte doit être alphanumérique avec des tirets/underscores, 64 caractères maximum.",
	"context.create.invalidUrl": "L'URL de l'API doit être une URL HTTPS valide (ex. https://tenant.console.ves.volterra.io)",
	"context.rename.usage": "Utilisation : /context rename <old> <new>",
	"context.export.usage": "Utilisation : /context export [name] [--include-token]",
	"context.import.usage": "Utilisation : /context import <path-or-json> [--overwrite]",
	"context.import.invalidJson": "La source d'importation n'est pas du JSON valide : {message}",
	"context.import.fileNotFound": "Fichier d'importation introuvable : {path}",
	"context.delete.usage": "Utilisation : /context delete <name> --confirm",
	"context.delete.cannotDeleteActive": "Impossible de supprimer le contexte actif. Exécutez `/context activate <other>` pour changer d'abord.",
	"context.namespace.usage": "Utilisation : /context namespace <name>\nChange le namespace actif sans modifier le contexte. Par défaut : 'default'.",
	"context.env.unknownAction": "Action env inconnue : {action}. Utilisez /context env set|unset|list",
	"context.env.noActive": "Aucun contexte actif. Utilisez d'abord /context activate <name>.",
	"context.env.set.usage": "Aucune paire KEY=VALUE trouvée. Utilisation : /context set KEY=VALUE [KEY2=VALUE2 ...]",
	"context.env.unset.usage": "Aucun nom de variable trouvé. Utilisation : /context unset KEY [KEY2 ...]",
	"mcp.errors.unknownSubcommand": "Sous-commande inconnue : {subcommand}. Tapez /mcp help pour l'aide.",
	"mcp.errors.invalidScope": "Valeur --scope invalide. Utilisez project ou user.",
	"mcp.errors.unknownOption": "Option inconnue : {option}",
	"mcp.errors.missingUrl": "Valeur manquante pour --url.",
	"mcp.errors.invalidTransport": "Valeur --transport invalide. Utilisez http ou sse.",
	"mcp.errors.missingToken": "Valeur manquante pour --token.",
	"mcp.errors.missingLimit": "Valeur manquante pour --limit.",
	"mcp.errors.invalidLimit": "Valeur --limit invalide. Utilisez un entier entre 1 et 100.",
	"mcp.errors.serverNotFound": "Serveur \"{name}\" introuvable.",
	"mcp.errors.serverNotFoundInScope": "Serveur \"{name}\" introuvable dans la configuration {scope}.",
	"mcp.errors.noManager": "Aucun gestionnaire MCP disponible.",
	"mcp.action.enable": "activer",
	"mcp.action.disable": "désactiver",
	"mcp.add.nameRequired": "Nom de serveur requis pour l'ajout rapide. Utilisation : /mcp add <name> ...",
	"mcp.add.urlOrCommand": "Utilisez soit --url soit -- <command...>, pas les deux.",
	"mcp.add.tokenRequiresUrl": "--token nécessite --url (transport HTTP/SSE).",
	"mcp.remove.usage": "Nom de serveur requis. Utilisation : /mcp remove <name> [--scope project|user]",
	"mcp.remove.failed": "Échec de la suppression du serveur : {message}",
	"mcp.test.usage": "Nom de serveur requis. Utilisation : /mcp test <name>",
	"mcp.test.disabled": "Le serveur \"{name}\" est désactivé. Exécutez d'abord /mcp enable {name}.",
	"mcp.test.cancelled": "Test MCP annulé pour \"{name}\"",
	"mcp.test.failed": "Échec de la connexion à \"{name}\" : {message}",
	"mcp.enable.usage": "Nom de serveur requis. Utilisation : /mcp enable <name>",
	"mcp.disable.usage": "Nom de serveur requis. Utilisation : /mcp disable <name>",
	"mcp.setEnabled.failed": "Échec de l'action {action} sur le serveur : {message}",
	"mcp.unauth.usage": "Nom de serveur requis. Utilisation : /mcp unauth <name>",
	"mcp.unauth.failed": "Échec de la suppression de l'authentification : {message}",
	"mcp.reauth.usage": "Nom de serveur requis. Utilisation : /mcp reauth <name>",
	"mcp.reauth.disabled": "Le serveur \"{name}\" est désactivé. Exécutez d'abord /mcp enable {name}.",
	"mcp.reauth.failed": "Échec de la réautorisation du serveur : {message}",
	"mcp.reload.failed": "Échec du rechargement de MCP : {message}",
	"mcp.reconnect.usage": "Nom de serveur requis. Utilisation : /mcp reconnect <name>",
	"mcp.reconnect.failed": "Échec de la reconnexion à \"{name}\". Vérifiez l'état et les logs du serveur.",
	"mcp.reconnect.failedWithError": "Échec de la reconnexion à \"{name}\" : {message}",
	"mcp.smithery.searchUsage": "Mot-clé requis. Utilisation : /mcp smithery-search <keyword> [--scope project|user] [--limit <1-100>] [--semantic]",
	"mcp.smithery.keyEmpty": "La clé API Smithery ne peut pas être vide.",
	"mcp.smithery.keySaved": "Clé API Smithery enregistrée.",
	"mcp.smithery.validationFailed": "Échec de la validation de la clé API Smithery : {message}",
	"mcp.smithery.loginCancelled": "Connexion Smithery annulée.",
	"mcp.smithery.keyRemoved": "Clé API Smithery supprimée.",
	"mcp.smithery.noKeyFound": "Aucune clé API Smithery en cache trouvée.",
	"mcp.smithery.deployCancelled": "Déploiement MCP annulé.",
	"mcp.smithery.selectionCancelled": "Sélection Smithery MCP annulée.",
	"mcp.smithery.searchFailed": "Échec de la recherche Smithery : {message}"
}
