{
  "account": "Compte",
  "accountLinkedSuccessfully": "Compte {provider} {id} lié avec succès !",
  "accountUnlinked": "Compte {provider} délié.",
  "actionFailed": "Action échouée : {error}",
  "actionsTitle": "Actions",
  "activeAgentState": "actif : {agent}",
  "activeAgentSwitchTitle": "Revenir à l'assistant",
  "activeAgentTitle": "Actif : {agent} — cliquer pour revenir",
  "activeAgents": "Agents actifs",
  "activeForwards": "Forwards actifs :\n{lines}",
  "activeLoopsHeader": "Boucles actives :",
  "add": "Ajouter",
  "addAgent": "Ajouter un agent",
  "addAgentToConversation": "Ajouter un agent à la conversation",
  "addInstance": "Ajouter une instance",
  "addTheme": "Ajouter un thème",
  "addToConversation": "Ajouter à la conversation",
  "agent": "Agent",
  "agentBtwUsage": "Usage : /agent btw @<nom|ALL> <question>",
  "agentConfigUpdated": "Configuration de {agent} mise à jour.",
  "agentHooks": "Agent Hooks",
  "agentHooksDesc": "Bindings de hooks conversation",
  "agentCreateConvUsage": "Usage : /agent create-conv @<nom> \"<prompt>\"",
  "agentCreated": "Agent créé.",
  "agentDeleteUsage": "Usage : /agent delete @<nom>",
  "agentDeleted": "Agent '{name}' supprimé.",
  "agentDisabled": "Agent désactivé.",
  "agentEnabled": "Agent activé.",
  "agentHasNoAssignedSkills": "L’agent **{agent}** n’a aucune skill assignée.",
  "agentMapping": "Mapping des agents",
  "agentMsgTargetUsage": "Usage : /agent msg {target} <message>",
  "agentMsgUsage": "Usage : /agent msg @<nom|ALL> <message>",
  "agentNotFound": "Agent '{name}' introuvable.",
  "agentOverride": "Override agent",
  "agentPromoted": "Agent promu.",
  "agentRenamed": "L'agent \"{real}\" s'affichera désormais comme \"{nick}\".",
  "agentRepository": "Dépôt Agents",
  "agentRequired": "Un agent est requis.",
  "agentSelected": "Agent '{name}' sélectionné. Les messages vont maintenant à {name}.",
  "agentSelectedPending": "Agent '{name}' sélectionné (activé au premier message).",
  "agentSetnameUsage": "Usage : /agent setname @<nom_reel> [surnom]  (omettre le surnom pour réinitialiser)",
  "agentSkillsTitle": "Skills pour “{agent}”",
  "agentSkillsUpdated": "Skills mis à jour pour {agent} : {details}.",
  "agentUsage": "Usage : /agent list | create | create-conv | select | delete | msg | disable | enable | promote | setname",
  "agents": "Agents",
  "agentsHeader": "**Agents :**",
  "agentsListTitle": "Agents ({state}) :\n{lines}",
  "all": "Tout",
  "allAgents": "tous les agents",
  "allAgentsInConversation": "Tous les agents sont déjà dans cette conversation",
  "allImageServicePreferencesCleared": "Toutes les préférences de service image ont été effacées.",
  "availableToTools": "disponible pour les tools",
  "allMemories": "Toutes les mémoires",
  "allTypes": "Tous les types",
  "allVideoServicePreferencesCleared": "Toutes les préférences de service vidéo ont été effacées.",
  "allowLocal": "Autoriser local",
  "alsoRewindUserFiles": "Revenir aussi sur les fichiers utilisateur (via checkpoints)",
  "analyzing": "Analyse...",
  "analyzingConversation": "Analyse de la conversation…",
  "analyzingRecentUserMessages": "Analyse des {limit} derniers messages utilisateur...",
  "applyGlobally": "Appliquer globalement",
  "applyToConversation": "Appliquer à la conversation",
  "approve": "Approuver",
  "approveStep": "Approuver l’étape",
  "assign": "Assigner",
  "assignPlan": "Assigner le plan",
  "assignStepTitle": "Assigner l’étape {n}",
  "assignStepToAgent": "Assigner l’étape à un agent",
  "assignTitle": "Assigner {name} à un agent",
  "assignTo": "Assigner à...",
  "assignToAgentMenu": "Assigner à un agent...",
  "assignedList": "Assignés : {items}",
  "atLeastOneAgentRequired": "Au moins un agent est requis.",
  "attachTitle": "Joindre des fichiers",
  "audio": "Audio",
  "audioDesc": "Transférer l'audio du relay (sans desktop)",
  "audioNoToken": "La source audio est disponible mais aucun jeton de capacité n’a été retourné.",
  "audioPreviewFailed": "Échec de prévisualisation audio : {error}",
  "audioStreamingFrom": "Audio diffusé depuis {relay}.",
  "audioTabClosed": "Onglet audio fermé.",
  "audioTabTitle": "Audio ({relay})",
  "audioTitleRelay": "Audio — {relay}",
  "audioUnavailable": "Aucun audio disponible sur ce relay.",
  "authorizeInRelayBrowser": "Autorisez dans le navigateur qui s’ouvre sur le relay...",
  "autoGeneratedIfEmpty": "Généré automatiquement si vide",
  "autoSummarizer": "auto",
  "autoconvDisabledFor": "Auto-conversation désactivée pour {agent}.",
  "autoconvEnabledFor": "Auto-conversation activée pour {agent} ({freq}).",
  "autoconvFrequencyPrompt": "Fréquence (ex. 6/1m, 2-3/h, 1/2h) :",
  "autoconvOff": "Autoconv off",
  "autoconvOnMenu": "Autoconv on...",
  "available": "Disponible",
  "availableCommands": "Commandes disponibles :",
  "availableRelays": "Relays disponibles :",
  "availableToolsForCall": "Outils disponibles pour /call :",
  "backToReport": "Retour au rapport",
  "binaryFile": "Fichier binaire : /workspace/{path}",
  "blocked": "Bloqué",
  "botLabel": "Bot : {bot}",
  "branchAPrompt": "Branche A :",
  "branchBPrompt": "Branche B :",
  "branchComparisonHeader": "Comparaison de branches : {a} vs {b}",
  "branchCreated": "Branche créée : {name}",
  "branchDeleted": "Branche supprimée : {name}",
  "branchNamePrompt": "Nom de branche :",
  "branchTitle": "Branche : {branch}",
  "broadcastFirst": "Démarrez d’abord une conversation avant de broadcaster.",
  "broadcasting": "Broadcast en cours...",
  "btwUsage": "Usage : /btw [@agent] <question> (par défaut agent sélectionné)",
  "bugAgentRequired": "BUG : nom d’agent requis pour select",
  "bugNoAgentSelected": "BUG : aucun agent sélectionné (selectedAgent vide)",
  "buildingProjectGraph": "Construction du graphe projet...",
  "cacheReadWrite": "cache : {read} lus, {write} écrits",
  "cachedRenderingsPurged": "{n} rendu(s) en cache purgé(s)",
  "callingTool": "🔧 Appel outil : {tool}",
  "cancel": "Annuler",
  "cancelThisAgent": "Annuler cet agent",
  "cancelled": "[Annulé]",
  "cancelling": "Annulation...",
  "ccInteractiveTerminal": "Tmux Agent",
  "ccInteractiveTerminalDesc": "Attacher le tmux de l’agent sélectionné",
  "ccInteractiveTerminalNoLive": "Aucune session tmux interactive vivante pour l’agent sélectionné.",
  "ccInteractiveTerminalNoAgent": "Sélectionne un agent avant d’ouvrir son tmux.",
  "chatTitle": "Chat",
  "chooseCCInteractiveTerminal": "Choisir le tmux Claude Code",
  "chooseRelay": "Choisir un relay",
  "claudeCredentialsUsage": "Usage : /claude-login-credentials <service_name> <credentials_json>",
  "claudeRelayUsage": "Usage : /claude-login-relay <service_name> [relay_name]",
  "claudeRemoveUsage": "Usage : /cls remove <index> [@service]",
  "claudeUsage": "Usage : /cls @<service> | /cls pool | /cls reset | /cls remove <N>",
  "cliSessionReusedTitle": "{cli} réutilisé (durée {lived}, réutilisation n°{count})",
  "clickFullSize": "Cliquer pour voir en taille réelle",
  "clientOwner": "client",
  "close": "Fermer",
  "codeNoRelayUsage": "Aucun relay connecté. Usage : /code <nom_relay>",
  "codeServerClosed": "Code-server fermé.",
  "codeServerStartedLoading": "code-server démarré. Chargement de l’éditeur...",
  "commandShort.1": "Afficher les commandes disponibles ou l’aide détaillée d’une commande",
  "commandShort.10": "Raccourci pour créer un skill",
  "commandShort.11": "Lister toutes les ressources (agents, skills, serveurs MCP)",
  "commandShort.12": "Activer une ressource pour cette conversation",
  "commandShort.13": "Désactiver une ressource de cette conversation",
  "commandShort.14": "Partager une ressource avec une autre conversation",
  "commandShort.15": "Connexion à Claude Code via serveur (noVNC)",
  "commandShort.16": "Connexion à Claude Code via relay",
  "commandShort.17": "Définir les credentials Claude Code depuis .credentials.json",
  "commandShort.18": "Ouvrir un onglet terminal sur un relay",
  "commandShort.19": "Ouvrir un onglet VS Code (code-server) sur un relay",
  "commandShort.2": "Envoyer un message à un agent ou une tâche en cours",
  "commandShort.20": "Transférer l’audio depuis le relay (sans desktop)",
  "commandShort.21": "Ouvrir le desktop virtuel (VNC) sur un relay",
  "commandShort.22": "Forwarder un port d’un relay vers le serveur web",
  "commandShort.23": "Gérer les bindings relay de cette conversation",
  "commandShort.24": "Gérer les services LLM et externes",
  "commandShort.25": "Gérer les revérifications planifiées",
  "commandShort.26": "Changer le service LLM d’un agent dans cette conversation",
  "commandShort.27": "Interrompre un agent — lui demander de répondre immédiatement",
  "commandShort.28": "Arrêt forcé d’un agent — annulation immédiate, sans réponse",
  "commandShort.29": "Redémarrer le contexte depuis les N derniers messages (défaut 5, 0 = vide)",
  "commandShort.3": "Question parallèle à un agent (raccourci pour /agent btw)",
  "commandShort.30": "Résumer le contexte à N tokens et repartir du résumé",
  "commandShort.31": "Demander à un agent de continuer où il s’est arrêté",
  "commandShort.32": "Compacter le contexte (résumer les anciens messages)",
  "commandShort.33": "Reconstruire le contexte depuis tout l’historique",
  "commandShort.34": "Voir le contexte LLM",
  "commandShort.35": "Afficher/masquer le panel fichiers",
  "commandShort.36": "Afficher/masquer le panel flows",
  "commandShort.37": "Afficher/masquer le panel tâches planifiées",
  "commandShort.38": "Lister les outils disponibles",
  "commandShort.39": "Afficher les métriques d’exécution des outils",
  "commandShort.4": "Appeler un outil directement",
  "commandShort.40": "Afficher les statistiques d’usage tokens",
  "commandShort.41": "Gérer les mémoires agent",
  "commandShort.42": "Knowledge Graph — voir, ajouter et invalider des triples",
  "commandShort.43": "Journal agent (observations, décisions, apprentissages)",
  "commandShort.44": "Installer un outil custom",
  "commandShort.45": "Désinstaller un outil custom",
  "commandShort.46": "Lier/délier des comptes externes",
  "commandShort.47": "Stocker un secret chiffré",
  "commandShort.48": "Lister les secrets stockés",
  "commandShort.49": "Stocker une variable en clair",
  "commandShort.5": "Gérer le service de génération vidéo",
  "commandShort.50": "Lister les variables stockées",
  "commandShort.51": "Prévisualiser un fichier (image, PDF, texte, code)",
  "commandShort.52": "Afficher tokens et coût estimé par agent",
  "commandShort.53": "Auto-conversation — les agents contribuent autonomement",
  "commandShort.54": "Démarrer une nouvelle conversation",
  "commandShort.55": "Lister/changer de conversation",
  "commandShort.56": "Afficher les messages de conversation",
  "commandShort.57": "Exporter la conversation",
  "commandShort.58": "Renommer la conversation actuelle",
  "commandShort.59": "Supprimer une conversation",
  "commandShort.6": "Créer, assigner et gérer les tâches agent",
  "commandShort.60": "Supprimer un message par index",
  "commandShort.61": "Chercher dans les messages de la conversation",
  "commandShort.62": "Changer de modèle LLM",
  "commandShort.63": "Gérer les flows de données",
  "commandShort.64": "Gérer les prompts",
  "commandShort.65": "Exécuter une commande shell via relay",
  "commandShort.66": "Afficher le diff git",
  "commandShort.67": "Copier la dernière réponse dans le presse-papiers",
  "commandShort.68": "Coller le contenu du presse-papiers",
  "commandShort.69": "Uploader un fichier",
  "commandShort.7": "Gérer le service de génération d’image",
  "commandShort.70": "Voir et gérer les plans",
  "commandShort.71": "Surveiller un fichier",
  "commandShort.72": "Vider les pièces jointes en attente",
  "commandShort.73": "Vider l’affichage du chat",
  "commandShort.74": "Nettoyer les fichiers FileStore",
  "commandShort.75": "Changements parallèles sur plusieurs fichiers",
  "commandShort.76": "Diagnostiquer les problèmes de session",
  "commandShort.77": "Exécuter un prompt à intervalle régulier",
  "commandShort.78": "Se réauthentifier",
  "commandShort.79": "Graphe projet — voir la structure du code",
  "commandShort.8": "Gérer les agents IA",
  "commandShort.9": "Gérer les skills (templates de prompt ponctuels)",
  "commitsAhead": "Commits en avance : {count}",
  "commitsBehind": "Commits en retard : {count}",
  "compacting": "Compaction",
  "compactingAgent": "Compaction ({agent})",
  "compactionFailed": "Échec de compaction : {error}",
  "confidence": "Confiance",
  "confidenceBreakdown": "Répartition de confiance",
  "configureAgentTitle": "Configurer {agent}",
  "configureAvailability": "Configurer la disponibilité",
  "configureBindings": "Configurer les bindings",
  "configureConversationMenu": "Configurer dans la conversation...",
  "confirmDelete": "Supprimer cette conversation ? Cette action est irréversible.",
  "connError": "Erreur de connexion : {msg}",
  "connected": "Connecté",
  "connectionsCount": "{n} connexions",
  "connectionsHeading": "Connexions ({n})",
  "containerKilled": "✅ Conteneur tué : {target}",
  "containerized": "Conteneurisé",
  "containers": "Conteneurs",
  "containersDesc": "Lister et gérer les conteneurs Docker",
  "context": "Contexte",
  "contextAdd": "Ajouter un message",
  "contextAddSharedRequired": "Passez sur Shared ou un contexte agent avant d’ajouter des messages de contexte.",
  "contextCancel": "Annuler",
  "contextCcSession": "Session CC",
  "contextCodexSession": "Session Codex",
  "contextCompactedStatus": "{agent} : {before} messages → {after} messages (~{tokens} tokens)",
  "contextContent": "Contenu",
  "contextDelete": "Supprimer",
  "contextDeleteConfirm": "Supprimer ce message ?",
  "contextDeleteContextConfirm": "Supprimer tout le contexte \"{name}\" ? Cette action est irréversible.",
  "contextDeleteContextTitle": "Supprimer entièrement ce contexte",
  "contextDeleteSelected": "Supprimer la sélection",
  "contextDeleted": "Contexte \"{name}\" supprimé.",
  "contextDesc": "Voir la fenêtre de contexte LLM",
  "contextDiverged": "divergé",
  "contextEdit": "Modifier",
  "contextExpandTitle": "Cliquer pour ouvrir le message complet",
  "contextExpectedArray": "tableau attendu",
  "contextGauge": "jauge contexte",
  "contextGaugeTitle": "Contexte {used}k/{max}k ({pct}%)",
  "contextGeminiSession": "Session Gemini",
  "contextInvalidJson": "JSON invalide",
  "contextInvalidate": "Invalider",
  "contextInvalidateRuntimeConfirm": "Invalider la session runtime \"{name}\" ? Cela forcera une nouvelle session au prochain tour.",
  "contextInvalidateRuntimeTitle": "Invalider cette session runtime",
  "contextLoadOlder": "▼ Charger plus ancien ({shown} sur {total})",
  "contextMessageNotFoundRefresh": "Message introuvable - rafraîchissez le contexte",
  "contextMessages": "{n} messages",
  "contextMode": "Mode contexte",
  "contextModeFull": "Conversation complète",
  "contextModeIsolated": "Isolé",
  "contextModeLast10": "10 derniers messages",
  "contextModeLast20": "20 derniers messages",
  "contextModeLast50": "50 derniers messages",
  "contextModeSummary2000": "Résumé ~2000 tokens",
  "contextModeSummary4000": "Résumé ~4000 tokens",
  "contextOpBusy": "Opération de contexte en cours, veuillez patienter...",
  "contextOperationFailed": "Échec de l’opération de contexte : {error}",
  "contextReadonly": "Le contexte de session runtime est en lecture seule",
  "contextReplaceAll": "Remplacer tout (JSON)",
  "contextReplaceConfirm": "Remplacer tout le contexte ?",
  "contextRestarting": "Redémarrage",
  "contextRole": "Rôle",
  "contextSave": "Enregistrer",
  "contextSaved": "Contexte sauvegardé ({n} messages, ~{tokens} tokens)",
  "contextSelectedCount": "{n} sélectionné(s)",
  "contextShared": "Shared",
  "contextSynced": "synchronisé",
  "contextTitle": "Contexte LLM",
  "contextTokens": "~{n} tokens",
  "contextTranscript": "Transcript",
  "contextTranscriptReplaceBlocked": "Le transcript ne peut pas être remplacé depuis l’éditeur de contexte.",
  "contextUsageMessages": "messages",
  "contextUsageSource": "source",
  "contextUsageUpdated": "mis à jour",
  "continueFromLast": "Continue depuis ton dernier point d’arrêt.",
  "continuing": "Recherche en cours...",
  "convThemeLabel": "Thème conversation",
  "conversation": "Conversation",
  "conversationCostUsd": "Coût de la conversation : ${cost}",
  "conversationAgentHooks": "Agent Hooks conversation",
  "conversationDefaults": "Défauts conversation",
  "conversationDeletedShort": "Supprimée {id}",
  "conversationShort": "conv",
  "conversationToolsMcpAvailability": "Disponibilité Tools / MCP conversation",
  "conversations": "Conversations",
  "copiedCharsToClipboard": "{n} caractères copiés dans le presse-papiers.",
  "copy": "Copier",
  "copyFailed": "Échec de la copie : {error}",
  "copyMsgId": "Copier l'id du message",
  "copyToConversation": "Copier vers conversation",
  "copyToFileStore": "Copier vers FileStore",
  "copyToGlobal": "Copier vers global",
  "copyToUser": "Copier vers utilisateur",
  "costNotConfigured": "coût : non configuré",
  "create": "Créer",
  "createNew": "Créer",
  "createNewAgent": "Créer un agent",
  "createNewAgentHook": "Créer un hook agent",
  "createNewDefinitionRepository": "Créer une définition {type} dans le dépôt",
  "createNewTool": "Créer un outil",
  "createPlan": "Créer un plan",
  "credentialsPoolHeader": "Pool d’identifiants ({count}) :",
  "cssOrZipPackage": "Package CSS ou ZIP",
  "cssOverride": "Override CSS",
  "current": "courant",
  "currentBranchLabel": "courante",
  "currentTaskLimits": "Actuel : coût=${cost}, replanifications={reschedules}",
  "currentTitle": "Courant",
  "cut": "Couper",
  "daysAgo": "il y a {n} j",
  "defaultAgentTitle": "Agent par défaut",
  "defaultExecutionMode": "Mode d'exécution par défaut",
  "defaultForAgent": "Par défaut pour {agent}",
  "defaultRelay": "Relay par défaut",
  "definition": "Définition",
  "definitionRequired": "Définition *",
  "definitionTemplate": "Template de définition",
  "delete": "Supprimer",
  "shareLink": "Partager (lien public)",
  "makePrivate": "Rendre privé",
  "shareLinkCopied": "Lien public copié dans le presse-papiers",
  "shareLinkReady": "Lien public : {url}",
  "shareFailed": "Échec du partage : {error}",
  "madePrivate": "Le fichier est de nouveau privé",
  "deleteBranch": "Supprimer la branche",
  "deleteBranchConfirm": "Supprimer la branche \"{name}\" ? Cette action est irréversible.",
  "deleteConv": "Supprimer la conversation",
  "deleteCredentialConfirm": "Supprimer le credential #{index} ?",
  "deleteDefinitionMenu": "Supprimer la définition",
  "deleteDesc": "Supprimer cette conversation",
  "deleteFailed": "Échec de suppression : {error}",
  "deleteFailedUnknown": "Échec de suppression : inconnu",
  "deleteFileConfirm": "Supprimer \"{name}\" ? Cette action est irréversible.",
  "deleteItemsConfirm": "Supprimer {label} ? Cette action est irréversible.",
  "deleteSelected": "Supprimer la sélection",
  "deleteParamConfirm": "Supprimer {type} '{key}' ({scope}) ?",
  "deleteServiceConfirm": "Supprimer le service '{id}' ?",
  "deleteThemeConfirm": "Supprimer le thème {theme} ?",
  "deleteVoiceClone": "Supprimer le clone vocal",
  "deleteVoiceConfirm": "Supprimer le clone vocal \"{name}\" ?\n\nCela supprime en cascade :\n  • le provider voice_id (paradigme A)\n  • l’audio de référence\n  • tous les rendus TTS en cache",
  "clearFileStore": "Vider le FileStore",
  "clearFileStoreConfirm": "Supprimer tous les fichiers FileStore de cette conversation ?",
  "deploy": "Déployer",
  "deployFlow": "Déployer un flow",
  "deployFlowFromTemplate": "Déployer un flow depuis un template",
  "deployScope": "Portée du déploiement",
  "deploymentSchemaLoadFailed": "Erreur de chargement du schéma de déploiement : {error}",
  "description": "Description",
  "desktop": "Desktop",
  "desktopDesc": "Ouvrir le desktop virtuel (VNC) sur le relay",
  "desktopLower": "desktop",
  "desktopNoRelayUsage": "Aucun relay connecté. Usage : /desktop <nom_relay>",
  "desktopNoUrl": "Le desktop est prêt mais le serveur n’a pas retourné d’URL",
  "desktopReady": "Desktop prêt.",
  "desktopStopUsage": "Aucun desktop actif à arrêter. Usage : /desktop stop [relay_id]",
  "desktopStopped": "Desktop arrêté.",
  "desktopTabClosed": "Onglet desktop fermé (le desktop tourne encore). Utilisez /desktop stop pour l’arrêter.",
  "desktopTabTitle": "Desktop ({relay})",
  "diaryEntryAdded": "Entrée de journal ajoutée : {result}",
  "diaryEntryPlaceholder": "Entrée de journal...",
  "diaryFor": "Journal de {agent} ({n} entrées) :\n{lines}",
  "diaryTitle": "Journal — {agent}",
  "disconnected": "Déconnecté",
  "docker": "Docker",
  "dockerContainersHeader": "**Conteneurs Docker** ({n}) :\n",
  "dockerRoot": "Racine Docker",
  "dockerSandboxed": "Docker (sandbox)",
  "done": "Terminé",
  "download": "Télécharger",
  "downloadZip": "Télécharger en zip",
  "downloadZipTitle": "Télécharger le dossier en zip",
  "dynamicToolsHeader": "Outils dynamiques :",
  "edgesForQuery": "{n} liens pour « {query} »",
  "edit": "Modifier",
  "editDefinitionMenu": "Modifier la définition...",
  "editLimits": "Modifier les limites",
  "editLimitsTitle": "Modifier les limites — {id}",
  "editParamTitle": "Modifier {type} : {key}",
  "editServiceTitle": "Modifier le service : ",
  "editWithEllipsis": "Modifier...",
  "emptyDirectory": "Dossier vide",
  "emptyResponse": "(L'agent a terminé sans produire de réponse)",
  "enabled": "Activé",
  "ended": "terminé",
  "endedTitle": "Terminé",
  "entities": "Entités",
  "entriesCount": "{n} entrées",
  "error": "Erreur",
  "events": "Événements",
  "errorMessage": "Erreur : {error}",
  "errorWithMessage": "Erreur : {error}",
  "exec.approval_title": "Approbation de commande requise",
  "exec.approve": "Approuver",
  "exec.deny": "Refuser",
  "exec.working_dir": "Répertoire de travail",
  "execute": "Exécuter",
  "executeActionConfirm": "Exécuter {action} ?",
  "executionMode": "Mode d'exécution",
  "expired": "expiré",
  "expires": "Expire",
  "expiresLabel": "expire : {value}",
  "explicitSummarizer": "explicite",
  "export": "Exporter",
  "exportDesc": "Exporter la conversation",
  "exportFailed": "Échec de l’export : {error}",
  "exported": "Conversation exportée.",
  "exportedFile": "Exporté : {file}",
  "exporting": "Export...",
  "exportingWithImages": "Export avec images en cours...",
  "failed": "Échec : {error}",
  "failPolicy": "Politique d’échec",
  "failedAddTriple": "Échec d’ajout du triple : {error}",
  "failedInvalidate": "Échec d’invalidation : {error}",
  "failedLoadDiary": "Échec du chargement du journal : {error}",
  "failedLoadKg": "Échec du chargement des triples KG : {error}",
  "failedLoadKgStats": "Échec du chargement des stats KG : {error}",
  "failedLoadMemories": "Échec du chargement des mémoires : {error}",
  "failedReadFile": "Échec de lecture /workspace/{path} : {error}",
  "failedSendAgent": "Échec d’envoi à l’agent : {error}",
  "failedToClear": "Échec de l’effacement",
  "failedToCreateConversation": "Échec de création de la conversation",
  "failedToListAgents": "Échec du listing des agents",
  "failedToListRelays": "Échec de la liste des relays : {error}",
  "failedToLoadFiles": "Échec du chargement des fichiers",
  "failedToLoadSchedules": "Échec du chargement des tâches planifiées",
  "failedToOpenTerminal": "Échec de l’ouverture du terminal : {error}",
  "failedToSetImageService": "Échec de la définition du service image",
  "failedToSetVideoService": "Échec de la définition du service vidéo",
  "failedToUpdateTechnicalGrouping": "Échec de mise à jour du groupement technique : {error}",
  "failedWithError": "Échec : {error}",
  "fieldMustBeValidJson": "{field} doit être un JSON valide",
  "filters": "Filtres",
  "file": "Fichier",
  "fileDate": "Date",
  "fileExplorer": "Explorateur de fichiers",
  "fileExplorerDesc": "Parcourir le système de fichiers du relay",
  "fileName": "Nom",
  "fileRewindError": "Retour fichiers : {error}",
  "fileSize": "Taille",
  "fileStoreDeleted": "FileStore : {n} fichier(s) supprimé(s){scope}",
  "fileTooLarge": "Fichier trop volumineux : {name} ({size} Mo, max 10 Mo)",
  "fileTtlLabel": "Fichiers",
  "fileType": "Type",
  "fileUploadUnavailable": "Upload fichier indisponible. Glissez-déposez les fichiers dans le chat.",
  "files": "Fichiers",
  "filesDesc": "Fichiers de conversation",
  "filesRewindSummary": "Fichiers : {restored} restaurés, {deleted} supprimés",
  "filesStillUploading": "Des fichiers sont encore en upload, patientez...",
  "filesUploadingWait": "Des fichiers sont encore en upload, veuillez patienter...",
  "filterTriples": "Filtrer les triples...",
  "flowActionDone": "{action} terminé",
  "flowConfigurationUpdated": "Configuration du flow mise à jour pour {id}",
  "flowConfigureLocalService": "Configurer le service local",
  "flowDeployed": "Déployé : {id} ({scope})",
  "flowDeployConfirm": "Déployer le template de flow '{id}' dans le scope {scope} ?",
  "flowEditParameters": "Modifier les paramètres du flow",
  "flowEditParamsMenu": "Modifier paramètres...",
  "flowGraphOpenFailed": "Impossible d'ouvrir le graphe du flow : {error}",
  "flowIndependentNoDependencies": "Flow indépendant - aucune dépendance d'exécution.",
  "flowLoadingParameters": "Chargement des paramètres...",
  "flowMoveToConversationScope": "Déplacer vers la conversation",
  "flowMoveToPackage": "Déplacer vers un package...",
  "flowMoveToPackageConfirm": "Déplacer le template de flow '{id}' vers le package '{package}' ?",
  "flowMoveToPackagePrompt": "Nom du package (actuel : {current})",
  "flowMoveToUserScope": "Déplacer vers utilisateur",
  "flowNoParameters": "Aucun paramètre de flow.",
  "flowOneShotTriggers": "Triggers one-shot à lancer",
  "flowSelectOneShotTrigger": "Sélectionnez au moins un trigger one-shot.",
  "flowPromoteToUser": "Promouvoir utilisateur",
  "flowPromotedToUser": "Flow '{id}' promu en portée utilisateur",
  "flowPromotedToUserScope": "Flow '{id}' promu en scope utilisateur",
  "flowRequiresConversationContext": "Ce flow nécessite un contexte conversation.",
  "flowRequiresUserContext": "Ce flow nécessite un contexte utilisateur.",
  "flowStart": "Démarrer",
  "flowStartMenu": "Démarrer...",
  "flowStarted": "Flow '{id}' démarré",
  "flowStatusHeader": "Flow {name} [{status}] :",
  "flowStop": "Arrêter",
  "flowStopped": "Flow '{id}' arrêté",
  "flowTemplatesHeader": "Templates de flow :",
  "flowTemplateDeleted": "Template de flow '{id}' supprimé.",
  "flowTemplateDeleteConfirm": "Supprimer le template de flow '{id}' ?",
  "flowTemplateMovedToPackage": "Template de flow '{id}' déplacé vers le package '{package}'.",
  "flowTemplateMovedToScope": "Template de flow '{id}' déplacé vers le scope {scope}.",
  "flowTemplateMoveScopeConfirm": "Déplacer le template de flow '{id}' vers le scope {scope} ?",
  "flowUndeploy": "Retirer",
  "flowUndeployConfirm": "Retirer le flow '{id}' ?",
  "flowUndeployed": "Flow '{id}' retiré",
  "flowViewGraph": "Voir le graphe",
  "flows": "Flows",
  "flowsHeader": "Flows :",
  "flowsRepository": "Dépôt Flows",
  "folderActive": "Dossier local : {name}",
  "folderOpen": "Ouvrir un dossier local",
  "folderUnsupported": "Votre navigateur ne supporte pas le File System Access API (utilisez Chrome ou Edge)",
  "forceStopping": "Arrêt forcé de {agent}...",
  "forkFailed": "Échec du fork : {error}",
  "forkedConversation": "Fork → {id}",
  "formatLabel": "format : {format}",
  "fullscreenTitle": "Plein écran (Échap pour quitter)",
  "global": "Global",
  "globalLower": "global",
  "globalOnly": "Global uniquement",
  "globalThemeTitle": "Thème global du chat",
  "groupTechnicalDisabledTitle": "Grouper les détails techniques. Cliquez pour regrouper tools et réflexion dans des blocs repliables, puis recharger la conversation.",
  "groupTechnicalEnabledTitle": "Les détails techniques sont groupés. Cliquez pour désactiver le regroupement et recharger la conversation.",
  "viewMenuTitle": "Options d'affichage",
  "viewGroupTechnical": "Grouper les détails techniques",
  "viewGroupTasks": "Grouper les messages de task",
  "viewGroupDelegates": "Grouper les messages de delegate",
  "helpCallHint": "Tapez /help call <toolname> pour le détail des paramètres.",
  "helpCommandHint": "Tapez /help <command> pour la documentation détaillée.",
  "hoursAgo": "il y a {n} h",
  "httpErrorWithStatus": "Erreur {status} : {error}",
  "imagePastedFromClipboard": "Image collée depuis le presse-papiers.",
  "imageServicePreferenceClearedFor": "Préférence de service image effacée pour {agent}.",
  "imageServiceSetFor": "Service image \"{service}\" défini pour {target}.",
  "imageServicesAvailable": "Services image disponibles :",
  "import": "Importer",
  "importConversation": "Importer une conversation",
  "importFailed": "Échec de l’import : {error}",
  "importSuccess": "Conversation importée avec succès",
  "imported": "Importée",
  "importedAgentsCount": "Agents importés ({n})",
  "importedConversationTitle": "Conversation importée",
  "importing": "Import en cours...",
  "inProgress": "En cours",
  "install": "Installer",
  "installFailed": "Échec de l’installation : {error}",
  "installService": "Installer un service",
  "installToolInstructions": "Pour installer un outil, glissez-déposez un fichier .py dans le chat ou collez le code avec :\n/install filename.py\n```python\n# votre code ici\n```",
  "installing": "Installation...",
  "installingToolFrom": "Installation de l’outil depuis {file}...",
  "instanceAlreadyExists": "L'instance \"{name}\" existe déjà.",
  "instanceName": "Nom de l'instance",
  "instanceNameRequired": "Nom de l'instance *",
  "instanceNameRequiredMessage": "Le nom de l'instance est requis.",
  "instanceParameters": "Paramètres instance",
  "interruptEscape": "Interruption de {agent}... (appuyez encore sur Échap pour forcer l’arrêt)",
  "interruptingAgent": "Interruption de {agent}...",
  "interruptingAgentImmediateResponse": "Interruption de {agent} — demande de réponse immédiate...",
  "interruptingAllAgents": "Interruption de tous les agents...",
  "interruptingTask": "Interruption de la tâche {task} ({agent})...",
  "intervalOptionalOverride": "Intervalle (override optionnel)",
  "invalidJsonInParameters": "JSON invalide dans les paramètres : {error}",
  "invalidJsonMessage": "JSON invalide : {error}",
  "invalidScheduleDateFormat": "Format de date invalide. Utilisez YYYYMMDDHHmmss",
  "invalidate": "Invalider",
  "invalidateTripleConfirm": "Invalider ce triple ? Il sera marqué comme terminé.",
  "itemsCount": "{n} élément(s)",
  "itemsLabel": "{n} éléments",
  "itemsSelected": "{n} sélectionné(s)",
  "iterProgress": "↻ [{agent}] iter {i} · tour {r}/{mr} · {t} outils",
  "iterStatus": "[{agent}] iter {i} · tour {r}/{mr} · {t} outils",
  "justNow": "à l’instant",
  "key": "Clé",
  "keyRequired": "La clé est requise",
  "kgRequired": "Sujet, prédicat et objet sont requis.",
  "kgStats": "{entities} entités, {triples} triples, {current} courants",
  "kgStatsTitle": "**Stats Knowledge Graph**",
  "kgTripleAdded": "Triple KG ajouté : {subject} → {predicate} → {object}",
  "kill": "Tuer",
  "killBackgroundTask": "Tuer la tâche en arrière-plan",
  "killed": "Tué",
  "killingContainers": "✅ Arrêt de {n} conteneur(s)...",
  "knowledgeGraph": "Knowledge Graph",
  "languageEn": "Anglais",
  "languageEs": "Espagnol",
  "languageFr": "Français",
  "languageTitle": "Langue",
  "learnFailed": "Échec de learn : {error}",
  "liveSpeechStartTitle": "Lire les messages agent en direct",
  "liveSpeechStopTitle": "Arrêter la lecture en direct",
  "speechInputStartTitle": "Dicter et envoyer",
  "speechInputStopTitle": "Arrêter l'enregistrement",
  "speechInputChooseService": "Choisir le service de dictée",
  "limitsOptional": "Limites (optionnel)",
  "link": "Lier",
  "linkFilesystem": "Lier un filesystem",
  "linkRelay": "Lier un relay",
  "linkSummarizer": "Lier le summarizer",
  "linkedAccounts": "Comptes liés",
  "linkedAccountsHeader": "Comptes liés :",
  "linkedRelaysDefaultHint": "Liés ★ = défaut",
  "linkingRelay": "Liaison du relay {relay}...",
  "liveSpeechChooseService": "Choisir le service vocal",
  "llmServiceRequired": "Service LLM *",
  "llmServiceRequiredMessage": "Le service LLM est requis.",
  "loadError": "Échec du chargement de la conversation",
  "loading": "Chargement...",
  "loadingCredentials": "Chargement des credentials...",
  "loadingDeploymentSchema": "Chargement du schéma de déploiement...",
  "loadingNode": "Chargement du noeud...",
  "loadingParameters": "Chargement des paramètres...",
  "loadingReport": "Chargement du rapport...",
  "loadingTemplates": "Chargement des templates...",
  "local": "local",
  "localHostMachine": "Local (machine hôte)",
  "localRoot": "Racine locale",
  "localScreen": "écran local",
  "localScreenReady": "Écran local prêt.",
  "location": "Emplacement",
  "logTitle": "📋 Journal {id} :\n{lines}",
  "loginAlreadyInProgress": "Connexion déjà en cours...",
  "loginCount": "{n} connexion(s)",
  "loginError": "Erreur de connexion : {error}",
  "loginSuccessful": "{title} réussi !",
  "loginTitle": "Connexion",
  "loginViaRelay": "Connexion via relay",
  "loginViaServer": "Connexion via serveur",
  "logout": "Déconnexion",
  "loopNotFound": "Boucle introuvable : {key}",
  "loopStartFailed": "Échec du démarrage de la boucle",
  "loopStarted": "Boucle démarrée : toutes les {interval}s — {prompt}\nClé : {key}",
  "loopStopped": "Boucle arrêtée : {key}",
  "manageSkillsMenu": "Gérer les skills...",
  "manualSchedule": "planification manuelle",
  "markDone": "Marquer terminé",
  "matchesFound": "{n} correspondance(s) trouvée(s) :",
  "maxBudget": "Budget max",
  "maxIterations": "Itérations max",
  "maxIterationsAgentLoop": "Itérations max (boucle agent)",
  "maxReschedules": "Replanifications max",
  "maxTotalTime": "Temps total max",
  "maxTurnTime": "Temps max par tour",
  "mcpRepository": "Dépôt MCP",
  "mcpServers": "Serveurs MCP",
  "mcpServersHeader": "**Serveurs MCP :**",
  "memories": "Mémoires",
  "memoriesDesc": "Voir les mémoires de l'agent",
  "memoriesFor": "Mémoires pour {agent}",
  "memoryAdded": "Mémoire ajoutée (id : {id}, agent : {agent})",
  "memoryDeleteConfirm": "Supprimer cette mémoire ?",
  "memoryDeleted": "Mémoire {id} supprimée.",
  "memoryIdNotFound": "Mémoire {id} introuvable.",
  "memoryNotFound": "Mémoire introuvable.",
  "memoryTextPlaceholder": "Texte mémoire...",
  "memoryUpdated": "Mémoire mise à jour.",
  "messageDeleted": "Message {index} supprimé",
  "messageSentTask": "Message envoyé à la tâche {task}",
  "messagesInBranch": "Messages dans {branch} : {count}",
  "messagesLoaded": "{n} message(s) chargé(s).",
  "minutesAgo": "il y a {n} min",
  "missingCredentialsJson": "JSON credentials manquant. Collez le contenu de .credentials.json",
  "missingItem": "{value} (manquant)",
  "modelOverride": "Override modèle",
  "modelUpdated": "Modèle mis à jour",
  "mountedInRelays": "monté dans les relays",
  "modified": "Modifié",
  "moreCount": "{n} de plus",
  "mostConnectedNodes": "Noeuds les plus connectés",
  "msgTargetUsage": "Usage : /msg {target} <message>",
  "msgUsage": "Usage : /msg [@agent|@t_taskid] <message> (par défaut agent sélectionné)",
  "multipleRelaysAvailable": "Plusieurs relays disponibles. Précisez-en un :\n{relays}",
  "mute": "Muet",
  "muteAudioTitle": "Couper l'audio",
  "name": "Nom",
  "nameRequired": "Le nom est requis",
  "needTwoBranchesToCompare": "Il faut au moins 2 branches à comparer.",
  "neighbors": "Voisins",
  "newChat": "+ Nouveau",
  "newConv": "Nouvelle conversation.",
  "newConversation": "Nouvelle conversation",
  "newFile": "Nouveau fichier",
  "newFilePrompt": "Nom du nouveau fichier :",
  "newFolder": "Nouveau dossier",
  "newFolderPrompt": "Nom du nouveau dossier :",
  "newParamTitle": "Nouveau {type}",
  "newResourceTitle": "Nouveau {type}",
  "no": "Non",
  "noAccountLinkFound": "Aucun lien {provider} trouvé.",
  "noActiveDockerContainers": "Aucun conteneur Docker actif.",
  "noActiveLoops": "Aucune boucle active",
  "noActivePlans": "Aucun plan actif.",
  "noActivePortForwards": "Aucun port forward actif.",
  "noActiveTerminal": "Aucun terminal actif à fermer.",
  "noAgentOption": "Aucun agent",
  "noAgentSelected": "Aucun agent sélectionné.",
  "noAgentSelectedSelectFirst": "Aucun agent sélectionné. Sélectionnez d’abord un agent.",
  "noAgents": "Aucun agent dans cette conversation.",
  "noAgentsAvailable": "Aucun agent disponible.",
  "noAgentsDefinedUsage": "Aucun agent défini. Utilisez /agent create pour en ajouter un.",
  "noAudioTabOpen": "Aucun onglet audio ouvert.",
  "noBranchesToDelete": "Aucune branche à supprimer (seule la branche courante existe).",
  "noChanges": "Aucun changement.",
  "noCommitsFound": "Aucun commit trouvé.",
  "noConfigurableParametersForServiceType": "Aucun paramètre configurable pour ce type de service.",
  "noConnectedRelay": "Aucun relay connecté.",
  "noConnectionsFound": "Aucune connexion trouvée.",
  "noConnectionsFoundFor": "Aucune connexion trouvée pour : {query}",
  "noContainersToKill": "Aucun conteneur à tuer.",
  "noContext": "Aucun contexte disponible.",
  "noConv": "Aucune conversation active.",
  "noConversationsHint": "Aucune conversation. Cliquez sur + Nouveau pour démarrer.",
  "noCredentialsInPool": "Aucun identifiant dans le pool.",
  "noCredentialsSaved": "Aucun credential enregistré.",
  "noDeployedFlows": "Aucun flow déployé.",
  "noDiaryEntries": "Aucune entrée de journal.",
  "noDiaryEntriesFor": "Aucune entrée de journal pour {agent}.",
  "noDynamicToolsInstalled": "Aucun outil dynamique installé. Utilisez /install pour en ajouter un.",
  "noFilesInConversation": "Aucun fichier dans cette conversation.",
  "noFilesystemServices": "Aucun service filesystem disponible",
  "noFlowTemplates": "Aucun template de flow.",
  "noForwardFor": "Aucun forward pour {relay}:{port} — ajoutez-le d’abord.",
  "noImageServicesDeployed": "Aucun service de génération d’image déployé.",
  "noInsightsExtracted": "Aucun insight extrait.",
  "noLinkedAccounts": "Aucun compte lié",
  "noLogEntriesFor": "Aucune entrée de journal pour {id}",
  "noMatches": "Aucun résultat",
  "noMatchesFound": "Aucune correspondance trouvée.",
  "noMcpServers": "Aucun serveur MCP défini",
  "noMemoriesFound": "Aucune mémoire trouvée.",
  "noMemoriesFoundTryDifferent": "Aucune mémoire trouvée. Essayez une autre requête.",
  "noMemoriesStored": "Aucune mémoire stockée.",
  "noOtherBranches": "Aucune autre branche.",
  "noPrompts": "Aucun prompt",
  "noReasonGiven": "aucune raison donnée",
  "noReasonParen": "(aucune raison)",
  "noRelayConnected": "Aucun relay connecté.",
  "noRelayUseCredentials": "Aucun relay connecté. Utilisez \"Set credentials\" à la place.",
  "noRelaysAvailable": "Aucun relay disponible.",
  "noRelaysAvailableConnectFirst": "Aucun relay disponible. Connectez d'abord un relay (PawCode ou extension VS Code).",
  "noRelaysLinked": "Aucun relay lié",
  "noRemoteFilesystemsAvailable": "Aucun service filesystem disponible à lier",
  "noRemoteFilesystemsLinked": "Aucun filesystem lié",
  "noReportAvailable": "Aucun rapport disponible.",
  "noResourcesDefinedUsage": "Aucune ressource définie. Utilisez /agent create, /add-skill, etc.",
  "noResourcesHint": "Aucune ressource. Utilisez [+] ou /agent create, /task create",
  "noResponsesToCopy": "Aucune réponse à copier.",
  "noScheduleToCancel": "Aucune planification à annuler.",
  "noScheduledRechecks": "Aucune revérification planifiée pour cette conversation.",
  "noScheduledTasks": "Aucune tâche planifiée.",
  "noServiceTypesAvailable": "Aucun type de service disponible.",
  "noServicesInstalled": "Aucun service installé",
  "noServicesInstalledUsage": "Aucun service installé. Utilisez /service install <type> <name> [key=val,...] pour en ajouter un.",
  "noSkills": "Aucune skill.",
  "noSkillsAvailableCreateHint": "Aucun skill disponible. Créez des skills via /skill ou manage_resource.",
  "noSkillsCreateFirst": "Aucun skill défini. Créez-en un avec /add-skill.",
  "noSkillsDefined": "Aucun skill défini",
  "noSkillsUsage": "Aucun skill défini. Utilisez /add-skill <nom> <prompt>",
  "noSummarizerEffective": "Aucun summarizer lié",
  "noSummarizerServices": "Aucun service summarizer disponible",
  "noTaskDefinitions": "Aucune définition de tâche",
  "noTaskDefinitionsOrRunning": "Aucune définition de tâche ni tâche en cours.",
  "noTaskInstancesForDefinition": "Aucune instance de tâche pour la définition \"{name}\"",
  "noTasksRunning": "Aucune tâche en cours",
  "noThemes": "Aucun thème",
  "noTokenUsageRecorded": "Aucune utilisation de tokens enregistrée pour le moment.",
  "noToolNameFound": "Nom d’outil introuvable",
  "noTriplesFound": "Aucun triple trouvé.",
  "noUsageDataFound": "Aucune donnée d’utilisation trouvée.",
  "noVideoServicesDeployed": "Aucun service de génération vidéo déployé.",
  "noVoices": "Aucun clone vocal. Utilisez clone_voice pour en créer un.",
  "none": "Aucun",
  "noneSelected": "aucun sélectionné",
  "notSet": "Non défini",
  "object": "Objet",
  "ok": "OK",
  "onlyResponsesAvailable": "Seulement {n} réponses disponibles.",
  "open": "Ouvrir",
  "openingCCInteractiveTerminal": "Ouverture du tmux Claude Code interactive pour {agent}...",
  "openingTerminalOn": "Ouverture du terminal sur {relay}{mode}...",
  "optionalDescription": "Description optionnelle",
  "overdue": "en retard",
  "overrideConversationDefaultsFor": "Override des défauts conversation pour @{agent}",
  "pageTitle": "PawFlow Agent Chat",
  "parameters": "Paramètres",
  "parametersMustBeValidJson": "Les paramètres doivent être un JSON valide",
  "parseErrorHelpCall": "Erreur de parsing : {error}\nTapez /help call <toolname> pour les paramètres.",
  "pasteCredentialsJson": "Collez le contenu de .credentials.json ici...",
  "pasteFailed": "Échec du collage : {error}",
  "pasteHere": "Coller ici ({n})",
  "pause": "Pause",
  "pendingAttachmentsCleared": "Pièces jointes en attente effacées.",
  "permissionApproveEdits": "Approuver les modifications",
  "permissionAuto": "Auto",
  "permissionDefault": "Défaut",
  "permissionModeTitle": "Mode d'autorisation des outils",
  "permissionReadOnly": "Lecture seule",
  "placeholder": "Écrivez un message... (Entrée pour envoyer, Maj+Entrée pour retour à la ligne)",
  "placeholderDisabled": "Créez d'abord une conversation (cliquez sur + Nouveau)",
  "plan": "plan",
  "planApproved": "Plan approuvé",
  "planAssignedTo": "Plan assigné à {agent}{steps}",
  "planCancelled": "Plan annulé",
  "planCreated": "Plan créé : {title}",
  "planDeleted": "Plan supprimé",
  "planStepsDone": "{done}/{total} terminées",
  "planTitle": "Plan",
  "planTitleAndStepRequired": "Le titre et au moins une étape sont requis.",
  "planTitlePlaceholder": "Titre du plan",
  "plans": "Plans",
  "plansDesc": "Voir les plans actifs",
  "plansHeader": "**Plans :**",
  "platform": "Plateforme",
  "portForwardAdded": "Port forward ajouté : {relay}:{port} → {url}",
  "portForwardOpenUsage": "Usage : /port-forward open <relay_id> <port>",
  "portForwardRemoveUsage": "Usage : /port-forward remove <relay_id> <ext_port>",
  "portForwardRemoved": "Port forward supprimé.",
  "portForwardUsage": "Usage : /port-forward <add|remove|list|open> [relay_id] [port] [ext_port]",
  "portPrompt": "Port à forward depuis {relay} :",
  "predicate": "Prédicat",
  "preview": "Aperçu",
  "previewReferenceAudio": "Préécouter l'audio de référence",
  "priority": "Priorité",
  "primaryAgent": "Agent principal",
  "processExited": "Processus terminé",
  "projectGraph": "Graphe projet",
  "projectGraphBuildFailed": "Échec du build : {error}",
  "projectGraphDesc": "Construire / parcourir le graphe du code",
  "projectGraphEmptyBuildHint": "Aucun graphe projet construit. Cliquez sur Build pour indexer le code.",
  "projectGraphErrorStatus": "Erreur — {error}",
  "projectGraphMissingUseBuild": "Aucun graphe projet construit. Utilisez /graph build d’abord.",
  "projectGraphNodeLoadFailed": "Échec du chargement du noeud : {error}",
  "projectGraphQueryFailed": "Échec de la requête : {error}",
  "projectGraphQueryHeader": "Requête graphe projet « {question} » ({n} liens) :",
  "projectGraphReportFailed": "Échec du rapport : {error}",
  "projectGraphReportLoadFailed": "Échec du chargement du rapport : {error}",
  "projectGraphSkipped": "Ignoré — {reason}",
  "promptLibraryTitle": "Bibliothèque de prompts",
  "promptPaste": "Insérer",
  "promptsListFailed": "Échec du listing des prompts : {error}",
  "promptsRepository": "Dépôt Prompts",
  "promote": "Promouvoir",
  "providerCredentials": "Credentials {provider}",
  "providerVoiceFreed": "provider voice_id libéré",
  "ready": "Prêt",
  "rebuildFailed": "Échec de reconstruction : {error}",
  "rebuilding": "Reconstruction du contexte depuis la conversation complète...",
  "rebuildingAgent": "Reconstruction ({agent})",
  "rebuildingClean": "Contexte = conversation complète (sans compaction)...",
  "rebuildingShort": "Reconstruction",
  "rebuilt": "Contexte reconstruit : {action} ({before} → {after} messages, ~{tokens} tokens)",
  "rebuiltClean": "Contexte mis à la conversation complète : {messages} messages, ~{tokens} tokens.",
  "recheck": "revérification",
  "reconnecting": "Reconnexion...",
  "refAudioPurged": "audio de référence purgé",
  "refresh": "Rafraîchir",
  "refreshDesc": "Recharger la conversation",
  "refreshFromDisk": "Recharger depuis le disque",
  "refreshing": "Rafraîchissement...",
  "rejectStep": "Rejeter l’étape",
  "rejectionReasonPrompt": "Raison du rejet :",
  "relayBrowserAuthorizeHint": "Une fenêtre de navigateur devrait s’ouvrir sur la machine du relay. Autorisez là-bas.",
  "relayId": "ID du relay",
  "relaySupportsBothModes": "Le relay {relay} supporte les deux modes.",
  "relayTitle": "Relay : {id}",
  "relays": "Relays",
  "reloadFromDisk": "Recharger depuis le disque",
  "remoteFilesystems": "Filesystem",
  "remove": "Retirer",
  "removeFromConversation": "Retirer de la conversation",
  "removeLastAgentConfirm": "Retirer le dernier agent de cette conversation ?",
  "removeVerifier": "Retirer le vérificateur",
  "removedList": "Retirés : {items}",
  "rename": "Renommer",
  "renameFailed": "Échec du renommage : {error}",
  "renameVoiceClone": "Renommer le clone vocal",
  "renameVoicePrompt": "Renommer le clone vocal \"{name}\" en :",
  "renamedTo": "Renommé en : {title}",
  "readMessage": "Lire ce message",
  "reply": "Répondre",
  "reset": "Réinitialiser",
  "resetToPending": "Remettre en attente",
  "resourceActivated": "{type} \"{name}\" activé dans cette conversation.",
  "resourceCopiedToScope": "{type} '{name}' copié vers {scope}.",
  "resourceCreated": "{type} '{name}' créé.",
  "resourceDeleteConfirm": "Supprimer {type} '{name}' de {scope} ?",
  "resourceDeleted": "{type} '{name}' supprimé.",
  "resourceDeactivated": "{type} \"{name}\" désactivé.",
  "resourceUpdated": "{type} '{name}' mis à jour.",
  "resources": "Ressources",
  "restart": "Redémarrer",
  "restartAudioTitle": "Redémarrer le flux audio",
  "restartCliTitle": "Redémarrer {cli} (tuer la session chaude)",
  "restartFromHere": "Redémarrer depuis ici",
  "restartFromHereConfirm": "Redémarrer la conversation depuis ce message ? Les messages suivants et tous les contextes agents seront supprimés.",
  "restartEmpty": "Contexte vidé — redémarrage à zéro (system prompt uniquement).",
  "restartFrom": "Contexte redémarré — {n} derniers messages conservés.",
  "resultsCount": "{n} résultat(s)",
  "resume": "Reprendre",
  "resumeUsage": "Usage : /resume @<agent|ALL>",
  "resumed": "Conversation résumée ({n} messages → {len} caractères). Le prochain message repart du résumé.",
  "resuming": "Résumé de la conversation en ~{n} tokens...",
  "rewindFilesRiskWarning": "Risqué : tente de restaurer les fichiers modifiés par des agents sur le relay. Peut échouer si les fichiers ont été modifiés ailleurs.",
  "risk.high": "Élevé",
  "risk.low": "Faible",
  "risk.medium": "Moyen",
  "rollback": "Rollback",
  "rollbackConversation": "Rollback de la conversation",
  "rolledBackTo": "Rollback vers {hash} effectué",
  "rollingBackTo": "Rollback vers {hash}...",
  "runInBackground": "Exécuter en arrière-plan",
  "runningInBackground": "Exécution en arrière-plan",
  "saveCredentials": "Enregistrer les identifiants",
  "saved": "Enregistré !",
  "saving": "Enregistrement...",
  "scheduleAdded": "Planification ajoutée : {date}",
  "scheduleCancelled": "Planification annulée.",
  "scheduledRechecksHeader": "Revérifications planifiées :",
  "scheduledTasks": "Tâches planifiées",
  "scheduledTasksDesc": "Voir les vérifications planifiées",
  "scope": "Scope",
  "scrollBottomTitle": "Aller en bas",
  "scrollTopTitle": "Aller en haut",
  "searchNodesEdges": "Rechercher des nœuds/arêtes...",
  "searchPlaceholder": "Rechercher...",
  "searchResults": "Résultats de recherche",
  "searching": "Recherche...",
  "secret": "secret",
  "secretAddUsage": "Usage: /add-secret &lt;nom&gt; &lt;valeur&gt;",
  "secretAdded": "Secret \"{name}\" stocké de manière sécurisée. Utilisez ${{ref}} dans les flux, ou get_secret(\"{short}\") dans les scripts.",
  "secretListEmpty": "Aucun secret stocké.",
  "secretListTitle": "Vos secrets :",
  "secrets": "Secrets",
  "select": "Sélectionner",
  "selectAgent": "Sélectionner un agent",
  "selectAgentConfigure": "Sélectionnez un agent à configurer",
  "selectAgentDetails": "Sélectionnez un agent pour voir les détails",
  "selectAgentOverride": "Sélectionnez un agent pour configurer les overrides.",
  "selectDefinitionAddAgents": "Sélectionnez une définition pour ajouter des agents",
  "selectDefinitionFirst": "Sélectionnez d’abord une définition.",
  "selectDefinitionOption": "Sélectionner une définition...",
  "selectVerifierAgent": "Sélectionner l’agent vérificateur",
  "selectedFor": "sélectionné pour : {agents}",
  "send": "Envoyer",
  "sending": "Envoi...",
  "serverOwner": "serveur",
  "serviceCategory.3d": "3D",
  "serviceCategory.ai": "IA et LLM",
  "serviceCategory.audio": "Audio",
  "serviceCategory.auth": "Authentification",
  "serviceCategory.automation": "Automatisation",
  "serviceCategory.cache": "Cache",
  "serviceCategory.data": "Données",
  "serviceCategory.filesystem": "Systèmes de fichiers",
  "serviceCategory.image": "Image",
  "serviceCategory.messaging": "Messagerie",
  "serviceCategory.network": "Réseau",
  "serviceCategory.other": "Autres",
  "serviceCategory.security": "Sécurité",
  "serviceCategory.system": "Système",
  "serviceCategory.try-on": "Essayage virtuel",
  "serviceCategory.upscale": "Upscale",
  "serviceCategory.video": "Vidéo",
  "serviceCategory.voice": "Voix",
  "serviceDeleted": "Service '{id}' supprimé.",
  "serviceDisabled": "Service '{id}' désactivé.",
  "serviceEnabled": "Service '{id}' activé.",
  "serviceInstalled": "Service '{id}' installé ({type}).",
  "serviceInstalledSuccessfully": "Service '{service}' installé avec succès.",
  "serviceNameRequired": "Le nom du service est requis",
  "serviceUninstalled": "Service '{id}' désinstallé.",
  "serviceUpdated": "Service '{service}' mis à jour.",
  "services": "Services",
  "sessionExpired": "Session expirée. Veuillez vous reconnecter.",
  "setDefaultRelay": "Définir comme relay par défaut",
  "setPrimaryAgent": "Définir comme agent principal",
  "setVerifier": "Définir le vérificateur...",
  "setVerifierTitle": "Définir le vérificateur ({target})",
  "setnameUsage": "Usage : /setname @<agent> [surnom]  (omettre le surnom pour réinitialiser)",
  "settingDefaultRelay": "Définition du relay par défaut sur {relay}...",
  "showHide": "Afficher/masquer",
  "skillAddTitle": "Ajouter une skill",
  "skillAssignTitle": "Assigner le skill “{skill}” à un agent",
  "skillImportBranch": "branche",
  "skillCreateMode": "Créer",
  "skillImportButton": "Importer la skill",
  "skillImportFoundPaths": "{n} dossier(s) de skill importable(s) trouvé(s)",
  "skillImportImported": "Skill '{name}' importée.",
  "skillImportMode": "Importer",
  "skillImportNoPaths": "Aucun fichier SKILL.md trouvé sous ce chemin.",
  "skillImportPathPlaceholder": "Sous-chemin (optionnel)",
  "skillImportRepoPlaceholder": "owner/repo ou https://github.com/owner/repo",
  "skillImportRepoRequired": "Le dépôt est requis.",
  "skillImportResolve": "Résoudre",
  "skillImportResolveFirst": "Résoudre un dépôt pour lister les dossiers de skill importables.",
  "skillImportReview": "Review",
  "skillImportSelectedPathRequired": "Sélectionne d’abord un dossier de skill.",
  "skillImportSelectedRef": "sélectionné",
  "skillImportSourceHelp": "Importer un dossier Agent Skill GitHub contenant SKILL.md. Équivalent slash command : /skill import <ref>.",
  "skillImportTag": "tag",
  "skillLoadFailed": "Échec du chargement du skill : {error}",
  "skillNameInvalid": "Le nom de skill doit contenir seulement des lettres minuscules, chiffres et tirets simples, faire 64 caractères au maximum, et ne pas contenir \"anthropic\" ni \"claude\".",
  "skillReviewFinalWord": "Tu as le dernier mot. Relis les findings ci-dessus puis décide.",
  "skillReviewProceedAnyway": "Continuer quand même",
  "skillReviewRequiresConfirmation": "La review de skill demande une confirmation.",
  "skillReviewRisk": "Risque : {risk}",
  "skillReviewTitle": "Review de skill",
  "skills": "Skills",
  "skillsAssignedTo": "Skills assignées à **{agent}** :",
  "skillsHeader": "Skills :",
  "skillsRepository": "Dépôt Skills",
  "skip": "Ignorer",
  "startLogin": "Démarrer la connexion",
  "starting": "Démarrage...",
  "startingAudio": "Démarrage audio sur {relay}...",
  "startingClaudeLogin": "Démarrage de la connexion Claude Code pour {service}... (conteneur en démarrage, veuillez patienter)",
  "startingCodeServer": "Démarrage de code-server sur {relay}{mode}...",
  "startingContainer": "Démarrage du conteneur...",
  "startingDesktop": "Démarrage de {target} sur {relay}...",
  "startingRelayLogin": "Démarrage de la connexion {label} via relay — autorisez dans le navigateur...",
  "status": "Statut",
  "stepApproved": "Étape {n} approuvée",
  "stepLabel": "étape {n}",
  "stepLabelTitle": "Étape {n}",
  "stepRangeOptional": "Plage d’étapes (optionnel)",
  "stepRangePlaceholder": "ex. 1-3, remaining, ou vide pour tout",
  "stepRejected": "Étape {n} rejetée",
  "stepsOnePerLine": "Étapes (une par ligne)",
  "stepsPlaceholder": "Description étape 1\nDescription étape 2\nDescription étape 3",
  "stepsSuffix": " (étapes {steps})",
  "stop": "Stop",
  "stopTitle": "Interrompre (forcer la réponse)",
  "stoppingDesktop": "Arrêt du desktop sur {relay}...",
  "stoppingTask": "Arrêt de la tâche {task} ({agent})...",
  "storedAs": "Stocké comme : {filename}\nURL : {url}",
  "streaming": "Réception...",
  "streamingFromRelay": "Streaming depuis le relay",
  "subAgentDone": "[{agent}] terminé ({dur}s, {tok} tokens)",
  "subAgentStarted": "Sous-agent [{agent}] démarré",
  "subject": "Sujet",
  "summarizer": "Summarizer",
  "summarizing": "Résumé",
  "summarizingAgent": "Résumé ({agent})",
  "switchBranch": "Changer de branche",
  "switchedToBranch": "Branche activée : {name}",
  "switchingToForkedConversation": "Bascule vers la conversation forkée...",
  "tagNamePrompt": "Nom du tag :",
  "taggedConversation": "Tag ajouté : {name}",
  "tags": "Tags",
  "taskActionDone": "Tâche {id} {action}.",
  "taskActionFor": "Tâche {action} pour {target}.",
  "taskApprovedBy": "Tâche pour {agent} approuvée par {verifier}{reason}",
  "taskAssigned": "Tâche assignée.",
  "taskAssignedTo": "Tâche assignée à {agent}{verifier} : {task}",
  "taskBudgetLimit": "budget : ${budget} (utilisé : ${used})",
  "taskCompleteFor": "Tâche terminée ({agent}) : {result}",
  "taskCount": "{count} tâches",
  "taskDefLabel": "déf. : {name}",
  "taskDefinitionCreated": "Définition de tâche '{name}' créée.",
  "taskDefinitionDeleted": "Définition de tâche '{name}' supprimée.",
  "taskDetails": "Tâche : {id}\nAgent : {agent}\nStatut : {status}\nItérations : {iterations}/{max}\nDéfinition : {definition}\nPrompt : {prompt}",
  "taskInstanceDeleted": "Instance de tâche '{name}' supprimée.",
  "taskInstancesTitle": "📜 Instances de \"{name}\" :\n{lines}",
  "taskIterLabel": "itération {iter}",
  "taskLastLabel": "Dernier résultat : {result}",
  "taskLibraryHeader": "Bibliothèque :",
  "taskLimitsLabel": "Limites : {limits}",
  "taskLimitsUpdated": "Limites de tâche mises à jour : {changes}",
  "taskLogTitle": "📋 Journal tâche {id} :\n{lines}",
  "taskNotFound": "Tâche introuvable : {id}",
  "taskRejectedBy": "Tâche pour {agent} rejetée par {verifier}{reason}",
  "taskRescheduleLimit": "replanifications : {count}/{max}",
  "taskRunningHeader": "En cours :",
  "taskTotalLimit": "total : {seconds}s",
  "taskTurnLimit": "tour : {seconds}s",
  "taskUpdatedFields": "Tâche mise à jour : {fields}",
  "taskVerifierLabel": "vérificateur : {verifier}",
  "taskVerifierSuffix": " (vérificateur : {verifier})",
  "tasks": "Tâches",
  "tasksRepository": "Dépôt Tâches",
  "technicalDetailsEventPlural": "événements",
  "technicalDetailsEventSingular": "événement",
  "technicalDetailsSummary": "Détails techniques · {count} {eventLabel}",
  "template": "Template",
  "templatesLoadFailed": "Erreur de chargement des templates : {error}",
  "terminal": "Terminal",
  "terminalClosed": "Terminal fermé.",
  "terminalDesc": "Ouvrir un terminal interactif sur le relay",
  "terminalMissingToken": "Attention : le terminal est ouvert mais le serveur n'a pas retourné de jeton de capacité",
  "terminalNoRelayUsage": "Aucun relay connecté. Usage : /terminal <nom_relay>",
  "terminalTabTitle": "Terminal {n}",
  "textPastedFromClipboard": "Texte collé depuis le presse-papiers.",
  "themeApplyFailed": "Échec de l’application du thème : {error}",
  "themeCreated": "Thème créé.",
  "themeDeleted": "Thème supprimé.",
  "themeLoadFailed": "Échec du chargement du thème : {error}",
  "themesRepository": "Dépôt Thèmes",
  "thinking": "Réflexion",
  "thinkingRound": "Réflexion (tour {round})",
  "thinkingWait": "Réflexion ({sec}s)",
  "thought": "Pensée",
  "thoughtDisabled": "Auto-conversation désactivée pour {agent}.",
  "thoughtEnabled": "Auto-conversation activée pour {agent} : {freq} (prochaine dans ~{delay}s)",
  "thoughtFiring": "[{agent}] réfléchit...",
  "thoughtFor": "Réflexion pendant {sec} s",
  "thoughtNoConv": "Aucune conversation active.",
  "thoughtScheduled": "[{agent}] prochain message auto dans ~{delay}s",
  "thoughtStatus": "Auto-conversation pour {agent} : activée — {freq}, prochaine dans ~{delay}s",
  "thoughtStatusOff": "Auto-conversation pour {agent} : désactivée",
  "thoughtTriggered": "Auto-conversation déclenchée pour {agent}.",
  "title": "Titre",
  "titleOptional": "Titre (optionnel)",
  "tokenInOut": "{in} en entrée / {out} en sortie",
  "tokenInOutCalls": "{in} en entrée / {out} en sortie ({calls} appels)",
  "tokenInOutCost": "{in} en entrée / {out} en sortie — ${cost}",
  "tokenUsageHeader": "Utilisation des tokens :",
  "tool": "outil",
  "toolCreated": "Outil '{name}' créé.",
  "toolInstalled": "Outil **{tool}** installé : {description}",
  "toolNoArguments": "Aucun argument",
  "toolNotFound": "Outil introuvable : {tool}",
  "toolNotFoundAvailable": "Outil \"{tool}\" introuvable. Outils disponibles :",
  "toolResult": "✅ {tool} : {result}",
  "toolUninstalled": "Outil '{tool}' désinstallé.",
  "tool_approval.allow_once": "Autoriser une fois",
  "tool_approval.allow_session": "Autoriser pour la session",
  "tool_approval.always_allow": "Toujours autoriser",
  "tool_approval.deny": "Refuser",
  "tool_approval.title": "Approbation d'outil requise",
  "tools": "Outils",
  "toolsCommaSeparated": "Outils (séparés par virgule)",
  "toolsMcp": "Tools / MCP",
  "toolsMcpAvailability": "Disponibilité Tools / MCP",
  "toolsMcpAvailabilityUpdated": "Disponibilité Tools / MCP mise à jour.",
  "toolsMcpDesc": "Disponibilité des outils de la conversation",
  "toolsMcpOverrideFor": "Override Tools / MCP pour @{agent}",
  "toolsMcpOverrideMenu": "Override Tools / MCP...",
  "toolsRepository": "Dépôt Tools",
  "agentHooksRepository": "Dépôt Agent Hooks",
  "agentHooksUpdated": "Agent hooks mis à jour.",
  "noAgentHooks": "Aucun hook agent défini",
  "totalTime": "Temps total",
  "totalTokenInOut": "Total : {in} en entrée / {out} en sortie",
  "triples": "Triples",
  "ttl1h": "1 heure",
  "ttl24h": "24 heures",
  "ttl6h": "6 heures",
  "ttl7d": "7 jours",
  "ttlLabel": "Expiration",
  "ttlNone": "Illimité",
  "turnTime": "Temps par tour",
  "type": "Type",
  "unknown": "(inconnu)",
  "unknownAccount": "(inconnu)",
  "unknownCommandHelp": "Commande inconnue : {command}. Tapez /help pour voir les commandes disponibles.",
  "unknownError": "Erreur inconnue",
  "unknownRelaySubcommand": "Sous-commande /relay inconnue : {sub}. Utilisez : status, list, link, unlink, default, local",
  "unlink": "Délier",
  "unlinkingRelay": "Déliaison du relay {relay}...",
  "unmapped": "non mappé",
  "unsupportedImportFormat": "Format non supporté. Utilisez .zip (PawFlow) ou .jsonl (Claude Code)",
  "upload": "Téléverser",
  "uploadFailed": "Échec de l’upload : {error}",
  "uploadFailedFor": "Échec de l’upload pour {file} : {error}",
  "uploading": "Upload...",
  "uploadingFile": "Upload de {file}…",
  "usage": "Usage",
  "usageBatch": "Usage : /batch <instruction> [--files <glob>]",
  "usageDeleteConversation": "Usage : /delete <conversation_id>",
  "usageDeleteMessage": "Usage : /delete-msg <index>",
  "usageDeprecatedUseCost": "/usage est déprécié. Utilisez plutôt /cost <agent|ALL>.",
  "usageGraph": "Usage : /graph [panel | build | report | query <question>]",
  "usageGraphQuery": "Usage : /graph query <question>",
  "usageLine": "Usage : {usage}",
  "usageLoop": "Usage : /loop <interval> <prompt>",
  "usageLoopInterval": "Usage : /loop <interval> <prompt>\nIntervalle : 5m, 30s, 2h, 2-3/h, 1/30s, 6/1m (min 5s)",
  "usageLoopStop": "Usage : /loop stop <key>",
  "usagePlanSubcommand": "Usage : /plan {subcommand} <plan_id>",
  "usageRename": "Usage : /rename <nouveau titre>",
  "usageRun": "Usage : /run <command>",
  "usageSearch": "Usage : /search <query>",
  "useGlobalTheme": "Utiliser le thème global",
  "user": "Utilisateur",
  "userTotalAllConversations": "Total utilisateur (toutes conversations) :",
  "usingTool": "Utilisation de {tool}...",
  "valid": "valide",
  "validFrom": "Valide depuis",
  "value": "Valeur",
  "variable": "variable",
  "variableAddUsage": "Usage: /add-variable &lt;nom&gt; &lt;valeur&gt;",
  "variableAdded": "Variable \"{name}\" stockée. Utilisez ${{ref}} dans les flux, ou get_variable(\"{short}\") dans les scripts.",
  "variableListEmpty": "Aucune variable stockée.",
  "variableListTitle": "Vos variables :",
  "variables": "Variables",
  "variablesKeyValue": "Variables (clé=valeur)",
  "verifierRemovedFor": "Vérificateur retiré pour {target}",
  "verifierSetFor": "Vérificateur défini sur {verifier} pour {target}",
  "videoServicePreferenceClearedFor": "Préférence de service vidéo effacée pour {agent}.",
  "videoServiceSetFor": "Service vidéo \"{service}\" défini pour {target}.",
  "videoServicesAvailable": "Services vidéo disponibles :",
  "view": "Voir",
  "viewConfigMenu": "Voir la config...",
  "viewDefinitionMenu": "Voir la définition...",
  "viewDetails": "Voir les détails",
  "viewLogMenu": "Voir le journal",
  "viewNode": "Voir le noeud",
  "viewServiceTitle": "Voir le service : ",
  "viewWithEllipsis": "Voir...",
  "vmKillUsage": "Usage : /vm kill <container_id ou nom>",
  "vmListHint": "Utilisez `/vm kill <id>` pour arrêter un conteneur.",
  "vmUsage": "Usage : /vm <list|kill|killall> [container_id]\n  /vm list              — Lister tous les conteneurs Docker PawFlow\n  /vm kill <id>         — Tuer un conteneur spécifique\n  /vm killall           — Tuer tous les conteneurs PawFlow",
  "voiceDeleted": "Voix \"{name}\" supprimée{details}",
  "voiceNameUnchanged": "Nom de voix inchangé.",
  "voiceRenamed": "Voix renommée : \"{old}\" → \"{name}\".",
  "voicesRepository": "Dépôt Voix",
  "vsCode": "VS Code",
  "vsCodeDesc": "Ouvrir l'éditeur code-server sur le relay",
  "vsCodeTabTitle": "VS Code ({relay})",
  "waitingAuthorization": "En attente d’autorisation...",
  "waitingForAuthorization": "En attente d’autorisation...",
  "watchUnavailableWeb": "/watch n’est pas disponible dans l’UI web. Utilisez le CLI pour surveiller les fichiers.",
  "welcome": "Bienvenue ! Écrivez un message pour commencer.",
  "working": "En cours",
  "yes": "Oui",
  "yourServicesHeader": "**Vos services :**",
  "yourSkillsHeader": "**Vos skills :**",
  "zipError": "Erreur zip : {error}",
  "zipping": "Compression...",
  "capabilities": "Capacités",
  "force": "Forcer",
  "inspect": "Inspecter",
  "installing": "Installation...",
  "noObjects": "Aucun objet.",
  "noPfpPackagesInstalled": "Aucun package installé.",
  "noPfpRegistries": "Aucune registry configurée.",
  "none": "Aucun",
  "objects": "Objets",
  "optionalSha256": "SHA-256 optionnel",
  "pfpAllowedServices": "Services autorisés",
  "pfpAllowedTools": "Outils autorisés",
  "pfpBlockingDependents": "Dépendants bloquants",
  "pfpDependencies": "Dépendances",
  "pfpFilterAdd": "Ajouts",
  "pfpFilterAll": "Tout",
  "pfpFilterRemove": "Retraits",
  "pfpFilterUnchanged": "Identiques",
  "pfpFilterUpdate": "Mises à jour",
  "pfpInstallComplete": "Package {package} installé.",
  "pfpInstallPackage": "Installer un package",
  "pfpNotSelected": "non sélectionné",
  "pfpPackages": "Packages",
  "pfpPathOrRef": "Chemin ou référence registry du package",
  "pfpPathRequired": "Le chemin ou la référence registry du package est requis.",
  "pfpProvides": "Fournit",
  "pfpRegistries": "Registries",
  "pfpRegistryUntrustedWarning": "Registry non marquée comme trusted. Inspectez la provenance et épinglez le SHA avant installation.",
  "pfpRegistrySearch": "Recherche registry",
  "pfpRegistrySearchPlaceholder": "Rechercher des packages...",
  "pfpRuntimeObjects": "Objets runtime",
  "pfpSecretBindings": "Liaisons de secrets",
  "pfpSelected": "sélectionné",
  "pfpSecrets": "Secrets",
  "pfpUninstallBlockedBy": "Désinstallation bloquée par des packages dépendants : {packages}",
  "pfpUninstallComplete": "Package {package} désinstallé.",
  "pfpUninstallConfirm": "Désinstaller le package {package} du scope {scope} ?",
  "pfpUninstallHelp": "La désinstallation normale refuse de retirer les packages dont d’autres packages dépendent. Forcer le retire quand même.",
  "pfpTrustPolicyTrusted": "Registry approuvée par l’utilisateur",
  "pfpTrustPolicyUntrusted": "Registry non trusted",
  "pfpUpdateDiff": "Diff de mise à jour",
  "replace": "Remplacer",
  "registryNameOptional": "Nom (optionnel)",
  "registryUrl": "URL de registry",
  "registryUrlRequired": "L’URL de registry est requise.",
  "search": "Rechercher",
  "selectAtLeastOneObject": "Sélectionnez au moins un objet.",
  "developerKey": "Clé développeur",
  "sha256": "SHA-256",
  "sourceUrl": "URL source",
  "storedSecretKey": "Clé de secret stockée",
  "trusted": "Fiable",
  "trustPolicy": "Politique de confiance",
  "uninstall": "Désinstaller",
  "update": "Mettre à jour",
  "verified": "Vérifié"
}
