mirror of
https://github.com/NanmiCoder/cc-haha
synced 2026-07-20 13:53:32 +08:00
The desktop updater now renders release notes as markdown, avoids fake 0% progress when the server omits Content-Length, and remembers when the user has dismissed a specific release prompt so reopening the app does not nag again for the same version. Constraint: Existing 0.1.4 clients can receive updater events without total size metadata and users still need a manual update path in About Rejected: Keep repeating the prompt on every launch | creates avoidable noise after an explicit later decision Rejected: Global dismiss flag for all future releases | would hide newer versions that should prompt again Confidence: high Scope-risk: narrow Reversibility: clean Directive: Keep prompt suppression keyed to availableVersion only; About page visibility and manual update actions must remain available Tested: bun run test src/stores/updateStore.test.ts src/components/shared/UpdateChecker.test.tsx src/__tests__/generalSettings.test.tsx; bun run lint; manual local updater validation from 0.1.4 to 0.1.5 on /Applications and an extracted v0.1.4 release bundle Not-tested: Signed and notarized macOS distribution behavior outside this local machine
681 lines
36 KiB
TypeScript
681 lines
36 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.rename': '重命名',
|
||
'common.retry': '重试',
|
||
'common.loading': '加载中...',
|
||
'common.select': '选择',
|
||
'common.enable': '启用',
|
||
'common.disable': '禁用',
|
||
'common.active': '已激活',
|
||
|
||
// ─── Sidebar ──────────────────────────────────────
|
||
'sidebar.newSession': '新建会话',
|
||
'sidebar.scheduled': '定时任务',
|
||
'sidebar.settings': '设置',
|
||
'sidebar.searchPlaceholder': '搜索会话...',
|
||
'sidebar.noSessions': '暂无会话',
|
||
'sidebar.noMatching': '没有匹配的会话',
|
||
'sidebar.sessionListFailed': '会话列表加载失败',
|
||
'sidebar.missingDir': '目录缺失',
|
||
'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': '历史',
|
||
|
||
// ─── Status Bar ──────────────────────────────────────
|
||
'status.connected': '已连接',
|
||
'status.connecting': '连接中...',
|
||
'status.reconnecting': '重连中...',
|
||
'status.disconnected': '已断开',
|
||
|
||
// ─── Settings ──────────────────────────────────────
|
||
'settings.title': '设置',
|
||
'settings.tab.providers': '服务商',
|
||
'settings.tab.permissions': '权限',
|
||
'settings.tab.general': '通用',
|
||
'settings.tab.skills': '技能',
|
||
|
||
// 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 > Providers
|
||
'settings.providers.title': '服务商',
|
||
'settings.providers.description': '管理 API 服务商以访问模型。',
|
||
'settings.providers.addProvider': '添加服务商',
|
||
'settings.providers.officialName': 'Claude 官方',
|
||
'settings.providers.officialDesc': 'Anthropic 原生接入 — 无需 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.test': '测试',
|
||
'settings.providers.edit': '编辑',
|
||
'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.modelMapping': '模型映射',
|
||
'settings.providers.mainModel': '主模型',
|
||
'settings.providers.haikuModel': 'Haiku 模型',
|
||
'settings.providers.sonnetModel': 'Sonnet 模型',
|
||
'settings.providers.opusModel': 'Opus 模型',
|
||
'settings.providers.sameAsMain': '与主模型相同',
|
||
'settings.providers.testConnection': '测试连接',
|
||
'settings.providers.settingsJson': '设置 JSON',
|
||
'settings.providers.settingsJsonDesc': '~/.claude/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 > 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 或飞书与 Claude Code 对话。',
|
||
'settings.adapters.telegram': 'Telegram',
|
||
'settings.adapters.feishu': '飞书 (Feishu)',
|
||
'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.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.defaultProject': '默认项目',
|
||
'settings.adapters.defaultProjectHint': '新 IM 会话的默认工作目录。留空则由 Bot 询问选择。',
|
||
'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': '请在飞书或 Telegram 私聊中发送此配对码给 Bot。',
|
||
'settings.adapters.pairedUsers': '已配对用户',
|
||
'settings.adapters.noPairedUsers': '暂无已配对用户',
|
||
'settings.adapters.unbind': '解绑',
|
||
'settings.adapters.unbindConfirm': '确定要解绑该用户吗?解绑后需重新配对才能使用。',
|
||
'settings.adapters.platform.telegram': 'Telegram',
|
||
'settings.adapters.platform.feishu': '飞书',
|
||
|
||
// 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.browserTitle': '浏览已安装技能',
|
||
'settings.skills.browserEyebrow': '技能浏览器',
|
||
'settings.skills.browserDescription': '查看内置、项目和用户技能,比较它们的来源与规模,并打开技能目录阅读文档和源码文件。',
|
||
'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 > About
|
||
'settings.tab.about': '关于',
|
||
'settings.about.version': '版本',
|
||
'settings.about.repo': 'GitHub 仓库',
|
||
'settings.about.starHint': '如果这个项目对你有帮助,欢迎给个 Star',
|
||
'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.notSupported': 'Computer Use 仅支持 macOS 和 Windows。',
|
||
'settings.computerUse.python': 'Python 3',
|
||
'settings.computerUse.pythonNotFound': '未安装,请先安装 Python 3。',
|
||
'settings.computerUse.pythonFound': '已安装',
|
||
'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
|
||
'settings.general.appearanceTitle': '配色主题',
|
||
'settings.general.appearanceDescription': '在亮色与暗色工作区之间切换,不影响原有亮色主题。',
|
||
'settings.general.appearance.light': '亮色',
|
||
'settings.general.appearance.dark': '暗色',
|
||
'settings.general.languageTitle': '语言',
|
||
'settings.general.languageDescription': '选择应用程序的显示语言。',
|
||
'settings.general.effortTitle': '推理强度',
|
||
'settings.general.effortDescription': '控制模型使用的计算量。',
|
||
'settings.general.effort.low': '低',
|
||
'settings.general.effort.medium': '中',
|
||
'settings.general.effort.high': '高',
|
||
'settings.general.effort.max': '最大',
|
||
'settings.general.webFetchPreflightTitle': 'WebFetch 预检',
|
||
'settings.general.webFetchPreflightDescription': '桌面端默认跳过 Claude 的域名预检,避免第三方服务商或受限网络下出现误报失败。',
|
||
'settings.general.webFetchPreflightEnabled': '跳过 WebFetch 域名预检',
|
||
'settings.general.webFetchPreflightHint': '只有在你明确需要恢复上游默认安全预检时,才建议关闭这个选项。',
|
||
|
||
// ─── Empty Session ──────────────────────────────────────
|
||
'empty.title': '新建会话',
|
||
'empty.subtitle': '开始一个新的编码会话。Claude 已准备好帮你构建、调试和架构你的项目。',
|
||
'empty.placeholder': '随便问点什么...',
|
||
'empty.addFiles': '添加文件或图片',
|
||
'empty.slashCommands': '斜杠命令',
|
||
'empty.failedToCreate': '创建会话失败',
|
||
|
||
// ─── Chat Input ──────────────────────────────────────
|
||
'chat.placeholder': '让 Claude 编辑、调试或解释代码...',
|
||
'chat.placeholderMissing': '此会话指向的工作目录缺失。请新建会话或选择其他项目。',
|
||
'chat.addFiles': '添加文件或图片',
|
||
'chat.slashCommands': '斜杠命令',
|
||
'chat.navigate': '导航',
|
||
'chat.select': '选择',
|
||
'chat.dismiss': '关闭',
|
||
'chat.stopTitle': '停止生成 (Cmd+.)',
|
||
|
||
// ─── 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': '替换文件内容',
|
||
|
||
// ─── 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.customResponse': '或输入自定义回复:',
|
||
'question.typePlaceholder': '输入你的回答...',
|
||
'question.submit': '提交',
|
||
'question.answeredPrefix': '已回答: ',
|
||
|
||
// ─── Thinking Block ──────────────────────────────────────
|
||
'thinking.label': '思考中',
|
||
|
||
// ─── Tool Calls ──────────────────────────────────────
|
||
'tool.errorOutput': '错误输出',
|
||
'tool.toolOutput': '工具输出',
|
||
'tool.toolInput': '工具输入',
|
||
'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.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.notConfigured': '未配置',
|
||
'newTask.noChannelConfigured': '尚未配置任何 IM 渠道,请前往 设置 → IM 接入 进行配置。',
|
||
|
||
// ─── 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': '启用跳过',
|
||
|
||
// 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.close': '关闭',
|
||
|
||
// ─── 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。',
|
||
|
||
// ─── 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.idle': '点击检查更新,对比当前安装版本和 GitHub Releases 的最新版本。',
|
||
'update.now': '立即更新',
|
||
'update.later': '稍后',
|
||
'update.progress': '正在下载更新... {progress}%',
|
||
'update.progressBytes': '正在下载更新... 已下载 {downloaded}',
|
||
'update.releaseNotes': '更新说明',
|
||
'update.restarting': '正在重启以完成更新...',
|
||
'update.upToDate': '当前已是最新版本 v{version}。',
|
||
'update.failed': '更新失败: {error}',
|
||
|
||
// ─── 活跃会话 ──────────────────────────────────────
|
||
'session.untitled': '未命名会话',
|
||
'session.active': '会话活跃中',
|
||
'session.lastUpdated': '最后更新 {time}',
|
||
'session.messages': '{count} 条消息',
|
||
'session.workspaceUnavailable': '工作目录不可用: {dir}',
|
||
'session.timeJustNow': '刚刚',
|
||
'session.timeMinutes': '{n}分钟前',
|
||
'session.timeHours': '{n}小时前',
|
||
'session.timeDays': '{n}天前',
|
||
|
||
// ─── 应用外壳 ──────────────────────────────────────
|
||
'app.serverFailed': '本地服务启动失败',
|
||
'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': '内部服务器错误。',
|
||
|
||
// ─── Server Status Verbs ──────────────────────────────────────
|
||
'serverVerb.Thinking': '思考中',
|
||
'serverVerb.Task started': '任务已启动',
|
||
'serverVerb.Task in progress': '任务进行中',
|
||
|
||
// ─── Tabs ──────────────────────────────────────
|
||
'tabs.close': '关闭',
|
||
'tabs.closeOthers': '关闭其他',
|
||
'tabs.closeLeft': '关闭左侧',
|
||
'tabs.closeRight': '关闭右侧',
|
||
'tabs.closeAll': '关闭所有',
|
||
'tabs.closeConfirmTitle': '会话运行中',
|
||
'tabs.closeConfirmMessage': '此会话仍在运行,你想要怎么做?',
|
||
'tabs.closeConfirmKeep': '保持运行',
|
||
'tabs.closeConfirmStop': '停止并关闭',
|
||
}
|