Files
apes-sidebar/src/client/locales-nl.ts
T
Menghuan1918 d38fefe55d feat(tasks): 任务输出常驻浮动窗 + 节点卡去竖线 + 手机设置
三件事一起落地(用户 brief),各自独立可验证:

1) 后台任务输出改为常驻浮动窗
   - 新增 src/client/FloatingWindow.tsx + .module.css:可复用组件,标题栏(拖拽手柄 +
     复制/关闭)、内容区(自滚动,长输出不再跑出视口)、可选底部行、三个拉伸柄
     (右/下/右下)。生命周期与 AnchoredPopover 相反:外部点击、失焦、锚点离屏都不关,
     只有关闭按钮与 Escape 结束;尺寸只在挂载时量一次(流式输出帧不会挪动读者摆好的窗);
     拖拽保持整窗在视口内(放不下才退化到保留 48px 可达);视口变化时夹回。
   - 手势复用既有范式:移动走 window 级 pointermove(同 AnchoredPopover),拉伸走
     setPointerCapture + createFrameBatcher(同 EditorHost 的面板拉伸)。
   - JobOutputPopoverContent → JobOutputWindow;顺带修掉「跟随最新」从不滚动的 bug
     (原先滚的是 TerminalBlock 外面那个永不滚动的 div),并清掉随旧弹窗死掉的
     .popPre / .jobPopPre 规则。节点/工作流详情与任务窗保持原样。

2) 节点卡统一
   - 删除两条左侧竖条(层级条 .cardTop::before、当前会话条 .nodeCurrent::before);
     层级改由上段极淡底色承担(7/5/3.5/2.5% → 9/7/5/3.5% 补偿对比度);
     当前会话改为 2px accent 描边(「边框加粗高亮」)。
   - 圆角 4px → 8px(与浮动窗同一家族);成员/工作流/聚合按用户选择保留类型区分。
   - 2px 而非 1.5px:真机 recon 发现 Chromium 在 DPR 1 下把亚像素边框向下取整,
     1.5px 的「加粗」完全看不出(实测 borderTopWidth: "1px")。几何不受影响
     (border-box + min-height,卡片外框 247×134 与预算逐像素一致)。

3) 手机设置
   - 两个新偏好 mobileNoAutoOpen / mobileDefaultTree(默认都开),落到 prefs-shared、
     PrefsSchema(volatile 自动)、parsePrefs 校验与设置页新增的「手机」分组。
   - 窄屏(沿用 768px 断点)时:新子代理与新后台任务都不再自动激活任务页;
     任务页默认树状图(页内切换仍是临时覆盖)。宽屏或开关关掉后行为完全不变。
   - 5 条词条 ×20 份词典;外部插件指南的 PrefsSchema 键清单同步。

验证:typecheck / lint ✅;pnpm test 1254 passed / 9 skipped(新增 14 例);
挂载 lane 7/7(真实 DSH 0.1.7-rc.2);3080 真机自测通过(长输出窗口内部滚动
5459px/449px、拖拽 424→304、拉伸 1008×540→918×480、外部点击不关、Escape 关、
卡片 8px/2px/无竖条、窄屏不自动弹出且默认树状图)。

(cherry picked from commit 7d9b428c6c34d28ad2d60c2086496eb533902273)
2026-09-27 22:18:57 +08:00

