From e4d1108ad35590591f9fa23cb43fcd3a4d123349 Mon Sep 17 00:00:00 2001 From: ikelvingo Date: Thu, 6 Aug 2026 08:41:19 +0800 Subject: [PATCH] fix(i18n): polish zh-CN/zh-TW translations and fix over-translation of proper nouns (#8872) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Validated in local merge-train (devbox-vm-06-dev002) @ combined-tip (FAST gates green: static + changed tests + vitest — only pre-existing audit.test.ts flake). Evidence: /home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/merge-train-20260805-213228-suite.log --- src/i18n/messages/zh-CN.json | 6418 ++++++++++---------- src/i18n/messages/zh-TW.json | 10778 ++++++++++++++++----------------- 2 files changed, 8598 insertions(+), 8598 deletions(-) diff --git a/src/i18n/messages/zh-CN.json b/src/i18n/messages/zh-CN.json index 3e54fc9cee..6b82ed3032 100644 --- a/src/i18n/messages/zh-CN.json +++ b/src/i18n/messages/zh-CN.json @@ -41,8 +41,8 @@ "type": "类型", "model": "模型", "models": "模型", - "provider": "提供者", - "unknownProvider": "未知提供者", + "provider": "供应商", + "unknownProvider": "未知供应商", "account": "账户", "time": "时间", "details": "详情", @@ -73,11 +73,11 @@ "maintenanceServerIssues": "服务器当前存在异常,部分功能可能暂时不可用。", "maintenanceServerUnreachable": "服务器暂时无法连接,正在重新连接...", "accept": "接受", - "accountId": "账户 ID", + "accountId": "账户ID", "alias": "别名", - "apiKeyId": "API 密钥 ID", - "apiKeyName": "API 密钥名称", - "apiKeySecret": "API 密钥密文", + "apiKeyId": "API Key ID", + "apiKeyName": "API Key名称", + "apiKeySecret": "API Key密文", "authorization": "授权", "content-type": "内容类型", "content-length": "内容长度", @@ -90,19 +90,19 @@ "offset": "偏移量", "open": "打开", "origin": "来源", - "promptTokens": "输入 Tokens", - "completionTokens": "输出 Tokens", - "totalTokens": "总 Tokens", + "promptTokens": "输入Tokens", + "completionTokens": "输出Tokens", + "totalTokens": "总Tokens", "rawModel": "原始模型", "scope": "作用域", - "skill": "技能", + "skill": "Skill", "sortBy": "排序依据", "sortOrder": "排序顺序", "tab": "标签页", "text": "文本", "textarea": "文本域", "tool": "工具", - "toolId": "工具 ID", + "toolId": "工具ID", "web": "网页", "whereUsed": "使用位置", "whitelist": "白名单", @@ -113,7 +113,7 @@ "hex": "十六进制", "range": "范围", "component": "组件", - "redirect_uri": "重定向 URI", + "redirect_uri": "重定向URI", "idempotency-key": "幂等键", "error_description": "错误描述", "code": "代码", @@ -124,19 +124,19 @@ "crypto": "加密", "hours": "小时", "selfsigned": "自签名", - "proxy_id": "代理 ID", - "proxyId": "代理 ID", - "connectionId": "连接 ID", - "resolveConnectionId": "解析连接 ID", - "resolve_connection_id": "解析连接 ID", - "scope_id": "作用域 ID", - "scopeId": "作用域 ID", - "jwtSecret": "JWT 密钥", - "keytar": "keytar", + "proxy_id": "代理ID", + "proxyId": "代理ID", + "connectionId": "连接ID", + "resolveConnectionId": "解析连接ID", + "resolve_connection_id": "解析连接ID", + "scope_id": "作用域ID", + "scopeId": "作用域ID", + "jwtSecret": "JWT密钥", + "keytar": "Keytar", "better-sqlite3": "better-sqlite3", "undici": "undici", - "builder-id": "构建器 ID", - "musicDesc": "音乐描述", + "builder-id": "构建器ID", + "musicDesc": "音乐", "musicGeneration": "音乐生成", "idc": "IDC", "cloud-status-changed": "云状态已变更", @@ -148,9 +148,9 @@ "TOOL_DENYLIST": "工具拒绝列表", "Failed to save pricing": "保存定价失败", "Failed to reset pricing": "重置定价失败", - "apikey": "API 密钥", + "apikey": "API Key", "http": "HTTP", - "goToDashboard": "前往仪表板", + "goToDashboard": "前往看板", "checkSystemStatus": "查看系统状态", "selectModel": "选择模型", "addModel": "添加模型", @@ -165,7 +165,7 @@ "wireApi": "Wire API", "modelAliases": "模型别名", "combos": "组合", - "noModelsFound": "未找到 Model", + "noModelsFound": "未找到模型", "clear": "清除", "done": "完成", "selectAll": "全选", @@ -173,96 +173,96 @@ "visibleModels": "可见", "selectAllConfirm": "将 {count} 个模型添加到此组合?", "errorOccurred": "错误发生", - "comboDeleted": "Combo 已删除", + "comboDeleted": "Combo已删除", "hide": "隐藏", "creating": "正在创建", - "comboCreated": "Combo 已创建", + "comboCreated": "Combo已创建", "swapFormats": "交换格式", "daysAgo": "天前", "retries": "重试次数", "errorDuringRestore": "错误期间恢复", - "eventsAppearHint": "事件显示提示", + "eventsAppearHint": "事件显示说明", "noLockouts": "无锁定", - "webSearchDesc": "Web Search 功能说明", - "audioProvidersHeading": "音频 Provider", - "cloudAgentProviders": "云代理提供者", + "webSearchDesc": "Web Search功能说明", + "audioProvidersHeading": "音频供应商", + "cloudAgentProviders": "云智能体供应商", "minutesAgo": "分钟前", "a": "A", "liveAutoRefreshing": "实时自动刷新中", "webSearch": "网页搜索", - "anthropicPrefixPlaceholder": "Anthropic 前缀", + "anthropicPrefixPlaceholder": "Anthropic前缀", "addModelToCombo": "添加模型到组合", "failedToLoad": "加载失败", "categoryMedia": "类别媒体", "enableCloud": "启用云端", - "expirationBannerExpiringSoon": "过期横幅即将过期即将", + "expirationBannerExpiringSoon": "凭据即将过期", "retry": "重试", "embeddings": "嵌入", "errorCount": "错误数量", - "backupReasonManual": "备份原因手动", + "backupReasonManual": "手动备份", "safeSearchModerate": "安全搜索中等", "activeLimiters": "活跃限制器", "a2aCardTitle": "A2A", - "cloudWorkerUnreachable": "Cloud Worker 不可达", + "cloudWorkerUnreachable": "无法连接Cloud Worker", "testFailed": "测试失败", - "compatibleBaseUrlHint": "填写兼容 API 的 Base URL。", + "compatibleBaseUrlHint": "填写兼容API的Base URL。", "usageTracking": "使用量跟踪", "disableCloudTitle": "禁用云端", "noConnections": "无连接", - "providerHealth": "提供者健康状态", + "providerHealth": "供应商健康状态", "confirmDbImport": "确认DB导入", "notAvailableSymbol": "—", "backupsAvailable": "可用备份", - "providerAuto": "自动提供者", - "newProviderNamePlaceholder": "新的提供者名称", + "providerAuto": "自动供应商", + "newProviderNamePlaceholder": "新的供应商名称", "a2aQuickStartStep2": "A2A快速开始步骤2", "ok": "确定", "available": "可用", - "noBackupYet": "无备份暂无", + "noBackupYet": "暂无备份", "more": "更多", - "noCompatibleYet": "无兼容暂无", - "multiProvider": "多提供者", - "repairEnvHint": "修复环境提示", - "disablingCloud": "正在禁用 Cloud", + "noCompatibleYet": "暂无兼容", + "multiProvider": "多供应商", + "repairEnvHint": "修复环境说明", + "disablingCloud": "正在禁用云端", "testBench": "测试台", "valid": "有效", - "cloudBenefitShare": "共享 Cloud 访问能力", + "cloudBenefitShare": "共享Cloud访问能力", "mcpCardTitle": "MCP", "disableConfirm": "确认禁用?", "filters": "筛选器", - "expirationBannerExpiredDesc": "过期横幅已过期说明", + "expirationBannerExpiredDesc": "凭据已过期说明", "saveComboDefaults": "保存组合默认值", - "cloudConnectedVerified": "Cloud 连接已验证", + "cloudConnectedVerified": "云端连接已验证", "uptime": "运行时间", "compatibleProdPlaceholder": "兼容生产占位符", "fallbackChainsTitle": "后备链", - "oauthLabel": "OAuth 标签", - "a2aCardDescription": "通过 A2A 协议连接 Agent 工作流。", - "okShort": "确定短标签", + "oauthLabel": "OAuth", + "a2aCardDescription": "通过A2A协议连接Agent工作流。", + "okShort": "确定", "maintenance": "维护", "formatConverter": "格式转换器", - "zedImportNetworkError": "Zed 导入网络错误", - "apiKeyLabel": "API key 标签", - "noModelsForProvider": "此提供者没有可用模型", - "mcpCardDescription": "通过 MCP 工具连接 Agent 和自动化流程。", - "apiTypeLabel": "API 类型标签", - "configuredProvidersLabel": "已配置 Provider 标签", - "maxRetriesLabel": "最大重试次数标签", + "zedImportNetworkError": "Zed导入网络错误", + "apiKeyLabel": "API Key", + "noModelsForProvider": "此供应商没有可用模型", + "mcpCardDescription": "通过MCP工具连接Agent和自动化流程。", + "apiTypeLabel": "API类型", + "configuredProvidersLabel": "已配置供应商标签", + "maxRetriesLabel": "最大重试次数", "title": "标题", "output": "输出", - "prefixHint": "前缀提示", + "prefixHint": "前缀说明", "skipWizard": "跳过向导", "failedCount": "失败数量", "confirmDbImportDesc": "确认DB导入说明", "entries": "条目", "until": "直到", "disableCombo": "禁用组合", - "liveMonitorDescriptionPrefix": "实时显示请求流经 OmniRoute 时产生的事件。使用", + "liveMonitorDescriptionPrefix": "实时显示请求流经OmniRoute时产生的事件。使用", "runningCount": "运行中数量", "noActiveConnectionsInGroup": "此分组中没有活跃连接", "savedSuccessfully": "保存成功", "systemStorage": "系统存储", - "videoDesc": "视频说明", + "videoDesc": "视频", "maxResults": "最大结果数", "timeRangeMonth": "时间范围月", "testSummary": "测试摘要", @@ -270,105 +270,105 @@ "audio": "音频", "restore": "恢复", "disableWarning": "禁用警告", - "moderationsDesc": "审核说明", - "providerHealthStatusAria": "提供者健康状态", + "moderationsDesc": "审核", + "providerHealthStatusAria": "供应商健康状态", "modelNamePlaceholder": "模型名称", - "mcpQuickStartStep2": "MCP 快速开始步骤 2", + "mcpQuickStartStep2": "MCP快速开始步骤 2", "quickStart": "快速开始", "fullExportFailedWithError": "完整导出失败:{error}", "loadingBackups": "正在加载备份", "anthropicBaseUrlPlaceholder": "Anthropic Base URL", "description": "描述", - "noProviderFound": "未找到提供者", + "noProviderFound": "未找到供应商", "auto": "自动", "protocolsDescription": "配置并测试支持的协议端点。", - "cloudSessionNote": "Cloud Session 提示", + "cloudSessionNote": "云端会话说明", "advancedSettings": "高级设置", "defaultStrategy": "默认策略", "purgeExpiredLogs": "清理已过期日志", "justNow": "刚刚现在", - "providerTestFailed": "提供者测试失败", + "providerTestFailed": "供应商测试失败", "openaiBaseUrlPlaceholder": "OpenAI Base URL", "image": "图像", "failedCreateChain": "创建链失败", "importDatabase": "导入数据库", "allDataLocal": "全部数据本地", - "sectionTitle": "分区标题", + "sectionTitle": "分区", "failedToggle": "切换失败", - "editCombo": "编辑 Combo", + "editCombo": "编辑Combo", "testResults": "测试结果", "searchQuery": "搜索查询", - "addCcCompatible": "添加 CC 兼容", + "addCcCompatible": "添加Claude Code兼容", "duplicate": "重复", "createCombo": "创建组合", "searchTypeWeb": "搜索类型:Web", "addChain": "添加链", - "prefixLabel": "前缀标签", - "listModelsDesc": "列出可用 Model。", + "prefixLabel": "前缀", + "listModelsDesc": "列出可用Model。", "databaseSize": "数据库大小", "chainCreated": "链已创建", - "providerTestTimeout": "提供者测试超时", + "providerTestTimeout": "供应商测试超时", "routingStrategy": "路由策略", "translateAction": "翻译操作", "exportFailed": "导出失败", "connectedVerificationPending": "连接验证待处理", - "a2aQuickStartTitle": "A2A 快速开始", + "a2aQuickStartTitle": "A2A快速开始", "couldNotTest": "无法测试", "testAllCompatible": "测试所有兼容项", - "anthropicCompatibleName": "Anthropic 兼容名称", + "anthropicCompatibleName": "Anthropic兼容名称", "disabling": "正在禁用", "failedEnable": "启用失败", "categoryUtility": "工具类别", - "customUrlOptional": "自定义 URL(可选)", - "localProviders": "本地 Provider", - "comboNamePlaceholder": "Combo 名称", - "memoryRss": "内存 RSS", - "disableProvider": "禁用提供者", - "welcomeDesc": "欢迎使用 OmniRoute。", - "nameLabel": "名称标签", + "customUrlOptional": "自定义URL(可选)", + "localProviders": "本地供应商", + "comboNamePlaceholder": "Combo名称", + "memoryRss": "内存RSS", + "disableProvider": "禁用供应商", + "welcomeDesc": "欢迎使用OmniRoute。", + "nameLabel": "名称", "allOperational": "全部运行正常", - "backupNow": "备份现在", - "providerMaxRetriesAria": "提供者最大重试次数", + "backupNow": "立即备份", + "providerMaxRetriesAria": "供应商最大重试次数", "textToSpeechDesc": "将文本转换为语音音频。", - "machineId": "机器 ID", + "machineId": "机器ID", "globalProxy": "全局代理", "hitsMisses": "命中未命中", "testDesc": "运行连接测试以验证配置。", - "chatDesc": "聊天说明", + "chatDesc": "聊天", "importSuccess": "导入成功", "chat": "聊天", "a2aQuickStartStep1": "A2A快速开始步骤1", "importFailed": "导入失败", "inputPlaceholder": "输入内容...", - "providerModelsTitle": "提供者模型", + "providerModelsTitle": "供应商模型", "lastBackup": "最近备份", - "yourEndpoint": "你的 Endpoint", + "yourEndpoint": "你的Endpoint", "autoDisableThresholdDesc": "触发自动禁用前允许的连续失败次数。", - "rerankDesc": "重排说明", - "modelsPathPlaceholder": "Model 路径", - "noCombosYet": "暂无 Combo", + "rerankDesc": "重排", + "modelsPathPlaceholder": "Model路径", + "noCombosYet": "暂无组合", "connectedVerificationPendingWithError": "已连接,验证待完成:{error}", - "comboDefaultsGuideHint1": "配置 Combo 默认策略和目标。", + "comboDefaultsGuideHint1": "配置Combo默认策略和目标。", "enableCloudTitle": "启用云端", - "configuredProvidersHint": "仅显示已配置的 Provider。", + "configuredProvidersHint": "仅显示已配置的供应商。", "paused": "已暂停", - "llmProviders": "LLM Provider", + "llmProviders": "LLM供应商", "enableCombo": "启用组合", - "removeProviderOverrideAria": "移除提供者覆盖", - "nodeVersion": "Node 版本", + "removeProviderOverrideAria": "移除供应商覆盖", + "nodeVersion": "Node版本", "openai": "OpenAI", "exportFailedWithError": "导出失败:{error}", "proxyConfigured": "代理已配置", "concurrencyPerModel": "每个模型并发数", - "protocolTasksLabel": "协议任务标签", - "oauthProviders": "OAuth 提供者", + "protocolTasksLabel": "协议任务数", + "oauthProviders": "OAuth供应商", "lockedCount": "已锁定数量", "deleteChainConfirm": "删除此后备链?", "recentTranslations": "最近翻译", - "zedImportButton": "从 Zed 导入", - "responsesDesc": "Responses API 兼容端点", + "zedImportButton": "从Zed导入", + "responsesDesc": "Responses API兼容端点", "testedCount": "已测试数量", - "providersCommaSeparatedPlaceholder": "以逗号分隔的 Provider", + "providersCommaSeparatedPlaceholder": "以逗号分隔的供应商", "signatureDefaults": "签名默认值", "errorCreating": "错误创建", "timeRangeYear": "时间范围年", @@ -378,34 +378,34 @@ "check": "检查", "safeSearch": "安全搜索", "protocolLastActivity": "协议最近活动", - "openMcpDashboard": "打开 MCP Dashboard", + "openMcpDashboard": "打开MCP Dashboard", "testBenchTab": "测试台", - "chatPathLabel": "聊天路径标签", + "chatPathLabel": "聊天路径", "retryDelay": "重试延迟", "errorUpdating": "错误更新", - "ideCliIntegrations": "IDE 与 CLI 集成", + "ideCliIntegrations": "IDE与CLI集成", "imageGeneration": "图像生成", - "apiKeyRequired": "API key 为必填项", + "apiKeyRequired": "API Key为必填项", "resetAllTitle": "全部重置", "connectionError": "连接错误", "modelName": "模型名称", - "apiKeyForCheck": "用于检查的 API 密钥", + "apiKeyForCheck": "用于检查的API Key", "cloudRequestTimeout": "云端请求超时", "showConfiguredOnly": "显示已配置仅", "showFreeOnly": "仅免费", - "addFirstProvider": "添加您的第一个提供者", - "addFirstProviderDesc": "连接 AI 提供者以开始通过 OmniRoute 路由请求。您可以使用免费提供者、API 密钥或 OAuth 帐户。", + "addFirstProvider": "添加您的第一个供应商", + "addFirstProviderDesc": "连接AI供应商以开始通过OmniRoute路由请求。您可以使用免费供应商、API Key或OAuth帐户。", "learnMore": "了解更多", "includeDomains": "包含域名", "promptCache": "提示缓存", - "cloudConnected": "Cloud 已连接", + "cloudConnected": "云端已连接", "deleteChain": "删除链", - "chatPathPlaceholder": "聊天路径占位符", + "chatPathPlaceholder": "聊天路径", "databasePath": "数据库路径", - "usingLocalServer": "正在使用本地 Server", - "globalComboConfig": "全局 Combo 配置", + "usingLocalServer": "正在使用本地Server", + "globalComboConfig": "全局Combo配置", "backupFailed": "备份失败", - "tabProtocols": "协议标签页", + "tabProtocols": "协议", "continue": "继续", "categorySearch": "类别搜索", "rateLimitStatus": "速率限制状态", @@ -413,84 +413,84 @@ "nameRequired": "名称必填", "country": "国家/地区", "trackMetricsDesc": "跟踪请求、延迟和成本指标。", - "durationSecondsShort": "时长秒短标签", - "formatConverterDescription": "在不同 API 格式之间转换请求。", - "cloudBenefitAccess": "访问 Cloud 能力", + "durationSecondsShort": "时长(秒)", + "formatConverterDescription": "在不同API格式之间转换请求。", + "cloudBenefitAccess": "访问Cloud能力", "maxRetries": "最大重试次数", "queueTimeout": "队列超时", "queueDepth": "队列深度", - "addProvider": "添加提供者", + "addProvider": "添加供应商", "realtime": "实时", "totalTranslations": "总计翻译", - "protocolActiveStreamsLabel": "协议活跃 Stream", + "protocolActiveStreamsLabel": "协议活跃Stream", "repairEnv": "修复环境", - "modelsCount": "Model 数量", + "modelsCount": "Model数量", "viewBackups": "查看备份", "responsesApi": "Responses API", - "copyComboName": "复制 Combo 名称", + "copyComboName": "复制Combo名称", "failures": "失败", "failedUpdate": "更新失败", - "imageDesc": "图像说明", + "imageDesc": "图像", "failedCreate": "创建失败", "remainingOfLimit": "剩余Of限制", "protocolsTitle": "协议", - "expirationBannerExpiringSoonDesc": "过期横幅即将过期即将说明", + "expirationBannerExpiringSoonDesc": "凭据即将过期说明", "source": "来源", "failed": "失败", - "apiKeyMgmt": "API key 管理", - "mcpQuickStartStep1": "MCP 快速开始步骤 1", + "apiKeyMgmt": "API Key管理", + "mcpQuickStartStep1": "MCP快速开始步骤 1", "runTest": "运行测试", "loadingFallbackChains": "正在加载后备链", "healthy": "健康", "version": "版本", - "saveBlockWeighted": "保存 Block Weighted", - "zedImportNone": "没有可从 Zed 导入的内容", - "noBackupsYet": "无备份暂无", - "noGlobalProxy": "无全局代理", - "noModels": "无 Model", + "saveBlockWeighted": "保存Block Weighted", + "zedImportNone": "没有可从Zed导入的内容", + "noBackupsYet": "暂无备份", + "noGlobalProxy": "暂无全局代理", + "noModels": "暂无模型", "stickyLimit": "粘性限制", "passedCount": "通过数量", - "zedImportFailed": "Zed 导入失败", + "zedImportFailed": "Zed导入失败", "saving": "正在保存", "testAll": "全部测试", "globalProxyDesc": "全局代理说明", - "latencyP99": "延迟P99", + "latencyP99": "P99 延迟", "connectingToCloud": "正在连接云端", "responses": "响应", "errorDeleting": "错误删除", - "openaiPrefixPlaceholder": "OpenAI 前缀", + "openaiPrefixPlaceholder": "OpenAI前缀", "enterPassword": "输入密码", - "openA2aDashboard": "打开 A2A Dashboard", - "enableProvider": "启用提供者", + "openA2aDashboard": "打开A2A Dashboard", + "enableProvider": "启用供应商", "modeTest": "测试模式", "failedDeleteChain": "删除链失败", - "providerDesc": "提供者描述", + "providerDesc": "供应商描述", "templateLoadHint": "选择模板以快速填充配置。", "lastFailure": "最近失败", "moveDown": "移动下移", - "providerLabel": "提供者标签", + "providerLabel": "供应商", "clearCacheFailed": "清除缓存失败", "imagesGenerations": "图像生成", "repairEnvWorking": "修复环境处理中", - "millisecondsShort": "毫秒短标签", - "globalLabel": "全局标签", - "failuresPlural": "失败复数", - "completionsLegacyDesc": "旧版 Completions API 兼容端点。", - "searchProviders": "搜索 Provider", + "millisecondsShort": "毫秒", + "globalLabel": "全局", + "failuresPlural": "失败", + "completionsLegacyDesc": "旧版Completions API兼容端点。", + "searchProviders": "搜索供应商", "chatPathHint": "聊天路径提示", "defaultStrategyDesc": "默认策略说明", - "latencyP95": "延迟P95", + "latencyP95": "P95 延迟", "textToSpeech": "文本转语音", "searchType": "搜索类型", "messages": "消息", "aggregatorsGateways": "聚合器与网关", - "comboStrategyAria": "Combo 策略", + "comboStrategyAria": "Combo策略", "input": "输入", "testingConnection": "正在测试连接", "excludeDomains": "排除域名", - "webCookieProviders": "Web Cookie 提供者", + "webCookieProviders": "Web Cookie供应商", "allTestsPassed": "全部测试通过", - "openaiCompatibleName": "OpenAI 兼容名称", + "openaiCompatibleName": "OpenAI兼容名称", "warningCostOptimizedPartialPricing": "部分模型缺少定价,成本优化结果可能不完整。", "comboDefaultsGuideTitle": "组合默认值指南", "hoursAgo": "小时前", @@ -498,7 +498,7 @@ "skipAndContinue": "跳过并继续", "moderations": "审核", "proxyConfig": "代理配置", - "upstreamProxyProviders": "上游代理 Provider", + "upstreamProxyProviders": "上游代理供应商", "exportAll": "导出全部", "queuedCount": "排队中数量", "resetAll": "重置全部", @@ -506,116 +506,116 @@ "avgLatency": "平均延迟", "throttleStatus": "限流状态", "backupRetentionDesc": "备份保留说明", - "noCBData": "无CB数据", + "noCBData": "暂无断路器数据", "chainDeleted": "链已删除", "timeLeft": "时间剩余", - "expirationBannerExpired": "过期横幅已过期", + "expirationBannerExpired": "凭据已过期", "language": "语言", "invalidFileType": "无效文件类型", - "monitoredProviders": "监控中的 Provider", + "monitoredProviders": "监控中的供应商", "errors": "错误", "heap": "堆内存", "chatCompletions": "聊天补全", "exampleTemplatesHint": "示例模板提示", "retryDelayLabel": "重试延迟标签", "audioTranscription": "音频转写", - "fallbackChainsDesc": "定义每个模型的提供者后备顺序。", + "fallbackChainsDesc": "定义每个模型的供应商后备顺序。", "exampleTemplates": "示例模板", "connectionsCount": "连接数量", - "modelsPathLabel": "Model 路径", - "activeProvidersHint": "当前正在处理请求的 Provider。", + "modelsPathLabel": "Model路径", + "activeProvidersHint": "当前正在处理请求的供应商。", "activeLockouts": "活跃锁定", "invalid": "无效", "skipPassword": "跳过密码", "moveUp": "移动上移", "timeRange": "时间范围", "stickyLimitDesc": "粘性限制说明", - "cloudBenefitEdge": "边缘 Cloud 能力", + "cloudBenefitEdge": "边缘Cloud能力", "custom": "自定义", "verifying": "正在验证", - "baseUrlLabel": "Base URL 标签", + "baseUrlLabel": "Base URL", "setPassword": "设置密码", "safeSearchStrict": "安全搜索严格", - "noChangesSinceBackup": "无变更自从备份", - "modelsPathHint": "用于拉取 Model 列表的路径。", + "noChangesSinceBackup": "备份后无变更", + "modelsPathHint": "用于拉取Model列表的路径。", "audioTranscriptions": "音频转写", "testCombo": "测试组合", - "mcpQuickStartTitle": "MCP 快速开始", - "comboUpdated": "Combo 已更新", + "mcpQuickStartTitle": "MCP快速开始", + "comboUpdated": "Combo已更新", "weighted": "加权", "providers": "供应商", - "ccCompatibleLabel": "CC 兼容", - "noFallbackChainsDesc": "创建一条链路,用于定义某个模型的提供者回退顺序。", + "ccCompatibleLabel": "CC兼容", + "noFallbackChainsDesc": "创建一条链路,用于定义某个模型的供应商回退顺序。", "yesImport": "确认导入", - "lockoutsAutoRefreshHint": "锁定自动刷新提示", - "tabApis": "API 标签页", - "sectionDescription": "分区描述", + "lockoutsAutoRefreshHint": "锁定自动刷新说明", + "tabApis": "API", + "sectionDescription": "分区说明", "filter": "筛选", "purgeLogsFailed": "清理日志失败", "latency": "延迟", - "testAllOAuth": "测试所有 OAuth", - "mcpQuickStartStep3": "MCP 快速开始步骤 3", + "testAllOAuth": "测试所有OAuth", + "mcpQuickStartStep3": "MCP快速开始步骤 3", "repairEnvFailed": "环境修复失败", - "zedImportHint": "从 Zed 配置中导入 Provider。", - "modelsAcrossEndpoints": "跨 Endpoint 的 Model", + "zedImportHint": "从Zed配置中导入供应商。", + "modelsAcrossEndpoints": "跨Endpoint的Model", "autoDisableBannedAccounts": "自动禁用被封禁账户", - "securityDesc": "安全说明", - "listModels": "列出 Model", + "securityDesc": "安全", + "listModels": "列出Model", "backupRestore": "备份恢复", "target": "目标", - "zedImportSuccess": "Zed 导入成功", - "lastHeaderUpdate": "上次请求头更新", + "zedImportSuccess": "Zed导入成功", + "lastHeaderUpdate": "上次请求标头更新", "categoryCore": "类别核心", - "noFallbackChains": "无后备链", - "noSearchProviders": "无搜索 Provider", + "noFallbackChains": "暂无后备链", + "noSearchProviders": "无搜索供应商", "autoBalance": "自动均衡", - "noModelsYet": "暂无 Model", + "noModelsYet": "暂无模型", "signatureFamily": "签名族", - "externalApiCalls": "外部 API 调用", - "providerOverridesDesc": "覆盖每个提供者的超时和重试设置。", + "externalApiCalls": "外部API调用", + "providerOverridesDesc": "覆盖每个供应商的超时和重试设置。", "signatureTool": "签名工具", "connectionFailed": "连接失败", "activeLimitersPlural": "活跃限制器复数", "doneDesc": "完成说明", "down": "下移", - "noDataYet": "无数据暂无", - "activeProviders": "活跃 Provider", + "noDataYet": "暂无数据", + "activeProviders": "活跃供应商", "nameInvalid": "名称无效", "skip": "跳过", "createChain": "创建链", "audioSpeech": "语音合成", "cacheCleared": "缓存已清除", "searchTypeNews": "搜索类型:News", - "durationMillisecondsShort": "时长毫秒短标签", - "addOpenAICompatible": "添加OpenAI 兼容", + "durationMillisecondsShort": "时长毫秒", + "addOpenAICompatible": "添加打开Ai兼容", "chatTesterTab": "聊天测试标签页", "queued": "排队中", "domainPlaceholder": "域名占位符", - "durationMinutesShort": "时长分钟短标签", + "durationMinutesShort": "时长(分钟)", "verifyingConnection": "正在验证连接", - "imageProviders": "图像 Provider", - "protocolToolsLabel": "协议工具标签", + "imageProviders": "图像供应商", + "protocolToolsLabel": "协议工具数", "queryPlaceholder": "查询占位符", "videoGeneration": "视频生成", "timeRangeWeek": "时间范围:周", "limitExhausted": "限额已耗尽", "failedDisable": "禁用失败", "inMemoryNote": "数据仅保存在内存中。", - "compatibleHint": "兼容提示", - "errorShort": "错误短标签", + "compatibleHint": "兼容说明", + "errorShort": "错误", "advancedHint": "显示高级选项。", "restoreFailed": "恢复失败", - "searchProvidersHeading": "搜索 Provider", - "comboName": "Combo 名称", + "searchProvidersHeading": "搜索供应商", + "comboName": "Combo名称", "autoDisableDescription": "当检测到永久封禁信号时自动禁用账户。", - "embeddingsDesc": "Embeddings API 兼容端点。", + "embeddingsDesc": "Embeddings API兼容端点。", "operational": "运行正常", - "testAllApiKey": "测试所有 API 密钥", + "testAllApiKey": "测试所有API Key", "backupCreated": "备份已创建", "errorDuringImport": "错误期间导入", - "comboDefaultsGuideHint2": "这些默认值会在新建 Combo 时使用。", + "comboDefaultsGuideHint2": "这些默认值会在新建Combo时使用。", "connecting": "正在连接", - "fillModelAndProviders": "请填写模型和提供者", + "fillModelAndProviders": "请填写模型和供应商", "syncing": "正在同步", "resetConfirm": "重置确认", "trackMetrics": "跟踪指标", @@ -624,48 +624,48 @@ "autoDisableThreshold": "自动禁用阈值", "anthropic": "Anthropic", "syncingData": "正在同步数据", - "cloudBenefitPorts": "通过 Cloud 暴露端口", - "compatibleProviders": "兼容 Provider", - "freeTierProviders": "免费层级提供者", + "cloudBenefitPorts": "通过Cloud暴露端口", + "compatibleProviders": "兼容供应商", + "freeTierProviders": "免费层级供应商", "freeTierLabel": "提供免费套餐", - "freeTierProvidersDesc": "提供免费套餐的提供者 — 有些需要 API 密钥注册,有些则根本不需要凭据。", + "freeTierProvidersDesc": "提供免费套餐的供应商—有些需要API Key注册,有些则根本不需要凭据。", "clearCache": "清除缓存", "reqs": "请求数", - "addAnthropicCompatible": "添加 Anthropic 兼容 Provider", - "apiKeyProviders": "API key Provider", + "addAnthropicCompatible": "添加Anthropic兼容供应商", + "apiKeyProviders": "API Key供应商", "tabsAria": "标签页", "resetting": "正在重置", - "millisecondsAbbr": "毫秒缩写", + "millisecondsAbbr": "毫秒", "backupReasonPreRestore": "恢复前备份", "disableCloud": "禁用云端", - "newProviderNameAria": "新的提供者名称", + "newProviderNameAria": "新的供应商名称", "passwordsMismatch": "密码不匹配", "a2aQuickStartStep3": "A2A快速开始步骤3", - "liveMonitorDescriptionSuffix": "或外部 API 调用来生成事件。", - "failedAddProvider": "添加提供者失败", - "addAtLeastOneProvider": "至少添加一个提供者", - "reasonSeparator": "原因分隔符", - "zedImporting": "正在从 Zed 导入", + "liveMonitorDescriptionSuffix": "或外部API调用来生成事件。", + "failedAddProvider": "添加供应商失败", + "addAtLeastOneProvider": "至少添加一个供应商", + "reasonSeparator": " — ", + "zedImporting": "正在从Zed导入", "confirmPasswordPlaceholder": "确认密码占位符", "whatYouGet": "你将获得", - "signatureSession": "签名 Session", - "errorCountNoCode": "无代码错误数", + "signatureSession": "签名Session", + "errorCountNoCode": "无代码错误", "testing": "正在测试", - "providersCommaSeparated": "以逗号分隔的 Provider", + "providersCommaSeparated": "以逗号分隔的供应商", "exportDatabase": "导出数据库", "hitRate": "命中率", - "completionsLegacy": "Completions 旧版", + "completionsLegacy": "Completions旧版", "removeModel": "移除模型", "timeRangeDay": "时间范围:天", "cloudRequestFailed": "云端请求失败", "updatedAt": "更新时间", - "monitoredProvidersHint": "选择需要监控的 Provider。", + "monitoredProvidersHint": "选择需要监控的供应商。", "connectionSuccessful": "连接成功", - "latencyP50": "延迟P50", + "latencyP50": "P50 延迟", "logsDeleted": "日志已删除", "chatTester": "聊天测试器", - "safeSearchOff": "Safe Search 关闭", - "nameHint": "名称提示", + "safeSearchOff": "Safe Search关闭", + "nameHint": "名称说明", "debugToggle": "调试开关", "embedding": "嵌入", "issuesLabel": "问题标签", @@ -678,27 +678,27 @@ "issuesDetected": "检测到问题", "signatureCache": "签名缓存", "modelLockouts": "模型锁定", - "usingCloudProxy": "正在使用 Cloud 代理", + "usingCloudProxy": "正在使用Cloud代理", "loadingHealth": "正在加载健康状态", - "providerOverrides": "提供者覆盖", - "audioTranscriptionDesc": "音频转写说明", - "learnedFromHeaders": "从响应头学习", + "providerOverrides": "供应商覆盖", + "audioTranscriptionDesc": "音频转写", + "learnedFromHeaders": "从响应标头学习", "totalRequests": "总计请求", - "cloudUnstableNote": "Cloud 连接不稳定,部分功能可能受影响。", + "cloudUnstableNote": "云端连接不稳定,部分功能可能受影响。", "gamificationAdmin": "游戏化管理员", "monitorAnomaliesAndHealth": "监控异常和系统健康状况", "flaggedAnomalies": "标记的异常", "noAnomaliesDetected": "未检测到异常情况", - "apiKey": "API密钥", + "apiKey": "API Key", "xpLastHour": "XP(1 小时)", - "zScore": "Z 分数", + "zScore": "Z分数", "tokensCommunityServers": "社区服务器", "tokensServerNamePlaceholder": "服务器名称", - "tokensApiKeyPlaceholder": "API密钥", + "tokensApiKeyPlaceholder": "API Key", "tokensTokenBalance": "代币余额", "tokensSendTokens": "发送代币", - "tokensRecipientApiKeyId": "接收者 API 密钥 ID", - "tokensRecipientApiKeyIdPlaceholder": "输入收件人 API 密钥 ID", + "tokensRecipientApiKeyId": "接收者API Key ID", + "tokensRecipientApiKeyIdPlaceholder": "输入收件人API Key ID", "tokensReasonOptional": "原因(可选)", "tokensReasonPlaceholder": "例如奖金,奖励", "tokensTransactionHistory": "交易记录", @@ -752,12 +752,12 @@ "batchDetailModel": "型号", "batchDetailWindow": "窗户", "batchDetailCreated": "已创建", - "providerTopologyEmpty": "尚未连接提供者", + "providerTopologyEmpty": "尚未连接供应商", "badgeToastUnlocked": "徽章已解锁!", - "batchListSearchPlaceholder": "按 ID、端点、型号搜索...", + "batchListSearchPlaceholder": "按ID、端点、型号搜索...", "batchListDeleteAllCompletedTitle": "删除所有已完成的批次", "batchListBatchesTable": "批次", - "changelogViewerLoading": "正在从 GitHub 加载变更日志...", + "changelogViewerLoading": "正在从GitHub加载变更日志...", "profileLoading": "正在加载个人资料...", "profileHowToEarn": "如何赚取", "bootstrapBannerDismiss": "解雇", @@ -768,7 +768,7 @@ "batchFileDetailClose": "关闭", "batchFileDetailFailedToLoad": "无法加载文件内容", "batchFileDetailLoadError": "加载文件内容时出错", - "batchFilesListSearchPlaceholder": "按 ID 或文件名搜索...", + "batchFilesListSearchPlaceholder": "按ID或文件名搜索...", "batchFilesListFilesTable": "文件", "batchFilesCount": "{count, plural, one {# 个文件} other {# 个文件}}", "batchFilesAllPurposes": "所有用途", @@ -777,7 +777,7 @@ "batchFilesExpires": "过期时间", "batchFilesNoneFound": "未找到文件", "batchFilesNeverExpires": "从不", - "batchFileInUseByActiveBatch": "文件正被活动的批处理使用", + "batchFileInUseByActiveBatch": "文件正被活动批处理使用", "batchFilePurpose": { "batch": "批处理输入", "batch-output": "批处理输出", @@ -794,11 +794,11 @@ "batchConceptAsync24h": "异步处理,24 小时完成窗口", "batchConceptUseCases": "最适合批量分类、评估和嵌入", "filesConceptTitle": "批处理文件", - "filesConceptSubtitle": "批处理使用的 JSONL 文件:输入请求、结果和错误。", - "filesConceptInput": "输入 — 每行一个请求的 JSONL", - "filesConceptOutput": "输出 — 已完成请求的结果", - "filesConceptError": "错误 — 失败的请求", - "filesConceptRetention": "保留期:默认为 30 天(Anthropic 为 29 天)", + "filesConceptSubtitle": "批处理使用的JSONL文件:输入请求、结果和错误。", + "filesConceptInput": "输入—每行一个请求的JSONL", + "filesConceptOutput": "输出—已完成请求的结果", + "filesConceptError": "错误—失败的请求", + "filesConceptRetention": "保留期:默认为 30 天(Anthropic为 29 天)", "wizardTitle": "新建批处理", "wizardClose": "关闭", "wizardNext": "下一步", @@ -810,42 +810,42 @@ "wizardStep2Input": "输入", "wizardStep3Validate": "验证", "wizardStep4Cost": "成本与创建", - "wizardProviderLabel": "提供者", + "wizardProviderLabel": "供应商", "wizardEndpointLabel": "端点", "wizardModelLabel": "模型", "wizardInputKindJsonl": "JSONL", "wizardInputKindCsv": "CSV(我们将转换)", "wizardDropOrPick": "拖放文件或点击选择", - "wizardCsvMappingTitle": "将 CSV 列映射到请求字段", + "wizardCsvMappingTitle": "将CSV列映射到请求字段", "wizardCsvMappingAddField": "添加字段", - "wizardCsvNoColumns": "CSV 表头中未检测到列。", - "wizardCsvIgnoreColumn": "— 忽略 —", - "wizardCsvCustomIdMapped": "custom_id 已映射", - "wizardCsvContentMapped": "内容字段已映射 (messages、input 或 prompt)", + "wizardCsvNoColumns": "CSV表头中未检测到列。", + "wizardCsvIgnoreColumn": "—忽略—", + "wizardCsvCustomIdMapped": "custom_id已映射", + "wizardCsvContentMapped": "内容字段已映射 (messages、input或prompt)", "wizardCsvApplyMapping": "应用映射", "wizardCsvRowsParsed": "已解析 {count} 行", "wizardCsvRowsSkipped": "已跳过 {count} 行", "wizardCsvRowError": "第 {row} 行: {reason}", "wizardValidationOk": "所有行有效", "wizardValidating": "正在验证…", - "wizardValidationParseFailed": "验证失败 — 无法解析内容。", - "wizardValidationSummary": "{lines} 行 · {ids} 个唯一 custom_ids", + "wizardValidationParseFailed": "验证失败—无法解析内容。", + "wizardValidationSummary": "{lines} 行· {ids} 个唯一custom_ids", "wizardValidationErrorCount": "{count, plural, one {找到 # 个错误} other {找到 # 个错误}}", - "wizardValidationDuplicateIds": "检测到重复的 custom_ids:", + "wizardValidationDuplicateIds": "检测到重复的custom_ids:", "wizardValidationFirstErrors": "错误 (前 {count} 个):", "wizardValidationLine": "第 {line} 行", "wizardValidationErrors": "验证错误", "wizardValidationPreview": "预览(前 5 个请求)", - "wizardValidationSamplingNote": "文件较大 — 通过抽样验证(前 1000 行 + 后 100 行)。完整验证在服务器端运行。", + "wizardValidationSamplingNote": "文件较大—通过抽样验证(前 1000 行 + 后 100 行)。完整验证在服务器端运行。", "wizardCostSync": "同步成本", "wizardCostBatch": "批处理成本(-50%)", "wizardCostSavings": "节省", - "wizardCostEstimatedNotice": "估算成本 — 实际计费可能有所不同。", + "wizardCostEstimatedNotice": "估算成本—实际计费可能有所不同。", "wizardErrorUpload": "上传文件失败。请重试。", "wizardErrorCreate": "创建批处理失败。请重试。", - "wizardEmptyProviders": "先连接支持批处理的提供者(OpenAI、Anthropic 或 Gemini)以创建批处理。", + "wizardEmptyProviders": "先连接支持批处理的供应商(OpenAI、Anthropic或Gemini)以创建批处理。", "uploadModalTitle": "上传批处理文件", - "uploadModalDropOrPick": "拖放 .jsonl 文件或点击选择", + "uploadModalDropOrPick": "拖放 .jsonl文件或点击选择", "uploadModalUpload": "上传", "uploadModalCancel": "取消", "uploadModalError": "上传失败。请重试。", @@ -871,7 +871,7 @@ "filesListUsedByRoleError": "错误", "filesListSizeColumn": "大小", "batchListProgressPartial": "(部分)", - "batchListProviderColumn": "提供者", + "batchListProviderColumn": "供应商", "batchListProviderUnknown": "—", "batchListProviderOther": "其他", "batchListTitle": "批处理", @@ -904,13 +904,13 @@ "batchStatusExpiredWithFailures": "已过期(部分)", "wizardCostEstimating": "估算成本…", "wizardCostRequests": "请求数", - "wizardCostInputTok": "输入 tok", - "wizardCostOutputTok": "输出 tok", + "wizardCostInputTok": "输入tok", + "wizardCostOutputTok": "输出tok", "wizardCostWindow": "窗口", - "wizardDestinationSelectProvider": "选择提供者…", + "wizardDestinationSelectProvider": "选择供应商…", "wizardDestinationSelectModel": "选择模型…", - "wizardDestinationConnectProvider": "连接提供者", - "batchListBatchCreated": "批处理 {id} 已创建 — 刷新列表中…", + "wizardDestinationConnectProvider": "连接供应商", + "batchListBatchCreated": "批处理 {id} 已创建—刷新列表中…", "batchListBatchCreatedDismiss": "关闭", "batchListRefreshing": "刷新中…", "batchListRefresh": "刷新", @@ -918,9 +918,9 @@ "uploadFileModalUploading": "上传中…", "wizardInputReading": "读取文件…", "wizardInputReady": "就绪", - "wizardInputLargeFileLabel": "大文件 — 抽样验证", - "wizardInputCsvJsonlReady": "JSONL 已生成 — 可以验证。", - "wizardInputLargeFileWarning": "检测到大文件 — 通过抽样验证(前 5 MB + 后 100 KB)。完整验证在服务器端进行。", + "wizardInputLargeFileLabel": "大文件—抽样验证", + "wizardInputCsvJsonlReady": "JSONL已生成—可以验证。", + "wizardInputLargeFileWarning": "检测到大文件—通过抽样验证(前 5 MB + 后 100 KB)。完整验证在服务器端进行。", "wizardCostWindow24h": "24 小时完成窗口", "wizardValidationFieldsOk": "必填字段有效", "filesListDelete": "删除", @@ -935,13 +935,13 @@ "batchConceptRetentionNote": "结果和错误文件保留 30 天(Anthropic:29 天)" }, "disabled": "已禁用", - "featureFlagOmnirouteEmergencyFallbackDescription": "将预算耗尽的请求路由到紧急免费备用提供者/模型。", - "featureFlagArenaEloSyncEnabledDescription": "启用定期同步 Arena AI 排行榜 ELO,用于模型智能排名。", + "featureFlagOmnirouteEmergencyFallbackDescription": "将预算耗尽的请求路由到紧急免费备用供应商/模型。", + "featureFlagArenaEloSyncEnabledDescription": "启用定期同步Arena AI排行榜ELO,用于模型智能排名。", "featureFlagExposeCcDiscoveryAliasesDescription": "__MISSING__:Advertise claude/<provider>/<model> mirror ids on /v1/models so Claude Code gateway model discovery lists non-Claude models. Warning: doubles catalog entries for all clients when enabled globally.", "sidebar": { "home": "首页", - "dashboard": "仪表板", - "providers": "提供者", + "dashboard": "看板", + "providers": "供应商", "combos": "组合", "usage": "用量", "analytics": "分析", @@ -949,25 +949,25 @@ "health": "健康", "proxy": "代理", "limits": "限制与配额", - "cliTools": "CLI 工具", + "cliTools": "CLI工具", "media": "媒体", "settings": "设置", "translator": "翻译器", "playground": "演练场", "searchTools": "搜索工具", "agents": "智能体", - "cloudAgents": "云代理", + "cloudAgents": "云智能体", "memory": "记忆", - "skills": "技能", - "omniSkills": "全方位技能", - "agentSkills": "代理技能", + "skills": "Skills", + "omniSkills": "全方位Skills", + "agentSkills": "智能体Skills", "chaosConfig": "混乱模式", "docs": "文档", "issues": "问题反馈", "endpoints": "端点", - "endpointsSubtitle": "您的 AI 连接 URL", - "apiManager": "API 管理", - "apiManagerSubtitle": "管理 API 密钥和访问", + "endpointsSubtitle": "您的AI连接URL", + "apiManager": "API管理", + "apiManagerSubtitle": "管理API Key和访问", "embeddedServices": "内嵌服务", "embeddedServicesSubtitle": "管理本地代理服务", "logs": "日志", @@ -980,8 +980,8 @@ "auditLog": "审计日志", "shutdown": "停止服务", "restart": "重启服务", - "shutdownConfirm": "确定要停止 OmniRoute 吗?", - "restartConfirm": "确定要重启 OmniRoute 吗?", + "shutdownConfirm": "确定要停止OmniRoute吗?", + "restartConfirm": "确定要重启OmniRoute吗?", "version": "v{version}", "debug": "调试", "system": "系统", @@ -1014,30 +1014,30 @@ "whitelabelingDesc": "自定义品牌展示与主题外观。", "switchThemes": "切换主题", "themeAccentDesc": "选择用于按钮、链接和高亮状态的强调色。", - "uploadFavicon": "上传 Favicon", + "uploadFavicon": "上传Favicon", "themeDark": "深色主题", - "customLogoDesc": "上传用于侧边栏和登录页的自定义 Logo。", + "customLogoDesc": "上传用于侧边栏和登录页的自定义Logo。", "sidebarVisibilityToggle": "侧边栏可见性开关", "themeAccent": "主题强调色", - "resetFavicon": "重置 Favicon", + "resetFavicon": "重置Favicon", "whitelabeling": "白标", "darkMode": "深色模式", - "uploadLogo": "上传 Logo", + "uploadLogo": "上传Logo", "themeLight": "浅色主题", "appName": "应用名称", "appNameDesc": "设置在界面和浏览器标题中显示的名称。", - "resetLogo": "重置 Logo", - "customFavicon": "自定义 Favicon", + "resetLogo": "重置Logo", + "customFavicon": "自定义Favicon", "hideHealthLogs": "隐藏健康检查日志", - "customLogo": "自定义 Logo", + "customLogo": "自定义Logo", "appearance": "外观", "themeSelectionAria": "主题选择", "themeCreate": "创建主题", - "customFaviconDesc": "上传用于浏览器标签页的自定义 Favicon。", - "logoPreview": "Logo 预览", + "customFaviconDesc": "上传用于浏览器标签页的自定义Favicon。", + "logoPreview": "Logo预览", "themeCustom": "自定义主题", "hideHealthLogsDesc": "隐藏健康检查日志说明", - "faviconPreview": "Favicon 预览", + "faviconPreview": "Favicon预览", "changelog": "更新日志", "contextSection": "上下文与缓存", "contextCaveman": "Caveman", @@ -1055,7 +1055,7 @@ "combosLive": "Combo Studio", "combosLiveSubtitle": "实时路由级联", "compressionStudio": "Compression Studio", - "compressionExclusions": "__MISSING__:Exclusions", + "compressionExclusions": "排除规则", "contextSettingsSubtitle": "全局默认值", "contextHeadroomSubtitle": "表格压缩", "contextSessionDedupSubtitle": "跨轮次去重", @@ -1066,11 +1066,11 @@ "contextUltraSubtitle": "启发式剪枝", "contextOmniglyphSubtitle": "上下文作为图像", "compressionStudioSubtitle": "实时引擎级联", - "compressionExclusionsSubtitle": "__MISSING__:Per-model/endpoint bypass", + "compressionExclusionsSubtitle": "按模型/端点绕过", "chaosConfigSubtitle": "多模型并行执行", "routingSection": "路由", "protocolsSection": "协议", - "agentsAiSection": "代理与 AI", + "agentsAiSection": "智能体与AI", "cacheContextSection": "缓存与上下文", "analyticsSection": "分析", "costsSection": "成本", @@ -1078,11 +1078,11 @@ "auditSecuritySection": "审计与安全", "devtoolsSection": "开发工具", "configurationSection": "配置", - "aiFeaturesSection": "AI 功能", + "aiFeaturesSection": "AI功能", "mcp": "MCP", "a2a": "A2A", "plugins": "插件", - "apiEndpoints": "API 端点", + "apiEndpoints": "API端点", "batchFiles": "文件", "analyticsEvals": "评估", "analyticsSearch": "搜索", @@ -1092,18 +1092,18 @@ "costsBudget": "预算", "costsFreeTiers": "免费层预算", "costsFreeTiersSubtitle": "每月免费令牌配额", - "freeProviderRankings": "免费提供者排名", - "freeProviderRankingsSubtitle": "按模型 ELO 分数排名的最佳免费提供者", + "freeProviderRankings": "免费供应商排名", + "freeProviderRankingsSubtitle": "按模型ELO分数排名的最佳免费供应商", "costsQuotaShare": "配额共享", "costsPricing": "定价", "logsProxy": "代理日志", "logsConsole": "控制台", "logsActivity": "活动", - "auditMcp": "MCP 审计", + "auditMcp": "MCP审计", "auditA2a": "A2A审核", "settingsGeneral": "通用", "settingsAppearance": "外观", - "settingsAi": "AI 设置", + "settingsAi": "AI设置", "settingsSecurity": "安全", "settingsAccessTokens": "访问令牌", "settingsFeatureFlags": "功能标志", @@ -1114,15 +1114,15 @@ "modelLockout": "模型锁定", "settingsAdvanced": "高级", "omniProxySection": "OmniProxy", - "quotaTracker": "提供者配额", - "providerQuota": "提供者配额", + "quotaTracker": "供应商配额", + "providerQuota": "供应商配额", "runtime": "运行时", "consoleLogs": "控制台日志", "logsTimeline": "Timeline", "globalRouting": "全局路由", - "mitmProxy": "MITM 代理", + "mitmProxy": "MITM代理", "oneProxy": "1Proxy", - "agenticFeaturesSection": "代理功能", + "agenticFeaturesSection": "智能体功能", "otherFeaturesSection": "其他功能", "compressionContextGroup": "压缩上下文", "gamificationGroup": "Gamification", @@ -1132,18 +1132,18 @@ "costsParametersGroup": "成本参数", "auditGroup": "审计", "batchGroup": "批处理", - "homeSubtitle": "仪表盘概览", - "providersSubtitle": "管理 AI 提供者", + "homeSubtitle": "看板概览", + "providersSubtitle": "管理AI供应商", "quotaTrackerSubtitle": "跟踪使用限制", - "providerQuotaSubtitle": "跟踪提供者使用限制", + "providerQuotaSubtitle": "跟踪供应商使用限制", "runtimeSubtitle": "实时弹性与会话", "contextCombosSubtitle": "组合压缩引擎", - "cliToolsSubtitle": "配置 CLI 运行时", - "agentsSubtitle": "管理本地代理", + "cliToolsSubtitle": "配置CLI运行时", + "agentsSubtitle": "管理本地智能体", "cloudAgentsSubtitle": "管理基于云的代理", "apiEndpointsSubtitle": "暴露自定义端点", - "proxySubtitle": "HTTP 代理设置", - "mitmProxySubtitle": "MITM 拦截", + "proxySubtitle": "HTTP代理设置", + "mitmProxySubtitle": "MITM拦截", "oneProxySubtitle": "公共代理网关", "leaderboard": "排行榜", "profile": "个人资料", @@ -1153,13 +1153,13 @@ "tokensSubtitle": "令牌使用和预算", "usageSubtitle": "流量和使用统计", "analyticsComboHealthSubtitle": "组合目标可靠性", - "analyticsUtilizationSubtitle": "提供者利用率", + "analyticsUtilizationSubtitle": "供应商利用率", "costsSubtitle": "支出明细", "cacheSubtitle": "缓存命中率", "analyticsCompressionSubtitle": "令牌节省统计", "analyticsSearchSubtitle": "搜索工具分析", "analyticsEvalsSubtitle": "评估套件结果", - "providerStats": "提供者统计", + "providerStats": "供应商统计", "providerStatsSubtitle": "延迟和性能指标", "logsSubtitle": "应用日志", "logsProxySubtitle": "代理流量日志", @@ -1169,30 +1169,30 @@ "healthSubtitle": "系统健康检查", "costsPricingSubtitle": "按模型定价规则", "costsBudgetSubtitle": "预算限制", - "costsQuotaShareSubtitle": "跨密钥共享提供者配额", + "costsQuotaShareSubtitle": "跨密钥共享供应商配额", "auditLogSubtitle": "授权审计", - "auditMcpSubtitle": "MCP 服务器审计", - "auditA2aSubtitle": "A2A 协议审计", + "auditMcpSubtitle": "MCP服务器审计", + "auditA2aSubtitle": "A2A协议审计", "translatorSubtitle": "格式转换", "playgroundSubtitle": "实时测试提示", "searchToolsSubtitle": "搜索工具注册表", - "memorySubtitle": "持久的代理记忆", - "omniSkillsSubtitle": "沙箱技能注册表", - "agentSkillsSubtitle": "A2A 技能注册表", - "mcpSubtitle": "MCP 服务器控制", - "a2aSubtitle": "A2A 协议服务器", + "memorySubtitle": "持久的智能体记忆", + "omniSkillsSubtitle": "沙箱Skills注册表", + "agentSkillsSubtitle": "A2A Skills注册表", + "mcpSubtitle": "MCP服务器控制", + "a2aSubtitle": "A2A协议服务器", "pluginsSubtitle": "插件市场与安装", "mediaSubtitle": "缓存的媒体文件", "batchFilesSubtitle": "批处理输入/输出文件", "settingsSubtitle": "所有设置", "settingsGeneralSubtitle": "应用基础", "settingsAppearanceSubtitle": "主题与布局", - "settingsAiSubtitle": "AI 行为默认值", + "settingsAiSubtitle": "AI行为默认值", "globalRoutingSubtitle": "全局路由规则", "settingsResilienceSubtitle": "重试与断路器", "settingsAdvancedSubtitle": "高级用户选项", "settingsSecuritySubtitle": "认证与加密", - "settingsAccessTokensSubtitle": "用于远程模式的限定范围 CLI 令牌", + "settingsAccessTokensSubtitle": "用于远程模式的限定范围CLI令牌", "settingsFeatureFlagsSubtitle": "切换系统功能", "settingsCacheSubtitle": "__MISSING__:Model catalog and response caching", "settingsSidebar": "侧边栏", @@ -1202,23 +1202,23 @@ "issuesSubtitle": "报告错误", "changelogSubtitle": "发布说明", "costsQuotaPlans": "计划与配额", - "costsQuotaPlansSubtitle": "按提供者配置计划", + "costsQuotaPlansSubtitle": "按供应商配置计划", "activity": "活动", "activitySubtitle": "近期事件的友好动态", "logsGroup": "日志", "systemGroup": "系统", "costsOverview": "概述", "costsOverviewSubtitle": "综合成本分析", - "agentBridge": "代理桥接", - "agentBridgeSubtitle": "拦截 IDE 代理流量", + "agentBridge": "智能体桥接", + "agentBridgeSubtitle": "拦截IDE智能体流量", "trafficInspector": "流量检查器", - "trafficInspectorSubtitle": "监控 LLM 调用 + 调试任何 HTTPS 流量", - "cliCode": "CLI 代码的", - "cliCodeSubtitle": "指向 OmniRoute 的代码工具", - "cliAgents": "CLI 代理", - "cliAgentsSubtitle": "自主 CLI 代理", - "acpAgents": "ACP 代理", - "acpAgentsSubtitle": "由 OmniRoute 生成的 CLI", + "trafficInspectorSubtitle": "监控LLM调用 + 调试任何HTTPS流量", + "cliCode": "CLI代码的", + "cliCodeSubtitle": "指向OmniRoute的代码工具", + "cliAgents": "CLI智能体", + "cliAgentsSubtitle": "自主CLI智能体", + "acpAgents": "ACP智能体", + "acpAgentsSubtitle": "由OmniRoute生成的CLI", "skipToContent": "跳到内容", "mainNavigation": "主导航", "unpinSection": "取消固定分区", @@ -1230,19 +1230,19 @@ "alwaysVisible": "始终可见", "groupSeparatorLabel": "隔断", "discovery": "发现", - "discoverySubtitle": "扫描提供者以获取免费访问" + "discoverySubtitle": "扫描供应商以获取免费访问" }, "webhooks": { "title": "Webhook", - "description": "配置系统事件的 HTTP 回调。", - "configuredWebhooks": "已配置的 Webhook", + "description": "配置系统事件的HTTP回调。", + "configuredWebhooks": "已配置的Webhook", "configuredWebhooksDesc": "管理投递端点、订阅事件、状态和测试发送。", - "addWebhook": "添加 Webhook", - "editWebhook": "编辑 Webhook", + "addWebhook": "添加Webhook", + "editWebhook": "编辑Webhook", "name": "名称", "namePlaceholder": "生产监控", - "unnamedWebhook": "未命名 Webhook", - "url": "端点 URL", + "unnamedWebhook": "未命名Webhook", + "url": "端点URL", "events": "事件", "allEvents": "所有事件", "secret": "密钥", @@ -1256,27 +1256,27 @@ "lastTriggered": "上次触发", "actions": "操作", "enabled": "已启用", - "enabledDesc": "禁用的 Webhook 会继续保存,但不会接收投递。", + "enabledDesc": "禁用的Webhook会继续保存,但不会接收投递。", "refresh": "刷新", - "loading": "正在加载 Webhook...", + "loading": "正在加载Webhook...", "never": "从未", - "failureCount": "{count, plural, =0 {no failures} one {# 次失败} other {# 次失败}}", + "failureCount": "{count, plural, =0 {无失败} one {# 次失败} other {# 次失败}}", "testWebhook": "发送测试", - "testSuccess": "测试 Webhook 发送成功。", - "testFailed": "测试 Webhook 失败。", - "saveSuccess": "Webhook 保存成功。", - "saveFailed": "保存 Webhook 失败。", - "loadFailed": "加载 Webhook 失败。", + "testSuccess": "测试Webhook发送成功。", + "testFailed": "测试Webhook失败。", + "saveSuccess": "Webhook保存成功。", + "saveFailed": "保存Webhook失败。", + "loadFailed": "加载Webhook失败。", "delete": "删除", - "deleteConfirm": "确定要删除此 Webhook 吗?", - "deleteSuccess": "Webhook 删除成功。", - "deleteFailed": "删除 Webhook 失败。", + "deleteConfirm": "确定要删除此Webhook吗?", + "deleteSuccess": "Webhook删除成功。", + "deleteFailed": "删除Webhook失败。", "edit": "编辑", "enable": "启用", "disable": "禁用", - "noWebhooks": "尚未配置 Webhook。", - "signatureTitle": "Webhook 签名", - "signatureDescription": "每次投递都会包含一个 X-Webhook-Signature 请求头,该签名使用 Webhook 密钥通过 HMAC-SHA256 生成。信任载荷前请先验证签名。", + "noWebhooks": "尚未配置Webhook。", + "signatureTitle": "Webhook签名", + "signatureDescription": "每次投递都会包含一个X-Webhook-Signature请求标头,该签名使用Webhook密钥通过HMAC-SHA256 生成。信任载荷前请先验证签名。", "wizard": { "cancel": "取消", "step1Title": "选择集成", @@ -1285,26 +1285,26 @@ "back": "返回", "next": "下一步", "finish": "完成", - "step1Desc": "选择此 Webhook 要对接的目标集成系统。" + "step1Desc": "选择此Webhook要对接的目标集成系统。" }, "howItWorks": { - "step1": "选择一个集成提供者(如 Slack、Discord、自定义 Webhook)并配置连接详情。", + "step1": "选择一个集成供应商(如Slack、Discord、自定义Webhook)并配置连接详情。", "step2": "配置要订阅的系统事件(如补全错误、模型回退或用量限制)。", "step3": "发送测试负载以验证端点是否能正常接收数据。", - "step4": "使用 Webhook 密钥对 X-Webhook-Signature HMAC-SHA256 头进行验证,以确保端点安全。", - "title": "Webhook 工作原理", + "step4": "使用Webhook密钥对X-Webhook-Signature HMAC-SHA256 头验证,以确保端点安全。", + "title": "Webhook工作原理", "customOnly": "仅适用于自定义端点集成。", - "hmacRecipeTitle": "HMAC 验证方案", - "hmacRecipe": "在 Node.js 中验证 Webhook 负载:使用密钥对原始请求体计算 HMAC-SHA256,然后通过 timingSafeEqual 与 X-Webhook-Signature 头进行比对。", - "timeoutNote": "Webhook 投递超时时间为 10 秒。", + "hmacRecipeTitle": "HMAC验证方案", + "hmacRecipe": "在Node.js中验证Webhook负载:使用密钥对原始请求体计算HMAC-SHA256,然后通过timingSafeEqual与X-Webhook-Signature头进行比对。", + "timeoutNote": "Webhook投递超时时间为 10 秒。", "retryNote": "投递失败将最多重试 5 次,采用指数退避策略。", - "docsLink": "阅读完整的 Webhook 开发者指南", - "hmacRecipePython": "Python HMAC 验证:hmac.new(secret, body, hashlib.sha256).hexdigest()", - "hmacRecipeBash": "Bash HMAC 验证:echo -n \"$body\" | openssl dgst -sha256 -hmac \"$secret\"" + "docsLink": "阅读完整的Webhook开发者指南", + "hmacRecipePython": "Python HMAC验证:hmac.new(secret, body, hashlib.sha256).hexdigest()", + "hmacRecipeBash": "Bash HMAC验证:echo -n \"$body\" | openssl dgst -sha256 -hmac \"$secret\"" }, "deliveries": { "title": "投递日志", - "loadFailed": "加载 Webhook 投递日志失败。", + "loadFailed": "加载Webhook投递日志失败。", "empty": "暂无投递记录。触发一个事件或发送测试负载。", "status": "状态", "event": "事件", @@ -1314,64 +1314,64 @@ "kinds": { "comingSoon": "即将推出", "slack": "Slack", - "slackDesc": "将系统事件直接发布到 Slack 频道", + "slackDesc": "将系统事件直接发布到Slack频道", "telegram": "Telegram", - "telegramDesc": "通过 Telegram 机器人发送事件消息", + "telegramDesc": "通过Telegram机器人发送事件消息", "discord": "Discord", - "discordDesc": "将实时更新直接推送到 Discord 服务器", - "custom": "自定义 Webhook", - "customDesc": "将系统事件负载投递到任意 HTTPS 端点", + "discordDesc": "将实时更新直接推送到Discord服务器", + "custom": "自定义Webhook", + "customDesc": "将系统事件负载投递到任意HTTPS端点", "email": "邮件通知", "emailDesc": "通过邮件接收摘要更新", "pagerduty": "PagerDuty", - "pagerdutyDesc": "在 PagerDuty 上为关键系统问题触发告警", + "pagerdutyDesc": "在PagerDuty上为关键系统问题触发告警", "teams": "Microsoft Teams", - "teamsDesc": "将系统通知转发到 Microsoft Teams 频道" + "teamsDesc": "将系统通知转发到Microsoft Teams频道" }, "testPayloadSent": "测试负载已发送", "testResponse": "测试响应", "validateUrl": { - "checking": "正在检查 URL...", - "ok": "URL 有效", - "blockedPrivate": "URL 是被阻止的私有地址", - "invalidUrl": "URL 格式无效" + "checking": "正在检查URL...", + "ok": "URL有效", + "blockedPrivate": "URL是已阻止的私有地址", + "invalidUrl": "URL格式无效" }, "custom": { - "endpointUrl": "端点 URL", + "endpointUrl": "端点URL", "endpointUrlPlaceholder": "https://api.yourdomain.com/webhook", "secretKey": "密钥", "secretKeyPlaceholder": "输入密钥或留空以自动生成", - "secretKeyHint": "用于对负载头进行签名以进行身份验证。" + "secretKeyHint": "用于对负载头签名以身份验证。" }, "discord": { "webhookUrl": "Discord Webhook URL", "webhookUrlPlaceholder": "https://discord.com/api/webhooks/...", - "webhookUrlHint": "从 Discord 频道集成设置中复制的 Webhook URL。", - "tutorial": "如何创建 Discord Webhook:" + "webhookUrlHint": "从Discord频道集成设置中复制的Webhook URL。", + "tutorial": "如何创建Discord Webhook:" }, "slack": { "webhookUrl": "Slack Webhook URL", "webhookUrlPlaceholder": "https://hooks.slack.com/services/...", - "webhookUrlHint": "从 Slack Incoming Webhooks 集成中复制的 Webhook URL。", - "tutorial": "如何创建 Slack Webhook:" + "webhookUrlHint": "从Slack Incoming Webhooks集成中复制的Webhook URL。", + "tutorial": "如何创建Slack Webhook:" }, "telegram": { - "botToken": "Telegram 机器人令牌", + "botToken": "Telegram机器人令牌", "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", - "botTokenHint": "创建机器人时从 @BotFather 获取的 HTTP API 令牌。", - "chatId": "Telegram 聊天 ID / 频道", + "botTokenHint": "创建机器人时从 @BotFather获取的HTTP API令牌。", + "chatId": "Telegram聊天ID / 频道", "chatIdPlaceholder": "-100123456789 或 @channelname", "chatIdHint": "聊天/频道的唯一数字标识符或公开用户名。", - "tutorial": "如何配置 Telegram Webhook:" + "tutorial": "如何配置Telegram Webhook:" } }, "compliance": { "auditTitle": "审计", - "auditDescription": "在一个运维视图中查看合规事件和 MCP 工具调用。", + "auditDescription": "在一个运维视图中查看合规事件和MCP工具调用。", "complianceTab": "合规", - "mcpTab": "MCP 审计", + "mcpTab": "MCP审计", "title": "合规审计", - "description": "合规审计日志记录的策略、访问、提供者和安全事件。", + "description": "合规审计日志记录的策略、访问、供应商和安全事件。", "eventType": "事件类型", "eventTypePlaceholder": "按操作或事件类型筛选", "severity": "严重级别", @@ -1379,7 +1379,7 @@ "info": "信息", "warning": "警告", "critical": "严重", - "sourceIp": "来源 IP", + "sourceIp": "来源IP", "userOrKey": "用户 / 密钥", "action": "操作", "result": "结果", @@ -1393,7 +1393,7 @@ "loading": "正在加载审计事件...", "showing": "正在显示 {total} 个事件中的 {count} 个", "policyViolation": "策略违规", - "accessDenied": "访问被拒绝", + "accessDenied": "访问已拒绝", "injectionBlocked": "注入已阻止", "noEvents": "尚未记录合规事件。", "failedFetch": "获取合规审计日志失败。", @@ -1403,25 +1403,25 @@ "system": "系统", "previous": "上一页", "next": "下一页", - "mcpAudit": "MCP 审计", - "mcpAuditDesc": "MCP 服务器记录的工具调用审计条目。", - "failedFetchMcpAudit": "获取 MCP 审计日志失败。", + "mcpAudit": "MCP审计", + "mcpAuditDesc": "MCP服务器记录的工具调用审计条目。", + "failedFetchMcpAudit": "获取MCP审计日志失败。", "tool": "工具", "toolPlaceholder": "按工具名称筛选", "duration": "持续时间", - "apiKey": "API 密钥", + "apiKey": "API Key", "output": "输出", "allResults": "所有结果", "success": "成功", "failure": "失败", - "noMcpEvents": "尚未记录 MCP 审计事件。", + "noMcpEvents": "尚未记录MCP审计事件。", "a2aAudit": "A2A审核", "a2aAuditDesc": "A2A服务器记录的任务执行审计跟踪。", "a2aShowingTasks": "显示 {count} 个任务(共 {total} 个)", - "a2aSkill": "技能", - "a2aSkillPlaceholder": "按技能名称过滤", + "a2aSkill": "Skills", + "a2aSkillPlaceholder": "按Skills名称过滤", "a2aState": "状态", - "a2aAllStates": "所有州", + "a2aAllStates": "所有状态", "a2aStateSubmitted": "已提交", "a2aStateWorking": "工作", "a2aStateCompleted": "已完成", @@ -1429,23 +1429,23 @@ "a2aStateCancelled": "取消", "a2aTaskId": "任务编号", "a2aEvents": "活动", - "a2aArtifacts": "文物", - "a2aNoTasks": "没有记录 A2A 任务。", - "a2aLoadingTasks": "正在加载 A2A 任务...", + "a2aArtifacts": "产物", + "a2aNoTasks": "没有记录A2A任务。", + "a2aLoadingTasks": "正在加载A2A任务...", "actor": "演员", "actorPlaceholder": "按演员筛选", "eventTypes": { - "apiKey.activate": "API 密钥已激活", - "apiKey.ban": "API 密钥已被禁止", - "apiKey.deactivate": "API 密钥已停用", - "apiKey.regenerate": "API 密钥已重新生成", - "apiKey.scopes.grant": "API 密钥范围已授予", - "apiKey.scopes.revoke": "API 密钥范围已被撤销", - "apiKey.scopes.update": "API 密钥范围已更新", - "apiKey.unban": "API 密钥已解禁", + "apiKey.activate": "API Key已激活", + "apiKey.ban": "API Key已已禁止", + "apiKey.deactivate": "API Key已停用", + "apiKey.regenerate": "API Key已重新生成", + "apiKey.scopes.grant": "API Key范围已授予", + "apiKey.scopes.revoke": "API Key范围已已撤销", + "apiKey.scopes.update": "API Key范围已更新", + "apiKey.unban": "API Key已解禁", "auth.login.error": "登录错误", "auth.login.failed": "登录失败", - "auth.login.locked": "登录被锁定", + "auth.login.locked": "登录已锁定", "auth.login.misconfigured": "登录配置错误", "auth.login.setup_required": "需要登录设置", "auth.login.success": "登录成功", @@ -1457,16 +1457,16 @@ "provider.credentials.bulk_imported": "供应商凭据已批量导入", "provider.credentials.created": "供应商凭据已创建", "provider.credentials.imported": "供应商凭据已导入", - "provider.credentials.revoked": "供应商凭据已被撤销", + "provider.credentials.revoked": "供应商凭据已已撤销", "provider.credentials.updated": "供应商凭据已更新", - "provider.validation.ssrf_blocked": "供应商 SSRF 被阻止", + "provider.validation.ssrf_blocked": "供应商SSRF已阻止", "quota.plan.updated": "配额计划已更新", "quota.pool.created": "配额池已创建", "quota.pool.deleted": "配额池已删除", "quota.pool.updated": "配额池已更新", "quota.store.driver_changed": "配额存储驱动程序已更改", "server.start": "服务器启动", - "service.reveal_api_key": "服务 API 密钥已泄露", + "service.reveal_api_key": "服务API Key已泄露", "settings.update": "设置已更新", "settings.update_failed": "设置更新失败", "sync.token.created": "同步令牌已创建", @@ -1490,73 +1490,73 @@ "switchToLightMode": "切换到浅色模式", "switchToDarkMode": "切换到深色模式", "language": "语言", - "providers": "提供者", - "providerDescription": "管理 AI 提供者连接", + "providers": "供应商", + "providerDescription": "管理AI供应商连接", "combos": "组合", "comboDescription": "支持故障回退的模型组合", "usage": "用量与分析", - "usageDescription": "监控 API 用量、Token 消耗和请求日志", + "usageDescription": "监控API用量、Token消耗和请求日志", "analytics": "分析", "analyticsDescription": "查看图表、趋势和评测洞察", - "cliTools": "CLI 工具", - "cliToolsDescription": "配置 CLI 工具", + "cliTools": "CLI工具", + "cliToolsDescription": "配置CLI工具", "home": "首页", - "homeDescription": "欢迎使用 OmniRoute", + "homeDescription": "欢迎使用OmniRoute", "endpoint": "端点", - "endpointDescription": "管理代理端点、MCP、A2A 和 API 端点", + "endpointDescription": "管理代理端点、MCP、A2A和API端点", "mcp": "MCP", - "mcpDescription": "Model Context Protocol 服务管理与工具", + "mcpDescription": "Model Context Protocol服务管理与工具", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent 协议任务与可观测性", + "a2aDescription": "Agent-to-Agent协议任务与可观测性", "settings": "设置", "settingsDescription": "管理你的偏好设置", - "openaiCompatible": "OpenAI 兼容", - "anthropicCompatible": "Anthropic 兼容", + "openaiCompatible": "OpenAI兼容", + "anthropicCompatible": "Anthropic兼容", "media": "媒体", "mediaDescription": "生成图像、视频和音乐", "themes": "主题", - "themesDescription": "为整个仪表板选择颜色主题", - "costsDescription": "跟踪支出,分析趋势,管理所有 AI 提供者的预算", - "cacheDescription": "监控提供者提示缓存效率和本地语义响应复用。", - "limitsDescription": "为每个 API 密钥和提供者配置速率限制和配额", - "runtimeDescription": "实时运行时可观测性 — 断路器、冷却、模型锁定、会话和配额告警", - "apiManagerDescription": "管理 OmniRoute 实例的 API 密钥和访问控制", - "batchDescription": "通过批量 API 调用异步处理大量请求", + "themesDescription": "为整个看板选择颜色主题", + "costsDescription": "跟踪支出,分析趋势,管理所有AI供应商的预算", + "cacheDescription": "监控供应商提示缓存效率和本地语义响应复用。", + "limitsDescription": "为每个API Key和供应商配置速率限制和配额", + "runtimeDescription": "实时运行时可观测性—断路器、冷却、模型锁定、会话和配额告警", + "apiManagerDescription": "管理OmniRoute实例的API Key和访问控制", + "batchDescription": "通过批量API调用异步处理大量请求", "contextCavemanDescription": "基于规则的消息压缩、语言包、分析和输出模式控制。", "contextRtkDescription": "针对工具输出、终端日志和构建结果的命令感知压缩。", "contextCombosDescription": "定义如何为不同路由场景组合引擎。", "changelogDescription": "了解最新平台功能和公告。", - "agentsDescription": "管理和配置 AI 代理工具:Codex、Devin、Jules 和自定义代理", - "cloudAgentsDescription": "编排基于云的 AI 代理,支持实时任务跟踪和计划审批", - "memoryDescription": "持久的对话记忆,支持语义搜索和 FTS5 全文索引", - "skillsDescription": "安装和管理沙箱技能,实现自动提示和执行", - "agentSkillsDescription": "代理就绪技能目录,一键复制 URL 以集成 AI 客户端", - "translatorDescription": "跨 API 格式翻译和测试提示:OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "交互式测试提示,实时查看提供者响应和格式检查", - "searchToolsDescription": "搜索分析、提供者细分、缓存命中率和成本跟踪", + "agentsDescription": "管理和配置AI智能体工具:Codex、Devin、Jules和自定义智能体", + "cloudAgentsDescription": "编排基于云的AI智能体,支持实时任务跟踪和计划审批", + "memoryDescription": "持久的对话记忆,支持语义搜索和FTS5 全文索引", + "skillsDescription": "安装和管理沙箱Skills,实现自动提示和执行", + "agentSkillsDescription": "代理就绪Skills目录,一键复制URL以集成AI客户端", + "translatorDescription": "跨API格式翻译和测试提示:OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "交互式测试提示,实时查看供应商响应和格式检查", + "searchToolsDescription": "搜索分析、供应商细分、缓存命中率和成本跟踪", "logsDescription": "实时请求日志、错误追踪和流式事件检查器", - "auditDescription": "API 密钥使用、MCP 工具调用和策略事件的合规审计追踪", - "webhooksDescription": "配置 Webhook 端点以接收实时事件通知", - "healthDescription": "系统健康概览:提供者、断路器、速率限制和数据库", - "proxyDescription": "为出站提供者连接配置上游代理设置", - "apiEndpointsDescription": "管理自定义 API 端点配置和路由覆盖", + "auditDescription": "API Key使用、MCP工具调用和策略事件的合规审计追踪", + "webhooksDescription": "配置Webhook端点以接收实时事件通知", + "healthDescription": "系统健康概览:供应商、断路器、速率限制和数据库", + "proxyDescription": "为出站供应商连接配置上游代理设置", + "apiEndpointsDescription": "管理自定义API端点配置和路由覆盖", "batchFilesDescription": "浏览和管理批处理作业输出文件和结果", "analyticsEvalsDescription": "模型评估结果和性能基准", "analyticsSearchDescription": "搜索查询分析、缓存命中率和成本跟踪", - "analyticsUtilizationDescription": "提供者利用率指标和容量规划", + "analyticsUtilizationDescription": "供应商利用率指标和容量规划", "analyticsComboHealthDescription": "组合路由配置的实时健康与性能", "analyticsCompressionDescription": "上下文压缩分析和令牌节省", - "costsBudgetDescription": "每个 API 密钥和提供者的预算限制和支出告警", + "costsBudgetDescription": "每个API Key和供应商的预算限制和支出告警", "costsPricingDescription": "用于令牌成本计算的自定义定价配置", "logsProxyDescription": "上游代理请求日志和流量检查", "logsConsoleDescription": "应用控制台输出和调试日志", "logsActivityDescription": "用户操作和系统事件的审计追踪", - "auditMcpDescription": "MCP 工具调用审计追踪和合规记录", + "auditMcpDescription": "MCP工具调用审计追踪和合规记录", "auditA2a": "A2A审核", - "auditA2aDescription": "A2A任务执行审计追踪、状态转换、技能调用记录", + "auditA2aDescription": "A2A任务执行审计追踪、状态转换、Skills调用记录", "settingsGeneralDescription": "存储、数据库和通用实例配置", "settingsAppearanceDescription": "主题、品牌和视觉自定义", - "settingsAiDescription": "AI 行为、思维预算、视觉和记忆设置", + "settingsAiDescription": "AI行为、思维预算、视觉和记忆设置", "settingsCacheDescription": "__MISSING__:TTL for model catalog cache entries", "settingsSecurityDescription": "认证、授权和访问控制设置", "featureFlags": "功能标志", @@ -1568,26 +1568,26 @@ "featureFlagsCategoryAll": "全部", "featureFlagsCategorySecurity": "安全性", "featureFlagsCategoryNetwork": "网络", - "featureFlagsCategoryPolicies": "政策", + "featureFlagsCategoryPolicies": "策略", "featureFlagsCategoryRuntime": "运行时", - "featureFlagsCategoryCli": "命令行界面", + "featureFlagsCategoryCli": "CLI", "featureFlagsCategoryHealth": "健康", "featureFlagsSourceDb": "数据库", - "featureFlagsSourceEnv": "环境电压", + "featureFlagsSourceEnv": "环境变量", "featureFlagsSourceDefault": "默认", "featureFlagsReset": "重置", "featureFlagsResetAll": "重置所有覆盖", - "featureFlagsResetAllConfirm": "您确定要重置所有功能标志覆盖吗?这会将所有标志恢复为其 ENV 或默认值。", + "featureFlagsResetAllConfirm": "您确定要重置所有功能标志覆盖吗?这会将所有标志恢复为其ENV或默认值。", "featureFlagsRestartRequired": "需要重启才能申请", "featureFlagsNoResults": "没有符合您搜索条件的标志", "featureFlagsSaved": "标志已更新", "featureFlagsError": "更新标志失败", "settingsRoutingDescription": "路由规则、模型别名、组合默认值和降级设置", "settingsResilienceDescription": "断路器、重试和回退配置", - "settingsAdvancedDescription": "高级负载规则、请求限制和代理 API 设置", - "mitmProxyDescription": "配置 MITM 代理设置以进行流量检查和调试", - "oneProxyDescription": "配置 1Proxy 设置以实现高级代理链", - "omniSkillsDescription": "安装和管理用于自动提示和工具执行的沙箱技能" + "settingsAdvancedDescription": "高级负载规则、请求限制和代理API设置", + "mitmProxyDescription": "配置MITM代理设置以流量检查和调试", + "oneProxyDescription": "配置 1Proxy设置以实现高级代理链", + "omniSkillsDescription": "安装和管理用于自动提示和工具执行的沙箱Skills" }, "cloudSyncStatus": { "synced": "已同步", @@ -1597,18 +1597,18 @@ "disabled": "已禁用", "connected": "已连接", "disconnected": "已断开", - "lastSync": "远程设置同步 {status} — 上次同步:{time}", + "lastSync": "远程设置同步 {status} —上次同步:{time}", "statusLabel": "远程设置同步状态:{status}" }, "breadcrumbs": { "ariaLabel": "面包屑", - "dashboard": "仪表盘", - "providers": "提供者", + "dashboard": "看板", + "providers": "供应商", "combos": "组合", "settings": "设置", "general": "通用", "appearance": "外观", - "ai": "AI 设置", + "ai": "AI设置", "routing": "路由", "resilience": "弹性", "advanced": "高级", @@ -1622,13 +1622,13 @@ "playground": "演练场", "add": "添加", "edit": "编辑", - "apiKeys": "API 密钥", + "apiKeys": "API Key", "models": "模型", - "cliCode": "CLI 代码", - "cliAgents": "CLI 代理", - "acpAgents": "ACP 代理", + "cliCode": "CLI代码", + "cliAgents": "CLI智能体", + "acpAgents": "ACP智能体", "endpoint": "端点", - "apiManager": "API 管理器", + "apiManager": "API管理器", "context": "上下文", "compression": "压缩", "services": "服务", @@ -1639,12 +1639,12 @@ "webhooks": "Webhooks", "home": "首页", "activity": "动态", - "agentSkills": "Agent 技能", + "agentSkills": "智能体Skills", "comboHealth": "组合健康度", "evals": "评估", "search": "搜索", "utilization": "利用率", - "apiEndpoints": "API 端点", + "apiEndpoints": "API端点", "audit": "审计", "a2a": "A2A", "mcp": "MCP", @@ -1654,7 +1654,7 @@ "cache": "缓存", "changelog": "更新日志", "chaos": "混沌", - "cloudAgents": "云 Agent", + "cloudAgents": "云智能体", "live": "实时", "studio": "工作室", "aggressive": "激进", @@ -1687,29 +1687,29 @@ "sidebar": "侧边栏", "tokens": "Token", "tools": "工具", - "agentBridge": "Agent 桥接", + "agentBridge": "智能体桥接", "trafficInspector": "流量检查器", "usage": "用量" }, "home": { "quickStart": "快速入门", - "quickStartDesc": "4 个步骤快速上手:连接提供者、路由模型并监控全局运行情况。", + "quickStartDesc": "4 个步骤快速上手:连接供应商、路由模型并监控全局运行情况。", "fullDocs": "完整文档", - "step1Title": "1. 创建 API 密钥", + "step1Title": "1. 创建API Key", "step1Desc": "前往 端点 -> 已注册密钥。为每个环境生成一个独立密钥。", - "step2Title": "2. 连接提供者", - "step2Desc": "在 提供者 中添加账户。支持 OAuth、API Key 和免费套餐。", + "step2Title": "2. 连接供应商", + "step2Desc": "在 供应商 中添加账户。支持OAuth、API Key和免费套餐。", "step3Title": "3. 配置客户端", - "step3Desc": "在 IDE 或 API 客户端中将基本 URL 设置为 {url}。", + "step3Desc": "在IDE或API客户端中将基本URL设置为 {url}。", "step4Title": "4. 监控与优化", - "step4Desc": "在 请求日志分析 中跟踪 Token、成本与错误。", - "providersOverview": "提供者概览", - "configuredOf": "{total} 个可用提供者中已配置 {configured} 个", - "noModelsAvailable": "该提供者当前没有可用模型。", - "noProvidersConfigured": "尚未配置提供者", - "addProvider": "添加提供者", + "step4Desc": "在 请求日志分析 中跟踪Token、成本与错误。", + "providersOverview": "供应商概览", + "configuredOf": "{total} 个可用供应商中已配置 {configured} 个", + "noModelsAvailable": "该供应商当前没有可用模型。", + "noProvidersConfigured": "尚未配置供应商", + "addProvider": "添加供应商", "configureFirst": "首先在 {providers} 中配置连接", - "configureProvider": "配置提供者", + "configureProvider": "配置供应商", "modelAvailable": "{count} 模型可用", "modelsAvailable": "{count} 个模型可用", "connectionsActive": "{count} 连接处于活动状态", @@ -1718,9 +1718,9 @@ "documentation": "文档", "healthMonitor": "健康监测", "reportIssue": "报告问题", - "activeError": "{active} 有效 · {errors} 错误", + "activeError": "{active} 有效· {errors} 错误", "oauthLabel": "OAuth", - "apiKeyLabel": "API密钥", + "apiKeyLabel": "API Key", "requestsShort": "{count} 次请求", "providerModelsTitle": "{provider} - 模型", "copiedModel": "已复制:{model}", @@ -1730,20 +1730,20 @@ "updateAvailableDesc": "有新版本可用。点击更新。", "updateStarted": "更新已开始...", "reloadingPageAutomatically": "自动重新加载页面...", - "providerTopology": "提供者拓扑" + "providerTopology": "供应商拓扑" }, "analytics": { "title": "分析", "usageAnalyticsTitle": "用量分析", "diversityScoreTitle": "供应商多元化", - "diversityScoreDesc": "近期流量窗口内提供者集中度的快照。", + "diversityScoreDesc": "近期流量窗口内供应商集中度的快照。", "diversityShannonEntropy": "香农熵", - "diversityWindow": "窗口:{count} 次请求 · 最近 {mins} 分钟", + "diversityWindow": "窗口:{count} 次请求·最近 {mins} 分钟", "diversityHealthy": "分布健康", "diversityRiskHigh": "供应商锁定风险高", "diversityRiskModerate": "分布一般", "diversityScoreLabel": "得分", - "diversityHigherExplanation": "数值越高,表示流量分散到的提供者越多。", + "diversityHigherExplanation": "数值越高,表示流量分散到的供应商越多。", "diversityNoData": "暂无近期用量数据。", "chartRequests": "请求数", "chartInput": "输入", @@ -1752,32 +1752,32 @@ "chartCost": "成本", "chartShare": "占比", "chartServiceTier": "服务层级", - "chartServiceTierSplit": "Fast / Standard 成本拆分", + "chartServiceTierSplit": "Fast / Standard成本拆分", "chartCostPct": "占成本 {pct}%", "chartUsageDetail": "用量明细", "chartCacheRead": "缓存读取", - "chartCostByProvider": "按提供者划分的成本", + "chartCostByProvider": "按供应商划分的成本", "chartNoCostData": "无成本数据", "chartModelUsageOverTime": "模型用量趋势", "chartNoData": "无数据", "chartWeekly": "每周", - "activitySummary": "{active} 天活跃 · {tokens} token · {days} 天", + "activitySummary": "{active} 天活跃· {tokens} token· {days} 天", "activityCellTitle": "{date}: {tokens} token", "activityLess": "较少", "activityMore": "较多", - "chartApiKeyBreakdown": "API 密钥细分", - "chartApiKey": "API 密钥", + "chartApiKeyBreakdown": "API Key细分", + "chartApiKey": "API Key", "mostActiveDay": "最活跃的一天", "datedTokenCount": "{date} · {tokens} token", "noDataLast7Days": "过去 7 天内无数据", - "requestTokenSummary": "{requests} 次请求 · {tokens} token", + "requestTokenSummary": "{requests} 次请求· {tokens} token", "chartByAccount": "按账户", - "chartByApiKey": "按 API 密钥", - "unknownApiKey": "未知 API 密钥", + "chartByApiKey": "按API Key", + "unknownApiKey": "未知API Key", "chartModelBreakdown": "按模型拆分", "chartModel": "模型", - "chartProvider": "提供者", - "chartProviderBreakdown": "按提供者拆分", + "chartProvider": "供应商", + "chartProviderBreakdown": "按供应商拆分", "chartDate": "日期", "chartRequestsByProviderDate": "按服务商和日期的请求数", "filterAllKeys": "全部密钥", @@ -1803,36 +1803,36 @@ "period90D": "90 天", "periodYTD": "年初至今", "periodAll": "全部", - "totalTokens": "总 Token 数", - "inputTokens": "输入 Token", - "outputTokens": "输出 Token", + "totalTokens": "总Token数", + "inputTokens": "输入Token", + "outputTokens": "输出Token", "estCost": "预估成本", "infraTitle": "基础设施", "infraAccounts": "账号", - "infraProviders": "提供者", - "infraApiKeys": "API 密钥", + "infraProviders": "供应商", + "infraApiKeys": "API Key", "infraModels": "模型", "perfTitle": "性能", - "perfAvgTokens": "平均 Token / 请求", + "perfAvgTokens": "平均Token / 请求", "perfCostReq": "成本 / 请求", "perfIoRatio": "输入/输出比", - "perfFastReq": "Fast 请求", + "perfFastReq": "Fast请求", "highlightsTitle": "亮点", "highlightsTopModel": "热门模型", - "highlightsTopProvider": "热门提供者", + "highlightsTopProvider": "热门供应商", "highlightsBusiestDay": "最繁忙的一天", "highlightsDiversity": "多样性", "highlightsFallbackRate": "回退率", "customRange": "自定义", - "overviewDescription": "监控所有提供者和模型的 API 使用模式、令牌消耗、成本和活动趋势。", - "evalsDescription": "运行评估套件来测试和验证您的 LLM 端点。比较模型质量、检测回归和基准延迟。", + "overviewDescription": "监控所有供应商和模型的API使用模式、令牌消耗、成本和活动趋势。", + "evalsDescription": "运行评估套件来测试和验证您的LLM端点。比较模型质量、检测回归和基准延迟。", "overview": "概述", "evals": "评测", "search": "搜索", "utilization": "利用率", "routeTrace": "路由追踪", "sectionsAria": "分析板块", - "utilizationDescription": "提供者配额使用趋势和速率限制跟踪", + "utilizationDescription": "供应商配额使用趋势和速率限制跟踪", "modelStatus": "模型状态", "modelStatusCooldown": "冷却中", "modelStatusUnavailable": "不可用", @@ -1840,13 +1840,13 @@ "comboHealth": "组合健康状况", "comboHealthDescription": "组合级别配额、使用分布和性能指标", "compressionAnalyticsTitle": "压缩分析", - "compressionAnalyticsDescription": "压缩分析 — token 节省、模式分布和提供者统计。", + "compressionAnalyticsDescription": "压缩分析—token节省、模式分布和供应商统计。", "autoRoutingTotalAutoRequests": "自动请求总数", "autoRoutingAvgSelectionScore": "平均选择分数", "autoRoutingExplorationRate": "探索率", "autoRoutingLkgpHitRate": "LKGP命中率", "autoRoutingRequestsByVariant": "变体请求", - "autoRoutingTopRoutedProviders": "顶级路由提供者", + "autoRoutingTopRoutedProviders": "顶级路由供应商", "comboHealthWorstQuotaLeft": "剩余最差名额", "comboHealthUsageSkew": "使用偏差", "comboHealthSuccessRate": "成功率", @@ -1877,7 +1877,7 @@ "comboHealthProjectedQuota": "预估配额", "comboHealthPricingCoverage": "定价覆盖范围", "comboHealthAutopilotTitle": "组合健康自动驾驶", - "comboHealthAutopilotDescription": "来自组合健康、预测、配额和提供者健康的优先建议。", + "comboHealthAutopilotDescription": "来自组合健康、预测、配额和供应商健康的优先建议。", "comboHealthIssues": "问题", "comboHealthActionable": "{count} 个可操作项", "comboHealthDown": "宕机", @@ -1886,7 +1886,7 @@ "comboHealthNoActiveIssues": "在所选范围内未检测到活动的组合健康问题。", "comboHealthScoringInspector": "智能评分检查器", "comboHealthReadOnlyRecompute": "只读重新计算", - "comboHealthScoringDescription": "使用当前健康状况、预测和路由启发式算法对目标排名进行因子级解释。", + "comboHealthScoringDescription": "使用当前健康状况、预测和路由启发式算法对目标排名因子级解释。", "comboHealthTask": "任务: {task}", "comboHealthSelectedRank": "已选排名 #1", "comboHealthFactor": { @@ -1911,18 +1911,18 @@ "degraded": "需要关注", "healthy": "健康" }, - "comboHealthModelProviderCount": "跨 {providers} 个提供者的 {models} 个模型", + "comboHealthModelProviderCount": "跨 {providers} 个供应商的 {models} 个模型", "comboHealthGiniCoefficient": "基尼系数", "comboHealthRequestCount": "{count} 次请求", - "comboHealthQuotaHealthDescription": "具有短期趋势信号的提供者中最低的剩余配额。", + "comboHealthQuotaHealthDescription": "具有短期趋势信号的供应商中最低的剩余配额。", "comboHealthRemainingQuota": "Remaining quota {value}", "comboHealthTrend": { "improving": "改善中", "declining": "下降中", "stable": "稳定" }, - "comboHealthUsageSkewDescription": "此组合内的模型请求份额和 Token 份额。", - "comboHealthShareSummary": "请求份额 {requests} · Token 份额 {tokens}", + "comboHealthUsageSkewDescription": "此组合内的模型请求份额和Token份额。", + "comboHealthShareSummary": "请求份额 {requests} ·Token份额 {tokens}", "comboHealthPerformance": "性能", "comboHealthPerformanceDescription": "路由组合流量的可靠性和吞吐量。", "comboHealthExecutionTargetsDescription": "结构化组合目标的步骤级运行时指标和配额可见性。", @@ -1937,7 +1937,7 @@ "comboHealthNoDataDescription": "流量开始流动后,组合配额快照和路由请求将显示在此处。", "comboHealthStepCreate": "在 Combos 中创建包含多个服务商的组合", "comboHealthStepSend": "向组合端点发送请求以生成流量数据", - "comboHealthStepAutomatic": "当请求被路由时,健康指标将自动显示", + "comboHealthStepAutomatic": "当请求路由时,健康指标将自动显示", "comboHealthTracking": "正在跟踪 {range} 内的 {count} 个组合", "compressionAnalyticsTotalRequests": "请求总数", "compressionAnalyticsTokensSaved": "已保存代币", @@ -1951,31 +1951,31 @@ "compressionAnalyticsCacheTokens": "缓存令牌", "compressionAnalyticsNoDataYet": "还没有压缩数据", "compressionAnalyticsLoading": "正在加载压缩分析…", - "compressionAnalyticsNoDataDescription": "在通过启用了压缩的 /v1/chat/completions 发送第一个请求后,压缩请求将显示在此处。", + "compressionAnalyticsNoDataDescription": "在通过启用了压缩的 /v1/chat/completions发送第一个请求后,压缩请求将显示在此处。", "rangeLast24h": "最近 24 小时", "rangeLast7d": "最近 7 天", "rangeLast30d": "最近 30 天", "rangeAllTime": "所有时间", - "compressionAnalyticsModeStats": "{count} 次请求 · 节省了 {tokens} 个 Token", - "compressionAnalyticsSkipped": " · 已跳过 {count} 次 (无操作)", - "compressionAnalyticsRealTokens": "{count} 个实际 Token", + "compressionAnalyticsModeStats": "{count} 次请求·节省了 {tokens} 个Token", + "compressionAnalyticsSkipped": " ·已跳过 {count} 次 (无操作)", + "compressionAnalyticsRealTokens": "{count} 个实际Token", "compressionAnalyticsValidationRestores": "验证恢复", "compressionAnalyticsRealUsageReceipts": "实际使用凭证", "compressionAnalyticsSources": "来源", "compressionAnalyticsModeBreakdown": "模式细分", "compressionAnalyticsProviderBreakdown": "服务商细分", "compressionAnalyticsLast24HoursActivity": "最近 24 小时 (活动)", - "compressionAnalyticsChartPoint": "{hour}: {count} 次请求,节省了 {tokens} 个 Token", + "compressionAnalyticsChartPoint": "{hour}: {count} 次请求,节省了 {tokens} 个Token", "compressionAnalyticsMaxRequests": "每小时最大请求数: {count}", - "compressionAnalyticsMaxTokens": "每小时最大 Token 数: {count}", + "compressionAnalyticsMaxTokens": "每小时最大Token数: {count}", "compressionAnalyticsStartTracking": "使用带有压缩配置的 POST /v1/chat/completions 来开始跟踪压缩分析。", - "compressionAnalyticsInfo": "压缩分析:按模式(off、lite、standard、aggressive、ultra、RTK、stacked)、引擎、压缩组合和提供者跟踪节省的 Token。将鼠标悬停在图表上以查看详情。使用时间选择器查看不同的时间段。", + "compressionAnalyticsInfo": "压缩分析:按模式(off、lite、standard、aggressive、ultra、RTK、stacked)、引擎、压缩组合和供应商跟踪节省的Token。将鼠标悬停在图表上以查看详情。使用时间选择器查看不同的时间段。", "searchAnalyticsTotalSearches": "总搜索次数", "searchAnalyticsCacheHitRate": "缓存命中率", "searchAnalyticsTotalCost": "总成本", "searchAnalyticsAvgResponse": "平均响应", "searchAnalyticsNoSearchesYet": "还没有搜索", - "providerUtilizationTitle": "提供者利用率", + "providerUtilizationTitle": "供应商利用率", "providerUtilizationFailedToLoad": "无法加载利用率数据", "providerUtilizationNoData": "没有可用的利用率数据", "providerUtilizationGettingStarted": "开始使用", @@ -1992,31 +1992,31 @@ "providerUtilizationLoading": "正在加载使用率数据…", "retrying": "正在重试…", "retry": "重试", - "providerUtilizationNoDataDescription": "收集到使用率数据后,提供者配额快照将显示在此处。", - "providerUtilizationStepConnect": "在提供者中通过 OAuth 或 API 密钥连接提供者", - "providerUtilizationStepEnable": "通过在组合或直接请求中使用该提供者来启用配额跟踪", + "providerUtilizationNoDataDescription": "收集到使用率数据后,供应商配额快照将显示在此处。", + "providerUtilizationStepConnect": "在供应商中通过OAuth或API Key连接供应商", + "providerUtilizationStepEnable": "通过在组合或直接请求中使用该供应商来启用配额跟踪", "providerUtilizationStepAutomatic": "收集到配额快照后,数据将自动显示", "statusExhausted": "已耗尽", "statusLow": "较低", "statusHealthy": "健康", "remainingQuota": "剩余配额", "routeTraceTitle": "路由追踪视图", - "routeTraceDescription": "检查持久化的请求追踪:选定的目标、路由因素、回退依据、当前评分重放、延迟、Token 和目标健康状况。", + "routeTraceDescription": "检查持久化的请求追踪:选定的目标、路由因素、回退依据、当前评分重放、延迟、Token和目标健康状况。", "routeTraceRequestLog": "请求日志", "routeWeight": "权重 {weight}%", "routeNoRelatedEvidence": "尚未持久化相关的目标依据。", "unknown": "未知", "selected": "已选择", - "routeNoStepId": "无步骤 ID", + "routeNoStepId": "无步骤ID", "routeNoStep": "无步骤", "routeMatchesTopTarget": "匹配当前首选目标", "routeDiffersFromTop": "与当前首选不同", "routeTargetMissingNow": "目标当前缺失", - "routeNotComboRouted": "未进行组合路由", + "routeNotComboRouted": "未组合路由", "routeWhyTarget": "为什么选择此目标?", "routeWhyTargetSubtitle": "精确的运行时元数据以及只读评分重放", "routeExactRuntimeLog": "精确的运行时日志", - "routeCallLogsExact": "call_logs 精确", + "routeCallLogsExact": "call_logs精确", "routeReadOnlyRecompute": "只读重新计算", "routeRuntimeRankNow": "当前运行时排名", "routeRuntimeScoreNow": "当前运行时评分", @@ -2029,7 +2029,7 @@ "direct": "直连", "routeUnableToLoad": "无法加载路由解释", "routeNoRequestLogs": "没有可用的请求日志", - "routeNoRequestLogsDescription": "请先通过 OmniRoute 发送流量。路由解释是根据持久化的结构化调用日志生成的。", + "routeNoRequestLogsDescription": "请先通过OmniRoute发送流量。路由解释是根据持久化的结构化调用日志生成的。", "routeDecisionSummary": "决策摘要", "routeConfidence": "{confidence} 置信度", "routeScore": "路由评分", @@ -2037,7 +2037,7 @@ "routeRecentSuccess": "近期成功率", "routeAvgTargetLatency": "平均目标延迟", "routeSelectedTarget": "已选目标", - "provider": "提供者", + "provider": "供应商", "model": "模型", "account": "账户", "connection": "连接", @@ -2045,7 +2045,7 @@ "routeStep": "步骤", "tokens": "Token", "notAvailable": "无", - "routeTokenCounts": "{input} 输入 · {output} 输出", + "routeTokenCounts": "{input} 输入· {output} 输出", "routeEvidence": "依据", "routeFactors": "路由因素", "routeFactorsSubtitle": "用于此解释的加权信号", @@ -2056,13 +2056,13 @@ "routeNoKnownLimitations": "此解释没有已知的限制。" }, "apiManager": { - "title": "API 密钥", - "createKey": "创建 API 密钥", + "title": "API Key", + "createKey": "创建API Key", "key": "密钥", "revokeKey": "撤销密钥", - "revokeConfirm": "确定要撤销这个 API 密钥吗?", - "noKeys": "还没有 API 密钥", - "noKeysDesc": "创建你的第一个 API 密钥,用于验证发往端点的请求", + "revokeConfirm": "确定要撤销这个API Key吗?", + "noKeys": "还没有API Key", + "noKeysDesc": "创建你的第一个API Key,用于验证发往端点的请求", "keyLabel": "密钥标签", "permissions": "权限", "expiresAt": "过期时间", @@ -2070,13 +2070,13 @@ "revoke": "撤销", "showKey": "显示密钥", "hideKey": "隐藏密钥", - "copyKey": "复制 API 密钥", + "copyKey": "复制API Key", "allModels": "全部模型", "selectedModels": "已选模型", "readOnly": "只读", "fullAccess": "完全访问", - "keyManagement": "API 密钥管理", - "keyManagementDesc": "创建和管理用于访问端点的 API 密钥", + "keyManagement": "API Key管理", + "keyManagementDesc": "创建和管理用于访问端点的API Key", "totalKeys": "密钥总数", "restricted": "受限", "totalRequests": "请求总数", @@ -2084,7 +2084,7 @@ "registeredKeys": "已注册密钥", "keysRegistered": "已注册 {count} 个密钥", "keyRegistered": "已注册 {count} 个密钥", - "keysSecurityNote": "每个密钥的用量跟踪彼此隔离,并且可以单独撤销。出于安全考虑,密钥创建后会被遮罩显示。", + "keysSecurityNote": "每个密钥的用量跟踪彼此隔离,并且可以单独撤销。出于安全考虑,密钥创建后会以遮罩显示。", "createFirstKey": "创建第一个密钥", "name": "名称", "usage": "用量", @@ -2092,49 +2092,49 @@ "actions": "操作", "reqs": "请求", "neverUsed": "从未使用", - "deleteConfirm": "删除这个 API 密钥?", + "deleteConfirm": "删除这个API Key?", "usageTips": "使用提示", - "tipAuth": "在 Authorization 请求头中以 Bearer YOUR_KEY 的形式使用 API 密钥", + "tipAuth": "在Authorization请求标头中以Bearer YOUR_KEY的形式使用API Key", "tipSecure": "密钥只会在创建时显示一次,请妥善保存", "tipSeparate": "建议为不同客户端或环境创建独立密钥", "tipRestrict": "将密钥限制到特定模型,可提升安全性并更好控制成本", "keyName": "密钥名称", "keyNamePlaceholder": "例如:生产环境密钥、开发环境密钥", "keyNameDesc": "使用清晰的名称标识该密钥的用途", - "managementAccessDesc": "允许此 API 密钥管理 OmniRoute 配置。", + "managementAccessDesc": "允许此API Key管理OmniRoute配置。", "selfServiceVisibility": "自助可见性", "selfServiceVisibilityDesc": "控制此密钥可查看自身用量和共享上游配额的范围。", - "ownUsageVisibility": "自身成本和 Token 用量", - "ownUsageVisibilityDesc": "允许此密钥调用状态端点,查看自身美元用量、预算占比和 Token 总量。", + "ownUsageVisibility": "自身成本和Token用量", + "ownUsageVisibilityDesc": "允许此密钥调用状态端点,查看自身美元用量、预算占比和Token总量。", "sharedAccountQuotaVisibility": "共享账号配额", "sharedAccountQuotaVisibilityDesc": "当配置了一个明确连接时,允许此密钥查看共享上游账号配额。", "localUsageCommand": "允许本地使用命令", - "localUsageCommandDesc": "允许此 API 密钥使用 @@om-usage 来检索缓存的使用情况和配额信息,而无需调用上游提供者。", + "localUsageCommandDesc": "允许此API Key使用 @@om-usage来检索缓存的使用情况和配额信息,而无需调用上游供应商。", "localUsageCommandBadge": "使用情况命令", - "keyCreated": "API 密钥已创建", + "keyCreated": "API Key已创建", "keyCreatedSuccess": "密钥创建成功!", "keyCreatedNote": "请立即复制并保存此密钥,它不会再次显示。", "done": "完成", "savePermissions": "保存权限", "endpointRestrictions": "允许的端点", - "allEndpointsAllowed": "此密钥可以访问所有 API 端点。", + "allEndpointsAllowed": "此密钥可以访问所有API端点。", "endpointsRestricted": "仅限 {count} 个端点。", "autoResolve": "自动解析", - "autoResolveDesc": "为这个 API 密钥自动将有歧义的模型名解析到原生提供者。", + "autoResolveDesc": "为这个API Key自动将有歧义的模型名解析到原生供应商。", "streamDefaultMode": "流默认兼容性", - "streamDefaultModeDesc": "此键省略了 `stream` 标志。JSON 模式返回非流式响应,除非客户端明确请求 SSE。", + "streamDefaultModeDesc": "此键省略了 `stream` 标志。JSON模式返回非流式响应,除非客户端明确请求SSE。", "streamDefaultLegacy": "遗留", - "streamDefaultJson": "JSON 兼容", - "streamDefaultBadge": "JSON 流默认", + "streamDefaultJson": "JSON兼容", + "streamDefaultBadge": "JSON流默认", "keyActive": "密钥启用状态", - "keyActiveDesc": "启用或禁用此 API 密钥。被禁用的密钥会立即返回 403。", + "keyActiveDesc": "启用或禁用此API Key。已禁用的密钥会立即返回 403。", "accessSchedule": "访问时段", "accessScheduleDesc": "将访问限制在一周中的特定日期和时段。", "scheduleFrom": "开始时间", "scheduleUntil": "结束时间", "scheduleDays": "日期", "scheduleTimezone": "时区", - "scheduleTimezoneHint": "使用 IANA 时区名称,例如 America/New_York、Europe/Berlin", + "scheduleTimezoneHint": "使用IANA时区名称,例如America/New_York、Europe/Berlin", "scheduleActive": "时段限制", "disabled": "已禁用", "daySun": "周日", @@ -2151,7 +2151,7 @@ "selected": "已选择 {count} 个", "all": "全部", "clear": "清空", - "searchModels": "按名称或提供者搜索模型...", + "searchModels": "按名称或供应商搜索模型...", "noModelsFound": "未找到模型", "keyNameRequired": "密钥名称不能为空", "keyNameTooLong": "密钥名称长度不能超过 {max} 个字符", @@ -2159,7 +2159,7 @@ "invalidKeyName": "密钥名称无效", "failedCreateKey": "创建密钥失败", "failedCreateKeyRetry": "创建密钥失败,请重试。", - "invalidKeyId": "密钥 ID 无效", + "invalidKeyId": "密钥ID无效", "failedDeleteKey": "删除密钥失败", "failedDeleteKeyRetry": "删除密钥失败,请重试。", "invalidModelsSelection": "模型选择无效", @@ -2171,15 +2171,15 @@ "keyOnlyAvailableAtCreation": "完整密钥仅会在创建时显示一次,请在首次创建时立即复制保存", "modelsCount": "{count, plural, one {# 个模型} other {# 个模型}}", "devicesCount": "{count, plural, one {# 个设备} other {# 个设备}}", - "devicesTooltip": "{count, plural, one {使用此密钥检测到 # 个不同的 IP/User-Agent 设备(最近 30 分钟)} other {使用此密钥检测到 # 个不同的 IP/User-Agent 设备(最近 30 分钟)}}", + "devicesTooltip": "{count, plural, one {使用此密钥检测到 # 个不同的IP/User-Agent设备(最近 30 分钟)} other {使用此密钥检测到 # 个不同的IP/User-Agent设备(最近 30 分钟)}}", "lastUsedOn": "最近使用:{date}", "viewCostsFor": "查看 {name} 的费用", "editPermissions": "编辑权限", "deleteKey": "删除密钥", "regenerateKey": "重新生成密钥", - "regenerateConfirm": "您确定要重新生成此 API 密钥吗?旧密钥将立即失效。", - "failedRegenerateKey": "无法重新生成 API 密钥", - "failedRegenerateKeyRetry": "无法重新生成 API 密钥。请再试一次。", + "regenerateConfirm": "您确定要重新生成此API Key吗?旧密钥将立即失效。", + "failedRegenerateKey": "无法重新生成API Key", + "failedRegenerateKeyRetry": "无法重新生成API Key。请再试一次。", "model": "{count} 个模型", "models": "{count} 个模型", "permissionsTitle": "权限:{name}", @@ -2192,8 +2192,8 @@ "maxActiveSessionsDescription": "0 = 无限制。当此密钥超过并发粘性会话数时返回 429。", "throttleDelay": "限流延迟", "throttleDelayDescription": "在路由此密钥的请求之前添加固定延迟。0 = 不减速。", - "expandClaudeCodeFamilies": "展开 Claude Code 系列", - "removeClaudeCodeDefault": "移除 Claude Code 默认值", + "expandClaudeCodeFamilies": "展开Claude Code系列", + "removeClaudeCodeDefault": "移除Claude Code默认值", "allowedCombos": "允许的组合", "allCombosAllowed": "此密钥可以使用任何组合。", "restrictedComboCount": "限制为 {count, plural, one {# 个组合} other {# 个组合}}。", @@ -2210,7 +2210,7 @@ "expirationDate": "有效期", "managementAccess": "管理访问", "allowedConnections": "允许的连接", - "searchPlaceholder": "按名称或 token 搜索...", + "searchPlaceholder": "按名称或token搜索...", "activeOnly": "仅显示启用", "filterStatus": "状态", "filterType": "类型", @@ -2230,7 +2230,7 @@ "normalKeysSection": "普通键", "quotaKeysSection": "配额密钥", "bypassProviderQuota": "绕过服务商配额限制", - "bypassProviderQuotaDescription": "允许此密钥在路由期间忽略上游服务商/账户的截止策略。API 密钥的美元配额仍然适用。", + "bypassProviderQuotaDescription": "允许此密钥在路由期间忽略上游服务商/账户的截止策略。API Key的美元配额仍然适用。", "quotaPill": "配额", "quotaModeOnly": "仅配额" }, @@ -2257,19 +2257,19 @@ "previous": "上一页" }, "media": { - "title": "媒体", + "title": "媒体演练场", "subtitle": "生成图像、视频和音乐", "model": "模型", "prompt": "提示词", "generate": "生成", "generating": "生成中...", "loadingModels": "正在加载可用模型...", - "noModels": "暂无可用模型。请先配置支持媒体能力的提供者。", + "noModels": "暂无可用模型。请先配置支持媒体能力的供应商。", "error": "生成失败", "result": "结果", - "imageDescription": "使用 OpenAI、xAI、Together、Hyperbolic、SD WebUI、ComfyUI 等根据文本提示生成图像。", - "videoDescription": "通过 ComfyUI 或 SD WebUI 使用 AnimateDiff、Stable Video Diffusion 创建视频。", - "musicDescription": "通过 ComfyUI 使用 Stable Audio Open 或 MusicGen 生成音乐。", + "imageDescription": "使用OpenAI、xAI、Together、Hyperbolic、SD WebUI、ComfyUI等根据文本提示生成图像。", + "videoDescription": "通过ComfyUI或SD WebUI使用AnimateDiff、Stable Video Diffusion创建视频。", + "musicDescription": "通过ComfyUI使用Stable Audio Open或MusicGen生成音乐。", "kinds": { "embedding": "向量嵌入", "image": "图像", @@ -2282,16 +2282,16 @@ "music": "音乐", "ocr": "OCR" }, - "noProviders": "尚未为此类型配置任何提供者。", + "noProviders": "尚未为此类型配置任何供应商。", "addConnection": "添加连接", - "backToProviders": "返回提供者列表", + "backToProviders": "返回供应商列表", "connections": "{count} 个连接", - "noConnections": "暂无连接 —— 请从提供者页面添加。", + "noConnections": "暂无连接——请从供应商页面添加。", "loading": "正在加载...", "suggestedModels": "来自服务商的推荐模型", "imageGeneration": "图像生成", "imageToText": "图像转文本", - "imageToTextComingSoon": "当 /api/v1/images/understanding 实现后,内联图像转文本 Playground 将可用。", + "imageToTextComingSoon": "当 /api/v1/images/understanding 实现后,内联图像转文本Playground将可用。", "disabled": "已禁用", "videoGeneration": "视频生成", "musicGeneration": "音乐生成", @@ -2300,7 +2300,7 @@ "imagePromptPlaceholder": "日落时分有山脉的宁静风景……", "videoPromptPlaceholder": "花朵绽放的延时摄影……", "musicPromptPlaceholder": "带有合成器铺底的欢快电子音乐……", - "speechTextPlaceholder": "你好!欢迎使用 OmniRoute,您的智能 AI 网关……", + "speechTextPlaceholder": "你好!欢迎使用OmniRoute,您的智能AI网关……", "transcriptionPlaceholder": "上传音频文件以进行转录……", "noImagesReturned": "未返回图像。服务商可能已接受请求,但返回了空数据。", "generatedImageAlt": "已生成图像 {index}", @@ -2308,20 +2308,20 @@ "enterTextToSynthesize": "请输入要合成的文本。", "selectAudioToTranscribe": "请选择要转录的音频文件。", "noSpeechDetected": "在音频文件中未检测到语音。如果您上传了音乐或静音文件,请尝试使用包含说话声音的音频文件。服务商:\"{provider}\"。", - "emptyTranscription": "转录返回空文本。音频可能不包含可识别的语音,或者 \"{provider}\" API 密钥可能无效。请检查 控制面板 → 日志 → 代理 以获取详细信息。", - "topazRequiresImage": "Topaz 需要输入图像。", + "emptyTranscription": "转录返回空文本。音频可能不包含可识别的语音,或者 \"{provider}\" API Key可能无效。请检查控制面板 → 日志 → 代理以获取详细信息。", + "topazRequiresImage": "Topaz需要输入图像。", "enterPrompt": "请输入提示词。", "enhanceThisImage": "增强此图像", "failedToReadFile": "读取文件失败", "generationFailed": "生成失败", "requestFailed": "请求失败 ({status})", "provider": "服务商", - "credentialsRequired": "需要在 服务商 中配置 API 密钥", + "credentialsRequired": "需要在 服务商 中配置 API Key", "voice": "语音", "format": "格式", "audioVideoFile": "音频 / 视频文件", "fileTooLarge": "文件过大 ({size})。最大允许: {max}。", - "audioVideoFileHint": "支持最大 4 GB 的音频和视频文件", + "audioVideoFileHint": "支持最大 4 GB的音频和视频文件", "sourceImage": "源图像", "sourceImageHint": "图生图、编辑和放大工作流可选。", "maskImage": "遮罩图像", @@ -2334,12 +2334,12 @@ "synthesizeSpeech": "合成语音", "transcribeAudio": "转录音频", "generateModality": "生成 {modality}", - "apiKeyRequired": "需要 API 密钥", - "configureApiKeys": "在“提供者”中配置 API 密钥", + "apiKeyRequired": "需要API Key", + "configureApiKeys": "在“供应商”中配置API Key", "downloadFormat": "下载 {format}", "noTextReturned": "未返回文本", "wordTimestamps": "词级时间戳 ({count} 个词)", - "providerCount": "{count} 个提供者" + "providerCount": "{count} 个供应商" }, "search": { "searchQuery": "搜索词", @@ -2347,15 +2347,15 @@ "cachedResult": "已缓存", "searchCost": "成本", "searchTools": "搜索工具", - "searchToolsDesc": "支持提供者对比的高级搜索测试", - "compareProviders": "对比提供者", + "searchToolsDesc": "支持供应商对比的高级搜索测试", + "compareProviders": "对比供应商", "rerankResults": "结果重排", "searchHistory": "搜索历史", - "urlOverlap": "URL 重叠度", - "noSearchProviders": "尚未配置搜索提供者。请前往设置添加。", + "urlOverlap": "URL重叠度", + "noSearchProviders": "尚未配置搜索供应商。请前往设置添加。", "noRerankModels": "没有可用的重排模型", "webSearch": "网页搜索", - "provider": "提供者", + "provider": "供应商", "searchType": "搜索类型", "maxResults": "最大结果数", "filters": "筛选条件", @@ -2400,28 +2400,28 @@ "searchConceptTitle": "搜索", "searchConceptDesc": "搜索 = 获取网页结果列表(标题、URL、摘要、相关性分数)", "scrapeConceptTitle": "抓取", - "scrapeConceptDesc": "抓取 = 提取 URL 的完整内容(Markdown、文本或 HTML)", + "scrapeConceptDesc": "抓取 = 提取URL的完整内容(Markdown、文本或HTML)", "compareConceptTitle": "比较", - "compareConceptDesc": "比较 = 跨 N 个提供者并排运行相同查询,比较延迟、成本和结果重叠", + "compareConceptDesc": "比较 = 跨N个供应商并排运行相同查询,比较延迟、成本和结果重叠", "rerankConceptTitle": "重新排序", - "rerankConceptDesc": "重新排序 = 通过 LLM 重新排序结果以基于查询提高相关性", + "rerankConceptDesc": "重新排序 = 通过LLM重新排序结果以基于查询提高相关性", "autoConceptTitle": "自动(最便宜)", - "autoConceptDesc": "自动(最便宜)= 自动选择具有已配置凭据的最便宜可用提供者", - "providerCatalogTitle": "提供者目录", + "autoConceptDesc": "自动(最便宜)= 自动选择具有已配置凭据的最便宜可用供应商", + "providerCatalogTitle": "供应商目录", "kindSearch": "搜索", "kindFetch": "获取/抓取", "statusConfigured": "已配置", "statusMissing": "无凭据", "statusRateLimited": "速率受限", - "configureProvider": "在提供者中配置", - "loadingProviders": "加载提供者…", - "failedToLoadProviders": "加载提供者失败", + "configureProvider": "在供应商中配置", + "loadingProviders": "加载供应商…", + "failedToLoadProviders": "加载供应商失败", "costPerQuery": "成本/查询", "freeQuota": "免费配额/月", - "scrapeUrl": "要抓取的 URL", + "scrapeUrl": "要抓取的URL", "scrapeUrlPlaceholder": "https://example.com", - "scrapeUrlRequired": "URL 为必填项", - "scrapeUrlInvalid": "无效的 URL — 必须以 http:// 或 https:// 开头", + "scrapeUrlRequired": "URL为必填项", + "scrapeUrlInvalid": "无效的URL—必须以http:// 或https:// 开头", "scrapeExtract": "提取", "scrapeExtracting": "提取中…", "scrapeFullPage": "整页", @@ -2433,10 +2433,10 @@ "scrapeRaw": "原始", "scrapeContentTruncated": "(已截断,查看原始)", "scrapeMetadata": "元数据", - "scrapeProvider": "提供者", + "scrapeProvider": "供应商", "scrapeSize": "大小", - "scrapeEmptyState": "输入 URL 以提取其内容", - "scrapeProvidersAvailable": "可用提供者: Firecrawl, Jina Reader, Tavily, TinyFish。", + "scrapeEmptyState": "输入URL以提取其内容", + "scrapeProvidersAvailable": "可用供应商: Firecrawl, Jina Reader, Tavily, TinyFish。", "compareRun": "比较", "compareRunning": "比较中…", "autoProvider": "自动(最便宜)", @@ -2450,16 +2450,16 @@ "configurationPane": "配置窗格", "configuration": "配置", "status": "状态", - "compareProviderHint": "在“比较”标签页中最多选择 4 个提供者以进行并排比较。", + "compareProviderHint": "在“比较”标签页中最多选择 4 个供应商以并排比较。", "history": "历史记录", "historyHint": "历史记录可在“搜索”标签页中查看。", - "noActiveProvider": "无活动的搜索提供者", - "configureMoreProviders": "配置更多提供者", + "noActiveProvider": "无活动的搜索供应商", + "configureMoreProviders": "配置更多供应商", "links": "链接", "contentTruncated": "内容已截断至 256 KB (原始大小: {size})", "viewFullRaw": "查看完整原始内容", "rawScrapedContent": "抓取的原始内容", - "rawContent": "原始内容 — {size}", + "rawContent": "原始内容— {size}", "closeRawModal": "关闭原始内容模态框", "httpError": "错误 {status}", "failed": "失败", @@ -2470,40 +2470,40 @@ "imageSample": "日落时分群山环抱的宁静风景", "music": "音乐", "musicSample": "欢快的爵士钢琴配轻打击乐", - "noAudioUrl": "响应中无音频 URL:{response}", - "documentUrl": "文档 URL", - "fileTooLarge25Mb": "文件过大 — 最大 25 MB", + "noAudioUrl": "响应中无音频URL:{response}", + "documentUrl": "文档URL", + "fileTooLarge25Mb": "文件过大—最大 25 MB", "selectAudioFirst": "请先选择音频文件。", "speechToText": "语音转文本", "chooseFile": "选择文件…", - "audioFormats25Mb": "mp3, wav, m4a, ogg, flac — 最大 25 MB", + "audioFormats25Mb": "mp3, wav, m4a, ogg, flac—最大 25 MB", "textToSpeech": "文本转语音", "ttsSample": "你好,这是一次文本转语音测试。", "video": "视频", "videoSample": "山脉上空云层的延时摄影", "webFetch": "网页抓取", - "webSearchSample": "什么是 OmniRoute AI 网关?", - "noActiveProviderDescription": "无活动搜索提供者。请在“提供者”中配置。", - "configureProviders": "配置提供者", + "webSearchSample": "什么是OmniRoute AI网关?", + "noActiveProviderDescription": "无活动搜索供应商。请在“供应商”中配置。", + "configureProviders": "配置供应商", "compareQuery": "要比较的查询", "compareQueryPlaceholder": "2026 年人工智能趋势", - "selectedProviders": "提供者(已选 {count} 个):", + "selectedProviders": "供应商(已选 {count} 个):", "selectAll": "全选", "clear": "清除", - "maxCompareProviders": "一次最多可比较 {count} 个提供者。", - "compareResults": "结果 — “{query}”", + "maxCompareProviders": "一次最多可比较 {count} 个供应商。", + "compareResults": "结果— “{query}”", "resultCount": "{count} 条结果", "noResults": "无结果", - "sharedResultTitle": "与其他提供者共有", + "sharedResultTitle": "与其他供应商共有", "sharedResult": "共有", "overlapSummary": "{first} vs {second}:{overlap} 共有", - "compareEmptyTitle": "选择提供者并输入查询以进行比较", - "compareEmptyDescription": "结果将并排显示,包含延迟、成本和 URL 重合度" + "compareEmptyTitle": "选择供应商并输入查询以比较", + "compareEmptyDescription": "结果将并排显示,包含延迟、成本和URL重合度" }, "cliTools": { - "title": "CLI 工具", + "title": "CLI工具", "classifierCompatTitle": "自动权限分类器兼容性", - "classifierCompatDescription": "使用合成的允许响应短路 Claude Code 的 --permission-mode auto 安全分类器,避免回退路由故障关闭。默认关闭。", + "classifierCompatDescription": "使用合成的允许响应短路Claude Code的 --permission-mode auto 安全分类器,避免回退路由故障关闭。默认关闭。", "classifierCompatCycle": "循环:关闭 → 自动 → 始终", "classifierCompatLoadFailed": "加载设置失败", "classifierCompatMode": { @@ -2512,15 +2512,15 @@ "always": "始终" }, "failedSave": "保存失败", - "profileSyncTitle": "CLI 配置文件自动同步", - "profileSyncDescription": "在提供者模型同步后,自动从实时目录重新生成 CLI 工具配置文件。默认关闭 — 仅写入配置文件;绝不会更改活动/默认配置。", + "profileSyncTitle": "CLI配置文件自动同步", + "profileSyncDescription": "在供应商模型同步后,自动从实时目录重新生成CLI工具配置文件。默认关闭—仅写入配置文件;绝不会更改活动/默认配置。", "profileSyncLoadFailed": "加载设置失败", - "codexProfiles": "Codex 配置文件", + "codexProfiles": "Codex配置文件", "codexProfilesDescription": "在模型发现后重新生成 ~/.codex/*.config.toml。", - "claudeProfiles": "Claude Code 配置文件", + "claudeProfiles": "Claude Code配置文件", "claudeProfilesDescription": "在模型发现后重新生成每个 ~/.claude/profiles/…/settings.json。", - "noActiveProviders": "当前没有活跃的提供者", - "noActiveProvidersDesc": "请先添加并连接提供者以配置 CLI 工具。", + "noActiveProviders": "当前没有活跃的供应商", + "noActiveProvidersDesc": "请先添加并连接供应商以配置CLI工具。", "mapModels": "映射模型", "testConnection": "测试连接", "connectionStatus": "连接状态", @@ -2539,8 +2539,8 @@ "modelAliases": "模型别名", "addModel": "添加模型", "routeModelPlaceholder": "将 {model} 路由至...", - "baseUrl": "基础 URL", - "apiKey": "API密钥", + "baseUrl": "基础URL", + "apiKey": "API Key", "configured": "已配置", "notConfigured": "未配置", "notInstalled": "未安装", @@ -2555,11 +2555,11 @@ "monthsAgoShort": "{count} 个月前", "yearsAgoShort": "{count}年前", "runtimeCheckFailed": "运行时检查失败", - "yourApiKeyPlaceholder": "你的 API 密钥", + "yourApiKeyPlaceholder": "你的API Key", "modelPlaceholder": "provider/model-id", "configurationSaved": "配置保存成功。", "failedToSave": "保存配置失败。", - "noApiKeysCreateOne": "无 API 密钥 - 在“密钥”页面创建一个", + "noApiKeysCreateOne": "无API Key - 在“密钥”页面创建一个", "defaultOmnirouteKey": "sk_omniroute(默认)", "selectModel": "选择模型", "selectModelForAlias": "选择 {alias} 的模型", @@ -2569,9 +2569,9 @@ "comingSoon": "即将推出", "checkingRuntime": "正在检查运行时状态...", "guideOnlyIntegration": "仅指南集成(无需本地运行时)", - "cliRuntimeDetected": "CLI 运行时已检测到并准备就绪", - "cliFoundNotRunnable": "CLI 已找到但无法运行{reason}", - "cliRuntimeNotDetected": "未检测到 CLI 运行时", + "cliRuntimeDetected": "CLI运行时已检测到并准备就绪", + "cliFoundNotRunnable": "CLI已找到但无法运行{reason}", + "cliRuntimeNotDetected": "未检测到CLI运行时", "binary": "二进制", "configPath": "配置路径", "configPathShort": "配置", @@ -2588,10 +2588,10 @@ "inactive": "不活跃", "startMitm": "启动中间人", "stopMitm": "停止中间人", - "mitmStarted": "MITM 启动成功!", - "mitmStopped": "MITM 已成功停止!", - "failedStart": "启动 MITM 失败", - "failedStop": "停止 MITM 失败", + "mitmStarted": "MITM启动成功!", + "mitmStopped": "MITM已成功停止!", + "failedStart": "启动MITM失败", + "failedStop": "停止MITM失败", "saveMappings": "保存映射", "mappingsSaved": "映射已保存!", "failedSaveMappings": "保存映射失败", @@ -2605,20 +2605,20 @@ "xhigh": "超高" }, "howItWorks": "工作原理:", - "antigravityHowWorksDesc": "Antigravity 会向 Google 端点发起请求,MITM 会拦截这些请求并重定向到 OmniRoute。", - "antigravityStep1": "1. 启动 MITM,让请求通过 OmniRoute 路由。", + "antigravityHowWorksDesc": "Antigravity会向Google端点发起请求,MITM会拦截这些请求并重定向到OmniRoute。", + "antigravityStep1": "1. 启动MITM,让请求通过OmniRoute路由。", "antigravityStep2Prefix": "2. 添加", "antigravityStep2Suffix": "添加到您的主机文件中作为 127.0.0.1。", - "antigravityStep3": "3. 打开 Antigravity,请求就会被代理。", - "mitmHowWorksDesc": "{toolName} 会先向原始提供者端点发起请求,随后由 MITM 拦截并重定向到 OmniRoute。", - "mitmStep1": "1. 启动 MITM,让请求经由 OmniRoute 路由。", + "antigravityStep3": "3. 打开Antigravity,请求就会被代理。", + "mitmHowWorksDesc": "{toolName} 会先向原始供应商端点发起请求,随后由MITM拦截并重定向到OmniRoute。", + "mitmStep1": "1. 启动MITM,让请求经由OmniRoute路由。", "mitmStep2Prefix": "2. 将", - "mitmStep2Suffix": "添加到你的 hosts 文件,并指向 127.0.0.1。", + "mitmStep2Suffix": "添加到你的hosts文件,并指向 127.0.0.1。", "mitmStep3": "3. 打开 {toolName},后续请求就会自动通过代理转发。", - "sudoPasswordRequiredTitle": "需要 sudo 密码", + "sudoPasswordRequiredTitle": "需要sudo密码", "sudoPasswordHint": "修改主机文件和系统代理设置需要管理员密码。", - "enterSudoPassword": "输入 sudo 密码", - "sudoPasswordRequiredError": "必须提供 sudo 密码。", + "enterSudoPassword": "输入sudo密码", + "sudoPasswordRequiredError": "必须提供sudo密码。", "cancel": "取消", "confirm": "确认", "settingsApplied": "设置应用成功!", @@ -2628,13 +2628,13 @@ "backupRestored": "备份已恢复!", "failedRestore": "恢复失败", "checkingCli": "正在检查 {tool} CLI...", - "cliNotRunnable": "{tool} CLI 已安装但无法运行", - "cliNotInstalled": "{tool} CLI 未安装", + "cliNotRunnable": "{tool} CLI已安装但无法运行", + "cliNotInstalled": "{tool} CLI未安装", "cliNotDetected": "未检测到 {tool} CLI", - "cliDetectedReady": "{tool} CLI 已检测到并准备就绪", + "cliDetectedReady": "{tool} CLI已检测到并准备就绪", "cliFoundFailedHealthcheck": "找到 {tool} CLI,但运行时运行状况检查失败{reason}。", - "installCliPrompt": "请安装 {tool} CLI 以使用此功能。", - "installCodexPrompt": "请先安装 Codex CLI,才能使用自动应用功能。", + "installCliPrompt": "请安装 {tool} CLI以使用此功能。", + "installCodexPrompt": "请先安装Codex CLI,才能使用自动应用功能。", "hide": "隐藏", "howToInstall": "如何安装", "installationGuide": "安装指南", @@ -2644,7 +2644,7 @@ "current": "当前", "baseUrlPlaceholder": "https://.../v1", "resetToDefault": "重置为默认值", - "providerModelPlaceholder": "提供者/模型 ID", + "providerModelPlaceholder": "供应商/模型ID", "apply": "应用", "reset": "重置", "manualConfig": "手动配置", @@ -2657,12 +2657,12 @@ "applied": "已应用!", "failed": "失败", "resetDone": "重置!", - "omnirouteConfiguredOpenAiCompatible": "OmniRoute 已配置为 OpenAI 兼容提供者", - "provider": "提供者", + "omnirouteConfiguredOpenAiCompatible": "OmniRoute已配置为OpenAI兼容供应商", + "provider": "供应商", "model": "模型", - "providers": "提供者", + "providers": "供应商", "auth": "授权", - "noApiKeysAvailable": "没有可用的 API 密钥", + "noApiKeysAvailable": "没有可用的API Key", "usingDefaultOmniroute": "使用默认值:sk_omniroute", "updateConfig": "更新配置", "applyConfig": "应用配置", @@ -2678,9 +2678,9 @@ "deleteProfile": "删除配置档案", "profileNamePlaceholder": "配置档案名称(例如:个人账户)", "saveCurrent": "保存当前", - "codexAuthNotePrefix": "Codex 使用", + "codexAuthNotePrefix": "Codex使用", "codexAuthNoteMiddle": "与", - "codexAuthNoteSuffix": "单击“应用”进行自动配置。", + "codexAuthNoteSuffix": "单击“应用”自动配置。", "claudeManualConfiguration": "Claude CLI - 手动配置", "codexManualConfiguration": "Codex CLI - 手动配置", "droidManualConfiguration": "Factory Droid - 手动配置", @@ -2690,66 +2690,66 @@ "whenToUseLabel": "何时使用", "openToolDocs": "打开工具文档", "toolUseCases": { - "claude": "当您需要强大的规划工作流程和使用 Claude Code 进行长的多文件重构时使用。", - "codex": "当您的团队在 OpenAI Codex CLI 流程和基于配置文件的身份验证方面实现标准化时使用。", + "claude": "当您需要强大的规划工作流程和使用Claude Code进行长多文件重构时使用。", + "codex": "当您的团队在OpenAI Codex CLI流程和基于配置文件的身份验证方面实现标准化时使用。", "droid": "当您需要专注于快速编码和命令执行循环的轻量级终端代理时使用。", - "openclaw": "当您需要 Open Claw 风格的编码代理但通过 OmniRoute 策略进行路由时使用。", - "cline": "当您在编辑器内配置编码代理并希望使用 OmniRoute 模型进行引导设置时使用。", - "kilo": "当您的工作流程依赖于 Kilo Code 命令和快速迭代编辑时使用。", - "cursor": "在 Cursor 中编码并且需要通过 OmniRoute 自定义 OpenAI 兼容模型时使用。", - "continue": "在 IDE 中运行“Continue”并且需要可移植的基于 JSON 的提供程序配置时使用。", - "opencode": "当您更喜欢通过 OpenCode 进行终端本机代理运行和脚本自动化时使用。", - "kiro": "在集成 Kiro 并从 OmniRoute 集中控制模型路由时使用。", - "windsurf": "当您需要 Windsurf AI IDE 并通过 OmniRoute 路由模型时使用。", - "antigravity": "当必须通过 MITM 拦截 Antigravity/Kiro 流量并将其路由到 OmniRoute 时使用。", - "copilot": "当您想要 Copilot 聊天风格的 UX 同时强制执行 OmniRoute 键和路由规则时使用。", - "amp": "当您想要 Amp 简写工作流,但仍需要 OmniRoute 别名和路由规则支持时使用。", - "hermes": "当您需要轻量级终端原生 AI 助手来处理快速任务时使用。", - "hermes-agent": "需要使用 Hermes Agent (by Nousresearch) 时使用,默认、委派、视觉与辅助模型均通过 OmniRoute 路由。", - "custom": "用于自定义工具实现或通用 OpenAI 兼容配置。" + "openclaw": "当您需要Open Claw风格的编码代理但通过OmniRoute策略路由时使用。", + "cline": "当您在编辑器内配置编码代理并希望使用OmniRoute模型引导设置时使用。", + "kilo": "当您的工作流程依赖于Kilo Code命令和快速迭代编辑时使用。", + "cursor": "在Cursor中编码并且需要通过OmniRoute自定义OpenAI兼容模型时使用。", + "continue": "在IDE中运行“Continue”并且需要可移植的基于JSON的提供程序配置时使用。", + "opencode": "当您更喜欢通过OpenCode进行终端本机代理运行和脚本自动化时使用。", + "kiro": "在集成Kiro并从OmniRoute集中控制模型路由时使用。", + "windsurf": "当您需要Windsurf AI IDE并通过OmniRoute路由模型时使用。", + "antigravity": "当必须通过MITM拦截Antigravity/Kiro流量并将其路由到OmniRoute时使用。", + "copilot": "当您想要Copilot聊天风格的UX同时强制执行OmniRoute键和路由规则时使用。", + "amp": "当您想要Amp简写工作流,但仍需要OmniRoute别名和路由规则支持时使用。", + "hermes": "当您需要轻量级终端原生AI助手来处理快速任务时使用。", + "hermes-agent": "需要使用Hermes智能体 (by Nousresearch) 时使用,默认、委派、视觉与辅助模型均通过OmniRoute路由。", + "custom": "用于自定义工具实现或通用OpenAI兼容配置。" }, "toolDescriptions": { - "antigravity": "带 MITM 的 Google Antigravity IDE", - "claude": "Claude Code CLI", + "antigravity": "带MITM的Google Antigravity IDE", + "claude": "Anthropic Claude Code CLI", "codex": "OpenAI Codex CLI", - "grok-build": "支持自定义提供者的 xAI Grok Build TUI 编码智能体", - "droid": "Factory Droid AI 助手", - "openclaw": "OpenClaw AI 助手", - "cline": "Cline AI 编码助手 CLI", - "kilo": "Kilo Code AI 助手 CLI", + "grok-build": "支持自定义供应商的xAI Grok Build TUI编码智能体", + "droid": "Factory Droid AI助手", + "openclaw": "OpenClaw AI助手", + "cline": "Cline AI编码助手CLI", + "kilo": "Kilo Code AI助手CLI", "qwen": "Qwen Code CLI", - "cursor": "Cursor AI 代码编辑器", + "cursor": "Cursor AI代码编辑器", "continue": "继续AI助手", - "opencode": "OpenCode AI 编码智能体(终端)", - "kiro": "Amazon Kiro - AI 驱动 IDE", + "opencode": "OpenCode AI编码智能体(终端)", + "kiro": "Amazon Kiro - AI驱动IDE", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp 编程助手 CLI", - "hermes": "Hermes AI 终端助手", - "hermes-agent": "Hermes Agent (by Nousresearch) — 支持多模型(委派、视觉、压缩等)的高级终端 AI。", - "custom": "通用 OpenAI 兼容 CLI 或 SDK 配置生成器", - "aider": "具有 OpenAI 兼容 Base URL 的 Aider AI 结对编程 CLI", - "forge": "支持自定义提供者的 ForgeCode 编码智能体 CLI", - "cursor-cli": "无头智能体模式下的 Cursor Agent CLI", - "roo": "适用于 VS Code 的 Roo Code AI 助手", - "jcode": "jcode 终端编码智能体", - "deepseek-tui": "用 Rust 编写的 DeepSeek TUI 编程智能体", - "codewhale": "CodeWhale 编程智能体,DeepSeek TUI 的继任者", - "smelt": "Smelt 编程智能体 CLI", - "pi": "轻量级 Pi 终端编程智能体", - "crush": "Charm 推出的 Crush 终端编程智能体", - "goose": "Goose 自主智能体 CLI", - "interpreter": "Open Interpreter 自主编程智能体 CLI", - "omp": "Oh My Pi 终端编程智能体", - "letta": "具备持久记忆和工具使用能力的 Letta CLI 智能体", - "warp": "支持自定义提供者的 Warp AI 终端", - "agent-deck": "Agent Deck 多智能体编排器" + "amp": "Sourcegraph Amp编程助手CLI", + "hermes": "Hermes AI终端助手", + "hermes-agent": "Hermes智能体 (by Nousresearch) —支持多模型(委派、视觉、压缩等)的高级终端AI。", + "custom": "通用OpenAI兼容CLI或SDK配置生成器", + "aider": "具有OpenAI兼容Base URL的Aider AI结对编程CLI", + "forge": "支持自定义供应商的ForgeCode编码智能体CLI", + "cursor-cli": "无头智能体模式下的Cursor Agent CLI", + "roo": "适用于VS Code的Roo Code AI助手", + "jcode": "jcode终端编码智能体", + "deepseek-tui": "用Rust编写的DeepSeek TUI编程智能体", + "codewhale": "CodeWhale编程智能体,DeepSeek TUI的继任者", + "smelt": "Smelt编程智能体CLI", + "pi": "轻量级Pi终端编程智能体", + "crush": "Charm推出的Crush终端编程智能体", + "goose": "Goose自主智能体CLI", + "interpreter": "Open Interpreter自主编程智能体CLI", + "omp": "Oh My Pi终端编程智能体", + "letta": "具备持久记忆和工具使用能力的Letta CLI智能体", + "warp": "支持自定义供应商的Warp AI终端", + "agent-deck": "智能体Deck多智能体编排器" }, "guides": { "cursor": { "notes": { - "0": "使用该功能需要 Cursor Pro 账户。", - "1": "Cursor 会通过自己的服务器转发请求,因此不支持本地端点。请在设置中启用云端点。" + "0": "使用该功能需要Cursor Pro账户。", + "1": "Cursor会通过自己的服务器转发请求,因此不支持本地端点。请在设置中启用云端点。" }, "steps": { "1": { @@ -2757,14 +2757,14 @@ "desc": "转到设置 -> 模型" }, "2": { - "title": "启用 OpenAI API", - "desc": "开启 “OpenAI API key” 选项" + "title": "启用OpenAI API", + "desc": "开启 “OpenAI API Key” 选项" }, "3": { "title": "Base URL" }, "4": { - "title": "API密钥" + "title": "API Key" }, "5": { "title": "添加自定义模型", @@ -2782,7 +2782,7 @@ "desc": "打开继续配置文件" }, "2": { - "title": "API密钥" + "title": "API Key" }, "3": { "title": "选择模型" @@ -2793,65 +2793,65 @@ } }, "notes": { - "0": "Continue 使用 JSON 配置文件。" + "0": "Continue使用JSON配置文件。" } }, "opencode": { "steps": { "1": { - "title": "安装 OpenCode", - "desc": "通过 npm 安装:npm install -g opencode-ai" + "title": "安装OpenCode", + "desc": "通过npm安装:npm install -g opencode-ai" }, "2": { - "title": "API 密钥" + "title": "API Key" }, "3": { - "title": "设置 Base URL", + "title": "设置Base URL", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { "title": "选择模型" }, "5": { - "title": "使用 Thinking 变体", - "desc": "对于思考模型,请使用 --variant high/low/max 运行(示例命令见下方)。" + "title": "使用Thinking变体", + "desc": "对于思考模型,请使用 --variant high/low/max运行(示例命令见下方)。" } }, "notes": { - "0": "OpenCode 需要配置 API 密钥。", - "1": "将基础 URL 设置为您的 OmniRoute 端点。" + "0": "OpenCode需要配置API Key。", + "1": "将基础URL设置为您的OmniRoute端点。" } }, "kiro": { "steps": { "1": { - "title": "打开 Kiro 设置", - "desc": "前往 Settings → AI Provider" + "title": "打开Kiro设置", + "desc": "前往Settings → AI供应商" }, "2": { "title": "Base URL", - "desc": "粘贴你的 OmniRoute 端点 URL" + "desc": "粘贴你的OmniRoute端点URL" }, "3": { - "title": "API 密钥" + "title": "API Key" }, "4": { "title": "选择模型" } }, "notes": { - "0": "Kiro 需要 Amazon 账户。" + "0": "Kiro需要Amazon账户。" } }, "windsurf": { "steps": { "1": { - "title": "打开 AI 设置", - "desc": "点击 Windsurf 中的 AI Settings 图标,或前往 Settings" + "title": "打开AI设置", + "desc": "点击Windsurf中的AI Settings图标,或前往Settings" }, "2": { - "title": "添加自定义提供者", - "desc": "选择 \"Add custom provider\" (OpenAI 兼容)" + "title": "添加自定义供应商", + "desc": "选择 \"Add custom provider\" (OpenAI兼容)" }, "3": { "title": "Base URL", @@ -2859,7 +2859,7 @@ }, "4": { "title": "API Key", - "desc": "选择你的 OmniRoute API 密钥" + "desc": "选择你的OmniRoute API Key" }, "5": { "title": "选择模型", @@ -2869,21 +2869,21 @@ } }, "autoConfiguredTab": "自动配置", - "toolCategoriesDesc": "配置 AI 编程助手通过 OmniRoute 路由", + "toolCategoriesDesc": "配置AI编程助手通过OmniRoute路由", "allToolsTab": "所有工具", "guidedClientsTab": "引导客户端", - "mitmClientsTab": "MITM 客户端", - "customCliTab": "自定义 CLI", + "mitmClientsTab": "MITM客户端", + "customCliTab": "自定义CLI", "toolCategories": "工具分类", "visibleToolsCount": "{count} 个工具可用", - "customCliBuilderTitle": "兼容 OpenAI 的 CLI 构建器", - "customCliBuilderDescription": "为任何接受 OpenAI 兼容的基本 URL、API 密钥和模型 ID 的 CLI 或 SDK 生成环境变量和 JSON 片段。", + "customCliBuilderTitle": "兼容OpenAI的CLI构建器", + "customCliBuilderDescription": "为任何接受OpenAI兼容的基本URL、API Key和模型ID的CLI或SDK生成环境变量和JSON片段。", "customCliNoModels": "连接至少一个供应商以填充模型选择器。", - "customCliNameLabel": "CLI 名称", - "customCliNamePlaceholder": "例如我的团队 CLI", + "customCliNameLabel": "CLI名称", + "customCliNamePlaceholder": "例如我的团队CLI", "customCliDefaultModelLabel": "默认型号", - "customCliDefaultModelHelp": "使用任何 OmniRoute 模型 ID 或组合。大多数与 OpenAI 兼容的 CLI 只需要 /v1 基本 URL 加上模型字符串。", - "customCliKeyHelper": "对于本地安装 OmniRoute 可以使用 sk_omniroute。在云模式下,选择您的管理 API 密钥之一。", + "customCliDefaultModelHelp": "使用任何OmniRoute模型ID或组合。大多数与OpenAI兼容的CLI只需要 /v1 基本URL加上模型字符串。", + "customCliKeyHelper": "对于本地安装OmniRoute可以使用sk_omniroute。在云模式下,选择您的管理API Key之一。", "customCliAliasMappingsLabel": "别名映射", "customCliAliasMappingsHelp": "需要稳定简写名称的包装器脚本或配置文件的可选帮助程序别名。", "customCliAddAlias": "添加别名", @@ -2891,9 +2891,9 @@ "customCliAliasPlaceholder": "例如评论", "customCliTargetModelLabel": "目标型号", "customCliEndpointHintLabel": "如何连接端点", - "customCliEndpointHint": "将任何 OpenAI 兼容客户端指向 OmniRoute /v1 基本 URL。原始聊天完成端点是 {endpoint}。当工具需要提供程序对象时使用 JSON 块,或者在读取 OPENAI_* 变量时使用 env 脚本。", - "customCliEnvBlockTitle": "环境 / shell 片段", - "customCliJsonBlockTitle": "供应商 JSON 块", + "customCliEndpointHint": "将任何OpenAI兼容客户端指向OmniRoute /v1 基本URL。原始聊天完成端点是 {endpoint}。当工具需要提供程序对象时使用JSON块,或者在读取OPENAI_* 变量时使用env脚本。", + "customCliEnvBlockTitle": "环境 / shell片段", + "customCliJsonBlockTitle": "供应商JSON块", "networkError": "网络错误", "other": "其他", "preview": "预览", @@ -2908,30 +2908,30 @@ "hermesRoleCompressionDesc": "提示词压缩与摘要", "hermesRoleWebExtract": "网页提取", "hermesRoleWebExtractDesc": "网页内容提取", - "hermesRoleSkillsHub": "技能中心", - "hermesRoleSkillsHubDesc": "技能与工具使用推理", + "hermesRoleSkillsHub": "Skills中心", + "hermesRoleSkillsHubDesc": "Skills与工具使用推理", "hermesRoleApproval": "审批", "hermesRoleApprovalDesc": "安全与审批决策", "hermesSelectBeforePreview": "在预览之前,请为角色选择模型,或确保角色已加载。", "hermesPreviewFailed": "生成预览失败", "hermesSavedTo": "已保存至 {path}", - "hermesFirstSetupTitle": "首次于 {date} 通过 OmniRoute 设置", + "hermesFirstSetupTitle": "首次于 {date} 通过OmniRoute设置", "hermesSinceSetup": "距设置已有 {time}", "hermesConfiguredRoles": "{configured}/{total} 个角色", "hermesQuickApply": "快速将相同模型应用到所有角色:", "hermesApplyModelToAll": "将 {model} 应用到每个角色", - "hermesViaOmniRoute": "{provider}(通过 OmniRoute)", - "hermesNotOmniRoute": "{provider}(非 OmniRoute)", + "hermesViaOmniRoute": "{provider}(通过OmniRoute)", + "hermesNotOmniRoute": "{provider}(非OmniRoute)", "hermesRemovePendingRole": "从待处理更改中移除此角色", - "hermesApply": "应用到 Hermes Agent", + "hermesApply": "应用到Hermes Agent", "hermesRolesWillUpdate": "{count, plural, one {将更新 # 个角色} other {将更新 # 个角色}}", - "hermesPreviewPath": "预览 — 将写入 ~/.hermes/config.yaml", + "hermesPreviewPath": "预览—将写入 ~/.hermes/config.yaml", "hermesSaveDescription": "将每个角色所选的模型保存到", - "copilotConfigGenerator": "GitHub Copilot 配置生成器", + "copilotConfigGenerator": "GitHub Copilot配置生成器", "copilotGeneratorDescriptionPrefix": "生成", - "copilotGeneratorDescriptionSuffix": "块,适用于采用 Azure 供应商模式的 VS Code GitHub Copilot。选择所需的模型,然后将 JSON 复制到配置文件中。", - "copilotCompatibilityWarning": "此配置使用 Azure 供应商变通方案来实现自定义模型列表。已在 VS Code ≥ 1.109GitHub Copilot Chat ≥ v0.37 上测试。未来的扩展更新可能会更改此行为。", - "copilotApiKey": "API密钥", + "copilotGeneratorDescriptionSuffix": "块,适用于采用Azure供应商模式的VS Code GitHub Copilot。选择所需的模型,然后将JSON复制到配置文件中。", + "copilotCompatibilityWarning": "此配置使用Azure供应商变通方案实现自定义模型列表。已在 VS Code ≥ 1.109GitHub Copilot Chat ≥ v0.37 上测试。未来的扩展更新可能会更改此行为。", + "copilotApiKey": "API Key", "copilotSelectModels": "选择模型 ({selected}/{total})", "selectAll": "全选", "loadingModels": "正在加载模型...", @@ -2943,9 +2943,9 @@ "copilotMaxOutputTokens": "最大输出代币", "copilotToolCalling": "工具调用", "copilotPasteInto": "粘贴到:", - "copilotReloadInstruction": "然后重新加载 VS Code 并在输入提示框中设置 API 密钥。", + "copilotReloadInstruction": "然后重新加载VS Code并在输入提示框中设置API Key。", "wireApiChatCompletions": "聊天完成 (/chat/completions)", - "wireApiResponses": "响应 API (/responses)", + "wireApiResponses": "响应API (/responses)", "ccDiscoveryInfoButton": "__MISSING__:How to enable discovery in Claude Code", "ccDiscoveryInfoTooltip": "__MISSING__:Advertise non-Claude models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Doubles catalog entries for all clients when enabled globally.", "ccDiscoveryInfoLink": "__MISSING__:Open Feature Flags", @@ -2960,7 +2960,7 @@ "description": "创建支持权重路由与故障回退的模型组合", "autoCatalogTitle": "自动路由目录", "autoCatalogTemplateCount": "{count} 个模板", - "autoCatalogDescription": "内置 auto/* 组合,从已连接的提供者动态解析。直接将这些 ID 作为 model 字段使用——无需设置。", + "autoCatalogDescription": "内置auto/* 组合,从已连接的供应商动态解析。直接将这些ID作为model字段使用——无需设置。", "autoCatalogExpand": "展开自动路由目录", "autoCatalogCollapse": "收起自动路由目录", "createCombo": "创建组合", @@ -2995,7 +2995,7 @@ "errorDeleting": "删除组合时出错", "testFailed": "测试请求失败", "failedToggle": "切换组合状态失败", - "testResults": "测试结果 — {name}", + "testResults": "测试结果— {name}", "resolvedBy": "最终由以下模型处理:", "more": "另有 +{count} 个", "reqs": "请求", @@ -3018,7 +3018,7 @@ "randomDesc": "均匀随机选择,失败后回退到剩余模型", "leastUsedDesc": "优先选择请求数最少的模型,随时间平衡负载", "costOptimizedDesc": "根据定价优先路由到最便宜的模型", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", + "cacheOptimizedDesc": "将每个可复用的提示前缀一致地路由到同一供应商账户。", "resetAware": "复位感知RR", "resetAwareDesc": "平衡剩余配额与 5 小时和每周重置,然后对相似分数进行循环赛", "strictRandom": "严格随机", @@ -3040,30 +3040,30 @@ "concurrencyPerModel": "每模型并发数", "queueTimeout": "排队超时(毫秒)", "contextRelayHandoffThreshold": "交接阈值", - "contextRelayHandoffThresholdHelp": "当配额使用达到该阈值时,OmniRoute 会在当前活跃账户耗尽前生成结构化交接摘要。", + "contextRelayHandoffThresholdHelp": "当配额使用达到该阈值时,OmniRoute会在当前活跃账户耗尽前生成结构化交接摘要。", "contextRelayMaxMessages": "摘要最大消息数", "contextRelayMaxMessagesHelp": "限制压缩进接力摘要中的最近历史消息数量。", "contextRelaySummaryModel": "摘要模型", - "contextRelaySummaryModelHelp": "仅用于生成交接摘要的可选覆盖模型。留空则复用当前活跃的 combo 模型。", - "contextRelayProviderNote": "Context Relay 当前主要为 Codex 账户轮换生成交接摘要。与同一提供者的多个账户配合使用时,连续性效果最佳。", - "advancedHint": "留空则使用全局默认值。这些设置会覆盖每个提供者的配置。", - "failoverBeforeRetry": "重试之前进行故障转移", + "contextRelaySummaryModelHelp": "仅用于生成交接摘要的可选覆盖模型。留空则复用当前活跃的combo模型。", + "contextRelayProviderNote": "Context Relay当前主要为Codex账户轮换生成交接摘要。与同一供应商的多个账户配合使用时,连续性效果最佳。", + "advancedHint": "留空则使用全局默认值。这些设置会覆盖每个供应商的配置。", + "failoverBeforeRetry": "重试之前故障转移", "maxSetRetries": "最大设置重试次数", "setRetryDelayMs": "设置重试延迟(毫秒)", "moveUp": "上移", "moveDown": "下移", "removeModel": "移除", "saving": "保存中...", - "liveNoProviders": "尚未检测到任何提供者。", + "liveNoProviders": "尚未检测到任何供应商。", "liveFleetDataHint": "集群数据通过实时组合事件传入。", "liveActiveCount": "活跃 ({count})", "liveErrorCount": "错误 ({count})", "liveInactiveCount": "非活跃 ({count})", "liveNoRun": "无可用组合运行记录。", - "liveDataHint": "实时数据通过 WebSocket 组合通道传入。", - "liveDisconnected": "实时已禁用 — WebSocket 已断开连接。正在显示最后已知状态。", + "liveDataHint": "实时数据通过WebSocket组合通道传入。", + "liveDisconnected": "实时已禁用—WebSocket已断开连接。正在显示最后已知状态。", "liveSelectCombo": "选择组合", - "liveSelectComboPlaceholder": "— 选择组合 —", + "liveSelectComboPlaceholder": "—选择组合—", "liveTargetCount": "{count, plural, one {# 个目标} other {# 个目标}}", "liveSingle": "单个", "liveFleet": "集群", @@ -3074,12 +3074,12 @@ "playgroundStatusUnknown": "未知", "playgroundNetworkError": "模拟过程中发生网络错误", "playgroundTitle": "组合演练场", - "playgroundDescription": "模拟请求如何通过您的组合进行路由", + "playgroundDescription": "模拟请求如何通过您的组合路由", "playgroundConfiguration": "配置", "playgroundNoCombosConfigured": "未配置组合", "active": "已启用", "inactive": "未启用", - "playgroundEstimatedPromptTokens": "预估 Prompt Token 数", + "playgroundEstimatedPromptTokens": "预估Prompt Token数", "playgroundSimulating": "正在模拟...", "playgroundSimulateRoute": "模拟路由", "playgroundRoutingPath": "路由路径", @@ -3132,7 +3132,7 @@ "example": "后台任务或批处理作业,优先考虑更低成本。" }, "reset-aware": { - "when": "您可以使用配额遥测和不同的重置窗口跨多个帐户进行路由。", + "when": "您可以使用配额遥测和不同的重置窗口跨多个帐户路由。", "avoid": "大多数帐户无法使用配额遥测。", "example": "宁愿明天每周重置 60% 的帐户,也不愿稍后重置 80% 的帐户。" }, @@ -3142,19 +3142,19 @@ "example": "例如:同一模型挂载多个账户,用于更均匀地分摊使用量。" }, "p2c": { - "when": "当您希望使用 Power-of-Two-Choices 算法进行低延迟选择时使用。", - "avoid": "对于少于等于 2 个模型的小型组合避免使用 — 与轮询相比没有优势。", - "example": "示例:在 4 个或更多等效模型端点之间进行高吞吐量推理。" + "when": "当您希望使用Power-of-Two-Choices算法低延迟选择时使用。", + "avoid": "对于少于等于 2 个模型的小型组合避免使用—与轮询相比没有优势。", + "example": "示例:在 4 个或更多等效模型端点之间高吞吐量推理。" }, "context-relay": { "when": "当长会话必须在账户轮换时保持工作上下文不丢失时使用。", "avoid": "当账户切换很少发生或您不希望额外的摘要请求时避免使用。", - "example": "示例:在接近配额耗尽时轮换多个账户的 Codex 会话。" + "example": "示例:在接近配额耗尽时轮换多个账户的Codex会话。" }, "fill-first": { - "when": "当您希望在转移到下一个提供者之前完全耗尽一个提供者的配额时使用。", - "avoid": "当您需要在提供者之间进行请求级负载均衡时避免使用。", - "example": "示例:在使用完所有 200 美元的 Deepgram 额度后再回退到 Groq。" + "when": "当您希望在转移到下一个供应商之前完全耗尽一个供应商的配额时使用。", + "avoid": "当您需要在供应商之间请求级负载均衡时避免使用。", + "example": "示例:在使用完所有 200 美元的Deepgram额度后再回退到Groq。" }, "auto": { "when": "当您需要基于成本、延迟和质量的多因素评分路由时使用。", @@ -3162,7 +3162,7 @@ "example": "示例:在具有不同优势的模型之间平衡请求。" }, "lkgp": { - "when": "当您希望基于历史成功率和性能进行路由时使用。", + "when": "当您希望基于历史成功率和性能路由时使用。", "avoid": "当历史数据有限或不可靠时避免使用。", "example": "示例:路由到在特定任务上有良好记录的模型。" }, @@ -3176,13 +3176,13 @@ "maxRetries": "请求失败前最多会尝试多少次重试。", "retryDelay": "两次重试之间的初始等待时间。值越大越能降低突发压力。", "timeout": "请求被中止前允许的最长持续时间。", - "healthcheck": "路由决策时跳过不健康的模型或提供者。", + "healthcheck": "路由决策时跳过不健康的模型或供应商。", "concurrencyPerModel": "轮询模式下每个模型允许的最大并发请求数。", "queueTimeout": "请求在队列中等待超时前允许停留的最长时间。", - "failoverBeforeRetry": "启用后,任何上游错误都会触发立即故障转移到下一个组合目标,跳过所有重试和回退 URL。", + "failoverBeforeRetry": "启用后,任何上游错误都会触发立即故障转移到下一个组合目标,跳过所有重试和回退URL。", "maxSetRetries": "每个目标失败时重试完整目标集的次数。 0 = 没有设置级别重试。", "setRetryDelayMs": "设置级别重试尝试之间的延迟,为暂时性问题提供解决时间。", - "disableSessionStickiness": "每次请求时轮换到不同的连接,而不是通过首条消息的哈希值将整个对话固定在同一个连接上。覆盖全局默认设置。保持为“继承”以保留多轮对话的 prompt-cache 命中。" + "disableSessionStickiness": "每次请求时轮换到不同的连接,而不是通过首条消息的哈希值将整个对话固定在同一个连接上。覆盖全局默认设置。保持为“继承”以保留多轮对话的prompt-cache命中。" }, "templatesTitle": "快捷模板", "templatesDescription": "先套用一个初始模板,再按需调整模型和配置。", @@ -3212,8 +3212,8 @@ "filterIntelligent": "智能路由", "filterDeterministic": "确定性", "filterEmptyTitle": "没有组合匹配此策略筛选。", - "filterEmptyIntelligentDescription": "创建自动或 LKGP 组合以填充智能路由仪表盘。", - "filterEmptyDeterministicDescription": "当前仅存在自动和 LKGP 组合。切换回\"全部\"或创建确定性组合。", + "filterEmptyIntelligentDescription": "创建自动或LKGP组合以填充智能路由看板。", + "filterEmptyDeterministicDescription": "当前仅存在自动和LKGP组合。切换回\"全部\"或创建确定性组合。", "readinessTitle": "可以保存了吗?", "readinessDescription": "在创建或更新组合前,请先检查以下项目。", "readinessCheckName": "组合名称有效", @@ -3231,17 +3231,17 @@ "applyRecommendations": "应用推荐", "recommendationsUpdated": "已为 {strategy} 更新推荐配置。", "recommendationsApplied": "推荐配置已应用到当前组合。", - "intelligentPanelTitle": "智能路由仪表盘", + "intelligentPanelTitle": "智能路由看板", "intelligentPanelDesc": "此自动路由组合的实时评分和健康状态。", "configOnlyStatus": "配置视图", "configOnlyHint": "此面板仅显示路由输入,实时熔断器状态请到健康页面查看。", "routingInputs": "路由输入", "routingInputsHint": "模式包与权重保留在此处;熔断器运行状态保留在健康页面。", "emailVisibilityHint": "此处账号邮箱遵循全局隐私开关。", - "emailVisibilityTooltip": "使用眼睛图标可在组合、提供者与配额页面间全局切换账号邮箱的显示与隐藏。", + "emailVisibilityTooltip": "使用眼睛图标可在组合、供应商与配额页面间全局切换账号邮箱的显示与隐藏。", "manualModel": "手动模型", - "manualModelInvalid": "请按 provider/model 格式填写。", - "manualModelUnknownProvider": "未知的提供者前缀。", + "manualModelInvalid": "请按provider/model格式填写。", + "manualModelUnknownProvider": "未知的供应商前缀。", "builderDynamicAccountShort": "动态账号", "builderNeedValidName": "请先填写有效的组合名称再继续。", "statusOverview": "状态概览", @@ -3255,7 +3255,7 @@ "providerScores": "供应商评分", "allProvidersEvaluated": "未配置候选池。运行时评估所有活跃供应商。", "excludedProviders": "已排除的供应商", - "excludedProvidersHint": "熔断器处于 OPEN 状态的供应商将被临时排除在路由之外。", + "excludedProvidersHint": "熔断器处于OPEN状态的供应商将被临时排除在路由之外。", "noExcludedProviders": "当前没有供应商被排除。", "cooldownMinutes": "冷却:{minutes} 分钟", "builderIntelligentTitle": "智能路由配置", @@ -3290,7 +3290,7 @@ "description": "使用一个主模型,并保持回退链路简短且可靠。", "tip1": "把最可靠的模型放在第一位。", "tip2": "保留 1 到 2 个质量相近的备用模型。", - "tip3": "开启安全重试,吸收临时性的提供者故障。" + "tip3": "开启安全重试,吸收临时性的供应商故障。" }, "weighted": { "title": "可控流量分配", @@ -3311,7 +3311,7 @@ "description": "适用于不需要严格保证、只想简单分流的场景。", "tip1": "尽量选择延迟特征相近的模型。", "tip2": "保留重试机制,以吸收随机命中的失败。", - "tip3": "更适合实验场景,不建议用于严格 SLA。" + "tip3": "更适合实验场景,不建议用于严格SLA。" }, "least-used": { "title": "自适应均衡", @@ -3329,8 +3329,8 @@ }, "reset-aware": { "title": "重置感知账户轮换", - "description": "根据重置时间平衡剩余的提供者配额。", - "tip1": "对具有配额遥测的提供者使用显式帐户步骤或帐户标签路由。", + "description": "根据重置时间平衡剩余的供应商配额。", + "tip1": "对具有配额遥测的供应商使用显式帐户步骤或帐户标签路由。", "tip2": "当短期疲劳风险更大时,调整训练次数与每周重量。", "tip3": "保持领带较小,这样等值账户仍然可以公平地轮换。" }, @@ -3339,24 +3339,24 @@ "description": "每轮中每个模型都会被恰好使用一次,然后再重新洗牌。", "tip1": "至少使用 2 个模型,才能体现分配效果。", "tip2": "最适合性能相近的模型。", - "tip3": "非常适合在多个 API 账户之间做负载均衡。" + "tip3": "非常适合在多个API账户之间做负载均衡。" }, "fill-first": { - "description": "在切换到链中的下一个提供者之前,先耗尽一个提供者的配额。", - "tip1": "按免费配额大小排列模型 — 最大的放在第一位。", - "tip2": "启用健康检查以跳过已耗尽的提供者。", + "description": "在切换到链中的下一个供应商之前,先耗尽一个供应商的配额。", + "tip1": "按免费配额大小排列模型—最大的放在第一位。", + "tip2": "启用健康检查以跳过已耗尽的供应商。", "tip3": "非常适合免费层级堆叠(Deepgram → Groq → NIM)。", "title": "配额耗尽策略" }, "auto": { - "description": "基于成本、延迟、质量和健康的实时评分进行路由。", + "description": "基于成本、延迟、质量和健康的实时评分路由。", "tip1": "让引擎自动平衡多个因素。", "tip2": "在日志中监控哪些因素驱动路由决策。", "tip3": "用于复杂工作负载,其中没有单一因素占主导。", "title": "多因素优化" }, "lkgp": { - "description": "基于历史成功率和持久性能数据进行路由。", + "description": "基于历史成功率和持久性能数据路由。", "tip1": "在依赖此策略之前让成功历史积累足够数据。", "tip2": "最适合具有稳定性能特征的工作负载。", "tip3": "定期审查历史数据,确保路由决策保持准确。", @@ -3366,18 +3366,18 @@ "description": "基于上下文窗口使用情况和令牌效率优化路由。", "tip1": "将长对话路由到具有更大上下文窗口的模型。", "tip2": "监控上下文利用率以避免令牌浪费。", - "tip3": "最适合需要大量上下文保留的对话式 AI。", + "tip3": "最适合需要大量上下文保留的对话式AI。", "title": "上下文优化" }, "context-relay": { "description": "当预期账户轮换且下一个账户必须继承简化的任务摘要时效果最佳。", - "tip1": "与为同一模型系列轮换账户的提供者配合使用。", + "tip1": "与为同一模型系列轮换账户的供应商配合使用。", "tip2": "将交接阈值设置在硬配额截止值以下,以便有时间生成摘要。", "tip3": "仅在主模型太贵或不稳定时,才设置专用摘要模型。", "title": "会话连续性优先" }, "p2c": { - "description": "每次请求从随机候选中选出负载较轻的一个 — 低延迟,高扩展性。", + "description": "每次请求从随机候选中选出负载较轻的一个—低延迟,高扩展性。", "tip1": "配合 4 个或更多模型使用效果最佳。", "tip2": "需要在设置中启用延迟遥测。", "tip3": "是高吞吐量组合中轮询的绝佳替代方案。", @@ -3385,21 +3385,21 @@ } }, "templateFreeStack": "免费栈($0)", - "templateFreeStackDesc": "在所有免费提供者之间进行轮询:Kiro(Claude)、Qoder(5 个模型)、Qwen(4 个模型)。零成本,编码不中断。", + "templateFreeStackDesc": "在所有免费供应商之间进行轮询:Kiro(Claude)、Qoder(5 个模型)、Qwen(4 个模型)。零成本,编码不中断。", "auto": "自动组合", "autoDesc": "自愈型智能路由池(性能优化)", - "lkgp": "LKGP 模式", - "lkgpDesc": "最后已知良好提供者(可预测的弹性)", + "lkgp": "LKGP模式", + "lkgpDesc": "最后已知良好供应商(可预测的弹性)", "wizardGuideTitle": "组合入门指南", - "wizardGuideDesc": "创建模型组合以智能路由 AI 流量", + "wizardGuideDesc": "创建模型组合以智能路由AI流量", "wizardGuideHint": "或点击上方「+ 创建组合」", "createFirstCombo": "创建您的第一个组合", "wizardStep1Title": "命名您的组合", "wizardStep1Desc": "为您的组合指定唯一名称,以便在路由规则中识别", "wizardStep2Title": "添加模型", - "wizardStep2Desc": "选择 AI 模型并排列其故障转移优先级顺序", + "wizardStep2Desc": "选择AI模型并排列其故障转移优先级顺序", "wizardStep3Title": "选择策略", - "wizardStep3Desc": "选择请求在模型之间的分发方式 — 提供 13 种策略", + "wizardStep3Desc": "选择请求在模型之间的分发方式—提供 13 种策略", "wizardStep4Title": "审查并保存", "wizardStep4Desc": "审查您的配置并激活组合", "emailVisibilityStateOn": "开启", @@ -3414,7 +3414,7 @@ }, "steps": { "label": "步骤", - "description": "提供者、模型和账户选择" + "description": "供应商、模型和账户选择" }, "strategy": { "label": "策略", @@ -3432,19 +3432,19 @@ "builderStageVisited": "阶段已完成", "builderStageCurrent": "当前阶段", "builderStagePending": "待处理", - "builderStageLocked": "已锁定 — 请先完成上一步", + "builderStageLocked": "已锁定—请先完成上一步", "builderTitle": "构建组合", "builderBrowseCatalog": "浏览目录", - "builderProvider": "提供者", - "builderLoadingProviders": "加载提供者中...", - "builderSelectProvider": "选择提供者", + "builderProvider": "供应商", + "builderLoadingProviders": "加载供应商中...", + "builderSelectProvider": "选择供应商", "builderModel": "模型", "builderSelectModel": "选择模型", - "builderProviderFirst": "请先选择提供者", + "builderProviderFirst": "请先选择供应商", "builderAccount": "账户", "builderPreview": "预览", "builderAddStep": "添加步骤", - "builderDuplicateExact": "该提供者/模型/账户步骤已存在于组合中。", + "builderDuplicateExact": "该供应商/模型/账户步骤已存在于组合中。", "builderComboRef": "组合引用", "builderAddComboRef": "添加组合引用", "builderComboRefStep": "添加组合引用步骤", @@ -3454,38 +3454,38 @@ "reviewStrategy": "策略", "reviewSteps": "步骤", "reviewAccounts": "账户", - "reviewProviders": "提供者", + "reviewProviders": "供应商", "reviewComboRefs": "组合引用", "reviewAdvanced": "高级设置", - "reviewAgentFlags": "Agent 标志", + "reviewAgentFlags": "智能体标志", "reviewSequence": "模型序列", "reviewNoSteps": "未配置任何步骤", "builderStagesDescription": "按顺序完成各个阶段以定义组合、构建步骤、选择路由策略并审查结果。", - "builderStepsDescription": "按顺序构建每个组合步骤:提供者、模型,然后是账户。这允许在不同账户上重复使用相同的提供者和模型。", - "selectProvider": "选择提供者", - "selectProviderPlaceholder": "选择提供者", + "builderStepsDescription": "按顺序构建每个组合步骤:供应商、模型,然后是账户。这允许在不同账户上重复使用相同的供应商和模型。", + "selectProvider": "选择供应商", + "selectProviderPlaceholder": "选择供应商", "selectModel": "选择模型", - "selectModelPlaceholder": "请先选择提供者", + "selectModelPlaceholder": "请先选择供应商", "selectAccount": "选择账户", "selectComboToReference": "选择要引用的现有组合", "comboReference": "组合引用", "addComboReference": "添加组合引用", "addStepBeforeContinue": "在继续到下一阶段之前,请至少添加一个步骤。", - "previewNextStep": "选择提供者和模型以预览下一步。", + "previewNextStep": "选择供应商和模型以预览下一步。", "autoSelectAccount": "运行时自动选择账户", "modePackBalanced": "均衡", "modePackBudget": "预算优先", "modePackPerformance": "性能优先", "modePackCustom": "自定义", "browseLegacyCatalog": "浏览旧版模型目录", - "agentFeaturesTitle": "智能代理功能", - "agentFeaturesDescription": "— 可选,用于智能体/工具工作流", + "agentFeaturesTitle": "智能智能体功能", + "agentFeaturesDescription": "—可选,用于智能体/工具工作流", "responseValidationTitle": "响应验证", - "responseValidationHelp": "当 200 OK 响应体未通过这些检查(assistant 内容)时,故障转移到下一个目标。", + "responseValidationHelp": "当 200 OK响应体未通过这些检查(assistant内容)时,故障转移到下一个目标。", "responseValidationForbidden": "禁止包含的子字符串(每行一个)", "responseValidationRequired": "必须包含的子字符串(每行一个)", "responseValidationMinLength": "最小内容长度(字符数)", - "responseValidationJsonPaths": "JSON-path 检查", + "responseValidationJsonPaths": "JSON-path检查", "responseValidationAddCheck": "+ 添加检查", "agentFeaturesSystemMessageOverride": "系统消息覆盖", "agentFeaturesSystemMessagePlaceholder": "覆盖通过此组合路由的所有请求的系统提示…", @@ -3496,7 +3496,7 @@ "agentFeaturesContextCacheProtection": "上下文缓存保护", "agentFeaturesContextLength": "上下文长度", "agentFeaturesContextLengthPlaceholder": "例如128000", - "agentFeaturesContextLengthHint": "在 /v1/models 中定义此组合的上下文窗口。", + "agentFeaturesContextLengthHint": "在 /v1/models中定义此组合的上下文窗口。", "agentFeaturesContextLengthErrorInteger": "上下文长度必须是有效整数", "agentFeaturesContextLengthErrorRange": "上下文长度必须介于 1000 到 2000000 之间", "compressionOverride": "压缩覆盖", @@ -3504,20 +3504,20 @@ "disableSessionStickiness": "禁用会话粘性", "sessionStickinessEnabled": "会话粘性开启", "sessionStickinessDisabled": "会话粘性关闭", - "kimiPresetTitle": "Kimi Coding 预设", - "kimiPresetDescription": "以 Kimi K3 作为主模型(Moonshot API),并在配置后自动回退到您的 Kimi Code 连接(kimi-coding、kimi-web)。", + "kimiPresetTitle": "Kimi Coding预设", + "kimiPresetDescription": "以Kimi K3 作为主模型(Moonshot API),并在配置后自动回退到您的Kimi Code连接(kimi-coding、kimi-web)。", "kimiPresetCta": "添加预设" }, "costs": { "title": "成本", - "pageDescription": "跟踪支出、分析趋势,并管理所有提供者的 AI 预算", + "pageDescription": "跟踪支出、分析趋势,并管理所有供应商的AI预算", "overview": "概览", "budget": "预算", "totalCost": "总成本", "breakdown": "成本明细", "noData": "无成本数据", "byModel": "按模型", - "byProvider": "按提供者", + "byProvider": "按供应商", "range7d": "7 天", "range30d": "30 天", "range90d": "90 天", @@ -3525,26 +3525,26 @@ "range365d": "365 Days", "rangeAll": "全部时间", "spend30d": "30 天支出", - "activeModels": "活跃 Model", + "activeModels": "活跃Model", "selectedWindow": "已选窗口", - "activeProviders": "活跃 Provider", + "activeProviders": "活跃供应商", "overviewTitle": "概览", "spend7d": "7 天支出", "avgCostPerRequest": "平均每次请求成本", "noCostDataDescription": "发起请求后,成本数据会显示在这里。", "spendToday": "今日支出", "overviewLoadFailed": "加载成本概览失败", - "overviewDescription": "按提供者、模型和时间段汇总成本。", - "providerShare": "提供者占比", - "topProviders": "热门 Provider", + "overviewDescription": "按供应商、模型和时间段汇总成本。", + "providerShare": "供应商占比", + "topProviders": "热门供应商", "costTrend": "成本趋势", "noCostDataTitle": "暂无成本数据", - "topModels": "热门 Model", + "topModels": "热门Model", "requestsInWindow": "窗口内请求数", - "tokenUsage": "Token 用量", - "totalTokens": "Token 总数", - "inputTokens": "输入 Token", - "outputTokens": "输出 Token", + "tokenUsage": "Token用量", + "totalTokens": "Token总数", + "inputTokens": "输入Token", + "outputTokens": "输出Token", "inputOutputRatio": "输入/输出比例", "tokens": "token", "routingEfficiency": "路由效率", @@ -3553,9 +3553,9 @@ "modelCoverage": "模型覆盖率", "modelCoverageDesc": "带有明确模型的请求占比", "outOfRequests": "共 {total} 个请求", - "costByApiKey": "按 API 密钥统计成本", + "costByApiKey": "按API Key统计成本", "costByAccount": "按账户统计成本", - "apiKeyName": "API 密钥", + "apiKeyName": "API Key", "account": "账户", "requests": "请求数", "cost": "成本", @@ -3571,21 +3571,21 @@ "periodComparison": "周期对比", "previousPeriod": "上半期", "currentPeriod": "当前半期", - "exportCSV": "导出为 CSV", - "exportJSON": "导出为 JSON", + "exportCSV": "导出为CSV", + "exportJSON": "导出为JSON", "legacyFreeLabel": "旧版 / 免费", "costExplorerTitle": "成本探索器", - "costExplorerDescription": "按提供者、模型、API 密钥、账户或服务层级探索支出。", - "groupProvider": "提供者", + "costExplorerDescription": "按供应商、模型、API Key、账户或服务层级探索支出。", + "groupProvider": "供应商", "groupModel": "模型", - "groupApiKey": "API 密钥", + "groupApiKey": "API Key", "groupAccount": "账户", "groupServiceTier": "服务层级", "serviceTierFast": "快速", "serviceTierFlex": "弹性", "serviceTierStandard": "标准", "serviceTierBreakdownTitle": "服务层级", - "serviceTierBreakdownSubtitle": "快速 / 弹性 / 标准 分布", + "serviceTierBreakdownSubtitle": "快速 / 弹性 / 标准分布", "serviceTierUsageSaved": "已节省用量", "serviceTierCostSaved": "已节省", "serviceTierCostShareSuffix": "成本占比", @@ -3600,26 +3600,26 @@ "showingTopCostRows": "正在显示 {total} 个匹配行中的 {shown} 个(前 50 个)。" }, "endpoint": { - "title": "API 端点", + "title": "API端点", "available": "可用端点", "cloudProxy": "云代理", "disableConfirm": "确定要禁用云代理吗?", - "baseUrl": "基础 URL", - "apiKeyLabel": "API 密钥", + "baseUrl": "基础URL", + "apiKeyLabel": "API Key", "registeredKeys": "已注册密钥", "chatCompletions": "对话补全", "responses": "响应", "listModels": "列出模型", "usingCloudProxy": "当前使用云代理", "usingLocalServer": "当前使用本地服务器", - "machineId": "机器 ID:{id}...", + "machineId": "机器ID:{id}...", "disableCloud": "禁用云端", "enableCloud": "启用云端", "modelsAcrossEndpoints": "{endpoints} 个端点共提供 {models} 个模型", "loadingModels": "正在加载可用模型...", - "chatDesc": "支持所有提供者的流式与非流式聊天", + "chatDesc": "支持所有供应商的流式与非流式聊天", "embeddings": "嵌入", - "embeddingsDesc": "用于搜索和 RAG 流程的文本向量", + "embeddingsDesc": "用于搜索和RAG流程的文本向量", "imageGeneration": "图像生成", "imageDesc": "根据文本提示生成图像", "rerank": "重排", @@ -3629,29 +3629,29 @@ "textToSpeech": "文本转语音", "textToSpeechDesc": "将文本转换为自然语音", "musicGeneration": "音乐生成", - "musicDesc": "通过 ComfyUI 生成音乐和音轨(Stable Audio、MusicGen)", + "musicDesc": "通过ComfyUI生成音乐和音轨(Stable Audio、MusicGen)", "moderations": "内容审核", "moderationsDesc": "内容安全审核与分类", - "responsesDesc": "适用于 Codex 和高级智能体工作流的 OpenAI Responses API", - "listModelsDesc": "列出所有已连接提供者下的可用模型", - "settingsApiDesc": "通过 API 读取和修改 OmniRoute 配置", - "settingsApi": "设置 API", - "categoryCore": "核心 API", + "responsesDesc": "适用于Codex和高级智能体工作流的OpenAI Responses API", + "listModelsDesc": "列出所有已连接供应商下的可用模型", + "settingsApiDesc": "通过API读取和修改OmniRoute配置", + "settingsApi": "设置API", + "categoryCore": "核心API", "categoryMedia": "媒体与多模态", "categorySearch": "搜索与发现", "categoryUtility": "工具与管理", "webSearch": "网页搜索", - "webSearchDesc": "统一接入多个提供者的网页搜索,支持自动故障转移与缓存", - "searchProvider": "搜索提供者", - "searchProviderDesc": "该提供者会用于 `POST /v1/search` 的网页搜索。无需配置模型,只要连接 API 密钥即可使用。", + "webSearchDesc": "统一接入多个供应商的网页搜索,支持自动故障转移与缓存", + "searchProvider": "搜索供应商", + "searchProviderDesc": "该供应商会用于 `POST /v1/search` 的网页搜索。无需配置模型,只要连接API Key即可使用。", "enableCloudTitle": "启用云代理", "whatYouGet": "启用后可获得", - "cloudBenefitAccess": "从世界任何地方访问你的 API", + "cloudBenefitAccess": "从世界任何地方访问你的API", "cloudBenefitShare": "方便与团队共享端点", "cloudBenefitPorts": "无需开放端口或配置防火墙", "cloudBenefitEdge": "全球边缘网络加速", "cloudSessionNote": "云端会保留你的认证会话 1 天;若未使用,将自动删除。", - "cloudUnstableNote": "目前云端在部分 Claude Code OAuth 场景下仍不够稳定。", + "cloudUnstableNote": "目前云端在部分Claude Code OAuth场景下仍不够稳定。", "cloudConnected": "云代理已连接!", "connectingToCloud": "正在连接云端...", "verifyingConnection": "正在验证连接...", @@ -3673,107 +3673,107 @@ "failedEnable": "启用云端失败", "cloudRequestTimeout": "云端请求超时", "cloudRequestFailed": "云端请求失败", - "cloudWorkerUnreachable": "无法连接到云 Worker。请确认云服务已运行(在 `/cloud` 中执行 `npm run dev`)。", + "cloudWorkerUnreachable": "无法连接到云Worker。请确认云服务已运行(在 `/cloud` 中执行 `npm run dev`)。", "connectionFailed": "连接失败", "syncFailed": "同步云端数据失败", - "cloudflaredTitle": "Cloudflare 快速隧道", - "cloudflaredDescription": "为当前端点创建 Cloudflare Quick Tunnel。", - "cloudflaredUrlNotice": "创建一个临时的 Cloudflare Quick Tunnel。每次重启后 URL 都会变化。", - "cloudflaredEnable": "启用 Tunnel", + "cloudflaredTitle": "Cloudflare快速隧道", + "cloudflaredDescription": "为当前端点创建Cloudflare Quick Tunnel。", + "cloudflaredUrlNotice": "创建一个临时的Cloudflare Quick Tunnel。每次重启后URL都会变化。", + "cloudflaredEnable": "启用Tunnel", "cloudflaredInstallAndEnable": "安装并启用", - "cloudflaredDisable": "停止 Tunnel", + "cloudflaredDisable": "停止Tunnel", "cloudflaredRunning": "运行中", "cloudflaredStarting": "启动中", "cloudflaredStoppedState": "已停止", "cloudflaredNotInstalled": "未安装", "cloudflaredUnsupported": "不支持", "cloudflaredError": "错误", - "cloudflaredStarted": "Cloudflare Tunnel 已启动", - "cloudflaredStopped": "Cloudflare Tunnel 已停止", - "cloudflaredRequestFailed": "更新 Cloudflare Tunnel 失败", - "cloudflaredTemporaryNote": "Quick Tunnel URL 是临时地址,每次重启后都会变化。", - "cloudflaredUnsupportedNote": "当前平台不支持托管安装。请自行安装 cloudflared,或通过 CLOUDFLARED_BIN 指向已有二进制文件。", - "cloudflaredIdleNote": "为当前端点创建一个临时的 Cloudflare Quick Tunnel。", + "cloudflaredStarted": "Cloudflare Tunnel已启动", + "cloudflaredStopped": "Cloudflare Tunnel已停止", + "cloudflaredRequestFailed": "更新Cloudflare Tunnel失败", + "cloudflaredTemporaryNote": "Quick Tunnel URL是临时地址,每次重启后都会变化。", + "cloudflaredUnsupportedNote": "当前平台不支持托管安装。请自行安装cloudflared,或通过CLOUDFLARED_BIN指向已有二进制文件。", + "cloudflaredIdleNote": "为当前端点创建一个临时的Cloudflare Quick Tunnel。", "cloudflaredLastError": "最近错误:{error}", - "providerModelsTitle": "{provider} — 模型", - "noModelsForProvider": "该提供者当前没有可用模型。", + "providerModelsTitle": "{provider} —模型", + "noModelsForProvider": "该供应商当前没有可用模型。", "chat": "聊天", "embedding": "向量", "image": "图像", "custom": "自定义", "modelsCount": "{count, plural, one {# 个模型} other {# 个模型}}", "sectionTitle": "集成入口", - "sectionDescription": "OpenAI 兼容 API 与操作协议端点", - "tabApis": "__MISSING__:APIs", + "sectionDescription": "OpenAI兼容API与操作协议端点", + "tabApis": "OpenAI兼容API", "tabProtocols": "协议", "tabsAria": "端点分区", "protocolsTitle": "协议", - "protocolsDescription": "MCP 和 A2A 是一等端点,具备专用的可观测与控制能力。", - "mcpCardTitle": "MCP 服务", - "mcpCardDescription": "基于 stdio 的 Model Context Protocol", - "a2aCardTitle": "A2A 服务", - "a2aCardDescription": "Agent2Agent JSON-RPC 端点", + "protocolsDescription": "MCP和A2A是一等端点,具备专用的可观测与控制能力。", + "mcpCardTitle": "MCP服务", + "mcpCardDescription": "基于stdio的Model Context Protocol", + "a2aCardTitle": "A2A服务", + "a2aCardDescription": "Agent2Agent JSON-RPC端点", "protocolToolsLabel": "工具数", "protocolTasksLabel": "任务数", "protocolActiveStreamsLabel": "活跃流数", "protocolLastActivity": "最近活动", "quickStart": "快速开始", - "openMcpDashboard": "打开 MCP 管理", - "openA2aDashboard": "打开 A2A 管理", - "mcpQuickStartTitle": "MCP 快速开始", - "mcpQuickStartStep1": "通过 `omniroute --mcp` 启动 MCP 服务。", - "mcpQuickStartStep2": "将你的 MCP 客户端配置为通过 stdio 传输连接。", + "openMcpDashboard": "打开MCP管理", + "openA2aDashboard": "打开A2A管理", + "mcpQuickStartTitle": "MCP快速开始", + "mcpQuickStartStep1": "通过 `omniroute --mcp` 启动MCP服务。", + "mcpQuickStartStep2": "将你的MCP客户端配置为通过stdio传输连接。", "mcpQuickStartStep3": "调用 `omniroute_get_health`、`omniroute_list_combos` 等工具验证连通性。", - "a2aQuickStartTitle": "A2A 快速开始", - "a2aQuickStartStep1": "通过 `/.well-known/agent.json` 发现 Agent Card。", - "a2aQuickStartStep2": "向 `POST /a2a` 发送 `message/send` 或 `message/stream` JSON-RPC 请求。", + "a2aQuickStartTitle": "A2A快速开始", + "a2aQuickStartStep1": "通过 `/.well-known/agent.json` 发现Agent Card。", + "a2aQuickStartStep2": "向 `POST /a2a` 发送 `message/send` 或 `message/stream` JSON-RPC请求。", "a2aQuickStartStep3": "使用 `tasks/get` 与 `tasks/cancel` 跟踪和控制任务。", "completionsLegacy": "Completions(旧版)", - "completionsLegacyDesc": "旧版 OpenAI 文本补全接口,同时接受 `prompt` 字符串和 `messages` 数组格式", + "completionsLegacyDesc": "旧版OpenAI文本补全接口,同时接受 `prompt` 字符串和 `messages` 数组格式", "messagesApi": "留言", - "messagesApiDesc": "适用于 Claude 兼容提供程序的本机人性消息 API 格式", + "messagesApiDesc": "适用于Claude兼容提供程序的Anthropic Messages API格式", "imageEdits": "图像编辑", - "imageEditsDesc": "使用 AI 编辑和修改现有图像(修复、修复、变体)", + "imageEditsDesc": "使用AI编辑和修改现有图像(修复、修复、变体)", "batchApi": "批量API", - "batchApiDesc": "异步处理大批量请求(兼容 OpenAI)", + "batchApiDesc": "异步处理大批量请求(兼容OpenAI)", "filesApi": "文件API", "filesApiDesc": "上传和管理文件以进行批处理", "videoGeneration": "视频生成", - "videoDesc": "使用 ComfyUI 和 Stable Video Diffusion 等 AI 模型生成视频。", - "tailscaleRequestFailed": "加载 Tailscale 状态失败", - "tailscaleEnableFailed": "启用 Tailscale Funnel 失败", - "tailscaleWaitingForLogin": "请在打开的浏览器标签页中完成 Tailscale 登录。OmniRoute 会自动重试。", - "tailscaleLoginTimedOut": "等待 Tailscale 登录超时", - "tailscaleWaitingForFunnel": "请在打开的浏览器标签页中为此设备启用 Funnel。OmniRoute 会继续轮询。", - "tailscaleFunnelTimedOut": "等待启用 Tailscale Funnel 超时", - "tailscaleStarted": "Tailscale Funnel 已启用", - "tailscaleDisableFailed": "禁用 Tailscale Funnel 失败", - "tailscaleStopped": "Tailscale Funnel 已禁用", - "tailscaleInstallFailed": "安装 Tailscale 失败", + "videoDesc": "使用ComfyUI和Stable Video Diffusion等AI模型生成视频。", + "tailscaleRequestFailed": "加载Tailscale状态失败", + "tailscaleEnableFailed": "启用Tailscale Funnel失败", + "tailscaleWaitingForLogin": "请在打开的浏览器标签页中完成Tailscale登录。OmniRoute会自动重试。", + "tailscaleLoginTimedOut": "等待Tailscale登录超时", + "tailscaleWaitingForFunnel": "请在打开的浏览器标签页中为此设备启用Funnel。OmniRoute会继续轮询。", + "tailscaleFunnelTimedOut": "等待启用Tailscale Funnel超时", + "tailscaleStarted": "Tailscale Funnel已启用", + "tailscaleDisableFailed": "禁用Tailscale Funnel失败", + "tailscaleStopped": "Tailscale Funnel已禁用", + "tailscaleInstallFailed": "安装Tailscale失败", "tailscaleInstallProgress": "处理中...", - "tailscaleInstalled": "Tailscale 安装成功", + "tailscaleInstalled": "Tailscale安装成功", "tailscaleRunning": "运行中", "tailscaleNeedsLogin": "需要登录", "tailscaleStoppedState": "已停止", "tailscaleNotInstalled": "未安装", "tailscaleUnsupported": "不支持", "tailscaleError": "错误", - "tailscaleDisable": "停止 Funnel", + "tailscaleDisable": "停止Funnel", "tailscaleInstallAndEnable": "安装并启用", "tailscaleLoginAndEnable": "登录并启用", - "tailscaleEnable": "启用 Funnel", - "tailscaleUrlNotice": "使用你的 Tailscale .ts.net 地址。首次使用时可能需要登录并批准 Funnel。", + "tailscaleEnable": "启用Funnel", + "tailscaleUrlNotice": "使用你的Tailscale .ts.net地址。首次使用时可能需要登录并批准Funnel。", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "先使用 Tailscale 认证此机器,然后启用 Funnel。", + "tailscaleNeedsLoginHint": "先使用Tailscale认证此机器,然后启用Funnel。", "tailscaleBinaryPath": "二进制文件:{path}", "tailscaleLastError": "最近错误:{error}", - "tailscaleInstallTitle": "安装 Tailscale", - "tailscaleInstallIntro": "在此机器上安装 Tailscale,并准备让 OmniRoute 启用 Funnel。", - "tailscaleInstallPasswordHint": "在 macOS 和 Linux 上,安装软件包和启动守护进程可能需要 sudo。", - "tailscaleSudoPlaceholder": "可选 sudo 密码", + "tailscaleInstallTitle": "安装Tailscale", + "tailscaleInstallIntro": "在此机器上安装Tailscale,并准备让OmniRoute启用Funnel。", + "tailscaleInstallPasswordHint": "在macOS和Linux上,安装软件包和启动守护进程可能需要sudo。", + "tailscaleSudoPlaceholder": "可选sudo密码", "tailscaleInstalling": "正在安装", - "tailscaleSudoLabel": "Sudo 密码(macOS/Linux 上必需)", - "ngrokTitle": "ngrok 隧道", + "tailscaleSudoLabel": "Sudo密码(macOS/Linux上必需)", + "ngrokTitle": "ngrok隧道", "ngrokRunning": "运行中", "ngrokStarting": "正在启动", "ngrokStoppedState": "已停止", @@ -3783,13 +3783,13 @@ "ngrokError": "错误", "ngrokEnable": "启用隧道", "ngrokDisable": "停止隧道", - "ngrokUrlNotice": "创建一个公开的 ngrok 隧道。", - "ngrokAuthTokenLabel": "Authtoken(未设置 NGROK_AUTHTOKEN 时必需)", - "ngrokAuthTokenPlaceholder": "输入你的 ngrok authtoken", + "ngrokUrlNotice": "创建一个公开的ngrok隧道。", + "ngrokAuthTokenLabel": "Authtoken(未设置NGROK_AUTHTOKEN时必需)", + "ngrokAuthTokenPlaceholder": "输入你的ngrok authtoken", "ngrokLastError": "上次错误:{error}", - "ngrokStarted": "ngrok 隧道已启动", - "ngrokStopped": "ngrok 隧道已停止", - "ngrokRequestFailed": "更新 ngrok 隧道失败", + "ngrokStarted": "ngrok隧道已启动", + "ngrokStopped": "ngrok隧道已停止", + "ngrokRequestFailed": "更新ngrok隧道失败", "apiEndpointsCatalogUnavailable": "API目录不可用", "apiEndpointsSearchPlaceholder": "搜索端点...", "apiEndpointsRequiresAuth": "需要授权", @@ -3808,47 +3808,47 @@ "badgeLocal": "本地", "badgeProtected": "受保护", "badgeInternal": "内部", - "catalogLoadFailed": "API 目录请求失败,HTTP 状态码为 {status}", - "catalogLoadFailedGeneric": "加载 API 目录失败", - "apiKeysLoadFailed": "加载 API 密钥失败 ({status})", - "apiKeysLoadFailedGeneric": "加载 API 密钥失败", - "apiKeyRevealDisabled": "API 密钥显示已禁用 (ALLOW_API_KEY_REVEAL)。请在功能标志页面上进行更改,或手动粘贴 API 密钥。", - "apiKeyRevealFailed": "显示 API 密钥失败 ({status})", - "apiKeyRevealInvalid": "显示 API 密钥返回了无效响应", - "apiKeyRequired": "此端点需要 API 密钥。", + "catalogLoadFailed": "API目录请求失败,HTTP状态码为 {status}", + "catalogLoadFailedGeneric": "加载API目录失败", + "apiKeysLoadFailed": "加载API Key失败 ({status})", + "apiKeysLoadFailedGeneric": "加载API Key失败", + "apiKeyRevealDisabled": "API Key显示已禁用 (ALLOW_API_KEY_REVEAL)。请在功能标志页面上进行更改,或手动粘贴API Key。", + "apiKeyRevealFailed": "显示API Key失败 ({status})", + "apiKeyRevealInvalid": "显示API Key返回了无效响应", + "apiKeyRequired": "此端点需要API Key。", "requestFailed": "请求失败 ({status})", "errorStatus": "错误", "catalogStats": "跨越 {categories} 个类别的 {endpoints} 个端点", - "catalogUnavailableDescription": "无法加载 OpenAPI 规范。", - "openJsonResponse": "打开 JSON 响应", + "catalogUnavailableDescription": "无法加载OpenAPI规范。", + "openJsonResponse": "打开JSON响应", "all": "全部", "more": "还有 +{count} 个", "showInternalTooltip": "显示或隐藏内部路由(默认隐藏)", - "bearerAuth": "Bearer 认证", + "bearerAuth": "Bearer认证", "requestBody": "请求体", "close": "关闭", "tryIt": "试一试", "example": "示例", - "apiKey": "API 密钥", + "apiKey": "API Key", "switchToSelection": "切换到选择", "enterManually": "手动输入", - "pasteApiKey": "在此处粘贴您的 API 密钥", - "noActiveApiKeys": "未找到活动的 API 密钥。请切换到手动输入以粘贴一个。", + "pasteApiKey": "在此处粘贴您的API Key", + "noActiveApiKeys": "未找到活动的API Key。请切换到手动输入以粘贴一个。", "requestBodyJson": "请求体 (JSON)", - "sending": "Sending...", - "sendRequest": "Send Request", + "sending": "发送中…", + "sendRequest": "发送请求", "dataSchemas": "数据模式", - "vscodeAliasTitle": "VS Code 令牌别名", - "vscodeAliasDescriptionReady": "使用 /api/v1/vscode/TOKEN/... 接口的可粘贴兼容性 URL。", - "vscodeAliasDescriptionError": "由于当前会话无法加载 CLI 密钥,正在显示占位符 URL。", - "vscodeAliasDescriptionLoading": "正在加载 CLI 密钥。在密钥可用之前将显示占位符 URL。", - "vscodeAliasDescriptionPlaceholder": "正在显示占位符 URL。请在 CLI 工具中创建或激活 API 密钥以替换 TOKEN。", - "vscodeAliasManage": "CLI 工具", - "vscodeAliasBaseLabel": "VS Code 基础", - "vscodeAliasModelsLabel": "VS Code 模型", - "vscodeAliasChatLabel": "VS Code 聊天", + "vscodeAliasTitle": "VS Code令牌别名", + "vscodeAliasDescriptionReady": "使用 /api/v1/vscode/TOKEN/... 接口的可粘贴兼容性URL。", + "vscodeAliasDescriptionError": "由于当前会话无法加载CLI密钥,正在显示占位符URL。", + "vscodeAliasDescriptionLoading": "正在加载CLI密钥。在密钥可用之前将显示占位符URL。", + "vscodeAliasDescriptionPlaceholder": "正在显示占位符URL。请在CLI工具中创建或激活API Key以替换TOKEN。", + "vscodeAliasManage": "CLI工具", + "vscodeAliasBaseLabel": "VS Code基础", + "vscodeAliasModelsLabel": "VS Code模型", + "vscodeAliasChatLabel": "VS Code聊天", "localServer": "本地服务器", - "cloudOmniroute": "云全路由", + "cloudOmniroute": "Cloud OmniRoute", "copyUrl": "复制网址", "badgeLoopbackTooltip": "此端点仅可本地访问(仅限回环)", "badgeAlwaysProtectedTooltip": "此端点始终受保护,需要授权", @@ -3860,57 +3860,57 @@ "tierPublic": "公开", "hideInternal": "隐藏内部端点", "showInternal": "显示内部端点", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", - "obsidianEnterToken": "Please enter an Obsidian API token", - "obsidianConnectFailed": "Failed to connect", - "obsidianConnectionFailed": "Connection failed", - "obsidianDisconnectFailed": "Failed to disconnect", - "obsidianEnterVaultPath": "Please enter the vault directory path", - "obsidianWebdavEnabledMessage": "WebDAV sync enabled. Configure your mobile device below.", - "obsidianEnableWebdavFailed": "Failed to enable WebDAV", - "obsidianWebdavDisabledMessage": "WebDAV sync disabled", - "obsidianDisableWebdavFailed": "Failed to disable WebDAV", + "customSystemPromptTitle": "自定义系统提示", + "customSystemPromptDescription": "向每个模型请求注入自定义系统提示。", + "customSystemPromptPlaceholder": "例如:始终用海盗语气回复……", + "obsidianEnterToken": "请输入Obsidian API令牌", + "obsidianConnectFailed": "连接失败", + "obsidianConnectionFailed": "连接失败", + "obsidianDisconnectFailed": "断开连接失败", + "obsidianEnterVaultPath": "请输入知识库目录路径", + "obsidianWebdavEnabledMessage": "WebDAV同步已启用。请在下方配置您的移动设备。", + "obsidianEnableWebdavFailed": "启用WebDAV失败", + "obsidianWebdavDisabledMessage": "WebDAV同步已禁用", + "obsidianDisableWebdavFailed": "禁用WebDAV失败", "obsidianConnected": "Connected", - "obsidianNotConnected": "Not connected", - "obsidianWebdavSync": "WebDAV Sync", - "obsidianDescription": "Search, read, write, and manage notes in Obsidian through routed AI models", - "obsidianRestToken": "Obsidian Local REST API Token", - "obsidianApiKeyPlaceholder": "Obsidian API key", + "obsidianNotConnected": "未连接", + "obsidianWebdavSync": "WebDAV同步", + "obsidianDescription": "通过路由的AI模型在Obsidian中搜索、阅读、编写和管理笔记。", + "obsidianRestToken": "Obsidian本地REST API令牌", + "obsidianApiKeyPlaceholder": "Obsidian API Key", "obsidianConnect": "Connect", - "obsidianBaseUrlOptional": "Base URL (optional)", - "obsidianPortWarning": "Port 27124 is the MCP endpoint (HTTPS, self-signed certificate). The REST API uses HTTP on port 27123.", + "obsidianBaseUrlOptional": "Base URL(可选)", + "obsidianPortWarning": "端口 27124 是MCP端点(HTTPS,自签名证书)。REST API在端口 27123 上使用HTTP。", "obsidianRemoteVaultHint": "Default: {defaultUrl}. For remote vaults, enter the Tailscale IP + port (e.g., http://100.x.x.x:27123). Enable the Local REST API plugin on the machine running Obsidian.", - "obsidianTokenConfigured": "Token configured. Obsidian tools are available via MCP.", + "obsidianTokenConfigured": "令牌已配置。Obsidian工具可通过MCP使用。", "obsidianDisconnect": "Disconnect", - "obsidianVaultSync": "Vault Sync (WebDAV)", - "obsidianVaultSyncDescription": "Sync your vault to Obsidian mobile using WebDAV over Tailscale. Obsidian mobile has built-in WebDAV support — no plugins needed.", - "obsidianVaultDirectoryPath": "Vault Directory Path", + "obsidianVaultSync": "知识库同步(WebDAV)", + "obsidianVaultSyncDescription": "通过Tailscale使用WebDAV将知识库同步到Obsidian移动端。Obsidian移动端内置WebDAV支持——无需插件。", + "obsidianVaultDirectoryPath": "知识库目录路径", "obsidianEnable": "Enable", - "obsidianWebdavEnabled": "WebDAV sync enabled", + "obsidianWebdavEnabled": "WebDAV同步已启用", "obsidianDisable": "Disable", - "obsidianConfigureMobile": "Configure Obsidian Mobile", - "obsidianMobileInstructions": "In Obsidian mobile: Settings → Sync → WebDAV → enter the following:", + "obsidianConfigureMobile": "配置Obsidian移动端", + "obsidianMobileInstructions": "在Obsidian移动端中:设置 → 同步 → WebDAV → 输入以下信息:", "obsidianWebdavUrl": "WebDAV URL", "obsidianUsername": "Username", "obsidianPassword": "Password", - "obsidianTailscaleHint": "Use your Tailscale IP instead of localhost if connecting from mobile. Both devices must be on the same Tailscale network." + "obsidianTailscaleHint": "从移动设备连接时请使用Tailscale IP而非localhost。两台设备必须在同一Tailscale网络上。" }, "endpoints": { "tabProxy": "端点代理", - "tabApiEndpoints": "API 端点", - "apiEndpointsTitle": "API 端点", + "tabApiEndpoints": "API端点", + "apiEndpointsTitle": "API端点", "apiEndpointsDescription": "可被其他应用程序和服务使用的后端API端点。", "comingSoon": "即将推出", "plannedFeatures": "计划的功能", "featureRestApi": "REST API目录与交互式文档", "featureWebhooks": "Webhook配置和事件订阅", "featureSwagger": "OpenAPI / Swagger规范自动生成", - "featureAuth": "每个端点的API密钥和OAuth范围管理" + "featureAuth": "每个端点的API Key和OAuth范围管理" }, "mcpDashboard": { - "loading": "正在加载 MCP 仪表板...", + "loading": "正在加载MCP看板...", "activate": "启用", "deactivate": "停用", "confirmSwitchCombo": "确定要将组合“{combo}”设为{action}吗?", @@ -3928,16 +3928,16 @@ "disableLabel": "禁用 {label}", "enableLabel": "启用 {label}", "transportMode": "传输模式", - "transportStdioDesc": "本地 — IDE 通过 omniroute --mcp 启动进程", - "transportSseDesc": "远程 — 基于 HTTP 的 Server-Sent Events", - "transportStreamableHttpDesc": "远程 — 现代双向 HTTP", + "transportStdioDesc": "本地—IDE通过omniroute --mcp启动进程", + "transportSseDesc": "远程—基于HTTP的Server-Sent Events", + "transportStreamableHttpDesc": "远程—现代双向HTTP", "copy": "复制", "mcpDashboardCopyUrl": "复制网址", - "mcpDisabledTitle": "MCP 已禁用", - "mcpDisabledDesc": "在上方启用 MCP 后即可配置传输模式并查看服务器遥测。", - "mcpIntro": "Model Context Protocol — {tools} 个工具,覆盖 {scopes} 个作用域,支持 {transports} 种传输方式(stdio / SSE / Streamable HTTP)。", + "mcpDisabledTitle": "MCP已禁用", + "mcpDisabledDesc": "在上方启用MCP后即可配置传输模式并查看服务器遥测。", + "mcpIntro": "Model Context Protocol— {tools} 个工具,覆盖 {scopes} 个作用域,支持 {transports} 种传输方式(stdio / SSE / Streamable HTTP)。", "mcpStep1": "通过 {code} 运行", - "mcpStep2": "将 MCP 客户端配置为通过 stdio 传输连接。", + "mcpStep2": "将MCP客户端配置为通过stdio传输连接。", "mcpStep3": "调用 {code1} 和 {code2} 等工具。", "pid": "PID", "sessionUptime": "会话运行时长", @@ -3967,7 +3967,7 @@ "profileConservative": "保守", "applyProfile": "应用配置", "resetCircuitBreakers": "重置断路器", - "resetCircuitBreakersHelp": "清除当前断路器状态及提供者失败计数。", + "resetCircuitBreakersHelp": "清除当前断路器状态及供应商失败计数。", "resetAllBreakers": "重置全部断路器", "toolsAndScopes": "工具与作用域", "tableTool": "工具", @@ -3986,7 +3986,7 @@ "tableTimestamp": "时间戳", "tableDuration": "耗时", "tableResult": "结果", - "tableApiKey": "API 密钥", + "tableApiKey": "API Key", "failed": "失败", "previous": "上一页", "next": "下一页", @@ -3996,7 +3996,7 @@ "tool": "工具" }, "a2aDashboard": { - "loading": "正在加载 A2A 仪表板...", + "loading": "正在加载A2A看板...", "confirmCancelTask": "确定要取消任务 {taskId} 吗?", "cancelTaskFailed": "取消任务失败。", "cancelTaskSuccess": "任务 {taskId} 已取消。", @@ -4005,7 +4005,7 @@ "smokeSendSuccess": "`message/send` 调用成功。", "smokeStreamFailed": "`message/stream` 冒烟测试失败。", "smokeStreamSuccessWithTask": "`message/stream` 调用成功(任务 {taskId}{stateSuffix})。", - "smokeStreamNoTaskId": "`message/stream` 完成,但未返回任务 ID。", + "smokeStreamNoTaskId": "`message/stream` 完成,但未返回任务ID。", "health": "健康状态", "ok": "正常", "totalTasks": "任务总数", @@ -4024,19 +4024,19 @@ "version": "版本", "url": "URL", "capabilities": "能力", - "agentCardNotAvailable": "Agent Card 不可用。", + "agentCardNotAvailable": "智能体Card不可用。", "quickValidation": "快速验证", "quickValidationDescription": "通过实时 `/a2a` 端点执行冒烟调用。", - "runMessageSend": "运行 message/send", - "runMessageStream": "运行 message/stream", + "runMessageSend": "运行message/send", + "runMessageStream": "运行message/stream", "taskManagement": "任务管理", "taskSummary": "任务总数:{total}|第 {page} / {totalPages} 页", "allStates": "全部状态", - "allSkills": "全部技能", + "allSkills": "全部Skills", "loadingTasks": "正在加载任务...", "noTasksForFilters": "当前筛选条件下没有任务。", "tableTask": "任务", - "tableSkill": "技能", + "tableSkill": "Skills", "tableState": "状态", "tableUpdated": "更新时间", "tableActions": "操作", @@ -4052,7 +4052,7 @@ "tablePhase": "阶段", "offset": "偏移量", "limit": "限制", - "skill": "技能", + "skill": "Skill", "rpcEndpoint": "发布 /a2a", "rpcMethodSend": "留言/发送", "rpcMethodStream": "消息/流", @@ -4063,11 +4063,11 @@ "offline": "离线", "disableLabel": "禁用 {label}", "enableLabel": "启用 {label}", - "a2aDisabledTitle": "A2A 已禁用", - "a2aDisabledDesc": "在上方启用 A2A 后即可查看任务遥测、代理详情与校验工具。", - "a2aIntro": "Agent2Agent JSON-RPC 2.0 端点 — 发送任务、流式响应、取消执行中的任务。", + "a2aDisabledTitle": "A2A已禁用", + "a2aDisabledDesc": "在上方启用A2A后即可查看任务遥测、代理详情与校验工具。", + "a2aIntro": "Agent2Agent JSON-RPC 2.0 端点—发送任务、流式响应、取消执行中的任务。", "a2aStep1": "在 {code} 处发现代理卡片。", - "a2aStep2": "向 {code1} 发送 JSON-RPC,使用 {code2} 或 {code3}。", + "a2aStep2": "向 {code1} 发送JSON-RPC,使用 {code2} 或 {code3}。", "a2aStep3": "使用 {code1} 和 {code2} 跟踪并取消任务。" }, "memory": { @@ -4081,12 +4081,12 @@ "compactOld": "紧凑旧版", "concept": { "title": "对话记忆", - "description": "OmniRoute 从每次对话中学习,记住事实、事件、程序和语义概念,使响应更加准确和上下文感知。", + "description": "OmniRoute从每次对话中学习,记住事实、事件、程序和语义概念,使响应更加准确和上下文感知。", "howWorksToggle": "它是如何工作的", "howWorksContent": "1. 自动提取:在每个响应结束时,事实和事件会被自动检测并保存。\n2. 检索:在每个响应之前,通过FTS5(精确)、向量(语义)或混合RRF搜索最相关的记忆。\n3. 注入:相关记忆被注入到助手上下文中,以提高响应质量。\n4. 管理:使用此页面查看、编辑、导出和压缩旧记忆。" }, "content": "内容", - "contentPlaceholder": "要记住的值或 JSON 内容", + "contentPlaceholder": "要记住的值或JSON内容", "created": "创建时间", "delete": "删除", "deleteConfirmDesc": "此操作无法撤销。内存将被永久删除。", @@ -4096,25 +4096,25 @@ "editModal": { "title": "编辑内存", "metadataLabel": "元数据 (JSON)", - "metadataInvalid": "无效的 JSON", + "metadataInvalid": "无效的JSON", "saveFailed": "保存内存失败" }, "embedding": { "autoLabel": "自动", "autoDesc": "使用最佳可用选项:远程供应商 > 静态 > 转换器", "remoteLabel": "远程供应商", - "remoteDesc": "通过供应商 API 使用嵌入(需要 API 密钥)", - "staticLabel": "静态本地(药水)", + "remoteDesc": "通过供应商API使用嵌入(需要API Key)", + "staticLabel": "静态本地(potion)", "staticDesc": "不使用WASM或外部依赖的本地嵌入", "transformersLabel": "Transformers.js (MiniLM)", - "transformersDesc": "通过 @huggingface/transformers 本地嵌入 (~400MB RAM)", + "transformersDesc": "通过 @huggingface/transformers本地嵌入 (~400MB RAM)", "providerModelLabel": "供应商 / 模型", - "noRemoteProviders": "没有配置 API 密钥的供应商", + "noRemoteProviders": "没有配置API Key的供应商", "selectProviderModel": "选择一个模型", - "staticEnabledLabel": "启用静态药水", - "staticEnabledDesc": "在本地下载并使用 potion-base-8M 模型", - "transformersEnabledLabel": "启用 Transformers.js", - "transformersEnabledDesc": "选择本地 MiniLM(约 400MB RAM,约 3 秒冷启动)", + "staticEnabledLabel": "启用静态potion", + "staticEnabledDesc": "在本地下载并使用potion-base-8M模型", + "transformersEnabledLabel": "启用Transformers.js", + "transformersEnabledDesc": "选择本地MiniLM(约 400MB RAM,约 3 秒冷启动)", "transformersWarning": "需要约400MB内存,并在第一次语义查询时冷启动约3秒。" }, "emptyState": { @@ -4139,7 +4139,7 @@ "qdrantError": "连接错误", "needsReindex": "{count} 个内存需要重新索引", "configureCta": "配置", - "vectorStoreInstallHint": "要启用向量搜索:npm install sqlite-vec(需要本地 Node.js,而不是 WASM),然后重启。" + "vectorStoreInstallHint": "要启用向量搜索:npm install sqlite-vec(需要本地Node.js,而不是WASM),然后重启。" }, "episodic": "情景型", "export": "导出", @@ -4159,8 +4159,8 @@ "pipelineError": "管道错误", "pipelineOk": "管道正常 ({latencyMs}ms)", "playground": { - "infoTitle": "内存游乐场", - "infoDesc": "模拟将为给定查询检索到的内容。没有修改任何记忆 — 只读预览。", + "infoTitle": "内存演练场", + "infoDesc": "模拟将为给定查询检索到的内容。没有修改任何记忆—只读预览。", "queryLabel": "测试查询", "queryPlaceholder": "输入问题或测试短语...", "strategyLabel": "策略", @@ -4184,14 +4184,14 @@ "previous": "上一页", "procedural": "程序型", "qdrant": { - "title": "Qdrant(向量存储 Tier 2)", - "description": "可选的 Qdrant 集成用于可扩展的语义搜索", - "enableLabel": "启用 Qdrant", - "enableDesc": "启用后,Qdrant 将作为主要向量存储使用", - "banner": "Tier 2 vector store — an external, scalable alternative to the built-in sqlite-vec (Tier 1). Enable it only if you have a very large memory set or want shared memory across instances; most users are fine on sqlite-vec. When enabled it becomes the primary store and automatically falls back to sqlite-vec if unreachable.", - "hostHelp": "Local Docker: http://localhost:6333 · Qdrant Cloud: your cluster URL", - "collectionHelp": "Any name — OmniRoute creates it on first use", - "embeddingModelHelp": "Sets the vector dimension automatically on first use. Existing memories are not back-filled, and changing the model after data exists needs a fresh collection.", + "title": "Qdrant(向量存储Tier 2)", + "description": "可选的Qdrant集成用于可扩展的语义搜索", + "enableLabel": "启用Qdrant", + "enableDesc": "启用后,Qdrant将作为主要向量存储使用", + "banner": "二级向量存储——内建sqlite-vec(一级)的外部可扩展替代方案。仅在需要非常大的记忆集或跨实例共享记忆时启用;大多数用户使用sqlite-vec即可。启用后它将作为主存储,并在不可达时自动回退到sqlite-vec。", + "hostHelp": "Local Docker: http://localhost:6333 ·Qdrant Cloud: your cluster URL", + "collectionHelp": "任意名称——OmniRoute会在首次使用时自动创建。", + "embeddingModelHelp": "在首次使用时自动设置向量维度。已有记忆不会被回填,数据存在后更改模型需要新建集合。", "testConnection": "测试连接", "testing": "测试中...", "statusActive": "活动", @@ -4213,7 +4213,7 @@ "searching": "搜索中...", "search": "搜索", "cleanupTitle": "清理旧积分", - "cleanupDesc": "删除过期记忆(保留期)的 Qdrant 点。", + "cleanupDesc": "删除过期记忆(保留期)的Qdrant点。", "cleaning": "清理中...", "cleanNow": "立即清理", "cleanupSuccess": "已移除 {count} 点数", @@ -4222,9 +4222,9 @@ "rerank": { "enableLabel": "启用重新排序", "enableDesc": "在搜索后使用重新排序模型对结果进行重新排序", - "warning": "Rerank 会增加 +200-500ms 的延迟和每个请求的额外成本。请谨慎使用。", + "warning": "Rerank会增加 +200-500ms的延迟和每个请求的额外成本。请谨慎使用。", "providerModelLabel": "重新排序供应商 / 模型", - "noProviderWithKey": "没有配置 API 密钥的供应商。请配置一个供应商以使用 rerank。", + "noProviderWithKey": "没有配置API Key的供应商。请配置一个供应商以使用rerank。", "selectProviderModel": "选择一个供应商/模型" }, "save": "保存", @@ -4239,15 +4239,15 @@ }, "tabs": { "memories": "记忆", - "playground": "游乐场", + "playground": "演练场", "engine": "引擎" }, "title": "记忆管理", - "tokensUsed": "已用 Tokens", + "tokensUsed": "已用Tokens", "tooltip": { - "totalEntries": "此 API 密钥存储的总记忆数", + "totalEntries": "此API Key存储的总记忆数", "tokensUsed": "活动记忆占用的估计总令牌数", - "hitRate": "按 ID 读取的缓存命中率(不是语义回忆准确性)", + "hitRate": "按ID读取的缓存命中率(不是语义回忆准确性)", "factual": "用户上下文中的客观、永久性事实", "episodic": "对话历史中的事件和经历", "procedural": "助手应遵循的程序、工作流程和指令", @@ -4258,36 +4258,36 @@ "memoryEnabled": "内存已启用" }, "skills": { - "title": "技能", - "description": "管理并监控 AI 技能", - "skillsTab": "技能", + "title": "Skills", + "description": "管理并监控AI Skills", + "skillsTab": "Skills", "executionsTab": "执行记录", - "selectSkillToInspect": "Select a skill on the left to inspect.", + "selectSkillToInspect": "在左侧选择一个Skill检查。", "schemaTab": "Schema", "handlerTab": "处理器", - "inputSchema": "输入 Schema", - "outputSchema": "输出 Schema", + "inputSchema": "输入Schema", + "outputSchema": "输出Schema", "handlerCode": "处理器代码", "handlerUnavailable": "处理器不可用", "runTestPlaceholder": "运行测试 (占位符)", "setModeAria": "设置模式 {mode}", - "uninstallSkill": "卸载技能", + "uninstallSkill": "卸载Skills", "sandboxTab": "沙箱", - "loading": "正在加载技能...", - "noSkills": "未找到技能", + "loading": "正在加载Skills...", + "noSkills": "未找到Skills", "noExecutions": "未找到执行记录", "enabled": "已启用", "disabled": "已禁用", "delete": "删除", "version": "版本", "tableDescription": "说明", - "skill": "技能", + "skill": "Skill", "status": "状态", "duration": "耗时", "time": "时间", "sandboxConfig": "沙箱配置", - "cpuLimit": "CPU 限制", - "cpuLimitDesc": "单个技能允许的最长执行时间", + "cpuLimit": "CPU限制", + "cpuLimitDesc": "单个Skills允许的最长执行时间", "memoryLimit": "内存限制", "memoryLimitDesc": "允许分配的最大内存", "timeout": "超时", @@ -4296,49 +4296,49 @@ "networkAccessDesc": "允许发起出站网络请求", "mode": "模式", "q": "问", - "filterSkillsPlaceholder": "按名称、描述或标签过滤技能", + "filterSkillsPlaceholder": "按名称、描述或标签过滤Skills", "allModes": "所有模式", - "totalSkills": "技能总数", + "totalSkills": "Skills总数", "enabledSkills": "已启用", "totalExecutions": "执行次数", "successRate": "成功率", "marketplaceTab": "市场", "applyFilters": "应用筛选", - "popularDefaultsLabel": "所选提供者的默认热门技能:", + "popularDefaultsLabel": "所选供应商的默认热门Skills:", "onMode": "开", "offMode": "关", "autoMode": "自动", - "installSkillButton": "安装技能", - "installSkillModalTitle": "安装技能", - "installJsonPlaceholder": "在此粘贴技能清单 JSON...", + "installSkillButton": "安装Skills", + "installSkillModalTitle": "安装Skills", + "installJsonPlaceholder": "在此粘贴Skills清单JSON...", "installing": "正在安装...", - "installSuccess": "技能已安装({id})", + "installSuccess": "Skills已安装({id})", "installError": "安装失败", - "invalidJson": "无效的 JSON", - "searchMarketplacePlaceholder": "搜索技能...", + "invalidJson": "无效的JSON", + "searchMarketplacePlaceholder": "搜索Skills...", "searchMarketplace": "搜索市场", - "marketplaceEmpty": "市场中未找到技能", + "marketplaceEmpty": "市场中未找到Skills", "marketplaceError": "搜索失败", "installingFromMarketplace": "正在从市场安装...", - "popularSkills": "热门技能", - "skillsMarketplace": "技能市场", + "popularSkills": "热门Skills", + "skillsMarketplace": "Skills市场", "searching": "正在搜索...", "pageInfo": "第 {page} / {totalPages} 页(共 {total} 条)", "previous": "上一页", "next": "下一页", - "activeProvider": "当前提供者:", - "changeInSettings": "可在 设置 → 记忆与技能 中修改。", + "activeProvider": "当前供应商:", + "changeInSettings": "可在设置 → 记忆与Skills中修改。", "installs": "安装", - "marketplaceSkillsMpHint": "请在设置中配置 SkillsMP API 密钥以浏览市场。", - "marketplaceSkillsShHint": "搜索 skills.sh 公开目录以发现并安装代理技能。", - "installSkillModalDesc": "粘贴技能清单 JSON 或上传 .json 文件。", - "uploadJson": "上传 JSON", + "marketplaceSkillsMpHint": "请在设置中配置SkillsMP API Key以浏览市场。", + "marketplaceSkillsShHint": "搜索skills.sh公开目录以发现并安装代理Skills。", + "installSkillModalDesc": "粘贴Skills清单JSON或上传 .json文件。", + "uploadJson": "上传JSON", "cancel": "取消", - "installSkill": "安装技巧" + "installSkill": "安装Skills" }, "health": { "title": "系统健康状况", - "description": "实时监控您的 OmniRoute 实例", + "description": "实时监控您的OmniRoute实例", "healthy": "健康", "degraded": "降级", "down": "下线", @@ -4350,7 +4350,7 @@ "database": "数据库", "version": "版本", "lastCheck": "最后检查", - "providerHealth": "提供者健康", + "providerHealth": "供应商健康", "systemMetrics": "系统指标", "tokenHealth": "令牌健康", "refreshAll": "全部刷新", @@ -4380,16 +4380,16 @@ "signatureSession": "会话", "recovering": "正在恢复中", "noCBData": "当前没有可用的断路器数据,请先发起一些请求。", - "providerHealthStatusAria": "提供者健康状况", + "providerHealthStatusAria": "供应商健康状况", "issuesLabel": "检测到的问题", "operational": "运行中", - "providers": "提供者", - "configuredProvidersLabel": "在仪表板中配置", - "configuredProvidersHint": "指已在 /dashboard/providers 中配置凭证的提供者,无论当前运行时状态如何。", + "providers": "供应商", + "configuredProvidersLabel": "在看板中配置", + "configuredProvidersHint": "指已在 /dashboard/providers中配置凭证的供应商,无论当前运行时状态如何。", "activeProviders": "{count} 个活跃", - "activeProvidersHint": "指当前已启用并可参与请求路由的已配置提供者。", + "activeProvidersHint": "指当前已启用并可参与请求路由的已配置供应商。", "monitoredProviders": "{count} 个监控中", - "monitoredProvidersHint": "指当前由断路器健康监控器持续跟踪的提供者。", + "monitoredProvidersHint": "指当前由断路器健康监控器持续跟踪的供应商。", "healthyCount": "{count} 健康", "nodeVersion": "节点 {version}", "failures": "{count} 失败", @@ -4404,16 +4404,16 @@ "runningCount": "{count} 正在运行", "ok": "正常", "activeLockouts": "主动锁定", - "resetConfirm": "将所有断路器重置为正常状态?这将清除所有故障计数并将所有提供者恢复到运行状态。", + "resetConfirm": "将所有断路器重置为正常状态?这将清除所有故障计数并将所有供应商恢复到运行状态。", "resetAllTitle": "将所有断路器重置为正常状态", "resetting": "正在重置...", "resetAll": "全部重置", "until": "直到 {time}", "limitExhausted": "已耗尽", - "learnedFromHeaders": "从响应头学习", + "learnedFromHeaders": "从响应标头学习", "remainingOfLimit": "剩余 {remaining}/{limit}", "throttleStatus": "限流:{value}", - "lastHeaderUpdate": "响应头更新:{age}", + "lastHeaderUpdate": "响应标头更新:{age}", "databaseHealth": "数据库健康状况", "databaseHealthDescription": "诊断并修复过期的配额/域行以及损坏的组合引用。", "status": "状态", @@ -4437,34 +4437,34 @@ "sinceTime": "自 {time} 以来", "retryIn": "在 {duration} 后重试", "stickyBoundSessions": "粘性绑定会话", - "sessionsByApiKey": "按 API 密钥进行的会话", + "sessionsByApiKey": "按API Key进行的会话", "noActiveSessionsTracked": "尚未跟踪任何活动会话。", "noSessionQuotaMonitorsActive": "没有活动的会话配额监视器。", "gracefulDegradationStatus": "优雅降级状态", "additionalModels": "+{count} 更多型号", - "providerHealthMatrixTitle": "提供者健康矩阵", - "providerHealthMatrixDescription": "来自熔断器、冷却、锁定和日志的提供者 × 账户 × 模型状态。", + "providerHealthMatrixTitle": "供应商健康矩阵", + "providerHealthMatrixDescription": "来自熔断器、冷却、锁定和日志的供应商 × 账户 × 模型状态。", "healthMatrixRange": "健康矩阵时间范围", - "providerFilter": "提供者筛选", + "providerFilter": "供应商筛选", "onlyIssues": "仅显示问题", "refresh": "刷新", "accounts": "账户", "models": "模型", "issues": "问题", - "loadingProviderHealthMatrix": "正在加载提供者健康矩阵...", - "failedProviderHealthMatrix": "加载提供者健康矩阵失败:{error}", - "noProvidersMatchedFilters": "没有提供者匹配当前筛选条件。", - "modelPillSummary": "{requests} 请求 · {successRate} 成功率 · {latency} 平均延迟", - "modelLockoutSummary": "{reason} · 剩余 {duration}", + "loadingProviderHealthMatrix": "正在加载供应商健康矩阵...", + "failedProviderHealthMatrix": "加载供应商健康矩阵失败:{error}", + "noProvidersMatchedFilters": "没有供应商匹配当前筛选条件。", + "modelPillSummary": "{requests} 请求· {successRate} 成功率· {latency} 平均延迟", + "modelLockoutSummary": "{reason} ·剩余 {duration}", "locked": "已锁定", "inferred": "推断", "inactive": "不活跃", - "noConnectionId": "无连接 ID", + "noConnectionId": "无连接ID", "accountModelSummary": "{connectionId} · {count} 个模型", "cooldown": "冷却中", "durationRemaining": "剩余 {duration}", "noSyncedModelsOrTraffic": "暂无同步模型或近期流量。", - "providerRowSummary": "{active}/{total} 活跃账户 · {requests} 请求 · {successRate} 成功率 · {latency} 平均延迟", + "providerRowSummary": "{active}/{total} 活跃账户· {requests} 请求· {successRate} 成功率· {latency} 平均延迟", "cooldownCount": "{count} 个冷却中", "lockoutCount": "{count} 个锁定", "issueCount": "{count} 个问题", @@ -4474,7 +4474,7 @@ }, "telemetry": { "title": "系统遥测", - "description": "来自此 OmniRoute 进程的滚动请求、运行时、会话和内存信号。", + "description": "来自此OmniRoute进程的滚动请求、运行时、会话和内存信号。", "uptime": "运行时间", "totalRequests": "请求总数", "avgLatency": "平均延迟", @@ -4490,10 +4490,10 @@ "partialData": "遥测数据部分可用:{error}" }, "mitm": { - "title": "MITM 代理", + "title": "MITM代理", "description": "用于拦截和路由客户端请求的透明代理。", - "enable": "启用 MITM 代理", - "enableDesc": "启动或停止本地拦截进程和 DNS 覆盖。", + "enable": "启用MITM代理", + "enableDesc": "启动或停止本地拦截进程和DNS覆盖。", "status": "状态", "running": "运行中", "stopped": "已停止", @@ -4501,31 +4501,31 @@ "stop": "停止", "refresh": "刷新", "port": "代理端口", - "apiKey": "路由器 API 密钥", + "apiKey": "路由器API Key", "apiKeyPlaceholder": "可选;留空则回退到本地密钥", - "sudoPassword": "Sudo 密码", + "sudoPassword": "Sudo密码", "cachedPassword": "已为此进程缓存", "saveSettings": "保存设置", - "settingsSaved": "MITM 设置已保存。", - "startedSuccess": "MITM 代理已启动。", - "stoppedSuccess": "MITM 代理已停止。", - "saveFailed": "更新 MITM 设置失败。", - "loadFailed": "加载 MITM 设置失败。", - "invalidPort": "透明 MITM 拦截当前要求使用端口 443。", - "certificate": "CA 证书", + "settingsSaved": "MITM设置已保存。", + "startedSuccess": "MITM代理已启动。", + "stoppedSuccess": "MITM代理已停止。", + "saveFailed": "更新MITM设置失败。", + "loadFailed": "加载MITM设置失败。", + "invalidPort": "透明MITM拦截当前要求使用端口 443。", + "certificate": "CA证书", "certificateReady": "证书已可用于客户端信任安装。", "certificateMissing": "尚未生成证书。", "available": "可用", "missing": "缺失", - "downloadCert": "下载 CA 证书", + "downloadCert": "下载CA证书", "regenerateCert": "重新生成证书", "regenerateConfirm": "这会使现有客户端信任失效。要继续吗?", - "regenerateSuccess": "MITM 证书已重新生成。", - "regenerateFailed": "重新生成 MITM 证书失败。", + "regenerateSuccess": "MITM证书已重新生成。", + "regenerateFailed": "重新生成MITM证书失败。", "targetRoutes": "目标路由", "interceptedRequests": "已拦截请求", "activeConnections": "活动连接", - "dnsConfigured": "DNS 已配置", + "dnsConfigured": "DNS已配置", "pid": "PID", "lastIntercept": "上次拦截", "target": "目标", @@ -4575,12 +4575,12 @@ "noEntries": "未找到审核日志条目", "previous": "上一页", "next": "下一页", - "providerWarningTitle": "提供者警告", + "providerWarningTitle": "供应商警告", "viewDetails": "查看详情", "eventMetadata": "事件元数据", "eventPayload": "事件负载", - "requestId": "请求 ID", - "providerWarningDesc": "上游提供者返回了警告。请查看详情以了解更多信息。", + "requestId": "请求ID", + "providerWarningDesc": "上游供应商返回了警告。请查看详情以了解更多信息。", "a": "A", "offset": "偏移量", "limit": "限制", @@ -4595,7 +4595,7 @@ "clearAll": "全部清除", "confirmClearActiveRequests": "清除所有活跃请求?", "model": "模型", - "provider": "提供者", + "provider": "供应商", "account": "账户", "elapsed": "已耗时", "activeStage": "阶段", @@ -4612,15 +4612,15 @@ "viewPayloads": "查看", "activeCount": "{count} 个活跃", "clientPayload": "客户端请求载荷", - "upstreamPayload": "上游提供者载荷", + "upstreamPayload": "上游供应商载荷", "upstreamNotSentYet": "尚未发送到上游", - "runningRequestDetailMeta": "Account:{account} — 已耗时:{elapsed}", + "runningRequestDetailMeta": "Account:{account} —已耗时:{elapsed}", "export": "导出", "exporting": "正在导出...", "exportFailed": "导出失败", "cleanHistoryButton": "清除历史记录", "cleanHistoryTitle": "清除日志历史记录吗?", - "cleanHistoryMessage": "这将永久清除 DATA_DIR/call_logs 下的所有请求日志行、遗留详细信息行和本地产物文件。清理后页面将自动刷新。", + "cleanHistoryMessage": "这将永久清除DATA_DIR/call_logs下的所有请求日志行、遗留详细信息行和本地产物文件。清理后页面将自动刷新。", "cleanHistoryConfirm": "清除历史记录", "cleanHistoryCancel": "取消", "cleanHistorySuccess": "已清除 {deleted} 条日志条目、{deletedArtifacts} 个产物和 {deletedDetailedLogs} 个遗留详细信息行。", @@ -4633,7 +4633,7 @@ "fetchFailed": "获取日志失败", "copyFailed": "复制日志条目失败", "copyLogEntry": "复制日志条目", - "filterByLevel": "Filter by log level", + "filterByLevel": "按日志级别筛选", "searchPlaceholder": "搜索日志…", "searchAria": "搜索日志条目", "disableAutoScroll": "禁用自动滚动", @@ -4645,7 +4645,7 @@ "fileLoggingRequired": "请确保应用程序正在将日志写入文件 (APP_LOG_TO_FILE=true)", "consoleAria": "应用程序控制台日志", "applicationConsole": "应用程序控制台", - "emptyFileLoggingHint": "请确保在您的 .env 文件中设置了 APP_LOG_TO_FILE=true" + "emptyFileLoggingHint": "请确保在您的 .env文件中设置了APP_LOG_TO_FILE=true" }, "compressionLogTitle": "压缩日志", "compressionLogEmpty": "尚未有压缩请求。启用压缩处理请求时,压缩统计信息将出现在此处。", @@ -4658,7 +4658,7 @@ "test": "测试", "ready": "准备好了!", "setPassword": "设置密码", - "addProvider": "添加您的第一个提供者", + "addProvider": "添加您的第一个供应商", "getStarted": "开始使用", "skip": "跳过", "skipWizard": "完全跳过向导", @@ -4670,64 +4670,64 @@ "confirmPasswordPlaceholder": "确认密码", "passwordsMismatch": "密码不匹配", "setupComplete": "设置完成!", - "goToDashboard": "转到仪表板→", - "welcomeDesc": "OmniRoute 是您的本地 AI API 代理。它通过负载均衡、故障转移和使用情况跟踪将请求路由到多个 AI 提供者。", - "multiProvider": "多提供者", + "goToDashboard": "转到看板→", + "welcomeDesc": "OmniRoute是您的本地AI API代理。它通过负载均衡、故障转移和使用情况跟踪将请求路由到多个AI供应商。", + "multiProvider": "多供应商", "usageTracking": "使用情况追踪", - "securityDesc": "设置密码以保护您的仪表板,或暂时跳过。", - "providerDesc": "连接你的第一个 AI 提供者。你之后还可以继续添加。", - "apiKeyRequired": "API 密钥(必填)", - "customUrlOptional": "自定义 URL(可选)", - "testDesc": "让我们验证您的提供者连接是否有效。", + "securityDesc": "设置密码以保护您的看板,或暂时跳过。", + "providerDesc": "连接你的第一个AI供应商。你之后还可以继续添加。", + "apiKeyRequired": "API Key(必填)", + "customUrlOptional": "自定义URL(可选)", + "testDesc": "让我们验证您的供应商连接是否有效。", "runTest": "运行连接测试", "testingConnection": "测试连接...", - "connectionSuccessful": "连接成功!您的提供者已准备就绪。", - "noProviderFound": "未找到提供者。您可以稍后从仪表板添加一个。", + "connectionSuccessful": "连接成功!您的供应商已准备就绪。", + "noProviderFound": "未找到供应商。您可以稍后从看板添加一个。", "testFailed": "测试失败,但您可以稍后配置。", - "couldNotTest": "现在无法测试。您可以从仪表板进行测试。", - "doneDesc": "你都准备好了!您的 OmniRoute 实例已配置并准备好代理 AI 请求。", + "couldNotTest": "现在无法测试。您可以从看板测试。", + "doneDesc": "你都准备好了!您的OmniRoute实例已配置并准备好代理AI请求。", "yourEndpoint": "您的端点:", "continue": "继续", "retry": "重试", "failedSetPassword": "设置密码失败。再试一次。", - "failedAddProvider": "添加提供者失败。再试一次。", + "failedAddProvider": "添加供应商失败。再试一次。", "connectionError": "连接错误。请再试一次。", - "provider": "提供者", - "apiKeyHelp": "API密钥是AI服务的密码。从提供者的网站(例如 platform.openai.com、console.anthropic.com)获取一个。", + "provider": "供应商", + "apiKeyHelp": "API Key是AI服务的密码。从供应商的网站(例如platform.openai.com、console.anthropic.com)获取一个。", "tier": { - "subtitle": "OmniRoute 将提供者组织为三层,因此路由首先优先选择最可靠、成本最低的路径。", - "flowCaption": "请求会先流经您的订阅配额,然后是按 token 付费的廉价服务商,最后是免费层级服务商 —— 自动运行,零配置。", + "subtitle": "OmniRoute将供应商组织为三层,因此路由首先优先选择最可靠、成本最低的路径。", + "flowCaption": "请求会先流经您的订阅配额,然后是按token付费的廉价服务商,最后是免费层级服务商——自动运行,零配置。", "afterSetup": "设置后。", "tier1": { "label": "优质客户", - "description": "具有本机身份验证流程和推理模型的一流 CLI。" + "description": "具有本机身份验证流程和推理模型的一流CLI。" }, "tier2": { "label": "成本优化", - "description": "用于日常流量的廉价、高吞吐量提供者。" + "description": "用于日常流量的廉价、高吞吐量供应商。" }, "tier3": { "label": "后备和专业", "description": "本地托管或专用端点用作后备。" }, - "configure": "配置提供者" + "configure": "配置供应商" }, "tierFlowDiagramAlt": "OmniRoute 3 层回退图", - "apiKeyMgmt": "API密钥管理" + "apiKeyMgmt": "API Key管理" }, "providers": { - "title": "提供者", + "title": "供应商", "Account Deactivated": "账户已停用", - "allProviders": "所有提供者", - "audioProviders": "音频提供者", + "allProviders": "所有供应商", + "audioProviders": "音频供应商", "showFreeOnly": "仅显示免费", - "addProvider": "添加提供者", - "addFirstProvider": "添加您的第一个提供者", - "addFirstProviderDesc": "连接 AI 提供者以开始通过 OmniRoute 路由请求。您可以使用免费提供者、API 密钥或 OAuth 帐户。", + "addProvider": "添加供应商", + "addFirstProvider": "添加您的第一个供应商", + "addFirstProviderDesc": "连接AI供应商以开始通过OmniRoute路由请求。您可以使用免费供应商、API Key或OAuth帐户。", "learnMore": "了解更多", "importFromFile": "从文件导入", "importFromFileTitle": "从文件导入服务商", - "importFromFileDescription": "上传列有多个服务商的 CSV 或 JSON 文件(每行可以是不同的服务商类型)。在下方预览解析后的行,并选择要导入的行。", + "importFromFileDescription": "上传列有多个服务商的CSV或JSON文件(每行可以是不同的服务商类型)。在下方预览解析后的行,并选择要导入的行。", "importFromFileChoose": "选择文件", "importFromFileSelectHint": "已选择 {total} 中的 {count} 个", "importFromFileColProvider": "服务商", @@ -4736,47 +4736,47 @@ "importFromFileErrorLine": "第 {line} 行:{reason}", "importErrorMissingProvider": "缺少服务商", "importErrorMissingName": "缺少名称", - "importErrorMissingApiKey": "缺少 API 密钥", + "importErrorMissingApiKey": "缺少API Key", "importErrorInvalidPriority": "无效的优先级(必须为 1-100)", "importErrorMalformedRow": "格式错误的行", - "importErrorNotArray": "文件必须包含 JSON 数组", + "importErrorNotArray": "文件必须包含JSON数组", "importFromFileImporting": "正在导入…", "importFromFileImport": "导入 {count} 个服务商", "importFromFileResult": "已导入 {success} 个服务商({failed} 个失败)", "adaptaTutorial": { - "title": "如何连接 Adapta Web", - "introPrefix": "Adapta 通过 Clerk 进行身份验证。该令牌", - "introSuffix": "是一个长效 JWT,可让 OmniRoute 自动刷新会话。", + "title": "如何连接Adapta Web", + "introPrefix": "Adapta通过Clerk身份验证。该令牌", + "introSuffix": "是一个长效JWT,可让OmniRoute自动刷新会话。", "or": "或", - "step1Title": "打开 Adapta 聊天", + "step1Title": "打开Adapta聊天", "step1DescPrefix": "打开", "step1DescSuffix": "and sign in with your Gold or Business account.", "step2Title": "打开开发者工具", "step2DescPrefix": "按下", "step2DescSuffix": "以打开开发者工具。", - "step3Title": "前往 Application → Cookies", + "step3Title": "前往Application → Cookies", "step3DescPrefix": "在", "step3DescMiddle": "展开", "step3DescSuffix": "并点击", - "step4Title": "复制以下项的 cookie 值:", + "step4Title": "复制以下项的cookie值:", "step4DescPrefix": "在列表中找到名为", - "step4DescMiddle": "的 cookie。点击它并复制来自", + "step4DescMiddle": "的cookie。点击它并复制来自", "step4DescSuffix": "列的内容。它以", "step5Title": "粘贴到此处并保存", "step5DescPrefix": "点击", "step5DescMiddle": "粘贴", - "step5DescSuffix": "值到 API Key 字段,然后保存。OmniRoute 将自动刷新会话。", + "step5DescSuffix": "值到API Key字段,然后保存。OmniRoute将自动刷新会话。", "tipLabel": "提示:", "tipPrefix": "该", - "tipSuffix": "cookie 是长期有效的,通常可持续数月。您只需在退出登录或 Adapta 使会话失效时更新它。" + "tipSuffix": "cookie是长期有效的,通常可持续数月。您只需在退出登录或Adapta使会话失效时更新它。" }, - "editProvider": "编辑提供者", - "deleteProvider": "删除提供者", - "noProviders": "没有配置提供者", + "editProvider": "编辑供应商", + "deleteProvider": "删除供应商", + "noProviders": "没有配置供应商", "modelAvailability": "模型可用性", "accounts": "账户", "newAccount": "新账户", - "deleteConfirm": "您确定要删除该提供者吗?", + "deleteConfirm": "您确定要删除该供应商吗?", "testing": "测试...", "testConnection": "测试连接", "testSuccess": "连接成功", @@ -4790,10 +4790,10 @@ "chat": "聊天", "responses": "回应", "messages": "留言", - "oauthProviders": "OAuth 提供者", - "freeProviders": "免费提供者", - "apiKeyProviders": "API 密钥提供者", - "compatibleProviders": "API 密钥兼容提供者", + "oauthProviders": "OAuth供应商", + "freeProviders": "免费供应商", + "apiKeyProviders": "API Key供应商", + "compatibleProviders": "API Key兼容供应商", "testAll": "测试全部", "reorderByAvailability": "重新排序", "reorderByAvailabilityTitle": "按可用性重新排序连接", @@ -4802,9 +4802,9 @@ "distributing": "分配中...", "selectedCount": "已选 {count} 个", "accountsCount": "{count} 个账户", - "testAllOAuth": "测试所有 OAuth 连接", + "testAllOAuth": "测试所有OAuth连接", "testAllFree": "测试所有免费连接", - "testAllApiKey": "测试所有 API 密钥连接", + "testAllApiKey": "测试所有API Key连接", "testAllCompatible": "测试所有兼容连接", "testAllModels": "测试所有模型", "testAllModelsConfirm": "测试所有可见模型?如果启用了自动隐藏,失败的模型将被隐藏。", @@ -4820,7 +4820,7 @@ "showHiddenOnly": "仅隐藏", "filterByVisibility": "按可见性筛选", "autoHideFailed": "自动隐藏失败模型", - "autoHideFailedHint": "启用后,测试全部会把非临时失败的模型从 /v1/models 等公共目录中隐藏。单模型测试永远不会自动隐藏。", + "autoHideFailedHint": "启用后,测试全部会把非临时失败的模型从 /v1/models等公共目录中隐藏。单模型测试永远不会自动隐藏。", "connected": "{count} 已连接", "errorCount": "{count} 错误 ({code})", "errorCountNoCode": "{count} 错误", @@ -4838,52 +4838,52 @@ "freeTierAvailable": "有免费额度", "hasFreeTooltip": "提供免费层", "noAuthLabel": "免鉴权", - "noAuthProviders": "免鉴权提供者", + "noAuthProviders": "免鉴权供应商", "upstreamProxyLabel": "上游代理", - "freeAggregated": "所有提供免费层的提供者(同时也会显示在各自的原生分类中)", + "freeAggregated": "所有提供免费层的供应商(同时也会显示在各自的原生分类中)", "deprecated": "已弃用", - "deprecatedProvider": "此提供者已弃用", + "deprecatedProvider": "此供应商已弃用", "riskNotice": { "title": "继续之前", - "tooltip": "该提供者有使用注意事项 —— 点击查看详情", - "oauth": "此提供者使用你官方产品的会话 / OAuth,这并未被授权用于代理或路由用途。 不建议进行高强度的自主代理使用(OpenCloud 风格、长链路多步流程、大批量请求)—— 上游可能因此限制甚至封禁账号。 使用风险自负。", - "webCookie": "此提供者通过你的网页会话 Cookie 进行鉴权。上游服务可能随时让会话失效,届时你需要重新登录。不建议用于长时间无人值守的操作。 使用风险自负。", - "deprecated": "此提供者已被上游下线,可能随时停止工作。已存在的连接可能在上游完全关闭访问前继续可用。建议考虑替代方案。", - "dontShowAgain": "对此提供者不再显示此提示", + "tooltip": "该供应商有使用注意事项——点击查看详情", + "oauth": "此供应商使用你官方产品的会话 / OAuth,这并未被授权用于代理或路由用途。不建议进行高强度的自主代理使用(OpenCloud风格、长链路多步流程、大批量请求)——上游可能因此限制甚至封禁账号。使用风险自负。", + "webCookie": "此供应商通过你的网页会话Cookie进行鉴权。上游服务可能随时让会话失效,届时你需要重新登录。不建议用于长时间无人值守的操作。使用风险自负。", + "deprecated": "此供应商已被上游下线,可能随时停止工作。已存在的连接可能在上游完全关闭访问前继续可用。建议考虑替代方案。", + "dontShowAgain": "对此供应商不再显示此提示", "understand": "我已了解,继续", "cancel": "取消" }, "disabled": "已禁用", - "enableProvider": "启用提供者", - "disableProvider": "禁用提供者", + "enableProvider": "启用供应商", + "disableProvider": "禁用供应商", "testResults": "测试结果", - "noCompatibleYet": "尚未添加兼容的提供者", - "compatibleHint": "使用上面的按钮添加 OpenAI 或 Anthropic 兼容端点", - "addOpenAICompatible": "添加 OpenAI 兼容", - "addAnthropicCompatible": "添加 Anthropic 兼容端点", - "addNewProvider": "添加新提供者", - "backToProviders": "返回提供者", - "configureNewProvider": "配置新的 AI 提供者以与您的应用程序一起使用。", - "providerLabel": "提供者", - "selectProvider": "选择提供者", - "selectedProvider": "选定的提供者", + "noCompatibleYet": "尚未添加兼容的供应商", + "compatibleHint": "使用上面的按钮添加OpenAI或Anthropic兼容端点", + "addOpenAICompatible": "添加OpenAI兼容", + "addAnthropicCompatible": "添加Anthropic兼容端点", + "addNewProvider": "添加新供应商", + "backToProviders": "返回供应商", + "configureNewProvider": "配置新的AI供应商以与您的应用程序一起使用。", + "providerLabel": "供应商", + "selectProvider": "选择供应商", + "selectedProvider": "选定的供应商", "authMethod": "认证方式", - "apiKeyLabel": "API key", - "apiKeyRequired": "需要 API 密钥", - "selectProviderRequired": "请选择提供者", - "enterApiKey": "输入您的 API 密钥", - "apiKeySecure": "您的 API 密钥将被加密并安全存储。", - "oauth2Connect": "使用 OAuth2 连接", + "apiKeyLabel": "API Key", + "apiKeyRequired": "需要API Key", + "selectProviderRequired": "请选择供应商", + "enterApiKey": "输入您的API Key", + "apiKeySecure": "您的API Key将被加密并安全存储。", + "oauth2Connect": "使用OAuth2 连接", "oauth2Label": "OAuth2", - "oauth2Desc": "使用 OAuth2 身份验证连接您的帐户。", + "oauth2Desc": "使用OAuth2 身份验证连接您的帐户。", "displayName": "显示名称", - "displayNamePlaceholder": "例如,生产 API、开发环境", + "displayNamePlaceholder": "例如,生产API、开发环境", "displayNameHint": "可选。用于标识此配置的友好名称。", "active": "活跃", - "activeDescription": "启用此提供者以在您的应用程序中使用", + "activeDescription": "启用此供应商以在您的应用程序中使用", "cancel": "取消", - "createProvider": "创建提供者", - "failedCreate": "创建提供者失败", + "createProvider": "创建供应商", + "failedCreate": "创建供应商失败", "errorOccurred": "发生错误。请再试一次。", "modelStatus": "模型状态", "showConfiguredOnly": "仅显示已配置", @@ -4896,8 +4896,8 @@ "clearCooldown": "清除", "clearing": "清算...", "until": "直到 {time}", - "providerTestFailed": "提供者测试失败", - "providerTestTimeout": "提供者测试超时,可能是同时测试的连接过多", + "providerTestFailed": "供应商测试失败", + "providerTestTimeout": "供应商测试超时,可能是同时测试的连接过多", "modeTest": "{mode} 测试", "passedCount": "{count} 通过", "failedCount": "{count} 失败", @@ -4910,13 +4910,13 @@ "testSummary": "{passed}/{total} 通过,{failed} 失败", "nameLabel": "名称", "prefixLabel": "前缀", - "baseUrlLabel": "基础 URL", - "apiTypeLabel": "API 类型", + "baseUrlLabel": "基础URL", + "apiTypeLabel": "API类型", "prefixHint": "必填。模型名称使用的唯一前缀。", "nameHint": "必填。该节点的友好标签。", - "baseUrlHint": "必填。 提供者 API 基本 URL。", - "iconUrlLabel": "图标 URL", - "iconUrlHint": "可选。显示为此服务商图标的图片 URL。", + "baseUrlHint": "必填。供应商API基本URL。", + "iconUrlLabel": "图标URL", + "iconUrlHint": "可选。显示为此服务商图标的图片URL。", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -4924,10 +4924,10 @@ "validateConnection": "验证连接", "validating": "正在验证...", "connectionValid": "连接有效!", - "connectionFailed": "连接失败。检查 URL 和密钥。", - "testKeyLabel": "测试 API 密钥", + "connectionFailed": "连接失败。检查URL和密钥。", + "testKeyLabel": "测试API Key", "testKeyPlaceholder": "sk-...(仅用于验证)", - "providerNotFound": "未找到提供者", + "providerNotFound": "未找到供应商", "deleteConnectionConfirm": "删除这个连接吗?", "deleteConnectionConfirmNamed": "确定要删除{name}吗?此操作无法撤销。", "batchDeleteSelected": "删除选中({count})", @@ -4948,7 +4948,7 @@ "filterError": "错误", "filterBanned": "封禁", "filterCreditsExhausted": "额度耗尽", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "搜索账户…", "noFilteredConnections": "没有符合当前筛选条件的连接。", "failedSetAlias": "设置别名失败", "setAliasSuccess": "别名 {alias} 已设置", @@ -4957,8 +4957,8 @@ "failedSaveConnectionRetry": "无法保存连接。请再试一次。", "failedRetestConnection": "重新测试连接失败", "deleteCompatibleNodeConfirm": "删除此 {type} 兼容节点?", - "anthropicCompatibleDetails": "Anthropic 兼容详情", - "openaiCompatibleDetails": "OpenAI 兼容详情", + "anthropicCompatibleDetails": "Anthropic兼容详情", + "openaiCompatibleDetails": "OpenAI兼容详情", "messagesApi": "Messages API", "responsesApi": "Responses API", "embeddings": "嵌入", @@ -4967,20 +4967,20 @@ "imagesGenerations": "图像生成", "chatCompletions": "聊天完成", "importingModels": "正在导入...", - "importFromModels": "从 /models 导入", + "importFromModels": "从 /models导入", "modelsImported": "已导入 {count} 个模型", "allModelsAlreadyImported": "所有模型已导入", - "noNewModelsToImport": "没有新模型可导入 — 所有模型已在注册表或自定义模型列表中", + "noNewModelsToImport": "没有新模型可导入—所有模型已在注册表或自定义模型列表中", "skippingExistingModels": "跳过 {count} 个已有模型", "autoSync": "自动同步", "autoSyncShort": "同步", - "autoSyncTooltip": "每 24 小时自动刷新模型列表(可通过 MODEL_SYNC_INTERVAL_HOURS 配置)", - "autoSyncEnabled": "自动同步已启用 — 模型将定期刷新", + "autoSyncTooltip": "每 24 小时自动刷新模型列表(可通过MODEL_SYNC_INTERVAL_HOURS配置)", + "autoSyncEnabled": "自动同步已启用—模型将定期刷新", "autoSyncDisabled": "自动同步已禁用", "autoSyncToggleFailed": "切换自动同步失败", "autoSyncPartialFailure": "已为部分连接更新自动同步,但并非全部", "clearAllModels": "清除所有模型", - "clearAllModelsConfirm": "您确定要删除此提供者的所有模型吗?", + "clearAllModelsConfirm": "您确定要删除此供应商的所有模型吗?", "clearAllModelsSuccess": "所有模型已清除", "clearAllModelsFailed": "清除模型失败", "addConnectionToImport": "添加连接以启用导入。", @@ -4988,7 +4988,7 @@ "connectionCount": "{count} 连接", "fetchingModels": "正在获取可用模型...", "failedFetchModels": "获取模型失败", - "noFreeModelsFound": "未找到该服务商的免费模型 — 未导入任何内容。", + "noFreeModelsFound": "未找到该服务商的免费模型—未导入任何内容。", "fetchModelsSuccess": "找到 {count} 个新模型", "fetchModelsFailed": "无法自动获取模型(可从设置中重试)", "noModelsFound": "未找到模型", @@ -5019,27 +5019,27 @@ "testAllFailedHidden": "已隐藏 {count} 个失败模型", "testAllDone": "所有模型已测试", "productionKey": "生产密钥", - "enterNewApiKey": "输入新的 API 密钥", - "codexApplyModalTitle": "适用于当地法典", + "enterNewApiKey": "输入新的API Key", + "codexApplyModalTitle": "适用于本地 Codex", "codexApplyTargetLabel": "目标路径", "codexApplyBackupLabel": "备份", - "codexApplyWarning": "这将替换现有的 auth.json。继续?", - "codexApplyConfirmCheckbox": "我确认我想替换现有的 auth.json", + "codexApplyWarning": "这将替换现有的auth.json。继续?", + "codexApplyConfirmCheckbox": "我确认我想替换现有的auth.json", "codexApply": "申请", "bulkTabSingle": "单个", "bulkTabBulkAdd": "批量添加", - "bulkAddFormatHint": "每行一个密钥。格式:名称|API密钥 或仅 API密钥(按序号自动命名)。", + "bulkAddFormatHint": "每行一个密钥。格式:名称|API Key或仅API Key(按序号自动命名)。", "bulkValidateKeys": "保存前验证每个密钥(较慢)", "bulkAddAllKeys": "添加所有密钥", "bulkAddedCount": "{count, plural, other {已添加 # 个密钥}}", "bulkFailedCount": "{count, plural, other {# 个失败}}", "optional": "可选", - "anthropicCompatibleName": "Anthropic 兼容", - "openaiCompatibleName": "OpenAI 兼容", + "anthropicCompatibleName": "Anthropic兼容", + "openaiCompatibleName": "OpenAI兼容", "compatibleDefaultModelLabel": "默认模型", - "compatibleDefaultModelHint": "输入与您的兼容端点所预期完全一致的模型 ID。此模型将被保存为连接默认值。", + "compatibleDefaultModelHint": "输入与您的兼容端点所预期完全一致的模型ID。此模型将被保存为连接默认值。", "failedImportModels": "导入模型失败", - "noModelsReturnedFromEndpoint": "/models 端点没有返回任何模型。", + "noModelsReturnedFromEndpoint": "/models端点没有返回任何模型。", "importingModelsProgress": "正在导入 {current} 个模型(共 {total} 个)...", "foundModelsStartingImport": "找到 {count} 模型。开始导入...", "importingModelById": "正在导入 {modelId}...", @@ -5058,21 +5058,21 @@ "openai": "OpenAI", "singleConnectionPerCompatible": "每个兼容节点仅允许一个连接。如果需要更多连接,请添加另一个节点。", "connections": "连接", - "providerProxyTitleConfigured": "提供者代理:{host}", + "providerProxyTitleConfigured": "供应商代理:{host}", "configured": "已配置", - "providerProxyConfigureHint": "为该提供者的所有连接配置代理", - "providerProxy": "提供者代理", + "providerProxyConfigureHint": "为该供应商的所有连接配置代理", + "providerProxy": "供应商代理", "repairEnv": "修复 .env", "repairEnvWorking": "修复中...", - "repairEnvHint": "将缺失的 OAuth 默认值补充到 .env 中,不会覆盖现有值。", - "repairEnvSuccess": "OAuth 默认值已恢复", - "repairEnvFailed": "修复 .env 失败", + "repairEnvHint": "将缺失的OAuth默认值补充到 .env中,不会覆盖现有值。", + "repairEnvSuccess": "OAuth默认值已恢复", + "repairEnvFailed": "修复 .env失败", "noConnectionsYet": "还没有连接", "addFirstConnectionHint": "添加您的第一个连接以开始使用", "addConnection": "添加连接", "availableModels": "可用模型", "builtInModels": "内置模型", - "builtInModelsHint": "该提供者的注册表模型。点击铅笔可设置兼容选项。", + "builtInModelsHint": "该供应商的注册表模型。点击铅笔可设置兼容选项。", "pageAutoRefresh": "页面会自动刷新...", "statusDisabled": "已禁用", "statusConnected": "已连接", @@ -5084,7 +5084,7 @@ "statusUnavailable": "不可用", "statusFailed": "失败", "statusError": "错误", - "oauthAccount": "OAuth 帐户", + "oauthAccount": "OAuth帐户", "errorTypeRuntime": "本地运行时", "errorTypeUpstreamAuth": "上游授权", "errorTypeMissingCredential": "缺少凭证", @@ -5098,7 +5098,7 @@ "errorTypeCreditsExhausted": "额度已用完", "errorTypeBanned": "403 禁止访问", "proxySourceGlobal": "全局", - "proxySourceProvider": "提供者", + "proxySourceProvider": "供应商", "proxySourceKey": "密钥", "proxyConfiguredBySource": "代理 ({source}):{host}", "proxyOn": "代理开启", @@ -5107,8 +5107,8 @@ "proxyDisabledTitle": "此连接已禁用代理", "perKeyProxyOn": "按密钥", "perKeyProxyOff": "连接", - "perKeyProxyEnabledTitle": "已为此提供者启用按密钥代理分配", - "perKeyProxyDisabledTitle": "已为此提供者禁用按密钥代理分配", + "perKeyProxyEnabledTitle": "已为此供应商启用按密钥代理分配", + "perKeyProxyDisabledTitle": "已为此供应商禁用按密钥代理分配", "autoPriority": "自动:{priority}", "proxy": "代理", "retestAuthentication": "重新验证身份", @@ -5119,42 +5119,42 @@ "proxyConfig": "代理配置", "aliasExistsAlert": "别名“{alias}”已存在。请使用不同的模型或编辑现有别名。", "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", + "clickToSetAlias": "点击设置别名", "clickToEditAlias": "Alias: {alias} (click to edit)", - "openRouterAnyModelHint": "OpenRouter 支持任意模型。添加模型并创建别名后即可快速访问。", - "modelIdFromOpenRouter": "模型 ID(来自 OpenRouter)", + "openRouterAnyModelHint": "OpenRouter支持任意模型。添加模型并创建别名后即可快速访问。", + "modelIdFromOpenRouter": "模型ID(来自OpenRouter)", "openRouterModelPlaceholder": "anthropic/claude-3-opus", "customModels": "自定义模型", - "customModelsHint": "添加默认列表中没有的模型 ID,这些模型也能参与路由。", - "normalizeToolCallIdLabel": "将工具调用 ID 规范为 9 位(如 Mistral)", - "preserveDeveloperRoleLabel": "保留 Responses 的 developer 角色(不映射为 system)", + "customModelsHint": "添加默认列表中没有的模型ID,这些模型也能参与路由。", + "normalizeToolCallIdLabel": "将工具调用ID规范为 9 位(如Mistral)", + "preserveDeveloperRoleLabel": "保留Responses的developer角色(不映射为system)", "compatAdjustmentsTitle": "兼容性", "compatButtonLabel": "兼容性", - "compatToolIdShort": "工具 ID 9 位", - "compatDeveloperShort": "developer 角色", - "compatDoNotPreserveDeveloper": "不保留 developer 角色", + "compatToolIdShort": "工具ID 9 位", + "compatDeveloperShort": "developer角色", + "compatDoNotPreserveDeveloper": "不保留developer角色", "compatBadgeNoPreserve": "不保留", "compatProtocolLabel": "客户端请求协议", - "compatProtocolHint": "以下选项在 OmniRoute 识别到该请求形态(OpenAI Chat、Responses API 或 Anthropic Messages)时生效。", + "compatProtocolHint": "以下选项在OmniRoute识别到该请求形态(OpenAI Chat、Responses API或Anthropic Messages)时生效。", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", "targetFormatLabel": "目标格式", - "targetFormatHint": "覆盖上游传输格式。使用 'Anthropic Messages' 以通过 /v1/messages 端点路由兼容 OpenAI 的服务商(例如 opencode-go)。", + "targetFormatHint": "覆盖上游传输格式。使用 'Anthropic Messages' 以通过 /v1/messages端点路由兼容OpenAI的服务商(例如opencode-go)。", "targetFormatAuto": "默认 (自动)", "targetFormatGemini": "Gemini", "targetFormatAntigravity": "Antigravity", "contextWindowOverrideLabel": "上下文窗口覆盖", "contextWindowOverridePlaceholder": "例如 131072", - "contextWindowOverrideHint": "当提供者误报时,手动设置此模型的实际上下文窗口(token)。此设置优先于自动检测/目录值,并防止组合路由丢弃该模型。", - "contextWindowOverrideInvalid": "上下文窗口覆盖值必须是正整数 token 数", + "contextWindowOverrideHint": "当供应商误报时,手动设置此模型的实际上下文窗口(token)。此设置优先于自动检测/目录值,并防止组合路由丢弃该模型。", + "contextWindowOverrideInvalid": "上下文窗口覆盖值必须是正整数token数", "visionCapableLabel": "支持视觉", - "visionCapableHint": "当提供者的发现元数据未报告图像输入模态时(常见于自托管/本地后端),手动将此模型标记为支持视觉。", + "visionCapableHint": "当供应商的发现元数据未报告图像输入模态时(常见于自托管/本地后端),手动将此模型标记为支持视觉。", "compatParamFiltersLabel": "参数过滤器", "compatBlockedParamsHint": "已屏蔽的参数(从请求中移除)", "compatAllowedParamsHint": "允许的参数(在拒绝后重新添加)", "paramFiltersSectionTitle": "参数过滤器", - "paramFiltersSectionHint": "在发送给此提供者之前剥离或重新添加请求参数。用于避免因提供者拒绝某些参数而导致的 400 错误(例如 NVIDIA NIM 拒绝 thinking)。", + "paramFiltersSectionHint": "在发送给此供应商之前剥离或重新添加请求参数。用于避免因供应商拒绝某些参数而导致的 400 错误(例如NVIDIA NIM拒绝 thinking)。", "paramFiltersBlockedLabel": "已屏蔽的参数", "paramFiltersBlockedHint": "这些参数将从发送的请求中剥离(黑名单)。", "paramFiltersAllowedLabel": "允许的参数", @@ -5170,26 +5170,26 @@ "paramFiltersResetSuccess": "参数过滤器配置已重置为默认值", "paramFiltersResetError": "重置参数过滤器配置失败:{error}", "interceptionSectionTitle": "网页工具拦截", - "interceptionSectionHint": "将此提供者的原生 web_search / web_fetch 工具调用路由到 OmniRoute 自身的搜索和获取端点,而不是让提供者原生运行它们。默认关闭 — 现有行为保持不变。", - "interceptSearchLabel": "拦截 web_search", - "interceptSearchHint": "将原生的 web_search 工具调用重写为 OmniRoute 的 /v1/search。", - "interceptFetchLabel": "拦截 web_fetch", - "interceptFetchHint": "将原生的 web_fetch 工具调用重写为 OmniRoute 的 /v1/web/fetch。", + "interceptionSectionHint": "将此供应商的原生web_search / web_fetch工具调用路由到OmniRoute自身的搜索和获取端点,而不是让供应商原生运行它们。默认关闭—现有行为保持不变。", + "interceptSearchLabel": "拦截web_search", + "interceptSearchHint": "将原生的web_search工具调用重写为OmniRoute的 /v1/search。", + "interceptFetchLabel": "拦截web_fetch", + "interceptFetchHint": "将原生的web_fetch工具调用重写为OmniRoute的 /v1/web/fetch。", "interceptionLoadError": "加载拦截设置失败:{error}", "interceptionSaveError": "保存拦截设置失败:{error}", - "compatUpstreamHeadersLabel": "上游额外请求头", - "compatUpstreamHeadersHint": "与修改厂商连接/API 配置同属高权限能力,仅可信管理员应使用。这些头会在 OmniRoute 按厂商 API Key 自动加好鉴权头之后再合并。若「名称」与系统已加的头相同(例如都叫 Authorization),则以你填的值为准,会整段替换自动那条(含 Bearer 令牌),上游请求里不再使用面板里保存的密钥来生成 Authorization。填错可能导致 401,请谨慎。每个请求头单独一行;部分网关需要额外 Authentication 等可在此加。鼠标移入或聚焦「值」可暂时看明文。点空白处、关闭本面板或切走焦点即保存。", - "compatUpstreamHeaderName": "请求头名称", + "compatUpstreamHeadersLabel": "上游额外请求标头", + "compatUpstreamHeadersHint": "与修改厂商连接/API配置同属高权限能力,仅可信管理员应使用。这些头会在OmniRoute按厂商API Key自动加好鉴权头之后再合并。若「名称」与系统已加的头相同(例如都叫Authorization),则以你填的值为准,会整段替换自动那条(含Bearer令牌),上游请求里不再使用面板里保存的密钥来生成Authorization。填错可能导致 401,请谨慎。每个请求标头单独一行;部分网关需要额外Authentication等可在此加。鼠标移入或聚焦「值」可暂时看明文。点空白处、关闭本面板或切走焦点即保存。", + "compatUpstreamHeaderName": "请求标头名称", "compatUpstreamHeaderValue": "值", - "compatUpstreamAddRow": "添加请求头", + "compatUpstreamAddRow": "添加请求标头", "compatUpstreamRemoveRow": "删除此行", - "compatBadgeUpstreamHeaders": "请求头", + "compatBadgeUpstreamHeaders": "请求标头", "perModelQuotaLabel": "按模型配额", - "perModelQuotaDescription": "启用后,429/404 错误只会锁定特定 Model,而不是整个连接。适用于具有按 Model 速率限制的 Provider(例如 ModelScope)。", + "perModelQuotaDescription": "启用后,429/404 错误只会锁定特定Model,而不是整个连接。适用于具有按Model速率限制的供应商(例如ModelScope)。", "importFreeModelsOnlyLabel": "仅导入免费模型", - "importFreeModelsOnlyHint": "启用后,仅导入此提供者的免费模型。付费模型将被跳过。", + "importFreeModelsOnlyHint": "启用后,仅导入此供应商的免费模型。付费模型将被跳过。", "perModelQuotaToggle": "按模型配额开关", - "modelId": "模型 ID", + "modelId": "模型ID", "customModelPlaceholder": "例如:gpt-4.5-turbo", "loading": "正在加载...", "removeCustomModel": "删除自定义模型", @@ -5206,15 +5206,15 @@ "compatibleModelsDescription": "可手动添加 {type} 兼容模型,或从 `/models` 端点导入。", "anthropicCompatibleModelPlaceholder": "claude-3-opus-20240229", "openaiCompatibleModelPlaceholder": "gpt-4o", - "apiKeyValidationFailed": "API 密钥验证失败。请检查您的密钥并重试。", - "addProviderApiKeyTitle": "添加 {provider} API 密钥", + "apiKeyValidationFailed": "API Key验证失败。请检查您的密钥并重试。", + "addProviderApiKeyTitle": "添加 {provider} API Key", "checking": "正在检查...", "check": "检查", "valid": "有效", "invalid": "无效", "creating": "创造...", - "validationChecksAnthropicCompatible": "验证会通过检查 API 密钥来确认 {provider} 是否可用。", - "validationChecksOpenAiCompatible": "验证会通过你填写的 Base URL 上的 `/models` 接口来检查 {provider}。", + "validationChecksAnthropicCompatible": "验证会通过检查API Key来确认 {provider} 是否可用。", + "validationChecksOpenAiCompatible": "验证会通过你填写的Base URL上的 `/models` 接口来检查 {provider}。", "priorityLabel": "优先级", "saving": "正在保存...", "save": "保存", @@ -5230,16 +5230,16 @@ "groupPlaceholder": "例如:eKaizen、Personal", "failedTestConnection": "测试连接失败", "failed": "失败", - "leaveBlankKeepCurrentApiKey": "留空以保留当前的 API 密钥。", + "leaveBlankKeepCurrentApiKey": "留空以保留当前的API Key。", "editCompatibleTitle": "编辑 {type} 兼容", - "compatibleBaseUrlHint": "{type} 兼容 API 的根 URL。若端点路径是自定义的,请在高级设置中配置。", - "apiKeyForCheck": "API 密钥(用于检查)", - "testModelIdLabel": "模型 ID(可选)", - "testModelIdPlaceholder": "例如 my-model-id", - "testModelIdHint": "如果提供者缺少 /models 端点,请输入模型 ID 以改用 /chat/completions 进行验证。", + "compatibleBaseUrlHint": "{type} 兼容API的根URL。若端点路径是自定义的,请在高级设置中配置。", + "apiKeyForCheck": "API Key(用于检查)", + "testModelIdLabel": "模型ID(可选)", + "testModelIdPlaceholder": "例如my-model-id", + "testModelIdHint": "如果供应商缺少 /models端点,请输入模型ID以改用 /chat/completions验证。", "compatibleProdPlaceholder": "{type} 兼容(产品)", - "tokenRefreshed": "Token 刷新成功", - "tokenRefreshFailed": "Token 刷新失败", + "tokenRefreshed": "Token刷新成功", + "tokenRefreshFailed": "Token刷新失败", "applyCodexAuthLocal": "应用认证", "exportCodexAuthFile": "导出认证", "applyClaudeAuthLocal": "申请授权", @@ -5248,260 +5248,260 @@ "claudeApplyModalTitle": "适用于当地Claude Code", "claudeApplyTargetLabel": "目标路径", "claudeApplyBackupLabel": "备份", - "claudeApplyMcpHint": "现有的 MCP OAuth 状态将被保留。", - "claudeApplyWarning": "这将取代现有的 claudeAiOauth 部分。继续?", - "claudeApplyConfirmCheckbox": "我确认我想替换现有的 claudeAiOauth 部分", + "claudeApplyMcpHint": "现有的MCP OAuth状态将被保留。", + "claudeApplyWarning": "这将取代现有的Claude OAuth部分。继续?", + "claudeApplyConfirmCheckbox": "我确认我想替换现有的Claude OAuth部分", "claudeApply": "申请", "claudeAuthAppliedLocal": "Claude授权在本地应用", "claudeAuthApplyFailed": "本地申请Claude auth失败", "claudeAuthExported": "Claude授权文件导出", - "claudeAuthExportFailed": "无法导出 Claude 身份验证文件", - "claudeImportModalTitle": "导入Claude·奥特", + "claudeAuthExportFailed": "无法导出Claude身份验证文件", + "claudeImportModalTitle": "导入Claude OAuth", "claudeImportTabSingle": "单人", "claudeImportTabBulk": "散装", "claudeImportTabUpload": "上传文件", - "claudeImportTabPaste": "粘贴 JSON", + "claudeImportTabPaste": "粘贴JSON", "claudeImportFileLabel": "选择.credentials.json", - "claudeImportPasteLabel": "粘贴 JSON 内容", + "claudeImportPasteLabel": "粘贴JSON内容", "claudeImportEmailLabel": "账户邮箱", "claudeImportNameLabel": "连接名称(可选)", "claudeImportOverwriteLabel": "如果帐户已存在,则替换现有连接", "claudeImportSubmit": "进口", "claudeImportSuccess": "Claude连接导入成功", - "claudeImportInvalidJson": "无法将文件解析为 JSON", + "claudeImportInvalidJson": "无法将文件解析为JSON", "claudeImportInvalidShape": "该文件不是有效的 .credentials.json", "claudeImportDuplicate": "帐户已存在 - 启用“替换现有”以覆盖", - "claudeImportIdentityUnverified": "Bootstrap 无法验证该帐户。启用“替换现有”或提供电子邮件。", + "claudeImportIdentityUnverified": "Bootstrap无法验证该帐户。启用“替换现有”或提供电子邮件。", "claudeImportFailed": "导入Claude授权失败", "claudeImportBulkModeUpload": "上传文件", - "claudeImportBulkModePaste": "粘贴 JSON 数组", + "claudeImportBulkModePaste": "粘贴JSON数组", "claudeImportBulkModeZip": "上传ZIP", - "claudeImportBulkUploadHint": "拖放或拾取最多 50 个 .credentials.json 文件(每个 256KB,总共 10MB)。", - "claudeImportBulkPasteHint": "粘贴对象数组:[{ json, name?, email? }...]", - "claudeImportBulkZipHint": "包含 .json 条目的 ZIP。最多 50 个条目,解压后 10MB。", + "claudeImportBulkUploadHint": "拖放或拾取最多 50 个 .credentials.json文件(每个 256KB,总共 10MB)。", + "claudeImportBulkPasteHint": "粘贴对象数组:[{ json, name?, email? }...]", + "claudeImportBulkZipHint": "包含 .json条目的ZIP。最多 50 个条目,解压后 10MB。", "claudeImportBulkSubmit": "全部导入", - "claudeImportBulkSuccess": "导入 {count} Claude 连接", + "claudeImportBulkSuccess": "导入 {count} Claude连接", "claudeImportBulkFailed": "部分条目导入失败", - "claudeImportBulkZipExtracting": "正在提取 ZIP...", - "claudeImportBulkZipError": "无法提取 ZIP", - "geminiAuthAppliedLocal": "Gemini 身份验证在本地应用", - "geminiAuthApplyFailed": "本地申请 Gemini 身份验证失败", - "geminiAuthExported": "Gemini 验证文件已导出", - "geminiAuthExportFailed": "导出 Gemini 身份验证文件失败", - "geminiImportModalTitle": "导入 Gemini 授权", + "claudeImportBulkZipExtracting": "正在提取ZIP...", + "claudeImportBulkZipError": "无法提取ZIP", + "geminiAuthAppliedLocal": "Gemini身份验证在本地应用", + "geminiAuthApplyFailed": "本地申请Gemini身份验证失败", + "geminiAuthExported": "Gemini验证文件已导出", + "geminiAuthExportFailed": "导出Gemini身份验证文件失败", + "geminiImportModalTitle": "导入Gemini授权", "geminiImportTabSingle": "单人", "geminiImportTabBulk": "散装", "geminiImportTabUpload": "上传文件", - "geminiImportTabPaste": "粘贴 JSON", - "geminiImportFileLabel": "选择 oauth_creds.json", - "geminiImportPasteLabel": "粘贴 JSON 内容", + "geminiImportTabPaste": "粘贴JSON", + "geminiImportFileLabel": "选择oauth_creds.json", + "geminiImportPasteLabel": "粘贴JSON内容", "geminiImportEmailLabel": "账户邮箱", "geminiImportNameLabel": "连接名称(可选)", "geminiImportOverwriteLabel": "如果帐户已存在,则替换现有连接", "geminiImportSubmit": "进口", - "geminiImportSuccess": "Gemini 连接导入成功", - "geminiImportInvalidJson": "无法将文件解析为 JSON", - "geminiImportInvalidShape": "该文件不是有效的 oauth_creds.json", + "geminiImportSuccess": "Gemini连接导入成功", + "geminiImportInvalidJson": "无法将文件解析为JSON", + "geminiImportInvalidShape": "该文件不是有效的oauth_creds.json", "geminiImportDuplicate": "帐户已存在 - 启用“替换现有”以覆盖", - "geminiImportIdentityUnverified": "无法通过 id_token 验证身份。启用“替换现有”或提供电子邮件。", - "geminiImportFailed": "导入 Gemini 身份验证失败", + "geminiImportIdentityUnverified": "无法通过id_token验证身份。启用“替换现有”或提供电子邮件。", + "geminiImportFailed": "导入Gemini身份验证失败", "geminiImportBulkModeUpload": "上传文件", - "geminiImportBulkModePaste": "粘贴 JSON 数组", + "geminiImportBulkModePaste": "粘贴JSON数组", "geminiImportBulkModeZip": "上传ZIP", - "geminiImportBulkUploadHint": "拖放或拾取最多 50 个 oauth_creds.json 文件(每个 256KB,总共 10MB)。", - "geminiImportBulkPasteHint": "粘贴对象数组:[{ json, name?, email? }...]", - "geminiImportBulkZipHint": "包含 oauth_creds.json 条目的 ZIP。最多 50 个条目,解压后 10MB。", + "geminiImportBulkUploadHint": "拖放或拾取最多 50 个oauth_creds.json文件(每个 256KB,总共 10MB)。", + "geminiImportBulkPasteHint": "粘贴对象数组:[{ json, name?, email? }...]", + "geminiImportBulkZipHint": "包含oauth_creds.json条目的ZIP。最多 50 个条目,解压后 10MB。", "geminiImportBulkSubmit": "全部导入", - "geminiImportBulkSuccess": "导入 {count} Gemini 连接", + "geminiImportBulkSuccess": "导入 {count} Gemini连接", "geminiImportBulkFailed": "部分条目导入失败", - "geminiImportBulkZipExtracting": "正在提取 ZIP...", - "geminiImportBulkZipError": "无法提取 ZIP", - "codexAuthAppliedLocal": "Codex auth.json 已在本地应用", - "codexAuthApplyFailed": "在本地应用 Codex auth.json 失败", - "codexAuthExported": "Codex auth.json 已导出", - "codexAuthExportFailed": "导出 Codex auth.json 失败", - "codexCliGuideButton": "Codex CLI 指南", - "codexCliGuideTitle": "Codex CLI 指南", + "geminiImportBulkZipExtracting": "正在提取ZIP...", + "geminiImportBulkZipError": "无法提取ZIP", + "codexAuthAppliedLocal": "Codex auth.json已在本地应用", + "codexAuthApplyFailed": "在本地应用Codex auth.json失败", + "codexAuthExported": "Codex auth.json已导出", + "codexAuthExportFailed": "导出Codex auth.json失败", + "codexCliGuideButton": "Codex CLI指南", + "codexCliGuideTitle": "Codex CLI指南", "codexCliGuideLoading": "正在加载指南...", "codexCliGuideLoadFailed": "无法加载指南。", - "codexExternalLinkButton": "外部 Codex 链接", - "codexExternalLinkModalTitle": "外部 Codex 链接", - "codexExternalLinkModalDescription": "将此一次性链接分享给将要验证 Codex 帐户的人。他们在自己的浏览器中打开它,完成 OpenAI 登录,连接就会在此处注册。该链接将在 15 分钟后过期。", + "codexExternalLinkButton": "外部Codex链接", + "codexExternalLinkModalTitle": "外部Codex链接", + "codexExternalLinkModalDescription": "将此一次性链接分享给将要验证Codex帐户的人。他们在自己的浏览器中打开它,完成OpenAI登录,连接就会在此处注册。该链接将在 15 分钟后过期。", "codexExternalLinkGenerating": "正在生成链接...", "codexExternalLinkWaiting": "正在等待浏览器身份验证。此窗口会自动刷新。", "codexExternalLinkCreateFailed": "生成链接失败。", "codexExternalLinkNetworkError": "无法连接到服务器。", - "codexExternalLinkConnected": "已通过外部链接连接 Codex 帐户。", + "codexExternalLinkConnected": "已通过外部链接连接Codex帐户。", "codexExternalLinkExpired": "链接在完成前已过期。", "importCodexAuth": "导入授权", - "codexImportModalTitle": "导入法典认证", + "codexImportModalTitle": "导入 Codex 认证", "codexImportTabSingle": "单人", "codexImportTabBulk": "散装", "codexImportTabUpload": "上传文件", - "codexImportTabPaste": "粘贴 JSON", - "codexImportFileLabel": "选择 auth.json", - "codexImportFileHint": "选择从 Codex 或 OmniRoute 导出的 auth.json 文件。", - "codexImportPasteLabel": "粘贴 JSON 内容", + "codexImportTabPaste": "粘贴JSON", + "codexImportFileLabel": "选择auth.json", + "codexImportFileHint": "选择从Codex或OmniRoute导出的auth.json文件。", + "codexImportPasteLabel": "粘贴JSON内容", "codexImportEmailLabel": "账户邮箱", "codexImportEmailHint": "从文件中自动检测;如果需要的话进行编辑。", "codexImportNameLabel": "连接名称(可选)", "codexImportOverwriteLabel": "如果帐户已存在,则替换现有连接", "codexImportSubmit": "进口", - "codexImportSuccess": "Codex 连接导入成功", - "codexImportInvalidJson": "无法将文件解析为 JSON", - "codexImportInvalidShape": "该文件不是有效的 Codex auth.json", + "codexImportSuccess": "Codex连接导入成功", + "codexImportInvalidJson": "无法将文件解析为JSON", + "codexImportInvalidShape": "该文件不是有效的Codex auth.json", "codexImportDuplicate": "帐户已存在 - 启用“替换现有”以覆盖", - "codexImportFailed": "导入 Codex 验证失败", + "codexImportFailed": "导入Codex验证失败", "codexImportDetectedEmail": "检测到:{email}", "codexImportNoEmailDetected": "文件中未检测到电子邮件", "codexImportBulkModeUpload": "上传文件", "codexImportBulkModePaste": "粘贴列表", - "codexImportBulkModeZip": "ZIP 存档", - "codexImportBulkUploadHint": "选择多个 .json 文件或拖放", - "codexImportBulkPasteHint": "JSON 数组 [ {...}, {...} ] 或由 --- 分隔的多个 JSON 在其自己的行上", - "codexImportBulkZipHint": "上传包含 auth.json 文件的 .zip(最多 50 个文件,10 MB)", + "codexImportBulkModeZip": "ZIP存档", + "codexImportBulkUploadHint": "选择多个 .json文件或拖放", + "codexImportBulkPasteHint": "JSON数组 [ {...}, {...} ] 或由 --- 分隔的多个JSON在其自己的行上", + "codexImportBulkZipHint": "上传包含auth.json文件的 .zip(最多 50 个文件,10 MB)", "codexImportBulkSubmit": "导入 {count} 帐户", "codexImportBulkLimit": "每次导入最多 50 个文件", "codexImportBulkSuccess": "{count} 已导入", "codexImportBulkFailed": "{count} 失败", - "codexImportBulkZipExtracting": "正在提取 ZIP...", - "codexImportBulkZipError": "无法提取 ZIP", + "codexImportBulkZipExtracting": "正在提取ZIP...", + "codexImportBulkZipError": "无法提取ZIP", "advancedSettings": "高级设置", "chatPathLabel": "聊天端点路径", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "为非标准 API 的提供者自定义聊天路径(例如:/v4/chat/completions)", + "chatPathHint": "为非标准API的供应商自定义聊天路径(例如:/v4/chat/completions)", "modelsPathLabel": "模型端点路径", "modelsPathPlaceholder": "/models", "modelsPathHint": "为验证流程自定义模型路径(例如:/v4/models)", "clientIdentityLabel": "客户端标识", - "clientIdentityHint": "可选。添加与已知 CLI 匹配的客户端指纹标头(例如 User-Agent),适用于需要该标头的兼容网关。", + "clientIdentityHint": "可选。添加与已知CLI匹配的客户端指纹头(例如User-Agent),适用于需要该标头的兼容网关。", "statusDeactivated": "已停用(手动)", "statusBanned": "已封禁 / 沙箱违规", "statusCreditsExhausted": "余额不足 / 配额已耗尽", "showEmails": "显示所有邮箱", "hideEmails": "隐藏所有邮箱", "a": "A", - "accountConcurrencyCapHint": "限制此 Account 可同时处理的请求数。", - "accountConcurrencyCapLabel": "Account 并发上限", - "accountIdHint": "用于区分同一 Provider 下的多个 Account。", + "accountConcurrencyCapHint": "限制此Account可同时处理的请求数。", + "accountConcurrencyCapLabel": "Account并发上限", + "accountIdHint": "用于区分同一供应商下的多个Account。", "accountIdLabel": "Account ID", - "accountIdPlaceholder": "Account ID 占位符", - "addAnotherApiKey": "添加另一个 API 密钥或粘贴多个密钥", - "addCcCompatible": "添加 CC 兼容", + "accountIdPlaceholder": "Account ID占位符", + "addAnotherApiKey": "添加另一个API Key或粘贴多个密钥", + "addCcCompatible": "添加Claude Code兼容", "aggregatorsGateways": "聚合器与网关", "enterpriseCloud": "企业与云", - "apiFormatLabel": "API 格式", - "apiKeyOptionalHint": "如果上游不需要认证,可以留空 API key。", - "apiKeyOptionalLabel": "API key(可选)", + "apiFormatLabel": "API格式", + "apiKeyOptionalHint": "如果上游不需要认证,可以留空API Key。", + "apiKeyOptionalLabel": "API Key(可选)", "apiRegionChina": "中国区", - "apiRegionHint": "选择此 Provider 的 API 区域。", + "apiRegionHint": "选择此供应商的API区域。", "apiRegionInternational": "国际区", - "apiRegionLabel": "API 区域", - "apikey": "API key", + "apiRegionLabel": "API区域", + "apikey": "API Key", "audio": "音频", - "audioProvidersHeading": "音频 Provider", - "cloudAgentProviders": "云代理提供者", + "audioProvidersHeading": "音频供应商", + "cloudAgentProviders": "云智能体供应商", "audioShortLabel": "音频", - "azureOpenAiBaseUrlHint": "Azure OpenAI 资源的 Base URL。", - "bailianBaseUrlHint": "阿里云百炼服务的 Base URL。", - "claudeWebCookieHint": "打开 claude.ai → 开发者工具 → 应用 → Cookie → claude.ai,复制 sessionKey 值。还需要从同一页面复制 cf_clearance 值。", + "azureOpenAiBaseUrlHint": "Azure OpenAI资源的Base URL。", + "bailianBaseUrlHint": "阿里云百炼服务的Base URL。", + "claudeWebCookieHint": "打开claude.ai → 开发者工具 → 应用 → Cookie → claude.ai,复制sessionKey值。还需要从同一页面复制cf_clearance值。", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "从 Blackbox Web 会话复制 Cookie。", + "blackboxWebCookieHint": "从Blackbox Web会话复制Cookie。", "blackboxWebCookiePlaceholder": "Blackbox Web Cookie", - "t3ChatWebCookieHint": "打开 t3.chat → 开发工具 → 应用程序 → 本地存储 → https://t3.chat,复制“凸会话 ID”。然后打开 DevTools → Network,从任何聊天请求中复制完整的 Cookie 标头。将这两个值粘贴到下面的字段中。", - "t3ChatWebCookiePlaceholder": "凸会话 ID=abc123...", - "grokWebCookieHint": "从 Grok Web 会话复制 Cookie。", - "blockClaudeExtraUsageDescription": "__MISSING__:When enabled, OmniRoute marks this Claude connection unavailable as soon as the usage API reports queued extra usage, so fallback switches to another connection instead of continuing on pay-as-you-go extra billing.", - "blockClaudeExtraUsageLabel": "__MISSING__:Block extra Claude usage", + "t3ChatWebCookieHint": "打开t3.chat → 开发工具 → 应用程序 → 本地存储 → https://t3.chat,复制“凸会话ID”。然后打开DevTools → Network,从任何聊天请求中复制完整的Cookie标头。将这两个值粘贴到下面的字段中。", + "t3ChatWebCookiePlaceholder": "凸会话ID=abc123...", + "grokWebCookieHint": "从Grok Web会话复制Cookie。", + "blockClaudeExtraUsageDescription": "隐藏部分供应商返回的重复Claude额外用量记录,避免和主token统计重复。", + "blockClaudeExtraUsageLabel": "屏蔽重复Claude用量", "disableCoolingDescription": "跳过瞬态冷却,以便此连接在发生可恢复错误后仍符合条件(被禁/过期等终态仍适用)。", "disableCoolingLabel": "禁用此连接的冷却", - "bulkPasteAdded": "{count, plural, one {已添加 1 个 key} other {已添加 # 个 key}}", + "bulkPasteAdded": "{count, plural, one {已添加 1 个key} other {已添加 # 个key}}", "bulkPasteDuplicatesIgnored": "{count, plural, one {已跳过 1 个重复项} other {已跳过 # 个重复项}}", - "bulkPasteHint": "每行粘贴一个 API 密钥。空行会被忽略,重复密钥会被跳过。", - "ccCompatibleBaseUrlHint": "Claude Code 专用中转站的 Base URL,不要包含 /messages。", + "bulkPasteHint": "每行粘贴一个API Key。空行会被忽略,重复密钥会被跳过。", + "ccCompatibleBaseUrlHint": "Claude Code专用中转站的Base URL,不要包含 /messages。", "ccCompatibleBaseUrlPlaceholder": "https://relay.example.com/v1", - "ccCompatibleChatPathHint": "默认使用 Claude Code 严格的 Messages API 路径。仅在中转站文档要求时修改。", - "ccCompatibleContext1mDescription": "当所选 Claude 模型支持时,添加 context-1m beta header。", + "ccCompatibleChatPathHint": "默认使用Claude Code严格的Messages API路径。仅在中转站文档要求时修改。", + "ccCompatibleContext1mDescription": "当所选Claude模型支持时,添加context-1m beta header。", "ccCompatibleContext1mLabel": "启用 1M context beta", - "ccCompatibleRedactThinkingDescription": "为要求隐藏 Claude 思考流的 CC Compatible 上游添加 redact-thinking beta header。", - "ccCompatibleRedactThinkingLabel": "启用 redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "为 CC Compatible 的 thinking 请求添加 `display: \"summarized\"`,让支持的 Claude 模型流式返回可见思考增量。", - "ccCompatibleSummarizeThinkingLabel": "启用 summarized thinking display", - "ccCompatibleDetailsTitle": "CC 兼容中转站详情", - "ccCompatibleLabel": "CC 兼容", - "ccCompatibleModelsDescription": "CC 兼容中转站不提供模型列表。请添加该中转站接受的 Claude 模型 ID。", - "ccCompatibleNameHint": "这个 Claude Code 专用中转站的显示名称。", - "ccCompatibleNamePlaceholder": "CC 中转站生产环境", - "ccCompatiblePrefixHint": "用于 prefix/model-id 这类模型别名。", + "ccCompatibleRedactThinkingDescription": "为要求隐藏Claude思考流的Claude Code Compatible上游添加redact-thinking beta header。", + "ccCompatibleRedactThinkingLabel": "启用redact-thinking beta", + "ccCompatibleSummarizeThinkingDescription": "为Claude Code Compatible的thinking请求添加 `display: \"summarized\"`,让支持的Claude模型流式返回可见思考增量。", + "ccCompatibleSummarizeThinkingLabel": "启用summarized thinking display", + "ccCompatibleDetailsTitle": "Claude Code兼容中转站详情", + "ccCompatibleLabel": "CC兼容", + "ccCompatibleModelsDescription": "Claude Code兼容中转站不提供模型列表。请添加该中转站接受的Claude模型ID。", + "ccCompatibleNameHint": "这个Claude Code专用中转站的显示名称。", + "ccCompatibleNamePlaceholder": "Claude Code中转站生产环境", + "ccCompatiblePrefixHint": "用于prefix/model-id这类模型别名。", "ccCompatiblePrefixPlaceholder": "cc", - "ccCompatibleValidationHint": "这个 Provider 只适用于仅向 Claude Code 客户端提供服务的中转站。OmniRoute 会把任何进入的请求改写为 Claude Code 兼容的传输格式,以通过这些中转站的验证。如果你只是想使用 Claude Code CLI,或者不清楚这类中转站是什么,请使用普通 Anthropic-compatible Provider。", + "ccCompatibleValidationHint": "这个供应商只适用于仅向Claude Code客户端提供服务的中转站。OmniRoute会把任何进入的请求改写为Claude Code兼容的传输格式,以通过这些中转站的验证。如果你只是想使用Claude Code CLI,或者不清楚这类中转站是什么,请使用普通Anthropic-compatible供应商。", "claudeExtraUsageShort": "额外用量", - "claudeExtraUsageToggleTitle": "为此连接屏蔽 Claude 额外用量统计", - "codex5hToggleTitle": "为此连接跟踪 Codex 5 小时配额", - "codexFastServiceTierDescription": "可用时为 Codex 请求使用 priority 服务层。", - "codexFastServiceTierLabel": "Codex 快速服务层", - "codexWeeklyToggleTitle": "为此连接跟踪 Codex 周配额", - "compatUpstreamHeaderNamePlaceholder": "上游 Header 名称", - "compatUpstreamHeaderValuePlaceholder": "上游 Header 值", + "claudeExtraUsageToggleTitle": "为此连接屏蔽Claude额外用量统计", + "codex5hToggleTitle": "为此连接跟踪Codex 5 小时配额", + "codexFastServiceTierDescription": "可用时为Codex请求使用priority服务层。", + "codexFastServiceTierLabel": "Codex快速服务层", + "codexWeeklyToggleTitle": "为此连接跟踪Codex周配额", + "compatUpstreamHeaderNamePlaceholder": "上游Header名称", + "compatUpstreamHeaderValuePlaceholder": "上游Header值", "compatible": "兼容", "configuredCount": "已配置数量", - "consoleApiKeyOracleHint": "用于从 Console 获取或验证 API key 的辅助配置。", - "consoleApiKeyOracleLabel": "Console API key Oracle", - "consoleApiKeyOraclePlaceholder": "Console API key Oracle 占位符", - "newApiUserIdLabel": "New-API 用户 ID", + "consoleApiKeyOracleHint": "用于从Console获取或验证API Key的辅助配置。", + "consoleApiKeyOracleLabel": "Console API Key Oracle", + "consoleApiKeyOraclePlaceholder": "Console API Key Oracle占位符", + "newApiUserIdLabel": "New-API用户ID", "newApiUserIdPlaceholder": "例如 12345", - "newApiUserIdHint": "AgentRouter 的 New-Api-User 请求头值,与控制台 API key 一起用于获取配额余额。", - "cpaModeDisabledTitle": "CLIProxyAPI 兼容模式已关闭", - "cpaModeEnabledTitle": "CLIProxyAPI 兼容模式已开启", - "customUserAgentHint": "发送给上游 Provider 的自定义 User-Agent。", - "customUserAgentLabel": "自定义 User-Agent", - "databricksBaseUrlHint": "Databricks Serving Endpoint 的 Base URL。", - "defaultThinkingStrengthHint": "请求未指定 reasoning effort 时使用。", + "newApiUserIdHint": "AgentRouter的New-Api-User请求标头值,与控制台API Key一起用于获取配额余额。", + "cpaModeDisabledTitle": "CLIProxyAPI兼容模式已关闭", + "cpaModeEnabledTitle": "CLIProxyAPI兼容模式已开启", + "customUserAgentHint": "发送给上游供应商的自定义User-智能体。", + "customUserAgentLabel": "自定义User-智能体", + "databricksBaseUrlHint": "Databricks Serving Endpoint的Base URL。", + "defaultThinkingStrengthHint": "请求未指定reasoning effort时使用。", "defaultThinkingStrengthLabel": "默认思考强度", "deleteAllExtraApiKeys": "全部删除", - "excludedModelsHint": "这些 Model 不会出现在路由和选择器中。", - "excludedModelsLabel": "排除的 Model", - "excludedModelsPlaceholder": "以逗号分隔的 Model ID", + "excludedModelsHint": "这些Model不会出现在路由和选择器中。", + "excludedModelsLabel": "排除的Model", + "excludedModelsPlaceholder": "以逗号分隔的Model ID", "expirationBannerExpired": "凭据已过期", - "expirationBannerExpiredDesc": "此 Provider 的凭据已过期,请更新后继续使用。", + "expirationBannerExpiredDesc": "此供应商的凭据已过期,请更新后继续使用。", "expirationBannerExpiringSoon": "凭据即将过期", - "expirationBannerExpiringSoonDesc": "此 Provider 的凭据即将过期,请提前更新。", + "expirationBannerExpiringSoonDesc": "此供应商的凭据即将过期,请提前更新。", "extraApiKeyMasked": "密钥 {index}:{prefix}••••{suffix}", - "extraApiKeysHint": "为同一提供者添加额外 API 密钥,以便轮换和回退使用。", - "extraApiKeysLabel": "额外 API 密钥", - "apiKeyHealthLabel": "API 密钥健康状态", + "extraApiKeysHint": "为同一供应商添加额外API Key,以便轮换和回退使用。", + "extraApiKeysLabel": "额外API Key", + "apiKeyHealthLabel": "API Key健康状态", "apiKeyStatusActive": "正常", "apiKeyStatusWarning": "异常({count} 次失败)", "apiKeyStatusInvalid": "无效", "primaryKey": "主密钥", - "apiKeyInvalidAlert": "{count} 个 API 密钥因认证失败被标记为无效:{connections}。轮换时将跳过它们。点击查看。", - "apiKeyInvalidAlertTitle": "API 密钥健康提醒", - "apiKeyWarningAlert": "{count} 个 API 密钥在以下连接中处于警告状态:{connections}。请检查以防止轮换问题。", - "apiKeyWarningAlertTitle": "API 密钥警告", - "googlePseInfo": "配置 Google Programmable Search Engine 以启用 Web Search。", - "antigravityProjectIdHint": "反重力云代码请求的可选覆盖。留空以使用 Google OAuth 期间发现的项目。", + "apiKeyInvalidAlert": "{count} 个API Key因认证失败被标记为无效:{connections}。轮换时将跳过它们。点击查看。", + "apiKeyInvalidAlertTitle": "API Key健康提醒", + "apiKeyWarningAlert": "{count} 个API Key在以下连接中处于警告状态:{connections}。请检查以防止轮换问题。", + "apiKeyWarningAlertTitle": "API Key警告", + "googlePseInfo": "配置Google Programmable Search Engine以启用Web Search。", + "antigravityProjectIdHint": "Antigravity云代码请求的可选覆盖。留空以使用Google OAuth期间发现的项目。", "antigravityClientProfileLabel": "客户端配置", - "antigravityClientProfileHint": "选择 OmniRoute 向 API 呈现的 Antigravity 客户端身份。", + "antigravityClientProfileHint": "选择OmniRoute向API呈现的Antigravity客户端身份。", "antigravityClientProfileIde": "IDE", "antigravityClientProfileCli": "CLI", - "codexFastTierActiveChip": "Codex Fast 层级已启用", + "codexFastTierActiveChip": "Codex Fast层级已启用", "tierFast": "快速", - "antigravityProjectIdLabel": "谷歌云项目 ID", - "antigravityProjectIdPlaceholder": "我的 GCP 项目 ID", + "antigravityProjectIdLabel": "谷歌云项目ID", + "antigravityProjectIdPlaceholder": "我的GCP项目ID", "grokWebCookiePlaceholder": "Grok Web Cookie", - "herokuBaseUrlHint": "Heroku 部署的 Base URL。", + "herokuBaseUrlHint": "Heroku部署的Base URL。", "hideEmail": "隐藏邮箱", - "imageProviders": "图像 Provider", + "imageProviders": "图像供应商", "videoProviders": "视频生成", "embeddingRerankProviders": "嵌入与重排序", "imagesShortLabel": "图像", - "llmProviders": "LLM Provider", - "localProviderApiKeyOptionalHint": "本地提供者的 API 密钥通常是可选的。", - "localProviderBaseUrlHint": "输入本地提供者的 Base URL。", - "localProviders": "本地 Provider", + "llmProviders": "LLM供应商", + "localProviderApiKeyOptionalHint": "本地供应商的API Key通常是可选的。", + "localProviderBaseUrlHint": "输入本地供应商的Base URL。", + "localProviders": "本地供应商", "maxConcurrentWholeNumberError": "最大并发必须是整数", - "m365TierLabel": "Copilot 层级", - "m365TierHint": "选择此连接使用的 Microsoft 365 Copilot 界面。Individual 是默认的消费级 BizChat;Education 和 Enterprise (work) 会加入其租户界面。", + "m365TierLabel": "Copilot层级", + "m365TierHint": "选择此连接使用的Microsoft 365 Copilot界面。Individual是默认的消费级BizChat;Education和Enterprise (work) 会加入其租户界面。", "m365TierIndividualOption": "个人 (默认)", "m365TierEduOption": "教育", "m365TierEnterpriseOption": "企业 / 工作", @@ -5510,132 +5510,132 @@ "tierOverrideFree": "免费", "tierOverrideCheap": "低成本", "tierOverridePremium": "高级", - "tierOverrideHelpText": "将此提供者固定到特定的路由层级,而不是让 OmniRoute 根据模型定价进行推断。", - "museSparkWebCookieHint": "从 Muse Spark Web 会话复制 Cookie。", + "tierOverrideHelpText": "将此供应商固定到特定的路由层级,而不是让OmniRoute根据模型定价进行推断。", + "museSparkWebCookieHint": "从Muse Spark Web会话复制Cookie。", "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie", "oauth": "OAuth", - "openCliTools": "打开 CLI Tools", + "openCliTools": "打开CLI Tools", "openSettings": "打开设置", - "openaiResponsesStoreDescription": "允许兼容的 Responses API 请求保留已存储的响应状态。", - "openaiResponsesStoreLabel": "OpenAI Responses 存储", - "perplexitySearchSharedKeyInfo": "Perplexity Search 可使用共享 key 配置。", - "perplexityWebCookieHint": "从 Perplexity Web 会话复制 Cookie。", + "openaiResponsesStoreDescription": "允许兼容的Responses API请求保留已存储的响应状态。", + "openaiResponsesStoreLabel": "OpenAI Responses存储", + "perplexitySearchSharedKeyInfo": "Perplexity Search可使用共享key配置。", + "perplexityWebCookieHint": "从Perplexity Web会话复制Cookie。", "perplexityWebCookiePlaceholder": "Perplexity Web Cookie", "personalAccessTokenLabel": "个人访问令牌", - "qoderPatHint": "输入 Qoder Personal Access Token。", + "qoderPatHint": "输入Qoder Personal Access Token。", "qoderPatPlaceholder": "Qoder PAT", "rateLimitOverridesSection": "速率限制覆盖", "rateLimitOverridesMaxConcurrentHint": "此连接的最大并发请求覆盖。覆盖账户级别的上限。", "rateLimitOverridesMaxConcurrentLabel": "最大并发(速率限制)", "rateLimitOverridesMinTimeHint": "请求之间的最小时间(毫秒)。覆盖默认速率限制器延迟。", "rateLimitOverridesMinTimeLabel": "最小间隔(毫秒)", - "rateLimitOverridesRpmHint": "此连接的每分钟最大请求数。覆盖提供者默认值。", + "rateLimitOverridesRpmHint": "此连接的每分钟最大请求数。覆盖供应商默认值。", "rateLimitOverridesRpmLabel": "RPM(请求/分钟)", - "rateLimitOverridesTpdHint": "此连接的每日最大令牌数。覆盖提供者默认值。", + "rateLimitOverridesTpdHint": "此连接的每日最大令牌数。覆盖供应商默认值。", "rateLimitOverridesTpdLabel": "TPD(令牌/天)", - "rateLimitOverridesTpmHint": "此连接的每分钟最大令牌数。覆盖提供者默认值。", + "rateLimitOverridesTpmHint": "此连接的每分钟最大令牌数。覆盖供应商默认值。", "rateLimitOverridesTpmLabel": "TPM(令牌/分钟)", - "refreshOauthTokenTitle": "刷新 OAuth Token", - "regionHint": "选择此 Provider 使用的区域。", + "refreshOauthTokenTitle": "刷新OAuth Token", + "regionHint": "选择此供应商使用的区域。", "regionLabel": "区域", - "removeThisKey": "移除此 key", + "removeThisKey": "移除此key", "routingTagsHint": "添加标签以便在路由规则中匹配此连接。", "routingTagsLabel": "路由标签", - "routingTagsPlaceholder": "例如 coding, fast, cheap", + "routingTagsPlaceholder": "例如coding, fast, cheap", "search": "搜索", - "searchEngineIdHint": "Google Programmable Search Engine 的 ID。", + "searchEngineIdHint": "Google Programmable Search Engine的ID。", "searchEngineIdLabel": "Search Engine ID", - "searchEngineIdRequired": "Search Engine ID 为必填项", - "searchProvider": "搜索提供者", - "searchProviderDesc": "按名称、能力或类别查找提供者。", - "searchProviders": "搜索 Provider", + "searchEngineIdRequired": "Search Engine ID为必填项", + "searchProvider": "搜索供应商", + "searchProviderDesc": "按名称、能力或类别查找供应商。", + "searchProviders": "搜索供应商", "searchByModel": "按模型搜索…", - "searchProvidersHeading": "搜索 Provider", - "searxngBaseUrlHint": "SearXNG 实例的 Base URL。", - "searxngInfo": "配置 SearXNG 以启用自托管 Web Search。", + "searchProvidersHeading": "搜索供应商", + "searxngBaseUrlHint": "SearXNG实例的Base URL。", + "searxngInfo": "配置SearXNG以启用自托管Web Search。", "sessionCookieLabel": "Session Cookie", "showEmail": "显示邮箱", - "snowflakeBaseUrlHint": "Snowflake Cortex 服务的 Base URL。", + "snowflakeBaseUrlHint": "Snowflake Cortex服务的Base URL。", "supportedEndpointAudio": "音频", "supportedEndpointChat": "聊天", "supportedEndpointEmbeddings": "嵌入", "supportedEndpointImages": "图像", "supportedEndpointsLabel": "支持的端点", - "tagGroupHint": "用于筛选和组织 Provider 的标签分组。", + "tagGroupHint": "用于筛选和组织供应商的标签分组。", "tagGroupLabel": "标签分组", "tagGroupPlaceholder": "标签分组占位符", "testModel": "测试模型", "testingModel": "正在测试模型", "toggleOffShort": "关", "toggleOnShort": "开", - "tokenExpiredBadge": "Token 已过期", - "tokenExpiredTitle": "Token 已过期", - "tokenExpiresSoonTitle": "Token 即将过期", + "tokenExpiredBadge": "Token已过期", + "tokenExpiredTitle": "Token已过期", + "tokenExpiresSoonTitle": "Token即将过期", "tokenShort": "Token", - "totalKeysRotating": "{count, plural, one {1 个 key 正在轮换} other {# 个 key 正在轮换}}", + "totalKeysRotating": "{count, plural, one {1 个key正在轮换} other {# 个key正在轮换}}", "unhideModel": "取消隐藏模型", - "upstreamProxyProviders": "上游代理 Provider", - "validationModelIdHint": "用于验证此提供者连接的模型 ID。", - "validationModelIdLabel": "验证模型 ID", - "validationModelIdPlaceholder": "输入用于测试的模型 ID", - "vertexServiceAccountPlaceholder": "粘贴 Service Account JSON({\"type\":\"service_account\"...})或 OAuth access_token", - "webCookieProviders": "Web Cookie Provider", + "upstreamProxyProviders": "上游代理供应商", + "validationModelIdHint": "用于验证此供应商连接的模型ID。", + "validationModelIdLabel": "验证模型ID", + "validationModelIdPlaceholder": "输入用于测试的模型ID", + "vertexServiceAccountPlaceholder": "粘贴Service Account JSON({\"type\":\"service_account\"...})或OAuth access_token", + "webCookieProviders": "Web Cookie供应商", "weeklyShort": "每周", - "xiaomiMimoBaseUrlHint": "小米 Mimo 服务的 Base URL。", - "globalCodexServiceMode": "全局 Codex 服务模式", + "xiaomiMimoBaseUrlHint": "小米Mimo服务的Base URL。", + "globalCodexServiceMode": "全局Codex服务模式", "connect": "连接", - "manualApiKey": "手动 API 密钥", - "addPat": "添加 PAT", - "experimentalOauth": "实验性 OAuth", + "manualApiKey": "手动API Key", + "addPat": "添加PAT", + "experimentalOauth": "实验性OAuth", "importAuth": "导入身份验证", - "importGrokAuth": "导入 Grok Build 身份验证", - "zedImportTitle": "从 Zed 钥匙串导入", - "zedImportDescription": "发现 Zed IDE 存储在操作系统钥匙串中的 AI 提供者凭据(OpenAI、Anthropic、Google、Mistral、xAI)并将其导入为连接。此机器上必须安装 Zed IDE。", - "zedImportButton": "__MISSING__:Import from Zed", - "zedImportFailed": "__MISSING__:Zed import failed", - "zedImportHint": "从 Zed 配置中导入 Provider。", - "zedImportNetworkError": "Zed 导入网络错误", - "zedImportNone": "没有可从 Zed 导入的内容", - "zedImportSuccess": "__MISSING__:Imported {credentials} credential(s) from Zed for {providers} provider(s)", - "zedImporting": "__MISSING__:Importing…", - "zedNoCredentials": "在钥匙串中未找到 Zed 凭据", - "zedUnsupportedCredentials": "找到 {count} 个钥匙串凭据,但没有与支持的提供者匹配的凭据", + "importGrokAuth": "导入Grok Build身份验证", + "zedImportTitle": "从Zed钥匙串导入", + "zedImportDescription": "发现Zed IDE存储在操作系统钥匙串中的AI供应商凭据(OpenAI、Anthropic、Google、Mistral、xAI)并将其导入为连接。此机器上必须安装Zed IDE。", + "zedImportButton": "从Zed导入", + "zedImportFailed": "Zed导入失败", + "zedImportHint": "从Zed配置中导入供应商。", + "zedImportNetworkError": "Zed导入网络错误", + "zedImportNone": "没有可从Zed导入的内容", + "zedImportSuccess": "Zed导入成功", + "zedImporting": "正在从Zed导入", + "zedNoCredentials": "在钥匙串中未找到Zed凭据", + "zedUnsupportedCredentials": "找到 {count} 个钥匙串凭据,但没有与支持的供应商匹配的凭据", "zedManualTitle": "手动导入令牌", - "zedManualDescription": "当 OmniRoute 在 Docker 中运行或密钥链不可用时使用此选项。粘贴 Zed 存储在 ~/.config/zed/settings.json 下的 API 密钥,或从 Zed AI 设置面板中复制它。", - "zedPasteApiKey": "粘贴 API 密钥…", + "zedManualDescription": "当OmniRoute在Docker中运行或密钥链不可用时使用此选项。粘贴Zed存储在 ~/.config/zed/settings.json 下的API Key,或从Zed AI设置面板中复制它。", + "zedPasteApiKey": "粘贴API Key…", "zedSaving": "正在保存…", "zedImportAction": "导入", "zedManualImportFailed": "手动导入失败", - "zedManualImportSuccess": "已从 Zed 导入 {provider} 令牌", - "grokImportTitle": "导入 Grok Build 身份验证", - "grokImportDescription": "导入您的 Grok Build ~/.grok/auth.json 文件。您可以通过在终端中运行 grok login 来获取它。", + "zedManualImportSuccess": "已从Zed导入 {provider} 令牌", + "grokImportTitle": "导入Grok Build身份验证", + "grokImportDescription": "导入您的Grok Build ~/.grok/auth.json 文件。您可以通过在终端中运行 grok login 来获取它。", "grokUploadFile": "上传文件", - "grokPasteJson": "粘贴 JSON", - "grokInvalidAuth": "这不是有效的 Grok Build auth.json file。应为包含 JWT 键的对象。", - "grokParseFailed": "无法解析 JSON", - "grokImportFailed": "导入 Grok Build 身份验证失败", - "grokImportSuccess": "Grok Build 连接导入成功", - "grokValidToken": "检测到有效的 Grok Build 令牌", - "grokRefreshIncluded": "已包含刷新令牌 — 已启用自动令牌续期", - "grokRefreshMissing": "未找到刷新令牌 — 请在令牌过期后重新导入", + "grokPasteJson": "粘贴JSON", + "grokInvalidAuth": "这不是有效的Grok Build auth.json file。应为包含JWT键的对象。", + "grokParseFailed": "无法解析JSON", + "grokImportFailed": "导入Grok Build身份验证失败", + "grokImportSuccess": "Grok Build连接导入成功", + "grokValidToken": "检测到有效的Grok Build令牌", + "grokRefreshIncluded": "已包含刷新令牌—已启用自动令牌续期", + "grokRefreshMissing": "未找到刷新令牌—请在令牌过期后重新导入", "grokConnectionName": "连接名称(可选)", "grokSaving": "正在保存…", "grokSaveConnection": "保存连接", - "freeTierProviders": "免费层提供者", + "freeTierProviders": "免费层供应商", "freeTierLabel": "有免费额度", - "freeTierProvidersDesc": "提供免费层的提供者——有些需要注册 API 密钥,有些无需任何凭证。", + "freeTierProvidersDesc": "提供免费层的供应商——有些需要注册API Key,有些无需任何凭证。", "providerSummaryAll": "全部", - "ideProviders": "IDE 提供者", - "ideProvidersDesc": "内置 AI 订阅的编辑器。使用提供者页面直接从 IDE 密钥链导入凭据。", - "noIdeProviders": "没有符合当前筛选条件的 IDE 提供者。", - "providerDetailFastTierTooltip": "默认对所有 Codex 连接应用 Codex Fast 层级", + "ideProviders": "IDE供应商", + "ideProvidersDesc": "内置AI订阅的编辑器。使用供应商页面直接从IDE密钥链导入凭据。", + "noIdeProviders": "没有符合当前筛选条件的IDE供应商。", + "providerDetailFastTierTooltip": "默认对所有Codex连接应用Codex Fast层级", "providerDetailFastDefaultLabel": "快速默认", "providerDetailBrowserManualConnect": "浏览器/手动连接", - "providerDetailAuthUrl": "认证 URL", - "providerDetailCallbackUrl": "回调 URL", - "providerDetailValidClaudeCredentialsFile": "有效的 Claude 凭据文件", + "providerDetailAuthUrl": "认证URL", + "providerDetailCallbackUrl": "回调URL", + "providerDetailValidClaudeCredentialsFile": "有效的Claude凭据文件", "providerDetailPathAutoDetectedAllOs": "路径按操作系统自动检测(Linux/Mac/Windows)。", - "providerDetailMyClaudeAccountPlaceholder": "我的Claude 账户", + "providerDetailMyClaudeAccountPlaceholder": "我的Claude账户", "providerDetailPathAutoDetected": "根据操作系统 (Linux/Mac) 自动检测路径。", "compatBlockedParamsPlaceholder": "thinking, … (逗号分隔)", "compatAllowedParamsPlaceholder": "reasoning, … (逗号分隔)", @@ -5648,339 +5648,339 @@ "claudeImportParseError": "解析错误", "claudeImportNoValidEntries": "没有可导入的有效条目", "webFetch": "网页抓取", - "webFetchTooltip": "从网页 URL 抽取内容的提供者(HTML → Markdown、抓取、截图)", - "webFetchProvidersHeading": "网页抓取提供者", - "compatibleProvidersDesc": "您托管或配置的 OpenAI 兼容和 Anthropic 兼容端点。将任意 OpenAI SDK 指向您的 URL 并在此处路由请求。", - "oauthProvidersDesc": "通过 OAuth 认证的提供者——登录一次,OmniRoute 自动处理令牌轮换。", - "webCookieProvidersDesc": "这些提供者使用浏览器网络会话、cookie 或网络令牌而不是 API 密钥。打开提供程序以添加所需的会话凭据。", - "apiKeyProvidersDesc": "标准 API 密钥提供者。添加密钥后,OmniRoute 代为路由、重试和限流。", + "webFetchTooltip": "从网页URL抽取内容的供应商(HTML → Markdown、抓取、截图)", + "webFetchProvidersHeading": "网页抓取供应商", + "compatibleProvidersDesc": "您托管或配置的OpenAI兼容和Anthropic兼容端点。将任意OpenAI SDK指向您的URL并在此处路由请求。", + "oauthProvidersDesc": "通过OAuth认证的供应商——登录一次,OmniRoute自动处理令牌轮换。", + "webCookieProvidersDesc": "这些供应商使用浏览器网络会话、cookie或网络令牌而不是API Key。打开提供程序以添加所需的会话凭据。", + "apiKeyProvidersDesc": "标准API Key供应商。添加密钥后,OmniRoute代为路由、重试和限流。", "noAuthProvidersDesc": "无需凭证的开放端点——无需注册即可立即使用。", "upstreamProxyProvidersDesc": "通过上游代理路由出站流量。适用于企业网络或流量审计场景。", - "webFetchProvidersDesc": "从网页 URL 抓取和提取内容的提供者。用于将实时网页数据注入提示词。", - "aggregatorsGatewaysDesc": "多提供者聚合器和 AI 网关,通过单一统一 API 对接数十个底层模型。", - "enterpriseCloudDesc": "企业级和云托管模型,提供增强 SLA、合规认证和专用容量。", - "cloudAgentProvidersDesc": "自主云代理,可执行长时间运行的任务,支持计划审批和实时状态跟踪。", + "webFetchProvidersDesc": "从网页URL抓取和提取内容的供应商。用于将实时网页数据注入提示词。", + "aggregatorsGatewaysDesc": "多供应商聚合器和AI网关,通过单一统一API对接数十个底层模型。", + "enterpriseCloudDesc": "企业级和云托管模型,提供增强SLA、合规认证和专用容量。", + "cloudAgentProvidersDesc": "自主云智能体,可执行长时间运行的任务,支持计划审批和实时状态跟踪。", "localProvidersDesc": "在您自己的硬件上运行的自托管模型。数据不会离开您的基础设施。", - "searchProvidersDesc": "网页和文档搜索提供者。可附加到 LLM 调用以实现检索增强生成(RAG)。", - "audioProvidersDesc": "文本转语音和语音转文本提供者,用于语音输入输出和音频转录管道。", - "embeddingRerankProvidersDesc": "向量嵌入和重排序提供者,用于语义搜索、RAG 管道和相似度评分。", - "imageProvidersDesc": "图像生成和视觉提供者——从文本创建图像或分析现有图像。", - "videoProvidersDesc": "视频生成提供者。从文本提示或图像创建短视频片段。", - "onboardingWizard": "提供者入职向导", + "searchProvidersDesc": "网页和文档搜索供应商。可附加到LLM调用以实现检索增强生成(RAG)。", + "audioProvidersDesc": "文本转语音和语音转文本供应商,用于语音输入输出和音频转录管道。", + "embeddingRerankProvidersDesc": "向量嵌入和重排序供应商,用于语义搜索、RAG管道和相似度评分。", + "imageProvidersDesc": "图像生成和视觉供应商——从文本创建图像或分析现有图像。", + "videoProvidersDesc": "视频生成供应商。从文本提示或图像创建短视频片段。", + "onboardingWizard": "供应商入职向导", "onboardingWizardShort": "入职向导", - "onboardingWizardDescription": "通过验证、持久性和即时连接测试连接 API 密钥、自定义兼容和 OAuth 提供者。", + "onboardingWizardDescription": "通过验证、持久性和即时连接测试连接API Key、自定义兼容和OAuth供应商。", "onboardingStepType": "类型", - "onboardingStepProvider": "提供者", + "onboardingStepProvider": "供应商", "onboardingStepCredentials": "凭证", "onboardingStepResult": "结果", - "onboardingTypeApiKeyTitle": "API 密钥提供者", - "onboardingTypeApiKeyText": "使用内置提供程序,例如 OpenAI、Anthropic、Gemini、Groq、Azure 等。", - "onboardingTypeCustomTitle": "自定义兼容提供者", - "onboardingTypeCustomText": "创建与 OpenAI、Anthropic 或 Claude Code 兼容的端点并添加其密钥。", - "onboardingTypeOAuthTitle": "OAuth 提供者", - "onboardingTypeOAuthText": "为编码提供者重用现有的 OAuth、设备代码或本地导入流程。", - "onboardingChooseOAuthProvider": "选择 OAuth 提供者", - "onboardingChooseApiKeyProvider": "选择 API 密钥提供者", - "onboardingChooseProviderDescription": "选择一个提供者,然后向导将指导您完成凭据和测试。", + "onboardingTypeApiKeyTitle": "API Key供应商", + "onboardingTypeApiKeyText": "使用内置提供程序,例如OpenAI、Anthropic、Gemini、Groq、Azure等。", + "onboardingTypeCustomTitle": "自定义兼容供应商", + "onboardingTypeCustomText": "创建与OpenAI、Anthropic或Claude Code兼容的端点并添加其密钥。", + "onboardingTypeOAuthTitle": "OAuth供应商", + "onboardingTypeOAuthText": "为编码供应商重用现有的OAuth、设备代码或本地导入流程。", + "onboardingChooseOAuthProvider": "选择OAuth供应商", + "onboardingChooseApiKeyProvider": "选择API Key供应商", + "onboardingChooseProviderDescription": "选择一个供应商,然后向导将指导您完成凭据和测试。", "onboardingChangeType": "变更类型", - "onboardingChangeProvider": "更换提供者", - "onboardingSearchProviders": "搜索提供者...", - "onboardingApiKeyOptional": "API 密钥可选", - "onboardingProviderConnected": "提供者已连接", + "onboardingChangeProvider": "更换供应商", + "onboardingSearchProviders": "搜索供应商...", + "onboardingApiKeyOptional": "API Key可选", + "onboardingProviderConnected": "供应商已连接", "onboardingProviderSavedWithWarnings": "供应商保存时带有警告", - "onboardingProviderFinished": "提供者入职完成", - "onboardingYourProviderConnection": "您的提供者连接", + "onboardingProviderFinished": "供应商入职完成", + "onboardingYourProviderConnection": "您的供应商连接", "onboardingTestPassed": "测试通过", "onboardingTestFailed": "测试失败", - "onboardingOpenProviderDetails": "开放提供者详细信息", - "onboardingTryInPlayground": "去游乐场试试", + "onboardingOpenProviderDetails": "开放供应商详细信息", + "onboardingTryInPlayground": "去演练场试试", "onboardingDefaultConnectionName": "{provider} 主要", - "onboardingTestingConnection": "测试提供者连接...", + "onboardingTestingConnection": "测试供应商连接...", "onboardingValidatingCredentials": "正在验证凭据...", - "onboardingSavingConnection": "正在保存提供者连接...", - "onboardingProviderFailed": "提供者加入失败", + "onboardingSavingConnection": "正在保存供应商连接...", + "onboardingProviderFailed": "供应商加入失败", "onboardingCreatingCompatibleProvider": "创建兼容的供应商...", - "onboardingSavingCompatibleConnection": "正在保存兼容的提供者连接...", - "onboardingCustomProviderFallbackName": "定制提供者", - "onboardingCustomProviderFailed": "自定义提供者加入失败", - "onboardingLoadingOAuthConnection": "正在加载 OAuth 连接...", - "onboardingOAuthNoConnectionFound": "OAuth 已完成,但未找到供应商连接。", - "onboardingOAuthFailed": "OAuth 登录失败", + "onboardingSavingCompatibleConnection": "正在保存兼容的供应商连接...", + "onboardingCustomProviderFallbackName": "定制供应商", + "onboardingCustomProviderFailed": "自定义供应商加入失败", + "onboardingLoadingOAuthConnection": "正在加载OAuth连接...", + "onboardingOAuthNoConnectionFound": "OAuth已完成,但未找到供应商连接。", + "onboardingOAuthFailed": "OAuth登录失败", "onboardingAddProvider": "添加 {provider}", "onboardingConnectionName": "连接名称", - "onboardingApiKeyOptionalLabel": "API 密钥(可选)", - "onboardingBaseUrlOverride": "基本 URL 覆盖", + "onboardingApiKeyOptionalLabel": "API Key(可选)", + "onboardingBaseUrlOverride": "基本URL覆盖", "onboardingBaseUrlOverrideHint": "可选。存储为providerSpecificData.baseUrl。", "onboardingRegion": "地区", - "onboardingSearchCx": "搜索 CX/引擎 ID", - "onboardingProviderSpecificIdPlaceholder": "可选的提供者特定 ID", + "onboardingSearchCx": "搜索CX/引擎ID", + "onboardingProviderSpecificIdPlaceholder": "可选的供应商特定ID", "onboardingCustomUserAgent": "自定义用户代理", "onboardingWorking": "工作…", "onboardingValidateSaveTest": "验证、保存和测试", "onboardingBack": "返回", - "onboardingCreateCustomCompatibleProvider": "创建自定义兼容提供者", - "onboardingCreateCustomCompatibleDescription": "该向导首先创建一个提供程序节点,然后存储并测试其 API 密钥连接。", + "onboardingCreateCustomCompatibleProvider": "创建自定义兼容供应商", + "onboardingCreateCustomCompatibleDescription": "该向导首先创建一个提供程序节点,然后存储并测试其API Key连接。", "onboardingProtocol": "协议", - "onboardingOpenAiCompatible": "兼容 OpenAI", - "onboardingAnthropicCompatible": "人类兼容", + "onboardingOpenAiCompatible": "兼容OpenAI", + "onboardingAnthropicCompatible": "Anthropic兼容", "onboardingClaudeCodeCompatible": "Claude Code兼容", - "onboardingProviderPrefix": "提供者前缀", - "onboardingProviderPrefixHint": "用于生成托管提供者 ID。", + "onboardingProviderPrefix": "供应商前缀", + "onboardingProviderPrefixHint": "用于生成托管供应商ID。", "onboardingChatPath": "聊天路径", "onboardingModelsPath": "模型路径", "onboardingCreateSaveTest": "创建、保存和测试", "onboardingConnectProvider": "连接 {provider}", - "onboardingOAuthFlowDescription": "OmniRoute 将打开该提供者的现有 OAuth 流程。登录后,向导将重新加载已保存的连接并运行与提供程序页面相同的连接测试。", - "onboardingStartOAuthFlow": "启动 OAuth 流程", + "onboardingOAuthFlowDescription": "OmniRoute将打开该供应商的现有OAuth流程。登录后,向导将重新加载已保存的连接并运行与提供程序页面相同的连接测试。", + "onboardingStartOAuthFlow": "启动OAuth流程", "onboardingProviderDescriptions": { - "360ai": "在 ai.360.cn 获取 API 密钥", - "agentrouter": "在 https://agentrouter.org/register 获取 $200 免费额度 — 无需信用卡。", - "agnes": "在 agnes-ai.com 获取 API 密钥", - "aimlapi": "免费层已暂停 (2026) — AI/ML API 现在仅支持按需付费(最低充值 $20);无循环免费额度。", + "360ai": "在ai.360.cn获取API Key", + "agentrouter": "在https://agentrouter.org/register获取 $200 免费额度—无需信用卡。", + "agnes": "在agnes-ai.com获取API Key", + "aimlapi": "免费层已暂停 (2026) —AI/ML API现在仅支持按需付费(最低充值 $20);无循环免费额度。", "ai21": "注册即送 $10 体验额度(有效期 3 个月),无需信用卡", - "alibaba": "使用 API 密钥连接阿里巴巴。", - "alibaba-cn": "使用 API 密钥连接阿里巴巴(中国)。", - "bailian-coding-plan": "使用 API 密钥连接阿里巴巴编码计划。", - "bedrock": "原生 Bedrock 集成:模型发现使用 Bedrock 基础模型和推理配置文件,而聊天使用区域 Bedrock Runtime Converse/ConverseStream API。", - "anthropic": "使用 API 密钥连接 Anthropic。", - "ant-ling": "__MISSING__:Register and create an API key at the Ant Ling API console (https://chat.ant-ling.com/open), then paste it here. OmniRoute routes chat traffic to https://api.ant-ling.com/v1/chat/completions; the provider is OpenAI-compatible and also exposes an Anthropic-compatible surface.", - "api-airforce": "从 https://panel.api.airforce 获取您的 API 密钥 — 兼容 OpenAI 的端点位于 https://api.airforce/v1", - "arcee-ai": "在 arcee.ai 获取 API 密钥", - "azure-ai": "Foundry 使用 OpenAI v1 接口,并将部署名称作为模型。OmniRoute 会将根资源 URL 规范化为 v1 chat 和 /models 端点。", - "azure-openai": "使用您的 Azure OpenAI API 密钥。Base URL 应为您的资源端点,例如 https://my-resource.openai.azure.com。", - "bai": "b.ai 兼容 OpenAI 的 LLM 网关(与 TheB.AI 不同)的 Bearer API 密钥。在 https://docs.b.ai 创建密钥,然后使用 https://api.b.ai/v1 作为兼容 OpenAI 的 base URL。", - "baichuan": "在 platform.baichuan-ai.com 获取 API 密钥", - "baidu": "在 console.bce.baidu.com 获取 API 密钥", - "qianfan": "使用来自百度智能云的千帆 API 密钥。默认端点为兼容 OpenAI 的 v2。", - "baseten": "$30 免费试用额度,用于 GPU 推理", - "bazaarlink": "在 https://bazaarlink.ai 创建免费 API 密钥 — 模型 'auto:free' 路由至零成本推理。所有模型均使用 provider/model-name 格式,例如 xiaomi/mimo-v2.5-pro。", - "black-forest-labs": "使用 API 密钥连接 Black Forest Labs。", - "blackbox": "免费层:无限制的基础聊天以及 Minimax-M2.5,无需信用卡", - "bluesminds": "在 https://www.bluesminds.com 获取您的 API 密钥 — 兼容 OpenAI 的端点位于 https://api.bluesminds.com/v1,提供每日免费额度。VIP 模型(Claude Opus 4.5、Gemini 2.5 Pro)消耗 pi 额度。", - "byteplus": "使用 API 密钥连接 BytePlus ModelArk。", + "alibaba": "使用API Key连接阿里巴巴。", + "alibaba-cn": "使用API Key连接阿里巴巴(中国)。", + "bailian-coding-plan": "使用API Key连接阿里巴巴编码计划。", + "bedrock": "原生Bedrock集成:模型发现使用Bedrock基础模型和推理配置文件,而聊天使用区域Bedrock Runtime Converse/ConverseStream API。", + "anthropic": "使用API Key连接Anthropic。", + "ant-ling": "使用API Key连接Ant-Ling。", + "api-airforce": "从https://panel.api.airforce获取您的API Key—兼容OpenAI的端点位于https://api.airforce/v1", + "arcee-ai": "在arcee.ai获取API Key", + "azure-ai": "Foundry使用OpenAI v1 接口,并将部署名称作为模型。OmniRoute会将根资源URL规范化为v1 chat和 /models端点。", + "azure-openai": "使用您的Azure OpenAI API Key。Base URL应为您的资源端点,例如https://my-resource.openai.azure.com。", + "bai": "b.ai兼容OpenAI的LLM网关(与TheB.AI不同)的Bearer API Key。在https://docs.b.ai创建密钥,然后使用https://api.b.ai/v1 作为兼容OpenAI的base URL。", + "baichuan": "在platform.baichuan-ai.com获取API Key", + "baidu": "在console.bce.baidu.com获取API Key", + "qianfan": "使用来自百度智能云的千帆API Key。默认端点为兼容OpenAI的v2。", + "baseten": "$30 免费试用额度,用于GPU推理", + "bazaarlink": "在https://bazaarlink.ai创建免费API Key—模型 'auto:free' 路由至零成本推理。所有模型均使用provider/model-name格式,例如xiaomi/mimo-v2.5-pro。", + "black-forest-labs": "使用API Key连接Black Forest Labs。", + "blackbox": "免费层:无限制的基础聊天以及Minimax-M2.5,无需信用卡", + "bluesminds": "在https://www.bluesminds.com获取您的API Key—兼容OpenAI的端点位于https://api.bluesminds.com/v1,提供每日免费额度。VIP模型(Claude Opus 4.5、Gemini 2.5 Pro)消耗pi额度。", + "byteplus": "使用API Key连接BytePlus ModelArk。", "bytez": "$1 免费额度,每 4 周刷新一次", - "cerebras": "免费试用:1M tokens/天、30K TPM、5 RPM — 无需信用卡。", - "charm-hyper": "在 https://hyper.charm.land 创建 API 密钥,然后将其作为 Bearer 令牌粘贴在此处。", - "chutes": "Chutes 兼容 OpenAI 的网关的 Bearer API 密钥。", - "clarifai": "Clarifai 在 /v2/ext/openai/v1 上公开了兼容 OpenAI 的 chat、responses 和 /models。公共/社区模型通常需要 PAT;应用范围的密钥仅适用于该应用内部的资源。", - "cloudflare-ai": "需要 API Token 和 Account ID(可在 dash.cloudflare.com 找到)", - "clova-studio": "__MISSING__:CLOVA Studio (HyperCLOVA X) is OpenAI-compatible on /v1/openai. OmniRoute probes /v1/openai/models and routes chat traffic to /v1/openai/chat/completions. Uses the current clovastudio.stream.ntruss.com host — the legacy clovastudio.apigw.ntruss.com endpoint is being deprecated.", - "codestral": "使用 API 密钥连接 Codestral。", - "cohere": "免费试用:每月 1,000 次 API 调用用于测试,无需信用卡", - "command-code": "从 Command Code 创建或复制 API 密钥,然后将其作为 Bearer 令牌粘贴在此处。", - "coze": "在 coze.com/open/api 获取 API 密钥", - "crof": "使用 API 密钥连接 CrofAI。", - "databricks": "使用 API 密钥连接 Databricks。", - "datarobot": "默认网关从 /genai/llmgw/catalog/ 编目活动模型。还支持使用部署 URL 进行直接兼容 OpenAI 的聊天请求。", - "deepinfra": "免费注册额度,用于 API 测试和模型探索", - "deepseek": "注册即送 5M 免费 token - 无需信用卡", - "dgrid": "在 https://dgrid.ai 创建 DGrid API 密钥,然后使用 https://api.dgrid.ai/v1 作为兼容 OpenAI 的 base URL。", - "dify": "从您的 Dify 实例获取 API 密钥。", - "digitalocean": "使用 API 密钥连接 DigitalOcean。", - "dit": "dit.ai (Distributed Intelligence Trade) 是一个兼容 OpenAI 的路由器/网关,具有动态按请求计费功能,在 https://api.dit.ai/v1 上公开 /v1/chat/completions。OmniRoute 使用 OpenAI 协议;支出/节省分析位于 dit.ai 仪表板中。", - "doubao": "在 console.volcengine.com 获取 API 密钥", - "empower": "Empower 在 https://app.empower.dev/api/v1 上公开了兼容 OpenAI 的聊天,并在 empower-functions 上支持工具调用。", - "factory": "在 https://app.factory.ai/settings/api-keys 获取您的 Factory API 密钥,然后将其作为 Bearer 令牌粘贴。兼容 OpenAI 的端点位于 https://api.factory.ai/v1。", - "fal-ai": "使用 API 密钥连接 Fal.ai。", - "featherless-ai": "提供免费层 — 无需信用卡", - "fenayai": "FenayAI 兼容 OpenAI 的网关的 Bearer API 密钥。", - "firecrawl": "使用 API 密钥连接 Firecrawl。", - "fireworks": "注册即可获得 $1 免费初始额度用于 API 测试", - "freeaiapikey": "适用于 40+ 种模型的折扣 API 代理,包括 GPT-5、Claude Opus 4.6、Claude Sonnet 4.6、Qwen 3.5。在 https://freeaiapikey.com/dashboard 获取您的 API 密钥。Base URL: https://freeaiapikey.com/v1.", - "freemodel-dev": "在 https://freemodel.dev 获取 $300 免费 API 额度 — 无需支付信息。兼容 OpenAI 的端点。提供 GPT-5.4 和 GPT-5.5 模型。", - "friendliai": "无服务器推理免费层 — 无需信用卡", - "gemini": "永久免费:Gemini 2.5 Flash 每天 1,500 次请求 — 无需信用卡,在 aistudio.google.com 获取密钥", - "gigachat": "使用 API 密钥连接 GigaChat (Sber)。", - "github-models": "在 github.com/settings/tokens 创建具有 'models: read' 作用域的 GitHub PAT", - "gitlab": "用于公共 Code Suggestions API 的 GitLab 个人访问令牌。不使用 gitlab.com 时请配置自托管 Base URL。", - "gitlawb-gmi": "从 Gitlawb Opengateway 控制面板获取您的 API 密钥。", - "gitlawb": "从 Gitlawb Opengateway 控制面板获取您的 API 密钥。", - "glm": "使用 API 密钥连接 GLM Coding。", - "glm-cn": "使用 API 密钥连接 GLM Coding (China)。", - "glmt": "预设 GLM 配置文件,具有更高的 Token 预算、启用思考功能以及更长的超时时间。", - "getgoapi": "使用 API 密钥连接 GoAPI。", - "groq": "免费层:30 RPM / 14.4K RPD — 无需信用卡", - "hackclub": "在 ai.hackclub.com 使用您的 Hack Club 账户登录。", - "haiper": "在 haiper.ai/haiper-api 获取 API 密钥", - "heroku": "使用 API 密钥连接 Heroku AI。", - "hcnsec": "在 api.hcnsec.cn 获取 API 密钥", - "huggingface": "适用于数千种模型(Whisper、VITS、SDXL…)的免费推理 API", + "cerebras": "免费试用:1M tokens/天、30K TPM、5 RPM—无需信用卡。", + "charm-hyper": "在https://hyper.charm.land创建API Key,然后将其作为Bearer令牌粘贴在此处。", + "chutes": "Chutes兼容OpenAI的网关的Bearer API Key。", + "clarifai": "Clarifai在 /v2/ext/openai/v1 上公开了兼容OpenAI的chat、responses和 /models。公共/社区模型通常需要PAT;应用范围的密钥仅适用于该应用内部的资源。", + "cloudflare-ai": "需要API Token和Account ID(可在dash.cloudflare.com找到)", + "clova-studio": "使用API Key连接Clova Studio。", + "codestral": "使用API Key连接Codestral。", + "cohere": "免费试用:每月 1,000 次API调用用于测试,无需信用卡", + "command-code": "从Command Code创建或复制API Key,然后将其作为Bearer令牌粘贴在此处。", + "coze": "在coze.com/open/api获取API Key", + "crof": "使用API Key连接CrofAI。", + "databricks": "使用API Key连接Databricks。", + "datarobot": "默认网关从 /genai/llmgw/catalog/ 编目活动模型。还支持使用部署URL进行直接兼容OpenAI的聊天请求。", + "deepinfra": "免费注册额度,用于API测试和模型探索", + "deepseek": "注册即送 5M免费token - 无需信用卡", + "dgrid": "在https://dgrid.ai创建DGrid API Key,然后使用https://api.dgrid.ai/v1 作为兼容OpenAI的base URL。", + "dify": "从您的Dify实例获取API Key。", + "digitalocean": "使用API Key连接DigitalOcean。", + "dit": "dit.ai (Distributed Intelligence Trade) 是一个兼容OpenAI的路由器/网关,具有动态按请求计费功能,在https://api.dit.ai/v1 上公开 /v1/chat/completions。OmniRoute使用OpenAI协议;支出/节省分析位于dit.ai看板中。", + "doubao": "在console.volcengine.com获取API Key", + "empower": "Empower在https://app.empower.dev/api/v1 上公开了兼容OpenAI的聊天,并在empower-functions上支持工具调用。", + "factory": "在https://app.factory.ai/settings/api-keys获取您的Factory API Key,然后将其作为Bearer令牌粘贴。兼容OpenAI的端点位于https://api.factory.ai/v1。", + "fal-ai": "使用API Key连接Fal.ai。", + "featherless-ai": "提供免费层—无需信用卡", + "fenayai": "FenayAI兼容OpenAI的网关的Bearer API Key。", + "firecrawl": "使用API Key连接Firecrawl。", + "fireworks": "注册即可获得 $1 免费初始额度用于API测试", + "freeaiapikey": "适用于 40+ 种模型的折扣API代理,包括GPT-5、Claude Opus 4.6、Claude Sonnet 4.6、Qwen 3.5。在https://freeaiapikey.com/dashboard获取您的API Key。Base URL: https://freeaiapikey.com/v1.", + "freemodel-dev": "在https://freemodel.dev获取 $300 免费API额度—无需支付信息。兼容OpenAI的端点。提供GPT-5.4 和GPT-5.5 模型。", + "friendliai": "无服务器推理免费层—无需信用卡", + "gemini": "永久免费:Gemini 2.5 Flash每天 1,500 次请求—无需信用卡,在aistudio.google.com获取密钥", + "gigachat": "使用API Key连接GigaChat (Sber)。", + "github-models": "在github.com/settings/tokens创建具有 'models: read' 作用域的GitHub PAT", + "gitlab": "用于公共Code Suggestions API的GitLab个人访问令牌。不使用gitlab.com时请配置自托管Base URL。", + "gitlawb-gmi": "从Gitlawb Opengateway控制面板获取您的API Key。", + "gitlawb": "从Gitlawb Opengateway控制面板获取您的API Key。", + "glm": "使用API Key连接GLM Coding。", + "glm-cn": "使用API Key连接GLM Coding (China)。", + "glmt": "预设GLM配置文件,具有更高的Token预算、启用思考功能以及更长的超时时间。", + "getgoapi": "使用API Key连接GoAPI。", + "groq": "免费层:30 RPM / 14.4K RPD—无需信用卡", + "hackclub": "在ai.hackclub.com使用您的Hack Club账户登录。", + "haiper": "在haiper.ai/haiper-api获取API Key", + "heroku": "使用API Key连接Heroku AI。", + "hcnsec": "在api.hcnsec.cn获取API Key", + "huggingface": "适用于数千种模型(Whisper、VITS、SDXL…)的免费推理API", "hyperbolic": "注册即送 $1-5 无服务器推理试用额度", - "watsonx": "watsonx 模型网关在 /ml/gateway/v1 下公开了兼容 OpenAI 的 /chat/completions 和 /models。", - "ideogram": "在 ideogram.ai/docs/api 获取 API 密钥", - "iflytek": "在 console.xfyun.cn 获取 API 密钥", - "inception": "__MISSING__:Inception Labs is OpenAI-compatible at https://api.inceptionlabs.ai/v1. mercury-2 is the first diffusion LLM (dLLM) in the catalog — 5-10x faster generation than comparable autoregressive models, with tool calling, json_mode, and structured outputs.", + "watsonx": "watsonx模型网关在 /ml/gateway/v1 下公开了兼容OpenAI的 /chat/completions和 /models。", + "ideogram": "在ideogram.ai/docs/api获取API Key", + "iflytek": "在console.xfyun.cn获取API Key", + "inception": "使用API Key连接Inception AI。", "inference-net": "注册即送 $25 免费额度,并提供研究资助", - "internlm": "__MISSING__:Free monthly quota ~1M input / 3M output tokens (~10 RPM)", - "jina-ai": "用于 Jina AI rerank API 的 Bearer API 密钥。", - "jina-reader": "使用 API 密钥连接 Jina Reader。", - "kenari": "Kenari 在 https://kenari.id/v1/chat/completions 提供了兼容 OpenAI 的聊天补全端点,以及涵盖 Claude、GPT、DeepSeek、GLM、Kimi 等的实时 /v1/models 目录。OmniRoute 使用 OpenAI 协议并通过直通方式列出模型。", - "kie": "使用 API 密钥连接 KIE.AI。", - "kilo-gateway": "使用 API 密钥连接 Kilo Gateway。", - "kimi": "使用 API 密钥连接 Kimi。", - "kimi-coding-apikey": "使用 API 密钥连接 Kimi Coding (API Key)。", - "lambda-ai": "使用 API 密钥连接 Lambda AI。", - "laozhang": "使用 API 密钥连接 LaoZhang AI。", - "leonardo": "在 leonardo.ai/developer 获取 API 密钥", - "liquid": "在 liquid.ai 获取 API 密钥", - "llamagate": "使用 API 密钥连接 LlamaGate。", - "llm7": "无需 API 密钥即可使用(使用 'unused' 作为密钥)。在 token.llm7.io 获取免费 Token 以获得更高限制。", - "longcat": "免费:完成账户注册 + KYC 认证后一次性赠送 10M Token (LongCat-2.0)。仅限一次 — 非每日/每月定期额度。", - "maritalk": "使用 API 密钥连接 Maritalk。", - "meta-llama": "使用 API 密钥连接 Meta Llama API。", - "minimax-cn": "使用 API 密钥连接 Minimax (China)。", - "minimax": "使用 API 密钥连接 Minimax Coding。", + "internlm": "使用API Key连接InternLM。", + "jina-ai": "用于Jina AI rerank API的Bearer API Key。", + "jina-reader": "使用API Key连接Jina Reader。", + "kenari": "Kenari在https://kenari.id/v1/chat/completions提供了兼容OpenAI的聊天补全端点,以及涵盖Claude、GPT、DeepSeek、GLM、Kimi等的实时 /v1/models目录。OmniRoute使用OpenAI协议并通过直通方式列出模型。", + "kie": "使用API Key连接KIE.AI。", + "kilo-gateway": "使用API Key连接Kilo Gateway。", + "kimi": "使用API Key连接Kimi。", + "kimi-coding-apikey": "使用API Key连接Kimi Coding (API Key)。", + "lambda-ai": "使用API Key连接Lambda AI。", + "laozhang": "使用API Key连接LaoZhang AI。", + "leonardo": "在leonardo.ai/developer获取API Key", + "liquid": "在liquid.ai获取API Key", + "llamagate": "使用API Key连接LlamaGate。", + "llm7": "无需API Key即可使用(使用 'unused' 作为密钥)。在token.llm7.io获取免费Token以获得更高限制。", + "longcat": "免费:完成账户注册 + KYC认证后一次性赠送 10M Token (LongCat-2.0)。仅限一次—非每日/每月定期额度。", + "maritalk": "使用API Key连接Maritalk。", + "meta-llama": "使用API Key连接Meta Llama API。", + "minimax-cn": "使用API Key连接Minimax (China)。", + "minimax": "使用API Key连接Minimax Coding。", "mistral": "免费实验层级:对所有模型的速率限制访问,无需信用卡", - "modal": "Modal 通常在 /v1 上提供用户托管的 OpenAI 兼容应用。OmniRoute 将探测 /v1/models 并将聊天流量路由到 /v1/chat/completions。", - "modelscope": "通过 ModelScope API-Inference 提供的免费层级 — 需要阿里巴巴账号。", - "monsterapi": "在 monsterapi.ai 获取 API 密钥", - "moonshot": "使用 API 密钥连接 Moonshot AI。", - "morph": "免费层级:每月 250K 额度,$0", - "nanogpt": "使用 API 密钥连接 NanoGPT。", - "nebius": "注册即送约 $1 试用额度用于 API 测试", - "nlpcloud": "NLP Cloud 使用专有的聊天机器人 API,而非 OpenAI chat/completions。OmniRoute 将 OpenAI 消息适配为 input/context/history,并公开受支持聊天机器人模型的本地目录。", - "nomic": "在 atlas.nomic.ai 获取 API 密钥", - "nous-research": "Nous 公开了一个兼容 OpenAI 的 /v1 接口以及庞大的远程 /models 目录。/chat/completions 端点需要有效的 API 密钥以进行程序化推理。", + "modal": "Modal通常在 /v1 上提供用户托管的OpenAI兼容应用。OmniRoute将探测 /v1/models并将聊天流量路由到 /v1/chat/completions。", + "modelscope": "通过ModelScope API-Inference提供的免费层级—需要阿里巴巴账号。", + "monsterapi": "在monsterapi.ai获取API Key", + "moonshot": "使用API Key连接Moonshot AI。", + "morph": "免费层级:每月 250K额度,$0", + "nanogpt": "使用API Key连接NanoGPT。", + "nebius": "注册即送约 $1 试用额度用于API测试", + "nlpcloud": "NLP Cloud使用专有的聊天机器人API,而非OpenAI chat/completions。OmniRoute将OpenAI消息适配为input/context/history,并公开受支持聊天机器人模型的本地目录。", + "nomic": "在atlas.nomic.ai获取API Key", + "nous-research": "Nous公开了一个兼容OpenAI的 /v1 接口以及庞大的远程 /models目录。/chat/completions端点需要有效的API Key以进行程序化推理。", "novita": "注册即送 $0.50 试用额度(有效期约 1 年)", "nscale": "注册即送 $5 免费额度用于推理测试", - "nube": "使用 API 密钥连接 Nube.sh。", + "nube": "使用API Key连接Nube.sh。", "nvidia": "免费开发者访问权限:约 40 RPM,70+ 款模型(Kimi K2.5、GLM 4.7、DeepSeek V3.2...)", - "oci": "OCI 公开了兼容 OpenAI 的 chat 和 responses 端点。Project ID 在 OmniRoute 中是可选的,但 Responses 和智能体工作流可能需要它。", - "ollama-cloud": "使用 API 密钥连接 Ollama Cloud。", - "openadapter": "OpenAdapter 在 https://api.openadapter.in/v1/chat/completions 公开了一个兼容 OpenAI 的 chat completions 端点,聚合了 70+ 款开源模型(DeepSeek、Qwen、Kimi、MiniMax、GLM、Llama、Mistral、…)。OmniRoute 使用 OpenAI 协议。", - "openai": "使用 API 密钥连接 OpenAI。", - "opencode-go": "使用 API 密钥连接 OpenCode Go。", - "opencode-zen": "使用 API 密钥连接 OpenCode Zen。", - "openrouter": "带有 :free 后缀的免费模型($0/token)- 20 RPM / 200 RPD", - "openvecta": "注册即送免费额度,用于跨 LLM、嵌入和推理模型的 OpenAI 兼容推理", - "orcarouter": "在 https://www.orcarouter.ai 创建 API 密钥(以 sk-orca- 开头),然后将其作为 Bearer 令牌粘贴。兼容 OpenAI 的端点位于 https://api.orcarouter.ai/v1。", - "ovhcloud": "使用 API 密钥连接 OVHcloud AI。", - "perplexity": "使用 API 密钥连接 Perplexity。", - "piapi": "使用 API 密钥连接 PiAPI。", - "pioneer": "$75 免费使用额度 — 无需信用卡", - "plamo": "__MISSING__:PLaMo is OpenAI-compatible at https://api.platform.preferredai.jp/v1. Built by Preferred Networks and optimized for Japanese. Docs are primarily in Japanese.", - "poe": "Poe 在 https://api.poe.com/v1 上公开了兼容 OpenAI 的 chat 和 responses,并在 /usage/current_balance 上提供经过身份验证的余额查询。", - "pollinations": "免密钥免费层级:openai、openai-fast、openai-large、qwen-coder、mistral、deepseek、grok、gemini-flash-lite-3.1、perplexity-fast、perplexity-reasoning。高级模型(claude、gemini、midijourney)需要来自 enter.pollinations.ai 的 Pollinations API 密钥。", - "publicai": "需要 API 密钥 — 一次性注册额度,之后付费", - "puter": "在 puter.com/dashboard 获取令牌 → 复制 Auth Token", - "qiniu": "在 https://portal.qiniu.com/ai-inference/api-key 创建 Qiniu AI 推理 API 密钥,然后将其作为 Bearer 令牌粘贴在此处。兼容 OpenAI 的端点位于 https://api.qnaigc.com/v1,通过一个密钥代理 DeepSeek、Claude、Kimi 等多种模型。", - "recraft": "使用 API 密钥连接 Recraft。", - "reka": "Reka Chat 在 /v1 上兼容 OpenAI。OmniRoute 探测 /v1/models 并将聊天流量路由到 /v1/chat/completions。", - "requesty": "在 https://app.requesty.ai 创建 API 密钥,然后将其作为 Bearer 令牌粘贴在此处。兼容 OpenAI 的端点位于 https://router.requesty.ai/v1,并提供实时的 /v1/models 目录。", - "runwayml": "Runway 视频生成基于任务。OmniRoute 提交文生视频或图生视频作业,轮询 /v1/tasks/[id],并将完成的视频输出规范化为类似 OpenAI 的 /v1/videos/generations 响应。", + "oci": "OCI公开了兼容OpenAI的chat和responses端点。Project ID在OmniRoute中是可选的,但Responses和智能体工作流可能需要它。", + "ollama-cloud": "使用API Key连接Ollama Cloud。", + "openadapter": "OpenAdapter在https://api.openadapter.in/v1/chat/completions公开了一个兼容OpenAI的chat completions端点,聚合了 70+ 款开源模型(DeepSeek、Qwen、Kimi、MiniMax、GLM、Llama、Mistral、…)。OmniRoute使用OpenAI协议。", + "openai": "使用API Key连接OpenAI。", + "opencode-go": "使用API Key连接OpenCode Go。", + "opencode-zen": "使用API Key连接OpenCode Zen。", + "openrouter": "带有 :free后缀的免费模型($0/token)- 20 RPM / 200 RPD", + "openvecta": "注册即送免费额度,用于跨LLM、嵌入和推理模型的OpenAI兼容推理", + "orcarouter": "在https://www.orcarouter.ai创建API Key(以sk-orca- 开头),然后将其作为Bearer令牌粘贴。兼容OpenAI的端点位于https://api.orcarouter.ai/v1。", + "ovhcloud": "使用API Key连接OVHcloud AI。", + "perplexity": "使用API Key连接Perplexity。", + "piapi": "使用API Key连接PiAPI。", + "pioneer": "$75 免费使用额度—无需信用卡", + "plamo": "使用API Key连接Plamo。", + "poe": "Poe在https://api.poe.com/v1 上公开了兼容OpenAI的chat和responses,并在 /usage/current_balance上提供经过身份验证的余额查询。", + "pollinations": "免密钥免费层级:openai、openai-fast、openai-large、qwen-coder、mistral、deepseek、grok、gemini-flash-lite-3.1、perplexity-fast、perplexity-reasoning。高级模型(claude、gemini、midijourney)需要来自enter.pollinations.ai的Pollinations API Key。", + "publicai": "需要API Key—一次性注册额度,之后付费", + "puter": "在puter.com/dashboard获取令牌 → 复制Auth Token", + "qiniu": "在https://portal.qiniu.com/ai-inference/api-key创建Qiniu AI推理API Key,然后将其作为Bearer令牌粘贴在此处。兼容OpenAI的端点位于https://api.qnaigc.com/v1,通过一个密钥代理DeepSeek、Claude、Kimi等多种模型。", + "recraft": "使用API Key连接Recraft。", + "reka": "Reka Chat在 /v1 上兼容OpenAI。OmniRoute探测 /v1/models并将聊天流量路由到 /v1/chat/completions。", + "requesty": "在https://app.requesty.ai创建API Key,然后将其作为Bearer令牌粘贴在此处。兼容OpenAI的端点位于https://router.requesty.ai/v1,并提供实时的 /v1/models目录。", + "runwayml": "Runway视频生成基于任务。OmniRoute提交文生视频或图生视频作业,轮询 /v1/tasks/[id],并将完成的视频输出规范化为类似OpenAI的 /v1/videos/generations响应。", "sambanova": "注册即送 $5 免费额度(30 天有效期),无需信用卡", - "sap": "模型发现使用 AI_API_URL 上的 /v2/lm/scenarios/foundation-models/models。Chat 请求使用 deploymentUrl/chat/completions 并需要 AI-Resource-Group。", - "sarvam": "__MISSING__:Sarvam AI is OpenAI-compatible on /v1. OmniRoute probes /v1/models and routes chat traffic to /v1/chat/completions. Models are tuned for Indic languages.", - "scaleway": "新账户可获 1M 免费 Token — 符合 EU/GDPR 规范(巴黎),Qwen3 235B & Llama 70B", - "sensenova": "在 platform.sensenova.cn 获取 API 密钥", + "sap": "模型发现使用AI_API_URL上的 /v2/lm/scenarios/foundation-models/models。Chat请求使用deploymentUrl/chat/completions并需要AI-Resource-Group。", + "sarvam": "使用API Key连接Sarvam AI。", + "scaleway": "新账户可获 1M免费Token—符合EU/GDPR规范(巴黎),Qwen3 235B & Llama 70B", + "sensenova": "在platform.sensenova.cn获取API Key", "siliconflow": "身份验证后可获 $1 免费额度以及永久免费模型", - "snowflake": "使用 API 密钥连接 Snowflake Cortex。", - "sparkdesk": "在 console.xfyun.cn 获取 API 密钥", - "stability-ai": "使用 API 密钥连接 Stability AI。", - "stepfun": "在 platform.stepfun.com 获取 API 密钥", - "sumopod": "SumoPod 在 https://ai.sumopod.com/v1/chat/completions 提供了兼容 OpenAI 的 chat completions 端点,以及实时的 /v1/models 目录。OmniRoute 使用 OpenAI 协议并通过直通方式列出模型。", - "suno": "粘贴来自 suno.ai 的 session cookie(Clerk 认证)", - "synthetic": "使用 API 密钥连接 Synthetic。", - "tencent": "在 console.cloud.tencent.com 获取 API 密钥", - "thebai": "用于 TheB.AI 兼容 OpenAI 网关的 Bearer API 密钥。", - "tinyfish": "来自 agent.tinyfish.ai/api-keys 的 X-API-Key", - "together": "使用 API 密钥连接 Together AI。", - "tokenrouter": "TokenRouter 在 https://api.tokenrouter.com/v1/chat/completions 提供了兼容 OpenAI 的 chat completions 端点,以及可用的 /v1/models 目录。OmniRoute 使用 OpenAI 协议。", - "topaz": "使用 API 密钥连接 Topaz。", - "typhoon": "__MISSING__:Typhoon is OpenAI-compatible on /v1. Built by SCB 10X (Thailand); typhoon-v2.5-30b-a3b-instruct is a thai-first, multilingual model.", - "udio": "粘贴来自 udio.com 的 session cookie(Supabase 认证)", - "uncloseai": "无需身份验证。API 接受任何非空字符串作为标识密钥。", - "upstage": "使用 API 密钥连接 Upstage。", - "v0-vercel": "使用 API 密钥连接 v0 (Vercel)。", - "venice": "使用 API 密钥连接 Venice.ai。", - "vercel-ai-gateway": "使用 API 密钥连接 Vercel AI Gateway。", - "vertex": "提供 Service Account JSON 或 OAuth access_token", - "vertex-partner": "提供用于 Vertex AI 合作伙伴模型的相同 Service Account JSON。", - "volcengine": "使用 API 密钥连接 Volcengine。", - "voyage-ai": "用于 Voyage AI embeddings 和 rerank API 的 Bearer API 密钥。", - "wafer": "来自 https://wafer.ai 的 API 密钥", - "wandb": "使用 API 密钥连接 Weights & Biases Inference。", - "writer": "__MISSING__:Writer Palmyra is OpenAI-compatible at https://api.writer.com/v1. palmyra-x5 offers a 1M-token context window.", - "x5lab": "X5Lab 在 https://api.x5lab.dev/v1/chat/completions 提供了兼容 OpenAI 的 chat completions 端点,以及实时的 /v1/models 目录。OmniRoute 使用 OpenAI 协议并通过直通方式列出模型。", - "xai": "使用 API 密钥连接 xAI (Grok)。", - "xiaomi-mimo": "使用 API 密钥连接 Xiaomi MiMo。", - "yi": "在 platform.lingyiwanwu.com 获取 API 密钥", - "zai": "来自 https://open.bigmodel.cn/usercenter/apikeys 的 API 密钥", - "zenmux": "ZenMux 在 /api/v1/chat/completions 提供了兼容 OpenAI 的 chat completions 端点,以及 Anthropic Messages (/api/anthropic/v1/messages) 和 Google Gemini (/api/vertex-ai) 协议接口。OmniRoute 使用 OpenAI 协议。", - "galadriel": "使用 API 密钥连接 Galadriel。", + "snowflake": "使用API Key连接Snowflake Cortex。", + "sparkdesk": "在console.xfyun.cn获取API Key", + "stability-ai": "使用API Key连接Stability AI。", + "stepfun": "在platform.stepfun.com获取API Key", + "sumopod": "SumoPod在https://ai.sumopod.com/v1/chat/completions提供了兼容OpenAI的chat completions端点,以及实时的 /v1/models目录。OmniRoute使用OpenAI协议并通过直通方式列出模型。", + "suno": "粘贴来自suno.ai的session cookie(Clerk认证)", + "synthetic": "使用API Key连接Synthetic。", + "tencent": "在console.cloud.tencent.com获取API Key", + "thebai": "用于TheB.AI兼容OpenAI网关的Bearer API Key。", + "tinyfish": "来自agent.tinyfish.ai/api-keys的X-API-Key", + "together": "使用API Key连接Together AI。", + "tokenrouter": "TokenRouter在https://api.tokenrouter.com/v1/chat/completions提供了兼容OpenAI的chat completions端点,以及可用的 /v1/models目录。OmniRoute使用OpenAI协议。", + "topaz": "使用API Key连接Topaz。", + "typhoon": "使用API Key连接Typhoon AI。", + "udio": "粘贴来自udio.com的session cookie(Supabase认证)", + "uncloseai": "无需身份验证。API接受任何非空字符串作为标识密钥。", + "upstage": "使用API Key连接Upstage。", + "v0-vercel": "使用API Key连接v0 (Vercel)。", + "venice": "使用API Key连接Venice.ai。", + "vercel-ai-gateway": "使用API Key连接Vercel AI Gateway。", + "vertex": "提供Service Account JSON或OAuth access_token", + "vertex-partner": "提供用于Vertex AI合作伙伴模型的相同Service Account JSON。", + "volcengine": "使用API Key连接Volcengine。", + "voyage-ai": "用于Voyage AI embeddings和rerank API的Bearer API Key。", + "wafer": "来自https://wafer.ai的API Key", + "wandb": "使用API Key连接Weights & Biases Inference。", + "writer": "使用API Key连接Writer。", + "x5lab": "X5Lab在https://api.x5lab.dev/v1/chat/completions提供了兼容OpenAI的chat completions端点,以及实时的 /v1/models目录。OmniRoute使用OpenAI协议并通过直通方式列出模型。", + "xai": "使用API Key连接xAI (Grok)。", + "xiaomi-mimo": "使用API Key连接Xiaomi MiMo。", + "yi": "在platform.lingyiwanwu.com获取API Key", + "zai": "来自https://open.bigmodel.cn/usercenter/apikeys的API Key", + "zenmux": "ZenMux在 /api/v1/chat/completions提供了兼容OpenAI的chat completions端点,以及Anthropic Messages (/api/anthropic/v1/messages) 和Google Gemini (/api/vertex-ai) 协议接口。OmniRoute使用OpenAI协议。", + "galadriel": "使用API Key连接Galadriel。", "predibase": "$25 免费试用额度(30 天有效期)", - "chenzk": "兼容 OpenAI 的网关,在 chenzk.top 提供实时模型目录。", - "freepik": "使用 Freepik 的 Mystic API 生成图像。", - "freetheai": "免费的 OpenAI 兼容网关,支持直通模型。", - "g4f-gemini": "免费免密钥的 g4f.space Gemini 反向代理,限制为每分钟 5 次请求。", - "g4f-groq": "免费免密钥的 g4f.space Groq 反向代理,限制为每分钟 5 次请求。", - "g4f-nvidia": "免费免密钥的 g4f.space NVIDIA NIM 反向代理,限制为每分钟 5 次请求。", - "g4f-ollama": "来自 g4f.space 的免费免密钥托管 Ollama 网关,限制为每分钟 5 次请求。", - "g4f-pollinations": "免费免密钥的 g4f.space Pollinations 反向代理,限制为每分钟 5 次请求。", - "mixedbread": "使用 Mixedbread API 创建嵌入。", - "segmind": "使用 Segmind 的托管模型生成图像和视频。", - "amazon-q": "使用与 Kiro 相同的 AWS Builder ID 或导入的 refresh-token 流程,但保持 Amazon Q 连接独立。", - "antigravity": "使用现有的 OAuth 流程连接 Antigravity。", - "agy": "导入您的 Antigravity CLI (`agy`) 登录信息(粘贴/上传其令牌文件)、自动检测本地 CLI 登录,或使用 Google 登录。共享 Antigravity 后端(包括 Claude 模型)。", - "claude": "使用现有的 OAuth 流程连接 Claude Code。", - "cline": "使用现有的 OAuth 流程连接 Cline。", - "cursor": "使用现有的 OAuth 流程连接 Cursor IDE。", - "github": "使用现有的 OAuth 流程连接 GitHub Copilot。", - "gitlab-duo": "具有 ai_features + read_user 作用域的 OAuth 应用程序。在此 OmniRoute 实例上配置 GITLAB_DUO_OAUTH_CLIENT_ID 以及可选的 GITLAB_DUO_OAUTH_CLIENT_SECRET。", - "kilocode": "使用现有的 OAuth 流程连接 Kilo Code。", - "kimi-coding": "使用现有的 OAuth 流程连接 Kimi Coding。", - "kiro": "免费层:50 积分/月(约 25K–100K 令牌)。⚠️ Kiro 服务条款禁止使用第三方代理/测试框架。", - "codex": "使用现有的 OAuth 流程连接 OpenAI Codex。", - "qwen": "使用现有的 OAuth 流程连接 Qwen Code。" + "chenzk": "兼容OpenAI的网关,在chenzk.top提供实时模型目录。", + "freepik": "使用Freepik的Mystic API生成图像。", + "freetheai": "免费的OpenAI兼容网关,支持直通模型。", + "g4f-gemini": "免费免密钥的g4f.space Gemini反向代理,限制为每分钟 5 次请求。", + "g4f-groq": "免费免密钥的g4f.space Groq反向代理,限制为每分钟 5 次请求。", + "g4f-nvidia": "免费免密钥的g4f.space NVIDIA NIM反向代理,限制为每分钟 5 次请求。", + "g4f-ollama": "来自g4f.space的免费免密钥托管Ollama网关,限制为每分钟 5 次请求。", + "g4f-pollinations": "免费免密钥的g4f.space Pollinations反向代理,限制为每分钟 5 次请求。", + "mixedbread": "使用Mixedbread API创建嵌入。", + "segmind": "使用Segmind的托管模型生成图像和视频。", + "amazon-q": "使用与Kiro相同的AWS Builder ID或导入的refresh-token流程,但保持Amazon Q连接独立。", + "antigravity": "使用现有的OAuth流程连接Antigravity。", + "agy": "导入您的Antigravity CLI (`agy`) 登录信息(粘贴/上传其令牌文件)、自动检测本地CLI登录,或使用Google登录。共享Antigravity后端(包括Claude模型)。", + "claude": "使用现有的OAuth流程连接Claude Code。", + "cline": "使用现有的OAuth流程连接Cline。", + "cursor": "使用现有的OAuth流程连接Cursor IDE。", + "github": "使用现有的OAuth流程连接GitHub Copilot。", + "gitlab-duo": "具有ai_features + read_user作用域的OAuth应用程序。在此OmniRoute实例上配置GITLAB_DUO_OAUTH_CLIENT_ID以及可选的GITLAB_DUO_OAUTH_CLIENT_SECRET。", + "kilocode": "使用现有的OAuth流程连接Kilo Code。", + "kimi-coding": "使用现有的OAuth流程连接Kimi Coding。", + "kiro": "免费层:50 积分/月(约 25K–100K令牌)。⚠️ Kiro服务条款禁止使用第三方代理/测试框架。", + "codex": "使用现有的OAuth流程连接OpenAI Codex。", + "qwen": "使用现有的OAuth流程连接Qwen Code。" }, - "passthroughModelsDescription": "{provider} 接受供应商本机模型 ID。从 /models 导入或添加用于路由的自定义 ID。", - "bedrockModelsDescription": "Amazon Bedrock 模型的范围按 AWS 区域划分。从 /models 导入或添加在所选区域中启用的基岩模型 ID。", - "bedrockModelPlaceholder": "anthropic.Claudesonnet-4-6", - "addProviderSessionCookieTitle": "添加 {provider} 会话 cookie", + "passthroughModelsDescription": "{provider} 接受供应商本机模型ID。从 /models导入或添加用于路由的自定义ID。", + "bedrockModelsDescription": "Amazon Bedrock模型的范围按AWS区域划分。从 /models导入或添加在所选区域中启用的基岩模型ID。", + "bedrockModelPlaceholder": "anthropic.claude-sonnet-4-6", + "addProviderSessionCookieTitle": "添加 {provider} 会话cookie", "openWebProviderSite": "打开 {host}", "addProviderWebTokenTitle": "添加 {provider} 网络令牌", "addProviderConnectionTitle": "添加 {provider} 连接", "webTokenCredentialLabel": "网络会话令牌", "webNoAuthCredentialLabel": "无需任何凭证", - "webCookieCredentialHint": "所需 cookie:{credential}。粘贴您自己登录的 {provider} Web 会话中的 Cookie 标头值。请勿包含 Cookie: 前缀。", - "webTokenCredentialHint": "凭证:{credential}。粘贴您自己登录的 {provider} Web 会话中的令牌值,或者粘贴 DevTools HAR 导出(如果提供者支持)的令牌值。", - "webCookieEditHint": "留空以保留当前会话 cookie。所需 cookie:{credential}。", - "webTokenEditHint": "留空以保留当前的 ​​Web 会话令牌。凭证:{credential}。", + "webCookieCredentialHint": "所需cookie:{credential}。粘贴您自己登录的 {provider} Web会话中的Cookie标头值。请勿包含Cookie: 前缀。", + "webTokenCredentialHint": "凭证:{credential}。粘贴您自己登录的 {provider} Web会话中的令牌值,或者粘贴DevTools HAR导出(如果供应商支持)的令牌值。", + "webCookieEditHint": "留空以保留当前会话cookie。所需cookie:{credential}。", + "webTokenEditHint": "留空以保留当前的 ​​Web会话令牌。凭证:{credential}。", "webSessionGuideTitle": "如何获取会话凭证", - "webSessionGuideIntro": "{provider} 使用浏览器网络会话而不是 API 密钥。", - "webCookieRequiredCredential": "所需 cookie:{credential}", + "webSessionGuideIntro": "{provider} 使用浏览器网络会话而不是API Key。", + "webCookieRequiredCredential": "所需cookie:{credential}", "webTokenRequiredCredential": "所需令牌:{credential}", "webSessionGuideStep1": "在浏览器中登录 {provider}。", - "webSessionGuideStep2": "打开浏览器开发人员工具并检查 Web 应用程序发出的请求。", - "webSessionGuideStep3": "从提供者自己的域复制所需的凭据。对于 cookie,仅复制 Cookie 标头值并省略 Cookie:。", + "webSessionGuideStep2": "打开浏览器开发人员工具并检查Web应用程序发出的请求。", + "webSessionGuideStep3": "从供应商自己的域复制所需的凭据。对于cookie,仅复制Cookie标头值并省略Cookie:。", "webSessionGuideStep4": "将其粘贴到此处并检查连接。如果它停止工作,请重新登录并将其替换为新值。", - "webSessionSecurityHint": "将其视为密码:它可以访问您登录的网络帐户,直到其过期或被撤销。", + "webSessionSecurityHint": "将其视为密码:它可以访问您登录的网络帐户,直到其过期或已撤销。", "webNoAuthGuideTitle": "无需任何凭证", - "webNoAuthGuideBody": "{provider} 不需要 API 密钥或 cookie。保存连接以使用其免费 Web 端点。", + "webNoAuthGuideBody": "{provider} 不需要API Key或cookie。保存连接以使用其免费Web端点。", "webSessionCredentialValidationFailed": "会话凭据验证失败。重新登录,复制新的凭据,然后重试。", "checkCookie": "检查cookie", "checkWebToken": "检查令牌", "huggingchatLabel": "HuggingChat(免费)", - "huggingchatDesc": "通过 huggingface.co/chat 免费使用 LLM 聊天", - "poeWebLabel": "Poe 网页", - "poeWebDesc": "通过 poe.com 进行多模型聊天", + "huggingchatDesc": "通过huggingface.co/chat免费使用LLM聊天", + "poeWebLabel": "Poe网页", + "poeWebDesc": "通过poe.com进行多模型聊天", "veniceWebLabel": "威尼斯网络", - "veniceWebDesc": "隐私专注的 AI 聊天", + "veniceWebDesc": "隐私专注的AI聊天", "v0VercelWebLabel": "v0 Vercel Web", - "v0VercelWebDesc": "通过 v0.dev 的 AI 代码生成", + "v0VercelWebDesc": "通过v0.dev的AI代码生成", "kimiWebLabel": "Kimi Web", - "kimiWebDesc": "通过 www.kimi.com 访问 Moonshot AI 聊天(国际版,Connect-RPC API)", + "kimiWebDesc": "通过www.kimi.com访问Moonshot AI聊天(国际版,Connect-RPC API)", "doubaoWebLabel": "Dola Web", - "doubaoWebDesc": "通过 dola.com 访问字节跳动 AI 聊天", - "overrideBaseUrlAdvanced": "高级:覆盖基础 URL", - "overrideBaseUrlHint": "高级:将此内置提供者指向自定义端点。留空以使用默认值。", - "bulkAddFormatHintCloudflare": "每行一个密钥。格式:name|accountId|apiKey(Cloudflare 账户 ID + API 令牌)。", - "lmarenaWebCookieHint": "打开 arena.ai,登录,然后从网络请求中复制完整的 Cookie 请求头。包含 arena-auth-prod-v1.0 和 arena-auth-prod-v1.1(如果存在更多分块也一并包含),最好附带 cf_clearance。请勿仅粘贴空的 arena-auth-prod-v1 cookie。可选:如果 create-evaluation 仍返回 403,可提供 providerSpecificData.recaptchaV3Token。", + "doubaoWebDesc": "通过dola.com访问字节跳动AI聊天", + "overrideBaseUrlAdvanced": "高级:覆盖基础URL", + "overrideBaseUrlHint": "高级:将此内置供应商指向自定义端点。留空以使用默认值。", + "bulkAddFormatHintCloudflare": "每行一个密钥。格式:name|accountId|apiKey(Cloudflare账户ID + API令牌)。", + "lmarenaWebCookieHint": "打开arena.ai,登录,然后从网络请求中复制完整的Cookie请求标头。包含arena-auth-prod-v1.0 和arena-auth-prod-v1.1(如果存在更多分块也一并包含),最好附带cf_clearance。请勿仅粘贴空的arena-auth-prod-v1 cookie。可选:如果create-evaluation仍返回 403,可提供providerSpecificData.recaptchaV3Token。", "kimiOfficialSupporterBadge": "创始好友", - "kimiOfficialSupporterTooltip": "Kimi(Moonshot AI)是 OmniRoute 的创始开源好友", + "kimiOfficialSupporterTooltip": "Kimi(Moonshot AI)是OmniRoute的创始开源好友", "cheaperInferenceSupporterBadge": "开源好友", "cheaperInferenceSupporterTooltip": "Cheaper Inference 作为开源好友支持 OmniRoute", - "kimiPartnerLinkNote": "合作伙伴链接 — 支持 OmniRoute,您无需承担额外费用", + "kimiPartnerLinkNote": "合作伙伴链接—支持OmniRoute,您无需承担额外费用", "ccAliasSectionTitle": "__MISSING__:Expose in Claude Code (claude/…)", "ccAliasSectionHint": "__MISSING__:Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", "ccAliasProviderLevelLabel": "__MISSING__:Provider default", @@ -6006,7 +6006,7 @@ "enable": "启用", "disable": "禁用", "update": "更新", - "routingSettingsIntro": "控制您的请求如何路由、转换和发送给 AI 提供者。", + "routingSettingsIntro": "控制您的请求如何路由、转换和发送给AI供应商。", "routingOpDropParagraphContainsLabel": "丢弃段落(包含)", "routingOpDropParagraphStartsWithLabel": "丢弃段落(开头匹配)", "routingOpReplaceTextLabel": "替换文本", @@ -6016,29 +6016,29 @@ "routingOpAppendSystemBlockLabel": "在系统块末尾追加", "routingOpInjectBillingHeaderLabel": "注入计费头", "routingOpObfuscateWordsLabel": "混淆词语(ZWJ)", - "routingOpDropParagraphContainsDesc": "移除系统提示中包含任意指定子串的段落(以空行分割的文本块)。用于剥离 Anthropic 分类器会标记的第三方客户端指纹,例如 'github.com/anomalyco/opencode' 或 'docs.openwebui.com'。", + "routingOpDropParagraphContainsDesc": "移除系统提示中包含任意指定子串的段落(以空行分割的文本块)。用于剥离Anthropic分类器会标记的第三方客户端指纹,例如 'github.com/anomalyco/opencode' 或 'docs.openwebui.com'。", "routingOpDropParagraphStartsWithDesc": "移除以任一指定前缀开头的段落。用于剥离声明调用方客户端的身份行,例如 'You are OpenCode' 或 'You are Open WebUI'。", - "routingOpReplaceTextDesc": "用一个字面子串替换另一个字面子串。用于已知的触发短语 — 例如把 'Here is some useful information about the environment you are running in:' 改写为 'Environment context you are running in:'(经验证的触发短语)。", + "routingOpReplaceTextDesc": "用一个字面子串替换另一个字面子串。用于已知的触发短语—例如把 'Here is some useful information about the environment you are running in:' 改写为 'Environment context you are running in:'(经验证的触发短语)。", "routingOpReplaceRegexDesc": "替换匹配正则表达式的文本。当你需要字符类、可选空白或锚点等模式时使用。运行时会捕获语法错误的正则。", - "routingOpDropBlockContainsDesc": "移除整个系统块(而非仅段落),只要其文本包含任一指定子串。当一整块带指纹时使用,例如注入的 MCP 服务器描述。", - "routingOpPrependSystemBlockDesc": "在系统数组的开头插入一个新的文本块。用于添加 Anthropic 分类器期望的 SDK 身份声明 'You are a Claude agent, built on Anthropic's Claude Agent SDK.'。", + "routingOpDropBlockContainsDesc": "移除整个系统块(而非仅段落),只要其文本包含任一指定子串。当一整块带指纹时使用,例如注入的MCP服务器描述。", + "routingOpPrependSystemBlockDesc": "在系统数组的开头插入一个新的文本块。用于添加Anthropic分类器期望的SDK身份声明 'You are a Claude agent, built on Anthropic's Claude Agent SDK.'。", "routingOpAppendSystemBlockDesc": "在系统数组末尾追加一个新文本块。用于不必置于 [0] 位置的修饰性内容。", - "routingOpInjectBillingHeaderDesc": "在前置位置插入特殊的 'x-anthropic-billing-header: cc_version=...; cc_entrypoint=...; cch=...;' 文本块,用于通过 Anthropic 分类器校验。CC 桥接转发端点必须使用;原生 claude 提供者已自带计费行,在那里通常无需此操作。", + "routingOpInjectBillingHeaderDesc": "在前置位置插入特殊的 'x-anthropic-billing-header: cc_version=...; cc_entrypoint=...; cch=...;' 文本块,用于通过Anthropic分类器校验。Claude Code桥接转发端点必须使用;原生claude供应商已自带计费行,在那里通常无需此操作。", "routingOpObfuscateWordsDesc": "在每个指定词的首字母后插入零宽连字符,例如 'opencode' 变为 'o‍pencode'。视觉上对人类完全相同,但能绕过分类器的词匹配。作用于系统块、用户/助手消息以及工具描述。", "routingNeedlesHint": "子串列表。段落只要包含其中任一项即匹配。通过「添加条目」逐行添加。", "routingPrefixesHint": "字符串列表。段落以其中任一项开头即匹配(匹配前会去除前导空白)。", "routingCaseSensitiveHint": "开启时 'OpenCode' 与 'opencode' 视为不同字符串。关闭(默认)时忽略大小写。", - "routingMatchLiteralHint": "要查找的精确字面子串,不解析为正则 — . * ? 等特殊字符按字面处理。", + "routingMatchLiteralHint": "要查找的精确字面子串,不解析为正则— . * ? 等特殊字符按字面处理。", "routingReplacementTextHint": "替换字符串。留空则删除匹配项,周围文本保持不变。", "routingAllOccurrencesHint": "开启(默认)时替换所有出现位置;关闭时仅替换第一次匹配。", - "routingPatternHint": "JavaScript 正则表达式源,不要用斜杠包裹 — 直接写 'foo(.*)bar'。无法编译的模式将被服务端拒绝。", - "routingRegexFlagsHint": "JavaScript 正则修饰符(g = 全部匹配,i = 忽略大小写,s = 点匹配换行,m = 多行)。默认 'g'。", + "routingPatternHint": "JavaScript正则表达式源,不要用斜杠包裹—直接写 'foo(.*)bar'。无法编译的模式将被服务端拒绝。", + "routingRegexFlagsHint": "JavaScript正则修饰符(g = 全部匹配,i = 忽略大小写,s = 点匹配换行,m = 多行)。默认 'g'。", "routingBlockTextHint": "新系统块的完整文本。使用字面字符串;系统块仅存储文本。", "routingIdempotencyKeyHint": "可选。设置后,如果已有以该键开头的块存在,则跳过此操作,避免重试时重复插入。", - "routingBillingEntrypointHint": "作为 'cc_entrypoint=' 注入的值。Anthropic 接受 'sdk-cli'(Agent SDK)、'cli'(Claude Code CLI)或其他文档化的值。", + "routingBillingEntrypointHint": "作为 'cc_entrypoint=' 注入的值。Anthropic接受 'sdk-cli'(Agent SDK)、'cli'(Claude Code CLI)或其他文档化的值。", "routingBillingVersionFormatHint": "cc_version= 后 3 字符构建哈希的计算方式。'ex-machina' = sha256(CCH_SALT + 第一条用户消息字符 + 版本)(每条消息独立)。'omniroute-daystamp' = sha256(YYYY-MM-DD + 版本)(按天稳定)。", - "routingBillingCchAlgoHint": "5 字符 cch= 令牌的计算方式。'sha256-first-user' = 第一条用户消息文本的 sha256;'xxhash64-body' = 由请求体级签名稍后填充;'static-zero' = 字面占位符 '00000'。", - "routingObfuscateWordsHint": "要混淆的小写词语。ZWJ 插入对大小写不敏感,所以 'opencode' 也会匹配 'OpenCode' 与 'OPENCODE'。", + "routingBillingCchAlgoHint": "5 字符cch= 令牌的计算方式。'sha256-first-user' = 第一条用户消息文本的sha256;'xxhash64-body' = 由请求体级签名稍后填充;'static-zero' = 字面占位符 '00000'。", + "routingObfuscateWordsHint": "要混淆的小写词语。ZWJ插入对大小写不敏感,所以 'opencode' 也会匹配 'OpenCode' 与 'OPENCODE'。", "routingObfuscateTargetsHint": "扫描词语的请求体范围:系统块、用户/助手消息以及工具描述。", "routingObfuscateTargetsLabel": "目标", "routingSummarizeDropParagraphContains": "丢弃包含的段落:{items}", @@ -6049,9 +6049,9 @@ "routingSummarizePrependSystemBlock": "前置块:\"{text}\"", "routingSummarizeAppendSystemBlock": "追加块:\"{text}\"", "routingSummarizeInjectBillingHeader": "注入计费头(entrypoint={entrypoint},version={versionFormat},cch={cchAlgo})", - "routingSummarizeObfuscateWords": "通过 ZWJ 在 {targets} 中混淆 {count} 个词", - "routingDefaultAutoVariantLKGP": "上次正常的提供者", - "routingDefaultAutoVariantLKGPDesc": "上次正常的提供者", + "routingSummarizeObfuscateWords": "通过ZWJ在 {targets} 中混淆 {count} 个词", + "routingDefaultAutoVariantLKGP": "上次正常的供应商", + "routingDefaultAutoVariantLKGPDesc": "上次正常的供应商", "routingDefaultAutoVariantCoding": "代码场景质量优先", "routingDefaultAutoVariantCodingDesc": "代码场景质量优先", "routingDefaultAutoVariantFast": "低延迟路由", @@ -6067,17 +6067,17 @@ "routingOpDisabled": "已禁用", "routingOpStatusSeparator": "·", "resilienceSettingsIntro": "提供程序失败时自动重试、冷却和回退。", - "aiSettingsIntro": "用于思考预算、模型行为和压缩的 AI 特定设置。", + "aiSettingsIntro": "用于思考预算、模型行为和压缩的AI特定设置。", "systemPrompt": "系统提示", "thinkingBudget": "思考预算", "proxy": "代理", - "httpProxy": "HTTP 代理", + "httpProxy": "HTTP代理", "1proxy": "1proxy", "proxySubTabsAria": "代理设置分区", "requestBodyLimitTitle": "请求体大小限制", - "requestBodyLimitDescription": "解析请求体前允许的最大 API 载荷大小。专用上传路由仍至少保留其内置的 100 MB 限制。", + "requestBodyLimitDescription": "解析请求体前允许的最大API载荷大小。专用上传路由仍至少保留其内置的 100 MB限制。", "requestBodyLimitInputLabel": "请求体限制(MB)", - "requestBodyLimitEmptyError": "请输入 MB 限制值", + "requestBodyLimitEmptyError": "请输入MB限制值", "requestBodyLimitWholeNumberError": "请使用整数", "requestBodyLimitMinimumError": "最小值为 {min} MB", "requestBodyLimitMaximumError": "最大值为 {max} MB", @@ -6099,7 +6099,7 @@ "modelCatalogCacheTtlSaving": "__MISSING__:Saving...", "modelCatalogCacheTtlSave": "__MISSING__:Save", "modelCatalogCacheTtlCurrent": "__MISSING__:Current: {value} ms", - "mitmProxy": "MITM 代理", + "mitmProxy": "MITM代理", "pricing": "定价", "storage": "存储", "policies": "策略", @@ -6113,9 +6113,9 @@ "memoryTitle": "记忆", "memoryDesc": "跨会话持久化对话记忆", "memoryEnabled": "启用记忆", - "memoryEnabledDesc": "启用后,OmniRoute 会注入相关的历史上下文。", - "memoryTokenCostWarning": "注意:启用记忆功能后,OmniRoute 会在每个聊天请求中注入最多 {tokens} 个令牌的检索上下文——这会增加令牌使用量和成本。若要跳过特定请求的注入,请发送 \"x-omniroute-no-memory: true\" 请求头。", - "maxTokens": "最大 Tokens", + "memoryEnabledDesc": "启用后,OmniRoute会注入相关的历史上下文。", + "memoryTokenCostWarning": "注意:启用记忆功能后,OmniRoute会在每个聊天请求中注入最多 {tokens} 个令牌的检索上下文——这会增加令牌使用量和成本。若要跳过特定请求的注入,请发送 \"x-omniroute-no-memory: true\" 请求标头。", + "maxTokens": "最大Tokens", "retentionDays": "保留时长", "recent": "最近", "recentDesc": "按时间顺序的时间窗", @@ -6123,17 +6123,17 @@ "semanticDesc": "向量搜索", "hybrid": "混合", "hybridDesc": "最近 + 语义", - "skillsTitle": "技能", + "skillsTitle": "Skills", "skillsDesc": "供模型调用的工具", - "skillsEnabled": "启用技能", + "skillsEnabled": "启用Skills", "skillsEnabledDesc": "允许智能体触发函数。", - "skillsComingSoon": "技能市场即将推出。", - "memorySkillsTitle": "记忆与技能", + "skillsComingSoon": "Skills市场即将推出。", + "memorySkillsTitle": "记忆与Skills", "memorySkillsDesc": "持久化上下文与能力", "modelsDevTitle": "模型数据库", - "modelsDevDesc": "从 models.dev 自动同步定价、能力和规格", - "modelsDevEnabled": "启用 models.dev 同步", - "modelsDevEnabledDesc": "从开源的 models.dev 数据库获取模型定价、能力和规格", + "modelsDevDesc": "从models.dev自动同步定价、能力和规格", + "modelsDevEnabled": "启用models.dev同步", + "modelsDevEnabledDesc": "从开源的models.dev数据库获取模型定价、能力和规格", "modelsDevInterval": "同步间隔", "syncNow": "立即同步", "syncing": "同步中...", @@ -6141,38 +6141,38 @@ "never": "从未", "justNow": "刚才", "modelsDevStats": "同步统计", - "modelsDevStatsDesc": "当前 models.dev 数据覆盖情况", - "providers": "提供者", + "modelsDevStatsDesc": "当前models.dev数据覆盖情况", + "providers": "供应商", "modelsWithPricing": "已有定价的模型", "capabilities": "能力", "lastSyncCount": "上次同步数量", "lastSyncFull": "上次完整同步", "modelsDevInfo": "工作原理", - "modelsDevInfoDesc": "models.dev 是由 SST/OpenCode 团队维护的开源 AI 模型规格数据库,提供 100+ 提供者、4,000+ 模型的定价、能力、上下文限制和模态信息。", + "modelsDevInfoDesc": "models.dev是由SST/OpenCode团队维护的开源AI模型规格数据库,提供 100+ 供应商、4,000+ 模型的定价、能力、上下文限制和模态信息。", "modelsDevInfoResolution": "定价解析顺序(优先级从高到低):", "modelsDevInfoOrder": "用户覆盖 → models.dev → LiteLLM → 硬编码默认值", "systemTheme": "系统主题", "debugToggle": "启用调试模式", "logToolSourcesToggle": "记录工具来源", - "logToolSourcesDescription": "每个请求输出一行诊断日志,汇总工具数量以及 MCP/托管/客户端来源明细。", + "logToolSourcesDescription": "每个请求输出一行诊断日志,汇总工具数量以及MCP/托管/客户端来源明细。", "homePinProviderQuotaToHome": "将信息固定到首页", "homePinnedSectionsDesc": "选择要固定到主页顶部的板块。", - "homeProviderQuotaLimits": "提供者配额限制", - "homeProviderQuotaLimitsDesc": "将提供者配额状态容器(含全部刷新按钮)固定到首页顶部。", + "homeProviderQuotaLimits": "供应商配额限制", + "homeProviderQuotaLimitsDesc": "将供应商配额状态容器(含全部刷新按钮)固定到首页顶部。", "homeQuickStart": "快速入门", "homeQuickStartDesc": "在首页上显示快速入门面板。", - "homeProviderTopology": "提供者拓扑", - "homeProviderTopologyDesc": "在首页上显示提供者拓扑。", + "homeProviderTopology": "供应商拓扑", + "homeProviderTopologyDesc": "在首页上显示供应商拓扑。", "accountEmailVisibility": "账号邮箱可见性", - "accountEmailVisibilityDesc": "在提供者、组合、日志、配额和 Playground 页面显示完整账号邮箱。关闭后默认打码显示。", + "accountEmailVisibilityDesc": "在供应商、组合、日志、配额和Playground页面显示完整账号邮箱。关闭后默认打码显示。", "comboConfigMode": "组合配置模式", "comboConfigModeDesc": "选择组合创建和编辑对话框的组织方式。", "comboConfigModeGuided": "引导", "comboConfigModeGuidedDesc": "使用当前的分步组合构建器。", "comboConfigModeExpert": "专家", "comboConfigModeExpertDesc": "在单页上显示所有组合选项,并支持直接输入模型。", - "providerQuotaAutoRefresh": "提供者配额自动刷新", - "providerQuotaAutoRefreshDesc": "在保持打开状态时自动刷新提供者限制视图。", + "providerQuotaAutoRefresh": "供应商配额自动刷新", + "providerQuotaAutoRefreshDesc": "在保持打开状态时自动刷新供应商限制视图。", "providerQuotaAutoRefreshToggle": "自动刷新", "providerQuotaAutoRefreshToggleDesc": "在页面可见时每隔几分钟刷新一次配额视图。", "providerQuotaAutoRefreshInterval": "刷新间隔", @@ -6208,12 +6208,12 @@ "enableSystemPrompt": "启用系统提示", "systemPromptText": "系统提示文字", "autoDisableBannedAccounts": "自动禁用被封禁账户", - "autoDisableDescription": "若提供者连接返回特定的永久封禁信号(如 HTTP 403\"请验证您的账户\"),则将其永久标记为停用。这会将其从组合轮换中移除。", + "autoDisableDescription": "若供应商连接返回特定的永久封禁信号(如HTTP 403\"请验证您的账户\"),则将其永久标记为停用。这会将其从组合轮换中移除。", "autoDisableThreshold": "封禁阈值", "autoDisableThresholdDesc": "触发永久停用所需的连续封禁信号次数。", "customBannedSignals": "封禁关键词", "customBannedSignalsDesc": "触发永久封号检测的附加关键词。内置关键词始终生效。", - "customBannedSignalsPlaceholder": "例如 api key revoked", + "customBannedSignalsPlaceholder": "例如api key revoked", "noCustomBannedSignals": "无自定义关键词。仅内置关键词生效。", "resilienceStructureTitle": "弹性结构", "resilienceStructureDesc": "此页面仅配置行为。实时断路器状态显示在运行状况页面上。组合特定的重试和循环槽控制保留在组合设置上。", @@ -6221,7 +6221,7 @@ "maxThinkingTokens": "最大思考令牌", "enableProxy": "启用代理", "perKeyProxyEnabled": "启用按密钥代理分配", - "perKeyProxyEnabledDesc": "启用后,每个提供者连接可以使用自己的代理分配", + "perKeyProxyEnabledDesc": "启用后,每个供应商连接可以使用自己的代理分配", "proxyUrl": "代理网址", "pricingRates": "定价费率格式", "currentPricing": "当前定价概述", @@ -6257,12 +6257,12 @@ "themeSystem": "系统", "endpointTunnelVisibility": "端点隧道可见性", "endpointTunnelVisibilityDesc": "隐藏端点页面中的隧道控制项,但不改变隧道运行状态。", - "showCloudflareTunnel": "Cloudflare 快速隧道", - "showCloudflareTunnelDesc": "在端点页面显示 Cloudflare Quick Tunnel 控制项。", + "showCloudflareTunnel": "Cloudflare快速隧道", + "showCloudflareTunnelDesc": "在端点页面显示Cloudflare Quick Tunnel控制项。", "showTailscaleFunnel": "Tailscale Funnel", - "showTailscaleFunnelDesc": "在端点页面显示 Tailscale Funnel 控制项。", - "showNgrokTunnel": "ngrok 隧道", - "showNgrokTunnelDesc": "在端点页面显示 ngrok Tunnel 控制项。", + "showTailscaleFunnelDesc": "在端点页面显示Tailscale Funnel控制项。", + "showNgrokTunnel": "ngrok隧道", + "showNgrokTunnelDesc": "在端点页面显示ngrok Tunnel控制项。", "sidebarVisibility": "隐藏侧边栏项目", "sidebarVisibilityDesc": "可以隐藏任意侧边栏导航项,以减少视觉负担,但不会禁用任何功能", "sidebarVisibilityHint": "当某个侧边栏分组中的所有项目都被隐藏时,该分组会自动隐藏", @@ -6279,26 +6279,26 @@ "themeOrange": "橙色", "themeCyan": "青色", "whitelabeling": "品牌定制", - "whitelabelingDesc": "自定义应用名称和 Logo", + "whitelabelingDesc": "自定义应用名称和Logo", "appName": "应用名称", "appNameDesc": "显示在侧边栏和浏览器标签页中的名称", - "customLogo": "自定义 Logo URL", - "customLogoDesc": "你的自定义 Logo 图片地址", - "uploadLogo": "上传 Logo", + "customLogo": "自定义Logo URL", + "customLogoDesc": "你的自定义Logo图片地址", + "uploadLogo": "上传Logo", "resetLogo": "恢复默认", "logoPreview": "预览", - "customFavicon": "浏览器 Favicon", - "customFaviconDesc": "你的自定义 Favicon 地址(显示在浏览器标签页中)", - "uploadFavicon": "上传 Favicon", - "resetFavicon": "重置 Favicon", - "faviconPreview": "Favicon 预览", - "logoFileTooLarge": "Logo 文件大小必须小于 500KB", - "faviconFileTooLarge": "Favicon 文件大小必须小于 50KB", - "invalidLogoFileType": "文件类型无效。请上传 PNG、JPG、SVG、GIF 或 WebP。", - "invalidFaviconFileType": "文件类型无效。请上传 PNG、ICO、SVG、GIF 或 WebP。", + "customFavicon": "浏览器Favicon", + "customFaviconDesc": "你的自定义Favicon地址(显示在浏览器标签页中)", + "uploadFavicon": "上传Favicon", + "resetFavicon": "重置Favicon", + "faviconPreview": "Favicon预览", + "logoFileTooLarge": "Logo文件大小必须小于 500KB", + "faviconFileTooLarge": "Favicon文件大小必须小于 50KB", + "invalidLogoFileType": "文件类型无效。请上传PNG、JPG、SVG、GIF或WebP。", + "invalidFaviconFileType": "文件类型无效。请上传PNG、ICO、SVG、GIF或WebP。", "failedToReadFile": "读取文件失败", "startOnLogin": "登录时启动", - "startOnLoginDesc": "系统启动时自动启动 OmniRoute 并在后台托盘静默运行。", + "startOnLoginDesc": "系统启动时自动启动OmniRoute并在后台托盘静默运行。", "flushCache": "刷新缓存", "flushing": "正在刷新...", "size": "尺寸", @@ -6306,7 +6306,7 @@ "evictions": "驱逐", "loadingCacheStats": "正在加载缓存统计信息...", "globalProxy": "全局代理", - "globalProxyDesc": "为所有 API 调用配置全局出站代理。单独的提供者、组合和键可以覆盖此设置。", + "globalProxyDesc": "为所有API调用配置全局出站代理。单独的供应商、组合和键可以覆盖此设置。", "noGlobalProxy": "没有配置全局代理", "proxyPool": "代理池", "freePool": "免费池", @@ -6318,13 +6318,13 @@ "proxySubscriptionsTab": "订阅", "proxySubscription": { "error": { - "LOCAL_CORE_ENDPOINT_INVALID": "本地代理核心端点无效;已忽略 SS/VMess/Trojan/VLESS 节点。", - "NEEDS_CORE_NOT_CONFIGURED": "此订阅包含需要本地代理核心 (SS/VMess/Trojan/VLESS) 的节点;在配置本地核心 SOCKS5 端点之前,它们不会被路由。", + "LOCAL_CORE_ENDPOINT_INVALID": "本地代理核心端点无效;已忽略SS/VMess/Trojan/VLESS节点。", + "NEEDS_CORE_NOT_CONFIGURED": "此订阅包含需要本地代理核心 (SS/VMess/Trojan/VLESS) 的节点;在配置本地核心SOCKS5 端点之前,它们不会被路由。", "NO_USABLE_NODES": "订阅未产生可用节点 (http/https/socks5 或具有本地核心端点的节点)。" } }, "bulkHealthcheck": "批量健康检查", - "bulkHealthcheckDesc": "针对目标 URL 测试所有已配置代理,找出可用代理。", + "bulkHealthcheckDesc": "针对目标URL测试所有已配置代理,找出可用代理。", "healthcheckTesting": "测试中...", "healthcheckAll": "全部健康检查", "healthcheckFailed": "运行健康检查失败", @@ -6333,11 +6333,11 @@ "healthcheckWorking": "可用", "healthcheckFailedLabel": "失败", "healthcheckStatus": "状态", - "healthcheckProxyUrl": "代理 URL", + "healthcheckProxyUrl": "代理URL", "healthcheckLatency": "延迟", "proxyDocumentationScopeTitle": "代理作用域解析", - "proxyDocumentationScopeDescBefore": "OmniRoute 按优先级顺序解析出站代理:", - "proxyDocumentationScopeOrder": "组合 → 账户 → 提供者 → 全局", + "proxyDocumentationScopeDescBefore": "OmniRoute按优先级顺序解析出站代理:", + "proxyDocumentationScopeOrder": "组合 → 账户 → 供应商 → 全局", "proxyDocumentationScopeDescAfter": "。最具体的作用域优先。", "proxyDocumentationAddTitle": "添加自定义代理", "proxyDocumentationAddDescBefore": "转到", @@ -6347,20 +6347,20 @@ "proxyDocumentationBulkTitle": "批量导入格式", "proxyDocumentationBulkDesc": "管道符分隔的字段:", "proxyDocumentationSocks5DescBefore": "SOCKS5 代理默认禁用。设置", - "proxyDocumentationFreePoolDesc": "免费池选项卡聚合来自 1proxy、Proxifly 和 IPLocate 的代理。使用 ⊕ 测试并将代理提升到您的注册表中。只有通过连通性测试的代理才会被添加。", - "proxyDocumentationVercelRelayDescBefore": "Vercel Relay 是一个出站边缘中继,而不是入站隧道。部署后,LLM API 调用将通过 Vercel 的动态 IP 发送,绕过数据中心地理封锁和速率限制。中继由生成的密钥头保护", - "proxyDocumentationVercelRelayDescAfter": "您的 Vercel 令牌仅在部署期间使用,不会存储。", + "proxyDocumentationFreePoolDesc": "免费池选项卡聚合来自 1proxy、Proxifly和IPLocate的代理。使用 ⊕ 测试并将代理提升到您的注册表中。只有通过连通性测试的代理才会被添加。", + "proxyDocumentationVercelRelayDescBefore": "Vercel Relay是一个出站边缘中继,而不是入站隧道。部署后,LLM API调用将通过Vercel的动态IP发送,绕过数据中心地理封锁和速率限制。中继由生成的密钥头保护", + "proxyDocumentationVercelRelayDescAfter": "您的Vercel令牌仅在部署期间使用,不会存储。", "vercelRelayTokenRequired": "需要令牌", "vercelRelayDeployFailed": "部署失败", "vercelRelayTokenHint": "令牌仅在部署期间使用——从不存储。", - "denoRelayTokenRequired": "Deno Deploy 令牌为必填项", + "denoRelayTokenRequired": "Deno Deploy令牌为必填项", "denoRelayOrgDomainRequired": "组织域名为必填项", - "denoRelayDeployFailed": "Deno Deploy 失败", - "denoRelayTokenHint": "来自 console.deno.com → Organization → Settings → Organization Tokens 的组织令牌(前缀为 ddo_)。仅用于部署一次,绝不存储。", - "denoRelayOrgDomainHint": "您的 Deno Deploy 组织默认域名(例如 acme.deno.net)。中继将可通过 https://..deno.net 访问。", + "denoRelayDeployFailed": "Deno Deploy失败", + "denoRelayTokenHint": "来自console.deno.com → Organization → Settings → Organization Tokens的组织令牌(前缀为ddo_)。仅用于部署一次,绝不存储。", + "denoRelayOrgDomainHint": "您的Deno Deploy组织默认域名(例如acme.deno.net)。中继将可通过https://..deno.net访问。", "proxyFreePoolFilterProtocol": "按协议筛选", "proxyFreePoolProtocol": "协议", - "proxyFreePoolCountryPlaceholder": "国家(例如 US)", + "proxyFreePoolCountryPlaceholder": "国家(例如US)", "proxyFreePoolFilterCountry": "按国家筛选", "proxyFreePoolMinQualityPlaceholder": "最低质量", "proxyFreePoolMinQualityLabel": "最低质量分数", @@ -6398,32 +6398,32 @@ "globalSystemPrompt": "全局系统提示", "saved": "已保存", "beforePromptLabel": "提示词前置", - "beforePromptDesc": "注入到代理/提供者系统指令之前", - "beforePromptPlaceholder": "插入到代理/提供者提示词之前的指令...", + "beforePromptDesc": "注入到代理/供应商系统指令之前", + "beforePromptPlaceholder": "插入到代理/供应商提示词之前的指令...", "afterPromptLabel": "提示词后置", - "afterPromptDesc": "注入到代理/提供者系统指令之后", - "afterPromptPlaceholder": "插入到代理/提供者提示词之后的指令...", + "afterPromptDesc": "注入到代理/供应商系统指令之后", + "afterPromptPlaceholder": "插入到代理/供应商提示词之后的指令...", "chars": "{count} 字符", "thinkingBudgetTitle": "思考预算", - "thinkingBudgetDesc": "控制所有请求中 AI 推理令牌的使用", + "thinkingBudgetDesc": "控制所有请求中AI推理令牌的使用", "passthrough": "直通", "passthroughDesc": "没有变化——客户控制思维预算", "auto": "自动", - "autoDesc": "丢弃所有思考配置,由提供者自行决定", + "autoDesc": "丢弃所有思考配置,由供应商自行决定", "custom": "定制", - "customDesc": "为所有请求设置固定的 Token 预算", + "customDesc": "为所有请求设置固定的Token预算", "adaptive": "自适应", "adaptiveDesc": "根据请求复杂性调整预算", "effortNone": "无(0 Tokens)", "effortLow": "低(1K Tokens)", "effortMedium": "中(10K Tokens)", "effortHigh": "高(128K Tokens)", - "tokenBudget": "Token 预算", + "tokenBudget": "Token预算", "tokens": "Token", "baseEffortLevel": "基本努力水平", "adaptiveHint": "自适应模式根据消息计数、工具使用情况和提示长度从此基本级别进行扩展。", "requireLogin": "需要登录", - "requireLoginDesc": "当打开时,仪表板需要密码。当关闭时,无需登录即可访问。", + "requireLoginDesc": "当打开时,看板需要密码。当关闭时,无需登录即可访问。", "currentPassword": "当前密码", "enterCurrentPassword": "输入当前密码", "newPassword": "新密码", @@ -6436,41 +6436,41 @@ "errorOccurred": "发生错误", "updatePassword": "更新密码", "setPassword": "设置密码", - "apiEndpointProtection": "API 端点保护", - "requireAuthModels": "/models 需要 API 密钥", + "apiEndpointProtection": "API端点保护", + "requireAuthModels": "/models需要API Key", "requireAuthModelsDesc": "开启后,`/v1/models` 对未认证请求返回 404,从而阻止未授权用户发现模型。", "authModelHeading": "当前授权模型", - "authModelClient": "客户端 API 端点(/v1/*、/chat/*、/responses/*、/codex/*、/messages/*)需要 Bearer API 密钥。", - "authModelManagement": "管理端点(/dashboard、/api/*)需要仪表盘会话或管理凭据。", + "authModelClient": "客户端API端点(/v1/*、/chat/*、/responses/*、/codex/*、/messages/*)需要Bearer API Key。", + "authModelManagement": "管理端点(/dashboard、/api/*)需要看板会话或管理凭据。", "authModelPublic": "只有登录、健康检查和引导路由是公开的。", "bruteForceProtection": "登录暴力破解保护", - "bruteForceProtectionDesc": "在同一 IP 多次失败后,对 /api/auth/login 进行限流和锁定。", - "corsAllowedOrigins": "CORS 允许的源", - "corsAllowedOriginsDesc": "允许调用此服务器的浏览器来源列表,以逗号分隔。空列表 = 不允许浏览器 CORS 访问(服务器到服务器仍可用)。仅在开发环境使用 CORS_ALLOW_ALL=true 环境变量。", - "blockedProviders": "被阻止的提供者", - "blockedProvidersDesc": "在 `/v1/models` 响应中隐藏指定提供者。被隐藏的提供者不会出现在模型列表中。", - "providersBlocked": "{count} 个提供者/模型已屏蔽", + "bruteForceProtectionDesc": "在同一IP多次失败后,对 /api/auth/login进行限流和锁定。", + "corsAllowedOrigins": "CORS允许的源", + "corsAllowedOriginsDesc": "允许调用此服务器的浏览器来源列表,以逗号分隔。空列表 = 不允许浏览器CORS访问(服务器到服务器仍可用)。仅在开发环境使用CORS_ALLOW_ALL=true环境变量。", + "blockedProviders": "已阻止的供应商", + "blockedProvidersDesc": "在 `/v1/models` 响应中隐藏指定供应商。被隐藏的供应商不会出现在模型列表中。", + "providersBlocked": "{count} 个供应商/模型已屏蔽", "blockProviderTitle": "屏蔽 {provider}", "unblockProviderTitle": "取消屏蔽 {provider}", - "cliFingerprint": "CLI 指纹匹配", - "cliFingerprintDesc": "在代理请求时模拟原生 CLI 二进制的请求特征。会重新排列请求头和请求体字段,使其与官方 CLI 工具更一致,同时保留你的代理 IP。", - "cliFingerprintEnabled": "已有 {count} 个提供者启用了 CLI 指纹", + "cliFingerprint": "CLI指纹匹配", + "cliFingerprintDesc": "在代理请求时模拟原生CLI二进制的请求特征。会重新排列请求标头和请求体字段,使其与官方CLI工具更一致,同时保留你的代理IP。", + "cliFingerprintEnabled": "已有 {count} 个供应商启用了CLI指纹", "enableFingerprintTitle": "为 {provider} 启用指纹", "disableFingerprintTitle": "为 {provider} 禁用指纹", "systemTransforms": "系统块转换管道", - "systemTransformsDesc": "在转发之前,每个提供者订购的转换管道应用于请求正文。支持任何提供者 ID。", - "systemTransformsAddProvider": "添加提供者", - "systemTransformsAddProviderPlaceholder": "选择提供者...", - "systemTransformsAddProviderAllConfigured": "所有提供者均已配置", - "systemTransformsRemoveProvider": "删除提供者", - "systemTransformsNoProviders": "没有配置提供者。添加提供者即可开始。", + "systemTransformsDesc": "在转发之前,每个供应商订购的转换管道应用于请求正文。支持任何供应商ID。", + "systemTransformsAddProvider": "添加供应商", + "systemTransformsAddProviderPlaceholder": "选择供应商...", + "systemTransformsAddProviderAllConfigured": "所有供应商均已配置", + "systemTransformsRemoveProvider": "删除供应商", + "systemTransformsNoProviders": "没有配置供应商。添加供应商即可开始。", "systemTransformsOpMoveUp": "向上移动", "systemTransformsOpMoveDown": "下移", "systemTransformsOpDelete": "删除操作", "routingStrategy": "路由策略", "routingAdvancedGuideTitle": "高级路由指南", - "routingAdvancedGuideHint1": "需要可预测优先级时使用 Fill First,需要公平分配时使用 Round Robin,需要延迟弹性时使用 P2C。", - "routingAdvancedGuideHint2": "如果各提供者在质量或成本上差异明显,后台任务可优先考虑“成本优化”,需要均衡消耗时可从“最少使用”开始。", + "routingAdvancedGuideHint1": "需要可预测优先级时使用Fill First,需要公平分配时使用Round Robin,需要延迟弹性时使用P2C。", + "routingAdvancedGuideHint2": "如果各供应商在质量或成本上差异明显,后台任务可优先考虑“成本优化”,需要均衡消耗时可从“最少使用”开始。", "fillFirst": "优先填满", "fillFirstDesc": "按优先级顺序使用账户", "roundRobin": "轮询", @@ -6502,15 +6502,15 @@ "routingStrategyComboSummary": " 每个目标调用 {limit} 次后轮换组合。", "routingStrategyComboFallbackSummary": " 组合使用每个组合配置的策略(默认优先级/备用)。", "providerAccountRoutingTitle": "多账户路由", - "providerAccountRoutingDesc": "覆盖此提供者的全局账户策略(与 9router 保持一致)。", + "providerAccountRoutingDesc": "覆盖此供应商的全局账户策略(与 9router保持一致)。", "providerRoutingStrategy": "账户策略", "providerRoutingInheritGlobal": "继承全局默认值", "modelAliases": "模型别名", "modelAliasesTitle": "模型别名", "modelAliasesDesc": "使用精确匹配或通配符模式重映射模型名称。", "addCustomAlias": "添加自定义别名", - "deprecatedModelId": "已弃用的模型 ID", - "newModelId": "新模型 ID", + "deprecatedModelId": "已弃用的模型ID", + "newModelId": "新模型ID", "customAliases": "自定义别名", "builtInAliases": "内置别名", "backgroundDegradationTitle": "后台任务降级", @@ -6542,7 +6542,7 @@ "unknown": "未知", "systemActor": "系统", "ipAccessControl": "IP访问控制", - "ipAccessControlDesc": "阻止或允许特定 IP 地址", + "ipAccessControlDesc": "阻止或允许特定IP地址", "ipModeDisabled": "已禁用", "ipModeBlacklist": "黑名单", "ipModeWhitelist": "白名单", @@ -6551,7 +6551,7 @@ "ipAddressPlaceholder": "192.168.1.0/24 或 10.0.*.*", "block": "+ 屏蔽", "allow": "+ 允许", - "blocked": "已被阻止 ({count})", + "blocked": "已已阻止 ({count})", "allowed": "允许 ({count})", "temporaryBans": "临时禁令 ({count})", "minLeft": "还剩 {min}m", @@ -6564,15 +6564,15 @@ "details": "详情", "time": "时间", "fallbackChainsTitle": "后备链", - "fallbackChainsDesc": "定义每个模型的提供者后备顺序", + "fallbackChainsDesc": "定义每个模型的供应商后备顺序", "addChain": "+ 添加链", "modelName": "模型名称", "modelNamePlaceholder": "claude-sonnet-4-20250514", - "providersCommaSeparated": "提供者(用逗号分隔,按优先级排序)", + "providersCommaSeparated": "供应商(用逗号分隔,按优先级排序)", "providersCommaSeparatedPlaceholder": "anthropic, openai, gemini", "createChain": "创建链", - "noFallbackChains": "无后备链", - "noFallbackChainsDesc": "创建一条链路,用于定义某个模型的提供者回退顺序。", + "noFallbackChains": "暂无后备链", + "noFallbackChainsDesc": "创建一条链路,用于定义某个模型的供应商回退顺序。", "loadingFallbackChains": "正在加载后备链...", "deleteChainConfirm": "删除“{model}”的后备链?", "chainCreated": "为 {model} 创建的链", @@ -6580,8 +6580,8 @@ "failedCreateChain": "创建链失败", "failedDeleteChain": "删除链失败", "deleteChain": "删除链", - "fillModelAndProviders": "请填写模型名称和提供者", - "addAtLeastOneProvider": "添加至少一个提供者", + "fillModelAndProviders": "请填写模型名称和供应商", + "addAtLeastOneProvider": "添加至少一个供应商", "comboDefaultsTitle": "组合默认值", "comboDefaultsGuideTitle": "如何调整组合默认值", "comboDefaultsGuideHint1": "在低延迟流中保持较低的重试次数;仅增加长生成任务的超时。", @@ -6589,8 +6589,8 @@ "globalComboConfig": "全局组合配置", "moveUp": "上移", "moveDown": "下移", - "allProvidersAdded": "已添加所有提供者", - "noProvidersFound": "未找到提供者", + "allProvidersAdded": "已添加所有供应商", + "noProvidersFound": "未找到供应商", "defaultStrategy": "默认策略", "defaultStrategyDesc": "应用于没有明确策略的新组合", "comboStrategyAria": "组合策略", @@ -6602,19 +6602,19 @@ "retryDelayLabel": "重试延迟(毫秒)", "timeoutLabel": "超时(毫秒)", "healthCheck": "健康检查", - "healthCheckDesc": "预先检查提供者的可用性", + "healthCheckDesc": "预先检查供应商的可用性", "trackMetrics": "跟踪指标", "trackMetricsDesc": "记录每个组合请求指标", - "providerOverrides": "提供者覆盖", - "providerOverridesDesc": "覆盖每个提供者的超时和重试。提供者设置会覆盖全局默认设置。", + "providerOverrides": "供应商覆盖", + "providerOverridesDesc": "覆盖每个供应商的超时和重试。供应商设置会覆盖全局默认设置。", "providerMaxRetriesAria": "{provider} 最大重试次数", "providerTimeoutAria": "{provider} 超时毫秒", "removeProviderOverrideAria": "删除 {provider} 覆盖", - "selectProviderPlaceholder": "选择提供者...", - "searchProviderPlaceholder": "搜索提供者...", - "searchProviderAria": "搜索提供者", - "newProviderNamePlaceholder": "例如 google、openai...", - "newProviderNameAria": "新的提供者名称", + "selectProviderPlaceholder": "选择供应商...", + "searchProviderPlaceholder": "搜索供应商...", + "searchProviderAria": "搜索供应商", + "newProviderNamePlaceholder": "例如google、openai...", + "newProviderNameAria": "新的供应商名称", "retries": "重试", "ms": "毫秒", "saveComboDefaults": "保存组合默认值", @@ -6625,18 +6625,18 @@ "contextRelayHandoffThreshold": "交接阈值", "contextRelayMaxMessages": "摘要最大消息数", "contextRelaySummaryModel": "摘要模型", - "contextRelayProviderNote": "Context Relay 当前会为 Codex 账户生成交接摘要,并将这些值作为新的或未配置 combo 的全局默认值。", - "providerProfiles": "提供者策略配置", - "providerProfilesDesc": "为 OAuth(基于会话)和 API Key(计费型)提供者分别设置弹性策略。由于速率限制更低,OAuth 提供者通常采用更严格的阈值。", - "oauthProviders": "OAuth 提供者", - "apiKeyProviders": "API 密钥提供者", + "contextRelayProviderNote": "Context Relay当前会为Codex账户生成交接摘要,并将这些值作为新的或未配置combo的全局默认值。", + "providerProfiles": "供应商策略配置", + "providerProfilesDesc": "为OAuth(基于会话)和API Key(计费型)供应商分别设置弹性策略。由于速率限制更低,OAuth供应商通常采用更严格的阈值。", + "oauthProviders": "OAuth供应商", + "apiKeyProviders": "API Key供应商", "transientCooldown": "瞬时故障冷却", "rateLimitCooldown": "限流冷却", "maxBackoffLevel": "最大退避级别", "cbThreshold": "熔断阈值", "cbResetTime": "熔断重置时间", "rateLimiting": "速率限制", - "rateLimitingDesc": "API 密钥提供者会自动受到安全默认值的速率限制。限制是从响应标头中学习的,并随着时间的推移进行调整。", + "rateLimitingDesc": "API Key供应商会自动受到安全默认值的速率限制。限制是从响应标头中学习的,并随着时间的推移进行调整。", "defaultSafetyNet": "默认安全网", "rpm": "RPM", "minGap": "最小间隔", @@ -6688,7 +6688,7 @@ "hide": "隐藏", "backupRetentionDesc": "数据库快照会在还原之前自动创建,并且在数据更改时每 15 分钟自动创建一次。保留:24 小时 + 30 每日备份,智能轮换。", "loadingBackups": "正在加载备份...", - "noBackupsYet": "尚无可用的备份。当数据发生变化时,将自动创建备份。", + "noBackupsYet": "暂无可用备份。当数据发生变化时,将自动创建备份。", "backupsAvailable": "{count} 可用备份", "refresh": "刷新", "confirm": "确认?", @@ -6700,8 +6700,8 @@ "exportFailedWithError": "导出失败:{error}", "fullExportFailedWithError": "完全导出失败:{error}", "backupCreated": "创建备份:{file}", - "restoreSuccess": "恢复完成!共恢复 {connections} 个连接、{nodes} 个节点、{combos} 个组合、{apiKeys} 个 API 密钥。", - "importSuccess": "数据库导入完成!共导入 {connections} 个连接、{nodes} 个节点、{combos} 个组合、{apiKeys} 个 API 密钥。", + "restoreSuccess": "恢复完成!共恢复 {connections} 个连接、{nodes} 个节点、{combos} 个组合、{apiKeys} 个API Key。", + "importSuccess": "数据库导入完成!共导入 {connections} 个连接、{nodes} 个节点、{combos} 个组合、{apiKeys} 个API Key。", "minutesAgo": "{count} 分钟前", "hoursAgo": "{count} 小时前", "daysAgo": "{count} 天前", @@ -6715,7 +6715,7 @@ "errorDuringRestore": "恢复期间发生错误", "errorDuringImport": "导入时发生错误", "modelPricing": "模型定价", - "modelPricingDesc": "配置每个模型的成本费率 • 所有费率均以美元/100 万 Tokens 为单位", + "modelPricingDesc": "配置每个模型的成本费率 • 所有费率均以美元/100 万Tokens为单位", "pricingCoverage": "覆盖范围", "pricingAuth": "认证", "pricingSort": "排序", @@ -6731,8 +6731,8 @@ "pricingFilteredFrom": "(从 {count} 个中筛选)", "pricingShowMoreProviders": "显示另外 {count} 个(还剩 {remaining} 个)", "modelOverridesTitle": "模型覆盖", - "modelOverridesDesc": "覆盖路由和请求整形使用的 provider/model 能力。目标使用与 combo 相同的 provider/model 形式。", - "searchModelOverrideTargets": "搜索 provider/model...", + "modelOverridesDesc": "覆盖路由和请求整形使用的provider/model能力。目标使用与combo相同的provider/model形式。", + "searchModelOverrideTargets": "搜索provider/model...", "selectedModel": "选中的模型", "configured": "已配置", "none": "无", @@ -6746,67 +6746,67 @@ "modelOverrideRemoveFailed": "移除模型覆盖失败", "registry": "登记处", "priced": "定价", - "searchProvidersModels": "搜索提供者或模型...", + "searchProvidersModels": "搜索供应商或模型...", "showAll": "显示全部", - "noProvidersMatch": "没有与您的搜索匹配的提供者。", + "noProvidersMatch": "没有与您的搜索匹配的供应商。", "howPricingWorks": "定价如何运作", "cacheWrite": "缓存写入", "unsaved": "未保存", - "resetDefaults": "__MISSING__:Reset defaults", - "saveProvider": "保存提供者", + "resetDefaults": "重置默认值", + "saveProvider": "保存供应商", "model": "模型", "models": "模型", - "moreProviders": "{count} 更多提供者", + "moreProviders": "{count} 更多供应商", "withPricing": "已配置定价", "policiesCircuitBreakers": "策略与断路器", "activeIssuesDetected": "检测到活跃问题", "off": "关闭", "resetPricingConfirm": "将 {provider} 的所有定价重置为默认值?", "pricingDescInput": "输入:发送到模型的令牌", - "pricingDescOutput": "输出:生成的 Tokens", + "pricingDescOutput": "输出:生成的Tokens", "pricingDescCached": "缓存:重用输入(约输入率的 50%)", - "pricingDescReasoning": "推理:思考 Tokens(默认回退到输出费率)", + "pricingDescReasoning": "推理:思考Tokens(默认回退到输出费率)", "pricingDescCacheWrite": "缓存写入:创建缓存条目(回退到输入)", - "pricingDescFormula": "成本 = (输入 × 输入率) + (输出 × 输出率) + (缓存 × 缓存率) 每百万 Tokens。", + "pricingDescFormula": "成本 = (输入 × 输入率) + (输出 × 输出率) + (缓存 × 缓存率) 每百万Tokens。", "pricingSettingsTitle": "定价设置", "totalModels": "模型总数", "active": "活跃", "costCalculation": "成本计算", "costCalculationDesc": "成本是根据为每个模型配置的令牌使用情况和定价费率计算的。", "pricingFormat": "定价格式", - "pricingFormatDesc": "所有费率均以美元/100 万 Tokens 为单位(每百万 Tokens 美元)。", - "tokenTypes": "Token 类型", - "inputTokenDesc": "标准提示 Tokens", - "outputTokenDesc": "补全 / 响应 Tokens", - "cachedTokenDesc": "缓存输入 Tokens(通常按输入费率的 50% 计)", - "reasoningTokenDesc": "特殊推理 / 思考 Tokens(回退到输出费率)", - "cacheCreationTokenDesc": "用于创建缓存条目的 Tokens(回退到输入费率)", + "pricingFormatDesc": "所有费率均以美元/100 万Tokens为单位(每百万Tokens美元)。", + "tokenTypes": "Token类型", + "inputTokenDesc": "标准提示Tokens", + "outputTokenDesc": "补全 / 响应Tokens", + "cachedTokenDesc": "缓存输入Tokens(通常按输入费率的 50% 计)", + "reasoningTokenDesc": "特殊推理 / 思考Tokens(回退到输出费率)", + "cacheCreationTokenDesc": "用于创建缓存条目的Tokens(回退到输入费率)", "customPricingNote": "你可以覆盖特定模型的默认定价。自定义覆盖会优先于自动检测到的定价。", "editPricing": "编辑定价", "viewFullDetails": "查看完整详情", "themeCoral": "珊瑚色", "adaptiveVolumeRouting": "自适应流量路由", - "adaptiveVolumeRoutingDesc": "根据实时负载量和吞吐压力,动态调整各提供者连接承载的流量。", - "lkgpToggleTitle": "最后已知良好提供者(LKGP)", - "lkgpToggleDesc": "启用后,路由器会记住上一次成功返回响应的提供者,并在后续请求中优先尝试它。", + "adaptiveVolumeRoutingDesc": "根据实时负载量和吞吐压力,动态调整各供应商连接承载的流量。", + "lkgpToggleTitle": "最后已知良好供应商(LKGP)", + "lkgpToggleDesc": "启用后,路由器会记住上一次成功返回响应的供应商,并在后续请求中优先尝试它。", "echoRequestedModelTitle": "在响应中回显请求的模型名称", - "echoRequestedModelDesc": "启用后,响应的 `model` 字段将回显客户端请求的别名或组合名称,而不是上游模型名称。这可以解决严格的客户端(例如 Claude Desktop)因响应中的模型与请求不匹配而拒绝响应的问题。", + "echoRequestedModelDesc": "启用后,响应的 `model` 字段将回显客户端请求的别名或组合名称,而不是上游模型名称。这可以解决严格的客户端(例如Claude Desktop)因响应中的模型与请求不匹配而拒绝响应的问题。", "webSearchRouteTitle": "网页搜索路由", - "webSearchRouteDesc": "当请求包含原生 web_search 工具时,将整个请求路由到此模型而不是默认模型 —— 这对于未实现 Anthropic 的 web_search 服务端工具的提供者非常有用。留空以禁用。", + "webSearchRouteDesc": "当请求包含原生web_search工具时,将整个请求路由到此模型而不是默认模型——这对于未实现Anthropic的web_search服务端工具的供应商非常有用。留空以禁用。", "webSearchRoutePlaceholder": "搜索或选择模型…", - "paidModelPatternWarning": "此模式仅匹配付费模型 — 请启用付费模型或调整该模式。", - "clearLkgpCache": "清除 LKGP 缓存", - "lkgpCacheCleared": "LKGP 缓存已成功清除", - "lkgpCacheClearFailed": "清除 LKGP 缓存失败", + "paidModelPatternWarning": "此模式仅匹配付费模型—请启用付费模型或调整该模式。", + "clearLkgpCache": "清除LKGP缓存", + "lkgpCacheCleared": "LKGP缓存已成功清除", + "lkgpCacheClearFailed": "清除LKGP缓存失败", "days": "天", - "lkgp": "LKGP 模式", - "lkgpDesc": "最后已知良好提供者(可预测的弹性)", + "lkgp": "LKGP模式", + "lkgpDesc": "最后已知良好供应商(可预测的弹性)", "maintenance": "维护", "purgeExpiredLogs": "清理过期日志", "purgeLogsFailed": "清理日志失败", "logsDeleted": "{count, plural, =0 {未清除过期日志} one {已清除 # 条过期日志} other {已清除 # 条过期日志}}", "resetUsageData": "重置使用数据", - "resetUsageDataDesc": "选择要删除多久以前的使用情况、请求日志和分析数据。服务商配置、连接、API 密钥、组合和设置将被保留。此操作无法撤销。", + "resetUsageDataDesc": "选择要删除多久以前的使用情况、请求日志和分析数据。服务商配置、连接、API Key、组合和设置将被保留。此操作无法撤销。", "resetUsagePeriod_5m": "5 分钟", "resetUsagePeriod_1h": "1 小时", "resetUsagePeriod_3h": "3 小时", @@ -6821,31 +6821,31 @@ "reset": "重置", "resetting": "正在重置...", "contextOpt": "上下文优化", - "contextOptDesc": "根据上下文窗口需求和对话长度进行路由", + "contextOptDesc": "根据上下文窗口需求和对话长度路由", "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "顺序回退——先尝试提供者 1,再尝试提供者 2,依此类推", - "weightedDesc": "按百分比权重在各提供者之间分配流量", + "cacheOptDesc": "将可复用的提示前缀保持在同一个供应商账户上。", + "priorityDesc": "顺序回退——先尝试供应商 1,再尝试供应商 2,依此类推", + "weightedDesc": "按百分比权重在各供应商之间分配流量", "modelRoutingTitle": "模型路由规则", - "modelRoutingDesc": "使用 glob 模式自动将模型路由到指定组合", + "modelRoutingDesc": "使用glob模式自动将模型路由到指定组合", "addRule": "添加规则", "routeToCombo": "路由到组合", "selectCombo": "选择组合...", "priorityHint": "数值越高越优先检查。具体模式建议使用 10+。", - "patternHint": "使用 * 匹配任意字符,? 匹配单个字符。不区分大小写。", + "patternHint": "使用 * 匹配任意字符,? 匹配单个字符。不区分大小写。", "noRoutingRules": "未配置路由规则。请求默认使用全局组合。", - "routingRuleHint": "添加类似 claude-opus* -> frontier-combo 的规则,以自动路由请求。", + "routingRuleHint": "添加类似claude-opus* -> frontier-combo的规则,以自动路由请求。", "deleteRoutingRule": "删除此模型路由规则?", "exactMatchMode": "精确匹配", "wildcardPatternMode": "通配符模式", - "exactMatchModeDesc": "对已弃用或已重命名的模型 ID 使用精确别名。", - "wildcardPatternModeDesc": "当一组模型应映射到同一目标时,使用带 * 和 ? 的通配符别名。", + "exactMatchModeDesc": "对已弃用或已重命名的模型ID使用精确别名。", + "wildcardPatternModeDesc": "当一组模型应映射到同一目标时,使用带 * 和 ? 的通配符别名。", "noExactAliasesConfigured": "未配置精确匹配别名。", "wildcardRulesTitle": "通配符规则", "noWildcardAliasesConfigured": "未配置通配符别名。", "overview": "概览", "unknownError": "未知错误", - "pricingSourceLiteLLM": "LiteLLM 定价来源", + "pricingSourceLiteLLM": "LiteLLM定价来源", "clearSyncedPricingConfirm": "确定要清除已同步的定价吗?", "clearSyncedPricingFailed": "清除已同步定价失败", "pricingSourceUser": "用户定价来源", @@ -6854,7 +6854,7 @@ "whitelist": "白名单", "syncDisabled": "同步已禁用", "pricingLoadFailed": "加载定价失败", - "pricingSyncDescription": "从 models.dev 同步模型定价和能力数据。", + "pricingSyncDescription": "从models.dev同步模型定价和能力数据。", "clearSyncedPricingSuccess": "已清除同步定价", "clearSyncedPricingFailedWithReason": "清除价格失败:{reason}", "pricingSourceDefault": "默认定价来源", @@ -6862,7 +6862,7 @@ "enableSyncError": "启用同步失败", "syncEnabled": "同步已启用", "blacklist": "黑名单", - "pricingSourceModelsDev": "models.dev 定价来源", + "pricingSourceModelsDev": "models.dev定价来源", "syncedModels": "已同步模型", "budget": "预算", "pricingSyncTitle": "定价同步", @@ -6876,20 +6876,20 @@ "pricingSyncFailedWithReason": "价格同步失败:{reason}", "clearSyncedPricing": "清除同步定价", "compressionTitle": "提示词压缩", - "compressionDesc": "在发送给提供者之前压缩提示词,以减少 token 使用量", + "compressionDesc": "在发送给供应商之前压缩提示词,以减少token使用量", "compressionGuidanceFullGuideLink": "完整压缩指南", "compressionGuidanceShow": "详情", "compressionGuidanceHide": "隐藏详情", "compressionGuidanceSafeDefault": "安全默认", "compressionGuidanceCacheImpact": "缓存影响", "tokenSaverTitle": "Token Saver", - "tokenSaverSubtitle": "让每次请求消耗更少 token。", + "tokenSaverSubtitle": "让每次请求消耗更少token。", "tokenSaverToolOutput": "工具输出", - "tokenSaverToolOutputDesc": "在发送给提供者前清理 git、grep、ls、tree 和日志输出。", - "tokenSaverLlmOutput": "LLM 输出", - "tokenSaverLlmOutputDesc": "注入简洁回复指令,不改写提供者输出。", + "tokenSaverToolOutputDesc": "在发送给供应商前清理git、grep、ls、tree和日志输出。", + "tokenSaverLlmOutput": "LLM输出", + "tokenSaverLlmOutputDesc": "注入简洁回复指令,不改写供应商输出。", "tokenSaverInputCompression": "输入压缩", - "tokenSaverInputCompressionDesc": "在保留代码、URL 和意图的前提下改写可压缩的对话历史。", + "tokenSaverInputCompressionDesc": "在保留代码、URL和意图的前提下改写可压缩的对话历史。", "tokenSaverFineTunePrefix": "可在以下页面微调各引擎:", "tokenSaverFineTuneSuffix": "或按请求组合引擎:", "compressionMode": "压缩模式", @@ -6898,26 +6898,26 @@ "compressionModeLite": "精简", "compressionModeLiteDesc": "减少空白字符和空行", "compressionModeStandard": "标准(Caveman)", - "compressionModeStandardDesc": "基于规则的压缩,包含 30+ 个模式,并保留代码块和 URL", + "compressionModeStandardDesc": "基于规则的压缩,包含 30+ 个模式,并保留代码块和URL", "compressionModeAggressive": "激进", "compressionModeAggressiveDesc": "摘要 + 工具结果压缩 + 渐进老化,以实现最大节省", "compressionModeUltra": "极速", "compressionModeUltraDesc": "使用包括语义去重在内的全部技术进行最大压缩", - "compressionAggressiveConfig": "Aggressive 引擎配置", + "compressionAggressiveConfig": "Aggressive引擎配置", "compressionAggressiveConfigDesc": "微调摘要、工具压缩和老化阈值", - "compressionUltraConfig": "Ultra 引擎配置", - "compressionUltraConfigDesc": "微调启发式剪枝、SLM 后备和每条消息阈值", + "compressionUltraConfig": "Ultra引擎配置", + "compressionUltraConfigDesc": "微调启发式剪枝、SLM后备和每条消息阈值", "compressionUltraRate": "保留比例", "compressionUltraMinScore": "最低分数阈值", - "compressionUltraSlmFallback": "回退到 Aggressive", - "compressionUltraModelPath": "SLM 模型路径", + "compressionUltraSlmFallback": "回退到Aggressive", + "compressionUltraModelPath": "SLM模型路径", "compressionUltraEngine": "极致级别", "compressionUltraEngineHeuristic": "启发式 (Tier-A,默认)", "compressionUltraEngineSlm": "SLM (LLMLingua-2,选择性加入)", - "compressionUltraSlmHint": "SLM 在首次使用时会下载一个小型 ONNX 模型(冷启动),并在超时或不可用时无缝回退到启发式算法。", - "compressionUltraSlmPrewarm": "启用时预热 SLM 模型", + "compressionUltraSlmHint": "SLM在首次使用时会下载一个小型ONNX模型(冷启动),并在超时或不可用时无缝回退到启发式算法。", + "compressionUltraSlmPrewarm": "启用时预热SLM模型", "compressionSummarizerEnabled": "启用摘要器", - "compressionMaxTokensPerMessage": "每条消息最大 Token 数", + "compressionMaxTokensPerMessage": "每条消息最大Token数", "compressionMinSavings": "最低节省阈值", "compressionAgingThresholds": "老化阈值", "compressionAgingThresholdsDesc": "每个老化层级保留的最近消息数量(越高表示保留越多)", @@ -6925,21 +6925,21 @@ "compressionToolStrategiesDesc": "为不同工具结果类型切换压缩策略", "compressionGeneral": "通用设置", "compressionAutoTrigger": "自动触发阈值", - "compressionCacheTTL": "缓存 TTL", + "compressionCacheTTL": "缓存TTL", "compressionPreserveSystem": "保留系统提示", "compressionPreserveSystemAlways": "总是", "compressionPreserveSystemWhenNoCache": "无缓存时", "compressionPreserveSystemNever": "从不", "compressionLiveZoneTitle": "缓存对齐的活动区域", "compressionLiveZoneDesc": "保持压缩后的对话前缀稳定,仅处理新追加的项。", - "compressionExclusionsTitle": "__MISSING__:Compression Exclusions", - "compressionExclusionsDesc": "__MISSING__:Model ids or provider/model patterns that must never be compressed. `*` is the only wildcard (e.g. `openai/*`, `*embedding*`). A matching request passes through byte-identical — no compression engine runs.", - "compressionExclusionsPlaceholder": "__MISSING__:One pattern per line, e.g.\nopenai/text-embedding-3-large\nanthropic/*", - "compressionExclusionsSave": "__MISSING__:Save", - "compressionExclusionsSaved": "__MISSING__:Saved", - "compressionExclusionsCount": "__MISSING__:{count, plural, one {# exclusion} other {# exclusions}} configured", - "compressionExclusionsEmpty": "__MISSING__:No exclusions configured — every model/endpoint is eligible for compression (default behavior).", - "compressionCavemanConfig": "Caveman 引擎配置", + "compressionExclusionsTitle": "压缩排除规则", + "compressionExclusionsDesc": "配置哪些模型或端点应跳过压缩。使用 * 作为通配符。", + "compressionExclusionsPlaceholder": "例如claude-opus*", + "compressionExclusionsSave": "保存排除规则", + "compressionExclusionsSaved": "排除规则已保存。", + "compressionExclusionsCount": "{count} 条规则", + "compressionExclusionsEmpty": "尚未配置排除规则—所有模型和端点均可压缩。", + "compressionCavemanConfig": "Caveman引擎配置", "compressionCavemanConfigDesc": "微调基于规则的压缩引擎", "compressionCavemanPanelHint": "其开关和级别在面板中设置:", "compressionRoles": "压缩消息角色", @@ -6956,42 +6956,42 @@ "minutes": "分钟", "compressionModeRtk": "RTK", "compressionModeRtkDesc": "感知命令的工具输出过滤", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", + "compressionModeCodexResponses": "Responses工具输出", + "compressionModeCodexResponsesDesc": "对符合条件的shell、patch、search、build和JSON输出进行保守压缩。", "compressionModeStacked": "堆叠", - "compressionModeStackedDesc": "先进行 RTK 工具输出过滤,再进行 Caveman 消息压缩", + "compressionModeStackedDesc": "先进行RTK工具输出过滤,再进行Caveman消息压缩", "qdrantTitle": "Qdrant(矢量内存)", "qdrantDesc": "可选。在外部向量数据库中索引语义记忆以加快检索速度。", "qdrantStatusActive": "活跃", "qdrantStatusError": "错误", "qdrantStatusDisabled": "残疾人", - "qdrantEnable": "启用 Qdrant", - "qdrantEnableDesc": "启用后,语义/混合策略可以使用 Qdrant 来检索记忆。", + "qdrantEnable": "启用Qdrant", + "qdrantEnableDesc": "启用后,语义/混合策略可以使用Qdrant来检索记忆。", "qdrantTesting": "测试...", "qdrantTestConnection": "测试连接", "qdrantSaved": "配置已保存", "qdrantSaveError": "保存配置失败", - "qdrantHostHint": "没有端口。示例:127.0.0.1 或 http://qdrant", + "qdrantHostHint": "没有端口。示例:127.0.0.1 或http://qdrant", "qdrantPort": "港口", - "qdrantPortHint": "Qdrant 默认值:6333", + "qdrantPortHint": "Qdrant默认值:6333", "qdrantCollectionHint": "存储点的位置。", "qdrantEmbeddingModel": "嵌入模型", "qdrantHelpTitle": "快速设置帮助", "qdrantHelpQuickTitle": "快速设置(Qdrant + OpenRouter)", "qdrantHelpStep1": "1. 主机:Qdrant IP/URL,端口:6333,集合:omniroute_memory。", - "qdrantHelpStep2": "2. 如果使用 nvidia/llama-nemotron-embed-vl-1b-v2:free,请使用集合维度 2048。", + "qdrantHelpStep2": "2. 如果使用nvidia/llama-nemotron-embed-vl-1b-v2:free,请使用集合维度 2048。", "qdrantHelpStep3": "3. 模型字段:openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free。", "qdrantHelpStep4": "4. 保存,测试连接,然后测试搜索。", "qdrantEmbeddingQuickSelect": "从发现的模型中快速选择...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "格式:提供者/模型。必须配置提供者凭证。", + "qdrantEmbeddingHint": "格式:供应商/模型。必须配置供应商凭证。", "qdrantApiKeyPlaceholderKeep": "(留空以保留当前密钥)", "qdrantApiKeyPlaceholderOptional": "(如不用则留空)", - "qdrantSaveHint": "提示:编辑主机/端口/集合/模型,然后单击“保存”。 API 密钥是可选的。", + "qdrantSaveHint": "提示:编辑主机/端口/集合/模型,然后单击“保存”。API Key是可选的。", "qdrantSearchTestTitle": "搜索测试", - "qdrantSearchTestDesc": "在 Qdrant 中生成嵌入和搜索。", + "qdrantSearchTestDesc": "在Qdrant中生成嵌入和搜索。", "qdrantSearchPlaceholder": "示例:用户偏好、历史记录等", - "qdrantNoResults": "无结果(或未配置 Qdrant)。", + "qdrantNoResults": "无结果(或未配置Qdrant)。", "qdrantCleanupTitle": "保留和清理", "qdrantCleanupDesc": "根据以下内容删除过期和旧的积分", "searching": "正在寻找...", @@ -7001,21 +7001,21 @@ "current": "当前", "remove": "删除", "search": "搜索", - "oneproxyTitle": "1proxy 免费代理市场", + "oneproxyTitle": "1proxy免费代理市场", "oneproxyTotalProxies": "代理总数", "oneproxyAvgQuality": "平均质量", "resilienceScope": "范围:", "resilienceTrigger": "触发:", "resilienceEffect": "效果:", "resilienceRequestQueueTitle": "请求队列与速率", - "resilienceAutoEnableApiKeyProviders": "为 API 密钥提供者自动启用", + "resilienceAutoEnableApiKeyProviders": "为API Key供应商自动启用", "resilienceRequestsPerMinute": "每分钟请求数", "resilienceMinTimeBetweenRequests": "请求之间的最小时间", "resilienceConcurrentRequests": "并发请求数", "resilienceMaxQueueWaitTime": "最大队列等待时间", "resilienceBaseCooldown": "基础冷却时间", "resilienceUseUpstreamRetryHints": "使用上游重试提示", - "resilienceDefaultPerProvider": "默认(按提供者)", + "resilienceDefaultPerProvider": "默认(按供应商)", "resilienceAlwaysOn": "始终开启", "resilienceAlwaysOff": "始终关闭", "routingRemoveEntry": "删除条目", @@ -7033,7 +7033,7 @@ "routingEntrypoint": "入口点", "routingVersionFormat": "版本格式", "routingCchAlgorithm": "CCH算法", - "routingWordsToObfuscate": "要混淆的单词(在第一个字符后插入 ZWJ)", + "routingWordsToObfuscate": "要混淆的单词(在第一个字符后插入ZWJ)", "logsSettingsTitle": "日志设置", "detailedLogsLabel": "启用详细日志", "detailedLogsDesc": "启用详细的请求/响应日志记录", @@ -7046,7 +7046,7 @@ "semanticCacheEnabledLabel": "语义缓存启用", "semanticCacheMaxSizeLabel": "语义缓存最大大小", "semanticCacheMaxSizeDesc": "语义缓存条目的最大数量", - "semanticCacheTTLLabel": "语义缓存 TTL", + "semanticCacheTTLLabel": "语义缓存TTL", "promptCacheEnabledLabel": "提示缓存已启用", "promptCacheEnabledDesc": "启用提示缓存", "promptCacheStrategyLabel": "提示缓存策略", @@ -7070,26 +7070,26 @@ "oneproxySyncStatusTitle": "同步状态", "oneproxySuccess": "成功", "oneproxyFailed": "失败", - "routingAntigravitySignatureTitle": "反重力签名缓存模式", - "routingAntigravitySignatureDesc": "控制 OmniRoute 在 Antigravity 兼容的工具调用流程中是仅复用已存储的 Gemini thought 签名,还是接受经校验的客户端提交签名。", + "routingAntigravitySignatureTitle": "Antigravity签名缓存模式", + "routingAntigravitySignatureDesc": "控制OmniRoute在Antigravity兼容的工具调用流程中是仅复用已存储的Gemini thought签名,还是接受经校验的客户端提交签名。", "routingAntigravitySignatureEnabledLabel": "启用", - "routingAntigravitySignatureEnabledDesc": "当前行为。忽略客户端提交的签名,继续使用 OmniRoute 已存储的流程。", + "routingAntigravitySignatureEnabledDesc": "当前行为。忽略客户端提交的签名,继续使用OmniRoute已存储的流程。", "routingAntigravitySignatureBypassLabel": "绕过", "routingAntigravitySignatureBypassDesc": "经过轻量校验后接受客户端提交的签名,无效时回退到已存储的签名。", "routingAntigravitySignatureBypassStrictLabel": "严格绕过", - "routingAntigravitySignatureBypassStrictDesc": "在接受客户端提交的签名前要求完整的 protobuf 校验。", - "routingHeaderFingerprintTitle": "标头指纹(每个提供者)", + "routingAntigravitySignatureBypassStrictDesc": "在接受客户端提交的签名前要求完整的protobuf校验。", + "routingHeaderFingerprintTitle": "标头指纹(每个供应商)", "routingServerRejectedSave": "⚠ 服务器拒绝保存:", "routingAddTransformOp": "添加变换操作", "routingClientCacheControlTitle": "客户端缓存控制", - "routingClientCacheControlDesc": "配置 OmniRoute 是否保留客户端提交的 cache_control 标记", - "routingClientCacheControlAutoDesc": "对于确定性的 Claude 兼容流程,按原样保留客户端提交的 cache_control。如果请求未携带 cache_control,OmniRoute 不会注入任何由桥接器拥有的标记,以兼容 CC 兼容的第三方代理。", + "routingClientCacheControlDesc": "配置OmniRoute是否保留客户端提交的cache_control标记", + "routingClientCacheControlAutoDesc": "对于确定性的Claude兼容流程,按原样保留客户端提交的cache_control。如果请求未携带cache_control,OmniRoute不会注入任何由桥接器拥有的标记,以兼容Claude Code兼容的第三方代理。", "routingClientCacheControlAlwaysLabel": "始终保留", - "routingClientCacheControlAlwaysDesc": "始终按原样将客户端提交的 cache_control 请求头转发给上游提供者。", + "routingClientCacheControlAlwaysDesc": "始终按原样将客户端提交的cache_control请求标头转发给上游供应商。", "routingClientCacheControlNeverLabel": "从不保留", - "routingClientCacheControlNeverDesc": "始终移除客户端的 cache_control 请求头,在原生提供者流程支持时由 OmniRoute 管理缓存。", + "routingClientCacheControlNeverDesc": "始终移除客户端的cache_control请求标头,在原生供应商流程支持时由OmniRoute管理缓存。", "routingZeroConfigTitle": "零配置自动路由", - "routingZeroConfigDesc": "启用使用 auto/ 前缀的自动提供者选择。启用后,发往 auto、auto/coding、auto/fast 等的请求将在所有已连接提供者之间动态路由。", + "routingZeroConfigDesc": "启用使用auto/ 前缀的自动供应商选择。启用后,发往auto、auto/coding、auto/fast等的请求将在所有已连接供应商之间动态路由。", "routingDefaultAutoVariant": "默认自动变体", "visionBridge": "愿景桥", "visionBridgeDesc": "在将图像请求路由到纯文本模型之前,自动执行一次视觉到文本的回退。", @@ -7097,16 +7097,16 @@ "visionBridgeEnabledDesc": "切换预调用桥接,将图像内容替换为提取出的文本。", "visionBridgeModel": "桥梁模型", "visionBridgeModelPlaceholder": "openai/gpt-4o-mini", - "visionBridgeModelHint": "可使用任何支持视觉的 OmniRoute 模型 ID。", + "visionBridgeModelHint": "可使用任何支持视觉的OmniRoute模型ID。", "visionBridgePrompt": "桥接提示", "visionBridgePromptPlaceholder": "简要描述一下这张图片。", "visionBridgePromptHint": "在将提取出的描述注入回原始请求前,先发送给视觉模型。", "visionBridgeTimeoutMs": "超时(毫秒)", "visionBridgeMaxImagesPerRequest": "每个请求的最大图像数", "resilienceMaxBackoffSteps": "最大退避步数", - "resilienceProviderBreakerTitle": "按提供者的断路器", + "resilienceProviderBreakerTitle": "按供应商的断路器", "resilienceFailureThreshold": "失败阈值", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceDegradationThreshold": "降级阈值", "resilienceResetTimeout": "重置超时", "resilienceFailureThresholdLabel": "失败阈值", "resilienceResetTimeoutLabel": "重置超时", @@ -7119,7 +7119,7 @@ "resilienceDefault": "默认", "storageDatabaseBackupRetention": "数据库备份保留", "storageDatabaseBackups": "数据库备份", - "storageBackupRetentionDescription": "自动 SQLite 备份存储在", + "storageBackupRetentionDescription": "自动SQLite备份存储在", "storageBackupRetentionHelp": "配置要保留的快照数量,并可选择删除超过指定天数的备份。", "storageBackupCount": "{count} 个备份", "storageBackupMaximum": "最多 {count} 个", @@ -7141,13 +7141,13 @@ "purgeCallLogsFailed": "清除调用日志失败", "purgeDetailedLogsSuccess": "已清除 {count} 条详细日志", "purgeDetailedLogsFailed": "清除详细日志失败", - "vacuumCompleted": "VACUUM 已完成", - "vacuumFailed": "VACUUM 失败", - "jsonExportFailed": "JSON 导出失败", - "invalidJsonFileType": "无效的文件类型。仅允许 .json 文件。", - "legacyJsonImportSuccess": "旧版 JSON 导入成功!", - "jsonImportFailed": "导入 JSON 失败", - "jsonImportError": "导入 JSON 时出错", + "vacuumCompleted": "VACUUM已完成", + "vacuumFailed": "VACUUM失败", + "jsonExportFailed": "JSON导出失败", + "invalidJsonFileType": "无效的文件类型。仅允许 .json文件。", + "legacyJsonImportSuccess": "旧版JSON导入成功!", + "jsonImportFailed": "导入JSON失败", + "jsonImportError": "导入JSON时出错", "storagePurgeData": "清除数据", "storagePurgeDataDesc": "立即删除所有记录,不进行保留检查。请谨慎使用。", "storageRetentionCleanup": "保留设置", @@ -7157,12 +7157,12 @@ "retentionRows": "{count} 行", "retentionQuotaSnapshots": "配额快照(天)", "retentionCompressionAnalytics": "压缩分析(天数)", - "retentionMcpAudit": "MCP 审核(天)", - "retentionA2aEvents": "A2A 活动(天)", + "retentionMcpAudit": "MCP审核(天)", + "retentionA2aEvents": "A2A活动(天)", "retentionCallLogs": "通话记录(天)", "retentionUsageHistory": "使用历史(天)", "retentionMemoryEntries": "内存条目(天)", - "retentionXpAuditLog": "XP 审计日志(天数)", + "retentionXpAuditLog": "XP审计日志(天数)", "saveRetentionSettings": "保存保留设置", "storageAutoVacuumMode": "自动真空模式", "storageScheduledVacuum": "预定真空", @@ -7187,9 +7187,9 @@ "storageDaily": "每天", "storageWeekly": "每周", "storageSaveAggregation": "保存聚合设置", - "exportJson": "导出 JSON", - "importJson": "导入 JSON", - "manualVacuum": "手动 VACUUM", + "exportJson": "导出JSON", + "importJson": "导入JSON", + "manualVacuum": "手动VACUUM", "purgeQuotaSnapshots": "清除配额快照", "purgeCallLogs": "清除调用日志", "purgeDetailedLogs": "清除详细日志", @@ -7202,15 +7202,15 @@ "storageIntegrityOk": "✓ 确定", "storageIntegrityError": "✗ 错误", "storageUsageTokenBuffer": "使用令牌缓冲区", - "storageUsageTokenBufferDesc": "添加到报告用量的额外 Token,以计算系统提示词开销。", - "storageUsageTokenBufferHint": "设置为 0 以报告服务商原始 Token 数量。默认值:2000。", + "storageUsageTokenBufferDesc": "添加到报告用量的额外Token,以计算系统提示词开销。", + "storageUsageTokenBufferHint": "设置为 0 以报告服务商原始Token数量。默认值:2000。", "storageUsageTokenBufferCurrent": "当前:{value}", - "redisLauncherTitle": "本地 Redis", - "redisLauncherDesc": "一键启动 Redis 7 容器(Podman 或 Docker),用于响应缓存、配额跟踪和速率限制。", + "redisLauncherTitle": "本地Redis", + "redisLauncherDesc": "一键启动Redis 7 容器(Podman或Docker),用于响应缓存、配额跟踪和速率限制。", "redisLauncherRefresh": "刷新", "redisLauncherStop": "停止", "redisLauncherLaunching": "正在启动...", - "redisLauncherLaunch": "启动 Redis", + "redisLauncherLaunch": "启动Redis", "redisLauncherContainer": "容器", "redisLauncherRunning": "运行中", "redisLauncherReachable": "可达", @@ -7218,7 +7218,7 @@ "redisLauncherHint": "等同于运行 `omniroute redis up`。容器命名为 `omniroute-redis` 并监听 127.0.0.1:6379。", "compressionSettingsAutoTriggerMode": "自动触发模式", "compressionSettingsMcpDescriptionCompression": "MCP描述压缩", - "mcpAccessibilityTitle": "MCP 无障碍输出", + "mcpAccessibilityTitle": "MCP无障碍输出", "compressionSettingsCavemanIntensity": "穴居人强度", "compressionSettingsCavemanOutputMode": "穴居人输出模式", "compressionSettingsOutputStyles": "输出样式", @@ -7230,10 +7230,10 @@ "compressionDerivedRuns": "运行:{pipeline}", "compressionDerivedMode": "模式:{mode}", "compressionAdaptiveOff": "自适应上下文预算:关闭(旧版自动触发)", - "compressionAdaptiveTarget": "自适应 ({mode}, 策略: {policy}) — 目标 ≈ {target, number} 个 token (针对 {contextLimit, number} 个 token 的窗口)", + "compressionAdaptiveTarget": "自适应 ({mode}, 策略: {policy}) —目标 ≈ {target, number} 个token (针对 {contextLimit, number} 个token的窗口)", "compressionOutputStylesDescription": "注入响应塑造指令,而无需重写服务商输出。自由组合。", - "mcpAccessibilityDescription": "限制 MCP 工具输出的范围 (独立存储)。", - "compressionStylesTileSummary": "{tokens, number} 个 token 已节省 · {runs, plural, one {# 次运行已应用样式} other {# 次运行已应用样式}}", + "mcpAccessibilityDescription": "限制MCP工具输出的范围 (独立存储)。", + "compressionStylesTileSummary": "{tokens, number} 个token已节省· {runs, plural, one {# 次运行已应用样式} other {# 次运行已应用样式}}", "compressionStylesTileEmpty": "尚无已应用样式的运行。", "compressionLevel": { "minimal": "最小", @@ -7261,12 +7261,12 @@ "description": "命令输出过滤。" }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Responses工具输出", + "description": "对受支持的Responses工具输出进行保守压缩。" }, "headroom": { "label": "预留空间", - "description": "表格 JSON 压缩。" + "description": "表格JSON压缩。" }, "relevance": { "label": "相关性", @@ -7286,7 +7286,7 @@ }, "ultra": { "label": "极致", - "description": "结合可选 SLM 的启发式 token 剪枝。" + "description": "结合可选SLM的启发式token剪枝。" }, "omniglyph": { "label": "OmniGlyph", @@ -7300,14 +7300,14 @@ }, "less-code": { "label": "更少代码", - "description": "YAGNI 阶梯:最小可行改动,无未要求的抽象。" + "description": "YAGNI阶梯:最小可行改动,无未要求的抽象。" }, "ponytail": { "label": "Ponytail (lazy senior dev)", "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." }, "terse-cjk": { - "label": "精简 CJK (文言)", + "label": "精简CJK (文言)", "description": "文言文极简风格 (仅适用于中文)。" } }, @@ -7315,48 +7315,48 @@ "resilienceEnableServerSideWait": "启用服务器端等待", "resilienceMaximumRetries": "最大重试次数", "resilienceMaximumWaitPerRetry": "每次重试的最长等待时间", - "memorySkillsSkillsmpMarketplace": "SkillsMP 市场", + "memorySkillsSkillsmpMarketplace": "SkillsMP市场", "memorySkillsFailedToSave": "保存失败", - "memorySkillsApiKey": "API密钥", - "memorySkillsActiveSkillsProvider": "主动技能供应商", - "cliproxyapiFallback": "CLIProxyAPI 后备", - "cliproxyapiEnableFallback": "启用 CLIProxyAPI 回退", + "memorySkillsApiKey": "API Key", + "memorySkillsActiveSkillsProvider": "主动Skills供应商", + "cliproxyapiFallback": "CLIProxyAPI后备", + "cliproxyapiEnableFallback": "启用CLIProxyAPI回退", "cliproxyapiUrl": "CLIProxyAPI URL", - "cliproxyapiStatus": "CLIProxyAPI 状态", + "cliproxyapiStatus": "CLIProxyAPI状态", "cliproxyapiNotDetected": "未检测到", - "cliproxyapiImportAuthTitle": "从 CLIProxyAPI 导入账户", - "cliproxyapiImportAuthDesc": "Import the OAuth accounts CLIProxyAPI already saved in ~/.cli-proxy-api/ as OmniRoute connections, so you don't have to log in to each account again. Supported account types (Gemini, Codex, Claude, Antigravity, Qwen, Kimi) are imported; others are skipped.", + "cliproxyapiImportAuthTitle": "从CLIProxyAPI导入账户", + "cliproxyapiImportAuthDesc": "导入CLIProxyAPI已保存在 ~/.cli-proxy-api/ 中的OAuth账户作为OmniRoute连接,无需重新登录。支持的账户类型(Gemini、Codex、Claude、Antigravity、Qwen、Kimi)将被导入,其他类型跳过。", "cliproxyapiImportAuthButton": "导入帐户", "payloadRulesTitle": "负载规则", - "payloadRulesDesc": "按模型与协议配置请求 payload 的变更。修改会持久化到设置中,并在保存后立即热加载到运行时。", + "payloadRulesDesc": "按模型与协议配置请求payload的变更。修改会持久化到设置中,并在保存后立即热加载到运行时。", "payloadRuleDefaultTitle": "default", - "payloadRuleDefaultDesc": "仅在外发 payload 缺少目标路径时应用参数。", + "payloadRuleDefaultDesc": "仅在外发payload缺少目标路径时应用参数。", "payloadRuleOverrideTitle": "override", - "payloadRuleOverrideDesc": "强制将值写入 payload,替换该路径上已存在的任何内容。", + "payloadRuleOverrideDesc": "强制将值写入payload,替换该路径上已存在的任何内容。", "payloadRuleFilterTitle": "filter", - "payloadRuleFilterDesc": "在向上游发起请求前,从 payload 中移除被屏蔽的参数。", + "payloadRuleFilterDesc": "在向上游发起请求前,从payload中移除被屏蔽的参数。", "payloadRuleDefaultRawTitle": "defaultRaw", - "payloadRuleDefaultRawDesc": "与 default 类似,但会先尝试将字符串值解析为 JSON。保存时也接受旧的输入别名 default-raw。", + "payloadRuleDefaultRawDesc": "与default类似,但会先尝试将字符串值解析为JSON。保存时也接受旧的输入别名default-raw。", "payloadEditorTitle": "编辑器", - "payloadEditorDesc": "请使用运行时的 schema 形态:default、override、filter、defaultRaw。API 也接受旧的输入键名 default-raw。", + "payloadEditorDesc": "请使用运行时的schema形态:default、override、filter、defaultRaw。API也接受旧的输入键名default-raw。", "payloadEditorReady": "就绪", "payloadResetInfo": "编辑器已重置为中性模板,保存后生效。", - "payloadSaveSuccess": "Payload 规则已保存并热加载。", - "payloadJsonParseError": "JSON 解析错误:{error}", - "payloadMustBeObject": "Payload 规则必须是 JSON 对象。", - "payloadInvalidJson": "无效的 JSON payload。", - "payloadValidJsonRequired": "保存前 Payload 规则必须是合法 JSON。", - "savePayloadRules": "保存 Payload 规则", + "payloadSaveSuccess": "Payload规则已保存并热加载。", + "payloadJsonParseError": "JSON解析错误:{error}", + "payloadMustBeObject": "Payload规则必须是JSON对象。", + "payloadInvalidJson": "无效的JSON payload。", + "payloadValidJsonRequired": "保存前Payload规则必须是合法JSON。", + "savePayloadRules": "保存Payload规则", "requestLimitsTitle": "请求限制", "requestLimitsDesc": "配置全局请求限制与并发保护。", "maxRequestSizeLabel": "最大请求大小(MB)", - "maxRequestSizeDesc": "传入 API 请求允许的最大大小。", + "maxRequestSizeDesc": "传入API请求允许的最大大小。", "maxResponseSizeLabel": "最大响应大小(MB)", - "maxResponseSizeDesc": "传出 API 响应允许的最大大小。", - "maxRequestTokensLabel": "最大请求 Token 数", - "maxRequestTokensDesc": "单次请求允许的总 Token 上限。", - "maxResponseTokensLabel": "最大响应 Token 数", - "maxResponseTokensDesc": "单次响应允许的总 Token 上限。", + "maxResponseSizeDesc": "传出API响应允许的最大大小。", + "maxRequestTokensLabel": "最大请求Token数", + "maxRequestTokensDesc": "单次请求允许的总Token上限。", + "maxResponseTokensLabel": "最大响应Token数", + "maxResponseTokensDesc": "单次响应允许的总Token上限。", "modelCooldownsTitle": "处于冷却状态的模型", "modelCooldownsEmpty": "目前没有模型处于冷却状态。", "modelCooldownsDescription": "发生故障后模型被暂时隔离。冷却时间到期后,它们会自动恢复。", @@ -7369,40 +7369,40 @@ "modelCooldownsReasonRemaining": "原因:{reason} • 剩余:{remaining}", "modelCooldownsReactivate": "重新激活", "responsesStateTitle": "响应状态", - "responsesStateDesc": "控制 OmniRoute 如何处理 previous_response_id。", - "responsesStateModeLabel": "previous_response_id 处理", + "responsesStateDesc": "控制OmniRoute如何处理previous_response_id。", + "responsesStateModeLabel": "previous_response_id处理", "responsesStateModeAuto": "自动", "responsesStateModeStrip": "剥离", "responsesStateModePreserve": "保留", - "responsesStateHint": "自动模式会剥离 previous_response_id,除非连接明确启用 OpenAI 响应存储。对于无状态客户端(如 VS Code 自定义端点),剥离模式最安全;上下文取决于客户端发送完整历史记录。", + "responsesStateHint": "自动模式会剥离previous_response_id,除非连接明确启用OpenAI响应存储。对于无状态客户端(如VS Code自定义端点),剥离模式最安全;上下文取决于客户端发送完整历史记录。", "responsesStateSaveError": "更新响应状态设置失败", - "codexFastTierTitle": "Codex 快速层", - "codexFastTierDesc": "为 OpenAI Codex 请求全局注入 service_tier=priority。", - "codexFastTierHint": "启用后,OmniRoute 会将 service_tier=priority 添加到尚未指定层的连接的出站 Codex 请求中。优先级需要 OpenAI Enterprise API 密钥或 ChatGPT-auth Codex 路径;其他密钥类型将从 OpenAI 收到与层相关的错误。 Codex 提供程序页面上的每个连接设置优先。", - "codexFastTierSaveError": "无法更新 Codex Fast Tier 设置", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", + "codexFastTierTitle": "Codex快速层", + "codexFastTierDesc": "为OpenAI Codex请求全局注入service_tier=priority。", + "codexFastTierHint": "启用后,OmniRoute会将service_tier=priority添加到尚未指定层的连接的出站Codex请求中。优先级需要OpenAI Enterprise API Key或ChatGPT-auth Codex路径;其他密钥类型将从OpenAI收到与层相关的错误。Codex提供程序页面上的每个连接设置优先。", + "codexFastTierSaveError": "无法更新Codex Fast Tier设置", + "codexAutoPingTitle": "Codex自动Ping", + "codexAutoPingDesc": "按连接选择加入:在Codex会话窗口重置后立即发送一个微小请求,避免冷启动。", + "codexAutoPingWarning": "每次Ping消耗少量Codex配额。默认关闭——仅为您实际依赖的连接启用。", + "codexAutoPingSaveError": "更新Codex自动Ping设置失败。", "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", "codexFastTierTierLabel": "服务层级", "codexFastTierTierPriority": "优先级", "codexFastTierTierFlex": "弹性", "codexFastTierTierDefault": "默认", "codexFastTierModelsLabel": "快速层模型", - "codexFastTierModelsHint": "启用快速层后,只有勾选的模型会附带 service_tier。", + "codexFastTierModelsHint": "启用快速层后,只有勾选的模型会附带service_tier。", "codexFastTierModelCheckbox": "为 {model} 启用快速层", "claudeFastModeTitle": "Claude快速模式", "claudeFastModeDesc": "选择选定的Claude请求进入Anthropic快速模式(速度:“快速”)。", - "claudeFastModeHint": "Anthropic 并未正式支持 SDK 样式客户端的快速模式。启用后,OmniRoute 会转发 X-CPA-Force-Fast-Mode 标头,以便配对的 CLIProxyAPI 构建可以选择欺骗入口点。只有列出的 Opus 模型才会受到 Anthropic 客户端检查的控制。订阅层、最大计划和快速模式信用余额仍然在服务器端强制执行 - 即使打开切换,Anthropic 也可能返回 out_of_credits。", + "claudeFastModeHint": "Anthropic并未正式支持SDK样式客户端的快速模式。启用后,OmniRoute会转发X-CPA-Force-Fast-Mode标头,以便配对的CLIProxyAPI构建可以选择欺骗入口点。只有列出的Opus模型才会受到Anthropic客户端检查的控制。订阅层、最大计划和快速模式信用余额仍然在服务器端强制执行 - 即使打开切换,Anthropic也可能返回out_of_credits。", "claudeFastModeModelsLabel": "应用于模型 ({count})", "claudeFastModeModelCheckbox": "为 {model} 启用快速模式", "claudeFastModeSaveError": "无法更新Claude快速模式设置", "authz": { "cors": { "wildcard": { - "title": "CORS 已向所有源开放 (CORS_ALLOW_ALL=true)", - "desc": "任何网站都可以从访问者的浏览器调用此服务器的 API。请仅在受信任的网络上使用 — 在生产环境中,请在 ALLOWED_ORIGINS 中设置明确的源并禁用 CORS_ALLOW_ALL。" + "title": "CORS已向所有源开放 (CORS_ALLOW_ALL=true)", + "desc": "任何网站都可以从访问者的浏览器调用此服务器的API。请仅在受信任的网络上使用—在生产环境中,请在ALLOWED_ORIGINS中设置明确的源并禁用CORS_ALLOW_ALL。" } }, "title": "授权清单", @@ -7413,18 +7413,18 @@ "LOCAL_ONLY": "仅本地", "ALWAYS_PROTECTED": "始终受保护", "MANAGEMENT": "管理", - "CLIENT_API": "客户端 API", + "CLIENT_API": "客户端API", "PUBLIC": "公开" }, "bypass": { "section": "管理范围绕过", "kill_switch": { "label": "绕过总开关", - "desc": "总开关。关闭时,无论按前缀的列表如何,任何 LOCAL_ONLY 前缀都无法从非环回地址访问。" + "desc": "总开关。关闭时,无论按前缀的列表如何,任何LOCAL_ONLY前缀都无法从非环回地址访问。" }, "prefix": { "label": "可绕过的前缀", - "desc": "管理范围的 API 密钥(或仪表盘会话)可从非环回地址访问的 LOCAL_ONLY 前缀。", + "desc": "管理范围的API Key(或看板会话)可从非环回地址访问的LOCAL_ONLY前缀。", "add": "添加前缀", "placeholder": "/api/mcp/v2/", "empty": "未配置任何前缀,绕过实际处于关闭状态。" @@ -7454,7 +7454,7 @@ "error": { "PASSWORD_REQUIRED": "需要输入当前密码才能应用这些更改。", "PASSWORD_MISMATCH": "当前密码不正确。", - "INSUFFICIENT_SCOPE": "API 密钥缺少 manage 范围。", + "INSUFFICIENT_SCOPE": "API Key缺少manage范围。", "BYPASS_PREFIX_NOT_ALLOWED": "其中一个或多个前缀指向可创建子进程的路由,无法被绕过。", "GENERIC": "更新授权设置失败。" } @@ -7469,20 +7469,20 @@ "resilienceRequestQueueTrigger": "发送到上游之前", "resilienceRequestQueueEffect": "对请求进行排队、限制并发并间隔调用", "resilienceRequestQueueDesc": "该层仅控制排队和节奏。它不存储冷却时间或打开断路器。", - "resilienceAutoEnableApiKeyProvidersDesc": "默认情况下为活动 API 密钥连接启用队列保护。", + "resilienceAutoEnableApiKeyProvidersDesc": "默认情况下为活动API Key连接启用队列保护。", "resilienceMaxQueueWait": "最大队列等待时间", "resilienceConnectionCooldownScope": "单独连接", "resilienceConnectionCooldownTrigger": "当连接返回暂时性上游故障时", "resilienceConnectionCooldownEffect": "暂时跳过该连接并增加重复失败的退避时间", "resilienceConnectionCooldownDesc": "基础冷却时间涵盖短暂的连接故障。当启用上游重试提示时,提供程序的显式窗口将覆盖本地冷却时间。", - "resilienceUseUpstreamRetryHintsDesc": "使用来自上游提供者的重试/重置值(如果可用)。", + "resilienceUseUpstreamRetryHintsDesc": "使用来自上游供应商的重试/重置值(如果可用)。", "resilienceUseUpstream429BreakerHints": "使用上游 429 提示进行断路器冷却", "resilienceUseUpstream429BreakerHintsShort": "使用上游 429 提示", - "resilienceUseUpstream429BreakerHintsDesc": "将 429 响应中的重试/配额耗尽信号应用于断路器冷却持续时间。默认使用每个提供者的策略:直接云提供者默认开启;反向代理、自托管和 CLI 支持的提供者默认关闭。独立于“使用上游重试提示”。", - "resilienceProviderBreakerScope": "整个提供者", + "resilienceUseUpstream429BreakerHintsDesc": "将 429 响应中的重试/配额耗尽信号应用于断路器冷却持续时间。默认使用每个供应商的策略:直接云供应商默认开启;反向代理、自托管和CLI支持的供应商默认关闭。独立于“使用上游重试提示”。", + "resilienceProviderBreakerScope": "整个供应商", "resilienceProviderBreakerTrigger": "连接回退耗尽后最终传输/服务器失败", - "resilienceProviderBreakerEffect": "暂时阻止该提供者,直到重置时间到期", - "resilienceProviderBreakerDesc": "实时断路器状态仅显示在运行状况页面上。连接范围的 429 速率限制保留在连接冷却中,并且不会触发提供者断路器。", + "resilienceProviderBreakerEffect": "暂时阻止该供应商,直到重置时间到期", + "resilienceProviderBreakerDesc": "实时断路器状态仅显示在运行状况页面上。连接范围的 429 速率限制保留在连接冷却中,并且不会触发供应商断路器。", "resilienceResetTime": "复位时间", "resilienceWaitForCooldownTitle": "等待冷却", "resilienceWaitForCooldownScope": "当前客户请求", @@ -7490,17 +7490,17 @@ "resilienceWaitForCooldownEffect": "等待服务器并在第一个冷却时间到期时重试", "resilienceWaitForCooldownDesc": "这仅影响当前请求。它不存储连接或供应商状态。", "resilienceEnableServerWait": "启用服务器端等待", - "resilienceEnableServerWaitDesc": "启用后,OmniRoute 会等待第一次冷却时间到期并自动重试。", + "resilienceEnableServerWaitDesc": "启用后,OmniRoute会等待第一次冷却时间到期并自动重试。", "resilienceMaxAttempts": "最大尝试次数", "resilienceMaxWaitPerAttempt": "每次尝试的最长等待时间", "resilienceComboCooldownWaitTitle": "配额共享组合冷却等待", - "resilienceComboCooldownWaitDesc": "仅适用于配额共享组合:等待短暂的瞬态冷却并重新分发,而不是立即返回 429。绝不等待 quota_exhausted。", - "resilienceComboCooldownWaitToggleDesc": "仅适用于配额共享组合;绝不等待 quota_exhausted。", + "resilienceComboCooldownWaitDesc": "仅适用于配额共享组合:等待短暂的瞬态冷却并重新分发,而不是立即返回 429。绝不等待quota_exhausted。", + "resilienceComboCooldownWaitToggleDesc": "仅适用于配额共享组合;绝不等待quota_exhausted。", "resilienceComboCooldownMaxWaitMs": "每次尝试的最大等待时间", "resilienceComboCooldownBudgetMs": "总等待预算", "resilienceQuotaShareConcurrencyTitle": "配额共享单连接并发", - "resilienceQuotaShareConcurrencyDesc": "仅适用于配额共享组合:当连接设置了 Max Concurrent 上限时,将对该订阅帐户的并发请求进行串行化,以使其永远不会超过其上限。超出的请求将在队列中等待,而不是收到 429。该上限来自每个连接的 Max Concurrent 字段;此开关仅启用或禁用对该上限的遵守。", - "resilienceQuotaShareConcurrencyToggleDesc": "仅适用于配额共享组合;遵守每个连接的 Max Concurrent 上限。", + "resilienceQuotaShareConcurrencyDesc": "仅适用于配额共享组合:当连接设置了Max Concurrent上限时,将对该订阅帐户的并发请求进行串行化,以使其永远不会超过其上限。超出的请求将在队列中等待,而不是收到 429。该上限来自每个连接的Max Concurrent字段;此开关仅启用或禁用对该上限的遵守。", + "resilienceQuotaShareConcurrencyToggleDesc": "仅适用于配额共享组合;遵守每个连接的Max Concurrent上限。", "resilienceProviderCooldownTitle": "服务商冷却", "resilienceProviderCooldownScope": "所有组合请求", "resilienceProviderCooldownTrigger": "当服务商/连接失败时", @@ -7510,54 +7510,54 @@ "resilienceProviderCooldownEnabledDesc": "启用后,将在全局范围内跟踪失败的服务商,并在冷却期间跳过它们。", "resilienceProviderCooldownMin": "最小冷却时间", "resilienceProviderCooldownMax": "最大冷却时间", - "forcedFingerprintTitle": "{provider} 始终启用 — OAuth 账户安全所必需;无法关闭。", + "forcedFingerprintTitle": "{provider} 始终启用—OAuth账户安全所必需;无法关闭。", "forcedFingerprintBadge": "必需", "sessionAffinityTitle": "会话亲和性", "sessionAffinityDesc": "对于任何服务商,将同一个对话保持在同一个帐户上指定的秒数。0 表示禁用。", - "sessionAffinityTtl": "亲和性 TTL (秒)", + "sessionAffinityTtl": "亲和性TTL (秒)", "resetAwareQuotaCacheTitle": "重置感知配额缓存", "resetAwareQuotaCacheDesc": "仅缓存重置感知排序的配额遥测。配额预检仍然保护请求。 0/0 保持实时获取。", - "resetAwareQuotaCacheTtl": "新鲜 TTL(秒)", + "resetAwareQuotaCacheTtl": "新鲜TTL(秒)", "resetAwareQuotaCacheMaxStale": "最大陈旧时间(秒)", "qdrantCleanupSuccess": "好的:删除 {count} 点(保留:{days} 天)", "qdrantCleanupFailed": "清理失败", "qdrantCleanupError": "错误:{error}", - "vercelRelaySuccess": "Vercel Relay 部署成功", - "vercelRelayButton": "部署 Vercel Relay", - "vercelRelayModalTitle": "部署 Vercel Relay", - "vercelRelayWarning": "警告:需要 Vercel 部署令牌。此令牌仅用于创建无服务器中继,OmniRoute 不会存储该令牌。", - "vercelRelayTokenLabel": "Vercel 访问令牌", - "vercelRelayProjectNameLabel": "Vercel 项目名称", - "vercelRelayFreeTierNote": "中继是在 Vercel 免费层上部署的轻量级代理端点,用于绕过本地网络/区域限制。", + "vercelRelaySuccess": "Vercel Relay部署成功", + "vercelRelayButton": "部署Vercel Relay", + "vercelRelayModalTitle": "部署Vercel Relay", + "vercelRelayWarning": "警告:需要Vercel部署令牌。此令牌仅用于创建无服务器中继,OmniRoute不会存储该令牌。", + "vercelRelayTokenLabel": "Vercel访问令牌", + "vercelRelayProjectNameLabel": "Vercel项目名称", + "vercelRelayFreeTierNote": "中继是在Vercel免费层上部署的轻量级代理端点,用于绕过本地网络/区域限制。", "vercelRelayDeploying": "正在部署...", "vercelRelayDeploy": "部署", "deployRelayButton": "部署中继", - "denoRelayButton": "部署 Deno 中继", - "denoRelayModalTitle": "部署 Deno 中继", - "denoRelayWarning": "警告:需要 Deno Deploy 组织令牌。此令牌仅用于创建中继应用,绝不会被 OmniRoute 存储。", - "denoRelayTokenLabel": "Deno Deploy 组织令牌", + "denoRelayButton": "部署Deno中继", + "denoRelayModalTitle": "部署Deno中继", + "denoRelayWarning": "警告:需要Deno Deploy组织令牌。此令牌仅用于创建中继应用,绝不会被OmniRoute存储。", + "denoRelayTokenLabel": "Deno Deploy组织令牌", "denoRelayOrgDomainLabel": "组织域名", - "denoRelayProjectNameLabel": "Deno 应用名称", - "denoRelayFreeTierNote": "Deno Deploy v2 运行在全球边缘网络上。免费层:每月 100 万次请求和 100GiB 出站流量,无单次请求 CPU 限制,最多支持 20 个活动应用和 50 个自定义域名。", + "denoRelayProjectNameLabel": "Deno应用名称", + "denoRelayFreeTierNote": "Deno Deploy v2 运行在全球边缘网络上。免费层:每月 100 万次请求和 100GiB出站流量,无单次请求CPU限制,最多支持 20 个活动应用和 50 个自定义域名。", "denoRelayDeploying": "正在部署...", "denoRelayDeploy": "部署", - "cloudflareRelaySuccess": "Cloudflare Relay 部署成功", - "cloudflareRelayButton": "部署 Cloudflare Relay", - "cloudflareRelayModalTitle": "部署 Cloudflare Worker Relay", - "cloudflareRelayWarning": "部署一个 Cloudflare Worker,通过 Cloudflare 的边缘网络代理 LLM 请求——将主机 IP 隐藏在动态 Cloudflare 地址后面。该 Worker 强制执行一次性身份验证密钥,因此公开的 workers.dev URL 无法被用作开放代理。", - "cloudflareRelayTokenHowto": "在“我的个人资料” -> “API 令牌” -> “创建令牌” -> “自定义令牌” -> “帐户 / Workers 脚本 / 编辑”下创建 API 令牌。", - "cloudflareRelayAccountIdLabel": "Cloudflare 帐户 ID", - "cloudflareRelayAccountIdHint": "位于 Cloudflare 控制面板概述页面的右侧。", - "cloudflareRelayApiTokenLabel": "Cloudflare API 令牌", - "cloudflareRelayApiTokenHint": "需要“Workers 脚本: 编辑”权限。该令牌仅在部署时使用,绝不会被存储。", - "cloudflareRelayProjectNameLabel": "Worker 名称", - "cloudflareRelayFreeTierNote": "免费层:每个 Cloudflare 帐户每天 100,000 次请求。", + "cloudflareRelaySuccess": "Cloudflare Relay部署成功", + "cloudflareRelayButton": "部署Cloudflare Relay", + "cloudflareRelayModalTitle": "部署Cloudflare Worker Relay", + "cloudflareRelayWarning": "部署一个Cloudflare Worker,通过Cloudflare的边缘网络代理LLM请求——将主机IP隐藏在动态Cloudflare地址后面。该Worker强制执行一次性身份验证密钥,因此公开的workers.dev URL无法被用作开放代理。", + "cloudflareRelayTokenHowto": "在“我的个人资料” -> “API令牌” -> “创建令牌” -> “自定义令牌” -> “帐户 / Workers脚本 / 编辑”下创建API令牌。", + "cloudflareRelayAccountIdLabel": "Cloudflare帐户ID", + "cloudflareRelayAccountIdHint": "位于Cloudflare控制面板概述页面的右侧。", + "cloudflareRelayApiTokenLabel": "Cloudflare API令牌", + "cloudflareRelayApiTokenHint": "需要“Workers脚本: 编辑”权限。该令牌仅在部署时使用,绝不会被存储。", + "cloudflareRelayProjectNameLabel": "Worker名称", + "cloudflareRelayFreeTierNote": "免费层:每个Cloudflare帐户每天 100,000 次请求。", "cloudflareRelayDeploying": "正在部署...", "cloudflareRelayDeploy": "部署", - "cloudflareRelayCredsRequired": "帐户 ID 和 API 令牌是必填项", + "cloudflareRelayCredsRequired": "帐户ID和API令牌是必填项", "cloudflareRelayDeployFailed": "部署失败", "modelLockout": "模型锁定", - "modelLockoutPageDescription": "配置哪些 HTTP 错误代码会触发单模型锁定,并控制冷却行为。", + "modelLockoutPageDescription": "配置哪些HTTP错误代码会触发单模型锁定,并控制冷却行为。", "modelLockoutLoadFailed": "加载模型锁定设置失败", "modelLockoutSaveFailed": "保存模型锁定设置失败", "modelLockoutLoading": "正在加载模型锁定设置...", @@ -7568,32 +7568,32 @@ "removeErrorCode": "移除 {code}", "addErrorCode": "添加错误代码...", "suggestions": "建议:", - "modelLockoutMaxCooldownHint": "≥ 基础冷却时间 — 3,600,000 毫秒", + "modelLockoutMaxCooldownHint": "≥ 基础冷却时间— 3,600,000 毫秒", "modelLockoutEnabled": "启用模型锁定", "modelLockoutEnabledDescription": "启用后,因配置的错误代码而失败的模型将被临时锁定,以防止重试循环。", "modelLockoutErrorCodes": "错误代码", - "modelLockoutErrorCodesDescription": "触发模型锁定的 HTTP 状态码。输入代码并点击“添加”,或从建议中选择。", + "modelLockoutErrorCodesDescription": "触发模型锁定的HTTP状态码。输入代码并点击“添加”,或从建议中选择。", "modelLockoutBaseCooldown": "基础冷却时间 (毫秒)", "modelLockoutBaseCooldownDescription": "允许重试模型之前的初始冷却时间(以毫秒为单位)。", "modelLockoutMaxCooldown": "最大冷却时间 (毫秒)", "modelLockoutMaxCooldownDescription": "最大冷却时间(以毫秒为单位)。防止过长的锁定时间。", "modelLockoutExponentialBackoff": "指数退避", - "modelLockoutExponentialBackoffDescription": "When enabled, each consecutive failure increases the cooldown duration exponentially.", + "modelLockoutExponentialBackoffDescription": "启用后,每次连续失败会使冷却时间呈指数增长。", "modelLockoutMaxBackoffSteps": "最大退避步数", "modelLockoutMaxBackoffStepsDescription": "冷却时间停止增长前的最大退避步数。在大多数配置中,会先达到最大冷却时间上限,因此这可以作为提高最大冷却时间时的安全上限。", "disableSessionStickiness": "禁用会话粘性", "disableSessionStickinessDesc": "轮询和随机组合在每次请求时都会轮换到不同的连接,而不是通过首条消息的哈希将整个对话固定在单个连接上。保持关闭以保留多轮对话的提示词缓存命中率。每个组合的覆盖设置优先。", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", + "promptCacheAffinity": "提示缓存本地化路由", + "promptCacheAffinityDesc": "在保持健康检查和配额故障转移的前提下,优先将匹配prompt-cache键的请求路由到同一供应商账户。", "credentialRedaction": "凭据脱敏", - "credentialRedactionDesc": "对发送给提供者的上下文以及响应中的 API 密钥、令牌和机密信息进行脱敏。", + "credentialRedactionDesc": "对发送给供应商的上下文以及响应中的API Key、令牌和机密信息进行脱敏。", "enableCredentialRedaction": "启用凭据脱敏", - "enableCredentialRedactionDesc": "清除消息、工具调用和响应中的 API 密钥、令牌、私钥和 JWT。", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled" + "enableCredentialRedactionDesc": "清除消息、工具调用和响应中的API Key、令牌、私钥和JWT。", + "pricingAutoSyncDisabled": "自动同步已禁用", + "pricingAutoSyncEnabled": "自动同步已启用" }, "contextRtk": { - "title": "RTK 引擎", + "title": "RTK引擎", "description": "面向工具输出、终端日志和构建结果的命令感知压缩。", "enabled": "已启用", "intensity": "强度", @@ -7606,7 +7606,7 @@ "filterCatalog": "过滤器目录", "filterCatalogDesc": "可用的输出过滤器(按类别)", "guidedConfig": "配置", - "guidedConfigDesc": "调整 RTK 过滤终端输出的方式", + "guidedConfigDesc": "调整RTK过滤终端输出的方式", "maxLines": "最大行数", "maxChars": "最大字符数", "deduplicateThreshold": "去重阈值", @@ -7629,10 +7629,10 @@ "presetMedium": "标准型", "run": "运行", "result": "结果", - "previewEmpty": "运行示例以预览 RTK 输出。", + "previewEmpty": "运行示例以预览RTK输出。", "detected": "已检测", - "masterSwitchOffAlert": "Token Saver 总开关已关闭 — 在压缩设置中打开它之前,这些设置不会影响请求。", - "tokensFiltered": "已过滤 token", + "masterSwitchOffAlert": "Token Saver总开关已关闭—在压缩设置中打开它之前,这些设置不会影响请求。", + "tokensFiltered": "已过滤token", "filtersActive": "活动过滤器", "requests": "请求数", "avgSavings": "平均节省", @@ -7643,7 +7643,7 @@ "tooltipMaxChars": "每个输出块的最大字符数。", "tooltipMaxLines": "命令输出中保留的最大行数。多余的部分被截断。", "learnDiscoverTitle": "学习与发现过滤器", - "learnDiscoverDesc": "挖掘捕获的命令输出(必须开启“原始输出保留”)以建议新的 RTK 过滤器。仅作为建议——由您进行审核并保存。", + "learnDiscoverDesc": "挖掘捕获的命令输出(必须开启“原始输出保留”)以建议新的RTK过滤器。仅作为建议——由您进行审核并保存。", "discoverHeading": "发现重复的噪音", "discoverButton": "扫描样本", "discoverScanning": "正在扫描…", @@ -7651,15 +7651,15 @@ "discoverSamples": "已扫描 {count} 个样本", "discoverHits": "跨样本出现 {hits}×", "learnHeading": "学习命令的过滤器", - "learnCommandPlaceholder": "例如 npm install", + "learnCommandPlaceholder": "例如npm install", "learnButton": "建议过滤器", "learnEmpty": "暂无建议。请输入您运行过的命令并进行扫描。", "learnSamplesUsed": "从 {count} 个匹配的样本中学习", "suggestionError": "无法加载建议。请检查管理授权并重试。", - "tomlImportTitle": "导入 RTK TOML 过滤器", - "tomlImportDesc": "验证 RTK TOML schema v1 过滤器并全局安装。安装会写入 DATA_DIR/rtk/filters.toml;只有在明确确认后才会替换现有文件。", - "tomlChooseFile": "选择 TOML 文件", - "tomlImportPlaceholder": "在此处粘贴 RTK filters.toml 内容...", + "tomlImportTitle": "导入RTK TOML过滤器", + "tomlImportDesc": "验证RTK TOML schema v1 过滤器并全局安装。安装会写入DATA_DIR/rtk/filters.toml;只有在明确确认后才会替换现有文件。", + "tomlChooseFile": "选择TOML文件", + "tomlImportPlaceholder": "在此处粘贴RTK filters.toml内容...", "tomlValidate": "验证", "tomlValidating": "正在验证…", "tomlInstall": "全局安装", @@ -7673,8 +7673,8 @@ "tomlTestCount": "{count} 个测试", "tomlTestPassed": "已通过", "tomlTestFailed": "已失败", - "tomlImportError": "无法处理 RTK TOML 文件。", - "tomlFileReadError": "无法读取选定的 TOML 文件。" + "tomlImportError": "无法处理RTK TOML文件。", + "tomlFileReadError": "无法读取选定的TOML文件。" }, "compressionEngineConfig": { "loading": "正在加载…", @@ -7693,9 +7693,9 @@ "preview": "预览", "previewInput": "预览输入", "processing": "正在处理…", - "previewSample": "敏捷的棕色狐狸跳过了懒狗。这是一条用于预览压缩效果的示例消息。它包含足够的文本以展示显著的 Token 节省效果。", - "originalTokens": "原始 Token", - "compressedTokens": "压缩后 Token", + "previewSample": "敏捷的棕色狐狸跳过了懒狗。这是一条用于预览压缩效果的示例消息。它包含足够的文本以展示显著的Token节省效果。", + "originalTokens": "原始Token", + "compressedTokens": "压缩后Token", "savings": "节省量", "original": "原始", "compressed": "压缩后", @@ -7703,7 +7703,7 @@ "last7Days": "最近 7 天", "noDataYet": "暂无数据", "runs": "运行次数", - "tokensSaved": "已节省 Token", + "tokensSaved": "已节省Token", "averageSavings": "平均节省量", "diffLabels": { "change": "变更", @@ -7714,7 +7714,7 @@ "engines": { "headroom": { "name": "Headroom SmartCrusher", - "description": "带有显式行数标记的同构 JSON 数组无损表格化压缩。" + "description": "带有显式行数标记的同构JSON数组无损表格化压缩。" }, "session-dedup": { "name": "会话去重", @@ -7726,11 +7726,11 @@ }, "llmlingua": { "name": "LLMLingua-2 (语义剪枝)", - "description": "基于 ONNX 的语义 Token 分类。仅压缩自然语言文本;代码块和保留结构受保护。模型或 Worker 发生错误时自动放行。" + "description": "基于ONNX的语义Token分类。仅压缩自然语言文本;代码块和保留结构受保护。模型或Worker发生错误时自动放行。" }, "lite": { "name": "轻量", - "description": "快速缩减空白字符、工具结果和图片 URL。" + "description": "快速缩减空白字符、工具结果和图片URL。" }, "aggressive": { "name": "激进", @@ -7738,7 +7738,7 @@ }, "ultra": { "name": "极致", - "description": "启发式 Token 剪枝,支持可选的本地 SLM 回退。" + "description": "启发式Token剪枝,支持可选的本地SLM回退。" } }, "fields": { @@ -7748,11 +7748,11 @@ }, "fuzzy": { "label": "模糊近似重复去重", - "description": "选择将与较早消息相似度至少约为 85% 的整条消息替换为可恢复的 CCR 标记。" + "description": "选择将与较早消息相似度至少约为 85% 的整条消息替换为可恢复的CCR标记。" }, "minChars": { "label": "最小块字符数", - "description": "块成为 CCR 候选对象的最小字符数。" + "description": "块成为CCR候选对象的最小字符数。" }, "retrievalRampFactor": { "label": "检索爬升因子 (H8)", @@ -7762,7 +7762,7 @@ "label": "模型" }, "minTokens": { - "label": "最小 Token 数 (下限)" + "label": "最小Token数 (下限)" }, "compressionRate": { "label": "压缩率" @@ -7772,7 +7772,7 @@ }, "minRows": { "label": "压缩所需的最小行数", - "description": "触发表格压缩所需的同构 JSON 数组的最小行数。默认值: 8。" + "description": "触发表格压缩所需的同构JSON数组的最小行数。默认值: 8。" }, "preserveSystemPrompt": { "label": "保留系统提示词" @@ -7781,7 +7781,7 @@ "label": "启用摘要生成器" }, "maxTokensPerMessage": { - "label": "每条消息的最大 Token 数" + "label": "每条消息的最大Token数" }, "minSavingsThreshold": { "label": "最小节省阈值" @@ -7811,7 +7811,7 @@ }, "options": { "model": { - "tinybert": "TinyBERT (57 MB, 快速 — 默认)", + "tinybert": "TinyBERT (57 MB, 快速—默认)", "bert-base": "BERT-base (710 MB, 更高准确率)" }, "intensity": { @@ -7848,22 +7848,22 @@ "hideExplanation": "隐藏说明", "howItWorks": "工作原理", "saveSettingsFailed": "保存设置失败。", - "explanationIntro": "压缩通过在将历史记录发送给提供者之前对其进行重写来减少 Token 和成本,同时保留其语义。", - "explanationActiveProfile": "活动配置文件:选择全局运行的压缩配置文件 — 面板派生的默认配置或您保存的命名组合之一。", + "explanationIntro": "压缩通过在将历史记录发送给供应商之前对其进行重写来减少 Token和成本,同时保留其语义。", + "explanationActiveProfile": "活动配置文件:选择全局运行的压缩配置文件—面板派生的默认配置或您保存的命名组合之一。", "explanationDefault": "默认(来自面板):派生自您在“压缩设置”中配置的总开关和各引擎开关。", "explanationNamedCombos": "命名组合:您在命名组合编辑器中构建的已保存流水线。选择其中一个会将其设为每个请求的活动配置文件。", "explanationPreview": "预览:按顺序显示活动配置文件运行的引擎。", "activeProfile": "活动配置文件", - "activeProfileDescription": "选择全局运行的压缩配置文件 — 面板派生的默认配置或已保存的命名组合。", + "activeProfileDescription": "选择全局运行的压缩配置文件—面板派生的默认配置或已保存的命名组合。", "defaultFromPanel": "默认(来自面板)", "runs": "运行:", - "defaultConfiguredPrefix": "默认 — 配置于", + "defaultConfiguredPrefix": "默认—配置于", "compressionSettings": "压缩设置", - "providerDelegated": "提供者委托压缩", + "providerDelegated": "供应商委托压缩", "contextEditingClaude": "上下文编辑 (Claude)", - "contextEditingDescription": "允许提供者在服务端清除旧的工具使用块,而无需重写消息。", + "contextEditingDescription": "允许供应商在服务端清除旧的工具使用块,而无需重写消息。", "contextEditingAria": "上下文编辑", - "contextEditingNote": "目前仅适用于 Claude (Anthropic)。这是一种委托模式:提供者在服务端清除旧的工具使用块 — 我们不会重写消息。这不会影响其他提供者。", + "contextEditingNote": "目前仅适用于Claude (Anthropic)。这是一种委托模式:供应商在服务端清除旧的工具使用块—我们不会重写消息。这不会影响其他供应商。", "namedCombos": "命名组合", "namedCombosDescription": "保存不同的流水线并将其分配给特定的路由组合。", "comboNamePlaceholder": "组合名称", @@ -7883,7 +7883,7 @@ }, "compressionStudio": { "noRun": "没有可用的压缩运行记录。", - "liveDataHint": "实时数据通过 WebSocket 压缩通道传输。", + "liveDataHint": "实时数据通过WebSocket压缩通道传输。", "cockpitView": "驾驶舱视图", "canvas": "画布", "waterfall": "瀑布图", @@ -7898,7 +7898,7 @@ "splitComingSoon": "分屏视图 (即将推出)", "inputPlaceholder": "粘贴提示词、工具输出或上下文…", "activeCombined": "在组合流程中处于活动状态", - "requiresOnnx": "需要 ONNX 模型", + "requiresOnnx": "需要ONNX模型", "verifyFidelity": "验证保真度 (拒绝任何损坏内容的层)", "fuzzyDedup": "模糊去重 (近似重复 → CCR)", "protectSensitive": "保护敏感内容 (风险门控)", @@ -7915,26 +7915,26 @@ "skipped": "跳过", "input": "输入", "output": "输出", - "tokenCount": "{count, number} 个 token", + "tokenCount": "{count, number} 个token", "tokenShort": "tok", - "provider": "提供者", + "provider": "供应商", "judgeModel": "裁判模型", - "judgeModelPlaceholder": "例如 claude-haiku", + "judgeModelPlaceholder": "例如claude-haiku", "maxCostUsd": "美元上限", "enterJudgeModel": "输入裁判模型", "verifying": "正在验证…", "verifyAll": "验证全部", "spent": "已花费 ${spent} / ${cap}", "capReached": "已达上限", - "loadAb": "加载 A/B", + "loadAb": "加载A/B", "engine": "引擎", "savings": "节省", "retention": "保留率", - "outputTokensShort": "输出 Token", + "outputTokensShort": "输出Token", "fidelity": "保真度", "playTab": "播放", "compareTab": "对比", - "encoderComparison": "编码器 A/B — {count} 个数组", + "encoderComparison": "编码器A/B— {count} 个数组", "encoderWinner": "胜出者:{winner}", "encoder": "编码器", "bytes": "字节", @@ -7942,19 +7942,19 @@ }, "omniglyph": { "preview": "预览", - "description": "上下文转图像压缩。将系统提示词、工具文档和密集历史记录渲染为紧凑的 PNG 页面,供 Claude Fable 5 读取以替代文本。图像 Token 按尺寸而非字符计费,因此转换后的区块成本降低约 10 倍。仅限 Anthropic 直连路由。", + "description": "上下文转图像压缩。将系统提示词、工具文档和密集历史记录渲染为紧凑的PNG页面,供Claude Fable 5 读取以替代文本。图像Token按尺寸而非字符计费,因此转换后的区块成本降低约 10 倍。仅限Anthropic直连路由。", "economicsTitle": "经济效益", "economics": { - "fewerTokens": "转换区块减少的 Token", + "fewerTokens": "转换区块减少的Token", "savings": "端到端节省(实测)", - "imageTokens": "1568×728 页面(约 28k 字符)的图像 Token", + "imageTokens": "1568×728 页面(约 28k字符)的图像Token", "accuracy": "Fable 5 上的读取准确率(n=30)" }, "beforeAfterTitle": "之前 → 之后", "blockSavings": "此区块 −{percent}% Token", - "realRender": "{characters, number} 个字符的密集工具文档的真实渲染 — 非效果图。", - "textTokens": "文本 · ≈ {tokens, number} 个 Token", - "renderedTokens": "渲染页面 · ≈ {tokens, number} 个 Token", + "realRender": "{characters, number} 个字符的密集工具文档的真实渲染—非效果图。", + "textTokens": "文本· ≈ {tokens, number} 个Token", + "renderedTokens": "渲染页面· ≈ {tokens, number} 个Token", "renderedImageAlt": "渲染的密集页面,{width}×{height}px", "gatesTitle": "触发时机", "gatesDescription": "故障闭合(Fail-closed):必须通过所有关卡,否则请求将原样透传(每次跳过均记录为 skip:<reason>)。", @@ -7962,33 +7962,33 @@ "model": { "label": "模型", "pass": "claude-fable-5", - "why": "仅 Fable 5 能以 100% 的准确率读取密集页面(实测,n=30)。GPT-5.5 和 Gemini 2.5 Flash 会被拦截。" + "why": "仅Fable 5 能以 100% 的准确率读取密集页面(实测,n=30)。GPT-5.5 和Gemini 2.5 Flash会被拦截。" }, "transport": { "label": "传输方式", - "pass": "Anthropic 直连", - "why": "聚合服务商会对图像进行重采样并破坏清晰度 — 仅直连路由有效。" + "pass": "Anthropic直连", + "why": "聚合服务商会对图像进行重采样并破坏清晰度—仅直连路由有效。" }, "format": { "label": "格式", - "pass": "原生 Claude", - "why": "请求体必须使用 Claude 格式,且绝不能在 messages 中放入 system 角色。" + "pass": "原生Claude", + "why": "请求体必须使用Claude格式,且绝不能在messages中放入system角色。" }, "profitable": { "label": "具备效益", "pass": "足够密集", - "why": "精确的 28px-patch 成本关卡会针对每个请求进行判定;较小或稀疏的文本将原样透传。" + "why": "精确的 28px-patch成本关卡会针对每个请求进行判定;较小或稀疏的文本将原样透传。" } }, "enableTitle": "启用引擎", - "enableDescription": "在堆栈中最后运行(在 RTK/Caveman 清理文本、OmniGlyph 将剩余部分转换为图像之后),也可以通过 omniglyph 模式独立运行。此功能为预览版,在端到端验证完成前默认保持关闭。", + "enableDescription": "在堆栈中最后运行(在RTK/Caveman清理文本、OmniGlyph将剩余部分转换为图像之后),也可以通过 omniglyph 模式独立运行。此功能为预览版,在端到端验证完成前默认保持关闭。", "saved": "已保存。", "saveFailed": "无法保存。", - "enableAria": "启用 OmniGlyph 引擎" + "enableAria": "启用OmniGlyph引擎" }, "embeddedServices": { "title": "嵌入式服务", - "description": "按需管理的本地引擎 — CLIProxyAPI、9Router、Mux 和 Bifrost。仅可通过环回访问。", + "description": "按需管理的本地引擎—CLIProxyAPI、9Router、Mux和Bifrost。仅可通过环回访问。", "stateRunning": "运行中", "stateStopped": "已停止", "stateStarting": "正在启动", @@ -7999,7 +7999,7 @@ "port": "端口 {port}", "externalBadge": "外部管理", "externalTitle": "检测到外部 9Router", - "externalDescription": "OmniRoute 在 {host}:{port} 发现了 9Router。其生命周期、日志、更新和服务密钥仍由外部安装管理。", + "externalDescription": "OmniRoute在 {host}:{port} 发现了 9Router。其生命周期、日志、更新和服务密钥仍由外部安装管理。", "start": "启动", "starting": "正在启动…", "stop": "停止", @@ -8011,10 +8011,10 @@ "install": "安装", "installing": "正在安装…", "autoStart": "自动启动", - "autoStartDescription": "在 OmniRoute 启动时自动启动 {name}", - "apiKey": "API 密钥", - "apiKeyDescription": "OmniRoute 用于向 {name} 进行身份验证的密钥", - "keyRotated": "密钥已轮换 — {name} 已重启以应用新密钥", + "autoStartDescription": "在OmniRoute启动时自动启动 {name}", + "apiKey": "API Key", + "apiKeyDescription": "OmniRoute用于向 {name} 身份验证的密钥", + "keyRotated": "密钥已轮换— {name} 已重启以应用新密钥", "keyRotateFailed": "轮换密钥失败", "keyRevealFailed": "显示密钥失败", "keyRevealEmpty": "显示失败:未返回密钥", @@ -8023,72 +8023,72 @@ "hide": "隐藏", "rotateKey": "轮换密钥", "rotating": "正在轮换…", - "keyAutoHide": "Key will be hidden automatically in 30 seconds.", - "revealTitle": "Reveal API Key", - "revealConfirm": "Revealing the API key will be logged in the audit trail. Continue?", + "keyAutoHide": "密钥将在 30 秒后自动隐藏。", + "revealTitle": "显示API Key", + "revealConfirm": "Revealing the API Key will be logged in the audit trail. Continue?", "cancel": "Cancel", - "install9Router": "Install 9Router", - "install9RouterDescription": "Downloads and installs 9Router via npm. Requires approximately 500 MB of disk space.", + "install9Router": "安装 9Router", + "install9RouterDescription": "通过npm下载并安装 9Router。需要约 500 MB磁盘空间。", "version": "Version", - "versionHint": "Enter “latest” or a specific version (for example, 1.2.3).", + "versionHint": "输入“latest”或具体版本号(例如 1.2.3)。", "servicePort": "Port", - "servicePortHint": "OmniRoute and 9Router must use different ports. The default 9Router port is 20130.", + "servicePortHint": "OmniRoute和 9Router必须使用不同端口。9Router默认端口为 20130。", "installationFailed": "Installation failed (HTTP {status})", - "installationSucceeded": "9Router installed successfully. Starting up…", - "networkInstallFailed": "Network error — could not reach the install endpoint", + "installationSucceeded": "9Router安装成功。正在启动…", + "networkInstallFailed": "网络错误 — 无法连接安装端点", "availableModels": "Available Models", - "modelsLoading": "Loading…", + "modelsLoading": "加载中…", "modelsDiscovered": "{count, plural, one {已发现 # 个模型} other {已发现 # 个模型}}", - "modelsLoadFailed": "Failed to load models", - "refreshing": "Refreshing…", - "refreshNow": "Refresh now", - "noModels": "No models found. Select “Refresh now” to sync from the running service.", + "modelsLoadFailed": "加载模型失败", + "refreshing": "正在刷新…", + "refreshNow": "立即刷新", + "noModels": "未找到模型。选择立即刷新以从运行中的服务同步。", "unavailable": "Unavailable", "pageOf": "Page {page} of {total}", "previous": "Previous", "next": "Next", - "providerExposure": "Provider Exposure", - "providerExposureDescription": "Expose 9Router models as a routing target under the 9router/ prefix.", - "providerExposureLabel": "Expose as 9router/…", - "providerExposureHint": "When enabled, discovered models appear in provider selectors across OmniRoute.", + "providerExposure": "供应商Exposure", + "providerExposureDescription": "将 9Router模型作为路由目标暴露在 9router/ 前缀下。", + "providerExposureLabel": "以 9router/… 形式暴露", + "providerExposureHint": "启用后,已发现的模型会出现在OmniRoute各处的供应商选择器中。", "providerExposureUpdateFailed": "Failed to update (HTTP {status})", - "providerExposureNetworkFailed": "Network error — could not update the provider exposure setting", + "providerExposureNetworkFailed": "网络错误 — 无法更新供应商暴露设置", "webUi": "9Router Web UI", - "openNewTab": "Open in new tab", - "filterLogs": "Filter logs…", + "openNewTab": "在新标签页中打开", + "filterLogs": "筛选日志…", "resume": "Resume", "pause": "Pause", "clear": "Clear", "download": "Download", - "noLogs": "No log output yet.", + "noLogs": "暂无日志输出。", "logStreamFailed": "Unable to stream {name} logs. Check local access and service status.", - "fallbackRouting": "Fallback Routing", - "fallbackRoutingDescription": "通过 CLIProxyAPI 重试失败的服务商请求", + "fallbackRouting": "回退路由", + "fallbackRoutingDescription": "通过CLIProxyAPI重试失败的服务商请求", "enableFallback": "启用回退", "cliproxyUrl": "CLIProxyAPI URL", "fallbackCodes": "回退状态码(逗号分隔)", - "invalidUrl": "无效的 URL — 必须以 http:// 或 https:// 开头", + "invalidUrl": "无效的URL—必须以http:// 或https:// 开头", "saved": "已保存", "saveFailed": "保存设置失败", "modelMapping": "模型映射", - "modelMappingDescription": "将 OmniRoute 模型 ID 映射到 CLIProxyAPI 模型 ID(例如,\"gpt-4o\": \"openai-gpt-4o\")", - "modelMappingEditor": "模型映射 JSON 编辑器", + "modelMappingDescription": "将OmniRoute模型ID映射到CLIProxyAPI模型ID(例如,\"gpt-4o\": \"openai-gpt-4o\")", + "modelMappingEditor": "模型映射JSON编辑器", "mappingSaved": "映射已保存", "mappingSaveFailed": "保存映射失败", - "mappingInvalidJson": "无效的 JSON。", - "mappingMustBeObject": "映射必须是一个 JSON 对象,不能是数组或原始值。", + "mappingInvalidJson": "无效的JSON。", + "mappingMustBeObject": "映射必须是一个JSON对象,不能是数组或原始值。", "mappingValueMustBeString": "键 “{key}” 的值必须是字符串。", "save": "保存" }, "contextCaveman": { - "title": "Caveman 引擎", + "title": "Caveman引擎", "description": "基于规则的消息压缩,包含语言包、分析和输出模式控制。", "advancedConfig": "高级配置", "advancedConfigDesc": "微调压缩行为", "aggressiveSettings": "激进的设置", "aggressiveSettingsDesc": "最大压缩与潜在的质量权衡", "requests": "请求数", - "tokensSaved": "已节省 token", + "tokensSaved": "已节省token", "savingsPercent": "节省比例", "avgLatency": "平均延迟", "languagePacks": "语言包", @@ -8102,12 +8102,12 @@ "autoDetect": "自动检测语言", "rulesCount": "{count} 条规则", "inputCompressionTitle": "输入压缩", - "inputCompressionDesc": "用更短的措辞重写聊天历史,可减少约 50% 的输入 Token。", + "inputCompressionDesc": "用更短的措辞重写聊天历史,可减少约 50% 的输入Token。", "analyticsTitle": "压缩分析", "noAnalytics": "尚无压缩分析。", - "masterDisabledWarning": "Token Saver 总开关已关闭 — 在您从“压缩设置”中将其开启或在此处更改之前,这些设置不会影响请求。", + "masterDisabledWarning": "Token Saver总开关已关闭—在您从“压缩设置”中将其开启或在此处更改之前,这些设置不会影响请求。", "outputMode": "输出方式", - "outputModeDesc": "指示 LLM 以简洁、紧凑的格式回复。", + "outputModeDesc": "指示LLM以简洁、紧凑的格式回复。", "outputModeTitle": "输出模式", "quickSettings": "快速设置", "quickSettingsDesc": "开始使用的基本压缩设置", @@ -8122,28 +8122,28 @@ "tooltipMinLength": "比这短的消息不会被压缩。更低=更多压缩。", "tooltipMinSavings": "仅当至少保存这么多令牌时才进行压缩。", "ultraSettings": "超级设置", - "ultraSettingsDesc": "SLM 支持的语义压缩", + "ultraSettingsDesc": "SLM支持的语义压缩", "preview": { - "lite": "回复要简洁。保留技术术语、代码、错误、URL 和标识符。", + "lite": "回复要简洁。保留技术术语、代码、错误、URL和标识符。", "full": "回复要简短紧凑。保留所有技术实质。", "ultra": "用常见技术缩写进行极简回复。保留精确符号。" } }, "translator": { "title": "翻译器", - "metaTitle": "翻译器游乐场 | OmniRoute", - "metaDescription": "调试、测试和可视化提供者之间的 API 格式转换", - "playgroundTitle": "翻译器游乐场", - "playground": "游乐场", + "metaTitle": "翻译器演练场 | OmniRoute", + "metaDescription": "调试、测试和可视化供应商之间的API格式转换", + "playgroundTitle": "翻译器演练场", + "playground": "演练场", "realtime": "实时翻译活动", "chatTester": "聊天测试仪", "testBench": "测试台", "liveMonitor": "实时监控", - "modeDescriptionPlayground": "粘贴任意 API 请求体,查看 OmniRoute 如何在不同提供者格式之间进行转换(OpenAI ↔ Claude ↔ Gemini ↔ Responses API)。", - "modeDescriptionChatTester": "通过 OmniRoute 发送真实聊天请求,并检查完整往返流程:输入、转换后的请求、提供者响应以及转换后的输出。", - "modeDescriptionTestBench": "运行预定义的场景并比较提供者和模型之间的兼容性。", - "modeDescriptionLiveMonitor": "实时查看请求流经 OmniRoute 时产生的翻译事件。", - "modeDescriptionFallback": "调试、测试并可视化 OmniRoute 如何在提供者之间转换 API 请求。", + "modeDescriptionPlayground": "粘贴任意API请求体,查看OmniRoute如何在不同供应商格式之间进行转换(OpenAI ↔ Claude ↔ Gemini ↔ Responses API)。", + "modeDescriptionChatTester": "通过OmniRoute发送真实聊天请求,并检查完整往返流程:输入、转换后的请求、供应商响应以及转换后的输出。", + "modeDescriptionTestBench": "运行预定义的场景并比较供应商和模型之间的兼容性。", + "modeDescriptionLiveMonitor": "实时查看请求流经OmniRoute时产生的翻译事件。", + "modeDescriptionFallback": "调试、测试并可视化OmniRoute如何在供应商之间转换API请求。", "recentTranslations": "最近的翻译", "noTranslations": "还没有翻译", "source": "来源", @@ -8158,40 +8158,40 @@ "avgLatency": "平均延迟", "millisecondsShort": "{value} 毫秒", "notAvailableSymbol": "—", - "liveAutoRefreshing": "直播 — 自动刷新", + "liveAutoRefreshing": "直播—自动刷新", "paused": "已暂停", - "eventsAppearHint": "请求流经 OmniRoute 时,翻译事件会显示在这里。你可以通过下面任一方式生成事件:", + "eventsAppearHint": "请求流经OmniRoute时,翻译事件会显示在这里。你可以通过下面任一方式生成事件:", "chatTesterTab": "聊天测试选项卡", "testBenchTab": "测试台选项卡", "externalApiCalls": "外部API调用", - "ideCliIntegrations": "IDE/CLI 集成", + "ideCliIntegrations": "IDE/CLI集成", "inMemoryNote": "注意:事件存储在内存中,并在服务器重新启动时重置。", "ok": "好的", "errorShort": "错误率", "formatConverter": "格式转换器", - "formatConverterDescription": "粘贴或输入 JSON 请求体。翻译器会自动识别源格式并将其转换为目标格式。你可以借此调试 OmniRoute 在各种格式之间的转换行为(OpenAI ↔ Claude ↔ Gemini ↔ Responses API)。", + "formatConverterDescription": "粘贴或输入JSON请求体。翻译器会自动识别源格式并将其转换为目标格式。你可以借此调试OmniRoute在各种格式之间的转换行为(OpenAI ↔ Claude ↔ Gemini ↔ Responses API)。", "translationPathHubSpoke": "{source} → OpenAI(中间格式)→ {target}", "translationPathDirect": "{source} → {target}(直接转换器)", - "translationPathPassthrough": "格式相同 — 无需转换", - "openaiIntermediatePanel": "OpenAI 中间格式", - "autoFeaturesTitle": "OmniRoute 自动处理的内容", + "translationPathPassthrough": "格式相同—无需转换", + "openaiIntermediatePanel": "OpenAI中间格式", + "autoFeaturesTitle": "OmniRoute自动处理的内容", "autoFeaturesCount": "8 项功能", "featureReasoningCache": "推理缓存", - "featureReasoningCacheDesc": "当客户端在对话历史中省略 thinking-mode 模型(DeepSeek V4、Kimi K2、Qwen)的缓存 reasoning_content 时,会重新注入。", - "featureSchemaCoercion": "Schema 校正", - "featureSchemaCoercionDesc": "修复损坏的工具 schema:添加缺失的 additionalProperties、清理过长描述、规范化嵌套对象。", + "featureReasoningCacheDesc": "当客户端在对话历史中省略thinking-mode模型(DeepSeek V4、Kimi K2、Qwen)的缓存reasoning_content时,会重新注入。", + "featureSchemaCoercion": "Schema校正", + "featureSchemaCoercionDesc": "修复损坏的工具schema:添加缺失的additionalProperties、清理过长描述、规范化嵌套对象。", "featureRoleNormalization": "角色规范化", - "featureRoleNormalizationDesc": "针对非 OpenAI 目标将 developer→system。针对不支持 system 角色的模型将 system→user。", - "featureToolCallIds": "工具调用 ID 规范化", - "featureToolCallIdsDesc": "在缺失时生成唯一的 tool_call ID。针对 Mistral 等提供者规范化为 9 字符格式。", + "featureRoleNormalizationDesc": "针对非OpenAI目标将developer→system。针对不支持system角色的模型将system→user。", + "featureToolCallIds": "工具调用ID规范化", + "featureToolCallIdsDesc": "在缺失时生成唯一的tool_call ID。针对Mistral等供应商规范化为 9 字符格式。", "featureMissingToolResponse": "工具响应注入", - "featureMissingToolResponseDesc": "当客户端发送 tool_calls 但没有对应响应时,注入空的 tool_result 消息。", + "featureMissingToolResponseDesc": "当客户端发送tool_calls但没有对应响应时,注入空的tool_result消息。", "featureThinkingBudget": "思考预算", - "featureThinkingBudgetDesc": "自动管理 thinking 配置。当最后一条消息不是用户消息时移除 thinking 参数。", + "featureThinkingBudgetDesc": "自动管理thinking配置。当最后一条消息不是用户消息时移除thinking参数。", "featureDirectPaths": "直接转换路径", - "featureDirectPathsDesc": "某些格式组合(Claude→Gemini)有绕过 OpenAI 中枢的直接转换器,可产生更准确的输出。", + "featureDirectPathsDesc": "某些格式组合(Claude→Gemini)有绕过OpenAI中枢的直接转换器,可产生更准确的输出。", "featureImageMapping": "图像尺寸映射", - "featureImageMappingDesc": "在 API 格式之间转换图像尺寸约定(例如 OpenAI detail 等级 → Gemini 尺寸)。", + "featureImageMappingDesc": "在API格式之间转换图像尺寸约定(例如OpenAI detail等级 → Gemini尺寸)。", "input": "输入", "output": "输出", "auto": "汽车", @@ -8200,12 +8200,12 @@ "clear": "清除", "inputPlaceholder": "在此处粘贴请求正文或选择下面的模板...", "exampleTemplates": "示例模板", - "exampleTemplatesHint": "— 点击加载", + "exampleTemplatesHint": "—点击加载", "templateLoadHint": "模板以 {format} 格式加载请求。更改源格式以以不同的格式加载。", "compatibilityTester": "兼容性测试仪", "compatibilityReport": "兼容性报告", - "testBenchDescription": "运行预定义的场景(简单聊天、工具调用等)以验证翻译和提供者兼容性。选择源格式和目标提供者,然后运行所有测试以查看兼容性百分比。使用它来查找哪些功能可以跨提供者使用。", - "targetProvider": "目标提供者", + "testBenchDescription": "运行预定义的场景(简单聊天、工具调用等)以验证翻译和供应商兼容性。选择源格式和目标供应商,然后运行所有测试以查看兼容性百分比。使用它来查找哪些功能可以跨供应商使用。", + "targetProvider": "目标供应商", "runAllTests": "运行所有测试", "runTest": "运行测试", "reRun": "重新运行", @@ -8219,14 +8219,14 @@ "scenarioMultiTurn": "多圈", "scenarioThinking": "思考", "scenarioSystemPrompt": "系统提示", - "scenarioStreaming": "流媒体", + "scenarioStreaming": "流式", "templateNames": { "simple-chat": "简单聊天", "tool-calling": "工具调用", "multi-turn": "多圈", "thinking": "思考", "system-prompt": "系统提示", - "streaming": "流媒体", + "streaming": "流式", "vision": "愿景", "schema-coercion": "模式强制" }, @@ -8236,9 +8236,9 @@ "multi-turn": "与历史对话", "thinking": "扩展思维/推理", "system-prompt": "复杂系统指令", - "streaming": "SSE 流请求", + "streaming": "SSE流请求", "vision": "带图像输入的多模式请求", - "schema-coercion": "结构化输出/JSON 模式实施" + "schema-coercion": "结构化输出/JSON模式实施" }, "templatePayloads": { "simpleChat": { @@ -8246,13 +8246,13 @@ "userGreeting": "你好!你今天怎么样?" }, "toolCalling": { - "userWeather": "圣保罗 的天气怎么样?", + "userWeather": "圣保罗的天气怎么样?", "toolDescription": "获取某个位置的当前天气", "cityNameDescription": "城市名称" }, "multiTurn": { "system": "你是一名编码助理。", - "userInitial": "请用 Python 写一个对数组进行排序的函数。", + "userInitial": "请用Python写一个对数组进行排序的函数。", "assistantExample": "这是一个简单的排序函数: ```python\ndef sort_array(arr): return sorted(arr)\n```", "userFollowUp": "现在将其按降序排序。" }, @@ -8260,7 +8260,7 @@ "question": "前 100 个质数之和是多少?" }, "systemPrompt": { - "systemInstruction": "你是一名专注于分布式系统的高级软件工程师。请使用行业最佳实践简洁作答,并在合适时提供代码示例。回复请使用 Markdown 格式。", + "systemInstruction": "你是一名专注于分布式系统的高级软件工程师。请使用行业最佳实践简洁作答,并在合适时提供代码示例。回复请使用Markdown格式。", "question": "如何实现断路器模式?" }, "streaming": { @@ -8277,8 +8277,8 @@ "cityDescription": "要查询的城市,例如“东京”或“纽约”。" } }, - "openaiCompatibleLabel": "OpenAI 兼容", - "anthropicCompatibleLabel": "Anthropic 兼容", + "openaiCompatibleLabel": "OpenAI兼容", + "anthropicCompatibleLabel": "Anthropic兼容", "noTemplateForFormat": "没有此格式的模板", "translationFailed": "翻译失败:{error}", "pipelineDebugger": "管道调试器", @@ -8289,19 +8289,19 @@ "compressionSaved": "已节省", "compressionDuration": "时长", "pipelineStepsAria": "流水线步骤", - "copyIntermediateJson": "复制中间 JSON", - "copyOutputJson": "复制输出 JSON", + "copyIntermediateJson": "复制中间JSON", + "copyOutputJson": "复制输出JSON", "pipelineVisualization": "管道可视化", - "pipelineVisualizationHint": "发送消息以查看您的请求如何经过检测 → 翻译 → 提供者调用。", + "pipelineVisualizationHint": "发送消息以查看您的请求如何经过检测 → 翻译 → 供应商调用。", "chatTesterDescription": "以特定客户端格式发送消息并检查翻译管道的每个步骤。", - "chatTesterFlow": "客户端请求 → 格式检测 → OpenAI 中间格式 → 提供者格式 → 响应", + "chatTesterFlow": "客户端请求 → 格式检测 → OpenAI中间格式 → 供应商格式 → 响应", "clickStepToInspect": "单击任意步骤即可检查该阶段的数据。", "clientFormat": "客户端格式", - "provider": "提供者", + "provider": "供应商", "modelPlaceholder": "选择或输入模型名称...", "sendMessageToSeePipeline": "发送消息查看翻译管道", "chatMessageHintPrefix": "您的消息将被格式化为", - "chatMessageHintSuffix": "请求,通过管道进行翻译,然后发送给选定的提供者。", + "chatMessageHintSuffix": "请求,通过管道进行翻译,然后发送给选定的供应商。", "youWithFormat": "您 ({format})", "assistant": "助理", "typeMessage": "输入消息...", @@ -8309,14 +8309,14 @@ "clientRequest": "客户端请求", "clientRequestDescription": "您的客户端发送的请求正文", "formatDetected": "检测到格式", - "formatDetectedDescription": "OmniRoute 会根据请求结构自动识别 API 格式", - "openaiIntermediate": "OpenAI 中间格式", - "openaiIntermediateDescription": "所有格式都会先归一化为 OpenAI 格式(通用桥接层)", - "providerFormat": "提供者格式", - "providerFormatDescription": "随后再把 OpenAI 格式转换为提供者原生格式", - "providerResponse": "提供者回应", - "providerResponseRawDescription": "来自提供者 API 的原始响应", - "providerResponseSseDescription": "来自提供者 API 的原始 SSE 流", + "formatDetectedDescription": "OmniRoute会根据请求结构自动识别API格式", + "openaiIntermediate": "OpenAI中间格式", + "openaiIntermediateDescription": "所有格式都会先归一化为OpenAI格式(通用桥接层)", + "providerFormat": "供应商格式", + "providerFormatDescription": "随后再把OpenAI格式转换为供应商原生格式", + "providerResponse": "供应商回应", + "providerResponseRawDescription": "来自供应商API的原始响应", + "providerResponseSseDescription": "来自供应商API的原始SSE流", "unexpectedError": "发生意外错误", "error": "错误", "errorMessage": "错误:{message}", @@ -8325,26 +8325,26 @@ "liveMonitorMemoryNote": "事件存储在内存中,重启后会丢失。", "liveMonitorMemoryCapNote": "最多保留 200 个事件。", "eventSourcesLabel": "事件来源:", - "eventSourceTranslatorPage": "• Translator 页面(Chat Tester、Test Bench)", - "eventSourceMainPipeline": "• 主请求流水线(CLI/IDE/API 流量)", - "liveMonitorDescriptionPrefix": "这里会显示 API 调用流经 OmniRoute 时产生的翻译事件。事件来自内存缓冲区(重启后会重置)。使用", - "liveMonitorDescriptionSuffix": ",或外部 API 调用来生成事件。", + "eventSourceTranslatorPage": "• Translator页面(Chat Tester、Test Bench)", + "eventSourceMainPipeline": "• 主请求流水线(CLI/IDE/API流量)", + "liveMonitorDescriptionPrefix": "这里会显示API调用流经OmniRoute时产生的翻译事件。事件来自内存缓冲区(重启后会重置)。使用", + "liveMonitorDescriptionSuffix": ",或外部API调用来生成事件。", "streamTransformer": "流转换器", - "modeDescriptionStreamTransformer": "通过响应转换器运行聊天完成 SSE 流。", + "modeDescriptionStreamTransformer": "通过响应转换器运行聊天完成SSE流。", "streamTransformerTitle": "响应流转换器", - "streamTransformerDescription": "粘贴聊天完成 SSE 流,通过 OmniRoute 的响应转换器运行它,并在连接客户端之前检查发出的响应。* 事件。", + "streamTransformerDescription": "粘贴聊天完成SSE流,通过OmniRoute的响应转换器运行它,并在连接客户端之前检查发出的响应。* 事件。", "loadTextSample": "加载文本样本", "loadToolSample": "加载工具调用示例", "transformToResponses": "转换为响应", - "rawChatSseInput": "原始聊天完成 SSE", - "transformedResponsesSse": "转换后的响应 API SSE", + "rawChatSseInput": "原始聊天完成SSE", + "transformedResponsesSse": "转换后的响应API SSE", "noResultsYet": "还没有结果", "transformedEvents": "转化事件", "uniqueEventTypes": "独特的事件类型", "inputLines": "输入线", "outputLines": "输出线", "transformedEventTimeline": "转变的事件时间线", - "transformerTimelineHint": "运行变压器以按顺序检查发出的 response.output_* 事件。", + "transformerTimelineHint": "运行变压器以按顺序检查发出的response.output_* 事件。", "eventType": "事件类型", "eventPreview": "预览", "comboRouted": "组合路由", @@ -8355,27 +8355,27 @@ "routeConnectionLabel": "连接方式", "scenarioVision": "视觉(图像理解)", "scenarioSchemaCoercion": "模式强制(结构化输出)", - "techniques": "技巧:", + "techniques": "Skills:", "friendlyTitle": "翻译器", - "friendlySubtitle": "使用您现有的应用程序与任何提供者 — 无需重写代码。", - "conceptHeadline": "您的应用程序使用一个 API 的“语言”。翻译器将其转换为使用另一个供应商。", + "friendlySubtitle": "使用您现有的应用程序与任何供应商—无需重写代码。", + "conceptHeadline": "您的应用程序使用一个API的“语言”。翻译器将其转换为使用另一个供应商。", "conceptDiagramAppLabel": "您的应用程序", "conceptDiagramSourceLabel": "源格式", "conceptDiagramHubLabel": "OpenAI (中心)", "conceptDiagramTargetLabel": "目标供应商", - "conceptDiagramExampleApp": "例如 Anthropic SDK", + "conceptDiagramExampleApp": "例如Anthropic SDK", "conceptDiagramExampleSource": "Claude", "conceptDiagramExampleTarget": "Gemini", "conceptHowItWorksToggle": "它是如何工作的", - "conceptHowItWorksBody": "您的应用以其自己的格式发送请求。翻译器检测该格式,通过 OpenAI 作为中介中心进行转换(或在可用的情况下直接进行转换),将其发送到所选提供者,并将响应转换回您应用的格式。", + "conceptHowItWorksBody": "您的应用以其自己的格式发送请求。翻译器检测该格式,通过OpenAI作为中介中心进行转换(或在可用的情况下直接进行转换),将其发送到所选供应商,并将响应转换回您应用的格式。", "tabTranslate": "翻译", "tabMonitor": "监视器", "tabTranslateAriaLabel": "前往翻译选项卡", "tabMonitorAriaLabel": "转到监视器选项卡", "simpleAppUsesLabel": "我的应用程序使用", - "simpleAppUsesHint": "您的应用程序使用的 API 格式(例如,Anthropic SDK = claude)。", + "simpleAppUsesHint": "您的应用程序使用的API格式(例如,Anthropic SDK = claude)。", "simpleSendToLabel": "发送到", - "simpleSendToHint": "实际将请求发送到哪里(在 OmniRoute 中连接的供应商)。", + "simpleSendToHint": "实际将请求发送到哪里(在OmniRoute中连接的供应商)。", "simpleStartWithLabel": "开始于", "simpleStartWithExamplePlaceholder": "选择一个现成的示例", "simpleStartWithCustomOption": "粘贴您的请求(高级)", @@ -8389,31 +8389,31 @@ "narratedDetected": "✓ 检测到: {format}", "narratedTranslating": "正在翻译到 {target}...", "narratedSending": "正在发送到 {target}...", - "narratedSuccess": "→ 翻译为 {target} · 响应时间 {latency}ms", + "narratedSuccess": "→ 翻译为 {target} ·响应时间 {latency}ms", "narratedError": "失败:{reason}", - "narratedSeeTranslatedJson": "查看翻译后的 JSON", + "narratedSeeTranslatedJson": "查看翻译后的JSON", "narratedSeePipeline": "查看管道", "advancedSectionTitle": "高级", - "advancedSectionSubtitle": "原始 JSON、管道和技术工具。这里的一切与旧标签相同——只是重新组织了一下。", - "advancedRawJsonTitle": "原始 JSON(自动检测 + Monaco)", - "advancedRawJsonSubtitle": "粘贴一个 JSON 请求;格式会自动检测。", - "advancedPipelineTitle": "OpenAI 中间管道", + "advancedSectionSubtitle": "原始JSON、管道和技术工具。这里的一切与旧标签相同——只是重新组织了一下。", + "advancedRawJsonTitle": "原始JSON(自动检测 + Monaco)", + "advancedRawJsonSubtitle": "粘贴一个JSON请求;格式会自动检测。", + "advancedPipelineTitle": "OpenAI中间管道", "advancedPipelineSubtitle": "可视化每个翻译步骤(中心辐射模型)。", - "advancedStreamTransformTitle": "流转换器 (聊天 → 响应 SSE)", - "advancedStreamTransformSubtitle": "将聊天完成 SSE 转换为响应 API。", + "advancedStreamTransformTitle": "流转换器 (聊天 → 响应SSE)", + "advancedStreamTransformSubtitle": "将聊天完成SSE转换为响应API。", "advancedTestBenchTitle": "测试平台 (8 个场景)", "advancedTestBenchSubtitle": "运行所有场景并报告通过/失败 + 兼容性 %。", "advancedCompressionTitle": "压缩预览", "advancedCompressionSubtitle": "估算不同压缩模式下的令牌节省。", - "monitorOriginHint": "由 Translate 或主管道生成的事件会实时显示在这里。", - "monitorEmptyCta": "转到翻译选项卡并发送请求 — 它将出现在这里。", + "monitorOriginHint": "由Translate或主管道生成的事件会实时显示在这里。", + "monitorEmptyCta": "转到翻译选项卡并发送请求—它将出现在这里。", "monitorOpenTranslateButton": "前往翻译", "pipelineStepClientRequest": "客户端请求", "pipelineStepClientRequestDesc": "以客户端格式接收到请求", "pipelineStepFormatDetected": "检测到的格式", "pipelineStepFormatDetectedDesc": "自动检测到的源格式", - "pipelineStepOpenAIIntermediate": "OpenAI 中级", - "pipelineStepOpenAIIntermediateDesc": "翻译为 OpenAI hub 格式", + "pipelineStepOpenAIIntermediate": "OpenAI中级", + "pipelineStepOpenAIIntermediateDesc": "翻译为OpenAI hub格式", "pipelineStepProviderFormat": "供应商格式", "pipelineStepProviderFormatDesc": "翻译为供应商目标格式", "pipelineStepProviderResponse": "供应商响应", @@ -8423,9 +8423,9 @@ "conceptDiagramArrow3": "转换", "conceptDiagramExampleHub": "OpenAI", "conceptDiagramHubTooltip": "翻译器用于在没有直接映射的格式之间转换的中间枢纽。", - "conceptDiagramSourceTooltip": "您的应用程序使用的 API 格式(例如,Anthropic SDK = claude)。", + "conceptDiagramSourceTooltip": "您的应用程序使用的API格式(例如,Anthropic SDK = claude)。", "conceptDiagramTargetTooltip": "请求将实际发送到的供应商。", - "compressionEmptyHint": "填写“翻译”标签页上的输入字段(简单控件或原始 JSON)以启用预览。", + "compressionEmptyHint": "填写“翻译”标签页上的输入字段(简单控件或原始JSON)以启用预览。", "compressionModeLabel": "压缩模式", "compressionPreviewButton": "预览压缩", "compressionPreviewing": "预览中…", @@ -8446,9 +8446,9 @@ "budgetSaved": "已保存预算限制", "budgetSaveFailed": "未能节省预算", "loadingBudgetData": "正在加载预算数据...", - "noApiKeysTitle": "没有 API 密钥", - "noApiKeysDescription": "首先添加 API 密钥以设置预算限制。", - "apiKey": "API key", + "noApiKeysTitle": "没有API Key", + "noApiKeysDescription": "首先添加API Key以设置预算限制。", + "apiKey": "API Key", "todaysSpend": "今天的花费", "thisMonth": "本月", "setLimits": "设定限制", @@ -8459,8 +8459,8 @@ "monthlyLimitPlaceholder": "例如50.00", "warningThresholdPlaceholder": "80", "saveLimits": "保存限制", - "budgetOk": "预算正常 — 剩余 {remaining}", - "budgetExceeded": "超出预算 - 请求可能被阻止", + "budgetOk": "预算正常—剩余 {remaining}", + "budgetExceeded": "超出预算 - 请求可能已阻止", "totalRequests": "请求总数", "noDataYet": "还没有数据", "latency": "延迟", @@ -8480,31 +8480,31 @@ "lockedCount": "{count, plural, one {# 个锁定项} other {# 个锁定项}}", "timeLeft": "剩余 {time}", "howItWorks": "工作原理", - "howItWorksSubtitle": "了解评估如何验证您的 LLM 回答", + "howItWorksSubtitle": "了解评估如何验证您的LLM回答", "define": "定义", "defineStepDescription": "使用包含、正则表达式或完全匹配等策略创建带有输入提示和预期输出标准的测试用例。", "run": "运行", - "runStepDescription": "通过 OmniRoute 对你的 LLM 端点执行测试用例。每个案例都会作为真实 API 请求发送。", + "runStepDescription": "通过OmniRoute对你的LLM端点执行测试用例。每个案例都会作为真实API请求发送。", "evaluate": "评估", - "evaluateStepDescription": "将响应与预期标准进行比较。查看每种情况的通过/失败情况以及延迟指标和详细反馈。", + "evaluateStepDescription": "将响应与预期标准比较。查看每种情况的通过/失败情况以及延迟指标和详细反馈。", "evalsStrategyContainsLabel": "包含", "evalsStrategyExactLabel": "精确匹配", "evalsStrategyRegexLabel": "正则", "evalsStrategyCustomLabel": "自定义逻辑", - "evalsStrategyContainsDescription": "检查 LLM 输出是否包含期望的子串。", - "evalsStrategyExactDescription": "检查 LLM 输出是否与期望值完全一致。", - "evalsStrategyRegexDescription": "通过正则表达式校验 LLM 输出。", - "evalsStrategyCustomDescription": "自定义评估逻辑(通过 JSON 配置)。", + "evalsStrategyContainsDescription": "检查LLM输出是否包含期望的子串。", + "evalsStrategyExactDescription": "检查LLM输出是否与期望值完全一致。", + "evalsStrategyRegexDescription": "通过正则表达式校验LLM输出。", + "evalsStrategyCustomDescription": "自定义评估逻辑(通过JSON配置)。", "historyColumnSuiteName": "套件名称", "historyColumnTarget": "目标", "historyColumnPassRate": "通过率", "historyColumnAvgLatencyMs": "平均延迟", "historyColumnCreatedAt": "执行时间", "evalSuites": "评估套件", - "evalSuitesHint": "点击套件可查看测试用例,然后运行以评估你的 LLM 端点", + "evalSuitesHint": "点击套件可查看测试用例,然后运行以评估你的LLM端点", "evalsLoading": "正在加载评估套件...", "noEvalSuitesFound": "未找到评估套件", - "noEvalSuitesDescription": "评测套件可以通过 API 或代码定义。它们会使用包含、正则表达式、精确匹配和自定义函数等策略,根据预期结果验证模型输出。", + "noEvalSuitesDescription": "评测套件可以通过API或代码定义。它们会使用包含、正则表达式、精确匹配和自定义函数等策略,根据预期结果验证模型输出。", "columnCase": "案例", "columnStatus": "状态", "columnLatency": "延迟", @@ -8527,11 +8527,11 @@ "runAllRunning": "正在全部运行...", "runAllProgress": "正在运行 {current}/{total}:{name}", "runAllFailedSuites": "{count, plural, one {# 个套件失败} other {# 个套件失败}}", - "runAllCompleted": "已运行 {suites} 个套件 — {passed} 个通过,{failed} 个失败", + "runAllCompleted": "已运行 {suites} 个套件— {passed} 个通过,{failed} 个失败", "runAllCompletedWithFailures": "已运行 {completed} 个套件;{failedSuites} 个运行失败", "runningProgress": "正在运行 {current}/{total}...", "passRate": "通过率", - "summaryBreakdown": "{passed} 通过 · {failed} 失败 · {total} 总计", + "summaryBreakdown": "{passed} 通过· {failed} 失败· {total} 总计", "passedIconLabel": "✅ 通过", "failedIconLabel": "❌ 失败", "resultPassed": "已通过", @@ -8545,20 +8545,20 @@ "noResultsYet": "还没有结果", "testCasesCount": "测试用例 ({count})", "noTestCasesDefined": "没有定义测试用例", - "runEvalHint": "点击“运行评测”即可对你的 LLM 端点执行所有案例。每次测试都会通过 OmniRoute 发送真实请求。", + "runEvalHint": "点击“运行评测”即可对你的LLM端点执行所有案例。每次测试都会通过OmniRoute发送真实请求。", "notifyNoTestCases": "没有为此套件定义测试用例", "notifyAllCasesPassed": "所有 {total} 案例均已通过 ✅", "notifySomeCasesFailed": "{passed}/{total} 通过,{failed} 失败", "notifyEvalRunFailed": "评估运行失败", "notifyEvalTitle": "评估:{name}", "modelEvals": "模型评估", - "evalsHeroDescription": "通过运行预定义评测套件来测试和验证你的 LLM 端点。每个套件都包含多个测试用例,会经由 OmniRoute 发送真实提示,并将响应与预期标准进行比较,帮助你发现回归、比较模型,并确保跨提供者的响应质量。", + "evalsHeroDescription": "通过运行预定义评测套件来测试和验证你的LLM端点。每个套件都包含多个测试用例,会经由OmniRoute发送真实提示,并将响应与预期标准比较,帮助你发现回归、比较模型,并确保跨供应商的响应质量。", "qualityValidation": "质量验证", "modelComparison": "模型对比", "regressionDetection": "回归检测", "latencyBenchmarks": "延迟基准", "modelLockouts": "模型锁定", - "noLockouts": "当前没有被锁定的模型", + "noLockouts": "当前没有已锁定的模型", "activeSessions": "活跃会话", "noSessions": "没有活动会话", "sessionsHint": "会话显示为请求流经代理", @@ -8573,9 +8573,9 @@ "durationHoursShort": "{value} 时", "reasonSeparator": "-", "notAvailableSymbol": "-", - "providerLimits": "提供者限制", - "noProviders": "没有连接提供者", - "connectProvidersForQuota": "通过 OAuth 连接提供者,以跟踪 API 配额限制和使用情况。", + "providerLimits": "供应商限制", + "noProviders": "没有连接供应商", + "connectProvidersForQuota": "通过OAuth连接供应商,以跟踪API配额限制和使用情况。", "accountsCount": "{count, plural, one {# 个账户} other {# 个账户}}", "filteredFromCount": "(从 {count} 过滤)", "autoRefresh": "自动刷新", @@ -8598,7 +8598,7 @@ "inDuration": "在 {duration} 中", "notApplicable": "不适用", "rawPlanWithValue": "原始计划:{plan}", - "noPlanFromProvider": "提供者没有计划", + "noPlanFromProvider": "供应商没有计划", "tokenExpiresIn": "令牌在 {time} 后过期", "tokenExpired": "令牌已过期", "noQuotaData": "无配额数据", @@ -8628,8 +8628,8 @@ "filterTierLabel": "层级", "purchaseAll": "全部", "purchaseOauthSub": "订阅", - "purchaseOauthFree": "OAuth 免费", - "purchaseApiKey": "API 密钥", + "purchaseOauthFree": "OAuth免费", + "purchaseApiKey": "API Key", "creditsLabel": "额度", "creditBalanceHint": "剩余额度", "unlimitedLabel": "无限", @@ -8642,7 +8642,7 @@ "redeemResetCredit": "兑换重置", "manageResetCredits": "查看额度", "viewResetCredits": "查看重置额度", - "resetCreditsModalTitle": "Codex 重置额度", + "resetCreditsModalTitle": "Codex重置额度", "resetCreditsModalExplainer": "额度按过期时间排序。自动兑换将始终优先使用最先过期的额度。", "resetCreditsLoadFailed": "加载重置额度失败", "resetCreditsDetailsUnavailable": "额度详情目前不可用。请刷新并重试。", @@ -8653,7 +8653,7 @@ "resetCreditNoExpiry": "无过期日期", "redeemThisResetCredit": "兑换", "confirmRedeemResetCreditTitle": "兑换此重置额度?", - "confirmRedeemResetCredit": "兑换将立即重置符合条件的 Codex 使用窗口,并永久消耗此额度。", + "confirmRedeemResetCredit": "兑换将立即重置符合条件的Codex使用窗口,并永久消耗此额度。", "confirmRedeemResetCreditButton": "兑换额度", "resetCreditRedeemed": "重置已兑换", "resetCreditRedeemFailed": "兑换重置额度失败", @@ -8665,64 +8665,64 @@ "suiteExportFailed": "导出套件失败", "suiteImportReady": "套件导入已加载,等待检查", "suiteImportFailed": "导入套件失败", - "suiteImportInvalid": "无效的 eval 套件 JSON", + "suiteImportInvalid": "无效的eval套件JSON", "suiteBuilderCloneSuffix": "副本", "suiteBuilderImportedSuite": "已导入套件", "scorecardTitle": "记分卡", - "evalApiKey": "API key", + "evalApiKey": "API Key", "scorecardPassRate": "通过率", "targetTypeModel": "模型", "actualOutputLabel": "实际输出", "evalTargetHint": "选择要评估的模型或组合。", - "suiteBuilderDeleted": "Suite 删除成功", + "suiteBuilderDeleted": "Suite删除成功", "suiteBuilderCaseCardHint": "定义输入提示和预期输出标准。", "nextResetUtc": "下次重置(UTC)", - "scorecardHint": "汇总所有 Evaluation Suite 的通过率。", + "scorecardHint": "汇总所有Evaluation Suite的通过率。", "suiteLatestRunsHint": "此套件最近的评估运行。", "saving": "正在保存", "suiteBuilderCaseModelLabel": "模型(可选)", - "evalControlsTitle": "Evaluation 控制项", - "suiteBuilderEditTitle": "编辑 Evaluation Suite", + "evalControlsTitle": "Evaluation控制项", + "suiteBuilderEditTitle": "编辑Evaluation Suite", "suiteBuilderCaseStrategyLabel": "验证策略", "notifySelectDifferentCompareTarget": "请选择不同的比较目标", "recentRunsHint": "正在显示最近的评估运行。点击某次运行可查看详细结果。", "evalCompareHint": "可选择与第二个目标比较结果。", - "suiteBuilderCaseInvalid": "此 Case 存在验证错误,请先修复再保存。", - "historyEmpty": "暂无 Evaluation 历史", - "suiteBuilderUpdated": "Suite 更新成功", + "suiteBuilderCaseInvalid": "此Case存在验证错误,请先修复再保存。", + "historyEmpty": "暂无Evaluation历史", + "suiteBuilderUpdated": "Suite更新成功", "resetInterval": "重置间隔", "suiteBuilderCreateTitle": "创建评估套件", "activePeriodSpend": "当前周期支出", - "evalApiKeyHint": "选择用于评估请求的 API 密钥。", + "evalApiKeyHint": "选择用于评估请求的API Key。", "evalCompareOptional": "对比(可选)", "suiteBuilderDeleteFailed": "删除套件失败", "suiteBuilderCaseSystemPromptPlaceholder": "可选系统指令...", "scorecardCases": "Case", - "runCompletedWithScore": "Evaluation 已完成 — 通过率 {score}%", + "runCompletedWithScore": "Evaluation已完成—通过率 {score}%", "suiteBuilderCustomBadge": "自定义", - "targetSuiteDefaults": "Suite 默认值", + "targetSuiteDefaults": "Suite默认值", "suiteBuilderDeleteConfirm": "确定要删除此套件吗?此操作无法撤销。", - "suiteBuilderNameLabel": "Suite 名称", + "suiteBuilderNameLabel": "Suite名称", "scorecardSuites": "套件", "evalCompareTarget": "对比目标", - "suiteBuilderCaseModelPlaceholder": "例如 gpt-4o-mini", - "evalControlsHint": "配置评估目标和 API 密钥,然后运行套件以验证模型质量。", + "suiteBuilderCaseModelPlaceholder": "例如gpt-4o-mini", + "evalControlsHint": "配置评估目标和API Key,然后运行套件以验证模型质量。", "recentRunsTitle": "最近运行", "suiteBuilderCaseSystemPromptLabel": "系统提示", - "suiteBuilderCaseExpectedPlaceholder": "例如 def fibonacci", - "suiteBuilderCaseExpectedPlaceholderContains": "例如 def fibonacci", + "suiteBuilderCaseExpectedPlaceholder": "例如def fibonacci", + "suiteBuilderCaseExpectedPlaceholderContains": "例如def fibonacci", "suiteBuilderCaseExpectedPlaceholderExact": "粘贴精确的预期响应", "suiteBuilderCaseExpectedPlaceholderRegex": "例如 ^\\s*\\{.*\\}\\s*$", - "suiteBuilderCaseExpectedHintRegex": "使用不带包裹斜杠的 JavaScript 正则表达式。", - "suiteBuilderNamePlaceholder": "例如 Coding Quality Suite", - "suiteBuilderAddCase": "添加 Case", + "suiteBuilderCaseExpectedHintRegex": "使用不带包裹斜杠的JavaScript正则表达式。", + "suiteBuilderNamePlaceholder": "例如Coding Quality Suite", + "suiteBuilderAddCase": "添加Case", "cancel": "取消", "evalTarget": "目标", - "suiteBuilderCaseNameLabel": "Case 名称", + "suiteBuilderCaseNameLabel": "Case名称", "weeklyLimitUsd": "每周限额(USD)", - "suiteBuilderCaseUserPromptPlaceholder": "例如用 Python 写一个 fibonacci 函数", - "suiteBuilderNameRequired": "Suite 名称为必填项", - "suiteBuilderCaseUserPromptLabel": "用户 Prompt", + "suiteBuilderCaseUserPromptPlaceholder": "例如用Python写一个fibonacci函数", + "suiteBuilderNameRequired": "Suite名称为必填项", + "suiteBuilderCaseUserPromptLabel": "用户Prompt", "daily": "每日", "resultErrorLabel": "错误", "suiteBuilderBuiltInBadge": "内置", @@ -8732,25 +8732,25 @@ "suiteBuilderCaseTagsHint": "用于组织测试用例的逗号分隔标签。", "notifyEvalRunFailedWithReason": "评估失败:{reason}", "weekly": "每周", - "runEvalRunning": "正在运行 Evaluation...", + "runEvalRunning": "正在运行Evaluation...", "delete": "删除", "resetTimeUtc": "重置时间(UTC)", "evalApiKeyAuto": "自动(使用默认值)", "suiteBuilderDescriptionPlaceholder": "可选:描述此套件测试的内容...", "targetComparisonTitle": "目标对比", "save": "保存", - "suiteBuilderCreated": "Suite 创建成功", + "suiteBuilderCreated": "Suite创建成功", "suiteLatestRuns": "最新运行", "suiteBuilderCaseExpectedLabel": "期望值", "historyLatency": "延迟", - "suiteBuilderCaseTagsPlaceholder": "例如 coding, python", + "suiteBuilderCaseTagsPlaceholder": "例如coding, python", "targetTypeCombo": "组合", "scorecardPassed": "已通过", "suiteBuilderCaseTagsLabel": "标签", - "suiteBuilderNewSuite": "新建 Suite", + "suiteBuilderNewSuite": "新建Suite", "notifyEvalLoadFailed": "加载评估数据失败", "notConfigured": "未配置", - "suiteBuilderCaseNamePlaceholder": "例如 Python 斐波那契测试", + "suiteBuilderCaseNamePlaceholder": "例如Python斐波那契测试", "intervalLabel": "间隔", "suiteBuilderCreateAction": "创建套件", "suiteBuilderCasesHint": "每个用例都会发送一个提示并验证响应。", @@ -8763,8 +8763,8 @@ "weeklyLimitSummary": "每周预算限额摘要", "suiteBuilderDescriptionLabel": "描述", "targetComparisonHint": "在目标之间并排比较评估结果。", - "compareCompletedWithScore": "对比已完成 — 通过率 {score}%", - "staleQuotaTooltip": "上次刷新失败 — 显示缓存数据", + "compareCompletedWithScore": "对比已完成—通过率 {score}%", + "staleQuotaTooltip": "上次刷新失败—显示缓存数据", "quotaThresholdLabel": "最小剩余时间", "quotaCutoffsColumnHelp": "当剩余配额降至此百分比或以下时停止请求。", "quotaCutoffsButtonDefault": "默认", @@ -8784,19 +8784,19 @@ "budgetKpiToday": "今天", "budgetKpiThisMonth": "这个月", "budgetKpiProjEom": "项目结束", - "budgetKpiBlocked": "被阻止", + "budgetKpiBlocked": "已阻止", "budgetKpiAtRisk": "有风险", "budgetKpiActiveKeys": "活动键", "budgetPageTitle": "预算", - "budgetPageDescription": "为每个 API 密钥设置每日、每周和每月支出限制。", - "budgetTemplateStorageHint": "{count, plural, one {# 个模板} other {# 个模板}} · 通过 localStorage 编辑:", + "budgetPageDescription": "为每个API Key设置每日、每周和每月支出限制。", + "budgetTemplateStorageHint": "{count, plural, one {# 个模板} other {# 个模板}} ·通过localStorage编辑:", "budgetAboveLimitShort": "超出限制 ⚠", "budgetOnTrackShort": "正常", "budgetAtOrAboveWarning": "≥ 警示阈值", "budgetTemplates": "模板", "budgetSelectKeysFirst": "请先选择密钥以应用", "budgetApplyToSelected": "应用到 {count, plural, one {# 个已选密钥} other {# 个已选密钥}}", - "budgetSelectedTemplateHint": "{count, plural, one {已选择 # 个} other {已选择 # 个}} · 点击模板以应用", + "budgetSelectedTemplateHint": "{count, plural, one {已选择 # 个} other {已选择 # 个}} ·点击模板以应用", "budgetTemplateMonthlyAmount": "${amount}/月", "budgetTemplateDailyAmount": "${amount}/天", "budgetNoKeysSelected": "未选择任何密钥", @@ -8823,7 +8823,7 @@ "budgetSortPctUsed": "排序:使用百分比 ↓", "budgetSortTodayDollar": "排序:今日$ ↓", "budgetSortMonthDollar": "排序: 月 $ ↓", - "budgetSortNameAZ": "排序: 名称 (A–Z)", + "budgetSortNameAZ": "排序:名称 (A–Z)", "budgetColDailyLim": "每日限制", "budgetColMonthlyLim": "每月限制", "budgetColUsedPct": "使用百分比", @@ -8833,7 +8833,7 @@ "budgetLinearExtrapolation": "线性外推法", "budgetThisMonthSoFar": "这个月到目前为止", "budgetProjectedEndOfMonth": "预计月底", - "budgetByProvider": "按提供者", + "budgetByProvider": "按供应商", "budgetProjection": "预测", "budgetAboveMonthlyLimit": "⚠ 超过 {limit}/月", "budgetCostBreakdown30d": "费用明细 (30 天)", @@ -8843,7 +8843,7 @@ "budgetResetMonthly": "每月", "budgetNextReset": "下次重置", "budgetHardCapComingSoon": "硬限制策略和邮件告警即将推出", - "unknownProvider": "未知提供者", + "unknownProvider": "未知供应商", "budgetDailyDollar": "每日 $", "budgetWeeklyDollar": "每周 $", "budgetMonthlyDollar": "每月 $", @@ -8853,7 +8853,7 @@ "noSpendLast30Days": "过去 30 天内没有消费", "updatedShort": "更新于", "lastRefreshed": "上次刷新", - "providerQuota": "提供者配额", + "providerQuota": "供应商配额", "providerQuotaHomeHint": "已连接账户的实时状态" }, "modals": { @@ -8864,16 +8864,16 @@ "connectedSuccess": "连接成功!", "connectionFailed": "连接失败", "chooseAuthMethod": "选择您的身份验证方法:", - "awsBuilderId": "AWS 构建器 ID", - "awsIamIdentity": "AWS IAM 身份中心", - "googleAccount": "Google 帐户", - "githubAccount": "GitHub 帐户", + "awsBuilderId": "AWS构建器ID", + "awsIamIdentity": "AWS IAM身份中心", + "googleAccount": "Google帐户", + "githubAccount": "GitHub帐户", "importToken": "导入令牌", - "pasteToken": "从 Kiro IDE 粘贴刷新令牌。", - "awsRegion": "AWS 区域", + "pasteToken": "从Kiro IDE粘贴刷新令牌。", + "awsRegion": "AWS区域", "autoDetecting": "自动检测令牌...", - "readingFromCache": "从 AWS SSO 缓存中读取", - "readingFromCursor": "从 Cursor IDE 数据库读取", + "readingFromCache": "从AWS SSO缓存中读取", + "readingFromCursor": "从Cursor IDE数据库读取", "initializing": "正在初始化...", "pricingConfig": "定价配置", "loadingPricing": "正在加载定价数据...", @@ -8882,13 +8882,13 @@ "noModelsFound": "没有找到模型" }, "loggers": { - "allProviders": "所有提供者", + "allProviders": "所有供应商", "allModels": "所有模型", "allAccounts": "所有账户", - "allApiKeys": "所有 API 密钥", + "allApiKeys": "所有API Key", "allTypes": "所有类型", "allLevels": "所有级别", - "modelAZ": "模型 A-Z", + "modelAZ": "模型A-Z", "modelZA": "Z-A型", "loadingLogs": "正在加载日志...", "loadingProxyLogs": "正在加载代理日志...", @@ -8904,13 +8904,13 @@ }, "stats": { "usageOverview": "使用概述", - "outputTokens": "输出 Tokens", + "outputTokens": "输出Tokens", "totalCost": "总成本", "usageByModel": "按模型使用", "usageByAccount": "按帐户使用情况", "failedToLoad": "无法加载使用情况统计信息。", "tokenHealth": "令牌健康", - "totalOAuth": "总 OAuth", + "totalOAuth": "总OAuth", "healthy": "健康", "warning": "警告", "errored": "出错了", @@ -8927,41 +8927,41 @@ "signIn": "登录", "enterPassword": "输入您的密码以继续", "password": "密码", - "unifiedProxy": "统一 AI API 代理", - "unifiedAiApiProxy": "统一 AI API 代理", - "unifiedAiApiProxyDesc": "通过单个端点将请求路由到多个 AI 提供者。内置负载均衡、故障转移和使用情况跟踪。", + "unifiedProxy": "统一AI API代理", + "unifiedAiApiProxy": "统一AI API代理", + "unifiedAiApiProxyDesc": "通过单个端点将请求路由到多个AI供应商。内置负载均衡、故障转移和使用情况跟踪。", "passwordNotEnabled": "未启用密码保护", "loading": "正在加载...", "invalidPassword": "密码无效", "errorOccurredRetry": "发生错误。请再试一次。", - "configureInstance": "开始配置你的 OmniRoute 实例", - "runOnboardingWizard": "运行入门向导来设置您的密码并连接您的第一个 AI 提供者。", + "configureInstance": "开始配置你的OmniRoute实例", + "runOnboardingWizard": "运行入门向导来设置您的密码并连接您的第一个AI供应商。", "startOnboarding": "开始引导", "secureYourInstance": "保护您的实例", - "setPasswordDescription": "设置密码以保护您的仪表板并保护您的 API 端点免遭未经授权的访问。", + "setPasswordDescription": "设置密码以保护您的看板并保护您的API端点免遭未经授权的访问。", "configurePassword": "配置密码", "continue": "继续", "windowWillClose": "该窗口将自动关闭...", "closeTabNow": "您现在可以关闭此选项卡。", - "copyUrlManual": "请复制地址栏中的 URL 并将其粘贴到应用程序中。", - "accessDeniedDescription": "您无权访问此资源。检查您的 API 密钥或联系管理员。", - "goToDashboard": "转到仪表板", - "featureMultiProviderTitle": "多提供者", - "featureMultiProviderDesc": "OpenAI、Anthropic、Google 等", + "copyUrlManual": "请复制地址栏中的URL并将其粘贴到应用程序中。", + "accessDeniedDescription": "您无权访问此资源。检查您的API Key或联系管理员。", + "goToDashboard": "转到看板", + "featureMultiProviderTitle": "多供应商", + "featureMultiProviderDesc": "OpenAI、Anthropic、Google等", "featureLoadBalancingTitle": "负载均衡", "featureLoadBalancingDesc": "智能分配请求", "featureUsageTrackingTitle": "使用情况追踪", - "featureUsageTrackingDesc": "监控成本和 Tokens", + "featureUsageTrackingDesc": "监控成本和Tokens", "resetPassword": "重置密码", - "resetDescription": "选择一种方法来恢复对仪表板的访问权限", - "stopServer": "停止 OmniRoute 服务器", + "resetDescription": "选择一种方法来恢复对看板的访问权限", + "stopServer": "停止OmniRoute服务器", "processing": "处理中...", "pleaseWait": "我们正在完成授权,请稍候。", "authSuccess": "授权成功!", "copyUrl": "复制此网址", - "accessDenied": "访问被拒绝", - "methodCliTitle": "方法 1:CLI 重置", - "methodCliDescription": "在运行 OmniRoute 的服务器上运行以下命令:", + "accessDenied": "访问已拒绝", + "methodCliTitle": "方法 1:CLI重置", + "methodCliDescription": "在运行OmniRoute的服务器上运行以下命令:", "methodCliHint": "这将提示您设置新密码。必须首先停止服务器。", "methodManualTitle": "方法 2:手动重置", "methodManualDescription": "从数据库中删除密码并在启动时设置新密码:", @@ -8969,24 +8969,24 @@ "fileLabelSuffix": "文件:", "newPasswordPlaceholder": "your_new_password", "deleteSettingsFile": "删除", - "orRemovePasswordHashField": "或删除 passwordHash 字段", + "orRemovePasswordHashField": "或删除passwordHash字段", "restartServerWithNewPassword": "重启服务器,系统会使用新密码", "backToLogin": "返回登录", "forgotPassword": "忘记密码?", - "continueWithOidc": "使用 OIDC 继续", - "defaultPasswordHint": "默认密码:CHANGEME(除非已设置 INITIAL_PASSWORD)", + "continueWithOidc": "使用OIDC继续", + "defaultPasswordHint": "默认密码:CHANGEME(除非已设置INITIAL_PASSWORD)", "Authorization": "Authorization", "Content-Disposition": "Content-Disposition", "waitingForAuthorization": "正在等待授权...", - "waitingForGoogleAuthorization": "正在等待 Google 授权...", - "waitingForOpenAIAuthorization": "正在等待 OpenAI 授权...", - "waitingForAntigravityAuthorization": "正在等待 Antigravity 授权...", - "waitingForQoderAuthorization": "正在等待 Qoder 授权...", - "exchangingCodeForTokens": "正在用授权码换取 Tokens...", - "nodeIncompatibleTitle": "不兼容的 Node.js 版本", - "nodeIncompatibleDesc": "你当前运行的是 Node.js {version},它不在 OmniRoute 支持的安全运行时策略内。请使用已打补丁的 Node.js 20.x 或 22.x LTS 版本。", - "nodeIncompatibleFixLabel": "修复:安装已打补丁的 Node.js 22 LTS 版本", - "nodeIncompatibleHint": "OmniRoute 要求 Node.js 22.22.2+(22.x LTS)或 24.0.0+(24.x LTS)。为保证稳定性,建议使用 Node 24 LTS。" + "waitingForGoogleAuthorization": "正在等待Google授权...", + "waitingForOpenAIAuthorization": "正在等待OpenAI授权...", + "waitingForAntigravityAuthorization": "正在等待Antigravity授权...", + "waitingForQoderAuthorization": "正在等待Qoder授权...", + "exchangingCodeForTokens": "正在用授权码换取Tokens...", + "nodeIncompatibleTitle": "不兼容的Node.js版本", + "nodeIncompatibleDesc": "你当前运行的是Node.js {version},它不在OmniRoute支持的安全运行时策略内。请使用已打补丁的Node.js 20.x或 22.x LTS版本。", + "nodeIncompatibleFixLabel": "修复:安装已打补丁的Node.js 22 LTS版本", + "nodeIncompatibleHint": "OmniRoute要求Node.js 22.22.2+(22.x LTS)或 24.0.0+(24.x LTS)。为保证稳定性,建议使用Node 24 LTS。" }, "landing": { "brandName": "OmniRoute", @@ -8997,64 +8997,64 @@ "github": "GitHub", "versionLive": "v1.0 现已上线", "oneEndpoint": "一个端点", - "allProviders": "所有 AI 提供者", - "heroDescription": "带 Web 仪表板的 AI 端点代理,是 CLIProxyAPI 的 JavaScript 版本。可与 Claude Code、OpenAI Codex、Cline、RooCode 等 CLI 工具无缝配合。", + "allProviders": "所有AI供应商", + "heroDescription": "带Web看板的AI端点代理,是CLIProxyAPI的JavaScript版本。可与Claude Code、OpenAI Codex、Cline、RooCode等CLI工具无缝配合。", "getStarted": "开始使用", - "viewOnGithub": "在 GitHub 上查看", + "viewOnGithub": "在GitHub上查看", "powerfulFeatures": "强大的功能", - "featuresSubtitle": "在一个地方管理 AI 基础设施所需的一切,专为规模化而构建。", + "featuresSubtitle": "在一个地方管理AI基础设施所需的一切,专为规模化而构建。", "featureUnifiedEndpointTitle": "统一端点", - "featureUnifiedEndpointDesc": "通过单一标准 API URL 访问所有提供者。", + "featureUnifiedEndpointDesc": "通过单一标准API URL访问所有供应商。", "featureEasySetupTitle": "轻松设置", - "featureEasySetupDesc": "使用 npx 命令在几分钟内启动并运行。", + "featureEasySetupDesc": "使用npx命令在几分钟内启动并运行。", "featureModelFallbackTitle": "模型回退", - "featureModelFallbackDesc": "发生故障或高延迟时自动切换提供者。", + "featureModelFallbackDesc": "发生故障或高延迟时自动切换供应商。", "featureUsageTrackingTitle": "使用情况追踪", "featureUsageTrackingDesc": "所有模型的详细分析和成本监控。", - "featureOAuthApiKeysTitle": "OAuth 与 API 密钥", + "featureOAuthApiKeysTitle": "OAuth与API Key", "featureOAuthApiKeysDesc": "在一个保管库中安全地管理凭据。", "featureCloudSyncTitle": "云同步", "featureCloudSyncDesc": "立即跨设备同步您的配置。", - "featureCliSupportTitle": "CLI 支持", - "featureCliSupportDesc": "适用于 Claude Code、Codex、Cline、Cursor 等工具。", - "featureDashboardTitle": "仪表板", - "featureDashboardDesc": "用于实时流量分析的可视化仪表板。", - "howItWorks": "OmniRoute 工作原理", - "howItWorksDescription": "数据从您的应用程序通过我们的智能路由层无缝流向最适合该工作的提供者。", - "howItWorksStep1Title": "1. CLI 和 SDK", - "howItWorksStep1Description": "您的请求从您最喜欢的工具或我们的统一 SDK 开始。只需更改基本 URL 即可。", - "howItWorksStep2Title": "2. OmniRoute 中枢", - "howItWorksStep2Description": "我们的引擎分析提示、检查提供者的运行状况以及最低延迟或成本的路线。", - "howItWorksStep3Title": "3. AI 提供者", - "howItWorksStep3Description": "请求会被立即转发给 OpenAI、Anthropic、Gemini 或其他提供者完成处理。", + "featureCliSupportTitle": "CLI支持", + "featureCliSupportDesc": "适用于Claude Code、Codex、Cline、Cursor等工具。", + "featureDashboardTitle": "看板", + "featureDashboardDesc": "用于实时流量分析的可视化看板。", + "howItWorks": "OmniRoute工作原理", + "howItWorksDescription": "数据从您的应用程序通过我们的智能路由层无缝流向最适合该工作的供应商。", + "howItWorksStep1Title": "1. CLI和SDK", + "howItWorksStep1Description": "您的请求从您最喜欢的工具或我们的统一SDK开始。只需更改基本URL即可。", + "howItWorksStep2Title": "2. OmniRoute中枢", + "howItWorksStep2Description": "我们的引擎分析提示、检查供应商的运行状况以及最低延迟或成本的路线。", + "howItWorksStep3Title": "3. AI供应商", + "howItWorksStep3Description": "请求会被立即转发给OpenAI、Anthropic、Gemini或其他供应商完成处理。", "getStartedIn30Seconds": "30 秒内开始", - "getStartedDescription": "安装 OmniRoute,通过 Web 仪表板配置你的提供者,然后开始路由 AI 请求。", - "installOmniRoute": "安装 OmniRoute", - "installStepDescription": "运行 npx 命令立即启动服务器", - "openDashboard": "打开仪表板", - "openDashboardStepDescription": "通过 Web 界面配置提供者和 API 密钥", + "getStartedDescription": "安装OmniRoute,通过Web看板配置你的供应商,然后开始路由AI请求。", + "installOmniRoute": "安装OmniRoute", + "installStepDescription": "运行npx命令立即启动服务器", + "openDashboard": "打开看板", + "openDashboardStepDescription": "通过Web界面配置供应商和API Key", "routeRequests": "路由请求", - "routeRequestsStepDescription": "将您的 CLI 工具指向 {endpoint}", + "routeRequestsStepDescription": "将您的CLI工具指向 {endpoint}", "terminal": "终端", "copy": "复制", "copied": "✓ 已复制", - "startingOmniRoute": "正在启动 OmniRoute...", + "startingOmniRoute": "正在启动OmniRoute...", "serverRunningOnLabel": "服务器运行于", - "dashboardLabel": "仪表板", + "dashboardLabel": "看板", "readyToRoute": "已准备好开始路由! ✓", - "configureProvidersNote": "📝 在仪表板中配置提供者或使用环境变量", + "configureProvidersNote": "📝 在看板中配置供应商或使用环境变量", "dataLocation": "数据位置:", "dataLocationMacLinux": "macOS/Linux:", "dataLocationWindows": "Windows:", "product": "产品", - "dashboardLink": "仪表板", + "dashboardLink": "看板", "changelog": "变更日志", "resources": "资源", "documentation": "文档", "npm": "npm", "legal": "法律", - "mitLicense": "MIT 许可证", - "footerTagline": "AI 生成的统一端点。轻松连接、路由和管理您的 AI 提供者。", + "mitLicense": "MIT许可证", + "footerTagline": "AI生成的统一端点。轻松连接、路由和管理您的AI供应商。", "copyright": "© {year} OmniRoute。保留所有权利。", "flowToolClaudeCode": "Claude Code", "flowToolOpenAICodex": "OpenAI Codex", @@ -9065,8 +9065,8 @@ "flowProviderGemini": "Gemini", "flowProviderGithubCopilot": "GitHub Copilot", "interactiveDiagram": "可交互流程图", - "ctaTitle": "准备好简化你的 AI 基础设施了吗?", - "ctaDescription": "加入更多开发者,一起用 OmniRoute 简化 AI 集成流程。开源且可免费开始使用。", + "ctaTitle": "准备好简化你的AI基础设施了吗?", + "ctaDescription": "加入更多开发者,一起用OmniRoute简化AI集成流程。开源且可免费开始使用。", "startFree": "免费开始", "readDocumentation": "阅读文档" }, @@ -9075,13 +9075,13 @@ "quickStart": "快速入门", "deploymentGuides": "部署指南", "features": "特点", - "supportedProviders": "支持的提供者", - "supportedProvidersToc": "提供者", + "supportedProviders": "支持的供应商", + "supportedProvidersToc": "供应商", "commonUseCases": "常见用例", "clientCompatibility": "客户端兼容性", "protocolsToc": "协议", "apiReference": "API参考", - "managementApiReference": "管理 API 参考", + "managementApiReference": "管理API参考", "managementApiDescription": "用于代理注册表、作用域绑定以及旧版代理迁移的自动化接口。", "method": "方法", "path": "路径", @@ -9090,11 +9090,11 @@ "prefix": "前缀", "troubleshooting": "故障排除", "supportsChat": "支持聊天和响应端点。", - "oauthAutoRefresh": "支持自动刷新 Token 的 OAuth 连接。", + "oauthAutoRefresh": "支持自动刷新Token的OAuth连接。", "fullStreaming": "所有模型都支持完整流式输出。", "docsLabel": "文档", - "docsHeroDescription": "面向多提供者 LLM 的 AI 网关。一个端点即可统一接入 OpenAI、Anthropic、Gemini、GitHub Copilot、Claude Code、Cursor 等 20+ 提供者。", - "openDashboard": "打开仪表板", + "docsHeroDescription": "面向多供应商LLM的AI网关。一个端点即可统一接入OpenAI、Anthropic、Gemini、GitHub Copilot、Claude Code、Cursor等 20+ 供应商。", + "openDashboard": "打开看板", "endpointPage": "端点页面", "github": "GitHub", "reportIssue": "报告问题", @@ -9102,103 +9102,103 @@ "documentationVersion": "文档 - v{version}", "quickStartStep1Title": "1.安装并运行", "quickStartStep1Prefix": "运行", - "quickStartStep1Middle": "或者从 GitHub 克隆并运行", - "quickStartStep2Title": "2. 创建API密钥", + "quickStartStep1Middle": "或者从GitHub克隆并运行", + "quickStartStep2Title": "2. 创建API Key", "quickStartStep2Text": "转至端点 -> 注册密钥。每个环境生成一个密钥。", - "quickStartStep3Title": "3. 连接提供者", - "quickStartStep3Text": "通过 OAuth 登录、API 密钥或免费套餐自动接入来添加提供者账户。", - "quickStartStep4Title": "4. 设置客户端基本 URL", - "quickStartStep4Prefix": "将您的 IDE 或 API 客户端指向", - "quickStartStep4Suffix": "例如使用提供者前缀", + "quickStartStep3Title": "3. 连接供应商", + "quickStartStep3Text": "通过OAuth登录、API Key或免费套餐自动接入来添加供应商账户。", + "quickStartStep4Title": "4. 设置客户端基本URL", + "quickStartStep4Prefix": "将您的IDE或API客户端指向", + "quickStartStep4Suffix": "例如使用供应商前缀", "deploySetupTitle": "设置指南", - "deploySetupText": "OmniRoute 的分步安装、环境配置和首次运行演练。", + "deploySetupText": "OmniRoute的分步安装、环境配置和首次运行演练。", "deployElectronTitle": "电子桌面", - "deployElectronText": "在 Windows、macOS 和 Linux 上将 OmniRoute 作为本机桌面应用程序运行。", - "deployDockerTitle": "码头工人", - "deployDockerText": "使用 Docker Compose 进行容器化部署;为生产堆栈和 Kubernetes 做好准备。", + "deployElectronText": "在Windows、macOS和Linux上将OmniRoute作为本机桌面应用程序运行。", + "deployDockerTitle": "Docker", + "deployDockerText": "使用Docker Compose进行容器化部署;为生产堆栈和Kubernetes做好准备。", "deployVmTitle": "虚拟机", - "deployVmText": "在任何 Linux VM 上自托管。包括 systemd 单元、日志轮换和备份工具。", + "deployVmText": "在任何Linux VM上自托管。包括systemd单元、日志轮换和备份工具。", "deployFlyTitle": "飞行大作战", - "deployFlyText": "使用一个 Fly.toml 和一个部署命令部署到 Fly.io 边缘运行时。", + "deployFlyText": "使用一个Fly.toml和一个部署命令部署到Fly.io边缘运行时。", "deployPwaTitle": "渐进式网页应用", - "deployPwaText": "在 Android、iOS 和桌面浏览器上将 OmniRoute 作为渐进式 Web 应用程序安装。", + "deployPwaText": "在Android、iOS和桌面浏览器上将OmniRoute作为渐进式Web应用程序安装。", "deployTermuxTitle": "Termux(Android)", - "deployTermuxText": "通过 Termux 在 Android 上以无界面模式运行 OmniRoute,并从移动浏览器访问仪表盘。", - "featureRoutingTitle": "多提供者路由", - "featureRoutingText": "通过单一 OpenAI 兼容端点将请求路由到 30+ AI 提供者,支持聊天、Responses、音频和图像 API。", + "deployTermuxText": "通过Termux在Android上以无界面模式运行OmniRoute,并从移动浏览器访问看板。", + "featureRoutingTitle": "多供应商路由", + "featureRoutingText": "通过单一OpenAI兼容端点将请求路由到 30+ AI供应商,支持聊天、Responses、音频和图像API。", "featureCombosTitle": "组合和平衡", "featureCombosText": "使用后备链和平衡策略创建模型组合:循环、优先级、随机、最少使用和成本优化。", "featureUsageTitle": "使用情况和成本跟踪", - "featureUsageText": "实时令牌计数、每个提供者/模型的成本计算以及按 API 密钥和帐户划分的详细使用情况细分。", - "featureAnalyticsTitle": "分析仪表板", + "featureUsageText": "实时令牌计数、每个供应商/模型的成本计算以及按API Key和帐户划分的详细使用情况细分。", + "featureAnalyticsTitle": "分析看板", "featureAnalyticsText": "可视化分析,包含随时间变化的请求、令牌、错误、延迟、成本和模型受欢迎程度的图表。", "featureHealthTitle": "健康监测", - "featureHealthText": "实时健康检查、提供者状态、断路器状态以及具有指数退避功能的自动速率限制检测。", + "featureHealthText": "实时健康检查、供应商状态、断路器状态以及具有指数退避功能的自动速率限制检测。", "featureCliTitle": "CLI工具", - "featureCliText": "可在仪表板中管理 IDE 配置、导出/导入备份、发现 Codex 配置文件并修改设置。", + "featureCliText": "可在看板中管理IDE配置、导出/导入备份、发现Codex配置文件并修改设置。", "featureSecurityTitle": "安全与策略", - "featureSecurityText": "API 密钥身份验证、IP 过滤、提示注入防护、域策略、会话管理和审核日志记录。", + "featureSecurityText": "API Key身份验证、IP过滤、提示注入防护、域策略、会话管理和审核日志记录。", "featureCloudSyncTitle": "云同步", - "featureCloudSyncText": "将配置同步到 Cloudflare Workers,以便通过加密凭据和自动故障转移实现远程访问。", - "providersAcrossConnectionTypes": "跨三种连接类型的 {count} 提供者。", - "manageProviders": "管理提供者", - "providersCount": "{count} 提供者", + "featureCloudSyncText": "将配置同步到Cloudflare Workers,以便通过加密凭据和自动故障转移实现远程访问。", + "providersAcrossConnectionTypes": "跨三种连接类型的 {count} 供应商。", + "manageProviders": "管理供应商", + "providersCount": "{count} 供应商", "providerTypeFree": "免费套餐", "providerTypeOAuth": "OAuth", - "providerTypeApiKey": "API密钥", - "useCaseSingleEndpointTitle": "许多提供者的单一端点", - "useCaseSingleEndpointText": "将客户端统一指向一个 Base URL,再通过模型前缀进行路由(例如:gh/、cc/、kr/、openai/)。", + "providerTypeApiKey": "API Key", + "useCaseSingleEndpointTitle": "许多供应商的单一端点", + "useCaseSingleEndpointText": "将客户端统一指向一个Base URL,再通过模型前缀路由(例如:gh/、cc/、kr/、openai/)。", "useCaseFallbackTitle": "使用组合进行回退和模型切换", - "useCaseFallbackText": "在仪表板中创建组合模型,并在提供者内部轮换时保持客户端配置稳定。", + "useCaseFallbackText": "在看板中创建组合模型,并在供应商内部轮换时保持客户端配置稳定。", "useCaseUsageVisibilityTitle": "使用情况、成本和调试可见性", - "useCaseUsageVisibilityText": "在“使用情况”和“分析”选项卡中按提供者、帐户和 API 密钥跟踪令牌和成本。", + "useCaseUsageVisibilityText": "在“使用情况”和“分析”选项卡中按供应商、帐户和API Key跟踪令牌和成本。", "clientCherryStudioTitle": "樱桃工作室", - "baseUrlLabel": "基础 URL", + "baseUrlLabel": "基础URL", "chatEndpointLabel": "聊天端点", "modelRecommendationLabel": "模型建议:显式前缀", - "clientCodexTitle": "Codex / GitHub Copilot 模型", - "clientCodexBullet1": "使用模型 ID", - "clientCodexBullet2": "Codex 系列模型会自动路由到", - "clientCodexBullet3": "非法典模型继续", + "clientCodexTitle": "Codex / GitHub Copilot模型", + "clientCodexBullet1": "使用模型ID", + "clientCodexBullet2": "Codex系列模型会自动路由到", + "clientCodexBullet3": "非 Codex 模型继续", "clientCursorTitle": "Cursor IDE", "clientCursorBullet1": "使用", - "clientCursorBullet1Suffix": "Cursor 模型前缀。", - "clientCursorBullet2": "OAuth 连接方式:在 Providers 页面中登录。", + "clientCursorBullet1Suffix": "Cursor模型前缀。", + "clientCursorBullet2": "OAuth连接方式:在供应商s页面中登录。", "clientClaudeTitle": "Claude Code / Antigravity", "clientClaudeBullet1Prefix": "使用", "clientClaudeBullet1Middle": "(Claude)或", "clientClaudeBullet1Suffix": "(Antigravity)前缀。", "clientWindsurfTitle": "Windsurf", - "clientWindsurfBullet1": "将 OmniRoute 用作 OpenAI 兼容的 base URL,并保留显式提供者前缀,以实现确定性路由。", - "clientWindsurfBullet2": "常规流量将模型指向 `/v1/chat/completions`,并为 Codex 风格流程保留 `/v1/responses`。", - "clientWindsurfBullet3": "使用仪表盘 -> CLI 工具获取现成的 Windsurf 配置指南。", + "clientWindsurfBullet1": "将OmniRoute用作OpenAI兼容的base URL,并保留显式供应商前缀,以实现确定性路由。", + "clientWindsurfBullet2": "常规流量将模型指向 `/v1/chat/completions`,并为Codex风格流程保留 `/v1/responses`。", + "clientWindsurfBullet3": "使用看板 -> CLI工具获取现成的Windsurf配置指南。", "clientClineTitle": "Cline", - "clientClineBullet1": "Cline 最适合使用显式的提供者/模型前缀,这样路由器无需猜测后端。", - "clientClineBullet2": "常规模型使用 `/v1/chat/completions`,并在不同账户间复用同一个 OmniRoute base URL。", - "clientClineBullet3": "调试 Cline 运行时问题前,请使用提供者仪表盘验证 OAuth/API 密钥。", + "clientClineBullet1": "Cline最适合使用显式的供应商/模型前缀,这样路由器无需猜测后端。", + "clientClineBullet2": "常规模型使用 `/v1/chat/completions`,并在不同账户间复用同一个OmniRoute base URL。", + "clientClineBullet3": "调试Cline运行时问题前,请使用供应商看板验证OAuth/API Key。", "clientKimiTitle": "Kimi Coding", - "clientKimiBullet1": "轮换底层账户或提供者组合时,将 OmniRoute 用作稳定的 base URL。", + "clientKimiBullet1": "轮换底层账户或供应商组合时,将OmniRoute用作稳定的base URL。", "clientKimiBullet2": "在编码流程中优先使用带前缀的模型,让回退和审计轨迹保持明确。", - "clientKimiBullet3": "当你希望为使用工具的客户端启用原生 Responses 风格路由时,请使用 `/v1/responses`。", - "protocolsTitle": "协议:MCP 与 A2A", - "protocolsDescription": "除了 OpenAI 兼容 API 之外,OmniRoute 还提供两类操作协议:用于工具执行的 MCP,以及用于智能体协作工作流的 A2A。", + "clientKimiBullet3": "当你希望为使用工具的客户端启用原生Responses风格路由时,请使用 `/v1/responses`。", + "protocolsTitle": "协议:MCP与A2A", + "protocolsDescription": "除了OpenAI兼容API之外,OmniRoute还提供两类操作协议:用于工具执行的MCP,以及用于智能体协作工作流的A2A。", "protocolMcpTitle": "MCP(Model Context Protocol)", - "protocolMcpDesc": "通过 stdio 使用 MCP,让客户端发现并调用 OmniRoute 工具,同时具备审计可见性。", - "protocolMcpStep1": "使用 `omniroute --mcp` 启动 MCP 传输。", - "protocolMcpStep2": "将你的 MCP 客户端指向 stdio 传输。", + "protocolMcpDesc": "通过stdio使用MCP,让客户端发现并调用OmniRoute工具,同时具备审计可见性。", + "protocolMcpStep1": "使用 `omniroute --mcp` 启动MCP传输。", + "protocolMcpStep2": "将你的MCP客户端指向stdio传输。", "protocolMcpStep3": "调用 `omniroute_get_health` 和 `omniroute_list_combos` 验证连通性。", "protocolA2aTitle": "A2A(Agent2Agent)", - "protocolA2aDesc": "使用 A2A JSON-RPC 以同步方式或通过 SSE 流式方式提交任务。", + "protocolA2aDesc": "使用A2A JSON-RPC以同步方式或通过SSE流式方式提交任务。", "protocolA2aStep1": "读取 `/.well-known/agent.json` 进行智能体发现。", "protocolA2aStep2": "向 `POST /a2a` 发送 `message/send` 或 `message/stream` 请求。", "protocolA2aStep3": "通过 `tasks/get` 和 `tasks/cancel` 管理任务生命周期。", "protocolTroubleshootingTitle": "协议故障排查", - "protocolTroubleshooting1": "如果 MCP 状态为离线,请确认 stdio 进程正在运行,且心跳文件持续更新。", - "protocolTroubleshooting2": "如果 A2A 任务长时间停留在 `working`,请检查 `/api/a2a/tasks/:id` 和流事件中是否出现终态。", + "protocolTroubleshooting1": "如果MCP状态为离线,请确认stdio进程正在运行,且心跳文件持续更新。", + "protocolTroubleshooting2": "如果A2A任务长时间停留在 `working`,请检查 `/api/a2a/tasks/:id` 和流事件中是否出现终态。", "protocolTroubleshooting3": "可使用 `/dashboard/mcp` 和 `/dashboard/a2a` 进行运行控制并查看审计信息。", - "endpointChatNote": "OpenAI 兼容聊天端点(默认)。", - "endpointResponsesNote": "Responses API 端点(Codex、o 系列)。", - "endpointModelsNote": "所有连接的提供者的模型目录。", + "endpointChatNote": "OpenAI兼容聊天端点(默认)。", + "endpointResponsesNote": "Responses API端点(Codex、o系列)。", + "endpointModelsNote": "所有连接的供应商的模型目录。", "endpointAudioNote": "音频转录(Deepgram、AssemblyAI)。", "endpointSpeechNote": "语音生成(ElevenLabs、OpenAI TTS)。", "endpointEmbeddingsNote": "文本嵌入生成(OpenAI、Cohere、Voyage)。", @@ -9209,81 +9209,81 @@ "mgmtProxiesListNote": "列出已保存的代理注册项(支持分页)。", "mgmtProxiesCreateNote": "在注册表中创建可复用的代理项。", "mgmtProxiesHealthNote": "基于代理日志获取每个已保存代理的 24 小时 / 滚动健康指标。", - "mgmtProxiesBulkAssignNote": "一次请求即可为多个 scope ID 统一分配或清除同一个代理。", - "mgmtAssignmentsListNote": "按 scope、scope_id 或 proxy_id 列出代理绑定关系。", - "mgmtAssignmentsUpdateNote": "为 global/provider/account/combo 作用域分配或清除代理。", - "mgmtLegacyMigrationNote": "将旧版 proxyConfig 映射导入为注册表绑定关系。", - "modelPrefixesDescriptionStart": "在模型名称之前使用提供者前缀可路由到特定提供者。示例:", - "modelPrefixesDescriptionEnd": "会被路由到 GitHub Copilot。", - "provider": "提供者", + "mgmtProxiesBulkAssignNote": "一次请求即可为多个scope ID统一分配或清除同一个代理。", + "mgmtAssignmentsListNote": "按scope、scope_id或proxy_id列出代理绑定关系。", + "mgmtAssignmentsUpdateNote": "为global/provider/account/combo作用域分配或清除代理。", + "mgmtLegacyMigrationNote": "将旧版proxyConfig映射导入为注册表绑定关系。", + "modelPrefixesDescriptionStart": "在模型名称之前使用供应商前缀可路由到特定供应商。示例:", + "modelPrefixesDescriptionEnd": "会被路由到GitHub Copilot。", + "provider": "供应商", "type": "类型", - "troubleshootingModelRouting": "如果客户端在模型路由上失败,请使用显式 provider/model(例如:gh/gpt-5.1-codex)。", - "troubleshootingAmbiguousModels": "如果您收到不明确的模型错误,请选择提供者前缀而不是裸模型 ID。", - "troubleshootingCodexFamily": "对于 GitHub Codex 系列模型,请保持模型名为 `gh/codex-model`;路由器会自动选择 `/responses`。", - "troubleshootingTestConnection": "在从 IDE 或外部客户端进行测试之前,请使用仪表板 > 提供者 > 测试连接。", - "troubleshootingCircuitBreaker": "如果提供者显示断路器已打开,请等待冷却或查看运行状况页面以了解详细信息。", - "troubleshootingOAuth": "对于 OAuth 提供者,如果 Token 过期,请重新认证,并检查提供者卡片上的状态指示器。", - "endpointCompletionsNote": "用于文本生成的旧版 completions 端点。", + "troubleshootingModelRouting": "如果客户端在模型路由上失败,请使用显式provider/model(例如:gh/gpt-5.1-codex)。", + "troubleshootingAmbiguousModels": "如果您收到不明确的模型错误,请选择供应商前缀而不是裸模型ID。", + "troubleshootingCodexFamily": "对于GitHub Codex系列模型,请保持模型名为 `gh/codex-model`;路由器会自动选择 `/responses`。", + "troubleshootingTestConnection": "在从IDE或外部客户端测试之前,请使用看板 > 供应商 > 测试连接。", + "troubleshootingCircuitBreaker": "如果供应商显示断路器已打开,请等待冷却或查看运行状况页面以了解详细信息。", + "troubleshootingOAuth": "对于OAuth供应商,如果Token过期,请重新认证,并检查供应商卡片上的状态指示器。", + "endpointCompletionsNote": "用于文本生成的旧版completions端点。", "endpointModerationsNote": "内容审核和安全分类。", "endpointRerankNote": "用于检索增强生成的文档重排序(Cohere、Jina)。", - "endpointSearchNote": "通过 5 个提供者进行网页搜索(Serper、Brave、Exa、Tavily、Perplexity)。", + "endpointSearchNote": "通过 5 个供应商进行网页搜索(Serper、Brave、Exa、Tavily、Perplexity)。", "endpointSearchAnalyticsNote": "搜索请求的分析和指标。", - "endpointVideoNote": "视频生成(ComfyUI、SD WebUI 工作流)。", - "endpointMusicNote": "通过 ComfyUI 工作流生成音乐。", - "endpointMessagesNote": "Anthropic 原生 messages 端点。", - "endpointCountTokensNote": "统计给定消息载荷的 token 数。", + "endpointVideoNote": "视频生成(ComfyUI、SD WebUI工作流)。", + "endpointMusicNote": "通过ComfyUI工作流生成音乐。", + "endpointMessagesNote": "Anthropic原生messages端点。", + "endpointCountTokensNote": "统计给定消息载荷的token数。", "endpointFilesNote": "用于多模态输入的文件上传。", - "endpointBatchesNote": "用于批量 API 请求的 Batch 处理。", - "endpointWsNote": "用于实时流式传输的 WebSocket 端点。", - "mgmtProvidersListNote": "列出所有已注册的提供者连接。", - "mgmtProvidersCreateNote": "创建新的提供者连接。", - "mgmtProvidersUpdateNote": "更新现有提供者连接。", - "mgmtProvidersDeleteNote": "删除提供者连接。", - "mgmtProvidersTestNote": "测试提供者的连接和认证。", - "mgmtProvidersModelsNote": "列出特定提供者的可用模型。", + "endpointBatchesNote": "用于批量API请求的Batch处理。", + "endpointWsNote": "用于实时流式传输的WebSocket端点。", + "mgmtProvidersListNote": "列出所有已注册的供应商连接。", + "mgmtProvidersCreateNote": "创建新的供应商连接。", + "mgmtProvidersUpdateNote": "更新现有供应商连接。", + "mgmtProvidersDeleteNote": "删除供应商连接。", + "mgmtProvidersTestNote": "测试供应商的连接和认证。", + "mgmtProvidersModelsNote": "列出特定供应商的可用模型。", "mgmtSettingsGetNote": "获取当前应用设置。", "mgmtSettingsUpdateNote": "更新应用设置。", "mgmtPayloadRulesGetNote": "获取载荷转换规则。", "mgmtPayloadRulesUpdateNote": "更新载荷转换规则。", - "mcpToolsTitle": "MCP 工具", - "mcpToolsDescription": "OmniRoute 通过 Model Context Protocol 暴露 {count} 个工具,用于 Agent 编排。", + "mcpToolsTitle": "MCP工具", + "mcpToolsDescription": "OmniRoute通过Model Context Protocol暴露 {count} 个工具,用于Agent编排。", "mcpToolsCount": "{count} 个工具", - "mcpToolsToc": "MCP 工具", + "mcpToolsToc": "MCP工具", "mcpToolsRoutingTitle": "路由与发现", "mcpToolsRoutingDesc": "健康检查、组合管理、配额监控、成本报告和模型目录访问。", "mcpToolsOperationsTitle": "运维与策略", - "mcpToolsOperationsDesc": "路由模拟、预算保护、策略切换、韧性配置和提供者指标。", + "mcpToolsOperationsDesc": "路由模拟、预算保护、策略切换、韧性配置和供应商指标。", "mcpToolsCacheTitle": "缓存管理", "mcpToolsCacheDesc": "查看缓存统计,并清空语义缓存或签名缓存。", "mcpToolsCompressionTitle": "压缩发动机", - "mcpToolsCompressionDesc": "配置 RTK/Brotli 压缩、交换引擎并按组合检查压缩分析。", + "mcpToolsCompressionDesc": "配置RTK/Brotli压缩、交换引擎并按组合检查压缩分析。", "mcpToolsOneProxyTitle": "1代理/隧道", - "mcpToolsOneProxyDesc": "管理出站代理、轮换住宅 IP 并检查代理运行状况。", + "mcpToolsOneProxyDesc": "管理出站代理、轮换住宅IP并检查代理运行状况。", "mcpToolsMemoryTitle": "记忆", "mcpToolsMemoryDesc": "搜索、添加和清除持久化对话记忆条目。", - "mcpToolsSkillsTitle": "技能", - "mcpToolsSkillsDesc": "列出、启用、执行和监控自定义技能执行。", + "mcpToolsSkillsTitle": "Skills", + "mcpToolsSkillsDesc": "列出、启用、执行和监控自定义Skills执行。", "featureAutoComboTitle": "Auto-Combo", - "featureAutoComboText": "根据你连接的提供者、使用模式和模型能力,自动创建优化组合。", + "featureAutoComboText": "根据你连接的供应商、使用模式和模型能力,自动创建优化组合。", "featureSearchTitle": "网页搜索", - "featureSearchText": "集成 5 个提供者的网页搜索(Serper、Brave、Exa、Tavily、Perplexity),并包含分析和成本跟踪。", + "featureSearchText": "集成 5 个供应商的网页搜索(Serper、Brave、Exa、Tavily、Perplexity),并包含分析和成本跟踪。", "featureMemoryTitle": "记忆系统", "featureMemoryText": "跨会话提供提取、注入、检索和摘要能力的持久化对话记忆。", - "featureSkillsTitle": "技能框架", - "featureSkillsText": "可扩展技能系统,支持内置和自定义技能、沙箱执行、请求拦截和上下文注入。", - "featureAcpTitle": "Agent 通信", - "featureAcpText": "Agent Communication Protocol (ACP) 注册表,用于管理 Agent 间工作流和工具编排。", - "protocolAcpTitle": "ACP(Agent 通信)", - "protocolAcpDesc": "通过 ACP 注册表注册和管理 Agent,用于 Agent 间通信和工具共享。", - "protocolAcpStep1": "前往仪表盘 → Agents 查看已注册的 ACP Agent。", - "protocolAcpStep2": "使用能力和端点配置注册新的 Agent。", - "protocolAcpStep3": "使用 CLI 工具配置 Agent 通信通道。" + "featureSkillsTitle": "Skills框架", + "featureSkillsText": "可扩展Skills系统,支持内置和自定义Skills、沙箱执行、请求拦截和上下文注入。", + "featureAcpTitle": "Agent通信", + "featureAcpText": "Agent Communication Protocol (ACP) 注册表,用于管理Agent间工作流和工具编排。", + "protocolAcpTitle": "ACP(Agent通信)", + "protocolAcpDesc": "通过ACP注册表注册和管理Agent,用于Agent间通信和工具共享。", + "protocolAcpStep1": "前往看板 → Agents查看已注册的ACP Agent。", + "protocolAcpStep2": "使用能力和端点配置注册新的Agent。", + "protocolAcpStep3": "使用CLI工具配置Agent通信通道。" }, "legal": { "privacyPolicy": "隐私政策", "termsOfService": "服务条款", - "providerConfigurations": "提供者配置", - "apiKeys": "API 密钥", + "providerConfigurations": "供应商配置", + "apiKeys": "API Key", "usageLogs": "使用日志", "applicationSettings": "应用程序设置", "viewExportAnalytics": "查看和导出使用情况分析", @@ -9291,57 +9291,57 @@ "configureRetention": "配置日志保留策略", "backupRestore": "备份和恢复您的数据库", "privacyMetadataTitle": "隐私政策 | OmniRoute", - "privacyMetadataDescription": "OmniRoute AI API 代理路由器的隐私政策。", + "privacyMetadataDescription": "OmniRoute AI API代理路由器的隐私政策。", "termsMetadataTitle": "服务条款 | OmniRoute", - "termsMetadataDescription": "OmniRoute AI API 代理路由器的服务条款。", + "termsMetadataDescription": "OmniRoute AI API代理路由器的服务条款。", "backToHome": "返回首页", "lastUpdated": "最后更新:{date}", "policyLastUpdatedDate": "2026 年 2 月 13 日", "listSeparator": "-", "questionsVisit": "有问题吗?访问我们的", - "githubRepository": "GitHub 仓库", + "githubRepository": "GitHub仓库", "privacySection1Title": "1. 本地优先架构", - "privacySection1Text": "OmniRoute 是一款本地优先的应用。所有数据处理和存储都只发生在你的设备上,不存在集中式服务器收集你的信息。", + "privacySection1Text": "OmniRoute是一款本地优先的应用。所有数据处理和存储都只发生在你的设备上,不存在集中式服务器收集你的信息。", "privacySection2Title": "2. 我们存储的数据", "privacyDataStoredIn": "以下数据存储在本地", - "privacyDataProviderConfigurationsDesc": "连接 URL、提供者类型和优先级设置", - "privacyDataApiKeysDesc": "已加密并存储在本地,用于与 AI 提供者进行身份验证", + "privacyDataProviderConfigurationsDesc": "连接URL、供应商类型和优先级设置", + "privacyDataApiKeysDesc": "已加密并存储在本地,用于与AI供应商身份验证", "privacyDataUsageLogsDesc": "请求计数、令牌使用情况、模型名称、时间戳和响应时间", "privacyDataApplicationSettingsDesc": "主题偏好、路由策略和组合配置", "privacySection3Title": "3. 无遥测", - "privacySection3Text": "OmniRoute 不收集遥测、分析或崩溃报告。不会向我们或任何第三方发送数据。你的使用模式、API 调用和配置都会保持私密。", - "privacySection4Title": "4. 第三方 AI 提供者", - "privacySection4Text": "当你通过 OmniRoute 发起 API 调用时,请求会被转发到你配置的 AI 提供者(例如:OpenAI、Anthropic、Google)。这些提供者有各自的隐私政策,请查阅:", - "privacyOpenAiPolicy": "OpenAI 隐私政策", - "privacyAnthropicPolicy": "Anthropic 隐私政策", - "privacyGooglePolicy": "Google 隐私政策", + "privacySection3Text": "OmniRoute不收集遥测、分析或崩溃报告。不会向我们或任何第三方发送数据。你的使用模式、API调用和配置都会保持私密。", + "privacySection4Title": "4. 第三方AI供应商", + "privacySection4Text": "当你通过OmniRoute发起API调用时,请求会被转发到你配置的AI供应商(例如:OpenAI、Anthropic、Google)。这些供应商有各自的隐私政策,请查阅:", + "privacyOpenAiPolicy": "OpenAI隐私政策", + "privacyAnthropicPolicy": "Anthropic隐私政策", + "privacyGooglePolicy": "Google隐私政策", "privacySection5Title": "5. 云同步(可选)", - "privacySection5Text": "如果您启用可选的云同步功能,提供者配置和 API 密钥可能会传输到配置的云端点。此功能默认处于禁用状态,需要明确选择加入。", + "privacySection5Text": "如果您启用可选的云同步功能,供应商配置和API Key可能会传输到配置的云端点。此功能默认处于禁用状态,需要明确选择加入。", "privacySection6Title": "6. 日志记录", - "privacyLoggingIntro": "可以通过仪表板设置配置请求日志。您可以:", + "privacyLoggingIntro": "可以通过看板设置配置请求日志。您可以:", "privacySection7Title": "7. 您的权利", "privacySection7TextStart": "由于所有数据都存储在本地,因此您拥有完全的控制权。您可以随时删除您的数据,方法是删除", - "privacySection7TextEnd": "目录或使用仪表板中的数据库备份和恢复功能。", + "privacySection7TextEnd": "目录或使用看板中的数据库备份和恢复功能。", "termsSection1Title": "1. 概述", - "termsSection1Text": "OmniRoute 是一款本地优先的 AI API 代理路由器,完全运行在你的设备上。它通过负载均衡、故障回退和用量跟踪,将请求路由到多个 AI 提供者。", + "termsSection1Text": "OmniRoute是一款本地优先的AI API代理路由器,完全运行在你的设备上。它通过负载均衡、故障回退和用量跟踪,将请求路由到多个AI供应商。", "termsSection2Title": "2. 用户的责任", - "termsResponsibilityApiKeys": "你需要自行负责管理自己的 API 密钥,以及第三方 AI 提供者(OpenAI、Anthropic、Google 等)的凭证。", - "termsResponsibilityCompliance": "你必须遵守通过 OmniRoute 访问的每个 AI 提供者的服务条款。", - "termsResponsibilitySecurity": "你需要负责本地 OmniRoute 安装的安全,包括设置密码和限制网络访问。", + "termsResponsibilityApiKeys": "你需要自行负责管理自己的API Key,以及第三方AI供应商(OpenAI、Anthropic、Google等)的凭证。", + "termsResponsibilityCompliance": "你必须遵守通过OmniRoute访问的每个AI供应商的服务条款。", + "termsResponsibilitySecurity": "你需要负责本地OmniRoute安装的安全,包括设置密码和限制网络访问。", "termsSection3Title": "3. 工作原理", - "termsSection3Text": "OmniRoute 充当中间代理。发送到 OmniRoute 的 API 调用会被转换后转发到你配置的 AI 提供者。除必要的协议转换外,OmniRoute 不会修改你的请求或响应内容。", + "termsSection3Text": "OmniRoute充当中间代理。发送到OmniRoute的API调用会被转换后转发到你配置的AI供应商。除必要的协议转换外,OmniRoute不会修改你的请求或响应内容。", "termsSection4Title": "4. 数据处理", - "termsDataStoredLocally": "所有数据都保存在你本机上的 SQLite 数据库中。", - "termsNoTransmission": "除非你明确启用云同步功能,否则 OmniRoute 不会将任何数据传输到外部服务器。", - "termsDataLocationText": "使用日志、API 密钥和配置存储在", + "termsDataStoredLocally": "所有数据都保存在你本机上的SQLite数据库中。", + "termsNoTransmission": "除非你明确启用云同步功能,否则OmniRoute不会将任何数据传输到外部服务器。", + "termsDataLocationText": "使用日志、API Key和配置存储在", "termsSection5Title": "5. 免责声明", - "termsSection5Text": "OmniRoute 按“原样”提供,不附带任何形式的保证。我们不对 API 使用成本、服务中断或数据丢失造成的任何损失负责。请始终为配置做好备份。", + "termsSection5Text": "OmniRoute按“原样”提供,不附带任何形式的保证。我们不对API使用成本、服务中断或数据丢失造成的任何损失负责。请始终为配置做好备份。", "termsSection6Title": "6. 开源", - "termsSection6Text": "OmniRoute 是开源软件。您可以根据其许可条款自由检查、修改和分发它。" + "termsSection6Text": "OmniRoute是开源软件。您可以根据其许可条款自由检查、修改和分发它。" }, "agents": { - "title": "CLI 智能体", - "description": "发现系统中已安装的 CLI 智能体,并支持添加自定义智能体以便自动检测。", + "title": "CLI智能体", + "description": "发现系统中已安装的CLI智能体,并支持添加自定义智能体以便自动检测。", "refresh": "刷新", "installed": "已安装", "notFound": "未找到", @@ -9349,86 +9349,86 @@ "custom": "自定义", "remove": "移除", "addCustomAgent": "添加自定义智能体", - "addCustomAgentDesc": "注册任意 CLI 工具用于检测,刷新时会自动扫描。", + "addCustomAgentDesc": "注册任意CLI工具用于检测,刷新时会自动扫描。", "agentName": "智能体名称", "binaryName": "可执行文件名", "versionCommand": "版本命令", "spawnArgs": "启动参数", "addAgent": "添加智能体", - "scanning": "正在扫描系统中的 CLI 智能体...", - "opencodeIntegration": "OpenCode 集成", - "opencodeDetected": "已检测到 opencode {version}", - "opencodeDesc": "生成可直接使用的 {configFile},其中会填入你的 OmniRoute Base URL 和全部可用模型。将它放到项目根目录后运行 {command} 即可。", + "scanning": "正在扫描系统中的CLI智能体...", + "opencodeIntegration": "OpenCode集成", + "opencodeDetected": "已检测到opencode {version}", + "opencodeDesc": "生成可直接使用的 {configFile},其中会填入你的OmniRoute Base URL和全部可用模型。将它放到项目根目录后运行 {command} 即可。", "downloadConfig": "下载 {file}", "downloaded": "已下载!", "setupGuideTitle": "设置指南", - "openCliTools": "打开 CLI Tools", - "setupGuideDetectCliTitle": "检测已安装的 CLI", - "setupGuideDetectCliDesc": "安装或更新 CLI 后点击“刷新”,让 OmniRoute 重新扫描可执行文件和版本信息。", + "openCliTools": "打开CLI Tools", + "setupGuideDetectCliTitle": "检测已安装的CLI", + "setupGuideDetectCliDesc": "安装或更新CLI后点击“刷新”,让OmniRoute重新扫描可执行文件和版本信息。", "setupGuideCustomAgentTitle": "注册自定义可执行文件", - "setupGuideCustomAgentDesc": "如果你的 CLI 不在内置列表中,请使用“添加自定义智能体”,并填写可执行文件名与版本命令。", + "setupGuideCustomAgentDesc": "如果你的CLI不在内置列表中,请使用“添加自定义智能体”,并填写可执行文件名与版本命令。", "setupGuideCommandMissingTitle": "修复“command not found”", - "setupGuideCommandMissingDesc": "请确认 CLI 命令已存在于 PATH 中,重新打开一个终端会话后再次点击“刷新”。", - "cliToolsRedirectTitle": "CLI 工具已移至专用页面", - "cliToolsRedirectDesc": "在 CLI Tools 页面管理 Agent CLI 集成与重定向。", + "setupGuideCommandMissingDesc": "请确认CLI命令已存在于PATH中,重新打开一个终端会话后再次点击“刷新”。", + "cliToolsRedirectTitle": "CLI工具已移至专用页面", + "cliToolsRedirectDesc": "在CLI Tools页面管理智能体CLI集成与重定向。", "spawnArgsPlaceholder": "启动参数占位符", "binaryNamePlaceholder": "二进制名称占位符", "versionCommandPlaceholder": "版本命令占位符", "architectureTitle": "架构", - "flowLocalBinary": "本地二进制", + "flowLocalBinary": "3 · 自有认证的 CLI 进程", "flowOmniRoute": "OmniRoute", - "agentNamePlaceholder": "Agent 名称占位符", - "architectureDescription": "了解 OmniRoute 如何在客户端、路由器和 Agent 目标之间转发请求。", + "agentNamePlaceholder": "智能体名称占位符", + "architectureDescription": "了解OmniRoute如何在客户端、路由器和智能体目标之间转发请求。", "flowExecute": "执行", - "flowSpawn": "启动", - "cliToolsRedirectCta": "打开 CLI Tools", - "comparisonTitle": "CLI 工具与 Agent 目标有什么区别?", - "comparisonCliToolsLabel": "CLI 工具页面", - "comparisonCliToolsTitle": "你的 IDE 通过 OmniRoute 发送请求", - "comparisonCliToolsDesc": "配置 Claude Code、Codex、Cursor 和其他 IDE,将 OmniRoute 用作它们的 API base URL。OmniRoute 作为代理,将请求路由到你配置的提供者。", - "comparisonAgentsLabel": "当前页面(Agent 目标)", - "comparisonAgentsTitle": "OmniRoute 将请求发送到本地 CLI 工具", - "comparisonAgentsDesc": "OmniRoute 可以启动本地 CLI 二进制文件(claude、codex、goose)作为执行后端。CLI 工具使用自己的认证处理请求并返回结果。", - "comparisonSummary": "简而言之:CLI 工具 = 你配置工具指向 OmniRoute。Agent 目标 = OmniRoute 将工具用作端点。", - "agentUseCaseHint": "可通过 ACP 协议用作执行目标", + "flowSpawn": "2 · OmniRoute 启动本地二进制", + "cliToolsRedirectCta": "打开CLI Tools", + "comparisonTitle": "CLI工具与智能体目标有什么区别?", + "comparisonCliToolsLabel": "CLI工具页面", + "comparisonCliToolsTitle": "你的IDE通过OmniRoute发送请求", + "comparisonCliToolsDesc": "配置Claude Code、Codex、Cursor和其他IDE,将OmniRoute用作它们的API base URL。OmniRoute作为代理,将请求路由到你配置的供应商。", + "comparisonAgentsLabel": "当前页面(智能体目标)", + "comparisonAgentsTitle": "OmniRoute将请求发送到本地CLI工具", + "comparisonAgentsDesc": "OmniRoute可以启动本地CLI二进制文件(claude、codex、goose)作为执行后端。CLI工具使用自己的认证处理请求并返回结果。", + "comparisonSummary": "简而言之:CLI工具 = 你配置工具指向OmniRoute。智能体目标 = OmniRoute将工具用作端点。", + "agentUseCaseHint": "可通过ACP协议用作执行目标", "flowDiagramClient": "客户端应用", - "flowDiagramClientDesc": "SDK、API 或上游服务", + "flowDiagramClientDesc": "SDK、API或上游服务", "flowDiagramOmniRoute": "OmniRoute", "flowDiagramOmniRouteDesc": "接收请求并选择目标", "flowDiagramSpawn": "启动进程", - "flowDiagramSpawnDesc": "通过 stdio 启动 CLI 二进制文件", - "flowDiagramCli": "CLI 代理", + "flowDiagramSpawnDesc": "通过stdio启动CLI二进制文件", + "flowDiagramCli": "CLI智能体", "flowDiagramCliDesc": "使用自身认证/模型处理", - "fingerprintSettingsHint": "CLI 指纹匹配(伪装成特定 CLI 工具的请求)可在以下位置配置:", + "fingerprintSettingsHint": "CLI指纹匹配(伪装成特定CLI工具的请求)可在以下位置配置:", "settingsRoutingLink": "设置/路由", "openSettings": "设置", - "copyRawUrlTitle": "将原始 URL 复制到剪贴板", + "copyRawUrlTitle": "将原始URL复制到剪贴板", "copied": "复制了!", "copyUrl": "复制网址", "startHere": "从这里开始", "badgeNew": "新", - "viewOnGithub": "在 GitHub 上查看", + "viewOnGithub": "在GitHub上查看", "howToUse": "如何使用", - "browseAllSkillsOnGithub": "浏览 GitHub 上的所有技能", - "apiSkills": "API技能", - "cliSkills": "CLI 技能", - "apiSkillsSubtitle": "{count} 个技能 — 通过 REST / HTTP 控制 OmniRoute", - "cliSkillsSubtitle": "{count} 个技能 — 通过 omniroute 终端可执行文件控制 OmniRoute", - "howToUseStep1": "在你想让代理了解的技能上点击 {copyUrl}。", - "howToUseStep2": "在你的 AI 代理(Claude、Cursor、Cline…)中输入:", - "howToUseStep2Code": "在 [pasted-url] 处使用该技能", - "howToUseStep3": "代理会获取 SKILL.md 并学习 OmniRoute 的 API 或 CLI — 无需手动文档。" + "browseAllSkillsOnGithub": "浏览GitHub上的所有Skills", + "apiSkills": "APISkills", + "cliSkills": "CLI Skills", + "apiSkillsSubtitle": "{count} 个Skills—通过REST / HTTP控制OmniRoute", + "cliSkillsSubtitle": "{count} 个Skills—通过omniroute终端可执行文件控制OmniRoute", + "howToUseStep1": "在你想让智能体了解的Skills上点击 {copyUrl}。", + "howToUseStep2": "在你的AI智能体(Claude、Cursor、Cline…)中输入:", + "howToUseStep2Code": "在 [pasted-url] 处使用该Skills", + "howToUseStep3": "智能体会获取SKILL.md并学习OmniRoute的API或CLI—无需手动文档。" }, "cloudAgents": { - "title": "云代理", - "description": "管理自主编码代理(Jules、Devin、Codex Cloud)", + "title": "云智能体", + "description": "管理自主编码智能体(Jules、Devin、Codex Cloud)", "loading": "正在加载任务...", - "aboutTitle": "关于云代理", - "aboutDescription": "云代理是远程人工智能编码助手,可以自主执行任务。它们的工作方式与本地 CLI 代理不同 - 您可以通过 OmniRoute 的 API 与它们交互。", + "aboutTitle": "关于云智能体", + "aboutDescription": "云智能体是远程人工智能编码助手,可以自主执行任务。它们的工作方式与本地CLI智能体不同 - 您可以通过OmniRoute的API与它们交互。", "howItWorksTitle": "工作原理:", - "howItWorksDesc": "创建任务 → 代理分析并提出计划 → 您批准 → 代理执行 → 结果返回", + "howItWorksDesc": "创建任务 → 智能体分析并提出计划 → 您批准 → 智能体执行 → 结果返回", "newTaskTitle": "创建新任务", - "newTaskDescription": "使用云代理启动新任务", + "newTaskDescription": "使用云智能体启动新任务", "selectAgent": "选择代理", "taskDescription": "任务描述", "taskDescriptionPlaceholder": "描述您希望代理做什么...", @@ -9443,21 +9443,21 @@ "settingsTab": "设置", "agentsEnabled": "已启用", "agentsDisabled": "已禁用", - "filterAllProviders": "所有提供者", + "filterAllProviders": "所有供应商", "filterAll": "全部", "autoRefreshing": "自动刷新中", - "viewPR": "查看 Pull Request", + "viewPR": "查看Pull Request", "connected": "已连接", "notConnected": "未连接", "configure": "配置", - "settingsTitle": "云代理设置", - "settingsDesc": "为云代理配置本地偏好。", - "settingEnableAgents": "启用云代理", - "settingEnableAgentsDesc": "允许 OmniRoute 编排自主编码代理。", - "settingAutoPR": "自动创建 PR", - "settingAutoPRDesc": "任务完成后自动创建包含变更的 Pull Request。", + "settingsTitle": "云智能体设置", + "settingsDesc": "为云智能体配置本地偏好。", + "settingEnableAgents": "启用云智能体", + "settingEnableAgentsDesc": "允许OmniRoute编排自主编码智能体。", + "settingAutoPR": "自动创建PR", + "settingAutoPRDesc": "任务完成后自动创建包含变更的Pull Request。", "settingRequireApproval": "需要方案审批", - "settingRequireApprovalDesc": "代理执行所提方案前始终等待手动批准。", + "settingRequireApprovalDesc": "智能体执行所提方案前始终等待手动批准。", "untitledTask": "无标题任务", "created": "已创建", "conversation": "对话", @@ -9466,7 +9466,7 @@ "planReady": "计划已准备好等待批准", "approvePlan": "批准计划", "rejectPlan": "拒绝并取消", - "sendMessagePlaceholder": "给代理发消息...", + "sendMessagePlaceholder": "给智能体发消息...", "cancel": "取消", "delete": "删除", "selectTaskPrompt": "选择任务查看详细信息", @@ -9480,10 +9480,10 @@ "repositoryUrl": "存储库网址", "branch": "分公司", "agentDescriptions": { - "jules": "Google 的自主编码智能体", - "devin": "Cognition 的 AI 软件工程师", - "codexCloud": "OpenAI 的云端编码智能体", - "cursorCloud": "Cursor 的后台/云端智能体 (官方 API 密钥)" + "jules": "Google的自主编码智能体", + "devin": "Cognition的AI软件工程师", + "codexCloud": "OpenAI的云端编码智能体", + "cursorCloud": "Cursor的后台/云端智能体 (官方API Key)" }, "activityTypes": { "plan": "计划", @@ -9512,11 +9512,11 @@ "tool-calling": "用于工具/函数调用的模板", "multi-turn": "用于多轮对话的模板", "vision": "具有图像输入的多模态模板", - "schema-coercion": "结构化输出/JSON 模式实施" + "schema-coercion": "结构化输出/JSON模式实施" }, "templatePayloads": { "simpleChat": { - "system": "你是一名乐于助人的 AI 助手。", + "system": "你是一名乐于助人的AI助手。", "userGreeting": "你好!今天我可以帮你做些什么?" }, "streaming": { @@ -9543,16 +9543,16 @@ }, "cache": { "title": "缓存管理", - "description": "监控提供者侧 Prompt Cache 的效率,以及本地 Semantic Cache 的响应复用情况。", + "description": "监控供应商侧Prompt Cache的效率,以及本地Semantic Cache的响应复用情况。", "refresh": "刷新", "clearAll": "清空语义缓存", "memoryEntries": "内存条目", - "memoryEntriesSub": "内存 LRU", + "memoryEntriesSub": "内存LRU", "dbEntries": "数据库条目", "dbEntriesSub": "已持久化(SQLite)", "cacheHits": "缓存命中数", "cacheHitsSub": "共 {total} 次", - "tokensSaved": "节省的 Tokens", + "tokensSaved": "节省的Tokens", "tokensSavedSub": "根据命中次数估算", "hitRate": "命中率", "performance": "缓存性能", @@ -9561,10 +9561,10 @@ "misses": "未命中次数", "total": "总计", "behavior": "缓存行为", - "behaviorDeterministic": "仅缓存 temperature=0 的非流式请求。", - "behaviorBypass": "通过请求头 {header} 绕过缓存。", - "behaviorTwoTier": "双层存储:内存 LRU(快速)+ SQLite(重启后持久化)。", - "behaviorTtl": "默认 TTL:30 分钟。可通过 {envVar} 配置。", + "behaviorDeterministic": "仅缓存temperature=0 的非流式请求。", + "behaviorBypass": "通过请求标头 {header} 绕过缓存。", + "behaviorTwoTier": "双层存储:内存LRU(快速)+ SQLite(重启后持久化)。", + "behaviorTtl": "默认TTL:30 分钟。可通过 {envVar} 配置。", "idempotency": "幂等层", "activeDedupKeys": "活跃去重键", "dedupWindow": "去重窗口", @@ -9573,23 +9573,23 @@ "unavailable": "缓存不可用", "unavailableDesc": "无法获取缓存统计信息。请确保服务器正在运行。", "loadingCacheAria": "正在加载缓存", - "promptCache": "Prompt 缓存(提供者侧)", + "promptCache": "Prompt缓存(供应商侧)", "semanticCache": "语义缓存", - "promptCacheSectionDesc": "基于 usage history 展示提供者侧 prompt cache 的活跃度,让你区分哪些请求真的启用了 cache control,以及实际复用了多少输入。", - "promptTrendDesc": "按小时展示最近 24 小时的请求量、缓存覆盖率,以及 cache read token 的变化。", + "promptCacheSectionDesc": "基于usage history展示供应商侧prompt cache的活跃度,让你区分哪些请求真的启用了cache control,以及实际复用了多少输入。", + "promptTrendDesc": "按小时展示最近 24 小时的请求量、缓存覆盖率,以及cache read token的变化。", "cachedRequests": "缓存请求数", "cachedRequests24h": "24 小时缓存请求数", "cacheHitRate": "缓存命中率", "cacheRate": "缓存率", "cacheRateDesc": "占总请求数", - "cachedTokens": "缓存读取 Token", - "cacheCreationTokens": "缓存写入 Token", - "cacheMetrics": "Prompt 缓存指标", + "cachedTokens": "缓存读取Token", + "cacheCreationTokens": "缓存写入Token", + "cacheMetrics": "Prompt缓存指标", "withCacheControl": "含缓存控制", "cachedTokensRead": "从缓存读取", "cacheCreationWrite": "写入缓存", "cacheReuseRatio": "缓存复用率", - "cacheReuseRatioDesc": "缓存读取 token / 输入 token 总量", + "cacheReuseRatioDesc": "缓存读取token / 输入token总量", "estCostSaved": "预估节省费用", "lastUpdated": "上次更新", "hoursTracked": "个小时", @@ -9603,37 +9603,37 @@ "writeShort": "写入", "resetting": "正在重置...", "resetMetrics": "重置指标", - "byProvider": "按提供者分类", - "providerCacheRateDesc": "每个提供者都会直接展示总输入 token、cache read token 和 cache write token,方便你对照原始数据判断比率是否可靠。", - "provider": "提供者", + "byProvider": "按供应商分类", + "providerCacheRateDesc": "每个供应商都会直接展示总输入token、cache read token和cache write token,方便你对照原始数据判断比率是否可靠。", + "provider": "供应商", "requests": "请求数", - "inputTokens": "输入 Tokens 总计", + "inputTokens": "输入Tokens总计", "cachedTokensCol": "缓存读取", "cacheCreation": "缓存写入", "trend24h": "缓存趋势(24 小时)", "peakCached": "峰值缓存量", "cached": "已缓存", "overview": "概览", - "tableProvider": "提供者", + "tableProvider": "供应商", "tableModel": "模型", "performanceTitle": "性能", - "semanticCacheSectionDesc": "OmniRoute 自己维护的确定性响应缓存。开启后,重复的非流式、temperature=0 请求可以直接在本地命中,不再访问上游 provider。", - "semanticCacheDisabledDesc": "Semantic Cache 当前已禁用。重新在设置中开启之前,OmniRoute 不会再做本地响应复用。", - "semanticEntriesDesc": "这里展示的是保存在 SQLite 里的 semantic cache 记录,不包含 provider-side prompt cache 的活动。", + "semanticCacheSectionDesc": "OmniRoute自己维护的确定性响应缓存。开启后,重复的非流式、temperature=0 请求可以直接在本地命中,不再访问上游provider。", + "semanticCacheDisabledDesc": "Semantic Cache当前已禁用。重新在设置中开启之前,OmniRoute不会再做本地响应复用。", + "semanticEntriesDesc": "这里展示的是保存在SQLite里的semantic cache记录,不包含provider-side prompt cache的活动。", "searchEntries": "搜索条目...", "search": "搜索", "loading": "加载中...", "entriesLoadError": "加载语义缓存条目失败。", "noEntries": "未找到缓存条目", - "noPromptCacheData": "暂时还没有记录到提供者侧 prompt cache 活动。", - "noTrendData": "最近 24 小时还没有记录到 prompt cache 活动。", + "noPromptCacheData": "暂时还没有记录到供应商侧prompt cache活动。", + "noTrendData": "最近 24 小时还没有记录到prompt cache活动。", "signature": "签名", "model": "模型", "created": "创建时间", "expires": "到期时间", "actions": "操作", "deduplicatedRequests": "去重请求数", - "savedCalls": "节省的 API 调用次数", + "savedCalls": "节省的API调用次数", "totalProcessed": "已处理请求总数", "disabled": "已禁用", "totalRequests": "总请求数", @@ -9644,18 +9644,18 @@ "reasoningReplays": "总回放次数", "reasoningCharsCached": "已缓存字符数", "reasoningMisses": "缓存未命中", - "reasoningByProvider": "按提供者", + "reasoningByProvider": "按供应商", "reasoningByModel": "按模型", "reasoningRecentEntries": "最近条目", - "reasoningToolCallId": "工具调用 ID", + "reasoningToolCallId": "工具调用ID", "reasoningChars": "字符数", "reasoningAge": "时间", "reasoningView": "查看", "reasoningDetail": "推理内容", "reasoningBehavior": "行为", - "reasoningBehaviorCapture": "从流式响应中捕获 reasoning_content", + "reasoningBehaviorCapture": "从流式响应中捕获reasoning_content", "reasoningBehaviorReplay": "当客户端省略时,在下一轮重新注入", - "reasoningBehaviorFallback": "内存优先,并使用 SQLite 作为崩溃恢复后备", + "reasoningBehaviorFallback": "内存优先,并使用SQLite作为崩溃恢复后备", "reasoningBehaviorTtl": "TTL:2 小时 | 最大条目:2,000(内存)", "reasoningBehaviorModels": "支持:DeepSeek、Kimi、Qwen-Thinking、GLM", "reasoningClearAll": "清空推理缓存", @@ -9682,7 +9682,7 @@ "levelKey": "密钥", "levelDirect": "直接(无代理)", "titleGlobal": "全局代理配置", - "titleLevel": "{level} 代理 — {label}", + "titleLevel": "{level} 代理— {label}", "loading": "正在加载代理配置...", "inheritingFrom": "继承自", "source": "来源", @@ -9691,7 +9691,7 @@ "selectSavedProxyPlaceholder": "选择已保存的代理...", "proxyType": "代理类型", "host": "主机", - "hostPlaceholder": "1.2.3.4 或 proxy.example.com", + "hostPlaceholder": "1.2.3.4 或proxy.example.com", "port": "端口", "authOptional": "认证(可选)", "username": "用户名", @@ -9711,16 +9711,16 @@ "errorClearSavedProxy": "清除已保存代理失败", "errorSaveProxy": "保存代理配置失败", "errorClearProxy": "清除代理配置失败", - "errorSocks5Hidden": "SOCKS5 已配置但已隐藏,因为 NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false。" + "errorSocks5Hidden": "SOCKS5 已配置但已隐藏,因为NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false。" }, "oauthModal": { "title": "连接 {providerName}", "waiting": "等待授权", "completeAuthInPopup": "在弹出窗口中完成授权。", - "popupClosedHint": "如果弹出窗口关闭而没有重定向回来(例如 Qoder),此对话框将自动切换到手动 URL 输入模式。", - "popupBlocked": "弹出窗口被阻止?手动输入 URL", - "deviceCodeVisitUrl": "访问下面的 URL 并输入代码:", - "deviceCodeVerificationUrl": "验证 URL", + "popupClosedHint": "如果弹出窗口关闭而没有重定向回来(例如Qoder),此对话框将自动切换到手动URL输入模式。", + "popupBlocked": "弹出窗口已阻止?手动输入URL", + "deviceCodeVisitUrl": "访问下面的URL并输入代码:", + "deviceCodeVerificationUrl": "验证URL", "deviceCodeYourCode": "您的代码", "deviceCodeWaiting": "等待授权...", "googleLoopbackTitle": "__MISSING__:Google sign-in can't complete from this address", @@ -9730,7 +9730,7 @@ "googleLoopbackTunnelLabel": "__MISSING__:Or forward the dashboard port over SSH and reload OmniRoute through the tunnel:", "googleLoopbackTunnelNote": "__MISSING__:Replace {userPlaceholder} with your SSH username, keep the terminal open, then open {localUrl} and connect again from there.", "googleLoopbackHeadlessAlt": "__MISSING__:For fully headless use with no local callback at all, configure your own Google OAuth credentials plus a public base URL.", - "remoteAccessInfo": "远程访问:由于您是远程访问 OmniRoute,授权后您会看到一个错误页面(localhost 未找到)。这是正常的 — 只需从浏览器地址栏复制完整 URL 并粘贴到下方。", + "remoteAccessInfo": "远程访问:由于您是远程访问OmniRoute,授权后您会看到一个错误页面(localhost未找到)。这是正常的—只需从浏览器地址栏复制完整URL并粘贴到下方。", "loopbackMismatchTitle": "__MISSING__:Sign-in can't complete from this address", "loopbackMismatchWhatHappened": "__MISSING__:What's happening", "loopbackMismatchExplanation": "__MISSING__:After you approve the login, {providerName} always sends the browser back to {redirectUri}. That address points at the computer running this browser, not at the OmniRoute server — so the authorization code never reaches OmniRoute and the provider fails the sign-in without showing an error.", @@ -9740,10 +9740,10 @@ "loopbackMismatchStep2": "__MISSING__:In this browser, reopen OmniRoute through the tunnel:", "loopbackMismatchStep3": "__MISSING__:Then connect {providerName} again from the new tab. The callback now reaches the server and the login completes normally.", "loopbackMismatchAlternative": "__MISSING__:No SSH access? If this provider offers a token import tab, connect with a token instead — that path doesn't use a loopback callback.", - "step1OpenUrl": "步骤 1:在浏览器中打开此 URL", + "step1OpenUrl": "步骤 1:在浏览器中打开此URL", "copy": "复制", - "step2PasteCallback": "步骤 2:在此处粘贴回调 URL 或授权代码", - "step2Hint": "授权后,粘贴完整的回调 URL。对于 Claude Code 和 Cline,您也可以直接粘贴身份验证代码,例如 code#state。", + "step2PasteCallback": "步骤 2:在此处粘贴回调URL或授权代码", + "step2Hint": "授权后,粘贴完整的回调URL。对于Claude Code和Cline,您也可以直接粘贴身份验证代码,例如 code#state。", "connect": "连接", "cancel": "取消", "success": "连接成功!", @@ -9753,17 +9753,17 @@ "tryAgain": "重试" }, "cursorAuthModal": { - "title": "连接 Cursor IDE", + "title": "连接Cursor IDE", "autoDetecting": "自动检测令牌中...", - "readingFromCursor": "正在从 Cursor IDE 或 cursor-agent 读取", - "tokensAutoDetected": "已成功从 Cursor IDE 自动检测到令牌!", - "cursorNotDetected": "未检测到 Cursor IDE。请手动粘贴您的令牌。", + "readingFromCursor": "正在从Cursor IDE或cursor-agent读取", + "tokensAutoDetected": "已成功从Cursor IDE自动检测到令牌!", + "cursorNotDetected": "未检测到Cursor IDE。请手动粘贴您的令牌。", "accessToken": "访问令牌", "required": "*", "accessTokenPlaceholder": "访问令牌将自动填充...", - "machineId": "机器 ID", + "machineId": "机器ID", "optional": "(可选)", - "machineIdPlaceholder": "机器 ID 将自动填充...", + "machineIdPlaceholder": "机器ID将自动填充...", "importing": "正在导入...", "importToken": "导入令牌", "cancel": "取消", @@ -9776,7 +9776,7 @@ "title": "定价配置", "loading": "正在加载定价数据...", "pricingRatesFormat": "定价费率格式", - "ratesDescription": "所有费率均为 每百万令牌美元($/1M 令牌)。示例:输入费率为 2.50 表示每 1,000,000 个输入令牌收费 2.50 美元。", + "ratesDescription": "所有费率均为 每百万令牌美元($/1M令牌)。示例:输入费率为 2.50 表示每 1,000,000 个输入令牌收费 2.50 美元。", "model": "模型", "input": "输入", "output": "输出", @@ -9815,11 +9815,11 @@ "modalEditTitle": "编辑代理", "labelName": "名称", "labelType": "类型", - "labelFamily": "IP 协议族", + "labelFamily": "IP协议族", "familyAuto": "自动 (双栈)", - "familyIpv4": "仅 IPv4", - "familyIpv6": "仅 IPv6", - "familyHint": "出口地址族。自动保留双栈;IPv4/IPv6 将此代理固定到该地址族(防止在仅 IPv6 代理下发生 v4 泄漏)。", + "familyIpv4": "仅IPv4", + "familyIpv6": "仅IPv6", + "familyHint": "出口地址族。自动保留双栈;IPv4/IPv6 将此代理固定到该地址族(防止在仅IPv6 代理下发生v4 泄漏)。", "labelHost": "主机", "labelPort": "端口", "labelUsername": "用户名", @@ -9837,20 +9837,20 @@ "bulkLabelScope": "范围", "bulkLabelProxy": "代理", "bulkClearAssignment": "(清除分配)", - "bulkLabelScopeIds": "范围 ID(逗号或换行符分隔)", + "bulkLabelScopeIds": "范围ID(逗号或换行符分隔)", "bulkScopeIdsPlaceholder": "provider-openai,provider-anthropic", "bulkApply": "应用", "labelScope": "作用域", "labelProxy": "代理", "scopeGlobal": "全局", - "scopeProvider": "按提供者", + "scopeProvider": "按供应商", "scopeAccount": "按账号", "scopeCombo": "按组合", - "bulkImportErrorMissingName": "缺少 NAME", - "bulkImportErrorMissingHost": "缺少 HOST", - "bulkImportErrorInvalidPort": "PORT 无效(必须为 1-65535)", - "bulkImportErrorInvalidType": "TYPE 无效(使用 http、https 或 socks5)", - "bulkImportErrorInvalidStatus": "STATUS 无效(使用 active 或 inactive)", + "bulkImportErrorMissingName": "缺少NAME", + "bulkImportErrorMissingHost": "缺少HOST", + "bulkImportErrorInvalidPort": "PORT无效(必须为 1-65535)", + "bulkImportErrorInvalidType": "TYPE无效(使用http、https或socks5)", + "bulkImportErrorInvalidStatus": "STATUS无效(使用active或inactive)", "errorLoadFailed": "加载代理注册表失败", "errorNameHostRequired": "名称和主机为必填项", "errorSaveFailed": "保存代理失败", @@ -9870,14 +9870,14 @@ "testFailure": "✗ {error}", "repair": "修复", "relayAuthMissing": "缺少身份验证", - "relayRepairTooltip": "就地恢复中继认证。如果令牌无法恢复(例如在 STORAGE_ENCRYPTION_KEY 轮换之后),请重新部署中继。", - "relayRepairRedeployRequired": "中继认证无法恢复 — 请重新部署中继以写入新令牌。", + "relayRepairTooltip": "就地恢复中继认证。如果令牌无法恢复(例如在STORAGE_ENCRYPTION_KEY轮换之后),请重新部署中继。", + "relayRepairRedeployRequired": "中继认证无法恢复—请重新部署中继以写入新令牌。", "relayRepairFailed": "中继修复失败", "relayRepairError": "修复失败", "relayProbeSummary": "中继探测:{alive}/{tested} 存活", "bulkImport": "批量导入", "bulkImportTitle": "批量导入代理", - "bulkImportDescription": "使用管道符分隔格式粘贴代理配置。每行一个代理。已有代理(相同 host + port)将被更新。", + "bulkImportDescription": "使用管道符分隔格式粘贴代理配置。每行一个代理。已有代理(相同host + port)将被更新。", "bulkImportParse": "解析", "bulkImportImport": "导入 {count} 个代理", "bulkImportImporting": "正在导入...", @@ -9900,10 +9900,10 @@ "close": "关闭", "managePool": "管理池", "poolTitle": "代理池与轮换", - "poolDescription": "将多个代理附加到一个作用域,并在它们之间轮换出口 IP。仅包含单个代理的作用域的行为与普通分配完全相同。", - "poolScopeIdLabel": "作用域 ID", - "poolScopeIdPlaceholder": "提供者 ID / 连接 ID / 组合 ID", - "poolScopeIdRequired": "提供者、账户或组合作用域需要作用域 ID。", + "poolDescription": "将多个代理附加到一个作用域,并在它们之间轮换出口IP。仅包含单个代理的作用域的行为与普通分配完全相同。", + "poolScopeIdLabel": "作用域ID", + "poolScopeIdPlaceholder": "供应商ID / 连接ID / 组合ID", + "poolScopeIdRequired": "供应商、账户或组合作用域需要作用域ID。", "poolLoad": "加载池", "poolLoadFailed": "加载代理池失败", "poolStrategyLabel": "轮换策略", @@ -9925,9 +9925,9 @@ }, "playground": { "title": "模型演练场", - "description": "直接从仪表板测试任何模型。选择提供者、模型和端点类型,然后发送请求以查看原始响应。", + "description": "直接从看板测试任何模型。选择供应商、模型和端点类型,然后发送请求以查看原始响应。", "endpoint": "端点", - "provider": "提供者", + "provider": "供应商", "model": "模型", "accountKey": "账户 / 密钥", "autoAccounts": "自动({count} 个账户)", @@ -9947,7 +9947,7 @@ "resetToDefault": "重置为默认", "downloadAudio": "下载音频", "copyText": "复制文本", - "transcriptionHint": "转录使用 multipart/form-data。上传上面的音频文件 — 下面的 JSON 控制额外参数(模型、语言)。", + "transcriptionHint": "转录使用multipart/form-data。上传上面的音频文件—下面的JSON控制额外参数(模型、语言)。", "imagesGenerated": "生成了 {count} 张图片", "generatedImage": "生成图片 {index}", "save": "保存", @@ -9968,7 +9968,7 @@ }, "conversationalChat": "对话式聊天", "clearChat": "清除聊天内容", - "typeMessagePlaceholder": "输入消息...(Shift+Enter 换行)", + "typeMessagePlaceholder": "输入消息...(Shift+Enter换行)", "tabChat": "聊天", "tabCompare": "比较", "tabApi": "API", @@ -9976,7 +9976,7 @@ "configPane": "配置", "systemPrompt": "系统提示", "systemPromptPlaceholder": "你是一个乐于助人的助手。", - "modelPlaceholder": "例如 openai/gpt-4o", + "modelPlaceholder": "例如openai/gpt-4o", "endpointLabel": "端点", "parametersLabel": "参数", "collapseConfig": "折叠配置面板", @@ -10001,11 +10001,11 @@ "failedToSavePreset": "保存预设失败", "improvePrompt": "优化提示", "improvingPrompt": "优化中…", - "improvePromptTitle": "使用 AI 优化提示", + "improvePromptTitle": "使用AI优化提示", "setModelFirst": "请先设置模型", "setModelInConfigFirst": "请先在“配置”面板中设置模型。", "improvePromptFailed": "优化提示词失败。", - "improvePromptAria": "使用 AI 优化提示词", + "improvePromptAria": "使用AI优化提示词", "confirmImprovePrompt": "确认优化提示词", "improvePromptDescription": "这会将您当前的系统提示词发送给 以生成优化版本。", "improveQuotaWarning": "这将消耗配置中模型配额的用量。", @@ -10013,12 +10013,12 @@ "exportCode": "导出代码", "exportCodeTitle": "导出代码", "exportShort": "导出", - "noStateToExport": "没有可导出的 Playground 状态。", + "noStateToExport": "没有可导出的Playground状态。", "closeExportModal": "关闭导出模态框", "close": "关闭", - "exportRealKeyWarning": "安全警告:导出被阻止 — 输出中检测到真实的 API 密钥。请重置您的 API 密钥并重试。", + "exportRealKeyWarning": "安全警告:导出已阻止—输出中检测到真实的API Key。请重置您的API Key并重试。", "placeholderHintPrefix": "替换", - "placeholderHintSuffix": "使用您的实际 API 密钥,或将其设置为环境变量。", + "placeholderHintSuffix": "使用您的实际API Key,或将其设置为环境变量。", "copyLangCode": "复制 {language} 代码", "loadingPresets": "加载中…", "loadPresetPlaceholder": "加载预设…", @@ -10050,9 +10050,9 @@ "tokensLabel": "令牌", "costLabel": "成本", "costEstimated": "(估算)", - "ttftTitle": "首个 Token 时间 (客户端估算)", - "tpsTitle": "每秒 Token 数 (客户端估算)", - "tokenCountsTitle": "提示 Token ↑ / 补全 Token ↓", + "ttftTitle": "首个Token时间 (客户端估算)", + "tpsTitle": "每秒Token数 (客户端估算)", + "tokenCountsTitle": "提示Token ↑ / 补全Token ↓", "estimatedCostTitle": "预估成本 (不保证完全准确)", "toolsLabel": "工具", "toolsCount": "工具 ({count})", @@ -10063,19 +10063,19 @@ "toolNameRequiredPlaceholder": "函数名称 *", "toolDescPlaceholder": "描述(可选)", "toolParamsLabel": "参数 (JSON Schema)", - "toolParamsJsonSchema": "参数的 JSON Schema", - "toolParamsInvalid": "参数必须为有效 JSON", + "toolParamsJsonSchema": "参数的JSON Schema", + "toolParamsInvalid": "参数必须为有效JSON", "structuredOutputLabel": "结构化输出", - "enableJsonMode": "启用 JSON 模式", - "disableJsonMode": "禁用 JSON 模式", - "invalidJson": "无效 JSON", - "jsonMode": "JSON 模式", - "jsonModeDescription": "强制 response_format: json_schema", - "schemaName": "Schema 名称", + "enableJsonMode": "启用JSON模式", + "disableJsonMode": "禁用JSON模式", + "invalidJson": "无效JSON", + "jsonMode": "JSON模式", + "jsonModeDescription": "强制response_format: json_schema", + "schemaName": "Schema名称", "jsonSchema": "JSON Schema", - "jsonSchemaEditor": "JSON Schema 编辑器", - "schemaValidated": "Schema 已验证", - "validateSchema": "验证 Schema", + "jsonSchemaEditor": "JSON Schema编辑器", + "schemaValidated": "Schema已验证", + "validateSchema": "验证Schema", "seed": "种子", "stopSequences": "停止序列", "stopSequencesPlaceholder": "例如 \"\\n\\n\" 或 \"END\"", @@ -10085,14 +10085,14 @@ "networkError": "网络错误", "regenerateLastResponse": "重新生成上一次响应", "regenerate": "重新生成", - "startConversation": "开始对话 — 在下方输入消息", + "startConversation": "开始对话—在下方输入消息", "role": { "system": "系统", "user": "用户", "assistant": "助手" }, "generating": "正在生成…", - "typeMessageWithShortcut": "输入消息... (Enter 发送,Shift+Enter 换行)", + "typeMessageWithShortcut": "输入消息... (Enter发送,Shift+Enter换行)", "stop": "停止", "noResponseBody": "无响应体", "comparePromptPlaceholder": "在此处输入您的提示词…", @@ -10115,23 +10115,23 @@ "step1Title": "你想测试什么?", "step1Subtitle": "选择您想在本次会议中探索的功能。", "step2Title": "配置", - "step2Subtitle": "设置请求中将使用的工具或 JSON 架构。", + "step2Subtitle": "设置请求中将使用的工具或JSON架构。", "step3Title": "运行", "modeToolsTitle": "工具", - "modeToolsDesc": "测试函数调用 — 定义工具并查看模型如何调用它们。", + "modeToolsDesc": "测试函数调用—定义工具并查看模型如何调用它们。", "modeJsonTitle": "JSON", - "modeJsonDesc": "测试结构化输出 — 将响应限制为 JSON 架构。", + "modeJsonDesc": "测试结构化输出—将响应限制为JSON架构。", "modeBothTitle": "工具 + JSON", "modeBothDesc": "在单个请求中结合函数调用和结构化输出。", "backButton": "返回", "nextButton": "下一步", "runButton": "运行", - "promptPlaceholder": "输入您的消息…(按 Enter 发送,Shift+Enter 换行)" + "promptPlaceholder": "输入您的消息…(按Enter发送,Shift+Enter换行)" } }, "miniPlayground": { "endpoint": "端点", - "apiKey": "API 密钥", + "apiKey": "API Key", "model": "模型", "voice": "声音", "speed": "语速", @@ -10139,8 +10139,8 @@ "url": "URL", "format": "格式", "depth": "深度", - "copyCurl": "复制 cURL", - "copied": "已复制!", + "copyCurl": "复制cURL", + "copied": "已复制!", "run": "运行", "running": "运行中...", "response": "响应", @@ -10165,33 +10165,33 @@ "selectAudioFirst": "请先选择一个音频文件。", "speechToText": "语音转文字", "chooseFile": "选择文件", - "audioFormats25Mb": "MP3、WAV、M4A、OGG 或 FLAC · 最大 25 MB", + "audioFormats25Mb": "MP3、WAV、M4A、OGG或FLAC·最大 25 MB", "musicSample": "一首带有温暖钢琴和柔和弦乐的平静氛围音乐", - "noAudioUrl": "响应中未包含音频 URL:{response}", + "noAudioUrl": "响应中未包含音频URL:{response}", "music": "音乐", - "embeddingSample": "OmniRoute 在多个服务商之间路由 AI 请求。", + "embeddingSample": "OmniRoute在多个服务商之间路由AI请求。", "embedding": "嵌入", "imageSample": "日落时分充满未来感的城市,电影级光效", "image": "图像", - "ttsSample": "来自 OmniRoute 的问候。这是一次文字转语音测试。", + "ttsSample": "来自OmniRoute的问候。这是一次文字转语音测试。", "textToSpeech": "文字转语音", "videoSample": "一架纸飞机飞越充满未来感的城市", "video": "视频", "webFetch": "网页获取", - "webSearchSample": "什么是 OmniRoute?", + "webSearchSample": "什么是OmniRoute?", "webSearch": "网页搜索", - "documentUrl": "文档 URL", + "documentUrl": "文档URL", "browserAudioUnsupported": "您的浏览器不支持音频。", "browserVideoUnsupported": "您的浏览器不支持视频。", "searchResultFallback": "结果 {number}", - "noKeysFound": "未找到 API 密钥。请到 Keys 区域添加一个。", + "noKeysFound": "未找到API Key。请到Keys区域添加一个。", "exampleLabel": "示例", "latency": "{ms} 毫秒", - "statsLine": "{ms}ms · {tokensIn} 输入 / {tokensOut} 输出 tokens", + "statsLine": "{ms}ms· {tokensIn} 输入 / {tokensOut} 输出tokens", "defaultKey": "(默认)", "clear": "清除", "emptyConversation": "发送消息以开始对话", - "sendHint": "Shift+Enter 换行 · Enter 发送", + "sendHint": "Shift+Enter换行·Enter发送", "you": "您", "assistant": "助手", "errorLabel": "错误", @@ -10206,11 +10206,11 @@ "updatingPipelineLogs": "正在更新管道日志...", "updatePipelineFailed": "更新流水线日志失败", "capturePipeline": "为新请求捕获流水线载荷", - "searchPlaceholder": "搜索模型、提供者、账户、API密钥、组合...", - "allProviders": "所有提供者", + "searchPlaceholder": "搜索模型、供应商、账户、API Key、组合...", + "allProviders": "所有供应商", "allModels": "所有模型", "allAccounts": "所有账户", - "allApiKeys": "所有API密钥", + "allApiKeys": "所有API Key", "total": "总计", "ok": "成功", "err": "错误", @@ -10225,8 +10225,8 @@ "sortDurationAsc": "时长 ↑", "sortStatusDesc": "状态 ↓", "sortStatusAsc": "状态 ↑", - "sortModelAsc": "模型 A-Z", - "sortModelDesc": "模型 Z-A", + "sortModelAsc": "模型A-Z", + "sortModelDesc": "模型Z-A", "sortLogs": "日志排序", "refresh": "刷新", "columnsLabel": "列", @@ -10234,9 +10234,9 @@ "cacheUp": "在线", "semantic": "Semantic Cache", "upstream": "上游", - "semanticCacheHit": "语义缓存命中(由 OmniRoute 提供)", - "upstreamResponse": "上游提供者响应", - "noApiKey": "无 API key", + "semanticCacheHit": "语义缓存命中(由OmniRoute提供)", + "upstreamResponse": "上游供应商响应", + "noApiKey": "无API Key", "requestedRoutedTitle": "请求 {requested},路由为 {routed}", "statusFilters": { "all": "全部", @@ -10249,10 +10249,10 @@ "cacheSource": "缓存来源", "model": "模型", "requested": "请求", - "provider": "提供者", + "provider": "供应商", "protocol": "请求协议", "account": "账户", - "apiKey": "API密钥", + "apiKey": "API Key", "combo": "组合", "tokens": "Tokens", "compressed": "压缩", @@ -10277,17 +10277,17 @@ "colTls": "TLS", "colType": "类型", "colLevel": "级别", - "colProvider": "提供者", + "colProvider": "供应商", "colTarget": "目标", "colLatency": "延迟", - "colClientIp": "客户端 IP", + "colClientIp": "客户端IP", "colTime": "时间", "recording": "记录中", "paused": "已暂停", - "searchPlaceholder": "搜索主机、提供者、目标或 IP...", + "searchPlaceholder": "搜索主机、供应商、目标或IP...", "allTypes": "全部类型", "allLevels": "全部级别", - "allProviders": "全部 Provider", + "allProviders": "全部供应商", "total": "总计", "ok": "正常", "err": "错误", @@ -10300,9 +10300,9 @@ "refresh": "刷新", "columns": "列", "loadingProxyLogs": "正在加载代理日志...", - "noProxyLogs": "尚无代理日志。配置代理并发起 API 调用后会显示在这里。", + "noProxyLogs": "尚无代理日志。配置代理并发起API调用后会显示在这里。", "noMatchingLogs": "没有日志匹配当前筛选条件。", - "tlsFingerprint": "Chrome 124 TLS 指纹", + "tlsFingerprint": "Chrome 124 TLS指纹", "colPublicIp": "公共IP" }, "endpointOptions": { @@ -10327,7 +10327,7 @@ }, "runtime": { "title": "运行时", - "description": "实时可观测性 — 3 层弹性 + 会话 + 配额告警", + "description": "实时可观测性— 3 层弹性 + 会话 + 配额告警", "pause": "暂停", "resume": "恢复", "refreshNow": "立即刷新", @@ -10343,10 +10343,10 @@ "hintModelsBlocked": "模型已阻止", "resilienceTitle": "3 层弹性", "resilienceSubtitle": "反映记录的弹性模型", - "providersHealthy": "{percent}% 提供者健康", + "providersHealthy": "{percent}% 供应商健康", "layer": "第 {n} 层", - "layer1Title": "提供者断路器", - "layer1Desc": "阻止到上游级失败的提供者的流量", + "layer1Title": "供应商断路器", + "layer1Desc": "阻止到上游级失败的供应商的流量", "layer2Title": "连接冷却", "layer2Desc": "跳过一个坏账户/密钥;其他连接继续服务", "layer3Title": "模型锁定", @@ -10380,7 +10380,7 @@ "tblIdle": "空闲", "tblReqs": "请求数", "tblBoundTo": "绑定到", - "topApiKeys": "热门 API 密钥", + "topApiKeys": "热门API Key", "quotaMonitorsTitle": "配额监视器", "quotaMonitorsSubtitle": "每个账户窗口的实时配额状态", "openQuota": "开放配额", @@ -10393,28 +10393,28 @@ "quotaShare": { "weightPercent": "权重 %", "title": "配额共享", - "description": "通过百分比限制跨 API 密钥共享提供者配额", + "description": "通过百分比限制跨API Key共享供应商配额", "newPool": "新建池", - "betaTitle": "Beta — UI preview.", - "betaDescription": "配置保存在 localStorage 中(尚未持久化到服务器)。每次请求的上限执行将在未来更新中实现。", + "betaTitle": "Beta—UI preview.", + "betaDescription": "配置保存在localStorage中(尚未持久化到服务器)。每次请求的上限执行将在未来更新中实现。", "kpiActivePools": "活跃池", "kpiKeysAllocated": "已分配密钥", "kpiAvgUnallocated": "平均未分配", - "kpiProvidersWithQuota": "有配额的提供者", + "kpiProvidersWithQuota": "有配额的供应商", "emptyTitle": "未配置池", - "emptyDescription": "创建池以分配 API 密钥,通过百分比分配共享提供者的配额窗口。", + "emptyDescription": "创建池以分配API Key,通过百分比分配共享供应商的配额窗口。", "loading": "加载中…", "removePool": "移除池", "removeConfirm": "移除此池?", "pool": "池", "used": "已使用", "allocationsCount": "分配({count})", - "allocatedFree": "已分配 {allocated}% · 空闲 {free}%", + "allocatedFree": "已分配 {allocated}% ·空闲 {free}%", "noAllocations": "尚未分配密钥", "capLabel": "上限 {value}", "notTrackedYet": "(尚未跟踪)", "policy": "策略", - "apiKeyColumn": "API 密钥", + "apiKeyColumn": "API Key", "weightColumn": "权重", "fairShareShort": "公平", "policyHard": "硬性", @@ -10425,9 +10425,9 @@ "policyBurstHint": "允许突发进入空闲池", "editAllocations": "编辑分配", "newPoolTitle": "新建配额池", - "providerConnection": "提供者连接(账户)", + "providerConnection": "供应商连接(账户)", "selectConnection": "选择连接…", - "noEligibleConnections": "没有带配额数据的连接。首先从 /dashboard/quota 刷新。", + "noEligibleConnections": "没有带配额数据的连接。首先从 /dashboard/quota刷新。", "quotaWindow": "配额窗口", "selectWindow": "选择窗口…", "alreadyUsedSuffix": "(已使用)", @@ -10442,35 +10442,35 @@ "addKey": "+ 添加密钥…", "equalSplit": "平均分配", "save": "保存分配", - "betaPreviewLabel": "Beta — UI 预览。", + "betaPreviewLabel": "Beta—UI预览。", "betaConfigSavedPrefix": "配置保存在", - "betaConfigSavedSuffix": "(尚未保留在服务器上)。每个请求上限的强制执行尚未连接到代理管道中。此屏幕可让您设计和可视化配额分配;真正的执行将在未来的迭代中通过数据库持久性和上游调用拦截来实现。", + "betaConfigSavedSuffix": "(尚未保留在服务器上)。每个请求上限的强制执行尚未连接到代理管道中。此屏幕可让您设计和可视化配额分配;真正的执行将在未来的迭代中通过数据库持久性和上游调用拦截实现。", "policyLabel": "政策:", "resetIn": "重置于", "quotaTotal": "总计", "kpiAvgUtilization": "平均利用率", "kpiBorrowingNow": "现在借款", "conceptTitle": "配额分成是如何工作的", - "conceptIntro": "配额共享通过节约型公平分享将供应商的配额分配给多个 API 密钥:每个密钥获得一个按比例分配的份额,但可以在不超过全球上限的情况下从自由余额中借用。", + "conceptIntro": "配额共享通过节约型公平分享将供应商的配额分配给多个API Key:每个密钥获得一个按比例分配的份额,但可以在不超过全球上限的情况下从自由余额中借用。", "conceptFairShare": "公平共享:每个键接收与其配置权重成比例的配额", "conceptBorrowing": "借用:密钥可以在不违反上限的情况下消耗他人的自由余额", "conceptGlobalCap": "硬性全球上限:供应商的绝对限制永远不会被超越", - "conceptWindows": "Windows: 5小时,按小时、按日、按周、按月 — 每个独立跟踪", + "conceptWindows": "Windows: 5小时,按小时、按日、按周、按月—每个独立跟踪", "conceptKeyHowTitle": "为配额启用密钥", - "conceptKeyHowDesc": "在 API 管理器中正常创建密钥 — 它会自动出现在向导的密钥步骤中。在那里勾选独占以使其仅限配额。没有单独的启用步骤。", + "conceptKeyHowDesc": "在API管理器中正常创建密钥—它会自动出现在向导的密钥步骤中。在那里勾选独占以使其仅限配额。没有单独的启用步骤。", "conceptExclusiveTitle": "“Exclusive” 的作用是什么", - "conceptExclusiveDesc": "独占密钥仅查看/使用池的 quotaShared-* 模型 — 其他所有模型在其 /v1/models 中被隐藏并被阻止。", + "conceptExclusiveDesc": "独占密钥仅查看/使用池的quotaShared-* 模型—其他所有模型在其 /v1/models中被隐藏并已阻止。", "burnRateTitle": "烧钱率", "burnRateExhaustsIn": "排气在", "dimensionResetIn": "重置于", "realConsumedColumn": "已消耗", "deficitColumn": "赤字", "borrowingIndicator": "借款", - "migratedFromLocalStorageNotice": "池成功从 localStorage 迁移。", + "migratedFromLocalStorageNotice": "池成功从localStorage迁移。", "policyCapAbsoluteLabel": "绝对上限", "policyCapAbsolutePlaceholder": "数字限制(可选)", "multiDimensionLabel": "多维", - "stackedBarTitle": "按 API 密钥切片", + "stackedBarTitle": "按API Key切片", "usedSuffix": "已使用 {percent}%", "wizardTitle": "新配额池", "editPoolTitle": "编辑池", @@ -10478,12 +10478,12 @@ "wizardStep1Label": "账户", "wizardStep2Label": "限制", "wizardStep3Label": "密钥", - "wizardStep1Title": "选择提供者连接", + "wizardStep1Title": "选择供应商连接", "wizardStep1Subtitle": "选择此池将共享配额的供应商帐户,设置名称和默认策略。", "wizardStep2Title": "配置配额维度", "wizardStep2Subtitle": "为所选连接定义配额计划维度(单位、窗口、限制)。保持不变以保持当前设置。", - "wizardStep3Title": "分配 API 密钥", - "wizardStep3Subtitle": "将 API 密钥分配给该池,设置权重 % 分配和可选上限。", + "wizardStep3Title": "分配API Key", + "wizardStep3Subtitle": "将API Key分配给该池,设置权重 % 分配和可选上限。", "wizardPoolNameLabel": "池名称", "wizardPoolNamePlaceholder": "我的配额池", "wizardNext": "下一个", @@ -10491,7 +10491,7 @@ "wizardCreatePool": "创建池", "wizardDimensionsEditedNotice": "已编辑的尺寸 - 在创建泳池时将作为手动覆盖保存。", "wizardExclusiveLabel": "独占配额", - "wizardExclusiveHint": "启用后,这些 API 密钥将仅允许使用此池的虚拟模型(在保存时应用 allowedQuotas 对账)。", + "wizardExclusiveHint": "启用后,这些API Key将仅允许使用此池的虚拟模型(在保存时应用allowedQuotas对账)。", "wizardPreviewLabel": "虚拟模型名称预览", "wizardConnectionsLabel": "供应商连接", "wizardPrimaryBadge": "主要", @@ -10511,20 +10511,20 @@ "wizardGroupLabel": "组", "allGroups": "所有组", "endpointsTitle": "可用的端点", - "endpointsHint": "使用任何分配的密钥调用这些虚拟模型 — 路由 + 配额按组处理。", + "endpointsHint": "使用任何分配的密钥调用这些虚拟模型—路由 + 配额按组处理。", "previewForKey": "密钥预览", "previewKeyNone": "(所有端点)", - "endpointsBaseUrl": "基础 URL", + "endpointsBaseUrl": "基础URL", "endpointsCollapse": "折叠", "endpointsExpand": "展开", - "endpointsAnthropicNote": "Anthropic 原生", - "endpointsResponsesNote": "OpenAI 响应 — codex/github", - "endpointsWsNote": "WebSocket — 仅限 codex", + "endpointsAnthropicNote": "Anthropic原生", + "endpointsResponsesNote": "OpenAI响应—codex/github", + "endpointsWsNote": "WebSocket—仅限codex", "betaText": "配额共享功能正常,但预计会有错误。发现一个了吗?请报告。", "betaReportLink": "报告问题", "deleteGroup": "删除组", "deleteGroupConfirm": "要删除此组吗?必须先重新分配或移除其池。", - "deleteGroupHasPools": "该组仍然有池 — 请先重新分配或删除它们。", + "deleteGroupHasPools": "该组仍然有池—请先重新分配或删除它们。", "ungroupedTitle": "未分组", "ungroupedHint": "这些池未分配给已知组。编辑一个池以将其移动到真实组中。", "removeFailed": "Could not remove this pool.", @@ -10532,7 +10532,7 @@ }, "plugins": { "title": "插件", - "description": "安装和管理插件以扩展 OmniRoute 功能", + "description": "安装和管理插件以扩展OmniRoute功能", "loading": "加载插件中…", "scanning": "扫描中…", "scanForPlugins": "扫描插件", @@ -10566,10 +10566,10 @@ "disabled": "已禁用", "installedTab": "已安装", "marketplaceTab": "市场", - "marketplaceUrlLabel": "自定义市场 URL", - "marketplaceUrlPlaceholder": "留空以使用官方 Omniroute 注册表", + "marketplaceUrlLabel": "自定义市场URL", + "marketplaceUrlPlaceholder": "留空以使用官方Omniroute注册表", "saveMarketplaceUrl": "保存并重新加载", - "marketplaceUrlSaved": "市场 URL 已更新", + "marketplaceUrlSaved": "市场URL已更新", "marketplaceEmpty": "在市场中未找到插件。", "marketplaceInstallComingSoon": "市场安装功能即将推出。", "verified": "已验证", @@ -10579,11 +10579,11 @@ }, "quotaPlans": { "title": "计划与配额", - "description": "为每个提供者配置配额计划 — 维度(%、请求、令牌、$)和时间窗口", + "description": "为每个供应商配置配额计划—维度(%、请求、令牌、$)和时间窗口", "providerLabel": "供应商 / 连接", "detectedPlanLabel": "检测到的计划", "manualPlanLabel": "手动覆盖", - "unconfiguredLabel": "未配置 — 需要手动设置", + "unconfiguredLabel": "未配置—需要手动设置", "dimensionLabel": "尺寸", "addDimension": "添加维度", "removeDimension": "移除", @@ -10604,9 +10604,9 @@ "useCatalogButton": "使用目录", "saveOverrideButton": "保存覆盖", "revertToCatalogButton": "恢复到目录", - "unknownProviderNotice": "在左侧选择一个提供者以配置其配额计划。", + "unknownProviderNotice": "在左侧选择一个供应商以配置其配额计划。", "catalogTitle": "已知目录", - "catalogDescription": "自动检测到以下提供者的计划:" + "catalogDescription": "自动检测到以下供应商的计划:" }, "activity": { "title": "活动", @@ -10618,7 +10618,7 @@ "filterAll": "全部", "filterProviders": "供应商", "filterCombos": "组合", - "filterApiKeys": "API 密钥", + "filterApiKeys": "API Key", "filterSettings": "设置", "filterQuota": "配额", "filterAuth": "认证", @@ -10643,26 +10643,26 @@ "comboCreated": "{actor} 创建了组合 {target}", "comboUpdated": "{actor} 更新了组合 {target}", "comboDeleted": "{actor} 移除了组合 {target}", - "apiKeyCreated": "{actor} 创建了 API 密钥 {target}", - "apiKeyRevoked": "{actor} 撤销了 API 密钥 {target}", - "apiKeyRotated": "{actor} 旋转了 API 密钥 {target}", + "apiKeyCreated": "{actor} 创建了API Key {target}", + "apiKeyRevoked": "{actor} 撤销了API Key {target}", + "apiKeyRotated": "{actor} 旋转了API Key {target}", "budgetThreshold": "已达到 {target} 的预算阈值", "settingUpdated": "{actor} 更新了设置 {target}", "authLogin": "{actor} 已登录", "authLogout": "{actor} 已注销", - "cloudAgentSession": "为 {target} 启动了云代理会话", - "mcpToolRegistered": "MCP 工具 {target} 已注册", - "webhookCreated": "{actor} 创建了 webhook {target}", - "webhookDeleted": "{actor} 移除了 webhook {target}", + "cloudAgentSession": "为 {target} 启动了云智能体会话", + "mcpToolRegistered": "MCP工具 {target} 已注册", + "webhookCreated": "{actor} 创建了webhook {target}", + "webhookDeleted": "{actor} 移除了webhook {target}", "quotaPoolCreated": "{actor} 创建了配额池 {target}", "quotaPoolUpdated": "{actor} 更新了配额池 {target}", "quotaPoolDeleted": "{actor} 移除了配额池 {target}", "quotaPlanUpdated": "{actor} 更新了配额计划 {target}", - "quotaStoreDriverChanged": "QuotaStore 驱动已更改", + "quotaStoreDriverChanged": "QuotaStore驱动已更改", "updateApplied": "已应用更新 {target}", "deployCompleted": "部署完成", - "skillInstalled": "{actor} 安装了技能 {target}", - "skillRemoved": "{actor} 移除了技能 {target}", + "skillInstalled": "{actor} 安装了Skills {target}", + "skillRemoved": "{actor} 移除了Skills {target}", "providerCredentialsCreated": "{actor} 为 {target} 创建了凭据", "providerCredentialsApplied": "已应用 {target} 的凭据", "providerCredentialsUpdated": "{actor} 更新了 {target} 的凭据", @@ -10672,33 +10672,33 @@ "providerCredentialsBulkCreated": "{actor} 批量创建了凭据", "providerCredentialsBulkImported": "{actor} 批量导入了凭据", "providerCredentialsImported": "{actor} 导入的凭据", - "providerSsrfBlocked": "已阻止对 {target} 的 SSRF 尝试", + "providerSsrfBlocked": "已阻止对 {target} 的SSRF尝试", "authLoginSuccess": "{actor} 已登录", "authLoginError": "{actor} 的登录错误", "authLoginFailed": "{name} 登录失败", - "authLoginLocked": "{actor} 在尝试次数过多后被锁定", + "authLoginLocked": "{actor} 在尝试次数过多后已锁定", "authLoginMisconfigured": "身份验证配置无效", - "authLoginSetupRequired": "需要进行身份验证设置", + "authLoginSetupRequired": "需要身份验证设置", "authLogoutSuccess": "{actor} 已注销", "syncTokenCreated": "{actor} 创建了同步令牌", "syncTokenRevoked": "{actor} 撤销了同步令牌", "settingsUpdate": "{actor} 更新了设置", "settingsUpdateFailed": "设置更新失败", - "serviceRevealApiKey": "{actor} 揭露了 {target} 的 API 密钥", + "serviceRevealApiKey": "{actor} 揭露了 {target} 的API Key", "genericEvent": "{actor} {target}" } }, "agentBridge": { "title": "AgentBridge", - "subtitle": "使用 IDE 代理与 OmniRoute 模型 — 无需配置", + "subtitle": "使用IDE智能体与OmniRoute模型—无需配置", "riskBannerTitle": "自行承担风险", - "riskBannerBody": "AgentBridge 拦截来自 IDE 代理的 HTTPS 流量。通过激活它,您接受遵守每个代理服务条款的责任。切勿在禁止 TLS 检查的设备或网络上使用。", + "riskBannerBody": "AgentBridge拦截来自IDE智能体的HTTPS流量。通过激活它,您接受遵守每个代理服务条款的责任。切勿在禁止TLS检查的设备或网络上使用。", "riskBannerDismiss": "关闭", - "serverCardTitle": "AgentBridge 服务器", + "serverCardTitle": "AgentBridge服务器", "statusRunning": "运行中", "statusStopped": "已停止", "statusActive": "活动", - "statusDnsOff": "DNS 关闭", + "statusDnsOff": "DNS关闭", "statusSetupRequired": "需要设置", "statusInvestigating": "调查中", "serverPort": "端口", @@ -10710,24 +10710,24 @@ "restartServer": "重启", "trustCert": "信任证书", "downloadCert": "下载证书", - "certManualTitle": "证书无法自动安装(例如在容器内)。网桥仍可运行 — 请手动信任 CA:", + "certManualTitle": "证书无法自动安装(例如在容器内)。网桥仍可运行—请手动信任CA:", "regenerateCert": "重新生成证书", "starting": "正在启动…", "stopping": "停止中…", "restarting": "正在重启…", "trusting": "信任中……", "regenerating": "重新生成中…", - "upstreamCaLabel": "上游 CA 证书(企业)", + "upstreamCaLabel": "上游CA证书(企业)", "upstreamCaPlaceholder": "/etc/ssl/certs/corp-ca.pem", - "upstreamCaTest": "测试 TLS", - "upstreamCaTestOk": "TLS 测试通过", - "upstreamCaTestError": "TLS 测试失败 — 检查路径和 CA 文件", + "upstreamCaTest": "测试TLS", + "upstreamCaTestOk": "TLS测试通过", + "upstreamCaTestError": "TLS测试失败—检查路径和CA文件", "bypassSectionTitle": "绕过列表", - "bypassSectionDesc": "匹配这些模式的主机将直接隧道(不进行 TLS 解密)。默认包括银行、.gov 和企业 SSO。", + "bypassSectionDesc": "匹配这些模式的主机将直接隧道(不进行TLS解密)。默认包括银行、.gov和企业SSO。", "bypassDefaultsLabel": "默认绕过模式(只读)", - "bypassUserLabel": "自定义绕过模式(每行一个,glob 或正则表达式)", + "bypassUserLabel": "自定义绕过模式(每行一个,glob或正则表达式)", "saveBypassList": "保存绕过列表", - "agentListTitle": "IDE 代理", + "agentListTitle": "IDE智能体", "filterAll": "全部", "filterActive": "活跃", "filterSetupRequired": "需要设置", @@ -10737,7 +10737,7 @@ "agentHosts": "拦截的主机", "certTrusted": "证书已信任", "certNotTrusted": "证书不受信任", - "investigatingNotice": "该代理正在接受调查。主机和 API 接口仍在确认中。一旦上游 API 文档完成,设置将可用。", + "investigatingNotice": "该代理正在接受调查。主机和API接口仍在确认中。一旦上游API文档完成,设置将可用。", "modelMappingsLabel": "模型映射", "sourceModel": "源模型(代理原生)", "targetModel": "目标模型 (OmniRoute)", @@ -10745,12 +10745,12 @@ "selectModel": "选择…", "saveMappings": "保存映射", "setupWizard": "设置向导", - "startDns": "启动 DNS", - "stopDns": "停止 DNS", + "startDns": "启动DNS", + "stopDns": "停止DNS", "toggling": "切换中…", "viewTraffic": "查看流量", "emptyNoProvidersTitle": "尚未配置提供程序", - "emptyNoProvidersBody": "要使用 AgentBridge,首先连接至少一个供应商。它将是 IDE 请求路由的目标。", + "emptyNoProvidersBody": "要使用AgentBridge,首先连接至少一个供应商。它将是IDE请求路由的目标。", "emptyGoToProviders": "前往供应商", "wizardTitle": "设置向导", "wizardSubtitle": "3步设置", @@ -10758,18 +10758,18 @@ "wizardStep2Label": "DNS", "wizardStep3Label": "映射", "wizardStep1Desc": "确认服务器正在运行并且证书已安装。", - "wizardStep2Desc": "以下条目将被添加到 /etc/hosts 以通过 AgentBridge 重定向流量:", - "wizardStep3Desc": "您现在可以在代理卡中配置模型映射。重启 IDE 以应用更改。", + "wizardStep2Desc": "以下条目将被添加到 /etc/hosts以通过AgentBridge重定向流量:", + "wizardStep3Desc": "您现在可以在代理卡中配置模型映射。重启IDE以应用更改。", "wizardStep3Success": "代理已配置!", - "wizardServerCheck": "AgentBridge 服务器", + "wizardServerCheck": "AgentBridge服务器", "wizardRunning": "运行中", "wizardNotRunning": "未运行", "wizardCertCheck": "证书", "wizardTrusted": "可信的", - "wizardNotTrusted": "尚未信任 — 使用信任证书按钮", + "wizardNotTrusted": "尚未信任—使用信任证书按钮", "wizardTutorialTitle": "设置说明:", - "wizardEnableDns": "添加 /etc/hosts 条目", - "wizardDnsAlreadyEnabled": "此代理已启用 DNS", + "wizardEnableDns": "添加 /etc/hosts条目", + "wizardDnsAlreadyEnabled": "此代理已启用DNS", "enablingDns": "启用中…", "modelSelectorTitle": "选择目标模型", "modelSelectorSearch": "搜索模型…", @@ -10780,7 +10780,7 @@ "unknownError": "未知错误", "maintenanceTitle": "维护与诊断", "maintenanceSubtitle": "自检捕获管道、撤销残留的系统状态,并在机器之间迁移配置。", - "orphanedStateWarning": "上次会话留下了残留的系统状态(DNS 欺骗、CA 或系统代理)。运行修复以进行清理。", + "orphanedStateWarning": "上次会话留下了残留的系统状态(DNS欺骗、CA或系统代理)。运行修复以进行清理。", "diagnose": "诊断", "diagnosing": "正在诊断…", "diagnoseHealthy": "捕获管道正常。", @@ -10788,18 +10788,18 @@ "repair": "修复", "repairing": "正在修复…", "repairDone": "已修复:{items}", - "repairNothing": "无需修复 — 系统状态正常。", - "removeCa": "移除 CA", - "removeCaConfirm": "移除 CA?", - "removeCaDone": "已从操作系统信任库中移除 MITM 根 CA。", + "repairNothing": "无需修复—系统状态正常。", + "removeCa": "移除CA", + "removeCaConfirm": "移除CA?", + "removeCaDone": "已从操作系统信任库中移除MITM根CA。", "removing": "正在移除…", "confirm": "确认", "exportConfig": "导出配置", "exporting": "正在导出…", "importConfig": "导入配置", "importing": "正在导入…", - "importInvalidJson": "所选文件不是有效的 JSON。", - "importDone": "已导入 {bypass} 个绕过 · {hosts} 个主机 · {agents} 个代理", + "importInvalidJson": "所选文件不是有效的JSON。", + "importDone": "已导入 {bypass} 个绕过· {hosts} 个主机· {agents} 个代理", "save": "保存", "saving": "保存中…", "cancel": "取消", @@ -10808,46 +10808,46 @@ "done": "完成", "loading": "加载中…", "riskNoticeTitle": "风险确认", - "riskNoticeBody": "AgentBridge 将通过 DNS 重定向其 API 主机来拦截来自此代理的 HTTPS 流量。仅在您接受遵守代理的服务条款和任何适用的网络政策的责任时启用。", + "riskNoticeBody": "AgentBridge将通过DNS重定向其API主机来拦截来自此代理的HTTPS流量。仅在您接受遵守代理的服务条款和任何适用的网络政策的责任时启用。", "pageMoved": { "goNow": "现在去", - "message": "MITM Proxy 现在归 AgentBridge 所有。", + "message": "MITM Proxy现在归AgentBridge所有。", "title": "此页面已移动" } }, "providerStats": { "unknownError": "未知错误", - "loading": "正在加载提供者统计信息...", - "loadFailed": "加载提供者统计信息失败:{error}", + "loading": "正在加载供应商统计信息...", + "loadFailed": "加载供应商统计信息失败:{error}", "retry": "重试", "updated": "更新于 {time}", "refresh": "刷新", "totalRequests": "总请求数", "avgLatency": "平均延迟", "successRate": "成功率", - "activeProviders": "活跃提供者", - "providerBreakdown": "提供者明细", - "providerCount": "{count} 个提供者", - "provider": "提供者", + "activeProviders": "活跃供应商", + "providerBreakdown": "供应商明细", + "providerCount": "{count} 个供应商", + "provider": "供应商", "requests": "请求数", "success": "成功", "rate": "速率", - "tokensIn": "输入 Token", - "tokensOut": "输出 Token", - "ttftAfterTool": "工具后 TTFT", + "tokensIn": "输入Token", + "tokensOut": "输出Token", + "ttftAfterTool": "工具后TTFT", "gapAfterTool": "工具后间隔", "model": "模型", - "noProviderData": "尚未记录提供者数据。", + "noProviderData": "尚未记录供应商数据。", "comboMetrics": "组合指标", "comboMetricsDescription": "来自流式传输的每个组合的延迟和吞吐量", - "avgTtft": "平均 TTFT", + "avgTtft": "平均TTFT", "avgTotal": "平均总计", "requestTelemetry": "请求遥测", "requestTelemetryDescription": "7 阶段流水线明细(最近 5 分钟)" }, "relay": { - "title": "Serverless 中继代理", - "description": "创建代理至 OmniRoute 的公开 API 端点,支持速率限制和访问控制", + "title": "Serverless中继代理", + "description": "创建代理至OmniRoute的公开API端点,支持速率限制和访问控制", "created": "中继令牌已创建", "createFailed": "创建令牌失败", "toggleFailed": "切换令牌状态失败", @@ -10859,11 +10859,11 @@ "createTitle": "创建中继令牌", "nameRequired": "名称 *", "tokenDescription": "描述", - "descriptionPlaceholder": "用于我的 serverless 函数", + "descriptionPlaceholder": "用于我的serverless函数", "maxPerMinute": "最大请求数/分钟", "maxPerDay": "最大请求数/天", "createButton": "创建令牌", - "createdTitle": "令牌已创建 — 请立即复制!", + "createdTitle": "令牌已创建—请立即复制!", "tokenFor": "{name} 的令牌:", "shownOnce": "此令牌将不再显示。请妥善保存。", "dismiss": "关闭", @@ -10878,20 +10878,20 @@ }, "trafficInspector": { "title": "流量检查员", - "subtitle": "监控 LLM 调用并调试任何应用程序的 HTTPS 流量", + "subtitle": "监控LLM调用并调试任何应用程序的HTTPS流量", "captureModesTitle": "捕获模式", "agentBridgeMode": "AgentBridge", - "agentBridgeModeDesc": "捕获来自所有连接的 IDE 代理的流量", + "agentBridgeModeDesc": "捕获来自所有连接的IDE智能体的流量", "customHostsMode": "自定义主机", "customHostsModeDesc": "添加特定主机以进行拦截", - "httpProxyMode": "HTTP 代理", - "httpProxyModeDesc": "使用 HTTP_PROXY 环境变量", + "httpProxyMode": "HTTP代理", + "httpProxyModeDesc": "使用HTTP_PROXY环境变量", "systemWideMode": "系统范围内", "systemWideModeDesc": "拦截所有系统流量(高级)", - "tproxyMode": "TPROXY 解密", - "tproxyModeUnavailable": "TPROXY 解密需要 Linux + root + 原生插件", + "tproxyMode": "TPROXY解密", + "tproxyModeUnavailable": "TPROXY解密需要Linux + root + 原生插件", "filterBarTitle": "过滤器", - "profileLlmOnly": "仅限 LLM", + "profileLlmOnly": "仅限LLM", "profileCustom": "自定义", "profileAll": "全部", "filterHost": "过滤主机…", @@ -10906,21 +10906,21 @@ "liveBadge": "直播", "offlineBadge": "离线", "noRequests": "尚未捕获任何请求。", - "noRequestsDesc": "确保 AgentBridge 正在运行或启用其他捕获模式。", - "selectRequest": "选择一个请求以进行检查。", + "noRequestsDesc": "确保AgentBridge正在运行或启用其他捕获模式。", + "selectRequest": "选择一个请求以检查。", "tabConversation": "对话", - "tabHeaders": "标题", + "tabHeaders": "请求/响应标头", "tabRequest": "请求", "tabResponse": "响应", "tabTiming": "计时", "tabLlm": "LLM", "tabStats": "统计信息", - "requestHeaders": "请求头部", - "responseHeaders": "响应头部", + "requestHeaders": "请求标头", + "responseHeaders": "响应标头", "rawEvents": "原始事件", "mergedView": "合并视图", "noBody": "没有主体。", - "streaming": "流媒体…", + "streaming": "流式…", "manageHosts": "管理主机", "copySnippet": "复制代理代码片段", "addHost": "添加", @@ -10932,18 +10932,18 @@ "annotationPlaceholder": "添加备注…", "contextFingerprint": "上下文指纹", "llmProvider": "检测到的供应商", - "llmApiKind": "API 类型", + "llmApiKind": "API类型", "llmModel": "模型", "llmMessages": "消息", - "llmStream": "流媒体", + "llmStream": "流式", "llmMappedTo": "映射到", "llmCostEstimate": "成本估算", - "systemProxyExitWarning": "系统范围的代理仍然处于活动状态 — 仍然离开页面吗?", + "systemProxyExitWarning": "系统范围的代理仍然处于活动状态—仍然离开页面吗?", "customHostsTitle": "自定义主机", "loading": "加载中…", "copied": "已复制!", "copy": "复制", - "httpProxyTitle": "HTTP 代理代码片段 — 端口 {port}", + "httpProxyTitle": "HTTP代理代码片段—端口 {port}", "notRecording": "未录制", "anyStatus": "任何状态", "liveOnly": "实时", @@ -10953,7 +10953,7 @@ "contextHistory": "上下文历史", "modelResponse": "模型响应", "conversationNoMessages": "在此请求中未找到消息。", - "conversationNotAvailable": "对话数据不可用。这可能不是 LLM 请求,或者主体无法解析。", + "conversationNotAvailable": "对话数据不可用。这可能不是LLM请求,或者主体无法解析。", "loadingCharts": "加载图表…", "statsErrors": "错误", "statsLatency": "延迟(最近 50 个请求)", @@ -10989,7 +10989,7 @@ "roleTool": "工具", "expand": "展开", "collapse": "折叠", - "systemPromptHidden": "系统提示词已隐藏 — 点击展开", + "systemPromptHidden": "系统提示词已隐藏—点击展开", "sessionName": "会话 {id}", "sessions": "会话", "requestCountShort": "{count} 个请求", @@ -11000,7 +11000,7 @@ "hide": "隐藏", "name": "名称", "value": "值", - "noSseEvents": "无 SSE 事件", + "noSseEvents": "无SSE事件", "noRequestBody": "无请求体。", "noResponseBody": "无响应体。", "formatted": "格式化", @@ -11009,42 +11009,42 @@ "cliCommon": { "concept": { "code": { - "title": "CLI 代码的", - "phrase": "指向 OmniRoute 的代码工具", - "flow": "你 → CLI 代码 → OmniRoute → 供应商", + "title": "CLI代码的", + "phrase": "指向OmniRoute的代码工具", + "flow": "你 → CLI代码 → OmniRoute → 供应商", "seeOther": "查看 →" }, "agent": { - "title": "CLI 代理", - "phrase": "通用自主CLI代理,您可以指向OmniRoute", - "flow": "您 → CLI 代理 → OmniRoute → 供应商", + "title": "CLI智能体", + "phrase": "通用自主CLI智能体,您可以指向OmniRoute", + "flow": "您 → CLI智能体 → OmniRoute → 供应商", "seeOther": "查看 →" }, "acp": { - "title": "ACP 代理", - "phrase": "OmniRoute 作为执行后端(反向流)生成的 CLI", - "flow": "客户端 → OmniRoute → 生成 CLI (stdio/ACP) → 响应", + "title": "ACP代理", + "phrase": "OmniRoute作为执行后端(反向流)生成的CLI", + "flow": "客户端 → OmniRoute → 生成CLI (stdio/ACP) → 响应", "seeOther": "查看 →" } }, "comparison": { - "title": "了解 OmniRoute 中的 3 种 CLI 类型", + "title": "了解OmniRoute中的 3 种CLI类型", "thisPage": "[此页面 ✓]", "open": "打开 →", "code": { "title": "代码工具", - "desc": "指向 Omni", + "desc": "指向Omni", "flow": "你 → CLI → Omni → 供应商", "examples": "例如:claude,codex" }, "agent": { "title": "广泛自主代理", - "desc": "指向 Omni", + "desc": "指向Omni", "flow": "你 → 代理 → Omni", "examples": "例如:hermes,goose" }, "acp": { - "title": "Omni 使用的后端 CLI", + "title": "Omni使用的后端CLI", "desc": "反向执行", "flow": "Omni → spawn CLI → resp", "examples": "例如:claude,codex (ACP)" @@ -11061,11 +11061,11 @@ "manualConfig": "手动配置", "installGuide": "安装指南", "endpointLabel": "端点", - "baseUrlFull": "完整 Base URL", - "baseUrlPartial": "部分基础 URL", + "baseUrlFull": "完整Base URL", + "baseUrlPartial": "部分基础URL", "refreshDetection": "刷新检测", - "alsoAcp": "也 ACP", - "connectProviderHint": "在“提供者”中连接提供者" + "alsoAcp": "也ACP", + "connectProviderHint": "在“供应商”中连接供应商" }, "detail": { "back": "返回", @@ -11076,20 +11076,20 @@ "category": "类型", "detectionStatus": "检测", "configStatus": "配置", - "baseUrlLabel": "基础 URL", - "apiKeyLabel": "API 密钥", + "baseUrlLabel": "基础URL", + "apiKeyLabel": "API Key", "modelMappingLabel": "模型映射", "noActiveProviders": "没有活动的供应商。", - "noActiveProvidersDesc": "请前往 Providers 连接至少 1 个供应商,然后再配置 CLI。", + "noActiveProvidersDesc": "请前往供应商s连接至少 1 个供应商,然后再配置CLI。", "openProviders": "打开供应商 →" } }, "cliCode": { - "pageTitle": "CLI 代码的", - "pageSubtitle": "指向 OmniRoute 的代码工具", - "searchPlaceholder": "搜索 CLI…", + "pageTitle": "CLI代码的", + "pageSubtitle": "指向OmniRoute的代码工具", + "searchPlaceholder": "搜索CLI…", "filterDetectionLabel": "检测", - "filterBaseUrlLabel": "基础 URL", + "filterBaseUrlLabel": "基础URL", "detectionAll": "所有", "detectionInstalled": "已安装", "detectionNotFound": "未找到", @@ -11098,8 +11098,8 @@ "baseUrlPartial": "部分" }, "cliAgents": { - "pageTitle": "CLI 代理", - "pageSubtitle": "通用自主CLI代理", + "pageTitle": "CLI智能体", + "pageSubtitle": "通用自主CLI智能体", "refreshDetection": "刷新检测", "searchPlaceholder": "搜索代理…", "detectionFilterLabel": "检测", @@ -11107,31 +11107,31 @@ "detectionInstalled": "已安装", "detectionNotInstalled": "未安装", "visibleCount": "{count} 可见", - "emptyState": "未找到符合当前筛选条件的 CLI 代理。" + "emptyState": "未找到符合当前筛选条件的CLI智能体。" }, "acpAgents": { - "pageTitle": "ACP 代理", - "pageSubtitle": "OmniRoute 作为执行后端生成的 CLI", + "pageTitle": "ACP智能体", + "pageSubtitle": "OmniRoute作为执行后端生成的CLI", "scanning": "正在检测代理…", "refresh": "刷新", "setupGuideTitle": "设置指南", - "setupGuideDetectCliTitle": "检测 CLI", - "setupGuideDetectCliDesc": "代理通过在 PATH 中运行 --version 命令来识别。", - "setupGuideCustomAgentTitle": "添加自定义代理", - "setupGuideCustomAgentDesc": "填写下面的表格以注册自定义 CLI 代理。", + "setupGuideDetectCliTitle": "检测CLI", + "setupGuideDetectCliDesc": "代理通过在PATH中运行 --version命令来识别。", + "setupGuideCustomAgentTitle": "添加自定义智能体", + "setupGuideCustomAgentDesc": "填写下面的表格以注册自定义CLI智能体。", "setupGuideCommandMissingTitle": "找不到命令", - "setupGuideCommandMissingDesc": "检查二进制文件是否在 PATH 中。", + "setupGuideCommandMissingDesc": "检查二进制文件是否在PATH中。", "fingerprintSettingsHint": "在中配置路由和指纹", "settingsRoutingLink": "设置 → 路由", "installed": "已安装", "notFound": "未找到", "builtIn": "内置", "custom": "自定义", - "agentUseCaseHint": "通过 ACP 可用以生成。", + "agentUseCaseHint": "通过ACP可用以生成。", "remove": "移除", - "addCustomAgent": "添加自定义代理", - "addCustomAgentDesc": "通过 ACP 注册一个自定义 CLI 代理。", - "addAgent": "添加代理", + "addCustomAgent": "添加自定义智能体", + "addCustomAgentDesc": "通过ACP注册一个自定义CLI智能体。", + "addAgent": "添加智能体", "agentName": "名称", "agentNamePlaceholder": "我的代理", "binaryName": "二进制", @@ -11140,238 +11140,238 @@ "versionCommandPlaceholder": "例如:myagent --version", "spawnArgs": "生成参数", "spawnArgsPlaceholder": "例如:--quiet,--json", - "cliCodeRedirectCta": "打开 CLI 代码的" + "cliCodeRedirectCta": "打开CLI代码的" }, "agentSkills": { "catalog": { "omni-auth": { "name": "身份验证", - "description": "管理 API 密钥身份验证和会话令牌。从此处开始通过 Bearer 令牌验证请求、获取会话 Cookie,并配置 OmniRoute API 的登录要求。" + "description": "管理API Key身份验证和会话令牌。从此处开始通过Bearer令牌验证请求、获取会话Cookie,并配置OmniRoute API的登录要求。" }, "omni-providers": { - "name": "提供者", - "description": "通过 REST API 管理提供者连接、API 密钥、OAuth 流程和连接测试。列出、添加、更新、删除和测试 AI 提供者集成(OpenAI、Anthropic、Gemini 以及 160+ 种)。" + "name": "供应商", + "description": "通过REST API管理供应商连接、API Key、OAuth流程和连接测试。列出、添加、更新、删除和测试AI供应商集成(OpenAI、Anthropic、Gemini以及 160+ 种)。" }, "omni-models": { "name": "模型", - "description": "查询所有已配置提供者的可用 AI 模型。列出模型、解析模型别名,并浏览包含特定提供者变体的完整模型目录。" + "description": "查询所有已配置供应商的可用AI模型。列出模型、解析模型别名,并浏览包含特定供应商变体的完整模型目录。" }, "omni-combos-routing": { "name": "组合与路由", - "description": "创建和管理具有 14 种策略(优先级、加权、轮询、Auto-combo 等)的路由组合。配置回退链、测试路由结果并检索组合指标。" + "description": "创建和管理具有 14 种策略(优先级、加权、轮询、Auto-combo等)的路由组合。配置回退链、测试路由结果并检索组合指标。" }, "omni-api-keys": { - "name": "API 密钥", - "description": "创建、列出、轮换和撤销 OmniRoute API 密钥。控制每个密钥的作用域、支出限额和过期时间。密钥用于控制对所有代理和管理端点的访问。" + "name": "API Key", + "description": "创建、列出、轮换和撤销OmniRoute API Key。控制每个密钥的作用域、支出限额和过期时间。密钥用于控制对所有代理和管理端点的访问。" }, "omni-usage-logs": { "name": "用量与日志", - "description": "访问详细的调用日志和用量分析。按提供者、模型、时间范围、状态和费用进行筛选。导出日志并汇总所有连接的 Token 用量。" + "description": "访问详细的调用日志和用量分析。按供应商、模型、时间范围、状态和费用进行筛选。导出日志并汇总所有连接的Token用量。" }, "omni-budget": { "name": "预算与速率限制", - "description": "按 API 密钥或全局配置支出限额、Token 配额和速率限制策略。检查当前消耗并在各提供者之间实施成本控制。" + "description": "按API Key或全局配置支出限额、Token配额和速率限制策略。检查当前消耗并在各供应商之间实施成本控制。" }, "omni-settings": { "name": "设置", - "description": "读取和更新全局应用程序设置:系统提示词、思考预算、IP 过滤器、有效负载规则、组合默认值以及登录要求配置。" + "description": "读取和更新全局应用程序设置:系统提示词、思考预算、IP过滤器、有效负载规则、组合默认值以及登录要求配置。" }, "omni-proxies": { "name": "代理配置", - "description": "为上游提供者请求配置 HTTP/HTTPS/SOCKS 代理。设置按提供者或全局代理规则、测试连通性并管理代理轮换。" + "description": "为上游供应商请求配置HTTP/HTTPS/SOCKS代理。设置按供应商或全局代理规则、测试连通性并管理代理轮换。" }, "omni-cache": { "name": "缓存", - "description": "管理 LLM 响应缓存。查看缓存统计信息、清除条目、配置 TTL 策略并控制语义相似度缓存阈值。" + "description": "管理LLM响应缓存。查看缓存统计信息、清除条目、配置TTL策略并控制语义相似度缓存阈值。" }, "omni-compression": { "name": "压缩", - "description": "配置 RTK(命令输出)、Caveman(散文)和堆叠压缩模式。管理语言包、自定义规则,并测试可减少 60–90% Token 的提示词压缩。" + "description": "配置RTK(命令输出)、Caveman(散文)和堆叠压缩模式。管理语言包、自定义规则,并测试可减少 60–90% Token的提示词压缩。" }, "omni-context-rtk": { - "name": "上下文与 RTK", - "description": "配置 RTK 过滤器、上下文工程规则和上下文中继设置。使用真实提示词样本测试压缩,并管理上下文转换管道。" + "name": "上下文与RTK", + "description": "配置RTK过滤器、上下文工程规则和上下文中继设置。使用真实提示词样本测试压缩,并管理上下文转换管道。" }, "omni-resilience": { "name": "弹性与监控", - "description": "监控提供者健康状况、熔断器状态、p50/p95/p99 延迟指标和预算防护警报。实时检查连接冷却时间和模型锁定状态。" + "description": "监控供应商健康状况、熔断器状态、p50/p95/p99 延迟指标和预算防护警报。实时检查连接冷却时间和模型锁定状态。" }, "omni-cli-tools": { - "name": "CLI 工具", - "description": "管理通过 API 公开的 CLI 工具集成。列出、配置和调用扩展 OmniRoute 自动化能力的 CLI 工具插件。" + "name": "CLI工具", + "description": "管理通过API公开的CLI工具集成。列出、配置和调用扩展OmniRoute自动化能力的CLI工具插件。" }, "omni-tunnels": { "name": "隧道", - "description": "创建和管理安全隧道(ngrok、Cloudflare Tunnel、自定义),以将 OmniRoute 暴露到互联网或与远程 Agent 和 CI 流水线共享访问权限。" + "description": "创建和管理安全隧道(ngrok、Cloudflare Tunnel、自定义),以将OmniRoute暴露到互联网或与远程智能体和CI流水线共享访问权限。" }, "omni-sync-cloud": { "name": "云同步", - "description": "在云存储之间同步 OmniRoute 配置、提供者连接和设置。管理云 Worker 身份验证和远程备份目标。" + "description": "在云存储之间同步OmniRoute配置、供应商连接和设置。管理云Worker身份验证和远程备份目标。" }, "omni-db-backups": { "name": "数据库与备份", - "description": "触发系统备份、从备份文件恢复,并管理 SQLite 数据库生命周期。支持导出、导入和增量快照策略。" + "description": "触发系统备份、从备份文件恢复,并管理SQLite数据库生命周期。支持导出、导入和增量快照策略。" }, "omni-webhooks": { "name": "Webhooks", - "description": "注册、列出、测试和移除 Webhook 端点。配置事件订阅(request.completed、provider.error、budget.exceeded 等)并管理投递重试。" + "description": "注册、列出、测试和移除Webhook端点。配置事件订阅(request.completed、provider.error、budget.exceeded等)并管理投递重试。" }, "omni-mcp": { - "name": "MCP 服务器", - "description": "连接到 OmniRoute MCP 服务器(37 个工具,3 种传输方式:SSE/stdio/HTTP)。涵盖 16 个权限范围内的路由、缓存、压缩、内存、技能、提供者和审计工具。" + "name": "MCP服务器", + "description": "连接到OmniRoute MCP服务器(37 个工具,3 种传输方式:SSE/stdio/HTTP)。涵盖 16 个权限范围内的路由、缓存、压缩、内存、Skills、供应商和审计工具。" }, "omni-agents-a2a": { - "name": "智能体与 A2A 协议", - "description": "通过 JSON-RPC 2.0 agent-to-agent 协议与 OmniRoute 交互。包含 6 个内置 A2A 技能:smart-routing、quota-management、provider-discovery、cost-analysis、health-report、list-capabilities。" + "name": "智能体与A2A协议", + "description": "通过JSON-RPC 2.0 智能体-to-智能体协议与OmniRoute交互。包含 6 个内置A2A Skills:smart-routing、quota-management、provider-discovery、cost-analysis、health-report、list-capabilities。" }, "omni-version-manager": { "name": "版本管理器", "description": "安装、启动、停止、重启和更新嵌入式服务(9Router、CLIProxyAPI)。监控服务状态、检索日志,并为仅限本地的服务端点配置自动启动。" }, "omni-inference": { - "name": "推理(兼容 OpenAI)", - "description": "核心兼容 OpenAI 的推理端点:chat completions、embeddings、images、audio (TTS/STT)、moderations、rerank 以及 Responses API。AI 智能体的主要集成界面。" + "name": "推理(兼容OpenAI)", + "description": "核心兼容OpenAI的推理端点:chat completions、embeddings、images、audio (TTS/STT)、moderations、rerank以及Responses API。AI智能体的主要集成界面。" }, "cli-serve": { "name": "CLI: 服务", - "description": "从 CLI 启动、停止和重启 OmniRoute 服务器。管理守护进程模式、端口配置、自动恢复、系统托盘集成以及仪表板打开快捷方式。" + "description": "从CLI启动、停止和重启OmniRoute服务器。管理守护进程模式、端口配置、自动恢复、系统托盘集成以及看板打开快捷方式。" }, "cli-health": { "name": "CLI: 健康检查", - "description": "从 CLI 检查服务器健康状况、组件状态和实时指标。运行 `health`、`health components` 和 `health watch` 以获取熔断器和提供者状态的实时仪表板。" + "description": "从CLI检查服务器健康状况、组件状态和实时指标。运行 `health`、`health components` 和 `health watch` 以获取熔断器和供应商状态的实时看板。" }, "cli-providers": { - "name": "CLI: 提供者", - "description": "从 CLI 管理提供者连接:列出可用/已配置的提供者、添加、测试、test-all、验证、轮换 API 密钥,并查看每个提供者的指标。" + "name": "CLI: 供应商", + "description": "从CLI管理供应商连接:列出可用/已配置的供应商、添加、测试、test-all、验证、轮换API Key,并查看每个供应商的指标。" }, "cli-keys": { - "name": "CLI: API 密钥", - "description": "从 CLI 创建、列出、轮换和撤销 OmniRoute API 密钥。管理用于提供者身份验证的 OAuth 流程,并检查密钥范围和过期时间。" + "name": "CLI: API Key", + "description": "从CLI创建、列出、轮换和撤销OmniRoute API Key。管理用于供应商身份验证的OAuth流程,并检查密钥范围和过期时间。" }, "cli-models": { "name": "CLI: 模型", - "description": "从 CLI 查询可用的 AI 模型、列出模型别名并浏览完整的模型目录。按提供者筛选、按功能搜索并解析模型名称变体。" + "description": "从CLI查询可用的AI模型、列出模型别名并浏览完整的模型目录。按供应商筛选、按功能搜索并解析模型名称变体。" }, "cli-chat": { "name": "CLI: 对话", - "description": "从 CLI 发送对话补全、流式传输响应并启动交互式 REPL 会话。支持所有 OmniRoute 提供者、组合路由和系统提示词配置。" + "description": "从CLI发送对话补全、流式传输响应并启动交互式REPL会话。支持所有OmniRoute供应商、组合路由和系统提示词配置。" }, "cli-routing": { "name": "CLI: 路由与组合", - "description": "从 CLI 创建、列出、更新和删除路由组合。测试路由策略、检查组合指标并以交互方式配置回退链。" + "description": "从CLI创建、列出、更新和删除路由组合。测试路由策略、检查组合指标并以交互方式配置回退链。" }, "cli-resilience": { "name": "CLI: 弹性与配额", - "description": "从 CLI 检查和管理熔断器状态、连接冷却时间、配额限制和退避级别。重置卡住的提供者并配置弹性阈值。" + "description": "从CLI检查和管理熔断器状态、连接冷却时间、配额限制和退避级别。重置卡住的供应商并配置弹性阈值。" }, "cli-compression": { "name": "CLI: 压缩", - "description": "从 CLI 配置和测试提示词压缩。管理 RTK 过滤器、Caveman 规则、堆叠压缩模式,并使用真实提示词预览压缩输出。" + "description": "从CLI配置和测试提示词压缩。管理RTK过滤器、Caveman规则、堆叠压缩模式,并使用真实提示词预览压缩输出。" }, "cli-contexts": { "name": "CLI: 上下文与会话", - "description": "从 CLI 管理上下文工程配置、RTK 过滤器集和对话会话。应用 context-relay 设置并检查活动的上下文流水线。" + "description": "从CLI管理上下文工程配置、RTK过滤器集和对话会话。应用context-relay设置并检查活动的上下文流水线。" }, "cli-cost-usage": { "name": "CLI: 成本与用量", - "description": "从 CLI 查看成本明细、Token 用量和调用日志。按提供者、模型或日期范围筛选。导出用量报告并检查每个连接的支出。" + "description": "从CLI查看成本明细、Token用量和调用日志。按供应商、模型或日期范围筛选。导出用量报告并检查每个连接的支出。" }, "cli-mcp": { "name": "CLI: MCP", - "description": "从 CLI 检查 MCP 服务器状态、列出已注册的工具和范围、运行工具调用并管理 MCP 审计日志。" + "description": "从CLI检查MCP服务器状态、列出已注册的工具和范围、运行工具调用并管理MCP审计日志。" }, "cli-a2a": { - "name": "CLI: A2A 协议", - "description": "从 CLI 与 OmniRoute A2A 服务器交互。发送任务、检查技能执行历史,并以交互方式测试 JSON-RPC 2.0 agent-to-agent 协议。" + "name": "CLI: A2A协议", + "description": "从CLI与OmniRoute A2A服务器交互。发送任务、检查Skills执行历史,并以交互方式测试JSON-RPC 2.0 智能体-to-智能体协议。" }, "cli-tunnel": { "name": "CLI: 隧道", - "description": "从 CLI 启动和停止隧道连接(ngrok、Cloudflare、自定义)。检查活动隧道 URL、配置身份验证并测试外部可达性。" + "description": "从CLI启动和停止隧道连接(ngrok、Cloudflare、自定义)。检查活动隧道URL、配置身份验证并测试外部可达性。" }, "cli-backup-sync": { "name": "CLI: 备份与同步", - "description": "通过 CLI 备份和恢复 OmniRoute 数据。触发增量快照、同步到云存储、管理备份计划以及从归档文件恢复。" + "description": "通过CLI备份和恢复OmniRoute数据。触发增量快照、同步到云存储、管理备份计划以及从归档文件恢复。" }, "cli-policy-audit": { "name": "CLI: 策略与审计", - "description": "通过 CLI 检查审计日志、管理访问策略、查看遥测数据以及审查请求历史记录。按事件类型、用户或时间范围进行筛选,以满足合规工作流需求。" + "description": "通过CLI检查审计日志、管理访问策略、查看遥测数据以及审查请求历史记录。按事件类型、用户或时间范围进行筛选,以满足合规工作流需求。" }, "cli-batches": { "name": "CLI: 批处理与文件", - "description": "通过 CLI 提交和监控批量推理作业。上传和管理用于批处理的文件、检索结果,并将批处理流水线与 CI/CD 工作流集成。" + "description": "通过CLI提交和监控批量推理作业。上传和管理用于批处理的文件、检索结果,并将批处理流水线与CI/CD工作流集成。" }, "cli-eval": { "name": "CLI: 评估", - "description": "通过 CLI 创建和运行评估套件、实时查看基准测试进度、查看记分卡、比较模型性能,并将评估运行与 CI 工作流集成。" + "description": "通过CLI创建和运行评估套件、实时查看基准测试进度、查看记分卡、比较模型性能,并将评估运行与CI工作流集成。" }, "cli-plugins-skills": { - "name": "CLI: 插件、技能与记忆", - "description": "通过 CLI 管理 Omni Skills(列出、安装、测试、移除)、插件(创建、配置)和持久记忆(搜索、添加、清除)。" + "name": "CLI: 插件、Skills与记忆", + "description": "通过CLI管理Omni Skills(列出、安装、测试、移除)、插件(创建、配置)和持久记忆(搜索、添加、清除)。" }, "cli-setup": { "name": "CLI: 设置与配置", - "description": "通过 CLI setup 和 config 命令运行初始设置、配置全局 CLI 设置、管理环境变量、检查更新以及配置自动启动。" + "description": "通过CLI setup和config命令运行初始设置、配置全局CLI设置、管理环境变量、检查更新以及配置自动启动。" }, "cli-skill-collector": { - "name": "CLI: Agent 技能收集器", - "description": "检测已安装的 CLI 编程工具(Claude Code、Codex、Cursor、Copilot、Cline 等),在 GitHub 上搜索匹配的 agent 技能,并通过 OmniRoute 的内置 API 将其安装到检测到的工具中。" + "name": "CLI: 智能体Skills收集器", + "description": "检测已安装的CLI编程工具(Claude Code、Codex、Cursor、Copilot、Cline等),在GitHub上搜索匹配的智能体Skills,并通过OmniRoute的内置API将其安装到检测到的工具中。" }, "config-codex-cli": { "name": "配置: Codex CLI", - "description": "分步 agent 工作流,用于在任何机器(Linux、macOS、Windows)上配置 OpenAI Codex CLI,以将 OmniRoute 用作兼容 OpenAI 的后端。检测操作系统和 shell,写入 config.toml 和 7 个命名配置文件,设置环境变量,并验证设置。" + "description": "分步智能体工作流,用于在任何机器(Linux、macOS、Windows)上配置OpenAI Codex CLI,以将OmniRoute用作兼容OpenAI的后端。检测操作系统和shell,写入config.toml和 7 个命名配置文件,设置环境变量,并验证设置。" }, "omni-github-skills": { - "name": "GitHub 技能发现", - "description": "从包含 SKILL.md、CLAUDE.md、.cursorrules 及类似 agent 技能文件的 GitHub 仓库中搜索、评分、扫描和导入 agent 技能。发现跨 160 多个提供者类别的社区技能,通过启发式评分评估相关性,检查恶意软件或硬编码机密,并安装到 Hermes、Claude Code、Gemini CLI 或 OpenCode agent 目录中。" + "name": "GitHub Skills发现", + "description": "从包含SKILL.md、CLAUDE.md、.cursorrules及类似智能体Skills文件的GitHub仓库中搜索、评分、扫描和导入智能体Skills。发现跨 160 多个供应商类别的社区Skills,通过启发式评分评估相关性,检查恶意软件或硬编码机密,并安装到Hermes、Claude Code、Gemini CLI或OpenCode智能体目录中。" } }, - "pageTitle": "特工技能", - "pageSubtitle": "__MISSING__:Teach your agent to operate OmniRoute — 23 API areas + 21 CLI families", + "pageTitle": "智能体Skills", + "pageSubtitle": "教你的智能体操作OmniRoute— 22 个API区域 + 20 个CLI家族", "conceptCard": { "agent": { - "title": "代理技能 — 外呼", - "description": "代理技能是机器可读的 SKILL.md 文档,外部 AI 代理(Claude Code、Cursor、Copilot 等)从 GitHub 获取这些文档,以了解如何通过 REST 或 CLI 操作 OmniRoute。它们由代理读取,而不是由 OmniRoute 执行。", + "title": "智能体Skills—外呼", + "description": "智能体Skills是机器可读的SKILL.md文档,外部AI智能体(Claude Code、Cursor、Copilot等)从GitHub获取这些文档,以了解如何通过REST或CLI操作OmniRoute。它们由代理读取,而不是由OmniRoute执行。", "crossLinkLabel": "了解区别 →" }, "omni": { - "title": "全能技能 — 入站", - "description": "Omni Skills 是 OmniRoute 在每个请求中注入到模型上下文中的沙盒工具。它们由 OmniRoute 执行,而不是由代理读取。", + "title": "全能Skills—入站", + "description": "Omni Skills是OmniRoute在每个请求中注入到模型上下文中的沙盒工具。它们由OmniRoute执行,而不是由代理读取。", "crossLinkLabel": "了解差异 →" }, "comparison": { - "colAgent": "特工技能", - "colOmni": "全能技能", + "colAgent": "智能体Skills", + "colOmni": "全能Skills", "whatIs": { "label": "它是什么", - "agent": "机器可读的 SKILL.md,教外部代理如何操作 OmniRoute", - "omni": "OmniRoute 注入到 LLM 请求中的可执行工具" + "agent": "机器可读的SKILL.md,教外部智能体如何操作OmniRoute", + "omni": "OmniRoute注入到LLM请求中的可执行工具" }, "direction": { "label": "方向", - "agent": "外部 — 外部代理学习控制 OmniRoute", - "omni": "入站 — OmniRoute 为经过它的模型提供工具" + "agent": "外部—外部智能体学习控制OmniRoute", + "omni": "入站—OmniRoute为经过它的模型提供工具" }, "executor": { "label": "执行者", - "agent": "外部代理(读取 markdown → 通过 API/CLI 执行)", - "omni": "OmniRoute 本身(拦截 tool_calls,Docker 沙箱)" + "agent": "外部智能体(读取markdown → 通过API/CLI执行)", + "omni": "OmniRoute本身(拦截tool_calls,Docker沙箱)" }, "storage": { "label": "存储", - "agent": "动态目录 (/api/agent-skills) → GitHub 上的 SKILL.md", + "agent": "动态目录 (/api/智能体-skills) → GitHub上的SKILL.md", "omni": "SQLite (SkillsMP / skills.sh / local)" }, "tagline": { "label": "标语", - "agent": "教你的代理使用 OmniRoute", - "omni": "为 OmniRoute 模型提供可执行工具" + "agent": "教你的智能体使用OmniRoute", + "omni": "为OmniRoute模型提供可执行工具" } } }, "filters": { "category": "类别", "area": "区域", - "searchPlaceholder": "搜索技能…" + "searchPlaceholder": "搜索Skills…" }, "categoryApi": "API", "categoryCli": "命令行界面", @@ -11380,31 +11380,31 @@ "coverageLabel": "覆盖率", "mcpUrl": "MCP URL", "a2aLink": "A2A", - "mcpPrompt": "将此 MCP 端点添加到您的 agent,为其提供 37 个 OmniRoute 工具。", - "a2aPrompt": "向您的编排器注册此 Agent Card,以启用 A2A 任务委派。", + "mcpPrompt": "将此MCP端点添加到您的智能体,为其提供 37 个OmniRoute工具。", + "a2aPrompt": "向您的编排器注册此智能体Card,以启用A2A任务委派。", "refresh": "刷新", - "copyUrl": "复制 URL", - "viewOnGithub": "在 GitHub 上查看", - "previewLoading": "加载技能文档…", - "previewError": "加载技能文档失败。", - "previewEmpty": "选择一个技能以预览其文档。", - "generateButton": "生成缺失的技能", + "copyUrl": "复制URL", + "viewOnGithub": "在GitHub上查看", + "previewLoading": "加载Skills文档…", + "previewError": "加载Skills文档失败。", + "previewEmpty": "选择一个Skills以预览其文档。", + "generateButton": "生成缺失的Skills", "coverageBar": { "complete": "完成", "partial": "部分" }, - "noSkillsFound": "未找到与您的筛选条件匹配的技能。", - "regenerateConfirm": "这将重新生成所有缺失的 SKILL.md 文件。继续吗?", - "regenerateRunning": "正在重新生成技能…", - "regenerateSuccess": "技能成功重生。", - "regenerateError": "无法重新生成技能。" + "noSkillsFound": "未找到与您的筛选条件匹配的Skills。", + "regenerateConfirm": "这将重新生成所有缺失的SKILL.md文件。继续吗?", + "regenerateRunning": "正在重新生成Skills…", + "regenerateSuccess": "Skills成功重生。", + "regenerateError": "无法重新生成Skills。" }, "freeProviderRankingsPage": { - "title": "免费提供者排名", - "subtitle": "根据 Arena AI 排行榜的模型 ELO 得分排名的最佳免费提供者", + "title": "免费供应商排名", + "subtitle": "根据Arena AI排行榜的模型ELO得分排名的最佳免费供应商", "loading": "正在加载排名...", "errorLoading": "加载排名失败", - "emptyState": "暂无可用排名。Arena ELO 数据在启动时同步(每天)— 请稍后查看,或触发手动同步。在 Feature Flags 中禁用 Arena ELO Sync 或设置 ARENA_ELO_SYNC_ENABLED=false 以选择退出。", + "emptyState": "暂无可用排名。Arena ELO数据在启动时同步(每天)—请稍后查看,或触发手动同步。在Feature Flags中禁用Arena ELO Sync或设置ARENA_ELO_SYNC_ENABLED=false以选择退出。", "bestModel": "最佳", "allCategories": "所有类别", "categoryDefault": "默认", @@ -11413,7 +11413,7 @@ "categoryDocumentation": "文档", "categoryDebugging": "调试", "colRank": "排名", - "colProvider": "提供者", + "colProvider": "供应商", "colTopModel": "顶级模型", "colScore": "得分", "colAvgScore": "平均得分", @@ -11428,17 +11428,17 @@ "colConfigured": "状态", "typeAll": "所有类型", "typeNoauth": "免注册", - "typeOauth": "OAuth 登录", - "typeApikey": "API 密钥", + "typeOauth": "OAuth登录", + "typeApikey": "API Key", "sortTypeFirst": "最简优先", - "sortTypeFirstHelp": "按注册难度分组(免注册 → OAuth 登录 → API 密钥),并在每个组内保持质量排序", - "typeLegend": "免注册 = 零设置 · OAuth 登录 = 使用您自己的账户登录 · API 密钥 = 自备密钥或使用该服务商的免费额度" + "sortTypeFirstHelp": "按注册难度分组(免注册 → OAuth登录 → API Key),并在每个组内保持质量排序", + "typeLegend": "免注册 = 零设置·OAuth登录 = 使用您自己的账户登录·API Key = 自备密钥或使用该服务商的免费额度" }, "discovery": { "title": "服务商探索", "subtitle": "扫描服务商以寻找免费/无限制的访问方式并查看结果。选择性加入,仅限本地。", "scanLabel": "要扫描的服务商", - "scanPlaceholder": "例如 huggingchat", + "scanPlaceholder": "例如huggingchat", "scan": "扫描", "scanning": "正在扫描…", "scanQueued": "{provider} 的扫描已完成。", @@ -11461,8 +11461,8 @@ }, "noAuthProvider": { "title": "无需身份验证", - "description": "此服务商已准备就绪,可立即使用 — 无需注册或 API 密钥。", - "accountDescription": "准备就绪 — 无需注册。添加账号以进行限流轮换。", + "description": "此服务商已准备就绪,可立即使用—无需注册或API Key。", + "accountDescription": "准备就绪—无需注册。添加账号以进行限流轮换。", "addAccount": "添加账号", "accountName": "{provider} 账户 {number}", "accounts": "账户 ({count})", @@ -11474,7 +11474,7 @@ "proxyForAccount": "账户 {number} 的代理", "saved": "已保存", "custom": "自定义", - "noSavedProxies": "没有已保存的代理 — 请在“设置 → 代理”中添加", + "noSavedProxies": "没有已保存的代理—请在“设置 → 代理”中添加", "directConnection": "直连 (无代理)", "host": "主机", "port": "端口", @@ -11487,7 +11487,7 @@ "updateConnectionFailed": "更新连接失败", "fetchProxiesFailed": "获取代理失败", "noSavedProxiesError": "未找到已保存的代理。请先在“设置 → 代理”中添加代理。", - "updateProviderFailed": "更新提供者失败", + "updateProviderFailed": "更新供应商失败", "providerEnabled": "{provider} 已启用", "providerDisabled": "{provider} 已禁用" }, @@ -11496,16 +11496,16 @@ "allTime": "所有时间", "weekly": "每周", "monthly": "每月", - "tokensShared": "已共享 Token" + "tokensShared": "已共享Token" }, "leaderboardLoadFailed": "加载排行榜失败 (HTTP {status})", "scope": "范围", - "tokensShared": "已共享 token", + "tokensShared": "已共享token", "points": "积分", "rank": "排名", "name": "名称", "score": "分数", - "leaderboardEmpty": "此范围暂无记录。开始使用 OmniRoute 以在排行榜上显示!", + "leaderboardEmpty": "此范围暂无记录。开始使用OmniRoute以在排行榜上显示!", "profileLoadFailed": "加载个人资料数据失败", "levelTitles": { "beginner": "新手", @@ -11525,7 +11525,7 @@ "dayStreak": "连续 {count} 天", "levelProgress": "等级 {current} → {next}", "totalXpEarned": "累计获得 {count} XP", - "maintainStreak": "每天坚持使用 OmniRoute 以保持您的连续记录!", + "maintainStreak": "每天坚持使用OmniRoute以保持您的连续记录!", "badgesTitle": "徽章 ({earned}/{total})", "noBadges": "暂无可用徽章。", "hiddenBadge": "隐藏成就", @@ -11548,54 +11548,54 @@ }, "badges": { "first-token": { - "name": "首个 Token", - "description": "完成了您的首次 API 请求", - "criteria": "通过 OmniRoute 完成您的首次 API 请求。" + "name": "首个Token", + "description": "完成了您的首次API请求", + "criteria": "通过OmniRoute完成您的首次API请求。" }, "token-consumer": { - "name": "Token 消费者", - "description": "完成了 1,000 次 API 请求", - "criteria": "通过 OmniRoute 完成 1,000 次 API 请求。" + "name": "Token消费者", + "description": "完成了 1,000 次API请求", + "criteria": "通过OmniRoute完成 1,000 次API请求。" }, "token-machine": { - "name": "Token 机器", - "description": "完成了 10,000 次 API 请求", - "criteria": "通过 OmniRoute 完成 10,000 次 API 请求。" + "name": "Token机器", + "description": "完成了 10,000 次API请求", + "criteria": "通过OmniRoute完成 10,000 次API请求。" }, "token-whale": { - "name": "Token 巨鲸", - "description": "完成了 100,000 次 API 请求", - "criteria": "通过 OmniRoute 完成 100,000 次 API 请求。" + "name": "Token巨鲸", + "description": "完成了 100,000 次API请求", + "criteria": "通过OmniRoute完成 100,000 次API请求。" }, "generous": { "name": "慷慨", - "description": "与他人分享了 1,000 个 Token", - "criteria": "与其他用户累计分享 1,000 个 Token。" + "description": "与他人分享了 1,000 个Token", + "criteria": "与其他用户累计分享 1,000 个Token。" }, "philanthropist": { "name": "慈善家", - "description": "与他人分享了 10,000 个 Token", - "criteria": "与其他用户累计分享 10,000 个 Token。" + "description": "与他人分享了 10,000 个Token", + "criteria": "与其他用户累计分享 10,000 个Token。" }, "token-santa": { - "name": "Token 圣诞老人", - "description": "与他人分享了 100,000 个 Token", - "criteria": "与其他用户累计分享 100,000 个 Token。" + "name": "Token圣诞老人", + "description": "与他人分享了 100,000 个Token", + "criteria": "与其他用户累计分享 100,000 个Token。" }, "community-hero": { "name": "社区英雄", - "description": "与他人分享了 1,000,000 个 Token", - "criteria": "与其他用户累计分享 1,000,000 个 Token。" + "description": "与他人分享了 1,000,000 个Token", + "criteria": "与其他用户累计分享 1,000,000 个Token。" }, "explorer": { "name": "探索者", - "description": "使用了 5 个不同的提供者", - "criteria": "使用至少 5 个不同的 AI 提供者。" + "description": "使用了 5 个不同的供应商", + "criteria": "使用至少 5 个不同的AI供应商。" }, "polyglot": { "name": "多语通", "description": "使用了 10 个不同的模型", - "criteria": "使用至少 10 个不同的 AI 模型。" + "criteria": "使用至少 10 个不同的AI模型。" }, "architect": { "name": "架构师", @@ -11615,22 +11615,22 @@ "daily-user": { "name": "每日用户", "description": "连续 3 天活跃", - "criteria": "连续 3 天使用 OmniRoute。" + "criteria": "连续 3 天使用OmniRoute。" }, "weekly-warrior": { "name": "每周勇士", "description": "连续 7 天活跃", - "criteria": "连续 7 天使用 OmniRoute。" + "criteria": "连续 7 天使用OmniRoute。" }, "monthly-master": { "name": "每月大师", "description": "连续 30 天活跃", - "criteria": "连续 30 天使用 OmniRoute。" + "criteria": "连续 30 天使用OmniRoute。" }, "unstoppable": { "name": "势不可挡", "description": "连续 365 天活跃", - "criteria": "连续 365 天使用 OmniRoute。" + "criteria": "连续 365 天使用OmniRoute。" }, "early-adopter": { "name": "早期采用者", @@ -11638,14 +11638,14 @@ "criteria": "在游戏化推出后的首月内加入。" }, "bug-hunter": { - "name": "Bug 猎手", + "name": "Bug猎手", "description": "报告了 5 个问题", "criteria": "报告 5 个有效问题。" }, "contributor": { "name": "贡献者", "description": "合并了 1 个拉取请求", - "criteria": "将 1 个拉取请求合并到 OmniRoute 中。" + "criteria": "将 1 个拉取请求合并到OmniRoute中。" }, "community-leader": { "name": "社区领袖", @@ -11653,7 +11653,7 @@ "criteria": "在任意排行榜中进入前 10 名。" }, "secret-badge": { - "name": "???", + "name": "???", "description": "一个隐藏成就等待解锁...", "criteria": "完成隐藏成就以揭晓此徽章。" } @@ -11686,16 +11686,16 @@ "updateFailedHttp": "更新标志失败:HTTP {status}", "updateFailed": "更新标志失败", "restartFailedHttp": "重启失败:HTTP {status}", - "restartFailed": "Restart failed", + "restartFailed": "重启失败", "resetOverridesFailedHttp": "Failed to reset overrides: HTTP {status}", - "resetOverridesFailed": "Failed to reset overrides", + "resetOverridesFailed": "重置覆盖失败", "restartRequiredCount": "{count, plural, one {# 个更改需要} other {# 个更改需要}}重启服务器才能生效。", - "restartRequiredDescription": "这些标志仅在进程重新加载后生效。立即重启或继续编辑 — 待处理的标志将保持排队状态,直到您确认。", - "restartServer": "Restart Server", + "restartRequiredDescription": "这些标志仅在进程重新加载后生效。立即重启或继续编辑—待处理的标志将保持排队状态,直到您确认。", + "restartServer": "重启服务器", "cancel": "取消", "restarting": "正在重启…", "confirmRestart": "确认重启", - "restartViewDescription": "这些标志仅在服务器重启后生效。像切换其他标志一样切换它们 — 更改会立即持久化,但新值仅在进程启动时读取。使用上方的 重启服务器 横幅来应用。", + "restartViewDescription": "这些标志仅在服务器重启后生效。像切换其他标志一样切换它们—更改会立即持久化,但新值仅在进程启动时读取。使用上方的 重启服务器 横幅来应用。", "retry": "重试", "noSearchResults": "没有匹配您搜索的标志", "resetAllOverrides": "重置所有覆盖", @@ -11714,7 +11714,7 @@ }, "definitions": { "REQUIRE_API_KEY": { - "description": "所有传入请求都需要 API 密钥。" + "description": "所有传入请求都需要API Key。" }, "INPUT_SANITIZER_ENABLED": { "description": "为所有请求启用输入净化。" @@ -11729,40 +11729,40 @@ "description": "对服务商响应中的个人身份信息 (PII) 进行净化。" }, "PII_RESPONSE_SANITIZATION_MODE": { - "description": "选择如何处理响应中的 PII:redact 将其替换,warn 仅记录日志,block 拒绝响应,off 禁用净化。" + "description": "选择如何处理响应中的PII:redact将其替换,warn仅记录日志,block拒绝响应,off禁用净化。" }, "OUTBOUND_SSRF_GUARD_ENABLED": { - "description": "拦截发往私有或内部 IP 地址段的传出请求。" + "description": "拦截发往私有或内部IP地址段的传出请求。" }, "ALLOW_API_KEY_REVEAL": { - "description": "允许已认证的仪表板用户显示存储的 API 密钥,而不是仅看到掩码值。" + "description": "允许已认证的看板用户显示存储的API Key,而不是仅看到掩码值。" }, "ENABLE_TLS_FINGERPRINT": { - "description": "启用 TLS 指纹隐身模式。" + "description": "启用TLS指纹隐身模式。" }, "ONEPROXY_ENABLED": { - "description": "启用通过 1proxy 的请求代理。" + "description": "启用通过 1proxy的请求代理。" }, "PROXY_AUTO_SELECT_ENABLED": { "description": "当连接未分配代理时,自动选择第一个可用的注册表代理。默认关闭,否则一个注册表代理会成为所有流量的全局备用代理 (#3332)。" }, "OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK": { - "description": "当代理可达性检查失败时,允许 OAuth 和服务商验证流程绕过固定的代理。默认关闭,因为这可能会改变账户的出口 IP。" + "description": "当代理可达性检查失败时,允许OAuth和服务商验证流程绕过固定的代理。默认关闭,因为这可能会改变账户的出口IP。" }, "MITM_DISABLE_TLS_VERIFY": { - "description": "禁用 MITM 代理的 TLS 证书验证。" + "description": "禁用MITM代理的TLS证书验证。" }, "OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS": { - "description": "允许指向私有或内部网络的服务商 URL。" + "description": "允许指向私有或内部网络的服务商URL。" }, "OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS": { - "description": "允许 localhost、局域网 (LAN) 和私有 IP 地址段上的服务商。本地兼容 OpenAI 的模型需要此设置,且默认启用。云元数据端点(如 169.254.169.254)仍将被拦截。" + "description": "允许localhost、局域网 (LAN) 和私有IP地址段上的服务商。本地兼容OpenAI的模型需要此设置,且默认启用。云元数据端点(如 169.254.169.254)仍将被拦截。" }, "ENABLE_CC_COMPATIBLE_PROVIDER": { - "description": "启用兼容 Claude Code 的服务商模式。" + "description": "启用兼容Claude Code的服务商模式。" }, "TOOL_POLICY_MODE": { - "description": "Set the tool-use policy enforcement mode." + "description": "设置工具使用策略执行模式。" }, "RATE_LIMIT_AUTO_ENABLE": { "description": "根据使用模式自动启用速率限制。" @@ -11771,13 +11771,13 @@ "description": "允许每个兼容性节点有多个连接。" }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { - "description": "在将 Responses API 透传流转发给客户端之前,从中移除内部注释阶段的输出项。禁用此标志以接收原始上游注释。" + "description": "在将Responses API透传流转发给客户端之前,从中移除内部注释阶段的输出项。禁用此标志以接收原始上游注释。" }, "OMNIROUTE_MCP_ENFORCE_SCOPES": { - "description": "对 MCP 工具访问强制执行作用域限制。" + "description": "对MCP工具访问强制执行作用域限制。" }, "OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS": { - "description": "压缩 MCP 工具描述以减少 token 使用量。" + "description": "压缩MCP工具描述以减少token使用量。" }, "OMNIROUTE_ENABLE_RUNTIME_BACKGROUND_TASKS": { "description": "在运行时启用后台任务处理。" @@ -11786,55 +11786,55 @@ "description": "禁用所有后台服务,包括配额刷新和同步。" }, "OMNIROUTE_RTK_TRUST_PROJECT_FILTERS": { - "description": "信任项目级 RTK 过滤器而无需验证。" + "description": "信任项目级RTK过滤器而无需验证。" }, "OMNIROUTE_ENABLE_LIVE_WS": { - "description": "导入时在环回端口 20132 上启动实时仪表板 WebSocket 服务器。将该标志设置为 0 或 false 可禁用它。局域网暴露还需要 LIVE_WS_HOST=0.0.0.0 和 LIVE_WS_ALLOWED_ORIGINS。" + "description": "导入时在环回端口 20132 上启动实时看板WebSocket服务器。将该标志设置为 0 或false可禁用它。局域网暴露还需要LIVE_WS_HOST=0.0.0.0 和LIVE_WS_ALLOWED_ORIGINS。" }, "OMNIROUTE_CODEX_WS_ENABLED": { - "description": "允许 Codex 通过 WebSocket 使用 Responses。禁用时,Codex 将回退到 HTTP Responses。" + "description": "允许Codex通过WebSocket使用Responses。禁用时,Codex将回退到HTTP Responses。" }, "OMNIROUTE_EMERGENCY_FALLBACK": { - "description": "将预算耗尽的请求路由到紧急免费备用提供者和模型。" + "description": "将预算耗尽的请求路由到紧急免费备用供应商和模型。" }, "STREAM_RECOVERY_ENABLED": { - "description": "在任何响应字节到达客户端之前,透明地重试被截断的上游 SSE 流。" + "description": "在任何响应字节到达客户端之前,透明地重试被截断的上游SSE流。" }, "STREAM_RECOVERY_MIDSTREAM_ENABLED": { "description": "允许流恢复在字节已到达客户端后重新请求响应并进行拼接。" }, "MODEL_CATALOG_INCLUDE_NAMES": { - "description": "在 /v1/models 响应中包含易于显示的名称字段。对于仅接受模型 ID 的客户端,请禁用此项。" + "description": "在 /v1/models响应中包含易于显示的名称字段。对于仅接受模型ID的客户端,请禁用此项。" }, "MODELS_CATALOG_PREFIX_MODE": { - "description": "控制 /v1/models 中的模型 ID 前缀:dual 发送别名和规范前缀,alias 仅发送短前缀,canonical 仅发送完整提供者 ID。" + "description": "控制 /v1/models中的模型ID前缀:dual发送别名和规范前缀,alias仅发送短前缀,canonical仅发送完整供应商ID。" }, "ARENA_ELO_SYNC_ENABLED": { - "description": "定期同步 Arena AI 排行榜 ELO 数据以进行模型智能排名。" + "description": "定期同步Arena AI排行榜ELO数据以进行模型智能排名。" }, "CLI_COMPAT_ALL": { - "description": "为所有 CLI 客户端启用兼容模式。" + "description": "为所有CLI客户端启用兼容模式。" }, "MODEL_ALIAS_COMPAT_ENABLED": { "description": "启用模型别名兼容层。" }, "PRICING_SYNC_ENABLED": { - "description": "自动同步定价数据。PRICING_SYNC_ENABLED 环境变量也必须为 true。" + "description": "自动同步定价数据。PRICING_SYNC_ENABLED环境变量也必须为true。" }, "OMNIROUTE_AUTO_SYNC_CODEX_PROFILES": { - "description": "提供者-模型同步后,从实时目录重新生成 ~/.codex/*.config.toml 配置文件。这绝不会更改活动或默认的 Codex 配置,并且默认关闭。" + "description": "供应商-模型同步后,从实时目录重新生成 ~/.codex/*.config.toml配置文件。这绝不会更改活动或默认的Codex配置,并且默认关闭。" }, "OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES": { - "description": "提供者-模型同步后,从实时目录重新生成 ~/.claude/profiles//settings.json 配置文件。这绝不会更改活动或默认的 Claude 配置,并且默认关闭。" + "description": "供应商-模型同步后,从实时目录重新生成 ~/.claude/profiles//settings.json配置文件。这绝不会更改活动或默认的Claude配置,并且默认关闭。" }, "OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK": { "description": "禁用本地实例健康检查端点。" }, "OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK": { - "description": "禁用 token 验证健康检查。" + "description": "禁用token验证健康检查。" }, "SKILLS_SANDBOX_NETWORK_ENABLED": { - "description": "在技能沙箱中启用网络访问。" + "description": "在Skills沙箱中启用网络访问。" } }, "ccDiscoveryAliasesEnvWarning": "__MISSING__:Active via environment variable (EXPOSE_CC_DISCOVERY_ALIASES) — this overrides any dashboard toggle below." @@ -11863,13 +11863,13 @@ "runtimeHealthBlend": "运行时/健康度融合", "averageResponseTime": "平均响应时间", "worstQuota": "最差配额", - "providerAccountTelemetry": "提供者/账户遥测", + "providerAccountTelemetry": "供应商/账户遥测", "overview": "概览", "overviewDescription": "此组合的策略、运行时状态和控制链接。", "strategy": "策略", "targets": "目标", - "providers": "提供者", - "targetCounts": "{configured} 已配置 · {resolved} 已解析", + "providers": "供应商", + "targetCounts": "{configured} 已配置· {resolved} 已解析", "healthReasons": "健康状况原因", "healthReason": { "noRecentTraffic": "近期无组合流量", @@ -11912,18 +11912,18 @@ "stepShort": "步骤 {id}", "dynamic": "动态", "unknown": "未知", - "unknownProvider": "未知提供者", + "unknownProvider": "未知供应商", "unknownModel": "未知模型", - "resolvedTargetMetrics": "{requests} 请求 · {success} 成功 · {latency} · 配额 {quota}" + "resolvedTargetMetrics": "{requests} 请求· {success} 成功· {latency} ·配额 {quota}" }, "usageLimits": { "usdUsageQuota": "美元使用配额", - "usdUsageQuotaDescription": "在此密钥的本地美元支出达到配置的每日或每周配额后,将阻止该密钥并返回 400 API 错误。", + "usdUsageQuotaDescription": "在此密钥的本地美元支出达到配置的每日或每周配额后,将阻止该密钥并返回 400 API错误。", "dailyQuotaUsd": "每日配额 (USD)", "weeklyQuotaUsd": "每周配额 (USD)", - "quotaWindowDescription": "每周配额在可用时遵循缓存的 Claude 每周重置规则;否则将回退到滚动 7 天窗口。每日配额使用福塔莱萨 (Fortaleza) 日历日。", - "apiKeyUsdQuota": "API 密钥美元配额", - "apiKeyUsdQuotaDescription": "启用后,@@om-usage 将返回以美元为单位的每日配额、每周配额、每日支出和每周支出。每周配额在可用时遵循缓存的 Claude 重置规则。", + "quotaWindowDescription": "每周配额在可用时遵循缓存的Claude每周重置规则;否则将回退到滚动 7 天窗口。每日配额使用福塔莱萨 (Fortaleza) 日历日。", + "apiKeyUsdQuota": "API Key美元配额", + "apiKeyUsdQuotaDescription": "启用后,@@om-usage将返回以美元为单位的每日配额、每周配额、每日支出和每周支出。每周配额在可用时遵循缓存的Claude重置规则。", "enabled": "已启用", "disabled": "已禁用", "dailySpend": "每日支出", @@ -11941,7 +11941,7 @@ "loadUsdCostsFailed": "加载美元费用失败", "usdCost": "美元费用", "close": "关闭", - "loadingUsdCosts": "正在加载 USD 费用", + "loadingUsdCosts": "正在加载USD费用", "used": "已用", "quotaUsed": "已用配额", "estimatedFullQuota": "预估 100%", @@ -11952,27 +11952,27 @@ "fromObservedReset": "自观察到的 {quota} 重置起", "fromReset": "自 {quota} 重置起", "quotaEstimator": "配额估算器", - "noApiKeyUsage": "在此提供者窗口期内无 API 密钥使用记录。", - "requestTokenCounts": "{requests} 次请求 · {tokens} 个 token", - "noUsdLimit": "无 USD 限制" + "noApiKeyUsage": "在此供应商窗口期内无API Key使用记录。", + "requestTokenCounts": "{requests} 次请求· {tokens} 个token", + "noUsdLimit": "无USD限制" }, "freeBudget": { - "title": "免费 Token 预算", - "remaining": "剩余 {remaining} · 占 {total} 的 {percent}%", + "title": "免费Token预算", + "remaining": "剩余 {remaining} ·占 {total} 的 {percent}%", "steadyMonth": "稳定 / 月", "firstMonth": "首月 (+ 额度)", "usedThisMonth": "本月已用", - "segmentHint": "每个分段 = 一个免费池 · 池去重,真实统计(无虚高的速率限制上限)。", - "boost": "一次性充值 $10 OpenRouter 即可每月多解锁约 ~{tokens}(50 → 1000 次请求/天)", - "uncapped": "永久免费,无公开上限(受速率限制)— 实际可用,未计入总览:", - "tosRestricted": "{count, plural, one {# 个模型} other {# 个模型}}被标记为受 ToS 限制 — 由您决定", - "provider": "提供者", + "segmentHint": "每个分段 = 一个免费池·池去重,真实统计(无虚高的速率限制上限)。", + "boost": "一次性充值 $10 OpenRouter即可每月多解锁约 ~{tokens}(50 → 1000 次请求/天)", + "uncapped": "永久免费,无公开上限(受速率限制)—实际可用,未计入总览:", + "tosRestricted": "{count, plural, one {# 个模型} other {# 个模型}}被标记为受ToS限制—由您决定", + "provider": "供应商", "model": "模型", "modelName": "模型名称", "type": "类型", "tokensMonth": "Token/月", "credit": "{tokens} 额度", - "hideTosRestricted": "隐藏受 ToS 限制项", + "hideTosRestricted": "隐藏受ToS限制项", "sort": "排序", "freeType": { "daily": "每日", @@ -11984,14 +11984,14 @@ "discontinued": "已停用" }, "tosTitle": { - "avoid": "受 ToS 限制 — 请查看条款", - "caution": "注意 — 个人使用 / 代理条款", + "avoid": "受ToS限制—请查看条款", + "caution": "注意—个人使用 / 代理条款", "ok": "总体宽松" } }, "providerHealthAutopilot": { - "title": "提供者健康自动巡航", - "description": "查找不稳定的提供者、账户冷却、陈旧错误以及安全的手动修复方案。", + "title": "供应商健康自动巡航", + "description": "查找不稳定的供应商、账户冷却、陈旧错误以及安全的手动修复方案。", "loadFailed": "加载自动巡航报告失败", "actionApplied": "已应用 {action}。", "actionFailed": "自动巡航操作失败", @@ -12006,9 +12006,9 @@ "critical": "严重", "loading": "加载中" }, - "loadingRecommendations": "正在加载提供者建议...", - "noRecommendations": "目前没有提供者健康建议。", - "providerMetrics": "评分 {score}% · 活跃 {active}/{total} · 冷却 {cooldown} · 模型锁定 {lockouts}", + "loadingRecommendations": "正在加载供应商建议...", + "noRecommendations": "目前没有供应商健康建议。", + "providerMetrics": "评分 {score}% ·活跃 {active}/{total} ·冷却 {cooldown} ·模型锁定 {lockouts}", "providerState": { "healthy": "健康", "degraded": "降级", @@ -12023,25 +12023,25 @@ "errorCode": "代码 {code}", "applying": "正在应用...", "issue": { - "circuitOpenTitle": "提供者熔断器已开启", - "circuitOpenRecommendation": "验证上游恢复情况,然后重置提供者熔断器或等待重试窗口。", - "circuitRecoveryTitle": "提供者正在探测恢复情况", + "circuitOpenTitle": "供应商熔断器已开启", + "circuitOpenRecommendation": "验证上游恢复情况,然后重置供应商熔断器或等待重试窗口。", + "circuitRecoveryTitle": "供应商正在探测恢复情况", "circuitRecoveryRecommendation": "等待下一次探测完成,或在手动验证后重置熔断器。", "terminalTitle": "{label} 处于终止账户状态", - "terminalRecommendation": "在重新激活之前,请检查账单、重新进行身份验证或更换凭据。", + "terminalRecommendation": "在重新激活之前,请检查账单、重新身份验证或更换凭据。", "cooldownTitle": "{label} 处于临时冷却状态", "cooldownRecommendation": "等待上游重试窗口,或在验证恢复后清除冷却状态。", "staleErrorTitle": "{label} 存在陈旧的错误状态", "staleErrorRecommendation": "清除陈旧的错误字段,以便该连接重新符合正常路由条件。", "inactiveTitle": "{label} 已禁用", "inactiveRecommendation": "仅在此项并非故意禁用的情况下重新激活。", - "modelLockoutTitle": "{model} 在一个连接中被锁定", + "modelLockoutTitle": "{model} 在一个连接中已锁定", "modelLockoutRecommendation": "在清除锁定之前,请解决连接状态问题或确认模型配额/可用性已恢复。", "quotaTitle": "配额监控器报告 {status}", "quotaRecommendation": "检查配额使用情况,并在需要时将流量轮换到另一个正常的连接。" }, "action": { - "resetProviderBreaker": "重置提供者熔断器", + "resetProviderBreaker": "重置供应商熔断器", "clearConnectionCooldown": "清除连接冷却时间", "disableConnection": "禁用此连接", "clearStaleError": "清除过期的错误状态", @@ -12058,130 +12058,130 @@ "learnMore": "了解更多", "changelogLoadFailed": "无法加载更新日志。请稍后重试。", "retry": "重试", - "viewFullHistory": "在 GitHub 上查看完整历史记录" + "viewFullHistory": "在GitHub上查看完整历史记录" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", + "title": "推理路由策略", + "apiKeyTitle": "此API Key的推理路由", + "subtitle": "重新路由模型和推理力度,无需客户端支持。无规则匹配时请求保持不变。", + "loadError": "无法加载推理规则。", + "saveError": "规则无效或无法保存。", + "saved": "推理规则已保存。", + "deleteConfirm": "删除此推理规则?", + "deleteError": "无法删除推理规则。", + "empty": "未配置匹配的推理规则。", + "all": "全部", + "any": "任意", + "enabled": "已启用", + "disabled": "已禁用", + "filterSearch": "搜索规则", + "filterScope": "按范围筛选", + "filterStatus": "按状态筛选", + "allModels": "全部模型", + "keepModel": "保留模型", + "otherModel": "其他模型", + "combo": "组合", "priorityShort": "priority {value}", "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", + "edit": "编辑", + "delete": "删除", + "name": "名称", + "description": "描述", + "scopeLabel": "范围", + "apiKey": "API Key", + "sourceCombo": "源组合", + "connection": "连接", + "sourceModel": "源模型或通配符", + "sourceModelOptional": "空 = 全部模型", + "sourceModelExample": "例如gpt-5*", + "sourceEffort": "源力度", + "missing": "未指定", + "signalOnly": "非离散推理信号", + "requestTags": "请求标签", "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", - "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "tagMode": "标签匹配模式", + "effortMode": "力度模式", + "targetEffort": "目标力度", + "routingTarget": "路由目标", + "targetModel": "目标模型", + "targetCombo": "目标组合", + "budgetAction": "思考预算", + "budgetTokens": "预算Token", + "priority": "优先级", + "saveChanges": "保存更改", + "add": "添加规则", + "cancel": "取消", + "simulateTitle": "模拟规则", + "model": "模型", + "effort": "力度", + "transport": "传输方式", + "simulate": "无上游模拟", + "extendedComboWarning": "Max/Ultra在路由期间会针对每个组合目标单独验证。", + "extendedUnknownWarning": "输入目标模型以验证Max/Ultra支持。", + "extendedUnsupportedWarning": "Max/Ultra仅已知受特定Codex GPT-5.6 模型支持。未知自定义模型会被服务器接受但附带警告。", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", - "model": "Model", - "connection": "Connection" + "global": "全局", + "apiKey": "API Key", + "combo": "组合", + "model": "模型", + "connection": "连接" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "继承客户端", + "default": "使用默认值", + "force": "强制" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "保留", + "remove": "移除", + "set": "设置固定值" } }, "chaosConfig": { "pageTitle": "混沌模式", - "pageSubtitle": "在同一任务上并行或协作运行多个 AI 模型", + "pageSubtitle": "在同一任务上并行或协作运行多个AI模型", "enableChaos": "启用混沌模式", - "enableChaosDesc": "允许启用了混沌模式的 API 密钥使用此功能", + "enableChaosDesc": "允许启用了混沌模式的API Key使用此功能", "mode": "默认模式", "modeParallel": "并行", "modeCollaborative": "协作", - "modeParallelDesc": "所有模型同时运行 — 结果最快", - "modeCollaborativeDesc": "模型链式输出 — 每个模型都能看到前一个模型的结果", + "modeParallelDesc": "所有模型同时运行—结果最快", + "modeCollaborativeDesc": "模型链式输出—每个模型都能看到前一个模型的结果", "timeout": "超时 (ms)", "timeoutDesc": "每次模型调用的最长时间 (5000-600000ms)", "systemPrompt": "系统提示词 (可选)", "systemPromptDesc": "适用于所有混沌模式模型实例的自定义指令", - "providerOverrides": "提供者覆盖", - "providerOverridesDesc": "为混沌模式按提供者选择特定模型", - "providerId": "提供者", + "providerOverrides": "供应商覆盖", + "providerOverridesDesc": "为混沌模式按供应商选择特定模型", + "providerId": "供应商", "modelId": "模型", - "addProvider": "添加提供者", + "addProvider": "添加供应商", "removeProvider": "移除", "saveConfig": "保存配置", "configSaved": "混沌配置保存成功", "configError": "保存混沌配置失败", "configReset": "重置为默认值", "keyPermission": "混沌模式访问权限", - "keyPermissionDesc": "允许此 API 密钥使用混沌模式(多模型并行执行)", + "keyPermissionDesc": "允许此API Key使用混沌模式(多模型并行执行)", "testButton": "测试混沌模式", "testTask": "写一首关于人工智能的短诗", - "loadingProviderModels": "正在加载提供者...", + "loadingProviderModels": "正在加载供应商...", "systemPromptPlaceholder": "可选:覆盖默认的混沌模式系统提示词...", "enabled": "已启用", "disabled": "已禁用", - "maxTokens": "最大 Token 数", - "maxTokensDesc": "每个模型响应的最大 Token 数。数值越高,成本越高且耗时越长。", - "providerIdPlaceholder": "提供者 ID(输入或选择)", - "modelIdPlaceholder": "模型 ID(可选)", + "maxTokens": "最大Token数", + "maxTokensDesc": "每个模型响应的最大Token数。数值越高,成本越高且耗时越长。", + "providerIdPlaceholder": "供应商ID(输入或选择)", + "modelIdPlaceholder": "模型ID(可选)", "on": "开启", "off": "关闭", - "availableProviders": "可用提供者 ({count})", - "noProviderOverrides": "无覆盖 — 所有活跃提供者都将使用其默认模型参与" + "availableProviders": "可用供应商 ({count})", + "noProviderOverrides": "无覆盖—所有活跃供应商都将使用其默认模型参与" }, "kimiSponsorBanner": { - "title": "Kimi(Moonshot AI)是 OmniRoute 的创始开源好友", - "description": "Kimi K3 为 OmniRoute 带来了 1M token 的上下文窗口和前沿的编码性能,而成本仅为极小一部分。", - "cta": "获取 Kimi Code", + "title": "Kimi(Moonshot AI)是OmniRoute的创始开源好友", + "description": "Kimi K3 为OmniRoute带来了 1M token的上下文窗口和前沿的编码性能,而成本仅为极小一部分。", + "cta": "获取Kimi Code", "partnerLinkNote": "合作伙伴链接", "dismissAriaLabel": "关闭" }, diff --git a/src/i18n/messages/zh-TW.json b/src/i18n/messages/zh-TW.json index 48ad97e51c..4691dabfe7 100644 --- a/src/i18n/messages/zh-TW.json +++ b/src/i18n/messages/zh-TW.json @@ -1,20 +1,20 @@ { "common": { - "save": "儲存", + "save": "保存", "cancel": "取消", "delete": "刪除", "loading": "正在載入...", - "selectOption": "選取一個選項", + "selectOption": "選擇一個選項", "error": "發生錯誤", "success": "成功", "confirm": "你確定嗎?", - "refresh": "重新整理", + "refresh": "刷新", "close": "關閉", "previousPage": "上一頁", "nextPage": "下一頁", - "capsLockOn": "Caps Lock 已開啟", - "dismissNotification": "關閉通知", - "toggleColumns": "切換欄位", + "capsLockOn": "大寫鎖定已開啟", + "dismissNotification": "忽略通知", + "toggleColumns": "切換列", "confirmTitle": "確認", "confirmAction": "確認", "add": "新增", @@ -27,7 +27,7 @@ "copy": "複製", "copied": "已複製!", "enabled": "啟用", - "disabled": "已停用", + "disabled": "已禁用", "active": "啟用中", "inactive": "未啟用", "noData": "無可用資料", @@ -42,21 +42,21 @@ "model": "模型", "models": "模型", "provider": "提供者", - "unknownProvider": "未知的提供者", - "account": "帳戶", + "unknownProvider": "未知提供者", + "account": "賬戶", "time": "時間", "details": "詳情", - "created": "已建立", - "lastUsed": "最近重新整理", + "created": "已創建", + "lastUsed": "最近刷新", "loadMore": "載入更多", "noResults": "沒有找到結果", "reloadPage": "重新載入頁面", - "connected": "已連線", - "disconnected": "已斷開連線", + "connected": "已連接", + "disconnected": "已斷開連接", "notConfigured": "未設定", - "testConnection": "測試連線", + "testConnection": "測試連接", "enable": "啟用", - "disable": "停用", + "disable": "禁用", "columns": "列", "newest": "最新", "oldest": "最早", @@ -71,13 +71,13 @@ "free": "免費", "skipToContent": "跳至內容", "maintenanceServerIssues": "伺服器當前存在異常,部分功能可能暫時不可用。", - "maintenanceServerUnreachable": "伺服器暫時無法連線,正在重新連線...", + "maintenanceServerUnreachable": "伺服器暫時無法連接,正在重新連接...", "accept": "接受", - "accountId": "帳戶 ID", + "accountId": "賬戶ID", "alias": "別名", - "apiKeyId": "API 金鑰 ID", - "apiKeyName": "API 金鑰名稱", - "apiKeySecret": "API 金鑰密文", + "apiKeyId": "API Key ID", + "apiKeyName": "API Key名稱", + "apiKeySecret": "API Key密文", "authorization": "授權", "content-type": "內容類型", "content-length": "內容長度", @@ -85,24 +85,24 @@ "file": "檔案", "host": "主機", "id": "ID", - "import": "匯入", + "import": "導入", "limit": "限制", "offset": "偏移量", - "open": "開啟", + "open": "打開", "origin": "來源", - "promptTokens": "輸入 Tokens", - "completionTokens": "輸出 Tokens", - "totalTokens": "總 Tokens", + "promptTokens": "輸入Tokens", + "completionTokens": "輸出Tokens", + "totalTokens": "總Tokens", "rawModel": "原始模型", "scope": "作用域", - "skill": "技能", + "skill": "Skill", "sortBy": "排序依據", "sortOrder": "排序順序", "tab": "標籤頁", "text": "文本", "textarea": "文本域", "tool": "工具", - "toolId": "工具 ID", + "toolId": "工具ID", "web": "網頁", "whereUsed": "使用位置", "whitelist": "白名單", @@ -110,48 +110,48 @@ "resolve": "解析", "force": "強制", "base64url": "Base64 URL", - "hex": "十六進位制", + "hex": "十六進制", "range": "範圍", - "component": "元件", - "redirect_uri": "重定向 URI", + "component": "組件", + "redirect_uri": "重定向URI", "idempotency-key": "冪等鍵", "error_description": "錯誤描述", - "code": "程式碼", + "code": "代碼", "compatible": "相容", "chat-completions": "對話補全", "oauth": "OAuth", - "auth_token": "認證權杖", + "auth_token": "認證令牌", "crypto": "加密", "hours": "小時", "selfsigned": "自簽名", - "proxy_id": "代理 ID", - "proxyId": "代理 ID", - "connectionId": "連線 ID", - "resolveConnectionId": "解析連線 ID", - "resolve_connection_id": "解析連線 ID", - "scope_id": "作用域 ID", - "scopeId": "作用域 ID", - "jwtSecret": "JWT 金鑰", - "keytar": "keytar", + "proxy_id": "代理ID", + "proxyId": "代理ID", + "connectionId": "連接ID", + "resolveConnectionId": "解析連接ID", + "resolve_connection_id": "解析連接ID", + "scope_id": "作用域ID", + "scopeId": "作用域ID", + "jwtSecret": "JWT金鑰", + "keytar": "Keytar", "better-sqlite3": "better-sqlite3", "undici": "undici", - "builder-id": "構建器 ID", - "musicDesc": "音樂描述", + "builder-id": "構建器ID", + "musicDesc": "音樂", "musicGeneration": "音樂生成", "idc": "IDC", "cloud-status-changed": "雲狀態已變更", "where_used": "使用位置", - "windowMs": "時間視窗(ms)", + "windowMs": "時間窗口(ms)", "social-github": "GitHub", "social-google": "Google", "TOOL_ALLOWLIST": "工具允許列表", "TOOL_DENYLIST": "工具拒絕列表", - "Failed to save pricing": "儲存定價失敗", + "Failed to save pricing": "保存定價失敗", "Failed to reset pricing": "重置定價失敗", - "apikey": "API 金鑰", + "apikey": "API Key", "http": "HTTP", - "goToDashboard": "前往儀表板", - "checkSystemStatus": "檢視系統狀態", + "goToDashboard": "前往看板", + "checkSystemStatus": "查看系統狀態", "selectModel": "選擇模型", "addModel": "新增模型", "effortNone": "無", @@ -159,13 +159,13 @@ "effortMedium": "中", "effortHigh": "高", "effortExtraHigh": "極高", - "effortMax": "最大", + "effortMax": "最高", "effortUltra": "極致", - "reasoningEffort": "推理程度", + "reasoningEffort": "推理力度", "wireApi": "Wire API", "modelAliases": "模型別名", "combos": "組合", - "noModelsFound": "未找到 Model", + "noModelsFound": "未找到模型", "clear": "清除", "done": "完成", "selectAll": "全選", @@ -173,44 +173,44 @@ "visibleModels": "可見", "selectAllConfirm": "要將 {count} 個模型加入此組合嗎?", "errorOccurred": "錯誤發生", - "comboDeleted": "Combo 已刪除", + "comboDeleted": "Combo已刪除", "hide": "隱藏", - "creating": "正在建立", - "comboCreated": "Combo 已建立", + "creating": "正在創建", + "comboCreated": "Combo已創建", "swapFormats": "交換格式", "daysAgo": "天前", "retries": "重試次數", "errorDuringRestore": "錯誤期間恢復", - "eventsAppearHint": "事件顯示提示", + "eventsAppearHint": "事件顯示說明", "noLockouts": "無鎖定", - "webSearchDesc": "Web Search 功能說明", - "audioProvidersHeading": "音訊 Provider", - "cloudAgentProviders": "雲代理提供者", + "webSearchDesc": "Web Search功能說明", + "audioProvidersHeading": "音頻提供者", + "cloudAgentProviders": "雲智能體提供者", "minutesAgo": "分鐘前", "a": "A", - "liveAutoRefreshing": "即時自動重新整理中", + "liveAutoRefreshing": "實時自動刷新中", "webSearch": "網頁搜尋", - "anthropicPrefixPlaceholder": "Anthropic 字首", + "anthropicPrefixPlaceholder": "Anthropic前綴", "addModelToCombo": "新增模型到組合", "failedToLoad": "載入失敗", "categoryMedia": "類別媒體", "enableCloud": "啟用雲端", - "expirationBannerExpiringSoon": "過期橫幅即將過期即將", + "expirationBannerExpiringSoon": "憑據即將過期", "retry": "重試", "embeddings": "嵌入", "errorCount": "錯誤數量", - "backupReasonManual": "備份原因手動", + "backupReasonManual": "手動備份", "safeSearchModerate": "安全搜尋中等", "activeLimiters": "活躍限制器", "a2aCardTitle": "A2A", - "cloudWorkerUnreachable": "Cloud Worker 不可達", + "cloudWorkerUnreachable": "無法連接Cloud Worker", "testFailed": "測試失敗", - "compatibleBaseUrlHint": "填寫相容 API 的 Base URL。", + "compatibleBaseUrlHint": "填寫相容API的Base URL。", "usageTracking": "使用量跟蹤", - "disableCloudTitle": "停用雲端", - "noConnections": "無連線", + "disableCloudTitle": "禁用雲端", + "noConnections": "無連接", "providerHealth": "提供者健康狀態", - "confirmDbImport": "確認DB匯入", + "confirmDbImport": "確認DB導入", "notAvailableSymbol": "—", "backupsAvailable": "可用備份", "providerAuto": "自動提供者", @@ -218,194 +218,194 @@ "a2aQuickStartStep2": "A2A快速開始步驟2", "ok": "確定", "available": "可用", - "noBackupYet": "無備份暫無", + "noBackupYet": "暫無備份", "more": "更多", - "noCompatibleYet": "無相容暫無", + "noCompatibleYet": "暫無相容", "multiProvider": "多提供者", - "repairEnvHint": "修復環境提示", - "disablingCloud": "正在停用 Cloud", + "repairEnvHint": "修復環境說明", + "disablingCloud": "正在禁用雲端", "testBench": "測試臺", "valid": "有效", - "cloudBenefitShare": "共享 Cloud 訪問能力", + "cloudBenefitShare": "共享Cloud訪問能力", "mcpCardTitle": "MCP", - "disableConfirm": "確認停用?", + "disableConfirm": "確認禁用?", "filters": "篩選器", - "expirationBannerExpiredDesc": "過期橫幅已過期說明", - "saveComboDefaults": "儲存組合預設值", - "cloudConnectedVerified": "Cloud 連線已驗證", - "uptime": "執行時間", + "expirationBannerExpiredDesc": "憑據已過期說明", + "saveComboDefaults": "保存組合預設值", + "cloudConnectedVerified": "雲端連接已驗證", + "uptime": "運行時間", "compatibleProdPlaceholder": "相容生產佔位符", "fallbackChainsTitle": "後備鏈", - "oauthLabel": "OAuth 標籤", - "a2aCardDescription": "通過 A2A 協議連線 Agent 工作流。", - "okShort": "確定短標籤", + "oauthLabel": "OAuth", + "a2aCardDescription": "通過A2A協議連接Agent工作流。", + "okShort": "確定", "maintenance": "維護", "formatConverter": "格式轉換器", - "zedImportNetworkError": "Zed 匯入網路錯誤", - "apiKeyLabel": "API key 標籤", + "zedImportNetworkError": "Zed導入網路錯誤", + "apiKeyLabel": "API Key", "noModelsForProvider": "此提供者沒有可用模型", - "mcpCardDescription": "通過 MCP 工具連線 Agent 和自動化流程。", - "apiTypeLabel": "API 類型標籤", - "configuredProvidersLabel": "已設定 Provider 標籤", - "maxRetriesLabel": "最大重試次數標籤", + "mcpCardDescription": "通過MCP工具連接Agent和自動化流程。", + "apiTypeLabel": "API類型", + "configuredProvidersLabel": "已設定提供者標籤", + "maxRetriesLabel": "最大重試次數", "title": "標題", "output": "輸出", - "prefixHint": "字首提示", + "prefixHint": "前綴說明", "skipWizard": "跳過嚮導", "failedCount": "失敗數量", - "confirmDbImportDesc": "確認DB匯入說明", + "confirmDbImportDesc": "確認DB導入說明", "entries": "條目", "until": "直到", - "disableCombo": "停用組合", - "liveMonitorDescriptionPrefix": "即時顯示請求流經 OmniRoute 時產生的事件。使用", - "runningCount": "執行中數量", - "noActiveConnectionsInGroup": "此分組中沒有活躍連線", - "savedSuccessfully": "儲存成功", - "systemStorage": "系統儲存", - "videoDesc": "影片說明", + "disableCombo": "禁用組合", + "liveMonitorDescriptionPrefix": "實時顯示請求流經OmniRoute時產生的事件。使用", + "runningCount": "運行中數量", + "noActiveConnectionsInGroup": "此分組中沒有活躍連接", + "savedSuccessfully": "保存成功", + "systemStorage": "系統存儲", + "videoDesc": "視頻", "maxResults": "最大結果數", "timeRangeMonth": "時間範圍月", "testSummary": "測試摘要", "failedSetPassword": "設定密碼失敗", - "audio": "音訊", + "audio": "音頻", "restore": "恢復", - "disableWarning": "停用警告", - "moderationsDesc": "稽核說明", + "disableWarning": "禁用警告", + "moderationsDesc": "審核", "providerHealthStatusAria": "提供者健康狀態", "modelNamePlaceholder": "模型名稱", - "mcpQuickStartStep2": "MCP 快速開始步驟 2", + "mcpQuickStartStep2": "MCP快速開始步驟 2", "quickStart": "快速開始", - "fullExportFailedWithError": "完整匯出失敗:{error}", + "fullExportFailedWithError": "完整導出失敗:{error}", "loadingBackups": "正在載入備份", "anthropicBaseUrlPlaceholder": "Anthropic Base URL", "description": "描述", "noProviderFound": "未找到提供者", "auto": "自動", "protocolsDescription": "設定並測試支援的協議端點。", - "cloudSessionNote": "Cloud Session 提示", - "advancedSettings": "高階設定", + "cloudSessionNote": "雲端工作階段說明", + "advancedSettings": "高級設定", "defaultStrategy": "預設策略", "purgeExpiredLogs": "清理已過期日誌", "justNow": "剛剛現在", "providerTestFailed": "提供者測試失敗", "openaiBaseUrlPlaceholder": "OpenAI Base URL", - "image": "影像", - "failedCreateChain": "建立鏈失敗", - "importDatabase": "匯入資料庫", + "image": "圖像", + "failedCreateChain": "創建鏈失敗", + "importDatabase": "導入資料庫", "allDataLocal": "全部資料本地", - "sectionTitle": "分割槽標題", + "sectionTitle": "分區", "failedToggle": "切換失敗", - "editCombo": "編輯 Combo", + "editCombo": "編輯Combo", "testResults": "測試結果", "searchQuery": "搜尋查詢", - "addCcCompatible": "新增 CC 相容", + "addCcCompatible": "新增Claude Code相容", "duplicate": "重複", - "createCombo": "建立組合", + "createCombo": "創建組合", "searchTypeWeb": "搜尋類型:Web", "addChain": "新增鏈", - "prefixLabel": "字首標籤", - "listModelsDesc": "列出可用 Model。", + "prefixLabel": "前綴", + "listModelsDesc": "列出可用Model。", "databaseSize": "資料庫大小", - "chainCreated": "鏈已建立", + "chainCreated": "鏈已創建", "providerTestTimeout": "提供者測試超時", "routingStrategy": "路由策略", "translateAction": "翻譯操作", - "exportFailed": "匯出失敗", - "connectedVerificationPending": "連線驗證待處理", - "a2aQuickStartTitle": "A2A 快速開始", + "exportFailed": "導出失敗", + "connectedVerificationPending": "連接驗證待處理", + "a2aQuickStartTitle": "A2A快速開始", "couldNotTest": "無法測試", "testAllCompatible": "測試所有相容項", - "anthropicCompatibleName": "Anthropic 相容名稱", - "disabling": "正在停用", + "anthropicCompatibleName": "Anthropic相容名稱", + "disabling": "正在禁用", "failedEnable": "啟用失敗", "categoryUtility": "工具類別", - "customUrlOptional": "自定義 URL(可選)", - "localProviders": "本地 Provider", - "comboNamePlaceholder": "Combo 名稱", - "memoryRss": "記憶體 RSS", - "disableProvider": "停用提供者", - "welcomeDesc": "歡迎使用 OmniRoute。", - "nameLabel": "名稱標籤", - "allOperational": "全部執行正常", - "backupNow": "備份現在", + "customUrlOptional": "自定義URL(可選)", + "localProviders": "本地提供者", + "comboNamePlaceholder": "Combo名稱", + "memoryRss": "記憶體RSS", + "disableProvider": "禁用提供者", + "welcomeDesc": "歡迎使用OmniRoute。", + "nameLabel": "名稱", + "allOperational": "全部運行正常", + "backupNow": "立即備份", "providerMaxRetriesAria": "提供者最大重試次數", - "textToSpeechDesc": "將文本轉換為語音音訊。", - "machineId": "機器 ID", - "globalProxy": "全域性代理", + "textToSpeechDesc": "將文本轉換為語音音頻。", + "machineId": "機器ID", + "globalProxy": "全域代理", "hitsMisses": "命中未命中", - "testDesc": "執行連線測試以驗證設定。", - "chatDesc": "聊天說明", - "importSuccess": "匯入成功", + "testDesc": "運行連接測試以驗證設定。", + "chatDesc": "聊天", + "importSuccess": "導入成功", "chat": "聊天", "a2aQuickStartStep1": "A2A快速開始步驟1", - "importFailed": "匯入失敗", + "importFailed": "導入失敗", "inputPlaceholder": "輸入內容...", "providerModelsTitle": "提供者模型", "lastBackup": "最近備份", - "yourEndpoint": "你的 Endpoint", - "autoDisableThresholdDesc": "觸發自動停用前允許的連續失敗次數。", - "rerankDesc": "重排說明", - "modelsPathPlaceholder": "Model 路徑", - "noCombosYet": "暫無 Combo", - "connectedVerificationPendingWithError": "已連線,驗證待完成:{error}", - "comboDefaultsGuideHint1": "設定 Combo 預設策略和目標。", + "yourEndpoint": "你的Endpoint", + "autoDisableThresholdDesc": "觸發自動禁用前允許的連續失敗次數。", + "rerankDesc": "重排", + "modelsPathPlaceholder": "Model路徑", + "noCombosYet": "暫無組合", + "connectedVerificationPendingWithError": "已連接,驗證待完成:{error}", + "comboDefaultsGuideHint1": "設定Combo預設策略和目標。", "enableCloudTitle": "啟用雲端", - "configuredProvidersHint": "僅顯示已設定的 Provider。", + "configuredProvidersHint": "僅顯示已設定的提供者。", "paused": "已暫停", - "llmProviders": "LLM Provider", + "llmProviders": "LLM提供者", "enableCombo": "啟用組合", "removeProviderOverrideAria": "移除提供者覆蓋", - "nodeVersion": "Node 版本", + "nodeVersion": "Node版本", "openai": "OpenAI", - "exportFailedWithError": "匯出失敗:{error}", + "exportFailedWithError": "導出失敗:{error}", "proxyConfigured": "代理已設定", "concurrencyPerModel": "每個模型併發數", - "protocolTasksLabel": "協議任務標籤", - "oauthProviders": "OAuth 提供者", + "protocolTasksLabel": "協議任務數", + "oauthProviders": "OAuth提供者", "lockedCount": "已鎖定數量", "deleteChainConfirm": "刪除此後備鏈?", "recentTranslations": "最近翻譯", - "zedImportButton": "從 Zed 匯入", - "responsesDesc": "Responses API 相容端點", + "zedImportButton": "從Zed導入", + "responsesDesc": "Responses API相容端點", "testedCount": "已測試數量", - "providersCommaSeparatedPlaceholder": "以逗號分隔的 Provider", + "providersCommaSeparatedPlaceholder": "以逗號分隔的提供者", "signatureDefaults": "簽名預設值", - "errorCreating": "錯誤建立", + "errorCreating": "錯誤創建", "timeRangeYear": "時間範圍年", "compatibleLabel": "相容", - "cloudDisabledSuccess": "雲端已停用", + "cloudDisabledSuccess": "雲端已禁用", "deleteConfirm": "確認刪除?", "check": "檢查", "safeSearch": "安全搜尋", "protocolLastActivity": "協議最近活動", - "openMcpDashboard": "開啟 MCP Dashboard", + "openMcpDashboard": "打開MCP Dashboard", "testBenchTab": "測試臺", - "chatPathLabel": "聊天路徑標籤", + "chatPathLabel": "聊天路徑", "retryDelay": "重試延遲", "errorUpdating": "錯誤更新", - "ideCliIntegrations": "IDE 與 CLI 整合", - "imageGeneration": "影像生成", - "apiKeyRequired": "API key 為必填項", + "ideCliIntegrations": "IDE與CLI整合", + "imageGeneration": "圖像生成", + "apiKeyRequired": "API Key為必填項", "resetAllTitle": "全部重置", - "connectionError": "連線錯誤", + "connectionError": "連接錯誤", "modelName": "模型名稱", - "apiKeyForCheck": "用於檢查的 API 金鑰", + "apiKeyForCheck": "用於檢查的API Key", "cloudRequestTimeout": "雲端請求超時", "showConfiguredOnly": "顯示已設定僅", "showFreeOnly": "僅免費", "addFirstProvider": "新增您的第一個提供者", - "addFirstProviderDesc": "連線 AI 提供者以開始通過 OmniRoute 路由請求。您可以使用免費提供者、API 金鑰或 OAuth 帳戶。", + "addFirstProviderDesc": "連接AI提供者以開始通過OmniRoute路由請求。您可以使用免費提供者、API Key或OAuth帳戶。", "learnMore": "瞭解更多", "includeDomains": "包含域名", "promptCache": "提示快取", - "cloudConnected": "Cloud 已連線", + "cloudConnected": "雲端已連接", "deleteChain": "刪除鏈", - "chatPathPlaceholder": "聊天路徑佔位符", + "chatPathPlaceholder": "聊天路徑", "databasePath": "資料庫路徑", - "usingLocalServer": "正在使用本地 Server", - "globalComboConfig": "全域性 Combo 設定", + "usingLocalServer": "正在使用本地Server", + "globalComboConfig": "全域Combo設定", "backupFailed": "備份失敗", - "tabProtocols": "協議標籤頁", + "tabProtocols": "協議", "continue": "繼續", "categorySearch": "類別搜尋", "rateLimitStatus": "速率限制狀態", @@ -413,54 +413,54 @@ "nameRequired": "名稱必填", "country": "國家/地區", "trackMetricsDesc": "跟蹤請求、延遲和成本指標。", - "durationSecondsShort": "時長秒短標籤", - "formatConverterDescription": "在不同 API 格式之間轉換請求。", - "cloudBenefitAccess": "訪問 Cloud 能力", + "durationSecondsShort": "時長(秒)", + "formatConverterDescription": "在不同API格式之間轉換請求。", + "cloudBenefitAccess": "訪問Cloud能力", "maxRetries": "最大重試次數", "queueTimeout": "佇列超時", "queueDepth": "佇列深度", "addProvider": "新增提供者", - "realtime": "即時", + "realtime": "實時", "totalTranslations": "總計翻譯", - "protocolActiveStreamsLabel": "協議活躍 Stream", + "protocolActiveStreamsLabel": "協議活躍Stream", "repairEnv": "修復環境", - "modelsCount": "Model 數量", - "viewBackups": "檢視備份", + "modelsCount": "Model數量", + "viewBackups": "查看備份", "responsesApi": "Responses API", - "copyComboName": "複製 Combo 名稱", + "copyComboName": "複製Combo名稱", "failures": "失敗", "failedUpdate": "更新失敗", - "imageDesc": "影像說明", - "failedCreate": "建立失敗", + "imageDesc": "圖像", + "failedCreate": "創建失敗", "remainingOfLimit": "剩餘Of限制", "protocolsTitle": "協議", - "expirationBannerExpiringSoonDesc": "過期橫幅即將過期即將說明", + "expirationBannerExpiringSoonDesc": "憑據即將過期說明", "source": "來源", "failed": "失敗", - "apiKeyMgmt": "API key 管理", - "mcpQuickStartStep1": "MCP 快速開始步驟 1", - "runTest": "執行測試", + "apiKeyMgmt": "API Key管理", + "mcpQuickStartStep1": "MCP快速開始步驟 1", + "runTest": "運行測試", "loadingFallbackChains": "正在載入後備鏈", "healthy": "健康", "version": "版本", - "saveBlockWeighted": "儲存 Block Weighted", - "zedImportNone": "沒有可從 Zed 匯入的內容", - "noBackupsYet": "無備份暫無", - "noGlobalProxy": "無全域性代理", - "noModels": "無 Model", + "saveBlockWeighted": "保存Block Weighted", + "zedImportNone": "沒有可從Zed導入的內容", + "noBackupsYet": "暫無備份", + "noGlobalProxy": "暫無全域代理", + "noModels": "暫無模型", "stickyLimit": "粘性限制", "passedCount": "通過數量", - "zedImportFailed": "Zed 匯入失敗", - "saving": "正在儲存", + "zedImportFailed": "Zed導入失敗", + "saving": "正在保存", "testAll": "全部測試", - "globalProxyDesc": "全域性代理說明", - "latencyP99": "延遲P99", - "connectingToCloud": "正在連線雲端", + "globalProxyDesc": "全域代理說明", + "latencyP99": "P99 延遲", + "connectingToCloud": "正在連接雲端", "responses": "回應", "errorDeleting": "錯誤刪除", - "openaiPrefixPlaceholder": "OpenAI 字首", + "openaiPrefixPlaceholder": "OpenAI前綴", "enterPassword": "輸入密碼", - "openA2aDashboard": "開啟 A2A Dashboard", + "openA2aDashboard": "打開A2A Dashboard", "enableProvider": "啟用提供者", "modeTest": "測試模式", "failedDeleteChain": "刪除鏈失敗", @@ -468,209 +468,209 @@ "templateLoadHint": "選擇模板以快速填充設定。", "lastFailure": "最近失敗", "moveDown": "移動下移", - "providerLabel": "提供者標籤", + "providerLabel": "提供者", "clearCacheFailed": "清除快取失敗", - "imagesGenerations": "影像生成", + "imagesGenerations": "圖像生成", "repairEnvWorking": "修復環境處理中", - "millisecondsShort": "毫秒短標籤", - "globalLabel": "全域性標籤", - "failuresPlural": "失敗複數", - "completionsLegacyDesc": "舊版 Completions API 相容端點。", - "searchProviders": "搜尋 Provider", + "millisecondsShort": "毫秒", + "globalLabel": "全域", + "failuresPlural": "失敗", + "completionsLegacyDesc": "舊版Completions API相容端點。", + "searchProviders": "搜尋提供者", "chatPathHint": "聊天路徑提示", "defaultStrategyDesc": "預設策略說明", - "latencyP95": "延遲P95", + "latencyP95": "P95 延遲", "textToSpeech": "文本轉語音", "searchType": "搜尋類型", - "messages": "訊息", - "aggregatorsGateways": "聚合器與閘道器", - "comboStrategyAria": "Combo 策略", + "messages": "消息", + "aggregatorsGateways": "聚合器與網關", + "comboStrategyAria": "Combo策略", "input": "輸入", - "testingConnection": "正在測試連線", + "testingConnection": "正在測試連接", "excludeDomains": "排除域名", - "webCookieProviders": "Web Cookie 提供者", + "webCookieProviders": "Web Cookie提供者", "allTestsPassed": "全部測試通過", - "openaiCompatibleName": "OpenAI 相容名稱", - "warningCostOptimizedPartialPricing": "部分模型缺少定價,成本最佳化結果可能不完整。", + "openaiCompatibleName": "OpenAI相容名稱", + "warningCostOptimizedPartialPricing": "部分模型缺少定價,成本優化結果可能不完整。", "comboDefaultsGuideTitle": "組合預設值指南", "hoursAgo": "小時前", "notAvailable": "不可用", "skipAndContinue": "跳過並繼續", - "moderations": "稽核", + "moderations": "審核", "proxyConfig": "代理設定", - "upstreamProxyProviders": "上游代理 Provider", - "exportAll": "匯出全部", + "upstreamProxyProviders": "上游代理提供者", + "exportAll": "導出全部", "queuedCount": "排隊中數量", "resetAll": "重置全部", "noTranslations": "無翻譯", "avgLatency": "平均延遲", "throttleStatus": "限流狀態", "backupRetentionDesc": "備份保留說明", - "noCBData": "無CB資料", + "noCBData": "暫無斷路器資料", "chainDeleted": "鏈已刪除", "timeLeft": "時間剩餘", - "expirationBannerExpired": "過期橫幅已過期", + "expirationBannerExpired": "憑據已過期", "language": "語言", "invalidFileType": "無效檔案類型", - "monitoredProviders": "監控中的 Provider", + "monitoredProviders": "監控中的提供者", "errors": "錯誤", "heap": "堆記憶體", "chatCompletions": "聊天補全", "exampleTemplatesHint": "示例模板提示", "retryDelayLabel": "重試延遲標籤", - "audioTranscription": "音訊轉寫", + "audioTranscription": "音頻轉寫", "fallbackChainsDesc": "定義每個模型的提供者後備順序。", "exampleTemplates": "示例模板", - "connectionsCount": "連線數量", - "modelsPathLabel": "Model 路徑", - "activeProvidersHint": "當前正在處理請求的 Provider。", + "connectionsCount": "連接數量", + "modelsPathLabel": "Model路徑", + "activeProvidersHint": "當前正在處理請求的提供者。", "activeLockouts": "活躍鎖定", "invalid": "無效", "skipPassword": "跳過密碼", "moveUp": "移動上移", "timeRange": "時間範圍", "stickyLimitDesc": "粘性限制說明", - "cloudBenefitEdge": "邊緣 Cloud 能力", + "cloudBenefitEdge": "邊緣Cloud能力", "custom": "自定義", "verifying": "正在驗證", - "baseUrlLabel": "Base URL 標籤", + "baseUrlLabel": "Base URL", "setPassword": "設定密碼", "safeSearchStrict": "安全搜尋嚴格", - "noChangesSinceBackup": "無變更自從備份", - "modelsPathHint": "用於拉取 Model 列表的路徑。", - "audioTranscriptions": "音訊轉寫", + "noChangesSinceBackup": "備份後無變更", + "modelsPathHint": "用於拉取Model列表的路徑。", + "audioTranscriptions": "音頻轉寫", "testCombo": "測試組合", - "mcpQuickStartTitle": "MCP 快速開始", - "comboUpdated": "Combo 已更新", + "mcpQuickStartTitle": "MCP快速開始", + "comboUpdated": "Combo已更新", "weighted": "加權", "providers": "提供者", - "ccCompatibleLabel": "CC 相容", - "noFallbackChainsDesc": "建立一條鏈路,用於定義某個模型的提供者回退順序。", - "yesImport": "確認匯入", - "lockoutsAutoRefreshHint": "鎖定自動重新整理提示", - "tabApis": "API 標籤頁", - "sectionDescription": "分割槽描述", + "ccCompatibleLabel": "CC相容", + "noFallbackChainsDesc": "創建一條鏈路,用於定義某個模型的提供者回退順序。", + "yesImport": "確認導入", + "lockoutsAutoRefreshHint": "鎖定自動刷新說明", + "tabApis": "API", + "sectionDescription": "分區說明", "filter": "篩選", "purgeLogsFailed": "清理日誌失敗", "latency": "延遲", - "testAllOAuth": "測試所有 OAuth", - "mcpQuickStartStep3": "MCP 快速開始步驟 3", + "testAllOAuth": "測試所有OAuth", + "mcpQuickStartStep3": "MCP快速開始步驟 3", "repairEnvFailed": "環境修復失敗", - "zedImportHint": "從 Zed 設定中匯入 Provider。", - "modelsAcrossEndpoints": "跨 Endpoint 的 Model", - "autoDisableBannedAccounts": "自動停用被封禁帳戶", - "securityDesc": "安全說明", - "listModels": "列出 Model", + "zedImportHint": "從Zed設定中導入提供者。", + "modelsAcrossEndpoints": "跨Endpoint的Model", + "autoDisableBannedAccounts": "自動禁用被封禁賬戶", + "securityDesc": "安全", + "listModels": "列出Model", "backupRestore": "備份恢復", "target": "目標", - "zedImportSuccess": "Zed 匯入成功", - "lastHeaderUpdate": "上次請求頭更新", + "zedImportSuccess": "Zed導入成功", + "lastHeaderUpdate": "上次請求標頭更新", "categoryCore": "類別核心", - "noFallbackChains": "無後備鏈", - "noSearchProviders": "無搜尋 Provider", + "noFallbackChains": "暫無後備鏈", + "noSearchProviders": "無搜尋提供者", "autoBalance": "自動均衡", - "noModelsYet": "暫無 Model", + "noModelsYet": "暫無模型", "signatureFamily": "簽名族", - "externalApiCalls": "外部 API 呼叫", + "externalApiCalls": "外部API呼叫", "providerOverridesDesc": "覆蓋每個提供者的超時和重試設定。", "signatureTool": "簽名工具", - "connectionFailed": "連線失敗", + "connectionFailed": "連接失敗", "activeLimitersPlural": "活躍限制器複數", "doneDesc": "完成說明", "down": "下移", - "noDataYet": "無資料暫無", - "activeProviders": "活躍 Provider", + "noDataYet": "暫無資料", + "activeProviders": "活躍提供者", "nameInvalid": "名稱無效", "skip": "跳過", - "createChain": "建立鏈", + "createChain": "創建鏈", "audioSpeech": "語音合成", "cacheCleared": "快取已清除", "searchTypeNews": "搜尋類型:News", - "durationMillisecondsShort": "時長毫秒短標籤", - "addOpenAICompatible": "新增開啟Ai相容", + "durationMillisecondsShort": "時長毫秒", + "addOpenAICompatible": "新增打開Ai相容", "chatTesterTab": "聊天測試標籤頁", "queued": "排隊中", "domainPlaceholder": "域名佔位符", - "durationMinutesShort": "時長分鐘短標籤", - "verifyingConnection": "正在驗證連線", - "imageProviders": "影像 Provider", - "protocolToolsLabel": "協議工具標籤", + "durationMinutesShort": "時長(分鐘)", + "verifyingConnection": "正在驗證連接", + "imageProviders": "圖像提供者", + "protocolToolsLabel": "協議工具數", "queryPlaceholder": "查詢佔位符", - "videoGeneration": "影片生成", + "videoGeneration": "視頻生成", "timeRangeWeek": "時間範圍:周", "limitExhausted": "限額已耗盡", - "failedDisable": "停用失敗", - "inMemoryNote": "資料僅儲存在記憶體中。", - "compatibleHint": "相容提示", - "errorShort": "錯誤短標籤", - "advancedHint": "顯示高階選項。", + "failedDisable": "禁用失敗", + "inMemoryNote": "資料僅保存在記憶體中。", + "compatibleHint": "相容說明", + "errorShort": "錯誤", + "advancedHint": "顯示高級選項。", "restoreFailed": "恢復失敗", - "searchProvidersHeading": "搜尋 Provider", - "comboName": "Combo 名稱", - "autoDisableDescription": "當檢測到永久封禁訊號時自動停用帳戶。", - "embeddingsDesc": "Embeddings API 相容端點。", - "operational": "執行正常", - "testAllApiKey": "測試所有 API 金鑰", - "backupCreated": "備份已建立", - "errorDuringImport": "錯誤期間匯入", - "comboDefaultsGuideHint2": "這些預設值會在新建 Combo 時使用。", - "connecting": "正在連線", + "searchProvidersHeading": "搜尋提供者", + "comboName": "Combo名稱", + "autoDisableDescription": "當檢測到永久封禁信號時自動禁用賬戶。", + "embeddingsDesc": "Embeddings API相容端點。", + "operational": "運行正常", + "testAllApiKey": "測試所有API Key", + "backupCreated": "備份已創建", + "errorDuringImport": "錯誤期間導入", + "comboDefaultsGuideHint2": "這些預設值會在新建Combo時使用。", + "connecting": "正在連接", "fillModelAndProviders": "請填寫模型和提供者", "syncing": "正在同步", "resetConfirm": "重置確認", "trackMetrics": "跟蹤指標", "successful": "成功", "recovering": "正在恢復", - "autoDisableThreshold": "自動停用閾值", + "autoDisableThreshold": "自動禁用閾值", "anthropic": "Anthropic", "syncingData": "正在同步資料", - "cloudBenefitPorts": "通過 Cloud 暴露埠", - "compatibleProviders": "相容 Provider", + "cloudBenefitPorts": "通過Cloud暴露連接埠", + "compatibleProviders": "相容提供者", "freeTierProviders": "免費層級提供者", "freeTierLabel": "提供免費套餐", - "freeTierProvidersDesc": "提供免費套餐的提供者 — 有些需要 API 金鑰註冊,有些則根本不需要憑據。", + "freeTierProvidersDesc": "提供免費套餐的提供者—有些需要API Key註冊,有些則根本不需要憑據。", "clearCache": "清除快取", "reqs": "請求數", - "addAnthropicCompatible": "新增 Anthropic 相容 Provider", - "apiKeyProviders": "API key Provider", + "addAnthropicCompatible": "新增Anthropic相容提供者", + "apiKeyProviders": "API Key提供者", "tabsAria": "標籤頁", "resetting": "正在重置", - "millisecondsAbbr": "毫秒縮寫", + "millisecondsAbbr": "毫秒", "backupReasonPreRestore": "恢復前備份", - "disableCloud": "停用雲端", + "disableCloud": "禁用雲端", "newProviderNameAria": "新的提供者名稱", "passwordsMismatch": "密碼不匹配", "a2aQuickStartStep3": "A2A快速開始步驟3", - "liveMonitorDescriptionSuffix": "或外部 API 呼叫來生成事件。", + "liveMonitorDescriptionSuffix": "或外部API呼叫來生成事件。", "failedAddProvider": "新增提供者失敗", "addAtLeastOneProvider": "至少新增一個提供者", - "reasonSeparator": "原因分隔符", - "zedImporting": "正在從 Zed 匯入", + "reasonSeparator": " — ", + "zedImporting": "正在從Zed導入", "confirmPasswordPlaceholder": "確認密碼佔位符", "whatYouGet": "你將獲得", - "signatureSession": "簽名 Session", - "errorCountNoCode": "無程式碼錯誤數", + "signatureSession": "簽名Session", + "errorCountNoCode": "無代碼錯誤", "testing": "正在測試", - "providersCommaSeparated": "以逗號分隔的 Provider", - "exportDatabase": "匯出資料庫", + "providersCommaSeparated": "以逗號分隔的提供者", + "exportDatabase": "導出資料庫", "hitRate": "命中率", - "completionsLegacy": "Completions 舊版", + "completionsLegacy": "Completions舊版", "removeModel": "移除模型", "timeRangeDay": "時間範圍:天", "cloudRequestFailed": "雲端請求失敗", "updatedAt": "更新時間", - "monitoredProvidersHint": "選擇需要監控的 Provider。", - "connectionSuccessful": "連線成功", - "latencyP50": "延遲P50", + "monitoredProvidersHint": "選擇需要監控的提供者。", + "connectionSuccessful": "連接成功", + "latencyP50": "P50 延遲", "logsDeleted": "日誌已刪除", "chatTester": "聊天測試器", - "safeSearchOff": "Safe Search 關閉", - "nameHint": "名稱提示", - "debugToggle": "除錯開關", + "safeSearchOff": "Safe Search關閉", + "nameHint": "名稱說明", + "debugToggle": "調試開關", "embedding": "嵌入", "issuesLabel": "問題標籤", "optionAny": "任意選項", - "maxNestingDepth": "最大巢狀深度", + "maxNestingDepth": "最大嵌套深度", "rerank": "重新排序", "checking": "正在檢查", "getStarted": "開始使用", @@ -678,72 +678,72 @@ "issuesDetected": "檢測到問題", "signatureCache": "簽名快取", "modelLockouts": "模型鎖定", - "usingCloudProxy": "正在使用 Cloud 代理", + "usingCloudProxy": "正在使用Cloud代理", "loadingHealth": "正在載入健康狀態", "providerOverrides": "提供者覆蓋", - "audioTranscriptionDesc": "音訊轉寫說明", - "learnedFromHeaders": "從回應頭學習", + "audioTranscriptionDesc": "音頻轉寫", + "learnedFromHeaders": "從回應標頭學習", "totalRequests": "總計請求", - "cloudUnstableNote": "Cloud 連線不穩定,部分功能可能受影響。", + "cloudUnstableNote": "雲端連接不穩定,部分功能可能受影響。", "gamificationAdmin": "遊戲化管理員", "monitorAnomaliesAndHealth": "監控異常和系統健康狀況", "flaggedAnomalies": "標記的異常", "noAnomaliesDetected": "未檢測到異常情況", - "apiKey": "API金鑰", + "apiKey": "API Key", "xpLastHour": "XP(1 小時)", - "zScore": "Z 分數", - "tokensCommunityServers": "社群伺服器", + "zScore": "Z分數", + "tokensCommunityServers": "社區伺服器", "tokensServerNamePlaceholder": "伺服器名稱", - "tokensApiKeyPlaceholder": "API金鑰", + "tokensApiKeyPlaceholder": "API Key", "tokensTokenBalance": "代幣餘額", - "tokensSendTokens": "傳送代幣", - "tokensRecipientApiKeyId": "接收者 API 金鑰 ID", - "tokensRecipientApiKeyIdPlaceholder": "輸入收件人 API 金鑰 ID", + "tokensSendTokens": "發送代幣", + "tokensRecipientApiKeyId": "接收者API Key ID", + "tokensRecipientApiKeyIdPlaceholder": "輸入收件人API Key ID", "tokensReasonOptional": "原因(可選)", "tokensReasonPlaceholder": "例如獎金,獎勵", "tokensTransactionHistory": "交易記錄", "tokensNoTransactionsYet": "還沒有交易", "tokensInviteCodes": "邀請碼", "tokensMaxUses": "最大使用次數", - "tokensRedeemCode": "兌換程式碼", + "tokensRedeemCode": "兌換代碼", "tokensRedeemCodePlaceholder": "輸入邀請碼", "tokensYourActiveInvites": "您的有效邀請", - "tokensTransferSuccess": "轉移成功({idempotencyKey})", - "tokensTransferFailed": "轉移失敗", - "tokensCreateInviteFailed": "建立邀請失敗", + "tokensTransferSuccess": "轉賬成功 ({idempotencyKey})", + "tokensTransferFailed": "轉賬失敗", + "tokensCreateInviteFailed": "創建邀請失敗", "tokensRevokeInviteFailed": "撤銷邀請失敗", - "tokensRedeemSuccess": "邀請已兌換。伺服器:{server}", + "tokensRedeemSuccess": "邀請已兌換。伺服器: {server}", "tokensRedeemFailed": "兌換邀請失敗", - "tokensConnectServerFailed": "連線伺服器失敗", - "tokensDisconnectServerFailed": "中斷伺服器連線失敗", - "tokensAmount": "數量", - "tokensSending": "正在傳送...", - "tokensFrom": "來自", - "tokensTo": "至", + "tokensConnectServerFailed": "連接伺服器失敗", + "tokensDisconnectServerFailed": "斷開伺服器連接失敗", + "tokensAmount": "金額", + "tokensSending": "發送中...", + "tokensFrom": "發送方", + "tokensTo": "接收方", "tokensReason": "原因", "tokensDate": "日期", - "tokensSent": "已傳送", + "tokensSent": "已發送", "tokensReceived": "已接收", - "tokensCreatingInvite": "正在建立...", - "tokensCreateInvite": "建立邀請", - "tokensInviteCreated": "邀請碼已建立", + "tokensCreatingInvite": "創建中...", + "tokensCreateInvite": "創建邀請", + "tokensInviteCreated": "邀請碼已創建", "tokensRedeeming": "正在兌換...", "tokensRedeem": "兌換", "tokensInviteUses": "{used}/{max} 次使用", "tokensRevoked": "已撤銷", "tokensRevoke": "撤銷", - "tokensConnecting": "正在連線...", - "tokensConnectServer": "連線伺服器", - "tokensNoServersConnected": "尚未連線任何伺服器。連線至社群伺服器以分享排行榜。", + "tokensConnecting": "正在連接...", + "tokensConnectServer": "連接伺服器", + "tokensNoServersConnected": "未連接任何伺服器。連接到社區伺服器以共享排行榜。", "tokensServerStatus": { - "connected": "已連線", - "disconnected": "已中斷連線", - "pending": "處理中", + "connected": "已連接", + "disconnected": "已斷開連接", + "pending": "等待中", "syncing": "正在同步", "error": "錯誤" }, - "tokensLastSync": "上次同步:{date}", - "tokensDisconnect": "中斷連線", + "tokensLastSync": "上次同步: {date}", + "tokensDisconnect": "斷開連接", "tierCoverageTitle": "層級覆蓋範圍", "tierCoverageSubtitle": "每個後備層設定的提供程式", "batchDetailCopyId": "複製身份證件", @@ -751,13 +751,13 @@ "batchDetailEndpoint": "端點", "batchDetailModel": "型號", "batchDetailWindow": "窗戶", - "batchDetailCreated": "已建立", - "providerTopologyEmpty": "尚未連線提供者", + "batchDetailCreated": "已創建", + "providerTopologyEmpty": "尚未連接提供者", "badgeToastUnlocked": "徽章已解鎖!", - "batchListSearchPlaceholder": "按 ID、端點、型號搜尋...", + "batchListSearchPlaceholder": "按ID、端點、型號搜尋...", "batchListDeleteAllCompletedTitle": "刪除所有已完成的批次", "batchListBatchesTable": "批次", - "changelogViewerLoading": "正在從 GitHub 載入變更日誌...", + "changelogViewerLoading": "正在從GitHub載入變更日誌...", "profileLoading": "正在載入個人資料...", "profileHowToEarn": "如何賺取", "bootstrapBannerDismiss": "解僱", @@ -767,20 +767,20 @@ "batchFileDetailCopyId": "複製身份證件", "batchFileDetailClose": "關閉", "batchFileDetailFailedToLoad": "無法載入檔案內容", - "batchFileDetailLoadError": "載入檔案內容時發生錯誤", - "batchFilesListSearchPlaceholder": "按 ID 或檔名搜尋...", + "batchFileDetailLoadError": "載入檔案內容時出錯", + "batchFilesListSearchPlaceholder": "按ID或檔案名搜尋...", "batchFilesListFilesTable": "檔案", "batchFilesCount": "{count, plural, one {# 個檔案} other {# 個檔案}}", "batchFilesAllPurposes": "所有用途", - "batchFilesFilename": "檔案名稱", + "batchFilesFilename": "檔案名", "batchFilesPurpose": "用途", - "batchFilesExpires": "到期日", - "batchFilesNoneFound": "找不到任何檔案", - "batchFilesNeverExpires": "永不", - "batchFileInUseByActiveBatch": "檔案正由作用中的批次使用中", + "batchFilesExpires": "過期時間", + "batchFilesNoneFound": "未找到檔案", + "batchFilesNeverExpires": "從不", + "batchFileInUseByActiveBatch": "檔案正被活動批處理使用", "batchFilePurpose": { - "batch": "批次輸入", - "batch-output": "批次輸出", + "batch": "批處理輸入", + "batch-output": "批處理輸出", "fine-tune": "微調", "assistants": "助手" }, @@ -790,75 +790,75 @@ "batchConceptTitle": "批處理", "batchConceptSubtitle": "以約 50% 的成本非同步處理數千個請求(24 小時間隔)。非常適合評估、批次分類和嵌入。", "batchConceptHowItWorks": "工作原理", - "batchConceptBenefit50pct": "輸入 + 輸出權杖享受 50% 折扣", - "batchConceptAsync24h": "非同步處理,24 小時完成視窗", + "batchConceptBenefit50pct": "輸入 + 輸出令牌享受 50% 折扣", + "batchConceptAsync24h": "非同步處理,24 小時完成窗口", "batchConceptUseCases": "最適合批次分類、評估和嵌入", "filesConceptTitle": "批處理檔案", - "filesConceptSubtitle": "批處理使用的 JSONL 檔案:輸入請求、結果和錯誤。", - "filesConceptInput": "輸入 — 每行一個請求的 JSONL", - "filesConceptOutput": "輸出 — 已完成請求的結果", - "filesConceptError": "錯誤 — 失敗的請求", - "filesConceptRetention": "保留期:預設為 30 天(Anthropic 為 29 天)", + "filesConceptSubtitle": "批處理使用的JSONL檔案:輸入請求、結果和錯誤。", + "filesConceptInput": "輸入—每行一個請求的JSONL", + "filesConceptOutput": "輸出—已完成請求的結果", + "filesConceptError": "錯誤—失敗的請求", + "filesConceptRetention": "保留期:預設為 30 天(Anthropic為 29 天)", "wizardTitle": "新建批處理", "wizardClose": "關閉", "wizardNext": "下一步", "wizardBack": "上一步", "wizardCancel": "取消", - "wizardCreate": "建立批處理", - "wizardCreating": "建立中…", + "wizardCreate": "創建批處理", + "wizardCreating": "創建中…", "wizardStep1Destination": "目標", "wizardStep2Input": "輸入", "wizardStep3Validate": "驗證", - "wizardStep4Cost": "成本與建立", + "wizardStep4Cost": "成本與創建", "wizardProviderLabel": "提供者", "wizardEndpointLabel": "端點", "wizardModelLabel": "模型", "wizardInputKindJsonl": "JSONL", "wizardInputKindCsv": "CSV(我們將轉換)", - "wizardDropOrPick": "拖放檔案或點選選擇", - "wizardCsvMappingTitle": "將 CSV 列對映到請求欄位", + "wizardDropOrPick": "拖放檔案或點擊選擇", + "wizardCsvMappingTitle": "將CSV列映射到請求欄位", "wizardCsvMappingAddField": "新增欄位", - "wizardCsvNoColumns": "CSV 標題中未偵測到任何欄位。", - "wizardCsvIgnoreColumn": "— 忽略 —", - "wizardCsvCustomIdMapped": "custom_id 已對應", - "wizardCsvContentMapped": "內容欄位已對應(messages、input 或 prompt)", - "wizardCsvApplyMapping": "套用對應", + "wizardCsvNoColumns": "CSV表頭中未檢測到列。", + "wizardCsvIgnoreColumn": "—忽略—", + "wizardCsvCustomIdMapped": "custom_id已映射", + "wizardCsvContentMapped": "內容欄位已映射 (messages、input或prompt)", + "wizardCsvApplyMapping": "應用映射", "wizardCsvRowsParsed": "已解析 {count} 行", "wizardCsvRowsSkipped": "已跳過 {count} 行", - "wizardCsvRowError": "第 {row} 行:{reason}", + "wizardCsvRowError": "第 {row} 行: {reason}", "wizardValidationOk": "所有行有效", "wizardValidating": "正在驗證…", - "wizardValidationParseFailed": "驗證失敗 — 無法解析內容。", - "wizardValidationSummary": "{lines} 行 · {ids} 個不重複 custom_id", - "wizardValidationErrorCount": "發現 {count, plural, one {# 個錯誤} other {# 個錯誤}}", - "wizardValidationDuplicateIds": "偵測到重複的 custom_id:", - "wizardValidationFirstErrors": "錯誤(前 {count} 個):", + "wizardValidationParseFailed": "驗證失敗—無法解析內容。", + "wizardValidationSummary": "{lines} 行· {ids} 個唯一custom_ids", + "wizardValidationErrorCount": "{count, plural, one {找到 # 個錯誤} other {找到 # 個錯誤}}", + "wizardValidationDuplicateIds": "檢測到重複的custom_ids:", + "wizardValidationFirstErrors": "錯誤 (前 {count} 個):", "wizardValidationLine": "第 {line} 行", "wizardValidationErrors": "驗證錯誤", "wizardValidationPreview": "預覽(前 5 個請求)", - "wizardValidationSamplingNote": "檔案較大 — 通過抽樣驗證(前 1000 行 + 後 100 行)。完整驗證在伺服器端執行。", + "wizardValidationSamplingNote": "檔案較大—通過抽樣驗證(前 1000 行 + 後 100 行)。完整驗證在伺服器端運行。", "wizardCostSync": "同步成本", "wizardCostBatch": "批處理成本(-50%)", "wizardCostSavings": "節省", - "wizardCostEstimatedNotice": "估算成本 — 實際計費可能有所不同。", + "wizardCostEstimatedNotice": "估算成本—實際計費可能有所不同。", "wizardErrorUpload": "上傳檔案失敗。請重試。", - "wizardErrorCreate": "建立批處理失敗。請重試。", - "wizardEmptyProviders": "先連線支援批處理的提供者(OpenAI、Anthropic 或 Gemini)以建立批處理。", + "wizardErrorCreate": "創建批處理失敗。請重試。", + "wizardEmptyProviders": "先連接支援批處理的提供者(OpenAI、Anthropic或Gemini)以創建批處理。", "uploadModalTitle": "上傳批處理檔案", - "uploadModalDropOrPick": "拖放 .jsonl 檔案或點選選擇", + "uploadModalDropOrPick": "拖放 .jsonl檔案或點擊選擇", "uploadModalUpload": "上傳", "uploadModalCancel": "取消", "uploadModalError": "上傳失敗。請重試。", "uploadModalSuccess": "已上傳", "uploadModalSizeLimit": "最大 512 MB", "batchListNewButton": "新建批處理", - "batchListAutoRefresh": "自動重新整理 30 秒", + "batchListAutoRefresh": "自動刷新 30 秒", "batchListCostColumn": "成本", "batchActionCancel": "取消", "batchActionDownloadOutput": "下載輸出", "batchActionDownloadErrors": "下載錯誤", "batchActionRetry": "重試失敗的", - "batchActionRetryConfirm": "重試 {n} 個失敗請求?最終成本取決於實際消耗的權杖。", + "batchActionRetryConfirm": "重試 {n} 個失敗請求?最終成本取決於實際消耗的令牌。", "expirationBadgeCritical": "緊急", "expirationBadgeWarning": "即將", "expirationBadgeNormal": "待處理", @@ -883,7 +883,7 @@ "batchListTableEndpoint": "端點", "batchListTableModel": "模型", "batchListTableProgress": "進度", - "batchListTableCreated": "建立時間", + "batchListTableCreated": "創建時間", "batchListTableExpires": "過期時間", "batchListLoading": "載入中…", "batchListEmpty": "未找到批處理", @@ -904,24 +904,24 @@ "batchStatusExpiredWithFailures": "已過期(部分)", "wizardCostEstimating": "估算成本…", "wizardCostRequests": "請求數", - "wizardCostInputTok": "輸入 tok", - "wizardCostOutputTok": "輸出 tok", - "wizardCostWindow": "視窗", + "wizardCostInputTok": "輸入tok", + "wizardCostOutputTok": "輸出tok", + "wizardCostWindow": "窗口", "wizardDestinationSelectProvider": "選擇提供者…", "wizardDestinationSelectModel": "選擇模型…", - "wizardDestinationConnectProvider": "連線提供者", - "batchListBatchCreated": "批處理 {id} 已建立 — 重新整理列表中…", + "wizardDestinationConnectProvider": "連接提供者", + "batchListBatchCreated": "批處理 {id} 已創建—刷新列表中…", "batchListBatchCreatedDismiss": "關閉", - "batchListRefreshing": "重新整理中…", - "batchListRefresh": "重新整理", + "batchListRefreshing": "刷新中…", + "batchListRefresh": "刷新", "uploadFileModalRemove": "移除", "uploadFileModalUploading": "上傳中…", "wizardInputReading": "讀取檔案…", "wizardInputReady": "就緒", - "wizardInputLargeFileLabel": "大檔案 — 抽樣驗證", - "wizardInputCsvJsonlReady": "JSONL 已生成 — 可以驗證。", - "wizardInputLargeFileWarning": "檢測到大檔案 — 通過抽樣驗證(前 5 MB + 後 100 KB)。完整驗證在伺服器端進行。", - "wizardCostWindow24h": "24 小時完成視窗", + "wizardInputLargeFileLabel": "大檔案—抽樣驗證", + "wizardInputCsvJsonlReady": "JSONL已生成—可以驗證。", + "wizardInputLargeFileWarning": "檢測到大檔案—通過抽樣驗證(前 5 MB + 後 100 KB)。完整驗證在伺服器端進行。", + "wizardCostWindow24h": "24 小時完成窗口", "wizardValidationFieldsOk": "必填欄位有效", "filesListDelete": "刪除", "filesListDownload": "下載", @@ -934,13 +934,13 @@ "batchActionRetryError": "重試失敗請求失敗。請重試。", "batchConceptRetentionNote": "結果和錯誤檔案保留 30 天(Anthropic:29 天)" }, - "disabled": "已停用", + "disabled": "已禁用", "featureFlagOmnirouteEmergencyFallbackDescription": "將預算耗盡的請求路由到緊急免費備用提供者/模型。", - "featureFlagArenaEloSyncEnabledDescription": "啟用定期 Arena AI 排行榜 ELO 同步,用於模型智慧排名。", + "featureFlagArenaEloSyncEnabledDescription": "啟用定期同步Arena AI排行榜ELO,用於模型智能排名。", "featureFlagExposeCcDiscoveryAliasesDescription": "__MISSING__:Advertise claude/<provider>/<model> mirror ids on /v1/models so Claude Code gateway model discovery lists non-Claude models. Warning: doubles catalog entries for all clients when enabled globally.", "sidebar": { "home": "首頁", - "dashboard": "儀表板", + "dashboard": "看板", "providers": "提供者", "combos": "組合", "usage": "用量", @@ -949,25 +949,25 @@ "health": "健康", "proxy": "代理", "limits": "限制與配額", - "cliTools": "CLI 工具", + "cliTools": "CLI工具", "media": "媒體", "settings": "設定", "translator": "翻譯器", "playground": "演練場", "searchTools": "搜尋工具", - "agents": "智慧體", - "cloudAgents": "雲代理", + "agents": "智能體", + "cloudAgents": "雲智能體", "memory": "記憶", - "skills": "技能", - "omniSkills": "全方位技能", - "agentSkills": "代理技能", - "chaosConfig": "混沌模式", - "docs": "檔案", + "skills": "Skills", + "omniSkills": "全方位Skills", + "agentSkills": "智能體Skills", + "chaosConfig": "混亂模式", + "docs": "文件", "issues": "問題反饋", "endpoints": "端點", - "endpointsSubtitle": "您的 AI 連線 URL", - "apiManager": "API 管理", - "apiManagerSubtitle": "管理 API 金鑰和訪問", + "endpointsSubtitle": "您的AI連接URL", + "apiManager": "API管理", + "apiManagerSubtitle": "管理API Key和訪問", "embeddedServices": "內嵌服務", "embeddedServicesSubtitle": "管理本地代理服務", "logs": "日誌", @@ -979,25 +979,25 @@ "contextRtkSubtitle": "輸出濾波", "auditLog": "審計日誌", "shutdown": "停止服務", - "restart": "重啟服務", - "shutdownConfirm": "確定要停止 OmniRoute 嗎?", - "restartConfirm": "確定要重啟 OmniRoute 嗎?", + "restart": "重新啟動服務", + "shutdownConfirm": "確定要停止OmniRoute嗎?", + "restartConfirm": "確定要重新啟動OmniRoute嗎?", "version": "v{version}", - "debug": "除錯", + "debug": "調試", "system": "系統", "help": "幫助", "primarySection": "主導航", "cliSection": "CLI", - "debugSection": "除錯", + "debugSection": "調試", "systemSection": "系統", "helpSection": "幫助", - "serverDisconnected": "伺服器已斷開連線", - "serverDisconnectedMsg": "代理伺服器已停止,或正在重啟。", + "serverDisconnected": "伺服器已斷開連接", + "serverDisconnectedMsg": "代理伺服器已停止,或正在重新啟動。", "expandSidebar": "展開側邊欄", "collapseSidebar": "收起側邊欄", "themes": "主題", "presetColors": "熱門配色", - "createTheme": "建立主題", + "createTheme": "創建主題", "chooseColor": "選擇一種顏色", "themeCoral": "珊瑚", "themeBlue": "藍色", @@ -1014,30 +1014,30 @@ "whitelabelingDesc": "自定義品牌展示與主題外觀。", "switchThemes": "切換主題", "themeAccentDesc": "選擇用於按鈕、連結和高亮狀態的強調色。", - "uploadFavicon": "上傳 Favicon", + "uploadFavicon": "上傳Favicon", "themeDark": "深色主題", - "customLogoDesc": "上傳用於側邊欄和登入頁的自定義 Logo。", + "customLogoDesc": "上傳用於側邊欄和登入頁的自定義Logo。", "sidebarVisibilityToggle": "側邊欄可見性開關", "themeAccent": "主題強調色", - "resetFavicon": "重置 Favicon", + "resetFavicon": "重置Favicon", "whitelabeling": "白標", "darkMode": "深色模式", - "uploadLogo": "上傳 Logo", + "uploadLogo": "上傳Logo", "themeLight": "淺色主題", "appName": "應用名稱", - "appNameDesc": "設定在介面和瀏覽器標題中顯示的名稱。", - "resetLogo": "重置 Logo", - "customFavicon": "自定義 Favicon", + "appNameDesc": "設定在界面和瀏覽器標題中顯示的名稱。", + "resetLogo": "重置Logo", + "customFavicon": "自定義Favicon", "hideHealthLogs": "隱藏健康檢查日誌", - "customLogo": "自定義 Logo", + "customLogo": "自定義Logo", "appearance": "外觀", "themeSelectionAria": "主題選擇", - "themeCreate": "建立主題", - "customFaviconDesc": "上傳用於瀏覽器標籤頁的自定義 Favicon。", - "logoPreview": "Logo 預覽", + "themeCreate": "創建主題", + "customFaviconDesc": "上傳用於瀏覽器標籤頁的自定義Favicon。", + "logoPreview": "Logo預覽", "themeCustom": "自定義主題", "hideHealthLogsDesc": "隱藏健康檢查日誌說明", - "faviconPreview": "Favicon 預覽", + "faviconPreview": "Favicon預覽", "changelog": "更新日誌", "contextSection": "上下文與快取", "contextCaveman": "Caveman", @@ -1053,24 +1053,24 @@ "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", "combosLive": "Combo Studio", - "combosLiveSubtitle": "即時路由串聯", + "combosLiveSubtitle": "實時路由級聯", "compressionStudio": "Compression Studio", - "compressionExclusions": "__MISSING__:Exclusions", + "compressionExclusions": "排除規則", "contextSettingsSubtitle": "全域預設值", "contextHeadroomSubtitle": "表格壓縮", "contextSessionDedupSubtitle": "跨輪次去重", "contextCcrSubtitle": "檢索標記", - "contextLlmlinguaSubtitle": "語義修剪", - "contextLiteSubtitle": "快速空白清理", - "contextAggressiveSubtitle": "摘要與時效管理", - "contextUltraSubtitle": "啟發式修剪", - "contextOmniglyphSubtitle": "以圖像呈現上下文", - "compressionStudioSubtitle": "即時引擎串聯", - "compressionExclusionsSubtitle": "__MISSING__:Per-model/endpoint bypass", + "contextLlmlinguaSubtitle": "語意剪枝", + "contextLiteSubtitle": "快速空白字符清理", + "contextAggressiveSubtitle": "摘要與老化", + "contextUltraSubtitle": "啟發式剪枝", + "contextOmniglyphSubtitle": "上下文作為圖像", + "compressionStudioSubtitle": "實時引擎級聯", + "compressionExclusionsSubtitle": "按模型/端點繞過", "chaosConfigSubtitle": "多模型並行執行", "routingSection": "路由", "protocolsSection": "協議", - "agentsAiSection": "代理與 AI", + "agentsAiSection": "智能體與AI", "cacheContextSection": "快取與上下文", "analyticsSection": "分析", "costsSection": "成本", @@ -1078,11 +1078,11 @@ "auditSecuritySection": "審計與安全", "devtoolsSection": "開發工具", "configurationSection": "設定", - "aiFeaturesSection": "AI 功能", + "aiFeaturesSection": "AI功能", "mcp": "MCP", "a2a": "A2A", - "plugins": "外掛程式", - "apiEndpoints": "API 端點", + "plugins": "外掛", + "apiEndpoints": "API端點", "batchFiles": "檔案", "analyticsEvals": "評估", "analyticsSearch": "搜尋", @@ -1091,116 +1091,116 @@ "analyticsCompression": "壓縮", "costsBudget": "預算", "costsFreeTiers": "免費層預算", - "costsFreeTiersSubtitle": "每月免費權杖配額", + "costsFreeTiersSubtitle": "每月免費令牌配額", "freeProviderRankings": "免費提供者排名", - "freeProviderRankingsSubtitle": "根據模型 ELO 分數排名的最佳免費提供者", + "freeProviderRankingsSubtitle": "按模型ELO分數排名的最佳免費提供者", "costsQuotaShare": "配額共享", "costsPricing": "定價", "logsProxy": "代理日誌", - "logsConsole": "控制台", + "logsConsole": "控制檯", "logsActivity": "活動", - "auditMcp": "MCP 審計", - "auditA2a": "A2A稽核", + "auditMcp": "MCP審計", + "auditA2a": "A2A審核", "settingsGeneral": "通用", "settingsAppearance": "外觀", - "settingsAi": "AI 設定", + "settingsAi": "AI設定", "settingsSecurity": "安全", - "settingsAccessTokens": "存取令牌", + "settingsAccessTokens": "訪問令牌", "settingsFeatureFlags": "功能標誌", "settingsCache": "__MISSING__:Cache", "settingsAuthz": "授權", "settingsRouting": "路由", "settingsResilience": "彈性", "modelLockout": "模型鎖定", - "settingsAdvanced": "高階", + "settingsAdvanced": "高級", "omniProxySection": "OmniProxy", "quotaTracker": "提供者配額", "providerQuota": "提供者配額", - "runtime": "執行時", - "consoleLogs": "控制台日誌", + "runtime": "運行時", + "consoleLogs": "控制檯日誌", "logsTimeline": "Timeline", - "globalRouting": "全域性路由", - "mitmProxy": "MITM 代理", + "globalRouting": "全域路由", + "mitmProxy": "MITM代理", "oneProxy": "1Proxy", - "agenticFeaturesSection": "代理功能", + "agenticFeaturesSection": "智能體功能", "otherFeaturesSection": "其他功能", "compressionContextGroup": "壓縮上下文", "gamificationGroup": "Gamification", "toolsGroup": "工具", "integrationsGroup": "整合", "proxyGroup": "代理", - "costsParametersGroup": "成本引數", + "costsParametersGroup": "成本參數", "auditGroup": "審計", "batchGroup": "批處理", - "homeSubtitle": "儀表盤概覽", - "providersSubtitle": "管理 AI 提供者", + "homeSubtitle": "看板概覽", + "providersSubtitle": "管理AI提供者", "quotaTrackerSubtitle": "跟蹤使用限制", "providerQuotaSubtitle": "跟蹤提供者使用限制", - "runtimeSubtitle": "即時彈性與會話", + "runtimeSubtitle": "實時彈性與工作階段", "contextCombosSubtitle": "組合壓縮引擎", - "cliToolsSubtitle": "設定 CLI 執行時", - "agentsSubtitle": "管理本地代理", + "cliToolsSubtitle": "設定CLI運行時", + "agentsSubtitle": "管理本地智能體", "cloudAgentsSubtitle": "管理基於雲的代理", "apiEndpointsSubtitle": "暴露自定義端點", - "proxySubtitle": "HTTP 代理設定", - "mitmProxySubtitle": "MITM 攔截", - "oneProxySubtitle": "公共代理閘道器", + "proxySubtitle": "HTTP代理設定", + "mitmProxySubtitle": "MITM攔截", + "oneProxySubtitle": "公共代理網關", "leaderboard": "排行榜", "profile": "個人資料", - "tokens": "權杖", + "tokens": "令牌", "leaderboardSubtitle": "排名與成就", - "profileSubtitle": "帳戶與偏好", - "tokensSubtitle": "權杖使用和預算", + "profileSubtitle": "賬戶與偏好", + "tokensSubtitle": "令牌使用和預算", "usageSubtitle": "流量和使用統計", "analyticsComboHealthSubtitle": "組合目標可靠性", "analyticsUtilizationSubtitle": "提供者利用率", "costsSubtitle": "支出明細", "cacheSubtitle": "快取命中率", - "analyticsCompressionSubtitle": "權杖節省統計", + "analyticsCompressionSubtitle": "令牌節省統計", "analyticsSearchSubtitle": "搜尋工具分析", "analyticsEvalsSubtitle": "評估套件結果", "providerStats": "提供者統計", - "providerStatsSubtitle": "延遲和效能指標", + "providerStatsSubtitle": "延遲和性能指標", "logsSubtitle": "應用日誌", "logsProxySubtitle": "代理流量日誌", - "consoleLogsSubtitle": "控制台輸出", + "consoleLogsSubtitle": "控制檯輸出", "logsTimelineSubtitle": "__MISSING__:Visual request timeline", - "logsActivitySubtitle": "使用者活動日誌", + "logsActivitySubtitle": "用戶活動日誌", "healthSubtitle": "系統健康檢查", "costsPricingSubtitle": "按模型定價規則", "costsBudgetSubtitle": "預算限制", "costsQuotaShareSubtitle": "跨金鑰共享提供者配額", "auditLogSubtitle": "授權審計", - "auditMcpSubtitle": "MCP 伺服器審計", - "auditA2aSubtitle": "A2A 協議審計", + "auditMcpSubtitle": "MCP伺服器審計", + "auditA2aSubtitle": "A2A協議審計", "translatorSubtitle": "格式轉換", - "playgroundSubtitle": "即時測試提示", - "searchToolsSubtitle": "搜尋工具登錄檔", - "memorySubtitle": "持久的代理記憶", - "omniSkillsSubtitle": "沙箱技能登錄檔", - "agentSkillsSubtitle": "A2A 技能登錄檔", - "mcpSubtitle": "MCP 伺服器控制", - "a2aSubtitle": "A2A 協議伺服器", - "pluginsSubtitle": "外掛程式市集與安裝", + "playgroundSubtitle": "實時測試提示", + "searchToolsSubtitle": "搜尋工具註冊表", + "memorySubtitle": "持久的智能體記憶", + "omniSkillsSubtitle": "沙箱Skills註冊表", + "agentSkillsSubtitle": "A2A Skills註冊表", + "mcpSubtitle": "MCP伺服器控制", + "a2aSubtitle": "A2A協議伺服器", + "pluginsSubtitle": "外掛市場與安裝", "mediaSubtitle": "快取的媒體檔案", "batchFilesSubtitle": "批處理輸入/輸出檔案", "settingsSubtitle": "所有設定", "settingsGeneralSubtitle": "應用基礎", "settingsAppearanceSubtitle": "主題與佈局", - "settingsAiSubtitle": "AI 行為預設值", - "globalRoutingSubtitle": "全域性路由規則", + "settingsAiSubtitle": "AI行為預設值", + "globalRoutingSubtitle": "全域路由規則", "settingsResilienceSubtitle": "重試與斷路器", - "settingsAdvancedSubtitle": "高階使用者選項", + "settingsAdvancedSubtitle": "高級用戶選項", "settingsSecuritySubtitle": "認證與加密", - "settingsAccessTokensSubtitle": "遠端模式的範圍 CLI 令牌", + "settingsAccessTokensSubtitle": "用於遠程模式的限定範圍CLI令牌", "settingsFeatureFlagsSubtitle": "切換系統功能", "settingsCacheSubtitle": "__MISSING__:Model catalog and response caching", "settingsSidebar": "側邊欄", "settingsSidebarSubtitle": "自定義側邊欄佈局", "settingsAuthzSubtitle": "路由清單與繞過策略", - "docsSubtitle": "檔案", + "docsSubtitle": "文件", "issuesSubtitle": "報告錯誤", - "changelogSubtitle": "釋出說明", + "changelogSubtitle": "發佈說明", "costsQuotaPlans": "計劃與配額", "costsQuotaPlansSubtitle": "按提供者設定計劃", "activity": "活動", @@ -1209,40 +1209,40 @@ "systemGroup": "系統", "costsOverview": "概述", "costsOverviewSubtitle": "綜合成本分析", - "agentBridge": "代理橋接", - "agentBridgeSubtitle": "攔截 IDE 代理流量", + "agentBridge": "智能體橋接", + "agentBridgeSubtitle": "攔截IDE智能體流量", "trafficInspector": "流量檢查器", - "trafficInspectorSubtitle": "監控 LLM 呼叫 + 除錯任何 HTTPS 流量", - "cliCode": "CLI 程式碼的", - "cliCodeSubtitle": "指向 OmniRoute 的程式碼工具", - "cliAgents": "CLI 代理", - "cliAgentsSubtitle": "自主 CLI 代理", - "acpAgents": "ACP 代理", - "acpAgentsSubtitle": "由 OmniRoute 生成的 CLI", + "trafficInspectorSubtitle": "監控LLM呼叫 + 調試任何HTTPS流量", + "cliCode": "CLI代碼的", + "cliCodeSubtitle": "指向OmniRoute的代碼工具", + "cliAgents": "CLI智能體", + "cliAgentsSubtitle": "自主CLI智能體", + "acpAgents": "ACP智能體", + "acpAgentsSubtitle": "由OmniRoute生成的CLI", "skipToContent": "跳到內容", - "mainNavigation": "主導覽", - "unpinSection": "取消固定分割槽", - "pinSectionOpen": "固定分割槽開啟", + "mainNavigation": "主導航", + "unpinSection": "取消固定分區", + "pinSectionOpen": "固定分區打開", "reloadPage": "重新載入頁面", - "dragReorderSection": "拖拽以重新排序分割槽", + "dragReorderSection": "拖拽以重新排序分區", "dragReorderItem": "拖拽以重新排序", "cannotHide": "此項無法隱藏", "alwaysVisible": "始終可見", "groupSeparatorLabel": "隔斷", - "discovery": "探索", - "discoverySubtitle": "掃描提供者以尋找免費存取" + "discovery": "發現", + "discoverySubtitle": "掃描提供者以獲取免費訪問" }, "webhooks": { "title": "Webhook", - "description": "設定系統事件的 HTTP 回撥。", - "configuredWebhooks": "已設定的 Webhook", - "configuredWebhooksDesc": "管理投遞端點、訂閱事件、狀態和測試傳送。", - "addWebhook": "新增 Webhook", - "editWebhook": "編輯 Webhook", + "description": "設定系統事件的HTTP回調。", + "configuredWebhooks": "已設定的Webhook", + "configuredWebhooksDesc": "管理投遞端點、訂閱事件、狀態和測試發送。", + "addWebhook": "新增Webhook", + "editWebhook": "編輯Webhook", "name": "名稱", "namePlaceholder": "生產監控", - "unnamedWebhook": "未命名 Webhook", - "url": "端點 URL", + "unnamedWebhook": "未命名Webhook", + "url": "端點URL", "events": "事件", "allEvents": "所有事件", "secret": "金鑰", @@ -1256,27 +1256,27 @@ "lastTriggered": "上次觸發", "actions": "操作", "enabled": "已啟用", - "enabledDesc": "停用的 Webhook 會繼續儲存,但不會接收投遞。", - "refresh": "重新整理", - "loading": "正在載入 Webhook...", + "enabledDesc": "禁用的Webhook會繼續保存,但不會接收投遞。", + "refresh": "刷新", + "loading": "正在載入Webhook...", "never": "從未", - "failureCount": "{count, plural, =0 {no failures} one {# 次失敗} other {# 次失敗}}", - "testWebhook": "傳送測試", - "testSuccess": "測試 Webhook 傳送成功。", - "testFailed": "測試 Webhook 失敗。", - "saveSuccess": "Webhook 儲存成功。", - "saveFailed": "儲存 Webhook 失敗。", - "loadFailed": "載入 Webhook 失敗。", + "failureCount": "{count, plural, =0 {無失敗} one {# 次失敗} other {# 次失敗}}", + "testWebhook": "發送測試", + "testSuccess": "測試Webhook發送成功。", + "testFailed": "測試Webhook失敗。", + "saveSuccess": "Webhook保存成功。", + "saveFailed": "保存Webhook失敗。", + "loadFailed": "載入Webhook失敗。", "delete": "刪除", - "deleteConfirm": "確定要刪除此 Webhook 嗎?", - "deleteSuccess": "Webhook 刪除成功。", - "deleteFailed": "刪除 Webhook 失敗。", + "deleteConfirm": "確定要刪除此Webhook嗎?", + "deleteSuccess": "Webhook刪除成功。", + "deleteFailed": "刪除Webhook失敗。", "edit": "編輯", "enable": "啟用", - "disable": "停用", - "noWebhooks": "尚未設定 Webhook。", - "signatureTitle": "Webhook 簽名", - "signatureDescription": "每次投遞都會包含一個 X-Webhook-Signature 請求頭,該簽名使用 Webhook 金鑰通過 HMAC-SHA256 生成。信任載荷前請先驗證簽名。", + "disable": "禁用", + "noWebhooks": "尚未設定Webhook。", + "signatureTitle": "Webhook簽名", + "signatureDescription": "每次投遞都會包含一個X-Webhook-Signature請求標頭,該簽名使用Webhook金鑰通過HMAC-SHA256 生成。信任載荷前請先驗證簽名。", "wizard": { "cancel": "取消", "step1Title": "選擇整合", @@ -1285,91 +1285,91 @@ "back": "返回", "next": "下一步", "finish": "完成", - "step1Desc": "選擇此 Webhook 要對接的目標整合系統。" + "step1Desc": "選擇此Webhook要對接的目標整合系統。" }, "howItWorks": { - "step1": "選擇一個整合提供者(如 Slack、Discord、自定義 Webhook)並設定連線詳情。", + "step1": "選擇一個整合提供者(如Slack、Discord、自定義Webhook)並設定連接詳情。", "step2": "設定要訂閱的系統事件(如補全錯誤、模型回退或用量限制)。", - "step3": "傳送測試負載以驗證端點是否能正常接收資料。", - "step4": "使用 Webhook 金鑰對 X-Webhook-Signature HMAC-SHA256 頭進行驗證,以確保端點安全。", - "title": "Webhook 工作原理", + "step3": "發送測試負載以驗證端點是否能正常接收資料。", + "step4": "使用Webhook金鑰對X-Webhook-Signature HMAC-SHA256 頭驗證,以確保端點安全。", + "title": "Webhook工作原理", "customOnly": "僅適用於自定義端點整合。", - "hmacRecipeTitle": "HMAC 驗證方案", - "hmacRecipe": "在 Node.js 中驗證 Webhook 負載:使用金鑰對原始請求體計算 HMAC-SHA256,然後通過 timingSafeEqual 與 X-Webhook-Signature 頭進行比對。", - "timeoutNote": "Webhook 投遞超時時間為 10 秒。", + "hmacRecipeTitle": "HMAC驗證方案", + "hmacRecipe": "在Node.js中驗證Webhook負載:使用金鑰對原始請求體計算HMAC-SHA256,然後通過timingSafeEqual與X-Webhook-Signature頭進行比對。", + "timeoutNote": "Webhook投遞超時時間為 10 秒。", "retryNote": "投遞失敗將最多重試 5 次,採用指數退避策略。", - "docsLink": "閱讀完整的 Webhook 開發者指南", - "hmacRecipePython": "Python HMAC 驗證:hmac.new(secret, body, hashlib.sha256).hexdigest()", - "hmacRecipeBash": "Bash HMAC 驗證:echo -n \"$body\" | openssl dgst -sha256 -hmac \"$secret\"" + "docsLink": "閱讀完整的Webhook開發者指南", + "hmacRecipePython": "Python HMAC驗證:hmac.new(secret, body, hashlib.sha256).hexdigest()", + "hmacRecipeBash": "Bash HMAC驗證:echo -n \"$body\" | openssl dgst -sha256 -hmac \"$secret\"" }, "deliveries": { "title": "投遞日誌", - "loadFailed": "載入 Webhook 投遞日誌失敗。", - "empty": "暫無投遞記錄。觸發一個事件或傳送測試負載。", + "loadFailed": "載入Webhook投遞日誌失敗。", + "empty": "暫無投遞記錄。觸發一個事件或發送測試負載。", "status": "狀態", "event": "事件", "latency": "延遲", - "at": "傳送時間" + "at": "發送時間" }, "kinds": { "comingSoon": "即將推出", "slack": "Slack", - "slackDesc": "將系統事件直接釋出到 Slack 頻道", + "slackDesc": "將系統事件直接發佈到Slack頻道", "telegram": "Telegram", - "telegramDesc": "通過 Telegram 機器人傳送事件訊息", + "telegramDesc": "通過Telegram機器人發送事件消息", "discord": "Discord", - "discordDesc": "將即時更新直接推送到 Discord 伺服器", - "custom": "自定義 Webhook", - "customDesc": "將系統事件負載投遞到任意 HTTPS 端點", + "discordDesc": "將實時更新直接推送到Discord伺服器", + "custom": "自定義Webhook", + "customDesc": "將系統事件負載投遞到任意HTTPS端點", "email": "郵件通知", "emailDesc": "通過郵件接收摘要更新", "pagerduty": "PagerDuty", - "pagerdutyDesc": "在 PagerDuty 上為關鍵系統問題觸發告警", + "pagerdutyDesc": "在PagerDuty上為關鍵系統問題觸發告警", "teams": "Microsoft Teams", - "teamsDesc": "將系統通知轉發到 Microsoft Teams 頻道" + "teamsDesc": "將系統通知轉發到Microsoft Teams頻道" }, - "testPayloadSent": "測試負載已傳送", + "testPayloadSent": "測試負載已發送", "testResponse": "測試回應", "validateUrl": { - "checking": "正在檢查 URL...", - "ok": "URL 有效", - "blockedPrivate": "URL 是被阻止的私有地址", - "invalidUrl": "URL 格式無效" + "checking": "正在檢查URL...", + "ok": "URL有效", + "blockedPrivate": "URL是已阻止的私有地址", + "invalidUrl": "URL格式無效" }, "custom": { - "endpointUrl": "端點 URL", + "endpointUrl": "端點URL", "endpointUrlPlaceholder": "https://api.yourdomain.com/webhook", "secretKey": "金鑰", "secretKeyPlaceholder": "輸入金鑰或留空以自動生成", - "secretKeyHint": "用於對負載頭進行簽名以進行身份驗證。" + "secretKeyHint": "用於對負載頭簽名以身份驗證。" }, "discord": { "webhookUrl": "Discord Webhook URL", "webhookUrlPlaceholder": "https://discord.com/api/webhooks/...", - "webhookUrlHint": "從 Discord 頻道整合設定中複製的 Webhook URL。", - "tutorial": "如何建立 Discord Webhook:" + "webhookUrlHint": "從Discord頻道整合設定中複製的Webhook URL。", + "tutorial": "如何創建Discord Webhook:" }, "slack": { "webhookUrl": "Slack Webhook URL", "webhookUrlPlaceholder": "https://hooks.slack.com/services/...", - "webhookUrlHint": "從 Slack Incoming Webhooks 整合中複製的 Webhook URL。", - "tutorial": "如何建立 Slack Webhook:" + "webhookUrlHint": "從Slack Incoming Webhooks整合中複製的Webhook URL。", + "tutorial": "如何創建Slack Webhook:" }, "telegram": { - "botToken": "Telegram 機器人權杖", + "botToken": "Telegram機器人令牌", "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", - "botTokenHint": "建立機器人時從 @BotFather 獲取的 HTTP API 權杖。", - "chatId": "Telegram 聊天 ID / 頻道", + "botTokenHint": "創建機器人時從 @BotFather獲取的HTTP API令牌。", + "chatId": "Telegram聊天ID / 頻道", "chatIdPlaceholder": "-100123456789 或 @channelname", - "chatIdHint": "聊天/頻道的唯一數字識別符號或公開使用者名稱。", - "tutorial": "如何設定 Telegram Webhook:" + "chatIdHint": "聊天/頻道的唯一數字標識符或公開用戶名。", + "tutorial": "如何設定Telegram Webhook:" } }, "compliance": { "auditTitle": "審計", - "auditDescription": "在一個運維檢視中檢視合規事件和 MCP 工具呼叫。", + "auditDescription": "在一個運維視圖中查看合規事件和MCP工具呼叫。", "complianceTab": "合規", - "mcpTab": "MCP 審計", + "mcpTab": "MCP審計", "title": "合規審計", "description": "合規審計日誌記錄的策略、訪問、提供者和安全事件。", "eventType": "事件類型", @@ -1379,49 +1379,49 @@ "info": "資訊", "warning": "警告", "critical": "嚴重", - "sourceIp": "來源 IP", - "userOrKey": "使用者 / 金鑰", + "sourceIp": "來源IP", + "userOrKey": "用戶 / 金鑰", "action": "操作", "result": "結果", "details": "詳情", "timestamp": "時間戳", "from": "起始", "to": "結束", - "refresh": "重新整理", - "export": "匯出", + "refresh": "刷新", + "export": "導出", "clearFilters": "清除篩選", "loading": "正在載入審計事件...", "showing": "正在顯示 {total} 個事件中的 {count} 個", "policyViolation": "策略違規", - "accessDenied": "訪問被拒絕", + "accessDenied": "訪問已拒絕", "injectionBlocked": "注入已阻止", "noEvents": "尚未記錄合規事件。", "failedFetch": "獲取合規審計日誌失敗。", - "viewDetails": "檢視詳情", + "viewDetails": "查看詳情", "closeDetails": "關閉詳情", "notAvailable": "—", "system": "系統", "previous": "上一頁", "next": "下一頁", - "mcpAudit": "MCP 審計", - "mcpAuditDesc": "MCP 伺服器記錄的工具呼叫審計條目。", - "failedFetchMcpAudit": "獲取 MCP 審計日誌失敗。", + "mcpAudit": "MCP審計", + "mcpAuditDesc": "MCP伺服器記錄的工具呼叫審計條目。", + "failedFetchMcpAudit": "獲取MCP審計日誌失敗。", "tool": "工具", "toolPlaceholder": "按工具名稱篩選", "duration": "持續時間", - "apiKey": "API 金鑰", + "apiKey": "API Key", "output": "輸出", "allResults": "所有結果", "success": "成功", "failure": "失敗", - "noMcpEvents": "尚未記錄 MCP 審計事件。", - "a2aAudit": "A2A稽核", + "noMcpEvents": "尚未記錄MCP審計事件。", + "a2aAudit": "A2A審核", "a2aAuditDesc": "A2A伺服器記錄的任務執行審計跟蹤。", "a2aShowingTasks": "顯示 {count} 個任務(共 {total} 個)", - "a2aSkill": "技能", - "a2aSkillPlaceholder": "按技能名稱過濾", + "a2aSkill": "Skills", + "a2aSkillPlaceholder": "按Skills名稱過濾", "a2aState": "狀態", - "a2aAllStates": "所有州", + "a2aAllStates": "所有狀態", "a2aStateSubmitted": "已提交", "a2aStateWorking": "工作", "a2aStateCompleted": "已完成", @@ -1429,23 +1429,23 @@ "a2aStateCancelled": "取消", "a2aTaskId": "任務編號", "a2aEvents": "活動", - "a2aArtifacts": "文物", - "a2aNoTasks": "沒有記錄 A2A 任務。", - "a2aLoadingTasks": "正在載入 A2A 任務...", + "a2aArtifacts": "產物", + "a2aNoTasks": "沒有記錄A2A任務。", + "a2aLoadingTasks": "正在載入A2A任務...", "actor": "演員", "actorPlaceholder": "按演員篩選", "eventTypes": { - "apiKey.activate": "API 金鑰已啟用", - "apiKey.ban": "API 金鑰已被禁止", - "apiKey.deactivate": "API 金鑰已停用", - "apiKey.regenerate": "API 金鑰已重新生成", - "apiKey.scopes.grant": "API 金鑰範圍已授予", - "apiKey.scopes.revoke": "API 金鑰範圍已被撤銷", - "apiKey.scopes.update": "API 金鑰範圍已更新", - "apiKey.unban": "API 金鑰已解禁", + "apiKey.activate": "API Key已激活", + "apiKey.ban": "API Key已已禁止", + "apiKey.deactivate": "API Key已停用", + "apiKey.regenerate": "API Key已重新生成", + "apiKey.scopes.grant": "API Key範圍已授予", + "apiKey.scopes.revoke": "API Key範圍已已撤銷", + "apiKey.scopes.update": "API Key範圍已更新", + "apiKey.unban": "API Key已解禁", "auth.login.error": "登入錯誤", "auth.login.failed": "登入失敗", - "auth.login.locked": "登入被鎖定", + "auth.login.locked": "登入已鎖定", "auth.login.misconfigured": "登入設定錯誤", "auth.login.setup_required": "需要登入設定", "auth.login.success": "登入成功", @@ -1453,110 +1453,110 @@ "compliance.cleanup": "合規清理", "provider.credentials.applied": "提供者憑據已應用", "provider.credentials.batch_revoked": "提供者憑據批次已撤銷", - "provider.credentials.bulk_created": "提供者憑據批次建立", - "provider.credentials.bulk_imported": "提供者憑據已批次匯入", - "provider.credentials.created": "提供者憑據已建立", - "provider.credentials.imported": "提供者憑據已匯入", - "provider.credentials.revoked": "提供者憑據已被撤銷", + "provider.credentials.bulk_created": "提供者憑據批次創建", + "provider.credentials.bulk_imported": "提供者憑據已批次導入", + "provider.credentials.created": "提供者憑據已創建", + "provider.credentials.imported": "提供者憑據已導入", + "provider.credentials.revoked": "提供者憑據已已撤銷", "provider.credentials.updated": "提供者憑據已更新", - "provider.validation.ssrf_blocked": "提供者 SSRF 被阻止", + "provider.validation.ssrf_blocked": "提供者SSRF已阻止", "quota.plan.updated": "配額計劃已更新", - "quota.pool.created": "配額池已建立", + "quota.pool.created": "配額池已創建", "quota.pool.deleted": "配額池已刪除", "quota.pool.updated": "配額池已更新", - "quota.store.driver_changed": "配額儲存驅動程式已更改", + "quota.store.driver_changed": "配額存儲驅動程式已更改", "server.start": "伺服器啟動", - "service.reveal_api_key": "服務 API 金鑰已洩露", + "service.reveal_api_key": "服務API Key已洩露", "settings.update": "設定已更新", "settings.update_failed": "設定更新失敗", - "sync.token.created": "同步權杖已建立", - "sync.token.revoked": "同步權杖已撤銷" + "sync.token.created": "同步令牌已創建", + "sync.token.revoked": "同步令牌已撤銷" } }, "themesPage": { "title": "主題", - "description": "選擇預設主題,或僅用一種顏色建立自定義主題", + "description": "選擇預設主題,或僅用一種顏色創建自定義主題", "presetColors": "熱門配色", "customTheme": "自定義主題", - "customThemeDesc": "點選建立主題,然後選擇一種顏色", - "createTheme": "建立主題", + "customThemeDesc": "點擊創建主題,然後選擇一種顏色", + "createTheme": "創建主題", "activePreset": "當前主題" }, "header": { "logout": "退出登入", - "quickNavigation": "快速導覽", - "quickNavigationTitle": "快速導覽(⌘K / Ctrl+K)", - "openQuickNavigation": "開啟快速導覽", - "switchToLightMode": "切換至淺色模式", - "switchToDarkMode": "切換至深色模式", + "quickNavigation": "快速導航", + "quickNavigationTitle": "快速導航 (⌘K / Ctrl+K)", + "openQuickNavigation": "打開快速導航", + "switchToLightMode": "切換到淺色模式", + "switchToDarkMode": "切換到深色模式", "language": "語言", "providers": "提供者", - "providerDescription": "管理 AI 提供者連線", + "providerDescription": "管理AI提供者連接", "combos": "組合", "comboDescription": "支援故障回退的模型組合", "usage": "用量與分析", - "usageDescription": "監控 API 用量、Token 消耗和請求日誌", + "usageDescription": "監控API用量、Token消耗和請求日誌", "analytics": "分析", - "analyticsDescription": "檢視圖表、趨勢和評測洞察", - "cliTools": "CLI 工具", - "cliToolsDescription": "設定 CLI 工具", + "analyticsDescription": "查看圖表、趨勢和評測洞察", + "cliTools": "CLI工具", + "cliToolsDescription": "設定CLI工具", "home": "首頁", - "homeDescription": "歡迎使用 OmniRoute", + "homeDescription": "歡迎使用OmniRoute", "endpoint": "端點", - "endpointDescription": "管理代理端點、MCP、A2A 和 API 端點", + "endpointDescription": "管理代理端點、MCP、A2A和API端點", "mcp": "MCP", - "mcpDescription": "Model Context Protocol 服務管理與工具", + "mcpDescription": "Model Context Protocol服務管理與工具", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent 協議任務與可觀測性", + "a2aDescription": "Agent-to-Agent協議任務與可觀測性", "settings": "設定", "settingsDescription": "管理你的偏好設定", - "openaiCompatible": "OpenAI 相容", - "anthropicCompatible": "Anthropic 相容", + "openaiCompatible": "OpenAI相容", + "anthropicCompatible": "Anthropic相容", "media": "媒體", - "mediaDescription": "生成影像、影片和音樂", + "mediaDescription": "生成圖像、視頻和音樂", "themes": "主題", - "themesDescription": "為整個儀表板選擇顏色主題", - "costsDescription": "跟蹤支出,分析趨勢,管理所有 AI 提供者的預算", - "cacheDescription": "監控提供者提示快取效率和本地語義回應複用。", - "limitsDescription": "為每個 API 金鑰和提供者設定速率限制和配額", - "runtimeDescription": "即時執行時可觀測性 — 斷路器、冷卻、模型鎖定、會話和配額告警", - "apiManagerDescription": "管理 OmniRoute 例項的 API 金鑰和訪問控制", - "batchDescription": "通過批次 API 呼叫非同步處理大量請求", - "contextCavemanDescription": "基於規則的訊息壓縮、語言包、分析和輸出模式控制。", + "themesDescription": "為整個看板選擇顏色主題", + "costsDescription": "跟蹤支出,分析趨勢,管理所有AI提供者的預算", + "cacheDescription": "監控提供者提示快取效率和本地語意回應複用。", + "limitsDescription": "為每個API Key和提供者設定速率限制和配額", + "runtimeDescription": "實時運行時可觀測性—斷路器、冷卻、模型鎖定、工作階段和配額告警", + "apiManagerDescription": "管理OmniRoute實例的API Key和訪問控制", + "batchDescription": "通過批次API呼叫非同步處理大量請求", + "contextCavemanDescription": "基於規則的消息壓縮、語言包、分析和輸出模式控制。", "contextRtkDescription": "針對工具輸出、終端日誌和構建結果的命令感知壓縮。", "contextCombosDescription": "定義如何為不同路由場景組合引擎。", "changelogDescription": "瞭解最新平臺功能和公告。", - "agentsDescription": "管理和設定 AI 代理工具:Codex、Devin、Jules 和自定義代理", - "cloudAgentsDescription": "編排基於雲的 AI 代理,支援即時任務跟蹤和計劃審批", - "memoryDescription": "持久的對話記憶,支援語義搜尋和 FTS5 全文索引", - "skillsDescription": "安裝和管理沙箱技能,實現自動提示和執行", - "agentSkillsDescription": "代理就緒技能目錄,一鍵複製 URL 以整合 AI 客戶端", - "translatorDescription": "跨 API 格式翻譯和測試提示:OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "互動式測試提示,即時檢視提供者回應和格式檢查", + "agentsDescription": "管理和設定AI智能體工具:Codex、Devin、Jules和自定義智能體", + "cloudAgentsDescription": "編排基於雲的AI智能體,支援實時任務跟蹤和計劃審批", + "memoryDescription": "持久的對話記憶,支援語意搜尋和FTS5 全文索引", + "skillsDescription": "安裝和管理沙箱Skills,實現自動提示和執行", + "agentSkillsDescription": "代理就緒Skills目錄,一鍵複製URL以整合AI客戶端", + "translatorDescription": "跨API格式翻譯和測試提示:OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "交互式測試提示,實時查看提供者回應和格式檢查", "searchToolsDescription": "搜尋分析、提供者細分、快取命中率和成本跟蹤", - "logsDescription": "即時請求日誌、錯誤追蹤和流式事件檢查器", - "auditDescription": "API 金鑰使用、MCP 工具呼叫和策略事件的合規審計追蹤", - "webhooksDescription": "設定 Webhook 端點以接收即時事件通知", + "logsDescription": "實時請求日誌、錯誤追蹤和流式事件檢查器", + "auditDescription": "API Key使用、MCP工具呼叫和策略事件的合規審計追蹤", + "webhooksDescription": "設定Webhook端點以接收實時事件通知", "healthDescription": "系統健康概覽:提供者、斷路器、速率限制和資料庫", - "proxyDescription": "為出站提供者連線設定上游代理設定", - "apiEndpointsDescription": "管理自定義 API 端點設定和路由覆蓋", + "proxyDescription": "為出站提供者連接設定上游代理設定", + "apiEndpointsDescription": "管理自定義API端點設定和路由覆蓋", "batchFilesDescription": "瀏覽和管理批處理作業輸出檔案和結果", - "analyticsEvalsDescription": "模型評估結果和效能基準", + "analyticsEvalsDescription": "模型評估結果和性能基準", "analyticsSearchDescription": "搜尋查詢分析、快取命中率和成本跟蹤", "analyticsUtilizationDescription": "提供者利用率指標和容量規劃", - "analyticsComboHealthDescription": "組合路由設定的即時健康與效能", - "analyticsCompressionDescription": "上下文壓縮分析和權杖節省", - "costsBudgetDescription": "每個 API 金鑰和提供者的預算限制和支出告警", - "costsPricingDescription": "用於權杖成本計算的自定義定價設定", + "analyticsComboHealthDescription": "組合路由設定的實時健康與性能", + "analyticsCompressionDescription": "上下文壓縮分析和令牌節省", + "costsBudgetDescription": "每個API Key和提供者的預算限制和支出告警", + "costsPricingDescription": "用於令牌成本計算的自定義定價設定", "logsProxyDescription": "上游代理請求日誌和流量檢查", - "logsConsoleDescription": "應用控制台輸出和除錯日誌", - "logsActivityDescription": "使用者操作和系統事件的審計追蹤", - "auditMcpDescription": "MCP 工具呼叫審計追蹤和合規記錄", - "auditA2a": "A2A稽核", - "auditA2aDescription": "A2A任務執行審計追蹤、狀態轉換、技能呼叫記錄", - "settingsGeneralDescription": "儲存、資料庫和通用例項設定", + "logsConsoleDescription": "應用控制檯輸出和調試日誌", + "logsActivityDescription": "用戶操作和系統事件的審計追蹤", + "auditMcpDescription": "MCP工具呼叫審計追蹤和合規記錄", + "auditA2a": "A2A審核", + "auditA2aDescription": "A2A任務執行審計追蹤、狀態轉換、Skills呼叫記錄", + "settingsGeneralDescription": "存儲、資料庫和通用實例設定", "settingsAppearanceDescription": "主題、品牌和視覺自定義", - "settingsAiDescription": "AI 行為、思維預算、視覺和記憶設定", + "settingsAiDescription": "AI行為、思維預算、視覺和記憶設定", "settingsCacheDescription": "__MISSING__:TTL for model catalog cache entries", "settingsSecurityDescription": "認證、授權和訪問控制設定", "featureFlags": "功能標誌", @@ -1568,166 +1568,166 @@ "featureFlagsCategoryAll": "全部", "featureFlagsCategorySecurity": "安全性", "featureFlagsCategoryNetwork": "網路", - "featureFlagsCategoryPolicies": "政策", - "featureFlagsCategoryRuntime": "執行時", - "featureFlagsCategoryCli": "命令列介面", + "featureFlagsCategoryPolicies": "策略", + "featureFlagsCategoryRuntime": "運行時", + "featureFlagsCategoryCli": "CLI", "featureFlagsCategoryHealth": "健康", "featureFlagsSourceDb": "資料庫", - "featureFlagsSourceEnv": "環境電壓", + "featureFlagsSourceEnv": "環境變量", "featureFlagsSourceDefault": "預設", "featureFlagsReset": "重置", "featureFlagsResetAll": "重置所有覆蓋", - "featureFlagsResetAllConfirm": "您確定要重置所有功能標誌覆蓋嗎?這會將所有標誌恢復為其 ENV 或預設值。", - "featureFlagsRestartRequired": "需要重啟才能申請", + "featureFlagsResetAllConfirm": "您確定要重置所有功能標誌覆蓋嗎?這會將所有標誌恢復為其ENV或預設值。", + "featureFlagsRestartRequired": "需要重新啟動才能申請", "featureFlagsNoResults": "沒有符合您搜尋條件的標誌", "featureFlagsSaved": "標誌已更新", "featureFlagsError": "更新標誌失敗", "settingsRoutingDescription": "路由規則、模型別名、組合預設值和降級設定", "settingsResilienceDescription": "斷路器、重試和回退設定", - "settingsAdvancedDescription": "高階負載規則、請求限制和代理 API 設定", - "mitmProxyDescription": "設定 MITM 代理設定以進行流量檢查和除錯", - "oneProxyDescription": "設定 1Proxy 設定以實現高階代理鏈", - "omniSkillsDescription": "安裝和管理用於自動提示和工具執行的沙箱技能" + "settingsAdvancedDescription": "高級負載規則、請求限制和代理API設定", + "mitmProxyDescription": "設定MITM代理設定以流量檢查和調試", + "oneProxyDescription": "設定 1Proxy設定以實現高級代理鏈", + "omniSkillsDescription": "安裝和管理用於自動提示和工具執行的沙箱Skills" }, "cloudSyncStatus": { "synced": "已同步", "syncing": "正在同步...", "off": "同步關閉", "error": "同步錯誤", - "disabled": "已停用", - "connected": "已連線", - "disconnected": "已中斷連線", - "lastSync": "遠端設定同步 {status} — 上次同步:{time}", - "statusLabel": "遠端設定同步狀態:{status}" + "disabled": "已禁用", + "connected": "已連接", + "disconnected": "已斷開", + "lastSync": "遠程設定同步 {status} —上次同步:{time}", + "statusLabel": "遠程設定同步狀態:{status}" }, "breadcrumbs": { "ariaLabel": "麵包屑", - "dashboard": "儀表板", + "dashboard": "看板", "providers": "提供者", "combos": "組合", "settings": "設定", - "general": "一般", + "general": "通用", "appearance": "外觀", - "ai": "AI 設定", + "ai": "AI設定", "routing": "路由", - "resilience": "韌性", - "advanced": "進階", - "accessTokens": "存取權杖", - "featureFlags": "功能開關", + "resilience": "彈性", + "advanced": "高級", + "accessTokens": "訪問令牌", + "featureFlags": "功能標誌", "logs": "日誌", - "auditLog": "稽核日誌", - "console": "主控台", - "logger": "記錄器", + "auditLog": "審計日誌", + "console": "控制檯", + "logger": "日誌記錄器", "translator": "翻譯器", - "playground": "遊樂場", + "playground": "演練場", "add": "新增", "edit": "編輯", - "apiKeys": "API 金鑰", + "apiKeys": "API Key", "models": "模型", - "cliCode": "CLI Code", - "cliAgents": "CLI 代理", - "acpAgents": "ACP 代理", + "cliCode": "CLI代碼", + "cliAgents": "CLI智能體", + "acpAgents": "ACP智能體", "endpoint": "端點", - "apiManager": "API 管理員", + "apiManager": "API管理器", "context": "上下文", "compression": "壓縮", "services": "服務", "analytics": "分析", - "costs": "成本", - "health": "健康狀態", - "runtime": "執行時期", - "webhooks": "Webhook", + "costs": "費用", + "health": "健康狀況", + "runtime": "運行時", + "webhooks": "Webhooks", "home": "首頁", - "activity": "活動", - "agentSkills": "代理技能", - "comboHealth": "組合健康狀態", + "activity": "動態", + "agentSkills": "智能體Skills", + "comboHealth": "組合健康度", "evals": "評估", "search": "搜尋", - "utilization": "使用率", - "apiEndpoints": "API 端點", - "audit": "稽核", + "utilization": "利用率", + "apiEndpoints": "API端點", + "audit": "審計", "a2a": "A2A", "mcp": "MCP", - "batch": "批次", + "batch": "批處理", "files": "檔案", "media": "媒體", "cache": "快取", - "changelog": "變更日誌", + "changelog": "更新日誌", "chaos": "混沌", - "cloudAgents": "雲端代理", - "live": "即時", + "cloudAgents": "雲智能體", + "live": "實時", "studio": "工作室", - "aggressive": "積極", - "caveman": "Caveman", + "aggressive": "激進", + "caveman": "原始人", "ccr": "CCR", "headroom": "餘量", - "lite": "精簡", + "lite": "Lite", "llmlingua": "LLMLingua", "omniglyph": "OmniGlyph", "rtk": "RTK", "sessionDedup": "工作階段去重", - "ultra": "極致", + "ultra": "Ultra", "budget": "預算", "pricing": "定價", - "quotaShare": "配額分享", - "discovery": "探索", - "freeProviderRankings": "免費提供者排名", - "freeTiers": "免費方案", + "quotaShare": "配額共享", + "discovery": "發現", + "freeProviderRankings": "免費服務商排行", + "freeTiers": "免費層級", "gamification": "遊戲化", "leaderboard": "排行榜", "limits": "限制", - "profile": "個人檔案", - "plugins": "外掛程式", - "providerStats": "提供者統計", - "new": "新增", + "profile": "個人資料", + "plugins": "外掛", + "providerStats": "服務商統計", + "new": "新建", "quota": "配額", - "relay": "轉發", + "relay": "中繼", "searchTools": "搜尋工具", - "security": "安全性", + "security": "安全", "sidebar": "側邊欄", "tokens": "Token", "tools": "工具", - "agentBridge": "代理橋接", + "agentBridge": "智能體橋接", "trafficInspector": "流量檢查器", "usage": "用量" }, "home": { "quickStart": "快速入門", - "quickStartDesc": "4 個步驟快速上手:連線提供者、路由模型並監控全域性執行情況。", - "fullDocs": "完整檔案", - "step1Title": "1. 建立 API 金鑰", + "quickStartDesc": "4 個步驟快速上手:連接提供者、路由模型並監控全域運行情況。", + "fullDocs": "完整文件", + "step1Title": "1. 創建API Key", "step1Desc": "前往 端點 -> 已註冊金鑰。為每個環境生成一個獨立金鑰。", - "step2Title": "2. 連線提供者", - "step2Desc": "在 提供者 中新增帳戶。支援 OAuth、API Key 和免費套餐。", + "step2Title": "2. 連接提供者", + "step2Desc": "在 提供者 中新增賬戶。支援OAuth、API Key和免費套餐。", "step3Title": "3. 設定客戶端", - "step3Desc": "在 IDE 或 API 客戶端中將基本 URL 設定為 {url}。", - "step4Title": "4. 監控與最佳化", - "step4Desc": "在 請求日誌分析 中跟蹤 Token、成本與錯誤。", + "step3Desc": "在IDE或API客戶端中將基本URL設定為 {url}。", + "step4Title": "4. 監控與優化", + "step4Desc": "在 請求日誌分析 中跟蹤Token、成本與錯誤。", "providersOverview": "提供者概覽", "configuredOf": "{total} 個可用提供者中已設定 {configured} 個", "noModelsAvailable": "該提供者當前沒有可用模型。", "noProvidersConfigured": "尚未設定提供者", "addProvider": "新增提供者", - "configureFirst": "首先在 {providers} 中設定連線", + "configureFirst": "首先在 {providers} 中設定連接", "configureProvider": "設定提供者", "modelAvailable": "{count} 模型可用", "modelsAvailable": "{count} 個模型可用", - "connectionsActive": "{count} 連線處於活動狀態", - "connectionsActivePlural": "{count} 連線處於活動狀態", + "connectionsActive": "{count} 連接處於活動狀態", + "connectionsActivePlural": "{count} 連接處於活動狀態", "copyModelName": "複製模型名稱", - "documentation": "檔案", + "documentation": "文件", "healthMonitor": "健康監測", "reportIssue": "報告問題", - "activeError": "{active} 有效 · {errors} 錯誤", + "activeError": "{active} 有效· {errors} 錯誤", "oauthLabel": "OAuth", - "apiKeyLabel": "API金鑰", + "apiKeyLabel": "API Key", "requestsShort": "{count} 次請求", "providerModelsTitle": "{provider} - 模型", "copiedModel": "已複製:{model}", "aliasLabel": "別名", "updateNow": "立即更新", "updating": "更新中...", - "updateAvailableDesc": "有新版本可用。點選更新。", + "updateAvailableDesc": "有新版本可用。點擊更新。", "updateStarted": "更新已開始...", "reloadingPageAutomatically": "自動重新載入頁面...", "providerTopology": "提供者拓撲" @@ -1736,9 +1736,9 @@ "title": "分析", "usageAnalyticsTitle": "用量分析", "diversityScoreTitle": "提供者多元化", - "diversityScoreDesc": "近期流量視窗內提供者集中度的快照。", - "diversityShannonEntropy": "夏農熵", - "diversityWindow": "視窗:{count} 次請求 · 最近 {mins} 分鐘", + "diversityScoreDesc": "近期流量窗口內提供者集中度的快照。", + "diversityShannonEntropy": "香農熵", + "diversityWindow": "窗口:{count} 次請求·最近 {mins} 分鐘", "diversityHealthy": "分佈健康", "diversityRiskHigh": "提供者鎖定風險高", "diversityRiskModerate": "分佈一般", @@ -1752,7 +1752,7 @@ "chartCost": "成本", "chartShare": "佔比", "chartServiceTier": "服務層級", - "chartServiceTierSplit": "Fast / Standard 成本拆分", + "chartServiceTierSplit": "Fast / Standard成本拆分", "chartCostPct": "佔成本 {pct}%", "chartUsageDetail": "用量明細", "chartCacheRead": "快取讀取", @@ -1761,25 +1761,25 @@ "chartModelUsageOverTime": "模型用量趨勢", "chartNoData": "無資料", "chartWeekly": "每週", - "activitySummary": "{active} 個活躍天數 · {tokens} 個 Token · {days} 天", - "activityCellTitle": "{date}:{tokens} 個 Token", + "activitySummary": "{active} 天活躍· {tokens} token· {days} 天", + "activityCellTitle": "{date}: {tokens} token", "activityLess": "較少", "activityMore": "較多", - "chartApiKeyBreakdown": "API 金鑰明細", - "chartApiKey": "API 金鑰", - "mostActiveDay": "最活躍日", - "datedTokenCount": "{date} · {tokens} 個 Token", + "chartApiKeyBreakdown": "API Key細分", + "chartApiKey": "API Key", + "mostActiveDay": "最活躍的一天", + "datedTokenCount": "{date} · {tokens} token", "noDataLast7Days": "過去 7 天內無資料", - "requestTokenSummary": "{requests} 個請求 · {tokens} 個 Token", - "chartByAccount": "依帳戶", - "chartByApiKey": "依 API 金鑰", - "unknownApiKey": "未知的 API 金鑰", + "requestTokenSummary": "{requests} 次請求· {tokens} token", + "chartByAccount": "按賬戶", + "chartByApiKey": "按API Key", + "unknownApiKey": "未知API Key", "chartModelBreakdown": "按模型拆分", "chartModel": "模型", "chartProvider": "提供者", "chartProviderBreakdown": "按提供者拆分", "chartDate": "日期", - "chartRequestsByProviderDate": "依提供者與日期的請求", + "chartRequestsByProviderDate": "按服務商和日期的請求數", "filterAllKeys": "全部金鑰", "filterSearchKeys": "搜尋金鑰…", "filterNoKeysMatch": "沒有匹配的金鑰", @@ -1803,20 +1803,20 @@ "period90D": "90 天", "periodYTD": "年初至今", "periodAll": "全部", - "totalTokens": "總 Token 數", - "inputTokens": "輸入 Token", - "outputTokens": "輸出 Token", + "totalTokens": "總Token數", + "inputTokens": "輸入Token", + "outputTokens": "輸出Token", "estCost": "預估成本", "infraTitle": "基礎設施", - "infraAccounts": "帳號", + "infraAccounts": "賬號", "infraProviders": "提供者", - "infraApiKeys": "API 金鑰", + "infraApiKeys": "API Key", "infraModels": "模型", - "perfTitle": "效能", - "perfAvgTokens": "平均 Token / 請求", + "perfTitle": "性能", + "perfAvgTokens": "平均Token / 請求", "perfCostReq": "成本 / 請求", "perfIoRatio": "輸入/輸出比", - "perfFastReq": "Fast 請求", + "perfFastReq": "Fast請求", "highlightsTitle": "亮點", "highlightsTopModel": "熱門模型", "highlightsTopProvider": "熱門提供者", @@ -1824,23 +1824,23 @@ "highlightsDiversity": "多樣性", "highlightsFallbackRate": "回退率", "customRange": "自定義", - "overviewDescription": "監控所有提供者和模型的 API 使用模式、權杖消耗、成本和活動趨勢。", - "evalsDescription": "執行評估套件來測試和驗證您的 LLM 端點。比較模型質量、檢測迴歸和基準延遲。", + "overviewDescription": "監控所有提供者和模型的API使用模式、令牌消耗、成本和活動趨勢。", + "evalsDescription": "運行評估套件來測試和驗證您的LLM端點。比較模型質量、檢測迴歸和基準延遲。", "overview": "概述", "evals": "評測", "search": "搜尋", "utilization": "利用率", "routeTrace": "路由追蹤", - "sectionsAria": "分析區塊", + "sectionsAria": "分析板塊", "utilizationDescription": "提供者配額使用趨勢和速率限制跟蹤", "modelStatus": "模型狀態", "modelStatusCooldown": "冷卻中", "modelStatusUnavailable": "不可用", "modelStatusError": "錯誤", "comboHealth": "組合健康狀況", - "comboHealthDescription": "組合級別配額、使用分佈和效能指標", + "comboHealthDescription": "組合級別配額、使用分佈和性能指標", "compressionAnalyticsTitle": "壓縮分析", - "compressionAnalyticsDescription": "壓縮分析 — token 節省、模式分佈和提供者統計。", + "compressionAnalyticsDescription": "壓縮分析—token節省、模式分佈和提供者統計。", "autoRoutingTotalAutoRequests": "自動請求總數", "autoRoutingAvgSelectionScore": "平均選擇分數", "autoRoutingExplorationRate": "探索率", @@ -1862,85 +1862,85 @@ "comboHealthTitle": "組合健康", "comboHealthUnableToLoad": "無法載入組合生命值", "comboHealthGettingStarted": "開始使用", - "comboHealthForecastTitle": "成本與配額預測", - "comboHealthForecastDescription": "從歷史組合流量和配額快照進行的線性預測。", + "comboHealthForecastTitle": "費用與配額預測", + "comboHealthForecastDescription": "根據歷史組合流量和配額快照進行的線性預測。", "comboHealthQuotaRisk": "{level} 配額風險", - "comboHealthConfidence": "{level} 信心水準", - "comboHealthProjectedCost": "預估成本", + "comboHealthConfidence": "{level} 置信度", + "comboHealthProjectedCost": "預測費用", "comboHealthCostHistory": "歷史 {total} · {daily}/天", - "comboHealthProjectedRequests": "預估請求數", - "comboHealthRequestsInRange": "所選範圍內 {count} 次", - "comboHealthWorstProjectedQuota": "最差預估配額", - "comboHealthNoDepletionEstimate": "無耗盡預估", - "comboHealthDaysToExhaust": "{days} 天後耗盡", + "comboHealthProjectedRequests": "預測請求數", + "comboHealthRequestsInRange": "所選範圍內有 {count}", + "comboHealthWorstProjectedQuota": "最差預測配額", + "comboHealthNoDepletionEstimate": "無耗盡估算", + "comboHealthDaysToExhaust": "{days} 天后耗盡", "comboHealthTraffic": "流量", "comboHealthProjectedQuota": "預估配額", - "comboHealthPricingCoverage": "定價涵蓋範圍", - "comboHealthAutopilotTitle": "組合健康自動駕駛儀", - "comboHealthAutopilotDescription": "來自組合健康狀態、預測、配額和提供者健康狀態的優先建議。", + "comboHealthPricingCoverage": "定價覆蓋範圍", + "comboHealthAutopilotTitle": "組合健康自動駕駛", + "comboHealthAutopilotDescription": "來自組合健康、預測、配額和提供者健康的優先建議。", "comboHealthIssues": "問題", - "comboHealthActionable": "{count} 個可操作", - "comboHealthDown": "已中斷", + "comboHealthActionable": "{count} 個可操作項", + "comboHealthDown": "宕機", "comboHealthDegraded": "降級", "comboHealthHealthy": "健康", - "comboHealthNoActiveIssues": "在所選範圍內未偵測到作用中的組合健康問題。", - "comboHealthScoringInspector": "智慧評分檢查器", - "comboHealthReadOnlyRecompute": "唯讀重新計算", - "comboHealthScoringDescription": "使用目前健康狀態、預測和路由啟發式對目標排名進行的因素層級說明。", - "comboHealthTask": "任務:{task}", - "comboHealthSelectedRank": "已選取排名第 1", + "comboHealthNoActiveIssues": "在所選範圍內未檢測到活動的組合健康問題。", + "comboHealthScoringInspector": "智能評分檢查器", + "comboHealthReadOnlyRecompute": "只讀重新計算", + "comboHealthScoringDescription": "使用當前健康狀況、預測和路由啟發式演算法對目標排名因子級解釋。", + "comboHealthTask": "任務: {task}", + "comboHealthSelectedRank": "已選排名 #1", "comboHealthFactor": { "quota": "配額", - "health": "健康狀態", + "health": "健康狀況", "costInv": "成本", "latencyInv": "延遲", - "taskFit": "任務契合度", + "taskFit": "任務匹配度", "stability": "穩定性", "tierPriority": "層級", - "tierAffinity": "層級契合度", - "specificityMatch": "特定性", + "tierAffinity": "層級匹配度", + "specificityMatch": "特異性", "contextAffinity": "上下文", - "resetWindowAffinity": "重設視窗" + "resetWindowAffinity": "重置窗口" }, "comboHealthQuotaValue": "配額 {value}", - "comboHealthLatencyValue": "延遲 {value} 毫秒", - "comboHealthIssueCount": "問題 {count} 項", - "comboHealthNoInspectableTargets": "此組合無可檢查的目標。", + "comboHealthLatencyValue": "延遲 {value}ms", + "comboHealthIssueCount": "問題 {count}", + "comboHealthNoInspectableTargets": "此組合沒有可檢查的目標。", "comboHealthAutopilotState": { - "down": "已中斷", - "degraded": "需要注意", + "down": "宕機", + "degraded": "需要關注", "healthy": "健康" }, - "comboHealthModelProviderCount": "{models} 個模型橫跨 {providers} 個提供者", - "comboHealthGiniCoefficient": "吉尼係數", + "comboHealthModelProviderCount": "跨 {providers} 個提供者的 {models} 個模型", + "comboHealthGiniCoefficient": "基尼係數", "comboHealthRequestCount": "{count} 次請求", - "comboHealthQuotaHealthDescription": "各提供者中最低的剩餘配額,附帶短期趨勢訊號。", - "comboHealthRemainingQuota": "剩餘配額 {value}", + "comboHealthQuotaHealthDescription": "具有短期趨勢信號的提供者中最低的剩餘配額。", + "comboHealthRemainingQuota": "Remaining quota {value}", "comboHealthTrend": { "improving": "改善中", "declining": "下降中", "stable": "穩定" }, - "comboHealthUsageSkewDescription": "此組合內的模型請求佔比與 Token 佔比。", - "comboHealthShareSummary": "請求佔比 {requests} · Token 佔比 {tokens}", - "comboHealthPerformance": "效能", - "comboHealthPerformanceDescription": "路由組合流量的可靠性和輸送量。", - "comboHealthExecutionTargetsDescription": "結構化組合目標的步驟層級執行時期指標和配額可見性。", - "comboHealthRequestShort": "{count} 次", - "comboHealthQuotaScope": "配額範圍:{scope}", - "comboHealthTrendValue": "趨勢:{trend}", - "comboHealthFetchFailed": "擷取組合健康資料失敗", + "comboHealthUsageSkewDescription": "此組合內的模型請求份額和Token份額。", + "comboHealthShareSummary": "請求份額 {requests} ·Token份額 {tokens}", + "comboHealthPerformance": "性能", + "comboHealthPerformanceDescription": "路由組合流量的可靠性和吞吐量。", + "comboHealthExecutionTargetsDescription": "結構化組合目標的步驟級運行時指標和配額可見性。", + "comboHealthRequestShort": "{count} 次請求", + "comboHealthQuotaScope": "配額範圍: {scope}", + "comboHealthTrendValue": "趨勢: {trend}", + "comboHealthFetchFailed": "無法獲取組合健康資料", "unknownError": "未知錯誤", - "comboHealthIntro": "依組合監控配額壓力、模型使用傾斜度和傳遞效能。", + "comboHealthIntro": "按組合監控配額壓力、傾斜的模型使用情況以及交付性能。", "comboHealthForecastHorizon": "{value} 預測", - "comboHealthNoData": "無可用的組合健康資料", - "comboHealthNoDataDescription": "組合配額快照和路由請求將在流量開始流動後顯示於此。", - "comboHealthStepCreate": "在組合中使用多個提供者建立組合", - "comboHealthStepSend": "傳送請求至組合端點以產生流量資料", - "comboHealthStepAutomatic": "健康指標將在請求路由時自動顯示", - "comboHealthTracking": "正在追蹤 {range} 內的 {count} 個組合", + "comboHealthNoData": "無可用組合健康資料", + "comboHealthNoDataDescription": "流量開始流動後,組合配額快照和路由請求將顯示在此處。", + "comboHealthStepCreate": "在 Combos 中創建包含多個服務商的組合", + "comboHealthStepSend": "向組合端點發送請求以生成流量資料", + "comboHealthStepAutomatic": "當請求路由時,健康指標將自動顯示", + "comboHealthTracking": "正在跟蹤 {range} 內的 {count} 個組合", "compressionAnalyticsTotalRequests": "請求總數", - "compressionAnalyticsTokensSaved": "已儲存代幣", + "compressionAnalyticsTokensSaved": "已保存代幣", "compressionAnalyticsAvgSavings": "平均節省", "compressionAnalyticsAvgDuration": "平均持續時間", "compressionAnalyticsReceipts": "收據", @@ -1948,28 +1948,28 @@ "compressionAnalyticsPromptTokens": "提示標記", "compressionAnalyticsCompletionTokens": "完成標記", "compressionAnalyticsTotalTokens": "代幣總數", - "compressionAnalyticsCacheTokens": "快取權杖", + "compressionAnalyticsCacheTokens": "快取令牌", "compressionAnalyticsNoDataYet": "還沒有壓縮資料", "compressionAnalyticsLoading": "正在載入壓縮分析…", - "compressionAnalyticsNoDataDescription": "啟用壓縮後,透過 /v1/chat/completions 發出第一個請求後,壓縮請求資料便會顯示在此處。", - "rangeLast24h": "過去 24 小時", - "rangeLast7d": "過去 7 天", - "rangeLast30d": "過去 30 天", - "rangeAllTime": "全部時間", - "compressionAnalyticsModeStats": "{count} 個請求 · 省下 {tokens} 個 Token", - "compressionAnalyticsSkipped": " · {count} 個已跳過(無操作)", - "compressionAnalyticsRealTokens": "{count} 個實際 Token", - "compressionAnalyticsValidationRestores": "驗證還原", - "compressionAnalyticsRealUsageReceipts": "實際用量收據", + "compressionAnalyticsNoDataDescription": "在通過啟用了壓縮的 /v1/chat/completions發送第一個請求後,壓縮請求將顯示在此處。", + "rangeLast24h": "最近 24 小時", + "rangeLast7d": "最近 7 天", + "rangeLast30d": "最近 30 天", + "rangeAllTime": "所有時間", + "compressionAnalyticsModeStats": "{count} 次請求·節省了 {tokens} 個Token", + "compressionAnalyticsSkipped": " ·已跳過 {count} 次 (無操作)", + "compressionAnalyticsRealTokens": "{count} 個實際Token", + "compressionAnalyticsValidationRestores": "驗證恢復", + "compressionAnalyticsRealUsageReceipts": "實際使用憑證", "compressionAnalyticsSources": "來源", - "compressionAnalyticsModeBreakdown": "模式分佈", - "compressionAnalyticsProviderBreakdown": "提供者分佈", - "compressionAnalyticsLast24HoursActivity": "過去 24 小時(活動)", - "compressionAnalyticsChartPoint": "{hour}:{count} 個請求,省下 {tokens} 個 Token", - "compressionAnalyticsMaxRequests": "每小時最大請求數:{count}", - "compressionAnalyticsMaxTokens": "每小時最大 Token 數:{count}", - "compressionAnalyticsStartTracking": "使用 POST /v1/chat/completions 並搭配壓縮設定,即可開始追蹤壓縮分析。", - "compressionAnalyticsInfo": "壓縮分析:按模式(關閉、精簡、標準、積極、極致、RTK、堆疊)、引擎、壓縮組合與提供者追蹤 Token 節省量。將滑鼠懸停在圖表上查看詳細資訊。使用時間選擇器檢視不同時間範圍。", + "compressionAnalyticsModeBreakdown": "模式細分", + "compressionAnalyticsProviderBreakdown": "服務商細分", + "compressionAnalyticsLast24HoursActivity": "最近 24 小時 (活動)", + "compressionAnalyticsChartPoint": "{hour}: {count} 次請求,節省了 {tokens} 個Token", + "compressionAnalyticsMaxRequests": "每小時最大請求數: {count}", + "compressionAnalyticsMaxTokens": "每小時最大Token數: {count}", + "compressionAnalyticsStartTracking": "使用帶有壓縮設定的 POST /v1/chat/completions 來開始跟蹤壓縮分析。", + "compressionAnalyticsInfo": "壓縮分析:按模式(off、lite、standard、aggressive、ultra、RTK、stacked)、引擎、壓縮組合和提供者跟蹤節省的Token。將滑鼠懸停在圖表上以查看詳情。使用時間選擇器查看不同的時間段。", "searchAnalyticsTotalSearches": "總搜尋次數", "searchAnalyticsCacheHitRate": "快取命中率", "searchAnalyticsTotalCost": "總成本", @@ -1985,98 +1985,98 @@ "1h": "過去 1 小時", "24h": "過去 24 小時", "7d": "過去 7 天", - "30d": "過去 30 天" + "30d": "過去 30 順" }, - "providerUtilizationGlobalView": "全域檢視", - "providerUtilizationAccountSplit": "帳戶拆分", + "providerUtilizationGlobalView": "全域視圖", + "providerUtilizationAccountSplit": "賬戶拆分", "providerUtilizationLoading": "正在載入使用率資料…", "retrying": "正在重試…", "retry": "重試", - "providerUtilizationNoDataDescription": "收集使用率資料後,提供者配額快照便會顯示在此處。", - "providerUtilizationStepConnect": "透過 OAuth 或 API 金鑰在提供者中連線提供者", - "providerUtilizationStepEnable": "在組合或直接請求中使用該提供者,以啟用配額追蹤", - "providerUtilizationStepAutomatic": "資料將在收集配額快照時自動顯示", + "providerUtilizationNoDataDescription": "收集到使用率資料後,提供者配額快照將顯示在此處。", + "providerUtilizationStepConnect": "在提供者中通過OAuth或API Key連接提供者", + "providerUtilizationStepEnable": "通過在組合或直接請求中使用該提供者來啟用配額跟蹤", + "providerUtilizationStepAutomatic": "收集到配額快照後,資料將自動顯示", "statusExhausted": "已耗盡", - "statusLow": "偏低", + "statusLow": "較低", "statusHealthy": "健康", "remainingQuota": "剩餘配額", - "routeTraceTitle": "路由追蹤檢視", - "routeTraceDescription": "檢視保存的請求追蹤記錄:已選目標、路由因素、備援證據、目前評分重播、延遲、Token 與目標健康狀態。", + "routeTraceTitle": "路由追蹤視圖", + "routeTraceDescription": "檢查持久化的請求追蹤:選定的目標、路由因素、回退依據、當前評分重放、延遲、Token和目標健康狀況。", "routeTraceRequestLog": "請求日誌", "routeWeight": "權重 {weight}%", - "routeNoRelatedEvidence": "尚未保存相關目標證據。", + "routeNoRelatedEvidence": "尚未持久化相關的目標依據。", "unknown": "未知", - "selected": "已選取", - "routeNoStepId": "無步驟 ID", + "selected": "已選擇", + "routeNoStepId": "無步驟ID", "routeNoStep": "無步驟", - "routeMatchesTopTarget": "符合目前首選目標", - "routeDiffersFromTop": "與目前首選不同", - "routeTargetMissingNow": "目前目標遺失", - "routeNotComboRouted": "未使用組合路由", - "routeWhyTarget": "為何選此目標?", - "routeWhyTargetSubtitle": "精確執行中繼資料及唯讀評分重播", - "routeExactRuntimeLog": "精確執行日誌", - "routeCallLogsExact": "精確呼叫日誌", - "routeReadOnlyRecompute": "唯讀重新計算", - "routeRuntimeRankNow": "目前執行排名", - "routeRuntimeScoreNow": "目前執行評分", - "routeWouldSelectNow": "目前會選擇", + "routeMatchesTopTarget": "匹配當前首選目標", + "routeDiffersFromTop": "與當前首選不同", + "routeTargetMissingNow": "目標當前缺失", + "routeNotComboRouted": "未組合路由", + "routeWhyTarget": "為什麼選擇此目標?", + "routeWhyTargetSubtitle": "精確的運行時元資料以及只讀評分重放", + "routeExactRuntimeLog": "精確的運行時日誌", + "routeCallLogsExact": "call_logs精確", + "routeReadOnlyRecompute": "只讀重新計算", + "routeRuntimeRankNow": "當前運行時排名", + "routeRuntimeScoreNow": "當前運行時評分", + "routeWouldSelectNow": "當前將會選擇", "routeNoRecomputeCandidates": "無法為此請求重新計算組合候選排名。", - "runtime": "執行時間", - "routeTopNow": "目前首選", - "routeFetchLogsFailed": "無法取得請求日誌", + "runtime": "運行時", + "routeTopNow": "當前首選", + "routeFetchLogsFailed": "無法獲取請求日誌", "routeExplainFailed": "無法解釋路由", - "direct": "直接", - "routeUnableToLoad": "無法載入路由說明", - "routeNoRequestLogs": "無可用請求日誌", - "routeNoRequestLogsDescription": "請先透過 OmniRoute 傳送流量。路由說明是根據保存的結構化呼叫日誌所產生。", + "direct": "直連", + "routeUnableToLoad": "無法載入路由解釋", + "routeNoRequestLogs": "沒有可用的請求日誌", + "routeNoRequestLogsDescription": "請先通過OmniRoute發送流量。路由解釋是根據持久化的結構化呼叫日誌生成的。", "routeDecisionSummary": "決策摘要", - "routeConfidence": "信心度 {confidence}", + "routeConfidence": "{confidence} 置信度", "routeScore": "路由評分", "latency": "延遲", - "routeRecentSuccess": "近期成功", + "routeRecentSuccess": "近期成功率", "routeAvgTargetLatency": "平均目標延遲", "routeSelectedTarget": "已選目標", "provider": "提供者", "model": "模型", - "account": "帳戶", - "connection": "連線", + "account": "賬戶", + "connection": "連接", "combo": "組合", "routeStep": "步驟", "tokens": "Token", - "notAvailable": "不適用", - "routeTokenCounts": "輸入 {input} · 輸出 {output}", - "routeEvidence": "證據", + "notAvailable": "無", + "routeTokenCounts": "{input} 輸入· {output} 輸出", + "routeEvidence": "依據", "routeFactors": "路由因素", - "routeFactorsSubtitle": "用於此說明的加權訊號", - "routeFallbackTimeline": "備援與目標時間軸", - "routeFallbackTimelineSubtitle": "根據此請求附近保存的呼叫日誌推斷", + "routeFactorsSubtitle": "用於此解釋的加權信號", + "routeFallbackTimeline": "後備與目標時間線", + "routeFallbackTimelineSubtitle": "推斷自此請求前後的持久化呼叫日誌", "routeRecommendations": "建議", "routeLimitations": "限制", - "routeNoKnownLimitations": "此說明無已知限制。" + "routeNoKnownLimitations": "此解釋沒有已知的限制。" }, "apiManager": { - "title": "API 金鑰", - "createKey": "建立 API 金鑰", + "title": "API Key", + "createKey": "創建API Key", "key": "金鑰", "revokeKey": "撤銷金鑰", - "revokeConfirm": "確定要撤銷這個 API 金鑰嗎?", - "noKeys": "還沒有 API 金鑰", - "noKeysDesc": "建立你的第一個 API 金鑰,用於驗證發往端點的請求", + "revokeConfirm": "確定要撤銷這個API Key嗎?", + "noKeys": "還沒有API Key", + "noKeysDesc": "創建你的第一個API Key,用於驗證發往端點的請求", "keyLabel": "金鑰標籤", - "permissions": "許可權", + "permissions": "權限", "expiresAt": "過期時間", "never": "永不過期", "revoke": "撤銷", "showKey": "顯示金鑰", "hideKey": "隱藏金鑰", - "copyKey": "複製 API 金鑰", + "copyKey": "複製API Key", "allModels": "全部模型", "selectedModels": "已選模型", "readOnly": "只讀", "fullAccess": "完全訪問", - "keyManagement": "API 金鑰管理", - "keyManagementDesc": "建立和管理用於訪問端點的 API 金鑰", + "keyManagement": "API Key管理", + "keyManagementDesc": "創建和管理用於訪問端點的API Key", "totalKeys": "金鑰總數", "restricted": "受限", "totalRequests": "請求總數", @@ -2084,59 +2084,59 @@ "registeredKeys": "已註冊金鑰", "keysRegistered": "已註冊 {count} 個金鑰", "keyRegistered": "已註冊 {count} 個金鑰", - "keysSecurityNote": "每個金鑰的用量跟蹤彼此隔離,並且可以單獨撤銷。出於安全考慮,金鑰建立後會被遮罩顯示。", - "createFirstKey": "建立第一個金鑰", + "keysSecurityNote": "每個金鑰的用量跟蹤彼此隔離,並且可以單獨撤銷。出於安全考慮,金鑰創建後會以遮罩顯示。", + "createFirstKey": "創建第一個金鑰", "name": "名稱", "usage": "用量", - "created": "建立時間", + "created": "創建時間", "actions": "操作", "reqs": "請求", "neverUsed": "從未使用", - "deleteConfirm": "刪除這個 API 金鑰?", + "deleteConfirm": "刪除這個API Key?", "usageTips": "使用提示", - "tipAuth": "在 Authorization 請求頭中以 Bearer YOUR_KEY 的形式使用 API 金鑰", - "tipSecure": "金鑰只會在建立時顯示一次,請妥善儲存", - "tipSeparate": "建議為不同客戶端或環境建立獨立金鑰", + "tipAuth": "在Authorization請求標頭中以Bearer YOUR_KEY的形式使用API Key", + "tipSecure": "金鑰只會在創建時顯示一次,請妥善保存", + "tipSeparate": "建議為不同客戶端或環境創建獨立金鑰", "tipRestrict": "將金鑰限制到特定模型,可提升安全性並更好控制成本", "keyName": "金鑰名稱", "keyNamePlaceholder": "例如:生產環境金鑰、開發環境金鑰", "keyNameDesc": "使用清晰的名稱標識該金鑰的用途", - "managementAccessDesc": "允許此 API 金鑰管理 OmniRoute 設定。", + "managementAccessDesc": "允許此API Key管理OmniRoute設定。", "selfServiceVisibility": "自助可見性", - "selfServiceVisibilityDesc": "控制此金鑰可檢視自身用量和共享上游配額的範圍。", - "ownUsageVisibility": "自身成本和 Token 用量", - "ownUsageVisibilityDesc": "允許此金鑰呼叫狀態端點,檢視自身美元用量、預算佔比和 Token 總量。", - "sharedAccountQuotaVisibility": "共享帳號配額", - "sharedAccountQuotaVisibilityDesc": "當設定了一個明確連線時,允許此金鑰檢視共享上游帳號配額。", - "localUsageCommand": "允許本機使用量指令", - "localUsageCommandDesc": "允許此 API 金鑰使用 @@om-usage 來擷取快取的使用量和配額資訊,而無需呼叫上游提供者。", - "localUsageCommandBadge": "使用量命令", - "keyCreated": "API 金鑰已建立", - "keyCreatedSuccess": "金鑰建立成功!", - "keyCreatedNote": "請立即複製並儲存此金鑰,它不會再次顯示。", + "selfServiceVisibilityDesc": "控制此金鑰可查看自身用量和共享上游配額的範圍。", + "ownUsageVisibility": "自身成本和Token用量", + "ownUsageVisibilityDesc": "允許此金鑰呼叫狀態端點,查看自身美元用量、預算佔比和Token總量。", + "sharedAccountQuotaVisibility": "共享賬號配額", + "sharedAccountQuotaVisibilityDesc": "當設定了一個明確連接時,允許此金鑰查看共享上游賬號配額。", + "localUsageCommand": "允許本地使用命令", + "localUsageCommandDesc": "允許此API Key使用 @@om-usage來檢索快取的使用情況和配額資訊,而無需呼叫上游提供者。", + "localUsageCommandBadge": "使用情況命令", + "keyCreated": "API Key已創建", + "keyCreatedSuccess": "金鑰創建成功!", + "keyCreatedNote": "請立即複製並保存此金鑰,它不會再次顯示。", "done": "完成", - "savePermissions": "儲存許可權", + "savePermissions": "保存權限", "endpointRestrictions": "允許的端點", - "allEndpointsAllowed": "此金鑰可以訪問所有 API 端點。", + "allEndpointsAllowed": "此金鑰可以訪問所有API端點。", "endpointsRestricted": "僅限 {count} 個端點。", "autoResolve": "自動解析", - "autoResolveDesc": "為這個 API 金鑰自動將有歧義的模型名解析到原生提供者。", + "autoResolveDesc": "為這個API Key自動將有歧義的模型名解析到原生提供者。", "streamDefaultMode": "流預設相容性", - "streamDefaultModeDesc": "此鍵省略了 `stream` 標誌。JSON 模式返回非流式回應,除非客戶端明確請求 SSE。", + "streamDefaultModeDesc": "此鍵省略了 `stream` 標誌。JSON模式返回非流式回應,除非客戶端明確請求SSE。", "streamDefaultLegacy": "遺留", - "streamDefaultJson": "JSON 相容", - "streamDefaultBadge": "JSON 流預設", + "streamDefaultJson": "JSON相容", + "streamDefaultBadge": "JSON流預設", "keyActive": "金鑰啟用狀態", - "keyActiveDesc": "啟用或停用此 API 金鑰。被停用的金鑰會立即返回 403。", + "keyActiveDesc": "啟用或禁用此API Key。已禁用的金鑰會立即返回 403。", "accessSchedule": "訪問時段", "accessScheduleDesc": "將訪問限制在一週中的特定日期和時段。", "scheduleFrom": "開始時間", "scheduleUntil": "結束時間", "scheduleDays": "日期", "scheduleTimezone": "時區", - "scheduleTimezoneHint": "使用 IANA 時區名稱,例如 America/New_York、Europe/Berlin", + "scheduleTimezoneHint": "使用IANA時區名稱,例如America/New_York、Europe/Berlin", "scheduleActive": "時段限制", - "disabled": "已停用", + "disabled": "已禁用", "daySun": "週日", "dayMon": "週一", "dayTue": "週二", @@ -2154,51 +2154,51 @@ "searchModels": "按名稱或提供者搜尋模型...", "noModelsFound": "未找到模型", "keyNameRequired": "金鑰名稱不能為空", - "keyNameTooLong": "金鑰名稱長度不能超過 {max} 個字元", - "keyNameInvalid": "金鑰名稱只能包含字母、數字、空格、連字元和下劃線", + "keyNameTooLong": "金鑰名稱長度不能超過 {max} 個字符", + "keyNameInvalid": "金鑰名稱只能包含字母、數字、空格、連字符和下劃線", "invalidKeyName": "金鑰名稱無效", - "failedCreateKey": "建立金鑰失敗", - "failedCreateKeyRetry": "建立金鑰失敗,請重試。", - "invalidKeyId": "金鑰 ID 無效", + "failedCreateKey": "創建金鑰失敗", + "failedCreateKeyRetry": "創建金鑰失敗,請重試。", + "invalidKeyId": "金鑰ID無效", "failedDeleteKey": "刪除金鑰失敗", "failedDeleteKeyRetry": "刪除金鑰失敗,請重試。", "invalidModelsSelection": "模型選擇無效", "cannotSelectMoreThanModels": "最多隻能選擇 {max} 個模型", - "failedUpdatePermissions": "更新許可權失敗", - "failedUpdatePermissionsRetry": "更新許可權失敗,請重試。", + "failedUpdatePermissions": "更新權限失敗", + "failedUpdatePermissionsRetry": "更新權限失敗,請重試。", "unknownProvider": "未知", "copyMaskedKey": "複製遮罩後的金鑰", - "keyOnlyAvailableAtCreation": "完整金鑰僅會在建立時顯示一次,請在首次建立時立即複製儲存", + "keyOnlyAvailableAtCreation": "完整金鑰僅會在創建時顯示一次,請在首次創建時立即複製保存", "modelsCount": "{count, plural, one {# 個模型} other {# 個模型}}", - "devicesCount": "{count, plural, one {# 個裝置} other {# 個裝置}}", - "devicesTooltip": "{count, plural, one {此金鑰看到 # 個不同 IP/User-Agent 裝置(最近 30 分鐘)} other {此金鑰看到 # 個不同 IP/User-Agent 裝置(最近 30 分鐘)}}", + "devicesCount": "{count, plural, one {# 個設備} other {# 個設備}}", + "devicesTooltip": "{count, plural, one {使用此金鑰檢測到 # 個不同的IP/User-Agent設備(最近 30 分鐘)} other {使用此金鑰檢測到 # 個不同的IP/User-Agent設備(最近 30 分鐘)}}", "lastUsedOn": "最近使用:{date}", - "viewCostsFor": "檢視 {name} 的費用", - "editPermissions": "編輯許可權", + "viewCostsFor": "查看 {name} 的費用", + "editPermissions": "編輯權限", "deleteKey": "刪除金鑰", "regenerateKey": "重新生成金鑰", - "regenerateConfirm": "您確定要重新生成此 API 金鑰嗎?舊金鑰將立即失效。", - "failedRegenerateKey": "無法重新生成 API 金鑰", - "failedRegenerateKeyRetry": "無法重新生成 API 金鑰。請再試一次。", + "regenerateConfirm": "您確定要重新生成此API Key嗎?舊金鑰將立即失效。", + "failedRegenerateKey": "無法重新生成API Key", + "failedRegenerateKeyRetry": "無法重新生成API Key。請再試一次。", "model": "{count} 個模型", "models": "{count} 個模型", - "permissionsTitle": "許可權:{name}", + "permissionsTitle": "權限:{name}", "allowAllDesc": "該金鑰可訪問所有可用模型。", "restrictLoading": "正在載入模型目錄…", "restrictCatalogUnavailable": "模型目錄不可用;此金鑰有 {selectedCount} 個選定的模型限制。", "restrictDesc": "該金鑰可訪問 {totalModels} 個模型中的 {selectedCount} 個。", "selectedCount": "已選擇 {count} 個", - "maxActiveSessions": "最大活動會話數", - "maxActiveSessionsDescription": "0 = 無限制。當此金鑰超過並行黏著工作階段時,回傳 429。", - "throttleDelay": "節流延遲", - "throttleDelayDescription": "在此金鑰的請求被路由之前,加入固定延遲。0 = 不減速。", - "expandClaudeCodeFamilies": "展開 Claude Code 系列", - "removeClaudeCodeDefault": "移除 Claude Code 預設", + "maxActiveSessions": "最大活動工作階段數", + "maxActiveSessionsDescription": "0 = 無限制。當此金鑰超過併發粘性工作階段數時返回 429。", + "throttleDelay": "限流延遲", + "throttleDelayDescription": "在路由此金鑰的請求之前新增固定延遲。0 = 不減速。", + "expandClaudeCodeFamilies": "展開Claude Code系列", + "removeClaudeCodeDefault": "移除Claude Code預設值", "allowedCombos": "允許的組合", - "allCombosAllowed": "此金鑰可使用任何組合。", - "restrictedComboCount": "限制為 {count} 個組合。", + "allCombosAllowed": "此金鑰可以使用任何組合。", + "restrictedComboCount": "限制為 {count, plural, one {# 個組合} other {# 個組合}}。", "apiManagerCustomRateLimits": "自定義費率限制", - "apiManagerCustomRateLimitsDesc": "覆蓋全域性預設限制。留空以使用預設值。", + "apiManagerCustomRateLimitsDesc": "覆蓋全域預設限制。留空以使用預設值。", "apiManagerRateLimitRequestsPlaceholder": "要求", "apiManagerRateLimitReqPer": "請求/", "apiManagerRateLimitSecondsPlaceholder": "秒數", @@ -2209,14 +2209,14 @@ "managementApiAccess": "管理API訪問", "expirationDate": "有效期", "managementAccess": "管理訪問", - "allowedConnections": "允許的連線", - "searchPlaceholder": "按名稱或 token 搜尋...", + "allowedConnections": "允許的連接", + "searchPlaceholder": "按名稱或token搜尋...", "activeOnly": "僅顯示啟用", "filterStatus": "狀態", "filterType": "類型", "filterAll": "全部", "filterStatusActive": "啟用", - "filterStatusDisabled": "已停用", + "filterStatusDisabled": "已禁用", "filterStatusBanned": "已封禁", "filterStatusExpired": "已過期", "filterTypeStandard": "標準", @@ -2225,40 +2225,40 @@ "shownOf": "已顯示 {shown} / {total}", "emptyFilterTitle": "沒有金鑰匹配當前篩選條件", "emptyFilterClear": "清除篩選", - "disableNonPublicModels": "停用非公開模型", + "disableNonPublicModels": "禁用非公開模型", "disableNonPublicModelsDesc": "拒絕對未發現或未標記為公共的模型在提供者目錄中的請求", "normalKeysSection": "普通鍵", "quotaKeysSection": "配額金鑰", - "bypassProviderQuota": "繞過提供者配額限制", - "bypassProviderQuotaDescription": "允許此金鑰在路由期間忽略上游提供者/帳戶的限制政策。API 金鑰的美元配額仍然適用。", + "bypassProviderQuota": "繞過服務商配額限制", + "bypassProviderQuotaDescription": "允許此金鑰在路由期間忽略上游服務商/賬戶的截止策略。API Key的美元配額仍然適用。", "quotaPill": "配額", "quotaModeOnly": "僅配額" }, "auditLog": { - "title": "稽核日誌", + "title": "審核日誌", "searchPlaceholder": "搜尋操作...", "action": "操作", "actor": "操作人", "target": "目標", "ipAddress": "IP地址", "timestamp": "時間戳", - "noEntries": "未找到稽核條目", + "noEntries": "未找到審核條目", "filterByAction": "按操作過濾...", "filterByActor": "按操作人篩選...", - "filterEntriesAria": "過濾稽核日誌條目", + "filterEntriesAria": "過濾審核日誌條目", "filterByActionTypeAria": "按操作類型過濾", "filterByActorAria": "按操作人篩選", - "refreshAuditLogAria": "重新整理稽核日誌", - "tableAria": "稽核日誌條目", - "failedFetchAuditLog": "無法獲取稽核日誌", + "refreshAuditLogAria": "刷新審核日誌", + "tableAria": "審核日誌條目", + "failedFetchAuditLog": "無法獲取審核日誌", "notAvailable": "—", "description": "行政行為和安全事件", "showing": "顯示 {count} 條目(偏移量 {offset})", "previous": "上一頁" }, "media": { - "title": "媒體", - "subtitle": "生成影像、影片和音樂", + "title": "媒體演練場", + "subtitle": "生成圖像、視頻和音樂", "model": "模型", "prompt": "提示詞", "generate": "生成", @@ -2267,78 +2267,78 @@ "noModels": "暫無可用模型。請先設定支援媒體能力的提供者。", "error": "生成失敗", "result": "結果", - "imageDescription": "使用 OpenAI、xAI、Together、Hyperbolic、SD WebUI、ComfyUI 等根據文本提示生成影像。", - "videoDescription": "通過 ComfyUI 或 SD WebUI 使用 AnimateDiff、Stable Video Diffusion 建立影片。", - "musicDescription": "通過 ComfyUI 使用 Stable Audio Open 或 MusicGen 生成音樂。", + "imageDescription": "使用OpenAI、xAI、Together、Hyperbolic、SD WebUI、ComfyUI等根據文本提示生成圖像。", + "videoDescription": "通過ComfyUI或SD WebUI使用AnimateDiff、Stable Video Diffusion創建視頻。", + "musicDescription": "通過ComfyUI使用Stable Audio Open或MusicGen生成音樂。", "kinds": { "embedding": "向量嵌入", - "image": "影像", - "imageToText": "影像轉文字", + "image": "圖像", + "imageToText": "圖像轉文字", "tts": "文字轉語音", "stt": "語音轉文字", "webSearch": "網路搜尋", "webFetch": "網頁抓取", - "video": "影片", + "video": "視頻", "music": "音樂", "ocr": "OCR" }, "noProviders": "尚未為此類型設定任何提供者。", - "addConnection": "新增連線", + "addConnection": "新增連接", "backToProviders": "返回提供者列表", - "connections": "{count} 個連線", - "noConnections": "暫無連線 —— 請從提供者頁面新增。", + "connections": "{count} 個連接", + "noConnections": "暫無連接——請從提供者頁面新增。", "loading": "正在載入...", - "suggestedModels": "提供者建議的模型", - "imageGeneration": "圖片生成", - "imageToText": "圖片轉文字", - "imageToTextComingSoon": "當 /api/v1/images/understanding 實作後,即可使用內嵌的圖片轉文字遊樂場。", - "disabled": "已停用", - "videoGeneration": "影片生成", + "suggestedModels": "來自服務商的推薦模型", + "imageGeneration": "圖像生成", + "imageToText": "圖像轉文本", + "imageToTextComingSoon": "當 /api/v1/images/understanding 實現後,內聯圖像轉文本Playground將可用。", + "disabled": "已禁用", + "videoGeneration": "視頻生成", "musicGeneration": "音樂生成", - "textToSpeech": "文字轉語音", + "textToSpeech": "文本轉語音", "transcription": "轉錄", - "imagePromptPlaceholder": "日落時分的寧靜山景...", - "videoPromptPlaceholder": "花朵綻放的縮時攝影...", - "musicPromptPlaceholder": "活潑的電子音樂,搭配合成器音墊...", - "speechTextPlaceholder": "您好!歡迎使用 OmniRoute,您的智慧 AI 閘道...", - "transcriptionPlaceholder": "上傳要轉錄的音訊檔案...", - "noImagesReturned": "未回傳任何圖片。提供者可能已接受請求,但回傳了空的資料。", - "generatedImageAlt": "已生成的圖片 {index}", - "save": "儲存", - "enterTextToSynthesize": "請輸入要合成的文字。", - "selectAudioToTranscribe": "請選擇要轉錄的音訊檔案。", - "noSpeechDetected": "在音訊檔案中未偵測到語音。如果您上傳的是音樂或無聲檔案,請嘗試上傳包含說話內容的音訊檔案。提供者:\"{provider}\"。", - "emptyTranscription": "轉錄回傳空文字。音訊可能不包含可辨識的語音,或「{provider}」API 金鑰可能無效。請檢查儀表板 → 日誌 → 代理以了解詳情。", - "topazRequiresImage": "Topaz 需要輸入圖片。", + "imagePromptPlaceholder": "日落時分有山脈的寧靜風景……", + "videoPromptPlaceholder": "花朵綻放的延時攝影……", + "musicPromptPlaceholder": "帶有合成器鋪底的歡快電子音樂……", + "speechTextPlaceholder": "你好!歡迎使用OmniRoute,您的智能AI網關……", + "transcriptionPlaceholder": "上傳音頻檔案以進行轉錄……", + "noImagesReturned": "未返回圖像。服務商可能已接受請求,但返回了空資料。", + "generatedImageAlt": "已生成圖像 {index}", + "save": "保存", + "enterTextToSynthesize": "請輸入要合成的文本。", + "selectAudioToTranscribe": "請選擇要轉錄的音頻檔案。", + "noSpeechDetected": "在音頻檔案中未檢測到語音。如果您上傳了音樂或靜音檔案,請嘗試使用包含說話聲音的音頻檔案。服務商:\"{provider}\"。", + "emptyTranscription": "轉錄返回空文本。音頻可能不包含可識別的語音,或者 \"{provider}\" API Key可能無效。請檢查控制面板 → 日誌 → 代理以獲取詳細資訊。", + "topazRequiresImage": "Topaz需要輸入圖像。", "enterPrompt": "請輸入提示詞。", - "enhanceThisImage": "增強此圖片", + "enhanceThisImage": "增強此圖像", "failedToReadFile": "讀取檔案失敗", "generationFailed": "生成失敗", - "requestFailed": "請求失敗({status})", - "provider": "提供者", - "credentialsRequired": "需要在提供者中的 API 金鑰", + "requestFailed": "請求失敗 ({status})", + "provider": "服務商", + "credentialsRequired": "需要在 服務商 中設定 API Key", "voice": "語音", "format": "格式", - "audioVideoFile": "音訊/視訊檔案", - "fileTooLarge": "檔案過大({size})。允許的最大值:{max}。", - "audioVideoFileHint": "支援最高 4 GB 的音訊和視訊檔案", - "sourceImage": "來源圖片", - "sourceImageHint": "適用於以圖生圖、編輯和放大工作流程(選填)。", - "maskImage": "遮罩圖片", - "maskImageHint": "可選。由支援遮罩的 inpaint 類型模型使用。", - "text": "文字", - "promptOptional": "提示詞(選填)", - "enhancementInstructionsPlaceholder": "選擇性增強說明...", + "audioVideoFile": "音頻 / 視頻檔案", + "fileTooLarge": "檔案過大 ({size})。最大允許: {max}。", + "audioVideoFileHint": "支援最大 4 GB的音頻和視頻檔案", + "sourceImage": "源圖像", + "sourceImageHint": "圖生圖、編輯和放大工作流可選。", + "maskImage": "遮罩圖像", + "maskImageHint": "可選。供支援遮罩的局部重繪類模型使用。", + "text": "文本", + "promptOptional": "提示詞 (可選)", + "enhancementInstructionsPlaceholder": "可選的增強指令...", "synthesizing": "正在合成...", "transcribing": "正在轉錄...", "synthesizeSpeech": "合成語音", - "transcribeAudio": "轉錄音訊", + "transcribeAudio": "轉錄音頻", "generateModality": "生成 {modality}", - "apiKeyRequired": "需要 API 金鑰", - "configureApiKeys": "在提供者中設定 API 金鑰", + "apiKeyRequired": "需要API Key", + "configureApiKeys": "在“提供者”中設定API Key", "downloadFormat": "下載 {format}", - "noTextReturned": "未回傳任何文字", - "wordTimestamps": "逐詞時間戳記({count} 詞)", + "noTextReturned": "未返回文本", + "wordTimestamps": "詞級時間戳 ({count} 個詞)", "providerCount": "{count} 個提供者" }, "search": { @@ -2347,11 +2347,11 @@ "cachedResult": "已快取", "searchCost": "成本", "searchTools": "搜尋工具", - "searchToolsDesc": "支援提供者對比的高階搜尋測試", + "searchToolsDesc": "支援提供者對比的高級搜尋測試", "compareProviders": "對比提供者", "rerankResults": "結果重排", "searchHistory": "搜尋歷史", - "urlOverlap": "URL 重疊度", + "urlOverlap": "URL重疊度", "noSearchProviders": "尚未設定搜尋提供者。請前往設定新增。", "noRerankModels": "沒有可用的重排模型", "webSearch": "網頁搜尋", @@ -2380,7 +2380,7 @@ "domainPlaceholder": "example.com", "requestTimedOut": "請求超時({seconds}s)", "networkError": "網路錯誤", - "formatted": "格式化檢視", + "formatted": "格式化視圖", "rawJson": "JSON", "cacheMiss": "未命中快取", "cacheHit": "命中快取", @@ -2390,7 +2390,7 @@ "rerank": "重排", "rerankModel": "重排模型", "positionDelta": "排名變化", - "emptyState": "傳送搜尋請求後即可檢視結果", + "emptyState": "發送搜尋請求後即可查看結果", "copy": "複製", "resetToDefault": "重置為預設值", "tabSearch": "搜尋", @@ -2400,11 +2400,11 @@ "searchConceptTitle": "搜尋", "searchConceptDesc": "搜尋 = 獲取網頁結果列表(標題、URL、摘要、相關性分數)", "scrapeConceptTitle": "抓取", - "scrapeConceptDesc": "抓取 = 提取 URL 的完整內容(Markdown、文本或 HTML)", + "scrapeConceptDesc": "抓取 = 提取URL的完整內容(Markdown、文本或HTML)", "compareConceptTitle": "比較", - "compareConceptDesc": "比較 = 跨 N 個提供者並排執行相同查詢,比較延遲、成本和結果重疊", + "compareConceptDesc": "比較 = 跨N個提供者並排運行相同查詢,比較延遲、成本和結果重疊", "rerankConceptTitle": "重新排序", - "rerankConceptDesc": "重新排序 = 通過 LLM 重新排序結果以基於查詢提高相關性", + "rerankConceptDesc": "重新排序 = 通過LLM重新排序結果以基於查詢提高相關性", "autoConceptTitle": "自動(最便宜)", "autoConceptDesc": "自動(最便宜)= 自動選擇具有已設定憑據的最便宜可用提供者", "providerCatalogTitle": "提供者目錄", @@ -2418,10 +2418,10 @@ "failedToLoadProviders": "載入提供者失敗", "costPerQuery": "成本/查詢", "freeQuota": "免費配額/月", - "scrapeUrl": "要抓取的 URL", + "scrapeUrl": "要抓取的URL", "scrapeUrlPlaceholder": "https://example.com", - "scrapeUrlRequired": "需要 URL", - "scrapeUrlInvalid": "無效的 URL — 必須以 http:// 或 https:// 開頭", + "scrapeUrlRequired": "URL為必填項", + "scrapeUrlInvalid": "無效的URL—必須以http:// 或https:// 開頭", "scrapeExtract": "提取", "scrapeExtracting": "提取中…", "scrapeFullPage": "整頁", @@ -2431,12 +2431,12 @@ "formatText": "文本", "scrapePreview": "預覽", "scrapeRaw": "原始", - "scrapeContentTruncated": "(已截斷,檢視原始)", - "scrapeMetadata": "後設資料", + "scrapeContentTruncated": "(已截斷,查看原始)", + "scrapeMetadata": "元資料", "scrapeProvider": "提供者", "scrapeSize": "大小", - "scrapeEmptyState": "輸入 URL 以擷取其內容", - "scrapeProvidersAvailable": "可用提供者:Firecrawl、Jina Reader、Tavily、TinyFish。", + "scrapeEmptyState": "輸入URL以提取其內容", + "scrapeProvidersAvailable": "可用提供者: Firecrawl, Jina Reader, Tavily, TinyFish。", "compareRun": "比較", "compareRunning": "比較中…", "autoProvider": "自動(最便宜)", @@ -2447,106 +2447,106 @@ "rerankModelLabel": "重新排序模型", "noneOption": "無", "size": "大小", - "configurationPane": "設定面板", + "configurationPane": "設定窗格", "configuration": "設定", "status": "狀態", - "compareProviderHint": "在比較標籤頁中選擇最多 4 個提供者,以進行並排比較。", + "compareProviderHint": "在“比較”標籤頁中最多選擇 4 個提供者以並排比較。", "history": "歷史記錄", - "historyHint": "歷史記錄可在搜尋標籤頁中使用。", - "noActiveProvider": "無作用中的搜尋提供者", + "historyHint": "歷史記錄可在“搜尋”標籤頁中查看。", + "noActiveProvider": "無活動的搜尋提供者", "configureMoreProviders": "設定更多提供者", "links": "連結", - "contentTruncated": "內容已截斷至 256 KB(原始大小:{size})", - "viewFullRaw": "檢視完整原始內容", - "rawScrapedContent": "原始爬取內容", - "rawContent": "原始內容 — {size}", - "closeRawModal": "關閉原始內容模態", + "contentTruncated": "內容已截斷至 256 KB (原始大小: {size})", + "viewFullRaw": "查看完整原始內容", + "rawScrapedContent": "抓取的原始內容", + "rawContent": "原始內容— {size}", + "closeRawModal": "關閉原始內容模態框", "httpError": "錯誤 {status}", "failed": "失敗", "requestFailed": "請求失敗", "embedding": "嵌入", - "embeddingSample": "哈囉,世界!", - "image": "圖片", - "imageSample": "日落時分的寧靜山景", + "embeddingSample": "你好,世界!", + "image": "圖像", + "imageSample": "日落時分群山環抱的寧靜風景", "music": "音樂", - "musicSample": "輕快爵士鋼琴搭配輕量打擊樂", - "noAudioUrl": "回應中無音訊 URL:{response}", - "documentUrl": "文件 URL", - "fileTooLarge25Mb": "檔案過大 — 最大 25 MB", - "selectAudioFirst": "請先選擇音訊檔案。", - "speechToText": "語音轉文字", + "musicSample": "歡快的爵士鋼琴配輕打擊樂", + "noAudioUrl": "回應中無音頻URL:{response}", + "documentUrl": "文件URL", + "fileTooLarge25Mb": "檔案過大—最大 25 MB", + "selectAudioFirst": "請先選擇音頻檔案。", + "speechToText": "語音轉文本", "chooseFile": "選擇檔案…", - "audioFormats25Mb": "mp3、wav、m4a、ogg、flac — 最大 25 MB", - "textToSpeech": "文字轉語音", - "ttsSample": "哈囉,這是一段文字轉語音測試。", - "video": "影片", + "audioFormats25Mb": "mp3, wav, m4a, ogg, flac—最大 25 MB", + "textToSpeech": "文本轉語音", + "ttsSample": "你好,這是一次文本轉語音測試。", + "video": "視頻", "videoSample": "山脈上空雲層的延時攝影", - "webFetch": "網頁擷取", - "webSearchSample": "什麼是 OmniRoute AI 閘道?", - "noActiveProviderDescription": "無作用中的搜尋提供者。請在提供者中設定一個。", + "webFetch": "網頁抓取", + "webSearchSample": "什麼是OmniRoute AI網關?", + "noActiveProviderDescription": "無活動搜尋提供者。請在“提供者”中設定。", "configureProviders": "設定提供者", "compareQuery": "要比較的查詢", - "compareQueryPlaceholder": "2026 年人工智慧趨勢", + "compareQueryPlaceholder": "2026 年人工智能趨勢", "selectedProviders": "提供者(已選 {count} 個):", "selectAll": "全選", "clear": "清除", "maxCompareProviders": "一次最多可比較 {count} 個提供者。", - "compareResults": "結果 —「{query}」", - "resultCount": "{count} 筆結果", + "compareResults": "結果— “{query}”", + "resultCount": "{count} 條結果", "noResults": "無結果", - "sharedResultTitle": "與其他提供者共通", - "sharedResult": "共通", - "overlapSummary": "{first} vs {second}:{overlap} 個共通項目", - "compareEmptyTitle": "選擇提供者並輸入查詢以進行比較", - "compareEmptyDescription": "結果將並排顯示,包含延遲、成本與 URL 重疊程度" + "sharedResultTitle": "與其他提供者共有", + "sharedResult": "共有", + "overlapSummary": "{first} vs {second}:{overlap} 共有", + "compareEmptyTitle": "選擇提供者並輸入查詢以比較", + "compareEmptyDescription": "結果將並排顯示,包含延遲、成本和URL重合度" }, "cliTools": { - "title": "CLI 工具", + "title": "CLI工具", "classifierCompatTitle": "自動權限分類器相容性", - "classifierCompatDescription": "以合成允許回應繞過 Claude Code 的 --permission-mode auto 安全分類器,使備援路由不會因關閉而失敗。預設為關閉。", + "classifierCompatDescription": "使用合成的允許回應短路Claude Code的 --permission-mode auto 安全分類器,避免回退路由故障關閉。預設關閉。", "classifierCompatCycle": "循環:關閉 → 自動 → 始終", - "classifierCompatLoadFailed": "無法載入設定", + "classifierCompatLoadFailed": "載入設定失敗", "classifierCompatMode": { "off": "關閉", "auto": "自動", "always": "始終" }, - "failedSave": "無法儲存", - "profileSyncTitle": "CLI 設定檔自動同步", - "profileSyncDescription": "提供者模型同步後,自動從即時目錄重新產生 CLI 工具設定檔。預設為關閉——僅寫入設定檔;使用中的/預設設定絕不會被變更。", + "failedSave": "保存失敗", + "profileSyncTitle": "CLI設定檔自動同步", + "profileSyncDescription": "在提供者模型同步後,自動從實時目錄重新生成CLI工具設定檔。預設關閉—僅寫入設定檔;絕不會更改活動/預設設定。", "profileSyncLoadFailed": "載入設定失敗", - "codexProfiles": "Codex 設定檔", - "codexProfilesDescription": "在模型探索後重新產生 ~/.codex/*.config.toml。", - "claudeProfiles": "Claude Code 設定檔", - "claudeProfilesDescription": "在模型探索後重新產生每個 ~/.claude/profiles/…/settings.json。", + "codexProfiles": "Codex設定檔", + "codexProfilesDescription": "在模型發現後重新生成 ~/.codex/*.config.toml。", + "claudeProfiles": "Claude Code設定檔", + "claudeProfilesDescription": "在模型發現後重新生成每個 ~/.claude/profiles/…/settings.json。", "noActiveProviders": "當前沒有活躍的提供者", - "noActiveProvidersDesc": "請先新增並連線提供者以設定 CLI 工具。", - "mapModels": "對映模型", - "testConnection": "測試連線", - "connectionStatus": "連線狀態", + "noActiveProvidersDesc": "請先新增並連接提供者以設定CLI工具。", + "mapModels": "映射模型", + "testConnection": "測試連接", + "connectionStatus": "連接狀態", "configureEndpoint": "設定端點", "instructions": "使用說明", - "modelMapping": "模型對映", - "reasoningEffort": "{model} 的推理努力", + "modelMapping": "模型映射", + "reasoningEffort": "{model} 的推理力度", "effortNone": "無", "effortLow": "低", "effortMedium": "中", "effortHigh": "高", "effortExtraHigh": "極高", - "effortMax": "最高", + "effortMax": "最大", "effortUltra": "極致", "wireApi": "Wire API", "modelAliases": "模型別名", "addModel": "新增模型", "routeModelPlaceholder": "將 {model} 路由至...", - "baseUrl": "基礎 URL", - "apiKey": "API金鑰", + "baseUrl": "基礎URL", + "apiKey": "API Key", "configured": "已設定", "notConfigured": "未設定", "notInstalled": "未安裝", "custom": "自定義", "unknown": "未知", - "lastSavedAt": "最後儲存:{date}", + "lastSavedAt": "最後保存:{date}", "never": "從來沒有", "justNow": "剛才", "minutesAgoShort": "{count} 分鐘前", @@ -2554,12 +2554,12 @@ "daysAgoShort": "{count} 天前", "monthsAgoShort": "{count} 個月前", "yearsAgoShort": "{count}年前", - "runtimeCheckFailed": "執行時檢查失敗", - "yourApiKeyPlaceholder": "你的 API 金鑰", + "runtimeCheckFailed": "運行時檢查失敗", + "yourApiKeyPlaceholder": "你的API Key", "modelPlaceholder": "provider/model-id", - "configurationSaved": "設定儲存成功。", - "failedToSave": "儲存設定失敗。", - "noApiKeysCreateOne": "無 API 金鑰 - 在“金鑰”頁面建立一個", + "configurationSaved": "設定保存成功。", + "failedToSave": "保存設定失敗。", + "noApiKeysCreateOne": "無API Key - 在“金鑰”頁面創建一個", "defaultOmnirouteKey": "sk_omniroute(預設)", "selectModel": "選擇模型", "selectModelForAlias": "選擇 {alias} 的模型", @@ -2567,20 +2567,20 @@ "select": "選擇", "clear": "清除", "comingSoon": "即將推出", - "checkingRuntime": "正在檢查執行時狀態...", - "guideOnlyIntegration": "僅指南整合(無需本地執行時)", - "cliRuntimeDetected": "CLI 執行時已檢測到並準備就緒", - "cliFoundNotRunnable": "CLI 已找到但無法執行{reason}", - "cliRuntimeNotDetected": "未檢測到 CLI 執行時", - "binary": "二進位制", + "checkingRuntime": "正在檢查運行時狀態...", + "guideOnlyIntegration": "僅指南整合(無需本地運行時)", + "cliRuntimeDetected": "CLI運行時已檢測到並準備就緒", + "cliFoundNotRunnable": "CLI已找到但無法運行{reason}", + "cliRuntimeNotDetected": "未檢測到CLI運行時", + "binary": "二進制", "configPath": "設定路徑", "configPathShort": "設定", - "failedCheckRuntimeStatus": "無法檢查執行時狀態。", + "failedCheckRuntimeStatus": "無法檢查運行時狀態。", "copy": "複製", "copied": "已複製", "copyConfig": "複製設定", - "saveConfig": "儲存設定", - "selectionSaved": "選擇已儲存", + "saveConfig": "保存設定", + "selectionSaved": "選擇已保存", "guide": "指南", "detected": "檢測到", "notReady": "還沒準備好", @@ -2588,37 +2588,37 @@ "inactive": "未啟用", "startMitm": "啟動中間人", "stopMitm": "停止中間人", - "mitmStarted": "MITM 啟動成功!", - "mitmStopped": "MITM 已成功停止!", - "failedStart": "啟動 MITM 失敗", - "failedStop": "停止 MITM 失敗", - "saveMappings": "儲存對映", - "mappingsSaved": "對映已儲存!", - "failedSaveMappings": "儲存對映失敗", + "mitmStarted": "MITM啟動成功!", + "mitmStopped": "MITM已成功停止!", + "failedStart": "啟動MITM失敗", + "failedStop": "停止MITM失敗", + "saveMappings": "保存映射", + "mappingsSaved": "映射已保存!", + "failedSaveMappings": "保存映射失敗", "reasoningEffortDefault": "預設", - "reasoningEffortHint": "預設保留代理傳送的推理努力", + "reasoningEffortHint": "“預設”將保留智能體發送的推理力度", "reasoningEffortTier": { "none": "無", "low": "低", - "medium": "中等", + "medium": "中", "high": "高", - "xhigh": "極高" + "xhigh": "超高" }, "howItWorks": "工作原理:", - "antigravityHowWorksDesc": "Antigravity 會向 Google 端點發起請求,MITM 會攔截這些請求並重定向到 OmniRoute。", - "antigravityStep1": "1. 啟動 MITM,讓請求通過 OmniRoute 路由。", + "antigravityHowWorksDesc": "Antigravity會向Google端點發起請求,MITM會攔截這些請求並重定向到OmniRoute。", + "antigravityStep1": "1. 啟動MITM,讓請求通過OmniRoute路由。", "antigravityStep2Prefix": "2. 新增", "antigravityStep2Suffix": "新增到您的主機檔案中作為 127.0.0.1。", - "antigravityStep3": "3. 開啟 Antigravity,請求就會被代理。", - "mitmHowWorksDesc": "{toolName} 會先向原始提供者端點發起請求,隨後由 MITM 攔截並重定向到 OmniRoute。", - "mitmStep1": "1. 啟動 MITM,讓請求經由 OmniRoute 路由。", + "antigravityStep3": "3. 打開Antigravity,請求就會被代理。", + "mitmHowWorksDesc": "{toolName} 會先向原始提供者端點發起請求,隨後由MITM攔截並重定向到OmniRoute。", + "mitmStep1": "1. 啟動MITM,讓請求經由OmniRoute路由。", "mitmStep2Prefix": "2. 將", - "mitmStep2Suffix": "新增到你的 hosts 檔案,並指向 127.0.0.1。", - "mitmStep3": "3. 開啟 {toolName},後續請求就會自動通過代理轉發。", - "sudoPasswordRequiredTitle": "需要 sudo 密碼", + "mitmStep2Suffix": "新增到你的hosts檔案,並指向 127.0.0.1。", + "mitmStep3": "3. 打開 {toolName},後續請求就會自動通過代理轉發。", + "sudoPasswordRequiredTitle": "需要sudo密碼", "sudoPasswordHint": "修改主機檔案和系統代理設定需要管理員密碼。", - "enterSudoPassword": "輸入 sudo 密碼", - "sudoPasswordRequiredError": "必須提供 sudo 密碼。", + "enterSudoPassword": "輸入sudo密碼", + "sudoPasswordRequiredError": "必須提供sudo密碼。", "cancel": "取消", "confirm": "確認", "settingsApplied": "設定應用成功!", @@ -2628,59 +2628,59 @@ "backupRestored": "備份已恢復!", "failedRestore": "恢復失敗", "checkingCli": "正在檢查 {tool} CLI...", - "cliNotRunnable": "{tool} CLI 已安裝但無法執行", - "cliNotInstalled": "{tool} CLI 未安裝", + "cliNotRunnable": "{tool} CLI已安裝但無法運行", + "cliNotInstalled": "{tool} CLI未安裝", "cliNotDetected": "未檢測到 {tool} CLI", - "cliDetectedReady": "{tool} CLI 已檢測到並準備就緒", - "cliFoundFailedHealthcheck": "找到 {tool} CLI,但執行時執行狀況檢查失敗{reason}。", - "installCliPrompt": "請安裝 {tool} CLI 以使用此功能。", - "installCodexPrompt": "請先安裝 Codex CLI,才能使用自動應用功能。", + "cliDetectedReady": "{tool} CLI已檢測到並準備就緒", + "cliFoundFailedHealthcheck": "找到 {tool} CLI,但運行時運行狀況檢查失敗{reason}。", + "installCliPrompt": "請安裝 {tool} CLI以使用此功能。", + "installCodexPrompt": "請先安裝Codex CLI,才能使用自動應用功能。", "hide": "隱藏", "howToInstall": "如何安裝", "installationGuide": "安裝指南", "platforms": "macOS / Linux / Windows:", - "afterInstallationRun": "安裝後,執行", + "afterInstallationRun": "安裝後,運行", "toVerify": "來驗證。", "current": "當前", "baseUrlPlaceholder": "https://.../v1", "resetToDefault": "重置為預設值", - "providerModelPlaceholder": "提供者/模型 ID", + "providerModelPlaceholder": "提供者/模型ID", "apply": "應用", "reset": "重置", "manualConfig": "手動設定", "backups": "備份", "configBackups": "設定備份", - "noBackupsYet": "還沒有備份。每次應用或重置之前都會自動建立備份。", + "noBackupsYet": "還沒有備份。每次應用或重置之前都會自動創建備份。", "restore": "恢復", "backupRestoredReloading": "備份已恢復!正在重新載入狀態...", "failedRestoreBackup": "恢復備份失敗", "applied": "已應用!", "failed": "失敗", "resetDone": "重置!", - "omnirouteConfiguredOpenAiCompatible": "OmniRoute 已設定為 OpenAI 相容提供者", + "omnirouteConfiguredOpenAiCompatible": "OmniRoute已設定為OpenAI相容提供者", "provider": "提供者", "model": "模型", "providers": "提供者", "auth": "授權", - "noApiKeysAvailable": "沒有可用的 API 金鑰", + "noApiKeysAvailable": "沒有可用的API Key", "usingDefaultOmniroute": "使用預設值:sk_omniroute", "updateConfig": "更新設定", "applyConfig": "應用設定", "noBackupsAvailable": "沒有可用的備份。", - "profileSaved": "設定檔案“{name}”已儲存!", - "failedSaveProfile": "儲存設定檔案失敗", - "profileActivated": "設定檔案已啟用!", - "failedActivateProfile": "啟用設定檔案失敗", + "profileSaved": "設定檔案“{name}”已保存!", + "failedSaveProfile": "保存設定檔案失敗", + "profileActivated": "設定檔案已激活!", + "failedActivateProfile": "激活設定檔案失敗", "profiles": "設定檔案", - "savedProfiles": "儲存的設定檔案", - "noProfilesYet": "尚未儲存設定檔案。將當前設定儲存為下面的設定檔案。", - "activate": "啟用", + "savedProfiles": "保存的設定檔", + "noProfilesYet": "尚未保存設定檔。將當前設定保存為下面的設定檔。", + "activate": "激活", "deleteProfile": "刪除設定檔案", - "profileNamePlaceholder": "設定檔案名稱(例如:個人帳戶)", - "saveCurrent": "儲存當前", - "codexAuthNotePrefix": "Codex 使用", + "profileNamePlaceholder": "設定檔案名稱(例如:個人賬戶)", + "saveCurrent": "保存當前", + "codexAuthNotePrefix": "Codex使用", "codexAuthNoteMiddle": "與", - "codexAuthNoteSuffix": "單擊“應用”進行自動設定。", + "codexAuthNoteSuffix": "單擊“應用”自動設定。", "claudeManualConfiguration": "Claude CLI - 手動設定", "codexManualConfiguration": "Codex CLI - 手動設定", "droidManualConfiguration": "Factory Droid - 手動設定", @@ -2688,87 +2688,87 @@ "clineManualConfiguration": "Cline - 手動設定", "kiloManualConfiguration": "Kilo - 手動設定", "whenToUseLabel": "何時使用", - "openToolDocs": "開啟工具檔案", + "openToolDocs": "打開工具文件", "toolUseCases": { - "claude": "當您需要強大的規劃工作流程和使用 Claude Code 進行長的多檔案重構時使用。", - "codex": "當您的團隊在 OpenAI Codex CLI 流程和基於設定檔案的身份驗證方面實現標準化時使用。", - "droid": "當您需要專注於快速編碼和命令執行迴圈的輕量級終端代理時使用。", - "openclaw": "當您需要 Open Claw 風格的編碼代理但通過 OmniRoute 策略進行路由時使用。", - "cline": "當您在編輯器內設定編碼代理並希望使用 OmniRoute 模型進行引導設定時使用。", - "kilo": "當您的工作流程依賴於 Kilo Code 命令和快速迭代編輯時使用。", - "cursor": "在 Cursor 中編碼並且需要通過 OmniRoute 自定義 OpenAI 相容模型時使用。", - "continue": "在 IDE 中執行“Continue”並且需要可移植的基於 JSON 的提供程式設定時使用。", - "opencode": "當您更喜歡通過 OpenCode 進行終端本機代理執行和指令碼自動化時使用。", - "kiro": "在整合 Kiro 並從 OmniRoute 集中控制模型路由時使用。", - "windsurf": "當您需要 Windsurf AI IDE 並通過 OmniRoute 路由模型時使用。", - "antigravity": "當必須通過 MITM 攔截 Antigravity/Kiro 流量並將其路由到 OmniRoute 時使用。", - "copilot": "當您想要 Copilot 聊天風格的 UX 同時強制執行 OmniRoute 鍵和路由規則時使用。", - "amp": "當您想要 Amp 簡寫工作流,但仍需要 OmniRoute 別名和路由規則支援時使用。", - "hermes": "當您需要輕量級終端原生 AI 助手來處理快速任務時使用。", - "hermes-agent": "需要使用 Hermes Agent (by Nousresearch) 時使用,預設、委派、視覺與輔助模型均通過 OmniRoute 路由。", - "custom": "用於自定義工具實現或通用 OpenAI 相容設定。" + "claude": "當您需要強大的規劃工作流程和使用Claude Code進行長多檔案重構時使用。", + "codex": "當您的團隊在OpenAI Codex CLI流程和基於設定檔的身份驗證方面實現標準化時使用。", + "droid": "當您需要專注於快速編碼和命令執行循環的輕量級終端代理時使用。", + "openclaw": "當您需要Open Claw風格的編碼代理但通過OmniRoute策略路由時使用。", + "cline": "當您在編輯器內設定編碼代理並希望使用OmniRoute模型引導設定時使用。", + "kilo": "當您的工作流程依賴於Kilo Code命令和快速迭代編輯時使用。", + "cursor": "在Cursor中編碼並且需要通過OmniRoute自定義OpenAI相容模型時使用。", + "continue": "在IDE中運行“Continue”並且需要可移植的基於JSON的提供程式設定時使用。", + "opencode": "當您更喜歡通過OpenCode進行終端本機代理運行和腳本自動化時使用。", + "kiro": "在整合Kiro並從OmniRoute集中控制模型路由時使用。", + "windsurf": "當您需要Windsurf AI IDE並通過OmniRoute路由模型時使用。", + "antigravity": "當必須通過MITM攔截Antigravity/Kiro流量並將其路由到OmniRoute時使用。", + "copilot": "當您想要Copilot聊天風格的UX同時強制執行OmniRoute鍵和路由規則時使用。", + "amp": "當您想要Amp簡寫工作流,但仍需要OmniRoute別名和路由規則支援時使用。", + "hermes": "當您需要輕量級終端原生AI助手來處理快速任務時使用。", + "hermes-agent": "需要使用Hermes智能體 (by Nousresearch) 時使用,預設、委派、視覺與輔助模型均通過OmniRoute路由。", + "custom": "用於自定義工具實現或通用OpenAI相容設定。" }, "toolDescriptions": { - "antigravity": "帶 MITM 的 Google Antigravity IDE", - "claude": "Claude Code CLI", + "antigravity": "帶MITM的Google Antigravity IDE", + "claude": "Anthropic Claude Code CLI", "codex": "OpenAI Codex CLI", - "grok-build": "xAI Grok Build TUI 程式代理,支援自訂提供者", - "droid": "Factory Droid AI 助手", - "openclaw": "OpenClaw AI 助手", - "cline": "Cline AI 編碼助手 CLI", - "kilo": "Kilo Code AI 助手 CLI", - "qwen": "阿里巴巴 Qwen Code CLI", - "cursor": "Cursor AI 程式碼編輯器", + "grok-build": "支援自定義提供者的xAI Grok Build TUI編碼智能體", + "droid": "Factory Droid AI助手", + "openclaw": "OpenClaw AI助手", + "cline": "Cline AI編碼助手CLI", + "kilo": "Kilo Code AI助手CLI", + "qwen": "Qwen Code CLI", + "cursor": "Cursor AI代碼編輯器", "continue": "繼續AI助手", - "opencode": "OpenCode AI 編碼智慧體(終端)", - "kiro": "Amazon Kiro - AI 驅動 IDE", + "opencode": "OpenCode AI編碼智能體(終端)", + "kiro": "Amazon Kiro - AI驅動IDE", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp 程式設計助手 CLI", - "hermes": "Hermes AI 終端助手", - "hermes-agent": "Hermes Agent (by Nousresearch) — 支援多模型(委派、視覺、壓縮等)的高階終端 AI。", - "custom": "通用 OpenAI 相容 CLI 或 SDK 設定生成器", - "aider": "Aider AI 結對程式設計 CLI,支援 OpenAI 相容的基礎 URL", - "forge": "ForgeCode 程式代理 CLI,支援自訂提供者", - "cursor-cli": "Cursor Agent CLI 的無頭代理模式", - "roo": "Roo Code AI 助手,適用於 VS Code", - "jcode": "jcode 終端機程式代理", - "deepseek-tui": "以 Rust 撰寫的 DeepSeek TUI 程式代理", - "codewhale": "CodeWhale 程式代理,DeepSeek TUI 的後繼者", - "smelt": "Smelt 程式代理 CLI", - "pi": "輕量級 Pi 終端機程式代理", - "crush": "Crush 終端機程式代理,由 Charm 開發", - "goose": "Goose 自主代理 CLI", - "interpreter": "Open Interpreter 自主程式代理 CLI", - "omp": "Oh My Pi 終端機程式代理", - "letta": "Letta CLI 代理,具備持久記憶與工具使用能力", - "warp": "Warp AI 終端機,支援自訂提供者", - "agent-deck": "Agent Deck 多代理協調器" + "amp": "Sourcegraph Amp編程助手CLI", + "hermes": "Hermes AI終端助手", + "hermes-agent": "Hermes智能體 (by Nousresearch) —支援多模型(委派、視覺、壓縮等)的高級終端AI。", + "custom": "通用OpenAI相容CLI或SDK設定生成器", + "aider": "具有OpenAI相容Base URL的Aider AI結對編程CLI", + "forge": "支援自定義提供者的ForgeCode編碼智能體CLI", + "cursor-cli": "無頭智能體模式下的Cursor Agent CLI", + "roo": "適用於VS Code的Roo Code AI助手", + "jcode": "jcode終端編碼智能體", + "deepseek-tui": "用Rust編寫的DeepSeek TUI編程智能體", + "codewhale": "CodeWhale編程智能體,DeepSeek TUI的繼任者", + "smelt": "Smelt編程智能體CLI", + "pi": "輕量級Pi終端編程智能體", + "crush": "Charm推出的Crush終端編程智能體", + "goose": "Goose自主智能體CLI", + "interpreter": "Open Interpreter自主編程智能體CLI", + "omp": "Oh My Pi終端編程智能體", + "letta": "具備持久記憶和工具使用能力的Letta CLI智能體", + "warp": "支援自定義提供者的Warp AI終端", + "agent-deck": "智能體Deck多智能體編排器" }, "guides": { "cursor": { "notes": { - "0": "使用該功能需要 Cursor Pro 帳戶。", - "1": "Cursor 會通過自己的伺服器轉發請求,因此不支援本地端點。請在設定中啟用雲端點。" + "0": "使用該功能需要Cursor Pro賬戶。", + "1": "Cursor會通過自己的伺服器轉發請求,因此不支援本地端點。請在設定中啟用雲端點。" }, "steps": { "1": { - "title": "開啟設定", + "title": "打開設定", "desc": "轉到設定 -> 模型" }, "2": { - "title": "啟用 OpenAI API", - "desc": "開啟 “OpenAI API key” 選項" + "title": "啟用OpenAI API", + "desc": "開啟 “OpenAI API Key” 選項" }, "3": { "title": "Base URL" }, "4": { - "title": "API金鑰" + "title": "API Key" }, "5": { "title": "新增自定義模型", - "desc": "點選“檢視所有模型”->“新增自定義模型”" + "desc": "點擊“查看所有模型”->“新增自定義模型”" }, "6": { "title": "選擇模型" @@ -2778,11 +2778,11 @@ "continue": { "steps": { "1": { - "title": "開啟設定", - "desc": "開啟繼續設定檔案" + "title": "打開設定", + "desc": "打開繼續設定檔" }, "2": { - "title": "API金鑰" + "title": "API Key" }, "3": { "title": "選擇模型" @@ -2793,65 +2793,65 @@ } }, "notes": { - "0": "Continue 使用 JSON 設定檔案。" + "0": "Continue使用JSON設定檔。" } }, "opencode": { "steps": { "1": { - "title": "安裝 OpenCode", - "desc": "通過 npm 安裝:npm install -g opencode-ai" + "title": "安裝OpenCode", + "desc": "通過npm安裝:npm install -g opencode-ai" }, "2": { - "title": "API 金鑰" + "title": "API Key" }, "3": { - "title": "設定 Base URL", + "title": "設定Base URL", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { "title": "選擇模型" }, "5": { - "title": "使用 Thinking 變體", - "desc": "對於思考模型,請使用 --variant high/low/max 執行(示例命令見下方)。" + "title": "使用Thinking變體", + "desc": "對於思考模型,請使用 --variant high/low/max運行(示例命令見下方)。" } }, "notes": { - "0": "OpenCode 需要設定 API 金鑰。", - "1": "將基礎 URL 設定為您的 OmniRoute 端點。" + "0": "OpenCode需要設定API Key。", + "1": "將基礎URL設定為您的OmniRoute端點。" } }, "kiro": { "steps": { "1": { - "title": "開啟 Kiro 設定", - "desc": "前往 Settings → AI Provider" + "title": "打開Kiro設定", + "desc": "前往Settings → AI提供者" }, "2": { "title": "Base URL", - "desc": "貼上你的 OmniRoute 端點 URL" + "desc": "粘貼你的OmniRoute端點URL" }, "3": { - "title": "API 金鑰" + "title": "API Key" }, "4": { "title": "選擇模型" } }, "notes": { - "0": "Kiro 需要 Amazon 帳戶。" + "0": "Kiro需要Amazon賬戶。" } }, "windsurf": { "steps": { "1": { - "title": "開啟 AI 設定", - "desc": "點選 Windsurf 中的 AI Settings 圖示,或前往 Settings" + "title": "打開AI設定", + "desc": "點擊Windsurf中的AI Settings圖標,或前往Settings" }, "2": { "title": "新增自定義提供者", - "desc": "選擇 \"Add custom provider\" (OpenAI 相容)" + "desc": "選擇 \"Add custom provider\" (OpenAI相容)" }, "3": { "title": "Base URL", @@ -2859,93 +2859,93 @@ }, "4": { "title": "API Key", - "desc": "選擇你的 OmniRoute API 金鑰" + "desc": "選擇你的OmniRoute API Key" }, "5": { "title": "選擇模型", - "desc": "從下拉選單中選擇模型" + "desc": "從下拉菜單中選擇模型" } } } }, "autoConfiguredTab": "自動設定", - "toolCategoriesDesc": "設定 AI 程式設計助手通過 OmniRoute 路由", + "toolCategoriesDesc": "設定AI編程助手通過OmniRoute路由", "allToolsTab": "所有工具", "guidedClientsTab": "引導客戶端", - "mitmClientsTab": "MITM 客戶端", - "customCliTab": "自定義 CLI", + "mitmClientsTab": "MITM客戶端", + "customCliTab": "自定義CLI", "toolCategories": "工具分類", "visibleToolsCount": "{count} 個工具可用", - "customCliBuilderTitle": "相容 OpenAI 的 CLI 構建器", - "customCliBuilderDescription": "為任何接受 OpenAI 相容的基本 URL、API 金鑰和模型 ID 的 CLI 或 SDK 生成環境變數和 JSON 片段。", - "customCliNoModels": "連線至少一個提供者以填充模型選擇器。", - "customCliNameLabel": "CLI 名稱", - "customCliNamePlaceholder": "例如我的團隊 CLI", + "customCliBuilderTitle": "相容OpenAI的CLI構建器", + "customCliBuilderDescription": "為任何接受OpenAI相容的基本URL、API Key和模型ID的CLI或SDK生成環境變量和JSON片段。", + "customCliNoModels": "連接至少一個提供者以填充模型選擇器。", + "customCliNameLabel": "CLI名稱", + "customCliNamePlaceholder": "例如我的團隊CLI", "customCliDefaultModelLabel": "預設型號", - "customCliDefaultModelHelp": "使用任何 OmniRoute 模型 ID 或組合。大多數與 OpenAI 相容的 CLI 只需要 /v1 基本 URL 加上模型字串。", - "customCliKeyHelper": "對於本地安裝 OmniRoute 可以使用 sk_omniroute。在雲模式下,選擇您的管理 API 金鑰之一。", - "customCliAliasMappingsLabel": "別名對映", - "customCliAliasMappingsHelp": "需要穩定簡寫名稱的包裝器指令碼或設定檔案的可選幫助程式別名。", + "customCliDefaultModelHelp": "使用任何OmniRoute模型ID或組合。大多數與OpenAI相容的CLI只需要 /v1 基本URL加上模型字串。", + "customCliKeyHelper": "對於本地安裝OmniRoute可以使用sk_omniroute。在雲模式下,選擇您的管理API Key之一。", + "customCliAliasMappingsLabel": "別名映射", + "customCliAliasMappingsHelp": "需要穩定簡寫名稱的包裝器腳本或設定檔的可選幫助程式別名。", "customCliAddAlias": "新增別名", - "customCliNoMappings": "還沒有別名對映。如果您的包裝器或團隊指令碼使用穩定的短名稱,請新增一個。", + "customCliNoMappings": "還沒有別名映射。如果您的包裝器或團隊腳本使用穩定的短名稱,請新增一個。", "customCliAliasPlaceholder": "例如評論", "customCliTargetModelLabel": "目標型號", - "customCliEndpointHintLabel": "如何連線端點", - "customCliEndpointHint": "將任何 OpenAI 相容客戶端指向 OmniRoute /v1 基本 URL。原始聊天完成端點是 {endpoint}。當工具需要提供程式物件時使用 JSON 塊,或者在讀取 OPENAI_* 變數時使用 env 指令碼。", - "customCliEnvBlockTitle": "環境 / shell 片段", - "customCliJsonBlockTitle": "提供者 JSON 塊", + "customCliEndpointHintLabel": "如何連接端點", + "customCliEndpointHint": "將任何OpenAI相容客戶端指向OmniRoute /v1 基本URL。原始聊天完成端點是 {endpoint}。當工具需要提供程式物件時使用JSON塊,或者在讀取OPENAI_* 變量時使用env腳本。", + "customCliEnvBlockTitle": "環境 / shell片段", + "customCliJsonBlockTitle": "提供者JSON塊", "networkError": "網路錯誤", "other": "其他", "preview": "預覽", - "refreshAll": "全部重新整理", - "hermesRoleDefault": "預設(主要)", - "hermesRoleDefaultDesc": "主要對話模型", - "hermesRoleDelegation": "委派(子代理)", - "hermesRoleDelegationDesc": "協調器與子代理模型", + "refreshAll": "全部刷新", + "hermesRoleDefault": "預設(主)", + "hermesRoleDefaultDesc": "主對話模型", + "hermesRoleDelegation": "委派(子智能體)", + "hermesRoleDelegationDesc": "編排器與子智能體模型", "hermesRoleVision": "視覺", - "hermesRoleVisionDesc": "圖片與螢幕截圖理解", + "hermesRoleVisionDesc": "圖像與屏幕截圖理解", "hermesRoleCompression": "壓縮", - "hermesRoleCompressionDesc": "提示壓縮與摘要", - "hermesRoleWebExtract": "網頁擷取", - "hermesRoleWebExtractDesc": "網頁內容擷取", - "hermesRoleSkillsHub": "技能中心", - "hermesRoleSkillsHubDesc": "技能與工具使用推理", - "hermesRoleApproval": "核准", - "hermesRoleApprovalDesc": "安全與核准決策", - "hermesSelectBeforePreview": "在預覽前,請先為角色選取模型,或確認角色已載入。", - "hermesPreviewFailed": "無法產生預覽", - "hermesSavedTo": "已儲存至 {path}", - "hermesFirstSetupTitle": "首次透過 OmniRoute 設定於 {date}", - "hermesSinceSetup": "設置後 {time}", + "hermesRoleCompressionDesc": "提示詞壓縮與摘要", + "hermesRoleWebExtract": "網頁提取", + "hermesRoleWebExtractDesc": "網頁內容提取", + "hermesRoleSkillsHub": "Skills中心", + "hermesRoleSkillsHubDesc": "Skills與工具使用推理", + "hermesRoleApproval": "審批", + "hermesRoleApprovalDesc": "安全與審批決策", + "hermesSelectBeforePreview": "在預覽之前,請為角色選擇模型,或確保角色已載入。", + "hermesPreviewFailed": "生成預覽失敗", + "hermesSavedTo": "已保存至 {path}", + "hermesFirstSetupTitle": "首次於 {date} 通過OmniRoute設定", + "hermesSinceSetup": "距設定已有 {time}", "hermesConfiguredRoles": "{configured}/{total} 個角色", - "hermesQuickApply": "快速將相同模型套用至所有角色:", - "hermesApplyModelToAll": "將 {model} 套用至所有角色", - "hermesViaOmniRoute": "{provider} (經由 OmniRoute)", - "hermesNotOmniRoute": "{provider}(非 OmniRoute)", - "hermesRemovePendingRole": "從待定變更中移除此角色", - "hermesApply": "套用至 Hermes Agent", - "hermesRolesWillUpdate": "{count, plural, one {# 個角色將被更新} other {# 個角色將被更新}}", - "hermesPreviewPath": "預覽——將寫入至 ~/.hermes/config.yaml", - "hermesSaveDescription": "將選取的模型為每個角色儲存至", - "copilotConfigGenerator": "GitHub Copilot 設定生成器", - "copilotGeneratorDescriptionPrefix": "產生", - "copilotGeneratorDescriptionSuffix": "VS Code GitHub Copilot 的區塊,使用 Azure 廠商模式。選取您想要的模型,然後將 JSON 複製到您的設定檔中。", - "copilotCompatibilityWarning": "此設定使用 Azure 廠商解決方案來處理自訂模型清單。已在 VS Code ≥ 1.109GitHub Copilot Chat ≥ v0.37 上測試。未來的擴充功能更新可能會改變此行為。", - "copilotApiKey": "API金鑰", - "copilotSelectModels": "選取模型({selected}/{total})", + "hermesQuickApply": "快速將相同模型應用到所有角色:", + "hermesApplyModelToAll": "將 {model} 應用到每個角色", + "hermesViaOmniRoute": "{provider}(通過OmniRoute)", + "hermesNotOmniRoute": "{provider}(非OmniRoute)", + "hermesRemovePendingRole": "從待處理更改中移除此角色", + "hermesApply": "應用到Hermes Agent", + "hermesRolesWillUpdate": "{count, plural, one {將更新 # 個角色} other {將更新 # 個角色}}", + "hermesPreviewPath": "預覽—將寫入 ~/.hermes/config.yaml", + "hermesSaveDescription": "將每個角色所選的模型保存到", + "copilotConfigGenerator": "GitHub Copilot設定生成器", + "copilotGeneratorDescriptionPrefix": "生成", + "copilotGeneratorDescriptionSuffix": "塊,適用於採用Azure提供者模式的VS Code GitHub Copilot。選擇所需的模型,然後將JSON複製到設定檔中。", + "copilotCompatibilityWarning": "此設定使用Azure提供者變通方案實現自定義模型列表。已在 VS Code ≥ 1.109GitHub Copilot Chat ≥ v0.37 上測試。未來的擴展更新可能會更改此行為。", + "copilotApiKey": "API Key", + "copilotSelectModels": "選擇模型 ({selected}/{total})", "selectAll": "全選", "loadingModels": "正在載入模型...", - "advancedOptions": "進階選項", + "advancedOptions": "高級選項", "vision": "視覺", - "copilotCopyConfigForModels": "複製設定({count} 個模型)", + "copilotCopyConfigForModels": "複製設定 ({count, plural, one {# 個模型} other {# 個模型}})", "copilotFilterModelsPlaceholder": "過濾器型號...", - "copilotMaxInputTokens": "最大輸入權杖數", + "copilotMaxInputTokens": "最大輸入令牌數", "copilotMaxOutputTokens": "最大輸出代幣", "copilotToolCalling": "工具呼叫", - "copilotPasteInto": "貼上到:", - "copilotReloadInstruction": "然後重新載入 VS Code 並在輸入提示中設定 API 金鑰。", + "copilotPasteInto": "粘貼到:", + "copilotReloadInstruction": "然後重新載入VS Code並在輸入提示框中設定API Key。", "wireApiChatCompletions": "聊天完成 (/chat/completions)", - "wireApiResponses": "回應 API (/responses)", + "wireApiResponses": "回應API (/responses)", "ccDiscoveryInfoButton": "__MISSING__:How to enable discovery in Claude Code", "ccDiscoveryInfoTooltip": "__MISSING__:Advertise non-Claude models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Doubles catalog entries for all clients when enabled globally.", "ccDiscoveryInfoLink": "__MISSING__:Open Feature Flags", @@ -2957,13 +2957,13 @@ }, "combos": { "title": "組合", - "description": "建立支援權重路由與故障回退的模型組合", + "description": "創建支援權重路由與故障回退的模型組合", "autoCatalogTitle": "自動路由目錄", "autoCatalogTemplateCount": "{count} 個模板", - "autoCatalogDescription": "內建 auto/* 組合,從已連線的提供者動態解析。直接將這些 ID 作為 model 欄位使用——無需設定。", + "autoCatalogDescription": "內置auto/* 組合,從已連接的提供者動態解析。直接將這些ID作為model欄位使用——無需設定。", "autoCatalogExpand": "展開自動路由目錄", "autoCatalogCollapse": "收起自動路由目錄", - "createCombo": "建立組合", + "createCombo": "創建組合", "editCombo": "編輯組合", "deleteCombo": "刪除組合", "noModels": "沒有模型", @@ -2974,28 +2974,28 @@ "maxRetries": "最大重試次數", "timeout": "超時時間(毫秒)", "healthcheck": "健康檢查", - "priority": "優先順序", + "priority": "優先級", "fallback": "回退", "roundRobin": "輪詢", "random": "隨機", "leastLatency": "最低延遲", "comboName": "組合名稱", "comboNamePlaceholder": "my-combo", - "comboDescription": "說明", - "comboDescriptionPlaceholder": "描述此組合的選用備註", + "comboDescription": "描述", + "comboDescriptionPlaceholder": "描述此組合的可選備註", "deleteConfirm": "刪除這個組合?", "noCombosYet": "還沒有組合", - "comboCreated": "組合建立成功", + "comboCreated": "組合創建成功", "comboUpdated": "組合更新成功", "comboDeleted": "組合已刪除", - "failedCreate": "建立組合失敗", + "failedCreate": "創建組合失敗", "failedUpdate": "更新組合失敗", - "errorCreating": "建立組合時出錯", + "errorCreating": "創建組合時出錯", "errorUpdating": "更新組合時出錯", "errorDeleting": "刪除組合時出錯", "testFailed": "測試請求失敗", "failedToggle": "切換組合狀態失敗", - "testResults": "測試結果 — {name}", + "testResults": "測試結果— {name}", "resolvedBy": "最終由以下模型處理:", "more": "另有 +{count} 個", "reqs": "請求", @@ -3003,7 +3003,7 @@ "proxyConfigured": "已設定代理", "copyComboName": "複製組合名稱", "enableCombo": "啟用組合", - "disableCombo": "停用組合", + "disableCombo": "禁用組合", "testCombo": "測試組合", "duplicate": "複製", "proxyConfig": "代理設定", @@ -3012,90 +3012,90 @@ "nameHint": "僅允許字母、數字、-、_、/ 和 .", "priorityDesc": "順序回退:優先嚐試模型 1,其次模型 2,以此類推", "weightedDesc": "按照權重百分比分配流量,並支援失敗回退", - "roundRobinDesc": "迴圈分發:每個請求按順序輪到下一個模型", + "roundRobinDesc": "循環分發:每個請求按順序輪到下一個模型", "contextRelay": "上下文接力", - "contextRelayDesc": "在帳戶輪換時通過交接摘要保持會話連續性", + "contextRelayDesc": "在賬戶輪換時通過交接摘要保持工作階段連續性", "randomDesc": "均勻隨機選擇,失敗後回退到剩餘模型", "leastUsedDesc": "優先選擇請求數最少的模型,隨時間平衡負載", "costOptimizedDesc": "根據定價優先路由到最便宜的模型", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", + "cacheOptimizedDesc": "將每個可複用的提示前綴一致地路由到同一提供者賬戶。", "resetAware": "復位感知RR", - "resetAwareDesc": "平衡剩餘配額與 5 小時和每週重置,然後對相似分數進行迴圈賽", + "resetAwareDesc": "平衡剩餘配額與 5 小時和每週重置,然後對相似分數進行循環賽", "strictRandom": "嚴格隨機", "strictRandomDesc": "洗牌池模式:每個模型使用一次後再重新洗牌", "fusion": "融合", - "fusionDesc": "將提示並行發送給面板中的每個模型,然後由評判模型綜整出一個最終答案", - "fusionJudgeModel": "評判模型", - "fusionJudgeModelHelp": "將小組回答整合為最終回應的模型。留空則使用第一個小組模型。", - "fusionMinPanel": "最少小組", - "fusionMinPanelHelp": "在落後者獲得寬限期之前所需的最少成功小組回答數(預設為 2)。", - "fusionStragglerGraceMs": "落後者寬限(毫秒)", - "fusionStragglerGraceMsHelp": "達到法定人數後等待緩慢小組模型的時間(預設 8000)。", - "fusionPanelHardTimeoutMs": "面板硬性逾時(毫秒)", - "fusionPanelHardTimeoutMsHelp": "絕對上限,防止單一卡住的模型拖慢整個面板(預設值 90000)。", + "fusionDesc": "將提示詞並行分發給每個專家組模型,然後由裁判模型綜合生成最終答案", + "fusionJudgeModel": "裁判模型", + "fusionJudgeModelHelp": "將專家組答案綜合為最終回應的模型。留空則使用第一個專家組模型。", + "fusionMinPanel": "最小專家組數", + "fusionMinPanelHelp": "在落後模型進入寬限窗口前所需的成功專家組答案數(預設 2)。", + "fusionStragglerGraceMs": "落後模型寬限時間 (ms)", + "fusionStragglerGraceMsHelp": "達到法定數量後等待慢速專家組模型的時間(預設 8000)。", + "fusionPanelHardTimeoutMs": "專家組硬超時 (ms)", + "fusionPanelHardTimeoutMsHelp": "絕對上限,防止單個卡住的模型拖慢整個專家組(預設 90000)。", "models": "模型", "autoBalance": "自動平衡", - "advancedSettings": "高階設定", + "advancedSettings": "高級設定", "retryDelay": "重試延遲(毫秒)", "concurrencyPerModel": "每模型併發數", "queueTimeout": "排隊超時(毫秒)", "contextRelayHandoffThreshold": "交接閾值", - "contextRelayHandoffThresholdHelp": "當配額使用達到該閾值時,OmniRoute 會在當前活躍帳戶耗盡前生成結構化交接摘要。", - "contextRelayMaxMessages": "摘要最大訊息數", - "contextRelayMaxMessagesHelp": "限制壓縮排接力摘要中的最近歷史訊息數量。", + "contextRelayHandoffThresholdHelp": "當配額使用達到該閾值時,OmniRoute會在當前活躍賬戶耗盡前生成結構化交接摘要。", + "contextRelayMaxMessages": "摘要最大消息數", + "contextRelayMaxMessagesHelp": "限制壓縮進接力摘要中的最近歷史消息數量。", "contextRelaySummaryModel": "摘要模型", - "contextRelaySummaryModelHelp": "僅用於生成交接摘要的可選覆蓋模型。留空則複用當前活躍的 combo 模型。", - "contextRelayProviderNote": "Context Relay 當前主要為 Codex 帳戶輪換生成交接摘要。與同一提供者的多個帳戶配合使用時,連續性效果最佳。", - "advancedHint": "留空則使用全域性預設值。這些設定會覆蓋每個提供者的設定。", - "failoverBeforeRetry": "重試之前進行故障轉移", + "contextRelaySummaryModelHelp": "僅用於生成交接摘要的可選覆蓋模型。留空則複用當前活躍的combo模型。", + "contextRelayProviderNote": "Context Relay當前主要為Codex賬戶輪換生成交接摘要。與同一提供者的多個賬戶配合使用時,連續性效果最佳。", + "advancedHint": "留空則使用全域預設值。這些設定會覆蓋每個提供者的設定。", + "failoverBeforeRetry": "重試之前故障轉移", "maxSetRetries": "最大設定重試次數", "setRetryDelayMs": "設定重試延遲(毫秒)", "moveUp": "上移", "moveDown": "下移", "removeModel": "移除", - "saving": "儲存中...", - "liveNoProviders": "尚未觀察到任何提供者。", - "liveFleetDataHint": "艦隊資料經由即時 combo 事件送達。", - "liveActiveCount": "啟用中 ({count})", + "saving": "保存中...", + "liveNoProviders": "尚未檢測到任何提供者。", + "liveFleetDataHint": "集群資料通過實時組合事件傳入。", + "liveActiveCount": "活躍 ({count})", "liveErrorCount": "錯誤 ({count})", - "liveInactiveCount": "未啟用 ({count})", - "liveNoRun": "無可用的 combo 執行。", - "liveDataHint": "即時資料經由 WebSocket combo 頻道送達。", - "liveDisconnected": "即時已停用 — WebSocket 已中斷連線。顯示最後已知狀態。", - "liveSelectCombo": "選取 combo", - "liveSelectComboPlaceholder": "— 選取 combo —", + "liveInactiveCount": "非活躍 ({count})", + "liveNoRun": "無可用組合運行記錄。", + "liveDataHint": "實時資料通過WebSocket組合通道傳入。", + "liveDisconnected": "實時已禁用—WebSocket已斷開連接。正在顯示最後已知狀態。", + "liveSelectCombo": "選擇組合", + "liveSelectComboPlaceholder": "—選擇組合—", "liveTargetCount": "{count, plural, one {# 個目標} other {# 個目標}}", - "liveSingle": "單一", - "liveFleet": "艦隊", + "liveSingle": "單個", + "liveFleet": "集群", "playgroundStatusAvailable": "可用", "playgroundStatusNoQuota": "無配額", - "playgroundStatusDegraded": "降級", + "playgroundStatusDegraded": "已降級", "playgroundStatusError": "錯誤", "playgroundStatusUnknown": "未知", - "playgroundNetworkError": "模擬期間發生網路錯誤", - "playgroundTitle": "Combo Playground", - "playgroundDescription": "模擬請求如何透過您的 combos 進行路由", + "playgroundNetworkError": "模擬過程中發生網路錯誤", + "playgroundTitle": "組合演練場", + "playgroundDescription": "模擬請求如何通過您的組合路由", "playgroundConfiguration": "設定", - "playgroundNoCombosConfigured": "未設定任何 combos", - "active": "啟用中", + "playgroundNoCombosConfigured": "未設定組合", + "active": "已啟用", "inactive": "未啟用", - "playgroundEstimatedPromptTokens": "預估提示詞 Token", + "playgroundEstimatedPromptTokens": "預估Prompt Token數", "playgroundSimulating": "正在模擬...", "playgroundSimulateRoute": "模擬路由", "playgroundRoutingPath": "路由路徑", "playgroundStrategy": "策略", "playgroundEstimatedCost": "預估成本", "playgroundEstimatedLatency": "預估延遲", - "playgroundFallback": "降級回退", + "playgroundFallback": "回退", "playgroundWeight": "權重 {value}", "playgroundWarningCount": "警告 ({count})", "playgroundErrorCount": "錯誤 ({count})", - "playgroundEmptyHint": "選取一個 combo 並點選模擬路由以查看路由路徑。", - "playgroundNoCombosYet": "尚未設定任何 combos。", - "playgroundCreateFirst": "請先建立一個", + "playgroundEmptyHint": "選擇一個組合並點擊 模擬路由 查看路由路徑。", + "playgroundNoCombosYet": "尚未設定任何組合。", + "playgroundCreateFirst": "先創建一個", "weighted": "加權", "leastUsed": "最少使用", - "costOpt": "成本最佳化", + "costOpt": "成本優化", "strategyGuideTitle": "如何使用這種策略", "strategyGuideWhen": "適用場景", "strategyGuideAvoid": "不適用場景", @@ -3109,12 +3109,12 @@ "weighted": { "when": "你需要在多個模型之間按比例分配流量。", "avoid": "你無法長期維護準確的權重。", - "example": "80% 穩定模型 + 20% 金絲雀模型的釋出方案。" + "example": "80% 穩定模型 + 20% 金絲雀模型的發佈方案。" }, "round-robin": { "when": "你希望流量分佈可預測且均勻。", "avoid": "模型之間的延遲或成本差異很大。", - "example": "同一模型掛在多個帳號上,用於分攤吞吐。" + "example": "同一模型掛在多個賬號上,用於分攤吞吐。" }, "random": { "when": "你只需要簡單分流,且不想做太多設定。", @@ -3122,7 +3122,7 @@ "example": "對等模型之間的快速原型驗證。" }, "least-used": { - "when": "你希望根據即時負載動態均衡。", + "when": "你希望根據實時負載動態均衡。", "avoid": "流量太低,無法體現按使用量均衡的價值。", "example": "混合負載場景下,某個模型常常更容易過載。" }, @@ -3132,44 +3132,44 @@ "example": "後台任務或批處理作業,優先考慮更低成本。" }, "reset-aware": { - "when": "您可以使用配額遙測和不同的重置視窗跨多個帳戶進行路由。", + "when": "您可以使用配額遙測和不同的重置窗口跨多個帳戶路由。", "avoid": "大多數帳戶無法使用配額遙測。", "example": "寧願明天每週重置 60% 的帳戶,也不願稍後重置 80% 的帳戶。" }, "strict-random": { "when": "適用於希望實現絕對均勻分配的場景,每個模型在重複前都會恰好使用一次。", "avoid": "如果模型之間的質量或延遲差異較大,且呼叫順序很重要,則不建議使用。", - "example": "例如:同一模型掛載多個帳戶,用於更均勻地分攤使用量。" + "example": "例如:同一模型掛載多個賬戶,用於更均勻地分攤使用量。" }, "p2c": { - "when": "當您希望使用 Power-of-Two-Choices 演算法進行低延遲選擇時使用。", - "avoid": "對於少於等於 2 個模型的小型組合避免使用 — 與輪詢相比沒有優勢。", - "example": "示例:在 4 個或更多等效模型端點之間進行高吞吐量推理。" + "when": "當您希望使用Power-of-Two-Choices演算法低延遲選擇時使用。", + "avoid": "對於少於等於 2 個模型的小型組合避免使用—與輪詢相比沒有優勢。", + "example": "示例:在 4 個或更多等效模型端點之間高吞吐量推理。" }, "context-relay": { - "when": "當長會話必須在帳戶輪換時保持工作上下文不丟失時使用。", - "avoid": "當帳戶切換很少發生或您不希望額外的摘要請求時避免使用。", - "example": "示例:在接近配額耗盡時輪換多個帳戶的 Codex 會話。" + "when": "當長工作階段必須在賬戶輪換時保持工作上下文不丟失時使用。", + "avoid": "當賬戶切換很少發生或您不希望額外的摘要請求時避免使用。", + "example": "示例:在接近配額耗盡時輪換多個賬戶的Codex工作階段。" }, "fill-first": { "when": "當您希望在轉移到下一個提供者之前完全耗盡一個提供者的配額時使用。", - "avoid": "當您需要在提供者之間進行請求級負載均衡時避免使用。", - "example": "示例:在使用完所有 200 美元的 Deepgram 額度後再回退到 Groq。" + "avoid": "當您需要在提供者之間請求級負載均衡時避免使用。", + "example": "示例:在使用完所有 200 美元的Deepgram額度後再回退到Groq。" }, "auto": { "when": "當您需要基於成本、延遲和質量的多因素評分路由時使用。", - "avoid": "當您需要嚴格的優先順序排序或歷史永續性時避免使用。", + "avoid": "當您需要嚴格的優先級排序或歷史持久性時避免使用。", "example": "示例:在具有不同優勢的模型之間平衡請求。" }, "lkgp": { - "when": "當您希望基於歷史成功率和效能進行路由時使用。", + "when": "當您希望基於歷史成功率和性能路由時使用。", "avoid": "當歷史資料有限或不可靠時避免使用。", "example": "示例:路由到在特定任務上有良好記錄的模型。" }, "context-optimized": { - "when": "當您需要最佳化模型間的上下文視窗使用時使用。", + "when": "當您需要優化模型間的上下文窗口使用時使用。", "avoid": "當模型具有相似的上下文長度或任務簡單時避免使用。", - "example": "示例:在具有大上下文視窗的模型之間分配長對話。" + "example": "示例:在具有大上下文窗口的模型之間分配長對話。" } }, "advancedHelp": { @@ -3179,50 +3179,50 @@ "healthcheck": "路由決策時跳過不健康的模型或提供者。", "concurrencyPerModel": "輪詢模式下每個模型允許的最大併發請求數。", "queueTimeout": "請求在佇列中等待超時前允許停留的最長時間。", - "failoverBeforeRetry": "啟用後,任何上游錯誤都會觸發立即故障轉移到下一個組合目標,跳過所有重試和回退 URL。", + "failoverBeforeRetry": "啟用後,任何上游錯誤都會觸發立即故障轉移到下一個組合目標,跳過所有重試和回退URL。", "maxSetRetries": "每個目標失敗時重試完整目標集的次數。 0 = 沒有設定級別重試。", "setRetryDelayMs": "設定級別重試嘗試之間的延遲,為暫時性問題提供解決時間。", - "disableSessionStickiness": "在每次請求時輪換到不同的連線,而不是根據首則訊息雜湊將整個對話固定到單一連線。覆寫全域預設值。保留為「繼承」以保留多輪對話的提示快取命中效果。" + "disableSessionStickiness": "每次請求時輪換到不同的連接,而不是通過首條消息的哈希值將整個對話固定在同一個連接上。覆蓋全域預設設定。保持為“繼承”以保留多輪對話的prompt-cache命中。" }, "templatesTitle": "快捷模板", "templatesDescription": "先套用一個初始模板,再按需調整模型和設定。", "templateApply": "應用模板", "templateHighAvailability": "高可用", - "templateHighAvailabilityDesc": "優先順序路由,配合健康檢查和安全重試。", + "templateHighAvailabilityDesc": "優先級路由,配合健康檢查和安全重試。", "templateCostSaver": "節省成本", - "templateCostSaverDesc": "面向預算優先場景的成本最佳化路由。", + "templateCostSaverDesc": "面向預算優先場景的成本優化路由。", "templateBalanced": "均衡負載", "templateBalancedDesc": "使用最少使用策略,隨時間均衡需求。", "usageGuideHide": "隱藏", "usageGuideDontShowAgain": "不再顯示", "usageGuideShow": "顯示指南", "quickTestTitle": "組合已準備好驗證", - "quickTestDescription": "現在執行一次測試,確認回退與延遲行為是否符合預期。", + "quickTestDescription": "現在運行一次測試,確認回退與延遲行為是否符合預期。", "testNow": "立即測試", "pricingCoverage": "定價覆蓋率", - "pricingCoverageHint": "成本最佳化策略在組合內所有模型都有定價資訊時效果最佳。", + "pricingCoverageHint": "成本優化策略在組合內所有模型都有定價資訊時效果最佳。", "pricingAvailable": "已有定價", "pricingMissing": "無定價", "pricingAvailableShort": "已定價", "pricingMissingShort": "無定價", "warningRoundRobinSingleModel": "輪詢策略至少有 2 個模型時才最有價值。", "warningCostOptimizedPartialPricing": "在 {total} 個模型中,只有 {priced} 個有定價資訊。路由可能只具備部分成本感知能力。", - "warningCostOptimizedNoPricing": "該組合未找到任何定價資料。成本最佳化策略的路由結果可能不符合預期。", + "warningCostOptimizedNoPricing": "該組合未找到任何定價資料。成本優化策略的路由結果可能不符合預期。", "filterAll": "全部", - "filterIntelligent": "智慧路由", + "filterIntelligent": "智能路由", "filterDeterministic": "確定性", "filterEmptyTitle": "沒有組合匹配此策略篩選。", - "filterEmptyIntelligentDescription": "建立自動或 LKGP 組合以填充智慧路由儀表盤。", - "filterEmptyDeterministicDescription": "當前僅存在自動和 LKGP 組合。切換回\"全部\"或建立確定性組合。", - "readinessTitle": "可以儲存了嗎?", - "readinessDescription": "在建立或更新組合前,請先檢查以下專案。", + "filterEmptyIntelligentDescription": "創建自動或LKGP組合以填充智能路由看板。", + "filterEmptyDeterministicDescription": "當前僅存在自動和LKGP組合。切換回\"全部\"或創建確定性組合。", + "readinessTitle": "可以保存了嗎?", + "readinessDescription": "在創建或更新組合前,請先檢查以下項目。", "readinessCheckName": "組合名稱有效", "readinessCheckModels": "至少選擇了一個模型", "readinessCheckWeights": "加權總和為 100%", "readinessCheckWeightsOptional": "當前策略無需權重規則", "readinessCheckPricing": "已有定價資料", "readinessCheckPricingOptional": "當前策略無需定價規則", - "saveBlockedTitle": "以下問題修復前無法儲存:", + "saveBlockedTitle": "以下問題修復前無法保存:", "saveBlockName": "請先填寫組合名稱。", "saveBlockModels": "請至少新增一個模型。", "saveBlockWeighted": "請將權重總和設定為 100%(當前:{total}%)。", @@ -3231,21 +3231,21 @@ "applyRecommendations": "應用推薦", "recommendationsUpdated": "已為 {strategy} 更新推薦設定。", "recommendationsApplied": "推薦設定已應用到當前組合。", - "intelligentPanelTitle": "智慧路由儀表盤", - "intelligentPanelDesc": "此自動路由組合的即時評分和健康狀態。", - "configOnlyStatus": "設定檢視", - "configOnlyHint": "此面板僅顯示路由輸入,即時熔斷器狀態請到健康頁面檢視。", + "intelligentPanelTitle": "智能路由看板", + "intelligentPanelDesc": "此自動路由組合的實時評分和健康狀態。", + "configOnlyStatus": "設定視圖", + "configOnlyHint": "此面板僅顯示路由輸入,實時熔斷器狀態請到健康頁面查看。", "routingInputs": "路由輸入", - "routingInputsHint": "模式包與權重保留在此處;熔斷器執行狀態保留在健康頁面。", - "emailVisibilityHint": "此處帳號郵箱遵循全域性隱私開關。", - "emailVisibilityTooltip": "使用眼睛圖示可在組合、提供者與配額頁面間全域性切換帳號郵箱的顯示與隱藏。", + "routingInputsHint": "模式包與權重保留在此處;熔斷器運行狀態保留在健康頁面。", + "emailVisibilityHint": "此處賬號郵箱遵循全域隱私開關。", + "emailVisibilityTooltip": "使用眼睛圖標可在組合、提供者與配額頁面間全域切換賬號郵箱的顯示與隱藏。", "manualModel": "手動模型", - "manualModelInvalid": "請按 provider/model 格式填寫。", - "manualModelUnknownProvider": "未知的提供者字首。", - "builderDynamicAccountShort": "動態帳號", + "manualModelInvalid": "請按provider/model格式填寫。", + "manualModelUnknownProvider": "未知的提供者前綴。", + "builderDynamicAccountShort": "動態賬號", "builderNeedValidName": "請先填寫有效的組合名稱再繼續。", "statusOverview": "狀態概覽", - "normalOperation": "正常執行", + "normalOperation": "正常運行", "allProvidersHealthy": "提供者報告路由狀況良好。", "incidentMode": "事件模式", "highCircuitBreakerRate": "檢測到熔斷器頻繁觸發。", @@ -3253,12 +3253,12 @@ "modePackUpdated": "模式包已更新為 {pack}。", "modePackHint": "切換預設以調整路由引擎偏向,無需重建組合。", "providerScores": "提供者評分", - "allProvidersEvaluated": "未設定候選池。執行時評估所有活躍提供者。", + "allProvidersEvaluated": "未設定候選池。運行時評估所有活躍提供者。", "excludedProviders": "已排除的提供者", - "excludedProvidersHint": "熔斷器處於 OPEN 狀態的提供者將被臨時排除在路由之外。", + "excludedProvidersHint": "熔斷器處於OPEN狀態的提供者將被臨時排除在路由之外。", "noExcludedProviders": "當前沒有提供者被排除。", "cooldownMinutes": "冷卻:{minutes} 分鐘", - "builderIntelligentTitle": "智慧路由設定", + "builderIntelligentTitle": "智能路由設定", "builderIntelligentDesc": "為此自動路由組合設定多因子評分引擎。", "candidatePoolLabel": "候選池", "candidatePoolHint": "選擇引擎應評估的提供者。留空則使用所有活躍提供者。", @@ -3271,10 +3271,10 @@ "explorationRateHint": "{percent}% 的請求可以探索非最優提供者。", "budgetCapLabel": "預算上限(美元/請求)", "budgetCapPlaceholder": "無限制", - "advancedWeightsTitle": "高階:評分權重", - "nestedComboFlatten": "扁平化巢狀 combo", - "nestedComboExecute": "將巢狀 combo 作為目標執行", - "effectiveRoutingShare": "有效路由佔比(權重 ÷ 總和)", + "advancedWeightsTitle": "高級:評分權重", + "nestedComboFlatten": "展平嵌套組合", + "nestedComboExecute": "將嵌套組合作為目標執行", + "effectiveRoutingShare": "有效路由份額 (權重 ÷ 總計)", "weightQuota": "配額", "weightHealth": "健康度", "weightCostInv": "成本", @@ -3283,7 +3283,7 @@ "weightStability": "穩定性", "weightTierPriority": "層級", "weightCacheAffinity": "Cache Hit Affinity", - "reviewIntelligentTitle": "智慧路由設定", + "reviewIntelligentTitle": "智能路由設定", "strategyRecommendations": { "priority": { "title": "穩妥基線", @@ -3294,7 +3294,7 @@ }, "weighted": { "title": "可控流量分配", - "description": "非常適合金絲雀釋出和模型漸進遷移。", + "description": "非常適合金絲雀發佈和模型漸進遷移。", "tip1": "建議從 90/10 這樣的保守配比開始。", "tip2": "始終保持總權重為 100%,並在調整後自動平衡。", "tip3": "在提高金絲雀權重前,先觀察成功率和延遲。" @@ -3311,7 +3311,7 @@ "description": "適用於不需要嚴格保證、只想簡單分流的場景。", "tip1": "儘量選擇延遲特徵相近的模型。", "tip2": "保留重試機制,以吸收隨機命中的失敗。", - "tip3": "更適合實驗場景,不建議用於嚴格 SLA。" + "tip3": "更適合實驗場景,不建議用於嚴格SLA。" }, "least-used": { "title": "自適應均衡", @@ -3322,62 +3322,62 @@ }, "cost-optimized": { "title": "預算優先路由", - "description": "在具備定價後設資料時,優先路由到成本更低的模型。", + "description": "在具備定價元資料時,優先路由到成本更低的模型。", "tip1": "確保所有已選模型都具備定價資訊。", "tip2": "為高難度提示保留一個質量更高的回退模型。", "tip3": "適合批處理或後台任務等成本是主要指標的場景。" }, "reset-aware": { - "title": "重置感知帳戶輪換", + "title": "重置感知賬戶輪換", "description": "根據重置時間平衡剩餘的提供者配額。", "tip1": "對具有配額遙測的提供者使用顯式帳戶步驟或帳戶標籤路由。", "tip2": "當短期疲勞風險更大時,調整訓練次數與每週重量。", - "tip3": "保持領帶較小,這樣等值帳戶仍然可以公平地輪換。" + "tip3": "保持領帶較小,這樣等值賬戶仍然可以公平地輪換。" }, "strict-random": { "title": "洗牌池分配", "description": "每輪中每個模型都會被恰好使用一次,然後再重新洗牌。", "tip1": "至少使用 2 個模型,才能體現分配效果。", - "tip2": "最適合效能相近的模型。", - "tip3": "非常適合在多個 API 帳戶之間做負載均衡。" + "tip2": "最適合性能相近的模型。", + "tip3": "非常適合在多個API賬戶之間做負載均衡。" }, "fill-first": { "description": "在切換到鏈中的下一個提供者之前,先耗盡一個提供者的配額。", - "tip1": "按免費配額大小排列模型 — 最大的放在第一位。", + "tip1": "按免費配額大小排列模型—最大的放在第一位。", "tip2": "啟用健康檢查以跳過已耗盡的提供者。", "tip3": "非常適合免費層級堆疊(Deepgram → Groq → NIM)。", "title": "配額耗盡策略" }, "auto": { - "description": "基於成本、延遲、質量和健康的即時評分進行路由。", + "description": "基於成本、延遲、質量和健康的實時評分路由。", "tip1": "讓引擎自動平衡多個因素。", "tip2": "在日誌中監控哪些因素驅動路由決策。", "tip3": "用於複雜工作負載,其中沒有單一因素佔主導。", - "title": "多因素最佳化" + "title": "多因素優化" }, "lkgp": { - "description": "基於歷史成功率和永續性能資料進行路由。", + "description": "基於歷史成功率和持久性能資料路由。", "tip1": "在依賴此策略之前讓成功歷史積累足夠資料。", - "tip2": "最適合具有穩定效能特徵的工作負載。", + "tip2": "最適合具有穩定性能特徵的工作負載。", "tip3": "定期審查歷史資料,確保路由決策保持準確。", "title": "歷史路由" }, "context-optimized": { - "description": "基於上下文視窗使用情況和權杖效率最佳化路由。", - "tip1": "將長對話路由到具有更大上下文視窗的模型。", - "tip2": "監控上下文利用率以避免權杖浪費。", - "tip3": "最適合需要大量上下文保留的對話式 AI。", - "title": "上下文最佳化" + "description": "基於上下文窗口使用情況和令牌效率優化路由。", + "tip1": "將長對話路由到具有更大上下文窗口的模型。", + "tip2": "監控上下文利用率以避免令牌浪費。", + "tip3": "最適合需要大量上下文保留的對話式AI。", + "title": "上下文優化" }, "context-relay": { - "description": "當預期帳戶輪換且下一個帳戶必須繼承簡化的任務摘要時效果最佳。", - "tip1": "與為同一模型系列輪換帳戶的提供者配合使用。", + "description": "當預期賬戶輪換且下一個賬戶必須繼承簡化的任務摘要時效果最佳。", + "tip1": "與為同一模型系列輪換賬戶的提供者配合使用。", "tip2": "將交接閾值設定在硬配額截止值以下,以便有時間生成摘要。", "tip3": "僅在主模型太貴或不穩定時,才設定專用摘要模型。", - "title": "會話連續性優先" + "title": "工作階段連續性優先" }, "p2c": { - "description": "每次請求從隨機候選中選出負載較輕的一個 — 低延遲,高擴充套件性。", + "description": "每次請求從隨機候選中選出負載較輕的一個—低延遲,高擴展性。", "tip1": "配合 4 個或更多模型使用效果最佳。", "tip2": "需要在設定中啟用延遲遙測。", "tip3": "是高吞吐量組合中輪詢的絕佳替代方案。", @@ -3387,21 +3387,21 @@ "templateFreeStack": "免費棧($0)", "templateFreeStackDesc": "在所有免費提供者之間進行輪詢:Kiro(Claude)、Qoder(5 個模型)、Qwen(4 個模型)。零成本,編碼不中斷。", "auto": "自動組合", - "autoDesc": "自愈型智慧路由池(效能最佳化)", - "lkgp": "LKGP 模式", + "autoDesc": "自愈型智能路由池(性能優化)", + "lkgp": "LKGP模式", "lkgpDesc": "最後已知良好提供者(可預測的彈性)", "wizardGuideTitle": "組合入門指南", - "wizardGuideDesc": "建立模型組合以智慧路由 AI 流量", - "wizardGuideHint": "或點選上方「+ 建立組合」", - "createFirstCombo": "建立您的第一個組合", + "wizardGuideDesc": "創建模型組合以智能路由AI流量", + "wizardGuideHint": "或點擊上方「+ 創建組合」", + "createFirstCombo": "創建您的第一個組合", "wizardStep1Title": "命名您的組合", "wizardStep1Desc": "為您的組合指定唯一名稱,以便在路由規則中識別", "wizardStep2Title": "新增模型", - "wizardStep2Desc": "選擇 AI 模型並排列其故障轉移優先順序順序", + "wizardStep2Desc": "選擇AI模型並排列其故障轉移優先級順序", "wizardStep3Title": "選擇策略", - "wizardStep3Desc": "選擇請求在模型之間的分發方式 — 提供 13 種策略", - "wizardStep4Title": "審查並儲存", - "wizardStep4Desc": "審查您的設定並啟用組合", + "wizardStep3Desc": "選擇請求在模型之間的分發方式—提供 13 種策略", + "wizardStep4Title": "審查並保存", + "wizardStep4Desc": "審查您的設定並激活組合", "emailVisibilityStateOn": "開啟", "emailVisibilityStateOff": "關閉", "reorderHandle": "拖拽排序", @@ -3414,25 +3414,25 @@ }, "steps": { "label": "步驟", - "description": "提供者、模型和帳戶選擇" + "description": "提供者、模型和賬戶選擇" }, "strategy": { "label": "策略", - "description": "路由行為和高階設定" + "description": "路由行為和高級設定" }, "intelligent": { - "label": "智慧路由", + "label": "智能路由", "description": "自動路由候選池、預設和評分" }, "review": { "label": "審查", - "description": "儲存前的最終驗證" + "description": "保存前的最終驗證" } }, "builderStageVisited": "階段已完成", "builderStageCurrent": "當前階段", "builderStagePending": "待處理", - "builderStageLocked": "已鎖定 — 請先完成上一步", + "builderStageLocked": "已鎖定—請先完成上一步", "builderTitle": "構建組合", "builderBrowseCatalog": "瀏覽目錄", "builderProvider": "提供者", @@ -3441,76 +3441,76 @@ "builderModel": "模型", "builderSelectModel": "選擇模型", "builderProviderFirst": "請先選擇提供者", - "builderAccount": "帳戶", + "builderAccount": "賬戶", "builderPreview": "預覽", "builderAddStep": "新增步驟", - "builderDuplicateExact": "該提供者/模型/帳戶步驟已存在於組合中。", + "builderDuplicateExact": "該提供者/模型/賬戶步驟已存在於組合中。", "builderComboRef": "組合引用", "builderAddComboRef": "新增組合引用", "builderComboRefStep": "新增組合引用步驟", - "builderPinnedAccount": "固定帳戶", + "builderPinnedAccount": "固定賬戶", "builderLegacyEntry": "舊版條目", "reviewName": "名稱", "reviewStrategy": "策略", "reviewSteps": "步驟", - "reviewAccounts": "帳戶", + "reviewAccounts": "賬戶", "reviewProviders": "提供者", "reviewComboRefs": "組合引用", - "reviewAdvanced": "高階設定", - "reviewAgentFlags": "Agent 標誌", + "reviewAdvanced": "高級設定", + "reviewAgentFlags": "智能體標誌", "reviewSequence": "模型序列", "reviewNoSteps": "未設定任何步驟", "builderStagesDescription": "按順序完成各個階段以定義組合、構建步驟、選擇路由策略並審查結果。", - "builderStepsDescription": "按順序構建每個組合步驟:提供者、模型,然後是帳戶。這允許在不同帳戶上重複使用相同的提供者和模型。", + "builderStepsDescription": "按順序構建每個組合步驟:提供者、模型,然後是賬戶。這允許在不同賬戶上重複使用相同的提供者和模型。", "selectProvider": "選擇提供者", "selectProviderPlaceholder": "選擇提供者", "selectModel": "選擇模型", "selectModelPlaceholder": "請先選擇提供者", - "selectAccount": "選擇帳戶", + "selectAccount": "選擇賬戶", "selectComboToReference": "選擇要引用的現有組合", "comboReference": "組合引用", "addComboReference": "新增組合引用", "addStepBeforeContinue": "在繼續到下一階段之前,請至少新增一個步驟。", "previewNextStep": "選擇提供者和模型以預覽下一步。", - "autoSelectAccount": "執行時自動選擇帳戶", + "autoSelectAccount": "運行時自動選擇賬戶", "modePackBalanced": "均衡", "modePackBudget": "預算優先", - "modePackPerformance": "效能優先", + "modePackPerformance": "性能優先", "modePackCustom": "自定義", "browseLegacyCatalog": "瀏覽舊版模型目錄", - "agentFeaturesTitle": "智慧代理功能", - "agentFeaturesDescription": "— 可選,用於智慧體/工具工作流", + "agentFeaturesTitle": "智能智能體功能", + "agentFeaturesDescription": "—可選,用於智能體/工具工作流", "responseValidationTitle": "回應驗證", - "responseValidationHelp": "當 200 OK 的回應主體未通過這些檢查(助理內容)時,容錯移轉至下一個目標。", - "responseValidationForbidden": "禁止的子字串(每行一個)", - "responseValidationRequired": "必要子字串(每行一個)", - "responseValidationMinLength": "最小內容長度(字元)", - "responseValidationJsonPaths": "JSON 路徑檢查", + "responseValidationHelp": "當 200 OK回應體未通過這些檢查(assistant內容)時,故障轉移到下一個目標。", + "responseValidationForbidden": "禁止包含的子字串(每行一個)", + "responseValidationRequired": "必須包含的子字串(每行一個)", + "responseValidationMinLength": "最小內容長度(字符數)", + "responseValidationJsonPaths": "JSON-path檢查", "responseValidationAddCheck": "+ 新增檢查", - "agentFeaturesSystemMessageOverride": "系統訊息覆蓋", + "agentFeaturesSystemMessageOverride": "系統消息覆蓋", "agentFeaturesSystemMessagePlaceholder": "覆蓋通過此組合路由的所有請求的系統提示…", - "agentFeaturesSystemMessageHint": "替換客戶端傳送的任何系統訊息。留空則透傳客戶端系統訊息。", + "agentFeaturesSystemMessageHint": "替換客戶端發送的任何系統消息。留空則透傳客戶端系統消息。", "agentFeaturesToolFilterRegex": "工具過濾器正則", "agentFeaturesToolFilterHint": "只有名稱匹配此正則的工具才會轉發給提供者。留空則轉發所有工具。", - "agentFeaturesContextCacheHint": "跨輪次鎖定提供者/模型以保持快取會話。內部標籤在轉發給提供者前會被移除。", + "agentFeaturesContextCacheHint": "跨輪次鎖定提供者/模型以保持快取工作階段。內部標籤在轉發給提供者前會被移除。", "agentFeaturesContextCacheProtection": "上下文快取保護", "agentFeaturesContextLength": "上下文長度", "agentFeaturesContextLengthPlaceholder": "例如128000", - "agentFeaturesContextLengthHint": "在 /v1/models 中定義此組合的上下文視窗。", + "agentFeaturesContextLengthHint": "在 /v1/models中定義此組合的上下文窗口。", "agentFeaturesContextLengthErrorInteger": "上下文長度必須是有效整數", "agentFeaturesContextLengthErrorRange": "上下文長度必須介於 1000 到 2000000 之間", "compressionOverride": "壓縮覆蓋", "modePack": "模式包", - "disableSessionStickiness": "停用連線黏性", - "sessionStickinessEnabled": "黏性已啟用", - "sessionStickinessDisabled": "黏性關閉", - "kimiPresetTitle": "Kimi Coding 預設組合", - "kimiPresetDescription": "以 Kimi K3 作為主要模型(Moonshot API),設定完成後會自動備援至您的 Kimi Code 連線(kimi-coding、kimi-web)。", - "kimiPresetCta": "新增預設組合" + "disableSessionStickiness": "禁用工作階段粘性", + "sessionStickinessEnabled": "工作階段粘性開啟", + "sessionStickinessDisabled": "工作階段粘性關閉", + "kimiPresetTitle": "Kimi Coding預設", + "kimiPresetDescription": "以Kimi K3 作為主模型(Moonshot API),並在設定後自動回退到您的Kimi Code連接(kimi-coding、kimi-web)。", + "kimiPresetCta": "新增預設" }, "costs": { "title": "成本", - "pageDescription": "跟蹤支出、分析趨勢,並管理所有提供者的 AI 預算", + "pageDescription": "跟蹤支出、分析趨勢,並管理所有提供者的AI預算", "overview": "概覽", "budget": "預算", "totalCost": "總成本", @@ -3525,9 +3525,9 @@ "range365d": "365 Days", "rangeAll": "全部時間", "spend30d": "30 天支出", - "activeModels": "活躍 Model", - "selectedWindow": "已選視窗", - "activeProviders": "活躍 Provider", + "activeModels": "活躍Model", + "selectedWindow": "已選窗口", + "activeProviders": "活躍提供者", "overviewTitle": "概覽", "spend7d": "7 天支出", "avgCostPerRequest": "平均每次請求成本", @@ -3536,15 +3536,15 @@ "overviewLoadFailed": "載入成本概覽失敗", "overviewDescription": "按提供者、模型和時間段彙總成本。", "providerShare": "提供者佔比", - "topProviders": "熱門 Provider", + "topProviders": "熱門提供者", "costTrend": "成本趨勢", "noCostDataTitle": "暫無成本資料", - "topModels": "熱門 Model", - "requestsInWindow": "視窗內請求數", - "tokenUsage": "Token 用量", - "totalTokens": "Token 總數", - "inputTokens": "輸入 Token", - "outputTokens": "輸出 Token", + "topModels": "熱門Model", + "requestsInWindow": "窗口內請求數", + "tokenUsage": "Token用量", + "totalTokens": "Token總數", + "inputTokens": "輸入Token", + "outputTokens": "輸出Token", "inputOutputRatio": "輸入/輸出比例", "tokens": "token", "routingEfficiency": "路由效率", @@ -3553,10 +3553,10 @@ "modelCoverage": "模型覆蓋率", "modelCoverageDesc": "帶有明確模型的請求佔比", "outOfRequests": "共 {total} 個請求", - "costByApiKey": "按 API 金鑰統計成本", - "costByAccount": "按帳戶統計成本", - "apiKeyName": "API 金鑰", - "account": "帳戶", + "costByApiKey": "按API Key統計成本", + "costByAccount": "按賬戶統計成本", + "apiKeyName": "API Key", + "account": "賬戶", "requests": "請求數", "cost": "成本", "dayStreak": "連續天數", @@ -3571,21 +3571,21 @@ "periodComparison": "週期對比", "previousPeriod": "上半期", "currentPeriod": "當前半期", - "exportCSV": "匯出為 CSV", - "exportJSON": "匯出為 JSON", + "exportCSV": "導出為CSV", + "exportJSON": "導出為JSON", "legacyFreeLabel": "舊版 / 免費", "costExplorerTitle": "成本探索器", - "costExplorerDescription": "按提供者、模型、API 金鑰、帳戶或服務層級探索支出。", + "costExplorerDescription": "按提供者、模型、API Key、賬戶或服務層級探索支出。", "groupProvider": "提供者", "groupModel": "模型", - "groupApiKey": "API 金鑰", - "groupAccount": "帳戶", + "groupApiKey": "API Key", + "groupAccount": "賬戶", "groupServiceTier": "服務層級", "serviceTierFast": "快速", "serviceTierFlex": "彈性", "serviceTierStandard": "標準", "serviceTierBreakdownTitle": "服務層級", - "serviceTierBreakdownSubtitle": "快速 / 彈性 / 標準 分佈", + "serviceTierBreakdownSubtitle": "快速 / 彈性 / 標準分佈", "serviceTierUsageSaved": "已節省用量", "serviceTierCostSaved": "已節省", "serviceTierCostShareSuffix": "成本佔比", @@ -3595,186 +3595,186 @@ "filterRows": "篩選行…", "filterCostExplorerRows": "篩選成本探索器行", "noMatchingCostRows": "沒有匹配的成本行", - "noMatchingCostRowsDescription": "調整搜尋文本、分組或所選時間視窗。", + "noMatchingCostRowsDescription": "調整搜尋文本、分組或所選時間窗口。", "showingCostRows": "正在顯示 {total} 個匹配行中的 {shown} 個。", "showingTopCostRows": "正在顯示 {total} 個匹配行中的 {shown} 個(前 50 個)。" }, "endpoint": { - "title": "API 端點", + "title": "API端點", "available": "可用端點", "cloudProxy": "雲代理", - "disableConfirm": "確定要停用雲代理嗎?", - "baseUrl": "基礎 URL", - "apiKeyLabel": "API 金鑰", + "disableConfirm": "確定要禁用雲代理嗎?", + "baseUrl": "基礎URL", + "apiKeyLabel": "API Key", "registeredKeys": "已註冊金鑰", "chatCompletions": "對話補全", "responses": "回應", "listModels": "列出模型", "usingCloudProxy": "當前使用雲代理", "usingLocalServer": "當前使用本地伺服器", - "machineId": "機器 ID:{id}...", - "disableCloud": "停用雲端", + "machineId": "機器ID:{id}...", + "disableCloud": "禁用雲端", "enableCloud": "啟用雲端", "modelsAcrossEndpoints": "{endpoints} 個端點共提供 {models} 個模型", "loadingModels": "正在載入可用模型...", "chatDesc": "支援所有提供者的流式與非流式聊天", "embeddings": "嵌入", - "embeddingsDesc": "用於搜尋和 RAG 流程的文本向量", - "imageGeneration": "影像生成", - "imageDesc": "根據文本提示生成影像", + "embeddingsDesc": "用於搜尋和RAG流程的文本向量", + "imageGeneration": "圖像生成", + "imageDesc": "根據文本提示生成圖像", "rerank": "重排", - "rerankDesc": "按與查詢的相關性重新排序檔案", - "audioTranscription": "音訊轉錄", - "audioTranscriptionDesc": "將音訊檔案轉錄為文本(Whisper)", + "rerankDesc": "按與查詢的相關性重新排序文件", + "audioTranscription": "音頻轉錄", + "audioTranscriptionDesc": "將音頻檔案轉錄為文本(Whisper)", "textToSpeech": "文本轉語音", "textToSpeechDesc": "將文本轉換為自然語音", "musicGeneration": "音樂生成", - "musicDesc": "通過 ComfyUI 生成音樂和音軌(Stable Audio、MusicGen)", - "moderations": "內容稽核", - "moderationsDesc": "內容安全稽核與分類", - "responsesDesc": "適用於 Codex 和高階智慧體工作流的 OpenAI Responses API", - "listModelsDesc": "列出所有已連線提供者下的可用模型", - "settingsApiDesc": "通過 API 讀取和修改 OmniRoute 設定", - "settingsApi": "設定 API", - "categoryCore": "核心 API", + "musicDesc": "通過ComfyUI生成音樂和音軌(Stable Audio、MusicGen)", + "moderations": "內容審核", + "moderationsDesc": "內容安全審核與分類", + "responsesDesc": "適用於Codex和高級智能體工作流的OpenAI Responses API", + "listModelsDesc": "列出所有已連接提供者下的可用模型", + "settingsApiDesc": "通過API讀取和修改OmniRoute設定", + "settingsApi": "設定API", + "categoryCore": "核心API", "categoryMedia": "媒體與多模態", "categorySearch": "搜尋與發現", "categoryUtility": "工具與管理", "webSearch": "網頁搜尋", "webSearchDesc": "統一接入多個提供者的網頁搜尋,支援自動故障轉移與快取", "searchProvider": "搜尋提供者", - "searchProviderDesc": "該提供者會用於 `POST /v1/search` 的網頁搜尋。無需設定模型,只要連線 API 金鑰即可使用。", + "searchProviderDesc": "該提供者會用於 `POST /v1/search` 的網頁搜尋。無需設定模型,只要連接API Key即可使用。", "enableCloudTitle": "啟用雲代理", "whatYouGet": "啟用後可獲得", - "cloudBenefitAccess": "從世界任何地方訪問你的 API", + "cloudBenefitAccess": "從世界任何地方訪問你的API", "cloudBenefitShare": "方便與團隊共享端點", - "cloudBenefitPorts": "無需開放埠或設定防火牆", + "cloudBenefitPorts": "無需開放連接埠或設定防火牆", "cloudBenefitEdge": "全球邊緣網路加速", - "cloudSessionNote": "雲端會保留你的認證會話 1 天;若未使用,將自動刪除。", - "cloudUnstableNote": "目前雲端在部分 Claude Code OAuth 場景下仍不夠穩定。", - "cloudConnected": "雲代理已連線!", - "connectingToCloud": "正在連線雲端...", - "verifyingConnection": "正在驗證連線...", - "connecting": "連線中...", + "cloudSessionNote": "雲端會保留你的認證工作階段 1 天;若未使用,將自動刪除。", + "cloudUnstableNote": "目前雲端在部分Claude Code OAuth場景下仍不夠穩定。", + "cloudConnected": "雲代理已連接!", + "connectingToCloud": "正在連接雲端...", + "verifyingConnection": "正在驗證連接...", + "connecting": "連接中...", "verifying": "驗證中...", - "connected": "已連線!", - "disableCloudTitle": "停用雲代理", - "disableWarning": "所有認證會話都會從雲端刪除。", + "connected": "已連接!", + "disableCloudTitle": "禁用雲代理", + "disableWarning": "所有認證工作階段都會從雲端刪除。", "syncingData": "正在同步最新資料...", - "disablingCloud": "正在停用雲端...", + "disablingCloud": "正在禁用雲端...", "syncing": "同步中...", - "disabling": "停用中...", - "cloudConnectedVerified": "雲代理已連線並驗證成功!", - "connectedVerificationPending": "已連線,等待驗證", - "connectedVerificationPendingWithError": "已連線,等待驗證:{error}", - "cloudDisabledSuccess": "雲端已成功停用", + "disabling": "禁用中...", + "cloudConnectedVerified": "雲代理已連接並驗證成功!", + "connectedVerificationPending": "已連接,等待驗證", + "connectedVerificationPendingWithError": "已連接,等待驗證:{error}", + "cloudDisabledSuccess": "雲端已成功禁用", "syncedSuccess": "同步成功", - "failedDisable": "停用雲端失敗", + "failedDisable": "禁用雲端失敗", "failedEnable": "啟用雲端失敗", "cloudRequestTimeout": "雲端請求超時", "cloudRequestFailed": "雲端請求失敗", - "cloudWorkerUnreachable": "無法連線到雲 Worker。請確認雲服務已執行(在 `/cloud` 中執行 `npm run dev`)。", - "connectionFailed": "連線失敗", + "cloudWorkerUnreachable": "無法連接到雲Worker。請確認雲服務已運行(在 `/cloud` 中執行 `npm run dev`)。", + "connectionFailed": "連接失敗", "syncFailed": "同步雲端資料失敗", - "cloudflaredTitle": "Cloudflare 快速隧道", - "cloudflaredDescription": "為當前端點建立 Cloudflare Quick Tunnel。", - "cloudflaredUrlNotice": "建立一個臨時的 Cloudflare Quick Tunnel。每次重啟後 URL 都會變化。", - "cloudflaredEnable": "啟用 Tunnel", + "cloudflaredTitle": "Cloudflare快速隧道", + "cloudflaredDescription": "為當前端點創建Cloudflare Quick Tunnel。", + "cloudflaredUrlNotice": "創建一個臨時的Cloudflare Quick Tunnel。每次重新啟動後URL都會變化。", + "cloudflaredEnable": "啟用Tunnel", "cloudflaredInstallAndEnable": "安裝並啟用", - "cloudflaredDisable": "停止 Tunnel", - "cloudflaredRunning": "執行中", + "cloudflaredDisable": "停止Tunnel", + "cloudflaredRunning": "運行中", "cloudflaredStarting": "啟動中", "cloudflaredStoppedState": "已停止", "cloudflaredNotInstalled": "未安裝", "cloudflaredUnsupported": "不支援", "cloudflaredError": "錯誤", - "cloudflaredStarted": "Cloudflare Tunnel 已啟動", - "cloudflaredStopped": "Cloudflare Tunnel 已停止", - "cloudflaredRequestFailed": "更新 Cloudflare Tunnel 失敗", - "cloudflaredTemporaryNote": "Quick Tunnel URL 是臨時地址,每次重啟後都會變化。", - "cloudflaredUnsupportedNote": "當前平臺不支援託管安裝。請自行安裝 cloudflared,或通過 CLOUDFLARED_BIN 指向已有二進位制檔案。", - "cloudflaredIdleNote": "為當前端點建立一個臨時的 Cloudflare Quick Tunnel。", + "cloudflaredStarted": "Cloudflare Tunnel已啟動", + "cloudflaredStopped": "Cloudflare Tunnel已停止", + "cloudflaredRequestFailed": "更新Cloudflare Tunnel失敗", + "cloudflaredTemporaryNote": "Quick Tunnel URL是臨時地址,每次重新啟動後都會變化。", + "cloudflaredUnsupportedNote": "當前平臺不支援託管安裝。請自行安裝cloudflared,或通過CLOUDFLARED_BIN指向已有二進制檔案。", + "cloudflaredIdleNote": "為當前端點創建一個臨時的Cloudflare Quick Tunnel。", "cloudflaredLastError": "最近錯誤:{error}", - "providerModelsTitle": "{provider} — 模型", + "providerModelsTitle": "{provider} —模型", "noModelsForProvider": "該提供者當前沒有可用模型。", "chat": "聊天", "embedding": "向量", - "image": "影像", + "image": "圖像", "custom": "自定義", "modelsCount": "{count, plural, one {# 個模型} other {# 個模型}}", "sectionTitle": "整合入口", - "sectionDescription": "OpenAI 相容 API 與操作協議端點", - "tabApis": "__MISSING__:APIs", + "sectionDescription": "OpenAI相容API與操作協議端點", + "tabApis": "OpenAI相容API", "tabProtocols": "協議", - "tabsAria": "端點分割槽", + "tabsAria": "端點分區", "protocolsTitle": "協議", - "protocolsDescription": "MCP 和 A2A 是一等端點,具備專用的可觀測與控制能力。", - "mcpCardTitle": "MCP 服務", - "mcpCardDescription": "基於 stdio 的 Model Context Protocol", - "a2aCardTitle": "A2A 服務", - "a2aCardDescription": "Agent2Agent JSON-RPC 端點", + "protocolsDescription": "MCP和A2A是一等端點,具備專用的可觀測與控制能力。", + "mcpCardTitle": "MCP服務", + "mcpCardDescription": "基於stdio的Model Context Protocol", + "a2aCardTitle": "A2A服務", + "a2aCardDescription": "Agent2Agent JSON-RPC端點", "protocolToolsLabel": "工具數", "protocolTasksLabel": "任務數", "protocolActiveStreamsLabel": "活躍流數", "protocolLastActivity": "最近活動", "quickStart": "快速開始", - "openMcpDashboard": "開啟 MCP 管理", - "openA2aDashboard": "開啟 A2A 管理", - "mcpQuickStartTitle": "MCP 快速開始", - "mcpQuickStartStep1": "通過 `omniroute --mcp` 啟動 MCP 服務。", - "mcpQuickStartStep2": "將你的 MCP 客戶端設定為通過 stdio 傳輸連線。", + "openMcpDashboard": "打開MCP管理", + "openA2aDashboard": "打開A2A管理", + "mcpQuickStartTitle": "MCP快速開始", + "mcpQuickStartStep1": "通過 `omniroute --mcp` 啟動MCP服務。", + "mcpQuickStartStep2": "將你的MCP客戶端設定為通過stdio傳輸連接。", "mcpQuickStartStep3": "呼叫 `omniroute_get_health`、`omniroute_list_combos` 等工具驗證連通性。", - "a2aQuickStartTitle": "A2A 快速開始", - "a2aQuickStartStep1": "通過 `/.well-known/agent.json` 發現 Agent Card。", - "a2aQuickStartStep2": "向 `POST /a2a` 傳送 `message/send` 或 `message/stream` JSON-RPC 請求。", + "a2aQuickStartTitle": "A2A快速開始", + "a2aQuickStartStep1": "通過 `/.well-known/agent.json` 發現Agent Card。", + "a2aQuickStartStep2": "向 `POST /a2a` 發送 `message/send` 或 `message/stream` JSON-RPC請求。", "a2aQuickStartStep3": "使用 `tasks/get` 與 `tasks/cancel` 跟蹤和控制任務。", "completionsLegacy": "Completions(舊版)", - "completionsLegacyDesc": "舊版 OpenAI 文本補全介面,同時接受 `prompt` 字串和 `messages` 陣列格式", + "completionsLegacyDesc": "舊版OpenAI文本補全接口,同時接受 `prompt` 字串和 `messages` 陣列格式", "messagesApi": "留言", - "messagesApiDesc": "適用於 Claude 相容提供程式的本機人性訊息 API 格式", - "imageEdits": "影像編輯", - "imageEditsDesc": "使用 AI 編輯和修改現有影像(修復、修復、變體)", + "messagesApiDesc": "適用於Claude相容提供程式的Anthropic Messages API格式", + "imageEdits": "圖像編輯", + "imageEditsDesc": "使用AI編輯和修改現有圖像(修復、修復、變體)", "batchApi": "批次API", - "batchApiDesc": "非同步處理大批次請求(相容 OpenAI)", + "batchApiDesc": "非同步處理大批次請求(相容OpenAI)", "filesApi": "檔案API", "filesApiDesc": "上傳和管理檔案以進行批處理", - "videoGeneration": "影片生成", - "videoDesc": "使用 ComfyUI 和 Stable Video Diffusion 等 AI 模型生成影片。", - "tailscaleRequestFailed": "載入 Tailscale 狀態失敗", - "tailscaleEnableFailed": "啟用 Tailscale Funnel 失敗", - "tailscaleWaitingForLogin": "請在開啟的瀏覽器標籤頁中完成 Tailscale 登入。OmniRoute 會自動重試。", - "tailscaleLoginTimedOut": "等待 Tailscale 登入超時", - "tailscaleWaitingForFunnel": "請在開啟的瀏覽器標籤頁中為此裝置啟用 Funnel。OmniRoute 會繼續輪詢。", - "tailscaleFunnelTimedOut": "等待啟用 Tailscale Funnel 超時", - "tailscaleStarted": "Tailscale Funnel 已啟用", - "tailscaleDisableFailed": "停用 Tailscale Funnel 失敗", - "tailscaleStopped": "Tailscale Funnel 已停用", - "tailscaleInstallFailed": "安裝 Tailscale 失敗", + "videoGeneration": "視頻生成", + "videoDesc": "使用ComfyUI和Stable Video Diffusion等AI模型生成視頻。", + "tailscaleRequestFailed": "載入Tailscale狀態失敗", + "tailscaleEnableFailed": "啟用Tailscale Funnel失敗", + "tailscaleWaitingForLogin": "請在打開的瀏覽器標籤頁中完成Tailscale登入。OmniRoute會自動重試。", + "tailscaleLoginTimedOut": "等待Tailscale登入超時", + "tailscaleWaitingForFunnel": "請在打開的瀏覽器標籤頁中為此設備啟用Funnel。OmniRoute會繼續輪詢。", + "tailscaleFunnelTimedOut": "等待啟用Tailscale Funnel超時", + "tailscaleStarted": "Tailscale Funnel已啟用", + "tailscaleDisableFailed": "禁用Tailscale Funnel失敗", + "tailscaleStopped": "Tailscale Funnel已禁用", + "tailscaleInstallFailed": "安裝Tailscale失敗", "tailscaleInstallProgress": "處理中...", - "tailscaleInstalled": "Tailscale 安裝成功", - "tailscaleRunning": "執行中", + "tailscaleInstalled": "Tailscale安裝成功", + "tailscaleRunning": "運行中", "tailscaleNeedsLogin": "需要登入", "tailscaleStoppedState": "已停止", "tailscaleNotInstalled": "未安裝", "tailscaleUnsupported": "不支援", "tailscaleError": "錯誤", - "tailscaleDisable": "停止 Funnel", + "tailscaleDisable": "停止Funnel", "tailscaleInstallAndEnable": "安裝並啟用", "tailscaleLoginAndEnable": "登入並啟用", - "tailscaleEnable": "啟用 Funnel", - "tailscaleUrlNotice": "使用你的 Tailscale .ts.net 地址。首次使用時可能需要登入並批准 Funnel。", + "tailscaleEnable": "啟用Funnel", + "tailscaleUrlNotice": "使用你的Tailscale .ts.net地址。首次使用時可能需要登入並批准Funnel。", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "先使用 Tailscale 認證此機器,然後啟用 Funnel。", - "tailscaleBinaryPath": "二進位制檔案:{path}", + "tailscaleNeedsLoginHint": "先使用Tailscale認證此機器,然後啟用Funnel。", + "tailscaleBinaryPath": "二進制檔案:{path}", "tailscaleLastError": "最近錯誤:{error}", - "tailscaleInstallTitle": "安裝 Tailscale", - "tailscaleInstallIntro": "在此機器上安裝 Tailscale,並準備讓 OmniRoute 啟用 Funnel。", - "tailscaleInstallPasswordHint": "在 macOS 和 Linux 上,安裝軟體包和啟動守護程式可能需要 sudo。", - "tailscaleSudoPlaceholder": "可選 sudo 密碼", + "tailscaleInstallTitle": "安裝Tailscale", + "tailscaleInstallIntro": "在此機器上安裝Tailscale,並準備讓OmniRoute啟用Funnel。", + "tailscaleInstallPasswordHint": "在macOS和Linux上,安裝軟件包和啟動守護行程可能需要sudo。", + "tailscaleSudoPlaceholder": "可選sudo密碼", "tailscaleInstalling": "正在安裝", - "tailscaleSudoLabel": "Sudo 密碼(macOS/Linux 上必需)", - "ngrokTitle": "ngrok 隧道", - "ngrokRunning": "執行中", + "tailscaleSudoLabel": "Sudo密碼(macOS/Linux上必需)", + "ngrokTitle": "ngrok隧道", + "ngrokRunning": "運行中", "ngrokStarting": "正在啟動", "ngrokStoppedState": "已停止", "ngrokNeedsAuth": "需要認證", @@ -3783,72 +3783,72 @@ "ngrokError": "錯誤", "ngrokEnable": "啟用隧道", "ngrokDisable": "停止隧道", - "ngrokUrlNotice": "建立一個公開的 ngrok 隧道。", - "ngrokAuthTokenLabel": "Authtoken(未設定 NGROK_AUTHTOKEN 時必需)", - "ngrokAuthTokenPlaceholder": "輸入你的 ngrok authtoken", + "ngrokUrlNotice": "創建一個公開的ngrok隧道。", + "ngrokAuthTokenLabel": "Authtoken(未設定NGROK_AUTHTOKEN時必需)", + "ngrokAuthTokenPlaceholder": "輸入你的ngrok authtoken", "ngrokLastError": "上次錯誤:{error}", - "ngrokStarted": "ngrok 隧道已啟動", - "ngrokStopped": "ngrok 隧道已停止", - "ngrokRequestFailed": "更新 ngrok 隧道失敗", + "ngrokStarted": "ngrok隧道已啟動", + "ngrokStopped": "ngrok隧道已停止", + "ngrokRequestFailed": "更新ngrok隧道失敗", "apiEndpointsCatalogUnavailable": "API目錄不可用", "apiEndpointsSearchPlaceholder": "搜尋端點...", "apiEndpointsRequiresAuth": "需要授權", "apiEndpointsNoMatch": "沒有端點與您的過濾器匹配", - "endpointSections": "端點區段", + "endpointSections": "端點部分", "tabMcp": "MCP", "tabA2a": "A2A", - "tabContextSources": "上下文來源", - "activeEndpoints": "啟用中的端點", - "activeLocal": "本機", + "tabContextSources": "上下文源", + "activeEndpoints": "活動端點", + "activeLocal": "本地", "activeCloud": "雲端", "copyUrlTitle": "複製 {url}", - "statusRunning": "執行中", + "statusRunning": "正在運行", "tunnels": "隧道", - "activeTunnelCount": "{active} / {total} 個啟用中", - "badgeLocal": "本機", + "activeTunnelCount": "{active} / {total} 個活動", + "badgeLocal": "本地", "badgeProtected": "受保護", "badgeInternal": "內部", - "catalogLoadFailed": "API 目錄請求失敗(HTTP {status})", - "catalogLoadFailedGeneric": "載入 API 目錄失敗", - "apiKeysLoadFailed": "載入 API 金鑰失敗({status})", - "apiKeysLoadFailedGeneric": "載入 API 金鑰失敗", - "apiKeyRevealDisabled": "API 金鑰顯示功能已停用(ALLOW_API_KEY_REVEAL)。請在「功能旗標」頁面上變更,或手動貼上 API 金鑰。", - "apiKeyRevealFailed": "顯示 API 金鑰失敗({status})", - "apiKeyRevealInvalid": "API 金鑰顯示回傳無效的回應", - "apiKeyRequired": "此端點需要 API 金鑰。", - "requestFailed": "請求失敗({status})", + "catalogLoadFailed": "API目錄請求失敗,HTTP狀態碼為 {status}", + "catalogLoadFailedGeneric": "載入API目錄失敗", + "apiKeysLoadFailed": "載入API Key失敗 ({status})", + "apiKeysLoadFailedGeneric": "載入API Key失敗", + "apiKeyRevealDisabled": "API Key顯示已禁用 (ALLOW_API_KEY_REVEAL)。請在功能標誌頁面上進行更改,或手動粘貼API Key。", + "apiKeyRevealFailed": "顯示API Key失敗 ({status})", + "apiKeyRevealInvalid": "顯示API Key返回了無效回應", + "apiKeyRequired": "此端點需要API Key。", + "requestFailed": "請求失敗 ({status})", "errorStatus": "錯誤", - "catalogStats": "共 {categories} 個類別中的 {endpoints} 個端點", - "catalogUnavailableDescription": "無法載入 OpenAPI 規格。", - "openJsonResponse": "開啟 JSON 回應", + "catalogStats": "跨越 {categories} 個類別的 {endpoints} 個端點", + "catalogUnavailableDescription": "無法載入OpenAPI規範。", + "openJsonResponse": "打開JSON回應", "all": "全部", - "more": "還有 {count} 個", + "more": "還有 +{count} 個", "showInternalTooltip": "顯示或隱藏內部路由(預設隱藏)", - "bearerAuth": "Bearer 驗證", - "requestBody": "請求主體", + "bearerAuth": "Bearer認證", + "requestBody": "請求體", "close": "關閉", - "tryIt": "試試看", - "example": "範例", - "apiKey": "API 金鑰", - "switchToSelection": "切換至選取", + "tryIt": "試一試", + "example": "示例", + "apiKey": "API Key", + "switchToSelection": "切換到選擇", "enterManually": "手動輸入", - "pasteApiKey": "在此貼上您的 API 金鑰", - "noActiveApiKeys": "找不到啟用中的 API 金鑰。切換至手動輸入以貼上金鑰。", - "requestBodyJson": "請求主體(JSON)", - "sending": "傳送中...", - "sendRequest": "傳送請求", - "dataSchemas": "資料結構", - "vscodeAliasTitle": "VS Code 權杖別名", - "vscodeAliasDescriptionReady": "使用 /api/v1/vscode/TOKEN/... 介面的可貼上相容性 URL。", - "vscodeAliasDescriptionError": "由於當前會話無法載入 CLI 金鑰,正在顯示佔位符 URL。", - "vscodeAliasDescriptionLoading": "正在載入 CLI 金鑰。在金鑰可用之前將顯示佔位符 URL。", - "vscodeAliasDescriptionPlaceholder": "正在顯示佔位符 URL。請在 CLI 工具中建立或啟用 API 金鑰以替換 TOKEN。", - "vscodeAliasManage": "CLI 工具", - "vscodeAliasBaseLabel": "VS Code 基礎", - "vscodeAliasModelsLabel": "VS Code 模型", - "vscodeAliasChatLabel": "VS Code 聊天", + "pasteApiKey": "在此處粘貼您的API Key", + "noActiveApiKeys": "未找到活動的API Key。請切換到手動輸入以粘貼一個。", + "requestBodyJson": "請求體 (JSON)", + "sending": "發送中…", + "sendRequest": "發送請求", + "dataSchemas": "資料模式", + "vscodeAliasTitle": "VS Code令牌別名", + "vscodeAliasDescriptionReady": "使用 /api/v1/vscode/TOKEN/... 接口的可粘貼相容性URL。", + "vscodeAliasDescriptionError": "由於當前工作階段無法載入CLI金鑰,正在顯示佔位符URL。", + "vscodeAliasDescriptionLoading": "正在載入CLI金鑰。在金鑰可用之前將顯示佔位符URL。", + "vscodeAliasDescriptionPlaceholder": "正在顯示佔位符URL。請在CLI工具中創建或激活API Key以替換TOKEN。", + "vscodeAliasManage": "CLI工具", + "vscodeAliasBaseLabel": "VS Code基礎", + "vscodeAliasModelsLabel": "VS Code模型", + "vscodeAliasChatLabel": "VS Code聊天", "localServer": "本地伺服器", - "cloudOmniroute": "雲全路由", + "cloudOmniroute": "Cloud OmniRoute", "copyUrl": "複製網址", "badgeLoopbackTooltip": "此端點僅可本地訪問(僅限迴環)", "badgeAlwaysProtectedTooltip": "此端點始終受保護,需要授權", @@ -3860,57 +3860,57 @@ "tierPublic": "公開", "hideInternal": "隱藏內部端點", "showInternal": "顯示內部端點", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", - "obsidianEnterToken": "請輸入 Obsidian API Token", - "obsidianConnectFailed": "連線失敗", - "obsidianConnectionFailed": "連線失敗", - "obsidianDisconnectFailed": "中斷連線失敗", - "obsidianEnterVaultPath": "請輸入保險庫目錄路徑", - "obsidianWebdavEnabledMessage": "WebDAV 同步已啟用。請在下方設定您的行動裝置。", - "obsidianEnableWebdavFailed": "啟用 WebDAV 失敗", - "obsidianWebdavDisabledMessage": "WebDAV 同步已停用", - "obsidianDisableWebdavFailed": "停用 WebDAV 失敗", - "obsidianConnected": "已連線", - "obsidianNotConnected": "未連線", - "obsidianWebdavSync": "WebDAV 同步", - "obsidianDescription": "透過路由 AI 模型搜尋、讀取、寫入和管理 Obsidian 筆記", - "obsidianRestToken": "Obsidian Local REST API Token", - "obsidianApiKeyPlaceholder": "Obsidian API 金鑰", - "obsidianConnect": "連線", - "obsidianBaseUrlOptional": "基礎 URL(選填)", - "obsidianPortWarning": "連接埠 27124 是 MCP 端點(HTTPS,自我簽署憑證)。REST API 使用 HTTP 連接埠 27123。", - "obsidianRemoteVaultHint": "預設:{defaultUrl}。對於遠端保險庫,請輸入 Tailscale IP + 連接埠(例如 http://100.x.x.x:27123)。請在執行 Obsidian 的機器上啟用 Local REST API 外掛程式。", - "obsidianTokenConfigured": "Token 已設定。Obsidian 工具可透過 MCP 使用。", - "obsidianDisconnect": "中斷連線", - "obsidianVaultSync": "保險庫同步(WebDAV)", - "obsidianVaultSyncDescription": "使用 WebDAV 透過 Tailscale 將保險庫同步至 Obsidian 行動版。Obsidian 行動版內建 WebDAV 支援 — 無需外掛程式。", - "obsidianVaultDirectoryPath": "保險庫目錄路徑", - "obsidianEnable": "啟用", - "obsidianWebdavEnabled": "WebDAV 同步已啟用", - "obsidianDisable": "停用", - "obsidianConfigureMobile": "設定 Obsidian 行動版", - "obsidianMobileInstructions": "在 Obsidian 行動版中:設定 → 同步 → WebDAV → 輸入以下內容:", + "customSystemPromptTitle": "自定義系統提示", + "customSystemPromptDescription": "向每個模型請求注入自定義系統提示。", + "customSystemPromptPlaceholder": "例如:始終用海盜語氣回覆……", + "obsidianEnterToken": "請輸入Obsidian API令牌", + "obsidianConnectFailed": "連接失敗", + "obsidianConnectionFailed": "連接失敗", + "obsidianDisconnectFailed": "斷開連接失敗", + "obsidianEnterVaultPath": "請輸入知識庫目錄路徑", + "obsidianWebdavEnabledMessage": "WebDAV同步已啟用。請在下方設定您的移動設備。", + "obsidianEnableWebdavFailed": "啟用WebDAV失敗", + "obsidianWebdavDisabledMessage": "WebDAV同步已禁用", + "obsidianDisableWebdavFailed": "禁用WebDAV失敗", + "obsidianConnected": "Connected", + "obsidianNotConnected": "未連接", + "obsidianWebdavSync": "WebDAV同步", + "obsidianDescription": "通過路由的AI模型在Obsidian中搜尋、閱讀、編寫和管理筆記。", + "obsidianRestToken": "Obsidian本地REST API令牌", + "obsidianApiKeyPlaceholder": "Obsidian API Key", + "obsidianConnect": "Connect", + "obsidianBaseUrlOptional": "Base URL(可選)", + "obsidianPortWarning": "連接埠 27124 是MCP端點(HTTPS,自簽名證書)。REST API在連接埠 27123 上使用HTTP。", + "obsidianRemoteVaultHint": "Default: {defaultUrl}. For remote vaults, enter the Tailscale IP + port (e.g., http://100.x.x.x:27123). Enable the Local REST API plugin on the machine running Obsidian.", + "obsidianTokenConfigured": "令牌已設定。Obsidian工具可通過MCP使用。", + "obsidianDisconnect": "Disconnect", + "obsidianVaultSync": "知識庫同步(WebDAV)", + "obsidianVaultSyncDescription": "通過Tailscale使用WebDAV將知識庫同步到Obsidian移動端。Obsidian移動端內置WebDAV支援——無需外掛。", + "obsidianVaultDirectoryPath": "知識庫目錄路徑", + "obsidianEnable": "Enable", + "obsidianWebdavEnabled": "WebDAV同步已啟用", + "obsidianDisable": "Disable", + "obsidianConfigureMobile": "設定Obsidian移動端", + "obsidianMobileInstructions": "在Obsidian移動端中:設定 → 同步 → WebDAV → 輸入以下資訊:", "obsidianWebdavUrl": "WebDAV URL", - "obsidianUsername": "使用者名稱", - "obsidianPassword": "密碼", - "obsidianTailscaleHint": "如果從行動裝置連線,請使用 Tailscale IP 而非 localhost。兩台裝置必須位於相同的 Tailscale 網路中。" + "obsidianUsername": "Username", + "obsidianPassword": "Password", + "obsidianTailscaleHint": "從移動設備連接時請使用Tailscale IP而非localhost。兩臺設備必須在同一Tailscale網路上。" }, "endpoints": { "tabProxy": "端點代理", - "tabApiEndpoints": "API 端點", - "apiEndpointsTitle": "API 端點", + "tabApiEndpoints": "API端點", + "apiEndpointsTitle": "API端點", "apiEndpointsDescription": "可被其他應用程式和服務使用的後端API端點。", "comingSoon": "即將推出", "plannedFeatures": "計劃的功能", - "featureRestApi": "REST API目錄與互動式檔案", + "featureRestApi": "REST API目錄與交互式文件", "featureWebhooks": "Webhook設定和事件訂閱", "featureSwagger": "OpenAPI / Swagger規範自動生成", - "featureAuth": "每個端點的API金鑰和OAuth範圍管理" + "featureAuth": "每個端點的API Key和OAuth範圍管理" }, "mcpDashboard": { - "loading": "正在載入 MCP 儀表板...", + "loading": "正在載入MCP看板...", "activate": "啟用", "deactivate": "停用", "confirmSwitchCombo": "確定要將組合“{combo}”設為{action}嗎?", @@ -3922,25 +3922,25 @@ "confirmResetBreakers": "確定要重置全部斷路器嗎?", "resetBreakersFailed": "重置斷路器失敗。", "resetBreakersSuccess": "斷路器已重置。", - "processStatus": "程式狀態", + "processStatus": "行程狀態", "online": "線上", "offline": "離線", - "disableLabel": "停用 {label}", + "disableLabel": "禁用 {label}", "enableLabel": "啟用 {label}", "transportMode": "傳輸模式", - "transportStdioDesc": "本地 — IDE 通過 omniroute --mcp 啟動程式", - "transportSseDesc": "遠端 — 基於 HTTP 的 Server-Sent Events", - "transportStreamableHttpDesc": "遠端 — 現代雙向 HTTP", + "transportStdioDesc": "本地—IDE通過omniroute --mcp啟動行程", + "transportSseDesc": "遠程—基於HTTP的Server-Sent Events", + "transportStreamableHttpDesc": "遠程—現代雙向HTTP", "copy": "複製", "mcpDashboardCopyUrl": "複製網址", - "mcpDisabledTitle": "MCP 已停用", - "mcpDisabledDesc": "在上方啟用 MCP 後即可設定傳輸模式並檢視伺服器遙測。", - "mcpIntro": "Model Context Protocol — {tools} 個工具,覆蓋 {scopes} 個作用域,支援 {transports} 種傳輸方式(stdio / SSE / Streamable HTTP)。", - "mcpStep1": "通過 {code} 執行", - "mcpStep2": "將 MCP 客戶端設定為通過 stdio 傳輸連線。", + "mcpDisabledTitle": "MCP已禁用", + "mcpDisabledDesc": "在上方啟用MCP後即可設定傳輸模式並查看伺服器遙測。", + "mcpIntro": "Model Context Protocol— {tools} 個工具,覆蓋 {scopes} 個作用域,支援 {transports} 種傳輸方式(stdio / SSE / Streamable HTTP)。", + "mcpStep1": "通過 {code} 運行", + "mcpStep2": "將MCP客戶端設定為通過stdio傳輸連接。", "mcpStep3": "呼叫 {code1} 和 {code2} 等工具。", "pid": "PID", - "sessionUptime": "會話執行時長", + "sessionUptime": "工作階段運行時長", "lastHeartbeat": "最近心跳", "activity24h": "近 24 小時活動", "totalCalls": "呼叫總數", @@ -3948,14 +3948,14 @@ "avgLatency": "平均延遲", "topTools": "熱門工具", "noToolCalls24h": "最近 24 小時沒有工具呼叫。", - "runtimeDetails": "執行時詳情", + "runtimeDetails": "運行時詳情", "transport": "傳輸方式", "scopesEnforced": "已啟用作用域控制", "yes": "是", "no": "否", "lastCall": "最近呼叫", "heartbeatPath": "心跳檔案路徑", - "operationalControls": "執行控制", + "operationalControls": "運行控制", "switchCombo": "切換組合", "inactive": "未啟用", "active": "已啟用", @@ -3986,7 +3986,7 @@ "tableTimestamp": "時間戳", "tableDuration": "耗時", "tableResult": "結果", - "tableApiKey": "API 金鑰", + "tableApiKey": "API Key", "failed": "失敗", "previous": "上一頁", "next": "下一頁", @@ -3996,7 +3996,7 @@ "tool": "工具" }, "a2aDashboard": { - "loading": "正在載入 A2A 儀表板...", + "loading": "正在載入A2A看板...", "confirmCancelTask": "確定要取消任務 {taskId} 嗎?", "cancelTaskFailed": "取消任務失敗。", "cancelTaskSuccess": "任務 {taskId} 已取消。", @@ -4005,7 +4005,7 @@ "smokeSendSuccess": "`message/send` 呼叫成功。", "smokeStreamFailed": "`message/stream` 冒煙測試失敗。", "smokeStreamSuccessWithTask": "`message/stream` 呼叫成功(任務 {taskId}{stateSuffix})。", - "smokeStreamNoTaskId": "`message/stream` 完成,但未返回任務 ID。", + "smokeStreamNoTaskId": "`message/stream` 完成,但未返回任務ID。", "health": "健康狀態", "ok": "正常", "totalTasks": "任務總數", @@ -4019,55 +4019,55 @@ "failed": "失敗", "cancelled": "已取消" }, - "agentCard": "智慧體卡片", + "agentCard": "智能體卡片", "agentCardPath": "/.well-known/agent.json", "version": "版本", "url": "URL", "capabilities": "能力", - "agentCardNotAvailable": "Agent Card 不可用。", + "agentCardNotAvailable": "智能體Card不可用。", "quickValidation": "快速驗證", - "quickValidationDescription": "通過即時 `/a2a` 端點執行冒煙呼叫。", - "runMessageSend": "執行 message/send", - "runMessageStream": "執行 message/stream", + "quickValidationDescription": "通過實時 `/a2a` 端點執行冒煙呼叫。", + "runMessageSend": "運行message/send", + "runMessageStream": "運行message/stream", "taskManagement": "任務管理", "taskSummary": "任務總數:{total}|第 {page} / {totalPages} 頁", "allStates": "全部狀態", - "allSkills": "全部技能", + "allSkills": "全部Skills", "loadingTasks": "正在載入任務...", "noTasksForFilters": "當前篩選條件下沒有任務。", "tableTask": "任務", - "tableSkill": "技能", + "tableSkill": "Skills", "tableState": "狀態", "tableUpdated": "更新時間", "tableActions": "操作", - "view": "檢視", + "view": "查看", "cancel": "取消", "previous": "上一頁", "next": "下一頁", "taskDetail": "任務詳情", "close": "關閉", - "metadata": "後設資料", + "metadata": "元資料", "events": "事件", "artifacts": "產物", "tablePhase": "階段", "offset": "偏移量", "limit": "限制", - "skill": "技能", - "rpcEndpoint": "釋出 /a2a", - "rpcMethodSend": "留言/傳送", - "rpcMethodStream": "訊息/流", + "skill": "Skill", + "rpcEndpoint": "發佈 /a2a", + "rpcMethodSend": "留言/發送", + "rpcMethodStream": "消息/流", "rpcMethodGet": "任務/獲取", "rpcMethodCancel": "任務/取消", "serviceLabel": "A2A", "online": "線上", "offline": "離線", - "disableLabel": "停用 {label}", + "disableLabel": "禁用 {label}", "enableLabel": "啟用 {label}", - "a2aDisabledTitle": "A2A 已停用", - "a2aDisabledDesc": "在上方啟用 A2A 後即可檢視任務遙測、代理詳情與校驗工具。", - "a2aIntro": "Agent2Agent JSON-RPC 2.0 端點 — 傳送任務、流式回應、取消執行中的任務。", + "a2aDisabledTitle": "A2A已禁用", + "a2aDisabledDesc": "在上方啟用A2A後即可查看任務遙測、代理詳情與校驗工具。", + "a2aIntro": "Agent2Agent JSON-RPC 2.0 端點—發送任務、流式回應、取消執行中的任務。", "a2aStep1": "在 {code} 處發現代理卡片。", - "a2aStep2": "向 {code1} 傳送 JSON-RPC,使用 {code2} 或 {code3}。", + "a2aStep2": "向 {code1} 發送JSON-RPC,使用 {code2} 或 {code3}。", "a2aStep3": "使用 {code1} 和 {code2} 跟蹤並取消任務。" }, "memory": { @@ -4081,45 +4081,45 @@ "compactOld": "緊湊舊版", "concept": { "title": "對話記憶", - "description": "OmniRoute 從每次對話中學習,記住事實、事件、程式和語義概念,使回應更加準確和上下文感知。", + "description": "OmniRoute從每次對話中學習,記住事實、事件、程式和語意概念,使回應更加準確和上下文感知。", "howWorksToggle": "它是如何工作的", - "howWorksContent": "1. 自動提取:在每個回應結束時,事實和事件會被自動檢測並儲存。\n2. 檢索:在每個回應之前,通過FTS5(精確)、向量(語義)或混合RRF搜尋最相關的記憶。\n3. 注入:相關記憶被注入到助手上下文中,以提高回應質量。\n4. 管理:使用此頁面檢視、編輯、匯出和壓縮舊記憶。" + "howWorksContent": "1. 自動提取:在每個回應結束時,事實和事件會被自動檢測並保存。\n2. 檢索:在每個回應之前,通過FTS5(精確)、向量(語意)或混合RRF搜尋最相關的記憶。\n3. 注入:相關記憶被注入到助手上下文中,以提高回應質量。\n4. 管理:使用此頁面查看、編輯、導出和壓縮舊記憶。" }, "content": "內容", - "contentPlaceholder": "要記住的值或 JSON 內容", - "created": "建立時間", + "contentPlaceholder": "要記住的值或JSON內容", + "created": "創建時間", "delete": "刪除", "deleteConfirmDesc": "此操作無法撤銷。記憶體將被永久刪除。", "deleteConfirmTitle": "刪除記憶體?", - "description": "檢視並管理已儲存的記憶條目", + "description": "查看並管理已存儲的記憶條目", "editMemory": "編輯記憶體", "editModal": { "title": "編輯記憶體", - "metadataLabel": "後設資料 (JSON)", - "metadataInvalid": "無效的 JSON", - "saveFailed": "儲存記憶體失敗" + "metadataLabel": "元資料 (JSON)", + "metadataInvalid": "無效的JSON", + "saveFailed": "保存記憶體失敗" }, "embedding": { "autoLabel": "自動", - "autoDesc": "使用最佳可用選項:遠端提供者 > 靜態 > 轉換器", - "remoteLabel": "遠端提供者", - "remoteDesc": "通過提供者 API 使用嵌入(需要 API 金鑰)", - "staticLabel": "靜態本地(藥水)", + "autoDesc": "使用最佳可用選項:遠程提供者 > 靜態 > 轉換器", + "remoteLabel": "遠程提供者", + "remoteDesc": "通過提供者API使用嵌入(需要API Key)", + "staticLabel": "靜態本地(potion)", "staticDesc": "不使用WASM或外部依賴的本地嵌入", "transformersLabel": "Transformers.js (MiniLM)", - "transformersDesc": "通過 @huggingface/transformers 本地嵌入 (~400MB RAM)", + "transformersDesc": "通過 @huggingface/transformers本地嵌入 (~400MB RAM)", "providerModelLabel": "提供者 / 模型", - "noRemoteProviders": "沒有設定 API 金鑰的提供者", + "noRemoteProviders": "沒有設定API Key的提供者", "selectProviderModel": "選擇一個模型", - "staticEnabledLabel": "啟用靜態藥水", - "staticEnabledDesc": "在本地下載並使用 potion-base-8M 模型", - "transformersEnabledLabel": "啟用 Transformers.js", - "transformersEnabledDesc": "選擇本地 MiniLM(約 400MB RAM,約 3 秒冷啟動)", - "transformersWarning": "需要約400MB記憶體,並在第一次語義查詢時冷啟動約3秒。" + "staticEnabledLabel": "啟用靜態potion", + "staticEnabledDesc": "在本地下載並使用potion-base-8M模型", + "transformersEnabledLabel": "啟用Transformers.js", + "transformersEnabledDesc": "選擇本地MiniLM(約 400MB RAM,約 3 秒冷啟動)", + "transformersWarning": "需要約400MB記憶體,並在第一次語意查詢時冷啟動約3秒。" }, "emptyState": { "title": "還沒有記憶", - "description": "記憶是從對話中自動建立的。您也可以使用上面的按鈕手動新增它們。" + "description": "記憶是從對話中自動創建的。您也可以使用上面的按鈕手動新增它們。" }, "engine": { "statusTitle": "引擎狀態", @@ -4131,26 +4131,26 @@ "keywordLabel": "關鍵字 (FTS5)", "keywordReason": "關鍵字搜尋始終可用", "embeddingLabel": "嵌入", - "vectorStoreLabel": "向量儲存", + "vectorStoreLabel": "向量存儲", "qdrantLabel": "Qdrant", "rerankLabel": "重新排序", - "qdrantDisabled": "停用", + "qdrantDisabled": "禁用", "qdrantOk": "健康 ({latencyMs}ms)", - "qdrantError": "連線錯誤", + "qdrantError": "連接錯誤", "needsReindex": "{count} 個記憶體需要重新索引", "configureCta": "設定", - "vectorStoreInstallHint": "要啟用向量搜尋:npm install sqlite-vec(需要本地 Node.js,而不是 WASM),然後重啟。" + "vectorStoreInstallHint": "要啟用向量搜尋:npm install sqlite-vec(需要本地Node.js,而不是WASM),然後重新啟動。" }, "episodic": "情景型", - "export": "匯出", + "export": "導出", "factual": "事實型", "healthUnknown": "健康狀況不明", "hitRate": "命中率", - "import": "匯入", - "importError": "匯入檔案失敗", - "importResult": "{imported} 匯入, {skipped} 跳過", + "import": "導入", + "importError": "導入檔案失敗", + "importResult": "{imported} 導入, {skipped} 跳過", "key": "鍵", - "keyPlaceholder": "例如使用者偏好主題", + "keyPlaceholder": "例如用戶偏好主題", "loading": "正在載入記憶...", "memories": "記憶", "next": "下一步", @@ -4159,61 +4159,61 @@ "pipelineError": "管道錯誤", "pipelineOk": "管道正常 ({latencyMs}ms)", "playground": { - "infoTitle": "記憶體遊樂場", - "infoDesc": "模擬將為給定查詢檢索到的內容。沒有修改任何記憶 — 只讀預覽。", + "infoTitle": "記憶體演練場", + "infoDesc": "模擬將為給定查詢檢索到的內容。沒有修改任何記憶—只讀預覽。", "queryLabel": "測試查詢", "queryPlaceholder": "輸入問題或測試短語...", "strategyLabel": "策略", "strategyExact": "精確 (FTS5)", - "strategySemantic": "語義(向量)", + "strategySemantic": "語意(向量)", "strategyHybrid": "混合 (RRF)", "budgetLabel": "預算(代幣)", "simulate": "模擬", "resultsTitle": "{count} 個結果", - "resolutionTitle": "搜尋解析度", + "resolutionTitle": "搜尋分辨率", "resolutionEmbedding": "嵌入", - "resolutionStore": "向量儲存", + "resolutionStore": "向量存儲", "resolutionStrategy": "使用的策略", "rerankApplied": "重新排序已應用", "fallback": "後備", "noResults": "未找到與此查詢相關的記憶。", - "tokensUsed": "已使用的權杖", + "tokensUsed": "已使用的令牌", "none": "無", "errorFetch": "獲取預覽失敗" }, "previous": "上一頁", "procedural": "程式型", "qdrant": { - "title": "Qdrant(向量儲存 Tier 2)", - "description": "可選的 Qdrant 整合用於可擴充套件的語義搜尋", - "enableLabel": "啟用 Qdrant", - "enableDesc": "啟用後,Qdrant 將作為主要向量儲存使用", - "banner": "Tier 2 向量儲存 — 內建 sqlite-vec(Tier 1)的外部可擴展替代方案。僅在您有非常大的記憶體集合或想要跨執行個體共享記憶體時才啟用;大多數使用者使用 sqlite-vec 就很夠用。啟用後它會成為主要儲存,並在無法連線時自動回退到 sqlite-vec。", - "hostHelp": "本地 Docker:http://localhost:6333 · Qdrant Cloud:您的叢集 URL", - "collectionHelp": "任意名稱 — OmniRoute 會在首次使用時建立", - "embeddingModelHelp": "首次使用時自動設定向量維度。現有記憶不會回溯填充,資料存在後變更模型需要建立新集合。", - "testConnection": "測試連線", + "title": "Qdrant(向量存儲Tier 2)", + "description": "可選的Qdrant整合用於可擴展的語意搜尋", + "enableLabel": "啟用Qdrant", + "enableDesc": "啟用後,Qdrant將作為主要向量存儲使用", + "banner": "二級向量存儲——內建sqlite-vec(一級)的外部可擴展替代方案。僅在需要非常大的記憶集或跨實例共享記憶時啟用;大多數用戶使用sqlite-vec即可。啟用後它將作為主存儲,並在不可達時自動回退到sqlite-vec。", + "hostHelp": "Local Docker: http://localhost:6333 ·Qdrant Cloud: your cluster URL", + "collectionHelp": "任意名稱——OmniRoute會在首次使用時自動創建。", + "embeddingModelHelp": "在首次使用時自動設定向量維度。已有記憶不會被回填,資料存在後更改模型需要新建集合。", + "testConnection": "測試連接", "testing": "測試中...", "statusActive": "活動", "statusError": "錯誤", - "statusDisabled": "停用", - "healthOk": "連線正常 ({latencyMs}ms)", - "healthError": "連線錯誤", - "saved": "設定已儲存", - "saveError": "儲存失敗", - "portLabel": "埠", + "statusDisabled": "禁用", + "healthOk": "連接正常 ({latencyMs}ms)", + "healthError": "連接錯誤", + "saved": "設定已保存", + "saveError": "保存失敗", + "portLabel": "連接埠", "embeddingModelLabel": "嵌入模型", "optional": "可選", "apiKeyKeepPlaceholder": "留空以保持當前金鑰", "apiKeyOptional": "如果不使用身份驗證,請留空", "removeApiKey": "移除", "quickSelectModel": "快速選擇", - "searchTestTitle": "語義搜尋測試", + "searchTestTitle": "語意搜尋測試", "searchPlaceholder": "輸入測試查詢...", "searching": "搜尋中...", "search": "搜尋", "cleanupTitle": "清理舊積分", - "cleanupDesc": "刪除過期記憶(保留期)的 Qdrant 點。", + "cleanupDesc": "刪除過期記憶(保留期)的Qdrant點。", "cleaning": "清理中...", "cleanNow": "立即清理", "cleanupSuccess": "已移除 {count} 點數", @@ -4222,15 +4222,15 @@ "rerank": { "enableLabel": "啟用重新排序", "enableDesc": "在搜尋後使用重新排序模型對結果進行重新排序", - "warning": "Rerank 會增加 +200-500ms 的延遲和每個請求的額外成本。請謹慎使用。", + "warning": "Rerank會增加 +200-500ms的延遲和每個請求的額外成本。請謹慎使用。", "providerModelLabel": "重新排序提供者 / 模型", - "noProviderWithKey": "沒有設定 API 金鑰的提供者。請設定一個提供者以使用 rerank。", + "noProviderWithKey": "沒有設定API Key的提供者。請設定一個提供者以使用rerank。", "selectProviderModel": "選擇一個提供者/模型" }, - "save": "儲存", - "saving": "儲存中...", + "save": "保存", + "saving": "保存中...", "search": "搜尋記憶...", - "semantic": "語義型", + "semantic": "語意型", "summarize": { "title": "壓縮舊記憶", "noCandidates": "沒有符合壓縮條件的記憶(標準:超過30天)。", @@ -4239,16 +4239,16 @@ }, "tabs": { "memories": "記憶", - "playground": "遊樂場", + "playground": "演練場", "engine": "引擎" }, "title": "記憶管理", - "tokensUsed": "已用 Tokens", + "tokensUsed": "已用Tokens", "tooltip": { - "totalEntries": "此 API 金鑰儲存的總記憶數", - "tokensUsed": "活動記憶佔用的估計總權杖數", - "hitRate": "按 ID 讀取的快取命中率(不是語義回憶準確性)", - "factual": "使用者上下文中的客觀、永久性事實", + "totalEntries": "此API Key存儲的總記憶數", + "tokensUsed": "活動記憶佔用的估計總令牌數", + "hitRate": "按ID讀取的快取命中率(不是語意回憶準確性)", + "factual": "用戶上下文中的客觀、永久性事實", "episodic": "對話歷史中的事件和經歷", "procedural": "助手應遵循的程式、工作流程和指令", "semantic": "概念、偏好和領域知識" @@ -4258,36 +4258,36 @@ "memoryEnabled": "記憶體已啟用" }, "skills": { - "title": "技能", - "description": "管理並監控 AI 技能", - "skillsTab": "技能", + "title": "Skills", + "description": "管理並監控AI Skills", + "skillsTab": "Skills", "executionsTab": "執行記錄", - "selectSkillToInspect": "請在左側選取一個技能進行檢視。", - "schemaTab": "架構", + "selectSkillToInspect": "在左側選擇一個Skill檢查。", + "schemaTab": "Schema", "handlerTab": "處理器", - "inputSchema": "輸入架構", - "outputSchema": "輸出架構", - "handlerCode": "處理器程式碼", + "inputSchema": "輸入Schema", + "outputSchema": "輸出Schema", + "handlerCode": "處理器代碼", "handlerUnavailable": "處理器不可用", - "runTestPlaceholder": "執行測試(佔位符)", + "runTestPlaceholder": "運行測試 (佔位符)", "setModeAria": "設定模式 {mode}", - "uninstallSkill": "解除安裝技能", + "uninstallSkill": "卸載Skills", "sandboxTab": "沙箱", - "loading": "正在載入技能...", - "noSkills": "未找到技能", + "loading": "正在載入Skills...", + "noSkills": "未找到Skills", "noExecutions": "未找到執行記錄", "enabled": "已啟用", - "disabled": "已停用", + "disabled": "已禁用", "delete": "刪除", "version": "版本", "tableDescription": "說明", - "skill": "技能", + "skill": "Skill", "status": "狀態", "duration": "耗時", "time": "時間", "sandboxConfig": "沙箱設定", - "cpuLimit": "CPU 限制", - "cpuLimitDesc": "單個技能允許的最長執行時間", + "cpuLimit": "CPU限制", + "cpuLimitDesc": "單個Skills允許的最長執行時間", "memoryLimit": "記憶體限制", "memoryLimitDesc": "允許分配的最大記憶體", "timeout": "超時", @@ -4296,53 +4296,53 @@ "networkAccessDesc": "允許發起出站網路請求", "mode": "模式", "q": "問", - "filterSkillsPlaceholder": "按名稱、描述或標籤過濾技能", + "filterSkillsPlaceholder": "按名稱、描述或標籤過濾Skills", "allModes": "所有模式", - "totalSkills": "技能總數", + "totalSkills": "Skills總數", "enabledSkills": "已啟用", "totalExecutions": "執行次數", "successRate": "成功率", "marketplaceTab": "市場", "applyFilters": "應用篩選", - "popularDefaultsLabel": "所選提供者的預設熱門技能:", + "popularDefaultsLabel": "所選提供者的預設熱門Skills:", "onMode": "開", "offMode": "關", "autoMode": "自動", - "installSkillButton": "安裝技能", - "installSkillModalTitle": "安裝技能", - "installJsonPlaceholder": "在此貼上技能清單 JSON...", + "installSkillButton": "安裝Skills", + "installSkillModalTitle": "安裝Skills", + "installJsonPlaceholder": "在此粘貼Skills清單JSON...", "installing": "正在安裝...", - "installSuccess": "技能已安裝({id})", + "installSuccess": "Skills已安裝({id})", "installError": "安裝失敗", - "invalidJson": "無效的 JSON", - "searchMarketplacePlaceholder": "搜尋技能...", + "invalidJson": "無效的JSON", + "searchMarketplacePlaceholder": "搜尋Skills...", "searchMarketplace": "搜尋市場", - "marketplaceEmpty": "市場中未找到技能", + "marketplaceEmpty": "市場中未找到Skills", "marketplaceError": "搜尋失敗", "installingFromMarketplace": "正在從市場安裝...", - "popularSkills": "熱門技能", - "skillsMarketplace": "技能市場", + "popularSkills": "熱門Skills", + "skillsMarketplace": "Skills市場", "searching": "正在搜尋...", "pageInfo": "第 {page} / {totalPages} 頁(共 {total} 條)", "previous": "上一頁", "next": "下一頁", "activeProvider": "當前提供者:", - "changeInSettings": "可在 設定 → 記憶與技能 中修改。", + "changeInSettings": "可在設定 → 記憶與Skills中修改。", "installs": "安裝", - "marketplaceSkillsMpHint": "請在設定中設定 SkillsMP API 金鑰以瀏覽市場。", - "marketplaceSkillsShHint": "搜尋 skills.sh 公開目錄以發現並安裝代理技能。", - "installSkillModalDesc": "貼上技能清單 JSON 或上傳 .json 檔案。", - "uploadJson": "上傳 JSON", + "marketplaceSkillsMpHint": "請在設定中設定SkillsMP API Key以瀏覽市場。", + "marketplaceSkillsShHint": "搜尋skills.sh公開目錄以發現並安裝代理Skills。", + "installSkillModalDesc": "粘貼Skills清單JSON或上傳 .json檔案。", + "uploadJson": "上傳JSON", "cancel": "取消", - "installSkill": "安裝技巧" + "installSkill": "安裝Skills" }, "health": { "title": "系統健康狀況", - "description": "即時監控您的 OmniRoute 例項", + "description": "實時監控您的OmniRoute實例", "healthy": "健康", "degraded": "降級", "down": "下線", - "uptime": "正常執行時間", + "uptime": "正常運行時間", "memory": "記憶體", "memoryRss": "記憶體(RSS)", "heap": "堆", @@ -4352,13 +4352,13 @@ "lastCheck": "最後檢查", "providerHealth": "提供者健康", "systemMetrics": "系統指標", - "tokenHealth": "權杖健康", - "refreshAll": "全部重新整理", - "checkNow": "立即檢視", + "tokenHealth": "令牌健康", + "refreshAll": "全部刷新", + "checkNow": "立即查看", "loadingHealth": "正在載入健康資料...", "failedToLoad": "無法載入健康資料:{error}", "retry": "重試", - "allOperational": "所有系統均可執行", + "allOperational": "所有系統均可運行", "issuesDetected": "檢測到系統問題", "updatedAt": "更新了 {time}", "latency": "延遲", @@ -4377,15 +4377,15 @@ "signatureDefaults": "預設值", "signatureTool": "工具", "signatureFamily": "家庭", - "signatureSession": "會話", + "signatureSession": "工作階段", "recovering": "正在恢復中", "noCBData": "當前沒有可用的斷路器資料,請先發起一些請求。", "providerHealthStatusAria": "提供者健康狀況", "issuesLabel": "檢測到的問題", - "operational": "執行中", + "operational": "運行中", "providers": "提供者", - "configuredProvidersLabel": "在儀表板中設定", - "configuredProvidersHint": "指已在 /dashboard/providers 中設定憑證的提供者,無論當前執行時狀態如何。", + "configuredProvidersLabel": "在看板中設定", + "configuredProvidersHint": "指已在 /dashboard/providers中設定憑證的提供者,無論當前運行時狀態如何。", "activeProviders": "{count} 個活躍", "activeProvidersHint": "指當前已啟用並可參與請求路由的已設定提供者。", "monitoredProviders": "{count} 個監控中", @@ -4400,71 +4400,71 @@ "activeLimitersPlural": "{count} 主動限制器", "queued": "排隊中", "queuedCount": "{count} 已排隊", - "running": "執行中", - "runningCount": "{count} 正在執行", + "running": "運行中", + "runningCount": "{count} 正在運行", "ok": "正常", "activeLockouts": "主動鎖定", - "resetConfirm": "將所有斷路器重置為正常狀態?這將清除所有故障計數並將所有提供者恢復到執行狀態。", + "resetConfirm": "將所有斷路器重置為正常狀態?這將清除所有故障計數並將所有提供者恢復到運行狀態。", "resetAllTitle": "將所有斷路器重置為正常狀態", "resetting": "正在重置...", "resetAll": "全部重置", "until": "直到 {time}", "limitExhausted": "已耗盡", - "learnedFromHeaders": "從回應頭學習", + "learnedFromHeaders": "從回應標頭學習", "remainingOfLimit": "剩餘 {remaining}/{limit}", "throttleStatus": "限流:{value}", - "lastHeaderUpdate": "回應頭更新:{age}", + "lastHeaderUpdate": "回應標頭更新:{age}", "databaseHealth": "資料庫健康狀況", - "databaseHealthDescription": "診斷並修復過時的配額/領域行和損毀的組合參考。", + "databaseHealthDescription": "診斷並修復過期的配額/域行以及損壞的組合引用。", "status": "狀態", "attentionNeeded": "需要注意", "repairs": "修復", - "repairing": "修復中...", - "runAutoRepair": "執行自動修復", - "repairBackupCreated": "在變更前已建立修復備份。", + "repairing": "正在修復...", + "runAutoRepair": "運行自動修復", + "repairBackupCreated": "在進行變更前已創建修復備份。", "sessionActivity": "工作階段活動", - "activeCount": "{count} 個作用中", - "requestCount": "{count} 個請求", - "idleSeconds": "閒置 {count} 秒", - "ageSeconds": "已存在 {count} 秒", - "quotaMonitors": "配額監控", - "alerting": "警示中", + "activeCount": "{count} 個活躍", + "requestCount": "{count, plural, one {# 個請求} other {# 個請求}}", + "idleSeconds": "{count} 秒空閒", + "ageSeconds": "{count} 秒時長", + "quotaMonitors": "配額監控器", + "alerting": "告警中", "errors": "錯誤", "degradationFull": "完整", - "degradationReduced": "減少", - "degradationMinimal": "最小", + "degradationReduced": "精簡", + "degradationMinimal": "極簡", "degradationDefault": "預設", "sinceTime": "自 {time} 以來", "retryIn": "在 {duration} 後重試", - "stickyBoundSessions": "粘性繫結會話", - "sessionsByApiKey": "按 API 金鑰進行的會話", - "noActiveSessionsTracked": "尚未跟蹤任何活動會話。", - "noSessionQuotaMonitorsActive": "沒有活動的會話配額監視器。", + "stickyBoundSessions": "粘性綁定工作階段", + "sessionsByApiKey": "按API Key進行的工作階段", + "noActiveSessionsTracked": "尚未跟蹤任何活動工作階段。", + "noSessionQuotaMonitorsActive": "沒有活動的工作階段配額監視器。", "gracefulDegradationStatus": "優雅降級狀態", "additionalModels": "+{count} 更多型號", "providerHealthMatrixTitle": "提供者健康矩陣", - "providerHealthMatrixDescription": "來自熔斷器、冷卻、鎖定和日誌的提供者 × 帳戶 × 模型狀態。", + "providerHealthMatrixDescription": "來自熔斷器、冷卻、鎖定和日誌的提供者 × 賬戶 × 模型狀態。", "healthMatrixRange": "健康矩陣時間範圍", "providerFilter": "提供者篩選", "onlyIssues": "僅顯示問題", - "refresh": "重新整理", - "accounts": "帳戶", + "refresh": "刷新", + "accounts": "賬戶", "models": "模型", "issues": "問題", "loadingProviderHealthMatrix": "正在載入提供者健康矩陣...", "failedProviderHealthMatrix": "載入提供者健康矩陣失敗:{error}", "noProvidersMatchedFilters": "沒有提供者匹配當前篩選條件。", - "modelPillSummary": "{requests} 請求 · {successRate} 成功率 · {latency} 平均延遲", - "modelLockoutSummary": "{reason} · 剩餘 {duration}", + "modelPillSummary": "{requests} 請求· {successRate} 成功率· {latency} 平均延遲", + "modelLockoutSummary": "{reason} ·剩餘 {duration}", "locked": "已鎖定", "inferred": "推斷", "inactive": "未啟用", - "noConnectionId": "無連線 ID", + "noConnectionId": "無連接ID", "accountModelSummary": "{connectionId} · {count} 個模型", "cooldown": "冷卻中", "durationRemaining": "剩餘 {duration}", "noSyncedModelsOrTraffic": "暫無同步模型或近期流量。", - "providerRowSummary": "{active}/{total} 活躍帳戶 · {requests} 請求 · {successRate} 成功率 · {latency} 平均延遲", + "providerRowSummary": "{active}/{total} 活躍賬戶· {requests} 請求· {successRate} 成功率· {latency} 平均延遲", "cooldownCount": "{count} 個冷卻中", "lockoutCount": "{count} 個鎖定", "issueCount": "{count} 個問題", @@ -4474,63 +4474,63 @@ }, "telemetry": { "title": "系統遙測", - "description": "來自此 OmniRoute 程式的滾動請求、執行時、會話和記憶體訊號。", - "uptime": "執行時間", + "description": "來自此OmniRoute行程的捲動請求、運行時、工作階段和記憶體信號。", + "uptime": "運行時間", "totalRequests": "請求總數", "avgLatency": "平均延遲", "errorRate": "錯誤率", - "activeConnections": "活動連線", + "activeConnections": "活動連接", "memoryUsage": "記憶體使用", "latencyTrend": "延遲趨勢", "throughputTrend": "吞吐趨勢", "memoryTrend": "記憶體趨勢", - "refresh": "重新整理", + "refresh": "刷新", "updatedAt": "更新於 {time}", "loadFailed": "載入遙測失敗。", "partialData": "遙測資料部分可用:{error}" }, "mitm": { - "title": "MITM 代理", + "title": "MITM代理", "description": "用於攔截和路由客戶端請求的透明代理。", - "enable": "啟用 MITM 代理", - "enableDesc": "啟動或停止本地攔截程式和 DNS 覆蓋。", + "enable": "啟用MITM代理", + "enableDesc": "啟動或停止本地攔截行程和DNS覆蓋。", "status": "狀態", - "running": "執行中", + "running": "運行中", "stopped": "已停止", "start": "啟動", "stop": "停止", - "refresh": "重新整理", - "port": "代理埠", - "apiKey": "路由器 API 金鑰", + "refresh": "刷新", + "port": "代理連接埠", + "apiKey": "路由器API Key", "apiKeyPlaceholder": "可選;留空則回退到本地金鑰", - "sudoPassword": "Sudo 密碼", - "cachedPassword": "已為此程式快取", - "saveSettings": "儲存設定", - "settingsSaved": "MITM 設定已儲存。", - "startedSuccess": "MITM 代理已啟動。", - "stoppedSuccess": "MITM 代理已停止。", - "saveFailed": "更新 MITM 設定失敗。", - "loadFailed": "載入 MITM 設定失敗。", - "invalidPort": "透明 MITM 攔截當前要求使用埠 443。", - "certificate": "CA 證書", + "sudoPassword": "Sudo密碼", + "cachedPassword": "已為此行程快取", + "saveSettings": "保存設定", + "settingsSaved": "MITM設定已保存。", + "startedSuccess": "MITM代理已啟動。", + "stoppedSuccess": "MITM代理已停止。", + "saveFailed": "更新MITM設定失敗。", + "loadFailed": "載入MITM設定失敗。", + "invalidPort": "透明MITM攔截當前要求使用連接埠 443。", + "certificate": "CA證書", "certificateReady": "證書已可用於客戶端信任安裝。", "certificateMissing": "尚未生成證書。", "available": "可用", "missing": "缺失", - "downloadCert": "下載 CA 證書", + "downloadCert": "下載CA證書", "regenerateCert": "重新生成證書", "regenerateConfirm": "這會使現有客戶端信任失效。要繼續嗎?", - "regenerateSuccess": "MITM 證書已重新生成。", - "regenerateFailed": "重新生成 MITM 證書失敗。", + "regenerateSuccess": "MITM證書已重新生成。", + "regenerateFailed": "重新生成MITM證書失敗。", "targetRoutes": "目標路由", "interceptedRequests": "已攔截請求", - "activeConnections": "活動連線", - "dnsConfigured": "DNS 已設定", + "activeConnections": "活動連接", + "dnsConfigured": "DNS已設定", "pid": "PID", "lastIntercept": "上次攔截", "target": "目標", "host": "主機", - "localPort": "本地埠", + "localPort": "本地連接埠", "endpoints": "端點", "enabled": "已啟用", "configured": "已設定", @@ -4550,19 +4550,19 @@ "title": "日誌", "requestLogs": "請求日誌", "proxyLogs": "代理日誌", - "auditLog": "稽核日誌", - "console": "控制台", + "auditLog": "審核日誌", + "console": "控制檯", "auditLogDesc": "行政行為和安全事件", "loading": "正在載入...", - "refresh": "重新整理", + "refresh": "刷新", "filterByAction": "按操作過濾...", "filterByActor": "按操作人篩選...", - "filterEntriesAria": "過濾稽核日誌條目", + "filterEntriesAria": "過濾審核日誌條目", "filterByActionTypeAria": "按操作類型過濾", "filterByActorAria": "按操作人篩選", - "refreshAuditLogAria": "重新整理稽核日誌", - "tableAria": "稽核日誌條目", - "failedFetchAuditLog": "無法獲取稽核日誌", + "refreshAuditLogAria": "刷新審核日誌", + "tableAria": "審核日誌條目", + "failedFetchAuditLog": "無法獲取審核日誌", "showing": "顯示 {count} 條目(偏移量 {offset})", "search": "搜尋", "timestamp": "時間戳", @@ -4572,15 +4572,15 @@ "details": "詳情", "ipAddress": "IP地址", "notAvailable": "—", - "noEntries": "未找到稽核日誌條目", + "noEntries": "未找到審核日誌條目", "previous": "上一頁", "next": "下一頁", "providerWarningTitle": "提供者警告", - "viewDetails": "檢視詳情", - "eventMetadata": "事件後設資料", + "viewDetails": "查看詳情", + "eventMetadata": "事件元資料", "eventPayload": "事件負載", - "requestId": "請求 ID", - "providerWarningDesc": "上游提供者返回了警告。請檢視詳情以瞭解更多資訊。", + "requestId": "請求ID", + "providerWarningDesc": "上游提供者返回了警告。請查看詳情以瞭解更多資訊。", "a": "A", "offset": "偏移量", "limit": "限制", @@ -4591,41 +4591,41 @@ "auditModalSubtitle": "審計詳情", "close": "關閉", "runningRequests": "活躍請求", - "runningRequestsDesc": "當前正在執行的上游請求即時檢視", + "runningRequestsDesc": "當前正在運行的上游請求實時視圖", "clearAll": "全部清除", "confirmClearActiveRequests": "清除所有活躍請求?", "model": "模型", "provider": "提供者", - "account": "帳戶", + "account": "賬戶", "elapsed": "已耗時", "activeStage": "階段", - "activeStageUnknown": "尚未傳送到上游", + "activeStageUnknown": "尚未發送到上游", "activeStageRegistered": "已註冊", "activeStagePayloadPrepared": "負載已準備", - "activeStageWaitingAccountSlot": "等待帳戶槽位", + "activeStageWaitingAccountSlot": "等待賬戶槽位", "activeStageWaitingRateLimit": "等待速率限制器", "activeStageRateLimitSlotAcquired": "已獲取速率限制槽位", - "activeStageSendingToProvider": "正在傳送到上游", + "activeStageSendingToProvider": "正在發送到上游", "activeStageProviderResponseStarted": "上游回應已開始", "count": "數量", "payloads": "Payload", - "viewPayloads": "檢視", + "viewPayloads": "查看", "activeCount": "{count} 個活躍", "clientPayload": "客戶端請求載荷", "upstreamPayload": "上游提供者載荷", - "upstreamNotSentYet": "尚未傳送到上游", - "runningRequestDetailMeta": "Account:{account} — 已耗時:{elapsed}", - "export": "匯出", - "exporting": "正在匯出...", - "exportFailed": "匯出失敗", - "cleanHistoryButton": "清理歷史記錄", - "cleanHistoryTitle": "清理記錄歷史?", - "cleanHistoryMessage": "這會永久清除 DATA_DIR/call_logs 下的所有請求記錄行、舊版詳細資料行和本地工件檔案。清理後即時頁面將重新整理。", - "cleanHistoryConfirm": "清理歷史記錄", + "upstreamNotSentYet": "尚未發送到上游", + "runningRequestDetailMeta": "Account:{account} —已耗時:{elapsed}", + "export": "導出", + "exporting": "正在導出...", + "exportFailed": "導出失敗", + "cleanHistoryButton": "清除歷史記錄", + "cleanHistoryTitle": "清除日誌歷史記錄嗎?", + "cleanHistoryMessage": "這將永久清除DATA_DIR/call_logs下的所有請求日誌行、遺留詳細資訊行和本地產物檔案。清理後頁面將自動刷新。", + "cleanHistoryConfirm": "清除歷史記錄", "cleanHistoryCancel": "取消", - "cleanHistorySuccess": "已清理 {deleted} 筆記錄、{deletedArtifacts} 個工件和 {deletedDetailedLogs} 列舊版詳細資料。", - "cleanHistoryEmpty": "找不到請求紀錄歷史。", - "cleanHistoryFailed": "清除紀錄歷史失敗。", + "cleanHistorySuccess": "已清除 {deleted} 條日誌條目、{deletedArtifacts} 個產物和 {deletedDetailedLogs} 個遺留詳細資訊行。", + "cleanHistoryEmpty": "未找到請求日誌歷史記錄。", + "cleanHistoryFailed": "清除日誌歷史記錄失敗。", "timeRange": "時間範圍", "lastNHours": "最近 {hours} 小時", "defaultRange": "預設", @@ -4633,27 +4633,27 @@ "fetchFailed": "獲取日誌失敗", "copyFailed": "複製日誌條目失敗", "copyLogEntry": "複製日誌條目", - "filterByLevel": "依日誌層級篩選", + "filterByLevel": "按日誌級別篩選", "searchPlaceholder": "搜尋日誌…", "searchAria": "搜尋日誌條目", - "disableAutoScroll": "停用自動捲動", + "disableAutoScroll": "禁用自動捲動", "enableAutoScroll": "啟用自動捲動", "autoScroll": "自動捲動", - "entryCount": "{count} 個條目", - "lastHour": "過去 1 小時", + "entryCount": "{count, plural, one {# 個條目} other {# 個條目}}", + "lastHour": "最近 1 小時", "updatedAt": "更新於 {time}", - "fileLoggingRequired": "確保應用程式正在將日誌寫入檔案(APP_LOG_TO_FILE=true)", - "consoleAria": "應用程式主控台日誌", - "applicationConsole": "應用程式主控台", - "emptyFileLoggingHint": "確保在您的 .env 檔案中設定 APP_LOG_TO_FILE=true" + "fileLoggingRequired": "請確保應用程式正在將日誌寫入檔案 (APP_LOG_TO_FILE=true)", + "consoleAria": "應用程式控制臺紀錄", + "applicationConsole": "應用程式控制臺", + "emptyFileLoggingHint": "請確保在您的 .env檔案中設定了APP_LOG_TO_FILE=true" }, "compressionLogTitle": "壓縮日誌", "compressionLogEmpty": "尚未有壓縮請求。啟用壓縮處理請求時,壓縮統計資訊將出現在此處。", - "tokens": "權杖" + "tokens": "令牌" }, "onboarding": { "welcome": "歡迎", - "tiers": "方案分級", + "tiers": "層級", "security": "安全", "test": "測試", "ready": "準備好了!", @@ -4670,40 +4670,40 @@ "confirmPasswordPlaceholder": "確認密碼", "passwordsMismatch": "密碼不匹配", "setupComplete": "設定完成!", - "goToDashboard": "轉到儀表板→", - "welcomeDesc": "OmniRoute 是您的本地 AI API 代理。它通過負載均衡、故障轉移和使用情況跟蹤將請求路由到多個 AI 提供者。", + "goToDashboard": "轉到看板→", + "welcomeDesc": "OmniRoute是您的本地AI API代理。它通過負載均衡、故障轉移和使用情況跟蹤將請求路由到多個AI提供者。", "multiProvider": "多提供者", "usageTracking": "使用情況追蹤", - "securityDesc": "設定密碼以保護您的儀表板,或暫時跳過。", - "providerDesc": "連線你的第一個 AI 提供者。你之後還可以繼續新增。", - "apiKeyRequired": "API 金鑰(必填)", - "customUrlOptional": "自定義 URL(可選)", - "testDesc": "讓我們驗證您的提供者連線是否有效。", - "runTest": "執行連線測試", - "testingConnection": "測試連線...", - "connectionSuccessful": "連線成功!您的提供者已準備就緒。", - "noProviderFound": "未找到提供者。您可以稍後從儀表板新增一個。", + "securityDesc": "設定密碼以保護您的看板,或暫時跳過。", + "providerDesc": "連接你的第一個AI提供者。你之後還可以繼續新增。", + "apiKeyRequired": "API Key(必填)", + "customUrlOptional": "自定義URL(可選)", + "testDesc": "讓我們驗證您的提供者連接是否有效。", + "runTest": "運行連接測試", + "testingConnection": "測試連接...", + "connectionSuccessful": "連接成功!您的提供者已準備就緒。", + "noProviderFound": "未找到提供者。您可以稍後從看板新增一個。", "testFailed": "測試失敗,但您可以稍後設定。", - "couldNotTest": "現在無法測試。您可以從儀表板進行測試。", - "doneDesc": "你都準備好了!您的 OmniRoute 例項已設定並準備好代理 AI 請求。", + "couldNotTest": "現在無法測試。您可以從看板測試。", + "doneDesc": "你都準備好了!您的OmniRoute實例已設定並準備好代理AI請求。", "yourEndpoint": "您的端點:", "continue": "繼續", "retry": "重試", "failedSetPassword": "設定密碼失敗。再試一次。", "failedAddProvider": "新增提供者失敗。再試一次。", - "connectionError": "連線錯誤。請再試一次。", + "connectionError": "連接錯誤。請再試一次。", "provider": "提供者", - "apiKeyHelp": "API金鑰是AI服務的密碼。從提供者的網站(例如 platform.openai.com、console.anthropic.com)獲取一個。", + "apiKeyHelp": "API Key是AI服務的密碼。從提供者的網站(例如platform.openai.com、console.anthropic.com)獲取一個。", "tier": { - "subtitle": "OmniRoute 將提供者組織為三層,因此路由首先優先選擇最可靠、成本最低的路徑。", - "flowCaption": "請求會依序流經您的訂閱配額、按量計費的便宜提供者,再到免費層級提供者 — 全自動,無需設定。", - "afterSetup": "設定完成後。", + "subtitle": "OmniRoute將提供者組織為三層,因此路由首先優先選擇最可靠、成本最低的路徑。", + "flowCaption": "請求會先流經您的訂閱配額,然後是按token付費的廉價服務商,最後是免費層級服務商——自動運行,零設定。", + "afterSetup": "設定後。", "tier1": { "label": "優質客戶", - "description": "具有本機身份驗證流程和推理模型的一流 CLI。" + "description": "具有本機身份驗證流程和推理模型的一流CLI。" }, "tier2": { - "label": "成本最佳化", + "label": "成本優化", "description": "用於日常流量的廉價、高吞吐量提供者。" }, "tier3": { @@ -4713,74 +4713,74 @@ "configure": "設定提供者" }, "tierFlowDiagramAlt": "OmniRoute 3 層回退圖", - "apiKeyMgmt": "API金鑰管理" + "apiKeyMgmt": "API Key管理" }, "providers": { "title": "提供者", - "Account Deactivated": "帳戶已停用", + "Account Deactivated": "賬戶已停用", "allProviders": "所有提供者", - "audioProviders": "音訊提供者", + "audioProviders": "音頻提供者", "showFreeOnly": "僅顯示免費", "addProvider": "新增提供者", "addFirstProvider": "新增您的第一個提供者", - "addFirstProviderDesc": "連線 AI 提供者以開始通過 OmniRoute 路由請求。您可以使用免費提供者、API 金鑰或 OAuth 帳戶。", + "addFirstProviderDesc": "連接AI提供者以開始通過OmniRoute路由請求。您可以使用免費提供者、API Key或OAuth帳戶。", "learnMore": "瞭解更多", - "importFromFile": "從檔案匯入", - "importFromFileTitle": "從檔案匯入提供者", - "importFromFileDescription": "上傳列出多個提供者的 CSV 或 JSON 檔案(每行可以是不同的提供者類型)。在下方檢視解析後的行,並選取要匯入的項目。", + "importFromFile": "從檔案導入", + "importFromFileTitle": "從檔案導入服務商", + "importFromFileDescription": "上傳列有多個服務商的CSV或JSON檔案(每行可以是不同的服務商類型)。在下方預覽解析後的行,並選擇要導入的行。", "importFromFileChoose": "選擇檔案", - "importFromFileSelectHint": "已選取 {count}/{total} 個", - "importFromFileColProvider": "提供者", + "importFromFileSelectHint": "已選擇 {total} 中的 {count} 個", + "importFromFileColProvider": "服務商", "importFromFileColName": "名稱", - "importFromFileColBaseUrl": "基本 URL", + "importFromFileColBaseUrl": "Base URL", "importFromFileErrorLine": "第 {line} 行:{reason}", - "importErrorMissingProvider": "缺少提供者", + "importErrorMissingProvider": "缺少服務商", "importErrorMissingName": "缺少名稱", - "importErrorMissingApiKey": "缺少 API 金鑰", - "importErrorInvalidPriority": "無效的優先權(必須為 1-100)", + "importErrorMissingApiKey": "缺少API Key", + "importErrorInvalidPriority": "無效的優先級(必須為 1-100)", "importErrorMalformedRow": "格式錯誤的行", - "importErrorNotArray": "檔案必須包含 JSON 陣列", - "importFromFileImporting": "正在匯入…", - "importFromFileImport": "匯入 {count} 個提供者", - "importFromFileResult": "已匯入 {success} 個提供者({failed} 個失敗)", + "importErrorNotArray": "檔案必須包含JSON陣列", + "importFromFileImporting": "正在導入…", + "importFromFileImport": "導入 {count} 個服務商", + "importFromFileResult": "已導入 {success} 個服務商({failed} 個失敗)", "adaptaTutorial": { - "title": "如何連線 Adapta Web", - "introPrefix": "Adapta 透過 Clerk 進行驗證。該令牌", - "introSuffix": "是一個長效 JWT,可讓 OmniRoute 自動重新整理工作階段。", + "title": "如何連接Adapta Web", + "introPrefix": "Adapta通過Clerk身份驗證。該令牌", + "introSuffix": "是一個長效JWT,可讓OmniRoute自動刷新工作階段。", "or": "或", - "step1Title": "開啟 Adapta 聊天", - "step1DescPrefix": "開啟", - "step1DescSuffix": "並使用您的 Gold 或 Business 帳戶登入。", - "step2Title": "開啟 DevTools", + "step1Title": "打開Adapta聊天", + "step1DescPrefix": "打開", + "step1DescSuffix": "and sign in with your Gold or Business account.", + "step2Title": "打開開發者工具", "step2DescPrefix": "按下", - "step2DescSuffix": "以開啟開發人員工具。", - "step3Title": "前往 Application → Cookies", + "step2DescSuffix": "以打開開發者工具。", + "step3Title": "前往Application → Cookies", "step3DescPrefix": "在", "step3DescMiddle": "展開", "step3DescSuffix": "並點擊", - "step4Title": "複製以下項目的 Cookie 值:", - "step4DescPrefix": "尋找名為", - "step4DescMiddle": "在清單中。點擊它並從中複製內容", - "step4DescSuffix": "欄位。其開頭為", - "step5Title": "貼到此處並儲存", + "step4Title": "複製以下項的cookie值:", + "step4DescPrefix": "在列表中找到名為", + "step4DescMiddle": "的cookie。點擊它並複製來自", + "step4DescSuffix": "列的內容。它以", + "step5Title": "粘貼到此處並保存", "step5DescPrefix": "點擊", - "step5DescMiddle": "貼上", - "step5DescSuffix": "值貼到 API 金鑰欄位,然後儲存。OmniRoute 會自動重新整理工作階段。", + "step5DescMiddle": "粘貼", + "step5DescSuffix": "值到API Key欄位,然後保存。OmniRoute將自動刷新工作階段。", "tipLabel": "提示:", "tipPrefix": "該", - "tipSuffix": "Cookie 的有效期很長,通常為數個月。只有在您登出或 Adapta 使工作階段失效時才需要更新。" + "tipSuffix": "cookie是長期有效的,通常可持續數月。您只需在退出登入或Adapta使工作階段失效時更新它。" }, "editProvider": "編輯提供者", "deleteProvider": "刪除提供者", "noProviders": "沒有設定提供者", "modelAvailability": "模型可用性", - "accounts": "帳戶", - "newAccount": "新帳戶", + "accounts": "賬戶", + "newAccount": "新賬戶", "deleteConfirm": "您確定要刪除該提供者嗎?", "testing": "測試...", - "testConnection": "測試連線", - "testSuccess": "連線成功", - "testFailed": "連線失敗", + "testConnection": "測試連接", + "testSuccess": "連接成功", + "testFailed": "連接失敗", "available": "可用", "cooldown": "冷卻時間", "unavailable": "不可用", @@ -4790,22 +4790,22 @@ "chat": "聊天", "responses": "回應", "messages": "留言", - "oauthProviders": "OAuth 提供者", + "oauthProviders": "OAuth提供者", "freeProviders": "免費提供者", - "apiKeyProviders": "API 金鑰提供者", - "compatibleProviders": "API 金鑰相容提供者", + "apiKeyProviders": "API Key提供者", + "compatibleProviders": "API Key相容提供者", "testAll": "測試全部", "reorderByAvailability": "重新排序", - "reorderByAvailabilityTitle": "依可用性重新排序連線", - "reorderByAvailabilityError": "依可用性重新排序連線失敗", + "reorderByAvailabilityTitle": "按可用性重新排序連接", + "reorderByAvailabilityError": "按可用性重新排序連接失敗", "distributeProxies": "分配代理", "distributing": "分配中...", "selectedCount": "已選 {count} 個", - "accountsCount": "{count} 個帳戶", - "testAllOAuth": "測試所有 OAuth 連線", - "testAllFree": "測試所有免費連線", - "testAllApiKey": "測試所有 API 金鑰連線", - "testAllCompatible": "測試所有相容連線", + "accountsCount": "{count} 個賬戶", + "testAllOAuth": "測試所有OAuth連接", + "testAllFree": "測試所有免費連接", + "testAllApiKey": "測試所有API Key連接", + "testAllCompatible": "測試所有相容連接", "testAllModels": "測試所有模型", "testAllModelsConfirm": "測試所有可見模型?如果啟用了自動隱藏,失敗的模型將被隱藏。", "testingAllModels": "測試中 {done}/{total}...", @@ -4820,8 +4820,8 @@ "showHiddenOnly": "僅隱藏", "filterByVisibility": "按可見性篩選", "autoHideFailed": "自動隱藏失敗模型", - "autoHideFailedHint": "啟用後,測試全部會把非臨時失敗的模型從 /v1/models 等公共目錄中隱藏。單模型測試永遠不會自動隱藏。", - "connected": "{count} 已連線", + "autoHideFailedHint": "啟用後,測試全部會把非臨時失敗的模型從 /v1/models等公共目錄中隱藏。單模型測試永遠不會自動隱藏。", + "connected": "{count} 已連接", "errorCount": "{count} 錯誤 ({code})", "errorCountNoCode": "{count} 錯誤", "testAllCompleted": "已測試 {total} 個模型:{ok} 個通過,{failed} 個失敗", @@ -4831,7 +4831,7 @@ "filterHidden": "僅隱藏", "modelsHiddenCount": "已隱藏 {count} 個", "warningCount": "{count} 警告", - "noConnections": "無連線", + "noConnections": "無連接", "expiredBadge": "已過期", "expiringSoonBadge": "即將過期", "freeTier": "免費額度", @@ -4845,49 +4845,49 @@ "deprecatedProvider": "此提供者已棄用", "riskNotice": { "title": "繼續之前", - "tooltip": "該提供者有使用注意事項 —— 點選檢視詳情", - "oauth": "此提供者使用你官方產品的會話 / OAuth,這並未被授權用於代理或路由用途。 不建議進行高強度的自主代理使用(OpenCloud 風格、長鏈路多步流程、大批次請求)—— 上游可能因此限制甚至封禁帳號。 使用風險自負。", - "webCookie": "此提供者通過你的網頁會話 Cookie 進行鑑權。上游服務可能隨時讓會話失效,屆時你需要重新登入。不建議用於長時間無人值守的操作。 使用風險自負。", - "deprecated": "此提供者已被上游下線,可能隨時停止工作。已存在的連線可能在上游完全關閉訪問前繼續可用。建議考慮替代方案。", + "tooltip": "該提供者有使用注意事項——點擊查看詳情", + "oauth": "此提供者使用你官方產品的工作階段 / OAuth,這並未被授權用於代理或路由用途。不建議進行高強度的自主代理使用(OpenCloud風格、長鏈路多步流程、大批次請求)——上游可能因此限制甚至封禁賬號。使用風險自負。", + "webCookie": "此提供者通過你的網頁工作階段Cookie進行鑑權。上游服務可能隨時讓工作階段失效,屆時你需要重新登入。不建議用於長時間無人值守的操作。使用風險自負。", + "deprecated": "此提供者已被上游下線,可能隨時停止工作。已存在的連接可能在上游完全關閉訪問前繼續可用。建議考慮替代方案。", "dontShowAgain": "對此提供者不再顯示此提示", "understand": "我已瞭解,繼續", "cancel": "取消" }, - "disabled": "已停用", + "disabled": "已禁用", "enableProvider": "啟用提供者", - "disableProvider": "停用提供者", + "disableProvider": "禁用提供者", "testResults": "測試結果", "noCompatibleYet": "尚未新增相容的提供者", - "compatibleHint": "使用上面的按鈕新增 OpenAI 或 Anthropic 相容端點", - "addOpenAICompatible": "新增 OpenAI 相容", - "addAnthropicCompatible": "新增 Anthropic 相容端點", + "compatibleHint": "使用上面的按鈕新增OpenAI或Anthropic相容端點", + "addOpenAICompatible": "新增OpenAI相容", + "addAnthropicCompatible": "新增Anthropic相容端點", "addNewProvider": "新增新提供者", "backToProviders": "返回提供者", - "configureNewProvider": "設定新的 AI 提供者以與您的應用程式一起使用。", + "configureNewProvider": "設定新的AI提供者以與您的應用程式一起使用。", "providerLabel": "提供者", "selectProvider": "選擇提供者", "selectedProvider": "選定的提供者", "authMethod": "認證方式", - "apiKeyLabel": "API key", - "apiKeyRequired": "需要 API 金鑰", + "apiKeyLabel": "API Key", + "apiKeyRequired": "需要API Key", "selectProviderRequired": "請選擇提供者", - "enterApiKey": "輸入您的 API 金鑰", - "apiKeySecure": "您的 API 金鑰將被加密並安全儲存。", - "oauth2Connect": "使用 OAuth2 連線", + "enterApiKey": "輸入您的API Key", + "apiKeySecure": "您的API Key將被加密並安全存儲。", + "oauth2Connect": "使用OAuth2 連接", "oauth2Label": "OAuth2", - "oauth2Desc": "使用 OAuth2 身份驗證連線您的帳戶。", + "oauth2Desc": "使用OAuth2 身份驗證連接您的帳戶。", "displayName": "顯示名稱", - "displayNamePlaceholder": "例如,生產 API、開發環境", + "displayNamePlaceholder": "例如,生產API、開發環境", "displayNameHint": "可選。用於標識此設定的友好名稱。", "active": "活躍", "activeDescription": "啟用此提供者以在您的應用程式中使用", "cancel": "取消", - "createProvider": "建立提供者", - "failedCreate": "建立提供者失敗", + "createProvider": "創建提供者", + "failedCreate": "創建提供者失敗", "errorOccurred": "發生錯誤。請再試一次。", "modelStatus": "模型狀態", "showConfiguredOnly": "僅顯示已設定", - "allModelsOperational": "所有模型執行正常", + "allModelsOperational": "所有模型運行正常", "modelsWithIssues": "{count} 有問題的模型", "allModelsNormal": "所有模型當前回應正常。", "cooldownCleared": "{model} 的冷卻時間已清除", @@ -4897,7 +4897,7 @@ "clearing": "清算...", "until": "直到 {time}", "providerTestFailed": "提供者測試失敗", - "providerTestTimeout": "提供者測試超時,可能是同時測試的連線過多", + "providerTestTimeout": "提供者測試超時,可能是同時測試的連接過多", "modeTest": "{mode} 測試", "passedCount": "{count} 通過", "failedCount": "{count} 失敗", @@ -4905,98 +4905,98 @@ "millisecondsAbbr": "{value} 毫秒", "okShort": "好的", "errorShort": "錯誤", - "noActiveConnectionsInGroup": "未找到該組的活動連線。", + "noActiveConnectionsInGroup": "未找到該組的活動連接。", "allTestsPassed": "所有 {total} 測試均已通過", "testSummary": "{passed}/{total} 通過,{failed} 失敗", "nameLabel": "名稱", - "prefixLabel": "字首", - "baseUrlLabel": "基礎 URL", - "apiTypeLabel": "API 類型", - "prefixHint": "必填。模型名稱使用的唯一字首。", + "prefixLabel": "前綴", + "baseUrlLabel": "基礎URL", + "apiTypeLabel": "API類型", + "prefixHint": "必填。模型名稱使用的唯一前綴。", "nameHint": "必填。該節點的友好標籤。", - "baseUrlHint": "必填。 提供者 API 基本 URL。", - "iconUrlLabel": "圖示網址", - "iconUrlHint": "選用。顯示為此提供者圖示的圖片網址。", + "baseUrlHint": "必填。提供者API基本URL。", + "iconUrlLabel": "圖標URL", + "iconUrlHint": "可選。顯示為此服務商圖標的圖片URL。", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", "openaiBaseUrlPlaceholder": "https://api.openai.com/v1", - "validateConnection": "驗證連線", + "validateConnection": "驗證連接", "validating": "正在驗證...", - "connectionValid": "連線有效!", - "connectionFailed": "連線失敗。檢查 URL 和金鑰。", - "testKeyLabel": "測試 API 金鑰", + "connectionValid": "連接有效!", + "connectionFailed": "連接失敗。檢查URL和金鑰。", + "testKeyLabel": "測試API Key", "testKeyPlaceholder": "sk-...(僅用於驗證)", "providerNotFound": "未找到提供者", - "deleteConnectionConfirm": "刪除這個連線嗎?", - "deleteConnectionConfirmNamed": "確定要刪除{name}嗎?此操作無法復原。", + "deleteConnectionConfirm": "刪除這個連接嗎?", + "deleteConnectionConfirmNamed": "確定要刪除{name}嗎?此操作無法撤銷。", "batchDeleteSelected": "刪除選中({count})", - "batchDeleteConfirm": "刪除 {count} 個連線?此操作無法撤銷。", - "batchDeleteSuccess": "已刪除 {count} 個連線", + "batchDeleteConfirm": "刪除 {count} 個連接?此操作無法撤銷。", + "batchDeleteSuccess": "已刪除 {count} 個連接", "batchActivateSelected": "批次啟用", "batchDeactivateSelected": "批次停用", "batchRetestSelected": "批次測試", - "batchActivateSuccess": "已啟用 {count} 個連線", - "batchDeactivateSuccess": "已停用 {count} 個連線", - "batchUpdatePartial": "{count} 個已更新,{skipped} 個已跳過(不再存在)", - "batchUpdateNone": "沒有連線被更新(可能已不再存在)", - "batchRetestLimit": "一次最多重新測試 {max} 條連線", - "noConnectionsToTest": "沒有符合條件的連線可測試", - "batchDeleteConfirmTitle": "刪除連線", + "batchActivateSuccess": "已啟用 {count} 個連接", + "batchDeactivateSuccess": "已停用 {count} 個連接", + "batchUpdatePartial": "已更新 {count} 個,已跳過 {skipped} 個(不再存在)", + "batchUpdateNone": "未更新任何連接(它們可能已不再存在)", + "batchRetestLimit": "一次最多重新測試 {max} 個連接", + "noConnectionsToTest": "沒有匹配的連接可供測試", + "batchDeleteConfirmTitle": "刪除連接", "batchDeleteConfirmButton": "刪除", "filterActive": "健康", "filterError": "錯誤", "filterBanned": "封禁", "filterCreditsExhausted": "額度耗盡", - "accountSearchPlaceholder": "Search accounts…", - "noFilteredConnections": "沒有符合當前篩選條件的連線。", + "accountSearchPlaceholder": "搜尋賬戶…", + "noFilteredConnections": "沒有符合當前篩選條件的連接。", "failedSetAlias": "設定別名失敗", "setAliasSuccess": "別名 {alias} 已設定", "deleteAliasSuccess": "別名 {alias} 已刪除", - "failedSaveConnection": "儲存連線失敗", - "failedSaveConnectionRetry": "無法儲存連線。請再試一次。", - "failedRetestConnection": "重新測試連線失敗", + "failedSaveConnection": "保存連接失敗", + "failedSaveConnectionRetry": "無法保存連接。請再試一次。", + "failedRetestConnection": "重新測試連接失敗", "deleteCompatibleNodeConfirm": "刪除此 {type} 相容節點?", - "anthropicCompatibleDetails": "Anthropic 相容詳情", - "openaiCompatibleDetails": "OpenAI 相容詳情", + "anthropicCompatibleDetails": "Anthropic相容詳情", + "openaiCompatibleDetails": "OpenAI相容詳情", "messagesApi": "Messages API", "responsesApi": "Responses API", "embeddings": "嵌入", - "audioTranscriptions": "音訊轉寫", + "audioTranscriptions": "音頻轉寫", "audioSpeech": "語音合成", - "imagesGenerations": "影像生成", + "imagesGenerations": "圖像生成", "chatCompletions": "聊天完成", - "importingModels": "正在匯入...", - "importFromModels": "從 /models 匯入", - "modelsImported": "已匯入 {count} 個模型", - "allModelsAlreadyImported": "所有模型已匯入", - "noNewModelsToImport": "沒有新模型可匯入 — 所有模型已在登錄檔或自定義模型列表中", + "importingModels": "正在導入...", + "importFromModels": "從 /models導入", + "modelsImported": "已導入 {count} 個模型", + "allModelsAlreadyImported": "所有模型已導入", + "noNewModelsToImport": "沒有新模型可導入—所有模型已在註冊表或自定義模型列表中", "skippingExistingModels": "跳過 {count} 個已有模型", "autoSync": "自動同步", "autoSyncShort": "同步", - "autoSyncTooltip": "每 24 小時自動重新整理模型列表(可通過 MODEL_SYNC_INTERVAL_HOURS 設定)", - "autoSyncEnabled": "自動同步已啟用 — 模型將定期重新整理", - "autoSyncDisabled": "自動同步已停用", + "autoSyncTooltip": "每 24 小時自動刷新模型列表(可通過MODEL_SYNC_INTERVAL_HOURS設定)", + "autoSyncEnabled": "自動同步已啟用—模型將定期刷新", + "autoSyncDisabled": "自動同步已禁用", "autoSyncToggleFailed": "切換自動同步失敗", "autoSyncPartialFailure": "已為部分連線更新自動同步,但並非全部", "clearAllModels": "清除所有模型", "clearAllModelsConfirm": "您確定要刪除此提供者的所有模型嗎?", "clearAllModelsSuccess": "所有模型已清除", "clearAllModelsFailed": "清除模型失敗", - "addConnectionToImport": "新增連線以啟用匯入。", + "addConnectionToImport": "新增連接以啟用導入。", "noModelsConfigured": "尚未設定模型", - "connectionCount": "{count} 連線", + "connectionCount": "{count} 連接", "fetchingModels": "正在獲取可用模型...", "failedFetchModels": "獲取模型失敗", - "noFreeModelsFound": "此提供者未找到免費模型 — 未匯入任何內容。", + "noFreeModelsFound": "未找到該服務商的免費模型—未導入任何內容。", "fetchModelsSuccess": "找到 {count} 個新模型", "fetchModelsFailed": "無法自動獲取模型(可從設定中重試)", "noModelsFound": "未找到模型", - "importFailed": "匯入失敗", + "importFailed": "導入失敗", "noNewModelsAdded": "沒有新增新模型。", "adding": "新增...", "close": "關閉", - "importingModelsTitle": "匯入模型", + "importingModelsTitle": "導入模型", "copyModel": "複製模型", "filterModels": "篩選模型…", "testAllRateLimited": "達到速率限制,已提前停止", @@ -5010,44 +5010,44 @@ "rateLimitProtected": "受保護", "rateLimitUnprotected": "無保護", "providerQuotaShort": "配額", - "hideConnectionFromProviderQuota": "在提供者配額中隱藏此帳號", - "showConnectionInProviderQuota": "在提供者配額中顯示此帳號", - "quotaVisibilityUpdateFailed": "更新提供者配額可見性失敗", + "hideConnectionFromProviderQuota": "在服務商配額中隱藏此賬戶", + "showConnectionInProviderQuota": "在服務商配額中顯示此賬戶", + "quotaVisibilityUpdateFailed": "無法更新服務商配額可見性", "enableRateLimitProtection": "單擊啟用速率限制保護", - "disableRateLimitProtection": "單擊以停用速率限制保護", + "disableRateLimitProtection": "單擊以禁用速率限制保護", "testAllProgress": "已測試 {done}/{total}", "testAllFailedHidden": "已隱藏 {count} 個失敗模型", "testAllDone": "所有模型已測試", "productionKey": "生產金鑰", - "enterNewApiKey": "輸入新的 API 金鑰", - "codexApplyModalTitle": "適用於當地法典", + "enterNewApiKey": "輸入新的API Key", + "codexApplyModalTitle": "適用於本地 Codex", "codexApplyTargetLabel": "目標路徑", "codexApplyBackupLabel": "備份", - "codexApplyWarning": "這將替換現有的 auth.json。繼續?", - "codexApplyConfirmCheckbox": "我確認我想替換現有的 auth.json", + "codexApplyWarning": "這將替換現有的auth.json。繼續?", + "codexApplyConfirmCheckbox": "我確認我想替換現有的auth.json", "codexApply": "申請", "bulkTabSingle": "單個", "bulkTabBulkAdd": "批次新增", - "bulkAddFormatHint": "每行一個金鑰。格式:名稱|API金鑰 或僅 API金鑰(按序號自動命名)。", - "bulkValidateKeys": "儲存前驗證每個金鑰(較慢)", + "bulkAddFormatHint": "每行一個金鑰。格式:名稱|API Key或僅API Key(按序號自動命名)。", + "bulkValidateKeys": "保存前驗證每個金鑰(較慢)", "bulkAddAllKeys": "新增所有金鑰", "bulkAddedCount": "{count, plural, other {已新增 # 個金鑰}}", "bulkFailedCount": "{count, plural, other {# 個失敗}}", "optional": "可選", - "anthropicCompatibleName": "Anthropic 相容", - "openaiCompatibleName": "OpenAI 相容", + "anthropicCompatibleName": "Anthropic相容", + "openaiCompatibleName": "OpenAI相容", "compatibleDefaultModelLabel": "預設模型", - "compatibleDefaultModelHint": "請按照相容端點所期望的格式輸入模型 ID。此模型將儲存為連線預設值。", - "failedImportModels": "匯入模型失敗", - "noModelsReturnedFromEndpoint": "/models 端點沒有返回任何模型。", - "importingModelsProgress": "正在匯入 {current} 個模型(共 {total} 個)...", - "foundModelsStartingImport": "找到 {count} 模型。開始匯入...", - "importingModelById": "正在匯入 {modelId}...", - "importSuccessCount": "成功匯入 {count, plural, one {# 個模型} other {# 個模型}}!", + "compatibleDefaultModelHint": "輸入與您的相容端點所預期完全一致的模型ID。此模型將被保存為連接預設值。", + "failedImportModels": "導入模型失敗", + "noModelsReturnedFromEndpoint": "/models端點沒有返回任何模型。", + "importingModelsProgress": "正在導入 {current} 個模型(共 {total} 個)...", + "foundModelsStartingImport": "找到 {count} 模型。開始導入...", + "importingModelById": "正在導入 {modelId}...", + "importSuccessCount": "成功導入 {count, plural, one {# 個模型} other {# 個模型}}!", "noNewModelsAddedExisting": "沒有新增新模型(全部已存在)。", - "importDoneCount": "✓ 完成!{count, plural, one {已匯入 # 個模型。} other {已匯入 # 個模型。}}", + "importDoneCount": "✓ 完成!{count, plural, one {已導入 # 個模型。} other {已導入 # 個模型。}}", "unexpectedErrorOccurred": "發生意外錯誤", - "connectionCountLabel": "{count, plural, one {# 個連線} other {# 個連線}}", + "connectionCountLabel": "{count, plural, one {# 個連接} other {# 個連接}}", "messagesPath": "messages", "responsesPath": "responses", "chatCompletionsPath": "chat/completions", @@ -5056,27 +5056,27 @@ "delete": "刪除", "anthropic": "Anthropic", "openai": "OpenAI", - "singleConnectionPerCompatible": "每個相容節點僅允許一個連線。如果需要更多連線,請新增另一個節點。", - "connections": "連線", + "singleConnectionPerCompatible": "每個相容節點僅允許一個連接。如果需要更多連接,請新增另一個節點。", + "connections": "連接", "providerProxyTitleConfigured": "提供者代理:{host}", "configured": "已設定", - "providerProxyConfigureHint": "為該提供者的所有連線設定代理", + "providerProxyConfigureHint": "為該提供者的所有連接設定代理", "providerProxy": "提供者代理", "repairEnv": "修復 .env", "repairEnvWorking": "修復中...", - "repairEnvHint": "將缺失的 OAuth 預設值補充到 .env 中,不會覆蓋現有值。", - "repairEnvSuccess": "OAuth 預設值已恢復", - "repairEnvFailed": "修復 .env 失敗", - "noConnectionsYet": "還沒有連線", - "addFirstConnectionHint": "新增您的第一個連線以開始使用", - "addConnection": "新增連線", + "repairEnvHint": "將缺失的OAuth預設值補充到 .env中,不會覆蓋現有值。", + "repairEnvSuccess": "OAuth預設值已恢復", + "repairEnvFailed": "修復 .env失敗", + "noConnectionsYet": "還沒有連接", + "addFirstConnectionHint": "新增您的第一個連接以開始使用", + "addConnection": "新增連接", "availableModels": "可用模型", - "builtInModels": "內建模型", - "builtInModelsHint": "該提供者的登錄檔模型。點選鉛筆可設定相容選項。", - "pageAutoRefresh": "頁面會自動重新整理...", - "statusDisabled": "已停用", - "statusConnected": "已連線", - "statusRuntimeIssue": "執行時問題", + "builtInModels": "內置模型", + "builtInModelsHint": "該提供者的註冊表模型。點擊鉛筆可設定相容選項。", + "pageAutoRefresh": "頁面會自動刷新...", + "statusDisabled": "已禁用", + "statusConnected": "已連接", + "statusRuntimeIssue": "運行時問題", "statusAuthFailed": "驗證失敗", "statusRateLimited": "被限流", "statusNetworkIssue": "網路問題", @@ -5084,12 +5084,12 @@ "statusUnavailable": "不可用", "statusFailed": "失敗", "statusError": "錯誤", - "oauthAccount": "OAuth 帳戶", - "errorTypeRuntime": "本地執行時", + "oauthAccount": "OAuth帳戶", + "errorTypeRuntime": "本地運行時", "errorTypeUpstreamAuth": "上游授權", "errorTypeMissingCredential": "缺少憑證", - "errorTypeRefreshFailed": "重新整理失敗", - "errorTypeTokenExpired": "權杖已過期", + "errorTypeRefreshFailed": "刷新失敗", + "errorTypeTokenExpired": "令牌已過期", "errorTypeRateLimited": "速率有限", "errorTypeUpstreamUnavailable": "上游不可用", "errorTypeNetworkError": "網路錯誤", @@ -5097,890 +5097,890 @@ "errorTypeUpstreamError": "上游錯誤", "errorTypeCreditsExhausted": "額度已用完", "errorTypeBanned": "403 禁止訪問", - "proxySourceGlobal": "全域性", + "proxySourceGlobal": "全域", "proxySourceProvider": "提供者", "proxySourceKey": "金鑰", "proxyConfiguredBySource": "代理 ({source}):{host}", "proxyOn": "代理開啟", "proxyOff": "代理關閉", - "proxyEnabledTitle": "此連線已啟用代理", - "proxyDisabledTitle": "此連線已停用代理", + "proxyEnabledTitle": "此連接已啟用代理", + "proxyDisabledTitle": "此連接已禁用代理", "perKeyProxyOn": "按金鑰", - "perKeyProxyOff": "連線", + "perKeyProxyOff": "連接", "perKeyProxyEnabledTitle": "已為此提供者啟用按金鑰代理分配", - "perKeyProxyDisabledTitle": "已為此提供者停用按金鑰代理分配", + "perKeyProxyDisabledTitle": "已為此提供者禁用按金鑰代理分配", "autoPriority": "自動:{priority}", "proxy": "代理", "retestAuthentication": "重新驗證身份", "retest": "重新測試", - "disableConnection": "停用連線", - "enableConnection": "啟用連線", - "reauthenticateConnection": "重新驗證此連線", + "disableConnection": "禁用連接", + "enableConnection": "啟用連接", + "reauthenticateConnection": "重新驗證此連接", "proxyConfig": "代理設定", "aliasExistsAlert": "別名“{alias}”已存在。請使用不同的模型或編輯現有別名。", "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", + "clickToSetAlias": "點擊設定別名", "clickToEditAlias": "Alias: {alias} (click to edit)", - "openRouterAnyModelHint": "OpenRouter 支援任意模型。新增模型並建立別名後即可快速訪問。", - "modelIdFromOpenRouter": "模型 ID(來自 OpenRouter)", + "openRouterAnyModelHint": "OpenRouter支援任意模型。新增模型並創建別名後即可快速訪問。", + "modelIdFromOpenRouter": "模型ID(來自OpenRouter)", "openRouterModelPlaceholder": "anthropic/claude-3-opus", "customModels": "自定義模型", - "customModelsHint": "新增預設列表中沒有的模型 ID,這些模型也能參與路由。", - "normalizeToolCallIdLabel": "將工具呼叫 ID 規範為 9 位(如 Mistral)", - "preserveDeveloperRoleLabel": "保留 Responses 的 developer 角色(不對映為 system)", + "customModelsHint": "新增預設列表中沒有的模型ID,這些模型也能參與路由。", + "normalizeToolCallIdLabel": "將工具呼叫ID規範為 9 位(如Mistral)", + "preserveDeveloperRoleLabel": "保留Responses的developer角色(不映射為system)", "compatAdjustmentsTitle": "相容性", "compatButtonLabel": "相容性", - "compatToolIdShort": "工具 ID 9 位", - "compatDeveloperShort": "developer 角色", - "compatDoNotPreserveDeveloper": "不保留 developer 角色", + "compatToolIdShort": "工具ID 9 位", + "compatDeveloperShort": "developer角色", + "compatDoNotPreserveDeveloper": "不保留developer角色", "compatBadgeNoPreserve": "不保留", "compatProtocolLabel": "客戶端請求協議", - "compatProtocolHint": "以下選項在 OmniRoute 識別到該請求形態(OpenAI Chat、Responses API 或 Anthropic Messages)時生效。", + "compatProtocolHint": "以下選項在OmniRoute識別到該請求形態(OpenAI Chat、Responses API或Anthropic Messages)時生效。", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", "targetFormatLabel": "目標格式", - "targetFormatHint": "覆寫上游線路格式。使用「Anthropic Messages」將 OpenAI 相容的提供者(例如 opencode-go)路由到 /v1/messages 端點。", - "targetFormatAuto": "預設(自動)", + "targetFormatHint": "覆蓋上游傳輸格式。使用 'Anthropic Messages' 以通過 /v1/messages端點路由相容OpenAI的服務商(例如opencode-go)。", + "targetFormatAuto": "預設 (自動)", "targetFormatGemini": "Gemini", "targetFormatAntigravity": "Antigravity", - "contextWindowOverrideLabel": "上下文視窗覆寫", + "contextWindowOverrideLabel": "上下文窗口覆蓋", "contextWindowOverridePlaceholder": "例如 131072", - "contextWindowOverrideHint": "當提供者回報不正確時,手動設定此模型的實際上下文視窗(token)。此設定優先於自動偵測/目錄值,並可防止組合路由丟棄該模型。", - "contextWindowOverrideInvalid": "上下文視窗覆寫值必須為正整數 token 數", + "contextWindowOverrideHint": "當提供者誤報時,手動設定此模型的實際上下文窗口(token)。此設定優先於自動檢測/目錄值,並防止組合路由丟棄該模型。", + "contextWindowOverrideInvalid": "上下文窗口覆蓋值必須是正整數token數", "visionCapableLabel": "支援視覺", - "visionCapableHint": "當提供者的探索中繼資料未回報圖片輸入模式時(常見於自託管/本地後端),手動將此模型標記為具備視覺能力。", + "visionCapableHint": "當提供者的發現元資料未報告圖像輸入模態時(常見於自託管/本地後端),手動將此模型標記為支援視覺。", "compatParamFiltersLabel": "參數過濾器", - "compatBlockedParamsHint": "封鎖的參數(從請求中移除)", - "compatAllowedParamsHint": "允許的參數(拒絕後重新加入)", + "compatBlockedParamsHint": "已屏蔽的參數(從請求中移除)", + "compatAllowedParamsHint": "允許的參數(在拒絕後重新新增)", "paramFiltersSectionTitle": "參數過濾器", - "paramFiltersSectionHint": "在發送至此提供者前移除或重新加入請求參數。用於避免因提供者拒絕特定參數而產生的 400 錯誤(例如 NVIDIA NIM 拒絕 thinking)。", - "paramFiltersBlockedLabel": "被封鎖的參數", - "paramFiltersBlockedHint": "這些參數會從對外請求中移除(拒絕清單)。", + "paramFiltersSectionHint": "在發送給此提供者之前剝離或重新新增請求參數。用於避免因提供者拒絕某些參數而導致的 400 錯誤(例如NVIDIA NIM拒絕 thinking)。", + "paramFiltersBlockedLabel": "已屏蔽的參數", + "paramFiltersBlockedHint": "這些參數將從發送的請求中剝離(黑名單)。", "paramFiltersAllowedLabel": "允許的參數", - "paramFiltersAllowedHint": "這些參數會在從拒絕清單中移除後被重新加入(僅限用戶端有發送的情況)。", - "paramFiltersAutoLearnLabel": "從 400 錯誤自動學習", - "paramFiltersAutoLearnHint": "啟用後,若上游回傳 400 錯誤並顯示「不支援的參數:X」,該參數將自動加入封鎖清單並重新發送請求。", - "paramFiltersSaving": "正在儲存…", - "paramFiltersSaveChanges": "儲存變更", - "paramFiltersResetToDefault": "重設為預設值", + "paramFiltersAllowedHint": "這些參數將在黑名單剝離後重新新增(僅當客戶端發送了它們時)。", + "paramFiltersAutoLearnLabel": "從 400 錯誤中自動學習", + "paramFiltersAutoLearnHint": "啟用後,如果上游返回 400 錯誤並提示 \"Unsupported parameter: X\",該參數將自動新增到屏蔽列表中,並重試請求。", + "paramFiltersSaving": "正在保存…", + "paramFiltersSaveChanges": "保存更改", + "paramFiltersResetToDefault": "重置為預設值", "paramFiltersLoadError": "載入參數過濾器設定失敗:{error}", - "paramFiltersSaveSuccess": "參數過濾器設定已儲存", - "paramFiltersSaveError": "儲存參數過濾器設定失敗:{error}", - "paramFiltersResetSuccess": "參數過濾器設定已重設為預設值", - "paramFiltersResetError": "重設參數過濾器設定失敗:{error}", - "interceptionSectionTitle": "Web 工具攔截", - "interceptionSectionHint": "將此提供者的原生 web_search / web_fetch 工具呼叫透過 OmniRoute 自己的搜尋和擷取端點路由,而非讓提供者原生執行。預設為關閉 — 現有行為保持不變。", - "interceptSearchLabel": "攔截 web_search", - "interceptSearchHint": "將原生的 web_search 工具呼叫重新導向至 OmniRoute 的 /v1/search。", - "interceptFetchLabel": "攔截 web_fetch", - "interceptFetchHint": "將原生的 web_fetch 工具呼叫重新導向至 OmniRoute 的 /v1/web/fetch。", + "paramFiltersSaveSuccess": "參數過濾器設定已保存", + "paramFiltersSaveError": "保存參數過濾器設定失敗:{error}", + "paramFiltersResetSuccess": "參數過濾器設定已重置為預設值", + "paramFiltersResetError": "重置參數過濾器設定失敗:{error}", + "interceptionSectionTitle": "網頁工具攔截", + "interceptionSectionHint": "將此提供者的原生web_search / web_fetch工具呼叫路由到OmniRoute自身的搜尋和獲取端點,而不是讓提供者原生運行它們。預設關閉—現有行為保持不變。", + "interceptSearchLabel": "攔截web_search", + "interceptSearchHint": "將原生的web_search工具呼叫重寫為OmniRoute的 /v1/search。", + "interceptFetchLabel": "攔截web_fetch", + "interceptFetchHint": "將原生的web_fetch工具呼叫重寫為OmniRoute的 /v1/web/fetch。", "interceptionLoadError": "載入攔截設定失敗:{error}", - "interceptionSaveError": "儲存攔截設定失敗:{error}", - "compatUpstreamHeadersLabel": "上游額外請求頭", - "compatUpstreamHeadersHint": "與修改廠商連線/API 設定同屬高許可權能力,僅可信管理員應使用。這些頭會在 OmniRoute 按廠商 API Key 自動加好鑑權頭之後再合併。若「名稱」與系統已加的頭相同(例如都叫 Authorization),則以你填的值為準,會整段替換自動那條(含 Bearer 權杖),上游請求裡不再使用面板裡儲存的金鑰來生成 Authorization。填錯可能導致 401,請謹慎。每個請求頭單獨一行;部分閘道器需要額外 Authentication 等可在此加。滑鼠移入或聚焦「值」可暫時看明文。點空白處、關閉本面板或切走焦點即儲存。", - "compatUpstreamHeaderName": "請求頭名稱", + "interceptionSaveError": "保存攔截設定失敗:{error}", + "compatUpstreamHeadersLabel": "上游額外請求標頭", + "compatUpstreamHeadersHint": "與修改廠商連接/API設定同屬高權限能力,僅可信管理員應使用。這些頭會在OmniRoute按廠商API Key自動加好鑑權頭之後再合併。若「名稱」與系統已加的頭相同(例如都叫Authorization),則以你填的值為準,會整段替換自動那條(含Bearer令牌),上游請求裡不再使用面板裡保存的金鑰來生成Authorization。填錯可能導致 401,請謹慎。每個請求標頭單獨一行;部分網關需要額外Authentication等可在此加。滑鼠移入或聚焦「值」可暫時看明文。點空白處、關閉本面板或切走焦點即保存。", + "compatUpstreamHeaderName": "請求標頭名稱", "compatUpstreamHeaderValue": "值", - "compatUpstreamAddRow": "新增請求頭", + "compatUpstreamAddRow": "新增請求標頭", "compatUpstreamRemoveRow": "刪除此行", - "compatBadgeUpstreamHeaders": "請求頭", + "compatBadgeUpstreamHeaders": "請求標頭", "perModelQuotaLabel": "按模型配額", - "perModelQuotaDescription": "啟用後,429/404 錯誤只會鎖定特定 Model,而不是整個連線。適用於具有按 Model 速率限制的 Provider(例如 ModelScope)。", - "importFreeModelsOnlyLabel": "僅匯入免費模型", - "importFreeModelsOnlyHint": "啟用後,僅匯入此提供者的免費模型。付費模型將被跳過。", + "perModelQuotaDescription": "啟用後,429/404 錯誤只會鎖定特定Model,而不是整個連接。適用於具有按Model速率限制的提供者(例如ModelScope)。", + "importFreeModelsOnlyLabel": "僅導入免費模型", + "importFreeModelsOnlyHint": "啟用後,僅導入此提供者的免費模型。付費模型將被跳過。", "perModelQuotaToggle": "按模型配額開關", - "modelId": "模型 ID", + "modelId": "模型ID", "customModelPlaceholder": "例如:gpt-4.5-turbo", "loading": "正在載入...", "removeCustomModel": "刪除自定義模型", "noCustomModels": "尚未新增自定義模型。", "allSuggestedAliasesExist": "所有建議別名都已存在。請選擇其他模型,或刪除衝突的別名。", - "failedSaveCustomModel": "儲存自定義模型失敗", + "failedSaveCustomModel": "保存自定義模型失敗", "modelAddedSuccess": "模型 {modelId} 新增成功", "failedAddModelTryAgain": "新增模型失敗,請重試。", - "failedSaveImportedModel": "無法將匯入的模型儲存到自定義資料庫", - "failedImportModelsTryAgain": "匯入模型失敗。請再試一次。", + "failedSaveImportedModel": "無法將導入的模型保存到自定義資料庫", + "failedImportModelsTryAgain": "導入模型失敗。請再試一次。", "failedRemoveModelFromDatabase": "無法從資料庫中刪除模型", "modelRemovedSuccess": "模型刪除成功", "failedDeleteModelTryAgain": "刪除模型失敗。請再試一次。", - "compatibleModelsDescription": "可手動新增 {type} 相容模型,或從 `/models` 端點匯入。", + "compatibleModelsDescription": "可手動新增 {type} 相容模型,或從 `/models` 端點導入。", "anthropicCompatibleModelPlaceholder": "claude-3-opus-20240229", "openaiCompatibleModelPlaceholder": "gpt-4o", - "apiKeyValidationFailed": "API 金鑰驗證失敗。請檢查您的金鑰並重試。", - "addProviderApiKeyTitle": "新增 {provider} API 金鑰", + "apiKeyValidationFailed": "API Key驗證失敗。請檢查您的金鑰並重試。", + "addProviderApiKeyTitle": "新增 {provider} API Key", "checking": "正在檢查...", "check": "檢查", "valid": "有效", "invalid": "無效", "creating": "創造...", - "validationChecksAnthropicCompatible": "驗證會通過檢查 API 金鑰來確認 {provider} 是否可用。", - "validationChecksOpenAiCompatible": "驗證會通過你填寫的 Base URL 上的 `/models` 介面來檢查 {provider}。", - "priorityLabel": "優先順序", - "saving": "正在儲存...", - "save": "儲存", - "editConnection": "編輯連線", - "accountName": "帳戶名稱", + "validationChecksAnthropicCompatible": "驗證會通過檢查API Key來確認 {provider} 是否可用。", + "validationChecksOpenAiCompatible": "驗證會通過你填寫的Base URL上的 `/models` 接口來檢查 {provider}。", + "priorityLabel": "優先級", + "saving": "正在保存...", + "save": "保存", + "editConnection": "編輯連接", + "accountName": "賬戶名稱", "email": "電子郵件", "healthCheckMinutes": "健康檢查(分鐘)", - "healthCheckHint": "主動權杖重新整理間隔。 0 = 停用。", + "healthCheckHint": "主動令牌刷新間隔。 0 = 禁用。", "deselectAllModels": "取消全選", "modelsActiveCount": "{active}/{total} 已啟用", "noModelsMatch": "沒有匹配 \"{filter}\" 的模型", "groupLabel": "環境", "groupPlaceholder": "例如:eKaizen、Personal", - "failedTestConnection": "測試連線失敗", + "failedTestConnection": "測試連接失敗", "failed": "失敗", - "leaveBlankKeepCurrentApiKey": "留空以保留當前的 API 金鑰。", + "leaveBlankKeepCurrentApiKey": "留空以保留當前的API Key。", "editCompatibleTitle": "編輯 {type} 相容", - "compatibleBaseUrlHint": "{type} 相容 API 的根 URL。若端點路徑是自定義的,請在高階設定中設定。", - "apiKeyForCheck": "API 金鑰(用於檢查)", - "testModelIdLabel": "模型 ID(選用)", - "testModelIdPlaceholder": "例如:my-model-id", - "testModelIdHint": "如果提供者缺少 /models 端點,請輸入模型 ID 以透過 /chat/completions 驗證。", + "compatibleBaseUrlHint": "{type} 相容API的根URL。若端點路徑是自定義的,請在高級設定中設定。", + "apiKeyForCheck": "API Key(用於檢查)", + "testModelIdLabel": "模型ID(可選)", + "testModelIdPlaceholder": "例如my-model-id", + "testModelIdHint": "如果提供者缺少 /models端點,請輸入模型ID以改用 /chat/completions驗證。", "compatibleProdPlaceholder": "{type} 相容(產品)", - "tokenRefreshed": "Token 重新整理成功", - "tokenRefreshFailed": "Token 重新整理失敗", + "tokenRefreshed": "Token刷新成功", + "tokenRefreshFailed": "Token刷新失敗", "applyCodexAuthLocal": "應用認證", - "exportCodexAuthFile": "匯出認證", + "exportCodexAuthFile": "導出認證", "applyClaudeAuthLocal": "申請授權", - "exportClaudeAuthFile": "匯出授權", - "importClaudeAuth": "匯入授權", - "claudeApplyModalTitle": "適用於當地克勞德程式碼", + "exportClaudeAuthFile": "導出授權", + "importClaudeAuth": "導入授權", + "claudeApplyModalTitle": "適用於當地Claude Code", "claudeApplyTargetLabel": "目標路徑", "claudeApplyBackupLabel": "備份", - "claudeApplyMcpHint": "現有的 MCP OAuth 狀態將被保留。", - "claudeApplyWarning": "這將取代現有的 claudeAiOauth 部分。繼續?", - "claudeApplyConfirmCheckbox": "我確認我想替換現有的 claudeAiOauth 部分", + "claudeApplyMcpHint": "現有的MCP OAuth狀態將被保留。", + "claudeApplyWarning": "這將取代現有的Claude OAuth部分。繼續?", + "claudeApplyConfirmCheckbox": "我確認我想替換現有的Claude OAuth部分", "claudeApply": "申請", - "claudeAuthAppliedLocal": "克勞德授權在本地應用", + "claudeAuthAppliedLocal": "Claude授權在本地應用", "claudeAuthApplyFailed": "本地申請Claude auth失敗", - "claudeAuthExported": "克勞德授權檔案匯出", - "claudeAuthExportFailed": "無法匯出 Claude 身份驗證檔案", - "claudeImportModalTitle": "匯入克勞德·奧特", + "claudeAuthExported": "Claude授權檔案導出", + "claudeAuthExportFailed": "無法導出Claude身份驗證檔案", + "claudeImportModalTitle": "導入Claude OAuth", "claudeImportTabSingle": "單人", "claudeImportTabBulk": "散裝", "claudeImportTabUpload": "上傳檔案", - "claudeImportTabPaste": "貼上 JSON", + "claudeImportTabPaste": "粘貼JSON", "claudeImportFileLabel": "選擇.credentials.json", - "claudeImportPasteLabel": "貼上 JSON 內容", - "claudeImportEmailLabel": "帳戶郵箱", - "claudeImportNameLabel": "連線名稱(可選)", - "claudeImportOverwriteLabel": "如果帳戶已存在,則替換現有連線", + "claudeImportPasteLabel": "粘貼JSON內容", + "claudeImportEmailLabel": "賬戶郵箱", + "claudeImportNameLabel": "連接名稱(可選)", + "claudeImportOverwriteLabel": "如果帳戶已存在,則替換現有連接", "claudeImportSubmit": "進口", - "claudeImportSuccess": "克勞德連線匯入成功", - "claudeImportInvalidJson": "無法將檔案解析為 JSON", + "claudeImportSuccess": "Claude連接導入成功", + "claudeImportInvalidJson": "無法將檔案解析為JSON", "claudeImportInvalidShape": "該檔案不是有效的 .credentials.json", "claudeImportDuplicate": "帳戶已存在 - 啟用“替換現有”以覆蓋", - "claudeImportIdentityUnverified": "Bootstrap 無法驗證該帳戶。啟用“替換現有”或提供電子郵件。", - "claudeImportFailed": "匯入克勞德授權失敗", + "claudeImportIdentityUnverified": "Bootstrap無法驗證該帳戶。啟用“替換現有”或提供電子郵件。", + "claudeImportFailed": "導入Claude授權失敗", "claudeImportBulkModeUpload": "上傳檔案", - "claudeImportBulkModePaste": "貼上 JSON 陣列", + "claudeImportBulkModePaste": "粘貼JSON陣列", "claudeImportBulkModeZip": "上傳ZIP", - "claudeImportBulkUploadHint": "拖放或拾取最多 50 個 .credentials.json 檔案(每個 256KB,總共 10MB)。", - "claudeImportBulkPasteHint": "貼上物件陣列:[{ json, name?, email? }...]", - "claudeImportBulkZipHint": "包含 .json 條目的 ZIP。最多 50 個條目,解壓後 10MB。", - "claudeImportBulkSubmit": "全部匯入", - "claudeImportBulkSuccess": "匯入 {count} Claude 連線", - "claudeImportBulkFailed": "部分條目匯入失敗", - "claudeImportBulkZipExtracting": "正在提取 ZIP...", - "claudeImportBulkZipError": "無法提取 ZIP", - "geminiAuthAppliedLocal": "Gemini 身份驗證在本地應用", - "geminiAuthApplyFailed": "本地申請 Gemini 身份驗證失敗", - "geminiAuthExported": "Gemini 驗證檔案已匯出", - "geminiAuthExportFailed": "匯出 Gemini 身份驗證檔案失敗", - "geminiImportModalTitle": "匯入 Gemini 授權", + "claudeImportBulkUploadHint": "拖放或拾取最多 50 個 .credentials.json檔案(每個 256KB,總共 10MB)。", + "claudeImportBulkPasteHint": "粘貼物件陣列:[{ json, name?, email? }...]", + "claudeImportBulkZipHint": "包含 .json條目的ZIP。最多 50 個條目,解壓後 10MB。", + "claudeImportBulkSubmit": "全部導入", + "claudeImportBulkSuccess": "導入 {count} Claude連接", + "claudeImportBulkFailed": "部分條目導入失敗", + "claudeImportBulkZipExtracting": "正在提取ZIP...", + "claudeImportBulkZipError": "無法提取ZIP", + "geminiAuthAppliedLocal": "Gemini身份驗證在本地應用", + "geminiAuthApplyFailed": "本地申請Gemini身份驗證失敗", + "geminiAuthExported": "Gemini驗證檔案已導出", + "geminiAuthExportFailed": "導出Gemini身份驗證檔案失敗", + "geminiImportModalTitle": "導入Gemini授權", "geminiImportTabSingle": "單人", "geminiImportTabBulk": "散裝", "geminiImportTabUpload": "上傳檔案", - "geminiImportTabPaste": "貼上 JSON", - "geminiImportFileLabel": "選擇 oauth_creds.json", - "geminiImportPasteLabel": "貼上 JSON 內容", - "geminiImportEmailLabel": "帳戶郵箱", - "geminiImportNameLabel": "連線名稱(可選)", - "geminiImportOverwriteLabel": "如果帳戶已存在,則替換現有連線", + "geminiImportTabPaste": "粘貼JSON", + "geminiImportFileLabel": "選擇oauth_creds.json", + "geminiImportPasteLabel": "粘貼JSON內容", + "geminiImportEmailLabel": "賬戶郵箱", + "geminiImportNameLabel": "連接名稱(可選)", + "geminiImportOverwriteLabel": "如果帳戶已存在,則替換現有連接", "geminiImportSubmit": "進口", - "geminiImportSuccess": "Gemini 連線匯入成功", - "geminiImportInvalidJson": "無法將檔案解析為 JSON", - "geminiImportInvalidShape": "該檔案不是有效的 oauth_creds.json", + "geminiImportSuccess": "Gemini連接導入成功", + "geminiImportInvalidJson": "無法將檔案解析為JSON", + "geminiImportInvalidShape": "該檔案不是有效的oauth_creds.json", "geminiImportDuplicate": "帳戶已存在 - 啟用“替換現有”以覆蓋", - "geminiImportIdentityUnverified": "無法通過 id_token 驗證身份。啟用“替換現有”或提供電子郵件。", - "geminiImportFailed": "匯入 Gemini 身份驗證失敗", + "geminiImportIdentityUnverified": "無法通過id_token驗證身份。啟用“替換現有”或提供電子郵件。", + "geminiImportFailed": "導入Gemini身份驗證失敗", "geminiImportBulkModeUpload": "上傳檔案", - "geminiImportBulkModePaste": "貼上 JSON 陣列", + "geminiImportBulkModePaste": "粘貼JSON陣列", "geminiImportBulkModeZip": "上傳ZIP", - "geminiImportBulkUploadHint": "拖放或拾取最多 50 個 oauth_creds.json 檔案(每個 256KB,總共 10MB)。", - "geminiImportBulkPasteHint": "貼上物件陣列:[{ json, name?, email? }...]", - "geminiImportBulkZipHint": "包含 oauth_creds.json 條目的 ZIP。最多 50 個條目,解壓後 10MB。", - "geminiImportBulkSubmit": "全部匯入", - "geminiImportBulkSuccess": "匯入 {count} Gemini 連線", - "geminiImportBulkFailed": "部分條目匯入失敗", - "geminiImportBulkZipExtracting": "正在提取 ZIP...", - "geminiImportBulkZipError": "無法提取 ZIP", - "codexAuthAppliedLocal": "Codex auth.json 已在本地應用", - "codexAuthApplyFailed": "在本地應用 Codex auth.json 失敗", - "codexAuthExported": "Codex auth.json 已匯出", - "codexAuthExportFailed": "匯出 Codex auth.json 失敗", - "codexCliGuideButton": "Codex CLI 指南", - "codexCliGuideTitle": "Codex CLI 指南", - "codexCliGuideLoading": "正在載入指南…", + "geminiImportBulkUploadHint": "拖放或拾取最多 50 個oauth_creds.json檔案(每個 256KB,總共 10MB)。", + "geminiImportBulkPasteHint": "粘貼物件陣列:[{ json, name?, email? }...]", + "geminiImportBulkZipHint": "包含oauth_creds.json條目的ZIP。最多 50 個條目,解壓後 10MB。", + "geminiImportBulkSubmit": "全部導入", + "geminiImportBulkSuccess": "導入 {count} Gemini連接", + "geminiImportBulkFailed": "部分條目導入失敗", + "geminiImportBulkZipExtracting": "正在提取ZIP...", + "geminiImportBulkZipError": "無法提取ZIP", + "codexAuthAppliedLocal": "Codex auth.json已在本地應用", + "codexAuthApplyFailed": "在本地應用Codex auth.json失敗", + "codexAuthExported": "Codex auth.json已導出", + "codexAuthExportFailed": "導出Codex auth.json失敗", + "codexCliGuideButton": "Codex CLI指南", + "codexCliGuideTitle": "Codex CLI指南", + "codexCliGuideLoading": "正在載入指南...", "codexCliGuideLoadFailed": "無法載入指南。", - "codexExternalLinkButton": "外部 Codex 連結", - "codexExternalLinkModalTitle": "外部 Codex 連結", - "codexExternalLinkModalDescription": "將此一次性連結分享給將要驗證 Codex 帳戶的人。他們在自己的瀏覽器中開啟連結,完成 OpenAI 登入,連線即會在此註冊。連結將在 15 分鐘後過期。", - "codexExternalLinkGenerating": "正在產生連結⋯", - "codexExternalLinkWaiting": "等待瀏覽器驗證。此視窗會自動重新整理。", - "codexExternalLinkCreateFailed": "產生連結失敗。", - "codexExternalLinkNetworkError": "無法聯繫伺服器。", - "codexExternalLinkConnected": "已透過外部連結連線 Codex 帳戶。", + "codexExternalLinkButton": "外部Codex連結", + "codexExternalLinkModalTitle": "外部Codex連結", + "codexExternalLinkModalDescription": "將此一次性連結分享給將要驗證Codex帳戶的人。他們在自己的瀏覽器中打開它,完成OpenAI登入,連接就會在此處註冊。該連結將在 15 分鐘後過期。", + "codexExternalLinkGenerating": "正在生成連結...", + "codexExternalLinkWaiting": "正在等待瀏覽器身份驗證。此窗口會自動刷新。", + "codexExternalLinkCreateFailed": "生成連結失敗。", + "codexExternalLinkNetworkError": "無法連接到伺服器。", + "codexExternalLinkConnected": "已通過外部連結連接Codex帳戶。", "codexExternalLinkExpired": "連結在完成前已過期。", - "importCodexAuth": "匯入授權", - "codexImportModalTitle": "匯入法典認證", + "importCodexAuth": "導入授權", + "codexImportModalTitle": "導入 Codex 認證", "codexImportTabSingle": "單人", "codexImportTabBulk": "散裝", "codexImportTabUpload": "上傳檔案", - "codexImportTabPaste": "貼上 JSON", - "codexImportFileLabel": "選擇 auth.json", - "codexImportFileHint": "選擇從 Codex 或 OmniRoute 匯出的 auth.json 檔案。", - "codexImportPasteLabel": "貼上 JSON 內容", - "codexImportEmailLabel": "帳戶郵箱", + "codexImportTabPaste": "粘貼JSON", + "codexImportFileLabel": "選擇auth.json", + "codexImportFileHint": "選擇從Codex或OmniRoute導出的auth.json檔案。", + "codexImportPasteLabel": "粘貼JSON內容", + "codexImportEmailLabel": "賬戶郵箱", "codexImportEmailHint": "從檔案中自動檢測;如果需要的話進行編輯。", - "codexImportNameLabel": "連線名稱(可選)", - "codexImportOverwriteLabel": "如果帳戶已存在,則替換現有連線", + "codexImportNameLabel": "連接名稱(可選)", + "codexImportOverwriteLabel": "如果帳戶已存在,則替換現有連接", "codexImportSubmit": "進口", - "codexImportSuccess": "Codex 連線匯入成功", - "codexImportInvalidJson": "無法將檔案解析為 JSON", - "codexImportInvalidShape": "該檔案不是有效的 Codex auth.json", + "codexImportSuccess": "Codex連接導入成功", + "codexImportInvalidJson": "無法將檔案解析為JSON", + "codexImportInvalidShape": "該檔案不是有效的Codex auth.json", "codexImportDuplicate": "帳戶已存在 - 啟用“替換現有”以覆蓋", - "codexImportFailed": "匯入 Codex 驗證失敗", + "codexImportFailed": "導入Codex驗證失敗", "codexImportDetectedEmail": "檢測到:{email}", "codexImportNoEmailDetected": "檔案中未檢測到電子郵件", "codexImportBulkModeUpload": "上傳檔案", - "codexImportBulkModePaste": "貼上列表", - "codexImportBulkModeZip": "ZIP 存檔", - "codexImportBulkUploadHint": "選擇多個 .json 檔案或拖放", - "codexImportBulkPasteHint": "JSON 陣列 [ {...}, {...} ] 或由 --- 分隔的多個 JSON 在其自己的行上", - "codexImportBulkZipHint": "上傳包含 auth.json 檔案的 .zip(最多 50 個檔案,10 MB)", - "codexImportBulkSubmit": "匯入 {count} 帳戶", - "codexImportBulkLimit": "每次匯入最多 50 個檔案", - "codexImportBulkSuccess": "{count} 已匯入", + "codexImportBulkModePaste": "粘貼列表", + "codexImportBulkModeZip": "ZIP存檔", + "codexImportBulkUploadHint": "選擇多個 .json檔案或拖放", + "codexImportBulkPasteHint": "JSON陣列 [ {...}, {...} ] 或由 --- 分隔的多個JSON在其自己的行上", + "codexImportBulkZipHint": "上傳包含auth.json檔案的 .zip(最多 50 個檔案,10 MB)", + "codexImportBulkSubmit": "導入 {count} 帳戶", + "codexImportBulkLimit": "每次導入最多 50 個檔案", + "codexImportBulkSuccess": "{count} 已導入", "codexImportBulkFailed": "{count} 失敗", - "codexImportBulkZipExtracting": "正在提取 ZIP...", - "codexImportBulkZipError": "無法提取 ZIP", - "advancedSettings": "高階設定", + "codexImportBulkZipExtracting": "正在提取ZIP...", + "codexImportBulkZipError": "無法提取ZIP", + "advancedSettings": "高級設定", "chatPathLabel": "聊天端點路徑", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "為非標準 API 的提供者自定義聊天路徑(例如:/v4/chat/completions)", + "chatPathHint": "為非標準API的提供者自定義聊天路徑(例如:/v4/chat/completions)", "modelsPathLabel": "模型端點路徑", "modelsPathPlaceholder": "/models", "modelsPathHint": "為驗證流程自定義模型路徑(例如:/v4/models)", - "clientIdentityLabel": "用戶端身分", - "clientIdentityHint": "選用。為需要此資訊的相容閘道新增與已知 CLI 相符的客戶端指紋標頭(例如 User-Agent)。", + "clientIdentityLabel": "客戶端標識", + "clientIdentityHint": "可選。新增與已知CLI匹配的客戶端指紋頭(例如User-Agent),適用於需要該標頭的相容網關。", "statusDeactivated": "已停用(手動)", "statusBanned": "已封禁 / 沙箱違規", "statusCreditsExhausted": "餘額不足 / 配額已耗盡", "showEmails": "顯示所有郵箱", "hideEmails": "隱藏所有郵箱", "a": "A", - "accountConcurrencyCapHint": "限制此 Account 可同時處理的請求數。", - "accountConcurrencyCapLabel": "Account 併發上限", - "accountIdHint": "用於區分同一 Provider 下的多個 Account。", + "accountConcurrencyCapHint": "限制此Account可同時處理的請求數。", + "accountConcurrencyCapLabel": "Account併發上限", + "accountIdHint": "用於區分同一提供者下的多個Account。", "accountIdLabel": "Account ID", - "accountIdPlaceholder": "Account ID 佔位符", - "addAnotherApiKey": "新增另一個 API 金鑰或貼上多個金鑰", - "addCcCompatible": "新增 CC 相容", - "aggregatorsGateways": "聚合器與閘道器", + "accountIdPlaceholder": "Account ID佔位符", + "addAnotherApiKey": "新增另一個API Key或粘貼多個金鑰", + "addCcCompatible": "新增Claude Code相容", + "aggregatorsGateways": "聚合器與網關", "enterpriseCloud": "企業與雲", - "apiFormatLabel": "API 格式", - "apiKeyOptionalHint": "如果上游不需要認證,可以留空 API key。", - "apiKeyOptionalLabel": "API key(可選)", + "apiFormatLabel": "API格式", + "apiKeyOptionalHint": "如果上游不需要認證,可以留空API Key。", + "apiKeyOptionalLabel": "API Key(可選)", "apiRegionChina": "中國區", - "apiRegionHint": "選擇此 Provider 的 API 區域。", + "apiRegionHint": "選擇此提供者的API區域。", "apiRegionInternational": "國際區", - "apiRegionLabel": "API 區域", - "apikey": "API key", - "audio": "音訊", - "audioProvidersHeading": "音訊 Provider", - "cloudAgentProviders": "雲代理提供者", - "audioShortLabel": "音訊", - "azureOpenAiBaseUrlHint": "Azure OpenAI 資源的 Base URL。", - "bailianBaseUrlHint": "阿里雲百鍊服務的 Base URL。", - "claudeWebCookieHint": "開啟 claude.ai → 開發者工具 → 應用 → Cookie → claude.ai,複製 sessionKey 值。還需要從同一頁面複製 cf_clearance 值。", + "apiRegionLabel": "API區域", + "apikey": "API Key", + "audio": "音頻", + "audioProvidersHeading": "音頻提供者", + "cloudAgentProviders": "雲智能體提供者", + "audioShortLabel": "音頻", + "azureOpenAiBaseUrlHint": "Azure OpenAI資源的Base URL。", + "bailianBaseUrlHint": "阿里雲百鍊服務的Base URL。", + "claudeWebCookieHint": "打開claude.ai → 開發者工具 → 應用 → Cookie → claude.ai,複製sessionKey值。還需要從同一頁面複製cf_clearance值。", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "從 Blackbox Web 會話複製 Cookie。", + "blackboxWebCookieHint": "從Blackbox Web工作階段複製Cookie。", "blackboxWebCookiePlaceholder": "Blackbox Web Cookie", - "t3ChatWebCookieHint": "開啟 t3.chat → 開發工具 → 應用程式 → 本地儲存 → https://t3.chat,複製“凸會話 ID”。然後開啟 DevTools → Network,從任何聊天請求中複製完整的 Cookie 標頭。將這兩個值貼上到下面的欄位中。", - "t3ChatWebCookiePlaceholder": "凸會話 ID=abc123...", - "grokWebCookieHint": "從 Grok Web 會話複製 Cookie。", - "blockClaudeExtraUsageDescription": "啟用後,一旦用量 API 回報排隊中的額外用量,OmniRoute 會將此 Claude 連線標記為不可用,讓容錯移轉切換到其他連線,而非繼續以按量計費的額外用量。", - "blockClaudeExtraUsageLabel": "封鎖額外 Claude 用量", - "disableCoolingDescription": "跳過暫時冷卻,使此連線在可恢復錯誤後仍保持資格(已停用/已過期等終止狀態仍適用)。", - "disableCoolingLabel": "對此連線停用冷卻", - "bulkPasteAdded": "{count, plural, one {已新增 1 個 key} other {已新增 # 個 key}}", + "t3ChatWebCookieHint": "打開t3.chat → 開發工具 → 應用程式 → 本地存儲 → https://t3.chat,複製“凸工作階段ID”。然後打開DevTools → Network,從任何聊天請求中複製完整的Cookie標頭。將這兩個值粘貼到下面的欄位中。", + "t3ChatWebCookiePlaceholder": "凸工作階段ID=abc123...", + "grokWebCookieHint": "從Grok Web工作階段複製Cookie。", + "blockClaudeExtraUsageDescription": "隱藏部分提供者返回的重複Claude額外用量記錄,避免和主token統計重複。", + "blockClaudeExtraUsageLabel": "屏蔽重複Claude用量", + "disableCoolingDescription": "跳過瞬態冷卻,以便此連接在發生可恢復錯誤後仍符合條件(被禁/過期等終態仍適用)。", + "disableCoolingLabel": "禁用此連接的冷卻", + "bulkPasteAdded": "{count, plural, one {已新增 1 個key} other {已新增 # 個key}}", "bulkPasteDuplicatesIgnored": "{count, plural, one {已跳過 1 個重複項} other {已跳過 # 個重複項}}", - "bulkPasteHint": "每行貼上一個 API 金鑰。空行會被忽略,重複金鑰會被跳過。", - "ccCompatibleBaseUrlHint": "Claude Code 專用中轉站的 Base URL,不要包含 /messages。", + "bulkPasteHint": "每行粘貼一個API Key。空行會被忽略,重複金鑰會被跳過。", + "ccCompatibleBaseUrlHint": "Claude Code專用中轉站的Base URL,不要包含 /messages。", "ccCompatibleBaseUrlPlaceholder": "https://relay.example.com/v1", - "ccCompatibleChatPathHint": "預設使用 Claude Code 嚴格的 Messages API 路徑。僅在中轉站檔案要求時修改。", - "ccCompatibleContext1mDescription": "當所選 Claude 模型支援時,新增 context-1m beta header。", + "ccCompatibleChatPathHint": "預設使用Claude Code嚴格的Messages API路徑。僅在中轉站文件要求時修改。", + "ccCompatibleContext1mDescription": "當所選Claude模型支援時,新增context-1m beta header。", "ccCompatibleContext1mLabel": "啟用 1M context beta", - "ccCompatibleRedactThinkingDescription": "為要求隱藏 Claude 思考流的 CC Compatible 上游新增 redact-thinking beta header。", - "ccCompatibleRedactThinkingLabel": "啟用 redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "為 CC Compatible 的 thinking 請求新增 `display: \"summarized\"`,讓支援的 Claude 模型流式返回可見思考增量。", - "ccCompatibleSummarizeThinkingLabel": "啟用 summarized thinking display", - "ccCompatibleDetailsTitle": "CC 相容中轉站詳情", - "ccCompatibleLabel": "CC 相容", - "ccCompatibleModelsDescription": "CC 相容中轉站不提供模型列表。請新增該中轉站接受的 Claude 模型 ID。", - "ccCompatibleNameHint": "這個 Claude Code 專用中轉站的顯示名稱。", - "ccCompatibleNamePlaceholder": "CC 中轉站生產環境", - "ccCompatiblePrefixHint": "用於 prefix/model-id 這類模型別名。", + "ccCompatibleRedactThinkingDescription": "為要求隱藏Claude思考流的Claude Code Compatible上游新增redact-thinking beta header。", + "ccCompatibleRedactThinkingLabel": "啟用redact-thinking beta", + "ccCompatibleSummarizeThinkingDescription": "為Claude Code Compatible的thinking請求新增 `display: \"summarized\"`,讓支援的Claude模型流式返回可見思考增量。", + "ccCompatibleSummarizeThinkingLabel": "啟用summarized thinking display", + "ccCompatibleDetailsTitle": "Claude Code相容中轉站詳情", + "ccCompatibleLabel": "CC相容", + "ccCompatibleModelsDescription": "Claude Code相容中轉站不提供模型列表。請新增該中轉站接受的Claude模型ID。", + "ccCompatibleNameHint": "這個Claude Code專用中轉站的顯示名稱。", + "ccCompatibleNamePlaceholder": "Claude Code中轉站生產環境", + "ccCompatiblePrefixHint": "用於prefix/model-id這類模型別名。", "ccCompatiblePrefixPlaceholder": "cc", - "ccCompatibleValidationHint": "這個 Provider 只適用於僅向 Claude Code 客戶端提供服務的中轉站。OmniRoute 會把任何進入的請求改寫為 Claude Code 相容的傳輸格式,以通過這些中轉站的驗證。如果你只是想使用 Claude Code CLI,或者不清楚這類中轉站是什麼,請使用普通 Anthropic-compatible Provider。", + "ccCompatibleValidationHint": "這個提供者只適用於僅向Claude Code客戶端提供服務的中轉站。OmniRoute會把任何進入的請求改寫為Claude Code相容的傳輸格式,以通過這些中轉站的驗證。如果你只是想使用Claude Code CLI,或者不清楚這類中轉站是什麼,請使用普通Anthropic-compatible提供者。", "claudeExtraUsageShort": "額外用量", - "claudeExtraUsageToggleTitle": "為此連線遮蔽 Claude 額外用量統計", - "codex5hToggleTitle": "為此連線跟蹤 Codex 5 小時配額", - "codexFastServiceTierDescription": "可用時為 Codex 請求使用 priority 服務層。", - "codexFastServiceTierLabel": "Codex 快速服務層", - "codexWeeklyToggleTitle": "為此連線跟蹤 Codex 周配額", - "compatUpstreamHeaderNamePlaceholder": "上游 Header 名稱", - "compatUpstreamHeaderValuePlaceholder": "上游 Header 值", + "claudeExtraUsageToggleTitle": "為此連接屏蔽Claude額外用量統計", + "codex5hToggleTitle": "為此連接跟蹤Codex 5 小時配額", + "codexFastServiceTierDescription": "可用時為Codex請求使用priority服務層。", + "codexFastServiceTierLabel": "Codex快速服務層", + "codexWeeklyToggleTitle": "為此連接跟蹤Codex周配額", + "compatUpstreamHeaderNamePlaceholder": "上游Header名稱", + "compatUpstreamHeaderValuePlaceholder": "上游Header值", "compatible": "相容", "configuredCount": "已設定數量", - "consoleApiKeyOracleHint": "用於從 Console 獲取或驗證 API key 的輔助設定。", - "consoleApiKeyOracleLabel": "Console API key Oracle", - "consoleApiKeyOraclePlaceholder": "Console API key Oracle 佔位符", - "newApiUserIdLabel": "New-API 使用者 ID", + "consoleApiKeyOracleHint": "用於從Console獲取或驗證API Key的輔助設定。", + "consoleApiKeyOracleLabel": "Console API Key Oracle", + "consoleApiKeyOraclePlaceholder": "Console API Key Oracle佔位符", + "newApiUserIdLabel": "New-API用戶ID", "newApiUserIdPlaceholder": "例如 12345", - "newApiUserIdHint": "AgentRouter 的 New-Api-User 標頭值,與控制台 API key 一起用於取得配額餘額。", - "cpaModeDisabledTitle": "CLIProxyAPI 相容模式已關閉", - "cpaModeEnabledTitle": "CLIProxyAPI 相容模式已開啟", - "customUserAgentHint": "傳送給上游 Provider 的自定義 User-Agent。", - "customUserAgentLabel": "自定義 User-Agent", - "databricksBaseUrlHint": "Databricks Serving Endpoint 的 Base URL。", - "defaultThinkingStrengthHint": "請求未指定 reasoning effort 時使用。", + "newApiUserIdHint": "AgentRouter的New-Api-User請求標頭值,與控制檯API Key一起用於獲取配額餘額。", + "cpaModeDisabledTitle": "CLIProxyAPI相容模式已關閉", + "cpaModeEnabledTitle": "CLIProxyAPI相容模式已開啟", + "customUserAgentHint": "發送給上游提供者的自定義User-智能體。", + "customUserAgentLabel": "自定義User-智能體", + "databricksBaseUrlHint": "Databricks Serving Endpoint的Base URL。", + "defaultThinkingStrengthHint": "請求未指定reasoning effort時使用。", "defaultThinkingStrengthLabel": "預設思考強度", "deleteAllExtraApiKeys": "全部刪除", - "excludedModelsHint": "這些 Model 不會出現在路由和選擇器中。", - "excludedModelsLabel": "排除的 Model", - "excludedModelsPlaceholder": "以逗號分隔的 Model ID", + "excludedModelsHint": "這些Model不會出現在路由和選擇器中。", + "excludedModelsLabel": "排除的Model", + "excludedModelsPlaceholder": "以逗號分隔的Model ID", "expirationBannerExpired": "憑據已過期", - "expirationBannerExpiredDesc": "此 Provider 的憑據已過期,請更新後繼續使用。", + "expirationBannerExpiredDesc": "此提供者的憑據已過期,請更新後繼續使用。", "expirationBannerExpiringSoon": "憑據即將過期", - "expirationBannerExpiringSoonDesc": "此 Provider 的憑據即將過期,請提前更新。", + "expirationBannerExpiringSoonDesc": "此提供者的憑據即將過期,請提前更新。", "extraApiKeyMasked": "金鑰 {index}:{prefix}••••{suffix}", - "extraApiKeysHint": "為同一提供者新增額外 API 金鑰,以便輪換和回退使用。", - "extraApiKeysLabel": "額外 API 金鑰", - "apiKeyHealthLabel": "API 金鑰健康狀態", + "extraApiKeysHint": "為同一提供者新增額外API Key,以便輪換和回退使用。", + "extraApiKeysLabel": "額外API Key", + "apiKeyHealthLabel": "API Key健康狀態", "apiKeyStatusActive": "正常", "apiKeyStatusWarning": "異常({count} 次失敗)", "apiKeyStatusInvalid": "無效", "primaryKey": "主金鑰", - "apiKeyInvalidAlert": "{count} 個 API 金鑰因認證失敗被標記為無效:{connections}。輪換時將跳過它們。點選檢視。", - "apiKeyInvalidAlertTitle": "API 金鑰健康提醒", - "apiKeyWarningAlert": "{count} 個 API 金鑰在以下連線中處於警告狀態:{connections}。請檢查以防止輪換問題。", - "apiKeyWarningAlertTitle": "API 金鑰警告", - "googlePseInfo": "設定 Google Programmable Search Engine 以啟用 Web Search。", - "antigravityProjectIdHint": "反重力雲程式碼請求的可選覆蓋。留空以使用 Google OAuth 期間發現的專案。", + "apiKeyInvalidAlert": "{count} 個API Key因認證失敗被標記為無效:{connections}。輪換時將跳過它們。點擊查看。", + "apiKeyInvalidAlertTitle": "API Key健康提醒", + "apiKeyWarningAlert": "{count} 個API Key在以下連接中處於警告狀態:{connections}。請檢查以防止輪換問題。", + "apiKeyWarningAlertTitle": "API Key警告", + "googlePseInfo": "設定Google Programmable Search Engine以啟用Web Search。", + "antigravityProjectIdHint": "Antigravity雲代碼請求的可選覆蓋。留空以使用Google OAuth期間發現的項目。", "antigravityClientProfileLabel": "客戶端設定", - "antigravityClientProfileHint": "選擇 OmniRoute 向 API 呈現的 Antigravity 客戶端身份。", + "antigravityClientProfileHint": "選擇OmniRoute向API呈現的Antigravity客戶端身份。", "antigravityClientProfileIde": "IDE", "antigravityClientProfileCli": "CLI", - "codexFastTierActiveChip": "Codex Fast 層級已啟用", + "codexFastTierActiveChip": "Codex Fast層級已啟用", "tierFast": "快速", - "antigravityProjectIdLabel": "谷歌雲專案 ID", - "antigravityProjectIdPlaceholder": "我的 GCP 專案 ID", + "antigravityProjectIdLabel": "谷歌雲項目ID", + "antigravityProjectIdPlaceholder": "我的GCP項目ID", "grokWebCookiePlaceholder": "Grok Web Cookie", - "herokuBaseUrlHint": "Heroku 部署的 Base URL。", + "herokuBaseUrlHint": "Heroku部署的Base URL。", "hideEmail": "隱藏郵箱", - "imageProviders": "影像 Provider", - "videoProviders": "影片生成", + "imageProviders": "圖像提供者", + "videoProviders": "視頻生成", "embeddingRerankProviders": "嵌入與重排序", - "imagesShortLabel": "影像", - "llmProviders": "LLM Provider", - "localProviderApiKeyOptionalHint": "本地提供者的 API 金鑰通常是可選的。", - "localProviderBaseUrlHint": "輸入本地提供者的 Base URL。", - "localProviders": "本地 Provider", + "imagesShortLabel": "圖像", + "llmProviders": "LLM提供者", + "localProviderApiKeyOptionalHint": "本地提供者的API Key通常是可選的。", + "localProviderBaseUrlHint": "輸入本地提供者的Base URL。", + "localProviders": "本地提供者", "maxConcurrentWholeNumberError": "最大併發必須是整數", - "m365TierLabel": "Copilot 層級", - "m365TierHint": "選擇此連線使用哪個 Microsoft 365 Copilot 介面。Individual 是預設的消費者 BizChat;教育版和企業(工作)版則使用各自的租戶介面。", - "m365TierIndividualOption": "個人版(預設)", - "m365TierEduOption": "教育版", - "m365TierEnterpriseOption": "企業/工作版", - "tierOverrideLabel": "層級覆寫", - "tierOverrideAuto": "自動(由路由決定)", + "m365TierLabel": "Copilot層級", + "m365TierHint": "選擇此連接使用的Microsoft 365 Copilot界面。Individual是預設的消費級BizChat;Education和Enterprise (work) 會加入其租戶界面。", + "m365TierIndividualOption": "個人 (預設)", + "m365TierEduOption": "教育", + "m365TierEnterpriseOption": "企業 / 工作", + "tierOverrideLabel": "層級覆蓋", + "tierOverrideAuto": "自動 (由路由決定)", "tierOverrideFree": "免費", - "tierOverrideCheap": "便宜", + "tierOverrideCheap": "低成本", "tierOverridePremium": "高級", - "tierOverrideHelpText": "將此提供者固定到路由層級,而非讓 OmniRoute 從模型定價推斷。", - "museSparkWebCookieHint": "從 Muse Spark Web 會話複製 Cookie。", + "tierOverrideHelpText": "將此提供者固定到特定的路由層級,而不是讓OmniRoute根據模型定價進行推斷。", + "museSparkWebCookieHint": "從Muse Spark Web工作階段複製Cookie。", "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie", "oauth": "OAuth", - "openCliTools": "開啟 CLI Tools", - "openSettings": "開啟設定", - "openaiResponsesStoreDescription": "允許相容的 Responses API 請求保留已儲存的回應狀態。", - "openaiResponsesStoreLabel": "OpenAI Responses 儲存", - "perplexitySearchSharedKeyInfo": "Perplexity Search 可使用共享 key 設定。", - "perplexityWebCookieHint": "從 Perplexity Web 會話複製 Cookie。", + "openCliTools": "打開CLI Tools", + "openSettings": "打開設定", + "openaiResponsesStoreDescription": "允許相容的Responses API請求保留已存儲的回應狀態。", + "openaiResponsesStoreLabel": "OpenAI Responses存儲", + "perplexitySearchSharedKeyInfo": "Perplexity Search可使用共享key設定。", + "perplexityWebCookieHint": "從Perplexity Web工作階段複製Cookie。", "perplexityWebCookiePlaceholder": "Perplexity Web Cookie", - "personalAccessTokenLabel": "個人訪問權杖", - "qoderPatHint": "輸入 Qoder Personal Access Token。", + "personalAccessTokenLabel": "個人訪問令牌", + "qoderPatHint": "輸入Qoder Personal Access Token。", "qoderPatPlaceholder": "Qoder PAT", "rateLimitOverridesSection": "速率限制覆蓋", - "rateLimitOverridesMaxConcurrentHint": "此連線的最大併發請求覆蓋。覆蓋帳戶級別的上限。", + "rateLimitOverridesMaxConcurrentHint": "此連接的最大併發請求覆蓋。覆蓋賬戶級別的上限。", "rateLimitOverridesMaxConcurrentLabel": "最大併發(速率限制)", "rateLimitOverridesMinTimeHint": "請求之間的最小時間(毫秒)。覆蓋預設速率限制器延遲。", "rateLimitOverridesMinTimeLabel": "最小間隔(毫秒)", - "rateLimitOverridesRpmHint": "此連線的每分鐘最大請求數。覆蓋提供者預設值。", + "rateLimitOverridesRpmHint": "此連接的每分鐘最大請求數。覆蓋提供者預設值。", "rateLimitOverridesRpmLabel": "RPM(請求/分鐘)", - "rateLimitOverridesTpdHint": "此連線的每日最大權杖數。覆蓋提供者預設值。", - "rateLimitOverridesTpdLabel": "TPD(權杖/天)", - "rateLimitOverridesTpmHint": "此連線的每分鐘最大權杖數。覆蓋提供者預設值。", - "rateLimitOverridesTpmLabel": "TPM(權杖/分鐘)", - "refreshOauthTokenTitle": "重新整理 OAuth Token", - "regionHint": "選擇此 Provider 使用的區域。", + "rateLimitOverridesTpdHint": "此連接的每日最大令牌數。覆蓋提供者預設值。", + "rateLimitOverridesTpdLabel": "TPD(令牌/天)", + "rateLimitOverridesTpmHint": "此連接的每分鐘最大令牌數。覆蓋提供者預設值。", + "rateLimitOverridesTpmLabel": "TPM(令牌/分鐘)", + "refreshOauthTokenTitle": "刷新OAuth Token", + "regionHint": "選擇此提供者使用的區域。", "regionLabel": "區域", - "removeThisKey": "移除此 key", - "routingTagsHint": "新增標籤以便在路由規則中匹配此連線。", + "removeThisKey": "移除此key", + "routingTagsHint": "新增標籤以便在路由規則中匹配此連接。", "routingTagsLabel": "路由標籤", - "routingTagsPlaceholder": "例如 coding, fast, cheap", + "routingTagsPlaceholder": "例如coding, fast, cheap", "search": "搜尋", - "searchEngineIdHint": "Google Programmable Search Engine 的 ID。", + "searchEngineIdHint": "Google Programmable Search Engine的ID。", "searchEngineIdLabel": "Search Engine ID", - "searchEngineIdRequired": "Search Engine ID 為必填項", + "searchEngineIdRequired": "Search Engine ID為必填項", "searchProvider": "搜尋提供者", - "searchProviderDesc": "按名稱、能力或類別查詢提供者。", - "searchProviders": "搜尋 Provider", - "searchByModel": "依模型搜尋…", - "searchProvidersHeading": "搜尋 Provider", - "searxngBaseUrlHint": "SearXNG 例項的 Base URL。", - "searxngInfo": "設定 SearXNG 以啟用自託管 Web Search。", + "searchProviderDesc": "按名稱、能力或類別查找提供者。", + "searchProviders": "搜尋提供者", + "searchByModel": "按模型搜尋…", + "searchProvidersHeading": "搜尋提供者", + "searxngBaseUrlHint": "SearXNG實例的Base URL。", + "searxngInfo": "設定SearXNG以啟用自託管Web Search。", "sessionCookieLabel": "Session Cookie", "showEmail": "顯示郵箱", - "snowflakeBaseUrlHint": "Snowflake Cortex 服務的 Base URL。", - "supportedEndpointAudio": "音訊", + "snowflakeBaseUrlHint": "Snowflake Cortex服務的Base URL。", + "supportedEndpointAudio": "音頻", "supportedEndpointChat": "聊天", "supportedEndpointEmbeddings": "嵌入", - "supportedEndpointImages": "影像", + "supportedEndpointImages": "圖像", "supportedEndpointsLabel": "支援的端點", - "tagGroupHint": "用於篩選和組織 Provider 的標籤分組。", + "tagGroupHint": "用於篩選和組織提供者的標籤分組。", "tagGroupLabel": "標籤分組", "tagGroupPlaceholder": "標籤分組佔位符", "testModel": "測試模型", "testingModel": "正在測試模型", "toggleOffShort": "關", "toggleOnShort": "開", - "tokenExpiredBadge": "Token 已過期", - "tokenExpiredTitle": "Token 已過期", - "tokenExpiresSoonTitle": "Token 即將過期", + "tokenExpiredBadge": "Token已過期", + "tokenExpiredTitle": "Token已過期", + "tokenExpiresSoonTitle": "Token即將過期", "tokenShort": "Token", - "totalKeysRotating": "{count, plural, one {1 個 key 正在輪換} other {# 個 key 正在輪換}}", + "totalKeysRotating": "{count, plural, one {1 個key正在輪換} other {# 個key正在輪換}}", "unhideModel": "取消隱藏模型", - "upstreamProxyProviders": "上游代理 Provider", - "validationModelIdHint": "用於驗證此提供者連線的模型 ID。", - "validationModelIdLabel": "驗證模型 ID", - "validationModelIdPlaceholder": "輸入用於測試的模型 ID", - "vertexServiceAccountPlaceholder": "貼上 Service Account JSON({\"type\":\"service_account\"...})或 OAuth access_token", - "webCookieProviders": "Web Cookie Provider", + "upstreamProxyProviders": "上游代理提供者", + "validationModelIdHint": "用於驗證此提供者連接的模型ID。", + "validationModelIdLabel": "驗證模型ID", + "validationModelIdPlaceholder": "輸入用於測試的模型ID", + "vertexServiceAccountPlaceholder": "粘貼Service Account JSON({\"type\":\"service_account\"...})或OAuth access_token", + "webCookieProviders": "Web Cookie提供者", "weeklyShort": "每週", - "xiaomiMimoBaseUrlHint": "小米 Mimo 服務的 Base URL。", - "globalCodexServiceMode": "全域 Codex 服務模式", - "connect": "連線", - "manualApiKey": "手動 API 金鑰", - "addPat": "新增 PAT", - "experimentalOauth": "實驗性 OAuth", - "importAuth": "匯入驗證", - "importGrokAuth": "匯入 Grok Build 驗證", - "zedImportTitle": "從 Zed 鑰匙圈匯入", - "zedImportDescription": "探索 Zed IDE 存放在 OS 鑰匙圈中的 AI 提供者憑證(OpenAI、Anthropic、Google、Mistral、xAI),並將其匯入為連線。此機器上必須已安裝 Zed IDE。", - "zedImportButton": "__MISSING__:Import from Zed", - "zedImportFailed": "__MISSING__:Zed import failed", - "zedImportHint": "從 Zed 設定中匯入 Provider。", - "zedImportNetworkError": "Zed 匯入網路錯誤", - "zedImportNone": "沒有可從 Zed 匯入的內容", - "zedImportSuccess": "__MISSING__:Imported {credentials} credential(s) from Zed for {providers} provider(s)", - "zedImporting": "__MISSING__:Importing…", - "zedNoCredentials": "在鑰匙圈中找不到 Zed 憑證", - "zedUnsupportedCredentials": "找到 {count} 個鑰匙圈憑證,但均未匹配支援的提供者", - "zedManualTitle": "手動 Token 匯入", - "zedManualDescription": "當 OmniRoute 在 Docker 中執行或鑰匙圈無法使用時使用此選項。貼上 Zed 儲存在 ~/.config/zed/settings.json 下的 API 金鑰,或從 Zed AI 設定面板複製。", - "zedPasteApiKey": "貼上 API 金鑰…", - "zedSaving": "正在儲存…", - "zedImportAction": "匯入", - "zedManualImportFailed": "手動匯入失敗", - "zedManualImportSuccess": "已從 Zed 匯入 {provider} token", - "grokImportTitle": "匯入 Grok Build 驗證", - "grokImportDescription": "匯入您的 Grok Build ~/.grok/auth.json 檔案。您可以在終端機中執行 grok login 來取得此檔案。", + "xiaomiMimoBaseUrlHint": "小米Mimo服務的Base URL。", + "globalCodexServiceMode": "全域Codex服務模式", + "connect": "連接", + "manualApiKey": "手動API Key", + "addPat": "新增PAT", + "experimentalOauth": "實驗性OAuth", + "importAuth": "導入身份驗證", + "importGrokAuth": "導入Grok Build身份驗證", + "zedImportTitle": "從Zed鑰匙串導入", + "zedImportDescription": "發現Zed IDE存儲在操作系統鑰匙串中的AI提供者憑據(OpenAI、Anthropic、Google、Mistral、xAI)並將其導入為連接。此機器上必須安裝Zed IDE。", + "zedImportButton": "從Zed導入", + "zedImportFailed": "Zed導入失敗", + "zedImportHint": "從Zed設定中導入提供者。", + "zedImportNetworkError": "Zed導入網路錯誤", + "zedImportNone": "沒有可從Zed導入的內容", + "zedImportSuccess": "Zed導入成功", + "zedImporting": "正在從Zed導入", + "zedNoCredentials": "在鑰匙串中未找到Zed憑據", + "zedUnsupportedCredentials": "找到 {count} 個鑰匙串憑據,但沒有與支援的提供者匹配的憑據", + "zedManualTitle": "手動導入令牌", + "zedManualDescription": "當OmniRoute在Docker中運行或金鑰鏈不可用時使用此選項。粘貼Zed存儲在 ~/.config/zed/settings.json 下的API Key,或從Zed AI設定面板中複製它。", + "zedPasteApiKey": "粘貼API Key…", + "zedSaving": "正在保存…", + "zedImportAction": "導入", + "zedManualImportFailed": "手動導入失敗", + "zedManualImportSuccess": "已從Zed導入 {provider} 令牌", + "grokImportTitle": "導入Grok Build身份驗證", + "grokImportDescription": "導入您的Grok Build ~/.grok/auth.json 檔案。您可以通過在終端中運行 grok login 來獲取它。", "grokUploadFile": "上傳檔案", - "grokPasteJson": "貼上 JSON", - "grokInvalidAuth": "這不是有效的 Grok Build auth.json 檔案。必須是包含 JWT 金鑰的物件。", - "grokParseFailed": "無法解析 JSON", - "grokImportFailed": "匯入 Grok Build 驗證失敗", - "grokImportSuccess": "Grok Build 連線匯入成功", - "grokValidToken": "偵測到有效的 Grok Build 令牌", - "grokRefreshIncluded": "已包含更新令牌 — 自動令牌更新已啟用", - "grokRefreshMissing": "找不到更新令牌 — 請在令牌過期後重新匯入", - "grokConnectionName": "連線名稱(選填)", - "grokSaving": "正在儲存...", - "grokSaveConnection": "儲存連線", + "grokPasteJson": "粘貼JSON", + "grokInvalidAuth": "這不是有效的Grok Build auth.json file。應為包含JWT鍵的物件。", + "grokParseFailed": "無法解析JSON", + "grokImportFailed": "導入Grok Build身份驗證失敗", + "grokImportSuccess": "Grok Build連接導入成功", + "grokValidToken": "檢測到有效的Grok Build令牌", + "grokRefreshIncluded": "已包含刷新令牌—已啟用自動令牌續期", + "grokRefreshMissing": "未找到刷新令牌—請在令牌過期後重新導入", + "grokConnectionName": "連接名稱(可選)", + "grokSaving": "正在保存…", + "grokSaveConnection": "保存連接", "freeTierProviders": "免費層提供者", "freeTierLabel": "有免費額度", - "freeTierProvidersDesc": "提供免費層的提供者——有些需要註冊 API 金鑰,有些無需任何憑證。", + "freeTierProvidersDesc": "提供免費層的提供者——有些需要註冊API Key,有些無需任何憑證。", "providerSummaryAll": "全部", - "ideProviders": "IDE 提供者", - "ideProvidersDesc": "內建 AI 訂閱的編輯器。使用提供者頁面直接從 IDE 金鑰鏈匯入憑據。", - "noIdeProviders": "沒有符合當前篩選條件的 IDE 提供者。", - "providerDetailFastTierTooltip": "預設對所有 Codex 連線應用 Codex Fast 層級", + "ideProviders": "IDE提供者", + "ideProvidersDesc": "內置AI訂閱的編輯器。使用提供者頁面直接從IDE金鑰鏈導入憑據。", + "noIdeProviders": "沒有符合當前篩選條件的IDE提供者。", + "providerDetailFastTierTooltip": "預設對所有Codex連接應用Codex Fast層級", "providerDetailFastDefaultLabel": "快速預設", - "providerDetailBrowserManualConnect": "瀏覽器/手動連線", - "providerDetailAuthUrl": "認證 URL", - "providerDetailCallbackUrl": "回撥 URL", - "providerDetailValidClaudeCredentialsFile": "有效的 Claude 憑據檔案", - "providerDetailPathAutoDetectedAllOs": "路徑按作業系統自動檢測(Linux/Mac/Windows)。", - "providerDetailMyClaudeAccountPlaceholder": "我的克勞德帳戶", - "providerDetailPathAutoDetected": "根據作業系統 (Linux/Mac) 自動檢測路徑。", - "compatBlockedParamsPlaceholder": "thinking, …(逗號分隔)", - "compatAllowedParamsPlaceholder": "reasoning, …(逗號分隔)", - "compatSaving": "儲存中...", - "paramFiltersBlockedPlaceholder": "thinking, reasoning_budget, …(以逗號分隔)", - "paramFiltersAllowedPlaceholder": "reasoning, …(以逗號分隔)", - "customGatewayNamePlaceholder": "我的閘道", + "providerDetailBrowserManualConnect": "瀏覽器/手動連接", + "providerDetailAuthUrl": "認證URL", + "providerDetailCallbackUrl": "回調URL", + "providerDetailValidClaudeCredentialsFile": "有效的Claude憑據檔案", + "providerDetailPathAutoDetectedAllOs": "路徑按操作系統自動檢測(Linux/Mac/Windows)。", + "providerDetailMyClaudeAccountPlaceholder": "我的Claude賬戶", + "providerDetailPathAutoDetected": "根據操作系統 (Linux/Mac) 自動檢測路徑。", + "compatBlockedParamsPlaceholder": "thinking, … (逗號分隔)", + "compatAllowedParamsPlaceholder": "reasoning, … (逗號分隔)", + "compatSaving": "正在保存…", + "paramFiltersBlockedPlaceholder": "thinking, reasoning_budget, … (逗號分隔)", + "paramFiltersAllowedPlaceholder": "reasoning, … (逗號分隔)", + "customGatewayNamePlaceholder": "我的網關", "inherit": "繼承", - "claudeImportEntryName": "項目 {number}", + "claudeImportEntryName": "條目 {number}", "claudeImportParseError": "解析錯誤", - "claudeImportNoValidEntries": "無有效項目可匯入", + "claudeImportNoValidEntries": "沒有可導入的有效條目", "webFetch": "網頁抓取", - "webFetchTooltip": "從網頁 URL 抽取內容的提供者(HTML → Markdown、抓取、截圖)", + "webFetchTooltip": "從網頁URL抽取內容的提供者(HTML → Markdown、抓取、截圖)", "webFetchProvidersHeading": "網頁抓取提供者", - "compatibleProvidersDesc": "您託管或設定的 OpenAI 相容和 Anthropic 相容端點。將任意 OpenAI SDK 指向您的 URL 並在此處路由請求。", - "oauthProvidersDesc": "通過 OAuth 認證的提供者——登入一次,OmniRoute 自動處理權杖輪換。", - "webCookieProvidersDesc": "這些提供者使用瀏覽器網路會話、cookie 或網路權杖而不是 API 金鑰。開啟提供程式以新增所需的會話憑據。", - "apiKeyProvidersDesc": "標準 API 金鑰提供者。新增金鑰後,OmniRoute 代為路由、重試和限流。", + "compatibleProvidersDesc": "您託管或設定的OpenAI相容和Anthropic相容端點。將任意OpenAI SDK指向您的URL並在此處路由請求。", + "oauthProvidersDesc": "通過OAuth認證的提供者——登入一次,OmniRoute自動處理令牌輪換。", + "webCookieProvidersDesc": "這些提供者使用瀏覽器網路工作階段、cookie或網路令牌而不是API Key。打開提供程式以新增所需的工作階段憑據。", + "apiKeyProvidersDesc": "標準API Key提供者。新增金鑰後,OmniRoute代為路由、重試和限流。", "noAuthProvidersDesc": "無需憑證的開放端點——無需註冊即可立即使用。", "upstreamProxyProvidersDesc": "通過上游代理路由出站流量。適用於企業網路或流量審計場景。", - "webFetchProvidersDesc": "從網頁 URL 抓取和提取內容的提供者。用於將即時網頁資料注入提示詞。", - "aggregatorsGatewaysDesc": "多提供者聚合器和 AI 閘道器,通過單一統一 API 對接數十個底層模型。", - "enterpriseCloudDesc": "企業級和雲託管模型,提供增強 SLA、合規認證和專用容量。", - "cloudAgentProvidersDesc": "自主雲代理,可執行長時間執行的任務,支援計劃審批和即時狀態跟蹤。", - "localProvidersDesc": "在您自己的硬體上執行的自託管模型。資料不會離開您的基礎設施。", - "searchProvidersDesc": "網頁和檔案搜尋提供者。可附加到 LLM 呼叫以實現檢索增強生成(RAG)。", - "audioProvidersDesc": "文本轉語音和語音轉文本提供者,用於語音輸入輸出和音訊轉錄管道。", - "embeddingRerankProvidersDesc": "向量嵌入和重排序提供者,用於語義搜尋、RAG 管道和相似度評分。", - "imageProvidersDesc": "影像生成和視覺提供者——從文本建立影像或分析現有影像。", - "videoProvidersDesc": "影片生成提供者。從文本提示或影像建立短影片片段。", + "webFetchProvidersDesc": "從網頁URL抓取和提取內容的提供者。用於將實時網頁資料注入提示詞。", + "aggregatorsGatewaysDesc": "多提供者聚合器和AI網關,通過單一統一API對接數十個底層模型。", + "enterpriseCloudDesc": "企業級和雲託管模型,提供增強SLA、合規認證和專用容量。", + "cloudAgentProvidersDesc": "自主雲智能體,可執行長時間運行的任務,支援計劃審批和實時狀態跟蹤。", + "localProvidersDesc": "在您自己的硬體上運行的自託管模型。資料不會離開您的基礎設施。", + "searchProvidersDesc": "網頁和文件搜尋提供者。可附加到LLM呼叫以實現檢索增強生成(RAG)。", + "audioProvidersDesc": "文本轉語音和語音轉文本提供者,用於語音輸入輸出和音頻轉錄管道。", + "embeddingRerankProvidersDesc": "向量嵌入和重排序提供者,用於語意搜尋、RAG管道和相似度評分。", + "imageProvidersDesc": "圖像生成和視覺提供者——從文本創建圖像或分析現有圖像。", + "videoProvidersDesc": "視頻生成提供者。從文本提示或圖像創建短視頻片段。", "onboardingWizard": "提供者入職嚮導", "onboardingWizardShort": "入職嚮導", - "onboardingWizardDescription": "通過驗證、永續性和即時連線測試連線 API 金鑰、自定義相容和 OAuth 提供者。", + "onboardingWizardDescription": "通過驗證、持久性和即時連接測試連接API Key、自定義相容和OAuth提供者。", "onboardingStepType": "類型", "onboardingStepProvider": "提供者", "onboardingStepCredentials": "憑證", "onboardingStepResult": "結果", - "onboardingTypeApiKeyTitle": "API 金鑰提供者", - "onboardingTypeApiKeyText": "使用內建提供程式,例如 OpenAI、Anthropic、Gemini、Groq、Azure 等。", + "onboardingTypeApiKeyTitle": "API Key提供者", + "onboardingTypeApiKeyText": "使用內置提供程式,例如OpenAI、Anthropic、Gemini、Groq、Azure等。", "onboardingTypeCustomTitle": "自定義相容提供者", - "onboardingTypeCustomText": "建立與 OpenAI、Anthropic 或 Claude Code 相容的端點並新增其金鑰。", - "onboardingTypeOAuthTitle": "OAuth 提供者", - "onboardingTypeOAuthText": "為編碼提供者重用現有的 OAuth、裝置程式碼或本地匯入流程。", - "onboardingChooseOAuthProvider": "選擇 OAuth 提供者", - "onboardingChooseApiKeyProvider": "選擇 API 金鑰提供者", + "onboardingTypeCustomText": "創建與OpenAI、Anthropic或Claude Code相容的端點並新增其金鑰。", + "onboardingTypeOAuthTitle": "OAuth提供者", + "onboardingTypeOAuthText": "為編碼提供者重用現有的OAuth、設備代碼或本地導入流程。", + "onboardingChooseOAuthProvider": "選擇OAuth提供者", + "onboardingChooseApiKeyProvider": "選擇API Key提供者", "onboardingChooseProviderDescription": "選擇一個提供者,然後嚮導將指導您完成憑據和測試。", "onboardingChangeType": "變更類型", "onboardingChangeProvider": "更換提供者", "onboardingSearchProviders": "搜尋提供者...", - "onboardingApiKeyOptional": "API 金鑰可選", - "onboardingProviderConnected": "提供者已連線", - "onboardingProviderSavedWithWarnings": "提供者儲存時帶有警告", + "onboardingApiKeyOptional": "API Key可選", + "onboardingProviderConnected": "提供者已連接", + "onboardingProviderSavedWithWarnings": "提供者保存時帶有警告", "onboardingProviderFinished": "提供者入職完成", - "onboardingYourProviderConnection": "您的提供者連線", + "onboardingYourProviderConnection": "您的提供者連接", "onboardingTestPassed": "測試通過", "onboardingTestFailed": "測試失敗", "onboardingOpenProviderDetails": "開放提供者詳細資訊", - "onboardingTryInPlayground": "去遊樂場試試", + "onboardingTryInPlayground": "去演練場試試", "onboardingDefaultConnectionName": "{provider} 主要", - "onboardingTestingConnection": "測試提供者連線...", + "onboardingTestingConnection": "測試提供者連接...", "onboardingValidatingCredentials": "正在驗證憑據...", - "onboardingSavingConnection": "正在儲存提供者連線...", + "onboardingSavingConnection": "正在保存提供者連接...", "onboardingProviderFailed": "提供者加入失敗", - "onboardingCreatingCompatibleProvider": "建立相容的提供者...", - "onboardingSavingCompatibleConnection": "正在儲存相容的提供者連線...", + "onboardingCreatingCompatibleProvider": "創建相容的提供者...", + "onboardingSavingCompatibleConnection": "正在保存相容的提供者連接...", "onboardingCustomProviderFallbackName": "定製提供者", "onboardingCustomProviderFailed": "自定義提供者加入失敗", - "onboardingLoadingOAuthConnection": "正在載入 OAuth 連線...", - "onboardingOAuthNoConnectionFound": "OAuth 已完成,但未找到提供者連線。", - "onboardingOAuthFailed": "OAuth 登入失敗", + "onboardingLoadingOAuthConnection": "正在載入OAuth連接...", + "onboardingOAuthNoConnectionFound": "OAuth已完成,但未找到提供者連接。", + "onboardingOAuthFailed": "OAuth登入失敗", "onboardingAddProvider": "新增 {provider}", - "onboardingConnectionName": "連線名稱", - "onboardingApiKeyOptionalLabel": "API 金鑰(可選)", - "onboardingBaseUrlOverride": "基本 URL 覆蓋", - "onboardingBaseUrlOverrideHint": "可選。儲存為providerSpecificData.baseUrl。", + "onboardingConnectionName": "連接名稱", + "onboardingApiKeyOptionalLabel": "API Key(可選)", + "onboardingBaseUrlOverride": "基本URL覆蓋", + "onboardingBaseUrlOverrideHint": "可選。存儲為providerSpecificData.baseUrl。", "onboardingRegion": "地區", - "onboardingSearchCx": "搜尋 CX/引擎 ID", - "onboardingProviderSpecificIdPlaceholder": "可選的提供者特定 ID", - "onboardingCustomUserAgent": "自定義使用者代理", + "onboardingSearchCx": "搜尋CX/引擎ID", + "onboardingProviderSpecificIdPlaceholder": "可選的提供者特定ID", + "onboardingCustomUserAgent": "自定義用戶代理", "onboardingWorking": "工作…", - "onboardingValidateSaveTest": "驗證、儲存和測試", + "onboardingValidateSaveTest": "驗證、保存和測試", "onboardingBack": "返回", - "onboardingCreateCustomCompatibleProvider": "建立自定義相容提供者", - "onboardingCreateCustomCompatibleDescription": "該向導首先建立一個提供程式節點,然後儲存並測試其 API 金鑰連線。", + "onboardingCreateCustomCompatibleProvider": "創建自定義相容提供者", + "onboardingCreateCustomCompatibleDescription": "該向導首先創建一個提供程式節點,然後存儲並測試其API Key連接。", "onboardingProtocol": "協議", - "onboardingOpenAiCompatible": "相容 OpenAI", - "onboardingAnthropicCompatible": "人類相容", - "onboardingClaudeCodeCompatible": "克勞德程式碼相容", - "onboardingProviderPrefix": "提供者字首", - "onboardingProviderPrefixHint": "用於生成託管提供者 ID。", + "onboardingOpenAiCompatible": "相容OpenAI", + "onboardingAnthropicCompatible": "Anthropic相容", + "onboardingClaudeCodeCompatible": "Claude Code相容", + "onboardingProviderPrefix": "提供者前綴", + "onboardingProviderPrefixHint": "用於生成託管提供者ID。", "onboardingChatPath": "聊天路徑", "onboardingModelsPath": "模型路徑", - "onboardingCreateSaveTest": "建立、儲存和測試", - "onboardingConnectProvider": "連線 {provider}", - "onboardingOAuthFlowDescription": "OmniRoute 將開啟該提供者的現有 OAuth 流程。登入後,嚮導將重新載入已儲存的連線並執行與提供程式頁面相同的連線測試。", - "onboardingStartOAuthFlow": "啟動 OAuth 流程", + "onboardingCreateSaveTest": "創建、保存和測試", + "onboardingConnectProvider": "連接 {provider}", + "onboardingOAuthFlowDescription": "OmniRoute將打開該提供者的現有OAuth流程。登入後,嚮導將重新載入已保存的連接並運行與提供程式頁面相同的連接測試。", + "onboardingStartOAuthFlow": "啟動OAuth流程", "onboardingProviderDescriptions": { - "360ai": "在 ai.360.cn 取得 API 金鑰", - "agentrouter": "在 https://agentrouter.org/register 取得 $200 美元免費額度 — 無需信用卡。", - "agnes": "在 agnes-ai.com 取得 API 金鑰", - "aimlapi": "免費方案已暫停(2026 年)— AI/ML API 現僅提供隨用隨付方案(最低儲值 $20 美元);無定期免費額度。", - "ai21": "註冊即贈 $10 美元試用額度(有效期 3 個月),無需信用卡", - "alibaba": "使用 API 金鑰連線阿里雲。", - "alibaba-cn": "使用 API 金鑰連線阿里雲(中國)。", - "bailian-coding-plan": "使用 API 金鑰連線阿里雲通義靈碼。", - "bedrock": "原生 Bedrock 整合:模型探索使用 Bedrock 基礎模型和推論設定檔,聊天則使用區域性 Bedrock Runtime Converse/ConverseStream API。", - "anthropic": "使用 API 金鑰連線 Anthropic。", - "ant-ling": "__MISSING__:Register and create an API key at the Ant Ling API console (https://chat.ant-ling.com/open), then paste it here. OmniRoute routes chat traffic to https://api.ant-ling.com/v1/chat/completions; the provider is OpenAI-compatible and also exposes an Anthropic-compatible surface.", - "api-airforce": "從 https://panel.api.airforce 取得 API 金鑰 — OpenAI 相容端點為 https://api.airforce/v1", - "arcee-ai": "在 arcee.ai 取得 API 金鑰", - "azure-ai": "Foundry 使用 OpenAI v1 介面,以部署名稱作為模型。OmniRoute 將根資源 URL 正規化為 v1 chat 和 /models 端點。", - "azure-openai": "使用你的 Azure OpenAI API 金鑰。基本 URL 應為你的資源端點,例如 https://my-resource.openai.azure.com。", - "bai": "b.ai OpenAI 相容 LLM 閘道的 Bearer API 金鑰(不同於 TheB.AI)。在 https://docs.b.ai 建立金鑰,然後使用 https://api.b.ai/v1 作為 OpenAI 相容的基本 URL。", - "baichuan": "在 platform.baichuan-ai.com 取得 API 金鑰", - "baidu": "在 console.bce.baidu.com 取得 API 金鑰", - "qianfan": "使用百度 AI 雲的千帆 API 金鑰。預設端點為 OpenAI 相容的 v2。", - "baseten": "$30 美元 GPU 推論免費試用額度", - "bazaarlink": "在 https://bazaarlink.ai 建立免費 API 金鑰 — 模型 'auto:free' 路由至零成本推論。所有模型使用 提供者/模型名稱 格式,例如 xiaomi/mimo-v2.5-pro。", - "black-forest-labs": "使用 API 金鑰連線 Black Forest Labs。", - "blackbox": "免費方案:無限基本聊天加上 Minimax-M2.5,無需信用卡", - "bluesminds": "在 https://www.bluesminds.com 取得你的 API 金鑰 — OpenAI 相容端點為 https://api.bluesminds.com/v1,附每日免費額度。VIP 模型(Claude Opus 4.5、Gemini 2.5 Pro)會消耗 pi 額度。", - "byteplus": "使用 API 金鑰連線 BytePlus ModelArk。", - "bytez": "$1 美元免費額度,每 4 週更新", - "cerebras": "免費試用:每天 100 萬 tokens、每分鐘 3 萬 TPM、每分鐘 5 次請求 — 無需信用卡。", - "charm-hyper": "在 https://hyper.charm.land 建立 API 金鑰,然後在此貼上作為 Bearer token。", - "chutes": "Chutes OpenAI 相容閘道的 Bearer API 金鑰。", - "clarifai": "Clarifai 在 /v2/ext/openai/v1 提供 OpenAI 相容的聊天、回應和 /models 端點。公開/社群模型通常需要 PAT;應用程式範圍的金鑰僅適用於該應用程式內的資源。", - "cloudflare-ai": "需要 API Token 和 Account ID(可在 dash.cloudflare.com 找到)", - "clova-studio": "__MISSING__:CLOVA Studio (HyperCLOVA X) is OpenAI-compatible on /v1/openai. OmniRoute probes /v1/openai/models and routes chat traffic to /v1/openai/chat/completions. Uses the current clovastudio.stream.ntruss.com host — the legacy clovastudio.apigw.ntruss.com endpoint is being deprecated.", - "codestral": "使用 API 金鑰連線 Codestral。", - "cohere": "免費試用:每月 1,000 次 API 呼叫供測試使用,無需信用卡", - "command-code": "從 Command Code 建立或複製 API 金鑰,然後在此貼上作為 Bearer token。", - "coze": "在 coze.com/open/api 取得 API 金鑰", - "crof": "使用 API 金鑰連線 CrofAI。", - "databricks": "使用 API 金鑰連線 Databricks。", - "datarobot": "預設閘道從 /genai/llmgw/catalog/ 目錄中取得活躍模型。也支援使用部署 URL 進行直接的 OpenAI 相容聊天請求。", - "deepinfra": "註冊即贈免費額度,供 API 測試和模型探索使用", - "deepseek": "註冊即贈 500 萬免費 tokens — 無需信用卡", - "dgrid": "在 https://dgrid.ai 建立 DGrid API 金鑰,然後使用 https://api.dgrid.ai/v1 作為 OpenAI 相容的基本 URL。", - "dify": "從你的 Dify 實例取得 API 金鑰。", - "digitalocean": "使用 API 金鑰連線 DigitalOcean。", - "dit": "dit.ai(Distributed Intelligence Trade)是一個 OpenAI 相容的路由器/閘道,採用動態按請求定價,在 https://api.dit.ai/v1 提供 /v1/chat/completions 端點。OmniRoute 使用 OpenAI 協定;支出/節省分析可在 dit.ai 儀表板中查看。", - "doubao": "在 console.volcengine.com 取得 API 金鑰", - "empower": "Empower 在 https://app.empower.dev/api/v1 提供 OpenAI 相容聊天功能,並在 empower-functions 上支援工具呼叫。", - "factory": "在 https://app.factory.ai/settings/api-keys 取得你的 Factory API 金鑰,然後以 Bearer token 形式貼上。OpenAI 相容端點為 https://api.factory.ai/v1。", - "fal-ai": "使用 API 金鑰連線 Fal.ai。", - "featherless-ai": "提供免費方案 — 無需信用卡", - "fenayai": "FenayAI OpenAI 相容閘道的 Bearer API 金鑰。", - "firecrawl": "使用 API 金鑰連線 Firecrawl。", - "fireworks": "註冊即贈 $1 美元入門免費額度,供 API 測試使用", - "freeaiapikey": "40+ 種模型的折扣 API 代理,包括 GPT-5、Claude Opus 4.6、Claude Sonnet 4.6、Qwen 3.5。在 https://freeaiapikey.com/dashboard 取得 API 金鑰。基本 URL:https://freeaiapikey.com/v1。", - "freemodel-dev": "在 https://freemodel.dev 取得 $300 美元免費 API 額度 — 無需付款資訊。OpenAI 相容端點。提供 GPT-5.4 和 GPT-5.5 模型。", - "friendliai": "無伺服器推論的免費方案 — 無需信用卡", - "gemini": "永久免費:Gemini 2.5 Flash 每天 1,500 次請求 — 無需信用卡,在 aistudio.google.com 取得金鑰", - "gigachat": "使用 API 金鑰連線 GigaChat(Sber)。", - "github-models": "在 github.com/settings/tokens 建立具有 'models: read' 範圍的 GitHub PAT", - "gitlab": "用於公開 Code Suggestions API 的 GitLab 個人存取權杖。不使用 gitlab.com 時,請設定自託管的基本 URL。", - "gitlawb-gmi": "從 Gitlawb Opengateway 儀表板取得 API 金鑰。", - "gitlawb": "從 Gitlawb Opengateway 儀表板取得 API 金鑰。", - "glm": "使用 API 金鑰連線 GLM Coding。", - "glm-cn": "使用 API 金鑰連線 GLM Coding(中國)。", - "glmt": "預設 GLM 設定檔,具有較高的 token 預算、啟用思考功能,以及更長的超時時間。", - "getgoapi": "使用 API 金鑰連線 GoAPI。", - "groq": "免費方案:每分鐘 30 次 / 每天 14,400 次請求 — 無需信用卡", - "hackclub": "在 ai.hackclub.com 使用你的 Hack Club 帳號登入。", - "haiper": "在 haiper.ai/haiper-api 取得 API 金鑰", - "heroku": "使用 API 金鑰連線 Heroku AI。", - "hcnsec": "在 api.hcnsec.cn 取得 API 金鑰", - "huggingface": "數千種模型的免費 Inference API(Whisper、VITS、SDXL…)", - "hyperbolic": "註冊即贈 $1-5 美元試用額度,供無伺服器推論使用", - "watsonx": "watsonx 模型閘道在 /ml/gateway/v1 下提供 OpenAI 相容的 /chat/completions 和 /models 端點。", - "ideogram": "在 ideogram.ai/docs/api 取得 API 金鑰", - "iflytek": "在 console.xfyun.cn 取得 API 金鑰", - "inception": "__MISSING__:Inception Labs is OpenAI-compatible at https://api.inceptionlabs.ai/v1. mercury-2 is the first diffusion LLM (dLLM) in the catalog — 5-10x faster generation than comparable autoregressive models, with tool calling, json_mode, and structured outputs.", - "inference-net": "註冊即贈 $25 美元免費額度,另提供研究補助金", - "internlm": "__MISSING__:Free monthly quota ~1M input / 3M output tokens (~10 RPM)", - "jina-ai": "Jina AI 重新排序 API 的 Bearer API 金鑰。", - "jina-reader": "使用 API 金鑰連線 Jina Reader。", - "kenari": "Kenari 在 https://kenari.id/v1/chat/completions 提供 OpenAI 相容的聊天完成端點,以及涵蓋 Claude、GPT、DeepSeek、GLM、Kimi 等模型的即時 /v1/models 目錄。OmniRoute 使用 OpenAI 協定並透過透傳方式列出模型。", - "kie": "使用 API 金鑰連線 KIE.AI。", - "kilo-gateway": "使用 API 金鑰連線 Kilo Gateway。", - "kimi": "使用 API 金鑰連線 Kimi。", - "kimi-coding-apikey": "使用 API 金鑰連線 Kimi Coding(API 金鑰)。", - "lambda-ai": "使用 API 金鑰連線 Lambda AI。", - "laozhang": "使用 API 金鑰連線 LaoZhang AI。", - "leonardo": "在 leonardo.ai/developer 取得 API 金鑰", - "liquid": "在 liquid.ai 取得 API 金鑰", - "llamagate": "使用 API 金鑰連線 LlamaGate。", - "llm7": "無需 API 金鑰即可使用(使用 'unused' 作為金鑰)。在 token.llm7.io 取得免費 token 以獲得更高限制。", - "longcat": "免費:帳號註冊 + KYC 驗證後一次性贈送 1,000 萬 tokens(LongCat-2.0)。僅限一次性 — 非每日/每月定期配額。", - "maritalk": "使用 API 金鑰連線 Maritalk。", - "meta-llama": "使用 API 金鑰連線 Meta Llama API。", - "minimax-cn": "使用 API 金鑰連線 Minimax(中國)。", - "minimax": "使用 API 金鑰連線 Minimax Coding。", - "mistral": "免費實驗方案:所有模型速率限制存取,無需信用卡", - "modal": "Modal 通常在 /v1 提供用戶自託管的 OpenAI 相容應用程式。OmniRoute 將探測 /v1/models 並將聊天流量路由至 /v1/chat/completions。", - "modelscope": "透過 ModelScope API-Inference 的免費方案 — 需要阿里雲帳號。", - "monsterapi": "在 monsterapi.ai 取得 API 金鑰", - "moonshot": "使用 API 金鑰連線 Moonshot AI。", - "morph": "免費方案:每月 25 萬額度,$0 美元", - "nanogpt": "使用 API 金鑰連線 NanoGPT。", - "nebius": "註冊即贈約 $1 美元試用額度,供 API 測試使用", - "nlpcloud": "NLP Cloud 使用專有的聊天機器人 API,而非 OpenAI chat/completions。OmniRoute 將 OpenAI 訊息轉換為 input/context/history,並提供支援的聊天機器人模型本地目錄。", - "nomic": "在 atlas.nomic.ai 取得 API 金鑰", - "nous-research": "Nous 提供 OpenAI 相容的 /v1 介面,附有大型遠端 /models 目錄。/chat/completions 端點需要有效的 API 金鑰才能進行程式化推論。", - "novita": "註冊即贈 $0.50 美元試用額度(有效期約 1 年)", - "nscale": "註冊即贈 $5 美元免費額度,供推論測試使用", - "nube": "使用 API 金鑰連線 Nube.sh。", - "nvidia": "免費開發者存取:每分鐘約 40 次請求,70+ 種模型(Kimi K2.5、GLM 4.7、DeepSeek V3.2...)", - "oci": "OCI 提供 OpenAI 相容的聊天和回應端點。Project ID 在 OmniRoute 中為選填,但 Responses 和代理工作流程可能需要。", - "ollama-cloud": "使用 API 金鑰連線 Ollama Cloud。", - "openadapter": "OpenAdapter 在 https://api.openadapter.in/v1/chat/completions 提供 OpenAI 相容的聊天完成端點,匯集 70+ 種開源模型(DeepSeek、Qwen、Kimi、MiniMax、GLM、Llama、Mistral…)。OmniRoute 使用 OpenAI 協定。", - "openai": "使用 API 金鑰連線 OpenAI。", - "opencode-go": "使用 API 金鑰連線 OpenCode Go。", - "opencode-zen": "使用 API 金鑰連線 OpenCode Zen。", - "openrouter": "使用 :free 後綴的 $0/token 免費模型 — 每分鐘 20 次 / 每天 200 次請求", - "openvecta": "註冊即贈免費額度,可用於 LLM、嵌入向量和推理模型的 OpenAI 相容推論", - "orcarouter": "在 https://www.orcarouter.ai 建立 API 金鑰(以 sk-orca- 開頭),然後以 Bearer token 形式貼上。OpenAI 相容端點為 https://api.orcarouter.ai/v1。", - "ovhcloud": "使用 API 金鑰連線 OVHcloud AI。", - "perplexity": "使用 API 金鑰連線 Perplexity。", - "piapi": "使用 API 金鑰連線 PiAPI。", - "pioneer": "$75 美元免費使用額度 — 無需信用卡", - "plamo": "__MISSING__:PLaMo is OpenAI-compatible at https://api.platform.preferredai.jp/v1. Built by Preferred Networks and optimized for Japanese. Docs are primarily in Japanese.", - "poe": "Poe 在 https://api.poe.com/v1 提供 OpenAI 相容的聊天和回應功能,並在 /usage/current_balance 進行認證餘額檢查。", - "pollinations": "免費無需金鑰方案:openai、openai-fast、openai-large、qwen-coder、mistral、deepseek、grok、gemini-flash-lite-3.1、perplexity-fast、perplexity-reasoning。進階模型(claude、gemini、midijourney)需要從 enter.pollinations.ai 取得 Pollinations API 金鑰。", - "publicai": "需要 API 金鑰 — 一次性註冊額度,之後付費", - "puter": "在 puter.com/dashboard 取得 token → 複製 Auth Token", - "qiniu": "在 https://portal.qiniu.com/ai-inference/api-key 建立七牛 AI 推論 API 金鑰,然後以 Bearer token 形式貼上。OpenAI 相容端點為 https://api.qnaigc.com/v1,使用單一金鑰代理 DeepSeek、Claude、Kimi 等模型。", - "recraft": "使用 API 金鑰連線 Recraft。", - "reka": "Reka Chat 在 /v1 提供 OpenAI 相容介面。OmniRoute 探測 /v1/models 並將聊天流量路由至 /v1/chat/completions。", - "requesty": "在 https://app.requesty.ai 建立 API 金鑰,然後以 Bearer token 形式貼上。OpenAI 相容端點為 https://router.requesty.ai/v1,附即時 /v1/models 目錄。", - "runwayml": "Runway 影片生成為任務導向。OmniRoute 提交文字轉影片或圖片轉影片作業,輪詢 /v1/tasks/[id],並將完成的影片輸出正規化為類似 OpenAI 的 /v1/videos/generations 回應。", - "sambanova": "註冊即贈 $5 美元免費額度(30 天有效期),無需信用卡", - "sap": "模型探索使用 AI_API_URL 上的 /v2/lm/scenarios/foundation-models/models。聊天請求使用 deploymentUrl/chat/completions,並需要 AI-Resource-Group。", - "sarvam": "__MISSING__:Sarvam AI is OpenAI-compatible on /v1. OmniRoute probes /v1/models and routes chat traffic to /v1/chat/completions. Models are tuned for Indic languages.", - "scaleway": "新帳戶贈送 100 萬免費 tokens — 符合歐盟/GDPR 規範(巴黎),Qwen3 235B 和 Llama 70B", - "sensenova": "在 platform.sensenova.cn 取得 API 金鑰", - "siliconflow": "$1 美元免費額度,身分驗證後另有永久免費模型", - "snowflake": "使用 API 金鑰連線 Snowflake Cortex。", - "sparkdesk": "在 console.xfyun.cn 取得 API 金鑰", - "stability-ai": "使用 API 金鑰連線 Stability AI。", - "stepfun": "在 platform.stepfun.com 取得 API 金鑰", - "sumopod": "SumoPod 在 https://ai.sumopod.com/v1/chat/completions 提供 OpenAI 相容的聊天完成端點,以及即時 /v1/models 目錄。OmniRoute 使用 OpenAI 協定並透過透傳方式列出模型。", - "suno": "貼上來自 suno.ai 的 session cookie(Clerk 驗證)", - "synthetic": "使用 API 金鑰連線 Synthetic。", - "tencent": "在 console.cloud.tencent.com 取得 API 金鑰", - "thebai": "TheB.AI OpenAI 相容閘道的 Bearer API 金鑰。", - "tinyfish": "來自 agent.tinyfish.ai/api-keys 的 X-API-Key", - "together": "使用 API 金鑰連線 Together AI。", - "tokenrouter": "TokenRouter 在 https://api.tokenrouter.com/v1/chat/completions 提供 OpenAI 相容的聊天完成端點,以及可用的 /v1/models 目錄。OmniRoute 使用 OpenAI 協定。", - "topaz": "使用 API 金鑰連線 Topaz。", - "typhoon": "__MISSING__:Typhoon is OpenAI-compatible on /v1. Built by SCB 10X (Thailand); typhoon-v2.5-30b-a3b-instruct is a thai-first, multilingual model.", - "udio": "貼上來自 udio.com 的 session cookie(Supabase 驗證)", - "uncloseai": "無需驗證。API 接受任何非空字串作為識別金鑰。", - "upstage": "使用 API 金鑰連線 Upstage。", - "v0-vercel": "使用 API 金鑰連線 v0(Vercel)。", - "venice": "使用 API 金鑰連線 Venice.ai。", - "vercel-ai-gateway": "使用 API 金鑰連線 Vercel AI Gateway。", - "vertex": "提供 Service Account JSON 或 OAuth access_token", - "vertex-partner": "提供用於 Vertex AI 合作夥伴模型的相同 Service Account JSON。", - "volcengine": "使用 API 金鑰連線火山引擎。", - "voyage-ai": "Voyage AI 嵌入向量和重新排序 API 的 Bearer API 金鑰。", - "wafer": "來自 https://wafer.ai 的 API 金鑰", - "wandb": "使用 API 金鑰連線 Weights & Biases Inference。", - "writer": "__MISSING__:Writer Palmyra is OpenAI-compatible at https://api.writer.com/v1. palmyra-x5 offers a 1M-token context window.", - "x5lab": "X5Lab 在 https://api.x5lab.dev/v1/chat/completions 提供 OpenAI 相容的聊天完成端點,以及即時 /v1/models 目錄。OmniRoute 使用 OpenAI 協定並透過透傳方式列出模型。", - "xai": "使用 API 金鑰連線 xAI(Grok)。", - "xiaomi-mimo": "使用 API 金鑰連線 Xiaomi MiMo。", - "yi": "在 platform.lingyiwanwu.com 取得 API 金鑰", - "zai": "來自 https://open.bigmodel.cn/usercenter/apikeys 的 API 金鑰", - "zenmux": "ZenMux 在 /api/v1/chat/completions 提供 OpenAI 相容的聊天完成端點,以及 Anthropic Messages(/api/anthropic/v1/messages)和 Google Gemini(/api/vertex-ai)協定介面。OmniRoute 使用 OpenAI 協定。", - "galadriel": "使用 API 金鑰連線 Galadriel。", - "predibase": "$25 美元免費試用額度(30 天有效期)", - "chenzk": "OpenAI 相容閘道,在 chenzk.top 提供即時模型目錄。", - "freepik": "使用 Freepik 的 Mystic API 生成圖片。", - "freetheai": "免費的 OpenAI 相容閘道,支援透傳模型。", - "g4f-gemini": "免費無需金鑰的 g4f.space Gemini 反向代理,每分鐘限制 5 次請求。", - "g4f-groq": "免費無需金鑰的 g4f.space Groq 反向代理,每分鐘限制 5 次請求。", - "g4f-nvidia": "免費無需金鑰的 g4f.space NVIDIA NIM 反向代理,每分鐘限制 5 次請求。", - "g4f-ollama": "來自 g4f.space 的免費無需金鑰託管 Ollama 閘道,每分鐘限制 5 次請求。", - "g4f-pollinations": "免費無需金鑰的 g4f.space Pollinations 反向代理,每分鐘限制 5 次請求。", - "mixedbread": "使用 Mixedbread API 建立嵌入向量。", - "segmind": "使用 Segmind 的託管模型生成圖片和影片。", - "amazon-q": "使用與 Kiro 相同的 AWS Builder ID 或匯入的 refresh-token 流程,但將 Amazon Q 連線分開管理。", - "antigravity": "使用現有的 OAuth 流程連線 Antigravity。", - "agy": "匯入你的 Antigravity CLI(`agy`)登入資訊(貼上/上傳其 token 檔案)、自動偵測本地 CLI 登入,或使用 Google 登入。共用 Antigravity 後端(包含 Claude 模型)。", - "claude": "使用現有的 OAuth 流程連線 Claude Code。", - "cline": "使用現有的 OAuth 流程連線 Cline。", - "cursor": "使用現有的 OAuth 流程連線 Cursor IDE。", - "github": "使用現有的 OAuth 流程連線 GitHub Copilot。", - "gitlab-duo": "具有 ai_features + read_user 範圍的 OAuth 應用程式。在此 OmniRoute 實例上設定 GITLAB_DUO_OAUTH_CLIENT_ID 和可選的 GITLAB_DUO_OAUTH_CLIENT_SECRET。", - "kilocode": "使用現有的 OAuth 流程連線 Kilo Code。", - "kimi-coding": "使用現有的 OAuth 流程連線 Kimi Coding。", - "kiro": "免費方案:每月 50 額度(約 2.5 萬至 10 萬 tokens)。⚠️ Kiro 服務條款禁止第三方代理/轉接使用。", - "codex": "使用現有的 OAuth 流程連線 OpenAI Codex。", - "qwen": "使用現有的 OAuth 流程連線 Qwen Code。" + "360ai": "在ai.360.cn獲取API Key", + "agentrouter": "在https://agentrouter.org/register獲取 $200 免費額度—無需信用卡。", + "agnes": "在agnes-ai.com獲取API Key", + "aimlapi": "免費層已暫停 (2026) —AI/ML API現在僅支援按需付費(最低充值 $20);無循環免費額度。", + "ai21": "註冊即送 $10 體驗額度(有效期 3 個月),無需信用卡", + "alibaba": "使用API Key連接阿里巴巴。", + "alibaba-cn": "使用API Key連接阿里巴巴(中國)。", + "bailian-coding-plan": "使用API Key連接阿里巴巴編碼計劃。", + "bedrock": "原生Bedrock整合:模型發現使用Bedrock基礎模型和推理設定檔,而聊天使用區域Bedrock Runtime Converse/ConverseStream API。", + "anthropic": "使用API Key連接Anthropic。", + "ant-ling": "使用API Key連接Ant-Ling。", + "api-airforce": "從https://panel.api.airforce獲取您的API Key—相容OpenAI的端點位於https://api.airforce/v1", + "arcee-ai": "在arcee.ai獲取API Key", + "azure-ai": "Foundry使用OpenAI v1 接口,並將部署名稱作為模型。OmniRoute會將根資源URL規範化為v1 chat和 /models端點。", + "azure-openai": "使用您的Azure OpenAI API Key。Base URL應為您的資源端點,例如https://my-resource.openai.azure.com。", + "bai": "b.ai相容OpenAI的LLM網關(與TheB.AI不同)的Bearer API Key。在https://docs.b.ai創建金鑰,然後使用https://api.b.ai/v1 作為相容OpenAI的base URL。", + "baichuan": "在platform.baichuan-ai.com獲取API Key", + "baidu": "在console.bce.baidu.com獲取API Key", + "qianfan": "使用來自百度智能雲的千帆API Key。預設端點為相容OpenAI的v2。", + "baseten": "$30 免費試用額度,用於GPU推理", + "bazaarlink": "在https://bazaarlink.ai創建免費API Key—模型 'auto:free' 路由至零成本推理。所有模型均使用provider/model-name格式,例如xiaomi/mimo-v2.5-pro。", + "black-forest-labs": "使用API Key連接Black Forest Labs。", + "blackbox": "免費層:無限制的基礎聊天以及Minimax-M2.5,無需信用卡", + "bluesminds": "在https://www.bluesminds.com獲取您的API Key—相容OpenAI的端點位於https://api.bluesminds.com/v1,提供每日免費額度。VIP模型(Claude Opus 4.5、Gemini 2.5 Pro)消耗pi額度。", + "byteplus": "使用API Key連接BytePlus ModelArk。", + "bytez": "$1 免費額度,每 4 周刷新一次", + "cerebras": "免費試用:1M tokens/天、30K TPM、5 RPM—無需信用卡。", + "charm-hyper": "在https://hyper.charm.land創建API Key,然後將其作為Bearer令牌粘貼在此處。", + "chutes": "Chutes相容OpenAI的網關的Bearer API Key。", + "clarifai": "Clarifai在 /v2/ext/openai/v1 上公開了相容OpenAI的chat、responses和 /models。公共/社區模型通常需要PAT;應用範圍的金鑰僅適用於該應用內部的資源。", + "cloudflare-ai": "需要API Token和Account ID(可在dash.cloudflare.com找到)", + "clova-studio": "使用API Key連接Clova Studio。", + "codestral": "使用API Key連接Codestral。", + "cohere": "免費試用:每月 1,000 次API呼叫用於測試,無需信用卡", + "command-code": "從Command Code創建或複製API Key,然後將其作為Bearer令牌粘貼在此處。", + "coze": "在coze.com/open/api獲取API Key", + "crof": "使用API Key連接CrofAI。", + "databricks": "使用API Key連接Databricks。", + "datarobot": "預設網關從 /genai/llmgw/catalog/ 編目活動模型。還支援使用部署URL進行直接相容OpenAI的聊天請求。", + "deepinfra": "免費註冊額度,用於API測試和模型探索", + "deepseek": "註冊即送 5M免費token - 無需信用卡", + "dgrid": "在https://dgrid.ai創建DGrid API Key,然後使用https://api.dgrid.ai/v1 作為相容OpenAI的base URL。", + "dify": "從您的Dify實例獲取API Key。", + "digitalocean": "使用API Key連接DigitalOcean。", + "dit": "dit.ai (Distributed Intelligence Trade) 是一個相容OpenAI的路由器/網關,具有動態按請求計費功能,在https://api.dit.ai/v1 上公開 /v1/chat/completions。OmniRoute使用OpenAI協議;支出/節省分析位於dit.ai看板中。", + "doubao": "在console.volcengine.com獲取API Key", + "empower": "Empower在https://app.empower.dev/api/v1 上公開了相容OpenAI的聊天,並在empower-functions上支援工具呼叫。", + "factory": "在https://app.factory.ai/settings/api-keys獲取您的Factory API Key,然後將其作為Bearer令牌粘貼。相容OpenAI的端點位於https://api.factory.ai/v1。", + "fal-ai": "使用API Key連接Fal.ai。", + "featherless-ai": "提供免費層—無需信用卡", + "fenayai": "FenayAI相容OpenAI的網關的Bearer API Key。", + "firecrawl": "使用API Key連接Firecrawl。", + "fireworks": "註冊即可獲得 $1 免費初始額度用於API測試", + "freeaiapikey": "適用於 40+ 種模型的折扣API代理,包括GPT-5、Claude Opus 4.6、Claude Sonnet 4.6、Qwen 3.5。在https://freeaiapikey.com/dashboard獲取您的API Key。Base URL: https://freeaiapikey.com/v1.", + "freemodel-dev": "在https://freemodel.dev獲取 $300 免費API額度—無需支付資訊。相容OpenAI的端點。提供GPT-5.4 和GPT-5.5 模型。", + "friendliai": "無伺服器推理免費層—無需信用卡", + "gemini": "永久免費:Gemini 2.5 Flash每天 1,500 次請求—無需信用卡,在aistudio.google.com獲取金鑰", + "gigachat": "使用API Key連接GigaChat (Sber)。", + "github-models": "在github.com/settings/tokens創建具有 'models: read' 作用域的GitHub PAT", + "gitlab": "用於公共Code Suggestions API的GitLab個人訪問令牌。不使用gitlab.com時請設定自託管Base URL。", + "gitlawb-gmi": "從Gitlawb Opengateway控制面板獲取您的API Key。", + "gitlawb": "從Gitlawb Opengateway控制面板獲取您的API Key。", + "glm": "使用API Key連接GLM Coding。", + "glm-cn": "使用API Key連接GLM Coding (China)。", + "glmt": "預設GLM設定檔,具有更高的Token預算、啟用思考功能以及更長的超時時間。", + "getgoapi": "使用API Key連接GoAPI。", + "groq": "免費層:30 RPM / 14.4K RPD—無需信用卡", + "hackclub": "在ai.hackclub.com使用您的Hack Club賬戶登入。", + "haiper": "在haiper.ai/haiper-api獲取API Key", + "heroku": "使用API Key連接Heroku AI。", + "hcnsec": "在api.hcnsec.cn獲取API Key", + "huggingface": "適用於數千種模型(Whisper、VITS、SDXL…)的免費推理API", + "hyperbolic": "註冊即送 $1-5 無伺服器推理試用額度", + "watsonx": "watsonx模型網關在 /ml/gateway/v1 下公開了相容OpenAI的 /chat/completions和 /models。", + "ideogram": "在ideogram.ai/docs/api獲取API Key", + "iflytek": "在console.xfyun.cn獲取API Key", + "inception": "使用API Key連接Inception AI。", + "inference-net": "註冊即送 $25 免費額度,並提供研究資助", + "internlm": "使用API Key連接InternLM。", + "jina-ai": "用於Jina AI rerank API的Bearer API Key。", + "jina-reader": "使用API Key連接Jina Reader。", + "kenari": "Kenari在https://kenari.id/v1/chat/completions提供了相容OpenAI的聊天補全端點,以及涵蓋Claude、GPT、DeepSeek、GLM、Kimi等的實時 /v1/models目錄。OmniRoute使用OpenAI協議並通過直通方式列出模型。", + "kie": "使用API Key連接KIE.AI。", + "kilo-gateway": "使用API Key連接Kilo Gateway。", + "kimi": "使用API Key連接Kimi。", + "kimi-coding-apikey": "使用API Key連接Kimi Coding (API Key)。", + "lambda-ai": "使用API Key連接Lambda AI。", + "laozhang": "使用API Key連接LaoZhang AI。", + "leonardo": "在leonardo.ai/developer獲取API Key", + "liquid": "在liquid.ai獲取API Key", + "llamagate": "使用API Key連接LlamaGate。", + "llm7": "無需API Key即可使用(使用 'unused' 作為金鑰)。在token.llm7.io獲取免費Token以獲得更高限制。", + "longcat": "免費:完成賬戶註冊 + KYC認證後一次性贈送 10M Token (LongCat-2.0)。僅限一次—非每日/每月定期額度。", + "maritalk": "使用API Key連接Maritalk。", + "meta-llama": "使用API Key連接Meta Llama API。", + "minimax-cn": "使用API Key連接Minimax (China)。", + "minimax": "使用API Key連接Minimax Coding。", + "mistral": "免費實驗層級:對所有模型的速率限制訪問,無需信用卡", + "modal": "Modal通常在 /v1 上提供用戶託管的OpenAI相容應用。OmniRoute將探測 /v1/models並將聊天流量路由到 /v1/chat/completions。", + "modelscope": "通過ModelScope API-Inference提供的免費層級—需要阿里巴巴賬號。", + "monsterapi": "在monsterapi.ai獲取API Key", + "moonshot": "使用API Key連接Moonshot AI。", + "morph": "免費層級:每月 250K額度,$0", + "nanogpt": "使用API Key連接NanoGPT。", + "nebius": "註冊即送約 $1 試用額度用於API測試", + "nlpcloud": "NLP Cloud使用專有的聊天機器人API,而非OpenAI chat/completions。OmniRoute將OpenAI消息適配為input/context/history,並公開受支援聊天機器人模型的本地目錄。", + "nomic": "在atlas.nomic.ai獲取API Key", + "nous-research": "Nous公開了一個相容OpenAI的 /v1 接口以及龐大的遠程 /models目錄。/chat/completions端點需要有效的API Key以進行程式化推理。", + "novita": "註冊即送 $0.50 試用額度(有效期約 1 年)", + "nscale": "註冊即送 $5 免費額度用於推理測試", + "nube": "使用API Key連接Nube.sh。", + "nvidia": "免費開發者訪問權限:約 40 RPM,70+ 款模型(Kimi K2.5、GLM 4.7、DeepSeek V3.2...)", + "oci": "OCI公開了相容OpenAI的chat和responses端點。Project ID在OmniRoute中是可選的,但Responses和智能體工作流可能需要它。", + "ollama-cloud": "使用API Key連接Ollama Cloud。", + "openadapter": "OpenAdapter在https://api.openadapter.in/v1/chat/completions公開了一個相容OpenAI的chat completions端點,聚合了 70+ 款開源模型(DeepSeek、Qwen、Kimi、MiniMax、GLM、Llama、Mistral、…)。OmniRoute使用OpenAI協議。", + "openai": "使用API Key連接OpenAI。", + "opencode-go": "使用API Key連接OpenCode Go。", + "opencode-zen": "使用API Key連接OpenCode Zen。", + "openrouter": "帶有 :free後綴的免費模型($0/token)- 20 RPM / 200 RPD", + "openvecta": "註冊即送免費額度,用於跨LLM、嵌入和推理模型的OpenAI相容推理", + "orcarouter": "在https://www.orcarouter.ai創建API Key(以sk-orca- 開頭),然後將其作為Bearer令牌粘貼。相容OpenAI的端點位於https://api.orcarouter.ai/v1。", + "ovhcloud": "使用API Key連接OVHcloud AI。", + "perplexity": "使用API Key連接Perplexity。", + "piapi": "使用API Key連接PiAPI。", + "pioneer": "$75 免費使用額度—無需信用卡", + "plamo": "使用API Key連接Plamo。", + "poe": "Poe在https://api.poe.com/v1 上公開了相容OpenAI的chat和responses,並在 /usage/current_balance上提供經過身份驗證的餘額查詢。", + "pollinations": "免金鑰免費層級:openai、openai-fast、openai-large、qwen-coder、mistral、deepseek、grok、gemini-flash-lite-3.1、perplexity-fast、perplexity-reasoning。高級模型(claude、gemini、midijourney)需要來自enter.pollinations.ai的Pollinations API Key。", + "publicai": "需要API Key—一次性註冊額度,之後付費", + "puter": "在puter.com/dashboard獲取令牌 → 複製Auth Token", + "qiniu": "在https://portal.qiniu.com/ai-inference/api-key創建Qiniu AI推理API Key,然後將其作為Bearer令牌粘貼在此處。相容OpenAI的端點位於https://api.qnaigc.com/v1,通過一個金鑰代理DeepSeek、Claude、Kimi等多種模型。", + "recraft": "使用API Key連接Recraft。", + "reka": "Reka Chat在 /v1 上相容OpenAI。OmniRoute探測 /v1/models並將聊天流量路由到 /v1/chat/completions。", + "requesty": "在https://app.requesty.ai創建API Key,然後將其作為Bearer令牌粘貼在此處。相容OpenAI的端點位於https://router.requesty.ai/v1,並提供實時的 /v1/models目錄。", + "runwayml": "Runway視頻生成基於任務。OmniRoute提交文生視頻或圖生視頻作業,輪詢 /v1/tasks/[id],並將完成的視頻輸出規範化為類似OpenAI的 /v1/videos/generations回應。", + "sambanova": "註冊即送 $5 免費額度(30 天有效期),無需信用卡", + "sap": "模型發現使用AI_API_URL上的 /v2/lm/scenarios/foundation-models/models。Chat請求使用deploymentUrl/chat/completions並需要AI-Resource-Group。", + "sarvam": "使用API Key連接Sarvam AI。", + "scaleway": "新賬戶可獲 1M免費Token—符合EU/GDPR規範(巴黎),Qwen3 235B & Llama 70B", + "sensenova": "在platform.sensenova.cn獲取API Key", + "siliconflow": "身份驗證後可獲 $1 免費額度以及永久免費模型", + "snowflake": "使用API Key連接Snowflake Cortex。", + "sparkdesk": "在console.xfyun.cn獲取API Key", + "stability-ai": "使用API Key連接Stability AI。", + "stepfun": "在platform.stepfun.com獲取API Key", + "sumopod": "SumoPod在https://ai.sumopod.com/v1/chat/completions提供了相容OpenAI的chat completions端點,以及實時的 /v1/models目錄。OmniRoute使用OpenAI協議並通過直通方式列出模型。", + "suno": "粘貼來自suno.ai的session cookie(Clerk認證)", + "synthetic": "使用API Key連接Synthetic。", + "tencent": "在console.cloud.tencent.com獲取API Key", + "thebai": "用於TheB.AI相容OpenAI網關的Bearer API Key。", + "tinyfish": "來自agent.tinyfish.ai/api-keys的X-API-Key", + "together": "使用API Key連接Together AI。", + "tokenrouter": "TokenRouter在https://api.tokenrouter.com/v1/chat/completions提供了相容OpenAI的chat completions端點,以及可用的 /v1/models目錄。OmniRoute使用OpenAI協議。", + "topaz": "使用API Key連接Topaz。", + "typhoon": "使用API Key連接Typhoon AI。", + "udio": "粘貼來自udio.com的session cookie(Supabase認證)", + "uncloseai": "無需身份驗證。API接受任何非空字串作為標識金鑰。", + "upstage": "使用API Key連接Upstage。", + "v0-vercel": "使用API Key連接v0 (Vercel)。", + "venice": "使用API Key連接Venice.ai。", + "vercel-ai-gateway": "使用API Key連接Vercel AI Gateway。", + "vertex": "提供Service Account JSON或OAuth access_token", + "vertex-partner": "提供用於Vertex AI合作伙伴模型的相同Service Account JSON。", + "volcengine": "使用API Key連接Volcengine。", + "voyage-ai": "用於Voyage AI embeddings和rerank API的Bearer API Key。", + "wafer": "來自https://wafer.ai的API Key", + "wandb": "使用API Key連接Weights & Biases Inference。", + "writer": "使用API Key連接Writer。", + "x5lab": "X5Lab在https://api.x5lab.dev/v1/chat/completions提供了相容OpenAI的chat completions端點,以及實時的 /v1/models目錄。OmniRoute使用OpenAI協議並通過直通方式列出模型。", + "xai": "使用API Key連接xAI (Grok)。", + "xiaomi-mimo": "使用API Key連接Xiaomi MiMo。", + "yi": "在platform.lingyiwanwu.com獲取API Key", + "zai": "來自https://open.bigmodel.cn/usercenter/apikeys的API Key", + "zenmux": "ZenMux在 /api/v1/chat/completions提供了相容OpenAI的chat completions端點,以及Anthropic Messages (/api/anthropic/v1/messages) 和Google Gemini (/api/vertex-ai) 協議接口。OmniRoute使用OpenAI協議。", + "galadriel": "使用API Key連接Galadriel。", + "predibase": "$25 免費試用額度(30 天有效期)", + "chenzk": "相容OpenAI的網關,在chenzk.top提供實時模型目錄。", + "freepik": "使用Freepik的Mystic API生成圖像。", + "freetheai": "免費的OpenAI相容網關,支援直通模型。", + "g4f-gemini": "免費免金鑰的g4f.space Gemini反向代理,限制為每分鐘 5 次請求。", + "g4f-groq": "免費免金鑰的g4f.space Groq反向代理,限制為每分鐘 5 次請求。", + "g4f-nvidia": "免費免金鑰的g4f.space NVIDIA NIM反向代理,限制為每分鐘 5 次請求。", + "g4f-ollama": "來自g4f.space的免費免金鑰託管Ollama網關,限制為每分鐘 5 次請求。", + "g4f-pollinations": "免費免金鑰的g4f.space Pollinations反向代理,限制為每分鐘 5 次請求。", + "mixedbread": "使用Mixedbread API創建嵌入。", + "segmind": "使用Segmind的託管模型生成圖像和視頻。", + "amazon-q": "使用與Kiro相同的AWS Builder ID或導入的refresh-token流程,但保持Amazon Q連接獨立。", + "antigravity": "使用現有的OAuth流程連接Antigravity。", + "agy": "導入您的Antigravity CLI (`agy`) 登入資訊(粘貼/上傳其令牌檔案)、自動檢測本地CLI登入,或使用Google登入。共享Antigravity後端(包括Claude模型)。", + "claude": "使用現有的OAuth流程連接Claude Code。", + "cline": "使用現有的OAuth流程連接Cline。", + "cursor": "使用現有的OAuth流程連接Cursor IDE。", + "github": "使用現有的OAuth流程連接GitHub Copilot。", + "gitlab-duo": "具有ai_features + read_user作用域的OAuth應用程式。在此OmniRoute實例上設定GITLAB_DUO_OAUTH_CLIENT_ID以及可選的GITLAB_DUO_OAUTH_CLIENT_SECRET。", + "kilocode": "使用現有的OAuth流程連接Kilo Code。", + "kimi-coding": "使用現有的OAuth流程連接Kimi Coding。", + "kiro": "免費層:50 積分/月(約 25K–100K令牌)。⚠️ Kiro服務條款禁止使用第三方代理/測試框架。", + "codex": "使用現有的OAuth流程連接OpenAI Codex。", + "qwen": "使用現有的OAuth流程連接Qwen Code。" }, - "passthroughModelsDescription": "{provider} 接受提供者本機模型 ID。從 /models 匯入或新增用於路由的自定義 ID。", - "bedrockModelsDescription": "Amazon Bedrock 模型的範圍按 AWS 區域劃分。從 /models 匯入或新增在所選區域中啟用的基岩模型 ID。", - "bedrockModelPlaceholder": "人類.克勞德十四行詩-4-6", - "addProviderSessionCookieTitle": "新增 {provider} 會話 cookie", - "openWebProviderSite": "開啟 {host}", - "addProviderWebTokenTitle": "新增 {provider} 網路權杖", - "addProviderConnectionTitle": "新增 {provider} 連線", - "webTokenCredentialLabel": "網路會話權杖", + "passthroughModelsDescription": "{provider} 接受提供者本機模型ID。從 /models導入或新增用於路由的自定義ID。", + "bedrockModelsDescription": "Amazon Bedrock模型的範圍按AWS區域劃分。從 /models導入或新增在所選區域中啟用的基岩模型ID。", + "bedrockModelPlaceholder": "anthropic.claude-sonnet-4-6", + "addProviderSessionCookieTitle": "新增 {provider} 工作階段cookie", + "openWebProviderSite": "打開 {host}", + "addProviderWebTokenTitle": "新增 {provider} 網路令牌", + "addProviderConnectionTitle": "新增 {provider} 連接", + "webTokenCredentialLabel": "網路工作階段令牌", "webNoAuthCredentialLabel": "無需任何憑證", - "webCookieCredentialHint": "所需 cookie:{credential}。貼上您自己登入的 {provider} Web 會話中的 Cookie 標頭值。請勿包含 Cookie: 字首。", - "webTokenCredentialHint": "憑證:{credential}。貼上您自己登入的 {provider} Web 會話中的權杖值,或者貼上 DevTools HAR 匯出(如果提供者支援)的權杖值。", - "webCookieEditHint": "留空以保留當前會話 cookie。所需 cookie:{credential}。", - "webTokenEditHint": "留空以保留當前的 ​​Web 會話權杖。憑證:{credential}。", - "webSessionGuideTitle": "如何獲取會話憑證", - "webSessionGuideIntro": "{provider} 使用瀏覽器網路會話而不是 API 金鑰。", - "webCookieRequiredCredential": "所需 cookie:{credential}", - "webTokenRequiredCredential": "所需權杖:{credential}", + "webCookieCredentialHint": "所需cookie:{credential}。粘貼您自己登入的 {provider} Web工作階段中的Cookie標頭值。請勿包含Cookie: 前綴。", + "webTokenCredentialHint": "憑證:{credential}。粘貼您自己登入的 {provider} Web工作階段中的令牌值,或者粘貼DevTools HAR導出(如果提供者支援)的令牌值。", + "webCookieEditHint": "留空以保留當前工作階段cookie。所需cookie:{credential}。", + "webTokenEditHint": "留空以保留當前的 ​​Web工作階段令牌。憑證:{credential}。", + "webSessionGuideTitle": "如何獲取工作階段憑證", + "webSessionGuideIntro": "{provider} 使用瀏覽器網路工作階段而不是API Key。", + "webCookieRequiredCredential": "所需cookie:{credential}", + "webTokenRequiredCredential": "所需令牌:{credential}", "webSessionGuideStep1": "在瀏覽器中登入 {provider}。", - "webSessionGuideStep2": "開啟瀏覽器開發人員工具並檢查 Web 應用程式發出的請求。", - "webSessionGuideStep3": "從提供者自己的域複製所需的憑據。對於 cookie,僅複製 Cookie 標頭值並省略 Cookie:。", - "webSessionGuideStep4": "將其貼上到此處並檢查連線。如果它停止工作,請重新登入並將其替換為新值。", - "webSessionSecurityHint": "將其視為密碼:它可以訪問您登入的網路帳戶,直到其過期或被撤銷。", + "webSessionGuideStep2": "打開瀏覽器開發人員工具並檢查Web應用程式發出的請求。", + "webSessionGuideStep3": "從提供者自己的域複製所需的憑據。對於cookie,僅複製Cookie標頭值並省略Cookie:。", + "webSessionGuideStep4": "將其粘貼到此處並檢查連接。如果它停止工作,請重新登入並將其替換為新值。", + "webSessionSecurityHint": "將其視為密碼:它可以訪問您登入的網路帳戶,直到其過期或已撤銷。", "webNoAuthGuideTitle": "無需任何憑證", - "webNoAuthGuideBody": "{provider} 不需要 API 金鑰或 cookie。儲存連線以使用其免費 Web 端點。", - "webSessionCredentialValidationFailed": "會話憑據驗證失敗。重新登入,複製新的憑據,然後重試。", + "webNoAuthGuideBody": "{provider} 不需要API Key或cookie。保存連接以使用其免費Web端點。", + "webSessionCredentialValidationFailed": "工作階段憑據驗證失敗。重新登入,複製新的憑據,然後重試。", "checkCookie": "檢查cookie", - "checkWebToken": "檢查權杖", + "checkWebToken": "檢查令牌", "huggingchatLabel": "HuggingChat(免費)", - "huggingchatDesc": "通過 huggingface.co/chat 免費使用 LLM 聊天", - "poeWebLabel": "Poe 網頁", - "poeWebDesc": "通過 poe.com 進行多模型聊天", + "huggingchatDesc": "通過huggingface.co/chat免費使用LLM聊天", + "poeWebLabel": "Poe網頁", + "poeWebDesc": "通過poe.com進行多模型聊天", "veniceWebLabel": "威尼斯網路", - "veniceWebDesc": "隱私專注的 AI 聊天", + "veniceWebDesc": "隱私專注的AI聊天", "v0VercelWebLabel": "v0 Vercel Web", - "v0VercelWebDesc": "通過 v0.dev 的 AI 程式碼生成", + "v0VercelWebDesc": "通過v0.dev的AI代碼生成", "kimiWebLabel": "Kimi Web", - "kimiWebDesc": "通過 www.kimi.com 訪問 Moonshot AI 聊天(國際版,Connect-RPC API)", + "kimiWebDesc": "通過www.kimi.com訪問Moonshot AI聊天(國際版,Connect-RPC API)", "doubaoWebLabel": "Dola Web", - "doubaoWebDesc": "通過 dola.com 訪問字節跳動 AI 聊天", - "overrideBaseUrlAdvanced": "進階:覆寫基礎 URL", - "overrideBaseUrlHint": "進階:將此內建提供者指向自訂端點。留空以使用預設值。", - "bulkAddFormatHintCloudflare": "每行一個金鑰。格式:name|accountId|apiKey(Cloudflare 帳戶 ID + API 令牌)。", - "lmarenaWebCookieHint": "開啟 arena.ai,登入後從網路請求中複製完整的 Cookie 標頭。請包含 arena-auth-prod-v1.0 和 arena-auth-prod-v1.1(以及後續區塊,如有),最好附帶 cf_clearance。請勿僅貼上空白的 arena-auth-prod-v1 cookie。可選:若 create-evaluation 仍然回傳 403,可提供 providerSpecificData.recaptchaV3Token。", + "doubaoWebDesc": "通過dola.com訪問位元組跳動AI聊天", + "overrideBaseUrlAdvanced": "高級:覆蓋基礎URL", + "overrideBaseUrlHint": "高級:將此內置提供者指向自定義端點。留空以使用預設值。", + "bulkAddFormatHintCloudflare": "每行一個金鑰。格式:name|accountId|apiKey(Cloudflare賬戶ID + API令牌)。", + "lmarenaWebCookieHint": "打開arena.ai,登入,然後從網路請求中複製完整的Cookie請求標頭。包含arena-auth-prod-v1.0 和arena-auth-prod-v1.1(如果存在更多分塊也一併包含),最好附帶cf_clearance。請勿僅粘貼空的arena-auth-prod-v1 cookie。可選:如果create-evaluation仍返回 403,可提供providerSpecificData.recaptchaV3Token。", "kimiOfficialSupporterBadge": "創始好友", - "kimiOfficialSupporterTooltip": "Kimi(Moonshot AI)是 OmniRoute 的創始開源好友", + "kimiOfficialSupporterTooltip": "Kimi(Moonshot AI)是OmniRoute的創始開源好友", "cheaperInferenceSupporterBadge": "開源好友", "cheaperInferenceSupporterTooltip": "Cheaper Inference 作為開源好友支持 OmniRoute", - "kimiPartnerLinkNote": "合作夥伴連結 — 支援 OmniRoute,您無需額外付費", + "kimiPartnerLinkNote": "合作伙伴連結—支援OmniRoute,您無需承擔額外費用", "ccAliasSectionTitle": "__MISSING__:Expose in Claude Code (claude/…)", "ccAliasSectionHint": "__MISSING__:Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", "ccAliasProviderLevelLabel": "__MISSING__:Provider default", @@ -6002,11 +6002,11 @@ "routing": "路由", "cache": "快取", "resilience": "韌性", - "description": "說明", + "description": "描述", "enable": "啟用", - "disable": "停用", + "disable": "禁用", "update": "更新", - "routingSettingsIntro": "控制您的請求如何路由、轉換和傳送給 AI 提供者。", + "routingSettingsIntro": "控制您的請求如何路由、轉換和發送給AI提供者。", "routingOpDropParagraphContainsLabel": "丟棄段落(包含)", "routingOpDropParagraphStartsWithLabel": "丟棄段落(開頭匹配)", "routingOpReplaceTextLabel": "替換文本", @@ -6016,30 +6016,30 @@ "routingOpAppendSystemBlockLabel": "在系統塊末尾追加", "routingOpInjectBillingHeaderLabel": "注入計費頭", "routingOpObfuscateWordsLabel": "混淆詞語(ZWJ)", - "routingOpDropParagraphContainsDesc": "移除系統提示中包含任意指定子串的段落(以空行分割的文本塊)。用於剝離 Anthropic 分類器會標記的第三方客戶端指紋,例如 'github.com/anomalyco/opencode' 或 'docs.openwebui.com'。", - "routingOpDropParagraphStartsWithDesc": "移除以任一指定字首開頭的段落。用於剝離宣告呼叫方客戶端的身份行,例如 'You are OpenCode' 或 'You are Open WebUI'。", - "routingOpReplaceTextDesc": "用一個字面子串替換另一個字面子串。用於已知的觸發短語 — 例如把 'Here is some useful information about the environment you are running in:' 改寫為 'Environment context you are running in:'(經驗證的觸發短語)。", - "routingOpReplaceRegexDesc": "替換匹配正規表示式的文本。當你需要字元類、可選空白或錨點等模式時使用。執行時會捕獲語法錯誤的正則。", - "routingOpDropBlockContainsDesc": "移除整個系統塊(而非僅段落),只要其文本包含任一指定子串。當一整塊帶指紋時使用,例如注入的 MCP 伺服器描述。", - "routingOpPrependSystemBlockDesc": "在系統陣列的開頭插入一個新的文本塊。用於新增 Anthropic 分類器期望的 SDK 身份宣告 'You are a Claude agent, built on Anthropic's Claude Agent SDK.'。", + "routingOpDropParagraphContainsDesc": "移除系統提示中包含任意指定子串的段落(以空行分割的文本塊)。用於剝離Anthropic分類器會標記的第三方客戶端指紋,例如 'github.com/anomalyco/opencode' 或 'docs.openwebui.com'。", + "routingOpDropParagraphStartsWithDesc": "移除以任一指定前綴開頭的段落。用於剝離聲明呼叫方客戶端的身份行,例如 'You are OpenCode' 或 'You are Open WebUI'。", + "routingOpReplaceTextDesc": "用一個字面子串替換另一個字面子串。用於已知的觸發短語—例如把 'Here is some useful information about the environment you are running in:' 改寫為 'Environment context you are running in:'(經驗證的觸發短語)。", + "routingOpReplaceRegexDesc": "替換匹配正則表達式的文本。當你需要字符類、可選空白或錨點等模式時使用。運行時會捕獲語法錯誤的正則。", + "routingOpDropBlockContainsDesc": "移除整個系統塊(而非僅段落),只要其文本包含任一指定子串。當一整塊帶指紋時使用,例如注入的MCP伺服器描述。", + "routingOpPrependSystemBlockDesc": "在系統陣列的開頭插入一個新的文本塊。用於新增Anthropic分類器期望的SDK身份聲明 'You are a Claude agent, built on Anthropic's Claude Agent SDK.'。", "routingOpAppendSystemBlockDesc": "在系統陣列末尾追加一個新文本塊。用於不必置於 [0] 位置的修飾性內容。", - "routingOpInjectBillingHeaderDesc": "在前置位置插入特殊的 'x-anthropic-billing-header: cc_version=...; cc_entrypoint=...; cch=...;' 文本塊,用於通過 Anthropic 分類器校驗。CC 橋接轉發端點必須使用;原生 claude 提供者已自帶計費行,在那裡通常無需此操作。", - "routingOpObfuscateWordsDesc": "在每個指定詞的首字母后插入零寬連字元,例如 'opencode' 變為 'o‍pencode'。視覺上對人類完全相同,但能繞過分類器的詞匹配。作用於系統塊、使用者/助手訊息以及工具描述。", + "routingOpInjectBillingHeaderDesc": "在前置位置插入特殊的 'x-anthropic-billing-header: cc_version=...; cc_entrypoint=...; cch=...;' 文本塊,用於通過Anthropic分類器校驗。Claude Code橋接轉發端點必須使用;原生claude提供者已自帶計費行,在那裡通常無需此操作。", + "routingOpObfuscateWordsDesc": "在每個指定詞的首字母后插入零寬連字符,例如 'opencode' 變為 'o‍pencode'。視覺上對人類完全相同,但能繞過分類器的詞匹配。作用於系統塊、用戶/助手消息以及工具描述。", "routingNeedlesHint": "子串列表。段落只要包含其中任一項即匹配。通過「新增條目」逐行新增。", "routingPrefixesHint": "字串列表。段落以其中任一項開頭即匹配(匹配前會去除前導空白)。", "routingCaseSensitiveHint": "開啟時 'OpenCode' 與 'opencode' 視為不同字串。關閉(預設)時忽略大小寫。", - "routingMatchLiteralHint": "要查詢的精確字面子串,不解析為正則 — . * ? 等特殊字元按字面處理。", + "routingMatchLiteralHint": "要查找的精確字面子串,不解析為正則— . * ? 等特殊字符按字面處理。", "routingReplacementTextHint": "替換字串。留空則刪除匹配項,周圍文本保持不變。", "routingAllOccurrencesHint": "開啟(預設)時替換所有出現位置;關閉時僅替換第一次匹配。", - "routingPatternHint": "JavaScript 正規表示式源,不要用斜槓包裹 — 直接寫 'foo(.*)bar'。無法編譯的模式將被服務端拒絕。", - "routingRegexFlagsHint": "JavaScript 正則修飾符(g = 全部匹配,i = 忽略大小寫,s = 點匹配換行,m = 多行)。預設 'g'。", - "routingBlockTextHint": "新系統塊的完整文本。使用字面字串;系統塊僅儲存文本。", + "routingPatternHint": "JavaScript正則表達式源,不要用斜槓包裹—直接寫 'foo(.*)bar'。無法編譯的模式將被服務端拒絕。", + "routingRegexFlagsHint": "JavaScript正則修飾符(g = 全部匹配,i = 忽略大小寫,s = 點匹配換行,m = 多行)。預設 'g'。", + "routingBlockTextHint": "新系統塊的完整文本。使用字面字串;系統塊僅存儲文本。", "routingIdempotencyKeyHint": "可選。設定後,如果已有以該鍵開頭的塊存在,則跳過此操作,避免重試時重複插入。", - "routingBillingEntrypointHint": "作為 'cc_entrypoint=' 注入的值。Anthropic 接受 'sdk-cli'(Agent SDK)、'cli'(Claude Code CLI)或其他檔案化的值。", - "routingBillingVersionFormatHint": "cc_version= 後 3 字元構建雜湊的計算方式。'ex-machina' = sha256(CCH_SALT + 第一條使用者訊息字元 + 版本)(每條訊息獨立)。'omniroute-daystamp' = sha256(YYYY-MM-DD + 版本)(按天穩定)。", - "routingBillingCchAlgoHint": "5 字元 cch= 權杖的計算方式。'sha256-first-user' = 第一條使用者訊息文本的 sha256;'xxhash64-body' = 由請求體級簽名稍後填充;'static-zero' = 字面佔位符 '00000'。", - "routingObfuscateWordsHint": "要混淆的小寫詞語。ZWJ 插入對大小寫不敏感,所以 'opencode' 也會匹配 'OpenCode' 與 'OPENCODE'。", - "routingObfuscateTargetsHint": "掃描詞語的請求體範圍:系統塊、使用者/助手訊息以及工具描述。", + "routingBillingEntrypointHint": "作為 'cc_entrypoint=' 注入的值。Anthropic接受 'sdk-cli'(Agent SDK)、'cli'(Claude Code CLI)或其他文件化的值。", + "routingBillingVersionFormatHint": "cc_version= 後 3 字符構建哈希的計算方式。'ex-machina' = sha256(CCH_SALT + 第一條用戶消息字符 + 版本)(每條消息獨立)。'omniroute-daystamp' = sha256(YYYY-MM-DD + 版本)(按天穩定)。", + "routingBillingCchAlgoHint": "5 字符cch= 令牌的計算方式。'sha256-first-user' = 第一條用戶消息文本的sha256;'xxhash64-body' = 由請求體級簽名稍後填充;'static-zero' = 字面佔位符 '00000'。", + "routingObfuscateWordsHint": "要混淆的小寫詞語。ZWJ插入對大小寫不敏感,所以 'opencode' 也會匹配 'OpenCode' 與 'OPENCODE'。", + "routingObfuscateTargetsHint": "掃描詞語的請求體範圍:系統塊、用戶/助手消息以及工具描述。", "routingObfuscateTargetsLabel": "目標", "routingSummarizeDropParagraphContains": "丟棄包含的段落:{items}", "routingSummarizeDropParagraphStartsWith": "丟棄開頭匹配的段落:{items}", @@ -6049,11 +6049,11 @@ "routingSummarizePrependSystemBlock": "前置塊:\"{text}\"", "routingSummarizeAppendSystemBlock": "追加塊:\"{text}\"", "routingSummarizeInjectBillingHeader": "注入計費頭(entrypoint={entrypoint},version={versionFormat},cch={cchAlgo})", - "routingSummarizeObfuscateWords": "通過 ZWJ 在 {targets} 中混淆 {count} 個詞", + "routingSummarizeObfuscateWords": "通過ZWJ在 {targets} 中混淆 {count} 個詞", "routingDefaultAutoVariantLKGP": "上次正常的提供者", "routingDefaultAutoVariantLKGPDesc": "上次正常的提供者", - "routingDefaultAutoVariantCoding": "程式碼場景質量優先", - "routingDefaultAutoVariantCodingDesc": "程式碼場景質量優先", + "routingDefaultAutoVariantCoding": "代碼場景質量優先", + "routingDefaultAutoVariantCodingDesc": "代碼場景質量優先", "routingDefaultAutoVariantFast": "低延遲路由", "routingDefaultAutoVariantFastDesc": "低延遲路由", "routingDefaultAutoVariantCheap": "成本優先", @@ -6064,28 +6064,28 @@ "routingDefaultAutoVariantSmartDesc": "最佳探索(10% 探索率)", "routingOpSummaryCount": "{count, plural, =0 {無操作} other {# 個操作}}", "routingOpEnabled": "已啟用", - "routingOpDisabled": "已停用", + "routingOpDisabled": "已禁用", "routingOpStatusSeparator": "·", "resilienceSettingsIntro": "提供程式失敗時自動重試、冷卻和回退。", - "aiSettingsIntro": "用於思考預算、模型行為和壓縮的 AI 特定設定。", + "aiSettingsIntro": "用於思考預算、模型行為和壓縮的AI特定設定。", "systemPrompt": "系統提示", "thinkingBudget": "思考預算", "proxy": "代理", - "httpProxy": "HTTP 代理", + "httpProxy": "HTTP代理", "1proxy": "1proxy", - "proxySubTabsAria": "代理設定分割槽", + "proxySubTabsAria": "代理設定分區", "requestBodyLimitTitle": "請求體大小限制", - "requestBodyLimitDescription": "解析請求體前允許的最大 API 載荷大小。專用上傳路由仍至少保留其內建的 100 MB 限制。", + "requestBodyLimitDescription": "解析請求體前允許的最大API載荷大小。專用上傳路由仍至少保留其內置的 100 MB限制。", "requestBodyLimitInputLabel": "請求體限制(MB)", - "requestBodyLimitEmptyError": "請輸入 MB 限制值", + "requestBodyLimitEmptyError": "請輸入MB限制值", "requestBodyLimitWholeNumberError": "請使用整數", "requestBodyLimitMinimumError": "最小值為 {min} MB", "requestBodyLimitMaximumError": "最大值為 {max} MB", "requestBodyLimitLoadFailed": "載入請求限制設定失敗", - "requestBodyLimitSaveSuccess": "請求體限制已儲存", - "requestBodyLimitSaveFailed": "儲存請求體限制失敗", - "requestBodyLimitSaving": "正在儲存...", - "requestBodyLimitSave": "儲存", + "requestBodyLimitSaveSuccess": "請求體限制已保存", + "requestBodyLimitSaveFailed": "保存請求體限制失敗", + "requestBodyLimitSaving": "正在保存...", + "requestBodyLimitSave": "保存", "requestBodyLimitCurrent": "當前:{value}", "cacheConfigLoadFailed": "__MISSING__:Failed to load cache settings", "cacheConfigSaveSuccess": "__MISSING__:Cache settings saved", @@ -6099,9 +6099,9 @@ "modelCatalogCacheTtlSaving": "__MISSING__:Saving...", "modelCatalogCacheTtlSave": "__MISSING__:Save", "modelCatalogCacheTtlCurrent": "__MISSING__:Current: {value} ms", - "mitmProxy": "MITM 代理", + "mitmProxy": "MITM代理", "pricing": "定價", - "storage": "儲存", + "storage": "存儲", "policies": "策略", "ipFilter": "IP過濾器", "comboDefaults": "組合預設值", @@ -6111,29 +6111,29 @@ "darkMode": "深色模式", "lightMode": "淺色模式", "memoryTitle": "記憶", - "memoryDesc": "跨會話持久化對話記憶", + "memoryDesc": "跨工作階段持久化對話記憶", "memoryEnabled": "啟用記憶", - "memoryEnabledDesc": "啟用後,OmniRoute 會注入相關的歷史上下文。", - "memoryTokenCostWarning": "提醒:啟用記憶功能後,OmniRoute 會將最多 {tokens} 個 token 的檢索上下文注入到每個聊天請求中 — 這會增加 token 使用量和成本。若要跳過特定請求的注入,請傳送 \"x-omniroute-no-memory: true\" 標頭。", - "maxTokens": "最大 Tokens", + "memoryEnabledDesc": "啟用後,OmniRoute會注入相關的歷史上下文。", + "memoryTokenCostWarning": "注意:啟用記憶功能後,OmniRoute會在每個聊天請求中注入最多 {tokens} 個令牌的檢索上下文——這會增加令牌使用量和成本。若要跳過特定請求的注入,請發送 \"x-omniroute-no-memory: true\" 請求標頭。", + "maxTokens": "最大Tokens", "retentionDays": "保留時長", "recent": "最近", "recentDesc": "按時間順序的時間窗", - "semantic": "語義", + "semantic": "語意", "semanticDesc": "向量搜尋", "hybrid": "混合", - "hybridDesc": "最近 + 語義", - "skillsTitle": "技能", + "hybridDesc": "最近 + 語意", + "skillsTitle": "Skills", "skillsDesc": "供模型呼叫的工具", - "skillsEnabled": "啟用技能", - "skillsEnabledDesc": "允許智慧體觸發函式。", - "skillsComingSoon": "技能市場即將推出。", - "memorySkillsTitle": "記憶與技能", + "skillsEnabled": "啟用Skills", + "skillsEnabledDesc": "允許智能體觸發函數。", + "skillsComingSoon": "Skills市場即將推出。", + "memorySkillsTitle": "記憶與Skills", "memorySkillsDesc": "持久化上下文與能力", "modelsDevTitle": "模型資料庫", - "modelsDevDesc": "從 models.dev 自動同步定價、能力和規格", - "modelsDevEnabled": "啟用 models.dev 同步", - "modelsDevEnabledDesc": "從開源的 models.dev 資料庫獲取模型定價、能力和規格", + "modelsDevDesc": "從models.dev自動同步定價、能力和規格", + "modelsDevEnabled": "啟用models.dev同步", + "modelsDevEnabledDesc": "從開源的models.dev資料庫獲取模型定價、能力和規格", "modelsDevInterval": "同步間隔", "syncNow": "立即同步", "syncing": "同步中...", @@ -6141,44 +6141,44 @@ "never": "從未", "justNow": "剛才", "modelsDevStats": "同步統計", - "modelsDevStatsDesc": "當前 models.dev 資料覆蓋情況", + "modelsDevStatsDesc": "當前models.dev資料覆蓋情況", "providers": "提供者", "modelsWithPricing": "已有定價的模型", "capabilities": "能力", "lastSyncCount": "上次同步數量", "lastSyncFull": "上次完整同步", "modelsDevInfo": "工作原理", - "modelsDevInfoDesc": "models.dev 是由 SST/OpenCode 團隊維護的開源 AI 模型規格資料庫,提供 100+ 提供者、4,000+ 模型的定價、能力、上下文限制和模態資訊。", - "modelsDevInfoResolution": "定價解析順序(優先順序從高到低):", - "modelsDevInfoOrder": "使用者覆蓋 → models.dev → LiteLLM → 硬編碼預設值", + "modelsDevInfoDesc": "models.dev是由SST/OpenCode團隊維護的開源AI模型規格資料庫,提供 100+ 提供者、4,000+ 模型的定價、能力、上下文限制和模態資訊。", + "modelsDevInfoResolution": "定價解析順序(優先級從高到低):", + "modelsDevInfoOrder": "用戶覆蓋 → models.dev → LiteLLM → 硬編碼預設值", "systemTheme": "系統主題", - "debugToggle": "啟用除錯模式", + "debugToggle": "啟用調試模式", "logToolSourcesToggle": "記錄工具來源", - "logToolSourcesDescription": "每個請求發出一行診斷記錄,總結工具數量及 MCP/託管/客戶端來源分布。", + "logToolSourcesDescription": "每個請求輸出一行診斷日誌,彙總工具數量以及MCP/託管/客戶端來源明細。", "homePinProviderQuotaToHome": "將資訊固定到首頁", - "homePinnedSectionsDesc": "選擇要固定在首頁頂部的區塊。", + "homePinnedSectionsDesc": "選擇要固定到主頁頂部的板塊。", "homeProviderQuotaLimits": "提供者配額限制", - "homeProviderQuotaLimitsDesc": "將提供者配額狀態容器(含全部重新整理按鈕)固定到首頁頂部。", + "homeProviderQuotaLimitsDesc": "將提供者配額狀態容器(含全部刷新按鈕)固定到首頁頂部。", "homeQuickStart": "快速入門", "homeQuickStartDesc": "在首頁上顯示快速入門面板。", "homeProviderTopology": "提供者拓撲", "homeProviderTopologyDesc": "在首頁上顯示提供者拓撲。", - "accountEmailVisibility": "帳號郵箱可見性", - "accountEmailVisibilityDesc": "在提供者、組合、日誌、配額和 Playground 頁面顯示完整帳號郵箱。關閉後預設打碼顯示。", - "comboConfigMode": "Combo 設定模式", - "comboConfigModeDesc": "選擇 Combo 建立與編輯對話框的組織方式。", + "accountEmailVisibility": "賬號郵箱可見性", + "accountEmailVisibilityDesc": "在提供者、組合、日誌、配額和Playground頁面顯示完整賬號郵箱。關閉後預設打碼顯示。", + "comboConfigMode": "組合設定模式", + "comboConfigModeDesc": "選擇組合創建和編輯對話框的組織方式。", "comboConfigModeGuided": "引導", - "comboConfigModeGuidedDesc": "使用當前逐步 Combo 建置器。", + "comboConfigModeGuidedDesc": "使用當前的分步組合構建器。", "comboConfigModeExpert": "專家", - "comboConfigModeExpertDesc": "在單一頁面顯示所有 Combo 選項,並啟用直接輸入模型。", - "providerQuotaAutoRefresh": "提供者配額自動重新整理", - "providerQuotaAutoRefreshDesc": "在提供者限制檢視開啟時自動重新整理。", - "providerQuotaAutoRefreshToggle": "自動重新整理", - "providerQuotaAutoRefreshToggleDesc": "在頁面可見時每隔幾分鐘重新整理配額檢視。", - "providerQuotaAutoRefreshInterval": "重新整理間隔", - "providerQuotaAutoRefreshIntervalDesc": "配額檢視應多久重新整理一次(以秒為單位)。", + "comboConfigModeExpertDesc": "在單頁上顯示所有組合選項,並支援直接輸入模型。", + "providerQuotaAutoRefresh": "提供者配額自動刷新", + "providerQuotaAutoRefreshDesc": "在保持打開狀態時自動刷新提供者限制視圖。", + "providerQuotaAutoRefreshToggle": "自動刷新", + "providerQuotaAutoRefreshToggleDesc": "在頁面可見時每隔幾分鐘刷新一次配額視圖。", + "providerQuotaAutoRefreshInterval": "刷新間隔", + "providerQuotaAutoRefreshIntervalDesc": "配額視圖的刷新頻率(以秒為單位)。", "seconds": "秒", - "sidebarVisibilityToggle": "顯示側邊欄專案", + "sidebarVisibilityToggle": "顯示側邊欄項目", "enableCache": "啟用快取", "cacheTTL": "快取生存時間", "maxCacheSize": "最大快取大小", @@ -6190,7 +6190,7 @@ "hitRate": "命中率", "cacheEntries": "快取條目", "cacheSettings": "快取設定", - "semanticCache": "語義快取", + "semanticCache": "語意快取", "maxEntries": "最大條目數", "ttlMinutes": "TTL(分鐘)", "promptCache": "提示快取", @@ -6198,8 +6198,8 @@ "preserveClientCache": "保留客戶端快取", "enabled": "已啟用", "loading": "載入中...", - "saving": "正在儲存...", - "save": "儲存", + "saving": "正在保存...", + "save": "保存", "circuitBreaker": "斷路器", "retryPolicy": "重試策略", "maxRetries": "最大重試次數", @@ -6207,21 +6207,21 @@ "timeoutMs": "超時(毫秒)", "enableSystemPrompt": "啟用系統提示", "systemPromptText": "系統提示文字", - "autoDisableBannedAccounts": "自動停用被封禁帳戶", - "autoDisableDescription": "若提供者連線返回特定的永久封禁訊號(如 HTTP 403\"請驗證您的帳戶\"),則將其永久標記為停用。這會將其從組合輪換中移除。", + "autoDisableBannedAccounts": "自動禁用被封禁賬戶", + "autoDisableDescription": "若提供者連接返回特定的永久封禁信號(如HTTP 403\"請驗證您的賬戶\"),則將其永久標記為停用。這會將其從組合輪換中移除。", "autoDisableThreshold": "封禁閾值", - "autoDisableThresholdDesc": "觸發永久停用所需的連續封禁訊號次數。", - "customBannedSignals": "禁止關鍵字", - "customBannedSignalsDesc": "觸發永久帳戶封鎖偵測的額外關鍵字。內建關鍵字始終適用。", - "customBannedSignalsPlaceholder": "例如:api key revoked", - "noCustomBannedSignals": "無自訂關鍵字。僅內建關鍵字生效。", + "autoDisableThresholdDesc": "觸發永久停用所需的連續封禁信號次數。", + "customBannedSignals": "封禁關鍵詞", + "customBannedSignalsDesc": "觸發永久封號檢測的附加關鍵詞。內置關鍵詞始終生效。", + "customBannedSignalsPlaceholder": "例如api key revoked", + "noCustomBannedSignals": "無自定義關鍵詞。僅內置關鍵詞生效。", "resilienceStructureTitle": "彈性結構", - "resilienceStructureDesc": "此頁面僅設定行為。即時斷路器狀態顯示在執行狀況頁面上。組合特定的重試和迴圈槽控制保留在組合設定上。", + "resilienceStructureDesc": "此頁面僅設定行為。實時斷路器狀態顯示在運行狀況頁面上。組合特定的重試和循環槽控制保留在組合設定上。", "enableThinking": "激發思考", - "maxThinkingTokens": "最大思考權杖", + "maxThinkingTokens": "最大思考令牌", "enableProxy": "啟用代理", "perKeyProxyEnabled": "啟用按金鑰代理分配", - "perKeyProxyEnabledDesc": "啟用後,每個提供者連線可以使用自己的代理分配", + "perKeyProxyEnabledDesc": "啟用後,每個提供者連接可以使用自己的代理分配", "proxyUrl": "代理網址", "pricingRates": "定價費率格式", "currentPricing": "當前定價概述", @@ -6231,13 +6231,13 @@ "output": "輸出", "cached": "快取", "reasoning": "推理", - "cacheCreation": "快取建立", + "cacheCreation": "快取創建", "customPricing": "定製定價", "databaseSize": "資料庫大小", "backupDb": "備份資料庫", "restoreDb": "恢復資料庫", - "exportData": "匯出資料", - "importData": "匯入資料", + "exportData": "導出資料", + "importData": "導入資料", "clearData": "清除所有資料", "clearDataConfirm": "這將永久刪除所有資料。你確定嗎?", "enableRequestLogs": "啟用請求日誌", @@ -6245,10 +6245,10 @@ "ipWhitelist": "IP白名單", "ipBlacklist": "IP黑名單", "addIP": "新增IP", - "savedSuccessfully": "設定儲存成功", - "ai": "人工智慧", - "advanced": "高階", - "localMode": "本地模式 - 所有資料都儲存在你的裝置上", + "savedSuccessfully": "設定保存成功", + "ai": "人工智能", + "advanced": "高級", + "localMode": "本地模式 - 所有資料都存儲在你的設備上", "settingsSectionsAria": "設定部分", "switchThemes": "在淺色和深色主題之間切換", "themeSelectionAria": "主題選擇", @@ -6256,21 +6256,21 @@ "themeDark": "深色", "themeSystem": "系統", "endpointTunnelVisibility": "端點隧道可見性", - "endpointTunnelVisibilityDesc": "隱藏端點頁面中的隧道控制項,但不改變隧道執行狀態。", - "showCloudflareTunnel": "Cloudflare 快速隧道", - "showCloudflareTunnelDesc": "在端點頁面顯示 Cloudflare Quick Tunnel 控制項。", + "endpointTunnelVisibilityDesc": "隱藏端點頁面中的隧道控制項,但不改變隧道運行狀態。", + "showCloudflareTunnel": "Cloudflare快速隧道", + "showCloudflareTunnelDesc": "在端點頁面顯示Cloudflare Quick Tunnel控制項。", "showTailscaleFunnel": "Tailscale Funnel", - "showTailscaleFunnelDesc": "在端點頁面顯示 Tailscale Funnel 控制項。", - "showNgrokTunnel": "ngrok 隧道", - "showNgrokTunnelDesc": "在端點頁面顯示 ngrok Tunnel 控制項。", - "sidebarVisibility": "隱藏側邊欄專案", - "sidebarVisibilityDesc": "可以隱藏任意側邊欄導航項,以減少視覺負擔,但不會停用任何功能", - "sidebarVisibilityHint": "當某個側邊欄分組中的所有專案都被隱藏時,該分組會自動隱藏", + "showTailscaleFunnelDesc": "在端點頁面顯示Tailscale Funnel控制項。", + "showNgrokTunnel": "ngrok隧道", + "showNgrokTunnelDesc": "在端點頁面顯示ngrok Tunnel控制項。", + "sidebarVisibility": "隱藏側邊欄項目", + "sidebarVisibilityDesc": "可以隱藏任意側邊欄導航項,以減少視覺負擔,但不會禁用任何功能", + "sidebarVisibilityHint": "當某個側邊欄分組中的所有項目都被隱藏時,該分組會自動隱藏", "hideHealthLogs": "隱藏健康檢查日誌", - "hideHealthLogsDesc": "開啟後,將抑制伺服器控制台中的 [HealthCheck] 訊息", + "hideHealthLogsDesc": "開啟後,將抑制伺服器控制檯中的 [HealthCheck] 消息", "themeAccent": "主題顏色", - "themeAccentDesc": "選擇預設顏色,或使用單一顏色建立你自己的主題", - "themeCreate": "建立主題", + "themeAccentDesc": "選擇預設顏色,或使用單一顏色創建你自己的主題", + "themeCreate": "創建主題", "themeCustom": "自定義主題", "themeBlue": "藍色", "themeRed": "紅色", @@ -6279,88 +6279,88 @@ "themeOrange": "橙色", "themeCyan": "青色", "whitelabeling": "品牌定製", - "whitelabelingDesc": "自定義應用名稱和 Logo", + "whitelabelingDesc": "自定義應用名稱和Logo", "appName": "應用名稱", "appNameDesc": "顯示在側邊欄和瀏覽器標籤頁中的名稱", - "customLogo": "自定義 Logo URL", - "customLogoDesc": "你的自定義 Logo 圖片地址", - "uploadLogo": "上傳 Logo", + "customLogo": "自定義Logo URL", + "customLogoDesc": "你的自定義Logo圖片地址", + "uploadLogo": "上傳Logo", "resetLogo": "恢復預設", "logoPreview": "預覽", - "customFavicon": "瀏覽器 Favicon", - "customFaviconDesc": "你的自定義 Favicon 地址(顯示在瀏覽器標籤頁中)", - "uploadFavicon": "上傳 Favicon", - "resetFavicon": "重置 Favicon", - "faviconPreview": "Favicon 預覽", - "logoFileTooLarge": "Logo 檔案必須小於 500KB", - "faviconFileTooLarge": "Favicon 檔案必須小於 50KB", - "invalidLogoFileType": "無效的檔案類型。請上傳 PNG、JPG、SVG、GIF 或 WebP。", - "invalidFaviconFileType": "無效的檔案類型。請上傳 PNG、ICO、SVG、GIF 或 WebP。", + "customFavicon": "瀏覽器Favicon", + "customFaviconDesc": "你的自定義Favicon地址(顯示在瀏覽器標籤頁中)", + "uploadFavicon": "上傳Favicon", + "resetFavicon": "重置Favicon", + "faviconPreview": "Favicon預覽", + "logoFileTooLarge": "Logo檔案大小必須小於 500KB", + "faviconFileTooLarge": "Favicon檔案大小必須小於 50KB", + "invalidLogoFileType": "檔案類型無效。請上傳PNG、JPG、SVG、GIF或WebP。", + "invalidFaviconFileType": "檔案類型無效。請上傳PNG、ICO、SVG、GIF或WebP。", "failedToReadFile": "讀取檔案失敗", "startOnLogin": "登入時啟動", - "startOnLoginDesc": "在系統啟動時自動啟動 OmniRoute,並在背景系統匣中靜默執行。", - "flushCache": "重新整理快取", - "flushing": "正在重新整理...", + "startOnLoginDesc": "系統啟動時自動啟動OmniRoute並在後台托盤靜默運行。", + "flushCache": "刷新快取", + "flushing": "正在刷新...", "size": "尺寸", "hits": "命中次數", "evictions": "驅逐", "loadingCacheStats": "正在載入快取統計資訊...", - "globalProxy": "全域性代理", - "globalProxyDesc": "為所有 API 呼叫設定全域性出站代理。單獨的提供者、組合和鍵可以覆蓋此設定。", - "noGlobalProxy": "沒有設定全域性代理", + "globalProxy": "全域代理", + "globalProxyDesc": "為所有API呼叫設定全域出站代理。單獨的提供者、組合和鍵可以覆蓋此設定。", + "noGlobalProxy": "沒有設定全域代理", "proxyPool": "代理池", "freePool": "免費池", - "proxyDocumentation": "代理檔案", - "proxyGlobalConfigTab": "全域性設定", + "proxyDocumentation": "代理文件", + "proxyGlobalConfigTab": "全域設定", "proxyPoolTab": "代理池", "freePoolTab": "免費泳池", - "proxyDocumentationTab": "檔案", + "proxyDocumentationTab": "文件", "proxySubscriptionsTab": "訂閱", "proxySubscription": { "error": { - "LOCAL_CORE_ENDPOINT_INVALID": "本機 proxy-core 端點無效;已忽略 SS/VMess/Trojan/VLESS 節點。", - "NEEDS_CORE_NOT_CONFIGURED": "此訂閱包含需要本機 proxy core 的節點(SS/VMess/Trojan/VLESS);在設定本機 core SOCKS5 端點之前,這些節點不會被路由。", - "NO_USABLE_NODES": "訂閱未產生可用節點(http/https/socks5 或具有本機 core 端點的節點)。" + "LOCAL_CORE_ENDPOINT_INVALID": "本地代理核心端點無效;已忽略SS/VMess/Trojan/VLESS節點。", + "NEEDS_CORE_NOT_CONFIGURED": "此訂閱包含需要本地代理核心 (SS/VMess/Trojan/VLESS) 的節點;在設定本地核心SOCKS5 端點之前,它們不會被路由。", + "NO_USABLE_NODES": "訂閱未產生可用節點 (http/https/socks5 或具有本地核心端點的節點)。" } }, "bulkHealthcheck": "批次健康檢查", - "bulkHealthcheckDesc": "針對目標 URL 測試所有已設定代理,找出可用代理。", + "bulkHealthcheckDesc": "針對目標URL測試所有已設定代理,找出可用代理。", "healthcheckTesting": "測試中...", "healthcheckAll": "全部健康檢查", - "healthcheckFailed": "執行健康檢查失敗", + "healthcheckFailed": "運行健康檢查失敗", "healthcheckTestingAll": "正在並行測試所有代理...", "healthcheckTotal": "總數", "healthcheckWorking": "可用", "healthcheckFailedLabel": "失敗", "healthcheckStatus": "狀態", - "healthcheckProxyUrl": "代理 URL", + "healthcheckProxyUrl": "代理URL", "healthcheckLatency": "延遲", "proxyDocumentationScopeTitle": "代理作用域解析", - "proxyDocumentationScopeDescBefore": "OmniRoute 按優先順序順序解析出站代理:", - "proxyDocumentationScopeOrder": "組合 → 帳戶 → 提供者 → 全域性", + "proxyDocumentationScopeDescBefore": "OmniRoute按優先級順序解析出站代理:", + "proxyDocumentationScopeOrder": "組合 → 賬戶 → 提供者 → 全域", "proxyDocumentationScopeDescAfter": "。最具體的作用域優先。", "proxyDocumentationAddTitle": "新增自定義代理", "proxyDocumentationAddDescBefore": "轉到", - "proxyDocumentationAddDescMiddle": "選項卡 → 點選", + "proxyDocumentationAddDescMiddle": "選項卡 → 點擊", "proxyDocumentationAddCta": "+ 新增代理", - "proxyDocumentationAddDescAfter": "。填寫類型(http/https/socks5)、主機和埠。可選擇將其分配給作用域。", - "proxyDocumentationBulkTitle": "批次匯入格式", + "proxyDocumentationAddDescAfter": "。填寫類型(http/https/socks5)、主機和連接埠。可選擇將其分配給作用域。", + "proxyDocumentationBulkTitle": "批次導入格式", "proxyDocumentationBulkDesc": "管道符分隔的欄位:", - "proxyDocumentationSocks5DescBefore": "SOCKS5 代理預設停用。設定", - "proxyDocumentationFreePoolDesc": "免費池選項卡聚合來自 1proxy、Proxifly 和 IPLocate 的代理。使用 ⊕ 測試並將代理提升到您的登錄檔中。只有通過連通性測試的代理才會被新增。", - "proxyDocumentationVercelRelayDescBefore": "Vercel Relay 是一個出站邊緣中繼,而不是入站隧道。部署後,LLM API 呼叫將通過 Vercel 的動態 IP 傳送,繞過資料中心地理封鎖和速率限制。中繼由生成的金鑰頭保護", - "proxyDocumentationVercelRelayDescAfter": "您的 Vercel 權杖僅在部署期間使用,不會儲存。", - "vercelRelayTokenRequired": "需要權杖", + "proxyDocumentationSocks5DescBefore": "SOCKS5 代理預設禁用。設定", + "proxyDocumentationFreePoolDesc": "免費池選項卡聚合來自 1proxy、Proxifly和IPLocate的代理。使用 ⊕ 測試並將代理提升到您的註冊表中。只有通過連通性測試的代理才會被新增。", + "proxyDocumentationVercelRelayDescBefore": "Vercel Relay是一個出站邊緣中繼,而不是入站隧道。部署後,LLM API呼叫將通過Vercel的動態IP發送,繞過資料中心地理封鎖和速率限制。中繼由生成的金鑰頭保護", + "proxyDocumentationVercelRelayDescAfter": "您的Vercel令牌僅在部署期間使用,不會存儲。", + "vercelRelayTokenRequired": "需要令牌", "vercelRelayDeployFailed": "部署失敗", - "vercelRelayTokenHint": "權杖僅在部署期間使用——從不儲存。", - "denoRelayTokenRequired": "需要 Deno Deploy 令牌", - "denoRelayOrgDomainRequired": "需要組織網域", - "denoRelayDeployFailed": "Deno Deploy 失敗", - "denoRelayTokenHint": "來自 console.deno.com → Organization → Settings → Organization Tokens 的組織令牌(前綴 ddo_)。僅在部署時使用一次,永不儲存。", - "denoRelayOrgDomainHint": "您的 Deno Deploy 組織的預設網域(例如 acme.deno.net)。轉發站位於 https://..deno.net。", + "vercelRelayTokenHint": "令牌僅在部署期間使用——從不存儲。", + "denoRelayTokenRequired": "Deno Deploy令牌為必填項", + "denoRelayOrgDomainRequired": "組織域名為必填項", + "denoRelayDeployFailed": "Deno Deploy失敗", + "denoRelayTokenHint": "來自console.deno.com → Organization → Settings → Organization Tokens的組織令牌(前綴為ddo_)。僅用於部署一次,絕不存儲。", + "denoRelayOrgDomainHint": "您的Deno Deploy組織預設域名(例如acme.deno.net)。中繼將可通過https://..deno.net訪問。", "proxyFreePoolFilterProtocol": "按協議篩選", "proxyFreePoolProtocol": "協議", - "proxyFreePoolCountryPlaceholder": "國家(例如 US)", + "proxyFreePoolCountryPlaceholder": "國家(例如US)", "proxyFreePoolFilterCountry": "按國家篩選", "proxyFreePoolMinQualityPlaceholder": "最低質量", "proxyFreePoolMinQualityLabel": "最低質量分數", @@ -6372,58 +6372,58 @@ "proxyFreePoolAddSelected": "將選中項新增到池", "proxyFreePoolAddVisible": "將所有可見項新增到池", "proxyFreePoolSource": "來源", - "proxyFreePoolHostPort": "主機:埠", + "proxyFreePoolHostPort": "主機:連接埠", "proxyFreePoolType": "類型", "proxyFreePoolCountry": "國家", "proxyFreePoolQuality": "質量", "proxyFreePoolLatency": "延遲", - "proxyFreePoolEmpty": "未找到代理。點選同步全部從來源獲取。", - "proxyToggleSources": "切換代理來源", + "proxyFreePoolEmpty": "未找到代理。點擊同步全部從來源獲取。", + "proxyToggleSources": "切換代理源", "proxyFreePoolTesting": "正在測試代理...", - "proxyFreePoolBulkResult": "已新增 {succeeded} 個,{failed} 個失敗", + "proxyFreePoolBulkResult": "已新增 {succeeded} 個,失敗 {failed} 個", "proxyFreePoolPageSummary": "第 {page} 頁,共 {totalPages} 頁(共 {total} 個代理)", "proxyFreePoolTotalSummary": "共 {total} 個代理", "proxyFreePoolSearchPlaceholder": "搜尋主機…", - "proxyFreePoolSearchLabel": "依主機搜尋代理", - "proxyFreePoolSortLabel": "排序代理", - "proxyFreePoolSortQuality": "品質", + "proxyFreePoolSearchLabel": "按主機搜尋代理", + "proxyFreePoolSortLabel": "代理排序", + "proxyFreePoolSortQuality": "質量", "proxyFreePoolSortLatency": "延遲", "proxyFreePoolSortRecent": "最近驗證", "proxyFreePoolListTotal": "已列出", "proxyFreePoolLoadMore": "載入更多", "close": "關閉", "cancel": "取消", - "globalLabel": "全域性", + "globalLabel": "全域", "configure": "設定", - "globalSystemPrompt": "全域性系統提示", - "saved": "已儲存", + "globalSystemPrompt": "全域系統提示", + "saved": "已保存", "beforePromptLabel": "提示詞前置", "beforePromptDesc": "注入到代理/提供者系統指令之前", "beforePromptPlaceholder": "插入到代理/提供者提示詞之前的指令...", "afterPromptLabel": "提示詞後置", "afterPromptDesc": "注入到代理/提供者系統指令之後", "afterPromptPlaceholder": "插入到代理/提供者提示詞之後的指令...", - "chars": "{count} 字元", + "chars": "{count} 字符", "thinkingBudgetTitle": "思考預算", - "thinkingBudgetDesc": "控制所有請求中 AI 推理權杖的使用", + "thinkingBudgetDesc": "控制所有請求中AI推理令牌的使用", "passthrough": "直通", "passthroughDesc": "沒有變化——客戶控制思維預算", "auto": "自動", "autoDesc": "丟棄所有思考設定,由提供者自行決定", "custom": "定製", - "customDesc": "為所有請求設定固定的 Token 預算", + "customDesc": "為所有請求設定固定的Token預算", "adaptive": "自適應", "adaptiveDesc": "根據請求複雜性調整預算", "effortNone": "無(0 Tokens)", "effortLow": "低(1K Tokens)", "effortMedium": "中(10K Tokens)", "effortHigh": "高(128K Tokens)", - "tokenBudget": "Token 預算", + "tokenBudget": "Token預算", "tokens": "Token", "baseEffortLevel": "基本努力水平", - "adaptiveHint": "自適應模式根據訊息計數、工具使用情況和提示長度從此基本級別進行擴充套件。", + "adaptiveHint": "自適應模式根據消息計數、工具使用情況和提示長度從此基本級別進行擴展。", "requireLogin": "需要登入", - "requireLoginDesc": "當開啟時,儀表板需要密碼。當關閉時,無需登入即可訪問。", + "requireLoginDesc": "當打開時,看板需要密碼。當關閉時,無需登入即可訪問。", "currentPassword": "當前密碼", "enterCurrentPassword": "輸入當前密碼", "newPassword": "新密碼", @@ -6436,29 +6436,29 @@ "errorOccurred": "發生錯誤", "updatePassword": "更新密碼", "setPassword": "設定密碼", - "apiEndpointProtection": "API 端點保護", - "requireAuthModels": "/models 需要 API 金鑰", - "requireAuthModelsDesc": "開啟後,`/v1/models` 對未認證請求返回 404,從而阻止未授權使用者發現模型。", + "apiEndpointProtection": "API端點保護", + "requireAuthModels": "/models需要API Key", + "requireAuthModelsDesc": "開啟後,`/v1/models` 對未認證請求返回 404,從而阻止未授權用戶發現模型。", "authModelHeading": "當前授權模型", - "authModelClient": "客戶端 API 端點(/v1/*、/chat/*、/responses/*、/codex/*、/messages/*)需要 Bearer API 金鑰。", - "authModelManagement": "管理端點(/dashboard、/api/*)需要儀表盤會話或管理憑據。", + "authModelClient": "客戶端API端點(/v1/*、/chat/*、/responses/*、/codex/*、/messages/*)需要Bearer API Key。", + "authModelManagement": "管理端點(/dashboard、/api/*)需要看板工作階段或管理憑據。", "authModelPublic": "只有登入、健康檢查和引導路由是公開的。", "bruteForceProtection": "登入暴力破解保護", - "bruteForceProtectionDesc": "在同一 IP 多次失敗後,對 /api/auth/login 進行限流和鎖定。", - "corsAllowedOrigins": "CORS 允許的源", - "corsAllowedOriginsDesc": "允許呼叫此伺服器的瀏覽器來源列表,以逗號分隔。空列表 = 不允許瀏覽器 CORS 訪問(伺服器到伺服器仍可用)。僅在開發環境使用 CORS_ALLOW_ALL=true 環境變數。", - "blockedProviders": "被阻止的提供者", + "bruteForceProtectionDesc": "在同一IP多次失敗後,對 /api/auth/login進行限流和鎖定。", + "corsAllowedOrigins": "CORS允許的源", + "corsAllowedOriginsDesc": "允許呼叫此伺服器的瀏覽器來源列表,以逗號分隔。空列表 = 不允許瀏覽器CORS訪問(伺服器到伺服器仍可用)。僅在開發環境使用CORS_ALLOW_ALL=true環境變量。", + "blockedProviders": "已阻止的提供者", "blockedProvidersDesc": "在 `/v1/models` 回應中隱藏指定提供者。被隱藏的提供者不會出現在模型列表中。", - "providersBlocked": "{count} 個提供者/模型已遮蔽", - "blockProviderTitle": "遮蔽 {provider}", - "unblockProviderTitle": "取消遮蔽 {provider}", - "cliFingerprint": "CLI 指紋匹配", - "cliFingerprintDesc": "在代理請求時模擬原生 CLI 二進位制的請求特徵。會重新排列請求頭和請求體欄位,使其與官方 CLI 工具更一致,同時保留你的代理 IP。", - "cliFingerprintEnabled": "已有 {count} 個提供者啟用了 CLI 指紋", + "providersBlocked": "{count} 個提供者/模型已屏蔽", + "blockProviderTitle": "屏蔽 {provider}", + "unblockProviderTitle": "取消屏蔽 {provider}", + "cliFingerprint": "CLI指紋匹配", + "cliFingerprintDesc": "在代理請求時模擬原生CLI二進制的請求特徵。會重新排列請求標頭和請求體欄位,使其與官方CLI工具更一致,同時保留你的代理IP。", + "cliFingerprintEnabled": "已有 {count} 個提供者啟用了CLI指紋", "enableFingerprintTitle": "為 {provider} 啟用指紋", - "disableFingerprintTitle": "為 {provider} 停用指紋", + "disableFingerprintTitle": "為 {provider} 禁用指紋", "systemTransforms": "系統塊轉換管道", - "systemTransformsDesc": "在轉發之前,每個提供者訂購的轉換管道應用於請求正文。支援任何提供者 ID。", + "systemTransformsDesc": "在轉發之前,每個提供者訂購的轉換管道應用於請求正文。支援任何提供者ID。", "systemTransformsAddProvider": "新增提供者", "systemTransformsAddProviderPlaceholder": "選擇提供者...", "systemTransformsAddProviderAllConfigured": "所有提供者均已設定", @@ -6468,58 +6468,58 @@ "systemTransformsOpMoveDown": "下移", "systemTransformsOpDelete": "刪除操作", "routingStrategy": "路由策略", - "routingAdvancedGuideTitle": "高階路由指南", - "routingAdvancedGuideHint1": "需要可預測優先順序時使用 Fill First,需要公平分配時使用 Round Robin,需要延遲彈性時使用 P2C。", - "routingAdvancedGuideHint2": "如果各提供者在質量或成本上差異明顯,後台任務可優先考慮“成本最佳化”,需要均衡消耗時可從“最少使用”開始。", + "routingAdvancedGuideTitle": "高級路由指南", + "routingAdvancedGuideHint1": "需要可預測優先級時使用Fill First,需要公平分配時使用Round Robin,需要延遲彈性時使用P2C。", + "routingAdvancedGuideHint2": "如果各提供者在質量或成本上差異明顯,後台任務可優先考慮“成本優化”,需要均衡消耗時可從“最少使用”開始。", "fillFirst": "優先填滿", - "fillFirstDesc": "按優先順序順序使用帳戶", + "fillFirstDesc": "按優先級順序使用賬戶", "roundRobin": "輪詢", - "roundRobinDesc": "在所有帳戶之間輪流分配", + "roundRobinDesc": "在所有賬戶之間輪流分配", "p2c": "P2C", "p2cDesc": "隨機選2個,使用更健康的一個", "random": "隨機", - "randomDesc": "每次請求隨機選擇帳戶", + "randomDesc": "每次請求隨機選擇賬戶", "leastUsed": "最少使用", - "leastUsedDesc": "優先選擇最近使用最少的帳戶", - "costOpt": "成本最佳化", - "costOptDesc": "優先選擇成本最低的可用帳戶", + "leastUsedDesc": "優先選擇最近使用最少的賬戶", + "costOpt": "成本優化", + "costOptDesc": "優先選擇成本最低的可用賬戶", "resetAware": "復位感知RR", - "resetAwareDesc": "優先選擇剩餘配額正常且重置時間較近的帳戶", + "resetAwareDesc": "優先選擇剩餘配額正常且重置時間較近的賬戶", "strictRandom": "嚴格隨機", - "strictRandomDesc": "洗牌池模式:每個帳戶使用一次後再重新洗牌", + "strictRandomDesc": "洗牌池模式:每個賬戶使用一次後再重新洗牌", "stickyLimit": "粘性限制", - "stickyLimitDesc": "切換前每個帳戶連續處理的請求次數", + "stickyLimitDesc": "切換前每個賬戶連續處理的請求次數", "routingStrategyTitle": "路由策略", - "routingStrategySubtitle": "比照 9router:帳號循環輪詢、黏著限制與 Combo 輪換", - "accountRoundRobin": "循環輪詢", - "accountRoundRobinDesc": "輪換帳號以分散負載", - "comboRoundRobin": "Combo 循環輪詢", - "comboRoundRobinDesc": "輪換 Combo 目標,而非總是從第一個開始", - "comboStickyLimit": "Combo 黏著限制", - "comboStickyLimitDesc": "切換前每個 Combo 目標的呼叫次數", - "routingStrategyAccountSummary": "跨帳號分配請求,每個帳號 {limit} 次呼叫。", - "routingStrategyFillFirstSummary": "依優先順序使用帳號(優先填滿)。", - "routingStrategyComboSummary": " Combo 在每個目標 {limit} 次呼叫後輪換。", - "routingStrategyComboFallbackSummary": " Combo 使用各自設定的策略(預設優先/備用)。", - "providerAccountRoutingTitle": "多帳號路由", - "providerAccountRoutingDesc": "覆寫此提供者的全域帳號策略(9router 對等)。", - "providerRoutingStrategy": "帳號策略", - "providerRoutingInheritGlobal": "繼承全域預設", + "routingStrategySubtitle": "匹配 9router:賬戶輪詢、粘性限制和組合輪換", + "accountRoundRobin": "輪詢", + "accountRoundRobinDesc": "循環遍歷賬戶以分發負載", + "comboRoundRobin": "組合輪詢", + "comboRoundRobinDesc": "循環遍歷組合目標,而不是總是從第一個開始", + "comboStickyLimit": "組合粘性限制", + "comboStickyLimitDesc": "切換前每個組合目標的呼叫次數", + "routingStrategyAccountSummary": "在賬戶之間分配請求,每個賬戶限制 {limit} 次呼叫。", + "routingStrategyFillFirstSummary": "按優先級順序使用賬戶(優先填滿)。", + "routingStrategyComboSummary": " 每個目標呼叫 {limit} 次後輪換組合。", + "routingStrategyComboFallbackSummary": " 組合使用每個組合設定的策略(預設優先級/備用)。", + "providerAccountRoutingTitle": "多賬戶路由", + "providerAccountRoutingDesc": "覆蓋此提供者的全域賬戶策略(與 9router保持一致)。", + "providerRoutingStrategy": "賬戶策略", + "providerRoutingInheritGlobal": "繼承全域預設值", "modelAliases": "模型別名", "modelAliasesTitle": "模型別名", - "modelAliasesDesc": "使用精確匹配或萬用字元模式重對映模型名稱。", + "modelAliasesDesc": "使用精確匹配或通配符模式重映射模型名稱。", "addCustomAlias": "新增自定義別名", - "deprecatedModelId": "已棄用的模型 ID", - "newModelId": "新模型 ID", + "deprecatedModelId": "已棄用的模型ID", + "newModelId": "新模型ID", "customAliases": "自定義別名", - "builtInAliases": "內建別名", + "builtInAliases": "內置別名", "backgroundDegradationTitle": "後台任務降級", "backgroundDegradationDesc": "自動檢測後台任務(標題、摘要)並路由到更便宜的模型", "enableDegradation": "啟用後台任務降級", "enableDegradationHint": "啟用後,標題生成和摘要等後台任務會自動路由到更便宜的模型", "tasksDetected": "檢測到的任務", - "degradationMap": "模型降級對映", - "premiumModel": "高階模型", + "degradationMap": "模型降級映射", + "premiumModel": "高級模型", "cheapModel": "低成本模型", "detectionPatterns": "檢測模式", "newPattern": "例如:\"生成標題\"", @@ -6528,13 +6528,13 @@ "pattern": "圖案", "targetModel": "目標模型", "add": "+ 新增", - "session": "會話", - "sessionDetailsAria": "會話詳情", + "session": "工作階段", + "sessionDetailsAria": "工作階段詳情", "status": "狀態", "authenticated": "已認證", "guest": "嘉賓", "loginTime": "登入時間", - "sessionAge": "會話年齡", + "sessionAge": "工作階段年齡", "browser": "瀏覽器", "clearLocalData": "清除本地資料", "logout": "退出", @@ -6542,23 +6542,23 @@ "unknown": "未知", "systemActor": "系統", "ipAccessControl": "IP訪問控制", - "ipAccessControlDesc": "阻止或允許特定 IP 地址", - "ipModeDisabled": "已停用", + "ipAccessControlDesc": "阻止或允許特定IP地址", + "ipModeDisabled": "已禁用", "ipModeBlacklist": "黑名單", "ipModeWhitelist": "白名單", - "ipModeWhitelistPriority": "WL優先順序", + "ipModeWhitelistPriority": "WL優先級", "addIpAddress": "新增IP地址", "ipAddressPlaceholder": "192.168.1.0/24 或 10.0.*.*", - "block": "+ 遮蔽", + "block": "+ 屏蔽", "allow": "+ 允許", - "blocked": "已被阻止 ({count})", + "blocked": "已已阻止 ({count})", "allowed": "允許 ({count})", "temporaryBans": "臨時禁令 ({count})", "minLeft": "還剩 {min}m", - "auditLog": "稽核日誌", - "searchAuditLogs": "搜尋稽核日誌...", - "failedLoadAuditLog": "無法載入稽核日誌", - "noAuditEvents": "未找到稽核事件", + "auditLog": "審核日誌", + "searchAuditLogs": "搜尋審核日誌...", + "failedLoadAuditLog": "無法載入審核日誌", + "noAuditEvents": "未找到審核事件", "action": "操作", "actor": "操作人", "details": "詳情", @@ -6568,16 +6568,16 @@ "addChain": "+ 新增鏈", "modelName": "模型名稱", "modelNamePlaceholder": "claude-sonnet-4-20250514", - "providersCommaSeparated": "提供者(用逗號分隔,按優先順序排序)", + "providersCommaSeparated": "提供者(用逗號分隔,按優先級排序)", "providersCommaSeparatedPlaceholder": "anthropic, openai, gemini", - "createChain": "建立鏈", - "noFallbackChains": "無後備鏈", - "noFallbackChainsDesc": "建立一條鏈路,用於定義某個模型的提供者回退順序。", + "createChain": "創建鏈", + "noFallbackChains": "暫無後備鏈", + "noFallbackChainsDesc": "創建一條鏈路,用於定義某個模型的提供者回退順序。", "loadingFallbackChains": "正在載入後備鏈...", "deleteChainConfirm": "刪除“{model}”的後備鏈?", - "chainCreated": "為 {model} 建立的鏈", + "chainCreated": "為 {model} 創建的鏈", "chainDeleted": "已刪除 {model} 鏈", - "failedCreateChain": "建立鏈失敗", + "failedCreateChain": "創建鏈失敗", "failedDeleteChain": "刪除鏈失敗", "deleteChain": "刪除鏈", "fillModelAndProviders": "請填寫模型名稱和提供者", @@ -6585,19 +6585,19 @@ "comboDefaultsTitle": "組合預設值", "comboDefaultsGuideTitle": "如何調整組合預設值", "comboDefaultsGuideHint1": "在低延遲流中保持較低的重試次數;僅增加長生成任務的超時。", - "comboDefaultsGuideHint2": "當一個提供程式需要與全域性預設值不同的超時/重試行為時,請使用提供程式覆蓋。", - "globalComboConfig": "全域性組合設定", - "moveUp": "向上移動", - "moveDown": "向下移動", - "allProvidersAdded": "所有提供者已新增", - "noProvidersFound": "找不到提供者", + "comboDefaultsGuideHint2": "當一個提供程式需要與全域預設值不同的超時/重試行為時,請使用提供程式覆蓋。", + "globalComboConfig": "全域組合設定", + "moveUp": "上移", + "moveDown": "下移", + "allProvidersAdded": "已新增所有提供者", + "noProvidersFound": "未找到提供者", "defaultStrategy": "預設策略", "defaultStrategyDesc": "應用於沒有明確策略的新組合", "comboStrategyAria": "組合策略", - "priority": "優先順序", + "priority": "優先級", "weighted": "加權", "contextRelay": "上下文接力", - "contextRelayDesc": "在帳戶輪換髮生時,採用優先順序風格路由並自動執行上下文交接", + "contextRelayDesc": "在賬戶輪換髮生時,採用優先級風格路由並自動執行上下文交接", "maxRetriesLabel": "最大重試次數", "retryDelayLabel": "重試延遲(毫秒)", "timeoutLabel": "超時(毫秒)", @@ -6606,45 +6606,45 @@ "trackMetrics": "跟蹤指標", "trackMetricsDesc": "記錄每個組合請求指標", "providerOverrides": "提供者覆蓋", - "providerOverridesDesc": "覆蓋每個提供者的超時和重試。提供者設定會覆蓋全域性預設設定。", + "providerOverridesDesc": "覆蓋每個提供者的超時和重試。提供者設定會覆蓋全域預設設定。", "providerMaxRetriesAria": "{provider} 最大重試次數", "providerTimeoutAria": "{provider} 超時毫秒", "removeProviderOverrideAria": "刪除 {provider} 覆蓋", - "selectProviderPlaceholder": "選擇提供者…", - "searchProviderPlaceholder": "搜尋提供者⋯", + "selectProviderPlaceholder": "選擇提供者...", + "searchProviderPlaceholder": "搜尋提供者...", "searchProviderAria": "搜尋提供者", - "newProviderNamePlaceholder": "例如 google、openai...", + "newProviderNamePlaceholder": "例如google、openai...", "newProviderNameAria": "新的提供者名稱", "retries": "重試", "ms": "毫秒", - "saveComboDefaults": "儲存組合預設值", - "maxNestingDepth": "最大巢狀深度", + "saveComboDefaults": "保存組合預設值", + "maxNestingDepth": "最大嵌套深度", "concurrencyPerModel": "併發/模型", "queueTimeout": "佇列超時(毫秒)", "queueDepth": "佇列深度", "contextRelayHandoffThreshold": "交接閾值", - "contextRelayMaxMessages": "摘要最大訊息數", + "contextRelayMaxMessages": "摘要最大消息數", "contextRelaySummaryModel": "摘要模型", - "contextRelayProviderNote": "Context Relay 當前會為 Codex 帳戶生成交接摘要,並將這些值作為新的或未設定 combo 的全域性預設值。", + "contextRelayProviderNote": "Context Relay當前會為Codex賬戶生成交接摘要,並將這些值作為新的或未設定combo的全域預設值。", "providerProfiles": "提供者策略設定", - "providerProfilesDesc": "為 OAuth(基於會話)和 API Key(計費型)提供者分別設定彈性策略。由於速率限制更低,OAuth 提供者通常採用更嚴格的閾值。", - "oauthProviders": "OAuth 提供者", - "apiKeyProviders": "API 金鑰提供者", + "providerProfilesDesc": "為OAuth(基於工作階段)和API Key(計費型)提供者分別設定彈性策略。由於速率限制更低,OAuth提供者通常採用更嚴格的閾值。", + "oauthProviders": "OAuth提供者", + "apiKeyProviders": "API Key提供者", "transientCooldown": "瞬時故障冷卻", "rateLimitCooldown": "限流冷卻", "maxBackoffLevel": "最大退避級別", "cbThreshold": "熔斷閾值", "cbResetTime": "熔斷重置時間", "rateLimiting": "速率限制", - "rateLimitingDesc": "API 金鑰提供者會自動受到安全預設值的速率限制。限制是從回應標頭中學習的,並隨著時間的推移進行調整。", + "rateLimitingDesc": "API Key提供者會自動受到安全預設值的速率限制。限制是從回應標頭中學習的,並隨著時間的推移進行調整。", "defaultSafetyNet": "預設安全網", "rpm": "RPM", "minGap": "最小間隔", "maxConcurrent": "最大併發數", "activeLimiters": "活動限流器", "noActiveLimiters": "尚無活動的速率限制器。", - "reservoir": "權杖池", - "running": "執行中", + "reservoir": "令牌池", + "running": "運行中", "queued": "排隊中", "circuitBreakers": "斷路器", "breakerStateClosed": "閉合", @@ -6653,12 +6653,12 @@ "tripped": "{count} 已觸發", "healthy": "{count} 健康", "resetAll": "全部重置", - "noCircuitBreakers": "尚未啟用斷路器。當請求流經組合管道時,它們會自動建立。", + "noCircuitBreakers": "尚未激活斷路器。當請求流經組合管道時,它們會自動創建。", "failures": "{count} 失敗", - "policiesLocked": "策略和鎖定識別符號", - "allOperational": "所有系統均可執行——無停工或斷路器跳閘", + "policiesLocked": "策略和鎖定標識符", + "allOperational": "所有系統均可運行——無停工或斷路器跳閘", "loadingPolicies": "正在載入策略...", - "lockedIdentifiers": "鎖定識別符號", + "lockedIdentifiers": "鎖定標識符", "unlockedIdentifier": "解鎖:{identifier}", "sinceDate": "自 {date} 起", "forceUnlock": "強制解鎖", @@ -6666,84 +6666,84 @@ "failedUnlock": "解鎖失敗", "failedLoadWithStatus": "載入失敗:{status}", "failedLoadResilience": "無法載入彈性狀態", - "saveFailed": "儲存失敗", + "saveFailed": "保存失敗", "resetFailed": "重置失敗", "loadingResilience": "正在載入彈性狀態...", "retry": "重試", - "systemStorage": "系統與儲存", - "allDataLocal": "所有資料都儲存在本地計算機上", + "systemStorage": "系統與存儲", + "allDataLocal": "所有資料都存儲在本地計算機上", "databasePath": "資料庫路徑", - "export": "匯出", - "exportDatabase": "匯出資料庫", - "exportAll": "全部匯出 (.tar.gz)", - "importDatabase": "匯入資料庫", - "confirmDbImport": "確認資料庫匯入", - "confirmDbImportDesc": "這會將所有當前資料替換為 {file} 中的內容。匯入前將自動建立備份。", - "yesImport": "是的,匯入", + "export": "導出", + "exportDatabase": "導出資料庫", + "exportAll": "全部導出 (.tar.gz)", + "importDatabase": "導入資料庫", + "confirmDbImport": "確認資料庫導入", + "confirmDbImportDesc": "這會將所有當前資料替換為 {file} 中的內容。導入前將自動創建備份。", + "yesImport": "是的,導入", "lastBackup": "上次備份", "noBackupYet": "還沒有備份", "backupNow": "立即備份", "backupRestore": "備份與恢復", - "viewBackups": "檢視備份", + "viewBackups": "查看備份", "hide": "隱藏", - "backupRetentionDesc": "資料庫快照會在還原之前自動建立,並且在資料更改時每 15 分鐘自動建立一次。保留:24 小時 + 30 每日備份,智慧輪換。", + "backupRetentionDesc": "資料庫快照會在還原之前自動創建,並且在資料更改時每 15 分鐘自動創建一次。保留:24 小時 + 30 每日備份,智能輪換。", "loadingBackups": "正在載入備份...", - "noBackupsYet": "尚無可用的備份。當資料發生變化時,將自動建立備份。", + "noBackupsYet": "暫無可用備份。當資料發生變化時,將自動創建備份。", "backupsAvailable": "{count} 可用備份", - "refresh": "重新整理", + "refresh": "刷新", "confirm": "確認?", "yes": "是的", "no": "否", "restore": "恢復", "invalidFileType": "檔案類型無效,僅接受 `.sqlite` 檔案。", - "exportFailed": "匯出失敗", - "exportFailedWithError": "匯出失敗:{error}", - "fullExportFailedWithError": "完全匯出失敗:{error}", - "backupCreated": "建立備份:{file}", - "restoreSuccess": "恢復完成!共恢復 {connections} 個連線、{nodes} 個節點、{combos} 個組合、{apiKeys} 個 API 金鑰。", - "importSuccess": "資料庫匯入完成!共匯入 {connections} 個連線、{nodes} 個節點、{combos} 個組合、{apiKeys} 個 API 金鑰。", + "exportFailed": "導出失敗", + "exportFailedWithError": "導出失敗:{error}", + "fullExportFailedWithError": "完全導出失敗:{error}", + "backupCreated": "創建備份:{file}", + "restoreSuccess": "恢復完成!共恢復 {connections} 個連接、{nodes} 個節點、{combos} 個組合、{apiKeys} 個API Key。", + "importSuccess": "資料庫導入完成!共導入 {connections} 個連接、{nodes} 個節點、{combos} 個組合、{apiKeys} 個API Key。", "minutesAgo": "{count} 分鐘前", "hoursAgo": "{count} 小時前", "daysAgo": "{count} 天前", "backupReasonManual": "手動", "backupReasonPreRestore": "預恢復", - "connectionsCount": "{count, plural, one {# 個連線} other {# 個連線}}", + "connectionsCount": "{count, plural, one {# 個連接} other {# 個連接}}", "noChangesSinceBackup": "自上次備份以來沒有任何變化", "backupFailed": "備份失敗", "restoreFailed": "恢復失敗", - "importFailed": "匯入失敗", + "importFailed": "導入失敗", "errorDuringRestore": "恢復期間發生錯誤", - "errorDuringImport": "匯入時發生錯誤", + "errorDuringImport": "導入時發生錯誤", "modelPricing": "模型定價", - "modelPricingDesc": "設定每個模型的成本費率 • 所有費率均以美元/100 萬 Tokens 為單位", - "pricingCoverage": "覆蓋率", - "pricingAuth": "驗證", + "modelPricingDesc": "設定每個模型的成本費率 • 所有費率均以美元/100 萬Tokens為單位", + "pricingCoverage": "覆蓋範圍", + "pricingAuth": "認證", "pricingSort": "排序", "pricingAll": "全部", "pricingAuthUnknown": "未知", "pricingMostModels": "最多模型", "pricingHighestCoverage": "最高覆蓋率", "pricingLowestCoverage": "最低覆蓋率", - "pricingNameAscending": "名稱(A–Z)", + "pricingNameAscending": "名稱 (A–Z)", "pricingCoverageGaps": "覆蓋缺口", "pricingClearFilters": "清除篩選", - "pricingShowingProviders": "顯示第 {visible} 個,共 {total} 個", - "pricingFilteredFrom": "(從 {count} 中篩選)", - "pricingShowMoreProviders": "顯示另外 {count} 個(剩餘 {remaining} 個)", - "modelOverridesTitle": "模型覆寫", - "modelOverridesDesc": "覆寫路由與請求塑形所使用的提供者/模型能力。目標使用與 Combo 相同的提供者/模型格式。", - "searchModelOverrideTargets": "搜尋提供者/模型...", - "selectedModel": "已選模型", + "pricingShowingProviders": "顯示 {visible} 個,共 {total} 個", + "pricingFilteredFrom": "(從 {count} 箇中篩選)", + "pricingShowMoreProviders": "顯示另外 {count} 個(還剩 {remaining} 個)", + "modelOverridesTitle": "模型覆蓋", + "modelOverridesDesc": "覆蓋路由和請求整形使用的provider/model能力。目標使用與combo相同的provider/model形式。", + "searchModelOverrideTargets": "搜尋provider/model...", + "selectedModel": "選中的模型", "configured": "已設定", "none": "無", - "modelOverrideValuePlaceholder": "數值", + "modelOverrideValuePlaceholder": "數字值", "addKeyValue": "新增鍵值", - "noModelOverrides": "此模型未設定任何覆寫。", - "modelOverrideLoadFailed": "載入模型覆寫設定失敗", - "modelOverrideSaved": "模型覆寫設定已儲存", - "modelOverrideRemoved": "模型覆寫設定已移除", - "modelOverrideSaveFailed": "儲存模型覆寫設定失敗", - "modelOverrideRemoveFailed": "移除模型覆寫設定失敗", + "noModelOverrides": "該模型尚未設定覆蓋。", + "modelOverrideLoadFailed": "載入模型覆蓋失敗", + "modelOverrideSaved": "模型覆蓋已保存", + "modelOverrideRemoved": "模型覆蓋已移除", + "modelOverrideSaveFailed": "保存模型覆蓋失敗", + "modelOverrideRemoveFailed": "移除模型覆蓋失敗", "registry": "登記處", "priced": "定價", "searchProvidersModels": "搜尋提供者或模型...", @@ -6751,9 +6751,9 @@ "noProvidersMatch": "沒有與您的搜尋匹配的提供者。", "howPricingWorks": "定價如何運作", "cacheWrite": "快取寫入", - "unsaved": "未儲存", - "resetDefaults": "__MISSING__:Reset defaults", - "saveProvider": "儲存提供者", + "unsaved": "未保存", + "resetDefaults": "重置預設值", + "saveProvider": "保存提供者", "model": "模型", "models": "模型", "moreProviders": "{count} 更多提供者", @@ -6762,51 +6762,51 @@ "activeIssuesDetected": "檢測到活躍問題", "off": "關閉", "resetPricingConfirm": "將 {provider} 的所有定價重置為預設值?", - "pricingDescInput": "輸入:傳送到模型的權杖", - "pricingDescOutput": "輸出:生成的 Tokens", + "pricingDescInput": "輸入:發送到模型的令牌", + "pricingDescOutput": "輸出:生成的Tokens", "pricingDescCached": "快取:重用輸入(約輸入率的 50%)", - "pricingDescReasoning": "推理:思考 Tokens(預設回退到輸出費率)", - "pricingDescCacheWrite": "快取寫入:建立快取條目(回退到輸入)", - "pricingDescFormula": "成本 = (輸入 × 輸入率) + (輸出 × 輸出率) + (快取 × 快取率) 每百萬 Tokens。", + "pricingDescReasoning": "推理:思考Tokens(預設回退到輸出費率)", + "pricingDescCacheWrite": "快取寫入:創建快取條目(回退到輸入)", + "pricingDescFormula": "成本 = (輸入 × 輸入率) + (輸出 × 輸出率) + (快取 × 快取率) 每百萬Tokens。", "pricingSettingsTitle": "定價設定", "totalModels": "模型總數", "active": "活躍", "costCalculation": "成本計算", - "costCalculationDesc": "成本是根據為每個模型設定的權杖使用情況和定價費率計算的。", + "costCalculationDesc": "成本是根據為每個模型設定的令牌使用情況和定價費率計算的。", "pricingFormat": "定價格式", - "pricingFormatDesc": "所有費率均以美元/100 萬 Tokens 為單位(每百萬 Tokens 美元)。", - "tokenTypes": "Token 類型", - "inputTokenDesc": "標準提示 Tokens", - "outputTokenDesc": "補全 / 回應 Tokens", - "cachedTokenDesc": "快取輸入 Tokens(通常按輸入費率的 50% 計)", - "reasoningTokenDesc": "特殊推理 / 思考 Tokens(回退到輸出費率)", - "cacheCreationTokenDesc": "用於建立快取條目的 Tokens(回退到輸入費率)", + "pricingFormatDesc": "所有費率均以美元/100 萬Tokens為單位(每百萬Tokens美元)。", + "tokenTypes": "Token類型", + "inputTokenDesc": "標準提示Tokens", + "outputTokenDesc": "補全 / 回應Tokens", + "cachedTokenDesc": "快取輸入Tokens(通常按輸入費率的 50% 計)", + "reasoningTokenDesc": "特殊推理 / 思考Tokens(回退到輸出費率)", + "cacheCreationTokenDesc": "用於創建快取條目的Tokens(回退到輸入費率)", "customPricingNote": "你可以覆蓋特定模型的預設定價。自定義覆蓋會優先於自動檢測到的定價。", "editPricing": "編輯定價", - "viewFullDetails": "檢視完整詳情", + "viewFullDetails": "查看完整詳情", "themeCoral": "珊瑚色", "adaptiveVolumeRouting": "自適應流量路由", - "adaptiveVolumeRoutingDesc": "根據即時負載量和吞吐壓力,動態調整各提供者連線承載的流量。", + "adaptiveVolumeRoutingDesc": "根據實時負載量和吞吐壓力,動態調整各提供者連接承載的流量。", "lkgpToggleTitle": "最後已知良好提供者(LKGP)", "lkgpToggleDesc": "啟用後,路由器會記住上一次成功返回回應的提供者,並在後續請求中優先嚐試它。", - "echoRequestedModelTitle": "在回應中反映請求的模型名稱", - "echoRequestedModelDesc": "啟用後,回應的 `model` 欄位會反映客戶端請求的別名或組合名稱,而非上游模型名稱。修正嚴格客戶端(例如 Claude Desktop)因回應的 model 與請求不符而拒絕回應的問題。", - "webSearchRouteTitle": "網路搜尋路由", - "webSearchRouteDesc": "當請求包含原生的 web_search 工具時,將整個請求路由到此模型而非預設模型 — 適用於未實作 Anthropic web_search 伺服器工具的提供者。留空以停用。", - "webSearchRoutePlaceholder": "搜尋或選取模型⋯", - "paidModelPatternWarning": "此模式僅比對付費模型 — 請啟用付費模型或調整模式。", - "clearLkgpCache": "清除 LKGP 快取", - "lkgpCacheCleared": "LKGP 快取已成功清除", - "lkgpCacheClearFailed": "清除 LKGP 快取失敗", + "echoRequestedModelTitle": "在回應中回顯請求的模型名稱", + "echoRequestedModelDesc": "啟用後,回應的 `model` 欄位將回顯客戶端請求的別名或組合名稱,而不是上游模型名稱。這可以解決嚴格的客戶端(例如Claude Desktop)因回應中的模型與請求不匹配而拒絕回應的問題。", + "webSearchRouteTitle": "網頁搜尋路由", + "webSearchRouteDesc": "當請求包含原生web_search工具時,將整個請求路由到此模型而不是預設模型——這對於未實現Anthropic的web_search服務端工具的提供者非常有用。留空以禁用。", + "webSearchRoutePlaceholder": "搜尋或選擇模型…", + "paidModelPatternWarning": "此模式僅匹配付費模型—請啟用付費模型或調整該模式。", + "clearLkgpCache": "清除LKGP快取", + "lkgpCacheCleared": "LKGP快取已成功清除", + "lkgpCacheClearFailed": "清除LKGP快取失敗", "days": "天", - "lkgp": "LKGP 模式", + "lkgp": "LKGP模式", "lkgpDesc": "最後已知良好提供者(可預測的彈性)", "maintenance": "維護", "purgeExpiredLogs": "清理過期日誌", "purgeLogsFailed": "清理日誌失敗", - "logsDeleted": "{count, plural, =0 {無過期紀錄被清除} one {已清除 # 筆過期紀錄} other {已清除 # 筆過期紀錄}}", - "resetUsageData": "重置使用量資料", - "resetUsageDataDesc": "選擇要刪除多遠以前的使用量、請求紀錄和分析資料。提供者設定、連線、API 金鑰、組合和設定將會保留。此動作無法復原。", + "logsDeleted": "{count, plural, =0 {未清除過期日誌} one {已清除 # 條過期日誌} other {已清除 # 條過期日誌}}", + "resetUsageData": "重置使用資料", + "resetUsageDataDesc": "選擇要刪除多久以前的使用情況、請求日誌和分析資料。服務商設定、連接、API Key、組合和設定將被保留。此操作無法撤銷。", "resetUsagePeriod_5m": "5 分鐘", "resetUsagePeriod_1h": "1 小時", "resetUsagePeriod_3h": "3 小時", @@ -6815,46 +6815,46 @@ "resetUsagePeriod_1d": "1 天", "resetUsagePeriod_7d": "7 天", "resetUsagePeriod_30d": "30 天", - "resetUsagePeriod_all": "全部時間", - "resetUsageSuccess": "{count, plural, =0 {未刪除任何使用量資料列} one {已重設使用量資料(已刪除 # 列)} other {已重設使用量資料(已刪除 # 列)}}", - "resetUsageFailed": "重設使用量資料失敗", + "resetUsagePeriod_all": "所有時間", + "resetUsageSuccess": "{count, plural, =0 {未刪除任何使用資料行} one {已重置使用資料(刪除了 # 行)} other {已重置使用資料(刪除了 # 行)}}", + "resetUsageFailed": "重置使用資料失敗", "reset": "重置", - "resetting": "正在重設⋯", - "contextOpt": "上下文最佳化", - "contextOptDesc": "根據上下文視窗需求和對話長度進行路由", + "resetting": "正在重置...", + "contextOpt": "上下文優化", + "contextOptDesc": "根據上下文窗口需求和對話長度路由", "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", + "cacheOptDesc": "將可複用的提示前綴保持在同一個提供者賬戶上。", "priorityDesc": "順序回退——先嚐試提供者 1,再嘗試提供者 2,依此類推", "weightedDesc": "按百分比權重在各提供者之間分配流量", "modelRoutingTitle": "模型路由規則", - "modelRoutingDesc": "使用 glob 模式自動將模型路由到指定組合", + "modelRoutingDesc": "使用glob模式自動將模型路由到指定組合", "addRule": "新增規則", "routeToCombo": "路由到組合", "selectCombo": "選擇組合...", "priorityHint": "數值越高越優先檢查。具體模式建議使用 10+。", - "patternHint": "使用 * 匹配任意字元,? 匹配單個字元。不區分大小寫。", - "noRoutingRules": "未設定路由規則。請求預設使用全域性組合。", - "routingRuleHint": "新增類似 claude-opus* -> frontier-combo 的規則,以自動路由請求。", + "patternHint": "使用 * 匹配任意字符,? 匹配單個字符。不區分大小寫。", + "noRoutingRules": "未設定路由規則。請求預設使用全域組合。", + "routingRuleHint": "新增類似claude-opus* -> frontier-combo的規則,以自動路由請求。", "deleteRoutingRule": "刪除此模型路由規則?", "exactMatchMode": "精確匹配", - "wildcardPatternMode": "萬用字元模式", - "exactMatchModeDesc": "對已棄用或已重新命名的模型 ID 使用精確別名。", - "wildcardPatternModeDesc": "當一組模型應對映到同一目標時,使用帶 * 和 ? 的萬用字元別名。", + "wildcardPatternMode": "通配符模式", + "exactMatchModeDesc": "對已棄用或已重命名的模型ID使用精確別名。", + "wildcardPatternModeDesc": "當一組模型應映射到同一目標時,使用帶 * 和 ? 的通配符別名。", "noExactAliasesConfigured": "未設定精確匹配別名。", - "wildcardRulesTitle": "萬用字元規則", - "noWildcardAliasesConfigured": "未設定萬用字元別名。", + "wildcardRulesTitle": "通配符規則", + "noWildcardAliasesConfigured": "未設定通配符別名。", "overview": "概覽", "unknownError": "未知錯誤", - "pricingSourceLiteLLM": "LiteLLM 定價來源", + "pricingSourceLiteLLM": "LiteLLM定價來源", "clearSyncedPricingConfirm": "確定要清除已同步的定價嗎?", "clearSyncedPricingFailed": "清除已同步定價失敗", - "pricingSourceUser": "使用者定價來源", + "pricingSourceUser": "用戶定價來源", "pageDescription": "頁面描述", "pricingSyncStatus": "定價同步狀態", "whitelist": "白名單", - "syncDisabled": "同步已停用", + "syncDisabled": "同步已禁用", "pricingLoadFailed": "載入定價失敗", - "pricingSyncDescription": "從 models.dev 同步模型定價和能力資料。", + "pricingSyncDescription": "從models.dev同步模型定價和能力資料。", "clearSyncedPricingSuccess": "已清除同步定價", "clearSyncedPricingFailedWithReason": "清除價格失敗:{reason}", "pricingSourceDefault": "預設定價來源", @@ -6862,136 +6862,136 @@ "enableSyncError": "啟用同步失敗", "syncEnabled": "同步已啟用", "blacklist": "黑名單", - "pricingSourceModelsDev": "models.dev 定價來源", + "pricingSourceModelsDev": "models.dev定價來源", "syncedModels": "已同步模型", "budget": "預算", "pricingSyncTitle": "定價同步", "pricingResetFailedWithReason": "重置價格失敗:{reason}", "tab": "選項卡", - "pricingSavedProvider": "已儲存 {provider} 的價格", + "pricingSavedProvider": "已保存 {provider} 的價格", "pricingSyncFailed": "定價同步失敗", - "pricingSaveFailedWithReason": "儲存價格失敗:{reason}", + "pricingSaveFailedWithReason": "保存價格失敗:{reason}", "pricingResetProvider": "已重置 {provider} 的價格", "nextSync": "下次同步", "pricingSyncFailedWithReason": "價格同步失敗:{reason}", "clearSyncedPricing": "清除同步定價", "compressionTitle": "提示詞壓縮", - "compressionDesc": "在傳送給提供者之前壓縮提示詞,以減少 token 使用量", + "compressionDesc": "在發送給提供者之前壓縮提示詞,以減少token使用量", "compressionGuidanceFullGuideLink": "完整壓縮指南", - "compressionGuidanceShow": "詳細資訊", - "compressionGuidanceHide": "隱藏詳細資訊", + "compressionGuidanceShow": "詳情", + "compressionGuidanceHide": "隱藏詳情", "compressionGuidanceSafeDefault": "安全預設", "compressionGuidanceCacheImpact": "快取影響", "tokenSaverTitle": "Token Saver", - "tokenSaverSubtitle": "讓每次請求消耗更少 token。", + "tokenSaverSubtitle": "讓每次請求消耗更少token。", "tokenSaverToolOutput": "工具輸出", - "tokenSaverToolOutputDesc": "在傳送給提供者前清理 git、grep、ls、tree 和日誌輸出。", - "tokenSaverLlmOutput": "LLM 輸出", + "tokenSaverToolOutputDesc": "在發送給提供者前清理git、grep、ls、tree和日誌輸出。", + "tokenSaverLlmOutput": "LLM輸出", "tokenSaverLlmOutputDesc": "注入簡潔回覆指令,不改寫提供者輸出。", "tokenSaverInputCompression": "輸入壓縮", - "tokenSaverInputCompressionDesc": "在保留程式碼、URL 和意圖的前提下改寫可壓縮的對話歷史。", + "tokenSaverInputCompressionDesc": "在保留代碼、URL和意圖的前提下改寫可壓縮的對話歷史。", "tokenSaverFineTunePrefix": "可在以下頁面微調各引擎:", "tokenSaverFineTuneSuffix": "或按請求組合引擎:", "compressionMode": "壓縮模式", "compressionModeOff": "關閉", "compressionModeOffDesc": "不應用壓縮", "compressionModeLite": "精簡", - "compressionModeLiteDesc": "減少空白字元和空行", + "compressionModeLiteDesc": "減少空白字符和空行", "compressionModeStandard": "標準(Caveman)", - "compressionModeStandardDesc": "基於規則的壓縮,包含 30+ 個模式,並保留程式碼塊和 URL", + "compressionModeStandardDesc": "基於規則的壓縮,包含 30+ 個模式,並保留代碼塊和URL", "compressionModeAggressive": "激進", "compressionModeAggressiveDesc": "摘要 + 工具結果壓縮 + 漸進老化,以實現最大節省", "compressionModeUltra": "極速", - "compressionModeUltraDesc": "使用包括語義去重在內的全部技術進行最大壓縮", - "compressionAggressiveConfig": "Aggressive 引擎設定", + "compressionModeUltraDesc": "使用包括語意去重在內的全部技術進行最大壓縮", + "compressionAggressiveConfig": "Aggressive引擎設定", "compressionAggressiveConfigDesc": "微調摘要、工具壓縮和老化閾值", - "compressionUltraConfig": "Ultra 引擎設定", - "compressionUltraConfigDesc": "微調啟發式剪枝、SLM 後備和每條訊息閾值", + "compressionUltraConfig": "Ultra引擎設定", + "compressionUltraConfigDesc": "微調啟發式剪枝、SLM後備和每條消息閾值", "compressionUltraRate": "保留比例", "compressionUltraMinScore": "最低分數閾值", - "compressionUltraSlmFallback": "回退到 Aggressive", - "compressionUltraModelPath": "SLM 模型路徑", - "compressionUltraEngine": "Ultra 層級", - "compressionUltraEngineHeuristic": "啟發式(Tier-A,預設)", - "compressionUltraEngineSlm": "SLM(LLMLingua-2,自選啟用)", - "compressionUltraSlmHint": "SLM 在首次使用(冷啟動)時下載一個小型 ONNX 模型,並在超時或不可用時透明地回退到啟發式。", - "compressionUltraSlmPrewarm": "啟用時預熱 SLM 模型", + "compressionUltraSlmFallback": "回退到Aggressive", + "compressionUltraModelPath": "SLM模型路徑", + "compressionUltraEngine": "極致級別", + "compressionUltraEngineHeuristic": "啟發式 (Tier-A,預設)", + "compressionUltraEngineSlm": "SLM (LLMLingua-2,選擇性加入)", + "compressionUltraSlmHint": "SLM在首次使用時會下載一個小型ONNX模型(冷啟動),並在超時或不可用時無縫回退到啟發式演算法。", + "compressionUltraSlmPrewarm": "啟用時預熱SLM模型", "compressionSummarizerEnabled": "啟用摘要器", - "compressionMaxTokensPerMessage": "每條訊息最大 Token 數", + "compressionMaxTokensPerMessage": "每條消息最大Token數", "compressionMinSavings": "最低節省閾值", "compressionAgingThresholds": "老化閾值", - "compressionAgingThresholdsDesc": "每個老化層級保留的最近訊息數量(越高表示保留越多)", + "compressionAgingThresholdsDesc": "每個老化層級保留的最近消息數量(越高表示保留越多)", "compressionToolStrategies": "工具結果策略", "compressionToolStrategiesDesc": "為不同工具結果類型切換壓縮策略", "compressionGeneral": "通用設定", "compressionAutoTrigger": "自動觸發閾值", - "compressionCacheTTL": "快取 TTL", + "compressionCacheTTL": "快取TTL", "compressionPreserveSystem": "保留系統提示", - "compressionPreserveSystemAlways": "永遠", + "compressionPreserveSystemAlways": "總是", "compressionPreserveSystemWhenNoCache": "無快取時", - "compressionPreserveSystemNever": "永不", - "compressionLiveZoneTitle": "快取對齊即時區域", - "compressionLiveZoneDesc": "保持壓縮對話前綴穩定,僅處理新附加的項目。", - "compressionExclusionsTitle": "__MISSING__:Compression Exclusions", - "compressionExclusionsDesc": "__MISSING__:Model ids or provider/model patterns that must never be compressed. `*` is the only wildcard (e.g. `openai/*`, `*embedding*`). A matching request passes through byte-identical — no compression engine runs.", - "compressionExclusionsPlaceholder": "__MISSING__:One pattern per line, e.g.\nopenai/text-embedding-3-large\nanthropic/*", - "compressionExclusionsSave": "__MISSING__:Save", - "compressionExclusionsSaved": "__MISSING__:Saved", - "compressionExclusionsCount": "__MISSING__:{count, plural, one {# exclusion} other {# exclusions}} configured", - "compressionExclusionsEmpty": "__MISSING__:No exclusions configured — every model/endpoint is eligible for compression (default behavior).", - "compressionCavemanConfig": "Caveman 引擎設定", + "compressionPreserveSystemNever": "從不", + "compressionLiveZoneTitle": "快取對齊的活動區域", + "compressionLiveZoneDesc": "保持壓縮後的對話前綴穩定,僅處理新追加的項。", + "compressionExclusionsTitle": "壓縮排除規則", + "compressionExclusionsDesc": "設定哪些模型或端點應跳過壓縮。使用 * 作為通配符。", + "compressionExclusionsPlaceholder": "例如claude-opus*", + "compressionExclusionsSave": "保存排除規則", + "compressionExclusionsSaved": "排除規則已保存。", + "compressionExclusionsCount": "{count} 條規則", + "compressionExclusionsEmpty": "尚未設定排除規則—所有模型和端點均可壓縮。", + "compressionCavemanConfig": "Caveman引擎設定", "compressionCavemanConfigDesc": "微調基於規則的壓縮引擎", - "compressionCavemanPanelHint": "其開關與等級在面板中設定:", - "compressionRoles": "壓縮訊息角色", - "compressionRoleUser": "使用者", + "compressionCavemanPanelHint": "其開關和級別在面板中設定:", + "compressionRoles": "壓縮消息角色", + "compressionRoleUser": "用戶", "compressionRoleAssistant": "助手", "compressionRoleSystem": "系統", - "compressionMinLength": "最小訊息長度", + "compressionMinLength": "最小消息長度", "compressionSkipRules": "跳過壓縮規則", - "compressionSkipRulesDesc": "點選規則以在壓縮時跳過它們", + "compressionSkipRulesDesc": "點擊規則以在壓縮時跳過它們", "compressionPreservePatterns": "保留模式", - "compressionPreservePatternsDesc": "永不壓縮的正規表示式模式(每行一個)", + "compressionPreservePatternsDesc": "永不壓縮的正則表達式模式(每行一個)", "compressionLogTitle": "壓縮日誌", "compressionLogEmpty": "尚無壓縮請求。啟用壓縮後處理請求時,壓縮統計會顯示在這裡。", "minutes": "分鐘", "compressionModeRtk": "RTK", "compressionModeRtkDesc": "感知命令的工具輸出過濾", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", + "compressionModeCodexResponses": "Responses工具輸出", + "compressionModeCodexResponsesDesc": "對符合條件的shell、patch、search、build和JSON輸出進行保守壓縮。", "compressionModeStacked": "堆疊", - "compressionModeStackedDesc": "先進行 RTK 工具輸出過濾,再進行 Caveman 訊息壓縮", - "qdrantTitle": "Qdrant(向量記憶體)", - "qdrantDesc": "可選。在外部向量資料庫中索引語義記憶以加快檢索速度。", + "compressionModeStackedDesc": "先進行RTK工具輸出過濾,再進行Caveman消息壓縮", + "qdrantTitle": "Qdrant(矢量記憶體)", + "qdrantDesc": "可選。在外部向量資料庫中索引語意記憶以加快檢索速度。", "qdrantStatusActive": "活躍", "qdrantStatusError": "錯誤", "qdrantStatusDisabled": "殘疾人", - "qdrantEnable": "啟用 Qdrant", - "qdrantEnableDesc": "啟用後,語義/混合策略可以使用 Qdrant 來檢索記憶。", + "qdrantEnable": "啟用Qdrant", + "qdrantEnableDesc": "啟用後,語意/混合策略可以使用Qdrant來檢索記憶。", "qdrantTesting": "測試...", - "qdrantTestConnection": "測試連線", - "qdrantSaved": "設定已儲存", - "qdrantSaveError": "儲存設定失敗", - "qdrantHostHint": "沒有埠。示例:127.0.0.1 或 http://qdrant", + "qdrantTestConnection": "測試連接", + "qdrantSaved": "設定已保存", + "qdrantSaveError": "保存設定失敗", + "qdrantHostHint": "沒有連接埠。示例:127.0.0.1 或http://qdrant", "qdrantPort": "港口", - "qdrantPortHint": "Qdrant 預設值:6333", - "qdrantCollectionHint": "儲存點的位置。", + "qdrantPortHint": "Qdrant預設值:6333", + "qdrantCollectionHint": "存儲點的位置。", "qdrantEmbeddingModel": "嵌入模型", "qdrantHelpTitle": "快速設定幫助", "qdrantHelpQuickTitle": "快速設定(Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. 主機:Qdrant IP/URL,埠:6333,集合:omniroute_memory。", - "qdrantHelpStep2": "2. 如果使用 nvidia/llama-nemotron-embed-vl-1b-v2:free,請使用集合維度 2048。", + "qdrantHelpStep1": "1. 主機:Qdrant IP/URL,連接埠:6333,集合:omniroute_memory。", + "qdrantHelpStep2": "2. 如果使用nvidia/llama-nemotron-embed-vl-1b-v2:free,請使用集合維度 2048。", "qdrantHelpStep3": "3. 模型欄位:openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free。", - "qdrantHelpStep4": "4. 儲存,測試連線,然後測試搜尋。", + "qdrantHelpStep4": "4. 保存,測試連接,然後測試搜尋。", "qdrantEmbeddingQuickSelect": "從發現的模型中快速選擇...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", "qdrantEmbeddingHint": "格式:提供者/模型。必須設定提供者憑證。", "qdrantApiKeyPlaceholderKeep": "(留空以保留當前金鑰)", "qdrantApiKeyPlaceholderOptional": "(如不用則留空)", - "qdrantSaveHint": "提示:編輯主機/埠/集合/模型,然後單擊“儲存”。 API 金鑰是可選的。", + "qdrantSaveHint": "提示:編輯主機/連接埠/集合/模型,然後單擊“保存”。API Key是可選的。", "qdrantSearchTestTitle": "搜尋測試", - "qdrantSearchTestDesc": "在 Qdrant 中生成嵌入和搜尋。", - "qdrantSearchPlaceholder": "示例:使用者偏好、歷史記錄等", - "qdrantNoResults": "無結果(或未設定 Qdrant)。", + "qdrantSearchTestDesc": "在Qdrant中生成嵌入和搜尋。", + "qdrantSearchPlaceholder": "示例:用戶偏好、歷史記錄等", + "qdrantNoResults": "無結果(或未設定Qdrant)。", "qdrantCleanupTitle": "保留和清理", "qdrantCleanupDesc": "根據以下內容刪除過期和舊的積分", "searching": "正在尋找...", @@ -7001,14 +7001,14 @@ "current": "當前", "remove": "刪除", "search": "搜尋", - "oneproxyTitle": "1proxy 免費代理市場", + "oneproxyTitle": "1proxy免費代理市場", "oneproxyTotalProxies": "代理總數", "oneproxyAvgQuality": "平均質量", "resilienceScope": "範圍:", "resilienceTrigger": "觸發:", "resilienceEffect": "效果:", "resilienceRequestQueueTitle": "請求佇列與速率", - "resilienceAutoEnableApiKeyProviders": "為 API 金鑰提供者自動啟用", + "resilienceAutoEnableApiKeyProviders": "為API Key提供者自動啟用", "resilienceRequestsPerMinute": "每分鐘請求數", "resilienceMinTimeBetweenRequests": "請求之間的最小時間", "resilienceConcurrentRequests": "併發請求數", @@ -7021,11 +7021,11 @@ "routingRemoveEntry": "刪除條目", "routingNeedlesSubstrings": "Needles(要匹配的子字串)", "routingCaseSensitive": "區分大小寫", - "routingPrefixes": "字首", + "routingPrefixes": "前綴", "routingMatch": "比賽", "routingReplacement": "更換", "routingReplaceAllOccurrences": "替換所有出現的地方", - "routingPatternRegex": "模式(正規表示式)", + "routingPatternRegex": "模式(正則表達式)", "routingFlags": "旗幟", "routingNeedles": "針", "routingBlockText": "塊文本", @@ -7033,7 +7033,7 @@ "routingEntrypoint": "入口點", "routingVersionFormat": "版本格式", "routingCchAlgorithm": "CCH演算法", - "routingWordsToObfuscate": "要混淆的單詞(在第一個字元後插入 ZWJ)", + "routingWordsToObfuscate": "要混淆的單詞(在第一個字符後插入ZWJ)", "logsSettingsTitle": "日誌設定", "detailedLogsLabel": "啟用詳細日誌", "detailedLogsDesc": "啟用詳細的請求/回應日誌記錄", @@ -7043,23 +7043,23 @@ "maxDetailSizeDesc": "詳細日誌條目的最大大小", "ringBufferSizeLabel": "環形緩衝區大小", "ringBufferSizeDesc": "日誌環形緩衝區的大小", - "semanticCacheEnabledLabel": "語義快取啟用", - "semanticCacheMaxSizeLabel": "語義快取最大大小", - "semanticCacheMaxSizeDesc": "語義快取條目的最大數量", - "semanticCacheTTLLabel": "語義快取 TTL", + "semanticCacheEnabledLabel": "語意快取啟用", + "semanticCacheMaxSizeLabel": "語意快取最大大小", + "semanticCacheMaxSizeDesc": "語意快取條目的最大數量", + "semanticCacheTTLLabel": "語意快取TTL", "promptCacheEnabledLabel": "提示快取已啟用", "promptCacheEnabledDesc": "啟用提示快取", "promptCacheStrategyLabel": "提示快取策略", "promptCacheStrategyDesc": "即時快取策略", "alwaysPreserveClientCacheLabel": "始終保留客戶端快取", - "alwaysPreserveClientCacheDesc": "客戶端快取儲存策略", + "alwaysPreserveClientCacheDesc": "客戶端快取保存策略", "logRetentionPolicyTitle": "日誌保留策略", "resilienceUseUpstream429HintsForBreaker": "使用上游 429 提示(斷路器)", "appearanceLogoPreviewAlt": "標誌預覽", - "appearanceFaviconPreviewAlt": "圖示預覽", + "appearanceFaviconPreviewAlt": "圖標預覽", "oneproxyLastSync": "上次同步", "oneproxyAllProtocols": "所有協議", - "oneproxyCountryCodePlaceholder": "國家/地區程式碼(例如美國)", + "oneproxyCountryCodePlaceholder": "國家/地區代碼(例如美國)", "oneproxyMinQualityPlaceholder": "最低質量", "oneproxyLoadingProxies": "正在載入代理...", "oneproxyLastSyncLabel": "上次同步:", @@ -7070,47 +7070,47 @@ "oneproxySyncStatusTitle": "同步狀態", "oneproxySuccess": "成功", "oneproxyFailed": "失敗", - "routingAntigravitySignatureTitle": "反重力簽名快取模式", - "routingAntigravitySignatureDesc": "控制 OmniRoute 在 Antigravity 相容的工具呼叫流程中是僅複用已儲存的 Gemini thought 簽名,還是接受經校驗的客戶端提交簽名。", + "routingAntigravitySignatureTitle": "Antigravity簽名快取模式", + "routingAntigravitySignatureDesc": "控制OmniRoute在Antigravity相容的工具呼叫流程中是僅複用已存儲的Gemini thought簽名,還是接受經校驗的客戶端提交簽名。", "routingAntigravitySignatureEnabledLabel": "啟用", - "routingAntigravitySignatureEnabledDesc": "當前行為。忽略客戶端提交的簽名,繼續使用 OmniRoute 已儲存的流程。", + "routingAntigravitySignatureEnabledDesc": "當前行為。忽略客戶端提交的簽名,繼續使用OmniRoute已存儲的流程。", "routingAntigravitySignatureBypassLabel": "繞過", - "routingAntigravitySignatureBypassDesc": "經過輕量校驗後接受客戶端提交的簽名,無效時回退到已儲存的簽名。", + "routingAntigravitySignatureBypassDesc": "經過輕量校驗後接受客戶端提交的簽名,無效時回退到已存儲的簽名。", "routingAntigravitySignatureBypassStrictLabel": "嚴格繞過", - "routingAntigravitySignatureBypassStrictDesc": "在接受客戶端提交的簽名前要求完整的 protobuf 校驗。", + "routingAntigravitySignatureBypassStrictDesc": "在接受客戶端提交的簽名前要求完整的protobuf校驗。", "routingHeaderFingerprintTitle": "標頭指紋(每個提供者)", - "routingServerRejectedSave": "⚠ 伺服器拒絕儲存:", + "routingServerRejectedSave": "⚠ 伺服器拒絕保存:", "routingAddTransformOp": "新增變換操作", "routingClientCacheControlTitle": "客戶端快取控制", - "routingClientCacheControlDesc": "設定 OmniRoute 是否保留客戶端提交的 cache_control 標記", - "routingClientCacheControlAutoDesc": "對於確定性的 Claude 相容流程,按原樣保留客戶端提交的 cache_control。如果請求未攜帶 cache_control,OmniRoute 不會注入任何由橋接器擁有的標記,以相容 CC 相容的第三方代理。", + "routingClientCacheControlDesc": "設定OmniRoute是否保留客戶端提交的cache_control標記", + "routingClientCacheControlAutoDesc": "對於確定性的Claude相容流程,按原樣保留客戶端提交的cache_control。如果請求未攜帶cache_control,OmniRoute不會注入任何由橋接器擁有的標記,以相容Claude Code相容的第三方代理。", "routingClientCacheControlAlwaysLabel": "始終保留", - "routingClientCacheControlAlwaysDesc": "始終按原樣將客戶端提交的 cache_control 請求頭轉發給上游提供者。", + "routingClientCacheControlAlwaysDesc": "始終按原樣將客戶端提交的cache_control請求標頭轉發給上游提供者。", "routingClientCacheControlNeverLabel": "從不保留", - "routingClientCacheControlNeverDesc": "始終移除客戶端的 cache_control 請求頭,在原生提供者流程支援時由 OmniRoute 管理快取。", + "routingClientCacheControlNeverDesc": "始終移除客戶端的cache_control請求標頭,在原生提供者流程支援時由OmniRoute管理快取。", "routingZeroConfigTitle": "零設定自動路由", - "routingZeroConfigDesc": "啟用使用 auto/ 字首的自動提供者選擇。啟用後,發往 auto、auto/coding、auto/fast 等的請求將在所有已連線提供者之間動態路由。", + "routingZeroConfigDesc": "啟用使用auto/ 前綴的自動提供者選擇。啟用後,發往auto、auto/coding、auto/fast等的請求將在所有已連接提供者之間動態路由。", "routingDefaultAutoVariant": "預設自動變體", "visionBridge": "願景橋", - "visionBridgeDesc": "在將影像請求路由到純文本模型之前,自動執行一次視覺到文本的回退。", + "visionBridgeDesc": "在將圖像請求路由到純文本模型之前,自動執行一次視覺到文本的回退。", "visionBridgeEnabledLabel": "啟用", - "visionBridgeEnabledDesc": "切換預呼叫橋接,將影像內容替換為提取出的文本。", + "visionBridgeEnabledDesc": "切換預呼叫橋接,將圖像內容替換為提取出的文本。", "visionBridgeModel": "橋樑模型", "visionBridgeModelPlaceholder": "openai/gpt-4o-mini", - "visionBridgeModelHint": "可使用任何支援視覺的 OmniRoute 模型 ID。", + "visionBridgeModelHint": "可使用任何支援視覺的OmniRoute模型ID。", "visionBridgePrompt": "橋接提示", "visionBridgePromptPlaceholder": "簡要描述一下這張圖片。", "visionBridgePromptHint": "在將提取出的描述注入回原始請求前,先發送給視覺模型。", "visionBridgeTimeoutMs": "超時(毫秒)", - "visionBridgeMaxImagesPerRequest": "每個請求的最大影像數", + "visionBridgeMaxImagesPerRequest": "每個請求的最大圖像數", "resilienceMaxBackoffSteps": "最大退避步數", "resilienceProviderBreakerTitle": "按提供者的斷路器", "resilienceFailureThreshold": "失敗閾值", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceDegradationThreshold": "降級閾值", "resilienceResetTimeout": "重置超時", "resilienceFailureThresholdLabel": "失敗閾值", "resilienceResetTimeoutLabel": "重置超時", - "resilienceConnectionCooldownTitle": "連線冷卻", + "resilienceConnectionCooldownTitle": "連接冷卻", "resilienceUseUpstreamRetryHintsLabel": "使用上游重試提示", "resilienceUseUpstream429BreakerLabel": "使用上游 429 提示(斷路器)", "resilienceMaxBackoffStepsLabel": "最大退避步數", @@ -7119,56 +7119,56 @@ "resilienceDefault": "預設", "storageDatabaseBackupRetention": "資料庫備份保留", "storageDatabaseBackups": "資料庫備份", - "storageBackupRetentionDescription": "自動 SQLite 備份儲存於", + "storageBackupRetentionDescription": "自動SQLite備份存儲在", "storageBackupRetentionHelp": "設定要保留的快照數量,並可選擇刪除超過指定天數的備份。", "storageBackupCount": "{count} 個備份", "storageBackupMaximum": "最多 {count} 個", "storageBackupAgeRetention": "保留 {count} 天", - "storageBackupAgeRetentionOff": "天數保留關閉", - "storageBackupKeepLatest": "保留最新備份", - "storageBackupDeleteOlderThan": "刪除超過天數", - "storageBackupSaveRetention": "儲存保留設定", + "storageBackupAgeRetentionOff": "保留時長已關閉", + "storageBackupKeepLatest": "保留最新的備份", + "storageBackupDeleteOlderThan": "刪除早於以下天數的", + "storageBackupSaveRetention": "保存保留設定", "storageBackupCleanOld": "清理舊備份", - "storageDatabaseStatistics": "資料庫統計", - "storageIntegrityNotChecked": "尚未檢查", - "backupRetentionSaved": "備份保留設定已儲存。", - "backupRetentionSaveFailed": "儲存備份保留設定失敗", - "backupCleanupSuccess": "已刪除 {backups} 個備份集與 {files} 個檔案。", + "storageDatabaseStatistics": "資料庫統計資訊", + "storageIntegrityNotChecked": "未檢查", + "backupRetentionSaved": "備份保留設定已保存。", + "backupRetentionSaveFailed": "保存備份保留設定失敗", + "backupCleanupSuccess": "已刪除 {backups} 個備份集和 {files} 個檔案。", "backupCleanupFailed": "清理資料庫備份失敗", - "purgeQuotaSnapshotsSuccess": "已清除 {count} 筆配額快照", + "purgeQuotaSnapshotsSuccess": "已清除 {count} 個配額快照", "purgeQuotaSnapshotsFailed": "清除配額快照失敗", - "purgeCallLogsSuccess": "已清除 {count} 筆通話記錄", - "purgeCallLogsFailed": "清除通話記錄失敗", - "purgeDetailedLogsSuccess": "已清除 {count} 筆詳細記錄", - "purgeDetailedLogsFailed": "清除詳細記錄失敗", - "vacuumCompleted": "VACUUM 已完成", - "vacuumFailed": "VACUUM 失敗", - "jsonExportFailed": "JSON 匯出失敗", - "invalidJsonFileType": "無效的檔案類型。僅允許 .json 檔案。", - "legacyJsonImportSuccess": "舊版 JSON 匯入成功!", - "jsonImportFailed": "匯入 JSON 失敗", - "jsonImportError": "JSON 匯入時發生錯誤", + "purgeCallLogsSuccess": "已清除 {count} 條呼叫日誌", + "purgeCallLogsFailed": "清除呼叫日誌失敗", + "purgeDetailedLogsSuccess": "已清除 {count} 條詳細日誌", + "purgeDetailedLogsFailed": "清除詳細日誌失敗", + "vacuumCompleted": "VACUUM已完成", + "vacuumFailed": "VACUUM失敗", + "jsonExportFailed": "JSON導出失敗", + "invalidJsonFileType": "無效的檔案類型。僅允許 .json檔案。", + "legacyJsonImportSuccess": "舊版JSON導入成功!", + "jsonImportFailed": "導入JSON失敗", + "jsonImportError": "導入JSON時出錯", "storagePurgeData": "清除資料", - "storagePurgeDataDesc": "立即刪除所有記錄,不套用保留檢查。請謹慎使用。", + "storagePurgeDataDesc": "立即刪除所有記錄,不進行保留檢查。請謹慎使用。", "storageRetentionCleanup": "保留設定", "storageRetentionCleanupDesc": "設定操作記錄保留和資料庫備份清理。", - "retentionCallDays": "呼叫 {count} 天", - "retentionAppDays": "應用程式 {count} 天", - "retentionRows": "{count} 列", + "retentionCallDays": "呼叫 {count}天", + "retentionAppDays": "應用 {count}天", + "retentionRows": "{count} 行", "retentionQuotaSnapshots": "配額快照(天)", - "retentionCompressionAnalytics": "壓縮分析(天)", - "retentionMcpAudit": "MCP 稽核(天)", - "retentionA2aEvents": "A2A 活動(天)", + "retentionCompressionAnalytics": "壓縮分析(天數)", + "retentionMcpAudit": "MCP審核(天)", + "retentionA2aEvents": "A2A活動(天)", "retentionCallLogs": "通話記錄(天)", "retentionUsageHistory": "使用歷史(天)", "retentionMemoryEntries": "記憶體條目(天)", - "retentionXpAuditLog": "XP 稽核記錄(天數)", - "saveRetentionSettings": "儲存保留設定", + "retentionXpAuditLog": "XP審計日誌(天數)", + "saveRetentionSettings": "保存保留設定", "storageAutoVacuumMode": "自動真空模式", "storageScheduledVacuum": "預定真空", "storageVacuumHour": "真空時間(0-23)", "storagePageSize": "頁面大小(位元組)", - "storageOptimizationSettings": "最佳化設定", + "storageOptimizationSettings": "優化設定", "storageJournalModeNone": "無", "storageJournalModeFull": "完整", "storageJournalModeIncremental": "增量", @@ -7176,260 +7176,260 @@ "storageVacuumDaily": "每日", "storageVacuumWeekly": "每週", "storageVacuumMonthly": "每月", - "storageCacheSizeKb": "快取大小(KB)", - "storageOptimizeOnStartup": "啟動時最佳化", - "storageSaveOptimization": "儲存最佳化設定", - "storageCompressionAggregation": "壓縮與彙總設定", - "storageEnableAggregation": "啟用資料彙總", - "storageRawDataRetention": "原始資料保留(天數)", + "storageCacheSizeKb": "快取大小 (KB)", + "storageOptimizeOnStartup": "啟動時優化", + "storageSaveOptimization": "保存優化設定", + "storageCompressionAggregation": "壓縮與聚合設定", + "storageEnableAggregation": "啟用資料聚合", + "storageRawDataRetention": "原始資料保留 (天)", "storageGranularity": "粒度", "storageHourly": "每小時", - "storageDaily": "每日", + "storageDaily": "每天", "storageWeekly": "每週", - "storageSaveAggregation": "儲存彙總設定", - "exportJson": "匯出 JSON", - "importJson": "匯入 JSON", - "manualVacuum": "手動 VACUUM", + "storageSaveAggregation": "保存聚合設定", + "exportJson": "導出JSON", + "importJson": "導入JSON", + "manualVacuum": "手動VACUUM", "purgeQuotaSnapshots": "清除配額快照", - "purgeCallLogs": "清除通話記錄", - "purgeDetailedLogs": "清除詳細記錄", + "purgeCallLogs": "清除呼叫日誌", + "purgeDetailedLogs": "清除詳細日誌", "storageDatabaseSize": "資料庫大小", "storagePageCount": "頁數", "storageFreelistCount": "空閒列表計數", "storageLastVacuum": "最後一次真空", - "storageLastOptimization": "最後最佳化", + "storageLastOptimization": "最後優化", "storageIntegrityCheck": "完整性檢查", "storageIntegrityOk": "✓ 確定", "storageIntegrityError": "✗ 錯誤", - "storageUsageTokenBuffer": "使用權杖緩衝區", - "storageUsageTokenBufferDesc": "為計入系統提示開銷而加到回報使用量的額外 token。", - "storageUsageTokenBufferHint": "設為 0 以回報原始提供者 token 計數。預設值:2000。", - "storageUsageTokenBufferCurrent": "目前:{value}", - "redisLauncherTitle": "本地 Redis", - "redisLauncherDesc": "一鍵啟動 Redis 7 容器(Podman 或 Docker),用於回應快取、配額追蹤和速率限制。", - "redisLauncherRefresh": "重新整理", + "storageUsageTokenBuffer": "使用令牌緩衝區", + "storageUsageTokenBufferDesc": "新增到報告用量的額外Token,以計算系統提示詞開銷。", + "storageUsageTokenBufferHint": "設定為 0 以報告服務商原始Token數量。預設值:2000。", + "storageUsageTokenBufferCurrent": "當前:{value}", + "redisLauncherTitle": "本地Redis", + "redisLauncherDesc": "一鍵啟動Redis 7 容器(Podman或Docker),用於回應快取、配額跟蹤和速率限制。", + "redisLauncherRefresh": "刷新", "redisLauncherStop": "停止", - "redisLauncherLaunching": "正在啟動⋯", - "redisLauncherLaunch": "啟動 Redis", + "redisLauncherLaunching": "正在啟動...", + "redisLauncherLaunch": "啟動Redis", "redisLauncherContainer": "容器", - "redisLauncherRunning": "執行中", - "redisLauncherReachable": "可連線", + "redisLauncherRunning": "運行中", + "redisLauncherReachable": "可達", "redisLauncherError": "錯誤:{message}", - "redisLauncherHint": "等同於執行 `omniroute redis up`。容器名稱為 `omniroute-redis`,監聽於 127.0.0.1:6379。", + "redisLauncherHint": "等同於運行 `omniroute redis up`。容器命名為 `omniroute-redis` 並監聽 127.0.0.1:6379。", "compressionSettingsAutoTriggerMode": "自動觸發模式", "compressionSettingsMcpDescriptionCompression": "MCP描述壓縮", - "mcpAccessibilityTitle": "MCP 無障礙輸出", + "mcpAccessibilityTitle": "MCP無障礙輸出", "compressionSettingsCavemanIntensity": "穴居人強度", "compressionSettingsCavemanOutputMode": "穴居人輸出模式", "compressionSettingsOutputStyles": "輸出樣式", "compressionStylesTileTitle": "輸出樣式", "compressionSettingsOutputIntensity": "輸出強度", "compressionSettingsAutoClarityBypass": "自動清晰度旁路", - "compressionEffectivePipeline": "有效管線:", + "compressionEffectivePipeline": "生效的流水線:", "compressionDerivedOff": "關閉", - "compressionDerivedRuns": "執行:{pipeline}", + "compressionDerivedRuns": "運行:{pipeline}", "compressionDerivedMode": "模式:{mode}", - "compressionAdaptiveOff": "自適應上下文預算:關閉(傳統自動觸發)", - "compressionAdaptiveTarget": "自適應({mode},策略:{policy})— 目標約 {target, number} tokens(針對 {contextLimit, number} token 的視窗)", - "compressionOutputStylesDescription": "注入回應塑形指令,無需改寫提供者輸出。可自由組合。", - "mcpAccessibilityDescription": "限定 MCP 工具輸出範圍(獨立儲存區)。", - "compressionStylesTileSummary": "已節省 {tokens, number} tokens · {runs} 次風格執行", - "compressionStylesTileEmpty": "尚無已套用風格的執行。", + "compressionAdaptiveOff": "自適應上下文預算:關閉(舊版自動觸發)", + "compressionAdaptiveTarget": "自適應 ({mode}, 策略: {policy}) —目標 ≈ {target, number} 個token (針對 {contextLimit, number} 個token的窗口)", + "compressionOutputStylesDescription": "注入回應塑造指令,而無需重寫服務商輸出。自由組合。", + "mcpAccessibilityDescription": "限制MCP工具輸出的範圍 (獨立存儲)。", + "compressionStylesTileSummary": "{tokens, number} 個token已節省· {runs, plural, one {# 次運行已應用樣式} other {# 次運行已應用樣式}}", + "compressionStylesTileEmpty": "尚無已應用樣式的運行。", "compressionLevel": { "minimal": "最小", "standard": "標準", - "aggressive": "積極", + "aggressive": "激進", "lite": "輕量", "full": "完整", "ultra": "極致" }, "compressionEngine": { "session-dedup": { - "label": "Session 去重", + "label": "工作階段去重", "description": "跨輪次區塊去重。" }, "ccr": { - "label": "CCR(檢索)", - "description": "內容定址檢索標記。" + "label": "CCR (檢索)", + "description": "內容尋址檢索標記。" }, "lite": { "label": "輕量", - "description": "空白與格式清理。" + "description": "空白和格式清理。" }, "rtk": { "label": "RTK", "description": "命令輸出過濾。" }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Responses工具輸出", + "description": "對受支援的Responses工具輸出進行保守壓縮。" }, "headroom": { - "label": "精簡", - "description": "表格 JSON 壓縮。" + "label": "預留空間", + "description": "表格JSON壓縮。" }, "relevance": { "label": "相關性", - "description": "針對最新使用者查詢進行抽取式句子評分。" + "description": "針對最後一次用戶查詢的抽取式句子評分。" }, "caveman": { - "label": "原始", - "description": "基於規則的文字壓縮。" + "label": "原始人", + "description": "基於規則的文本壓縮。" }, "aggressive": { - "label": "積極", - "description": "摘要整理並淘汰舊對話輪次。" + "label": "激進", + "description": "總結並老化舊輪次。" }, "llmlingua": { - "label": "LLMLingua(SLM)", - "description": "語義修剪(ONNX)。" + "label": "LLMLingua (SLM)", + "description": "語意剪枝 (ONNX)。" }, "ultra": { "label": "極致", - "description": "啟發式 Token 修剪,可選用 SLM。" + "description": "結合可選SLM的啟發式token剪枝。" }, "omniglyph": { "label": "OmniGlyph", - "description": "將上下文作為圖片(Claude Fable 5,直接路由)。" + "description": "上下文作為圖像 (Claude Fable 5,直接路徑)。" } }, "compressionOutputStyle": { "terse-prose": { - "label": "精簡文體", - "description": "刪除填充詞、冠詞與模糊用語,同時保持技術內容精確。" + "label": "精簡文本", + "description": "丟棄填充詞、冠詞和模稜兩可的話,同時保持技術實質內容準確。" }, "less-code": { - "label": "更少程式碼", - "description": "YAGNI 階梯:最小可行變更,不建立未要求的抽象層。" + "label": "更少代碼", + "description": "YAGNI階梯:最小可行改動,無未要求的抽象。" }, "ponytail": { "label": "Ponytail (lazy senior dev)", "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." }, "terse-cjk": { - "label": "精簡 CJK(文言)", - "description": "文言文極簡風格(僅適用於中文)。" + "label": "精簡CJK (文言)", + "description": "文言文極簡風格 (僅適用於中文)。" } }, "resilienceWaitForCooldown": "等待冷卻", "resilienceEnableServerSideWait": "啟用伺服器端等待", "resilienceMaximumRetries": "最大重試次數", "resilienceMaximumWaitPerRetry": "每次重試的最長等待時間", - "memorySkillsSkillsmpMarketplace": "SkillsMP 市場", - "memorySkillsFailedToSave": "儲存失敗", - "memorySkillsApiKey": "API金鑰", - "memorySkillsActiveSkillsProvider": "主動技能提供者", - "cliproxyapiFallback": "CLIProxyAPI 後備", - "cliproxyapiEnableFallback": "啟用 CLIProxyAPI 回退", + "memorySkillsSkillsmpMarketplace": "SkillsMP市場", + "memorySkillsFailedToSave": "保存失敗", + "memorySkillsApiKey": "API Key", + "memorySkillsActiveSkillsProvider": "主動Skills提供者", + "cliproxyapiFallback": "CLIProxyAPI後備", + "cliproxyapiEnableFallback": "啟用CLIProxyAPI回退", "cliproxyapiUrl": "CLIProxyAPI URL", - "cliproxyapiStatus": "CLIProxyAPI 狀態", + "cliproxyapiStatus": "CLIProxyAPI狀態", "cliproxyapiNotDetected": "未檢測到", - "cliproxyapiImportAuthTitle": "從 CLIProxyAPI 匯入帳戶", - "cliproxyapiImportAuthDesc": "將 CLIProxyAPI 已儲存在 ~/.cli-proxy-api/ 中的 OAuth 帳戶匯入為 OmniRoute 連線,這樣您就不必再次登入每個帳戶。支援的帳戶類型(Gemini、Codex、Claude、Antigravity、Qwen、Kimi)會被匯入;其他則會跳過。", - "cliproxyapiImportAuthButton": "匯入帳戶", + "cliproxyapiImportAuthTitle": "從CLIProxyAPI導入賬戶", + "cliproxyapiImportAuthDesc": "導入CLIProxyAPI已保存在 ~/.cli-proxy-api/ 中的OAuth賬戶作為OmniRoute連接,無需重新登入。支援的賬戶類型(Gemini、Codex、Claude、Antigravity、Qwen、Kimi)將被導入,其他類型跳過。", + "cliproxyapiImportAuthButton": "導入帳戶", "payloadRulesTitle": "負載規則", - "payloadRulesDesc": "按模型與協議設定請求 payload 的變更。修改會持久化到設定中,並在儲存後立即熱載入到執行時。", + "payloadRulesDesc": "按模型與協議設定請求payload的變更。修改會持久化到設定中,並在保存後立即熱載入到運行時。", "payloadRuleDefaultTitle": "default", - "payloadRuleDefaultDesc": "僅在外發 payload 缺少目標路徑時應用引數。", + "payloadRuleDefaultDesc": "僅在外發payload缺少目標路徑時應用參數。", "payloadRuleOverrideTitle": "override", - "payloadRuleOverrideDesc": "強制將值寫入 payload,替換該路徑上已存在的任何內容。", + "payloadRuleOverrideDesc": "強制將值寫入payload,替換該路徑上已存在的任何內容。", "payloadRuleFilterTitle": "filter", - "payloadRuleFilterDesc": "在向上游發起請求前,從 payload 中移除被遮蔽的引數。", + "payloadRuleFilterDesc": "在向上游發起請求前,從payload中移除被屏蔽的參數。", "payloadRuleDefaultRawTitle": "defaultRaw", - "payloadRuleDefaultRawDesc": "與 default 類似,但會先嚐試將字串值解析為 JSON。儲存時也接受舊的輸入別名 default-raw。", + "payloadRuleDefaultRawDesc": "與default類似,但會先嚐試將字串值解析為JSON。保存時也接受舊的輸入別名default-raw。", "payloadEditorTitle": "編輯器", - "payloadEditorDesc": "請使用執行時的 schema 形態:default、override、filter、defaultRaw。API 也接受舊的輸入鍵名 default-raw。", + "payloadEditorDesc": "請使用運行時的schema形態:default、override、filter、defaultRaw。API也接受舊的輸入鍵名default-raw。", "payloadEditorReady": "就緒", - "payloadResetInfo": "編輯器已重置為中性模板,儲存後生效。", - "payloadSaveSuccess": "Payload 規則已儲存並熱載入。", - "payloadJsonParseError": "JSON 解析錯誤:{error}", - "payloadMustBeObject": "Payload 規則必須是 JSON 物件。", - "payloadInvalidJson": "無效的 JSON payload。", - "payloadValidJsonRequired": "儲存前 Payload 規則必須是合法 JSON。", - "savePayloadRules": "儲存 Payload 規則", + "payloadResetInfo": "編輯器已重置為中性模板,保存後生效。", + "payloadSaveSuccess": "Payload規則已保存並熱載入。", + "payloadJsonParseError": "JSON解析錯誤:{error}", + "payloadMustBeObject": "Payload規則必須是JSON物件。", + "payloadInvalidJson": "無效的JSON payload。", + "payloadValidJsonRequired": "保存前Payload規則必須是合法JSON。", + "savePayloadRules": "保存Payload規則", "requestLimitsTitle": "請求限制", - "requestLimitsDesc": "設定全域性請求限制與併發保護。", + "requestLimitsDesc": "設定全域請求限制與併發保護。", "maxRequestSizeLabel": "最大請求大小(MB)", - "maxRequestSizeDesc": "傳入 API 請求允許的最大大小。", + "maxRequestSizeDesc": "傳入API請求允許的最大大小。", "maxResponseSizeLabel": "最大回應大小(MB)", - "maxResponseSizeDesc": "傳出 API 回應允許的最大大小。", - "maxRequestTokensLabel": "最大請求 Token 數", - "maxRequestTokensDesc": "單次請求允許的總 Token 上限。", - "maxResponseTokensLabel": "最大回應 Token 數", - "maxResponseTokensDesc": "單次回應允許的總 Token 上限。", + "maxResponseSizeDesc": "傳出API回應允許的最大大小。", + "maxRequestTokensLabel": "最大請求Token數", + "maxRequestTokensDesc": "單次請求允許的總Token上限。", + "maxResponseTokensLabel": "最大回應Token數", + "maxResponseTokensDesc": "單次回應允許的總Token上限。", "modelCooldownsTitle": "處於冷卻狀態的模型", "modelCooldownsEmpty": "目前沒有模型處於冷卻狀態。", - "modelCooldownsDescription": "模型在故障後暫時隔離。冷卻期滿後會自動恢復。", - "modelCooldownsLoadFailed": "載入冷卻狀態失敗", - "modelCooldownReactivated": "模型已重新啟用:{model}", - "modelCooldownClearFailed": "清除冷卻失敗", - "modelCooldownsAllReactivated": "所有處於冷卻狀態的模型已重新啟用。", - "modelCooldownsClearFailed": "清除冷卻狀態失敗", - "modelCooldownsReactivateAll": "全部重新啟用", + "modelCooldownsDescription": "發生故障後模型被暫時隔離。冷卻時間到期後,它們會自動恢復。", + "modelCooldownsLoadFailed": "無法載入冷卻狀態", + "modelCooldownReactivated": "模型已重新激活:{model}", + "modelCooldownClearFailed": "無法清除冷卻狀態", + "modelCooldownsAllReactivated": "所有處於冷卻狀態的模型已重新激活。", + "modelCooldownsClearFailed": "無法清除冷卻狀態", + "modelCooldownsReactivateAll": "全部重新激活", "modelCooldownsReasonRemaining": "原因:{reason} • 剩餘:{remaining}", - "modelCooldownsReactivate": "重新啟用", + "modelCooldownsReactivate": "重新激活", "responsesStateTitle": "回應狀態", - "responsesStateDesc": "控制 OmniRoute 如何處理 previous_response_id。", - "responsesStateModeLabel": "previous_response_id 處理", + "responsesStateDesc": "控制OmniRoute如何處理previous_response_id。", + "responsesStateModeLabel": "previous_response_id處理", "responsesStateModeAuto": "自動", "responsesStateModeStrip": "剝離", "responsesStateModePreserve": "保留", - "responsesStateHint": "自動模式會剝離 previous_response_id,除非連線明確啟用 OpenAI 回應儲存。對於無狀態客戶端(如 VS Code 自定義端點),剝離模式最安全;上下文取決於客戶端傳送完整歷史記錄。", + "responsesStateHint": "自動模式會剝離previous_response_id,除非連接明確啟用OpenAI回應存儲。對於無狀態客戶端(如VS Code自定義端點),剝離模式最安全;上下文取決於客戶端發送完整歷史記錄。", "responsesStateSaveError": "更新回應狀態設定失敗", - "codexFastTierTitle": "Codex 快速層", - "codexFastTierDesc": "為 OpenAI Codex 請求全域性注入 service_tier=priority。", - "codexFastTierHint": "啟用後,OmniRoute 會將 service_tier=priority 新增到尚未指定層的連線的出站 Codex 請求中。優先順序需要 OpenAI Enterprise API 金鑰或 ChatGPT-auth Codex 路徑;其他金鑰類型將從 OpenAI 收到與層相關的錯誤。 Codex 提供程式頁面上的每個連線設定優先。", - "codexFastTierSaveError": "無法更新 Codex Fast Tier 設定", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", + "codexFastTierTitle": "Codex快速層", + "codexFastTierDesc": "為OpenAI Codex請求全域注入service_tier=priority。", + "codexFastTierHint": "啟用後,OmniRoute會將service_tier=priority新增到尚未指定層的連接的出站Codex請求中。優先級需要OpenAI Enterprise API Key或ChatGPT-auth Codex路徑;其他金鑰類型將從OpenAI收到與層相關的錯誤。Codex提供程式頁面上的每個連接設定優先。", + "codexFastTierSaveError": "無法更新Codex Fast Tier設定", + "codexAutoPingTitle": "Codex自動Ping", + "codexAutoPingDesc": "按連接選擇加入:在Codex工作階段窗口重置後立即發送一個微小請求,避免冷啟動。", + "codexAutoPingWarning": "每次Ping消耗少量Codex配額。預設關閉——僅為您實際依賴的連接啟用。", + "codexAutoPingSaveError": "更新Codex自動Ping設定失敗。", "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", "codexFastTierTierLabel": "服務層級", - "codexFastTierTierPriority": "優先順序", + "codexFastTierTierPriority": "優先級", "codexFastTierTierFlex": "彈性", "codexFastTierTierDefault": "預設", "codexFastTierModelsLabel": "快速層模型", - "codexFastTierModelsHint": "啟用快速層後,只有勾選的模型會附帶 service_tier。", + "codexFastTierModelsHint": "啟用快速層後,只有勾選的模型會附帶service_tier。", "codexFastTierModelCheckbox": "為 {model} 啟用快速層", - "claudeFastModeTitle": "克勞德快速模式", - "claudeFastModeDesc": "選擇選定的克勞德請求進入人擇快速模式(速度:“快速”)。", - "claudeFastModeHint": "Anthropic 並未正式支援 SDK 樣式客戶端的快速模式。啟用後,OmniRoute 會轉發 X-CPA-Force-Fast-Mode 標頭,以便配對的 CLIProxyAPI 構建可以選擇欺騙入口點。只有列出的 Opus 模型才會受到 Anthropic 客戶端檢查的控制。訂閱層、最大計劃和快速模式信用餘額仍然在伺服器端強制執行 - 即使開啟切換,Anthropic 也可能返回 out_of_credits。", + "claudeFastModeTitle": "Claude快速模式", + "claudeFastModeDesc": "選擇選定的Claude請求進入Anthropic快速模式(速度:“快速”)。", + "claudeFastModeHint": "Anthropic並未正式支援SDK樣式客戶端的快速模式。啟用後,OmniRoute會轉發X-CPA-Force-Fast-Mode標頭,以便配對的CLIProxyAPI構建可以選擇欺騙入口點。只有列出的Opus模型才會受到Anthropic客戶端檢查的控制。訂閱層、最大計劃和快速模式信用餘額仍然在伺服器端強制執行 - 即使打開切換,Anthropic也可能返回out_of_credits。", "claudeFastModeModelsLabel": "應用於模型 ({count})", "claudeFastModeModelCheckbox": "為 {model} 啟用快速模式", - "claudeFastModeSaveError": "無法更新克勞德快速模式設定", + "claudeFastModeSaveError": "無法更新Claude快速模式設定", "authz": { "cors": { "wildcard": { - "title": "CORS 對所有來源開放(CORS_ALLOW_ALL=true)", - "desc": "任何網站都可以從訪客的瀏覽器呼叫此伺服器的 API。請僅在受信任的網路上使用 — 在 ALLOWED_ORIGINS 中設定明確的來源,並在正式環境中停用 CORS_ALLOW_ALL。" + "title": "CORS已向所有源開放 (CORS_ALLOW_ALL=true)", + "desc": "任何網站都可以從訪問者的瀏覽器呼叫此伺服器的API。請僅在受信任的網路上使用—在生產環境中,請在ALLOWED_ORIGINS中設定明確的源並禁用CORS_ALLOW_ALL。" } }, "title": "授權清單", - "description": "5 級路由分類與即時繞過策略。讀取展示完整分類;變更操作需重新輸入管理密碼。", + "description": "5 級路由分類與實時繞過策略。讀取展示完整分類;變更操作需重新輸入管理密碼。", "loading": "正在載入清單…", "loadError": "載入授權清單失敗", "tier": { "LOCAL_ONLY": "僅本地", "ALWAYS_PROTECTED": "始終受保護", "MANAGEMENT": "管理", - "CLIENT_API": "客戶端 API", + "CLIENT_API": "客戶端API", "PUBLIC": "公開" }, "bypass": { "section": "管理範圍繞過", "kill_switch": { "label": "繞過總開關", - "desc": "總開關。關閉時,無論按字首的列表如何,任何 LOCAL_ONLY 字首都無法從非環回地址訪問。" + "desc": "總開關。關閉時,無論按前綴的列表如何,任何LOCAL_ONLY前綴都無法從非環回地址訪問。" }, "prefix": { - "label": "可繞過的字首", - "desc": "管理範圍的 API 金鑰(或儀表盤會話)可從非環回地址訪問的 LOCAL_ONLY 字首。", - "add": "新增字首", + "label": "可繞過的前綴", + "desc": "管理範圍的API Key(或看板工作階段)可從非環回地址訪問的LOCAL_ONLY前綴。", + "add": "新增前綴", "placeholder": "/api/mcp/v2/", - "empty": "未設定任何字首,繞過實際處於關閉狀態。" + "empty": "未設定任何前綴,繞過實際處於關閉狀態。" }, - "cli_tools_runtime_note": "可建立子程式的字首。編譯期已停用,無法設為可繞過。僅供檢視。" + "cli_tools_runtime_note": "可創建子行程的前綴。編譯期已禁用,無法設為可繞過。僅供查看。" }, "password": { "prompt": { @@ -7440,22 +7440,22 @@ "cancel": "取消", "submit": "應用" }, - "save": "儲存更改", + "save": "保存更改", "saved": "授權設定已更新", - "pending": "存在未儲存的更改", + "pending": "存在未保存的更改", "badge": { "bypassable": "可通過管理範圍繞過", "strict": "嚴格環回", "auth_required": "需要鑑權", "public": "公開", "always_protected": "始終受保護", - "spawn_capable": "可建立子程式" + "spawn_capable": "可創建子行程" }, "error": { "PASSWORD_REQUIRED": "需要輸入當前密碼才能應用這些更改。", "PASSWORD_MISMATCH": "當前密碼不正確。", - "INSUFFICIENT_SCOPE": "API 金鑰缺少 manage 範圍。", - "BYPASS_PREFIX_NOT_ALLOWED": "其中一個或多個字首指向可建立子程式的路由,無法被繞過。", + "INSUFFICIENT_SCOPE": "API Key缺少manage範圍。", + "BYPASS_PREFIX_NOT_ALLOWED": "其中一個或多個前綴指向可創建子行程的路由,無法被繞過。", "GENERIC": "更新授權設定失敗。" } }, @@ -7466,134 +7466,134 @@ "statusEnabled": "啟用", "statusDisabled": "殘疾人", "resilienceRequestQueueScope": "每個請求佇列", - "resilienceRequestQueueTrigger": "傳送到上游之前", + "resilienceRequestQueueTrigger": "發送到上游之前", "resilienceRequestQueueEffect": "對請求進行排隊、限制併發並間隔呼叫", - "resilienceRequestQueueDesc": "該層僅控制排隊和節奏。它不儲存冷卻時間或開啟斷路器。", - "resilienceAutoEnableApiKeyProvidersDesc": "預設情況下為活動 API 金鑰連線啟用佇列保護。", + "resilienceRequestQueueDesc": "該層僅控制排隊和節奏。它不存儲冷卻時間或打開斷路器。", + "resilienceAutoEnableApiKeyProvidersDesc": "預設情況下為活動API Key連接啟用佇列保護。", "resilienceMaxQueueWait": "最大佇列等待時間", - "resilienceConnectionCooldownScope": "單獨連線", - "resilienceConnectionCooldownTrigger": "當連線返回暫時性上游故障時", - "resilienceConnectionCooldownEffect": "暫時跳過該連線並增加重複失敗的退避時間", - "resilienceConnectionCooldownDesc": "基礎冷卻時間涵蓋短暫的連線故障。當啟用上游重試提示時,提供程式的顯式視窗將覆蓋本地冷卻時間。", + "resilienceConnectionCooldownScope": "單獨連接", + "resilienceConnectionCooldownTrigger": "當連接返回暫時性上游故障時", + "resilienceConnectionCooldownEffect": "暫時跳過該連接並增加重複失敗的退避時間", + "resilienceConnectionCooldownDesc": "基礎冷卻時間涵蓋短暫的連接故障。當啟用上游重試提示時,提供程式的顯式窗口將覆蓋本地冷卻時間。", "resilienceUseUpstreamRetryHintsDesc": "使用來自上游提供者的重試/重置值(如果可用)。", "resilienceUseUpstream429BreakerHints": "使用上游 429 提示進行斷路器冷卻", "resilienceUseUpstream429BreakerHintsShort": "使用上游 429 提示", - "resilienceUseUpstream429BreakerHintsDesc": "將 429 回應中的重試/配額耗盡訊號應用於斷路器冷卻持續時間。預設使用每個提供者的策略:直接雲提供者預設開啟;反向代理、自託管和 CLI 支援的提供者預設關閉。獨立於“使用上游重試提示”。", + "resilienceUseUpstream429BreakerHintsDesc": "將 429 回應中的重試/配額耗盡信號應用於斷路器冷卻持續時間。預設使用每個提供者的策略:直接雲提供者預設開啟;反向代理、自託管和CLI支援的提供者預設關閉。獨立於“使用上游重試提示”。", "resilienceProviderBreakerScope": "整個提供者", "resilienceProviderBreakerTrigger": "連接回退耗盡後最終傳輸/伺服器失敗", "resilienceProviderBreakerEffect": "暫時阻止該提供者,直到重置時間到期", - "resilienceProviderBreakerDesc": "即時斷路器狀態僅顯示在執行狀況頁面上。連線範圍的 429 速率限制保留在連線冷卻中,並且不會觸發提供者斷路器。", + "resilienceProviderBreakerDesc": "實時斷路器狀態僅顯示在運行狀況頁面上。連接範圍的 429 速率限制保留在連接冷卻中,並且不會觸發提供者斷路器。", "resilienceResetTime": "復位時間", "resilienceWaitForCooldownTitle": "等待冷卻", "resilienceWaitForCooldownScope": "當前客戶請求", - "resilienceWaitForCooldownTrigger": "當所有候選連線已經冷卻時", + "resilienceWaitForCooldownTrigger": "當所有候選連接已經冷卻時", "resilienceWaitForCooldownEffect": "等待伺服器並在第一個冷卻時間到期時重試", - "resilienceWaitForCooldownDesc": "這僅影響當前請求。它不儲存連線或提供者狀態。", + "resilienceWaitForCooldownDesc": "這僅影響當前請求。它不存儲連接或提供者狀態。", "resilienceEnableServerWait": "啟用伺服器端等待", - "resilienceEnableServerWaitDesc": "啟用後,OmniRoute 會等待第一次冷卻時間到期並自動重試。", + "resilienceEnableServerWaitDesc": "啟用後,OmniRoute會等待第一次冷卻時間到期並自動重試。", "resilienceMaxAttempts": "最大嘗試次數", "resilienceMaxWaitPerAttempt": "每次嘗試的最長等待時間", "resilienceComboCooldownWaitTitle": "配額共享組合冷卻等待", - "resilienceComboCooldownWaitDesc": "僅適用於配額共享組合:等待短暫的暫時冷卻後重新派發,而非立即回傳 429。絕不等待 quota_exhausted。", - "resilienceComboCooldownWaitToggleDesc": "僅限配額共享組合;絕不等待 quota_exhausted。", + "resilienceComboCooldownWaitDesc": "僅適用於配額共享組合:等待短暫的瞬態冷卻並重新分發,而不是立即返回 429。絕不等待quota_exhausted。", + "resilienceComboCooldownWaitToggleDesc": "僅適用於配額共享組合;絕不等待quota_exhausted。", "resilienceComboCooldownMaxWaitMs": "每次嘗試的最大等待時間", "resilienceComboCooldownBudgetMs": "總等待預算", - "resilienceQuotaShareConcurrencyTitle": "配額共享的每連線並行數", - "resilienceQuotaShareConcurrencyDesc": "僅適用於配額共享組合:當連線設定了最大並行上限時,將對該訂閱帳戶的並行請求序列化,避免超過上限。超額請求會在佇列中等待,而不會收到 429 錯誤。上限來自每個連線的「最大並行」欄位;此開關僅啟用或停用是否遵循該上限。", - "resilienceQuotaShareConcurrencyToggleDesc": "僅限配額共享組合;遵循各連線的最大並行上限。", - "resilienceProviderCooldownTitle": "提供者冷卻", + "resilienceQuotaShareConcurrencyTitle": "配額共享單連接併發", + "resilienceQuotaShareConcurrencyDesc": "僅適用於配額共享組合:當連接設定了Max Concurrent上限時,將對該訂閱帳戶的併發請求進行串行化,以使其永遠不會超過其上限。超出的請求將在佇列中等待,而不是收到 429。該上限來自每個連接的Max Concurrent欄位;此開關僅啟用或禁用對該上限的遵守。", + "resilienceQuotaShareConcurrencyToggleDesc": "僅適用於配額共享組合;遵守每個連接的Max Concurrent上限。", + "resilienceProviderCooldownTitle": "服務商冷卻", "resilienceProviderCooldownScope": "所有組合請求", - "resilienceProviderCooldownTrigger": "當提供者/連線失敗時", - "resilienceProviderCooldownEffect": "在重試前跳過失敗的提供者一段冷卻時間", - "resilienceProviderCooldownDesc": "防止後續請求重複嘗試同一組失敗的提供者。冷卻時間會隨著連續失敗次數呈指數級增長。", - "resilienceProviderCooldownEnabled": "啟用全域提供者冷卻", - "resilienceProviderCooldownEnabledDesc": "啟用後,失敗的提供者會在全域範圍內被追蹤並在冷卻期間內被跳過。", - "resilienceProviderCooldownMin": "最小冷卻", - "resilienceProviderCooldownMax": "最大冷卻", - "forcedFingerprintTitle": "{provider} 始終啟用 — OAuth 帳戶安全所必需;無法關閉。", + "resilienceProviderCooldownTrigger": "當服務商/連接失敗時", + "resilienceProviderCooldownEffect": "在重試前跳過失敗的服務商一段冷卻時間", + "resilienceProviderCooldownDesc": "防止後續請求再次訪問相同的失敗服務商。冷卻時間隨連續失敗次數呈指數級增長。", + "resilienceProviderCooldownEnabled": "啟用全域服務商冷卻", + "resilienceProviderCooldownEnabledDesc": "啟用後,將在全域範圍內跟蹤失敗的服務商,並在冷卻期間跳過它們。", + "resilienceProviderCooldownMin": "最小冷卻時間", + "resilienceProviderCooldownMax": "最大冷卻時間", + "forcedFingerprintTitle": "{provider} 始終啟用—OAuth賬戶安全所必需;無法關閉。", "forcedFingerprintBadge": "必需", - "sessionAffinityTitle": "Session 親和性", - "sessionAffinityDesc": "將同一對話保持在同一個帳號上達此秒數(適用於任何提供者)。設為 0 以停用。", - "sessionAffinityTtl": "親和性 TTL(秒)", + "sessionAffinityTitle": "工作階段親和性", + "sessionAffinityDesc": "對於任何服務商,將同一個對話保持在同一個帳戶上指定的秒數。0 表示禁用。", + "sessionAffinityTtl": "親和性TTL (秒)", "resetAwareQuotaCacheTitle": "重置感知配額快取", - "resetAwareQuotaCacheDesc": "僅快取重置感知排序的配額遙測。配額預檢仍然保護請求。 0/0 保持即時獲取。", - "resetAwareQuotaCacheTtl": "新鮮 TTL(秒)", + "resetAwareQuotaCacheDesc": "僅快取重置感知排序的配額遙測。配額預檢仍然保護請求。 0/0 保持實時獲取。", + "resetAwareQuotaCacheTtl": "新鮮TTL(秒)", "resetAwareQuotaCacheMaxStale": "最大陳舊時間(秒)", "qdrantCleanupSuccess": "好的:刪除 {count} 點(保留:{days} 天)", "qdrantCleanupFailed": "清理失敗", "qdrantCleanupError": "錯誤:{error}", - "vercelRelaySuccess": "Vercel Relay 部署成功", - "vercelRelayButton": "部署 Vercel Relay", - "vercelRelayModalTitle": "部署 Vercel Relay", - "vercelRelayWarning": "警告:需要 Vercel 部署權杖。此權杖僅用於建立無伺服器中繼,OmniRoute 不會儲存該權杖。", - "vercelRelayTokenLabel": "Vercel 訪問權杖", - "vercelRelayProjectNameLabel": "Vercel 專案名稱", - "vercelRelayFreeTierNote": "中繼是在 Vercel 免費層上部署的輕量級代理端點,用於繞過本地網路/區域限制。", + "vercelRelaySuccess": "Vercel Relay部署成功", + "vercelRelayButton": "部署Vercel Relay", + "vercelRelayModalTitle": "部署Vercel Relay", + "vercelRelayWarning": "警告:需要Vercel部署令牌。此令牌僅用於創建無伺服器中繼,OmniRoute不會存儲該令牌。", + "vercelRelayTokenLabel": "Vercel訪問令牌", + "vercelRelayProjectNameLabel": "Vercel項目名稱", + "vercelRelayFreeTierNote": "中繼是在Vercel免費層上部署的輕量級代理端點,用於繞過本地網路/區域限制。", "vercelRelayDeploying": "正在部署...", "vercelRelayDeploy": "部署", - "deployRelayButton": "部署 Relay", - "denoRelayButton": "部署 Deno 轉發站", - "denoRelayModalTitle": "部署 Deno Relay", - "denoRelayWarning": "警告:需要 Deno Deploy 組織 Token。此 Token 僅用於建立中繼應用程式,OmniRoute 絕不會儲存它。", - "denoRelayTokenLabel": "Deno Deploy 組織 Token", - "denoRelayOrgDomainLabel": "組織網域", - "denoRelayProjectNameLabel": "Deno 應用程式名稱", - "denoRelayFreeTierNote": "Deno Deploy v2 運行於全球邊緣網路。免費方案:每月 100 萬次請求與 100GiB 對外流量,無每次請求 CPU 限制,最多 20 個活躍應用程式與 50 個自訂網域。", - "denoRelayDeploying": "正在部署…", + "deployRelayButton": "部署中繼", + "denoRelayButton": "部署Deno中繼", + "denoRelayModalTitle": "部署Deno中繼", + "denoRelayWarning": "警告:需要Deno Deploy組織令牌。此令牌僅用於創建中繼應用,絕不會被OmniRoute存儲。", + "denoRelayTokenLabel": "Deno Deploy組織令牌", + "denoRelayOrgDomainLabel": "組織域名", + "denoRelayProjectNameLabel": "Deno應用名稱", + "denoRelayFreeTierNote": "Deno Deploy v2 運行在全球邊緣網路上。免費層:每月 100 萬次請求和 100GiB出站流量,無單次請求CPU限制,最多支援 20 個活動應用和 50 個自定義域名。", + "denoRelayDeploying": "正在部署...", "denoRelayDeploy": "部署", - "cloudflareRelaySuccess": "Cloudflare 轉發站部署成功", - "cloudflareRelayButton": "部署 Cloudflare 轉發站", - "cloudflareRelayModalTitle": "部署 Cloudflare Worker 轉發站", - "cloudflareRelayWarning": "部署一個 Cloudflare Worker,透過 Cloudflare 的邊緣網路代理 LLM 請求 — 將主機 IP 隱藏在動態 Cloudflare 位址之後。該 Worker 強制使用一次性驗證密鑰,因此公開的 workers.dev URL 無法被重複使用作為開放轉發站。", - "cloudflareRelayTokenHowto": "在「我的個人檔案」->「API Token」->「建立 Token」->「自訂 Token」->「Account / Workers Scripts / Edit」下方建立 API Token。", - "cloudflareRelayAccountIdLabel": "Cloudflare 帳戶 ID", - "cloudflareRelayAccountIdHint": "位於 Cloudflare 儀表板概覽頁面的右側。", - "cloudflareRelayApiTokenLabel": "Cloudflare API 令牌", - "cloudflareRelayApiTokenHint": "需要「Workers Scripts: Edit」權限。該令牌僅在部署時使用,且永不儲存。", - "cloudflareRelayProjectNameLabel": "Worker 名稱", - "cloudflareRelayFreeTierNote": "免費方案:每個 Cloudflare 帳戶每天 100,000 次請求。", - "cloudflareRelayDeploying": "正在部署…", + "cloudflareRelaySuccess": "Cloudflare Relay部署成功", + "cloudflareRelayButton": "部署Cloudflare Relay", + "cloudflareRelayModalTitle": "部署Cloudflare Worker Relay", + "cloudflareRelayWarning": "部署一個Cloudflare Worker,通過Cloudflare的邊緣網路代理LLM請求——將主機IP隱藏在動態Cloudflare地址後面。該Worker強制執行一次性身份驗證金鑰,因此公開的workers.dev URL無法被用作開放代理。", + "cloudflareRelayTokenHowto": "在“我的個人資料” -> “API令牌” -> “創建令牌” -> “自定義令牌” -> “帳戶 / Workers腳本 / 編輯”下創建API令牌。", + "cloudflareRelayAccountIdLabel": "Cloudflare帳戶ID", + "cloudflareRelayAccountIdHint": "位於Cloudflare控制面板概述頁面的右側。", + "cloudflareRelayApiTokenLabel": "Cloudflare API令牌", + "cloudflareRelayApiTokenHint": "需要“Workers腳本: 編輯”權限。該令牌僅在部署時使用,絕不會被存儲。", + "cloudflareRelayProjectNameLabel": "Worker名稱", + "cloudflareRelayFreeTierNote": "免費層:每個Cloudflare帳戶每天 100,000 次請求。", + "cloudflareRelayDeploying": "正在部署...", "cloudflareRelayDeploy": "部署", - "cloudflareRelayCredsRequired": "需要帳戶 ID 和 API 令牌", + "cloudflareRelayCredsRequired": "帳戶ID和API令牌是必填項", "cloudflareRelayDeployFailed": "部署失敗", "modelLockout": "模型鎖定", - "modelLockoutPageDescription": "設定哪些 HTTP 錯誤碼會觸發各模型鎖定,並控制冷卻行為。", + "modelLockoutPageDescription": "設定哪些HTTP錯誤代碼會觸發單模型鎖定,並控制冷卻行為。", "modelLockoutLoadFailed": "載入模型鎖定設定失敗", - "modelLockoutSaveFailed": "儲存模型鎖定設定失敗", + "modelLockoutSaveFailed": "保存模型鎖定設定失敗", "modelLockoutLoading": "正在載入模型鎖定設定...", - "modelLockoutBaseRangeError": "基礎冷卻時間必須介於 5,000 毫秒至 600,000 毫秒之間", - "modelLockoutMaxRangeError": "最大冷卻時間必須介於 5,000 毫秒至 3,600,000 毫秒之間", + "modelLockoutBaseRangeError": "基礎冷卻時間必須介於 5,000 毫秒和 600,000 毫秒之間", + "modelLockoutMaxRangeError": "最大冷卻時間必須介於 5,000 毫秒和 3,600,000 毫秒之間", "modelLockoutOrderError": "最大冷卻時間必須大於或等於基礎冷卻時間", - "modelLockoutStepsRangeError": "最大退避步驟必須介於 0 至 20 之間", + "modelLockoutStepsRangeError": "最大退避步驟數必須介於 0 和 20 之間", "removeErrorCode": "移除 {code}", "addErrorCode": "新增錯誤代碼...", "suggestions": "建議:", - "modelLockoutMaxCooldownHint": "≥ 基礎冷卻時間 — 3,600,000 毫秒", + "modelLockoutMaxCooldownHint": "≥ 基礎冷卻時間— 3,600,000 毫秒", "modelLockoutEnabled": "啟用模型鎖定", - "modelLockoutEnabledDescription": "啟用後,因設定的錯誤碼而失敗的模型會被暫時鎖定,以防止重試迴圈。", - "modelLockoutErrorCodes": "錯誤碼", - "modelLockoutErrorCodesDescription": "觸發模型鎖定的 HTTP 狀態碼。輸入代碼並點擊新增,或從建議中選取。", - "modelLockoutBaseCooldown": "基本冷卻(毫秒)", - "modelLockoutBaseCooldownDescription": "模型可重試前的初始冷卻時間(毫秒)。", - "modelLockoutMaxCooldown": "最大冷卻(毫秒)", - "modelLockoutMaxCooldownDescription": "最大冷卻時間(毫秒)。防止過長的鎖定。", - "modelLockoutExponentialBackoff": "指數回退", - "modelLockoutExponentialBackoffDescription": "啟用後,每次連續失敗都會以指數方式增加冷卻時間。", + "modelLockoutEnabledDescription": "啟用後,因設定的錯誤代碼而失敗的模型將被臨時鎖定,以防止重試循環。", + "modelLockoutErrorCodes": "錯誤代碼", + "modelLockoutErrorCodesDescription": "觸發模型鎖定的HTTP狀態碼。輸入代碼並點擊“新增”,或從建議中選擇。", + "modelLockoutBaseCooldown": "基礎冷卻時間 (毫秒)", + "modelLockoutBaseCooldownDescription": "允許重試模型之前的初始冷卻時間(以毫秒為單位)。", + "modelLockoutMaxCooldown": "最大冷卻時間 (毫秒)", + "modelLockoutMaxCooldownDescription": "最大冷卻時間(以毫秒為單位)。防止過長的鎖定時間。", + "modelLockoutExponentialBackoff": "指數退避", + "modelLockoutExponentialBackoffDescription": "啟用後,每次連續失敗會使冷卻時間呈指數增長。", "modelLockoutMaxBackoffSteps": "最大退避步數", - "modelLockoutMaxBackoffStepsDescription": "冷卻時間停止增長前的最大回退步數。在大多數配置中,最大冷卻上限會先達到,這使得此設定成為提高最大冷卻時的安全上限。", - "disableSessionStickiness": "停用工作階段黏性", - "disableSessionStickinessDesc": "輪詢和隨機組合在每個請求輪換到不同的連線,而不是根據第一則訊息的雜湊將整個對話固定到一個連線。關閉以保留多輪聊天的提示快取命中。各組合的覆寫設定優先。", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "credentialRedaction": "憑證編輯", - "credentialRedactionDesc": "從傳送給提供者的上下文和回應中編輯 API 金鑰、令牌和機密。", - "enableCredentialRedaction": "啟用憑證遮蔽", - "enableCredentialRedactionDesc": "從訊息、工具呼叫和回應中清除 API 金鑰、令牌、私鑰和 JWT。", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled" + "modelLockoutMaxBackoffStepsDescription": "冷卻時間停止增長前的最大退避步數。在大多數設定中,會先達到最大冷卻時間上限,因此這可以作為提高最大冷卻時間時的安全上限。", + "disableSessionStickiness": "禁用工作階段粘性", + "disableSessionStickinessDesc": "輪詢和隨機組合在每次請求時都會輪換到不同的連接,而不是通過首條消息的哈希將整個對話固定在單個連接上。保持關閉以保留多輪對話的提示詞快取命中率。每個組合的覆蓋設定優先。", + "promptCacheAffinity": "提示快取本地化路由", + "promptCacheAffinityDesc": "在保持健康檢查和配額故障轉移的前提下,優先將匹配prompt-cache鍵的請求路由到同一提供者賬戶。", + "credentialRedaction": "憑據脫敏", + "credentialRedactionDesc": "對發送給提供者的上下文以及回應中的API Key、令牌和機密資訊進行脫敏。", + "enableCredentialRedaction": "啟用憑據脫敏", + "enableCredentialRedactionDesc": "清除消息、工具呼叫和回應中的API Key、令牌、私鑰和JWT。", + "pricingAutoSyncDisabled": "自動同步已禁用", + "pricingAutoSyncEnabled": "自動同步已啟用" }, "contextRtk": { - "title": "RTK 引擎", + "title": "RTK引擎", "description": "面向工具輸出、終端日誌和構建結果的命令感知壓縮。", "enabled": "已啟用", "intensity": "強度", @@ -7601,168 +7601,168 @@ "intensityStandard": "標準", "intensityAggressive": "激進", "toolResults": "工具結果", - "assistantMessages": "助手訊息", - "codeBlocks": "程式碼塊", + "assistantMessages": "助手消息", + "codeBlocks": "代碼塊", "filterCatalog": "過濾器目錄", "filterCatalogDesc": "可用的輸出過濾器(按類別)", "guidedConfig": "設定", - "guidedConfigDesc": "調整 RTK 過濾終端輸出的方式", + "guidedConfigDesc": "調整RTK過濾終端輸出的方式", "maxLines": "最大行數", - "maxChars": "最大字元數", + "maxChars": "最大字符數", "deduplicateThreshold": "去重閾值", "customFilters": "自定義過濾器", "detectedType": "檢測類型", "confidence": "信心", "beforeAfter": "之前/之後", - "trustProjectFilters": "信任專案過濾器", + "trustProjectFilters": "信任項目過濾器", "rawOutputRetention": "原始輸出保留", "rawOutputNever": "從不", "rawOutputFailures": "失敗時", "rawOutputAlways": "始終", "rawOutputMaxBytes": "原始輸出最大位元組數", "filterTesting": "過濾測試", - "pasteOutput": "貼上工具輸出以測試過濾...", + "pasteOutput": "粘貼工具輸出以測試過濾...", "presetHigh": "好鬥的", "presetLow": "光", - "presetMaxChars": "最大輸出字元數", + "presetMaxChars": "最大輸出字符數", "presetMaxLines": "最大輸出線數", "presetMedium": "標準型", - "run": "執行", + "run": "運行", "result": "結果", - "previewEmpty": "執行示例以預覽 RTK 輸出。", + "previewEmpty": "運行示例以預覽RTK輸出。", "detected": "已檢測", - "masterSwitchOffAlert": "Token Saver 總開關已關閉 — 在壓縮設定中開啟它之前,這些設定不會影響請求。", - "tokensFiltered": "已過濾 token", + "masterSwitchOffAlert": "Token Saver總開關已關閉—在壓縮設定中打開它之前,這些設定不會影響請求。", + "tokensFiltered": "已過濾token", "filtersActive": "活動過濾器", "requests": "請求數", "avgSavings": "平均節省", "simpleMode": "簡單", - "advancedMode": "高階", + "advancedMode": "高級", "searchFilters": "搜尋過濾器...", "tooltipDedup": "刪除重複行的積極程度。", - "tooltipMaxChars": "每個輸出塊的最大字元數。", + "tooltipMaxChars": "每個輸出塊的最大字符數。", "tooltipMaxLines": "命令輸出中保留的最大行數。多餘的部分被截斷。", - "learnDiscoverTitle": "學習與探索篩選器", - "learnDiscoverDesc": "挖掘您捕捉的命令輸出(必須啟用原始輸出保留)以建議新的 RTK 篩選器。僅供建議 — 由您審閱並儲存。", - "discoverHeading": "發現重複噪音", + "learnDiscoverTitle": "學習與發現過濾器", + "learnDiscoverDesc": "挖掘捕獲的命令輸出(必須開啟“原始輸出保留”)以建議新的RTK過濾器。僅作為建議——由您進行審核並保存。", + "discoverHeading": "發現重複的噪音", "discoverButton": "掃描樣本", "discoverScanning": "正在掃描…", - "discoverEmpty": "未發現重複雜訊。請先啟用原始輸出保留功能並執行一些指令。", + "discoverEmpty": "未發現重複的噪音。請先啟用“原始輸出保留”並運行一些命令。", "discoverSamples": "已掃描 {count} 個樣本", - "discoverHits": "跨樣本 {hits} 次命中", - "learnHeading": "為命令學習篩選器", - "learnCommandPlaceholder": "例如:npm install", - "learnButton": "建議篩選器", - "learnEmpty": "尚無建議。請輸入您已執行的指令並掃描。", - "learnSamplesUsed": "從 {count} 個匹配範例中學習", - "suggestionError": "無法載入建議。請檢查管理員驗證後重試。", - "tomlImportTitle": "匯入 RTK TOML 篩選器", - "tomlImportDesc": "驗證 RTK TOML 結構描述 v1 篩選器並全域安裝。安裝會寫入 DATA_DIR/rtk/filters.toml;僅在明確確認後才會取代現有檔案。", - "tomlChooseFile": "選擇 TOML 檔案", - "tomlImportPlaceholder": "在此貼上 RTK filters.toml 內容...", + "discoverHits": "跨樣本出現 {hits}×", + "learnHeading": "學習命令的過濾器", + "learnCommandPlaceholder": "例如npm install", + "learnButton": "建議過濾器", + "learnEmpty": "暫無建議。請輸入您運行過的命令並進行掃描。", + "learnSamplesUsed": "從 {count} 個匹配的樣本中學習", + "suggestionError": "無法載入建議。請檢查管理授權並重試。", + "tomlImportTitle": "導入RTK TOML過濾器", + "tomlImportDesc": "驗證RTK TOML schema v1 過濾器並全域安裝。安裝會寫入DATA_DIR/rtk/filters.toml;只有在明確確認後才會替換現有檔案。", + "tomlChooseFile": "選擇TOML檔案", + "tomlImportPlaceholder": "在此處粘貼RTK filters.toml內容...", "tomlValidate": "驗證", - "tomlValidating": "驗證中…", + "tomlValidating": "正在驗證…", "tomlInstall": "全域安裝", - "tomlInstalling": "安裝中…", - "tomlConfirmOverwrite": "取代現有的全域檔案並建立備份", + "tomlInstalling": "正在安裝…", + "tomlConfirmOverwrite": "替換現有的全域檔案並創建備份", "tomlValidationPassed": "驗證通過", "tomlValidationFailed": "驗證完成,但內聯測試失敗", - "tomlValidationSummary": "{filters} 個篩選器,{tests} 個內聯測試", - "tomlInstalled": "已安裝於 {path}", - "tomlBackupCreated": "已建立先前檔案的備份。", + "tomlValidationSummary": "{filters} 個過濾器,{tests} 個內聯測試", + "tomlInstalled": "已安裝在 {path}", + "tomlBackupCreated": "已創建上一個檔案的備份。", "tomlTestCount": "{count} 個測試", - "tomlTestPassed": "通過", - "tomlTestFailed": "失敗", - "tomlImportError": "無法處理 RTK TOML 檔案。", - "tomlFileReadError": "無法讀取選取的 TOML 檔案。" + "tomlTestPassed": "已通過", + "tomlTestFailed": "已失敗", + "tomlImportError": "無法處理RTK TOML檔案。", + "tomlFileReadError": "無法讀取選定的TOML檔案。" }, "compressionEngineConfig": { - "loading": "載入中…", - "loadFailed": "無法載入引擎資訊。", - "engineNotFound": "找不到引擎「{engine}」。", - "saveFailed": "設定儲存失敗。", + "loading": "正在載入…", + "loadFailed": "載入引擎資訊失敗。", + "engineNotFound": "未找到引擎 \"{engine}\"。", + "saveFailed": "保存設定失敗。", "previewFailed": "預覽失敗。", - "panelPointerPrefix": "在「壓縮設定」中開啟或關閉此圖層並設定其等級", + "panelPointerPrefix": "開啟或關閉此層並設定其級別,請前往", "compressionSettings": "壓縮設定", - "panelPointerSuffix": "。此頁面僅編輯其詳細設定。", + "panelPointerSuffix": "。此頁面僅用於編輯其詳細設定。", "configuration": "設定", - "noAdditionalConfiguration": "無其他設定。", - "save": "儲存", - "saving": "儲存中…", - "globalSettingsOnly": "此圖層由全域設定管理;此處尚無個別引擎設定可儲存。", + "noAdditionalConfiguration": "無額外設定。", + "save": "保存", + "saving": "正在保存…", + "globalSettingsOnly": "此層由全域設定設定;此處尚無可保存的按引擎覆蓋設定。", "preview": "預覽", "previewInput": "預覽輸入", - "processing": "處理中…", - "previewSample": "敏捷的棕色狐狸跳過懶惰的狗。這是一則用於預覽壓縮的範例訊息。它包含足夠的文字來顯示有意義的 Token 節省效果。", - "originalTokens": "原始 Token", - "compressedTokens": "已壓縮 Token", - "savings": "節省", + "processing": "正在處理…", + "previewSample": "敏捷的棕色狐狸跳過了懶狗。這是一條用於預覽壓縮效果的示例消息。它包含足夠的文本以展示顯著的Token節省效果。", + "originalTokens": "原始Token", + "compressedTokens": "壓縮後Token", + "savings": "節省量", "original": "原始", - "compressed": "已壓縮", + "compressed": "壓縮後", "diff": "差異", - "last7Days": "過去 7 天", - "noDataYet": "尚無資料", - "runs": "執行次數", - "tokensSaved": "已節省 Token", - "averageSavings": "平均節省", + "last7Days": "最近 7 天", + "noDataYet": "暫無資料", + "runs": "運行次數", + "tokensSaved": "已節省Token", + "averageSavings": "平均節省量", "diffLabels": { "change": "變更", - "added": "新增", + "added": "已新增", "removed": "已移除", "modified": "已修改" }, "engines": { "headroom": { "name": "Headroom SmartCrusher", - "description": "同質 JSON 陣列的無損表格壓縮,具備明確的行數標記。" + "description": "帶有顯式行數標記的同構JSON陣列無損表格化壓縮。" }, "session-dedup": { - "name": "Session Dedup", - "description": "跨輪次的重複區塊去重,具備可復原的內容標記。" + "name": "工作階段去重", + "description": "帶有可恢復內容標記的跨輪次塊去重。" }, "ccr": { "name": "CCR", - "description": "針對重複內容區塊的內容定址檢索標記。" + "description": "針對重複上下文塊的內容尋址檢索標記。" }, "llmlingua": { - "name": "LLMLingua-2(語意修剪)", - "description": "基於 ONNX 的語意 Token 分類。僅壓縮散文;程式碼區塊與保留結構不受影響。在模型或工作者錯誤時會以開放失敗模式處理。" + "name": "LLMLingua-2 (語意剪枝)", + "description": "基於ONNX的語意Token分類。僅壓縮自然語言文本;代碼塊和保留結構受保護。模型或Worker發生錯誤時自動放行。" }, "lite": { - "name": "精簡", - "description": "快速空白字元縮減、工具結果與圖片 URL 縮減。" + "name": "輕量", + "description": "快速縮減空白字符、工具結果和圖片URL。" }, "aggressive": { - "name": "積極", - "description": "摘要、工具結果壓縮與漸進式老化。" + "name": "激進", + "description": "摘要生成、工具結果壓縮和漸進式老化。" }, "ultra": { "name": "極致", - "description": "啟發式 Token 修剪,具備選用的本地 SLM 降級回退。" + "description": "啟發式Token剪枝,支援可選的本地SLM回退。" } }, "fields": { "minBlockChars": { - "label": "最小區塊字元數", - "description": "字尾區塊做為去重候選的最小字元數。" + "label": "最小塊字符數", + "description": "後綴塊成為去重候選物件的最小字符數。" }, "fuzzy": { "label": "模糊近似重複去重", - "description": "選擇將與較早訊息至少有約 85% 相似度的完整訊息,替換為可復原的 CCR 標記。" + "description": "選擇將與較早消息相似度至少約為 85% 的整條消息替換為可恢復的CCR標記。" }, "minChars": { - "label": "最小區塊字元數", - "description": "區塊做為 CCR 候選的最小字元數。" + "label": "最小塊字符數", + "description": "塊成為CCR候選物件的最小字符數。" }, "retrievalRampFactor": { - "label": "檢索斜坡因子 (H8)", - "description": "控制頻繁檢索的區塊抵抗壓縮的強度。每次先前的檢索會線性提高有效最小區塊大小;設為 1 則停用此機制。" + "label": "檢索爬升因子 (H8)", + "description": "控制頻繁檢索的塊抵抗壓縮的強度。每次先前的檢索都會線性提高有效最小塊大小;1 禁用爬升。" }, "model": { "label": "模型" }, "minTokens": { - "label": "最小 Token 數(下限)" + "label": "最小Token數 (下限)" }, "compressionRate": { "label": "壓縮率" @@ -7771,51 +7771,51 @@ "label": "模型路徑" }, "minRows": { - "label": "最小壓縮行數", - "description": "觸發表格壓縮所需的同質 JSON 陣列最小行數。預設值:8。" + "label": "壓縮所需的最小行數", + "description": "觸發表格壓縮所需的同構JSON陣列的最小行數。預設值: 8。" }, "preserveSystemPrompt": { "label": "保留系統提示詞" }, "summarizerEnabled": { - "label": "啟用摘要器" + "label": "啟用摘要生成器" }, "maxTokensPerMessage": { - "label": "每則訊息的最大 Token 數" + "label": "每條消息的最大Token數" }, "minSavingsThreshold": { - "label": "最小節省門檻" + "label": "最小節省閾值" }, "minScoreThreshold": { - "label": "最小分數門檻" + "label": "最低分數閾值" }, "slmFallbackToAggressive": { - "label": "降級回退至積極模式" + "label": "回退到激進模式" }, "intensity": { "label": "強度" }, "minMessageLength": { - "label": "最小訊息長度" + "label": "最小消息長度" } }, "engineFields": { "llmlingua": { "compressionRate": { - "label": "壓縮率(保留比例)" + "label": "壓縮率 (保留比例)" }, "modelPath": { - "label": "模型路徑(離線覆寫)" + "label": "模型路徑 (離線覆蓋)" } } }, "options": { "model": { - "tinybert": "TinyBERT(57 MB,快速 — 預設)", - "bert-base": "BERT-base(710 MB,準確度較高)" + "tinybert": "TinyBERT (57 MB, 快速—預設)", + "bert-base": "BERT-base (710 MB, 更高準確率)" }, "intensity": { - "lite": "精簡", + "lite": "輕量", "full": "完整", "ultra": "極致" } @@ -7824,7 +7824,7 @@ "contextCombos": { "title": "壓縮組合", "description": "定義不同路由場景中引擎的組合方式。", - "createCombo": "建立壓縮組合", + "createCombo": "創建壓縮組合", "editCombo": "編輯", "deleteCombo": "刪除", "deleteConfirm": "刪除此壓縮組合?", @@ -7839,275 +7839,275 @@ "noAssignments": "沒有可用的路由組合", "default": "預設", "setAsDefault": "設為預設", - "save": "儲存", + "save": "保存", "cancel": "取消", "enabled": "已啟用", - "loading": "載入中…", + "loading": "正在載入…", "hubTitle": "壓縮中心", - "hubDescription": "選擇哪個壓縮設定檔全域執行。", + "hubDescription": "選擇全域運行的壓縮設定檔。", "hideExplanation": "隱藏說明", - "howItWorks": "運作方式", - "saveSettingsFailed": "設定儲存失敗。", - "explanationIntro": "壓縮透過在發送給提供者之前重寫歷史記錄來減少 Token 和成本,同時保留語意。", - "explanationActiveProfile": "使用中的設定檔:選擇哪個壓縮設定檔全域執行 — 面板衍生的「預設」或您已儲存的命名組合。", - "explanationDefault": "預設(來自面板):衍生自主開關和您在「壓縮設定」中設定的各引擎切換。", - "explanationNamedCombos": "命名組合:您在命名組合編輯器中建立的已儲存管道。選取其中一個即可使其成為每個請求的使用中設定檔。", - "explanationPreview": "預覽:顯示使用中設定檔依序執行哪些引擎。", - "activeProfile": "使用中的設定檔", - "activeProfileDescription": "選擇哪個壓縮設定檔全域執行 — 面板衍生的「預設」或已儲存的命名組合。", + "howItWorks": "工作原理", + "saveSettingsFailed": "保存設定失敗。", + "explanationIntro": "壓縮通過在將歷史記錄發送給提供者之前對其進行重寫來減少 Token和成本,同時保留其語意。", + "explanationActiveProfile": "活動設定檔:選擇全域運行的壓縮設定檔—面板派生的預設設定或您保存的命名組合之一。", + "explanationDefault": "預設(來自面板):派生自您在“壓縮設定”中設定的總開關和各引擎開關。", + "explanationNamedCombos": "命名組合:您在命名組合編輯器中構建的已保存流水線。選擇其中一個會將其設為每個請求的活動設定檔。", + "explanationPreview": "預覽:按順序顯示活動設定檔運行的引擎。", + "activeProfile": "活動設定檔", + "activeProfileDescription": "選擇全域運行的壓縮設定檔—面板派生的預設設定或已保存的命名組合。", "defaultFromPanel": "預設(來自面板)", - "runs": "執行次數:", - "defaultConfiguredPrefix": "預設 — 於下列位置設定:", + "runs": "運行:", + "defaultConfiguredPrefix": "預設—設定於", "compressionSettings": "壓縮設定", - "providerDelegated": "提供者委託的壓縮", - "contextEditingClaude": "上下文編輯(Claude)", - "contextEditingDescription": "讓提供者清除伺服器端舊的工具使用區塊,無需重寫訊息。", + "providerDelegated": "提供者委託壓縮", + "contextEditingClaude": "上下文編輯 (Claude)", + "contextEditingDescription": "允許提供者在服務端清除舊的工具使用塊,而無需重寫消息。", "contextEditingAria": "上下文編輯", - "contextEditingNote": "目前僅適用於 Claude(Anthropic)。這是一種委託模式:提供者會在伺服器端清除舊的工具使用區塊 — 我們不會重寫訊息。不影響其他提供者。", + "contextEditingNote": "目前僅適用於Claude (Anthropic)。這是一種委託模式:提供者在服務端清除舊的工具使用塊—我們不會重寫消息。這不會影響其他提供者。", "namedCombos": "命名組合", - "namedCombosDescription": "儲存不同的管道並將其指派給特定的路由組合。", + "namedCombosDescription": "保存不同的流水線並將其分配給特定的路由組合。", "comboNamePlaceholder": "組合名稱", - "descriptionPlaceholder": "說明", - "nameRequired": "請在儲存前輸入組合名稱。", - "pipelineRequired": "請在儲存前新增至少一個管道步驟。", - "saveComboFailed": "組合儲存失敗(HTTP {status})。", - "deleteNamedConfirm": "刪除組合「{name}」?", - "intensityLite": "精簡", + "descriptionPlaceholder": "描述", + "nameRequired": "保存前請輸入組合名稱。", + "pipelineRequired": "保存前請至少新增一個流水線步驟。", + "saveComboFailed": "保存組合失敗 (HTTP {status})。", + "deleteNamedConfirm": "刪除組合“{name}”?", + "intensityLite": "輕量", "intensityFull": "完整", "intensityUltra": "極致", - "active": "啟用", + "active": "活動", "languagePacksList": "語言包:{packs}", - "dragToReorder": "拖曳以重新排序步驟", + "dragToReorder": "拖動以重新排序步驟", "engine": "引擎", "intensity": "強度" }, "compressionStudio": { - "noRun": "無可用的壓縮執行記錄。", - "liveDataHint": "即時資料會透過 WebSocket 壓縮通道送達。", - "cockpitView": "駕駛艙檢視", + "noRun": "沒有可用的壓縮運行記錄。", + "liveDataHint": "實時資料通過WebSocket壓縮通道傳輸。", + "cockpitView": "駕駛艙視圖", "canvas": "畫布", "waterfall": "瀑布圖", - "replayDone": "重播完成", - "pauseReplay": "暫停重播", - "playReplay": "播放重播", + "replayDone": "回放完成", + "pauseReplay": "暫停回放", + "playReplay": "播放回放", "pause": "暫停", - "replay": "重播", - "resetReplay": "重設重播", + "replay": "回放", + "resetReplay": "重置回放", "stepProgress": "步驟 {current}/{total}", - "inlineView": "行內", - "splitComingSoon": "分割檢視(即將推出)", - "inputPlaceholder": "貼上提示詞、工具輸出或上下文…", - "activeCombined": "在組合流程中啟用", - "requiresOnnx": "需要 ONNX 模型", - "verifyFidelity": "驗證保真度(拒絕任何破壞內容的圖層)", - "fuzzyDedup": "模糊去重(近似重複 → CCR)", - "protectSensitive": "保護敏感內容(風險閘道)", - "quantumLock": "QuantumLock(穩定快取前綴)", - "saliencyHeatmap": "顯著性熱圖", - "running": "執行中…", - "run": "執行", - "laneRejected": "已拒絕:{reason}", + "inlineView": "內聯", + "splitComingSoon": "分屏視圖 (即將推出)", + "inputPlaceholder": "粘貼提示詞、工具輸出或上下文…", + "activeCombined": "在組合流程中處於活動狀態", + "requiresOnnx": "需要ONNX模型", + "verifyFidelity": "驗證保真度 (拒絕任何損壞內容的層)", + "fuzzyDedup": "模糊去重 (近似重複 → CCR)", + "protectSensitive": "保護敏感內容 (風險門控)", + "quantumLock": "QuantumLock (穩定快取前綴)", + "saliencyHeatmap": "顯著性熱力圖", + "running": "運行中…", + "run": "運行", + "laneRejected": "已拒絕: {reason}", "error": "錯誤", "combinedFlow": "組合流程", - "eachLayer": "各圖層分開", + "eachLayer": "單獨各層", "diff": "差異", "combined": "組合", "skipped": "跳過", "input": "輸入", "output": "輸出", - "tokenCount": "{count, number} 個 Token", + "tokenCount": "{count, number} 個token", "tokenShort": "tok", "provider": "提供者", - "judgeModel": "評判模型", - "judgeModelPlaceholder": "例如 claude-haiku", + "judgeModel": "裁判模型", + "judgeModelPlaceholder": "例如claude-haiku", "maxCostUsd": "美元上限", - "enterJudgeModel": "輸入評判模型", - "verifying": "驗證中…", - "verifyAll": "全部驗證", + "enterJudgeModel": "輸入裁判模型", + "verifying": "正在驗證…", + "verifyAll": "驗證全部", "spent": "已花費 ${spent} / ${cap}", "capReached": "已達上限", - "loadAb": "載入 A/B", + "loadAb": "載入A/B", "engine": "引擎", "savings": "節省", - "retention": "保留", - "outputTokensShort": "輸出 Token", + "retention": "保留率", + "outputTokensShort": "輸出Token", "fidelity": "保真度", "playTab": "播放", - "compareTab": "比較", - "encoderComparison": "編碼器 A/B — {count} 個陣列", - "encoderWinner": "勝出:{winner}", + "compareTab": "對比", + "encoderComparison": "編碼器A/B— {count} 個陣列", + "encoderWinner": "勝出者:{winner}", "encoder": "編碼器", "bytes": "位元組", - "tokensCl100k": "Token(cl100k)" + "tokensCl100k": "Token (cl100k)" }, "omniglyph": { "preview": "預覽", - "description": "將內容壓縮為圖片格式。將系統提示詞、工具說明文件和密集的歷史記錄渲染為精簡的 PNG 頁面,讓 Claude Fable 5 以圖片而非文字方式讀取。圖片 token 按尺寸而非字元計費,因此轉換後的區塊成本約降低 10 倍。僅限直接 Anthropic 路由。", + "description": "上下文轉圖像壓縮。將系統提示詞、工具文件和密集歷史記錄渲染為緊湊的PNG頁面,供Claude Fable 5 讀取以替代文本。圖像Token按尺寸而非字符計費,因此轉換後的區塊成本降低約 10 倍。僅限Anthropic直連路由。", "economicsTitle": "經濟效益", "economics": { - "fewerTokens": "轉換後區塊的 token 減少", + "fewerTokens": "轉換區塊減少的Token", "savings": "端到端節省(實測)", - "imageTokens": "1568×728 頁面的圖片 token(約 28k 字元)", - "accuracy": "Fable 5 上的閱讀準確度(n=30)" + "imageTokens": "1568×728 頁面(約 28k字符)的圖像Token", + "accuracy": "Fable 5 上的讀取準確率(n=30)" }, - "beforeAfterTitle": "轉換前 → 轉換後", - "blockSavings": "此區塊節省 −{percent}% token", - "realRender": "{characters, number} 字元密集工具說明文件的實際渲染結果 — 非模擬圖。", - "textTokens": "文字 · ≈ {tokens, number} 個 token", - "renderedTokens": "已渲染頁面 · ≈ {tokens, number} 個 token", - "renderedImageAlt": "渲染後的密集頁面,{width}×{height}px", + "beforeAfterTitle": "之前 → 之後", + "blockSavings": "此區塊 −{percent}% Token", + "realRender": "{characters, number} 個字符的密集工具文件的真實渲染—非效果圖。", + "textTokens": "文本· ≈ {tokens, number} 個Token", + "renderedTokens": "渲染頁面· ≈ {tokens, number} 個Token", + "renderedImageAlt": "渲染的密集頁面,{width}×{height}px", "gatesTitle": "觸發時機", - "gatesDescription": "封閉式失敗:每個閘門都必須通過,否則請求將未經轉換直接通過(每次跳過記錄為 skip:<reason>)。", + "gatesDescription": "故障閉合(Fail-closed):必須通過所有關卡,否則請求將原樣透傳(每次跳過均記錄為 skip:<reason>)。", "gates": { "model": { "label": "模型", "pass": "claude-fable-5", - "why": "只有 Fable 5 能以 100% 準確度讀取密集頁面(實測,n=30)。GPT-5.5 和 Gemini 2.5 Flash 已封鎖。" + "why": "僅Fable 5 能以 100% 的準確率讀取密集頁面(實測,n=30)。GPT-5.5 和Gemini 2.5 Flash會被攔截。" }, "transport": { "label": "傳輸方式", - "pass": "直接 Anthropic", - "why": "聚合器會重新取樣圖片並破壞可讀性 — 僅直接路由具有權威性。" + "pass": "Anthropic直連", + "why": "聚合服務商會對圖像進行重採樣並破壞清晰度—僅直連路由有效。" }, "format": { "label": "格式", - "pass": "原生 Claude", - "why": "主體必須使用 Claude 格式,且絕對不能在訊息中包含 system 角色。" + "pass": "原生Claude", + "why": "請求體必須使用Claude格式,且絕不能在messages中放入system角色。" }, "profitable": { - "label": "效益評估", - "pass": "夠密集", - "why": "精確的 28px 區塊成本閘門會依請求決定;小型或稀疏的文字將直接通過,不經轉換。" + "label": "具備效益", + "pass": "足夠密集", + "why": "精確的 28px-patch成本關卡會針對每個請求進行判定;較小或稀疏的文本將原樣透傳。" } }, "enableTitle": "啟用引擎", - "enableDescription": "在堆疊中最後執行(RTK/Caveman 清理文字後,OmniGlyph 將剩餘部分轉換為圖片),也可透過 omniglyph 模式獨立執行。此為預覽功能,預設為關閉,待端到端驗證完成後才會預設開啟。", - "saved": "已儲存。", - "saveFailed": "無法儲存。", - "enableAria": "啟用 OmniGlyph 引擎" + "enableDescription": "在堆棧中最後運行(在RTK/Caveman清理文本、OmniGlyph將剩餘部分轉換為圖像之後),也可以通過 omniglyph 模式獨立運行。此功能為預覽版,在端到端驗證完成前預設保持關閉。", + "saved": "已保存。", + "saveFailed": "無法保存。", + "enableAria": "啟用OmniGlyph引擎" }, "embeddedServices": { - "title": "內嵌服務", - "description": "隨需管理的本機引擎 — CLIProxyAPI、9Router、Mux 和 Bifrost。僅可透過迴路位址存取。", - "stateRunning": "執行中", + "title": "嵌入式服務", + "description": "按需管理的本地引擎—CLIProxyAPI、9Router、Mux和Bifrost。僅可通過環回訪問。", + "stateRunning": "運行中", "stateStopped": "已停止", - "stateStarting": "啟動中", - "stateStopping": "停止中", + "stateStarting": "正在啟動", + "stateStopping": "正在停止", "stateError": "錯誤", "stateNotInstalled": "未安裝", "stateUnknown": "未知", "port": "連接埠 {port}", "externalBadge": "外部管理", - "externalTitle": "偵測到外部 9Router", - "externalDescription": "OmniRoute 在 {host}:{port} 找到 9Router。其生命週期、日誌、更新和服務金鑰仍由外部安裝管理。", + "externalTitle": "檢測到外部 9Router", + "externalDescription": "OmniRoute在 {host}:{port} 發現了 9Router。其生命週期、日誌、更新和服務金鑰仍由外部安裝管理。", "start": "啟動", - "starting": "啟動中…", + "starting": "正在啟動…", "stop": "停止", - "stopping": "停止中…", + "stopping": "正在停止…", "restart": "重新啟動", - "restarting": "重新啟動中…", + "restarting": "正在重新啟動…", "update": "更新", - "updating": "更新中…", + "updating": "正在更新…", "install": "安裝", - "installing": "安裝中…", + "installing": "正在安裝…", "autoStart": "自動啟動", - "autoStartDescription": "OmniRoute 啟動時自動啟動 {name}", - "apiKey": "API 金鑰", - "apiKeyDescription": "OmniRoute 用來驗證 {name} 的金鑰", - "keyRotated": "金鑰已輪換 — {name} 已重新啟動以套用新金鑰", - "keyRotateFailed": "金鑰輪換失敗", + "autoStartDescription": "在OmniRoute啟動時自動啟動 {name}", + "apiKey": "API Key", + "apiKeyDescription": "OmniRoute用於向 {name} 身份驗證的金鑰", + "keyRotated": "金鑰已輪換— {name} 已重新啟動以應用新金鑰", + "keyRotateFailed": "輪換金鑰失敗", "keyRevealFailed": "顯示金鑰失敗", - "keyRevealEmpty": "顯示失敗:未傳回金鑰", + "keyRevealEmpty": "顯示失敗:未返回金鑰", "reveal": "顯示", - "revealing": "顯示中…", + "revealing": "正在顯示…", "hide": "隱藏", "rotateKey": "輪換金鑰", - "rotating": "輪換中…", + "rotating": "正在輪換…", "keyAutoHide": "金鑰將在 30 秒後自動隱藏。", - "revealTitle": "顯示 API 金鑰", - "revealConfirm": "顯示 API 金鑰將記錄在稽核軌跡中。是否繼續?", - "cancel": "取消", + "revealTitle": "顯示API Key", + "revealConfirm": "Revealing the API Key will be logged in the audit trail. Continue?", + "cancel": "Cancel", "install9Router": "安裝 9Router", - "install9RouterDescription": "透過 npm 下載並安裝 9Router。需要約 500 MB 磁碟空間。", - "version": "版本", - "versionHint": "輸入「latest」或特定版本(例如 1.2.3)。", - "servicePort": "連接埠", - "servicePortHint": "OmniRoute 和 9Router 必須使用不同的連接埠。9Router 的預設連接埠為 20130。", - "installationFailed": "安裝失敗(HTTP {status})", - "installationSucceeded": "9Router 安裝成功。正在啟動…", - "networkInstallFailed": "網路錯誤 — 無法連線至安裝端點", - "availableModels": "可用模型", + "install9RouterDescription": "通過npm下載並安裝 9Router。需要約 500 MB磁盤空間。", + "version": "Version", + "versionHint": "輸入“latest”或具體版本號(例如 1.2.3)。", + "servicePort": "Port", + "servicePortHint": "OmniRoute和 9Router必須使用不同連接埠。9Router預設連接埠為 20130。", + "installationFailed": "Installation failed (HTTP {status})", + "installationSucceeded": "9Router安裝成功。正在啟動…", + "networkInstallFailed": "網路錯誤 — 無法連接安裝端點", + "availableModels": "Available Models", "modelsLoading": "載入中…", - "modelsDiscovered": "已發現 {count} 個模型", + "modelsDiscovered": "{count, plural, one {已發現 # 個模型} other {已發現 # 個模型}}", "modelsLoadFailed": "載入模型失敗", - "refreshing": "重新整理中…", - "refreshNow": "立即重新整理", - "noModels": "找不到模型。選擇「立即重新整理」以從執行中的服務同步。", - "unavailable": "無法使用", - "pageOf": "第 {page} 頁,共 {total} 頁", - "previous": "上一頁", - "next": "下一步", - "providerExposure": "提供者曝光", - "providerExposureDescription": "將 9Router 模型以 9router/ 前綴形式公開為路由目標。", - "providerExposureLabel": "以 9router/… 形式公開", - "providerExposureHint": "啟用後,發現的模型會出現在 OmniRoute 各處的提供者選擇器中。", - "providerExposureUpdateFailed": "更新失敗(HTTP {status})", - "providerExposureNetworkFailed": "網路錯誤 — 無法更新提供者曝光設定", + "refreshing": "正在刷新…", + "refreshNow": "立即刷新", + "noModels": "未找到模型。選擇立即刷新以從運行中的服務同步。", + "unavailable": "Unavailable", + "pageOf": "Page {page} of {total}", + "previous": "Previous", + "next": "Next", + "providerExposure": "提供者Exposure", + "providerExposureDescription": "將 9Router模型作為路由目標暴露在 9router/ 前綴下。", + "providerExposureLabel": "以 9router/… 形式暴露", + "providerExposureHint": "啟用後,已發現的模型會出現在OmniRoute各處的提供者選擇器中。", + "providerExposureUpdateFailed": "Failed to update (HTTP {status})", + "providerExposureNetworkFailed": "網路錯誤 — 無法更新提供者暴露設定", "webUi": "9Router Web UI", - "openNewTab": "在新分頁中開啟", + "openNewTab": "在新標籤頁中打開", "filterLogs": "篩選日誌…", - "resume": "繼續", - "pause": "暫停", - "clear": "清除", - "download": "下載", - "noLogs": "尚無日誌輸出。", - "logStreamFailed": "無法串流 {name} 的日誌。請檢查本機存取權限和服務狀態。", - "fallbackRouting": "備援路由", - "fallbackRoutingDescription": "透過 CLIProxyAPI 重試失敗的提供者請求", - "enableFallback": "啟用備援", + "resume": "Resume", + "pause": "Pause", + "clear": "Clear", + "download": "Download", + "noLogs": "暫無日誌輸出。", + "logStreamFailed": "Unable to stream {name} logs. Check local access and service status.", + "fallbackRouting": "回退路由", + "fallbackRoutingDescription": "通過CLIProxyAPI重試失敗的服務商請求", + "enableFallback": "啟用回退", "cliproxyUrl": "CLIProxyAPI URL", - "fallbackCodes": "備援狀態碼(逗號分隔)", - "invalidUrl": "無效的 URL — 必須以 http:// 或 https:// 開頭", - "saved": "已儲存", - "saveFailed": "設定儲存失敗", - "modelMapping": "模型對應", - "modelMappingDescription": "將 OmniRoute 模型 ID 對應至 CLIProxyAPI 模型 ID(例如,\"gpt-4o\": \"openai-gpt-4o\")", - "modelMappingEditor": "模型對應 JSON 編輯器", - "mappingSaved": "對應已儲存", - "mappingSaveFailed": "對應儲存失敗", - "mappingInvalidJson": "無效的 JSON。", - "mappingMustBeObject": "對應必須是 JSON 物件,而非陣列或基本型別值。", - "mappingValueMustBeString": "金鑰「{key}」的值必須是字串。", - "save": "儲存" + "fallbackCodes": "回退狀態碼(逗號分隔)", + "invalidUrl": "無效的URL—必須以http:// 或https:// 開頭", + "saved": "已保存", + "saveFailed": "保存設定失敗", + "modelMapping": "模型映射", + "modelMappingDescription": "將OmniRoute模型ID映射到CLIProxyAPI模型ID(例如,\"gpt-4o\": \"openai-gpt-4o\")", + "modelMappingEditor": "模型映射JSON編輯器", + "mappingSaved": "映射已保存", + "mappingSaveFailed": "保存映射失敗", + "mappingInvalidJson": "無效的JSON。", + "mappingMustBeObject": "映射必須是一個JSON物件,不能是陣列或原始值。", + "mappingValueMustBeString": "鍵 “{key}” 的值必須是字串。", + "save": "保存" }, "contextCaveman": { - "title": "Caveman 引擎", - "description": "基於規則的訊息壓縮,包含語言包、分析和輸出模式控制。", - "advancedConfig": "高階設定", + "title": "Caveman引擎", + "description": "基於規則的消息壓縮,包含語言包、分析和輸出模式控制。", + "advancedConfig": "高級設定", "advancedConfigDesc": "微調壓縮行為", "aggressiveSettings": "激進的設定", "aggressiveSettingsDesc": "最大壓縮與潛在的質量權衡", "requests": "請求數", - "tokensSaved": "已節省 token", + "tokensSaved": "已節省token", "savingsPercent": "節省比例", "avgLatency": "平均延遲", "languagePacks": "語言包", "languagePacksDesc": "為特定語言啟用壓縮規則。", "labelAutoTrigger": "當上下文超出時自動壓縮", "labelCompressionRate": "抗壓強度", - "labelMaxTokens": "每條訊息的目標權杖", - "labelMinLength": "最小訊息長度", - "labelMinSavings": "儲存的最低代幣數量", + "labelMaxTokens": "每條消息的目標令牌", + "labelMinLength": "最小消息長度", + "labelMinSavings": "保存的最低代幣數量", "enabled": "已啟用", "autoDetect": "自動檢測語言", "rulesCount": "{count} 條規則", "inputCompressionTitle": "輸入壓縮", - "inputCompressionDesc": "用更短的措辭重寫聊天曆史,可減少約 50% 的輸入 Token。", + "inputCompressionDesc": "用更短的措辭重寫聊天曆史,可減少約 50% 的輸入Token。", "analyticsTitle": "壓縮分析", "noAnalytics": "尚無壓縮分析。", - "masterDisabledWarning": "Token Saver 主開關已關閉 — 這些設定在您從「壓縮設定」開啟或在此處變更之前,不會影響請求。", + "masterDisabledWarning": "Token Saver總開關已關閉—在您從“壓縮設定”中將其開啟或在此處更改之前,這些設定不會影響請求。", "outputMode": "輸出方式", - "outputModeDesc": "指示 LLM 以簡潔、緊湊的格式回覆。", + "outputModeDesc": "指示LLM以簡潔、緊湊的格式回覆。", "outputModeTitle": "輸出模式", "quickSettings": "快速設定", "quickSettingsDesc": "開始使用的基本壓縮設定", @@ -8115,35 +8115,35 @@ "bypassConditions": "繞過條件", "bypassConditionsList": "安全、不可逆、需澄清、順序敏感", "simpleMode": "簡單", - "advancedMode": "高階", + "advancedMode": "高級", "tooltipAutoTrigger": "當上下文超過此大小時自動壓縮。", "tooltipCompressionRate": "0.0 = 無,1.0 = 最大值。 0.5 = 平衡。", - "tooltipMaxTokens": "壓縮後的目標權杖計數。更低=更具攻擊性。", - "tooltipMinLength": "比這短的訊息不會被壓縮。更低=更多壓縮。", - "tooltipMinSavings": "僅當至少儲存這麼多權杖時才進行壓縮。", + "tooltipMaxTokens": "壓縮後的目標令牌計數。更低=更具攻擊性。", + "tooltipMinLength": "比這短的消息不會被壓縮。更低=更多壓縮。", + "tooltipMinSavings": "僅當至少保存這麼多令牌時才進行壓縮。", "ultraSettings": "超級設定", - "ultraSettingsDesc": "SLM 支援的語義壓縮", + "ultraSettingsDesc": "SLM支援的語意壓縮", "preview": { - "lite": "回覆要簡潔。保留技術術語、程式碼、錯誤、URL 和識別符號。", + "lite": "回覆要簡潔。保留技術術語、代碼、錯誤、URL和標識符。", "full": "回覆要簡短緊湊。保留所有技術實質。", "ultra": "用常見技術縮寫進行極簡回覆。保留精確符號。" } }, "translator": { "title": "翻譯器", - "metaTitle": "翻譯器遊樂場 | OmniRoute", - "metaDescription": "除錯、測試和視覺化提供者之間的 API 格式轉換", - "playgroundTitle": "翻譯器遊樂場", - "playground": "遊樂場", - "realtime": "即時翻譯活動", + "metaTitle": "翻譯器演練場 | OmniRoute", + "metaDescription": "調試、測試和可視化提供者之間的API格式轉換", + "playgroundTitle": "翻譯器演練場", + "playground": "演練場", + "realtime": "實時翻譯活動", "chatTester": "聊天測試儀", "testBench": "測試臺", - "liveMonitor": "即時監控", - "modeDescriptionPlayground": "貼上任意 API 請求體,檢視 OmniRoute 如何在不同提供者格式之間進行轉換(OpenAI ↔ Claude ↔ Gemini ↔ Responses API)。", - "modeDescriptionChatTester": "通過 OmniRoute 傳送真實聊天請求,並檢查完整往返流程:輸入、轉換後的請求、提供者回應以及轉換後的輸出。", - "modeDescriptionTestBench": "執行預定義的場景並比較提供者和模型之間的相容性。", - "modeDescriptionLiveMonitor": "即時檢視請求流經 OmniRoute 時產生的翻譯事件。", - "modeDescriptionFallback": "除錯、測試並可視化 OmniRoute 如何在提供者之間轉換 API 請求。", + "liveMonitor": "實時監控", + "modeDescriptionPlayground": "粘貼任意API請求體,查看OmniRoute如何在不同提供者格式之間進行轉換(OpenAI ↔ Claude ↔ Gemini ↔ Responses API)。", + "modeDescriptionChatTester": "通過OmniRoute發送真實聊天請求,並檢查完整往返流程:輸入、轉換後的請求、提供者回應以及轉換後的輸出。", + "modeDescriptionTestBench": "運行預定義的場景並比較提供者和模型之間的相容性。", + "modeDescriptionLiveMonitor": "實時查看請求流經OmniRoute時產生的翻譯事件。", + "modeDescriptionFallback": "調試、測試並可視化OmniRoute如何在提供者之間轉換API請求。", "recentTranslations": "最近的翻譯", "noTranslations": "還沒有翻譯", "source": "來源", @@ -8158,58 +8158,58 @@ "avgLatency": "平均延遲", "millisecondsShort": "{value} 毫秒", "notAvailableSymbol": "—", - "liveAutoRefreshing": "直播 — 自動重新整理", + "liveAutoRefreshing": "直播—自動刷新", "paused": "已暫停", - "eventsAppearHint": "請求流經 OmniRoute 時,翻譯事件會顯示在這裡。你可以通過下面任一方式生成事件:", + "eventsAppearHint": "請求流經OmniRoute時,翻譯事件會顯示在這裡。你可以通過下面任一方式生成事件:", "chatTesterTab": "聊天測試選項卡", "testBenchTab": "測試臺選項卡", "externalApiCalls": "外部API呼叫", - "ideCliIntegrations": "IDE/CLI 整合", - "inMemoryNote": "注意:事件儲存在記憶體中,並在伺服器重新啟動時重置。", + "ideCliIntegrations": "IDE/CLI整合", + "inMemoryNote": "注意:事件存儲在記憶體中,並在伺服器重新啟動時重置。", "ok": "好的", "errorShort": "錯誤率", "formatConverter": "格式轉換器", - "formatConverterDescription": "貼上或輸入 JSON 請求體。翻譯器會自動識別源格式並將其轉換為目標格式。你可以藉此除錯 OmniRoute 在各種格式之間的轉換行為(OpenAI ↔ Claude ↔ Gemini ↔ Responses API)。", + "formatConverterDescription": "粘貼或輸入JSON請求體。翻譯器會自動識別源格式並將其轉換為目標格式。你可以藉此調試OmniRoute在各種格式之間的轉換行為(OpenAI ↔ Claude ↔ Gemini ↔ Responses API)。", "translationPathHubSpoke": "{source} → OpenAI(中間格式)→ {target}", "translationPathDirect": "{source} → {target}(直接轉換器)", - "translationPathPassthrough": "格式相同 — 無需轉換", - "openaiIntermediatePanel": "OpenAI 中間格式", - "autoFeaturesTitle": "OmniRoute 自動處理的內容", + "translationPathPassthrough": "格式相同—無需轉換", + "openaiIntermediatePanel": "OpenAI中間格式", + "autoFeaturesTitle": "OmniRoute自動處理的內容", "autoFeaturesCount": "8 項功能", "featureReasoningCache": "推理快取", - "featureReasoningCacheDesc": "當客戶端在對話歷史中省略 thinking-mode 模型(DeepSeek V4、Kimi K2、Qwen)的快取 reasoning_content 時,會重新注入。", - "featureSchemaCoercion": "Schema 校正", - "featureSchemaCoercionDesc": "修復損壞的工具 schema:新增缺失的 additionalProperties、清理過長描述、規範化巢狀物件。", + "featureReasoningCacheDesc": "當客戶端在對話歷史中省略thinking-mode模型(DeepSeek V4、Kimi K2、Qwen)的快取reasoning_content時,會重新注入。", + "featureSchemaCoercion": "Schema校正", + "featureSchemaCoercionDesc": "修復損壞的工具schema:新增缺失的additionalProperties、清理過長描述、規範化嵌套物件。", "featureRoleNormalization": "角色規範化", - "featureRoleNormalizationDesc": "針對非 OpenAI 目標將 developer→system。針對不支援 system 角色的模型將 system→user。", - "featureToolCallIds": "工具呼叫 ID 規範化", - "featureToolCallIdsDesc": "在缺失時生成唯一的 tool_call ID。針對 Mistral 等提供者規範化為 9 字元格式。", + "featureRoleNormalizationDesc": "針對非OpenAI目標將developer→system。針對不支援system角色的模型將system→user。", + "featureToolCallIds": "工具呼叫ID規範化", + "featureToolCallIdsDesc": "在缺失時生成唯一的tool_call ID。針對Mistral等提供者規範化為 9 字符格式。", "featureMissingToolResponse": "工具回應注入", - "featureMissingToolResponseDesc": "當客戶端傳送 tool_calls 但沒有對應回應時,注入空的 tool_result 訊息。", + "featureMissingToolResponseDesc": "當客戶端發送tool_calls但沒有對應回應時,注入空的tool_result消息。", "featureThinkingBudget": "思考預算", - "featureThinkingBudgetDesc": "自動管理 thinking 設定。當最後一條訊息不是使用者訊息時移除 thinking 引數。", + "featureThinkingBudgetDesc": "自動管理thinking設定。當最後一條消息不是用戶消息時移除thinking參數。", "featureDirectPaths": "直接轉換路徑", - "featureDirectPathsDesc": "某些格式組合(Claude→Gemini)有繞過 OpenAI 中樞的直接轉換器,可產生更準確的輸出。", - "featureImageMapping": "影像尺寸對映", - "featureImageMappingDesc": "在 API 格式之間轉換影像尺寸約定(例如 OpenAI detail 等級 → Gemini 尺寸)。", + "featureDirectPathsDesc": "某些格式組合(Claude→Gemini)有繞過OpenAI中樞的直接轉換器,可產生更準確的輸出。", + "featureImageMapping": "圖像尺寸映射", + "featureImageMappingDesc": "在API格式之間轉換圖像尺寸約定(例如OpenAI detail等級 → Gemini尺寸)。", "input": "輸入", "output": "輸出", "auto": "汽車", "swapFormats": "交換格式", "translateAction": "翻譯", "clear": "清除", - "inputPlaceholder": "在此處貼上請求正文或選擇下面的模板...", + "inputPlaceholder": "在此處粘貼請求正文或選擇下面的模板...", "exampleTemplates": "示例模板", - "exampleTemplatesHint": "— 點選載入", + "exampleTemplatesHint": "—點擊載入", "templateLoadHint": "模板以 {format} 格式載入請求。更改源格式以以不同的格式載入。", "compatibilityTester": "相容性測試儀", "compatibilityReport": "相容性報告", - "testBenchDescription": "執行預定義的場景(簡單聊天、工具呼叫等)以驗證翻譯和提供者相容性。選擇源格式和目標提供者,然後執行所有測試以檢視相容性百分比。使用它來查詢哪些功能可以跨提供者使用。", + "testBenchDescription": "運行預定義的場景(簡單聊天、工具呼叫等)以驗證翻譯和提供者相容性。選擇源格式和目標提供者,然後運行所有測試以查看相容性百分比。使用它來查找哪些功能可以跨提供者使用。", "targetProvider": "目標提供者", - "runAllTests": "執行所有測試", - "runTest": "執行測試", - "reRun": "重新執行", - "running": "執行...", + "runAllTests": "運行所有測試", + "runTest": "運行測試", + "reRun": "重新運行", + "running": "運行...", "passed": "通過了", "failed": "失敗了", "passedIconLabel": "✅ 通過", @@ -8219,26 +8219,26 @@ "scenarioMultiTurn": "多圈", "scenarioThinking": "思考", "scenarioSystemPrompt": "系統提示", - "scenarioStreaming": "流媒體", + "scenarioStreaming": "串流", "templateNames": { "simple-chat": "簡單聊天", "tool-calling": "工具呼叫", "multi-turn": "多圈", "thinking": "思考", "system-prompt": "系統提示", - "streaming": "流媒體", + "streaming": "串流", "vision": "願景", "schema-coercion": "模式強制" }, "templateDescriptions": { - "simple-chat": "基本簡訊", - "tool-calling": "函式/工具呼叫", + "simple-chat": "基本短信", + "tool-calling": "函數/工具呼叫", "multi-turn": "與歷史對話", - "thinking": "擴充套件思維/推理", + "thinking": "擴展思維/推理", "system-prompt": "複雜系統指令", - "streaming": "SSE 流請求", - "vision": "帶影像輸入的多模式請求", - "schema-coercion": "結構化輸出/JSON 模式實施" + "streaming": "SSE流請求", + "vision": "帶圖像輸入的多模式請求", + "schema-coercion": "結構化輸出/JSON模式實施" }, "templatePayloads": { "simpleChat": { @@ -8246,105 +8246,105 @@ "userGreeting": "你好!你今天怎麼樣?" }, "toolCalling": { - "userWeather": "聖保羅 的天氣怎麼樣?", + "userWeather": "聖保羅的天氣怎麼樣?", "toolDescription": "獲取某個位置的當前天氣", "cityNameDescription": "城市名稱" }, "multiTurn": { "system": "你是一名編碼助理。", - "userInitial": "請用 Python 寫一個對陣列進行排序的函式。", - "assistantExample": "這是一個簡單的排序函式: ```python\ndef sort_array(arr): return sorted(arr)\n```", + "userInitial": "請用Python寫一個對陣列進行排序的函數。", + "assistantExample": "這是一個簡單的排序函數: ```python\ndef sort_array(arr): return sorted(arr)\n```", "userFollowUp": "現在將其按降序排序。" }, "thinking": { "question": "前 100 個質數之和是多少?" }, "systemPrompt": { - "systemInstruction": "你是一名專注於分散式系統的高階軟體工程師。請使用行業最佳實踐簡潔作答,並在合適時提供程式碼示例。回覆請使用 Markdown 格式。", + "systemInstruction": "你是一名專注於分佈式系統的高級軟件工程師。請使用行業最佳實踐簡潔作答,並在合適時提供代碼示例。回覆請使用Markdown格式。", "question": "如何實現斷路器模式?" }, "streaming": { "prompt": "給我講一個關於機器人學習繪畫的小故事。" }, "vision": { - "system": "你是一個精確描述影像的助手。", + "system": "你是一個精確描述圖像的助手。", "userPrompt": "這張圖片顯示了什麼?", "imageUrl": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/PNG_transparency_demonstration_1.png/600px-PNG_transparency_demonstration_1.png" }, "schemaCoercion": { - "userPrompt": "使用公制單位查詢東京的天氣幷包括每小時的細分。", + "userPrompt": "使用公制單位查找東京的天氣幷包括每小時的細分。", "toolDescription": "通過結構化選項獲取城市的天氣。", "cityDescription": "要查詢的城市,例如“東京”或“紐約”。" } }, - "openaiCompatibleLabel": "OpenAI 相容", - "anthropicCompatibleLabel": "Anthropic 相容", + "openaiCompatibleLabel": "OpenAI相容", + "anthropicCompatibleLabel": "Anthropic相容", "noTemplateForFormat": "沒有此格式的模板", "translationFailed": "翻譯失敗:{error}", - "pipelineDebugger": "管道偵錯程式", + "pipelineDebugger": "管道調試器", "translationPipeline": "翻譯管道", - "loading": "正在載入…", + "loading": "載入中…", "compressionOriginal": "原始", "compressionCompressed": "已壓縮", - "compressionSaved": "已儲存", - "compressionDuration": "持續時間", - "pipelineStepsAria": "管線步驟", - "copyIntermediateJson": "複製中繼 JSON", - "copyOutputJson": "複製輸出 JSON", - "pipelineVisualization": "管道視覺化", - "pipelineVisualizationHint": "傳送訊息以檢視您的請求如何經過檢測 → 翻譯 → 提供者呼叫。", - "chatTesterDescription": "以特定客戶端格式傳送訊息並檢查翻譯管道的每個步驟。", - "chatTesterFlow": "客戶端請求 → 格式檢測 → OpenAI 中間格式 → 提供者格式 → 回應", + "compressionSaved": "已節省", + "compressionDuration": "時長", + "pipelineStepsAria": "流水線步驟", + "copyIntermediateJson": "複製中間JSON", + "copyOutputJson": "複製輸出JSON", + "pipelineVisualization": "管道可視化", + "pipelineVisualizationHint": "發送消息以查看您的請求如何經過檢測 → 翻譯 → 提供者呼叫。", + "chatTesterDescription": "以特定客戶端格式發送消息並檢查翻譯管道的每個步驟。", + "chatTesterFlow": "客戶端請求 → 格式檢測 → OpenAI中間格式 → 提供者格式 → 回應", "clickStepToInspect": "單擊任意步驟即可檢查該階段的資料。", "clientFormat": "客戶端格式", "provider": "提供者", "modelPlaceholder": "選擇或輸入模型名稱...", - "sendMessageToSeePipeline": "傳送訊息檢視翻譯管道", - "chatMessageHintPrefix": "您的訊息將被格式化為", - "chatMessageHintSuffix": "請求,通過管道進行翻譯,然後傳送給選定的提供者。", + "sendMessageToSeePipeline": "發送消息查看翻譯管道", + "chatMessageHintPrefix": "您的消息將被格式化為", + "chatMessageHintSuffix": "請求,通過管道進行翻譯,然後發送給選定的提供者。", "youWithFormat": "您 ({format})", "assistant": "助理", - "typeMessage": "輸入訊息...", - "send": "傳送", + "typeMessage": "輸入消息...", + "send": "發送", "clientRequest": "客戶端請求", - "clientRequestDescription": "您的客戶端傳送的請求正文", + "clientRequestDescription": "您的客戶端發送的請求正文", "formatDetected": "檢測到格式", - "formatDetectedDescription": "OmniRoute 會根據請求結構自動識別 API 格式", - "openaiIntermediate": "OpenAI 中間格式", - "openaiIntermediateDescription": "所有格式都會先歸一化為 OpenAI 格式(通用橋接層)", + "formatDetectedDescription": "OmniRoute會根據請求結構自動識別API格式", + "openaiIntermediate": "OpenAI中間格式", + "openaiIntermediateDescription": "所有格式都會先歸一化為OpenAI格式(通用橋接層)", "providerFormat": "提供者格式", - "providerFormatDescription": "隨後再把 OpenAI 格式轉換為提供者原生格式", + "providerFormatDescription": "隨後再把OpenAI格式轉換為提供者原生格式", "providerResponse": "提供者回應", - "providerResponseRawDescription": "來自提供者 API 的原始回應", - "providerResponseSseDescription": "來自提供者 API 的原始 SSE 流", + "providerResponseRawDescription": "來自提供者API的原始回應", + "providerResponseSseDescription": "來自提供者API的原始SSE流", "unexpectedError": "發生意外錯誤", "error": "錯誤", "errorMessage": "錯誤:{message}", "requestFailed": "請求失敗", "noTextExtracted": "(未提取文字)", - "liveMonitorMemoryNote": "事件儲存在記憶體中,重啟後會丟失。", + "liveMonitorMemoryNote": "事件存儲在記憶體中,重新啟動後會丟失。", "liveMonitorMemoryCapNote": "最多保留 200 個事件。", "eventSourcesLabel": "事件來源:", - "eventSourceTranslatorPage": "• Translator 頁面(Chat Tester、Test Bench)", - "eventSourceMainPipeline": "• 主請求流水線(CLI/IDE/API 流量)", - "liveMonitorDescriptionPrefix": "這裡會顯示 API 呼叫流經 OmniRoute 時產生的翻譯事件。事件來自記憶體緩衝區(重啟後會重置)。使用", - "liveMonitorDescriptionSuffix": ",或外部 API 呼叫來生成事件。", + "eventSourceTranslatorPage": "• Translator頁面(Chat Tester、Test Bench)", + "eventSourceMainPipeline": "• 主請求流水線(CLI/IDE/API流量)", + "liveMonitorDescriptionPrefix": "這裡會顯示API呼叫流經OmniRoute時產生的翻譯事件。事件來自記憶體緩衝區(重新啟動後會重置)。使用", + "liveMonitorDescriptionSuffix": ",或外部API呼叫來生成事件。", "streamTransformer": "流轉換器", - "modeDescriptionStreamTransformer": "通過回應轉換器執行聊天完成 SSE 流。", + "modeDescriptionStreamTransformer": "通過回應轉換器運行聊天完成SSE流。", "streamTransformerTitle": "回應流轉換器", - "streamTransformerDescription": "貼上聊天完成 SSE 流,通過 OmniRoute 的回應轉換器執行它,並在連線客戶端之前檢查發出的回應。* 事件。", + "streamTransformerDescription": "粘貼聊天完成SSE流,通過OmniRoute的回應轉換器運行它,並在連接客戶端之前檢查發出的回應。* 事件。", "loadTextSample": "載入文本樣本", "loadToolSample": "載入工具呼叫示例", "transformToResponses": "轉換為回應", - "rawChatSseInput": "原始聊天完成 SSE", - "transformedResponsesSse": "轉換後的回應 API SSE", + "rawChatSseInput": "原始聊天完成SSE", + "transformedResponsesSse": "轉換後的回應API SSE", "noResultsYet": "還沒有結果", "transformedEvents": "轉化事件", "uniqueEventTypes": "獨特的事件類型", "inputLines": "輸入線", "outputLines": "輸出線", "transformedEventTimeline": "轉變的事件時間線", - "transformerTimelineHint": "執行變壓器以按順序檢查發出的 response.output_* 事件。", + "transformerTimelineHint": "運行變壓器以按順序檢查發出的response.output_* 事件。", "eventType": "事件類型", "eventPreview": "預覽", "comboRouted": "組合路由", @@ -8352,68 +8352,68 @@ "routeDetails": "路線詳情", "comboBadge": "組合", "routeEndpointLabel": "端點", - "routeConnectionLabel": "連線方式", - "scenarioVision": "視覺(影像理解)", + "routeConnectionLabel": "連接方式", + "scenarioVision": "視覺(圖像理解)", "scenarioSchemaCoercion": "模式強制(結構化輸出)", - "techniques": "技巧:", + "techniques": "Skills:", "friendlyTitle": "翻譯器", - "friendlySubtitle": "使用您現有的應用程式與任何提供者 — 無需重寫程式碼。", - "conceptHeadline": "您的應用程式使用一個 API 的“語言”。翻譯器將其轉換為使用另一個提供者。", + "friendlySubtitle": "使用您現有的應用程式與任何提供者—無需重寫代碼。", + "conceptHeadline": "您的應用程式使用一個API的“語言”。翻譯器將其轉換為使用另一個提供者。", "conceptDiagramAppLabel": "您的應用程式", "conceptDiagramSourceLabel": "源格式", "conceptDiagramHubLabel": "OpenAI (中心)", "conceptDiagramTargetLabel": "目標提供者", - "conceptDiagramExampleApp": "例如 Anthropic SDK", + "conceptDiagramExampleApp": "例如Anthropic SDK", "conceptDiagramExampleSource": "Claude", - "conceptDiagramExampleTarget": "雙子座", + "conceptDiagramExampleTarget": "Gemini", "conceptHowItWorksToggle": "它是如何工作的", - "conceptHowItWorksBody": "您的應用以其自己的格式傳送請求。翻譯器檢測該格式,通過 OpenAI 作為中介中心進行轉換(或在可用的情況下直接進行轉換),將其傳送到所選提供者,並將回應轉換回您應用的格式。", + "conceptHowItWorksBody": "您的應用以其自己的格式發送請求。翻譯器檢測該格式,通過OpenAI作為中介中心進行轉換(或在可用的情況下直接進行轉換),將其發送到所選提供者,並將回應轉換回您應用的格式。", "tabTranslate": "翻譯", "tabMonitor": "監視器", "tabTranslateAriaLabel": "前往翻譯選項卡", "tabMonitorAriaLabel": "轉到監視器選項卡", "simpleAppUsesLabel": "我的應用程式使用", - "simpleAppUsesHint": "您的應用程式使用的 API 格式(例如,Anthropic SDK = claude)。", - "simpleSendToLabel": "傳送到", - "simpleSendToHint": "實際將請求傳送到哪裡(在 OmniRoute 中連線的提供者)。", + "simpleAppUsesHint": "您的應用程式使用的API格式(例如,Anthropic SDK = claude)。", + "simpleSendToLabel": "發送到", + "simpleSendToHint": "實際將請求發送到哪裡(在OmniRoute中連接的提供者)。", "simpleStartWithLabel": "開始於", "simpleStartWithExamplePlaceholder": "選擇一個現成的示例", - "simpleStartWithCustomOption": "貼上您的請求(高階)", + "simpleStartWithCustomOption": "粘貼您的請求(高級)", "simpleModeLabel": "模式", "simpleModePreview": "僅預覽翻譯", - "simpleModeSend": "傳送並檢視回應", - "simpleAdvancedToggle": "高階", + "simpleModeSend": "發送並查看回應", + "simpleAdvancedToggle": "高級", "simpleInputPanelTitle": "輸入", - "simpleInputPanelHint": "自由文本訊息或現成示例", + "simpleInputPanelHint": "自由文本消息或現成示例", "simpleResultPanelTitle": "翻譯 + 回覆", "narratedDetected": "✓ 檢測到: {format}", "narratedTranslating": "正在翻譯到 {target}...", - "narratedSending": "正在傳送到 {target}...", - "narratedSuccess": "→ 翻譯為 {target} · 回應時間 {latency}ms", + "narratedSending": "正在發送到 {target}...", + "narratedSuccess": "→ 翻譯為 {target} ·回應時間 {latency}ms", "narratedError": "失敗:{reason}", - "narratedSeeTranslatedJson": "檢視翻譯後的 JSON", - "narratedSeePipeline": "檢視管道", - "advancedSectionTitle": "高階", - "advancedSectionSubtitle": "原始 JSON、管道和技術工具。這裡的一切與舊標籤相同——只是重新組織了一下。", - "advancedRawJsonTitle": "原始 JSON(自動檢測 + Monaco)", - "advancedRawJsonSubtitle": "貼上一個 JSON 請求;格式會自動檢測。", - "advancedPipelineTitle": "OpenAI 中間管道", - "advancedPipelineSubtitle": "視覺化每個翻譯步驟(中心輻射模型)。", - "advancedStreamTransformTitle": "流轉換器 (聊天 → 回應 SSE)", - "advancedStreamTransformSubtitle": "將聊天完成 SSE 轉換為回應 API。", + "narratedSeeTranslatedJson": "查看翻譯後的JSON", + "narratedSeePipeline": "查看管道", + "advancedSectionTitle": "高級", + "advancedSectionSubtitle": "原始JSON、管道和技術工具。這裡的一切與舊標籤相同——只是重新組織了一下。", + "advancedRawJsonTitle": "原始JSON(自動檢測 + Monaco)", + "advancedRawJsonSubtitle": "粘貼一個JSON請求;格式會自動檢測。", + "advancedPipelineTitle": "OpenAI中間管道", + "advancedPipelineSubtitle": "可視化每個翻譯步驟(中心輻射模型)。", + "advancedStreamTransformTitle": "流轉換器 (聊天 → 回應SSE)", + "advancedStreamTransformSubtitle": "將聊天完成SSE轉換為回應API。", "advancedTestBenchTitle": "測試平臺 (8 個場景)", - "advancedTestBenchSubtitle": "執行所有場景並報告通過/失敗 + 相容性 %。", + "advancedTestBenchSubtitle": "運行所有場景並報告通過/失敗 + 相容性 %。", "advancedCompressionTitle": "壓縮預覽", - "advancedCompressionSubtitle": "估算不同壓縮模式下的權杖節省。", - "monitorOriginHint": "由 Translate 或主管道生成的事件會即時顯示在這裡。", - "monitorEmptyCta": "轉到翻譯選項卡併發送請求 — 它將出現在這裡。", + "advancedCompressionSubtitle": "估算不同壓縮模式下的令牌節省。", + "monitorOriginHint": "由Translate或主管道生成的事件會實時顯示在這裡。", + "monitorEmptyCta": "轉到翻譯選項卡併發送請求—它將出現在這裡。", "monitorOpenTranslateButton": "前往翻譯", "pipelineStepClientRequest": "客戶端請求", "pipelineStepClientRequestDesc": "以客戶端格式接收到請求", "pipelineStepFormatDetected": "檢測到的格式", "pipelineStepFormatDetectedDesc": "自動檢測到的源格式", - "pipelineStepOpenAIIntermediate": "OpenAI 中級", - "pipelineStepOpenAIIntermediateDesc": "翻譯為 OpenAI hub 格式", + "pipelineStepOpenAIIntermediate": "OpenAI中級", + "pipelineStepOpenAIIntermediateDesc": "翻譯為OpenAI hub格式", "pipelineStepProviderFormat": "提供者格式", "pipelineStepProviderFormatDesc": "翻譯為提供者目標格式", "pipelineStepProviderResponse": "提供者回應", @@ -8422,33 +8422,33 @@ "conceptDiagramArrow2": "翻譯", "conceptDiagramArrow3": "轉換", "conceptDiagramExampleHub": "OpenAI", - "conceptDiagramHubTooltip": "翻譯器用於在沒有直接對映的格式之間轉換的中間樞紐。", - "conceptDiagramSourceTooltip": "您的應用程式使用的 API 格式(例如,Anthropic SDK = claude)。", - "conceptDiagramTargetTooltip": "請求將實際傳送到的提供者。", - "compressionEmptyHint": "在「翻譯」標籤頁(簡易控制或原始 JSON)中填寫輸入欄位以啟用預覽。", + "conceptDiagramHubTooltip": "翻譯器用於在沒有直接映射的格式之間轉換的中間樞紐。", + "conceptDiagramSourceTooltip": "您的應用程式使用的API格式(例如,Anthropic SDK = claude)。", + "conceptDiagramTargetTooltip": "請求將實際發送到的提供者。", + "compressionEmptyHint": "填寫“翻譯”標籤頁上的輸入欄位(簡單控件或原始JSON)以啟用預覽。", "compressionModeLabel": "壓縮模式", "compressionPreviewButton": "預覽壓縮", - "compressionPreviewing": "正在預覽…", + "compressionPreviewing": "預覽中…", "compressionPreviewFailed": "壓縮預覽失敗", - "tokens": "tokens", - "pauseAutoRefresh": "暫停自動重新整理", - "resumeAutoRefresh": "繼續自動重新整理", - "live": "即時", + "tokens": "token", + "pauseAutoRefresh": "暫停自動刷新", + "resumeAutoRefresh": "恢復自動刷新", + "live": "實時", "copyInput": "複製輸入", "copyOutput": "複製輸出", - "streamTransformFailed": "轉換串流失敗" + "streamTransformFailed": "轉換流失敗" }, "usage": { "title": "用量", "loggerTab": "記錄器", "proxyTab": "代理", "budgetManagement": "預算管理", - "budgetSaved": "已儲存預算限制", + "budgetSaved": "已保存預算限制", "budgetSaveFailed": "未能節省預算", "loadingBudgetData": "正在載入預算資料...", - "noApiKeysTitle": "沒有 API 金鑰", - "noApiKeysDescription": "首先新增 API 金鑰以設定預算限制。", - "apiKey": "API key", + "noApiKeysTitle": "沒有API Key", + "noApiKeysDescription": "首先新增API Key以設定預算限制。", + "apiKey": "API Key", "todaysSpend": "今天的花費", "thisMonth": "本月", "setLimits": "設定限制", @@ -8458,9 +8458,9 @@ "dailyLimitPlaceholder": "例如5.00", "monthlyLimitPlaceholder": "例如50.00", "warningThresholdPlaceholder": "80", - "saveLimits": "儲存限制", - "budgetOk": "預算正常 — 剩餘 {remaining}", - "budgetExceeded": "超出預算 - 請求可能被阻止", + "saveLimits": "保存限制", + "budgetOk": "預算正常—剩餘 {remaining}", + "budgetExceeded": "超出預算 - 請求可能已阻止", "totalRequests": "請求總數", "noDataYet": "還沒有資料", "latency": "延遲", @@ -8476,35 +8476,35 @@ "hitsMisses": "命中/未命中", "circuitBreakers": "斷路器", "lockedIPs": "鎖定IP", - "lockoutsAutoRefreshHint": "每個模型速率限制鎖定 • 自動重新整理 10 秒", + "lockoutsAutoRefreshHint": "每個模型速率限制鎖定 • 自動刷新 10 秒", "lockedCount": "{count, plural, one {# 個鎖定項} other {# 個鎖定項}}", "timeLeft": "剩餘 {time}", "howItWorks": "工作原理", - "howItWorksSubtitle": "瞭解評估如何驗證您的 LLM 回答", + "howItWorksSubtitle": "瞭解評估如何驗證您的LLM回答", "define": "定義", - "defineStepDescription": "使用包含、正規表示式或完全匹配等策略建立帶有輸入提示和預期輸出標準的測試用例。", - "run": "執行", - "runStepDescription": "通過 OmniRoute 對你的 LLM 端點執行測試用例。每個案例都會作為真實 API 請求傳送。", + "defineStepDescription": "使用包含、正則表達式或完全匹配等策略創建帶有輸入提示和預期輸出標準的測試用例。", + "run": "運行", + "runStepDescription": "通過OmniRoute對你的LLM端點執行測試用例。每個案例都會作為真實API請求發送。", "evaluate": "評估", - "evaluateStepDescription": "將回應與預期標準進行比較。檢視每種情況的通過/失敗情況以及延遲指標和詳細反饋。", + "evaluateStepDescription": "將回應與預期標準比較。查看每種情況的通過/失敗情況以及延遲指標和詳細反饋。", "evalsStrategyContainsLabel": "包含", "evalsStrategyExactLabel": "精確匹配", "evalsStrategyRegexLabel": "正則", "evalsStrategyCustomLabel": "自定義邏輯", - "evalsStrategyContainsDescription": "檢查 LLM 輸出是否包含期望的子串。", - "evalsStrategyExactDescription": "檢查 LLM 輸出是否與期望值完全一致。", - "evalsStrategyRegexDescription": "通過正規表示式校驗 LLM 輸出。", - "evalsStrategyCustomDescription": "自定義評估邏輯(通過 JSON 設定)。", + "evalsStrategyContainsDescription": "檢查LLM輸出是否包含期望的子串。", + "evalsStrategyExactDescription": "檢查LLM輸出是否與期望值完全一致。", + "evalsStrategyRegexDescription": "通過正則表達式校驗LLM輸出。", + "evalsStrategyCustomDescription": "自定義評估邏輯(通過JSON設定)。", "historyColumnSuiteName": "套件名稱", "historyColumnTarget": "目標", "historyColumnPassRate": "通過率", "historyColumnAvgLatencyMs": "平均延遲", "historyColumnCreatedAt": "執行時間", "evalSuites": "評估套件", - "evalSuitesHint": "點選套件可檢視測試用例,然後執行以評估你的 LLM 端點", + "evalSuitesHint": "點擊套件可查看測試用例,然後運行以評估你的LLM端點", "evalsLoading": "正在載入評估套件...", "noEvalSuitesFound": "未找到評估套件", - "noEvalSuitesDescription": "評測套件可以通過 API 或程式碼定義。它們會使用包含、正規表示式、精確匹配和自定義函式等策略,根據預期結果驗證模型輸出。", + "noEvalSuitesDescription": "評測套件可以通過API或代碼定義。它們會使用包含、正則表達式、精確匹配和自定義函數等策略,根據預期結果驗證模型輸出。", "columnCase": "案例", "columnStatus": "狀態", "columnLatency": "延遲", @@ -8522,16 +8522,16 @@ "searchSuitesPlaceholder": "搜尋套件...", "passSuffix": "通過", "casesCount": "{count, plural, one {# 個案例} other {# 個案例}}", - "runEval": "執行評估", - "runAllSuites": "全部執行", - "runAllRunning": "正在全部執行...", - "runAllProgress": "正在執行 {current}/{total}:{name}", + "runEval": "運行評估", + "runAllSuites": "全部運行", + "runAllRunning": "正在全部運行...", + "runAllProgress": "正在運行 {current}/{total}:{name}", "runAllFailedSuites": "{count, plural, one {# 個套件失敗} other {# 個套件失敗}}", - "runAllCompleted": "已執行 {suites} 個套件 — {passed} 個通過,{failed} 個失敗", - "runAllCompletedWithFailures": "已執行 {completed} 個套件;{failedSuites} 個執行失敗", - "runningProgress": "正在執行 {current}/{total}...", + "runAllCompleted": "已運行 {suites} 個套件— {passed} 個通過,{failed} 個失敗", + "runAllCompletedWithFailures": "已運行 {completed} 個套件;{failedSuites} 個運行失敗", + "runningProgress": "正在運行 {current}/{total}...", "passRate": "通過率", - "summaryBreakdown": "{passed} 通過 · {failed} 失敗 · {total} 總計", + "summaryBreakdown": "{passed} 通過· {failed} 失敗· {total} 總計", "passedIconLabel": "✅ 通過", "failedIconLabel": "❌ 失敗", "resultPassed": "已通過", @@ -8539,34 +8539,34 @@ "expandResult": "展開結果詳情", "collapseResult": "摺疊結果詳情", "detailsContains": "包含:“{term}”", - "detailsRegex": "正規表示式:{pattern}", + "detailsRegex": "正則表達式:{pattern}", "detailsExpected": "預期:“{expected}”", "expectedOutputLabel": "預期輸出", "noResultsYet": "還沒有結果", "testCasesCount": "測試用例 ({count})", "noTestCasesDefined": "沒有定義測試用例", - "runEvalHint": "點選“執行評測”即可對你的 LLM 端點執行所有案例。每次測試都會通過 OmniRoute 傳送真實請求。", + "runEvalHint": "點擊“運行評測”即可對你的LLM端點執行所有案例。每次測試都會通過OmniRoute發送真實請求。", "notifyNoTestCases": "沒有為此套件定義測試用例", "notifyAllCasesPassed": "所有 {total} 案例均已通過 ✅", "notifySomeCasesFailed": "{passed}/{total} 通過,{failed} 失敗", - "notifyEvalRunFailed": "評估執行失敗", + "notifyEvalRunFailed": "評估運行失敗", "notifyEvalTitle": "評估:{name}", "modelEvals": "模型評估", - "evalsHeroDescription": "通過執行預定義評測套件來測試和驗證你的 LLM 端點。每個套件都包含多個測試用例,會經由 OmniRoute 傳送真實提示,並將回應與預期標準進行比較,幫助你發現迴歸、比較模型,並確保跨提供者的回應質量。", + "evalsHeroDescription": "通過運行預定義評測套件來測試和驗證你的LLM端點。每個套件都包含多個測試用例,會經由OmniRoute發送真實提示,並將回應與預期標準比較,幫助你發現迴歸、比較模型,並確保跨提供者的回應質量。", "qualityValidation": "質量驗證", "modelComparison": "模型對比", "regressionDetection": "迴歸檢測", "latencyBenchmarks": "延遲基準", "modelLockouts": "模型鎖定", - "noLockouts": "當前沒有被鎖定的模型", - "activeSessions": "活躍會話", - "noSessions": "沒有活動會話", - "sessionsHint": "會話顯示為請求流經代理", - "sessionsTrackedHint": "通過請求指紋跟蹤 • 自動重新整理 5 秒", - "session": "會話", + "noLockouts": "當前沒有已鎖定的模型", + "activeSessions": "活躍工作階段", + "noSessions": "沒有活動工作階段", + "sessionsHint": "工作階段顯示為請求流經代理", + "sessionsTrackedHint": "通過請求指紋跟蹤 • 自動刷新 5 秒", + "session": "工作階段", "age": "年齡", "requests": "請求", - "connection": "連線方式", + "connection": "連接方式", "durationMillisecondsShort": "{value} 毫秒", "durationSecondsShort": "{value} 秒", "durationMinutesShort": "{value} 分", @@ -8574,24 +8574,24 @@ "reasonSeparator": "-", "notAvailableSymbol": "-", "providerLimits": "提供者限制", - "noProviders": "沒有連線提供者", - "connectProvidersForQuota": "通過 OAuth 連線提供者,以跟蹤 API 配額限制和使用情況。", - "accountsCount": "{count, plural, one {# 個帳戶} other {# 個帳戶}}", + "noProviders": "沒有連接提供者", + "connectProvidersForQuota": "通過OAuth連接提供者,以跟蹤API配額限制和使用情況。", + "accountsCount": "{count, plural, one {# 個賬戶} other {# 個賬戶}}", "filteredFromCount": "(從 {count} 過濾)", - "autoRefresh": "自動重新整理", - "refreshAll": "全部重新整理", + "autoRefresh": "自動刷新", + "refreshAll": "全部刷新", "loadingQuotas": "正在載入...", - "showMoreQuotas": "顯示另外 {count} 個", - "showLessQuotas": "顯示較少", - "hideQuotaRow": "隱藏此配額列", - "showQuotaRow": "顯示此配額列", + "showMoreQuotas": "再顯示 {count} 個", + "showLessQuotas": "顯示更少", + "hideQuotaRow": "隱藏此配額行", + "showQuotaRow": "顯示此配額行", "hiddenQuotaRowsLabel": "已隱藏:", "quotaVisibilityUpdateFailed": "更新配額可見性失敗", - "account": "帳戶", + "account": "賬戶", "modelQuotas": "模型配額", - "lastUsed": "最近重新整理", + "lastUsed": "最近刷新", "actions": "操作", - "refreshQuota": "重新整理配額", + "refreshQuota": "刷新配額", "today": "今天", "tomorrow": "明天", "dayTimeFormat": "{day}、{time}", @@ -8599,14 +8599,14 @@ "notApplicable": "不適用", "rawPlanWithValue": "原始計劃:{plan}", "noPlanFromProvider": "提供者沒有計劃", - "tokenExpiresIn": "權杖在 {time} 後過期", - "tokenExpired": "權杖已過期", + "tokenExpiresIn": "令牌在 {time} 後過期", + "tokenExpired": "令牌已過期", "noQuotaData": "無配額資料", "cardExpand": "展開", "cardCollapse": "收起", "moreQuotas": "還有 {count} 項", "ungrouped": "未分組", - "viewFlat": "平鋪檢視", + "viewFlat": "平鋪視圖", "viewByEnvironment": "按環境分組", "noQuotaDataAvailable": "無可用配額資料", "noAccountsForTierFilter": "未找到適用於層過濾器的帳戶", @@ -8628,131 +8628,131 @@ "filterTierLabel": "層級", "purchaseAll": "全部", "purchaseOauthSub": "訂閱", - "purchaseOauthFree": "OAuth 免費", - "purchaseApiKey": "API 金鑰", + "purchaseOauthFree": "OAuth免費", + "purchaseApiKey": "API Key", "creditsLabel": "額度", "creditBalanceHint": "剩餘額度", "unlimitedLabel": "無限", - "refreshing": "重新整理中", + "refreshing": "刷新中", "resetsIn": "重置倒計時", - "usdCost": "USD 成本", + "usdCost": "美元成本", "editCutoffs": "編輯截止值", - "forceRefresh": "立即重新整理", + "forceRefresh": "立即刷新", "resetCreditsLabel": "重置額度", "redeemResetCredit": "兌換重置", - "manageResetCredits": "檢視額度", - "viewResetCredits": "檢視重置額度", - "resetCreditsModalTitle": "Codex 重置額度", - "resetCreditsModalExplainer": "額度依到期日排序。自動兌換一律使用最先到期的額度。", + "manageResetCredits": "查看額度", + "viewResetCredits": "查看重置額度", + "resetCreditsModalTitle": "Codex重置額度", + "resetCreditsModalExplainer": "額度按過期時間排序。自動兌換將始終優先使用最先過期的額度。", "resetCreditsLoadFailed": "載入重置額度失敗", - "resetCreditsDetailsUnavailable": "額度詳細資料目前無法使用。請重新整理後再試一次。", - "noResetCreditsAvailable": "目前沒有可用的重置額度。", - "resetCreditDefaultTitle": "完整重置", - "resetCreditExpiresFirst": "優先到期", - "resetCreditExpiresAt": "到期日 {date}", - "resetCreditNoExpiry": "無到期日", + "resetCreditsDetailsUnavailable": "額度詳情目前不可用。請刷新並重試。", + "noResetCreditsAvailable": "沒有可用的重置額度。", + "resetCreditDefaultTitle": "完全重置", + "resetCreditExpiresFirst": "最先過期", + "resetCreditExpiresAt": "過期時間 {date}", + "resetCreditNoExpiry": "無過期日期", "redeemThisResetCredit": "兌換", - "confirmRedeemResetCreditTitle": "要兌換此重置額度嗎?", - "confirmRedeemResetCredit": "兌換後將立即重置符合資格的 Codex 用量區間,並永久消耗此額度。", + "confirmRedeemResetCreditTitle": "兌換此重置額度?", + "confirmRedeemResetCredit": "兌換將立即重置符合條件的Codex使用窗口,並永久消耗此額度。", "confirmRedeemResetCreditButton": "兌換額度", "resetCreditRedeemed": "重置已兌換", "resetCreditRedeemFailed": "兌換重置額度失敗", - "suiteBuilderSaveFailed": "儲存套件失敗", + "suiteBuilderSaveFailed": "保存套件失敗", "clone": "克隆", - "exportSuite": "匯出", - "importSuite": "匯入", - "suiteExported": "套件已匯出", - "suiteExportFailed": "匯出套件失敗", - "suiteImportReady": "套件匯入已載入,等待檢查", - "suiteImportFailed": "匯入套件失敗", - "suiteImportInvalid": "無效的 eval 套件 JSON", + "exportSuite": "導出", + "importSuite": "導入", + "suiteExported": "套件已導出", + "suiteExportFailed": "導出套件失敗", + "suiteImportReady": "套件導入已載入,等待檢查", + "suiteImportFailed": "導入套件失敗", + "suiteImportInvalid": "無效的eval套件JSON", "suiteBuilderCloneSuffix": "副本", - "suiteBuilderImportedSuite": "已匯入套件", + "suiteBuilderImportedSuite": "已導入套件", "scorecardTitle": "記分卡", - "evalApiKey": "API key", + "evalApiKey": "API Key", "scorecardPassRate": "通過率", "targetTypeModel": "模型", "actualOutputLabel": "實際輸出", "evalTargetHint": "選擇要評估的模型或組合。", - "suiteBuilderDeleted": "Suite 刪除成功", + "suiteBuilderDeleted": "Suite刪除成功", "suiteBuilderCaseCardHint": "定義輸入提示和預期輸出標準。", "nextResetUtc": "下次重置(UTC)", - "scorecardHint": "彙總所有 Evaluation Suite 的通過率。", - "suiteLatestRunsHint": "此套件最近的評估執行。", - "saving": "正在儲存", + "scorecardHint": "彙總所有Evaluation Suite的通過率。", + "suiteLatestRunsHint": "此套件最近的評估運行。", + "saving": "正在保存", "suiteBuilderCaseModelLabel": "模型(可選)", - "evalControlsTitle": "Evaluation 控制項", - "suiteBuilderEditTitle": "編輯 Evaluation Suite", + "evalControlsTitle": "Evaluation控制項", + "suiteBuilderEditTitle": "編輯Evaluation Suite", "suiteBuilderCaseStrategyLabel": "驗證策略", "notifySelectDifferentCompareTarget": "請選擇不同的比較目標", - "recentRunsHint": "正在顯示最近的評估執行。點選某次執行可檢視詳細結果。", + "recentRunsHint": "正在顯示最近的評估運行。點擊某次運行可查看詳細結果。", "evalCompareHint": "可選擇與第二個目標比較結果。", - "suiteBuilderCaseInvalid": "此 Case 存在驗證錯誤,請先修復再儲存。", - "historyEmpty": "暫無 Evaluation 歷史", - "suiteBuilderUpdated": "Suite 更新成功", + "suiteBuilderCaseInvalid": "此Case存在驗證錯誤,請先修復再保存。", + "historyEmpty": "暫無Evaluation歷史", + "suiteBuilderUpdated": "Suite更新成功", "resetInterval": "重置間隔", - "suiteBuilderCreateTitle": "建立評估套件", + "suiteBuilderCreateTitle": "創建評估套件", "activePeriodSpend": "當前週期支出", - "evalApiKeyHint": "選擇用於評估請求的 API 金鑰。", + "evalApiKeyHint": "選擇用於評估請求的API Key。", "evalCompareOptional": "對比(可選)", "suiteBuilderDeleteFailed": "刪除套件失敗", "suiteBuilderCaseSystemPromptPlaceholder": "可選系統指令...", "scorecardCases": "Case", - "runCompletedWithScore": "Evaluation 已完成 — 通過率 {score}%", + "runCompletedWithScore": "Evaluation已完成—通過率 {score}%", "suiteBuilderCustomBadge": "自定義", - "targetSuiteDefaults": "Suite 預設值", + "targetSuiteDefaults": "Suite預設值", "suiteBuilderDeleteConfirm": "確定要刪除此套件嗎?此操作無法撤銷。", - "suiteBuilderNameLabel": "Suite 名稱", + "suiteBuilderNameLabel": "Suite名稱", "scorecardSuites": "套件", "evalCompareTarget": "對比目標", - "suiteBuilderCaseModelPlaceholder": "例如 gpt-4o-mini", - "evalControlsHint": "設定評估目標和 API 金鑰,然後執行套件以驗證模型質量。", - "recentRunsTitle": "最近執行", + "suiteBuilderCaseModelPlaceholder": "例如gpt-4o-mini", + "evalControlsHint": "設定評估目標和API Key,然後運行套件以驗證模型質量。", + "recentRunsTitle": "最近運行", "suiteBuilderCaseSystemPromptLabel": "系統提示", - "suiteBuilderCaseExpectedPlaceholder": "例如 def fibonacci", - "suiteBuilderCaseExpectedPlaceholderContains": "例如 def fibonacci", - "suiteBuilderCaseExpectedPlaceholderExact": "貼上精確的預期回應", + "suiteBuilderCaseExpectedPlaceholder": "例如def fibonacci", + "suiteBuilderCaseExpectedPlaceholderContains": "例如def fibonacci", + "suiteBuilderCaseExpectedPlaceholderExact": "粘貼精確的預期回應", "suiteBuilderCaseExpectedPlaceholderRegex": "例如 ^\\s*\\{.*\\}\\s*$", - "suiteBuilderCaseExpectedHintRegex": "使用不帶包裹斜槓的 JavaScript 正規表示式。", - "suiteBuilderNamePlaceholder": "例如 Coding Quality Suite", - "suiteBuilderAddCase": "新增 Case", + "suiteBuilderCaseExpectedHintRegex": "使用不帶包裹斜槓的JavaScript正則表達式。", + "suiteBuilderNamePlaceholder": "例如Coding Quality Suite", + "suiteBuilderAddCase": "新增Case", "cancel": "取消", "evalTarget": "目標", - "suiteBuilderCaseNameLabel": "Case 名稱", + "suiteBuilderCaseNameLabel": "Case名稱", "weeklyLimitUsd": "每週限額(USD)", - "suiteBuilderCaseUserPromptPlaceholder": "例如用 Python 寫一個 fibonacci 函式", - "suiteBuilderNameRequired": "Suite 名稱為必填項", - "suiteBuilderCaseUserPromptLabel": "使用者 Prompt", + "suiteBuilderCaseUserPromptPlaceholder": "例如用Python寫一個fibonacci函數", + "suiteBuilderNameRequired": "Suite名稱為必填項", + "suiteBuilderCaseUserPromptLabel": "用戶Prompt", "daily": "每日", "resultErrorLabel": "錯誤", - "suiteBuilderBuiltInBadge": "內建", + "suiteBuilderBuiltInBadge": "內置", "suiteBuilderCaseCardTitle": "測試用例", "suiteBuilderDuplicateCase": "複製", "weeklyLimitPlaceholder": "例如 50.00", "suiteBuilderCaseTagsHint": "用於組織測試用例的逗號分隔標籤。", "notifyEvalRunFailedWithReason": "評估失敗:{reason}", "weekly": "每週", - "runEvalRunning": "正在執行 Evaluation...", + "runEvalRunning": "正在運行Evaluation...", "delete": "刪除", "resetTimeUtc": "重置時間(UTC)", "evalApiKeyAuto": "自動(使用預設值)", "suiteBuilderDescriptionPlaceholder": "可選:描述此套件測試的內容...", "targetComparisonTitle": "目標對比", - "save": "儲存", - "suiteBuilderCreated": "Suite 建立成功", - "suiteLatestRuns": "最新執行", + "save": "保存", + "suiteBuilderCreated": "Suite創建成功", + "suiteLatestRuns": "最新運行", "suiteBuilderCaseExpectedLabel": "期望值", "historyLatency": "延遲", - "suiteBuilderCaseTagsPlaceholder": "例如 coding, python", + "suiteBuilderCaseTagsPlaceholder": "例如coding, python", "targetTypeCombo": "組合", "scorecardPassed": "已通過", "suiteBuilderCaseTagsLabel": "標籤", - "suiteBuilderNewSuite": "新建 Suite", + "suiteBuilderNewSuite": "新建Suite", "notifyEvalLoadFailed": "載入評估資料失敗", "notConfigured": "未設定", - "suiteBuilderCaseNamePlaceholder": "例如 Python 斐波那契測試", + "suiteBuilderCaseNamePlaceholder": "例如Python斐波那契測試", "intervalLabel": "間隔", - "suiteBuilderCreateAction": "建立套件", + "suiteBuilderCreateAction": "創建套件", "suiteBuilderCasesHint": "每個用例都會發送一個提示並驗證回應。", "suiteBuilderUpdatedAt": "更新時間", "errorBadge": "錯誤", @@ -8763,67 +8763,67 @@ "weeklyLimitSummary": "每週預算限額摘要", "suiteBuilderDescriptionLabel": "描述", "targetComparisonHint": "在目標之間並排比較評估結果。", - "compareCompletedWithScore": "對比已完成 — 通過率 {score}%", - "staleQuotaTooltip": "上次重新整理失敗 — 顯示快取資料", + "compareCompletedWithScore": "對比已完成—通過率 {score}%", + "staleQuotaTooltip": "上次刷新失敗—顯示快取資料", "quotaThresholdLabel": "最小剩餘時間", "quotaCutoffsColumnHelp": "當剩餘配額降至此百分比或以下時停止請求。", "quotaCutoffsButtonDefault": "預設", "quotaCutoffsButtonHelp": "編輯此帳戶的最小剩餘配額截止值。", - "quotaCutoffsButtonDisabled": "此帳戶尚無可用的配額視窗。", - "deactivateAccount": "停用帳戶(停止路由)", - "activateAccount": "啟用帳戶(恢復路由)", - "accountActivated": "帳戶已啟用", - "accountDeactivated": "帳戶已停用", - "toggleActiveFailed": "更新帳戶狀態失敗", + "quotaCutoffsButtonDisabled": "此帳戶尚無可用的配額窗口。", + "deactivateAccount": "停用賬戶(停止路由)", + "activateAccount": "啟用賬戶(恢復路由)", + "accountActivated": "賬戶已啟用", + "accountDeactivated": "賬戶已停用", + "toggleActiveFailed": "更新賬戶狀態失敗", "quotaCutoffsTitle": "{name} ({provider}) 的配額截止", - "quotaCutoffsExplainer": "覆蓋停止為每個配額視窗選擇此帳戶的最小剩餘配額百分比。留空以繼承提供程式預設值。", + "quotaCutoffsExplainer": "覆蓋停止為每個配額窗口選擇此帳戶的最小剩餘配額百分比。留空以繼承提供程式預設值。", "quotaCutoffsDefaultHint": "預設最小剩餘量:{default}%", "quotaCutoffsResetAll": "全部重置", - "quotaCutoffsNoWindows": "此帳戶尚無可用的配額視窗。", + "quotaCutoffsNoWindows": "此帳戶尚無可用的配額窗口。", "quotaThresholdInvalid": "輸入 0 到 100 之間的整數。", "budgetKpiToday": "今天", "budgetKpiThisMonth": "這個月", - "budgetKpiProjEom": "專案結束", - "budgetKpiBlocked": "被阻止", + "budgetKpiProjEom": "項目結束", + "budgetKpiBlocked": "已阻止", "budgetKpiAtRisk": "有風險", "budgetKpiActiveKeys": "活動鍵", "budgetPageTitle": "預算", - "budgetPageDescription": "為每個 API 金鑰設定每日、每週和每月的支出限制。", - "budgetTemplateStorageHint": "共 {count} 個模板 · 透過 localStorage 編輯:", + "budgetPageDescription": "為每個API Key設定每日、每週和每月支出限制。", + "budgetTemplateStorageHint": "{count, plural, one {# 個模板} other {# 個模板}} ·通過localStorage編輯:", "budgetAboveLimitShort": "超出限制 ⚠", - "budgetOnTrackShort": "正常範圍", - "budgetAtOrAboveWarning": "≥ 警告閾值", + "budgetOnTrackShort": "正常", + "budgetAtOrAboveWarning": "≥ 警示閾值", "budgetTemplates": "模板", - "budgetSelectKeysFirst": "請先選取金鑰再套用", - "budgetApplyToSelected": "套用到 {count} 個選取金鑰", - "budgetSelectedTemplateHint": "已選取 {count} 個 · 點擊模板以套用", + "budgetSelectKeysFirst": "請先選擇金鑰以應用", + "budgetApplyToSelected": "應用到 {count, plural, one {# 個已選金鑰} other {# 個已選金鑰}}", + "budgetSelectedTemplateHint": "{count, plural, one {已選擇 # 個} other {已選擇 # 個}} ·點擊模板以應用", "budgetTemplateMonthlyAmount": "${amount}/月", "budgetTemplateDailyAmount": "${amount}/天", - "budgetNoKeysSelected": "未選取任何金鑰", - "budgetTemplateApplied": "已將「{template}」套用到 {count} 個金鑰", - "budgetTemplateApplyFailed": "套用模板失敗", + "budgetNoKeysSelected": "未選擇任何金鑰", + "budgetTemplateApplied": "已將 \"{template}\" 應用於 {count, plural, one {# 個金鑰} other {# 個金鑰}}", + "budgetTemplateApplyFailed": "應用模板失敗", "budgetTemplateNames": { - "tpl-prod": "生產", - "tpl-dev": "開發", + "tpl-prod": "生產環境", + "tpl-dev": "開發環境", "tpl-ci": "CI" }, "budgetStatus": { "all": "全部", - "blocked": "已封鎖", - "alerting": "警示中", + "blocked": "已攔截", + "alerting": "告警中", "warning": "警告", "safe": "安全", "no-limit": "無限制" }, "budgetColumnKey": "金鑰", - "budgetColumnToday": "今日", - "budgetColumnMonth": "月份", + "budgetColumnToday": "今天", + "budgetColumnMonth": "本月", "budgetColumnStatus": "狀態", "budgetSearchKeysPlaceholder": "搜尋鍵...", "budgetSortPctUsed": "排序:使用百分比 ↓", "budgetSortTodayDollar": "排序:今日$ ↓", "budgetSortMonthDollar": "排序: 月 $ ↓", - "budgetSortNameAZ": "排序: 名稱 (A–Z)", + "budgetSortNameAZ": "排序:名稱 (A–Z)", "budgetColDailyLim": "每日限制", "budgetColMonthlyLim": "每月限制", "budgetColUsedPct": "使用百分比", @@ -8835,15 +8835,15 @@ "budgetProjectedEndOfMonth": "預計月底", "budgetByProvider": "按提供者", "budgetProjection": "預測", - "budgetAboveMonthlyLimit": "⚠ 超出 {limit}/月", - "budgetCostBreakdown30d": "成本明細(30 天)", + "budgetAboveMonthlyLimit": "⚠ 超過 {limit}/月", + "budgetCostBreakdown30d": "費用明細 (30 天)", "budgetLimits": "限制", "budgetResetDaily": "每日", "budgetResetWeekly": "每週", "budgetResetMonthly": "每月", "budgetNextReset": "下次重置", - "budgetHardCapComingSoon": "上限政策和電子郵件警示即將推出", - "unknownProvider": "未知的提供者", + "budgetHardCapComingSoon": "硬限制策略和郵件告警即將推出", + "unknownProvider": "未知提供者", "budgetDailyDollar": "每日 $", "budgetWeeklyDollar": "每週 $", "budgetMonthlyDollar": "每月 $", @@ -8852,28 +8852,28 @@ "quotaTableRefreshing": "⟳ 清爽...", "noSpendLast30Days": "過去 30 天內沒有消費", "updatedShort": "更新於", - "lastRefreshed": "上次重新整理", + "lastRefreshed": "上次刷新", "providerQuota": "提供者配額", - "providerQuotaHomeHint": "已連線帳戶的即時狀態" + "providerQuotaHomeHint": "已連接賬戶的實時狀態" }, "modals": { "waitingAuth": "等待授權", "verificationUrl": "驗證網址", - "yourCode": "你的程式碼", - "remoteAccess": "遠端訪問:", - "connectedSuccess": "連線成功!", - "connectionFailed": "連線失敗", + "yourCode": "你的代碼", + "remoteAccess": "遠程訪問:", + "connectedSuccess": "連接成功!", + "connectionFailed": "連接失敗", "chooseAuthMethod": "選擇您的身份驗證方法:", - "awsBuilderId": "AWS 構建器 ID", - "awsIamIdentity": "AWS IAM 身份中心", - "googleAccount": "Google 帳戶", - "githubAccount": "GitHub 帳戶", - "importToken": "匯入權杖", - "pasteToken": "從 Kiro IDE 貼上重新整理權杖。", - "awsRegion": "AWS 區域", - "autoDetecting": "自動檢測權杖...", - "readingFromCache": "從 AWS SSO 快取中讀取", - "readingFromCursor": "從 Cursor IDE 資料庫讀取", + "awsBuilderId": "AWS構建器ID", + "awsIamIdentity": "AWS IAM身份中心", + "googleAccount": "Google帳戶", + "githubAccount": "GitHub帳戶", + "importToken": "導入令牌", + "pasteToken": "從Kiro IDE粘貼刷新令牌。", + "awsRegion": "AWS區域", + "autoDetecting": "自動檢測令牌...", + "readingFromCache": "從AWS SSO快取中讀取", + "readingFromCursor": "從Cursor IDE資料庫讀取", "initializing": "正在初始化...", "pricingConfig": "定價設定", "loadingPricing": "正在載入定價資料...", @@ -8884,11 +8884,11 @@ "loggers": { "allProviders": "所有提供者", "allModels": "所有模型", - "allAccounts": "所有帳戶", - "allApiKeys": "所有 API 金鑰", + "allAccounts": "所有賬戶", + "allApiKeys": "所有API Key", "allTypes": "所有類型", "allLevels": "所有級別", - "modelAZ": "模型 A-Z", + "modelAZ": "模型A-Z", "modelZA": "Z-A型", "loadingLogs": "正在載入日誌...", "loadingProxyLogs": "正在載入代理日誌...", @@ -8904,13 +8904,13 @@ }, "stats": { "usageOverview": "使用概述", - "outputTokens": "輸出 Tokens", + "outputTokens": "輸出Tokens", "totalCost": "總成本", "usageByModel": "按模型使用", "usageByAccount": "按帳戶使用情況", "failedToLoad": "無法載入使用情況統計資訊。", - "tokenHealth": "權杖健康", - "totalOAuth": "總 OAuth", + "tokenHealth": "令牌健康", + "totalOAuth": "總OAuth", "healthy": "健康", "warning": "警告", "errored": "出錯了", @@ -8927,41 +8927,41 @@ "signIn": "登入", "enterPassword": "輸入您的密碼以繼續", "password": "密碼", - "unifiedProxy": "統一 AI API 代理", - "unifiedAiApiProxy": "統一 AI API 代理", - "unifiedAiApiProxyDesc": "通過單個端點將請求路由到多個 AI 提供者。內建負載均衡、故障轉移和使用情況跟蹤。", + "unifiedProxy": "統一AI API代理", + "unifiedAiApiProxy": "統一AI API代理", + "unifiedAiApiProxyDesc": "通過單個端點將請求路由到多個AI提供者。內置負載均衡、故障轉移和使用情況跟蹤。", "passwordNotEnabled": "未啟用密碼保護", "loading": "正在載入...", "invalidPassword": "密碼無效", "errorOccurredRetry": "發生錯誤。請再試一次。", - "configureInstance": "開始設定你的 OmniRoute 例項", - "runOnboardingWizard": "執行入門嚮導來設定您的密碼並連線您的第一個 AI 提供者。", + "configureInstance": "開始設定你的OmniRoute實例", + "runOnboardingWizard": "運行入門嚮導來設定您的密碼並連接您的第一個AI提供者。", "startOnboarding": "開始引導", - "secureYourInstance": "保護您的例項", - "setPasswordDescription": "設定密碼以保護您的儀表板並保護您的 API 端點免遭未經授權的訪問。", + "secureYourInstance": "保護您的實例", + "setPasswordDescription": "設定密碼以保護您的看板並保護您的API端點免遭未經授權的訪問。", "configurePassword": "設定密碼", "continue": "繼續", - "windowWillClose": "該視窗將自動關閉...", + "windowWillClose": "該窗口將自動關閉...", "closeTabNow": "您現在可以關閉此選項卡。", - "copyUrlManual": "請複製位址列中的 URL 並將其貼上到應用程式中。", - "accessDeniedDescription": "您無權訪問此資源。檢查您的 API 金鑰或聯絡管理員。", - "goToDashboard": "轉到儀表板", + "copyUrlManual": "請複製地址欄中的URL並將其粘貼到應用程式中。", + "accessDeniedDescription": "您無權訪問此資源。檢查您的API Key或聯繫管理員。", + "goToDashboard": "轉到看板", "featureMultiProviderTitle": "多提供者", - "featureMultiProviderDesc": "OpenAI、Anthropic、Google 等", + "featureMultiProviderDesc": "OpenAI、Anthropic、Google等", "featureLoadBalancingTitle": "負載均衡", - "featureLoadBalancingDesc": "智慧分配請求", + "featureLoadBalancingDesc": "智能分配請求", "featureUsageTrackingTitle": "使用情況追蹤", - "featureUsageTrackingDesc": "監控成本和 Tokens", + "featureUsageTrackingDesc": "監控成本和Tokens", "resetPassword": "重置密碼", - "resetDescription": "選擇一種方法來恢復對儀表板的訪問許可權", - "stopServer": "停止 OmniRoute 伺服器", + "resetDescription": "選擇一種方法來恢復對看板的訪問權限", + "stopServer": "停止OmniRoute伺服器", "processing": "處理中...", "pleaseWait": "我們正在完成授權,請稍候。", "authSuccess": "授權成功!", "copyUrl": "複製此網址", - "accessDenied": "訪問被拒絕", - "methodCliTitle": "方法 1:CLI 重置", - "methodCliDescription": "在執行 OmniRoute 的伺服器上執行以下命令:", + "accessDenied": "訪問已拒絕", + "methodCliTitle": "方法 1:CLI重置", + "methodCliDescription": "在運行OmniRoute的伺服器上運行以下命令:", "methodCliHint": "這將提示您設定新密碼。必須首先停止伺服器。", "methodManualTitle": "方法 2:手動重置", "methodManualDescription": "從資料庫中刪除密碼並在啟動時設定新密碼:", @@ -8969,92 +8969,92 @@ "fileLabelSuffix": "檔案:", "newPasswordPlaceholder": "your_new_password", "deleteSettingsFile": "刪除", - "orRemovePasswordHashField": "或刪除 passwordHash 欄位", - "restartServerWithNewPassword": "重啟伺服器,系統會使用新密碼", + "orRemovePasswordHashField": "或刪除passwordHash欄位", + "restartServerWithNewPassword": "重新啟動伺服器,系統會使用新密碼", "backToLogin": "返回登入", "forgotPassword": "忘記密碼?", - "continueWithOidc": "使用 OIDC 繼續", - "defaultPasswordHint": "預設密碼:CHANGEME(除非已設定 INITIAL_PASSWORD)", + "continueWithOidc": "使用OIDC繼續", + "defaultPasswordHint": "預設密碼:CHANGEME(除非已設定INITIAL_PASSWORD)", "Authorization": "Authorization", "Content-Disposition": "Content-Disposition", "waitingForAuthorization": "正在等待授權...", - "waitingForGoogleAuthorization": "正在等待 Google 授權...", - "waitingForOpenAIAuthorization": "正在等待 OpenAI 授權...", - "waitingForAntigravityAuthorization": "正在等待 Antigravity 授權...", - "waitingForQoderAuthorization": "正在等待 Qoder 授權...", - "exchangingCodeForTokens": "正在用授權碼換取 Tokens...", - "nodeIncompatibleTitle": "不相容的 Node.js 版本", - "nodeIncompatibleDesc": "你當前執行的是 Node.js {version},它不在 OmniRoute 支援的安全執行時策略內。請使用已打補丁的 Node.js 20.x 或 22.x LTS 版本。", - "nodeIncompatibleFixLabel": "修復:安裝已打補丁的 Node.js 22 LTS 版本", - "nodeIncompatibleHint": "OmniRoute 要求 Node.js 22.22.2+(22.x LTS)或 24.0.0+(24.x LTS)。為保證穩定性,建議使用 Node 24 LTS。" + "waitingForGoogleAuthorization": "正在等待Google授權...", + "waitingForOpenAIAuthorization": "正在等待OpenAI授權...", + "waitingForAntigravityAuthorization": "正在等待Antigravity授權...", + "waitingForQoderAuthorization": "正在等待Qoder授權...", + "exchangingCodeForTokens": "正在用授權碼換取Tokens...", + "nodeIncompatibleTitle": "不相容的Node.js版本", + "nodeIncompatibleDesc": "你當前運行的是Node.js {version},它不在OmniRoute支援的安全運行時策略內。請使用已打補丁的Node.js 20.x或 22.x LTS版本。", + "nodeIncompatibleFixLabel": "修復:安裝已打補丁的Node.js 22 LTS版本", + "nodeIncompatibleHint": "OmniRoute要求Node.js 22.22.2+(22.x LTS)或 24.0.0+(24.x LTS)。為保證穩定性,建議使用Node 24 LTS。" }, "landing": { "brandName": "OmniRoute", "navigateHome": "導航至主頁", - "toggleMenu": "切換選單", + "toggleMenu": "切換菜單", "featuresLink": "特點", - "docsLink": "檔案", + "docsLink": "文件", "github": "GitHub", "versionLive": "v1.0 現已上線", "oneEndpoint": "一個端點", - "allProviders": "所有 AI 提供者", - "heroDescription": "帶 Web 儀表板的 AI 端點代理,是 CLIProxyAPI 的 JavaScript 版本。可與 Claude Code、OpenAI Codex、Cline、RooCode 等 CLI 工具無縫配合。", + "allProviders": "所有AI提供者", + "heroDescription": "帶Web看板的AI端點代理,是CLIProxyAPI的JavaScript版本。可與Claude Code、OpenAI Codex、Cline、RooCode等CLI工具無縫配合。", "getStarted": "開始使用", - "viewOnGithub": "在 GitHub 上檢視", + "viewOnGithub": "在GitHub上查看", "powerfulFeatures": "強大的功能", - "featuresSubtitle": "在一個地方管理 AI 基礎設施所需的一切,專為規模化而構建。", + "featuresSubtitle": "在一個地方管理AI基礎設施所需的一切,專為規模化而構建。", "featureUnifiedEndpointTitle": "統一端點", - "featureUnifiedEndpointDesc": "通過單一標準 API URL 訪問所有提供者。", + "featureUnifiedEndpointDesc": "通過單一標準API URL訪問所有提供者。", "featureEasySetupTitle": "輕鬆設定", - "featureEasySetupDesc": "使用 npx 命令在幾分鐘內啟動並執行。", + "featureEasySetupDesc": "使用npx命令在幾分鐘內啟動並運行。", "featureModelFallbackTitle": "模型回退", "featureModelFallbackDesc": "發生故障或高延遲時自動切換提供者。", "featureUsageTrackingTitle": "使用情況追蹤", "featureUsageTrackingDesc": "所有模型的詳細分析和成本監控。", - "featureOAuthApiKeysTitle": "OAuth 與 API 金鑰", + "featureOAuthApiKeysTitle": "OAuth與API Key", "featureOAuthApiKeysDesc": "在一個保管庫中安全地管理憑據。", "featureCloudSyncTitle": "雲同步", - "featureCloudSyncDesc": "立即跨裝置同步您的設定。", - "featureCliSupportTitle": "CLI 支援", - "featureCliSupportDesc": "適用於 Claude Code、Codex、Cline、Cursor 等工具。", - "featureDashboardTitle": "儀表板", - "featureDashboardDesc": "用於即時流量分析的視覺化儀表板。", - "howItWorks": "OmniRoute 工作原理", - "howItWorksDescription": "資料從您的應用程式通過我們的智慧路由層無縫流向最適合該工作的提供者。", - "howItWorksStep1Title": "1. CLI 和 SDK", - "howItWorksStep1Description": "您的請求從您最喜歡的工具或我們的統一 SDK 開始。只需更改基本 URL 即可。", - "howItWorksStep2Title": "2. OmniRoute 中樞", - "howItWorksStep2Description": "我們的引擎分析提示、檢查提供者的執行狀況以及最低延遲或成本的路線。", - "howItWorksStep3Title": "3. AI 提供者", - "howItWorksStep3Description": "請求會被立即轉發給 OpenAI、Anthropic、Gemini 或其他提供者完成處理。", + "featureCloudSyncDesc": "立即跨設備同步您的設定。", + "featureCliSupportTitle": "CLI支援", + "featureCliSupportDesc": "適用於Claude Code、Codex、Cline、Cursor等工具。", + "featureDashboardTitle": "看板", + "featureDashboardDesc": "用於實時流量分析的可視化看板。", + "howItWorks": "OmniRoute工作原理", + "howItWorksDescription": "資料從您的應用程式通過我們的智能路由層無縫流向最適合該工作的提供者。", + "howItWorksStep1Title": "1. CLI和SDK", + "howItWorksStep1Description": "您的請求從您最喜歡的工具或我們的統一SDK開始。只需更改基本URL即可。", + "howItWorksStep2Title": "2. OmniRoute中樞", + "howItWorksStep2Description": "我們的引擎分析提示、檢查提供者的運行狀況以及最低延遲或成本的路線。", + "howItWorksStep3Title": "3. AI提供者", + "howItWorksStep3Description": "請求會被立即轉發給OpenAI、Anthropic、Gemini或其他提供者完成處理。", "getStartedIn30Seconds": "30 秒內開始", - "getStartedDescription": "安裝 OmniRoute,通過 Web 儀表板設定你的提供者,然後開始路由 AI 請求。", - "installOmniRoute": "安裝 OmniRoute", - "installStepDescription": "執行 npx 命令立即啟動伺服器", - "openDashboard": "開啟儀表板", - "openDashboardStepDescription": "通過 Web 介面設定提供者和 API 金鑰", + "getStartedDescription": "安裝OmniRoute,通過Web看板設定你的提供者,然後開始路由AI請求。", + "installOmniRoute": "安裝OmniRoute", + "installStepDescription": "運行npx命令立即啟動伺服器", + "openDashboard": "打開看板", + "openDashboardStepDescription": "通過Web界面設定提供者和API Key", "routeRequests": "路由請求", - "routeRequestsStepDescription": "將您的 CLI 工具指向 {endpoint}", + "routeRequestsStepDescription": "將您的CLI工具指向 {endpoint}", "terminal": "終端", "copy": "複製", "copied": "✓ 已複製", - "startingOmniRoute": "正在啟動 OmniRoute...", + "startingOmniRoute": "正在啟動OmniRoute...", "serverRunningOnLabel": "伺服器運行於", - "dashboardLabel": "儀表板", + "dashboardLabel": "看板", "readyToRoute": "已準備好開始路由! ✓", - "configureProvidersNote": "📝 在儀表板中設定提供者或使用環境變數", + "configureProvidersNote": "📝 在看板中設定提供者或使用環境變量", "dataLocation": "資料位置:", "dataLocationMacLinux": "macOS/Linux:", "dataLocationWindows": "Windows:", "product": "產品", - "dashboardLink": "儀表板", + "dashboardLink": "看板", "changelog": "變更日誌", "resources": "資源", - "documentation": "檔案", + "documentation": "文件", "npm": "npm", "legal": "法律", - "mitLicense": "MIT 許可證", - "footerTagline": "AI 生成的統一端點。輕鬆連線、路由和管理您的 AI 提供者。", + "mitLicense": "MIT許可證", + "footerTagline": "AI生成的統一端點。輕鬆連接、路由和管理您的AI提供者。", "copyright": "© {year} OmniRoute。保留所有權利。", "flowToolClaudeCode": "Claude Code", "flowToolOpenAICodex": "OpenAI Codex", @@ -9064,14 +9064,14 @@ "flowProviderAnthropic": "Anthropic", "flowProviderGemini": "Gemini", "flowProviderGithubCopilot": "GitHub Copilot", - "interactiveDiagram": "可互動流程圖", - "ctaTitle": "準備好簡化你的 AI 基礎設施了嗎?", - "ctaDescription": "加入更多開發者,一起用 OmniRoute 簡化 AI 整合流程。開源且可免費開始使用。", + "interactiveDiagram": "可交互流程圖", + "ctaTitle": "準備好簡化你的AI基礎設施了嗎?", + "ctaDescription": "加入更多開發者,一起用OmniRoute簡化AI整合流程。開源且可免費開始使用。", "startFree": "免費開始", - "readDocumentation": "閱讀檔案" + "readDocumentation": "閱讀文件" }, "docs": { - "title": "檔案", + "title": "文件", "quickStart": "快速入門", "deploymentGuides": "部署指南", "features": "特點", @@ -9081,417 +9081,417 @@ "clientCompatibility": "客戶端相容性", "protocolsToc": "協議", "apiReference": "API參考", - "managementApiReference": "管理 API 參考", - "managementApiDescription": "用於代理登錄檔、作用域繫結以及舊版代理遷移的自動化介面。", + "managementApiReference": "管理API參考", + "managementApiDescription": "用於代理註冊表、作用域綁定以及舊版代理遷移的自動化接口。", "method": "方法", "path": "路徑", "notes": "註釋", - "modelPrefixes": "模型字首", - "prefix": "字首", + "modelPrefixes": "模型前綴", + "prefix": "前綴", "troubleshooting": "故障排除", "supportsChat": "支援聊天和回應端點。", - "oauthAutoRefresh": "支援自動重新整理 Token 的 OAuth 連線。", + "oauthAutoRefresh": "支援自動刷新Token的OAuth連接。", "fullStreaming": "所有模型都支援完整流式輸出。", - "docsLabel": "檔案", - "docsHeroDescription": "面向多提供者 LLM 的 AI 閘道器。一個端點即可統一接入 OpenAI、Anthropic、Gemini、GitHub Copilot、Claude Code、Cursor 等 20+ 提供者。", - "openDashboard": "開啟儀表板", + "docsLabel": "文件", + "docsHeroDescription": "面向多提供者LLM的AI網關。一個端點即可統一接入OpenAI、Anthropic、Gemini、GitHub Copilot、Claude Code、Cursor等 20+ 提供者。", + "openDashboard": "打開看板", "endpointPage": "端點頁面", "github": "GitHub", "reportIssue": "報告問題", "onThisPage": "在此頁面上", - "documentationVersion": "檔案 - v{version}", - "quickStartStep1Title": "1.安裝並執行", - "quickStartStep1Prefix": "執行", - "quickStartStep1Middle": "或者從 GitHub 克隆並執行", - "quickStartStep2Title": "2. 建立API金鑰", + "documentationVersion": "文件 - v{version}", + "quickStartStep1Title": "1.安裝並運行", + "quickStartStep1Prefix": "運行", + "quickStartStep1Middle": "或者從GitHub克隆並運行", + "quickStartStep2Title": "2. 創建API Key", "quickStartStep2Text": "轉至端點 -> 註冊金鑰。每個環境生成一個金鑰。", - "quickStartStep3Title": "3. 連線提供者", - "quickStartStep3Text": "通過 OAuth 登入、API 金鑰或免費套餐自動接入來新增提供者帳戶。", - "quickStartStep4Title": "4. 設定客戶端基本 URL", - "quickStartStep4Prefix": "將您的 IDE 或 API 客戶端指向", - "quickStartStep4Suffix": "例如使用提供者字首", + "quickStartStep3Title": "3. 連接提供者", + "quickStartStep3Text": "通過OAuth登入、API Key或免費套餐自動接入來新增提供者賬戶。", + "quickStartStep4Title": "4. 設定客戶端基本URL", + "quickStartStep4Prefix": "將您的IDE或API客戶端指向", + "quickStartStep4Suffix": "例如使用提供者前綴", "deploySetupTitle": "設定指南", - "deploySetupText": "OmniRoute 的分步安裝、環境設定和首次執行演練。", + "deploySetupText": "OmniRoute的分步安裝、環境設定和首次運行演練。", "deployElectronTitle": "電子桌面", - "deployElectronText": "在 Windows、macOS 和 Linux 上將 OmniRoute 作為本機桌面應用程式執行。", - "deployDockerTitle": "碼頭工人", - "deployDockerText": "使用 Docker Compose 進行容器化部署;為生產堆疊和 Kubernetes 做好準備。", - "deployVmTitle": "虛擬機器", - "deployVmText": "在任何 Linux VM 上自託管。包括 systemd 單元、日誌輪換和備份工具。", + "deployElectronText": "在Windows、macOS和Linux上將OmniRoute作為本機桌面應用程式運行。", + "deployDockerTitle": "Docker", + "deployDockerText": "使用Docker Compose進行容器化部署;為生產堆棧和Kubernetes做好準備。", + "deployVmTitle": "虛擬機", + "deployVmText": "在任何Linux VM上自託管。包括systemd單元、日誌輪換和備份工具。", "deployFlyTitle": "飛行大作戰", - "deployFlyText": "使用一個 Fly.toml 和一個部署命令部署到 Fly.io 邊緣執行時。", + "deployFlyText": "使用一個Fly.toml和一個部署命令部署到Fly.io邊緣運行時。", "deployPwaTitle": "漸進式網頁應用", - "deployPwaText": "在 Android、iOS 和桌面瀏覽器上將 OmniRoute 作為漸進式 Web 應用程式安裝。", + "deployPwaText": "在Android、iOS和桌面瀏覽器上將OmniRoute作為漸進式Web應用程式安裝。", "deployTermuxTitle": "Termux(Android)", - "deployTermuxText": "通過 Termux 在 Android 上以無介面模式執行 OmniRoute,並從移動瀏覽器訪問儀表盤。", + "deployTermuxText": "通過Termux在Android上以無界面模式運行OmniRoute,並從移動瀏覽器訪問看板。", "featureRoutingTitle": "多提供者路由", - "featureRoutingText": "通過單一 OpenAI 相容端點將請求路由到 30+ AI 提供者,支援聊天、Responses、音訊和影像 API。", + "featureRoutingText": "通過單一OpenAI相容端點將請求路由到 30+ AI提供者,支援聊天、Responses、音頻和圖像API。", "featureCombosTitle": "組合和平衡", - "featureCombosText": "使用後備鏈和平衡策略建立模型組合:迴圈、優先順序、隨機、最少使用和成本最佳化。", + "featureCombosText": "使用後備鏈和平衡策略創建模型組合:循環、優先級、隨機、最少使用和成本優化。", "featureUsageTitle": "使用情況和成本跟蹤", - "featureUsageText": "即時權杖計數、每個提供者/模型的成本計算以及按 API 金鑰和帳戶劃分的詳細使用情況細分。", - "featureAnalyticsTitle": "分析儀表板", - "featureAnalyticsText": "視覺化分析,包含隨時間變化的請求、權杖、錯誤、延遲、成本和模型受歡迎程度的圖表。", + "featureUsageText": "實時令牌計數、每個提供者/模型的成本計算以及按API Key和帳戶劃分的詳細使用情況細分。", + "featureAnalyticsTitle": "分析看板", + "featureAnalyticsText": "可視化分析,包含隨時間變化的請求、令牌、錯誤、延遲、成本和模型受歡迎程度的圖表。", "featureHealthTitle": "健康監測", - "featureHealthText": "即時健康檢查、提供者狀態、斷路器狀態以及具有指數退避功能的自動速率限制檢測。", + "featureHealthText": "實時健康檢查、提供者狀態、斷路器狀態以及具有指數退避功能的自動速率限制檢測。", "featureCliTitle": "CLI工具", - "featureCliText": "可在儀表板中管理 IDE 設定、匯出/匯入備份、發現 Codex 設定檔案並修改設定。", + "featureCliText": "可在看板中管理IDE設定、導出/導入備份、發現Codex設定檔並修改設定。", "featureSecurityTitle": "安全與策略", - "featureSecurityText": "API 金鑰身份驗證、IP 過濾、提示注入防護、域策略、會話管理和稽核日誌記錄。", + "featureSecurityText": "API Key身份驗證、IP過濾、提示注入防護、域策略、工作階段管理和審核日誌記錄。", "featureCloudSyncTitle": "雲同步", - "featureCloudSyncText": "將設定同步到 Cloudflare Workers,以便通過加密憑據和自動故障轉移實現遠端訪問。", - "providersAcrossConnectionTypes": "跨三種連線類型的 {count} 提供者。", + "featureCloudSyncText": "將設定同步到Cloudflare Workers,以便通過加密憑據和自動故障轉移實現遠程訪問。", + "providersAcrossConnectionTypes": "跨三種連接類型的 {count} 提供者。", "manageProviders": "管理提供者", "providersCount": "{count} 提供者", "providerTypeFree": "免費套餐", "providerTypeOAuth": "OAuth", - "providerTypeApiKey": "API金鑰", + "providerTypeApiKey": "API Key", "useCaseSingleEndpointTitle": "許多提供者的單一端點", - "useCaseSingleEndpointText": "將客戶端統一指向一個 Base URL,再通過模型字首進行路由(例如:gh/、cc/、kr/、openai/)。", + "useCaseSingleEndpointText": "將客戶端統一指向一個Base URL,再通過模型前綴路由(例如:gh/、cc/、kr/、openai/)。", "useCaseFallbackTitle": "使用組合進行回退和模型切換", - "useCaseFallbackText": "在儀表板中建立組合模型,並在提供者內部輪換時保持客戶端設定穩定。", - "useCaseUsageVisibilityTitle": "使用情況、成本和除錯可見性", - "useCaseUsageVisibilityText": "在“使用情況”和“分析”選項卡中按提供者、帳戶和 API 金鑰跟蹤權杖和成本。", + "useCaseFallbackText": "在看板中創建組合模型,並在提供者內部輪換時保持客戶端設定穩定。", + "useCaseUsageVisibilityTitle": "使用情況、成本和調試可見性", + "useCaseUsageVisibilityText": "在“使用情況”和“分析”選項卡中按提供者、帳戶和API Key跟蹤令牌和成本。", "clientCherryStudioTitle": "櫻桃工作室", - "baseUrlLabel": "基礎 URL", + "baseUrlLabel": "基礎URL", "chatEndpointLabel": "聊天端點", - "modelRecommendationLabel": "模型建議:顯式字首", - "clientCodexTitle": "Codex / GitHub Copilot 模型", - "clientCodexBullet1": "使用模型 ID", - "clientCodexBullet2": "Codex 系列模型會自動路由到", - "clientCodexBullet3": "非法典模型繼續", + "modelRecommendationLabel": "模型建議:顯式前綴", + "clientCodexTitle": "Codex / GitHub Copilot模型", + "clientCodexBullet1": "使用模型ID", + "clientCodexBullet2": "Codex系列模型會自動路由到", + "clientCodexBullet3": "非 Codex 模型繼續", "clientCursorTitle": "Cursor IDE", "clientCursorBullet1": "使用", - "clientCursorBullet1Suffix": "Cursor 模型字首。", - "clientCursorBullet2": "OAuth 連線方式:在 Providers 頁面中登入。", + "clientCursorBullet1Suffix": "Cursor模型前綴。", + "clientCursorBullet2": "OAuth連接方式:在提供者s頁面中登入。", "clientClaudeTitle": "Claude Code / Antigravity", "clientClaudeBullet1Prefix": "使用", "clientClaudeBullet1Middle": "(Claude)或", - "clientClaudeBullet1Suffix": "(Antigravity)字首。", + "clientClaudeBullet1Suffix": "(Antigravity)前綴。", "clientWindsurfTitle": "Windsurf", - "clientWindsurfBullet1": "將 OmniRoute 用作 OpenAI 相容的 base URL,並保留顯式提供者字首,以實現確定性路由。", - "clientWindsurfBullet2": "常規流量將模型指向 `/v1/chat/completions`,併為 Codex 風格流程保留 `/v1/responses`。", - "clientWindsurfBullet3": "使用儀表盤 -> CLI 工具獲取現成的 Windsurf 設定指南。", + "clientWindsurfBullet1": "將OmniRoute用作OpenAI相容的base URL,並保留顯式提供者前綴,以實現確定性路由。", + "clientWindsurfBullet2": "常規流量將模型指向 `/v1/chat/completions`,併為Codex風格流程保留 `/v1/responses`。", + "clientWindsurfBullet3": "使用看板 -> CLI工具獲取現成的Windsurf設定指南。", "clientClineTitle": "Cline", - "clientClineBullet1": "Cline 最適合使用顯式的提供者/模型字首,這樣路由器無需猜測後端。", - "clientClineBullet2": "常規模型使用 `/v1/chat/completions`,並在不同帳戶間複用同一個 OmniRoute base URL。", - "clientClineBullet3": "除錯 Cline 執行時問題前,請使用提供者儀表盤驗證 OAuth/API 金鑰。", + "clientClineBullet1": "Cline最適合使用顯式的提供者/模型前綴,這樣路由器無需猜測後端。", + "clientClineBullet2": "常規模型使用 `/v1/chat/completions`,並在不同賬戶間複用同一個OmniRoute base URL。", + "clientClineBullet3": "調試Cline運行時問題前,請使用提供者看板驗證OAuth/API Key。", "clientKimiTitle": "Kimi Coding", - "clientKimiBullet1": "輪換底層帳戶或提供者組合時,將 OmniRoute 用作穩定的 base URL。", - "clientKimiBullet2": "在編碼流程中優先使用帶字首的模型,讓回退和審計軌跡保持明確。", - "clientKimiBullet3": "當你希望為使用工具的客戶端啟用原生 Responses 風格路由時,請使用 `/v1/responses`。", - "protocolsTitle": "協議:MCP 與 A2A", - "protocolsDescription": "除了 OpenAI 相容 API 之外,OmniRoute 還提供兩類操作協議:用於工具執行的 MCP,以及用於智慧體協作工作流的 A2A。", + "clientKimiBullet1": "輪換底層賬戶或提供者組合時,將OmniRoute用作穩定的base URL。", + "clientKimiBullet2": "在編碼流程中優先使用帶前綴的模型,讓回退和審計軌跡保持明確。", + "clientKimiBullet3": "當你希望為使用工具的客戶端啟用原生Responses風格路由時,請使用 `/v1/responses`。", + "protocolsTitle": "協議:MCP與A2A", + "protocolsDescription": "除了OpenAI相容API之外,OmniRoute還提供兩類操作協議:用於工具執行的MCP,以及用於智能體協作工作流的A2A。", "protocolMcpTitle": "MCP(Model Context Protocol)", - "protocolMcpDesc": "通過 stdio 使用 MCP,讓客戶端發現並呼叫 OmniRoute 工具,同時具備審計可見性。", - "protocolMcpStep1": "使用 `omniroute --mcp` 啟動 MCP 傳輸。", - "protocolMcpStep2": "將你的 MCP 客戶端指向 stdio 傳輸。", + "protocolMcpDesc": "通過stdio使用MCP,讓客戶端發現並呼叫OmniRoute工具,同時具備審計可見性。", + "protocolMcpStep1": "使用 `omniroute --mcp` 啟動MCP傳輸。", + "protocolMcpStep2": "將你的MCP客戶端指向stdio傳輸。", "protocolMcpStep3": "呼叫 `omniroute_get_health` 和 `omniroute_list_combos` 驗證連通性。", "protocolA2aTitle": "A2A(Agent2Agent)", - "protocolA2aDesc": "使用 A2A JSON-RPC 以同步方式或通過 SSE 流式方式提交任務。", - "protocolA2aStep1": "讀取 `/.well-known/agent.json` 進行智慧體發現。", - "protocolA2aStep2": "向 `POST /a2a` 傳送 `message/send` 或 `message/stream` 請求。", + "protocolA2aDesc": "使用A2A JSON-RPC以同步方式或通過SSE流式方式提交任務。", + "protocolA2aStep1": "讀取 `/.well-known/agent.json` 進行智能體發現。", + "protocolA2aStep2": "向 `POST /a2a` 發送 `message/send` 或 `message/stream` 請求。", "protocolA2aStep3": "通過 `tasks/get` 和 `tasks/cancel` 管理任務生命週期。", "protocolTroubleshootingTitle": "協議故障排查", - "protocolTroubleshooting1": "如果 MCP 狀態為離線,請確認 stdio 程式正在執行,且心跳檔案持續更新。", - "protocolTroubleshooting2": "如果 A2A 任務長時間停留在 `working`,請檢查 `/api/a2a/tasks/:id` 和流事件中是否出現終態。", - "protocolTroubleshooting3": "可使用 `/dashboard/mcp` 和 `/dashboard/a2a` 進行執行控制並檢視審計資訊。", - "endpointChatNote": "OpenAI 相容聊天端點(預設)。", - "endpointResponsesNote": "Responses API 端點(Codex、o 系列)。", - "endpointModelsNote": "所有連線的提供者的模型目錄。", - "endpointAudioNote": "音訊轉錄(Deepgram、AssemblyAI)。", + "protocolTroubleshooting1": "如果MCP狀態為離線,請確認stdio行程正在運行,且心跳檔案持續更新。", + "protocolTroubleshooting2": "如果A2A任務長時間停留在 `working`,請檢查 `/api/a2a/tasks/:id` 和流事件中是否出現終態。", + "protocolTroubleshooting3": "可使用 `/dashboard/mcp` 和 `/dashboard/a2a` 進行運行控制並查看審計資訊。", + "endpointChatNote": "OpenAI相容聊天端點(預設)。", + "endpointResponsesNote": "Responses API端點(Codex、o系列)。", + "endpointModelsNote": "所有連接的提供者的模型目錄。", + "endpointAudioNote": "音頻轉錄(Deepgram、AssemblyAI)。", "endpointSpeechNote": "語音生成(ElevenLabs、OpenAI TTS)。", "endpointEmbeddingsNote": "文本嵌入生成(OpenAI、Cohere、Voyage)。", - "endpointImagesNote": "影像生成(NanoBanana)。", + "endpointImagesNote": "圖像生成(NanoBanana)。", "endpointRewriteChatNote": "為沒有 /v1 的客戶端重寫幫助程式。", "endpointRewriteResponsesNote": "重寫不帶 /v1 的回應幫助程式。", "endpointRewriteModelsNote": "重寫模型發現助手,無需 /v1。", - "mgmtProxiesListNote": "列出已儲存的代理註冊項(支援分頁)。", - "mgmtProxiesCreateNote": "在登錄檔中建立可複用的代理項。", - "mgmtProxiesHealthNote": "基於代理日誌獲取每個已儲存代理的 24 小時 / 滾動健康指標。", - "mgmtProxiesBulkAssignNote": "一次請求即可為多個 scope ID 統一分配或清除同一個代理。", - "mgmtAssignmentsListNote": "按 scope、scope_id 或 proxy_id 列出代理繫結關係。", - "mgmtAssignmentsUpdateNote": "為 global/provider/account/combo 作用域分配或清除代理。", - "mgmtLegacyMigrationNote": "將舊版 proxyConfig 對映匯入為登錄檔繫結關係。", - "modelPrefixesDescriptionStart": "在模型名稱之前使用提供者字首可路由到特定提供者。示例:", - "modelPrefixesDescriptionEnd": "會被路由到 GitHub Copilot。", + "mgmtProxiesListNote": "列出已保存的代理註冊項(支援分頁)。", + "mgmtProxiesCreateNote": "在註冊表中創建可複用的代理項。", + "mgmtProxiesHealthNote": "基於代理日誌獲取每個已保存代理的 24 小時 / 捲動健康指標。", + "mgmtProxiesBulkAssignNote": "一次請求即可為多個scope ID統一分配或清除同一個代理。", + "mgmtAssignmentsListNote": "按scope、scope_id或proxy_id列出代理綁定關係。", + "mgmtAssignmentsUpdateNote": "為global/provider/account/combo作用域分配或清除代理。", + "mgmtLegacyMigrationNote": "將舊版proxyConfig映射導入為註冊表綁定關係。", + "modelPrefixesDescriptionStart": "在模型名稱之前使用提供者前綴可路由到特定提供者。示例:", + "modelPrefixesDescriptionEnd": "會被路由到GitHub Copilot。", "provider": "提供者", "type": "類型", - "troubleshootingModelRouting": "如果客戶端在模型路由上失敗,請使用顯式 provider/model(例如:gh/gpt-5.1-codex)。", - "troubleshootingAmbiguousModels": "如果您收到不明確的模型錯誤,請選擇提供者字首而不是裸模型 ID。", - "troubleshootingCodexFamily": "對於 GitHub Codex 系列模型,請保持模型名為 `gh/codex-model`;路由器會自動選擇 `/responses`。", - "troubleshootingTestConnection": "在從 IDE 或外部客戶端進行測試之前,請使用儀表板 > 提供者 > 測試連線。", - "troubleshootingCircuitBreaker": "如果提供者顯示斷路器已開啟,請等待冷卻或檢視執行狀況頁面以瞭解詳細資訊。", - "troubleshootingOAuth": "對於 OAuth 提供者,如果 Token 過期,請重新認證,並檢查提供者卡片上的狀態指示器。", - "endpointCompletionsNote": "用於文本生成的舊版 completions 端點。", - "endpointModerationsNote": "內容稽核和安全分類。", - "endpointRerankNote": "用於檢索增強生成的檔案重排序(Cohere、Jina)。", + "troubleshootingModelRouting": "如果客戶端在模型路由上失敗,請使用顯式provider/model(例如:gh/gpt-5.1-codex)。", + "troubleshootingAmbiguousModels": "如果您收到不明確的模型錯誤,請選擇提供者前綴而不是裸模型ID。", + "troubleshootingCodexFamily": "對於GitHub Codex系列模型,請保持模型名為 `gh/codex-model`;路由器會自動選擇 `/responses`。", + "troubleshootingTestConnection": "在從IDE或外部客戶端測試之前,請使用看板 > 提供者 > 測試連接。", + "troubleshootingCircuitBreaker": "如果提供者顯示斷路器已打開,請等待冷卻或查看運行狀況頁面以瞭解詳細資訊。", + "troubleshootingOAuth": "對於OAuth提供者,如果Token過期,請重新認證,並檢查提供者卡片上的狀態指示器。", + "endpointCompletionsNote": "用於文本生成的舊版completions端點。", + "endpointModerationsNote": "內容審核和安全分類。", + "endpointRerankNote": "用於檢索增強生成的文件重排序(Cohere、Jina)。", "endpointSearchNote": "通過 5 個提供者進行網頁搜尋(Serper、Brave、Exa、Tavily、Perplexity)。", "endpointSearchAnalyticsNote": "搜尋請求的分析和指標。", - "endpointVideoNote": "影片生成(ComfyUI、SD WebUI 工作流)。", - "endpointMusicNote": "通過 ComfyUI 工作流生成音樂。", - "endpointMessagesNote": "Anthropic 原生 messages 端點。", - "endpointCountTokensNote": "統計給定訊息載荷的 token 數。", + "endpointVideoNote": "視頻生成(ComfyUI、SD WebUI工作流)。", + "endpointMusicNote": "通過ComfyUI工作流生成音樂。", + "endpointMessagesNote": "Anthropic原生messages端點。", + "endpointCountTokensNote": "統計給定消息載荷的token數。", "endpointFilesNote": "用於多模態輸入的檔案上傳。", - "endpointBatchesNote": "用於批次 API 請求的 Batch 處理。", - "endpointWsNote": "用於即時流式傳輸的 WebSocket 端點。", - "mgmtProvidersListNote": "列出所有已註冊的提供者連線。", - "mgmtProvidersCreateNote": "建立新的提供者連線。", - "mgmtProvidersUpdateNote": "更新現有提供者連線。", - "mgmtProvidersDeleteNote": "刪除提供者連線。", - "mgmtProvidersTestNote": "測試提供者的連線和認證。", + "endpointBatchesNote": "用於批次API請求的Batch處理。", + "endpointWsNote": "用於實時流式傳輸的WebSocket端點。", + "mgmtProvidersListNote": "列出所有已註冊的提供者連接。", + "mgmtProvidersCreateNote": "創建新的提供者連接。", + "mgmtProvidersUpdateNote": "更新現有提供者連接。", + "mgmtProvidersDeleteNote": "刪除提供者連接。", + "mgmtProvidersTestNote": "測試提供者的連接和認證。", "mgmtProvidersModelsNote": "列出特定提供者的可用模型。", "mgmtSettingsGetNote": "獲取當前應用設定。", "mgmtSettingsUpdateNote": "更新應用設定。", "mgmtPayloadRulesGetNote": "獲取載荷轉換規則。", "mgmtPayloadRulesUpdateNote": "更新載荷轉換規則。", - "mcpToolsTitle": "MCP 工具", - "mcpToolsDescription": "OmniRoute 通過 Model Context Protocol 暴露 {count} 個工具,用於 Agent 編排。", + "mcpToolsTitle": "MCP工具", + "mcpToolsDescription": "OmniRoute通過Model Context Protocol暴露 {count} 個工具,用於Agent編排。", "mcpToolsCount": "{count} 個工具", - "mcpToolsToc": "MCP 工具", + "mcpToolsToc": "MCP工具", "mcpToolsRoutingTitle": "路由與發現", "mcpToolsRoutingDesc": "健康檢查、組合管理、配額監控、成本報告和模型目錄訪問。", "mcpToolsOperationsTitle": "運維與策略", "mcpToolsOperationsDesc": "路由模擬、預算保護、策略切換、韌性設定和提供者指標。", "mcpToolsCacheTitle": "快取管理", - "mcpToolsCacheDesc": "檢視快取統計,並清空語義快取或簽名快取。", + "mcpToolsCacheDesc": "查看快取統計,並清空語意快取或簽名快取。", "mcpToolsCompressionTitle": "壓縮發動機", - "mcpToolsCompressionDesc": "設定 RTK/Brotli 壓縮、交換引擎並按組合檢查壓縮分析。", + "mcpToolsCompressionDesc": "設定RTK/Brotli壓縮、交換引擎並按組合檢查壓縮分析。", "mcpToolsOneProxyTitle": "1代理/隧道", - "mcpToolsOneProxyDesc": "管理出站代理、輪換住宅 IP 並檢查代理執行狀況。", + "mcpToolsOneProxyDesc": "管理出站代理、輪換住宅IP並檢查代理運行狀況。", "mcpToolsMemoryTitle": "記憶", "mcpToolsMemoryDesc": "搜尋、新增和清除持久化對話記憶條目。", - "mcpToolsSkillsTitle": "技能", - "mcpToolsSkillsDesc": "列出、啟用、執行和監控自定義技能執行。", + "mcpToolsSkillsTitle": "Skills", + "mcpToolsSkillsDesc": "列出、啟用、執行和監控自定義Skills執行。", "featureAutoComboTitle": "Auto-Combo", - "featureAutoComboText": "根據你連線的提供者、使用模式和模型能力,自動建立最佳化組合。", + "featureAutoComboText": "根據你連接的提供者、使用模式和模型能力,自動創建優化組合。", "featureSearchTitle": "網頁搜尋", "featureSearchText": "整合 5 個提供者的網頁搜尋(Serper、Brave、Exa、Tavily、Perplexity),幷包含分析和成本跟蹤。", "featureMemoryTitle": "記憶系統", - "featureMemoryText": "跨會話提供提取、注入、檢索和摘要能力的持久化對話記憶。", - "featureSkillsTitle": "技能框架", - "featureSkillsText": "可擴充套件技能系統,支援內建和自定義技能、沙箱執行、請求攔截和上下文注入。", - "featureAcpTitle": "Agent 通訊", - "featureAcpText": "Agent Communication Protocol (ACP) 登錄檔,用於管理 Agent 間工作流和工具編排。", - "protocolAcpTitle": "ACP(Agent 通訊)", - "protocolAcpDesc": "通過 ACP 登錄檔註冊和管理 Agent,用於 Agent 間通訊和工具共享。", - "protocolAcpStep1": "前往儀表盤 → Agents 檢視已註冊的 ACP Agent。", - "protocolAcpStep2": "使用能力和端點設定註冊新的 Agent。", - "protocolAcpStep3": "使用 CLI 工具設定 Agent 通訊通道。" + "featureMemoryText": "跨工作階段提供提取、注入、檢索和摘要能力的持久化對話記憶。", + "featureSkillsTitle": "Skills框架", + "featureSkillsText": "可擴展Skills系統,支援內置和自定義Skills、沙箱執行、請求攔截和上下文注入。", + "featureAcpTitle": "Agent通信", + "featureAcpText": "Agent Communication Protocol (ACP) 註冊表,用於管理Agent間工作流和工具編排。", + "protocolAcpTitle": "ACP(Agent通信)", + "protocolAcpDesc": "通過ACP註冊表註冊和管理Agent,用於Agent間通信和工具共享。", + "protocolAcpStep1": "前往看板 → Agents查看已註冊的ACP Agent。", + "protocolAcpStep2": "使用能力和端點設定註冊新的Agent。", + "protocolAcpStep3": "使用CLI工具設定Agent通信通道。" }, "legal": { "privacyPolicy": "隱私政策", "termsOfService": "服務條款", "providerConfigurations": "提供者設定", - "apiKeys": "API 金鑰", + "apiKeys": "API Key", "usageLogs": "使用日誌", "applicationSettings": "應用程式設定", - "viewExportAnalytics": "檢視和匯出使用情況分析", + "viewExportAnalytics": "查看和導出使用情況分析", "clearHistory": "隨時清除使用記錄", "configureRetention": "設定日誌保留策略", "backupRestore": "備份和恢復您的資料庫", "privacyMetadataTitle": "隱私政策 | OmniRoute", - "privacyMetadataDescription": "OmniRoute AI API 代理路由器的隱私政策。", + "privacyMetadataDescription": "OmniRoute AI API代理路由器的隱私政策。", "termsMetadataTitle": "服務條款 | OmniRoute", - "termsMetadataDescription": "OmniRoute AI API 代理路由器的服務條款。", + "termsMetadataDescription": "OmniRoute AI API代理路由器的服務條款。", "backToHome": "返回首頁", "lastUpdated": "最後更新:{date}", "policyLastUpdatedDate": "2026 年 2 月 13 日", "listSeparator": "-", "questionsVisit": "有問題嗎?訪問我們的", - "githubRepository": "GitHub 倉庫", + "githubRepository": "GitHub倉庫", "privacySection1Title": "1. 本地優先架構", - "privacySection1Text": "OmniRoute 是一款本地優先的應用。所有資料處理和儲存都只發生在你的裝置上,不存在集中式伺服器收集你的資訊。", - "privacySection2Title": "2. 我們儲存的資料", - "privacyDataStoredIn": "以下資料儲存在本地", - "privacyDataProviderConfigurationsDesc": "連線 URL、提供者類型和優先順序設定", - "privacyDataApiKeysDesc": "已加密並存儲在本地,用於與 AI 提供者進行身份驗證", - "privacyDataUsageLogsDesc": "請求計數、權杖使用情況、模型名稱、時間戳和回應時間", + "privacySection1Text": "OmniRoute是一款本地優先的應用。所有資料處理和存儲都只發生在你的設備上,不存在集中式伺服器收集你的資訊。", + "privacySection2Title": "2. 我們存儲的資料", + "privacyDataStoredIn": "以下資料存儲在本地", + "privacyDataProviderConfigurationsDesc": "連接URL、提供者類型和優先級設定", + "privacyDataApiKeysDesc": "已加密並存儲在本地,用於與AI提供者身份驗證", + "privacyDataUsageLogsDesc": "請求計數、令牌使用情況、模型名稱、時間戳和回應時間", "privacyDataApplicationSettingsDesc": "主題偏好、路由策略和組合設定", "privacySection3Title": "3. 無遙測", - "privacySection3Text": "OmniRoute 不收集遙測、分析或崩潰報告。不會向我們或任何第三方傳送資料。你的使用模式、API 呼叫和設定都會保持私密。", - "privacySection4Title": "4. 第三方 AI 提供者", - "privacySection4Text": "當你通過 OmniRoute 發起 API 呼叫時,請求會被轉發到你設定的 AI 提供者(例如:OpenAI、Anthropic、Google)。這些提供者有各自的隱私政策,請查閱:", - "privacyOpenAiPolicy": "OpenAI 隱私政策", - "privacyAnthropicPolicy": "Anthropic 隱私政策", - "privacyGooglePolicy": "Google 隱私政策", + "privacySection3Text": "OmniRoute不收集遙測、分析或崩潰報告。不會向我們或任何第三方發送資料。你的使用模式、API呼叫和設定都會保持私密。", + "privacySection4Title": "4. 第三方AI提供者", + "privacySection4Text": "當你通過OmniRoute發起API呼叫時,請求會被轉發到你設定的AI提供者(例如:OpenAI、Anthropic、Google)。這些提供者有各自的隱私政策,請查閱:", + "privacyOpenAiPolicy": "OpenAI隱私政策", + "privacyAnthropicPolicy": "Anthropic隱私政策", + "privacyGooglePolicy": "Google隱私政策", "privacySection5Title": "5. 雲同步(可選)", - "privacySection5Text": "如果您啟用可選的雲同步功能,提供者設定和 API 金鑰可能會傳輸到設定的雲端點。此功能預設處於停用狀態,需要明確選擇加入。", + "privacySection5Text": "如果您啟用可選的雲同步功能,提供者設定和API Key可能會傳輸到設定的雲端點。此功能預設處於禁用狀態,需要明確選擇加入。", "privacySection6Title": "6. 日誌記錄", - "privacyLoggingIntro": "可以通過儀表板設定設定請求日誌。您可以:", + "privacyLoggingIntro": "可以通過看板設定設定請求日誌。您可以:", "privacySection7Title": "7. 您的權利", - "privacySection7TextStart": "由於所有資料都儲存在本地,因此您擁有完全的控制權。您可以隨時刪除您的資料,方法是刪除", - "privacySection7TextEnd": "目錄或使用儀表板中的資料庫備份和恢復功能。", + "privacySection7TextStart": "由於所有資料都存儲在本地,因此您擁有完全的控制權。您可以隨時刪除您的資料,方法是刪除", + "privacySection7TextEnd": "目錄或使用看板中的資料庫備份和恢復功能。", "termsSection1Title": "1. 概述", - "termsSection1Text": "OmniRoute 是一款本地優先的 AI API 代理路由器,完全執行在你的裝置上。它通過負載均衡、故障回退和用量跟蹤,將請求路由到多個 AI 提供者。", - "termsSection2Title": "2. 使用者的責任", - "termsResponsibilityApiKeys": "你需要自行負責管理自己的 API 金鑰,以及第三方 AI 提供者(OpenAI、Anthropic、Google 等)的憑證。", - "termsResponsibilityCompliance": "你必須遵守通過 OmniRoute 訪問的每個 AI 提供者的服務條款。", - "termsResponsibilitySecurity": "你需要負責本地 OmniRoute 安裝的安全,包括設定密碼和限制網路訪問。", + "termsSection1Text": "OmniRoute是一款本地優先的AI API代理路由器,完全運行在你的設備上。它通過負載均衡、故障回退和用量跟蹤,將請求路由到多個AI提供者。", + "termsSection2Title": "2. 用戶的責任", + "termsResponsibilityApiKeys": "你需要自行負責管理自己的API Key,以及第三方AI提供者(OpenAI、Anthropic、Google等)的憑證。", + "termsResponsibilityCompliance": "你必須遵守通過OmniRoute訪問的每個AI提供者的服務條款。", + "termsResponsibilitySecurity": "你需要負責本地OmniRoute安裝的安全,包括設定密碼和限制網路訪問。", "termsSection3Title": "3. 工作原理", - "termsSection3Text": "OmniRoute 充當中間代理。傳送到 OmniRoute 的 API 呼叫會被轉換後轉發到你設定的 AI 提供者。除必要的協議轉換外,OmniRoute 不會修改你的請求或回應內容。", + "termsSection3Text": "OmniRoute充當中間代理。發送到OmniRoute的API呼叫會被轉換後轉發到你設定的AI提供者。除必要的協議轉換外,OmniRoute不會修改你的請求或回應內容。", "termsSection4Title": "4. 資料處理", - "termsDataStoredLocally": "所有資料都儲存在你本機上的 SQLite 資料庫中。", - "termsNoTransmission": "除非你明確啟用雲同步功能,否則 OmniRoute 不會將任何資料傳輸到外部伺服器。", - "termsDataLocationText": "使用日誌、API 金鑰和設定儲存在", - "termsSection5Title": "5. 免責宣告", - "termsSection5Text": "OmniRoute 按“原樣”提供,不附帶任何形式的保證。我們不對 API 使用成本、服務中斷或資料丟失造成的任何損失負責。請始終為設定做好備份。", + "termsDataStoredLocally": "所有資料都保存在你本機上的SQLite資料庫中。", + "termsNoTransmission": "除非你明確啟用雲同步功能,否則OmniRoute不會將任何資料傳輸到外部伺服器。", + "termsDataLocationText": "使用日誌、API Key和設定存儲在", + "termsSection5Title": "5. 免責聲明", + "termsSection5Text": "OmniRoute按“原樣”提供,不附帶任何形式的保證。我們不對API使用成本、服務中斷或資料丟失造成的任何損失負責。請始終為設定做好備份。", "termsSection6Title": "6. 開源", - "termsSection6Text": "OmniRoute 是開源軟體。您可以根據其許可條款自由檢查、修改和分發它。" + "termsSection6Text": "OmniRoute是開源軟件。您可以根據其許可條款自由檢查、修改和分發它。" }, "agents": { - "title": "CLI 智慧體", - "description": "發現系統中已安裝的 CLI 智慧體,並支援新增自定義智慧體以便自動檢測。", - "refresh": "重新整理", + "title": "CLI智能體", + "description": "發現系統中已安裝的CLI智能體,並支援新增自定義智能體以便自動檢測。", + "refresh": "刷新", "installed": "已安裝", "notFound": "未找到", - "builtIn": "內建", + "builtIn": "內置", "custom": "自定義", "remove": "移除", - "addCustomAgent": "新增自定義智慧體", - "addCustomAgentDesc": "註冊任意 CLI 工具用於檢測,重新整理時會自動掃描。", - "agentName": "智慧體名稱", - "binaryName": "執行檔名", + "addCustomAgent": "新增自定義智能體", + "addCustomAgentDesc": "註冊任意CLI工具用於檢測,刷新時會自動掃描。", + "agentName": "智能體名稱", + "binaryName": "可執行檔案名", "versionCommand": "版本命令", - "spawnArgs": "啟動引數", - "addAgent": "新增智慧體", - "scanning": "正在掃描系統中的 CLI 智慧體...", - "opencodeIntegration": "OpenCode 整合", - "opencodeDetected": "已檢測到 opencode {version}", - "opencodeDesc": "生成可直接使用的 {configFile},其中會填入你的 OmniRoute Base URL 和全部可用模型。將它放到專案根目錄後執行 {command} 即可。", + "spawnArgs": "啟動參數", + "addAgent": "新增智能體", + "scanning": "正在掃描系統中的CLI智能體...", + "opencodeIntegration": "OpenCode整合", + "opencodeDetected": "已檢測到opencode {version}", + "opencodeDesc": "生成可直接使用的 {configFile},其中會填入你的OmniRoute Base URL和全部可用模型。將它放到項目根目錄後運行 {command} 即可。", "downloadConfig": "下載 {file}", "downloaded": "已下載!", "setupGuideTitle": "設定指南", - "openCliTools": "開啟 CLI Tools", - "setupGuideDetectCliTitle": "檢測已安裝的 CLI", - "setupGuideDetectCliDesc": "安裝或更新 CLI 後點擊“重新整理”,讓 OmniRoute 重新掃描執行檔和版本資訊。", - "setupGuideCustomAgentTitle": "註冊自定義執行檔", - "setupGuideCustomAgentDesc": "如果你的 CLI 不在內建列表中,請使用“新增自定義智慧體”,並填寫執行檔名與版本命令。", + "openCliTools": "打開CLI Tools", + "setupGuideDetectCliTitle": "檢測已安裝的CLI", + "setupGuideDetectCliDesc": "安裝或更新CLI後點擊“刷新”,讓OmniRoute重新掃描可執行檔案和版本資訊。", + "setupGuideCustomAgentTitle": "註冊自定義可執行檔案", + "setupGuideCustomAgentDesc": "如果你的CLI不在內置列表中,請使用“新增自定義智能體”,並填寫可執行檔案名與版本命令。", "setupGuideCommandMissingTitle": "修復“command not found”", - "setupGuideCommandMissingDesc": "請確認 CLI 命令已存在於 PATH 中,重新開啟一個終端會話後再次點選“重新整理”。", - "cliToolsRedirectTitle": "CLI 工具已移至專用頁面", - "cliToolsRedirectDesc": "在 CLI Tools 頁面管理 Agent CLI 整合與重定向。", - "spawnArgsPlaceholder": "啟動引數佔位符", - "binaryNamePlaceholder": "二進位制名稱佔位符", + "setupGuideCommandMissingDesc": "請確認CLI命令已存在於PATH中,重新打開一個終端工作階段後再次點擊“刷新”。", + "cliToolsRedirectTitle": "CLI工具已移至專用頁面", + "cliToolsRedirectDesc": "在CLI Tools頁面管理智能體CLI整合與重定向。", + "spawnArgsPlaceholder": "啟動參數佔位符", + "binaryNamePlaceholder": "二進制名稱佔位符", "versionCommandPlaceholder": "版本命令佔位符", "architectureTitle": "架構", - "flowLocalBinary": "本地二進位制", + "flowLocalBinary": "3 · 自有認證的 CLI 行程", "flowOmniRoute": "OmniRoute", - "agentNamePlaceholder": "Agent 名稱佔位符", - "architectureDescription": "瞭解 OmniRoute 如何在客戶端、路由器和 Agent 目標之間轉發請求。", + "agentNamePlaceholder": "智能體名稱佔位符", + "architectureDescription": "瞭解OmniRoute如何在客戶端、路由器和智能體目標之間轉發請求。", "flowExecute": "執行", - "flowSpawn": "啟動", - "cliToolsRedirectCta": "開啟 CLI Tools", - "comparisonTitle": "CLI 工具與 Agent 目標有什麼區別?", - "comparisonCliToolsLabel": "CLI 工具頁面", - "comparisonCliToolsTitle": "你的 IDE 通過 OmniRoute 傳送請求", - "comparisonCliToolsDesc": "設定 Claude Code、Codex、Cursor 和其他 IDE,將 OmniRoute 用作它們的 API base URL。OmniRoute 作為代理,將請求路由到你設定的提供者。", - "comparisonAgentsLabel": "當前頁面(Agent 目標)", - "comparisonAgentsTitle": "OmniRoute 將請求傳送到本地 CLI 工具", - "comparisonAgentsDesc": "OmniRoute 可以啟動本地 CLI 二進位制檔案(claude、codex、goose)作為執行後端。CLI 工具使用自己的認證處理請求並返回結果。", - "comparisonSummary": "簡而言之:CLI 工具 = 你設定工具指向 OmniRoute。Agent 目標 = OmniRoute 將工具用作端點。", - "agentUseCaseHint": "可通過 ACP 協議用作執行目標", + "flowSpawn": "2 · OmniRoute 啟動本地二進制", + "cliToolsRedirectCta": "打開CLI Tools", + "comparisonTitle": "CLI工具與智能體目標有什麼區別?", + "comparisonCliToolsLabel": "CLI工具頁面", + "comparisonCliToolsTitle": "你的IDE通過OmniRoute發送請求", + "comparisonCliToolsDesc": "設定Claude Code、Codex、Cursor和其他IDE,將OmniRoute用作它們的API base URL。OmniRoute作為代理,將請求路由到你設定的提供者。", + "comparisonAgentsLabel": "當前頁面(智能體目標)", + "comparisonAgentsTitle": "OmniRoute將請求發送到本地CLI工具", + "comparisonAgentsDesc": "OmniRoute可以啟動本地CLI二進制檔案(claude、codex、goose)作為執行後端。CLI工具使用自己的認證處理請求並返回結果。", + "comparisonSummary": "簡而言之:CLI工具 = 你設定工具指向OmniRoute。智能體目標 = OmniRoute將工具用作端點。", + "agentUseCaseHint": "可通過ACP協議用作執行目標", "flowDiagramClient": "客戶端應用", - "flowDiagramClientDesc": "SDK、API 或上游服務", + "flowDiagramClientDesc": "SDK、API或上游服務", "flowDiagramOmniRoute": "OmniRoute", "flowDiagramOmniRouteDesc": "接收請求並選擇目標", - "flowDiagramSpawn": "啟動程式", - "flowDiagramSpawnDesc": "通過 stdio 啟動 CLI 二進位制檔案", - "flowDiagramCli": "CLI 代理", + "flowDiagramSpawn": "啟動行程", + "flowDiagramSpawnDesc": "通過stdio啟動CLI二進制檔案", + "flowDiagramCli": "CLI智能體", "flowDiagramCliDesc": "使用自身認證/模型處理", - "fingerprintSettingsHint": "CLI 指紋匹配(偽裝成特定 CLI 工具的請求)可在以下位置設定:", + "fingerprintSettingsHint": "CLI指紋匹配(偽裝成特定CLI工具的請求)可在以下位置設定:", "settingsRoutingLink": "設定/路由", "openSettings": "設定", - "copyRawUrlTitle": "將原始 URL 複製到剪貼簿", + "copyRawUrlTitle": "將原始URL複製到剪貼板", "copied": "複製了!", "copyUrl": "複製網址", "startHere": "從這裡開始", "badgeNew": "新", - "viewOnGithub": "在 GitHub 上檢視", + "viewOnGithub": "在GitHub上查看", "howToUse": "如何使用", - "browseAllSkillsOnGithub": "瀏覽 GitHub 上的所有技能", - "apiSkills": "API技能", - "cliSkills": "CLI 技能", - "apiSkillsSubtitle": "{count} 個技能 — 通過 REST / HTTP 控制 OmniRoute", - "cliSkillsSubtitle": "{count} 個技能 — 通過 omniroute 終端執行檔控制 OmniRoute", - "howToUseStep1": "在你想讓代理瞭解的技能上點選 {copyUrl}。", - "howToUseStep2": "在你的 AI 代理(Claude、Cursor、Cline…)中輸入:", - "howToUseStep2Code": "在 [pasted-url] 處使用該技能", - "howToUseStep3": "代理會獲取 SKILL.md 並學習 OmniRoute 的 API 或 CLI — 無需手動檔案。" + "browseAllSkillsOnGithub": "瀏覽GitHub上的所有Skills", + "apiSkills": "APISkills", + "cliSkills": "CLI Skills", + "apiSkillsSubtitle": "{count} 個Skills—通過REST / HTTP控制OmniRoute", + "cliSkillsSubtitle": "{count} 個Skills—通過omniroute終端可執行檔案控制OmniRoute", + "howToUseStep1": "在你想讓智能體瞭解的Skills上點擊 {copyUrl}。", + "howToUseStep2": "在你的AI智能體(Claude、Cursor、Cline…)中輸入:", + "howToUseStep2Code": "在 [pasted-url] 處使用該Skills", + "howToUseStep3": "智能體會獲取SKILL.md並學習OmniRoute的API或CLI—無需手動文件。" }, "cloudAgents": { - "title": "雲代理", - "description": "管理自主編碼代理(Jules、Devin、Codex Cloud)", + "title": "雲智能體", + "description": "管理自主編碼智能體(Jules、Devin、Codex Cloud)", "loading": "正在載入任務...", - "aboutTitle": "關於雲代理", - "aboutDescription": "雲代理是遠端人工智慧編碼助手,可以自主執行任務。它們的工作方式與本地 CLI 代理不同 - 您可以通過 OmniRoute 的 API 與它們互動。", + "aboutTitle": "關於雲智能體", + "aboutDescription": "雲智能體是遠程人工智能編碼助手,可以自主執行任務。它們的工作方式與本地CLI智能體不同 - 您可以通過OmniRoute的API與它們交互。", "howItWorksTitle": "工作原理:", - "howItWorksDesc": "建立任務 → 代理分析並提出計劃 → 您批准 → 代理執行 → 結果返回", - "newTaskTitle": "建立新任務", - "newTaskDescription": "使用雲代理啟動新任務", + "howItWorksDesc": "創建任務 → 智能體分析並提出計劃 → 您批准 → 智能體執行 → 結果返回", + "newTaskTitle": "創建新任務", + "newTaskDescription": "使用雲智能體啟動新任務", "selectAgent": "選擇代理", "taskDescription": "任務描述", "taskDescriptionPlaceholder": "描述您希望代理做什麼...", "startTask": "啟動任務", "tasks": "任務", "taskDetail": "任務詳情", - "noTasks": "還沒有任務。建立一個以開始使用。", + "noTasks": "還沒有任務。創建一個以開始使用。", "noTasksTitle": "暫無任務", - "noTasksDesc": "建立你的第一個任務以開始使用。", + "noTasksDesc": "創建你的第一個任務以開始使用。", "tasksTab": "任務", "agentsTab": "代理", "settingsTab": "設定", "agentsEnabled": "已啟用", - "agentsDisabled": "已停用", + "agentsDisabled": "已禁用", "filterAllProviders": "所有提供者", "filterAll": "全部", - "autoRefreshing": "自動重新整理中", - "viewPR": "檢視 Pull Request", - "connected": "已連線", - "notConnected": "未連線", + "autoRefreshing": "自動刷新中", + "viewPR": "查看Pull Request", + "connected": "已連接", + "notConnected": "未連接", "configure": "設定", - "settingsTitle": "雲代理設定", - "settingsDesc": "為雲代理設定本地偏好。", - "settingEnableAgents": "啟用雲代理", - "settingEnableAgentsDesc": "允許 OmniRoute 編排自主編碼代理。", - "settingAutoPR": "自動建立 PR", - "settingAutoPRDesc": "任務完成後自動建立包含變更的 Pull Request。", + "settingsTitle": "雲智能體設定", + "settingsDesc": "為雲智能體設定本地偏好。", + "settingEnableAgents": "啟用雲智能體", + "settingEnableAgentsDesc": "允許OmniRoute編排自主編碼智能體。", + "settingAutoPR": "自動創建PR", + "settingAutoPRDesc": "任務完成後自動創建包含變更的Pull Request。", "settingRequireApproval": "需要方案審批", - "settingRequireApprovalDesc": "代理執行所提方案前始終等待手動批准。", + "settingRequireApprovalDesc": "智能體執行所提方案前始終等待手動批准。", "untitledTask": "無標題任務", - "created": "已建立", + "created": "已創建", "conversation": "對話", "result": "結果", "error": "錯誤", "planReady": "計劃已準備好等待批准", "approvePlan": "批准計劃", "rejectPlan": "拒絕並取消", - "sendMessagePlaceholder": "給代理發訊息...", + "sendMessagePlaceholder": "給智能體發消息...", "cancel": "取消", "delete": "刪除", - "selectTaskPrompt": "選擇任務檢視詳細資訊", + "selectTaskPrompt": "選擇任務查看詳細資訊", "statusPending": "待定", "statusRunning": "跑步", "statusWaitingApproval": "等待批准", "statusCompleted": "已完成", "statusFailed": "失敗", "statusCancelled": "取消", - "repositoryName": "儲存庫名稱", - "repositoryUrl": "儲存庫網址", + "repositoryName": "存儲庫名稱", + "repositoryUrl": "存儲庫網址", "branch": "分公司", "agentDescriptions": { - "jules": "Google 的自主程式代理", - "devin": "Cognition 的 AI 軟體工程師", - "codexCloud": "OpenAI 的雲端程式代理", - "cursorCloud": "Cursor 的背景/雲端代理(官方 API 金鑰)" + "jules": "Google的自主編碼智能體", + "devin": "Cognition的AI軟件工程師", + "codexCloud": "OpenAI的雲端編碼智能體", + "cursorCloud": "Cursor的後台/雲端智能體 (官方API Key)" }, "activityTypes": { - "plan": "計畫", - "command": "指令", - "code_change": "程式碼變更", - "message": "訊息", + "plan": "計劃", + "command": "命令", + "code_change": "代碼變更", + "message": "消息", "error": "錯誤", - "completion": "完成" + "completion": "補全" } }, "templateNames": { @@ -9505,18 +9505,18 @@ "schema-coercion": "模式強制" }, "templateDescriptions": { - "simple-chat": "帶系統訊息的基礎對話模板", + "simple-chat": "帶系統消息的基礎對話模板", "streaming": "用於流式回應的模板", "system-prompt": "帶自定義系統提示詞的模板", "thinking": "帶推理/思考預算的模板", - "tool-calling": "用於工具/函式呼叫的模板", + "tool-calling": "用於工具/函數呼叫的模板", "multi-turn": "用於多輪對話的模板", - "vision": "具有影像輸入的多模態模板", - "schema-coercion": "結構化輸出/JSON 模式實施" + "vision": "具有圖像輸入的多模態模板", + "schema-coercion": "結構化輸出/JSON模式實施" }, "templatePayloads": { "simpleChat": { - "system": "你是一名樂於助人的 AI 助手。", + "system": "你是一名樂於助人的AI助手。", "userGreeting": "你好!今天我可以幫你做些什麼?" }, "streaming": { @@ -9543,53 +9543,53 @@ }, "cache": { "title": "快取管理", - "description": "監控提供者側 Prompt Cache 的效率,以及本地 Semantic Cache 的回應複用情況。", - "refresh": "重新整理", - "clearAll": "清空語義快取", + "description": "監控提供者側Prompt Cache的效率,以及本地Semantic Cache的回應複用情況。", + "refresh": "刷新", + "clearAll": "清空語意快取", "memoryEntries": "記憶體條目", - "memoryEntriesSub": "記憶體 LRU", + "memoryEntriesSub": "記憶體LRU", "dbEntries": "資料庫條目", "dbEntriesSub": "已持久化(SQLite)", "cacheHits": "快取命中數", "cacheHitsSub": "共 {total} 次", - "tokensSaved": "節省的 Tokens", + "tokensSaved": "節省的Tokens", "tokensSavedSub": "根據命中次數估算", "hitRate": "命中率", - "performance": "快取效能", - "autoRefresh": "每 {seconds} 秒自動重新整理", + "performance": "快取性能", + "autoRefresh": "每 {seconds} 秒自動刷新", "hits": "命中次數", "misses": "未命中次數", "total": "總計", "behavior": "快取行為", - "behaviorDeterministic": "僅快取 temperature=0 的非流式請求。", - "behaviorBypass": "通過請求頭 {header} 繞過快取。", - "behaviorTwoTier": "雙層儲存:記憶體 LRU(快速)+ SQLite(重啟後持久化)。", - "behaviorTtl": "預設 TTL:30 分鐘。可通過 {envVar} 設定。", + "behaviorDeterministic": "僅快取temperature=0 的非流式請求。", + "behaviorBypass": "通過請求標頭 {header} 繞過快取。", + "behaviorTwoTier": "雙層存儲:記憶體LRU(快速)+ SQLite(重新啟動後持久化)。", + "behaviorTtl": "預設TTL:30 分鐘。可通過 {envVar} 設定。", "idempotency": "冪等層", "activeDedupKeys": "活躍去重鍵", - "dedupWindow": "去重視窗", - "clearSuccess": "語義快取已清空,已刪除 {count} 條記錄。", + "dedupWindow": "去重窗口", + "clearSuccess": "語意快取已清空,已刪除 {count} 條記錄。", "clearError": "清除快取失敗。", "unavailable": "快取不可用", - "unavailableDesc": "無法獲取快取統計資訊。請確保伺服器正在執行。", + "unavailableDesc": "無法獲取快取統計資訊。請確保伺服器正在運行。", "loadingCacheAria": "正在載入快取", - "promptCache": "Prompt 快取(提供者側)", - "semanticCache": "語義快取", - "promptCacheSectionDesc": "基於 usage history 展示提供者側 prompt cache 的活躍度,讓你區分哪些請求真的啟用了 cache control,以及實際複用了多少輸入。", - "promptTrendDesc": "按小時展示最近 24 小時的請求量、快取覆蓋率,以及 cache read token 的變化。", + "promptCache": "Prompt快取(提供者側)", + "semanticCache": "語意快取", + "promptCacheSectionDesc": "基於usage history展示提供者側prompt cache的活躍度,讓你區分哪些請求真的啟用了cache control,以及實際複用了多少輸入。", + "promptTrendDesc": "按小時展示最近 24 小時的請求量、快取覆蓋率,以及cache read token的變化。", "cachedRequests": "快取請求數", "cachedRequests24h": "24 小時快取請求數", "cacheHitRate": "快取命中率", "cacheRate": "快取率", "cacheRateDesc": "佔總請求數", - "cachedTokens": "快取讀取 Token", - "cacheCreationTokens": "快取寫入 Token", - "cacheMetrics": "Prompt 快取指標", + "cachedTokens": "快取讀取Token", + "cacheCreationTokens": "快取寫入Token", + "cacheMetrics": "Prompt快取指標", "withCacheControl": "含快取控制", "cachedTokensRead": "從快取讀取", "cacheCreationWrite": "寫入快取", "cacheReuseRatio": "快取複用率", - "cacheReuseRatioDesc": "快取讀取 token / 輸入 token 總量", + "cacheReuseRatioDesc": "快取讀取token / 輸入token總量", "estCostSaved": "預估節省費用", "lastUpdated": "上次更新", "hoursTracked": "個小時", @@ -9604,10 +9604,10 @@ "resetting": "正在重置...", "resetMetrics": "重置指標", "byProvider": "按提供者分類", - "providerCacheRateDesc": "每個提供者都會直接展示總輸入 token、cache read token 和 cache write token,方便你對照原始資料判斷比率是否可靠。", + "providerCacheRateDesc": "每個提供者都會直接展示總輸入token、cache read token和cache write token,方便你對照原始資料判斷比率是否可靠。", "provider": "提供者", "requests": "請求數", - "inputTokens": "輸入 Tokens 總計", + "inputTokens": "輸入Tokens總計", "cachedTokensCol": "快取讀取", "cacheCreation": "快取寫入", "trend24h": "快取趨勢(24 小時)", @@ -9616,46 +9616,46 @@ "overview": "概覽", "tableProvider": "提供者", "tableModel": "模型", - "performanceTitle": "效能", - "semanticCacheSectionDesc": "OmniRoute 自己維護的確定性回應快取。開啟後,重複的非流式、temperature=0 請求可以直接在本地命中,不再訪問上游 provider。", - "semanticCacheDisabledDesc": "Semantic Cache 當前已停用。重新在設定中開啟之前,OmniRoute 不會再做本地回應複用。", - "semanticEntriesDesc": "這裡展示的是儲存在 SQLite 裡的 semantic cache 記錄,不包含 provider-side prompt cache 的活動。", + "performanceTitle": "性能", + "semanticCacheSectionDesc": "OmniRoute自己維護的確定性回應快取。開啟後,重複的非流式、temperature=0 請求可以直接在本地命中,不再訪問上游provider。", + "semanticCacheDisabledDesc": "Semantic Cache當前已禁用。重新在設定中開啟之前,OmniRoute不會再做本地回應複用。", + "semanticEntriesDesc": "這裡展示的是保存在SQLite裡的semantic cache記錄,不包含provider-side prompt cache的活動。", "searchEntries": "搜尋條目...", "search": "搜尋", "loading": "載入中...", - "entriesLoadError": "載入語義快取條目失敗。", + "entriesLoadError": "載入語意快取條目失敗。", "noEntries": "未找到快取條目", - "noPromptCacheData": "暫時還沒有記錄到提供者側 prompt cache 活動。", - "noTrendData": "最近 24 小時還沒有記錄到 prompt cache 活動。", + "noPromptCacheData": "暫時還沒有記錄到提供者側prompt cache活動。", + "noTrendData": "最近 24 小時還沒有記錄到prompt cache活動。", "signature": "簽名", "model": "模型", - "created": "建立時間", + "created": "創建時間", "expires": "到期時間", "actions": "操作", "deduplicatedRequests": "去重請求數", - "savedCalls": "節省的 API 呼叫次數", + "savedCalls": "節省的API呼叫次數", "totalProcessed": "已處理請求總數", - "disabled": "已停用", + "disabled": "已禁用", "totalRequests": "總請求數", "reasoningCache": "推理回放", "reasoningCacheDesc": "為多輪工具呼叫流程保留模型思考內容", "reasoningEntries": "活動條目", "reasoningReplayRate": "回放率", "reasoningReplays": "總回放次數", - "reasoningCharsCached": "已快取字元數", + "reasoningCharsCached": "已快取字符數", "reasoningMisses": "快取未命中", "reasoningByProvider": "按提供者", "reasoningByModel": "按模型", "reasoningRecentEntries": "最近條目", - "reasoningToolCallId": "工具呼叫 ID", - "reasoningChars": "字元數", + "reasoningToolCallId": "工具呼叫ID", + "reasoningChars": "字符數", "reasoningAge": "時間", - "reasoningView": "檢視", + "reasoningView": "查看", "reasoningDetail": "推理內容", "reasoningBehavior": "行為", - "reasoningBehaviorCapture": "從流式回應中捕獲 reasoning_content", + "reasoningBehaviorCapture": "從流式回應中捕獲reasoning_content", "reasoningBehaviorReplay": "當客戶端省略時,在下一輪重新注入", - "reasoningBehaviorFallback": "記憶體優先,並使用 SQLite 作為崩潰恢復後備", + "reasoningBehaviorFallback": "記憶體優先,並使用SQLite作為崩潰恢復後備", "reasoningBehaviorTtl": "TTL:2 小時 | 最大條目:2,000(記憶體)", "reasoningBehaviorModels": "支援:DeepSeek、Kimi、Qwen-Thinking、GLM", "reasoningClearAll": "清空推理快取", @@ -9667,7 +9667,7 @@ "cachePerformanceAvgLatency": "平均延遲(毫秒)", "cachePerformanceP95Latency": "p95 延遲(毫秒)", "retry": "重試", - "reasoningAvgChars": "平均字元數", + "reasoningAvgChars": "平均字符數", "tableShare": "佔比", "justNow": "剛剛", "minutesAgo": "{minutes} 分鐘前", @@ -9676,52 +9676,52 @@ "entries": "條目" }, "proxyConfigModal": { - "levelGlobal": "全域性", + "levelGlobal": "全域", "levelProvider": "提供者", "levelCombo": "組合", "levelKey": "金鑰", "levelDirect": "直接(無代理)", - "titleGlobal": "全域性代理設定", - "titleLevel": "{level} 代理 — {label}", + "titleGlobal": "全域代理設定", + "titleLevel": "{level} 代理— {label}", "loading": "正在載入代理設定...", "inheritingFrom": "繼承自", "source": "來源", - "savedProxy": "已儲存代理", + "savedProxy": "已保存代理", "custom": "自定義", - "selectSavedProxyPlaceholder": "選擇已儲存的代理...", + "selectSavedProxyPlaceholder": "選擇已保存的代理...", "proxyType": "代理類型", "host": "主機", - "hostPlaceholder": "1.2.3.4 或 proxy.example.com", - "port": "埠", + "hostPlaceholder": "1.2.3.4 或proxy.example.com", + "port": "連接埠", "authOptional": "認證(可選)", - "username": "使用者名稱", - "usernamePlaceholder": "使用者名稱", + "username": "用戶名", + "usernamePlaceholder": "用戶名", "password": "密碼", "passwordPlaceholder": "密碼", - "connected": "已連線", + "connected": "已連接", "ip": "IP:", - "connectionFailed": "連線失敗", - "testConnection": "測試連線", + "connectionFailed": "連接失敗", + "testConnection": "測試連接", "clear": "清除", "cancel": "取消", - "save": "儲存", - "errorSelectSavedProxy": "請先選擇已儲存的代理。", + "save": "保存", + "errorSelectSavedProxy": "請先選擇已保存的代理。", "errorSelectProxyFirst": "請先選擇代理。", "errorProxyNotFound": "所選代理未找到。", - "errorClearSavedProxy": "清除已儲存代理失敗", - "errorSaveProxy": "儲存代理設定失敗", + "errorClearSavedProxy": "清除已保存代理失敗", + "errorSaveProxy": "保存代理設定失敗", "errorClearProxy": "清除代理設定失敗", - "errorSocks5Hidden": "SOCKS5 已設定但已隱藏,因為 NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false。" + "errorSocks5Hidden": "SOCKS5 已設定但已隱藏,因為NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false。" }, "oauthModal": { - "title": "連線 {providerName}", + "title": "連接 {providerName}", "waiting": "等待授權", - "completeAuthInPopup": "在彈出視窗中完成授權。", - "popupClosedHint": "如果彈出視窗關閉而沒有重定向回來(例如 Qoder),此對話方塊將自動切換到手動 URL 輸入模式。", - "popupBlocked": "彈出視窗被阻止?手動輸入 URL", - "deviceCodeVisitUrl": "訪問下面的 URL 並輸入程式碼:", - "deviceCodeVerificationUrl": "驗證 URL", - "deviceCodeYourCode": "您的程式碼", + "completeAuthInPopup": "在彈出窗口中完成授權。", + "popupClosedHint": "如果彈出窗口關閉而沒有重定向回來(例如Qoder),此對話框將自動切換到手動URL輸入模式。", + "popupBlocked": "彈出窗口已阻止?手動輸入URL", + "deviceCodeVisitUrl": "訪問下面的URL並輸入代碼:", + "deviceCodeVerificationUrl": "驗證URL", + "deviceCodeYourCode": "您的代碼", "deviceCodeWaiting": "等待授權...", "googleLoopbackTitle": "無法從此地址完成 Google 登入", "googleLoopbackWhatHappens": "Google 只有在批准登入的瀏覽器能存取 {redirectUri} 時才會釋放授權碼。在這裡,該地址指向這台電腦,而非 OmniRoute 伺服器 — 因此同意畫面會卡住而不是重新導向,且沒有可複製的回呼 URL。", @@ -9730,7 +9730,7 @@ "googleLoopbackTunnelLabel": "或透過 SSH 轉發儀表板連接埠,然後透過隧道重新載入 OmniRoute:", "googleLoopbackTunnelNote": "將 {userPlaceholder} 替換為您的 SSH 使用者名稱,保持終端機開啟,然後開啟 {localUrl} 並從那裡重新連線。", "googleLoopbackHeadlessAlt": "若要完全無人值守使用且沒有本機回呼,設定您自己的 Google OAuth 憑證加上公開的基礎 URL。", - "remoteAccessInfo": "遠端訪問:由於您是遠端訪問 OmniRoute,授權後您會看到一個錯誤頁面(localhost 未找到)。這是正常的 — 只需從瀏覽器位址列複製完整 URL 並貼上到下方。", + "remoteAccessInfo": "遠程訪問:由於您是遠程訪問OmniRoute,授權後您會看到一個錯誤頁面(localhost未找到)。這是正常的—只需從瀏覽器地址欄複製完整URL並粘貼到下方。", "loopbackMismatchTitle": "__MISSING__:Sign-in can't complete from this address", "loopbackMismatchWhatHappened": "__MISSING__:What's happening", "loopbackMismatchExplanation": "__MISSING__:After you approve the login, {providerName} always sends the browser back to {redirectUri}. That address points at the computer running this browser, not at the OmniRoute server — so the authorization code never reaches OmniRoute and the provider fails the sign-in without showing an error.", @@ -9740,68 +9740,68 @@ "loopbackMismatchStep2": "__MISSING__:In this browser, reopen OmniRoute through the tunnel:", "loopbackMismatchStep3": "__MISSING__:Then connect {providerName} again from the new tab. The callback now reaches the server and the login completes normally.", "loopbackMismatchAlternative": "__MISSING__:No SSH access? If this provider offers a token import tab, connect with a token instead — that path doesn't use a loopback callback.", - "step1OpenUrl": "步驟 1:在瀏覽器中開啟此 URL", + "step1OpenUrl": "步驟 1:在瀏覽器中打開此URL", "copy": "複製", - "step2PasteCallback": "步驟 2:在此處貼上回撥 URL 或授權程式碼", - "step2Hint": "授權後,貼上完整的回撥 URL。對於 Claude Code 和 Cline,您也可以直接貼上身份驗證程式碼,例如 code#state。", - "connect": "連線", + "step2PasteCallback": "步驟 2:在此處粘貼回調URL或授權代碼", + "step2Hint": "授權後,粘貼完整的回調URL。對於Claude Code和Cline,您也可以直接粘貼身份驗證代碼,例如 code#state。", + "connect": "連接", "cancel": "取消", - "success": "連線成功!", - "successMessage": "您的 {providerName} 帳戶已連線。", + "success": "連接成功!", + "successMessage": "您的 {providerName} 賬戶已連接。", "done": "完成", - "error": "連線失敗", + "error": "連接失敗", "tryAgain": "重試" }, "cursorAuthModal": { - "title": "連線 Cursor IDE", - "autoDetecting": "自動檢測權杖中...", - "readingFromCursor": "正在從 Cursor IDE 或 cursor-agent 讀取", - "tokensAutoDetected": "已成功從 Cursor IDE 自動檢測到權杖!", - "cursorNotDetected": "未檢測到 Cursor IDE。請手動貼上您的權杖。", - "accessToken": "訪問權杖", + "title": "連接Cursor IDE", + "autoDetecting": "自動檢測令牌中...", + "readingFromCursor": "正在從Cursor IDE或cursor-agent讀取", + "tokensAutoDetected": "已成功從Cursor IDE自動檢測到令牌!", + "cursorNotDetected": "未檢測到Cursor IDE。請手動粘貼您的令牌。", + "accessToken": "訪問令牌", "required": "*", - "accessTokenPlaceholder": "訪問權杖將自動填充...", - "machineId": "機器 ID", + "accessTokenPlaceholder": "訪問令牌將自動填充...", + "machineId": "機器ID", "optional": "(可選)", - "machineIdPlaceholder": "機器 ID 將自動填充...", - "importing": "正在匯入...", - "importToken": "匯入權杖", + "machineIdPlaceholder": "機器ID將自動填充...", + "importing": "正在導入...", + "importToken": "導入令牌", "cancel": "取消", - "errorAutoDetect": "無法自動檢測權杖", - "errorAutoDetectFailed": "自動檢測權杖失敗", - "errorEnterToken": "請輸入訪問權杖", - "errorImportFailed": "匯入失敗" + "errorAutoDetect": "無法自動檢測令牌", + "errorAutoDetectFailed": "自動檢測令牌失敗", + "errorEnterToken": "請輸入訪問令牌", + "errorImportFailed": "導入失敗" }, "pricingModal": { "title": "定價設定", "loading": "正在載入定價資料...", "pricingRatesFormat": "定價費率格式", - "ratesDescription": "所有費率均為 每百萬權杖美元($/1M 權杖)。示例:輸入費率為 2.50 表示每 1,000,000 個輸入權杖收費 2.50 美元。", + "ratesDescription": "所有費率均為 每百萬令牌美元($/1M令牌)。示例:輸入費率為 2.50 表示每 1,000,000 個輸入令牌收費 2.50 美元。", "model": "模型", "input": "輸入", "output": "輸出", "cached": "快取", "reasoning": "推理", - "cacheCreation": "快取建立", + "cacheCreation": "快取創建", "noPricingData": "無定價資料可用", "resetToDefaults": "重置為預設值", "cancel": "取消", - "saving": "正在儲存...", - "saveChanges": "儲存更改", + "saving": "正在保存...", + "saveChanges": "保存更改", "resetConfirm": "將所有定價重置為預設值?此操作無法撤銷。", - "errorSaveFailed": "儲存定價失敗", + "errorSaveFailed": "保存定價失敗", "errorResetFailed": "重置定價失敗" }, "proxyRegistry": { - "selectAllProxies": "選取所有代理", - "selectProxy": "選取 {name}", - "title": "代理登錄檔", - "description": "儲存可重用的代理並跟蹤分配。", - "importLegacy": "匯入舊版", + "selectAllProxies": "選擇所有代理", + "selectProxy": "選擇 {name}", + "title": "代理註冊表", + "description": "存儲可重用的代理並跟蹤分配。", + "importLegacy": "導入舊版", "bulkAssign": "批次分配", "addProxy": "新增代理", "loading": "正在載入代理...", - "noProxies": "暫無儲存的代理。", + "noProxies": "暫無保存的代理。", "tableName": "名稱", "tableEndpoint": "端點", "tableStatus": "狀態", @@ -9811,49 +9811,49 @@ "test": "測試", "edit": "編輯", "delete": "刪除", - "modalCreateTitle": "建立代理", + "modalCreateTitle": "創建代理", "modalEditTitle": "編輯代理", "labelName": "名稱", "labelType": "類型", - "labelFamily": "IP 家族", - "familyAuto": "自動(雙協定棧)", - "familyIpv4": "僅 IPv4", - "familyIpv6": "僅 IPv6", - "familyHint": "出口位址家族。自動保留雙協定棧;IPv4/IPv6 將此代理固定到該家族(防止在僅 IPv6 代理下洩漏 v4)。", + "labelFamily": "IP協議族", + "familyAuto": "自動 (雙棧)", + "familyIpv4": "僅IPv4", + "familyIpv6": "僅IPv6", + "familyHint": "出口地址族。自動保留雙棧;IPv4/IPv6 將此代理固定到該地址族(防止在僅IPv6 代理下發生v4 洩漏)。", "labelHost": "主機", - "labelPort": "埠", - "labelUsername": "使用者名稱", + "labelPort": "連接埠", + "labelUsername": "用戶名", "labelPassword": "密碼", "labelRegion": "區域", "labelStatus": "狀態", "labelNotes": "備註", - "usernamePlaceholderEdit": "留空以保留當前使用者名稱", + "usernamePlaceholderEdit": "留空以保留當前用戶名", "passwordPlaceholderEdit": "留空以保留當前密碼", "statusActive": "活躍", "statusInactive": "非活躍", "cancel": "取消", - "save": "儲存", + "save": "保存", "bulkModalTitle": "批次代理分配", "bulkLabelScope": "範圍", "bulkLabelProxy": "代理", "bulkClearAssignment": "(清除分配)", - "bulkLabelScopeIds": "範圍 ID(逗號或換行符分隔)", + "bulkLabelScopeIds": "範圍ID(逗號或換行符分隔)", "bulkScopeIdsPlaceholder": "provider-openai,provider-anthropic", "bulkApply": "應用", "labelScope": "作用域", "labelProxy": "代理", - "scopeGlobal": "全域性", + "scopeGlobal": "全域", "scopeProvider": "按提供者", - "scopeAccount": "按帳號", + "scopeAccount": "按賬號", "scopeCombo": "按組合", - "bulkImportErrorMissingName": "缺少 NAME", - "bulkImportErrorMissingHost": "缺少 HOST", - "bulkImportErrorInvalidPort": "PORT 無效(必須為 1-65535)", - "bulkImportErrorInvalidType": "TYPE 無效(使用 http、https 或 socks5)", - "bulkImportErrorInvalidStatus": "STATUS 無效(使用 active 或 inactive)", - "errorLoadFailed": "載入代理登錄檔失敗", + "bulkImportErrorMissingName": "缺少NAME", + "bulkImportErrorMissingHost": "缺少HOST", + "bulkImportErrorInvalidPort": "PORT無效(必須為 1-65535)", + "bulkImportErrorInvalidType": "TYPE無效(使用http、https或socks5)", + "bulkImportErrorInvalidStatus": "STATUS無效(使用active或inactive)", + "errorLoadFailed": "載入代理註冊表失敗", "errorNameHostRequired": "名稱和主機為必填項", - "errorSaveFailed": "儲存代理失敗", + "errorSaveFailed": "保存代理失敗", "errorDeleteFailed": "刪除代理失敗", "errorForceDeleteConfirm": "此代理仍在分配中。強制刪除並移除所有分配?", "errorMigrateFailed": "遷移舊版代理設定失敗", @@ -9869,88 +9869,88 @@ "testLatency": "{latency}毫秒", "testFailure": "✗ {error}", "repair": "修復", - "relayAuthMissing": "缺少驗證", - "relayRepairTooltip": "原地恢復中繼驗證。如果 token 無法恢復(例如在 STORAGE_ENCRYPTION_KEY 輪換後),請改為重新部署中繼。", - "relayRepairRedeployRequired": "中繼驗證無法恢復 — 請重新部署中繼以寫入新的 token。", + "relayAuthMissing": "缺少身份驗證", + "relayRepairTooltip": "就地恢復中繼認證。如果令牌無法恢復(例如在STORAGE_ENCRYPTION_KEY輪換之後),請重新部署中繼。", + "relayRepairRedeployRequired": "中繼認證無法恢復—請重新部署中繼以寫入新令牌。", "relayRepairFailed": "中繼修復失敗", "relayRepairError": "修復失敗", "relayProbeSummary": "中繼探測:{alive}/{tested} 存活", - "bulkImport": "批次匯入", - "bulkImportTitle": "批次匯入代理", - "bulkImportDescription": "使用管道符分隔格式貼上代理設定。每行一個代理。已有代理(相同 host + port)將被更新。", + "bulkImport": "批次導入", + "bulkImportTitle": "批次導入代理", + "bulkImportDescription": "使用管道符分隔格式粘貼代理設定。每行一個代理。已有代理(相同host + port)將被更新。", "bulkImportParse": "解析", - "bulkImportImport": "匯入 {count} 個代理", - "bulkImportImporting": "正在匯入...", + "bulkImportImport": "導入 {count} 個代理", + "bulkImportImporting": "正在導入...", "bulkImportParsed": "已解析 {count} 個代理", "bulkImportSkipped": "已跳過 {count} 行", "bulkImportParseErrors": "{count} 個錯誤", "bulkImportNoValidEntries": "未找到有效條目。請檢查格式後重試。", - "bulkImportSuccess": "匯入完成:已建立 {created} 個,已更新 {updated} 個,失敗 {failed} 個", + "bulkImportSuccess": "導入完成:已創建 {created} 個,已更新 {updated} 個,失敗 {failed} 個", "bulkImportErrorLine": "第 {line} 行:{reason}", - "bulkImportMaxExceeded": "每次最多匯入 100 個代理", + "bulkImportMaxExceeded": "每次最多導入 100 個代理", "bulkImportPreview": "預覽", "clearAssignment": "(明確分配)", "bulkProxyAssignment": "批次代理分配", - "testAll": "全部測試", + "testAll": "測試全部", "errorTestFailed": "測試代理失敗", - "batchSelectedCount": "已選取 {count} 個", - "batchDeleteSelected": "刪除選取的 {count} 個", - "batchActivateSelected": "啟用選取的 {count} 個", - "testPassed": "✓ 正常", + "batchSelectedCount": "已選擇 {count} 個", + "batchDeleteSelected": "刪除已選的 {count} 個", + "batchActivateSelected": "啟用已選的 {count} 個", + "testPassed": "✓ 成功", "close": "關閉", "managePool": "管理池", "poolTitle": "代理池與輪換", - "poolDescription": "將多個代理附加到一個範圍,並在其中輪換出口 IP。只有單一代理的範圍行為與一般指派完全相同。", - "poolScopeIdLabel": "範圍 ID", - "poolScopeIdPlaceholder": "提供者 ID / 連線 ID / 組合 ID", - "poolScopeIdRequired": "提供者、帳號或組合範圍需要範圍 ID。", + "poolDescription": "將多個代理附加到一個作用域,並在它們之間輪換出口IP。僅包含單個代理的作用域的行為與普通分配完全相同。", + "poolScopeIdLabel": "作用域ID", + "poolScopeIdPlaceholder": "提供者ID / 連接ID / 組合ID", + "poolScopeIdRequired": "提供者、賬戶或組合作用域需要作用域ID。", "poolLoad": "載入池", "poolLoadFailed": "載入代理池失敗", "poolStrategyLabel": "輪換策略", - "poolStrategyHint": "round-robin 依序輪換成員;random 均勻隨機選取;sticky 在時間視窗內固定使用一個成員;latency-optimized 根據日誌選取最快的成員。", + "poolStrategyHint": "輪詢按順序循環成員;隨機均勻選擇;粘性在窗口期內保持一個成員;延遲優化根據日誌選擇最快的成員。", "poolStrategyFailed": "更新輪換策略失敗", "strategyRoundRobin": "輪詢", "strategyRandom": "隨機", - "strategySticky": "固定", - "strategyLatency": "延遲最佳化", - "poolMembersLabel": "池成員({count})", + "strategySticky": "粘性", + "strategyLatency": "延遲優化", + "poolMembersLabel": "池成員 ({count})", "poolNoMembers": "此池中尚無代理。", "poolRemove": "移除", "poolRemoveFailed": "從池中移除代理失敗", "poolAddLabel": "新增代理", "poolAddMember": "新增", - "poolAddFailed": "將代理新增至池失敗", - "poolSelectProxy": "選取代理…", - "poolSaveFailed": "儲存池指派失敗" + "poolAddFailed": "向池中新增代理失敗", + "poolSelectProxy": "Select a proxy…", + "poolSaveFailed": "保存池分配失敗" }, "playground": { "title": "模型演練場", - "description": "直接從儀表板測試任何模型。選擇提供者、模型和端點類型,然後傳送請求以檢視原始回應。", + "description": "直接從看板測試任何模型。選擇提供者、模型和端點類型,然後發送請求以查看原始回應。", "endpoint": "端點", "provider": "提供者", "model": "模型", - "accountKey": "帳戶 / 金鑰", - "autoAccounts": "自動({count} 個帳戶)", - "noAccounts": "無帳戶", - "send": "傳送", + "accountKey": "賬戶 / 金鑰", + "autoAccounts": "自動({count} 個賬戶)", + "noAccounts": "無賬戶", + "send": "發送", "cancel": "取消", - "audioFile": "音訊檔案", + "audioFile": "音頻檔案", "attachImages": "附加圖片(視覺)", "multipartFormData": "multipart/form-data", "upToImages": "最多 4 張圖片", - "selectAudioFile": "選擇音訊檔案進行轉錄(mp3、wav、m4a、ogg、flac…)", + "selectAudioFile": "選擇音頻檔案進行轉錄(mp3、wav、m4a、ogg、flac…)", "clearAll": "清除全部", "request": "請求", "response": "回應", "transcription": "轉錄", "copy": "複製", "resetToDefault": "重置為預設", - "downloadAudio": "下載音訊", + "downloadAudio": "下載音頻", "copyText": "複製文本", - "transcriptionHint": "轉錄使用 multipart/form-data。上傳上面的音訊檔案 — 下面的 JSON 控制額外引數(模型、語言)。", + "transcriptionHint": "轉錄使用multipart/form-data。上傳上面的音頻檔案—下面的JSON控制額外參數(模型、語言)。", "imagesGenerated": "生成了 {count} 張圖片", "generatedImage": "生成圖片 {index}", - "save": "儲存", + "save": "保存", "endpointOptions": { "chat": "聊天補全", "responses": "回應", @@ -9958,17 +9958,17 @@ "images": "圖片生成", "embeddings": "Embeddings", "speech": "文本轉語音", - "transcription": "音訊轉錄", - "video": "影片生成", + "transcription": "音頻轉錄", + "video": "視頻生成", "music": "音樂生成", "moderations": "審核", "rerank": "Rerank", "search": "網頁搜尋", - "webFetch": "網頁擷取" + "webFetch": "網頁獲取" }, "conversationalChat": "對話式聊天", "clearChat": "清除聊天內容", - "typeMessagePlaceholder": "輸入訊息...(Shift+Enter 換行)", + "typeMessagePlaceholder": "輸入消息...(Shift+Enter換行)", "tabChat": "聊天", "tabCompare": "比較", "tabApi": "API", @@ -9976,162 +9976,162 @@ "configPane": "設定", "systemPrompt": "系統提示", "systemPromptPlaceholder": "你是一個樂於助人的助手。", - "modelPlaceholder": "例如 openai/gpt-4o", + "modelPlaceholder": "例如openai/gpt-4o", "endpointLabel": "端點", - "parametersLabel": "引數", + "parametersLabel": "參數", "collapseConfig": "摺疊設定面板", "expandConfig": "展開設定面板", "temperature": "溫度", - "maxTokens": "最大權杖數", + "maxTokens": "最大令牌數", "topP": "Top-p", "presencePenalty": "存在懲罰", "frequencyPenalty": "頻率懲罰", "reasoningLabel": "推理", - "thinking": "思考中", - "effort": "投入程度", + "thinking": "思考", + "effort": "努力程度", "effortDefault": "預設", "seedPlaceholder": "隨機(留空)", "presetsLabel": "預設", "loadPreset": "載入預設", - "savePreset": "儲存預設", + "savePreset": "保存預設", "noPresets": "無預設", "presetNamePlaceholder": "預設名稱", - "savingPreset": "儲存中…", + "savingPreset": "保存中…", "nameRequired": "名稱是必填項", - "failedToSavePreset": "儲存預設失敗", - "improvePrompt": "最佳化提示", - "improvingPrompt": "最佳化中…", - "improvePromptTitle": "使用 AI 最佳化提示", + "failedToSavePreset": "保存預設失敗", + "improvePrompt": "優化提示", + "improvingPrompt": "優化中…", + "improvePromptTitle": "使用AI優化提示", "setModelFirst": "請先設定模型", - "setModelInConfigFirst": "請先在設定面板中設定模型。", - "improvePromptFailed": "改善提示詞失敗。", - "improvePromptAria": "使用 AI 改善提示詞", - "confirmImprovePrompt": "確認改善提示詞", - "improvePromptDescription": "這將會把您目前的系統提示詞傳送至 以生成改善版本。", + "setModelInConfigFirst": "請先在“設定”面板中設定模型。", + "improvePromptFailed": "優化提示詞失敗。", + "improvePromptAria": "使用AI優化提示詞", + "confirmImprovePrompt": "確認優化提示詞", + "improvePromptDescription": "這會將您當前的系統提示詞發送給 以生成優化版本。", "improveQuotaWarning": "這將消耗設定中模型配額的用量。", - "improveConfirm": "最佳化", - "exportCode": "匯出程式碼", - "exportCodeTitle": "匯出程式碼", - "exportShort": "匯出", - "noStateToExport": "沒有可匯出的 Playground 狀態。", - "closeExportModal": "關閉匯出模態框", + "improveConfirm": "優化", + "exportCode": "導出代碼", + "exportCodeTitle": "導出代碼", + "exportShort": "導出", + "noStateToExport": "沒有可導出的Playground狀態。", + "closeExportModal": "關閉導出模態框", "close": "關閉", - "exportRealKeyWarning": "安全警告:匯出被阻止 — 輸出中檢測到真實的 API 金鑰。請重置您的 API 金鑰並重試。", + "exportRealKeyWarning": "安全警告:導出已阻止—輸出中檢測到真實的API Key。請重置您的API Key並重試。", "placeholderHintPrefix": "替換", - "placeholderHintSuffix": "使用您的實際 API 金鑰,或將其設定為環境變數。", - "copyLangCode": "複製 {language} 程式碼", + "placeholderHintSuffix": "使用您的實際API Key,或將其設定為環境變量。", + "copyLangCode": "複製 {language} 代碼", "loadingPresets": "載入中…", "loadPresetPlaceholder": "載入預設…", "copyCode": "複製", "copiedCode": "已複製!", "addModel": "+ 新增模型", - "runAll": "執行全部", + "runAll": "運行全部", "cancelAll": "取消全部", "maxColumnsReached": "最大 {max} 列", "modelPlaceholderCompare": "模型(Cmd+K)…", "noModel": "無模型", - "statusLabel": "狀態:{status}", + "statusLabel": "狀態: {status}", "status": { - "idle": "閒置", - "streaming": "串流中", + "idle": "空閒", + "streaming": "流式傳輸中", "done": "已完成", "error": "錯誤" }, - "cancelStream": "取消串流", - "removeColumn": "移除欄位", - "removeModelColumn": "移除 {model} 的欄位", - "readyToRun": "準備就緒,可執行。", + "cancelStream": "取消流式傳輸", + "removeColumn": "移除列", + "removeModelColumn": "移除 {model} 的列", + "readyToRun": "準備就緒。", "errorLabel": "錯誤", "unknownError": "發生未知錯誤。", - "waitingForResponse": "正在等待回應...", + "waitingForResponse": "正在等待回應…", "ttft": "TTFT", "tps": "TPS", "metricsDisclaimer": "客戶端估算", - "tokensLabel": "權杖", + "tokensLabel": "令牌", "costLabel": "成本", "costEstimated": "(估算)", - "ttftTitle": "首次 token 延遲(客戶端估算)", - "tpsTitle": "每秒 token 數(客戶端估算)", - "tokenCountsTitle": "提示 token ↑ / 補全 token ↓", - "estimatedCostTitle": "預估費用(不保證準確)", + "ttftTitle": "首個Token時間 (客戶端估算)", + "tpsTitle": "每秒Token數 (客戶端估算)", + "tokenCountsTitle": "提示Token ↑ / 補全Token ↓", + "estimatedCostTitle": "預估成本 (不保證完全準確)", "toolsLabel": "工具", - "toolsCount": "工具({count})", + "toolsCount": "工具 ({count})", "addTool": "新增工具", "editTool": "編輯工具 {name}", "removeTool": "移除工具 {name}", - "toolNamePlaceholder": "函式名稱", - "toolNameRequiredPlaceholder": "函式名稱 *", + "toolNamePlaceholder": "函數名稱", + "toolNameRequiredPlaceholder": "函數名稱 *", "toolDescPlaceholder": "描述(可選)", - "toolParamsLabel": "參數(JSON 結構)", - "toolParamsJsonSchema": "參數的 JSON 結構", - "toolParamsInvalid": "引數必須為有效 JSON", + "toolParamsLabel": "參數 (JSON Schema)", + "toolParamsJsonSchema": "參數的JSON Schema", + "toolParamsInvalid": "參數必須為有效JSON", "structuredOutputLabel": "結構化輸出", - "enableJsonMode": "啟用 JSON 模式", - "disableJsonMode": "停用 JSON 模式", - "invalidJson": "無效 JSON", - "jsonMode": "JSON 模式", - "jsonModeDescription": "強制使用 response_format: json_schema", - "schemaName": "結構名稱", - "jsonSchema": "JSON 結構", - "jsonSchemaEditor": "JSON 結構編輯器", - "schemaValidated": "結構驗證通過", - "validateSchema": "驗證結構", - "seed": "隨機種子", + "enableJsonMode": "啟用JSON模式", + "disableJsonMode": "禁用JSON模式", + "invalidJson": "無效JSON", + "jsonMode": "JSON模式", + "jsonModeDescription": "強制response_format: json_schema", + "schemaName": "Schema名稱", + "jsonSchema": "JSON Schema", + "jsonSchemaEditor": "JSON Schema編輯器", + "schemaValidated": "Schema已驗證", + "validateSchema": "驗證Schema", + "seed": "種子", "stopSequences": "停止序列", "stopSequencesPlaceholder": "例如 \"\\n\\n\" 或 \"END\"", "autoProvider": "自動", "httpError": "錯誤 {status}", "requestCancelled": "請求已取消", "networkError": "網路錯誤", - "regenerateLastResponse": "重新生成最後回應", + "regenerateLastResponse": "重新生成上一次回應", "regenerate": "重新生成", - "startConversation": "開始對話 — 請在下方輸入訊息", + "startConversation": "開始對話—在下方輸入消息", "role": { - "system": "system", - "user": "user", - "assistant": "assistant" + "system": "系統", + "user": "用戶", + "assistant": "助手" }, - "generating": "正在生成...", - "typeMessageWithShortcut": "輸入訊息...(Enter 傳送,Shift+Enter 換行)", + "generating": "正在生成…", + "typeMessageWithShortcut": "輸入消息... (Enter發送,Shift+Enter換行)", "stop": "停止", - "noResponseBody": "無回應內容", - "comparePromptPlaceholder": "在此輸入提示詞...", - "userPrompt": "使用者提示詞", - "cancelAllStreams": "取消所有串流", - "runAllColumns": "執行所有欄位", - "newColumnModelName": "新欄位的模型名稱", - "addColumn": "新增欄位", - "addModelColumn": "新增模型欄", - "columnCount": "{count}/{max} 欄", - "addModelToCompare": "新增模型欄以進行比較", - "modelsSimultaneously": "最多同時使用 {max} 個模型", - "running": "執行中…", - "runLabel": "執行", + "noResponseBody": "無回應體", + "comparePromptPlaceholder": "在此處輸入您的提示詞…", + "userPrompt": "用戶提示詞", + "cancelAllStreams": "取消所有流", + "runAllColumns": "運行所有列", + "newColumnModelName": "新列的模型名稱", + "addColumn": "新增列", + "addModelColumn": "新增模型列", + "columnCount": "{count}/{max} 列", + "addModelToCompare": "新增要對比的模型列", + "modelsSimultaneously": "最多同時支援 {max} 個模型", + "running": "運行中…", + "runLabel": "運行", "enterToolResult": "輸入工具結果…", "build": { "step1Label": "測試什麼?", "step2Label": "設定", - "step3Label": "執行", + "step3Label": "運行", "step1Title": "你想測試什麼?", "step1Subtitle": "選擇您想在本次會議中探索的功能。", "step2Title": "設定", - "step2Subtitle": "設定請求中將使用的工具或 JSON 架構。", - "step3Title": "執行", + "step2Subtitle": "設定請求中將使用的工具或JSON架構。", + "step3Title": "運行", "modeToolsTitle": "工具", - "modeToolsDesc": "測試函式呼叫 — 定義工具並檢視模型如何呼叫它們。", + "modeToolsDesc": "測試函數呼叫—定義工具並查看模型如何呼叫它們。", "modeJsonTitle": "JSON", - "modeJsonDesc": "測試結構化輸出 — 將回應限制為 JSON 架構。", + "modeJsonDesc": "測試結構化輸出—將回應限制為JSON架構。", "modeBothTitle": "工具 + JSON", - "modeBothDesc": "在單個請求中結合函式呼叫和結構化輸出。", + "modeBothDesc": "在單個請求中結合函數呼叫和結構化輸出。", "backButton": "返回", "nextButton": "下一步", - "runButton": "執行", - "promptPlaceholder": "輸入您的訊息…(按 Enter 傳送,Shift+Enter 換行)" + "runButton": "運行", + "promptPlaceholder": "輸入您的消息…(按Enter發送,Shift+Enter換行)" } }, "miniPlayground": { "endpoint": "端點", - "apiKey": "API 金鑰", + "apiKey": "API Key", "model": "模型", "voice": "聲音", "speed": "語速", @@ -10139,13 +10139,13 @@ "url": "URL", "format": "格式", "depth": "深度", - "copyCurl": "複製 cURL", - "copied": "已複製!", - "run": "執行", - "running": "執行中...", + "copyCurl": "複製cURL", + "copied": "已複製!", + "run": "運行", + "running": "運行中...", "response": "回應", "tunnel": "隧道", - "send": "傳送", + "send": "發送", "selectKey": "選擇金鑰", "testLabel": "測試", "expandTest": "展開測試", @@ -10160,40 +10160,40 @@ "size": "尺寸", "duration": "時長", "question": "問題", - "audioFile": "音訊檔案", - "fileTooLarge25Mb": "檔案過大。最大大小:25 MB。", - "selectAudioFirst": "請先選擇音訊檔案。", + "audioFile": "音頻檔案", + "fileTooLarge25Mb": "檔案太大。最大大小:25 MB。", + "selectAudioFirst": "請先選擇一個音頻檔案。", "speechToText": "語音轉文字", "chooseFile": "選擇檔案", - "audioFormats25Mb": "MP3、WAV、M4A、OGG 或 FLAC · 最大 25 MB", - "musicSample": "平靜的環境音樂,搭配溫暖的鋼琴和柔和的弦樂", - "noAudioUrl": "回應中未包含音訊網址:{response}", + "audioFormats25Mb": "MP3、WAV、M4A、OGG或FLAC·最大 25 MB", + "musicSample": "一首帶有溫暖鋼琴和柔和絃樂的平靜氛圍音樂", + "noAudioUrl": "回應中未包含音頻URL:{response}", "music": "音樂", - "embeddingSample": "OmniRoute 能將 AI 請求路由至多個提供者。", + "embeddingSample": "OmniRoute在多個服務商之間路由AI請求。", "embedding": "嵌入", - "imageSample": "日落時分的未來城市,電影級燈光", - "image": "圖片", - "ttsSample": "來自 OmniRoute 的問候。這是文字轉語音測試。", + "imageSample": "日落時分充滿未來感的城市,電影級光效", + "image": "圖像", + "ttsSample": "來自OmniRoute的問候。這是一次文字轉語音測試。", "textToSpeech": "文字轉語音", - "videoSample": "紙飛機飛越未來城市", - "video": "影片", - "webFetch": "網頁擷取", - "webSearchSample": "什麼是 OmniRoute?", - "webSearch": "網路搜尋", - "documentUrl": "文件網址", - "browserAudioUnsupported": "您的瀏覽器不支援音訊播放。", - "browserVideoUnsupported": "您的瀏覽器不支援影片播放。", + "videoSample": "一架紙飛機飛越充滿未來感的城市", + "video": "視頻", + "webFetch": "網頁獲取", + "webSearchSample": "什麼是OmniRoute?", + "webSearch": "網頁搜尋", + "documentUrl": "文件URL", + "browserAudioUnsupported": "您的瀏覽器不支援音頻。", + "browserVideoUnsupported": "您的瀏覽器不支援視頻。", "searchResultFallback": "結果 {number}", - "noKeysFound": "未找到 API 金鑰。請到 Keys 區域新增一個。", + "noKeysFound": "未找到API Key。請到Keys區域新增一個。", "exampleLabel": "示例", "latency": "{ms} 毫秒", - "statsLine": "{ms}ms · {tokensIn} 輸入 / {tokensOut} 輸出 tokens", - "defaultKey": "(預設)", + "statsLine": "{ms}ms· {tokensIn} 輸入 / {tokensOut} 輸出tokens", + "defaultKey": "(預設)", "clear": "清除", - "emptyConversation": "傳送訊息開始對話", - "sendHint": "Shift+Enter 換行 · Enter 傳送", - "you": "你", - "assistant": "助理", + "emptyConversation": "發送消息以開始對話", + "sendHint": "Shift+Enter換行·Enter發送", + "you": "您", + "assistant": "助手", "errorLabel": "錯誤", "requestFailed": "請求失敗", "stop": "停止" @@ -10206,11 +10206,11 @@ "updatingPipelineLogs": "正在更新管道日誌...", "updatePipelineFailed": "更新流水線日誌失敗", "capturePipeline": "為新請求捕獲流水線載荷", - "searchPlaceholder": "搜尋模型、提供者、帳戶、API金鑰、組合...", + "searchPlaceholder": "搜尋模型、提供者、賬戶、API Key、組合...", "allProviders": "所有提供者", "allModels": "所有模型", - "allAccounts": "所有帳戶", - "allApiKeys": "所有API金鑰", + "allAccounts": "所有賬戶", + "allApiKeys": "所有API Key", "total": "總計", "ok": "成功", "err": "錯誤", @@ -10219,24 +10219,24 @@ "shown": "顯示", "sortNewest": "最新", "sortOldest": "最早", - "sortTokensDesc": "權杖 ↓", - "sortTokensAsc": "權杖 ↑", + "sortTokensDesc": "令牌 ↓", + "sortTokensAsc": "令牌 ↑", "sortDurationDesc": "時長 ↓", "sortDurationAsc": "時長 ↑", "sortStatusDesc": "狀態 ↓", "sortStatusAsc": "狀態 ↑", - "sortModelAsc": "模型 A-Z", - "sortModelDesc": "模型 Z-A", + "sortModelAsc": "模型A-Z", + "sortModelDesc": "模型Z-A", "sortLogs": "日誌排序", - "refresh": "重新整理", + "refresh": "刷新", "columnsLabel": "列", - "cacheSem": "語義", + "cacheSem": "語意", "cacheUp": "線上", "semantic": "Semantic Cache", "upstream": "上游", - "semanticCacheHit": "語義快取命中(由 OmniRoute 提供)", + "semanticCacheHit": "語意快取命中(由OmniRoute提供)", "upstreamResponse": "上游提供者回應", - "noApiKey": "無 API key", + "noApiKey": "無API Key", "requestedRoutedTitle": "請求 {requested},路由為 {routed}", "statusFilters": { "all": "全部", @@ -10251,8 +10251,8 @@ "requested": "請求", "provider": "提供者", "protocol": "請求協議", - "account": "帳戶", - "apiKey": "API金鑰", + "account": "賬戶", + "apiKey": "API Key", "combo": "組合", "tokens": "Tokens", "compressed": "壓縮", @@ -10261,11 +10261,11 @@ "time": "時間" }, "loadingLogs": "正在載入日誌...", - "noLogs": "暫無日誌記錄。進行一些API呼叫以在此處檢視它們。", + "noLogs": "暫無日誌記錄。進行一些API呼叫以在此處查看它們。", "noMatchingLogs": "沒有匹配當前篩選器的日誌。", - "callLogsInfo": "呼叫日誌也儲存為JSON檔案到{dataDir},並根據{retentionDays}和{maxEntries}進行輪換。", + "callLogsInfo": "呼叫日誌也保存為JSON檔案到{dataDir},並根據{retentionDays}和{maxEntries}進行輪換。", "loadMore": "載入更多", - "loadingMore": "載入更多…" + "loadingMore": "正在載入更多..." }, "proxyLogger": { "filterAll": "全部", @@ -10280,14 +10280,14 @@ "colProvider": "提供者", "colTarget": "目標", "colLatency": "延遲", - "colClientIp": "客戶端 IP", + "colClientIp": "客戶端IP", "colTime": "時間", "recording": "記錄中", "paused": "已暫停", - "searchPlaceholder": "搜尋主機、提供者、目標或 IP...", + "searchPlaceholder": "搜尋主機、提供者、目標或IP...", "allTypes": "全部類型", "allLevels": "全部級別", - "allProviders": "全部 Provider", + "allProviders": "全部提供者", "total": "總計", "ok": "正常", "err": "錯誤", @@ -10297,23 +10297,23 @@ "oldest": "最舊", "latencyDesc": "延遲 ↓", "latencyAsc": "延遲 ↑", - "refresh": "重新整理", + "refresh": "刷新", "columns": "列", "loadingProxyLogs": "正在載入代理日誌...", - "noProxyLogs": "尚無代理日誌。設定代理併發起 API 呼叫後會顯示在這裡。", + "noProxyLogs": "尚無代理日誌。設定代理併發起API呼叫後會顯示在這裡。", "noMatchingLogs": "沒有日誌匹配當前篩選條件。", - "tlsFingerprint": "Chrome 124 TLS 指紋", + "tlsFingerprint": "Chrome 124 TLS指紋", "colPublicIp": "公共IP" }, "endpointOptions": { "speech": "語音", "search": "搜尋", - "images": "影像", + "images": "圖像", "chat": "聊天", "music": "音樂", "responses": "回應", "rerank": "重新排序", - "video": "影片", + "video": "視頻", "embeddings": "嵌入", "transcription": "轉寫" }, @@ -10326,20 +10326,20 @@ "kilo": "Kilo" }, "runtime": { - "title": "執行時", - "description": "即時可觀測性 — 3 層彈性 + 會話 + 配額告警", + "title": "運行時", + "description": "實時可觀測性— 3 層彈性 + 工作階段 + 配額告警", "pause": "暫停", "resume": "恢復", - "refreshNow": "立即重新整理", - "kpiSessions": "會話", + "refreshNow": "立即刷新", + "kpiSessions": "工作階段", "kpiCircuits": "斷路器", "kpiCooldowns": "冷卻", "kpiLockouts": "鎖定", - "hintStickyBound": "{count} 個粘性繫結", + "hintStickyBound": "{count} 個粘性綁定", "hintRecovering": "{count} 個恢復中", "hintAllHealthy": "全部健康", - "hintOpen": "開啟", - "hintConnsCooling": "連線冷卻中", + "hintOpen": "打開", + "hintConnsCooling": "連接冷卻中", "hintModelsBlocked": "模型已阻止", "resilienceTitle": "3 層彈性", "resilienceSubtitle": "反映記錄的彈性模型", @@ -10347,42 +10347,42 @@ "layer": "第 {n} 層", "layer1Title": "提供者斷路器", "layer1Desc": "阻止到上游級失敗的提供者的流量", - "layer2Title": "連線冷卻", - "layer2Desc": "跳過一個壞帳戶/金鑰;其他連線繼續服務", + "layer2Title": "連接冷卻", + "layer2Desc": "跳過一個壞賬戶/金鑰;其他連接繼續服務", "layer3Title": "模型鎖定", - "layer3Desc": "按模型速率限制鎖定;同一連線仍可服務其他模型", + "layer3Desc": "按模型速率限制鎖定;同一連接仍可服務其他模型", "badgeAffectedOf": "{affected}/{total} 受影響", "badgeCooling": "{count} 冷卻中", "badgeLocked": "{count} 已鎖定", "emptyCircuits": "尚無活動斷路器", - "emptyCooldowns": "尚無連線冷卻", + "emptyCooldowns": "尚無連接冷卻", "emptyLockouts": "無模型鎖定", "moreCooldowns": "+{count} 更多冷卻", "moreLockouts": "+{count} 更多鎖定", - "feedTitle": "即時動態", + "feedTitle": "實時動態", "feedSubtitle": "最近 {count} 個事件", "feedFilterAll": "全部", "feedFilterCircuits": "斷路器", "feedFilterCooldowns": "冷卻", "feedFilterLockouts": "鎖定", - "feedFilterSessions": "會話", + "feedFilterSessions": "工作階段", "feedFilterQuotas": "配額", "feedClear": "清除", "feedEmptyWaiting": "等待事件…(每 5 秒輪詢一次)", "feedEmptyFiltered": "沒有匹配此篩選條件的事件", - "sessionsTitle": "活動會話", - "sessionsSubtitle": "粘性繫結請求指紋(即時)", + "sessionsTitle": "活動工作階段", + "sessionsSubtitle": "粘性綁定請求指紋(實時)", "sessionsActive": "{count} 個活動", - "sessionsEmptyTitle": "無活動會話", - "sessionsEmptyHint": "請求流經代理時會出現會話", - "tblSession": "會話", + "sessionsEmptyTitle": "無活動工作階段", + "sessionsEmptyHint": "請求流經代理時會出現工作階段", + "tblSession": "工作階段", "tblAge": "時長", "tblIdle": "空閒", "tblReqs": "請求數", - "tblBoundTo": "繫結到", - "topApiKeys": "熱門 API 金鑰", + "tblBoundTo": "綁定到", + "topApiKeys": "熱門API Key", "quotaMonitorsTitle": "配額監視器", - "quotaMonitorsSubtitle": "每個帳戶視窗的即時配額狀態", + "quotaMonitorsSubtitle": "每個賬戶窗口的實時配額狀態", "openQuota": "開放配額", "allQuotasHealthy": "所有配額健康", "statusExhausted": "已耗盡", @@ -10393,138 +10393,138 @@ "quotaShare": { "weightPercent": "權重 %", "title": "配額共享", - "description": "通過百分比限制跨 API 金鑰共享提供者配額", + "description": "通過百分比限制跨API Key共享提供者配額", "newPool": "新建池", - "betaTitle": "Beta — UI preview.", - "betaDescription": "設定儲存在 localStorage 中(尚未持久化到伺服器)。每次請求的上限執行將在未來更新中實現。", + "betaTitle": "Beta—UI preview.", + "betaDescription": "設定保存在localStorage中(尚未持久化到伺服器)。每次請求的上限執行將在未來更新中實現。", "kpiActivePools": "活躍池", "kpiKeysAllocated": "已分配金鑰", "kpiAvgUnallocated": "平均未分配", "kpiProvidersWithQuota": "有配額的提供者", "emptyTitle": "未設定池", - "emptyDescription": "建立池以分配 API 金鑰,通過百分比分配共享提供者的配額視窗。", + "emptyDescription": "創建池以分配API Key,通過百分比分配共享提供者的配額窗口。", "loading": "載入中…", "removePool": "移除池", "removeConfirm": "移除此池?", "pool": "池", "used": "已使用", "allocationsCount": "分配({count})", - "allocatedFree": "已分配 {allocated}% · 空閒 {free}%", + "allocatedFree": "已分配 {allocated}% ·空閒 {free}%", "noAllocations": "尚未分配金鑰", "capLabel": "上限 {value}", "notTrackedYet": "(尚未跟蹤)", "policy": "策略", - "apiKeyColumn": "API 金鑰", + "apiKeyColumn": "API Key", "weightColumn": "權重", "fairShareShort": "公平", "policyHard": "硬性", "policySoft": "軟性", "policyBurst": "突發", "policyHardHint": "金鑰耗盡分配時阻止", - "policySoftHint": "允許溢位,僅告警", + "policySoftHint": "允許溢出,僅告警", "policyBurstHint": "允許突發進入空閒池", "editAllocations": "編輯分配", "newPoolTitle": "新建配額池", - "providerConnection": "提供者連線(帳戶)", - "selectConnection": "選擇連線…", - "noEligibleConnections": "沒有帶配額資料的連線。首先從 /dashboard/quota 重新整理。", - "quotaWindow": "配額視窗", - "selectWindow": "選擇視窗…", + "providerConnection": "提供者連接(賬戶)", + "selectConnection": "選擇連接…", + "noEligibleConnections": "沒有帶配額資料的連接。首先從 /dashboard/quota刷新。", + "quotaWindow": "配額窗口", + "selectWindow": "選擇窗口…", "alreadyUsedSuffix": "(已使用)", "windowReset": "重置", - "duplicatePoolError": "此連線 + 視窗的池已存在", + "duplicatePoolError": "此連接 + 窗口的池已存在", "cancel": "取消", - "createPool": "建立池", + "createPool": "創建池", "editTitle": "編輯分配", "noKeysAdded": "未分配金鑰。請在下方新增。", "totalLabel": "總計:{percent}%", "totalExceeded": "⚠ 超過 100%", "addKey": "+ 新增金鑰…", "equalSplit": "平均分配", - "save": "儲存分配", - "betaPreviewLabel": "Beta — UI 預覽。", - "betaConfigSavedPrefix": "設定儲存在", - "betaConfigSavedSuffix": "(尚未保留在伺服器上)。每個請求上限的強制執行尚未連線到代理管道中。此螢幕可讓您設計和視覺化配額分配;真正的執行將在未來的迭代中通過資料庫永續性和上游呼叫攔截來實現。", + "save": "保存分配", + "betaPreviewLabel": "Beta—UI預覽。", + "betaConfigSavedPrefix": "設定保存在", + "betaConfigSavedSuffix": "(尚未保留在伺服器上)。每個請求上限的強制執行尚未連接到代理管道中。此屏幕可讓您設計和可視化配額分配;真正的執行將在未來的迭代中通過資料庫持久性和上游呼叫攔截實現。", "policyLabel": "政策:", "resetIn": "重置於", "quotaTotal": "總計", "kpiAvgUtilization": "平均利用率", "kpiBorrowingNow": "現在借款", "conceptTitle": "配額分成是如何工作的", - "conceptIntro": "配額共享通過節約型公平分享將提供者的配額分配給多個 API 金鑰:每個金鑰獲得一個按比例分配的份額,但可以在不超過全球上限的情況下從自由余額中借用。", + "conceptIntro": "配額共享通過節約型公平分享將提供者的配額分配給多個API Key:每個金鑰獲得一個按比例分配的份額,但可以在不超過全球上限的情況下從自由余額中借用。", "conceptFairShare": "公平共享:每個鍵接收與其設定權重成比例的配額", "conceptBorrowing": "借用:金鑰可以在不違反上限的情況下消耗他人的自由余額", "conceptGlobalCap": "硬性全球上限:提供者的絕對限制永遠不會被超越", - "conceptWindows": "Windows: 5小時,按小時、按日、按周、按月 — 每個獨立跟蹤", + "conceptWindows": "Windows: 5小時,按小時、按日、按周、按月—每個獨立跟蹤", "conceptKeyHowTitle": "為配額啟用金鑰", - "conceptKeyHowDesc": "在 API 管理器中正常建立金鑰 — 它會自動出現在嚮導的金鑰步驟中。在那裡勾選獨佔以使其僅限配額。沒有單獨的啟用步驟。", + "conceptKeyHowDesc": "在API管理器中正常創建金鑰—它會自動出現在嚮導的金鑰步驟中。在那裡勾選獨佔以使其僅限配額。沒有單獨的啟用步驟。", "conceptExclusiveTitle": "“Exclusive” 的作用是什麼", - "conceptExclusiveDesc": "獨佔金鑰僅檢視/使用池的 quotaShared-* 模型 — 其他所有模型在其 /v1/models 中被隱藏並被阻止。", + "conceptExclusiveDesc": "獨佔金鑰僅查看/使用池的quotaShared-* 模型—其他所有模型在其 /v1/models中被隱藏並已阻止。", "burnRateTitle": "燒錢率", "burnRateExhaustsIn": "排氣在", "dimensionResetIn": "重置於", "realConsumedColumn": "已消耗", "deficitColumn": "赤字", "borrowingIndicator": "借款", - "migratedFromLocalStorageNotice": "池成功從 localStorage 遷移。", + "migratedFromLocalStorageNotice": "池成功從localStorage遷移。", "policyCapAbsoluteLabel": "絕對上限", "policyCapAbsolutePlaceholder": "數字限制(可選)", "multiDimensionLabel": "多維", - "stackedBarTitle": "按 API 金鑰切片", + "stackedBarTitle": "按API Key切片", "usedSuffix": "已使用 {percent}%", "wizardTitle": "新配額池", "editPoolTitle": "編輯池", - "saveChanges": "儲存更改", - "wizardStep1Label": "帳戶", + "saveChanges": "保存更改", + "wizardStep1Label": "賬戶", "wizardStep2Label": "限制", "wizardStep3Label": "金鑰", - "wizardStep1Title": "選擇提供者連線", + "wizardStep1Title": "選擇提供者連接", "wizardStep1Subtitle": "選擇此池將共享配額的提供者帳戶,設定名稱和預設策略。", "wizardStep2Title": "設定配額維度", - "wizardStep2Subtitle": "為所選連線定義配額計劃維度(單位、視窗、限制)。保持不變以保持當前設定。", - "wizardStep3Title": "分配 API 金鑰", - "wizardStep3Subtitle": "將 API 金鑰分配給該池,設定權重 % 分配和可選上限。", + "wizardStep2Subtitle": "為所選連接定義配額計劃維度(單位、窗口、限制)。保持不變以保持當前設定。", + "wizardStep3Title": "分配API Key", + "wizardStep3Subtitle": "將API Key分配給該池,設定權重 % 分配和可選上限。", "wizardPoolNameLabel": "池名稱", "wizardPoolNamePlaceholder": "我的配額池", "wizardNext": "下一個", "wizardBack": "返回", - "wizardCreatePool": "建立池", - "wizardDimensionsEditedNotice": "已編輯的尺寸 - 在建立泳池時將作為手動覆蓋儲存。", + "wizardCreatePool": "創建池", + "wizardDimensionsEditedNotice": "已編輯的尺寸 - 在創建泳池時將作為手動覆蓋保存。", "wizardExclusiveLabel": "獨佔配額", - "wizardExclusiveHint": "啟用後,這些 API 金鑰將僅允許使用此池的虛擬模型(在儲存時應用 allowedQuotas 對帳)。", + "wizardExclusiveHint": "啟用後,這些API Key將僅允許使用此池的虛擬模型(在保存時應用allowedQuotas對賬)。", "wizardPreviewLabel": "虛擬模型名稱預覽", - "wizardConnectionsLabel": "提供者連線", + "wizardConnectionsLabel": "提供者連接", "wizardPrimaryBadge": "主要", - "wizardAdditionalConnectionsNote": "附加連線使用其目錄預設限制(稍後可編輯)。", + "wizardAdditionalConnectionsNote": "附加連接使用其目錄預設限制(稍後可編輯)。", "wizardSingleProviderNote": "一個池使用單一提供者", "wizardPreviewMoreModels": "+{count} 更多", - "accountQuotaTitle": "帳戶配額", + "accountQuotaTitle": "賬戶配額", "accountQuotaNone": "—", "logTitle": "使用日誌", "logEmpty": "尚未使用", "groupLabel": "組", "newGroup": "新建組", - "renameGroup": "重新命名組", + "renameGroup": "重命名組", "groupSelectHint": "按組過濾池", "groupAllocationNote": "分配適用於此組中的所有池,通過共享配額層。", "groupNamePrompt": "輸入組名", "wizardGroupLabel": "組", "allGroups": "所有組", "endpointsTitle": "可用的端點", - "endpointsHint": "使用任何分配的金鑰呼叫這些虛擬模型 — 路由 + 配額按組處理。", + "endpointsHint": "使用任何分配的金鑰呼叫這些虛擬模型—路由 + 配額按組處理。", "previewForKey": "金鑰預覽", "previewKeyNone": "(所有端點)", - "endpointsBaseUrl": "基礎 URL", + "endpointsBaseUrl": "基礎URL", "endpointsCollapse": "摺疊", "endpointsExpand": "展開", - "endpointsAnthropicNote": "Anthropic 原生", - "endpointsResponsesNote": "OpenAI 回應 — codex/github", - "endpointsWsNote": "WebSocket — 僅限 codex", + "endpointsAnthropicNote": "Anthropic原生", + "endpointsResponsesNote": "OpenAI回應—codex/github", + "endpointsWsNote": "WebSocket—僅限codex", "betaText": "配額共享功能正常,但預計會有錯誤。發現一個了嗎?請報告。", "betaReportLink": "報告問題", "deleteGroup": "刪除組", "deleteGroupConfirm": "要刪除此組嗎?必須先重新分配或移除其池。", - "deleteGroupHasPools": "該組仍然有池 — 請先重新分配或刪除它們。", + "deleteGroupHasPools": "該組仍然有池—請先重新分配或刪除它們。", "ungroupedTitle": "未分組", "ungroupedHint": "這些池未分配給已知組。編輯一個池以將其移動到真實組中。", "removeFailed": "Could not remove this pool.", @@ -10532,58 +10532,58 @@ }, "plugins": { "title": "外掛", - "description": "安裝和管理外掛以擴充套件 OmniRoute 功能", + "description": "安裝和管理外掛以擴展OmniRoute功能", "loading": "載入外掛中…", "scanning": "掃描中…", "scanForPlugins": "掃描外掛", "noPlugins": "未安裝外掛", - "noPluginsDescription": "將外掛目錄放入 ~/.omniroute/plugins/ 並點選掃描。", - "activate": "啟用", + "noPluginsDescription": "將外掛目錄放入 ~/.omniroute/plugins/ 並點擊掃描。", + "activate": "激活", "deactivate": "停用", - "uninstall": "解除安裝", - "uninstallConfirm": "解除安裝外掛 \"{name}\"?", + "uninstall": "卸載", + "uninstallConfirm": "卸載外掛 \"{name}\"?", "pluginScanComplete": "外掛掃描完成", "pluginScanFailed": "外掛掃描失敗", - "activated": "{name} 已啟用", + "activated": "{name} 已激活", "deactivated": "{name} 已停用", - "activateFailed": "啟用 {name} 失敗", + "activateFailed": "激活 {name} 失敗", "deactivateFailed": "停用 {name} 失敗", - "uninstalled": "{name} 已解除安裝", - "uninstallFailed": "解除安裝 {name} 失敗", + "uninstalled": "{name} 已卸載", + "uninstallFailed": "卸載 {name} 失敗", "configure": "設定:{name}", "configurePlugin": "設定", "noConfigSettings": "此外掛無可設定的設定。", - "saving": "儲存中…", - "saveConfiguration": "儲存設定", - "configurationSaved": "設定已儲存", - "saveConfigurationFailed": "儲存設定失敗", + "saving": "保存中…", + "saveConfiguration": "保存設定", + "configurationSaved": "設定已保存", + "saveConfigurationFailed": "保存設定失敗", "pluginNotFound": "未找到外掛", "version": "版本", "author": "作者", "description_label": "描述", "status": "狀態", "enabled": "已啟用", - "disabled": "已停用", + "disabled": "已禁用", "installedTab": "已安裝", - "marketplaceTab": "市集", - "marketplaceUrlLabel": "自訂市集 URL", - "marketplaceUrlPlaceholder": "留空以使用官方 Omniroute 註冊表", - "saveMarketplaceUrl": "儲存並重新載入", - "marketplaceUrlSaved": "市集 URL 已更新", - "marketplaceEmpty": "在市集中找不到外掛程式。", - "marketplaceInstallComingSoon": "市集安裝即將推出。", - "verified": "已验证", + "marketplaceTab": "市場", + "marketplaceUrlLabel": "自定義市場URL", + "marketplaceUrlPlaceholder": "留空以使用官方Omniroute註冊表", + "saveMarketplaceUrl": "保存並重新載入", + "marketplaceUrlSaved": "市場URL已更新", + "marketplaceEmpty": "在市場中未找到外掛。", + "marketplaceInstallComingSoon": "市場安裝功能即將推出。", + "verified": "已驗證", "install": "安裝", "installedFromMarketplace": "外掛 {name} 已安裝!", "hooks": "鉤子" }, "quotaPlans": { "title": "計劃與配額", - "description": "為每個提供者設定配額計劃 — 維度(%、請求、權杖、$)和時間視窗", - "providerLabel": "提供者 / 連線", + "description": "為每個提供者設定配額計劃—維度(%、請求、令牌、$)和時間窗口", + "providerLabel": "提供者 / 連接", "detectedPlanLabel": "檢測到的計劃", "manualPlanLabel": "手動覆蓋", - "unconfiguredLabel": "未設定 — 需要手動設定", + "unconfiguredLabel": "未設定—需要手動設定", "dimensionLabel": "尺寸", "addDimension": "新增維度", "removeDimension": "移除", @@ -10591,7 +10591,7 @@ "unitOptions": { "percent": "%", "requests": "請求", - "tokens": "權杖", + "tokens": "令牌", "usd": "美元 ($)" }, "windowOptions": { @@ -10602,7 +10602,7 @@ "monthly": "每月" }, "useCatalogButton": "使用目錄", - "saveOverrideButton": "儲存覆蓋", + "saveOverrideButton": "保存覆蓋", "revertToCatalogButton": "恢復到目錄", "unknownProviderNotice": "在左側選擇一個提供者以設定其配額計劃。", "catalogTitle": "已知目錄", @@ -10612,23 +10612,23 @@ "title": "活動", "description": "最近事件動態", "emptyTitle": "尚無活動", - "emptyDescription": "當您新增提供者、建立組合或旋轉金鑰時,事件將出現在這裡。", + "emptyDescription": "當您新增提供者、創建組合或旋轉金鑰時,事件將出現在這裡。", "todayHeader": "今天", "yesterdayHeader": "昨天", "filterAll": "全部", "filterProviders": "提供者", "filterCombos": "組合", - "filterApiKeys": "API 金鑰", + "filterApiKeys": "API Key", "filterSettings": "設定", "filterQuota": "配額", "filterAuth": "認證", "filterSystem": "系統", - "filterAria": "依事件類型篩選", - "refresh": "重新整理", - "refreshAria": "重新整理活動動態", + "filterAria": "按事件類型篩選", + "refresh": "刷新", + "refreshAria": "刷新活動動態", "loading": "載入中", - "loadingActivity": "正在載入活動⋯", - "fetchFailed": "擷取活動失敗", + "loadingActivity": "正在載入活動…", + "fetchFailed": "獲取活動失敗", "relative": { "justNow": "剛剛", "minutesAgo": "{n}分鐘前", @@ -10640,94 +10640,94 @@ "providerAdded": "{actor} 新增了提供者 {target}", "providerRemoved": "{actor} 移除了提供者 {target}", "providerTested": "{actor} 測試了提供者 {target}", - "comboCreated": "{actor} 建立了組合 {target}", + "comboCreated": "{actor} 創建了組合 {target}", "comboUpdated": "{actor} 更新了組合 {target}", "comboDeleted": "{actor} 移除了組合 {target}", - "apiKeyCreated": "{actor} 建立了 API 金鑰 {target}", - "apiKeyRevoked": "{actor} 撤銷了 API 金鑰 {target}", - "apiKeyRotated": "{actor} 旋轉了 API 金鑰 {target}", + "apiKeyCreated": "{actor} 創建了API Key {target}", + "apiKeyRevoked": "{actor} 撤銷了API Key {target}", + "apiKeyRotated": "{actor} 旋轉了API Key {target}", "budgetThreshold": "已達到 {target} 的預算閾值", "settingUpdated": "{actor} 更新了設定 {target}", "authLogin": "{actor} 已登入", "authLogout": "{actor} 已登出", - "cloudAgentSession": "為 {target} 啟動了雲代理會話", - "mcpToolRegistered": "MCP 工具 {target} 已註冊", - "webhookCreated": "{actor} 建立了 webhook {target}", - "webhookDeleted": "{actor} 移除了 webhook {target}", - "quotaPoolCreated": "{actor} 建立了配額池 {target}", + "cloudAgentSession": "為 {target} 啟動了雲智能體工作階段", + "mcpToolRegistered": "MCP工具 {target} 已註冊", + "webhookCreated": "{actor} 創建了webhook {target}", + "webhookDeleted": "{actor} 移除了webhook {target}", + "quotaPoolCreated": "{actor} 創建了配額池 {target}", "quotaPoolUpdated": "{actor} 更新了配額池 {target}", "quotaPoolDeleted": "{actor} 移除了配額池 {target}", "quotaPlanUpdated": "{actor} 更新了配額計劃 {target}", - "quotaStoreDriverChanged": "QuotaStore 驅動已更改", + "quotaStoreDriverChanged": "QuotaStore驅動已更改", "updateApplied": "已應用更新 {target}", "deployCompleted": "部署完成", - "skillInstalled": "{actor} 安裝了技能 {target}", - "skillRemoved": "{actor} 移除了技能 {target}", - "providerCredentialsCreated": "{actor} 為 {target} 建立了憑據", + "skillInstalled": "{actor} 安裝了Skills {target}", + "skillRemoved": "{actor} 移除了Skills {target}", + "providerCredentialsCreated": "{actor} 為 {target} 創建了憑據", "providerCredentialsApplied": "已應用 {target} 的憑據", "providerCredentialsUpdated": "{actor} 更新了 {target} 的憑據", "providerCredentialsRevoked": "{actor} 撤銷了 {target} 的憑據", "providerCredentialsBatchRevoked": "{actor} 批次撤銷憑證", "providerCredentialsBatchUpdated": "{actor} 批次更新了憑據", - "providerCredentialsBulkCreated": "{actor} 批次建立了憑據", - "providerCredentialsBulkImported": "{actor} 批次匯入了憑據", - "providerCredentialsImported": "{actor} 匯入的憑據", - "providerSsrfBlocked": "已阻止對 {target} 的 SSRF 嘗試", + "providerCredentialsBulkCreated": "{actor} 批次創建了憑據", + "providerCredentialsBulkImported": "{actor} 批次導入了憑據", + "providerCredentialsImported": "{actor} 導入的憑據", + "providerSsrfBlocked": "已阻止對 {target} 的SSRF嘗試", "authLoginSuccess": "{actor} 已登入", "authLoginError": "{actor} 的登入錯誤", "authLoginFailed": "{name} 登入失敗", - "authLoginLocked": "{actor} 在嘗試次數過多後被鎖定", + "authLoginLocked": "{actor} 在嘗試次數過多後已鎖定", "authLoginMisconfigured": "身份驗證設定無效", - "authLoginSetupRequired": "需要進行身份驗證設定", + "authLoginSetupRequired": "需要身份驗證設定", "authLogoutSuccess": "{actor} 已登出", - "syncTokenCreated": "{actor} 建立了同步權杖", - "syncTokenRevoked": "{actor} 撤銷了同步權杖", + "syncTokenCreated": "{actor} 創建了同步令牌", + "syncTokenRevoked": "{actor} 撤銷了同步令牌", "settingsUpdate": "{actor} 更新了設定", "settingsUpdateFailed": "設定更新失敗", - "serviceRevealApiKey": "{actor} 揭露了 {target} 的 API 金鑰", + "serviceRevealApiKey": "{actor} 揭露了 {target} 的API Key", "genericEvent": "{actor} {target}" } }, "agentBridge": { "title": "AgentBridge", - "subtitle": "使用 IDE 代理與 OmniRoute 模型 — 無需設定", + "subtitle": "使用IDE智能體與OmniRoute模型—無需設定", "riskBannerTitle": "自行承擔風險", - "riskBannerBody": "AgentBridge 攔截來自 IDE 代理的 HTTPS 流量。通過啟用它,您接受遵守每個代理服務條款的責任。切勿在禁止 TLS 檢查的裝置或網路上使用。", + "riskBannerBody": "AgentBridge攔截來自IDE智能體的HTTPS流量。通過激活它,您接受遵守每個代理服務條款的責任。切勿在禁止TLS檢查的設備或網路上使用。", "riskBannerDismiss": "關閉", - "serverCardTitle": "AgentBridge 伺服器", - "statusRunning": "執行中", + "serverCardTitle": "AgentBridge伺服器", + "statusRunning": "運行中", "statusStopped": "已停止", "statusActive": "活動", - "statusDnsOff": "DNS 關閉", + "statusDnsOff": "DNS關閉", "statusSetupRequired": "需要設定", "statusInvestigating": "調查中", - "serverPort": "埠", - "serverConns": "連線", + "serverPort": "連接埠", + "serverConns": "連接", "serverIntercepted": "攔截成功", "serverLastStarted": "最後啟動時間", "startServer": "開始", "stopServer": "停止", - "restartServer": "重啟", + "restartServer": "重新啟動", "trustCert": "信任證書", "downloadCert": "下載證書", - "certManualTitle": "無法自動安裝憑證(例如在容器內)。橋接器仍可執行 — 請手動信任 CA:", + "certManualTitle": "證書無法自動安裝(例如在容器內)。網橋仍可運行—請手動信任CA:", "regenerateCert": "重新生成證書", "starting": "正在啟動…", "stopping": "停止中…", - "restarting": "正在重啟…", + "restarting": "正在重新啟動…", "trusting": "信任中……", "regenerating": "重新生成中…", - "upstreamCaLabel": "上游 CA 證書(企業)", + "upstreamCaLabel": "上游CA證書(企業)", "upstreamCaPlaceholder": "/etc/ssl/certs/corp-ca.pem", - "upstreamCaTest": "測試 TLS", - "upstreamCaTestOk": "TLS 測試通過", - "upstreamCaTestError": "TLS 測試失敗 — 檢查路徑和 CA 檔案", + "upstreamCaTest": "測試TLS", + "upstreamCaTestOk": "TLS測試通過", + "upstreamCaTestError": "TLS測試失敗—檢查路徑和CA檔案", "bypassSectionTitle": "繞過列表", - "bypassSectionDesc": "匹配這些模式的主機將直接隧道(不進行 TLS 解密)。預設包括銀行、.gov 和企業 SSO。", + "bypassSectionDesc": "匹配這些模式的主機將直接隧道(不進行TLS解密)。預設包括銀行、.gov和企業SSO。", "bypassDefaultsLabel": "預設繞過模式(只讀)", - "bypassUserLabel": "自定義繞過模式(每行一個,glob 或正規表示式)", - "saveBypassList": "儲存繞過列表", - "agentListTitle": "IDE 代理", + "bypassUserLabel": "自定義繞過模式(每行一個,glob或正則表達式)", + "saveBypassList": "保存繞過列表", + "agentListTitle": "IDE智能體", "filterAll": "全部", "filterActive": "活躍", "filterSetupRequired": "需要設定", @@ -10737,161 +10737,161 @@ "agentHosts": "攔截的主機", "certTrusted": "證書已信任", "certNotTrusted": "證書不受信任", - "investigatingNotice": "該代理正在接受調查。主機和 API 介面仍在確認中。一旦上游 API 檔案完成,設定將可用。", - "modelMappingsLabel": "模型對映", + "investigatingNotice": "該代理正在接受調查。主機和API接口仍在確認中。一旦上游API文件完成,設定將可用。", + "modelMappingsLabel": "模型映射", "sourceModel": "源模型(代理原生)", "targetModel": "目標模型 (OmniRoute)", - "noMappings": "未設定模型對映。執行設定嚮導以自動檢測模型。", + "noMappings": "未設定模型映射。運行設定嚮導以自動檢測模型。", "selectModel": "選擇…", - "saveMappings": "儲存對映", + "saveMappings": "保存映射", "setupWizard": "設定嚮導", - "startDns": "啟動 DNS", - "stopDns": "停止 DNS", + "startDns": "啟動DNS", + "stopDns": "停止DNS", "toggling": "切換中…", - "viewTraffic": "檢視流量", + "viewTraffic": "查看流量", "emptyNoProvidersTitle": "尚未設定提供程式", - "emptyNoProvidersBody": "要使用 AgentBridge,首先連線至少一個提供者。它將是 IDE 請求路由的目標。", + "emptyNoProvidersBody": "要使用AgentBridge,首先連接至少一個提供者。它將是IDE請求路由的目標。", "emptyGoToProviders": "前往提供者", "wizardTitle": "設定嚮導", "wizardSubtitle": "3步設定", "wizardStep1Label": "驗證", "wizardStep2Label": "DNS", - "wizardStep3Label": "對映", - "wizardStep1Desc": "確認伺服器正在執行並且證書已安裝。", - "wizardStep2Desc": "以下條目將被新增到 /etc/hosts 以通過 AgentBridge 重定向流量:", - "wizardStep3Desc": "您現在可以在代理卡中設定模型對映。重啟 IDE 以應用更改。", + "wizardStep3Label": "映射", + "wizardStep1Desc": "確認伺服器正在運行並且證書已安裝。", + "wizardStep2Desc": "以下條目將被新增到 /etc/hosts以通過AgentBridge重定向流量:", + "wizardStep3Desc": "您現在可以在代理卡中設定模型映射。重新啟動IDE以應用更改。", "wizardStep3Success": "代理已設定!", - "wizardServerCheck": "AgentBridge 伺服器", - "wizardRunning": "執行中", - "wizardNotRunning": "未執行", + "wizardServerCheck": "AgentBridge伺服器", + "wizardRunning": "運行中", + "wizardNotRunning": "未運行", "wizardCertCheck": "證書", "wizardTrusted": "可信的", - "wizardNotTrusted": "尚未信任 — 使用信任證書按鈕", + "wizardNotTrusted": "尚未信任—使用信任證書按鈕", "wizardTutorialTitle": "設定說明:", - "wizardEnableDns": "新增 /etc/hosts 條目", - "wizardDnsAlreadyEnabled": "此代理已啟用 DNS", + "wizardEnableDns": "新增 /etc/hosts條目", + "wizardDnsAlreadyEnabled": "此代理已啟用DNS", "enablingDns": "啟用中…", "modelSelectorTitle": "選擇目標模型", "modelSelectorSearch": "搜尋模型…", "noModelsFound": "未找到模型", "quickLinks": "快速連結", "quickLinkProviders": "設定提供程式", - "quickLinkInspector": "在流量檢查器中檢視流量", + "quickLinkInspector": "在流量檢查器中查看流量", "unknownError": "未知錯誤", "maintenanceTitle": "維護與診斷", - "maintenanceSubtitle": "自我測試捕捉管道、復原遺留的系統狀態,以及在機器之間移轉您的設定。", - "orphanedStateWarning": "先前的工作階段留下了系統狀態(DNS 偽造、CA 或系統代理)。執行修復以清理。", + "maintenanceSubtitle": "自檢捕獲管道、撤銷殘留的系統狀態,並在機器之間遷移設定。", + "orphanedStateWarning": "上次工作階段留下了殘留的系統狀態(DNS欺騙、CA或系統代理)。運行修復以進行清理。", "diagnose": "診斷", "diagnosing": "正在診斷…", - "diagnoseHealthy": "擷取管線運作正常。", - "diagnoseUnhealthy": "捕捉管道存在問題:", + "diagnoseHealthy": "捕獲管道正常。", + "diagnoseUnhealthy": "捕獲管道存在問題:", "repair": "修復", "repairing": "正在修復…", "repairDone": "已修復:{items}", - "repairNothing": "無需修復 — 系統狀態乾淨。", - "removeCa": "移除 CA", - "removeCaConfirm": "移除 CA?", - "removeCaDone": "已從作業系統信任儲存庫中移除 MITM 根憑證。", - "removing": "正在移除⋯", + "repairNothing": "無需修復—系統狀態正常。", + "removeCa": "移除CA", + "removeCaConfirm": "移除CA?", + "removeCaDone": "已從操作系統信任庫中移除MITM根CA。", + "removing": "正在移除…", "confirm": "確認", - "exportConfig": "匯出設定", - "exporting": "正在匯出…", - "importConfig": "匯入設定", - "importing": "正在匯入…", - "importInvalidJson": "選取的檔案不是有效的 JSON。", - "importDone": "已匯入 {bypass} 個繞過 · {hosts} 個主機 · {agents} 個代理程式", - "save": "儲存", - "saving": "儲存中…", + "exportConfig": "導出設定", + "exporting": "正在導出…", + "importConfig": "導入設定", + "importing": "正在導入…", + "importInvalidJson": "所選檔案不是有效的JSON。", + "importDone": "已導入 {bypass} 個繞過· {hosts} 個主機· {agents} 個代理", + "save": "保存", + "saving": "保存中…", "cancel": "取消", "back": "返回", "next": "下一個", "done": "完成", "loading": "載入中…", "riskNoticeTitle": "風險確認", - "riskNoticeBody": "AgentBridge 將通過 DNS 重定向其 API 主機來攔截來自此代理的 HTTPS 流量。僅在您接受遵守代理的服務條款和任何適用的網路政策的責任時啟用。", + "riskNoticeBody": "AgentBridge將通過DNS重定向其API主機來攔截來自此代理的HTTPS流量。僅在您接受遵守代理的服務條款和任何適用的網路政策的責任時啟用。", "pageMoved": { "goNow": "現在去", - "message": "MITM Proxy 現在歸 AgentBridge 所有。", + "message": "MITM Proxy現在歸AgentBridge所有。", "title": "此頁面已移動" } }, "providerStats": { "unknownError": "未知錯誤", - "loading": "正在載入提供者統計資料...", - "loadFailed": "載入提供者統計資料失敗:{error}", + "loading": "正在載入提供者統計資訊...", + "loadFailed": "載入提供者統計資訊失敗:{error}", "retry": "重試", - "updated": "更新時間 {time}", - "refresh": "重新整理", - "totalRequests": "請求總數", + "updated": "更新於 {time}", + "refresh": "刷新", + "totalRequests": "總請求數", "avgLatency": "平均延遲", "successRate": "成功率", "activeProviders": "活躍提供者", - "providerBreakdown": "提供者細項", + "providerBreakdown": "提供者明細", "providerCount": "{count} 個提供者", "provider": "提供者", - "requests": "請求", + "requests": "請求數", "success": "成功", "rate": "速率", - "tokensIn": "輸入 Token", - "tokensOut": "輸出 Token", - "ttftAfterTool": "工具後 TTFT", + "tokensIn": "輸入Token", + "tokensOut": "輸出Token", + "ttftAfterTool": "工具後TTFT", "gapAfterTool": "工具後間隔", "model": "模型", "noProviderData": "尚未記錄提供者資料。", "comboMetrics": "組合指標", - "comboMetricsDescription": "各組合的延遲與串流通量", - "avgTtft": "平均 TTFT", + "comboMetricsDescription": "來自流式傳輸的每個組合的延遲和吞吐量", + "avgTtft": "平均TTFT", "avgTotal": "平均總計", "requestTelemetry": "請求遙測", - "requestTelemetryDescription": "7 階段管線細項(過去 5 分鐘)" + "requestTelemetryDescription": "7 階段流水線明細(最近 5 分鐘)" }, "relay": { - "title": "無伺服器 Relay 代理", - "description": "建立可代理至 OmniRoute 的公開 API 端點,具備速率限制與存取控制", - "created": "Relay Token 已建立", - "createFailed": "建立 Token 失敗", - "toggleFailed": "切換 Token 狀態失敗", - "deleteConfirm": "刪除此 Relay Token?此操作無法復原。", - "deleted": "Token 已刪除", - "deleteFailed": "刪除 Token 失敗", + "title": "Serverless中繼代理", + "description": "創建代理至OmniRoute的公開API端點,支援速率限制和訪問控制", + "created": "中繼令牌已創建", + "createFailed": "創建令牌失敗", + "toggleFailed": "切換令牌狀態失敗", + "deleteConfirm": "刪除此中繼令牌?此操作無法撤銷。", + "deleted": "令牌已刪除", + "deleteFailed": "刪除令牌失敗", "cancel": "取消", - "newToken": "新增 Relay Token", - "createTitle": "建立 Relay Token", + "newToken": "新建中繼令牌", + "createTitle": "創建中繼令牌", "nameRequired": "名稱 *", "tokenDescription": "描述", - "descriptionPlaceholder": "用於我的無伺服器函式", - "maxPerMinute": "每分鐘最大請求數", - "maxPerDay": "每日最大請求數", - "createButton": "建立 Token", - "createdTitle": "Token 已建立 — 立即複製!", - "tokenFor": "{name} 的 Token:", - "shownOnce": "此 Token 將不會再次顯示,請妥善保存。", + "descriptionPlaceholder": "用於我的serverless函數", + "maxPerMinute": "最大請求數/分鐘", + "maxPerDay": "最大請求數/天", + "createButton": "創建令牌", + "createdTitle": "令牌已創建—請立即複製!", + "tokenFor": "{name} 的令牌:", + "shownOnce": "此令牌將不再顯示。請妥善保存。", "dismiss": "關閉", - "usage": "使用方式", - "usageDescription": "將請求傳送至您的 Relay 端點:", - "tokenCount": "Relay Token ({count})", + "usage": "使用情況", + "usageDescription": "發送請求至您的中繼端點:", + "tokenCount": "中繼令牌 ({count})", "loading": "載入中...", - "empty": "尚未設定任何 Relay Token。建立一個以開始使用。", - "disable": "停用", + "empty": "未設定中繼令牌。創建一個以開始。", + "disable": "禁用", "enable": "啟用", "delete": "刪除" }, "trafficInspector": { "title": "流量檢查員", - "subtitle": "監控 LLM 呼叫並除錯任何應用程式的 HTTPS 流量", + "subtitle": "監控LLM呼叫並調試任何應用程式的HTTPS流量", "captureModesTitle": "捕獲模式", "agentBridgeMode": "AgentBridge", - "agentBridgeModeDesc": "捕獲來自所有連線的 IDE 代理的流量", + "agentBridgeModeDesc": "捕獲來自所有連接的IDE智能體的流量", "customHostsMode": "自定義主機", "customHostsModeDesc": "新增特定主機以進行攔截", - "httpProxyMode": "HTTP 代理", - "httpProxyModeDesc": "使用 HTTP_PROXY 環境變數", + "httpProxyMode": "HTTP代理", + "httpProxyModeDesc": "使用HTTP_PROXY環境變量", "systemWideMode": "系統範圍內", - "systemWideModeDesc": "攔截所有系統流量(高階)", - "tproxyMode": "TPROXY 解密", - "tproxyModeUnavailable": "TPROXY 解密需要 Linux + root 權限 + 原生附加元件", + "systemWideModeDesc": "攔截所有系統流量(高級)", + "tproxyMode": "TPROXY解密", + "tproxyModeUnavailable": "TPROXY解密需要Linux + root + 原生外掛", "filterBarTitle": "過濾器", - "profileLlmOnly": "僅限 LLM", + "profileLlmOnly": "僅限LLM", "profileCustom": "自定義", "profileAll": "全部", "filterHost": "過濾主機…", @@ -10900,64 +10900,64 @@ "pauseBtn": "暫停", "resumeBtn": "簡歷", "clearBtn": "清除", - "exportHar": "匯出 .har", + "exportHar": "導出 .har", "recordSession": "記錄", "stopSession": "停止", "liveBadge": "直播", "offlineBadge": "離線", "noRequests": "尚未捕獲任何請求。", - "noRequestsDesc": "確保 AgentBridge 正在執行或啟用其他捕獲模式。", - "selectRequest": "選擇一個請求以進行檢查。", + "noRequestsDesc": "確保AgentBridge正在運行或啟用其他捕獲模式。", + "selectRequest": "選擇一個請求以檢查。", "tabConversation": "對話", - "tabHeaders": "標題", + "tabHeaders": "請求/回應標頭", "tabRequest": "請求", "tabResponse": "回應", "tabTiming": "計時", "tabLlm": "LLM", "tabStats": "統計資訊", - "requestHeaders": "請求頭部", - "responseHeaders": "回應頭部", + "requestHeaders": "請求標頭", + "responseHeaders": "回應標頭", "rawEvents": "原始事件", - "mergedView": "合併檢視", + "mergedView": "合併視圖", "noBody": "沒有主體。", - "streaming": "流媒體…", + "streaming": "串流…", "manageHosts": "管理主機", - "copySnippet": "複製代理程式碼片段", + "copySnippet": "複製代理代碼片段", "addHost": "新增", "hostPlaceholder": "api.openai.com", "noHostsYet": "尚未新增自定義主機。", - "noSessionsYet": "還沒有會話", - "allTraffic": "所有流量(無會話)", - "sessionsDropdown": "會話", + "noSessionsYet": "還沒有工作階段", + "allTraffic": "所有流量(無工作階段)", + "sessionsDropdown": "工作階段", "annotationPlaceholder": "新增備註…", "contextFingerprint": "上下文指紋", "llmProvider": "檢測到的提供者", - "llmApiKind": "API 類型", + "llmApiKind": "API類型", "llmModel": "模型", - "llmMessages": "訊息", - "llmStream": "流媒體", - "llmMappedTo": "對映到", + "llmMessages": "消息", + "llmStream": "串流", + "llmMappedTo": "映射到", "llmCostEstimate": "成本估算", - "systemProxyExitWarning": "系統範圍的代理仍然處於活動狀態 — 仍然離開頁面嗎?", + "systemProxyExitWarning": "系統範圍的代理仍然處於活動狀態—仍然離開頁面嗎?", "customHostsTitle": "自定義主機", "loading": "載入中…", "copied": "已複製!", "copy": "複製", - "httpProxyTitle": "HTTP 代理程式碼片段 — 埠 {port}", + "httpProxyTitle": "HTTP代理代碼片段—連接埠 {port}", "notRecording": "未錄製", "anyStatus": "任何狀態", - "liveOnly": "即時", - "viewingRecordedSession": "檢視錄製的會話", + "liveOnly": "實時", + "viewingRecordedSession": "查看錄製的工作階段", "backToLive": "返回直播", - "untitledSession": "未命名會話", + "untitledSession": "未命名工作階段", "contextHistory": "上下文歷史", "modelResponse": "模型回應", - "conversationNoMessages": "在此請求中未找到訊息。", - "conversationNotAvailable": "對話資料不可用。這可能不是 LLM 請求,或者主體無法解析。", + "conversationNoMessages": "在此請求中未找到消息。", + "conversationNotAvailable": "對話資料不可用。這可能不是LLM請求,或者主體無法解析。", "loadingCharts": "載入圖表…", "statsErrors": "錯誤", "statsLatency": "延遲(最近 50 個請求)", - "statsNoData": "尚未有請求。開始會話錄製以捕獲統計資料。", + "statsNoData": "尚未有請求。開始工作階段錄製以捕獲統計資料。", "statsStatusDistribution": "狀態分佈", "statsSuccessful": "成功", "statsTotalRequests": "總請求數", @@ -10972,79 +10972,79 @@ "timingResponseSize": "回應大小", "pausedNewBadge": "{count} 新的", "clearContextFilter": "清除", - "invalidHostname": "無效的主機名稱", - "invalidHost": "無效的主機", + "invalidHostname": "主機名無效", + "invalidHost": "主機無效", "addHostFailed": "新增主機失敗", "networkError": "網路錯誤", "close": "關閉", "removeHost": "移除 {host}", - "requestDetails": "請求詳細資訊", - "filterByContext": "以此上下文篩選", - "filteringContext": "正在篩選:上下文 {context}", + "requestDetails": "請求詳情", + "filterByContext": "按此上下文篩選", + "filteringContext": "篩選:上下文 {context}", "clear": "清除", - "trafficProfile": "流量設定檔", + "trafficProfile": "流量概況", "roleSystem": "系統", - "roleUser": "使用者", + "roleUser": "用戶", "roleAssistant": "助手", "roleTool": "工具", "expand": "展開", - "collapse": "折疊", - "systemPromptHidden": "系統提示已隱藏 — 點擊展開", + "collapse": "摺疊", + "systemPromptHidden": "系統提示詞已隱藏—點擊展開", "sessionName": "工作階段 {id}", "sessions": "工作階段", "requestCountShort": "{count} 個請求", "deleteSession": "刪除工作階段", - "saving": "正在儲存…", + "saving": "正在保存…", "sensitiveHeaders": "敏感標頭", "show": "顯示", "hide": "隱藏", "name": "名稱", "value": "值", - "noSseEvents": "無 SSE 事件", - "noRequestBody": "無請求主體。", - "noResponseBody": "無回應主體。", + "noSseEvents": "無SSE事件", + "noRequestBody": "無請求體。", + "noResponseBody": "無回應體。", "formatted": "格式化", "raw": "原始" }, "cliCommon": { "concept": { "code": { - "title": "CLI 程式碼的", - "phrase": "指向 OmniRoute 的程式碼工具", - "flow": "你 → CLI 程式碼 → OmniRoute → 提供者", - "seeOther": "檢視 →" + "title": "CLI代碼的", + "phrase": "指向OmniRoute的代碼工具", + "flow": "你 → CLI代碼 → OmniRoute → 提供者", + "seeOther": "查看 →" }, "agent": { - "title": "CLI 代理", - "phrase": "通用自主CLI代理,您可以指向OmniRoute", - "flow": "您 → CLI 代理 → OmniRoute → 提供者", - "seeOther": "檢視 →" + "title": "CLI智能體", + "phrase": "通用自主CLI智能體,您可以指向OmniRoute", + "flow": "您 → CLI智能體 → OmniRoute → 提供者", + "seeOther": "查看 →" }, "acp": { - "title": "ACP 代理", - "phrase": "OmniRoute 作為執行後端(反向流)生成的 CLI", - "flow": "客戶端 → OmniRoute → 生成 CLI (stdio/ACP) → 回應", - "seeOther": "檢視 →" + "title": "ACP代理", + "phrase": "OmniRoute作為執行後端(反向流)生成的CLI", + "flow": "客戶端 → OmniRoute → 生成CLI (stdio/ACP) → 回應", + "seeOther": "查看 →" } }, "comparison": { - "title": "瞭解 OmniRoute 中的 3 種 CLI 類型", + "title": "瞭解OmniRoute中的 3 種CLI類型", "thisPage": "[此頁面 ✓]", - "open": "開啟 →", + "open": "打開 →", "code": { - "title": "程式碼工具", - "desc": "指向 Omni", + "title": "代碼工具", + "desc": "指向Omni", "flow": "你 → CLI → Omni → 提供者", "examples": "例如:claude,codex" }, "agent": { "title": "廣泛自主代理", - "desc": "指向 Omni", + "desc": "指向Omni", "flow": "你 → 代理 → Omni", "examples": "例如:hermes,goose" }, "acp": { - "title": "Omni 使用的後端 CLI", + "title": "Omni使用的後端CLI", "desc": "反向執行", "flow": "Omni → spawn CLI → resp", "examples": "例如:claude,codex (ACP)" @@ -11057,39 +11057,39 @@ "notConfigured": "未設定", "configure": "設定 →", "howToInstall": "如何安裝 →", - "versionNotFound": "找不到", + "versionNotFound": "未找到", "manualConfig": "手動設定", "installGuide": "安裝指南", "endpointLabel": "端點", - "baseUrlFull": "完整基礎 URL", - "baseUrlPartial": "部分基礎 URL", - "refreshDetection": "重新整理檢測", - "alsoAcp": "也 ACP", - "connectProviderHint": "在提供者中連線一個提供者" + "baseUrlFull": "完整Base URL", + "baseUrlPartial": "部分基礎URL", + "refreshDetection": "刷新檢測", + "alsoAcp": "也ACP", + "connectProviderHint": "在“提供者”中連接提供者" }, "detail": { "back": "返回", - "apply": "儲存", + "apply": "保存", "reset": "清除", "manualConfig": "手動設定", "vendor": "提供者", "category": "類型", "detectionStatus": "檢測", "configStatus": "設定", - "baseUrlLabel": "基礎 URL", - "apiKeyLabel": "API 金鑰", - "modelMappingLabel": "模型對映", + "baseUrlLabel": "基礎URL", + "apiKeyLabel": "API Key", + "modelMappingLabel": "模型映射", "noActiveProviders": "沒有活動的提供者。", - "noActiveProvidersDesc": "請前往 Providers 連線至少 1 個提供者,然後再設定 CLI。", - "openProviders": "開啟提供者 →" + "noActiveProvidersDesc": "請前往提供者s連接至少 1 個提供者,然後再設定CLI。", + "openProviders": "打開提供者 →" } }, "cliCode": { - "pageTitle": "CLI 程式碼的", - "pageSubtitle": "指向 OmniRoute 的程式碼工具", - "searchPlaceholder": "搜尋 CLI…", + "pageTitle": "CLI代碼的", + "pageSubtitle": "指向OmniRoute的代碼工具", + "searchPlaceholder": "搜尋CLI…", "filterDetectionLabel": "檢測", - "filterBaseUrlLabel": "基礎 URL", + "filterBaseUrlLabel": "基礎URL", "detectionAll": "所有", "detectionInstalled": "已安裝", "detectionNotFound": "未找到", @@ -11098,417 +11098,417 @@ "baseUrlPartial": "部分" }, "cliAgents": { - "pageTitle": "CLI 代理", - "pageSubtitle": "通用自主CLI代理", - "refreshDetection": "重新整理檢測", + "pageTitle": "CLI智能體", + "pageSubtitle": "通用自主CLI智能體", + "refreshDetection": "刷新檢測", "searchPlaceholder": "搜尋代理…", "detectionFilterLabel": "檢測", "detectionAll": "全部", "detectionInstalled": "已安裝", "detectionNotInstalled": "未安裝", "visibleCount": "{count} 可見", - "emptyState": "未找到符合當前篩選條件的 CLI 代理。" + "emptyState": "未找到符合當前篩選條件的CLI智能體。" }, "acpAgents": { - "pageTitle": "ACP 代理", - "pageSubtitle": "OmniRoute 作為執行後端生成的 CLI", + "pageTitle": "ACP智能體", + "pageSubtitle": "OmniRoute作為執行後端生成的CLI", "scanning": "正在檢測代理…", - "refresh": "重新整理", + "refresh": "刷新", "setupGuideTitle": "設定指南", - "setupGuideDetectCliTitle": "檢測 CLI", - "setupGuideDetectCliDesc": "代理通過在 PATH 中執行 --version 命令來識別。", - "setupGuideCustomAgentTitle": "新增自定義代理", - "setupGuideCustomAgentDesc": "填寫下面的表格以註冊自定義 CLI 代理。", + "setupGuideDetectCliTitle": "檢測CLI", + "setupGuideDetectCliDesc": "代理通過在PATH中運行 --version命令來識別。", + "setupGuideCustomAgentTitle": "新增自定義智能體", + "setupGuideCustomAgentDesc": "填寫下面的表格以註冊自定義CLI智能體。", "setupGuideCommandMissingTitle": "找不到命令", - "setupGuideCommandMissingDesc": "檢查二進位制檔案是否在 PATH 中。", + "setupGuideCommandMissingDesc": "檢查二進制檔案是否在PATH中。", "fingerprintSettingsHint": "在中設定路由和指紋", "settingsRoutingLink": "設定 → 路由", "installed": "已安裝", "notFound": "未找到", - "builtIn": "內建", + "builtIn": "內置", "custom": "自定義", - "agentUseCaseHint": "通過 ACP 可用以生成。", + "agentUseCaseHint": "通過ACP可用以生成。", "remove": "移除", - "addCustomAgent": "新增自定義代理", - "addCustomAgentDesc": "通過 ACP 註冊一個自定義 CLI 代理。", - "addAgent": "新增代理", + "addCustomAgent": "新增自定義智能體", + "addCustomAgentDesc": "通過ACP註冊一個自定義CLI智能體。", + "addAgent": "新增智能體", "agentName": "名稱", "agentNamePlaceholder": "我的代理", - "binaryName": "二進位制", + "binaryName": "二進制", "binaryNamePlaceholder": "例如:myagent", "versionCommand": "版本命令", "versionCommandPlaceholder": "例如:myagent --version", - "spawnArgs": "生成引數", + "spawnArgs": "生成參數", "spawnArgsPlaceholder": "例如:--quiet,--json", - "cliCodeRedirectCta": "開啟 CLI 程式碼的" + "cliCodeRedirectCta": "打開CLI代碼的" }, "agentSkills": { "catalog": { "omni-auth": { - "name": "驗證", - "description": "管理 API 金鑰驗證和工作階段 Token。從這裡開始,透過 Bearer Token 驗證請求、取得工作階段 Cookie,以及設定 OmniRoute API 的登入需求。" + "name": "身份驗證", + "description": "管理API Key身份驗證和工作階段令牌。從此處開始通過Bearer令牌驗證請求、獲取工作階段Cookie,並設定OmniRoute API的登入要求。" }, "omni-providers": { "name": "提供者", - "description": "透過 REST API 管理提供者連線、API 金鑰、OAuth 流程和連線測試。列出、新增、更新、移除和測試 AI 提供者整合(OpenAI、Anthropic、Gemini 及 160 多個)。" + "description": "通過REST API管理提供者連接、API Key、OAuth流程和連接測試。列出、新增、更新、刪除和測試AI提供者整合(OpenAI、Anthropic、Gemini以及 160+ 種)。" }, "omni-models": { "name": "模型", - "description": "查詢所有已設定提供者中可用的 AI 模型。列出模型、解析模型別名,以及瀏覽包含提供者特定變體的完整模型目錄。" + "description": "查詢所有已設定提供者的可用AI模型。列出模型、解析模型別名,並瀏覽包含特定提供者變體的完整模型目錄。" }, "omni-combos-routing": { "name": "組合與路由", - "description": "使用 14 種策略(優先級、加權、循環、自動組合等)建立和管理路由組合。設定容錯移轉鏈、測試路由結果,以及擷取組合指標。" + "description": "創建和管理具有 14 種策略(優先級、加權、輪詢、Auto-combo等)的路由組合。設定回退鏈、測試路由結果並檢索組合指標。" }, "omni-api-keys": { - "name": "API 金鑰", - "description": "建立、列出、輪換和撤銷 OmniRoute API 金鑰。控制每個金鑰的範圍、支出限制和到期日。金鑰可控制所有代理和管理端點的存取。" + "name": "API Key", + "description": "創建、列出、輪換和撤銷OmniRoute API Key。控制每個金鑰的作用域、支出限額和過期時間。金鑰用於控制對所有代理和管理端點的訪問。" }, "omni-usage-logs": { - "name": "使用量與紀錄", - "description": "存取詳細的呼叫紀錄和使用量分析。依提供者、模型、時間範圍、狀態和成本篩選。匯出紀錄並彙總所有連線的 Token 使用量。" + "name": "用量與日誌", + "description": "訪問詳細的呼叫日誌和用量分析。按提供者、模型、時間範圍、狀態和費用進行篩選。導出日誌並彙總所有連接的Token用量。" }, "omni-budget": { "name": "預算與速率限制", - "description": "設定每個 API 金鑰或全域的支出限制、Token 配額和速率限制政策。檢查目前消耗量,並跨提供者執行成本控制。" + "description": "按API Key或全域設定支出限額、Token配額和速率限制策略。檢查當前消耗並在各提供者之間實施成本控制。" }, "omni-settings": { "name": "設定", - "description": "讀取和更新全域應用程式設定:系統提示、思考預算、IP 篩選器、酬載規則、組合預設值和需要登入設定。" + "description": "讀取和更新全域應用程式設定:系統提示詞、思考預算、IP過濾器、有效負載規則、組合預設值以及登入要求設定。" }, "omni-proxies": { "name": "代理設定", - "description": "設定上游提供者請求的 HTTP/HTTPS/SOCKS 代理。設定每提供者或全域代理規則、測試連線能力,以及管理代理輪換。" + "description": "為上游提供者請求設定HTTP/HTTPS/SOCKS代理。設定按提供者或全域代理規則、測試連通性並管理代理輪換。" }, "omni-cache": { "name": "快取", - "description": "管理 LLM 回應快取。檢視快取統計資料、清除項目、設定 TTL 策略,以及控制語義相似性快取臨界值。" + "description": "管理LLM回應快取。查看快取統計資訊、清除條目、設定TTL策略並控制語意相似度快取閾值。" }, "omni-compression": { "name": "壓縮", - "description": "設定 RTK(指令輸出)、Caveman(散文)和堆疊壓縮模式。管理語言套件、自訂規則,以及測試可將 Token 減少 60–90% 的提示壓縮功能。" + "description": "設定RTK(命令輸出)、Caveman(散文)和堆疊壓縮模式。管理語言包、自定義規則,並測試可減少 60–90% Token的提示詞壓縮。" }, "omni-context-rtk": { - "name": "上下文與 RTK", - "description": "設定 RTK 篩選器、上下文工程規則和上下文轉送設定。使用真實提示樣本測試壓縮,並管理上下文轉換管線。" + "name": "上下文與RTK", + "description": "設定RTK過濾器、上下文工程規則和上下文中繼設定。使用真實提示詞樣本測試壓縮,並管理上下文轉換管道。" }, "omni-resilience": { - "name": "韌性與監控", - "description": "監控提供者健康狀態、斷路器狀態、p50/p95/p99 延遲指標和預算守衛警示。即時檢查連線冷卻時間和模型鎖定。" + "name": "彈性與監控", + "description": "監控提供者健康狀況、熔斷器狀態、p50/p95/p99 延遲指標和預算防護警報。實時檢查連接冷卻時間和模型鎖定狀態。" }, "omni-cli-tools": { - "name": "CLI 工具", - "description": "管理透過 API 公開的 CLI 工具整合。列出、設定和呼叫可延伸 OmniRoute 自動化範圍的 CLI 工具外掛。" + "name": "CLI工具", + "description": "管理通過API公開的CLI工具整合。列出、設定和呼叫擴展OmniRoute自動化能力的CLI工具外掛。" }, "omni-tunnels": { "name": "隧道", - "description": "建立和管理安全隧道(ngrok、Cloudflare Tunnel、自訂),以將 OmniRoute 公開至網際網路,或與遠端代理和 CI 管線分享存取權。" + "description": "創建和管理安全隧道(ngrok、Cloudflare Tunnel、自定義),以將OmniRoute暴露到互聯網或與遠程智能體和CI流水線共享訪問權限。" }, "omni-sync-cloud": { - "name": "雲端同步", - "description": "將 OmniRoute 設定、提供者連線和設定同步至雲端儲存或從中同步。管理雲端工作者驗證和遠端備份目標。" + "name": "雲同步", + "description": "在雲存儲之間同步OmniRoute設定、提供者連接和設定。管理雲Worker身份驗證和遠程備份目標。" }, "omni-db-backups": { "name": "資料庫與備份", - "description": "觸發系統備份、從備份檔案還原,以及管理 SQLite 資料庫生命週期。支援匯出、匯入和增量快照策略。" + "description": "觸發系統備份、從備份檔案恢復,並管理SQLite資料庫生命週期。支援導出、導入和增量快照策略。" }, "omni-webhooks": { - "name": "Webhook", - "description": "註冊、列出、測試和移除 Webhook 端點。設定事件訂閱(request.completed、provider.error、budget.exceeded 等)並管理傳遞重試。" + "name": "Webhooks", + "description": "註冊、列出、測試和移除Webhook端點。設定事件訂閱(request.completed、provider.error、budget.exceeded等)並管理投遞重試。" }, "omni-mcp": { - "name": "MCP 伺服器", - "description": "連線至 OmniRoute MCP 伺服器(37 個工具、3 種傳輸方式:SSE/stdio/HTTP)。涵蓋 16 個權限範圍內的路由、快取、壓縮、記憶體、技能、提供者和稽核工具。" + "name": "MCP伺服器", + "description": "連接到OmniRoute MCP伺服器(37 個工具,3 種傳輸方式:SSE/stdio/HTTP)。涵蓋 16 個權限範圍內的路由、快取、壓縮、記憶體、Skills、提供者和審計工具。" }, "omni-agents-a2a": { - "name": "代理程式與 A2A 協定", - "description": "透過 JSON-RPC 2.0 代理間協定與 OmniRoute 互動。6 個內建 A2A 技能:智慧路由、配額管理、提供者探索、成本分析、健康報告、列出能力。" + "name": "智能體與A2A協議", + "description": "通過JSON-RPC 2.0 智能體-to-智能體協議與OmniRoute交互。包含 6 個內置A2A Skills:smart-routing、quota-management、provider-discovery、cost-analysis、health-report、list-capabilities。" }, "omni-version-manager": { - "name": "版本管理員", - "description": "安裝、啟動、停止、重新啟動和更新內嵌服務(9Router、CLIProxyAPI)。監控服務狀態、擷取紀錄,以及為僅限本機的服務端點設定自動啟動。" + "name": "版本管理器", + "description": "安裝、啟動、停止、重新啟動和更新嵌入式服務(9Router、CLIProxyAPI)。監控服務狀態、檢索日誌,併為僅限本地的服務端點設定自動啟動。" }, "omni-inference": { - "name": "推論(OpenAI 相容)", - "description": "核心 OpenAI 相容推論端點:聊天完成、嵌入、圖片、音訊(TTS/STT)、審核、重新排序和 Responses API。AI 代理的主要整合面。" + "name": "推理(相容OpenAI)", + "description": "核心相容OpenAI的推理端點:chat completions、embeddings、images、audio (TTS/STT)、moderations、rerank以及Responses API。AI智能體的主要整合界面。" }, "cli-serve": { - "name": "CLI:伺服器", - "description": "從 CLI 啟動、停止和重新啟動 OmniRoute 伺服器。管理守護程式模式、連接埠設定、自動復原、系統匣整合和儀表板開啟捷徑。" + "name": "CLI: 服務", + "description": "從CLI啟動、停止和重新啟動OmniRoute伺服器。管理守護行程模式、連接埠設定、自動恢復、系統托盤整合以及看板打開快捷方式。" }, "cli-health": { - "name": "CLI:健康狀態", - "description": "從 CLI 檢查伺服器健康狀態、元件狀態和即時指標。執行 `health`、`health components` 和 `health watch` 以取得斷路器和提供者狀態的即時儀表板。" + "name": "CLI: 健康檢查", + "description": "從CLI檢查伺服器健康狀況、組件狀態和實時指標。運行 `health`、`health components` 和 `health watch` 以獲取熔斷器和提供者狀態的實時看板。" }, "cli-providers": { - "name": "CLI:提供者", - "description": "從 CLI 管理提供者連線:列出可用/已設定的提供者、新增、測試、全部測試、驗證、輪換 API 金鑰,以及檢視各提供者指標。" + "name": "CLI: 提供者", + "description": "從CLI管理提供者連接:列出可用/已設定的提供者、新增、測試、test-all、驗證、輪換API Key,並查看每個提供者的指標。" }, "cli-keys": { - "name": "CLI:API 金鑰", - "description": "從 CLI 建立、列出、輪換和撤銷 OmniRoute API 金鑰。管理提供者驗證的 OAuth 流程,並檢查金鑰範圍和到期日。" + "name": "CLI: API Key", + "description": "從CLI創建、列出、輪換和撤銷OmniRoute API Key。管理用於提供者身份驗證的OAuth流程,並檢查金鑰範圍和過期時間。" }, "cli-models": { - "name": "CLI:模型", - "description": "從 CLI 查詢可用的 AI 模型、列出模型別名,以及瀏覽完整模型目錄。依提供者篩選、依能力搜尋,並解析模型名稱變體。" + "name": "CLI: 模型", + "description": "從CLI查詢可用的AI模型、列出模型別名並瀏覽完整的模型目錄。按提供者篩選、按功能搜尋並解析模型名稱變體。" }, "cli-chat": { - "name": "CLI:聊天", - "description": "從 CLI 傳送聊天完成請求、串流回應,以及啟動互動式 REPL 工作階段。支援所有 OmniRoute 提供者、組合路由和系統提示設定。" + "name": "CLI: 對話", + "description": "從CLI發送對話補全、流式傳輸回應並啟動交互式REPL工作階段。支援所有OmniRoute提供者、組合路由和系統提示詞設定。" }, "cli-routing": { - "name": "CLI:路由與組合", - "description": "從 CLI 建立、列出、更新和刪除路由組合。測試路由策略、檢查組合指標,並以互動方式設定容錯移轉鏈。" + "name": "CLI: 路由與組合", + "description": "從CLI創建、列出、更新和刪除路由組合。測試路由策略、檢查組合指標並以交互方式設定回退鏈。" }, "cli-resilience": { - "name": "CLI:韌性與配額", - "description": "從 CLI 檢查和管理斷路器狀態、連線冷卻時間、配額限制和退避等級。重設卡住的提供者並設定韌性臨界值。" + "name": "CLI: 彈性與配額", + "description": "從CLI檢查和管理熔斷器狀態、連接冷卻時間、配額限制和退避級別。重置卡住的提供者並設定彈性閾值。" }, "cli-compression": { - "name": "CLI:壓縮", - "description": "從 CLI 設定與測試提示壓縮。管理 RTK 篩選器、Caveman 規則、堆疊壓縮模式,並使用真實提示預覽壓縮輸出。" + "name": "CLI: 壓縮", + "description": "從CLI設定和測試提示詞壓縮。管理RTK過濾器、Caveman規則、堆疊壓縮模式,並使用真實提示詞預覽壓縮輸出。" }, "cli-contexts": { - "name": "CLI:上下文與工作階段", - "description": "從 CLI 管理上下文工程設定、RTK 篩選器集合和對話工作階段。套用上下文轉送設定並檢查啟用中的上下文管線。" + "name": "CLI: 上下文與工作階段", + "description": "從CLI管理上下文工程設定、RTK過濾器集和對話工作階段。應用context-relay設定並檢查活動的上下文流水線。" }, "cli-cost-usage": { - "name": "CLI:成本與使用量", - "description": "從 CLI 檢視成本明細、Token 使用量和呼叫紀錄。依提供者、模型或日期範圍篩選。匯出使用量報告並檢查各連線的支出。" + "name": "CLI: 成本與用量", + "description": "從CLI查看成本明細、Token用量和呼叫日誌。按提供者、模型或日期範圍篩選。導出用量報告並檢查每個連接的支出。" }, "cli-mcp": { - "name": "CLI:MCP", - "description": "從 CLI 檢查 MCP 伺服器狀態、列出已註冊的工具和範圍、執行工具呼叫,以及管理 MCP 稽核記錄。" + "name": "CLI: MCP", + "description": "從CLI檢查MCP伺服器狀態、列出已註冊的工具和範圍、運行工具呼叫並管理MCP審計日誌。" }, "cli-a2a": { - "name": "CLI:A2A 協定", - "description": "從 CLI 與 OmniRoute A2A 伺服器互動。傳送任務、檢查技能執行歷史,並以互動方式測試 JSON-RPC 2.0 代理間協定。" + "name": "CLI: A2A協議", + "description": "從CLI與OmniRoute A2A伺服器交互。發送任務、檢查Skills執行歷史,並以交互方式測試JSON-RPC 2.0 智能體-to-智能體協議。" }, "cli-tunnel": { - "name": "CLI:隧道", - "description": "從 CLI 啟動和停止隧道連線(ngrok、Cloudflare、自訂)。檢查啟用中的隧道 URL、設定驗證,以及測試外部可連線性。" + "name": "CLI: 隧道", + "description": "從CLI啟動和停止隧道連接(ngrok、Cloudflare、自定義)。檢查活動隧道URL、設定身份驗證並測試外部可達性。" }, "cli-backup-sync": { - "name": "CLI:備份與同步", - "description": "從 CLI 備份和還原 OmniRoute 資料。觸發增量快照、同步至雲端儲存、管理備份排程,以及從封存檔案還原。" + "name": "CLI: 備份與同步", + "description": "通過CLI備份和恢復OmniRoute資料。觸發增量快照、同步到雲存儲、管理備份計劃以及從歸檔檔案恢復。" }, "cli-policy-audit": { - "name": "CLI:政策與稽核", - "description": "從 CLI 檢查稽核記錄、管理存取政策、檢視遙測資料,以及檢閱請求歷史。依事件類型、使用者或時間範圍篩選,以符合合規工作流程。" + "name": "CLI: 策略與審計", + "description": "通過CLI檢查審計日誌、管理訪問策略、查看遙測資料以及審查請求歷史記錄。按事件類型、用戶或時間範圍進行篩選,以滿足合規工作流需求。" }, "cli-batches": { - "name": "CLI:批次與檔案", - "description": "從 CLI 提交與監控批次推論任務。上傳和管理批次處理檔案、擷取結果,並將批次管線整合至 CI/CD 工作流程。" + "name": "CLI: 批處理與檔案", + "description": "通過CLI提交和監控批次推理作業。上傳和管理用於批處理的檔案、檢索結果,並將批處理流水線與CI/CD工作流整合。" }, "cli-eval": { - "name": "CLI:評估", - "description": "從 CLI 建立與執行評估套件、觀看即時基準測試進度、檢視評分卡、比較模型效能,並將評估執行整合至 CI 工作流程。" + "name": "CLI: 評估", + "description": "通過CLI創建和運行評估套件、實時查看基準測試進度、查看記分卡、比較模型性能,並將評估運行與CI工作流整合。" }, "cli-plugins-skills": { - "name": "CLI:外掛、技能與記憶體", - "description": "從 CLI 管理 Omni Skills(列出、安裝、測試、移除)、外掛(建立、設定)和持續性記憶體(搜尋、新增、清除)。" + "name": "CLI: 外掛、Skills與記憶", + "description": "通過CLI管理Omni Skills(列出、安裝、測試、移除)、外掛(創建、設定)和持久記憶(搜尋、新增、清除)。" }, "cli-setup": { - "name": "CLI:設定與配置", - "description": "透過 CLI setup 和 config 指令執行初始設定、設定全域 CLI 設定、管理環境變數、檢查更新,以及設定自動啟動。" + "name": "CLI: 設定與設定", + "description": "通過CLI setup和config命令運行初始設定、設定全域CLI設定、管理環境變量、檢查更新以及設定自動啟動。" }, "cli-skill-collector": { - "name": "CLI:代理技能收集器", - "description": "偵測已安裝的 CLI 程式設計工具(Claude Code、Codex、Cursor、Copilot、Cline 等),在 GitHub 上搜尋相符的代理技能,並透過 OmniRoute 的內建 API 將它們安裝至偵測到的工具。" + "name": "CLI: 智能體Skills收集器", + "description": "檢測已安裝的CLI編程工具(Claude Code、Codex、Cursor、Copilot、Cline等),在GitHub上搜尋匹配的智能體Skills,並通過OmniRoute的內置API將其安裝到檢測到的工具中。" }, "config-codex-cli": { - "name": "設定:Codex CLI", - "description": "逐步代理工作流程,在任何機器(Linux、macOS、Windows)上設定 OpenAI Codex CLI 以使用 OmniRoute 作為 OpenAI 相容後端。偵測作業系統和 Shell,寫入 config.toml 和 7 個命名設定檔,設定環境變數,並驗證設定。" + "name": "設定: Codex CLI", + "description": "分步智能體工作流,用於在任何機器(Linux、macOS、Windows)上設定OpenAI Codex CLI,以將OmniRoute用作相容OpenAI的後端。檢測操作系統和shell,寫入config.toml和 7 個命名設定檔,設定環境變量,並驗證設定。" }, "omni-github-skills": { - "name": "GitHub 技能探索", - "description": "從包含 SKILL.md、CLAUDE.md、.cursorrules 及類似代理技能檔案的 GitHub 儲存庫中搜尋、評分、掃描和匯入代理技能。在 160+ 個提供者類別中探索社群技能,使用啟發式評分評估相關性,檢查惡意程式碼或硬編碼的機密,並安裝至 Hermes、Claude Code、Gemini CLI 或 OpenCode 代理目錄。" + "name": "GitHub Skills發現", + "description": "從包含SKILL.md、CLAUDE.md、.cursorrules及類似智能體Skills檔案的GitHub倉庫中搜尋、評分、掃描和導入智能體Skills。發現跨 160 多個提供者類別的社區Skills,通過啟發式評分評估相關性,檢查惡意軟件或硬編碼機密,並安裝到Hermes、Claude Code、Gemini CLI或OpenCode智能體目錄中。" } }, - "pageTitle": "特工技能", - "pageSubtitle": "__MISSING__:Teach your agent to operate OmniRoute — 23 API areas + 21 CLI families", + "pageTitle": "智能體Skills", + "pageSubtitle": "教你的智能體操作OmniRoute— 22 個API區域 + 20 個CLI家族", "conceptCard": { "agent": { - "title": "代理技能 — 外呼", - "description": "代理技能是機器可讀的 SKILL.md 檔案,外部 AI 代理(Claude Code、Cursor、Copilot 等)從 GitHub 獲取這些檔案,以瞭解如何通過 REST 或 CLI 操作 OmniRoute。它們由代理讀取,而不是由 OmniRoute 執行。", + "title": "智能體Skills—外呼", + "description": "智能體Skills是機器可讀的SKILL.md文件,外部AI智能體(Claude Code、Cursor、Copilot等)從GitHub獲取這些文件,以瞭解如何通過REST或CLI操作OmniRoute。它們由代理讀取,而不是由OmniRoute執行。", "crossLinkLabel": "瞭解區別 →" }, "omni": { - "title": "全能技能 — 入站", - "description": "Omni Skills 是 OmniRoute 在每個請求中注入到模型上下文中的沙盒工具。它們由 OmniRoute 執行,而不是由代理讀取。", + "title": "全能Skills—入站", + "description": "Omni Skills是OmniRoute在每個請求中注入到模型上下文中的沙盒工具。它們由OmniRoute執行,而不是由代理讀取。", "crossLinkLabel": "瞭解差異 →" }, "comparison": { - "colAgent": "特工技能", - "colOmni": "全能技能", + "colAgent": "智能體Skills", + "colOmni": "全能Skills", "whatIs": { "label": "它是什麼", - "agent": "機器可讀的 SKILL.md,教外部代理如何操作 OmniRoute", - "omni": "OmniRoute 注入到 LLM 請求中的可執行工具" + "agent": "機器可讀的SKILL.md,教外部智能體如何操作OmniRoute", + "omni": "OmniRoute注入到LLM請求中的可執行工具" }, "direction": { "label": "方向", - "agent": "外部 — 外部代理學習控制 OmniRoute", - "omni": "入站 — OmniRoute 為經過它的模型提供工具" + "agent": "外部—外部智能體學習控制OmniRoute", + "omni": "入站—OmniRoute為經過它的模型提供工具" }, "executor": { "label": "執行者", - "agent": "外部代理(讀取 markdown → 通過 API/CLI 執行)", - "omni": "OmniRoute 本身(攔截 tool_calls,Docker 沙箱)" + "agent": "外部智能體(讀取markdown → 通過API/CLI執行)", + "omni": "OmniRoute本身(攔截tool_calls,Docker沙箱)" }, "storage": { - "label": "儲存", - "agent": "動態目錄 (/api/agent-skills) → GitHub 上的 SKILL.md", + "label": "存儲", + "agent": "動態目錄 (/api/智能體-skills) → GitHub上的SKILL.md", "omni": "SQLite (SkillsMP / skills.sh / local)" }, "tagline": { "label": "標語", - "agent": "教你的代理使用 OmniRoute", - "omni": "為 OmniRoute 模型提供可執行工具" + "agent": "教你的智能體使用OmniRoute", + "omni": "為OmniRoute模型提供可執行工具" } } }, "filters": { "category": "類別", "area": "區域", - "searchPlaceholder": "搜尋技能…" + "searchPlaceholder": "搜尋Skills…" }, "categoryApi": "API", - "categoryCli": "命令列介面", + "categoryCli": "命令行界面", "categoryConfig": "設定", "filterAll": "所有", "coverageLabel": "覆蓋率", "mcpUrl": "MCP URL", "a2aLink": "A2A", - "mcpPrompt": "將此 MCP 端點新增至您的代理,為其提供 37 個 OmniRoute 工具。", - "a2aPrompt": "將此 Agent Card 註冊到您的協調器中,以啟用 A2A 任務委派。", - "refresh": "重新整理", - "copyUrl": "複製 URL", - "viewOnGithub": "在 GitHub 上檢視", - "previewLoading": "載入技能檔案…", - "previewError": "載入技能檔案失敗。", - "previewEmpty": "選擇一個技能以預覽其檔案。", - "generateButton": "生成缺失的技能", + "mcpPrompt": "將此MCP端點新增到您的智能體,為其提供 37 個OmniRoute工具。", + "a2aPrompt": "向您的編排器註冊此智能體Card,以啟用A2A任務委派。", + "refresh": "刷新", + "copyUrl": "複製URL", + "viewOnGithub": "在GitHub上查看", + "previewLoading": "載入Skills文件…", + "previewError": "載入Skills文件失敗。", + "previewEmpty": "選擇一個Skills以預覽其文件。", + "generateButton": "生成缺失的Skills", "coverageBar": { "complete": "完成", "partial": "部分" }, - "noSkillsFound": "未找到與您的篩選條件匹配的技能。", - "regenerateConfirm": "這將重新生成所有缺失的 SKILL.md 檔案。繼續嗎?", - "regenerateRunning": "正在重新生成技能…", - "regenerateSuccess": "技能成功重生。", - "regenerateError": "無法重新生成技能。" + "noSkillsFound": "未找到與您的篩選條件匹配的Skills。", + "regenerateConfirm": "這將重新生成所有缺失的SKILL.md檔案。繼續嗎?", + "regenerateRunning": "正在重新生成Skills…", + "regenerateSuccess": "Skills成功重生。", + "regenerateError": "無法重新生成Skills。" }, "freeProviderRankingsPage": { "title": "免費提供者排名", - "subtitle": "根據 Arena AI 排行榜的模型 ELO 分數排名的最佳免費提供者", - "loading": "正在載入排名…", + "subtitle": "根據Arena AI排行榜的模型ELO得分排名的最佳免費提供者", + "loading": "正在載入排名...", "errorLoading": "載入排名失敗", - "emptyState": "尚無排名資料。Arena ELO 資料會在啟動時同步(每日)— 請稍後再查看,或觸發手動同步。在功能標記中停用 Arena ELO 同步,或設定 ARENA_ELO_SYNC_ENABLED=false 以選擇退出。", + "emptyState": "暫無可用排名。Arena ELO資料在啟動時同步(每天)—請稍後查看,或觸發手動同步。在Feature Flags中禁用Arena ELO Sync或設定ARENA_ELO_SYNC_ENABLED=false以選擇退出。", "bestModel": "最佳", - "allCategories": "全部分類", + "allCategories": "所有類別", "categoryDefault": "預設", - "categoryCoding": "程式設計", - "categoryReview": "審閱", + "categoryCoding": "編程", + "categoryReview": "審查", "categoryDocumentation": "文件", - "categoryDebugging": "除錯", + "categoryDebugging": "調試", "colRank": "排名", "colProvider": "提供者", - "colTopModel": "頂尖模型", - "colScore": "分數", - "colAvgScore": "平均分數", + "colTopModel": "頂級模型", + "colScore": "得分", + "colAvgScore": "平均得分", "colModels": "模型", "colType": "類型", - "filterConfiguredOnly": "僅顯示已設定", + "filterConfiguredOnly": "僅已設定", "filterAvailableOnly": "僅可用", - "filterAvailableOnlyHelp": "隱藏所有連線皆被限速或配額用盡的提供者。", + "filterAvailableOnlyHelp": "隱藏所有連接均被限流或配額用盡的服務商。", "configuredOnly": "僅已設定", - "configuredOnlyHint": "僅顯示有活躍連線的提供者", - "noConfiguredProviders": "找不到已設定的提供者。請先新增提供者連線。", + "configuredOnlyHint": "僅顯示具有活動連接的服務商", + "noConfiguredProviders": "未找到已設定的服務商。請先新增服務商連接。", "colConfigured": "狀態", "typeAll": "所有類型", - "typeNoauth": "無需註冊", - "typeOauth": "OAuth 登入", - "typeApikey": "API 金鑰", - "sortTypeFirst": "最簡單優先", - "sortTypeFirstHelp": "按註冊難度分組(無需註冊 → OAuth 登入 → API 金鑰),在各組內保持品質順序", - "typeLegend": "無需註冊 = 零設定 · OAuth 登入 = 使用自己的帳戶登入 · API 金鑰 = 自帶金鑰或使用該提供者的免費方案" + "typeNoauth": "免註冊", + "typeOauth": "OAuth登入", + "typeApikey": "API Key", + "sortTypeFirst": "最簡優先", + "sortTypeFirstHelp": "按註冊難度分組(免註冊 → OAuth登入 → API Key),並在每個組內保持質量排序", + "typeLegend": "免註冊 = 零設定·OAuth登入 = 使用您自己的賬戶登入·API Key = 自備金鑰或使用該服務商的免費額度" }, "discovery": { - "title": "提供者探索", - "subtitle": "掃描提供者以尋找免費/無限制的存取方式並審查結果。自選啟用,僅限本地。", - "scanLabel": "要掃描的提供者", - "scanPlaceholder": "例如 huggingchat", + "title": "服務商探索", + "subtitle": "掃描服務商以尋找免費/無限制的訪問方式並查看結果。選擇性加入,僅限本地。", + "scanLabel": "要掃描的服務商", + "scanPlaceholder": "例如huggingchat", "scan": "掃描", "scanning": "正在掃描…", - "scanQueued": "{provider} 掃描完成。", + "scanQueued": "{provider} 的掃描已完成。", "scanFailed": "掃描失敗。", - "loadFailed": "無法載入探索結果。", - "localOnlyNote": "此工具僅限本地(回送)。掃描從本機執行,無法遠端存取。", + "loadFailed": "載入探索結果失敗。", + "localOnlyNote": "此工具僅限本地(環回)。掃描在此機器上運行,且絕無法遠程訪問。", "verify": "驗證", "verifyFailed": "驗證結果失敗。", "delete": "刪除", "deleteFailed": "刪除結果失敗。", "deleteTitle": "刪除探索結果", - "deleteConfirm": "刪除 {provider} 的探索結果?此操作無法復原。", - "emptyTitle": "尚無探索結果", - "emptyDescription": "在上方執行掃描以尋找提供者的免費存取方式。", + "deleteConfirm": "確定要刪除 {provider} 的探索結果嗎?此操作無法撤銷。", + "emptyTitle": "暫無探索結果", + "emptyDescription": "在上方運行掃描以尋找服務商的免費訪問方式。", "risk": "風險", - "method": "方法", - "auth": "驗證", + "method": "方式", + "auth": "認證", "feasibility": "可行性", "models": "模型" }, "noAuthProvider": { - "title": "無需驗證", - "description": "此提供者立即可用 — 無需註冊或 API 金鑰。", - "accountDescription": "即可使用 — 無需註冊。可新增帳號進行速率限制輪換。", - "addAccount": "新增帳號", - "accountName": "{provider} 帳號 {number}", - "accounts": "帳號({count})", + "title": "無需身份驗證", + "description": "此服務商已準備就緒,可立即使用—無需註冊或API Key。", + "accountDescription": "準備就緒—無需註冊。新增賬號以進行限流輪換。", + "addAccount": "新增賬號", + "accountName": "{provider} 賬戶 {number}", + "accounts": "賬戶 ({count})", "adding": "正在新增...", - "autoGeneratedAccount": "使用自動產生的帳號。請選取「{addLabel}」以進行速率限制輪換。", + "autoGeneratedAccount": "正在使用自動生成的賬戶。選擇“{addLabel}”以進行速率限制輪換。", "configureProxy": "設定代理", - "proxyConfigured": "代理已設定:{host}", - "removeAccount": "移除帳號", - "proxyForAccount": "帳號 {number} 的代理", - "saved": "已儲存", - "custom": "自訂", - "noSavedProxies": "無已儲存的代理 — 請在設定 → 代理中新增", - "directConnection": "直接連線(無代理)", + "proxyConfigured": "已設定代理:{host}", + "removeAccount": "移除賬戶", + "proxyForAccount": "賬戶 {number} 的代理", + "saved": "已保存", + "custom": "自定義", + "noSavedProxies": "沒有已保存的代理—請在“設定 → 代理”中新增", + "directConnection": "直連 (無代理)", "host": "主機", "port": "連接埠", - "usernameOptional": "使用者名稱(選填)", - "passwordOptional": "密碼(選填)", + "usernameOptional": "用戶名 (可選)", + "passwordOptional": "密碼 (可選)", "cancel": "取消", - "saving": "正在儲存...", - "save": "儲存", - "createConnectionFailed": "建立連線失敗", - "updateConnectionFailed": "更新連線失敗", - "fetchProxiesFailed": "取得代理清單失敗", - "noSavedProxiesError": "找不到已儲存的代理。請先在設定 → 代理中新增代理。", + "saving": "正在保存...", + "save": "保存", + "createConnectionFailed": "創建連接失敗", + "updateConnectionFailed": "更新連接失敗", + "fetchProxiesFailed": "獲取代理失敗", + "noSavedProxiesError": "未找到已保存的代理。請先在“設定 → 代理”中新增代理。", "updateProviderFailed": "更新提供者失敗", "providerEnabled": "{provider} 已啟用", - "providerDisabled": "{provider} 已停用" + "providerDisabled": "{provider} 已禁用" }, "gamification": { "leaderboardScopes": { - "allTime": "全部時間", + "allTime": "所有時間", "weekly": "每週", "monthly": "每月", - "tokensShared": "已分享代幣" + "tokensShared": "已共享Token" }, - "leaderboardLoadFailed": "無法載入排行榜(HTTP {status})", + "leaderboardLoadFailed": "載入排行榜失敗 (HTTP {status})", "scope": "範圍", - "tokensShared": "已分享代幣", - "points": "點數", + "tokensShared": "已共享token", + "points": "積分", "rank": "排名", "name": "名稱", "score": "分數", - "leaderboardEmpty": "此範圍尚無任何條目。開始使用 OmniRoute 即可出現在排行榜上!", - "profileLoadFailed": "無法載入個人檔案資料", + "leaderboardEmpty": "此範圍暫無記錄。開始使用OmniRoute以在排行榜上顯示!", + "profileLoadFailed": "載入個人資料資料失敗", "levelTitles": { - "beginner": "初學者", + "beginner": "新手", "explorer": "探索者", "expert": "專家", "master": "大師", @@ -11518,29 +11518,29 @@ "bronze": "青銅", "silver": "白銀", "gold": "黃金", - "platinum": "白金", + "platinum": "鉑金", "diamond": "鑽石" }, - "tierLabel": "階層:{tier}", + "tierLabel": "段位:{tier}", "dayStreak": "連續 {count} 天", "levelProgress": "等級 {current} → {next}", - "totalXpEarned": "總共獲得 {count} 經驗值", - "maintainStreak": "每天持續使用 OmniRoute 以維持您的連續記錄!", - "badgesTitle": "徽章({earned}/{total})", - "noBadges": "尚無可用的徽章。", + "totalXpEarned": "累計獲得 {count} XP", + "maintainStreak": "每天堅持使用OmniRoute以保持您的連續記錄!", + "badgesTitle": "徽章 ({earned}/{total})", + "noBadges": "暫無可用徽章。", "hiddenBadge": "隱藏成就", "earnedDate": "獲得於 {date}", "earnedOn": "於 {date} 獲得", "category": "類別", "rarities": { "common": "普通", - "uncommon": "不凡", + "uncommon": "罕見", "rare": "稀有", "epic": "史詩", "legendary": "傳說" }, "categories": { - "usage": "使用量", + "usage": "使用", "sharing": "分享", "contribution": "貢獻", "streak": "連續記錄", @@ -11548,131 +11548,131 @@ }, "badges": { "first-token": { - "name": "第一個代幣", - "description": "已發出您的第一個 API 請求", - "criteria": "完成您透過 OmniRoute 的第一個 API 請求。" + "name": "首個Token", + "description": "完成了您的首次API請求", + "criteria": "通過OmniRoute完成您的首次API請求。" }, "token-consumer": { - "name": "代幣消費者", - "description": "已發出 1,000 個 API 請求", - "criteria": "透過 OmniRoute 完成 1,000 個 API 請求。" + "name": "Token消費者", + "description": "完成了 1,000 次API請求", + "criteria": "通過OmniRoute完成 1,000 次API請求。" }, "token-machine": { - "name": "代幣機器", - "description": "已發出 10,000 個 API 請求", - "criteria": "透過 OmniRoute 完成 10,000 個 API 請求。" + "name": "Token機器", + "description": "完成了 10,000 次API請求", + "criteria": "通過OmniRoute完成 10,000 次API請求。" }, "token-whale": { - "name": "代幣巨鯨", - "description": "已發出 100,000 個 API 請求", - "criteria": "透過 OmniRoute 完成 100,000 個 API 請求。" + "name": "Token巨鯨", + "description": "完成了 100,000 次API請求", + "criteria": "通過OmniRoute完成 100,000 次API請求。" }, "generous": { "name": "慷慨", - "description": "已與他人分享 1,000 個代幣", - "criteria": "與其他使用者分享總共 1,000 個代幣。" + "description": "與他人分享了 1,000 個Token", + "criteria": "與其他用戶累計分享 1,000 個Token。" }, "philanthropist": { "name": "慈善家", - "description": "已與他人分享 10,000 個代幣", - "criteria": "與其他使用者分享總共 10,000 個代幣。" + "description": "與他人分享了 10,000 個Token", + "criteria": "與其他用戶累計分享 10,000 個Token。" }, "token-santa": { - "name": "代幣聖誕老人", - "description": "已與他人分享 100,000 個代幣", - "criteria": "與其他使用者分享總共 100,000 個代幣。" + "name": "Token聖誕老人", + "description": "與他人分享了 100,000 個Token", + "criteria": "與其他用戶累計分享 100,000 個Token。" }, "community-hero": { - "name": "社群英雄", - "description": "已與他人分享 1,000,000 個代幣", - "criteria": "與其他使用者分享總共 1,000,000 個代幣。" + "name": "社區英雄", + "description": "與他人分享了 1,000,000 個Token", + "criteria": "與其他用戶累計分享 1,000,000 個Token。" }, "explorer": { "name": "探索者", - "description": "已使用 5 個不同的提供者", - "criteria": "使用至少 5 個不同的 AI 提供者。" + "description": "使用了 5 個不同的提供者", + "criteria": "使用至少 5 個不同的AI提供者。" }, "polyglot": { - "name": "多語言高手", - "description": "已使用 10 個不同的模型", - "criteria": "使用至少 10 個不同的 AI 模型。" + "name": "多語通", + "description": "使用了 10 個不同的模型", + "criteria": "使用至少 10 個不同的AI模型。" }, "architect": { "name": "架構師", - "description": "已建立 3 條組合路由", - "criteria": "建立 3 條組合路由。" + "description": "創建了 3 個組合路由", + "criteria": "創建 3 個組合路由。" }, "speedster": { - "name": "速度之星", - "description": "在 100 個請求中保持平均延遲低於 500 毫秒", - "criteria": "在 100 個請求中保持平均延遲低於 500 毫秒。" + "name": "極速者", + "description": "在 100 次請求中保持平均延遲低於 500 毫秒", + "criteria": "在 100 次請求中保持平均延遲低於 500 毫秒。" }, "resilient": { - "name": "韌性", - "description": "已維持 100% 正常運行時間 7 天", - "criteria": "連續 7 天維持 100% 正常運行時間。" + "name": "堅韌不拔", + "description": "連續 7 天保持 100% 的正常運行時間", + "criteria": "連續 7 天保持 100% 的正常運行時間。" }, "daily-user": { "name": "每日用戶", - "description": "連續活躍 3 天", - "criteria": "連續使用 OmniRoute 3 天。" + "description": "連續 3 天活躍", + "criteria": "連續 3 天使用OmniRoute。" }, "weekly-warrior": { - "name": "每週戰士", - "description": "連續活躍 7 天", - "criteria": "連續使用 OmniRoute 7 天。" + "name": "每週勇士", + "description": "連續 7 天活躍", + "criteria": "連續 7 天使用OmniRoute。" }, "monthly-master": { - "name": "月度大師", - "description": "連續活躍 30 天", - "criteria": "連續使用 OmniRoute 30 天。" + "name": "每月大師", + "description": "連續 30 天活躍", + "criteria": "連續 30 天使用OmniRoute。" }, "unstoppable": { "name": "勢不可擋", - "description": "連續活躍 365 天", - "criteria": "連續使用 OmniRoute 365 天。" + "description": "連續 365 天活躍", + "criteria": "連續 365 天使用OmniRoute。" }, "early-adopter": { "name": "早期採用者", - "description": "在遊戲化功能上線的第一個月內加入", - "criteria": "在遊戲化功能上線後的第一個月內加入。" + "description": "在遊戲化推出的首月內加入", + "criteria": "在遊戲化推出後的首月內加入。" }, "bug-hunter": { - "name": "錯誤獵人", - "description": "已回報 5 個問題", - "criteria": "回報 5 個有效的問題。" + "name": "Bug獵手", + "description": "報告了 5 個問題", + "criteria": "報告 5 個有效問題。" }, "contributor": { "name": "貢獻者", - "description": "已合併 1 個 pull request", - "criteria": "有 1 個 pull request 被合併至 OmniRoute。" + "description": "合併了 1 個拉取請求", + "criteria": "將 1 個拉取請求合併到OmniRoute中。" }, "community-leader": { - "name": "社群領袖", - "description": "已在任何排行榜上進入前 10 名", - "criteria": "在任何排行榜上進入前 10 名。" + "name": "社區領袖", + "description": "在任意排行榜中進入前 10 名", + "criteria": "在任意排行榜中進入前 10 名。" }, "secret-badge": { - "name": "???", - "description": "一項隱藏成就等待著您...", + "name": "???", + "description": "一個隱藏成就等待解鎖...", "criteria": "完成隱藏成就以揭曉此徽章。" } } }, "featureFlags": { - "title": "功能旗標", - "activeCount": "{count} 個啟用中", + "title": "功能標誌", + "activeCount": "{count} 個已啟用", "inactiveCount": "{count} 個未啟用", - "dbOverrideCount": "{count} 個資料庫覆寫", - "searchPlaceholder": "搜尋旗標...", + "dbOverrideCount": "{count} 個資料庫覆蓋", + "searchPlaceholder": "搜尋標誌...", "categories": { "all": "全部", - "security": "安全性", + "security": "安全", "network": "網路", - "policies": "政策", - "runtime": "執行時期", + "policies": "策略", + "runtime": "運行時", "cli": "CLI", - "health": "健康狀態", + "health": "健康狀況", "requiresRestart": "需要重新啟動" }, "categoryLabel": "類別:{category}", @@ -11680,299 +11680,299 @@ "danger": "危險", "requiresRestart": "需要重新啟動", "source": "來源", - "resetFlag": "將 {label} 重設為預設值", - "reset": "重設", - "loadFailed": "無法載入功能旗標", - "updateFailedHttp": "更新旗標失敗:HTTP {status}", - "updateFailed": "更新旗標失敗", + "resetFlag": "將 {label} 重置為預設值", + "reset": "重置", + "loadFailed": "載入功能標誌失敗", + "updateFailedHttp": "更新標誌失敗:HTTP {status}", + "updateFailed": "更新標誌失敗", "restartFailedHttp": "重新啟動失敗:HTTP {status}", "restartFailed": "重新啟動失敗", - "resetOverridesFailedHttp": "重設覆寫失敗:HTTP {status}", - "resetOverridesFailed": "重設覆寫失敗", - "restartRequiredCount": "{count} 項變更需要重新啟動伺服器才能生效。", - "restartRequiredDescription": "這些旗標僅在程序重新載入後才生效。立即重新啟動或繼續編輯——待處理的旗標會保留在佇列中,直到您確認。", + "resetOverridesFailedHttp": "Failed to reset overrides: HTTP {status}", + "resetOverridesFailed": "重置覆蓋失敗", + "restartRequiredCount": "{count, plural, one {# 個更改需要} other {# 個更改需要}}重新啟動伺服器才能生效。", + "restartRequiredDescription": "這些標誌僅在行程重新載入後生效。立即重新啟動或繼續編輯—待處理的標誌將保持排隊狀態,直到您確認。", "restartServer": "重新啟動伺服器", "cancel": "取消", "restarting": "正在重新啟動…", "confirmRestart": "確認重新啟動", - "restartViewDescription": "這些旗標僅在伺服器重新啟動後才生效。您可以像其他旗標一樣切換它們——變更會立即持久化,但新值僅在程序啟動時讀取。使用上方的重新啟動伺服器橫幅來套用。", + "restartViewDescription": "這些標誌僅在伺服器重新啟動後生效。像切換其他標誌一樣切換它們—更改會立即持久化,但新值僅在行程啟動時讀取。使用上方的 重新啟動伺服器 橫幅來應用。", "retry": "重試", - "noSearchResults": "沒有符合搜尋條件的旗標", - "resetAllOverrides": "重設所有覆寫", - "confirmResetOverrides": "重設所有 {count} 個資料庫覆寫?", - "resetting": "重設中...", - "confirmReset": "確認重設", + "noSearchResults": "沒有匹配您搜尋的標誌", + "resetAllOverrides": "重置所有覆蓋", + "confirmResetOverrides": "重置所有 {count} 個資料庫覆蓋嗎?", + "resetting": "正在重置...", + "confirmReset": "確認重置", "enumValues": { "off": "關閉", "warn": "警告", - "block": "封鎖", - "redact": "編輯", - "disabled": "已停用", + "block": "攔截", + "redact": "脫敏", + "disabled": "已禁用", "dual": "雙重", "alias": "別名", - "canonical": "標準" + "canonical": "規範" }, "definitions": { "REQUIRE_API_KEY": { - "description": "要求所有傳入請求都需要 API 金鑰。" + "description": "所有傳入請求都需要API Key。" }, "INPUT_SANITIZER_ENABLED": { - "description": "啟用所有請求的輸入清理功能。" + "description": "為所有請求啟用輸入淨化。" }, "INJECTION_GUARD_MODE": { - "description": "設定提示注入防護模式。" + "description": "設定提示詞注入防護模式。" }, "PII_REDACTION_ENABLED": { - "description": "從請求中編輯個人識別資訊(PII)。" + "description": "對請求中的個人身份資訊 (PII) 進行脫敏。" }, "PII_RESPONSE_SANITIZATION": { - "description": "清理提供者回應中的個人識別資訊(PII)。" + "description": "對服務商回應中的個人身份資訊 (PII) 進行淨化。" }, "PII_RESPONSE_SANITIZATION_MODE": { - "description": "選擇如何處理回應中的 PII:redact 將其取代,warn 僅記錄它,block 拒絕回應,off 則停用清理。" + "description": "選擇如何處理回應中的PII:redact將其替換,warn僅記錄日誌,block拒絕回應,off禁用淨化。" }, "OUTBOUND_SSRF_GUARD_ENABLED": { - "description": "封鎖對私有或內部 IP 範圍的對外請求。" + "description": "攔截髮往私有或內部IP地址段的傳出請求。" }, "ALLOW_API_KEY_REVEAL": { - "description": "允許已驗證的儀表板使用者顯示儲存的 API 金鑰,而不僅是看到遮罩值。" + "description": "允許已認證的看板用戶顯示存儲的API Key,而不是僅看到掩碼值。" }, "ENABLE_TLS_FINGERPRINT": { - "description": "啟用 TLS 指紋隱匿模式。" + "description": "啟用TLS指紋隱身模式。" }, "ONEPROXY_ENABLED": { - "description": "啟用透過 1proxy 的請求代理。" + "description": "啟用通過 1proxy的請求代理。" }, "PROXY_AUTO_SELECT_ENABLED": { - "description": "當連線未指定代理時,自動選取第一個可用的註冊表代理。預設為關閉,因為否則一個註冊表代理會成為所有流量的全域備援(#3332)。" + "description": "當連接未分配代理時,自動選擇第一個可用的註冊表代理。預設關閉,否則一個註冊表代理會成為所有流量的全域備用代理 (#3332)。" }, "OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK": { - "description": "當代理可達性檢查失敗時,允許 OAuth 和提供者驗證流程繞過固定代理。預設為關閉,因為這可能變更帳戶的出口 IP。" + "description": "當代理可達性檢查失敗時,允許OAuth和服務商驗證流程繞過固定的代理。預設關閉,因為這可能會改變賬戶的出口IP。" }, "MITM_DISABLE_TLS_VERIFY": { - "description": "停用 MITM 代理的 TLS 憑證驗證。" + "description": "禁用MITM代理的TLS證書驗證。" }, "OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS": { - "description": "允許指向私有或內部網路的提供者 URL。" + "description": "允許指向私有或內部網路的服務商URL。" }, "OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS": { - "description": "允許 localhost、LAN 和私有 IP 範圍的提供者。這是本機 OpenAI 相容模型所需的設定,且預設為啟用。雲端中繼資料端點(如 169.254.169.254)仍維持封鎖。" + "description": "允許localhost、局域網 (LAN) 和私有IP地址段上的服務商。本地相容OpenAI的模型需要此設定,且預設啟用。雲元資料端點(如 169.254.169.254)仍將被攔截。" }, "ENABLE_CC_COMPATIBLE_PROVIDER": { - "description": "啟用 Claude Code 相容的提供者模式。" + "description": "啟用相容Claude Code的服務商模式。" }, "TOOL_POLICY_MODE": { - "description": "設定工具使用政策的強制執行模式。" + "description": "設定工具使用策略執行模式。" }, "RATE_LIMIT_AUTO_ENABLE": { "description": "根據使用模式自動啟用速率限制。" }, "ALLOW_MULTI_CONNECTIONS_PER_COMPAT_NODE": { - "description": "允許每個相容性節點的多重連線。" + "description": "允許每個相容性節點有多個連接。" }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { - "description": "在將 Responses API 穿透串流轉發至用戶端之前,移除內部註解階段的輸出項目。停用此旗標以接收原始上游註解。" + "description": "在將Responses API透傳流轉發給客戶端之前,從中移除內部註釋階段的輸出項。禁用此標誌以接收原始上游註釋。" }, "OMNIROUTE_MCP_ENFORCE_SCOPES": { - "description": "強制執行 MCP 工具存取的作用域限制。" + "description": "對MCP工具訪問強制執行作用域限制。" }, "OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS": { - "description": "壓縮 MCP 工具描述以減少 token 用量。" + "description": "壓縮MCP工具描述以減少token使用量。" }, "OMNIROUTE_ENABLE_RUNTIME_BACKGROUND_TASKS": { - "description": "在執行時期啟用背景任務處理。" + "description": "在運行時啟用後台任務處理。" }, "OMNIROUTE_DISABLE_BACKGROUND_SERVICES": { - "description": "停用所有背景服務,包括配額重新整理和同步。" + "description": "禁用所有後台服務,包括配額刷新和同步。" }, "OMNIROUTE_RTK_TRUST_PROJECT_FILTERS": { - "description": "信任專案層級的 RTK 篩選器而不進行驗證。" + "description": "信任項目級RTK過濾器而無需驗證。" }, "OMNIROUTE_ENABLE_LIVE_WS": { - "description": "在匯入時於回送埠 20132 啟動即時儀表板 WebSocket 伺服器。將旗標設為 0 或 false 以停用。LAN 暴露還需要 LIVE_WS_HOST=0.0.0.0 和 LIVE_WS_ALLOWED_ORIGINS。" + "description": "導入時在環回連接埠 20132 上啟動實時看板WebSocket伺服器。將該標誌設定為 0 或false可禁用它。局域網暴露還需要LIVE_WS_HOST=0.0.0.0 和LIVE_WS_ALLOWED_ORIGINS。" }, "OMNIROUTE_CODEX_WS_ENABLED": { - "description": "允許 Codex 透過 WebSocket 使用 Responses。停用時,Codex 會回退至 HTTP Responses。" + "description": "允許Codex通過WebSocket使用Responses。禁用時,Codex將回退到HTTP Responses。" }, "OMNIROUTE_EMERGENCY_FALLBACK": { - "description": "將預算耗盡的請求路由至緊急免費備用提供者和模型。" + "description": "將預算耗盡的請求路由到緊急免費備用提供者和模型。" }, "STREAM_RECOVERY_ENABLED": { - "description": "在任何回應位元組到達用戶端之前,透明地重試被截斷的上游 SSE 串流。" + "description": "在任何回應位元組到達客戶端之前,透明地重試被截斷的上游SSE流。" }, "STREAM_RECOVERY_MIDSTREAM_ENABLED": { - "description": "允許串流復原在位元組已到達用戶端後再次請求回應並將其拼接。" + "description": "允許流恢復在位元組已到達客戶端後重新請求回應並進行拼接。" }, "MODEL_CATALOG_INCLUDE_NAMES": { - "description": "在 /v1/models 回應中包含顯示友善的名稱欄位。對於僅接受模型 ID 的用戶端請停用此項。" + "description": "在 /v1/models回應中包含易於顯示的名稱欄位。對於僅接受模型ID的客戶端,請禁用此項。" }, "MODELS_CATALOG_PREFIX_MODE": { - "description": "控制 /v1/models 中的模型 ID 前綴:dual 同時發出別名與標準前綴,alias 僅發出簡短前綴,canonical 僅發出完整的提供者 ID。" + "description": "控制 /v1/models中的模型ID前綴:dual發送別名和規範前綴,alias僅發送短前綴,canonical僅發送完整提供者ID。" }, "ARENA_ELO_SYNC_ENABLED": { - "description": "定期同步 Arena AI 排行榜的 ELO 資料以進行模型智慧排名。" + "description": "定期同步Arena AI排行榜ELO資料以進行模型智能排名。" }, "CLI_COMPAT_ALL": { - "description": "啟用所有 CLI 用戶端的相容模式。" + "description": "為所有CLI客戶端啟用相容模式。" }, "MODEL_ALIAS_COMPAT_ENABLED": { "description": "啟用模型別名相容層。" }, "PRICING_SYNC_ENABLED": { - "description": "自動同步定價資料。PRICING_SYNC_ENABLED 環境變數也必須為 true。" + "description": "自動同步定價資料。PRICING_SYNC_ENABLED環境變量也必須為true。" }, "OMNIROUTE_AUTO_SYNC_CODEX_PROFILES": { - "description": "在提供者-模型同步後,從即時目錄重新產生 ~/.codex/*.config.toml 設定檔。這絕不會更改作用中或預設的 Codex 配置,且預設為關閉。" + "description": "提供者-模型同步後,從實時目錄重新生成 ~/.codex/*.config.toml設定檔。這絕不會更改活動或預設的Codex設定,並且預設關閉。" }, "OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES": { - "description": "在提供者-模型同步後,從即時目錄重新產生 ~/.claude/profiles//settings.json 設定檔。這絕不會更改作用中或預設的 Claude 配置,且預設為關閉。" + "description": "提供者-模型同步後,從實時目錄重新生成 ~/.claude/profiles//settings.json設定檔。這絕不會更改活動或預設的Claude設定,並且預設關閉。" }, "OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK": { - "description": "停用本機執行個體的健康檢查端點。" + "description": "禁用本地實例健康檢查端點。" }, "OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK": { - "description": "停用權杖驗證的健康檢查。" + "description": "禁用token驗證健康檢查。" }, "SKILLS_SANDBOX_NETWORK_ENABLED": { - "description": "在技能沙盒中啟用網路存取。" + "description": "在Skills沙箱中啟用網路訪問。" } }, "ccDiscoveryAliasesEnvWarning": "__MISSING__:Active via environment variable (EXPOSE_CC_DISCOVERY_ALIASES) — this overrides any dashboard toggle below." }, "comboControl": { - "title": "Combo Control Center", - "unavailable": "Combo Control Center 無法使用", - "backToCombos": "返回 Combos", - "loadFailed": "載入 Combo Control Center 失敗", + "title": "組合控制中心", + "unavailable": "組合控制中心不可用", + "backToCombos": "返回組合", + "loadFailed": "無法載入組合控制中心", "state": { "healthy": "健康", - "warning": "需要留意", + "warning": "需要注意", "critical": "嚴重", - "idle": "閒置" + "idle": "空閒" }, - "active": "啟用中", - "disabled": "已停用", - "description": " 的路由行為、健康狀態、配額、執行時期指標與近期決策的集中唯讀檢視。", - "refresh": "重新整理", - "editInCombos": "在 Combos 中編輯", - "requests": "請求", + "active": "活躍", + "disabled": "已禁用", + "description": "用於查看 的路由行為、健康狀況、配額、運行時指標和最近決策的中央只讀視圖。", + "refresh": "刷新", + "editInCombos": "在組合中編輯", + "requests": "請求數", "success": "成功", "latency": "延遲", "quota": "配額", - "rangeWindow": "{range} 視窗", - "runtimeHealthBlend": "執行時期/健康混合", + "rangeWindow": "{range} 窗口", + "runtimeHealthBlend": "運行時/健康度融合", "averageResponseTime": "平均回應時間", "worstQuota": "最差配額", - "providerAccountTelemetry": "提供者/帳戶遙測", - "overview": "總覽", - "overviewDescription": "此 combo 的策略、執行時期狀態與控制連結。", + "providerAccountTelemetry": "提供者/賬戶遙測", + "overview": "概覽", + "overviewDescription": "此組合的策略、運行時狀態和控制連結。", "strategy": "策略", "targets": "目標", "providers": "提供者", - "targetCounts": "{configured} 已設定 · {resolved} 已解析", - "healthReasons": "健康原因", + "targetCounts": "{configured} 已設定· {resolved} 已解析", + "healthReasons": "健康狀況原因", "healthReason": { - "noRecentTraffic": "近期無 combo 流量", - "lowSuccessRate": "成功率偏低", + "noRecentTraffic": "近期無組合流量", + "lowSuccessRate": "成功率低", "successBelowTarget": "成功率低於目標", - "highFallbackRate": "降級回退率高", - "elevatedFallbackRate": "降級回退率偏高", - "quotaExhausted": "至少一個配額已耗盡", - "quotaNearlyExhausted": "配額幾乎耗盡", - "quotaGettingLow": "配額即將不足", - "trafficHighlySkewed": "流量分布極度不均衡", - "comboHealthy": "Combo 看起來健康" + "highFallbackRate": "回退率高", + "elevatedFallbackRate": "回退率升高", + "quotaExhausted": "至少有一個配額已用盡", + "quotaNearlyExhausted": "配額即將用盡", + "quotaGettingLow": "配額不足", + "trafficHighlySkewed": "流量分佈嚴重傾斜", + "comboHealthy": "組合狀態健康" }, "configuredTargets": "已設定的目標", - "configuredTargetsDescription": "已儲存的 combo 步驟,並在可用時補充對應的健康資料。", - "noConfiguredTargets": "尚未設定任何目標。", - "runtimeConfig": "執行時期設定", - "runtimeConfigDescription": "為此 combo 選取進階設定。", - "noRuntimeConfig": "無自訂執行時期設定。", - "resolvedTargets": "已解析的執行時期目標", - "resolvedTargetsDescription": "巢狀 combo 解析後扁平化的目標及目標層級指標。", - "noResolvedTargetHealth": "尚無已解析的目標健康資料。", - "quotaDistribution": "配額與分布", - "noQuotaSnapshots": "此 combo 時間視窗內無配額快照。", - "usageSkew": "使用偏差", - "recentDecisions": "近期路由決策", - "recentDecisionsDescription": "依此 combo 名稱篩選的近期呼叫記錄。開啟 Analytics 以取得完整解釋。", - "noRecentLogs": "找不到近期的 combo 呼叫記錄。", + "configuredTargetsDescription": "保存的組合步驟,在可用時會豐富匹配的健康資料。", + "noConfiguredTargets": "未設定目標。", + "runtimeConfig": "運行時設定", + "runtimeConfigDescription": "此組合選定的高級設定。", + "noRuntimeConfig": "無自定義運行時設定。", + "resolvedTargets": "已解析的運行時目標", + "resolvedTargetsDescription": "嵌套組合解析和目標級指標後的扁平化目標。", + "noResolvedTargetHealth": "尚無已解析的目標健康狀況。", + "quotaDistribution": "配額與分佈", + "noQuotaSnapshots": "此組合窗口無配額快照。", + "usageSkew": "使用傾斜", + "recentDecisions": "最近的路由決策", + "recentDecisionsDescription": "按此組合名稱過濾的最近呼叫日誌。打開分析以獲取完整解釋性。", + "noRecentLogs": "未找到最近的組合呼叫日誌。", "quickLinks": "快速連結", - "comboHealth": "Combo 健康狀態", - "callLogs": "呼叫記錄", - "costs": "成本", - "playground": "遊樂場", - "nestedCombo": "巢狀 combo", + "comboHealth": "組合健康狀況", + "callLogs": "呼叫日誌", + "costs": "費用", + "playground": "Playground", + "nestedCombo": "嵌套組合", "modelTarget": "模型目標", - "weight": "權重 {value}%", - "comboReference": "Combo 參考", - "accountShort": "帳戶 {id}", + "weight": "{value}% 權重", + "comboReference": "組合引用", + "accountShort": "賬戶 {id}", "keyShort": "金鑰 {id}", "stepShort": "步驟 {id}", "dynamic": "動態", "unknown": "未知", "unknownProvider": "未知提供者", "unknownModel": "未知模型", - "resolvedTargetMetrics": "{requests} 請求 · {success} 成功 · {latency} · 配額 {quota}" + "resolvedTargetMetrics": "{requests} 請求· {success} 成功· {latency} ·配額 {quota}" }, "usageLimits": { - "usdUsageQuota": "USD 用量配額", - "usdUsageQuotaDescription": "當此金鑰的本地 USD 支出達到設定的每日或每週配額後,會以 400 API 錯誤封鎖該金鑰。", - "dailyQuotaUsd": "每日配額(USD)", - "weeklyQuotaUsd": "每週配額(USD)", - "quotaWindowDescription": "每週配額在可用時會遵循快取的 Claude 每週重置時間,否則會備用滾動 7 天區間。每日配額使用 Fortaleza 日曆日。", - "apiKeyUsdQuota": "API 金鑰 USD 配額", - "apiKeyUsdQuotaDescription": "啟用後,@@om-usage 會傳回每日配額、每週配額、每日支出和每週支出(以 USD 計)。每週配額在可用時會遵循快取的 Claude 重置時間。", + "usdUsageQuota": "美元使用配額", + "usdUsageQuotaDescription": "在此金鑰的本地美元支出達到設定的每日或每週配額後,將阻止該金鑰並返回 400 API錯誤。", + "dailyQuotaUsd": "每日配額 (USD)", + "weeklyQuotaUsd": "每週配額 (USD)", + "quotaWindowDescription": "每週配額在可用時遵循快取的Claude每週重置規則;否則將回退到捲動 7 天窗口。每日配額使用福塔萊薩 (Fortaleza) 日曆日。", + "apiKeyUsdQuota": "API Key美元配額", + "apiKeyUsdQuotaDescription": "啟用後,@@om-usage將返回以美元為單位的每日配額、每週配額、每日支出和每週支出。每週配額在可用時遵循快取的Claude重置規則。", "enabled": "已啟用", - "disabled": "已停用", + "disabled": "已禁用", "dailySpend": "每日支出", "weeklySpend": "每週支出", "dailyQuota": "每日配額", "weeklyQuota": "每週配額", - "fallbackRollingDays": "備用:滾動 {days} 天", - "fallbackRollingDaysShort": "備用滾動 {days}天", - "resetDueNow": "即將重置", + "fallbackRollingDays": "回退:捲動 {days} 天", + "fallbackRollingDaysShort": "回退捲動 {days} 天", + "resetDueNow": "已到重置時間", "resetsInHours": "{count} 小時後重置", - "resetsInDays": "{count} 天後重置", - "saveFailed": "儲存用量限制失敗", - "saving": "正在儲存...", - "saveQuota": "儲存配額", - "loadUsdCostsFailed": "載入 USD 成本失敗", - "usdCost": "USD 成本", + "resetsInDays": "{count} 天后重置", + "saveFailed": "保存使用限制失敗", + "saving": "正在保存...", + "saveQuota": "保存配額", + "loadUsdCostsFailed": "載入美元費用失敗", + "usdCost": "美元費用", "close": "關閉", - "loadingUsdCosts": "正在載入 USD 成本", - "used": "已使用", + "loadingUsdCosts": "正在載入USD費用", + "used": "已用", "quotaUsed": "已用配額", - "estimatedFullQuota": "估計 100%", + "estimatedFullQuota": "預估 100%", "rows": "行", - "window": "區間", + "window": "窗口", "unknown": "未知", - "fromRecordedReset": "根據記錄的 {quota} 重置", - "fromObservedReset": "根據觀測到的 {quota} 重置", - "fromReset": "根據 {quota} 重置", + "fromRecordedReset": "自記錄的 {quota} 重置起", + "fromObservedReset": "自觀察到的 {quota} 重置起", + "fromReset": "自 {quota} 重置起", "quotaEstimator": "配額估算器", - "noApiKeyUsage": "此提供者區間內無 API 金鑰用量。", - "requestTokenCounts": "{requests} 個請求 · {tokens} 個 token", - "noUsdLimit": "無 USD 限制" + "noApiKeyUsage": "在此提供者窗口期內無API Key使用記錄。", + "requestTokenCounts": "{requests} 次請求· {tokens} 個token", + "noUsdLimit": "無USD限制" }, "freeBudget": { - "title": "免費代幣預算", - "remaining": "剩餘 {remaining} · 佔 {total} 的 {percent}%", - "steadyMonth": "穩定/月", - "firstMonth": "第一個月(+ 額度)", - "usedThisMonth": "本月已使用", - "segmentHint": "每個區段 = 一個免費池 · 池間去重、誠實計數(無膨脹的速率限制上限)。", - "boost": "一次性 $10 OpenRouter 充值即可解鎖約 {tokens}/月(50 → 1000 請求/天)", - "uncapped": "永久免費,無公佈上限(有速率限制)——真實存取,不計入標題數字:", - "tosRestricted": "{count} 個模型被標記為受 ToS 限制——由您決定", + "title": "免費Token預算", + "remaining": "剩餘 {remaining} ·佔 {total} 的 {percent}%", + "steadyMonth": "穩定 / 月", + "firstMonth": "首月 (+ 額度)", + "usedThisMonth": "本月已用", + "segmentHint": "每個分段 = 一個免費池·池去重,真實統計(無虛高的速率限制上限)。", + "boost": "一次性充值 $10 OpenRouter即可每月多解鎖約 ~{tokens}(50 → 1000 次請求/天)", + "uncapped": "永久免費,無公開上限(受速率限制)—實際可用,未計入總覽:", + "tosRestricted": "{count, plural, one {# 個模型} other {# 個模型}}被標記為受ToS限制—由您決定", "provider": "提供者", "model": "模型", "modelName": "模型名稱", "type": "類型", - "tokensMonth": "代幣/月", + "tokensMonth": "Token/月", "credit": "{tokens} 額度", - "hideTosRestricted": "隱藏受 ToS 限制的", + "hideTosRestricted": "隱藏受ToS限制項", "sort": "排序", "freeType": { "daily": "每日", @@ -11980,26 +11980,26 @@ "creditMonthly": "額度/月", "uncapped": "無上限", "signupCredit": "註冊額度", - "keyless": "無需金鑰", - "discontinued": "已停產" + "keyless": "免金鑰", + "discontinued": "已停用" }, "tosTitle": { - "avoid": "受 ToS 限制——請審閱條款", - "caution": "注意——個人使用/代理條款", - "ok": "通常較為寬鬆" + "avoid": "受ToS限制—請查看條款", + "caution": "注意—個人使用 / 代理條款", + "ok": "總體寬鬆" } }, "providerHealthAutopilot": { - "title": "提供者健康自動駕駛", - "description": "找出不穩定的提供者、帳號冷卻、過時錯誤及可安全手動修復的問題。", - "loadFailed": "載入自動駕駛報告失敗", - "actionApplied": "已套用 {action}。", - "actionFailed": "自動駕駛操作失敗", - "refresh": "重新整理", + "title": "提供者健康自動巡航", + "description": "查找不穩定的提供者、賬戶冷卻、陳舊錯誤以及安全的手動修復方案。", + "loadFailed": "載入自動巡航報告失敗", + "actionApplied": "已應用 {action}。", + "actionFailed": "自動巡航操作失敗", + "refresh": "刷新", "status": "狀態", "issues": "問題", "actions": "操作", - "connections": "連線", + "connections": "連接", "state": { "healthy": "健康", "warning": "警告", @@ -12007,12 +12007,12 @@ "loading": "載入中" }, "loadingRecommendations": "正在載入提供者建議...", - "noRecommendations": "目前沒有提供者健康狀態建議。", - "providerMetrics": "分數 {score}% · 啟用 {active}/{total} · 冷卻 {cooldown} · 模型鎖定 {lockouts}", + "noRecommendations": "目前沒有提供者健康建議。", + "providerMetrics": "評分 {score}% ·活躍 {active}/{total} ·冷卻 {cooldown} ·模型鎖定 {lockouts}", "providerState": { "healthy": "健康", "degraded": "降級", - "down": "宕機" + "down": "不可用" }, "severity": { "info": "資訊", @@ -12021,168 +12021,168 @@ }, "remainingSeconds": "剩餘 {seconds} 秒", "errorCode": "代碼 {code}", - "applying": "正在套用...", + "applying": "正在應用...", "issue": { - "circuitOpenTitle": "提供者斷路器已開啟", - "circuitOpenRecommendation": "確認上游已恢復,然後重設提供者斷路器或等待重試視窗。", - "circuitRecoveryTitle": "提供者正在探測恢復", - "circuitRecoveryRecommendation": "讓下次探測完成,或手動驗證後重設斷路器。", - "terminalTitle": "{label} 處於終止帳號狀態", - "terminalRecommendation": "檢查帳單、重新驗證或更換憑證後再重新啟用。", - "cooldownTitle": "{label} 處於暫時冷卻狀態", - "cooldownRecommendation": "等待上游重試視窗,或確認恢復後清除冷卻。", - "staleErrorTitle": "{label} 有過時錯誤狀態", - "staleErrorRecommendation": "清除過時錯誤欄位,使此連線恢復正常路由資格。", - "inactiveTitle": "{label} 已停用", - "inactiveRecommendation": "僅在非刻意停用的情況下重新啟用。", - "modelLockoutTitle": "{model} 在某條連線中被鎖定", - "modelLockoutRecommendation": "請先解決連線狀態或確認模型配額/可用性已恢復,再清除鎖定。", - "quotaTitle": "配額監控回報 {status}", - "quotaRecommendation": "請檢視配額使用情況,必要時將流量切換至其他健康的連線。" + "circuitOpenTitle": "提供者熔斷器已開啟", + "circuitOpenRecommendation": "驗證上游恢復情況,然後重置提供者熔斷器或等待重試窗口。", + "circuitRecoveryTitle": "提供者正在探測恢復情況", + "circuitRecoveryRecommendation": "等待下一次探測完成,或在手動驗證後重置熔斷器。", + "terminalTitle": "{label} 處於終止賬戶狀態", + "terminalRecommendation": "在重新激活之前,請檢查賬單、重新身份驗證或更換憑據。", + "cooldownTitle": "{label} 處於臨時冷卻狀態", + "cooldownRecommendation": "等待上游重試窗口,或在驗證恢復後清除冷卻狀態。", + "staleErrorTitle": "{label} 存在陳舊的錯誤狀態", + "staleErrorRecommendation": "清除陳舊的錯誤欄位,以便該連接重新符合正常路由條件。", + "inactiveTitle": "{label} 已禁用", + "inactiveRecommendation": "僅在此項並非故意禁用的情況下重新激活。", + "modelLockoutTitle": "{model} 在一個連接中已鎖定", + "modelLockoutRecommendation": "在清除鎖定之前,請解決連接狀態問題或確認模型配額/可用性已恢復。", + "quotaTitle": "配額監控器報告 {status}", + "quotaRecommendation": "檢查配額使用情況,並在需要時將流量輪換到另一個正常的連接。" }, "action": { - "resetProviderBreaker": "重設提供者斷路器", - "clearConnectionCooldown": "清除連線冷卻", - "disableConnection": "停用此連線", - "clearStaleError": "清除過時錯誤狀態", - "reactivateConnection": "重新啟用連線", + "resetProviderBreaker": "重置提供者熔斷器", + "clearConnectionCooldown": "清除連接冷卻時間", + "disableConnection": "禁用此連接", + "clearStaleError": "清除過期的錯誤狀態", + "reactivateConnection": "重新激活連接", "clearModelLockout": "清除模型鎖定" } }, "changelogPage": { "newsTab": "新聞", - "changelogTab": "變更日誌", - "loading": "正在載入變更日誌…", - "announcementsLoadFailed": "無法載入公告。請稍後再試。", - "noAnnouncements": "目前暫無新公告。", - "learnMore": "了解更多", - "changelogLoadFailed": "無法載入變更日誌。請稍後再試。", + "changelogTab": "更新日誌", + "loading": "正在載入更新日誌...", + "announcementsLoadFailed": "無法載入公告。請稍後重試。", + "noAnnouncements": "目前沒有新公告。", + "learnMore": "瞭解更多", + "changelogLoadFailed": "無法載入更新日誌。請稍後重試。", "retry": "重試", - "viewFullHistory": "在 GitHub 上檢視完整歷史" + "viewFullHistory": "在GitHub上查看完整歷史記錄" }, "reasoningRouting": { - "title": "思考路由策略", - "apiKeyTitle": "此 API 金鑰的思考路由策略", - "subtitle": "無需客戶端支援即可重新路由模型與思考強度 (Reasoning Effort)。未匹配任何規則時,請求保持不變。", - "loadError": "無法載入思考路由規則。", - "saveError": "規則無效或無法儲存。", - "saved": "思考路由規則已儲存。", - "deleteConfirm": "確定要刪除此思考路由規則嗎?", - "deleteError": "無法刪除思考路由規則。", - "empty": "尚未配置匹配的思考路由規則。", + "title": "推理路由策略", + "apiKeyTitle": "此API Key的推理路由", + "subtitle": "重新路由模型和推理力度,無需客戶端支援。無規則匹配時請求保持不變。", + "loadError": "無法載入推理規則。", + "saveError": "規則無效或無法保存。", + "saved": "推理規則已保存。", + "deleteConfirm": "刪除此推理規則?", + "deleteError": "無法刪除推理規則。", + "empty": "未設定匹配的推理規則。", "all": "全部", "any": "任意", "enabled": "已啟用", - "disabled": "已停用", + "disabled": "已禁用", "filterSearch": "搜尋規則", - "filterScope": "依作用域篩選", - "filterStatus": "依狀態篩選", - "allModels": "所有模型", - "keepModel": "保持原模型", + "filterScope": "按範圍篩選", + "filterStatus": "按狀態篩選", + "allModels": "全部模型", + "keepModel": "保留模型", "otherModel": "其他模型", "combo": "組合", - "priorityShort": "優先級 {value}", - "toggleAria": "啟用 {name}", + "priorityShort": "priority {value}", + "toggleAria": "Enable {name}", "edit": "編輯", "delete": "刪除", "name": "名稱", - "description": "說明", - "scopeLabel": "作用域", - "apiKey": "API 金鑰", - "sourceCombo": "來源組合", - "connection": "連線", - "sourceModel": "來源模型或萬用字元", - "sourceModelOptional": "留空 = 適用於所有模型", - "sourceModelExample": "例如 gpt-5*", - "sourceEffort": "來源思考強度 (Effort)", + "description": "描述", + "scopeLabel": "範圍", + "apiKey": "API Key", + "sourceCombo": "源組合", + "connection": "連接", + "sourceModel": "源模型或通配符", + "sourceModelOptional": "空 = 全部模型", + "sourceModelExample": "例如gpt-5*", + "sourceEffort": "源力度", "missing": "未指定", - "signalOnly": "非離散思考訊號", + "signalOnly": "非離散推理信號", "requestTags": "請求標籤", "requestTagsExample": "coding, internal", "tagMode": "標籤匹配模式", - "effortMode": "思考強度模式", - "targetEffort": "目標思考強度", + "effortMode": "力度模式", + "targetEffort": "目標力度", "routingTarget": "路由目標", "targetModel": "目標模型", "targetCombo": "目標組合", - "budgetAction": "思考預算 (Thinking Budget)", - "budgetTokens": "預算 Token 數", + "budgetAction": "思考預算", + "budgetTokens": "預算Token", "priority": "優先級", - "saveChanges": "儲存變更", + "saveChanges": "保存更改", "add": "新增規則", "cancel": "取消", - "simulateTitle": "模擬規則測試", + "simulateTitle": "模擬規則", "model": "模型", - "effort": "思考強度", - "transport": "傳輸協定", - "simulate": "模擬執行 (不發送至上游)", - "extendedComboWarning": "Max/Ultra 模式將在路由期間對每個組合目標分別進行驗證。", - "extendedUnknownWarning": "請輸入目標模型以驗證是否支援 Max/Ultra。", - "extendedUnsupportedWarning": "Max/Ultra 目前僅確定支援合適的 Codex GPT-5.6 模型。自訂模型伺服器會接受但顯示警告。", + "effort": "力度", + "transport": "傳輸方式", + "simulate": "無上游模擬", + "extendedComboWarning": "Max/Ultra在路由期間會針對每個組合目標單獨驗證。", + "extendedUnknownWarning": "輸入目標模型以驗證Max/Ultra支援。", + "extendedUnsupportedWarning": "Max/Ultra僅已知受特定Codex GPT-5.6 模型支援。未知自定義模型會被伺服器接受但附帶警告。", "scope": { "global": "全域", - "apiKey": "API 金鑰", + "apiKey": "API Key", "combo": "組合", "model": "模型", - "connection": "連線" + "connection": "連接" }, "mode": { "inherit": "繼承客戶端", "default": "使用預設值", - "force": "強制指定" + "force": "強制" }, "budget": { - "preserve": "保留原設定", - "remove": "移除預算", + "preserve": "保留", + "remove": "移除", "set": "設定固定值" } }, "chaosConfig": { "pageTitle": "混沌模式", - "pageSubtitle": "在同一任務上以並行或協作方式執行多個 AI 模型", + "pageSubtitle": "在同一任務上並行或協作運行多個AI模型", "enableChaos": "啟用混沌模式", - "enableChaosDesc": "允許已啟用混沌模式的 API 金鑰使用此功能", + "enableChaosDesc": "允許啟用了混沌模式的API Key使用此功能", "mode": "預設模式", "modeParallel": "並行", "modeCollaborative": "協作", - "modeParallelDesc": "所有模型同時執行——最快結果", - "modeCollaborativeDesc": "模型串聯輸出——每個模型會看到前一個結果", - "timeout": "逾時(毫秒)", - "timeoutDesc": "每次模型呼叫的最長時間(5000-600000 毫秒)", - "systemPrompt": "系統提示(選填)", - "systemPromptDesc": "針對所有混沌模式模型實例的自訂指示", - "providerOverrides": "提供者覆寫", - "providerOverridesDesc": "為混沌模式選取每個提供者的特定模型", + "modeParallelDesc": "所有模型同時運行—結果最快", + "modeCollaborativeDesc": "模型鏈式輸出—每個模型都能看到前一個模型的結果", + "timeout": "超時 (ms)", + "timeoutDesc": "每次模型呼叫的最長時間 (5000-600000ms)", + "systemPrompt": "系統提示詞 (可選)", + "systemPromptDesc": "適用於所有混沌模式模型實例的自定義指令", + "providerOverrides": "提供者覆蓋", + "providerOverridesDesc": "為混沌模式按提供者選擇特定模型", "providerId": "提供者", "modelId": "模型", "addProvider": "新增提供者", "removeProvider": "移除", - "saveConfig": "儲存設定", - "configSaved": "混沌設定已成功儲存", - "configError": "無法儲存混沌設定", - "configReset": "重設為預設值", - "keyPermission": "混沌模式存取", - "keyPermissionDesc": "允許此 API 金鑰使用混沌模式(多模型並行執行)", + "saveConfig": "保存設定", + "configSaved": "混沌設定保存成功", + "configError": "保存混沌設定失敗", + "configReset": "重置為預設值", + "keyPermission": "混沌模式訪問權限", + "keyPermissionDesc": "允許此API Key使用混沌模式(多模型並行執行)", "testButton": "測試混沌模式", - "testTask": "寫一首關於人工智慧的短詩", - "loadingProviderModels": "正在載入提供者…", - "systemPromptPlaceholder": "選填:覆寫預設混沌模式系統提示…", + "testTask": "寫一首關於人工智能的短詩", + "loadingProviderModels": "正在載入提供者...", + "systemPromptPlaceholder": "可選:覆蓋預設的混沌模式系統提示詞...", "enabled": "已啟用", - "disabled": "已停用", - "maxTokens": "最大 Token 數", - "maxTokensDesc": "每個模型回應的最大 Token 數。數值越高,成本越高且耗時越久。", - "providerIdPlaceholder": "提供者 ID(輸入或選取)", - "modelIdPlaceholder": "模型 ID(選填)", + "disabled": "已禁用", + "maxTokens": "最大Token數", + "maxTokensDesc": "每個模型回應的最大Token數。數值越高,成本越高且耗時越長。", + "providerIdPlaceholder": "提供者ID(輸入或選擇)", + "modelIdPlaceholder": "模型ID(可選)", "on": "開啟", "off": "關閉", - "availableProviders": "可用提供者({count})", - "noProviderOverrides": "無覆寫——所有啟用的提供者將使用其預設模型參與" + "availableProviders": "可用提供者 ({count})", + "noProviderOverrides": "無覆蓋—所有活躍提供者都將使用其預設模型參與" }, "kimiSponsorBanner": { - "title": "Kimi(Moonshot AI)是 OmniRoute 的創始開源好友", - "description": "Kimi K3 提供 100 萬 Token 的上下文視窗與頂尖程式碼效能,但只需同類產品的一小部分成本。", - "cta": "取得 Kimi Code", - "partnerLinkNote": "合作夥伴連結", + "title": "Kimi(Moonshot AI)是OmniRoute的創始開源好友", + "description": "Kimi K3 為OmniRoute帶來了 1M token的上下文窗口和前沿的編碼性能,而成本僅為極小一部分。", + "cta": "獲取Kimi Code", + "partnerLinkNote": "合作伙伴連結", "dismissAriaLabel": "關閉" }, "featureFlagExposeFunctionalGatewayMirrorsDescription": "__MISSING__:Advertise / mirror ids on /v1/models for models whose canonical owner has no active credential but a passthrough gateway with an active credential routes them. Warning: adds catalog entries for all clients when enabled globally."