程序员阿江(Relakkes) 48da5ccbfa Reduce Settings complexity by removing the embedded shell surface
The Settings terminal added a full xterm plus Tauri PTY stack for a job
that is better handled by dedicated install and configuration flows. This
change removes the Settings tab, frontend terminal wiring, Tauri terminal
commands, and the terminal-only dependencies so the desktop settings
surface stays narrower and less fragile.

Constraint: The worktree already contains unrelated desktop icon and UI changes, so this commit stages only the terminal-removal slice
Rejected: Keep a hidden or runtime-only terminal stub | it would still preserve the heavy cross-layer maintenance surface
Rejected: Remove only the Settings tab and leave the Tauri PTY backend | that would leave dead code and unused dependencies behind
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: If future install workflows need more power, prefer Settings-native actions and runtime refresh over reintroducing a general shell tab
Tested: bun x vitest run src/__tests__/generalSettings.test.tsx src/__tests__/skillsSettings.test.tsx src/__tests__/pluginsSettings.test.tsx src/__tests__/agentsSettings.test.tsx src/__tests__/mcpSettings.test.tsx src/components/settings/InstallCenter.test.tsx; bun run lint; bun run build; cargo check --manifest-path desktop/src-tauri/Cargo.toml
Not-tested: Manual packaged desktop app click-through after removing the Settings terminal tab
2026-04-23 11:06:32 +08:00

902 lines
51 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.confirmDelete': '确定要删除这个会话吗?此操作不可撤销。',
'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.install': '安装中心',
'settings.tab.skills': '技能',
'settings.tab.mcp': 'MCP',
'settings.tab.plugins': '插件',
// 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/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 > 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 > MCP
'settings.mcp.title': 'MCP 服务',
'settings.mcp.description': '在桌面端直接管理外部工具与数据源。你可以添加、编辑、重连或禁用 MCP 服务。',
'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': '这个页面只管理全局用户 MCP以保证速度和清晰度。项目级 MCP 将放到聊天页的斜杠命令体验里。',
'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 > Install Center
'settings.install.eyebrow': 'AI 安装助手',
'settings.install.title': '安装中心',
'settings.install.description': '直接描述你想安装的 plugin、MCP 或 skill。底层会复用安装专用 session 去执行,并把结果同步回现有管理页。',
'settings.install.targets.plugins': 'Plugins',
'settings.install.targets.mcp': 'MCP',
'settings.install.targets.skills': 'Skills',
'settings.install.contextAuto': '默认上下文',
'settings.install.composeTitle': '自然语言安装',
'settings.install.composeHint': '描述你要安装什么、来源在哪里、希望落到用户级还是项目级。',
'settings.install.placeholder': '例如:安装 plugin skill-creator@claude-plugins-official并帮我应用到当前桌面端或者添加一个 user scope 的 MCP地址是 https://example.com/mcp。',
'settings.install.send': '发送安装请求',
'settings.install.stop': '中断执行',
'settings.install.refresh': '刷新安装状态',
'settings.install.newConversation': '新建安装会话',
'settings.install.clearConversation': '清除对话',
'settings.install.contextDefault': '未指定目录时默认使用 Home 目录启动安装会话。',
'settings.install.contextUsing': '当前安装会话目录:{path}',
'settings.install.contextTitle': '执行目录',
'settings.install.contextHint': '大部分用户级安装不依赖项目目录;如果你要安装 project skill 或 local/project MCP可以先在这里选目录再开始新的安装会话。',
'settings.install.goPlugins': '查看插件',
'settings.install.goMcp': '查看 MCP',
'settings.install.goSkills': '查看技能',
'settings.install.sessionTitle': '安装助手会话',
'settings.install.sessionHint': '这里展示安装专用 session 的完整执行过程、工具调用和结果。',
'settings.install.sessionEmpty': '还没有安装会话',
'settings.install.sessionEmptyHint': '发送第一条安装请求后,这里会直接复用 session 聊天链路展示完整过程。',
'settings.install.createFailed': '创建安装会话失败',
'settings.install.refreshDone': '已刷新插件、MCP 和技能状态',
'settings.install.newConversationReady': '已准备新的安装会话;下一条请求会启动新的安装上下文。',
'settings.install.clearConversationReady': '已清除当前安装对话;下一条请求会启动新的安装上下文。',
// 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 > 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.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.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 3macOS 上还需要辅助功能权限。',
'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': '预先授权 AppClaude 将可以直接控制这些 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': '斜杠命令',
'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': '这套共享的斜杠命令面板已经接通,插件数据下一步接进来。',
'chat.navigate': '导航',
'chat.select': '选择',
'chat.dismiss': '关闭',
'chat.stopTitle': '停止生成 (Cmd+.)',
'chat.rewindAction': '回滚到这里',
'chat.rewindModalTitle': '回滚对话',
'chat.rewindConfirm': '执行回滚',
'chat.rewindPromptLabel': '目标提示词',
'chat.rewindAttachmentOnly': '这条消息只包含附件。',
'chat.rewindLoading': '正在检查这一轮的文件检查点...',
'chat.rewindConversationCardTitle': '对话回滚',
'chat.rewindConversationCardBody': '移除这条提示词以及其后的 {count} 条活跃消息,并把输入框恢复到这个位置。',
'chat.rewindCodeCardTitle': '代码回滚',
'chat.rewindCodeFiles': '将恢复 {count} 个文件',
'chat.rewindCodeInsertions': '将移除 {count} 行新增',
'chat.rewindCodeDeletions': '将恢复 {count} 行删除',
'chat.rewindCodeUnavailable': '这条提示词没有可用的文件检查点,仍然可以只回滚对话。',
'chat.rewindFilesLabel': '受影响文件',
'chat.rewindFilesMore': '另有 {count} 个',
'chat.rewindSuccessWithCode': '已回滚 {count} 条消息,并恢复相关文件。',
'chat.rewindSuccessConversationOnly': '已回滚 {count} 条消息。这一轮没有可用的文件检查点。',
// ─── 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': '停止并关闭',
}