<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="fr_FR">
<context>
    <name>AttachedFilesPlace</name>
    <message>
        <source>Open in Qt Creator</source>
        <translation>Ouvrir dans Qt Creator</translation>
    </message>
    <message>
        <source>Open in External Editor</source>
        <translation>Ouvrir dans un éditeur externe</translation>
    </message>
    <message>
        <source>Remove</source>
        <translation>Supprimer</translation>
    </message>
</context>
<context>
    <name>BottomBar</name>
    <message>
        <source>Attach file to message</source>
        <translation>Joindre un fichier au message</translation>
    </message>
    <message>
        <source>Attach image to message</source>
        <translation>Joindre une image au message</translation>
    </message>
    <message>
        <source>Link file to context</source>
        <translation>Lier un fichier au contexte</translation>
    </message>
    <message>
        <source>Sync open files</source>
        <translation>Synchroniser les fichiers ouverts</translation>
    </message>
    <message>
        <source>Automatically synchronize currently opened files with the model context</source>
        <translation>Synchroniser automatiquement les fichiers actuellement ouverts avec le contexte du modèle</translation>
    </message>
    <message>
        <source>Compressing...</source>
        <translation>Compression…</translation>
    </message>
    <message>
        <source>Cancel</source>
        <translation>Annuler</translation>
    </message>
    <message>
        <source>Cancel compression</source>
        <translation>Annuler la compression</translation>
    </message>
    <message>
        <source>Compress</source>
        <translation>Compresser</translation>
    </message>
    <message>
        <source>Compress chat (create summarized copy using LLM)</source>
        <translation>Compresser la discussion (créer une copie résumée via LLM)</translation>
    </message>
</context>
<context>
    <name>ChatItem</name>
    <message>
        <source>↑ %1 (cached %2)</source>
        <translation>↑ %1 (en cache %2)</translation>
    </message>
    <message>
        <source>↑ %1</source>
        <translation>↑ %1</translation>
    </message>
    <message>
        <source>↓ %1 (reasoning %2)</source>
        <translation>↓ %1 (raisonnement %2)</translation>
    </message>
    <message>
        <source>↓ %1</source>
        <translation>↓ %1</translation>
    </message>
    <message>
        <source>Σ %1</source>
        <translation>Σ %1</translation>
    </message>
    <message>
        <source>Reset chat to this message and edit</source>
        <translation>Réinitialiser la discussion à ce message et éditer</translation>
    </message>
    <message>
        <source>Click: Open in Qt Creator
Shift+Click: Open in System Editor</source>
        <translation>Clic : ouvrir dans Qt Creator
Maj+Clic : ouvrir dans l&apos;éditeur système</translation>
    </message>
    <message>
        <source>Failed to load image</source>
        <translation>Échec du chargement de l&apos;image</translation>
    </message>
</context>
<context>
    <name>CodeBlock</name>
    <message>
        <source>Code (%1)</source>
        <translation>Code (%1)</translation>
    </message>
    <message>
        <source>Code</source>
        <translation>Code</translation>
    </message>
    <message>
        <source>Copy</source>
        <translation>Copier</translation>
    </message>
    <message>
        <source>Collapse</source>
        <translation>Réduire</translation>
    </message>
    <message>
        <source>Expand</source>
        <translation>Développer</translation>
    </message>
    <message>
        <source>Copied</source>
        <translation>Copié</translation>
    </message>
</context>
<context>
    <name>ContextViewer</name>
    <message>
        <source>Chat Context</source>
        <translation>Contexte de la discussion</translation>
    </message>
    <message>
        <source>Refresh</source>
        <translation>Actualiser</translation>
    </message>
    <message>
        <source>Close</source>
        <translation>Fermer</translation>
    </message>
    <message>
        <source>Base System Prompt</source>
        <translation>Invite système de base</translation>
    </message>
    <message>
        <source>Active</source>
        <translation>Actif</translation>
    </message>
    <message>
        <source>Empty</source>
        <translation>Vide</translation>
    </message>
    <message>
        <source>No system prompt configured</source>
        <translation>Aucune invite système configurée</translation>
    </message>
    <message>
        <source>Copy</source>
        <translation>Copier</translation>
    </message>
    <message>
        <source>Edit in Settings</source>
        <translation>Modifier dans les paramètres</translation>
    </message>
    <message>
        <source>Agent Role</source>
        <translation>Rôle de l&apos;agent</translation>
    </message>
    <message>
        <source>No role selected. Using base system prompt only.</source>
        <translation>Aucun rôle sélectionné. Utilisation de l&apos;invite système de base uniquement.</translation>
    </message>
    <message>
        <source>Manage Roles</source>
        <translation>Gérer les rôles</translation>
    </message>
    <message>
        <source>Project Rules</source>
        <translation>Règles du projet</translation>
    </message>
    <message>
        <source>%1 active</source>
        <translation>%1 actif</translation>
    </message>
    <message>
        <source>None</source>
        <translation>Aucun</translation>
    </message>
    <message>
        <source>Rules (%1)</source>
        <translation>Règles (%1)</translation>
    </message>
    <message>
        <source>Content</source>
        <translation>Contenu</translation>
    </message>
    <message>
        <source>No project rules found.
Create .md files in .qodeassist/rules/common/ or .qodeassist/rules/chat/</source>
        <translation>Aucune règle de projet trouvée.
Créez des fichiers .md dans .qodeassist/rules/common/ ou .qodeassist/rules/chat/</translation>
    </message>
    <message>
        <source>Open Rules Folder</source>
        <translation>Ouvrir le dossier des règles</translation>
    </message>
    <message>
        <source>Final prompt: Base System Prompt + Agent Role + Project Info + Project Rules + Linked Files</source>
        <translation>Invite finale : invite système de base + rôle de l&apos;agent + infos du projet + règles du projet + fichiers liés</translation>
    </message>
</context>
<context>
    <name>DiffStatistics</name>
    <message>
        <source>+%1 lines, -%2 lines</source>
        <translation>+%1 lignes, -%2 lignes</translation>
    </message>
    <message>
        <source>+%1 lines</source>
        <translation>+%1 lignes</translation>
    </message>
    <message>
        <source>-%1 lines</source>
        <translation>-%1 lignes</translation>
    </message>
    <message>
        <source>No changes</source>
        <translation>Aucune modification</translation>
    </message>
</context>
<context>
    <name>FileEditBlock</name>
    <message>
        <source>ARCHIVED</source>
        <translation>ARCHIVÉ</translation>
    </message>
    <message>
        <source>APPLIED</source>
        <translation>APPLIQUÉ</translation>
    </message>
    <message>
        <source>REJECTED</source>
        <translation>REJETÉ</translation>
    </message>
    <message>
        <source>PENDING</source>
        <translation>EN ATTENTE</translation>
    </message>
    <message>
        <source>Replace</source>
        <translation>Remplacer</translation>
    </message>
    <message>
        <source>Append</source>
        <translation>Ajouter</translation>
    </message>
    <message>
        <source>%1: %2 (+%3 -%4)</source>
        <translation>%1 : %2 (+%3 -%4)</translation>
    </message>
    <message>
        <source>%1: %2 (+%3)</source>
        <translation>%1 : %2 (+%3)</translation>
    </message>
    <message>
        <source>Open file in editor and navigate to changes</source>
        <translation>Ouvrir le fichier dans l&apos;éditeur et accéder aux modifications</translation>
    </message>
    <message>
        <source>Copy</source>
        <translation>Copier</translation>
    </message>
    <message>
        <source>Collapse</source>
        <translation>Réduire</translation>
    </message>
    <message>
        <source>Expand</source>
        <translation>Développer</translation>
    </message>
</context>
<context>
    <name>FileEditsActionBar</name>
    <message>
        <source>File Edit in Current Message</source>
        <translation>Modification de fichier dans le message actuel</translation>
    </message>
    <message>
        <source>%1 File Edits in Current Message</source>
        <translation>%1 modifications de fichier dans le message actuel</translation>
    </message>
    <message>
        <source>%1 applied</source>
        <translation>%1 appliqué(s)</translation>
    </message>
    <message>
        <source>%1 pending</source>
        <translation>%1 en attente</translation>
    </message>
    <message>
        <source>%1 rejected</source>
        <translation>%1 rejeté(s)</translation>
    </message>
    <message>
        <source>Apply All (%1)</source>
        <translation>Tout appliquer (%1)</translation>
    </message>
    <message>
        <source>Reapply All (%1)</source>
        <translation>Tout réappliquer (%1)</translation>
    </message>
    <message>
        <source>Apply all pending and rejected edits in this message</source>
        <translation>Appliquer toutes les modifications en attente et rejetées de ce message</translation>
    </message>
    <message>
        <source>Reapply all rejected edits in this message</source>
        <translation>Réappliquer toutes les modifications rejetées de ce message</translation>
    </message>
    <message>
        <source>Undo All (%1)</source>
        <translation>Tout annuler (%1)</translation>
    </message>
    <message>
        <source>Undo all applied edits in this message</source>
        <translation>Annuler toutes les modifications appliquées dans ce message</translation>
    </message>
</context>
<context>
    <name>MessageNavigator</name>
    <message>
        <source>#%1  ·  %2</source>
        <translation>#%1  ·  %2</translation>
    </message>
    <message>
        <source>Jump to message #%1</source>
        <translation>Aller au message #%1</translation>
    </message>
</context>
<context>
    <name>QObject</name>
    <message>
        <source>Template Not Found</source>
        <translation>Modèle introuvable</translation>
    </message>
    <message>
        <source>Template &apos;%1&apos; was not found or has been updated. Please re-set new one.</source>
        <translation>Le modèle &apos;%1&apos; est introuvable ou a été mis à jour. Veuillez en redéfinir un nouveau.</translation>
    </message>
    <message>
        <source>Providers</source>
        <translation>Fournisseurs</translation>
    </message>
    <message>
        <source>Agents</source>
        <translation>Agents</translation>
    </message>
    <message>
        <source>Current Settings</source>
        <translation>Paramètres actuels</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Chat::ChatCompressor</name>
    <message>
        <source>Compression already in progress</source>
        <translation>Compression déjà en cours</translation>
    </message>
    <message>
        <source>No chat file to compress</source>
        <translation>Aucun fichier de discussion à compresser</translation>
    </message>
    <message>
        <source>Chat is empty, nothing to compress</source>
        <translation>La discussion est vide, rien à compresser</translation>
    </message>
    <message>
        <source>No provider available</source>
        <translation>Aucun fournisseur disponible</translation>
    </message>
    <message>
        <source>No template available</source>
        <translation>Aucun modèle disponible</translation>
    </message>
    <message>
        <source>Compression cancelled</source>
        <translation>Compression annulée</translation>
    </message>
    <message>
        <source>Failed to save compressed chat</source>
        <translation>Échec de l&apos;enregistrement de la discussion compressée</translation>
    </message>
    <message>
        <source>Compression failed: %1</source>
        <translation>Échec de la compression : %1</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Chat::ChatFileManager</name>
    <message>
        <source>File is not accessible: %1</source>
        <translation>Fichier inaccessible : %1</translation>
    </message>
    <message>
        <source>Failed to copy file: %1</source>
        <translation>Échec de la copie du fichier : %1</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Chat::ChatHistoryStore</name>
    <message>
        <source>Save Chat History</source>
        <translation>Enregistrer l&apos;historique de discussion</translation>
    </message>
    <message>
        <source>JSON files (*.json)</source>
        <translation>Fichiers JSON (*.json)</translation>
    </message>
    <message>
        <source>Load Chat History</source>
        <translation>Charger l&apos;historique de discussion</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Chat::ChatRootView</name>
    <message>
        <source>Chat compressed successfully!</source>
        <translation>Discussion compressée avec succès !</translation>
    </message>
    <message>
        <source>This chat file is already in use by another QodeAssist chat session.</source>
        <translation>Ce fichier de discussion est déjà utilisé par une autre session de discussion QodeAssist.</translation>
    </message>
    <message>
        <source>This chat is already open in another QodeAssist chat session.</source>
        <translation>Cette discussion est déjà ouverte dans une autre session de discussion QodeAssist.</translation>
    </message>
    <message>
        <source>Select Files to Attach</source>
        <translation>Sélectionner les fichiers à joindre</translation>
    </message>
    <message numerus="yes">
        <source>Images automatically moved to Attach zone (%n file(s))</source>
        <translation>
            <numerusform>Images automatiquement déplacées vers la zone de pièces jointes (%n fichier(s))</numerusform>
            <numerusform>Images automatiquement déplacées vers la zone de pièces jointes (%n fichier(s))</numerusform>
        </translation>
    </message>
    <message>
        <source>Select Images to Attach</source>
        <translation>Sélectionner les images à joindre</translation>
    </message>
    <message>
        <source>Images (*.png *.jpg *.jpeg *.gif *.bmp *.webp)</source>
        <translation>Images (*.png *.jpg *.jpeg *.gif *.bmp *.webp)</translation>
    </message>
    <message>
        <source>Compression is already in progress</source>
        <translation>Une compression est déjà en cours</translation>
    </message>
    <message>
        <source>No chat file to compress. Please save the chat first.</source>
        <translation>Aucun fichier de discussion à compresser. Veuillez d&apos;abord enregistrer la discussion.</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Chat::NavigationPanel</name>
    <message>
        <source>QodeAssist Chat</source>
        <translation>Discussion QodeAssist</translation>
    </message>
</context>
<context>
    <name>QodeAssist::EditorChatButton</name>
    <message>
        <source>Open QodeAssist Chat</source>
        <translation>Ouvrir la discussion QodeAssist</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Mcp::McpServerManager</name>
    <message>
        <source>QodeAssist MCP server exposing Qt Creator project tools.</source>
        <translation>Serveur MCP QodeAssist exposant les outils de projet Qt Creator.</translation>
    </message>
</context>
<context>
    <name>QodeAssist::QodeAssistClient</name>
    <message>
        <source>Code completion failed: %1</source>
        <translation>Échec de la complétion de code : %1</translation>
    </message>
    <message>
        <source>Quick refactor failed</source>
        <translation>Échec du refactoring rapide</translation>
    </message>
    <message>
        <source>Quick refactor failed: %1</source>
        <translation>Échec du refactoring rapide : %1</translation>
    </message>
