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.
- package/app/.next/BUILD_ID +1 -1
- package/app/.next/build-manifest.json +2 -2
- package/app/.next/prerender-manifest.json +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error.html +2 -2
- package/app/.next/server/app/_global-error.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__09c944b3._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__167585da._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__3972de72._.js +5 -5
- package/app/.next/server/chunks/[root-of-the-server]__64bd5d97._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__784fb7c5._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__7d9b23e7._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__80e3bfc3._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__84e445b2._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__92cb0def._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__a630d6ef._.js +5 -5
- package/app/.next/server/chunks/[root-of-the-server]__cb8a67d1._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__db2f9fe0._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__dc47ee64._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__f0f9eb3f._.js +2 -2
- package/app/.next/server/chunks/_05c48915._.js +1 -1
- package/app/.next/server/chunks/_1244636c._.js +5 -5
- package/app/.next/server/chunks/_2115d8de._.js +1 -1
- package/app/.next/server/chunks/_3ac953eb._.js +1 -1
- package/app/.next/server/chunks/_4b8fd853._.js +1 -1
- package/app/.next/server/chunks/_68683848._.js +1 -1
- package/app/.next/server/chunks/_ee9b677b._.js +1 -1
- package/app/.next/server/chunks/open-sse_translator_index_ts_f5fd0821._.js +9 -9
- package/app/.next/server/chunks/src_lib_a886ee1f._.js +1 -1
- package/app/.next/server/chunks/src_shared_validation_schemas_ts_4e63863a._.js +1 -1
- package/app/.next/server/chunks/ssr/[root-of-the-server]__9affb65e._.js +1 -1
- package/app/.next/server/chunks/ssr/[root-of-the-server]__a6942102._.js +1 -1
- package/app/.next/server/chunks/ssr/_5a9cd299._.js +1 -1
- package/app/.next/server/chunks/ssr/src_d3225e36._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_zh-CN_json_f4112d90._.js +1 -1
- package/app/.next/server/pages/500.html +2 -2
- package/app/.next/server/server-reference-manifest.js +1 -1
- package/app/.next/server/server-reference-manifest.json +1 -1
- package/app/.next/static/chunks/02afac1b585d8219.css +1 -0
- package/app/.next/static/chunks/{d3cb88d181c61235.js → 4bed5b394f9dece9.js} +1 -1
- package/app/.next/static/chunks/{4f099d0f5b0f00d6.js → b5cc103e16794392.js} +1 -1
- package/app/.next/static/chunks/d19ab4efcaddd1db.js +1 -0
- package/app/CHANGELOG.md +20 -0
- package/app/docs/openapi.yaml +1 -1
- package/app/open-sse/executors/kiro.ts +5 -2
- package/app/open-sse/handlers/chatCore.ts +11 -3
- package/app/open-sse/translator/helpers/toolCallHelper.ts +58 -15
- package/app/open-sse/translator/index.ts +10 -3
- package/app/open-sse/utils/stream.ts +129 -19
- package/app/open-sse/utils/usageTracking.ts +3 -1
- package/app/package-lock.json +2 -2
- package/app/package.json +1 -1
- package/app/src/app/(dashboard)/dashboard/providers/[id]/page.tsx +22 -0
- package/app/src/app/api/keys/[id]/route.ts +26 -4
- package/app/src/app/api/provider-models/route.ts +3 -1
- package/app/src/i18n/messages/zh-CN.json +862 -787
- package/app/src/lib/db/models.ts +25 -0
- package/app/src/lib/usage/callLogs.ts +6 -2
- package/app/src/shared/components/RequestLoggerDetail.tsx +10 -10
- package/app/src/shared/validation/schemas.ts +1 -0
- package/app/src/sse/handlers/chat.ts +8 -3
- package/package.json +1 -1
- package/app/.next/static/chunks/194dbd564ba7150b.css +0 -1
- package/app/.next/static/chunks/3f3d822837a5ff5f.js +0 -1
- /package/app/.next/static/{Y1ARupD8_nbYoMt6WYrBO → JoLoKHY_9DVANe7Qs4D0K}/_buildManifest.js +0 -0
- /package/app/.next/static/{Y1ARupD8_nbYoMt6WYrBO → JoLoKHY_9DVANe7Qs4D0K}/_clientMiddlewareManifest.json +0 -0
- /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
|
-
"
|
|
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
|
-
"
|
|
80
|
+
"issues": "问题反馈",
|
|
81
|
+
"endpoints": "端点",
|
|
82
|
+
"apiManager": "API 管理",
|
|
78
83
|
"logs": "日志",
|
|
79
|
-
"auditLog": "
|
|
80
|
-
"shutdown": "
|
|
81
|
-
"restart": "
|
|
82
|
-
"shutdownConfirm": "
|
|
83
|
-
"restartConfirm": "
|
|
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": "
|
|
93
|
-
"presetColors": "
|
|
94
|
-
"createTheme": "
|
|
95
|
-
"chooseColor": "
|
|
96
|
-
"themeCoral": "
|
|
97
|
-
"themeBlue": "
|
|
98
|
-
"themeRed": "
|
|
99
|
-
"themeGreen": "
|
|
100
|
-
"themeViolet": "
|
|
101
|
-
"themeOrange": "
|
|
102
|
-
"themeCyan": "
|
|
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": "
|
|
110
|
-
"description": "
|
|
111
|
-
"presetColors": "
|
|
112
|
-
"customTheme": "
|
|
113
|
-
"customThemeDesc": "
|
|
114
|
-
"createTheme": "
|
|
115
|
-
"activePreset": "
|
|
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": "
|
|
122
|
+
"providers": "提供商",
|
|
123
|
+
"providerDescription": "管理 AI 提供商连接",
|
|
122
124
|
"combos": "组合",
|
|
123
|
-
"comboDescription": "
|
|
124
|
-
"usage": "
|
|
125
|
-
"usageDescription": "
|
|
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": "
|
|
133
|
+
"homeDescription": "欢迎使用 OmniRoute",
|
|
132
134
|
"endpoint": "端点",
|
|
133
|
-
"endpointDescription": "管理代理端点、MCP、A2A
|
|
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
|
|
137
|
+
"mcpDescription": "Model Context Protocol 服务管理与工具",
|
|
144
138
|
"a2a": "A2A",
|
|
145
|
-
"a2aDescription": "Agent-to-Agent
|
|
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": "
|
|
151
|
+
"quickStartDesc": "4 个步骤快速上手:连接提供商、路由模型并监控全局运行情况。",
|
|
150
152
|
"fullDocs": "完整文档",
|
|
151
|
-
"step1Title": "1. 创建API密钥",
|
|
152
|
-
"step1Desc": "
|
|
153
|
+
"step1Title": "1. 创建 API 密钥",
|
|
154
|
+
"step1Desc": "前往 <endpoint>Endpoint</endpoint> -> Registered Keys。为每个环境生成一个独立密钥。",
|
|
153
155
|
"step2Title": "2. 连接提供商",
|
|
154
|
-
"step2Desc": "在 <providers>Providers</providers>
|
|
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": "
|
|
159
|
-
"providersOverview": "
|
|
160
|
-
"configuredOf": "{
|
|
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": "
|
|
194
|
+
"revokeConfirm": "确定要撤销这个 API 密钥吗?",
|
|
193
195
|
"noKeys": "还没有 API 密钥",
|
|
194
|
-
"noKeysDesc": "
|
|
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": "
|
|
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": "
|
|
225
|
-
"usageTips": "
|
|
226
|
-
"tipAuth": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
277
|
+
"failedDeleteKeyRetry": "删除密钥失败,请重试。",
|
|
278
|
+
"invalidModelsSelection": "模型选择无效",
|
|
279
|
+
"cannotSelectMoreThanModels": "最多只能选择 {max} 个模型",
|
|
258
280
|
"failedUpdatePermissions": "更新权限失败",
|
|
259
|
-
"failedUpdatePermissionsRetry": "
|
|
281
|
+
"failedUpdatePermissionsRetry": "更新权限失败,请重试。",
|
|
260
282
|
"unknownProvider": "未知",
|
|
261
|
-
"copyMaskedKey": "
|
|
262
|
-
"modelsCount": "{count
|
|
263
|
-
"lastUsedOn": "
|
|
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": "
|
|
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": "
|
|
299
|
-
"prompt": "
|
|
320
|
+
"model": "模型",
|
|
321
|
+
"prompt": "提示词",
|
|
300
322
|
"generate": "生成",
|
|
301
|
-
"generating": "
|
|
302
|
-
"loadingModels": "
|
|
303
|
-
"noModels": "
|
|
304
|
-
"error": "
|
|
305
|
-
"result": "
|
|
306
|
-
"imageDescription": "
|
|
307
|
-
"videoDescription": "
|
|
308
|
-
"musicDescription": "
|
|
323
|
+
"generating": "生成中...",
|
|
324
|
+
"loadingModels": "正在加载可用模型...",
|
|
325
|
+
"noModels": "暂无可用模型。请先配置支持媒体能力的提供商。",
|
|
326
|
+
"error": "生成失败",
|
|
327
|
+
"result": "结果",
|
|
328
|
+
"imageDescription": "使用 OpenAI、xAI、Together、Hyperbolic、SD WebUI、ComfyUI 等根据文本提示生成图像。",
|
|
329
|
+
"videoDescription": "通过 ComfyUI 或 SD WebUI 使用 AnimateDiff、Stable 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": "
|
|
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": "
|
|
372
|
-
"failedStop": "
|
|
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
|
|
378
|
-
"antigravityStep1": "1. 启动 MITM
|
|
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.
|
|
439
|
+
"antigravityStep3": "3. 打开 Antigravity,请求就会被代理。",
|
|
382
440
|
"sudoPasswordRequiredTitle": "需要 sudo 密码",
|
|
383
441
|
"sudoPasswordHint": "修改主机文件和系统代理设置需要管理员密码。",
|
|
384
|
-
"enterSudoPassword": "输入sudo密码",
|
|
385
|
-
"sudoPasswordRequiredError": "
|
|
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": "
|
|
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": "
|
|
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
|
|
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": "
|
|
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
|
|
465
|
-
"kiro": "Amazon Kiro — AI
|
|
522
|
+
"opencode": "OpenCode AI 编码智能体(终端)",
|
|
523
|
+
"kiro": "Amazon Kiro — AI 驱动 IDE"
|
|
466
524
|
},
|
|
467
525
|
"guides": {
|
|
468
526
|
"cursor": {
|
|
469
527
|
"notes": {
|
|
470
|
-
"0": "
|
|
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": "
|
|
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": "
|
|
519
|
-
"desc": "
|
|
576
|
+
"title": "安装 OpenCode",
|
|
577
|
+
"desc": "通过 npm 安装:npm install -g opencode-ai"
|
|
520
578
|
},
|
|
521
579
|
"2": {
|
|
522
|
-
"title": "API
|
|
580
|
+
"title": "API 密钥"
|
|
523
581
|
},
|
|
524
582
|
"3": {
|
|
525
|
-
"title": "
|
|
583
|
+
"title": "设置 Base URL",
|
|
526
584
|
"desc": "opencode config set baseUrl {{baseUrl}}"
|
|
527
585
|
},
|
|
528
586
|
"4": {
|
|
529
|
-
"title": "
|
|
587
|
+
"title": "选择模型"
|
|
530
588
|
}
|
|
531
589
|
}
|
|
532
590
|
},
|
|
533
591
|
"kiro": {
|
|
534
592
|
"steps": {
|
|
535
593
|
"1": {
|
|
536
|
-
"title": "
|
|
537
|
-
"desc": "
|
|
594
|
+
"title": "打开 Kiro 设置",
|
|
595
|
+
"desc": "前往 Settings → AI Provider"
|
|
538
596
|
},
|
|
539
597
|
"2": {
|
|
540
598
|
"title": "Base URL",
|
|
541
|
-
"desc": "
|
|
599
|
+
"desc": "粘贴你的 OmniRoute 端点 URL"
|
|
542
600
|
},
|
|
543
601
|
"3": {
|
|
544
|
-
"title": "API
|
|
602
|
+
"title": "API 密钥"
|
|
545
603
|
},
|
|
546
604
|
"4": {
|
|
547
|
-
"title": "
|
|
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": "
|
|
602
|
-
"weightedDesc": "
|
|
603
|
-
"roundRobinDesc": "
|
|
604
|
-
"randomDesc": "
|
|
605
|
-
"leastUsedDesc": "
|
|
606
|
-
"costOptimizedDesc": "
|
|
607
|
-
"strictRandom": "
|
|
608
|
-
"strictRandomDesc": "
|
|
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": "
|
|
624
|
-
"strategyGuideWhen": "
|
|
625
|
-
"strategyGuideAvoid": "
|
|
626
|
-
"strategyGuideExample": "
|
|
679
|
+
"leastUsed": "最少使用",
|
|
680
|
+
"costOpt": "成本优化",
|
|
681
|
+
"strategyGuideTitle": "如何使用这种策略",
|
|
682
|
+
"strategyGuideWhen": "适用场景",
|
|
683
|
+
"strategyGuideAvoid": "不适用场景",
|
|
684
|
+
"strategyGuideExample": "示例",
|
|
627
685
|
"strategyGuide": {
|
|
628
686
|
"priority": {
|
|
629
|
-
"when": "
|
|
630
|
-
"avoid": "
|
|
631
|
-
"example": "
|
|
687
|
+
"when": "你有一个首选模型,只希望在失败时才切换到备用模型。",
|
|
688
|
+
"avoid": "你需要在多个模型之间分配流量。",
|
|
689
|
+
"example": "主力编码模型 + 发生故障时切换到更便宜的备份模型。"
|
|
632
690
|
},
|
|
633
691
|
"weighted": {
|
|
634
|
-
"when": "
|
|
635
|
-
"avoid": "
|
|
636
|
-
"example": "80%
|
|
692
|
+
"when": "你需要在多个模型之间按比例分配流量。",
|
|
693
|
+
"avoid": "你无法长期维护准确的权重。",
|
|
694
|
+
"example": "80% 稳定模型 + 20% 金丝雀模型的发布方案。"
|
|
637
695
|
},
|
|
638
696
|
"round-robin": {
|
|
639
|
-
"when": "
|
|
640
|
-
"avoid": "
|
|
641
|
-
"example": "
|
|
697
|
+
"when": "你希望流量分布可预测且均匀。",
|
|
698
|
+
"avoid": "模型之间的延迟或成本差异很大。",
|
|
699
|
+
"example": "同一模型挂在多个账号上,用于分摊吞吐。"
|
|
642
700
|
},
|
|
643
701
|
"random": {
|
|
644
|
-
"when": "
|
|
645
|
-
"avoid": "
|
|
646
|
-
"example": "
|
|
702
|
+
"when": "你只需要简单分流,且不想做太多配置。",
|
|
703
|
+
"avoid": "你需要严格的流量保证。",
|
|
704
|
+
"example": "对等模型之间的快速原型验证。"
|
|
647
705
|
},
|
|
648
706
|
"least-used": {
|
|
649
|
-
"when": "
|
|
650
|
-
"avoid": "
|
|
651
|
-
"example": "
|
|
707
|
+
"when": "你希望根据实时负载动态均衡。",
|
|
708
|
+
"avoid": "流量太低,无法体现按使用量均衡的价值。",
|
|
709
|
+
"example": "混合负载场景下,某个模型常常更容易过载。"
|
|
652
710
|
},
|
|
653
711
|
"cost-optimized": {
|
|
654
|
-
"when": "
|
|
655
|
-
"avoid": "
|
|
656
|
-
"example": "
|
|
712
|
+
"when": "降低成本是你的首要目标。",
|
|
713
|
+
"avoid": "定价数据缺失或已经过期。",
|
|
714
|
+
"example": "后台任务或批处理作业,优先考虑更低成本。"
|
|
657
715
|
}
|
|
658
716
|
},
|
|
659
717
|
"advancedHelp": {
|
|
660
|
-
"maxRetries": "
|
|
661
|
-
"retryDelay": "
|
|
662
|
-
"timeout": "
|
|
663
|
-
"healthcheck": "
|
|
664
|
-
"concurrencyPerModel": "
|
|
665
|
-
"queueTimeout": "
|
|
718
|
+
"maxRetries": "请求失败前最多会尝试多少次重试。",
|
|
719
|
+
"retryDelay": "两次重试之间的初始等待时间。值越大越能降低突发压力。",
|
|
720
|
+
"timeout": "请求被中止前允许的最长持续时间。",
|
|
721
|
+
"healthcheck": "路由决策时跳过不健康的模型或提供商。",
|
|
722
|
+
"concurrencyPerModel": "轮询模式下每个模型允许的最大并发请求数。",
|
|
723
|
+
"queueTimeout": "请求在队列中等待超时前允许停留的最长时间。"
|
|
666
724
|
},
|
|
667
|
-
"templatesTitle": "
|
|
668
|
-
"templatesDescription": "
|
|
669
|
-
"templateApply": "
|
|
670
|
-
"templateHighAvailability": "
|
|
671
|
-
"templateHighAvailabilityDesc": "
|
|
672
|
-
"templateCostSaver": "
|
|
673
|
-
"templateCostSaverDesc": "
|
|
674
|
-
"templateBalanced": "
|
|
675
|
-
"templateBalancedDesc": "
|
|
676
|
-
"usageGuideHide": "
|
|
677
|
-
"usageGuideDontShowAgain": "
|
|
678
|
-
"usageGuideShow": "
|
|
679
|
-
"quickTestTitle": "
|
|
680
|
-
"quickTestDescription": "
|
|
681
|
-
"testNow": "
|
|
682
|
-
"pricingCoverage": "
|
|
683
|
-
"pricingCoverageHint": "
|
|
684
|
-
"pricingAvailable": "
|
|
685
|
-
"pricingMissing": "
|
|
686
|
-
"pricingAvailableShort": "
|
|
687
|
-
"pricingMissingShort": "
|
|
688
|
-
"warningRoundRobinSingleModel": "
|
|
689
|
-
"warningCostOptimizedPartialPricing": "
|
|
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": "
|
|
703
|
-
"saveBlockPricing": "
|
|
704
|
-
"recommendationsLabel": "
|
|
705
|
-
"applyRecommendations": "
|
|
706
|
-
"recommendationsUpdated": "
|
|
707
|
-
"recommendationsApplied": "
|
|
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": "
|
|
711
|
-
"description": "
|
|
712
|
-
"tip1": "
|
|
713
|
-
"tip2": "
|
|
714
|
-
"tip3": "
|
|
768
|
+
"title": "稳妥基线",
|
|
769
|
+
"description": "使用一个主模型,并保持回退链路简短且可靠。",
|
|
770
|
+
"tip1": "把最可靠的模型放在第一位。",
|
|
771
|
+
"tip2": "保留 1 到 2 个质量相近的备用模型。",
|
|
772
|
+
"tip3": "开启安全重试,吸收临时性的提供商故障。"
|
|
715
773
|
},
|
|
716
774
|
"weighted": {
|
|
717
|
-
"title": "
|
|
718
|
-
"description": "
|
|
719
|
-
"tip1": "
|
|
720
|
-
"tip2": "
|
|
721
|
-
"tip3": "
|
|
775
|
+
"title": "可控流量分配",
|
|
776
|
+
"description": "非常适合金丝雀发布和模型渐进迁移。",
|
|
777
|
+
"tip1": "建议从 90/10 这样的保守配比开始。",
|
|
778
|
+
"tip2": "始终保持总权重为 100%,并在调整后自动平衡。",
|
|
779
|
+
"tip3": "在提高金丝雀权重前,先观察成功率和延迟。"
|
|
722
780
|
},
|
|
723
781
|
"round-robin": {
|
|
724
|
-
"title": "
|
|
725
|
-
"description": "
|
|
726
|
-
"tip1": "
|
|
727
|
-
"tip2": "
|
|
728
|
-
"tip3": "
|
|
782
|
+
"title": "可预测的负载分摊",
|
|
783
|
+
"description": "适合模型能力接近、且需要平滑分布流量的场景。",
|
|
784
|
+
"tip1": "至少使用 2 个模型。",
|
|
785
|
+
"tip2": "设置并发限制,避免突发流量打满单个模型。",
|
|
786
|
+
"tip3": "结合队列超时,在饱和时快速失败。"
|
|
729
787
|
},
|
|
730
788
|
"random": {
|
|
731
|
-
"title": "
|
|
732
|
-
"description": "
|
|
733
|
-
"tip1": "
|
|
734
|
-
"tip2": "
|
|
735
|
-
"tip3": "
|
|
789
|
+
"title": "低配置快速分散",
|
|
790
|
+
"description": "适用于不需要严格保证、只想简单分流的场景。",
|
|
791
|
+
"tip1": "尽量选择延迟特征相近的模型。",
|
|
792
|
+
"tip2": "保留重试机制,以吸收随机命中的失败。",
|
|
793
|
+
"tip3": "更适合实验场景,不建议用于严格 SLA。"
|
|
736
794
|
},
|
|
737
795
|
"least-used": {
|
|
738
|
-
"title": "
|
|
739
|
-
"description": "
|
|
740
|
-
"tip1": "
|
|
741
|
-
"tip2": "
|
|
742
|
-
"tip3": "
|
|
796
|
+
"title": "自适应均衡",
|
|
797
|
+
"description": "优先路由到使用更少的模型,随着时间降低热点。",
|
|
798
|
+
"tip1": "持续稳定流量下效果更好。",
|
|
799
|
+
"tip2": "结合健康检查,能获得更稳妥的均衡效果。",
|
|
800
|
+
"tip3": "跟踪各模型用量,验证分布改善情况。"
|
|
743
801
|
},
|
|
744
802
|
"cost-optimized": {
|
|
745
|
-
"title": "
|
|
746
|
-
"description": "
|
|
747
|
-
"tip1": "
|
|
748
|
-
"tip2": "
|
|
749
|
-
"tip3": "
|
|
803
|
+
"title": "预算优先路由",
|
|
804
|
+
"description": "在具备定价元数据时,优先路由到成本更低的模型。",
|
|
805
|
+
"tip1": "确保所有已选模型都具备定价信息。",
|
|
806
|
+
"tip2": "为高难度提示保留一个质量更高的回退模型。",
|
|
807
|
+
"tip3": "适合批处理或后台任务等成本是主要指标的场景。"
|
|
750
808
|
}
|
|
751
809
|
},
|
|
752
|
-
"templateFreeStack": "
|
|
753
|
-
"templateFreeStackDesc": "
|
|
810
|
+
"templateFreeStack": "免费栈($0)",
|
|
811
|
+
"templateFreeStackDesc": "在所有免费提供商之间进行轮询:Kiro(Claude)、iFlow(5 个模型)、Qwen(4 个模型)、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": "
|
|
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": "
|
|
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": "
|
|
855
|
+
"settingsApi": "设置 API",
|
|
798
856
|
"categoryCore": "核心 API",
|
|
799
|
-
"categoryMedia": "
|
|
800
|
-
"
|
|
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": "
|
|
804
|
-
"cloudBenefitShare": "
|
|
865
|
+
"whatYouGet": "启用后可获得",
|
|
866
|
+
"cloudBenefitAccess": "从世界任何地方访问你的 API",
|
|
867
|
+
"cloudBenefitShare": "方便与团队共享端点",
|
|
805
868
|
"cloudBenefitPorts": "无需开放端口或配置防火墙",
|
|
806
|
-
"cloudBenefitEdge": "
|
|
807
|
-
"cloudSessionNote": "
|
|
808
|
-
"cloudUnstableNote": "
|
|
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": "
|
|
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": "
|
|
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
|
|
840
|
-
"sectionTitle": "
|
|
841
|
-
"sectionDescription": "OpenAI
|
|
842
|
-
"tabApis": "
|
|
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
|
|
851
|
-
"protocolToolsLabel": "
|
|
852
|
-
"protocolTasksLabel": "
|
|
853
|
-
"protocolActiveStreamsLabel": "
|
|
854
|
-
"protocolLastActivity": "
|
|
855
|
-
"quickStart": "
|
|
856
|
-
"openMcpDashboard": "
|
|
857
|
-
"openA2aDashboard": "
|
|
858
|
-
"mcpQuickStartTitle": "MCP
|
|
859
|
-
"mcpQuickStartStep1": "
|
|
860
|
-
"mcpQuickStartStep2": "
|
|
861
|
-
"mcpQuickStartStep3": "
|
|
862
|
-
"a2aQuickStartTitle": "A2A
|
|
863
|
-
"a2aQuickStartStep1": "
|
|
864
|
-
"a2aQuickStartStep2": "
|
|
865
|
-
"a2aQuickStartStep3": "
|
|
866
|
-
"completionsLegacy": "Completions
|
|
867
|
-
"completionsLegacyDesc": "
|
|
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": "
|
|
871
|
-
"activate": "
|
|
872
|
-
"deactivate": "
|
|
873
|
-
"confirmSwitchCombo": "
|
|
874
|
-
"switchComboFailed": "
|
|
875
|
-
"switchComboSuccess": "
|
|
876
|
-
"confirmApplyProfile": "
|
|
877
|
-
"applyProfileFailed": "
|
|
878
|
-
"applyProfileSuccess": "
|
|
879
|
-
"confirmResetBreakers": "
|
|
880
|
-
"resetBreakersFailed": "
|
|
881
|
-
"resetBreakersSuccess": "
|
|
882
|
-
"processStatus": "
|
|
883
|
-
"online": "
|
|
884
|
-
"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": "
|
|
887
|
-
"lastHeartbeat": "
|
|
888
|
-
"activity24h": "
|
|
889
|
-
"totalCalls": "
|
|
890
|
-
"successRate": "
|
|
891
|
-
"avgLatency": "
|
|
892
|
-
"topTools": "
|
|
893
|
-
"noToolCalls24h": "
|
|
894
|
-
"runtimeDetails": "
|
|
895
|
-
"transport": "
|
|
896
|
-
"scopesEnforced": "
|
|
897
|
-
"yes": "
|
|
898
|
-
"no": "
|
|
899
|
-
"lastCall": "
|
|
900
|
-
"heartbeatPath": "
|
|
901
|
-
"operationalControls": "
|
|
902
|
-
"switchCombo": "
|
|
903
|
-
"inactive": "
|
|
904
|
-
"active": "
|
|
905
|
-
"activateCombo": "
|
|
906
|
-
"deactivateCombo": "
|
|
907
|
-
"applyResilienceProfile": "
|
|
908
|
-
"profileAggressive": "
|
|
909
|
-
"profileBalanced": "
|
|
910
|
-
"profileConservative": "
|
|
911
|
-
"applyProfile": "
|
|
912
|
-
"resetCircuitBreakers": "
|
|
913
|
-
"resetCircuitBreakersHelp": "
|
|
914
|
-
"resetAllBreakers": "
|
|
915
|
-
"toolsAndScopes": "
|
|
916
|
-
"tableTool": "
|
|
917
|
-
"tableScopes": "
|
|
918
|
-
"tablePhase": "
|
|
919
|
-
"tableAudit": "
|
|
920
|
-
"auditLog": "
|
|
921
|
-
"auditSummary": "
|
|
922
|
-
"allTools": "
|
|
923
|
-
"allResults": "
|
|
924
|
-
"success": "
|
|
925
|
-
"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": "
|
|
928
|
-
"noAuditEntriesForFilters": "
|
|
929
|
-
"tableTimestamp": "
|
|
930
|
-
"tableDuration": "
|
|
931
|
-
"tableResult": "
|
|
932
|
-
"tableApiKey": "API
|
|
933
|
-
"failed": "
|
|
934
|
-
"previous": "
|
|
935
|
-
"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": "
|
|
939
|
-
"confirmCancelTask": "
|
|
940
|
-
"cancelTaskFailed": "
|
|
941
|
-
"cancelTaskSuccess": "
|
|
942
|
-
"smokeSendFailed": "message/send
|
|
943
|
-
"smokeSendSuccessWithTask": "message/send
|
|
944
|
-
"smokeSendSuccess": "message/send
|
|
945
|
-
"smokeStreamFailed": "message/stream
|
|
946
|
-
"smokeStreamSuccessWithTask": "message/stream
|
|
947
|
-
"smokeStreamNoTaskId": "message/stream
|
|
948
|
-
"health": "
|
|
949
|
-
"ok": "
|
|
950
|
-
"totalTasks": "
|
|
951
|
-
"activeStreams": "
|
|
952
|
-
"lastTask": "
|
|
953
|
-
"taskStateOverview": "
|
|
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": "
|
|
956
|
-
"working": "
|
|
957
|
-
"completed": "
|
|
958
|
-
"failed": "
|
|
959
|
-
"cancelled": "
|
|
1030
|
+
"submitted": "已提交",
|
|
1031
|
+
"working": "处理中",
|
|
1032
|
+
"completed": "已完成",
|
|
1033
|
+
"failed": "失败",
|
|
1034
|
+
"cancelled": "已取消"
|
|
960
1035
|
},
|
|
961
|
-
"agentCard": "
|
|
962
|
-
"version": "
|
|
1036
|
+
"agentCard": "智能体卡片",
|
|
1037
|
+
"version": "版本",
|
|
963
1038
|
"url": "URL",
|
|
964
|
-
"capabilities": "
|
|
965
|
-
"agentCardNotAvailable": "Agent
|
|
966
|
-
"quickValidation": "
|
|
967
|
-
"quickValidationDescription": "
|
|
968
|
-
"runMessageSend": "
|
|
969
|
-
"runMessageStream": "
|
|
970
|
-
"taskManagement": "
|
|
971
|
-
"taskSummary": "{total}
|
|
972
|
-
"allStates": "
|
|
973
|
-
"allSkills": "
|
|
974
|
-
"loadingTasks": "
|
|
975
|
-
"noTasksForFilters": "
|
|
976
|
-
"tableTask": "
|
|
977
|
-
"tableSkill": "
|
|
978
|
-
"tableState": "
|
|
979
|
-
"tableUpdated": "
|
|
980
|
-
"tableActions": "
|
|
981
|
-
"view": "
|
|
982
|
-
"cancel": "
|
|
983
|
-
"previous": "
|
|
984
|
-
"next": "
|
|
985
|
-
"taskDetail": "
|
|
986
|
-
"close": "
|
|
987
|
-
"metadata": "
|
|
988
|
-
"events": "
|
|
989
|
-
"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": "
|
|
1256
|
-
"responsesApi": "
|
|
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 {#
|
|
1362
|
+
"importSuccessCount": "成功导入 {count, plural, one {# 个模型} other {# 个模型}}!",
|
|
1287
1363
|
"noNewModelsAddedExisting": "没有添加新模型(全部已存在)。",
|
|
1288
|
-
"importDoneCount": "✓
|
|
1364
|
+
"importDoneCount": "✓ 完成!共导入 {count, plural, one {# 个模型。} other {# 个模型。}}",
|
|
1289
1365
|
"unexpectedErrorOccurred": "发生意外错误",
|
|
1290
|
-
"connectionCountLabel": "{count
|
|
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": "
|
|
1346
|
-
"openRouterModelPlaceholder": "
|
|
1347
|
-
"customModels": "
|
|
1348
|
-
"customModelsHint": "
|
|
1349
|
-
"modelId": "
|
|
1350
|
-
"customModelPlaceholder": "
|
|
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": "
|
|
1364
|
-
"anthropicCompatibleModelPlaceholder": "
|
|
1365
|
-
"openaiCompatibleModelPlaceholder": "
|
|
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": "
|
|
1374
|
-
"validationChecksOpenAiCompatible": "
|
|
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": "
|
|
1384
|
-
"groupPlaceholder": "
|
|
1459
|
+
"groupLabel": "环境",
|
|
1460
|
+
"groupPlaceholder": "例如:eKaizen、Personal",
|
|
1385
1461
|
"failedTestConnection": "测试连接失败",
|
|
1386
1462
|
"failed": "失败",
|
|
1387
1463
|
"leaveBlankKeepCurrentApiKey": "留空以保留当前的 API 密钥。",
|
|
1388
1464
|
"editCompatibleTitle": "编辑 {type} 兼容",
|
|
1389
|
-
"compatibleBaseUrlHint": "
|
|
1465
|
+
"compatibleBaseUrlHint": "{type} 兼容 API 的根 URL。若端点路径是自定义的,请在高级设置中配置。",
|
|
1390
1466
|
"apiKeyForCheck": "API 密钥(用于检查)",
|
|
1391
1467
|
"compatibleProdPlaceholder": "{type} 兼容(产品)",
|
|
1392
|
-
"
|
|
1393
|
-
"
|
|
1394
|
-
"
|
|
1468
|
+
"tokenRefreshed": "Token 刷新成功",
|
|
1469
|
+
"tokenRefreshFailed": "Token 刷新失败",
|
|
1470
|
+
"advancedSettings": "高级设置",
|
|
1471
|
+
"chatPathLabel": "聊天端点路径",
|
|
1395
1472
|
"chatPathPlaceholder": "/chat/completions",
|
|
1396
|
-
"chatPathHint": "
|
|
1397
|
-
"modelsPathLabel": "
|
|
1473
|
+
"chatPathHint": "为非标准 API 的提供商自定义聊天路径(例如:/v4/chat/completions)",
|
|
1474
|
+
"modelsPathLabel": "模型端点路径",
|
|
1398
1475
|
"modelsPathPlaceholder": "/models",
|
|
1399
|
-
"modelsPathHint": "
|
|
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": "
|
|
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": "
|
|
1615
|
+
"requireAuthModelsDesc": "开启后,`/v1/models` 对未认证请求返回 404,从而阻止未授权用户发现模型。",
|
|
1539
1616
|
"blockedProviders": "被阻止的提供商",
|
|
1540
|
-
"blockedProvidersDesc": "
|
|
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": "
|
|
1558
|
-
"strictRandomDesc": "
|
|
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": "
|
|
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
|
|
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": "
|
|
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
|
|
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": "
|
|
1815
|
-
"modeDescriptionChatTester": "通过 OmniRoute
|
|
1891
|
+
"modeDescriptionPlayground": "粘贴任意 API 请求体,查看 OmniRoute 如何在不同提供商格式之间进行转换(OpenAI ↔ Claude ↔ Gemini ↔ Responses API)。",
|
|
1892
|
+
"modeDescriptionChatTester": "通过 OmniRoute 发送真实聊天请求,并检查完整往返流程:输入、转换后的请求、提供商响应以及转换后的输出。",
|
|
1816
1893
|
"modeDescriptionTestBench": "运行预定义的场景并比较提供商和模型之间的兼容性。",
|
|
1817
|
-
"modeDescriptionLiveMonitor": "
|
|
1818
|
-
"modeDescriptionFallback": "
|
|
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": "
|
|
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
|
|
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": "
|
|
1902
|
-
"assistantExample": "这是一个简单的排序函数:\n\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": "
|
|
1986
|
+
"systemInstruction": "你是一名专注于分布式系统的高级软件工程师。请使用行业最佳实践简洁作答,并在合适时提供代码示例。回复请使用 Markdown 格式。",
|
|
1910
1987
|
"question": "如何实现断路器模式?"
|
|
1911
1988
|
},
|
|
1912
1989
|
"streaming": {
|
|
1913
1990
|
"prompt": "给我讲一个关于机器人学习绘画的小故事。"
|
|
1914
1991
|
}
|
|
1915
1992
|
},
|
|
1916
|
-
"openaiCompatibleLabel": "兼容
|
|
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
|
|
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
|
|
1941
|
-
"openaiIntermediate": "OpenAI
|
|
1942
|
-
"openaiIntermediateDescription": "
|
|
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": "
|
|
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
|
|
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
|
|
2003
|
-
"evaluate": "
|
|
2079
|
+
"runStepDescription": "通过 OmniRoute 对你的 LLM 端点执行测试用例。每个案例都会作为真实 API 请求发送。",
|
|
2080
|
+
"evaluate": "评估",
|
|
2004
2081
|
"evaluateStepDescription": "将响应与预期标准进行比较。查看每种情况的通过/失败情况以及延迟指标和详细反馈。",
|
|
2005
2082
|
"evalSuites": "评估套件",
|
|
2006
|
-
"evalSuitesHint": "
|
|
2083
|
+
"evalSuitesHint": "点击套件可查看测试用例,然后运行以评估你的 LLM 端点",
|
|
2007
2084
|
"evalsLoading": "正在加载评估套件...",
|
|
2008
2085
|
"noEvalSuitesFound": "未找到评估套件",
|
|
2009
|
-
"noEvalSuitesDescription": "
|
|
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
|
|
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": "
|
|
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": "
|
|
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": "
|
|
2070
|
-
"accountsCount": "{count
|
|
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": "
|
|
2089
|
-
"viewFlat": "
|
|
2090
|
-
"viewByEnvironment": "
|
|
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": "
|
|
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": "
|
|
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
|
|
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
|
|
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": "
|
|
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": "
|
|
2321
|
-
"fullStreaming": "
|
|
2400
|
+
"oauthAutoRefresh": "支持自动刷新 Token 的 OAuth 连接。",
|
|
2401
|
+
"fullStreaming": "所有模型都支持完整流式输出。",
|
|
2322
2402
|
"docsLabel": "文档",
|
|
2323
|
-
"docsHeroDescription": "
|
|
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": "
|
|
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": "
|
|
2431
|
+
"featureCliText": "可在仪表板中管理 IDE 配置、导出/导入备份、发现 Codex 配置文件并修改设置。",
|
|
2352
2432
|
"featureSecurityTitle": "安全和政策",
|
|
2353
2433
|
"featureSecurityText": "API 密钥身份验证、IP 过滤、提示注入防护、域策略、会话管理和审核日志记录。",
|
|
2354
2434
|
"featureCloudSyncTitle": "云同步",
|
|
2355
|
-
"featureCloudSyncText": "
|
|
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": "
|
|
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": "
|
|
2385
|
-
"protocolsDescription": "
|
|
2386
|
-
"protocolMcpTitle": "MCP
|
|
2387
|
-
"protocolMcpDesc": "
|
|
2388
|
-
"protocolMcpStep1": "
|
|
2389
|
-
"protocolMcpStep2": "
|
|
2390
|
-
"protocolMcpStep3": "
|
|
2391
|
-
"protocolA2aTitle": "A2A
|
|
2392
|
-
"protocolA2aDesc": "
|
|
2393
|
-
"protocolA2aStep1": "
|
|
2394
|
-
"protocolA2aStep2": "
|
|
2395
|
-
"protocolA2aStep3": "
|
|
2396
|
-
"protocolTroubleshootingTitle": "
|
|
2397
|
-
"protocolTroubleshooting1": "
|
|
2398
|
-
"protocolTroubleshooting2": "
|
|
2399
|
-
"protocolTroubleshooting3": "
|
|
2400
|
-
"endpointChatNote": "
|
|
2401
|
-
"endpointResponsesNote": "
|
|
2464
|
+
"protocolsTitle": "协议:MCP 与 A2A",
|
|
2465
|
+
"protocolsDescription": "除了 OpenAI 兼容 API 之外,OmniRoute 还提供两类操作协议:用于工具执行的 MCP,以及用于智能体协作工作流的 A2A。",
|
|
2466
|
+
"protocolMcpTitle": "MCP(Model 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": "A2A(Agent2Agent)",
|
|
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
|
-
"
|
|
2409
|
-
"
|
|
2410
|
-
"
|
|
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": "
|
|
2413
|
-
"troubleshootingAmbiguousModels": "
|
|
2414
|
-
"troubleshootingCodexFamily": "对于 GitHub Codex
|
|
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
|
|
2536
|
+
"privacySection3Text": "OmniRoute 不收集遥测、分析或崩溃报告。不会向我们或任何第三方发送数据。你的使用模式、API 调用和配置都会保持私密。",
|
|
2450
2537
|
"privacySection4Title": "4. 第三方人工智能提供商",
|
|
2451
|
-
"privacySection4Text": "
|
|
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
|
|
2550
|
+
"termsSection1Text": "OmniRoute 是一款本地优先的 AI API 代理路由器,完全运行在你的设备上。它通过负载均衡、故障回退和用量跟踪,将请求路由到多个 AI 提供商。",
|
|
2464
2551
|
"termsSection2Title": "2. 用户的责任",
|
|
2465
|
-
"termsResponsibilityApiKeys": "
|
|
2466
|
-
"termsResponsibilityCompliance": "
|
|
2467
|
-
"termsResponsibilitySecurity": "
|
|
2552
|
+
"termsResponsibilityApiKeys": "你需要自行负责管理自己的 API 密钥,以及第三方 AI 提供商(OpenAI、Anthropic、Google 等)的凭证。",
|
|
2553
|
+
"termsResponsibilityCompliance": "你必须遵守通过 OmniRoute 访问的每个 AI 提供商的服务条款。",
|
|
2554
|
+
"termsResponsibilitySecurity": "你需要负责本地 OmniRoute 安装的安全,包括设置密码和限制网络访问。",
|
|
2468
2555
|
"termsSection3Title": "3. 工作原理",
|
|
2469
|
-
"termsSection3Text": "OmniRoute 充当中间代理。发送到 OmniRoute 的 API
|
|
2556
|
+
"termsSection3Text": "OmniRoute 充当中间代理。发送到 OmniRoute 的 API 调用会被转换后转发到你配置的 AI 提供商。除必要的协议转换外,OmniRoute 不会修改你的请求或响应内容。",
|
|
2470
2557
|
"termsSection4Title": "4. 数据处理",
|
|
2471
|
-
"termsDataStoredLocally": "
|
|
2472
|
-
"termsNoTransmission": "
|
|
2558
|
+
"termsDataStoredLocally": "所有数据都保存在你本机上的 SQLite 数据库中。",
|
|
2559
|
+
"termsNoTransmission": "除非你明确启用云同步功能,否则 OmniRoute 不会将任何数据传输到外部服务器。",
|
|
2473
2560
|
"termsDataLocationText": "使用日志、API 密钥和配置存储在",
|
|
2474
2561
|
"termsSection5Title": "5. 免责声明",
|
|
2475
|
-
"termsSection5Text": "OmniRoute
|
|
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
|
|
2493
|
-
"description": "
|
|
2494
|
-
"refresh": "
|
|
2495
|
-
"installed": "
|
|
2496
|
-
"notFound": "
|
|
2497
|
-
"builtIn": "
|
|
2498
|
-
"custom": "
|
|
2499
|
-
"remove": "
|
|
2500
|
-
"addCustomAgent": "
|
|
2501
|
-
"addCustomAgentDesc": "
|
|
2502
|
-
"agentName": "
|
|
2503
|
-
"binaryName": "
|
|
2504
|
-
"versionCommand": "
|
|
2505
|
-
"spawnArgs": "
|
|
2506
|
-
"addAgent": "
|
|
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": "
|
|
2510
|
-
"statusNormal": "
|
|
2511
|
-
"statusIncident": "
|
|
2512
|
-
"modePack": "
|
|
2513
|
-
"providerScores": "
|
|
2514
|
-
"noAutoCombo": "
|
|
2515
|
-
"excludedProviders": "
|
|
2516
|
-
"noExclusions": "
|
|
2517
|
-
"factorQuota": "
|
|
2518
|
-
"factorHealth": "
|
|
2519
|
-
"factorCost": "
|
|
2520
|
-
"factorLatency": "
|
|
2521
|
-
"factorTaskFit": "
|
|
2522
|
-
"factorStability": "
|
|
2523
|
-
"factorTierPriority": "
|
|
2524
|
-
"factorTierPriorityDesc": "
|
|
2525
|
-
"scoreFactorBreakdown": "
|
|
2526
|
-
"modePackShipFast": "
|
|
2527
|
-
"modePackCostSaver": "
|
|
2528
|
-
"modePackQualityFirst": "
|
|
2529
|
-
"modePackOfflineFriendly": "
|
|
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
|
}
|