feat(i18n): 覆盖支持扩展到 19 语言(de/fr/pt/ko/ar/hi/id/tr/vi/th/ru/it/nl/sv/pl/zh-HK/zh-TW/zh-MO)

This commit is contained in:
HuanLinOTO
2026-08-23 14:57:48 +08:00
parent 16a809594c
commit 7f8f95a59b
20 changed files with 6224 additions and 2 deletions
+338
View File
@@ -0,0 +1,338 @@
/**
* 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',
explorer: 'Explorateur',
git: 'Gestion de code source',
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',
collapse: 'Réduire la barre latérale',
expand: 'Déployer la barre latérale',
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',
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})',
preview: 'Aperçu',
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',
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',
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',
checkoutError: 'Échec du changement de branche',
history: 'Historique',
changes: 'Modifications',
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',
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é',
settingsOpenTitle: 'Ouvert par défaut pour les nouvelles sessions',
settingsOpenDesc: 'Déployer automatiquement la carte latérale lors de la création d’une session ; les sessions existantes conservent chacune leur disposition',
settingsWidthTitle: 'Part de largeur par défaut',
settingsWidthDesc: 'Pourcentage de la largeur de la fenêtre occupé par la carte latérale pour les nouvelles sessions (20–60)',
settingsWidthSuffix: '%',
settingsOpenPathTitle: 'Ouvrir les fichiers de discussion dans la barre latérale',
settingsOpenPathDesc: 'À la place de l’application par défaut du système, ouvrir dans l’éditeur de la barre latérale les liens vers les fichiers du chat (lignes d’outils, listes de produits, mentions de fichiers)',
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: 'Déployer automatiquement la page de gestion des tâches à la détection d’un sous-agent',
settingsSubagentDesc: 'Lorsque la session actuelle produit un nouveau sous-agent, déployer automatiquement la barre latérale et ouvrir la page de gestion des tâches ; une fois désactivé, l’ouverture est manuelle',
settingsJobsTitle: 'Déployer automatiquement la page des tâches d’arrière-plan sur nouvelle tâche',
settingsJobsDesc: 'Lorsque la session actuelle produit une nouvelle tâche d’arrière-plan, déployer automatiquement la barre latérale et ouvrir la page des tâches (déclenché à chaque nouvelle tâche) ; une fois désactivé, 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)',
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',
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}',
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-better-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',
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',
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',
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)',
}