</context>
<context>
    <name>QodeAssist::RefactorWidget</name>
    <message>
        <source>◄ Original</source>
        <translation>◄ Original</translation>
    </message>
    <message>
        <source>Refactored ►</source>
        <translation>Refactorisé ►</translation>
    </message>
    <message>
        <source>✓ Apply (⌘+Enter)</source>
        <translation>✓ Appliquer (⌘+Entrée)</translation>
    </message>
    <message>
        <source>✓ Apply (Ctrl+Enter)</source>
        <translation>✓ Appliquer (Ctrl+Entrée)</translation>
    </message>
    <message>
        <source>✗ Decline (Esc)</source>
        <translation>✗ Refuser (Échap)</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Settings::AgentDetailPane</name>
    <message>
        <source>Open in editor</source>
        <translation>Ouvrir dans l&apos;éditeur</translation>
    </message>
    <message>
        <source>Duplicate…</source>
        <translation>Dupliquer…</translation>
    </message>
    <message>
        <source>Delete</source>
        <translation>Supprimer</translation>
    </message>
    <message>
        <source>Identity</source>
        <translation>Identité</translation>
    </message>
    <message>
        <source>Extends:</source>
        <translation>Étend :</translation>
    </message>
    <message>
        <source>Name:</source>
        <translation>Nom :</translation>
    </message>
    <message>
        <source>Description:</source>
        <translation>Description :</translation>
    </message>
    <message>
        <source>Tags:</source>
        <translation>Étiquettes :</translation>
    </message>
    <message>
        <source>Comma-separated. Free-form — used to filter and group the agent list.</source>
        <translation>Séparées par des virgules. Format libre — utilisé pour filtrer et regrouper la liste des agents.</translation>
    </message>
    <message>
        <source>System role</source>
        <translation>Rôle système</translation>
    </message>
    <message>
        <source>Prepended to every request as the system message.</source>
        <translation>Ajouté au début de chaque requête comme message système.</translation>
    </message>
    <message>
        <source>Context</source>
        <translation>Contexte</translation>
    </message>
    <message>
        <source>Jinja2 template rendered with ContextManager bindings into the agent.context system-prompt layer. Empty = no context block.</source>
        <translation>Modèle Jinja2 rendu avec les liaisons ContextManager dans la couche d&apos;invite système agent.context. Vide = aucun bloc de contexte.</translation>
    </message>
    <message>
        <source>Connection</source>
        <translation>Connexion</translation>
    </message>
    <message>
        <source>Provider:</source>
        <translation>Fournisseur :</translation>
    </message>
    <message>
        <source>The provider instance this agent uses. URL is inherited from the instance.</source>
        <translation>L&apos;instance de fournisseur utilisée par cet agent. L&apos;URL est héritée de l&apos;instance.</translation>
    </message>
    <message>
        <source>Endpoint:</source>
        <translation>Point de terminaison :</translation>
    </message>
    <message>
        <source>Appended to the provider&apos;s URL. Blank uses the provider default.</source>
        <translation>Ajouté à l&apos;URL du fournisseur. Vide utilise la valeur par défaut du fournisseur.</translation>
    </message>
    <message>
        <source>Model:</source>
        <translation>Modèle :</translation>
    </message>
    <message>
        <source>Match</source>
        <translation>Correspondance</translation>
    </message>
    <message>
        <source>When a feature slot has multiple bound agents, the first whose match rules satisfy the current context wins.</source>
        <translation>Quand un emplacement de fonctionnalité a plusieurs agents liés, le premier dont les règles de correspondance satisfont le contexte actuel l&apos;emporte.</translation>
    </message>
    <message>
        <source>File patterns:</source>
        <translation>Motifs de fichiers :</translation>
    </message>
    <message>
        <source>Globs, comma-separated. Empty matches every file.</source>
        <translation>Motifs glob, séparés par des virgules. Vide correspond à tous les fichiers.</translation>
    </message>
    <message>
        <source>Template</source>
        <translation>Modèle</translation>
    </message>
    <message>
        <source>Jinja2 template (via inja) rendered to the request body. Built-in context: ctx.prefix, ctx.suffix, ctx.history, ctx.system_prompt, agent.model.</source>
        <translation>Modèle Jinja2 (via inja) rendu dans le corps de la requête. Contexte intégré : ctx.prefix, ctx.suffix, ctx.history, ctx.system_prompt, agent.model.</translation>
    </message>
    <message>
        <source>message_format:</source>
        <translation>message_format :</translation>
    </message>
    <message>
        <source>Load errors</source>
        <translation>Erreurs de chargement</translation>
    </message>
    <message>
        <source>▸ Show raw TOML</source>
        <translation>▸ Afficher le TOML brut</translation>
    </message>
    <message>
        <source>▾ Hide raw TOML</source>
        <translation>▾ Masquer le TOML brut</translation>
    </message>
    <message>
        <source>No description provided.</source>
        <translation>Aucune description fournie.</translation>
    </message>
    <message>
        <source>%1  (missing — not in provider library)</source>
        <translation>%1  (manquant — absent de la bibliothèque du fournisseur)</translation>
    </message>
    <message>
        <source>(provider default)</source>
        <translation>(par défaut du fournisseur)</translation>
    </message>
    <message>
        <source># effective request line
(unknown — provider instance not found)</source>
        <translation># ligne de requête effective
(inconnu — instance de fournisseur introuvable)</translation>
    </message>
    <message>
        <source>effective request line</source>
        <translation>ligne de requête effective</translation>
    </message>
    <message>
        <source>(no system role set)</source>
        <translation>(aucun rôle système défini)</translation>
    </message>
    <message>
        <source>(no context block)</source>
        <translation>(aucun bloc de contexte)</translation>
    </message>
    <message>
        <source>(matches every file)</source>
        <translation>(correspond à tous les fichiers)</translation>
    </message>
    <message>
        <source>(inherited from parent / none)</source>
        <translation>(hérité du parent / aucun)</translation>
    </message>
    <message>
        <source>(truncated at %1 bytes)</source>
        <translation>(tronqué à %1 octets)</translation>
    </message>
    <message>
        <source>(source file is empty)</source>
        <translation>(le fichier source est vide)</translation>
    </message>
    <message>
        <source>(source file unavailable: %1)</source>
        <translation>(fichier source indisponible : %1)</translation>
    </message>
    <message>
        <source>Bundled agents are read-only — duplicate to edit.</source>
        <translation>Les agents intégrés sont en lecture seule — dupliquez pour les modifier.</translation>
    </message>
    <message>
        <source>Bundled agents cannot be deleted.</source>
        <translation>Les agents intégrés ne peuvent pas être supprimés.</translation>
    </message>
    <message>
        <source>Select an agent</source>
        <translation>Sélectionner un agent</translation>
    </message>
    <message>
        <source>Pick an agent from the list to see its details.</source>
        <translation>Choisissez un agent dans la liste pour voir ses détails.</translation>
    </message>
    <message>
        <source>error: %1</source>
        <translation>erreur : %1</translation>
    </message>
    <message>
        <source>warning: %1</source>
        <translation>avertissement : %1</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Settings::AgentListPane</name>
    <message>
        <source>Filter agents…</source>
        <translation>Filtrer les agents…</translation>
    </message>
    <message>
        <source>User</source>
        <translation>Utilisateur</translation>
    </message>
    <message>
        <source>Bundled</source>
        <translation>Intégré</translation>
    </message>
    <message>
        <source>No agents match these filters.</source>
        <translation>Aucun agent ne correspond à ces filtres.</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Settings::AgentRoleDialog</name>
    <message>
        <source>Add Agent Role</source>
        <translation>Ajouter un rôle d&apos;agent</translation>
    </message>
    <message>
        <source>Duplicate Agent Role</source>
        <translation>Dupliquer un rôle d&apos;agent</translation>
    </message>
    <message>
        <source>Edit Agent Role</source>
        <translation>Modifier un rôle d&apos;agent</translation>
    </message>
    <message>
        <source>e.g., Developer, Code Reviewer</source>
        <translation>ex. : Développeur, Relecteur de code</translation>
    </message>
    <message>
        <source>Name:</source>
        <translation>Nom :</translation>
    </message>
    <message>
        <source>e.g., developer, code_reviewer</source>
        <translation>ex. : developer, code_reviewer</translation>
    </message>
    <message>
        <source>ID:</source>
        <translation>ID :</translation>
    </message>
    <message>
        <source>Brief description of this role...</source>
        <translation>Brève description de ce rôle…</translation>
    </message>
    <message>
        <source>Description:</source>
        <translation>Description :</translation>
    </message>
    <message>
        <source>System Prompt:</source>
        <translation>Invite système :</translation>
    </message>
    <message>
        <source>You are an expert in...

Your role is to:
- Task 1
- Task 2
- Task 3</source>
        <translation>Vous êtes un expert en…

Votre rôle est de :
- Tâche 1
- Tâche 2
- Tâche 3</translation>
    </message>
    <message>
        <source>ID cannot be changed for existing roles</source>
        <translation>L&apos;ID ne peut pas être modifié pour les rôles existants</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Settings::AgentsWidget</name>
    <message>
        <source>Agents</source>
        <translation>Agents</translation>
    </message>
    <message>
        <source>Reload from disk</source>
        <translation>Recharger depuis le disque</translation>
    </message>
    <message>
        <source>Open agents folder</source>
        <translation>Ouvrir le dossier des agents</translation>
    </message>
    <message>
        <source>Open agent</source>
        <translation>Ouvrir l&apos;agent</translation>
    </message>
    <message>
        <source>&apos;%1&apos; is bundled with the plugin and read-only.
Use Duplicate to create an editable user copy.</source>
        <translation>&apos;%1&apos; est intégré au plugin et en lecture seule.
Utilisez Dupliquer pour créer une copie utilisateur modifiable.</translation>
    </message>
    <message>
        <source>Agent &apos;%1&apos; has no editable source file.</source>
        <translation>L&apos;agent &apos;%1&apos; n&apos;a aucun fichier source modifiable.</translation>
    </message>
    <message>
        <source>Could not open %1.</source>
        <translation>Impossible d&apos;ouvrir %1.</translation>
    </message>
    <message>
        <source>Duplicate</source>
        <translation>Dupliquer</translation>
    </message>
    <message>
        <source>Delete Agent</source>
        <translation>Supprimer l&apos;agent</translation>
    </message>
    <message>
        <source>Delete agent &apos;%1&apos;?

This will remove the file:
%2</source>
        <translation>Supprimer l&apos;agent &apos;%1&apos; ?

Cela supprimera le fichier :
%2</translation>
    </message>
    <message>
        <source>Could not delete the agent file:
%1</source>
        <translation>Impossible de supprimer le fichier de l&apos;agent :
%1</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Settings::McpClientsListAspect</name>
    <message>
        <source>Connected.</source>
        <translation>Connecté.</translation>
    </message>
    <message>
        <source>Connecting…</source>
        <translation>Connexion…</translation>
    </message>
    <message>
        <source>Failed.</source>
        <translation>Échec.</translation>
    </message>
    <message>
        <source>Failed: %1</source>
        <translation>Échec : %1</translation>
    </message>
    <message>
        <source>Disabled.</source>
        <translation>Désactivé.</translation>
    </message>
    <message>
        <source>everything (reference test server)</source>
        <translation>everything (serveur de test de référence)</translation>
    </message>
    <message>
        <source>filesystem (local files)</source>
        <translation>filesystem (fichiers locaux)</translation>
    </message>
    <message>
        <source>memory (in-memory key-value)</source>
        <translation>memory (clé-valeur en mémoire)</translation>
    </message>
    <message>
        <source>git (local git ops)</source>
        <translation>git (opérations git locales)</translation>
    </message>
    <message>
        <source>time (system clock)</source>
        <translation>time (horloge système)</translation>
    </message>
    <message>
        <source>qtcreator (Qt Creator&apos;s built-in MCP server)</source>
        <translation>qtcreator (serveur MCP intégré à Qt Creator)</translation>
    </message>
    <message>
        <source>qt-docs (Qt documentation)</source>
        <translation>qt-docs (documentation Qt)</translation>
    </message>
    <message>
        <source>remote (SSE / HTTP)</source>
        <translation>remote (SSE / HTTP)</translation>
    </message>
    <message>
        <source>Server reports no tools.</source>
        <translation>Le serveur ne signale aucun outil.</translation>
    </message>
    <message>
        <source>Tools</source>
        <translation>Outils</translation>
    </message>
    <message>
        <source>Enable / disable this MCP server</source>
        <translation>Activer / désactiver ce serveur MCP</translation>
    </message>
    <message>
        <source>Remove this server from the config.</source>
        <translation>Supprimer ce serveur de la configuration.</translation>
    </message>
    <message>
        <source>Remove server</source>
        <translation>Supprimer le serveur</translation>
    </message>
    <message>
        <source>Remove server &apos;%1&apos; from the config?</source>
        <translation>Supprimer le serveur &apos;%1&apos; de la configuration ?</translation>
    </message>
    <message>
        <source>Open Config</source>
        <translation>Ouvrir la configuration</translation>
    </message>
    <message>
        <source>Refresh MCP List</source>
        <translation>Actualiser la liste MCP</translation>
    </message>
    <message>
        <source>Note: restart Qt Creator to apply MCP changes to already-opened chats and running sessions.</source>
        <translation>Remarque : redémarrez Qt Creator pour appliquer les modifications MCP aux discussions déjà ouvertes et aux sessions en cours.</translation>
    </message>
    <message>
        <source>Quick Setup</source>
        <translation>Configuration rapide</translation>
    </message>
    <message>
        <source>Pick a preset to append a ready-made server entry to the config (auto-suffixed if the name is taken).</source>
        <translation>Choisissez un préréglage pour ajouter une entrée de serveur prête à l&apos;emploi à la configuration (suffixée automatiquement si le nom est pris).</translation>
    </message>
    <message>
        <source>-- Select Preset --</source>
        <translation>-- Sélectionner un préréglage --</translation>
    </message>
    <message>
        <source>No servers configured. Add a preset below or edit the JSON.</source>
        <translation>Aucun serveur configuré. Ajoutez un préréglage ci-dessous ou modifiez le JSON.</translation>
    </message>
    <message>
        <source>0 server(s) defined.</source>
        <translation>0 serveur(s) défini(s).</translation>
    </message>
    <message>
        <source>%1 server(s) defined, %2 enabled.</source>
        <translation>%1 serveur(s) défini(s), %2 activé(s).</translation>
    </message>
    <message>
        <source>MCP configuration</source>
        <translation>Configuration MCP</translation>
    </message>
    <message>
        <source>Failed to write %1:
%2</source>
        <translation>Échec de l&apos;écriture de %1 :
