omniroute 2.8.0 → 2.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/build-manifest.json +2 -2
  3. package/app/.next/prerender-manifest.json +3 -3
  4. package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
  5. package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
  6. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
  32. package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
  35. package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/_global-error.html +2 -2
  40. package/app/.next/server/app/_global-error.rsc +1 -1
  41. package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  42. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  43. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  44. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  45. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  46. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  47. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  48. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  59. package/app/.next/server/chunks/[root-of-the-server]__09c944b3._.js +1 -1
  60. package/app/.next/server/chunks/[root-of-the-server]__167585da._.js +1 -1
  61. package/app/.next/server/chunks/[root-of-the-server]__3972de72._.js +5 -5
  62. package/app/.next/server/chunks/[root-of-the-server]__64bd5d97._.js +1 -1
  63. package/app/.next/server/chunks/[root-of-the-server]__784fb7c5._.js +1 -1
  64. package/app/.next/server/chunks/[root-of-the-server]__7d9b23e7._.js +1 -1
  65. package/app/.next/server/chunks/[root-of-the-server]__80e3bfc3._.js +1 -1
  66. package/app/.next/server/chunks/[root-of-the-server]__84e445b2._.js +2 -2
  67. package/app/.next/server/chunks/[root-of-the-server]__92cb0def._.js +2 -2
  68. package/app/.next/server/chunks/[root-of-the-server]__a630d6ef._.js +5 -5
  69. package/app/.next/server/chunks/[root-of-the-server]__cb8a67d1._.js +1 -1
  70. package/app/.next/server/chunks/[root-of-the-server]__db2f9fe0._.js +1 -1
  71. package/app/.next/server/chunks/[root-of-the-server]__dc47ee64._.js +1 -1
  72. package/app/.next/server/chunks/[root-of-the-server]__f0f9eb3f._.js +2 -2
  73. package/app/.next/server/chunks/_05c48915._.js +1 -1
  74. package/app/.next/server/chunks/_1244636c._.js +5 -5
  75. package/app/.next/server/chunks/_2115d8de._.js +1 -1
  76. package/app/.next/server/chunks/_3ac953eb._.js +1 -1
  77. package/app/.next/server/chunks/_4b8fd853._.js +1 -1
  78. package/app/.next/server/chunks/_68683848._.js +1 -1
  79. package/app/.next/server/chunks/_ee9b677b._.js +1 -1
  80. package/app/.next/server/chunks/open-sse_translator_index_ts_f5fd0821._.js +9 -9
  81. package/app/.next/server/chunks/src_lib_a886ee1f._.js +1 -1
  82. package/app/.next/server/chunks/src_shared_validation_schemas_ts_4e63863a._.js +1 -1
  83. package/app/.next/server/chunks/ssr/[root-of-the-server]__9affb65e._.js +1 -1
  84. package/app/.next/server/chunks/ssr/[root-of-the-server]__a6942102._.js +1 -1
  85. package/app/.next/server/chunks/ssr/_5a9cd299._.js +1 -1
  86. package/app/.next/server/chunks/ssr/src_d3225e36._.js +1 -1
  87. package/app/.next/server/chunks/ssr/src_i18n_messages_zh-CN_json_f4112d90._.js +1 -1
  88. package/app/.next/server/pages/500.html +2 -2
  89. package/app/.next/server/server-reference-manifest.js +1 -1
  90. package/app/.next/server/server-reference-manifest.json +1 -1
  91. package/app/.next/static/chunks/02afac1b585d8219.css +1 -0
  92. package/app/.next/static/chunks/{d3cb88d181c61235.js → 4bed5b394f9dece9.js} +1 -1
  93. package/app/.next/static/chunks/{4f099d0f5b0f00d6.js → b5cc103e16794392.js} +1 -1
  94. package/app/.next/static/chunks/d19ab4efcaddd1db.js +1 -0
  95. package/app/CHANGELOG.md +20 -0
  96. package/app/docs/openapi.yaml +1 -1
  97. package/app/open-sse/executors/kiro.ts +5 -2
  98. package/app/open-sse/handlers/chatCore.ts +11 -3
  99. package/app/open-sse/translator/helpers/toolCallHelper.ts +58 -15
  100. package/app/open-sse/translator/index.ts +10 -3
  101. package/app/open-sse/utils/stream.ts +129 -19
  102. package/app/open-sse/utils/usageTracking.ts +3 -1
  103. package/app/package-lock.json +2 -2
  104. package/app/package.json +1 -1
  105. package/app/src/app/(dashboard)/dashboard/providers/[id]/page.tsx +22 -0
  106. package/app/src/app/api/keys/[id]/route.ts +26 -4
  107. package/app/src/app/api/provider-models/route.ts +3 -1
  108. package/app/src/i18n/messages/zh-CN.json +862 -787
  109. package/app/src/lib/db/models.ts +25 -0
  110. package/app/src/lib/usage/callLogs.ts +6 -2
  111. package/app/src/shared/components/RequestLoggerDetail.tsx +10 -10
  112. package/app/src/shared/validation/schemas.ts +1 -0
  113. package/app/src/sse/handlers/chat.ts +8 -3
  114. package/package.json +1 -1
  115. package/app/.next/static/chunks/194dbd564ba7150b.css +0 -1
  116. package/app/.next/static/chunks/3f3d822837a5ff5f.js +0 -1
  117. /package/app/.next/static/{Y1ARupD8_nbYoMt6WYrBO → JoLoKHY_9DVANe7Qs4D0K}/_buildManifest.js +0 -0
  118. /package/app/.next/static/{Y1ARupD8_nbYoMt6WYrBO → JoLoKHY_9DVANe7Qs4D0K}/_clientMiddlewareManifest.json +0 -0
  119. /package/app/.next/static/{Y1ARupD8_nbYoMt6WYrBO → JoLoKHY_9DVANe7Qs4D0K}/_ssgManifest.js +0 -0
@@ -17,21 +17,21 @@
17
17
  "submit": "提交",
18
18
  "reset": "重置",
19
19
  "copy": "复制",
20
- "copied": "复制了!",
20
+ "copied": "已复制!",
21
21
  "enabled": "启用",
22
- "disabled": "残疾人",
23
- "active": "活跃",
22
+ "disabled": "已禁用",
23
+ "active": "启用中",
24
24
  "inactive": "不活跃",
25
25
  "noData": "无可用数据",
26
26
  "configure": "配置",
27
27
  "manage": "管理",
28
28
  "name": "名称",
29
- "actions": "行动",
29
+ "actions": "操作",
30
30
  "status": "状态",
31
31
  "type": "类型",
32
- "model": "型号",
33
- "models": "型号",
34
- "provider": "提供者",
32
+ "model": "模型",
33
+ "models": "模型",
34
+ "provider": "提供商",
35
35
  "account": "账户",
36
36
  "time": "时间",
37
37
  "details": "详情",
@@ -46,9 +46,9 @@
46
46
  "testConnection": "测试连接",
47
47
  "enable": "启用",
48
48
  "disable": "禁用",
49
- "columns": "专栏",
49
+ "columns": "",
50
50
  "newest": "最新",
51
- "oldest": "最古老的",
51
+ "oldest": "最早",
52
52
  "all": "全部",
53
53
  "none": "无",
54
54
  "yes": "是的",
@@ -61,118 +61,120 @@
61
61
  "sidebar": {
62
62
  "home": "首页",
63
63
  "dashboard": "仪表板",
64
- "providers": "供应商",
64
+ "providers": "提供商",
65
65
  "combos": "组合",
66
- "usage": "用途",
66
+ "autoCombo": "自动组合",
67
+ "usage": "用量",
67
68
  "analytics": "分析",
68
69
  "costs": "成本",
69
70
  "health": "健康",
70
- "limits": "限制和配额",
71
- "cliTools": "CLI工具",
71
+ "limits": "限制与配额",
72
+ "cliTools": "CLI 工具",
72
73
  "media": "媒体",
73
74
  "settings": "设置",
74
- "translator": "翻译者",
75
+ "translator": "翻译器",
76
+ "playground": "演练场",
77
+ "searchTools": "搜索工具",
78
+ "agents": "智能体",
75
79
  "docs": "文档",
76
- "issues": "问题",
77
- "apiManager": "API管理器",
80
+ "issues": "问题反馈",
81
+ "endpoints": "端点",
82
+ "apiManager": "API 管理",
78
83
  "logs": "日志",
79
- "auditLog": "审核日志",
80
- "shutdown": "关机",
81
- "restart": "重新启动",
82
- "shutdownConfirm": "关闭 OmniRoute",
83
- "restartConfirm": "重新启动 OmniRoute",
84
+ "auditLog": "审计日志",
85
+ "shutdown": "停止服务",
86
+ "restart": "重启服务",
87
+ "shutdownConfirm": "确定要停止 OmniRoute 吗?",
88
+ "restartConfirm": "确定要重启 OmniRoute 吗?",
84
89
  "version": "v{version}",
85
90
  "debug": "调试",
86
91
  "system": "系统",
87
92
  "help": "帮助",
88
93
  "serverDisconnected": "服务器已断开连接",
89
- "serverDisconnectedMsg": "代理服务器已停止或正在重新启动。",
94
+ "serverDisconnectedMsg": "代理服务器已停止,或正在重启。",
90
95
  "expandSidebar": "展开侧边栏",
91
- "collapseSidebar": "折叠侧边栏",
92
- "themes": "Themes",
93
- "presetColors": "Popular colors",
94
- "createTheme": "Create theme",
95
- "chooseColor": "Pick one color",
96
- "themeCoral": "Coral",
97
- "themeBlue": "Blue",
98
- "themeRed": "Red",
99
- "themeGreen": "Green",
100
- "themeViolet": "Violet",
101
- "themeOrange": "Orange",
102
- "themeCyan": "Cyan",
103
- "endpoints": "端点",
104
- "playground": "模型试验场",
105
- "agents": "代理",
96
+ "collapseSidebar": "收起侧边栏",
97
+ "themes": "主题",
98
+ "presetColors": "热门配色",
99
+ "createTheme": "创建主题",
100
+ "chooseColor": "选择一种颜色",
101
+ "themeCoral": "珊瑚",
102
+ "themeBlue": "蓝色",
103
+ "themeRed": "红色",
104
+ "themeGreen": "绿色",
105
+ "themeViolet": "紫罗兰",
106
+ "themeOrange": "橙色",
107
+ "themeCyan": "青色",
106
108
  "cliToolsShort": "工具"
107
109
  },
108
110
  "themesPage": {
109
- "title": "Themes",
110
- "description": "Choose a preset theme or create your own with a single color",
111
- "presetColors": "Popular colors",
112
- "customTheme": "Custom theme",
113
- "customThemeDesc": "Click create theme and pick one color",
114
- "createTheme": "Create theme",
115
- "activePreset": "Active theme"
111
+ "title": "主题",
112
+ "description": "选择预设主题,或仅用一种颜色创建自定义主题",
113
+ "presetColors": "热门配色",
114
+ "customTheme": "自定义主题",
115
+ "customThemeDesc": "点击创建主题,然后选择一种颜色",
116
+ "createTheme": "创建主题",
117
+ "activePreset": "当前主题"
116
118
  },
117
119
  "header": {
118
- "logout": "退出",
120
+ "logout": "退出登录",
119
121
  "language": "语言",
120
- "providers": "供应商",
121
- "providerDescription": "管理您的 AI 提供商连接",
122
+ "providers": "提供商",
123
+ "providerDescription": "管理 AI 提供商连接",
122
124
  "combos": "组合",
123
- "comboDescription": "具有后备功能的模型组合",
124
- "usage": "使用与分析",
125
- "usageDescription": "监控您的 API 使用情况、令牌消耗和请求日志",
125
+ "comboDescription": "支持故障回退的模型组合",
126
+ "usage": "用量与分析",
127
+ "usageDescription": "监控 API 用量、Token 消耗和请求日志",
126
128
  "analytics": "分析",
127
- "analyticsDescription": "图表、趋势和评估见解",
128
- "cliTools": "CLI工具",
129
+ "analyticsDescription": "查看图表、趋势和评测洞察",
130
+ "cliTools": "CLI 工具",
129
131
  "cliToolsDescription": "配置 CLI 工具",
130
132
  "home": "首页",
131
- "homeDescription": "欢迎来到 OmniRoute",
133
+ "homeDescription": "欢迎使用 OmniRoute",
132
134
  "endpoint": "端点",
133
- "endpointDescription": "管理代理端点、MCP、A2A и API端点",
134
- "settings": "设置",
135
- "settingsDescription": "管理您的偏好",
136
- "openaiCompatible": "兼容 OpenAI",
137
- "anthropicCompatible": "人择兼容",
138
- "media": "Media",
139
- "mediaDescription": "Generate images, videos, and music",
140
- "themes": "Themes",
141
- "themesDescription": "Choose a color theme for the whole dashboard panel",
135
+ "endpointDescription": "管理代理端点、MCP、A2A API 端点",
142
136
  "mcp": "MCP",
143
- "mcpDescription": "Model Context Protocol server management and tools",
137
+ "mcpDescription": "Model Context Protocol 服务管理与工具",
144
138
  "a2a": "A2A",
145
- "a2aDescription": "Agent-to-Agent protocol tasks and observability"
139
+ "a2aDescription": "Agent-to-Agent 协议任务与可观测性",
140
+ "settings": "设置",
141
+ "settingsDescription": "管理你的偏好设置",
142
+ "openaiCompatible": "OpenAI 兼容",
143
+ "anthropicCompatible": "Anthropic 兼容",
144
+ "media": "媒体",
145
+ "mediaDescription": "生成图像、视频和音乐",
146
+ "themes": "主题",
147
+ "themesDescription": "为整个仪表板选择颜色主题"
146
148
  },
147
149
  "home": {
148
150
  "quickStart": "快速入门",
149
- "quickStartDesc": "只需 4 个步骤即可启动并运行。连接提供商、路线模型、监控一切。",
151
+ "quickStartDesc": "4 个步骤快速上手:连接提供商、路由模型并监控全局运行情况。",
150
152
  "fullDocs": "完整文档",
151
- "step1Title": "1. 创建API密钥",
152
- "step1Desc": "转至 <endpoint>Endpoint</endpoint> -> 注册密钥。每个环境生成一个密钥。",
153
+ "step1Title": "1. 创建 API 密钥",
154
+ "step1Desc": "前往 <endpoint>Endpoint</endpoint> -> Registered Keys。为每个环境生成一个独立密钥。",
153
155
  "step2Title": "2. 连接提供商",
154
- "step2Desc": "在 <providers>Providers</providers> 中添加帐户。支持 OAuth、API 密钥和免费套餐。",
155
- "step3Title": "3. 指出你的客户",
156
+ "step2Desc": "在 <providers>Providers</providers> 中添加账户。支持 OAuth、API Key 和免费套餐。",
157
+ "step3Title": "3. 配置客户端",
156
158
  "step3Desc": "在 IDE 或 API 客户端中将基本 URL 设置为 {url}。",
157
- "step4Title": "4. 监控和优化",
158
- "step4Desc": "在<logs>请求日志</logs>和<analytics>Analytics</analytics>中跟踪令牌、成本和错误。",
159
- "providersOverview": "供应商概览",
160
- "configuredOf": "{configured} 配置了 {total} 可用提供程序",
161
- "noModelsAvailable": "该提供商没有可用的型号。",
159
+ "step4Title": "4. 监控与优化",
160
+ "step4Desc": "在 <logs>请求日志</logs> 和 <analytics>分析</analytics> 中跟踪 Token、成本与错误。",
161
+ "providersOverview": "提供商概览",
162
+ "configuredOf": "{total} 个可用提供商中已配置 {configured} ",
163
+ "noModelsAvailable": "该提供商当前没有可用模型。",
162
164
  "configureFirst": "首先在 {providers} 中配置连接",
163
165
  "configureProvider": "配置提供商",
164
166
  "modelAvailable": "{count} 模型可用",
165
- "modelsAvailable": "{count} 可用型号",
167
+ "modelsAvailable": "{count} 个模型可用",
166
168
  "connectionsActive": "{count} 连接处于活动状态",
167
169
  "connectionsActivePlural": "{count} 连接处于活动状态",
168
- "copyModelName": "复制型号名称",
170
+ "copyModelName": "复制模型名称",
169
171
  "documentation": "文档",
170
172
  "healthMonitor": "健康监测",
171
173
  "reportIssue": "报告问题",
172
174
  "activeError": "{active} 有效 · {errors} 错误",
173
- "oauthLabel": "开放认证",
175
+ "oauthLabel": "OAuth",
174
176
  "apiKeyLabel": "API密钥",
175
- "requestsShort": "{count} 要求",
177
+ "requestsShort": "{count} 次请求",
176
178
  "providerModelsTitle": "{provider} - 模型",
177
179
  "copiedModel": "已复制:{model}",
178
180
  "aliasLabel": "别名"
@@ -182,98 +184,118 @@
182
184
  "overviewDescription": "监控所有提供商和模型的 API 使用模式、令牌消耗、成本和活动趋势。",
183
185
  "evalsDescription": "运行评估套件来测试和验证您的 LLM 端点。比较模型质量、检测回归和基准延迟。",
184
186
  "overview": "概述",
185
- "evals": "埃瓦尔斯"
187
+ "evals": "评测"
186
188
  },
