{
  "ai-chat-ui.show-settings": "Afficher les paramètres IA",
  "ai.executePlanWithCoder": "Exécuter le plan actuel avec Coder",
  "aiConfiguration:open": "Ouvrir la vue Configuration AI",
  "aiConfiguration:openTools": "Configuration des outils Open AI",
  "aiHistory:clear": "Historique de l'IA : Effacer l'historique",
  "aiHistory:open": "Ouvrir l'historique AI",
  "aiHistory:sortChronologically": "Historique de l'IA : trier par ordre chronologique",
  "aiHistory:sortReverseChronologically": "Historique de l'IA : trier par ordre chronologique inverse",
  "aiHistory:toggleCompact": "Historique de l'IA : basculer vers l'affichage compact",
  "aiHistory:toggleHideNewlines": "Historique de l'IA : arrêter d'interpréter les sauts de ligne",
  "aiHistory:toggleRaw": "Historique de l'IA : basculer vers l'affichage brut",
  "aiHistory:toggleRenderNewlines": "Historique de l'IA : interpréter les sauts de ligne",
  "debug.breakpoint.editCondition": "Modifier la condition...",
  "debug.breakpoint.removeSelected": "Supprimer les points d'arrêt sélectionnés",
  "debug.breakpoint.toggleEnabled": "Activer/désactiver les points d'arrêt",
  "notebook.cell.changeToCode": "Changer Cell en Code",
  "notebook.cell.changeToMarkdown": "Changer la cellule en Markdown",
  "notebook.cell.insertMarkdownCellAbove": "Insérer une cellule Markdown ci-dessus",
  "notebook.cell.insertMarkdownCellBelow": "Insérer une cellule Markdown ci-dessous",
  "terminal:new:profile": "Créer un nouveau terminal intégré à partir d'un profil",
  "terminal:profile:default": "Choisissez le profil de terminal par défaut.",
  "theia": {
    "ai": {
      "agents": {
        "capabilityOverrides": {
          "mdDescription": "Remplacements par l'utilisateur pour les fonctionnalités basées sur des modèles. Les clés sont des identifiants de fragment de fonctionnalité, les valeurs sont activées (true) ou désactivées (false).",
          "title": "Remplacements de fonctionnalités"
        },
        "completionNotification": {
          "mdDescription": "Comportement des notifications lorsque cet agent nécessite votre attention, c'est-à-dire lorsqu'il a terminé une tâche ou sollicite votre intervention.                     Si ce paramètre n'est pas défini, le paramètre de notification global par défaut sera utilisé.\n                    - `os-notification` : afficher les notifications du système d’exploitation/du système\n                    - `message` : afficher les notifications dans la barre d’état/la zone de messages\n                    - `blink` : faire clignoter ou mettre en surbrillance l’interface utilisateur\n                    - `off` : désactiver les notifications pour cet agent",
          "title": "Notification"
        },
        "enable": {
          "mdDescription": "Spécifie si l'agent doit être activé (vrai) ou désactivé (faux).",
          "title": "Activer l'agent"
        },
        "genericCapabilitySelections": {
          "agentDelegation": "ID d'agents sélectionnés pour la délégation",
          "functions": "ID de fonctions sélectionnées",
          "mcpFunctions": "ID de fonction MCP sélectionnés",
          "mdDescription": "Sélections de l'utilisateur pour des fonctionnalités génériques telles que les compétences, les fonctions et les outils MCP.",
          "promptFragments": "ID de fragments de prompt sélectionnés",
          "skills": "ID de compétences sélectionnées",
          "title": "Sélection des capacités génériques",
          "variables": "Noms de variables sélectionnés"
        },
        "languageModelRequirements": {
          "identifier": {
            "mdDescription": "Identifiant du modèle linguistique à utiliser."
          },
          "mdDescription": "Spécifie les modèles linguistiques utilisés pour cet agent.",
          "purpose": {
            "mdDescription": "Objectif pour lequel ce modèle linguistique est utilisé.",
            "title": "Objectif"
          },
          "title": "Exigences relatives au modèle linguistique"
        },
        "mdDescription": "Configurer les paramètres des agents, par exemple activer ou désactiver des agents spécifiques, configurer les invites et sélectionner les LLM.",
        "selectedVariants": {
          "mdDescription": "Spécifie les variantes d'invite actuellement sélectionnées pour cet agent.",
          "title": "Variantes sélectionnées"
        },
        "serverToolSelections": {
          "mdDescription": "Sélections utilisateur pour les outils serveur des fournisseurs, classées par fabricant de modèles. Chaque valeur contient les identifiants des outils serveur activés pour ce fabricant.",
          "title": "Sélection des outils serveur"
        },
        "showInChat": {
          "mdDescription": "Spécifie si l'agent doit être affiché dans l'interface utilisateur du chat (vrai) ou masqué (faux).",
          "title": "Afficher dans le chat"
        },
        "title": "Paramètres de l'agent"
      },
      "anthropic": {
        "apiKey": {
          "description": "Saisissez une clé API de votre compte Anthropic officiel. **Remarque :** en utilisant cette préférence, la clé API Anthropic sera stockée en texte clair sur la machine exécutant Theia. Utilisez la variable d'environnement `ANTHROPIC_API_KEY` pour définir la clé en toute sécurité."
        },
        "compaction": {
          "default": "Respectez le paramètre global de compaction côté serveur du chat.",
          "description": "Remplacer la compaction côté serveur native du fournisseur pour les modèles Anthropic. La valeur « default » suit le paramètre global de chat ({0}). Lorsqu’elle est effectivement activée, l’API Anthropic Beta Messages est utilisée afin que le fournisseur puisse résumer les anciens tours de conversation une fois que la conversation dépasse son seuil.",
          "disabled": "Ne demandez jamais de compactage côté serveur pour les modèles Anthropic.",
          "enabled": "Demandez toujours une compaction côté serveur pour les modèles Anthropic."
        },
        "compactionTokenThreshold": {
          "description": "Remplace le seuil global de tokens d'entrée pour la compaction côté serveur des modèles Anthropic. Si ce paramètre n'est pas défini, le paramètre global ou la valeur par défaut du fournisseur s'applique. S'il est défini, la valeur doit être d'au moins 50 000 tokens."
        },
        "customEndpoints": {
          "apiKey": {
            "title": "Soit la clé pour accéder à l'API fournie à l'URL donnée, soit « true » pour utiliser la clé API globale Anthropic."
          },
          "enableStreaming": {
            "title": "Indique si l'API de streaming doit être utilisée. `true` par défaut."
          },
          "id": {
            "title": "Identifiant unique utilisé dans l'interface utilisateur pour identifier le modèle personnalisé."
          },
          "maxRetries": {
            "title": "Nombre maximal de tentatives en cas d'échec d'une requête. 3 par défaut."
          },
          "mdDescription": "Intégrez des modèles personnalisés compatibles avec l'API Anthropic. Les attributs requis sont `model` et `url`.            \n            En option, vous pouvez            \n            - spécifier un `id` unique pour identifier le modèle personnalisé dans l'interface utilisateur. Si aucun n'est fourni, `model` sera utilisé comme `id`.            \n            - fournir une `apiKey` pour accéder à l'API servie à l'URL indiquée. Utilisez `true` pour indiquer l'utilisation de la clé API Anthropic globale.            \n            - spécifier `enableStreaming: false` pour indiquer que le streaming ne doit pas être utilisé.            \n            - spécifier `useCaching: false` pour indiquer que la mise en cache des invites ne doit pas être utilisée.            \n            - spécifier `maxRetries: <number>` pour indiquer le nombre maximal de tentatives en cas d'échec d'une requête. 3 par défaut.            \n            Les capacités de raisonnement et la limite maximale de tokens de sortie sont dérivées de la réponse `/v1/models` du point de terminaison.",
          "modelId": {
            "title": "ID du modèle"
          },
          "url": {
            "title": "Point de terminaison compatible avec l'API Anthropic où le modèle est hébergé."
          },
          "useCaching": {
            "title": "Indique si le modèle prend en charge la mise en cache des invites. « true » par défaut."
          }
        },
        "models": {
          "description": "Modèles Anthropic officiels à utiliser"
        }
      },
      "chat": {
        "agent": {
          "architect": "Architecte",
          "coder": "Codeur",
          "universal": "Universel"
        },
        "app-tester": {
          "description": "Cet agent teste l'interface utilisateur de votre application afin de vérifier les scénarios de test spécifiés par l'utilisateur grâce à l'automatisation du navigateur. Il peut automatiser les workflows de test et fournir des commentaires détaillés sur les fonctionnalités de l'application."
        },
        "applySuggestion": "Appliquer la suggestion",
        "bypassModelRequirement": {
          "description": "Contourner la vérification des exigences du modèle linguistique. Activez cette option si vous utilisez des agents externes (par exemple, Claude Code) qui ne nécessitent pas les modèles linguistiques Theia."
        },
        "category": "IA",
        "changeSetDefaultTitle": "Modifications suggérées",
        "changeSetFileDiffUriLabel": "Modifications apportées par l'IA : {0}",
        "chatAgentsVariable": {
          "description": "Renvoie la liste des agents de chat disponibles dans le système."
        },
        "chatSessionNamingAgent": {
          "description": "Agent permettant de générer des noms de sessions de chat",
          "vars": {
            "conversation": {
              "description": "Contenu de la conversation par chat."
            },
            "listOfSessionNames": {
              "description": "Liste des noms de sessions existantes."
            }
          }
        },
        "chatSessionSummaryAgent": {
          "description": "Agent permettant de générer des résumés de sessions de chat."
        },
        "clipboardSeparator": "presse-papiers",
        "confirmApplySuggestion": "Le fichier {0} a été modifié depuis la création de cette suggestion. Êtes-vous certain de vouloir appliquer la modification ?",
        "confirmRevertSuggestion": "Le fichier {0} a été modifié depuis la création de cette suggestion. Êtes-vous certain de vouloir annuler la modification ?",
        "couldNotFindMatchingLM": "Impossible de trouver un modèle linguistique correspondant. Veuillez vérifier votre configuration !",
        "couldNotFindReadyLMforAgent": "Impossible de trouver un modèle linguistique prêt à l'emploi pour l'{0} de l'agent. Veuillez vérifier votre configuration !",
        "customAgents": {
          "migratePrompt": {
            "message": "Vos agents personnalisés utilisent toujours l’ancien format `customAgents.yml`. Nous vous recommandons de les migrer vers le nouveau format par agent (`agents/<id>/agent.md`), que {0} utilisera désormais. Chaque agent dispose de son propre fichier à côté de votre fichier `customAgents.yml`, et l'original est conservé sous forme de sauvegarde dans le fichier `customAgents.yml.bak`."
          },
          "migrationResult": {
            "empty": "Migration de l'agent personnalisé : rien à migrer."
          },
          "rerunMigration": "Relancer la migration de l'agent personnalisé"
        },
        "defaultAgent": {
          "description": "Facultatif : <nom-agent> de l'agent de chat qui doit être invoqué, si aucun agent n'est explicitement mentionné avec @<nom-agent> dans la requête de l'utilisateur. Si aucun agent par défaut n'est configuré, les valeurs par défaut de Theia seront appliquées."
        },
        "defaultToolConfirmation": {
          "description": "Comportement de confirmation par défaut utilisé pour les outils qui ne disposent pas d'une entrée spécifique sous « ai-features.chat.toolConfirmation ». Les outils qui exigent explicitement une confirmation avant d'être automatiquement approuvés sont toujours configurés par défaut sur « confirmer », quel que soit ce paramètre."
        },
        "fromClipboard": "$(clippy) À partir du presse-papiers",
        "fromClipboardDescription": "Coller l'image depuis le presse-papiers",
        "imageContextVariable": {
          "args": {
            "data": {
              "description": "Les données d'image au format base64."
            },
            "mimeType": {
              "description": "Le type MIME de l'image."
            },
            "name": {
              "description": "Le nom du fichier image, s'il est disponible."
            },
            "wsRelativePath": {
              "description": "Chemin d'accès relatif à l'espace de travail du fichier image, s'il est disponible."
            }
          },
          "description": "Fournit des informations contextuelles pour une image.",
          "label": "Fichier image"
        },
        "imagePickerPlaceholder": "Sélectionnez un fichier image ou effectuez une recherche par nom.",
        "orchestrator": {
          "description": "Cet agent analyse la demande de l'utilisateur par rapport à la description de tous les agents de chat disponibles et sélectionne l'agent le plus approprié pour répondre à la demande (à l'aide de l'IA). La demande de l'utilisateur sera directement déléguée à l'agent sélectionné sans autre confirmation.",
          "vars": {
            "availableChatAgents": {
              "description": "Liste des agents de chat auxquels l'orchestrateur peut déléguer des tâches, à l'exception des agents spécifiés dans les préférences de la liste d'exclusion."
            }
          }
        },
        "pendingImage": {
          "file": "Image en attente : {0}",
          "pasted": "Image en attente (collée)"
        },
        "persistedSessionLimit": {
          "description": "Nombre maximal de sessions de chat à conserver. Utilisez -1 pour un nombre illimité de sessions, 0 pour désactiver la persistance des sessions. Lorsque la limite est réduite, les sessions les plus anciennes dépassant la nouvelle limite sont automatiquement supprimées lors de la prochaine sauvegarde."
        },
        "pinChatAgent": {
          "description": "Activez l'épinglage d'agent pour maintenir automatiquement un agent de chat mentionné actif dans toutes les invites, ce qui réduit le besoin de mentions répétées. Vous pouvez désépingler ou changer d'agent manuellement à tout moment."
        },
        "revertSuggestion": "Revenir à la suggestion",
        "sessionStorageScope": {
          "description": "Choisissez si vous souhaitez conserver les sessions de chat dans des magasins distincts par espace de travail ou dans un seul magasin global. Si aucun espace de travail n'est ouvert, les sessions seront conservées dans le magasin global.",
          "global": "Stockez les sessions de chat dans un seul magasin, partagé entre tous les espaces de travail.",
          "workspace": "Stockez les sessions de chat dans un espace de stockage de métadonnées spécifique à l'espace de travail. Les sessions sont associées à l'espace de travail, mais stockées en dehors du répertoire de l'espace de travail."
        },
        "taskContextService": {
          "summarizeProgressMessage": "Résumé : {0}"
        },
        "taskContextStorageDirectory": {
          "description": "Chemin d'accès relatif à l'espace de travail dans lequel conserver et à partir duquel récupérer les descriptions du contexte des tâches. Si la valeur est vide, les contextes de tâches générés seront stockés en mémoire plutôt que sur le disque."
        },
        "toolConfirmation": {
          "alwaysAllow": {
            "description": "Exécuter les outils automatiquement sans confirmation"
          },
          "confirm": {
            "description": "Demander une confirmation avant d'exécuter les outils"
          },
          "description": "Configurez le comportement de confirmation pour chaque outil. La clé correspond à l'ID de l'outil, la valeur au mode de confirmation. Pour modifier la valeur par défaut pour tous les outils, utilisez « ai-features.chat.defaultToolConfirmation ».",
          "disabled": {
            "description": "Désactiver l'exécution de l'outil"
          }
        },
        "toolConfirmationTimeout": {
          "denialReason": "Délai d'attente de confirmation expiré après {0} secondes",
          "description": "Délai d'expiration en secondes pour les boîtes de dialogue de confirmation de l'outil. Lorsqu'une valeur positive est définie, les confirmations de l'outil seront automatiquement refusées après la durée spécifiée. Définissez cette valeur sur 0 pour désactiver cette option (valeur par défaut)."
        },
        "universal": {
          "description": "Cet agent est conçu pour aider les développeurs de logiciels en fournissant des réponses concises et précises à des questions générales sur la programmation et le développement de logiciels. Il sert également de solution de secours pour toutes les questions génériques que l'utilisateur pourrait poser. L'agent universel n'a actuellement aucun contexte par défaut, c'est-à-dire qu'il ne peut pas accéder au contexte actuel de l'utilisateur ni à l'espace de travail."
        },
        "view": {
          "label": "Chat IA"
        },
        "welcomeScreenSessions": {
          "description": "Nombre maximal de sessions de chat à afficher dans l'aperçu du chat (page d'accueil). Les sessions actives s'affichent en premier ; les sessions supplémentaires sont accessibles via le lien « Parcourir toutes les discussions... ». Réduisez cette valeur si un zoom élevé de l'éditeur entraîne l'apparition d'une barre de défilement. Définissez cette valeur sur 0 pour masquer entièrement la liste intégrée ; les sessions restent accessibles via le lien « Parcourir toutes les discussions... »."
        }
      },
      "chat-ui": {
        "addContextVariable": "Ajouter une variable de contexte",
        "agentDefaultModel": "agent par défaut",
        "agentDelegationDescription": "Autres agents IA pouvant être délégués à",
        "aiDisabled": "Les fonctionnalités d'IA sont désactivées.",
        "allowedResourceUrls": "Les ressources externes (images, feuilles de style, fichiers multimédias, etc.) mentionnées dans les réponses du chat IA sont bloquées par défaut et remplacées par un espace réservé jusqu’à ce qu’elles soient explicitement autorisées. Les ressources dont l’URL commence par l’un des préfixes configurés sont affichées directement sans être bloquées. Indiquez l’origine complète avec une barre oblique finale (par exemple « https://example.com/ ») pour éviter toute correspondance involontaire. N’ajoutez que des sources auxquelles vous faites entièrement confiance.",
        "applyAll": "Appliquer tout",
        "applyAllTitle": "Appliquer toutes les modifications en attente",
        "askQuestion": "Poser une question",
        "attachToContext": "Joindre des éléments au contexte",
        "cancel": "Annuler (Esc)",
        "chat-view-tree-widget": {
          "ai": "IA",
          "generating": "Génération",
          "noRenderer": "Erreur : aucun moteur de rendu trouvé",
          "scrollToBottom": "Aller au dernier message",
          "waitingForInput": "En attente d'une entrée",
          "you": "Vous"
        },
        "chatInput": {
          "clearHistory": "Effacer l'historique des invites de saisie",
          "cycleMode": "Cycle Chat Mode",
          "nextPrompt": "Invite suivante",
          "pasteWithImageSupport": "Coller (avec prise en charge des images)",
          "previousPrompt": "Invite précédente",
          "toggleCapabilities": "Configuration des capacités de basculement"
        },
        "chatInputAriaLabel": "Tapez votre message ici",
        "chatRequestFailedWithDetail": "Échec de la demande de chat : {0}",
        "chatResponses": "Réponses au chat",
        "clearAllSelections": "Effacer la chaîne de recherche et les sélections de capacités",
        "code-part-renderer": {
          "generatedCode": "Code généré"
        },
        "collapseAll": "Réduire tout",
        "collapseChangeSet": "Réduire l'ensemble de modifications",
        "command-part-renderer": {
          "commandNotExecutable": "La commande a l'identifiant « {0} », mais elle n'est pas exécutable à partir de la fenêtre de chat."
        },
        "compaction-part-renderer": {
          "compactionMarker": "Conversation condensée"
        },
        "copyCodeBlock": "Copier le bloc de code",
        "couldNotSendRequestToSession": "Impossible d'envoyer la requête « {0} » à la session {1}",
        "delegatedSession": "Délégué",
        "delegation-response-renderer": {
          "interactionNeeded": "Interaction de l'utilisateur requise",
          "prompt": {
            "label": "Invite déléguée :"
          },
          "response": {
            "label": "Réponse :"
          },
          "restoredNotAvailable": "Réponse indisponible pour les sessions restaurées.",
          "starting": "Démarrage de la délégation...",
          "status": {
            "canceled": "annulé",
            "generating": "génération en cours...",
            "starting": "démarrage..."
          }
        },
        "deleteChangeSet": "Supprimer le jeu de modifications",
        "editRequest": "Modifier",
        "edited": "édité",
        "editedTooltipHint": "Cette variante d'invite a été modifiée. Vous pouvez la réinitialiser dans la vue Configuration IA.",
        "enterChatName": "Entrer le nom du chat",
        "errorChatInvocation": "Une erreur s'est produite lors de l'invocation du service de chat.",
        "expandChangeSet": "Développer l'ensemble de modifications",
        "failedToDeleteSession": "Échec de la suppression de la session de chat",
        "failedToLoadChats": "Échec du chargement des sessions de chat",
        "failedToRestoreSession": "Échec de la restauration de la session de chat",
        "failedToRetry": "Échec de la tentative de renouvellement du message",
        "focusInput": "Entrée de chat ciblée",
        "focusResponse": "Réponse du chat Focus",
        "functions": "Fonctions",
        "functionsDescription": "Fonctions intégrées fournies par les extensions d'{0}",
        "genericCapabilities": "Capacités génériques",
        "mcpFunctionsDescription": "Fonctions du protocole MCP (Model Context Protocol) à partir de serveurs connectés",
        "mermaid-rendering": {
          "copySource": "Copier la source",
          "error": "Impossible d'afficher le diagramme Mermaid. Passez à la vue source pour consulter la définition.",
          "rendering": "Affichage du schéma…",
          "resetView": "Réinitialiser la vue",
          "showDiagram": "Afficher le schéma",
          "showSource": "Afficher le code source",
          "title": "Diagramme Mermaid",
          "wheelZoomHint": "{0} + Faire défiler"
        },
        "modelBadgeTooltip": "Modèle linguistique utilisé pour cette réponse : {0}",
        "modelUnavailable": "indisponible",
        "noChatAgentsAvailable": "Aucun agent de chat disponible.",
        "noMatchingCapabilities": "Aucune correspondance trouvée",
        "openDiff": "Ouvrir Diff",
        "openImage": "Ouvrir l'image",
        "openOriginalFile": "Ouvrir le fichier original",
        "performThisTask": "Effectuez cette tâche.",
        "persistedSession": "Session persistante (cliquez pour restaurer)",
        "promptFragmentsDescription": "Fragments d'invite personnalisés à inclure dans la conversation",
        "removeChat": "Supprimer le chat",
        "requestNotFoundForRetry": "Demande introuvable, veuillez réessayer.",
        "responseFrom": "Réponse d'{0}",
        "saveCurrentSelectionsToSettings": "Enregistrer les paramètres de fonctionnalité",
        "searchCapabilities": "Fonctions de recherche",
        "sectionRestored": "Restauré",
        "selectAgentQuickPickPlaceholder": "Sélectionnez un agent pour la nouvelle session.",
        "selectAllInCategory": "Sélectionner tout dans cette catégorie",
        "selectChat": "Sélectionner le chat",
        "selectContextVariableQuickPickPlaceholder": "Sélectionnez une variable de contexte à associer au message.",
        "selectTaskContextQuickPickItem": {
          "currentlyOpen": "actuellement ouvert"
        },
        "selectTaskContextQuickPickPlaceholder": "Sélectionnez un contexte de tâche à joindre",
        "selectVariableArguments": "Sélectionner des arguments variables",
        "send": "Envoyer (Entrée)",
        "server-toolcall-part-renderer": {
          "indicator": "serveur",
          "serverTooltip": "Exécuté sur les serveurs du fournisseur (et non localement). Les outils serveur sont automatiquement approuvés lorsqu'ils sont sélectionnés."
        },
        "serverToolWarning": "Cet outil est automatiquement approuvé lorsqu'il est sélectionné. Il peut être exécuté par le modèle à tout moment.",
        "serverTools": "Outils serveur",
        "serverToolsDescription": "Les outils serveur sont exécutés côté serveur par le LLM sur l'infrastructure du fournisseur.",
        "serverToolsWarning": "Ces outils sont automatiquement approuvés lorsqu'ils sont sélectionnés. Ils peuvent être exécutés par le modèle à tout moment.",
        "sessionModel": "Modèle pour ce chat",
        "sessionModelDefault": "Modèle pour ce chat ({0})",
        "sessionModelUnavailable": "Le modèle pour ce chat n'est pas disponible ({0}) ; les requêtes utilisent l'agent par défaut.",
        "sessionNotFoundForRetry": "Session introuvable, veuillez réessayer.",
        "skillsDescription": "Instructions réutilisables pouvant être ajoutées à la conversation.",
        "switchAgentMode": "Basculer en mode agent",
        "text-part-renderer": {
          "cantDisplay": "Impossible d'afficher la réponse, veuillez vérifier vos ChatResponsePartRenderers !"
        },
        "toggleCapabilitiesConfig": "Configuration des capacités de basculement",
        "tokenUsageIndicatorEnabled": "Détermine si l'indicateur expérimental d'utilisation des jetons s'affiche dans la vue de discussion. Cette fonctionnalité est expérimentale et le nombre de jetons peut être inexact selon le modèle et le fournisseur.",
        "tokenUsageLabel": "Utilisation des tokens",
        "tokenUsageOverflow": "L'utilisation des jetons dépasse largement le seuil d'avertissement. Envisagez de compacter ou de démarrer une nouvelle session.",
        "tokenUsageTooltipCacheCreate": "Création du cache : {0}",
        "tokenUsageTooltipCacheRead": "Lecture du cache : {0}",
        "tokenUsageTooltipCompactions": "{0}s condensées x",
        "tokenUsageTooltipCumulative": "Cumulatif : {0}",
        "tokenUsageTooltipTotal": "Total : {0} / {1} ({2} %)",
        "tokenUsageWarning": "Seuil d'avertissement d'utilisation des jetons atteint.",
        "tokenUsageWarningEnabled": "Détermine si une notification s'affiche lorsque l'utilisation des jetons d'une session de chat dépasse le seuil configuré. Nécessite que le fournisseur de modèle linguistique signale l'utilisation des jetons.",
        "tokenUsageWarningMessage": "L'utilisation du jeton de session de chat a atteint {0} % de la fenêtre de contexte. Envisagez de résumer cette session ou d'en démarrer une nouvelle pour éviter d'atteindre la limite.",
        "tokenUsageWarningNewSessionAction": "Démarrer une nouvelle conversation",
        "tokenUsageWarningSummarizeAction": "Résumer la session en cours",
        "tokenUsageWarningThresholdPercentage": "Pourcentage de la fenêtre de contexte du modèle à partir duquel l'avertissement d'utilisation des tokens est déclenché. Cette valeur détermine également les bandes de couleur d'avertissement/d'erreur de l'indicateur d'utilisation des tokens. Actuellement calculé sur la base d'une fenêtre de contexte supposée de 200 000 ; utilisera la taille réelle de la fenêtre de contexte par modèle dès qu'elle sera disponible.",
        "toolcall-part-renderer": {
          "denied": "Exécution refusée",
          "finished": "Exécuter",
          "rejected": "Exécution annulée"
        },
        "toolconfirmation": {
          "allow-options-dropdown-tooltip": "Plus Autoriser les options",
          "allow-session": "Autoriser ce chat",
          "allowed": "Exécution de l'outil autorisée",
          "alwaysAllowConfirm": "Je comprends, activer l'approbation automatique",
          "alwaysAllowGenericWarning": "Cet outil nécessite une confirmation avant que l'approbation automatique puisse être activée. Une fois activée, toutes les invocations futures s'exécuteront sans confirmation. N'activez cette option que si vous faites confiance à cet outil et comprenez les risques potentiels.",
          "alwaysAllowTitle": "Activer l'approbation automatique pour « {0} » ?",
          "approveLatest": "Valider la confirmation de l'outil le plus récent",
          "autoCancel": "Annulation automatique dans l'{0}",
          "canceled": "Exécution de l'outil annulée",
          "denied": "Exécution de l'outil refusée",
          "deny-forever": "Toujours refuser",
          "deny-options-dropdown-tooltip": "Plus d'options de refus",
          "deny-reason-placeholder": "Entrez la raison du refus...",
          "deny-session": "Refuser pour ce chat",
          "deny-with-reason": "Refuser avec justification...",
          "denyLatest": "Refuser la confirmation de l'outil le plus récent",
          "executionDenied": "Exécution de l'outil refusée",
          "header": "Confirmer l'exécution de l'outil"
        },
        "unableToSummarizeCurrentSession": "Impossible de résumer la session actuelle. Veuillez vérifier que l'agent de résumé n'est pas désactivé.",
        "unknown-part-renderer": {
          "contentNotRestoreable": "Ce contenu (type « {0} ») n'a pas pu être entièrement restauré. Il provient peut-être d'une extension qui n'est plus disponible."
        },
        "unpinAgent": "Détacher l'agent",
        "unselectAllInCategory": "Désélectionner tout dans cette catégorie",
        "variablesDescription": "Variables dynamiques fournissant des informations contextuelles",
        "variantTooltip": "Variante de l'invite : {0}",
        "yourMessage": "Votre message"
      },
      "claude-code": {
        "agentDescription": "Agent de codage d'Anthropic",
        "allowSession": "Autoriser pour cette session",
        "apiKey": {
          "description": "Entrez une clé API pour Claude Code. **Remarque :** en utilisant cette préférence, la clé API sera stockée en texte clair sur la machine exécutant Theia. Utilisez la variable d'environnement `ANTHROPIC_API_KEY` pour définir la clé de manière sécurisée."
        },
        "askBeforeEdit": "Demander avant de modifier",
        "changeSetTitle": "Modifications apportées par Claude Code",
        "clearCommand": {
          "description": "Créer une nouvelle session"
        },
        "compactCommand": {
          "description": "Conversation compacte avec instructions de mise au point facultatives"
        },
        "completedCount": "{0} / {1} terminé",
        "configCommand": {
          "description": "Open Claude Code Configuration"
        },
        "currentDirectory": "répertoire actuel",
        "differentAgentRequestWarning": "La demande de chat précédente a été traitée par un autre agent. Claude Code ne voit pas ces autres messages.",
        "edit": "Modifier l'{0}",
        "editAutomatically": "Modifier automatiquement",
        "editing": "Édition",
        "editsCount": "{0} modifications",
        "emptyTodoList": "Pas disponible",
        "entireFile": "Fichier entier",
        "excludingOnePattern": " (à l'exception d'un modèle)",
        "excludingPatterns": " (à l'exception des modèles d'{0})",
        "executablePath": {
          "description": "Chemin d'accès à l'exécutable Claude Code (cli.js) du `@anthropic-ai/claude-agent-sdk`. S'il n'est pas spécifié, le système tentera de résoudre automatiquement le chemin d'accès à partir de l'installation npm globale."
        },
        "executedCommand": "Exécuté : {0}",
        "failedToParseBashToolData": "Échec de l'analyse des données de l'outil Bash",
        "failedToParseEditToolData": "Échec de l'analyse des données de l'outil d'édition",
        "failedToParseGlobToolData": "Échec de l'analyse des données de l'outil Glob",
        "failedToParseGrepToolData": "Échec de l'analyse des données de l'outil Grep",
        "failedToParseLSToolData": "Échec de l'analyse des données de l'outil LS",
        "failedToParseMultiEditToolData": "Échec de l'analyse des données de l'outil MultiEdit",
        "failedToParseReadToolData": "Échec de l'analyse des données de l'outil de lecture",
        "failedToParseTodoListData": "Échec de l'analyse des données de la liste des tâches",
        "failedToParseWebFetchToolData": "Échec de l'analyse des données de l'outil WebFetch",
        "failedToParseWriteToolData": "Échec de l'analyse des données de l'outil d'écriture",
        "fetching": "Récupération",
        "fileFilter": "Filtre de fichiers",
        "filePath": "Chemin d'accès au fichier",
        "fileType": "Type de fichier",
        "findMatchingFiles": "Rechercher les fichiers correspondant au modèle glob « {0} » dans le répertoire actuel.",
        "findMatchingFilesWithPath": "Rechercher les fichiers correspondant au modèle glob « {0} » dans {1}",
        "finding": "Recherche",
        "from": "De",
        "globPattern": "modèle glob",
        "grepOptions": {
          "caseInsensitive": "insensible à la casse",
          "glob": "glob : {0}",
          "headLimit": "limite : {0}",
          "lineNumbers": "numéros de ligne",
          "linesAfter": "+{0} après",
          "linesBefore": "+{0} avant",
          "linesContext": "± Contexte {0}",
          "multiLine": "multiligne",
          "type": "type: {0}"
        },
        "grepOutputModes": {
          "content": "contenu",
          "count": "compter",
          "filesWithMatches": "fichiers avec correspondances"
        },
        "ignoredPatterns": "Modèles ignorés",
        "ignoringPatterns": "Ignorer les modèles d'{0}",
        "initCommand": {
          "description": "Initialiser le projet avec le guide CLAUDE.md"
        },
        "itemCount": "{0} éléments",
        "lineLimit": "Limite de lignes",
        "lines": "Lignes",
        "listDirectoryContents": "Afficher le contenu du répertoire",
        "listing": "Liste",
        "memoryCommand": {
          "description": "Modifier le fichier mémoire CLAUDE.md"
        },
        "multiEditing": "Édition multiple",
        "oneEdit": "1 modification",
        "oneItem": "1 élément",
        "oneOption": "1 option",
        "openDirectoryTooltip": "Cliquez pour ouvrir le répertoire",
        "openFileTooltip": "Cliquez pour ouvrir le fichier dans l'éditeur.",
        "optionsCount": "{0} options",
        "partial": "Partiel",
        "plan": "Plan mode",
        "project": "projet",
        "projectRoot": "racine du projet",
        "readMode": "Mode lecture",
        "reading": "Lecture",
        "replaceAllCount": "{0} remplacer tout",
        "replaceAllOccurrences": "Remplacer toutes les occurrences",
        "resumeCommand": {
          "description": "Reprendre une session"
        },
        "reviewCommand": {
          "description": "Demander une révision du code"
        },
        "searchPath": "Chemin de recherche",
        "searching": "Recherche",
        "startingLine": "Ligne de départ",
        "timeout": "Délai d'expiration",
        "timeoutInMs": "Délai d'expiration : {0} ms",
        "to": "À",
        "todoList": "Tout Liste",
        "todoPriority": {
          "high": "élevé",
          "low": "faible",
          "medium": "moyen"
        },
        "toolApprovalRequest": "Claude Code souhaite utiliser l'outil « {0} ». Voulez-vous l'autoriser ?",
        "totalEdits": "Modifications totales",
        "vars": {
          "activeEditor": {
            "description": "L'URI de l'éditeur actuellement actif."
          }
        },
        "webFetch": "Web Fetch",
        "writing": "Rédaction"
      },
      "code-completion": {
        "progressText": "Calcul de la complétion du code IA..."
      },
      "codex": {
        "agentDescription": "Assistant de codage d'OpenAI optimisé par Codex",
        "apiKey": {
          "description": "Clé API OpenAI pour Codex. Si elle n'est pas définie, la clé API OpenAI partagée (`ai-features.openAiOfficial.openAiApiKey`) est utilisée par défaut. Elle peut également être définie via la variable d'environnement `OPENAI_API_KEY`."
        },
        "completedCount": "{0} / {1} terminé",
        "exitCode": "Code de sortie : {0}",
        "fileChangeFailed": "Codex n'a pas réussi à appliquer les modifications pour : {0}",
        "fileChangeFailedGeneric": "Codex n'a pas réussi à appliquer les modifications apportées au fichier.",
        "itemCount": "{0} éléments",
        "noItems": "Aucun élément",
        "oneItem": "1 élément",
        "searched": "Recherché",
        "searching": "Recherche",
        "todoList": "Tout Liste"
      },
      "completion": {
        "agent": {
          "description": "Cet agent permet la complétion de code en ligne dans l'éditeur de code d'{0}.",
          "vars": {
            "file": {
              "description": "L'URI du fichier en cours d'édition"
            },
            "language": {
              "description": "Le languageId du fichier en cours d'édition"
            },
            "prefix": {
              "description": "Le code avant la position actuelle du curseur"
            },
            "suffix": {
              "description": "Le code après la position actuelle du curseur"
            }
          }
        },
        "automaticEnable": {
          "description": "Déclenchez automatiquement les complétions IA en ligne dans n'importe quel éditeur (Monaco) pendant l'édition.            \n            Vous pouvez également déclencher manuellement le code via la commande « Déclencher la suggestion en ligne » ou le raccourci par défaut « Ctrl+Alt+Espace »."
        },
        "cacheCapacity": {
          "description": "Nombre maximal de complétions de code à stocker dans le cache. Un nombre plus élevé peut améliorer les performances, mais consommera plus de mémoire. La valeur minimale est 10, la plage recommandée est comprise entre 50 et 200.",
          "title": "Capacité du cache de complétion de code"
        },
        "debounceDelay": {
          "description": "Contrôle le délai en millisecondes avant de déclencher les complétions IA après que des modifications ont été détectées dans l'éditeur. Nécessite l'activation de la fonction « Complétion automatique du code ». Entrez 0 pour désactiver le délai de rebond.",
          "title": "Délai de rebond"
        },
        "excludedFileExts": {
          "description": "Spécifiez les extensions de fichiers (par exemple, .md, .txt) pour lesquelles les complétions IA doivent être désactivées.",
          "title": "Extensions de fichiers exclues"
        },
        "fileVariable": {
          "description": "L'URI du fichier en cours d'édition. Disponible uniquement dans le contexte de la complétion de code."
        },
        "languageVariable": {
          "description": "Le languageId du fichier en cours d'édition. Disponible uniquement dans le contexte de la complétion de code."
        },
        "maxContextLines": {
          "description": "Nombre maximal de lignes utilisées comme contexte, réparties entre les lignes avant et après la position du curseur (préfixe et suffixe). Définissez cette valeur sur -1 pour utiliser l'intégralité du fichier comme contexte sans aucune limite de lignes, et sur 0 pour utiliser uniquement la ligne actuelle.",
          "title": "Nombre maximal de lignes de contexte"
        },
        "prefixVariable": {
          "description": "Le code avant la position actuelle du curseur. Disponible uniquement dans le contexte de la complétion de code."
        },
        "stripBackticks": {
          "description": "Supprimez les guillemets inversés entourant le code renvoyé par certains LLM. Si un guillemet inversé est détecté, tout le contenu après le guillemet inversé de fermeture est également supprimé. Ce paramètre permet de garantir que du code brut est renvoyé lorsque les modèles linguistiques utilisent un formatage de type Markdown.",
          "title": "Supprimer les guillemets inversés des complétions en ligne"
        },
        "suffixVariable": {
          "description": "Le code après la position actuelle du curseur. Disponible uniquement dans le contexte de la complétion de code."
        }
      },
      "configuration": {
        "selectItem": "Veuillez sélectionner un élément."
      },
      "copilot": {
        "auth": {
          "aiConfiguration": "AI Configuration",
          "authorize": "J'ai autorisé",
          "copied": "Copié !",
          "copyCode": "Copier le code",
          "expired": "L'autorisation a expiré ou a été refusée. Veuillez réessayer.",
          "hint": "Après avoir saisi le code et donné votre autorisation, cliquez sur « J'ai donné mon autorisation » ci-dessous.",
          "initiating": "Lancement de l'authentification...",
          "instructions": "Pour autoriser {0} à utiliser GitHub Copilot, rendez-vous à l'adresse ci-dessous et saisissez le code :",
          "openGitHub": "Ouvrir GitHub",
          "privacy": "Theia est un projet open source. Nous demandons uniquement l'accès à votre nom d'utilisateur GitHub pour nous connecter aux services GitHub Copilot. Aucune autre donnée n'est consultée ou stockée.",
          "success": "Connexion à GitHub Copilot réussie !",
          "successHint": "Si votre compte GitHub a accès à Copilot, vous pouvez désormais configurer les modèles linguistiques Copilot dans le ",
          "tos": "En vous connectant, vous acceptez les ",
          "tosLink": "Conditions d'utilisation de GitHub",
          "verifying": "Vérification de l'autorisation..."
        },
        "category": "Copilot",
        "commands": {
          "signIn": "Connectez-vous à GitHub Copilot",
          "signOut": "Se déconnecter de GitHub Copilot"
        },
        "enabled": {
          "mdDescription": "Activez le fournisseur GitHub Copilot. Une fois activé, une entrée apparaît dans la barre d'état pour l'authentification et les modèles disponibles sont détectés à partir de votre abonnement Copilot."
        },
        "enterpriseUrl": {
          "mdDescription": "Domaine GitHub Enterprise pour l'API Copilot (par exemple, `github.mycompany.com`). Laissez vide pour GitHub.com."
        },
        "modelOverrides": {
          "mdDescription": "Remplacer les modèles GitHub Copilot détectés automatiquement. Lorsque ce champ est vide (par défaut), les modèles disponibles sont détectés à partir de votre abonnement Copilot. Définissez des identifiants de modèle explicites pour remplacer la détection automatique."
        },
        "signOut": {
          "confirmMessage": "Êtes-vous sûr de vouloir vous déconnecter de GitHub Copilot ?"
        },
        "statusBar": {
          "signedIn": "Connecté à GitHub Copilot en tant qu'{0}. Cliquez pour vous déconnecter.",
          "signedOut": "Vous n'êtes pas connecté à GitHub Copilot. Cliquez pour vous connecter."
        },
        "tokenMigration": "Votre session GitHub Copilot utilisait une méthode d'authentification obsolète et a été effacée. Veuillez vous reconnecter pour accéder à tous les modèles disponibles."
      },
      "core": {
        "agentConfiguration": {
          "addCustomAgent": "Ajouter un agent personnalisé",
          "availableCapabilities": "Capacités disponibles",
          "completionNotificationDescriptionPrefix": "Sélectionnez la manière dont vous souhaitez être averti lorsque cet agent nécessite votre attention, c'est-à-dire lorsqu'il termine sa tâche ou sollicite votre intervention. L'option « Par défaut » utilise le ",
          "defaultNotificationDescription": "Utilise le paramètre global de notification IA.",
          "enableAgent": "Activer l'agent",
          "llmRequirements": "Exigences LLM",
          "notUsedInPrompt": "Non utilisé dans l'invite",
          "notUsedInPromptTooltip": "Cette variable est déclarée par l'agent, mais n'est pas référencée dans le modèle d'invite actuel.",
          "notificationSettings": "Paramètres de notification",
          "notificationSettingsLink": "Paramètre de notification IA",
          "promptTemplates": "Modèles d'invite",
          "selectAgentMessage": "Veuillez d'abord sélectionner un agent !",
          "showInChat": "Afficher dans le chat",
          "templateName": "Modèle",
          "undeclared": "Non déclaré",
          "undeclaredTooltip": "Cette variable est utilisée dans l'invite, mais aucune description n'est déclarée par l'agent.",
          "usedAgentSpecificVariables": "Variables spécifiques à l'agent utilisées",
          "usedFunctions": "Fonctions utilisées",
          "usedGlobalVariables": "Variables globales utilisées",
          "variant": "Variante"
        },
        "agentsVariable": {
          "description": "Renvoie la liste des agents disponibles dans le système."
        },
        "aiConfiguration": {
          "label": "AI Configuration"
        },
        "blinkTitle": {
          "agentCompleted": "{0} - Agent terminé",
          "namedAgentCompleted": "{0} - Agent « {1} » Terminé"
        },
        "capabilityVariable": {
          "argDescription": "L'identifiant du fragment d'invite, suivi éventuellement de « default on » ou « default off » (désactivé par défaut).",
          "completions": {
            "detail": {
              "off": "Fonctionnalité désactivée par défaut",
              "on": "Fonctionnalité activée par défaut"
            }
          },
          "description": "Résout de manière conditionnelle les fragments d'invite en fonction du paramètre d'activation/désactivation par défaut."
        },
        "changeSetSummaryVariable": {
          "description": "Fournit un résumé des fichiers d'un ensemble de modifications et de leur contenu."
        },
        "contextDetailsVariable": {
          "description": "Fournit les valeurs et descriptions complètes de tous les éléments contextuels."
        },
        "contextSummaryVariable": {
          "description": "Décrit les fichiers dans le contexte d'une session donnée."
        },
        "customAgentTemplate": {
          "description": "Il s'agit d'un exemple d'agent. Veuillez adapter les propriétés à vos besoins."
        },
        "defaultModelAliases": {
          "code": {
            "description": "Optimisé pour les tâches de compréhension et de génération de code."
          },
          "code-completion": {
            "description": "Convient particulièrement aux scénarios d'autocomplétion de code."
          },
          "fast": {
            "description": "Des modèles plus rapides et moins coûteux pour des tâches plus simples telles que l'exploration ou l'appel d'outils de base, qui ne nécessitent pas de raisonnement approfondi."
          },
          "summarize": {
            "description": "Modèles prioritaires pour la synthèse et la condensation du contenu."
          },
          "universal": {
            "description": "Bien équilibré pour l'utilisation du code et du langage général."
          }
        },
        "defaultNotification": {
          "mdDescription": "Méthode de notification par défaut utilisée lorsqu'un agent IA a besoin de votre attention, c'est-à-dire lorsqu'il a terminé une tâche ou sollicite votre intervention. Les agents individuels peuvent remplacer ce paramètre.",
          "title": "Type de notification par défaut"
        },
        "discard": {
          "label": "Modèle de message AI à ignorer"
        },
        "discardCustomPrompt": {
          "tooltip": "Ignorer les personnalisations"
        },
        "fileVariable": {
          "description": "Résout le contenu d'un fichier.",
          "uri": {
            "description": "L'URI du fichier demandé."
          }
        },
        "languageModelRenderer": {
          "alias": "[alias] {0}",
          "languageModel": "Modèle linguistique",
          "purpose": "Objectif"
        },
        "maxRetries": {
          "mdDescription": "Nombre maximal de tentatives de réessai lorsqu'une requête adressée à un fournisseur d'IA échoue. Une valeur de 0 signifie qu'il n'y a pas de réessai.",
          "title": "Nombre maximal de tentatives"
        },
        "modelAliasesConfiguration": {
          "agents": "Agents utilisant cet alias",
          "defaultList": "[Liste par défaut]",
          "evaluatesTo": "Évalue à",
          "label": "Alias de modèle",
          "modelNotReadyTooltip": "Pas prêt",
          "modelReadyTooltip": "Prêt",
          "noAgents": "Aucun agent n'utilise cet alias.",
          "noModelReadyTooltip": "Aucun modèle prêt",
          "noResolvedModel": "Aucun modèle n'est disponible pour cet alias.",
          "priorityList": "Liste des priorités",
          "selectAlias": "Veuillez sélectionner un alias de modèle.",
          "selectedModelId": "Modèle sélectionné",
          "unavailableModel": "Le modèle sélectionné n'est plus disponible."
        },
        "noVariableFoundForOpenRequest": "Aucune variable trouvée pour la requête ouverte.",
        "notification": {
          "message": {
            "description": "Afficher un message de notification dans l'application."
          },
          "off": {
            "description": "Désactiver toutes les notifications"
          },
          "osNotification": "OS Notification",
          "windowBlink": "Fenêtre clignotante"
        },
        "openEditorsShortVariable": {
          "description": "Référence succincte à tous les fichiers actuellement ouverts (chemins relatifs, séparés par des virgules)"
        },
        "openEditorsVariable": {
          "description": "Une liste séparée par des virgules de tous les fichiers actuellement ouverts sous forme de chemins relatifs à l'espace de travail (par exemple, my-project/src/index.ts)."
        },
        "preference": {
          "languageModelAliases": {
            "description": "Configurez les modèles pour chaque alias de modèle linguistique dans la [vue de configuration IA]({0}). Vous pouvez également définir les paramètres manuellement dans le fichier settings.json : \n```\n\"default/code\": {\n  \"selectedModel\": \"anthropic/claude-opus-4-20250514\"\n}\n```",
            "selectedModel": "Modèle sélectionné par l'utilisateur pour cet alias.",
            "title": "Alias du modèle linguistique"
          }
        },
        "productNameVariable": {
          "description": "Le nom du produit/de l'application avec lequel/laquelle l'utilisateur travaille"
        },
        "promptFragmentsConfiguration": {
          "activeCustomizationTitle": "Personnalisation active",
          "createCustomizationTitle": "Créer une personnalisation",
          "customization": "personnalisation",
          "customizationLabel": "Personnalisation",
          "defaultVariantTitle": "Variante par défaut",
          "deleteCustomizationTitle": "Supprimer la personnalisation",
          "editTemplateTitle": "Modifier le modèle",
          "headerTitle": "Fragments d'invite",
          "label": "Fragments d'invite",
          "noFragmentsAvailable": "Aucun fragment d'invite disponible.",
          "otherPromptFragmentsHeader": "Autres fragments d'invite",
          "promptTemplateText": "Modèle de texte d'invite",
          "promptVariantsHeader": "Ensembles de variantes d'invites",
          "removeCustomizationDialogMsg": "Êtes-vous sûr de vouloir supprimer la personnalisation de l'{0} pour le fragment d'invite « {1} » ?",
          "removeCustomizationDialogTitle": "Supprimer la personnalisation",
          "removeCustomizationWithDescDialogMsg": "Êtes-vous sûr de vouloir supprimer la personnalisation de l'{0} pour le fragment d'invite « {1} » ({2}) ?",
          "resetAllButton": "Tout réinitialiser",
          "resetAllCustomizationsDialogMsg": "Êtes-vous sûr de vouloir réinitialiser tous les fragments d'invite à leurs versions intégrées ? Cela supprimera toutes les personnalisations.",
          "resetAllCustomizationsDialogTitle": "Réinitialiser toutes les personnalisations",
          "resetAllCustomizationsTitle": "Réinitialiser toutes les personnalisations",
          "resetAllPromptFragments": "Réinitialiser tous les fragments d'invite",
          "resetToBuiltInDialogMsg": "Êtes-vous sûr de vouloir réinitialiser le fragment d'invite « {0} » à sa version intégrée ? Cela supprimera toutes les personnalisations.",
          "resetToBuiltInDialogTitle": "Réinitialiser à la valeur intégrée",
          "resetToBuiltInTitle": "Réinitialiser à cette valeur intégrée",
          "resetToCustomizationDialogMsg": "Êtes-vous sûr de vouloir réinitialiser le fragment d'invite « {0} » pour utiliser la personnalisation {1} ? Cela supprimera toutes les personnalisations de priorité supérieure.",
          "resetToCustomizationDialogTitle": "Réinitialiser la personnalisation",
          "resetToCustomizationTitle": "Réinitialiser cette personnalisation",
          "selectedVariantLabel": "Sélectionné",
          "selectedVariantTitle": "Variante sélectionnée",
          "usedByAgentTitle": "Utilisé par l'agent : {0}",
          "variantSetError": "La variante sélectionnée n'existe pas et aucune valeur par défaut n'a pu être trouvée. Veuillez vérifier votre configuration.",
          "variantSetWarning": "La variante sélectionnée n'existe pas. La variante par défaut est utilisée à la place.",
          "variantsOfSystemPrompt": "Variantes de cet ensemble de variantes d'invite :"
        },
        "promptTemplates": {
          "description": "Dossier permettant de stocker des modèles d'invites personnalisés. S'ils ne sont pas personnalisés, le répertoire de configuration utilisateur est utilisé. Veuillez envisager d'utiliser un dossier soumis à un contrôle de version pour gérer vos variantes de modèles d'invites."
        },
        "promptVariable": {
          "argDescription": "Identifiant du modèle d'invite à résoudre",
          "completions": {
            "detail": {
              "builtin": "Fragment d'invite intégré",
              "custom": "Fragment d'invite personnalisé"
            }
          },
          "description": "Résout les modèles d'invite via le service d'invite."
        },
        "prompts": {
          "category": "Modèles de invites IA"
        },
        "reasoning": {
          "mdDescription": "Valeur par défaut du sélecteur de raisonnement de la saisie de chat, appliquée aux modèles prenant en charge le raisonnement.\n\nIl s'agit d'un paramètre au niveau de l'interface utilisateur : le niveau choisi est converti en paramètres API natifs du fournisseur au moment de la requête (par exemple, Anthropic `thinking` / `output_config.effort`, OpenAI `reasoning.effort`, Gemini `thinkingConfig`) et prévaut sur toute valeur brute fournie via `#ai-features.modelSettings.requestSettings#` pour les mêmes champs.\n\nChaque entrée comprend :\n- `scope` : définit quand le paramètre s'applique (`modelId`, `providerId`, `agentId`).\n- `reasoning.level` : l'une des valeurs suivantes : `off`, `minimal`, `low`, `medium`, `high`, `auto`.\n\nPriorité lors de l'exécution (la plus élevée en premier) : remplacement de session via le sélecteur → cette préférence → la valeur par défaut déclarée du modèle. La valeur affichée par le sélecteur est celle qui est envoyée. Pour remplacer manuellement le champ de raisonnement d'un fournisseur via `#ai-features.modelSettings.requestSettings#`, définissez `reasoning.level` sur `off` ici afin de désactiver la traduction basée sur le niveau.\n\nLes entrées sont mises en correspondance en fonction de la spécificité de la portée (agent : 100, modèle : 10, fournisseur : 1 point).\n\nExemple :\n```json\n[\n  { \"scope\": { \"providerId\": \"anthropic\" }, \"reasoning\": { \"level\": \"medium\" } },\n  { \"scope\": { \"modelId\": \"openai/gpt-5\" }, \"reasoning\": { \"level\": \"high\" } },\n  { \"scope\": { \"agentId\": \"Coder\" }, \"reasoning\": { \"level\": \"off\" } }\n]\n```",
          "title": "Raisonements par défaut"
        },
        "requestSettings": {
          "clientSettings": {
            "description": "Paramètres client pour la gestion des messages renvoyés au llm.",
            "keepThinking": {
              "description": "Si cette option est définie sur « false », toutes les sorties de réflexion seront filtrées avant l'envoi de la prochaine requête utilisateur dans une conversation à plusieurs tours."
            },
            "keepToolCalls": {
              "description": "Si cette option est définie sur « false », toutes les requêtes et réponses des outils seront filtrées avant l'envoi de la prochaine requête utilisateur dans une conversation à plusieurs tours."
            }
          },
          "mdDescription": "Permet de spécifier des paramètres de requête personnalisés pour plusieurs modèles.\nChaque paramètre comprend :\n- `scope` : définit quand le paramètre s'applique :\n- `modelId` (facultatif) : l'ID du modèle à faire correspondre\n- `providerId` (facultatif) : L'ID du fournisseur à faire correspondre (par exemple, huggingface, openai, ollama, llamafile)\n- `agentId` (facultatif) : l'ID de l'agent à faire correspondre\n- `requestSettings` : paramètres spécifiques au modèle sous forme de paires clé-valeur\n- `clientSettings` : paramètres de gestion des messages côté client :\n- `keepToolCalls` (booléen) : Indique s'il faut conserver les appels d'outils dans le contexte.\n- `keepThinking` (booléen) : Indique s'il faut conserver les messages de réflexion.\nLes paramètres sont mis en correspondance en fonction de leur spécificité (agent : 100, modèle : 10, fournisseur : 1 point).\nPour plus d'informations, consultez [notre documentation](https://theia-ide.org/docs/user_ai/#custom-request-settings).",
          "modelSpecificSettings": {
            "description": "Paramètres pour l'ID de modèle spécifique."
          },
          "scope": {
            "agentId": {
              "description": "L'identifiant d'agent (facultatif) auquel appliquer les paramètres."
            },
            "modelId": {
              "description": "L'identifiant du modèle (facultatif)"
            },
            "providerId": {
              "description": "L'identifiant du fournisseur (facultatif) auquel appliquer les paramètres."
            }
          },
          "title": "Paramètres de demande personnalisés"
        },
        "serverSideCompaction": {
          "description": "Activer par défaut la compaction côté serveur native du fournisseur pour les requêtes de chat. Lorsque cette option est activée, les modèles qui la prennent en charge peuvent automatiquement résumer les anciens tours de conversation dès que la conversation dépasse leur propre seuil, ce qui permet aux longues sessions de se poursuivre au-delà de la limite de contexte. Chaque fournisseur propose sa propre option de remplacement, et les sessions de chat individuelles peuvent remplacer ce paramètre dans leurs paramètres de session. Les modèles qui ne prennent pas en charge cette fonctionnalité l'ignorent."
        },
        "serverSideCompactionTokenThreshold": {
          "description": "Seuil par défaut de tokens d'entrée à partir duquel la compaction côté serveur native du fournisseur doit s'exécuter. Les fournisseurs et les sessions de chat individuelles peuvent remplacer cette valeur. Si ce paramètre n'est pas défini, le fournisseur choisit son seuil par défaut. S'il est défini, la valeur doit être d'au moins 50 000 tokens."
        },
        "skillDirectories": {
          "description": "Répertoires supplémentaires contenant les définitions de compétences (fichiers SKILL.md). Les compétences fournissent des instructions réutilisables auxquelles les agents IA peuvent se référer. Les répertoires .prompts/skills et .agents/skills de votre espace de travail, le répertoire .agents/skills de votre répertoire personnel, ainsi que le répertoire skills du dossier de configuration de votre produit sont toujours inclus."
        },
        "skillsVariable": {
          "description": "Renvoie la liste des compétences disponibles pouvant être utilisées par les agents IA."
        },
        "taskContextSummary": {
          "description": "Résout tous les éléments de contexte de tâche présents dans le contexte de session."
        },
        "templateSettings": {
          "edited": "édité",
          "unavailableVariant": "Indisponible"
        },
        "todayVariable": {
          "description": "Faire quelque chose pour aujourd'hui",
          "format": {
            "description": "Le format de la date"
          }
        },
        "unableToDisplayVariableValue": "Impossible d'afficher la valeur de la variable.",
        "unableToResolveVariable": "Impossible de résoudre la variable.",
        "variable-contribution": {
          "builtInVariable": "{0} Variable intégrée",
          "currentAbsoluteFilePath": "Chemin absolu du fichier actuellement ouvert.",
          "currentFileContent": "Le contenu brut du fichier actuellement ouvert. Cela exclut les informations relatives à la provenance du contenu.",
          "currentRelativeDirPath": "Chemin d'accès relatif à l'espace de travail du répertoire contenant le fichier actuellement ouvert (par exemple, my-project/src).",
          "currentRelativeFilePath": "Chemin d'accès relatif à l'espace de travail du fichier actuellement ouvert (par exemple, my-project/src/index.ts).",
          "currentSelectedText": "Le texte brut actuellement sélectionné dans le fichier ouvert. Cela exclut les informations relatives à la provenance du contenu.",
          "dotRelativePath": "Référence abrégée au chemin d'accès relatif à l'espace de travail du fichier actuellement ouvert (« currentRelativeFilePath »)."
        }
      },
      "editor": {
        "editorContextVariable": {
          "description": "Résout les informations contextuelles spécifiques à l'éditeur.",
          "label": "EditorContext"
        },
        "explainWithAI": {
          "prompt": "Expliquez cette erreur",
          "title": "Expliquer avec l'IA"
        },
        "fixWithAI": {
          "prompt": "Aidez-nous à corriger cette erreur"
        }
      },
      "google": {
        "apiKey": {
          "description": "Saisissez une clé API de votre compte Google AI (Gemini) officiel. **Remarque :** en utilisant cette préférence, la clé API GOOGLE AI sera stockée en texte clair sur la machine exécutant Theia. Utilisez la variable d'environnement `GOOGLE_API_KEY` pour définir la clé en toute sécurité."
        },
        "maxRetriesOnErrors": {
          "description": "Nombre maximal de tentatives en cas d'erreur. Si ce nombre est inférieur à 1, la logique de nouvelle tentative est désactivée."
        },
        "models": {
          "description": "Modèles Google Gemini officiels à utiliser"
        },
        "retryDelayOnOtherErrors": {
          "description": "Délai en secondes entre les nouvelles tentatives en cas d'autres erreurs (parfois, Google GenAI signale des erreurs telles qu'une syntaxe JSON incomplète renvoyée par le modèle ou une erreur 500 Internal Server Error). En définissant cette valeur sur -1, vous empêchez les nouvelles tentatives dans ces cas. Sinon, une nouvelle tentative a lieu soit immédiatement (si la valeur est définie sur 0), soit après ce délai en secondes (si la valeur est définie sur un nombre positif)."
        },
        "retryDelayOnRateLimitError": {
          "description": "Délai en secondes entre les tentatives en cas d'erreurs de limite de débit. Voir https://ai.google.dev/gemini-api/docs/rate-limits"
        }
      },
      "history": {
        "clear": {
          "tooltip": "Effacer l'historique de tous les agents"
        },
        "edited": "édité",
        "exchange-card": {
          "timestamp": "Démarré"
        },
        "open-history-tooltip": "Ouvrir l'historique AI...",
        "request-card": {
          "promptVariant": "Variante d'invite",
          "timestamp": "Horodatage"
        },
        "sortChronologically": {
          "tooltip": "Trier par ordre chronologique"
        },
        "sortReverseChronologically": {
          "tooltip": "Trier par ordre chronologique inverse"
        },
        "toggleCompact": {
          "tooltip": "Afficher la vue compacte"
        },
        "toggleHideNewlines": {
          "tooltip": "Arrêter d'interpréter les sauts de ligne"
        },
        "toggleRaw": {
          "tooltip": "Afficher la vue brute"
        },
        "toggleRenderNewlines": {
          "tooltip": "Interpréter les sauts de ligne"
        },
        "view": {
          "label": "Historique de l'agent IA",
          "noAgent": "Aucun agent disponible.",
          "noAgentSelected": "Aucun agent sélectionné.",
          "noHistoryForAgent": "Aucun historique disponible pour l'agent sélectionné « {0} »."
        }
      },
      "huggingFace": {
        "apiKey": {
          "mdDescription": "Entrez une clé API pour votre compte Hugging Face. **Remarque :** en utilisant cette préférence, la clé API Hugging Face sera stockée en texte clair sur la machine exécutant Theia. Utilisez la variable d'environnement `HUGGINGFACE_API_KEY` pour définir la clé de manière sécurisée."
        },
        "models": {
          "mdDescription": "Modèles Hugging Face à utiliser. **Remarque :** seuls les modèles prenant en charge l'API de complétion de chat sont actuellement pris en charge (modèles optimisés pour les instructions tels que « *-Instruct »). Certains modèles peuvent nécessiter l'acceptation des conditions de licence sur le site Web Hugging Face."
        }
      },
      "ide": {
        "agent-description": "Configurez les paramètres de l'agent IA, notamment l'activation, la sélection LLM, la personnalisation des modèles d'invite et la création d'agents personnalisés dans la [vue Configuration IA]({0}).",
        "agentConfiguration": {
          "customAgentLocationQuickPick": {
            "placeholder": "Choisissez l'emplacement où créer le fichier agents/<id>/agent.md",
            "title": "Sélectionnez l'emplacement du nouvel agent personnalisé"
          },
          "genericCapabilitiesSettings": "Capacités génériques",
          "genericCapabilityType": {
            "agentDelegation": "Délégation d'agent",
            "functions": "Fonctions",
            "mcpFunctions": "Fonctions MCP",
            "promptFragments": "Fragments d'invite"
          },
          "newAgent": {
            "createFailed": "Impossible de créer l'agent personnalisé « {0} » : {1}",
            "defaultDescription": "Agent personnalisé. Modifiez cette description dans le fichier agent.md.",
            "defaultPrompt": "Vous êtes un agent serviable. Adaptez cette invite à vos besoins.",
            "idInvalid": "N'utilisez que des lettres, des chiffres, des tirets, des traits de soulignement ou des points.",
            "idPrompt": "Identifiant de l'agent (utilisé comme nom de dossier sous agents/)",
            "idTitle": "Nouvel agent personnalisé",
            "noLocation": "Impossible de créer un agent personnalisé : aucun emplacement pour les modèles d'invite n'est configuré. Définissez un dossier global ou propre à l'espace de travail pour les modèles d'invite, puis réessayez."
          },
          "noDescription": "Aucune description disponible",
          "resetAllCapabilities": "Réinitialiser toutes les fonctionnalités à leurs valeurs par défaut",
          "resetAllDefaults": "Réinitialiser tous les paramètres par défaut",
          "selections": "Sélections"
        },
        "agentMode": {
          "enabled": {
            "mdDescription": "Activer le mode agent pour l'agent Coder. Le mode agent permet de modifier des fichiers de manière autonome sans confirmation supplémentaire.                 Une boîte de dialogue de confirmation s'affiche lors de la première utilisation du mode agent jusqu'à ce que cette option soit définie sur `true`."
          }
        },
        "agentModeConfirmation": {
          "continueAgentMode": "Continuer avec le mode Agent",
          "continueEditMode": "Passer au mode Édition",
          "info": "En continuant en mode Agent, votre confirmation est enregistrée. Vous pouvez la révoquer ultérieurement via le paramètre `ai-features.agentMode.enabled`.\n\nEn continuant en mode Édition, votre mode par défaut passe en mode Édition.\n\nVous pouvez changer de mode à tout moment via le sélecteur de mode ou dans la configuration de l'IA.",
          "msg": "Cet agent utilise un **mode agentique**. Pour permettre un flux autonome, il est capable d'écrire directement dans les fichiers de votre espace de travail sans confirmation supplémentaire.\n\nIl est recommandé d'utiliser un système de contrôle de version (par exemple Git) afin de pouvoir examiner et annuler les modifications.\n\nVous pouvez passer en **mode Édition** à l'aide du sélecteur de mode dans la zone de saisie du chat ci-dessous, ou utiliser l'agent **Architect** pour une planification en lecture seule.\n\nCette confirmation est enregistrée pour cet espace de travail et ne s'affichera plus. Pour la réinitialiser ou la configurer globalement, recherchez `ai-features.agentMode.confirmed` dans les paramètres.",
          "waiting": "En attente de confirmation..."
        },
        "allowAllMode": {
          "stripTooltip": "Les appels aux outils d'IA s'exécutent sans confirmation au cours de cette session. Ne les activez que dans des environnements auxquels vous faites confiance.",
          "stripTooltipFooter": "Configuration via l'option --session-preference. Redémarrez sans cette option pour restaurer vos paramètres enregistrés.",
          "title": "Mode « Allow-All » de Theia AI"
        },
        "app-tester": {
          "errorCheckingDevToolsServerStatus": "Vérification des erreurs Statut du serveur DevTools MCP : {0}",
          "errorCheckingPlaywrightServerStatus": "Vérification d'erreur Statut du serveur Playwright MCP : {0}",
          "startChromeDevToolsMcpServers": {
            "canceled": "Veuillez configurer le serveur MCP Chrome DevTools.",
            "error": "Échec du démarrage du serveur MCP Chrome DevTools : {0}",
            "progress": "Démarrage du serveur MCP Chrome DevTools.",
            "question": "Le serveur Chrome DevTools MCP n'est pas en cours d'exécution. Souhaitez-vous le démarrer maintenant ? Cela peut entraîner l'installation du serveur Chrome DevTools MCP."
          },
          "startMcpServers": {
            "no": "Non, annuler",
            "yes": "Oui, démarrez les serveurs."
          },
          "startPlaywrightServers": {
            "canceled": "Veuillez configurer les serveurs Playwright MCP.",
            "error": "Échec du démarrage des serveurs Playwright MCP : {0}",
            "progress": "Démarrage des serveurs Playwright MCP.",
            "question": "Les serveurs Playwright MCP ne sont pas en cours d'exécution. Souhaitez-vous les démarrer maintenant ? Cela peut entraîner l'installation des serveurs Playwright MCP."
          }
        },
        "architectAgent": {
          "mode": {
            "planNext": "Mode Plan (Suivant)",
            "simple": "Simple Mode"
          },
          "suggestion": {
            "executePlanWithCoder": "Exécutez « {0} » avec Coder."
          }
        },
        "browseAllChats": "Parcourir toutes les discussions...",
        "bypassHint": "Certains agents comme Claude Code ne nécessitent pas les modèles linguistiques Theia.",
        "chatDisabledMessage": {
          "title": "Les fonctionnalités d'IA sont désactivées."
        },
        "chatRestrictedMessage": {
          "title": "Les fonctionnalités d'IA sont limitées"
        },
        "childInteractionNeeded": "Une session déléguée nécessite votre attention",
        "codeReviewerAgent": {
          "description": "Assistant de révision de code qui analyse les modifications apportées au code et renvoie des verdicts structurés. Vérifie les critères de complétion, les preuves de compilation/lint/test et la qualité du code."
        },
        "coderAgent": {
          "mode": {
            "agentNext": "Mode agent (Suivant)",
            "edit": "Mode édition"
          },
          "suggestion": {
            "fixProblems": {
              "content": "[Corrigez les problèmes]({0}) dans le fichier actuel.",
              "prompt": "Veuillez consulter {1} et corriger les éventuels problèmes."
            },
            "startNewChat": "Les discussions doivent être courtes et ciblées. [Commencez une nouvelle discussion]({0}) pour une nouvelle tâche ou [commencez une nouvelle discussion avec un résumé de celle-ci]({1})."
          }
        },
        "collapseSession": "Réduire l'{0}",
        "commandAgent": {
          "commandCallback": {
            "confirmAction": "Compris",
            "label": "Commande IA",
            "message": "Exécution du rappel avec les arguments {0}. Le premier argument est l'identifiant de la commande enregistrée pour la commande enregistrée dynamiquement. Les autres arguments sont les arguments réels pour le gestionnaire."
          },
          "description": "Cet agent connaît toutes les commandes que l'utilisateur peut exécuter. En fonction de la demande de l'utilisateur, il peut trouver la commande appropriée et permettre à l'utilisateur de l'exécuter.",
          "response": {
            "customHandler": "Essayez d'exécuter ceci :",
            "noCommand": "Désolé, je ne trouve pas cette commande.",
            "theiaCommand": "J'ai trouvé cette commande qui pourrait vous aider :"
          },
          "vars": {
            "commandIds": {
              "description": "La liste des commandes disponibles."
            }
          }
        },
        "configurationState": "Problèmes de configuration",
        "configureAgent": {
          "header": "Configurer un agent par défaut"
        },
        "continueAnyway": "Continuer quand même",
        "createSkillAgent": {
          "mode": {
            "edit": "Mode par défaut"
          }
        },
        "enableAI": {
          "mdDescription": "Ce paramètre vous permet d'accéder aux dernières fonctionnalités d'IA.            \n            Il est important de savoir que ces fonctionnalités peuvent générer            des requêtes continues vers les modèles linguistiques (LLM) auxquels vous donnez accès. Cela peut entraîner des coûts que vous            devrez surveiller de près. En activant cette option, vous reconnaissez ces risques.            \n            **Remarque importante ! Les paramètres ci-dessous dans cette section ne prendront effet\n            qu'une fois le paramètre de la fonctionnalité principale activé. Après avoir activé la fonctionnalité, vous devez configurer au moins un            fournisseur LLM ci-dessous. Consultez également [la documentation](https://theia-ide.org/docs/user_ai/)**."
        },
        "expandSession": "Développer « {0} »",
        "exploreAgent": {
          "description": "Un assistant d'exploration de base de code qui extrait et synthétise les informations de la base de code. Il rend compte de ce qui existe, fournit des extraits de code et décrit les modèles observés."
        },
        "github": {
          "configureGitHubServer": {
            "canceled": "Configuration du serveur GitHub annulée. Veuillez configurer le serveur GitHub MCP pour utiliser cet agent.",
            "followup": "Fichier de paramètres ouvert. Veuillez ajouter votre jeton d'accès personnel GitHub à la propriété « serverAuthToken » dans la configuration du serveur GitHub, puis  enregistrez et réessayez.\n\nVous pouvez créer un jeton d'accès personnel à l'adresse suivante : https://github.com/settings/tokens",
            "no": "Non, annuler",
            "question": "Le serveur GitHub MCP n'est pas configuré. Souhaitez-vous le configurer maintenant ? Cela ouvrira le fichier settings.json dans lequel vous pourrez ajouter votre jeton d'accès GitHub.",
            "yes": "Oui, configurer le serveur GitHub"
          },
          "description": "Cet agent vous aide à interagir avec les référentiels GitHub, les tickets, les pull requests et d'autres fonctionnalités GitHub via le serveur GitHub MCP. Il peut vous aider à gérer vos référentiels, créer des tickets, traiter les pull requests et effectuer diverses opérations GitHub.",
          "errorCheckingGitHubServerStatus": "Vérification d'erreur de l'état du serveur GitHub MCP : {0}",
          "startGitHubServer": {
            "canceled": "Veuillez démarrer le serveur GitHub MCP pour utiliser cet agent.",
            "error": "Échec du démarrage du serveur GitHub MCP : {0}",
            "no": "Non, annuler",
            "progress": "Démarrage du serveur GitHub MCP.",
            "question": "Le serveur GitHub MCP est configuré mais ne fonctionne pas. Souhaitez-vous le démarrer maintenant ?",
            "yes": "Oui, démarrez le serveur."
          }
        },
        "githubCapability": {
          "description": "Permet à l'agent d'interagir avec GitHub. Pour cela, l'agent peut déléguer à l'agent GitHub, qui peut lire et écrire des tickets, des pull requests, des commentaires et le contenu du référentiel."
        },
        "githubRepoName": {
          "description": "Les dépôts GitHub associés aux racines de l'espace de travail (par exemple, « eclipse-theia/theia »)"
        },
        "howToGetStarted": "Comment commencer",
        "model-selection-description": "Choisissez les grands modèles linguistiques (LLM) utilisés par chaque agent IA dans la [vue Configuration IA]({0}).",
        "moreAgentsAvailable": {
          "header": "D'autres agents sont disponibles."
        },
        "noRecommendedAgents": "Aucun agent recommandé n'est disponible.",
        "openSettings": "Ouvrir les paramètres AI",
        "orchestrator": {
          "error": {
            "noAgents": "Aucun agent de chat n'est disponible pour traiter la demande. Veuillez vérifier votre configuration pour voir si l'un d'entre eux est activé."
          },
          "excludedAgents": {
            "mdDescription": "Liste des identifiants d'agents auxquels l'orchestrateur n'est pas autorisé à déléguer. Ces agents ne seront pas visibles par l'orchestrateur lors de la sélection d'un agent pour traiter une demande."
          },
          "progressMessage": "Déterminer l'agent le plus approprié",
          "response": {
            "delegatingToAgent": "Délégation à « @{0} »"
          }
        },
        "prReview": {
          "capability": {
            "codebaseExploration": {
              "description": "Délègue l'exploration de l'architecture, de l'utilisation, des conventions et des tests à l'agent Explore. Lorsqu'il est désactivé, le réviseur de PR effectue l'exploration à l'aide de ses propres outils.",
              "name": "Exploration déléguée"
            },
            "githubInfo": {
              "description": "Délègue à l'agent GitHub la récupération des métadonnées des pull requests, des différences, des commentaires, des vérifications et des tickets liés.",
              "name": "Informations sur les pull requests"
            },
            "localCheckout": {
              "description": "Extrait la pull request localement et protège les modifications apportées à l'arborescence de travail existante.",
              "name": "Vérifier"
            },
            "localValidation": {
              "description": "Exécute des tâches locales d'installation, de compilation, de lint, de test ou de validation similaire pour la pull request.",
              "name": "Compilation"
            },
            "pendingGitHubReview": {
              "description": "Délègue à l'agent GitHub la création ou la mise à jour d'une révision de pull request en attente avec des commentaires intégrés préparés, après confirmation explicite de l'utilisateur.",
              "name": "En attente de révision GH"
            }
          }
        },
        "prReviewAgent": {
          "description": "Un agent de révision de PR alimenté par l'IA qui orchestre un workflow complet de révision de code : il récupère les informations de PR, explore la base de code, effectue une analyse structurée, guide l'utilisateur de manière interactive à travers les résultats à l'aide de visualiseurs de différences et, en option, crée une révision en attente sur GitHub."
        },
        "prompt-template-description": "Sélectionnez les variantes d'invite et personnalisez les modèles d'invite pour les agents IA dans la [vue Configuration IA]({0}).",
        "requiresApproval": "Nécessite votre validation",
        "restoredSession": "Session restaurée",
        "restrictedModeDetails": "Le chat IA, les suggestions en ligne, les actions de code et les modèles de prompt sont désactivés",
        "restrictedModeLabel": "Fonctionnalités IA (désactivées en mode restreint)",
        "sectionRestored": "Restauré",
        "sessionOverride": {
          "defaultToolConfirmation": "Confirmation par défaut de l'outil : {0}",
          "toolConfirmation": "Remplacements de confirmation par outil : {0}",
          "toolConfirmationGeneric": "Définition des règles de remplacement des confirmations par outil"
        },
        "shellAllowlist": {
          "placeholder": "Par exemple, « git log » (exact) ou « git log * » (avec arguments)."
        },
        "shellDenylist": {
          "placeholder": "Par exemple, « git push * » ou « rm -rf / »."
        },
        "shellExecutionCapability": {
          "description": "Permet à l'agent d'exécuter des commandes shell arbitraires sur le système hôte. L'agent peut alors déléguer l'exécution de scripts qui ne sont pas disponibles en tant que tâches, interroger les informations système et effectuer des opérations pour lesquelles il n'existe aucun outil dédié.",
          "name": "Exécution du shell"
        },
        "skillsConfiguration": {
          "noSkills": "Aucune compétence disponible",
          "noSlashCommands": "Aucune commande slash disponible",
          "slashCommand": {
            "allAgents": "Tous les agents"
          },
          "slashCommandsSectionHeader": "Commandes slash"
        },
        "toolConfirmationInfo": {
          "header": "Confirmation de l'outil"
        },
        "toolConfirmationOverrides": {
          "stripTooltip": "Un ou plusieurs outils d'IA sont automatiquement approuvés pour cette session via des options de ligne de commande.",
          "title": "Remplacement des confirmations par l'outil d'IA"
        },
        "toolsConfiguration": {
          "confirmAlwaysAllow": {
            "confirm": "Je comprends, activer l'approbation automatique",
            "genericWarning": "Cet outil nécessite une confirmation avant que l'approbation automatique puisse être activée. Une fois activée, toutes les invocations futures s'exécuteront sans confirmation. N'activez cette option que si vous faites confiance à cet outil et comprenez les risques potentiels.",
            "title": "Activer l'approbation automatique pour « {0} » ?"
          },
          "confirmationMode": {
            "label": "Confirmation Mode"
          },
          "default": {
            "label": "Mode de confirmation par défaut de l'outil :"
          },
          "recommendedDefaults": {
            "apply": "Autoriser les outils par défaut",
            "dialogConfirm": "Je comprends, autoriser",
            "dialogTitle": "Autoriser les outils par défaut ?",
            "message": "Les appels aux outils nécessitent actuellement une autorisation. Autoriser automatiquement tous les outils intégrés en une seule fois. Les outils nécessitant une confirmation supplémentaire (par exemple, l'exécution d'un shell), les outils MCP et tous les outils ajoutés ultérieurement demanderont toujours une autorisation avant de s'exécuter.",
            "msg": {
              "line1": "Cette option définit tous les outils intégrés actuellement enregistrés sur « Toujours autoriser ».",
              "line2": "Les outils nécessitant une confirmation supplémentaire (tels que l'exécution d'un shell) demanderont toujours une confirmation avant de s'exécuter.",
              "line3": "Les outils MCP sont des outils tiers et ne sont pas inclus. Vous pouvez les autoriser individuellement dans cette vue.",
              "line4": "Les outils ajoutés ultérieurement seront toujours réglés par défaut sur « Confirmer » afin que vous puissiez les vérifier.",
              "line5": "Vous pouvez modifier ces éléments ultérieurement dans cette vue."
            }
          },
          "resetAll": "Tout réinitialiser",
          "resetAllConfirmDialog": {
            "msg": "Êtes-vous sûr de vouloir réinitialiser tous les modes de confirmation des outils à leur valeur par défaut ? Cela supprimera tous les paramètres personnalisés.",
            "title": "Réinitialiser tous les modes de confirmation des outils"
          },
          "resetAllTooltip": "Réinitialiser tous les outils aux paramètres par défaut",
          "shellAllowlist": {
            "description": "Les commandes correspondant à ces modèles seront automatiquement autorisées sans confirmation. Utilisez * comme caractère générique : « git log » (correspondance exacte), « git log * » (avec n'importe quel argument). Le caractère générique doit être précédé d'un espace.",
            "empty": "Aucun modèle configuré. Toutes les commandes shell nécessiteront une confirmation.",
            "title": "Liste blanche d'exécution du shell"
          },
          "shellDenylist": {
            "description": "Les commandes correspondant à ces modèles seront automatiquement refusées sans confirmation. Utilisez cette fonction pour bloquer les commandes dangereuses telles que « git push * » ou « rm -rf / ».",
            "empty": "Aucun modèle n'est configuré. Aucune commande shell ne sera automatiquement refusée.",
            "title": "Liste de refus d'exécution du shell"
          },
          "toolOptions": {
            "confirm": {
              "label": "Confirmer"
            }
          }
        },
        "tooltip": {
          "errorMessage": "Message d'erreur",
          "lastActivity": "Dernière activité",
          "lastMessage": "Dernier message",
          "multipleExchanges": "{0} échanges",
          "oneExchange": "1 échange",
          "unread": "Non lu"
        },
        "variableConfiguration": {
          "selectVariable": "Veuillez sélectionner une variable.",
          "usedByAgents": "Utilisé par les agents"
        },
        "waitingForInput": "En attente de votre saisie"
      },
      "llamaFile": {
        "prefs": {
          "mdDescription": "Ce paramètre vous permet de configurer et de gérer les modèles LlamaFile dans Theia IDE.            \n            Chaque entrée nécessite un « nom » convivial, l'« uri » du fichier pointant vers votre LlamaFile et le « port » sur lequel il s'exécutera.            \n            Pour démarrer un LlamaFile, utilisez la commande « Démarrer LlamaFile », qui vous permet de sélectionner le modèle souhaité.            \n            Si vous modifiez une entrée (par exemple, si vous changez le port), toute instance en cours d'exécution s'arrêtera et vous devrez la redémarrer manuellement.            \n            [Pour en savoir plus sur la configuration et la gestion des LlamaFiles, consultez la documentation de Theia IDE](https://theia-ide.org/docs/user_ai/#llamafile-models).",
          "name": {
            "description": "Nom du modèle à utiliser pour ce fichier Llamafile."
          },
          "port": {
            "description": "Le port à utiliser pour démarrer le serveur."
          },
          "title": "AI LlamaFile",
          "uri": {
            "description": "L'URI du fichier vers Llamafile."
          }
        },
        "start": "Démarrer Llamafile",
        "stop": "Stop Llamafile"
      },
      "llamafile": {
        "error": {
          "noConfigured": "Aucun Llamafiles configuré.",
          "noRunning": "Aucun Llamafiles en cours d'exécution.",
          "startFailed": "Une erreur s'est produite lors du démarrage de llamafile : {0}.\nPour plus d'informations, consultez la console.",
          "stopFailed": "Une erreur s'est produite lors de l'arrêt de llamafile : {0}.\nPour plus d'informations, consultez la console."
        }
      },
      "mcp": {
        "blockedServersLabel": "Serveurs MCP (démarrage automatique bloqué)",
        "error": {
          "allServersRunning": "Tous les serveurs MCP sont déjà en cours d'exécution.",
          "authenticationRequired": "Le serveur MCP « {0} » nécessite une authentification. Redémarrez le serveur pour vous connecter.",
          "getRedirectUrlFailed": "Une erreur s'est produite lors de la détermination de l'URL de redirection OAuth MCP.",
          "noOAuthServersConfigured": "Aucun serveur MCP prenant en charge OAuth n'est configuré.",
          "noRunningServers": "Aucun serveur MCP n'est en cours d'exécution.",
          "noServersConfigured": "Aucun serveur MCP n'est configuré.",
          "oauthRequiresTrustedWorkspace": "Le démarrage des serveurs MCP compatibles OAuth nécessite un espace de travail de confiance.",
          "signInFailed": "Une erreur s'est produite lors de la connexion au serveur MCP.",
          "signOutFailed": "Une erreur s'est produite lors de la déconnexion du serveur MCP.",
          "startFailed": "Une erreur s'est produite lors du démarrage du serveur MCP.",
          "stopFailed": "Une erreur s'est produite lors de l'arrêt du serveur MCP."
        },
        "getRedirectUrl": {
          "label": "MCP : Obtenir l'URL de redirection OAuth MCP"
        },
        "info": {
          "oauthRedirectUrl": "URL de redirection OAuth MCP : {0}",
          "serverSignedIn": "Connecté au serveur MCP « {0} ».",
          "serverSignedOut": "Déconnexion du serveur MCP « {0} ».",
          "serverStarted": "Le serveur MCP « {0} » a démarré avec succès. Outils enregistrés : {1}",
          "signInCancelled": "La connexion au serveur MCP « {0} » a été annulée."
        },
        "oauth": {
          "completeSignInInBrowser": "Effectuez la connexion MCP via OAuth dans votre navigateur. Si aucun onglet de connexion ne s'est ouvert, il se peut que votre navigateur ait bloqué la fenêtre contextuelle.",
          "notification": {
            "signInPrompt": "Le serveur MCP « {0} » nécessite une autorisation pour démarrer."
          }
        },
        "servers": {
          "args": {
            "mdDescription": "Tableau d'arguments à transmettre à la commande.",
            "title": "Arguments pour la commande"
          },
          "autostart": {
            "mdDescription": "Démarrer automatiquement ce serveur au démarrage du frontend. Les serveurs nouvellement ajoutés ne sont pas immédiatement démarrés automatiquement, mais lors du redémarrage.",
            "title": "Démarrage automatique"
          },
          "command": {
            "mdDescription": "Commande utilisée pour démarrer le serveur MCP, par exemple « uvx » ou « npx ».",
            "title": "Commande pour exécuter le serveur MCP"
          },
          "deferLoading": {
            "mdDescription": "S'ils sont activés, les outils fournis par ce serveur sont marqués comme différés dans le fragment d'invite généré `mcp_<server>_tools`. Les outils différés ne sont pas chargés d'emblée dans le contexte du modèle. Au lieu de cela, le modèle les découvre à la demande via le mécanisme de recherche d’outils intégré du fournisseur (Anthropic, OpenAI) lorsqu’il est pris en charge. Cela réduit considérablement la surcharge en jetons pour les serveurs qui exposent de nombreux outils.",
            "title": "Report du chargement"
          },
          "env": {
            "mdDescription": "Variables d'environnement facultatives à définir pour le serveur, telles qu'une clé API.",
            "title": "Variables d'environnement"
          },
          "headers": {
            "mdDescription": "En-têtes supplémentaires facultatifs inclus dans chaque requête adressée au serveur. Les valeurs des en-têtes sont stockées dans les préférences sous forme de texte brut ; évitez d'utiliser les paramètres de l'espace de travail s'ils contiennent des valeurs sensibles."
          },
          "mdDescription": "Configurez les serveurs MCP soit en local à l'aide d'une commande, d'arguments et, éventuellement, de variables d'environnement, soit à distance à l'aide de l'URL du serveur, d'un jeton d'authentification, d'une configuration OAuth et, éventuellement, d'un nom d'en-tête d'authentification. Il est également possible de configurer le démarrage automatique (activé par défaut). Chaque serveur est identifié par une clé unique, telle que « brave-search » ou « filesystem ». Pour démarrer un serveur, utilisez la commande « MCP : Démarrer le serveur MCP », qui vous permet de sélectionner le serveur souhaité. Pour arrêter un serveur, utilisez la commande « MCP : Arrêter le serveur MCP ». Veuillez noter que le démarrage automatique ne prendra effet qu’après un redémarrage ; vous devez donc démarrer le serveur manuellement la première fois. Les serveurs installés à partir d’un registre IA comportent un bloc `registryMetadata` supplémentaire qui est géré automatiquement et n’est pas destiné à être modifié manuellement.\nExemple de configuration :\n```{\n  \"brave-search\": {\n    \"command\": \"npx\",\n    \"args\": [\n      \"-y\",\n      \"@modelcontextprotocol/server-brave-search\"\n    ],\n    \"env\": {\n      \"BRAVE_API_KEY\": \"VOTRE_CLÉ_API\"\n    },\n  },\n  \"filesystem\": {\n    \"command\": \"npx\",\n    \"args\": [\"-y\", \"@modelcontextprotocol/server-filesystem\", \"/Users/VOTRE_NOM_D'UTILISATEUR/Desktop\"],\n    \"env\": {\n      \"CUSTOM_ENV_VAR\": \"custom-value\"\n    },\n    \"autostart\": false\n  },\n  \"jira\" : {\n    \"serverUrl\" : \"YOUR_JIRA_MCP_SERVER_URL\",\n    \"serverAuthToken\" : \"YOUR_JIRA_MCP_SERVER_TOKEN\"\n  },\n  \"oauth-protected-server\": {\n    \"serverUrl\": \"VOTRE_URL_DU_SERVEUR_MCP_PROTÉGÉ_PAR_OAUTH\",\n    \"oauth\" : {\n      \"clientId\" : \"ID_CLIENT_FACULTATIF\",\n      \"scopes\" : [\"CHAMP D'APPLICATION_FACULTATIF\"]\n    }\n  }\n  }\n```",
          "oauth": {
            "authorizationServer": {
              "mdDescription": "Remplacement facultatif de l'URL du serveur d'autorisation. Si elle est omise, Theia la récupère auprès du serveur MCP.",
              "title": "Serveur d'autorisation"
            },
            "clientId": {
              "mdDescription": "ID client OAuth statique facultatif. S'il est omis, Theia tente un enregistrement dynamique du client.",
              "title": "Client ID"
            },
            "clientSecret": {
              "mdDescription": "Clé secrète OAuth facultative pour les serveurs d’autorisation qui n’acceptent que les clients confidentiels préenregistrés (pas d’enregistrement dynamique des clients). Utilisée uniquement avec l’ID client. Elle est stockée dans les préférences sous forme de texte clair ; évitez de l’enregistrer dans les paramètres de l’espace de travail si cette clé est sensible.",
              "title": "Client Secret"
            },
            "mdDescription": "Configuration OAuth 2.1 facultative pour les serveurs MCP distants nécessitant une autorisation. La présence de cet objet active OAuth pour le serveur ; supprimez-le pour désactiver OAuth. Theia utilise par défaut des clients publics avec PKCE ; ne configurez un secret client que pour les serveurs exigeant un client confidentiel préenregistré. Les modifications prennent effet après le redémarrage du serveur MCP.",
            "resource": {
              "mdDescription": "Remplacement facultatif de l'indicateur de ressource RFC 8707 pour ce serveur MCP.",
              "title": "Ressource"
            },
            "scopes": {
              "mdDescription": "Portées OAuth facultatives à demander si le serveur ne publie pas de portées.",
              "title": "Portées"
            },
            "title": "OAuth"
          },
          "registryMetadata": {
            "configHash": {
              "mdDescription": "Hachage du contenu de l'autorisation du registre utilisée pour installer ce serveur.",
              "title": "Hachage de la configuration du registre"
            },
            "mdDescription": "Métadonnées de provenance pour un serveur installé à partir d'un registre d'IA. Rédigées par `@theia/ai-registry` ; non modifiables par l'utilisateur.",
            "serverId": {
              "mdDescription": "Identifie l'entrée de registre IA à partir de laquelle ce serveur a été installé.",
              "title": "Identifiant du serveur de registre"
            },
            "title": "Métadonnées du registre",
            "version": {
              "mdDescription": "Version enregistrée dans le registre au moment de l'installation.",
              "title": "Version du registre"
            }
          },
          "serverAuthToken": {
            "mdDescription": "Le jeton d'authentification pour le serveur, le cas échéant. Celui-ci est stocké dans les préférences sous forme de texte clair ; évitez de l'enregistrer dans les paramètres de l'espace de travail si ce jeton est sensible.",
            "title": "Jeton d'authentification"
          },
          "serverAuthTokenHeader": {
            "mdDescription": "Nom d'en-tête à utiliser pour le jeton d'authentification du serveur. S'il n'est pas fourni, « Authorization » avec « Bearer » sera utilisé.",
            "title": "Nom de l'en-tête d'authentification"
          },
          "serverUrl": {
            "mdDescription": "URL du serveur MCP distant. Si elle est fournie, le serveur se connectera à cette URL au lieu de démarrer un processus local.",
            "title": "URL du serveur"
          },
          "title": "MCP Server Configuration"
        },
        "signin": {
          "label": "MCP : Se connecter au serveur MCP"
        },
        "signout": {
          "label": "MCP : Se déconnecter du serveur MCP"
        },
        "start": {
          "label": "MCP : Démarrer le serveur MCP"
        },
        "stop": {
          "label": "MCP : Arrêter le serveur MCP"
        },
        "useWorkspaceAsRoot": {
          "mdDescription": "Les racines définissent les limites dans lesquelles les serveurs peuvent fonctionner au sein du système de fichiers. Si cette option est activée, les dossiers de l'espace de travail seront utilisés comme racines, sinon les serveurs MCP auront accès à l'ensemble du système de fichiers. La modification de ce paramètre entraînera le redémarrage de tous les serveurs MCP en cours d'exécution afin d'appliquer la nouvelle configuration des racines.",
          "title": "Utiliser l'espace de travail en tant que racine"
        },
        "warn": {
          "serverPreferenceChangeFailed": "Échec de l'application des modifications apportées aux préférences du serveur MCP : {0}",
          "signInNotCompleted": "La connexion au serveur MCP « {0} » n'a pas abouti."
        }
      },
      "mcpConfiguration": {
        "autostart": "Démarrage automatique",
        "browseAIRegistry": "Parcourir le registre IA",
        "browseAIRegistryTooltip": "Ouvrez la vue « Extensions » pour parcourir les entrées du registre de l'IA",
        "command": {
          "addServer": "Ajouter une configuration MCP locale..."
        },
        "copiedAllList": "Tous les outils ont été copiés dans le presse-papiers (liste de tous les outils)",
        "copiedAllSingle": "Tous les outils ont été copiés dans le presse-papiers (fragment d'invite unique avec tous les outils).",
        "copiedForPromptTemplate": "Copie de tous les outils dans le presse-papiers pour le modèle d'invite (fragment d'invite unique avec tous les outils)",
        "copyAllList": "Tout copier (liste de tous les outils)",
        "copyAllSingle": "Copier tout pour le chat (fragment d'invite unique avec tous les outils)",
        "copyForPrompt": "Outil de copie (pour le chat ou le modèle d'invite)",
        "copyForPromptTemplate": "Copier tout pour le modèle d'invite (fragment d'invite unique avec tous les outils)",
        "deferLoading": "Différer le chargement des outils",
        "deleteServer": "Supprimer le serveur",
        "deleteServerDialogMsg": "Êtes-vous sûr de vouloir supprimer le serveur « {0} » ?",
        "deleteServerDialogTitle": "Supprimer le serveur MCP",
        "deleteServerError": "Échec de la suppression du serveur MCP : {0}",
        "editServer": "Modifier le serveur",
        "editServerTitle": "Modifier le serveur MCP",
        "environmentVariables": "Variables d'environnement",
        "form": {
          "argsPlaceholder": "Séparés par des espaces, par exemple -y @modelcontextprotocol/server-brave-search",
          "authHeaderPlaceholder": "Par défaut : autorisation avec porteur",
          "authTokenPlaceholder": "Jeton d'authentification facultatif",
          "autostart": "Démarrage automatique",
          "commandPlaceholder": "Par exemple, npx ou uvx.",
          "commandRequired": "La commande est requise pour les serveurs locaux.",
          "deferLoading": "Différer le chargement des outils (découvrir les outils à la demande via la recherche d'outils du fournisseur)",
          "envPlaceholder": "KEY=valeur (une par ligne)",
          "headersPlaceholder": "Nom-de-l'en-tête=valeur (un par ligne)",
          "localServer": "Local (Commande)",
          "nameExists": "Un serveur portant ce nom existe déjà.",
          "nameRequired": "Le nom du serveur est obligatoire.",
          "oauthAuthorizationServerInvalid": "Le serveur d'autorisation OAuth doit être une URL http(s) valide",
          "oauthAuthorizationServerPlaceholder": "URL facultative du serveur d'autorisation",
          "oauthClientIdPlaceholder": "ID client statique facultatif",
          "oauthClientSecretPlaceholder": "Uniquement pour les serveurs nécessitant un client confidentiel",
          "oauthPublicClientDescription": "Theia utilise par défaut des clients OAuth publics avec PKCE. Ne fournissez un secret client que si le serveur exige un client confidentiel préenregistré.",
          "oauthRedirectUrlDescription": "Les callbacks d'autorisation sont envoyés à cette URL. Si vous disposez d'un identifiant client statique, enregistrez-le en tant qu'URI de redirection auprès de votre fournisseur OAuth.",
          "oauthResourceInvalid": "La ressource OAuth doit être une URL http(s) valide",
          "oauthResourcePlaceholder": "URI de ressource facultative",
          "oauthScopesPlaceholder": "Portées séparées par des espaces",
          "oauthSharedCredentialsDescription": "Les sessions OAuth enregistrées sont partagées entre les espaces de travail qui utilisent le même nom de serveur et la même URL (ou ressource).",
          "remoteOAuthServer": "À distance (OAuth)",
          "remoteServer": "À distance (URL)",
          "saveChanges": "Enregistrer les modifications",
          "serverName": "Nom du serveur",
          "serverNamePlaceholder": "Par exemple, my-mcp-server",
          "serverUrlPlaceholder": "Par exemple, https://mcp.example.com",
          "serverUrlRequired": "L'URL du serveur est requise pour les serveurs distants."
        },
        "fromRegistryLink": "Extrait du registre",
        "oauth": "OAuth",
        "oauthAuthorizationServer": "Serveur d'autorisation",
        "oauthClientId": "ID client OAuth",
        "oauthClientSecret": "Clé secrète du client OAuth",
        "oauthRedirectUrl": "URL de redirection",
        "oauthResource": "Ressource OAuth",
        "oauthScopes": "Portées OAuth",
        "openInRegistry": "Ouvrir dans le registre AI : {0}",
        "saveServerError": "Échec de l'enregistrement de la configuration du serveur MCP : {0}",
        "serverAuthToken": "Jeton d'authentification",
        "serverAuthTokenHeader": "Nom de l'en-tête d'authentification",
        "serverUrl": "URL du serveur",
        "signInServerFailed": "Échec de la connexion au serveur MCP « {0} ».",
        "signInServerNotCompleted": "La connexion au serveur MCP « {0} » n'a pas abouti.",
        "signInServerSucceeded": "Connecté au serveur MCP « {0} ».",
        "signOutServerDialogMsg": "Êtes-vous sûr de vouloir vous déconnecter du serveur « {0} » ? Cette opération supprime les jetons OAuth enregistrés pour ce serveur.",
        "signOutServerDialogTitle": "Se déconnecter du serveur MCP",
        "signOutServerFailed": "Échec de la déconnexion du serveur MCP « {0} ».",
        "startServerFailed": "Échec du démarrage du serveur MCP « {0} ».",
        "stopServerFailed": "Impossible d'arrêter le serveur MCP « {0} ».",
        "tools": "Outils : "
      },
      "openai": {
        "apiKey": {
          "mdDescription": "Saisissez la clé API de votre compte OpenAI officiel. **Remarque :** en utilisant cette préférence, la clé API Open AI sera stockée en texte clair sur la machine exécutant Theia. Utilisez la variable d'environnement `OPENAI_API_KEY` pour définir la clé de manière sécurisée."
        },
        "compaction": {
          "default": "Respectez le paramètre global de compaction côté serveur du chat.",
          "description": "Remplacer la compaction côté serveur native du fournisseur pour les modèles OpenAI officiels. Cela s'applique uniquement à l'API OpenAI Response ; l'API Chat Completions l'ignore. La valeur « default » suit le paramètre global de chat ({0}). Lorsqu'elle est effectivement activée, l'API Response est chargée de résumer les anciens tours de conversation dès que la conversation dépasse le seuil défini par le fournisseur.",
          "disabled": "Ne demandez jamais de compactage côté serveur pour les modèles officiels d'OpenAI.",
          "enabled": "Demandez toujours la compaction côté serveur pour les modèles officiels d'OpenAI."
        },
        "compactionTokenThreshold": {
          "description": "Remplace le seuil global de tokens d'entrée pour la compaction côté serveur des modèles OpenAI officiels. Si ce paramètre n'est pas défini, le paramètre global ou la valeur par défaut du fournisseur s'applique. S'il est défini, la valeur doit être d'au moins 50 000 tokens."
        },
        "customEndpoints": {
          "apiKey": {
            "title": "Soit la clé permettant d'accéder à l'API fournie à l'URL indiquée, soit « true » pour utiliser la clé API OpenAI globale."
          },
          "apiVersion": {
            "title": "Soit la version permettant d'accéder à l'API fournie à l'URL donnée dans Azure, soit « true » pour utiliser la version globale de l'API OpenAI."
          },
          "deployment": {
            "title": "Nom du déploiement permettant d'accéder à l'API fournie à l'URL indiquée dans Azure."
          },
          "developerMessageSettings": {
            "title": "Contrôle le traitement des messages système : « user », « system » et « developer » seront utilisés comme rôle, « mergeWithFollowingUserMessage » préfixera le message utilisateur suivant avec le message système ou convertira le message système en message utilisateur si le message suivant n'est pas un message utilisateur. « skip » supprimera simplement le message système), la valeur par défaut étant « developer »."
          },
          "enableStreaming": {
            "title": "Indique si l'API de streaming doit être utilisée. `true` par défaut."
          },
          "id": {
            "title": "Identifiant unique utilisé dans l'interface utilisateur pour identifier le modèle personnalisé."
          },
          "mdDescription": "Intégrez des modèles personnalisés compatibles avec l'API OpenAI, par exemple via `vllm`. Les attributs obligatoires sont `model` et `url`.            \n            En option, vous pouvez            \n            - spécifier un `id` unique pour identifier le modèle personnalisé dans l'interface utilisateur. Si aucun n'est fourni, `model` sera utilisé comme `id`.            \n            - fournir une `apiKey` pour accéder à l'API servie à l'URL indiquée. Utilisez `true` pour indiquer l'utilisation de la clé API OpenAI globale.            \n            - fournir une `apiVersion` pour accéder à l'API servie à l'URL indiquée dans Azure. Utilisez `true` pour indiquer l'utilisation de la version globale de l'API OpenAI.            \n            - fournissez un nom de `déploiement` pour votre déploiement Azure.            \n            - définissez `developerMessageSettings` sur l'une des valeurs suivantes : `user`, `system`, `developer`, `mergeWithFollowingUserMessage` ou `skip` pour contrôler la manière dont le message du développeur est            inclus (où `user`, `system` et `developer` seront utilisés comme rôle, `mergeWithFollowingUserMessage` préfixera le message utilisateur suivant avec le message système ou convertira le message système en message utilisateur si le message suivant n'est pas un message utilisateur. `skip` supprimera simplement le message système). La valeur par défaut est `developer`.            \n            - Spécifiez `supportsStructuredOutput: false` pour indiquer que la sortie structurée ne doit pas être utilisée.            \n            - Spécifiez `enableStreaming: false` pour indiquer que le streaming ne doit pas être utilisé.            \n            - Spécifiez `useResponseApi: true` pour utiliser la nouvelle API OpenAI Response au lieu de l'API Chat Completion (nécessite un point de terminaison compatible).            \n            - Spécifiez `reasoningSupport` pour activer le sélecteur de raisonnement du chat. Fournissez un objet avec `supportedLevels` (par exemple `[\"off\", \"low\", \"medium\", \"high\", \"auto\"]`) et un `defaultLevel` facultatif.            \n            Consultez [notre documentation](https://theia-ide.org/docs/user_ai/#openai-compatible-models-eg-via-vllm) pour plus d'informations.",
          "modelId": {
            "title": "ID du modèle"
          },
          "reasoningSupport": {
            "title": "Définit les capacités de raisonnement du modèle. Lorsque cette option est activée, la fenêtre de discussion affiche un sélecteur de raisonnement pour ce modèle."
          },
          "supportsStructuredOutput": {
            "title": "Indique si le modèle prend en charge la sortie structurée. `true` par défaut."
          },
          "url": {
            "title": "Point de terminaison compatible avec l'API Open AI où le modèle est hébergé."
          },
          "useResponseApi": {
            "title": "Utilisez la nouvelle API OpenAI Response à la place de l'API Chat Completion. `false` par défaut pour les fournisseurs personnalisés. Remarque : le système revient automatiquement à l'API Chat Completions lorsque des outils sont utilisés."
          }
        },
        "models": {
          "description": "Modèles OpenAI officiels à utiliser"
        },
        "useResponseApi": {
          "mdDescription": "Utilisez la nouvelle API OpenAI Response à la place de l'API Chat Completion pour les modèles officiels d'OpenAI. Ce paramètre s'applique uniquement aux modèles officiels d'OpenAI ; les fournisseurs personnalisés doivent le configurer individuellement."
        }
      },
      "promptTemplates": {
        "directories": {
          "description": "Liste des chemins relatifs indiquant les dossiers de l'espace de travail actuel à analyser pour les modèles d'invite spécifiques à WORKSPACE. Lorsque des modèles avec le même ID (nom de fichier) existent à plusieurs emplacements, les conflits sont résolus par ordre de priorité : fichiers de modèles spécifiques (priorité la plus élevée) > répertoires de l'espace de travail > répertoires globaux (priorité la plus faible).",
          "title": "Répertoires de modèles d'invites spécifiques à l'espace de travail"
        },
        "extensions": {
          "description": "Liste des extensions de fichiers supplémentaires dans les emplacements de prompt qui sont considérés comme des modèles de prompt. « .prompttemplate » est toujours considéré comme la valeur par défaut.",
          "title": "Extensions de fichiers supplémentaires pour les modèles d'invites"
        },
        "files": {
          "description": "Liste des chemins relatifs vers des fichiers spécifiques dans l'espace de travail actuel à utiliser comme modèles d'invite. Lorsque des modèles avec le même ID (nom de fichier) existent à plusieurs emplacements, les conflits sont résolus par ordre de priorité : fichiers de modèles spécifiques (priorité la plus élevée) > répertoires de l'espace de travail > répertoires globaux (priorité la plus faible).",
          "title": "Fichiers de modèles d'invites spécifiques à l'espace de travail"
        }
      },
      "scanoss": {
        "changeSet": {
          "clean": "Aucune correspondance",
          "error": "Erreur : relancer",
          "error-notification": "Erreur ScanOSS rencontrée : {0}.",
          "match": "Afficher les correspondances",
          "scan": "Scan",
          "scanning": "Analyse en cours..."
        },
        "mode": {
          "automatic": {
            "description": "Activer l'analyse automatique des extraits de code dans les vues de chat."
          },
          "description": "Configurez la fonctionnalité SCANOSS pour analyser les extraits de code dans les fenêtres de discussion. Cela enverra un hachage des extraits de code suggérés au service SCANOSS\nhébergé par la [Software Transparency Foundation](https://www.softwaretransparency.org/osskb) pour analyse.",
          "manual": {
            "description": "L'utilisateur peut déclencher manuellement l'analyse en cliquant sur l'élément SCANOSS dans la fenêtre de discussion."
          },
          "off": {
            "description": "La fonctionnalité est complètement désactivée."
          }
        },
        "snippet": {
          "dialog-header": "Résultats ScanOSS",
          "errored": "SCANOSS - Erreur - {0}",
          "file-name-heading": "Correspondance trouvée dans {0}",
          "in-progress": "SCANOSS - Exécution de l'analyse...",
          "match-count": "{0}s trouvées",
          "matched": "SCANOSS - Correspondance trouvée dans l'{0}",
          "no-match": "SCANOSS - Aucune correspondance"
        }
      },
      "session-settings-dialog": {
        "advancedSettings": "Paramètres avancés (JSON)",
        "compactionHeader": "Compactage côté serveur",
        "compactionLabel": "Compactage :",
        "compactionNote": "Remplace le paramètre de compaction global et propre à chaque fournisseur pour cette session. S'applique uniquement aux fournisseurs prenant en charge la compaction côté serveur.",
        "compactionTokenThreshold": "Seuil de jetons :",
        "confirmationTimeout": "Délai d'expiration de la confirmation",
        "confirmationTimeoutNote": "Refuser automatiquement les confirmations de l'outil après le délai spécifié. Remplace la préférence globale pour cette session.",
        "enableConfirmationTimeout": "Activer le délai d'expiration de la confirmation",
        "timeoutSeconds": "Délai d'expiration (en secondes) :",
        "title": "Définir les paramètres de session",
        "tooltip": "Définir les paramètres de session"
      },
      "terminal": {
        "agent": {
          "description": "Cet agent fournit une assistance pour écrire et exécuter des commandes de terminal arbitraires. En fonction de la demande de l'utilisateur, il suggère des commandes et permet à l'utilisateur de les coller et de les exécuter directement dans le terminal. Il accède au répertoire actuel, à l'environnement et à la sortie récente du terminal de la session de terminal afin de fournir une assistance contextuelle.",
          "vars": {
            "cwd": {
              "description": "Répertoire de travail actuel."
            },
            "recentTerminalContents": {
              "description": "Les 0 à 50 dernières lignes visibles dans le terminal."
            },
            "shell": {
              "description": "Le shell utilisé, par exemple /usr/bin/zsh."
            },
            "userRequest": {
              "description": "Question ou demande de l'utilisateur."
            }
          }
        },
        "askAi": "Demander à l'IA",
        "askTerminalCommand": "Demander une commande de terminal...",
        "hitEnterConfirm": "Appuyez sur Entrée pour confirmer.",
        "howCanIHelp": "Comment puis-je vous aider ?",
        "terminalCommandBlockAIVariable": {
          "description": "Enregistre une commande de terminal exécutée et la sortie correspondante.",
          "index": {
            "description": "Index du bloc de commande dans l'historique du terminal. Par défaut, il s'agit de la dernière commande si rien n'est spécifié."
          },
          "quickPick": {
            "placeholder": "Tapez pour filtrer les commandes",
            "title": "Sélectionnez une commande et son résultat dans l'historique du terminal"
          }
        },
        "tryAgain": "Réessayez...",
        "useArrowsAlternatives": " ou utilisez ⇅ pour afficher les alternatives..."
      },
      "tokenUsage": {
        "cachedInputTokens": "Jetons d'entrée écrits dans le cache",
        "cachedInputTokensTooltip": "Suivi en plus des « jetons d'entrée ». Généralement plus coûteux que les jetons non mis en cache.",
        "failedToGetTokenUsageData": "Échec de la récupération des données d'utilisation des jetons : {0}",
        "inputTokens": "Jetons d'entrée",
        "label": "Utilisation des jetons",
        "lastUsed": "Dernière utilisation",
        "noData": "Aucune donnée d'utilisation des jetons n'est encore disponible.",
        "note": "L'utilisation des jetons est suivie depuis le démarrage de l'application et n'est pas conservée.",
        "outputTokens": "Jetons de sortie",
        "readCachedInputTokens": "Jetons d'entrée lus à partir du cache",
        "readCachedInputTokensTooltip": "Suivi en plus du « jeton d'entrée ». Généralement beaucoup moins coûteux que sans mise en cache. Ne compte généralement pas dans les limites de débit.",
        "totalTokensTooltip": "« Jetons d'entrée » + « Jetons de sortie »"
      },
      "vercelai": {
        "anthropicApiKey": {
          "mdDescription": "Saisissez une clé API pour les modèles Anthropic utilisés par le SDK Vercel AI. **Remarque :** en utilisant cette préférence, la clé API sera stockée en texte clair sur la machine exécutant Theia. Utilisez la variable d'environnement `ANTHROPIC_API_KEY` pour définir la clé de manière sécurisée."
        },
        "customEndpoints": {
          "apiKey": {
            "title": "Soit la clé permettant d'accéder à l'API fournie à l'URL indiquée, soit « true » pour utiliser la clé API globale."
          },
          "enableStreaming": {
            "title": "Indique si l'API de streaming doit être utilisée. `true` par défaut."
          },
          "id": {
            "title": "Identifiant unique utilisé dans l'interface utilisateur pour identifier le modèle personnalisé."
          },
          "mdDescription": "Intégrez des modèles personnalisés compatibles avec le SDK Vercel AI. Les attributs requis sont « model » et « url ».            \n            Vous pouvez également            \n            - spécifier un « id » unique pour identifier le modèle personnalisé dans l'interface utilisateur. Si aucun n'est fourni, « model » sera utilisé comme « id ».            \n            - fournir une « apiKey » pour accéder à l'API servie à l'URL donnée. Utilisez « true » pour indiquer l'utilisation de la clé API globale.            \n            - spécifiez « supportsStructuredOutput: false » pour indiquer que la sortie structurée ne doit pas être utilisée.            \n            - spécifiez « enableStreaming: false » pour indiquer que le streaming ne doit pas être utilisé.            \n            - spécifiez « provider » pour indiquer le fournisseur du modèle (openai, anthropic).",
          "modelId": {
            "title": "ID du modèle"
          },
          "supportsStructuredOutput": {
            "title": "Indique si le modèle prend en charge la sortie structurée. `true` par défaut."
          },
          "url": {
            "title": "Le point de terminaison API où le modèle est hébergé."
          }
        },
        "models": {
          "description": "Modèles officiels à utiliser avec le SDK Vercel AI",
          "id": {
            "title": "ID du modèle"
          },
          "model": {
            "provider": "Fournisseur",
            "title": "Nom du modèle"
          }
        },
        "openaiApiKey": {
          "mdDescription": "Saisissez une clé API pour les modèles OpenAI utilisés par le SDK Vercel AI. **Remarque :** en utilisant cette préférence, la clé API sera stockée en texte clair sur la machine exécutant Theia. Utilisez la variable d'environnement `OPENAI_API_KEY` pour définir la clé de manière sécurisée."
        }
      },
      "workspace": {
        "allowedExternalPaths": {
          "description": "Liste des chemins absolus ou des URI de fichiers (répertoires ou fichiers) situés en dehors de l'espace de travail que les outils d'IA peuvent lire. Prend en charge `~` pour faire référence au répertoire personnel de l'utilisateur. Vide par défaut ; activation facultative uniquement. Prise en charge par getFileContent, findFilesByPattern, getWorkspaceFileList et getWorkspaceDirectoryStructure. Les valeurs relatives à l'espace de travail sont ignorées lorsque l'espace de travail n'est pas considéré comme fiable. Les liens symboliques à l'intérieur des répertoires de la liste blanche sont suivis et peuvent pointer vers des fichiers en dehors de la liste blanche ; n'ajoutez que des répertoires dont vous approuvez le contenu.",
          "title": "Chemins externes autorisés"
        },
        "coderAgent": {
          "description": "Assistant IA intégré à Theia IDE, conçu pour aider les développeurs de logiciels. Cet agent peut accéder à l'espace de travail des utilisateurs, obtenir la liste de tous les fichiers et dossiers disponibles et récupérer leur contenu. De plus, il peut suggérer des modifications de fichiers à l'utilisateur. Il peut donc aider l'utilisateur dans ses tâches de codage ou d'autres tâches impliquant des modifications de fichiers."
        },
        "considerGitignore": {
          "description": "Si cette option est activée, elle exclut les fichiers/dossiers correspondant aux règles .gitignore présentes dans le répertoire racine de chaque espace de travail.",
          "title": "Considérez .gitignore"
        },
        "createSkillAgent": {
          "description": "Un assistant IA permettant de créer de nouvelles compétences. Les compétences fournissent des instructions réutilisables et des connaissances métier aux agents IA. Cet assistant vous aide à créer des compétences bien structurées dans le répertoire .agents/skills ou .prompts/skills, avec un frontmatter YAML et un contenu Markdown appropriés. Cette fonctionnalité en est encore à un stade précoce et est susceptible d'évoluer."
        },
        "excludedPattern": {
          "description": "Liste des modèles (glob ou regex) pour les fichiers/dossiers à exclure.",
          "title": "Modèles de fichiers exclus"
        },
        "fileContentMaxSizeKB": {
          "description": "Taille maximale en kilo-octets du contenu renvoyé par l'outil getFileContent. Lors de la lecture d'un fichier complet (sans décalage ni limite), les fichiers dépassant cette limite renvoient une erreur. Lorsque l'on utilise un décalage et une limite, seule la plage demandée est vérifiée par rapport à cette limite.",
          "title": "Taille maximale du contenu du fichier (Ko)"
        },
        "projectInfoAgent": {
          "description": "Assistant IA pour la gestion des modèles d'informations de projet. Cet agent aide à créer, mettre à jour et réviser le fichier .prompts/project-info.prompttemplate qui fournit des informations contextuelles sur votre projet à d'autres agents IA. Il peut analyser votre espace de travail pour suggérer des informations de projet ou mettre à jour des modèles existants en fonction de vos besoins."
        },
        "searchMaxResults": {
          "description": "Nombre maximal de résultats renvoyés par la fonction de recherche de l'espace de travail.",
          "title": "Résultats de recherche maximum"
        },
        "workspaceAgent": {
          "description": "Assistant IA intégré à Theia IDE, conçu pour aider les développeurs de logiciels. Cet agent peut accéder à l'espace de travail des utilisateurs, obtenir la liste de tous les fichiers et dossiers disponibles et récupérer leur contenu. Il ne peut pas modifier les fichiers. Il peut donc répondre à des questions sur le projet en cours, les fichiers du projet et le code source dans l'espace de travail, par exemple comment construire le projet, où placer le code source, où trouver un code ou des configurations spécifiques, etc."
        }
      }
    },
    "ai-chat": {
      "fileChangeSetTitle": "Modifications proposées"
    },
    "ai-chat-ui": {
      "blockedResource": {
        "allow": "Autoriser ce contenu bloqué",
        "aria": "Ressources externes bloquées : {0}",
        "inlineContent": "(contenu externe intégré)",
        "label": "Ressource externe bloquée :",
        "resourcesToAllow": "{0} les ressources seront activées"
      },
      "browseAllChats": "Parcourir toutes les discussions...",
      "confirm": "Confirmer",
      "deleteChat": "Supprimer le chat",
      "home": "Accueil",
      "initiate-session-task-context": "Contexte de la tâche : lancer une session",
      "noOutput": "Pas de sortie",
      "open-current-session-summary": "Ouvrir le résumé de la session actuelle",
      "open-settings-tooltip": "Ouvrir les paramètres AI...",
      "openSession": "Ouvrir une session de chat",
      "renameChat": "Renommer le chat",
      "scroll-lock": "Verrouiller le défilement",
      "scroll-unlock": "Déverrouiller le défilement",
      "session-settings": "Définir les paramètres de session",
      "summarize-current-session": "Résumer la session actuelle"
    },
    "ai-claude-code": {
      "open-config": "Open Claude Code Configuration",
      "open-memory": "Open Claude Code Memory (CLAUDE.MD)"
    },
    "ai-core": {
      "agentCompletionMessage": "L'agent « {0} » a terminé sa tâche.",
      "agentCompletionMessageWithSession": "L'agent « {0} » a terminé sa tâche dans « {1} ».",
      "agentCompletionTitle": "Agent « {0} » Tâche terminée",
      "agentInputNeededMessage": "L'agent « {0} » a besoin de votre contribution.",
      "agentInputNeededMessageWithSession": "L'agent « {0} » a besoin de votre contribution dans « {1} ».",
      "agentInputNeededTitle": "L'agent « {0} » a besoin de votre avis",
      "aiDisabledInRestrictedMode": "Les fonctionnalités d'IA ne sont pas disponibles dans les espaces de travail non approuvés.",
      "preferences": {
        "linuxEnvHint": "Sous Linux, assurez-vous que la variable est définie dans `~/.profile` (et pas seulement dans `~/.bashrc`) si vous lancez l'application à partir d'un raccourci sur le bureau. Consultez la [documentation](https://theia-ide.org/docs/user_ai/#setting-api-keys) pour plus de détails.",
        "title": "Fonctionnalités IA"
      },
      "showChat": "Afficher le chat"
    },
    "ai-editor": {
      "contextMenu": "Demander à l'IA",
      "sendToChat": "Envoyer à l'IA Chat"
    },
    "ai-ide": {
      "addressGhReviewCommand": {
        "argumentHint": "<pr-number>",
        "description": "Commentaires sur la révision d'adresse dans une demande d'extraction GitHub"
      },
      "appTester": {
        "description": "Délègue à l'agent AppTester la vérification de l'interface utilisateur basée sur un navigateur après la mise en œuvre.",
        "name": "Test E2E"
      },
      "codeReview": {
        "description": "Délègue à l'agent de révision du code après chaque implémentation. Bloque les étapes suivantes jusqu'à ce que la révision soit validée."
      },
      "fixGhTicketCommand": {
        "argumentHint": "<numéro de ticket>",
        "description": "Analyser un ticket GitHub et mettre en œuvre la solution."
      },
      "newChat": "Nouveau chat",
      "noSessions": "Aucune session de chat pour l'instant.",
      "open-ai-configuration-tooltip": "Open AI Configuration",
      "perspective": {
        "aiFirst": "AI First"
      },
      "rememberCommand": {
        "argumentHint": "[topic-hint]",
        "description": "Extraire les sujets d'une conversation et mettre à jour les informations sur le projet"
      },
      "sessionsView": "AI Sessions",
      "ticketCommand": {
        "argumentHint": "<numéro de ticket>",
        "description": "Analyser un ticket GitHub et créer un plan de mise en œuvre"
      },
      "todoTool": {
        "noTasks": "Aucune tâche"
      },
      "userInteractionCommentPlaceholder": "Ajoutez un commentaire pour cette étape...",
      "userInteractionEmpty": "Vide",
      "userInteractionFinishStep": "Terminer",
      "userInteractionGoToStep": "Accédez à l'étape {0} : {1}",
      "userInteractionMalformed": "L'interaction utilisateur n'a pas pu être affichée",
      "userInteractionMalformedFallback": "Les arguments n'ont pas pu être analysés.",
      "userInteractionPreparing": "Préparation de l'interaction avec l'utilisateur...",
      "userInteractionPreparingSteps": "Préparation : {0} (étapes de {1})",
      "userInteractionPreparingTitle": "Préparation : {0}",
      "userInteractionWorkingCopy": "Copie de travail"
    },
    "ai-mcp": {
      "installDialog": {
        "authTokenPlaceholder": "Requis par ce serveur pour établir la connexion",
        "authTokenRequired": "Un jeton d'authentification est nécessaire pour installer ce serveur.",
        "oauthClientIdPlaceholder": "Requis par ce serveur pour établir la connexion",
        "oauthClientSecretPlaceholder": "Requis par ce serveur pour établir la connexion",
        "oauthCredentialsRequired": "Un identifiant client OAuth et un secret client sont nécessaires pour installer ce serveur.",
        "oauthDescription": "Ce serveur utilise OAuth avec un client confidentiel préenregistré. Indiquez l'ID client et la clé secrète fournis par votre fournisseur OAuth.",
        "title": "Installer MCP Server",
        "trust": {
          "unknown": "Aucun registre d'IA n'est configuré : la fiabilité ne peut pas être vérifiée.",
          "unverified": "Ce serveur ne figure pas dans votre registre AI ({0}). Installez-le à vos propres risques.",
          "verified": "Approuvé par votre registre d'IA ({0})."
        }
      },
      "installUri": {
        "alreadyInstalled": {
          "msg": "Un serveur MCP nommé « {0} » est déjà configuré. Si vous continuez, l'entrée existante sera écrasée par la configuration issue du registre.",
          "title": "Serveur MCP déjà installé"
        },
        "missingId": "Le lien d'installation ne comporte pas le paramètre « id » requis.",
        "noRegistry": "Impossible d'installer le serveur MCP « {0} » : aucun registre AI n'est configuré dans ce produit.",
        "success": "Installation du serveur MCP « {0} » à partir du registre AI.",
        "unknownId": "Le serveur MCP « {0} » ne figure pas dans votre registre IA."
      }
    },
    "ai-registry": {
      "action": {
        "fix": "Correction de la configuration",
        "link": "Lien vers le registre",
        "unlink": "Supprimer le lien",
        "updateTooltip": "Mise à jour de {0} vers {1}"
      },
      "skill": {
        "action": {
          "fix": "Compétence « Correction »",
          "link": "Lien vers le registre",
          "unlink": "Supprimer le lien"
        },
        "fixed": "Restauration de la compétence « {0} ».",
        "githubToken": {
          "mdDescription": "Jeton d'accès personnel GitHub facultatif utilisé lors du téléchargement de compétences depuis GitHub. Un jeton permet d'augmenter la limite de débit de GitHub de 60 à 5 000 requêtes par heure. **Remarque :** si vous utilisez cette option, le jeton est stocké en clair sur la machine exécutant Theia. Privilégiez la variable d'environnement `GITHUB_TOKEN` pour le fournir de manière sécurisée."
        },
        "installUri": {
          "confirm": {
            "msg": "Installez la compétence « {0} » en téléchargeant ses fichiers depuis {1}?",
            "title": "Installer la compétence"
          },
          "fetchFailed": "Impossible de charger le registre IA pour installer la compétence « {0} ».",
          "missingId": "Le lien d'installation ne comporte pas le paramètre « id » requis.",
          "success": "Installation de la compétence « {0} » à partir du registre IA.",
          "unknownId": "La compétence « {0} » ne figure pas dans votre registre d'IA."
        },
        "installed": "Compétence installée : « {0} ».",
        "linked": "Compétence associée : « {0} ».",
        "uninstalled": "Compétence « {0} » désinstallée.",
        "unlinked": "Compétence non associée « {0} ».",
        "updated": "Mise à jour de la compétence « {0} ».",
        "warning": {
          "fix": "Les fichiers de cette compétence diffèrent de ceux du registre. Cliquez sur « Corriger la compétence » pour les restaurer.",
          "linkStale": "Cette compétence a été installée à partir du registre, mais celui-ci ne la répertorie plus. Cliquez sur « Supprimer le lien » pour supprimer le lien du registre tout en conservant les fichiers, ou sur « Désinstaller » pour supprimer la compétence.",
          "notInRegistry": "Ne figure pas dans le registre"
        },
        "watcherStopped": "La surveillance des modifications dans le dossier « skills » a été interrompue. Les compétences installées ne s'actualiseront peut-être plus automatiquement. Actualisez la fenêtre pour reprendre la mise à jour."
      },
      "warning": {
        "fixConfig": "La configuration de ce serveur diffère de celle du registre. Cliquez sur « Corriger la configuration » pour la restaurer.",
        "linkStale": "Ce serveur a été installé à partir du registre, mais celui-ci ne le répertorie plus. Si vous êtes certain de vouloir le conserver et qu'il fonctionne toujours correctement, cliquez sur « Déconnecter » pour supprimer le lien du registre. Sinon, cliquez sur « Désinstaller » pour supprimer le serveur.",
        "notInRegistry": "Ne figure pas dans le registre"
      }
    },
    "ai-terminal": {
      "allowAllConfirm": "Je comprends, autoriser tout",
      "allowAllForever": "Toujours autoriser toutes les commandes shell...",
      "allowAllSession": "Autoriser toutes les commandes shell pour ce chat...",
      "allowAllSessionConfirm": "Je comprends, autoriser tout pour ce chat",
      "allowAllSessionTitle": "Autoriser TOUTES les commandes Shell pour ce chat ?",
      "allowAllSessionWarning": "Cela permettra à l'IA d'exécuter n'importe quelle commande shell sans confirmation pendant le reste de cette session de chat. Les commandes shell ont un accès complet au système et peuvent exécuter n'importe quelle commande, modifier des fichiers en dehors de l'espace de travail et accéder aux ressources réseau. Les commandes figurant sur la liste des commandes interdites resteront bloquées.",
      "allowAllTitle": "Autoriser TOUTES les commandes Shell ?",
      "allowAllWarning": "Cela permettra à l'IA d'exécuter n'importe quelle commande shell sans confirmation. Les commandes shell ont un accès complet au système et peuvent exécuter n'importe quelle commande, modifier des fichiers en dehors de l'espace de travail et accéder aux ressources réseau. Les commandes figurant sur la liste des interdictions resteront bloquées.",
      "alwaysAllowPattern": "Toujours autoriser {0}",
      "alwaysAllowPatterns": "Toujours autoriser {0} et {1}",
      "alwaysAllowPatternsList": "Toujours autoriser {0}",
      "alwaysDenyPattern": "Toujours refuser l'{0}",
      "alwaysDenyPatterns": "Toujours refuser {0} et {1}",
      "alwaysDenyPatternsList": "Toujours refuser l'{0}",
      "cancelExecution": "Annuler l'exécution de la commande",
      "canceling": "Annulation...",
      "configurePermissions": "Configurer les autorisations des commandes shell",
      "confirmExecution": "Confirmer la commande Shell",
      "denialReason": "Raison",
      "executionDenied": "Refusé",
      "executionDeniedWithReason": "Refusé avec justification",
      "partialOutput": "Sortie partielle",
      "shellCommandAllowlist": {
        "description": "Liste des modèles de commandes shell. Utilisez * comme caractère générique : « git log » (correspondance exacte), « git log * » (avec arguments facultatifs), « * --version » (toute commande se terminant par --version). Le caractère générique doit être précédé d'un espace. Les commandes comportant des modèles dangereux ($, backticks) ne sont jamais autorisées automatiquement."
      },
      "shellCommandDenylist": {
        "description": "Liste des modèles de commandes shell qui doivent toujours être refusés. Les commandes correspondant à ces modèles seront automatiquement rejetées sans confirmation. Utilise la syntaxe des modèles : « git push » (correspondance exacte) ou « git push * » (avec n'importe quel argument). Livré avec des modèles par défaut pour les commandes dangereuses (eval, exec, sudo, rm -rf, etc.)."
      },
      "timeout": "Délai d'expiration",
      "workingDirectory": "Répertoire de travail"
    },
    "ai-tool-sketchpad": {
      "addItemProperty": "Ajouter une propriété d'élément",
      "addParameter": "Ajouter un paramètre",
      "addProperty": "Ajouter une propriété",
      "addTool": "Ajouter un outil",
      "askAtRuntimeHint": "Lorsque le LLM appelle cet outil, une fenêtre de saisie rapide s'ouvre pour vous demander de fournir la valeur de retour.",
      "askReturnPlaceholder": "Saisissez la valeur de retour pour cet appel d'outil...",
      "askReturnPrompt": "L'outil « {0} » a été appelé avec : {1}",
      "confirmDelete": "Êtes-vous sûr de vouloir supprimer l'outil « {0} » ?",
      "descriptionPlaceholder": "Décrivez le fonctionnement de l'outil...",
      "itemType": "Type d'élément :",
      "label": "Esquisse de l'outil d'IA",
      "nParameters": "{0} paramètres",
      "nameDuplicate": "Un outil portant ce nom existe déjà.",
      "nameEmpty": "Le nom de l'outil ne doit pas être vide.",
      "nameInvalid": "Le nom de l'outil ne peut contenir que des lettres, des chiffres, des traits de soulignement et des tirets (1 à 128 caractères).",
      "noItemProperties": "Aucune propriété d'élément n'est définie.",
      "noParameters": "Aucun paramètre défini.",
      "noTools": "Aucun outil pour le moment.",
      "oneParameter": "1 paramètre",
      "parameters": "Paramètres",
      "required": "Obligatoire",
      "returnMode": "Mode de retour",
      "returnModeAskAtRuntime": "Demander lors de l'exécution",
      "returnModeAskShort": "Demander lors de l'exécution",
      "returnModeStatic": "Valeur de retour statique",
      "returnModeStaticShort": "Statique",
      "selectTool": "Sélectionnez un outil à modifier ou ajoutez-en un nouveau pour commencer à esquisser.",
      "staticReturn": "Valeur de retour statique",
      "staticReturnHint": "Cette valeur statique est renvoyée à chaque fois que l'outil est appelé, quels que soient les arguments fournis.",
      "staticReturnPlaceholder": "Valeur renvoyée lorsque cet outil est appelé (par exemple, une chaîne JSON)",
      "toolName": "Nom de l'outil",
      "toolNamePlaceholder": "Ex. : getWeather",
      "untitledTool": "Outil sans titre"
    },
    "callhierarchy": {
      "noCallers": "Aucun appelant n'a été détecté.",
      "open": "Ouvrir la hiérarchie des appels"
    },
    "chat": {
      "taskContextVariable": {
        "args": {
          "contextId": {
            "description": "L'ID du contexte de tâche à récupérer ou d'une session de chat à résumer."
          }
        },
        "description": "Fournit des informations contextuelles pour une tâche, par exemple le plan pour accomplir une tâche ou un résumé des sessions précédentes.",
        "label": "Contexte de la tâche"
      }
    },
    "collaboration": {
      "collaborate": "Collaborer",
      "collaboration": "Collaboration",
      "collaborationWorkspace": "Espace de travail collaboratif",
      "connected": "Connecté",
      "connectedSession": "Connecté à une session de collaboration",
      "copiedInvitation": "Code d'invitation copié dans le presse-papiers.",
      "copyAgain": "Copier à nouveau",
      "createRoom": "Créer une nouvelle session de collaboration",
      "creatingRoom": "Création d'une session",
      "end": "Terminer la session de collaboration",
      "endDetail": "Mettez fin à la session, cessez le partage de contenu et révoquez l'accès des autres utilisateurs.",
      "enterCode": "Entrer le code de la session de collaboration",
      "failedCreate": "Échec de la création de la salle : {0}",
      "failedJoin": "Échec de la connexion à la salle : {0}",
      "fieldRequired": "Le champ « {0} » (Identifiant de connexion) est obligatoire. Connexion interrompue.",
      "invite": "Inviter d'autres personnes",
      "inviteDetail": "Copiez le code d'invitation pour le partager avec d'autres personnes afin qu'elles puissent rejoindre la session.",
      "joinRoom": "Rejoindre une session de collaboration",
      "joiningRoom": "Rejoindre une session",
      "leave": "Quitter la session de collaboration",
      "leaveDetail": "Déconnectez-vous de la session de collaboration en cours et fermez l'espace de travail.",
      "loginFailed": "Échec de la connexion.",
      "loginSuccessful": "Connexion réussie.",
      "noAuth": "Aucune méthode d'authentification fournie par le serveur.",
      "optional": "facultatif",
      "selectAuth": "Sélectionner la méthode d'authentification",
      "selectCollaboration": "Sélectionnez l'option de collaboration",
      "serverUrl": "URL du serveur",
      "serverUrlDescription": "URL de l'instance du serveur Open Collaboration Tools pour les sessions de collaboration en direct.",
      "sharedSession": "Partage d'une session de collaboration",
      "startSession": "Démarrer ou rejoindre une session de collaboration",
      "userWantsToJoin": "L'utilisateur « {0} » souhaite rejoindre la salle de collaboration.",
      "whatToDo": "Que souhaitez-vous faire avec les autres collaborateurs ?"
    },
    "core": {
      "about": {
        "compatibility": "{0} Compatibilité",
        "defaultApi": "API par défaut d'{0}",
        "listOfExtensions": "Liste des extensions",
        "monacoEditor": "Version de l'éditeur Monaco"
      },
      "common": {
        "closeAll": "Fermer tous les onglets",
        "closeAllTabMain": "Fermer tous les onglets dans la zone principale",
        "closeOtherTabMain": "Fermer les autres onglets dans la zone principale",
        "closeOthers": "Fermer les autres onglets",
        "closeRight": "Fermer les onglets à droite",
        "closeTab": "Fermer l'onglet",
        "closeTabMain": "Fermer l'onglet dans la zone principale",
        "collapseAllTabs": "Réduire tous les panneaux latéraux",
        "collapseBottomPanel": "Basculer le panneau inférieur",
        "collapseLeftPanel": "Basculer le panneau gauche",
        "collapseRightPanel": "Basculer le panneau droit",
        "collapseTab": "Réduire le panneau latéral",
        "showNextTabGroup": "Passer au groupe d'onglets suivant",
        "showNextTabInGroup": "Passer à l'onglet suivant dans le groupe",
        "showPreviousTabGroup": "Passer au groupe d'onglets précédent",
        "showPreviousTabInGroup": "Passer à l'onglet précédent dans le groupe",
        "toggleMaximized": "Basculer en mode maximisé"
      },
      "copyInfo": "Ouvrez d'abord un fichier pour copier son chemin d'accès.",
      "copyWarn": "Veuillez utiliser la commande Copier ou le raccourci clavier de votre navigateur.",
      "cutWarn": "Veuillez utiliser la commande Couper ou le raccourci du navigateur.",
      "enhancedPreview": {
        "classic": "Afficher un aperçu simple de l'onglet avec des informations de base.",
        "enhanced": "Afficher un aperçu amélioré de l'onglet avec des informations supplémentaires.",
        "visual": "Afficher un aperçu visuel de l'onglet."
      },
      "highlightModifiedTabs": "Contrôle si une bordure supérieure est dessinée ou non sur les onglets d'éditeur modifiés (salissés).",
      "jumpListName": "Espaces de travail récents",
      "keybinding": {
        "duplicateModifierError": "Impossible d'analyser l'{0} des raccourcis clavier Modificateurs en double",
        "metaError": "Impossible d'analyser la combinaison de touches L'{0}-méta est réservée à OSX",
        "unrecognizedKeyError": "{0}s de touches non reconnues dans l'{1}"
      },
      "keybindingStatus": "{0} a été enfoncée, en attente d'autres touches",
      "keyboard": {
        "choose": "Choisir la disposition du clavier",
        "chooseLayout": "Choisissez une disposition de clavier",
        "current": "(actuel : {0})",
        "currentLayout": " - disposition actuelle",
        "mac": "Claviers Mac",
        "pc": "Claviers PC",
        "tryDetect": "Essayez de détecter la disposition du clavier à partir des informations du navigateur et des touches enfoncées."
      },
      "navigator": {
        "clipboardWarn": "L'accès au presse-papiers est refusé. Vérifiez les autorisations de votre navigateur.",
        "clipboardWarnFirefox": "L'API du presse-papiers n'est pas disponible. Elle peut être activée via l'option « {0} » (Autoriser l'accès au presse-papiers) sur la page « {1} » (Configuration de l'application). Rechargez ensuite Theia. Notez que cela permettra à FireFox d'accéder pleinement au presse-papiers du système."
      },
      "pasteWarn": "Veuillez utiliser la commande Coller ou le raccourci du navigateur.",
      "perspective": {
        "resetPerspective": "Réinitialiser la perspective (fonctionnalité expérimentale)",
        "selectPerspective": "Sélectionnez une perspective",
        "switchPerspective": "Changer de perspective (fonctionnalité expérimentale)"
      },
      "quitMessage": "Les modifications non enregistrées ne seront pas sauvegardées.",
      "resetWorkbenchLayout": "Réinitialiser la disposition de l'atelier",
      "searchbox": {
        "close": "Fermer (Échap)",
        "next": "Suivant (Bas)",
        "previous": "Précédent (Haut)",
        "showAll": "Afficher tous les éléments",
        "showOnlyMatching": "Afficher uniquement les éléments correspondants"
      },
      "secondaryWindow": {
        "alwaysOnTop": "Lorsqu'elle est activée, la fenêtre secondaire reste au-dessus de toutes les autres fenêtres, y compris celles d'autres applications.",
        "description": "Définit la position initiale et la taille de la fenêtre secondaire extraite.",
        "fullSize": "La position et la taille du widget extrait seront identiques à celles de l'application Theia en cours d'exécution.",
        "halfWidth": "La position et la taille du widget extrait correspondront à la moitié de la largeur de l'application Theia en cours d'exécution.",
        "originalSize": "La position et la taille du widget extrait seront identiques à celles du widget d'origine."
      },
      "severity": {
        "log": "Journal"
      },
      "silentNotifications": "Contrôle la suppression des fenêtres contextuelles de notification.",
      "tabDefaultSize": "Spécifie la taille par défaut des onglets.",
      "tabMaximize": "Contrôle si les onglets doivent être agrandis lors d'un double-clic.",
      "tabMinimumSize": "Spécifie la taille minimale des onglets.",
      "tabShrinkToFit": "Réduire les onglets pour les adapter à l'espace disponible.",
      "window": {
        "tabCloseIconPlacement": {
          "description": "Placez les icônes de fermeture sur les titres des onglets au début ou à la fin de l'onglet. La valeur par défaut est « fin » sur toutes les plateformes.",
          "end": "Placez l'icône de fermeture à la fin de l'étiquette. Dans les langues s'écrivant de gauche à droite, cela correspond au côté droit de l'onglet.",
          "start": "Placez l'icône de fermeture au début de l'étiquette. Dans les langues s'écrivant de gauche à droite, il s'agit du côté gauche de l'onglet."
        }
      },
      "window.menuBarVisibility": "Le menu s'affiche sous la forme d'un bouton compact dans la barre latérale. Cette valeur est ignorée lorsque {0} est {1}."
    },
    "debug": {
      "TheiaIDE": "Theia IDE",
      "addConfigurationPlaceholder": "Sélectionnez la racine de l'espace de travail pour ajouter la configuration à",
      "breakpoint": "point d'arrêt",
      "cannotRunToThisLocation": "Impossible d'exécuter le thread actuel à l'emplacement spécifié.",
      "compound-cycle": "La configuration de lancement « {0} » contient un cycle avec elle-même.",
      "conditionalBreakpoint": "Point d'arrêt conditionnel",
      "conditionalBreakpointsNotSupported": "Points d'arrêt conditionnels non pris en charge par ce type de débogage",
      "confirmRunToShiftedPosition_msg": "La position cible sera déplacée vers Ln {0} , Col {1}. Continuer quand même ?",
      "confirmRunToShiftedPosition_title": "Impossible d'exécuter le thread actuel à l'emplacement spécifié",
      "consoleFilterAriaLabel": "Filtrer la sortie de la console de débogage",
      "consoleFilterPlaceholder": "Filtre (par exemple, texte, !exclure)",
      "consoleFilterTooltip": "Filtrez la sortie de la console par texte. Séparez les termes multiples par des virgules. Ajoutez le préfixe « ! » pour exclure un terme.\n\nExemples :\n\n- « texte » : affiche les lignes contenant « texte »\n- « texte, autre » : affiche les lignes contenant « texte » ou « autre »\n- « !texte » : masque les lignes contenant « texte »\n- « texte, !autre » : affiche « texte » mais masque « autre »",
      "consoleSessionSelectorTooltip": "Basculez entre les sessions de débogage. Chaque session de débogage dispose de sa propre sortie console.",
      "consoleSeverityTooltip": "Filtrez la sortie de la console par niveau de gravité. Seuls les messages correspondant au niveau de gravité sélectionné seront affichés.",
      "continueAll": "Continuer Tout",
      "copyExpressionValue": "Copier la valeur de l'expression",
      "couldNotRunTask": "Impossible d'exécuter la tâche « {0} ».",
      "dataBreakpoint": "point d'arrêt de données",
      "debugConfiguration": "Configuration de débogage",
      "debugRestricted": "Le débogage est désactivé en mode restreint.",
      "debugSessionInitializationFailed": "Échec de l'initialisation de la session de débogage. Consultez la console pour plus de détails.",
      "debugSessionTypeNotSupported": "Le type de session de débogage « {0} » n'est pas pris en charge.",
      "debugToolbarMenu": "Menu de la barre d'outils de débogage",
      "debugVariableInput": "Définir la valeur d'{0}",
      "disableSelectedBreakpoints": "Désactiver les points d'arrêt sélectionnés",
      "disabledBreakpoint": "{0} désactivée",
      "enableSelectedBreakpoints": "Activer les points d'arrêt sélectionnés",
      "entry": "entrée",
      "errorStartingDebugSession": "Une erreur s'est produite lors du démarrage de la session de débogage. Consultez les journaux pour plus de détails.",
      "exception": "exception",
      "functionBreakpoint": "fonction point d'arrêt",
      "goto": "goto",
      "htiConditionalBreakpointsNotSupported": "Les points d'arrêt conditionnels ne sont pas pris en charge par ce type de débogage.",
      "instruction-breakpoint": "Instruction Breakpoint",
      "instructionBreakpoint": "instruction breakpoint",
      "logpointsNotSupported": "Points de journalisation non pris en charge par ce type de débogage",
      "missingConfiguration": "La configuration dynamique « {0} : {1} » est manquante ou n'est pas applicable.",
      "pause": "pause",
      "pauseAll": "Tout mettre en pause",
      "reveal": "Révéler",
      "step": "étape",
      "taskTerminatedBySignal": "La tâche « {0} » a été interrompue par le signal {1}.",
      "taskTerminatedForUnknownReason": "La tâche « {0} » (Détection de la taille de la fenêtre) s'est terminée pour une raison inconnue.",
      "taskTerminatedWithExitCode": "La tâche « {0} » s'est terminée avec le code de sortie {1}.",
      "threads": "Threads",
      "toggleTracing": "Activer/désactiver le traçage des communications avec les adaptateurs de débogage",
      "unknownSession": "Session inconnue",
      "unverifiedBreakpoint": "{0} non vérifiée"
    },
    "dev-container": {
      "devcontainerFileNotFound": "Fichier Devcontainer à l'adresse {0} introuvable dans l'espace de travail",
      "failedToRebuild": "Échec de la reconstruction du conteneur : {0}",
      "noDevcontainerFileSpecified": "Aucun fichier devcontainer spécifié pour l'espace de travail",
      "removingOldContainer": "Suppression d'un ancien conteneur..."
    },
    "editor": {
      "autoSaveWhenNoErrors": "Lorsqu'elle est activée, cette option limite l'enregistrement automatique des éditeurs aux fichiers ne contenant aucune erreur signalée au moment où l'enregistrement automatique est déclenché. S'applique uniquement lorsque l'option « {0} » est activée.",
      "clearFormatterSetting": "Effacer les paramètres du formateur",
      "configuredIn": "Configuré dans {0}",
      "configuredNotInstalled": "« {0} » configuré dans {1} mais non installé",
      "configuredNotInstalledFallbackNamed": "« {0} » configuré dans {1} non installé, utilisant « {2} ».",
      "currentFormatter": "(Actuel)",
      "diffEditor.wordWrap2": "Les lignes s'enrouleront selon le paramètre `#editor.wordWrap#`.",
      "dirtyEncoding": "Le fichier est corrompu. Veuillez d'abord l'enregistrer avant de le rouvrir avec un autre encodage.",
      "editor.bracketPairColorization.enabled": "Contrôle si la colorisation des paires de crochets est activée ou non. Utilisez `#workbench.colorCustomizations#` pour remplacer les couleurs de mise en évidence des crochets.",
      "editor.codeActions.triggerOnFocusChange": "Activez le déclenchement de « #editor.codeActionsOnSave# » lorsque « #files.autoSave# » est défini sur « afterDelay ». Les actions de code doivent être définies sur « always » pour être déclenchées lors des changements de fenêtre et de focus.",
      "editor.detectIndentation": "Contrôle si #editor.tabSize# et #editor.insertSpaces# seront automatiquement détectés lors de l'ouverture d'un fichier en fonction du contenu de celui-ci.",
      "editor.inlayHints.enabled1": "Les astuces contextuelles s'affichent par défaut et se masquent lorsque vous maintenez les touches Ctrl+Alt enfoncées.",
      "editor.inlayHints.enabled2": "Les astuces d'insertion sont masquées par défaut et s'affichent lorsque vous maintenez les touches Ctrl+Alt enfoncées.",
      "editor.inlayHints.fontFamily": "Contrôle la famille de polices des conseils d'insertion dans l'éditeur. Lorsqu'il est défini sur vide, le `#editor.fontFamily#` est utilisé.",
      "editor.inlayHints.fontSize": "Contrôle la taille de la police des astuces intégrées dans l'éditeur. Par défaut, `#editor.fontSize#` est utilisé lorsque la valeur configurée est inférieure à `5` ou supérieure à la taille de la police de l'éditeur.",
      "editor.inlineSuggest.edits.experimental.enabled": "Contrôle l'activation des modifications expérimentales dans les suggestions en ligne.",
      "editor.inlineSuggest.edits.experimental.onlyShowWhenCloseToCursor": "Contrôle si les suggestions en ligne doivent être affichées uniquement lorsque le curseur est proche de la suggestion.",
      "editor.inlineSuggest.edits.experimental.useInterleavedLinesDiff": "Contrôle l'activation ou non de la comparaison expérimentale des lignes entrelacées dans les suggestions en ligne.",
      "editor.inlineSuggest.edits.experimental.useMixedLinesDiff": "Contrôle l'activation des modifications expérimentales dans les suggestions en ligne.",
      "editor.insertSpaces": "Insérez des espaces lorsque vous appuyez sur la touche « Tab ». Ce paramètre est remplacé en fonction du contenu du fichier lorsque « #editor.detectIndentation# » est activé.",
      "editor.quickSuggestions": "Contrôle si les suggestions doivent s'afficher automatiquement pendant la saisie. Cela peut être contrôlé pour la saisie de commentaires, de chaînes de caractères et d'autres codes. La suggestion rapide peut être configurée pour s'afficher sous forme de texte fantôme ou avec le widget de suggestion. Notez également le paramètre `#editor.suggestOnTriggerCharacters#` qui contrôle si les suggestions sont déclenchées par des caractères spéciaux.",
      "editor.suggestFontSize": "Taille de police pour le widget de suggestion. Lorsqu'elle est définie sur « 0 », la valeur de « #editor.fontSize# » est utilisée.",
      "editor.suggestLineHeight": "Hauteur de ligne pour le widget de suggestion. Lorsqu'elle est définie sur « 0 », la valeur de « #editor.lineHeight# » est utilisée. La valeur minimale est 8.",
      "editor.tabSize": "Nombre d'espaces équivalant à une tabulation. Ce paramètre est remplacé en fonction du contenu du fichier lorsque `#editor.detectIndentation#` est activé.",
      "formatOnSaveTimeout": "Délai d'expiration en millisecondes après lequel le formatage exécuté lors de l'enregistrement du fichier est annulé.",
      "formatter": "Formateur",
      "noDefaultConfiguredLabel": "Aucun formateur par défaut configuré",
      "noDefaultConfiguredTooltip": "Aucun formateur par défaut n'est configuré (formateurs {0}s disponibles)",
      "noEditor": "Aucun éditeur actif",
      "noFormatter": "Pas de formateur",
      "noFormatterInstalled": "Aucun formateur installé",
      "noFormattersAvailable": "Aucun formateur n'est disponible pour cette langue.",
      "noFormattersInstalledTooltip": "Aucun formateur n'est installé pour cette langue.",
      "onlyAvailableFormatter": "Seul le formateur disponible",
      "onlyFormatterInstalled": "{0} (seul le formateur est installé)",
      "persistClosedEditors": "Contrôle si l'historique de l'éditeur fermé doit être conservé pour l'espace de travail lors du rechargement des fenêtres.",
      "selectFormatter": "Sélectionner le formateur par défaut",
      "selectScope": "Sélectionnez l'emplacement où enregistrer le paramètre.",
      "showAllEditors": "Afficher tous les éditeurs ouverts",
      "showFormatterInfo": "Afficher les informations sur le formateur",
      "splitHorizontal": "Éditeur divisé horizontalement",
      "splitVertical": "Éditeur fractionné vertical",
      "toggleStickyScroll": "Activer/désactiver le défilement collant",
      "userSettingsDetail": "Appliquer à tous les espaces de travail",
      "workspaceSettingsDetail": "Appliquer uniquement à l'espace de travail actuel"
    },
    "external-terminal": {
      "cwd": "Sélectionner le répertoire de travail actuel pour le nouveau terminal externe"
    },
    "file-search": {
      "toggleExcludedFiles": " (Appuyez sur {0} pour afficher/masquer les fichiers exclus)"
    },
    "fileDialog": {
      "showHidden": "Afficher les fichiers cachés"
    },
    "fileSystem": {
      "fileResource": {
        "overWriteBody": "Voulez-vous remplacer les modifications apportées à « {0} » dans le système de fichiers ?"
      }
    },
    "filesystem": {
      "copiedToClipboard": "Le lien de téléchargement a été copié dans le presse-papiers.",
      "copyDownloadLink": "Copier le lien de téléchargement",
      "dialog": {
        "initialLocation": "Aller à l'emplacement initial",
        "multipleItemMessage": "Vous ne pouvez sélectionner qu'un seul élément.",
        "navigateBack": "Revenir en arrière",
        "navigateForward": "Naviguer vers l'avant",
        "navigateUp": "Remonter d'un répertoire"
      },
      "fileResource": {
        "binaryFileQuery": "Son ouverture peut prendre un certain temps et rendre l'IDE indisponible. Voulez-vous quand même ouvrir « {0} » ?",
        "binaryTitle": "Le fichier est soit binaire, soit utilise un encodage de texte non pris en charge.",
        "largeFileTitle": "Le fichier est trop volumineux ({0}).",
        "overwriteTitle": "Le fichier « {0} » a été modifié dans le système de fichiers."
      },
      "filesExclude": "Configurez des modèles globaux pour exclure des fichiers et des dossiers. Par exemple, l'Explorateur de fichiers décide quels fichiers et dossiers afficher ou masquer en fonction de ce paramètre.",
      "format": "Format :",
      "maxConcurrentUploads": "Nombre maximal de fichiers simultanés à télécharger lors du téléchargement de plusieurs fichiers. 0 signifie que tous les fichiers seront téléchargés simultanément.",
      "maxFileSizeMB": "Contrôle la taille maximale en Mo des fichiers pouvant être ouverts.",
      "prepareDownload": "Préparation du téléchargement...",
      "prepareDownloadLink": "Préparation du lien de téléchargement...",
      "processedOutOf": "{0}s traitées à partir de {1}",
      "replaceTitle": "Remplacer le fichier",
      "uploadFailed": "Une erreur s'est produite lors du téléchargement d'un fichier. {0}",
      "uploadFiles": "Téléchargement de fichiers",
      "uploadedOutOf": "{0} téléchargées à partir de {1}"
    },
    "getting-started": {
      "ai": {
        "header": "L'assistance IA est désormais disponible dans l'{0} !",
        "openAIChatView": "Ouvrez dès maintenant la fenêtre AI Chat View pour découvrir comment commencer !"
      },
      "apiComparator": "{0} Compatibilité API",
      "newExtension": "Création d'une nouvelle extension",
      "newPlugin": "Création d'un nouveau plugin",
      "startup-editor": {
        "welcomePage": "Ouvrez la page d'accueil, qui contient des informations pour vous aider à démarrer avec l'{0}s et les extensions."
      },
      "telemetry": "Utilisation des données et télémétrie"
    },
    "keybinding-schema-updater": {
      "deprecation": "Utilisez plutôt la clause « when »."
    },
    "keymaps": {
      "addKeybindingTitle": "Ajouter un raccourci clavier pour l'{0}",
      "editKeybinding": "Modifier les raccourcis clavier...",
      "editKeybindingTitle": "Modifier les raccourcis clavier pour l'{0}",
      "editWhenExpression": "Modifier l'expression...",
      "editWhenExpressionTitle": "Modifier l'expression pour l'{0}",
      "keybinding": {
        "copy": "Copier les raccourcis clavier",
        "copyCommandId": "Copier l'ID de la commande de raccourci clavier",
        "copyCommandTitle": "Copier le titre de la commande de raccourci clavier",
        "edit": "Modifier les raccourcis clavier...",
        "editWhenExpression": "Modifier le raccourci clavier lorsque l'expression..."
      },
      "keybindingCollidesValidation": "Le raccourci clavier est actuellement en conflit.",
      "requiredKeybindingValidation": "La valeur de raccourci clavier est obligatoire.",
      "resetKeybindingConfirmation": "Voulez-vous vraiment réinitialiser ce raccourci clavier à sa valeur par défaut ?",
      "resetKeybindingTitle": "Réinitialiser les raccourcis clavier pour l'{0}",
      "resetMultipleKeybindingsWarning": "Si plusieurs raccourcis clavier existent pour cette commande, ils seront tous réinitialisés."
    },
    "localize": {
      "offlineTooltip": "Impossible de se connecter au backend."
    },
    "markers": {
      "clearAll": "Tout effacer",
      "copyAsText": "Copier sous forme de texte",
      "export": "Exporter",
      "exportProblems": "Problèmes d'exportation",
      "exportSuccess": "Les problèmes ont été exportés avec succès.",
      "jsonFiles": "Fichiers JSON",
      "noProblems": "Aucun problème n'a été détecté dans l'espace de travail jusqu'à présent.",
      "tabbarDecorationsEnabled": "Afficher les décorateurs de problèmes (marqueurs de diagnostic) dans les barres d'onglets."
    },
    "memory-inspector": {
      "addressTooltip": "Emplacement mémoire à afficher, adresse ou expression évaluée à une adresse.",
      "ascii": "ASCII",
      "binary": "Binaire",
      "byteSize": "Taille en octets",
      "bytesPerGroup": "Octets par groupe",
      "closeSettings": "Fermer les paramètres",
      "columns": "Colonnes",
      "command": {
        "createNewMemory": "Créer un nouvel inspecteur de mémoire",
        "createNewRegisterView": "Créer une nouvelle vue d'enregistrement",
        "followPointer": "Suivre le pointeur",
        "followPointerMemory": "Suivre le pointeur dans l'inspecteur de mémoire",
        "resetValue": "Réinitialiser la valeur",
        "showRegister": "Afficher le registre dans l'inspecteur de mémoire",
        "viewVariable": "Afficher la variable dans l'inspecteur de mémoire"
      },
      "data": "Données",
      "decimal": "Décimal",
      "diff": {
        "label": "Diff : {0}"
      },
      "diff-widget": {
        "offset-label": "{0} Décalage",
        "offset-title": "Octets pour décaler la mémoire à partir de {0}"
      },
      "editable": {
        "apply": "Appliquer les modifications",
        "clear": "Effacer les modifications"
      },
      "endianness": "Endianness",
      "extraColumn": "Colonne supplémentaire",
      "groupsPerRow": "Groupes par ligne",
      "hexadecimal": "Hexadécimal",
      "length": "Longueur",
      "lengthTooltip": "Nombre d'octets à récupérer, en décimal ou hexadécimal",
      "memory": {
        "addressField": {
          "memoryReadError": "Entrez une adresse ou une expression dans le champ Emplacement."
        },
        "freeze": "Geler la vue mémoire",
        "hideSettings": "Masquer le panneau des paramètres",
        "readError": {
          "bounds": "Limites de mémoire dépassées, le résultat sera tronqué.",
          "noContents": "Aucun contenu mémoire n'est actuellement disponible."
        },
        "readLength": {
          "memoryReadError": "Entrez une longueur (nombre décimal ou hexadécimal) dans le champ Longueur."
        },
        "showSettings": "Afficher le panneau des paramètres",
        "unfreeze": "Dégeler la vue de la mémoire",
        "userError": "Une erreur s'est produite lors de la récupération de la mémoire."
      },
      "memoryCategory": "Inspecteur de mémoire",
      "memoryInspector": "Inspecteur de mémoire",
      "memoryTitle": "Mémoire",
      "octal": "Octal",
      "offset": "Décalage",
      "offsetTooltip": "Décalage à ajouter à l'emplacement mémoire actuel lors de la navigation.",
      "provider": {
        "localsError": "Impossible de lire les variables locales. Aucune session de débogage active.",
        "readError": "Impossible de lire la mémoire. Aucune session de débogage active.",
        "writeError": "Impossible d'écrire dans la mémoire. Aucune session de débogage active."
      },
      "register": "S'inscrire",
      "register-widget": {
        "filter-placeholder": "Filtre (commence par)"
      },
      "registerReadError": "Une erreur s'est produite lors de la récupération des registres.",
      "registers": "Registres",
      "toggleComparisonWidgetVisibility": "Activer/désactiver la visibilité du widget de comparaison",
      "utils": {
        "afterBytes": "Vous devez charger la mémoire dans les deux widgets que vous souhaitez comparer. {0} n'a pas de mémoire chargée.",
        "bytesMessage": "Vous devez charger la mémoire dans les deux widgets que vous souhaitez comparer. {0} n'a pas de mémoire chargée."
      }
    },
    "messages": {
      "notificationTimeout": "Les notifications informatives seront masquées après ce délai.",
      "toggleNotifications": "Activer/désactiver les notifications"
    },
    "mini-browser": {
      "typeUrl": "Saisissez une URL"
    },
    "monaco": {
      "noSymbolsMatching": "Aucun symbole correspondant",
      "typeToSearchForSymbols": "Tapez pour rechercher des symboles"
    },
    "navigator": {
      "autoReveal": "Affichage automatique",
      "clipboardWarn": "L'accès au presse-papiers est refusé. Vérifiez les autorisations de votre navigateur.",
      "clipboardWarnFirefox": "L'API du presse-papiers n'est pas disponible. Elle peut être activée via l'option « {0} » (Autoriser l'accès au presse-papiers) sur la page « {1} » (Configuration de l'application). Rechargez ensuite Theia. Notez que cela permettra à FireFox d'accéder pleinement au presse-papiers du système.",
      "nothingToPaste": "Le presse-papiers ne contient aucun fichier de l'espace de travail pouvant être collé ici.",
      "openWithSystemEditor": "Ouvrir avec l'éditeur système",
      "refresh": "Actualiser dans l'Explorateur",
      "reveal": "Afficher dans l'Explorateur",
      "systemEditor": "Éditeur système",
      "toggleHiddenFiles": "Afficher/masquer les fichiers cachés"
    },
    "output": {
      "clearOutputChannel": "Effacer le canal de sortie...",
      "closeOutputChannel": "Fermer le canal de sortie...",
      "hiddenChannels": "Canaux cachés",
      "hideOutputChannel": "Masquer le canal de sortie...",
      "maxChannelHistory": "Nombre maximal d'entrées dans un canal de sortie.",
      "outputChannels": "Canaux de sortie",
      "showOutputChannel": "Afficher le canal de sortie..."
    },
    "plugin": {
      "blockNewTab": "Votre navigateur a empêché l'ouverture d'un nouvel onglet."
    },
    "plugin-dev": {
      "alreadyRunning": "L'instance hébergée est déjà en cours d'exécution.",
      "debugInstance": "Instance de débogage",
      "debugMode": "Utilisation de inspect ou inspect-brk pour le débogage Node.js",
      "debugPorts": {
        "debugPort": "Port à utiliser pour le débogage Node.js de ce serveur",
        "serverName": "Nom du serveur hôte du plugin, par exemple « hosted-plugin » dans « --hosted-plugin-inspect= » ou « headless-hosted-plugin » dans « --headless-hosted-plugin-inspect= »."
      },
      "devHost": "Hôte de développement",
      "failed": "Échec de l'exécution de l'instance du plugin hébergé : {0}",
      "hostedPlugin": "Plugin hébergé",
      "hostedPluginRunning": "Plugin hébergé : en cours d'exécution",
      "hostedPluginStarting": "Plugin hébergé : Démarrage",
      "hostedPluginStopped": "Plugin hébergé : arrêté",
      "hostedPluginWatching": "Plugin hébergé : Surveillance",
      "instanceTerminated": "{0} a été interrompu",
      "launchOutFiles": "Tableau de modèles globaux permettant de localiser les fichiers JavaScript générés (`${pluginPath}` sera remplacé par le chemin d'accès réel du plugin).",
      "noValidPlugin": "Le dossier spécifié ne contient pas de plugin valide.",
      "notRunning": "L'instance hébergée ne fonctionne pas.",
      "pluginFolder": "Le dossier du plugin est défini comme suit : {0}",
      "preventedNewTab": "Votre navigateur a empêché l'ouverture d'un nouvel onglet.",
      "restartInstance": "Redémarrer l'instance",
      "running": "L'instance hébergée fonctionne à l'adresse suivante :",
      "selectPath": "Sélectionner le chemin",
      "startInstance": "Démarrer l'instance",
      "starting": "Démarrage du serveur d'instance hébergé...",
      "stopInstance": "Arrêter l'instance",
      "unknownTerminated": "L'instance a été arrêtée.",
      "watchMode": "Exécuter Watcher sur le plugin en cours de développement"
    },
    "plugin-ext": {
      "authentication-main": {
        "loginTitle": "Connexion",
        "signedOut": "Déconnexion réussie."
      },
      "extensionsRestrictedMode": "Certaines extensions sont désactivées en mode restreint",
      "supportNodeGlobalNavigator": "Si cette option est activée, l'objet navigateur global dans l'hôte de l'extension sera défini tel que fourni par Node.js. Les extensions peuvent utiliser la présence de l'objet navigateur comme indication que le code s'exécute dans un navigateur. La désactivation de cette option (par défaut) supprime la définition du navigateur dans l'hôte de l'extension afin de préserver cette hypothèse.",
      "webviewTrace": "Contrôle le traçage des communications avec les vues Web.",
      "webviewWarnIfUnsecure": "Avertit les utilisateurs que les vues Web sont actuellement déployées de manière non sécurisée."
    },
    "preferences": {
      "ai-features": "Fonctionnalités IA",
      "hostedPlugin": "Plugin hébergé",
      "input": {
        "browse": "Parcourir"
      },
      "sessionOverride": {
        "suffix": "Remplacé par la session",
        "suffixTooltip": "Cette préférence dispose d'une valeur de session définie via --session-preference. La modifier ici efface la modification de session pour le reste de la session en cours."
      },
      "sessionPreferences": {
        "statusBar": "Préférences de session ({0})",
        "tooltipBody": "Ces éléments ont été transmis via l'option --session-preference et ne résident qu'en mémoire. Cliquez sur le nom d'un paramètre pour y accéder directement dans la vue Paramètres.",
        "tooltipChangeNote": "La modification de l'un de ces paramètres efface sa valeur de session pour cette exécution. Pour utiliser les valeurs enregistrées dès le prochain lancement, redémarrez sans les arguments --session-preference.",
        "tooltipHeader": "Ces paramètres sont remplacés pour cette session",
        "valueOff": "désactivé",
        "valueOn": "sur"
      },
      "toolbar": "Barre d'outils"
    },
    "preview": {
      "openByDefault": "Ouvrir l'aperçu par défaut à la place de l'éditeur."
    },
    "property-view": {
      "lastModified": "Dernière modification",
      "noProperties": "Aucune propriété disponible.",
      "properties": "Propriétés",
      "symbolicLink": "Lien symbolique"
    },
    "remote": {
      "dev-container": {
        "attach": "Se connecter au conteneur en cours d'exécution",
        "attachError": "Échec de la connexion au conteneur : {0}",
        "attachWarning": "La connexion à un conteneur entraînera l'exécution du code qu'il contient. Ne vous connectez qu'à des conteneurs dont vous connaissez l'origine et en lesquels vous avez confiance.",
        "attachWarningTitle": "Attacher au conteneur",
        "attaching": "Connexion au conteneur",
        "cliAttachError": "Échec de la connexion au conteneur : {0}",
        "cliContainerNotFound": "Le conteneur « {0} » est introuvable ou n'est pas en cours d'exécution.",
        "connect": "Rouvrir dans le conteneur",
        "enterCustomPath": "Entrez un chemin d'accès personnalisé...",
        "enterWorkspacePath": "Entrez le chemin d'accès à l'espace de travail à l'intérieur du conteneur",
        "foundConfigMsg": "Un fichier devcontainer.json a été trouvé à l'adresse {0}. Souhaitez-vous appliquer ses paramètres post-attach (extensions, redirection de port, etc.) ?",
        "foundConfigTitle": "Configuration du conteneur de développement trouvée",
        "noDevcontainerFiles": "Aucun fichier devcontainer.json n'a été trouvé dans l'espace de travail. Veuillez vous assurer que vous disposez d'un répertoire .devcontainer contenant un fichier devcontainer.json.",
        "noRunningContainers": "Aucun conteneur en cours d'exécution n'a été trouvé.",
        "rebuild": "Reconstruire le conteneur",
        "rebuilding": "Reconstruction du conteneur de développement",
        "reopenInContainer": "Rouvrir dans le conteneur",
        "selectContainer": "Sélectionnez un conteneur en cours d'exécution auquel vous souhaitez vous connecter",
        "selectDevcontainer": "Sélectionnez un fichier devcontainer.json.",
        "selectWorkspacePath": "Sélectionnez un chemin d'accès à l'espace de travail à l'intérieur du conteneur",
        "suggestion": "Cet espace de travail dispose d'une configuration de conteneur de développement. Souhaitez-vous le rouvrir dans un conteneur ?"
      },
      "port-forwarding": {
        "focusPorts": "Ports : Focus sur la vue Ports"
      },
      "ssh": {
        "connect": "Connecter la fenêtre actuelle à l'hôte...",
        "connectToConfigHost": "Connecter la fenêtre actuelle à l'hôte dans le fichier de configuration...",
        "enterHost": "Entrez le nom d'hôte SSH",
        "enterUser": "Entrez le nom d'utilisateur SSH",
        "failure": "Impossible d'ouvrir la connexion SSH à distance.",
        "hostPlaceHolder": "Par exemple : hello@example.com",
        "needsHost": "Veuillez saisir un nom d'hôte.",
        "needsUser": "Veuillez saisir un nom d'utilisateur.",
        "userPlaceHolder": "Par exemple : bonjour"
      },
      "sshNoConfigPath": "Aucun chemin de configuration SSH trouvé.",
      "wsl": {
        "connectToWsl": "Se connecter à WSL",
        "connectToWslUsingDistro": "Se connecter à WSL à l'aide de Distro...",
        "noWslDistroFound": "Aucune distribution WSL trouvée. Veuillez d'abord installer une distribution WSL.",
        "reopenInWsl": "Rouvrir le dossier dans WSL",
        "selectWSLDistro": "Sélectionnez une distribution WSL."
      }
    },
    "scm": {
      "1HourAgo": "Il y a 1 heure",
      "1MinuteAgo": "Il y a 1 minute",
      "amend": "Modifier",
      "amendHeadCommit": "HEAD Commit",
      "amendLastCommit": "Modifier le dernier commit",
      "changeRepository": "Modifier le référentiel...",
      "dirtyDiff": {
        "close": "Fermer Modifier Aperçu"
      },
      "justNow": "à l'instant",
      "mergeEditor": {
        "resetConfirmationTitle": "Voulez-vous vraiment réinitialiser le résultat de la fusion dans cet éditeur ?"
      },
      "noChanges": "Aucun fichier modifié.",
      "noHistory": "Aucun historique de contrôle de version disponible.",
      "noHistoryForError": "Il n'y a pas d'historique disponible pour {0}",
      "prepositionIn": "et",
      "unamend": "Non modifiable",
      "unamendCommit": "Commit non modifié"
    },
    "search-in-workspace": {
      "includeIgnoredFiles": "Inclure les fichiers ignorés",
      "noFolderSpecified": "Vous n'avez pas ouvert ni spécifié de dossier. Seuls les fichiers ouverts sont actuellement recherchés.",
      "resultSubset": "Il ne s'agit que d'un sous-ensemble de tous les résultats. Utilisez un terme de recherche plus spécifique pour affiner la liste des résultats.",
      "searchExclude": "Configurez les [modèles globaux](https://aka.ms/vscode-glob-patterns) pour exclure des fichiers et des dossiers des recherches en texte intégral et de la recherche de fichiers dans l'ouverture rapide. Hérite de tous les modèles globaux du paramètre `#files.exclude#`.",
      "searchOnEditorModification": "Rechercher dans l'éditeur actif lorsqu'il est modifié."
    },
    "secondary-window": {
      "extract-widget": "Déplacer la vue vers la fenêtre secondaire"
    },
    "shell-area": {
      "secondary": "Fenêtre secondaire"
    },
    "task": {
      "attachTask": "Joindre une tâche...",
      "circularReferenceDetected": "Référence circulaire détectée : {0} --> {1}",
      "clearHistory": "Effacer l'historique",
      "errorKillingTask": "Erreur lors de la suppression de la tâche « {0} » : {1}",
      "errorLaunchingTask": "Erreur lors du lancement de la tâche « {0} » : {1}",
      "invalidTaskConfigs": "Des configurations de tâches non valides ont été détectées. Ouvrez le fichier tasks.json et consultez les détails dans la vue Problèmes.",
      "neverScanTaskOutput": "Ne jamais analyser la sortie de la tâche",
      "noTaskToRun": "Aucune tâche à exécuter trouvée. Configurer les tâches...",
      "noTasksFound": "Aucune tâche trouvée",
      "notEnoughDataInDependsOn": "Les informations fournies dans « dependsOn » ne sont pas suffisantes pour trouver la tâche correspondante !",
      "schema": {
        "commandOptions": {
          "cwd": "Répertoire de travail actuel du programme ou script exécuté. S'il est omis, la racine de l'espace de travail actuel de Theia est utilisée."
        },
        "presentation": {
          "panel": {
            "dedicated": "Le terminal est dédié à une tâche spécifique. Si cette tâche est exécutée à nouveau, le terminal est réutilisé. Cependant, le résultat d'une tâche différente est présenté dans un terminal différent.",
            "new": "Chaque exécution de cette tâche utilise un nouveau terminal propre.",
            "shared": "Le terminal est partagé et les résultats des autres tâches exécutées sont ajoutés au même terminal."
          },
          "showReuseMessage": "Contrôle l'affichage du message « Le terminal sera réutilisé par les tâches »."
        },
        "problemMatcherObject": {
          "owner": "Propriétaire du problème dans Theia. Peut être omis si base est spécifié. La valeur par défaut est « externe » s'il est omis et que base n'est pas spécifié."
        }
      },
      "taskAlreadyRunningInTerminal": "La tâche est déjà en cours d'exécution dans le terminal.",
      "taskExitedWithCode": "La tâche « {0} » s'est terminée avec le code {1}.",
      "taskIdLabel": "#{0}",
      "taskRestricted": "L'exécution des tâches est désactivée en mode restreint.",
      "taskTerminatedBySignal": "La tâche « {0} » a été interrompue par l'{1} de signal.",
      "terminalWillBeReusedByTasks": "Le terminal sera réutilisé par les tâches."
    },
    "telemetry": {
      "filters": "Limiter les modèles de sujets transmis à chaque collecteur de télémétrie. L'absence d'entrées autorise tous les centres d'intérêt du collecteur ; les tableaux vides désactivent un collecteur."
    },
    "terminal": {
      "defaultProfile": "Profil par défaut utilisé sur {0}",
      "enableCommandHistory": "Suivez séparément les commandes du terminal et leur sortie à l'aide de l'injection de shell. Cela permet, par exemple, de distinguer visuellement les commandes dans l'interface utilisateur et d'offrir aux agents IA un accès plus structuré aux terminaux. L'activation ou la désactivation de ce paramètre n'affectera pas les terminaux déjà ouverts.\n\n&nbsp;\n\nCette fonctionnalité n'est actuellement prise en charge que par les terminaux de tâches et les terminaux utilisateur exécutant bash ou zsh.",
      "enableCommandSeparator": "Activer un séparateur visuel entre les commandes exécutées et leur sortie dans le terminal. Les modifications ne s'appliquent qu'aux commandes exécutées après la modification de ce paramètre. Ne fonctionne que lorsque l'option « {0} » est activée.",
      "enableCopy": "Activez ctrl-c (cmd-c sur macOS) pour copier le texte sélectionné.",
      "enablePaste": "Activez ctrl-v (cmd-v sur macOS) pour coller à partir du presse-papiers.",
      "profileArgs": "Les arguments shell utilisés par ce profil.",
      "profileColor": "Identifiant de couleur du thème du terminal à associer au terminal.",
      "profileDefault": "Choisir le profil par défaut...",
      "profileIcon": "Un identifiant codicon à associer à l'icône du terminal.\nterminal-tmux : « $(terminal-tmux) »",
      "profileNew": "Nouveau terminal (avec profil)...",
      "profilePath": "Chemin d'accès au shell utilisé par ce profil.",
      "profiles": "Profils à présenter lors de la création d'un nouveau terminal. Définissez manuellement la propriété path avec des arguments facultatifs.\nDéfinissez un profil existant sur null pour masquer le profil dans la liste, par exemple : « {0} » : null.",
      "rendererType": "Contrôle la manière dont le terminal est affiché.",
      "rendererTypeDeprecationMessage": "Le type de rendu n'est plus pris en charge en tant qu'option.",
      "selectProfile": "Sélectionnez un profil pour le nouveau terminal.",
      "shell.deprecated": "Cette méthode est obsolète. La nouvelle méthode recommandée pour configurer votre shell par défaut consiste à créer un profil de terminal dans « terminal.integrated.profiles.{0} » et à définir son nom de profil comme valeur par défaut dans « terminal.integrated.defaultProfile.{0} ».",
      "shellArgsLinux": "Arguments de ligne de commande à utiliser sur le terminal Linux.",
      "shellArgsOsx": "Arguments de ligne de commande à utiliser sur le terminal macOS.",
      "shellArgsWindows": "Arguments de ligne de commande à utiliser sur le terminal Windows.",
      "shellLinux": "Chemin d'accès du shell utilisé par le terminal sous Linux (par défaut : « {0} »).",
      "shellOsx": "Chemin d'accès du shell utilisé par le terminal sur macOS (par défaut : « {0} »).",
      "shellWindows": "Chemin d'accès du shell utilisé par le terminal sous Windows. (par défaut : « {0} »)."
    },
    "terminal-manager": {
      "addTerminalToGroup": "Ajouter un terminal au groupe",
      "closeDialog": {
        "message": "Une fois le Gestionnaire de terminal fermé, sa disposition ne peut pas être restaurée. Êtes-vous sûr de vouloir fermer le Gestionnaire de terminal ?",
        "title": "Voulez-vous fermer le gestionnaire de terminal ?"
      },
      "closeTerminalManager": "Fermer le gestionnaire de terminal",
      "createNewTerminalGroup": "Créer un nouveau groupe de terminaux",
      "createNewTerminalPage": "Créer une nouvelle page de terminal",
      "deleteGroup": "Supprimer le groupe",
      "deletePage": "Supprimer la page",
      "deleteTerminal": "Supprimer le terminal",
      "label": "Terminaux",
      "maximizeBottomPanel": "Maximiser le panneau inférieur",
      "minimizeBottomPanel": "Réduire le panneau inférieur",
      "openTerminalManager": "Ouvrir le gestionnaire de terminal",
      "page": "Page",
      "rename": "Renommer",
      "resetTerminalManagerLayout": "Réinitialiser la disposition du gestionnaire de terminaux",
      "tabsDisplay": "Contrôle l'affichage des terminaux. « tree » affiche plusieurs terminaux dans une seule vue avec une arborescence pour la gestion, « tabbed » affiche chaque terminal dans sa propre vue dans un onglet séparé.",
      "toggleTreeView": "Basculer l'affichage arborescent",
      "treeViewLocation": "Emplacement de l'arborescence du gestionnaire de terminal. Ne s'applique que lorsque « terminal.grouping.mode » est défini sur « tree »."
    },
    "test": {
      "cancelAllTestRuns": "Annuler tous les tests",
      "showTestOutput": "Afficher le résultat du test",
      "stackFrameAt": "at",
      "testRunDefaultName": "{0} run {1}",
      "testRuns": "Tests"
    },
    "toolbar": {
      "addCommand": "Ajouter une commande à la barre d'outils",
      "addCommandPlaceholder": "Rechercher une commande à ajouter à la barre d'outils",
      "centerColumn": "Colonne centrale",
      "failedUpdate": "Échec de la mise à jour de la valeur « {0} » dans « {1} ».",
      "filterIcons": "Icônes de filtre",
      "iconSelectDialog": "Sélectionnez une icône pour « {0} »",
      "iconSet": "Jeu d'icônes",
      "insertGroupLeft": "Insérer un séparateur de groupe (à gauche)",
      "insertGroupRight": "Insérer un séparateur de groupe (à droite)",
      "jsonError": "Une erreur s'est produite lors de la lecture de votre fichier toolbar.json. Veuillez vérifier s'il est corrompu en cliquant avec le bouton droit de la souris sur la barre d'outils et en sélectionnant « Personnaliser la barre d'outils ». Vous pouvez également le réinitialiser à ses paramètres par défaut en sélectionnant « Restaurer les paramètres par défaut de la barre d'outils ».",
      "leftColumn": "Colonne de gauche",
      "openJSON": "Personnaliser la barre d'outils (Ouvrir JSON)",
      "removeCommand": "Supprimer la commande de la barre d'outils",
      "restoreDefaults": "Restaurer les paramètres par défaut de la barre d'outils",
      "rightColumn": "Colonne de droite",
      "selectIcon": "Sélectionner l'icône",
      "toggleToolbar": "Basculer la barre d'outils",
      "toolbarLocationPlaceholder": "Où souhaitez-vous ajouter la commande ?",
      "useDefaultIcon": "Utiliser l'icône par défaut"
    },
    "typehierarchy": {
      "subtypeHierarchy": "Hiérarchie des sous-types",
      "supertypeHierarchy": "Hiérarchie des supertypes"
    },
    "variableResolver": {
      "listAllVariables": "Variable : Tout afficher"
    },
    "vsx-registry": {
      "confirmDialogMessage": "L'extension « {0} » n'est pas vérifiée et peut présenter un risque pour la sécurité.",
      "confirmDialogTitle": "Êtes-vous sûr de vouloir poursuivre l'installation ?",
      "downloadCount": "Nombre de téléchargements : {0}",
      "duplicateVSIX": "Échec de l'installation d'{0} à partir du fichier VSIX. L'extension est déjà installée. Désinstallez l'extension existante avant d'installer une nouvelle version à partir du fichier VSIX.",
      "errorFetching": "Erreur lors de la récupération des extensions.",
      "errorFetchingConfigurationHint": "Cela peut être dû à des problèmes de configuration réseau.",
      "failedInstallingVSIX": "Échec de l'installation d'{0} à partir de VSIX.",
      "filter": {
        "showBuiltin": "Afficher les éléments intégrés",
        "showInstalled": "Afficher les éléments installés",
        "showRecommended": "Afficher les recommandations"
      },
      "invalidVSIX": "Le fichier sélectionné n'est pas un plugin « *.vsix » valide.",
      "license": "Licence : {0}",
      "onlyShowVerifiedExtensionsDescription": "Cela permet à l'{0}e de n'afficher que les extensions vérifiées.",
      "onlyShowVerifiedExtensionsTitle": "Afficher uniquement les extensions vérifiées",
      "recommendedExtensions": "Liste des noms des extensions recommandées pour une utilisation dans cet espace de travail.",
      "restrictedModeInstallWarning": "L'extension « {0} » peut être désactivée si elle ne prend pas en charge l'exécution en mode restreint. Faites confiance à cet espace de travail pour vous assurer que l'extension fonctionne comme prévu.",
      "searchPlaceholder": "Rechercher dans le registre VSX ouvert",
      "showInstalled": "Afficher les extensions installées",
      "showRecommendedExtensions": "Contrôle l'affichage des notifications pour les recommandations d'extensions.",
      "vsx-extensions-contribution": {
        "no-other-versions": "Aucune autre version n'est disponible.",
        "update-version-uninstall-error": "Erreur lors de la suppression de l'extension : {0}.",
        "update-version-version-error": "Échec de l'installation de la version {0} de {1}."
      }
    },
    "webview": {
      "goToReadme": "Aller à README",
      "messageWarning": "            Le modèle d'hôte du point de terminaison {0} a été modifié en « {1} » ; la modification du modèle peut entraîner des failles de sécurité. Pour plus d'informations, consultez « {2} »."
    },
    "workspace": {
      "bothAreDirectories": "Les deux ressources sont des répertoires.",
      "compareWithEachOther": "Comparer entre eux",
      "confirmDeletePermanently.description": "Impossible de supprimer « {0} » à l'aide de la corbeille. Voulez-vous le supprimer définitivement à la place ?",
      "confirmDeletePermanently.solution": "Vous pouvez désactiver l'utilisation de la corbeille dans les préférences.",
      "confirmDeletePermanently.title": "Erreur lors de la suppression du fichier",
      "confirmMessage.delete": "Voulez-vous vraiment supprimer les fichiers suivants ?",
      "confirmMessage.dirtyMultiple": "Voulez-vous vraiment supprimer les fichiers {0} contenant des modifications non enregistrées ?",
      "confirmMessage.dirtySingle": "Voulez-vous vraiment supprimer {0} avec des modifications non enregistrées ?",
      "confirmMessage.uriMultiple": "Voulez-vous vraiment supprimer tous les fichiers sélectionnés {0} ?",
      "confirmMessage.uriSingle": "Voulez-vous vraiment supprimer {0} ?",
      "directoriesCannotBeCompared": "Les répertoires ne peuvent pas être comparés. {0}",
      "duplicate": "Dupliquer",
      "failSaveAs": "Impossible d'exécuter « {0} » pour le widget actuel.",
      "isDirectory": "« {0} » désigne un répertoire.",
      "manageTrustPlaceholder": "Sélectionnez l'état de confiance pour cet espace de travail",
      "newFilePlaceholder": "Nom du fichier",
      "newFolderPlaceholder": "Nom du dossier",
      "noErasure": "Remarque : rien ne sera effacé du disque.",
      "notWorkspaceFile": "Fichier d'espace de travail non valide : {0}",
      "openRecentPlaceholder": "Saisissez le nom de l'espace de travail que vous souhaitez ouvrir.",
      "openRecentWorkspace": "Ouvrir l'espace de travail récent...",
      "preserveWindow": "Activer l'ouverture des espaces de travail dans la fenêtre actuelle.",
      "removeFolder": "Êtes-vous sûr de vouloir supprimer le dossier suivant de l'espace de travail ?",
      "removeFolders": "Êtes-vous sûr de vouloir supprimer les dossiers suivants de l'espace de travail ?",
      "restrictedModeDescription": "Certaines fonctionnalités sont désactivées car cet espace de travail n'est pas fiable.",
      "restrictedModeFeatures": "Des fonctionnalités telles que l'exécution de tâches, le débogage, les extensions et l'IA sont désactivées afin de se prémunir contre tout code potentiellement nuisible.",
      "schema": {
        "folders": {
          "description": "Dossiers racine dans l'espace de travail"
        },
        "title": "Fichier de l'espace de travail"
      },
      "trashTitle": "Déplacer {0} vers la corbeille",
      "trustDialogMessage": "Si vous faites confiance aux auteurs, le code contenu dans ce dossier peut être exécuté, y compris les tâches, les configurations de débogage, les extensions et les fonctionnalités d'IA.",
      "trustDialogRestricted": "Si vous ne faites pas confiance aux auteurs, l'espace de travail s'ouvrira en mode restreint, ce qui désactive ces fonctionnalités afin de vous protéger contre tout code potentiellement dangereux.",
      "trustEmptyWindow": "Contrôle si l'espace de travail vide est considéré comme fiable par défaut.",
      "trustEnabled": "Contrôle si la confiance de l'espace de travail est activée ou non. Si elle est désactivée, tous les espaces de travail sont considérés comme fiables.",
      "trustLearnMore": "En savoir plus sur Workspace Trust de Theia",
      "trustTrustedFolders": "Liste des URI de dossiers considérés comme fiables sans demande de confirmation.",
      "untitled-cleanup": "Il semble y avoir de nombreux fichiers d'espace de travail sans titre. Veuillez consulter {0} et supprimer tous les fichiers inutilisés.",
      "variables": {
        "cwd": {
          "description": "Répertoire de travail actuel du gestionnaire de tâches au démarrage"
        },
        "file": {
          "description": "Chemin d'accès du fichier actuellement ouvert"
        },
        "fileBasename": {
          "description": "Le nom de base du fichier actuellement ouvert."
        },
        "fileBasenameNoExtension": {
          "description": "Nom du fichier actuellement ouvert sans extension."
        },
        "fileDirname": {
          "description": "Nom du répertoire du fichier actuellement ouvert."
        },
        "fileExtname": {
          "description": "Extension du fichier actuellement ouvert"
        },
        "relativeFile": {
          "description": "Chemin d'accès du fichier actuellement ouvert par rapport à la racine de l'espace de travail."
        },
        "relativeFileDirname": {
          "description": "Nom du répertoire du fichier actuellement ouvert par rapport à ${workspaceFolder}"
        },
        "workspaceFolder": {
          "description": "Chemin d'accès au dossier racine de l'espace de travail"
        },
        "workspaceFolderBasename": {
          "description": "Nom du dossier racine de l'espace de travail"
        },
        "workspaceRoot": {
          "description": "Chemin d'accès au dossier racine de l'espace de travail"
        },
        "workspaceRootFolderName": {
          "description": "Nom du dossier racine de l'espace de travail"
        }
      },
      "workspaceFolderAdded": "Un espace de travail avec plusieurs racines a été créé. Voulez-vous enregistrer la configuration de votre espace de travail dans un fichier ?",
      "workspaceFolderAddedTitle": "Dossier ajouté à l'espace de travail"
    }
  },
  "vsx.disabling": "Désactiver",
  "vsx.disabling.extensions": "Désactivation d'{0}...",
  "vsx.enabling": "Activation",
  "vsx.enabling.extension": "Activation d'{0}..."
}
