When the walkthrough small model resolves to a provider with no usable login, readiness was still ready and generate returned a raw 500 message. Refuse up front with no-provider-login and surface a blocker instead. Closes openchamber/openchamber#2607 Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>
2924 lines
212 KiB
TypeScript
2924 lines
212 KiB
TypeScript
import { settingsDict } from './fr.settings';
|
||
|
||
export const dict = {
|
||
...settingsDict,
|
||
'terminalView.actions.attachSelection': 'Joindre la sortie sélectionnée',
|
||
'terminalView.actions.restart': 'Redémarrer le terminal',
|
||
'chat.message.terminalContext': '{terminal}, lignes {start}-{end}',
|
||
'chat.chatInput.terminalContext': '{terminal}, lignes {start}-{end}',
|
||
'chat.chatInput.terminalContextRemove': 'Supprimer le contexte du terminal',
|
||
'chat.chatInput.prCommentContext': 'Commentaires de PR',
|
||
'chat.chatInput.prCommentContextRemove': 'Retirer le contexte des commentaires de PR',
|
||
'chat.chatInput.prCheckContext': 'Vérifications de PR échouées',
|
||
'chat.chatInput.prCheckContextRemove': 'Retirer le contexte des vérifications de PR',
|
||
'common.loading': 'Chargement...',
|
||
'common.unavailable': 'Indisponible',
|
||
'common.language.english': 'Anglais',
|
||
'common.language.german': 'Allemand',
|
||
'common.language.french': 'Français',
|
||
'common.language.simplifiedChinese': 'Chinois (simplifié)',
|
||
'common.language.traditionalChinese': 'Chinois (traditionnel)',
|
||
'common.language.ukrainian': 'Ukrainien',
|
||
'common.language.spanish': 'Espagnol',
|
||
'common.language.brazilianPortuguese': 'Portugais brésilien',
|
||
'common.language.korean': 'Coréen',
|
||
'common.language.polish': 'Polonais',
|
||
'common.language.japanese': 'Japonais',
|
||
'common.revealPath.finder': 'Révéler dans le Finder',
|
||
'common.revealPath.fileExplorer': 'Ouvrir dans l\'explorateur de fichiers',
|
||
'common.revealPath.fileManager': 'Ouvrir dans le gestionnaire de fichiers',
|
||
'pwa.installPrompt.description': 'Installez OpenChamber pour un accès plus rapide',
|
||
'pwa.installPrompt.action': 'Installer',
|
||
'pwa.installPrompt.dismiss': 'Ignorer',
|
||
'pwa.installPrompt.started': 'Installation démarrée',
|
||
'pwa.installPrompt.installed': 'OpenChamber installé',
|
||
'layout.mainTab.chat': 'Chat',
|
||
'layout.mainTab.plan': 'Plan',
|
||
'layout.mainTab.diff': 'Diff',
|
||
'layout.mainTab.files': 'Fichiers',
|
||
'layout.mainTab.terminal': 'Terminal',
|
||
'layout.mainTab.context': 'Contexte',
|
||
'layout.rightSidebar.git': 'Git',
|
||
'layout.rightSidebar.files': 'Fichiers',
|
||
'layout.rightSidebar.context': 'Contexte',
|
||
'layout.services.instance': 'Instance',
|
||
'layout.services.usage': 'Usage',
|
||
'sessions.sidebar.header.actions.closeSessions': 'Fermer les sessions',
|
||
'sessions.sidebar.header.actions.addProject': 'Ajouter un projet',
|
||
'sessions.sidebar.header.actions.newSession': 'Nouvelle session',
|
||
'sessions.sidebar.header.actions.newMultiRun': 'Nouveau multi-run',
|
||
'sessions.sidebar.header.actions.scheduledTasks': 'Tâches planifiées',
|
||
'sessions.scheduledTasks.dialog.title': 'Tâches planifiées',
|
||
'sessions.scheduledTasks.dialog.description': 'Tâches côté serveur qui créent une nouvelle session et envoient un prompt configuré.',
|
||
'sessions.scheduledTasks.dialog.project.label': 'Projet',
|
||
'sessions.scheduledTasks.dialog.project.placeholder': 'Sélectionnez un projet',
|
||
'sessions.scheduledTasks.dialog.project.empty': 'Aucun projet',
|
||
'sessions.scheduledTasks.dialog.actions.newTask': 'Nouvelle tâche',
|
||
'sessions.scheduledTasks.dialog.actions.runNow': 'Exécuter maintenant',
|
||
'sessions.scheduledTasks.dialog.actions.edit': 'Modifier',
|
||
'sessions.scheduledTasks.dialog.actions.editAria': 'Modifier {taskName}',
|
||
'sessions.scheduledTasks.dialog.actions.deleteAria': 'Supprimer {taskName}',
|
||
'sessions.scheduledTasks.dialog.loading': 'Chargement des tâches...',
|
||
'sessions.scheduledTasks.dialog.empty.noTasks': 'Aucune tâche planifiée pour l\'instant.',
|
||
'sessions.scheduledTasks.dialog.empty.selectProject': 'Sélectionnez un projet pour gérer les tâches planifiées.',
|
||
'sessions.scheduledTasks.dialog.error.chooseProjectFirst': 'Choisissez d\'abord un projet',
|
||
'sessions.scheduledTasks.dialog.toast.loadFailed': 'Échec du chargement des tâches planifiées',
|
||
'sessions.scheduledTasks.dialog.toast.saved': 'Tâche planifiée enregistrée',
|
||
'sessions.scheduledTasks.dialog.toast.updateFailed': 'Échec de la mise à jour de la tâche',
|
||
'sessions.scheduledTasks.dialog.toast.deleted': 'Tâche planifiée supprimée',
|
||
'sessions.scheduledTasks.dialog.toast.deleteFailed': 'Échec de la suppression de la tâche',
|
||
'sessions.scheduledTasks.dialog.toast.started': 'Tâche démarrée',
|
||
'sessions.scheduledTasks.dialog.toast.runFailed': 'Échec de l\'exécution de la tâche',
|
||
'sessions.scheduledTasks.dialog.confirm.deleteTask': 'Supprimer la tâche planifiée « {taskName} » ?',
|
||
'sessions.scheduledTasks.dialog.schedule.daily': 'Quotidien {time}',
|
||
'sessions.scheduledTasks.dialog.schedule.dailyWithTimezone': 'Quotidien {time} ({timezone})',
|
||
'sessions.scheduledTasks.dialog.schedule.weekly': 'Hebdomadaire {days} {time}',
|
||
'sessions.scheduledTasks.dialog.schedule.weeklyWithTimezone': '{days} hebdomadaire {time} ({timezone})',
|
||
'sessions.scheduledTasks.dialog.schedule.once': '{date} unique {time}',
|
||
'sessions.scheduledTasks.dialog.schedule.onceWithTimezone': '{date} unique {time} ({timezone})',
|
||
'sessions.scheduledTasks.dialog.schedule.cron': 'Cron : {cron}',
|
||
'sessions.scheduledTasks.dialog.schedule.cronWithTimezone': 'Cron : {cron} ({timezone})',
|
||
'sessions.scheduledTasks.dialog.schedule.unknownDate': 'Date inconnue',
|
||
'sessions.scheduledTasks.dialog.schedule.weekdayShort.sun': 'Dim',
|
||
'sessions.scheduledTasks.dialog.schedule.weekdayShort.mon': 'Lun',
|
||
'sessions.scheduledTasks.dialog.schedule.weekdayShort.tue': 'Mar',
|
||
'sessions.scheduledTasks.dialog.schedule.weekdayShort.wed': 'Mer',
|
||
'sessions.scheduledTasks.dialog.schedule.weekdayShort.thu': 'Jeu',
|
||
'sessions.scheduledTasks.dialog.schedule.weekdayShort.fri': 'Ven',
|
||
'sessions.scheduledTasks.dialog.schedule.weekdayShort.sat': 'Sam',
|
||
'sessions.scheduledTasks.dialog.schedule.weekdayShort.unknown': '?',
|
||
'sessions.scheduledTasks.dialog.relativeTime.inLessThanOneMinute': 'dans <1 m',
|
||
'sessions.scheduledTasks.dialog.relativeTime.justNow': 'à l’instant',
|
||
'sessions.scheduledTasks.dialog.relativeTime.inMinutes': 'en {count}m',
|
||
'sessions.scheduledTasks.dialog.relativeTime.minutesAgo': 'il y a {count} min',
|
||
'sessions.scheduledTasks.dialog.relativeTime.inDuration': 'dans {duration}',
|
||
'sessions.scheduledTasks.dialog.relativeTime.durationAgo': 'il y a {duration}',
|
||
'sessions.scheduledTasks.dialog.status.success': 'Succès',
|
||
'sessions.scheduledTasks.dialog.status.error': 'Erreur',
|
||
'sessions.scheduledTasks.dialog.status.running': 'En cours d\'exécution',
|
||
'sessions.scheduledTasks.dialog.status.idle': 'Inactif',
|
||
'sessions.scheduledTasks.dialog.nextRun.label': 'Suivant',
|
||
'sessions.scheduledTasks.dialog.lastRun.label': 'Dernière exécution',
|
||
'sessions.scheduledTasks.dialog.lastRun.runningNow': 'en cours d’exécution',
|
||
'sessions.scheduledTasks.dialog.lastRun.never': 'jamais',
|
||
'sessions.scheduledTasks.dialog.taskToggle.enableAria': 'Activer {taskName}',
|
||
'sessions.scheduledTasks.dialog.taskToggle.pauseAria': 'Pause {taskName}',
|
||
'sessions.scheduledTasks.dialog.taskToggle.enabled': 'Activé',
|
||
'sessions.scheduledTasks.dialog.taskToggle.paused': 'En pause',
|
||
'sessions.scheduledTasks.editor.title.edit': 'Modifier une tâche planifiée',
|
||
'sessions.scheduledTasks.editor.title.new': 'Nouvelle tâche planifiée',
|
||
'sessions.scheduledTasks.editor.description': 'Configurez une tâche côté serveur qui crée une nouvelle session et envoie un prompt.',
|
||
'sessions.scheduledTasks.editor.taskName.label': 'Nom de la tâche',
|
||
'sessions.scheduledTasks.editor.taskName.placeholder': 'Synchronisation quotidienne',
|
||
'sessions.scheduledTasks.editor.scheduleType.label': 'Type d\'horaire',
|
||
'sessions.scheduledTasks.editor.scheduleType.daily': 'Tous les jours',
|
||
'sessions.scheduledTasks.editor.scheduleType.weekly': 'Hebdomadaire',
|
||
'sessions.scheduledTasks.editor.scheduleType.once': 'Une fois',
|
||
'sessions.scheduledTasks.editor.scheduleType.cron': 'Cron',
|
||
'sessions.scheduledTasks.editor.date.label': 'Date',
|
||
'sessions.scheduledTasks.editor.date.placeholder': 'Sélectionnez une date',
|
||
'sessions.scheduledTasks.editor.date.previousMonth': 'Mois précédent',
|
||
'sessions.scheduledTasks.editor.date.nextMonth': 'Mois prochain',
|
||
'sessions.scheduledTasks.editor.date.jumpToToday': 'Aller à aujourd\'hui',
|
||
'sessions.scheduledTasks.editor.date.today': 'Aujourd\'hui',
|
||
'sessions.scheduledTasks.editor.time.label': 'Temps',
|
||
'sessions.scheduledTasks.editor.time.hourAria': 'Heures',
|
||
'sessions.scheduledTasks.editor.time.minuteAria': 'Minutes',
|
||
'sessions.scheduledTasks.editor.time.periodAria': 'Période',
|
||
'sessions.scheduledTasks.editor.time.period.am': 'AM',
|
||
'sessions.scheduledTasks.editor.time.period.pm': 'PM',
|
||
'sessions.scheduledTasks.editor.times.label': 'Fois',
|
||
'sessions.scheduledTasks.editor.times.add': 'Ajouter du temps',
|
||
'sessions.scheduledTasks.editor.times.removeAria': 'Supprimer l\'heure',
|
||
'sessions.scheduledTasks.editor.timezone.label': 'Fuseau horaire',
|
||
'sessions.scheduledTasks.editor.weekdays.label': 'Jours de la semaine',
|
||
'sessions.scheduledTasks.editor.model.label': 'Modèle',
|
||
'sessions.scheduledTasks.editor.thinkingLevel.label': 'Niveau de réflexion',
|
||
'sessions.scheduledTasks.editor.thinkingLevel.default': 'Défaut',
|
||
'sessions.scheduledTasks.editor.agent.label': 'Agent',
|
||
'sessions.scheduledTasks.editor.prompt.label': 'Prompt',
|
||
'sessions.scheduledTasks.editor.prompt.placeholder': 'Résumer les tâches ouvertes et proposer les prochaines actions',
|
||
'sessions.scheduledTasks.editor.enabled.aria': 'Activer la tâche',
|
||
'sessions.scheduledTasks.editor.enabled.label': 'Activé',
|
||
'sessions.scheduledTasks.editor.goal.label': 'Exécuter comme objectif',
|
||
'sessions.scheduledTasks.editor.goal.aria': 'Exécuter cette tâche comme un objectif que l\'agent poursuit jusqu\'au bout',
|
||
'sessions.scheduledTasks.editor.goal.budgetLabel': 'Budget de tokens',
|
||
'sessions.scheduledTasks.editor.goal.budgetAria': 'Limiter l’objectif à un budget de tokens',
|
||
'sessions.scheduledTasks.editor.permissionAutoAccept.label': 'Accepter automatiquement les autorisations',
|
||
'sessions.scheduledTasks.editor.permissionAutoAccept.aria': 'Démarrer la session de la tâche avec l’acceptation automatique des autorisations activée',
|
||
'sessions.scheduledTasks.editor.actions.closeAria': 'Fermer',
|
||
'sessions.scheduledTasks.editor.actions.cancel': 'Annuler',
|
||
'sessions.scheduledTasks.editor.actions.save': 'Sauvegarder',
|
||
'sessions.scheduledTasks.editor.actions.saving': 'Enregistrement...',
|
||
'sessions.scheduledTasks.editor.toast.saveFailed': 'Échec de l\'enregistrement de la tâche',
|
||
'sessions.scheduledTasks.editor.validation.taskNameRequired': 'Le nom de la tâche est obligatoire',
|
||
'sessions.scheduledTasks.editor.validation.promptRequired': 'Un prompt est requis',
|
||
'sessions.scheduledTasks.editor.validation.modelRequired': 'Le modèle est requis',
|
||
'sessions.scheduledTasks.editor.validation.dateFormat': 'La date doit utiliser AAAA-MM-JJ',
|
||
'sessions.scheduledTasks.editor.validation.timeFormat': 'L\'heure doit utiliser HH : mm',
|
||
'sessions.scheduledTasks.editor.validation.atLeastOneTime': 'Ajoutez au moins une heure valide',
|
||
'sessions.scheduledTasks.editor.validation.atLeastOneWeekday': 'Sélectionnez au moins un jour de la semaine',
|
||
'sessions.scheduledTasks.editor.validation.timezoneRequired': 'Le fuseau horaire est requis',
|
||
'sessions.scheduledTasks.editor.validation.cronRequired': 'Une expression cron est requise',
|
||
'sessions.scheduledTasks.editor.validation.cronInvalid': 'Expression cron invalide',
|
||
'sessions.scheduledTasks.editor.cronExpression.label': 'Expression cron',
|
||
'sessions.scheduledTasks.editor.cronExpression.placeholder': '*/5 * * * *',
|
||
'sessions.scheduledTasks.editor.cronExpression.nextRuns': 'Prochaines exécutions',
|
||
'sessions.scheduledTasks.editor.cronExpression.examples': 'Exemples',
|
||
'sessions.scheduledTasks.editor.cronExpression.examples.every5min': 'Toutes les 5 minutes',
|
||
'sessions.scheduledTasks.editor.cronExpression.examples.everyHour': 'Toutes les heures',
|
||
'sessions.scheduledTasks.editor.cronExpression.examples.monday9am': 'Chaque lundi à 9 h',
|
||
'sessions.scheduledTasks.editor.cronExpression.examples.9am5pm': '9 h et 17 h chaque jour',
|
||
'sessions.scheduledTasks.editor.cronExpression.examples.firstOfMonth': 'Premier jour de chaque mois',
|
||
'multirun.launcher.title': 'Nouveau multi-run',
|
||
'multirun.launcher.actions.closeEsc': 'Fermer (Échap)',
|
||
'multirun.launcher.actions.cancel': 'Annuler',
|
||
'multirun.launcher.actions.creating': 'Création...',
|
||
'multirun.launcher.actions.startWithModelCount': 'Démarrer (modèles {count})',
|
||
'multirun.launcher.project.label': 'Projet',
|
||
'multirun.launcher.project.placeholder': 'Sélectionnez un projet',
|
||
'multirun.launcher.project.empty': 'Ajoutez d\'abord un projet.',
|
||
'multirun.launcher.project.gitRequired': 'Pas d\'isolation par worktree : les exécutions utilisent le même répertoire.',
|
||
'multirun.launcher.groupName.label': 'Nom du groupe',
|
||
'multirun.launcher.groupName.info': 'Utilisé pour le répertoire du worktree et les noms de branches',
|
||
'multirun.launcher.groupName.placeholder': 'fonctionnalité-auth, correction de bugs-connexion',
|
||
'multirun.launcher.baseBranch.label': 'Branche de base',
|
||
'multirun.launcher.baseBranch.info': 'Nouvelle branche créée à partir de cette base par modèle',
|
||
'multirun.launcher.isolateRuns.label': 'Isoler les parcours',
|
||
'multirun.launcher.agent.label': 'Agent',
|
||
'multirun.launcher.agent.info': 'Agent utilisé pour toutes les exécutions. La valeur par défaut est votre agent configuré.',
|
||
'multirun.launcher.setupCommands.label': 'Commandes de configuration',
|
||
'multirun.launcher.setupCommands.loading': 'Chargement...',
|
||
'multirun.launcher.setupCommands.commandPlaceholder': 'bun install',
|
||
'multirun.launcher.setupCommands.removeCommandAria': 'Supprimer la commande',
|
||
'multirun.launcher.setupCommands.addCommand': 'Ajouter une commande',
|
||
'multirun.launcher.prompt.label': 'Prompt',
|
||
'multirun.launcher.prompt.placeholder': 'Entrez le prompt à envoyer à tous les modèles...',
|
||
'multirun.launcher.attachments.attach': 'Attacher',
|
||
'multirun.launcher.attachments.tooltip': 'Mêmes fichiers envoyés à toutes les exécutions',
|
||
'multirun.launcher.models.label': 'Modèles',
|
||
'multirun.launcher.models.info': 'Sélectionnez les modèles 2-{max}. Le même modèle peut être ajouté plusieurs fois.',
|
||
'multirun.launcher.toast.fileTooLarge': 'Le fichier "{fileName}" est trop volumineux (max 10 Mo)',
|
||
'multirun.launcher.toast.attachFailed': 'Échec de la connexion de "{fileName}"',
|
||
'multirun.launcher.toast.attachedSingle': 'Fichier {count} joint',
|
||
'multirun.launcher.toast.attachedPlural': 'Fichiers {count} joints',
|
||
'multirun.modelMultiSelect.actions.addModel': 'Ajouter un modèle',
|
||
'multirun.modelMultiSelect.search.placeholder': 'Rechercher des modèles',
|
||
'multirun.modelMultiSelect.search.noResults': 'Aucun modèle trouvé',
|
||
'multirun.modelMultiSelect.sections.favorites': 'Favoris',
|
||
'multirun.modelMultiSelect.sections.recent': 'Récents',
|
||
'multirun.modelMultiSelect.variant.placeholder': 'Pensée',
|
||
'multirun.modelMultiSelect.variant.default': 'Défaut',
|
||
'multirun.modelMultiSelect.keyboard.hint': '↑↓ naviguer • Entrer sélectionner • Esc fermer',
|
||
'multirun.modelMultiSelect.validation.minOnly': 'Sélectionnez au moins les modèles {min}.',
|
||
'multirun.modelMultiSelect.validation.minToMax': 'Choisissez parmi les modèles {min} à {max}.',
|
||
'multirun.agentSelector.placeholder': 'Sélectionnez un agent',
|
||
'multirun.fusion.title': 'Exécuter la fusion',
|
||
'multirun.fusion.description': 'Combinez les résultats multi-exécutions sélectionnés en une seule réponse plus solide.',
|
||
'multirun.fusion.provider.placeholder': 'Fournisseur',
|
||
'multirun.fusion.model.placeholder': 'Modèle',
|
||
'multirun.fusion.sources.label': 'Sources ({count})',
|
||
'multirun.fusion.actions.cancel': 'Annuler',
|
||
'multirun.fusion.actions.start': 'Démarrer la fusion',
|
||
'multirun.fusion.actions.starting': 'Démarrage...',
|
||
'multirun.fusion.toast.noOutputs': 'Aucune sortie assistante trouvée pour fusionner.',
|
||
'multirun.fusion.toast.failed': 'Échec du démarrage de la fusion.',
|
||
'multirun.launcher.attachments.label': 'Fichiers',
|
||
'multirun.launcher.actions.startWithRunCount': 'Démarrer ({count} s\'exécute)',
|
||
'multirun.launcher.groups.addGroup': 'Ajouter un groupe d\'exécution',
|
||
'multirun.launcher.groups.removeGroup': 'Supprimer le groupe',
|
||
'multirun.launcher.groups.groupLabel': 'Groupe d\'exécution {index}',
|
||
'multirun.launcher.groups.template.label': 'Modèle',
|
||
'multirun.launcher.groups.template.placeholder': 'Sélectionnez un modèle...',
|
||
'multirun.launcher.groups.template.custom': 'Prompt personnalisé',
|
||
'multirun.launcher.groups.prompt.label': 'Prompt',
|
||
'multirun.launcher.groups.prompt.placeholder': 'Entrez le prompt pour ce groupe...',
|
||
'sessions.sidebar.header.actions.searchSessions': 'Sessions de recherche',
|
||
'sessions.sidebar.header.actions.exitSelection': 'Quitter la sélection',
|
||
'sessions.sidebar.header.actions.selectSessions': 'Sélectionnez des sessions',
|
||
'sessions.sidebar.header.actions.sortProjects': 'Trier les projets',
|
||
'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.projectSort.manual': 'Manuel',
|
||
'sessions.sidebar.header.projectSort.aToZ': 'A → Z',
|
||
'sessions.sidebar.header.projectSort.zToA': 'Z → A',
|
||
'sessions.sidebar.header.projectSort.dateAdded': 'Les plus récentes',
|
||
'sessions.sidebar.header.projectSort.recent': 'Récentes',
|
||
'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.archivePage.allDirectories': 'Tous les répertoires',
|
||
'sessions.sidebar.header.displayMode.stickyHeaders': 'Épingler les en-têtes de projet',
|
||
'sessions.sidebar.header.grouping.label': 'Regrouper les sessions',
|
||
'sessions.sidebar.header.grouping.byWorktree': 'Par worktree',
|
||
'sessions.sidebar.header.grouping.flat': 'Liste plate',
|
||
'sessions.sidebar.project.actions.manageWorktrees': 'Gérer les worktrees',
|
||
'sessions.worktreesPage.title': 'Worktrees dans {project}',
|
||
'sessions.worktreesPage.description': 'Créez, inspectez et supprimez les worktrees git de ce projet.',
|
||
'sessions.worktreesPage.closeAria': 'Fermer les worktrees',
|
||
'sessions.scheduledTasks.page.closeAria': 'Fermer les tâches planifiées',
|
||
'sessions.sidebar.nav.archive': 'Archives',
|
||
'sessions.archivePage.title': 'Archives',
|
||
'sessions.archivePage.countSingle': '{count} session archivée',
|
||
'sessions.archivePage.countPlural': '{count} sessions archivées',
|
||
'sessions.archivePage.closeAria': 'Fermer les archives',
|
||
'sessions.archivePage.searchPlaceholder': 'Rechercher des sessions archivées',
|
||
'sessions.archivePage.empty.noArchived': 'Aucune session archivée',
|
||
'sessions.archivePage.empty.noMatches': 'Aucune session archivée correspondante',
|
||
'sessions.archivePage.otherProjects': 'autres projets',
|
||
'sessions.archivePage.deleteProject': 'Supprimer toutes les sessions archivées de ce projet',
|
||
'sessions.archivePage.deleteProjectAria': 'Supprimer toutes les sessions archivées de {label}',
|
||
'sessions.archivePage.deleteSessionAria': 'Supprimer {title}',
|
||
'sessions.archivePage.restoreSessionAria': 'Restaurer {title}',
|
||
'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.bulkActions.restore': 'Restaurer',
|
||
'sessions.sidebar.bulkActions.restoredSingle': 'Session {count} restaurée',
|
||
'sessions.sidebar.bulkActions.restoredPlural': 'Sessions {count} restaurées',
|
||
'sessions.sidebar.bulkActions.failedRestoreSingle': 'Échec de la restauration de la session {count}',
|
||
'sessions.sidebar.bulkActions.failedRestorePlural': 'Échec de la restauration 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.edit': 'Modifier',
|
||
'sessions.sidebar.project.actions.newDraftSession': 'Nouveau brouillon de session',
|
||
'sessions.sidebar.session.menu.rename': 'Rebaptiser',
|
||
'sessions.sidebar.session.menu.copyId': 'Copier l’ID de session',
|
||
'sessions.sidebar.session.copyId.success': 'ID de session copié',
|
||
'sessions.sidebar.session.copyId.error': 'Impossible de copier l’ID de session',
|
||
'header.sessionActions.openAria': 'Ouvrir les actions de session',
|
||
'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.moveToWorktree': 'Déplacer vers un nouveau worktree',
|
||
'sessions.sidebar.session.moveToWorktree.success': 'Session déplacée vers un nouveau worktree',
|
||
'sessions.sidebar.session.moveToWorktree.failed': 'Impossible de déplacer la session vers un nouveau worktree',
|
||
'sessions.sidebar.session.moveToWorktree.tooltip': 'Crée un nouveau worktree depuis la branche actuelle, transfère les modifications non validées et y déplace cette session et ses sous-sessions.',
|
||
'sessions.sidebar.session.moveToWorktree.tooltipBusy': 'Disponible lorsque la session est inactive. Arrêtez l’activité en cours ou attendez sa fin.',
|
||
'sessions.sidebar.session.moveToWorktree.tooltipMoving': 'Cette session est déjà en cours de déplacement vers un nouveau worktree.',
|
||
'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.failedLoadHistory': 'Impossible de charger l’historique complet de la session',
|
||
'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.movingToWorktree': 'Déplacement de la session vers un nouveau worktree',
|
||
'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': 'Le lien de partage a été copié dans le presse-papiers.',
|
||
'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.session.restore.success': 'Session restaurée',
|
||
'sessions.sidebar.session.restore.error': 'Échec de la restauration 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.updateBranch': 'Mettre à jour la branche',
|
||
'gitView.header.openPullRequest': 'Ouvrir la pull request',
|
||
'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.history.refresh': 'Actualiser',
|
||
'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.inProgressTitleManyConflicts': '{operation} en cours : {count} conflits',
|
||
'gitView.operation.inProgressTitleOneConflict': '{operation} en cours : {count} conflit',
|
||
'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.readyToContinueHint': 'Tous les conflits sont résolus. Poursuivez pour terminer l’opération.',
|
||
'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': 'Joindre les vérifications échouées',
|
||
'gitView.pr.actions.resolveFailedChecksAria': 'Joindre les vérifications échouées au contexte du chat',
|
||
'gitView.pr.actions.savePr': 'Enregistrer la PR',
|
||
'gitView.pr.actions.savePrAria': 'Enregistrer les modifications de la PR',
|
||
'gitView.pr.actions.sendCommentToAgent': 'Joindre le commentaire au contexte du chat',
|
||
'gitView.pr.actions.sendCommentToAgentAria': 'Joindre ce commentaire au contexte du chat',
|
||
'gitView.pr.actions.sendToAgent': 'Joindre au chat',
|
||
'gitView.pr.actions.shareComments': 'Joindre les commentaires',
|
||
'gitView.pr.actions.shareCommentsAria': 'Joindre les commentaires de la pull request au contexte du chat',
|
||
'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.segment.overview': 'Aperçu',
|
||
'gitView.pr.segment.checks': 'Vérifications',
|
||
'gitView.pr.segment.comments': 'Commentaires',
|
||
'gitView.pr.comments.addAll': 'Tout joindre au chat',
|
||
'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.worktree': 'Worktree',
|
||
'gitView.toast.abortOperationFailed': 'Échec de l\'annulation de l\'opération',
|
||
'gitView.toast.appliedIdentity': 'Identité appliquée : {name}',
|
||
'gitView.toast.applyIdentityFailed': 'Échec de l\'application de l\'identité',
|
||
'gitView.toast.branchCreatedLocally': 'Branche créée localement, mais n\'a pas pu être configurée en amont.',
|
||
'gitView.toast.cannotCheckout': 'Impossible de basculer sur la branche : {reason}',
|
||
'gitView.toast.cannotCreateBranch': 'Impossible de créer une branche : {reason}',
|
||
'gitView.toast.cannotRemoveOriginRemote': 'Impossible de supprimer le dépôt distant origin',
|
||
'gitView.toast.cannotRenameBranch': 'Impossible de renommer la branche : {reason}',
|
||
'gitView.toast.checkedOut': 'J\'ai vérifié {name}',
|
||
'gitView.toast.checkoutFailed': 'Échec du checkout de {name}',
|
||
'gitView.toast.commitCreated': 'Commit créé',
|
||
'gitView.toast.commitHashCopied': 'Hachage du commit copié',
|
||
'gitView.toast.continueOperationFailed': 'Échec de la poursuite de l\'opération',
|
||
'gitView.toast.copyFailed': 'Échec de la copie',
|
||
'gitView.toast.createBranchFailed': 'Échec de la création de la branche',
|
||
'gitView.toast.createCommitFailed': 'Échec de la création du commit',
|
||
'gitView.toast.createdBranch': 'Branche créée {name}',
|
||
'gitView.toast.enterCommitMessage': 'Entrez un message de commit',
|
||
'gitView.toast.fetchedFromRemote': 'Récupéré depuis {name}',
|
||
'gitView.toast.generateCommitMessageFailed': 'Échec de la génération du message de commit',
|
||
'gitView.toast.mergeAborted': 'Fusion interrompue',
|
||
'gitView.toast.mergeCompleted': 'Fusion terminée',
|
||
'gitView.toast.mergeConflictsDetected': 'Conflits de fusion détectés',
|
||
'gitView.toast.mergedIntoBranch': 'Fusion de {branch} dans {currentBranch}',
|
||
'gitView.toast.pulledFilesPlural': 'Récupération de {count} fichiers depuis {name}',
|
||
'gitView.toast.pulledFilesSingle': 'Récupération de {count} fichier depuis {name}',
|
||
'gitView.toast.pushedToUpstream': 'Poussé vers {name}',
|
||
'gitView.toast.commitOrStashBeforeSync': 'Validez ou cachez vos modifications avant la synchronisation',
|
||
'gitView.toast.alreadyUpToDate': 'Déjà à jour',
|
||
'gitView.toast.syncedPulledPluralAndPushed': 'Extrait les fichiers {count} de {name} et poussé vers l\'amont',
|
||
'gitView.toast.syncedPulledSingleAndPushed': 'Récupération de {count} fichier depuis {name} puis push vers l’amont',
|
||
'gitView.toast.syncedChanges': 'Modifications synchronisées',
|
||
'gitView.toast.rebaseAborted': 'Rebase abandonné',
|
||
'gitView.toast.rebaseConflictsDetected': 'Conflits de rebase détectés',
|
||
'gitView.toast.rebaseStepCompleted': 'Ajouter à l’index de rebase terminée',
|
||
'gitView.toast.rebasedOntoBranch': 'Rebasage de {currentBranch} sur {branch}',
|
||
'gitView.toast.refreshRepositoryFailed': 'Échec de l\'actualisation du dépôt',
|
||
'gitView.toast.remoteNameRequired': 'Le nom du dépôt distant est requis',
|
||
'gitView.toast.removedRemote': 'Remote supprimé : {name}',
|
||
'gitView.toast.renameBranchFailed': 'Échec du renommage de {oldName} en {newName}',
|
||
'gitView.toast.renamedBranch': 'Renommé {oldName} en {newName}',
|
||
'gitView.toast.restoreStashFailed': 'Échec de la restauration du cache',
|
||
'gitView.toast.restoreStashManually': 'Cache restauré manuellement requis',
|
||
'gitView.toast.revertFailed': 'Échec de l\'annulation des modifications',
|
||
'gitView.toast.revertedFile': '{path} inversé',
|
||
'gitView.toast.revertedFilesPlural': 'Fichiers {count} rétablis',
|
||
'gitView.toast.revertedFilesSingle': 'Fichier {count} rétabli',
|
||
'gitView.toast.revertedSomePlural': 'Fichiers {success} annulés, échec de {failed}',
|
||
'gitView.toast.revertedSomeSingle': 'Fichier {success} rétabli, échec de {failed}',
|
||
'gitView.toast.stageFileFailed': 'Échec de l\'ajout des modifications à l\'index',
|
||
'gitView.toast.stageFileToCommit': 'Préparez au moins un fichier à valider',
|
||
'gitView.toast.stageFileToDescribe': 'Mettre en scène au moins un fichier à décrire',
|
||
'gitView.toast.selectFileToCommit': 'Sélectionnez au moins un fichier à valider',
|
||
'gitView.toast.selectFileToDescribe': 'Sélectionnez au moins un fichier à décrire',
|
||
'gitView.toast.stashedRestored': 'Modifications cachées restaurées',
|
||
'gitView.toast.syncActionFailed': 'Échec du {action}',
|
||
'gitView.toast.unstageFileFailed': 'Échec de l\'annulation du transfert des modifications',
|
||
'gitView.toast.upstreamSet': 'Réglé en amont pour {branch} à {remote}',
|
||
'gitView.worktree.availableInWorktreeMode': 'Disponible uniquement en mode worktree',
|
||
'contextPanel.mode.chat': 'Chat',
|
||
'contextPanel.mode.files': 'Fichiers',
|
||
"contextPanel.mode.diff": "Changements",
|
||
'contextPanel.mode.stagedDiff': 'Différence par étapes',
|
||
'contextPanel.mode.workingDiff': 'Différentiel de travail',
|
||
'contextPanel.mode.plan': 'Plan',
|
||
'contextPanel.mode.pr': 'Pull Request',
|
||
'contextPanel.mode.context': 'Contexte',
|
||
'contextPanel.mode.preview': 'Aperçu',
|
||
'contextPanel.mode.browser': 'Navigateur',
|
||
'contextRail.aria.rail': 'Surfaces du panneau',
|
||
'contextPanel.editorEmpty.title': 'Aucun fichier ouvert',
|
||
'contextPanel.editorEmpty.description': 'Choisissez un fichier dans l’arborescence pour commencer.',
|
||
'contextRail.surface.editor.description': 'Modifier les fichiers du projet',
|
||
'contextRail.surface.git.description': 'Commits, branches et pull requests',
|
||
'contextRail.surface.terminal.description': 'Terminal intégré',
|
||
'contextRail.surface.diff.description': 'Passer en revue les modifications',
|
||
'contextPanel.mode.walkthrough': 'Parcours',
|
||
'contextRail.surface.walkthrough.description': 'Un parcours de vos modifications guidé par l’IA',
|
||
'walkthrough.scope.all': 'Tout non validé',
|
||
'walkthrough.scope.group.workingTree': 'Copie de travail',
|
||
'walkthrough.scope.group.committed': 'Validé',
|
||
'walkthrough.scope.staged': 'Indexées',
|
||
'walkthrough.scope.working': 'Non indexées',
|
||
'walkthrough.scope.branch': 'Cette branche',
|
||
'walkthrough.scope.selectorAria': 'Choisir ce qui est examiné',
|
||
'walkthrough.language.menuLabel': 'Langue du parcours',
|
||
'walkthrough.missing.language': 'Pas encore de parcours en {requested} — voici celui en {shown}.',
|
||
'walkthrough.missing.model': 'Pas encore de parcours généré par {model} — voici le dernier généré ici.',
|
||
'walkthrough.missing.languageAndModel': 'Pas encore de parcours dans cette langue avec ce modèle — voici le dernier généré ici.',
|
||
'walkthrough.language.selectorAria': 'Choisir la langue du parcours',
|
||
'walkthrough.scope.pullRequest': 'PR n° {number}',
|
||
'walkthrough.action.generate': 'Générer le parcours',
|
||
'walkthrough.action.regenerate': 'Régénérer',
|
||
'walkthrough.action.cancel': 'Annuler',
|
||
'walkthrough.action.next': 'Étape suivante',
|
||
'walkthrough.action.previous': 'Étape précédente',
|
||
'walkthrough.action.refresh': 'Actualiser',
|
||
'walkthrough.action.open': 'Parcours',
|
||
'walkthrough.stage.collecting': 'Collecte des modifications',
|
||
'walkthrough.stage.asking': 'En attente du modèle',
|
||
'walkthrough.stage.assembling': 'Assemblage du parcours',
|
||
'walkthrough.empty.title': 'Aucun parcours pour l’instant',
|
||
'walkthrough.empty.description': 'Construisez un parcours de lecture guidé à travers ces modifications. Cela appelle le petit modèle et consomme des jetons, donc rien ne se lance sans votre demande.',
|
||
'walkthrough.stale.banner': 'Le code a changé après cette revue. Étapes obsolètes : {count}',
|
||
'walkthrough.stop.staleAll': 'Tout le code décrit par cette étape a changé.',
|
||
'walkthrough.stop.stalePartial': 'Une partie du code décrit par cette étape a changé. Fragments manquants : {count}',
|
||
'walkthrough.stop.staleShort': 'Obsolète',
|
||
'walkthrough.stop.noCode': 'Le code de cette étape est absent du diff actuel.',
|
||
'walkthrough.uncovered.title': 'Modifications non traitées par la revue : {count}',
|
||
'walkthrough.uncovered.description': 'La revue les a jugées courantes. Dépliez pour les vérifier vous-même.',
|
||
'walkthrough.toc.moreFiles': 'Autres fichiers : {count}',
|
||
'walkthrough.toc.uncovered': 'Non traité : {count}',
|
||
'walkthrough.toc.resize': 'Redimensionner la colonne du sommaire',
|
||
'walkthrough.importance.critical': 'Critique',
|
||
'walkthrough.importance.context': 'Contexte',
|
||
'walkthrough.blocked.noModel.title': 'Aucun petit modèle disponible',
|
||
'walkthrough.blocked.noModel.description': 'Connectez-vous à un fournisseur de modèles pour générer une revue.',
|
||
'walkthrough.blocked.noProviderLogin.title': 'Ce fournisseur n’est pas connecté',
|
||
'walkthrough.blocked.noProviderLogin.description': '{model} nécessite une connexion à son fournisseur. Connectez-vous, ou choisissez un modèle d’un fournisseur que vous utilisez déjà.',
|
||
'walkthrough.blocked.noProviderLogin.descriptionUnknownModel': 'Le modèle sélectionné nécessite une connexion à son fournisseur. Connectez-vous, ou choisissez un modèle d’un fournisseur que vous utilisez déjà.',
|
||
'walkthrough.blocked.emptyDiff.title': 'Rien à examiner',
|
||
'walkthrough.blocked.emptyDiff.description': 'Il n’y a encore aucune modification dans cette portée.',
|
||
'walkthrough.blocked.contextTooSmall.title': 'Ce diff est trop volumineux pour le modèle actuel',
|
||
'walkthrough.blocked.contextTooSmall.description': '{model} accepte environ {available} k caractères et ce diff en demande environ {required} k. Rien n’est tronqué : choisissez un modèle au contexte plus large.',
|
||
'walkthrough.blocked.structuredOutput.title': 'Ce modèle ne produit pas de sortie structurée',
|
||
'walkthrough.blocked.structuredOutput.description': '{model} ne prend pas en charge les réponses structurées nécessaires à un parcours.',
|
||
'walkthrough.blocked.chooseModel': 'Choisissez le petit modèle',
|
||
'walkthrough.blocked.outputExhausted.title': 'Le modèle a épuisé son budget de réponse',
|
||
'walkthrough.blocked.outputExhausted.description': '{model} a dépensé toute sa marge de sortie en raisonnement et n’a rien renvoyé. Les modèles de raisonnement le font souvent sur de gros diffs : essayez un modèle qui réfléchit moins, ou une portée plus étroite.',
|
||
'walkthrough.blocked.outputExhausted.descriptionUnknownModel': 'Le petit modèle a dépensé toute sa marge de sortie en raisonnement et n’a rien renvoyé. Les modèles de raisonnement le font souvent sur de gros diffs : essayez un modèle qui réfléchit moins, ou une portée plus étroite.',
|
||
'walkthrough.blocked.onlyGenerated.title': 'Seuls des fichiers générés ont changé',
|
||
'walkthrough.blocked.onlyGenerated.description': 'Toutes les modifications concernent des fichiers de verrouillage ou d’autres sorties générées, que la revue ignore délibérément.',
|
||
'walkthrough.blocked.contextTooSmall.descriptionUnknownModel': 'Le petit modèle accepte environ {available} k caractères et ce diff en demande environ {required} k. Rien n’est tronqué : choisissez un modèle au contexte plus large.',
|
||
'walkthrough.blocked.structuredOutput.descriptionUnknownModel': 'Le petit modèle ne prend pas en charge les réponses structurées nécessaires à un parcours.',
|
||
'contextRail.surface.plan.description': 'Voir le plan actuel',
|
||
'contextRail.surface.pr.description': 'Créer, relire et fusionner la pull request de la branche actuelle',
|
||
'contextRail.surface.notes.description': 'Notes, tâches et plans du projet',
|
||
'contextRail.surface.context.description': 'Contexte de session et utilisation des tokens',
|
||
'contextRail.surface.browser.description': 'Navigateur web intégré',
|
||
'contextRail.surface.preview.description': 'Aperçu du serveur de développement',
|
||
'contextRail.surface.chat.description': 'Session ouverte côte à côte',
|
||
'contextRail.surface.notes': 'Notes du projet',
|
||
'contextRail.editorTree.toggle': 'Afficher/masquer l’arborescence de fichiers',
|
||
'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.download': 'Télécharger',
|
||
'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.collapseAllTitle': 'Réduire tous les dossiers',
|
||
'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.switchToEditMode': 'Passer en mode édition',
|
||
'filesView.editor.switchToPreviewMode': 'Passer en mode aperçu',
|
||
'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.editor.cannotPreviewBinary': 'Impossible de prévisualiser le fichier binaire',
|
||
'filesView.editor.binaryFileDescription': 'Ce fichier est binaire et ne peut pas être modifié dans OpenChamber. Téléchargez-le pour l’ouvrir avec une autre application.',
|
||
'filesView.state.loading': 'Chargement...',
|
||
'filesView.state.openingFileAtChange': 'Ouverture du fichier lors du changement...',
|
||
'filesView.tree.search.placeholder': 'Rechercher des fichiers...',
|
||
'filesView.tree.search.clearAria': 'Effacer la recherche',
|
||
'filesView.tree.search.searching': 'Recherche...',
|
||
'filesView.tree.actions.newFileTitle': 'Nouveau fichier',
|
||
'filesView.tree.actions.newFolderTitle': 'Nouveau dossier',
|
||
'filesView.tree.actions.refreshTitle': 'Rafraîchir',
|
||
'filesView.editor.imageAltFallback': 'Image',
|
||
'filesView.error.jsonViewerUnavailable': 'Visionneuse JSON indisponible',
|
||
'filesView.error.switchToTextMode': 'Passez en mode texte pour afficher le contenu brut.',
|
||
'filesView.warning.largeFilePreviewLimited': 'Ce fichier est volumineux ({sizeKb}KB). L\'aperçu peut être limité.',
|
||
'filesView.error.previewUnavailable': 'Aperçu indisponible',
|
||
'filesView.error.switchToEditMode': 'Passez en mode édition pour résoudre le problème.',
|
||
'filesView.error.readFileFailed': 'Échec de la lecture du fichier',
|
||
'filesView.editor.htmlPreviewTitle': 'Aperçu HTML',
|
||
'contextUsage.aria.label': 'Utilisation du contexte',
|
||
'contextUsage.mobile.title': 'Utilisation du contexte',
|
||
'contextUsage.mobile.usedTokens': 'Jetons utilisés',
|
||
'contextUsage.mobile.contextLimit': 'Limite de contexte',
|
||
'contextUsage.mobile.outputLimit': 'Limite de sortie',
|
||
'contextUsage.mobile.usage': 'Usage',
|
||
'contextUsage.tooltip.usedTokens': 'Jetons utilisés : {tokens}',
|
||
'contextUsage.tooltip.contextLimit': 'Limite de contexte : {tokens}',
|
||
'contextUsage.tooltip.outputLimit': 'Limite de sortie : {tokens}',
|
||
'contextSidebar.session.untitled': 'Session sans titre',
|
||
'contextSidebar.empty.openSession': 'Ouvrez une session pour inspecter le contexte.',
|
||
'contextSidebar.section.context': 'Contexte',
|
||
'contextSidebar.section.lastAssistantMessage': 'Dernier message de l\'assistant',
|
||
'contextSidebar.section.rawMessages': 'Messages bruts',
|
||
'contextSidebar.context.percentUsed': '{percent}% utilisé',
|
||
'contextSidebar.breakdown.user': 'Utilisateur',
|
||
'contextSidebar.breakdown.assistant': 'Assistant',
|
||
'contextSidebar.breakdown.toolCalls': 'Appels d\'outils',
|
||
'contextSidebar.breakdown.other': 'Autre',
|
||
'contextSidebar.stats.messages': 'Messages',
|
||
'contextSidebar.stats.user': 'Utilisateur',
|
||
'contextSidebar.stats.assistant': 'Assistant',
|
||
'contextSidebar.stats.cost': 'Coût',
|
||
'contextSidebar.tokens.input': 'Entrée',
|
||
'contextSidebar.tokens.output': 'Sortie',
|
||
'contextSidebar.tokens.reasoning': 'Raisonnement',
|
||
'contextSidebar.tokens.cacheRead': 'Lecture du cache',
|
||
'contextSidebar.tokens.cacheWrite': 'Écriture du cache',
|
||
'contextSidebar.tokens.cacheHit': 'Succès du cache',
|
||
'contextSidebar.actions.copyJson': 'Copier JSON',
|
||
'contextSidebar.actions.copy': 'Copie',
|
||
'contextSidebar.actions.copied': 'Copié',
|
||
'planView.file.defaultName': 'plan',
|
||
'planView.title.default': 'Plan',
|
||
'planView.error.saveFailed': 'Échec de l\'enregistrement',
|
||
'planView.error.previewUnavailable': 'Aperçu indisponible',
|
||
'planView.error.switchToEditMode': 'Passez en mode édition pour résoudre le problème.',
|
||
'planView.error.writeFailed': 'Échec de l\'écriture',
|
||
'planView.error.writePlanFileFailed': 'Échec de l\'écriture du fichier de plan ({status})',
|
||
'planView.actions.improvePlanAria': 'Améliorer le plan',
|
||
'planView.actions.improve': 'Améliorer',
|
||
'planView.actions.implementPlanAria': 'Plan de mise en œuvre',
|
||
'planView.actions.implement': 'Mettre en œuvre',
|
||
'planView.actions.sendToNewSession': 'Envoyer à une nouvelle session',
|
||
'planView.actions.sendToNewWorktreeSession': 'Envoyer à une nouvelle session Worktree',
|
||
'planView.actions.copyPlanContents': 'Copier le contenu du plan',
|
||
'planView.state.loading': 'Chargement...',
|
||
'diffView.binary.unavailable': 'Le contenu de ce fichier ne peut pas être visualisé.',
|
||
'diffView.change.untracked': 'Fichier non suivi',
|
||
'diffView.change.new': 'Nouveau fichier',
|
||
'diffView.change.deleted': 'Fichier supprimé',
|
||
'diffView.change.renamed': 'Fichier renommé',
|
||
'diffView.change.copied': 'Fichier copié',
|
||
'diffView.change.modified': 'Fichier modifié',
|
||
'diffView.selector.selectFile': 'Sélectionner un fichier',
|
||
'diffView.image.original': 'Original',
|
||
'diffView.image.modified': 'Modifié',
|
||
'diffView.image.new': 'Nouveau',
|
||
'diffView.image.originalAlt': 'Original: {path}',
|
||
'diffView.image.modifiedAlt': 'Modifié : {path}',
|
||
'diffView.section.files': 'Fichiers',
|
||
'diffView.state.selectSessionDirectory': 'Sélectionnez un répertoire de session pour afficher les différences',
|
||
'diffView.state.loadingRepositoryStatus': 'Chargement de l\'état du dépôt...',
|
||
'diffView.state.notGitRepository': 'Pas un dépôt git. Utilisez l\'onglet Git pour initialiser ou modifier des répertoires.',
|
||
'diffView.state.cleanWorkingTree': 'Worktree sans modifications, rien à afficher',
|
||
'diffView.state.noLastTurnChanges': 'Aucun changement du dernier tour à afficher',
|
||
'diffView.state.failedToLoadDiff': 'Échec du chargement du différentiel',
|
||
'diffView.state.loadingDiff': 'Chargement du différentiel...',
|
||
'diffView.state.loadingChanges': 'Chargement des modifications...',
|
||
'diffView.state.largeDiff': 'Diff volumineux ({count} lignes modifiées)',
|
||
'diffView.state.largeDiffDescription': 'Le rendu peut être lent. Vous pouvez tout de même afficher le diff avec le bouton ci-dessous.',
|
||
'diffView.summary.changedFilesSingle': 'Le fichier {count} a été modifié',
|
||
'diffView.summary.changedFilesPlural': 'Fichiers {count} modifiés',
|
||
"diffView.scope.changed": "Modifiés",
|
||
"diffView.scope.staged": "Staged",
|
||
"diffView.scope.lastTurn": "Dernier tour",
|
||
"diffView.scope.selectorAria": "Sélectionner le mode de changements",
|
||
'diffView.actions.retry': 'Réessayer',
|
||
'diffView.actions.renderAnyway': 'Afficher quand même',
|
||
'diffView.actions.expandAll': 'Tout développer',
|
||
'diffView.actions.collapseAll': 'Tout réduire',
|
||
'diffView.actions.loadFullFiles': 'Charger les fichiers complets',
|
||
'diffView.actions.disableFullFiles': 'Ne plus charger les fichiers complets',
|
||
'diffView.actions.disableLineWrap': 'Désactiver le retour à la ligne',
|
||
'diffView.actions.enableLineWrap': 'Activer le retour à la ligne',
|
||
'diffView.actions.openFileInEditorAtChange': 'Ouvrez ce fichier dans l\'éditeur lors du changement',
|
||
'diffView.actions.openFileAtFirstChangedLine': 'Ouvrez ce fichier à la première ligne modifiée',
|
||
'diffView.actions.review': 'Revoir',
|
||
'diffView.actions.reviewAria': 'Revoir les changements',
|
||
'diffView.reviewDialog.title': 'Revoir les changements',
|
||
'diffView.reviewDialog.description': 'Démarre une session de revue séparée pour les changements actuels.',
|
||
'diffView.reviewDialog.generateHandoff': 'Générer un handoff',
|
||
'diffView.reviewDialog.autoReview': 'Lancer la boucle de revue automatique',
|
||
'diffView.reviewDialog.info': 'Ce flux fonctionne mieux lorsqu’il est lancé depuis la session où les changements ont été implémentés.',
|
||
'diffView.reviewDialog.actions.cancel': 'Annuler',
|
||
'diffView.reviewDialog.actions.start': 'Revoir',
|
||
'diffView.reviewDialog.actions.starting': 'Démarrage...',
|
||
'diffView.reviewDialog.toast.noSessionDirectory': 'Le dossier de session est indisponible',
|
||
'diffView.reviewDialog.toast.startFailed': 'Impossible de démarrer le flux de revue',
|
||
'chat.history.loadOlder': 'Charger les messages précédents',
|
||
'chat.autoReview.title': 'La boucle de revue de code est en cours',
|
||
'chat.autoReview.status.waitingForReviewer': 'En attente du reviewer',
|
||
'chat.autoReview.status.waitingForImplementer': 'En attente de l’implémenteur',
|
||
'chat.autoReview.reviewSessionLabel': 'Session de revue',
|
||
'chat.autoReview.actions.open': 'Ouvrir',
|
||
'chat.autoReview.actions.stop': 'Arrêter',
|
||
'diffView.hunk.label': 'Sections',
|
||
'diffView.hunk.stage': 'Préparer',
|
||
'diffView.hunk.unstage': 'Retirer',
|
||
'diffView.hunk.discard': 'Annuler',
|
||
'diffView.hunk.stageTitle': 'Préparer la section {index}',
|
||
'diffView.hunk.unstageTitle': 'Retirer la section {index} de la préparation',
|
||
'diffView.hunk.discardTitle': 'Annuler la section {index}',
|
||
'diffView.hunk.unavailable': "Cette section n'est plus disponible. Actualisez le diff et réessayez.",
|
||
'diffView.hunk.unsupported': "La préparation de sections individuelles n'est pas prise en charge dans cet environnement.",
|
||
'rightSidebar.contextNotesTodo.plan.defaultTitle': 'Plan',
|
||
'rightSidebar.contextNotesTodo.empty.selectProject': 'Sélectionnez un projet pour ajouter des notes et des tâches.',
|
||
'rightSidebar.contextNotesTodo.notes.title': 'Notes rapides - {project}',
|
||
'rightSidebar.contextNotesTodo.notes.placeholder': 'Capturez le contexte, les rappels ou les liens',
|
||
'rightSidebar.contextNotesTodo.todo.title': 'Faire',
|
||
'rightSidebar.contextNotesTodo.todo.itemsSingle': 'Article {count}',
|
||
'rightSidebar.contextNotesTodo.todo.itemsPlural': 'Articles {count}',
|
||
'rightSidebar.contextNotesTodo.todo.clearCompleted': 'Effacer terminé',
|
||
'rightSidebar.contextNotesTodo.todo.inputPlaceholder': 'Ajouter une tâche',
|
||
'rightSidebar.contextNotesTodo.todo.addAria': 'Ajouter une tâche',
|
||
'rightSidebar.contextNotesTodo.todo.empty': 'Aucune tâche pour l\'instant. Ajoutez une petite liste de contrôle pour ce projet.',
|
||
'rightSidebar.contextNotesTodo.todo.actions.markComplete': 'Marque "{text}" terminée',
|
||
'rightSidebar.contextNotesTodo.todo.actions.collapse': 'Réduire la tâche "{text}"',
|
||
'rightSidebar.contextNotesTodo.todo.actions.expand': 'Développer la tâche "{text}"',
|
||
'rightSidebar.contextNotesTodo.todo.actions.delete': 'Supprimer "{text}"',
|
||
'rightSidebar.contextNotesTodo.todo.actions.send': 'Envoyer "{text}"',
|
||
'rightSidebar.contextNotesTodo.todo.actions.reorder': 'Récommander "{text}"',
|
||
'rightSidebar.contextNotesTodo.todo.resizeAria': 'Redimensionner la liste de tâches',
|
||
'rightSidebar.contextNotesTodo.todo.sendMenu.currentSession': 'Envoyer à la session en cours',
|
||
'rightSidebar.contextNotesTodo.todo.sendMenu.newSession': 'Envoyer à une nouvelle session',
|
||
'rightSidebar.contextNotesTodo.todo.sendMenu.newWorktreeSession': 'Envoyer à une nouvelle session Worktree',
|
||
'rightSidebar.contextNotesTodo.plans.title': 'Forfaits',
|
||
'rightSidebar.contextNotesTodo.plans.filesSingle': 'Fichier {count}',
|
||
'rightSidebar.contextNotesTodo.plans.filesPlural': 'Fichiers {count}',
|
||
'rightSidebar.contextNotesTodo.plans.importFromFile': 'Importer un plan à partir d\'un fichier',
|
||
'rightSidebar.contextNotesTodo.plans.empty': 'Aucun plan enregistré pour l\'instant.',
|
||
'rightSidebar.contextNotesTodo.plans.deletePlan': 'Supprimer le forfait',
|
||
'rightSidebar.contextNotesTodo.plans.deletePlanWithTitle': 'Supprimer le plan "{title}"',
|
||
'rightSidebar.contextNotesTodo.sendDialog.title.newSession': 'Envoyer à une nouvelle session',
|
||
'rightSidebar.contextNotesTodo.sendDialog.title.newWorktree': 'Envoyer vers un nouvel worktree',
|
||
'rightSidebar.contextNotesTodo.sendDialog.variant.default': 'Défaut',
|
||
'rightSidebar.contextNotesTodo.sendDialog.actions.cancel': 'Annuler',
|
||
'rightSidebar.contextNotesTodo.sendDialog.actions.send': 'Envoyer',
|
||
'rightSidebar.contextNotesTodo.sendDialog.actions.sending': 'Envoi',
|
||
'rightSidebar.contextNotesTodo.toast.saveNotesFailed': 'Échec de l\'enregistrement des notes du projet',
|
||
'rightSidebar.contextNotesTodo.toast.loadNotesFailed': 'Échec du chargement des notes de projet',
|
||
'rightSidebar.contextNotesTodo.toast.noActiveSession': 'Aucune session active sélectionnée',
|
||
'rightSidebar.contextNotesTodo.toast.sentToCurrentSession': 'Todo envoyé à la session en cours',
|
||
'rightSidebar.contextNotesTodo.toast.worktreeRequiresGitRepo': 'Les actions Worktree ne sont disponibles que pour les dépôts Git',
|
||
'rightSidebar.contextNotesTodo.toast.createSessionFailed': 'Échec de la création de la session',
|
||
'rightSidebar.contextNotesTodo.toast.sentToNewSession': 'Todo envoyé à une nouvelle session',
|
||
'rightSidebar.contextNotesTodo.toast.sentToNewWorktreeSession': 'Todo envoyé à une nouvelle session Worktree',
|
||
'rightSidebar.contextNotesTodo.toast.sendTodoFailed': 'Échec de l\'envoi de la tâche',
|
||
'rightSidebar.contextNotesTodo.toast.deletePlanFailed': 'Échec de la suppression du plan',
|
||
'rightSidebar.contextNotesTodo.toast.planFileEmpty': 'Le fichier de plan est vide',
|
||
'rightSidebar.contextNotesTodo.toast.importPlanFailed': 'Échec de l\'importation du plan',
|
||
'rightSidebar.contextNotesTodo.toast.planImported': 'Forfait importé',
|
||
'rightSidebar.contextNotesTodo.toast.readPlanFileFailed': 'Échec de la lecture du fichier de plan',
|
||
'inlineComment.range.lines': 'Lignes {start}-{end}',
|
||
'inlineComment.input.placeholder': 'Ajouter un commentaire... (Cmd+Entrée pour enregistrer)',
|
||
'inlineComment.actions.cancel': 'Annuler',
|
||
'inlineComment.actions.save': 'Sauvegarder',
|
||
'inlineComment.actions.comment': 'Commentaire',
|
||
'inlineComment.actions.showLess': 'Afficher moins',
|
||
'inlineComment.actions.showMore': 'Afficher plus',
|
||
'inlineComment.actions.editComment': 'Modifier le commentaire',
|
||
'inlineComment.actions.deleteComment': 'Supprimer le commentaire',
|
||
'inlineComment.toast.selectSessionToSave': 'Sélectionnez une session pour enregistrer le commentaire',
|
||
'header.github.connectedWithLogin': 'GitHub : {login}',
|
||
'header.github.connected': 'GitHub connecté',
|
||
'header.github.avatarWithLogin': 'Avatar {login}',
|
||
'header.github.avatar': 'Avatar GitHub',
|
||
'header.github.accountsTitle': 'Comptes GitHub',
|
||
'header.github.accountSource.oauth': 'OAuth',
|
||
'header.github.accountSource.cli': 'CLI',
|
||
'header.services.openWithCurrent': 'Instance ouverte, utilisation et MCP (actuel : {current})',
|
||
'header.services.open': 'Services ouverts, utilisation et MCP',
|
||
'header.services.tooltip.currentInstanceWithShortcuts': 'Instance actuelle : {current} ({toggle} ; onglet suivant {nextTab})',
|
||
'header.services.tooltip.servicesWithShortcuts': 'Services ({toggle} ; onglet suivant {nextTab})',
|
||
'header.services.title': 'Services',
|
||
'header.services.viewAria': 'Voir les prestations',
|
||
'header.services.closeAria': 'Fermer les prestations',
|
||
'header.services.rateLimits': 'Limites de taux',
|
||
'header.services.refreshRateLimitsAria': 'Limites du taux de rafraîchissement',
|
||
'header.services.noRateLimits': 'Aucune limite de taux disponible.',
|
||
'header.services.noRateLimitsReported': 'Aucune limite de taux signalée.',
|
||
'header.services.used': 'Utilisé',
|
||
'header.services.remaining': 'Restant',
|
||
'header.services.modelFamily.other': 'Autre',
|
||
'header.services.shutdownDev': 'Arrêter OpenChamber',
|
||
'header.actions.openPlanAria': 'Plan ouvert',
|
||
"header.actions.toggleChangesPanel": "Panneau des changements",
|
||
"header.actions.toggleChangesPanelAria": "Basculer le panneau des changements",
|
||
'header.actions.planWithShortcut': 'Forfait ({shortcut})',
|
||
'header.actions.terminalPanelWithShortcut': 'Panneau à bornes ({shortcut})',
|
||
'chat.recap.aria': 'Récapitulatif de la session',
|
||
'chat.recap.label': 'Récap :',
|
||
'chat.goal.dialog.titleCreate': 'Définir un objectif de session',
|
||
'chat.goal.dialog.titleManage': 'Objectif de session',
|
||
'chat.goal.dialog.objectiveLabel': 'Objectif',
|
||
'chat.goal.dialog.objectivePlaceholder': 'Décrivez l\'état final que l\'agent doit atteindre et vérifier…',
|
||
'chat.goal.dialog.budgetLabel': 'Budget de tokens',
|
||
'chat.goal.dialog.evaluationModelLabel': 'Modèle d’évaluation',
|
||
'chat.goal.status.active': 'Actif',
|
||
'chat.goal.status.evaluating': 'Évaluation…',
|
||
'chat.goal.status.paused': 'En pause',
|
||
'chat.goal.status.blocked': 'Bloqué',
|
||
'chat.goal.status.budgetLimited': 'Budget atteint',
|
||
'chat.goal.status.complete': 'Terminé',
|
||
'chat.goal.usage.tokens': '{used} tokens',
|
||
'chat.goal.usage.tokensWithBudget': '{used}/{budget} tokens',
|
||
'chat.goal.usage.turns': '{turns} continuations',
|
||
'chat.goal.action.pause': 'Mettre en pause',
|
||
'chat.goal.action.resume': 'Reprendre',
|
||
'chat.goal.action.markComplete': 'Marquer comme terminé',
|
||
'chat.goal.action.clear': 'Supprimer l\'objectif',
|
||
'chat.goal.action.cancel': 'Annuler',
|
||
'chat.goal.action.save': 'Enregistrer l\'objectif',
|
||
'chat.goal.action.start': 'Lancer l\'objectif',
|
||
'chat.goal.toast.actionFailed': 'Échec de la mise à jour de l\'objectif',
|
||
"chat.goal.toast.distillFallback": "L'objectif dépassait la limite et n'a pas pu être condensé — l'auditeur utilise une version tronquée",
|
||
'chat.goal.row.aria': 'Objectif de session — ouvrir les détails',
|
||
'chat.goal.button.createAria': 'Définir un objectif de session',
|
||
'chat.goal.button.manageAria': 'Gérer l\'objectif de session',
|
||
'chat.goal.button.armAria': 'Démarrer un objectif avec le prochain message',
|
||
"chat.goal.counter.aria": "Limite de longueur de l'objectif",
|
||
'chat.goal.button.disarmAria': 'Objectif armé — touchez pour désarmer',
|
||
'chat.goal.button.cancelAria': 'Objectif en cours — touchez pour l’annuler',
|
||
'chat.goal.cancelDialog.title': 'Annuler cet objectif ?',
|
||
'chat.goal.cancelDialog.description': 'L\'agent cessera de travailler automatiquement vers cet objectif.',
|
||
'chat.goal.cancelDialog.keep': 'Garder l\'objectif',
|
||
'chat.goal.cancelDialog.confirm': 'Annuler l\'objectif',
|
||
'chat.suggestion.applyAria': 'Utiliser le message suggéré',
|
||
'chat.suggestion.dismissAria': 'Ignorer la suggestion',
|
||
'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.altLabel': 'Alt',
|
||
'terminalView.quickKeys.altModifierAria': 'Modificateur Alt',
|
||
'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.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.addSelectionToChat': 'Ajouter la sélection au chat',
|
||
'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.togglePromptNavigator': 'Afficher ou masquer le navigateur de prompts',
|
||
'helpDialog.item.abortActiveRun': 'Abandonner l’exécution active (double pression)',
|
||
'helpDialog.item.toggleRightSidebar': 'Afficher/masquer le panneau de contexte',
|
||
'helpDialog.item.openRightSidebarGitTab': 'Ouvrir la surface Git',
|
||
'helpDialog.item.openRightSidebarFilesTab': 'Ouvrir la surface Fichiers',
|
||
'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.promptNavigator.aria': 'Navigation des prompts',
|
||
'chat.promptNavigator.currentPrompt': 'Prompt actuel',
|
||
'chat.promptNavigator.loadMore': 'Charger plus de prompts',
|
||
'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.modelStatus': '{model} · {status}',
|
||
'chat.statusRow.summary.activeLeft': '{active} actif · {left} gauche',
|
||
'chat.statusRow.aborted': 'Avorté',
|
||
'chat.revertIndicator.redo': 'Refaire',
|
||
'chat.revertIndicator.redoAria': 'Rétablir : restaurer les messages annulés',
|
||
'chat.revertPopover.title': 'Rétabli',
|
||
'chat.revertPopover.noTextContent': 'Aucun contenu textuel',
|
||
'chat.revertPopover.forkFromHere': 'Fourche d\'ici',
|
||
'chat.revertPopover.forkFromMessage': 'Fork de ce message',
|
||
'chat.revertPopover.restoreAll': 'Tout restaurer',
|
||
'chat.revertPopover.restore': 'Restaurer',
|
||
'chat.revertPopover.revert': 'Revenir',
|
||
'chat.revertPopover.fork': 'Fourchette',
|
||
'chat.revert.toast.undo': 'Revenu à {preview}',
|
||
'chat.revert.toast.redo': 'Refait',
|
||
'chat.revert.toast.restored': 'Restauré tous les messages',
|
||
'chat.errorBoundary.title': 'Erreur de discussion',
|
||
'chat.errorBoundary.description': 'L\'interface de discussion a rencontré une erreur. Cela peut être dû à un problème de réseau temporaire ou à des données de message corrompues.',
|
||
'chat.errorBoundary.sessionLabel': 'Session',
|
||
'chat.errorBoundary.detailsSummary': 'Détails de l\'erreur',
|
||
'chat.errorBoundary.resetAction': 'Réinitialiser le chat',
|
||
'chat.errorBoundary.persistentHint': 'Si le problème persiste, essayez d\'actualiser la page.',
|
||
'chat.autocomplete.tabs.commands': 'Commandes',
|
||
'chat.autocomplete.tabs.agents': 'Agents',
|
||
'chat.autocomplete.tabs.files': 'Fichiers',
|
||
'chat.autocomplete.keyboardHint': '↑↓ naviguer • Entrer sélectionner • Esc fermer',
|
||
'chat.commandAutocomplete.command.initDescription': 'Créer/mettre à jour le fichier AGENTS.md',
|
||
'chat.commandAutocomplete.command.undoDescription': 'Annuler le dernier message',
|
||
'chat.commandAutocomplete.command.redoDescription': 'Refaire les messages précédemment annulés',
|
||
'chat.commandAutocomplete.command.timelineDescription': 'Ouvrir la chronologie de la conversation',
|
||
'chat.commandAutocomplete.command.compactDescription': 'Compresser l\'historique des sessions à l\'aide de l\'IA pour réduire la taille du contexte',
|
||
'chat.commandAutocomplete.command.summaryDescription': 'Résumé de session non destructif. Indice de sujet facultatif après la commande.',
|
||
'chat.commandAutocomplete.command.workspaceReviewDescription': 'Examinez les modifications actuelles de l’espace de travail pour les problèmes de signal élevé uniquement.',
|
||
'chat.commandAutocomplete.badge.skill': 'skill',
|
||
'chat.commandAutocomplete.badge.command': 'commande',
|
||
'chat.commandAutocomplete.badge.system': 'système',
|
||
'chat.commandAutocomplete.empty': 'Aucune commande trouvée',
|
||
'chat.agentMentionAutocomplete.badge.system': 'système',
|
||
'chat.agentMentionAutocomplete.empty': 'Aucun agent trouvé',
|
||
'chat.fileMentionAutocomplete.searchMoreAgents': 'Tapez pour rechercher plus d\'agents',
|
||
'chat.fileMentionAutocomplete.empty': 'Aucune correspondance trouvée',
|
||
'chat.queuedMessage.attachments': '+Fichier(s) {count}',
|
||
'chat.queuedMessage.empty': '(vide)',
|
||
'chat.queuedMessage.title': 'Messages en file d\'attente',
|
||
'chat.queuedMessage.edit': 'modifier',
|
||
'chat.queuedMessage.send': 'envoyer',
|
||
'chat.queuedMessage.removeAria': 'Supprimer de la file d\'attente',
|
||
'chat.queuedMessage.reorderAria': 'Glisser pour réorganiser',
|
||
'chat.container.returnToParent.aria': 'Retour à la session parents',
|
||
'chat.container.returnToParent.titleNamed': 'Retourner à : {title}',
|
||
'chat.container.returnToParent.title': 'Retour à la session parents',
|
||
'chat.container.returnToParent.label': 'Mère',
|
||
'chat.container.readOnlySubagentPromptBanner': 'Les sessions de sous-agent ne peuvent pas être invitées.',
|
||
'chat.container.sessionLoadError.title': 'Impossible de charger la session',
|
||
'chat.container.sessionLoadError.description': 'Vérifiez la connexion et essayez de charger à nouveau cette session.',
|
||
'chat.container.sessionLoadError.retry': 'Réessayer',
|
||
'sessions.sidebar.group.empty.loadingSessions': 'Chargement des sessions…',
|
||
'sessions.sidebar.group.empty.loadFailed': 'Impossible d’actualiser les sessions.',
|
||
'sessions.sidebar.group.empty.retry': 'Réessayer',
|
||
'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.pinContext': 'Épingler dans le contexte (conservé après compactage)',
|
||
'chat.messageBody.actions.unpinContext': 'Désépingler du contexte (non conservé après compactage)',
|
||
'chat.messageBody.actions.contextPinFailed': 'Impossible de modifier l’épinglage dans le contexte',
|
||
'chat.messageBody.actions.openPreviewAria': 'Ouvrir l\'aperçu',
|
||
'chat.messageBody.actions.openPreview': 'Ouvrir l\'aperçu',
|
||
'chat.messageBody.actions.copyAnswer': 'Copier la réponse',
|
||
'chat.messageBody.actions.savingImage': 'Enregistrement de l\'image...',
|
||
'chat.messageBody.actions.saveAsImage': 'Enregistrer sous image',
|
||
'chat.messageBody.actions.saveAsPlan': 'Enregistrer comme forfait',
|
||
'chat.messageBody.actions.startNewSession': 'Démarrer une nouvelle session à partir de cette réponse',
|
||
'chat.messageBody.actions.startNewMultiRun': 'Démarrer une nouvelle exécution multiple à partir de cette réponse',
|
||
'chat.generatedResult.actions.copy': 'Copie',
|
||
'chat.generatedResult.actions.copied': 'Copié',
|
||
'chat.generatedResult.commit.title': 'Message de commit généré',
|
||
'chat.generatedResult.commit.highlights': 'Points forts',
|
||
'chat.generatedResult.pullRequest.title': 'Demande d\'extraction générée',
|
||
'chat.generatedResult.pullRequest.titleLabel': 'Titre',
|
||
'chat.generatedResult.pullRequest.bodyLabel': 'Corps',
|
||
'chat.messageBody.tts.stopSpeaking': 'Arrête de parler',
|
||
'chat.messageBody.tts.readAloud': 'Lire à haute voix',
|
||
'chat.messageBody.tts.readAloudWithProvider': 'Lire à haute voix (voix {provider})',
|
||
'chat.messageBody.toast.noProject': 'Aucun projet trouvé pour cette session',
|
||
'chat.messageBody.toast.savePlanFailed': 'Échec de l\'enregistrement du plan',
|
||
'chat.messageBody.toast.planSaved': 'Forfait enregistré',
|
||
'chat.messageBody.toast.imageSaved': 'Image enregistrée',
|
||
'chat.messageBody.toast.generateImageFailed': 'Échec de la génération de l\'image',
|
||
'chat.chatInput.actions.commands': 'Commandes',
|
||
'chat.chatInput.actions.attachFiles': 'Joindre des fichiers',
|
||
'chat.chatInput.actions.addAttachment': 'Ajouter une pièce jointe',
|
||
'chat.chatInput.actions.linkGithubIssue': 'Lien vers le problème GitHub',
|
||
'chat.chatInput.actions.linkGithubPr': 'Lien GitHub PR',
|
||
'chat.chatInput.actions.modelAgentSettings': 'Paramètres du modèle et de l\'agent',
|
||
'chat.chatInput.actions.sendMessageAria': 'Envoyer un message',
|
||
'chat.chatInput.actions.queueMessageAria': 'Message de file d\'attente',
|
||
'chat.chatInput.actions.stopGeneratingAria': 'Arrêter de générer',
|
||
'chat.chatInput.focusMode.toggleAria': 'Basculer le mode de mise au point',
|
||
'chat.chatInput.focusMode.label': 'Mode de mise au point',
|
||
'chat.chatInput.permissionAutoAccept.disable': 'Désactiver l\'acceptation automatique des autorisations',
|
||
'chat.chatInput.permissionAutoAccept.enable': 'Activer l\'acceptation automatique des autorisations',
|
||
'chat.chatInput.permissionAutoAccept.on': 'Acceptation automatique des autorisations : activée',
|
||
'chat.chatInput.permissionAutoAccept.off': 'Acceptation automatique des autorisations : désactivée',
|
||
'chat.chatInput.linked.byAuthor': 'par {author}',
|
||
'chat.chatInput.linked.issue.openInBrowserAria': 'Problème ouvert dans le navigateur',
|
||
'chat.chatInput.linked.issue.removeAria': 'Supprimer le problème lié',
|
||
'chat.chatInput.linked.pr.number': 'PR #{number}',
|
||
'chat.chatInput.linked.pr.openInBrowserAria': 'Ouvrir la demande d\'extraction dans le navigateur',
|
||
'chat.chatInput.linked.pr.removeAria': 'Supprimer la demande d\'extraction liée',
|
||
'chat.chatInput.placeholder.shell': 'Entrez la commande shell...',
|
||
'chat.chatInput.placeholder.chat': '@ pour les fichiers/agents ; / pour les commandes et les skills ; ! pour shell ; # pour les extraits',
|
||
'chat.chatInput.placeholder.chatCompact': 'Utiliser @ / ! # pour les aides',
|
||
'chat.chatInput.placeholder.selectSession': 'Sélectionnez ou créez une session pour commencer à discuter',
|
||
'chat.dictation.start': 'Démarrer la dictée',
|
||
'chat.dictation.overlayAria': 'Dictée',
|
||
'chat.dictation.downloadingModel': 'Téléchargement du modèle vocal...',
|
||
'chat.dictation.downloadingModelProgress': 'Téléchargement du modèle vocal... {percent}%',
|
||
'chat.dictation.listening': 'Écoute...',
|
||
'chat.dictation.processing': 'Transcription...',
|
||
'chat.dictation.failed': 'Échec de la transcription',
|
||
'chat.dictation.cancel': 'Abandonner la dictée',
|
||
'chat.dictation.insert': 'Insérer la transcription',
|
||
'chat.dictation.insertAndSend': 'Insérer et envoyer',
|
||
'chat.dictation.retry': 'Réessayer la transcription',
|
||
'chat.dictation.discard': 'Abandonner l\'enregistrement',
|
||
'chat.snippetAutocomplete.action.addNew': '+ Ajouter un nouvel extrait',
|
||
'chat.snippetAutocomplete.empty': 'Aucun extrait trouvé',
|
||
'chat.snippetAutocomplete.footer': '↑↓ naviguer • Entrer sélectionner • Esc fermer',
|
||
'snippets.source.global': 'mondial',
|
||
'snippets.source.project': 'projet',
|
||
'chat.chatInput.toast.compactFailed': 'Échec du compactage de la session',
|
||
'chat.chatInput.toast.summaryFailed': 'Échec de la génération du résumé',
|
||
'chat.chatInput.toast.reviewFailed': 'Échec de l\'examen des modifications',
|
||
'chat.chatInput.toast.attachmentsTooLarge': 'Les pièces jointes sont trop volumineuses pour être envoyées. Veuillez essayer de réduire le nombre ou la taille des images.',
|
||
'chat.chatInput.toast.sendAttachmentsFailed': 'Échec de l\'envoi des pièces jointes. Essayez moins de fichiers ou des images plus petites.',
|
||
'chat.chatInput.toast.messageSendFailed': 'Le message n\'a pas pu être envoyé. Pièces jointes restaurées.',
|
||
'chat.chatInput.toast.clipboardAttachFailed': 'Échec de la pièce jointe de l\'image du presse-papiers',
|
||
'chat.chatInput.toast.addedFileMentions': 'Ajout des mentions du fichier {count}',
|
||
'chat.chatInput.toast.attachFileFailed': 'Impossible de joindre le fichier',
|
||
'chat.chatInput.toast.attachNamedFailed': 'Échec de la connexion du {name}',
|
||
'chat.chatInput.toast.unsupportedAttachmentModalities': '{model} ne prend pas en charge l’entrée {modalities} requise par {files}. Vous pouvez tout de même envoyer le message, mais ces pièces jointes risquent d’être ignorées.',
|
||
'chat.chatInput.toast.someFilesSkipped': 'Certains fichiers ont été ignorés :\n{summary}',
|
||
'chat.chatInput.toast.vscodePickFailed': 'Échec de la sélection des fichiers dans VS Code',
|
||
'chat.chatInput.toast.openSessionFirst': 'Ouvrir d\'abord une session',
|
||
'chat.chatInput.toast.togglePermissionAutoAcceptFailed': 'Échec de l\'activation de l\'acceptation automatique des autorisations',
|
||
'chat.chatInput.reviewComments': 'Commentaires de révision :',
|
||
'chat.chatInput.devServerLogs': 'Journaux du serveur de développement :',
|
||
'chat.chatInput.devServerLogsRemove': 'Supprimer les journaux du serveur de développement',
|
||
'chat.chatInput.previewAnnotations': 'Aperçu des annotations :',
|
||
'chat.chatInput.previewContext': 'Contexte d\'aperçu :',
|
||
'chat.chatInput.previewContextRemove': 'Supprimer le contexte d\'aperçu',
|
||
'chat.chatInput.projectRoot': 'Racine du projet',
|
||
'chat.chatInput.branch': 'Bifurquer',
|
||
'chat.chatInput.draftPicker.projectTitle': 'Projet',
|
||
'chat.chatInput.draftPicker.searchProjects': 'Rechercher des projets...',
|
||
'chat.chatInput.draftPicker.searchBranches': 'Rechercher des branches...',
|
||
'chat.chatInput.worktrees': 'Worktrees',
|
||
'chat.chatInput.worktreeNew': '+ Nouveau',
|
||
'chat.chatInput.drop.insertMention': 'Déposer pour insérer comme mention',
|
||
'chat.chatInput.drop.attachFiles': 'Déposez les fichiers ici pour les joindre',
|
||
'chat.chatInput.fileFallback': 'déposer',
|
||
'chat.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.dataUrlMalformed': 'L\'URL de données Mermaid est mal formée.',
|
||
'chat.toolOutputDialog.mermaid.invalidLocalPath': 'Le chemin du fichier Mermaid local est invalide.',
|
||
'chat.toolOutputDialog.mermaid.readFileFailedWithStatus': 'Impossible de lire le fichier Mermaid. Statut : {status}.',
|
||
'chat.toolOutputDialog.mermaid.unsupportedUrlProtocol': 'Le protocole de l\'URL Mermaid n\'est pas pris en charge.',
|
||
'chat.toolOutputDialog.mermaid.loadFailedWithStatus': 'Impossible de charger le diagramme Mermaid. Statut : {status}.',
|
||
'chat.toolOutputDialog.mermaid.closeAria': 'Fermer l\'aperçu du diagramme',
|
||
'chat.toolOutputDialog.mermaid.loading': 'Diagramme de chargement...',
|
||
'chat.toolOutputDialog.mermaid.renderFailed': 'Impossible d\'afficher le diagramme Mermaid.',
|
||
'chat.toolOutputDialog.mermaid.retry': 'Réessayer',
|
||
'chat.toolOutputDialog.commandCompleted': 'Commande terminée avec succès',
|
||
'chat.toolOutputDialog.noOutputProduced': 'Aucune sortie n\'a été produite',
|
||
'chat.toolPart.lspErrors': 'Erreurs LSP',
|
||
'chat.toolPart.moreErrors': '+{count} plus d\'erreurs',
|
||
'chat.toolPart.error': 'Erreur:',
|
||
'chat.toolPart.awaitingResponse': 'En attente de réponse...',
|
||
'chat.toolPart.noOutputProduced': 'Aucune sortie produite',
|
||
'chat.toolPart.output': 'Sortie',
|
||
'chat.toolPart.openSubtask': 'Ouvrir la sous-tâche {type}',
|
||
'chat.todo.total': 'Total',
|
||
'chat.todo.inProgress': 'En cours',
|
||
'chat.todo.pending': 'En attente',
|
||
'chat.todo.completed': 'Complété',
|
||
'chat.todo.cancelled': 'Annulé',
|
||
'chat.permissionCard.workingDirectory': 'Répertoire de travail :',
|
||
'chat.permissionCard.timeout': 'Temps mort:',
|
||
'chat.permissionCard.request': 'Demande:',
|
||
'chat.permissionCard.headers': 'En-têtes :',
|
||
'chat.permissionCard.body': 'Corps:',
|
||
'chat.permissionCard.action': 'Action:',
|
||
'chat.permissionCard.details': 'Détails:',
|
||
'chat.permissionCard.patterns': 'Motifs:',
|
||
'chat.permissionToast.sessionFallback': 'Session',
|
||
'chat.permissionToast.permissionFallback': 'Détails de l\'autorisation indisponibles',
|
||
'chat.permissionToast.labels.session': 'Session:',
|
||
'chat.permissionToast.labels.permission': 'Autorisation:',
|
||
'chat.permissionToast.actions.once': 'Une fois',
|
||
'chat.permissionToast.actions.always': 'Toujours',
|
||
'chat.permissionToast.actions.deny': 'Refuser',
|
||
'chat.permissionToast.actions.approveOnceAria': 'Approuver une fois',
|
||
'chat.permissionToast.actions.approveOnceAriaWithSession': 'Approuver une fois pour {session}',
|
||
'chat.permissionToast.actions.approveAlwaysAria': 'Approuver toujours',
|
||
'chat.permissionToast.actions.approveAlwaysAriaWithSession': 'Approuver toujours pour {session}',
|
||
'chat.permissionToast.actions.denyAria': 'Refuser l\'autorisation',
|
||
'chat.permissionToast.actions.denyAriaWithSession': 'Refuser l\'autorisation pour {session}',
|
||
'chat.permissionRequest.required': 'Autorisation requise :',
|
||
'chat.permissionRequest.actions.once': 'Une fois',
|
||
'chat.permissionRequest.actions.always': 'Toujours',
|
||
'chat.permissionRequest.actions.reject': 'Refuser',
|
||
'chat.modelControls.provider': 'Fournisseur',
|
||
'chat.modelControls.capability.toolCalling': 'Appel d\'outil',
|
||
'chat.modelControls.capability.reasoning': 'Raisonnement',
|
||
'chat.modelControls.modality.text': 'Texte',
|
||
'chat.modelControls.modality.image': 'Image',
|
||
'chat.modelControls.modality.video': 'Vidéo',
|
||
'chat.modelControls.modality.audio': 'Audio',
|
||
'chat.modelControls.modality.pdf': 'PDF',
|
||
'chat.modelControls.capabilities': 'Capacités',
|
||
'chat.modelControls.modalities': 'Modalités',
|
||
'chat.modelControls.input': 'Entrée',
|
||
'chat.modelControls.output': 'Sortie',
|
||
'chat.modelControls.limits': 'Limites',
|
||
'chat.modelControls.context': 'Contexte',
|
||
'chat.modelControls.metadata': 'Métadonnées',
|
||
'chat.modelControls.knowledge': 'Connaissance',
|
||
'chat.modelControls.release': 'Libérer',
|
||
'chat.modelControls.mode': 'Mode',
|
||
'chat.modelControls.model': 'Modèle',
|
||
'chat.modelControls.temperature': 'Température',
|
||
'chat.modelControls.topP': 'Haut P',
|
||
'chat.modelControls.permissions': 'Autorisations',
|
||
'chat.modelControls.edit': 'Modifier',
|
||
'chat.modelControls.bash': 'Bash',
|
||
'chat.modelControls.webFetch': 'WebFetch',
|
||
'chat.modelControls.customPrompt': 'Prompt personnalisé',
|
||
'chat.modelControls.selectModel': 'Sélectionnez le modèle',
|
||
'chat.modelControls.searchProvidersOrModels': 'Rechercher des fournisseurs ou des modèles',
|
||
'chat.modelControls.clearSearch': 'Effacer la recherche',
|
||
'chat.modelControls.current': 'Actuel',
|
||
'chat.modelControls.thinking': 'Pensée',
|
||
'chat.modelControls.default': 'Défaut',
|
||
'chat.modelControls.selectAgent': 'Sélectionnez un agent',
|
||
'chat.modelControls.costPerMillion': 'Coût ($/1 million de jetons)',
|
||
'chat.modelControls.metadataUnavailable': 'Métadonnées du modèle indisponibles.',
|
||
'chat.modelControls.addNewProvider': 'Ajouter un nouveau fournisseur',
|
||
'chat.modelControls.noAgentSelected': 'Aucun agent sélectionné.',
|
||
'chat.modelControls.resetToDefault': 'Réinitialiser aux valeurs par défaut',
|
||
'chat.modelControls.searchModels': 'Rechercher des modèles',
|
||
'chat.modelControls.searchAgents': 'Agents de recherche',
|
||
'chat.modelControls.noModelsFound': 'Aucun modèle trouvé',
|
||
'chat.modelControls.favorites': 'Favoris',
|
||
'chat.modelControls.recent': 'Récents',
|
||
'chat.modelControls.addToFavorites': 'Ajouter aux favoris',
|
||
'chat.modelControls.removeFromFavorites': 'Supprimer des favoris',
|
||
'chat.modelControls.favoriteAria': 'Préféré',
|
||
'chat.modelControls.unfavoriteAria': 'Supprimer des favoris',
|
||
'chat.modelControls.collapseProvider': 'Fournisseur de réduction',
|
||
'chat.modelControls.expandProvider': 'Développer le fournisseur',
|
||
'chat.modelControls.keyboardHint': '↑↓ naviguer{thinking} • Entrer sélectionner • Esc fermer',
|
||
'chat.modelControls.keyboardHintNavigate': '↑↓ naviguer',
|
||
'chat.modelControls.keyboardHintSwitchAgent': 'Agent de commutation {shortcut}',
|
||
'chat.modelControls.keyboardHintThinking': '←→ penser',
|
||
'chat.modelControls.showThinkingModes': 'Afficher les modes de réflexion',
|
||
'chat.modelControls.hideThinkingModes': 'Masquer les modes de réflexion',
|
||
'chat.modelControls.moreThinkingModes': 'Plus de modes de réflexion',
|
||
'chat.modelControls.noProvidersOrModelsFound': 'Aucun fournisseur ou modèle ne correspond à votre recherche.',
|
||
'chat.modelControls.reorderFavoriteAria': 'Réorganiser les favoris',
|
||
'chat.modelControls.reorderFavoriteTitle': 'Faites glisser pour réorganiser les favoris',
|
||
'chat.modelControls.reorderProviderTitle': 'Faites glisser pour réorganiser le fournisseur',
|
||
'chat.modelControls.permissionLabel.custom': 'Personnalisé',
|
||
'chat.modelControls.permissionLabel.allow': 'Permettre',
|
||
'chat.modelControls.permissionLabel.deny': 'Refuser',
|
||
'chat.modelControls.permissionLabel.ask': 'Demander',
|
||
'chat.modelControls.modeValue.primary': 'Primaire',
|
||
'chat.modelControls.modeValue.subagent': 'Sous-agent',
|
||
'chat.modelControls.modeValue.all': 'Tous',
|
||
'chat.modelControls.modeValue.none': '—',
|
||
'chat.reasoningTrace.thinking': 'Pensée',
|
||
'chat.reasoningTrace.justification': 'Justification',
|
||
'chat.reasoningTrace.expandAria': 'Développer la trace du raisonnement',
|
||
'chat.reasoningTrace.collapseAria': 'Réduire la trace du raisonnement',
|
||
'chat.reasoningTrace.thought': 'Pensée',
|
||
'chat.messageBody.subtask.title': 'Tâche déléguée',
|
||
'chat.messageBody.subtask.hidePrompt': 'Masquer le prompt',
|
||
'chat.messageBody.subtask.showPrompt': 'Afficher le prompt',
|
||
'chat.messageBody.subtask.openSession': 'Ouvrir une session de sous-tâche',
|
||
'chat.messageBody.shellCommand.title': 'Commande Shell',
|
||
'chat.messageBody.shellCommand.hideOutput': 'Masquer la sortie',
|
||
'chat.messageBody.shellCommand.showOutput': 'Afficher la sortie',
|
||
'chat.messageBody.shellCommand.copied': 'Copié',
|
||
'chat.messageBody.shellCommand.copyOutput': 'Copier la sortie',
|
||
'commandPalette.title': 'Palette de commandes',
|
||
'commandPalette.description': 'Recherchez des fichiers, des sessions et des commandes.',
|
||
'commandPalette.input.placeholder': 'Rechercher des fichiers, des sessions, des commandes...',
|
||
'commandPalette.empty.noResults': 'Aucun résultat trouvé.',
|
||
'commandPalette.empty.searchingFiles': 'Recherche de fichiers...',
|
||
'commandPalette.item.newSession': 'Nouvelle session',
|
||
'commandPalette.item.newMiniChat': 'Nouvelle mini-fenêtre de discussion',
|
||
'commandPalette.item.newWorktreeDraft': 'Nouveau brouillon d\'worktree',
|
||
'commandPalette.item.addProject': 'Ajouter un projet',
|
||
'commandPalette.item.showSessionSwitcher': 'Afficher le sélecteur de session',
|
||
'commandPalette.item.toggleSidebar': 'Basculer la barre latérale',
|
||
'commandPalette.item.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.autoDiscoverTooltip': 'Détecte et lance automatiquement le serveur de développement',
|
||
'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. Si vous ouvrez OpenChamber depuis un autre appareil sur votre réseau local, activez l\'accès au réseau du bureau dans l\'application de bureau et utilisez l\'adresse LAN indiquée dans les paramètres.',
|
||
'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.actions.openMobileUpdate': 'Ouvrir la mise à jour',
|
||
'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',
|
||
'mobileUpdate.toast.available.title': 'Mise à jour OpenChamber disponible',
|
||
'mobileUpdate.toast.available.description': 'La version {version} est prête pour Android.',
|
||
'mobileUpdate.toast.actions.download': 'Télécharger',
|
||
'mobileUpdate.toast.actions.dismiss': 'Ignorer',
|
||
'opencodeUpdate.toast.available.title': 'Mise à jour OpenCode',
|
||
'opencodeUpdate.toast.available.description': 'Version {version} disponible.',
|
||
'opencodeUpdate.toast.actions.update': 'Mise à jour',
|
||
'opencodeUpdate.toast.actions.dismiss': 'Ignorer',
|
||
'opencodeUpdate.toast.actions.reload': 'Recharger OpenCode',
|
||
'opencodeUpdate.toast.upgrading.title': 'Mise à jour de OpenCode...',
|
||
'opencodeUpdate.toast.upgrading.description': 'Gardez OpenChamber ouvert.',
|
||
'opencodeUpdate.toast.updated.title': 'OpenCode mis à jour',
|
||
'opencodeUpdate.toast.updated.description': 'Mise à jour installée.',
|
||
'opencodeUpdate.toast.updated.descriptionWithVersion': 'Version {version} installée.',
|
||
'opencodeUpdate.toast.failed.title': 'Impossible de mettre à jour OpenCode',
|
||
'opencodeUpdate.toast.failed.description': 'La mise à niveau du OpenCode a échoué.',
|
||
'opencodeUpdate.toast.reload.message': 'Redémarrage de OpenCode...',
|
||
'memoryDebugPanel.title': 'Panneau de débogage',
|
||
'memoryDebugPanel.tabs.memory': 'Mémoire',
|
||
'memoryDebugPanel.tabs.streaming': 'Streaming',
|
||
'memoryDebugPanel.section.sessionsInMemory': 'Sessions en mémoire',
|
||
'memoryDebugPanel.section.uiStreamingMetrics': 'Métriques de streaming de l\'interface utilisateur',
|
||
'memoryDebugPanel.section.vscodeBridgeMetrics': 'Métriques du pont VS Code',
|
||
'memoryDebugPanel.section.noUiSamples': 'Aucun échantillon de streaming d\'interface utilisateur pour l\'instant. Démarrez un flux et gardez ce panneau ouvert.',
|
||
'memoryDebugPanel.section.noVscodeSamples': 'Aucun échantillon de pont VS Code pour l\'instant.',
|
||
'memoryDebugPanel.metric.totalMessages': 'Nombre total de messages',
|
||
'memoryDebugPanel.metric.cachedSessions': 'Sessions mises en cache',
|
||
'memoryDebugPanel.metric.userMessages': 'Messages utilisateur',
|
||
'memoryDebugPanel.metric.assistantMessages': 'Messages assistant',
|
||
'memoryDebugPanel.metric.viewportWindow': 'Fenêtre d\'affichage',
|
||
'memoryDebugPanel.metric.zombieTimeout': 'Délai d\'attente des zombies',
|
||
'memoryDebugPanel.metric.githubTotalRequests': 'GitHub Total des demandes',
|
||
'memoryDebugPanel.metric.metrics': 'Métrique',
|
||
'memoryDebugPanel.metric.samples': 'Échantillons',
|
||
'memoryDebugPanel.metric.lastUpdate': 'Dernière mise à jour',
|
||
'memoryDebugPanel.metric.uiMetrics': 'Métriques de l\'interface utilisateur',
|
||
'memoryDebugPanel.metric.vscodeMetrics': 'VS Code Métriques',
|
||
'memoryDebugPanel.metric.messageListRenders': 'Rendus de liste de messages',
|
||
'memoryDebugPanel.metric.messageListStreamRenders': 'Rendus de flux MsgList',
|
||
'memoryDebugPanel.metric.chatMessageRenders': 'Rendus de messages de chat',
|
||
'memoryDebugPanel.metric.chatMessageStreamRenders': 'Rendus de flux de messages ChatMessage',
|
||
'memoryDebugPanel.metric.chatMessageStaticDuringStream': 'ChatMessage statique pendant le flux',
|
||
'memoryDebugPanel.metric.chatMessageStaticOutsideActiveTurn': 'ChatMessage statique en dehors du tour actif',
|
||
'memoryDebugPanel.metric.messagesValue': 'Messages {count}',
|
||
'memoryDebugPanel.metric.minutesValue': 'Minutes {count}',
|
||
'memoryDebugPanel.metric.msgsValue': 'Messages {count}',
|
||
'memoryDebugPanel.metric.roleMsgsValue': 'U {user} / A {assistant}',
|
||
'memoryDebugPanel.metric.countValue': 'compter {value}',
|
||
'memoryDebugPanel.metric.avgValue': 'moyenne {value}',
|
||
'memoryDebugPanel.metric.maxValue': 'maximum {value}',
|
||
'memoryDebugPanel.metric.totalValue': 'total {value}',
|
||
'memoryDebugPanel.actions.logState': 'État du journal',
|
||
'memoryDebugPanel.actions.copyJson': 'Copier JSON',
|
||
'memoryDebugPanel.tooltip.logCurrentState': 'Enregistrer l\'état actuel de la mémoire sur la console du navigateur',
|
||
'memoryDebugPanel.streaming.copy.copied': 'Débogage en streaming JSON copié',
|
||
'memoryDebugPanel.streaming.copy.failed': 'Échec de la copie de JSON',
|
||
'memoryDebugPanel.streaming.copy.hint': 'La copie exporte les métriques de streaming de l\'interface utilisateur et de VS Code en tant que JSON.',
|
||
'memoryDebugPanel.common.idle': 'inactif',
|
||
'memoryDebugPanel.common.live': 'en direct',
|
||
'memoryDebugPanel.common.notAvailable': 'n / A',
|
||
'memoryDebugPanel.common.untitled': 'Sans titre',
|
||
'directoryTree.field.newDirectoryPlaceholder': 'nouveau_répertoire',
|
||
'textarea.resizeHandleAria': 'Redimensionner la zone de texte',
|
||
'sidebar.resize.leftPanelAria': 'Redimensionner le panneau de gauche',
|
||
'sidebar.resize.rightPanelAria': 'Redimensionner le panneau de droite',
|
||
'mainLayout.mobile.closeDrawerAria': 'Fermer le tiroir',
|
||
'sortableTabsStrip.aria.tabs': 'Onglets',
|
||
'openChamberLogo.aria.logo': 'Logo OpenChamber',
|
||
'markdownRenderer.code.actions.copyTitle': 'Copier le code',
|
||
'markdownRenderer.code.actions.copiedTitle': 'Copié',
|
||
'markdownRenderer.table.actions.copyTitle': 'Copier le tableau',
|
||
'markdownRenderer.code.actions.enableWrapTitle': 'Activer le retour à la ligne',
|
||
'markdownRenderer.code.actions.disableWrapTitle': 'Désactiver le retour à la ligne',
|
||
'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.actions.zoomInTitle': 'Zoom avant',
|
||
'markdownRenderer.mermaid.actions.zoomOutTitle': 'Zoom arrière',
|
||
'markdownRenderer.mermaid.actions.resetViewTitle': 'Réinitialiser la vue',
|
||
'markdownRenderer.mermaid.toast.downloadFailed': 'Échec du téléchargement du diagramme',
|
||
'common.date.today': 'Aujourd’hui',
|
||
'common.date.yesterday': 'Hier',
|
||
'common.date.yesterdayWithTime': 'Hier {time}',
|
||
'common.relative.justNow': 'À l’instant',
|
||
'common.relative.minutesAgoShort': 'il y a {count} min',
|
||
'common.relative.hoursAgoShort': 'il y a {count} h',
|
||
'common.relative.daysAgoShort': 'il y a {count} j',
|
||
'common.relative.weeksAgoShort': 'il y a {count} sem',
|
||
'common.relative.yearsAgoShort': 'il y a {count} a',
|
||
'common.relative.daysAgoCompact': '{count} j',
|
||
'common.relative.weeksAgoCompact': '{count} sem',
|
||
'common.relative.yearsAgoCompact': '{count} a',
|
||
'contextFileOpen.failure.tooLarge': 'Le fichier est trop volumineux pour être ouvert (> {count} lignes)',
|
||
'contextFileOpen.failure.missing': 'Fichier introuvable',
|
||
'contextFileOpen.failure.unreadable': 'Impossible d’ouvrir le fichier',
|
||
'quota.window.5h': '5 heures',
|
||
'quota.window.7d': 'Limite sur 7 jours',
|
||
'quota.window.7dSonnet': 'Limite Sonnet sur 7 jours',
|
||
'quota.window.7dOpus': 'Limite Opus sur 7 jours',
|
||
'quota.window.weekly': 'Limite hebdomadaire',
|
||
'quota.window.daily': 'Quotidien',
|
||
'quota.window.monthly': 'Limite mensuelle',
|
||
'quota.window.credits': 'Crédits',
|
||
'quota.window.creditsBalance': 'Solde de crédits',
|
||
'quota.window.billingCycle': 'Cycle de facturation',
|
||
'quota.window.auto': 'Auto',
|
||
'quota.window.api': 'API',
|
||
'quota.window.planLimit': 'Limite du forfait',
|
||
'quota.window.onDemand': 'À la demande',
|
||
'quota.window.session': 'Session',
|
||
'quota.window.premium': 'Interactions premium',
|
||
'quota.window.chat': 'Requêtes de chat',
|
||
'quota.window.completions': 'Complétions',
|
||
'quota.window.premiumInteractions': 'Interactions premium',
|
||
'layout.mainTab.diagram': 'Diagramme',
|
||
'mobile.nav.aria': 'Navigation mobile',
|
||
'mobile.connect.welcome.title': 'Se connecter à OpenChamber',
|
||
'mobile.connect.welcome.description': 'Ajoutez une URL de serveur ou scannez un code QR d\'appairage pour commencer à utiliser l\'app mobile.',
|
||
'mobile.connect.url.label': 'URL du serveur',
|
||
'mobile.connect.url.placeholder': 'http://192.168.1.74:2606',
|
||
'mobile.connect.token.label': 'Jeton client',
|
||
'mobile.connect.token.placeholder': 'Collez le jeton d\'accès',
|
||
'mobile.connect.token.hint': 'Nécessaire uniquement si votre serveur exige un jeton au lieu d\'un mot de passe.',
|
||
'mobile.connect.password.label': 'Mot de passe',
|
||
'mobile.connect.password.placeholder': 'Mot de passe OpenChamber',
|
||
'mobile.connect.connectButton': 'Se connecter',
|
||
'mobile.connect.unlockButton': 'Déverrouiller et se connecter',
|
||
'mobile.connect.cancelPassword': 'Utiliser un autre serveur',
|
||
'mobile.connect.connecting': 'Connexion...',
|
||
'mobile.connect.notice.unreachable': 'Impossible de joindre {label}. Vérifiez que le serveur est en marche.',
|
||
'mobile.connect.notice.authExpired': 'L\'accès à {label} a expiré ou a été révoqué. Reconnectez-vous.',
|
||
'mobile.connect.recovery.description': 'Connexion au serveur enregistré impossible. Vérifiez qu\'il est en marche ou choisissez une autre instance.',
|
||
'mobile.connect.scanQr': 'Scanner le code QR',
|
||
'mobile.connect.welcome.scanHint': 'Sur votre ordinateur, ouvrez « Ajouter un appareil » pour afficher un code QR, puis scannez-le ici.',
|
||
'mobile.connect.advanced': 'Avancé',
|
||
'mobile.connect.manual.toggle': 'Connexion par adresse',
|
||
'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.relay.badge': 'via OpenChamber Relay',
|
||
'mobile.connect.error.urlRequired': 'Saisissez une URL de serveur.',
|
||
'mobile.connect.splash.connectingTo': 'Connexion à l’appareil :',
|
||
'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.addManual': 'Ajouter par adresse',
|
||
'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.status.connectedDirect': 'Connecté · Réseau local',
|
||
'mobile.instances.status.connectedRelay': 'Connecté · Relais privé',
|
||
'mobile.instances.saveEdit': 'Enregistrer les modifications',
|
||
'mobile.nav.changes': 'Modifications',
|
||
'mobile.nav.settings': 'Paramètres',
|
||
'mobile.surface.closeAria': 'Fermer',
|
||
'mobile.header.openWorkspaceAria': 'Ouvrir le panneau de travail',
|
||
'mobile.header.openMetadataAria': 'Ouvrir les métadonnées de session',
|
||
'mobile.header.metadata.context': 'Contexte',
|
||
'mobile.header.metadata.usage': 'Utilisation',
|
||
'mobile.menu.titleAria': 'Outils de l’espace de travail',
|
||
'mobile.menu.files': 'Fichiers',
|
||
'mobile.menu.changes': 'Modifications',
|
||
'mobile.menu.terminal': 'Terminal',
|
||
'mobile.menu.mcp': 'MCP',
|
||
'mobile.menu.instances': 'Instances',
|
||
'mobile.menu.update': 'Mettre à jour',
|
||
'mobile.menu.settings': 'Paramètres',
|
||
'mobile.sessions.newChatCta': 'Nouveau chat dans {project}',
|
||
'mobile.sessions.dateGroup.today': 'Aujourd’hui',
|
||
'mobile.sessions.dateGroup.yesterday': 'Hier',
|
||
'mobile.sessions.dateGroup.thisWeek': 'Plus tôt cette semaine',
|
||
'mobile.sessions.dateGroup.older': 'Plus ancien',
|
||
'mobile.sessions.section.worktrees': 'Worktrees',
|
||
'mobile.sessions.section.otherProjects': 'Changer de projet',
|
||
'mobile.sessions.section.projects': 'Projets',
|
||
'mobile.sessions.empty.noProjectsTitle': 'Aucun projet pour le moment',
|
||
'mobile.sessions.empty.noProjectsDescription': 'Ajoutez un projet pour commencer à discuter avec votre code.',
|
||
'mobile.sessions.empty.noSessionsTitle': 'Aucune session pour le moment',
|
||
'mobile.sessions.empty.noSessionsDescription': 'Démarrez votre premier chat pour le voir ici.',
|
||
'mobile.sessions.empty.searchTitle': 'Aucun résultat',
|
||
'mobile.sessions.empty.searchDescription': 'Essayez un autre terme de recherche.',
|
||
'mobile.sessions.showArchived': 'Afficher les archivées ({count})',
|
||
'mobile.sessions.hideArchived': 'Masquer les archivées',
|
||
'mobile.sessions.activeWorktreeAria': 'Worktree actif',
|
||
'mobile.sessions.activeProjectAria': 'Projet actif',
|
||
'mobile.sessions.startNewChat': 'Démarrer un nouveau chat',
|
||
'mobile.sessions.newChat': 'Nouveau chat',
|
||
'mobile.sessions.editOrder': 'Réordonner les projets',
|
||
'mobile.sessions.doneEditing': 'Terminé',
|
||
'mobile.sessions.editOrderHint': 'Faites glisser la poignée pour réorganiser les projets. Touchez un projet pour afficher ses worktrees et les faire glisser aussi. 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.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.sessions.renameSessionAria': 'Renommer {title}',
|
||
'mobile.sessions.renameError': 'Échec du renommage de la session',
|
||
'mobile.sessions.deleteSessionAria': 'Supprimer {title}',
|
||
'mobile.sessions.confirmDeleteSessionAria': 'Confirmer la suppression 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.editAria': 'Modifier le fichier',
|
||
'mobile.files.doneEditingAria': 'Terminer la modification',
|
||
'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.craftGoal.label': 'Créer un Goal',
|
||
'chat.draftPresets.scheduleTask.label': 'Planifier une tâche',
|
||
'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.craftGoalDescription': 'Transformer une idée ou une tâche en Goal clair et vérifiable.',
|
||
'chat.commandAutocomplete.command.scheduleTaskDescription': 'Définir une tâche planifiée via un dialogue guidé.',
|
||
'chat.chatInput.toast.craftGoalFailed': 'Impossible de démarrer la création du Goal',
|
||
'chat.chatInput.toast.scheduleTaskFailed': 'Impossible de démarrer la configuration de la tâche planifiée',
|
||
'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.showNavigableJson': 'Afficher le JSON navigable',
|
||
'chat.toolPart.openFileAtFirstChange': 'Ouvrir le fichier à la première modification',
|
||
'chat.toolPart.openFileDiff': 'Ouvrir les différences du fichier',
|
||
'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;
|