187
189
  "apiManager": {
188
190
  "title": "API 密钥",
189
191
  "createKey": "创建 API 密钥",
190
- "key": "钥匙",
192
+ "key": "密钥",
191
193
  "revokeKey": "撤销密钥",
192
- "revokeConfirm": "您确定要撤销此 API 密钥吗?",
194
+ "revokeConfirm": "确定要撤销这个 API 密钥吗?",
193
195
  "noKeys": "还没有 API 密钥",
194
- "noKeysDesc": "创建您的第一个 API 密钥以验证对端点的请求",
195
- "keyLabel": "钥匙标签",
196
+ "noKeysDesc": "创建你的第一个 API 密钥,用于验证发往端点的请求",
197
+ "keyLabel": "密钥标签",
196
198
  "permissions": "权限",
197
- "expiresAt": "过期",
198
- "never": "从来没有",
199
+ "expiresAt": "过期时间",
200
+ "never": "永不过期",
199
201
  "revoke": "撤销",
200
202
  "showKey": "显示密钥",
201
- "hideKey": "隐藏键",
203
+ "hideKey": "隐藏密钥",
202
204
  "copyKey": "复制 API 密钥",
203
- "allModels": "所有型号",
204
- "selectedModels": "选定型号",
205
+ "allModels": "全部模型",
206
+ "selectedModels": "已选模型",
205
207
  "readOnly": "只读",
206
- "fullAccess": "完全访问权限",
207
- "keyManagement": "API密钥管理",
208
- "keyManagementDesc": "创建和管理 API 密钥以验证对端点的请求",
209
- "totalKeys": "总按键数",
208
+ "fullAccess": "完全访问",
209
+ "keyManagement": "API 密钥管理",
210
+ "keyManagementDesc": "创建和管理用于访问端点的 API 密钥",
211
+ "totalKeys": "密钥总数",
210
212
  "restricted": "受限",
211
213
  "totalRequests": "请求总数",
212
- "modelsAvailable": "可用型号",
213
- "registeredKeys": "注册密钥",
214
- "keysRegistered": "{count} 已注册密钥",
215
- "keyRegistered": "{count} 密钥已注册",
216
- "keysSecurityNote": "每个密钥都隔离使用情况跟踪,并且可以独立撤销。为了安全起见,密钥在创建后会被屏蔽。",
217
- "createFirstKey": "创建你的第一把钥匙",
214
+ "modelsAvailable": "可用模型",
215
+ "registeredKeys": "已注册密钥",
216
+ "keysRegistered": "已注册 {count} 个密钥",
217
+ "keyRegistered": "已注册 {count} 个密钥",
218
+ "keysSecurityNote": "每个密钥的用量跟踪彼此隔离,并且可以单独撤销。出于安全考虑,密钥创建后会被遮罩显示。",
219
+ "createFirstKey": "创建第一个密钥",
218
220
  "name": "名称",
219
- "usage": "用途",
220
- "created": "已创建",
221
- "actions": "行动",
222
- "reqs": "要求",
223
- "neverUsed": "从未使用过",
224
- "deleteConfirm": "删除此 API 密钥吗?",
225
- "usageTips": "使用技巧",
226
- "tipAuth": "使用授权标头中的 API 密钥作为 Bearer YOUR_KEY",
227
- "tipSecure": "密钥在创建过程中仅显示一次 - 安全地存储它们",
228
- "tipSeparate": "为不同的客户端或环境创建单独的密钥",
229
- "tipRestrict": "将密钥限制为特定型号,以实现更好的安全性和成本控制",
230
- "keyName": "按键名称",
231
- "keyNamePlaceholder": "例如,生产密钥、开发密钥",
232
- "keyNameDesc": "选择一个描述性名称来标识此密钥的用途",
221
+ "usage": "用量",
222
+ "created": "创建时间",
223
+ "actions": "操作",
224
+ "reqs": "请求",
225
+ "neverUsed": "从未使用",
226
+ "deleteConfirm": "删除这个 API 密钥?",
227
+ "usageTips": "使用提示",
228
+ "tipAuth": " Authorization 请求头中以 Bearer YOUR_KEY 的形式使用 API 密钥",
229
+ "tipSecure": "密钥只会在创建时显示一次,请妥善保存",
230
+ "tipSeparate": "建议为不同客户端或环境创建独立密钥",
231
+ "tipRestrict": "将密钥限制到特定模型,可提升安全性并更好控制成本",
232
+ "keyName": "密钥名称",
233
+ "keyNamePlaceholder": "例如:生产环境密钥、开发环境密钥",
234
+ "keyNameDesc": "使用清晰的名称标识该密钥的用途",
233
235
  "keyCreated": "API 密钥已创建",
234
236
  "keyCreatedSuccess": "密钥创建成功!",
235
- "keyCreatedNote": "立即复制并存储此密钥 - 它不会再次显示。",
237
+ "keyCreatedNote": "请立即复制并保存此密钥,它不会再次显示。",
236
238
  "done": "完成",
237
239
  "savePermissions": "保存权限",
240
+ "autoResolve": "自动解析",
241
+ "autoResolveDesc": "为这个 API 密钥自动将有歧义的模型名解析到原生提供商。",
242
+ "keyActive": "密钥启用状态",
243
+ "keyActiveDesc": "启用或禁用此 API 密钥。被禁用的密钥会立即返回 403。",
244
+ "accessSchedule": "访问时段",
245
+ "accessScheduleDesc": "将访问限制在一周中的特定日期和时段。",
246
+ "scheduleFrom": "开始时间",
247
+ "scheduleUntil": "结束时间",
248
+ "scheduleDays": "日期",
249
+ "scheduleTimezone": "时区",
250
+ "scheduleTimezoneHint": "使用 IANA 时区名称,例如 America/New_York、Europe/Berlin",
251
+ "scheduleActive": "时段限制",
252
+ "disabled": "已禁用",
253
+ "daySun": "周日",
254
+ "dayMon": "周一",
255
+ "dayTue": "周二",
256
+ "dayWed": "周三",
257
+ "dayThu": "周四",
258
+ "dayFri": "周五",
259
+ "daySat": "周六",
238
260
  "allowAll": "允许全部",
239
- "restrict": "限制",
240
- "allowAllInfo": "该键可以访问所有可用的模型。",
241
- "restrictInfo": "此密钥可以访问 {total} 模型中的 {selected}",
242
- "selected": "已选择 {count}",
261
+ "restrict": "限制访问",
262
+ "allowAllInfo": "该密钥可访问所有可用模型。",
263
+ "restrictInfo": "该密钥可访问 {total} 个模型中的 {selected} 个。",
264
+ "selected": "已选择 {count}",
243
265
  "all": "全部",
244
- "clear": "清除",
266
+ "clear": "清空",
245
267
  "searchModels": "按名称或提供商搜索模型...",
246
- "noModelsFound": "没有找到型号",
247
- "keyNameRequired": "密钥名称为必填项",
248
- "keyNameTooLong": "键名不得超过 {max} 个字符",
249
- "keyNameInvalid": "键名只能包含字母、数字、空格、连字符和下划线",
250
- "invalidKeyName": "键名无效",
268
+ "noModelsFound": "未找到模型",
269
+ "keyNameRequired": "密钥名称不能为空",
270
+ "keyNameTooLong": "密钥名称长度不能超过 {max} 个字符",
271
+ "keyNameInvalid": "密钥名称只能包含字母、数字、空格、连字符和下划线",
272
+ "invalidKeyName": "密钥名称无效",
251
273
  "failedCreateKey": "创建密钥失败",
252
- "failedCreateKeyRetry": "创建密钥失败。请再试一次。",
274
+ "failedCreateKeyRetry": "创建密钥失败,请重试。",
253
275
  "invalidKeyId": "密钥 ID 无效",
254
276
  "failedDeleteKey": "删除密钥失败",
255
- "failedDeleteKeyRetry": "删除密钥失败。请再试一次。",
256
- "invalidModelsSelection": "型号选择无效",
257
- "cannotSelectMoreThanModels": "无法选择超过 {max} 个型号",
277
+ "failedDeleteKeyRetry": "删除密钥失败,请重试。",
278
+ "invalidModelsSelection": "模型选择无效",
279
+ "cannotSelectMoreThanModels": "最多只能选择 {max} 个模型",
258
280
  "failedUpdatePermissions": "更新权限失败",
259
- "failedUpdatePermissionsRetry": "更新权限失败。请再试一次。",
281
+ "failedUpdatePermissionsRetry": "更新权限失败,请重试。",
260
282
  "unknownProvider": "未知",
261
- "copyMaskedKey": "复制屏蔽密钥",
262
- "modelsCount": "{count, plural, one {# model} other {# models}}",
263
- "lastUsedOn": "最后:{date}",
283
+ "copyMaskedKey": "复制遮罩后的密钥",
284
+ "modelsCount": "{count} 个模型",
285
+ "lastUsedOn": "最近使用:{date}",
264
286
  "editPermissions": "编辑权限",
265
- "deleteKey": "删除键",
266
- "model": "{count} 模型",
267
- "models": "{count} 模型",
287
+ "deleteKey": "删除密钥",
288
+ "model": "{count} 个模型",
289
+ "models": "{count} 个模型",
268
290
  "permissionsTitle": "权限:{name}",
269
- "allowAllDesc": "该键可以访问所有可用的模型。",
270
- "restrictDesc": "此密钥可以访问 {totalModels} 模型中的 {selectedCount}",
271
- "selectedCount": "已选择 {count}"
291
+ "allowAllDesc": "该密钥可访问所有可用模型。",
292
+ "restrictDesc": "该密钥可访问 {totalModels} 个模型中的 {selectedCount} 个。",
293
+ "selectedCount": "已选择 {count}"
272
294
  },
273
295
  "auditLog": {
274
296
  "title": "审核日志",
275
297
  "searchPlaceholder": "搜索操作...",
276
- "action": "行动",
298
+ "action": "操作",
277
299
  "actor": "演员",
278
300
  "target": "目标",
279
301
  "ipAddress": "IP地址",
@@ -293,19 +315,55 @@
293
315
  "previous": "上一页"
294
316
  },
295
317
  "media": {
296
- "title": "媒体工作台",
318
+ "title": "媒体",
297
319
  "subtitle": "生成图像、视频和音乐",
298
- "model": "Model",
299
- "prompt": "Prompt",
320
+ "model": "模型",
321
+ "prompt": "提示词",
300
322
  "generate": "生成",
301
- "generating": "Generating...",
302
- "loadingModels": "Loading available models...",
303
- "noModels": "No models available. Configure providers with media capabilities first.",
304
- "error": "Generation Failed",
305
- "result": "Result",
306
- "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.",
307
- "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.",
308
- "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI."
323
+ "generating": "生成中...",
324
+ "loadingModels": "正在加载可用模型...",
325
+ "noModels": "暂无可用模型。请先配置支持媒体能力的提供商。",
326
+ "error": "生成失败",
327
+ "result": "结果",
328
+ "imageDescription": "使用 OpenAIxAITogetherHyperbolicSD WebUIComfyUI 等根据文本提示生成图像。",
329
+ "videoDescription": "通过 ComfyUI SD WebUI 使用 AnimateDiffStable Video Diffusion 创建视频。",
330
+ "musicDescription": "通过 ComfyUI 使用 Stable Audio Open MusicGen 生成音乐。"
331
+ },
332
+ "search": {
333
+ "searchQuery": "搜索词",
334
+ "searchResults": "搜索结果",
335
+ "cachedResult": "已缓存",
336
+ "searchCost": "成本",
337
+ "searchTools": "搜索工具",
338
+ "searchToolsDesc": "支持提供商对比的高级搜索测试",
339
+ "compareProviders": "对比提供商",
340
+ "rerankResults": "结果重排",
341
+ "searchHistory": "搜索历史",
342
+ "urlOverlap": "URL 重叠度",
343
+ "noSearchProviders": "尚未配置搜索提供商。请前往设置添加。",
344
+ "noRerankModels": "没有可用的重排模型",
345
+ "webSearch": "网页搜索",
346
+ "provider": "提供商",
347
+ "searchType": "搜索类型",
348
+ "maxResults": "最大结果数",
349
+ "filters": "筛选条件",
350
+ "country": "国家",
351
+ "language": "语言",
352
+ "timeRange": "时间范围",
353
+ "includeDomains": "包含域名",
354
+ "excludeDomains": "排除域名",
355
+ "safeSearch": "安全搜索",
356
+ "formatted": "格式化视图",
357
+ "rawJson": "JSON",
358
+ "cacheMiss": "未命中缓存",
359
+ "cacheHit": "命中缓存",
360
+ "latency": "延迟",
361
+ "cost": "成本",
362
+ "results": "结果",
363
+ "rerank": "重排",
364
+ "rerankModel": "重排模型",
365
+ "positionDelta": "排名变化",
366
+ "emptyState": "发送搜索请求后即可查看结果"
309
367
  },