%2</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Settings::ProviderDetailPane</name>
    <message>
        <source>Edit…</source>
        <translation>Modifier…</translation>
    </message>
    <message>
        <source>Open in editor</source>
        <translation>Ouvrir dans l&apos;éditeur</translation>
    </message>
    <message>
        <source>Open this provider&apos;s TOML file in Qt Creator. Bundled providers are read-only — duplicate first.</source>
        <translation>Ouvrir le fichier TOML de ce fournisseur dans Qt Creator. Les fournisseurs intégrés sont en lecture seule — dupliquez d&apos;abord.</translation>
    </message>
    <message>
        <source>Duplicate…</source>
        <translation>Dupliquer…</translation>
    </message>
    <message>
        <source>Delete</source>
        <translation>Supprimer</translation>
    </message>
    <message>
        <source>Cancel</source>
        <translation>Annuler</translation>
    </message>
    <message>
        <source>Save</source>
        <translation>Enregistrer</translation>
    </message>
    <message>
        <source>Identity</source>
        <translation>Identité</translation>
    </message>
    <message>
        <source>Name:</source>
        <translation>Nom :</translation>
    </message>
    <message>
        <source>Client API:</source>
        <translation>API client :</translation>
    </message>
    <message>
        <source>The client API this provider speaks. Cannot be changed after creation.</source>
        <translation>L&apos;API client utilisée par ce fournisseur. Ne peut pas être modifiée après création.</translation>
    </message>
    <message>
        <source>Description:</source>
        <translation>Description :</translation>
    </message>
    <message>
        <source>Endpoint</source>
        <translation>Point de terminaison</translation>
    </message>
    <message>
        <source>URL:</source>
        <translation>URL :</translation>
    </message>
    <message>
        <source>Base URL. Agents append their endpoint path (e.g. /chat/completions) to this.</source>
        <translation>URL de base. Les agents y ajoutent le chemin de leur point de terminaison (ex. /chat/completions).</translation>
    </message>
    <message>
        <source>Credentials</source>
        <translation>Identifiants</translation>
    </message>
    <message>
        <source>Enter API key…</source>
        <translation>Saisir la clé API…</translation>
    </message>
    <message>
        <source>Show / hide API key</source>
        <translation>Afficher / masquer la clé API</translation>
    </message>
    <message>
        <source>Save key</source>
        <translation>Enregistrer la clé</translation>
    </message>
    <message>
        <source>Clear</source>
        <translation>Effacer</translation>
    </message>
    <message>
        <source>Erase the stored API key for this provider</source>
        <translation>Effacer la clé API enregistrée pour ce fournisseur</translation>
    </message>
    <message>
        <source>API key:</source>
        <translation>Clé API :</translation>
    </message>
    <message>
        <source>Launch</source>
        <translation>Lancement</translation>
    </message>
    <message>
        <source>idle</source>
        <translation>inactif</translation>
    </message>
    <message>
        <source>Start</source>
        <translation>Démarrer</translation>
    </message>
    <message>
        <source>Stop</source>
        <translation>Arrêter</translation>
    </message>
    <message>
        <source>Restart</source>
        <translation>Redémarrer</translation>
    </message>
    <message>
        <source>▸ Show launch terminal</source>
        <translation>▸ Afficher le terminal de lancement</translation>
    </message>
    <message>
        <source>▾ Hide launch terminal</source>
        <translation>▾ Masquer le terminal de lancement</translation>
    </message>
    <message>
        <source>▸ Show raw TOML</source>
        <translation>▸ Afficher le TOML brut</translation>
    </message>
    <message>
        <source>▾ Hide raw TOML</source>
        <translation>▾ Masquer le TOML brut</translation>
    </message>
    <message>
        <source>No description provided.</source>
        <translation>Aucune description fournie.</translation>
    </message>
    <message>
        <source>— not required (local provider)</source>
        <translation>— non requis (fournisseur local)</translation>
    </message>
    <message>
        <source>This provider type does not use a key.</source>
        <translation>Ce type de fournisseur n&apos;utilise pas de clé.</translation>
    </message>
    <message>
        <source>Stored — enter a new key to replace it.</source>
        <translation>Enregistrée — saisissez une nouvelle clé pour la remplacer.</translation>
    </message>
    <message>
        <source>A key is stored. Type a new key and press Save key to replace it, or Clear to erase it.</source>
        <translation>Une clé est enregistrée. Saisissez une nouvelle clé et appuyez sur Enregistrer la clé pour la remplacer, ou sur Effacer pour la supprimer.</translation>
    </message>
    <message>
        <source>No key stored yet. Type a key and press Save key.</source>
        <translation>Aucune clé enregistrée pour le moment. Saisissez une clé et appuyez sur Enregistrer la clé.</translation>
    </message>
    <message>
        <source>Select a provider</source>
        <translation>Sélectionner un fournisseur</translation>
    </message>
    <message>
        <source>No [launch] block. This provider is treated as external — the plugin will not spawn or supervise any process. Add a [launch] block to the TOML to have the plugin manage a local server here.</source>
        <translation>Aucun bloc [launch]. Ce fournisseur est traité comme externe — le plugin ne lancera ni ne supervisera aucun processus. Ajoutez un bloc [launch] au TOML pour que le plugin gère un serveur local ici.</translation>
    </message>
    <message>
        <source> &lt;span style=&apos;color:gray&apos;&gt;(detached — survives Qt Creator restart)&lt;/span&gt;</source>
        <translation> &lt;span style=&apos;color:gray&apos;&gt;(détaché — survit au redémarrage de Qt Creator)&lt;/span&gt;</translation>
    </message>
    <message>
        <source>starting…</source>
        <translation>démarrage…</translation>
    </message>
    <message>
        <source>probing…</source>
        <translation>sondage…</translation>
    </message>
    <message>
        <source>ready</source>
        <translation>prêt</translation>
    </message>
    <message>
        <source>stopping…</source>
        <translation>arrêt…</translation>
    </message>
    <message>
        <source>failed</source>
        <translation>échec</translation>
    </message>
    <message>
        <source>failed — %1</source>
        <translation>échec — %1</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Settings::ProvidersPageWidget</name>
    <message>
        <source>Providers</source>
        <translation>Fournisseurs</translation>
    </message>
    <message>
        <source>Filter providers…</source>
        <translation>Filtrer les fournisseurs…</translation>
    </message>
    <message>
        <source>Open in editor</source>
        <translation>Ouvrir dans l&apos;éditeur</translation>
    </message>
    <message>
        <source>Bundled providers are read-only. Use Duplicate to create an editable user copy first.</source>
        <translation>Les fournisseurs intégrés sont en lecture seule. Utilisez Dupliquer pour créer d&apos;abord une copie utilisateur modifiable.</translation>
    </message>
    <message>
        <source>No user instances yet.</source>
        <translation>Aucune instance utilisateur pour le moment.</translation>
    </message>
    <message>
        <source>No bundled instances loaded.</source>
        <translation>Aucune instance intégrée chargée.</translation>
    </message>
    <message>
        <source>User</source>
        <translation>Utilisateur</translation>
    </message>
    <message>
        <source>Bundled</source>
        <translation>Intégré</translation>
    </message>
    <message>
        <source>Duplicate provider</source>
        <translation>Dupliquer le fournisseur</translation>
    </message>
    <message>
        <source>Name for the new provider:</source>
        <translation>Nom du nouveau fournisseur :</translation>
    </message>
    <message>
        <source>An instance named &apos;%1&apos; already exists.</source>
        <translation>Une instance nommée &apos;%1&apos; existe déjà.</translation>
    </message>
    <message>
        <source>Delete provider</source>
        <translation>Supprimer le fournisseur</translation>
    </message>
    <message>
        <source>Delete user provider &apos;%1&apos;?

File: %2</source>
        <translation>Supprimer le fournisseur utilisateur &apos;%1&apos; ?

Fichier : %2</translation>
    </message>
    <message>
        <source>Failed to delete file:
%1</source>
        <translation>Échec de la suppression du fichier :
%1</translation>
    </message>
    <message>
        <source>Save</source>
        <translation>Enregistrer</translation>
    </message>
    <message>
        <source>Name cannot be empty.</source>
        <translation>Le nom ne peut pas être vide.</translation>
    </message>
    <message>
        <source>Save anyway?</source>
        <translation>Enregistrer quand même ?</translation>
    </message>
    <message>
        <source>Saved to:
%1

but could not remove the old file:
%2

Two provider files now describe this instance — delete the old file manually to avoid a duplicate-name error.</source>
        <translation>Enregistré dans :
%1

mais impossible de supprimer l&apos;ancien fichier :
%2

Deux fichiers de fournisseur décrivent maintenant cette instance — supprimez l&apos;ancien fichier manuellement pour éviter une erreur de nom en double.</translation>
    </message>
    <message>
        <source>Clear API key</source>
        <translation>Effacer la clé API</translation>
    </message>
    <message>
        <source>Erase the stored API key for &apos;%1&apos;?</source>
        <translation>Effacer la clé API enregistrée pour &apos;%1&apos; ?</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Settings::TagFilterStrip</name>
    <message>
        <source>FILTER BY TAG</source>
        <translation>FILTRER PAR ÉTIQUETTE</translation>
    </message>
    <message>
        <source>clear</source>
        <translation>effacer</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Tools::TodoTool</name>
    <message>
        <source>Error: &apos;tasks&apos; parameter (array) is required for &apos;add&apos; operation. Example: {&quot;operation&quot;: &quot;add&quot;, &quot;tasks&quot;: [&quot;Task 1&quot;, &quot;Task 2&quot;]}</source>
        <translation>Erreur : le paramètre &apos;tasks&apos; (tableau) est requis pour l&apos;opération &apos;add&apos;. Exemple : {&quot;operation&quot;: &quot;add&quot;, &quot;tasks&quot;: [&quot;Task 1&quot;, &quot;Task 2&quot;]}</translation>
    </message>
    <message>
        <source>Error: &apos;tasks&apos; array cannot be empty. Provide at least one task.</source>
        <translation>Erreur : le tableau &apos;tasks&apos; ne peut pas être vide. Fournissez au moins une tâche.</translation>
    </message>
    <message>
        <source>Error: All tasks in &apos;tasks&apos; array are empty strings.</source>
        <translation>Erreur : toutes les tâches du tableau &apos;tasks&apos; sont des chaînes vides.</translation>
    </message>
    <message>
        <source>Error: &apos;todo_ids&apos; parameter (array) is required for &apos;complete&apos; operation. Example: {&quot;operation&quot;: &quot;complete&quot;, &quot;todo_ids&quot;: [1, 2, 3]}</source>
        <translation>Erreur : le paramètre &apos;todo_ids&apos; (tableau) est requis pour l&apos;opération &apos;complete&apos;. Exemple : {&quot;operation&quot;: &quot;complete&quot;, &quot;todo_ids&quot;: [1, 2, 3]}</translation>
    </message>
    <message>
        <source>Error: &apos;todo_ids&apos; array cannot be empty. Provide at least one ID.</source>
        <translation>Erreur : le tableau &apos;todo_ids&apos; ne peut pas être vide. Fournissez au moins un ID.</translation>
    </message>
    <message>
        <source>Error: All IDs in &apos;todo_ids&apos; array are invalid. IDs must be positive integers.</source>
        <translation>Erreur : tous les ID du tableau &apos;todo_ids&apos; sont invalides. Les ID doivent être des entiers positifs.</translation>
    </message>
    <message>
        <source>Error: Unknown operation &apos;%1&apos;. Valid operations: &apos;add&apos;, &apos;complete&apos;, &apos;list&apos;</source>
        <translation>Erreur : opération inconnue &apos;%1&apos;. Opérations valides : &apos;add&apos;, &apos;complete&apos;, &apos;list&apos;</translation>
    </message>
    <message>
        <source>✓ Added 1 new task</source>
        <translation>✓ 1 nouvelle tâche ajoutée</translation>
    </message>
    <message>
        <source>✓ Added %1 new tasks</source>
        <translation>✓ %1 nouvelles tâches ajoutées</translation>
    </message>
    <message>
        <source>Error: No todos found in this session</source>
        <translation>Erreur : aucune tâche trouvée dans cette session</translation>
    </message>
    <message>
        <source>✓ Marked 1 task as completed</source>
        <translation>✓ 1 tâche marquée comme terminée</translation>
    </message>
    <message>
        <source>✓ Marked %1 tasks as completed</source>
        <translation>✓ %1 tâches marquées comme terminées</translation>
    </message>
    <message>
        <source>⚠ %1 already completed</source>
        <translation>⚠ %1 déjà terminée(s)</translation>
    </message>
    <message>
        <source>❌ Not found: %1</source>
        <translation>❌ Introuvable : %1</translation>
    </message>
    <message>
        <source>📋 TODO List: (empty)</source>
        <translation>📋 Liste TODO : (vide)</translation>
    </message>
    <message>
        <source>📋 TODO List:</source>
        <translation>📋 Liste TODO :</translation>
    </message>
    <message>
        <source>Progress: %1/%2 completed (%3%)</source>
        <translation>Progression : %1/%2 terminé(s) (%3 %)</translation>
    </message>
    <message>
        <source>📋 All tasks completed! 🎉</source>
        <translation>📋 Toutes les tâches sont terminées ! 🎉</translation>
    </message>
    <message>
        <source>📋 Remaining tasks:</source>
        <translation>📋 Tâches restantes :</translation>
    </message>
</context>
<context>
    <name>QodeAssist::UpdateDialog</name>
    <message>
        <source>QodeAssist Update</source>
        <translation>Mise à jour QodeAssist</translation>
    </message>
    <message>
        <source>QodeAssist is an open-source project that helps
developers write better code. If you find it useful, please</source>
        <translation>QodeAssist est un projet open source qui aide
les développeurs à écrire du meilleur code. Si vous le trouvez utile, veuillez</translation>
    </message>
    <message>
        <source>Install via Extension Registry (recommended)</source>
        <translation>Installer via Extension Registry (recommandé)</translation>
    </message>
    <message>
        <source>In Qt Creator open Extensions → Browser tab, enable &quot;Use External Repository&quot;, add one of the URLs below and click Apply to install QodeAssist. Updates are then installed from the same screen.</source>
        <translation>Dans Qt Creator, ouvrez Extensions → onglet Browser, activez « Use External Repository », ajoutez l'une des URL ci-dessous et cliquez sur Apply pour installer QodeAssist. Les mises à jour s'installent ensuite depuis le même écran.</translation>
    </message>
    <message>
        <source>Copy</source>
        <translation>Copier</translation>
    </message>
    <message>
        <source>Latest (for the newest Qt Creator, always up to date)</source>
        <translation>Dernière (pour le Qt Creator le plus récent, toujours à jour)</translation>
    </message>
    <message>
        <source>Only for Qt Creator %1</source>
        <translation>Uniquement pour Qt Creator %1</translation>
    </message>
    <message>
        <source>Alternative: QodeAssistUpdater</source>
        <translation>Alternative : QodeAssistUpdater</translation>
    </message>
    <message>
        <source>A standalone tool for installing and updating the plugin.</source>
        <translation>Un outil autonome pour installer et mettre à jour le plugin.</translation>
    </message>
    <message>
        <source>Download QodeAssistUpdater</source>
        <translation>Télécharger QodeAssistUpdater</translation>
    </message>
    <message>
        <source>A new version of QodeAssist is available!</source>
        <translation>Une nouvelle version de QodeAssist est disponible !</translation>
    </message>
    <message>
        <source>Version %1 is now available - you have %2</source>
        <translation>La version %1 est maintenant disponible - vous avez %2</translation>
    </message>
    <message>
        <source>Release Notes:</source>
        <translation>Notes de version :</translation>
    </message>
    <message>
        <source>Open Release Page</source>
        <translation>Ouvrir la page de version</translation>
    </message>
    <message>
        <source>Open Plugin Folder</source>
        <translation>Ouvrir le dossier du plugin</translation>
    </message>
    <message>
        <source>Close</source>
        <translation>Fermer</translation>
    </message>
    <message>
        <source>QodeAssist is up to date</source>
        <translation>QodeAssist est à jour</translation>
    </message>
    <message>
        <source>You are using the latest version: %1</source>
        <translation>Vous utilisez la dernière version : %1</translation>
    </message>
    <message>
        <source>No release notes available. Check the release page for more information.</source>
        <translation>Aucune note de version disponible. Consultez la page de version pour plus d&apos;informations.</translation>
    </message>
</context>
<context>
    <name>QodeAssist::UpdateStatusWidget</name>
    <message>
        <source>Update</source>
        <translation>Mettre à jour</translation>
    </message>
    <message>
        <source>New version: v%1</source>
        <translation>Nouvelle version : v%1</translation>
    </message>
    <message>
        <source>Check update information</source>
        <translation>Vérifier les informations de mise à jour</translation>
    </message>
