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

281 lines
14 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.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.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.hint': '一个项目只能绑定一个对话。选择后,打开该项目时右侧对话窗会自动切换过去;已绑定的项目不会因新建/发送对话而自动改绑。',
'customLayout.add': '自定义',
'customLayout.addTitle': '自定义一个布局(生成提示词)',
'customLayout.title': '自定义布局',
'customLayout.placeholder': '描述你想要的布局,例如:右侧竖长对话窗,左侧上下两个一样大的窗…',
'customLayout.copy': '复制提示词到剪贴板',
'customLayout.copied': '提示词已复制到剪贴板。去任意一个 DSH 对话里粘贴发送,对方的 dsh 就知道要做什么了。',
'customLayout.copyFail': '复制失败,请手动全选输入框内容复制。',
'custom.autoBound': '已自动把这个项目绑定到这个对话(卡片上的 ●● 按钮可更换或解绑)。',
'custom.keptBinding': '该项目已有绑定的对话,按规则未自动更改。',
'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.jobsTitle': '后台任务',
'pane.subagents': '子代理',
'pane.subagentsEmpty': '当前会话暂无子代理',
'split.flip': '切换对话窗位置(左⇄右)',
'split.dragSwap': '拖动标题栏与其他窗交换位置',
'icons.title': '选择图标',
'icons.change': '更换图标',
'empty': '暂无项目',
} 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.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.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.hint': 'A project can bind exactly one conversation. When bound, opening the project switches the right chat pane to it; an existing binding is never auto-changed by creating/sending conversations.',
'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.',
'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.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',
} 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
}
}