310
368
  "cliTools": {
311
369
  "title": "CLI工具",
@@ -334,12 +392,12 @@
334
392
  "yearsAgoShort": "{count}年前",
335
393
  "runtimeCheckFailed": "运行时检查失败",
336
394
  "yourApiKeyPlaceholder": "你的 api 密钥",
337
- "modelPlaceholder": "提供商/型号 ID",
395
+ "modelPlaceholder": "provider/model-id",
338
396
  "configurationSaved": "配置保存成功。",
339
397
  "failedToSave": "保存配置失败。",
340
398
  "noApiKeysCreateOne": "无 API 密钥 - 在“密钥”页面创建一个",
341
399
  "defaultOmnirouteKey": "sk_omniroute(默认)",
342
- "selectModel": "选择型号",
400
+ "selectModel": "选择模型",
343
401
  "selectModelForAlias": "选择 {alias} 的模型",
344
402
  "selectModelForTool": "选择 {tool} 的模型",
345
403
  "select": "选择",
@@ -366,23 +424,23 @@
366
424
  "inactive": "不活跃",
367
425
  "startMitm": "启动中间人",
368
426
  "stopMitm": "停止中间人",
369
- "mitmStarted": "MITM启动成功!",
370
- "mitmStopped": "MITM 成功停止!",
371
- "failedStart": "无法启动 MITM",
372
- "failedStop": "未能阻止 MITM",
427
+ "mitmStarted": "MITM 启动成功!",
428
+ "mitmStopped": "MITM 已成功停止!",
429
+ "failedStart": "启动 MITM 失败",
430
+ "failedStop": "停止 MITM 失败",
373
431
  "saveMappings": "保存映射",
374
432
  "mappingsSaved": "映射已保存!",
375
433
  "failedSaveMappings": "保存映射失败",
376
434
  "howItWorks": "工作原理:",
377
- "antigravityHowWorksDesc": "Antigravity Google 端点发送请求。 MITM 拦截并将它们重定向到 OmniRoute。",
378
- "antigravityStep1": "1. 启动 MITM 通过 OmniRoute 路由请求。",
435
+ "antigravityHowWorksDesc": "Antigravity 会向 Google 端点发起请求,MITM 会拦截这些请求并重定向到 OmniRoute。",
436
+ "antigravityStep1": "1. 启动 MITM,让请求通过 OmniRoute 路由。",
379
437
  "antigravityStep2Prefix": "2. 添加",
380
438
  "antigravityStep2Suffix": "添加到您的主机文件中作为 127.0.0.1。",
381
- "antigravityStep3": "3. 开放Antigravity,请求将被代理。",
439
+ "antigravityStep3": "3. 打开 Antigravity,请求就会被代理。",
382
440
  "sudoPasswordRequiredTitle": "需要 sudo 密码",
383
441
  "sudoPasswordHint": "修改主机文件和系统代理设置需要管理员密码。",
384
- "enterSudoPassword": "输入sudo密码",
385
- "sudoPasswordRequiredError": "需要 sudo 密码。",
442
+ "enterSudoPassword": "输入 sudo 密码",
443
+ "sudoPasswordRequiredError": "必须提供 sudo 密码。",
386
444
  "cancel": "取消",
387
445
  "confirm": "确认",
388
446
  "settingsApplied": "设置应用成功!",
@@ -398,7 +456,7 @@
398
456
  "cliDetectedReady": "{tool} CLI 已检测到并准备就绪",
399
457
  "cliFoundFailedHealthcheck": "找到 {tool} CLI,但运行时运行状况检查失败{reason}。",
400
458
  "installCliPrompt": "请安装 {tool} CLI 以使用此功能。",
401
- "installCodexPrompt": "请安装 Codex CLI 以使用自动应用功能。",
459
+ "installCodexPrompt": "请先安装 Codex CLI,才能使用自动应用功能。",
402
460
  "hide": "隐藏",
403
461
  "howToInstall": "如何安装",
404
462
  "installationGuide": "安装指南",
@@ -408,7 +466,7 @@
408
466
  "current": "当前",
409
467
  "baseUrlPlaceholder": "https://.../v1",
410
468
  "resetToDefault": "重置为默认值",
411
- "providerModelPlaceholder": "提供商/型号 ID",
469
+ "providerModelPlaceholder": "提供商/模型 ID",
412
470
  "apply": "申请",
413
471
  "reset": "重置",
414
472
  "manualConfig": "手动配置",
@@ -421,10 +479,10 @@
421
479
  "applied": "已应用!",
422
480
  "failed": "失败",
423
481
  "resetDone": "重置!",
424
- "omnirouteConfiguredOpenAiCompatible": "OmniRoute 配置为 OpenAI 兼容提供商",
425
- "provider": "提供者",
426
- "model": "型号",
427
- "providers": "供应商",
482
+ "omnirouteConfiguredOpenAiCompatible": "OmniRoute 已配置为 OpenAI 兼容提供商",
483
+ "provider": "提供商",
484
+ "model": "模型",
485
+ "providers": "提供商",
428
486
  "auth": "授权",
429
487
  "noApiKeysAvailable": "没有可用的 API 密钥",
430
488
  "usingDefaultOmniroute": "使用默认值:sk_omniroute",
@@ -442,17 +500,17 @@
442
500
  "deleteProfile": "删除个人资料",
443
501
  "profileNamePlaceholder": "个人资料名称(例如个人帐户)",
444
502
  "saveCurrent": "保存当前",
445
- "codexAuthNotePrefix": "法典用途",
503
+ "codexAuthNotePrefix": "Codex 使用",
446
504
  "codexAuthNoteMiddle": "与",
447
505
  "codexAuthNoteSuffix": "单击“应用”进行自动配置。",
448
506
  "claudeManualConfiguration": "Claude CLI - 手动配置",
449
507
  "codexManualConfiguration": "Codex CLI - 手动配置",
450
508
  "droidManualConfiguration": "Factory Droid - 手动配置",
451
509
  "openClawManualConfiguration": "开爪 - 手动配置",
452
- "clineManualConfiguration": "Cline手动配置",
510
+ "clineManualConfiguration": "Cline - 手动配置",
453
511
  "kiloManualConfiguration": "千码手动配置",
454
512
  "toolDescriptions": {
455
- "antigravity": "带有 MITM 的 Google 反重力 IDE",
513
+ "antigravity": " MITM 的 Google Antigravity IDE",
456
514
  "claude": "人类克劳德代码 CLI",
457
515
  "codex": "OpenAI Codex CLI",
458
516
  "droid": "工厂机器人AI助手",
@@ -461,14 +519,14 @@
461
519
  "kilo": "Kilo Code AI 助手 CLI",
462
520
  "cursor": "光标AI代码编辑器",
463
521
  "continue": "继续AI助手",
464
- "opencode": "OpenCode AI coding agent (Terminal)",
465
- "kiro": "Amazon Kiro — AI-powered IDE"
522
+ "opencode": "OpenCode AI 编码智能体(终端)",
523
+ "kiro": "Amazon Kiro — AI 驱动 IDE"
466
524
  },
467
525
  "guides": {
468
526
  "cursor": {
469
527
  "notes": {
470
- "0": "需要 Cursor Pro 帐户才能使用此功能。",
471
- "1": "Cursor 通过自己的服务器路由请求,因此不支持本地端点。请在“设置”中启用云端点。"
528
+ "0": "使用该功能需要 Cursor Pro 账户。",
529
+ "1": "Cursor 会通过自己的服务器转发请求,因此不支持本地端点。请在设置中启用云端点。"
472
530
  },
473
531
  "steps": {
474
532
  "1": {
@@ -477,7 +535,7 @@
477
535
  },
478
536
  "2": {
479
537
  "title": "启用 OpenAI API",
480
- "desc": "启用“OpenAI API 密钥”选项"
538
+ "desc": "开启 “OpenAI API key” 选项"
481
539
  },
482
540
  "3": {
483
541
  "title": "基本网址"
@@ -490,7 +548,7 @@
490
548
  "desc": "点击“查看所有模型”->“添加自定义模型”"
491
549
  },
492
550
  "6": {
493
- "title": "选择型号"
551
+ "title": "选择模型"
494
552
  }
495
553
  }
496
554
  },
@@ -504,7 +562,7 @@
504
562
  "title": "API密钥"
505
563
  },
506
564
  "3": {
507
- "title": "选择型号"
565
+ "title": "选择模型"
508
566
  },
509
567
  "4": {
510
568
  "title": "添加模型配置",
@@ -515,36 +573,36 @@
515
573
  "opencode": {
516
574
  "steps": {
517
575
  "1": {
518
- "title": "Install OpenCode",
519
- "desc": "Install via npm: npm install -g opencode-ai"
576
+ "title": "安装 OpenCode",
577
+ "desc": "通过 npm 安装:npm install -g opencode-ai"
520
578
  },
521
579
  "2": {
522
- "title": "API Key"
580
+ "title": "API 密钥"
523
581
  },
524
582
  "3": {
525
- "title": "Set Base URL",
583
+ "title": "设置 Base URL",
526
584
  "desc": "opencode config set baseUrl {{baseUrl}}"
527
585
  },
528
586
  "4": {
529
- "title": "Select Model"
587
+ "title": "选择模型"
530
588
  }
531
589
  }
532
590
  },
533
591
  "kiro": {
534
592
  "steps": {
535
593
  "1": {
536
- "title": "Open Kiro Settings",
537
- "desc": "Go to Settings → AI Provider"
594
+ "title": "打开 Kiro 设置",
595
+ "desc": "前往 Settings → AI Provider"
538
596
  },
539
597
  "2": {
540
598
  "title": "Base URL",
541
- "desc": "Paste your OmniRoute endpoint URL"
599
+ "desc": "粘贴你的 OmniRoute 端点 URL"
542
600
  },
543
601
  "3": {
544
- "title": "API Key"
602
+ "title": "API 密钥"
545
603
  },
546
604
  "4": {
547
- "title": "Select Model"
605
+ "title": "选择模型"
548
606
  }
549
607
  }
550
608
  }
@@ -552,25 +610,25 @@
552
610
  },
553
611
  "combos": {
554
612
  "title": "组合",
555
- "description": "创建具有加权路由和后备支持的模型组合",
613
+ "description": "创建支持权重路由与故障回退的模型组合",
556
614
  "createCombo": "创建组合",
557
615
  "editCombo": "编辑组合",
558
616
  "deleteCombo": "删除组合",
559
- "noModels": "没有型号",
560
- "noModelsYet": "尚未添加型号",
561
- "addModel": "添加型号",
562
- "addModelToCombo": "将模型添加到组合",
617
+ "noModels": "没有模型",
618
+ "noModelsYet": "尚未添加模型",
619
+ "addModel": "添加模型",
620
+ "addModelToCombo": "向组合中添加模型",
563
621
  "routingStrategy": "路由策略",
564
622
  "maxRetries": "最大重试次数",
565
- "timeout": "超时(毫秒)",
623
+ "timeout": "超时时间(毫秒)",
566
624
  "healthcheck": "健康检查",
567
625
  "priority": "优先级",
568
626
  "fallback": "回退",
569
- "roundRobin": "循环赛",
627
+ "roundRobin": "轮询",
570
628
  "random": "随机",
571
629
  "leastLatency": "最低延迟",
572
630
  "comboName": "组合名称",
573
- "comboNamePlaceholder": "我的组合",
631
+ "comboNamePlaceholder": "my-combo",
574
632
  "deleteConfirm": "删除这个组合?",
575
633
  "noCombosYet": "还没有组合",
576
634
  "comboCreated": "组合创建成功",
@@ -582,175 +640,175 @@
582
640
  "errorUpdating": "更新组合时出错",
583
641
  "errorDeleting": "删除组合时出错",
584
642
  "testFailed": "测试请求失败",
585
- "failedToggle": "无法切换组合",
643
+ "failedToggle": "切换组合状态失败",
586
644
  "testResults": "测试结果 — {name}",
587
- "resolvedBy": "解决方法:",
588
- "more": "+{count} 更多",
589
- "reqs": "要求",
645
+ "resolvedBy": "最终由以下模型处理:",
646
+ "more": "另有 +{count} ",
647
+ "reqs": "请求",
590
648
  "success": "成功",
591
- "proxyConfigured": "代理已配置",
649
+ "proxyConfigured": "已配置代理",
592
650
  "copyComboName": "复制组合名称",
593
651
  "enableCombo": "启用组合",
594
652
  "disableCombo": "禁用组合",
595
653
  "testCombo": "测试组合",
596
- "duplicate": "重复",
654
+ "duplicate": "复制",
597
655
  "proxyConfig": "代理配置",
598
- "nameRequired": "姓名为必填项",
599
- "nameInvalid": "仅限字母、数字、-、_、/ 和 。允许",
600
- "nameHint": "字母、数字、-、_、/ 和 。允许",
601
- "priorityDesc": "顺序回退:首先尝试模型 1,然后尝试模型 2,依此类推。",
602
- "weightedDesc": "按权重百分比分配流量并进行回退",
603
- "roundRobinDesc": "循环分发:每个请求轮流转到下一个模型",
604
- "randomDesc": "统一随机选择,然后回退到剩余模型",
605
- "leastUsedDesc": "选择请求最少的模型,随着时间的推移平衡负载",
606
- "costOptimizedDesc": "首先根据定价路由至最便宜的型号",
607
- "strictRandom": "Strict Random",
608
- "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling",
609
- "models": "型号",
656
+ "nameRequired": "名称不能为空",
657
+ "nameInvalid": "仅允许字母、数字、-、_、/ 和 .",
658
+ "nameHint": "仅允许字母、数字、-、_、/ 和 .",
659
+ "priorityDesc": "顺序回退:优先尝试模型 1,其次模型 2,以此类推",
660
+ "weightedDesc": "按照权重百分比分配流量,并支持失败回退",
661
+ "roundRobinDesc": "循环分发:每个请求按顺序轮到下一个模型",
662
+ "randomDesc": "均匀随机选择,失败后回退到剩余模型",
663
+ "leastUsedDesc": "优先选择请求数最少的模型,随时间平衡负载",
664
+ "costOptimizedDesc": "根据定价优先路由到最便宜的模型",
665
+ "strictRandom": "严格随机",
666
+ "strictRandomDesc": "洗牌池模式:每个模型使用一次后再重新洗牌",
667
+ "models": "模型",
610
668
  "autoBalance": "自动平衡",
611
669
  "advancedSettings": "高级设置",
612
670
  "retryDelay": "重试延迟(毫秒)",
613
- "concurrencyPerModel": "并发/模型",
614
- "queueTimeout": "队列超时(毫秒)",
615
- "advancedHint": "留空以使用全局默认值。这些会覆盖每个提供商的设置。",
616
- "moveUp": "向上移动",
671
+ "concurrencyPerModel": "每模型并发数",
672
+ "queueTimeout": "排队超时(毫秒)",
673
+ "advancedHint": "留空则使用全局默认值。这些设置会覆盖每个提供商的配置。",
674
+ "moveUp": "上移",
617
675
  "moveDown": "下移",
618
- "removeModel": "删除",
619
- "saving": "正在保存...",
676
+ "removeModel": "移除",
677
+ "saving": "保存中...",
620
678
  "weighted": "加权",
621
- "leastUsed": "最少使用的",
622
- "costOpt": "成本选择",
623
- "strategyGuideTitle": "How to use this strategy",
624
- "strategyGuideWhen": "When to use",
625
- "strategyGuideAvoid": "Avoid when",
626
- "strategyGuideExample": "Example",
679
+ "leastUsed": "最少使用",
680
+ "costOpt": "成本优化",
681
+ "strategyGuideTitle": "如何使用这种策略",
682
+ "strategyGuideWhen": "适用场景",
683
+ "strategyGuideAvoid": "不适用场景",
684
+ "strategyGuideExample": "示例",
627
685
  "strategyGuide": {
628
686
  "priority": {
629
- "when": "You have one preferred model and only want fallback on failure.",
630
- "avoid": "You need request distribution across models.",
631
- "example": "Primary coding model with cheaper backup for outages."
687
+ "when": "你有一个首选模型,只希望在失败时才切换到备用模型。",
688
+ "avoid": "你需要在多个模型之间分配流量。",
689
+ "example": "主力编码模型 + 发生故障时切换到更便宜的备份模型。"
632
690
  },
633
691
  "weighted": {
634
- "when": "You need controlled traffic split across models.",
635
- "avoid": "You cannot maintain accurate weights over time.",
636
- "example": "80% stable model + 20% canary model rollout."
692
+ "when": "你需要在多个模型之间按比例分配流量。",
693
+ "avoid": "你无法长期维护准确的权重。",
694
+ "example": "80% 稳定模型 + 20% 金丝雀模型的发布方案。"
637
695
  },
638
696
  "round-robin": {
639
- "when": "You want predictable and even distribution.",
640
- "avoid": "Models differ too much in latency or cost.",
641
- "example": "Same model on multiple accounts to spread throughput."
697
+ "when": "你希望流量分布可预测且均匀。",
698
+ "avoid": "模型之间的延迟或成本差异很大。",
699
+ "example": "同一模型挂在多个账号上,用于分摊吞吐。"
642
700
  },
643
701
  "random": {
644
- "when": "You want simple distribution with minimal setup.",
645
- "avoid": "You need strict traffic guarantees.",
646
- "example": "Quick prototyping with equivalent models."
702
+ "when": "你只需要简单分流,且不想做太多配置。",
703
+ "avoid": "你需要严格的流量保证。",
704
+ "example": "对等模型之间的快速原型验证。"
647
705
  },
648
706
  "least-used": {
649
- "when": "You want adaptive balancing based on live demand.",
650
- "avoid": "Traffic is too low to benefit from usage balancing.",
651
- "example": "Mixed workloads where one model often gets overloaded."
707
+ "when": "你希望根据实时负载动态均衡。",
708
+ "avoid": "流量太低,无法体现按使用量均衡的价值。",
709
+ "example": "混合负载场景下,某个模型常常更容易过载。"
652
710
  },
653
711
  "cost-optimized": {
654
- "when": "Cost reduction is your top priority.",
655
- "avoid": "Pricing data is missing or outdated.",
656
- "example": "Background or batch jobs where lower cost is preferred."
712
+ "when": "降低成本是你的首要目标。",
713
+ "avoid": "定价数据缺失或已经过期。",
714
+ "example": "后台任务或批处理作业,优先考虑更低成本。"
657
715
  }
658
716
  },
659
717
  "advancedHelp": {
660
- "maxRetries": "How many retries are attempted before failing a request.",
661
- "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.",
662
- "timeout": "Maximum request duration before aborting.",
663
- "healthcheck": "Skips unhealthy models/providers from routing decisions.",
664
- "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.",
665
- "queueTimeout": "How long a request can wait in queue before timing out."
718
+ "maxRetries": "请求失败前最多会尝试多少次重试。",
719
+ "retryDelay": "两次重试之间的初始等待时间。值越大越能降低突发压力。",
720
+ "timeout": "请求被中止前允许的最长持续时间。",
721
+ "healthcheck": "路由决策时跳过不健康的模型或提供商。",
722
+ "concurrencyPerModel": "轮询模式下每个模型允许的最大并发请求数。",
723
+ "queueTimeout": "请求在队列中等待超时前允许停留的最长时间。"
666
724
  },
667
- "templatesTitle": "Quick templates",
668
- "templatesDescription": "Apply a starting profile, then adjust models and config.",
669
- "templateApply": "Apply template",
670
- "templateHighAvailability": "High availability",
671
- "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.",
672
- "templateCostSaver": "Cost saver",
673
- "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.",
674
- "templateBalanced": "Balanced load",
675
- "templateBalancedDesc": "Least-used routing to spread demand over time.",
676
- "usageGuideHide": "Hide",
677
- "usageGuideDontShowAgain": "Don't show again",
678
- "usageGuideShow": "Show guide",
679
- "quickTestTitle": "Combo ready to validate",
680
- "quickTestDescription": "Run a test now to confirm fallback and latency behavior.",
681
- "testNow": "Test now",
682
- "pricingCoverage": "Pricing coverage",
683
- "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.",
684
- "pricingAvailable": "Pricing available",
685
- "pricingMissing": "No pricing",
686
- "pricingAvailableShort": "priced",
687
- "pricingMissingShort": "无价格",
688
- "warningRoundRobinSingleModel": "循环法对于至少 2 个模型最有用。",
689
- "warningCostOptimizedPartialPricing": "只有{priced} {total} 型号有定价。路由可能是部分成本感知的。",
690
- "warningCostOptimizedNoPricing": "没有找到该组合的定价数据。成本优化的路线可能会出乎意料。",
691
- "readinessTitle": "准备好保存了吗?",
692
- "readinessDescription": "在创建或更新此组合之前查看清单。",
725
+ "templatesTitle": "快捷模板",
726
+ "templatesDescription": "先套用一个初始模板,再按需调整模型和配置。",
727
+ "templateApply": "应用模板",
728
+ "templateHighAvailability": "高可用",
729
+ "templateHighAvailabilityDesc": "优先级路由,配合健康检查和安全重试。",
730
+ "templateCostSaver": "节省成本",
731
+ "templateCostSaverDesc": "面向预算优先场景的成本优化路由。",
732
+ "templateBalanced": "均衡负载",
733
+ "templateBalancedDesc": "使用最少使用策略,随时间均衡需求。",
734
+ "usageGuideHide": "隐藏",
735
+ "usageGuideDontShowAgain": "不再显示",
736
+ "usageGuideShow": "显示指南",
737
+ "quickTestTitle": "组合已准备好验证",
738
+ "quickTestDescription": "现在运行一次测试,确认回退与延迟行为是否符合预期。",
739
+ "testNow": "立即测试",
740
+ "pricingCoverage": "定价覆盖率",
741
+ "pricingCoverageHint": "成本优化策略在组合内所有模型都有定价信息时效果最佳。",
742
+ "pricingAvailable": "已有定价",
743
+ "pricingMissing": "无定价",
744
+ "pricingAvailableShort": "已定价",
745
+ "pricingMissingShort": "无定价",
746
+ "warningRoundRobinSingleModel": "轮询策略至少有 2 个模型时才最有价值。",
747
+ "warningCostOptimizedPartialPricing": "{total} 个模型中,只有 {priced} 个有定价信息。路由可能只具备部分成本感知能力。",
748
+ "warningCostOptimizedNoPricing": "该组合未找到任何定价数据。成本优化策略的路由结果可能不符合预期。",
749
+ "readinessTitle": "可以保存了吗?",
750
+ "readinessDescription": "在创建或更新组合前,请先检查以下项目。",
693
751
  "readinessCheckName": "组合名称有效",
694
- "readinessCheckModels": "至少选择一种型号",
695
- "readinessCheckWeights": "加权总和为100%",
696
- "readinessCheckWeightsOptional": "不需要重量规则",
697
- "readinessCheckPricing": "定价数据可用",
698
- "readinessCheckPricingOptional": "不需要定价规则",
699
- "saveBlockedTitle": "在修复以下项目之前,保存将被阻止:",
700
- "saveBlockName": "定义组合名称。",
701
- "saveBlockModels": "添加至少一种模型。",
702
- "saveBlockWeighted": "将权重设置为 100%(当前:{total}%)。",
703
- "saveBlockPricing": "添加至少一种型号的定价或选择不同的策略。",
704
- "recommendationsLabel": "Recommended setup",
705
- "applyRecommendations": "Apply recommendations",
706
- "recommendationsUpdated": "Recommendations updated for {strategy}.",
707
- "recommendationsApplied": "Recommendations applied to this combo.",
752
+ "readinessCheckModels": "至少选择了一个模型",
753
+ "readinessCheckWeights": "加权总和为 100%",
754
+ "readinessCheckWeightsOptional": "当前策略无需权重规则",
755
+ "readinessCheckPricing": "已有定价数据",
756
+ "readinessCheckPricingOptional": "当前策略无需定价规则",
757
+ "saveBlockedTitle": "以下问题修复前无法保存:",
758
+ "saveBlockName": "请先填写组合名称。",
759
+ "saveBlockModels": "请至少添加一个模型。",
760
+ "saveBlockWeighted": "请将权重总和设置为 100%(当前:{total}%)。",
761
+ "saveBlockPricing": "请至少为一个模型补充定价信息,或改用其他策略。",
762
+ "recommendationsLabel": "推荐配置",
763
+ "applyRecommendations": "应用推荐",
764
+ "recommendationsUpdated": "已为 {strategy} 更新推荐配置。",
765
+ "recommendationsApplied": "推荐配置已应用到当前组合。",
708
766
  "strategyRecommendations": {
709
767
  "priority": {
710
- "title": "Fail-safe baseline",
711
- "description": "Use one primary model and keep fallback chain short and reliable.",
712
- "tip1": "Put your most reliable model first.",
713
- "tip2": "Keep 1-2 backup models with similar quality.",
714
- "tip3": "Use safe retries to absorb transient provider failures."
768
+ "title": "稳妥基线",
769
+ "description": "使用一个主模型,并保持回退链路简短且可靠。",
770
+ "tip1": "把最可靠的模型放在第一位。",
771
+ "tip2": "保留 1 2 个质量相近的备用模型。",
772
+ "tip3": "开启安全重试,吸收临时性的提供商故障。"
715
773
  },
716
774
  "weighted": {
717
- "title": "Controlled traffic split",
718
- "description": "Great for canary rollouts and gradual migration between models.",
719
- "tip1": "Start with conservative split like 90/10.",
720
- "tip2": "Keep the total at 100% and auto-balance after changes.",
721
- "tip3": "Monitor success and latency before increasing canary weight."
775
+ "title": "可控流量分配",
776
+ "description": "非常适合金丝雀发布和模型渐进迁移。",
777
+ "tip1": "建议从 90/10 这样的保守配比开始。",
778
+ "tip2": "始终保持总权重为 100%,并在调整后自动平衡。",
779
+ "tip3": "在提高金丝雀权重前,先观察成功率和延迟。"
722
780
  },
723
781
  "round-robin": {
724
- "title": "Predictable load sharing",
725
- "description": "Best when models are equivalent and you need smooth distribution.",
726
- "tip1": "Use at least 2 models.",
727
- "tip2": "Set concurrency limits to avoid burst overload.",
728
- "tip3": "Use queue timeout to fail fast under saturation."
782
+ "title": "可预测的负载分摊",
783
+ "description": "适合模型能力接近、且需要平滑分布流量的场景。",
784
+ "tip1": "至少使用 2 个模型。",
785
+ "tip2": "设置并发限制,避免突发流量打满单个模型。",
786
+ "tip3": "结合队列超时,在饱和时快速失败。"
729
787
  },
730
788
  "random": {
731
- "title": "Quick spread with low setup",
732
- "description": "Use when you need simple distribution without strict guarantees.",
733
- "tip1": "Use models with similar latency profiles.",
734
- "tip2": "Keep retries enabled to absorb random misses.",
735
- "tip3": "Prefer this for experimentation, not strict SLAs."
789
+ "title": "低配置快速分散",
790
+ "description": "适用于不需要严格保证、只想简单分流的场景。",
791
+ "tip1": "尽量选择延迟特征相近的模型。",
792
+ "tip2": "保留重试机制,以吸收随机命中的失败。",
793
+ "tip3": "更适合实验场景,不建议用于严格 SLA。"
736
794
  },
737
795
  "least-used": {
738
- "title": "Adaptive balancing",
739
- "description": "Routes to less-used models to reduce hotspots over time.",
740
- "tip1": "Works better under continuous traffic.",
741
- "tip2": "Combine with health checks for safer balancing.",
742
- "tip3": "Track per-model usage to validate distribution gains."
796
+ "title": "自适应均衡",
797
+ "description": "优先路由到使用更少的模型,随着时间降低热点。",
798
+ "tip1": "持续稳定流量下效果更好。",
799
+ "tip2": "结合健康检查,能获得更稳妥的均衡效果。",
800
+ "tip3": "跟踪各模型用量,验证分布改善情况。"
743
801
  },
744
802
  "cost-optimized": {
745
- "title": "Budget-first routing",
746
- "description": "Routes to lower-cost models when pricing metadata is available.",
747
- "tip1": "Ensure pricing coverage for all selected models.",
748
- "tip2": "Keep a quality fallback for hard prompts.",
749
- "tip3": "Use for batch/background jobs where cost is the main KPI."
803
+ "title": "预算优先路由",
804
+ "description": "在具备定价元数据时,优先路由到成本更低的模型。",
805
+ "tip1": "确保所有已选模型都具备定价信息。",
806
+ "tip2": "为高难度提示保留一个质量更高的回退模型。",
807
+ "tip3": "适合批处理或后台任务等成本是主要指标的场景。"
750
808
  }
751
809
  },
752
- "templateFreeStack": "Free Stack ($0)",
753
- "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), iFlow (5 models), Qwen (4 models), Gemini CLI. Zero cost, never stops coding."
810
+ "templateFreeStack": "免费栈($0",
811
+ "templateFreeStackDesc": "在所有免费提供商之间进行轮询:KiroClaude)、iFlow5 个模型)、Qwen4 个模型)、Gemini CLI。零成本,编码不中断。"
754
812
  },
755
813
  "costs": {
756
814
  "title": "成本",
@@ -758,242 +816,259 @@
758
816
  "totalCost": "总成本",
759
817
  "breakdown": "成本明细",
760
818
  "noData": "无成本数据",
761
- "byModel": "按型号",
819
+ "byModel": "按模型",
762
820
  "byProvider": "按提供商"
763
821
  },
764
822
  "endpoint": {
765
- "title": "API端点",
823
+ "title": "API 端点",
766
824
  "available": "可用端点",
767
825
  "cloudProxy": "云代理",
768
- "disableConfirm": "您确定要禁用云代理吗?",
769
- "baseUrl": "基本网址",
770
- "apiKeyLabel": "API密钥",
771
- "registeredKeys": "注册密钥",
772
- "chatCompletions": "聊天完成",
773
- "responses": "回应",
774
- "listModels": "列出型号",
775
- "usingCloudProxy": "使用云代理",
776
- "usingLocalServer": "使用本地服务器",
826
+ "disableConfirm": "确定要禁用云代理吗?",
827
+ "baseUrl": "Base URL",
828
+ "apiKeyLabel": "API 密钥",
829
+ "registeredKeys": "已注册密钥",
830
+ "chatCompletions": "Chat Completions",
831
+ "responses": "Responses",
832
+ "listModels": "列出模型",
833
+ "usingCloudProxy": "当前使用云代理",
834
+ "usingLocalServer": "当前使用本地服务器",
777
835
  "machineId": "机器 ID:{id}...",
778
- "disableCloud": "禁用云",
779
- "enableCloud": "启用云",
780
- "modelsAcrossEndpoints": "{endpoints} 端点的 {models} 模型",
781
- "chatDesc": "与所有提供商的流式和非流式聊天",
782
- "embeddings": "嵌入",
783
- "embeddingsDesc": "用于搜索和 RAG 管道的文本嵌入",
836
+ "disableCloud": "禁用云端",
837
+ "enableCloud": "启用云端",
838
+ "modelsAcrossEndpoints": "{endpoints} 个端点共提供 {models} 个模型",
839
+ "chatDesc": "支持所有提供商的流式与非流式聊天",
840
+ "embeddings": "Embeddings",
841
+ "embeddingsDesc": "用于搜索和 RAG 流程的文本向量",
784
842
  "imageGeneration": "图像生成",
785
843
  "imageDesc": "根据文本提示生成图像",
786
- "rerank": "重新排序",
787
- "rerankDesc": "按与查询的相关性对文档重新排序",
844
+ "rerank": "重排",
845
+ "rerankDesc": "按与查询的相关性重新排序文档",
788
846
  "audioTranscription": "音频转录",
789
847
  "audioTranscriptionDesc": "将音频文件转录为文本(Whisper)",
790
- "textToSpeech": "文字转语音",
791
- "textToSpeechDesc": "将文本转换为听起来自然的语音",
792
- "moderations": "节制",
793
- "moderationsDesc": "内容审核和安全分级",
794
- "responsesDesc": "用于 Codex 和高级智能体工作流的 OpenAI Responses API",
795
- "listModelsDesc": "列出所有已连接提供商的所有可用模型",
848
+ "textToSpeech": "文本转语音",
849
+ "textToSpeechDesc": "将文本转换为自然语音",
850
+ "moderations": "内容审核",
851
+ "moderationsDesc": "内容安全审核与分类",
852
+ "responsesDesc": "适用于 Codex 和高级智能体工作流的 OpenAI Responses API",
853
+ "listModelsDesc": "列出所有已连接提供商下的可用模型",
796
854
  "settingsApiDesc": "通过 API 读取和修改 OmniRoute 配置",
797
- "settingsApi": "Settings API",
855
+ "settingsApi": "设置 API",
798
856
  "categoryCore": "核心 API",
799
- "categoryMedia": "媒体和多模态",
800
- "categoryUtility": "实用工具和管理",
857
+ "categoryMedia": "媒体与多模态",
858
+ "categorySearch": "搜索与发现",
859
+ "categoryUtility": "工具与管理",
860
+ "webSearch": "网页搜索",
861
+ "webSearchDesc": "统一接入多个提供商的网页搜索,支持自动故障转移与缓存",
862
+ "searchProvider": "搜索提供商",
863
+ "searchProviderDesc": "该提供商会用于 `POST /v1/search` 的网页搜索。无需配置模型,只要连接 API 密钥即可使用。",
801
864
  "enableCloudTitle": "启用云代理",
802
- "whatYouGet": "你会得到什么",
803
- "cloudBenefitAccess": "从世界任何地方访问您的 API",
804
- "cloudBenefitShare": "轻松与您的团队共享端点",
865
+ "whatYouGet": "启用后可获得",
866
+ "cloudBenefitAccess": "从世界任何地方访问你的 API",
867
+ "cloudBenefitShare": "方便与团队共享端点",
805
868
  "cloudBenefitPorts": "无需开放端口或配置防火墙",
806
- "cloudBenefitEdge": "快速的全球边缘网络",
807
- "cloudSessionNote": "云会将您的身份验证会话保留 1 天。如果不使用,它将被自动删除。",
808
- "cloudUnstableNote": "目前,云在某些情况下使用 Claude Code OAuth 不稳定。",
869
+ "cloudBenefitEdge": "全球边缘网络加速",
870
+ "cloudSessionNote": "云端会保留你的认证会话 1 天;若未使用,将自动删除。",
871
+ "cloudUnstableNote": "目前云端在部分 Claude Code OAuth 场景下仍不够稳定。",
809
872
  "cloudConnected": "云代理已连接!",
810
- "connectingToCloud": "正在连接到云...",
873
+ "connectingToCloud": "正在连接云端...",
811
874
  "verifyingConnection": "正在验证连接...",
812
- "connecting": "正在连接...",
813
- "verifying": "正在验证...",
875
+ "connecting": "连接中...",
876
+ "verifying": "验证中...",
814
877
  "connected": "已连接!",
815
878
  "disableCloudTitle": "禁用云代理",
816
- "disableWarning": "所有身份验证会话都将从云中删除。",
879
+ "disableWarning": "所有认证会话都会从云端删除。",
817
880
  "syncingData": "正在同步最新数据...",
818
- "disablingCloud": "禁用云...",
819
- "syncing": "正在同步...",
820
- "disabling": "禁用...",
821
- "cloudConnectedVerified": "云代理已连接并已验证!",
822
- "connectedVerificationPending": "已连接 — 待验证",
823
- "connectedVerificationPendingWithError": "已连接 — 验证待处理:{error}",
824
- "cloudDisabledSuccess": "云禁用成功",
881
+ "disablingCloud": "正在禁用云端...",
882
+ "syncing": "同步中...",
883
+ "disabling": "禁用中...",
884
+ "cloudConnectedVerified": "云代理已连接并验证成功!",
885
+ "connectedVerificationPending": "已连接,等待验证",
886
+ "connectedVerificationPendingWithError": "已连接,等待验证:{error}",
887
+ "cloudDisabledSuccess": "云端已成功禁用",
825
888
  "syncedSuccess": "同步成功",
826
- "failedDisable": "禁用云失败",
827
- "failedEnable": "启用云失败",
828
- "cloudRequestTimeout": "云请求超时",
829
- "cloudRequestFailed": "云请求失败",
830
- "cloudWorkerUnreachable": "无法联系云工作人员。确保云服务正在运行(npm run dev in /cloud)。",
889
+ "failedDisable": "禁用云端失败",
890
+ "failedEnable": "启用云端失败",
891
+ "cloudRequestTimeout": "云端请求超时",
892
+ "cloudRequestFailed": "云端请求失败",
893
+ "cloudWorkerUnreachable": "无法连接到云 Worker。请确认云服务已运行(在 `/cloud` 中执行 `npm run dev`)。",
831
894
  "connectionFailed": "连接失败",
832
- "syncFailed": "云数据同步失败",
895
+ "syncFailed": "同步云端数据失败",
833
896
  "providerModelsTitle": "{provider} — 模型",
834
- "noModelsForProvider": "该提供商没有可用的型号。",
897
+ "noModelsForProvider": "该提供商当前没有可用模型。",
835
898
  "chat": "聊天",
836
- "embedding": "嵌入",
837
- "image": "图片",
838
- "custom": "定制",
839
- "modelsCount": "{count, plural, one {# model} other {# models}}",
840
- "sectionTitle": "积分面",
841
- "sectionDescription": "OpenAI 兼容的 API 和操作协议端点",
842
- "tabApis": "兼容 OpenAI API",
899
+ "embedding": "向量",
900
+ "image": "图像",
901
+ "custom": "自定义",
902
+ "modelsCount": "{count} 个模型",
903
+ "sectionTitle": "集成入口",
904
+ "sectionDescription": "OpenAI 兼容 API 与操作协议端点",
905
+ "tabApis": "OpenAI 兼容 API",
843
906
  "tabProtocols": "协议",
844
- "tabsAria": "端点部分",
907
+ "tabsAria": "端点分区",
845
908
  "protocolsTitle": "协议",
846
- "protocolsDescription": "MCP 和 A2A 是具有专用可观察性和控制功能的一流端点。",
847
- "mcpCardTitle": "MCP服务器",
848
- "mcpCardDescription": "基于 stdio 的模型上下文协议",
849
- "a2aCardTitle": "A2A服务器",
850
- "a2aCardDescription": "Agent2Agent JSON-RPC endpoint",
851
- "protocolToolsLabel": "Tools",
852
- "protocolTasksLabel": "Tasks",
853
- "protocolActiveStreamsLabel": "Active streams",
854
- "protocolLastActivity": "Last activity",
855
- "quickStart": "Quick Start",
856
- "openMcpDashboard": "Open MCP management",
857
- "openA2aDashboard": "Open A2A management",
858
- "mcpQuickStartTitle": "MCP Quick Start",
859
- "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.",
860
- "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.",
861
- "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.",
862
- "a2aQuickStartTitle": "A2A Quick Start",
863
- "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.",
864
- "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.",
865
- "a2aQuickStartStep3": "Track and control tasks using `tasks/get` and `tasks/cancel`.",
866
- "completionsLegacy": "Completions (Legacy)",
867
- "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format"
909
+ "protocolsDescription": "MCP 和 A2A 是一等端点,具备专用的可观测与控制能力。",
910
+ "mcpCardTitle": "MCP 服务",
911
+ "mcpCardDescription": "基于 stdio 的 Model Context Protocol",
912
+ "a2aCardTitle": "A2A 服务",
913
+ "a2aCardDescription": "Agent2Agent JSON-RPC 端点",
914
+ "protocolToolsLabel": "工具数",
915
+ "protocolTasksLabel": "任务数",
916
+ "protocolActiveStreamsLabel": "活跃流数",
917
+ "protocolLastActivity": "最近活动",
918
+ "quickStart": "快速开始",
919
+ "openMcpDashboard": "打开 MCP 管理",
920
+ "openA2aDashboard": "打开 A2A 管理",
921
+ "mcpQuickStartTitle": "MCP 快速开始",
922
+ "mcpQuickStartStep1": "通过 `omniroute --mcp` 启动 MCP 服务。",
923
+ "mcpQuickStartStep2": "将你的 MCP 客户端配置为通过 stdio 传输连接。",
924
+ "mcpQuickStartStep3": "调用 `omniroute_get_health`、`omniroute_list_combos` 等工具验证连通性。",
925
+ "a2aQuickStartTitle": "A2A 快速开始",
926
+ "a2aQuickStartStep1": "通过 `/.well-known/agent.json` 发现 Agent Card。",
927
+ "a2aQuickStartStep2": " `POST /a2a` 发送 `message/send` `message/stream` JSON-RPC 请求。",
928
+ "a2aQuickStartStep3": "使用 `tasks/get` `tasks/cancel` 跟踪和控制任务。",
929
+ "completionsLegacy": "Completions(旧版)",
930
+ "completionsLegacyDesc": "旧版 OpenAI 文本补全接口,同时接受 `prompt` 字符串和 `messages` 数组格式"
931
+ },
932
+ "endpoints": {
933
+ "tabProxy": "端点代理",
934
+ "tabApiEndpoints": "API 端点",
935
+ "apiEndpointsTitle": "API 端点",
936
+ "apiEndpointsDescription": "可被其他应用程序和服务使用的后端API端点。",
937
+ "comingSoon": "即将推出",
938
+ "plannedFeatures": "计划的功能",
939
+ "featureRestApi": "REST API目录与交互式文档",
940
+ "featureWebhooks": "Webhook配置和事件订阅",
941
+ "featureSwagger": "OpenAPI / Swagger规范自动生成",
942
+ "featureAuth": "每个端点的API密钥和OAuth范围管理"
868
943
  },
869
944
  "mcpDashboard": {
870
- "loading": "Loading MCP dashboard...",
871
- "activate": "activate",
872
- "deactivate": "deactivate",
873
- "confirmSwitchCombo": "Confirm {action} combo \"{combo}\"?",
874
- "switchComboFailed": "Failed to switch combo state.",
875
- "switchComboSuccess": "Combo \"{combo}\" updated.",
876
- "confirmApplyProfile": "Apply resilience profile \"{profile}\"?",
877
- "applyProfileFailed": "Failed to apply resilience profile.",
878
- "applyProfileSuccess": "Profile \"{profile}\" applied.",
879
- "confirmResetBreakers": "Reset all circuit breakers?",
880
- "resetBreakersFailed": "Failed to reset circuit breakers.",
881
- "resetBreakersSuccess": "Circuit breakers reset.",
882
- "processStatus": "Process status",
883
- "online": "Online",
884
- "offline": "Offline",
945
+ "loading": "正在加载 MCP 仪表板...",
946
+ "activate": "启用",
947
+ "deactivate": "停用",
948
+ "confirmSwitchCombo": "确定要将组合“{combo}”设为{action}吗?",
949
+ "switchComboFailed": "切换组合状态失败。",
950
+ "switchComboSuccess": "组合“{combo}”已更新。",
951
+ "confirmApplyProfile": "确定要应用弹性配置“{profile}”吗?",
952
+ "applyProfileFailed": "应用弹性配置失败。",
953
+ "applyProfileSuccess": "已应用配置“{profile}”。",
954
+ "confirmResetBreakers": "确定要重置全部断路器吗?",
955
+ "resetBreakersFailed": "重置断路器失败。",
956
+ "resetBreakersSuccess": "断路器已重置。",
957
+ "processStatus": "进程状态",
958
+ "online": "在线",
959
+ "offline": "离线",
885
960
  "pid": "PID",
886
- "sessionUptime": "Session uptime",
887
- "lastHeartbeat": "Last heartbeat",
888
- "activity24h": "Activity (24h)",
889
- "totalCalls": "Total calls",
890
- "successRate": "Success rate",
891
- "avgLatency": "Avg latency",
892
- "topTools": "Top tools",
893
- "noToolCalls24h": "No tool calls in the last 24 hours.",
894
- "runtimeDetails": "Runtime details",
895
- "transport": "Transport",
896
- "scopesEnforced": "Scopes enforced",
897
- "yes": "yes",
898
- "no": "no",
899
- "lastCall": "Last call",
900
- "heartbeatPath": "Heartbeat path",
901
- "operationalControls": "Operational controls",
902
- "switchCombo": "Switch combo",
903
- "inactive": "inactive",
904
- "active": "active",
905
- "activateCombo": "Activate combo",
906
- "deactivateCombo": "Deactivate combo",
907
- "applyResilienceProfile": "Apply resilience profile",
908
- "profileAggressive": "aggressive",
909
- "profileBalanced": "balanced",
910
- "profileConservative": "conservative",
911
- "applyProfile": "Apply profile",
912
- "resetCircuitBreakers": "Reset circuit breakers",
913
- "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.",
914
- "resetAllBreakers": "Reset all breakers",
915
- "toolsAndScopes": "Tools and scopes",
916
- "tableTool": "Tool",
917
- "tableScopes": "Scopes",
918
- "tablePhase": "Phase",
919
- "tableAudit": "Audit",
920
- "auditLog": "Audit log",
921
- "auditSummary": "Calls: {total} | page {page} of {totalPages}",
922
- "allTools": "All tools",
923
- "allResults": "All results",
924
- "success": "Success",
925
- "failure": "Failure",
961
+ "sessionUptime": "会话运行时长",
962
+ "lastHeartbeat": "最近心跳",
963
+ "activity24h": " 24 小时活动",
964
+ "totalCalls": "调用总数",
965
+ "successRate": "成功率",
966
+ "avgLatency": "平均延迟",
967
+ "topTools": "热门工具",
968
+ "noToolCalls24h": "最近 24 小时没有工具调用。",
969
+ "runtimeDetails": "运行时详情",
970
+ "transport": "传输方式",
971
+ "scopesEnforced": "已启用作用域控制",
972
+ "yes": "",
973
+ "no": "",
974
+ "lastCall": "最近调用",
975
+ "heartbeatPath": "心跳文件路径",
976
+ "operationalControls": "运行控制",
977
+ "switchCombo": "切换组合",
978
+ "inactive": "未启用",
979
+ "active": "已启用",
980
+ "activateCombo": "启用组合",
981
+ "deactivateCombo": "停用组合",
982
+ "applyResilienceProfile": "应用弹性配置",
983
+ "profileAggressive": "激进",
984
+ "profileBalanced": "平衡",
985
+ "profileConservative": "保守",
986
+ "applyProfile": "应用配置",
987
+ "resetCircuitBreakers": "重置断路器",
988
+ "resetCircuitBreakersHelp": "清除当前断路器状态及提供商失败计数。",
989
+ "resetAllBreakers": "重置全部断路器",
990
+ "toolsAndScopes": "工具与作用域",
991
+ "tableTool": "工具",
992
+ "tableScopes": "作用域",
993
+ "tablePhase": "阶段",
994
+ "tableAudit": "审计",
995
+ "auditLog": "审计日志",
996
+ "auditSummary": "调用数:{total}|第 {page} / {totalPages}",
997
+ "allTools": "全部工具",
998
+ "allResults": "全部结果",
999
+ "success": "成功",
1000
+ "failure": "失败",
926
1001
  "apiKeyIdPlaceholder": "apiKeyId",
927
- "loadingAuditEntries": "Loading audit entries...",
928
- "noAuditEntriesForFilters": "No audit entries found for current filters.",
929
- "tableTimestamp": "Timestamp",
930
- "tableDuration": "Duration",
931
- "tableResult": "Result",
932
- "tableApiKey": "API key",
933
- "failed": "failed",
934
- "previous": "Previous",
935
- "next": "Next"
1002
+ "loadingAuditEntries": "正在加载审计记录...",
1003
+ "noAuditEntriesForFilters": "当前筛选条件下没有审计记录。",
1004
+ "tableTimestamp": "时间戳",
1005
+ "tableDuration": "耗时",
1006
+ "tableResult": "结果",
1007
+ "tableApiKey": "API 密钥",
1008
+ "failed": "失败",
1009
+ "previous": "上一页",
1010
+ "next": "下一页"
936
1011
  },
937
1012
  "a2aDashboard": {
938
- "loading": "Loading A2A dashboard...",
939
- "confirmCancelTask": "Cancel task {taskId}?",
940
- "cancelTaskFailed": "Failed to cancel task.",
941
- "cancelTaskSuccess": "Task {taskId} cancelled.",
942
- "smokeSendFailed": "message/send smoke test failed.",
943
- "smokeSendSuccessWithTask": "message/send ok (task {taskId}).",
944
- "smokeSendSuccess": "message/send ok.",
945
- "smokeStreamFailed": "message/stream smoke test failed.",
946
- "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).",
947
- "smokeStreamNoTaskId": "message/stream finished without task id.",
948
- "health": "Health",
949
- "ok": "ok",
950
- "totalTasks": "Total tasks",
951
- "activeStreams": "Active streams",
952
- "lastTask": "Last task",
953
- "taskStateOverview": "Task state overview",
1013
+ "loading": "正在加载 A2A 仪表板...",
1014
+ "confirmCancelTask": "确定要取消任务 {taskId} 吗?",
1015
+ "cancelTaskFailed": "取消任务失败。",
1016
+ "cancelTaskSuccess": "任务 {taskId} 已取消。",
1017
+ "smokeSendFailed": "`message/send` 冒烟测试失败。",
1018
+ "smokeSendSuccessWithTask": "`message/send` 调用成功(任务 {taskId})。",
1019
+ "smokeSendSuccess": "`message/send` 调用成功。",
1020
+ "smokeStreamFailed": "`message/stream` 冒烟测试失败。",
1021
+ "smokeStreamSuccessWithTask": "`message/stream` 调用成功(任务 {taskId}{stateSuffix})。",
1022
+ "smokeStreamNoTaskId": "`message/stream` 完成,但未返回任务 ID。",
1023
+ "health": "健康状态",
1024
+ "ok": "正常",
1025
+ "totalTasks": "任务总数",
1026
+ "activeStreams": "活跃流数",
1027
+ "lastTask": "最近任务",
1028
+ "taskStateOverview": "任务状态概览",
954
1029
  "state": {
955
- "submitted": "submitted",
956
- "working": "working",
957
- "completed": "completed",
958
- "failed": "failed",
959
- "cancelled": "cancelled"
1030
+ "submitted": "已提交",
1031
+ "working": "处理中",
1032
+ "completed": "已完成",
1033
+ "failed": "失败",
1034
+ "cancelled": "已取消"
960
1035
  },
961
- "agentCard": "Agent card",
962
- "version": "Version",
1036
+ "agentCard": "智能体卡片",
1037
+ "version": "版本",
963
1038
  "url": "URL",
964
- "capabilities": "Capabilities",
965
- "agentCardNotAvailable": "Agent card not available.",
966
- "quickValidation": "Quick validation",
967
- "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.",
968
- "runMessageSend": "Run message/send",
969
- "runMessageStream": "Run message/stream",
970
- "taskManagement": "Task management",
971
- "taskSummary": "{total} tasks | page {page} of {totalPages}",
972
- "allStates": "all",
973
- "allSkills": "all skills",
974
- "loadingTasks": "Loading tasks...",
975
- "noTasksForFilters": "No tasks found for current filters.",
976
- "tableTask": "Task",
977
- "tableSkill": "Skill",
978
- "tableState": "State",
979
- "tableUpdated": "Updated",
980
- "tableActions": "Actions",
981
- "view": "View",
982
- "cancel": "Cancel",
983
- "previous": "Previous",
984
- "next": "Next",
985
- "taskDetail": "Task detail",
986
- "close": "Close",
987
- "metadata": "Metadata",
988
- "events": "Events",
989
- "artifacts": "Artifacts"
1039
+ "capabilities": "能力",
1040
+ "agentCardNotAvailable": "Agent Card 不可用。",
1041
+ "quickValidation": "快速验证",
1042
+ "quickValidationDescription": "通过实时 `/a2a` 端点执行冒烟调用。",
1043
+ "runMessageSend": "运行 message/send",
1044
+ "runMessageStream": "运行 message/stream",
1045
+ "taskManagement": "任务管理",
1046
+ "taskSummary": "任务总数:{total}|第 {page} / {totalPages}",
1047
+ "allStates": "全部状态",
1048
+ "allSkills": "全部技能",
1049
+ "loadingTasks": "正在加载任务...",
1050
+ "noTasksForFilters": "当前筛选条件下没有任务。",
1051
+ "tableTask": "任务",
1052
+ "tableSkill": "技能",
1053
+ "tableState": "状态",
1054
+ "tableUpdated": "更新时间",
1055
+ "tableActions": "操作",
1056
+ "view": "查看",
1057
+ "cancel": "取消",
1058
+ "previous": "上一页",
1059
+ "next": "下一页",
1060
+ "taskDetail": "任务详情",
1061
+ "close": "关闭",
1062
+ "metadata": "元数据",
1063
+ "events": "事件",
1064
+ "artifacts": "产物"
990
1065
  },
991
1066
  "health": {
992
1067
  "title": "系统健康状况",
993
1068
  "description": "实时监控您的 OmniRoute 实例",
994
1069
  "healthy": "健康",
995
1070
  "degraded": "降级",
996
- "down": "向下",
1071
+ "down": "下线",
997
1072
  "uptime": "正常运行时间",
998
1073
  "memory": "内存",
999
1074
  "memoryRss": "记忆 (RSS)",
@@ -1002,7 +1077,7 @@
1002
1077
  "database": "数据库",
1003
1078
  "version": "版本",
1004
1079
  "lastCheck": "最后检查",
1005
- "providerHealth": "提供者健康",
1080
+ "providerHealth": "提供商健康",
1006
1081
  "systemMetrics": "系统指标",
1007
1082
  "tokenHealth": "令牌健康",
1008
1083
  "refreshAll": "全部刷新",
@@ -1029,13 +1104,13 @@
1029
1104
  "signatureDefaults": "默认值",
1030
1105
  "signatureTool": "工具",
1031
1106
  "signatureFamily": "家庭",
1032
- "signatureSession": "会议",
1107
+ "signatureSession": "会话",
1033
1108
  "recovering": "正在恢复中",
1034
1109
  "noCBData": "没有可用的断路器数据。先提出一些要求。",
1035
- "providerHealthStatusAria": "提供者健康状况",
1110
+ "providerHealthStatusAria": "提供商健康状况",
1036
1111
  "issuesLabel": "检测到的问题",
1037
1112
  "operational": "运营中",
1038
- "providers": "供应商",
1113
+ "providers": "提供商",
1039
1114
  "healthyCount": "{count} 健康",
1040
1115
  "nodeVersion": "节点 {version}",
1041
1116
  "failures": "{count} 失败",
@@ -1050,7 +1125,7 @@
1050
1125
  "runningCount": "{count} 正在运行",
1051
1126
  "ok": "好的",
1052
1127
  "activeLockouts": "主动锁定",
1053
- "resetConfirm": "将所有断路器重置为正常状态?这将清除所有故障计数并将所有提供程序恢复到运行状态。",
1128
+ "resetConfirm": "将所有断路器重置为正常状态?这将清除所有故障计数并将所有提供商恢复到运行状态。",
1054
1129
  "resetAllTitle": "将所有断路器重置为正常状态",
1055
1130
  "resetting": "正在重置...",
1056
1131
  "resetAll": "全部重置",
@@ -1084,7 +1159,7 @@
1084
1159
  "showing": "显示 {count} 条目(偏移量 {offset})",
1085
1160
  "search": "搜索",
1086
1161
  "timestamp": "时间戳",
1087
- "action": "行动",
1162
+ "action": "操作",
1088
1163
  "actor": "演员",
1089
1164
  "target": "目标",
1090
1165
  "details": "详情",
@@ -1125,7 +1200,7 @@
1125
1200
  "runTest": "运行连接测试",
1126
1201
  "testingConnection": "测试连接...",
1127
1202
  "connectionSuccessful": "连接成功!您的提供商已准备就绪。",
1128
- "noProviderFound": "未找到提供者。您可以稍后从仪表板添加一个。",
1203
+ "noProviderFound": "未找到提供商。您可以稍后从仪表板添加一个。",
1129
1204
  "testFailed": "测试失败,但您可以稍后配置。",
1130
1205
  "couldNotTest": "现在无法测试。您可以从仪表板进行测试。",
1131
1206
  "doneDesc": "你都准备好了!您的 OmniRoute 实例已配置并准备好代理 AI 请求。",
@@ -1135,15 +1210,15 @@
1135
1210
  "failedSetPassword": "设置密码失败。再试一次。",
1136
1211
  "failedAddProvider": "添加提供商失败。再试一次。",
1137
1212
  "connectionError": "连接错误。请再试一次。",
1138
- "provider": "提供者"
1213
+ "provider": "提供商"
1139
1214
  },
1140
1215
  "providers": {
1141
- "title": "供应商",
1216
+ "title": "提供商",
1142
1217
  "addProvider": "添加提供商",
1143
1218
  "editProvider": "编辑提供商",
1144
1219
  "deleteProvider": "删除提供商",
1145
1220
  "noProviders": "没有配置提供商",
1146
- "modelAvailability": "型号可供选择",
1221
+ "modelAvailability": "模型可用性",
1147
1222
  "accounts": "账户",
1148
1223
  "newAccount": "新账户",
1149
1224
  "deleteConfirm": "您确定要删除该提供商吗?",
@@ -1155,7 +1230,7 @@
1155
1230
  "cooldown": "冷却时间",
1156
1231
  "unavailable": "不可用",
1157
1232
  "unknown": "未知",
1158
- "oauthLabel": "开放认证",
1233
+ "oauthLabel": "OAuth",
1159
1234
  "compatibleLabel": "兼容",
1160
1235
  "chat": "聊天",
1161
1236
  "responses": "回应",
@@ -1173,18 +1248,18 @@
1173
1248
  "errorCount": "{count} 错误 ({code})",
1174
1249
  "errorCountNoCode": "{count} 错误",
1175
1250
  "noConnections": "无连接",
1176
- "disabled": "残疾人",
1251
+ "disabled": "已禁用",
1177
1252
  "enableProvider": "启用提供商",
1178
1253
  "disableProvider": "禁用提供商",
1179
1254
  "testResults": "测试结果",
1180
1255
  "noCompatibleYet": "尚未添加兼容的提供商",
1181
1256
  "compatibleHint": "使用上面的按钮添加 OpenAI 或 Anthropic 兼容端点",
1182
1257
  "addOpenAICompatible": "添加 OpenAI 兼容",
1183
- "addAnthropicCompatible": "添加人择兼容",
1258
+ "addAnthropicCompatible": "添加 Anthropic 兼容端点",
1184
1259
  "addNewProvider": "添加新提供商",
1185
1260
  "backToProviders": "返回提供商",
1186
- "configureNewProvider": "配置新的 AI 提供程序以与您的应用程序一起使用。",
1187
- "providerLabel": "提供者",
1261
+ "configureNewProvider": "配置新的 AI 提供商以与您的应用程序一起使用。",
1262
+ "providerLabel": "提供商",
1188
1263
  "selectProvider": "选择提供商",
1189
1264
  "selectedProvider": "选定的提供商",
1190
1265
  "authMethod": "认证方式",
@@ -1200,15 +1275,15 @@
1200
1275
  "displayNamePlaceholder": "例如,生产 API、开发环境",
1201
1276
  "displayNameHint": "可选。用于标识此配置的友好名称。",
1202
1277
  "active": "活跃",
1203
- "activeDescription": "启用此提供程序以在您的应用程序中使用",
1278
+ "activeDescription": "启用此提供商以在您的应用程序中使用",
1204
1279
  "cancel": "取消",
1205
- "createProvider": "创建提供者",
1280
+ "createProvider": "创建提供商",
1206
1281
  "failedCreate": "创建提供商失败",
1207
1282
  "errorOccurred": "发生错误。请再试一次。",
1208
- "modelStatus": "型号状态",
1209
- "allModelsOperational": "所有型号均可运行",
1283
+ "modelStatus": "模型状态",
1284
+ "allModelsOperational": "所有模型运行正常",
1210
1285
  "modelsWithIssues": "{count} 有问题的模型",
1211
- "allModelsNormal": "所有型号均响应正常。",
1286
+ "allModelsNormal": "所有模型当前响应正常。",
1212
1287
  "cooldownCleared": "{model} 的冷却时间已清除",
1213
1288
  "failedClearCooldown": "无法清除冷却时间",
1214
1289
  "loadingAvailability": "正在加载模型可用性...",
@@ -1216,6 +1291,7 @@
1216
1291
  "clearing": "清算...",
1217
1292
  "until": "直到 {time}",
1218
1293
  "providerTestFailed": "提供商测试失败",
1294
+ "providerTestTimeout": "提供商测试超时,可能是同时测试的连接过多",
1219
1295
  "modeTest": "{mode} 测试",
1220
1296
  "passedCount": "{count} 通过",
1221
1297
  "failedCount": "{count} 失败",
@@ -1230,7 +1306,7 @@
1230
1306
  "prefixLabel": "前缀",
1231
1307
  "baseUrlLabel": "基本网址",
1232
1308
  "apiTypeLabel": "API类型",
1233
- "prefixHint": "必填。型号名称的唯一前缀。",
1309
+ "prefixHint": "必填。模型名称使用的唯一前缀。",
1234
1310
  "nameHint": "必填。该节点的友好标签。",
1235
1311
  "baseUrlHint": "必填。  提供商 API 基本 URL。",
1236
1312
  "anthropicPrefixPlaceholder": "交流产品",
@@ -1243,26 +1319,26 @@
1243
1319
  "connectionFailed": "连接失败。检查 URL 和密钥。",
1244
1320
  "testKeyLabel": "测试 API 密钥",
1245
1321
  "testKeyPlaceholder": "sk-...(仅用于验证)",
1246
- "providerNotFound": "找不到提供者",
1322
+ "providerNotFound": "未找到提供商",
1247
1323
  "deleteConnectionConfirm": "删除这个连接吗?",
1248
1324
  "failedSetAlias": "设置别名失败",
1249
1325
  "failedSaveConnection": "保存连接失败",
1250
1326
  "failedSaveConnectionRetry": "无法保存连接。请再试一次。",
1251
1327
  "failedRetestConnection": "重新测试连接失败",
1252
1328
  "deleteCompatibleNodeConfirm": "删除此 {type} 兼容节点?",
1253
- "anthropicCompatibleDetails": "人择兼容细节",
1254
- "openaiCompatibleDetails": "OpenAI 兼容详细信息",
1255
- "messagesApi": "消息API",
1256
- "responsesApi": "响应API",
1329
+ "anthropicCompatibleDetails": "Anthropic 兼容详情",
1330
+ "openaiCompatibleDetails": "OpenAI 兼容详情",
1331
+ "messagesApi": "Messages API",
1332
+ "responsesApi": "Responses API",
1257
1333
  "chatCompletions": "聊天完成",
1258
1334
  "importingModels": "正在导入...",
1259
1335
  "importFromModels": "从 /models 导入",
1260
1336
  "addConnectionToImport": "添加连接以启用导入。",
1261
- "noModelsConfigured": "没有配置型号",
1337
+ "noModelsConfigured": "尚未配置模型",
1262
1338
  "connectionCount": "{count} 连接",
1263
1339
  "fetchingModels": "正在获取可用模型...",
1264
1340
  "failedFetchModels": "获取模型失败",
1265
- "noModelsFound": "没有找到型号",
1341
+ "noModelsFound": "未找到模型",
1266
1342
  "importFailed": "导入失败",
1267
1343
  "noNewModelsAdded": "没有添加新模型。",
1268
1344
  "adding": "添加...",
@@ -1276,25 +1352,25 @@
1276
1352
  "productionKey": "生产密钥",
1277
1353
  "enterNewApiKey": "输入新的 API 密钥",
1278
1354
  "optional": "可选",
1279
- "anthropicCompatibleName": "人择兼容",
1355
+ "anthropicCompatibleName": "Anthropic 兼容",
1280
1356
  "openaiCompatibleName": "兼容 OpenAI",
1281
1357
  "failedImportModels": "导入模型失败",
1282
1358
  "noModelsReturnedFromEndpoint": "/models 端点没有返回任何模型。",
1283
1359
  "importingModelsProgress": "正在导入 {current} 个模型(共 {total} 个)...",
1284
1360
  "foundModelsStartingImport": "找到 {count} 模型。开始导入...",
1285
1361
  "importingModelById": "正在导入 {modelId}...",
1286
- "importSuccessCount": "成功导入{count, plural, one {# model} other {# models}}!",
1362
+ "importSuccessCount": "成功导入 {count, plural, one {# 个模型} other {# 个模型}}!",
1287
1363
  "noNewModelsAddedExisting": "没有添加新模型(全部已存在)。",
1288
- "importDoneCount": "✓ 完成! {count, plural, one {# model imported.} other {# models imported.}}",
1364
+ "importDoneCount": "✓ 完成!共导入 {count, plural, one {# 个模型。} other {# 个模型。}}",
1289
1365
  "unexpectedErrorOccurred": "发生意外错误",
1290
- "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}",
1366
+ "connectionCountLabel": "{count} 个连接",
1291
1367
  "messagesPath": "消息",
1292
1368
  "responsesPath": "回应",
1293
1369
  "chatCompletionsPath": "聊天/完成",
1294
1370
  "add": "添加",
1295
1371
  "edit": "编辑",
1296
1372
  "delete": "删除",
1297
- "anthropic": "人择",
1373
+ "anthropic": "Anthropic",
1298
1374
  "openai": "开放人工智能",
1299
1375
  "singleConnectionPerCompatible": "每个兼容节点仅允许一个连接。如果需要更多连接,请添加另一个节点。",
1300
1376
  "connections": "连接",
@@ -1305,9 +1381,9 @@
1305
1381
  "noConnectionsYet": "还没有连接",
1306
1382
  "addFirstConnectionHint": "添加您的第一个连接以开始使用",
1307
1383
  "addConnection": "添加连接",
1308
- "availableModels": "可用型号",
1384
+ "availableModels": "可用模型",
1309
1385
  "pageAutoRefresh": "页面会自动刷新...",
1310
- "statusDisabled": "残疾人",
1386
+ "statusDisabled": "已禁用",
1311
1387
  "statusConnected": "已连接",
1312
1388
  "statusRuntimeIssue": "运行时问题",
1313
1389
  "statusAuthFailed": "验证失败",
@@ -1329,8 +1405,8 @@
1329
1405
  "errorTypeTestUnsupported": "测试不支持",
1330
1406
  "errorTypeUpstreamError": "上游错误",
1331
1407
  "proxySourceGlobal": "全球",
1332
- "proxySourceProvider": "提供者",
1333
- "proxySourceKey": "钥匙",
1408
+ "proxySourceProvider": "提供商",
1409
+ "proxySourceKey": "密钥",
1334
1410
  "proxyConfiguredBySource": "代理 ({source}):{host}",
1335
1411
  "autoPriority": "自动:{priority}",
1336
1412
  "proxy": "代理",
@@ -1341,28 +1417,28 @@
1341
1417
  "reauthenticateConnection": "重新验证此连接",
1342
1418
  "proxyConfig": "代理配置",
1343
1419
  "aliasExistsAlert": "别名“{alias}”已存在。请使用不同的模型或编辑现有别名。",
1344
- "openRouterAnyModelHint": "OpenRouter 支持任何型号。添加模型并创建别名以便快速访问。",
1345
- "modelIdFromOpenRouter": "型号 ID(来自 OpenRouter)",
1346
- "openRouterModelPlaceholder": "人类/claude-3-opus",
1347
- "customModels": "定制型号",
1348
- "customModelsHint": "添加不在默认列表中的型号 ID。这些将可用于路由。",
1349
- "modelId": "型号编号",
1350
- "customModelPlaceholder": "例如GPT-4.5-涡轮",
1420
+ "openRouterAnyModelHint": "OpenRouter 支持任意模型。添加模型并创建别名后即可快速访问。",
1421
+ "modelIdFromOpenRouter": "模型 ID(来自 OpenRouter)",
1422
+ "openRouterModelPlaceholder": "anthropic/claude-3-opus",
1423
+ "customModels": "自定义模型",
1424
+ "customModelsHint": "添加默认列表中没有的模型 ID,这些模型也能参与路由。",
1425
+ "modelId": "模型 ID",
1426
+ "customModelPlaceholder": "例如:gpt-4.5-turbo",
1351
1427
  "loading": "正在加载...",
1352
1428
  "removeCustomModel": "删除自定义模型",
1353
1429
  "noCustomModels": "尚未添加自定义模型。",
1354
- "allSuggestedAliasesExist": "所有建议的别名均已存在。请选择不同的型号或删除有冲突的别名。",
1430
+ "allSuggestedAliasesExist": "所有建议别名都已存在。请选择其他模型,或删除冲突的别名。",
1355
1431
  "failedSaveCustomModel": "保存自定义模型失败",
1356
1432
  "modelAddedSuccess": "模型 {modelId} 添加成功",
1357
- "failedAddModelTryAgain": "添加型号失败。请再试一次。",
1433
+ "failedAddModelTryAgain": "添加模型失败,请重试。",
1358
1434
  "failedSaveImportedModel": "无法将导入的模型保存到自定义数据库",
1359
1435
  "failedImportModelsTryAgain": "导入模型失败。请再试一次。",
1360
1436
  "failedRemoveModelFromDatabase": "无法从数据库中删除模型",
1361
1437
  "modelRemovedSuccess": "模型删除成功",
1362
1438
  "failedDeleteModelTryAgain": "删除模型失败。请再试一次。",
1363
- "compatibleModelsDescription": "手动添加 {type} 兼容模型或从 /models 端点导入它们。",
1364
- "anthropicCompatibleModelPlaceholder": "克劳德-3-opus-20240229",
1365
- "openaiCompatibleModelPlaceholder": "GPT-4O",
1439
+ "compatibleModelsDescription": "可手动添加 {type} 兼容模型,或从 `/models` 端点导入。",
1440
+ "anthropicCompatibleModelPlaceholder": "claude-3-opus-20240229",
1441
+ "openaiCompatibleModelPlaceholder": "gpt-4o",
1366
1442
  "apiKeyValidationFailed": "API 密钥验证失败。请检查您的密钥并重试。",
1367
1443
  "addProviderApiKeyTitle": "添加 {provider} API 密钥",
1368
1444
  "checking": "正在检查...",
@@ -1370,8 +1446,8 @@
1370
1446
  "valid": "有效",
1371
1447
  "invalid": "无效",
1372
1448
  "creating": "创造...",
1373
- "validationChecksAnthropicCompatible": "验证通过验证 API 密钥来检查 {provider}",
1374
- "validationChecksOpenAiCompatible": "验证通过基本 URL 上的 /models 检查 {provider}。",
1449
+ "validationChecksAnthropicCompatible": "验证会通过检查 API 密钥来确认 {provider} 是否可用。",
1450
+ "validationChecksOpenAiCompatible": "验证会通过你填写的 Base URL 上的 `/models` 接口来检查 {provider}。",
1375
1451
  "priorityLabel": "优先级",
1376
1452
  "saving": "正在保存...",
1377
1453
  "save": "保存",
@@ -1380,23 +1456,24 @@
1380
1456
  "email": "电子邮件",
1381
1457
  "healthCheckMinutes": "健康检查(分钟)",
1382
1458
  "healthCheckHint": "主动令牌刷新间隔。 0 = 禁用。",
1383
- "groupLabel": "Environment",
1384
- "groupPlaceholder": "e.g. eKaizen, Personal",
1459
+ "groupLabel": "环境",
1460
+ "groupPlaceholder": "例如:eKaizenPersonal",
1385
1461
  "failedTestConnection": "测试连接失败",
1386
1462
  "failed": "失败",
1387
1463
  "leaveBlankKeepCurrentApiKey": "留空以保留当前的 API 密钥。",
1388
1464
  "editCompatibleTitle": "编辑 {type} 兼容",
1389
- "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.",
1465
+ "compatibleBaseUrlHint": "{type} 兼容 API 的根 URL。若端点路径是自定义的,请在高级设置中配置。",
1390
1466
  "apiKeyForCheck": "API 密钥(用于检查)",
1391
1467
  "compatibleProdPlaceholder": "{type} 兼容(产品)",
1392
- "providerTestTimeout": "Provider test timed out — too many connections to test at once",
1393
- "advancedSettings": "Advanced Settings",
1394
- "chatPathLabel": "Chat Endpoint Path",
1468
+ "tokenRefreshed": "Token 刷新成功",
1469
+ "tokenRefreshFailed": "Token 刷新失败",
1470
+ "advancedSettings": "高级设置",
1471
+ "chatPathLabel": "聊天端点路径",
1395
1472
  "chatPathPlaceholder": "/chat/completions",
1396
- "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)",
1397
- "modelsPathLabel": "Models Endpoint Path",
1473
+ "chatPathHint": "为非标准 API 的提供商自定义聊天路径(例如:/v4/chat/completions",
1474
+ "modelsPathLabel": "模型端点路径",
1398
1475
  "modelsPathPlaceholder": "/models",
1399
- "modelsPathHint": "Custom models path for validation (e.g. /v4/models)"
1476
+ "modelsPathHint": "为验证流程自定义模型路径(例如:/v4/models"
1400
1477
  },
1401
1478
  "settings": {
1402
1479
  "title": "设置",
@@ -1472,7 +1549,7 @@
1472
1549
  "themeDark": "黑暗",
1473
1550
  "themeSystem": "系统",
1474
1551
  "hideHealthLogs": "隐藏健康检查日志",
1475
- "hideHealthLogsDesc": "当打开时,抑制服务器控制台中的 [HealthCheck] 消息",
1552
+ "hideHealthLogsDesc": "开启后,将抑制服务器控制台中的 [HealthCheck] 消息",
1476
1553
  "themeAccent": "主题颜色",
1477
1554
  "themeAccentDesc": "选择预设颜色,或使用单一颜色创建你自己的主题",
1478
1555
  "themeCreate": "创建主题",
@@ -1491,7 +1568,7 @@
1491
1568
  "evictions": "驱逐",
1492
1569
  "loadingCacheStats": "正在加载缓存统计信息...",
1493
1570
  "globalProxy": "全球代理",
1494
- "globalProxyDesc": "为所有 API 调用配置全局出站代理。单独的提供程序、组合和键可以覆盖此设置。",
1571
+ "globalProxyDesc": "为所有 API 调用配置全局出站代理。单独的提供商、组合和键可以覆盖此设置。",
1495
1572
  "noGlobalProxy": "没有配置全局代理",
1496
1573
  "globalLabel": "全球",
1497
1574
  "configure": "配置",
@@ -1535,12 +1612,17 @@
1535
1612
  "setPassword": "设置密码",
1536
1613
  "apiEndpointProtection": "API端点保护",
1537
1614
  "requireAuthModels": "/models 需要 API 密钥",
1538
- "requireAuthModelsDesc": "当打开时,/v1/models 端点针对未经身份验证的请求返回 404。防止未经授权的用户发现模型。",
1615
+ "requireAuthModelsDesc": "开启后,`/v1/models` 对未认证请求返回 404,从而阻止未授权用户发现模型。",
1539
1616
  "blockedProviders": "被阻止的提供商",
1540
- "blockedProvidersDesc": " /v1/models 响应中隐藏特定提供程序。被阻止的提供商不会出现在模型列表中。",
1617
+ "blockedProvidersDesc": " `/v1/models` 响应中隐藏指定提供商。被隐藏的提供商不会出现在模型列表中。",
1541
1618
  "providersBlocked": "{count} 提供商被阻止/模型",
1542
1619
  "blockProviderTitle": "区块 {provider}",
1543
1620
  "unblockProviderTitle": "解锁 {provider}",
1621
+ "cliFingerprint": "CLI 指纹匹配",
1622
+ "cliFingerprintDesc": "在代理请求时模拟原生 CLI 二进制的请求特征。会重新排列请求头和请求体字段,使其与官方 CLI 工具更一致,同时保留你的代理 IP。",
1623
+ "cliFingerprintEnabled": "已有 {count} 个提供商启用了 CLI 指纹",
1624
+ "enableFingerprintTitle": "为 {provider} 启用指纹",
1625
+ "disableFingerprintTitle": "为 {provider} 禁用指纹",
1544
1626
  "routingStrategy": "路由策略",
1545
1627
  "fillFirst": "先填写",
1546
1628
  "fillFirstDesc": "按优先顺序使用帐户",
@@ -1554,8 +1636,8 @@
1554
1636
  "leastUsedDesc": "选择最近最少使用的帐户",
1555
1637
  "costOpt": "成本选择",
1556
1638
  "costOptDesc": "更喜欢最便宜的可用帐户",
1557
- "strictRandom": "Strict Random",
1558
- "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling",
1639
+ "strictRandom": "严格随机",
1640
+ "strictRandomDesc": "洗牌池模式:每个账户使用一次后再重新洗牌",
1559
1641
  "stickyLimit": "粘性限制",
1560
1642
  "stickyLimitDesc": "切换前每个账户的通话次数",
1561
1643
  "modelAliases": "模型别名",
@@ -1581,8 +1663,8 @@
1581
1663
  "pattern": "图案",
1582
1664
  "targetModel": "目标模型",
1583
1665
  "add": "+ 添加",
1584
- "session": "会议",
1585
- "sessionDetailsAria": "会议详情",
1666
+ "session": "会话",
1667
+ "sessionDetailsAria": "会话详情",
1586
1668
  "status": "状态",
1587
1669
  "authenticated": "已认证",
1588
1670
  "guest": "嘉宾",
@@ -1596,7 +1678,7 @@
1596
1678
  "systemActor": "系统",
1597
1679
  "ipAccessControl": "IP访问控制",
1598
1680
  "ipAccessControlDesc": "阻止或允许特定 IP 地址",
1599
- "ipModeDisabled": "残疾人",
1681
+ "ipModeDisabled": "已禁用",
1600
1682
  "ipModeBlacklist": "黑名单",
1601
1683
  "ipModeWhitelist": "白名单",
1602
1684
  "ipModeWhitelistPriority": "WL优先级",
@@ -1612,20 +1694,20 @@
1612
1694
  "searchAuditLogs": "搜索审核日志...",
1613
1695
  "failedLoadAuditLog": "无法加载审核日志",
1614
1696
  "noAuditEvents": "未找到审核事件",
1615
- "action": "行动",
1697
+ "action": "操作",
1616
1698
  "actor": "演员",
1617
1699
  "details": "详情",
1618
1700
  "time": "时间",
1619
1701
  "fallbackChainsTitle": "后备链",
1620
- "fallbackChainsDesc": "定义每个模型的提供者后备顺序",
1702
+ "fallbackChainsDesc": "定义每个模型的提供商后备顺序",
1621
1703
  "addChain": "+ 添加链",
1622
- "modelName": "型号名称",
1704
+ "modelName": "模型名称",
1623
1705
  "modelNamePlaceholder": "克劳德十四行诗-4-20250514",
1624
- "providersCommaSeparated": "提供者(以逗号分隔,按优先顺序排列)",
1625
- "providersCommaSeparatedPlaceholder": "人类、openai、双子座",
1706
+ "providersCommaSeparated": "提供商(用逗号分隔,按优先级排序)",
1707
+ "providersCommaSeparatedPlaceholder": "anthropic, openai, gemini",
1626
1708
  "createChain": "创建链",
1627
1709
  "noFallbackChains": "无后备链",
1628
- "noFallbackChainsDesc": "创建一个链来定义模型的提供者回退顺序。",
1710
+ "noFallbackChainsDesc": "创建一条链路,用于定义某个模型的提供商回退顺序。",
1629
1711
  "loadingFallbackChains": "正在加载后备链...",
1630
1712
  "deleteChainConfirm": "删除“{model}”的后备链?",
1631
1713
  "chainCreated": "为 {model} 创建的链",
@@ -1633,7 +1715,7 @@
1633
1715
  "failedCreateChain": "创建链失败",
1634
1716
  "failedDeleteChain": "删除链失败",
1635
1717
  "deleteChain": "删除链",
1636
- "fillModelAndProviders": "请填写型号名称和提供商",
1718
+ "fillModelAndProviders": "请填写模型名称和提供商",
1637
1719
  "addAtLeastOneProvider": "添加至少一个提供商",
1638
1720
  "comboDefaultsTitle": "组合默认值",
1639
1721
  "globalComboConfig": "全局组合配置",
@@ -1649,8 +1731,8 @@
1649
1731
  "healthCheckDesc": "预先检查提供商的可用性",
1650
1732
  "trackMetrics": "跟踪指标",
1651
1733
  "trackMetricsDesc": "记录每个组合请求指标",
1652
- "providerOverrides": "提供者覆盖",
1653
- "providerOverridesDesc": "覆盖每个提供商的超时和重试。提供程序设置会覆盖全局默认设置。",
1734
+ "providerOverrides": "提供商覆盖",
1735
+ "providerOverridesDesc": "覆盖每个提供商的超时和重试。提供商设置会覆盖全局默认设置。",
1654
1736
  "providerMaxRetriesAria": "{provider} 最大重试次数",
1655
1737
  "providerTimeoutAria": "{provider} 超时毫秒",
1656
1738
  "removeProviderOverrideAria": "删除 {provider} 覆盖",
@@ -1662,8 +1744,8 @@
1662
1744
  "maxNestingDepth": "最大嵌套深度",
1663
1745
  "concurrencyPerModel": "并发/模型",
1664
1746
  "queueTimeout": "队列超时(毫秒)",
1665
- "providerProfiles": "供应商简介",
1666
- "providerProfilesDesc": "OAuth(基于会话)和 API 密钥(计量)提供商的单独弹性设置。由于速率限制较低,OAuth 提供商具有更严格的阈值。",
1747
+ "providerProfiles": "提供商简介",
1748
+ "providerProfilesDesc": "OAuth(基于会话)和 API Key(计费型)提供商分别设置弹性策略。由于速率限制更低,OAuth 提供商通常采用更严格的阈值。",
1667
1749
  "oauthProviders": "OAuth 提供商",
1668
1750
  "apiKeyProviders": "API 密钥提供商",
1669
1751
  "transientCooldown": "短暂冷却",
@@ -1672,7 +1754,7 @@
1672
1754
  "cbThreshold": "CB阈值",
1673
1755
  "cbResetTime": "CB 复位时间",
1674
1756
  "rateLimiting": "速率限制",
1675
- "rateLimitingDesc": "API 密钥提供程序会自动受到安全默认值的速率限制。限制是从响应标头中学习的,并随着时间的推移进行调整。",
1757
+ "rateLimitingDesc": "API 密钥提供商会自动受到安全默认值的速率限制。限制是从响应标头中学习的,并随着时间的推移进行调整。",
1676
1758
  "defaultSafetyNet": "默认安全网",
1677
1759
  "rpm": "转速",
1678
1760
  "minGap": "最小间隙",
@@ -1730,7 +1812,7 @@
1730
1812
  "yes": "是的",
1731
1813
  "no": "否",
1732
1814
  "restore": "恢复",
1733
- "invalidFileType": "文件类型无效。仅接受 .sqlite 文件。",
1815
+ "invalidFileType": "文件类型无效,仅接受 `.sqlite` 文件。",
1734
1816
  "exportFailed": "导出失败",
1735
1817
  "exportFailedWithError": "导出失败:{error}",
1736
1818
  "fullExportFailedWithError": "完全导出失败:{error}",
@@ -1741,31 +1823,31 @@
1741
1823
  "minutesAgo": "{count} 分钟前",
1742
1824
  "hoursAgo": "{count} 小时前",
1743
1825
  "daysAgo": "{count} 天前",
1744
- "backupReasonManual": "手册",
1826
+ "backupReasonManual": "手动",
1745
1827
  "backupReasonPreRestore": "预恢复",
1746
- "connectionsCount": "{count, plural, one {# connection} other {# connections}}",
1828
+ "connectionsCount": "{count} 个连接",
1747
1829
  "noChangesSinceBackup": "自上次备份以来没有任何变化",
1748
1830
  "backupFailed": "备份失败",
1749
1831
  "restoreFailed": "恢复失败",
1750
1832
  "importFailed": "导入失败",
1751
1833
  "errorDuringRestore": "恢复期间发生错误",
1752
1834
  "errorDuringImport": "导入时发生错误",
1753
- "modelPricing": "型号定价",
1835
+ "modelPricing": "模型定价",
1754
1836
  "modelPricingDesc": "配置每个模型的成本费率 • 所有费率均以美元/100 万代币为单位",
1755
- "providers": "供应商",
1837
+ "providers": "提供商",
1756
1838
  "registry": "登记处",
1757
1839
  "priced": "定价",
1758
- "searchProvidersModels": "搜索供应商或型号...",
1840
+ "searchProvidersModels": "搜索提供商或模型...",
1759
1841
  "showAll": "显示全部",
1760
1842
  "noProvidersMatch": "没有与您的搜索匹配的提供商。",
1761
1843
  "howPricingWorks": "定价如何运作",
1762
1844
  "cacheWrite": "缓存写入",
1763
1845
  "unsaved": "未保存",
1764
1846
  "resetDefaults": "重置默认值",
1765
- "saveProvider": "保存提供者",
1847
+ "saveProvider": "保存提供商",
1766
1848
  "saving": "正在保存...",
1767
- "model": "型号",
1768
- "models": "型号",
1849
+ "model": "模型",
1850
+ "models": "模型",
1769
1851
  "moreProviders": "{count} 更多提供商",
1770
1852
  "withPricing": "配置定价",
1771
1853
  "policiesCircuitBreakers": "政策与断路器",
@@ -1779,7 +1861,7 @@
1779
1861
  "pricingDescCacheWrite": "缓存写入:创建缓存条目(回退到输入)",
1780
1862
  "pricingDescFormula": "成本 = (输入 × 输入率) + (输出 × 输出率) + (缓存 × 缓存率) 每百万代币。",
1781
1863
  "pricingSettingsTitle": "定价设置",
1782
- "totalModels": "型号总数",
1864
+ "totalModels": "模型总数",
1783
1865
  "active": "活跃",
1784
1866
  "costCalculation": "成本计算",
1785
1867
  "costCalculationDesc": "成本是根据为每个模型配置的令牌使用情况和定价费率计算的。",
@@ -1791,15 +1873,10 @@
1791
1873
  "cachedTokenDesc": "缓存输入令牌(通常为输入速率的 50%)",
1792
1874
  "reasoningTokenDesc": "特殊推理/思维标记(回退到输出率)",
1793
1875
  "cacheCreationTokenDesc": "用于创建缓存条目的令牌(回退到输入速率)",
1794
- "customPricingNote": "您可以覆盖特定型号的默认定价。自定义覆盖优先于自动检测的定价。",
1876
+ "customPricingNote": "你可以覆盖特定模型的默认定价。自定义覆盖会优先于自动检测到的定价。",
1795
1877
  "editPricing": "编辑定价",
1796
1878
  "viewFullDetails": "查看完整详情",
1797
- "themeCoral": "珊瑚色",
1798
- "cliFingerprint": "CLI Fingerprint Matching",
1799
- "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.",
1800
- "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active",
1801
- "enableFingerprintTitle": "Enable fingerprint for {provider}",
1802
- "disableFingerprintTitle": "Disable fingerprint for {provider}"
1879
+ "themeCoral": "珊瑚色"
1803
1880
  },
1804
1881
  "translator": {
1805
1882
  "title": "翻译者",
@@ -1811,17 +1888,17 @@
1811
1888
  "chatTester": "聊天测试仪",
1812
1889
  "testBench": "测试台",
1813
1890
  "liveMonitor": "实时监控",
1814
- "modeDescriptionPlayground": "粘贴任何 API 请求正文,然后查看 OmniRoute 如何在提供程序格式之间进行转换(OpenAI ↔ Claude ↔ Gemini ↔ Responses API",
1815
- "modeDescriptionChatTester": "通过 OmniRoute 发送真实的聊天请求并检查完整的往返过程:输入、翻译后的请求、提供商响应和翻译后的输出。",
1891
+ "modeDescriptionPlayground": "粘贴任意 API 请求体,查看 OmniRoute 如何在不同提供商格式之间进行转换(OpenAI ↔ Claude ↔ Gemini ↔ Responses API)。",
1892
+ "modeDescriptionChatTester": "通过 OmniRoute 发送真实聊天请求,并检查完整往返流程:输入、转换后的请求、提供商响应以及转换后的输出。",
1816
1893
  "modeDescriptionTestBench": "运行预定义的场景并比较提供商和模型之间的兼容性。",
1817
- "modeDescriptionLiveMonitor": "当请求流经 OmniRoute 时,实时观看翻译事件。",
1818
- "modeDescriptionFallback": "调试、测试和可视化 OmniRoute 如何在提供者之间转换 API 请求。",
1894
+ "modeDescriptionLiveMonitor": "实时查看请求流经 OmniRoute 时产生的翻译事件。",
1895
+ "modeDescriptionFallback": "调试、测试并可视化 OmniRoute 如何在提供商之间转换 API 请求。",
1819
1896
  "recentTranslations": "最近的翻译",
1820
1897
  "noTranslations": "还没有翻译",
1821
1898
  "source": "来源",
1822
1899
  "target": "目标",
1823
1900
  "time": "时间",
1824
- "model": "型号",
1901
+ "model": "模型",
1825
1902
  "status": "状态",
1826
1903
  "latency": "延迟",
1827
1904
  "totalTranslations": "总翻译数",
@@ -1832,7 +1909,7 @@
1832
1909
  "notAvailableSymbol": "—",
1833
1910
  "liveAutoRefreshing": "直播 — 自动刷新",
1834
1911
  "paused": "已暂停",
1835
- "eventsAppearHint": "当请求流经 OmniRoute 时,翻译事件会出现在此处。使用以下任意方法生成事件:",
1912
+ "eventsAppearHint": "请求流经 OmniRoute 时,翻译事件会显示在这里。你可以通过下面任一方式生成事件:",
1836
1913
  "chatTesterTab": "聊天测试选项卡",
1837
1914
  "testBenchTab": "测试台选项卡",
1838
1915
  "externalApiCalls": "外部API调用",
@@ -1841,7 +1918,7 @@
1841
1918
  "ok": "好的",
1842
1919
  "errorShort": "错误率",
1843
1920
  "formatConverter": "格式转换器",
1844
- "formatConverterDescription": "粘贴或输入 JSON 请求正文。翻译器将自动检测源格式并将其转换为目标格式。使用它来调试 OmniRoute 如何在格式之间转换请求(OpenAI ↔ Claude ↔ Gemini ↔ Responses API)。",
1921
+ "formatConverterDescription": "粘贴或输入 JSON 请求体。翻译器会自动识别源格式并将其转换为目标格式。你可以借此调试 OmniRoute 在各种格式之间的转换行为(OpenAI ↔ Claude ↔ Gemini ↔ Responses API)。",
1845
1922
  "input": "输入",
1846
1923
  "output": "输出",
1847
1924
  "auto": "汽车",
@@ -1854,7 +1931,7 @@
1854
1931
  "templateLoadHint": "模板以 {format} 格式加载请求。更改源格式以以不同的格式加载。",
1855
1932
  "compatibilityTester": "兼容性测试仪",
1856
1933
  "compatibilityReport": "兼容性报告",
1857
- "testBenchDescription": "运行预定义的场景(简单聊天、工具调用等)以验证翻译和提供程序兼容性。选择源格式和目标提供程序,然后运行所有测试以查看兼容性百分比。使用它来查找哪些功能可以跨提供商使用。",
1934
+ "testBenchDescription": "运行预定义的场景(简单聊天、工具调用等)以验证翻译和提供商兼容性。选择源格式和目标提供商,然后运行所有测试以查看兼容性百分比。使用它来查找哪些功能可以跨提供商使用。",
1858
1935
  "targetProvider": "目标提供商",
1859
1936
  "runAllTests": "运行所有测试",
1860
1937
  "runTest": "运行测试",
@@ -1898,23 +1975,23 @@
1898
1975
  },
1899
1976
  "multiTurn": {
1900
1977
  "system": "你是一名编码助理。",
1901
- "userInitial": " Python 中编写一个函数对数组进行排序。",
1902
- "assistantExample": "这是一个简单的排序函数:\n\n````蟒蛇\ndef sort_array(arr):\n 返回已排序(arr)\n````",
1978
+ "userInitial": "请用 Python 写一个对数组进行排序的函数。",
1979
+ "assistantExample": "这是一个简单的排序函数:\n\n```python\ndef sort_array(arr):\n return sorted(arr)\n```",
1903
1980
  "userFollowUp": "现在将其按降序排序。"
1904
1981
  },
1905
1982
  "thinking": {
1906
1983
  "question": "前 100 个质数之和是多少?"
1907
1984
  },
1908
1985
  "systemPrompt": {
1909
- "systemInstruction": "您是一名专门研究分布式系统的高级软件工程师。使用行业最佳实践简洁地回答问题。始终提供相关的代码示例。使用 Markdown 格式化您的回复。",
1986
+ "systemInstruction": "你是一名专注于分布式系统的高级软件工程师。请使用行业最佳实践简洁作答,并在合适时提供代码示例。回复请使用 Markdown 格式。",
1910
1987
  "question": "如何实现断路器模式?"
1911
1988
  },
1912
1989
  "streaming": {
1913
1990
  "prompt": "给我讲一个关于机器人学习绘画的小故事。"
1914
1991
  }
1915
1992
  },