493 lines
32 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* The nl (Dutch) dictionary for the betterSidebar namespace.
*
* Mirrors the key set of `zh` in `locales.ts`. The sidebar's `t()`
* consults this dict when `attachBetterLocale(store)` has been called
* with an active better-locale store whose `active` is `'nl'`; absent
* that, the existing zh/en chain runs unchanged.
*
* Translation conventions:
* - Formal "u" form for user-facing text.
* - Technical loanwords stay in English (Git, SSH, HTTP, URL, Markdown, PDF, VS Code).
* - Git vocabulary follows English-derived conventions (stagen, unstagen, commit, branch).
* - Placeholders keep `{name}` verbatim (interpolation runs after lookup).
* - English brand names (VS Code, Cursor, Zed, SSH) stay as-is.
*/
export const nl: Record<string, string> = {
files: 'Bestanden',
guideDescFiles: 'Blader door de bestandsboom van de workspace; klik opent voorbeeld of editor',
guideDescGit: 'Git-wijzigingen en bestandswijzigingen van deze sessie in één tabblad',
guideDescSubagent: 'Workflowgrafiek, teamtakenbord en achtergrondtaken, live',
guideDescSidechat: 'Een onafhankelijke vervolgthread met de context van deze sessie',
guideDescTerminal: 'Een echte shell (xterm + pty) met herverbinding',
guideDescBrowser: 'Ingebouwde browser die chatlinks kan overnemen',
changesSessionEmpty: 'Nog geen bestandsbewerkingen in deze sessie',
changesRead: 'Lezen',
changesMdReading: 'Lezen',
changesHtmlRender: "Renderen",
changesHtmlRaw: "Bron",
changesPdfRender: "Renderen",
changesPdfRaw: "Bron",
changesMdRaw: 'Brontekst',
changesWrite: 'Schrijven',
changesEdit: 'Bewerken',
changesRunning: 'actief',
changesError: 'fout',
changesFold: '{count} regels… klik om uit te klappen',
changesFoldLoading: 'Uitklappen…',
changesFoldUnavailable: 'Context niet beschikbaar',
changesContext: 'context',
changesPriorUnknown: 'Eerdere inhoud valt buiten het venster; getoond als volledig nieuw',
explorer: 'Verkenner',
terminal: 'Terminal',
editor: 'Editor',
editorExplorer: 'Bestand openingsgedrag',
editorExplorerDesc: 'Bepaalt hoe bestanden worden geopend',
editorExplorerMerged: 'Samengevoegd',
editorExplorerMergedDesc: 'Bestanden wisselen in-place in hetzelfde venster; nieuwe vensters beginnen met de boom open',
editorExplorerSplit: 'Afzonderlijk',
editorExplorerSplitDesc: 'Vensters zonder pad zijn de zelfstandige verkenner (alleen bestandsboom); elk bestand opent een eigen venster (boom gedockt, standaard gesloten)',
editorTreeToggle: 'Bestandsboompaneel',
editorPathPlaceholder: 'Voer een bestandspad in (relatief aan de sessiemap of absoluut), Enter om te openen',
editorSearchPlaceholder: 'Zoek op bestandsnaam…',
editorSearchNoResults: 'Geen overeenkomende bestanden',
editorSearchTruncated: 'Te veel resultaten — een gedeeltelijke lijst wordt getoond',
editorEmptyHint: 'Kies een bestand uit het boompaneel of het pad-invoerveld hierboven om te beginnen met previewen',
openFileNewTab: 'Openen in nieuw tabblad',
openFileSide: 'Openen aan de zijkant',
openWithMenu: 'Openen met',
openWithSshSuffix: ' (SSH)',
pinOpenWith: 'Vastmaken aan menu',
unpinOpenWith: 'Losmaken',
openWithExplorer: 'Bestandsbeheerder',
openWithVscode: 'VS Code',
openWithCursor: 'Cursor',
openWithZed: 'Zed',
openWithSettingsSshTitle: 'SSH externe host',
openWithSettingsSshDesc: 'Leeg = lokale werkruimte; met een user@host of SSH-alias schakelen VSCode-familie-openers over op het vscode-remote/ssh-remote protocol en worden de Bestandsbeheerder / Zed / niet-VSCode-familie custom editors verborgen uit het menu',
openWithSettingsSshPlaceholder: 'user@host of SSH-alias',
openWithSettingsCustomTitle: 'Aangepaste editors',
openWithSettingsCustomDesc: 'Naam + URL-sjabloon ({path} placeholder) + VSCode-familie-vlag; in externe modus kunnen alleen VSCode-familie-editors een extern pad openen',
openWithSettingsAdd: 'Toevoegen',
openWithSettingsName: 'Naam',
openWithSettingsTemplate: 'bijv. cursor://file/{path}',
openWithSettingsFamily: 'VSCode-familie',
openWithSettingsFamilyDesc: 'Deze editor spreekt het VSCode URL-dialect (ondersteunt SSH-externe openingen)',
openWithSettingsRemove: 'Verwijderen',
openWithSettingsInvalidHint: 'Editors met een ontbrekende naam of een sjabloon zonder {path} / scheme:// worden niet in het menu getoond',
newTab: 'Nieuw tabblad',
brokenSymlink: 'Gebroken symlink',
close: 'Sluiten',
closeOtherTabs: 'Andere tabbladen sluiten',
closeLeftTabs: 'Tabbladen links sluiten',
closeRightTabs: 'Tabbladen rechts sluiten',
pinTerminal: 'Terminal vastmaken',
pinAgentTerminal: 'Agent-terminal vastmaken',
pinToWorkspace: 'Vastmaken aan werkruimte',
pinToGlobal: 'Wereldwijd vastmaken',
unpinTerminal: 'Losmaken',
collapseBottomPanel: 'Onderpaneel inklappen',
expandBottomPanel: 'Onderpaneel uitklappen',
terminalError: 'Terminalverbinding mislukt',
terminalConnectFailed: 'Terminalverbinding herhaaldelijk mislukt',
terminalRetry: 'Opnieuw proberen',
terminalWaitBanner: 'Agent wacht op {needle}',
terminalSkipWait: 'Wachten overslaan',
terminalDepsFailed: 'Terminalafhankelijkheid node-pty kon niet worden geladen',
terminalDepsHint: 'Voer het onderstaande commando uit in een terminal of cmd op de DSH-machine om het te herstellen en probeer het opnieuw (node-pty blijft in sync met de DSH-coreversie):',
terminalDepsProfile: ' (gedetecteerde profile: {profile})',
terminalShellNotFound: 'Geconfigureerde shell niet gevonden: {name} — controleer het shell-pad onder Instellingen → Side card → Terminal',
preview: 'Voorbeeld',
toc: 'Inhoudsopgave',
edit: 'Bewerken',
mermaidError: 'Mermaid-renderen mislukt',
mermaidZoomIn: 'Inzoomen',
mermaidZoomOut: 'Uitzoomen',
mermaidZoomReset: 'Resetten',
mermaidZoomHint: 'Scrollen om te zoomen · slepen om te pannen · Esc om te sluiten',
refresh: 'Vernieuwen',
showInFolder: 'In map tonen',
refreshUnsavedConfirm: 'Het bestand is op schijf gewijzigd. Vernieuwen gooit niet-opgeslagen wijzigingen weg. Doorgaan?',
save: 'Opslaan',
saved: 'Opgeslagen',
unsaved: 'Niet opgeslagen',
saveFailed: 'Opslaan mislukt',
truncation: 'Bestand te groot — alleen de eerste 512KB worden getoond',
binary: 'Binair bestand, geen voorbeeld beschikbaar',
loading: 'Laden…',
error: 'Laden mislukt',
retry: 'Opnieuw proberen',
notRepo: 'Deze map is geen git-repository',
noChanges: 'Geen wijzigingen',
statusTruncated: 'Te veel wijzigingen; alleen de eerste 2000 items worden weergegeven',
stage: 'Stagen',
unstage: 'Unstagen',
stageAll: 'Alles stagen',
unstageAll: 'Alles unstagen',
commitPlaceholder: 'Commitbericht (Ctrl+Enter)',
commit: 'Commit',
branch: 'Branch',
worktree: 'Worktree',
checkoutError: 'Wisselen van branch mislukt',
history: 'Geschiedenis',
changes: 'Bestandswijzigingen',
changesGitLens: 'Git',
changesSessionLens: 'Sessie',
changesFilterAll: 'Alles',
changesFilterEmpty: 'Geen bewerkingen van dit soort',
changesOpenDiffTab: 'In eigen diff-tabblad openen',
changesClosePreview: 'Voorbeeld sluiten',
changesResizePreview: 'Voorbeeld vergroten/verkleinen',
changesLoadError: 'Sessiebestandsregistraties zijn nu niet beschikbaar',
staged: 'Gestaged',
unstaged: 'Niet gestaged',
cancel: 'Annuleren',
diffEmpty: 'Geen tekstwijzigingen',
diffLoadError: 'Diff laden mislukt',
diffBinary: 'Binair',
diffAdded: 'Toegevoegd',
diffDeleted: 'Verwijderd',
diffRenamed: 'Hernoemd',
diffExpand: '{count} rijen extra uitklappen',
discard: 'Wijzigingen verwijderen',
discardTitle: 'Wijzigingen verwijderen',
discardDesc: 'Dit verwijdert de worktree-wijzigingen van "{path}" (niet terugdraaibaar).',
viewCommitDiff: 'Commit-diff bekijken',
copyShortHash: 'Korte hash kopiëren',
copyFullHash: 'Volledige hash kopiëren',
copySubject: 'Onderwerp kopiëren',
revertCommit: 'Commit reverten',
revertTitle: 'Commit reverten',
revertDesc: 'Maakt een nieuwe commit op de huidige branch die "{subject}" revertd.',
cherryPickCommit: 'Commit cherry-picken',
cherryPickTitle: 'Commit cherry-picken',
cherryPickDesc: 'Past de wijzigingen van "{subject}" toe op de huidige branch.',
timeJustNow: 'zojuist',
timeMinutesAgo: '{n} min geleden',
timeHoursAgo: '{n} u geleden',
timeYesterday: 'gisteren',
loadMore: 'Meer laden',
historyLoadError: 'Meer geschiedenis laden mislukt',
produced: 'Geproduceerd',
disconnected: 'Terminalverbinding verbroken, opnieuw verbinden…',
exited: 'Terminalproces beëindigd',
noSession: 'Selecteer een conversatie om de zijbalk te gebruiken',
pluginNotLoaded: 'Plugin niet geladen; tabblad niet beschikbaar:',
parent: 'Bovenliggende map',
copied: 'Gekopieerd',
copy: 'Kopiëren',
openEditor: 'Editor openen',
referenceFile: '@bestand',
addToConversation: 'Aan conversatie toevoegen',
copyRelative: 'Relatief pad kopiëren',
copyAbsolute: 'Absoluut pad kopiëren',
rename: 'Naam wijzigen',
renameInvalid: 'De naam mag niet leeg zijn of padscheidingstekens bevatten.',
delete: 'Verwijderen',
deleteTitle: '"{name}" verwijderen?',
deleteDescFile: 'Dit verwijdert het bestand permanent. Dit kan niet ongedaan worden gemaakt.',
deleteDescDir: 'Dit verwijdert de map en alles erin permanent. Dit kan niet ongedaan worden gemaakt.',
dismiss: 'Sluiten',
download: 'Downloaden',
uploadFiles: 'Bestanden uploaden',
uploadFolder: 'Map uploaden',
uploadHere: 'Hier uploaden',
uploadDropHint: 'Sleep bestanden/mappen hierheen om te uploaden',
uploadDropChat: 'Sleep naar de chat om afbeeldingen toe te voegen',
uploadTo: 'Uploaden naar {dir}',
uploadingTo: 'Uploaden naar {dir}…',
uploadProgress: 'Uploaden {done}/{total}: {name}',
uploadDone: '{count} bestand(en) geüpload',
uploadFailed: 'Uploaden mislukt: {error}',
uploadFailedUnknown: 'Onbekende fout',
uploadTooLarge: 'Bestand te groot (boven de uploadlimiet)',
uploadCancelled: 'Upload geannuleerd',
settingsNav: 'Zijkaart',
settingsIntro: 'Beheer wat de zijkaart toont en hoe deze zich gedraagt',
settingsPopupDesc: 'Gerelateerde opties voor {feature} configureren',
settingsDone: 'Klaar',
settingsOpenToolsTitle: 'Zijbalk-openen-tool voor het model injecteren',
settingsOpenToolsDesc: 'Indien ingeschakeld kan het model bestanden, mappen en HTTP(S)-pagina\'s in de zijbalk openen via de sidebar_open-tool (standaard uit)',
settingsTitleBarTitle: 'Positiecompatibiliteitsmodus',
settingsTitleBarDesc: 'Kies het titelbalk-compatibiliteitsschema: auto-detect (standaard, conservatief) / DSH officiële web / bekende desktop-shells / aangepast (verschuivingsafstand + aangepaste CSS)',
settingsTitleBarStripTitle: 'Verschuivingsafstand',
settingsTitleBarStripDesc: 'Titelbalk-striphoogte: hoeveel pixels de zijbalkknoppen en -inhoud naar beneden schuiven (0–120, standaard 40; geldt onder het aangepaste schema)',
settingsSchemeAutoTitle: 'Auto-detect',
settingsSchemeAutoDesc: 'Conservatief: alleen de standaard Window Controls Overlay API draagt bij (werkelijke caption-overlay-hoogte); gewone webomgevingen worden niet aangepast',
settingsSchemeWebTitle: 'DSH officiële web',
settingsSchemeWebDesc: 'Expliciet declareren dat u op de officiële web-UI draait: geen enkele aanpassing (ook de standaard WCO-geometrie niet)',
settingsSchemeCustomTitle: 'Aangepast',
settingsSchemeCustomDesc: 'Volledige controle: aangepaste CSS injecteren (kan ingebouwde stijlen overschrijven) en de verschuivingsafstand van de titelbalk instellen',
settingsSchemeDetectedSuffix: 'gedetecteerd',
settingsCustomCssTitle: 'Aangepaste CSS',
settingsCustomCssPlaceholder: '/* bijv. reserveer 36px voor een shell met een zelf-getekende titelbalk */\nhtml[data-dsh-title-bar-height="36"] {\n --dsh-title-bar-strip: 36px !important;\n}',
settingsSaveFailed: 'Opslaan mislukt',
settingsConflict: 'De instelling is in een ander venster gewijzigd — probeer het opnieuw',
binaryNoPreview: 'Dit bestandstype kan niet worden gepreviewed',
downloadToView: 'Downloaden om te bekijken',
settingsSubagentTitle: 'Activeer de Taken-pagina automatisch wanneer een subagent verschijnt',
settingsSubagentDesc: 'Wanneer de huidige conversatie een nieuwe subagent start, wordt de Taken-pagina automatisch geactiveerd; op brede schermen wordt ook de zijkaart uitgeklapt, terwijl op smalle schermen het schuifpaneel op volledig scherm niet geforceerd wordt geopend; schakel uit om de pagina handmatig te selecteren',
settingsJobsTitle: 'Activeer de Taken-pagina automatisch bij een nieuwe achtergrondtaak',
settingsJobsDesc: 'Wanneer er voor de huidige conversatie een nieuwe achtergrondtaak verschijnt, wordt de Taken-pagina automatisch geactiveerd (dit gebeurt bij elke nieuwe taak); op brede schermen wordt ook de zijkaart uitgeklapt, terwijl op smalle schermen het schuifpaneel op volledig scherm niet geforceerd wordt geopend; schakel uit om de pagina handmatig te selecteren',
settingsToolsTitle: 'Terminaltools voor het model injecteren',
settingsToolsDesc: 'Indien ingeschakeld kan het model zijbalk-terminals aanmaken en besturen via de 8 terminal_*-tools (standaard uit)',
settingsFenceTitle: 'Workspace-padcontrole',
settingsFenceDesc: 'Aan: de bestandsfuncties van de zijbalk bereiken alleen paden binnen de sessie-workspace (standaard); uit: elk bestand op de host is bereikbaar — paginascripts krijgen dat bereik zolang het uit staat',
fenceErrorReason: 'Dit pad ligt buiten de sessie-workspace en is geblokkeerd door de controle',
fenceDisableAction: 'Workspace-controle uitzetten',
settingsBottomTerminalTitle: 'Automatisch een terminal openen bij de eerste uitklap van het onderpaneel',
settingsBottomTerminalDesc: 'Wanneer het onderpaneel voor het eerst in een sessie wordt uitgeklapt, wordt geprobeerd daar een nieuw terminaltabblad te openen (het terminalquotum blijft gelden; standaard aan)',
settingsFontFamilyTitle: 'Terminallettertype-familie',
settingsFontFamilyDesc: 'Aangepaste terminallettertype-familie (een CSS font-family-stack zoals "JetBrains Mono", monospace; leeg laten om het monospace-lettertype van het thema te volgen)',
settingsFontFamilyPlaceholder: '"JetBrains Mono", monospace',
settingsFontSizeTitle: 'Terminallettergrootte',
settingsFontSizeDesc: 'Terminallettergrootte in px (9–32, standaard 13)',
settingsShellTitle: 'Shell-pad',
settingsShellDesc: 'Shell die wordt gestart voor UI- en model-terminals (absoluut pad of kale executable). Leeg houden volgt de bestaande volgorde: yaml config.shell → $SHELL / inlog-shell / Windows powershell.exe. Geldt voor terminals die daarna worden geopend',
settingsShellPlaceholder: 'bijv. /bin/zsh (leeg = auto)',
settingsShellArgsTitle: 'Shell-argumenten',
settingsShellArgsDesc: 'Expliciete shell-argumenten, spatiegescheiden; indien niet-leeg vervangen ze de standaardwaarden volledig (zelfde contract als de yaml shellArgs)',
settingsShellArgsPlaceholder: 'bijv. -l (leeg = standaardwaarden)',
settingsTabsTitle: 'Zijbalk-inhoud',
settingsViewersTitle: 'Bestandsviewers',
settingsMobileTitle: "Mobiel",
settingsMobileNoAutoOpenTitle: "Niet automatisch openen op smalle schermen",
settingsMobileNoAutoOpenDesc: "Op telefoon / smalle viewport schakelt een nieuwe subagent of achtergrondtaak niet meer vanzelf naar de Takenpagina (handmatig kan nog)",
settingsMobileTreeTitle: "Takenpagina standaard als boom",
settingsMobileTreeDesc: "Op telefoon / smalle viewport opent de Takenpagina als klassieke boom in plaats van werkstroomdiagram; de schakelaar op de pagina blijft werken",
settingsGeneralTitle: 'Algemeen',
settingsPopup: 'Functie-instellingen',
settingsViewerCatchAll: 'Catch-all: elk bestand',
viewerMarkdown: 'Markdown',
viewerCode: 'Code',
viewerHtml: 'HTML',
browser: 'Browser',
browserPlaceholder: 'Voer een URL in, bijv. example.com',
browserGo: 'Ga',
browserBack: 'Terug',
browserForward: 'Vooruit',
browserStart: 'Voer een URL in om te beginnen met browsen (sandbox-modus)',
browserBlockedScheme: 'Geblokkeerd: alleen http/https-URL\'s zijn toegestaan',
browserBlockedLoopback: 'Geblokkeerd: lokale en interne adressen kunnen hier niet worden bezocht',
browserInvalid: 'Ongeldige URL',
htmlNoSandboxWarning: 'Sandbox uit: deze HTML draait met volledige GUI-privileges (herinschakelen in instellingen)',
sandboxStatusOn: 'Sandbox-modus: aan · pagina\'s kunnen de GUI-gegevens of lokale bestanden niet benaderen; logins en third-party cookies werken mogelijk niet',
sandboxUnlock: 'Tijdelijk uitschakelen (onveilig)',
sandboxRestore: 'Sandbox herstellen',
settingsHtmlDefaultUnsafeTitle: 'HTML-voorbeelden standaard zonder sandbox openen (onveilig)',
settingsHtmlDefaultUnsafeDesc: 'Indien aan, start elke nieuw geopende HTML-voorbeeld in de niet-gesandboxte staat (zelfde origin als de GUI — kan sessiebestanden en interne API\'s lezen); de statusbalk biedt nog een eenkliks-herstel',
settingsHtmlSandboxTitle: 'HTML-voorbeeld-sandbox uitschakelen (onveilig)',
settingsHtmlSandboxDesc: 'Met de sandbox uit draait gepreviewde HTML met dezelfde origin als de GUI: kan sessiebestanden, lokale opslag lezen en interne API\'s aanroepen. Alleen inschakelen voor volledig vertrouwde bestanden',
settingsBrowserSandboxTitle: 'Browser-sandbox uitschakelen (onveilig)',
settingsBrowserSandboxDesc: 'Met de sandbox uit draait elke bezochte site met dezelfde origin als de GUI: kan sessiegegevens lezen en zich voordoen als uw ingelogde sessie. Alleen inschakelen voor volledig vertrouwde sites',
settingsBrowserLoopbackTitle: 'Toegestane lokale adressen',
settingsBrowserLoopbackDesc: 'Door komma gescheiden allowlist van loopback-adressen (bijv. localhost:5174 of 127.0.0.1:8080) die de zijbalk-browser kan bezoeken; leeg blokkeert standaard alle lokale adressen. De sandbox blijft van toepassing — pagina s kunnen geen GUI-gegevens lezen',
settingsBrowserLoopbackPlaceholder: 'bijv. localhost:5174, 127.0.0.1:8080',
browserOpenExternal: 'Openen in browser',
browserEmbedBlocked: '{host} weigerde ingebed te worden',
browserEmbedBlockedDesc: 'De site verbiedt weergave binnen andere pagina\'s (X-Frame-Options / frame-ancestors), dus kan niet in de zijbalk laden. Open de site direct in uw browser.',
browserEmbedAnyway: 'Toch laden',
subagent: 'Taken',
subagentMainAgent: 'Hoofdagent',
subagentEmpty: 'Geen subagents',
subagentEmptyDesc: 'Subagents voortgebracht door de hoofdagent verschijnen hier',
subagentInactive: 'Inactief',
subagentModeOneShot: 'One-shot',
subagentModeContinuable: 'Vervolgbaar',
subagentCount: '{count} subagents',
subagentCountRunning: '{count} subagents · {running} actief',
subagentThinking: 'Nadenken…',
sideChat: 'Side Chat (bèta)',
sideChatNew: 'Nieuwe thread',
sideChatUntitled: 'Nieuwe thread',
sideChatEmpty: 'Geen side-conversaties',
sideChatEmptyDesc: 'Elke side-conversatie is een eigen tabblad in de tabstrip — erft de context van de huidige sessie en komt nooit in de hoofdconversatie',
sideChatCreating: 'Side-conversatie aanmaken…',
sideChatRetry: 'Opnieuw proberen',
sideChatThreads: 'Thread wisselen / nieuw',
sideChatSave: 'Opslaan als nieuwe sessie',
sideChatSaveTitle: 'Promoveer deze thread naar een top-level sessie in de hoofd-sessielijst',
sideChatSaved: 'Opgeslagen als een nieuwe sessie',
sideChatNoTurn: 'Opslaan is pas beschikbaar na de eerste voltooide beurt',
sideChatPendingDrop: 'De laatste onbeantwoorde follow-up wordt niet meegenomen in de opgeslagen sessie',
sideChatFirstPlaceholder: 'Stel de eerste vraag — context overgenomen…',
sideChatComposerPlaceholder: 'Stel een follow-up…',
sideChatThinking: 'Diep ingaan…',
sideChatThink: 'Denken',
sideChatInjection: 'Context geïnjecteerd',
sideChatSend: 'Versturen',
sideChatCancelTitle: 'De lopende beurt afbreken (wachtrij blijft behouden)',
sideChatError: 'Side Chat-fout: {message}',
sideChatTurnUsage: 'Invoer {input} tok · Uitvoer {output} tok',
sideChatBlockCollapse: 'Invouwen',
sideChatBlockCollapseAria: 'Invouwen',
sideChatBlockExpand: '{hidden} regels uitvouwen',
sideChatBlockExpandAria: '{hidden} regels meer uitvouwen',
sideChatBlockSignal: 'Beëindigd door signaal: {signal}',
sideChatBlockExitCode: 'Exitcode {code}',
sideChatBlockNoExitCode: "Beëindigd zonder exitcode",
sideChatBlockRunning: 'Wordt uitgevoerd',
sideChatBlockFailed: 'Mislukt',
sideChatBlockDone: 'Voltooid',
sideChatBlockNoOutput: '(geen uitvoer)',
codeBlockTitle: 'Codeblok',
codeBlockWrap: 'Regels afbreken',
codeBlockUnwrap: 'Regels niet afbreken',
sideChatBlockWindow: '{shown} van {total} regels',
sideChatConnDisconnected: 'Verbinding verbroken',
sideChatConnConnecting: 'Opnieuw verbinden…',
sideChatConnRecovered: 'Verbinding hersteld',
sideChatConnReconnectAction: 'Nu opnieuw verbinden',
sideChatConnRestartAction: 'Verbinding herstarten',
jobs: 'Achtergrondtaken',
jobsCount: '{count} achtergrondtaken',
jobsCountRunning: '{count} achtergrondtaken · {running} actief',
jobStatusRunning: 'Actief',
jobStatusStopping: 'Stoppen',
jobStatusCompleted: 'Voltooid',
jobStatusKilled: 'Beëindigd',
jobStatusFailed: 'Mislukt',
jobDurationSeconds: '{seconds}s',
jobDurationMinutes: '{minutes}m {seconds}s',
jobDurationHours: '{hours}u {minutes}m',
jobViewOutput: 'Uitvoer bekijken',
jobNoOutput: 'Nog geen uitvoer',
jobNotReadYet: 'Wachten tot het model deze taak leest; de uitvoer verschijnt hier zodra het model job_output uitvoert',
jobOutputTruncated: 'Uitvoer afgekapt',
jobOutputError: 'Uitvoer lezen mislukt',
jobKill: 'Beëindigen',
jobKillConfirm: 'Klik nogmaals om beëindigen te bevestigen',
jobKillError: 'Beëindigen mislukt',
tasksViewGraph: 'Workflowgrafiek',
tasksViewTree: 'Boom',
tasksViewSwitchToGraph: 'Omschakelen naar de workflowgrafiek',
tasksViewSwitchToTree: 'Omschakelen naar de boom',
settingsViewModeTitle: 'Standaardweergave van de takenpagina',
settingsViewModeDesc: 'Hoe de takenpagina bij het openen wordt weergegeven (de schakelaar op de pagina wisselt nog steeds ad hoc)',
settingsViewModeGraph: 'Workflowgrafiek',
settingsViewModeGraphDesc: 'Gelaagde knoppengrafiek met in- en uitzoomen en pannen',
settingsViewModeTree: 'Boom',
settingsViewModeTreeDesc: 'Klassieke inspringboom, navigeerbaar met het toetsenbord',
tasksFoldCompleted: '✓ {count} voltooid',
tasksFoldOne: 'Vouwen bij afgerond',
tasksFoldExpand: 'Voltooide knopen uitklappen',
tasksFoldCollapse: 'Voltooide knopen inklappen',
tasksZoomIn: 'Inzoomen',
tasksZoomOut: 'Uitzoomen',
tasksZoomFit: 'Passend maken',
tasksNodeJump: 'Transcript openen',
tasksNodeDetail: 'Knooppuntdetails',
workflowRun: 'Workflow',
tasksNodeState: 'Status',
tasksNodeMode: 'Modus',
tasksNodeModel: 'Model',
tasksNodeTeamRole: 'Teamrol',
tasksNodeActivity: 'Laatste activiteit',
tasksStateRunning: 'Bezig',
tasksStateIdle: 'Inactief',
tasksStateDone: 'Voltooid',
tasksStateError: 'Fout',
tasksKindSubagent: 'Subagent',
tasksKindTeammate: 'Teamlid',
tasksKindWorkflow: 'Workflow',
teamBoard: 'Teamtakenbord',
teamChip: 'Team {members} leden · {tasks} taken',
teamTasksEmpty: 'Nog geen gedeelde taken',
teamTaskCreate: 'Nieuwe taak',
teamTaskSubject: 'Onderwerp',
teamTaskDescription: 'Beschrijving',
teamTaskOwner: 'Verantwoordelijke',
teamTaskUnowned: 'Niet opgeëist',
teamTaskPending: 'Te doen',
teamTaskInProgress: 'Bezig',
teamTaskCompleted: 'Voltooid',
teamTaskBlocked: 'Geblokkeerd',
teamTaskComplete: 'Voltooien',
teamTaskReopen: 'Heropenen',
teamTaskDelete: 'Verwijderen',
teamTaskDeleteConfirm: 'Verwijderen bevestigen',
teamTaskEdit: 'Bewerken',
teamTaskSave: 'Opslaan',
teamTaskCancel: 'Annuleren',
teamTaskConflict: 'De taak is elders gewijzigd; vernieuwd',
teamTaskError: 'Bewerking mislukt: {message}',
teamTaskDeleted: 'Verwijderd',
teamTaskActions: 'Taakacties',
teamTaskDetail: 'Taakdetails',
teamTaskNoDescription: 'Nog geen beschrijving — klik op “Bewerken” om er een toe te voegen',
teamTaskBlockedBy: 'Geblokkeerd door',
teamTaskSubjectPlaceholder: 'Beschrijf het werk in één regel',
teamTaskDescriptionPlaceholder: 'Aanvullende details (optioneel)',
teamFilterAll: 'Alles',
tasksNodeTasks: 'Gedeelde taken',
jobCopyOutput: 'Uitvoer kopiëren',
jobCopied: 'Gekopieerd',
jobFollowTail: 'Nieuwste volgen',
jobDragHint: 'Slepen om te verplaatsen',
workflowRunning: 'Bezig',
workflowCompleted: 'Voltooid',
workflowCancelled: 'Geannuleerd',
workflowFailed: 'Mislukt',
workflowPhaseUnnamed: 'Naamloze fase',
workflowMembers: '{done}/{total} leden',
jobsAutoCollapsed: 'Automatisch ingeklapt (veel agents)',
catalogLoadFailed: '{count} branches konden niet worden geladen',
addPluginsTabCard: 'Tabblad-plugins toevoegen',
addPluginsTabCardDesc: 'Een nieuwe zijbalkpagina registreren',
addPluginsViewerCard: 'Preview-plugins toevoegen',
addPluginsViewerCardDesc: 'Een bestandstype-preview registreren',
addPluginsTabDesc: 'Zijbalkpagina\'s (tabbladen) kunnen door plugins worden uitgebreid. Plugins registreren via de ctx.betterSidebar-service; op Installeren klikken kopieert het installatiecommando — plak het in een terminal waar uw DSH-profiel zich bevindt en voer het uit.',
addPluginsViewerDesc: 'Bestandsviewers kunnen door plugins worden uitgebreid. Plugins registreren via de ctx.betterSidebar-service; op Installeren klikken kopieert het installatiecommando — plak het in een terminal waar uw DSH-profiel zich bevindt en voer het uit.',
addPluginsBrowseMore: 'Meer plugins bekijken op GitHub (topic: dsh-better-sidebar)',
addPluginsSearch: 'Zoek op plugin-naam of -beschrijving…',
addPluginsNoMatch: 'Geen plugins komen overeen',
addPluginsRecommended: 'Aanbevolen plugins',
addPluginsEmpty: 'Nog geen plugins samengesteld — publiceer de uwe onder het GitHub-topic',
openPlugin: 'Openen',
copyInstall: 'Installatiecommando kopiëren',
pluginOfficeDesc: 'Office-suite-preview (.docx / .xlsx / .pptx) voor de better-sidebar-editor, de zware Office-renderbibliotheken buiten de core-bundle houdend',
pluginFlowglassDesc: 'Live sessie-flowgraph met drie banen voor gebruiker, assistent en tool-aanroepen, plus parallelle groepen, subagent-takken, drill-down en live status; registreert een native Flowglass-tabblad wanneer better-sidebar is geïnstalleerd en behoudt zijn standalone lade als fallback',
pluginGitForgeDesc: 'Git Forge-tabblad: GitHub/Gitea (en andere forge) accountbibliotheek + per-project grants + harde push-policy; tokens blijven in lokale secrets (nooit in model-context); alleen-lezen GitForge-tool en agent HTTPS-credential-helper',
pluginGithubWorkbenchDesc: 'GitHub Workbench-tab: externe repositoryboom + Issues / Pull requests / Actions met volledige schrijfontsteuning — issue/PR aanmaken, reageren, bewerken, sluiten/heropenen, squash·merge·rebase-merge (sterke bevestiging), CI opnieuw uitvoeren/annuleren; de repo-wisselaar toont automatisch toegankelijke repo’s en doorzoekt openbare; zonder better-sidebar valt het terug op een zelfstandig rechterpaneel',
pluginMdExportDesc: 'Voegt een knop «Exporteren» toe aan de Markdown-werkbalk van better-sidebar: rendert de huidige .md in één klik naar zelfstandige HTML (tabellen/codeblokken/Mermaid-diagrammen inline, lay-out volgt het voorbeeldthema) en slaat die naast het .md op, of exporteert via het afdrukvenster naar PDF',
pluginCodeNavDesc: 'Codevoorbeeldnavigatie: detecteert de taal op bestandstype en kleurt de syntaxis, symbooloverzicht (filters voor klassen/methoden/variabelen + sprong met één klik) en zoeken in het bestand (alle treffers gemarkeerd, vorige/volgende, hoofdlettergevoelig) — neemt het codevoorbeeld in de better-sidebar-editor over',
pluginSuhuangScrollDesc: 'Verbindt de lokale Suhuang Scroll Runtime met DSH-instellingen en better-sidebar voor modelconfiguratie, verbindingstests en doorlopende beoordelingsbediening; vereist Suhuang Scroll Runtime en dsh-better-sidebar',
pluginBetterOverleafDesc: 'Overleaf-tabblad voor better-sidebar: directe browserlogin via CDP (ondersteunt Chromium van derden), projectlijst/wisselen, lokale git-spiegels onder <workspace>/overleaf/, tweerichtingssynchronisatie met read-only-API-terugval en bestandsvoorbeeld via de sidebar-werkbank',
pluginGitRemotesDesc: 'Git Remotes-tabblad: branch/upstream/ahead-behind, fetch (optioneel prune), ff-only pull, en push pas na een bevestiging in het tabblad. Vervangt het ingebouwde Git stage/commit-tabblad niet, en biedt geen force-push of een model-auto-push-tool',
pluginSentinelDesc: 'Conditie-gedreven agent-wakeupsysteem: bestands/proces/poort/http/command/webhook-sensoren wekken slapende sessies wanneer condities af gaan; registreert een "Sentinel"-tabblad met de serverbrede watch-tabel',
pluginServerDeckDesc: 'Serverkaartendashboard: één kaart per host met onlinestatus, OS, uptime, CPU-/geheugen-/schijfgebruik en latentie; klik op een kaart om een interactieve xterm.js-terminal te openen; ~/.ssh-config-import met één klik (git-hostingaliassen worden overgeslagen). Registreert een native tab 「Servers」 wanneer better-sidebar is geïnstalleerd, anders blijft het zelfstandige ladepaneel bestaan',
pluginSidebarQaDesc: 'Select-and-ask: Selecteer conversatie-tekst → vraag in het rechterpaneel → een toegewijde follow-up-sessie (❓ follow-up) in dezelfde werkruimte; een snel no-thinking-model comprimeert de hoofdcontext en injecteert deze met de quote, zonder de hoofdconversatie te onderbreken. Follow-ups nesten, vervolgen en archiveren',
pluginSidenoteDesc: 'Side chat in Codex-stijl + selectie-annotaties: fork de huidige sessie naar een blijvend zijpaneel (uit de sessielijst gearchiveerd, meerdere instanties, /side-commando, overleeft een herlaadbeurt, het model volgt de hoofdsessie); selecteer assistant-tekst → genummerde badge + notitie-editor → een "N annotaties"-chip die met je volgende bericht meegaat, of vraag direct in een side chat',
pluginSshTunnelDesc: 'SSH Tunnel-tabblad: multi-host-inventaris + per-project grants + lokale secrets; SSHManager-tool (exec/SFTP/sessie-strategieën); centrale interactieve terminal en dubbelpanelig SFTP',
pluginTurnReviewDesc: 'Een menselijke poort op de net voltooide beurt: Approve / Request changes per pad met een optionele opmerking; paden gegroepeerd op hoofd-sessie / subagent / niet-toegeschreven; inline snapshot-vs-nu diff voordat u beslist. Geen fork, geen /rewind',
pluginVideoPreviewDesc: 'Inline videovoorbeeld (.mp4/.webm/.mov/.mkv/.avi enz.) voor de better-sidebar-editor, ondersteund door een toegewijde /video-host-route met HTTP Range (206)-ondersteuning — scrubben werkt en bestanden worden niet beperkt door de 20MB mediaLimit',
pluginDocsPanelDesc: 'Globale docs in de DSH-zijbalk: lees uw eigen Markdown-notities vanuit elke werkruimte — een bestandslijst, een outline, openen in Chrome / VS Code, en kopieerknoppen; de docs-map is configureerbaar (standaard ~/.dsh/docs)',
pluginEgoBrowserDesc: 'De agentbrowser voor DeepSeek Harness: 32 ego_*-tools besturen een echt Chromium; een native «ego-browser»-tab in de zijbalk toont live elke pagina die de agent bezoekt — u kunt klikken, slepen en typen om over te nemen. Registreert de tab automatisch als better-sidebar aanwezig is, anders een zwevende bel',
pluginBilingualReaderDesc: 'Lees PDF’s in de DSH-zijbalk: native PDF-weergave, selecteer tekst om te vertalen met de LLM, met context en volledig geïsoleerd van het hoofdgesprek',
changesRedactOn: "Redactie aan: geheimen worden als [REDACTED] getoond; klik om uit te schakelen (op eigen risico)",
changesRedactOff: "Redactie uit: inhoud wordt ongewijzigd getoond; klik om in te schakelen",
changesRedactOnLabel: "Redactie",
changesRedactOffLabel: "Zonder redactie",
changesRedactBanner: "Geredigeerd",
pluginSentinelName: 'dsh-sentinel Weksysteem',
pluginEgoBrowserName: 'ego-browser Agentbrowser',
pluginBetterOverleafName: 'dsh-better-overleaf Overleaf-tab',
pluginDocsPanelName: 'dsh-docs-panel Globale documenten',
pluginFlowglassName: 'dsh-flowglass Flowglass',
pluginGitForgeName: 'dsh-git-forge Git-inloggegevens',
pluginGitRemotesName: 'dsh-git-remotes Git-remotes',
pluginGithubWorkbenchName: 'dsh-github-workbench GitHub-workbench',
pluginSidebarQaName: 'dsh-sidebar-qa Selecteren & vragen',
pluginSidenoteName: 'dsh-sidenote Zijchat',
pluginServerDeckName: 'dsh-server-deck Serverdeck',
pluginSuhuangScrollName: 'dsh-suhuang-scroll Suhuang Scroll',
pluginSshTunnelName: 'dsh-ssh-tunnel SSH-tunnel',
pluginTurnReviewName: 'dsh-turn-review Beurtreview',
pluginBilingualReaderName: 'dsh-bilingual-reader Tweetalige lezer',
pluginOfficeName: 'Office-voorvertoning',
pluginMdExportName: 'Markdown-export',
pluginCodeNavName: 'Codevoorvertoning-navigator',
pluginVideoPreviewName: 'Videovoorvertoning',
presetDshDesktopDesc: 'Geavanceerde Electronmodus (zonder rand): macOS reserveert 20px bovenaan; Windows reserveert 32px voor de titelbalk wanneer WCO niet beschikbaar is',
}