mirror of
https://github.com/NanmiCoder/cc-haha
synced 2026-07-20 13:53:32 +08:00
2156 lines
131 KiB
TypeScript
2156 lines
131 KiB
TypeScript
import type { TranslationKey } from './en'
|
||
|
||
export const zh: Record<TranslationKey, string> = {
|
||
// ─── Common ──────────────────────────────────────
|
||
'common.cancel': '取消',
|
||
'common.save': '保存',
|
||
'common.delete': '删除',
|
||
'common.add': '添加',
|
||
'common.run': '运行',
|
||
'common.send': '发送',
|
||
'common.stop': '停止',
|
||
'common.tokens': '{count} tokens',
|
||
'common.rename': '重命名',
|
||
'common.retry': '重试',
|
||
'common.loading': '加载中...',
|
||
'common.select': '选择',
|
||
'common.enable': '启用',
|
||
'common.disable': '禁用',
|
||
'common.active': '已激活',
|
||
'common.error': '错误',
|
||
'common.copyFailed': '复制失败。',
|
||
'common.copied': '已复制',
|
||
|
||
// ─── Sidebar ──────────────────────────────────────
|
||
'sidebar.newSession': '新建会话',
|
||
'sidebar.scheduled': '定时任务',
|
||
'sidebar.skills': '技能',
|
||
'sidebar.terminal': '终端',
|
||
'sidebar.settings': '设置',
|
||
'sidebar.searchPlaceholder': '搜索会话...',
|
||
'sidebar.noSessions': '暂无会话',
|
||
'sidebar.noMatching': '没有匹配的会话',
|
||
'sidebar.sessionListFailed': '会话列表加载失败',
|
||
'sidebar.refreshSessions': '刷新会话列表',
|
||
'search.global.trigger': '搜索聊天',
|
||
'search.global.placeholder': '搜索全部聊天内容…',
|
||
'search.global.recentTitle': '近期会话',
|
||
'search.global.noResults': '没有找到匹配内容',
|
||
'search.global.matchCount': '{count} 条匹配',
|
||
'search.global.truncated': '仅显示前 {count} 个会话,请细化关键词',
|
||
'search.global.roleUser': '你',
|
||
'search.global.roleAssistant': '助手',
|
||
'search.global.loading': '搜索中…',
|
||
'search.global.error': '搜索失败',
|
||
'search.global.close': '关闭',
|
||
'sidebar.projects': '项目',
|
||
'sidebar.projectMenu': '项目菜单',
|
||
'sidebar.newProject': '新建项目',
|
||
'sidebar.archiveAllChats': '归档所有聊天',
|
||
'sidebar.organizeSidebar': '整理侧边栏',
|
||
'sidebar.sortCondition': '排序条件',
|
||
'sidebar.organizeByProject': '按项目',
|
||
'sidebar.organizeByRecentProject': '近期项目',
|
||
'sidebar.organizeByTime': '按时间顺序',
|
||
'sidebar.sortByCreatedAt': '创建时间',
|
||
'sidebar.sortByUpdatedAt': '更新时间',
|
||
'sidebar.newBlankProject': '新建空白项目',
|
||
'sidebar.useExistingFolder': '使用现有文件夹',
|
||
'sidebar.chooseProjectFolderUnavailable': '选择文件夹仅在桌面端可用。',
|
||
'sidebar.projectActions': '{project} 项目操作',
|
||
'sidebar.pinProject': '置顶项目',
|
||
'sidebar.unpinProject': '取消置顶项目',
|
||
'sidebar.openInFinder': '在“访达”中打开',
|
||
'sidebar.openInFinderFailed': '无法在访达中打开项目。',
|
||
'sidebar.openInFinderUnavailable': '没有可用的文件管理器。',
|
||
'sidebar.hideProjectFromSidebar': '从侧边栏隐藏',
|
||
'sidebar.restoreProjectToSidebar': '恢复到侧边栏',
|
||
'sidebar.restoreHiddenProjects': '恢复隐藏项目({count})',
|
||
'sidebar.projectHidden': '已从侧边栏隐藏 {project},已有会话不会被删除。',
|
||
'sidebar.newSessionInProject': '在 {project} 中新建会话',
|
||
'sidebar.showMoreSessions': '展开显示',
|
||
'sidebar.showFewerSessions': '折叠显示',
|
||
'sidebar.expandProject': '展开 {project}',
|
||
'sidebar.collapseProject': '折叠 {project}',
|
||
'sidebar.worktree': 'worktree',
|
||
'sidebar.sessionRunning': '会话运行中',
|
||
'sidebar.missingDir': '目录缺失',
|
||
'sidebar.confirmDelete': '确定要删除这个会话吗?此操作不可撤销。',
|
||
'sidebar.batchManage': '批量管理',
|
||
'sidebar.batchSelectedCount': '已选 {count} 个',
|
||
'sidebar.batchSelectAll': '全选',
|
||
'sidebar.batchDeselectAll': '取消全选',
|
||
'sidebar.batchSelectGroup': '选择{group}',
|
||
'sidebar.batchDeleteSelected': '删除已选 ({count})',
|
||
'sidebar.batchDeleteConfirm': '确定要删除 {count} 个会话吗?此操作不可撤销。',
|
||
'sidebar.batchDeleteConfirmBody': '以下会话将被删除:',
|
||
'sidebar.batchDeleteMore': '...还有 {count} 条',
|
||
'sidebar.batchExit': '退出批量管理',
|
||
'sidebar.batchDeleteSucceeded': '已删除 {count} 个会话。',
|
||
'sidebar.batchDeleteFailed': '有 {count} 个会话删除失败。',
|
||
'sidebar.allProjects': '所有项目',
|
||
'sidebar.other': '其他',
|
||
'sidebar.timeGroup.today': '今天',
|
||
'sidebar.timeGroup.yesterday': '昨天',
|
||
'sidebar.timeGroup.last7days': '最近 7 天',
|
||
'sidebar.timeGroup.last30days': '最近 30 天',
|
||
'sidebar.timeGroup.older': '更早',
|
||
'sidebar.collapse': '折叠侧边栏',
|
||
'sidebar.expand': '展开侧边栏',
|
||
|
||
// ─── Title Bar ──────────────────────────────────────
|
||
'titlebar.code': '代码',
|
||
'titlebar.terminal': '终端',
|
||
'titlebar.history': '历史',
|
||
|
||
// ─── Open Project ──────────────────────────────────────
|
||
'openProject.openProject': '打开项目',
|
||
'openProject.openIn': '用 {target} 打开',
|
||
'openProject.openFailed': '无法打开项目',
|
||
|
||
// ─── Open With ─────────────────────────────────────
|
||
'openWith.title': '打开方式',
|
||
'openWith.inAppBrowser': '应用内浏览器',
|
||
'openWith.systemBrowser': '系统浏览器',
|
||
'openWith.workspacePreview': '工作台预览',
|
||
'openWith.openInTarget': '用 {target} 打开',
|
||
'openWith.revealInTarget': '在 {target} 中显示',
|
||
'openWith.fileType.document': '文档',
|
||
'openWith.fileType.web': '网页',
|
||
'openWith.fileType.image': '图片',
|
||
'openWith.fileType.code': '代码',
|
||
'openWith.fileType.file': '文件',
|
||
|
||
// ─── Assistant Output Targets ──────────────────────
|
||
'assistantOutputs.kind.markdown': 'Markdown',
|
||
'assistantOutputs.kind.html': 'HTML',
|
||
'assistantOutputs.kind.image': '图片',
|
||
'assistantOutputs.kind.localhost': '本地服务',
|
||
'assistantOutputs.moreOutputs': '+{count} 个输出',
|
||
'assistantOutputs.open': '打开',
|
||
|
||
// ─── Workspace Panel ───────────────────────────────
|
||
'workspace.changedFiles': '已更改文件',
|
||
'workspace.allFiles': '所有文件',
|
||
'workspace.viewTabs': '工作区视图',
|
||
'workspace.previewTabs': '预览标签',
|
||
'workspace.filterPlaceholder': '筛选文件...',
|
||
'workspace.clearFilter': '清除文件筛选',
|
||
'workspace.refresh': '刷新工作区',
|
||
'workspace.closePanel': '关闭工作区面板',
|
||
'workspace.resizePanel': '调整工作区宽度',
|
||
'workspace.showNavigator': '显示文件导航',
|
||
'workspace.hideNavigator': '隐藏文件导航',
|
||
'workbench.modeSwitch': '工作台模式',
|
||
'workbench.modeWorkspace': '文件',
|
||
'workbench.modeBrowser': '浏览器',
|
||
'workbench.expand': '展开面板',
|
||
'workbench.close': '关闭',
|
||
'workbench.tabTitle': '工作台',
|
||
'workspace.closeTab': '关闭标签',
|
||
'workspace.preview': '预览',
|
||
'workspace.previewEmpty': '选择一个文件进行预览。',
|
||
'workspace.notGitRepo': '当前目录不是 Git 仓库。',
|
||
'workspace.missingWorkdir': '工作目录不存在。',
|
||
'workspace.loadError': '工作区数据加载失败。',
|
||
'workspace.noChanges': '没有变更',
|
||
'workspace.noFiles': '没有文件',
|
||
'workspace.noMatchingFiles': '没有匹配的文件',
|
||
'workspace.previewKind.diff': 'Diff',
|
||
'workspace.previewKind.file': '文件',
|
||
'workspace.previewState.loading': '正在加载预览...',
|
||
'workspace.previewState.binary': '二进制文件暂不支持预览。',
|
||
'workspace.previewState.tooLarge': '文件过大,无法预览。',
|
||
'workspace.previewState.missing': '文件不存在。',
|
||
'workspace.imagePreviewUnavailable': '图片无法预览。',
|
||
'workspace.previewLineLimit': '正在显示已加载内容的前 {count} / {total} 行。',
|
||
'workspace.previewAllLines': '正在显示全部 {total} 行已加载内容。',
|
||
'workspace.showAllLoadedLines': '显示全部已加载行',
|
||
'workspace.collapsePreview': '收起预览',
|
||
'workspace.addToChat': '添加到聊天',
|
||
'workspace.addSelectionToChat': '添加到对话',
|
||
'workspace.copyPath': '复制路径',
|
||
'workspace.copyAbsolutePath': '复制绝对路径',
|
||
'workspace.pathCopied': '路径已复制。',
|
||
'workspace.localComment': '本地评论',
|
||
'workspace.commentLine': '评论第 {line} 行',
|
||
'workspace.commentLineTarget': '第 {line} 行',
|
||
'workspace.commentPlaceholder': '描述你希望这里怎么改...',
|
||
'workspace.addCommentToChat': '添加评论',
|
||
|
||
// ─── Status Bar ──────────────────────────────────────
|
||
'status.connected': '已连接',
|
||
'status.connecting': '连接中...',
|
||
'status.reconnecting': '重连中...',
|
||
'status.disconnected': '已断开',
|
||
|
||
// ─── Settings ──────────────────────────────────────
|
||
'settings.title': '设置',
|
||
'settings.tab.providers': '服务商',
|
||
'settings.tab.permissions': '权限',
|
||
'settings.tab.activity': 'Token 用量',
|
||
'settings.tab.trace': 'Trace',
|
||
'settings.tab.general': '通用',
|
||
'settings.tab.h5Access': 'H5 访问',
|
||
'settings.tab.terminal': '终端',
|
||
'settings.tab.skills': '技能',
|
||
'settings.tab.mcp': 'MCP',
|
||
'settings.tab.plugins': '插件',
|
||
'settings.tab.diagnostics': '诊断',
|
||
|
||
// Settings > Usage
|
||
'settings.activity.title': 'Token 用量',
|
||
'settings.activity.profileTitle': '个人资料',
|
||
'settings.activity.profilePrivacy': '仅本地',
|
||
'settings.activity.defaultHandle': 'github.com/NanmiCoder/cc-haha',
|
||
'settings.activity.editProfile': '编辑个人资料',
|
||
'settings.activity.displayName': '显示名称',
|
||
'settings.activity.subtitle': '第二行',
|
||
'settings.activity.displayNameHelper': '修改主名称和第二行;第二行如果是网址会自动作为链接打开。',
|
||
'settings.activity.avatar': '头像',
|
||
'settings.activity.avatarHelper': '支持 PNG、JPEG 或 WebP,最大 2 MB。',
|
||
'settings.activity.changeAvatar': '更换头像',
|
||
'settings.activity.removeAvatar': '移除头像',
|
||
'settings.activity.saveProfile': '保存',
|
||
'settings.activity.cancelEdit': '取消',
|
||
'settings.activity.profileSaved': '已保存到本地',
|
||
'settings.activity.profileSaveFailed': '保存个人资料失败',
|
||
'settings.activity.subtitleLoading': '基于本机 Claude Code CLI 会话记录统计',
|
||
'settings.activity.totalTokens': '累计 Token 数',
|
||
'settings.activity.peakTokens': '峰值 Token 数',
|
||
'settings.activity.longestTask': '最长任务时长',
|
||
'settings.activity.currentStreak': '当前连续天数',
|
||
'settings.activity.longestStreak': '最长连续天数',
|
||
'settings.activity.noDuration': '0 分钟',
|
||
'settings.activity.tokenActivity': 'Token 活动',
|
||
'settings.activity.mode.daily': '每日',
|
||
'settings.activity.mode.weekly': '每周',
|
||
'settings.activity.mode.cumulative': '累计',
|
||
'settings.activity.modeHelp.daily': '每日:每个格子表示当天 Token 用量。',
|
||
'settings.activity.modeHelp.weekly': '每周:每一列表示这一周的 Token 总量。',
|
||
'settings.activity.modeHelp.cumulative': '累计:每一列表示截至该周的累计 Token 总量。',
|
||
'settings.activity.emptyTitle': '暂无本地用量',
|
||
'settings.activity.emptyBody': '启动 CLI 或桌面会话并完成模型回复后,这里会显示统计。',
|
||
'settings.activity.metric.yesterday': '昨天',
|
||
'settings.activity.metric.today': '今天',
|
||
'settings.activity.metric.last4': '近 4 天',
|
||
'settings.activity.metric.last30': '30 天',
|
||
'settings.activity.metric.streak': '连续活跃',
|
||
'settings.activity.metric.bestStreak': '最长 {days} 天',
|
||
'settings.activity.heatmapLabel': '按天统计的 Token 用量',
|
||
'settings.activity.weekRange': '{start} - {end}',
|
||
'settings.activity.cumulativeThrough': '截至 {date}',
|
||
'settings.activity.tokenValue': '{tokens} Token',
|
||
'settings.activity.count.sessionOne': '{count} 次会话',
|
||
'settings.activity.count.sessionOther': '{count} 次会话',
|
||
'settings.activity.count.dayOne': '{count} 天',
|
||
'settings.activity.count.dayOther': '{count} 天',
|
||
'settings.activity.count.runOne': '{count} 次运行',
|
||
'settings.activity.count.runOther': '{count} 次运行',
|
||
'settings.activity.weekday.mon': '周一',
|
||
'settings.activity.weekday.wed': '周三',
|
||
'settings.activity.weekday.fri': '周五',
|
||
'settings.activity.selectedDay': '选中日期',
|
||
'settings.activity.sessions': '会话',
|
||
'settings.activity.tokens': 'Token',
|
||
'settings.activity.messages': '消息',
|
||
'settings.activity.tools': '工具',
|
||
'settings.activity.activityInsights': '活动洞察',
|
||
'settings.activity.activeRate': '活跃率',
|
||
'settings.activity.mostUsedModel': '最常用模型',
|
||
'settings.activity.exploredSkills': '已使用的技能',
|
||
'settings.activity.totalSkillUses': '技能使用总数',
|
||
'settings.activity.totalToolCalls': '工具调用',
|
||
'settings.activity.totalSessions': '会话总数',
|
||
'settings.activity.mostUsedPluginsAndSkills': '最常用的插件和技能',
|
||
'settings.activity.none': '暂无',
|
||
'settings.activity.less': '少',
|
||
'settings.activity.more': '多',
|
||
|
||
// Settings > Terminal
|
||
'settings.terminal.title': '终端',
|
||
'settings.terminal.description': '直接运行宿主机命令,用于安装插件、Skills、MCP 等扩展。桌面端已内置 claude-haha;文档里的 claude <参数> 可替换成 claude-haha <参数>,例如 claude-haha plugin install ... 或 claude-haha mcp add ...',
|
||
'settings.terminal.infoLabel': '终端安装说明',
|
||
'settings.terminal.clear': '清屏',
|
||
'settings.terminal.restart': '重启',
|
||
'settings.terminal.windowTitle': '宿主机 Shell',
|
||
'settings.terminal.unavailableTitle': '需要桌面端运行时',
|
||
'settings.terminal.unavailableBody': '请在打包后的桌面端里打开这个页面,才能启动交互式终端。',
|
||
'settings.terminal.preferencesTitle': '启动 Shell',
|
||
'settings.terminal.preferencesBody': '用于新开的终端会话,以及点击重启后的终端。',
|
||
'settings.terminal.startupShell': '启动 Shell',
|
||
'settings.terminal.customPath': '自定义 Shell 路径',
|
||
'settings.terminal.customPathPlaceholder': 'C:\\Program Files\\PowerShell\\7\\pwsh.exe',
|
||
'settings.terminal.customPathRequired': '保存前请先填写 Shell 路径。',
|
||
'settings.terminal.customPathAbsolute': '自定义 Shell 路径必须是绝对 Windows 路径。',
|
||
'settings.terminal.saveShell': '保存 Shell',
|
||
'settings.terminal.saveShellSuccess': '已保存。重启终端或新开终端后生效。',
|
||
'settings.terminal.shell.system': '系统默认',
|
||
'settings.terminal.shell.systemDesc': '保持当前基于 COMSPEC 的行为。',
|
||
'settings.terminal.shell.pwsh': 'PowerShell 7 (pwsh)',
|
||
'settings.terminal.shell.pwshDesc': '安装了 pwsh.exe 时优先使用它。',
|
||
'settings.terminal.shell.powershell': 'Windows PowerShell',
|
||
'settings.terminal.shell.powershellDesc': '使用系统自带的 powershell.exe。',
|
||
'settings.terminal.shell.cmd': '命令提示符',
|
||
'settings.terminal.shell.cmdDesc': '明确使用 cmd.exe。',
|
||
'settings.terminal.shell.custom': '自定义可执行文件',
|
||
'settings.terminal.shell.customDesc': '启动一个绝对路径的 Shell 可执行文件。',
|
||
'settings.terminal.status.idle': '空闲',
|
||
'settings.terminal.status.starting': '启动中',
|
||
'settings.terminal.status.running': '运行中',
|
||
'settings.terminal.status.exited': '已退出',
|
||
'settings.terminal.status.error': '错误',
|
||
'settings.terminal.status.unavailable': '不可用',
|
||
'settings.terminal.bashPathLabel': 'Bash 路径',
|
||
'settings.terminal.bashPathDescription': 'Windows 下默认使用 CMD 作为终端。如果工具调用 grep、sed 等 Unix 命令,请在此配置 Bash 可执行文件路径(如 Git Bash)。',
|
||
'settings.terminal.bashPathSave': '保存',
|
||
'settings.terminal.bashPathReset': '恢复默认',
|
||
'settings.terminal.bashPathSaved': '已保存',
|
||
'settings.terminal.bashPathInvalid': '路径不存在,请选择有效的 Bash 可执行文件',
|
||
'terminal.newTab': '新建终端',
|
||
'terminal.openInTab': '在 Tab 中打开',
|
||
'terminal.closePanel': '关闭终端面板',
|
||
'terminal.resizePanel': '调整终端面板大小',
|
||
|
||
// Settings > Diagnostics
|
||
'settings.diagnostics.title': '诊断',
|
||
'settings.diagnostics.description': '记录服务端与 CLI 的启动、服务商、会话运行错误,便于复现和定位问题。',
|
||
'settings.diagnostics.refresh': '刷新',
|
||
'settings.diagnostics.totalSize': '日志大小',
|
||
'settings.diagnostics.events': '事件数',
|
||
'settings.diagnostics.recentErrors': '24h 警告',
|
||
'settings.diagnostics.retention': '保留策略',
|
||
'settings.diagnostics.retentionValue': '{days} 天 / {size}',
|
||
'settings.diagnostics.logDirectory': '日志目录',
|
||
'settings.diagnostics.openDirectory': '打开',
|
||
'settings.diagnostics.exportBundle': '导出诊断包',
|
||
'settings.diagnostics.copySummary': '复制错误摘要',
|
||
'settings.diagnostics.clearLogs': '清理日志',
|
||
'settings.diagnostics.recentEvents': '最近事件',
|
||
'settings.diagnostics.privacyNote': '导出的诊断包会脱敏,不包含聊天内容、文件内容、完整环境变量或 API Key。',
|
||
'settings.diagnostics.noEvents': '暂无诊断事件。',
|
||
'settings.diagnostics.noRecentErrors': '最近没有警告或错误。',
|
||
'settings.diagnostics.loadFailed': '加载诊断信息失败。',
|
||
'settings.diagnostics.openFailed': '打开诊断目录失败。',
|
||
'settings.diagnostics.exportFailed': '导出诊断包失败。',
|
||
'settings.diagnostics.exported': '已导出 {file}',
|
||
'settings.diagnostics.summaryCopied': '错误摘要已复制。',
|
||
'settings.diagnostics.copyFailed': '复制错误摘要失败。',
|
||
'settings.diagnostics.confirmClear': '确定清理所有本地诊断日志和已导出的诊断包?',
|
||
'settings.diagnostics.cleared': '诊断日志已清理。',
|
||
'settings.diagnostics.clearFailed': '清理诊断日志失败。',
|
||
'settings.diagnostics.eventDetails': '详情',
|
||
'settings.diagnostics.doctorTitle': 'Doctor',
|
||
'settings.diagnostics.doctorDescription': '用于启动和界面状态问题的安全桌面修复。',
|
||
'settings.diagnostics.doctorProtectedData': '绝不会触碰聊天历史、模型配置、Skills、MCP、IM 或 OAuth。',
|
||
'settings.diagnostics.doctorSafeKeys': '只会清理:cc-haha-open-tabs、cc-haha-session-runtime、cc-haha-theme、cc-haha-locale 和 cc-haha.persistence.schemaVersion。',
|
||
'settings.diagnostics.runDoctor': '运行 Doctor',
|
||
'settings.diagnostics.doctorCompleted': 'Doctor 已执行完成。',
|
||
'settings.diagnostics.doctorPartial': 'Doctor 已完成,但有 {count} 个本地清理项处理失败。',
|
||
'settings.diagnostics.doctorFailed': 'Doctor 执行失败。',
|
||
'settings.diagnostics.doctorResultLocal': '已清理 {count} 个安全 UI 键。',
|
||
'settings.diagnostics.doctorResultFailedKeys': '有 {count} 个键无法移除。',
|
||
'settings.diagnostics.doctorServerRan': '服务端 Doctor 修复也已执行。',
|
||
'settings.diagnostics.doctorServerUnavailable': '服务端 Doctor 不可用,因此只执行了本地修复。',
|
||
'errorBoundary.title': '出现异常。',
|
||
'errorBoundary.description': '错误已记录到诊断日志。',
|
||
|
||
// Settings > Claude Official Login
|
||
'settings.claudeOfficialLogin.intro': '使用官方 Claude 模型需要登录你的 Claude.ai 账号。点击下方按钮,浏览器会打开 Claude 官方登录页面,授权后自动回到这里。',
|
||
'settings.claudeOfficialLogin.loginButton': '登录 Claude 账号',
|
||
'settings.claudeOfficialLogin.loginStarting': '正在启动…',
|
||
'settings.claudeOfficialLogin.logoutButton': '登出',
|
||
'settings.claudeOfficialLogin.logoutProcessing': '处理中…',
|
||
'settings.claudeOfficialLogin.loggedInPrefix': '已登录(Claude',
|
||
'settings.claudeOfficialLogin.subTypeUnknown': '未知',
|
||
'settings.claudeOfficialLogin.errorPrefix': '错误:',
|
||
'settings.claudeOfficialLogin.openBrowserFailed': '无法打开浏览器,请手动访问授权链接。',
|
||
|
||
// Settings > ChatGPT Official Login
|
||
'settings.chatgptOfficialLogin.intro': '登录 ChatGPT 后,就可以在桌面端会话里使用 GPT 模型。',
|
||
'settings.chatgptOfficialLogin.loginButton': '登录 ChatGPT',
|
||
'settings.chatgptOfficialLogin.loginStarting': '正在启动登录...',
|
||
'settings.chatgptOfficialLogin.logoutButton': '退出登录',
|
||
'settings.chatgptOfficialLogin.logoutProcessing': '正在退出...',
|
||
'settings.chatgptOfficialLogin.loggedInPrefix': '已登录',
|
||
'settings.chatgptOfficialLogin.accountUnknown': 'ChatGPT 账号',
|
||
'settings.chatgptOfficialLogin.openBrowserFailed': '无法打开浏览器。请复制授权链接并手动打开。',
|
||
'settings.chatgptOfficialLogin.copyAuthorizeUrl': '复制授权链接',
|
||
'settings.chatgptOfficialLogin.copyLinkFailed': '无法复制授权链接。',
|
||
'settings.chatgptOfficialLogin.errorPrefix': 'ChatGPT OAuth 错误:',
|
||
|
||
// Settings > Providers
|
||
'settings.providers.title': '服务商',
|
||
'settings.providers.description': '管理 API 服务商以访问模型。',
|
||
'settings.providers.addProvider': '添加服务商',
|
||
'settings.providers.officialName': 'Claude 官方',
|
||
'settings.providers.officialDesc': 'Anthropic 原生接入 — 无需 API 密钥',
|
||
'settings.providers.openaiOfficialName': 'ChatGPT 官方',
|
||
'settings.providers.openaiOfficialDesc': '通过 ChatGPT 账号完成 OpenAI OAuth — 无需 API 密钥',
|
||
'settings.providers.connected': '已连接 ({latency}ms)',
|
||
'settings.providers.failed': '失败: {error}',
|
||
'settings.providers.connectivityOk': '① 连通 ({latency}ms)',
|
||
'settings.providers.connectivityFailed': '① 连通失败: {error}',
|
||
'settings.providers.proxyOk': '② 代理转换 ({latency}ms)',
|
||
'settings.providers.proxyFailed': '② 代理转换失败: {error}',
|
||
'settings.providers.confirmDelete': '删除服务商 "{name}"?此操作不可撤销。',
|
||
'settings.providers.activate': '激活',
|
||
'settings.providers.default': '默认',
|
||
'settings.providers.setDefault': '设为默认',
|
||
'settings.providers.test': '测试',
|
||
'settings.providers.edit': '编辑',
|
||
'settings.providers.dragToReorder': '拖动排序',
|
||
'settings.providers.requestFailed': '请求失败',
|
||
'settings.providers.addTitle': '添加服务商',
|
||
'settings.providers.editTitle': '编辑服务商',
|
||
'settings.providers.preset': '预设',
|
||
'settings.providers.name': '名称',
|
||
'settings.providers.namePlaceholder': '服务商名称',
|
||
'settings.providers.notes': '备注',
|
||
'settings.providers.notesPlaceholder': '可选备注...',
|
||
'settings.providers.baseUrl': '接口地址',
|
||
'settings.providers.baseUrlPlaceholder': 'https://api.example.com/anthropic',
|
||
'settings.providers.apiKey': 'API 密钥',
|
||
'settings.providers.apiKeyKeep': 'API 密钥(留空保持不变)',
|
||
'settings.providers.getApiKey': '获取 API Key',
|
||
'settings.providers.modelMapping': '模型映射',
|
||
'settings.providers.mainModel': '主模型',
|
||
'settings.providers.haikuModel': 'Haiku 模型',
|
||
'settings.providers.sonnetModel': 'Sonnet 模型',
|
||
'settings.providers.opusModel': 'Opus 模型',
|
||
'settings.providers.model1mSupportShort': '1M',
|
||
'settings.providers.modelIdPlaceholder': '模型 ID',
|
||
'settings.providers.sameAsMain': '与主模型相同',
|
||
'settings.providers.contextSettingsTitle': '上下文与自动压缩',
|
||
'settings.providers.contextSettingsDesc': '预设会自动应用模型窗口。只有服务商调整限制,或使用自定义模型 ID 时才需要修改。',
|
||
'settings.providers.contextSettingsEdit': '高级',
|
||
'settings.providers.contextSettingsHide': '收起',
|
||
'settings.providers.contextSummaryAuto': '自动识别已配置模型;未知模型使用内置兜底',
|
||
'settings.providers.contextFallbackAuto': '未知模型:自动',
|
||
'settings.providers.contextFallbackSummary': '未知模型:{tokens}',
|
||
'settings.providers.modelContextWindows': '模型上下文窗口',
|
||
'settings.providers.mainContextWindow': '主模型上下文',
|
||
'settings.providers.haikuContextWindow': 'Haiku 模型上下文',
|
||
'settings.providers.sonnetContextWindow': 'Sonnet 模型上下文',
|
||
'settings.providers.opusContextWindow': 'Opus 模型上下文',
|
||
'settings.providers.contextWindowPlaceholder': '例如 200000',
|
||
'settings.providers.modelContextWindowsDesc': '按每个模型的真实上下文填写,内置预设会自动带出,留空则走内置识别或默认 200K。',
|
||
'settings.providers.modelContextWindowNumberError': '请输入整数。',
|
||
'settings.providers.modelContextWindowRangeError': '范围必须在 16000 到 10000000 之间。',
|
||
'settings.providers.autoCompactWindow': '未知模型兜底窗口',
|
||
'settings.providers.autoCompactWindowPlaceholder': '可选,例如 200000',
|
||
'settings.providers.autoCompactWindowDesc': '仅用于无法识别的模型;已配置的模型窗口会优先使用。',
|
||
'settings.providers.autoCompactWindowNumberError': '请输入整数。',
|
||
'settings.providers.autoCompactWindowRangeError': '范围必须在 16000 到 10000000 之间。',
|
||
'settings.providers.testConnection': '测试连接',
|
||
'settings.providers.settingsJson': '设置 JSON',
|
||
'settings.providers.settingsJsonDesc': '~/.claude/cc-haha/settings.json — 直接编辑,保存时写入。',
|
||
'settings.providers.jsonError': 'JSON 语法错误: {error}',
|
||
'settings.providers.apiFormat': 'API 格式',
|
||
'settings.providers.apiFormatAnthropic': 'Anthropic Messages (原生)',
|
||
'settings.providers.apiFormatOpenaiChat': 'OpenAI Chat Completions (代理转换)',
|
||
'settings.providers.apiFormatOpenaiResponses': 'OpenAI Responses API (代理转换)',
|
||
'settings.providers.proxyHint': '请求将通过本地代理转换协议格式',
|
||
'settings.providers.authStrategy': '认证变量',
|
||
'settings.providers.authStrategyApiKey': 'API Key (ANTHROPIC_API_KEY)',
|
||
'settings.providers.authStrategyApiKeyDesc': '直连 Anthropic 官方 API,发送 x-api-key。',
|
||
'settings.providers.authStrategyAuthToken': 'Bearer Token (ANTHROPIC_AUTH_TOKEN)',
|
||
'settings.providers.authStrategyAuthTokenDesc': '大多数第三方 Anthropic 兼容服务,发送 Authorization Bearer。',
|
||
'settings.providers.authStrategyAuthTokenEmptyApiKey': 'Bearer + 清空 API_KEY',
|
||
'settings.providers.authStrategyAuthTokenEmptyApiKeyDesc': 'OpenRouter/Ollama 等场景,避免回退到 Anthropic API key。',
|
||
'settings.providers.authStrategyDualSameToken': '两个变量写同一个 Token',
|
||
'settings.providers.authStrategyDualSameTokenDesc': 'Hugging Face Router 等同时检查两个变量的服务。',
|
||
'settings.providers.authStrategyDualDummy': '两个变量写 dummy',
|
||
'settings.providers.authStrategyDualDummyDesc': 'vLLM 等本地兼容服务,只需要占位认证值。',
|
||
'settings.providers.toolSearchEnabled': '启用 Tool Search',
|
||
'settings.providers.toolSearchDesc': '按需加载 MCP 和延迟工具,减少首轮工具 schema token。弱模型或不支持 tool_reference 的服务商可以关闭。',
|
||
'settings.providers.toolSearchUnsupported': '当前仅 Anthropic Messages 格式支持 Tool Search;OpenAI 代理格式会保留完整工具 schema。',
|
||
'settings.providers.disableExperimentalBetas': '关闭实验性 Beta 头',
|
||
'settings.providers.disableExperimentalBetasDesc': '为此服务商设置 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1,避免第三方通道拒绝 beta API 形态。',
|
||
|
||
// Settings > Permissions
|
||
'settings.permissions.title': '权限模式',
|
||
'settings.permissions.description': '控制工具执行权限的处理方式。',
|
||
'settings.permissions.default': '询问权限',
|
||
'settings.permissions.defaultDesc': '执行工具前先询问',
|
||
'settings.permissions.acceptEdits': '接受编辑',
|
||
'settings.permissions.acceptEditsDesc': '自动批准文件编辑,其他操作仍询问',
|
||
'settings.permissions.plan': '计划模式',
|
||
'settings.permissions.planDesc': '仅思考和规划,不执行操作',
|
||
'settings.permissions.bypass': '跳过全部',
|
||
'settings.permissions.bypassDesc': '跳过所有权限检查(危险)',
|
||
|
||
// Settings > Adapters
|
||
'settings.tab.adapters': 'IM 接入',
|
||
'settings.adapters.description': '配置即时通讯适配器,通过 Telegram、微信、钉钉、WhatsApp 或飞书与 Claude Code 对话。首次配置请参考',
|
||
'settings.adapters.configurationDocs': '文档地址',
|
||
'settings.adapters.descriptionAfterDocs': '。',
|
||
'settings.adapters.telegram': 'Telegram',
|
||
'settings.adapters.feishu': '飞书',
|
||
'settings.adapters.wechat': '微信',
|
||
'settings.adapters.dingtalk': '钉钉',
|
||
'settings.adapters.whatsapp': 'WhatsApp',
|
||
'settings.adapters.botToken': 'Bot Token',
|
||
'settings.adapters.botTokenPlaceholder': '粘贴从 @BotFather 获取的 Token',
|
||
'settings.adapters.appId': 'App ID',
|
||
'settings.adapters.appIdPlaceholder': '如 cli_xxx',
|
||
'settings.adapters.appSecret': 'App Secret',
|
||
'settings.adapters.appSecretPlaceholder': '从飞书开放平台获取',
|
||
'settings.adapters.feishuCreateBotTitle': '还没有飞书机器人?',
|
||
'settings.adapters.feishuCreateBotDesc': '使用文档中的官方 OpenClaw 模板,一键创建已预配权限的飞书机器人。创建后把 App ID 和 App Secret 填到下方。',
|
||
'settings.adapters.feishuCreateBotAction': '一键创建飞书机器人',
|
||
'settings.adapters.feishuCreateBotStepCreate': '点击模板创建机器人。',
|
||
'settings.adapters.feishuCreateBotStepFill': '复制 App ID 和 App Secret,回到这里填写。',
|
||
'settings.adapters.encryptKey': 'Encrypt Key',
|
||
'settings.adapters.encryptKeyPlaceholder': '可选',
|
||
'settings.adapters.verificationToken': 'Verification Token',
|
||
'settings.adapters.verificationTokenPlaceholder': '可选',
|
||
'settings.adapters.allowedUsers': '允许的用户',
|
||
'settings.adapters.allowedUsersHint': '逗号分隔。留空则只允许已配对用户。',
|
||
'settings.adapters.tgAllowedUsersPlaceholder': '如 123456789, 987654321',
|
||
'settings.adapters.fsAllowedUsersPlaceholder': '如 ou_xxx, ou_yyy',
|
||
'settings.adapters.wcAllowedUsersPlaceholder': '如 wx_user_id_1, wx_user_id_2',
|
||
'settings.adapters.dtAllowedUsersPlaceholder': '如 manager001, staff_yyy',
|
||
'settings.adapters.waAllowedUsersPlaceholder': '如 15551234567@s.whatsapp.net',
|
||
'settings.adapters.defaultProject': '默认项目',
|
||
'settings.adapters.defaultProjectHint': '新 IM 会话的默认工作目录。留空则使用当前用户工作目录。',
|
||
'settings.adapters.streamingCard': '流式卡片模式',
|
||
'settings.adapters.streamingCardDesc': '实时更新消息内容,体验更好',
|
||
'settings.adapters.serverUrl': '服务器地址',
|
||
'settings.adapters.serverUrlPlaceholder': 'ws://127.0.0.1:3456',
|
||
'settings.adapters.save': '保存',
|
||
'settings.adapters.saved': '已保存',
|
||
'settings.adapters.saving': '保存中...',
|
||
'settings.adapters.startHint': '保存后运行适配器:cd adapters && bun run {platform}',
|
||
'settings.adapters.pairing': '配对管理',
|
||
'settings.adapters.pairingDesc': '生成配对码后在 IM 私聊中发送给 Bot,完成身份绑定。',
|
||
'settings.adapters.generateCode': '生成配对码',
|
||
'settings.adapters.regenerateCode': '重新生成',
|
||
'settings.adapters.codeExpired': '已过期',
|
||
'settings.adapters.codeExpiresIn': '有效期剩余',
|
||
'settings.adapters.minutes': '分钟',
|
||
'settings.adapters.pairingCodeHint': '请在钉钉、飞书、微信、WhatsApp 或 Telegram 私聊中发送此配对码给 Bot。微信和 WhatsApp 需要先完成扫码绑定。',
|
||
'settings.adapters.pairedUsers': '已配对用户',
|
||
'settings.adapters.noPairedUsers': '暂无已配对用户',
|
||
'settings.adapters.unbind': '解绑',
|
||
'settings.adapters.unbindConfirm': '确定要解绑该用户吗?解绑后需重新配对才能使用。',
|
||
'settings.adapters.platform.telegram': 'Telegram',
|
||
'settings.adapters.platform.feishu': '飞书',
|
||
'settings.adapters.platform.wechat': '微信',
|
||
'settings.adapters.platform.dingtalk': '钉钉',
|
||
'settings.adapters.platform.whatsapp': 'WhatsApp',
|
||
'settings.adapters.dingtalkQrTitle': '扫码绑定钉钉机器人',
|
||
'settings.adapters.dingtalkQrDesc': '使用钉钉手机 App 扫码,一键创建并授权机器人。成功后会自动保存 Client ID / Secret 并重启适配器。',
|
||
'settings.adapters.dingtalkStartAuth': '扫码绑定',
|
||
'settings.adapters.dingtalkUnbindBot': '解除机器人绑定',
|
||
'settings.adapters.dingtalkQrAlt': '钉钉授权二维码',
|
||
'settings.adapters.dingtalkWaiting': '等待钉钉扫码确认...',
|
||
'settings.adapters.dingtalkBound': '钉钉机器人已绑定。',
|
||
'settings.adapters.dingtalkAuthFailed': '钉钉扫码授权失败。',
|
||
'settings.adapters.dingtalkAuthExpired': '钉钉扫码授权已过期,请重新生成二维码。',
|
||
'settings.adapters.dingtalkUnbindFailed': '钉钉解绑失败。',
|
||
'settings.adapters.dingtalkUnbindBotConfirm': '确定解除这个钉钉机器人绑定吗?解除后需要重新扫码,钉钉才能继续收发消息。',
|
||
'settings.adapters.dingtalkClientId': 'Client ID',
|
||
'settings.adapters.dingtalkClientIdPlaceholder': '扫码后自动填写,也可手动输入',
|
||
'settings.adapters.dingtalkClientSecret': 'Client Secret',
|
||
'settings.adapters.dingtalkClientSecretPlaceholder': '扫码后自动填写,也可手动输入',
|
||
'settings.adapters.dingtalkEndpoint': 'Stream Endpoint',
|
||
'settings.adapters.dingtalkEndpointPlaceholder': '默认 https://api.dingtalk.com',
|
||
'settings.adapters.dingtalkPermissionCardTemplateId': '权限卡片模板 ID',
|
||
'settings.adapters.dingtalkPermissionCardTemplateIdPlaceholder': '可选,互动卡片模板 ID',
|
||
'settings.adapters.dingtalkPermissionCardTemplateIdHint': '填写后权限请求会优先发送钉钉互动卡片;留空则使用 /allow、/always、/deny 文本授权。',
|
||
'settings.adapters.wechatBind': '扫码绑定',
|
||
'settings.adapters.wechatRebind': '重新扫码',
|
||
'settings.adapters.wechatConnected': '微信已绑定',
|
||
'settings.adapters.wechatNotConnected': '微信未绑定',
|
||
'settings.adapters.wechatQrHint': '生成二维码后使用微信扫码并确认,绑定完成后适配器会自动重启。',
|
||
'settings.adapters.wechatQrAlt': '微信绑定二维码',
|
||
'settings.adapters.wechatWaiting': '等待微信扫码确认...',
|
||
'settings.adapters.wechatBindSuccess': '微信绑定成功。',
|
||
'settings.adapters.wechatUnbindAccount': '解除微信绑定',
|
||
'settings.adapters.wechatUnbindAccountConfirm': '确定解除这个微信账号绑定吗?解除后需要重新扫码,微信才能继续收发消息。',
|
||
'settings.adapters.wechatUnbound': '微信绑定已解除。',
|
||
'settings.adapters.wechatUnbindFailed': '微信解绑失败。',
|
||
'settings.adapters.wechatAllowedUsersHint': '微信扫码只绑定账号能力;用户仍需发送配对码,或在这里额外填写允许的微信用户 ID。',
|
||
'settings.adapters.whatsappBind': '扫码绑定',
|
||
'settings.adapters.whatsappRebind': '重新扫码',
|
||
'settings.adapters.whatsappConnected': 'WhatsApp 已绑定',
|
||
'settings.adapters.whatsappNotConnected': 'WhatsApp 未绑定',
|
||
'settings.adapters.whatsappQrHint': '生成二维码后,在 WhatsApp 的「已关联设备」中扫码确认。绑定完成后适配器会自动重启。',
|
||
'settings.adapters.whatsappQrAlt': 'WhatsApp 绑定二维码',
|
||
'settings.adapters.whatsappWaiting': '等待 WhatsApp 扫码确认...',
|
||
'settings.adapters.whatsappBindSuccess': 'WhatsApp 绑定成功。',
|
||
'settings.adapters.whatsappBindFailed': 'WhatsApp 绑定失败。',
|
||
'settings.adapters.whatsappUnbindAccount': '解除 WhatsApp 绑定',
|
||
'settings.adapters.whatsappUnbindAccountConfirm': '确定解除这个 WhatsApp 账号绑定吗?解除后需要重新扫码,WhatsApp 才能继续收发消息。',
|
||
'settings.adapters.whatsappUnbound': 'WhatsApp 绑定已解除。',
|
||
'settings.adapters.whatsappUnbindFailed': 'WhatsApp 解绑失败。',
|
||
'settings.adapters.whatsappAllowedUsersHint': 'WhatsApp 扫码只绑定 Web 账号能力;用户仍需发送配对码,或在这里额外填写允许的 WhatsApp JID。',
|
||
|
||
// Settings > MCP
|
||
'settings.mcp.title': 'MCP 服务',
|
||
'settings.mcp.description': '在桌面端直接管理外部工具与数据源。Local、Project、User 三种范围与 CLI 保持一致。',
|
||
'settings.mcp.addServer': '添加服务',
|
||
'settings.mcp.empty': '还没有配置 MCP 服务',
|
||
'settings.mcp.emptyHint': '先添加一个自定义的 STDIO、HTTP 或 SSE MCP 服务。',
|
||
'settings.mcp.stats.total': '服务总数',
|
||
'settings.mcp.stats.connected': '当前已连接',
|
||
'settings.mcp.stats.attention': '需要处理',
|
||
'settings.mcp.scope.project': '项目共享',
|
||
'settings.mcp.scope.local': '项目私有',
|
||
'settings.mcp.scope.user': '全局用户',
|
||
'settings.mcp.scope.plugin': '插件',
|
||
'settings.mcp.scopeDesc.local': '只对你自己生效,但绑定到某一个项目。配置写在用户配置里,同时带上选中的项目上下文。',
|
||
'settings.mcp.scopeDesc.project': '写入选中项目的 `.mcp.json`,项目成员共享。',
|
||
'settings.mcp.scopeDesc.user': '写入你的全局 Claude 配置,对所有项目生效。',
|
||
'settings.mcp.scope.dynamic': '内置',
|
||
'settings.mcp.scope.enterprise': '企业托管',
|
||
'settings.mcp.scope.claudeai': 'Claude.ai',
|
||
'settings.mcp.scope.managed': '受管控',
|
||
'settings.mcp.transport.http': 'Streamable HTTP',
|
||
'settings.mcp.globalOnlyHint': '选择项目私有、项目共享或全局用户范围。',
|
||
'settings.mcp.currentProjectHint': '当前项目:{path}',
|
||
'settings.mcp.form.back': '返回服务列表',
|
||
'settings.mcp.form.createTitle': '连接自定义 MCP',
|
||
'settings.mcp.form.createHint': '按当前 Claude Code 支持的字段添加一个自定义 MCP 服务。',
|
||
'settings.mcp.form.editTitle': '配置 {name} MCP',
|
||
'settings.mcp.form.editHint': '查看连接信息、保存修改,或直接在桌面端重连这个服务。',
|
||
'settings.mcp.form.transportLocked': '如果你想切换 MCP 服务类型,请先卸载后重新添加。',
|
||
'settings.mcp.form.uninstall': '卸载',
|
||
'settings.mcp.form.reconnect': '重连',
|
||
'settings.mcp.form.save': '保存',
|
||
'settings.mcp.form.name': '名称',
|
||
'settings.mcp.form.namePlaceholder': 'MCP 服务名称',
|
||
'settings.mcp.form.scope': '配置范围',
|
||
'settings.mcp.form.transport': '传输方式',
|
||
'settings.mcp.form.status': '状态',
|
||
'settings.mcp.form.location': '配置位置',
|
||
'settings.mcp.form.rawConfig': '原始配置',
|
||
'settings.mcp.form.command': '启动命令',
|
||
'settings.mcp.form.commandPlaceholder': 'npx',
|
||
'settings.mcp.form.commandHostHint': 'STDIO MCP 命令会直接在宿主机上运行。像 Node.js、Python、Bun、uv 这类运行时需要用户自己安装,并确保这个命令在 PATH 里可用。',
|
||
'settings.mcp.form.arguments': '参数',
|
||
'settings.mcp.form.argumentPlaceholder': 'chrome-devtools-mcp@latest',
|
||
'settings.mcp.form.addArgument': '添加参数',
|
||
'settings.mcp.form.environmentVariables': '环境变量',
|
||
'settings.mcp.form.addEnv': '添加环境变量',
|
||
'settings.mcp.form.keyPlaceholder': '键',
|
||
'settings.mcp.form.valuePlaceholder': '值',
|
||
'settings.mcp.form.url': 'URL',
|
||
'settings.mcp.form.sseUrl': 'SSE 地址',
|
||
'settings.mcp.form.urlPlaceholder': 'https://mcp.example.com/mcp',
|
||
'settings.mcp.form.headers': '请求头',
|
||
'settings.mcp.form.addHeader': '添加请求头',
|
||
'settings.mcp.form.oauthClientId': 'OAuth Client ID',
|
||
'settings.mcp.form.oauthClientIdPlaceholder': '可选 Client ID',
|
||
'settings.mcp.form.oauthCallbackPort': 'OAuth 回调端口',
|
||
'settings.mcp.form.oauthCallbackPortPlaceholder': '可选固定回调端口',
|
||
'settings.mcp.form.headersHelper': 'Headers Helper 脚本',
|
||
'settings.mcp.form.headersHelperPlaceholder': '可选的辅助脚本路径',
|
||
'settings.mcp.form.deleteTitle': '删除 MCP 服务',
|
||
'settings.mcp.form.cancel': '取消',
|
||
'settings.mcp.form.confirmDelete': '删除',
|
||
'settings.mcp.form.deleteConfirm': '确定删除 MCP 服务 “{name}” 吗?此操作不可撤销。',
|
||
'settings.mcp.form.deleteConfirmBody': '确定删除 MCP 服务 “{name}” 吗?此操作不可撤销。',
|
||
'settings.mcp.targetProject.title': '目标项目',
|
||
'settings.mcp.targetProject.selected': '当前展示的是这个项目下的私有/共享 MCP:{path}',
|
||
'settings.mcp.targetProject.empty': '先选择一个项目,才能查看项目私有或项目共享的 MCP。',
|
||
'settings.mcp.targetProject.emptyWithCurrent': '请先选择目标项目。当前激活会话的项目是:{path}',
|
||
'settings.mcp.targetProject.localSelected': '这个 MCP 会作为“项目私有”安装到:{path}',
|
||
'settings.mcp.targetProject.localEmpty': '请选择要安装这个私有 MCP 的项目。',
|
||
'settings.mcp.targetProject.projectSelected': '这个 MCP 会写入:{path}/.mcp.json,作为项目共享配置。',
|
||
'settings.mcp.targetProject.projectEmpty': '请选择要写入 `.mcp.json` 的项目。',
|
||
'settings.mcp.targetProject.globalTitle': '全局安装目标',
|
||
'settings.mcp.targetProject.globalHint': '全局用户不需要选择项目。它会写入你的全局 Claude 配置,并对所有项目生效。',
|
||
'settings.mcp.toast.created': '已创建 MCP 服务 “{name}”',
|
||
'settings.mcp.toast.saved': '已保存 MCP 服务 “{name}”',
|
||
'settings.mcp.toast.deleted': '已删除 MCP 服务 “{name}”',
|
||
'settings.mcp.toast.enabled': '已启用 MCP 服务 “{name}”',
|
||
'settings.mcp.toast.disabled': '已禁用 MCP 服务 “{name}”',
|
||
'settings.mcp.toast.reconnected': '已重连 MCP 服务 “{name}”',
|
||
'settings.mcp.toast.saveFailed': '保存 MCP 服务失败',
|
||
'settings.mcp.toast.deleteFailed': '删除 MCP 服务失败',
|
||
'settings.mcp.toast.toggleFailed': '更新 MCP 服务状态失败',
|
||
'settings.mcp.toast.reconnectFailed': '重连 MCP 服务失败',
|
||
|
||
// Settings > Agents
|
||
'settings.tab.agents': 'Agents',
|
||
'settings.agents.title': '已安装的 Agents',
|
||
'settings.agents.description': '浏览 Claude 当前可用的 Agents,包括内置、项目和用户来源。可在 TUI 中使用 /agents 查看当前生效项与覆盖关系。',
|
||
'settings.agents.browserTitle': '浏览已安装 Agents',
|
||
'settings.agents.browserEyebrow': 'Agent 浏览器',
|
||
'settings.agents.entryEyebrow': 'Agent 档案',
|
||
'settings.agents.empty': '暂无可用 Agent。',
|
||
'settings.agents.emptyHint': '在 Claude 设置或当前项目中添加 Agent 定义后,就会显示在这里。',
|
||
'settings.agents.model': '模型',
|
||
'settings.agents.tools': '工具',
|
||
'settings.agents.systemPrompt': '系统提示词',
|
||
'settings.agents.noDescription': '暂无描述',
|
||
'settings.agents.noSystemPrompt': '未定义系统提示词。',
|
||
'settings.agents.backToList': '返回列表',
|
||
'settings.agents.agentCount': '{count} 个 Agent',
|
||
'settings.agents.summary.totalAgents': 'Agent 总数',
|
||
'settings.agents.summary.activeAgents': '生效中',
|
||
'settings.agents.summary.sources': '来源类型',
|
||
'settings.agents.summary.source': '来源',
|
||
'settings.agents.summary.model': '模型',
|
||
'settings.agents.summary.tools': '工具',
|
||
'settings.agents.summary.status': '状态',
|
||
'settings.agents.groupHint': '{source}中有 {count} 个 Agent 可用',
|
||
'settings.agents.status.active': '已生效',
|
||
'settings.agents.status.available': '可查看',
|
||
'settings.agents.overriddenBy': '被 {source} 覆盖',
|
||
'settings.agents.overriddenByShort': '被 {source} 覆盖',
|
||
'settings.agents.toolCount': '{count} 个工具',
|
||
'settings.agents.noTools': '未限制工具',
|
||
'settings.agents.promptHint': '阅读当前 system prompt,并对比这个 Agent 的职责范围。',
|
||
'settings.agents.source.userSettings': '用户',
|
||
'settings.agents.source.projectSettings': '项目',
|
||
'settings.agents.source.localSettings': '本地',
|
||
'settings.agents.source.policySettings': '托管',
|
||
'settings.agents.source.plugin': '插件',
|
||
'settings.agents.source.flagSettings': 'CLI 参数',
|
||
'settings.agents.source.built-in': '内置',
|
||
|
||
// Settings > Skills
|
||
'settings.skills.title': '已安装技能',
|
||
'settings.skills.description': '技能扩展 Claude 的能力。在 ~/.claude/skills/ 中管理技能。',
|
||
'settings.skills.redirectDescription': '技能现在统一放在技能中心管理,市场和已安装技能会放在同一个入口里。',
|
||
'settings.skills.browserTitle': '浏览已安装技能',
|
||
'settings.skills.browserEyebrow': '技能浏览器',
|
||
'settings.skills.browserDescription': '查看内置、项目和用户技能,比较它们的来源与规模,并打开技能目录阅读文档和源码文件。',
|
||
'settings.skills.searchLabel': '搜索技能',
|
||
'settings.skills.searchPlaceholder': '搜索技能名称、描述或来源...',
|
||
'settings.skills.searchResultCount': '匹配 {count} / {total} 个技能',
|
||
'settings.skills.clearSearch': '清空技能搜索',
|
||
'settings.skills.noSearchResults': '没有匹配的技能',
|
||
'settings.skills.noSearchResultsHint': '换一个关键词,或清空搜索查看全部技能。',
|
||
'settings.skills.entryEyebrow': '技能入口',
|
||
'settings.skills.slashCommand': '/斜杠命令',
|
||
'settings.skills.tokenEstimate': '约 {count} tokens',
|
||
'settings.skills.tokenEstimateShort': '约 {count}',
|
||
'settings.skills.summary.totalSkills': '技能总数',
|
||
'settings.skills.summary.totalFiles': '文件数',
|
||
'settings.skills.summary.sources': '来源类型',
|
||
'settings.skills.summary.tokens': '预估 tokens',
|
||
'settings.skills.summary.source': '来源',
|
||
'settings.skills.summary.entry': '入口文件',
|
||
'settings.skills.groupHint': '{source}中有 {count} 个技能可用',
|
||
'settings.skills.ready': '可查看',
|
||
'settings.skills.unavailable': '不可用',
|
||
'settings.skills.empty': '暂无已安装技能',
|
||
'settings.skills.emptyHint': '在 ~/.claude/skills/ 中添加技能即可开始',
|
||
'settings.skills.back': '返回列表',
|
||
'settings.skills.files': '个文件',
|
||
'settings.skills.entryFile': '入口文件',
|
||
'settings.skills.metaTitle': '技能元数据',
|
||
'settings.skills.filesPanel': '文件',
|
||
'settings.skills.filesPanelHint': '浏览入口文件及其配套实现文件。',
|
||
'settings.skills.readingMode': '当前为{mode}',
|
||
'settings.skills.docMode': '文档模式',
|
||
'settings.skills.codeMode': '代码模式',
|
||
'settings.skills.source.user': '用户',
|
||
'settings.skills.source.project': '项目',
|
||
'settings.skills.source.plugin': '插件',
|
||
'settings.skills.source.mcp': 'MCP',
|
||
'settings.skills.source.bundled': '内置',
|
||
|
||
// Settings > Memory
|
||
'settings.tab.memory': '记忆',
|
||
'settings.memory.title': '项目记忆',
|
||
'settings.memory.description': '查看和编辑 Claude 为每个项目写入的 Markdown 记忆文件。这些文件存放在 ~/.claude/projects/<project>/memory/,会被 CLI 运行时加载。',
|
||
'settings.memory.refresh': '刷新',
|
||
'settings.memory.projects': '项目',
|
||
'settings.memory.files': '记忆文件',
|
||
'settings.memory.resourceManager': '资源管理器',
|
||
'settings.memory.editor': '编辑',
|
||
'settings.memory.edit': '编辑',
|
||
'settings.memory.preview': '预览',
|
||
'settings.memory.rendered': '已渲染',
|
||
'settings.memory.emptyProjects': '还没有找到记忆项目。',
|
||
'settings.memory.emptyFiles': '还没有找到记忆文件。',
|
||
'settings.memory.selectFile': '选择一个记忆文件。',
|
||
'settings.memory.selectProject': '选择一个项目。',
|
||
'settings.memory.noFileSelected': '未选择文件',
|
||
'settings.memory.current': '当前',
|
||
'settings.memory.indexFile': '索引',
|
||
'settings.memory.missing': '目录缺失',
|
||
'settings.memory.fileCount': '{count} 个文件',
|
||
'settings.memory.unsaved': '未保存',
|
||
'settings.memory.saved': '已保存',
|
||
'settings.memory.revert': '还原',
|
||
'settings.memory.discardUnsavedConfirm': '要放弃未保存的记忆修改吗?',
|
||
'settings.memory.projectSearchPlaceholder': '按路径搜索项目...',
|
||
'settings.memory.fileSearchPlaceholder': '搜索记忆文件...',
|
||
'settings.memory.resourceSearchPlaceholder': '搜索项目或记忆文件...',
|
||
'settings.memory.noProjectMatches': '没有匹配的项目。',
|
||
'settings.memory.noFileMatches': '没有匹配的记忆文件。',
|
||
'settings.memory.clearSearch': '清空搜索',
|
||
'settings.memory.toggleFolder': '展开或折叠 {name}',
|
||
|
||
// Settings > Plugins
|
||
'settings.plugins.title': '已安装插件',
|
||
'settings.plugins.description': '查看已安装插件、运行状态,并把插件变更应用到桌面端运行时。',
|
||
'settings.plugins.browserTitle': '浏览已安装插件',
|
||
'settings.plugins.browserEyebrow': '插件管理',
|
||
'settings.plugins.browserDescription': '插件会把技能、Agent、Hook、MCP 服务和语言工具打包在一起。这里先聚焦已安装插件、健康状态和应用变更反馈,不把 CLI 的整套复杂交互直接搬过来。',
|
||
'settings.plugins.entryEyebrow': '插件详情',
|
||
'settings.plugins.summary.total': '插件总数',
|
||
'settings.plugins.summary.enabled': '已启用',
|
||
'settings.plugins.summary.attention': '需关注',
|
||
'settings.plugins.summary.marketplaces': '市场',
|
||
'settings.plugins.summary.skills': '技能',
|
||
'settings.plugins.summary.agents': 'Agents',
|
||
'settings.plugins.summary.mcp': 'MCP',
|
||
'settings.plugins.summary.hooks': 'Hooks',
|
||
'settings.plugins.group.attention': '需关注',
|
||
'settings.plugins.group.enabled': '已启用',
|
||
'settings.plugins.group.disabled': '已禁用',
|
||
'settings.plugins.groupHint': '此分组下共有 {count} 个插件',
|
||
'settings.plugins.refresh': '刷新',
|
||
'settings.plugins.apply': '应用变更',
|
||
'settings.plugins.applyHint': '启用、禁用或更新后,需要把插件变更重新应用到当前桌面端运行时。',
|
||
'settings.plugins.lastReload': '最近一次应用:{enabled} 个活跃插件,{skills} 个插件技能,{errors} 个错误。',
|
||
'settings.plugins.reloadToast': '插件变更已应用:{enabled} 个活跃插件,{skills} 个技能,{errors} 个错误。',
|
||
'settings.plugins.marketplacesTitle': '已知插件市场',
|
||
'settings.plugins.marketplacesHint': '这里只展示当前机器已经配置好的 marketplace 来源摘要。',
|
||
'settings.plugins.marketplaceAutoUpdateOn': '自动更新开',
|
||
'settings.plugins.marketplaceAutoUpdateOff': '自动更新关',
|
||
'settings.plugins.marketplaceInstalledCount': '已安装 {count} 个',
|
||
'settings.plugins.marketplaceUpdatedAt': '更新于 {value}',
|
||
'settings.plugins.status.enabled': '已启用',
|
||
'settings.plugins.status.disabled': '已禁用',
|
||
'settings.plugins.status.attention': '需关注',
|
||
'settings.plugins.scope.user': '用户',
|
||
'settings.plugins.scope.project': '项目',
|
||
'settings.plugins.scope.local': '本地',
|
||
'settings.plugins.scope.managed': '托管',
|
||
'settings.plugins.scope.builtin': '内置',
|
||
'settings.plugins.empty': '暂无已安装插件',
|
||
'settings.plugins.emptyHint': '先在 Claude Code 里安装插件,桌面端就可以在这里管理。',
|
||
'settings.plugins.back': '返回列表',
|
||
'settings.plugins.noDescription': '这个插件没有可用描述。',
|
||
'settings.plugins.errorCount': '{count} 个错误',
|
||
'settings.plugins.enable': '启用',
|
||
'settings.plugins.disable': '禁用',
|
||
'settings.plugins.update': '更新',
|
||
'settings.plugins.uninstall': '卸载',
|
||
'settings.plugins.confirmUninstall': '确定卸载插件“{name}”吗?会删除当前 scope 下的安装副本。',
|
||
'settings.plugins.selectionCount': '已选择 {count} 个',
|
||
'settings.plugins.clearSelection': '清除',
|
||
'settings.plugins.enableSelected': '启用所选',
|
||
'settings.plugins.disableSelected': '禁用所选',
|
||
'settings.plugins.selectPlugin': '选择 {name}',
|
||
'settings.plugins.bulkEnableTitle': '启用已选择的 {count} 个插件?',
|
||
'settings.plugins.bulkDisableTitle': '禁用已选择的 {count} 个插件?',
|
||
'settings.plugins.bulkEnableBody': '将启用 {names},并把插件变更应用到当前桌面端运行时。',
|
||
'settings.plugins.bulkDisableBody': '将禁用 {names},并把插件变更应用到当前桌面端运行时。',
|
||
'settings.plugins.bulkEnableToast': '已启用 {count} 个插件,并应用插件变更。',
|
||
'settings.plugins.bulkDisableToast': '已禁用 {count} 个插件,并应用插件变更。',
|
||
'settings.plugins.author': '作者:{value}',
|
||
'settings.plugins.projectPath': '项目:{value}',
|
||
'settings.plugins.installPath': '安装位置:{value}',
|
||
'settings.plugins.managedHint': '这个插件由策略托管,不能在桌面端修改。',
|
||
'settings.plugins.builtinHint': '内置插件支持在这里重新应用,但不开放安装和卸载操作。',
|
||
'settings.plugins.errorsTitle': '插件错误',
|
||
'settings.plugins.capabilitiesTitle': '打包能力',
|
||
'settings.plugins.capabilitiesHint': '根据插件 manifest 和运行时集成解析出的能力列表。',
|
||
'settings.plugins.sharedNavigationDisabled': '先启用插件并应用变更,才能在共享管理页中打开它的技能、Agent 或 MCP 条目。',
|
||
'settings.plugins.capabilityEmpty': '没有暴露',
|
||
'settings.plugins.capability.skills': '{count} 个技能',
|
||
'settings.plugins.capability.agents': '{count} 个 Agent',
|
||
'settings.plugins.capability.mcpServers': '{count} 个 MCP 服务',
|
||
'settings.plugins.capabilityLabel.skills': '技能',
|
||
'settings.plugins.capabilityLabel.commands': '命令',
|
||
'settings.plugins.capabilityLabel.agents': 'Agents',
|
||
'settings.plugins.capabilityLabel.hooks': 'Hooks',
|
||
'settings.plugins.capabilityLabel.mcpServers': 'MCP 服务',
|
||
'settings.plugins.capabilityLabel.lspServers': 'LSP 服务',
|
||
|
||
// Settings > About
|
||
'settings.tab.about': '关于',
|
||
'settings.about.version': '版本',
|
||
'settings.about.changelog': '更新日志',
|
||
'settings.about.repo': 'GitHub 仓库',
|
||
'settings.about.starHint': '如果这个项目对你有帮助,欢迎给个 Star',
|
||
'settings.about.feedback': '反馈问题',
|
||
'settings.about.feedbackDesc': '遇到 Bug 或使用问题,前往 GitHub Issue 提交反馈',
|
||
'settings.about.author': '作者',
|
||
'settings.about.socialMedia': '社交媒体',
|
||
'settings.about.updates': '应用更新',
|
||
'settings.about.updatesDesc': '检查 GitHub Releases,下载安装包,并在安装后自动重启。',
|
||
|
||
// Settings > Computer Use
|
||
'settings.tab.computerUse': 'Computer Use',
|
||
'settings.computerUse.title': 'Computer Use',
|
||
'settings.computerUse.description': '允许 Claude 截屏、点击、打字并控制你的电脑。需要 Python 3,macOS 上还需要辅助功能权限。',
|
||
'settings.computerUse.enabledToggle': '启用',
|
||
'settings.computerUse.disabledHint': 'Computer Use 已关闭。新会话不会注入 computer-use MCP,也不会把桌面控制工具暴露给 Coding Agent。',
|
||
'settings.computerUse.notSupported': 'Computer Use 仅支持 macOS 和 Windows。',
|
||
'settings.computerUse.python': 'Python 3',
|
||
'settings.computerUse.pythonNotFound': '未安装,请先安装 Python 3。',
|
||
'settings.computerUse.pythonFound': '已安装',
|
||
'settings.computerUse.pythonCustomInvalid': '自定义解释器不可用',
|
||
'settings.computerUse.pythonPathLabel': 'Python 解释器路径',
|
||
'settings.computerUse.pythonPathPlaceholder': '自动检测,或选择 python.exe / python3',
|
||
'settings.computerUse.pythonPathHint': '留空则自动检测;选择 conda、pyenv 或自定义环境里的 Python 可执行文件后会优先使用它创建运行环境。',
|
||
'settings.computerUse.pythonPathBrowse': '选择',
|
||
'settings.computerUse.pythonPathSave': '应用',
|
||
'settings.computerUse.pythonPathAuto': '自动',
|
||
'settings.computerUse.pythonPathSaved': '已保存,重新检测会优先使用这个解释器。',
|
||
'settings.computerUse.pythonPathSaveFailed': '保存失败,请稍后重试。',
|
||
'settings.computerUse.pythonPathDialogTitle': '选择 Python 解释器',
|
||
'settings.computerUse.pythonPathDialogFailed': '无法打开文件选择器,请手动粘贴路径。',
|
||
'settings.computerUse.venv': '虚拟环境',
|
||
'settings.computerUse.venvReady': '已就绪',
|
||
'settings.computerUse.venvNotReady': '未创建',
|
||
'settings.computerUse.deps': '依赖包',
|
||
'settings.computerUse.depsReady': '已安装',
|
||
'settings.computerUse.depsNotReady': '未安装',
|
||
'settings.computerUse.accessibility': '辅助功能权限',
|
||
'settings.computerUse.screenRecording': '屏幕录制权限',
|
||
'settings.computerUse.permGranted': '已授权',
|
||
'settings.computerUse.permDenied': '未授权 — 请前往「系统设置 > 隐私与安全性」授权',
|
||
'settings.computerUse.permUnknown': '请先安装环境后检测',
|
||
'settings.computerUse.permScreenRecordingUnknownSoft': '自动检测结果不稳定;如果系统设置里已授权,通常可以直接使用',
|
||
'settings.computerUse.permScreenRecordingManual': '无法自动检测 — 请在系统设置中手动确认已授权',
|
||
'settings.computerUse.setupBtn': '安装环境',
|
||
'settings.computerUse.setupRunning': '安装中...',
|
||
'settings.computerUse.setupSuccess': '环境安装完成!',
|
||
'settings.computerUse.setupFail': '安装失败',
|
||
'settings.computerUse.allReady': '所有检查通过,Computer Use 已就绪。',
|
||
'settings.computerUse.downloadPython': '下载 Python 3',
|
||
'settings.computerUse.recheckBtn': '重新检测',
|
||
'settings.computerUse.requirementsLabel': '需要的 Python 包',
|
||
'settings.computerUse.appsTitle': '已授权应用',
|
||
'settings.computerUse.appsDescription': '预先授权 App,Claude 将可以直接控制这些 App,无需运行时弹窗确认。',
|
||
'settings.computerUse.appsLoading': '加载已安装的 App...',
|
||
'settings.computerUse.appsEmpty': '未找到已安装的 App,请先安装环境。',
|
||
'settings.computerUse.appsSearch': '搜索 App...',
|
||
'settings.computerUse.appsSaved': '已保存',
|
||
'settings.computerUse.openAccessibility': '打开辅助功能设置',
|
||
'settings.computerUse.openScreenRecording': '打开屏幕录制设置',
|
||
'settings.computerUse.permRestartHint': '授权后需重启 App 才能生效。',
|
||
'settings.computerUse.flagClipboard': '剪贴板访问',
|
||
'settings.computerUse.flagSystemKeys': '系统快捷键',
|
||
|
||
// Settings > General - Storage
|
||
'settings.general.modeSwitchTitle': '切换数据存储位置?',
|
||
'settings.general.modeSwitchConfirm': '保存并重启',
|
||
'settings.general.storageTitle': '数据存储位置',
|
||
'settings.general.storageDescription': '低频高级设置。切换后,会话记录、Skills、MCP、插件、Provider 配置、任务和缓存都会从新的目录读取。',
|
||
'settings.general.storageSystemTitle': '使用系统目录',
|
||
'settings.general.storageSystemDescription': '回到默认数据源。若启动环境设置了 CLAUDE_CONFIG_DIR,则仍会优先使用该环境变量指定的目录。',
|
||
'settings.general.storagePortableTitle': '使用便携目录',
|
||
'settings.general.storagePortableDescription': '把桌面端数据写入你选择的文件夹,适合放在移动硬盘或和应用一起打包迁移。',
|
||
'settings.general.storagePortableDirLabel': '便携数据目录',
|
||
'settings.general.storagePortableDirPlaceholder': '选择一个用于保存 cc-haha 数据的文件夹',
|
||
'settings.general.storageChooseDir': '选择目录',
|
||
'settings.general.storageChooseDirTitle': '选择便携数据目录',
|
||
'settings.general.storageUseDefaultPortableDir': '使用应用旁边的默认便携目录',
|
||
'settings.general.storageApplyPortable': '使用这个目录并重启',
|
||
'settings.general.storageActiveDir': '当前实际读取目录',
|
||
'settings.general.storageEnvironmentHint': '当前目录由 CLAUDE_CONFIG_DIR 环境变量控制。应用内切换不会覆盖这个环境变量;如需回到系统目录,请先移除启动环境里的 CLAUDE_CONFIG_DIR。',
|
||
'settings.general.storageEnvironmentSwitchBlocked': '当前由 CLAUDE_CONFIG_DIR 环境变量控制。请先移除启动环境里的 CLAUDE_CONFIG_DIR,再切回系统目录。',
|
||
'settings.general.storageRestartHint': '已保存切换请求。请重启应用,让新的数据目录生效。',
|
||
'settings.general.storageMoveHint': '切换目录不会自动搬迁旧数据。如果希望旧会话继续出现,请把原目录下的 projects、skills、plugins、cc-haha 等数据复制到新目录。要做便携包,建议把目录放在应用旁边并一起压缩。',
|
||
'settings.general.storageNoDirError': '请先选择或填写一个便携数据目录。',
|
||
'settings.general.storagePickerError': '无法打开目录选择器,请手动粘贴目录路径。',
|
||
'settings.general.storageRestartError': '切换已保存,但自动重启失败,请手动重启应用。',
|
||
'settings.general.storageSwitchPortableBody': '切换后,桌面端会从下面这个目录读取和写入会话、配置、Skills、MCP、插件、任务和缓存。',
|
||
'settings.general.storageSwitchDefaultBody': '切回系统目录后,桌面端会回到系统默认数据源。当前便携目录中的数据不会被删除,也不会自动迁回。',
|
||
'settings.general.storageSwitchRestartBody': '应用将先关闭本地服务和适配器进程,然后自动重启。重启后新目录才会生效。',
|
||
|
||
// Settings > General
|
||
'settings.general.appearanceTitle': '配色主题',
|
||
'settings.general.appearanceDescription': '在经典暖色、暗色与纯白工作区之间切换。',
|
||
'settings.general.appearance.light': '经典暖色',
|
||
'settings.general.appearance.dark': '暗色',
|
||
'settings.general.appearance.white': '纯白',
|
||
'settings.general.languageTitle': '语言',
|
||
'settings.general.languageDescription': '选择应用程序的显示语言。',
|
||
'settings.general.responseLangTitle': '回复语言',
|
||
'settings.general.responseLangDescription': '指定 Claude 始终以某种语言回复。',
|
||
'settings.general.responseLangDefault': '默认(英语)',
|
||
'settings.general.outputStyleTitle': '输出风格',
|
||
'settings.general.outputStyleDescription': '选择 Claude 在新会话或重启后的会话中如何表达。',
|
||
'settings.general.outputStyleBuiltin.default.label': '默认',
|
||
'settings.general.outputStyleBuiltin.default.description': 'Claude 会高效完成编码任务,并提供简洁回复',
|
||
'settings.general.outputStyleBuiltin.explanatory.label': '解释型',
|
||
'settings.general.outputStyleBuiltin.explanatory.description': 'Claude 会解释实现选择和代码库模式',
|
||
'settings.general.outputStyleBuiltin.learning.label': '学习型',
|
||
'settings.general.outputStyleBuiltin.learning.description': 'Claude 会暂停并请你编写小段代码进行实战练习',
|
||
'settings.general.outputStyleSelectLabel': '选择输出风格',
|
||
'settings.general.outputStyleLoading': '正在加载输出风格...',
|
||
'settings.general.outputStyleSaved': '输出风格已保存。',
|
||
'settings.general.outputStyleRestartHint': '正在运行的会话会继续使用当前提示词。新建会话、在新进程中继续,或重启会话后生效。',
|
||
'settings.general.outputStyleScopeLocal': '当前项目',
|
||
'settings.general.outputStyleScopeUser': '用户设置',
|
||
'settings.general.outputStyleScopeLocalHint': '已保存到当前项目的 .claude/settings.local.json。',
|
||
'settings.general.outputStyleScopeUserHint': '当前未选择项目,因此保存到用户设置。',
|
||
'settings.general.outputStyleSourceBuiltIn': '内置',
|
||
'settings.general.outputStyleSourceUser': '用户风格',
|
||
'settings.general.outputStyleSourceProject': '项目风格',
|
||
'settings.general.outputStyleSourceLocal': '项目本地风格',
|
||
'settings.general.outputStyleSourcePolicy': '受管风格',
|
||
'settings.general.outputStyleSourcePlugin': '插件风格',
|
||
'settings.general.defaultPermissionTitle': '默认会话权限',
|
||
'settings.general.defaultPermissionDescription': '选择桌面端新建聊天会话时默认使用的权限模式。',
|
||
'settings.general.defaultPermissionLabel': '新会话权限模式',
|
||
'settings.general.defaultPermissionHint': '每个会话内部仍然可以通过聊天区的权限选择器单独修改。',
|
||
'settings.general.defaultPermissionScope': '每个新会话的工作区',
|
||
'settings.general.effortTitle': '推理强度',
|
||
'settings.general.effortDescription': '控制模型使用的计算量。',
|
||
'settings.general.effort.low': '低',
|
||
'settings.general.effort.medium': '中',
|
||
'settings.general.effort.high': '高',
|
||
'settings.general.effort.xhigh': '极高',
|
||
'settings.general.effort.max': '最大',
|
||
'settings.general.thinkingTitle': '思考模式',
|
||
'settings.general.thinkingDescription': '控制新会话是否启用模型思考。关闭后,DeepSeek 等兼容供应商会收到显式非思考模式参数。',
|
||
'settings.general.thinkingEnabled': '启用思考模式',
|
||
'settings.general.thinkingHint': '关闭后会以 --thinking disabled 启动新会话;适合 DeepSeek V4 Flash/Pro 等需要非思考模式的模型。',
|
||
'settings.general.autoDreamTitle': '自动做梦',
|
||
'settings.general.autoDreamDescription': '在积累足够会话后,后台定期整理和压缩 auto-memory。',
|
||
'settings.general.autoDreamEnabled': '启用自动做梦',
|
||
'settings.general.autoDreamHintOn': '符合条件的会话结束后,桌面端可以在后台执行记忆整理。',
|
||
'settings.general.autoDreamHintOff': '默认关闭,因为它可能发起后台模型调用。',
|
||
'settings.general.autoDreamConfirmTitle': '启用自动做梦?',
|
||
'settings.general.autoDreamConfirmKeepRunning': '请保持桌面端处于启用状态,这样符合条件的会话结束后才能启动后台记忆整理。',
|
||
'settings.general.autoDreamConfirmTokenCost': '自动做梦会在审查和改写记忆文件时额外消耗模型 Token。',
|
||
'settings.general.autoDreamConfirmEnable': '启用自动做梦',
|
||
'settings.general.notificationsTitle': '系统通知',
|
||
'settings.general.notificationsDescription': '使用操作系统原生通知提醒授权确认、Agent 回复完成和定时任务结果。',
|
||
'settings.general.notificationsEnabled': '启用系统通知',
|
||
'settings.general.notificationsHintOn': '开启后会请求系统通知权限,并通过系统通知中心提醒。',
|
||
'settings.general.notificationsHintOff': '关闭后,授权确认、Agent 回复和定时任务都不会发送桌面通知。',
|
||
'settings.general.notificationsStatus': '权限',
|
||
'settings.general.notificationsStatusGranted': '已授权',
|
||
'settings.general.notificationsStatusDenied': '已被系统设置阻止',
|
||
'settings.general.notificationsStatusDefault': '尚未请求',
|
||
'settings.general.notificationsStatusUnsupported': '当前环境不可用',
|
||
'settings.general.notificationsAuthorize': '授权通知',
|
||
'settings.general.notificationsOpenSettings': '打开系统设置',
|
||
'settings.general.notificationsTestTitle': 'Claude Code Haha 通知已启用',
|
||
'settings.general.notificationsTestBody': '后续授权确认和 Agent 回复完成都会通过系统通知提醒。',
|
||
'settings.general.traceTitle': 'Agent Trace',
|
||
'settings.general.traceDescription': '收集本地会话的模型请求链路,用于排查卡住、失败和异常等待。',
|
||
'settings.general.traceEnabled': '收集 Agent Trace',
|
||
'settings.general.traceHintOn': '新会话会把精简请求、响应、状态事件写入本机 cc-haha traces 目录。',
|
||
'settings.general.traceHintOff': '关闭后不会写入新的 Trace;已有记录仍可在 Trace 列表里查看。',
|
||
'settings.general.chatSendBehaviorTitle': '消息发送方式',
|
||
'settings.general.chatSendBehaviorDescription': '选择桌面端对话输入框如何发送消息。',
|
||
'settings.general.chatSendBehaviorEnter': 'Enter 发送',
|
||
'settings.general.chatSendBehaviorEnterDescription': 'Shift+Enter 换行。',
|
||
'settings.general.chatSendBehaviorModifier': 'Ctrl/Cmd+Enter 发送',
|
||
'settings.general.chatSendBehaviorModifierDescription': 'Enter 和 Shift+Enter 都会换行。',
|
||
'settings.general.h5AccessTitle': 'H5 访问',
|
||
'settings.general.h5AccessDescription': '在局域网内暴露桌面端 H5 应用。手机通过带 H5 token 的二维码快速连接。',
|
||
'settings.general.h5AccessEnabled': '启用 H5 访问',
|
||
'settings.general.h5AccessEnabledHint': '桌面服务会监听局域网地址,并开放桌面会话相关能力。',
|
||
'settings.general.h5AccessStatusEnabled': '已启用',
|
||
'settings.general.h5AccessTokenPreview': '令牌预览',
|
||
'settings.general.h5AccessDisabledValue': '未启用',
|
||
'settings.general.h5AccessDisable': '关闭',
|
||
'settings.general.h5AccessGenerateToken': '生成令牌',
|
||
'settings.general.h5AccessRegenerate': '重新生成令牌',
|
||
'settings.general.h5AccessGeneratedToken': '生成的令牌',
|
||
'settings.general.h5AccessGeneratedTokenHint': '仅显示一次,请立即复制并像密码一样保存。',
|
||
'settings.general.h5AccessShowToken': '显示令牌',
|
||
'settings.general.h5AccessCopy': '复制',
|
||
'settings.general.h5AccessCopyUrl': '复制 H5 链接',
|
||
'settings.general.h5AccessCopyLaunchUrl': '复制扫码链接',
|
||
'settings.general.h5AccessUrlCopied': 'H5 链接已复制。',
|
||
'settings.general.h5AccessLaunchUrlCopied': '扫码链接已复制。',
|
||
'settings.general.h5AccessHideToken': '隐藏令牌',
|
||
'settings.general.h5AccessTokenNotAvailable': '旧版本的令牌无法找回。重新生成一次后,令牌将长期保存,可随时查看。',
|
||
'settings.general.h5AccessPublicHost': '访问主机 / IP',
|
||
'settings.general.h5AccessPublicHostPlaceholder': '192.168.1.100',
|
||
'settings.general.h5AccessCurrentPort': '当前端口',
|
||
'settings.general.h5AccessCurrentPortUnknown': '自动',
|
||
'settings.general.h5AccessFixedPort': '固定端口',
|
||
'settings.general.h5AccessFixedPortPlaceholder': '自动',
|
||
'settings.general.h5AccessFixedPortInvalid': '端口需为 1024-65535 之间的整数。',
|
||
'settings.general.h5AccessFixedPortHint': '不设固定端口时会自动复用上次的端口;反向代理等需要稳定端口的场景建议固定。修改端口后重启应用生效。',
|
||
'settings.general.h5AccessFixedPortRestartNote': '固定端口 {fixedPort} 将在重启应用后生效,当前仍运行在 {activePort}。',
|
||
'settings.general.h5AccessDisconnectGrace': '断连保活(秒)',
|
||
'settings.general.h5AccessDisconnectGracePlaceholder': '30',
|
||
'settings.general.h5AccessDisconnectGraceInvalid': '需为 5-86400 之间的整数秒。',
|
||
'settings.general.h5AccessDisconnectGraceHint': '手机锁屏或切后台导致断连后,正在执行的任务不会被打断,会在后台跑完、重连即可看到结果;只有任务空闲且无人连接时才在此时长后停止 CLI(默认 30 秒)。出门远程操作可调大,例如 600。',
|
||
'settings.general.h5AccessPublicUrl': '公开访问 URL',
|
||
'settings.general.h5AccessPublicUrlPlaceholder': 'https://chat.example.com',
|
||
'settings.general.h5AccessAllowedOrigins': '允许的来源',
|
||
'settings.general.h5AccessAllowedOriginsPlaceholder': 'https://chat.example.com, https://phone.example',
|
||
'settings.general.h5AccessOriginsHint': '每行一个来源,或使用逗号分隔多个来源。',
|
||
'settings.general.h5AccessOpenHint': '普通局域网访问只改主机 / IP,端口使用当前服务端口。反向代理可直接填完整 URL。',
|
||
'settings.general.h5AccessSave': '保存 H5 设置',
|
||
'settings.general.h5AccessUrl': 'H5 链接',
|
||
'settings.general.h5AccessQrTitle': '手机连接',
|
||
'settings.general.h5AccessQrHint': '扫码会直接打开 H5,并自动带上 token。',
|
||
'settings.general.h5AccessQrRefreshHint': '点击“生成令牌”后会创建可扫码的连接。',
|
||
'settings.general.h5AccessQrEmptyHint': '生成令牌后会在这里显示二维码。',
|
||
'settings.general.h5AccessQrAlt': 'H5 访问二维码',
|
||
'settings.general.h5AccessSafetyNote': '只在可信网络中启用。拿到二维码链接的人可以访问 H5 暴露的桌面能力。',
|
||
'settings.general.h5AccessConfirmTitle': '启用局域网 H5 访问?',
|
||
'settings.general.h5AccessConfirmBody': '这会把桌面 H5 应用暴露到局域网地址和端口。持有二维码 token 的设备可以访问桌面会话和相关控制能力。请只在可信网络中继续。',
|
||
'settings.general.h5AccessConfirmEnable': '启用 H5 访问',
|
||
'settings.general.h5AccessError': '更新 H5 设置失败。',
|
||
'settings.general.h5AccessStaleHostTitle': '当前保存的访问主机已不可达',
|
||
'settings.general.h5AccessStaleHostBody': '保存的 {storedHost} 不在本机当前的任何网卡上。手机扫码会连不上。建议切到本机当前的局域网 IP。',
|
||
'settings.general.h5AccessStaleHostNoSuggestion': '保存的 {storedHost} 不在本机当前的任何网卡上。手机扫码会连不上。请检查本机的网络连接,或改填反向代理 URL。',
|
||
'settings.general.h5AccessStaleHostApply': '切到 {suggestedHost}',
|
||
'settings.general.h5AccessProxyNote': '当前使用的是反向代理 URL,手机扫码会经公网/隧道返回桌面端。请确认你的反代仍能工作。',
|
||
'settings.general.networkTitle': '网络',
|
||
'settings.general.networkDescription': '控制桌面会话发起的服务商 API 请求。',
|
||
'settings.general.networkProxyModeDirect': '直连',
|
||
'settings.general.networkProxyModeDirectDescription': '服务商 API 请求不使用应用进程继承到的代理。',
|
||
'settings.general.networkProxyModeSystem': '系统代理',
|
||
'settings.general.networkProxyModeSystemDescription': '使用应用进程继承到的代理设置。',
|
||
'settings.general.networkProxyModeManual': '手动代理',
|
||
'settings.general.networkProxyModeManualDescription': '使用下方填写的 HTTP 或 HTTPS 代理地址。',
|
||
'settings.general.networkProxyUrl': '代理地址',
|
||
'settings.general.networkProxyUrlHint': '支持 HTTP 和 HTTPS 代理。需要认证时可填写 http://user:password@127.0.0.1:7890;该 URL 会随网络设置保存。',
|
||
'settings.general.networkProxyUrlInvalid': '请输入 HTTP 或 HTTPS 代理地址。',
|
||
'settings.general.networkProxyUrlRequired': '请输入代理地址。',
|
||
'settings.general.networkTimeout': 'AI 请求超时',
|
||
'settings.general.networkTimeoutValue': '{seconds} 秒',
|
||
'settings.general.networkTimeoutHint': '用于服务商请求、流式首个响应,以及服务商连接测试。支持 30-1800 秒;部分服务商在大上下文下首个流式字节可能需要等待数分钟。',
|
||
'settings.general.networkTimeoutUnit': '秒',
|
||
'settings.general.networkTimeoutDecrease': '减少 30 秒',
|
||
'settings.general.networkTimeoutIncrease': '增加 30 秒',
|
||
'settings.general.networkTimeoutRequired': '请输入超时时间。',
|
||
'settings.general.networkTimeoutRange': '请输入 {min}-{max} 秒之间的整数。',
|
||
'settings.general.networkSaved': '网络设置已保存。',
|
||
'settings.general.networkScopeHint': '不会影响单独的应用更新代理。',
|
||
'settings.general.networkSave': '保存',
|
||
'settings.general.webFetchPreflightTitle': 'WebFetch 预检',
|
||
'settings.general.webFetchPreflightDescription': '桌面端默认跳过 Claude 的域名预检,避免第三方服务商或受限网络下出现误报失败。',
|
||
'settings.general.webFetchPreflightEnabled': '跳过 WebFetch 域名预检',
|
||
'settings.general.webFetchPreflightHint': '只有在你明确需要恢复上游默认安全预检时,才建议关闭这个选项。',
|
||
'settings.general.webSearchTitle': 'WebSearch',
|
||
'settings.general.webSearchDescription': '配置 Agent 联网搜索在 Claude 原生、第三方供应商和本地 fallback key 之间如何选择。',
|
||
'settings.general.webSearch.mode.auto': '自动',
|
||
'settings.general.webSearch.mode.tavily': 'Tavily',
|
||
'settings.general.webSearch.mode.brave': 'Brave',
|
||
'settings.general.webSearch.mode.anthropic': 'Claude',
|
||
'settings.general.webSearch.mode.disabled': '关闭',
|
||
'settings.general.webSearchTavilyKey': 'Tavily API Key',
|
||
'settings.general.webSearchBraveKey': 'Brave Search API Key',
|
||
'settings.general.webSearchBravePlaceholder': 'Brave Search token',
|
||
'settings.general.webSearchGetApiKey': '获取 API Key',
|
||
'settings.general.webSearchTavilyApiKeyLink': '获取 Tavily API Key',
|
||
'settings.general.webSearchBraveApiKeyLink': '获取 Brave Search API Key',
|
||
'settings.general.webSearchTavilyFreeHint': '注册账号即可复制 API Key,免费额度包含 1000 Credits。',
|
||
'settings.general.webSearchBraveFreeHint': '注册账号后可创建 Search API Key,免费额度可用于测试。',
|
||
'settings.general.webSearchHint': '自动模式会对 Claude 模型名优先使用原生 WebSearch,失败或非 Claude 模型时再使用 Tavily/Brave。',
|
||
'settings.general.webSearchSave': '保存',
|
||
'settings.general.uiZoom': '界面缩放',
|
||
'settings.general.uiZoomDescription': '调整整个界面的显示大小。',
|
||
'settings.general.uiZoomShortcutHint': '快捷键更直接:',
|
||
'settings.general.uiZoomShortcutMac': 'macOS',
|
||
'settings.general.uiZoomShortcutWindows': 'Windows / Linux',
|
||
'settings.general.uiZoomShortcutResetHint': '0 表示恢复到 100%。',
|
||
'settings.general.uiZoomReset': '重置界面缩放到 100%',
|
||
|
||
// ─── Empty Session ──────────────────────────────────────
|
||
'empty.title': '新建会话',
|
||
'empty.subtitle': '开始一个新的编码会话。Claude 已准备好帮你构建、调试和设计你的项目。',
|
||
'empty.placeholder': '随便问点什么...',
|
||
'empty.addFiles': '添加文件或图片',
|
||
'empty.slashCommands': '斜杠命令',
|
||
'empty.failedToCreate': '创建会话失败',
|
||
'empty.createError.workdirMissing': '项目目录不存在或不是文件夹。请选择一个存在的项目后重试。',
|
||
'empty.createError.notGit': '当前项目不是 Git 仓库,无法选择分支启动。可以直接在当前目录开始,或改选一个 Git 项目。',
|
||
'empty.createError.branchNotFound': '选中的分支已经不存在。请刷新项目上下文后重新选择分支。',
|
||
'empty.createError.dirtyWorktree': '当前项目有未提交改动,已阻止直接切换分支。请开启“独立工作树”,或先提交/暂存这些改动。',
|
||
'empty.createError.branchCheckedOut': '该分支已在其他工作树中检出。请开启“独立工作树”,或选择其他分支。',
|
||
'empty.createError.worktreeCreateFailed': '无法创建独立工作树。请确认 Git 可以写入此仓库后重试。详情:{detail}',
|
||
'empty.createError.switchFailed': '无法切换当前项目分支。请先确认 Git 错误并保护好本地改动后重试。详情:{detail}',
|
||
'empty.createError.contextFailed': '无法检查这个 Git 项目。请确认仓库状态后重试。',
|
||
|
||
// ─── Repository Launch Controls ──────────────────────────────────────
|
||
'repoLaunch.selectBranch': '选择分支',
|
||
'repoLaunch.searchBranch': '搜索分支',
|
||
'repoLaunch.noBranch': '无分支',
|
||
'repoLaunch.noBranchMatch': '没有匹配的分支',
|
||
'repoLaunch.currentBranch': '当前分支',
|
||
'repoLaunch.localBranch': '本地分支',
|
||
'repoLaunch.remoteBranch': '远程分支',
|
||
'repoLaunch.checkedOut': '已在其他工作树中检出',
|
||
'repoLaunch.worktreeCurrent': '当前工作树',
|
||
'repoLaunch.worktreeIsolated': '独立工作树',
|
||
'repoLaunch.selectWorktree': '选择工作树模式',
|
||
'repoLaunch.missingWorkdir': '工作目录不存在。',
|
||
'repoLaunch.dirtyWarning': '检测到未提交变更,直接切换可能会被阻止;使用独立工作树可以继续,且不会改动当前目录。',
|
||
'repoLaunch.checkedOutWarning': '选中的分支已在其他工作树中检出。直接启动可能会被 Git 阻止;使用“独立工作树”可以避免切换当前目录。',
|
||
|
||
// ─── Chat Input ──────────────────────────────────────
|
||
'chat.placeholder': '让 Claude 编辑、调试或解释代码...',
|
||
'chat.placeholderMissing': '此会话指向的工作目录缺失。请新建会话或选择其他项目。',
|
||
'chat.addFiles': '添加文件或图片',
|
||
'chat.dropFilesTitle': '松手添加文件',
|
||
'chat.dropFilesHint': '会以文件路径附加到当前输入。',
|
||
'chat.workspaceReferencesOnly': '已添加 {count} 个工作区引用',
|
||
'chat.contextReferencesOnly': '已添加 {count} 个引用',
|
||
'chat.addSelectionToChat': '添加到对话',
|
||
'chat.branchFromHere': 'Fork 一个新对话',
|
||
'chat.branchSuccess': '已 Fork 新对话“{title}”。',
|
||
'chat.branchError': '从该消息 Fork 新对话失败。详情:{detail}',
|
||
'chat.userMessageReference': '用户消息',
|
||
'chat.assistantMessageReference': 'AI 回复',
|
||
'chat.slashCommands': '斜杠命令',
|
||
'chat.pendingMessageGuide': '引导',
|
||
'chat.pendingMessageGuideNow': '立即引导',
|
||
'chat.pendingMessageEdit': '编辑排队消息',
|
||
'chat.pendingMessageDelete': '删除排队消息',
|
||
'chat.pendingMessageEditInput': '排队消息文本',
|
||
'chat.goalEvent.created': '目标已设置',
|
||
'chat.goalEvent.replaced': '目标已设置',
|
||
'chat.goalEvent.statusTitle': '目标状态',
|
||
'chat.goalEvent.paused': '目标已暂停',
|
||
'chat.goalEvent.resumed': '目标已恢复',
|
||
'chat.goalEvent.completed': '目标已完成',
|
||
'chat.goalEvent.cleared': '目标已清除',
|
||
'chat.goalEvent.continuing': '目标继续执行',
|
||
'chat.goalEvent.message': '目标更新',
|
||
'chat.goalEvent.objective': '目标:{value}',
|
||
'chat.goalEvent.statusValue': '状态:{value}',
|
||
'chat.goalEvent.budget': '预算:{value}',
|
||
'chat.goalEvent.continuations': '续作次数:{value}',
|
||
'chat.compactSummary.compacting': '上下文正在压缩',
|
||
'chat.compactSummary.title': '上下文已压缩',
|
||
'chat.compactSummary.autoTitle': '上下文已自动压缩',
|
||
'chat.compactSummary.manualTitle': '上下文已手动压缩',
|
||
'chat.compactSummary.trigger.manual': '手动',
|
||
'chat.compactSummary.trigger.auto': '自动',
|
||
'chat.compactSummary.tokens': '压缩前 {count} tokens',
|
||
'chat.compactSummary.messages': '已摘要 {count} 条消息',
|
||
'chat.activeGoal.title': '当前目标',
|
||
'chat.activeGoal.running': '自循环运行中',
|
||
'chat.activeGoal.active': '进行中',
|
||
'chat.activeGoal.paused': '已暂停',
|
||
'chat.activeGoal.completed': '已完成',
|
||
'chat.activeGoal.budget': '预算 {value}',
|
||
'chat.activeGoal.continuations': '续作次数 {value}',
|
||
'chat.activeGoal.elapsed': '已用时 {value}',
|
||
'chat.backgroundAgents.title': '后台 Agent',
|
||
'chat.backgroundAgents.count': '{count} 个运行中或最近任务',
|
||
'chat.backgroundAgents.agent': 'agent',
|
||
'chat.backgroundTasks.title': '后台任务',
|
||
'chat.backgroundTasks.runningCountOne': '{count} 个运行中任务',
|
||
'chat.backgroundTasks.runningCountMany': '{count} 个运行中任务',
|
||
'chat.backgroundTasks.finishedCountOne': '{count} 个已完成任务',
|
||
'chat.backgroundTasks.finishedCountMany': '{count} 个已完成任务',
|
||
'chat.backgroundTasks.running': '运行中',
|
||
'chat.backgroundTasks.finished': '已完成',
|
||
'chat.backgroundTasks.clear': '清除',
|
||
'chat.backgroundTasks.close': '关闭后台任务',
|
||
'chat.backgroundTasks.command': '后台命令',
|
||
'chat.backgroundTasks.workflow': '后台工作流',
|
||
'chat.backgroundTasks.task': '后台任务',
|
||
'chat.backgroundTasks.type.agent': 'Agent',
|
||
'chat.backgroundTasks.type.bash': 'Bash',
|
||
'chat.backgroundTasks.type.workflow': '工作流',
|
||
'chat.backgroundTasks.type.task': '任务',
|
||
'chat.backgroundAgents.tokens': '{count} tokens',
|
||
'chat.backgroundAgents.status.running': '运行中',
|
||
'chat.backgroundAgents.status.completed': '已完成',
|
||
'chat.backgroundAgents.status.failed': '失败',
|
||
'chat.backgroundAgents.status.stopped': '已停止',
|
||
'chat.duration.seconds': '{seconds} 秒',
|
||
'chat.duration.minutesSeconds': '{minutes} 分 {seconds} 秒',
|
||
'slash.mcp.title': '可用 MCP 工具',
|
||
'slash.mcp.subtitle': '展示当前聊天上下文里的全局 MCP 和当前项目 MCP。',
|
||
'slash.mcp.subtitleWithProject': '当前展示全局 MCP 以及这个项目的 MCP:{path}',
|
||
'slash.mcp.emptyTitle': '没有可用的 MCP 服务',
|
||
'slash.mcp.emptyBody': '当前聊天上下文里没有可用的全局或项目 MCP 服务。',
|
||
'slash.mcp.projectBadge': '项目:{name}',
|
||
'slash.skills.title': '可用技能',
|
||
'slash.skills.subtitle': '展示当前上下文里可直接调用的技能。',
|
||
'slash.skills.subtitleWithProject': '当前展示项目下的技能:{path}',
|
||
'slash.skills.emptyTitle': '没有可用技能',
|
||
'slash.skills.emptyBody': '当前上下文里没有找到可直接调用的技能。',
|
||
'slash.plugins.title': '插件',
|
||
'slash.plugins.subtitle': '插件管理后续会接到这个斜杠命令面板里。',
|
||
'slash.plugins.emptyTitle': '插件面板即将接入',
|
||
'slash.plugins.emptyBody': '这套共享的斜杠命令面板已经接通,插件数据下一步接进来。',
|
||
'slash.help.title': '斜杠命令',
|
||
'slash.help.subtitle': '运行 Agent 工作流、查看会话状态,或打开桌面端面板。',
|
||
'slash.help.group.context': '上下文',
|
||
'slash.help.group.project': '项目',
|
||
'slash.help.group.desktop': '桌面端',
|
||
'slash.help.group.more': '更多',
|
||
'slash.help.moreAvailable': '还有 {count} 条命令可用。输入 / 可以搜索完整命令列表。',
|
||
'slash.inspector.title': '会话检查器',
|
||
'slash.inspector.close': '关闭会话检查器',
|
||
'slash.inspector.loading': '正在加载会话数据',
|
||
'slash.inspector.error.noActiveSession': '当前没有选中的活跃会话。',
|
||
'slash.inspector.error.unavailable': '会话检查器数据不可用。请重启桌面端后端,让 /api/sessions/:id/inspection 接口生效。',
|
||
'slash.inspector.tab.status': '状态',
|
||
'slash.inspector.tab.usage': '用量',
|
||
'slash.inspector.tab.context': '上下文',
|
||
'slash.inspector.status.cliStatus': 'CLI 状态',
|
||
'slash.inspector.status.running': '运行中',
|
||
'slash.inspector.status.notRunning': '未运行',
|
||
'slash.inspector.status.activeModel': '当前模型',
|
||
'slash.inspector.status.unknown': '未知',
|
||
'slash.inspector.status.mcpConnections': 'MCP 连接',
|
||
'slash.inspector.status.connected': '已连接',
|
||
'slash.inspector.status.failed': '失败',
|
||
'slash.inspector.status.registeredTools': '注册工具',
|
||
'slash.inspector.status.commands': '条命令',
|
||
'slash.inspector.status.sessionMetadata': '会话元数据',
|
||
'slash.inspector.status.version': '版本',
|
||
'slash.inspector.status.sessionId': '会话 ID',
|
||
'slash.inspector.status.workingDirectory': '工作目录',
|
||
'slash.inspector.status.permissionMode': '权限模式',
|
||
'slash.inspector.status.authToken': '认证令牌',
|
||
'slash.inspector.status.outputStyle': '输出样式',
|
||
'slash.inspector.status.default': '默认',
|
||
'slash.inspector.status.mcpServers': 'MCP 服务',
|
||
'slash.inspector.status.refresh': '刷新',
|
||
'slash.inspector.status.contextWindow': '上下文窗口',
|
||
'slash.inspector.usage.emptyTitle': '暂无用量数据',
|
||
'slash.inspector.usage.emptyBody': 'CLI 会话启动并完成至少一轮回复后,这里会显示用量。',
|
||
'slash.inspector.usage.contextSnapshotNotice': '当前展示来自上下文快照的 token 用量。上下文数据刷新后会同步更新。',
|
||
'slash.inspector.usage.transcriptNotice': '当前展示从会话记录重建的用量。API 耗时只对正在运行的 CLI 进程可用。',
|
||
'slash.inspector.usage.unknownCost': '部分模型价格未知,费用统计可能不准确。',
|
||
'slash.inspector.usage.totalCost': '总费用',
|
||
'slash.inspector.usage.source': '来源',
|
||
'slash.inspector.usage.source.contextSnapshot': '上下文快照',
|
||
'slash.inspector.usage.source.transcript': '会话记录',
|
||
'slash.inspector.usage.source.currentProcess': '当前进程',
|
||
'slash.inspector.usage.apiDuration': 'API 耗时',
|
||
'slash.inspector.usage.wallDuration': '总耗时',
|
||
'slash.inspector.usage.usageSpan': '用量跨度',
|
||
'slash.inspector.usage.codeChanges': '代码改动',
|
||
'slash.inspector.usage.input': '输入',
|
||
'slash.inspector.usage.output': '输出',
|
||
'slash.inspector.usage.cacheReadWrite': '缓存读 / 写',
|
||
'slash.inspector.usage.webSearch': '网页搜索',
|
||
'slash.inspector.usage.byModel': '按模型统计',
|
||
'slash.inspector.usage.tokens': 'Tokens',
|
||
'slash.inspector.usage.noModelTitle': '暂无模型用量',
|
||
'slash.inspector.usage.noModelBody': '记录到模型回复后,这里会显示 token 用量。',
|
||
'slash.inspector.context.loading': '正在加载上下文数据',
|
||
'slash.inspector.context.emptyTitle': '暂无上下文数据',
|
||
'slash.inspector.context.emptyBody': '上下文用量需要活跃的 CLI 会话。',
|
||
'slash.inspector.context.windowUsage': '上下文窗口用量',
|
||
'slash.inspector.context.used': '已使用',
|
||
'slash.inspector.context.free': '剩余',
|
||
'slash.inspector.context.messages': '消息',
|
||
'slash.inspector.context.assistant': '助手',
|
||
'slash.inspector.context.toolResults': '工具结果',
|
||
'slash.inspector.context.context': '上下文',
|
||
'slash.inspector.context.categoryTitle': '按类别估算',
|
||
'slash.inspector.context.noCategoriesTitle': '暂无上下文分类',
|
||
'slash.inspector.context.noCategoriesBody': 'CLI 返回上下文分析后,这里会显示分类数据。',
|
||
'slash.inspector.context.memoryFiles': '记忆文件',
|
||
'slash.inspector.context.noMemoryFiles': '当前会话没有加载记忆文件。',
|
||
'slash.inspector.context.openMemory': '打开记忆',
|
||
'contextIndicator.ariaLabel': '上下文用量 {percent}',
|
||
'contextIndicator.pendingAria': '上下文用量待计算',
|
||
'contextIndicator.loadingAria': '上下文用量加载中',
|
||
'contextIndicator.unavailableAria': '上下文用量不可用',
|
||
'contextIndicator.title': '上下文',
|
||
'contextIndicator.modelUnknown': '未知模型',
|
||
'contextIndicator.used': '已使用',
|
||
'contextIndicator.free': '剩余',
|
||
'contextIndicator.window': '窗口',
|
||
'contextIndicator.loading': '正在加载上下文用量...',
|
||
'contextIndicator.pendingDetail': '会话启动后计算上下文用量。',
|
||
'contextIndicator.unavailable': '不可用',
|
||
'contextIndicator.unavailableDetail': '此会话暂时无法获取上下文用量。',
|
||
'contextIndicator.updatedUnknown': '尚未刷新',
|
||
'contextIndicator.updatedNow': '刚刚更新',
|
||
'contextIndicator.updatedMinutes': '{count} 分钟前更新',
|
||
'contextIndicator.estimate': '估算',
|
||
'chat.navigate': '导航',
|
||
'chat.select': '选择',
|
||
'chat.dismiss': '关闭',
|
||
'chat.stopTitle': '停止生成 (Cmd+.)',
|
||
'chat.jumpToLatest': '回到最新',
|
||
'chat.memorySavedTitle': '已保存 {count} 个记忆文件',
|
||
'chat.memorySavedFromToolsTitle': '保存了 {count} 条记忆',
|
||
'chat.memoryReferencedTitle': '{count} 条记忆引用',
|
||
'chat.memoryOpenSettings': '打开记忆',
|
||
'chat.memoryMoreFiles': '还有 {count} 个',
|
||
'chat.memoryTechnicalDetails': '工具详情',
|
||
'chat.rewindSuccessWithCode': '已回滚 {count} 条消息,并恢复相关文件。',
|
||
'chat.rewindSuccessConversationOnly': '已回滚 {count} 条消息。这一轮没有可用的文件检查点。',
|
||
'chat.turnChangesTitle': '{count} 个文件已更改',
|
||
'chat.turnChangesLatestCardLabel': '轮次已更改文件',
|
||
'chat.turnChangesHistoricalCardLabel': '轮次已更改文件',
|
||
'chat.turnChangesLatestSubtitle': '当前轮次检查点',
|
||
'chat.turnChangesHistoricalSubtitle': '历史轮次检查点',
|
||
'chat.turnChangesLatestUndo': '撤销当前轮次',
|
||
'chat.turnChangesHistoricalUndo': '回滚到这一轮之前',
|
||
'chat.turnChangesUndoing': '正在撤销...',
|
||
'chat.turnChangesLatestUndoAria': '撤销当前轮次变更',
|
||
'chat.turnChangesHistoricalUndoAria': '回滚到这一轮之前',
|
||
'chat.turnChangesLatestConfirmTitle': '撤销当前轮次?',
|
||
'chat.turnChangesHistoricalConfirmTitle': '回滚到这一轮之前?',
|
||
'chat.turnChangesLatestConfirmBody': '这会回滚最近一次助手回复,并恢复这一轮中被跟踪的文件变更。',
|
||
'chat.turnChangesHistoricalConfirmBody': '这会把会话回滚到这一轮之前,并恢复该检查点对应的文件变更。',
|
||
'chat.turnChangesLatestConfirmUndo': '撤销当前轮次',
|
||
'chat.turnChangesHistoricalConfirmUndo': '回滚到这一轮之前',
|
||
'chat.turnChangesOpenInWorkspaceAria': '在工作区打开 {path}',
|
||
'chat.turnChangesShowMore': '再显示 {count} 个文件',
|
||
'chat.turnChangesShowLess': '收起',
|
||
|
||
// ─── Streaming Indicator ──────────────────────────────────────
|
||
'streaming.thinking': '思考中',
|
||
'streaming.running': '运行中',
|
||
'streaming.working': '工作中',
|
||
|
||
// ─── Permission Dialog ──────────────────────────────────────
|
||
'permission.allowEditFile': '允许 Claude {toolName} {fileName}?',
|
||
'permission.allowEditFileGeneric': '允许 Claude {toolName}此文件?',
|
||
'permission.allowBash': '允许 Claude 执行此命令?',
|
||
'permission.allowTool': '允许 Claude 使用 {toolName}?',
|
||
'permission.awaitingApproval': '等待审批',
|
||
'permission.responded': '已响应',
|
||
'permission.allow': '允许',
|
||
'permission.allowForSession': '本次会话允许',
|
||
'permission.deny': '拒绝',
|
||
'permission.hideDetails': '隐藏详情',
|
||
'permission.showFullInput': '显示完整输入',
|
||
'permission.replacingContent': '替换文件内容',
|
||
'permission.planReadyTitle': '准备开始编码?',
|
||
'permission.planPreviewTitle': 'Claude 的计划',
|
||
'permission.planRequestedPermissions': '请求的权限',
|
||
'permission.planApprove': '批准计划',
|
||
'permission.planKeepPlanning': '继续规划',
|
||
'permission.planFeedbackPlaceholder': '告诉 Claude 需要修改什么',
|
||
'permission.planEmpty': '暂无计划内容。',
|
||
'permission.planApproved': '计划已批准',
|
||
'permission.planRejected': '计划已拒绝',
|
||
|
||
// ─── Computer Use Approval ──────────────────────────────────────
|
||
'computerUseApproval.titleApps': 'Computer Use 想控制这些应用',
|
||
'computerUseApproval.titleTcc': 'Computer Use 需要 macOS 权限',
|
||
'computerUseApproval.reason': '请求原因',
|
||
'computerUseApproval.allow': '本次会话允许',
|
||
'computerUseApproval.deny': '拒绝',
|
||
'computerUseApproval.alreadyGranted': '本次会话已授权',
|
||
'computerUseApproval.notInstalled': '应用未安装',
|
||
'computerUseApproval.sensitiveApp': '该应用属于高敏感类别,请额外确认后再授权。',
|
||
'computerUseApproval.alsoRequested': '同时请求了',
|
||
'computerUseApproval.hideWhileWorking': 'Claude 工作时会隐藏另外 {count} 个应用。',
|
||
'computerUseApproval.hideWhileWorkingRestore': 'Claude 工作时会隐藏另外 {count} 个应用,结束后会自动恢复。',
|
||
'computerUseApproval.accessibility': '辅助功能',
|
||
'computerUseApproval.screenRecording': '屏幕录制',
|
||
'computerUseApproval.granted': '已授权',
|
||
'computerUseApproval.notGranted': '未授权',
|
||
'computerUseApproval.openAccessibility': '打开辅助功能设置',
|
||
'computerUseApproval.openScreenRecording': '打开屏幕录制设置',
|
||
'computerUseApproval.tryAgain': '稍后重试',
|
||
'computerUseApproval.tccHint': '先在系统设置里授予缺失权限,返回后再点“稍后重试”。',
|
||
'computerUseApproval.tryAgainHint': '“稍后重试”会把控制权交还给 Claude,让它在 macOS 权限生效后重新调用 request_access。',
|
||
|
||
// ─── Ask User Question ──────────────────────────────────────
|
||
'question.needsInput': 'Claude 需要你的输入',
|
||
'question.answered': '已回答',
|
||
'question.completed': '已结束',
|
||
'question.customResponse': '或输入自定义回复:',
|
||
'question.typePlaceholder': '输入你的回答...',
|
||
'question.submit': '提交',
|
||
'question.answeredPrefix': '已回答: ',
|
||
'question.resultPrefix': '结果: ',
|
||
|
||
// ─── Thinking Block ──────────────────────────────────────
|
||
'thinking.label': '思考中',
|
||
'thinking.labelDone': '已思考',
|
||
|
||
// ─── Tool Calls ──────────────────────────────────────
|
||
'tool.errorOutput': '错误输出',
|
||
'tool.toolOutput': '工具输出',
|
||
'tool.toolInput': '工具输入',
|
||
'tool.partialInput': '部分输入',
|
||
'tool.writerPreview': 'Writer',
|
||
'tool.writerPreviewLatest': '正在显示最新 {visible} / {total} 行',
|
||
'tool.contentStats': '{lines} · {chars}',
|
||
'tool.contentStatsLatest': '最新 {visible} / {total} 行 · {chars}',
|
||
'tool.lineCountSingular': '{count} 行',
|
||
'tool.lineCountPlural': '{count} 行',
|
||
'tool.charCountSingular': '{count} 字符',
|
||
'tool.charCountPlural': '{count} 字符',
|
||
'tool.generatingContent': '正在生成内容',
|
||
'tool.preparingEdit': '正在准备编辑',
|
||
'tool.preparingTool': '正在准备工具',
|
||
'tool.stopped': '已停止',
|
||
'tool.readFileContents': '读取文件内容',
|
||
'tool.createFile': '创建文件',
|
||
'tool.updateFileContents': '更新文件内容',
|
||
'tool.linesChanged': '{count} 行已更改',
|
||
'tool.linesCreated': '{count} 行已创建',
|
||
'tool.linesOutput': '{count} 行输出',
|
||
'tool.result': '{toolName} 结果',
|
||
'tool.resultGeneric': '工具结果',
|
||
'tool.error': '错误',
|
||
'tool.success': '成功',
|
||
'tool.showLess': '收起',
|
||
'tool.showMore': '展开 {count} 个字符',
|
||
|
||
// ─── Tool Group Verbs ──────────────────────────────────────
|
||
'toolGroup.readOne': '读取了 1 个文件',
|
||
'toolGroup.readMany': '读取了 {count} 个文件',
|
||
'toolGroup.createdOne': '创建了一个文件',
|
||
'toolGroup.createdMany': '创建了 {count} 个文件',
|
||
'toolGroup.editedOne': '编辑了一个文件',
|
||
'toolGroup.editedMany': '编辑了 {count} 个文件',
|
||
'toolGroup.ranOne': '执行了一条命令',
|
||
'toolGroup.ranMany': '执行了 {count} 条命令',
|
||
'toolGroup.foundFiles': '查找到文件',
|
||
'toolGroup.searchedOne': '搜索了代码',
|
||
'toolGroup.searchedMany': '搜索了 {count} 个模式',
|
||
'toolGroup.agentOne': '派遣了一个代理',
|
||
'toolGroup.agentMany': '派遣了 {count} 个代理',
|
||
'agentStatus.starting': '开始中',
|
||
'agentStatus.running': '进行中',
|
||
'agentStatus.done': '完成',
|
||
'agentStatus.failed': '失败',
|
||
'agentStatus.stopped': '已停止',
|
||
'agentStatus.noActivity': '暂时还没有工具活动',
|
||
'agentStatus.viewResult': '查看结果',
|
||
'agentStatus.resultTitle': 'Agent 结果',
|
||
'toolGroup.searchedWeb': '搜索了网页',
|
||
'toolGroup.fetchedOne': '获取了一个页面',
|
||
'toolGroup.fetchedMany': '获取了 {count} 个页面',
|
||
|
||
// ─── Tasks ──────────────────────────────────────
|
||
'tasks.title': '任务',
|
||
'tasks.completed': '已完成的任务',
|
||
'tasks.dismissCompleted': '隐藏已完成任务',
|
||
'tasks.newTask': '+ 新建任务',
|
||
'tasks.emptyTitle': '暂无定时任务。',
|
||
'tasks.emptyDesc': '创建定时任务来自动化你的工程工作流。',
|
||
'tasks.createNew': '创建新任务',
|
||
'tasks.totalTasks': '总任务数',
|
||
'tasks.active': '活跃',
|
||
'tasks.disabled': '已禁用',
|
||
|
||
// ─── New Task Modal ──────────────────────────────────────
|
||
'newTask.title': '新建定时任务',
|
||
'newTask.localWarning': '本地任务仅在电脑唤醒时运行。',
|
||
'newTask.fullPermissions': '所有权限',
|
||
'newTask.name': '名称',
|
||
'newTask.namePlaceholder': 'daily-code-review',
|
||
'newTask.description': '描述',
|
||
'newTask.descPlaceholder': '审查昨天的提交并标记可疑之处',
|
||
'newTask.frequency': '频率',
|
||
'newTask.everyNMinutes': '每 N 分钟',
|
||
'newTask.everyNHours': '每 N 小时',
|
||
'newTask.daily': '每天',
|
||
'newTask.weekdays': '工作日(周一至周五)',
|
||
'newTask.specificDays': '指定星期几',
|
||
'newTask.monthly': '每月',
|
||
'newTask.customCron': '自定义 Cron 表达式',
|
||
'newTask.intervalMinutes': '每 {n} 分钟',
|
||
'newTask.intervalHours': '每 {n} 小时',
|
||
'newTask.atMinute': '在第 :{m} 分钟',
|
||
'newTask.onMonthDay': '每月第 {d} 天',
|
||
'newTask.cronFormatHint': '格式:分 时 日 月 星期',
|
||
'newTask.invalidCron': '无效的 Cron 表达式',
|
||
'newTask.daySun': '日',
|
||
'newTask.dayMon': '一',
|
||
'newTask.dayTue': '二',
|
||
'newTask.dayWed': '三',
|
||
'newTask.dayThu': '四',
|
||
'newTask.dayFri': '五',
|
||
'newTask.daySat': '六',
|
||
'newTask.delayNote': '定时任务会使用随机延迟以优化服务器性能。',
|
||
'newTask.create': '创建任务',
|
||
'newTask.promptPlaceholder': '查看过去 24 小时的提交。总结变更内容,标记有风险的模式或缺失的测试,并记录值得跟进的事项。',
|
||
'newTask.notification': '通知',
|
||
'newTask.notifyOnComplete': '完成后推送通知',
|
||
'newTask.notifyChannels': '通知渠道',
|
||
'newTask.notifyHint': '任务完成后发送原生桌面通知或 IM 消息。',
|
||
'newTask.notifyDesktop': '桌面',
|
||
'newTask.notConfigured': '未配置',
|
||
'newTask.noChannelConfigured': '尚未配置任何 IM 渠道,请前往 设置 → IM 接入 进行配置。',
|
||
'newTask.noChannelSelected': '请至少选择一个通知渠道。',
|
||
|
||
// ─── Cron 描述 ──────────────────────────────────────
|
||
'cron.everyMinute': '每分钟执行',
|
||
'cron.everyNMinutes': '每 {n} 分钟执行',
|
||
'cron.everyHour': '每小时执行',
|
||
'cron.everyNHours': '每 {n} 小时执行',
|
||
'cron.everyNHoursAtMinute': '每 {n} 小时在第 :{m} 分钟执行',
|
||
'cron.dailyAt': '每天 {time} 执行',
|
||
'cron.weekdaysAt': '工作日 {time} 执行',
|
||
'cron.specificDaysAt': '每{days} {time} 执行',
|
||
'cron.monthlyAt': '每月 {day} 日 {time} 执行',
|
||
'cron.customSchedule': '自定义:{cron}',
|
||
'cron.dow.0': '周日',
|
||
'cron.dow.1': '周一',
|
||
'cron.dow.2': '周二',
|
||
'cron.dow.3': '周三',
|
||
'cron.dow.4': '周四',
|
||
'cron.dow.5': '周五',
|
||
'cron.dow.6': '周六',
|
||
|
||
// ─── 任务操作与日志 ──────────────────────────────────────
|
||
'tasks.runNow': '立即执行',
|
||
'tasks.confirmRun': '确定要立即执行此任务吗?',
|
||
'tasks.confirmDisable': '确定要禁用此定时任务吗?',
|
||
'tasks.confirmEnable': '确定要启用此定时任务吗?',
|
||
'tasks.confirmDelete': '确定要永久删除此任务及其所有日志吗?',
|
||
'tasks.running': '执行中...',
|
||
'tasks.viewLogs': '日志',
|
||
'tasks.logsTitle': '执行记录',
|
||
'tasks.noLogs': '暂无执行记录',
|
||
'tasks.runStatus.running': '运行中',
|
||
'tasks.runStatus.completed': '已完成',
|
||
'tasks.runStatus.failed': '失败',
|
||
'tasks.runStatus.timeout': '超时',
|
||
'tasks.duration': '{s}秒',
|
||
'tasks.viewOutput': '摘要',
|
||
'tasks.hideOutput': '收起',
|
||
'tasks.close': '关闭',
|
||
'tasks.edit': '编辑',
|
||
'tasks.editTitle': '编辑定时任务',
|
||
'tasks.saveChanges': '保存修改',
|
||
'tasks.openSession': '查看完整对话',
|
||
'tasks.createdAt': '创建于 ',
|
||
'tasks.lastRunAt': '上次执行 ',
|
||
'tasks.outputHintSession': '点击「查看完整对话」可在会话中查看完整输出。',
|
||
'tasks.noOutputText': '暂无输出内容。',
|
||
|
||
// ─── Prompt Editor ──────────────────────────────────────
|
||
'promptEditor.worktree': '工作树',
|
||
'promptEditor.bypassWarning': '跳过模式将授予完整系统访问权限',
|
||
'promptEditor.within': '范围',
|
||
'promptEditor.selectFolder': '— 选择文件夹以限制范围',
|
||
|
||
// ─── Permission Mode Selector ──────────────────────────────────────
|
||
'permMode.executionPermissions': '执行权限',
|
||
'permMode.askPermissions': '询问权限',
|
||
'permMode.askPermDesc': 'CLI 请求时确认文件编辑和高风险命令',
|
||
'permMode.autoAccept': '自动接受编辑',
|
||
'permMode.autoAcceptDesc': 'Claude 无需询问即可写入磁盘',
|
||
'permMode.planMode': '计划模式',
|
||
'permMode.planModeDesc': '仅架构和推理,不操作文件',
|
||
'permMode.bypass': '跳过权限',
|
||
'permMode.bypassDesc': '对 Shell 和文件系统的完整工具访问',
|
||
'permMode.dontAsk': '不询问',
|
||
'permMode.enableBypassTitle': '启用跳过权限?',
|
||
'permMode.enableBypassSubtitle': '这将授予对系统的完全访问权限',
|
||
'permMode.enableBypassBody': 'Claude 将拥有<strong>不受限制的</strong>权限来执行 Shell 命令和修改以下目录中的文件:',
|
||
'permMode.permReadWrite': '读取、写入和删除任何文件',
|
||
'permMode.permShell': '执行任意 Shell 命令',
|
||
'permMode.permPackages': '安装或移除软件包',
|
||
'permMode.enableBypassBtn': '启用跳过',
|
||
'permMode.disabledDuringTurn': '会话进行中,无法切换权限',
|
||
|
||
// Mode labels (compact, for chips)
|
||
'permMode.label.default': '询问权限',
|
||
'permMode.label.acceptEdits': '自动接受',
|
||
'permMode.label.plan': '计划模式',
|
||
'permMode.label.bypassPermissions': '跳过',
|
||
'permMode.label.dontAsk': '不询问',
|
||
|
||
// ─── Model Selector ──────────────────────────────────────
|
||
'model.selectModel': '选择模型',
|
||
'model.configuration': '模型配置',
|
||
'model.effort': '推理强度',
|
||
|
||
// ─── Directory Picker ──────────────────────────────────────
|
||
'dirPicker.selectProject': '选择项目...',
|
||
'dirPicker.recent': '最近',
|
||
'dirPicker.noRecent': '暂无最近项目',
|
||
'dirPicker.chooseFolder': '选择其他文件夹',
|
||
'dirPicker.chooseProjectFolder': '选择项目文件夹',
|
||
'dirPicker.useThisFolder': '使用此文件夹',
|
||
'dirPicker.noSubdirs': '无子目录',
|
||
|
||
// ─── File Search ──────────────────────────────────────
|
||
'fileSearch.searching': '搜索中...',
|
||
'fileSearch.noMatch': '没有匹配的文件',
|
||
'fileSearch.noFiles': '此目录下无文件',
|
||
'fileSearch.accessDenied': '无法访问此目录',
|
||
'fileSearch.loadFailed': '目录加载失败',
|
||
'fileSearch.navigate': '导航',
|
||
'fileSearch.attach': '附加',
|
||
'fileSearch.select': '选择',
|
||
'fileSearch.open': '打开目录',
|
||
'fileSearch.close': '关闭',
|
||
'fileSearch.directory': '目录',
|
||
'fileSearch.currentDirectory': '当前目录',
|
||
'fileSearch.folderTag': '目录',
|
||
'fileSearch.fileTag': '文件',
|
||
'fileSearch.openFolder': '打开目录',
|
||
|
||
// ─── Teams ──────────────────────────────────────
|
||
'teams.backToLeader': '\u2190 返回主控',
|
||
'teams.viewing': '查看:',
|
||
'teams.transcript': '记录',
|
||
'teams.noMessages': '暂无消息',
|
||
'teams.team': '团队:',
|
||
'teams.members': '名成员',
|
||
'teams.working': '正在工作中...',
|
||
'teams.thinking': '正在思考中...',
|
||
'teams.running': '运行中',
|
||
'teams.leader': '主控',
|
||
'teams.memberPlaceholder': '直接给这个 Agent 发消息...',
|
||
'teams.memberSessionHint': '这里发送的消息会直接投递给该 Agent,同时继续刷新它的 transcript。',
|
||
|
||
// ─── Session Activity ──────────────────────────────────────
|
||
'session.activity.title': '活动',
|
||
'session.activity.close': '关闭活动',
|
||
'session.activity.clearFinished': '清除已完成',
|
||
'session.activity.openTeamMember': '打开团队成员 {name}',
|
||
'session.activity.openRun': '打开运行 {name}',
|
||
'session.activity.openBackgroundTask': '打开后台任务 {name}',
|
||
'session.activity.stopBackgroundTask': '停止后台任务 {name}',
|
||
'session.activity.stoppingBackgroundTask': '正在停止后台任务 {name}',
|
||
'session.activity.details.title': '详情',
|
||
'session.activity.details.type': '类型',
|
||
'session.activity.details.description': '描述',
|
||
'session.activity.details.summary': '摘要',
|
||
'session.activity.details.outputFile': '输出文件',
|
||
'session.activity.details.usage': '用量',
|
||
'session.activity.section.tasks': '任务',
|
||
'session.activity.section.team': '团队',
|
||
'session.activity.section.backgroundTasks': '后台任务',
|
||
'session.activity.section.subagents': 'SubAgent',
|
||
'session.activity.section.sources': '来源',
|
||
'session.activity.empty.tasks': '暂无任务',
|
||
'session.activity.empty.team': '暂无团队成员',
|
||
'session.activity.empty.backgroundTasks': '暂无后台任务',
|
||
'session.activity.empty.subagents': '暂无 SubAgent',
|
||
'session.activity.empty.sources': '暂无来源',
|
||
'session.activity.task.completed': '任务已完成',
|
||
'session.activity.task.inProgress': '任务进行中',
|
||
'session.activity.task.pending': '任务待处理',
|
||
'session.activity.tasks.earlier': '历史任务',
|
||
'session.activity.tasks.earlierSummary': '历史轮次:{completed}/{total} 已完成',
|
||
'session.activity.status.pending': '待处理',
|
||
'session.activity.status.inProgress': '进行中',
|
||
'session.activity.status.completed': '已完成',
|
||
'session.activity.status.running': '运行中',
|
||
'session.activity.status.failed': '失败',
|
||
'session.activity.status.stopped': '已停止',
|
||
'session.activity.status.idle': '空闲',
|
||
'session.activity.status.error': '错误',
|
||
'session.activity.status.unknown': '未知',
|
||
|
||
// ─── SubAgent Run ──────────────────────────────────────
|
||
'subagentRun.refresh': '刷新 SubAgent 运行',
|
||
'subagentRun.loading': '正在加载 SubAgent 运行...',
|
||
'subagentRun.source': '来源',
|
||
'subagentRun.agent': 'Agent',
|
||
'subagentRun.unknown': '未知',
|
||
'subagentRun.task': '任务',
|
||
'subagentRun.updated': '更新时间',
|
||
'subagentRun.output': '输出',
|
||
'subagentRun.agentInvocation': 'Agent 调用',
|
||
'subagentRun.parentToolInput': '父级 Agent 工具输入',
|
||
'subagentRun.parentToolCall': '父级 Agent 工具调用',
|
||
'subagentRun.transcript': '运行记录',
|
||
'subagentRun.noTranscript': '没有捕获到这个 SubAgent 的本地运行记录。',
|
||
'subagentRun.truncated': '显示前 50 条和最新 950 条记录',
|
||
'subagentRun.source.transcript': '运行记录',
|
||
'subagentRun.source.sessionHistory': '会话历史',
|
||
'subagentRun.source.liveTask': '实时任务',
|
||
'subagentRun.source.none': '无',
|
||
'subagentRun.status.completed': '已完成',
|
||
'subagentRun.status.failed': '失败',
|
||
'subagentRun.status.stopped': '已停止',
|
||
'subagentRun.status.running': '运行中',
|
||
'subagentRun.status.unknown': '未知',
|
||
'subagentRun.result.completedFallback': 'SubAgent 已完成,但没有结果内容。',
|
||
'subagentRun.result.failedFallback': 'SubAgent 已失败,但没有错误内容。',
|
||
'subagentRun.result.stoppedFallback': 'SubAgent 已停止,但没有结果内容。',
|
||
'subagentRun.result.noneFallback': '暂无结果。',
|
||
|
||
// ─── Scheduled Tasks Pages ──────────────────────────────────────
|
||
'scheduledPage.title': '定时任务',
|
||
'scheduledPage.subtitle': '按计划或在需要时运行任务。在任意会话中输入 {code} 即可创建。',
|
||
'scheduledPage.desktopNotice': '定时任务仅在桌面应用打开时运行。请确保应用持续运行以按时触发任务。',
|
||
'scheduledPage.oldSubtitle': '管理自动化运维流程和后台维护任务。',
|
||
'scheduledPage.executionMode': '执行模式',
|
||
'scheduledPage.localMode': '本地模式',
|
||
'scheduledPage.remoteMode': '远程模式',
|
||
'scheduledPage.nextRun': '下次运行',
|
||
'scheduledPage.systemHealth': '系统健康',
|
||
'scheduledPage.activeSession': '活跃会话',
|
||
'scheduledPage.colTaskName': '任务名称',
|
||
'scheduledPage.colFrequency': '频率',
|
||
'scheduledPage.colLastResult': '上次结果',
|
||
'scheduledPage.colNextExecution': '下次执行',
|
||
'scheduledPage.colActions': '操作',
|
||
'scheduledPage.endOfList': '任务列表结束',
|
||
'scheduledPage.pausedTasks': '另有 9 个任务当前已暂停或因维护而禁用。',
|
||
'scheduledPage.recentLogs': '最近输出日志',
|
||
'scheduledPage.viewArtifacts': '查看完整产物',
|
||
'scheduledPage.resourceAllocation': '资源分配',
|
||
'scheduledPage.cpuCapacity': 'CPU 容量',
|
||
'scheduledPage.memoryLoad': '内存负载',
|
||
'scheduledPage.connectedLocal': '已连接到本地节点',
|
||
'scheduledPage.thisMonth': '本月 {count}',
|
||
|
||
// ─── 更新检查 ──────────────────────────────────────
|
||
'update.available': 'v{version} 可用',
|
||
'update.availableLabel': '可更新版本',
|
||
'update.checking': '正在检查更新...',
|
||
'update.checkNow': '检查更新',
|
||
'update.checkedAt': '上次检查时间 {time}',
|
||
'update.currentVersionUnknown': '未知版本',
|
||
'update.newVersion': '新版本 v{version} 可用',
|
||
'update.downloading': '下载中...',
|
||
'update.downloaded': '更新已下载。方便时重启即可使用新版。',
|
||
'update.idle': '点击检查更新,对比当前安装版本和 GitHub Releases 的最新版本。',
|
||
'update.installAndRestart': '安装并重启',
|
||
'update.installing': '正在安装更新...',
|
||
'update.now': '立即更新',
|
||
'update.later': '稍后',
|
||
'update.progress': '正在下载更新... {progress}%',
|
||
'update.progressBytes': '正在下载更新... 已下载 {downloaded}',
|
||
'update.proxyAdvanced': '高级更新代理',
|
||
'update.proxyModeManual': '手动代理',
|
||
'update.proxyModeManualDescription': '使用你填写的本地 HTTP 代理地址。',
|
||
'update.proxyModeSystem': '系统代理',
|
||
'update.proxyModeSystemDescription': '自动使用系统 HTTP/HTTPS 代理。',
|
||
'update.proxySave': '保存',
|
||
'update.proxyScopeHint': '这里只影响应用自身的更新检查和安装包下载。',
|
||
'update.proxyUrl': '代理地址',
|
||
'update.proxyUrlHint': '支持 HTTP 和 HTTPS 代理,例如 http://127.0.0.1:7890。',
|
||
'update.proxyUrlInvalid': '请输入 HTTP 或 HTTPS 代理地址。',
|
||
'update.proxyUrlRequired': '请输入代理地址。',
|
||
'update.releaseNotes': '更新说明',
|
||
'update.readyBody': 'v{version} 已下载。方便时重启即可使用新版。',
|
||
'update.readyTitle': '更新已准备好',
|
||
'update.restarting': '正在重启以完成更新...',
|
||
'update.upToDate': '当前已是最新版本 v{version}。',
|
||
'update.failed': '更新失败: {error}',
|
||
|
||
// ─── 活跃会话 ──────────────────────────────────────
|
||
'session.untitled': '未命名会话',
|
||
'session.active': '会话活跃中',
|
||
'session.lastUpdated': '最后更新 {time}',
|
||
'session.messages': '{count} 条消息',
|
||
'session.historyLoadFailed': '历史会话加载失败。',
|
||
'session.workspaceUnavailable': '工作目录不可用: {dir}',
|
||
'session.timeJustNow': '刚刚',
|
||
'session.timeMinutes': '{n}分钟前',
|
||
'session.timeHours': '{n}小时前',
|
||
'session.timeDays': '{n}天前',
|
||
'trace.open': 'Trace',
|
||
'trace.title': '模型 Trace',
|
||
'trace.loadFailed': 'Trace 加载失败',
|
||
'trace.apiCalls': 'API 调用',
|
||
'trace.failedCalls': '失败',
|
||
'trace.duration': '耗时',
|
||
'trace.elapsed': '已用时',
|
||
'trace.completed': '完成',
|
||
'trace.wallTime': '墙钟时间',
|
||
'trace.modelTime': '模型耗时',
|
||
'trace.toolTime': '工具耗时',
|
||
'trace.models': '模型',
|
||
'trace.request': '请求',
|
||
'trace.response': '响应',
|
||
'trace.status': '状态',
|
||
'trace.live': '实时',
|
||
'trace.updatedAt': '更新',
|
||
'trace.copySessionId': '复制 Session ID',
|
||
'trace.refresh': '刷新 Trace',
|
||
'trace.openWindow': '在独立窗口打开',
|
||
'trace.delete': '删除 Trace',
|
||
'trace.noResponse': '未捕获响应正文',
|
||
'trace.emptyTitle': '暂无 Trace 调用',
|
||
'trace.emptyBody': '这个会话还没有捕获到模型调用。新的桌面会话会自动记录精简的请求和响应预览。',
|
||
'trace.tokens': 'Tokens',
|
||
'trace.snapshotEmpty': 'Trace 快照为空。',
|
||
'trace.errors': '错误',
|
||
'trace.focus': '关注点',
|
||
'trace.searchSpans': '搜索 Span',
|
||
'trace.noMatchingSpans': '没有匹配的 Span',
|
||
'trace.filter.all': '全部',
|
||
'trace.filter.llm': 'LLM',
|
||
'trace.filter.tools': '工具',
|
||
'trace.filter.errors': '错误',
|
||
'trace.sidechain': '子链',
|
||
'trace.turnLabel': '第 {index} 轮',
|
||
'trace.waitingForResult': '等待结果',
|
||
'trace.started': '开始',
|
||
'trace.provider': 'Provider',
|
||
'trace.model': '模型',
|
||
'trace.childSpans': '子 Span',
|
||
'trace.requestBody': '请求正文',
|
||
'trace.requestHeaders': '请求头',
|
||
'trace.responseBody': '响应正文',
|
||
'trace.responseHeaders': '响应头',
|
||
'trace.toolResult': '工具结果',
|
||
'trace.truncatedShort': '已截断',
|
||
'trace.noData': '无数据',
|
||
'trace.llmCalls': 'LLM 调用',
|
||
'trace.toolCalls': '工具调用',
|
||
'trace.status.ok': '正常',
|
||
'trace.status.error': '错误',
|
||
'trace.status.pending': '等待中',
|
||
'trace.message.user': '用户消息',
|
||
'trace.message.assistant': '助手消息',
|
||
'trace.message.system': '系统消息',
|
||
'trace.message.toolRequest': '助手请求工具',
|
||
'trace.message.toolResult': '工具结果',
|
||
'trace.toolError': '工具错误',
|
||
'trace.modelCall': '模型调用',
|
||
'trace.sessionActivity': '会话活动',
|
||
'trace.diagnosis.modelError': '模型调用失败',
|
||
'trace.diagnosis.toolError': '工具执行失败',
|
||
'trace.diagnosis.eventError': '链路事件失败',
|
||
'trace.diagnosis.pendingModel': '正在等待模型响应',
|
||
'trace.diagnosis.pendingTool': '正在等待工具结果',
|
||
'trace.diagnosis.waitingForAgent': '用户消息尚未进入 agent 步骤',
|
||
'trace.diagnosis.empty': '没有可诊断事件',
|
||
'trace.diagnosis.healthy': '未发现阻塞点',
|
||
'trace.event.apiCallStarted': 'API 调用开始',
|
||
'trace.event.apiCallCompleted': 'API 调用完成',
|
||
'trace.event.apiCallFailed': 'API 调用失败',
|
||
'trace.event.apiCallAborted': 'API 调用中断',
|
||
'trace.event.responseCaptureFailed': '响应捕获失败',
|
||
'trace.event.upstreamFetchStarted': '上游请求开始',
|
||
'trace.event.upstreamFetchCompleted': '上游请求完成',
|
||
'trace.event.upstreamFetchFailed': '上游请求失败',
|
||
'trace.section.response': '响应',
|
||
'trace.section.messages': '消息',
|
||
'trace.section.systemPrompt': '系统提示词',
|
||
'trace.section.tools': '工具',
|
||
'trace.section.parameters': '参数',
|
||
'trace.section.raw': '原始数据',
|
||
'trace.section.input': '输入',
|
||
'trace.section.result': '结果',
|
||
'trace.section.meta': '元信息',
|
||
'trace.section.content': '内容',
|
||
'trace.section.event': '事件',
|
||
'trace.section.metadata': '元数据',
|
||
'trace.detail.stopReason': '停止原因',
|
||
'trace.detail.streaming': '等待模型响应...',
|
||
'trace.detail.aborted': '请求在响应完成前被中断(超时或取消)。',
|
||
'trace.status.aborted': '已中断',
|
||
'trace.detail.legacyTruncated': '该记录为旧格式截断数据,无法解析语义视图,请查看下方原始数据。',
|
||
'trace.detail.fetchFailed': '完整记录加载失败,以下展示截断预览。',
|
||
'trace.detail.earlierMessages': '展开更早的 {count} 条消息',
|
||
'trace.detail.chars': '{count} 字符',
|
||
'trace.detail.thinking': '思考',
|
||
'trace.detail.toolUseId': 'Tool use ID',
|
||
'trace.detail.phase': '阶段',
|
||
'trace.detail.severity': '级别',
|
||
'trace.detail.message': '消息',
|
||
'trace.tree.aria': 'Trace 时间线',
|
||
'trace.tree.toggleTurn': '折叠/展开轮次',
|
||
'trace.list.eyebrow': 'Agent Trace',
|
||
'trace.list.title': 'Trace 列表',
|
||
'trace.list.collecting': '正在收集',
|
||
'trace.list.paused': '已暂停',
|
||
'trace.list.settings': 'Trace 设置',
|
||
'trace.list.sessions': '会话',
|
||
'trace.list.searchPlaceholder': '搜索标题、Session ID 或项目路径',
|
||
'trace.list.emptyTitle': '还没有 Trace 记录',
|
||
'trace.list.emptyBody': '开启收集后,新的桌面会话会把模型调用链路写入本地 traces 目录。',
|
||
'trace.list.loadFailed': 'Trace 列表加载失败',
|
||
'trace.list.loadedCount': '已显示 {shown} / {total}',
|
||
'trace.list.loadMore': '加载更多',
|
||
'trace.list.deleteConfirmTitle': '删除 Trace 会话',
|
||
'trace.list.deleteConfirmBody': '删除“{title}”的 Trace 数据?聊天记录不会被删除。',
|
||
'trace.list.deleteFailed': 'Trace 会话删除失败',
|
||
|
||
// ─── 应用外壳 ──────────────────────────────────────
|
||
'app.serverFailed': '本地服务启动失败',
|
||
'app.serverFailedHint': '反馈这个问题时,请把这块诊断信息截图一起发到 issue 里。',
|
||
'app.startupError': '启动错误',
|
||
'app.serverLogs': '服务日志',
|
||
'app.copyDiagnostics': '复制诊断信息',
|
||
'app.copiedDiagnostics': '已复制',
|
||
'app.launching': '正在启动本地工作区...',
|
||
|
||
// ─── Error Codes ──────────────────────────────────────
|
||
'error.CLI_NOT_RUNNING': 'CLI 进程未运行。会话可能已结束或进程已崩溃。',
|
||
'error.CLI_START_FAILED': 'CLI 进程启动失败。',
|
||
'error.CLI_AUTH_REQUIRED': '需要认证。请先登录。',
|
||
'error.CLI_SESSION_CONFLICT': '会话已被其他进程占用。',
|
||
'error.CLI_SPAWN_FAILED': 'CLI 子进程启动失败。',
|
||
'error.CLI_ERROR': '处理过程中发生错误。',
|
||
'error.WORKDIR_INVALID': '工作目录无效或不存在。',
|
||
'error.PARSE_ERROR': '消息格式无效。',
|
||
'error.UNKNOWN_TYPE': '未知的消息类型。',
|
||
'error.BAD_REQUEST': '请求无效。',
|
||
'error.NOT_FOUND': '资源未找到。',
|
||
'error.INTERNAL_ERROR': '内部服务器错误。',
|
||
|
||
// ─── 业务错误 ──────────────────────────────────────
|
||
'businessError.pdf_too_large': '这个 PDF 超出了当前模型可处理的大小。请先转成文本,或换一个更小的 PDF。',
|
||
'businessError.pdf_password_protected': '这个 PDF 有密码保护。请先解锁或转换后再发送。',
|
||
'businessError.pdf_invalid': '这个 PDF 文件无效。请先转成文本,或换一个文件发送。',
|
||
'businessError.image_too_large': '这张图片超出了当前模型可处理的大小。请压缩图片,或换一张更小的图片。',
|
||
'businessError.image_unsupported': '当前模型不支持图片。请继续使用文字,或切换到支持视觉的模型后重新发送图片。',
|
||
'businessError.request_too_large': '这次请求超出了当前模型可处理的大小。请移除大文件,或缩短消息后重试。',
|
||
'businessError.prompt_too_long': '当前上下文超出了模型限制。请先压缩会话,或减少上下文后重试。',
|
||
'businessError.auto_mode_unavailable': '当前套餐不支持自动模式。',
|
||
|
||
// ─── Server Status Verbs ──────────────────────────────────────
|
||
'serverVerb.Thinking': '思考中',
|
||
'serverVerb.Compacting conversation': '正在压缩上下文',
|
||
'serverVerb.Running': '运行中',
|
||
'serverVerb.Working': '处理中',
|
||
'serverVerb.Creating worktree': '正在创建工作树',
|
||
'serverVerb.Task started': '任务已启动',
|
||
'serverVerb.Task in progress': '任务进行中',
|
||
'chat.retry.title': '请求失败,正在重试',
|
||
'chat.retry.attempt': '第 {attempt}/{max} 次',
|
||
'chat.retry.httpStatus': 'HTTP {status}',
|
||
'chat.retry.networkError': '网络错误',
|
||
'chat.retry.waiting': '等待 {seconds}s',
|
||
'chat.retry.retrying': '正在重试…',
|
||
'chat.fallback.title': '网络波动,已切换为非流式请求',
|
||
'chat.fallback.detail': '响应将一次性返回,可能需要较长时间',
|
||
|
||
|
||
// ─── Tabs ──────────────────────────────────────
|
||
'tabs.close': '关闭',
|
||
'tabs.closeOthers': '关闭其他',
|
||
'tabs.closeLeft': '关闭左侧',
|
||
'tabs.closeRight': '关闭右侧',
|
||
'tabs.closeAll': '关闭所有',
|
||
'tabs.closeConfirmTitle': '会话运行中',
|
||
'tabs.closeConfirmMessage': '此会话仍在运行,你想要怎么做?',
|
||
'tabs.closeConfirmKeep': '保持运行',
|
||
'tabs.closeConfirmStop': '停止并关闭',
|
||
'tabs.closeAllConfirmTitle': '多个会话运行中',
|
||
// ─── Slash Command Descriptions ──────────────────────────────────────
|
||
'slashCmd.agent.description': '使用指定 Agent 执行提示',
|
||
'slashCmd.mcp.description': '打开当前聊天上下文中可用的 MCP 工具',
|
||
'slashCmd.skills.description': '浏览当前上下文中可直接调用的技能',
|
||
'slashCmd.help.description': '查看可用的桌面端与 Agent 命令',
|
||
'slashCmd.status.description': '查看会话状态、用量和上下文',
|
||
'slashCmd.cost.description': '查看会话用量和费用',
|
||
'slashCmd.context.description': '查看当前上下文用量',
|
||
'slashCmd.plugin.description': '在设置中打开插件管理',
|
||
'slashCmd.memory.description': '在设置中打开项目记忆文件',
|
||
'slashCmd.doctor.description': '在诊断中打开 Doctor',
|
||
'slashCmd.compact.description': '压缩会话上下文',
|
||
'slashCmd.clear.description': '清空会话历史',
|
||
'slashCmd.goal.description': '设定完成目标',
|
||
'slashCmd.review.description': '审查代码变更',
|
||
'slashCmd.commit.description': '创建 git 提交',
|
||
'slashCmd.pr.description': '创建 Pull Request',
|
||
'slashCmd.init.description': '初始化项目 CLAUDE.md',
|
||
'slashCmd.bug.description': '报告 Bug',
|
||
'slashCmd.config.description': '打开配置',
|
||
'slashCmd.login.description': '切换 Anthropic 账户',
|
||
'slashCmd.logout.description': '登出当前账户',
|
||
'slashCmd.model.description': '切换 AI 模型',
|
||
'slashCmd.permissions.description': '查看或管理工具权限',
|
||
'slashCmd.terminal-setup.description': '设置终端集成',
|
||
'slashCmd.vim.description': '切换 vim 编辑模式',
|
||
|
||
'tabs.closeAllConfirmMessage': '仍有 {count} 个会话正在运行。关闭这些标签前是否停止它们?',
|
||
'tabs.closeAllConfirmStop': '全部停止并关闭',
|
||
'tabs.sessionRunning': '会话运行中',
|
||
'tabs.openTerminal': '打开终端',
|
||
'tabs.showWorkspace': '显示工作区',
|
||
'tabs.hideWorkspace': '隐藏工作区',
|
||
'tabs.showBrowser': '显示浏览器',
|
||
'tabs.hideBrowser': '隐藏浏览器',
|
||
|
||
// 技能市场
|
||
'sidebar.market': '技能市场',
|
||
'market.title': '技能市场',
|
||
'market.subtitle': '浏览、预览并安装来自 ClawHub 与 SkillHub 的技能。',
|
||
'market.searchPlaceholder': '按名称、关键词搜索技能…',
|
||
'market.clearSearch': '清除搜索',
|
||
'market.resultCount': '{count} 个技能',
|
||
'market.loadMore': '加载更多',
|
||
'market.loadingMore': '正在加载更多…',
|
||
'market.loading': '正在加载技能…',
|
||
'market.empty': '暂无可用技能',
|
||
'market.emptyHint': '两个来源都没有返回结果,请检查上方的来源状态。',
|
||
'market.emptySearch': '没有匹配的技能',
|
||
'market.emptySearchHint': '换个关键词试试,或清除筛选条件。',
|
||
'market.error.list': '技能市场加载失败',
|
||
'market.retry': '重试',
|
||
'market.filter.source': '来源',
|
||
'market.filter.security': '安全状态',
|
||
'market.filter.installed': '安装状态',
|
||
'market.source.all': '全部来源',
|
||
'market.source.clawhub': 'ClawHub',
|
||
'market.source.skillhub': 'SkillHub',
|
||
'market.security.all': '全部安全状态',
|
||
'market.security.verified': '已认证',
|
||
'market.security.benign': '扫描无风险',
|
||
'market.security.unknown': '未审计',
|
||
'market.security.flagged': '存在风险',
|
||
'market.securityHint.verified': '发布者已认证,且通过来源方安全扫描。',
|
||
'market.securityHint.benign': '来源方安全扫描未发现风险。',
|
||
'market.securityHint.unknown': '来源方未提供安全审计数据,安装前请自行检查文件内容。',
|
||
'market.securityHint.flagged': '来源方安全扫描标记该技能存在潜在风险。',
|
||
'market.disclaimer.title': '第三方技能,谨慎使用。',
|
||
'market.disclaimer.body': '技能来自社区第三方来源,本应用不对其内容做安全审计。安装前请先查看技能文件,建议先让 AI 扫描一遍、确认安全后再使用。',
|
||
'market.disclaimer.dismiss': '关闭免责声明',
|
||
'market.installedFilter.all': '全部技能',
|
||
'market.installedFilter.installed': '已安装',
|
||
'market.installedFilter.installable': '未安装',
|
||
'market.sourceStatus.ok': '正常',
|
||
'market.sourceStatus.degraded': '降级',
|
||
'market.sourceStatus.failed': '不可用',
|
||
'market.sourceStatus.cached': '缓存',
|
||
'market.sourceStatus.cachedAt': '缓存于 {time}',
|
||
'market.card.by': '作者 {author}',
|
||
'market.card.moreTags': '+{count}',
|
||
'market.install.state.installed': '已安装',
|
||
'market.install.state.installable': '可安装',
|
||
'market.install.state.notInstallable': '不可安装',
|
||
'market.install.action': '安装',
|
||
'market.install.installing': '安装中…',
|
||
'market.uninstall.action': '卸载',
|
||
'market.uninstall.uninstalling': '卸载中…',
|
||
'market.uninstall.confirmTitle': '卸载技能',
|
||
'market.uninstall.confirmMessage': '确定从本地移除「{name}」吗?{path} 下的文件将被删除。',
|
||
'market.uninstall.success': '「{name}」已卸载。',
|
||
'market.reason.empty-file-list': '该技能没有可安装的文件(缺少 SKILL.md)。',
|
||
'market.reason.file-too-large': '该技能包含超过大小限制的文件。',
|
||
'market.reason.too-many-files': '该技能文件数量过多,无法安全安装。',
|
||
'market.reason.invalid-name': '技能名称无法作为本地目录名使用。',
|
||
'market.reason.name-conflict': '本地已存在同名技能,请先重命名或删除后再安装。',
|
||
'market.reason.source-unavailable': '该技能所属的来源当前不可用。',
|
||
'market.detail.back': '返回市场',
|
||
'market.detail.overview': '概览',
|
||
'market.detail.files': '文件',
|
||
'market.detail.author': '作者',
|
||
'market.detail.version': '版本',
|
||
'market.detail.updated': '更新时间',
|
||
'market.detail.category': '分类',
|
||
'market.detail.license': '许可证',
|
||
'market.detail.downloads': '下载量',
|
||
'market.detail.installs': '安装量',
|
||
'market.detail.stars': '收藏',
|
||
'market.detail.securityReport': '安全报告',
|
||
'market.detail.viewReport': '查看报告',
|
||
'market.detail.mirror': '也收录于 {source}',
|
||
'market.detail.requiresApiKey': '需要 API Key',
|
||
'market.detail.loadError': '技能详情加载失败',
|
||
'market.detail.noDescription': '该技能未提供说明。',
|
||
'market.file.empty': '在左侧选择一个文件进行预览。',
|
||
'market.file.truncated': '预览已截断——文件超出预览大小限制。',
|
||
'market.file.loadError': '文件加载失败',
|
||
'market.file.noFiles': '该技能暂无可预览文件。',
|
||
'market.installConfirm.title': '安装技能',
|
||
'market.installConfirm.message': '确定从 {source} 安装「{name}」吗?',
|
||
'market.installConfirm.location': '安装位置',
|
||
'market.installConfirm.effectNote': '安装完成后,技能将在新会话中生效。',
|
||
'market.installConfirm.riskBenign': '安全扫描未发现该技能存在风险。',
|
||
'market.installConfirm.riskVerified': '该技能来自已认证发布者,并通过了安全扫描。',
|
||
'market.installConfirm.riskUnknown': '该技能未经过安全审计,安装前请先检查其文件内容。',
|
||
'market.installConfirm.riskFlagged': '安全扫描标记该技能存在潜在风险,仅在您信任它时安装。',
|
||
'market.installConfirm.confirm': '安装',
|
||
'market.installConfirm.cancel': '取消',
|
||
'market.installSuccess': '「{name}」安装成功,将在新会话中生效。',
|
||
'market.installError.network': '安装失败:无法连接技能来源,请检查网络后重试。',
|
||
'market.installError.checksum': '安装已中止:下载文件未通过完整性校验。在确认来源可信前请勿重试。',
|
||
'market.installError.exists': '安装失败:该技能已安装或正在安装中。',
|
||
'market.installError.disk': '安装失败:写入磁盘失败,请检查权限与剩余空间。',
|
||
'market.installError.notInstallable': '安装失败:该技能不可安装。',
|
||
'market.installError.generic': '安装失败:{message}',
|
||
}
|