1916
- "openaiCompatibleLabel": "兼容 OpenAI",
1917
- "anthropicCompatibleLabel": "人择兼容",
1993
+ "openaiCompatibleLabel": "OpenAI 兼容",
1994
+ "anthropicCompatibleLabel": "Anthropic 兼容",
1918
1995
  "noTemplateForFormat": "没有此格式的模板",
1919
1996
  "translationFailed": "翻译失败:{error}",
1920
1997
  "pipelineDebugger": "管道调试器",
@@ -1922,27 +1999,27 @@
1922
1999
  "pipelineVisualization": "管道可视化",
1923
2000
  "pipelineVisualizationHint": "发送消息以查看您的请求如何经过检测 → 翻译 → 提供商调用。",
1924
2001
  "chatTesterDescription": "以特定客户端格式发送消息并检查翻译管道的每个步骤。",
1925
- "chatTesterFlow": "客户端请求 → 格式检测 → OpenAI Intermediate提供者格式 → 响应",
2002
+ "chatTesterFlow": "客户端请求 → 格式检测 → OpenAI 中间格式提供商格式 → 响应",
1926
2003
  "clickStepToInspect": "单击任意步骤即可检查该阶段的数据。",
1927
2004
  "clientFormat": "客户端格式",
1928
- "provider": "提供者",
1929
- "modelPlaceholder": "选择或输入型号名称...",
2005
+ "provider": "提供商",
2006
+ "modelPlaceholder": "选择或输入模型名称...",
1930
2007
  "sendMessageToSeePipeline": "发送消息查看翻译管道",
