export default { // Loading states 'loading': '加载中…', 'authorizing': '认证中…', 'loading.session': '加载会话…', 'loading.git': '加载 Git 状态…', 'loading.file': '加载文件…', 'loading.files': '加载文件…', 'loading.messages': '加载消息…', 'loading.machines': '加载机器…', 'message.copy': '复制', 'message.copied': '已复制', 'message.info': '消息详情', 'message.shareTurn': '将本轮对话分享为图片', 'shareTurn.title': '将本轮对话分享为图片', 'shareTurn.badge': '分享会话', 'shareTurn.generated': 'Generated by HAPI', 'shareTurn.cancel': '取消', 'shareTurn.copy': '复制', 'shareTurn.copying': '复制中…', 'shareTurn.copied': '已复制', 'shareTurn.share': '分享', 'shareTurn.sharing': '分享中…', 'shareTurn.download': '下载', 'shareTurn.saving': '保存中…', // Login / Auth 'login.title': 'HAPI', 'login.subtitle': '随时随地,Vibe Coding', 'login.bind.title': '绑定 Telegram', 'login.submit': '登录', 'login.bind.submit': '绑定', 'login.submitting': '登录中…', 'login.bind.submitting': '绑定中…', 'login.placeholder': '访问令牌', 'login.error.enterToken': '请输入访问令牌', 'login.error.bindingUnavailable': '绑定服务不可用。', 'login.error.loginUnavailable': '登录服务不可用。', 'login.error.bindFailed': '绑定失败', 'login.error.authFailed': '认证失败', 'login.help': '需要帮助?', 'login.server.default': '(默认)', 'login.server.custom': '(自定义)', 'login.server.title': '服务器地址', 'login.server.description': '设置 HAPI 服务器地址以使用 API 和实时更新。', 'login.server.current': '当前:', 'login.server.origin': '服务器地址', 'login.server.placeholder': 'https://hapi.example.com', 'login.server.hint': '仅使用 http(s) 协议。任何路径将被忽略。', 'login.server.required': '必须先填写服务器地址才能登录。', 'login.server.useSameOrigin': '使用同源', 'login.server.save': '保存', 'login.footer': '用', 'login.footer.for': '设计,Vibe Coding', 'login.footer.copyright': '©', // Sessions page 'sessions.new': '新建会话', 'sessions.empty.title': '还没有会话', 'sessions.empty.hint': '在 workspace 下任意目录启动一个会话,或先浏览目录树看看。', 'sessions.empty.startSession': '启动会话', 'sessions.empty.browse': '浏览 workspace', 'sessions.search.placeholder': '搜索会话…', 'sessions.search.open': '搜索会话', 'sessions.search.clear': '清除搜索', 'sessions.search.noResults': '没有符合筛选条件的会话。', 'sessions.timeFilter.label': '按最后活动时间筛选会话', 'sessions.timeFilter.pickStart': '选择开始日期', 'sessions.timeFilter.pickEnd': '选择结束日期', 'sessions.timeFilter.clear': '清除', 'sessions.timeFilter.close': '关闭日期选择器', 'sessions.timeFilter.previousMonth': '上个月', 'sessions.timeFilter.nextMonth': '下个月', 'sessions.timeFilter.dayWithActivity': '{date},有会话活动', 'sessions.group.expand': '展开 {n} 个', 'sessions.group.collapse': '收起 {n} 个', 'sessions.runningSection': '进行中', 'sessions.group.new': '在此目录新建会话', 'sessions.machineFilter.label': '按机器筛选会话', 'sessions.machineFilter.all': '全部', 'codexSync.tooltip': '从 Codex 导入会话到 Hapi', 'codexSync.newSessionAction': '导入 Codex 历史', 'codexSync.confirm.title': '导入 Codex 会话', 'codexSync.confirm.description': '选择需要导入到 Hapi 的 Codex 会话', // 中文注释:以下文案支撑导入弹窗的多选列表、加载态,以及右上角重启 Codex 客户端按钮提示。 'codexSync.confirm.selectAll': '全选', 'codexSync.confirm.clearAll': '全取消', 'codexSync.confirm.selectedCount': '已选择 {n} 个会话', 'codexSync.confirm.empty': '未找到本地 Codex 会话', 'codexSync.confirm.current': '当前关联', 'codexSync.confirm.cwd': '工作目录', 'codexSync.confirm.cwdFilter': '工作目录', 'codexSync.confirm.cwdFilterAll': '全部工作目录', 'codexSync.confirm.emptyForWorkdir': '此工作目录下没有 Codex 会话', 'codexSync.confirm.confirm': '导入', 'codexSync.confirm.confirming': '导入中…', 'codexSync.confirm.loading': '正在读取本地 Codex 会话…', 'codexSync.success.title': '导入完成', 'codexSync.success.body': '已导入 {n} 个 Codex 会话到 Hapi。', 'codexSync.manual.success.title': 'Codex 同步完成', 'codexSync.manual.success.body': '已同步 {n} 个 Codex 会话。', 'codexSync.manual.failed.title': '同步 Codex 会话失败', 'codexSync.error.timeout': '执行超时', 'codexSync.error.active': '当前会话仍处于活跃状态,请等待会话结束后重试', 'codexSync.failed.title': '导入 Codex 会话失败', 'codexSync.failed.body': '导入 Codex 会话失败。', 'codexSync.failed.bodyWithReason': '导入失败:{reason}', 'codexSync.restart.tooltip': '重启codex客户端', 'codexSync.restart.title': '重启 Codex 客户端', 'codexSync.restart.description': '是否立即重启 Codex 客户端以刷新会话?', 'codexSync.restart.confirm': '重启', 'codexSync.restart.confirming': '重启中…', 'codexSync.restart.failed.title': '重启 Codex 客户端失败', 'codexSync.restart.failed.notFound': '尝试重启codex客户端失败,未安装/找不到codex客户端', 'codexSync.restart.failed.body': '重启脚本执行失败。', 'codexSync.restart.started.title': '已发起重启', 'codexSync.restart.started.body': 'Codex 客户端正在重启以刷新会话。', 'codexSync.duplicates.confirm.title': '检测到重复会话', 'codexSync.duplicates.confirm.description': '检测到重复会话,是否进行合并?', 'codexSync.duplicates.confirm.confirm': '合并', 'codexSync.duplicates.confirm.confirming': '合并中…', 'codexSync.duplicates.detect.failed.title': '重复会话检测失败', 'codexSync.duplicates.detect.failed.body': '重复会话检测失败。', 'codexSync.duplicates.merge.success.title': '重复会话已合并', 'codexSync.duplicates.merge.success.body': '已按本次选中的 Codex 会话完成去重合并。', 'codexSync.duplicates.merge.failed.title': '重复会话合并失败', 'codexSync.duplicates.merge.failed.body': '重复会话合并失败。', // Session list 'session.item.path': '路径', 'session.item.agent': '代理', 'session.item.model': '模型', 'session.item.machine': '机器', 'session.item.worktree': '工作树', 'session.item.pending': '待处理', 'session.item.thinking': '思考中', 'session.item.running': '运行中', 'session.item.idle': '空闲', 'session.item.permission': '需要权限', 'session.item.needsInput': '需要输入', 'session.item.background': '后台任务运行中', 'session.item.newActivity': '有新活动', 'session.item.scheduledMessage': '有待发送的定时消息', 'session.item.scheduledMessages': '{count} 条定时消息待发送', 'session.tooltip.permission.body': '批准:', 'session.tooltip.input.body': '回复:', 'session.tooltip.background.count.one': '1 个任务运行中', 'session.tooltip.background.count.other': '{count} 个任务运行中', 'session.tooltip.scheduled.body': '到时会自动发送。', 'session.tooltip.scheduled.fires': '{when} 发送', 'session.tooltip.scheduled.next': '下次 {when} · 另有 {more} 条', 'session.tooltip.moreCount': '另有 {count} 条', 'session.time.justNow': '刚刚', 'session.time.minutesAgo': '{n}分钟前', 'session.time.hoursAgo': '{n}小时前', 'session.time.daysAgo': '{n}天前', 'session.time.inLessThanMinute': '不到1分钟', 'session.time.inMinutes': '{n}分钟后', 'session.time.inHours': '{n}小时后', 'session.time.inDays': '{n}天后', 'session.time.soon': '即将', 'session.time.importedFromCodex.justNow': '刚刚从codex客户端导入', 'session.time.importedFromCodex.minutesAgo': '{n}分钟前从codex客户端导入', 'session.time.importedFromCodex.hoursAgo': '{n}小时前从codex客户端导入', 'session.time.importedFromCodex.daysAgo': '{n}天前从codex客户端导入', 'session.cursorMigration.banner.title': '正在升级 Cursor 会话', 'session.cursorMigration.banner.body': '正在将此旧版会话切换到更安全的 ACP 协议。历史较长的会话需要 15-20 秒;对话会自动恢复,已输入但未发送的草稿不会丢失。', 'session.cursorMigration.bannerAmbiguous.title': 'Cursor 会话升级需要人工处理', 'session.cursorMigration.bannerAmbiguous.body': '此会话在磁盘上的多个工作区下存在,或本地存储大小与已同步的历史记录不匹配,因此 HAPI 拒绝自动迁移。请在 hub 日志中搜索 "[migrator] ambiguous legacy store" 或 "[migrator] size sanity check refused" 获取候选列表,删除 ~/.cursor/chats/ 下的陈旧目录后,再重新打开此会话。', // Session inactive 'session.inactive.autoResume': '此会话已停止。发送消息即可恢复。', 'session.inactive.cannotResume': '此会话已停止,无法恢复。', // Session header 'session.title': '文件', 'session.view.returnToChat': '返回会话', 'session.more': '更多操作', 'session.outline.open': '会话大纲', 'session.outline.close': '关闭大纲', 'session.outline.title': '大纲', 'session.outline.loadOlder': '加载更早', 'session.outline.empty': '已加载消息中暂无大纲项', 'session.outline.searchPlaceholder': '搜索大纲…', 'session.outline.searchLabel': '搜索大纲条目', 'session.outline.searchResults': '{matched}/{total} 个条目', 'session.outline.noSearchResults': '没有匹配的大纲条目', // Session actions 'session.action.rename': '重命名', 'session.action.export': '导出对话', 'session.action.syncCodex': '从 Codex 同步', 'session.action.archive': '归档', 'session.action.reopen': '重新打开', 'session.action.reopenCursorChecking': '正在检查记录设备上的 Cursor 聊天数据是否仍然可用。', 'session.action.reopenCursorMissing': '记录设备上的 Cursor 聊天数据已不可用。', 'session.action.reopenCursorCheckFailed': '无法验证记录设备上的 Cursor 聊天数据。', 'session.action.delete': '删除', 'session.action.copy': '复制', 'session.action.copyReference': '复制引用', // Dialogs 'dialog.uri.title': '打开此链接?', 'dialog.uri.description': '此链接使用自定义 URI 协议。请确认您信任此链接后再打开。', 'dialog.uri.open': '打开', 'dialog.uri.alwaysAllow': '始终允许 {scheme}:', 'dialog.rename.title': '重命名会话', 'dialog.rename.placeholder': '会话名称', 'dialog.rename.save': '保存', 'dialog.rename.saving': '保存中…', 'dialog.rename.error': '重命名失败,请重试。', 'dialog.archive.title': '归档会话', 'dialog.archive.description': '确定要归档 "{name}" 吗?这将断开活动会话。', 'dialog.archive.confirm': '归档', 'dialog.archive.confirming': '归档中…', 'dialog.reopen.errorTitle': '无法重新打开会话', 'dialog.reopen.dismiss': '关闭', 'dialog.delete.title': '删除会话', 'dialog.delete.description': '确定要删除 "{name}" 吗?此操作无法撤销。', 'dialog.delete.scratchlist.one': '这也将删除 1 条草稿清单条目。', 'dialog.delete.scratchlist.other': '这也将删除 {n} 条草稿清单条目。', 'dialog.delete.confirm': '删除', 'dialog.delete.confirming': '删除中…', 'dialog.error.default': '操作失败,请重试。', // Session export 'session.export.title': '导出对话', 'session.export.description': '选择格式,然后下载完整可见对话与 scratchlist 笔记。', 'session.export.format.json': 'JSON', 'session.export.format.json.description': '保留会话元数据、消息与 scratchlist 笔记的无损载荷(附件仅含元数据)。', 'session.export.format.markdown': 'Markdown', 'session.export.format.markdown.description': '从同一份导出载荷生成的可读视图。', 'session.export.download': '下载', 'session.export.downloading': '导出中…', 'session.export.error.noApi': '未连接到服务器', 'session.export.error.default': '导出对话失败', 'session.export.toast.success.title': '对话已导出', 'session.export.toast.success.body': '已下载 {filename}', 'session.export.toast.error.title': '导出失败', // Mermaid diagrams 'mermaid.openFullscreen': '全屏查看图表', 'mermaid.viewerTitle': '图表', 'mermaid.loading': '正在加载图表…', 'mermaid.renderError': '无法渲染图表。', // Common buttons 'button.cancel': '取消', 'button.save': '保存', 'button.confirm': '确认', 'button.close': '关闭', 'button.dismiss': '忽略', 'button.copy': '复制', 'button.paste': '粘贴', // New session form 'newSession.title': '创建会话', 'newSession.machine': '机器', 'newSession.directory': '目录', 'newSession.placeholder': '/path/to/project', 'newSession.browse': '浏览', 'newSession.recent': '最近路径', 'newSession.type': '会话类型', 'newSession.type.simple': '简单', 'newSession.type.simple.desc': '直接使用选定的目录', 'newSession.type.worktree': '工作树', 'newSession.type.worktree.desc': '在仓库旁创建新工作树(Cursor 使用原生 ~/.cursor/worktrees)', 'newSession.type.worktree.placeholder': 'feature-x (默认 1228-xxxx)', 'newSession.agent': '代理', 'newSession.model': '模型', 'newSession.effort': '思考强度', 'newSession.model.optional': '可选', 'newSession.model.loadFailed': '加载模型失败', 'newSession.model.selectVariant': '选择变体', 'newSession.model.cursorUnavailable': '暂无 Cursor 模型列表。请先运行一次 Cursor 会话,或使用 Auto。', 'newSession.opencodeModel.loading': '正在发现 OpenCode 模型…', 'newSession.opencodeModel.loadFailed': '加载 OpenCode 模型失败', 'newSession.opencodeModel.retry': '重试', 'newSession.opencodeModel.empty': '未在此目录发现 OpenCode 模型', 'newSession.opencodeModel.default': '默认', 'newSession.reasoningEffort': '推理强度', 'newSession.collaborationMode': '协作模式', 'newSession.fastMode': '快速模式', 'newSession.yolo': 'YOLO 模式', 'newSession.yolo.title': '跳过审批和沙箱', 'newSession.yolo.desc': '启动时使用危险的代理标志。', 'newSession.grokAutoUnavailable': '不可用', 'newSession.grokAutoUnavailableDesc': 'Grok 尚未为此账号或 CLI 版本启用自动权限模式。', 'newSession.create': '创建', 'newSession.creating': '创建中…', 'session.directoryMissingSimple': '目录不存在,创建会话时将自动创建。', 'session.directoryMissingSimpleConfirm': '目录不存在。再次点击按钮将自动新建该目录。', 'session.directoryMissingWorktree': 'worktree 需要已存在的仓库目录。', 'session.codexModelsLoadFailed': '加载 Codex 模型失败', 'session.createAndCreateDirectory': '创建并新建目录', // Machine 'machine.unknown': '未知平台', 'machine.os.windows': 'Windows', 'machine.os.linux': 'Linux', 'machine.os.macos': 'macOS', 'machine.os.unknown': '未知系统', 'machine.header.sessionCount': '{n} 个会话', 'machine.health.tooltip.title': '机器负载', 'machine.health.status.healthy': '健康 — 还可运行更多代理', 'machine.health.status.elevated': '偏高 — 新代理可能变慢', 'machine.health.status.high': '高压 — 避免在此继续启动', 'machine.health.status.unknown': '指标不可用', 'machine.health.metric.cpu': 'CPU占用', 'machine.health.metric.ram': '内存占用', 'machine.health.tooltip.load': '运行队列 (1 分钟): {value}', 'machine.health.tooltip.loadShort': '负载 (1 分钟)', 'machine.health.tooltip.uptimeShort': '运行时间', 'machine.health.uptimeCompact': '已运行 {value}', 'machine.health.tooltip.hint': '约每 20 秒由该机器上的 runner 更新', 'machine.health.aria.cpu': 'CPU {n}%', 'machine.health.aria.ram': '内存 {n}%', 'machine.health.aria.unknown': '机器健康数据不可用', // Chat 'chat.placeholder': '输入消息…', 'chat.send': '发送', 'chat.abort': '中止', 'chat.settings': '设置', 'chat.terminal': '终端', 'chat.switchRemote': '切换到远程模式', 'chat.sendError.fallback': '消息未能发送。请修改后重试。', 'chat.sendError.sessionInactive': '此会话已归档。请先重新打开再发送消息。', 'chat.sendError.sessionInactive.action': '重新打开', // Codex review 'codexReview.title': 'Codex review', 'codexReview.findings': '{count} 条发现', 'codexReview.confidence': '置信度 {value}', 'codexReview.location.missing': '无位置', // Terminal 'terminal.commandName': '命令', 'terminal.commandMessage': '命令消息', 'terminal.commandArgs': '命令参数', 'terminal.stdout': '标准输出', 'terminal.stderr': '标准错误', 'terminal.unsupportedWindows': '此主机暂不支持远程终端。', 'terminal.paste.fallbackTitle': '粘贴输入', 'terminal.paste.fallbackDescription': '无法读取剪贴板,请在下方粘贴文本。', 'terminal.paste.placeholder': '在此粘贴终端输入…', // Code block 'code.copy': '复制', 'code.truncated': '预览已截断 — 打开详情查看完整输出', 'code.wrap.enable': '开启自动换行', 'code.wrap.disable': '关闭自动换行', // Diff view 'diff.title': '差异', 'diff.view': '查看', // Files page 'files.page.title': '文件', 'files.page.refresh': '刷新', 'files.page.refreshFilesystem': '刷新文件系统视图', 'files.page.searchPlaceholder': '搜索文件', 'files.projectRoot': '项目根目录', 'files.branch.detached': '游离 HEAD', 'files.branch.summary': '{staged} 个已暂存,{unstaged} 个未暂存', 'files.tab.changes': '变更', 'files.tab.directories': '目录', 'files.search.empty': '没有匹配搜索的文件。', 'files.search.error.failed': '搜索文件失败。', 'files.search.error.failedWithDetail': '搜索文件失败:{error}', 'files.changes.section.staged': '已暂存变更({n})', 'files.changes.section.unstaged': '未暂存变更({n})', 'files.changes.empty.unavailable': 'Git 状态不可用。请使用“目录”浏览全部文件,或直接搜索。', 'files.changes.empty.none': '未检测到变更。请使用“目录”浏览全部文件,或直接搜索。', 'files.changes.error.gitStatusUnavailable': 'Git 状态不可用。', 'files.changes.error.gitStatusUnavailableWithDetail': 'Git 状态不可用:{error}', 'files.changes.error.unstagedDiffUnavailableWithDetail': '未暂存 Diff 不可用:{error}', 'files.changes.error.stagedDiffUnavailableWithDetail': '已暂存 Diff 不可用:{error}', 'files.directories.empty': '空目录。', 'files.directories.error.listFailed': '加载目录失败。', 'files.directories.error.listFailedWithDetail': '加载目录失败:{error}', 'files.directories.download': '下载文件', 'files.directories.downloadNamed': '下载 {name}', 'files.directories.download.error.title': '下载失败', 'files.directories.download.error.default': '文件下载失败。', 'files.sort.title': '文件排序', 'files.sort.by': '排序依据', 'files.sort.name': '名称', 'files.sort.modified': '修改时间', 'files.sort.size': '文件大小', 'files.sort.nameAsc': 'A 到 Z', 'files.sort.nameDesc': 'Z 到 A', 'files.sort.oldest': '最早优先', 'files.sort.newest': '最新优先', 'files.sort.smallest': '最小优先', 'files.sort.largest': '最大优先', // File page 'file.page.fallbackName': '文件', 'file.page.unknownPath': '未知路径', 'file.page.copyPath': '复制路径', 'file.page.copyContent': '复制文件内容', 'file.page.download': '下载文件', 'file.page.tab.diff': 'Diff', 'file.page.tab.file': '文件', 'file.page.tab.source': '源码', 'file.page.tab.preview': '预览', 'file.page.missingPath': '未提供文件路径。', 'file.page.binary': '该文件看起来是二进制文件,无法显示。', 'file.page.imagePreviewAlt': '{name} 图片预览', 'file.page.empty': '文件为空。', 'file.page.noChanges': '没有可显示的变更。', 'file.error.readFailed': '读取文件失败。', 'file.error.readFailedWithDetail': '读取文件失败:{error}', 'file.error.diffUnavailable': 'Diff 不可用。', 'file.error.diffUnavailableWithDetail': 'Diff 不可用:{error}', // Tool card 'tool.askQuestion': '其他', 'tool.edit': '编辑', 'tool.multiedit': '多文件编辑', 'tool.write': '写入', 'tool.todo': '任务', 'tool.confirm': '确认', 'tool.deny': '拒绝', 'tool.abort': '中止', 'tool.allow': '允许', 'tool.allowAll': '允许所有编辑', 'tool.denyAll': '拒绝所有编辑', 'tool.approved': '已批准', 'tool.rejected': '已拒绝', 'tool.cancel': '取消', 'tool.exitPlan': '退出计划模式', 'tool.patch': '补丁', 'tool.input': '输入', 'tool.trace': '追踪', 'tool.trace.callsSuffix': '次调用', 'tool.result': '结果', 'tool.duration': '耗时', 'tool.startedAt': '开始', 'tool.completedAt': '结束', 'tool.semanticTitle.readFile': '读取文件', 'tool.semanticTitle.runShell': '运行命令', 'tool.semanticTitle.search': '搜索', 'tool.semanticTitle.openUrl': '打开链接', 'tool.semanticTitle.query': '查询', 'tool.questionsAnswers': '问答', 'tool.submit': '提交', 'tool.submitting': '提交中…', 'tool.prev': '← 上一个', 'tool.next': '下一个 →', 'tool.yes': '是', 'tool.yesForSession': '本会话允许', 'tool.allowForSession': '本会话允许', 'tool.abortLabel': '中止', 'tool.other': '其他', 'tool.otherDescription': '输入您自己的答案', 'tool.question': '问题', 'tool.selectOption': '请至少选择一个选项或输入答案。', 'tool.waitingForApproval': '等待审批…', 'tool.canceled': '已取消', 'tool.approvedForSession': '本会话已批准', 'tool.aborted': '已中止', 'tool.approvedAllowAllEdits': '已批准:允许所有编辑', 'tool.requestFailed': '请求失败', 'tool.askUserQuestion.fallback': 'AskUserQuestion 格式不正确。请输入您的答案:', 'tool.askUserQuestion.placeholder': '输入您的答案…', 'tool.askUserQuestion.otherPlaceholder': '或输入您自己的答案…', 'tool.requestUserInput.textPlaceholder': '输入您的答案…', 'tool.requestUserInput.noteLabel': '补充说明(可选)', 'tool.requestUserInput.notePlaceholder': '添加备注…', 'tool.requestUserInput.popupBlocked': '无法打开登录页面。请允许弹出窗口后重试。', 'toolGroup.title': '工具活动', 'toolGroup.friendly.inspectTarget': '检查 {target}', 'toolGroup.friendly.searchTarget': '搜索“{target}”', 'toolGroup.friendly.runTarget': '运行 {target}', 'toolGroup.friendly.editTarget': '编辑 {target}', 'toolGroup.primary.fileTargets': '{target} 等 +{n}', 'toolGroup.primary.commandTargets': '{target} 等 +{n}', 'toolGroup.primary.searchTargets': '{target} 等 +{n}', 'toolGroup.primary.urlTargets': '{target} 等 +{n}', 'toolGroup.primary.otherTargets': '{target} 等 +{n}', 'toolGroup.summary.read': '读取 {n}', 'toolGroup.summary.mutation': '编辑 {n}', 'toolGroup.summary.command': '执行 {n}', 'toolGroup.summary.search': '搜索 {n}', 'toolGroup.summary.web': '访问 {n}', 'toolGroup.summary.other': '工具 {n}', 'toolGroup.friendly.inspectFiles': '检查项目文件', 'toolGroup.friendly.searchContent': '搜索项目内容', 'toolGroup.friendly.runCommands': '执行项目命令', 'toolGroup.friendly.editFiles': '修改项目文件', 'toolGroup.friendly.openWeb': '浏览网页内容', 'toolGroup.friendly.genericCommand': '执行命令', 'toolGroup.friendly.genericTool': '使用工具', 'toolGroup.badge.running': '运行中 {n}', 'toolGroup.badge.pending': '等待中 {n}', 'toolGroup.badge.error': '错误 {n}', 'toolGroup.badge.fileTargets': '{n} 文件', 'toolGroup.toolCount': '{n} 次操作', 'toolGroup.loadingOlderHistory': '正在补加载更早的工具活动…', 'toolGroup.historyUnavailable': '更早的工具活动已不可用。', 'toolGroup.rowStatus.running': '运行中', 'toolGroup.rowStatus.pending': '等待中', 'toolGroup.rowStatus.error': '错误', 'toolGroup.codex.exploring': '正在探索', 'toolGroup.codex.explored': '已探索', 'toolGroup.codex.read': '读取', 'toolGroup.codex.list': '列出', 'toolGroup.codex.search': '搜索', 'toolGroup.codex.searchIn': '在 {path} 中搜索 {query}', // Composer buttons 'composer.settings': '设置', 'composer.terminal': '终端', 'composer.abort': '中止', 'composer.switchRemote': '切换到远程模式', 'composer.attach': '添加文件', 'composer.dropToAttach': '松开以添加文件', 'composer.send': '发送', 'composer.stop': '停止', 'composer.voice': '语音助手', 'composer.dictate': '语音输入', 'composer.scheduleSend': '定时发送', 'composer.scheduleRelativeTab': '相对时间', 'composer.scheduleSpecificTab': '指定时间', 'composer.scheduleSpecificHint': '最多 7 天。需 Hub 运行;CLI 下次连接时会接收消息。', 'composer.scheduleErrorPast': '发送时间必须在未来。', 'composer.scheduleErrorTooFar': '最多只能定时 7 天。', 'queuedMessages.scheduledFor': '定时发送: {time}', 'queuedMessages.editAlreadyInvoked': '消息已发送,无法编辑', // Scratchlist (per-session workbench, issue #11) 'scratchlist.title': '草稿夹', 'scratchlist.heldLabel': '暂存 · 未发送', 'scratchlist.empty': '空', 'scratchlist.count.one': '1 条', 'scratchlist.count.other': '{n} 条', 'scratchlist.attachmentOnly': '(附件)', 'scratchlist.emptyHint': '在此暂存笔记、草稿或想法。需点击发送或编辑后才会真正发出。', 'scratchlist.drawerHint': '在下方输入 — 发送会把内容存入此暂存清单,而不是发到对话。再次点击便签图标可退出。', 'scratchlist.toggleAriaLabel': '暂存清单抽屉', 'scratchlist.toggleTooltip': '暂存清单 — 暂存笔记与草稿(Ctrl/Cmd+Shift+S)', 'scratchlist.sendToScratchlist': '存入暂存清单', 'scratchlist.fueTitle': '新功能:暂存清单', 'scratchlist.fueBody': '在此暂存笔记和草稿,不会被发送。暂存模式下发送按钮会显示琥珀色;再次点击图标(或 Ctrl/Cmd+Shift+S)可退出。', 'scratchlist.addPlaceholder': '笔记、草稿或想法 — 回车键添加', 'scratchlist.addAriaLabel': '添加草稿夹条目', 'scratchlist.add': '添加', 'scratchlist.atCap': '草稿夹已满({n} 条)。请先删除旧条目。', 'scratchlist.confirmDelete': '删除该草稿条目?此操作不可撤销。', 'scratchlist.listAriaLabel': '草稿夹条目', 'scratchlist.action.moveUp': '上移', 'scratchlist.action.moveDown': '下移', 'scratchlist.action.promoteToComposer': '复制到输入框', 'scratchlist.action.promoteToQueue': '加入发送队列', 'scratchlist.action.copy': '复制文字到剪贴板(不含图片)', 'scratchlist.action.copied': '已复制!', 'scratchlist.action.delete': '删除条目', 'scratchlist.entry.lastSaved': '保存于 {time}', 'scratchlist.entry.lastSavedAriaLabel': '条目保存于 {time}', 'scratchlist.migrationBanner.title': '草稿清单现已跨设备同步', 'scratchlist.migrationBanner.body': '您现有的笔记已复制到 hub - 没有丢失任何内容。从现在开始,在此会话中的编辑会在您使用的每台设备上显示。', 'scratchlist.migrationBanner.dismiss': '知道了', 'fue.newFeatureDot': '新功能可用', 'fue.gotIt': '知道了', 'fue.closeAriaLabel': '关闭说明', 'composer.codexSlashUnsupported.title': '无法执行 Codex 命令', 'composer.codexSlashUnsupported.body': 'HAPI 远程模式暂不支持 {command} 这类 Codex 内建 slash command,请改用自然语言,或在本地 Codex TUI 中执行。', // Voice assistant 'voice.connecting': '连接中...', 'voice.active': '活跃', 'voice.muted': '已静音', 'voice.error': '错误', 'voice.mute': '静音', 'voice.unmute': '取消静音', 'voice.end': '结束', 'voice.error.micPermission': '麦克风权限被拒绝', 'voice.error.network': '网络错误', 'voice.error.notInitialized': '语音会话未初始化', 'voice.error.startFailed': '启动语音会话失败', 'voice.error.notAllowed': '语音功能不可用', 'voice.error.connection': '连接错误', 'voice.dismiss': '关闭', // Banners 'offline.title': '离线', 'offline.message': '您当前处于离线状态。某些功能可能受限。', 'syncing.title': '同步中…', 'syncing.message': '正在同步您的数据。', 'reconnecting.message': '正在重新连接...', 'reconnecting.reason.error': '流连接错误', 'reconnecting.reason.closed': '流连接已关闭', 'reconnecting.reason.heartbeatTimeout': '心跳超时', 'reconnecting.reason.visibilityRecovery': '后台恢复中', 'pwa.update.title': '新版本可用', 'pwa.update.body': '重新加载以获取最新版 HAPI', 'pwa.update.reload': '重新加载', 'pwa.update.whyToggle': '为什么不能关闭此提示?', 'pwa.update.whyBody': '当你可能有正在运行的智能体、待处理的权限请求或未发送的消息时,HAPI 不会自动重新加载标签页。旧版网页与当前服务器一起运行可能导致同步错误和操作失败。此横幅会一直保持显示,直到你重新加载,以免你在不知情的情况下停留在旧版本 — 但何时点击「重新加载」由你决定,可以先完成手头的工作。', // Send blocked 'send.blocked.title': '无法发送消息', 'send.blocked.noConnection': '未连接到服务器', 'resume.failed.title': '恢复会话失败', 'toast.ready.title': '等待输入', 'toast.ready.body': '{agent} 正在 {session} 等待你的输入', 'toast.permission.title': '权限请求', 'toast.task.completed': '任务完成', 'toast.task.failed': '任务失败', // Install prompt 'install.title': '安装 HAPI', 'install.description': '将 HAPI 添加到主屏幕以便快速访问。', 'install.button': '安装', // Language switcher 'language.title': '语言', 'language.english': 'English', 'language.chinese': '简体中文', // Settings page 'common.back': '返回', 'settings.title': '设置', 'settings.hub.description': '选择一个分类,按你的工作方式调整 HAPI。', 'settings.hub.voice.summary': '声音、语言和行为', 'settings.general.title': '通用', 'settings.storage.title': '存储空间', 'settings.storage.summary': 'Hub 数据库用量', 'settings.storage.description': 'Hub SQLite 数据库当前占用的磁盘空间。', 'settings.storage.loading': '正在加载存储用量…', 'settings.storage.error': '无法加载存储用量', 'settings.storage.total': '总计', 'settings.storage.database': '数据库', 'settings.storage.wal': '预写日志', 'settings.storage.shm': '共享内存', 'settings.storage.path': '路径', 'settings.storage.refresh': '刷新', 'settings.storage.refreshing': '正在刷新…', 'settings.general.description': '语言、伴侣应用配对和通用应用偏好。', 'settings.language.title': '语言', 'settings.language.label': '语言', 'settings.display.title': '显示', 'settings.display.description': '外观、字体和会话列表偏好。', 'settings.display.typography': '字体', 'settings.display.sessions': '会话列表', 'settings.display.appearance': '外观', 'settings.display.appearanceMode': '显示模式', 'settings.display.appearance.system': '跟随系统', 'settings.display.appearance.dark': '深色', 'settings.display.appearance.oled': 'OLED 纯黑', 'settings.display.appearance.light': '浅色', 'settings.display.colorTheme': '颜色主题', 'settings.display.colorTheme.default': '默认', 'settings.display.colorTheme.notion': 'Notion', 'settings.display.colorTheme.one': 'One', 'settings.display.colorTheme.proof': 'Proof', 'settings.display.colorTheme.raycast': 'Raycast', 'settings.display.colorTheme.rosePine': 'Rose Pine', 'settings.display.colorTheme.solarized': 'Solarized', 'settings.display.colorTheme.vercel': 'Vercel', 'settings.display.colorTheme.vsCodePlus': 'VS Code Plus', 'settings.display.colorTheme.xcode': 'Xcode', 'settings.display.colorTheme.linear': 'Linear', 'settings.display.colorTheme.lobster': 'Lobster', 'settings.display.colorTheme.material': 'Material', 'settings.display.colorTheme.matrix': 'Matrix', 'settings.display.colorTheme.monokai': 'Monokai', 'settings.display.colorTheme.nightOwl': 'Night Owl', 'settings.display.colorTheme.nord': 'Nord', 'settings.display.themeColors.title': '自定义配色', 'settings.display.themeColors.description': '应用于当前外观。切换外观可分别自定义每种配色。', 'settings.display.themeColors.reset': '重置', 'settings.display.themeColors.resetAll': '全部重置', 'settings.display.themeColors.expand': '自定义', 'settings.display.themeColors.key.background': '背景', 'settings.display.themeColors.key.surface': '卡片与表面', 'settings.display.themeColors.key.text': '文字', 'settings.display.themeColors.key.hint': '次要文字', 'settings.display.themeColors.key.accent': '强调与链接', 'settings.display.themeColors.key.border': '边框', 'settings.display.themeColors.key.userBubble': '你的消息气泡', 'settings.display.fontSize': '字体大小', 'settings.display.terminalFontSize': '终端字体大小', 'settings.display.sessionPreviewLimit': '会话折叠阈值', 'settings.display.sessionPreviewLimit.decrease': '减少折叠前显示的会话数', 'settings.display.sessionPreviewLimit.increase': '增加折叠前显示的会话数', 'settings.display.activeSessionsOnly': '仅显示活跃会话', 'settings.display.activeSessionsOnly.desc': '在侧边栏隐藏非活跃会话;当前打开的会话仍会保留显示。', 'settings.display.sessionListStatus': '会话列表状态', 'settings.display.sessionListStatus.standard': '标准', 'settings.display.sessionListStatus.detailed': '详细', 'settings.display.sessionListStatus.detailedDescription': '显示会话停止的原因:权限、输入、后台任务、新活动或定时消息(时钟图标)。', 'settings.display.sessionHeader': '会话顶部信息', 'settings.display.sessionHeader.description': '选择在会话标题下方显示的信息。移动端显示 Agent 类型及优先级最高的一个可用信息。', 'settings.display.sessionHeader.showLabels': '显示字段标题', 'settings.display.sessionHeader.agent': 'Agent 类型', 'settings.display.sessionHeader.model': '模型', 'settings.display.sessionHeader.reasoning': '推理强度', 'settings.display.sessionHeader.fastMode': '快速模式', 'settings.display.sessionHeader.machine': '机器', 'settings.display.sessionHeader.lastActive': '活跃时间', 'settings.display.sessionHeader.createdAt': '创建时间', 'settings.display.sessionHeader.updatedAt': '更新时间', 'settings.display.sessionHeader.worktree': '工作树分支', 'session.header.createdAt': '创建', 'session.header.updatedAt': '更新', 'settings.chat.title': '聊天', 'settings.chat.description': '消息输入、工具卡片和对话颜色。', 'settings.chat.input': '输入', 'settings.chat.tools': '工具卡片', 'settings.chat.colors': '对话颜色', 'settings.chat.enterBehavior': '回车键行为', 'settings.chat.enterBehavior.send': '发送消息', 'settings.chat.enterBehavior.newline': '插入换行', 'settings.chat.terminalToolDisplay': '终端工具卡片', 'settings.chat.terminalToolDisplay.compact': '简洁(仅命令)', 'settings.chat.terminalToolDisplay.detailed': '详细(显示输出预览)', 'settings.chat.groupedToolBackground': '聚合 Tool Use 背景', 'settings.chat.userMessageBackground': '用户消息背景', 'settings.chat.surfaceColor.default': '默认颜色', 'settings.chat.surfaceColor.softBlue': '柔和蓝', 'settings.chat.surfaceColor.softGreen': '柔和绿', 'settings.chat.surfaceColor.softYellow': '柔和黄', 'settings.chat.surfaceColor.custom': '自定义颜色', 'settings.chat.composerToolbar.title': '输入栏工具自定义布局', 'settings.chat.composerToolbar.description': '设置消息输入框底部工具的排列方式。', 'settings.chat.composerToolbar.layout': '对齐方式', 'settings.chat.composerToolbar.order': '工具顺序', 'settings.chat.composerToolbar.hidden': '隐藏工具', 'settings.chat.composerToolbar.emptyHidden': '将工具拖到这里隐藏', 'settings.chat.composerToolbar.hide': '隐藏', 'settings.chat.composerToolbar.show': '显示', 'settings.chat.composerToolbar.layout.left': '左对齐', 'settings.chat.composerToolbar.layout.center': '居中', 'settings.chat.composerToolbar.layout.right': '右对齐', 'settings.chat.composerToolbar.layout.split': '左右分组', 'settings.chat.composerToolbar.dragHint': '拖动操作项可调整顺序;左右分组布局下也可在两组之间拖动。', 'settings.chat.composerToolbar.previewHint': '直接拖动下方的实际工具图标调整顺序,或拖到隐藏工具;预览会立即更新,鼠标悬停可查看功能名称。', 'settings.chat.composerToolbar.reset': '恢复默认', 'settings.chat.composerToolbar.leftGroup': '左侧分组', 'settings.chat.composerToolbar.rightGroup': '右侧分组', 'settings.chat.composerToolbar.emptyGroup': '将操作拖到这里', 'settings.chat.composerToolbar.moveLeft': '移至左侧分组', 'settings.chat.composerToolbar.moveRight': '移至右侧分组', 'settings.chat.composerToolbar.moveEarlier': '向前移动', 'settings.chat.composerToolbar.moveLater': '向后移动', 'settings.chat.composerToolbar.item.attachment': '添加附件', 'settings.chat.composerToolbar.item.settings': '会话设置', 'settings.chat.composerToolbar.item.piModel': 'Pi 模型', 'settings.chat.composerToolbar.item.piThinking': 'Pi 思考等级', 'settings.chat.composerToolbar.item.terminal': '终端', 'settings.chat.composerToolbar.item.abort': '中止', 'settings.chat.composerToolbar.item.switch': '切换到远程模式', 'settings.chat.composerToolbar.item.voiceMic': '语音麦克风', 'settings.chat.composerToolbar.item.scratchlist': '暂存清单', 'settings.chat.composerToolbar.item.schedule': '定时发送', 'settings.voice.title': '语音', 'settings.voice.description': '选择语音输入或完整语音助手。', 'settings.voice.inputMode.title': '语音模式', 'settings.voice.inputMode.hint': '语音输入只会把文字插入编辑框,不会自动发送。', 'settings.voice.inputMode.assistant': '语音助手', 'settings.voice.inputMode.assistant.hint': '双向语音对话', 'settings.voice.inputMode.dictation': '语音输入', 'settings.voice.inputMode.dictation.hint': '只做语音转文字', 'settings.voice.transcriptionProvider': '转录提供商', 'settings.voice.noTranscriptionProvider': 'Hub 尚未配置转录提供商。', 'settings.voice.transcriptionMode': '转录模式', 'settings.voice.transcriptionMode.standard': '标准', 'settings.voice.transcriptionMode.standard.hint': '录音结束后转录(默认)', 'settings.voice.transcriptionMode.realtime': '实时', 'settings.voice.transcriptionMode.realtime.hint': '边说边插入文字', 'settings.voice.voices.description': '选择当前后端使用的声音。', 'settings.voice.sounds.title': '声音效果', 'settings.voice.responds.title': '对话风格', 'settings.voice.connection.title': '连接与提供商', 'settings.voice.behaves.title': '对话行为', 'settings.voice.persona.title': '角色与指令', 'settings.voice.advanced.section.title': '高级', 'settings.voice.responseLength.label': '回复长度', 'settings.voice.responseLength.brief': '简短', 'settings.voice.responseLength.balanced': '适中', 'settings.voice.responseLength.detailed': '详细', 'settings.voice.responseLength.brief.hint': '回复控制在1-2句话以内。', 'settings.voice.responseLength.balanced.hint': '默认——助手根据情境判断回复长度。', 'settings.voice.responseLength.detailed.hint': '需要时给出详细完整的回答。', 'settings.voice.opening.label': '开场方式', 'settings.voice.opening.greet': '打个招呼', 'settings.voice.opening.brief': '简报状态', 'settings.voice.opening.greet.hint': '助手先问候您,然后等待您开口。', 'settings.voice.opening.brief.hint': '连接时助手汇报当前代理活动。', 'settings.voice.group.label': '语音设置', 'settings.voice.group.hint': '选项取决于所选语音或转录提供商。', 'settings.voice.backend': '语音后端', 'settings.voice.language': '语音语言', 'settings.voice.autoDetect': '自动检测', 'settings.voice.voice': '声音', 'settings.voice.voiceDefault': '默认', 'settings.voice.advanced.title': '高级语音设置', 'settings.voice.advanced.hint': '身份、性格、平台规则、滑块。默认即可,需调音时再展开。', 'settings.voice.advanced.customizedBadge': '已自定义', 'settings.voice.fixtures.title': '平台规则(只读)', 'settings.voice.fixtures.hint': '随应用发布:工具、路由、语音输出规则。升级 HAPI 时更新,此处不可编辑。', 'settings.voice.identity.title': '身份与品牌', 'settings.voice.identity.hint': '语音助手是谁。HAPI 是应用本身;可在此改名或换人设。提供商护栏会单独附加。', 'settings.voice.identity.reset': '恢复默认身份', 'settings.voice.identity.default': '内置默认身份', 'settings.voice.identity.customized': '已自定义身份', 'settings.voice.character.promptTitle': '性格与表达', 'settings.voice.character.promptHint': '语气与风格。性格为空时会合并预设表达文案。运行时与平台规则一起组成完整提示(所有语音后端)。', 'settings.voice.character.reset': '恢复默认性格', 'settings.voice.character.appendPreset': '追加预设表达文案', 'settings.voice.layers.resetAll': '恢复身份与性格', 'settings.voice.layers.composedNote': '运行时提示 = 平台规则 + 身份 + 性格(所有后端)。', 'settings.voice.wireBudget.elevenlabs': 'ElevenLabs 在连接时发送合成指令;会话历史先握手再流式推送。', 'settings.voice.wireBudget.gemini': 'Gemini Live 通过 hub 代理使用相同合成指令。', 'settings.voice.wireBudget.qwen': 'Qwen Realtime 在 session.update 中使用相同合成指令。', 'settings.voice.wireBudget.storage': '本地存储上限(字符):', 'settings.voice.wireBudget.elevenlabsLimits': '传输上限:每条 WebRTC 消息约 {msg} B;合成提示约 {prompt} B。', 'settings.voice.wireBudget.promptTruncated': '合成提示已缩短以符合 ElevenLabs 传输上限。请精简身份/性格,否则连接时可能再次截断。', 'settings.voice.wireBudget.composedSize': '上次合成提示大小', 'settings.voice.contextNotice': '上次语音会话', 'settings.voice.character.title': '说话风格预设', 'settings.voice.character.presetSlidersHint': '预设调整 ElevenLabs TTS 滑块,并可选择合并到性格层。', 'settings.voice.character.preset.label': '预设', 'settings.voice.character.preset.balanced': '均衡', 'settings.voice.character.preset.balancedHint': '温暖专注,适合日常任务。', 'settings.voice.character.preset.warm': '温暖活泼', 'settings.voice.character.preset.warmHint': '更有表现力;ElevenLabs 可用音频标签。', 'settings.voice.character.preset.calm': '沉稳', 'settings.voice.character.preset.calmHint': '慢而稳,适合长会话或夜间。', 'settings.voice.character.preset.direct': '干脆', 'settings.voice.character.preset.directHint': '简短高效,少寒暄。', 'settings.voice.character.preset.custom': '自定义', 'settings.voice.character.preset.customHint': '滑块与上方系统提示由你控制。', 'settings.voice.tuning.title': '音色与节奏', 'settings.voice.tuning.elevenlabs': 'ElevenLabs', 'settings.voice.tuning.gemini': 'Gemini Live', 'settings.voice.tuning.stability': '稳定性', 'settings.voice.tuning.stabilityHint': '越低越有变化;越高越平稳。', 'settings.voice.tuning.expressiveness': '表现力', 'settings.voice.tuning.expressivenessHint': '风格夸张度(ElevenLabs style)。', 'settings.voice.tuning.speakingRate': '语速', 'settings.voice.tuning.speakingRateHint': '0.7–1.2×(ElevenLabs API)。', 'settings.voice.tuning.similarity': '相似度增强', 'settings.voice.tuning.similarityHint': '更接近训练音色。', 'settings.voice.tuning.speakerBoost': '说话人增强', 'settings.voice.tuning.affectiveDialog': '情感对话', 'settings.voice.tuning.affectiveDialogHint': '根据你的语气调整回应(Gemini v1alpha)。', 'settings.voice.tuning.qwenHint': 'Qwen 无 TTS 滑块 — 请用角色预设与备注;情绪会从你的语音自适应。', 'settings.voice.tuning.selectBackend': '选择语音后端后显示对应滑块。', 'settings.voice.preview.elevenlabsOnly': '仅 ElevenLabs 支持试听', 'settings.voice.preview.unavailable': '未配置 ElevenLabs API 密钥时无法试听', 'settings.voice.preview.play': '预览声音', 'settings.voice.preview.stop': '停止预览', 'settings.voice.staticCatalogHint': '展开列表可查看声音特点说明;仅 ElevenLabs 支持试听。', 'settings.voice.session.label': '会话行为', 'settings.voice.proactive': '以摘要开始语音会话', 'settings.voice.proactive.description': '开启后,启动语音会话时将朗读当前代理活动的摘要。关闭后,助手向您打招呼并等待您先开口。', 'settings.companion.title': '伴侣应用', 'settings.companion.noToken': '配对需要原始访问令牌(CLI_API_TOKEN)。您似乎通过 Telegram 或其他未保存令牌的流程登录 — 请在伴侣应用中手动粘贴令牌。', 'settings.companion.description': '在 Android 手机或 Wear OS 上的 HAPI 伴侣应用中扫描,以绑定此 Hub。配对码即您的访问令牌 — 请像密码一样妥善保管。', 'settings.companion.showQr': '显示配对二维码', 'settings.companion.qrAriaLabel': '伴侣应用配对二维码', 'settings.companion.copyLink': '复制链接', 'settings.companion.copied': '已复制!', 'settings.companion.hide': '隐藏', 'settings.machines.title': '设备', 'settings.machines.description': '给设备起自己的名字。这里只列出当前在线的设备。', 'settings.machines.section': '我的设备', 'settings.machines.rename': '重命名 {name}', 'settings.machines.namePlaceholder': '使用主机名', 'settings.machines.empty': '没有在线设备。', 'settings.machines.error': '重命名失败。', 'settings.hub.machines.summary': '给设备起自定义名字', 'settings.about.title': '关于', 'settings.about.description': 'HAPI 链接和版本信息。', 'settings.about.website': '官方网站', 'settings.about.appVersion': '应用版本', 'settings.about.protocolVersion': '协议版本', // Browse / Workspace 'browse.title': '浏览', 'browse.goUp': '返回上层', 'browse.empty': '未找到子目录', 'browse.refresh': '刷新', 'browse.startSession': '启动会话', 'browse.nav': '浏览', 'browse.noRootTitle': '未启用 workspace 浏览', 'browse.noRootHint': '浏览功能是可选的。带一个或多个 --workspace-root 参数重启 runner,即可启用文件树浏览和受限的会话启动。', 'browse.noRootFooter': '你仍然可以在「新建会话」页面直接创建会话。', 'browse.noMachinesConnected': '没有已连接的 CLI。在某台机器上运行 `hapi runner start --workspace-root /path/a --workspace-root /path/b` 来开始。', // Misc 'misc.noMachines': '无可用机器', 'misc.machine': '机器', 'misc.collaborationMode': '协作模式', 'misc.permissionMode': '权限模式', 'misc.model': '模型', 'misc.reasoningEffort': '推理强度', 'misc.effort': '思考强度', 'misc.fastMode': '快速模式', 'misc.fastModeStandard': '标准', 'misc.fastModeFast': '快速', 'misc.variant': '变体', 'misc.loading': '加载中…', 'misc.newMessage': '{n} 条新消息', 'misc.loadingMessages': '加载消息中…', 'misc.pullToLoadOlder': '继续下拉加载更早消息', 'misc.releaseToLoadOlder': '松开加载', 'misc.typeMessage': "输入 'continue' 继续...", 'misc.typeAMessage': '输入消息...', 'misc.offline': 'offline', 'misc.permissionRequired': '需要权限', 'misc.online': 'online', 'misc.contextDetails': '上下文详情', 'misc.contextCache': '缓存:{value}', 'misc.contextUsed': '使用:{value}({percent}%)', 'misc.contextUsedTokens': '使用:{value}', 'misc.contextRemaining': '剩余:{value}({percent}%)', // Web Share Target 分享面板 'share.title': '分享到 HAPI', 'share.subtitle': '选择要附加到的会话。', 'share.recentSessions': '最近的活跃会话', 'share.newSession': '新建会话', 'share.discard': '放弃', 'share.loading': '正在加载分享内容…', 'share.notFound.title': '未找到分享内容', 'share.notFound.body': '此分享链接已过期或被直接打开而没有传输。', 'share.error.ingest': '无法读取分享内容,请从源应用重试。', 'share.error.noId': '未提供分享 ID,请从系统分享面板打开此页面。', 'share.backToSessions': '返回会话列表', 'share.preview.text': '分享文本', 'share.preview.empty': '(空分享)', 'share.preview.files': '{n} 个文件', 'share.noActiveSessions': '没有活跃会话。请在下方选择"新建会话"。', 'sessions.refresh.pull': '下拉即可刷新', 'sessions.refresh.release': '释放即可刷新', 'sessions.refresh.refreshing': '正在刷新…', 'sessions.refresh.failed.title': '刷新失败', 'codexSync.newSessionInline.title': '导入 Codex 历史', 'codexSync.newSessionInline.description': '可选:先单选一个本机 Codex 会话,再选择模型/思考强度,点创建时导入。', 'codexSync.newSessionInline.clear': '清除已选历史', 'codexSync.newSessionInline.choose': '选择历史', 'codexSync.confirm.search': '搜索', 'codexSync.confirm.searchPlaceholder': '搜索标题、消息、目录、会话 ID', 'codexSync.confirm.useSelected': '使用选中会话', 'codexSync.confirm.imported': '已导入', 'codexSync.confirm.original': '原会话', 'codexSync.confirm.fork': 'fork会话', 'codexSync.confirm.archiveAction': '在 Codex 侧归档', 'session.action.syncCodexDisabledActive': '当前会话正在运行,停止或归档后才能同步 Codex 历史。', 'codexSync.manual.success.noNewMessages': '没有新的 Codex 消息。', 'session.status.title': '会话状态', 'session.status.goal': '目标', 'session.status.tasks': '任务', 'session.status.subagents': '子代理', 'session.status.terminals': '后台终端', 'session.status.terminalsUnavailable': '{count} 个终端运行中 · 无法确定具体命令', 'session.status.terminalsPossible': '可能的命令', 'session.status.goal.active': '进行中', 'session.status.goal.paused': '已暂停', 'session.status.goal.budgetLimited': '已受限', 'session.status.goal.complete': '已完成', 'session.status.subagent.running': '运行中', 'session.status.subagent.waiting': '等待中', 'session.status.subagent.error': '错误', } as const