</context>
<context>
    <name>QtC::QodeAssist</name>
    <message>
        <source>Cannot create user provider folder:
%1</source>
        <translation>Impossible de créer le dossier du fournisseur utilisateur :
%1</translation>
    </message>
    <message>
        <source>Cannot pick a free filename in:
%1</source>
        <translation>Impossible de choisir un nom de fichier libre dans :
%1</translation>
    </message>
    <message>
        <source>Cannot write %1:
%2</source>
        <translation>Impossible d&apos;écrire %1 :
%2</translation>
    </message>
    <message>
        <source>Write failed for %1:
%2</source>
        <translation>Échec de l&apos;écriture pour %1 :
%2</translation>
    </message>
    <message>
        <source>Request timeout (seconds):</source>
        <translation>Délai d'expiration de la requête (secondes) :</translation>
    </message>
    <message>
        <source>Maximum time to wait for the model to send data before a request is aborted. Applies to all requests — chat, code completion, quick refactor and chat compression. The timer resets every time data is received, so this effectively limits the time-to-first-token and any stall between tokens. Increase it for slow or local models that need a long time to start responding. Set to 0 to disable the timeout.</source>
        <translation>Temps d'attente maximal pour que le modèle envoie des données avant l'abandon d'une requête. S'applique à toutes les requêtes — chat, complétion de code, refactoring rapide et compression du chat. Le minuteur est réinitialisé à chaque réception de données, ce qui limite donc le temps jusqu'au premier jeton et toute pause entre les jetons. Augmentez-le pour les modèles lents ou locaux qui mettent longtemps à répondre. Mettez 0 pour désactiver le délai d'expiration.</translation>
    </message>
    <message>
        <source>Quick Setup</source>
        <translation>Configuration rapide</translation>
    </message>
    <message>
        <source>Configure API Key</source>
        <translation>Configurer la clé API</translation>
    </message>
    <message>
        <source>Open Provider Settings to configure API keys</source>
        <translation>Ouvrir les paramètres du fournisseur pour configurer les clés API</translation>
    </message>
    <message>
        <source>Load configuration (includes predefined cloud models)</source>
        <translation>Charger la configuration (inclut les modèles cloud prédéfinis)</translation>
    </message>
    <message>
        <source>Show template information</source>
        <translation>Afficher les informations du modèle</translation>
    </message>
    <message>
        <source>Network</source>
        <translation>Réseau</translation>
    </message>
    <message>
        <source>Support the development of QodeAssist:</source>
        <translation>Soutenez le développement de QodeAssist :</translation>
    </message>
    <message>
        <source>Template Information</source>
        <translation>Informations du modèle</translation>
    </message>
    <message>
        <source>Template</source>
        <translation>Modèle</translation>
    </message>
    <message>
        <source>Description:</source>
        <translation>Description :</translation>
    </message>
    <message>
        <source>Failed to save configuration. Check logs for details.</source>
        <translation>Échec de l&apos;enregistrement de la configuration. Consultez les journaux pour plus de détails.</translation>
    </message>
    <message>
        <source>[Preset] configurations are predefined cloud models ready to use.</source>
        <translation>Les configurations [Preset] sont des modèles cloud prédéfinis prêts à l&apos;emploi.</translation>
    </message>
    <message>
        <source>Predefined configurations cannot be deleted.</source>
        <translation>Les configurations prédéfinies ne peuvent pas être supprimées.</translation>
    </message>
    <message>
        <source>Failed to delete configuration.</source>
        <translation>Échec de la suppression de la configuration.</translation>
    </message>
    <message>
        <source>-- Select Preset --</source>
        <translation>-- Sélectionner un préréglage --</translation>
    </message>
    <message>
        <source>Enable QodeAssist</source>
        <translation>Activer QodeAssist</translation>
    </message>
    <message>
        <source>General</source>
        <translation>Général</translation>
    </message>
    <message>
        <source>Reset Page to Defaults</source>
        <translation>Réinitialiser la page aux valeurs par défaut</translation>
    </message>
    <message>
        <source>Check Update</source>
        <translation>Vérifier les mises à jour</translation>
    </message>
    <message>
        <source>Select...</source>
        <translation>Sélectionner…</translation>
    </message>
    <message>
        <source>Provider:</source>
        <translation>Fournisseur :</translation>
    </message>
    <message>
        <source>Model:</source>
        <translation>Modèle :</translation>
    </message>
    <message>
        <source>Template:</source>
        <translation>Modèle :</translation>
    </message>
    <message>
        <source>URL:</source>
        <translation>URL :</translation>
    </message>
    <message>
        <source>Status:</source>
        <translation>Statut :</translation>
    </message>
    <message>
        <source>Test</source>
        <translation>Tester</translation>
    </message>
    <message>
        <source>Enable Logging</source>
        <translation>Activer la journalisation</translation>
    </message>
    <message>
        <source>Log messages are visible in General Messages pane</source>
        <translation>Les messages de journal sont visibles dans le panneau Messages généraux</translation>
    </message>
    <message>
        <source>Check for updates when Qt Creator starts</source>
        <translation>Vérifier les mises à jour au démarrage de Qt Creator</translation>
    </message>
    <message>
        <source>Enable Chat(If you have performance issues try disabling this, need restart QtC)</source>
        <translation>Activer la discussion (en cas de problèmes de performances, essayez de la désactiver, redémarrage de QtC nécessaire)</translation>
    </message>
    <message>
        <source>Custom endpoint:</source>
        <translation>Point de terminaison personnalisé :</translation>
    </message>
    <message>
        <source>Code Completion</source>
        <translation>Complétion de code</translation>
    </message>
    <message>
        <source>Chat Assistant</source>
        <translation>Assistant de discussion</translation>
    </message>
    <message>
        <source>Quick Refactor</source>
        <translation>Refactoring rapide</translation>
    </message>
    <message>
        <source>Chat Compression</source>
        <translation>Compression de la discussion</translation>
    </message>
    <message>
        <source>Agent Pipelines</source>
        <translation>Pipelines d&apos;agents</translation>
    </message>
    <message>
        <source>Inline completions while you type. Matchers run on every request.</source>
        <translation>Complétions en ligne pendant la saisie. Les matchers s&apos;exécutent à chaque requête.</translation>
    </message>
    <message>
        <source>Conversational assistant in the QodeAssist panel.</source>
        <translation>Assistant conversationnel dans le panneau QodeAssist.</translation>
    </message>
    <message>
        <source>Used when a chat conversation needs to be summarised to stay within context.</source>
        <translation>Utilisé lorsqu&apos;une conversation doit être résumée pour rester dans le contexte.</translation>
    </message>
    <message>
        <source>Inline editor-driven refactors via the Quick Refactor action.</source>
        <translation>Refactorings pilotés depuis l&apos;éditeur via l&apos;action Refactoring rapide.</translation>
    </message>
    <message>
        <source>Reset Settings</source>
        <translation>Réinitialiser les paramètres</translation>
    </message>
    <message>
        <source>Are you sure you want to reset all settings to default values?</source>
        <translation>Voulez-vous vraiment réinitialiser tous les paramètres aux valeurs par défaut ?</translation>
    </message>
    <message>
        <source>Current template description:</source>
        <translation>Description du modèle actuel :</translation>
    </message>
    <message>
        <source>Connection Error</source>
        <translation>Erreur de connexion</translation>
    </message>
    <message>
        <source>Unable to retrieve the list of models from the server.</source>
        <translation>Impossible de récupérer la liste des modèles depuis le serveur.</translation>
    </message>
    <message>
        <source>Please verify the following:
- Server is running and accessible
- URL is correct
- Provider is properly configured
- API key is correctly set (if required)

You can try selecting a different provider or changing the URL:</source>
        <translation>Veuillez vérifier les éléments suivants :
- Le serveur est en cours d&apos;exécution et accessible
- L&apos;URL est correcte
- Le fournisseur est correctement configuré
- La clé API est correctement définie (si requise)

Vous pouvez essayer de sélectionner un autre fournisseur ou de changer l&apos;URL :</translation>
    </message>
    <message>
        <source>Select Provider</source>
        <translation>Sélectionner le fournisseur</translation>
    </message>
    <message>
        <source>Select URL</source>
        <translation>Sélectionner l&apos;URL</translation>
    </message>
    <message>
        <source>Close</source>
        <translation>Fermer</translation>
    </message>
    <message>
        <source>Model Selection</source>
        <translation>Sélection du modèle</translation>
    </message>
    <message>
        <source>Select from previously used models or enter a new model name.

If entering a new model name:
• For providers with automatic listing - ensure the model is installed
• For providers without listing support - check provider&apos;s documentation
• Make sure the model name matches exactly</source>
        <translation>Sélectionnez parmi les modèles déjà utilisés ou saisissez un nouveau nom de modèle.

Si vous saisissez un nouveau nom de modèle :
• Pour les fournisseurs avec listage automatique - assurez-vous que le modèle est installé
• Pour les fournisseurs sans prise en charge du listage - consultez la documentation du fournisseur
• Assurez-vous que le nom du modèle correspond exactement</translation>
    </message>
    <message>
        <source>Model name:</source>
        <translation>Nom du modèle :</translation>
    </message>
    <message>
        <source>OK</source>
        <translation>OK</translation>
    </message>
    <message>
        <source>Cancel</source>
        <translation>Annuler</translation>
    </message>
    <message>
        <source>Enter Model Manually</source>
        <translation>Saisir le modèle manuellement</translation>
    </message>
    <message>
        <source>URL Selection</source>
        <translation>Sélection de l&apos;URL</translation>
    </message>
    <message>
        <source>Select from the list of default and previously used URLs, or enter a custom one.
Please ensure the selected URL is accessible and the service is running.</source>
        <translation>Sélectionnez dans la liste des URL par défaut et déjà utilisées, ou saisissez-en une personnalisée.
Assurez-vous que l&apos;URL sélectionnée est accessible et que le service est en cours d&apos;exécution.</translation>
    </message>
    <message>
        <source>Use default provider URL or from history</source>
        <translation>Utiliser l&apos;URL par défaut du fournisseur ou depuis l&apos;historique</translation>
    </message>
    <message>
        <source>Enter custom URL</source>
        <translation>Saisir une URL personnalisée</translation>
    </message>
    <message>
        <source>Enter Model Name Manually</source>
        <translation>Saisir le nom du modèle manuellement</translation>
    </message>
    <message>
        <source>Auto Completion Settings</source>
        <translation>Paramètres de complétion automatique</translation>
    </message>
    <message>
        <source>Add new preset for language</source>
        <translation>Ajouter un nouveau préréglage pour la langue</translation>
    </message>
    <message>
        <source>Save Config...</source>
        <translation>Enregistrer la configuration…</translation>
    </message>
    <message>
        <source>Load Config...</source>
        <translation>Charger la configuration…</translation>
    </message>
    <message>
        <source>Open Folder</source>
        <translation>Ouvrir le dossier</translation>
    </message>
    <message>
        <source>Save Configuration</source>
        <translation>Enregistrer la configuration</translation>
    </message>
    <message>
        <source>Load Configuration</source>
        <translation>Charger la configuration</translation>
    </message>
    <message>
        <source>Configuration name:</source>
        <translation>Nom de la configuration :</translation>
    </message>
    <message>
        <source>Select Configuration</source>
        <translation>Sélectionner la configuration</translation>
    </message>
    <message>
        <source>No saved configurations found.</source>
        <translation>Aucune configuration enregistrée trouvée.</translation>
    </message>
    <message>
        <source>Configuration saved successfully.</source>
        <translation>Configuration enregistrée avec succès.</translation>
    </message>
    <message>
        <source>Configuration loaded successfully.</source>
        <translation>Configuration chargée avec succès.</translation>
    </message>
    <message>
        <source>Delete</source>
        <translation>Supprimer</translation>
    </message>
    <message>
        <source>Are you sure you want to delete this configuration?</source>
        <translation>Voulez-vous vraiment supprimer cette configuration ?</translation>
    </message>
    <message>
        <source>Enable Auto Complete</source>
        <translation>Activer la complétion automatique</translation>
    </message>
    <message>
        <source>Enable Multiline Completion</source>
        <translation>Activer la complétion multiligne</translation>
    </message>
    <message>
        <source>Text output proccessing mode:</source>
        <translation>Mode de traitement de la sortie texte :</translation>
    </message>
    <message>
        <source>Auto: Automatically detects codeblock and applies processing when found, other text as comments
Force Processing: Always processes text with codeblock formatting and other text as comments
Raw Text: Shows unprocessed text without any formatting</source>
        <translation>Auto : détecte automatiquement les blocs de code et applique le traitement lorsqu&apos;ils sont trouvés, le reste du texte comme commentaires
Forcer le traitement : traite toujours le texte avec le formatage de bloc de code et le reste du texte comme commentaires
Texte brut : affiche le texte non traité sans aucun formatage</translation>
    </message>
    <message>
        <source>Completion trigger mode:</source>
        <translation>Mode de déclenchement de la complétion :</translation>
    </message>
    <message>
        <source>Hint-based: Shows a hint when typing, press Tab to request completion
Automatic: Automatically requests completion after typing threshold</source>
        <translation>Basé sur des indices : affiche un indice pendant la saisie, appuyez sur Tab pour demander la complétion
Automatique : demande automatiquement la complétion après le seuil de saisie</translation>
    </message>
    <message>
        <source>Completion mode:</source>
        <translation>Mode de complétion :</translation>
    </message>
    <message>
        <source>Automatic: requests completion while typing (with smart context gates).
Manual: no auto-triggering; invoke via the &apos;Request QodeAssist Suggestion&apos; shortcut (default Ctrl+Alt+Q, reconfigurable in Preferences &gt; Keyboard).</source>
        <translation>Automatique : demande la complétion pendant la saisie (avec des filtres de contexte intelligents).