1931
2008
  "chatMessageHintPrefix": "您的消息将被格式化为",
1932
- "chatMessageHintSuffix": "请求,通过管道进行翻译,然后发送给选定的提供者。",
2009
+ "chatMessageHintSuffix": "请求,通过管道进行翻译,然后发送给选定的提供商。",
1933
2010
  "youWithFormat": "您 ({format})",
1934
2011
  "assistant": "助理",
1935
2012
  "typeMessage": "输入消息...",
1936
2013
  "send": "发送",
1937
- "clientRequest": "客户要求",
2014
+ "clientRequest": "客户端请求",
1938
2015
  "clientRequestDescription": "您的客户端发送的请求正文",
1939
2016
  "formatDetected": "检测到格式",
1940
- "formatDetectedDescription": "OmniRoute 自动从请求结构中检测 API 格式",
1941
- "openaiIntermediate": "OpenAI 中级",
1942
- "openaiIntermediateDescription": "所有格式首先标准化为 OpenAI 格式(通用桥)",
1943
- "providerFormat": "提供者格式",
1944
- "providerFormatDescription": "OpenAI 格式转换为提供商的本机格式",
1945
- "providerResponse": "供应商回应",
2017
+ "formatDetectedDescription": "OmniRoute 会根据请求结构自动识别 API 格式",
2018
+ "openaiIntermediate": "OpenAI 中间格式",
2019
+ "openaiIntermediateDescription": "所有格式都会先归一化为 OpenAI 格式(通用桥接层)",
2020
+ "providerFormat": "提供商格式",
2021
+ "providerFormatDescription": "随后再把 OpenAI 格式转换为提供商原生格式",
2022
+ "providerResponse": "提供商回应",
1946
2023
  "providerResponseRawDescription": "来自提供商 API 的原始响应",
