{
  "common.cancel": "取消",
  "common.save": "保存",
  "common.saveSettings": "保存设置",
  "common.loading": "加载中…",
  "common.delete": "删除",
  "common.modify": "修改",
  "common.next": "下一步",
  "common.prev": "上一步",
  "common.refresh": "刷新",
  "common.notFound": "(未找到)",
  "common.copied": "已复制",
  "common.copy": "复制",
  "common.close": "关闭",

  "sidebar.brand.tag": "多订阅聚合代理",
  "sidebar.nav.guide": "接入指南",
  "sidebar.nav.virtualModels": "虚拟模型",
  "sidebar.nav.subscriptions": "订阅管理",
  "sidebar.nav.requestLogs": "请求日志",
  "sidebar.nav.logs": "日志",
  "sidebar.nav.statistics": "统计",
  "sidebar.nav.settings": "设置",
  "sidebar.nav.about": "关于",
  "sidebar.updateAvailable": "有可用更新",

  "settings.title": "设置",
  "settings.subtitle": "代理服务、客户端配置、鉴权与数据保留期。",
  "settings.section.update": "应用更新",
  "settings.update.source.label": "更新源",
  "settings.update.source.international": "全球",
  "settings.update.source.china": "中国大陆",
  "settings.section.proxy": "代理服务",
  "settings.proxy.statusRunning": "运行中",
  "settings.proxy.statusStopped": "未运行",
  "settings.proxy.port.label": "监听端口",
  "settings.proxy.port.desc": "默认 23456,被占用时自动 +1 递增。",
  "settings.proxy.port.actual": "当前实际:",
  "settings.proxy.bind.label": "监听地址",
  "settings.proxy.bind.desc": "默认仅本机回环。切换为「局域网」后其他设备 Claude Code 可以指向本机 IP。",
  "settings.proxy.bind.local": "仅本机",
  "settings.proxy.bind.lan": "局域网",
  "settings.proxy.bind.aria": "局域网可访问",
  "settings.proxy.bind.warning": "⚠️ 选择此模式后,同网段任何设备都能调用代理。代理不做鉴权,慎用于不受信任的网络。",
  "settings.proxy.autostart.label": "开机自启动",
  "settings.proxy.needsRestart": "代理配置已修改(协议/端口/监听地址),重启 cc-router 后生效。",
  "settings.proxy.mode.label": "监听协议",
  "settings.proxy.mode.desc": "「仅 HTTP」最简单;「仅 HTTPS」需要导入下方 CA 证书到系统信任库;「两者同时」给出 HTTP + HTTPS 双端口, 不同客户端各取所需。",
  "settings.proxy.mode.http": "仅 HTTP",
  "settings.proxy.mode.https": "仅 HTTPS",
  "settings.proxy.mode.both": "HTTP + HTTPS",
  "settings.proxy.httpsPort.label": "HTTPS 端口",
  "settings.proxy.httpsPort.desc": "默认 23457, 被占用时自动 +1 递增。与 HTTP 端口冲突时也会自动避开。",

  "settings.section.https": "HTTPS 证书",
  "settings.https.h2.label": "HTTP/2 协议",
  "settings.https.h2.desc": "勾选后 HTTPS 端口在 TLS 握手时通过 ALPN 协商 HTTP/2, 失败自动回退 HTTP/1.1; 关闭则强制 HTTP/1.1。修改后需重启 cc-router 才生效。",
  "settings.https.cert.fingerprint.label": "CA 证书指纹 (SHA-256)",
  "settings.https.cert.fingerprint.desc": "用于核对导入系统信任库的是不是同一张 CA。指纹一致才算导入成功。",
  "settings.https.cert.export.label": "导出 CA 证书",
  "settings.https.cert.export.desc": "导出 cc-router 自签 CA 公钥, 会同时生成 .pem + .crt 两份 (内容相同)。Windows 双击 .crt 直接进入证书安装向导, macOS/Linux 用 .pem 或 .crt 均可。导入系统信任库后, 浏览器和客户端会信任 cc-router 签发的 localhost 证书。",
  "settings.https.cert.export.button": "导出 CA 证书…",
  "settings.https.cert.exportOk": "已导出 .pem + .crt 两份 CA 证书, 请按下方说明导入系统信任库。",
  "settings.https.cert.exportFailed": "导出失败",
  "settings.https.cert.regenerate.button": "重新生成证书",
  "settings.https.cert.regenerateConfirm": "重新生成 leaf 证书? 这不会影响系统信任库中已导入的 CA, 重启 app 后新证书生效。",
  "settings.https.cert.regenerateOk": "leaf 证书已重新生成, 重启 cc-router 后生效。",
  "settings.https.cert.regenerateFailed": "重新生成失败",
  "settings.https.cert.sans.label": "额外 SAN (IP / hostname)",
  "settings.https.cert.sans.desc": "每行一条 IP 或域名 (如 192.168.1.5 或 my-laptop.local)。内置 localhost / 127.0.0.1 / ::1 永远在证书里, 这里追加。失焦后会自动重新生成 leaf 证书, 重启 cc-router 后生效。",
  "settings.https.cert.sans.regenerated": "已用新 SAN 重新生成 leaf 证书, 重启 cc-router 后生效。",
  "settings.https.cert.howto.title": "导入系统信任库 (导出后需手动导入一次, 之后所有 cc-router 签发的证书都受信任)",
  "settings.https.cert.howto.macos": "双击 .pem 文件 → 钥匙串访问 → 选中 cc-router local CA → 右键「显示简介」→ 「信任」展开 → 「使用此证书时」选「始终信任」→ 关闭窗口输密码确认。",
  "settings.https.cert.howto.windows": "双击 .crt 文件 → 安装证书 → 选「本地计算机」(需管理员) → 「将所有的证书放入下列存储」→ 浏览到「受信任的根证书颁发机构」→ 完成。",
  "settings.https.cert.howto.linux": "拷贝 .crt 文件到 /usr/local/share/ca-certificates/, 然后 sudo update-ca-certificates。Firefox/Chromium 使用自有信任库, 另需在浏览器设置里单独导入。",
  "settings.saveFailed": "保存失败",
  "settings.section.auth": "鉴权与跨域",
  "settings.auth.token.label": "Token 鉴权",
  "settings.auth.token.desc": "在 Claude Code 启动时配 ANTHROPIC_API_KEY 或 ANTHROPIC_AUTH_TOKEN 等于此 token。重新生成后所有已配置客户端需同步更新。",
  "settings.auth.token.enabled": "已开启,请求必须携带正确 token",
  "settings.auth.token.disabled": "已关闭,所有请求放行",
  "settings.auth.token.regenerated": "已生成",
  "settings.auth.token.regenerate": "重新生成",
  "settings.auth.token.alertFailed": "Token 生成失败",
  "settings.auth.cors.label": "CORS 跨域",
  "settings.auth.cors.descEnabled": "已开启,响应附加 CORS 头。指定具体值如 http://localhost:5173 仅允许该来源。",
  "settings.auth.cors.descDisabled": "已关闭,浏览器跨域调用会被拦截。",
  "settings.auth.cors.statusEnabled": "已开启,响应附加 CORS 头",
  "settings.auth.cors.statusDisabled": "已关闭,浏览器跨域调用会被拦截",
  "settings.section.storage": "数据存储",
  "settings.storage.retention.label": "请求日志保留期",
  "settings.storage.retention.7d": "7 天",
  "settings.storage.retention.30d": "30 天",
  "settings.storage.retention.90d": "90 天",
  "settings.storage.retention.forever": "永久",
  "settings.storage.dbLimit.label": "数据库大小上限",
  "settings.storage.dbLimit.unlimited": "10 GB (近似无限)",
  "settings.section.language": "语言",
  "settings.language.label": "界面语言",
  "settings.language.desc": "选择 cc-router 界面显示语言。「跟随系统」会读取系统语言:中文 → 中文,日语 → 日本語,其他 → English。",
  "settings.language.system": "跟随系统",
  "settings.section.debug": "调试",
  "settings.debug.mode.label": "调试模式",
  "settings.debug.mode.desc": "开启后每次出站请求会把客户端请求体、cc-router 改写后的真实请求体、上游响应体三段,各写一个 .txt 文件到 debug-dumps 目录,用于排查协议适配类问题。文件包含完整对话内容,调试完请关闭并清理。",
  "settings.debug.dumps.label": "Dump 目录",
  "settings.debug.dumps.desc": "文件持续累积,请定期手动清理。",
  "settings.debug.open.button": "打开 dump 目录",
  "settings.debug.open.alertFailed": "打开目录失败",
  "settings.debug.clear.button": "清空 dump",
  "settings.debug.clear.alertFailed": "清空失败",
  "settings.debug.clear.dialog.title": "确认清空 debug-dumps?",
  "settings.debug.clear.dialog.desc": "将永久删除 debug-dumps 目录下所有 .txt 文件。已经贴给 Claude 排查的样本可以放心清掉。",
  "settings.debug.clear.dialog.confirm": "确认清空",
  "settings.section.danger": "危险区域 · 恢复出厂设置",
  "settings.danger.desc": "清空所有订阅、API Key、虚拟模型绑定、请求日志、设置文件。app 会自动重启并进入初始欢迎页。此操作不可撤销。",
  "settings.danger.button": "恢复出厂设置",
  "settings.danger.alertFailed": "恢复出厂失败",
  "settings.danger.dialog.title": "确认恢复出厂设置?",
  "settings.danger.dialog.intro": "下面的数据将被永久删除:",
  "settings.danger.dialog.item.subscriptions": "所有订阅(包括明文存储的 API Key)",
  "settings.danger.dialog.item.virtualModels": "虚拟模型绑定",
  "settings.danger.dialog.item.logs": "请求日志和模型列表缓存",
  "settings.danger.dialog.item.settings": "app 设置(端口、保留期等)",
  "settings.danger.dialog.outro": "操作完成后 app 会自动重启。",
  "settings.danger.dialog.confirm": "确认清空并重启",

  "about.title": "关于",
  "about.subtitle": "项目信息与版权",
  "about.description": "本地 HTTP 代理,将多家大模型订阅聚合为单一 Anthropic Messages API 端点,供 Claude Code 透明切换。",
  "about.repo": "GitHub 仓库",
  "about.docs": "文档",
  "about.site": "官网",
  "about.updater.checking": "检查更新中…",
  "about.updater.upToDate": "已是最新版本",
  "about.updater.idle": "检查应用更新",
  "about.updater.recheck": "重新检查",
  "about.updater.check": "检查更新",
  "about.updater.foundNewPrefix": "发现新版本 v",
  "about.updater.currentPrefix": "当前 v",
  "about.updater.debManual": " · deb 安装包不支持原地升级,需手动重装",
  "about.updater.openDownload": "前往下载页",
  "about.updater.installNow": "立即更新",
  "about.updater.downloadingPrefix": "正在下载 v",
  "about.updater.ready.title": "更新已就绪",
  "about.updater.ready.desc": "重启 app 后生效。重启会暂时中断 Claude Code 的当前会话,可在合适的时机再操作。",
  "about.updater.restart": "立即重启",
  "about.updater.error": "更新检查失败",
  "about.updater.retry": "重试",
  "about.disclaimer.title": "免责声明",
  "about.disclaimer.usage": "本工具仅限于自动切换订阅套餐,请求体几乎完全透传,不涉及逆向、不涉及破解等操作。用户需自行遵守每个编程套餐的使用规则。此工具只能用于 Claude Code 等编程工具,切勿用于其他用途。",
  "about.disclaimer.tos": "各家 provider 的 ToS 不一定明确允许「订阅 Key 接第三方代理 + 多虚拟模型混调度」的用法,尤其是 Coding Plan / Token Plan 这类 per-seat 订阅,可能触发风控。因使用本工具导致账号被限速、被封禁、订阅被取消的,作者不承担任何责任。",
  "about.disclaimer.warranty": "本软件按 As-Is 提供,不对任何因使用造成的直接或间接损失负责,包括但不限于额度异常消耗、数据丢失、业务中断。",
  "onboarding.disclaimer.title": "免责声明",
  "onboarding.disclaimer.subtitle": "在开始使用 cc-router 前,请阅读并知悉以下内容。",
  "onboarding.disclaimer.accept": "我已阅读并同意",

  "guide.title": "接入指南",
  "guide.subtitle": "把 cc-router 作为 Anthropic Messages 兼容端点接入各类客户端。",
  "guide.proxy.title": "代理监听地址",
  "guide.proxy.statusNotStarted": "未启动",
  "guide.proxy.intro1": "cc-router 在本地启动 HTTP 代理,把多家订阅聚合成单一 Anthropic Messages 端点。端口、监听地址、鉴权 token 可在",
  "guide.proxy.settingsLink": "设置",
  "guide.proxy.intro2": "页修改(改端口/监听地址需重启 app 生效)。",
  "guide.method1.title": "方式 1 · 直接写入 settings.json(推荐)",
  "guide.method1.sub": "最稳,不依赖 shell 环境",
  "guide.method1.desc": "把下面的 JSON 合并写入 Claude Code 配置文件。如果文件不存在,新建即可。",
  "guide.method1.note1": " 已填入 cc-router 当前的真实 token,可直接使用。token 可在",
  "guide.method1.note2": "页重新生成。",
  "guide.method2.title": "方式 2 · 环境变量(备选)",
  "guide.method2.sub": "GUI 启动的客户端可能读不到 shell env,优先用方式 1",
  "guide.method2.note1": "把上面这几行加到 ",
  "guide.method2.note2": "、",
  "guide.method2.note3": " 或 PowerShell profile,然后重启 terminal 后启动 Claude Code。",

  "guide.tab.others": "其他 AI Agent",
  "guide.others.title": "更多工具接入中",

  "guide.ccswitch.entry.title": "在 cc-switch 添加新供应商",
  "guide.ccswitch.entry.body": "打开 cc-switch → 点「添加新供应商」→ 切换到「Claude 供应商」标签 → 选择「自定义配置」(不要选预设里的某一家)。",
  "guide.ccswitch.method1.title": "方式 1 · 在表单里手动填",
  "guide.ccswitch.method1.sub": "直观, 适合第一次接入",
  "guide.ccswitch.method1.desc": "按下表填写。已填入 cc-router 当前真实 port 和 token,点字段值复制即可。",
  "guide.ccswitch.method1.fieldUrl": "请求地址",
  "guide.ccswitch.method1.fieldKey": "API Key",
  "guide.ccswitch.method1.fieldFormat": "API 格式",
  "guide.ccswitch.method1.fieldAuthField": "认证字段",
  "guide.ccswitch.method1.modelMapTitle": "展开「高级选项」, 在「模型映射」里填:",
  "guide.ccswitch.method1.modelOpus": "主模型 / Opus 默认模型",
  "guide.ccswitch.method1.modelSonnet": "Sonnet 默认模型",
  "guide.ccswitch.method1.modelHaiku": "Haiku 默认模型",
  "guide.ccswitch.method1.note": "「请求地址」末尾不要带斜杠, 否则 cc-switch 会校验失败。",
  "guide.ccswitch.method2.title": "方式 2 · 直接粘贴 JSON",
  "guide.ccswitch.method2.sub": "一次性粘贴跳过填表",
  "guide.ccswitch.method2.desc": "在 cc-switch 的「配置 JSON」编辑框里粘贴下面内容, 可一次配好。已填入当前真实 port 和 token。",

  "guide.openclaw.path.title": "配置文件路径",
  "guide.openclaw.path.note": "支持 .js / .json / .yaml 三种格式,任选其一。",
  "guide.openclaw.config.title": "完整配置示例",
  "guide.openclaw.config.desc": "把下面内容写入文件,不存在则新建。已填入 cc-router 当前真实 port 和 token,可直接使用。",
  "guide.openclaw.note.modelRef": "model ref 必须用 anthropic/<model-name> 带前缀格式。cc-router 提供 model-opus / model-sonnet / model-haiku 三个虚拟模型,任意其他模型名会走 fallback 透传。",
  "guide.openclaw.note.tokenHint": "token 可在「设置」页重新生成。",

  "guide.hermes.path.title": "配置文件路径",
  "guide.hermes.path.note": "也可用 hermes model 命令以交互式向导生成,无需手动写文件。",
  "guide.hermes.config.title": "配置示例",
  "guide.hermes.config.desc": "把下面内容写入配置文件。已填入 cc-router 当前真实 port,可直接使用。",
  "guide.hermes.auth.title": "API Key 配置",
  "guide.hermes.auth.desc": "用环境变量 ANTHROPIC_API_KEY,或执行 hermes auth add anthropic --type api-key --api-key <token>。token 可在「设置」页查看与重新生成。",
  "guide.hermes.note.apiMode": "api_mode 必须是 anthropic_messages(Hermes 三选一中匹配 cc-router 协议的那个),否则走错协议会全部 4xx。",

  "guide.opencode.path.title": "配置文件路径",
  "guide.opencode.path.project": "项目级",
  "guide.opencode.path.global": "全局",
  "guide.opencode.path.note": "项目级 opencode.json 与全局 ~/.config/opencode/opencode.json 二选一。",
  "guide.opencode.config.title": "配置示例",
  "guide.opencode.config.desc": "通过 @ai-sdk/anthropic npm 包声明这是 Anthropic 协议端点。已填入 cc-router 当前真实 port 和 token,可直接使用。",
  "guide.opencode.note.baseUrlTrap": "⚠️ baseURL 末尾不要带 /v1。@ai-sdk/anthropic 内部会自动追加 /v1/messages,重复会变成 /v1/v1/messages 导致 404(OpenCode issue #5163 的成因)。",
  "guide.opencode.note.usage": "调用时用 /models 选 cc-router/model-opus(或 sonnet / haiku)即可。",

  "stats.title": "统计",
  "stats.subtitle": "用量、耗时、成功率的全局聚合视图。数据按天聚合、永久保留,不受日志清理影响。",
  "stats.refresh": "刷新",
  "stats.range.today": "今天",
  "stats.range.last7": "近 7 天",
  "stats.range.last30": "近 30 天",
  "stats.range.last90": "近 90 天",
  "stats.range.all": "全部",
  "stats.kpi.totalRequests": "总请求数",
  "stats.kpi.successRate": "成功率",
  "stats.kpi.avgDuration": "平均耗时",
  "stats.kpi.totalTokens": "总 Token",
  "stats.kpi.failedFormat": "{failed} 失败 / {total}",
  "stats.kpi.p95Prefix": "P95 ",
  "stats.kpi.p95Suffix": " s",
  "stats.heatmap.title": "Token 用量热点图",
  "stats.heatmap.subtitle": "近 365 天每日 Token 消耗。颜色越深消耗越多。",
  "stats.heatmap.legendLess": "少",
  "stats.heatmap.legendMore": "多",
  "stats.heatmap.tooltipFormat": "{date}: {tokens} tokens · {requests} 次请求",
  "stats.heatmap.empty": "近期暂无用量数据。",
  "stats.daily.title": "每日趋势",
  "stats.daily.subtitle": "请求量按天分布,绿色=成功 / 红色=失败 / 灰色=超时。",
  "stats.daily.empty": "选定范围内暂无请求。",
  "stats.daily.tooltipRequests": "请求数",
  "stats.daily.tooltipSuccess": "成功",
  "stats.daily.tooltipError": "失败",
  "stats.daily.tooltipTimeout": "超时",
  "stats.daily.tokenTitle": "每日 Token 用量",
  "stats.daily.tokenSubtitle": "Token 按天分布,从下到上:缓存读取 / 缓存写入 / 输入 / 输出。",
  "stats.daily.tokenTooltipOutput": "输出",
  "stats.daily.tokenTooltipInput": "输入",
  "stats.daily.tokenTooltipCacheCreate": "缓存写入",
  "stats.daily.tokenTooltipCacheRead": "缓存读取",
  "stats.byVm.title": "虚拟模型分布",
  "stats.byVm.subtitle": "各虚拟模型槽位的请求量与成功率。",
  "stats.byVm.empty": "选定范围内暂无数据。",
  "stats.bySub.title": "订阅排行",
  "stats.bySub.subtitle": "点击行跳转日志页查看该订阅的明细。",
  "stats.bySub.col.subscription": "订阅",
  "stats.bySub.col.requests": "请求数",
  "stats.bySub.col.successRate": "成功率",
  "stats.bySub.col.avgDuration": "平均耗时",
  "stats.bySub.col.tokensOut": "输出 Token",
  "stats.bySub.empty": "选定范围内暂无订阅数据。",

  "requestLogs.title": "请求日志",
  "requestLogs.subtitle": "最近经过代理的请求记录,按时间倒序。",
  "requestLogs.refresh": "刷新",
  "requestLogs.filter.allVm": "全部虚拟模型",
  "requestLogs.filter.allProvider": "全部厂商",
  "requestLogs.filter.allStatus": "全部状态",
  "requestLogs.filter.allClient": "全部客户端",
  "requestLogs.filter.clientUnknown": "未识别",
  "requestLogs.summaryFormat": "{total} 条 · 第 {page} 页 / 共 {pages} 页",
  "requestLogs.summaryEmpty": "0 条",
  "requestLogs.empty.filtered": "当前筛选下无记录。",
  "requestLogs.empty.none": "暂无请求日志。让 Claude Code 通过代理跑一次对话即可看到记录。",
  "requestLogs.clearFilter": "清除筛选",
  "requestLogs.col.time": "时间",
  "requestLogs.col.status": "状态",
  "requestLogs.col.client": "客户端",
  "requestLogs.col.virtualModel": "虚拟模型",
  "requestLogs.col.realModel": "真实模型",
  "requestLogs.col.responseModel": "响应模型",
  "requestLogs.col.provider": "厂商",
  "requestLogs.col.tokensIn": "输入",
  "requestLogs.col.tokensOut": "输出",
  "requestLogs.col.latency": "耗时",
  "requestLogs.status.success": "成功",
  "requestLogs.status.timeout": "超时",
  "requestLogs.status.error": "失败",
  "requestLogs.sse": "SSE 流式",
  "requestLogs.prevPage": "上一页",
  "requestLogs.nextPage": "下一页",
  "requestLogs.detail.title": "请求详情",
  "requestLogs.detail.time": "时间",
  "requestLogs.detail.requestId": "请求 ID",
  "requestLogs.detail.status": "状态",
  "requestLogs.detail.httpStatus": "上游 HTTP",
  "requestLogs.detail.virtualModel": "虚拟模型",
  "requestLogs.detail.realModel": "真实模型",
  "requestLogs.detail.provider": "厂商",
  "requestLogs.detail.latency": "耗时",
  "requestLogs.detail.errorMessage": "错误消息",
  "requestLogs.detail.upstreamBody": "上游返回(原文截断)",
  "requestLogs.detail.copy": "复制全部",
  "requestLogs.detail.noBody": "无更多详情。",
  "requestLogs.detail.clientTool": "客户端",
  "requestLogs.detail.clientVersion": "客户端版本",
  "requestLogs.detail.clientIp": "请求方 IP",
  "requestLogs.detail.userAgent": "User-Agent",
  "requestLogs.detail.entryKind": "入口接口",
  "requestLogs.detail.httpVersion": "下游协议",
  "requestLogs.client.unknown": "未识别",
  "clientTool.claudeCode": "Claude Code",
  "clientTool.claudeDesktop": "Claude Desktop",
  "clientTool.codexCli": "Codex CLI",
  "clientTool.codexDesktop": "Codex Desktop",
  "clientTool.ccRouter": "cc-router (转发)",
  "clientTool.zed": "Zed",
  "clientTool.cursor": "Cursor",
  "clientTool.opencode": "OpenCode",
  "clientTool.anthropicSdkPython": "Anthropic Python SDK",
  "clientTool.anthropicSdkJs": "Anthropic JS SDK",

  "logs.tab.requests": "请求日志",
  "logs.tab.subscriptionEvents": "订阅事件",
  "logs.tab.systemErrors": "系统异常",
  "logs.subscriptionEvents.subtitle": "订阅健康状态机的转换历史,用于追踪何时开始失效。",
  "logs.subscriptionEvents.empty": "暂无订阅状态变更记录。",
  "logs.systemErrors.subtitle": "系统级故障与聚合 503 等无法归到具体请求的事件。",
  "logs.systemErrors.empty": "暂无系统异常。",
  "logs.systemErrors.detailTitle": "系统异常详情",
  "logs.systemErrors.summary": "摘要",
  "logs.systemErrors.payload": "上下文",

  "subscriptions.title": "订阅管理",
  "subscriptions.subtitle": "每个订阅对应一个厂商的 API Key。状态实时反映健康检查结果。",
  "subscriptions.add": "添加订阅",
  "subscriptions.empty.message": "还没有订阅。点击「添加订阅」开始。",
  "subscriptions.empty.action": "添加第一个订阅",
  "subscriptions.col.status": "状态",
  "subscriptions.col.provider": "厂商",
  "subscriptions.col.note": "备注",
  "subscriptions.col.referenced": "引用",
  "subscriptions.col.updatedAt": "更新时间",
  "subscriptions.notUsed": "未使用",
  "subscriptions.custom": "自定义",
  "subscriptions.view": "查看",

  "virtualModels.title": "虚拟模型",
  "virtualModels.subtitle1": "三个固定虚拟模型对应 Claude Code 的模型槽位;",
  "virtualModels.subtitle2": "是兜底,任何其他 model 请求都走这里。",
  "virtualModels.endpointsSuffix": " 端点",
  "virtualModels.mode.label": "调度模式",
  "virtualModels.mode.sequentialHint": "按优先级,失败下降",
  "virtualModels.mode.roundRobinHint": "均匀分发,限流时跳过",
  "virtualModels.addButton": "添加订阅到此虚拟模型",
  "virtualModels.dialog.title": "选择要添加的订阅",
  "virtualModels.dialog.empty": "没有可用的订阅。先到「订阅管理」添加一个。",
  "virtualModels.dialog.add": "添加所选",

  "subscriptionNew.back": "返回",
  "subscriptionNew.backToList": "返回列表",
  "subscriptionNew.welcomeTitle": "欢迎使用 cc-router",
  "subscriptionNew.title": "添加订阅",
  "subscriptionNew.welcomeSubtitle": "添加第一条订阅,我们会自动把它绑定到 4 个虚拟模型,然后跳转到接入指南。",
  "subscriptionNew.subtitle": "把新厂商的 API Key 接入路由器,绑定到虚拟模型槽位。",
  "subscriptionNew.step1": "基本信息",
  "subscriptionNew.step2": "绑定模型",
  "subscriptionNew.field.provider": "厂商",
  "subscriptionNew.providerSelect": "选择厂商",
  "subscriptionNew.customProvider": "自定义 (Anthropic 兼容接口)",
  "subscriptionNew.group.firstParty": "大模型厂商",
  "subscriptionNew.group.secondParty": "AI 应用订阅",
  "subscriptionNew.group.aggregator": "API 分发站",
  "subscriptionNew.group.custom": "自定义",
  "subscriptionNew.customHint": "自定义路径: 一次性填完连接信息和模型 slot, 不走两步向导。",
  "subscriptionNew.customGeminiProvider": "自定义 (Gemini 兼容接口)",
  "subscriptionNew.customGeminiHint": "用于接入 Google AI Studio 或 Gemini 兼容中转站。cc-router 自动把 Anthropic Messages 协议翻译成 Gemini generateContent 调用。",
  "subscriptionNew.geminiBaseUrlHint": "Gemini 端点域名根。AI Studio 官方填 https://generativelanguage.googleapis.com, 中转站填实际域名。",
  "subscriptionNew.geminiMessagesPathHint": "URL 路径模板,必须包含 {model} 占位符。cc-router 会按订阅 slot 替换为真实模型名。",
  "subscriptionNew.geminiAuthLocked": "Gemini 接口固定使用 x-goog-api-key header, API Key 直接填即可,无需选择。",
  "subscriptionNew.errGeminiPathPlaceholder": "Gemini 路径模板必须包含 {model} 占位符",
  "subscriptionNew.customOpenaiProvider": "自定义 (OpenAI Responses 兼容)",
  "subscriptionNew.customOpenaiHint": "用于接入 OpenAI 官方 /v1/responses 或 OpenAI 兼容中转站 (one-api / new-api 等)。cc-router 自动把 Anthropic Messages 协议翻译成 OpenAI Responses 调用, 支持 reasoning 多轮回灌。",
  "subscriptionNew.openaiBaseUrlHint": "OpenAI Responses 端点域名根。官方填 https://api.openai.com, 中转站填实际域名。",
  "subscriptionNew.openaiMessagesPathHint": "URL 路径, 通常是 /v1/responses。中转站可能用不同路径请按其文档填。",
  "subscriptionNew.openaiAuthLocked": "OpenAI Responses 固定使用 Authorization: Bearer header, API Key 直接填即可 (一般是 sk-... 开头)。",
  "subscriptionNew.customOpenaiChatProvider": "自定义 (OpenAI Chat Completions 兼容)",
  "subscriptionNew.customOpenaiChatHint": "用于接入 OpenAI /v1/chat/completions 协议兼容的服务: DeepSeek 官方、Together、Groq、Ollama、各类 one-api / new-api 中转, 以及 OpenAI 官方早期模型 (GPT-4 / 4-turbo)。cc-router 自动把 Anthropic Messages 协议翻译成 Chat Completions 调用, DeepSeek R1 等模型的 reasoning_content 思考过程会显示为 Claude Code 的 thinking 块。",
  "subscriptionNew.openaiChatBaseUrlHint": "Chat Completions 端点域名根。例: OpenAI 官方 https://api.openai.com, DeepSeek https://api.deepseek.com, Together https://api.together.xyz, Groq https://api.groq.com/openai, Ollama http://localhost:11434。",
  "subscriptionNew.openaiChatMessagesPathHint": "URL 路径, 通常是 /v1/chat/completions。中转站可能用不同路径请按其文档填。",
  "subscriptionNew.openaiChatAuthLocked": "OpenAI Chat Completions 固定使用 Authorization: Bearer header, API Key 直接填即可 (一般是 sk-... 开头; Ollama 等无鉴权场景可填任意非空值)。",
  "subscriptionNew.field.endpoint": "接入点",
  "subscriptionNew.endpointSelect": "选择接入点",
  "subscriptionNew.openApiKey": "去官网获取 API Key",
  "subscriptionNew.field.providerName": "厂商显示名",
  "subscriptionNew.providerNameHint": "下拉里看到的厂商名,可后续编辑。",
  "subscriptionNew.providerNamePh": "例如: 我的自建网关",
  "subscriptionNew.baseUrlHint": "不含 /v1/messages 路径,只到域名根。",
  "subscriptionNew.messagesPathHint": "通常是 /v1/messages,部分代理会用别的路径。",
  "subscriptionNew.authMethod": "鉴权方式",
  "subscriptionNew.field.note": "备注名",
  "subscriptionNew.notePh": "例如: MiniMax 主号",
  "subscriptionNew.noteHint": "仅用于本地区分,不会上传到任何地方。",
  "subscriptionNew.slotsLabel": "虚拟模型槽位",
  "subscriptionNew.slotsHint": "这三个 slot 决定 cc-router 把 model-opus / model-sonnet / model-haiku 路由成哪个真实模型字符串。",
  "subscriptionNew.errFillProvider": "请填写厂商显示名",
  "subscriptionNew.errFillBase": "请填写 base URL",
  "subscriptionNew.errFillKey": "请填写 API Key",
  "subscriptionNew.errFillNote": "请填写订阅备注名",
  "subscriptionNew.errFillSlots": "请填写三个虚拟模型槽位的真实模型名",
  "subscriptionNew.errCreate": "创建失败",
  "subscriptionNew.slotPh": "例如: claude-3-5-sonnet-20241022",
  "subscriptionNew.field.chatgptAccount": "ChatGPT 账号",
  "oauth.chatgpt.title": "连接 ChatGPT 账号",
  "oauth.chatgpt.subtitle": "使用 ChatGPT Plus/Pro 订阅的 Codex 额度。授权独立于 Codex CLI, 在 cc-router 内单独保存。",
  "oauth.chatgpt.starting": "正在初始化登录链接…",
  "oauth.chatgpt.instructions": "已为你打开浏览器。请确认网页里显示的代码与下方一致, 然后授权。",
  "oauth.chatgpt.userCodeLabel": "用户代码",
  "oauth.chatgpt.openBrowser": "再次打开浏览器",
  "oauth.chatgpt.waitingForAuth": "等待你在浏览器完成授权…",
  "oauth.chatgpt.connected": "已连接",
  "oauth.chatgpt.failed": "登录失败, 请重试",
  "oauth.chatgpt.noEmail": "ChatGPT 账号",
  "oauth.chatgpt.reconnect": "换个账号",
  "oauth.chatgpt.connectButton": "连接 ChatGPT 账号",
  "oauth.chatgpt.connectHint": "完成授权后, cc-router 会用 ChatGPT 订阅额度运行 Claude Code。本机 Codex CLI 不受影响。",
  "oauth.chatgpt.tosWarning": "⚠️ ChatGPT 订阅原本面向 ChatGPT 自家产品 + Codex CLI 使用, 第三方调用属于灰色地带, OpenAI 保留账号风控权利。建议: 使用副号; 不要短时间高频调用; 触发手机号验证属新设备授权的正常流程。",
  "subscriptionNew.field.kiroCredential": "Kiro 凭据",
  "oauth.kiro.title": "连接 Kiro 账号",
  "oauth.kiro.subtitle": "使用 Kiro IDE 的免费 Claude 额度 (走 AWS CodeWhisperer 后端)。",
  "oauth.kiro.tosWarning": "⚠️ Kiro 订阅原本面向 Kiro IDE / kiro-cli 使用, 第三方调用属于灰色地带, AWS 保留账号风控权利。建议: 不要短时间高频调用; 留意手机号验证属正常流程。",
  "oauth.kiro.tabImport": "从 JSON 导入",
  "oauth.kiro.tabDeviceFlow": "AWS Builder ID 登录",
  "oauth.kiro.importDescription": "如果你已经登录过 Kiro IDE 或运行过 kiro-cli login, 凭据会落盘在 ~/.aws/sso/cache/ 目录下, 直接读取即可。",
  "oauth.kiro.localFilePath": "本地凭据文件路径",
  "oauth.kiro.readFile": "读取",
  "oauth.kiro.importPasted": "导入粘贴的凭据",
  "oauth.kiro.deviceFlowDescription": "通过 AWS SSO OIDC Device Flow 让你在浏览器里完成 Builder ID 授权 (免费账号即可)。完成后 cc-router 会自动收到 refresh_token, 永远不进 JS。",
  "oauth.kiro.startBuilderIdLogin": "启动 AWS Builder ID 登录",
  "oauth.kiro.importing": "正在解析凭据…",
  "oauth.kiro.deviceStarting": "正在初始化登录链接…",
  "oauth.kiro.deviceInstructions": "已为你打开浏览器。请确认页面里显示的代码与下方一致, 然后授权。",
  "oauth.kiro.userCodeLabel": "用户代码",
  "oauth.kiro.openBrowser": "再次打开浏览器",
  "oauth.kiro.waitingForAuth": "等待你在浏览器完成授权…",
  "oauth.kiro.connected": "已连接",
  "oauth.kiro.failed": "登录失败, 请重试",
  "oauth.kiro.reconnect": "换一份凭据",
  "oauth.kiro.connectButton": "连接 Kiro 凭据",
  "oauth.kiro.connectHint": "支持从 Kiro IDE 落盘 JSON 导入或走 AWS Builder ID OAuth。导入后还要确认 4 个伪装字段。",
  "oauth.kiro.credentialReady": "凭据已就绪",
  "oauth.kiro.authMethod": "认证方式",
  "oauth.kiro.profileArnDetected": "✓ 检测到 profileArn, 请求时会自动注入。",
  "oauth.kiro.disguiseTitle": "请求伪装字段",
  "oauth.kiro.disguiseHint": "这些字段会在每次请求时随 user-agent / x-amz-user-agent header 一起发给 AWS, 模拟 Kiro IDE 客户端。默认值跟随 cc-router 升级, 你也可以手动修改 (例如同步真实 IDE 的 machineId 进一步降低风控)。",
  "oauth.kiro.regen": "重新生成",
  "oauth.kiro.confirmAndNext": "确认并继续",
  "oauth.kiro.errPasteEmpty": "请粘贴凭据 JSON",
  "oauth.kiro.sourceFromJson": "来自 JSON 导入",
  "oauth.kiro.sourceFromDeviceFlow": "来自 AWS Builder ID 登录",
  "common.orPasteBelow": "或者粘贴 JSON",
  "common.retry": "重试",

  "subscriptionEdit.notFound": "未找到订阅",
  "subscriptionEdit.referencedPrefix": "引用: ",
  "subscriptionEdit.enabled": "启用",
  "subscriptionEdit.basicInfo": "基本信息",
  "subscriptionEdit.providerLocked": "(不可改)",
  "subscriptionEdit.endpointChangeWarn": "保存后将从模板重新拷贝该 endpoint 的连接信息",
  "subscriptionEdit.providerNamePh": "厂商显示名",
  "subscriptionEdit.authHeaderName": "鉴权 header 名",
  "subscriptionEdit.authHeaderNamePh": "Authorization 或 x-api-key",
  "subscriptionEdit.authHeaderFormat": "鉴权格式",
  "subscriptionEdit.authBearerOption": "Bearer (header 值前加 \"Bearer \")",
  "subscriptionEdit.authRawOption": "Raw (header 值原样填 key)",
  "subscriptionEdit.modelSlotsTitle": "模型槽位",
  "subscriptionEdit.modelCacheUpdated": "模型列表更新: ",
  "subscriptionEdit.testModel": "测试模型: ",
  "subscriptionEdit.stateReset": "✓ 订阅状态已重置为正常",
  "subscriptionEdit.testConn": "测试连接",
  "subscriptionEdit.errSave": "保存失败",
  "subscriptionEdit.keyDialog.title": "修改 API Key",
  "subscriptionEdit.keyDialog.desc": "新 Key 会立即生效。",
  "subscriptionEdit.keyDialog.placeholder": "新的 API Key",
  "subscriptionEdit.deleteDialog.titlePrefix": "删除 \"",
  "subscriptionEdit.deleteDialog.titleSuffix": "\"?",
  "subscriptionEdit.deleteDialog.refByPrefix": "该订阅被 ",
  "subscriptionEdit.deleteDialog.refBySuffix": " 个虚拟模型引用:",
  "subscriptionEdit.deleteDialog.refByOutro": "删除后这些虚拟模型的订阅列表会少一个。",
  "subscriptionEdit.deleteDialog.noRef": "删除订阅会同时清除存储的 API Key。",
  "subscriptionEdit.deleteDialog.confirm": "确认删除",

  "common.relativeTime.justNow": "刚刚",
  "common.relativeTime.minutesAgo": " 分钟前",
  "common.relativeTime.hoursAgo": " 小时前",
  "common.relativeTime.daysAgo": " 天前",

  "subscriptionBalance.title": "余额",
  "subscriptionBalance.refresh": "刷新余额",
  "subscriptionBalance.refreshing": "查询中…",
  "subscriptionBalance.lastUpdatedPrefix": "上次更新于 ",
  "subscriptionBalance.neverFetched": "尚未查询,点击右侧按钮拉取最新余额",
  "subscriptionBalance.errPrefix": "余额查询失败: ",
  "subscriptionBalance.accountUnavailable": "账户当前不可用 (欠费或被限制)",
  "subscriptionBalance.severityLow": "余额偏低",
  "subscriptionBalance.severityCritical": "余额不足",

  "modelSlot.label": "模型槽位",
  "modelSlot.modeAuto": "自动",
  "modelSlot.modeManual": "手动",
  "modelSlot.refresh": "刷新模型列表",
  "modelSlot.errPrefix": "无法获取模型列表:",
  "modelSlot.errSuffix": "。已切换到手动输入。",
  "modelSlot.examplePrefix": "示例:",
  "modelSlot.opus.label": "Opus 槽",
  "modelSlot.opus.hint": "高级任务 / Plan Mode",
  "modelSlot.sonnet.label": "Sonnet 槽",
  "modelSlot.sonnet.hint": "主对话",
  "modelSlot.haiku.label": "Haiku 槽",
  "modelSlot.haiku.hint": "小任务 / 工具调用",
  "modelSlot.placeholder": "请选择模型",
  "modelSlot.historicalSuffix": "(历史值)",
  "modelSlot.historicalTitle": "{model} 不在自动列表中,可能是历史手动输入。如需修改请切到手动模式。",
  "modelSlot.modelIdPh": "填入厂商提供的模型 ID",

  "providerBadge.verified": "已验证",
  "providerBadge.partial": "部分兼容",
  "providerBadge.untested": "未测试",

  "routeFlow.title": "请求路由",
  "routeFlow.live": "实时",
  "routeFlow.offline": "未运行",
  "routeFlow.notBound": "未绑定",
  "routeFlow.providersTitle": "厂商订阅",
  "routeFlow.providersEmpty": "未绑定任何订阅",

  "sortableSub.empty": "暂无订阅,点击下方按钮添加",
  "sortableSub.passthrough": "原样透传请求的 model",
  "sortableSub.dragHandle": "拖拽排序",
  "sortableSub.remove": "移除",

  "subscriptionState.healthy": "正常",
  "subscriptionState.rate_limited": "限流",
  "subscriptionState.quota_exhausted": "配额耗尽",
  "subscriptionState.transient_error": "临时错误",
  "subscriptionState.auth_failed": "凭证失效",
  "subscriptionState.disabled": "已禁用",

  "copyable.copied": "已复制",
  "copyable.copy": "复制",

  "vm.opus.purpose": "高级任务",
  "vm.opus.purposeEn": "Plan Mode",
  "vm.opus.label": "高级任务 / Plan Mode",
  "vm.sonnet.purpose": "主对话",
  "vm.sonnet.purposeEn": "Default chat",
  "vm.sonnet.label": "主对话",
  "vm.haiku.purpose": "小任务",
  "vm.haiku.purposeEn": "Tool calls",
  "vm.haiku.label": "小任务 / 工具调用",
  "vm.fallback.purpose": "兜底",
  "vm.fallback.purposeEn": "Unknown models",
  "vm.fallback.label": "兜底 · 未知模型透传",
  "vm.mode.sequential": "顺序",
  "vm.mode.round_robin": "轮询",

  "validation.baseUrl": "base URL 必须以 http:// 或 https:// 开头",
  "validation.messagesPath": "messages path 必须以 / 开头",

  "sidebar.nav.receipts": "用量小票",

  "receipts.title": "用量小票",
  "receipts.subtitle": "把订阅的 token 用量渲染成可分享的小票快照,默认不显示价格,只展示用量。",
  "receipts.empty": "本时段没有请求数据。",
  "receipts.loadError": "加载小票数据失败",
  "receipts.exportFailed": "导出失败,请重试。",
  "receipts.savedToDownloads": "已保存到下载文件夹",
  "receipts.openDownloads": "打开",

  "receipts.range.last24h": "近 1 天",
  "receipts.range.last7": "近 7 天",
  "receipts.range.last30": "近 30 天",
  "receipts.range.lastYear": "近 1 年",
  "receipts.range.all": "全部",

  "receipts.controls.range.title": "时间范围",
  "receipts.controls.display.title": "显示选项",
  "receipts.controls.display.colorMode": "彩色模式",
  "receipts.controls.display.colorModeDesc": "默认黑白(打印小票感),开启后切换成米色纸张配深棕字体。",
  "receipts.controls.display.showProviderLogo": "显示厂商 logo",
  "receipts.controls.display.showProviderLogoDesc": "在每个子项行的厂商名前加品牌图标(Anthropic / DeepSeek / 智谱 等),黑白模式下自动转灰阶。",
  "receipts.controls.display.showCache": "显示缓存 token",
  "receipts.controls.display.showCacheDesc": "关掉只显示输入 / 输出两行,小票更清爽。",
  "receipts.controls.display.showCounts": "显示请求次数",
  "receipts.controls.display.showCountsDesc": "关掉则只展示 token 数,大项后不再带「156×」。",
  "receipts.controls.display.compactTokens": "紧凑数字（K/M）",
  "receipts.controls.display.compactTokensDesc": "把 token 数字压缩为 K/M 形式（如 12.35K、1.23M），小于 1000 时原样显示。",
  "receipts.controls.display.groupMode.label": "视图模式",
  "receipts.controls.display.groupMode.virtual_model": "按虚拟模型",
  "receipts.controls.display.groupMode.subscription": "按订阅",
  "receipts.controls.display.groupMode.totals_only": "仅汇总",
  "receipts.controls.display.groupMode.desc": "切换小票主体的聚合维度;按订阅 / 仅汇总不再按虚拟模型槽分类。",
  "receipts.controls.filter.title": "数据过滤",
  "receipts.controls.filter.bySubscription": "按订阅",
  "receipts.controls.filter.byProvider": "按厂商",
  "receipts.controls.filter.allSubscriptions": "全部订阅",
  "receipts.controls.filter.allProviders": "全部厂商",
  "receipts.controls.filter.excludeDeleted": "不统计已删除订阅",
  "receipts.controls.filter.excludeDeletedDesc": "勾选后,小票里不展示已经删除的订阅产生的用量,合计自动重算。",
  "receipts.controls.export.title": "导出小票",
  "receipts.controls.export.png": "PNG",
  "receipts.controls.export.pdf": "PDF",
  "receipts.controls.export.html": "HTML",
  "receipts.controls.export.exporting": "导出中…",

  "receipts.slip.header": "USAGE SLIP",
  "receipts.slip.tagline": "多订阅 · Anthropic Messages 端点",
  "receipts.slip.period": "期间",
  "receipts.slip.issued": "出票",
  "receipts.slip.slipNo": "单号",
  "receipts.slip.totalRequests": "总请求数",
  "receipts.slip.totalTokens": "总 TOKEN",
  "receipts.slip.input": "输入",
  "receipts.slip.output": "输出",
  "receipts.slip.cacheCreate": "缓存创建",
  "receipts.slip.cacheRead": "缓存读取",
  "receipts.slip.subtotal": "小计",
  "receipts.slip.empty": "(本档暂无请求)",
  "receipts.slip.deletedSub": "(已删除订阅)",
  "receipts.slip.thanks": "感谢你与 cc-router 同行",
  "receipts.slip.section.bySubscription": "按订阅",
  "receipts.slip.section.byRealModel": "按真实模型"
}