Manuel : aucun déclenchement automatique ; invoquez via le raccourci &apos;Demander une suggestion QodeAssist&apos; (par défaut Ctrl+Alt+Q, reconfigurable dans Préférences &gt; Clavier).</translation>
    </message>
    <message>
        <source>Smart context-aware triggering</source>
        <translation>Déclenchement intelligent sensible au contexte</translation>
    </message>
    <message>
        <source>When enabled, auto-completion is suppressed in places where Qt Creator&apos;s built-in completion is usually stronger (middle of an identifier, right after &apos;.&apos;, &apos;-&gt;&apos;, &apos;::&apos;) and is triggered more eagerly after structural characters like &apos;(&apos;, &apos;,&apos;, &apos;{&apos;, &apos;=&apos; and on fresh indented lines.</source>
        <translation>Lorsqu&apos;elle est activée, la complétion automatique est supprimée là où la complétion intégrée de Qt Creator est généralement plus forte (milieu d&apos;un identifiant, juste après &apos;.&apos;, &apos;-&gt;&apos;, &apos;::&apos;) et déclenchée plus volontiers après des caractères structurels comme &apos;(&apos;, &apos;,&apos;, &apos;{&apos;, &apos;=&apos; et sur de nouvelles lignes indentées.</translation>
    </message>
    <message>
        <source>Don&apos;t dismiss Qt Creator&apos;s completion popup</source>
        <translation>Ne pas fermer la fenêtre contextuelle de complétion de Qt Creator</translation>
    </message>
    <message>
        <source>When enabled, an AI completion arriving while Qt Creator&apos;s own completion popup is already visible will not force it closed. The LLM suggestion still appears inline.</source>
        <translation>Lorsqu&apos;elle est activée, une complétion IA arrivant alors que la fenêtre contextuelle de complétion de Qt Creator est déjà visible ne la fermera pas. La suggestion du LLM apparaît toujours en ligne.</translation>
    </message>
    <message>
        <source>Cancel in-flight request on new input</source>
        <translation>Annuler la requête en cours lors d&apos;une nouvelle saisie</translation>
    </message>
    <message>
        <source>When enabled, every new keystroke cancels any completion request already in flight and restarts the debounce timer. Useful for slow local models where an outdated answer is rarely worth waiting for.
When disabled (default), the in-flight request is kept; when the answer arrives, the plugin compares it with characters typed in the meantime and either trims the matching prefix or drops the answer.</source>
        <translation>Lorsqu&apos;elle est activée, chaque nouvelle frappe annule toute requête de complétion en cours et redémarre la temporisation anti-rebond. Utile pour les modèles locaux lents où une réponse obsolète vaut rarement la peine d&apos;être attendue.
Lorsqu&apos;elle est désactivée (par défaut), la requête en cours est conservée ; quand la réponse arrive, le plugin la compare aux caractères saisis entre-temps et soit coupe le préfixe correspondant, soit abandonne la réponse.</translation>
    </message>
    <message>
        <source>with delay(ms)</source>
        <translation>avec un délai (ms)</translation>
    </message>
    <message>
        <source>Delay before sending the completion request.
(Only for Automatic trigger mode)</source>
        <translation>Délai avant l&apos;envoi de la requête de complétion.
(Uniquement pour le mode de déclenchement automatique)</translation>
    </message>
    <message>
        <source>AI suggestion triggers after typing</source>
        <translation>La suggestion IA se déclenche après la saisie de</translation>
    </message>
    <message>
        <source>The number of characters that need to be typed within the typing interval before an AI suggestion request is sent automatically.
(Only for Automatic trigger mode)</source>
        <translation>Nombre de caractères à saisir dans l&apos;intervalle de saisie avant qu&apos;une requête de suggestion IA soit envoyée automatiquement.
(Uniquement pour le mode de déclenchement automatique)</translation>
    </message>
    <message>
        <source>character(s) within(ms)</source>
        <translation>caractère(s) dans un délai (ms)</translation>
    </message>
    <message>
        <source>The time window (in milliseconds) during which the character threshold must be met to trigger an AI suggestion request automatically.
(Only for Automatic trigger mode)</source>
        <translation>Fenêtre temporelle (en millisecondes) pendant laquelle le seuil de caractères doit être atteint pour déclencher automatiquement une requête de suggestion IA.
(Uniquement pour le mode de déclenchement automatique)</translation>
    </message>
    <message>
        <source>Hint shows after typing</source>
        <translation>L&apos;indice s&apos;affiche après la saisie de</translation>
    </message>
    <message>
        <source>The number of characters that need to be typed before the hint widget appears (only for Hint-based trigger mode).</source>
        <translation>Nombre de caractères à saisir avant l&apos;apparition du widget d&apos;indice (uniquement pour le mode de déclenchement basé sur des indices).</translation>
    </message>
    <message>
        <source>Hint auto-hide timeout (ms)</source>
        <translation>Délai de masquage automatique de l&apos;indice (ms)</translation>
    </message>
    <message>
        <source>Time in milliseconds after which the hint widget will automatically hide (only for Hint-based trigger mode).</source>
        <translation>Délai en millisecondes après lequel le widget d&apos;indice se masquera automatiquement (uniquement pour le mode de déclenchement basé sur des indices).</translation>
    </message>
    <message>
        <source>Trigger key:</source>
        <translation>Touche de déclenchement :</translation>
    </message>
    <message>
        <source>Key to press for requesting completion when hint is visible.
Space is recommended as least conflicting with context menu.
(Only for Hint-based trigger mode)</source>
        <translation>Touche à appuyer pour demander la complétion lorsque l&apos;indice est visible.
L&apos;espace est recommandé car le moins en conflit avec le menu contextuel.
(Uniquement pour le mode de déclenchement basé sur des indices)</translation>
    </message>
    <message>
        <source>Ignore spaces and tabs in character count</source>
        <translation>Ignorer les espaces et les tabulations dans le décompte des caractères</translation>
    </message>
    <message>
        <source>When enabled, spaces and tabs are not counted towards the character threshold for triggering completions. This helps trigger completions based on actual code characters only.</source>
        <translation>Lorsqu&apos;elle est activée, les espaces et les tabulations ne sont pas comptés dans le seuil de caractères pour déclencher les complétions. Cela permet de déclencher les complétions sur la base des caractères de code réels uniquement.</translation>
    </message>
    <message>
        <source>Temperature:</source>
        <translation>Température :</translation>
    </message>
    <message>
        <source>Max Tokens:</source>
        <translation>Jetons max :</translation>
    </message>
    <message>
        <source>Top P:</source>
        <translation>Top P :</translation>
    </message>
    <message>
        <source>Top K:</source>
        <translation>Top K :</translation>
    </message>
    <message>
        <source>Presence Penalty:</source>
        <translation>Pénalité de présence :</translation>
    </message>
    <message>
        <source>Frequency Penalty:</source>
        <translation>Pénalité de fréquence :</translation>
    </message>
    <message>
        <source>Read Full File</source>
        <translation>Lire le fichier complet</translation>
    </message>
    <message>
        <source>Read Strings Before Cursor:</source>
        <translation>Lire les chaînes avant le curseur :</translation>
    </message>
    <message>
        <source>Read Strings After Cursor:</source>
        <translation>Lire les chaînes après le curseur :</translation>
    </message>
    <message>
        <source>Use System Prompt</source>
        <translation>Utiliser l&apos;invite système</translation>
    </message>
    <message>
        <source>Use special system prompt and user message for non FIM models</source>
        <translation>Utiliser une invite système et un message utilisateur spécifiques pour les modèles non FIM</translation>
    </message>
    <message>
        <source>System prompt for non FIM models:</source>
        <translation>Invite système pour les modèles non FIM :</translation>
    </message>
    <message>
        <source>User message for non FIM models:</source>
        <translation>Message utilisateur pour les modèles non FIM :</translation>
    </message>
    <message>
        <source>Additional Programming Languages for handling: Example: rust,//,rust rs,rs</source>
        <translation>Langages de programmation supplémentaires à prendre en charge : exemple : rust,//,rust rs,rs</translation>
    </message>
    <message>
        <source>Specify additional programming languages in format: name,comment_style,model_names,extensions
Example: rust,//,rust rs,rs
Fields: language name, comment prefix, names from LLM (space-separated), file extensions (space-separated)</source>
        <translation>Spécifiez des langages de programmation supplémentaires au format : nom,style_commentaire,noms_modèles,extensions
Exemple : rust,//,rust rs,rs
Champs : nom du langage, préfixe de commentaire, noms depuis le LLM (séparés par des espaces), extensions de fichiers (séparées par des espaces)</translation>
    </message>
    <message>
        <source>Show progress indicator during code completion</source>
        <translation>Afficher l&apos;indicateur de progression pendant la complétion de code</translation>
    </message>
    <message>
        <source>Abort existing assist on new completion request</source>
        <translation>Interrompre l&apos;assistance existante lors d&apos;une nouvelle requête de complétion</translation>
    </message>
    <message>
        <source>When enabled, cancels any active Qt Creator code assist popup before requesting LLM completion.
(Only for Automatic trigger mode)</source>
        <translation>Lorsqu&apos;elle est activée, annule toute fenêtre contextuelle d&apos;assistance au code Qt Creator active avant de demander la complétion au LLM.
(Uniquement pour le mode de déclenchement automatique)</translation>
    </message>
    <message>
        <source>Include context from open files</source>
        <translation>Inclure le contexte des fichiers ouverts</translation>
    </message>
    <message>
        <source>Max Changes Cache Size:</source>
        <translation>Taille max du cache de modifications :</translation>
    </message>
    <message>
        <source>Time to suspend Ollama after completion request (in minutes), Only Ollama,  -1 to disable</source>
        <translation>Délai de suspension d&apos;Ollama après une requête de complétion (en minutes), Ollama uniquement, -1 pour désactiver</translation>
    </message>
    <message>
        <source>Context Window:</source>
        <translation>Fenêtre de contexte :</translation>
    </message>
    <message>
        <source>Reasoning effort:</source>
        <translation>Effort de raisonnement :</translation>
    </message>
    <message>
        <source>Constrains effort on reasoning for OpenAI gpt-5 and o-series models:

None: No reasoning (gpt-5.1 only)
Minimal: Minimal reasoning effort (o-series only)
Low: Low reasoning effort
Medium: Balanced reasoning (default for most models)
High: Maximum reasoning effort (gpt-5-pro only supports this)

Note: Reducing effort = faster responses + fewer tokens</source>
        <translation>Contraint l&apos;effort de raisonnement pour les modèles OpenAI gpt-5 et série o :

Aucun : pas de raisonnement (gpt-5.1 uniquement)
Minimal : effort de raisonnement minimal (série o uniquement)
Faible : faible effort de raisonnement
Moyen : raisonnement équilibré (par défaut pour la plupart des modèles)
Élevé : effort de raisonnement maximal (pris en charge uniquement par gpt-5-pro)

Remarque : réduire l&apos;effort = réponses plus rapides + moins de jetons</translation>
    </message>
    <message>
        <source>Prompts for FIM models</source>
        <translation>Invites pour les modèles FIM</translation>
    </message>
    <message>
        <source>Prompts for Non FIM models</source>
        <translation>Invites pour les modèles non FIM</translation>
    </message>
    <message>
        <source>General Settings</source>
        <translation>Paramètres généraux</translation>
    </message>
    <message>
        <source>Automatic Trigger Mode</source>
        <translation>Mode de déclenchement automatique</translation>
    </message>
    <message>
        <source>General Parameters</source>
        <translation>Paramètres généraux</translation>
    </message>
    <message>
        <source>Advanced Parameters</source>
        <translation>Paramètres avancés</translation>
    </message>
    <message>
        <source>Context Settings</source>
        <translation>Paramètres du contexte</translation>
    </message>
    <message>
        <source>OpenAI Responses API</source>
        <translation>API OpenAI Responses</translation>
    </message>
    <message>
        <source>Ollama Settings</source>
        <translation>Paramètres Ollama</translation>
    </message>
    <message>
        <source>Sync open files with assistant by default</source>
        <translation>Synchroniser les fichiers ouverts avec l&apos;assistant par défaut</translation>
    </message>
    <message>
        <source>Enable autosave when message received</source>
        <translation>Activer l&apos;enregistrement automatique à la réception d&apos;un message</translation>
    </message>
    <message>
        <source>Enable chat in bottom toolbar</source>
        <translation>Activer la discussion dans la barre d&apos;outils inférieure</translation>
    </message>
    <message>
        <source>Enable chat in navigation panel</source>
        <translation>Activer la discussion dans le panneau de navigation</translation>
    </message>
    <message>
        <source>Enable tools/function calling</source>
        <translation>Activer les outils / l&apos;appel de fonctions</translation>
    </message>
    <message>
        <source>When enabled, AI can use tools to read files, search project, and build code</source>
        <translation>Lorsqu&apos;elle est activée, l&apos;IA peut utiliser des outils pour lire des fichiers, rechercher dans le projet et compiler du code</translation>
    </message>
    <message>
        <source>Auto-compress chat when session tokens exceed:</source>
        <translation>Compresser automatiquement la discussion lorsque les jetons de session dépassent :</translation>
    </message>
    <message>
        <source>After each assistant response, if the running session token total exceeds the threshold, the chat is summarized and a new compressed chat is started automatically. The original chat is preserved on disk.</source>
        <translation>Après chaque réponse de l&apos;assistant, si le total cumulé de jetons de la session dépasse le seuil, la discussion est résumée et une nouvelle discussion compressée est démarrée automatiquement. La discussion originale est conservée sur le disque.</translation>
    </message>
    <message>
        <source>Enable extended thinking mode.</source>
        <translation>Activer le mode de réflexion étendue.</translation>
    </message>
    <message>
        <source>Enable extended thinking mode for complex reasoning tasks.This provides step-by-step reasoning before the final answer.Temperature is 1.0 accordingly API requirement</source>
        <translation>Activer le mode de réflexion étendue pour les tâches de raisonnement complexes. Cela fournit un raisonnement étape par étape avant la réponse finale. La température est de 1.0 conformément à l&apos;exigence de l&apos;API</translation>
    </message>
    <message>
        <source>Thinking budget tokens:</source>
        <translation>Jetons de budget de réflexion :</translation>
    </message>
    <message>
        <source>Maximum number of tokens Claude can use for internal reasoning. Larger budgets improve quality but increase latency. Minimum: 1024, Recommended: 10000-16000.</source>
        <translation>Nombre maximal de jetons que Claude peut utiliser pour le raisonnement interne. Des budgets plus importants améliorent la qualité mais augmentent la latence. Minimum : 1024, recommandé : 10000-16000.</translation>
    </message>
    <message>
        <source>Thinking mode max output tokens:</source>
        <translation>Jetons de sortie max en mode réflexion :</translation>
    </message>
    <message>
        <source>Maximum number of tokens for the final response when thinking mode is enabled. Set to -1 to use the default max tokens setting. Recommended: 4096-16000.</source>
        <translation>Nombre maximal de jetons pour la réponse finale lorsque le mode réflexion est activé. Définissez sur -1 pour utiliser le paramètre par défaut de jetons max. Recommandé : 4096-16000.</translation>
    </message>
    <message>
        <source>Text Font:</source>
        <translation>Police du texte :</translation>
    </message>
    <message>
        <source>Text Font Size:</source>
        <translation>Taille de la police du texte :</translation>
    </message>
    <message>
        <source>Code Font:</source>
        <translation>Police du code :</translation>
    </message>
    <message>
        <source>Code Font Size:</source>
        <translation>Taille de la police du code :</translation>
    </message>
    <message>
        <source>Text Format:</source>
        <translation>Format du texte :</translation>
    </message>
    <message>
        <source>Chat Renderer:</source>
        <translation>Moteur de rendu de la discussion :</translation>
    </message>
    <message>
        <source>Chat Settings</source>
        <translation>Paramètres de la discussion</translation>
    </message>
    <message>
        <source>Tools</source>
        <translation>Outils</translation>
    </message>
    <message>
        <source>Extended Thinking (Claude)</source>
        <translation>Réflexion étendue (Claude)</translation>
    </message>
    <message>
        <source>Agent Roles</source>
        <translation>Rôles d&apos;agents</translation>
    </message>
    <message>
        <source>Enable Tools</source>
        <translation>Activer les outils</translation>
    </message>
    <message>
        <source>Enable AI tools/functions for quick refactoring (allows reading project files, searching code, etc.)</source>
        <translation>Activer les outils / fonctions IA pour le refactoring rapide (permet de lire les fichiers du projet, rechercher du code, etc.)</translation>
    </message>
    <message>
        <source>Enable Thinking Mode</source>
        <translation>Activer le mode réflexion</translation>
    </message>
    <message>
        <source>Enable extended thinking mode for complex refactoring tasks (supported by compatible models like Claude and Google AI)</source>
        <translation>Activer le mode de réflexion étendue pour les tâches de refactoring complexes (pris en charge par les modèles compatibles comme Claude et Google AI)</translation>
    </message>
    <message>
        <source>Thinking Budget Tokens:</source>
        <translation>Jetons de budget de réflexion :</translation>
    </message>
    <message>
        <source>Number of tokens allocated for thinking process. Use -1 for dynamic thinking (model decides), 0 to disable, or positive value for custom budget</source>
        <translation>Nombre de jetons alloués au processus de réflexion. Utilisez -1 pour une réflexion dynamique (le modèle décide), 0 pour désactiver, ou une valeur positive pour un budget personnalisé</translation>
    </message>
    <message>
        <source>Thinking Max Output Tokens:</source>
        <translation>Jetons de sortie max de la réflexion :</translation>
    </message>
    <message>
        <source>Maximum output tokens when thinking mode is enabled (includes thinking + response)</source>
        <translation>Jetons de sortie maximum lorsque le mode réflexion est activé (inclut la réflexion + la réponse)</translation>
    </message>
    <message>
        <source>Lines Before Cursor/Selection:</source>
        <translation>Lignes avant le curseur / la sélection :</translation>
    </message>
    <message>
        <source>Number of lines to include before cursor or selection for context</source>
        <translation>Nombre de lignes à inclure avant le curseur ou la sélection pour le contexte</translation>
    </message>
    <message>
        <source>Lines After Cursor/Selection:</source>
        <translation>Lignes après le curseur / la sélection :</translation>
    </message>
    <message>
        <source>Number of lines to include after cursor or selection for context</source>
        <translation>Nombre de lignes à inclure après le curseur ou la sélection pour le contexte</translation>
    </message>
    <message>
        <source>Display Mode:</source>
        <translation>Mode d&apos;affichage :</translation>
    </message>
    <message>
        <source>Choose how to display refactoring suggestions:
- Inline Widget: Shows refactor in a widget overlay with Apply/Decline buttons (default)
- Qt Creator Suggestion: Uses Qt Creator&apos;s built-in suggestion system</source>
        <translation>Choisissez comment afficher les suggestions de refactoring :
- Widget en ligne : affiche le refactoring dans une superposition de widget avec des boutons Appliquer/Refuser (par défaut)
- Suggestion Qt Creator : utilise le système de suggestion intégré de Qt Creator</translation>
    </message>
    <message>
        <source>Inline Widget</source>
        <translation>Widget en ligne</translation>
    </message>
    <message>
        <source>Qt Creator Suggestion</source>
        <translation>Suggestion Qt Creator</translation>
    </message>
    <message>
        <source>Widget Orientation:</source>
        <translation>Orientation du widget :</translation>
    </message>
    <message>
        <source>Choose default orientation for refactor widget:
- Horizontal: Original and refactored code side by side (default)
- Vertical: Original and refactored code stacked vertically</source>
        <translation>Choisissez l&apos;orientation par défaut du widget de refactoring :
- Horizontale : code original et refactorisé côte à côte (par défaut)
- Verticale : code original et refactorisé empilés verticalement</translation>
    </message>
    <message>
        <source>Horizontal</source>
        <translation>Horizontale</translation>
    </message>
    <message>
        <source>Vertical</source>
        <translation>Verticale</translation>
    </message>
    <message>
        <source>Widget Minimum Width:</source>
        <translation>Largeur minimale du widget :</translation>
    </message>
    <message>
        <source>Minimum width for the refactor widget (in pixels)</source>
        <translation>Largeur minimale du widget de refactoring (en pixels)</translation>
    </message>
    <message>
        <source>Widget Maximum Width:</source>
        <translation>Largeur maximale du widget :</translation>
    </message>
    <message>
        <source>Maximum width for the refactor widget (in pixels)</source>
        <translation>Largeur maximale du widget de refactoring (en pixels)</translation>
    </message>
    <message>
        <source>Widget Minimum Height:</source>
        <translation>Hauteur minimale du widget :</translation>
    </message>
    <message>
        <source>Minimum height for the refactor widget (in pixels)</source>
        <translation>Hauteur minimale du widget de refactoring (en pixels)</translation>
    </message>
    <message>
        <source>Widget Maximum Height:</source>
        <translation>Hauteur maximale du widget :</translation>
    </message>
    <message>
        <source>Maximum height for the refactor widget (in pixels)</source>
        <translation>Hauteur maximale du widget de refactoring (en pixels)</translation>
    </message>
    <message>
        <source>System Prompt:</source>
        <translation>Invite système :</translation>
    </message>
    <message>
        <source>Include context from open files in quick refactor</source>
        <translation>Inclure le contexte des fichiers ouverts dans le refactoring rapide</translation>
    </message>
    <message>
        <source>Tools Settings</source>
        <translation>Paramètres des outils</translation>
    </message>
    <message>
        <source>Display Settings</source>
        <translation>Paramètres d&apos;affichage</translation>
    </message>
    <message>
        <source>Prompt Settings</source>
        <translation>Paramètres d&apos;invite</translation>
    </message>
    <message>
        <source>Allow file access outside project</source>
        <translation>Autoriser l&apos;accès aux fichiers hors du projet</translation>
    </message>
    <message>
        <source>Allow tools to read, write, and create files outside the project scope (system headers, Qt files, external libraries).</source>
        <translation>Autoriser les outils à lire, écrire et créer des fichiers en dehors du périmètre du projet (en-têtes système, fichiers Qt, bibliothèques externes).</translation>
    </message>
    <message>
        <source>Automatically apply file edits</source>
        <translation>Appliquer automatiquement les modifications de fichiers</translation>
    </message>
    <message>
        <source>When enabled, file edits suggested by AI are applied immediately. When disabled, each edit is staged for manual approval.</source>
        <translation>Lorsqu&apos;elle est activée, les modifications de fichiers suggérées par l&apos;IA sont appliquées immédiatement. Lorsqu&apos;elle est désactivée, chaque modification est mise en attente pour approbation manuelle.</translation>
    </message>
    <message>
        <source>Max tool continuations:</source>
        <translation>Continuations max d&apos;outils :</translation>
    </message>
    <message>
        <source>Maximum number of consecutive tool-use rounds in a single request. Each round lets the model call tools and receive results before continuing. Higher values allow more complex multi-step tasks but increase token usage.</source>
        <translation>Nombre maximal de tours consécutifs d&apos;utilisation d&apos;outils dans une seule requête. Chaque tour permet au modèle d&apos;appeler des outils et de recevoir des résultats avant de continuer. Des valeurs plus élevées permettent des tâches multi-étapes plus complexes mais augmentent l&apos;utilisation de jetons.</translation>
    </message>
    <message>
        <source>List Project Files</source>
        <translation>Lister les fichiers du projet</translation>
    </message>
    <message>
        <source>Lists every source file tracked by the active Qt Creator project(s).</source>
        <translation>Liste tous les fichiers source suivis par le ou les projets Qt Creator actifs.</translation>
    </message>
    <message>
        <source>Find File</source>
        <translation>Rechercher un fichier</translation>
    </message>
    <message>
        <source>Locates a file in the project by name or partial path. Returns paths only, without file content.</source>
        <translation>Localise un fichier dans le projet par nom ou chemin partiel. Renvoie uniquement les chemins, sans le contenu des fichiers.</translation>
    </message>
    <message>
        <source>Read File</source>
        <translation>Lire un fichier</translation>
    </message>
    <message>
        <source>Reads the content of a file by absolute path or path relative to the project root.</source>
        <translation>Lit le contenu d&apos;un fichier par chemin absolu ou chemin relatif à la racine du projet.</translation>
    </message>
    <message>
        <source>Search in Project</source>
        <translation>Rechercher dans le projet</translation>
    </message>
    <message>
        <source>Searches project files for text occurrences or C++ symbol definitions.</source>
        <translation>Recherche dans les fichiers du projet des occurrences de texte ou des définitions de symboles C++.</translation>
    </message>
    <message>
        <source>Create New File</source>
        <translation>Créer un nouveau fichier</translation>
    </message>
    <message>
        <source>Creates a new empty file at the given absolute path, making missing directories.</source>
        <translation>Crée un nouveau fichier vide au chemin absolu donné, en créant les répertoires manquants.</translation>
    </message>
    <message>
        <source>Edit File</source>
        <translation>Modifier un fichier</translation>
    </message>
    <message>
        <source>Applies find-and-replace edits to files. See &quot;Automatically apply file edits&quot; to control whether edits apply immediately or wait for review.</source>
        <translation>Applique des modifications de type rechercher-remplacer aux fichiers. Voir &quot;Appliquer automatiquement les modifications de fichiers&quot; pour contrôler si les modifications s&apos;appliquent immédiatement ou attendent une révision.</translation>
    </message>
    <message>
        <source>Build Project</source>
        <translation>Compiler le projet</translation>
    </message>
    <message>
        <source>Triggers a build of the active Qt Creator project and reports the result.</source>
        <translation>Déclenche la compilation du projet Qt Creator actif et signale le résultat.</translation>
    </message>
    <message>
        <source>Get Issues List</source>
        <translation>Obtenir la liste des problèmes</translation>
    </message>
    <message>
        <source>Reads compiler/clang diagnostics from Qt Creator&apos;s Issues panel.</source>
        <translation>Lit les diagnostics du compilateur / de clang depuis le panneau Problèmes de Qt Creator.</translation>
    </message>
    <message>
        <source>Execute Terminal Command</source>
        <translation>Exécuter une commande de terminal</translation>
    </message>
    <message>
        <source>Runs a command from the OS-specific allowed list below, in the project directory.</source>
        <translation>Exécute une commande de la liste autorisée spécifique à l&apos;OS ci-dessous, dans le répertoire du projet.</translation>
    </message>
    <message>
        <source>Todo</source>
        <translation>Tâche</translation>
    </message>
    <message>
        <source>Lets the AI maintain a session-scoped todo list for multi-step workflows.</source>
        <translation>Permet à l&apos;IA de maintenir une liste de tâches à l&apos;échelle de la session pour les flux de travail multi-étapes.</translation>
    </message>
    <message>
        <source>Read Original History (Pre-Compression)</source>
        <translation>Lire l&apos;historique original (avant compression)</translation>
    </message>
    <message>
        <source>Lets the AI read the original, full chat history from before the conversation was compressed into a summary. Useful when a detail is missing from the summary currently in context. Has no effect if the chat was never compressed.</source>
        <translation>Permet à l&apos;IA de lire l&apos;historique de discussion original et complet d&apos;avant la compression de la conversation en résumé. Utile lorsqu&apos;un détail est absent du résumé actuellement en contexte. Sans effet si la discussion n&apos;a jamais été compressée.</translation>
    </message>
    <message>
        <source>Load Skill</source>
        <translation>Charger une compétence</translation>
    </message>
    <message>
        <source>Lets the AI load the full instructions of a skill on demand. The Available Skills catalog in the system prompt lists each skill; this tool pulls a skill&apos;s complete instructions into context when needed.</source>
        <translation>Permet à l&apos;IA de charger à la demande les instructions complètes d&apos;une compétence. Le catalogue des compétences disponibles dans l&apos;invite système liste chaque compétence ; cet outil charge les instructions complètes d&apos;une compétence dans le contexte au besoin.</translation>
    </message>
    <message>
        <source>Allowed Commands (Linux)</source>
        <translation>Commandes autorisées (Linux)</translation>
    </message>
    <message>
        <source>Comma-separated list of terminal commands that AI is allowed to execute on Linux. Example: git, ls, cat, grep, find, cmake</source>
        <translation>Liste séparée par des virgules des commandes de terminal que l&apos;IA est autorisée à exécuter sous Linux. Exemple : git, ls, cat, grep, find, cmake</translation>
    </message>
    <message>
        <source>Allowed Commands (macOS)</source>
        <translation>Commandes autorisées (macOS)</translation>
    </message>
    <message>
        <source>Comma-separated list of terminal commands that AI is allowed to execute on macOS. Example: git, ls, cat, grep, find, cmake</source>
        <translation>Liste séparée par des virgules des commandes de terminal que l&apos;IA est autorisée à exécuter sous macOS. Exemple : git, ls, cat, grep, find, cmake</translation>
    </message>
    <message>
        <source>Allowed Commands (Windows)</source>
        <translation>Commandes autorisées (Windows)</translation>
    </message>
    <message>
        <source>Comma-separated list of terminal commands that AI is allowed to execute on Windows. Example: git, dir, type, findstr, where, cmake</source>
        <translation>Liste séparée par des virgules des commandes de terminal que l&apos;IA est autorisée à exécuter sous Windows. Exemple : git, dir, type, findstr, where, cmake</translation>
    </message>
    <message>
        <source>Command Timeout (seconds)</source>
        <translation>Délai d&apos;expiration de commande (secondes)</translation>
    </message>
    <message>
        <source>Maximum time in seconds to wait for a terminal command to complete. Increase for long-running commands like builds.</source>
        <translation>Temps maximum en secondes à attendre qu&apos;une commande de terminal se termine. Augmentez pour les commandes longues comme les compilations.</translation>
    </message>
    <message>
        <source>Tool Settings</source>
        <translation>Paramètres des outils</translation>
    </message>
    <message>
        <source>Skills</source>
        <translation>Compétences</translation>
    </message>
    <message>
        <source>Enable skills</source>
        <translation>Activer les compétences</translation>
    </message>
    <message>
        <source>Discover Agent Skills from the configured skill directories and expose them to the chat assistant. Each skill is a folder containing a SKILL.md file.</source>
        <translation>Découvrir les compétences d&apos;agent depuis les répertoires de compétences configurés et les exposer à l&apos;assistant de discussion. Chaque compétence est un dossier contenant un fichier SKILL.md.</translation>
    </message>
    <message>
        <source>Global skill directories:</source>
        <translation>Répertoires de compétences globaux :</translation>
    </message>
    <message>
        <source>Absolute paths scanned for skills, one per line. Each path is a directory whose subfolders contain SKILL.md files. A leading ~ expands to your home directory. Lets QodeAssist pick up skills shared with other agents (e.g. ~/.claude/skills).</source>
        <translation>Chemins absolus scannés pour les compétences, un par ligne. Chaque chemin est un répertoire dont les sous-dossiers contiennent des fichiers SKILL.md. Un ~ initial est étendu en votre répertoire personnel. Permet à QodeAssist de récupérer les compétences partagées avec d&apos;autres agents (ex. ~/.claude/skills).</translation>
    </message>
    <message>
        <source>No skills discovered.</source>
        <translation>Aucune compétence découverte.</translation>
    </message>
    <message>
        <source>Skill Directories</source>
        <translation>Répertoires de compétences</translation>
    </message>
    <message>
        <source>Discovered global skills:</source>
        <translation>Compétences globales découvertes :</translation>
    </message>
    <message>
        <source>MCP</source>
        <translation>MCP</translation>
    </message>
    <message>
        <source>Enable MCP server</source>
        <translation>Activer le serveur MCP</translation>
    </message>
    <message>
        <source>Expose QodeAssist tools to external MCP clients over HTTP. Which tools are visible is controlled on the client side.</source>
        <translation>Exposer les outils QodeAssist aux clients MCP externes via HTTP. Les outils visibles sont contrôlés côté client.</translation>
    </message>
    <message>
        <source>Server port</source>
        <translation>Port du serveur</translation>
    </message>
    <message>
        <source>TCP port the MCP server listens on (localhost only). Requires restart of the server after change.</source>
        <translation>Port TCP sur lequel le serveur MCP écoute (localhost uniquement). Nécessite un redémarrage du serveur après modification.</translation>
    </message>
    <message>
        <source>Connect to external MCP servers</source>
        <translation>Se connecter à des serveurs MCP externes</translation>
    </message>
    <message>
        <source>Connect to MCP servers listed in mcp-server.json and expose their tools to chat/quick-refactor/code-completion. Toggling this off disconnects all currently running MCP client sessions.</source>
        <translation>Se connecter aux serveurs MCP listés dans mcp-server.json et exposer leurs outils à la discussion / refactoring rapide / complétion de code. Désactiver cette option déconnecte toutes les sessions client MCP en cours.</translation>
    </message>
    <message>
        <source>Extra PATH for stdio servers</source>
        <translation>PATH supplémentaire pour les serveurs stdio</translation>
    </message>
    <message>
        <source>Directories to prepend to PATH when launching stdio MCP servers. Useful when Qt Creator is started from the dock and doesn&apos;t see Homebrew, nvm, uv, etc. Separate multiple entries with &apos;%1&apos;. Per-server &apos;env&apos; overrides in mcp-server.json still win.</source>
        <translation>Répertoires à ajouter en tête de PATH lors du lancement de serveurs MCP stdio. Utile lorsque Qt Creator est démarré depuis le dock et ne voit pas Homebrew, nvm, uv, etc. Séparez les entrées multiples par &apos;%1&apos;. Les remplacements &apos;env&apos; par serveur dans mcp-server.json l&apos;emportent toujours.</translation>
    </message>
    <message>
        <source>How to connect...</source>
        <translation>Comment se connecter…</translation>
    </message>
    <message>
        <source>Server</source>
        <translation>Serveur</translation>
    </message>
    <message>
        <source>Clients</source>
        <translation>Clients</translation>
    </message>
    <message>
        <source>Connect to QodeAssist MCP</source>
        <translation>Se connecter à QodeAssist MCP</translation>
    </message>
    <message>
        <source>Server URL: &lt;code&gt;%1&lt;/code&gt;. If your MCP client speaks HTTP/SSE natively, use the &lt;b&gt;Direct&lt;/b&gt; tab. If it only speaks stdio (e.g. Claude Desktop), use the &lt;b&gt;Bridge&lt;/b&gt; tab.</source>
        <translation>URL du serveur : &lt;code&gt;%1&lt;/code&gt;. Si votre client MCP gère nativement HTTP/SSE, utilisez l&apos;onglet &lt;b&gt;Direct&lt;/b&gt;. S&apos;il ne gère que stdio (ex. Claude Desktop), utilisez l&apos;onglet &lt;b&gt;Pont&lt;/b&gt;.</translation>
    </message>
    <message>
        <source>Copy</source>
        <translation>Copier</translation>
    </message>
    <message>
        <source>&lt;b&gt;Claude Code&lt;/b&gt; (CLI): run once —</source>
        <translation>&lt;b&gt;Claude Code&lt;/b&gt; (CLI) : exécuter une fois —</translation>
    </message>
    <message>
        <source>&lt;b&gt;VS Code&lt;/b&gt;: save as &lt;code&gt;.vscode/mcp.json&lt;/code&gt; in the workspace:</source>
        <translation>&lt;b&gt;VS Code&lt;/b&gt; : enregistrer en tant que &lt;code&gt;.vscode/mcp.json&lt;/code&gt; dans l&apos;espace de travail :</translation>
    </message>
    <message>
        <source>Any other client that reads an &lt;code&gt;mcpServers&lt;/code&gt; JSON block:</source>
        <translation>Tout autre client qui lit un bloc JSON &lt;code&gt;mcpServers&lt;/code&gt; :</translation>
    </message>
    <message>
        <source>Direct (HTTP/SSE)</source>
        <translation>Direct (HTTP/SSE)</translation>
    </message>
    <message>
        <source>&lt;b&gt;1.&lt;/b&gt; Download &lt;code&gt;mcp-bridge&lt;/code&gt; for your OS from &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;.</source>
        <translation>&lt;b&gt;1.&lt;/b&gt; Téléchargez &lt;code&gt;mcp-bridge&lt;/code&gt; pour votre OS depuis &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;.</translation>
    </message>
    <message>
        <source>&lt;b&gt;2.&lt;/b&gt; Save the following as &lt;code&gt;mcp-bridge.json&lt;/code&gt;:</source>
        <translation>&lt;b&gt;2.&lt;/b&gt; Enregistrez ce qui suit en tant que &lt;code&gt;mcp-bridge.json&lt;/code&gt; :</translation>
    </message>
    <message>
        <source>&lt;b&gt;3.&lt;/b&gt; Point the stdio-only client at the bridge. Example for &lt;code&gt;claude_desktop_config.json&lt;/code&gt;:</source>
        <translation>&lt;b&gt;3.&lt;/b&gt; Pointez le client stdio uniquement vers le pont. Exemple pour &lt;code&gt;claude_desktop_config.json&lt;/code&gt; :</translation>
    </message>
    <message>
        <source>Bridge (stdio)</source>
        <translation>Pont (stdio)</translation>
    </message>
    <message>
        <source>Chat History Path:</source>
        <translation>Chemin de l&apos;historique des discussions :</translation>
    </message>
    <message>
        <source>Skill directories:</source>
        <translation>Répertoires de compétences :</translation>
    </message>
    <message>
        <source>Project-relative subdirectories scanned for Agent Skills, one per line. Resolved against the project root. These take priority over the global skill directories when a skill name appears in both.</source>
        <translation>Sous-répertoires relatifs au projet scannés pour les compétences d&apos;agent, un par ligne. Résolus par rapport à la racine du projet. Ceux-ci ont priorité sur les répertoires globaux de compétences lorsqu&apos;un nom de compétence apparaît dans les deux.</translation>
    </message>
    <message>
        <source>Discovered project skills:</source>
        <translation>Compétences de projet découvertes :</translation>
    </message>
    <message>
        <source>QodeAssist</source>
        <translation>QodeAssist</translation>
    </message>
    <message>
        <source>Provider Settings</source>
        <translation>Paramètres du fournisseur</translation>
    </message>
    <message>
        <source>OpenRouter API Key:</source>
        <translation>Clé API OpenRouter :</translation>
    </message>
    <message>
        <source>Enter your API key here</source>
        <translation>Saisissez votre clé API ici</translation>
    </message>
    <message>
        <source>OpenAI Compatible API Key:</source>
        <translation>Clé API compatible OpenAI :</translation>
    </message>
    <message>
        <source>Claude API Key:</source>
        <translation>Clé API Claude :</translation>
    </message>
    <message>
        <source>Enable prompt caching</source>
        <translation>Activer la mise en cache des invites</translation>
    </message>
    <message>
        <source>Marks the system prompt, tool definitions, and stable chat history with cache_control so Anthropic caches the request prefix (5-minute TTL). Reduces cost and latency on repeated turns.</source>
        <translation>Marque l&apos;invite système, les définitions d&apos;outils et l&apos;historique de discussion stable avec cache_control afin qu&apos;Anthropic mette en cache le préfixe de la requête (TTL de 5 minutes). Réduit le coût et la latence sur les tours répétés.</translation>
    </message>
    <message>
        <source>Use 1h cache TTL (beta)</source>
        <translation>Utiliser un TTL de cache de 1 h (bêta)</translation>
    </message>
    <message>
        <source>Requests Anthropic&apos;s 1-hour cache TTL instead of the default 5 minutes. Sends the extended-cache-ttl-2025-04-11 beta header.</source>
        <translation>Demande le TTL de cache de 1 heure d&apos;Anthropic au lieu des 5 minutes par défaut. Envoie l&apos;en-tête bêta extended-cache-ttl-2025-04-11.</translation>
    </message>
    <message>
        <source>OpenAI API Key:</source>
        <translation>Clé API OpenAI :</translation>
    </message>
    <message>
        <source>Mistral AI API Key:</source>
        <translation>Clé API Mistral AI :</translation>
    </message>
    <message>
        <source>Codestral API Key:</source>
        <translation>Clé API Codestral :</translation>
    </message>
    <message>
        <source>Google AI API Key:</source>
        <translation>Clé API Google AI :</translation>
    </message>
    <message>
        <source>Ollama(Bearer) API Key:</source>
        <translation>Clé API Ollama (Bearer) :</translation>
    </message>
    <message>
        <source>llama.cpp API Key:</source>
        <translation>Clé API llama.cpp :</translation>
    </message>
    <message>
        <source>Qwen API Key:</source>
        <translation>Clé API Qwen :</translation>
    </message>
    <message>
        <source>DeepSeek API Key:</source>
        <translation>Clé API DeepSeek :</translation>
    </message>
    <message>
        <source>OpenRouter Settings</source>
        <translation>Paramètres OpenRouter</translation>
    </message>
    <message>
        <source>OpenAI Settings</source>
        <translation>Paramètres OpenAI</translation>
    </message>
    <message>
        <source>OpenAI Compatible Settings</source>
        <translation>Paramètres compatibles OpenAI</translation>
    </message>
    <message>
        <source>Claude Settings</source>
        <translation>Paramètres Claude</translation>
    </message>
    <message>
        <source>Mistral AI Settings</source>
        <translation>Paramètres Mistral AI</translation>
    </message>
    <message>
        <source>Google AI Settings</source>
        <translation>Paramètres Google AI</translation>
    </message>
    <message>
        <source>llama.cpp Settings</source>
        <translation>Paramètres llama.cpp</translation>
    </message>
    <message>
        <source>Qwen (Alibaba) Settings</source>
        <translation>Paramètres Qwen (Alibaba)</translation>
    </message>
    <message>
        <source>DeepSeek Settings</source>
        <translation>Paramètres DeepSeek</translation>
    </message>
    <message>
        <source>Agent roles define different system prompts for specific tasks.</source>
        <translation>Les rôles d&apos;agents définissent différentes invites système pour des tâches spécifiques.</translation>
    </message>
    <message>
        <source>Open Roles Folder...</source>
        <translation>Ouvrir le dossier des rôles…</translation>
    </message>
    <message>
        <source>Add...</source>
        <translation>Ajouter…</translation>
    </message>
    <message>
        <source>Edit...</source>
        <translation>Modifier…</translation>
    </message>
    <message>
        <source>Duplicate...</source>
        <translation>Dupliquer…</translation>
    </message>
    <message>
        <source>(Built-in role)</source>
        <translation>(Rôle intégré)</translation>
    </message>
    <message>
        <source>Role Already Exists</source>
        <translation>Le rôle existe déjà</translation>
    </message>
    <message>
        <source>A role with ID &apos;%1&apos; already exists. Please use a different ID.</source>
        <translation>Un rôle portant l&apos;ID &apos;%1&apos; existe déjà. Veuillez utiliser un ID différent.</translation>
    </message>
    <message>
        <source>Error</source>
        <translation>Erreur</translation>
    </message>
    <message>
        <source>Failed to save role &apos;%1&apos;.</source>
        <translation>Échec de l&apos;enregistrement du rôle &apos;%1&apos;.</translation>
    </message>
    <message>
        <source>Cannot Edit Built-in Role</source>
        <translation>Impossible de modifier un rôle intégré</translation>
    </message>
    <message>
        <source>Built-in roles cannot be edited. You can duplicate this role and modify the copy.</source>
        <translation>Les rôles intégrés ne peuvent pas être modifiés. Vous pouvez dupliquer ce rôle et modifier la copie.</translation>
    </message>
    <message>
        <source>Failed to update role &apos;%1&apos;.</source>
        <translation>Échec de la mise à jour du rôle &apos;%1&apos;.</translation>
    </message>
    <message>
        <source>Failed to duplicate role.</source>
        <translation>Échec de la duplication du rôle.</translation>
    </message>
    <message>
        <source>Cannot Delete Built-in Role</source>
        <translation>Impossible de supprimer un rôle intégré</translation>
    </message>
    <message>
        <source>Built-in roles cannot be deleted.</source>
        <translation>Les rôles intégrés ne peuvent pas être supprimés.</translation>
    </message>
    <message>
        <source>Delete Role</source>
        <translation>Supprimer le rôle</translation>
    </message>
    <message>
        <source>Are you sure you want to delete the role &apos;%1&apos;?</source>
        <translation>Voulez-vous vraiment supprimer le rôle &apos;%1&apos; ?</translation>
    </message>
    <message>
        <source>Failed to delete role &apos;%1&apos;.</source>
        <translation>Échec de la suppression du rôle &apos;%1&apos;.</translation>
    </message>
    <message>
        <source>Generate QodeAssist suggestion at the current cursor position.</source>
        <translation>Générer une suggestion QodeAssist à la position actuelle du curseur.</translation>
    </message>
    <message>
        <source>Request QodeAssist Suggestion</source>
        <translation>Demander une suggestion QodeAssist</translation>
    </message>
    <message>
        <source>Refactor code using QodeAssist</source>
        <translation>Refactoriser le code à l&apos;aide de QodeAssist</translation>
    </message>
    <message>
        <source>Quick Refactor with QodeAssist</source>
        <translation>Refactoring rapide avec QodeAssist</translation>
    </message>
    <message>
        <source>Open QodeAssist Chat as an editor tab</source>
        <translation>Ouvrir la discussion QodeAssist en tant qu&apos;onglet d&apos;éditeur</translation>
    </message>
    <message>
        <source>Show QodeAssist Chat</source>
        <translation>Afficher la discussion QodeAssist</translation>
    </message>
    <message>
        <source>Close QodeAssist Chat</source>
        <translation>Fermer la discussion QodeAssist</translation>
    </message>
    <message>
        <source>Open QodeAssist Chat in Separate Window</source>
        <translation>Ouvrir la discussion QodeAssist dans une fenêtre séparée</translation>
    </message>
    <message>
        <source>Open the QodeAssist chat in a separate window</source>
        <translation>Ouvrir la discussion QodeAssist dans une fenêtre séparée</translation>
    </message>
    <message>
        <source>New QodeAssist Chat</source>
        <translation>Nouvelle discussion QodeAssist</translation>
    </message>
    <message>
        <source>Open a fresh chat in a new editor tab</source>
        <translation>Ouvrir une nouvelle discussion dans un nouvel onglet d&apos;éditeur</translation>
    </message>
    <message>
        <source>Send QodeAssist Chat Message</source>
        <translation>Envoyer le message de discussion QodeAssist</translation>
    </message>
    <message>
        <source>Send the current message to the LLM</source>
        <translation>Envoyer le message actuel au LLM</translation>
    </message>
    <message>
        <source>Clear QodeAssist Chat Session</source>
        <translation>Effacer la session de discussion QodeAssist</translation>
    </message>
    <message>
        <source>Clear the current chat session</source>
        <translation>Effacer la session de discussion actuelle</translation>
    </message>
    <message>
        <source>QodeAssist Chat</source>
        <translation>Discussion QodeAssist</translation>
    </message>
    <message>
        <source>Chat in Bottom Panel</source>
        <translation>Discussion dans le panneau inférieur</translation>
    </message>
    <message>
        <source>Chat in Sidebar</source>
        <translation>Discussion dans la barre latérale</translation>
    </message>
    <message>
        <source>Open Chat in Editor</source>
        <translation>Ouvrir la discussion dans l&apos;éditeur</translation>
    </message>
    <message>
        <source>Open Chat in Separate Window</source>
        <translation>Ouvrir la discussion dans une fenêtre séparée</translation>
    </message>
    <message>
        <source>Select LLM Provider</source>
        <translation>Sélectionner le fournisseur LLM</translation>
    </message>
    <message>
        <source>Providers:</source>
        <translation>Fournisseurs :</translation>
    </message>
    <message>
        <source>Select LLM Model</source>
        <translation>Sélectionner le modèle LLM</translation>
    </message>
    <message>
        <source>Models:</source>
        <translation>Modèles :</translation>
    </message>
    <message>
        <source>Select Template</source>
        <translation>Sélectionner le modèle</translation>
    </message>
    <message>
        <source>Templates:</source>
        <translation>Modèles :</translation>
    </message>
    <message>
        <source>Switch AI configuration</source>
        <translation>Changer de configuration IA</translation>
    </message>
    <message>
        <source>Enable/Disable AI Tools</source>
        <translation>Activer / désactiver les outils IA</translation>
    </message>
    <message>
        <source>Enable/Disable Thinking Mode</source>
        <translation>Activer / désactiver le mode réflexion</translation>
    </message>
    <message>
        <source>Open Quick Refactor Settings</source>
        <translation>Ouvrir les paramètres de refactoring rapide</translation>
    </message>
    <message>
        <source>Your Current Instruction:</source>
        <translation>Votre instruction actuelle :</translation>
    </message>
    <message>
        <source>Type or edit your instruction...</source>
        <translation>Saisissez ou modifiez votre instruction…</translation>
    </message>
    <message>
        <source>Or Load saved:</source>
        <translation>Ou charger une instruction enregistrée :</translation>
    </message>
    <message>
        <source>Search saved instructions...</source>
        <translation>Rechercher dans les instructions enregistrées…</translation>
    </message>
    <message>
        <source>Add Custom Instruction</source>
        <translation>Ajouter une instruction personnalisée</translation>
    </message>
    <message>
        <source>Edit Custom Instruction</source>
        <translation>Modifier une instruction personnalisée</translation>
    </message>
    <message>
        <source>Delete Custom Instruction</source>
        <translation>Supprimer une instruction personnalisée</translation>
    </message>
    <message>
        <source>Open Instructions Folder</source>
        <translation>Ouvrir le dossier des instructions</translation>
    </message>
    <message>
        <source>Repeat Last Instructions</source>
        <translation>Répéter les dernières instructions</translation>
    </message>
    <message>
        <source>Improve Current Code</source>
        <translation>Améliorer le code actuel</translation>
    </message>
    <message>
        <source>Suggest Alternative Solution</source>
        <translation>Suggérer une solution alternative</translation>
    </message>
    <message>
        <source>Improve the selected code by enhancing readability, efficiency, and maintainability. Follow best practices for C++/Qt and fix any potential issues.</source>
        <translation>Améliorer le code sélectionné en renforçant la lisibilité, l&apos;efficacité et la maintenabilité. Suivre les bonnes pratiques C++/Qt et corriger tout problème potentiel.</translation>
    </message>
    <message>
        <source>Suggest an alternative implementation approach for the selected code. Provide a different solution that might be cleaner, more efficient, or uses different Qt/C++ patterns or idioms.</source>
        <translation>Suggérer une approche d&apos;implémentation alternative pour le code sélectionné. Fournir une solution différente qui pourrait être plus propre, plus efficace, ou utiliser d&apos;autres motifs ou idiomes Qt/C++.</translation>
    </message>
    <message>
        <source>Failed to save custom instruction. Check logs for details.</source>
        <translation>Échec de l&apos;enregistrement de l&apos;instruction personnalisée. Consultez les journaux pour plus de détails.</translation>
    </message>
    <message>
        <source>No Instruction Selected</source>
        <translation>Aucune instruction sélectionnée</translation>
    </message>
    <message>
        <source>Please select an instruction to edit.</source>
        <translation>Veuillez sélectionner une instruction à modifier.</translation>
    </message>
    <message>
        <source>Failed to update custom instruction. Check logs for details.</source>
        <translation>Échec de la mise à jour de l&apos;instruction personnalisée. Consultez les journaux pour plus de détails.</translation>
    </message>
    <message>
        <source>Please select an instruction to delete.</source>
        <translation>Veuillez sélectionner une instruction à supprimer.</translation>
    </message>
    <message>
        <source>Confirm Deletion</source>
        <translation>Confirmer la suppression</translation>
    </message>
    <message>
        <source>Are you sure you want to delete the instruction &apos;%1&apos;?</source>
        <translation>Voulez-vous vraiment supprimer l&apos;instruction &apos;%1&apos; ?</translation>
    </message>
    <message>
        <source>Failed to delete custom instruction. Check logs for details.</source>
        <translation>Échec de la suppression de l&apos;instruction personnalisée. Consultez les journaux pour plus de détails.</translation>
    </message>
    <message>
        <source>Current</source>
        <translation>Actuel</translation>
    </message>
    <message>
        <source>Current (%1)</source>
        <translation>Actuel (%1)</translation>
    </message>
    <message>
        <source>No Instruction</source>
        <translation>Aucune instruction</translation>
    </message>
    <message>
        <source>Please type an instruction or select a saved one.</source>
        <translation>Veuillez saisir une instruction ou en sélectionner une enregistrée.</translation>
    </message>
    <message>
        <source>Enter instruction name...</source>
        <translation>Saisir le nom de l&apos;instruction…</translation>
    </message>
    <message>
        <source>Name:</source>
        <translation>Nom :</translation>
    </message>
    <message>
        <source>Instruction Body:</source>
        <translation>Corps de l&apos;instruction :</translation>
    </message>
    <message>
        <source>Enter the refactoring instruction that will be sent to the LLM...</source>
        <translation>Saisissez l&apos;instruction de refactoring qui sera envoyée au LLM…</translation>
    </message>
    <message>
        <source>Set as default instruction</source>
        <translation>Définir comme instruction par défaut</translation>
    </message>
    <message>
        <source>This instruction will be automatically selected when opening Quick Refactor dialog</source>
        <translation>Cette instruction sera automatiquement sélectionnée à l&apos;ouverture de la boîte de dialogue Refactoring rapide</translation>
    </message>
    <message>
        <source>Invalid Input</source>
        <translation>Saisie invalide</translation>
    </message>
    <message>
        <source>Instruction name cannot be empty.</source>
        <translation>Le nom de l&apos;instruction ne peut pas être vide.</translation>
    </message>
    <message>
        <source>Instruction body cannot be empty.</source>
        <translation>Le corps de l&apos;instruction ne peut pas être vide.</translation>
    </message>
</context>
<context>
    <name>RootItem</name>
    <message>
        <source>Compressing chat…</source>
        <translation>Compression de la discussion…</translation>
    </message>
    <message>
        <source>next ~%1  ·  session ↑%2 ↓%3 ↻%4</source>
        <translation>prochaine ~%1  ·  session ↑%2 ↓%3 ↻%4</translation>
    </message>
    <message>
        <source>next ~%1  ·  session ↑%2 ↓%3</source>
        <translation>prochaine ~%1  ·  session ↑%2 ↓%3</translation>
    </message>
    <message>
        <source>next request (estimate)  ·  session prompt ↑ / completion ↓ / cached ↻ (provider cache hits)</source>
        <translation>prochaine requête (estimation)  ·  invite de session ↑ / complétion ↓ / en cache ↻ (occurrences du cache fournisseur)</translation>
    </message>
    <message>
        <source>next request (estimate)  ·  session prompt ↑ / completion ↓</source>
        <translation>prochaine requête (estimation)  ·  invite de session ↑ / complétion ↓</translation>
    </message>
    <message>
        <source>Сhat name: %1</source>
        <translation>Nom de la discussion : %1</translation>
    </message>
    <message>
        <source>Move this chat to an editor tab</source>
        <translation>Déplacer cette discussion vers un onglet d&apos;éditeur</translation>
    </message>
    <message>
        <source>Move this chat to a separate window</source>
        <translation>Déplacer cette discussion vers une fenêtre séparée</translation>
    </message>
    <message>
        <source>Type your message here... (%1 to send)</source>
        <translation>Saisissez votre message ici... (%1 pour envoyer)</translation>
    </message>
    <message>
        <source>Cut</source>
        <translation>Couper</translation>
    </message>
    <message>
        <source>Copy</source>
        <translation>Copier</translation>
    </message>
    <message>
        <source>Paste</source>
        <translation>Coller</translation>
    </message>
    <message>
        <source>Select All</source>
        <translation>Tout sélectionner</translation>
    </message>
    <message>
        <source>Clear</source>
        <translation>Effacer</translation>
    </message>
    <message>
        <source>Send</source>
        <translation>Envoyer</translation>
    </message>
    <message>
        <source>Stop</source>
        <translation>Arrêter</translation>
    </message>
    <message>
        <source>Send message to LLM %1</source>
        <translation>Envoyer le message au LLM %1</translation>
    </message>
    <message>
        <source>Compress Chat</source>
        <translation>Compresser la discussion</translation>
    </message>
    <message>
        <source>Create a summarized copy of this chat?

The summary will be generated by LLM and saved as a new chat file.</source>
        <translation>Créer une copie résumée de cette discussion ?

Le résumé sera généré par le LLM et enregistré dans un nouveau fichier de discussion.</translation>
    </message>
    <message>
        <source>Copied</source>
        <translation>Copié</translation>
    </message>
</context>
<context>
    <name>SplitDropZone</name>
    <message numerus="yes">
        <source>%n file(s) to drop</source>
        <translation>
            <numerusform>%n fichier(s) à déposer</numerusform>
            <numerusform>%n fichier(s) à déposer</numerusform>
        </translation>
    </message>
    <message>
        <source>Attach</source>
        <translation>Joindre</translation>
    </message>
    <message>
        <source>Images &amp; Text Files</source>
        <translation>Images &amp; fichiers texte</translation>
    </message>
    <message>
        <source>(for one-time use)</source>
        <translation>(pour usage unique)</translation>
    </message>
    <message>
        <source>LINK</source>
        <translation>LIEN</translation>
    </message>
    <message>
        <source>Text Files</source>
        <translation>Fichiers texte</translation>
    </message>
    <message>
        <source>(added to context)</source>
        <translation>(ajouté au contexte)</translation>
    </message>
</context>
<context>
    <name>TextBlock</name>
    <message>
        <source>Copy</source>
        <translation>Copier</translation>
    </message>
    <message>
        <source>Select All</source>
        <translation>Tout sélectionner</translation>
    </message>
</context>
<context>
    <name>ThinkingBlock</name>
    <message>
        <source>Thinking (Redacted)</source>
        <translation>Réflexion (expurgée)</translation>
    </message>
    <message>
        <source>Thinking</source>
        <translation>Réflexion</translation>
    </message>
    <message>
        <source>Thinking content was redacted by safety systems</source>
        <translation>Le contenu de la réflexion a été expurgé par les systèmes de sécurité</translation>
    </message>
    <message>
        <source>Collapse</source>
        <translation>Réduire</translation>
    </message>
    <message>
        <source>Expand</source>
        <translation>Développer</translation>
    </message>
</context>
<context>
    <name>ToolBlock</name>
    <message>
        <source>Tool: %1</source>
        <translation>Outil : %1</translation>
    </message>
    <message>
        <source>Copy</source>
        <translation>Copier</translation>
    </message>
    <message>
        <source>Select All</source>
        <translation>Tout sélectionner</translation>
    </message>
    <message>
        <source>Collapse</source>
        <translation>Réduire</translation>
    </message>
    <message>
        <source>Expand</source>
        <translation>Développer</translation>
    </message>
</context>
<context>
    <name>TopBar</name>
    <message>
        <source>Unpin chat window</source>
        <translation>Désépingler la fenêtre de discussion</translation>
    </message>
    <message>
        <source>Pin chat window to the top</source>
        <translation>Épingler la fenêtre de discussion au-dessus</translation>
    </message>
    <message>
        <source>Clean chat</source>
        <translation>Nettoyer la discussion</translation>
    </message>
    <message>
        <source>Open new chat in a new tab</source>
        <translation>Ouvrir une nouvelle discussion dans un nouvel onglet</translation>
    </message>
    <message>
        <source>Switch saved AI configuration</source>
        <translation>Changer de configuration IA enregistrée</translation>
    </message>
    <message>
        <source>Switch agent role (different system prompts)</source>
        <translation>Changer de rôle d&apos;agent (invites système différentes)</translation>
    </message>
    <message>
        <source>Tools are disabled in General Settings</source>
        <translation>Les outils sont désactivés dans les paramètres généraux</translation>
    </message>
    <message>
        <source>Tools enabled: AI can use tools to read files, search project, and build code</source>
        <translation>Outils activés : l&apos;IA peut utiliser des outils pour lire des fichiers, rechercher dans le projet et compiler du code</translation>
    </message>
    <message>
        <source>Tools disabled: Simple conversation without tool access</source>
        <translation>Outils désactivés : conversation simple sans accès aux outils</translation>
    </message>
    <message>
        <source>Thinking Mode enabled (Check model list support it)</source>
        <translation>Mode réflexion activé (vérifiez que la liste des modèles le prend en charge)</translation>
    </message>
    <message>
        <source>Thinking Mode disabled</source>
        <translation>Mode réflexion désactivé</translation>
    </message>
    <message>
        <source>Thinking Mode is not available for this provider</source>
        <translation>Le mode réflexion n&apos;est pas disponible pour ce fournisseur</translation>
    </message>
    <message>
        <source>Open Chat Assistant Settings</source>
        <translation>Ouvrir les paramètres de l&apos;assistant de discussion</translation>
    </message>
    <message>
        <source>Save chat to *.json file</source>
        <translation>Enregistrer la discussion dans un fichier *.json</translation>
    </message>
    <message>
        <source>Load chat from *.json file</source>
        <translation>Charger la discussion depuis un fichier *.json</translation>
    </message>
    <message>
        <source>Show in system</source>
        <translation>Afficher dans le système</translation>
    </message>
    <message>
        <source>View chat context (system prompt, role, rules)</source>
        <translation>Afficher le contexte de la discussion (invite système, rôle, règles)</translation>
    </message>
    <message>
        <source>Current amount tokens in chat and LLM limit threshold</source>
        <translation>Quantité actuelle de jetons dans la discussion et seuil de limite du LLM</translation>
    </message>
</context>
</TS>