1947
2024
  "providerResponseSseDescription": "来自提供商 API 的原始 SSE 流",
1948
2025
  "unexpectedError": "发生意外错误",
@@ -1950,11 +2027,11 @@
1950
2027
  "errorMessage": "错误:{message}",
1951
2028
  "requestFailed": "请求失败",
1952
2029
  "noTextExtracted": "(未提取文字)",
1953
- "liveMonitorDescriptionPrefix": " API 调用流经 OmniRoute 时显示翻译事件。事件来自内存缓冲区(重新启动时重置)。使用",
2030
+ "liveMonitorDescriptionPrefix": "这里会显示 API 调用流经 OmniRoute 时产生的翻译事件。事件来自内存缓冲区(重启后会重置)。使用",
1954
2031
  "liveMonitorDescriptionSuffix": ",或外部 API 调用来生成事件。"
1955
2032
  },
1956
2033
  "usage": {
1957
- "title": "用途",
2034
+ "title": "用量",
1958
2035
  "loggerTab": "记录器",
1959
2036
  "proxyTab": "代理",
1960
2037
  "budgetManagement": "预算管理",
@@ -1992,38 +2069,38 @@
1992
2069
  "circuitBreakers": "断路器",
1993
2070
  "lockedIPs": "锁定IP",
1994
2071
  "lockoutsAutoRefreshHint": "每个模型速率限制锁定 • 自动刷新 10 秒",
1995
- "lockedCount": "{count, plural, one {# locked} other {# locked}}",
2072
+ "lockedCount": "{count} 个锁定",
1996
2073
  "timeLeft": "剩余 {time}",
1997
- "howItWorks": "它是如何运作的",
2074
+ "howItWorks": "工作原理",
1998
2075
  "howItWorksSubtitle": "了解评估如何验证您的 LLM 回答",
1999
2076
  "define": "定义",
2000
2077
  "defineStepDescription": "使用包含、正则表达式或完全匹配等策略创建带有输入提示和预期输出标准的测试用例。",
2001
2078
  "run": "运行",
2002
- "runStepDescription": "通过 OmniRoute 针对您的 LLM 端点执行测试用例。每个案例都作为真实的 API 请求发送。",
2003
- "evaluate": "评价",
2079
+ "runStepDescription": "通过 OmniRoute 对你的 LLM 端点执行测试用例。每个案例都会作为真实 API 请求发送。",
2080
+ "evaluate": "评估",
2004
2081
  "evaluateStepDescription": "将响应与预期标准进行比较。查看每种情况的通过/失败情况以及延迟指标和详细反馈。",
2005
2082
  "evalSuites": "评估套件",
2006
- "evalSuitesHint": "单击套件查看测试用例,然后运行以评估您的 LLM 端点",
2083
+ "evalSuitesHint": "点击套件可查看测试用例,然后运行以评估你的 LLM 端点",
2007
2084
  "evalsLoading": "正在加载评估套件...",
2008
2085
  "noEvalSuitesFound": "未找到评估套件",
2009
- "noEvalSuitesDescription": "评估套件可以通过 API 或代码来定义。他们使用包含、正则表达式、精确匹配和自定义函数等策略根据预期结果测试模型输出。",
2086
+ "noEvalSuitesDescription": "评测套件可以通过 API 或代码定义。它们会使用包含、正则表达式、精确匹配和自定义函数等策略,根据预期结果验证模型输出。",
2010
2087
  "columnCase": "案例",
2011
2088
  "columnStatus": "状态",
2012
2089
  "columnLatency": "延迟",
2013
2090
  "columnDetails": "详情",
2014
- "columnModel": "型号",
2091
+ "columnModel": "模型",
2015
2092
  "columnStrategy": "策略",
2016
- "columnExpected": "预计",
2017
- "statsSuites": "套房",
2093
+ "columnExpected": "预期",
2094
+ "statsSuites": "套件",
2018
2095
  "statsTestCases": "测试用例",
2019
- "statsModels": "型号",
2096
+ "statsModels": "模型",
2020
2097
  "statsCoverage": "覆盖范围",
2021
2098
  "statsStrategiesCount": "{count} 策略",
2022
2099
  "evaluationStrategies": "评估策略",
2023
2100
  "modelsUnderTest": "测试中的模型",
2024
- "searchSuitesPlaceholder": "搜索套房...",
2101
+ "searchSuitesPlaceholder": "搜索套件...",
2025
2102
  "passSuffix": "通过",
2026
- "casesCount": "{count, plural, one {# case} other {# cases}}",
2103
+ "casesCount": "{count} 个案例",
2027
2104
  "runEval": "运行评估",
2028
2105
  "runningProgress": "正在运行 {current}/{total}...",
2029
2106
  "passRate": "通过率",
@@ -2036,27 +2113,27 @@
2036
2113
  "noResultsYet": "还没有结果",
2037
2114
  "testCasesCount": "测试用例 ({count})",
2038
2115
  "noTestCasesDefined": "没有定义测试用例",
2039
- "runEvalHint": "单击“运行评估”以针对您的 LLM 端点执行所有案例。每个测试都通过 OmniRoute 发送真实请求。",
2116
+ "runEvalHint": "点击“运行评测”即可对你的 LLM 端点执行所有案例。每次测试都会通过 OmniRoute 发送真实请求。",
2040
2117
  "notifyNoTestCases": "没有为此套件定义测试用例",
2041
2118
  "notifyAllCasesPassed": "所有 {total} 案例均已通过 ✅",
2042
2119
  "notifySomeCasesFailed": "{passed}/{total} 通过,{failed} 失败",
2043
2120
  "notifyEvalRunFailed": "评估运行失败",
2044
2121
  "notifyEvalTitle": "评估:{name}",
2045
2122
  "modelEvals": "模型评估",
2046
- "evalsHeroDescription": "通过运行预定义的评估套件来测试和验证您的 LLM 端点。每个套件都包含测试用例,这些测试用例通过 OmniRoute 发送真实提示并将响应与预期标准进行比较 - 帮助您检测回归、比较模型并确保跨提供商的响应质量。",
2123
+ "evalsHeroDescription": "通过运行预定义评测套件来测试和验证你的 LLM 端点。每个套件都包含多个测试用例,会经由 OmniRoute 发送真实提示,并将响应与预期标准进行比较,帮助你发现回归、比较模型,并确保跨提供商的响应质量。",
2047
2124
  "qualityValidation": "质量验证",
2048
- "modelComparison": "型号对比",
2125
+ "modelComparison": "模型对比",
2049
2126
  "regressionDetection": "回归检测",
2050
2127
  "latencyBenchmarks": "延迟基准",
2051
2128
  "modelLockouts": "模型锁定",
2052
- "noLockouts": "目前没有锁定型号",
2129
+ "noLockouts": "当前没有被锁定的模型",
2053
2130
  "activeSessions": "活跃会话",
2054
2131
  "noSessions": "没有活动会话",
2055
2132
  "sessionsHint": "会话显示为请求流经代理",
2056
2133
  "sessionsTrackedHint": "通过请求指纹跟踪 • 自动刷新 5 秒",
2057
- "session": "会议",
2134
+ "session": "会话",
2058
2135
  "age": "年龄",
2059
- "requests": "要求",
2136
+ "requests": "请求",
2060
2137
  "connection": "连接方式",
2061
2138
  "durationMillisecondsShort": "{value}ms",
2062
2139
  "durationSecondsShort": "{value}s",
@@ -2066,8 +2143,8 @@
2066
2143
  "notAvailableSymbol": "-",
2067
2144
  "providerLimits": "提供商限制",
2068
2145
  "noProviders": "没有连接提供商",
2069
- "connectProvidersForQuota": "使用 OAuth 连接到提供商以跟踪您的 API 配额限制和使用情况。",
2070
- "accountsCount": "{count, plural, one {# account} other {# accounts}}",
2146
+ "connectProvidersForQuota": "通过 OAuth 连接提供商,以跟踪 API 配额限制和使用情况。",
2147
+ "accountsCount": "{count} 个账户",
2071
2148
  "filteredFromCount": "(从 {count} 过滤)",
2072
2149
  "autoRefresh": "自动刷新",
2073
2150
  "refreshAll": "全部刷新",
@@ -2075,7 +2152,7 @@
2075
2152
  "account": "账户",
2076
2153
  "modelQuotas": "模型配额",
2077
2154
  "lastUsed": "最后使用",
2078
- "actions": "行动",
2155
+ "actions": "操作",
2079
2156
  "refreshQuota": "刷新配额",
2080
2157
  "today": "今天",
2081
2158
  "tomorrow": "明天",
@@ -2085,9 +2162,9 @@
2085
2162
  "rawPlanWithValue": "原始计划:{plan}",
2086
2163
  "noPlanFromProvider": "提供商没有计划",
2087
2164
  "noQuotaData": "无配额数据",
2088
- "ungrouped": "Ungrouped",
2089
- "viewFlat": "Flat",
2090
- "viewByEnvironment": "By Environment",
2165
+ "ungrouped": "未分组",
2166
+ "viewFlat": "平铺视图",
2167
+ "viewByEnvironment": "按环境分组",
2091
2168
  "noQuotaDataAvailable": "无可用配额数据",
2092
2169
  "noAccountsForTierFilter": "未找到适用于层过滤器的帐户",
2093
2170
  "tierAll": "全部",
@@ -2123,16 +2200,16 @@
2123
2200
  "loadingPricing": "正在加载定价数据...",
2124
2201
  "pricingRatesFormat": "定价格式",
2125
2202
  "noPricingData": "无可用定价数据",
2126
- "noModelsFound": "没有找到型号"
2203
+ "noModelsFound": "没有找到模型"
2127
2204
  },
