2026-06-10 19:19:30 +02:00
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' ,
2026-06-27 07:00:05 +09:00
'common.language.japanese' : 'Japonais' ,
2026-06-10 19:19:30 +02:00
'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' ,
2026-06-27 07:00:05 +09:00
'sessions.scheduledTasks.editor.scheduleType.cron' : 'Cron' ,
2026-06-10 19:19:30 +02:00
'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' ,
2026-06-16 04:03:42 -04:00
'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' ,
2026-06-10 19:19:30 +02:00
'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' ,
2026-06-14 00:51:12 +03:00
"contextPanel.mode.diff" : "Changements" ,
2026-06-10 19:19:30 +02:00
'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' ,
2026-06-11 14:43:41 -04:00
'contextSidebar.tokens.cacheHit' : 'Succès du cache' ,
2026-06-10 19:19:30 +02:00
'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...' ,
2026-06-13 23:55:50 +03:00
'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.' ,
2026-06-10 19:19:30 +02:00
'diffView.summary.changedFilesSingle' : 'Le fichier {count} a été modifié' ,
'diffView.summary.changedFilesPlural' : 'Fichiers {count} modifiés' ,
2026-06-14 00:51:12 +03:00
"diffView.scope.changed" : "Modifiés" ,
"diffView.scope.staged" : "Staged" ,
"diffView.scope.selectorAria" : "Sélectionner le mode de changements" ,
2026-06-10 19:19:30 +02:00
'diffView.actions.retry' : 'Réessayer' ,
2026-06-13 23:55:50 +03:00
'diffView.actions.renderAnyway' : 'Afficher quand même' ,
'diffView.actions.expandAll' : 'Tout développer' ,
'diffView.actions.collapseAll' : 'Tout réduire' ,
2026-06-14 01:39:49 +03:00
'diffView.actions.loadFullFiles' : 'Charger les fichiers complets' ,
'diffView.actions.disableFullFiles' : 'Ne plus charger les fichiers complets' ,
2026-06-10 19:19:30 +02:00
'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' ,
2026-06-14 16:55:58 +03:00
'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' ,
2026-06-26 19:29:44 +03:00
'diffView.reviewDialog.autoReview' : 'Lancer la boucle de revue automatique' ,
2026-06-14 16:55:58 +03:00
'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' ,
2026-07-03 13:49:53 +03:00
'chat.history.loadOlder' : 'Charger les messages précédents' ,
2026-06-26 19:29:44 +03:00
'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' ,
2026-06-14 10:58:23 +03:00
'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." ,
2026-06-10 19:19:30 +02:00
'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' ,
2026-06-11 19:30:19 +03:00
'header.github.accountSource.oauth' : 'OAuth' ,
'header.github.accountSource.cli' : 'CLI' ,
2026-06-10 19:19:30 +02:00
'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' ,
2026-06-14 00:51:12 +03:00
"header.actions.toggleChangesPanel" : "Panneau des changements" ,
"header.actions.toggleChangesPanelAria" : "Basculer le panneau des changements" ,
2026-06-10 19:19:30 +02:00
'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' ,
2026-06-26 19:35:45 +03:00
'chat.queuedMessage.reorderAria' : 'Glisser pour réorganiser' ,
2026-06-10 19:19:30 +02:00
'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' ,
2026-07-04 02:48:07 +03:00
'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' ,
2026-06-10 19:19:30 +02:00
'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' ,
2026-07-04 16:41:17 +03:00
'chat.chatInput.draftPicker.projectTitle' : 'Projet' ,
'chat.chatInput.draftPicker.searchProjects' : 'Rechercher des projets...' ,
'chat.chatInput.draftPicker.searchBranches' : 'Rechercher des branches...' ,
2026-06-10 19:19:30 +02:00
'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' ,
2026-06-26 19:36:47 +03:00
'chat.modelControls.reorderProviderTitle' : 'Faites glisser pour réorganiser le fournisseur' ,
2026-06-10 19:19:30 +02:00
'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' ,
2026-06-13 16:40:29 +03:00
'memoryDebugPanel.metric.userMessages' : 'Messages utilisateur' ,
'memoryDebugPanel.metric.assistantMessages' : 'Messages assistant' ,
2026-06-10 19:19:30 +02:00
'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}' ,
2026-06-13 16:40:29 +03:00
'memoryDebugPanel.metric.roleMsgsValue' : 'U {user} / A {assistant}' ,
2026-06-10 19:19:30 +02:00
'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' ,
2026-06-11 00:16:48 +03:00
'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' ,
2026-06-10 19:19:30 +02:00
'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' ,
2026-07-01 09:55:41 +03:00
'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' ,
2026-06-10 19:19:30 +02:00
'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' ,
2026-07-01 09:55:41 +03:00
'mobile.menu.instances' : 'Instances' ,
2026-06-10 19:19:30 +02:00
'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 ;