- Bump 21 @deepseek-ai devDeps from 0.1.5-rc.2 → 0.2.0-rc.2 (dsh-code-runtime stays at 0.1.5-rc.2 — no 0.2.0-rc.2 published) - Fix sidechat-routes.ts: source.kind 'plugin' → 'user' (0.2.0-rc.2 removed 'plugin' from MessageSourceMap) - Remove unused SIDE_INJECTION_PLUGIN import - Fix test fixtures for 0.2.0-rc.2 stricter validation: - tool/result message role: 'user' → 'tool' - add toolCallId at message top level - assertion kind: 'plugin' → 'user' - Icon migration: Icon*14 → Icon*Regular, Icon*16 → Icon*Medium (19 files) - SideChatView API migration to 0.2.0-rc.2 - Add 4 new locale keys (sideChatBlockNoExitCode, codeLabel, wrapLabel, unwrapLabel) - intercept.tsx: guard against undefined matched in SidebarProducedFiles Verification: - pnpm run typecheck: PASS - pnpm run build: PASS - npx vitest run: 1015 passed | 0 failed | 9 skipped
459 lines
35 KiB
TypeScript
459 lines
35 KiB
TypeScript
/**
|
||
* French translation of the better-sidebar copy.
|
||
*
|
||
* Mirrors the key set of the zh dictionary in `locales.ts` (enforced by
|
||
* the `Record<keyof typeof zh, string>` type annotation). The better-locale
|
||
* override store registers this dict under the `betterSidebar` namespace,
|
||
* so it takes effect when the user has selected the `fr` override.
|
||
*/
|
||
|
||
/** fr dictionary for the `betterSidebar` namespace. */
|
||
export const fr: Record<string, string> = {
|
||
files: 'Fichiers',
|
||
guideDescFiles: 'Parcourir l\'arborescence du workspace ; un clic ouvre l\'aperçu ou l\'édition',
|
||
guideDescGit: 'Modifications Git et éditions de cette session dans un seul onglet',
|
||
guideDescSubagent: 'Topologie des sous-agents et tâches d\'arrière-plan, en direct',
|
||
guideDescSidechat: 'Un fil de suivi indépendant héritant du contexte de cette session',
|
||
guideDescTerminal: 'Un vrai shell (xterm + pty) avec reconnexion',
|
||
guideDescBrowser: 'Navigateur intégré, qui peut reprendre les liens du chat',
|
||
changesSessionEmpty: 'Aucune opération de fichier dans cette session',
|
||
changesRead: 'Lecture',
|
||
changesMdReading: 'Lecture',
|
||
changesHtmlRender: "Rendu",
|
||
changesHtmlRaw: "Source",
|
||
changesPdfRender: "Rendu",
|
||
changesPdfRaw: "Source",
|
||
changesMdRaw: 'Brut',
|
||
changesWrite: 'Écriture',
|
||
changesEdit: 'Modification',
|
||
changesRunning: 'en cours',
|
||
changesError: 'erreur',
|
||
changesFold: '{count} lignes… cliquer pour déplier',
|
||
changesFoldLoading: 'Dépliage…',
|
||
changesFoldUnavailable: 'Contexte indisponible',
|
||
changesContext: 'contexte',
|
||
changesPriorUnknown: 'Le contenu antérieur est hors de la fenêtre ; affiché comme entièrement ajouté',
|
||
explorer: 'Explorateur',
|
||
terminal: 'Terminal',
|
||
editor: 'Éditeur',
|
||
editorExplorer: 'Comportement d’ouverture des fichiers',
|
||
editorExplorerDesc: 'Contrôle la façon dont les fichiers s’ouvrent',
|
||
editorExplorerMerged: 'Fusionné',
|
||
editorExplorerMergedDesc: 'Les fichiers se remplacent dans la même fenêtre ; les nouvelles fenêtres ouvrent l’arborescence par défaut',
|
||
editorExplorerSplit: 'Séparé',
|
||
editorExplorerSplitDesc: 'Les fenêtres sans chemin sont l’explorateur autonome (arborescence uniquement) ; chaque fichier ouvre sa propre fenêtre (avec arborescence, réduite par défaut)',
|
||
editorTreeToggle: 'Panneau d’arborescence',
|
||
editorPathPlaceholder: 'Saisissez un chemin de fichier (relatif au répertoire de session ou absolu), Entrée pour ouvrir',
|
||
editorSearchPlaceholder: 'Rechercher par nom de fichier…',
|
||
editorSearchNoResults: 'Aucun fichier correspondant',
|
||
editorSearchTruncated: 'Trop de résultats, seule une partie des correspondances est affichée',
|
||
editorEmptyHint: 'Choisissez un fichier dans l’arborescence à droite ou dans le champ de chemin ci-dessus pour commencer l’aperçu',
|
||
openFileNewTab: 'Ouvrir dans un nouvel onglet',
|
||
openFileSide: 'Ouvrir de côté',
|
||
openWithMenu: 'Ouvrir avec',
|
||
openWithSshSuffix: ' (SSH)',
|
||
pinOpenWith: 'Épingler au menu',
|
||
unpinOpenWith: 'Désépingler',
|
||
openWithExplorer: 'Explorateur de fichiers',
|
||
openWithVscode: 'VS Code',
|
||
openWithCursor: 'Cursor',
|
||
openWithZed: 'Zed',
|
||
openWithSettingsSshTitle: 'Hôte distant SSH',
|
||
openWithSettingsSshDesc: 'Vide = espace de travail local ; avec un user@host ou un alias SSH, les ouvreurs de la famille VSCode passent aux protocoles vscode-remote/ssh-remote, et l’explorateur de fichiers / Zed / les éditeurs personnalisés hors famille VSCode sont masqués du menu',
|
||
openWithSettingsSshPlaceholder: 'user@host ou alias SSH',
|
||
openWithSettingsCustomTitle: 'Éditeurs personnalisés',
|
||
openWithSettingsCustomDesc: 'Nom + modèle d’URL (placeholder {path}) + famille VSCode ou non ; en mode SSH, seuls les éditeurs de la famille VSCode peuvent ouvrir un distant',
|
||
openWithSettingsAdd: 'Ajouter',
|
||
openWithSettingsName: 'Nom',
|
||
openWithSettingsTemplate: 'ex. cursor://file/{path}',
|
||
openWithSettingsFamily: 'Famille VSCode',
|
||
openWithSettingsFamilyDesc: 'Cet éditeur utilise le protocole d’URL de VSCode (prend en charge l’ouverture à distance via SSH)',
|
||
openWithSettingsRemove: 'Supprimer',
|
||
openWithSettingsInvalidHint: 'Les éditeurs sans nom ou sans modèle (contenant {path} et commençant par scheme://) n’apparaissent pas dans le menu',
|
||
newTab: 'Nouvel onglet',
|
||
openExplorer: 'Explorateur',
|
||
brokenSymlink: 'Lien symbolique cassé',
|
||
openGit: 'Panneau Git',
|
||
newTerminal: 'Nouveau terminal',
|
||
terminalLimit: 'Nombre maximal de terminaux atteint (3)',
|
||
close: 'Fermer',
|
||
closeOtherTabs: 'Fermer les autres onglets',
|
||
closeLeftTabs: 'Fermer les onglets à gauche',
|
||
closeRightTabs: 'Fermer les onglets à droite',
|
||
floatDropHint: 'Relâchez pour ouvrir dans une fenêtre flottante',
|
||
dockToSidebar: 'Revenir à la barre latérale',
|
||
pinTerminal: 'Épingler le terminal',
|
||
pinAgentTerminal: 'Épingler le terminal Agent',
|
||
pinToWorkspace: 'Épingler à l\'espace de travail',
|
||
pinToGlobal: 'Épingler globalement',
|
||
unpinTerminal: 'Désépingler',
|
||
pinnedTerminalTooltip: '{kind} · {scope} · {cwd}',
|
||
pinnedTerminalKindUi: 'Terminal UI',
|
||
pinnedTerminalKindAgent: 'Terminal Agent',
|
||
pinnedTerminalScopeWorkspace: 'Épinglé à l\'espace de travail',
|
||
pinnedTerminalScopeGlobal: 'Épinglé globalement',
|
||
pinnedRailLabel: 'Terminaux épinglés',
|
||
closePinnedTerminal: 'Fermer le terminal',
|
||
collapseBottomPanel: 'Réduire le panneau inférieur',
|
||
expandBottomPanel: 'Déployer le panneau inférieur',
|
||
terminalError: 'Échec de la connexion au terminal',
|
||
terminalConnectFailed: 'Le terminal a échoué à se connecter à plusieurs reprises',
|
||
terminalRetry: 'Réessayer',
|
||
terminalWaitBanner: 'L’agent attend {needle}',
|
||
terminalSkipWait: 'Ignorer l’attente',
|
||
terminalDepsFailed: 'Échec du chargement de la dépendance terminal node-pty',
|
||
terminalDepsHint: 'Exécutez la commande suivante dans un terminal ou cmd de l’environnement DSH pour réparer, puis cliquez sur Réessayer (node-pty reste à la même version que le cœur DSH) :',
|
||
terminalDepsProfile: ' (profil détecté : {profile})',
|
||
terminalShellNotFound: 'Shell configuré introuvable : {name} — vérifiez le chemin du shell dans Réglages → Side card → Terminal',
|
||
preview: 'Aperçu',
|
||
toc: 'Sommaire',
|
||
edit: 'Modifier',
|
||
mermaidError: 'Échec du rendu Mermaid',
|
||
mermaidZoomIn: 'Agrandir',
|
||
mermaidZoomOut: 'Réduire',
|
||
mermaidZoomReset: 'Réinitialiser',
|
||
mermaidZoomHint: 'Molette pour zoomer · glisser pour déplacer · Échap pour fermer',
|
||
refresh: 'Actualiser',
|
||
showInFolder: 'Afficher dans le dossier',
|
||
refreshUnsavedConfirm: 'Le fichier a changé sur le disque. Actualiser supprimera les modifications non enregistrées. Continuer ?',
|
||
save: 'Enregistrer',
|
||
saved: 'Enregistré',
|
||
unsaved: 'Non enregistré',
|
||
saveFailed: 'Échec de l’enregistrement',
|
||
truncation: 'Fichier trop volumineux, seuls les 512 premiers Ko sont affichés',
|
||
binary: 'Fichier binaire, aperçu impossible',
|
||
loading: 'Chargement…',
|
||
error: 'Échec du chargement',
|
||
retry: 'Réessayer',
|
||
splitLeft: 'Diviser à gauche',
|
||
splitRight: 'Diviser à droite',
|
||
splitUp: 'Diviser en haut',
|
||
splitDown: 'Diviser en bas',
|
||
notRepo: 'Ce répertoire n’est pas un dépôt git',
|
||
noChanges: 'Aucune modification',
|
||
statusTruncated: 'Trop de modifications ; seules les 2000 premières entrées sont affichées',
|
||
stage: 'Mettre en scène',
|
||
unstage: 'Annuler la mise en scène',
|
||
stageAll: 'Tout mettre en scène',
|
||
unstageAll: 'Tout retirer de la scène',
|
||
commitPlaceholder: 'Message de commit (Ctrl+Entrée)',
|
||
commit: 'Valider',
|
||
commitError: 'Échec du commit',
|
||
branch: 'Branche',
|
||
worktree: 'Arborescence de travail',
|
||
checkoutError: 'Échec du changement de branche',
|
||
history: 'Historique',
|
||
changes: 'Modifications',
|
||
changesGitLens: 'Git',
|
||
changesSessionLens: 'Session',
|
||
changesFilterAll: 'Tout',
|
||
changesFilterEmpty: 'Aucune opération de ce type',
|
||
changesOpenDiffTab: 'Ouvrir dans un onglet diff',
|
||
changesClosePreview: 'Fermer l\'aperçu',
|
||
changesResizePreview: 'Redimensionner l\'aperçu',
|
||
changesLoadError: 'Les enregistrements de fichiers de la session sont indisponibles',
|
||
staged: 'En scène',
|
||
unstaged: 'Hors scène',
|
||
cancel: 'Annuler',
|
||
diffEmpty: 'Aucune différence textuelle',
|
||
diffLoadError: 'Échec du chargement de la différence',
|
||
diffBinary: 'Binaire',
|
||
diffAdded: 'Ajouté',
|
||
diffDeleted: 'Supprimé',
|
||
diffRenamed: 'Renommé',
|
||
diffExpand: 'Déployer les {count} lignes restantes',
|
||
diffCollapse: 'Réduire',
|
||
discard: 'Abandonner les modifications',
|
||
discardTitle: 'Abandonner les modifications',
|
||
discardDesc: 'Les modifications de l’espace de travail de « {path} » seront abandonnées (irréversible).',
|
||
viewCommitDiff: 'Voir la différence du commit',
|
||
copyShortHash: 'Copier le hash court',
|
||
copyFullHash: 'Copier le hash complet',
|
||
copySubject: 'Copier le message du commit',
|
||
revertCommit: 'Annuler ce commit',
|
||
revertTitle: 'Annuler ce commit',
|
||
revertDesc: 'Un nouveau commit inversant « {subject} » sera créé sur la branche actuelle.',
|
||
cherryPickCommit: 'Cherry-pick de ce commit',
|
||
cherryPickTitle: 'Cherry-pick de ce commit',
|
||
cherryPickDesc: 'Les modifications de « {subject} » seront appliquées à la branche actuelle.',
|
||
timeJustNow: 'à l’instant',
|
||
timeMinutesAgo: 'il y a {n} min',
|
||
timeHoursAgo: 'il y a {n} h',
|
||
timeYesterday: 'hier',
|
||
loadMore: 'Charger plus',
|
||
historyLoadError: 'Échec du chargement de davantage d’historique',
|
||
produced: 'Produits de cette exécution',
|
||
producedOpen: 'Ouvrir dans la barre latérale',
|
||
disconnected: 'Connexion du terminal perdue, reconnexion…',
|
||
exited: 'Le processus du terminal s’est terminé',
|
||
noSession: 'Sélectionnez une session pour utiliser la barre latérale',
|
||
pluginNotLoaded: 'Plugin non chargé, onglet indisponible pour le moment :',
|
||
hiddenFiles: 'Fichiers cachés',
|
||
parent: 'Répertoire parent',
|
||
copied: 'Copié',
|
||
copy: 'Copier',
|
||
newFile: 'Nouveau fichier',
|
||
openEditor: 'Ouvrir l’éditeur',
|
||
gitDetail: 'Voir le détail des modifications',
|
||
referenceFile: '@fichier',
|
||
addToConversation: 'Ajouter à la discussion',
|
||
copyRelative: 'Copier le chemin relatif',
|
||
copyAbsolute: 'Copier le chemin absolu',
|
||
rename: 'Renommer',
|
||
renameInvalid: 'Le nom ne peut pas être vide ni contenir de séparateurs de chemin.',
|
||
delete: 'Supprimer',
|
||
deleteTitle: 'Supprimer « {name} » ?',
|
||
deleteDescFile: 'Ce fichier sera définitivement supprimé. Cette action est irréversible.',
|
||
deleteDescDir: 'Ce répertoire et tout son contenu seront définitivement supprimés. Cette action est irréversible.',
|
||
dismiss: 'Fermer',
|
||
download: 'Télécharger',
|
||
uploadFiles: 'Importer des fichiers',
|
||
uploadFolder: 'Importer un dossier',
|
||
uploadHere: 'Importer ici',
|
||
uploadDropHint: 'Glissez des fichiers/dossiers ici pour les importer',
|
||
uploadDropChat: 'Glissez dans la zone de discussion : ajouter des images à la discussion',
|
||
uploadTo: 'Importer dans {dir}',
|
||
uploadingTo: 'Import en cours vers {dir}…',
|
||
uploadProgress: 'Import de {done}/{total} : {name}',
|
||
uploadDone: '{count} fichier(s) importé(s)',
|
||
uploadFailed: 'Échec de l’import : {error}',
|
||
uploadFailedUnknown: 'Erreur inconnue',
|
||
uploadTooLarge: 'Fichier trop volumineux, limite d’import dépassée',
|
||
uploadCancelled: 'Import annulé',
|
||
settingsNav: 'Carte latérale',
|
||
settingsIntro: 'Gérer le contenu affiché par la carte latérale et son comportement par défaut',
|
||
settingsPopupDesc: 'Configurer les options liées à « {feature} »',
|
||
settingsDone: 'Terminé',
|
||
settingsOpenToolsTitle: 'Injecter l\'outil d\'ouverture latérale pour le modèle',
|
||
settingsOpenToolsDesc: 'Une fois activé, le modèle peut ouvrir des fichiers, dossiers et pages HTTP(S) dans la barre latérale via l\'outil sidebar_open (désactivé par défaut)',
|
||
settingsTitleBarTitle: 'Mode de compatibilité de position',
|
||
settingsTitleBarDesc: 'Choisissez le schéma de compatibilité de la barre de titre : détection automatique (par défaut, conservateur) / Web officiel DSH / coquilles de bureau connues / schéma personnalisé (distance de décalage + CSS personnalisé)',
|
||
settingsTitleBarStripTitle: 'Distance de décalage',
|
||
settingsTitleBarStripDesc: 'Hauteur de la bande de la barre de titre : nombre de pixels dont les boutons et le contenu de la barre latérale descendent (0–120, défaut 40 ; s’applique en schéma personnalisé)',
|
||
settingsSchemeAutoTitle: 'Détection automatique',
|
||
settingsSchemeAutoDesc: 'Schéma conservateur : ne cède de la place selon la hauteur réelle de la barre de titre que lorsque l’API standard Window Controls Overlay est disponible ; aucune modification dans un environnement web',
|
||
settingsSchemeWebTitle: 'Web officiel DSH',
|
||
settingsSchemeWebDesc: 'Déclare explicitement l’exécution dans la version web officielle : aucune adaptation (même la géométrie standard WCO n’est pas appliquée)',
|
||
settingsSchemeCustomTitle: 'Schéma personnalisé',
|
||
settingsSchemeCustomDesc: 'Entièrement à votre contrôle : injecter du CSS personnalisé (pouvant remplacer les styles intégrés) et définir la distance de décalage de la barre de titre',
|
||
settingsSchemeDetectedSuffix: 'détecté',
|
||
settingsCustomCssTitle: 'CSS personnalisé',
|
||
settingsCustomCssDesc: 'Styles ajoutés à la fin de la page (à priorité égale, le dernier écrit gagne ; utilisez !important pour remplacer les variables en ligne écrites par JS)',
|
||
settingsCustomCssPlaceholder: '/* ex. : réserver 36px pour une coquille à barre de titre dessinée */\nhtml[data-dsh-title-bar-height="36"] {\n --dsh-title-bar-strip: 36px !important;\n}',
|
||
settingsSaveFailed: 'Échec de l’enregistrement',
|
||
settingsConflict: 'Les réglages ont été modifiés par une autre fenêtre, veuillez réessayer',
|
||
binaryNoPreview: 'Ce type de fichier ne prend pas en charge l’aperçu',
|
||
downloadToView: 'Télécharger pour consulter',
|
||
settingsSubagentTitle: 'Activer automatiquement la page Gestion des tâches lorsqu’un sous-agent apparaît',
|
||
settingsSubagentDesc: 'Lorsqu’un nouveau sous-agent est créé dans la session actuelle, activer la page Gestion des tâches ; sur les écrans larges, déployer également la carte latérale ; sur les écrans étroits, ne pas forcer l’ouverture du tiroir plein écran ; une fois l’option désactivée, l’ouverture est manuelle',
|
||
settingsJobsTitle: 'Activer automatiquement la page Gestion des tâches à l’arrivée d’une tâche d’arrière-plan',
|
||
settingsJobsDesc: 'À chaque nouvelle tâche d’arrière-plan dans la session actuelle, activer la page Gestion des tâches (chaque nouvelle tâche déclenche l’activation) ; sur les écrans larges, déployer également la carte latérale ; sur les écrans étroits, ne pas forcer l’ouverture du tiroir plein écran ; une fois l’option désactivée, l’ouverture est manuelle',
|
||
settingsToolsTitle: 'Injecter des outils de terminal au modèle',
|
||
settingsToolsDesc: 'Une fois activé, le modèle peut créer et piloter des terminaux de la barre latérale via les 8 outils terminal_* (désactivé par défaut)',
|
||
settingsFenceTitle: 'Contrôle des chemins de l\'espace de travail',
|
||
settingsFenceDesc: 'Activé, les fonctions fichiers de la barre latérale n\'atteignent que les chemins dans l\'espace de travail de la session (par défaut) ; désactivé, les fichiers de tout l\'hôte deviennent accessibles — les scripts de la page obtiennent la même portée pendant ce temps',
|
||
fenceErrorReason: 'Ce chemin est hors de l\'espace de travail de la session et a été bloqué par le contrôle',
|
||
fenceDisableAction: 'Désactiver le contrôle de l\'espace de travail',
|
||
settingsBottomTerminalTitle: 'Ouvrir automatiquement un terminal au premier déploiement du panneau inférieur',
|
||
settingsBottomTerminalDesc: 'Lors du premier déploiement du panneau inférieur dans une session, tenter d’y ouvrir automatiquement un nouvel onglet de terminal (la limite du nombre de terminaux s’applique toujours ; activé par défaut)',
|
||
settingsFontFamilyTitle: 'Police du terminal',
|
||
settingsFontFamilyDesc: 'Famille de polices personnalisée du terminal (CSS font-family, ex. "JetBrains Mono", monospace ; vide = suit la police monospace du thème)',
|
||
settingsFontFamilyPlaceholder: '"JetBrains Mono", monospace',
|
||
settingsFontSizeTitle: 'Taille de police du terminal',
|
||
settingsFontSizeDesc: 'Taille de police du terminal (9–32, défaut 13)',
|
||
settingsFontSizeSuffix: 'px',
|
||
settingsShellTitle: 'Chemin du shell',
|
||
settingsShellDesc: 'Shell lancé pour les terminaux de l’interface et du modèle (chemin absolu ou nom d’exécutable). Vide = résolution dans l’ordre existant : config.shell du yaml → $SHELL / shell de connexion / powershell.exe sur Windows. S’applique aux terminaux ouverts ensuite',
|
||
settingsShellPlaceholder: 'ex. /bin/zsh (vide = résolution automatique)',
|
||
settingsShellArgsTitle: 'Arguments du shell',
|
||
settingsShellArgsDesc: 'Arguments explicites de lancement du shell, séparés par des espaces ; non vide = remplacement complet des arguments par défaut (contrat identique aux shellArgs du yaml)',
|
||
settingsShellArgsPlaceholder: 'ex. -l (vide = arguments par défaut)',
|
||
settingsTabsTitle: 'Contenu de la barre latérale',
|
||
settingsViewersTitle: 'Aperçus de fichiers',
|
||
settingsGeneralTitle: 'Général',
|
||
settingsPopup: 'Réglages de la fonctionnalité',
|
||
settingsViewerCatchAll: 'Par défaut : n’importe quel fichier',
|
||
viewerImage: 'Image',
|
||
viewerPdf: 'PDF',
|
||
viewerMarkdown: 'Markdown',
|
||
viewerCode: 'Code',
|
||
viewerBinary: 'Téléchargement binaire',
|
||
viewerHtml: 'HTML',
|
||
browser: 'Navigateur',
|
||
browserPlaceholder: 'Saisissez une adresse, ex. example.com',
|
||
browserGo: 'Aller',
|
||
browserBack: 'Précédent',
|
||
browserForward: 'Suivant',
|
||
browserStart: 'Saisissez une adresse pour commencer à naviguer (mode bac à sable)',
|
||
browserBlockedScheme: 'Bloqué : seuls les liens http/https sont pris en charge',
|
||
browserBlockedLoopback: 'Bloqué : l’accès aux adresses locales ou internes n’est pas autorisé dans le navigateur',
|
||
browserInvalid: 'Adresse invalide',
|
||
browserNoSandboxWarning: 'Bac à sable désactivé : la page actuelle partage l’origine de l’interface et dispose de l’ensemble des droits de session (restauration possible dans les réglages)',
|
||
htmlNoSandboxWarning: 'Bac à sable désactivé : ce HTML partage l’origine de l’interface, peut lire les fichiers de session et les interfaces internes (restauration possible dans les réglages)',
|
||
sandboxStatusOn: 'Mode bac à sable : activé · la page ne peut pas accéder aux données de l’interface ni aux fichiers locaux ; l’état de connexion et les cookies tiers peuvent être indisponibles',
|
||
sandboxUnlock: 'Déverrouiller temporairement (non sécurisé)',
|
||
sandboxRestore: 'Restaurer le bac à sable',
|
||
settingsHtmlDefaultUnsafeTitle: 'Ouvrir l’aperçu HTML en mode non bac à sable par défaut (non sécurisé)',
|
||
settingsHtmlDefaultUnsafeDesc: 'Une fois activé, chaque ouverture d’un fichier HTML démarre l’aperçu en état non bac à sable (même origine que l’interface, pouvant lire les fichiers de session et les interfaces internes) ; la barre d’état permet de restaurer temporairement le bac à sable',
|
||
settingsHtmlSandboxTitle: 'Désactiver le bac à sable de l’aperçu HTML (non sécurisé)',
|
||
settingsHtmlSandboxDesc: 'Une fois désactivé, le HTML de l’aperçu s’exécute avec la même origine que l’interface, peut lire les fichiers de session, le stockage local et appeler les interfaces internes. À activer uniquement pour des fichiers entièrement fiables',
|
||
settingsBrowserSandboxTitle: 'Désactiver le bac à sable du navigateur (non sécurisé)',
|
||
settingsBrowserSandboxDesc: 'Une fois désactivé, tout site visité s’exécute avec la même origine que l’interface, peut lire les données de session et usurper votre état de connexion. À activer uniquement pour des sites entièrement fiables',
|
||
settingsBrowserLinksTitle: 'Ouvrir les liens externes du chat dans la barre latérale',
|
||
settingsBrowserLinksDesc: 'Une fois activé, cliquer sur un lien externe dans le chat ou l’interface l’ouvre dans la barre latérale au lieu d’une nouvelle fenêtre ; HTTP et HTTPS sont contrôlés séparément par les interrupteurs ci-dessous ; Ctrl/Cmd+clic autorise temporairement',
|
||
settingsBrowserHttpTitle: 'Ouvrir les pages HTTP de côté',
|
||
settingsBrowserHttpDesc: 'Une fois activé, cliquer sur un lien externe HTTP du chat ou de l’interface l’ouvre dans la barre latérale (les pages de plugin déclarant urlTarget sont prioritaires) ; Ctrl/Cmd+clic autorise temporairement',
|
||
settingsBrowserHttpsTitle: 'Ouvrir les pages HTTPS de côté',
|
||
settingsBrowserHttpsDesc: 'Une fois activé, cliquer sur un lien externe HTTPS du chat ou de l’interface l’ouvre dans la barre latérale. Désactivé par défaut : la plupart des sites HTTPS refusent l’encapsulation, le navigateur système est plus fluide',
|
||
settingsBrowserLoopbackTitle: 'Adresses locales autorisées',
|
||
settingsBrowserLoopbackDesc: 'Liste blanche séparée par des virgules des adresses de bouclage (ex. localhost:5174 ou 127.0.0.1:8080) que le navigateur de la barre latérale peut visiter ; vide bloque toutes les adresses locales par défaut. Le bac à sable reste actif — les pages ne peuvent pas lire les données de l interface',
|
||
settingsBrowserLoopbackPlaceholder: 'ex. localhost:5174, 127.0.0.1:8080',
|
||
browserOpenExternal: 'Ouvrir dans le navigateur',
|
||
browserEmbedBlocked: '{host} a refusé la demande d’encapsulation',
|
||
browserEmbedBlockedDesc: 'Ce site interdit son affichage dans d’autres pages (X-Frame-Options / frame-ancestors) et ne peut donc pas être chargé dans la barre latérale. Vous pouvez l’ouvrir directement dans le navigateur',
|
||
browserEmbedAnyway: 'Charger quand même',
|
||
subagent: 'Gestion des tâches',
|
||
openSubagent: 'Gestion des tâches',
|
||
subagentMainAgent: 'Agent principal',
|
||
subagentEmpty: 'Aucun sous-agent pour l’instant',
|
||
subagentEmptyDesc: 'Les sous-agents dérivés de l’agent principal actuel s’afficheront ici',
|
||
subagentRunning: 'En cours',
|
||
subagentInactive: 'Inactif',
|
||
subagentModeOneShot: 'À usage unique',
|
||
subagentModeContinuable: 'Reprenable',
|
||
subagentCount: '{count} sous-agent(s)',
|
||
subagentCountRunning: '{count} sous-agent(s) · {running} en cours',
|
||
subagentDiagCorrupt: 'Répertoire corrompu',
|
||
subagentDiagUnsupported: 'Entrée non prise en charge',
|
||
subagentDiagUnavailable: 'Indisponible',
|
||
subagentThinking: 'Réflexion…',
|
||
sideChat: 'Discussion latérale (bêta)',
|
||
sideChatNew: 'Nouvelle discussion',
|
||
sideChatUntitled: 'Nouvelle discussion',
|
||
sideChatEmpty: 'Aucune discussion latérale pour l’instant',
|
||
sideChatEmptyDesc: 'Chaque discussion latérale est un onglet indépendant de la barre d’onglets, qui hérite du contexte de la session actuelle et n’entre jamais dans la session principale',
|
||
sideChatCreating: 'Création de la discussion latérale…',
|
||
sideChatRetry: 'Réessayer',
|
||
sideChatThreads: 'Changer de fil / nouveau',
|
||
sideChatSave: 'Enregistrer comme nouvelle session',
|
||
sideChatSaveTitle: 'Promouvoir ce fil en session de premier niveau, visible dans la liste des sessions principales',
|
||
sideChatSaved: 'Enregistré comme nouvelle session',
|
||
sideChatNoTurn: 'Au moins un tour de discussion doit être terminé avant l’enregistrement',
|
||
sideChatPendingDrop: 'La dernière relance inachevée ne sera pas incluse dans la nouvelle session',
|
||
sideChatFirstPlaceholder: 'Saisissez la première question, le contexte de la session actuelle est hérité…',
|
||
sideChatComposerPlaceholder: 'Relance…',
|
||
sideChatThinking: 'Approfondissement…',
|
||
sideChatThink: 'Processus de réflexion',
|
||
sideChatInjection: 'Contexte injecté',
|
||
sideChatSend: 'Envoyer',
|
||
sideChatCancel: 'Arrêter',
|
||
sideChatCancelTitle: 'Interrompre le tour en cours (la file d’attente est conservée)',
|
||
sideChatClose: 'Fermer le fil',
|
||
sideChatCloseTitle: 'Libérer l’agent du fil (l’historique est conservé)',
|
||
sideChatError: 'Erreur de la discussion latérale : {message}',
|
||
sideChatTurnUsage: 'Entrée {input} tok · Sortie {output} tok',
|
||
sideChatBlockCollapse: 'Réduire',
|
||
sideChatBlockCollapseAria: 'Réduire',
|
||
sideChatBlockExpand: 'Déplier {hidden} lignes',
|
||
sideChatBlockExpandAria: 'Déplier {hidden} lignes de plus',
|
||
sideChatBlockSignal: 'Terminé par le signal : {signal}',
|
||
sideChatBlockExitCode: 'Code de sortie {code}',
|
||
sideChatBlockRunning: 'En cours',
|
||
sideChatBlockFailed: 'Échec',
|
||
sideChatBlockDone: 'Terminé',
|
||
sideChatBlockNoExitCode: '(no exit code)',
|
||
|
||
codeLabel: 'Code',
|
||
|
||
wrapLabel: 'Wrap',
|
||
|
||
unwrapLabel: 'Unwrap',
|
||
|
||
sideChatBlockNoOutput: '(aucune sortie)',
|
||
sideChatBlockFiles: '{count} fichiers',
|
||
sideChatBlockWindow: '{shown} sur {total} lignes',
|
||
sideChatConnDisconnected: 'Connexion perdue',
|
||
sideChatConnReconnect: 'Reconnecter',
|
||
sideChatConnConnecting: 'Reconnexion…',
|
||
sideChatConnRecovered: 'Connexion rétablie',
|
||
sideChatConnReconnectAction: 'Reconnecter maintenant',
|
||
sideChatConnRestartAction: 'Relancer la connexion',
|
||
jobs: 'Tâches d’arrière-plan',
|
||
jobsCount: '{count} tâche(s) d’arrière-plan',
|
||
jobsCountRunning: '{count} tâche(s) d’arrière-plan · {running} en cours',
|
||
jobStatusRunning: 'En cours',
|
||
jobStatusStopping: 'Arrêt en cours',
|
||
jobStatusCompleted: 'Terminée',
|
||
jobStatusKilled: 'Interrompue',
|
||
jobStatusFailed: 'Échouée',
|
||
jobDurationSeconds: '{seconds} s',
|
||
jobDurationMinutes: '{minutes} min {seconds} s',
|
||
jobDurationHours: '{hours} h {minutes} min',
|
||
jobViewOutput: 'Voir la sortie',
|
||
jobHideOutput: 'Réduire la sortie',
|
||
jobNoOutput: 'Aucune sortie pour l’instant',
|
||
jobNotReadYet: 'En attente que le modèle lise la sortie de cette tâche (la sortie s’affichera ici une fois que le modèle aura exécuté job_output)',
|
||
jobOutputTruncated: 'Sortie trop longue, affichage tronqué',
|
||
jobOutputError: 'Échec de la lecture de la sortie',
|
||
jobKill: 'Interrompre',
|
||
jobKillConfirm: 'Cliquez à nouveau pour confirmer l’interruption',
|
||
jobKillError: 'Échec de l’interruption',
|
||
addPluginsTabCard: 'Ajouter un plugin d’onglet',
|
||
addPluginsTabCardDesc: 'Enregistrer une nouvelle page de la barre latérale',
|
||
addPluginsViewerCard: 'Ajouter un plugin d’aperçu',
|
||
addPluginsViewerCardDesc: 'Enregistrer un aperçu d’un type de fichier',
|
||
addPluginsTabDesc: 'Les pages de la barre latérale (onglets) peuvent être étendues par des plugins. Les plugins s’enregistrent via le service ctx.betterSidebar ; cliquez sur « Installer » pour copier la commande d’installation, collez-la dans un terminal de l’environnement DSH et exécutez-la.',
|
||
addPluginsViewerDesc: 'Les aperçus de fichiers peuvent être étendus par des plugins. Les plugins s’enregistrent via le service ctx.betterSidebar ; cliquez sur « Installer » pour copier la commande d’installation, collez-la dans un terminal de l’environnement DSH et exécutez-la.',
|
||
addPluginsBrowseMore: 'Parcourir plus de plugins sur GitHub (topic : dsh-apes-sidebar)',
|
||
addPluginsSearch: 'Rechercher par nom / description de plugin…',
|
||
addPluginsNoMatch: 'Aucun plugin correspondant',
|
||
addPluginsRecommended: 'Plugins recommandés',
|
||
addPluginsEmpty: 'Aucun plugin référencé pour l’instant, publiez le vôtre sous le topic GitHub',
|
||
openPlugin: 'Aller',
|
||
copyInstall: 'Copier la commande d’installation',
|
||
pluginOfficeDesc: 'Aperçu de la suite Office (.docx / .xlsx / .pptx) pour l’éditeur better-sidebar, avec les lourdes bibliothèques de rendu Office extraites du package principal et installées à la demande',
|
||
pluginFlowglassDesc: 'Schéma de flux de session en temps réel : trois couloirs pour l’utilisateur, l’assistant et les appels d’outils, avec regroupement en parallèle, branches de sous-agents, exploration par niveau et états en temps réel ; enregistre l’onglet natif « Flowglass » une fois better-sidebar installé, sinon conserve un tiroir indépendant',
|
||
pluginGitForgeDesc: 'Onglet « Identifiants Git » de better-sidebar : bibliothèque de comptes GitHub/Gitea (et autres forges) + autorisations par projet + blocage strict des stratégies push ; les tokens restent dans les secrets locaux, jamais dans le contexte du modèle ; fournit un outil GitForge en lecture seule et un helper HTTPS de credentials pour l’agent',
|
||
pluginGithubWorkbenchDesc: 'Onglet « GitHub Workbench » de better-sidebar : arborescence du dépôt distant + Issues / Pull requests / Actions avec prise en charge complète en écriture — création d’issue/PR, commentaire, édition, fermeture/réouverture, merge squash·merge·rebase (confirmation renforcée), relance/annulation de la CI ; le sélecteur de dépôt liste automatiquement les dépôts accessibles et recherche les dépôts publics ; sans better-sidebar, il bascule sur un panneau latéral droit autonome',
|
||
pluginMdExportDesc: 'Ajoute un bouton « Exporter » à la barre d’outils Markdown de better-sidebar : rend en un clic le .md courant en HTML autonome (tableaux/blocs de code/diagrammes Mermaid en ligne, mise en page fidèle au thème d’aperçu) et l’enregistre à côté du .md, ou exporte en PDF via la boîte de dialogue d’impression',
|
||
pluginCodeNavDesc: 'Navigation de prévisualisation de code : détecte le langage selon le type de fichier et colore la syntaxe, plan des symboles (filtres classes/méthodes/variables + saut en un clic) et recherche dans le fichier (toutes les correspondances surlignées, précédent/suivant, respect de la casse) — prend en charge l’aperçu des fichiers de code dans l’éditeur better-sidebar',
|
||
pluginSuhuangScrollDesc: 'Connecte le Runtime Suhuang Scroll local aux réglages DSH et à better-sidebar pour configurer le modèle, tester la connexion et contrôler la correction continue ; nécessite Suhuang Scroll Runtime et dsh-apes-sidebar',
|
||
pluginBetterOverleafDesc: 'Onglet Overleaf pour better-sidebar : connexion directe via navigateur CDP (Chromium tiers pris en charge), liste/sélection de projets, miroirs git locaux sous <workspace>/overleaf/, synchronisation git bidirectionnelle avec repli API en lecture seule, et aperçu des fichiers via l’atelier de la barre latérale',
|
||
pluginGitRemotesDesc: 'Onglet Git Remotes de better-sidebar : branches/amonts/ahead-behind, fetch (avec prune possible), pull en ff-only, push seulement après confirmation. Ne remplace pas la mise en scène/les commits du Git intégré et ne fournit pas de force-push ni de push automatique par le modèle',
|
||
pluginSentinelDesc: 'Système de réveil d’agent piloté par conditions : capteurs fichier/processus/port/HTTP/commande/webhook, les sessions en veille se réveillent automatiquement lorsque les conditions sont remplies ; enregistre l’onglet « Sentinel » affichant le tableau de surveillance global du serveur',
|
||
pluginServerDeckDesc: 'Tableau de bord de serveurs en cartes : une carte par hôte avec statut en ligne, OS, durée de fonctionnement, utilisation CPU/RAM/disque et latence ; cliquez sur une carte pour ouvrir un terminal xterm.js interactif ; import du ~/.ssh/config en un clic (alias d’hébergement Git ignorés automatiquement). Enregistre un onglet « Serveurs » natif quand better-sidebar est installé, sinon conserve le tiroir latéral autonome',
|
||
pluginSidebarQaDesc: 'Onglet de questions sur sélection basé sur better-sidebar : sélection dans la discussion → question dans le panneau de droite → session de relance indépendante du même espace de travail (❓ relance · thème) : un modèle rapide sans réflexion compresse le contexte de la discussion principale puis l’injecte avec la citation, sans interrompre la discussion principale ; les relances peuvent être imbriquées, poursuivies et archivées',
|
||
pluginSidenoteDesc: 'Side chat façon Codex + annotations sur sélection : forker la session en cours dans un panneau latéral persistant (archivée hors de la liste des sessions, plusieurs instances, commande /side, survit au rechargement, le modèle suit la session principale) ; sélectionner un texte assistant → badge numéroté + éditeur de notes → un chip « N annotations » qui accompagne votre prochain message, ou poser sa question directement dans un side chat',
|
||
pluginSshTunnelDesc: 'Onglet « Tunnel SSH » de better-sidebar : inventaire multi-machines + autorisations par projet + clés conservées localement ; outil de modèle SSHManager (exec/SFTP/stratégies de session) ; terminal interactif central et SFTP à deux volets',
|
||
pluginTurnReviewDesc: 'Passerelle humaine sur le diff de « ce dernier tour » : Approve / Request changes, sans forker la session ; fichiers regroupés par session principale / sous-agent / non attribués, cochez les fichiers pour renvoyer + commentaire facultatif ; cliquez un fichier pour voir le diff entre l’instantané de début de tour et maintenant. Ce n’est pas /rewind',
|
||
pluginVideoPreviewDesc: 'Aperçu vidéo en ligne dans l’éditeur better-sidebar (.mp4/.webm/.mov/.mkv/.avi, etc.), avec une route hôte /video prenant en charge HTTP Range (206) ; barre de progression déplaçable, non limité par la mediaLimit de 20 Mo',
|
||
pluginDocsPanelDesc: '« Documentation globale » dans la barre latérale DSH : notes Markdown globales, lisibles depuis n’importe quel espace de travail — sélection dans la liste, saut via le plan flottant, ouverture externe Chrome / VS Code, copie de code, répertoire configurable (défaut ~/.dsh/docs)',
|
||
pluginEgoBrowserDesc: 'Le navigateur d’agent pour DeepSeek Harness : 32 outils ego_* pilotent un vrai Chromium ; un onglet natif « ego browser » dans la barre latérale montre en direct chaque page visitée par l’agent — cliquez, glissez et tapez pour reprendre la main. Enregistre l’onglet automatiquement si better-sidebar est présent, sinon une bulle flottante',
|
||
pluginBilingualReaderDesc: 'Lire des PDF dans la barre latérale DSH : affichage PDF natif, sélectionnez du texte pour le traduire avec le LLM, avec contexte et totalement isolé de la conversation principale',
|
||
changesRedactOn: "Masquage actif : les secrets s'affichent en [REDACTED] ; cliquez pour désactiver (à vos risques)",
|
||
changesRedactOff: "Masquage désactivé : le contenu s'affiche tel quel ; cliquez pour activer",
|
||
changesRedactOnLabel: "Masquage",
|
||
changesRedactOffLabel: "Sans masquage",
|
||
changesRedactBanner: "Masqué",
|
||
pluginSentinelName: 'dsh-sentinel Système de réveil',
|
||
pluginEgoBrowserName: 'ego-browser Navigateur d’agents',
|
||
pluginBetterOverleafName: 'dsh-better-overleaf Onglet Overleaf',
|
||
pluginDocsPanelName: 'dsh-docs-panel Docs globales',
|
||
pluginFlowglassName: 'dsh-flowglass Flowglass',
|
||
pluginGitForgeName: 'dsh-git-forge Identifiants Git',
|
||
pluginGitRemotesName: 'dsh-git-remotes Dépôts distants Git',
|
||
pluginGithubWorkbenchName: 'dsh-github-workbench Atelier GitHub',
|
||
pluginSidebarQaName: 'dsh-sidebar-qa Sélectionner & demander',
|
||
pluginSidenoteName: 'dsh-sidenote Chat latéral',
|
||
pluginServerDeckName: 'dsh-server-deck Tableau de bord serveurs',
|
||
pluginSuhuangScrollName: 'dsh-suhuang-scroll Suhuang Scroll',
|
||
pluginSshTunnelName: 'dsh-ssh-tunnel Tunnel SSH',
|
||
pluginTurnReviewName: 'dsh-turn-review Revue du tour',
|
||
pluginBilingualReaderName: 'dsh-bilingual-reader Lecteur bilingue',
|
||
pluginOfficeName: 'Aperçu Office',
|
||
pluginMdExportName: 'Exportation Markdown',
|
||
pluginCodeNavName: 'Navigateur d’aperçu de code',
|
||
pluginVideoPreviewName: 'Aperçu vidéo',
|
||
presetDshDesktopDesc: 'Mode avancé Electron (sans bordure) : macOS réserve 20px en haut ; Windows réserve 32px pour la barre de titre sans WCO',
|
||
}
|