2128
2205
  "loggers": {
2129
2206
  "allProviders": "所有提供商",
2130
- "allModels": "所有型号",
2207
+ "allModels": "所有模型",
2131
2208
  "allAccounts": "所有账户",
2132
2209
  "allApiKeys": "所有 API 密钥",
2133
2210
  "allTypes": "所有类型",
2134
2211
  "allLevels": "所有级别",
2135
- "modelAZ": "型号 A-Z",
2212
+ "modelAZ": "模型 A-Z",
2136
2213
  "modelZA": "Z-A型",
2137
2214
  "loadingLogs": "正在加载日志...",
2138
2215
  "loadingProxyLogs": "正在加载代理日志...",
@@ -2150,7 +2227,7 @@
2150
2227
  "usageOverview": "使用概述",
2151
2228
  "outputTokens": "输出代币",
2152
2229
  "totalCost": "总成本",
2153
- "usageByModel": "按型号使用",
2230
+ "usageByModel": "按模型使用",
2154
2231
  "usageByAccount": "按帐户使用情况",
2155
2232
  "failedToLoad": "无法加载使用情况统计信息。",
2156
2233
  "tokenHealth": "令牌健康",
@@ -2216,7 +2293,8 @@
2216
2293
  "orRemovePasswordHashField": "或删除passwordHash字段",
2217
2294
  "restartServerWithNewPassword": "重新启动服务器 - 它将使用新密码",
2218
2295
  "backToLogin": "返回登录",
2219
- "forgotPassword": "忘记密码?"
2296
+ "forgotPassword": "忘记密码?",
2297
+ "defaultPasswordHint": "默认密码:123456(除非已设置 INITIAL_PASSWORD)"
2220
2298
  },
2221
2299
  "landing": {
2222
2300
  "brandName": "全方位路由",
@@ -2228,7 +2306,7 @@
2228
2306
  "versionLive": "v1.0 现已上线",
2229
2307
  "oneEndpoint": "一个端点",
2230
2308
  "allProviders": "所有人工智能提供商",
2231
- "heroDescription": "带有 Web 仪表板的 AI 端点代理 - CLIProxyAPI 的 JavaScript 端口。与 Claude Code、OpenAI Codex、Cline、RooCode 和其他 CLI 工具无缝协作。",
2309
+ "heroDescription": " Web 仪表板的 AI 端点代理,是 CLIProxyAPI 的 JavaScript 版本。可与 Claude Code、OpenAI Codex、Cline、RooCode CLI 工具无缝配合。",
2232
2310
  "getStarted": "开始使用",
2233
2311
  "viewOnGithub": "在 GitHub 上查看",
2234
2312
  "powerfulFeatures": "强大的功能",
@@ -2241,24 +2319,24 @@
2241
2319
  "featureModelFallbackDesc": "发生故障或高延迟时自动切换提供商。",
2242
2320
  "featureUsageTrackingTitle": "使用情况追踪",
2243
2321
  "featureUsageTrackingDesc": "所有模型的详细分析和成本监控。",
2244
- "featureOAuthApiKeysTitle": "OAuth API 密钥",
2322
+ "featureOAuthApiKeysTitle": "OAuth API 密钥",
2245
2323
  "featureOAuthApiKeysDesc": "在一个保管库中安全地管理凭据。",
2246
2324
  "featureCloudSyncTitle": "云同步",
2247
2325
  "featureCloudSyncDesc": "立即跨设备同步您的配置。",
2248
2326
  "featureCliSupportTitle": "CLI 支持",
2249
- "featureCliSupportDesc": "适用于 Claude Code、Codex、Cline、Cursor 等。",
2327
+ "featureCliSupportDesc": "适用于 Claude Code、Codex、Cline、Cursor 等工具。",
2250
2328
  "featureDashboardTitle": "仪表板",
2251
2329
  "featureDashboardDesc": "用于实时流量分析的可视化仪表板。",
2252
- "howItWorks": "OmniRoute 的工作原理",
2330
+ "howItWorks": "OmniRoute 工作原理",
2253
2331
  "howItWorksDescription": "数据从您的应用程序通过我们的智能路由层无缝流向最适合该工作的提供商。",
2254
2332
  "howItWorksStep1Title": "1. CLI 和 SDK",
2255
2333
  "howItWorksStep1Description": "您的请求从您最喜欢的工具或我们的统一 SDK 开始。只需更改基本 URL 即可。",
2256
- "howItWorksStep2Title": "2.OmniRoute 中心",
2334
+ "howItWorksStep2Title": "2. OmniRoute 中枢",
2257
2335
  "howItWorksStep2Description": "我们的引擎分析提示、检查提供商的运行状况以及最低延迟或成本的路线。",
2258
2336
  "howItWorksStep3Title": "3.人工智能提供商",
2259
- "howItWorksStep3Description": "OpenAI、Anthropic、Gemini 或其他公司会立即满足该请求。",
2337
+ "howItWorksStep3Description": "请求会被立即转发给 OpenAI、Anthropic、Gemini 或其他提供商完成处理。",
2260
2338
  "getStartedIn30Seconds": "30 秒内开始",
2261
- "getStartedDescription": "安装 OmniRoute,通过 Web 仪表板配置您的提供商,并开始路由 AI 请求。",
2339
+ "getStartedDescription": "安装 OmniRoute,通过 Web 仪表板配置你的提供商,然后开始路由 AI 请求。",
2262
2340
  "installOmniRoute": "安装 OmniRoute",
2263
2341
  "installStepDescription": "运行 npx 命令立即启动服务器",
2264
2342
  "openDashboard": "打开仪表板",
@@ -2272,7 +2350,7 @@
2272
2350
  "serverRunningOnLabel": "服务器运行于",
2273
2351
  "dashboardLabel": "仪表板",
2274
2352
  "readyToRoute": "准备好路线! ✓",
2275
- "configureProvidersNote": "📝 在仪表板中配置提供程序或使用环境变量",
2353
+ "configureProvidersNote": "📝 在仪表板中配置提供商或使用环境变量",
2276
2354
  "dataLocation": "数据位置:",
2277
2355
  "dataLocationMacLinux": " macOS/Linux:",
2278
2356
  "dataLocationWindows": " 窗户:",
@@ -2285,18 +2363,18 @@
2285
2363
  "legal": "法律",
2286
2364
  "mitLicense": "麻省理工学院许可证",
2287
2365
  "footerTagline": "AI 生成的统一端点。轻松连接、路由和管理您的 AI 提供商。",
2288
- "copyright": "© {year} OmniRoute。版权所有。",
2366
+ "copyright": "© {year} OmniRoute。保留所有权利。",
2289
2367
  "flowToolClaudeCode": "克劳德·科德",
2290
- "flowToolOpenAICodex": "OpenAI 法典",
2368
+ "flowToolOpenAICodex": "OpenAI Codex",
2291
2369
  "flowToolCline": "克莱因",
2292
2370
  "flowToolCursor": "光标",
2293
2371
  "flowProviderOpenAI": "开放人工智能",
2294
- "flowProviderAnthropic": "人择",
2372
+ "flowProviderAnthropic": "Anthropic",
2295
2373
  "flowProviderGemini": "双子座",
2296
- "flowProviderGithubCopilot": "GitHub 副驾驶",
2374
+ "flowProviderGithubCopilot": "GitHub Copilot",
2297
2375
  "interactiveDiagram": "桌面上可见的交互式图表",
2298
2376
  "ctaTitle": "准备好简化您的人工智能基础设施了吗?",
2299
- "ctaDescription": "与开发人员一起简化 AI OmniRoute 的集成。开源且免费启动。",
2377
+ "ctaDescription": "加入更多开发者,一起用 OmniRoute 简化 AI 集成流程。开源且可免费开始使用。",
2300
2378
  "startFree": "免费开始",
2301
2379
  "readDocumentation": "阅读文档"
2302
2380
  },
@@ -2305,22 +2383,24 @@
2305
2383
  "quickStart": "快速入门",
2306
2384
  "features": "特点",
2307
2385
  "supportedProviders": "支持的提供商",
2308
- "supportedProvidersToc": "供应商",
2386
+ "supportedProvidersToc": "提供商",
2309
2387
  "commonUseCases": "常见用例",
2310
2388
  "clientCompatibility": "客户端兼容性",
2311
2389
  "protocolsToc": "协议",
2312
2390
  "apiReference": "API参考",
2391
+ "managementApiReference": "管理 API 参考",
2392
+ "managementApiDescription": "用于代理注册表、作用域绑定以及旧版代理迁移的自动化接口。",
2313
2393
  "method": "方法",
2314
2394
  "path": "路径",
2315
2395
  "notes": "注释",
2316
- "modelPrefixes": "型号前缀",
2396
+ "modelPrefixes": "模型前缀",
2317
2397
  "prefix": "前缀",
2318
2398
  "troubleshooting": "故障排除",
2319
2399
  "supportsChat": "支持聊天和响应端点。",
2320
- "oauthAutoRefresh": "具有自动令牌刷新功能的 OAuth 连接。",
2321
- "fullStreaming": "对所有型号的完全流媒体支持。",
2400
+ "oauthAutoRefresh": "支持自动刷新 Token 的 OAuth 连接。",
2401
+ "fullStreaming": "所有模型都支持完整流式输出。",
2322
2402
  "docsLabel": "文档",
2323
- "docsHeroDescription": "适用于多提供商法学硕士的人工智能网关。 OpenAI、Anthropic、Gemini、GitHub Copilot、Claude Code、Cursor 以及 20 多个提供商的一个端点。",
2403
+ "docsHeroDescription": "面向多提供商 LLM 的 AI 网关。一个端点即可统一接入 OpenAI、Anthropic、Gemini、GitHub Copilot、Claude Code、Cursor 20+ 提供商。",
2324
2404
  "openDashboard": "打开仪表板",
2325
2405
  "endpointPage": "端点页面",
2326
2406
  "github": "GitHub",
@@ -2333,12 +2413,12 @@
2333
2413
  "quickStartStep2Title": "2. 创建API密钥",
2334
2414
  "quickStartStep2Text": "转至端点 -> 注册密钥。每个环境生成一个密钥。",
2335
2415
  "quickStartStep3Title": "3. 连接提供商",
2336
- "quickStartStep3Text": "通过 OAuth 登录、API 密钥或免费层自动连接添加提供商帐户。",
2416
+ "quickStartStep3Text": "通过 OAuth 登录、API 密钥或免费套餐自动接入来添加提供商账户。",
2337
2417
  "quickStartStep4Title": "4. 设置客户端基本 URL",
2338
2418
  "quickStartStep4Prefix": "将您的 IDE 或 API 客户端指向",
2339
- "quickStartStep4Suffix": "例如,使用提供者前缀",
2419
+ "quickStartStep4Suffix": "例如使用提供商前缀",
2340
2420
  "featureRoutingTitle": "多提供商路由",
2341
- "featureRoutingText": "通过单个 OpenAI 兼容端点将请求路由到 30 多个 AI 提供商。支持聊天、响应、音频和图像 API。",
2421
+ "featureRoutingText": "通过单一 OpenAI 兼容端点将请求路由到 30+ AI 提供商,支持聊天、Responses、音频和图像 API。",
2342
2422
  "featureCombosTitle": "组合和平衡",
2343
2423
  "featureCombosText": "使用后备链和平衡策略创建模型组合:循环、优先级、随机、最少使用和成本优化。",
2344
2424
  "featureUsageTitle": "使用情况和成本跟踪",
@@ -2348,19 +2428,19 @@
2348
2428
  "featureHealthTitle": "健康监测",
2349
2429
  "featureHealthText": "实时健康检查、提供商状态、断路器状态以及具有指数退避功能的自动速率限制检测。",
2350
2430
  "featureCliTitle": "CLI工具",
2351
- "featureCliText": "管理 IDE 配置、导出/导入备份、发现 Codex 配置文件以及从仪表板配置设置。",
2431
+ "featureCliText": "可在仪表板中管理 IDE 配置、导出/导入备份、发现 Codex 配置文件并修改设置。",
2352
2432
  "featureSecurityTitle": "安全和政策",
