Files
dsh-worktable/01_content/src/client/locales.ts
T

489 lines
24 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.
/**
* dsh-worktable locale namespace(NS 'worktable'):
* 侧边栏区块、视图菜单、管理项目、添加面板、快捷方式等全部文案。
* zh 为键集唯一来源;en 与 zh 键集完全对齐。
*/
/** Simplified Chinese dictionary (the key-set source of truth). */
export const zh = {
'title': '工作台',
'rail.title': '工作台(展开侧边栏查看)',
'handle.title': '按住拖动位置 · 双击复位',
'handle.aria': '拖动工作台位置',
'menu.search': '搜索项目',
'menu.viewOptions': '设置',
'menu.add': '添加项目',
'search.placeholder': '搜索项目…',
'search.close': '关闭搜索',
'sort.label': '排序方式',
'sort.manual': '手动',
'sort.recent': '最近',
'menu.manage': '管理项目…',
'add.guideTitle': '接入新项目',
'add.guideBody': '工作台里的项目就是 DSH 插件——插件注册一张「工作台项目卡片」即自动入驻(协议见项目 PRD §5.3)。已安装但未入驻的插件需在插件代码里完成注册。',
'add.market': '浏览插件市场',
'add.shortcutTitle': '本地快捷方式',
'add.shortcutDesc': '把任意网址收进工作台,点击新标签打开(仅存本机)。',
'add.shortcutNamePh': '名称',
'add.shortcutIcon': '图标(emoji,可选)',
'add.shortcutHref': '链接(http/https)',
'add.shortcutAdd': '添加',
'add.shortcutInvalid': '请填写名称与合法的 http/https 链接',
'manage.title': '管理项目',
'manage.done': '完成',
'manage.renamePh': '显示名',
'manage.hide': '隐藏',
'manage.show': '显示',
'manage.removed': '已删除的项目',
'manage.readd': '重新添加',
'manage.deleteShortcut': '删除快捷方式',
'shortcut.badge': '本地',
'add.chooseLayout': '选择布局模式',
'add.layoutNamePh': '布局名称',
'add.folderParent': '项目文件夹',
'add.folderPick': '选择位置…',
'add.folderNone': '未选择(点右侧「选择位置…」在资源管理器窗口里挑一个文件夹)',
'add.folderRequired': '请先选择项目文件夹的位置',
'add.folderPicking': '等待选择…',
'add.folderPickerHint': '正在等待文件夹选择;若未看到选择窗口,可检查任务栏,或使用「手动输入」。',
'add.folderPickFail': '目录选择失败:{msg}',
'add.folderPickerUnavailable': '系统目录选择器不可用,请用「手动输入」粘贴路径',
'add.folderManual': '手动输入',
'add.folderManualPh': '粘贴文件夹绝对路径,回车确认',
'add.folderManualOk': '使用此路径',
'add.folderManualEmpty': '请输入文件夹绝对路径',
'add.folderManualAbs': '请输入绝对路径(如 C:\\Users\\me\\Projects 或 /home/me/projects)',
'add.folderCreateFail': '项目文件夹创建失败,请检查路径后重试',
'add.layoutSave': '进入工作区',
'add.layoutInvalid': '请填写布局名称',
'manage.deleteLayout': '删除布局',
'manage.deleteProject': '删除项目',
'manage.changeView': '变更视图',
'viewPick.title': '选择新视图(内容窗自动迁入)',
'confirm.title': '删除项目',
'confirm.cancel': '取消',
'confirm.delete': '删除',
'confirm.layoutBody': '确定删除「{name}」?该工作区及其布局将被移除,此操作不可恢复。',
'confirm.shortcutBody': '确定删除快捷方式「{name}」?此操作不可恢复。',
'confirm.projectBody': '「{name}」将从工作台彻底移除(对话与项目文件都保留,只是不再显示项目卡片)。',
'pane.browser': '浏览器',
'pane.explorer': '资源管理器',
'pane.scm': '源代码管理',
'pane.tasks': '任务管理',
'pane.terminal': '终端',
'pane.custom': '自定义',
'pane.anim': '动画',
'pane.console': '控制室',
'pane.refresh': '刷新',
'pane.animUrlPh': '粘贴动画站点地址后回车',
'custom.title': '自定义这个窗口',
'custom.hint': '发送后将自动新建一个会话,专门负责这个窗口的自定义设计。',
'custom.placeholder': '告诉 AI 你想让这个窗口做什么,例如:做一个展示我旅行足迹的时间线页面…',
'custom.project': '所属项目',
'custom.modeNew': '新建对话',
'custom.modeSend': '发送到会话',
'custom.session': '选择会话',
'custom.sessionCurrent': '(当前)',
'custom.hintSend': '内容将直接发送到你选择的会话(默认当前会话),用于讨论这个窗口的自定义设计。',
'custom.send': '发送并新建对话',
'custom.sendToSession': '发送到该会话',
'custom.sent': '已发送到会话',
'custom.done': '已新建专属对话',
'custom.doneHint': 'AI 正在新会话中为你设计这个窗口。关闭本标签即可返回窗口选择。',
'custom.fail': '创建对话失败',
'custom.group': '分组(工作区)',
'custom.groupNone': '未分组',
'custom.groupNew': '+ 新建一个分组…',
'custom.groupNewParent': '分组父目录',
'custom.groupNewName': '新分组名',
'custom.groupNewParentPh': '例如 E:\\AI_Workspace\\DeepseekHarness',
'custom.groupNewNamePh': '例如 MyProject(将新建此文件夹并注册为分组)',
'custom.groupNeedPath': '请填写分组父目录和新分组名',
'bind.title': '绑定对话',
'bind.unbind': '解绑',
'bind.unbound': '未绑定对话',
'bind.titleUnbound': '绑定对话(未绑定 ○○):点击选择要跟随的对话',
'bind.titleBound': '已绑定对话(●●):点击更换或解绑',
'bind.tipUnbound': '未绑定对话:点击选择要跟随的对话',
'bind.tipDone': '(任务已完成,点击项目查看)',
'bind.tipBusy': '(对话正在处理任务…)',
'bind.tipNeed': '(需要你的决定,点击项目处理)',
'bind.folder': '项目文件夹',
'bind.folderChange': '更改',
'bind.folderNone': '未设置(建议设置:项目产出文件都会放进这里)',
'bind.tipBound': '已绑定对话:{name}',
'bind.clickPick': '点击选择对话',
'bind.hint': '打开项目时,右侧对话窗会自动切换到这个对话。',
'customLayout.add': '自定义',
'customLayout.addTitle': '自定义一个布局(生成提示词)',
'customLayout.title': '自定义布局',
'customLayout.placeholder': '描述你想要的布局,例如:右侧竖长对话窗,左侧上下两个一样大的窗…',
'customLayout.copy': '复制提示词到剪贴板',
'customLayout.copied': '提示词已复制到剪贴板。去任意一个 DSH 对话里粘贴发送,对方的 dsh 就知道要做什么了。',
'customLayout.copyFail': '复制失败,请手动全选输入框内容复制。',
'custom.autoBound': '已自动把这个项目绑定到这个对话(卡片上的 ●● 按钮可更换或解绑)。',
'custom.keptBinding': '该项目已有绑定的对话,按规则未自动更改。',
'console.name': '控制室',
'console.title': '控制室',
'console.themeLabel': '面板主题',
'console.cols': '每行',
'console.colsLabel': '每行显示项目数',
'console.shapeLabel': '卡片形状',
'console.bgLabel': '背景',
'console.bgPlain': '纯色背景',
'console.bgGlow': '流光背景',
'console.bgPhoto': '上传媒体',
'console.bgCustom': '自定义背景',
'console.bgEdit': '背景设置',
'console.bgEditPlain': '纯色背景设置',
'console.bgEditGlow': '流光背景设置',
'console.bgEditPhoto': '照片设置',
'console.bgEditBack': '返回',
'console.bgEditReset': '恢复初始',
'console.bgEditType': '点击或悬停输入数值',
'console.bgPhotoUse': '使用此照片',
'console.bgPhotoCurrent': '当前使用',
'console.bgPhotoNone': '还没有上传过照片',
'console.bgMediaDrag': '拖动调整顺序',
'console.bgPhotoDelete': '删除这条媒体',
'console.bgGridLabel': '网格背景',
'console.bgTipB': '贴片模糊程度',
'console.bgTipT': '网格线透明度',
'console.bgTipH': '色相',
'console.bgTipS': '饱和度',
'console.bgTipSpeed': '流光移动速度(0=完全不动,50=默认,100 最快 2×)',
'console.bgTipL': '明度',
'console.shapeSquare': '方形',
'console.shapeCircle': '圆形',
'console.themeDark': '深色',
'console.themeLight': '白色',
'console.themeSystem': '跟随系统',
'console.idle': '空闲',
'console.busy': '工作中',
'console.need': '待你决定',
'console.done': '已完成',
'console.kids': '子代理',
'console.noPreview': '暂无消息',
'console.unboundShort': '未绑定对话',
'console.jump': '跳转到绑定对话',
'console.empty': '还没有项目',
'console.joinExisting': '加入现有对话',
'console.newConv': '新建对话',
'console.groupNone': '无分组(用项目文件夹)',
'console.groupExisting': '加入现有分组',
'console.groupNew': '新建分组',
'console.chooseGroup': '选择分组…',
'console.blankNeedsGroup': '当前 DSH 的未分组空对话无法输入,请选择分组或加入现有对话。',
'console.newParentPh': '分组父目录,例如 E:\\AI_Workspace',
'console.newNamePh': '分组文件夹名(将创建并注册)',
'console.createBind': '新建并绑定',
'console.bindFail': '创建失败,请重试',
'console.noSessions': '没有可用对话',
'console.addProject': '添加项目',
'pane.wip': '开发中(后续版本接入)',
'pane.explorerNoCwd': '当前会话没有工作目录',
'pane.openLater': '该类型暂不支持预览',
'file.loading': '加载中…',
'file.fail': '文件读取失败',
'file.preview': '预览',
'file.edit': '编辑',
'file.save': '保存',
'file.saveFail': '保存失败',
'pane.gitNotRepo': '当前目录不是 git 仓库',
'pane.gitClean': '工作区干净',
'pane.jobsEmpty': '当前会话暂无后台任务',
'pane.termFail': '终端不可用(宿主缺少 node-pty/ws 或连接失败)',
'pane.closeTab': '关闭标签页',
'pane.collapse': '折叠窗格',
'annot.label': '标注:点击或拖动窗口中的位置提要求',
'annot.hint': '点击或拖动框选窗口中的任意位置,再输入你的要求;连续标注会依次追加到输入框',
'annot.placeholder': '对这里提要求…(Enter 确认,Shift+Enter 换行,Esc 取消)',
'annot.ok': '确认:注入对话框输入框(不发送)',
'annot.cancel': '取消',
'annot.updateTitle': '更新公告',
'annot.curVer': '当前版本',
'annot.checkNow': '检查更新',
'annot.checking': '检查中…',
'annot.autoCheck': '自动检查更新',
'annot.newVer': '发现新版本',
'annot.gotoRelease': '查看发布页',
'annot.skipVer': '忽略此版本',
'annot.latest': '已是最新版本',
'annot.checkFail': '检查失败,请稍后再试',
'annot.copyUpgrade': '复制升级指令',
'annot.copied': '已复制 ✓ 请在任意对话中发送',
'annot.howUpdate': '更新方法:点「复制升级指令」→ 粘贴给当前 AI 会话由它执行,完成后重启 DSH;或手动在终端运行升级命令。',
'pane.expand': '展开窗格',
'pane.jobsTitle': '后台任务',
'pane.subagents': '子代理',
'pane.subagentsEmpty': '当前会话暂无子代理',
'split.flip': '切换对话窗位置(左⇄右)',
'split.dragSwap': '拖动标题栏与其他窗交换位置',
'icons.title': '选择图标',
'icons.change': '更换图标',
'empty': '暂无项目',
'update.badgeTitle': '有新版本可用',
'update.available': '新版本可用',
'update.current': '当前版本',
'update.copyAi': '复制 AI 提示词',
'update.skip': '忽略此版本',
'update.autoCheck': '自动检查更新',
'update.checkNow': '立即检查',
'update.checkFail': '上次检查未成功',
'update.checking': '检查中…',
'update.upToDate': '已是最新版本',
'update.copied': '已复制',
'update.copyFail': '复制失败,请手动选择文本',
'update.skipDone': '已忽略此版本(下一版发布时再提醒)',
'update.upgradeHint': '执行命令后需重启 dsh web 并刷新页面',
'update.upgradeHintDesktop': '请使用桌面端自带 CLI;安装前完整退出,完成后手动重新打开桌面端',
} satisfies Record<string, string>
/** The worktable namespace key union. */
export type WorktableKey = keyof typeof zh
/** English dictionary, checked complete against the zh key set. */
export const en = {
'title': 'Worktable',
'rail.title': 'Worktable (expand sidebar to view)',
'handle.title': 'Drag to move · double-click to reset',
'handle.aria': 'Drag worktable position',
'menu.search': 'Search projects',
'menu.viewOptions': 'Settings',
'menu.add': 'Add project',
'search.placeholder': 'Search projects…',
'search.close': 'Close search',
'sort.label': 'Sort by',
'sort.manual': 'Manual',
'sort.recent': 'Recent',
'menu.manage': 'Manage projects…',
'add.guideTitle': 'Add a project',
'add.guideBody': 'Projects in the worktable are DSH plugins — a plugin joins by registering a worktable project card (protocol in the project PRD §5.3). Installed plugins that have not registered need to do so in their code.',
'add.market': 'Browse plugin marketplace',
'add.shortcutTitle': 'Local shortcut',
'add.shortcutDesc': 'Pin any URL into the worktable; opens in a new tab (stored locally only).',
'add.shortcutNamePh': 'Name',
'add.shortcutIcon': 'Icon (emoji, optional)',
'add.shortcutHref': 'URL (http/https)',
'add.shortcutAdd': 'Add',
'add.shortcutInvalid': 'Enter a name and a valid http/https URL',
'manage.title': 'Manage projects',
'manage.done': 'Done',
'manage.renamePh': 'Display name',
'manage.hide': 'Hide',
'manage.show': 'Show',
'manage.removed': 'Removed projects',
'manage.readd': 'Re-add',
'manage.deleteShortcut': 'Delete shortcut',
'shortcut.badge': 'Local',
'add.chooseLayout': 'Choose a layout',
'add.layoutNamePh': 'Layout name',
'add.folderParent': 'Project folder',
'add.folderPick': 'Choose…',
'add.folderNone': 'Not chosen (click Choose… to pick a folder in the explorer window)',
'add.folderRequired': 'Pick the project folder location first',
'add.folderPicking': 'Waiting for picker…',
'add.folderPickerHint': 'Waiting for the folder picker. If no window appears, check the taskbar or use “Manual”.',
'add.folderPickFail': 'Folder pick failed: {msg}',
'add.folderPickerUnavailable': 'System folder picker unavailable — paste the path via “Manual”',
'add.folderManual': 'Manual',
'add.folderManualPh': 'Paste an absolute folder path, Enter to confirm',
'add.folderManualOk': 'Use this path',
'add.folderManualEmpty': 'Enter an absolute folder path first',
'add.folderManualAbs': 'Absolute path required (e.g. C:\\Users\\me\\Projects or /home/me/projects)',
'add.folderCreateFail': 'Failed to create the project folder — check the path and retry',
'add.layoutSave': 'Enter workspace',
'add.layoutInvalid': 'Enter a layout name',
'manage.deleteLayout': 'Delete layout',
'manage.deleteProject': 'Delete project',
'manage.changeView': 'Change layout',
'viewPick.title': 'Pick a new layout (panes migrate automatically)',
'confirm.title': 'Delete project',
'confirm.cancel': 'Cancel',
'confirm.delete': 'Delete',
'confirm.layoutBody': 'Delete "{name}"? Its workspace and layout will be removed. This cannot be undone.',
'confirm.shortcutBody': 'Delete shortcut "{name}"? This cannot be undone.',
'confirm.projectBody': '"{name}" will be removed from the worktable permanently (the conversation and project files are kept).',
'pane.browser': 'Browser',
'pane.explorer': 'Explorer',
'pane.scm': 'Source control',
'pane.tasks': 'Tasks',
'pane.terminal': 'Terminal',
'pane.custom': 'Custom',
'pane.anim': 'Animation',
'pane.console': 'Console',
'pane.refresh': 'Refresh',
'pane.animUrlPh': 'Paste the animation site URL and press Enter',
'custom.title': 'Customize this pane',
'custom.hint': 'Sending will create a new conversation dedicated to designing this pane.',
'custom.placeholder': 'Tell the AI what you want this pane to do, e.g. a timeline page of my travels…',
'custom.project': 'Project',
'custom.modeNew': 'New conversation',
'custom.modeSend': 'Send to a conversation',
'custom.session': 'Conversation',
'custom.sessionCurrent': ' (current)',
'custom.hintSend': 'The content will be sent directly to the conversation you pick (current by default).',
'custom.send': 'Send & create conversation',
'custom.sendToSession': 'Send to this conversation',
'custom.sent': 'Sent to the conversation',
'custom.done': 'Conversation created',
'custom.doneHint': 'The AI is designing your pane in the new conversation. Close this tab to return to the pane picker.',
'custom.fail': 'Failed to create conversation',
'custom.group': 'Group (workspace)',
'custom.groupNone': 'Ungrouped',
'custom.groupNew': '+ Create a new group…',
'custom.groupNewParent': 'Group parent folder',
'custom.groupNewName': 'New group name',
'custom.groupNewParentPh': 'e.g. E:\\AI_Workspace\\DeepseekHarness',
'custom.groupNewNamePh': 'e.g. MyProject (folder will be created and registered)',
'custom.groupNeedPath': 'Fill in the parent folder and new group name',
'bind.title': 'Bind conversation',
'bind.unbind': 'Unbind',
'bind.unbound': 'No conversation bound',
'bind.titleUnbound': 'Bind conversation (unbound ○○): pick the conversation to follow',
'bind.titleBound': 'Conversation bound (●●): click to change or unbind',
'bind.tipUnbound': 'No conversation bound — click to pick one',
'bind.tipDone': ' (task completed — click the project to view)',
'bind.tipBusy': ' (conversation is working on the task…)',
'bind.tipNeed': ' (needs your decision — click the project to handle)',
'bind.folder': 'Project folder',
'bind.folderChange': 'Change',
'bind.folderNone': 'Not set (recommended: project outputs go here)',
'bind.tipBound': 'Bound to: {name}',
'bind.clickPick': 'click to pick',
'bind.hint': 'Opening the project switches the right chat pane to this conversation.',
'customLayout.add': 'Custom',
'customLayout.addTitle': 'Customize a layout (generate a prompt)',
'customLayout.title': 'Custom layout',
'customLayout.placeholder': 'Describe the layout you want, e.g. a tall chat column on the right and two equal panes stacked on the left…',
'customLayout.copy': 'Copy prompt to clipboard',
'customLayout.copied': 'Prompt copied to clipboard. Paste it into any DSH conversation and send — that dsh will know what to do.',
'customLayout.copyFail': 'Copy failed — select the text above and copy it manually.',
'custom.autoBound': 'This project was auto-bound to this conversation (use the ●● button on its card to change or unbind).',
'custom.keptBinding': 'This project already has a bound conversation, so it was not auto-changed.',
'console.name': 'Console',
'console.title': 'Console',
'console.themeLabel': 'Panel theme',
'console.cols': 'Per row',
'console.colsLabel': 'Projects per row',
'console.shapeLabel': 'Card shape',
'console.bgLabel': 'Background',
'console.bgPlain': 'Plain',
'console.bgGlow': 'Glow',
'console.bgPhoto': 'Upload media',
'console.bgCustom': 'Custom background',
'console.bgEdit': 'Background settings',
'console.bgEditPlain': 'Plain background',
'console.bgEditGlow': 'Glow background',
'console.bgEditPhoto': 'Photo setup',
'console.bgEditBack': 'Back',
'console.bgEditReset': 'Reset',
'console.bgEditType': 'Click or hover to type a value',
'console.bgPhotoUse': 'Use this photo',
'console.bgPhotoCurrent': 'In use',
'console.bgPhotoNone': 'No photos yet',
'console.bgMediaDrag': 'Drag to reorder',
'console.bgPhotoDelete': 'Delete this media',
'console.bgGridLabel': 'Background grid',
'console.bgTipB': 'Card blur',
'console.bgTipT': 'Grid opacity',
'console.bgTipH': 'Hue',
'console.bgTipS': 'Saturation',
'console.bgTipSpeed': 'Glow speed (0 = still, 50 = default, 100 = 2× fastest)',
'console.bgTipL': 'Lightness',
'console.shapeSquare': 'Square',
'console.shapeCircle': 'Circle',
'console.themeDark': 'Dark',
'console.themeLight': 'Light',
'console.themeSystem': 'System',
'console.idle': 'Idle',
'console.busy': 'Working',
'console.need': 'Needs you',
'console.done': 'Done',
'console.kids': 'subagents',
'console.noPreview': 'No messages yet',
'console.unboundShort': 'No conversation bound',
'console.jump': 'Jump to bound conversation',
'console.empty': 'No projects yet',
'console.joinExisting': 'Join existing conversation',
'console.newConv': 'New conversation',
'console.groupNone': 'No group (use project folder)',
'console.groupExisting': 'Join existing group',
'console.groupNew': 'New group',
'console.chooseGroup': 'Choose a group…',
'console.blankNeedsGroup': 'Blank ungrouped chats cannot accept input in this DSH. Choose a group or join an existing chat.',
'console.newParentPh': 'Group parent folder, e.g. E:\\AI_Workspace',
'console.newNamePh': 'Group folder name (created & registered)',
'console.createBind': 'Create & bind',
'console.bindFail': 'Creation failed, try again',
'console.noSessions': 'No sessions available',
'console.addProject': 'Add project',
'pane.wip': 'Coming in a later version',
'pane.explorerNoCwd': 'No working directory for the current session',
'pane.openLater': 'Preview not supported for this type',
'file.loading': 'Loading…',
'file.fail': 'Failed to read file',
'file.preview': 'Preview',
'file.edit': 'Edit',
'file.save': 'Save',
'file.saveFail': 'Save failed',
'pane.gitNotRepo': 'Not a git repository',
'pane.gitClean': 'Working tree clean',
'pane.jobsEmpty': 'No background jobs in the current session',
'pane.termFail': 'Terminal unavailable (host missing node-pty/ws, or connection failed)',
'pane.closeTab': 'Close tab',
'pane.collapse': 'Collapse pane',
'annot.label': 'Annotate: click or drag a spot in the window',
'annot.hint': 'Click or drag to select a spot in any window, then type your request; consecutive annotations append to the input.',
'annot.placeholder': 'Describe what to change here… (Enter to confirm, Shift+Enter newline, Esc cancel)',
'annot.ok': 'Confirm: put into chat input (not sent)',
'annot.cancel': 'Cancel',
'annot.updateTitle': 'Changelog',
'annot.curVer': 'Current version',
'annot.checkNow': 'Check now',
'annot.checking': 'Checking…',
'annot.autoCheck': 'Auto check',
'annot.newVer': 'New version',
'annot.gotoRelease': 'View release',
'annot.skipVer': 'Ignore this version',
'annot.latest': 'Up to date',
'annot.checkFail': 'Check failed — try again later',
'annot.copyUpgrade': 'Copy upgrade command',
'annot.copied': 'Copied ✓ paste it in any conversation',
'annot.howUpdate': 'How to update: click “Copy upgrade command” and paste it to your AI session to run, then restart DSH; or run the upgrade command in a terminal manually.',
'pane.expand': 'Expand pane',
'pane.jobsTitle': 'Background jobs',
'pane.subagents': 'Subagents',
'pane.subagentsEmpty': 'No subagents in the current session',
'split.flip': 'Flip chat side (left ⇄ right)',
'split.dragSwap': 'Drag the title bar to swap panes',
'icons.title': 'Pick an icon',
'icons.change': 'Change icon',
'empty': 'No projects yet',
'update.badgeTitle': 'New version available',
'update.available': 'New version available',
'update.current': 'Current version',
'update.copyAi': 'Copy AI prompt',
'update.skip': 'Skip this version',
'update.autoCheck': 'Auto-check updates',
'update.checkNow': 'Check now',
'update.checkFail': 'Last check failed',
'update.checking': 'Checking…',
'update.upToDate': 'Up to date',
'update.copied': 'Copied',
'update.copyFail': 'Copy failed — select the text manually',
'update.skipDone': 'Skipped (will remind on the next release)',
'update.upgradeHint': 'Run the command, then restart dsh web and refresh',
'update.upgradeHintDesktop': 'Use the Desktop bundled CLI; fully quit before installing, then reopen Desktop manually',
} satisfies Record<WorktableKey, string>
/** Locale namespace id registered under ctx.locale. */
export const NS = 'worktable'
declare module '@deepseek-ai/dsh-client-ui-slots' {
interface LocaleNamespaceMap {
/** The worktable sidebar copy. */
[NS]: WorktableKey
}
}