/** * 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 /** 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 /** 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 } }