Files
apes-sidebar/src/client/locales-nl.ts
T
Menghuan1918 d8bc6566df feat(tasks): 适配 DSH 0.1.7 的 Agent Teams(读 projection + 写路由对接真实服务)
团队功能在 0.1.7 上整条失效:team-routes.ts 当初镜像的是 0.1.6 的 Remote 词汇
(remoteView / remoteCreateTask / remoteUpdateTask),而 0.1.7 把这三个方法删掉了,
读路径改到 Lead Session 的 `agentTeam` Session projection。真机 3080 复现:
teams.view 对带团队的会话返回 400 "membership.svc.remoteView is not a function",
于是 TeamBoard 从不渲染、节点富化与任务窗连带失效。

- 读:删掉 teams.view 与 5s 轮询,改读 SessionListState.projectionsBySession[root]
  .values.agentTeam(与 subagentCatalog 同源,推送式);新增 client/team-projection.ts
  做纯适配器,成员运行状态由 subagents.live 的 running 叠加、Lead 回退 session list
  (官方 README 的 "overlays activity from Session status")。projection 缺席 =
  这里没有团队,与旧的 {available:false}/{team:null} 合并成同一静默降级。
- 写:taskCreate/taskUpdate 改调 0.1.7 的 createTask/updateTask(返回已提交的 view,
  拒绝改为抛 TeamError),TEAM_TASK_STALE_REVISION → 409 team-conflict,其余 → 400
  team-error(wire 新增 team-conflict)。api.ts 的 writeTask 把失败信封还原成
  {ok:false,code,message} —— 原先窗口永远走不到该分支(readEnvelope 是抛)。
- 任务窗:外壳换成上一轮的 FloatingWindow(可拖拽/可拉伸/只在关闭或 Esc 时消失),
  动作行下沉到 shell 的 footer,长描述不再把动作推出视野。
- 真机抓到的两个单测抓不到的问题:
  1. 队列中任务的「完成」被宿主状态机拒绝(pending → claim → in_progress →
     complete → completed → reopen)→ 动作行跟随状态,pending 出「认领」;
  2. 认领后 Tag 变「阻塞」—— ready 的语义只是「pending 且无未完成 blocker」,
     对所有非 pending 任务都是 false → 抽出唯一规则 taskBlocked/taskStatusLabel/
     taskTone/taskDotState,四处展示点全部改走它。
- i18n:新增 teamTaskClaim / taskWindowCreate / taskWindowDetail /
  tasksStateProvisioning 词条 ×20 词典。

验证:typecheck / lint 通过;pnpm test 1276 passed / 9 skipped;
pnpm test:mount 7/7(真实 DSH 0.1.7-rc.2 挂载 + tab 全扫无崩溃)。
真机 3080(0.1.7-rc.1 + Agent Teams 实验层):看板从 projection 渲染、
队列任务「认领」→「完成」全链路写通(负责人 lead / 进行中 / 已完成)、
外部点击不关窗、Escape 关窗,截图见 docs/plans/2026-09-27-agent-teams-dsh-0.1.7-adaptation.md。

(cherry picked from commit dbc524e0b350c5d3564843f4776cd15d797506d8)
2026-09-27 22:19:05 +08:00

497 lines
33 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',
tasksStateProvisioning: 'Provisioning',
tasksStateDone: 'Voltooid',
tasksStateError: 'Fout',
tasksKindSubagent: 'Subagent',
tasksKindTeammate: 'Teamlid',
tasksKindWorkflow: 'Workflow',
taskWindowCreate: 'New task',
taskWindowDetail: 'Task detail',
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',
teamTaskClaim: 'Claim',
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',
}