import { settingsDict } from './fr.settings';

export const dict = {
  ...settingsDict,
  'common.loading': 'Chargement...',
  'common.unavailable': 'Indisponible',
  'common.language.english': 'Anglais',
  'common.language.french': 'Français',
  'common.language.simplifiedChinese': 'Chinois (simplifié)',
  'common.language.traditionalChinese': 'Chinois (traditionnel)',
  'common.language.ukrainian': 'Ukrainien',
  'common.language.spanish': 'Espagnol',
  'common.language.brazilianPortuguese': 'Portugais brésilien',
  'common.language.korean': 'Coréen',
  'common.language.polish': 'Polonais',
  'common.language.japanese': 'Japonais',
  'common.revealPath.finder': 'Révéler dans le Finder',
  'common.revealPath.fileExplorer': 'Ouvrir dans l\'explorateur de fichiers',
  'common.revealPath.fileManager': 'Ouvrir dans le gestionnaire de fichiers',
  'pwa.installPrompt.description': 'Installez OpenChamber pour un accès plus rapide',
  'pwa.installPrompt.action': 'Installer',
  'pwa.installPrompt.dismiss': 'Ignorer',
  'pwa.installPrompt.started': 'Installation démarrée',
  'pwa.installPrompt.installed': 'OpenChamber installé',
  'layout.mainTab.chat': 'Chat',
  'layout.mainTab.plan': 'Plan',
  'layout.mainTab.diff': 'Diff',
  'layout.mainTab.files': 'Fichiers',
  'layout.mainTab.terminal': 'Terminal',
  'layout.mainTab.context': 'Contexte',
  'layout.rightSidebar.git': 'Git',
  'layout.rightSidebar.files': 'Fichiers',
  'layout.rightSidebar.context': 'Contexte',
  'layout.services.instance': 'Instance',
  'layout.services.usage': 'Usage',
  'sessions.sidebar.header.actions.closeSessions': 'Fermer les sessions',
  'sessions.sidebar.header.actions.addProject': 'Ajouter un projet',
  'sessions.sidebar.header.actions.newSession': 'Nouvelle session',
  'sessions.sidebar.header.actions.newMultiRun': 'Nouveau multi-run',
  'sessions.sidebar.header.actions.scheduledTasks': 'Tâches planifiées',
  'sessions.scheduledTasks.dialog.title': 'Tâches planifiées',
  'sessions.scheduledTasks.dialog.description': 'Tâches côté serveur qui créent une nouvelle session et envoient un prompt configuré.',
  'sessions.scheduledTasks.dialog.project.label': 'Projet',
  'sessions.scheduledTasks.dialog.project.placeholder': 'Sélectionnez un projet',
  'sessions.scheduledTasks.dialog.project.empty': 'Aucun projet',
  'sessions.scheduledTasks.dialog.actions.newTask': 'Nouvelle tâche',
  'sessions.scheduledTasks.dialog.actions.runNow': 'Exécuter maintenant',
  'sessions.scheduledTasks.dialog.actions.edit': 'Modifier',
  'sessions.scheduledTasks.dialog.actions.editAria': 'Modifier {taskName}',
  'sessions.scheduledTasks.dialog.actions.deleteAria': 'Supprimer {taskName}',
  'sessions.scheduledTasks.dialog.loading': 'Chargement des tâches...',
  'sessions.scheduledTasks.dialog.empty.noTasks': 'Aucune tâche planifiée pour l\'instant.',
  'sessions.scheduledTasks.dialog.empty.selectProject': 'Sélectionnez un projet pour gérer les tâches planifiées.',
  'sessions.scheduledTasks.dialog.error.chooseProjectFirst': 'Choisissez d\'abord un projet',
  'sessions.scheduledTasks.dialog.toast.loadFailed': 'Échec du chargement des tâches planifiées',
  'sessions.scheduledTasks.dialog.toast.saved': 'Tâche planifiée enregistrée',
  'sessions.scheduledTasks.dialog.toast.updateFailed': 'Échec de la mise à jour de la tâche',
  'sessions.scheduledTasks.dialog.toast.deleted': 'Tâche planifiée supprimée',
  'sessions.scheduledTasks.dialog.toast.deleteFailed': 'Échec de la suppression de la tâche',
  'sessions.scheduledTasks.dialog.toast.started': 'Tâche démarrée',
  'sessions.scheduledTasks.dialog.toast.runFailed': 'Échec de l\'exécution de la tâche',
  'sessions.scheduledTasks.dialog.confirm.deleteTask': 'Supprimer la tâche planifiée « {taskName} » ?',
  'sessions.scheduledTasks.dialog.schedule.daily': 'Quotidien {time}',
  'sessions.scheduledTasks.dialog.schedule.dailyWithTimezone': 'Quotidien {time} ({timezone})',
  'sessions.scheduledTasks.dialog.schedule.weekly': 'Hebdomadaire {days} {time}',
  'sessions.scheduledTasks.dialog.schedule.weeklyWithTimezone': '{days} hebdomadaire {time} ({timezone})',
  'sessions.scheduledTasks.dialog.schedule.once': '{date} unique {time}',
  'sessions.scheduledTasks.dialog.schedule.onceWithTimezone': '{date} unique {time} ({timezone})',
  'sessions.scheduledTasks.dialog.schedule.cron': 'Cron : {cron}',
  'sessions.scheduledTasks.dialog.schedule.cronWithTimezone': 'Cron : {cron} ({timezone})',
  'sessions.scheduledTasks.dialog.schedule.unknownDate': 'Date inconnue',
  'sessions.scheduledTasks.dialog.schedule.weekdayShort.sun': 'Dim',
  'sessions.scheduledTasks.dialog.schedule.weekdayShort.mon': 'Lun',
  'sessions.scheduledTasks.dialog.schedule.weekdayShort.tue': 'Mar',
  'sessions.scheduledTasks.dialog.schedule.weekdayShort.wed': 'Mer',
  'sessions.scheduledTasks.dialog.schedule.weekdayShort.thu': 'Jeu',
  'sessions.scheduledTasks.dialog.schedule.weekdayShort.fri': 'Ven',
  'sessions.scheduledTasks.dialog.schedule.weekdayShort.sat': 'Sam',
  'sessions.scheduledTasks.dialog.schedule.weekdayShort.unknown': '?',
  'sessions.scheduledTasks.dialog.relativeTime.inLessThanOneMinute': 'dans <1 m',
  'sessions.scheduledTasks.dialog.relativeTime.justNow': 'à l’instant',
  'sessions.scheduledTasks.dialog.relativeTime.inMinutes': 'en {count}m',
  'sessions.scheduledTasks.dialog.relativeTime.minutesAgo': 'il y a {count} min',
  'sessions.scheduledTasks.dialog.relativeTime.inDuration': 'dans {duration}',
  'sessions.scheduledTasks.dialog.relativeTime.durationAgo': 'il y a {duration}',
  'sessions.scheduledTasks.dialog.status.success': 'Succès',
  'sessions.scheduledTasks.dialog.status.error': 'Erreur',
  'sessions.scheduledTasks.dialog.status.running': 'En cours d\'exécution',
  'sessions.scheduledTasks.dialog.status.idle': 'Inactif',
  'sessions.scheduledTasks.dialog.nextRun.label': 'Suivant',
  'sessions.scheduledTasks.dialog.lastRun.label': 'Dernière exécution',
  'sessions.scheduledTasks.dialog.lastRun.runningNow': 'en cours d’exécution',
  'sessions.scheduledTasks.dialog.lastRun.never': 'jamais',
  'sessions.scheduledTasks.dialog.taskToggle.enableAria': 'Activer {taskName}',
  'sessions.scheduledTasks.dialog.taskToggle.pauseAria': 'Pause {taskName}',
  'sessions.scheduledTasks.dialog.taskToggle.enabled': 'Activé',
  'sessions.scheduledTasks.dialog.taskToggle.paused': 'En pause',
  'sessions.scheduledTasks.editor.title.edit': 'Modifier une tâche planifiée',
  'sessions.scheduledTasks.editor.title.new': 'Nouvelle tâche planifiée',
  'sessions.scheduledTasks.editor.description': 'Configurez une tâche côté serveur qui crée une nouvelle session et envoie un prompt.',
  'sessions.scheduledTasks.editor.taskName.label': 'Nom de la tâche',
  'sessions.scheduledTasks.editor.taskName.placeholder': 'Synchronisation quotidienne',
  'sessions.scheduledTasks.editor.scheduleType.label': 'Type d\'horaire',
  'sessions.scheduledTasks.editor.scheduleType.daily': 'Tous les jours',
  'sessions.scheduledTasks.editor.scheduleType.weekly': 'Hebdomadaire',
  'sessions.scheduledTasks.editor.scheduleType.once': 'Une fois',
  'sessions.scheduledTasks.editor.scheduleType.cron': 'Cron',
  'sessions.scheduledTasks.editor.date.label': 'Date',
  'sessions.scheduledTasks.editor.date.placeholder': 'Sélectionnez une date',
  'sessions.scheduledTasks.editor.date.previousMonth': 'Mois précédent',
  'sessions.scheduledTasks.editor.date.nextMonth': 'Mois prochain',
  'sessions.scheduledTasks.editor.date.jumpToToday': 'Aller à aujourd\'hui',
  'sessions.scheduledTasks.editor.date.today': 'Aujourd\'hui',
  'sessions.scheduledTasks.editor.time.label': 'Temps',
  'sessions.scheduledTasks.editor.time.hourAria': 'Heures',
  'sessions.scheduledTasks.editor.time.minuteAria': 'Minutes',
  'sessions.scheduledTasks.editor.time.periodAria': 'Période',
  'sessions.scheduledTasks.editor.time.period.am': 'AM',
  'sessions.scheduledTasks.editor.time.period.pm': 'PM',
  'sessions.scheduledTasks.editor.times.label': 'Fois',
  'sessions.scheduledTasks.editor.times.add': 'Ajouter du temps',
  'sessions.scheduledTasks.editor.times.removeAria': 'Supprimer l\'heure',
  'sessions.scheduledTasks.editor.timezone.label': 'Fuseau horaire',
  'sessions.scheduledTasks.editor.weekdays.label': 'Jours de la semaine',
  'sessions.scheduledTasks.editor.model.label': 'Modèle',
  'sessions.scheduledTasks.editor.thinkingLevel.label': 'Niveau de réflexion',
  'sessions.scheduledTasks.editor.thinkingLevel.default': 'Défaut',
  'sessions.scheduledTasks.editor.agent.label': 'Agent',
  'sessions.scheduledTasks.editor.prompt.label': 'Prompt',
  'sessions.scheduledTasks.editor.prompt.placeholder': 'Résumer les tâches ouvertes et proposer les prochaines actions',
  'sessions.scheduledTasks.editor.enabled.aria': 'Activer la tâche',
  'sessions.scheduledTasks.editor.enabled.label': 'Activé',
  'sessions.scheduledTasks.editor.actions.closeAria': 'Fermer',
  'sessions.scheduledTasks.editor.actions.cancel': 'Annuler',
  'sessions.scheduledTasks.editor.actions.save': 'Sauvegarder',
  'sessions.scheduledTasks.editor.actions.saving': 'Enregistrement...',
  'sessions.scheduledTasks.editor.toast.saveFailed': 'Échec de l\'enregistrement de la tâche',
  'sessions.scheduledTasks.editor.validation.taskNameRequired': 'Le nom de la tâche est obligatoire',
  'sessions.scheduledTasks.editor.validation.promptRequired': 'Un prompt est requis',
  'sessions.scheduledTasks.editor.validation.modelRequired': 'Le modèle est requis',
  'sessions.scheduledTasks.editor.validation.dateFormat': 'La date doit utiliser AAAA-MM-JJ',
  'sessions.scheduledTasks.editor.validation.timeFormat': 'L\'heure doit utiliser HH : mm',
  'sessions.scheduledTasks.editor.validation.atLeastOneTime': 'Ajoutez au moins une heure valide',
  'sessions.scheduledTasks.editor.validation.atLeastOneWeekday': 'Sélectionnez au moins un jour de la semaine',
  'sessions.scheduledTasks.editor.validation.timezoneRequired': 'Le fuseau horaire est requis',
  'sessions.scheduledTasks.editor.validation.cronRequired': 'Une expression cron est requise',
  'sessions.scheduledTasks.editor.validation.cronInvalid': 'Expression cron invalide',
  'sessions.scheduledTasks.editor.cronExpression.label': 'Expression cron',
  'sessions.scheduledTasks.editor.cronExpression.placeholder': '*/5 * * * *',
  'sessions.scheduledTasks.editor.cronExpression.nextRuns': 'Prochaines exécutions',
  'sessions.scheduledTasks.editor.cronExpression.examples': 'Exemples',
  'sessions.scheduledTasks.editor.cronExpression.examples.every5min': 'Toutes les 5 minutes',
  'sessions.scheduledTasks.editor.cronExpression.examples.everyHour': 'Toutes les heures',
  'sessions.scheduledTasks.editor.cronExpression.examples.monday9am': 'Chaque lundi à 9 h',
  'sessions.scheduledTasks.editor.cronExpression.examples.9am5pm': '9 h et 17 h chaque jour',
  'sessions.scheduledTasks.editor.cronExpression.examples.firstOfMonth': 'Premier jour de chaque mois',
  'multirun.launcher.title': 'Nouveau multi-run',
  'multirun.launcher.actions.closeEsc': 'Fermer (Échap)',
  'multirun.launcher.actions.cancel': 'Annuler',
  'multirun.launcher.actions.creating': 'Création...',
  'multirun.launcher.actions.startWithModelCount': 'Démarrer (modèles {count})',
  'multirun.launcher.project.label': 'Projet',
  'multirun.launcher.project.placeholder': 'Sélectionnez un projet',
  'multirun.launcher.project.empty': 'Ajoutez d\'abord un projet.',
  'multirun.launcher.project.gitRequired': 'Pas d\'isolation par worktree : les exécutions utilisent le même répertoire.',
  'multirun.launcher.groupName.label': 'Nom du groupe',
  'multirun.launcher.groupName.info': 'Utilisé pour le répertoire du worktree et les noms de branches',
  'multirun.launcher.groupName.placeholder': 'fonctionnalité-auth, correction de bugs-connexion',
  'multirun.launcher.baseBranch.label': 'Branche de base',
  'multirun.launcher.baseBranch.info': 'Nouvelle branche créée à partir de cette base par modèle',
  'multirun.launcher.isolateRuns.label': 'Isoler les parcours',
  'multirun.launcher.agent.label': 'Agent',
  'multirun.launcher.agent.info': 'Agent utilisé pour toutes les exécutions. La valeur par défaut est votre agent configuré.',
  'multirun.launcher.setupCommands.label': 'Commandes de configuration',
  'multirun.launcher.setupCommands.loading': 'Chargement...',
  'multirun.launcher.setupCommands.commandPlaceholder': 'bun install',
  'multirun.launcher.setupCommands.removeCommandAria': 'Supprimer la commande',
  'multirun.launcher.setupCommands.addCommand': 'Ajouter une commande',
  'multirun.launcher.prompt.label': 'Prompt',
  'multirun.launcher.prompt.placeholder': 'Entrez le prompt à envoyer à tous les modèles...',
  'multirun.launcher.attachments.attach': 'Attacher',
  'multirun.launcher.attachments.tooltip': 'Mêmes fichiers envoyés à toutes les exécutions',
  'multirun.launcher.models.label': 'Modèles',
  'multirun.launcher.models.info': 'Sélectionnez les modèles 2-{max}. Le même modèle peut être ajouté plusieurs fois.',
  'multirun.launcher.toast.fileTooLarge': 'Le fichier "{fileName}" est trop volumineux (max 10 Mo)',
  'multirun.launcher.toast.attachFailed': 'Échec de la connexion de "{fileName}"',
  'multirun.launcher.toast.attachedSingle': 'Fichier {count} joint',
  'multirun.launcher.toast.attachedPlural': 'Fichiers {count} joints',
  'multirun.modelMultiSelect.actions.addModel': 'Ajouter un modèle',
  'multirun.modelMultiSelect.search.placeholder': 'Rechercher des modèles',
  'multirun.modelMultiSelect.search.noResults': 'Aucun modèle trouvé',
  'multirun.modelMultiSelect.sections.favorites': 'Favoris',
  'multirun.modelMultiSelect.sections.recent': 'Récents',
  'multirun.modelMultiSelect.variant.placeholder': 'Pensée',
  'multirun.modelMultiSelect.variant.default': 'Défaut',
  'multirun.modelMultiSelect.keyboard.hint': '↑↓ naviguer • Entrer sélectionner • Esc fermer',
  'multirun.modelMultiSelect.validation.minOnly': 'Sélectionnez au moins les modèles {min}.',
  'multirun.modelMultiSelect.validation.minToMax': 'Choisissez parmi les modèles {min} à {max}.',
  'multirun.agentSelector.placeholder': 'Sélectionnez un agent',
  'multirun.fusion.title': 'Exécuter la fusion',
  'multirun.fusion.description': 'Combinez les résultats multi-exécutions sélectionnés en une seule réponse plus solide.',
  'multirun.fusion.provider.placeholder': 'Fournisseur',
  'multirun.fusion.model.placeholder': 'Modèle',
  'multirun.fusion.sources.label': 'Sources ({count})',
  'multirun.fusion.actions.cancel': 'Annuler',
  'multirun.fusion.actions.start': 'Démarrer la fusion',
  'multirun.fusion.actions.starting': 'Démarrage...',
  'multirun.fusion.toast.noOutputs': 'Aucune sortie assistante trouvée pour fusionner.',
  'multirun.fusion.toast.failed': 'Échec du démarrage de la fusion.',
  'multirun.launcher.attachments.label': 'Fichiers',
  'multirun.launcher.actions.startWithRunCount': 'Démarrer ({count} s\'exécute)',
  'multirun.launcher.groups.addGroup': 'Ajouter un groupe d\'exécution',
  'multirun.launcher.groups.removeGroup': 'Supprimer le groupe',
  'multirun.launcher.groups.groupLabel': 'Groupe d\'exécution {index}',
  'multirun.launcher.groups.template.label': 'Modèle',
  'multirun.launcher.groups.template.placeholder': 'Sélectionnez un modèle...',
  'multirun.launcher.groups.template.custom': 'Prompt personnalisé',
  'multirun.launcher.groups.prompt.label': 'Prompt',
  'multirun.launcher.groups.prompt.placeholder': 'Entrez le prompt pour ce groupe...',
  'sessions.sidebar.header.actions.searchSessions': 'Sessions de recherche',
  'sessions.sidebar.header.actions.exitSelection': 'Quitter la sélection',
  'sessions.sidebar.header.actions.selectSessions': 'Sélectionnez des sessions',
  'sessions.sidebar.header.actions.sessionDisplayMode': 'Mode d\'affichage des sessions',
  'sessions.sidebar.header.displayMode.label': 'Mode d\'affichage',
  'sessions.sidebar.header.displayMode.default': 'Défaut',
  'sessions.sidebar.header.displayMode.minimal': 'Minimal',
  'sessions.sidebar.header.displayMode.showRecent': 'Afficher la section récente',
  'sessions.sidebar.header.displayMode.collapseAll': 'Tout réduire',
  'sessions.sidebar.header.displayMode.expandAll': 'Tout développer',
  'sessions.sidebar.header.search.matchCountSingle': 'Correspondance {count}',
  'sessions.sidebar.header.search.matchCountPlural': 'Correspondances {count}',
  'sessions.sidebar.header.search.escapeHint': 'Echap pour effacer',
  'sessions.sidebar.header.search.placeholder': 'Sessions de recherche...',
  'sessions.sidebar.header.search.clear': 'Effacer la recherche',
  'sessions.sidebar.footer.actions.settings': 'Paramètres',
  'sessions.sidebar.footer.actions.shortcuts': 'Raccourcis',
  'sessions.sidebar.footer.actions.aboutOpenChamber': 'À propos de OpenChamber',
  'sessions.sidebar.footer.actions.update': 'Mise à jour',
  'sessions.sidebar.empty.noSessions.title': 'Aucune session pour l\'instant',
  'sessions.sidebar.empty.noSessions.description': 'Créez votre première session pour commencer à coder.',
  'sessions.sidebar.empty.noMatches.title': 'Aucune session correspondante',
  'sessions.sidebar.empty.noMatches.description': 'Essayez un autre titre, branche, dossier ou chemin.',
  'sessions.sidebar.activity.recentTitle': 'récent',
  'sessions.switcher.openAria': 'Sélecteur de session ouvert',
  'sessions.switcher.empty': 'Aucune session récente',
  'sessions.switcher.draftTitle': 'Nouvelle session',
  'sessions.sidebar.updateCheck.errorTitle': 'Échec de la vérification des mises à jour',
  'sessions.sidebar.updateCheck.latestVersion': 'Vous êtes sur la dernière version',
  'sessions.sidebar.directory.errorAddProjectTitle': 'Échec de l\'ajout du projet',
  'sessions.sidebar.directory.errorAddProjectDescription': 'Veuillez sélectionner un répertoire valide.',
  'sessions.sidebar.directory.errorSelectDirectoryTitle': 'Échec de la sélection du répertoire',
  'sessions.sidebar.folder.newFolderName': 'Nouveau dossier',
  'sessions.sidebar.bulkActions.delete': 'Supprimer',
  'sessions.sidebar.bulkActions.archive': 'Archive',
  'sessions.sidebar.bulkActions.selectedCount': '{count} sélectionné',
  'sessions.sidebar.bulkActions.moveToFolder': 'Déplacer vers le dossier',
  'sessions.sidebar.bulkActions.deletedSingle': 'Session {count} supprimée',
  'sessions.sidebar.bulkActions.deletedPlural': 'Sessions {count} supprimées',
  'sessions.sidebar.bulkActions.failedDeleteSingle': 'Échec de la suppression de la session {count}',
  'sessions.sidebar.bulkActions.failedDeletePlural': 'Échec de la suppression des sessions {count}',
  'sessions.sidebar.bulkActions.archivedSingle': 'Session {count} archivée',
  'sessions.sidebar.bulkActions.archivedPlural': 'Sessions {count} archivées',
  'sessions.sidebar.bulkActions.failedArchiveSingle': 'Échec de l\'archivage de la session {count}',
  'sessions.sidebar.bulkActions.failedArchivePlural': 'Échec de l\'archivage des sessions {count}',
  'sessions.sidebar.folders.none': 'Aucun dossier pour l\'instant',
  'sessions.sidebar.folders.newFolderEllipsis': 'Nouveau dossier...',
  'sessions.sidebar.folders.removeFromFolder': 'Supprimer du dossier',
  'sessions.sidebar.folders.moveToFolder': 'Déplacer vers le dossier',
  'sessions.sidebar.project.actions.newWorktree': 'Nouveau worktree',
  'sessions.sidebar.project.actions.newWorktreeEllipsis': 'Nouveau worktree...',
  'sessions.sidebar.project.actions.projectMenu': 'Menu Projet',
  'sessions.sidebar.project.actions.newSession': 'Nouvelle session',
  'sessions.sidebar.project.actions.closeProject': 'Fermer le projet',
  'sessions.sidebar.project.actions.newDraftSession': 'Nouveau brouillon de session',
  'sessions.sidebar.session.menu.rename': 'Rebaptiser',
  'sessions.sidebar.session.rename.save': 'Enregistrer le nom de la session',
  'sessions.sidebar.session.rename.cancel': 'Annuler la session de changement de nom',
  'sessions.sidebar.session.menu.unpin': 'Désépingler la session',
  'sessions.sidebar.session.menu.pin': 'Session d\'épinglage',
  'sessions.sidebar.session.menu.share': 'Partager',
  'sessions.sidebar.session.menu.copied': 'Copié',
  'sessions.sidebar.session.menu.copyLink': 'Copier le lien',
  'sessions.sidebar.session.menu.unshare': 'Annuler le partage',
  'sessions.sidebar.session.menu.exportMarkdown': 'Exporter le Markdown',
  'sessions.sidebar.session.menu.runFusion': 'Exécuter la fusion',
  'sessions.sidebar.session.menu.openInSidePanel': 'Ouvrir dans le panneau latéral',
  'sessions.sidebar.session.actions.openInEditor': 'Ouvrir dans l\'éditeur',
  'sessions.sidebar.session.menu.betaBadge': 'bêta',
  'sessions.sidebar.session.menu.label': 'Menu des sessions',
  'sessions.sidebar.session.untitled': 'Session sans titre',
  'sessions.sidebar.session.export.nothingToExport': 'Rien à exporter',
  'sessions.sidebar.session.export.success': 'Session exportée',
  'sessions.sidebar.session.export.failedRevealPath': 'Impossible de révéler le chemin',
  'sessions.sidebar.session.export.untitledSubagent': 'Sous-agent sans titre',
  'sessions.sidebar.session.export.skippedSubtaskSingle': 'Session exportée, mais tâche de sous-agent {count} ignorée qui n\'a pas pu être chargée.',
  'sessions.sidebar.session.export.skippedSubtaskMany': 'Session exportée, mais tâches du sous-agent {count} ignorées qui n\'ont pas pu être chargées.',
  'sessions.sidebar.session.export.dialog.title': 'Exporter le Markdown',
  'sessions.sidebar.session.export.dialog.descriptionSingle': 'Cette session comporte une tâche de sous-agent {count}. L\'inclure dans l\'exportation ?',
  'sessions.sidebar.session.export.dialog.descriptionMany': 'Cette session comporte des tâches de sous-agent {count}. Les inclure dans l\'exportation ?',
  'sessions.sidebar.session.export.dialog.includeSubtasks': 'Inclure les tâches des sous-agents',
  'sessions.sidebar.session.export.dialog.confirm': 'Exporter',
  'sessions.sidebar.session.status.active': 'Session active',
  'sessions.sidebar.session.status.unread': 'Mises à jour non lues',
  'sessions.sidebar.session.status.pinned': 'Session épinglée',
  'sessions.sidebar.session.status.permissionRequired': 'Autorisation requise',
  'sessions.sidebar.session.subsessions.collapse': 'Réduire les sous-sessions',
  'sessions.sidebar.session.subsessions.expand': 'Développer les sous-sessions',
  'sessions.sidebar.dialogs.deleteSession.title': 'Supprimer la session ?',
  'sessions.sidebar.dialogs.archiveSession.title': 'Session d\'archivage ?',
  'sessions.sidebar.dialogs.deleteSession.withOneSubtask': '"{sessionTitle}" et sa sous-tâche {count} seront définitivement supprimées.',
  'sessions.sidebar.dialogs.deleteSession.withManySubtasks': '"{sessionTitle}" et ses sous-tâches {count} seront définitivement supprimées.',
  'sessions.sidebar.dialogs.archiveSession.withOneSubtask': '"{sessionTitle}" et sa sous-tâche {count} seront archivées.',
  'sessions.sidebar.dialogs.archiveSession.withManySubtasks': '"{sessionTitle}" et ses sous-tâches {count} seront archivées.',
  'sessions.sidebar.dialogs.deleteSession.single': '"{sessionTitle}" sera définitivement supprimé.',
  'sessions.sidebar.dialogs.archiveSession.single': '"{sessionTitle}" sera archivé.',
  'sessions.sidebar.dialogs.neverAsk': 'Ne demandez jamais',
  'sessions.sidebar.dialogs.cancel': 'Annuler',
  'sessions.sidebar.dialogs.deleteSession.titleAction': 'Supprimer la session',
  'sessions.sidebar.dialogs.deleteSessions.titleAction': 'Supprimer des sessions',
  'sessions.sidebar.dialogs.deleteSessions.title': 'Supprimer des sessions ?',
  'sessions.sidebar.dialogs.archiveSessions.title': 'Archiver des sessions ?',
  'sessions.sidebar.dialogs.deleteSessions.singleDescription': 'La session {count} sera définitivement supprimée.',
  'sessions.sidebar.dialogs.deleteSessions.pluralDescription': 'Les sessions {count} seront définitivement supprimées.',
  'sessions.sidebar.dialogs.archiveSessions.singleDescription': 'La session {count} sera archivée.',
  'sessions.sidebar.dialogs.archiveSessions.pluralDescription': 'Les sessions {count} seront archivées.',
  'sessions.sidebar.dialogs.deleteFolder.title': 'Supprimer le dossier ?',
  'sessions.sidebar.dialogs.deleteFolder.withOneSubfolder': '"{folderName}" sera supprimé avec le sous-dossier {count}. Les sessions à l’intérieur ne seront pas supprimées.',
  'sessions.sidebar.dialogs.deleteFolder.withManySubfolders': '"{folderName}" sera supprimé avec les sous-dossiers {count}. Les sessions à l’intérieur ne seront pas supprimées.',
  'sessions.sidebar.dialogs.deleteFolder.withContentsNoSubfolders': '"{folderName}" sera supprimé. Les sessions à l’intérieur ne seront pas supprimées.',
  'sessions.sidebar.dialogs.deleteFolder.single': '"{folderName}" sera définitivement supprimé.',
  'sessions.sidebar.dialogs.deleteResult.singleFailedToDelete': 'La session {count} n\'a pas pu être supprimée.',
  'sessions.sidebar.dialogs.deleteResult.manyFailedToDelete': 'Les sessions {count} n\'ont pas pu être supprimées.',
  'sessions.sidebar.dialogs.deleteResult.singleFailedToArchive': 'La session {count} n\'a pas pu être archivée.',
  'sessions.sidebar.dialogs.deleteResult.manyFailedToArchive': 'Les sessions {count} n\'ont pas pu être archivées.',
  'sessions.sidebar.dialogs.deleteResult.removedFromDate': 'Suppression de toutes les sessions de {dateLabel}.',
  'sessions.sidebar.dialogs.deleteResult.tryAgain': 'Veuillez réessayer dans un instant.',
  'sessions.sidebar.dialogs.worktreeDelete.descriptionNoLinked': 'Cela supprime le worktree sélectionné.',
  'sessions.sidebar.dialogs.worktreeDelete.descriptionOneLinked': 'Cela supprime le worktree sélectionné et archive la session liée {count}.',
  'sessions.sidebar.dialogs.worktreeDelete.descriptionManyLinked': 'Cela supprime le worktree sélectionné et archive les {count} sessions liées.',
  'sessions.sidebar.dialogs.sessionDelete.descriptionOne': 'Cette action supprime définitivement 1 session.',
  'sessions.sidebar.dialogs.sessionDelete.descriptionOneWithDate': 'Cette action supprime définitivement 1 session de {dateLabel}.',
  'sessions.sidebar.dialogs.sessionDelete.descriptionMany': 'Cette action supprime définitivement les sessions {count}.',
  'sessions.sidebar.dialogs.sessionDelete.descriptionManyWithDate': 'Cette action supprime définitivement les sessions {count} de {dateLabel}.',
  'sessions.sidebar.dialogs.sessionList.more': '+{count} plus',
  'sessions.sidebar.session.share.successTitle': 'Session partagée',
  'sessions.sidebar.session.share.successDescription': 'Vous pouvez copier le lien depuis le menu.',
  'sessions.sidebar.session.share.error': 'Impossible de partager la session',
  'sessions.sidebar.session.share.copyUrlError': 'Échec de la copie de URL',
  'sessions.sidebar.session.unshare.success': 'Session non partagée',
  'sessions.sidebar.session.unshare.error': 'Impossible d\'annuler le partage de session',
  'sessions.sidebar.session.delete.success': 'Session supprimée',
  'sessions.sidebar.session.delete.error': 'Échec de la suppression de la session',
  'sessions.sidebar.session.archive.success': 'Session archivée',
  'sessions.sidebar.session.archive.error': 'Échec de l\'archivage de la session',
  'sessions.sidebar.group.pr.checksPassed': 'Contrôles {success}/{total} réussis',
  'sessions.sidebar.group.pr.failingCount': 'Échec de {count}',
  'sessions.sidebar.group.pr.pendingCount': '{count} en attente',
  'sessions.sidebar.group.pr.conflictsOrBlocked': 'Conflits ou blocage',
  'sessions.sidebar.group.pr.mergeable': 'Fusionnable',
  'sessions.sidebar.group.pr.mergeState': 'État de fusion : {state}',
  'sessions.sidebar.group.pr.status.merged': 'Fusionné',
  'sessions.sidebar.group.pr.status.readyToMerge': 'Prêt à fusionner',
  'sessions.sidebar.group.pr.status.open': 'PR ouverte',
  'sessions.sidebar.group.pr.status.mergeConflicts': 'Fusionner les conflits',
  'sessions.sidebar.group.pr.status.mergeBlocked': 'Fusion bloquée',
  'sessions.sidebar.group.pr.status.draft': 'PR en brouillon',
  'sessions.sidebar.group.pr.status.closed': 'Fermé',
  'sessions.sidebar.group.empty.noArchivedSessions': 'Aucune session archivée pour l\'instant.',
  'sessions.sidebar.group.empty.noSessionsInWorkspace': 'Aucune session dans cet espace de travail pour le moment.',
  'sessions.sidebar.group.showMoreSingle': 'Afficher plus de session sur {count}',
  'sessions.sidebar.group.showMorePlural': 'Afficher {count} plus de sessions',
  'sessions.sidebar.group.showFewer': 'Afficher moins de sessions',
  'sessions.sidebar.group.expandAria': 'Développer {label}',
  'sessions.sidebar.group.collapseAria': 'Réduire {label}',
  'sessions.sidebar.group.actions.deleteArchivedInGroupAria': 'Supprimer les sessions archivées dans {label}',
  'sessions.sidebar.group.actions.deleteArchivedSessions': 'Supprimer les sessions archivées',
  'sessions.sidebar.group.actions.deleteGroupAria': 'Supprimer {label}',
  'sessions.sidebar.group.actions.deleteWorktree': 'Supprimer ce worktree',
  'sessions.sidebar.group.actions.newDraftInGroupAria': 'Nouvelle session de brouillon dans {label}',
  'sessions.sidebar.grouping.projectRoot': 'racine du projet',
  'sessions.sidebar.grouping.projectRootWithBranch': 'racine du projet : {branch}',
  'sessions.sidebar.grouping.archived': 'archivé',
  'sessions.sidebar.grouping.archivedDescription': 'Sessions archivées et non attribuées',
  'sessions.sidebar.folderItem.expandAria': 'Développer le dossier {folderName}',
  'sessions.sidebar.folderItem.collapseAria': 'Réduire le dossier {folderName}',
  'sessions.sidebar.folderItem.namePlaceholder': 'Nom du dossier',
  'sessions.sidebar.folderItem.newSessionAria': 'Nouvelle session dans {folderName}',
  'sessions.sidebar.folderItem.newSubfolderAria': 'Nouveau sous-dossier dans {folderName}',
  'sessions.sidebar.folderItem.newSubfolder': 'Nouveau sous-dossier',
  'sessions.sidebar.folderItem.renameAria': 'Renommer le dossier {folderName}',
  'sessions.sidebar.folderItem.deleteArchivedInFolderAria': 'Supprimer les sessions archivées dans le dossier {folderName}',
  'sessions.sidebar.folderItem.deleteFolderAria': 'Supprimer le dossier {folderName}',
  'sessions.sidebar.folderItem.emptyFolder': 'Dossier vide',
  'sessions.sidebar.sessionDialogs.ok': 'D\'ACCORD',
  'sessions.sidebar.sessionDialogs.linkedSessionSingle': 'Session liée',
  'sessions.sidebar.sessionDialogs.linkedSessionPlural': 'Sessions liées',
  'sessions.sidebar.sessionDialogs.delete.note': 'Les répertoires Worktree restent intacts. Les sous-sessions liées aux sessions sélectionnées seront également supprimées.',
  'sessions.sidebar.sessionDialogs.directory.errorSelectTitle': 'Échec de la sélection du répertoire',
  'sessions.sidebar.sessionDialogs.directory.errorOpenTitle': 'Échec de l\'ouverture du répertoire',
  'sessions.sidebar.sessionDialogs.directory.errorOpenDescription': 'Desktop n\'a pas pu accorder l\'accès aux fichiers.',
  'sessions.sidebar.sessionDialogs.directory.errorAddProjectTitle': 'Échec de l\'ajout du projet',
  'sessions.sidebar.sessionDialogs.directory.errorAddProjectDescription': 'Veuillez sélectionner un chemin de répertoire valide.',
  'sessions.sidebar.sessionDialogs.worktree.errorRemoveTitle': 'Échec de la suppression du worktree',
  'sessions.sidebar.sessionDialogs.worktree.removedTitle': 'Worktree supprimé',
  'sessions.sidebar.sessionDialogs.worktree.removed': 'Worktree supprimé.',
  'sessions.sidebar.sessionDialogs.worktree.removedWithRemote': 'Worktree et branche du dépôt distant supprimés.',
  'sessions.sidebar.sessionDialogs.worktree.attachedArchived': 'Worktree ci-joint archivé.',
  'sessions.sidebar.sessionDialogs.worktree.attachedArchivedPlural': 'Worktrees joints archivés.',
  'sessions.sidebar.sessionDialogs.worktree.archivedAndRemoteRemoved': 'Worktrees archivés et branches du dépôt distant supprimées.',
  'sessions.sidebar.sessionDialogs.worktree.label': 'Worktree',
  'sessions.sidebar.sessionDialogs.worktree.pathUnavailable': 'Chemin du worktree indisponible.',
  'sessions.sidebar.sessionDialogs.worktree.uncommittedWarning': 'Les modifications non validées seront ignorées.',
  'sessions.sidebar.sessionDialogs.actions.deleteRemoteBranch': 'Supprimer la branche du dépôt distant',
  'sessions.sidebar.sessionDialogs.actions.remoteBranchInfoUnavailable': 'Informations sur la branche du dépôt distant indisponibles',
  'sessions.sidebar.sessionDialogs.actions.deleteLocalBranch': 'Supprimer la branche locale',
  'sessions.sidebar.sessionDialogs.actions.deleting': 'Suppression…',
  'sessions.sidebar.sessionDialogs.actions.deleteWorktree': 'Supprimer le worktree',
  'gitView.branch.branchToMergeInto': 'Branche à fusionner avec {branch}',
  'gitView.branch.branchToRebaseOnto': 'Branche sur laquelle rebaser',
  'gitView.branch.create': 'Créer une nouvelle branche...',
  'gitView.branch.currentBadge': 'Actuel',
  'gitView.branch.currentBranchFallback': 'branche actuelle',
  'gitView.branch.currentBranchTooltip': 'Branche actuelle',
  'gitView.branch.detachedHead': 'HEAD détaché',
  'gitView.branch.dialogDescriptionPrefix': 'Choisissez comment intégrer une autre branche',
  'gitView.branch.empty': 'Aucune branche trouvée.',
  'gitView.branch.localBranches': 'Branches locales',
  'gitView.branch.mergeDescription': 'Créez un commit de fusion et conservez l’historique des branches.',
  'gitView.branch.mergeRebase': 'Fusionner/Rebase',
  'gitView.branch.mergeRebaseTooltip': 'Mettez à jour cette branche depuis une autre branche.',
  'gitView.branch.mergingInProgress': 'Fusion en cours',
  'gitView.branch.namePlaceholder': 'Nom de la branche',
  'gitView.branch.newBranchPlaceholder': 'Nouveau nom de branche',
  'gitView.branch.noLocalBranches': 'Aucune branche locale',
  'gitView.branch.noRemoteBranches': 'Aucune branche du dépôt distant',
  'gitView.branch.operation': 'Opération',
  'gitView.branch.operationCompleted': 'Opération terminée',
  'gitView.branch.operationFailed': 'Échec de l\'opération',
  'gitView.branch.pushToPrefix': 'Appuyer pour préfixer',
  'gitView.branch.pushToSuffix': 'Appuyer pour suffixer',
  'gitView.branch.rebaseDescription': 'Rejouez vos commits au-dessus de la branche sélectionnée.',
  'gitView.branch.rebasingInProgress': 'Rebasage en cours',
  'gitView.branch.remoteBranches': 'Branches du dépôt distant',
  'gitView.branch.renameTitle': 'Renommer la branche',
  'gitView.branch.renameSave': 'Enregistrer le nom de la branche',
  'gitView.branch.renameSaving': 'Enregistrer le nom de la branche',
  'gitView.branch.renameCancel': 'Annuler le changement de nom de la branche',
  'gitView.branch.searchPlaceholder': 'Rechercher des branches...',
  'gitView.branch.selectBranch': 'Sélectionnez une branche',
  'gitView.branch.summaryMergeInfix': 'dans',
  'gitView.branch.summaryMergePrefix': 'Cela fusionnera',
  'gitView.branch.summaryRebaseInfix': 'sur',
  'gitView.branch.summaryRebasePrefix': 'Cela va rebaser',
  'gitView.branch.updateDescriptionPrefix': 'Apportez les dernières modifications dans',
  'gitView.branch.updateTitle': 'Mettre à jour la branche',
  'gitView.changes.changedFilesAria': 'Fichiers modifiés',
  'gitView.changes.clearSelectionAria': 'Effacer la sélection de fichiers',
  'gitView.changes.collapseDirectoryAria': 'Réduire le répertoire',
  'gitView.changes.expandDirectoryAria': 'Développer le répertoire',
  'gitView.changes.revertAll': 'Tout rétablir',
  'gitView.changes.revertAllDescriptionPlural': 'Rétablir toutes les modifications sélectionnées ?',
  'gitView.changes.revertAllDescriptionSingle': 'Rétablir la modification sélectionnée ?',
  'gitView.changes.revertAllDialogTitle': 'Annuler toutes les modifications ?',
  'gitView.changes.revertFileAria': 'Rétablir le fichier',
  'gitView.changes.revertFileTooltip': 'Annuler les modifications',
  'gitView.changes.reverting': 'Revenant...',
  'gitView.changes.selectAllAria': 'Sélectionnez tous les fichiers',
  'gitView.changes.selectFileAria': 'Sélectionner le fichier',
  'gitView.changes.stagedTitle': 'Mise en scène',
  'gitView.changes.resizeSplitAria': 'Redimensionner les modifications planifiées et non planifiées',
  'gitView.changes.stageAllAria': 'Organiser tous les changements',
  'gitView.changes.stageDirectoryAria': 'Ajoutez à l’index tous les changements dans {path}',
  'gitView.changes.stageFileAria': 'Ajouter à l’index {path}',
  'gitView.changes.title': 'Changements',
  'gitView.changes.toggleDirectorySelectionAria': 'Basculer la sélection du répertoire',
  'gitView.changes.unstageAllAria': 'Annuler toutes les modifications',
  'gitView.changes.unstageDirectoryAria': 'Annuler toutes les modifications dans {path}',
  'gitView.changes.unstageFileAria': 'Retirer de l’index {path}',
  'gitView.commit.addGitmoji': 'Ajouter un gitmoji',
  'gitView.commit.aiHighlights.insertAria': 'Insérer',
  'gitView.commit.aiHighlights.insertTooltip': 'Insérer une info-bulle',
  'gitView.commit.aiHighlights.title': 'Points forts',
  'gitView.commit.commit': 'Commettre',
  'gitView.commit.commitAria': 'Valider le commit',
  'gitView.commit.committing': 'S\'engager...',
  'gitView.commit.generate': 'Générer',
  'gitView.commit.generateAria': 'Générer un message de commit',
  'gitView.commit.messagePlaceholder': 'Message de commit',
  'gitView.commit.push': 'Valider et synchroniser',
  'gitView.commit.pushAria': 'Valider et synchroniser',
  'gitView.commit.pushing': 'Synchronisation...',
  'gitView.commit.selectFilesHint': 'Sélectionnez les fichiers dans Modifications pour activer le commit.',
  'gitView.commit.stageFilesHint': 'Ajoutez des fichiers à l’index pour activer le commit.',
  'gitView.commit.title': 'Commettre',
  'gitView.common.cancel': 'Annuler',
  'gitView.common.close': 'Fermer',
  'gitView.common.done': 'Fait',
  'gitView.common.processing': 'Traitement...',
  'gitView.common.reset': 'Réinitialiser',
  'gitView.conflict.abortOperation': 'Abandonner l’opération',
  'gitView.conflict.conflictedFiles': 'Fichiers en conflit :',
  'gitView.conflict.continueLater': 'Continuer plus tard',
  'gitView.conflict.detectedDescription': 'Un conflit Git a été détecté.',
  'gitView.conflict.detectedTitle': 'Conflit détecté',
  'gitView.conflict.errorLoadingDetails': 'Erreur de chargement des détails',
  'gitView.conflict.headInfo': 'Informations HEAD :',
  'gitView.conflict.loadFailed': 'Échec du chargement',
  'gitView.conflict.loading': 'Chargement des détails du conflit...',
  'gitView.conflict.noActiveSession': 'Aucune session active',
  'gitView.conflict.noActiveSessionDescription': 'Ouvrez une session active pour continuer.',
  'gitView.conflict.resolveCurrentSession': 'Résoudre dans la session en cours',
  'gitView.conflict.resolveNewSession': 'Résoudre dans une nouvelle session',
  'gitView.empty.cleanDescription': 'Tous les changements ont été validés',
  'gitView.empty.cleanTitle': 'Worktree sans modifications',
  'gitView.empty.pullBehindPlural': 'Extraire les commits {count}',
  'gitView.empty.pullBehindSingle': 'Extraire le commit {count}',
  'gitView.header.identityTooltip': 'Identité Git',
  'gitView.header.noIdentity': 'Aucune identité',
  'gitView.header.noProfiles': 'Aucun profil disponible à appliquer.',
  'gitView.header.repositoryViews': 'Vues du dépôt',
  'gitView.header.removeRemoteAria': 'Supprimer le remote',
  'gitView.header.removeRemoteTitle': 'Supprimer le remote',
  'gitView.header.upstreamSynced': 'synchronisé',
  'gitView.header.upstreamTooltip': 'Par rapport au {target}.',
  'gitView.header.upstreamTooltipTracking': 'Par rapport au {target}. Les badges de synchronisation principaux reflètent toujours {tracking}.',
  'gitView.history.actions.cancelButton': 'Annuler',
  'gitView.history.actions.checkout': 'Basculer',
  'gitView.history.actions.checkoutConfirm': 'Basculer sur ce commit en HEAD détaché ?',
  'gitView.history.actions.cherryPick': 'Cherry-pick',
  'gitView.history.actions.cherryPickConfirm': 'Cherry-pick ce commit sur la branche actuelle ?',
  'gitView.history.actions.conflictToastDescription': 'Conflits dans : {files}. Résolvez manuellement et validez, ou abandonnez avec git Cherry-pick/revert --abort.',
  'gitView.history.actions.conflictToastTitle': 'Conflit',
  'gitView.history.actions.confirmButton': 'Confirmer',
  'gitView.history.actions.createBranch': 'Créer une branche ici',
  'gitView.history.actions.createBranchConfirm': 'Créer',
  'gitView.history.actions.createBranchPlaceholder': 'Nom de la branche',
  'gitView.history.actions.detachedHead': 'Checkout (HEAD détaché)',
  'gitView.history.actions.merge': 'Fusionner avec le courant',
  'gitView.history.actions.mergeConfirm': 'Fusionner ce commit dans la branche actuelle ?',
  'gitView.history.actions.rebase': 'Rebase sur ce commit',
  'gitView.history.actions.rebaseConfirm': 'Rebaser la branche actuelle sur ce commit ?',
  'gitView.history.actions.reset': 'Réinitialiser...',
  'gitView.history.actions.resetHard': 'Hard — annuler toutes les modifications',
  'gitView.history.actions.resetHardConfirm': 'Réinitialisation matérielle - HEAD se déplace, toutes les modifications non validées sont définitivement supprimées.',
  'gitView.history.actions.resetHardConfirmButton': 'Ignorer les modifications',
  'gitView.history.actions.resetMixed': 'Mixte – modifications hors index',
  'gitView.history.actions.resetMixedConfirm': 'Réinitialisation mixte - HEAD bouge, change hors index.',
  'gitView.history.actions.resetSoft': 'Soft — conserver l\'index',
  'gitView.history.actions.resetSoftConfirm': 'Réinitialisation logicielle - HEAD se déplace, modifications dans l’index préservées.',
  'gitView.history.actions.revert': 'Revenir',
  'gitView.history.actions.revertConfirm': 'Organiser un retour à ce commit ?',
  'gitView.history.binary': 'Binaire',
  'gitView.history.binaryNoDiff': 'Fichier binaire — aucune différence disponible',
  'gitView.history.commitsPlaceholder': 'Rechercher des commits',
  'gitView.history.copySha': 'Copier SHA',
  'gitView.history.diffError': 'Échec du chargement du diff. Cliquez pour réessayer.',
  'gitView.history.largeDiffDescription': 'Le rendu peut être lent. Vous pouvez toujours voir la différence en cliquant ci-dessous.',
  'gitView.history.largeDiffTitle': 'Grand diff ({count} a modifié les lignes)',
  'gitView.history.loadingDiff': 'Chargement du différentiel...',
  'gitView.history.loadingFiles': 'Chargement des fichiers...',
  'gitView.history.loadMore': 'Charger plus',
  'gitView.history.loadingMore': 'Chargement...',
  'gitView.history.logSize100': 'Taille du journal 100',
  'gitView.history.logSize25': 'Taille du journal25',
  'gitView.history.logSize50': 'Taille du journal50',
  'gitView.history.noCommits': 'Aucun commit trouvé',
  'gitView.history.noFiles': 'Aucun fichier',
  'gitView.history.renamedNoDiff': 'Fichier renommé – diff non pris en charge',
  'gitView.history.renderDiffAnyway': 'Rendre quand même',
  'gitView.history.title': 'Historique',
  'gitView.graph.title': 'Graphique',
  'gitView.integrate.checking': 'Vérification…',
  'gitView.integrate.cherryPickAbortedToast': 'Cherry-pick annulé',
  'gitView.integrate.cherryPickConflictDescription': 'Des conflits sont apparus pendant le Cherry-pick.',
  'gitView.integrate.cherryPickConflictToast': 'Conflits pendant le Cherry-pick',
  'gitView.integrate.cherryPickContinueFailedToast': 'Impossible de continuer le Cherry-pick',
  'gitView.integrate.cherryPickFinishedToast': 'Cherry-pick terminé',
  'gitView.integrate.commitsMovedDescriptionPlural': '{count} commits déplacés',
  'gitView.integrate.commitsMovedDescriptionSingle': '1 commit déplacé',
  'gitView.integrate.commitsMovedToast': 'Commits déplacés',
  'gitView.integrate.commitsToMove': 'Commits à déplacer',
  'gitView.integrate.conflictsInFiles': 'Conflits dans les fichiers',
  'gitView.integrate.currentCommit': 'Commit actuel',
  'gitView.integrate.currentSession': 'Session en cours',
  'gitView.integrate.failedToMoveToast': 'Échec du déplacement des commits',
  'gitView.integrate.moreFiles': 'Plus de fichiers',
  'gitView.integrate.move': 'Se déplacer',
  'gitView.integrate.moveCommits': 'Déplacer les commits',
  'gitView.integrate.moving': 'Déplacement…',
  'gitView.integrate.newSession': 'Nouvelle session',
  'gitView.integrate.noActiveSession': 'Aucune session active',
  'gitView.integrate.noActiveSessionDescription': 'Ouvrez une session active pour déplacer des commits.',
  'gitView.integrate.noCommitsToMove': 'Aucun commit à déplacer.',
  'gitView.integrate.noCommitsToMoveToast': 'Aucun commit à déplacer',
  'gitView.integrate.previewUnavailable': 'Aperçu indisponible',
  'gitView.integrate.showAll': 'Afficher tout',
  'gitView.integrate.showLess': 'Afficher moins',
  'gitView.integrate.showingFirstCommits': 'Affichage des premiers commits',
  'gitView.integrate.target': 'Cible',
  'gitView.integrate.title': 'Réintégrer les commits',
  'gitView.integrate.toMoveCount': 'Nombre de commits à déplacer',
  'gitView.operation.abort': 'Avorter',
  'gitView.operation.continue': 'Continuer',
  'gitView.operation.inProgressTitle': '{operation} en cours',
  'gitView.operation.merge': 'Fusionner',
  'gitView.operation.mergeInProgressWithHead': 'Fusion de {head}',
  'gitView.operation.mergingMessage': 'Fusion : {message}',
  'gitView.operation.rebase': 'Rebase',
  'gitView.operation.rebaseInProgress': 'Rebase en cours',
  'gitView.operation.rebasingOnto': 'Rebaser {headName} sur {onto}',
  'gitView.operation.resolveConflictsHint': 'Résolvez les conflits, puis poursuivez l\'opération.',
  'gitView.operation.resolveWithAi': 'Résoudre avec l\'IA',
  'gitView.stash.confirmButton': 'Confirmer',
  'gitView.stash.description': 'Des modifications locales doivent être mises en stash pour continuer.',
  'gitView.stash.mergeWith': 'Fusionner avec',
  'gitView.stash.rebaseOnto': 'Rebase sur',
  'gitView.stash.restoreAfterOperation': 'Restaurer après l\'opération',
  'gitView.stash.restoreAria': 'Restaurer le stash',
  'gitView.stash.stepRestore': 'Restaurez vos modifications cachées',
  'gitView.stash.stepStash': 'Cachez vos modifications non validées',
  'gitView.stash.thisWill': 'Cela va :',
  'gitView.stash.title': 'Modifications non validées',
  'gitView.stashes.actions.apply': 'Appliquer',
  'gitView.stashes.actions.drop': 'Drop',
  'gitView.stashes.actions.pop': 'Pop',
  'gitView.stashes.actions.stashCurrent': 'Mettre les modifications actuelles en stash',
  'gitView.stashes.actions.stashCurrentWithCount': 'Cacher les fichiers {count}',
  'gitView.stashes.confirm.drop': 'Supprimer {ref} ?',
  'gitView.stashes.description': 'Enregistrez, restaurez et nettoyez les stashes Git pour ce dépôt.',
  'gitView.stashes.empty.list': 'Aucun stash pour l\'instant.',
  'gitView.stashes.empty.search': 'Aucun stash correspondant.',
  'gitView.stashes.includeUntrackedHint': 'Les fichiers non suivis sont inclus automatiquement.',
  'gitView.stashes.fileCount': 'Fichiers {count}',
  'gitView.stashes.fileCountLoading': 'compter les fichiers...',
  'gitView.stashes.itemNumber': '#{number}',
  'gitView.stashes.latestLabel': 'Dernier',
  'gitView.stashes.messagePlaceholder': 'Nom du stash',
  'gitView.stashes.searchPlaceholder': 'Rechercher des stashes',
  'gitView.stashes.title': 'Stashes',
  'gitView.stashes.toast.applyFailed': 'Échec de l\'application du cache',
  'gitView.stashes.toast.applySuccess': 'Stash appliqué',
  'gitView.stashes.toast.createFailed': 'Échec de la sauvegarde des modifications',
  'gitView.stashes.toast.created': 'Modifications cachées',
  'gitView.stashes.toast.dropFailed': 'Échec de la suppression du stash',
  'gitView.stashes.toast.dropSuccess': 'Stash supprimé',
  'gitView.stashes.toast.loadFailed': 'Échec du chargement des stashes',
  'gitView.stashes.toast.noChanges': 'Aucune modification locale à stocker',
  'gitView.stashes.toast.popFailed': 'Échec du pop du stash',
  'gitView.stashes.toast.popSuccess': 'Le stash a été pop',
  'gitView.stashes.untitled': 'Stash sans titre',
  'gitView.sync.fetch': 'Aller chercher',
  'gitView.sync.fetchFromRemote': 'Récupérer depuis {name}',
  'gitView.sync.fetchTooltip': 'Récupérer à distance',
  'gitView.sync.commitOrStashTooltip': 'Validez ou cachez vos modifications avant la synchronisation',
  'gitView.sync.moreActionsAria': 'Plus d\'actions de synchronisation',
  'gitView.sync.noRemoteTooltip': 'Aucun dépôt distant n’est configuré',
  'gitView.sync.pull': 'Tirer',
  'gitView.sync.pullTooltip': 'Extraire les modifications',
  'gitView.sync.pullTooltipBehind': 'Tirer les modifications ({count} derrière)',
  'gitView.sync.push': 'Pousser',
  'gitView.sync.pushTooltip': 'Pousser les changements',
  'gitView.sync.pushTooltipAhead': 'Pousser les modifications ({count} en avance)',
  'gitView.sync.sync': 'synchroniser',
  'gitView.sync.syncChanges': 'Synchroniser les modifications',
  'gitView.sync.syncChangesTooltip': 'Modifications de synchronisation ({behind} vers le bas, {ahead} vers le haut)',
  'gitView.sync.syncChangesWithCounts': 'Modifications de synchronisation {behind}↓ {ahead}↑',
  'gitView.sync.syncCounts': '{behind}↓ {ahead}↑',
  'gitView.branch.actionsUnavailable': 'Actions de branchement indisponibles dans cet état du dépôt',
  'gitView.conflict.noDetailsAvailable': 'Aucun détail de conflit disponible',
  'gitView.empty.notGitRepository': 'Ce répertoire n\'est pas un dépôt Git',
  'gitView.empty.notGitRepositoryDescription': 'Initialisez Git dans ce répertoire ou ouvrez un dépôt.',
  'gitView.empty.selectSessionOrDirectory': 'Sélectionnez une session ou un répertoire pour afficher l\'état de Git',
  'gitView.empty.worktreeFeaturesUnavailable': 'Les fonctionnalités Worktree ne sont pas disponibles dans ce mode d’espace de travail.',
  'gitView.empty.worktreeSetupDescription': 'Termine la configuration du worktree et prépare l\'état du dépôt.',
  'gitView.empty.worktreeSetupInProgress': 'Configuration de worktree en cours',
  'gitView.gitmoji.empty': 'Aucun gitmoji trouvé',
  'gitView.gitmoji.searchPlaceholder': 'Rechercher des gitmoji...',
  'gitView.gitmoji.title': 'Insérer un gitmoji',
  'gitView.history.dialogDescription': 'Parcourez les commits récents et inspectez les fichiers modifiés.',
  'gitView.loading.checkingRepository': 'Vérification du dépôt...',
  'gitView.loading.loading': 'Chargement...',
  'gitView.pr.actions.add': 'Ajouter',
  'gitView.pr.actions.cancelEditing': 'Annuler la modification',
  'gitView.pr.actions.cancelEditingAria': 'Annuler la modification des PR',
  'gitView.pr.actions.createPr': 'Créer une PR',
  'gitView.pr.actions.edit': 'Modifier',
  'gitView.pr.actions.editPr': 'Modifier la PR',
  'gitView.pr.actions.editPrAria': 'Modifier la PR',
  'gitView.pr.actions.hide': 'Cacher',
  'gitView.pr.actions.markReady': 'Marquez prêt',
  'gitView.pr.actions.markReadyAria': 'Marquer la demande d\'extraction comme prête à être examinée',
  'gitView.pr.actions.mergePr': 'Fusionner la PR',
  'gitView.pr.actions.mergePrAria': 'Fusionner la PR',
  'gitView.pr.actions.openChecks': 'Chèques ouverts',
  'gitView.pr.actions.openChecksAria': 'Ouvrir les chèques échoués',
  'gitView.pr.actions.openComments': 'Commentaires ouverts',
  'gitView.pr.actions.openCommentsAria': 'Ouvrir les commentaires de la PR',
  'gitView.pr.actions.openOnGitHub': 'Ouvert sur GitHub',
  'gitView.pr.actions.openOnGitHubAria': 'Ouvrir la PR sur GitHub',
  'gitView.pr.actions.openSettings': 'Ouvrir les paramètres',
  'gitView.pr.actions.repo': 'Dépôt',
  'gitView.pr.actions.resolveFailedChecks': 'Résoudre les contrôles échoués',
  'gitView.pr.actions.resolveFailedChecksAria': 'Envoyer les chèques échoués à l\'agent',
  'gitView.pr.actions.savePr': 'Enregistrer la PR',
  'gitView.pr.actions.savePrAria': 'Enregistrer les modifications de la PR',
  'gitView.pr.actions.sendCommentToAgent': 'Envoyer le commentaire à l\'agent',
  'gitView.pr.actions.sendCommentToAgentAria': 'Envoyer ce commentaire à l\'agent',
  'gitView.pr.actions.sendToAgent': 'Envoyer à l\'agent',
  'gitView.pr.actions.shareComments': 'Partager les commentaires',
  'gitView.pr.actions.shareCommentsAria': 'Envoyer les commentaires de la PR à l\'agent',
  'gitView.pr.actions.toggleDraftAria': 'Basculer l\'état de brouillon',
  'gitView.pr.actions.refresh': 'Actualiser le statut PR',
  'gitView.pr.actions.refreshAria': 'Actualiser l\'état de la demande d\'extraction',
  'gitView.pr.additionalContext.added': 'Ajouté',
  'gitView.pr.additionalContext.hint': 'Ajoutez un contexte supplémentaire pour une meilleure qualité d’évaluation.',
  'gitView.pr.additionalContext.optional': 'Facultatif',
  'gitView.pr.additionalContext.title': 'Contexte supplémentaire',
  'gitView.pr.checkDetails.empty': 'Aucun détail de chèque disponible',
  'gitView.pr.checkDetails.title': 'Détails de la vérification ayant échoué',
  'gitView.pr.checkingStatus': 'Vérification de l\'état de la PR...',
  'gitView.pr.checks.label': 'chèques',
  'gitView.pr.checks.completedLabel': 'Complété',
  'gitView.pr.checks.conclusionLabel': 'Conclusion',
  'gitView.pr.checks.startedLabel': 'Commencé',
  'gitView.pr.checks.statusLabel': 'Statut',
  'gitView.pr.checks.stepLabel': 'Étape',
  'gitView.pr.checks.steps': 'Mesures',
  'gitView.pr.comments.empty': 'Aucun commentaire trouvé',
  'gitView.pr.comments.generalContext': 'Commentaire général',
  'gitView.pr.comments.reviewContext': 'Revoir le commentaire',
  'gitView.pr.comments.title': 'Commentaires',
  'gitView.pr.comments.unknownAuthor': 'Auteur inconnu',
  'gitView.pr.createTitle': 'Créer une PR',
  'gitView.pr.draftMustBeReady': 'Le brouillon de PR doit être marqué comme prêt avant la fusion.',
  'gitView.pr.field.baseBranch': 'Branche de base',
  'gitView.pr.field.description': 'Description',
  'gitView.pr.field.draft': 'Brouillon',
  'gitView.pr.field.title': 'Titre',
  'gitView.pr.githubNotConnected': 'GitHub n\'est pas connecté',
  'gitView.pr.loadingDescription': 'Chargement de la description de la PR...',
  'gitView.pr.mergeMethod.merge': 'Créer un commit de fusion',
  'gitView.pr.mergeMethod.rebase': 'Rebase et fusionner',
  'gitView.pr.mergeMethod.squash': 'Écraser et fusionner',
  'gitView.pr.noDescription': 'Aucune description',
  'gitView.pr.noMergePermission': 'Vous n\'êtes pas autorisé à fusionner cette demande d\'extraction.',
  'gitView.pr.notMergeable': 'Non fusionnable',
  'gitView.pr.numberLabel': 'PR #{number}',
  'gitView.pr.placeholder.additionalContext': 'Toute contrainte, note de déploiement ou contexte du réviseur...',
  'gitView.pr.placeholder.description': 'Décrivez le changement...',
  'gitView.pr.placeholder.main': 'Résumez votre PR',
  'gitView.pr.placeholder.selectBaseBranch': 'Sélectionnez la branche de base',
  'gitView.pr.placeholder.title': 'Titre de la PR',
  'gitView.pr.placeholder.whatChanged': 'Qu\'est-ce qui a changé et pourquoi ?',
  'gitView.pr.statusUnavailable': 'Statut PR indisponible',
  'gitView.pr.toast.baseBranchRequired': 'Sélectionnez une branche de base',
  'gitView.pr.toast.baseMustDifferFromHead': 'La branche de base doit différer de la branche actuelle',
  'gitView.pr.toast.createPrFailed': 'Échec de la création de la PR',
  'gitView.pr.toast.generateDescriptionFailed': 'Échec de la génération de la description de la PR',
  'gitView.pr.toast.githubApiUnavailable': 'GitHub API n\'est pas disponible',
  'gitView.pr.toast.loadCheckDetailsFailed': 'Échec du chargement des détails du chèque',
  'gitView.pr.toast.loadChecksFailed': 'Échec du chargement des vérifications de la PR',
  'gitView.pr.toast.loadCommentsFailed': 'Échec du chargement des commentaires',
  'gitView.pr.toast.loadPrCommentsFailed': 'Échec du chargement des commentaires de la PR',
  'gitView.pr.toast.markReadyFailed': 'Impossible de marquer la PR comme prête',
  'gitView.pr.toast.markedReady': 'PR marquée comme prête pour relecture',
  'gitView.pr.toast.mergeFailed': 'Échec de la fusion de la PR',
  'gitView.pr.toast.noActiveSession': 'Aucune session de chat active',
  'gitView.pr.toast.noActiveSessionDescription': 'Ouvrez ou créez une session de discussion pour envoyer du contexte à un agent.',
  'gitView.pr.toast.noFailedChecks': 'Aucun chèque échoué trouvé',
  'gitView.pr.toast.noModelSelected': 'Sélectionnez d\'abord un modèle',
  'gitView.pr.toast.noPrComments': 'Aucun commentaire de PR trouvé',
  'gitView.pr.toast.prCreated': 'PR créée',
  'gitView.pr.toast.prMerged': 'PR fusionnée',
  'gitView.pr.toast.prNotMerged': 'La PR n\'a pas été fusionnée',
  'gitView.pr.toast.prUpdated': 'PR mise à jour',
  'gitView.pr.toast.sendMessageFailed': 'Échec de l\'envoi du message à l\'agent',
  'gitView.pr.toast.titleRequired': 'Le titre est requis',
  'gitView.pr.toast.updatePrFailed': 'Échec de la mise à jour de la PR',
  'gitView.pullRequest.createHint': 'Créez et gérez les PR depuis cette branche.',
  'gitView.pullRequest.availableOnFeatureBranches': 'Disponible lorsque la branche actuelle peut ouvrir une PR.',
  'gitView.pullRequest.title': 'PR',
  'gitView.tabs.commit': 'Commettre',
  'gitView.tabs.pr': 'PR',
  'gitView.tabs.update': 'Mise à jour',
  'gitView.tabs.worktree': 'Worktree',
  'gitView.toast.abortOperationFailed': 'Échec de l\'annulation de l\'opération',
  'gitView.toast.appliedIdentity': 'Identité appliquée : {name}',
  'gitView.toast.applyIdentityFailed': 'Échec de l\'application de l\'identité',
  'gitView.toast.branchCreatedLocally': 'Branche créée localement, mais n\'a pas pu être configurée en amont.',
  'gitView.toast.cannotCheckout': 'Impossible de basculer sur la branche : {reason}',
  'gitView.toast.cannotCreateBranch': 'Impossible de créer une branche : {reason}',
  'gitView.toast.cannotRemoveOriginRemote': 'Impossible de supprimer le dépôt distant origin',
  'gitView.toast.cannotRenameBranch': 'Impossible de renommer la branche : {reason}',
  'gitView.toast.checkedOut': 'J\'ai vérifié {name}',
  'gitView.toast.checkoutFailed': 'Échec du checkout de {name}',
  'gitView.toast.commitCreated': 'Commit créé',
  'gitView.toast.commitHashCopied': 'Hachage du commit copié',
  'gitView.toast.continueOperationFailed': 'Échec de la poursuite de l\'opération',
  'gitView.toast.copyFailed': 'Échec de la copie',
  'gitView.toast.createBranchFailed': 'Échec de la création de la branche',
  'gitView.toast.createCommitFailed': 'Échec de la création du commit',
  'gitView.toast.createdBranch': 'Branche créée {name}',
  'gitView.toast.enterCommitMessage': 'Entrez un message de commit',
  'gitView.toast.fetchedFromRemote': 'Récupéré depuis {name}',
  'gitView.toast.generateCommitMessageFailed': 'Échec de la génération du message de commit',
  'gitView.toast.mergeAborted': 'Fusion interrompue',
  'gitView.toast.mergeCompleted': 'Fusion terminée',
  'gitView.toast.mergeConflictsDetected': 'Conflits de fusion détectés',
  'gitView.toast.mergedIntoBranch': 'Fusion de {branch} dans {currentBranch}',
  'gitView.toast.pulledFilesPlural': 'Récupération de {count} fichiers depuis {name}',
  'gitView.toast.pulledFilesSingle': 'Récupération de {count} fichier depuis {name}',
  'gitView.toast.pushedToUpstream': 'Poussé vers {name}',
  'gitView.toast.commitOrStashBeforeSync': 'Validez ou cachez vos modifications avant la synchronisation',
  'gitView.toast.alreadyUpToDate': 'Déjà à jour',
  'gitView.toast.syncedPulledPluralAndPushed': 'Extrait les fichiers {count} de {name} et poussé vers l\'amont',
  'gitView.toast.syncedPulledSingleAndPushed': 'Récupération de {count} fichier depuis {name} puis push vers l’amont',
  'gitView.toast.syncedChanges': 'Modifications synchronisées',
  'gitView.toast.rebaseAborted': 'Rebase abandonné',
  'gitView.toast.rebaseConflictsDetected': 'Conflits de rebase détectés',
  'gitView.toast.rebaseStepCompleted': 'Ajouter à l’index de rebase terminée',
  'gitView.toast.rebasedOntoBranch': 'Rebasage de {currentBranch} sur {branch}',
  'gitView.toast.refreshRepositoryFailed': 'Échec de l\'actualisation du dépôt',
  'gitView.toast.remoteNameRequired': 'Le nom du dépôt distant est requis',
  'gitView.toast.removedRemote': 'Remote supprimé : {name}',
  'gitView.toast.renameBranchFailed': 'Échec du renommage de {oldName} en {newName}',
  'gitView.toast.renamedBranch': 'Renommé {oldName} en {newName}',
  'gitView.toast.restoreStashFailed': 'Échec de la restauration du cache',
  'gitView.toast.restoreStashManually': 'Cache restauré manuellement requis',
  'gitView.toast.revertFailed': 'Échec de l\'annulation des modifications',
  'gitView.toast.revertedFile': '{path} inversé',
  'gitView.toast.revertedFilesPlural': 'Fichiers {count} rétablis',
  'gitView.toast.revertedFilesSingle': 'Fichier {count} rétabli',
  'gitView.toast.revertedSomePlural': 'Fichiers {success} annulés, échec de {failed}',
  'gitView.toast.revertedSomeSingle': 'Fichier {success} rétabli, échec de {failed}',
  'gitView.toast.stageFileFailed': 'Échec de l\'ajout des modifications à l\'index',
  'gitView.toast.stageFileToCommit': 'Préparez au moins un fichier à valider',
  'gitView.toast.stageFileToDescribe': 'Mettre en scène au moins un fichier à décrire',
  'gitView.toast.selectFileToCommit': 'Sélectionnez au moins un fichier à valider',
  'gitView.toast.selectFileToDescribe': 'Sélectionnez au moins un fichier à décrire',
  'gitView.toast.stashedRestored': 'Modifications cachées restaurées',
  'gitView.toast.syncActionFailed': 'Échec du {action}',
  'gitView.toast.unstageFileFailed': 'Échec de l\'annulation du transfert des modifications',
  'gitView.toast.upstreamSet': 'Réglé en amont pour {branch} à {remote}',
  'gitView.worktree.availableInWorktreeMode': 'Disponible uniquement en mode worktree',
  'contextPanel.mode.chat': 'Chat',
  'contextPanel.mode.files': 'Fichiers',
  "contextPanel.mode.diff": "Changements",
  'contextPanel.mode.stagedDiff': 'Différence par étapes',
  'contextPanel.mode.workingDiff': 'Différentiel de travail',
  'contextPanel.mode.plan': 'Plan',
  'contextPanel.mode.context': 'Contexte',
  'contextPanel.mode.preview': 'Aperçu',
  'contextPanel.mode.browser': 'Navigateur',
  'contextPanel.browser.open': 'Ouvrir le panneau du navigateur',
  'contextPanel.browser.addressAria': 'Adresse du navigateur',
  'contextPanel.browser.empty': 'Navigateur Internet',
  'contextPanel.browser.emptyHint': 'Entrez une adresse ci-dessus pour commencer à naviguer sur le Web',
  'contextPanel.tab.closeTabAria': 'Fermer l\'onglet {label}',
  'contextPanel.actions.collapsePanel': 'Réduire le panneau',
  'contextPanel.actions.expandPanel': 'Agrandir le panneau',
  'contextPanel.actions.closePanel': 'Fermer le panneau',
  'contextPanel.actions.resizePanelAria': 'Redimensionner le panneau contextuel',
  'contextPanel.iframe.sessionChatTitle': 'Session de discussion {sessionID}',
  'contextPanel.preview.actions.reload': 'Recharger l\'aperçu',
  'contextPanel.preview.actions.openExternal': 'Ouvrir dans le navigateur',
  'contextPanel.preview.actions.retry': 'Réessayer',
  'contextPanel.preview.iframeTitle': 'Aperçu',
  'contextPanel.preview.invalidUrl': 'L\'aperçu nécessite un http(s) URL valide.',
  'contextPanel.preview.empty': 'Pas d\'aperçu URL',
  'contextPanel.preview.loading': 'Connexion du proxy d\'aperçu...',
  'contextPanel.preview.proxyError': 'Impossible de démarrer le proxy d\'aperçu.',
  'contextPanel.preview.upstreamUnreachable': 'Le serveur de développement ne répond pas.',
  'contextPanel.preview.upstreamUnreachableHint': 'Assurez-vous que votre serveur de développement est toujours en cours d\'exécution, puis réessayez.',
  'contextPanel.preview.startingServer': 'Démarrage du serveur de développement...',
  'contextPanel.preview.startingServerHint': 'En attente que le serveur accepte les connexions.',
  'contextPanel.preview.title': 'Aperçu',
  'contextPanel.preview.description': 'Utilisez les actions du projet ou un bouton Aperçu du terminal pour ouvrir un aperçu.',
  'contextPanel.preview.startPreview': 'Démarrer l\'aperçu',
  'contextPanel.preview.starting': 'Démarrage...',
  'contextPanel.preview.noDevServer': 'Aucune commande de serveur de développement trouvée. Configurez une action de projet ou ajoutez un script "dev" à package.json.',
  'contextPanel.preview.startFailed': 'Échec du démarrage du serveur d\'aperçu.',
  'contextPanel.preview.serverExited': 'Le serveur de développement s\'est arrêté de manière inattendue.',
  'contextPanel.preview.noUrlDetected': 'Le serveur de développement a démarré, mais aucun URL n\'a été détecté dans sa sortie. Ouvrez l\'onglet Aperçu du terminal pour vérifier les journaux.',
  'contextPanel.preview.serverExitedWithLog': 'Le serveur de développement s\'est arrêté de manière inattendue. Dernière sortie :\n\n{log}',
  'contextPanel.preview.noUrlDetectedWithLog': 'Le serveur de développement n\'est pas devenu accessible. Dernière sortie :\n\n{log}',
  'contextPanel.preview.console.open': 'Ouvrir la console d\'aperçu',
  'contextPanel.preview.console.waiting': 'En attente de la console de prévisualisation',
  'contextPanel.preview.console.title': 'Console de prévisualisation',
  'contextPanel.preview.console.attach': 'Attacher',
  'contextPanel.preview.console.copy': 'Copie',
  'contextPanel.preview.console.clear': 'Effacer',
  'contextPanel.preview.console.empty': 'Aucun événement de console d’aperçu pour l’instant.',
  'contextPanel.preview.console.noFilteredEvents': 'Aucun événement ne correspond à ce filtre.',
  'contextPanel.preview.console.runtimeError': 'Erreur d\'exécution',
  'contextPanel.preview.console.copied': 'Console d\'aperçu copiée',
  'contextPanel.preview.console.copyFailed': 'Échec de la copie de la console d\'aperçu',
  'contextPanel.preview.console.attached': 'Console de prévisualisation attachée au chat',
  'contextPanel.preview.console.attachNoSession': 'Ouvrir une session de discussion avant de joindre les journaux d\'aperçu',
  'contextPanel.preview.console.attachAnnotation': 'Il s\'agit des journaux de la console du navigateur du serveur de développement exécuté pour ce projet.',
  'contextPanel.preview.inspect.toggle': 'Inspecter l\'élément d\'aperçu',
  'contextPanel.preview.inspect.attached': 'Aperçu de l\'annotation jointe au chat',
  'contextPanel.preview.inspect.attachNoSession': 'Ouvrir une session de discussion avant de joindre des annotations d\'aperçu',
  'contextPanel.preview.inspect.attachAnnotation': 'Il s\'agit d\'un élément DOM sélectionné dans l\'aperçu de l\'application.',
  'contextPanel.preview.inspect.attachAnnotationWithScreenshot': 'Il s\'agit d\'un élément DOM sélectionné dans l\'aperçu de l\'application. Une capture d\'écran de la zone d\'aperçu visible avec l\'élément sélectionné en surbrillance est jointe.',
  'contextPanel.preview.console.filter.all': 'Tous',
  'contextPanel.preview.console.filter.errors': 'Erreurs',
  'contextPanel.preview.console.filter.warnings': 'Avertissements',
  'contextPanel.preview.console.filter.logs': 'Journaux',
  'terminalView.preview.open': 'Aperçu',
  'terminalView.preview.openTitle': 'Ouvrir le volet d\'aperçu',
  'sidebarFilesTree.menu.rename': 'Rebaptiser',
  'sidebarFilesTree.menu.copyPath': 'Copier le chemin',
  'sidebarFilesTree.menu.save': 'Sauvegarder',
  'sidebarFilesTree.menu.newFile': 'Nouveau fichier',
  'sidebarFilesTree.menu.newFolder': 'Nouveau dossier',
  'sidebarFilesTree.menu.delete': 'Supprimer',
  'sidebarFilesTree.toast.pathCopied': 'Chemin copié',
  'sidebarFilesTree.toast.copyFailed': 'Échec de la copie',
  'sidebarFilesTree.toast.revealFailed': 'Impossible de révéler le chemin',
  'sidebarFilesTree.toast.filenameRequired': 'Le nom du fichier est obligatoire',
  'sidebarFilesTree.toast.writeNotSupported': 'Écriture non prise en charge',
  'sidebarFilesTree.toast.fileCreated': 'Fichier créé',
  'sidebarFilesTree.toast.operationFailed': 'L\'opération a échoué',
  'sidebarFilesTree.toast.folderNameRequired': 'Le nom du dossier est requis',
  'sidebarFilesTree.toast.folderCreated': 'Dossier créé',
  'sidebarFilesTree.toast.nameRequired': 'Le nom est requis',
  'sidebarFilesTree.toast.renameNotSupported': 'Renommer non pris en charge',
  'sidebarFilesTree.toast.renamedSuccessfully': 'Renommé avec succès',
  'sidebarFilesTree.toast.deleteNotSupported': 'Suppression non prise en charge',
  'sidebarFilesTree.toast.deletedSuccessfully': 'Supprimé avec succès',
  'sidebarFilesTree.search.placeholder': 'Rechercher des fichiers...',
  'sidebarFilesTree.search.clearAria': 'Effacer la recherche',
  'sidebarFilesTree.actions.newFileTitle': 'Nouveau fichier',
  'sidebarFilesTree.actions.newFolderTitle': 'Nouveau dossier',
  'sidebarFilesTree.actions.refreshTitle': 'Rafraîchir',
  'sidebarFilesTree.actions.fileMenuTitle': 'Menu Fichier',
  'sidebarFilesTree.state.searching': 'Recherche...',
  'sidebarFilesTree.state.loading': 'Chargement...',
  'sidebarFilesTree.dialog.createFile.title': 'Créer un fichier',
  'sidebarFilesTree.dialog.createFolder.title': 'Créer un dossier',
  'sidebarFilesTree.dialog.rename.title': 'Rebaptiser',
  'sidebarFilesTree.dialog.delete.title': 'Supprimer',
  'sidebarFilesTree.dialog.createFile.description': 'Créer un nouveau fichier dans {path}',
  'sidebarFilesTree.dialog.createFolder.description': 'Créez un nouveau dossier dans {path}',
  'sidebarFilesTree.dialog.rename.description': 'Renommer {name}',
  'sidebarFilesTree.dialog.delete.description': 'Etes-vous sûr de vouloir supprimer {name} ? Cette action ne peut pas être annulée.',
  'sidebarFilesTree.dialog.rootFallback': 'racine',
  'sidebarFilesTree.dialog.rename.placeholder': 'Nouveau nom',
  'sidebarFilesTree.dialog.namePlaceholder': 'Nom',
  'sidebarFilesTree.dialog.cancel': 'Annuler',
  'sidebarFilesTree.dialog.confirm': 'Confirmer',
  'sidebarFilesTree.dialog.delete.confirm': 'Supprimer',
  'filesView.dialog.createFile.title': 'Créer un fichier',
  'filesView.dialog.createFolder.title': 'Créer un dossier',
  'filesView.dialog.rename.title': 'Rebaptiser',
  'filesView.dialog.delete.title': 'Supprimer',
  'filesView.dialog.createFile.description': 'Créer un nouveau fichier dans {path}',
  'filesView.dialog.createFolder.description': 'Créez un nouveau dossier dans {path}',
  'filesView.dialog.rename.description': 'Renommer {name}',
  'filesView.dialog.delete.description': 'Etes-vous sûr de vouloir supprimer {name} ? Cette action ne peut pas être annulée.',
  'filesView.dialog.rootFallback': 'racine',
  'filesView.dialog.rename.placeholder': 'Nouveau nom',
  'filesView.dialog.namePlaceholder': 'Nom',
  'filesView.dialog.cancel': 'Annuler',
  'filesView.dialog.confirm': 'Confirmer',
  'filesView.dialog.delete.confirm': 'Supprimer',
  'filesView.editor.saving': 'Enregistrement...',
  'filesView.editor.saved': 'Enregistré',
  'filesView.editor.autoSaveOn': 'Sauvegarde automatique activée',
  'filesView.editor.manualSave': 'Sauvegarde manuelle',
  'filesView.editor.saveNowTitle': 'Enregistrer maintenant ({shortcut}) - sauvegarde automatique après 1.5s',
  'filesView.editor.saveNowManualTitle': 'Enregistrer maintenant ({shortcut})',
  'filesView.editor.saveAria': 'Enregistrer ({shortcut})',
  'filesView.editor.openInDesktopApp': 'Ouvrir dans l\'application de bureau',
  'filesView.editor.refreshApps': 'Actualiser les applications',
  'filesView.editor.disableLineWrap': 'Désactiver le retour à la ligne',
  'filesView.editor.enableLineWrap': 'Activer le retour à la ligne',
  'filesView.editor.findInFile': 'Rechercher dans le fichier',
  'filesView.editor.goToLine': 'Aller à la ligne',
  'filesView.editor.switchToTextView': 'Passer à l\'affichage texte',
  'filesView.editor.switchToTreeView': 'Passer à l\'arborescence',
  'filesView.toast.copyFailed': 'Échec de la copie',
  'filesView.toast.openInAppFailed': 'Échec de l\'ouverture dans {app}',
  'filesView.toast.savingNotSupported': 'Enregistrement non pris en charge',
  'filesView.toast.writeFileFailed': 'Échec de l\'écriture du fichier',
  'filesView.toast.saveFailed': 'Échec de l\'enregistrement',
  'filesView.editor.copyFileContents': 'Copier le contenu du fichier',
  'filesView.editor.copyFilePathTitle': 'Copier le chemin du fichier ({path})',
  'filesView.editor.saveFile': 'Enregistrer le fichier',
  'filesView.editor.exitFullscreen': 'Quitter le plein écran',
  'filesView.editor.fullscreen': 'Plein écran',
  'filesView.unsaved.title': 'Modifications non enregistrées',
  'filesView.unsaved.description': 'Enregistrer vos modifications avant de continuer ?',
  'filesView.unsaved.saveChanges': 'Enregistrer les modifications',
  'filesView.unsaved.discard': 'Jeter',
  'filesView.editor.back': 'Retour',
  'filesView.editor.openFilesAria': 'Ouvrir des fichiers',
  'filesView.editor.closeFileAria': 'Fermer {name}',
  'filesView.editor.selectFile': 'Sélectionnez un fichier',
  'filesView.editor.showControlsAria': 'Afficher les contrôles de l\'éditeur',
  'filesView.editor.controlsTitle': 'Contrôles de l\'éditeur',
  'filesView.editor.pickFileFromTree': 'Choisissez un fichier dans l\'arborescence.',
  'filesView.state.loading': 'Chargement...',
  'filesView.state.openingFileAtChange': 'Ouverture du fichier lors du changement...',
  'filesView.tree.search.placeholder': 'Rechercher des fichiers...',
  'filesView.tree.search.clearAria': 'Effacer la recherche',
  'filesView.tree.search.searching': 'Recherche...',
  'filesView.tree.actions.newFileTitle': 'Nouveau fichier',
  'filesView.tree.actions.newFolderTitle': 'Nouveau dossier',
  'filesView.tree.actions.refreshTitle': 'Rafraîchir',
  'filesView.editor.imageAltFallback': 'Image',
  'filesView.error.jsonViewerUnavailable': 'Visionneuse JSON indisponible',
  'filesView.error.switchToTextMode': 'Passez en mode texte pour afficher le contenu brut.',
  'filesView.warning.largeFilePreviewLimited': 'Ce fichier est volumineux ({sizeKb}KB). L\'aperçu peut être limité.',
  'filesView.error.previewUnavailable': 'Aperçu indisponible',
  'filesView.error.switchToEditMode': 'Passez en mode édition pour résoudre le problème.',
  'filesView.error.readFileFailed': 'Échec de la lecture du fichier',
  'filesView.editor.htmlPreviewTitle': 'Aperçu HTML',
  'contextUsage.aria.label': 'Utilisation du contexte',
  'contextUsage.mobile.title': 'Utilisation du contexte',
  'contextUsage.mobile.usedTokens': 'Jetons utilisés',
  'contextUsage.mobile.contextLimit': 'Limite de contexte',
  'contextUsage.mobile.outputLimit': 'Limite de sortie',
  'contextUsage.mobile.usage': 'Usage',
  'contextUsage.tooltip.usedTokens': 'Jetons utilisés : {tokens}',
  'contextUsage.tooltip.contextLimit': 'Limite de contexte : {tokens}',
  'contextUsage.tooltip.outputLimit': 'Limite de sortie : {tokens}',
  'contextSidebar.session.untitled': 'Session sans titre',
  'contextSidebar.empty.openSession': 'Ouvrez une session pour inspecter le contexte.',
  'contextSidebar.section.context': 'Contexte',
  'contextSidebar.section.lastAssistantMessage': 'Dernier message de l\'assistant',
  'contextSidebar.section.rawMessages': 'Messages bruts',
  'contextSidebar.context.percentUsed': '{percent}% utilisé',
  'contextSidebar.breakdown.user': 'Utilisateur',
  'contextSidebar.breakdown.assistant': 'Assistant',
  'contextSidebar.breakdown.toolCalls': 'Appels d\'outils',
  'contextSidebar.breakdown.other': 'Autre',
  'contextSidebar.stats.messages': 'Messages',
  'contextSidebar.stats.user': 'Utilisateur',
  'contextSidebar.stats.assistant': 'Assistant',
  'contextSidebar.stats.cost': 'Coût',
  'contextSidebar.tokens.input': 'Entrée',
  'contextSidebar.tokens.output': 'Sortie',
  'contextSidebar.tokens.reasoning': 'Raisonnement',
  'contextSidebar.tokens.cacheRead': 'Lecture du cache',
  'contextSidebar.tokens.cacheWrite': 'Écriture du cache',
  'contextSidebar.tokens.cacheHit': 'Succès du cache',
  'contextSidebar.actions.copyJson': 'Copier JSON',
  'contextSidebar.actions.copy': 'Copie',
  'contextSidebar.actions.copied': 'Copié',
  'planView.file.defaultName': 'plan',
  'planView.title.default': 'Plan',
  'planView.error.saveFailed': 'Échec de l\'enregistrement',
  'planView.error.previewUnavailable': 'Aperçu indisponible',
  'planView.error.switchToEditMode': 'Passez en mode édition pour résoudre le problème.',
  'planView.error.writeFailed': 'Échec de l\'écriture',
  'planView.error.writePlanFileFailed': 'Échec de l\'écriture du fichier de plan ({status})',
  'planView.actions.improvePlanAria': 'Améliorer le plan',
  'planView.actions.improve': 'Améliorer',
  'planView.actions.implementPlanAria': 'Plan de mise en œuvre',
  'planView.actions.implement': 'Mettre en œuvre',
  'planView.actions.sendToNewSession': 'Envoyer à une nouvelle session',
  'planView.actions.sendToNewWorktreeSession': 'Envoyer à une nouvelle session Worktree',
  'planView.actions.copyPlanContents': 'Copier le contenu du plan',
  'planView.state.loading': 'Chargement...',
  'diffView.binary.unavailable': 'Le contenu de ce fichier ne peut pas être visualisé.',
  'diffView.change.untracked': 'Fichier non suivi',
  'diffView.change.new': 'Nouveau fichier',
  'diffView.change.deleted': 'Fichier supprimé',
  'diffView.change.renamed': 'Fichier renommé',
  'diffView.change.copied': 'Fichier copié',
  'diffView.change.modified': 'Fichier modifié',
  'diffView.selector.selectFile': 'Sélectionner un fichier',
  'diffView.image.original': 'Original',
  'diffView.image.modified': 'Modifié',
  'diffView.image.new': 'Nouveau',
  'diffView.image.originalAlt': 'Original: {path}',
  'diffView.image.modifiedAlt': 'Modifié : {path}',
  'diffView.section.files': 'Fichiers',
  'diffView.state.selectSessionDirectory': 'Sélectionnez un répertoire de session pour afficher les différences',
  'diffView.state.loadingRepositoryStatus': 'Chargement de l\'état du dépôt...',
  'diffView.state.notGitRepository': 'Pas un dépôt git. Utilisez l\'onglet Git pour initialiser ou modifier des répertoires.',
  'diffView.state.cleanWorkingTree': 'Worktree sans modifications, rien à afficher',
  'diffView.state.failedToLoadDiff': 'Échec du chargement du différentiel',
  'diffView.state.loadingDiff': 'Chargement du différentiel...',
  'diffView.state.loadingChanges': 'Chargement des modifications...',
  'diffView.state.largeDiff': 'Diff volumineux ({count} lignes modifiées)',
  'diffView.state.largeDiffDescription': 'Le rendu peut être lent. Vous pouvez tout de même afficher le diff avec le bouton ci-dessous.',
  'diffView.summary.changedFilesSingle': 'Le fichier {count} a été modifié',
  'diffView.summary.changedFilesPlural': 'Fichiers {count} modifiés',
  "diffView.scope.changed": "Modifiés",
  "diffView.scope.staged": "Staged",
  "diffView.scope.selectorAria": "Sélectionner le mode de changements",
  'diffView.actions.retry': 'Réessayer',
  'diffView.actions.renderAnyway': 'Afficher quand même',
  'diffView.actions.expandAll': 'Tout développer',
  'diffView.actions.collapseAll': 'Tout réduire',
  'diffView.actions.loadFullFiles': 'Charger les fichiers complets',
  'diffView.actions.disableFullFiles': 'Ne plus charger les fichiers complets',
  'diffView.actions.disableLineWrap': 'Désactiver le retour à la ligne',
  'diffView.actions.enableLineWrap': 'Activer le retour à la ligne',
  'diffView.actions.openFileInEditorAtChange': 'Ouvrez ce fichier dans l\'éditeur lors du changement',
  'diffView.actions.openFileAtFirstChangedLine': 'Ouvrez ce fichier à la première ligne modifiée',
  'diffView.actions.review': 'Revoir',
  'diffView.actions.reviewAria': 'Revoir les changements',
  'diffView.reviewDialog.title': 'Revoir les changements',
  'diffView.reviewDialog.description': 'Démarre une session de revue séparée pour les changements actuels.',
  'diffView.reviewDialog.generateHandoff': 'Générer un handoff',
  'diffView.reviewDialog.autoReview': 'Lancer la boucle de revue automatique',
  'diffView.reviewDialog.info': 'Ce flux fonctionne mieux lorsqu’il est lancé depuis la session où les changements ont été implémentés.',
  'diffView.reviewDialog.actions.cancel': 'Annuler',
  'diffView.reviewDialog.actions.start': 'Revoir',
  'diffView.reviewDialog.actions.starting': 'Démarrage...',
  'diffView.reviewDialog.toast.noSessionDirectory': 'Le dossier de session est indisponible',
  'diffView.reviewDialog.toast.startFailed': 'Impossible de démarrer le flux de revue',
  'chat.history.loadOlder': 'Charger les messages précédents',
  'chat.autoReview.title': 'La boucle de revue de code est en cours',
  'chat.autoReview.status.waitingForReviewer': 'En attente du reviewer',
  'chat.autoReview.status.waitingForImplementer': 'En attente de l’implémenteur',
  'chat.autoReview.reviewSessionLabel': 'Session de revue',
  'chat.autoReview.actions.open': 'Ouvrir',
  'chat.autoReview.actions.stop': 'Arrêter',
  'diffView.hunk.label': 'Sections',
  'diffView.hunk.stage': 'Préparer',
  'diffView.hunk.unstage': 'Retirer',
  'diffView.hunk.discard': 'Annuler',
  'diffView.hunk.stageTitle': 'Préparer la section {index}',
  'diffView.hunk.unstageTitle': 'Retirer la section {index} de la préparation',
  'diffView.hunk.discardTitle': 'Annuler la section {index}',
  'diffView.hunk.unavailable': "Cette section n'est plus disponible. Actualisez le diff et réessayez.",
  'diffView.hunk.unsupported': "La préparation de sections individuelles n'est pas prise en charge dans cet environnement.",
  'rightSidebar.contextNotesTodo.plan.defaultTitle': 'Plan',
  'rightSidebar.contextNotesTodo.empty.selectProject': 'Sélectionnez un projet pour ajouter des notes et des tâches.',
  'rightSidebar.contextNotesTodo.notes.title': 'Notes rapides - {project}',
  'rightSidebar.contextNotesTodo.notes.placeholder': 'Capturez le contexte, les rappels ou les liens',
  'rightSidebar.contextNotesTodo.todo.title': 'Faire',
  'rightSidebar.contextNotesTodo.todo.itemsSingle': 'Article {count}',
  'rightSidebar.contextNotesTodo.todo.itemsPlural': 'Articles {count}',
  'rightSidebar.contextNotesTodo.todo.clearCompleted': 'Effacer terminé',
  'rightSidebar.contextNotesTodo.todo.inputPlaceholder': 'Ajouter une tâche',
  'rightSidebar.contextNotesTodo.todo.addAria': 'Ajouter une tâche',
  'rightSidebar.contextNotesTodo.todo.empty': 'Aucune tâche pour l\'instant. Ajoutez une petite liste de contrôle pour ce projet.',
  'rightSidebar.contextNotesTodo.todo.actions.markComplete': 'Marque "{text}" terminée',
  'rightSidebar.contextNotesTodo.todo.actions.collapse': 'Réduire la tâche "{text}"',
  'rightSidebar.contextNotesTodo.todo.actions.expand': 'Développer la tâche "{text}"',
  'rightSidebar.contextNotesTodo.todo.actions.delete': 'Supprimer "{text}"',
  'rightSidebar.contextNotesTodo.todo.actions.send': 'Envoyer "{text}"',
  'rightSidebar.contextNotesTodo.todo.actions.reorder': 'Récommander "{text}"',
  'rightSidebar.contextNotesTodo.todo.resizeAria': 'Redimensionner la liste de tâches',
  'rightSidebar.contextNotesTodo.todo.sendMenu.currentSession': 'Envoyer à la session en cours',
  'rightSidebar.contextNotesTodo.todo.sendMenu.newSession': 'Envoyer à une nouvelle session',
  'rightSidebar.contextNotesTodo.todo.sendMenu.newWorktreeSession': 'Envoyer à une nouvelle session Worktree',
  'rightSidebar.contextNotesTodo.plans.title': 'Forfaits',
  'rightSidebar.contextNotesTodo.plans.filesSingle': 'Fichier {count}',
  'rightSidebar.contextNotesTodo.plans.filesPlural': 'Fichiers {count}',
  'rightSidebar.contextNotesTodo.plans.importFromFile': 'Importer un plan à partir d\'un fichier',
  'rightSidebar.contextNotesTodo.plans.empty': 'Aucun plan enregistré pour l\'instant.',
  'rightSidebar.contextNotesTodo.plans.deletePlan': 'Supprimer le forfait',
  'rightSidebar.contextNotesTodo.plans.deletePlanWithTitle': 'Supprimer le plan "{title}"',
  'rightSidebar.contextNotesTodo.sendDialog.title.newSession': 'Envoyer à une nouvelle session',
  'rightSidebar.contextNotesTodo.sendDialog.title.newWorktree': 'Envoyer vers un nouvel worktree',
  'rightSidebar.contextNotesTodo.sendDialog.variant.default': 'Défaut',
  'rightSidebar.contextNotesTodo.sendDialog.actions.cancel': 'Annuler',
  'rightSidebar.contextNotesTodo.sendDialog.actions.send': 'Envoyer',
  'rightSidebar.contextNotesTodo.sendDialog.actions.sending': 'Envoi',
  'rightSidebar.contextNotesTodo.toast.saveNotesFailed': 'Échec de l\'enregistrement des notes du projet',
  'rightSidebar.contextNotesTodo.toast.loadNotesFailed': 'Échec du chargement des notes de projet',
  'rightSidebar.contextNotesTodo.toast.noActiveSession': 'Aucune session active sélectionnée',
  'rightSidebar.contextNotesTodo.toast.sentToCurrentSession': 'Todo envoyé à la session en cours',
  'rightSidebar.contextNotesTodo.toast.worktreeRequiresGitRepo': 'Les actions Worktree ne sont disponibles que pour les dépôts Git',
  'rightSidebar.contextNotesTodo.toast.createSessionFailed': 'Échec de la création de la session',
  'rightSidebar.contextNotesTodo.toast.sentToNewSession': 'Todo envoyé à une nouvelle session',
  'rightSidebar.contextNotesTodo.toast.sentToNewWorktreeSession': 'Todo envoyé à une nouvelle session Worktree',
  'rightSidebar.contextNotesTodo.toast.sendTodoFailed': 'Échec de l\'envoi de la tâche',
  'rightSidebar.contextNotesTodo.toast.deletePlanFailed': 'Échec de la suppression du plan',
  'rightSidebar.contextNotesTodo.toast.planFileEmpty': 'Le fichier de plan est vide',
  'rightSidebar.contextNotesTodo.toast.importPlanFailed': 'Échec de l\'importation du plan',
  'rightSidebar.contextNotesTodo.toast.planImported': 'Forfait importé',
  'rightSidebar.contextNotesTodo.toast.readPlanFileFailed': 'Échec de la lecture du fichier de plan',
  'inlineComment.range.lines': 'Lignes {start}-{end}',
  'inlineComment.input.placeholder': 'Ajouter un commentaire... (Cmd+Entrée pour enregistrer)',
  'inlineComment.actions.cancel': 'Annuler',
  'inlineComment.actions.save': 'Sauvegarder',
  'inlineComment.actions.comment': 'Commentaire',
  'inlineComment.actions.showLess': 'Afficher moins',
  'inlineComment.actions.showMore': 'Afficher plus',
  'inlineComment.actions.editComment': 'Modifier le commentaire',
  'inlineComment.actions.deleteComment': 'Supprimer le commentaire',
  'inlineComment.toast.selectSessionToSave': 'Sélectionnez une session pour enregistrer le commentaire',
  'header.github.connectedWithLogin': 'GitHub : {login}',
  'header.github.connected': 'GitHub connecté',
  'header.github.avatarWithLogin': 'Avatar {login}',
  'header.github.avatar': 'Avatar GitHub',
  'header.github.accountsTitle': 'Comptes GitHub',
  'header.github.accountSource.oauth': 'OAuth',
  'header.github.accountSource.cli': 'CLI',
  'header.services.openWithCurrent': 'Instance ouverte, utilisation et MCP (actuel : {current})',
  'header.services.open': 'Services ouverts, utilisation et MCP',
  'header.services.tooltip.currentInstanceWithShortcuts': 'Instance actuelle : {current} ({toggle} ; onglet suivant {nextTab})',
  'header.services.tooltip.servicesWithShortcuts': 'Services ({toggle} ; onglet suivant {nextTab})',
  'header.services.title': 'Services',
  'header.services.viewAria': 'Voir les prestations',
  'header.services.closeAria': 'Fermer les prestations',
  'header.services.rateLimits': 'Limites de taux',
  'header.services.refreshRateLimitsAria': 'Limites du taux de rafraîchissement',
  'header.services.noRateLimits': 'Aucune limite de taux disponible.',
  'header.services.noRateLimitsReported': 'Aucune limite de taux signalée.',
  'header.services.used': 'Utilisé',
  'header.services.remaining': 'Restant',
  'header.services.modelFamily.other': 'Autre',
  'header.services.shutdownDev': 'Arrêter OpenChamber',
  'header.actions.openPlanAria': 'Plan ouvert',
  "header.actions.toggleChangesPanel": "Panneau des changements",
  "header.actions.toggleChangesPanelAria": "Basculer le panneau des changements",
  'header.actions.planWithShortcut': 'Forfait ({shortcut})',
  'header.actions.terminalPanelWithShortcut': 'Panneau à bornes ({shortcut})',
  'header.actions.toggleTerminalPanelAria': 'Basculer le panneau à bornes',
  'terminalView.stream.processExitedMessage': '[Processus terminé{exitCodeSegment}{signalSegment}]',
  'terminalView.stream.processExitedWithCode': 'avec le code {exitCode}',
  'terminalView.stream.processExitedWithSignal': '(signal {signal})',
  'terminalView.error.sessionEnded': 'Session terminale terminée',
  'terminalView.error.connectionFailed': 'Échec de la connexion : {message}',
  'terminalView.error.startSessionFailed': 'Échec du démarrage de la session de terminal',
  'terminalView.error.restartFailed': 'Échec du redémarrage du terminal',
  'terminalView.error.sendInputFailed': 'Échec de l\'envoi de l\'entrée',
  'terminalView.empty.noWorkingDirectory': 'Aucun répertoire de travail disponible pour le terminal.',
  'terminalView.empty.selectSession': 'Sélectionnez une session pour ouvrir le terminal.',
  'terminalView.empty.noWorkingDirectoryForSession': 'Aucun répertoire de travail disponible pour cette session.',
  'terminalView.actions.retry': 'Réessayer',
  'terminalView.actions.hardRestart': 'Redémarrage dur',
  'terminalView.actions.hardRestartTitle': 'Forcer la mise à mort et créer une nouvelle session',
  'terminalView.quickKeys.escape': 'Échap',
  'terminalView.quickKeys.tabAria': 'Languette',
  'terminalView.quickKeys.controlLabel': 'Ctrl',
  'terminalView.quickKeys.controlModifierAria': 'Modificateur de contrôle',
  'terminalView.quickKeys.commandModifierAria': 'Modificateur de commande',
  'terminalView.quickKeys.arrowUpAria': 'Flèche vers le haut',
  'terminalView.quickKeys.arrowLeftAria': 'Flèche vers la gauche',
  'terminalView.quickKeys.arrowDownAria': 'Flèche vers le bas',
  'terminalView.quickKeys.arrowRightAria': 'Flèche vers la droite',
  'terminalView.quickKeys.enterAria': 'Entrer',
  'terminalView.tabs.closeTabTitle': 'Fermer l\'onglet',
  'terminalView.tabs.newTabTitle': 'Nouvel onglet',
  'terminalView.bottomDock.resizeAria': 'Redimensionner le panneau à bornes',
  'terminalView.bottomDock.restoreTitle': 'Restaurer la hauteur du bornier',
  'terminalView.bottomDock.restoreAria': 'Restaurer la hauteur du bornier',
  'terminalView.bottomDock.expandTitle': 'Développer le panneau de connexion',
  'terminalView.bottomDock.expandAria': 'Développer le panneau de connexion',
  'terminalView.bottomDock.closeTitle': 'Fermer le panneau à bornes',
  'terminalView.bottomDock.closeAria': 'Fermer le panneau à bornes',
  'terminalView.viewport.inputAria': 'Entrée de borne',
  'directoryExplorerDialog.title': 'Ajouter un répertoire de projet',
  'directoryExplorerDialog.description': 'Choisissez un dossier à ajouter en tant que projet.',
  'directoryExplorerDialog.toggle.showHidden': 'Afficher masqué',
  'directoryExplorerDialog.pathInput.placeholder': 'Entrez le chemin ou sélectionnez dans l\'arborescence...',
  'directoryExplorerDialog.actions.openingFinder': 'Ouverture...',
  'directoryExplorerDialog.actions.openInFinder': 'Ouvrir dans le Finder',
  'directoryExplorerDialog.actions.adding': 'Ajout...',
  'directoryExplorerDialog.actions.addProject': 'Ajouter un projet',
  'directoryExplorerDialog.actions.addLocalProject': 'Ajouter un projet local',
  'directoryExplorerDialog.actions.cloneRepository': 'Cloner le dépôt',
  'directoryExplorerDialog.actions.cloneAndAdd': 'Cloner et ajouter',
  'directoryExplorerDialog.actions.cloning': 'Clonage...',
  'directoryExplorerDialog.actions.createAndAdd': 'Créer et ajouter',
  'directoryExplorerDialog.actions.alreadyAdded': 'Déjà ajouté',
  'directoryExplorerDialog.clone.remoteUrlPlaceholder': 'URL du dépôt (HTTPS ou SSH)',
  'directoryExplorerDialog.browse.directories': 'Annuaires',
  'directoryExplorerDialog.browse.loading': 'Chargement des répertoires...',
  'directoryExplorerDialog.browse.empty': 'Aucun répertoire correspondant.',
  'directoryExplorerDialog.browse.parentDirectory': 'Annuaire parent',
  'directoryExplorerDialog.browse.addedBadge': 'Ajouté',
  'directoryExplorerDialog.browse.quickAdd': 'Ajouter',
  'directoryExplorerDialog.footer.navigate': 'Naviguer',
  'directoryExplorerDialog.footer.select': 'Sélectionner',
  'directoryExplorerDialog.footer.add': 'Ajouter',
  'directoryExplorerDialog.shortcut.enter': 'Entrer',
  'directoryExplorerDialog.toast.unableToAccessDirectory': 'Impossible d\'accéder au répertoire',
  'directoryExplorerDialog.toast.desktopDeniedAccess': 'Le bureau a refusé l\'accès au répertoire.',
  'directoryExplorerDialog.toast.failedToOpenDirectory': 'Échec de l\'ouverture du répertoire',
  'directoryExplorerDialog.toast.desktopCouldNotGrantAccess': 'Desktop n\'a pas pu accorder l\'accès aux fichiers.',
  'directoryExplorerDialog.toast.failedToAddProject': 'Échec de l\'ajout du projet',
  'directoryExplorerDialog.toast.cloneUrlRequired': 'Entrez dans un dépôt URL avant le clonage.',
  'directoryExplorerDialog.toast.selectValidDirectoryPath': 'Veuillez sélectionner un chemin de répertoire valide.',
  'directoryExplorerDialog.toast.failedToSelectDirectory': 'Échec de la sélection du répertoire',
  'directoryExplorerDialog.toast.unknownError': 'Une erreur inconnue s\'est produite.',
  'directoryTree.actions.createNewDirectory': 'Créer un nouveau répertoire',
  'directoryTree.actions.pinDirectory': 'Répertoire des épingles',
  'directoryTree.actions.unpinDirectory': 'Détacher le répertoire',
  'directoryTree.actions.createDirectory': 'Créer un répertoire',
  'directoryTree.actions.cancel': 'Annuler',
  'directoryTree.actions.selectWorkingDirectoryAria': 'Sélectionnez le répertoire de travail',
  'directoryTree.state.locatingHomeDirectory': 'Localisation du répertoire personnel...',
  'directoryTree.state.loading': 'Chargement...',
  'directoryTree.state.noDirectoriesFound': 'Aucun répertoire trouvé',
  'directoryTree.section.pinned': 'Épinglé',
  'directoryTree.section.browse': 'Parcourir',
  'aboutDialog.versionLabel': 'Version {version}',
  'aboutDialog.openChamberVersionLabel': 'Version OpenChamber {version}',
  'aboutDialog.openCodeVersionLabel': 'Version OpenCode {version}',
  'aboutDialog.actions.copyDiagnostics': 'Copier les diagnostics',
  'aboutDialog.actions.preparingDiagnostics': 'Préparation du diagnostic...',
  'aboutDialog.actions.diagnosticsCopied': 'Diagnostic copié',
  'aboutDialog.diagnosticsDescription': 'Comprend l’état OpenChamber, l’état de santé OpenCode, les répertoires et les projets.',
  'aboutDialog.footerNote': 'Fabriqué avec amour pour la communauté',
  'aboutDialog.toast.copyFailed': 'Échec de la copie',
  'aboutDialog.toast.diagnosticsNotReady': 'Les diagnostics ne sont pas encore prêts. Attendez une seconde et réessayez.',
  'aboutDialog.toast.diagnosticsCopied': 'Diagnostic copié',
  'helpDialog.title': 'Raccourcis clavier',
  'helpDialog.description': 'Utilisez ces raccourcis clavier pour naviguer efficacement dans OpenChamber',
  'helpDialog.section.navigationCommands': 'Navigation et commandes',
  'helpDialog.section.sessionManagement': 'Gestion des sessions',
  'helpDialog.section.panels': 'Panneaux',
  'helpDialog.section.interface': 'Interface',
  'helpDialog.item.openCommandPalette': 'Ouvrir la palette de commandes',
  'helpDialog.item.showKeyboardShortcuts': 'Afficher les raccourcis clavier (cette boîte de dialogue)',
  'helpDialog.item.toggleSessionSidebar': 'Toggle la barre latérale de la session',
  'helpDialog.item.cycleAgent': 'Agent de cycle (entrée de chat)',
  'helpDialog.item.openModelSelector': 'Ouvrir le sélecteur de modèle',
  'helpDialog.item.navigateModels': 'Naviguer dans les modèles (dans le sélecteur)',
  'helpDialog.item.adjustThinkingMode': 'Ajuster le mode de réflexion (dans le sélecteur, lorsqu\'il est pris en charge)',
  'helpDialog.item.cycleThinkingVariant': 'Variante de pensée cyclique (raccourci global)',
  'helpDialog.item.newWindow': 'Nouvelle fenêtre (ordinateur de bureau uniquement)',
  'helpDialog.item.createNewSession': 'Créer une nouvelle session',
  'helpDialog.item.createNewWorktreeDraft': 'Créer un nouveau brouillon d\'worktree',
  'helpDialog.item.focusChatInput': 'Concentration sur la saisie du chat',
  'helpDialog.item.abortActiveRun': 'Abandonner l’exécution active (double pression)',
  'helpDialog.item.toggleRightSidebar': 'Basculer la barre latérale droite',
  'helpDialog.item.openRightSidebarGitTab': 'Ouvrir l\'onglet Git de la barre latérale droite',
  'helpDialog.item.openRightSidebarFilesTab': 'Ouvrir l\'onglet Fichiers de la barre latérale droite',
  'helpDialog.item.cycleRightSidebarTab': 'Onglet de la barre latérale droite du cycle',
  'helpDialog.item.toggleTerminalDock': 'Basculer la station d\'accueil du terminal',
  'helpDialog.item.toggleTerminalExpanded': 'Terminal à bascule étendu',
  'helpDialog.item.togglePlanContextPanel': 'Toggle Panneau contextuel du plan',
  'helpDialog.item.cycleTheme': 'Basculer le thème (clair → sombre → système)',
  'helpDialog.item.switchProject': 'Changer de projet',
  'helpDialog.item.toggleServicesMenu': 'Basculer le menu des services',
  'helpDialog.item.cycleServicesTab': 'Onglet Services de vélo',
  'helpDialog.item.openSettings': 'Ouvrir les paramètres',
  'helpDialog.keyCombiner.or': 'ou',
  'helpDialog.proTips.title': 'Conseils de pro :',
  'helpDialog.proTips.commandPalette': 'Utilisez la palette de commandes ({shortcut}) pour accéder rapidement à toutes les actions',
  'helpDialog.proTips.recentSessions': 'Les 5 sessions les plus récentes apparaissent dans la palette de commandes',
  'helpDialog.proTips.themeCycling': 'Le cyclisme thématique mémorise vos préférences au fil des sessions',
  'header.actions.rightSidebarWithShortcut': 'Barre latérale droite ({shortcut})',
  'header.actions.toggleRightSidebarAria': 'Basculer la barre latérale droite',
  'header.actions.openAppMenu': 'Menu de OpenChamber',
  'header.actions.openAppMenuAria': 'Ouvrir le menu OpenChamber',
  'header.actions.openSessionsWithShortcut': 'Sessions ouvertes ({shortcut})',
  'header.actions.openSessionsAria': 'Sessions ouvertes',
  'header.actions.closeSessionsAria': 'Fermer les sessions',
  'header.actions.newSessionAria': 'Nouvelle session',
  'header.actions.newSessionWithShortcut': 'Nouvelle session ({shortcut})',
  'header.actions.backAria': 'Retour',
  'header.navigation.mainAria': 'Navigation principale',
  'header.sessions.title': 'Sessions',
  'header.changes.availableAria': 'Modifications disponibles',
  'session.githubIssuePicker.error.noActiveProject': 'Aucun projet actif',
  'session.githubIssuePicker.error.runtimeUnavailable': 'Exécution GitHub API indisponible',
  'session.githubIssuePicker.error.notConnected': 'GitHub non connecté',
  'session.githubIssuePicker.error.repoNotResolvable': 'Repo non résoluble',
  'session.githubIssuePicker.error.repoMustBeGithub': 'Le dépôt distant origin doit pointer vers une URL GitHub',
  'session.githubIssuePicker.error.issueNotFound': 'Problème introuvable',
  'session.githubIssuePicker.error.noModelSelected': 'Aucun modèle sélectionné',
  'session.githubIssuePicker.toast.loadMoreFailed': 'Échec du chargement d\'autres problèmes',
  'session.githubIssuePicker.toast.loadIssueDetailsFailed': 'Échec du chargement des détails du problème',
  'session.githubIssuePicker.toast.sendContextFailed': 'Échec de l\'envoi du contexte du problème',
  'session.githubIssuePicker.toast.sessionCreated': 'Session créée à partir du problème',
  'session.githubIssuePicker.toast.startSessionFailed': 'Échec du démarrage de la session',
  'session.githubIssuePicker.title.select': 'Lien vers le problème GitHub',
  'session.githubIssuePicker.title.createSession': 'Nouvelle session du numéro GitHub',
  'session.githubIssuePicker.description.select': 'Sélectionnez un problème à lier à cette session.',
  'session.githubIssuePicker.description.createSession': 'Lance une nouvelle session avec un contexte de problème masqué (titre/corps/étiquettes/commentaires).',
  'session.githubIssuePicker.searchPlaceholder': 'Recherchez par titre ou #123, ou collez le numéro URL',
  'session.githubIssuePicker.empty.noActiveProject': 'Aucun projet actif sélectionné.',
  'session.githubIssuePicker.empty.runtimeUnavailable': 'L\'environnement d\'exécution GitHub API n\'est pas disponible.',
  'session.githubIssuePicker.empty.notConnected': 'GitHub non connecté. Connectez votre compte GitHub dans les paramètres.',
  'session.githubIssuePicker.empty.noIssuesFound': 'Aucun problème trouvé',
  'session.githubIssuePicker.empty.noOpenIssuesFound': 'Aucun problème ouvert trouvé',
  'session.githubIssuePicker.loading.issues': 'Problèmes de chargement...',
  'session.githubIssuePicker.loading.more': 'Chargement...',
  'session.githubIssuePicker.actions.openSettings': 'Ouvrir les paramètres',
  'session.githubIssuePicker.actions.useIssue': 'Utilisez le numéro {number}',
  'session.githubIssuePicker.actions.openInGitHubAria': 'Ouvrir dans GitHub',
  'session.githubIssuePicker.actions.loadMore': 'Charger plus',
  'session.githubIssuePicker.actions.sectionTitle': 'Actions',
  'session.githubIssuePicker.actions.toggleWorktreeAria': 'Basculer le worktree',
  'session.githubIssuePicker.actions.createInWorktree': 'Créer dans le worktree',
  'session.githubIssuePicker.actions.openRepo': 'Ouvrir le dépôt',
  'session.githubIssuePicker.actions.refresh': 'Rafraîchir',
  'session.githubPrPicker.error.noActiveProject': 'Aucun projet actif',
  'session.githubPrPicker.error.runtimeUnavailable': 'Exécution GitHub API indisponible',
  'session.githubPrPicker.error.notConnected': 'GitHub non connecté',
  'session.githubPrPicker.error.prNotFound': 'Demande d\'extraction introuvable',
  'session.githubPrPicker.error.repoNotResolvable': 'Repo non résoluble',
  'session.githubPrPicker.error.repoMustBeGithub': 'Le dépôt distant origin doit pointer vers une URL GitHub',
  'session.githubPrPicker.toast.loadMoreFailed': 'Échec du chargement d\'autres demandes d\'extraction',
  'session.githubPrPicker.toast.loadDetailsFailed': 'Échec du chargement des détails de la demande d\'extraction',
  'session.githubPrPicker.title': 'Lier la PR GitHub',
  'session.githubPrPicker.description': 'Sélectionnez une PR pour joindre un contexte de revue à ce message.',
  'session.githubPrPicker.searchPlaceholder': 'Recherchez par titre ou #123, ou collez la demande d\'extraction URL',
  'session.githubPrPicker.includeDiffAria': 'Inclure la différence PR dans le contexte ci-joint',
  'session.githubPrPicker.includeDiff': 'Inclure la différence PR',
  'session.githubPrPicker.empty.noActiveProject': 'Aucun projet actif sélectionné.',
  'session.githubPrPicker.empty.runtimeUnavailable': 'L\'environnement d\'exécution GitHub API n\'est pas disponible.',
  'session.githubPrPicker.empty.notConnected': 'GitHub non connecté. Connectez votre compte GitHub dans les paramètres.',
  'session.githubPrPicker.empty.noPullRequestsFound': 'Aucune demande d\'extraction trouvée',
  'session.githubPrPicker.empty.noOpenPullRequestsFound': 'Aucune demande d\'extraction ouverte trouvée',
  'session.githubPrPicker.loading.pullRequests': 'Chargement des demandes d\'extraction...',
  'session.githubPrPicker.loading.more': 'Chargement...',
  'session.githubPrPicker.actions.openSettings': 'Ouvrir les paramètres',
  'session.githubPrPicker.actions.usePullRequest': 'Utiliser la demande d\'extraction #{number}',
  'session.githubPrPicker.actions.openInGitHubAria': 'Ouvrir dans GitHub',
  'session.githubPrPicker.actions.loadMore': 'Charger plus',
  'session.newWorktree.title': 'Nouveau worktree',
  'session.newWorktree.mode.newBranch': 'Nouvelle branche',
  'session.newWorktree.mode.existingBranch': 'Branche existante',
  'session.newWorktree.selectBranch': 'Sélectionnez une branche',
  'session.newWorktree.chooseBranch': 'Choisissez une branche...',
  'session.newWorktree.fetchBranches': 'Récupérer des branches',
  'session.newWorktree.searchBranches': 'Rechercher des branches...',
  'session.newWorktree.loadingBranches': 'Chargement des branches...',
  'session.newWorktree.noBranchesFound': 'Aucune branche trouvée',
  'session.newWorktree.matchingBranches': 'Branches correspondantes',
  'session.newWorktree.noMatchingBranches': 'Aucune branche correspondante',
  'session.newWorktree.localBranches': 'Branches locales',
  'session.newWorktree.remoteBranches': 'Branches du dépôt distant',
  'session.newWorktree.otherLocalBranches': 'Autres branches locales',
  'session.newWorktree.otherRemoteBranches': 'Autres branches du remote',
  'session.newWorktree.branchName': 'Nom de la branche',
  'session.newWorktree.branchNamePlaceholder': 'fonctionnalité/ma-fonctionnalité-géniale',
  'session.newWorktree.actions.change': 'Changement',
  'session.newWorktree.actions.startFromGitHubIssuePr': 'À partir de GitHub Issue/PR',
  'session.newWorktree.usingPrBranch': 'Utilisation de la branche PR : {branch}',
  'session.newWorktree.fromIssue': 'Extrait du numéro {number} : {title}',
  'session.newWorktree.worktreeDirectory': 'Répertoire du worktree',
  'session.newWorktree.worktreeDirectoryPlaceholder': 'mon-répertoire-worktree',
  'session.newWorktree.resetToMatchBranchName': 'Réinitialiser pour correspondre au nom de la branche',
  'session.newWorktree.sourceBranch': 'Branche source',
  'session.newWorktree.selectSourceBranch': 'Sélectionnez la branche source',
  'session.newWorktree.selectSourceBranchPlaceholder': 'Sélectionnez la branche source...',
  'session.newWorktree.newBranchFromSource': 'Une nouvelle branche sera créée à partir de {source}',
  'session.newWorktree.issueNumber': 'Numéro {number}',
  'session.newWorktree.prNumber': 'PR #{number}',
  'session.newWorktree.includeDiffBadge': '+diff',
  'session.newWorktree.newSessionTitle': 'Nouvelle session',
  'session.newWorktree.fromSource': 'de {source}',
  'session.newWorktree.actions.cancel': 'Annuler',
  'session.newWorktree.actions.creating': 'Création...',
  'session.newWorktree.actions.createWorktree': 'Créer un worktree',
  'session.newWorktree.actions.reset': 'Réinitialiser',
  'session.newWorktree.error.noModelSelected': 'Aucun modèle sélectionné',
  'session.newWorktree.error.noActiveProject': 'Aucun projet actif',
  'session.newWorktree.error.branchNameRequired': 'Le nom de la branche est requis',
  'session.newWorktree.error.worktreeDirectoryRequired': 'Le répertoire du worktree est requis',
  'session.newWorktree.error.sendGitHubContextFailed': 'Échec de l\'envoi du contexte GitHub',
  'session.newWorktree.error.createWorktreeFailed': 'Échec de la création du worktree',
  'session.newWorktree.toast.sessionFromIssue': 'Session créée à partir du problème',
  'session.newWorktree.toast.sessionFromPr': 'Session créée à partir de PR',
  'session.newWorktree.toast.worktreeCreated': 'Worktree créé',
  'session.newWorktree.toast.worktreeCreatedDescription': '{target} - démarrage en arrière-plan',
  'session.githubIntegration.title': 'Sélectionnez parmi GitHub',
  'session.githubIntegration.tabs.issues': 'Problèmes',
  'session.githubIntegration.tabs.pullRequests': 'PR',
  'session.githubIntegration.connect.title': 'Connectez-vous à GitHub',
  'session.githubIntegration.connect.description': 'Lier des issues ou des PR pour remplir automatiquement les détails du worktree',
  'session.githubIntegration.connect.action': 'Connectez GitHub',
  'session.githubIntegration.search.issuesPlaceholder': 'Recherchez des problèmes ou entrez #123...',
  'session.githubIntegration.search.prsPlaceholder': 'Recherchez les PR ou entrez #456...',
  'session.githubIntegration.empty.noIssuesFound': 'Aucun problème trouvé',
  'session.githubIntegration.empty.noPullRequestsFound': 'Aucune PR trouvée',
  'session.githubIntegration.actions.loadMore': 'Charger plus',
  'session.githubIntegration.actions.cancel': 'Annuler',
  'session.githubIntegration.actions.select': 'Sélectionner',
  'session.githubIntegration.selected.issueNumber': 'Numéro {number}',
  'session.githubIntegration.selected.prNumber': 'PR #{number}',
  'session.githubIntegration.includeDiffAria': 'Inclure la différence PR dans le contexte de la session',
  'session.githubIntegration.includeDiff': 'Inclure la différence PR',
  'session.githubIntegration.error.notConnected': 'GitHub non connecté',
  'session.githubIntegration.error.loadDataFailed': 'Échec du chargement des données',
  'session.githubIntegration.validation.branchAlreadyCheckedOut': 'La branche est déjà checkout dans un worktree',
  'session.githubIntegration.validation.branchAlreadyExists': 'Une branche existe déjà localement',
  'session.githubIntegration.validation.failed': 'Échec de la validation',
  'chat.fileAttachment.toast.attachFailed': 'Impossible de joindre le fichier',
  'chat.fileAttachment.toast.someFilesSkipped': 'Certains fichiers ont été ignorés :\n{summary}',
  'chat.fileAttachment.toast.vscodePickFailed': 'Échec de la sélection des fichiers dans VS Code',
  'chat.fileAttachment.fileFallback': 'déposer',
  'chat.fileAttachment.skippedFallback': 'ignoré',
  'chat.fileAttachment.actions.attachAria': 'Joindre des fichiers',
  'chat.fileAttachment.actions.attach': 'Joindre des fichiers',
  'chat.fileAttachment.actions.removeNamed': 'Supprimer {name}',
  'chat.fileAttachment.actions.removeImage': 'Supprimer l\'image',
  'chat.fileAttachment.activeEditor.addFile': 'Ajouter le fichier : {name} au contexte',
  'chat.fileAttachment.activeEditor.pinSelection': 'Épingler la sélection au contexte',
  'chat.fileAttachment.activeEditor.remove': 'Retirer du contexte',
  'chat.pendingChanges.fileCountSingle': 'Fichier {count}',
  'chat.pendingChanges.fileCountPlural': 'Fichiers {count}',
  'chat.pendingChanges.changedInWorkspace': 'changé dans l\'espace de travail',
  'chat.changedFiles.title': 'Fichiers modifiés',
  'chat.changedFiles.actions.openFileTitle': 'Ouvrir {path}',
  'chat.emptyState.opencodeUnreachable': 'OpenCode n\'est pas accessible',
  'chat.emptyState.startNewChat': 'Démarrer une nouvelle discussion',
  'chat.emptyState.draftTitle': 'Sur quoi travaillons-nous ?',
  'chat.emptyState.draftTitleWithProject': 'Sur quoi travaillons-nous dans {project} ?',
  'chat.scrollToBottom.aria': 'Faire défiler vers le bas',
  'chat.timeline.relative.justNow': 'à l’instant',
  'chat.timeline.relative.minutesAgo': 'il y a {count} min',
  'chat.timeline.relative.hoursAgo': 'il y a {count} h',
  'chat.timeline.relative.daysAgo': 'il y a {count} j',
  'chat.timeline.title': 'Chronologie des conversations',
  'chat.timeline.description': 'Accédez à n’importe quel point de la conversation ou créez une nouvelle session',
  'chat.timeline.searchPlaceholder': 'Rechercher des messages...',
  'chat.timeline.empty.search': 'Aucun message trouvé',
  'chat.timeline.empty.session': 'Aucun message dans cette session pour le moment',
  'chat.timeline.noTextContent': '[Aucun contenu textuel]',
  'chat.timeline.actions.title': 'Actions',
  'chat.timeline.actions.revertFromHere': 'Revenir à partir d\'ici',
  'chat.timeline.actions.forkFromHere': 'Fourche d\'ici',
  'chat.timeline.actions.previousTurn': 'Tour précédent',
  'chat.timeline.actions.latest': 'Dernier',
  'chat.timeline.help.clickMessage': 'Cliquez sur un message pour y faire défiler la conversation',
  'chat.timeline.help.undoToPoint': 'Annuler jusqu\'à présent (le texte du message remplira la saisie)',
  'chat.timeline.help.createSessionFromHere': 'Créez une nouvelle session à partir d\'ici',
  'chat.statusRow.todo.status.inProgress': 'En cours',
  'chat.statusRow.todo.status.pending': 'En attente',
  'chat.statusRow.todo.status.completed': 'Complété',
  'chat.statusRow.todo.status.cancelled': 'Annulé',
  'chat.statusRow.todo.priority.high': 'Haute priorité',
  'chat.statusRow.todo.priority.medium': 'Priorité moyenne',
  'chat.statusRow.todo.priority.low': 'Faible priorité',
  'chat.statusRow.actions.stopGeneratingAria': 'Arrêter de générer',
  'chat.statusRow.tasksTitle': 'Tâches',
  'chat.statusRow.summary.activeLeft': '{active} actif · {left} gauche',
  'chat.statusRow.aborted': 'Avorté',
  'chat.revertIndicator.redo': 'Refaire',
  'chat.revertIndicator.redoAria': 'Rétablir : restaurer les messages annulés',
  'chat.revertPopover.title': 'Rétabli',
  'chat.revertPopover.noTextContent': 'Aucun contenu textuel',
  'chat.revertPopover.forkFromHere': 'Fourche d\'ici',
  'chat.revertPopover.forkFromMessage': 'Fork de ce message',
  'chat.revertPopover.restoreAll': 'Tout restaurer',
  'chat.revertPopover.restore': 'Restaurer',
  'chat.revertPopover.revert': 'Revenir',
  'chat.revertPopover.fork': 'Fourchette',
  'chat.revert.toast.undo': 'Revenu à {preview}',
  'chat.revert.toast.redo': 'Refait',
  'chat.revert.toast.restored': 'Restauré tous les messages',
  'chat.errorBoundary.title': 'Erreur de discussion',
  'chat.errorBoundary.description': 'L\'interface de discussion a rencontré une erreur. Cela peut être dû à un problème de réseau temporaire ou à des données de message corrompues.',
  'chat.errorBoundary.sessionLabel': 'Session',
  'chat.errorBoundary.detailsSummary': 'Détails de l\'erreur',
  'chat.errorBoundary.resetAction': 'Réinitialiser le chat',
  'chat.errorBoundary.persistentHint': 'Si le problème persiste, essayez d\'actualiser la page.',
  'chat.autocomplete.tabs.commands': 'Commandes',
  'chat.autocomplete.tabs.agents': 'Agents',
  'chat.autocomplete.tabs.files': 'Fichiers',
  'chat.autocomplete.keyboardHint': '↑↓ naviguer • Entrer sélectionner • Esc fermer',
  'chat.commandAutocomplete.command.initDescription': 'Créer/mettre à jour le fichier AGENTS.md',
  'chat.commandAutocomplete.command.undoDescription': 'Annuler le dernier message',
  'chat.commandAutocomplete.command.redoDescription': 'Refaire les messages précédemment annulés',
  'chat.commandAutocomplete.command.timelineDescription': 'Ouvrir la chronologie de la conversation',
  'chat.commandAutocomplete.command.compactDescription': 'Compresser l\'historique des sessions à l\'aide de l\'IA pour réduire la taille du contexte',
  'chat.commandAutocomplete.command.summaryDescription': 'Résumé de session non destructif. Indice de sujet facultatif après la commande.',
  'chat.commandAutocomplete.command.workspaceReviewDescription': 'Examinez les modifications actuelles de l’espace de travail pour les problèmes de signal élevé uniquement.',
  'chat.commandAutocomplete.badge.skill': 'skill',
  'chat.commandAutocomplete.badge.command': 'commande',
  'chat.commandAutocomplete.badge.system': 'système',
  'chat.commandAutocomplete.empty': 'Aucune commande trouvée',
  'chat.agentMentionAutocomplete.badge.system': 'système',
  'chat.agentMentionAutocomplete.empty': 'Aucun agent trouvé',
  'chat.fileMentionAutocomplete.searchMoreAgents': 'Tapez pour rechercher plus d\'agents',
  'chat.fileMentionAutocomplete.empty': 'Aucune correspondance trouvée',
  'chat.queuedMessage.attachments': '+Fichier(s) {count}',
  'chat.queuedMessage.empty': '(vide)',
  'chat.queuedMessage.title': 'Messages en file d\'attente',
  'chat.queuedMessage.edit': 'modifier',
  'chat.queuedMessage.send': 'envoyer',
  'chat.queuedMessage.removeAria': 'Supprimer de la file d\'attente',
  'chat.queuedMessage.reorderAria': 'Glisser pour réorganiser',
  'chat.container.returnToParent.aria': 'Retour à la session parents',
  'chat.container.returnToParent.titleNamed': 'Retourner à : {title}',
  'chat.container.returnToParent.title': 'Retour à la session parents',
  'chat.container.returnToParent.label': 'Mère',
  'chat.container.readOnlySubagentPromptBanner': 'Les sessions de sous-agent ne peuvent pas être invitées.',
  'chat.unifiedControls.title': 'Contrôles',
  'chat.unifiedControls.model.title': 'Modèle',
  'chat.unifiedControls.model.noRecent': 'Aucun modèle récent',
  'chat.unifiedControls.model.moreAria': 'Plus de modèles',
  'chat.unifiedControls.effort.title': 'Effort',
  'chat.unifiedControls.effort.moreAria': 'Plus d\'options d\'effort',
  'chat.questionCard.summaryTab': 'Résumé',
  'chat.questionCard.noAnswer': '(pas de réponse)',
  'chat.questionCard.inputNeeded': 'Entrée nécessaire',
  'chat.questionCard.fromSubagent': 'Du sous-agent',
  'chat.questionCard.questionFallback': 'Question {index}',
  'chat.questionCard.selectMultiple': 'Sélectionnez plusieurs',
  'chat.questionCard.recommended': 'recommandé',
  'chat.questionCard.other': 'Autre…',
  'chat.questionCard.yourAnswer': 'Votre Réponse',
  'chat.questionCard.submit': 'Soumettre',
  'chat.questionCard.next': 'Suivant',
  'chat.questionCard.dismiss': 'Ignorer',
  'chat.questionCard.copyMarkdown': 'Copier en Markdown',
  'chat.questionCard.copyJson': 'Copier sous JSON',
  'chat.questionCard.copiedMarkdown': 'Question copiée en tant que Markdown',
  'chat.questionCard.copiedJson': 'Question copiée sous le nom JSON',
  'chat.questionCard.copyFailed': 'Échec de la copie de la question',
  'chat.textSelection.toast.noProject': 'Aucun projet trouvé pour cette session',
  'chat.textSelection.toast.addToNotesFailed': 'Échec de l\'ajout aux notes',
  'chat.textSelection.toast.addToNotesSuccess': 'Ajout du texte sélectionné aux notes',
  'chat.textSelection.toast.addToNotesSummaryFailed': 'Impossible de résumer la sélection, ajout du texte sélectionné aux notes',
  'chat.textSelection.actions.addToChat': 'Ajouter au chat',
  'chat.textSelection.actions.newSession': 'Nouvelle session',
  'chat.textSelection.actions.copy': 'Copie',
  'chat.textSelection.actions.addToNotes': 'Ajouter aux notes',
  'chat.textSelection.title.addToCurrentChat': 'Ajouter au chat actuel',
  'chat.textSelection.title.newSessionWithSelection': 'Créer une nouvelle session avec sélection',
  'chat.textSelection.title.saveInsightToNotes': 'Enregistrer le texte sélectionné dans les notes',
  'chat.messageBody.actions.revertAria': 'Revenir à ce message',
  'chat.messageBody.actions.revert': 'Revenir à partir d\'ici',
  'chat.messageBody.actions.forkAria': 'Fork de ce message',
  'chat.messageBody.actions.fork': 'Fourche d\'ici',
  'chat.messageBody.actions.copyMessageAria': 'Copier le texte du message',
  'chat.messageBody.actions.copyMessage': 'Copier le message',
  'chat.messageBody.actions.openPreviewAria': 'Ouvrir l\'aperçu',
  'chat.messageBody.actions.openPreview': 'Ouvrir l\'aperçu',
  'chat.messageBody.actions.copyAnswer': 'Copier la réponse',
  'chat.messageBody.actions.savingImage': 'Enregistrement de l\'image...',
  'chat.messageBody.actions.saveAsImage': 'Enregistrer sous image',
  'chat.messageBody.actions.saveAsPlan': 'Enregistrer comme forfait',
  'chat.messageBody.actions.startNewSession': 'Démarrer une nouvelle session à partir de cette réponse',
  'chat.messageBody.actions.startNewMultiRun': 'Démarrer une nouvelle exécution multiple à partir de cette réponse',
  'chat.generatedResult.actions.copy': 'Copie',
  'chat.generatedResult.actions.copied': 'Copié',
  'chat.generatedResult.commit.title': 'Message de commit généré',
  'chat.generatedResult.commit.highlights': 'Points forts',
  'chat.generatedResult.pullRequest.title': 'Demande d\'extraction générée',
  'chat.generatedResult.pullRequest.titleLabel': 'Titre',
  'chat.generatedResult.pullRequest.bodyLabel': 'Corps',
  'chat.messageBody.tts.stopSpeaking': 'Arrête de parler',
  'chat.messageBody.tts.readAloud': 'Lire à haute voix',
  'chat.messageBody.tts.readAloudWithProvider': 'Lire à haute voix (voix {provider})',
  'chat.messageBody.toast.noProject': 'Aucun projet trouvé pour cette session',
  'chat.messageBody.toast.savePlanFailed': 'Échec de l\'enregistrement du plan',
  'chat.messageBody.toast.planSaved': 'Forfait enregistré',
  'chat.messageBody.toast.imageSaved': 'Image enregistrée',
  'chat.messageBody.toast.generateImageFailed': 'Échec de la génération de l\'image',
  'chat.chatInput.actions.commands': 'Commandes',
  'chat.chatInput.actions.attachFiles': 'Joindre des fichiers',
  'chat.chatInput.actions.addAttachment': 'Ajouter une pièce jointe',
  'chat.chatInput.actions.linkGithubIssue': 'Lien vers le problème GitHub',
  'chat.chatInput.actions.linkGithubPr': 'Lien GitHub PR',
  'chat.chatInput.actions.modelAgentSettings': 'Paramètres du modèle et de l\'agent',
  'chat.chatInput.actions.sendMessageAria': 'Envoyer un message',
  'chat.chatInput.actions.queueMessageAria': 'Message de file d\'attente',
  'chat.chatInput.actions.stopGeneratingAria': 'Arrêter de générer',
  'chat.chatInput.focusMode.toggleAria': 'Basculer le mode de mise au point',
  'chat.chatInput.focusMode.label': 'Mode de mise au point',
  'chat.chatInput.permissionAutoAccept.disable': 'Désactiver l\'acceptation automatique des autorisations',
  'chat.chatInput.permissionAutoAccept.enable': 'Activer l\'acceptation automatique des autorisations',
  'chat.chatInput.permissionAutoAccept.on': 'Acceptation automatique des autorisations : activée',
  'chat.chatInput.permissionAutoAccept.off': 'Acceptation automatique des autorisations : désactivée',
  'chat.chatInput.linked.byAuthor': 'par {author}',
  'chat.chatInput.linked.issue.openInBrowserAria': 'Problème ouvert dans le navigateur',
  'chat.chatInput.linked.issue.removeAria': 'Supprimer le problème lié',
  'chat.chatInput.linked.pr.number': 'PR #{number}',
  'chat.chatInput.linked.pr.openInBrowserAria': 'Ouvrir la demande d\'extraction dans le navigateur',
  'chat.chatInput.linked.pr.removeAria': 'Supprimer la demande d\'extraction liée',
  'chat.chatInput.placeholder.shell': 'Entrez la commande shell...',
  'chat.chatInput.placeholder.chat': '@ pour les fichiers/agents ; / pour les commandes et les skills ; ! pour shell ; # pour les extraits',
  'chat.chatInput.placeholder.chatCompact': 'Utiliser @ / ! # pour les aides',
  'chat.chatInput.placeholder.selectSession': 'Sélectionnez ou créez une session pour commencer à discuter',
  'chat.dictation.start': 'Démarrer la dictée',
  'chat.dictation.overlayAria': 'Dictée',
  'chat.dictation.downloadingModel': 'Téléchargement du modèle vocal...',
  'chat.dictation.downloadingModelProgress': 'Téléchargement du modèle vocal... {percent}%',
  'chat.dictation.listening': 'Écoute...',
  'chat.dictation.processing': 'Transcription...',
  'chat.dictation.failed': 'Échec de la transcription',
  'chat.dictation.cancel': 'Abandonner la dictée',
  'chat.dictation.insert': 'Insérer la transcription',
  'chat.dictation.insertAndSend': 'Insérer et envoyer',
  'chat.dictation.retry': 'Réessayer la transcription',
  'chat.dictation.discard': 'Abandonner l\'enregistrement',
  'chat.snippetAutocomplete.action.addNew': '+ Ajouter un nouvel extrait',
  'chat.snippetAutocomplete.empty': 'Aucun extrait trouvé',
  'chat.snippetAutocomplete.footer': '↑↓ naviguer • Entrer sélectionner • Esc fermer',
  'snippets.source.global': 'mondial',
  'snippets.source.project': 'projet',
  'chat.chatInput.toast.compactFailed': 'Échec du compactage de la session',
  'chat.chatInput.toast.summaryFailed': 'Échec de la génération du résumé',
  'chat.chatInput.toast.reviewFailed': 'Échec de l\'examen des modifications',
  'chat.chatInput.toast.attachmentsTooLarge': 'Les pièces jointes sont trop volumineuses pour être envoyées. Veuillez essayer de réduire le nombre ou la taille des images.',
  'chat.chatInput.toast.sendAttachmentsFailed': 'Échec de l\'envoi des pièces jointes. Essayez moins de fichiers ou des images plus petites.',
  'chat.chatInput.toast.messageSendFailed': 'Le message n\'a pas pu être envoyé. Pièces jointes restaurées.',
  'chat.chatInput.toast.clipboardAttachFailed': 'Échec de la pièce jointe de l\'image du presse-papiers',
  'chat.chatInput.toast.addedFileMentions': 'Ajout des mentions du fichier {count}',
  'chat.chatInput.toast.attachFileFailed': 'Impossible de joindre le fichier',
  'chat.chatInput.toast.attachNamedFailed': 'Échec de la connexion du {name}',
  'chat.chatInput.toast.someFilesSkipped': 'Certains fichiers ont été ignorés :\n{summary}',
  'chat.chatInput.toast.vscodePickFailed': 'Échec de la sélection des fichiers dans VS Code',
  'chat.chatInput.toast.openSessionFirst': 'Ouvrir d\'abord une session',
  'chat.chatInput.toast.togglePermissionAutoAcceptFailed': 'Échec de l\'activation de l\'acceptation automatique des autorisations',
  'chat.chatInput.reviewComments': 'Commentaires de révision :',
  'chat.chatInput.devServerLogs': 'Journaux du serveur de développement :',
  'chat.chatInput.devServerLogsRemove': 'Supprimer les journaux du serveur de développement',
  'chat.chatInput.previewAnnotations': 'Aperçu des annotations :',
  'chat.chatInput.previewContext': 'Contexte d\'aperçu :',
  'chat.chatInput.previewContextRemove': 'Supprimer le contexte d\'aperçu',
  'chat.chatInput.projectRoot': 'Racine du projet',
  'chat.chatInput.branch': 'Bifurquer',
  'chat.chatInput.draftPicker.projectTitle': 'Projet',
  'chat.chatInput.draftPicker.searchProjects': 'Rechercher des projets...',
  'chat.chatInput.draftPicker.searchBranches': 'Rechercher des branches...',
  'chat.chatInput.worktrees': 'Worktrees',
  'chat.chatInput.worktreeNew': '+ Nouveau',
  'chat.chatInput.drop.insertMention': 'Déposer pour insérer comme mention',
  'chat.chatInput.drop.attachFiles': 'Déposez les fichiers ici pour les joindre',
  'chat.chatInput.fileFallback': 'déposer',
  'chat.mobileStatus.editProjects.title': 'Modifier des projets',
  'chat.mobileStatus.editProjects.footer': 'Faites glisser les éléments pour les réorganiser ou utilisez les flèches pour les déplacer. Appuyez sur modifier pour modifier les détails.',
  'chat.mobileStatus.editProjects.empty': 'Aucun projet à modifier',
  'chat.mobileStatus.projects.empty': 'Aucun projet',
  'chat.mobileStatus.projects.addAria': 'Ajouter un projet',
  'chat.mobileStatus.projects.removeTitle': 'Supprimer le projet',
  'chat.mobileStatus.projects.removeDescriptionPrefix': 'Etes-vous sûr de vouloir supprimer',
  'chat.mobileStatus.projects.cancel': 'Annuler',
  'chat.mobileStatus.projects.remove': 'Retirer',
  'chat.mobileStatus.new': 'Nouveau',
  'chat.mobileStatus.noSessionsInProject': 'Aucune session dans ce projet',
  'chat.mobileStatus.swipeHint': '← Glissez ici pour ouvrir les barres latérales →',
  'chat.mobileStatus.toast.addProjectFailed': 'Échec de l\'ajout du projet',
  'chat.mobileStatus.toast.selectValidDirectory': 'Veuillez sélectionner un répertoire valide.',
  'chat.mobileStatus.toast.selectDirectoryFailed': 'Échec de la sélection du répertoire',
  'chat.toolOutputDialog.image.previousAria': 'Image précédente',
  'chat.toolOutputDialog.image.nextAria': 'Image suivante',
  'chat.toolOutputDialog.image.closeAria': 'Fermer l\'aperçu de l\'image',
  'chat.toolOutputDialog.mermaid.missingSource': 'URL de source Mermaid manquante.',
  'chat.toolOutputDialog.mermaid.loadFailed': 'Impossible de charger le diagramme Mermaid.',
  'chat.toolOutputDialog.mermaid.closeAria': 'Fermer l\'aperçu du diagramme',
  'chat.toolOutputDialog.mermaid.loading': 'Diagramme de chargement...',
  'chat.toolOutputDialog.mermaid.renderFailed': 'Impossible d\'afficher le diagramme Mermaid.',
  'chat.toolOutputDialog.mermaid.retry': 'Réessayer',
  'chat.toolOutputDialog.commandCompleted': 'Commande terminée avec succès',
  'chat.toolOutputDialog.noOutputProduced': 'Aucune sortie n\'a été produite',
  'chat.toolPart.lspErrors': 'Erreurs LSP',
  'chat.toolPart.moreErrors': '+{count} plus d\'erreurs',
  'chat.toolPart.error': 'Erreur:',
  'chat.toolPart.awaitingResponse': 'En attente de réponse...',
  'chat.toolPart.noOutputProduced': 'Aucune sortie produite',
  'chat.toolPart.output': 'Sortie',
  'chat.toolPart.openSubtask': 'Ouvrir la sous-tâche {type}',
  'chat.todo.total': 'Total',
  'chat.todo.inProgress': 'En cours',
  'chat.todo.pending': 'En attente',
  'chat.todo.completed': 'Complété',
  'chat.todo.cancelled': 'Annulé',
  'chat.permissionCard.workingDirectory': 'Répertoire de travail :',
  'chat.permissionCard.timeout': 'Temps mort:',
  'chat.permissionCard.request': 'Demande:',
  'chat.permissionCard.headers': 'En-têtes :',
  'chat.permissionCard.body': 'Corps:',
  'chat.permissionCard.action': 'Action:',
  'chat.permissionCard.details': 'Détails:',
  'chat.permissionCard.patterns': 'Motifs:',
  'chat.permissionToast.sessionFallback': 'Session',
  'chat.permissionToast.permissionFallback': 'Détails de l\'autorisation indisponibles',
  'chat.permissionToast.labels.session': 'Session:',
  'chat.permissionToast.labels.permission': 'Autorisation:',
  'chat.permissionToast.actions.once': 'Une fois',
  'chat.permissionToast.actions.always': 'Toujours',
  'chat.permissionToast.actions.deny': 'Refuser',
  'chat.permissionToast.actions.approveOnceAria': 'Approuver une fois',
  'chat.permissionToast.actions.approveOnceAriaWithSession': 'Approuver une fois pour {session}',
  'chat.permissionToast.actions.approveAlwaysAria': 'Approuver toujours',
  'chat.permissionToast.actions.approveAlwaysAriaWithSession': 'Approuver toujours pour {session}',
  'chat.permissionToast.actions.denyAria': 'Refuser l\'autorisation',
  'chat.permissionToast.actions.denyAriaWithSession': 'Refuser l\'autorisation pour {session}',
  'chat.permissionRequest.required': 'Autorisation requise :',
  'chat.permissionRequest.actions.once': 'Une fois',
  'chat.permissionRequest.actions.always': 'Toujours',
  'chat.permissionRequest.actions.reject': 'Refuser',
  'chat.modelControls.provider': 'Fournisseur',
  'chat.modelControls.capability.toolCalling': 'Appel d\'outil',
  'chat.modelControls.capability.reasoning': 'Raisonnement',
  'chat.modelControls.modality.text': 'Texte',
  'chat.modelControls.modality.image': 'Image',
  'chat.modelControls.modality.video': 'Vidéo',
  'chat.modelControls.modality.audio': 'Audio',
  'chat.modelControls.modality.pdf': 'PDF',
  'chat.modelControls.capabilities': 'Capacités',
  'chat.modelControls.modalities': 'Modalités',
  'chat.modelControls.input': 'Entrée',
  'chat.modelControls.output': 'Sortie',
  'chat.modelControls.limits': 'Limites',
  'chat.modelControls.context': 'Contexte',
  'chat.modelControls.metadata': 'Métadonnées',
  'chat.modelControls.knowledge': 'Connaissance',
  'chat.modelControls.release': 'Libérer',
  'chat.modelControls.mode': 'Mode',
  'chat.modelControls.model': 'Modèle',
  'chat.modelControls.temperature': 'Température',
  'chat.modelControls.topP': 'Haut P',
  'chat.modelControls.permissions': 'Autorisations',
  'chat.modelControls.edit': 'Modifier',
  'chat.modelControls.bash': 'Bash',
  'chat.modelControls.webFetch': 'WebFetch',
  'chat.modelControls.customPrompt': 'Prompt personnalisé',
  'chat.modelControls.selectModel': 'Sélectionnez le modèle',
  'chat.modelControls.searchProvidersOrModels': 'Rechercher des fournisseurs ou des modèles',
  'chat.modelControls.clearSearch': 'Effacer la recherche',
  'chat.modelControls.current': 'Actuel',
  'chat.modelControls.thinking': 'Pensée',
  'chat.modelControls.default': 'Défaut',
  'chat.modelControls.selectAgent': 'Sélectionnez un agent',
  'chat.modelControls.costPerMillion': 'Coût ($/1 million de jetons)',
  'chat.modelControls.metadataUnavailable': 'Métadonnées du modèle indisponibles.',
  'chat.modelControls.addNewProvider': 'Ajouter un nouveau fournisseur',
  'chat.modelControls.noAgentSelected': 'Aucun agent sélectionné.',
  'chat.modelControls.resetToDefault': 'Réinitialiser aux valeurs par défaut',
  'chat.modelControls.searchModels': 'Rechercher des modèles',
  'chat.modelControls.searchAgents': 'Agents de recherche',
  'chat.modelControls.noModelsFound': 'Aucun modèle trouvé',
  'chat.modelControls.favorites': 'Favoris',
  'chat.modelControls.recent': 'Récents',
  'chat.modelControls.addToFavorites': 'Ajouter aux favoris',
  'chat.modelControls.removeFromFavorites': 'Supprimer des favoris',
  'chat.modelControls.favoriteAria': 'Préféré',
  'chat.modelControls.unfavoriteAria': 'Supprimer des favoris',
  'chat.modelControls.collapseProvider': 'Fournisseur de réduction',
  'chat.modelControls.expandProvider': 'Développer le fournisseur',
  'chat.modelControls.keyboardHint': '↑↓ naviguer{thinking} • Entrer sélectionner • Esc fermer',
  'chat.modelControls.keyboardHintNavigate': '↑↓ naviguer',
  'chat.modelControls.keyboardHintSwitchAgent': 'Agent de commutation {shortcut}',
  'chat.modelControls.keyboardHintThinking': '←→ penser',
  'chat.modelControls.showThinkingModes': 'Afficher les modes de réflexion',
  'chat.modelControls.hideThinkingModes': 'Masquer les modes de réflexion',
  'chat.modelControls.moreThinkingModes': 'Plus de modes de réflexion',
  'chat.modelControls.noProvidersOrModelsFound': 'Aucun fournisseur ou modèle ne correspond à votre recherche.',
  'chat.modelControls.reorderFavoriteAria': 'Réorganiser les favoris',
  'chat.modelControls.reorderFavoriteTitle': 'Faites glisser pour réorganiser les favoris',
  'chat.modelControls.reorderProviderTitle': 'Faites glisser pour réorganiser le fournisseur',
  'chat.modelControls.permissionLabel.custom': 'Personnalisé',
  'chat.modelControls.permissionLabel.allow': 'Permettre',
  'chat.modelControls.permissionLabel.deny': 'Refuser',
  'chat.modelControls.permissionLabel.ask': 'Demander',
  'chat.modelControls.modeValue.primary': 'Primaire',
  'chat.modelControls.modeValue.subagent': 'Sous-agent',
  'chat.modelControls.modeValue.all': 'Tous',
  'chat.modelControls.modeValue.none': '—',
  'chat.reasoningTrace.thinking': 'Pensée',
  'chat.reasoningTrace.justification': 'Justification',
  'chat.reasoningTrace.expandAria': 'Développer la trace du raisonnement',
  'chat.reasoningTrace.collapseAria': 'Réduire la trace du raisonnement',
  'chat.reasoningTrace.thought': 'Pensée',
  'chat.messageBody.subtask.title': 'Tâche déléguée',
  'chat.messageBody.subtask.hidePrompt': 'Masquer le prompt',
  'chat.messageBody.subtask.showPrompt': 'Afficher le prompt',
  'chat.messageBody.subtask.openSession': 'Ouvrir une session de sous-tâche',
  'chat.messageBody.shellCommand.title': 'Commande Shell',
  'chat.messageBody.shellCommand.hideOutput': 'Masquer la sortie',
  'chat.messageBody.shellCommand.showOutput': 'Afficher la sortie',
  'chat.messageBody.shellCommand.copied': 'Copié',
  'chat.messageBody.shellCommand.copyOutput': 'Copier la sortie',
  'commandPalette.title': 'Palette de commandes',
  'commandPalette.description': 'Recherchez des fichiers, des sessions et des commandes.',
  'commandPalette.input.placeholder': 'Rechercher des fichiers, des sessions, des commandes...',
  'commandPalette.empty.noResults': 'Aucun résultat trouvé.',
  'commandPalette.empty.searchingFiles': 'Recherche de fichiers...',
  'commandPalette.item.newSession': 'Nouvelle session',
  'commandPalette.item.newMiniChat': 'Nouvelle mini-fenêtre de discussion',
  'commandPalette.item.newWorktreeDraft': 'Nouveau brouillon d\'worktree',
  'commandPalette.item.addProject': 'Ajouter un projet',
  'commandPalette.item.showSessionSwitcher': 'Afficher le sélecteur de session',
  'commandPalette.item.toggleSidebar': 'Basculer la barre latérale',
  'commandPalette.item.toggleRightSidebar': 'Basculer la barre latérale droite',
  'commandPalette.item.showContextUsage': 'Afficher l\'utilisation du contexte',
  'commandPalette.item.toggleTerminal': 'Basculer le terminal',
  'commandPalette.item.openSettings': 'Ouvrez les paramètres...',
  'commandPalette.session.untitled': 'Session sans titre',
  'openCodeStatusDialog.title': 'Statut OpenCode',
  'openCodeStatusDialog.description': 'Inspectez l’état et les diagnostics actuels du OpenCode.',
  'openCodeStatusDialog.actions.copy': 'Copie',
  'openCodeStatusDialog.empty.noData': 'Aucune donnée.',
  'openCodeStatusDialog.toast.copiedTitle': 'Copié',
  'openCodeStatusDialog.toast.copiedDescription': 'Statut copié dans le presse-papiers',
  'openCodeStatusDialog.toast.copyFailed': 'Échec de la copie du statut',
  'saveProjectPlanDialog.title': 'Enregistrer le plan de projet',
  'saveProjectPlanDialog.description': 'Enregistrez ce plan dans votre projet en tant que fichier Markdown.',
  'saveProjectPlanDialog.field.title': 'Titre',
  'saveProjectPlanDialog.field.titlePlaceholder': 'Titre du plan',
  'saveProjectPlanDialog.field.contentPreview': 'Aperçu du contenu',
  'saveProjectPlanDialog.actions.cancel': 'Annuler',
  'saveProjectPlanDialog.actions.save': 'Sauvegarder',
  'saveProjectPlanDialog.actions.saving': 'Enregistrement...',
  'branchPickerDialog.title': 'Sélecteur de branches',
  'branchPickerDialog.description.localBranchesForProject': 'Branches locales pour {project}',
  'branchPickerDialog.description.selectProject': 'Sélectionnez un projet pour afficher les branches',
  'branchPickerDialog.search.placeholder': 'Rechercher des branches...',
  'branchPickerDialog.search.renameBranchPlaceholder': 'Renommer la branche',
  'branchPickerDialog.state.noProjectSelected': 'Aucun projet sélectionné',
  'branchPickerDialog.state.loadingBranches': 'Chargement des branches...',
  'branchPickerDialog.state.noMatchingBranches': 'Aucune branche correspondante',
  'branchPickerDialog.state.noBranchesFound': 'Aucune branche trouvée',
  'branchPickerDialog.badge.head': 'HEAD',
  'branchPickerDialog.badge.worktree': 'worktree',
  'branchPickerDialog.actions.createWorktreeAria': 'Créer un worktree à partir d\'une branche',
  'branchPickerDialog.actions.renameAria': 'Renommer la branche',
  'branchPickerDialog.actions.deleteAria': 'Supprimer la branche',
  'branchPickerDialog.actions.deleteWorktreeAria': 'Supprimer le worktree',
  'branchPickerDialog.actions.confirmRenameAria': 'Confirmer le changement de nom',
  'branchPickerDialog.actions.cancelRenameAria': 'Annuler le changement de nom',
  'branchPickerDialog.actions.confirmDeleteAria': 'Confirmer la suppression de la branche',
  'branchPickerDialog.actions.cancelDeleteAria': 'Annuler la suppression de la branche',
  'branchPickerDialog.actions.deletePrompt': 'Supprimer',
  'branchPickerDialog.actions.forceDeletePrompt': 'Forcer la suppression',
  'branchPickerDialog.tooltip.createWorktree': 'Créer un worktree',
  'branchPickerDialog.tooltip.worktreeAlreadyExists': 'Le worktree existe déjà',
  'branchPickerDialog.tooltip.rename': 'Renommer la branche',
  'branchPickerDialog.tooltip.renameDisabledForRoot': 'Impossible de renommer la branche racine',
  'branchPickerDialog.tooltip.delete': 'Supprimer la branche',
  'branchPickerDialog.tooltip.deleteCurrentBranch': 'Impossible de supprimer la branche actuelle',
  'branchPickerDialog.tooltip.deleteDisabledForRoot': 'Impossible de supprimer la branche racine',
  'branchPickerDialog.tooltip.deleteWorktree': 'Supprimer le worktree',
  'branchPickerDialog.tooltip.deleteWorktreeRootProtected': 'Impossible de supprimer le worktree racine',
  'branchPickerDialog.toast.branchRenamed': 'Branche renommée',
  'branchPickerDialog.toast.failedToRenameBranch': 'Échec du renommage de la branche',
  'branchPickerDialog.toast.branchDeleted': 'Branche supprimée',
  'branchPickerDialog.toast.branchNotMerged': 'La branche n\'est pas entièrement fusionnée',
  'branchPickerDialog.toast.confirmAgainToForceDelete': 'Confirmez à nouveau pour forcer la suppression',
  'branchPickerDialog.toast.failedToDeleteBranch': 'Échec de la suppression de la branche',
  'branchPickerDialog.toast.worktreeCreated': 'Worktree créé',
  'branchPickerDialog.toast.failedToCreateWorktree': 'Échec de la création du worktree',
  'branchPickerDialog.error.failedToLoad': 'Échec du chargement des branches',
  'branchPickerDialog.error.renameRejected': 'Le changement de nom a été refusé',
  'branchPickerDialog.error.renameFailed': 'Échec du renommage de la branche',
  'branchPickerDialog.error.deleteRejected': 'La suppression a été refusée',
  'branchPickerDialog.error.deleteFailed': 'Échec de la suppression de la branche',
  'branchPickerDialog.error.createWorktreeFailed': 'Échec de la création du worktree',
  'projectEditDialog.title': 'Modifier le projet',
  'projectEditDialog.field.name': 'Nom',
  'projectEditDialog.field.namePlaceholder': 'Nom du projet',
  'projectEditDialog.field.color': 'Couleur',
  'projectEditDialog.field.icon': 'Icône',
  'projectEditDialog.field.preview': 'Aperçu',
  'projectEditDialog.field.iconBackground': 'Fond d\'icône',
  'projectEditDialog.field.iconBackgroundAria': 'Couleur d’arrière-plan de l’icône du projet',
  'projectEditDialog.option.none': 'Aucun',
  'projectEditDialog.actions.uploadIcon': 'Icône de téléchargement',
  'projectEditDialog.actions.uploading': 'Téléchargement...',
  'projectEditDialog.actions.discoverFavicon': 'Découvrez Favicon',
  'projectEditDialog.actions.discovering': 'Découverte...',
  'projectEditDialog.actions.removeProjectIcon': 'Supprimer l\'icône du projet',
  'projectEditDialog.actions.removing': 'Suppression...',
  'projectEditDialog.actions.undoRemove': 'Annuler Supprimer',
  'projectEditDialog.actions.clear': 'Effacer',
  'projectEditDialog.actions.cancel': 'Annuler',
  'projectEditDialog.actions.save': 'Sauvegarder',
  'projectEditDialog.toast.failedToUploadIcon': 'Échec du téléchargement de l\'icône du projet',
  'projectEditDialog.toast.iconUpdated': 'Icône du projet mise à jour',
  'projectEditDialog.toast.failedToRemoveIcon': 'Échec de la suppression de l\'icône du projet',
  'projectEditDialog.toast.iconRemoved': 'Icône du projet supprimée',
  'projectEditDialog.toast.failedToDiscoverIcon': 'Échec de la découverte de l\'icône du projet',
  'projectEditDialog.toast.customIconAlreadySet': 'Icône personnalisée déjà définie pour ce projet',
  'projectEditDialog.toast.iconDiscovered': 'Icône de projet découverte',
  'agentManager.sidebar.search.placeholder': 'Rechercher des groupes d\'agents...',
  'agentManager.sidebar.actions.newAgentGroup': 'Nouveau groupe d\'agents',
  'agentManager.sidebar.actions.more': '... Plus ({count})',
  'agentManager.sidebar.actions.showLess': 'Afficher moins',
  'agentManager.sidebar.section.agentGroups': 'Groupes d\'agents',
  'agentManager.sidebar.state.loading': 'Chargement...',
  'agentManager.sidebar.state.noGroupsFound': 'Aucun groupe trouvé',
  'agentManager.sidebar.state.noGroupsYet': 'Aucun groupe d\'agents pour l\'instant',
  'agentManager.sidebar.state.createToGetStarted': 'Créez un nouveau groupe d\'agents pour commencer',
  'agentManager.sidebar.item.modelCountSingle': 'Modèle {count}',
  'agentManager.sidebar.item.modelCountPlural': 'Modèles {count}',
  'agentManager.sidebar.item.groupMenuAria': 'Menu de groupe',
  'agentManager.sidebar.item.delete': 'Supprimer',
  'agentManager.sidebar.relativeTime.now': 'maintenant',
  'agentManager.sidebar.relativeTime.minutes': '{count}m',
  'agentManager.sidebar.relativeTime.hours': '{count}h',
  'agentManager.sidebar.relativeTime.days': '{count}d',
  'agentManager.sidebar.dialog.deleteGroupTitle': 'Supprimer le groupe d\'agents',
  'agentManager.sidebar.dialog.deleteGroupDescription': 'Supprimer « {group} » ? Cela supprime tous les worktrees et sessions de ce groupe.',
  'agentManager.sidebar.dialog.cancel': 'Annuler',
  'agentManager.sidebar.dialog.delete': 'Supprimer',
  'agentManager.sidebar.dialog.deleting': 'Suppression...',
  'agentManager.sidebar.toast.deletingGroup': 'Suppression de "{group}"...',
  'agentManager.sidebar.toast.deletedGroup': '"{group}" supprimé',
  'agentManager.sidebar.toast.failedToDeleteGroup': 'Échec de la suppression complète de "{group}"',
  'agentManager.detail.header.modelCountSingle': 'Modèle {count}',
  'agentManager.detail.header.modelCountPlural': 'Modèles {count}',
  'agentManager.detail.header.noBranch': 'Pas de branche',
  'agentManager.detail.actions.worktreeActionsAria': 'Actions du worktree',
  'agentManager.detail.actions.removeThisWorktree': 'Supprimer ce worktree',
  'agentManager.detail.actions.keepThisRemoveOthers': 'Laissez celui-ci, supprimez les autres',
  'agentManager.detail.actions.copyWorktreePath': 'Copier le chemin du worktree',
  'agentManager.detail.dialog.removeWorktreeTitle': 'Supprimer le worktree',
  'agentManager.detail.dialog.removeOtherWorktreesTitle': 'Supprimer les autres worktrees',
  'agentManager.detail.dialog.removeWorktreeDescription': 'Supprimer « {label} » ? Cela supprime toutes les sessions de ce worktree ainsi que le worktree lui-même.',
  'agentManager.detail.dialog.removeOtherWorktreesDescription': 'Conservez "{label}" et supprimez les autres worktrees dans "{group}".',
  'agentManager.detail.dialog.cancel': 'Annuler',
  'agentManager.detail.dialog.remove': 'Retirer',
  'agentManager.detail.dialog.removeOthers': 'Supprimer les autres',
  'agentManager.detail.dialog.working': 'Fonctionnement...',
  'agentManager.detail.state.loadingSessionFor': 'Session de chargement pour {label}',
  'agentManager.detail.state.sessionId': 'ID de session : {id}',
  'agentManager.detail.state.noSessionsInGroup': 'Aucune session dans ce groupe',
  'agentManager.detail.toast.noWorktreePath': 'Aucun chemin de worktree disponible',
  'agentManager.detail.toast.worktreePathCopied': 'Chemin du worktree copié',
  'agentManager.detail.toast.failedToCopyPath': 'Échec de la copie du chemin',
  'agentManager.detail.toast.removingWorktree': 'Suppression du worktree...',
  'agentManager.detail.toast.removingOtherWorktrees': 'Suppression d\'autres worktrees...',
  'agentManager.detail.toast.failedToFullyRemoveWorktree': 'Échec de la suppression complète du worktree',
  'agentManager.detail.toast.worktreeRemoved': 'Worktree supprimé',
  'agentManager.detail.toast.otherWorktreesRemoved': 'Suppression d\'autres worktrees',
  'agentManager.empty.groupName.label': 'Nom du groupe',
  'agentManager.empty.groupName.placeholder': 'e.g. fonctionnalité-auth, correction de bugs-connexion',
  'agentManager.empty.groupName.description': 'Utilisé pour le répertoire du worktree et le nommage des branches',
  'agentManager.empty.baseBranch.label': 'Branche de base',
  'agentManager.empty.baseBranch.description': 'Crée de nouvelles branches à partir de {branch}',
  'agentManager.empty.setupCommands.label': 'Commandes de configuration',
  'agentManager.empty.setupCommands.configured': '{count} configuré',
  'agentManager.empty.setupCommands.description': 'Les commandes s\'exécutent dans chaque nouveau worktree. Utilisez $ROOT_PROJECT_PATH pour la racine du projet.',
  'agentManager.empty.setupCommands.loading': 'Chargement...',
  'agentManager.empty.setupCommands.commandPlaceholder': 'p. ex. bun install',
  'agentManager.empty.setupCommands.removeCommandAria': 'Supprimer la commande',
  'agentManager.empty.setupCommands.addCommand': 'Ajouter une commande',
  'agentManager.empty.agent.label': 'Agent',
  'agentManager.empty.agent.description': 'Par défaut, votre agent par défaut configuré',
  'agentManager.empty.models.label': 'Modèles',
  'agentManager.empty.models.addModel': 'Ajouter un modèle',
  'agentManager.empty.models.selectedSingle': 'Modèle {count} sélectionné',
  'agentManager.empty.models.selectedPlural': 'Modèles {count} sélectionnés',
  'agentManager.empty.prompt.label': 'Invite',
  'agentManager.empty.prompt.placeholder': 'Demandez n\'importe quoi...',
  'agentManager.empty.prompt.addAttachmentAria': 'Ajouter une pièce jointe',
  'agentManager.empty.actions.startAgentGroupAria': 'Démarrer le groupe d\'agents',
  'agentManager.empty.toast.fileTooLarge': 'Le fichier "{fileName}" est trop volumineux (max 10 Mo)',
  'agentManager.empty.toast.failedToAttach': 'Échec de la connexion de "{fileName}"',
  'agentManager.empty.toast.attachedSingle': 'Fichier {count} joint',
  'agentManager.empty.toast.attachedPlural': 'Fichiers {count} joints',
  'agentManager.empty.toast.failedToCreateGroup': 'Échec de la création du groupe d\'agents',
  'openInApp.actions.open': 'Ouvrir',
  'openInApp.actions.openInAria': 'Ouvert dans {app}',
  'openInApp.actions.chooseAppAria': 'Choisissez l\'application à ouvrir',
  'openInApp.actions.copyPath': 'Copier le chemin',
  'openInApp.actions.refreshApps': 'Actualiser les applications',
  'openInApp.toast.pathCopied': 'Chemin copié dans le presse-papiers',
  'projectActions.actions.addActionAria': 'Ajouter une action',
  'projectActions.actions.addAction': 'Ajouter une action',
  'projectActions.actions.addNewAction': 'Ajouter une nouvelle action',
  'projectActions.actions.autoDiscover': 'Découverte automatique',
  'projectActions.actions.chooseActionAria': 'Choisir l\'action du projet',
  'projectActions.actions.openPreview': 'Ouvrir l\'aperçu',
  'projectActions.actions.runNamedAria': 'Exécutez {name}',
  'projectActions.actions.stopNamedAria': 'Arrêter {name}',
  'projectActions.label.fallbackAction': 'Action',
  'projectActions.toast.openedUrlFromOutput': 'URL ouvert à partir de la sortie d\'action',
  'projectActions.toast.openedForwardedUrl': 'Ouvert transmis URL',
  'projectActions.toast.openedActionUrl': 'Action ouverte URL',
  'projectActions.error.noActiveDirectory': 'Pas de répertoire actif',
  'projectActions.error.noActiveDirectoryForAction': 'Pas de répertoire actif pour l\'action',
  'projectActions.error.failedToCreateTerminalSession': 'Échec de la création d\'une session de terminal',
  'projectActions.error.invalidCustomUrlFormat': 'Format URL personnalisé non valide',
  'projectActions.error.selectedDesktopSshForwardUnavailable': 'Le transfert du bureau SSH sélectionné n\'est pas disponible',
  'projectActions.error.failedToRunAction': 'Échec de l\'exécution de l\'action',
  'mcpDropdown.title': 'Serveurs MCP',
  'mcpDropdown.actions.refreshAria': 'Rafraîchir',
  'mcpDropdown.actions.openAria': 'Serveurs MCP',
  'mcpDropdown.statusAria': 'Statut MCP',
  'mcpDropdown.status.unknown': 'Inconnu',
  'mcpDropdown.status.connected': 'Connecté',
  'mcpDropdown.status.failed': 'Échec : {error}',
  'mcpDropdown.status.unknownError': 'Erreur inconnue',
  'mcpDropdown.status.needsAuth': 'Nécessite une authentification',
  'mcpDropdown.status.needsRegistration': 'Nécessite un enregistrement : {error}',
  'mcpDropdown.empty.configureInConfig': 'Configurez les serveurs MCP dans la configuration OpenCode.',
  'sessionAuth.error.rateLimitTitle': 'Trop de tentatives',
  'sessionAuth.error.networkTitle': 'Impossible d\'atteindre le serveur',
  'sessionAuth.error.rateLimitDescriptionSingle': 'Veuillez attendre {minutes} minute avant de réessayer.',
  'sessionAuth.error.rateLimitDescriptionPlural': 'Veuillez attendre {minutes} minutes avant de réessayer.',
  'sessionAuth.error.networkDescription': 'Nous n\'avons pas pu vérifier la session d\'interface utilisateur. Vérifiez que le service est en cours d\'exécution et réessayez.',
  'sessionAuth.error.retry': 'Réessayer',
  'sessionAuth.error.passkeySetupFailed': 'La configuration du mot de passe a échoué.',
  'sessionAuth.error.incorrectPassword': 'Mot de passe incorrect. Essayer à nouveau.',
  'sessionAuth.error.unexpectedResponse': 'Réponse inattendue du serveur.',
  'sessionAuth.error.networkRetry': 'Erreur réseau. Vérifiez la connexion et réessayez.',
  'sessionAuth.error.passkeySignInCanceled': 'La connexion par mot de passe a été annulée.',
  'sessionAuth.error.enterPasswordForPasskey': 'Entrez votre mot de passe pour ajouter un mot de passe.',
  'sessionAuth.locked.tunnelTitle': 'Accès au tunnel requis',
  'sessionAuth.locked.unlockTitle': 'Débloquez OpenChamber',
  'sessionAuth.locked.tunnelDescription': 'Ouvrez ce tunnel à l\'aide du lien de connexion unique depuis l\'application de bureau.',
  'sessionAuth.locked.passwordDescription': 'Cette session est protégée par mot de passe.',
  'sessionAuth.locked.hostSwitcherHint': 'Utilisez local si la remote est inaccessible.',
  'sessionAuth.actions.cancelPasskey': 'Annuler le mot de passe',
  'sessionAuth.actions.usePasskey': 'Utiliser le mot de passe',
  'sessionAuth.actions.unlockingAria': 'Déverrouillage',
  'sessionAuth.actions.unlockAria': 'Ouvrir',
  'sessionAuth.actions.trustDevice': 'Faites confiance à cet appareil',
  'sessionAuth.actions.trustDeviceAria': 'Faites confiance à cet appareil',
  'sessionAuth.actions.cancelPasskeySetup': 'Annuler la configuration du mot de passe',
  'sessionAuth.actions.addPasskey': 'Ajouter un mot de passe',
  'sessionAuth.password.placeholder': 'Entrez le mot de passe',
  'sessionAuth.toast.passkeyAdded': 'Clé d\'accès ajoutée',
  'sessionAuth.toast.passkeySetupCanceled': 'Configuration du mot de passe annulée',
  'desktopHostSwitcher.title': 'Instance',
  'desktopHostSwitcher.description': 'Basculer entre les serveurs OpenChamber locaux et distants',
  'desktopHostSwitcher.header.current': 'Actuel',
  'desktopHostSwitcher.header.default': 'Défaut',
  'desktopHostSwitcher.header.currentColon': 'Actuel:',
  'desktopHostSwitcher.header.currentDefaultColon': 'Valeur par défaut actuelle :',
  'desktopHostSwitcher.status.connected': 'Connecté',
  'desktopHostSwitcher.status.authRequired': 'Authentification requise',
  'desktopHostSwitcher.status.wrongService': 'Mauvais service',
  'desktopHostSwitcher.status.unreachable': 'Injoignable',
  'desktopHostSwitcher.status.unknown': 'Inconnu',
  'desktopHostSwitcher.status.ping': '· Ping {ms}ms',
  'desktopHostSwitcher.statusAria': 'Statut de l\'instance',
  'desktopHostSwitcher.sshPhase.ready': 'Prêt',
  'desktopHostSwitcher.sshPhase.error': 'Erreur',
  'desktopHostSwitcher.sshPhase.reconnecting': 'Reconnexion',
  'desktopHostSwitcher.sshPhase.resolvingConfig': 'Résolution de la configuration',
  'desktopHostSwitcher.sshPhase.checkingAuth': 'Vérification de l\'authentification',
  'desktopHostSwitcher.sshPhase.connectingSsh': 'Connexion du SSH',
  'desktopHostSwitcher.sshPhase.probingRemote': 'Sondage à distance',
  'desktopHostSwitcher.sshPhase.installing': 'Installation',
  'desktopHostSwitcher.sshPhase.updating': 'Mise à jour',
  'desktopHostSwitcher.sshPhase.detectingServer': 'Serveur de détection',
  'desktopHostSwitcher.sshPhase.startingServer': 'Démarrage du serveur',
  'desktopHostSwitcher.sshPhase.forwardingPorts': 'Ports de transfert',
  'desktopHostSwitcher.sshPhase.idle': 'Inactif',
  'desktopHostSwitcher.ssh.needInstancesHint': 'Besoin d\'instances SSH ? Gérez-les dans Paramètres.',
  'desktopHostSwitcher.ssh.instanceFallback': 'Instance SSH',
  'desktopHostSwitcher.ssh.connectingTo': 'Connexion à {host}',
  'desktopHostSwitcher.actions.refresh': 'Rafraîchir',
  'desktopHostSwitcher.actions.refreshInstancesAria': 'Actualiser les instances',
  'desktopHostSwitcher.actions.remoteSsh': 'SSH remote',
  'desktopHostSwitcher.actions.instanceActionsAria': 'Actions d\'instance',
  'desktopHostSwitcher.actions.edit': 'Modifier',
  'desktopHostSwitcher.actions.delete': 'Supprimer',
  'desktopHostSwitcher.actions.connect': 'Connecter',
  'desktopHostSwitcher.actions.defaultInstanceAria': 'Instance par défaut',
  'desktopHostSwitcher.actions.setAsDefaultAria': 'Définir par défaut',
  'desktopHostSwitcher.actions.setAsDefault': 'Définir par défaut',
  'desktopHostSwitcher.actions.openInNewWindowAria': 'Ouvrir dans une nouvelle fenêtre',
  'desktopHostSwitcher.actions.openInNewWindow': 'Ouvrir dans une nouvelle fenêtre',
  'desktopHostSwitcher.actions.addInstance': 'Ajouter une instance',
  'desktopHostSwitcher.actions.cancel': 'Annuler',
  'desktopHostSwitcher.actions.save': 'Sauvegarder',
  'desktopHostSwitcher.actions.add': 'Ajouter',
  'desktopHostSwitcher.actions.switchToLocal': 'Passer au local',
  'desktopHostSwitcher.actions.retry': 'Réessayer',
  'desktopHostSwitcher.actions.switchInstanceAria': 'Changer d\'instance',
  'desktopHostSwitcher.actions.switchInstance': 'Changer d\'instance',
  'desktopHostSwitcher.actions.switchToAria': 'Passer à {instance}',
  'desktopHostSwitcher.field.labelPlaceholder': 'Étiquette',
  'desktopHostSwitcher.field.labelOptionalPlaceholder': 'Étiquette (facultatif)',
  'desktopHostSwitcher.field.urlPlaceholder': 'https://hôte:port',
  'desktopHostSwitcher.state.limitedOnPage': 'Le sélecteur d\'instance est limité sur cette page. Utilisez Local pour récupérer.',
  'desktopHostSwitcher.state.loading': 'Chargement...',
  'desktopHostSwitcher.state.instanceUnreachable': 'Instance inaccessible',
  'desktopHostSwitcher.edit.title': 'Modifier l\'instance',
  'desktopHostSwitcher.add.title': 'Ajouter une instance',
  'desktopHostSwitcher.error.failedToSave': 'Échec de l\'enregistrement',
  'desktopHostSwitcher.error.failedToLoad': 'Échec du chargement',
  'desktopHostSwitcher.error.invalidUrl': 'URL non valide (doit être http/https)',
  'desktopHostSwitcher.error.failedToOpenNewWindow': 'Échec de l\'ouverture d\'une nouvelle fenêtre',
  'desktopHostSwitcher.instance.local': 'Local',
  'desktopHostSwitcher.instance.fallback': 'Instance',
  'desktopHostSwitcher.startup.title': 'Instance SSH par défaut indisponible',
  'desktopHostSwitcher.startup.connectingTo': 'Connexion à {host}...',
  'desktopHostSwitcher.startup.failed': 'Échec de la connexion de l\'instance SSH par défaut.',
  'desktopHostSwitcher.toast.sshConnected': 'Instance SSH "{host}" connectée',
  'desktopHostSwitcher.toast.sshFailedToConnect': 'L\'instance SSH "{host}" n\'a pas réussi à se connecter',
  'desktopHostSwitcher.toast.instanceUnreachable': 'L\'instance "{host}" est inaccessible',
  'miniChat.header.newSession': 'Nouvelle session',
  'miniChat.header.session': 'Session',
  'miniChat.header.defaultAgent': 'Agent par défaut',
  'miniChat.header.noModel': 'Aucun modèle',
  'miniChat.status.busy': 'En cours d\'exécution',
  'miniChat.status.retry': 'Réessayer',
  'miniChat.status.idle': 'Inactif',
  'miniChat.actions.pin': 'Épingler au-dessus des autres fenêtres',
  'miniChat.actions.unpin': 'Détacher la fenêtre',
  'miniChat.actions.pinAria': 'Épingler la fenêtre Mini Chat',
  'miniChat.actions.unpinAria': 'Désépingler la fenêtre Mini Chat',
  'miniChat.actions.openMain': 'Ouvrir dans la fenêtre principale',
  'miniChat.actions.openMainAria': 'Ouvrir la session dans la fenêtre principale',
  'miniChat.unavailable.title': 'Session indisponible',
  'miniChat.unavailable.description': 'Cette session n\'a pas pu être chargée. Il peut avoir été supprimé, archivé ou ouvert à partir d\'un contexte de projet différent.',
  'sessions.sidebar.session.menu.openMiniChatWindow': 'Ouvrir dans la mini-fenêtre de discussion',
  'header.actions.newMiniChat': 'Nouvelle mini-fenêtre de discussion',
  'header.actions.newMiniChatAria': 'Ouvrir une nouvelle fenêtre de mini-chat',
  'header.actions.openSessionMiniChat': 'Session ouverte dans le mini-chat',
  'header.actions.openSessionMiniChatAria': 'Ouvrir la session en cours dans Mini Chat',
  'header.windowControls.groupAria': 'Champs de fenêtre',
  'header.windowControls.minimize': 'Réduire la fenêtre',
  'header.windowControls.maximize': 'Agrandir la fenêtre',
  'header.windowControls.restore': 'Fenêtre de restauration',
  'header.windowControls.close': 'Fermer la fenêtre',
  'errorBoundary.title': 'Quelque chose s\'est mal passé',
  'errorBoundary.description': 'L\'application a rencontré une erreur inattendue. Cela a été enregistré pour le débogage.',
  'errorBoundary.state.unknownError': 'Erreur inconnue',
  'errorBoundary.state.componentStackLabel': 'Pile de composants :',
  'errorBoundary.actions.errorDetails': 'Détails de l\'erreur',
  'errorBoundary.actions.tryAgain': 'Essayer à nouveau',
  'errorBoundary.actions.copy': 'Copie',
  'errorBoundary.actions.copied': 'Copié',
  'jsonTreeView.error.emptyJson': 'Contenu JSON vide',
  'jsonTreeView.error.invalidJson': 'JSON invalide',
  'jsonTreeView.error.invalidJsonTitle': 'JSON invalide',
  'jsonTreeView.actions.expandAll': 'Développer tout',
  'jsonTreeView.actions.collapseAll': 'Réduire tout',
  'numberInput.actions.decreaseAria': 'Diminuer la valeur',
  'numberInput.actions.increaseAria': 'Augmenter la valeur',
  'goToLineDialog.field.linePlaceholderShort': 'Ligne',
  'goToLineDialog.field.linePlaceholder': 'Numéro de ligne',
  'goToLineDialog.actions.go': 'Aller',
  'goToLineDialog.helper.editorUnavailable': 'Éditeur indisponible.',
  'goToLineDialog.helper.currentLineRange': 'Ligne actuelle : {current}. Tapez un numéro de ligne compris entre 1 et {max} vers lequel accéder.',
  'goToLineDialog.helper.goToLine': 'Aller à la ligne {line}',
  'dialog.common.actions.close': 'Fermer',
  'filesView.toast.relativePathCopied': 'Chemin relatif copié',
  'filesView.tree.menu.copyRelativePath': 'Copier le chemin relatif',
  'multiRun.branchSelector.placeholder.selectSourceBranch': 'Sélectionnez la branche source...',
  'multiRun.branchSelector.status.loadingBranches': 'Chargement des branches...',
  'multiRun.branchSelector.status.noBranchesFound': 'Aucune branche trouvée',
  'multiRun.branchSelector.status.notInGitRepository': 'Pas dans un dépôt git.',
  'multiRun.branchSelector.groups.localBranches': 'Branches locales',
  'multiRun.branchSelector.groups.remoteBranches': 'Branches du dépôt distant',
  'multiRun.window.actions.closeAria': 'Fermer le multi-exécution',
  'multiRun.window.description': 'Fenêtre multi-exécution OpenChamber.',
  'voice.status.idle': 'Prêt pour la voix',
  'voice.status.listening': 'Écoute...',
  'voice.status.processing': 'Traitement...',
  'voice.status.speaking': 'Parlant...',
  'voice.status.error': 'Erreur vocale',
  'voice.status.conversationModeActiveAria': 'Mode conversation actif',
  'voice.action.finishAndTranscribe': 'Terminer et transcrire la saisie vocale',
  'onboarding.common.actions.back': 'Retour',
  'onboarding.common.copyToClipboard': 'Copier dans le presse-papier',
  'onboarding.common.status.copiedToClipboard': 'Copié dans le presse-papiers',
  'onboarding.chooser.title': 'Bienvenue sur OpenChamber',
  'onboarding.chooser.description': 'Choisissez comment vous souhaitez vous connecter pour commencer.',
  'onboarding.chooser.tabs.localInstall': 'Installation locale',
  'onboarding.chooser.tabs.connectRemote': 'Se connecter en remote',
  'onboarding.localSetup.title': 'Configuration de OpenCode',
  'onboarding.localSetup.description': 'Installez OpenCode CLI pour continuer.',
  'onboarding.localSetup.dialog.selectOpencodeBinary': 'Sélectionnez le binaire OpenCode',
  'onboarding.localSetup.errors.cliNotReady': 'OpenCode CLI n’est pas encore prêt. Veuillez confirmer que l\'installation est terminée et réessayer.',
  'onboarding.localSetup.errors.detectionFailed': 'Échec de la détection',
  'onboarding.localSetup.windows.title': 'Configuration de Windows (WSL recommandé)',
  'onboarding.localSetup.windows.stepInstallWsl': 'Installez WSL (si nécessaire) avec',
  'onboarding.localSetup.windows.stepInstallWslSuffix': 'dans PowerShell.',
  'onboarding.localSetup.windows.stepRunInstallInWsl': 'Exécutez la commande d\'installation ci-dessous dans votre terminal WSL.',
  'onboarding.localSetup.windows.stepSetBinaryPath': 'Si OpenChamber ne détecte pas automatiquement OpenCode, définissez le chemin binaire ci-dessous.',
  'onboarding.localSetup.intro': 'OpenCode est le cœur de OpenChamber — installez-le pour commencer.',
  'onboarding.localSetup.docs.windows': 'Documents OpenCode Windows + WSL',
  'onboarding.localSetup.docs.default': 'Documents OpenCode',
  'onboarding.localSetup.actions.checking': 'Vérification…',
  'onboarding.localSetup.actions.checkNow': 'Vérifiez maintenant',
  'onboarding.localSetup.actions.checkAndContinue': 'J’ai terminé l’installation, vérifier et continuer',
  'onboarding.localSetup.helper.checkAndContinue': 'Cliquez pour vérifier si OpenCode CLI est disponible. En cas de succès, vous entrerez automatiquement dans l\'écran principal.',
  'onboarding.localSetup.status.watching': 'En attendant OpenCode',
  'onboarding.localSetup.status.autoContinue': 'Nous continuerons automatiquement une fois qu’il sera détecté.',
  'onboarding.localSetup.field.alreadyInstalled': 'Déjà installé ? Définissez le chemin OpenCode CLI :',
  'onboarding.localSetup.advanced.title': 'Définir un chemin binaire personnalisé',
  'onboarding.localSetup.troubleshoot.title': 'Vous avez des problèmes ?',
  'onboarding.localSetup.actions.browse': 'Parcourir',
  'onboarding.localSetup.actions.apply': 'Appliquer',
  'onboarding.localSetup.helper.saveAndReload': 'Enregistre dans les paramètres OpenChamber et recharge la configuration OpenCode.',
  'onboarding.localSetup.remotePreference': 'Vous préférez utiliser un serveur distant ?',
  'onboarding.localSetup.actions.connectRemoteServer': 'Se connecter au serveur distant →',
  'onboarding.localSetup.windows.hintInstallInWsl': 'Sous Windows, installez et exécutez OpenCode dans WSL pour une meilleure compatibilité.',
  'onboarding.localSetup.windows.hintDetectionFailed': 'Si la détection échoue, définissez un chemin natif (opencode.cmd/opencode.exe), wsl.exe ou wsl:/usr/local/bin/opencode.',
  'onboarding.localSetup.hint.ensurePath': 'Déjà installé ? Assurez-vous qu\'OpenCode est dans votre PATH.',
  'onboarding.localSetup.hint.setEnv': 'Ou définissez la variable d\'environnement OPENCODE_BINARY.',
  'onboarding.localSetup.hint.missingRuntime': 'Si vous voyez « env: node : No such file or directory » ou « env: bun : No such file or directory », installez ce runtime ou assurez-vous qu\'il se trouve sur PATH.',
  'onboarding.remoteConnection.title': 'Se connecter au serveur distant',
  'onboarding.remoteConnection.titleRecovery': 'Connectez-vous à un autre serveur',
  'onboarding.remoteConnection.description': 'Saisissez l\'adresse d\'un serveur OpenChamber auquel vous connecter.',
  'onboarding.remoteConnection.field.serverAddress': 'Adresse du serveur',
  'onboarding.remoteConnection.field.serverAddressPlaceholder': 'https://your-server.example.com:4096',
  'onboarding.remoteConnection.field.nameOptional': 'Nom (facultatif)',
  'onboarding.remoteConnection.field.namePlaceholder': 'Mon serveur distant',
  'onboarding.remoteConnection.errors.connectionTestFailed': 'Le test de connexion a échoué',
  'onboarding.remoteConnection.errors.failedToSaveConnection': 'Échec de l\'enregistrement de la connexion',
  'onboarding.remoteConnection.status.connectedSuccessfully': 'Connecté avec succès ({latencyMs}ms)',
  'onboarding.remoteConnection.status.authWarning': 'Le serveur nécessite une authentification. Vous pouvez toujours vous connecter.',
  'onboarding.remoteConnection.status.connectionFailed': 'Échec de la connexion',
  'onboarding.remoteConnection.status.suggestionsUnreachable': 'Suggestions : vérifiez l\'adresse du serveur, vérifiez que le serveur est en cours d\'exécution ou vérifiez votre connexion réseau.',
  'onboarding.remoteConnection.status.suggestionsWrongService': 'Suggestions : vérifiez que l’URL pointe vers un serveur OpenChamber ou contactez l\'administrateur du serveur.',
  'onboarding.remoteConnection.actions.testing': 'Essai…',
  'onboarding.remoteConnection.actions.testConnection': 'Tester la connexion',
  'onboarding.remoteConnection.actions.connectAndRestart': 'Connectez-vous et redémarrez',
  'onboarding.remoteConnection.actions.whatToDo': 'Qu\'aimeriez-vous faire ?',
  'onboarding.remoteConnection.actions.chooseDifferentServer': 'Choisissez un autre serveur',
  'onboarding.remoteConnection.actions.useLocalInstead': 'Utilisez plutôt local',
  'onboarding.remoteConnection.probe.authMessage': 'Le serveur nécessite une authentification. Vous pouvez toujours vous connecter, mais vous devrez peut-être fournir des informations d\'identification.',
  'onboarding.remoteConnection.probe.wrongServiceMessage': 'Le serveur a répondu mais n\'exécute pas OpenChamber. Vérifiez que l\'adresse pointe vers un serveur OpenChamber.',
  'onboarding.remoteConnection.probe.unreachableMessage': 'Le serveur est inaccessible. Vérifiez votre connexion réseau et vérifiez l\'adresse du serveur.',
  'onboarding.desktopRecovery.localUnavailable.title': 'OpenCode local indisponible',
  'onboarding.desktopRecovery.localUnavailable.description': 'OpenCode CLI n\'a pas pu être démarré ou n\'est pas installé. Installez OpenCode ou connectez-vous plutôt à un serveur distant.',
  'onboarding.desktopRecovery.localUnavailable.retry': 'Réessayer en local',
  'onboarding.desktopRecovery.localUnavailable.useLocal': 'Configurer localement',
  'onboarding.desktopRecovery.noDefaultConnection.title': 'Aucune connexion par défaut',
  'onboarding.desktopRecovery.noDefaultConnection.description': 'Votre connexion par défaut enregistrée est introuvable. Choisissez comment vous souhaitez vous connecter.',
  'onboarding.desktopRecovery.remoteUnreachable.title': 'Serveur distant inaccessible',
  'onboarding.desktopRecovery.remoteUnreachable.description': 'Impossible de se connecter à "{host}". Vérifiez votre connexion réseau et vérifiez l\'adresse du serveur.',
  'onboarding.desktopRecovery.remoteUnreachable.retry': 'Réessayer la connexion',
  'onboarding.desktopRecovery.incompatibleServer.title': 'Serveur incompatible',
  'onboarding.desktopRecovery.incompatibleServer.description': 'Le serveur « {host} » n\'exécute pas OpenChamber. Vérifiez que l\'adresse pointe vers un serveur OpenChamber.',
  'onboarding.desktopRecovery.common.useLocal': 'Utiliser local',
  'onboarding.desktopRecovery.common.useRemote': 'Utiliser le remote',
  'onboarding.desktopRecovery.actions.retrying': 'Nouvelle tentative…',
  'onboarding.desktopRecovery.actions.retryConnection': 'Réessayer la connexion',
  'startup.initRecovery.title': 'Le démarrage a échoué',
  'startup.initRecovery.description': 'OpenChamber n\'a pas pu terminer l\'initialisation. Vérifiez que le serveur est en cours d\'exécution, puis réessayez.',
  'startup.initRecovery.retry': 'Réessayer',
  'startup.initRecovery.retrying': 'Nouvelle tentative…',
  'onboarding.desktopRecovery.placeholders.remoteServer': 'le serveur distant',
  'onboarding.desktopRecovery.placeholders.unknownServer': 'inconnu',
  'vscodeLayout.title.chat': 'Chat',
  'vscodeLayout.title.newSession': 'Nouvelle session',
  'vscodeLayout.title.sessions': 'Sessions',
  'vscodeLayout.title.sessionFallback': 'Session',
  'vscodeLayout.actions.backToSessionsAria': 'Retour aux sessions',
  'vscodeLayout.actions.newSessionAria': 'Nouvelle session',
  'vscodeLayout.actions.openAgentManagerAria': 'Ouvrir le gestionnaire d\'agents',
  'vscodeLayout.actions.resizeSessionsSidebarAria': 'Redimensionner la barre latérale des sessions',
  'vscodeLayout.actions.settingsAria': 'Paramètres',
  'vscodeLayout.quota.title': 'Limites de taux',
  'vscodeLayout.quota.mode.used': 'Utilisé',
  'vscodeLayout.quota.mode.remaining': 'Restant',
  'vscodeLayout.quota.lastUpdated': 'Dernière mise à jour {time}',
  'vscodeLayout.quota.noRateLimitsAvailable': 'Aucune limite de taux disponible.',
  'vscodeLayout.quota.noRateLimitsReported': 'Aucune limite de taux signalée.',
  'vscodeLayout.quota.actions.rateLimitsAria': 'Limites de taux',
  'vscodeLayout.quota.actions.showUsedAria': 'Afficher le quota utilisé',
  'vscodeLayout.quota.actions.showRemainingAria': 'Afficher le quota restant',
  'vscodeLayout.quota.actions.refreshAria': 'Limites du taux de rafraîchissement',
  'updateDialog.header.updateAvailable': 'Mise à jour disponible',
  'updateDialog.header.updating': 'Mise à jour de OpenChamber...',
  'updateDialog.status.installingUpdate': 'Installation de la mise à jour...',
  'updateDialog.status.serverRestarting': 'Redémarrage du serveur...',
  'updateDialog.status.waitingForServer': 'En attente du serveur...',
  'updateDialog.status.autoReloadHint': 'La page se rechargera automatiquement une fois la mise à jour terminée.',
  'updateDialog.fallback.updateViaTerminal': 'Ou mettre à jour via le terminal :',
  'updateDialog.actions.copyCommand': 'Commande Copier',
  'updateDialog.actions.copied': 'Copié!',
  'updateDialog.status.downloadingPayload': 'Téléchargement de la charge utile de la mise à jour...',
  'updateDialog.actions.downloadUpdate': 'Télécharger la mise à jour',
  'updateDialog.status.downloading': 'Téléchargement...',
  'updateDialog.actions.restartToUpdate': 'Redémarrer pour mettre à jour',
  'updateDialog.actions.updateNow': 'Mettre à jour maintenant',
  'updateDialog.changelog.title': 'Nouveautés',
  'updateDialog.status.updating': 'Mise à jour...',
  'updateDialog.error.updateFailed': 'La mise à jour a échoué',
  'updateDialog.error.takingLonger': 'La mise à jour prend plus de temps que prévu. Attendez un peu et actualisez, ou exécutez : openchamber update',
  'opencodeUpdate.toast.available.title': 'Mise à jour OpenCode',
  'opencodeUpdate.toast.available.description': 'Version {version} disponible.',
  'opencodeUpdate.toast.actions.update': 'Mise à jour',
  'opencodeUpdate.toast.actions.dismiss': 'Ignorer',
  'opencodeUpdate.toast.actions.reload': 'Recharger OpenCode',
  'opencodeUpdate.toast.upgrading.title': 'Mise à jour de OpenCode...',
  'opencodeUpdate.toast.upgrading.description': 'Gardez OpenChamber ouvert.',
  'opencodeUpdate.toast.updated.title': 'OpenCode mis à jour',
  'opencodeUpdate.toast.updated.description': 'Mise à jour installée.',
  'opencodeUpdate.toast.updated.descriptionWithVersion': 'Version {version} installée.',
  'opencodeUpdate.toast.failed.title': 'Impossible de mettre à jour OpenCode',
  'opencodeUpdate.toast.failed.description': 'La mise à niveau du OpenCode a échoué.',
  'opencodeUpdate.toast.reload.message': 'Redémarrage de OpenCode...',
  'memoryDebugPanel.title': 'Panneau de débogage',
  'memoryDebugPanel.tabs.memory': 'Mémoire',
  'memoryDebugPanel.tabs.streaming': 'Streaming',
  'memoryDebugPanel.section.sessionsInMemory': 'Sessions en mémoire',
  'memoryDebugPanel.section.uiStreamingMetrics': 'Métriques de streaming de l\'interface utilisateur',
  'memoryDebugPanel.section.vscodeBridgeMetrics': 'Métriques du pont VS Code',
  'memoryDebugPanel.section.noUiSamples': 'Aucun échantillon de streaming d\'interface utilisateur pour l\'instant. Démarrez un flux et gardez ce panneau ouvert.',
  'memoryDebugPanel.section.noVscodeSamples': 'Aucun échantillon de pont VS Code pour l\'instant.',
  'memoryDebugPanel.metric.totalMessages': 'Nombre total de messages',
  'memoryDebugPanel.metric.cachedSessions': 'Sessions mises en cache',
  'memoryDebugPanel.metric.userMessages': 'Messages utilisateur',
  'memoryDebugPanel.metric.assistantMessages': 'Messages assistant',
  'memoryDebugPanel.metric.viewportWindow': 'Fenêtre d\'affichage',
  'memoryDebugPanel.metric.zombieTimeout': 'Délai d\'attente des zombies',
  'memoryDebugPanel.metric.githubTotalRequests': 'GitHub Total des demandes',
  'memoryDebugPanel.metric.metrics': 'Métrique',
  'memoryDebugPanel.metric.samples': 'Échantillons',
  'memoryDebugPanel.metric.lastUpdate': 'Dernière mise à jour',
  'memoryDebugPanel.metric.uiMetrics': 'Métriques de l\'interface utilisateur',
  'memoryDebugPanel.metric.vscodeMetrics': 'VS Code Métriques',
  'memoryDebugPanel.metric.messageListRenders': 'Rendus de liste de messages',
  'memoryDebugPanel.metric.messageListStreamRenders': 'Rendus de flux MsgList',
  'memoryDebugPanel.metric.chatMessageRenders': 'Rendus de messages de chat',
  'memoryDebugPanel.metric.chatMessageStreamRenders': 'Rendus de flux de messages ChatMessage',
  'memoryDebugPanel.metric.chatMessageStaticDuringStream': 'ChatMessage statique pendant le flux',
  'memoryDebugPanel.metric.chatMessageStaticOutsideActiveTurn': 'ChatMessage statique en dehors du tour actif',
  'memoryDebugPanel.metric.messagesValue': 'Messages {count}',
  'memoryDebugPanel.metric.minutesValue': 'Minutes {count}',
  'memoryDebugPanel.metric.msgsValue': 'Messages {count}',
  'memoryDebugPanel.metric.roleMsgsValue': 'U {user} / A {assistant}',
  'memoryDebugPanel.metric.countValue': 'compter {value}',
  'memoryDebugPanel.metric.avgValue': 'moyenne {value}',
  'memoryDebugPanel.metric.maxValue': 'maximum {value}',
  'memoryDebugPanel.metric.totalValue': 'total {value}',
  'memoryDebugPanel.actions.logState': 'État du journal',
  'memoryDebugPanel.actions.copyJson': 'Copier JSON',
  'memoryDebugPanel.tooltip.logCurrentState': 'Enregistrer l\'état actuel de la mémoire sur la console du navigateur',
  'memoryDebugPanel.streaming.copy.copied': 'Débogage en streaming JSON copié',
  'memoryDebugPanel.streaming.copy.failed': 'Échec de la copie de JSON',
  'memoryDebugPanel.streaming.copy.hint': 'La copie exporte les métriques de streaming de l\'interface utilisateur et de VS Code en tant que JSON.',
  'memoryDebugPanel.common.idle': 'inactif',
  'memoryDebugPanel.common.live': 'en direct',
  'memoryDebugPanel.common.notAvailable': 'n / A',
  'memoryDebugPanel.common.untitled': 'Sans titre',
  'directoryTree.field.newDirectoryPlaceholder': 'nouveau_répertoire',
  'textarea.resizeHandleAria': 'Redimensionner la zone de texte',
  'sidebar.resize.leftPanelAria': 'Redimensionner le panneau de gauche',
  'sidebar.resize.rightPanelAria': 'Redimensionner le panneau de droite',
  'mainLayout.mobile.closeDrawerAria': 'Fermer le tiroir',
  'sortableTabsStrip.aria.tabs': 'Onglets',
  'openChamberLogo.aria.logo': 'Logo OpenChamber',
  'markdownRenderer.table.actions.copyTitle': 'Copier le tableau',
  'markdownRenderer.table.actions.downloadTitle': 'Télécharger le tableau',
  'markdownRenderer.table.toast.downloadedAsFormat': 'Table téléchargée sous le nom {format}',
  'markdownRenderer.mermaid.actions.copyTitle': 'Copie',
  'markdownRenderer.mermaid.actions.copySourceTitle': 'Copier la source',
  'markdownRenderer.mermaid.actions.downloadSvgTitle': 'Télécharger SVG',
  'markdownRenderer.mermaid.toast.downloadFailed': 'Échec du téléchargement du diagramme',
  'common.date.today': 'Aujourd’hui',
  'common.date.yesterday': 'Hier',
  'common.date.yesterdayWithTime': 'Hier {time}',
  'common.relative.justNow': 'À l’instant',
  'common.relative.minutesAgoShort': 'il y a {count} min',
  'common.relative.hoursAgoShort': 'il y a {count} h',
  'common.relative.daysAgoShort': 'il y a {count} j',
  'common.relative.weeksAgoShort': 'il y a {count} sem',
  'common.relative.yearsAgoShort': 'il y a {count} a',
  'common.relative.daysAgoCompact': '{count} j',
  'common.relative.weeksAgoCompact': '{count} sem',
  'common.relative.yearsAgoCompact': '{count} a',
  'contextFileOpen.failure.tooLarge': 'Le fichier est trop volumineux pour être ouvert (> {count} lignes)',
  'contextFileOpen.failure.missing': 'Fichier introuvable',
  'contextFileOpen.failure.unreadable': 'Impossible d’ouvrir le fichier',
  'quota.window.5h': '5 heures',
  'quota.window.7d': 'Limite sur 7 jours',
  'quota.window.7dSonnet': 'Limite Sonnet sur 7 jours',
  'quota.window.7dOpus': 'Limite Opus sur 7 jours',
  'quota.window.weekly': 'Limite hebdomadaire',
  'quota.window.daily': 'Quotidien',
  'quota.window.monthly': 'Limite mensuelle',
  'quota.window.credits': 'Crédits',
  'quota.window.creditsBalance': 'Solde de crédits',
  'quota.window.billingCycle': 'Cycle de facturation',
  'quota.window.auto': 'Auto',
  'quota.window.api': 'API',
  'quota.window.planLimit': 'Limite du forfait',
  'quota.window.onDemand': 'À la demande',
  'quota.window.session': 'Session',
  'quota.window.premium': 'Interactions premium',
  'quota.window.chat': 'Requêtes de chat',
  'quota.window.completions': 'Complétions',
  'quota.window.premiumInteractions': 'Interactions premium',
  'layout.mainTab.diagram': 'Diagramme',
  'mobile.nav.aria': 'Navigation mobile',
  'mobile.connect.welcome.title': 'Se connecter à OpenChamber',
  'mobile.connect.welcome.description': 'Ajoutez une URL de serveur ou scannez un code QR d\'appairage pour commencer à utiliser l\'app mobile.',
  'mobile.connect.url.label': 'URL du serveur',
  'mobile.connect.url.placeholder': 'http://192.168.1.74:2606',
  'mobile.connect.token.label': 'Jeton client',
  'mobile.connect.token.placeholder': 'Collez le jeton d\'accès',
  'mobile.connect.token.hint': 'Nécessaire uniquement si votre serveur exige un jeton au lieu d\'un mot de passe.',
  'mobile.connect.password.label': 'Mot de passe',
  'mobile.connect.password.placeholder': 'Mot de passe OpenChamber',
  'mobile.connect.connectButton': 'Se connecter',
  'mobile.connect.unlockButton': 'Déverrouiller et se connecter',
  'mobile.connect.cancelPassword': 'Utiliser un autre serveur',
  'mobile.connect.connecting': 'Connexion...',
  'mobile.connect.scanQr': 'Scanner le code QR',
  'mobile.connect.advanced': 'Avancé',
  'mobile.connect.scan.permissionDenied': 'L\'accès à la caméra est désactivé. Activez-le dans les Réglages pour scanner un code QR.',
  'mobile.connect.scan.failed': 'Impossible de scanner ce code QR. Réessayez ou saisissez l\'URL manuellement.',
  'mobile.connect.scan.invalid': 'Ce code QR n\'est pas un code de connexion OpenChamber.',
  'mobile.connect.scan.unsupported': 'Le scan QR est disponible uniquement dans l\'app mobile installée.',
  'mobile.connect.saved.title': 'Connexions enregistrées',
  'mobile.connect.saved.empty': 'Aucune connexion enregistrée pour le moment.',
  'mobile.connect.error.urlRequired': 'Saisissez une URL de serveur.',
  'mobile.connect.error.invalidUrl': 'Cette URL de serveur n\'est pas valide.',
  'mobile.connect.error.unreachable': 'Impossible de joindre ce serveur OpenChamber.',
  'mobile.connect.error.authRequired': 'Ce serveur nécessite un mot de passe ou un jeton client.',
  'mobile.connect.error.passwordFailed': 'Impossible de déverrouiller ce serveur. Vérifiez le mot de passe.',
  'mobile.instances.addTitle': 'Ajouter une instance',
  'mobile.instances.editTitle': 'Modifier l\'instance',
  'mobile.instances.edit': 'Modifier',
  'mobile.instances.delete': 'Supprimer',
  'mobile.instances.deleteAria': 'Supprimer {label}',
  'mobile.instances.confirmDeleteAria': 'Confirmer la suppression de {label}',
  'mobile.instances.cancelDeleteAria': 'Conserver {label}',
  'mobile.instances.cancelEdit': 'Annuler',
  'mobile.instances.label.label': 'Nom',
  'mobile.instances.label.placeholder': 'Nom d\'affichage facultatif',
  'mobile.instances.saveNew': 'Enregistrer l\'instance',
  'mobile.instances.saveEdit': 'Enregistrer les modifications',
  'mobile.nav.changes': 'Modifications',
  'mobile.nav.settings': 'Paramètres',
  'mobile.surface.closeAria': 'Fermer',
  'mobile.header.openMenuAria': 'Ouvrir le menu',
  'mobile.header.openMetadataAria': 'Ouvrir les métadonnées de session',
  'mobile.header.metadata.context': 'Contexte',
  'mobile.header.metadata.branch': 'Branche',
  'mobile.header.metadata.usage': 'Utilisation',
  'mobile.menu.titleAria': 'Outils de l’espace de travail',
  'mobile.menu.files': 'Fichiers',
  'mobile.menu.changes': 'Modifications',
  'mobile.menu.mcp': 'MCP',
  'mobile.menu.instances': 'Instances',
  'mobile.menu.update': 'Mettre à jour',
  'mobile.menu.settings': 'Paramètres',
  'mobile.sessions.newChatCta': 'Nouveau chat dans {project}',
  'mobile.sessions.dateGroup.today': 'Aujourd’hui',
  'mobile.sessions.dateGroup.yesterday': 'Hier',
  'mobile.sessions.dateGroup.thisWeek': 'Plus tôt cette semaine',
  'mobile.sessions.dateGroup.older': 'Plus ancien',
  'mobile.sessions.section.worktrees': 'Worktrees',
  'mobile.sessions.section.otherProjects': 'Changer de projet',
  'mobile.sessions.section.projects': 'Projets',
  'mobile.sessions.empty.noProjectsTitle': 'Aucun projet pour le moment',
  'mobile.sessions.empty.noProjectsDescription': 'Ajoutez un projet pour commencer à discuter avec votre code.',
  'mobile.sessions.empty.noSessionsTitle': 'Aucune session pour le moment',
  'mobile.sessions.empty.noSessionsDescription': 'Démarrez votre premier chat pour le voir ici.',
  'mobile.sessions.empty.searchTitle': 'Aucun résultat',
  'mobile.sessions.empty.searchDescription': 'Essayez un autre terme de recherche.',
  'mobile.sessions.showArchived': 'Afficher les archivées ({count})',
  'mobile.sessions.hideArchived': 'Masquer les archivées',
  'mobile.sessions.activeWorktreeAria': 'Worktree actif',
  'mobile.sessions.activeProjectAria': 'Projet actif',
  'mobile.sessions.startNewChat': 'Démarrer un nouveau chat',
  'mobile.sessions.newChat': 'Nouveau chat',
  'mobile.sessions.editOrder': 'Réordonner les projets',
  'mobile.sessions.doneEditing': 'Terminé',
  'mobile.sessions.editOrderHint': 'Faites glisser la poignée pour réordonner les projets. Touchez la coche pour terminer.',
  'mobile.sessions.editProjectAria': 'Modifier {label}',
  'mobile.sessions.dragHandleAria': 'Faire glisser {label} pour réordonner',
  'mobile.sessions.moveUpAria': 'Déplacer {label} vers le haut',
  'mobile.sessions.moveDownAria': 'Déplacer {label} vers le bas',
  'mobile.sessions.removeProjectAria': 'Supprimer {label}',
  'mobile.sessions.cancelRemoveProjectAria': 'Annuler la suppression de {label}',
  'mobile.sessions.confirmRemoveProject': 'Fermer',
  'mobile.sessions.confirmRemoveProjectAria': 'Confirmer la suppression de {label}',
  'mobile.sessions.toast.projectRemoved': '{label} supprimé',
  'mobile.sessions.archiveSessionAria': 'Archiver {title}',
  'mobile.sessions.cancelArchiveAria': 'Annuler l’archivage de {title}',
  'mobile.projectEdit.worktreesTitle': 'Worktrees',
  'mobile.projectEdit.worktreesEmpty': 'Aucun worktree dans ce projet pour le moment.',
  'mobile.projectEdit.reorderHint': 'Faites glisser pour réordonner les worktrees.',
  'mobile.projectEdit.dragWorktreeAria': 'Faire glisser {label} pour réordonner',
  'mobile.projectEdit.deleteWorktreeAria': 'Supprimer le worktree {label}',
  'mobile.projectEdit.deleteWorktreeTitle': 'Supprimer le worktree',
  'mobile.projectEdit.deleteWorktreeConfirmButton': 'Supprimer',
  'mobile.projectEdit.deleteWorktreeConfirm': 'Supprimer le worktree « {name} » ? Cette action est irréversible.',
  'mobile.projectEdit.deleteWorktreeDirty': 'Ce worktree contient des modifications non commitées qui seront perdues.',
  'mobile.projectEdit.deleteWorktreeArchiveNote': '{count} session(s) associée(s) seront archivées.',
  'mobile.projectEdit.deleteLocalBranch': 'Supprimer aussi la branche locale',
  'mobile.projectEdit.deleteRemoteBranch': 'Supprimer aussi la branche distante',
  'mobile.sessions.showMore': 'Afficher {count} de plus',
  'mobile.sessions.search.section.sessions': 'Sessions',
  'mobile.sessions.search.section.archived': 'Archivées',
  'mobile.sessions.search.section.projects': 'Projets',
  'mobile.sessions.clearSearchAria': 'Effacer la recherche',
  'mobile.header.noProject': 'Sélectionnez un projet',
  'mobile.header.activeSession': 'Session active',
  'mobile.header.noSession': 'Aucune session active',
  'mobile.sessions.openSheetAria': 'Ouvrir les sessions et projets',
  'mobile.sessions.closeSheetAria': 'Fermer les sessions et projets',
  'mobile.sessions.sheet.title': 'Sessions',
  'mobile.sessions.sheet.description': 'Changez de projet, ouvrez des sessions ou démarrez un nouveau chat.',
  'mobile.sessions.search.placeholder': 'Rechercher des sessions',
  'mobile.sessions.empty': 'Aucune session trouvée.',
  'mobile.sessions.unassignedProject': 'Autres sessions',
  'mobile.sessions.newSessionAria': 'Démarrer une nouvelle session dans ce projet',
  'mobile.sessions.untitled': 'Session sans titre',
  'mobile.sessions.project.sessionsSingle': '1 session',
  'mobile.sessions.project.sessionsPlural': '{count} sessions',
  'mobile.files.refreshAria': 'Actualiser les fichiers',
  'mobile.files.backToParentAria': 'Retour à {name}',
  'mobile.files.rootDirectory': 'Fichiers du projet',
  'mobile.files.search.placeholder': 'Rechercher des fichiers',
  'mobile.files.search.empty': 'Aucun fichier trouvé.',
  'mobile.files.parentDirectory': 'Dossier parent',
  'mobile.files.empty.noDirectory': 'Sélectionnez un projet pour parcourir les fichiers.',
  'mobile.files.empty.directory': 'Ce dossier est vide.',
  'mobile.files.error.listFailed': 'Impossible de charger les fichiers',
  'mobile.files.error.readUnavailable': 'L’aperçu du fichier n’est pas disponible dans ce runtime.',
  'mobile.files.file.truncated': 'Aperçu du fichier tronqué sur mobile.',
  'mobile.files.copyPathAria': 'Copier le chemin du fichier',
  'mobile.files.copyContent': 'Copier le contenu',
  'mobile.files.copyContentAria': 'Copier le contenu du fichier',
  'mobile.files.toast.pathCopied': 'Chemin copié',
  'mobile.files.toast.contentCopied': 'Contenu copié',
  'mobile.files.toast.copyFailed': 'Échec de la copie',
  'mobile.changes.placeholder.title': 'Modifications',
  'mobile.changes.placeholder.description': 'La revue du working tree, la synchronisation et les actions de commit seront ici.',
  'mobile.changes.branchLabel': 'Branche : {branch}',
  'mobile.changes.noRemote': 'Aucun remote disponible',
  'mobile.changes.cleanDescription': 'Aucun fichier modifié dans cet espace de travail.',
  'mobile.changes.diffDetail.subtitle': 'Diff en lecture seule',
  'mobile.changes.diffDetail.loadFailed': 'Impossible de charger le diff',
  'mobile.changes.diffDetail.missingTitle': 'Le fichier n’est plus modifié',
  'mobile.changes.diffDetail.missingDescription': 'Retournez aux modifications et actualisez la liste.',
  'mobile.changes.diffDetail.imageUnavailable': 'Les diffs d’images ne sont pas encore disponibles dans les modifications mobile.',
  'mobile.settings.placeholder.title': 'Paramètres',
  'mobile.settings.placeholder.description': 'Les paramètres mobiles ciblés de connexion et d’application seront ici.',
  'sessions.sidebar.header.displayMode.showArchived': 'Afficher les sessions archivées',
  'sessions.sidebar.group.showMore': 'Afficher plus de sessions',
  'gitView.changes.revertDirectoryAria': 'Annuler les modifications dans {path}',
  'gitView.changes.revertDirectory': 'Annuler le dossier',
  'gitView.changes.revertDirectoryDescriptionPlural': 'Cela supprimera les modifications locales dans {count} fichiers sous {path}.',
  'gitView.changes.revertDirectoryDescriptionSingle': 'Cela supprimera les modifications locales dans {count} fichier sous {path}.',
  'gitView.changes.revertDirectoryDialogTitle': 'Annuler les modifications du dossier ?',
  'gitView.changes.revertDirectoryTooltip': 'Annuler les modifications du dossier',
  'worktree.bootstrap.toast.failed': 'Échec de la configuration du worktree',
  'worktree.bootstrap.toast.failedDescription': 'Le worktree a été créé, mais la configuration en arrière-plan ne s’est pas terminée.',
  'worktree.bootstrap.toast.timeoutDescription': 'Le worktree a été créé, mais la configuration en arrière-plan a expiré.',
  'contextPanel.browser.inspectUnavailable': 'Cette page ne peut pas être inspectée depuis le panneau de navigateur.',
  'contextPanel.browser.trustNotice': 'Les pages ouvertes ici s’exécutent avec un accès complet à OpenChamber — nécessaire pour l’inspection et les captures d’écran. N’ouvrez que des sites de confiance : une page malveillante pourrait lire vos données ou agir en votre nom.',
  'filesView.diagram.closeDiagramView': 'Fermer la vue diagramme',
  'filesView.diagram.saveDiagram': 'Enregistrer le diagramme',
  'inlineComment.input.placeholderShort': 'Ajouter un commentaire...',
  'header.services.remoteUpdate.title': 'Mise à jour de l’instance distante',
  'header.services.remoteUpdate.checking': 'Recherche de mises à jour...',
  'header.services.remoteUpdate.upToDate': 'Cette instance est à jour.',
  'header.services.remoteUpdate.available': 'La version {version} est disponible pour cette instance.',
  'header.services.remoteUpdate.error': 'Impossible de vérifier les mises à jour de l’instance distante',
  'header.services.remoteUpdate.actions.open': 'Mettre à jour',
  'chat.fileAttachment.openInDiagram': 'Ouvrir dans la vue diagramme',
  'chat.draftPresets.explore.label': 'Explorer le codebase',
  'chat.draftPresets.catchup.label': 'Me remettre à niveau',
  'chat.draftPresets.weigh.label': 'Comparer mes options',
  'chat.draftPresets.plan.label': 'Lancer la planification de fonctionnalité',
  'chat.draftPresets.debug.label': 'Déboguer un problème',
  'chat.draftPresets.review.label': 'Revoir mes modifications',
  'chat.draftStarters.add': 'Ajouter un démarrage',
  'chat.draftStarters.searchPlaceholder': 'Rechercher des commandes et skills…',
  'chat.draftStarters.empty': 'Rien à ajouter',
  'chat.draftStarters.sectionBuiltIn': 'Intégré',
  'chat.draftStarters.sectionCommands': 'Commandes',
  'chat.draftStarters.sectionSkills': 'Skills',
  'chat.draftStarters.remove': 'Retirer',
  'chat.commandAutocomplete.command.handoffReviewDescription': 'Créer ou réutiliser une session de revue séparée à partir d’un handoff généré.',
  'chat.commandAutocomplete.command.featurePlanDescription': 'Lancer une session guidée et interactive de planification pour une nouvelle fonctionnalité.',
  'chat.commandAutocomplete.command.catchUpDescription': 'Rétablir le contexte : ce que vous faisiez et où reprendre.',
  'chat.commandAutocomplete.command.debugDescription': 'Investigation guidée de la cause racine d’un bug avant de proposer une correction.',
  'chat.commandAutocomplete.command.weighDescription': 'Comparer 2 à 3 approches avec compromis et recommandation avant de vous engager.',
  'chat.commandAutocomplete.command.exploreDescription': 'Vous orienter dans ce codebase : tour d’ensemble de l’architecture et des parties principales.',
  'chat.questionCard.submitFailed': 'Impossible d’envoyer la réponse',
  'chat.questionCard.dismissFailed': 'Impossible d’ignorer la question',
  'chat.questionCard.noLongerPending': 'Cette question n’attend plus de réponse.',
  'chat.questionCard.tryAgain': 'Veuillez réessayer dans un instant.',
  'chat.messageBody.forkDialog.instructions.label': 'Instructions',
  'chat.messageBody.forkDialog.instructions.placeholder': 'Ajouter des instructions pour la nouvelle session…',
  'chat.messageBody.forkDialog.createWorktree': 'Créer un worktree',
  'planView.tts.readAloud': 'Lire le plan à voix haute',
  'planView.tts.stopSpeaking': 'Arrêter la lecture',
  'filesView.tts.readAloud': 'Lire le fichier à voix haute',
  'filesView.tts.stopSpeaking': 'Arrêter la lecture',
  'chat.messageBody.actions.sendReviewFeedback': 'Envoyer le retour de revue à l’agent d’implémentation',
  'chat.messageBody.actions.sendImplementationResponse': 'Envoyer la réponse d’implémentation à l’agent de revue',
  'chat.chatInput.toast.planFeatureFailed': 'Impossible de lancer la planification de fonctionnalité',
  'chat.chatInput.toast.catchUpFailed': 'Impossible de rattraper le contexte',
  'chat.chatInput.toast.debugFailed': 'Impossible de lancer le débogage',
  'chat.chatInput.toast.weighFailed': 'Impossible de comparer les options',
  'chat.chatInput.toast.exploreFailed': 'Impossible de lancer le tour',
  'chat.chatInput.reviewCommentsRemove': 'Retirer les commentaires de revue',
  'chat.toolPart.showRawJson': 'Afficher le JSON brut',
  'chat.toolPart.showFormattedJson': 'Afficher le JSON formaté',
  'chat.toolPart.copyOutput': 'Copier la sortie',
  'chat.toolPart.copiedOutput': 'Sortie copiée',
  'chat.toolPart.copyOutputFailed': 'Impossible de copier la sortie',
  'desktopHostSwitcher.status.checking': 'Vérification',
  'desktopHostSwitcher.status.updateRecommended': 'Mise à jour recommandée',
  'desktopHostSwitcher.status.incompatible': 'Incompatible',
  'onboarding.remoteConnection.probe.updateRecommendedMessage': 'Cette instance utilise une version différente d’OpenChamber. Vous pouvez vous connecter, mais mettez les deux applications à jour si quelque chose ne fonctionne pas.',
  'onboarding.remoteConnection.probe.incompatibleMessage': 'Le serveur exécute OpenChamber mais n’est pas compatible avec cette version de l’application. Mettez OpenChamber à jour sur le serveur, puis réessayez.',
  'onboarding.desktopRecovery.remoteIncompatible.title': 'Mise à jour du serveur requise',
  'onboarding.desktopRecovery.remoteIncompatible.description': 'Le serveur OpenChamber à l’adresse « {host} » n’est pas compatible avec cette version de l’application. Mettez OpenChamber à jour sur le serveur, puis réessayez.',
  'vscodeLayout.actions.archiveAllAria': 'Archiver toutes les sessions',
  'vscodeLayout.actions.archiveAllConfirm': 'Tout archiver',
  'vscodeLayout.actions.archiveAllSuccess': '{count} session(s) archivée(s)',
  'vscodeLayout.actions.archiveAllError': 'Impossible d’archiver {count} session(s)',
  'vscodeLayout.actions.cancel': 'Annuler',
} as const;

export type I18nKey = keyof typeof dict;