2353
2433
  "featureSecurityText": "API 密钥身份验证、IP 过滤、提示注入防护、域策略、会话管理和审核日志记录。",
2354
2434
  "featureCloudSyncTitle": "云同步",
2355
- "featureCloudSyncText": "将您的配置同步到 Cloudflare Workers,以便通过加密凭据和自动故障转移进行远程访问。",
2356
- "providersAcrossConnectionTypes": "跨三种连接类型的 {count} 提供程序。",
2435
+ "featureCloudSyncText": "将配置同步到 Cloudflare Workers,以便通过加密凭据和自动故障转移实现远程访问。",
2436
+ "providersAcrossConnectionTypes": "跨三种连接类型的 {count} 提供商。",
2357
2437
  "manageProviders": "管理提供商",
2358
2438
  "providersCount": "{count} 提供商",
2359
2439
  "providerTypeFree": "免费套餐",
2360
- "providerTypeOAuth": "开放认证",
2440
+ "providerTypeOAuth": "OAuth",
2361
2441
  "providerTypeApiKey": "API密钥",
2362
2442
  "useCaseSingleEndpointTitle": "许多提供商的单一端点",
2363
- "useCaseSingleEndpointText": "将客户端指向一个基本 URL 并按模型前缀进行路由(例如:gh/、cc/、kr/、openai/)。",
2443
+ "useCaseSingleEndpointText": "将客户端统一指向一个 Base URL,再通过模型前缀进行路由(例如:gh/、cc/、kr/、openai/)。",
2364
2444
  "useCaseFallbackTitle": "使用组合进行回退和模型切换",
2365
2445
  "useCaseFallbackText": "在仪表板中创建组合模型,并在提供商内部轮换时保持客户端配置稳定。",
2366
2446
  "useCaseUsageVisibilityTitle": "使用情况、成本和调试可见性",
@@ -2368,53 +2448,60 @@
2368
2448
  "clientCherryStudioTitle": "樱桃工作室",
2369
2449
  "baseUrlLabel": "基本网址",
2370
2450
  "chatEndpointLabel": "聊天端点",
2371
- "modelRecommendationLabel": "型号推荐:显式前缀",
2372
- "clientCodexTitle": "Codex / GitHub 副驾驶模型",
2451
+ "modelRecommendationLabel": "模型建议:显式前缀",
2452
+ "clientCodexTitle": "Codex / GitHub Copilot 模型",
2373
2453
  "clientCodexBullet1": "使用模型 ID",
2374
- "clientCodexBullet2": "Codex 系列模型自动路由至",
2454
+ "clientCodexBullet2": "Codex 系列模型会自动路由到",
2375
2455
  "clientCodexBullet3": "非法典模型继续",
2376
2456
  "clientCursorTitle": "光标集成开发环境",
2377
2457
  "clientCursorBullet1": "使用",
2378
2458
  "clientCursorBullet1Suffix": "光标模型的前缀。",
2379
- "clientCursorBullet2": "OAuth 连接 - 从提供商页面登录。",
2459
+ "clientCursorBullet2": "OAuth 连接方式:在 Providers 页面中登录。",
2380
2460
  "clientClaudeTitle": "克劳德·代码 / 反重力",
2381
2461
  "clientClaudeBullet1Prefix": "使用",
2382
2462
  "clientClaudeBullet1Middle": "(克劳德)或",
2383
2463
  "clientClaudeBullet1Suffix": "(反重力)前缀。",
2384
- "protocolsTitle": "Protocols: MCP & A2A",
2385
- "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.",
2386
- "protocolMcpTitle": "MCP (Model Context Protocol)",
2387
- "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.",
2388
- "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.",
2389
- "protocolMcpStep2": "Point your MCP client to stdio transport.",
2390
- "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.",
2391
- "protocolA2aTitle": "A2A (Agent2Agent)",
2392
- "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.",
2393
- "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.",
2394
- "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.",
2395
- "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.",
2396
- "protocolTroubleshootingTitle": "Protocol Troubleshooting",
2397
- "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.",
2398
- "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.",
2399
- "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.",
2400
- "endpointChatNote": "OpenAI 兼容的聊天端点(默认)。",
2401
- "endpointResponsesNote": "响应 API 端点(Codex、o 系列)。",
2464
+ "protocolsTitle": "协议:MCP A2A",
2465
+ "protocolsDescription": "除了 OpenAI 兼容 API 之外,OmniRoute 还提供两类操作协议:用于工具执行的 MCP,以及用于智能体协作工作流的 A2A",
2466
+ "protocolMcpTitle": "MCPModel Context Protocol",
2467
+ "protocolMcpDesc": "通过 stdio 使用 MCP,让客户端发现并调用 OmniRoute 工具,同时具备审计可见性。",
2468
+ "protocolMcpStep1": "使用 `omniroute --mcp` 启动 MCP 传输。",
2469
+ "protocolMcpStep2": "将你的 MCP 客户端指向 stdio 传输。",
2470
+ "protocolMcpStep3": "调用 `omniroute_get_health` `omniroute_list_combos` 验证连通性。",
2471
+ "protocolA2aTitle": "A2AAgent2Agent",
2472
+ "protocolA2aDesc": "使用 A2A JSON-RPC 以同步方式或通过 SSE 流式方式提交任务。",
2473
+ "protocolA2aStep1": "读取 `/.well-known/agent.json` 进行智能体发现。",
2474
+ "protocolA2aStep2": " `POST /a2a` 发送 `message/send` `message/stream` 请求。",
2475
+ "protocolA2aStep3": "通过 `tasks/get` `tasks/cancel` 管理任务生命周期。",
2476
+ "protocolTroubleshootingTitle": "协议故障排查",
2477
+ "protocolTroubleshooting1": "如果 MCP 状态为离线,请确认 stdio 进程正在运行,且心跳文件持续更新。",
2478
+ "protocolTroubleshooting2": "如果 A2A 任务长时间停留在 `working`,请检查 `/api/a2a/tasks/:id` 和流事件中是否出现终态。",
2479
+ "protocolTroubleshooting3": "可使用 `/dashboard/mcp` `/dashboard/a2a` 进行运行控制并查看审计信息。",
2480
+ "endpointChatNote": "OpenAI 兼容聊天端点(默认)。",
2481
+ "endpointResponsesNote": "Responses API 端点(Codex、o 系列)。",
2402
2482
  "endpointModelsNote": "所有连接的提供商的模型目录。",
2403
2483
  "endpointAudioNote": "音频转录(Deepgram、AssemblyAI)。",
2404
2484
  "endpointImagesNote": "图像生成(NanoBanana)。",
2405
2485
  "endpointRewriteChatNote": "为没有 /v1 的客户端重写帮助程序。",
2406
2486
  "endpointRewriteResponsesNote": "重写不带 /v1 的响应帮助程序。",
2407
2487
  "endpointRewriteModelsNote": "重写模型发现助手,无需 /v1。",
2408
- "modelPrefixesDescriptionStart": "在模型名称之前使用提供程序前缀可路由到特定提供程序。示例:",
2409
- "modelPrefixesDescriptionEnd": "路由至 GitHub Copilot。",
2410
- "provider": "提供者",
2488
+ "mgmtProxiesListNote": "列出已保存的代理注册项(支持分页)。",
2489
+ "mgmtProxiesCreateNote": "在注册表中创建可复用的代理项。",
2490
+ "mgmtProxiesHealthNote": "基于代理日志获取每个已保存代理的 24 小时 / 滚动健康指标。",
2491
+ "mgmtProxiesBulkAssignNote": "一次请求即可为多个 scope ID 统一分配或清除同一个代理。",
2492
+ "mgmtAssignmentsListNote": "按 scope、scope_id 或 proxy_id 列出代理绑定关系。",
2493
+ "mgmtAssignmentsUpdateNote": "为 global/provider/account/combo 作用域分配或清除代理。",
2494
+ "mgmtLegacyMigrationNote": "将旧版 proxyConfig 映射导入为注册表绑定关系。",
2495
+ "modelPrefixesDescriptionStart": "在模型名称之前使用提供商前缀可路由到特定提供商。示例:",
2496
+ "modelPrefixesDescriptionEnd": "会被路由到 GitHub Copilot。",
2497
+ "provider": "提供商",
2411
2498
  "type": "类型",
2412
- "troubleshootingModelRouting": "如果客户端模型路由失败,请使用显式提供程序/模型(例如:gh/gpt-5.1-codex)。",
2413
- "troubleshootingAmbiguousModels": "如果您收到不明确的模型错误,请选择提供程序前缀而不是裸模型 ID。",
2414
- "troubleshootingCodexFamily": "对于 GitHub Codex 系列模型,将模型保留为 gh/codex-model;路由器自动选择/响应。",
2415
- "troubleshootingTestConnection": "在从 IDE 或外部客户端进行测试之前,请使用仪表板 > 提供程序 > 测试连接。",
2499
+ "troubleshootingModelRouting": "如果客户端在模型路由上失败,请使用显式 provider/model(例如:gh/gpt-5.1-codex)。",
2500
+ "troubleshootingAmbiguousModels": "如果您收到不明确的模型错误,请选择提供商前缀而不是裸模型 ID。",
2501
+ "troubleshootingCodexFamily": "对于 GitHub Codex 系列模型,请保持模型名为 `gh/codex-model`;路由器会自动选择 `/responses`。",
2502
+ "troubleshootingTestConnection": "在从 IDE 或外部客户端进行测试之前,请使用仪表板 > 提供商 > 测试连接。",
2416
2503
  "troubleshootingCircuitBreaker": "如果提供商显示断路器已打开,请等待冷却或查看运行状况页面以了解详细信息。",
2417
- "troubleshootingOAuth": "对于 OAuth 提供商,如果令牌过期,请重新进行身份验证。检查提供商卡状态指示灯。"
2504
+ "troubleshootingOAuth": "对于 OAuth 提供商,如果 Token 过期,请重新认证,并检查提供商卡片上的状态指示器。"
2418
2505
  },
2419
2506
  "legal": {
2420
2507
  "privacyPolicy": "隐私政策",
@@ -2436,21 +2523,21 @@
2436
2523
  "policyLastUpdatedDate": "2026 年 2 月 13 日",
2437
2524
  "listSeparator": "-",
2438
2525
  "questionsVisit": "有问题吗?访问我们的",
2439
- "githubRepository": "GitHub 存储库",
2526
+ "githubRepository": "GitHub 仓库",
2440
2527
  "privacySection1Title": "1. 本地优先架构",
2441
- "privacySection1Text": "OmniRoute 被设计为本地优先的应用程序。所有数据处理和存储完全发生在您的机器上。没有集中服务器收集您的信息。",
2528
+ "privacySection1Text": "OmniRoute 是一款本地优先的应用。所有数据处理和存储都只发生在你的设备上,不存在集中式服务器收集你的信息。",
2442
2529
  "privacySection2Title": "2. 我们存储的数据",
2443
2530
  "privacyDataStoredIn": "以下数据存储在本地",
2444
- "privacyDataProviderConfigurationsDesc": "连接 URL、提供程序类型和优先级设置",
2531
+ "privacyDataProviderConfigurationsDesc": "连接 URL、提供商类型和优先级设置",
2445
2532
  "privacyDataApiKeysDesc": "加密并存储在本地,以便与人工智能提供商进行身份验证",
2446
2533
  "privacyDataUsageLogsDesc": "请求计数、令牌使用情况、模型名称、时间戳和响应时间",
2447
2534
  "privacyDataApplicationSettingsDesc": "主题偏好、路由策略和组合配置",
2448
2535
  "privacySection3Title": "3. 无遥测",
2449
- "privacySection3Text": "OmniRoute 不收集遥测、分析或崩溃报告。不会向我们或任何第三方发送任何数据。您的使用模式、API 调用和配置完全保密。",
2536
+ "privacySection3Text": "OmniRoute 不收集遥测、分析或崩溃报告。不会向我们或任何第三方发送数据。你的使用模式、API 调用和配置都会保持私密。",
2450
2537
  "privacySection4Title": "4. 第三方人工智能提供商",
2451
- "privacySection4Text": "当您通过 OmniRoute 进行 API 调用时,您的请求将转发到您已配置的 AI 提供商(例如:OpenAI、Anthropic、Google)。这些提供商有自己的隐私政策来管理他们如何处理您的数据。请查看:",
2538
+ "privacySection4Text": "当你通过 OmniRoute 发起 API 调用时,请求会被转发到你配置的 AI 提供商(例如:OpenAI、Anthropic、Google)。这些提供商有各自的隐私政策,请查阅:",
2452
2539
  "privacyOpenAiPolicy": "OpenAI 隐私政策",
2453
- "privacyAnthropicPolicy": "人择隐私政策",
2540
+ "privacyAnthropicPolicy": "Anthropic 隐私政策",
2454
2541
  "privacyGooglePolicy": "谷歌隐私政策",
2455
2542
  "privacySection5Title": "5. 云同步(可选)",
2456
2543
  "privacySection5Text": "如果您启用可选的云同步功能,提供商配置和 API 密钥可能会传输到配置的云端点。此功能默认处于禁用状态,需要明确选择加入。",
@@ -2460,72 +2547,60 @@
2460
2547
  "privacySection7TextStart": "由于所有数据都存储在本地,因此您拥有完全的控制权。您可以随时删除您的数据,方法是删除",
2461
2548
  "privacySection7TextEnd": "目录或使用仪表板中的数据库备份和恢复功能。",
2462
2549
  "termsSection1Title": "1. 概述",
2463
- "termsSection1Text": "OmniRoute 是本地优先的 AI API 代理路由器,完全在您的计算机上运行。它通过负载平衡、故障转移和使用情况跟踪将请求路由到多个 AI 提供商。",
2550
+ "termsSection1Text": "OmniRoute 是一款本地优先的 AI API 代理路由器,完全运行在你的设备上。它通过负载均衡、故障回退和用量跟踪,将请求路由到多个 AI 提供商。",
2464
2551
  "termsSection2Title": "2. 用户的责任",
2465
- "termsResponsibilityApiKeys": "您全权负责管理您自己的 API 密钥和第三方 AI 提供商(OpenAI、Anthropic、Google 等)的凭证。",
2466
- "termsResponsibilityCompliance": "您必须遵守您通过 OmniRoute 访问其 API 的每个 AI 提供商的服务条款。",
2467
- "termsResponsibilitySecurity": "您负责本地 OmniRoute 安装的安全,包括设置密码和限制网络访问。",
2552
+ "termsResponsibilityApiKeys": "你需要自行负责管理自己的 API 密钥,以及第三方 AI 提供商(OpenAI、Anthropic、Google 等)的凭证。",
2553
+ "termsResponsibilityCompliance": "你必须遵守通过 OmniRoute 访问的每个 AI 提供商的服务条款。",
2554
+ "termsResponsibilitySecurity": "你需要负责本地 OmniRoute 安装的安全,包括设置密码和限制网络访问。",
2468
2555
  "termsSection3Title": "3. 工作原理",
2469
- "termsSection3Text": "OmniRoute 充当中间代理。发送到 OmniRoute 的 API 调用将被转换并转发到您配置的 AI 提供商。除了必要的协议转换之外,OmniRoute 不会修改您的请求或响应的内容。",
2556
+ "termsSection3Text": "OmniRoute 充当中间代理。发送到 OmniRoute 的 API 调用会被转换后转发到你配置的 AI 提供商。除必要的协议转换外,OmniRoute 不会修改你的请求或响应内容。",
2470
2557
  "termsSection4Title": "4. 数据处理",
2471
- "termsDataStoredLocally": "所有数据都存储在您本地计算机上的 SQLite 数据库中。",
2472
- "termsNoTransmission": "除非您明确启用云同步功能,否则 OmniRoute 不会将任何数据传输到外部服务器。",
2558
+ "termsDataStoredLocally": "所有数据都保存在你本机上的 SQLite 数据库中。",
2559
+ "termsNoTransmission": "除非你明确启用云同步功能,否则 OmniRoute 不会将任何数据传输到外部服务器。",
2473
2560
  "termsDataLocationText": "使用日志、API 密钥和配置存储在",
2474
2561
  "termsSection5Title": "5. 免责声明",
2475
- "termsSection5Text": "OmniRoute 按“原样”提供,不提供任何形式的保证。我们不对因 API 使用、服务中断或数据丢失而产生的任何费用负责。始终维护配置的备份。",
2562
+ "termsSection5Text": "OmniRoute 按“原样”提供,不附带任何形式的保证。我们不对 API 使用成本、服务中断或数据丢失造成的任何损失负责。请始终为配置做好备份。",
2476
2563
  "termsSection6Title": "6. 开源",
2477
2564
  "termsSection6Text": "OmniRoute 是开源软件。您可以根据其许可条款自由检查、修改和分发它。"
2478
2565
  },
2479
- "endpoints": {
2480
- "tabProxy": "端点代理",
2481
- "tabApiEndpoints": "API 端点",
2482
- "apiEndpointsTitle": "API 端点",
2483
- "apiEndpointsDescription": "可被其他应用程序和服务使用的后端API端点。",
2484
- "comingSoon": "即将推出",
2485
- "plannedFeatures": "计划的功能",
2486
- "featureRestApi": "REST API目录与交互式文档",
2487
- "featureWebhooks": "Webhook配置和事件订阅",
2488
- "featureSwagger": "OpenAPI / Swagger规范自动生成",
2489
- "featureAuth": "每个端点的API密钥和OAuth范围管理"
2490
- },
2491
2566
  "agents": {
2492
- "title": "CLI Agents",
2493
- "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.",
2494
- "refresh": "Refresh",
2495
- "installed": "Installed",
2496
- "notFound": "Not Found",
2497
- "builtIn": "Built-in",
2498
- "custom": "Custom",
2499
- "remove": "Remove",
2500
- "addCustomAgent": "Add Custom Agent",
2501
- "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.",
2502
- "agentName": "Agent Name",
2503
- "binaryName": "Binary Name",
2504
- "versionCommand": "Version Command",
2505
- "spawnArgs": "Spawn Args",
2506
- "addAgent": "Add Agent"
2567
+ "title": "CLI 智能体",
2568
+ "description": "发现系统中已安装的 CLI 智能体,并支持添加自定义智能体以便自动检测。",
2569
+ "refresh": "刷新",
2570
+ "installed": "已安装",
2571
+ "notFound": "未找到",
2572
+ "builtIn": "内置",
2573
+ "custom": "自定义",
2574
+ "remove": "移除",
2575
+ "addCustomAgent": "添加自定义智能体",
2576
+ "addCustomAgentDesc": "注册任意 CLI 工具用于检测,刷新时会自动扫描。",
2577
+ "agentName": "智能体名称",
2578
+ "binaryName": "可执行文件名",
2579
+ "versionCommand": "版本命令",
2580
+ "spawnArgs": "启动参数",
2581
+ "addAgent": "添加智能体"
2507
2582
  },
2508
2583
  "autoCombo": {
2509
- "title": "Auto-Combo Engine",
2510
- "statusNormal": "Normal",
2511
- "statusIncident": "Incident Mode",
2512
- "modePack": "Mode Pack",
2513
- "providerScores": "Provider Scores",
2514
- "noAutoCombo": "No auto-combo configured.",
2515
- "excludedProviders": "Excluded Providers",
2516
- "noExclusions": "No providers currently excluded.",
2517
- "factorQuota": "Quota",
2518
- "factorHealth": "Health",
2519
- "factorCost": "Cost",
2520
- "factorLatency": "Latency",
2521
- "factorTaskFit": "Task Fit",
2522
- "factorStability": "Stability",
2523
- "factorTierPriority": "Tier Priority",
2524
- "factorTierPriorityDesc": "Prefers accounts with higher quota tiers (Ultra/Pro over Free)",
2525
- "scoreFactorBreakdown": "Scoring Factors",
2526
- "modePackShipFast": "Ship Fast",
2527
- "modePackCostSaver": "Cost Saver",
2528
- "modePackQualityFirst": "Quality First",
2529
- "modePackOfflineFriendly": "Offline Friendly"
2584
+ "title": "自动组合引擎",
2585
+ "statusNormal": "正常",
2586
+ "statusIncident": "事件模式",
2587
+ "modePack": "模式包",
2588
+ "providerScores": "提供商得分",
2589
+ "noAutoCombo": "尚未配置自动组合。",
2590
+ "excludedProviders": "已排除的提供商",
2591
+ "noExclusions": "当前没有被排除的提供商。",
2592
+ "factorQuota": "配额",
2593
+ "factorHealth": "健康度",
2594
+ "factorCost": "成本",
2595
+ "factorLatency": "延迟",
2596
+ "factorTaskFit": "任务匹配度",
2597
+ "factorStability": "稳定性",
2598
+ "factorTierPriority": "套餐优先级",
2599
+ "factorTierPriorityDesc": "优先选择配额等级更高的账户(Ultra/Pro 高于 Free",
2600
+ "scoreFactorBreakdown": "评分因子",
2601
+ "modePackShipFast": "快速交付",
2602
+ "modePackCostSaver": "节省成本",
2603
+ "modePackQualityFirst": "质量优先",
2604
+ "modePackOfflineFriendly": "离线友好"
2530
2605
  }
2531
2606
  }