@dyyz1993/codenomad 0.15.9 → 0.15.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/manager.js +2 -1
- package/dist/auth/session-manager.js +45 -1
- package/dist/bin.js +0 -0
- package/dist/index.js +1 -0
- package/dist/workspaces/manager.js +51 -0
- package/package.json +1 -1
- package/public/assets/{ChangesTab-DQO3bwTw.js → ChangesTab-DYNcRoeh.js} +2 -2
- package/public/assets/{DiffToolbar-BiS5nvB_.js → DiffToolbar-DY12K09c.js} +1 -1
- package/public/assets/{FilesTab-YO5dUGk6.js → FilesTab-BOw6wVxG.js} +2 -2
- package/public/assets/{GitChangesTab-C-2jwtOS.js → GitChangesTab-DmQJ6Vak.js} +2 -2
- package/public/assets/{SplitFilePanel-CA0D92l1.js → SplitFilePanel-Bill25lM.js} +1 -1
- package/public/assets/{StatusTab-TyebZVp2.js → StatusTab-CJnEHguL.js} +1 -1
- package/public/assets/{align-justify-COuYjEB9.js → align-justify-10t2qfxF.js} +1 -1
- package/public/assets/{bundle-full-DPp09th5.js → bundle-full-DS3qEgVu.js} +1 -1
- package/public/assets/{diff-viewer-Bu4zb5kE.js → diff-viewer-BeR1VVw4.js} +1 -1
- package/public/assets/{index-BDgGoLTZ.js → index-5RAw7gXh.js} +1 -1
- package/public/assets/{index-4Era_AEC.js → index-BhrKP65n.js} +1 -1
- package/public/assets/{index-nVoKL-cq.js → index-Bvvj_24o.js} +1 -1
- package/public/assets/{index-PHCXc0OA.js → index-CA1854v0.js} +1 -1
- package/public/assets/{index-BCGPLzO4.js → index-DD4SyatU.js} +2 -2
- package/public/assets/{index-CbKJK9y3.js → index-DIVuya9y.js} +1 -1
- package/public/assets/{index-D7V1TD3s.js → index-DW5zrp3y.js} +1 -1
- package/public/assets/{index-CpWDdROQ.js → index-EwiZC5ky.js} +1 -1
- package/public/assets/{index-CtBkkWFK.js → index-sxXJQeVv.js} +1 -1
- package/public/assets/{loading-B-F_vBbv.js → loading-Bxde4rtI.js} +1 -1
- package/public/assets/{main-BbYl9PoY.js → main-CdZwzERp.js} +30 -30
- package/public/assets/{markdown-0Y5sUdRs.js → markdown-Bl7BpCH9.js} +3 -3
- package/public/assets/{monaco-viewer-YY9yfE-p.js → monaco-viewer-CNzvK57I.js} +1 -1
- package/public/assets/{tool-call-CE2RkP4E.js → tool-call-BGNHr1DQ.js} +3 -3
- package/public/assets/{unified-picker-_n2WoeTG.js → unified-picker-DimB1aiI.js} +1 -1
- package/public/assets/{wrap-text-DVQ19pj7.js → wrap-text-CaCUirML.js} +1 -1
- package/public/index.html +4 -4
- package/public/loading.html +4 -4
- package/public/sw.js +1 -1
- package/public/ui-version.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{m as e}from"./index-BCGPLzO4.js";import"./git-diff-vendor-CSgooKT_.js";import"./fast-diff-vendor-DgdwVvTQ.js";import"./highlight-vendor-8FKMu9os.js";import"./monaco-viewer-YY9yfE-p.js";const s={"advancedSettings.title":"Paramètres avancés","advancedSettings.environmentVariables.title":"Variables d'environnement","advancedSettings.environmentVariables.subtitle":"Appliquées à chaque démarrage d'une nouvelle instance OpenCode","advancedSettings.actions.close":"Fermer"},t={"app.launchError.title":"Impossible de lancer OpenCode","app.launchError.description":"Nous n'avons pas pu démarrer le binaire OpenCode sélectionné. Consultez la sortie d'erreur ci-dessous ou choisissez un autre binaire dans les paramètres OpenCode.","app.launchError.binaryPathLabel":"Chemin du binaire","app.launchError.errorOutputLabel":"Sortie d'erreur","app.launchError.openAdvancedSettings":"Ouvrir les paramètres OpenCode","app.launchError.close":"Fermer","app.launchError.closeTitle":"Fermer (Esc)","app.launchError.fallbackMessage":"Échec du lancement de l'espace de travail","app.stopInstance.confirmMessage":"Arrêter l'instance OpenCode ? Cela arrêtera le serveur.","app.stopInstance.title":"Arrêter l'instance","app.stopInstance.confirmLabel":"Arrêter","app.stopInstance.cancelLabel":"Laisser tourner","emptyState.logoAlt":"Logo CodeNomad","emptyState.brandTitle":"CodeNomad","emptyState.tagline":"Sélectionnez un dossier pour commencer à coder avec l'IA","emptyState.actions.selectFolder":"Sélectionner un dossier","emptyState.actions.selecting":"Sélection...","emptyState.keyboardShortcut":"Raccourci clavier : {shortcut}","emptyState.examples":"Exemples : {example}","emptyState.multipleInstances":"Vous pouvez avoir plusieurs instances du même dossier","releases.upgradeRequired.title":"Mise à jour requise","releases.upgradeRequired.message.withVersion":"Mettez à jour vers CodeNomad {version} pour utiliser la dernière UI.","releases.upgradeRequired.message.noVersion":"Mettez à jour CodeNomad pour utiliser la dernière UI.","releases.upgradeRequired.action.getUpdate":"Obtenir la mise à jour","releases.uiUpdated.title":"UI mise à jour","releases.uiUpdated.message":"L'UI est maintenant mise à jour vers {version}.","releases.devUpdateAvailable.title":"Build dev disponible","releases.devUpdateAvailable.message":"Un nouveau build dev est disponible : {version}.","releases.devUpdateAvailable.action":"Voir la release"},i={"commandPalette.title":"Palette de commandes","commandPalette.description":"Rechercher et exécuter des commandes","commandPalette.searchPlaceholder":"Tapez une commande ou recherchez...","commandPalette.empty":'Aucune commande trouvée pour "{query}"',"commandPalette.category.customCommands":"Commandes personnalisées","commandPalette.category.instance":"Instance","commandPalette.category.session":"Session","commandPalette.category.agentModel":"Agent et modèle","commandPalette.category.inputFocus":"Saisie et focus","commandPalette.category.system":"Système","commandPalette.category.other":"Autre","commands.newInstance.label":"Nouvelle instance","commands.newInstance.description":"Ouvrir le sélecteur de dossiers pour créer une nouvelle instance","commands.newInstance.keywords":"dossier, projet, espace de travail","commands.closeInstance.label":"Fermer l'onglet","commands.closeInstance.description":"Fermer l'onglet de premier niveau actuel","commands.closeInstance.keywords":"arrêter, quitter, fermer, onglet","commands.nextInstance.label":"Onglet suivant","commands.nextInstance.description":"Passer à l'onglet de premier niveau suivant","commands.nextInstance.keywords":"changer, naviguer, suivant, onglet","commands.previousInstance.label":"Onglet précédent","commands.previousInstance.description":"Passer à l'onglet de premier niveau précédent","commands.previousInstance.keywords":"changer, naviguer, précédent, onglet","commands.newSession.label":"Nouvelle session","commands.newSession.description":"Créer une nouvelle session parente","commands.newSession.keywords":"créer, démarrer","commands.closeSession.label":"Fermer la session","commands.closeSession.description":"Fermer la session parente actuelle","commands.closeSession.keywords":"fermer, arrêter","commands.scrubSessions.label":"Nettoyer les sessions","commands.scrubSessions.description":"Supprimer les sessions vides, les sessions de sous-agent ayant terminé leur tâche principale, ainsi que les sessions forkées inutiles.","commands.scrubSessions.keywords":"nettoyage, vide, sessions, supprimer, effacer","commands.instanceInfo.label":"Infos de l'instance","commands.instanceInfo.description":"Ouvrir la vue d'ensemble de l'instance pour les journaux et le statut","commands.instanceInfo.keywords":"infos, journaux, console, sortie, logs","commands.nextSession.label":"Session suivante","commands.nextSession.description":"Passer à l'onglet de session suivant","commands.nextSession.keywords":"changer, naviguer, suivant","commands.previousSession.label":"Session précédente","commands.previousSession.description":"Passer à l'onglet de session précédent","commands.previousSession.keywords":"changer, naviguer, précédent","commands.compactSession.label":"Compacter la session","commands.compactSession.description":"Résumer et compacter la session actuelle","commands.compactSession.keywords":"résumer, compresser, compact","commands.compactSession.errorFallback":"Impossible de compacter la session","commands.compactSession.alert.title":"Échec du compactage","commands.compactSession.alert.message":"Échec du compactage : {message}","commands.undoLastMessage.label":"Annuler le dernier message","commands.undoLastMessage.description":"Revenir sur le dernier message","commands.undoLastMessage.keywords":"revenir, annuler","commands.undoLastMessage.none.title":"Aucune action à annuler","commands.undoLastMessage.none.message":"Rien à annuler","commands.undoLastMessage.failed.title":"Échec de l'annulation","commands.undoLastMessage.failed.message":"Impossible de revenir au message","commands.openModelSelector.label":"Ouvrir le sélecteur de modèle","commands.openModelSelector.description":"Choisir un autre modèle","commands.openModelSelector.keywords":"modèle, llm, ia, ai","commands.selectModelVariant.label":"Sélectionner la variante du modèle","commands.selectModelVariant.description":"Choisir un effort de réflexion pour le modèle actuel","commands.selectModelVariant.keywords":"variante, réflexion, raisonnement, effort","commands.openAgentSelector.label":"Ouvrir le sélecteur d'agent","commands.openAgentSelector.description":"Choisir un autre agent","commands.openAgentSelector.keywords":"agent, mode","commands.clearInput.label":"Effacer la saisie","commands.clearInput.description":"Effacer la zone de texte du prompt","commands.clearInput.keywords":"effacer, réinitialiser, prompt","commands.promptSubmitShortcut.label.default":"Entree: Nouvelle ligne, Cmd/Ctrl+Entree: Envoyer le prompt","commands.promptSubmitShortcut.label.swapped":"Entree: Envoyer le prompt, Cmd/Ctrl+Entree: Nouvelle ligne","commands.promptSubmitShortcut.description":"Echanger le comportement de Entree et Cmd/Ctrl+Entree dans la saisie du prompt","commands.promptSubmitShortcut.keywords":"entree, envoyer, nouvelle ligne, raccourci, cmd, ctrl, prompt","commands.thinkingBlocks.label.show":"Afficher la réflexion","commands.thinkingBlocks.label.hide":"Masquer la réflexion","commands.thinkingBlocks.description":"Afficher ou masquer les sections de réflexion de l'IA","commands.thinkingBlocks.keywords":"réflexion, raisonnement, basculer, afficher, masquer","commands.timelineToolCalls.label.show":"Afficher les appels d'outil dans la timeline","commands.timelineToolCalls.label.hide":"Masquer les appels d'outil dans la timeline","commands.timelineToolCalls.description":"Afficher/masquer les entrées d'appel d'outil dans la timeline des messages","commands.timelineToolCalls.keywords":"timeline, outil, basculer","commands.keyboardShortcutHints.label.show":"Afficher les raccourcis clavier","commands.keyboardShortcutHints.label.hide":"Masquer les raccourcis clavier","commands.keyboardShortcutHints.description":"Afficher ou masquer les indices de raccourcis clavier dans l'interface","commands.keyboardShortcutHints.description.disabledWeb":"Désactivé en WebUI (les raccourcis sont toujours masqués)","commands.keyboardShortcutHints.keywords":"raccourci, raccourcis, clavier, keybind, indices","commands.common.expanded":"Développé","commands.common.collapsed":"Réduit","commands.common.visible":"Visible","commands.common.hidden":"Masqué","commands.common.enabled":"Activé","commands.common.disabled":"Désactivé","commands.thinkingBlocksDefault.label":"Vue de la réflexion: {state}","commands.thinkingBlocksDefault.description":"Réduire / Développer les sections de réflexion de l'IA lorsqu'elles sont affichées","commands.thinkingBlocksDefault.keywords":"réflexion, raisonnement, développer, réduire, défaut","commands.diffViewSplit.label":"Utiliser la vue diff côte à côte","commands.diffViewSplit.description":"Afficher les diffs d'appels d'outil côte à côte","commands.diffViewSplit.keywords":"diff, côte à côte, vue","commands.diffViewUnified.label":"Utiliser la vue diff unifiée","commands.diffViewUnified.description":"Afficher les diffs d'appels d'outil en ligne","commands.diffViewUnified.keywords":"diff, unifiée, vue","commands.toolOutputsDefault.label":"Sorties d'outil par défaut · {state}","commands.toolOutputsDefault.description":"Choisir l'ouverture par défaut des sorties d'outil","commands.toolOutputsDefault.keywords":"outil, sortie, développer, réduire","commands.diagnosticsDefault.label":"Diagnostics par défaut · {state}","commands.diagnosticsDefault.description":"Choisir l'ouverture par défaut de la sortie des diagnostics","commands.diagnosticsDefault.keywords":"diagnostics, développer, réduire","commands.toolInputsVisibility.label":"Visibilité des entrées d'outil · {state}","commands.toolInputsVisibility.description":"Définir la visibilité par défaut des arguments d'entrée des appels d'outil","commands.toolInputsVisibility.keywords":"outil, entrées, arguments, visibilité, masquer, afficher, développer, réduire","commands.tokenUsageDisplay.label":"Affichage de l'usage des tokens · {state}","commands.tokenUsageDisplay.description":"Afficher ou masquer les stats de tokens et de coût pour les messages de l'assistant","commands.tokenUsageDisplay.keywords":"token, usage, coût, stats","commands.autoCleanupBlankSessions.label":"Nettoyage auto des sessions vides · {state}","commands.autoCleanupBlankSessions.description":"Nettoyer automatiquement les sessions vides lors de la création de nouvelles","commands.autoCleanupBlankSessions.keywords":"auto, nettoyage, vide, sessions, basculer","commands.showHelp.label":"Afficher l'aide","commands.showHelp.description":"Afficher les raccourcis clavier et l'aide","commands.showHelp.keywords":"raccourcis, aide","commands.custom.argumentsPrompt.message":"Arguments pour /{name}","commands.custom.argumentsPrompt.title":"Commande personnalisée","commands.custom.argumentsPrompt.inputLabel":"Arguments","commands.custom.argumentsPrompt.inputPlaceholder":"ex. foo bar","commands.custom.argumentsPrompt.confirmLabel":"Exécuter","commands.custom.argumentsPrompt.cancelLabel":"Annuler","commands.custom.argumentsPrompt.openFailed.message":"Impossible d'ouvrir l'invite d'arguments.","commands.custom.argumentsPrompt.openFailed.title":"Arguments de commande","commands.custom.entries.descriptionFallback":"Commande personnalisée","commands.custom.sessionRequired.message":"Sélectionnez une session avant d'exécuter une commande personnalisée.","commands.custom.sessionRequired.title":"Session requise","commands.custom.runFailed.message":"Impossible d'exécuter la commande personnalisée. Consultez la console pour les détails.","commands.custom.runFailed.title":"Échec de la commande","unifiedPicker.loading.searching":"Recherche...","unifiedPicker.loading.loadingWorkspace":"Chargement de l'espace de travail...","unifiedPicker.title.command":"Sélectionner une commande","unifiedPicker.title.mention":"Sélectionner un agent ou un fichier","unifiedPicker.empty":"Aucun résultat","unifiedPicker.sections.commands":"COMMANDES","unifiedPicker.sections.agents":"AGENTS","unifiedPicker.sections.files":"FICHIERS","unifiedPicker.badge.subagent":"sous-agent","unifiedPicker.footer.navigate":"naviguer","unifiedPicker.footer.select":"sélectionner","unifiedPicker.footer.close":"fermer"},o={"alertDialog.fallbackTitle.info":"Attention","alertDialog.fallbackTitle.warning":"Veuillez vérifier","alertDialog.fallbackTitle.error":"Un problème est survenu","alertDialog.actions.confirm":"Confirmer","alertDialog.actions.run":"Exécuter","alertDialog.actions.ok":"OK","alertDialog.actions.cancel":"Annuler","alertDialog.prompt.inputLabel":"Saisie","backgroundProcessOutputDialog.title":"Sortie en arrière-plan","backgroundProcessOutputDialog.actions.close":"Fermer","backgroundProcessOutputDialog.loading":"Chargement de la sortie...","backgroundProcessOutputDialog.truncatedNotice":"Sortie tronquée pour l'affichage.","backgroundProcessOutputDialog.loadErrorFallback":"Impossible de charger la sortie."},n={"directoryBrowser.defaultDescription":"Parcourez les dossiers sous la racine d'espace de travail configurée.","directoryBrowser.close":"Fermer","directoryBrowser.currentFolder":"Sélectionner un dossier ou saisir un chemin","directoryBrowser.currentFolder.inputAriaLabel":"Chemin du dossier","directoryBrowser.currentFolder.inputPlaceholder":"Saisissez ou collez un chemin de dossier","directoryBrowser.openCurrent":"Ouvrir","directoryBrowser.selectCurrent":"Sélectionner le dossier actuel","directoryBrowser.newFolder":"Nouveau dossier","directoryBrowser.creating":"Création…","directoryBrowser.loadingFolders":"Chargement des dossiers…","directoryBrowser.noFolders":"Aucun dossier disponible.","directoryBrowser.upOneLevel":"Remonter d'un niveau","directoryBrowser.select":"Sélectionner","directoryBrowser.load.errorFallback":"Impossible de charger le système de fichiers","directoryBrowser.createFolder.promptMessage":"Créer un nouveau dossier dans le répertoire courant.","directoryBrowser.createFolder.title":"Nouveau dossier","directoryBrowser.createFolder.inputLabel":"Nom du dossier","directoryBrowser.createFolder.inputPlaceholder":"ex. mon-nouveau-projet","directoryBrowser.createFolder.confirmLabel":"Créer","directoryBrowser.createFolder.cancelLabel":"Annuler","directoryBrowser.createFolder.invalidNameMessage":"Veuillez saisir un seul nom de dossier.","directoryBrowser.createFolder.invalidNameDetail":"Les noms de dossier ne peuvent pas contenir de barres obliques, '..' ou '~'.","directoryBrowser.createFolder.errorFallback":"Impossible de créer le dossier","filesystemBrowser.descriptionFallback":"Recherchez un chemin sous la racine d'espace de travail configurée.","filesystemBrowser.rootLabel":"Racine : {root}","filesystemBrowser.actions.close":"Fermer","filesystemBrowser.actions.retry":"Réessayer","filesystemBrowser.actions.select":"Sélectionner","filesystemBrowser.filterLabel":"Filtrer","filesystemBrowser.search.placeholder.directories":"Rechercher des dossiers","filesystemBrowser.search.placeholder.files":"Rechercher des fichiers","filesystemBrowser.currentFolder.label":"Dossier actuel","filesystemBrowser.currentFolder.selectCurrent":"Sélectionner le dossier actuel","filesystemBrowser.loading.filesystem":"système de fichiers","filesystemBrowser.loading.workspaceRoot":"racine de l'espace de travail","filesystemBrowser.loading.loadingWithPath":"Chargement de {path}…","filesystemBrowser.empty.noEntries":"Aucune entrée trouvée.","filesystemBrowser.navigation.upOneLevel":"Remonter d'un niveau","filesystemBrowser.hints.navigate":"Naviguer","filesystemBrowser.hints.select":"Sélectionner","filesystemBrowser.hints.close":"Fermer","filesystemBrowser.errors.loadFilesystemFallback":"Impossible de charger le système de fichiers","filesystemBrowser.errors.openDirectoryFallback":"Impossible d'ouvrir le répertoire"},r={"folderSelection.language.ariaLabel":"Langue","folderSelection.logoAlt":"Logo CodeNomad","folderSelection.tagline":"Sélectionnez un dossier pour commencer à coder avec l'IA","folderSelection.links.github":"GitHub de CodeNomad","folderSelection.links.githubStars":"Étoiles GitHub de CodeNomad","folderSelection.links.discord":"Discord de CodeNomad","folderSelection.empty.title":"Aucun dossier récent","folderSelection.empty.description":"Parcourez un dossier pour commencer","folderSelection.recent.title":"Dossiers récents","folderSelection.recent.subtitle.one":"{count} dossier disponible","folderSelection.recent.subtitle.other":"{count} dossiers disponibles","folderSelection.recent.remove":"Retirer des récents","folderSelection.browse.title":"Parcourir un dossier","folderSelection.browse.subtitle":"Sélectionnez n'importe quel dossier sur votre ordinateur","folderSelection.browse.button":"Parcourir les dossiers","folderSelection.browse.buttonOpening":"Ouverture...","folderSelection.actions.title":"Ouvrir un dossier ou se connecter à un serveur","folderSelection.actions.subtitle":"Ouvrez un dossier local ou connectez-vous à un serveur CodeNomad","folderSelection.actions.connectButton":"Se connecter au serveur CodeNomad","folderSelection.advancedSettings":"Paramètres avancés","folderSelection.opencode":"OpenCode","folderSelection.hints.navigate":"Naviguer","folderSelection.hints.select":"Sélectionner","folderSelection.hints.remove":"Retirer","folderSelection.hints.browse":"Parcourir","folderSelection.loading.title":"Démarrage de l'instance...","folderSelection.loading.subtitle":"Patientez pendant que nous préparons votre espace de travail.","folderSelection.drop.title":"Déposez un dossier pour l'ouvrir","folderSelection.drop.subtitle":"Démarrez une nouvelle instance dans le dossier déposé.","folderSelection.drop.invalidTitle":"Impossible d'ouvrir l'élément déposé","folderSelection.drop.invalidMessage":"Déposez un dossier pour démarrer une nouvelle instance.","folderSelection.dialog.title":"Sélectionner l'espace de travail","folderSelection.dialog.description":"Sélectionnez un espace de travail pour commencer à coder.","folderSelection.tabs.local":"Dossiers locaux","folderSelection.tabs.servers":"Serveurs","folderSelection.servers.title":"Serveurs enregistrés","folderSelection.servers.subtitle":"Ouvrez un serveur CodeNomad distant enregistré dans une nouvelle fenêtre","folderSelection.servers.count":"{count} serveurs","folderSelection.servers.empty.title":"Aucun serveur enregistré","folderSelection.servers.empty.description":"Ajoutez un serveur distant pour vous reconnecter rapidement depuis cet appareil","folderSelection.servers.connectTitle":"Se connecter à un serveur","folderSelection.servers.connectSubtitle":"Enregistrez un serveur CodeNomad distant et ouvrez-le dans une nouvelle fenêtre","folderSelection.servers.connectButton":"Se connecter à un serveur","folderSelection.servers.remove":"Supprimer le serveur enregistré","folderSelection.servers.skipTls":"TLS auto-signé","folderSelection.servers.errorTitle":"Échec de la connexion distante","folderSelection.servers.dialog.title":"Se connecter à un serveur","folderSelection.servers.dialog.description":"Ajoutez un serveur CodeNomad distant et ouvrez-le immédiatement si vous le souhaitez.","folderSelection.servers.dialog.name":"Nom du serveur","folderSelection.servers.dialog.namePlaceholder":"Serveur de production","folderSelection.servers.dialog.url":"URL du serveur","folderSelection.servers.dialog.urlPlaceholder":"https://server.example.com","folderSelection.servers.dialog.skipTls":"Ignorer la vérification TLS pour les certificats auto-signés.","folderSelection.servers.dialog.cancel":"Annuler","folderSelection.servers.dialog.save":"Enregistrer","folderSelection.servers.dialog.connect":"Se connecter","folderSelection.servers.dialog.connecting":"Connexion...","folderSelection.servers.dialog.errorRequired":"Le nom du serveur et l'URL sont requis.","folderSelection.servers.dialog.errorConnect":"Impossible de se connecter au serveur distant.","folderSelection.servers.certificateInstall.title":"Installer le certificat local","folderSelection.servers.certificateInstall.confirmMessage":"CodeNomad doit installer un certificat local pour ouvrir des fenetres distantes HTTPS auto-signees. Ce certificat est utilise uniquement pour le trafic du proxy local de bureau sur votre machine. Votre systeme d'exploitation peut afficher une seconde invite de certificat apres cela.","folderSelection.servers.certificateInstall.confirmLabel":"Continuer","folderSelection.servers.certificateInstall.cancelLabel":"Annuler","folderSelection.servers.certificateInstall.cancelled":"CodeNomad a besoin que le certificat local soit approuve avant de pouvoir ouvrir des fenetres distantes HTTPS auto-signees.","folderSelection.sidecars.button":"Open SideCar"},a={"instanceTabs.new.title":"Nouvelle instance (Cmd/Ctrl+N)","instanceTabs.new.ariaLabel":"Nouvelle instance","instanceTabs.remote.title":"Connexion à distance","instanceTabs.remote.ariaLabel":"Connexion à distance","instanceInfo.title":"Informations de l'instance","instanceInfo.labels.folder":"Dossier","instanceInfo.labels.project":"Projet","instanceInfo.labels.versionControl":"Contrôle de version","instanceInfo.labels.opencodeVersion":"Version d'OpenCode","instanceInfo.labels.binaryPath":"Chemin du binaire","instanceInfo.labels.environmentVariables":"Variables d'environnement ({count})","instanceInfo.loading":"Chargement...","instanceInfo.server.title":"Serveur","instanceInfo.server.port":"Port :","instanceInfo.server.pid":"PID :","instanceInfo.server.status":"Statut :","instanceTab.status.permission":"En attente d'autorisation","instanceTab.status.compacting":"Compactage","instanceTab.status.working":"En cours","instanceTab.status.idle":"Inactif","instanceTab.status.ariaLabel":"Statut de l'instance : {status}","instanceTab.actions.close.ariaLabel":"Fermer l'instance","instanceShell.leftPanel.sessionsTitle":"Sessions","instanceShell.leftPanel.instanceInfo":"Infos de l'instance","instanceShell.leftDrawer.pin":"Épingler le tiroir gauche","instanceShell.leftDrawer.unpin":"Désépingler le tiroir gauche","instanceShell.leftDrawer.toggle.pinned":"Tiroir gauche épinglé","instanceShell.leftDrawer.toggle.open":"Ouvrir le tiroir gauche","instanceShell.leftDrawer.toggle.close":"Fermer le tiroir gauche","instanceShell.rightDrawer.pin":"Épingler le tiroir droit","instanceShell.rightDrawer.unpin":"Désépingler le tiroir droit","instanceShell.rightDrawer.toggle.pinned":"Tiroir droit épinglé","instanceShell.rightDrawer.toggle.open":"Ouvrir le tiroir droit","instanceShell.rightDrawer.toggle.close":"Fermer le tiroir droit","instanceShell.fullscreen.enter":"Plein écran","instanceShell.fullscreen.exit":"Quitter le plein écran","instanceShell.metrics.usedLabel":"Utilisé","instanceShell.metrics.availableLabel":"Dispo","instanceShell.commandPalette.openAriaLabel":"Ouvrir la palette de commandes","instanceShell.commandPalette.button":"Palette de commandes","instanceShell.chatSearch.openAriaLabel":"Rechercher dans l'historique du chat","instanceShell.connection.ariaLabel":"Connexion {status}","instanceShell.connection.connected":"Connecté","instanceShell.connection.connecting":"Connexion...","instanceShell.connection.disconnected":"Déconnecté","instanceShell.connection.unknown":"Inconnu","instanceWelcome.shortcuts.newSession":"Nouvelle session","instanceWelcome.empty.title":"Aucune session précédente","instanceWelcome.empty.description":"Créez une nouvelle session ci-dessous pour commencer","instanceWelcome.loading.title":"Chargement des sessions","instanceWelcome.loading.description":"Récupération de vos sessions précédentes...","instanceWelcome.resume.title":"Reprendre une session","instanceWelcome.resume.subtitle.one":"{count} session disponible","instanceWelcome.resume.subtitle.other":"{count} sessions disponibles","instanceWelcome.session.untitled":"Session sans titre","instanceWelcome.new.title":"Démarrer une nouvelle session","instanceWelcome.new.subtitle":"Nous réutiliserons automatiquement votre dernier agent/modèle","instanceWelcome.new.createButton":"Créer la session","instanceWelcome.overlay.close":"Fermer","instanceWelcome.actions.viewInstanceInfo":"Voir les infos de l'instance","instanceWelcome.actions.renameTitle":"Renommer la session","instanceWelcome.actions.deleteTitle":"Supprimer la session","instanceWelcome.hints.navigate":"Naviguer","instanceWelcome.hints.jump":"Sauter","instanceWelcome.hints.firstLast":"Prem./Dern.","instanceWelcome.hints.resume":"Reprendre","instanceWelcome.hints.delete":"Supprimer","instanceWelcome.toasts.renameError":"Impossible de renommer la session","instanceDisconnected.title":"Instance déconnectée","instanceDisconnected.folderFallback":"cet espace de travail","instanceDisconnected.reasonFallback":"Le serveur ne répond plus","instanceDisconnected.description":"{folder} n'est plus accessible. Fermez l'onglet pour continuer à travailler.","instanceDisconnected.details.title":"Détails","instanceDisconnected.details.folderLabel":"Dossier :","instanceDisconnected.actions.closeInstance":"Fermer l'instance","instanceShell.empty.title":"Aucune session sélectionnée","instanceShell.empty.description":"Sélectionnez une session pour voir les messages","instanceShell.rightPanel.title":"Panneau d'état","instanceShell.rightPanel.tabs.changes":"Modifications","instanceShell.rightPanel.tabs.gitChanges":"Changements Git","instanceShell.rightPanel.tabs.files":"Fichiers","instanceShell.rightPanel.tabs.status":"Statut","instanceShell.rightPanel.tabs.ariaLabel":"Onglets du panneau droit","instanceShell.rightPanel.actions.refresh":"Actualiser","instanceShell.rightPanel.actions.save":"Enregistrer (Ctrl+S)","instanceShell.rightPanel.actions.saveConfirm.message":'Voulez-vous enregistrer les modifications de "{path}" avant de changer ?',"instanceShell.rightPanel.actions.saveConfirm.confirmLabel":"Enregistrer","instanceShell.rightPanel.actions.saveConfirm.cancelLabel":"Annuler les modifications","instanceShell.rightPanel.actions.conflict.message":"Le fichier a été modifié par l'agent. Écraser les modifications de l'agent ?","instanceShell.rightPanel.actions.conflict.confirmLabel":"Écraser","instanceShell.rightPanel.actions.conflict.cancelLabel":"Annuler","instanceShell.rightPanel.actions.refreshDirty.message":"Le fichier a des modifications non enregistrées. Actualiser supprimera vos modifications. Continuer ?","instanceShell.rightPanel.actions.refreshDirty.confirmLabel":"Actualiser","instanceShell.rightPanel.actions.refreshDirty.cancelLabel":"Annuler","instanceShell.rightPanel.toast.saveSuccess":"Fichier enregistré avec succès","instanceShell.rightPanel.toast.saveError":"Échec de l'enregistrement du fichier","instanceShell.rightPanel.sections.yoloMode":"Mode yolo","instanceShell.rightPanel.sections.yoloMode.tooltip":"Approuve automatiquement les demandes d'autorisation pour la session actuelle. A utiliser seulement si vous faites confiance aux outils executes.","instanceShell.rightPanel.sections.sessionChanges":"Changements de session","instanceShell.rightPanel.sections.sessionChanges.tooltip":"Fichiers modifiés dans la session actuelle. Affiche les ajouts et suppressions pour chaque fichier.","instanceShell.rightPanel.sections.plan":"Plan","instanceShell.rightPanel.sections.plan.tooltip":"Feuille de route de l'agent pour cette session. Suit les tâches et leur statut d'achèvement.","instanceShell.rightPanel.sections.backgroundProcesses":"Shells en arrière-plan","instanceShell.rightPanel.sections.backgroundProcesses.tooltip":"Processus longs démarrés par l'agent. Vous pouvez surveiller leur sortie, les arrêter ou les terminer.","instanceShell.rightPanel.sections.mcp":"Serveurs MCP","instanceShell.rightPanel.sections.mcp.tooltip":"Serveurs du protocole Model Context Protocol qui étendent les capacités de l'agent avec des outils externes.","instanceShell.rightPanel.sections.lsp":"Serveurs LSP","instanceShell.rightPanel.sections.lsp.tooltip":"Serveurs du protocole Language Server Protocol fournissant l'intelligence de code et les diagnostics.","instanceShell.rightPanel.sections.plugins":"Plugins","instanceShell.rightPanel.sections.plugins.tooltip":"Plugins qui personnalisent le comportement de l'UI et du serveur, ajoutant des fonctionnalités au-delà de MCP et LSP.","instanceShell.sessionChanges.noSessionSelected":"Sélectionnez une session pour voir les changements.","instanceShell.sessionChanges.loading":"Récupération des changements...","instanceShell.sessionChanges.empty":"Aucun changement pour l'instant.","instanceShell.sessionChanges.filesChanged":"{count} fichiers modifiés","instanceShell.sessionChanges.actions.show":"Afficher les changements","instanceShell.gitChanges.loading":"Chargement des changements Git...","instanceShell.gitChanges.empty":"Aucun changement Git pour l'instant.","instanceShell.gitChanges.deleted":"Supprimé","instanceShell.gitChanges.binaryViewer":"Impossible d'afficher un fichier binaire","instanceShell.gitChanges.sections.staged":"Changements indexés","instanceShell.gitChanges.sections.unstaged":"Changements","instanceShell.gitChanges.actions.insertContext":"Ajouter au prompt","instanceShell.gitChanges.actions.stage":"Indexer le fichier","instanceShell.gitChanges.actions.unstage":"Retirer de l'index","instanceShell.gitChanges.commit.placeholder":"Saisissez le message du commit","instanceShell.gitChanges.commit.submit":"Valider","instanceShell.gitChanges.commit.submitting":"Validation...","instanceShell.gitChanges.commit.success":"Commit créé avec succès","instanceShell.gitChanges.commit.error":"Impossible de créer le commit","instanceShell.filesShell.fileListTitle":"Liste des fichiers","instanceShell.filesShell.mobileSelectorLabel":"Sélectionner un fichier","instanceShell.filesShell.mobileSelectorEmpty":"Sélectionnez un fichier","instanceShell.filesShell.viewerTitle":"Visionneuse de changements","instanceShell.filesShell.viewerPlaceholder":"Le rendu détaillé sera ajouté à l'étape suivante.","instanceShell.filesShell.viewerEmpty":"Aucun fichier sélectionné.","instanceShell.filesShell.listEmpty":"Aucun fichier dans ce dossier.","instanceShell.filesShell.search.placeholder":"Filtrer les fichiers de ce dossier","instanceShell.filesShell.search.ariaLabel":"Filtrer les fichiers de ce dossier","instanceShell.filesShell.search.empty":"Aucun fichier correspondant.","instanceShell.filesShell.actions.copyPath":"Copier le chemin","instanceShell.filesShell.toast.copyPathSuccess":"Chemin copié","instanceShell.filesShell.toast.copyPathError":"Impossible de copier le chemin","instanceShell.filesShell.previewMarkdown":"Aperçu Markdown","instanceShell.filesShell.showSource":"Afficher la source","instanceShell.filesShell.enableWordWrap":"Activer le retour à la ligne","instanceShell.filesShell.disableWordWrap":"Désactiver le retour à la ligne","instanceShell.plan.noSessionSelected":"Sélectionnez une session pour voir le plan.","instanceShell.plan.empty":"Aucun plan pour l'instant.","instanceShell.yoloMode.noSessionSelected":"Selectionnez une session pour configurer le mode yolo.","instanceShell.yoloMode.title":"Mode yolo","instanceShell.yoloMode.description":"Approuve automatiquement les demandes d'autorisation pour cette session. Desactive par defaut.","instanceShell.yoloMode.badge":"Mode yolo","instanceShell.yoloMode.badgeAriaLabel":"Mode yolo active","instanceShell.backgroundProcesses.empty":"Aucun processus en arrière-plan.","instanceShell.backgroundProcesses.status":"Statut : {status}","instanceShell.backgroundProcesses.output":"Sortie : {sizeKb}KB","instanceShell.backgroundProcesses.notify.enabled":"Notification de fin activee","instanceShell.backgroundProcesses.notify.disabled":"Notification de fin desactivee","instanceShell.backgroundProcesses.actions.output":"Sortie","instanceShell.backgroundProcesses.actions.stop":"Arrêter","instanceShell.backgroundProcesses.actions.terminate":"Terminer","instanceShell.worktree.delete.error.title":"Echec de suppression","instanceShell.worktree.delete.error.fallback":"Impossible de supprimer le worktree","instanceShell.worktree.delete.error.causeLabel":"Cause probable :","instanceShell.worktree.delete.error.nextStepLabel":"Etape suivante suggeree :","instanceShell.worktree.delete.error.summary.localChanges":"Git a refuse de supprimer ce worktree car il contient des fichiers modifies ou non suivis.","instanceShell.worktree.delete.error.summary.inUse":"CodeNomad n'a pas pu supprimer ce worktree car quelque chose utilise encore des fichiers dans ce dossier.","instanceShell.worktree.delete.error.summary.notFound":"CodeNomad n'a pas pu supprimer ce worktree car le dossier ou l'enregistrement du worktree est introuvable.","instanceShell.worktree.delete.error.summary.permissionDenied":"CodeNomad n'a pas pu supprimer ce worktree car l'acces au dossier a ete refuse.","instanceShell.worktree.delete.error.summary.unknown":"CodeNomad n'a pas pu supprimer ce worktree.","instanceShell.worktree.delete.error.cause.localChanges":"Modifications locales","instanceShell.worktree.delete.error.cause.inUse":"Un autre processus utilise ce worktree","instanceShell.worktree.delete.error.cause.notFound":"Le dossier ou l'enregistrement du worktree est manquant","instanceShell.worktree.delete.error.cause.permissionDenied":"Permissions du systeme de fichiers insuffisantes","instanceShell.worktree.delete.error.cause.unknown":"Le backend a renvoye une erreur de suppression non classee","instanceShell.worktree.delete.error.nextStep.localChanges":"Activez la suppression forcee si vous voulez jeter les modifications locales, ou nettoyez le worktree puis reessayez.","instanceShell.worktree.delete.error.nextStep.inUse":"Fermez les terminaux, editeurs, observateurs ou processus en arrière-plan qui utilisent ce worktree puis reessayez.","instanceShell.worktree.delete.error.nextStep.notFound":"Rechargez les worktrees puis reessayez. Si cela echoue encore, inspectez le chemin du worktree sur le disque.","instanceShell.worktree.delete.error.nextStep.permissionDenied":"Verifiez les permissions du systeme de fichiers et fermez les applications qui peuvent verrouiller ce dossier, puis reessayez.","instanceShell.worktree.delete.error.nextStep.unknown":"Consultez l'erreur brute ci-dessous pour les details, puis reessayez apres avoir corrige le probleme signale.","instanceShell.worktree.delete.error.copyRaw":"Copier l'erreur","instanceShell.worktree.delete.error.copySanitized":"Copier la version nettoyee","instanceShell.worktree.delete.error.copySuccess":"Erreur de suppression copiee","instanceShell.worktree.delete.error.copySanitizedSuccess":"Erreur de suppression nettoyee copiee","instanceShell.worktree.delete.error.copyFailure":"Impossible de copier l'erreur de suppression","versionPill.appWithVersion":"Appli {version}","versionPill.ui":"UI","versionPill.uiWithVersion":"UI {version}","versionPill.source":" ({source})","opencodeBinarySelector.title":"Binaire OpenCode","opencodeBinarySelector.subtitle":"Choisissez quel exécutable OpenCode doit lancer","opencodeBinarySelector.customPath.placeholder":"Saisissez le chemin vers le binaire opencode…","opencodeBinarySelector.actions.add":"Ajouter","opencodeBinarySelector.actions.browse":"Parcourir le binaire…","opencodeBinarySelector.actions.removeTitle":"Supprimer le binaire","opencodeBinarySelector.badge.systemPath":"Utiliser le binaire depuis le PATH système","opencodeBinarySelector.status.checkingVersions":"Vérification des versions…","opencodeBinarySelector.status.checking":"Vérification…","opencodeBinarySelector.dialog.title":"Sélectionner le binaire OpenCode","opencodeBinarySelector.dialog.description":"Parcourez les fichiers exposés par le serveur CLI.","opencodeBinarySelector.validation.invalidBinary":"Binaire OpenCode invalide","opencodeBinarySelector.validation.alreadyValidating":"Validation déjà en cours","opencodeBinarySelector.display.systemPath":"{name} (PATH système)","opencodeBinarySelector.versionLabel":"v{version}"},l={"loadingScreen.logoAlt":"Logo CodeNomad","loadingScreen.status.issue":"Un problème est survenu","loadingScreen.actions.showAnother":"En afficher un autre","loadingScreen.errors.missingRoot":"Élément racine de chargement introuvable","loadingScreen.phrases.neurons":"Réchauffage des neurones de l'IA…","loadingScreen.phrases.daydreaming":"On convainc l'IA d'arrêter de rêvasser…","loadingScreen.phrases.goggles":"Polissage des lunettes de code de l'IA…","loadingScreen.phrases.reorganizingFiles":"On demande à l'IA d'arrêter de réorganiser vos fichiers…","loadingScreen.phrases.coffee":"On donne un café supplémentaire à l'IA…","loadingScreen.phrases.nodeModules":"On apprend à l'IA à ne pas supprimer node_modules (encore)…","loadingScreen.phrases.actNatural":"On dit à l'IA d'avoir l'air naturel avant votre arrivée…","loadingScreen.phrases.rewritingHistory":"On demande à l'IA d'arrêter de réécrire l'histoire…","loadingScreen.phrases.stretch":"On laisse l'IA s'étirer avant son sprint de code…","loadingScreen.phrases.keyboardControl":"On persuade l'IA de vous rendre le contrôle du clavier…"},c={"logsView.title":"Journaux du serveur","logsView.actions.show":"Afficher les journaux du serveur","logsView.actions.hide":"Masquer les journaux du serveur","logsView.envVars.title":"Variables d'environnement ({count})","logsView.paused.title":"Les journaux du serveur sont en pause","logsView.paused.description":"Activez le streaming pour suivre l'activité de votre serveur OpenCode.","logsView.empty.waiting":"En attente de la sortie du serveur...","logsView.scrollToBottom":"Aller en bas","infoView.logs.title":"Journaux du serveur","infoView.logs.actions.show":"Afficher les journaux du serveur","infoView.logs.actions.hide":"Masquer les journaux du serveur","infoView.logs.paused.title":"Les journaux du serveur sont en pause","infoView.logs.paused.description":"Activez le streaming pour suivre l'activité de votre serveur OpenCode.","infoView.logs.empty.waiting":"En attente de la sortie du serveur...","infoView.logs.scrollToBottom":"Aller en bas","infoView.dispose.actions.dispose":"Réinitialiser l'instance","infoView.dispose.actions.disposing":"Réinitialisation...","infoView.dispose.confirm.title":"Réinitialiser l'instance ?","infoView.dispose.confirm.message":"Cela efface l'état en cache pour ce répertoire et recharge l'instance.","infoView.dispose.confirm.confirmLabel":"Réinitialiser","infoView.dispose.confirm.cancelLabel":"Annuler","infoView.dispose.toast.success":"Instance réinitialisée. Rechargement...","infoView.dispose.toast.error":"Impossible de réinitialiser l'instance."},d={"markdown.codeBlock.copy.label":"Copier","markdown.codeBlock.copy.copied":"Copié !","markdown.codeBlock.copy.failed":"Échec","markdown.copy":"Copier"},u={"messageListHeader.sidebar.openSessionListAriaLabel":"Ouvrir la liste des sessions","messageListHeader.metrics.usedLabel":"Utilisé","messageListHeader.metrics.availableLabel":"Dispo","messageListHeader.commandPalette.ariaLabel":"Ouvrir la palette de commandes","messageListHeader.commandPalette.button":"Palette de commandes","messageListHeader.connection.connected":"Connecté","messageListHeader.connection.connecting":"Connexion...","messageListHeader.connection.disconnected":"Déconnecté","messageSection.empty.logoAlt":"Logo CodeNomad","messageSection.empty.brandTitle":"CodeNomad","messageSection.empty.title":"Démarrer une conversation","messageSection.empty.description":"Saisissez un message ci-dessous ou ouvrez la palette de commandes :","messageSection.empty.tips.commandPalette":"Palette de commandes","messageSection.empty.tips.askAboutCodebase":"Parler de votre codebase","messageSection.empty.tips.attachFilesPrefix":"Joindre des fichiers avec","messageSection.loading.messages":"Chargement des messages...","messageSection.scroll.toFirstAriaLabel":"Aller au premier message","messageSection.scroll.toLatestAriaLabel":"Aller au dernier message","messageSection.scroll.enableHoldAriaLabel":"Activer le maintien pour les longues réponses de l'assistant","messageSection.scroll.disableHoldAriaLabel":"Désactiver le maintien pour les longues réponses de l'assistant","messageSection.quote.addAsQuote":"Ajouter en citation","messageSection.quote.addAsCode":"Ajouter en code","messageSection.quote.copy":"Copier","messageSection.quote.copied":"Copié !","messageSection.quote.copyFailed":"Impossible de copier","messageSection.search.ariaLabel":"Rechercher dans l'historique du chat","messageSection.search.placeholder":"Rechercher dans le chat actuel...","messageSection.search.count.empty":"Rechercher","messageSection.search.count.minChars":"{count}+ caractères","messageSection.search.count.searching":"Recherche...","messageSection.search.count.none":"Aucun résultat","messageSection.search.count.matches":"{current} / {total}","messageSection.search.previousAriaLabel":"Résultat précédent","messageSection.search.nextAriaLabel":"Résultat suivant","messageSection.search.closeAriaLabel":"Fermer la recherche","messageSection.search.searching":"Recherche...","messageSection.search.noVisibleMatches":"Aucun résultat visible","messageTimeline.ariaLabel":"Chronologie des messages","messageTimeline.segment.user.label":"Vous","messageTimeline.segment.assistant.label":"Asst","messageTimeline.segment.compaction.label":"Compaction","messageTimeline.tool.fallbackLabel":"Appel d'outil","messageTimeline.tooltip.userFallback":"Message utilisateur","messageTimeline.tooltip.assistantFallback":"Réponse de l'assistant","messageTimeline.tooltip.compaction.auto":"Compaction auto","messageTimeline.tooltip.compaction.manual":"Compaction utilisateur","messageTimeline.text.filePrefix":"[Fichier] {filename}","messageTimeline.text.attachment":"Pièce jointe","messageBlock.tool.header":"Appel d'outil","messageBlock.tool.unknown":"inconnu","messageBlock.tool.goToSession.label":"Aller à la session","messageBlock.tool.goToSession.title":"Aller à la session","messageBlock.tool.goToSession.unavailableTitle":"Session pas encore disponible","messageBlock.tool.deletePart.label":"Supprimer la partie","messageBlock.tool.deletePart.deleting":"Suppression...","messageBlock.tool.deletePart.title":"Supprimer cette sortie d'outil","messageBlock.tool.deletePart.failed.title":"Échec de suppression","messageBlock.tool.deletePart.failed.message":"Impossible de supprimer la sortie d'outil","messageBlock.compaction.ariaLabel":"Compaction de la session","messageBlock.compaction.autoLabel":"Session compactée automatiquement","messageBlock.compaction.manualLabel":"Session compactée par vous","messageBlock.usage.input":"Entrée","messageBlock.usage.output":"Sortie","messageBlock.usage.reasoning":"Raisonnement","messageBlock.usage.cacheRead":"Lecture du cache","messageBlock.usage.cacheWrite":"Écriture du cache","messageBlock.usage.cost":"Coût","messageBlock.step.agentLabel":"Agent : {agent}","messageBlock.step.modelLabel":"Modèle : {model}","messageBlock.reasoning.thinkingLabel":"Réflexion","messageBlock.reasoning.expandAriaLabel":"Développer la réflexion","messageBlock.reasoning.collapseAriaLabel":"Réduire la réflexion","messageBlock.reasoning.indicator.hide":"Masquer","messageBlock.reasoning.indicator.view":"Voir","messageBlock.reasoning.detailsAriaLabel":"Détails du raisonnement","codeBlockInline.actions.copy":"Copier","codeBlockInline.actions.copied":"Copié !","messageItem.speaker.you":"Vous","messageItem.speaker.assistant":"Assistant","messageItem.actions.revert":"Revenir","messageItem.actions.revertTitle":"Annuler les changements jusqu'ici (supprime les messages)","messageItem.actions.fork":"Fork","messageItem.actions.forkTitle":"Fork depuis ce message","messageItem.actions.copy":"Copier","messageItem.actions.copyTitle":"Copier le message","messageItem.actions.copied":"Copié !","messageItem.actions.speak":"Lire le message","messageItem.actions.generatingSpeech":"Generation de l'audio","messageItem.actions.stopSpeech":"Arreter la lecture","messageItem.actions.speak.error.title":"La lecture vocale a echoue","messageItem.actions.speak.error.unsupported":"La lecture vocale n'est pas prise en charge dans ce navigateur.","messageItem.actions.speak.error.unavailable":"La lecture vocale n'est pas disponible tant que les parametres vocaux ne sont pas configures.","messageItem.actions.speak.error.generate":"Impossible de generer l'audio pour ce message.","messageItem.actions.deleteMessage":"Supprimer le message (sans annuler les changements)","messageItem.actions.deleteMessagesUpTo":"Supprimer les messages jusqu'ici (sans annuler les changements)","messageItem.actions.deletingMessage":"Suppression...","messageItem.actions.deleteMessageFailedTitle":"Échec de suppression","messageItem.actions.deleteMessageFailedMessage":"Impossible de supprimer le message","messageItem.selection.checkboxAriaLabel":"Sélectionner le message pour suppression","messageSection.bulkDelete.toolbarAriaLabel":"Éléments sélectionnés ({count})","messageSection.bulkDelete.deleteSelectedTitle":"Supprimer les éléments sélectionnés","messageSection.bulkDelete.selectAllTitle":"Tout sélectionner","messageSection.bulkDelete.moreOptionsTitle":"Plus d'options","messageSection.bulkDelete.selectionModeLabel":"Sélection","messageSection.bulkDelete.selectionModeAll":"Tous","messageSection.bulkDelete.selectionModeTools":"Outils uniquement","messageSection.bulkDelete.selectionHint.toggle":"Selectionner un element","messageSection.bulkDelete.selectionHint.range":"Selectionner une plage","messageSection.bulkDelete.selectionHint.clear":"Effacer la selection","messageSection.bulkDelete.cancelTitle":"Annuler la sélection","messageSection.bulkDelete.failedTitle":"Échec de suppression","messageSection.bulkDelete.failedMessage":"Impossible de supprimer les éléments sélectionnés","messageItem.status.queued":"EN FILE","messageItem.status.generating":"Génération...","messageItem.status.sending":"Envoi...","messageItem.status.failedToSend":"Échec de l'envoi du message","messagePart.actions.delete":"Supprimer la partie","messagePart.actions.deleting":"Suppression...","messagePart.actions.deleteTitle":"Supprimer cet élément","messagePart.actions.deleteFailedTitle":"Échec de suppression","messagePart.actions.deleteFailedMessage":"Impossible de supprimer l'élément","messageItem.attachment.defaultName":"piece-jointe","messageItem.attachment.downloadAriaLabel":"Télécharger {name}","messageItem.agentMeta.agentLabel":"Agent : {agent}","messageItem.agentMeta.modelLabel":"Modèle : {model}","messageItem.errors.authenticationFallback":"Erreur d'authentification","messageItem.errors.outputLengthExceeded":"Longueur de sortie du message dépassée","messageItem.errors.requestAborted":"La requête a été annulée","messageItem.errors.unknownFallback":"Une erreur inconnue est survenue","attachmentChip.removeAriaLabel":"Retirer la pièce jointe","expandButton.toggleAriaLabel":"Basculer la hauteur de la zone de saisie","promptInput.placeholder.shell":"Exécuter une commande shell (Esc pour quitter)...","promptInput.placeholder.default":"Tapez votre message, @fichier, @agent, ou collez des images et du texte...","promptInput.hints.shell.exit":"pour quitter le mode shell","promptInput.hints.shell.enable":"Mode shell","promptInput.hints.commands":"Commandes","promptInput.history.previousAriaLabel":"Prompt précédent","promptInput.history.nextAriaLabel":"Prompt suivant","promptInput.overlay.newLine":"Nouvelle ligne","promptInput.overlay.send":"Envoyer","promptInput.overlay.filesAgents":"Fichiers/agents","promptInput.overlay.history":"Historique","promptInput.overlay.attachments":"• {count} fichier(s) joint(s)","promptInput.overlay.shellModeActive":"Mode shell actif","promptInput.overlay.press":"Appuyez sur","promptInput.overlay.againToAbort":"à nouveau pour interrompre la session","promptInput.stopSession.ariaLabel":"Arrêter la session","promptInput.stopSession.title":"Arrêter la session","promptInput.clear.ariaLabel":"Effacer le texte du prompt","promptInput.clear.title":"Effacer le texte du prompt","promptInput.send.ariaLabel":"Envoyer le message","promptInput.send.errorFallback":"Impossible d'envoyer le message","promptInput.send.errorTitle":"Échec de l'envoi","promptInput.conversationMode.enable.title":"Activer le mode conversation","promptInput.conversationMode.disable.title":"Desactiver le mode conversation","promptInput.conversationMode.error.title":"La lecture de la conversation a echoue","promptInput.conversationMode.error.message":"Impossible de continuer a lire les reponses de l'assistant.","promptInput.voiceInput.start.title":"Démarrer la saisie vocale","promptInput.voiceInput.stop.title":"Arrêter l'enregistrement et transcrire","promptInput.voiceInput.transcribing.title":"Transcription de l'audio","promptInput.voiceInput.error.title":"Échec de la saisie vocale","promptInput.voiceInput.error.permission":"L'accès au microphone est requis pour enregistrer la saisie vocale.","promptInput.voiceInput.error.permissionDenied":"macOS a refusé l'accès au microphone.","promptInput.voiceInput.error.unsupported":"La saisie vocale n'est pas prise en charge dans ce navigateur.","promptInput.voiceInput.error.transcribe":"Impossible de transcrire l'audio enregistré."},m={"remoteAccess.eyebrow":"Passation à distance","remoteAccess.title":"Se connecter à CodeNomad à distance","remoteAccess.subtitle":"Utilisez les adresses ci-dessous pour ouvrir CodeNomad depuis un autre appareil.","remoteAccess.close":"Fermer l'accès à distance","remoteAccess.refresh":"Rafraîchir","remoteAccess.sections.listeningMode.label":"Mode d'écoute","remoteAccess.sections.listeningMode.help":"Autorisez ou limitez les passations à distance en écoutant sur toutes les interfaces ou uniquement sur localhost.","remoteAccess.toggle.on":"Activé","remoteAccess.toggle.off":"Désactivé","remoteAccess.toggle.title":"Autoriser les connexions depuis d'autres IP","remoteAccess.toggle.caption.all":"Écoute sur 0.0.0.0","remoteAccess.toggle.caption.local":"Écoute sur 127.0.0.1","remoteAccess.toggle.note":"Modifier ceci nécessite un redémarrage et stoppe temporairement toutes les instances actives. Partagez les adresses ci-dessous une fois le serveur redémarré.","remoteAccess.listeningMode.restartConfirm.message":"Redémarrer pour appliquer le mode d'écoute ? Cela arrêtera toutes les instances en cours.","remoteAccess.listeningMode.restartConfirm.title.all":"Ouvrir aux autres appareils","remoteAccess.listeningMode.restartConfirm.title.local":"Limiter à cet appareil","remoteAccess.listeningMode.restartConfirm.confirmLabel":"Redémarrer maintenant","remoteAccess.listeningMode.restartConfirm.cancelLabel":"Annuler","remoteAccess.restart.errorManual":"Impossible de redémarrer automatiquement. Veuillez redémarrer l'application pour appliquer le changement.","remoteAccess.sections.serverPassword.label":"Mot de passe du serveur","remoteAccess.sections.serverPassword.help":"Les passations à distance nécessitent un mot de passe. Définissez-en un facile à retenir pour autoriser la connexion depuis d'autres appareils.","remoteAccess.authStatus.unavailable":"Statut d'authentification indisponible.","remoteAccess.username":"Nom d'utilisateur : {username}","remoteAccess.password.status.set":"Un mot de passe est défini pour l'accès à distance.","remoteAccess.password.status.unset":"Aucun mot de passe mémorable n'est encore défini. Définissez-en un pour autoriser les connexions à distance.","remoteAccess.password.actions.cancel":"Annuler","remoteAccess.password.actions.change":"Changer le mot de passe","remoteAccess.password.actions.set":"Définir le mot de passe","remoteAccess.password.form.newPassword":"Nouveau mot de passe","remoteAccess.password.form.confirmPassword":"Confirmer le mot de passe","remoteAccess.password.form.placeholder":"Au moins 8 caractères","remoteAccess.password.error.tooShort":"Le mot de passe doit contenir au moins 8 caractères.","remoteAccess.password.error.mismatch":"Les mots de passe ne correspondent pas.","remoteAccess.password.save.saving":"Enregistrement…","remoteAccess.password.save.label":"Enregistrer le mot de passe","remoteAccess.sections.addresses.label":"Adresses accessibles","remoteAccess.sections.addresses.help":"Lancez ou scannez depuis une autre machine pour passer le contrôle.","remoteAccess.addresses.loading":"Chargement des adresses…","remoteAccess.addresses.none":"Aucune adresse disponible pour le moment.","remoteAccess.addresses.actions.showOther":"Afficher {count} autres adresses","remoteAccess.addresses.actions.hideOther":"Masquer les autres adresses","remoteAccess.address.scope.network":"Réseau","remoteAccess.address.scope.loopback":"Boucle locale","remoteAccess.address.scope.internal":"Interne","remoteAccess.address.open":"Ouvrir","remoteAccess.address.showQr":"Afficher le QR","remoteAccess.address.hideQr":"Masquer le QR","remoteAccess.address.qrAlt":"QR pour {url}"},p={"sessionPicker.title":"OpenCode • {folder}","sessionPicker.empty.noPrevious":"Aucune session précédente","sessionPicker.resume.title":"Reprendre une session ({count}) :","sessionPicker.session.untitled":"Sans titre","sessionPicker.divider.or":"ou","sessionPicker.new.title":"Démarrer une nouvelle session :","sessionPicker.agents.loading":"Chargement des agents...","sessionPicker.actions.creating":"Création...","sessionPicker.actions.createSession":"Créer une session","sessionPicker.actions.cancel":"Annuler","sessionList.header.title":"Sessions","sessionList.session.untitled":"Sans titre","sessionList.status.working":"En cours","sessionList.status.compacting":"Compactage","sessionList.status.idle":"Inactif","sessionList.status.retrying":"Nouvelle tentative","sessionList.status.retryingIn":"Nouvelle tentative dans {seconds}s","sessionList.status.retryTooltip":"{message} (Tentative {attempt})","sessionList.status.retryToast":"{countdown} : {message} (Tentative {attempt})","sessionList.status.needsPermission":"Autorisation requise","sessionList.status.needsInput":"Entrée requise","sessionList.expand.collapseAriaLabel":"Réduire la session","sessionList.expand.expandAriaLabel":"Développer la session","sessionList.expand.collapseTitle":"Réduire","sessionList.expand.expandTitle":"Développer","sessionList.actions.newSession.ariaLabel":"Nouvelle session","sessionList.actions.newSession.title":"Nouvelle session","sessionList.actions.copyId.ariaLabel":"Copier l'ID de session","sessionList.actions.copyId.title":"Copier l'ID de session","sessionList.actions.reload.ariaLabel":"Recharger la session","sessionList.actions.reload.title":"Recharger la session","sessionList.actions.rename.ariaLabel":"Renommer la session","sessionList.actions.rename.title":"Renommer la session","sessionList.actions.delete.ariaLabel":"Supprimer la session","sessionList.actions.delete.title":"Supprimer la session","sessionList.copyId.success":"ID de session copié","sessionList.copyId.error":"Impossible de copier l'ID de session","sessionList.reload.error":"Impossible de recharger la session","sessionList.delete.error":"Impossible de supprimer la session","sessionList.delete.title":"Supprimer la session","sessionList.delete.confirmMessage":'Supprimer "{label}" ? Cette action est irréversible.',"sessionList.delete.confirmLabel":"Supprimer","sessionList.delete.cancelLabel":"Annuler","sessionList.rename.error":"Impossible de renommer la session","sessionList.filter.placeholder":"Rechercher des sessions…","sessionList.filter.ariaLabel":"Rechercher des sessions","sessionList.selection.selectAllLabel":"Tout sélectionner","sessionList.selection.selectAllAriaLabel":"Sélectionner toutes les sessions","sessionList.selection.clearLabel":"Effacer","sessionList.selection.clearAriaLabel":"Effacer la sélection","sessionList.selection.checkboxAriaLabel":"Sélectionner la session","sessionList.bulkDelete.button":"Supprimer {count}","sessionList.bulkDelete.ariaLabel":"Supprimer {count} sessions sélectionnées","sessionList.bulkDelete.title":"Supprimer des sessions","sessionList.bulkDelete.confirmMessage":"Supprimer {count} sessions sélectionnées ? Cette action est irréversible.","sessionList.bulkDelete.confirmLabel":"Supprimer","sessionList.bulkDelete.cancelLabel":"Annuler","sessionList.bulkDelete.error":"Impossible de supprimer {count} sessions","sessionRenameDialog.title":"Renommer la session","sessionRenameDialog.description.withLabel":'Mettre à jour le titre de "{label}".',"sessionRenameDialog.description.default":"Définir un nouveau titre pour cette session.","sessionRenameDialog.input.label":"Nom de la session","sessionRenameDialog.input.placeholder":"Saisissez un nom de session","sessionRenameDialog.actions.cancel":"Annuler","sessionRenameDialog.actions.rename":"Renommer","sessionRenameDialog.actions.renaming":"Renommage…","sessionView.fallback.sessionNotFound":"Session introuvable","sessionView.alerts.abortFailed.message":"Impossible d'arrêter la session","sessionView.alerts.abortFailed.title":"Échec de l'arrêt","sessionView.alerts.revertFailed.message":"Impossible de revenir au message","sessionView.alerts.revertFailed.title":"Échec du retour","sessionView.alerts.deleteUpToFailed.message":"Impossible de supprimer les messages","sessionView.alerts.deleteUpToFailed.title":"Échec de suppression","sessionView.alerts.forkFailed.message":"Impossible de forker la session","sessionView.alerts.forkFailed.title":"Échec du fork","sessionView.attachments.expandPastedTextAriaLabel":"Développer le texte collé","sessionView.attachments.insertPastedTextTitle":"Insérer le texte collé","sessionView.attachments.removeAriaLabel":"Retirer la pièce jointe","sessionEvents.sessionCompactedToast":"La session {label} a été compactée","sessionEvents.sessionError.unknown":"Erreur inconnue","sessionEvents.sessionError.title":"Erreur de session","sessionEvents.sessionError.message":"Erreur : {message}","sessionState.cleanup.deepConfirm.message":"Ce nettoyage peut être lent et peut supprimer des sessions que vous ne vouliez pas supprimer. Confirmez-vous ?","sessionState.cleanup.deepConfirm.title":"Nettoyage approfondi des sessions","sessionState.cleanup.deepConfirm.detail":"Le nettoyage approfondi des sessions supprime toutes les sessions sans messages, retire les sessions de sous-agent terminées et efface les forks inutilisés d'une session.","sessionState.cleanup.deepConfirm.confirmLabel":"Continuer","sessionState.cleanup.deepConfirm.cancelLabel":"Annuler","sessionState.cleanup.toast.one":"Nettoyage de {count} session vide","sessionState.cleanup.toast.other":"Nettoyage de {count} sessions vides"},g={"instanceServiceStatus.sections.lsp":"Serveurs LSP","instanceServiceStatus.sections.mcp":"Serveurs MCP","instanceServiceStatus.sections.plugins":"Plugins","instanceServiceStatus.lsp.loading":"Chargement des serveurs LSP...","instanceServiceStatus.lsp.empty":"Aucun serveur LSP détecté.","instanceServiceStatus.lsp.status.connected":"Connecté","instanceServiceStatus.lsp.status.error":"Erreur","instanceServiceStatus.mcp.loading":"Chargement des serveurs MCP...","instanceServiceStatus.mcp.empty":"Aucun serveur MCP détecté.","instanceServiceStatus.mcp.toggleAriaLabel":"Basculer le serveur MCP {name}","instanceServiceStatus.plugins.loading":"Chargement des plugins...","instanceServiceStatus.plugins.empty":"Aucun plugin configuré.","permissionBanner.pendingRequests.one":"{count} demande en attente","permissionBanner.pendingRequests.other":"{count} demandes en attente","permissionBanner.detail.permission.one":"{count} autorisation","permissionBanner.detail.permission.other":"{count} autorisations","permissionBanner.detail.question.one":"{count} question","permissionBanner.detail.question.other":"{count} questions","permissionBanner.detail.wrapper":" ({detail})","agentSelector.placeholder":"Sélectionner un agent...","agentSelector.badge.subagent":"sous-agent","agentSelector.none":"Aucun","agentSelector.trigger.primary":"Agent : {agent}","modelSelector.placeholder.search":"Rechercher des modèles...","modelSelector.none":"Aucun","modelSelector.trigger.primary":"Modèle : {model}","modelSelector.favoritesOnly.toggle.ariaLabel":"Basculer en favoris uniquement","modelSelector.favoritesOnly.showAll":"Afficher tous les modèles","modelSelector.favorite.add":"Ajouter aux favoris","modelSelector.favorite.remove":"Retirer des favoris","thinkingSelector.variant.default":"Par défaut","thinkingSelector.label":"Réflexion : {variant}","envEditor.title":"Variables d'environnement","envEditor.count.one":"({count} variable)","envEditor.count.other":"({count} variables)","envEditor.fields.name.placeholder":"Nom de la variable","envEditor.fields.name.readOnlyTitle":"Nom de la variable (lecture seule)","envEditor.fields.value.placeholder":"Valeur de la variable","envEditor.actions.remove.title":"Supprimer la variable","envEditor.actions.add.title":"Ajouter une variable","envEditor.empty":"Aucune variable d'environnement configurée. Ajoutez des variables ci-dessus pour personnaliser l'environnement OpenCode.","envEditor.help":"Ces variables seront disponibles dans l'environnement OpenCode lors du démarrage des instances.","contextUsagePanel.headings.tokens":"Tokens","contextUsagePanel.headings.context":"Contexte","contextUsagePanel.labels.input":"Entrée","contextUsagePanel.labels.output":"Sortie","contextUsagePanel.labels.cost":"Coût","contextUsagePanel.labels.used":"Utilisé","contextUsagePanel.labels.available":"Dispo","contextUsagePanel.unavailable":"--","settings.title":"Settings","settings.navigationAriaLabel":"Settings sections","settings.close":"Close settings","settings.content.eyebrow":"Workspace preferences","settings.open.title":"Open settings","settings.open.ariaLabel":"Open settings","settings.nav.appearance":"Appearance","settings.nav.notifications":"Notifications","settings.nav.remote":"Remote Access","settings.nav.speech":"Speech","settings.nav.opencode":"OpenCode","settings.scope.device":"This device","settings.scope.server":"Server setting","settings.common.enabled":"Enabled","settings.common.disabled":"Desactive","settings.section.appearance.title":"Appearance","settings.section.appearance.subtitle":"Adjust how the app looks on this device.","settings.appearance.theme.title":"Theme","settings.appearance.theme.subtitle":"Choose the color mode used throughout the app.","settings.appearance.theme.option.system":"Match your operating system setting","settings.appearance.theme.option.light":"Use the light appearance","settings.appearance.theme.option.dark":"Use the dark appearance","settings.section.notifications.title":"Notifications","settings.section.notifications.subtitle":"Control OS-level notifications for session activity.","settings.notifications.permission.granted":"Granted","settings.notifications.permission.denied":"Denied","settings.notifications.permission.default":"Not granted","settings.notifications.permission.unsupported":"Unsupported","settings.notifications.messages.unsupportedEnvironment":"OS notifications are not supported in this environment.","settings.notifications.messages.permissionDenied":"Notification permission denied. Enable notifications in your system or browser settings.","settings.notifications.messages.permissionNotGranted":"Notification permission not granted.","settings.notifications.messages.unsupportedGeneral":"Notifications are not supported in this environment.","settings.notifications.messages.permissionGranted":"Permission granted. You can now enable notifications.","settings.notifications.messages.permissionRequestDenied":"Permission denied. You may need to enable notifications in your system or browser settings.","settings.notifications.sessionStatus.title":"Session status notifications","settings.notifications.sessionStatus.subtitle":"Receive alerts when sessions need your attention.","settings.notifications.enable.title":"Enable notifications","settings.notifications.enable.permission":"Permission: {permission}","settings.notifications.requestPermission.title":"Request permission","settings.notifications.requestPermission.subtitle":"Allow the app to send notifications on this device.","settings.notifications.requestPermission.action":"Request","settings.notifications.allowVisible.title":"Notify when the app is focused","settings.notifications.allowVisible.subtitle":"Keep alerts enabled even while this window is visible.","settings.notifications.unsupportedNote":"Notifications are not supported in this environment. The notifications control stays disabled.","settings.notifications.events.title":"Notify me when","settings.notifications.events.subtitle":"Choose which session events should send alerts.","settings.notifications.events.needsInput":"Session needs input","settings.notifications.events.idle":"Session becomes idle","settings.notifications.status.enabled":"Notifications enabled","settings.notifications.status.disabled":"Notifications disabled","settings.notifications.status.unsupported":"Notifications unsupported","settings.section.remote.title":"Remote Access","settings.section.remote.subtitle":"Review how this server is exposed on your network and secure access credentials.","settings.section.opencode.title":"OpenCode","settings.section.opencode.subtitle":"Choose the OpenCode binary and environment used for new instances.","settings.opencode.runtime.title":"Runtime","settings.opencode.runtime.subtitle":"Configure which OpenCode binary new instances launch with.","settings.opencode.logLevel.title":"Niveau de logs OpenCode","settings.opencode.logLevel.subtitle":"Definir le niveau de logs utilise au lancement des nouvelles instances OpenCode.","settings.opencode.logLevel.selector.title":"Verbosite des logs","settings.opencode.logLevel.selector.subtitle":"Choisir la quantite de journaux emise par les nouvelles instances OpenCode.","settings.opencode.logLevel.option.debug":"Debogage","settings.opencode.logLevel.option.info":"Info","settings.opencode.logLevel.option.warn":"Avertissement","settings.opencode.logLevel.option.error":"Erreur","settings.appearance.behavior.title":"Interaction","settings.appearance.behavior.subtitle":"Parametres par defaut pour les messages, les diffs et la saisie.","settings.behavior.keyboardHints.title":"Indications de raccourcis clavier","settings.behavior.keyboardHints.subtitle":"Afficher des indications de raccourcis clavier dans toute l'interface.","settings.behavior.thinking.title":"Sections de reflexion","settings.behavior.thinking.subtitle":"Afficher ou masquer les sections de reflexion de l'IA dans les messages.","settings.behavior.thinkingDefault.title":"Etat initial de la reflexion","settings.behavior.thinkingDefault.subtitle":"Choisir si les sections de reflexion commencent developpees ou reduites.","settings.behavior.timelineTools.title":"Appels d'outils dans la chronologie","settings.behavior.timelineTools.subtitle":"Afficher ou masquer les entrees d'appels d'outils dans la chronologie des messages.","settings.behavior.diffView.title":"Vue du diff","settings.behavior.diffView.subtitle":"Choisir comment les diffs des appels d'outils sont affiches.","settings.behavior.diffView.option.split":"Scinde","settings.behavior.diffView.option.unified":"Unifie","settings.behavior.toolOutputsDefault.title":"Etat initial des sorties d'outils","settings.behavior.toolOutputsDefault.subtitle":"Choisir si les sorties d'outils commencent developpees ou reduites.","settings.behavior.diagnosticsDefault.title":"Etat initial des diagnostics","settings.behavior.diagnosticsDefault.subtitle":"Choisir si la sortie des diagnostics commence developpee ou reduite.","settings.behavior.toolInputsVisibility.title":"Visibilite des entrees d'outils","settings.behavior.toolInputsVisibility.subtitle":"Definir la visibilite par defaut des arguments d'entree des appels d'outils.","settings.behavior.usageMetrics.title":"Metriques d'utilisation des tokens","settings.behavior.usageMetrics.subtitle":"Afficher ou masquer les stats de tokens et de cout pour les messages de l'assistant.","settings.behavior.autoCleanup.title":"Nettoyage auto des sessions vides","settings.behavior.autoCleanup.subtitle":"Nettoyer automatiquement les sessions vides lors de la creation de nouvelles.","settings.behavior.keepUnseenSubagentIdle.title":"Garder les marqueurs inactifs des sous-agents","settings.behavior.keepUnseenSubagentIdle.subtitle":"Garde les marqueurs inactifs des sous-agents visibles jusqu'a consultation au lieu de les masquer apres 5 secondes.","settings.behavior.promptVoiceInput.title":"Prompt voice input","settings.behavior.promptVoiceInput.subtitle":"Show the microphone control for speech-to-text prompt input when speech is configured.","settings.behavior.promptSubmit.title":"Entrer pour envoyer","settings.behavior.promptSubmit.subtitle":"Utiliser Entrer pour envoyer; Cmd/Ctrl+Entrer insere une nouvelle ligne.","settings.speech.title":"Voix","settings.speech.subtitle":"Configurez dès maintenant la reconnaissance vocale et préparez la synthèse vocale pour de futures fonctionnalités.","settings.speech.provider.title":"Fournisseur","settings.speech.provider.subtitle":"Les requêtes vocales utilisent l'adaptateur vocal côté serveur.","settings.speech.provider.openaiCompatible":"OpenAI-compatible","settings.speech.status.loading":"Vérification de la configuration...","settings.speech.status.configured":"Configuré","settings.speech.status.missing":"Clé API manquante","settings.speech.status.error":"Service vocal indisponible","settings.speech.apiKey.title":"API key","settings.speech.apiKey.subtitle":"Utilisée pour les requêtes vocales gérées par CodeNomad.","settings.speech.apiKey.placeholder":"Saisissez une nouvelle clé API","settings.speech.apiKey.storedNote":"Une clé API enregistrée est masquée. Saisissez une nouvelle valeur pour la remplacer ou laissez le champ vide pour la conserver.","settings.speech.apiKey.clearAction":"Effacer la clé enregistrée","settings.speech.apiKey.clearPending":"La clé API enregistrée sera supprimée lors de l'enregistrement.","settings.speech.baseUrl.title":"Base URL","settings.speech.baseUrl.subtitle":"Remplacement facultatif des points d'accès vocaux compatibles OpenAI.","settings.speech.baseUrl.placeholder":"https://api.openai.com/v1","settings.speech.sttModel.title":"Modèle de transcription","settings.speech.sttModel.subtitle":"Modèle utilisé pour les requêtes vocales vers texte du prompt.","settings.speech.ttsModel.title":"Modèle vocal","settings.speech.ttsModel.subtitle":"Modèle de synthèse vocale par défaut réservé aux futures fonctions de lecture.","settings.speech.ttsVoice.title":"Voix par défaut","settings.speech.ttsVoice.subtitle":"Voix de synthèse vocale par défaut réservée aux futures fonctions de lecture.","settings.speech.playbackMode.title":"Mode de lecture","settings.speech.playbackMode.subtitle":"Choisissez si le TTS commence a jouer pendant le flux audio ou apres la generation complete du fichier.","settings.speech.playbackMode.streaming":"Streaming","settings.speech.playbackMode.buffered":"Buffered","settings.speech.ttsFormat.title":"Format de sortie","settings.speech.ttsFormat.subtitle":"Choisissez le format audio pour la voix synthetisee. La prise en charge du streaming depend du fournisseur et du navigateur.","settings.speech.help":"La saisie vocale du prompt apparait lorsque la transcription vocale est configuree et prise en charge. La lecture des messages utilise le mode et le format TTS selectionnes ici.","settings.speech.compatibility.streamingUnavailable":"Votre configuration actuelle du fournisseur vocal n'annonce pas le TTS en streaming. Passez le mode de lecture sur buffered si vous voulez que la lecture fonctionne maintenant.","settings.speech.compatibility.browserStreamingUnavailable":"Votre navigateur actuel ne peut pas lire en streaming le format TTS selectionne. Choisissez la lecture buffered ou passez a un autre format.","settings.speech.compatibility.runtimeNote":"Tous les formats restent selectionnables en mode streaming. Certaines combinaisons navigateur/fournisseur peuvent quand meme echouer au moment de la lecture.","settings.speech.testPlayback.action":"Tester la lecture","settings.speech.testPlayback.generating":"Generation de l'extrait","settings.speech.testPlayback.stop":"Arreter l'extrait","settings.speech.testPlayback.sample":"Merci d'utiliser CodeNomad, vos parametres vocaux fonctionnent correctement.","settings.speech.testPlayback.note":"Le test utilise immediatement le mode et le format actuels. Enregistrez d'abord les changements d'API key, d'URL de base, de modele ou de voix si vous voulez aussi les tester.","settings.speech.save.action":"Enregistrer","settings.speech.save.saving":"Enregistrement...","settings.speech.save.saved":"Enregistré","settings.speech.save.unsaved":"Modifications non enregistrées","settings.speech.save.error":"Échec de l'enregistrement","settings.nav.sidecars":"SideCars","settings.section.sidecars.eyebrow":"Server services","settings.section.sidecars.title":"SideCars","settings.section.sidecars.subtitle":"Configure local services listening on fixed ports that the server can proxy into tabs.","sidecars.form.name":"Name","sidecars.form.validation":"Enter a valid SideCar name and port.","sidecars.form.port":"Port","sidecars.form.insecure":"Use HTTP","sidecars.form.protocol":"Protocol","sidecars.form.protocol.help":"Choose how the proxy should connect to the local service.","sidecars.form.protocol.https":"HTTPS","sidecars.form.protocol.http":"HTTP","sidecars.form.prefixMode":"Prefix mode","sidecars.form.prefixMode.help":"Choose whether the SideCar receives the public /sidecars path prefix.","sidecars.form.prefixMode.strip":"Strip prefix","sidecars.form.prefixMode.preserve":"Preserve prefix","sidecars.form.add":"Add SideCar","sidecars.kind.port":"Port","sidecars.status.running":"Running","sidecars.status.stopped":"Stopped","sidecars.basePath":"Base path","sidecars.settings.listTitle":"Configured SideCars","sidecars.settings.listSubtitle":"Review the port-based SideCars available in the picker.","sidecars.settings.empty":"No SideCars configured yet.","sidecars.picker.title":"Open SideCar","sidecars.picker.loading":"Loading SideCars...","sidecars.picker.subtitle":"Choose an available SideCar to open in a new tab.","sidecars.picker.empty":"No port-based SideCars are available yet.","sidecars.picker.close":"Close","sidecars.open.errorTitle":"Unable to open SideCar","sidecars.open.notFound":"SideCar not found.","sidecars.open.notRunning":"SideCar is not reachable on its configured port.","sidecars.back":"Back","sidecars.refresh":"Refresh","sidecars.path":"Path","sidecars.go":"Go"},h={"time.relative.justNow":"à l'instant","time.relative.daysAgoShort":"il y a {count} j","time.relative.hoursAgoShort":"il y a {count} h","time.relative.minutesAgoShort":"il y a {count} min"},f={"toolCall.pending.waitingToRun":"En attente d'exécution...","toolCall.error.label":"Erreur :","toolCall.header.copyTitle":"Copy tool call title","toolCall.header.copyAriaLabel":"Copy tool call title","toolCall.header.showInputTitle":"Show Tool Arguments","toolCall.header.showInputAriaLabel":"Show Tool Arguments","toolCall.header.hideInputTitle":"Hide Tool Arguments","toolCall.header.hideInputAriaLabel":"Hide Tool Arguments","toolCall.io.input":"Tool Input","toolCall.io.output":"Tool Output","toolCall.diff.label":"Diff","toolCall.diff.label.withPath":"Diff · {path}","toolCall.diff.viewMode.ariaLabel":"Mode d'affichage du diff","toolCall.diff.viewMode.split":"Côte à côte","toolCall.diff.viewMode.unified":"Unifié","toolCall.diff.switchToSplit":"Passer à la vue côte à côte","toolCall.diff.switchToUnified":"Passer à la vue unifiée","toolCall.diff.enableWordWrap":"Activer le retour à la ligne","toolCall.diff.disableWordWrap":"Désactiver le retour à la ligne","toolCall.diff.copyPatch":"Copier le patch","toolCall.diagnostics.title":"Diagnostics","toolCall.diagnostics.ariaLabel":"Diagnostics","toolCall.diagnostics.ariaLabel.withLabel":"Diagnostics {label}","toolCall.diagnostics.severity.error.short":"ERR","toolCall.diagnostics.severity.warning.short":"WARN","toolCall.diagnostics.severity.info.short":"INFO","toolCall.renderer.toolName.shell":"Shell","toolCall.renderer.toolName.fetch":"Fetch","toolCall.renderer.toolName.invalid":"Invalide","toolCall.renderer.toolName.plan":"Plan","toolCall.renderer.toolName.applyPatch":"Appliquer le patch","toolCall.renderer.action.working":"En cours...","toolCall.renderer.action.writingCommand":"Rédaction de la commande...","toolCall.renderer.action.preparingEdit":"Préparation de la modification...","toolCall.renderer.action.readingFile":"Lecture du fichier...","toolCall.renderer.action.preparingWrite":"Préparation de l'écriture...","toolCall.renderer.action.preparingPatch":"Préparation du patch...","toolCall.renderer.action.planning":"Planification...","toolCall.renderer.action.fetchingFromWeb":"Récupération sur le Web...","toolCall.renderer.action.findingFiles":"Recherche de fichiers...","toolCall.renderer.action.searchingContent":"Recherche dans le contenu...","toolCall.renderer.action.listingDirectory":"Liste du répertoire...","toolCall.renderer.bash.title.timeout":"Délai : {timeout}","toolCall.renderer.read.detail.offset":"Décalage : {offset}","toolCall.renderer.read.detail.limit":"Limite : {limit}","toolCall.renderer.todo.empty":"Aucun élément de plan pour l'instant.","toolCall.renderer.todo.status.pending":"En attente","toolCall.renderer.todo.status.inProgress":"En cours","toolCall.renderer.todo.status.completed":"Terminé","toolCall.renderer.todo.status.cancelled":"Annulé","toolCall.renderer.todo.title.plan":"Plan","toolCall.renderer.todo.title.creating":"Création du plan","toolCall.renderer.todo.title.completing":"Finalisation du plan","toolCall.renderer.todo.title.updating":"Mise à jour du plan","toolCall.permission.status.required":"Autorisation requise","toolCall.permission.status.queued":"Autorisation en file d'attente","toolCall.permission.requestedDiff.label":"Diff demandé","toolCall.permission.requestedDiff.withPath":"Diff demandé · {path}","toolCall.permission.queuedText":"En attente des réponses d'autorisations précédentes.","toolCall.permission.actions.allowOnce":"Autoriser une fois","toolCall.permission.actions.alwaysAllow":"Toujours autoriser","toolCall.permission.actions.deny":"Refuser","toolCall.permission.shortcuts.allowOnce":"Autoriser une fois","toolCall.permission.shortcuts.alwaysAllow":"Toujours autoriser","toolCall.permission.shortcuts.deny":"Refuser","toolCall.permission.errors.unableToUpdate":"Impossible de mettre à jour l'autorisation","permissionApproval.title":"Demandes","permissionApproval.empty":"Aucune demande en attente.","permissionApproval.kind.permission":"Autorisation","permissionApproval.kind.question":"Question","permissionApproval.questionCount.one":"{count} question","permissionApproval.questionCount.other":"{count} questions","permissionApproval.status.active":"Active","permissionApproval.actions.closeAriaLabel":"Fermer","permissionApproval.actions.goToSession":"Aller à la session","permissionApproval.actions.loadingSession":"Chargement…","permissionApproval.actions.loadSession":"Charger la session","permissionApproval.actions.allowOnce":"Autoriser une fois","permissionApproval.actions.alwaysAllow":"Toujours autoriser","permissionApproval.actions.deny":"Refuser","permissionApproval.fallbackHint":"Chargez la session pour plus d'informations.","permissionApproval.errors.unableToUpdatePermission":"Impossible de mettre à jour l'autorisation","toolCall.question.status.required":"Question requise","toolCall.question.status.queued":"Question en file d'attente","toolCall.question.status.questions":"Questions","toolCall.question.action.awaitingAnswers":"En attente des réponses...","toolCall.question.title.questions":"Questions","toolCall.question.title.askingQuestions":"Questions en cours","toolCall.question.type.one":"Question","toolCall.question.type.other":"Questions","toolCall.question.number":"Q{number}:","toolCall.question.multiple":"Multiple","toolCall.question.custom.title":"Saisir une réponse personnalisée","toolCall.question.custom.label":"Réponse personnalisée","toolCall.question.custom.placeholder":"Saisissez votre propre réponse","toolCall.question.actions.submit":"Envoyer","toolCall.question.actions.dismiss":"Ignorer","toolCall.question.shortcuts.submit":"Envoyer","toolCall.question.shortcuts.dismiss":"Ignorer","toolCall.question.queuedText":"En attente des réponses précédentes.","toolCall.question.validation.answerAll":"Veuillez répondre à toutes les questions avant d'envoyer.","toolCall.question.errors.unableToReply":"Impossible de répondre","toolCall.question.errors.unableToDismiss":"Impossible d'ignorer","toolCall.task.action.delegating":"Délégation...","toolCall.task.sections.prompt":"Prompt","toolCall.task.sections.steps":"Étapes","toolCall.task.sections.output":"Sortie","toolCall.task.steps.count":"{count} étapes","toolCall.task.meta.agentModel":"Agent : {agent} • Modèle : {model}","toolCall.task.meta.agent":"Agent : {agent}","toolCall.task.meta.model":"Modèle : {model}","toolCall.status.pending":"En attente","toolCall.status.running":"En cours","toolCall.status.completed":"Terminé","toolCall.status.error":"Erreur","toolCall.status.unknown":"Inconnu","toolCall.applyPatch.action.preparing":"Préparation de apply_patch...","toolCall.applyPatch.title.withFileCount.one":"{tool} ({count} fichier)","toolCall.applyPatch.title.withFileCount.other":"{tool} ({count} fichiers)","toolCall.applyPatch.fileFallback":"Fichier {number}"},A=e(r,s,l,h,t,o,n,a,c,p,u,f,d,g,m,i);export{A as frMessages};
|
|
1
|
+
import{m as e}from"./index-DD4SyatU.js";import"./git-diff-vendor-CSgooKT_.js";import"./fast-diff-vendor-DgdwVvTQ.js";import"./highlight-vendor-8FKMu9os.js";import"./monaco-viewer-CNzvK57I.js";const s={"advancedSettings.title":"Paramètres avancés","advancedSettings.environmentVariables.title":"Variables d'environnement","advancedSettings.environmentVariables.subtitle":"Appliquées à chaque démarrage d'une nouvelle instance OpenCode","advancedSettings.actions.close":"Fermer"},t={"app.launchError.title":"Impossible de lancer OpenCode","app.launchError.description":"Nous n'avons pas pu démarrer le binaire OpenCode sélectionné. Consultez la sortie d'erreur ci-dessous ou choisissez un autre binaire dans les paramètres OpenCode.","app.launchError.binaryPathLabel":"Chemin du binaire","app.launchError.errorOutputLabel":"Sortie d'erreur","app.launchError.openAdvancedSettings":"Ouvrir les paramètres OpenCode","app.launchError.close":"Fermer","app.launchError.closeTitle":"Fermer (Esc)","app.launchError.fallbackMessage":"Échec du lancement de l'espace de travail","app.stopInstance.confirmMessage":"Arrêter l'instance OpenCode ? Cela arrêtera le serveur.","app.stopInstance.title":"Arrêter l'instance","app.stopInstance.confirmLabel":"Arrêter","app.stopInstance.cancelLabel":"Laisser tourner","emptyState.logoAlt":"Logo CodeNomad","emptyState.brandTitle":"CodeNomad","emptyState.tagline":"Sélectionnez un dossier pour commencer à coder avec l'IA","emptyState.actions.selectFolder":"Sélectionner un dossier","emptyState.actions.selecting":"Sélection...","emptyState.keyboardShortcut":"Raccourci clavier : {shortcut}","emptyState.examples":"Exemples : {example}","emptyState.multipleInstances":"Vous pouvez avoir plusieurs instances du même dossier","releases.upgradeRequired.title":"Mise à jour requise","releases.upgradeRequired.message.withVersion":"Mettez à jour vers CodeNomad {version} pour utiliser la dernière UI.","releases.upgradeRequired.message.noVersion":"Mettez à jour CodeNomad pour utiliser la dernière UI.","releases.upgradeRequired.action.getUpdate":"Obtenir la mise à jour","releases.uiUpdated.title":"UI mise à jour","releases.uiUpdated.message":"L'UI est maintenant mise à jour vers {version}.","releases.devUpdateAvailable.title":"Build dev disponible","releases.devUpdateAvailable.message":"Un nouveau build dev est disponible : {version}.","releases.devUpdateAvailable.action":"Voir la release"},i={"commandPalette.title":"Palette de commandes","commandPalette.description":"Rechercher et exécuter des commandes","commandPalette.searchPlaceholder":"Tapez une commande ou recherchez...","commandPalette.empty":'Aucune commande trouvée pour "{query}"',"commandPalette.category.customCommands":"Commandes personnalisées","commandPalette.category.instance":"Instance","commandPalette.category.session":"Session","commandPalette.category.agentModel":"Agent et modèle","commandPalette.category.inputFocus":"Saisie et focus","commandPalette.category.system":"Système","commandPalette.category.other":"Autre","commands.newInstance.label":"Nouvelle instance","commands.newInstance.description":"Ouvrir le sélecteur de dossiers pour créer une nouvelle instance","commands.newInstance.keywords":"dossier, projet, espace de travail","commands.closeInstance.label":"Fermer l'onglet","commands.closeInstance.description":"Fermer l'onglet de premier niveau actuel","commands.closeInstance.keywords":"arrêter, quitter, fermer, onglet","commands.nextInstance.label":"Onglet suivant","commands.nextInstance.description":"Passer à l'onglet de premier niveau suivant","commands.nextInstance.keywords":"changer, naviguer, suivant, onglet","commands.previousInstance.label":"Onglet précédent","commands.previousInstance.description":"Passer à l'onglet de premier niveau précédent","commands.previousInstance.keywords":"changer, naviguer, précédent, onglet","commands.newSession.label":"Nouvelle session","commands.newSession.description":"Créer une nouvelle session parente","commands.newSession.keywords":"créer, démarrer","commands.closeSession.label":"Fermer la session","commands.closeSession.description":"Fermer la session parente actuelle","commands.closeSession.keywords":"fermer, arrêter","commands.scrubSessions.label":"Nettoyer les sessions","commands.scrubSessions.description":"Supprimer les sessions vides, les sessions de sous-agent ayant terminé leur tâche principale, ainsi que les sessions forkées inutiles.","commands.scrubSessions.keywords":"nettoyage, vide, sessions, supprimer, effacer","commands.instanceInfo.label":"Infos de l'instance","commands.instanceInfo.description":"Ouvrir la vue d'ensemble de l'instance pour les journaux et le statut","commands.instanceInfo.keywords":"infos, journaux, console, sortie, logs","commands.nextSession.label":"Session suivante","commands.nextSession.description":"Passer à l'onglet de session suivant","commands.nextSession.keywords":"changer, naviguer, suivant","commands.previousSession.label":"Session précédente","commands.previousSession.description":"Passer à l'onglet de session précédent","commands.previousSession.keywords":"changer, naviguer, précédent","commands.compactSession.label":"Compacter la session","commands.compactSession.description":"Résumer et compacter la session actuelle","commands.compactSession.keywords":"résumer, compresser, compact","commands.compactSession.errorFallback":"Impossible de compacter la session","commands.compactSession.alert.title":"Échec du compactage","commands.compactSession.alert.message":"Échec du compactage : {message}","commands.undoLastMessage.label":"Annuler le dernier message","commands.undoLastMessage.description":"Revenir sur le dernier message","commands.undoLastMessage.keywords":"revenir, annuler","commands.undoLastMessage.none.title":"Aucune action à annuler","commands.undoLastMessage.none.message":"Rien à annuler","commands.undoLastMessage.failed.title":"Échec de l'annulation","commands.undoLastMessage.failed.message":"Impossible de revenir au message","commands.openModelSelector.label":"Ouvrir le sélecteur de modèle","commands.openModelSelector.description":"Choisir un autre modèle","commands.openModelSelector.keywords":"modèle, llm, ia, ai","commands.selectModelVariant.label":"Sélectionner la variante du modèle","commands.selectModelVariant.description":"Choisir un effort de réflexion pour le modèle actuel","commands.selectModelVariant.keywords":"variante, réflexion, raisonnement, effort","commands.openAgentSelector.label":"Ouvrir le sélecteur d'agent","commands.openAgentSelector.description":"Choisir un autre agent","commands.openAgentSelector.keywords":"agent, mode","commands.clearInput.label":"Effacer la saisie","commands.clearInput.description":"Effacer la zone de texte du prompt","commands.clearInput.keywords":"effacer, réinitialiser, prompt","commands.promptSubmitShortcut.label.default":"Entree: Nouvelle ligne, Cmd/Ctrl+Entree: Envoyer le prompt","commands.promptSubmitShortcut.label.swapped":"Entree: Envoyer le prompt, Cmd/Ctrl+Entree: Nouvelle ligne","commands.promptSubmitShortcut.description":"Echanger le comportement de Entree et Cmd/Ctrl+Entree dans la saisie du prompt","commands.promptSubmitShortcut.keywords":"entree, envoyer, nouvelle ligne, raccourci, cmd, ctrl, prompt","commands.thinkingBlocks.label.show":"Afficher la réflexion","commands.thinkingBlocks.label.hide":"Masquer la réflexion","commands.thinkingBlocks.description":"Afficher ou masquer les sections de réflexion de l'IA","commands.thinkingBlocks.keywords":"réflexion, raisonnement, basculer, afficher, masquer","commands.timelineToolCalls.label.show":"Afficher les appels d'outil dans la timeline","commands.timelineToolCalls.label.hide":"Masquer les appels d'outil dans la timeline","commands.timelineToolCalls.description":"Afficher/masquer les entrées d'appel d'outil dans la timeline des messages","commands.timelineToolCalls.keywords":"timeline, outil, basculer","commands.keyboardShortcutHints.label.show":"Afficher les raccourcis clavier","commands.keyboardShortcutHints.label.hide":"Masquer les raccourcis clavier","commands.keyboardShortcutHints.description":"Afficher ou masquer les indices de raccourcis clavier dans l'interface","commands.keyboardShortcutHints.description.disabledWeb":"Désactivé en WebUI (les raccourcis sont toujours masqués)","commands.keyboardShortcutHints.keywords":"raccourci, raccourcis, clavier, keybind, indices","commands.common.expanded":"Développé","commands.common.collapsed":"Réduit","commands.common.visible":"Visible","commands.common.hidden":"Masqué","commands.common.enabled":"Activé","commands.common.disabled":"Désactivé","commands.thinkingBlocksDefault.label":"Vue de la réflexion: {state}","commands.thinkingBlocksDefault.description":"Réduire / Développer les sections de réflexion de l'IA lorsqu'elles sont affichées","commands.thinkingBlocksDefault.keywords":"réflexion, raisonnement, développer, réduire, défaut","commands.diffViewSplit.label":"Utiliser la vue diff côte à côte","commands.diffViewSplit.description":"Afficher les diffs d'appels d'outil côte à côte","commands.diffViewSplit.keywords":"diff, côte à côte, vue","commands.diffViewUnified.label":"Utiliser la vue diff unifiée","commands.diffViewUnified.description":"Afficher les diffs d'appels d'outil en ligne","commands.diffViewUnified.keywords":"diff, unifiée, vue","commands.toolOutputsDefault.label":"Sorties d'outil par défaut · {state}","commands.toolOutputsDefault.description":"Choisir l'ouverture par défaut des sorties d'outil","commands.toolOutputsDefault.keywords":"outil, sortie, développer, réduire","commands.diagnosticsDefault.label":"Diagnostics par défaut · {state}","commands.diagnosticsDefault.description":"Choisir l'ouverture par défaut de la sortie des diagnostics","commands.diagnosticsDefault.keywords":"diagnostics, développer, réduire","commands.toolInputsVisibility.label":"Visibilité des entrées d'outil · {state}","commands.toolInputsVisibility.description":"Définir la visibilité par défaut des arguments d'entrée des appels d'outil","commands.toolInputsVisibility.keywords":"outil, entrées, arguments, visibilité, masquer, afficher, développer, réduire","commands.tokenUsageDisplay.label":"Affichage de l'usage des tokens · {state}","commands.tokenUsageDisplay.description":"Afficher ou masquer les stats de tokens et de coût pour les messages de l'assistant","commands.tokenUsageDisplay.keywords":"token, usage, coût, stats","commands.autoCleanupBlankSessions.label":"Nettoyage auto des sessions vides · {state}","commands.autoCleanupBlankSessions.description":"Nettoyer automatiquement les sessions vides lors de la création de nouvelles","commands.autoCleanupBlankSessions.keywords":"auto, nettoyage, vide, sessions, basculer","commands.showHelp.label":"Afficher l'aide","commands.showHelp.description":"Afficher les raccourcis clavier et l'aide","commands.showHelp.keywords":"raccourcis, aide","commands.custom.argumentsPrompt.message":"Arguments pour /{name}","commands.custom.argumentsPrompt.title":"Commande personnalisée","commands.custom.argumentsPrompt.inputLabel":"Arguments","commands.custom.argumentsPrompt.inputPlaceholder":"ex. foo bar","commands.custom.argumentsPrompt.confirmLabel":"Exécuter","commands.custom.argumentsPrompt.cancelLabel":"Annuler","commands.custom.argumentsPrompt.openFailed.message":"Impossible d'ouvrir l'invite d'arguments.","commands.custom.argumentsPrompt.openFailed.title":"Arguments de commande","commands.custom.entries.descriptionFallback":"Commande personnalisée","commands.custom.sessionRequired.message":"Sélectionnez une session avant d'exécuter une commande personnalisée.","commands.custom.sessionRequired.title":"Session requise","commands.custom.runFailed.message":"Impossible d'exécuter la commande personnalisée. Consultez la console pour les détails.","commands.custom.runFailed.title":"Échec de la commande","unifiedPicker.loading.searching":"Recherche...","unifiedPicker.loading.loadingWorkspace":"Chargement de l'espace de travail...","unifiedPicker.title.command":"Sélectionner une commande","unifiedPicker.title.mention":"Sélectionner un agent ou un fichier","unifiedPicker.empty":"Aucun résultat","unifiedPicker.sections.commands":"COMMANDES","unifiedPicker.sections.agents":"AGENTS","unifiedPicker.sections.files":"FICHIERS","unifiedPicker.badge.subagent":"sous-agent","unifiedPicker.footer.navigate":"naviguer","unifiedPicker.footer.select":"sélectionner","unifiedPicker.footer.close":"fermer"},o={"alertDialog.fallbackTitle.info":"Attention","alertDialog.fallbackTitle.warning":"Veuillez vérifier","alertDialog.fallbackTitle.error":"Un problème est survenu","alertDialog.actions.confirm":"Confirmer","alertDialog.actions.run":"Exécuter","alertDialog.actions.ok":"OK","alertDialog.actions.cancel":"Annuler","alertDialog.prompt.inputLabel":"Saisie","backgroundProcessOutputDialog.title":"Sortie en arrière-plan","backgroundProcessOutputDialog.actions.close":"Fermer","backgroundProcessOutputDialog.loading":"Chargement de la sortie...","backgroundProcessOutputDialog.truncatedNotice":"Sortie tronquée pour l'affichage.","backgroundProcessOutputDialog.loadErrorFallback":"Impossible de charger la sortie."},n={"directoryBrowser.defaultDescription":"Parcourez les dossiers sous la racine d'espace de travail configurée.","directoryBrowser.close":"Fermer","directoryBrowser.currentFolder":"Sélectionner un dossier ou saisir un chemin","directoryBrowser.currentFolder.inputAriaLabel":"Chemin du dossier","directoryBrowser.currentFolder.inputPlaceholder":"Saisissez ou collez un chemin de dossier","directoryBrowser.openCurrent":"Ouvrir","directoryBrowser.selectCurrent":"Sélectionner le dossier actuel","directoryBrowser.newFolder":"Nouveau dossier","directoryBrowser.creating":"Création…","directoryBrowser.loadingFolders":"Chargement des dossiers…","directoryBrowser.noFolders":"Aucun dossier disponible.","directoryBrowser.upOneLevel":"Remonter d'un niveau","directoryBrowser.select":"Sélectionner","directoryBrowser.load.errorFallback":"Impossible de charger le système de fichiers","directoryBrowser.createFolder.promptMessage":"Créer un nouveau dossier dans le répertoire courant.","directoryBrowser.createFolder.title":"Nouveau dossier","directoryBrowser.createFolder.inputLabel":"Nom du dossier","directoryBrowser.createFolder.inputPlaceholder":"ex. mon-nouveau-projet","directoryBrowser.createFolder.confirmLabel":"Créer","directoryBrowser.createFolder.cancelLabel":"Annuler","directoryBrowser.createFolder.invalidNameMessage":"Veuillez saisir un seul nom de dossier.","directoryBrowser.createFolder.invalidNameDetail":"Les noms de dossier ne peuvent pas contenir de barres obliques, '..' ou '~'.","directoryBrowser.createFolder.errorFallback":"Impossible de créer le dossier","filesystemBrowser.descriptionFallback":"Recherchez un chemin sous la racine d'espace de travail configurée.","filesystemBrowser.rootLabel":"Racine : {root}","filesystemBrowser.actions.close":"Fermer","filesystemBrowser.actions.retry":"Réessayer","filesystemBrowser.actions.select":"Sélectionner","filesystemBrowser.filterLabel":"Filtrer","filesystemBrowser.search.placeholder.directories":"Rechercher des dossiers","filesystemBrowser.search.placeholder.files":"Rechercher des fichiers","filesystemBrowser.currentFolder.label":"Dossier actuel","filesystemBrowser.currentFolder.selectCurrent":"Sélectionner le dossier actuel","filesystemBrowser.loading.filesystem":"système de fichiers","filesystemBrowser.loading.workspaceRoot":"racine de l'espace de travail","filesystemBrowser.loading.loadingWithPath":"Chargement de {path}…","filesystemBrowser.empty.noEntries":"Aucune entrée trouvée.","filesystemBrowser.navigation.upOneLevel":"Remonter d'un niveau","filesystemBrowser.hints.navigate":"Naviguer","filesystemBrowser.hints.select":"Sélectionner","filesystemBrowser.hints.close":"Fermer","filesystemBrowser.errors.loadFilesystemFallback":"Impossible de charger le système de fichiers","filesystemBrowser.errors.openDirectoryFallback":"Impossible d'ouvrir le répertoire"},r={"folderSelection.language.ariaLabel":"Langue","folderSelection.logoAlt":"Logo CodeNomad","folderSelection.tagline":"Sélectionnez un dossier pour commencer à coder avec l'IA","folderSelection.links.github":"GitHub de CodeNomad","folderSelection.links.githubStars":"Étoiles GitHub de CodeNomad","folderSelection.links.discord":"Discord de CodeNomad","folderSelection.empty.title":"Aucun dossier récent","folderSelection.empty.description":"Parcourez un dossier pour commencer","folderSelection.recent.title":"Dossiers récents","folderSelection.recent.subtitle.one":"{count} dossier disponible","folderSelection.recent.subtitle.other":"{count} dossiers disponibles","folderSelection.recent.remove":"Retirer des récents","folderSelection.browse.title":"Parcourir un dossier","folderSelection.browse.subtitle":"Sélectionnez n'importe quel dossier sur votre ordinateur","folderSelection.browse.button":"Parcourir les dossiers","folderSelection.browse.buttonOpening":"Ouverture...","folderSelection.actions.title":"Ouvrir un dossier ou se connecter à un serveur","folderSelection.actions.subtitle":"Ouvrez un dossier local ou connectez-vous à un serveur CodeNomad","folderSelection.actions.connectButton":"Se connecter au serveur CodeNomad","folderSelection.advancedSettings":"Paramètres avancés","folderSelection.opencode":"OpenCode","folderSelection.hints.navigate":"Naviguer","folderSelection.hints.select":"Sélectionner","folderSelection.hints.remove":"Retirer","folderSelection.hints.browse":"Parcourir","folderSelection.loading.title":"Démarrage de l'instance...","folderSelection.loading.subtitle":"Patientez pendant que nous préparons votre espace de travail.","folderSelection.drop.title":"Déposez un dossier pour l'ouvrir","folderSelection.drop.subtitle":"Démarrez une nouvelle instance dans le dossier déposé.","folderSelection.drop.invalidTitle":"Impossible d'ouvrir l'élément déposé","folderSelection.drop.invalidMessage":"Déposez un dossier pour démarrer une nouvelle instance.","folderSelection.dialog.title":"Sélectionner l'espace de travail","folderSelection.dialog.description":"Sélectionnez un espace de travail pour commencer à coder.","folderSelection.tabs.local":"Dossiers locaux","folderSelection.tabs.servers":"Serveurs","folderSelection.servers.title":"Serveurs enregistrés","folderSelection.servers.subtitle":"Ouvrez un serveur CodeNomad distant enregistré dans une nouvelle fenêtre","folderSelection.servers.count":"{count} serveurs","folderSelection.servers.empty.title":"Aucun serveur enregistré","folderSelection.servers.empty.description":"Ajoutez un serveur distant pour vous reconnecter rapidement depuis cet appareil","folderSelection.servers.connectTitle":"Se connecter à un serveur","folderSelection.servers.connectSubtitle":"Enregistrez un serveur CodeNomad distant et ouvrez-le dans une nouvelle fenêtre","folderSelection.servers.connectButton":"Se connecter à un serveur","folderSelection.servers.remove":"Supprimer le serveur enregistré","folderSelection.servers.skipTls":"TLS auto-signé","folderSelection.servers.errorTitle":"Échec de la connexion distante","folderSelection.servers.dialog.title":"Se connecter à un serveur","folderSelection.servers.dialog.description":"Ajoutez un serveur CodeNomad distant et ouvrez-le immédiatement si vous le souhaitez.","folderSelection.servers.dialog.name":"Nom du serveur","folderSelection.servers.dialog.namePlaceholder":"Serveur de production","folderSelection.servers.dialog.url":"URL du serveur","folderSelection.servers.dialog.urlPlaceholder":"https://server.example.com","folderSelection.servers.dialog.skipTls":"Ignorer la vérification TLS pour les certificats auto-signés.","folderSelection.servers.dialog.cancel":"Annuler","folderSelection.servers.dialog.save":"Enregistrer","folderSelection.servers.dialog.connect":"Se connecter","folderSelection.servers.dialog.connecting":"Connexion...","folderSelection.servers.dialog.errorRequired":"Le nom du serveur et l'URL sont requis.","folderSelection.servers.dialog.errorConnect":"Impossible de se connecter au serveur distant.","folderSelection.servers.certificateInstall.title":"Installer le certificat local","folderSelection.servers.certificateInstall.confirmMessage":"CodeNomad doit installer un certificat local pour ouvrir des fenetres distantes HTTPS auto-signees. Ce certificat est utilise uniquement pour le trafic du proxy local de bureau sur votre machine. Votre systeme d'exploitation peut afficher une seconde invite de certificat apres cela.","folderSelection.servers.certificateInstall.confirmLabel":"Continuer","folderSelection.servers.certificateInstall.cancelLabel":"Annuler","folderSelection.servers.certificateInstall.cancelled":"CodeNomad a besoin que le certificat local soit approuve avant de pouvoir ouvrir des fenetres distantes HTTPS auto-signees.","folderSelection.sidecars.button":"Open SideCar"},a={"instanceTabs.new.title":"Nouvelle instance (Cmd/Ctrl+N)","instanceTabs.new.ariaLabel":"Nouvelle instance","instanceTabs.remote.title":"Connexion à distance","instanceTabs.remote.ariaLabel":"Connexion à distance","instanceInfo.title":"Informations de l'instance","instanceInfo.labels.folder":"Dossier","instanceInfo.labels.project":"Projet","instanceInfo.labels.versionControl":"Contrôle de version","instanceInfo.labels.opencodeVersion":"Version d'OpenCode","instanceInfo.labels.binaryPath":"Chemin du binaire","instanceInfo.labels.environmentVariables":"Variables d'environnement ({count})","instanceInfo.loading":"Chargement...","instanceInfo.server.title":"Serveur","instanceInfo.server.port":"Port :","instanceInfo.server.pid":"PID :","instanceInfo.server.status":"Statut :","instanceTab.status.permission":"En attente d'autorisation","instanceTab.status.compacting":"Compactage","instanceTab.status.working":"En cours","instanceTab.status.idle":"Inactif","instanceTab.status.ariaLabel":"Statut de l'instance : {status}","instanceTab.actions.close.ariaLabel":"Fermer l'instance","instanceShell.leftPanel.sessionsTitle":"Sessions","instanceShell.leftPanel.instanceInfo":"Infos de l'instance","instanceShell.leftDrawer.pin":"Épingler le tiroir gauche","instanceShell.leftDrawer.unpin":"Désépingler le tiroir gauche","instanceShell.leftDrawer.toggle.pinned":"Tiroir gauche épinglé","instanceShell.leftDrawer.toggle.open":"Ouvrir le tiroir gauche","instanceShell.leftDrawer.toggle.close":"Fermer le tiroir gauche","instanceShell.rightDrawer.pin":"Épingler le tiroir droit","instanceShell.rightDrawer.unpin":"Désépingler le tiroir droit","instanceShell.rightDrawer.toggle.pinned":"Tiroir droit épinglé","instanceShell.rightDrawer.toggle.open":"Ouvrir le tiroir droit","instanceShell.rightDrawer.toggle.close":"Fermer le tiroir droit","instanceShell.fullscreen.enter":"Plein écran","instanceShell.fullscreen.exit":"Quitter le plein écran","instanceShell.metrics.usedLabel":"Utilisé","instanceShell.metrics.availableLabel":"Dispo","instanceShell.commandPalette.openAriaLabel":"Ouvrir la palette de commandes","instanceShell.commandPalette.button":"Palette de commandes","instanceShell.chatSearch.openAriaLabel":"Rechercher dans l'historique du chat","instanceShell.connection.ariaLabel":"Connexion {status}","instanceShell.connection.connected":"Connecté","instanceShell.connection.connecting":"Connexion...","instanceShell.connection.disconnected":"Déconnecté","instanceShell.connection.unknown":"Inconnu","instanceWelcome.shortcuts.newSession":"Nouvelle session","instanceWelcome.empty.title":"Aucune session précédente","instanceWelcome.empty.description":"Créez une nouvelle session ci-dessous pour commencer","instanceWelcome.loading.title":"Chargement des sessions","instanceWelcome.loading.description":"Récupération de vos sessions précédentes...","instanceWelcome.resume.title":"Reprendre une session","instanceWelcome.resume.subtitle.one":"{count} session disponible","instanceWelcome.resume.subtitle.other":"{count} sessions disponibles","instanceWelcome.session.untitled":"Session sans titre","instanceWelcome.new.title":"Démarrer une nouvelle session","instanceWelcome.new.subtitle":"Nous réutiliserons automatiquement votre dernier agent/modèle","instanceWelcome.new.createButton":"Créer la session","instanceWelcome.overlay.close":"Fermer","instanceWelcome.actions.viewInstanceInfo":"Voir les infos de l'instance","instanceWelcome.actions.renameTitle":"Renommer la session","instanceWelcome.actions.deleteTitle":"Supprimer la session","instanceWelcome.hints.navigate":"Naviguer","instanceWelcome.hints.jump":"Sauter","instanceWelcome.hints.firstLast":"Prem./Dern.","instanceWelcome.hints.resume":"Reprendre","instanceWelcome.hints.delete":"Supprimer","instanceWelcome.toasts.renameError":"Impossible de renommer la session","instanceDisconnected.title":"Instance déconnectée","instanceDisconnected.folderFallback":"cet espace de travail","instanceDisconnected.reasonFallback":"Le serveur ne répond plus","instanceDisconnected.description":"{folder} n'est plus accessible. Fermez l'onglet pour continuer à travailler.","instanceDisconnected.details.title":"Détails","instanceDisconnected.details.folderLabel":"Dossier :","instanceDisconnected.actions.closeInstance":"Fermer l'instance","instanceShell.empty.title":"Aucune session sélectionnée","instanceShell.empty.description":"Sélectionnez une session pour voir les messages","instanceShell.rightPanel.title":"Panneau d'état","instanceShell.rightPanel.tabs.changes":"Modifications","instanceShell.rightPanel.tabs.gitChanges":"Changements Git","instanceShell.rightPanel.tabs.files":"Fichiers","instanceShell.rightPanel.tabs.status":"Statut","instanceShell.rightPanel.tabs.ariaLabel":"Onglets du panneau droit","instanceShell.rightPanel.actions.refresh":"Actualiser","instanceShell.rightPanel.actions.save":"Enregistrer (Ctrl+S)","instanceShell.rightPanel.actions.saveConfirm.message":'Voulez-vous enregistrer les modifications de "{path}" avant de changer ?',"instanceShell.rightPanel.actions.saveConfirm.confirmLabel":"Enregistrer","instanceShell.rightPanel.actions.saveConfirm.cancelLabel":"Annuler les modifications","instanceShell.rightPanel.actions.conflict.message":"Le fichier a été modifié par l'agent. Écraser les modifications de l'agent ?","instanceShell.rightPanel.actions.conflict.confirmLabel":"Écraser","instanceShell.rightPanel.actions.conflict.cancelLabel":"Annuler","instanceShell.rightPanel.actions.refreshDirty.message":"Le fichier a des modifications non enregistrées. Actualiser supprimera vos modifications. Continuer ?","instanceShell.rightPanel.actions.refreshDirty.confirmLabel":"Actualiser","instanceShell.rightPanel.actions.refreshDirty.cancelLabel":"Annuler","instanceShell.rightPanel.toast.saveSuccess":"Fichier enregistré avec succès","instanceShell.rightPanel.toast.saveError":"Échec de l'enregistrement du fichier","instanceShell.rightPanel.sections.yoloMode":"Mode yolo","instanceShell.rightPanel.sections.yoloMode.tooltip":"Approuve automatiquement les demandes d'autorisation pour la session actuelle. A utiliser seulement si vous faites confiance aux outils executes.","instanceShell.rightPanel.sections.sessionChanges":"Changements de session","instanceShell.rightPanel.sections.sessionChanges.tooltip":"Fichiers modifiés dans la session actuelle. Affiche les ajouts et suppressions pour chaque fichier.","instanceShell.rightPanel.sections.plan":"Plan","instanceShell.rightPanel.sections.plan.tooltip":"Feuille de route de l'agent pour cette session. Suit les tâches et leur statut d'achèvement.","instanceShell.rightPanel.sections.backgroundProcesses":"Shells en arrière-plan","instanceShell.rightPanel.sections.backgroundProcesses.tooltip":"Processus longs démarrés par l'agent. Vous pouvez surveiller leur sortie, les arrêter ou les terminer.","instanceShell.rightPanel.sections.mcp":"Serveurs MCP","instanceShell.rightPanel.sections.mcp.tooltip":"Serveurs du protocole Model Context Protocol qui étendent les capacités de l'agent avec des outils externes.","instanceShell.rightPanel.sections.lsp":"Serveurs LSP","instanceShell.rightPanel.sections.lsp.tooltip":"Serveurs du protocole Language Server Protocol fournissant l'intelligence de code et les diagnostics.","instanceShell.rightPanel.sections.plugins":"Plugins","instanceShell.rightPanel.sections.plugins.tooltip":"Plugins qui personnalisent le comportement de l'UI et du serveur, ajoutant des fonctionnalités au-delà de MCP et LSP.","instanceShell.sessionChanges.noSessionSelected":"Sélectionnez une session pour voir les changements.","instanceShell.sessionChanges.loading":"Récupération des changements...","instanceShell.sessionChanges.empty":"Aucun changement pour l'instant.","instanceShell.sessionChanges.filesChanged":"{count} fichiers modifiés","instanceShell.sessionChanges.actions.show":"Afficher les changements","instanceShell.gitChanges.loading":"Chargement des changements Git...","instanceShell.gitChanges.empty":"Aucun changement Git pour l'instant.","instanceShell.gitChanges.deleted":"Supprimé","instanceShell.gitChanges.binaryViewer":"Impossible d'afficher un fichier binaire","instanceShell.gitChanges.sections.staged":"Changements indexés","instanceShell.gitChanges.sections.unstaged":"Changements","instanceShell.gitChanges.actions.insertContext":"Ajouter au prompt","instanceShell.gitChanges.actions.stage":"Indexer le fichier","instanceShell.gitChanges.actions.unstage":"Retirer de l'index","instanceShell.gitChanges.commit.placeholder":"Saisissez le message du commit","instanceShell.gitChanges.commit.submit":"Valider","instanceShell.gitChanges.commit.submitting":"Validation...","instanceShell.gitChanges.commit.success":"Commit créé avec succès","instanceShell.gitChanges.commit.error":"Impossible de créer le commit","instanceShell.filesShell.fileListTitle":"Liste des fichiers","instanceShell.filesShell.mobileSelectorLabel":"Sélectionner un fichier","instanceShell.filesShell.mobileSelectorEmpty":"Sélectionnez un fichier","instanceShell.filesShell.viewerTitle":"Visionneuse de changements","instanceShell.filesShell.viewerPlaceholder":"Le rendu détaillé sera ajouté à l'étape suivante.","instanceShell.filesShell.viewerEmpty":"Aucun fichier sélectionné.","instanceShell.filesShell.listEmpty":"Aucun fichier dans ce dossier.","instanceShell.filesShell.search.placeholder":"Filtrer les fichiers de ce dossier","instanceShell.filesShell.search.ariaLabel":"Filtrer les fichiers de ce dossier","instanceShell.filesShell.search.empty":"Aucun fichier correspondant.","instanceShell.filesShell.actions.copyPath":"Copier le chemin","instanceShell.filesShell.toast.copyPathSuccess":"Chemin copié","instanceShell.filesShell.toast.copyPathError":"Impossible de copier le chemin","instanceShell.filesShell.previewMarkdown":"Aperçu Markdown","instanceShell.filesShell.showSource":"Afficher la source","instanceShell.filesShell.enableWordWrap":"Activer le retour à la ligne","instanceShell.filesShell.disableWordWrap":"Désactiver le retour à la ligne","instanceShell.plan.noSessionSelected":"Sélectionnez une session pour voir le plan.","instanceShell.plan.empty":"Aucun plan pour l'instant.","instanceShell.yoloMode.noSessionSelected":"Selectionnez une session pour configurer le mode yolo.","instanceShell.yoloMode.title":"Mode yolo","instanceShell.yoloMode.description":"Approuve automatiquement les demandes d'autorisation pour cette session. Desactive par defaut.","instanceShell.yoloMode.badge":"Mode yolo","instanceShell.yoloMode.badgeAriaLabel":"Mode yolo active","instanceShell.backgroundProcesses.empty":"Aucun processus en arrière-plan.","instanceShell.backgroundProcesses.status":"Statut : {status}","instanceShell.backgroundProcesses.output":"Sortie : {sizeKb}KB","instanceShell.backgroundProcesses.notify.enabled":"Notification de fin activee","instanceShell.backgroundProcesses.notify.disabled":"Notification de fin desactivee","instanceShell.backgroundProcesses.actions.output":"Sortie","instanceShell.backgroundProcesses.actions.stop":"Arrêter","instanceShell.backgroundProcesses.actions.terminate":"Terminer","instanceShell.worktree.delete.error.title":"Echec de suppression","instanceShell.worktree.delete.error.fallback":"Impossible de supprimer le worktree","instanceShell.worktree.delete.error.causeLabel":"Cause probable :","instanceShell.worktree.delete.error.nextStepLabel":"Etape suivante suggeree :","instanceShell.worktree.delete.error.summary.localChanges":"Git a refuse de supprimer ce worktree car il contient des fichiers modifies ou non suivis.","instanceShell.worktree.delete.error.summary.inUse":"CodeNomad n'a pas pu supprimer ce worktree car quelque chose utilise encore des fichiers dans ce dossier.","instanceShell.worktree.delete.error.summary.notFound":"CodeNomad n'a pas pu supprimer ce worktree car le dossier ou l'enregistrement du worktree est introuvable.","instanceShell.worktree.delete.error.summary.permissionDenied":"CodeNomad n'a pas pu supprimer ce worktree car l'acces au dossier a ete refuse.","instanceShell.worktree.delete.error.summary.unknown":"CodeNomad n'a pas pu supprimer ce worktree.","instanceShell.worktree.delete.error.cause.localChanges":"Modifications locales","instanceShell.worktree.delete.error.cause.inUse":"Un autre processus utilise ce worktree","instanceShell.worktree.delete.error.cause.notFound":"Le dossier ou l'enregistrement du worktree est manquant","instanceShell.worktree.delete.error.cause.permissionDenied":"Permissions du systeme de fichiers insuffisantes","instanceShell.worktree.delete.error.cause.unknown":"Le backend a renvoye une erreur de suppression non classee","instanceShell.worktree.delete.error.nextStep.localChanges":"Activez la suppression forcee si vous voulez jeter les modifications locales, ou nettoyez le worktree puis reessayez.","instanceShell.worktree.delete.error.nextStep.inUse":"Fermez les terminaux, editeurs, observateurs ou processus en arrière-plan qui utilisent ce worktree puis reessayez.","instanceShell.worktree.delete.error.nextStep.notFound":"Rechargez les worktrees puis reessayez. Si cela echoue encore, inspectez le chemin du worktree sur le disque.","instanceShell.worktree.delete.error.nextStep.permissionDenied":"Verifiez les permissions du systeme de fichiers et fermez les applications qui peuvent verrouiller ce dossier, puis reessayez.","instanceShell.worktree.delete.error.nextStep.unknown":"Consultez l'erreur brute ci-dessous pour les details, puis reessayez apres avoir corrige le probleme signale.","instanceShell.worktree.delete.error.copyRaw":"Copier l'erreur","instanceShell.worktree.delete.error.copySanitized":"Copier la version nettoyee","instanceShell.worktree.delete.error.copySuccess":"Erreur de suppression copiee","instanceShell.worktree.delete.error.copySanitizedSuccess":"Erreur de suppression nettoyee copiee","instanceShell.worktree.delete.error.copyFailure":"Impossible de copier l'erreur de suppression","versionPill.appWithVersion":"Appli {version}","versionPill.ui":"UI","versionPill.uiWithVersion":"UI {version}","versionPill.source":" ({source})","opencodeBinarySelector.title":"Binaire OpenCode","opencodeBinarySelector.subtitle":"Choisissez quel exécutable OpenCode doit lancer","opencodeBinarySelector.customPath.placeholder":"Saisissez le chemin vers le binaire opencode…","opencodeBinarySelector.actions.add":"Ajouter","opencodeBinarySelector.actions.browse":"Parcourir le binaire…","opencodeBinarySelector.actions.removeTitle":"Supprimer le binaire","opencodeBinarySelector.badge.systemPath":"Utiliser le binaire depuis le PATH système","opencodeBinarySelector.status.checkingVersions":"Vérification des versions…","opencodeBinarySelector.status.checking":"Vérification…","opencodeBinarySelector.dialog.title":"Sélectionner le binaire OpenCode","opencodeBinarySelector.dialog.description":"Parcourez les fichiers exposés par le serveur CLI.","opencodeBinarySelector.validation.invalidBinary":"Binaire OpenCode invalide","opencodeBinarySelector.validation.alreadyValidating":"Validation déjà en cours","opencodeBinarySelector.display.systemPath":"{name} (PATH système)","opencodeBinarySelector.versionLabel":"v{version}"},l={"loadingScreen.logoAlt":"Logo CodeNomad","loadingScreen.status.issue":"Un problème est survenu","loadingScreen.actions.showAnother":"En afficher un autre","loadingScreen.errors.missingRoot":"Élément racine de chargement introuvable","loadingScreen.phrases.neurons":"Réchauffage des neurones de l'IA…","loadingScreen.phrases.daydreaming":"On convainc l'IA d'arrêter de rêvasser…","loadingScreen.phrases.goggles":"Polissage des lunettes de code de l'IA…","loadingScreen.phrases.reorganizingFiles":"On demande à l'IA d'arrêter de réorganiser vos fichiers…","loadingScreen.phrases.coffee":"On donne un café supplémentaire à l'IA…","loadingScreen.phrases.nodeModules":"On apprend à l'IA à ne pas supprimer node_modules (encore)…","loadingScreen.phrases.actNatural":"On dit à l'IA d'avoir l'air naturel avant votre arrivée…","loadingScreen.phrases.rewritingHistory":"On demande à l'IA d'arrêter de réécrire l'histoire…","loadingScreen.phrases.stretch":"On laisse l'IA s'étirer avant son sprint de code…","loadingScreen.phrases.keyboardControl":"On persuade l'IA de vous rendre le contrôle du clavier…"},c={"logsView.title":"Journaux du serveur","logsView.actions.show":"Afficher les journaux du serveur","logsView.actions.hide":"Masquer les journaux du serveur","logsView.envVars.title":"Variables d'environnement ({count})","logsView.paused.title":"Les journaux du serveur sont en pause","logsView.paused.description":"Activez le streaming pour suivre l'activité de votre serveur OpenCode.","logsView.empty.waiting":"En attente de la sortie du serveur...","logsView.scrollToBottom":"Aller en bas","infoView.logs.title":"Journaux du serveur","infoView.logs.actions.show":"Afficher les journaux du serveur","infoView.logs.actions.hide":"Masquer les journaux du serveur","infoView.logs.paused.title":"Les journaux du serveur sont en pause","infoView.logs.paused.description":"Activez le streaming pour suivre l'activité de votre serveur OpenCode.","infoView.logs.empty.waiting":"En attente de la sortie du serveur...","infoView.logs.scrollToBottom":"Aller en bas","infoView.dispose.actions.dispose":"Réinitialiser l'instance","infoView.dispose.actions.disposing":"Réinitialisation...","infoView.dispose.confirm.title":"Réinitialiser l'instance ?","infoView.dispose.confirm.message":"Cela efface l'état en cache pour ce répertoire et recharge l'instance.","infoView.dispose.confirm.confirmLabel":"Réinitialiser","infoView.dispose.confirm.cancelLabel":"Annuler","infoView.dispose.toast.success":"Instance réinitialisée. Rechargement...","infoView.dispose.toast.error":"Impossible de réinitialiser l'instance."},d={"markdown.codeBlock.copy.label":"Copier","markdown.codeBlock.copy.copied":"Copié !","markdown.codeBlock.copy.failed":"Échec","markdown.copy":"Copier"},u={"messageListHeader.sidebar.openSessionListAriaLabel":"Ouvrir la liste des sessions","messageListHeader.metrics.usedLabel":"Utilisé","messageListHeader.metrics.availableLabel":"Dispo","messageListHeader.commandPalette.ariaLabel":"Ouvrir la palette de commandes","messageListHeader.commandPalette.button":"Palette de commandes","messageListHeader.connection.connected":"Connecté","messageListHeader.connection.connecting":"Connexion...","messageListHeader.connection.disconnected":"Déconnecté","messageSection.empty.logoAlt":"Logo CodeNomad","messageSection.empty.brandTitle":"CodeNomad","messageSection.empty.title":"Démarrer une conversation","messageSection.empty.description":"Saisissez un message ci-dessous ou ouvrez la palette de commandes :","messageSection.empty.tips.commandPalette":"Palette de commandes","messageSection.empty.tips.askAboutCodebase":"Parler de votre codebase","messageSection.empty.tips.attachFilesPrefix":"Joindre des fichiers avec","messageSection.loading.messages":"Chargement des messages...","messageSection.scroll.toFirstAriaLabel":"Aller au premier message","messageSection.scroll.toLatestAriaLabel":"Aller au dernier message","messageSection.scroll.enableHoldAriaLabel":"Activer le maintien pour les longues réponses de l'assistant","messageSection.scroll.disableHoldAriaLabel":"Désactiver le maintien pour les longues réponses de l'assistant","messageSection.quote.addAsQuote":"Ajouter en citation","messageSection.quote.addAsCode":"Ajouter en code","messageSection.quote.copy":"Copier","messageSection.quote.copied":"Copié !","messageSection.quote.copyFailed":"Impossible de copier","messageSection.search.ariaLabel":"Rechercher dans l'historique du chat","messageSection.search.placeholder":"Rechercher dans le chat actuel...","messageSection.search.count.empty":"Rechercher","messageSection.search.count.minChars":"{count}+ caractères","messageSection.search.count.searching":"Recherche...","messageSection.search.count.none":"Aucun résultat","messageSection.search.count.matches":"{current} / {total}","messageSection.search.previousAriaLabel":"Résultat précédent","messageSection.search.nextAriaLabel":"Résultat suivant","messageSection.search.closeAriaLabel":"Fermer la recherche","messageSection.search.searching":"Recherche...","messageSection.search.noVisibleMatches":"Aucun résultat visible","messageTimeline.ariaLabel":"Chronologie des messages","messageTimeline.segment.user.label":"Vous","messageTimeline.segment.assistant.label":"Asst","messageTimeline.segment.compaction.label":"Compaction","messageTimeline.tool.fallbackLabel":"Appel d'outil","messageTimeline.tooltip.userFallback":"Message utilisateur","messageTimeline.tooltip.assistantFallback":"Réponse de l'assistant","messageTimeline.tooltip.compaction.auto":"Compaction auto","messageTimeline.tooltip.compaction.manual":"Compaction utilisateur","messageTimeline.text.filePrefix":"[Fichier] {filename}","messageTimeline.text.attachment":"Pièce jointe","messageBlock.tool.header":"Appel d'outil","messageBlock.tool.unknown":"inconnu","messageBlock.tool.goToSession.label":"Aller à la session","messageBlock.tool.goToSession.title":"Aller à la session","messageBlock.tool.goToSession.unavailableTitle":"Session pas encore disponible","messageBlock.tool.deletePart.label":"Supprimer la partie","messageBlock.tool.deletePart.deleting":"Suppression...","messageBlock.tool.deletePart.title":"Supprimer cette sortie d'outil","messageBlock.tool.deletePart.failed.title":"Échec de suppression","messageBlock.tool.deletePart.failed.message":"Impossible de supprimer la sortie d'outil","messageBlock.compaction.ariaLabel":"Compaction de la session","messageBlock.compaction.autoLabel":"Session compactée automatiquement","messageBlock.compaction.manualLabel":"Session compactée par vous","messageBlock.usage.input":"Entrée","messageBlock.usage.output":"Sortie","messageBlock.usage.reasoning":"Raisonnement","messageBlock.usage.cacheRead":"Lecture du cache","messageBlock.usage.cacheWrite":"Écriture du cache","messageBlock.usage.cost":"Coût","messageBlock.step.agentLabel":"Agent : {agent}","messageBlock.step.modelLabel":"Modèle : {model}","messageBlock.reasoning.thinkingLabel":"Réflexion","messageBlock.reasoning.expandAriaLabel":"Développer la réflexion","messageBlock.reasoning.collapseAriaLabel":"Réduire la réflexion","messageBlock.reasoning.indicator.hide":"Masquer","messageBlock.reasoning.indicator.view":"Voir","messageBlock.reasoning.detailsAriaLabel":"Détails du raisonnement","codeBlockInline.actions.copy":"Copier","codeBlockInline.actions.copied":"Copié !","messageItem.speaker.you":"Vous","messageItem.speaker.assistant":"Assistant","messageItem.actions.revert":"Revenir","messageItem.actions.revertTitle":"Annuler les changements jusqu'ici (supprime les messages)","messageItem.actions.fork":"Fork","messageItem.actions.forkTitle":"Fork depuis ce message","messageItem.actions.copy":"Copier","messageItem.actions.copyTitle":"Copier le message","messageItem.actions.copied":"Copié !","messageItem.actions.speak":"Lire le message","messageItem.actions.generatingSpeech":"Generation de l'audio","messageItem.actions.stopSpeech":"Arreter la lecture","messageItem.actions.speak.error.title":"La lecture vocale a echoue","messageItem.actions.speak.error.unsupported":"La lecture vocale n'est pas prise en charge dans ce navigateur.","messageItem.actions.speak.error.unavailable":"La lecture vocale n'est pas disponible tant que les parametres vocaux ne sont pas configures.","messageItem.actions.speak.error.generate":"Impossible de generer l'audio pour ce message.","messageItem.actions.deleteMessage":"Supprimer le message (sans annuler les changements)","messageItem.actions.deleteMessagesUpTo":"Supprimer les messages jusqu'ici (sans annuler les changements)","messageItem.actions.deletingMessage":"Suppression...","messageItem.actions.deleteMessageFailedTitle":"Échec de suppression","messageItem.actions.deleteMessageFailedMessage":"Impossible de supprimer le message","messageItem.selection.checkboxAriaLabel":"Sélectionner le message pour suppression","messageSection.bulkDelete.toolbarAriaLabel":"Éléments sélectionnés ({count})","messageSection.bulkDelete.deleteSelectedTitle":"Supprimer les éléments sélectionnés","messageSection.bulkDelete.selectAllTitle":"Tout sélectionner","messageSection.bulkDelete.moreOptionsTitle":"Plus d'options","messageSection.bulkDelete.selectionModeLabel":"Sélection","messageSection.bulkDelete.selectionModeAll":"Tous","messageSection.bulkDelete.selectionModeTools":"Outils uniquement","messageSection.bulkDelete.selectionHint.toggle":"Selectionner un element","messageSection.bulkDelete.selectionHint.range":"Selectionner une plage","messageSection.bulkDelete.selectionHint.clear":"Effacer la selection","messageSection.bulkDelete.cancelTitle":"Annuler la sélection","messageSection.bulkDelete.failedTitle":"Échec de suppression","messageSection.bulkDelete.failedMessage":"Impossible de supprimer les éléments sélectionnés","messageItem.status.queued":"EN FILE","messageItem.status.generating":"Génération...","messageItem.status.sending":"Envoi...","messageItem.status.failedToSend":"Échec de l'envoi du message","messagePart.actions.delete":"Supprimer la partie","messagePart.actions.deleting":"Suppression...","messagePart.actions.deleteTitle":"Supprimer cet élément","messagePart.actions.deleteFailedTitle":"Échec de suppression","messagePart.actions.deleteFailedMessage":"Impossible de supprimer l'élément","messageItem.attachment.defaultName":"piece-jointe","messageItem.attachment.downloadAriaLabel":"Télécharger {name}","messageItem.agentMeta.agentLabel":"Agent : {agent}","messageItem.agentMeta.modelLabel":"Modèle : {model}","messageItem.errors.authenticationFallback":"Erreur d'authentification","messageItem.errors.outputLengthExceeded":"Longueur de sortie du message dépassée","messageItem.errors.requestAborted":"La requête a été annulée","messageItem.errors.unknownFallback":"Une erreur inconnue est survenue","attachmentChip.removeAriaLabel":"Retirer la pièce jointe","expandButton.toggleAriaLabel":"Basculer la hauteur de la zone de saisie","promptInput.placeholder.shell":"Exécuter une commande shell (Esc pour quitter)...","promptInput.placeholder.default":"Tapez votre message, @fichier, @agent, ou collez des images et du texte...","promptInput.hints.shell.exit":"pour quitter le mode shell","promptInput.hints.shell.enable":"Mode shell","promptInput.hints.commands":"Commandes","promptInput.history.previousAriaLabel":"Prompt précédent","promptInput.history.nextAriaLabel":"Prompt suivant","promptInput.overlay.newLine":"Nouvelle ligne","promptInput.overlay.send":"Envoyer","promptInput.overlay.filesAgents":"Fichiers/agents","promptInput.overlay.history":"Historique","promptInput.overlay.attachments":"• {count} fichier(s) joint(s)","promptInput.overlay.shellModeActive":"Mode shell actif","promptInput.overlay.press":"Appuyez sur","promptInput.overlay.againToAbort":"à nouveau pour interrompre la session","promptInput.stopSession.ariaLabel":"Arrêter la session","promptInput.stopSession.title":"Arrêter la session","promptInput.clear.ariaLabel":"Effacer le texte du prompt","promptInput.clear.title":"Effacer le texte du prompt","promptInput.send.ariaLabel":"Envoyer le message","promptInput.send.errorFallback":"Impossible d'envoyer le message","promptInput.send.errorTitle":"Échec de l'envoi","promptInput.conversationMode.enable.title":"Activer le mode conversation","promptInput.conversationMode.disable.title":"Desactiver le mode conversation","promptInput.conversationMode.error.title":"La lecture de la conversation a echoue","promptInput.conversationMode.error.message":"Impossible de continuer a lire les reponses de l'assistant.","promptInput.voiceInput.start.title":"Démarrer la saisie vocale","promptInput.voiceInput.stop.title":"Arrêter l'enregistrement et transcrire","promptInput.voiceInput.transcribing.title":"Transcription de l'audio","promptInput.voiceInput.error.title":"Échec de la saisie vocale","promptInput.voiceInput.error.permission":"L'accès au microphone est requis pour enregistrer la saisie vocale.","promptInput.voiceInput.error.permissionDenied":"macOS a refusé l'accès au microphone.","promptInput.voiceInput.error.unsupported":"La saisie vocale n'est pas prise en charge dans ce navigateur.","promptInput.voiceInput.error.transcribe":"Impossible de transcrire l'audio enregistré."},m={"remoteAccess.eyebrow":"Passation à distance","remoteAccess.title":"Se connecter à CodeNomad à distance","remoteAccess.subtitle":"Utilisez les adresses ci-dessous pour ouvrir CodeNomad depuis un autre appareil.","remoteAccess.close":"Fermer l'accès à distance","remoteAccess.refresh":"Rafraîchir","remoteAccess.sections.listeningMode.label":"Mode d'écoute","remoteAccess.sections.listeningMode.help":"Autorisez ou limitez les passations à distance en écoutant sur toutes les interfaces ou uniquement sur localhost.","remoteAccess.toggle.on":"Activé","remoteAccess.toggle.off":"Désactivé","remoteAccess.toggle.title":"Autoriser les connexions depuis d'autres IP","remoteAccess.toggle.caption.all":"Écoute sur 0.0.0.0","remoteAccess.toggle.caption.local":"Écoute sur 127.0.0.1","remoteAccess.toggle.note":"Modifier ceci nécessite un redémarrage et stoppe temporairement toutes les instances actives. Partagez les adresses ci-dessous une fois le serveur redémarré.","remoteAccess.listeningMode.restartConfirm.message":"Redémarrer pour appliquer le mode d'écoute ? Cela arrêtera toutes les instances en cours.","remoteAccess.listeningMode.restartConfirm.title.all":"Ouvrir aux autres appareils","remoteAccess.listeningMode.restartConfirm.title.local":"Limiter à cet appareil","remoteAccess.listeningMode.restartConfirm.confirmLabel":"Redémarrer maintenant","remoteAccess.listeningMode.restartConfirm.cancelLabel":"Annuler","remoteAccess.restart.errorManual":"Impossible de redémarrer automatiquement. Veuillez redémarrer l'application pour appliquer le changement.","remoteAccess.sections.serverPassword.label":"Mot de passe du serveur","remoteAccess.sections.serverPassword.help":"Les passations à distance nécessitent un mot de passe. Définissez-en un facile à retenir pour autoriser la connexion depuis d'autres appareils.","remoteAccess.authStatus.unavailable":"Statut d'authentification indisponible.","remoteAccess.username":"Nom d'utilisateur : {username}","remoteAccess.password.status.set":"Un mot de passe est défini pour l'accès à distance.","remoteAccess.password.status.unset":"Aucun mot de passe mémorable n'est encore défini. Définissez-en un pour autoriser les connexions à distance.","remoteAccess.password.actions.cancel":"Annuler","remoteAccess.password.actions.change":"Changer le mot de passe","remoteAccess.password.actions.set":"Définir le mot de passe","remoteAccess.password.form.newPassword":"Nouveau mot de passe","remoteAccess.password.form.confirmPassword":"Confirmer le mot de passe","remoteAccess.password.form.placeholder":"Au moins 8 caractères","remoteAccess.password.error.tooShort":"Le mot de passe doit contenir au moins 8 caractères.","remoteAccess.password.error.mismatch":"Les mots de passe ne correspondent pas.","remoteAccess.password.save.saving":"Enregistrement…","remoteAccess.password.save.label":"Enregistrer le mot de passe","remoteAccess.sections.addresses.label":"Adresses accessibles","remoteAccess.sections.addresses.help":"Lancez ou scannez depuis une autre machine pour passer le contrôle.","remoteAccess.addresses.loading":"Chargement des adresses…","remoteAccess.addresses.none":"Aucune adresse disponible pour le moment.","remoteAccess.addresses.actions.showOther":"Afficher {count} autres adresses","remoteAccess.addresses.actions.hideOther":"Masquer les autres adresses","remoteAccess.address.scope.network":"Réseau","remoteAccess.address.scope.loopback":"Boucle locale","remoteAccess.address.scope.internal":"Interne","remoteAccess.address.open":"Ouvrir","remoteAccess.address.showQr":"Afficher le QR","remoteAccess.address.hideQr":"Masquer le QR","remoteAccess.address.qrAlt":"QR pour {url}"},p={"sessionPicker.title":"OpenCode • {folder}","sessionPicker.empty.noPrevious":"Aucune session précédente","sessionPicker.resume.title":"Reprendre une session ({count}) :","sessionPicker.session.untitled":"Sans titre","sessionPicker.divider.or":"ou","sessionPicker.new.title":"Démarrer une nouvelle session :","sessionPicker.agents.loading":"Chargement des agents...","sessionPicker.actions.creating":"Création...","sessionPicker.actions.createSession":"Créer une session","sessionPicker.actions.cancel":"Annuler","sessionList.header.title":"Sessions","sessionList.session.untitled":"Sans titre","sessionList.status.working":"En cours","sessionList.status.compacting":"Compactage","sessionList.status.idle":"Inactif","sessionList.status.retrying":"Nouvelle tentative","sessionList.status.retryingIn":"Nouvelle tentative dans {seconds}s","sessionList.status.retryTooltip":"{message} (Tentative {attempt})","sessionList.status.retryToast":"{countdown} : {message} (Tentative {attempt})","sessionList.status.needsPermission":"Autorisation requise","sessionList.status.needsInput":"Entrée requise","sessionList.expand.collapseAriaLabel":"Réduire la session","sessionList.expand.expandAriaLabel":"Développer la session","sessionList.expand.collapseTitle":"Réduire","sessionList.expand.expandTitle":"Développer","sessionList.actions.newSession.ariaLabel":"Nouvelle session","sessionList.actions.newSession.title":"Nouvelle session","sessionList.actions.copyId.ariaLabel":"Copier l'ID de session","sessionList.actions.copyId.title":"Copier l'ID de session","sessionList.actions.reload.ariaLabel":"Recharger la session","sessionList.actions.reload.title":"Recharger la session","sessionList.actions.rename.ariaLabel":"Renommer la session","sessionList.actions.rename.title":"Renommer la session","sessionList.actions.delete.ariaLabel":"Supprimer la session","sessionList.actions.delete.title":"Supprimer la session","sessionList.copyId.success":"ID de session copié","sessionList.copyId.error":"Impossible de copier l'ID de session","sessionList.reload.error":"Impossible de recharger la session","sessionList.delete.error":"Impossible de supprimer la session","sessionList.delete.title":"Supprimer la session","sessionList.delete.confirmMessage":'Supprimer "{label}" ? Cette action est irréversible.',"sessionList.delete.confirmLabel":"Supprimer","sessionList.delete.cancelLabel":"Annuler","sessionList.rename.error":"Impossible de renommer la session","sessionList.filter.placeholder":"Rechercher des sessions…","sessionList.filter.ariaLabel":"Rechercher des sessions","sessionList.selection.selectAllLabel":"Tout sélectionner","sessionList.selection.selectAllAriaLabel":"Sélectionner toutes les sessions","sessionList.selection.clearLabel":"Effacer","sessionList.selection.clearAriaLabel":"Effacer la sélection","sessionList.selection.checkboxAriaLabel":"Sélectionner la session","sessionList.bulkDelete.button":"Supprimer {count}","sessionList.bulkDelete.ariaLabel":"Supprimer {count} sessions sélectionnées","sessionList.bulkDelete.title":"Supprimer des sessions","sessionList.bulkDelete.confirmMessage":"Supprimer {count} sessions sélectionnées ? Cette action est irréversible.","sessionList.bulkDelete.confirmLabel":"Supprimer","sessionList.bulkDelete.cancelLabel":"Annuler","sessionList.bulkDelete.error":"Impossible de supprimer {count} sessions","sessionRenameDialog.title":"Renommer la session","sessionRenameDialog.description.withLabel":'Mettre à jour le titre de "{label}".',"sessionRenameDialog.description.default":"Définir un nouveau titre pour cette session.","sessionRenameDialog.input.label":"Nom de la session","sessionRenameDialog.input.placeholder":"Saisissez un nom de session","sessionRenameDialog.actions.cancel":"Annuler","sessionRenameDialog.actions.rename":"Renommer","sessionRenameDialog.actions.renaming":"Renommage…","sessionView.fallback.sessionNotFound":"Session introuvable","sessionView.alerts.abortFailed.message":"Impossible d'arrêter la session","sessionView.alerts.abortFailed.title":"Échec de l'arrêt","sessionView.alerts.revertFailed.message":"Impossible de revenir au message","sessionView.alerts.revertFailed.title":"Échec du retour","sessionView.alerts.deleteUpToFailed.message":"Impossible de supprimer les messages","sessionView.alerts.deleteUpToFailed.title":"Échec de suppression","sessionView.alerts.forkFailed.message":"Impossible de forker la session","sessionView.alerts.forkFailed.title":"Échec du fork","sessionView.attachments.expandPastedTextAriaLabel":"Développer le texte collé","sessionView.attachments.insertPastedTextTitle":"Insérer le texte collé","sessionView.attachments.removeAriaLabel":"Retirer la pièce jointe","sessionEvents.sessionCompactedToast":"La session {label} a été compactée","sessionEvents.sessionError.unknown":"Erreur inconnue","sessionEvents.sessionError.title":"Erreur de session","sessionEvents.sessionError.message":"Erreur : {message}","sessionState.cleanup.deepConfirm.message":"Ce nettoyage peut être lent et peut supprimer des sessions que vous ne vouliez pas supprimer. Confirmez-vous ?","sessionState.cleanup.deepConfirm.title":"Nettoyage approfondi des sessions","sessionState.cleanup.deepConfirm.detail":"Le nettoyage approfondi des sessions supprime toutes les sessions sans messages, retire les sessions de sous-agent terminées et efface les forks inutilisés d'une session.","sessionState.cleanup.deepConfirm.confirmLabel":"Continuer","sessionState.cleanup.deepConfirm.cancelLabel":"Annuler","sessionState.cleanup.toast.one":"Nettoyage de {count} session vide","sessionState.cleanup.toast.other":"Nettoyage de {count} sessions vides"},g={"instanceServiceStatus.sections.lsp":"Serveurs LSP","instanceServiceStatus.sections.mcp":"Serveurs MCP","instanceServiceStatus.sections.plugins":"Plugins","instanceServiceStatus.lsp.loading":"Chargement des serveurs LSP...","instanceServiceStatus.lsp.empty":"Aucun serveur LSP détecté.","instanceServiceStatus.lsp.status.connected":"Connecté","instanceServiceStatus.lsp.status.error":"Erreur","instanceServiceStatus.mcp.loading":"Chargement des serveurs MCP...","instanceServiceStatus.mcp.empty":"Aucun serveur MCP détecté.","instanceServiceStatus.mcp.toggleAriaLabel":"Basculer le serveur MCP {name}","instanceServiceStatus.plugins.loading":"Chargement des plugins...","instanceServiceStatus.plugins.empty":"Aucun plugin configuré.","permissionBanner.pendingRequests.one":"{count} demande en attente","permissionBanner.pendingRequests.other":"{count} demandes en attente","permissionBanner.detail.permission.one":"{count} autorisation","permissionBanner.detail.permission.other":"{count} autorisations","permissionBanner.detail.question.one":"{count} question","permissionBanner.detail.question.other":"{count} questions","permissionBanner.detail.wrapper":" ({detail})","agentSelector.placeholder":"Sélectionner un agent...","agentSelector.badge.subagent":"sous-agent","agentSelector.none":"Aucun","agentSelector.trigger.primary":"Agent : {agent}","modelSelector.placeholder.search":"Rechercher des modèles...","modelSelector.none":"Aucun","modelSelector.trigger.primary":"Modèle : {model}","modelSelector.favoritesOnly.toggle.ariaLabel":"Basculer en favoris uniquement","modelSelector.favoritesOnly.showAll":"Afficher tous les modèles","modelSelector.favorite.add":"Ajouter aux favoris","modelSelector.favorite.remove":"Retirer des favoris","thinkingSelector.variant.default":"Par défaut","thinkingSelector.label":"Réflexion : {variant}","envEditor.title":"Variables d'environnement","envEditor.count.one":"({count} variable)","envEditor.count.other":"({count} variables)","envEditor.fields.name.placeholder":"Nom de la variable","envEditor.fields.name.readOnlyTitle":"Nom de la variable (lecture seule)","envEditor.fields.value.placeholder":"Valeur de la variable","envEditor.actions.remove.title":"Supprimer la variable","envEditor.actions.add.title":"Ajouter une variable","envEditor.empty":"Aucune variable d'environnement configurée. Ajoutez des variables ci-dessus pour personnaliser l'environnement OpenCode.","envEditor.help":"Ces variables seront disponibles dans l'environnement OpenCode lors du démarrage des instances.","contextUsagePanel.headings.tokens":"Tokens","contextUsagePanel.headings.context":"Contexte","contextUsagePanel.labels.input":"Entrée","contextUsagePanel.labels.output":"Sortie","contextUsagePanel.labels.cost":"Coût","contextUsagePanel.labels.used":"Utilisé","contextUsagePanel.labels.available":"Dispo","contextUsagePanel.unavailable":"--","settings.title":"Settings","settings.navigationAriaLabel":"Settings sections","settings.close":"Close settings","settings.content.eyebrow":"Workspace preferences","settings.open.title":"Open settings","settings.open.ariaLabel":"Open settings","settings.nav.appearance":"Appearance","settings.nav.notifications":"Notifications","settings.nav.remote":"Remote Access","settings.nav.speech":"Speech","settings.nav.opencode":"OpenCode","settings.scope.device":"This device","settings.scope.server":"Server setting","settings.common.enabled":"Enabled","settings.common.disabled":"Desactive","settings.section.appearance.title":"Appearance","settings.section.appearance.subtitle":"Adjust how the app looks on this device.","settings.appearance.theme.title":"Theme","settings.appearance.theme.subtitle":"Choose the color mode used throughout the app.","settings.appearance.theme.option.system":"Match your operating system setting","settings.appearance.theme.option.light":"Use the light appearance","settings.appearance.theme.option.dark":"Use the dark appearance","settings.section.notifications.title":"Notifications","settings.section.notifications.subtitle":"Control OS-level notifications for session activity.","settings.notifications.permission.granted":"Granted","settings.notifications.permission.denied":"Denied","settings.notifications.permission.default":"Not granted","settings.notifications.permission.unsupported":"Unsupported","settings.notifications.messages.unsupportedEnvironment":"OS notifications are not supported in this environment.","settings.notifications.messages.permissionDenied":"Notification permission denied. Enable notifications in your system or browser settings.","settings.notifications.messages.permissionNotGranted":"Notification permission not granted.","settings.notifications.messages.unsupportedGeneral":"Notifications are not supported in this environment.","settings.notifications.messages.permissionGranted":"Permission granted. You can now enable notifications.","settings.notifications.messages.permissionRequestDenied":"Permission denied. You may need to enable notifications in your system or browser settings.","settings.notifications.sessionStatus.title":"Session status notifications","settings.notifications.sessionStatus.subtitle":"Receive alerts when sessions need your attention.","settings.notifications.enable.title":"Enable notifications","settings.notifications.enable.permission":"Permission: {permission}","settings.notifications.requestPermission.title":"Request permission","settings.notifications.requestPermission.subtitle":"Allow the app to send notifications on this device.","settings.notifications.requestPermission.action":"Request","settings.notifications.allowVisible.title":"Notify when the app is focused","settings.notifications.allowVisible.subtitle":"Keep alerts enabled even while this window is visible.","settings.notifications.unsupportedNote":"Notifications are not supported in this environment. The notifications control stays disabled.","settings.notifications.events.title":"Notify me when","settings.notifications.events.subtitle":"Choose which session events should send alerts.","settings.notifications.events.needsInput":"Session needs input","settings.notifications.events.idle":"Session becomes idle","settings.notifications.status.enabled":"Notifications enabled","settings.notifications.status.disabled":"Notifications disabled","settings.notifications.status.unsupported":"Notifications unsupported","settings.section.remote.title":"Remote Access","settings.section.remote.subtitle":"Review how this server is exposed on your network and secure access credentials.","settings.section.opencode.title":"OpenCode","settings.section.opencode.subtitle":"Choose the OpenCode binary and environment used for new instances.","settings.opencode.runtime.title":"Runtime","settings.opencode.runtime.subtitle":"Configure which OpenCode binary new instances launch with.","settings.opencode.logLevel.title":"Niveau de logs OpenCode","settings.opencode.logLevel.subtitle":"Definir le niveau de logs utilise au lancement des nouvelles instances OpenCode.","settings.opencode.logLevel.selector.title":"Verbosite des logs","settings.opencode.logLevel.selector.subtitle":"Choisir la quantite de journaux emise par les nouvelles instances OpenCode.","settings.opencode.logLevel.option.debug":"Debogage","settings.opencode.logLevel.option.info":"Info","settings.opencode.logLevel.option.warn":"Avertissement","settings.opencode.logLevel.option.error":"Erreur","settings.appearance.behavior.title":"Interaction","settings.appearance.behavior.subtitle":"Parametres par defaut pour les messages, les diffs et la saisie.","settings.behavior.keyboardHints.title":"Indications de raccourcis clavier","settings.behavior.keyboardHints.subtitle":"Afficher des indications de raccourcis clavier dans toute l'interface.","settings.behavior.thinking.title":"Sections de reflexion","settings.behavior.thinking.subtitle":"Afficher ou masquer les sections de reflexion de l'IA dans les messages.","settings.behavior.thinkingDefault.title":"Etat initial de la reflexion","settings.behavior.thinkingDefault.subtitle":"Choisir si les sections de reflexion commencent developpees ou reduites.","settings.behavior.timelineTools.title":"Appels d'outils dans la chronologie","settings.behavior.timelineTools.subtitle":"Afficher ou masquer les entrees d'appels d'outils dans la chronologie des messages.","settings.behavior.diffView.title":"Vue du diff","settings.behavior.diffView.subtitle":"Choisir comment les diffs des appels d'outils sont affiches.","settings.behavior.diffView.option.split":"Scinde","settings.behavior.diffView.option.unified":"Unifie","settings.behavior.toolOutputsDefault.title":"Etat initial des sorties d'outils","settings.behavior.toolOutputsDefault.subtitle":"Choisir si les sorties d'outils commencent developpees ou reduites.","settings.behavior.diagnosticsDefault.title":"Etat initial des diagnostics","settings.behavior.diagnosticsDefault.subtitle":"Choisir si la sortie des diagnostics commence developpee ou reduite.","settings.behavior.toolInputsVisibility.title":"Visibilite des entrees d'outils","settings.behavior.toolInputsVisibility.subtitle":"Definir la visibilite par defaut des arguments d'entree des appels d'outils.","settings.behavior.usageMetrics.title":"Metriques d'utilisation des tokens","settings.behavior.usageMetrics.subtitle":"Afficher ou masquer les stats de tokens et de cout pour les messages de l'assistant.","settings.behavior.autoCleanup.title":"Nettoyage auto des sessions vides","settings.behavior.autoCleanup.subtitle":"Nettoyer automatiquement les sessions vides lors de la creation de nouvelles.","settings.behavior.keepUnseenSubagentIdle.title":"Garder les marqueurs inactifs des sous-agents","settings.behavior.keepUnseenSubagentIdle.subtitle":"Garde les marqueurs inactifs des sous-agents visibles jusqu'a consultation au lieu de les masquer apres 5 secondes.","settings.behavior.promptVoiceInput.title":"Prompt voice input","settings.behavior.promptVoiceInput.subtitle":"Show the microphone control for speech-to-text prompt input when speech is configured.","settings.behavior.promptSubmit.title":"Entrer pour envoyer","settings.behavior.promptSubmit.subtitle":"Utiliser Entrer pour envoyer; Cmd/Ctrl+Entrer insere une nouvelle ligne.","settings.speech.title":"Voix","settings.speech.subtitle":"Configurez dès maintenant la reconnaissance vocale et préparez la synthèse vocale pour de futures fonctionnalités.","settings.speech.provider.title":"Fournisseur","settings.speech.provider.subtitle":"Les requêtes vocales utilisent l'adaptateur vocal côté serveur.","settings.speech.provider.openaiCompatible":"OpenAI-compatible","settings.speech.status.loading":"Vérification de la configuration...","settings.speech.status.configured":"Configuré","settings.speech.status.missing":"Clé API manquante","settings.speech.status.error":"Service vocal indisponible","settings.speech.apiKey.title":"API key","settings.speech.apiKey.subtitle":"Utilisée pour les requêtes vocales gérées par CodeNomad.","settings.speech.apiKey.placeholder":"Saisissez une nouvelle clé API","settings.speech.apiKey.storedNote":"Une clé API enregistrée est masquée. Saisissez une nouvelle valeur pour la remplacer ou laissez le champ vide pour la conserver.","settings.speech.apiKey.clearAction":"Effacer la clé enregistrée","settings.speech.apiKey.clearPending":"La clé API enregistrée sera supprimée lors de l'enregistrement.","settings.speech.baseUrl.title":"Base URL","settings.speech.baseUrl.subtitle":"Remplacement facultatif des points d'accès vocaux compatibles OpenAI.","settings.speech.baseUrl.placeholder":"https://api.openai.com/v1","settings.speech.sttModel.title":"Modèle de transcription","settings.speech.sttModel.subtitle":"Modèle utilisé pour les requêtes vocales vers texte du prompt.","settings.speech.ttsModel.title":"Modèle vocal","settings.speech.ttsModel.subtitle":"Modèle de synthèse vocale par défaut réservé aux futures fonctions de lecture.","settings.speech.ttsVoice.title":"Voix par défaut","settings.speech.ttsVoice.subtitle":"Voix de synthèse vocale par défaut réservée aux futures fonctions de lecture.","settings.speech.playbackMode.title":"Mode de lecture","settings.speech.playbackMode.subtitle":"Choisissez si le TTS commence a jouer pendant le flux audio ou apres la generation complete du fichier.","settings.speech.playbackMode.streaming":"Streaming","settings.speech.playbackMode.buffered":"Buffered","settings.speech.ttsFormat.title":"Format de sortie","settings.speech.ttsFormat.subtitle":"Choisissez le format audio pour la voix synthetisee. La prise en charge du streaming depend du fournisseur et du navigateur.","settings.speech.help":"La saisie vocale du prompt apparait lorsque la transcription vocale est configuree et prise en charge. La lecture des messages utilise le mode et le format TTS selectionnes ici.","settings.speech.compatibility.streamingUnavailable":"Votre configuration actuelle du fournisseur vocal n'annonce pas le TTS en streaming. Passez le mode de lecture sur buffered si vous voulez que la lecture fonctionne maintenant.","settings.speech.compatibility.browserStreamingUnavailable":"Votre navigateur actuel ne peut pas lire en streaming le format TTS selectionne. Choisissez la lecture buffered ou passez a un autre format.","settings.speech.compatibility.runtimeNote":"Tous les formats restent selectionnables en mode streaming. Certaines combinaisons navigateur/fournisseur peuvent quand meme echouer au moment de la lecture.","settings.speech.testPlayback.action":"Tester la lecture","settings.speech.testPlayback.generating":"Generation de l'extrait","settings.speech.testPlayback.stop":"Arreter l'extrait","settings.speech.testPlayback.sample":"Merci d'utiliser CodeNomad, vos parametres vocaux fonctionnent correctement.","settings.speech.testPlayback.note":"Le test utilise immediatement le mode et le format actuels. Enregistrez d'abord les changements d'API key, d'URL de base, de modele ou de voix si vous voulez aussi les tester.","settings.speech.save.action":"Enregistrer","settings.speech.save.saving":"Enregistrement...","settings.speech.save.saved":"Enregistré","settings.speech.save.unsaved":"Modifications non enregistrées","settings.speech.save.error":"Échec de l'enregistrement","settings.nav.sidecars":"SideCars","settings.section.sidecars.eyebrow":"Server services","settings.section.sidecars.title":"SideCars","settings.section.sidecars.subtitle":"Configure local services listening on fixed ports that the server can proxy into tabs.","sidecars.form.name":"Name","sidecars.form.validation":"Enter a valid SideCar name and port.","sidecars.form.port":"Port","sidecars.form.insecure":"Use HTTP","sidecars.form.protocol":"Protocol","sidecars.form.protocol.help":"Choose how the proxy should connect to the local service.","sidecars.form.protocol.https":"HTTPS","sidecars.form.protocol.http":"HTTP","sidecars.form.prefixMode":"Prefix mode","sidecars.form.prefixMode.help":"Choose whether the SideCar receives the public /sidecars path prefix.","sidecars.form.prefixMode.strip":"Strip prefix","sidecars.form.prefixMode.preserve":"Preserve prefix","sidecars.form.add":"Add SideCar","sidecars.kind.port":"Port","sidecars.status.running":"Running","sidecars.status.stopped":"Stopped","sidecars.basePath":"Base path","sidecars.settings.listTitle":"Configured SideCars","sidecars.settings.listSubtitle":"Review the port-based SideCars available in the picker.","sidecars.settings.empty":"No SideCars configured yet.","sidecars.picker.title":"Open SideCar","sidecars.picker.loading":"Loading SideCars...","sidecars.picker.subtitle":"Choose an available SideCar to open in a new tab.","sidecars.picker.empty":"No port-based SideCars are available yet.","sidecars.picker.close":"Close","sidecars.open.errorTitle":"Unable to open SideCar","sidecars.open.notFound":"SideCar not found.","sidecars.open.notRunning":"SideCar is not reachable on its configured port.","sidecars.back":"Back","sidecars.refresh":"Refresh","sidecars.path":"Path","sidecars.go":"Go"},h={"time.relative.justNow":"à l'instant","time.relative.daysAgoShort":"il y a {count} j","time.relative.hoursAgoShort":"il y a {count} h","time.relative.minutesAgoShort":"il y a {count} min"},f={"toolCall.pending.waitingToRun":"En attente d'exécution...","toolCall.error.label":"Erreur :","toolCall.header.copyTitle":"Copy tool call title","toolCall.header.copyAriaLabel":"Copy tool call title","toolCall.header.showInputTitle":"Show Tool Arguments","toolCall.header.showInputAriaLabel":"Show Tool Arguments","toolCall.header.hideInputTitle":"Hide Tool Arguments","toolCall.header.hideInputAriaLabel":"Hide Tool Arguments","toolCall.io.input":"Tool Input","toolCall.io.output":"Tool Output","toolCall.diff.label":"Diff","toolCall.diff.label.withPath":"Diff · {path}","toolCall.diff.viewMode.ariaLabel":"Mode d'affichage du diff","toolCall.diff.viewMode.split":"Côte à côte","toolCall.diff.viewMode.unified":"Unifié","toolCall.diff.switchToSplit":"Passer à la vue côte à côte","toolCall.diff.switchToUnified":"Passer à la vue unifiée","toolCall.diff.enableWordWrap":"Activer le retour à la ligne","toolCall.diff.disableWordWrap":"Désactiver le retour à la ligne","toolCall.diff.copyPatch":"Copier le patch","toolCall.diagnostics.title":"Diagnostics","toolCall.diagnostics.ariaLabel":"Diagnostics","toolCall.diagnostics.ariaLabel.withLabel":"Diagnostics {label}","toolCall.diagnostics.severity.error.short":"ERR","toolCall.diagnostics.severity.warning.short":"WARN","toolCall.diagnostics.severity.info.short":"INFO","toolCall.renderer.toolName.shell":"Shell","toolCall.renderer.toolName.fetch":"Fetch","toolCall.renderer.toolName.invalid":"Invalide","toolCall.renderer.toolName.plan":"Plan","toolCall.renderer.toolName.applyPatch":"Appliquer le patch","toolCall.renderer.action.working":"En cours...","toolCall.renderer.action.writingCommand":"Rédaction de la commande...","toolCall.renderer.action.preparingEdit":"Préparation de la modification...","toolCall.renderer.action.readingFile":"Lecture du fichier...","toolCall.renderer.action.preparingWrite":"Préparation de l'écriture...","toolCall.renderer.action.preparingPatch":"Préparation du patch...","toolCall.renderer.action.planning":"Planification...","toolCall.renderer.action.fetchingFromWeb":"Récupération sur le Web...","toolCall.renderer.action.findingFiles":"Recherche de fichiers...","toolCall.renderer.action.searchingContent":"Recherche dans le contenu...","toolCall.renderer.action.listingDirectory":"Liste du répertoire...","toolCall.renderer.bash.title.timeout":"Délai : {timeout}","toolCall.renderer.read.detail.offset":"Décalage : {offset}","toolCall.renderer.read.detail.limit":"Limite : {limit}","toolCall.renderer.todo.empty":"Aucun élément de plan pour l'instant.","toolCall.renderer.todo.status.pending":"En attente","toolCall.renderer.todo.status.inProgress":"En cours","toolCall.renderer.todo.status.completed":"Terminé","toolCall.renderer.todo.status.cancelled":"Annulé","toolCall.renderer.todo.title.plan":"Plan","toolCall.renderer.todo.title.creating":"Création du plan","toolCall.renderer.todo.title.completing":"Finalisation du plan","toolCall.renderer.todo.title.updating":"Mise à jour du plan","toolCall.permission.status.required":"Autorisation requise","toolCall.permission.status.queued":"Autorisation en file d'attente","toolCall.permission.requestedDiff.label":"Diff demandé","toolCall.permission.requestedDiff.withPath":"Diff demandé · {path}","toolCall.permission.queuedText":"En attente des réponses d'autorisations précédentes.","toolCall.permission.actions.allowOnce":"Autoriser une fois","toolCall.permission.actions.alwaysAllow":"Toujours autoriser","toolCall.permission.actions.deny":"Refuser","toolCall.permission.shortcuts.allowOnce":"Autoriser une fois","toolCall.permission.shortcuts.alwaysAllow":"Toujours autoriser","toolCall.permission.shortcuts.deny":"Refuser","toolCall.permission.errors.unableToUpdate":"Impossible de mettre à jour l'autorisation","permissionApproval.title":"Demandes","permissionApproval.empty":"Aucune demande en attente.","permissionApproval.kind.permission":"Autorisation","permissionApproval.kind.question":"Question","permissionApproval.questionCount.one":"{count} question","permissionApproval.questionCount.other":"{count} questions","permissionApproval.status.active":"Active","permissionApproval.actions.closeAriaLabel":"Fermer","permissionApproval.actions.goToSession":"Aller à la session","permissionApproval.actions.loadingSession":"Chargement…","permissionApproval.actions.loadSession":"Charger la session","permissionApproval.actions.allowOnce":"Autoriser une fois","permissionApproval.actions.alwaysAllow":"Toujours autoriser","permissionApproval.actions.deny":"Refuser","permissionApproval.fallbackHint":"Chargez la session pour plus d'informations.","permissionApproval.errors.unableToUpdatePermission":"Impossible de mettre à jour l'autorisation","toolCall.question.status.required":"Question requise","toolCall.question.status.queued":"Question en file d'attente","toolCall.question.status.questions":"Questions","toolCall.question.action.awaitingAnswers":"En attente des réponses...","toolCall.question.title.questions":"Questions","toolCall.question.title.askingQuestions":"Questions en cours","toolCall.question.type.one":"Question","toolCall.question.type.other":"Questions","toolCall.question.number":"Q{number}:","toolCall.question.multiple":"Multiple","toolCall.question.custom.title":"Saisir une réponse personnalisée","toolCall.question.custom.label":"Réponse personnalisée","toolCall.question.custom.placeholder":"Saisissez votre propre réponse","toolCall.question.actions.submit":"Envoyer","toolCall.question.actions.dismiss":"Ignorer","toolCall.question.shortcuts.submit":"Envoyer","toolCall.question.shortcuts.dismiss":"Ignorer","toolCall.question.queuedText":"En attente des réponses précédentes.","toolCall.question.validation.answerAll":"Veuillez répondre à toutes les questions avant d'envoyer.","toolCall.question.errors.unableToReply":"Impossible de répondre","toolCall.question.errors.unableToDismiss":"Impossible d'ignorer","toolCall.task.action.delegating":"Délégation...","toolCall.task.sections.prompt":"Prompt","toolCall.task.sections.steps":"Étapes","toolCall.task.sections.output":"Sortie","toolCall.task.steps.count":"{count} étapes","toolCall.task.meta.agentModel":"Agent : {agent} • Modèle : {model}","toolCall.task.meta.agent":"Agent : {agent}","toolCall.task.meta.model":"Modèle : {model}","toolCall.status.pending":"En attente","toolCall.status.running":"En cours","toolCall.status.completed":"Terminé","toolCall.status.error":"Erreur","toolCall.status.unknown":"Inconnu","toolCall.applyPatch.action.preparing":"Préparation de apply_patch...","toolCall.applyPatch.title.withFileCount.one":"{tool} ({count} fichier)","toolCall.applyPatch.title.withFileCount.other":"{tool} ({count} fichiers)","toolCall.applyPatch.fileFallback":"Fichier {number}"},A=e(r,s,l,h,t,o,n,a,c,p,u,f,d,g,m,i);export{A as frMessages};
|