From 2722847a59f58029e605911fd898e7cffe148723 Mon Sep 17 00:00:00 2001 From: gmw Date: Tue, 31 Mar 2026 15:16:51 +0800 Subject: [PATCH] feat: Improve the Chinese translation --- .gitignore | 3 + src/i18n/messages/zh-CN.json | 265 +++++++++++++++++++---------------- 2 files changed, 144 insertions(+), 124 deletions(-) diff --git a/.gitignore b/.gitignore index 0e170d179f..df550b50c9 100644 --- a/.gitignore +++ b/.gitignore @@ -135,3 +135,6 @@ vscode-extension/ # Compiled npm-package build artifact (not source, should not be in git) /app + +# IDEA +.idea/ \ No newline at end of file diff --git a/src/i18n/messages/zh-CN.json b/src/i18n/messages/zh-CN.json index b1a0ea54ff..3bce9576a0 100644 --- a/src/i18n/messages/zh-CN.json +++ b/src/i18n/messages/zh-CN.json @@ -36,7 +36,7 @@ "time": "时间", "details": "详情", "created": "已创建", - "lastUsed": "Last Refreshed", + "lastUsed": "最近刷新", "loadMore": "加载更多", "noResults": "没有找到结果", "reloadPage": "重新加载页面", @@ -60,17 +60,17 @@ "maintenanceServerIssues": "服务器当前存在异常,部分功能可能暂时不可用。", "maintenanceServerUnreachable": "服务器暂时无法连接,正在重新连接...", "accept": "接受", - "accountId": "Account ID", + "accountId": "账户 ID", "alias": "别名", - "apiKeyId": "API Key ID", + "apiKeyId": "API 密钥 ID", "apiKeyName": "API Key 名称", "apiKeySecret": "API Key 密钥", - "authorization": "Authorization", - "content-type": "Content Type", - "content-length": "Content Length", + "authorization": "授权", + "content-type": "内容类型", + "content-length": "内容长度", "cookie": "Cookie", "file": "文件", - "host": "Host", + "host": "主机", "id": "ID", "import": "导入", "limit": "限制", @@ -100,25 +100,25 @@ "hex": "Hex", "range": "范围", "component": "组件", - "redirect_uri": "Redirect URI", - "idempotency-key": "Idempotency Key", - "error_description": "Error Description", + "redirect_uri": "重定向 URI", + "idempotency-key": "幂等键", + "error_description": "错误描述", "code": "代码", "compatible": "兼容", - "chat-completions": "Chat Completions", + "chat-completions": "对话补全", "oauth": "OAuth", - "auth_token": "Auth Token", + "auth_token": "认证令牌", "crypto": "加密", "hours": "小时", "selfsigned": "自签名", - "proxy_id": "Proxy ID", - "proxyId": "Proxy ID", - "connectionId": "Connection ID", + "proxy_id": "代理 ID", + "proxyId": "代理 ID", + "connectionId": "连接 ID", "resolveConnectionId": "解析 Connection ID", "resolve_connection_id": "解析 Connection ID", - "scope_id": "Scope ID", - "scopeId": "Scope ID", - "jwtSecret": "JWT Secret", + "scope_id": "范围 ID", + "scopeId": "范围 ID", + "jwtSecret": "JWT 密钥", "keytar": "keytar", "better-sqlite3": "better-sqlite3", "undici": "undici", @@ -135,7 +135,7 @@ "TOOL_DENYLIST": "工具拒绝列表", "Failed to save pricing": "保存定价失败", "Failed to reset pricing": "重置定价失败", - "apikey": "API Key", + "apikey": "API 密钥", "http": "HTTP" }, "sidebar": { @@ -191,8 +191,8 @@ "themeOrange": "橙色", "themeCyan": "青色", "cliToolsShort": "工具", - "cache": "Cache", - "cacheShort": "Cache" + "cache": "缓存", + "cacheShort": "缓存" }, "themesPage": { "title": "主题", @@ -486,7 +486,7 @@ "configureEndpoint": "配置端点", "instructions": "使用说明", "modelMapping": "模型映射", - "baseUrl": "Base URL", + "baseUrl": "基础 URL", "apiKey": "API密钥", "configured": "已配置", "notConfigured": "未配置", @@ -968,11 +968,11 @@ "available": "可用端点", "cloudProxy": "云代理", "disableConfirm": "确定要禁用云代理吗?", - "baseUrl": "Base URL", + "baseUrl": "基础 URL", "apiKeyLabel": "API 密钥", "registeredKeys": "已注册密钥", - "chatCompletions": "Chat Completions", - "responses": "Responses", + "chatCompletions": "对话补全", + "responses": "响应", "listModels": "列出模型", "usingCloudProxy": "当前使用云代理", "usingLocalServer": "当前使用本地服务器", @@ -981,7 +981,7 @@ "enableCloud": "启用云端", "modelsAcrossEndpoints": "{endpoints} 个端点共提供 {models} 个模型", "chatDesc": "支持所有提供商的流式与非流式聊天", - "embeddings": "Embeddings", + "embeddings": "嵌入向量", "embeddingsDesc": "用于搜索和 RAG 流程的文本向量", "imageGeneration": "图像生成", "imageDesc": "根据文本提示生成图像", @@ -1037,7 +1037,7 @@ "cloudWorkerUnreachable": "无法连接到云 Worker。请确认云服务已运行(在 `/cloud` 中执行 `npm run dev`)。", "connectionFailed": "连接失败", "syncFailed": "同步云端数据失败", - "cloudflaredTitle": "Cloudflare Quick Tunnel", + "cloudflaredTitle": "Cloudflare 快速隧道", "cloudflaredDescription": "为当前端点创建 Cloudflare Quick Tunnel。", "cloudflaredUrlNotice": "创建一个临时的 Cloudflare Quick Tunnel。每次重启后 URL 都会变化。", "cloudflaredEnable": "启用 Tunnel", @@ -1357,7 +1357,7 @@ "passwordsMismatch": "密码不匹配", "setupComplete": "设置完成!", "goToDashboard": "转到仪表板→", - "welcomeDesc": "OmniRoute 是您的本地 AI API 代理。它通过负载平衡、故障转移和使用情况跟踪将请求路由到多个 AI 提供商。", + "welcomeDesc": "OmniRoute 是您的本地 AI API 代理。它通过负载均衡、故障转移和使用情况跟踪将请求路由到多个 AI 提供商。", "multiProvider": "多提供商", "usageTracking": "使用情况追踪", "apiKeyMgmt": "API密钥管理", @@ -1473,7 +1473,7 @@ "testSummary": "{passed}/{total} 通过,{failed} 失败", "nameLabel": "名称", "prefixLabel": "前缀", - "baseUrlLabel": "Base URL", + "baseUrlLabel": "基础 URL", "apiTypeLabel": "API类型", "prefixHint": "必填。模型名称使用的唯一前缀。", "nameHint": "必填。该节点的友好标签。", @@ -1677,12 +1677,12 @@ "allModelsAlreadyImported": "所有模型已导入", "noNewModelsToImport": "没有新模型可导入 — 所有模型已在注册表或自定义模型列表中", "skippingExistingModels": "跳过 {count} 个已有模型", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", - "codexAuthAppliedLocal": "Codex auth.json applied locally", - "codexAuthApplyFailed": "Failed to apply Codex auth.json locally", - "codexAuthExported": "Codex auth.json exported", - "codexAuthExportFailed": "Failed to export Codex auth.json" + "applyCodexAuthLocal": "应用认证", + "exportCodexAuthFile": "导出认证", + "codexAuthAppliedLocal": "Codex auth.json 已在本地应用", + "codexAuthApplyFailed": "在本地应用 Codex auth.json 失败", + "codexAuthExported": "Codex auth.json 已导出", + "codexAuthExportFailed": "导出 Codex auth.json 失败" }, "settings": { "title": "设置", @@ -1697,7 +1697,7 @@ "proxy": "代理", "pricing": "定价", "storage": "存储", - "policies": "政策", + "policies": "策略", "ipFilter": "IP过滤器", "comboDefaults": "组合默认值", "fallbackChains": "后备链", @@ -1715,7 +1715,7 @@ "hitRate": "命中率", "cacheEntries": "缓存条目", "circuitBreaker": "断路器", - "retryPolicy": "重试政策", + "retryPolicy": "重试策略", "maxRetries": "最大重试次数", "retryDelay": "重试延迟", "timeoutMs": "超时(毫秒)", @@ -1800,11 +1800,11 @@ "customDesc": "为所有请求设置固定的令牌预算", "adaptive": "自适应", "adaptiveDesc": "根据请求复杂性调整预算", - "effortNone": "无(0 代币)", - "effortLow": "低(1K 代币)", - "effortMedium": "中型(10K 代币)", - "effortHigh": "高(128K 代币)", - "tokenBudget": "代币预算", + "effortNone": "无(0 Tokens)", + "effortLow": "低(1K Tokens)", + "effortMedium": "中(10K Tokens)", + "effortHigh": "高(128K Tokens)", + "tokenBudget": "Token 预算", "tokens": "Tokens", "baseEffortLevel": "基本努力水平", "adaptiveHint": "自适应模式根据消息计数、工具使用情况和提示长度从此基本级别进行扩展。", @@ -1948,10 +1948,10 @@ "providerMaxRetriesAria": "{provider} 最大重试次数", "providerTimeoutAria": "{provider} 超时毫秒", "removeProviderOverrideAria": "删除 {provider} 覆盖", - "newProviderNamePlaceholder": "例如谷歌、开放式...", + "newProviderNamePlaceholder": "例如 google、openai...", "newProviderNameAria": "新的提供商名称", "retries": "重试", - "ms": "女士", + "ms": "毫秒", "saveComboDefaults": "保存组合默认值", "maxNestingDepth": "最大嵌套深度", "concurrencyPerModel": "并发/模型", @@ -1987,7 +1987,7 @@ "failures": "{count} 失败", "policiesLocked": "策略和锁定标识符", "allOperational": "所有系统均可运行——无停工或断路器跳闸", - "loadingPolicies": "正在加载政策...", + "loadingPolicies": "正在加载策略...", "lockedIdentifiers": "锁定标识符", "unlockedIdentifier": "解锁:{identifier}", "sinceDate": "自 {date} 起", @@ -2045,7 +2045,7 @@ "errorDuringRestore": "恢复期间发生错误", "errorDuringImport": "导入时发生错误", "modelPricing": "模型定价", - "modelPricingDesc": "配置每个模型的成本费率 • 所有费率均以美元/100 万代币为单位", + "modelPricingDesc": "配置每个模型的成本费率 • 所有费率均以美元/100 万 Tokens 为单位", "providers": "提供商", "registry": "登记处", "priced": "定价", @@ -2062,24 +2062,24 @@ "models": "模型", "moreProviders": "{count} 更多提供商", "withPricing": "配置定价", - "policiesCircuitBreakers": "政策与断路器", + "policiesCircuitBreakers": "策略与断路器", "activeIssuesDetected": "检测到活跃问题", "off": "关闭", "resetPricingConfirm": "将 {provider} 的所有定价重置为默认值?", "pricingDescInput": "输入:发送到模型的令牌", - "pricingDescOutput": "输出:生成的代币", + "pricingDescOutput": "输出:生成的 Tokens", "pricingDescCached": "缓存:重用输入(约输入率的 50%)", "pricingDescReasoning": "推理:思考标记(回到输出)", "pricingDescCacheWrite": "缓存写入:创建缓存条目(回退到输入)", - "pricingDescFormula": "成本 = (输入 × 输入率) + (输出 × 输出率) + (缓存 × 缓存率) 每百万代币。", + "pricingDescFormula": "成本 = (输入 × 输入率) + (输出 × 输出率) + (缓存 × 缓存率) 每百万 Tokens。", "pricingSettingsTitle": "定价设置", "totalModels": "模型总数", "active": "活跃", "costCalculation": "成本计算", "costCalculationDesc": "成本是根据为每个模型配置的令牌使用情况和定价费率计算的。", "pricingFormat": "定价格式", - "pricingFormatDesc": "所有费率均以美元/100 万代币为单位(每百万代币美元)。", - "tokenTypes": "代币类型", + "pricingFormatDesc": "所有费率均以美元/100 万 Tokens 为单位(每百万 Tokens 美元)。", + "tokenTypes": "Token 类型", "inputTokenDesc": "标准提示标记", "outputTokenDesc": "完成/响应标记", "cachedTokenDesc": "缓存输入令牌(通常为输入速率的 50%)", @@ -2095,17 +2095,21 @@ "comboDefaultsGuideTitle": "如何调整组合默认值", "comboDefaultsGuideHint1": "在低延迟流中保持较低的重试次数;仅增加长生成任务的超时。", "comboDefaultsGuideHint2": "当一个提供程序需要与全局默认值不同的超时/重试行为时,请使用提供程序覆盖。", - "debugToggle": "Enable Debug Mode", - "sidebarVisibilityToggle": "Show Sidebar Items", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", - "loading": "Loading...", - "save": "Save" + "debugToggle": "启用调试模式", + "sidebarVisibilityToggle": "显示侧边栏项目", + "cacheSettings": "缓存设置", + "semanticCache": "语义缓存", + "maxEntries": "最大条目数", + "ttlMinutes": "TTL(分钟)", + "strategy": "策略", + "preserveClientCache": "保留客户端缓存", + "enabled": "已启用", + "loading": "加载中...", + "save": "保存", + "autoDisableBannedAccounts": "自动禁用被封禁账户", + "autoDisableDescription": "若提供商连接返回特定的永久封禁信号(如 HTTP 403\"请验证您的账户\"),则将其永久标记为停用。这会将其从组合轮换中移除。", + "autoDisableThreshold": "封禁阈值", + "autoDisableThresholdDesc": "触发永久停用所需的连续封禁信号次数。" }, "translator": { "title": "翻译者", @@ -2380,7 +2384,7 @@ "loadingQuotas": "正在加载...", "account": "账户", "modelQuotas": "模型配额", - "lastUsed": "Last Refreshed", + "lastUsed": "最近刷新", "actions": "操作", "refreshQuota": "刷新配额", "today": "今天", @@ -2416,7 +2420,7 @@ "chooseAuthMethod": "选择您的身份验证方法:", "awsBuilderId": "AWS 构建器 ID", "awsIamIdentity": "AWS IAM 身份中心", - "googleAccount": "谷歌帐户", + "googleAccount": "Google 帐户", "githubAccount": "GitHub 帐户", "importToken": "导入令牌", "pasteToken": "从 Kiro IDE 粘贴刷新令牌。", @@ -2454,7 +2458,7 @@ }, "stats": { "usageOverview": "使用概述", - "outputTokens": "输出代币", + "outputTokens": "输出 Tokens", "totalCost": "总成本", "usageByModel": "按模型使用", "usageByAccount": "按帐户使用情况", @@ -2479,7 +2483,7 @@ "password": "密码", "unifiedProxy": "统一 AI API 代理", "unifiedAiApiProxy": "统一 AI API 代理", - "unifiedAiApiProxyDesc": "通过单个端点将请求路由到多个 AI 提供商。内置负载平衡、故障转移和使用情况跟踪。", + "unifiedAiApiProxyDesc": "通过单个端点将请求路由到多个 AI 提供商。内置负载均衡、故障转移和使用情况跟踪。", "passwordNotEnabled": "未启用密码保护", "loading": "正在加载...", "invalidPassword": "密码无效", @@ -2501,7 +2505,7 @@ "featureLoadBalancingTitle": "负载均衡", "featureLoadBalancingDesc": "智能分配请求", "featureUsageTrackingTitle": "使用情况追踪", - "featureUsageTrackingDesc": "监控成本和代币", + "featureUsageTrackingDesc": "监控成本和 Tokens", "resetPassword": "重置密码", "resetDescription": "选择一种方法来恢复对仪表板的访问权限", "stopServer": "停止 OmniRoute 服务器", @@ -2666,7 +2670,7 @@ "featureHealthText": "实时健康检查、提供商状态、断路器状态以及具有指数退避功能的自动速率限制检测。", "featureCliTitle": "CLI工具", "featureCliText": "可在仪表板中管理 IDE 配置、导出/导入备份、发现 Codex 配置文件并修改设置。", - "featureSecurityTitle": "安全和政策", + "featureSecurityTitle": "安全与策略", "featureSecurityText": "API 密钥身份验证、IP 过滤、提示注入防护、域策略、会话管理和审核日志记录。", "featureCloudSyncTitle": "云同步", "featureCloudSyncText": "将配置同步到 Cloudflare Workers,以便通过加密凭据和自动故障转移实现远程访问。", @@ -2683,7 +2687,7 @@ "useCaseUsageVisibilityTitle": "使用情况、成本和调试可见性", "useCaseUsageVisibilityText": "在“使用情况”和“分析”选项卡中按提供商、帐户和 API 密钥跟踪令牌和成本。", "clientCherryStudioTitle": "樱桃工作室", - "baseUrlLabel": "Base URL", + "baseUrlLabel": "基础 URL", "chatEndpointLabel": "聊天端点", "modelRecommendationLabel": "模型建议:显式前缀", "clientCodexTitle": "Codex / GitHub Copilot 模型", @@ -2777,7 +2781,7 @@ "privacySection4Text": "当你通过 OmniRoute 发起 API 调用时,请求会被转发到你配置的 AI 提供商(例如:OpenAI、Anthropic、Google)。这些提供商有各自的隐私政策,请查阅:", "privacyOpenAiPolicy": "OpenAI 隐私政策", "privacyAnthropicPolicy": "Anthropic 隐私政策", - "privacyGooglePolicy": "谷歌隐私政策", + "privacyGooglePolicy": "Google 隐私政策", "privacySection5Title": "5. 云同步(可选)", "privacySection5Text": "如果您启用可选的云同步功能,提供商配置和 API 密钥可能会传输到配置的云端点。此功能默认处于禁用状态,需要明确选择加入。", "privacySection6Title": "6. 日志记录", @@ -2900,59 +2904,72 @@ } }, "cache": { - "title": "Cache Management", - "description": "Monitor and manage semantic response cache, hit rates, and token savings.", - "refresh": "Refresh", - "clearAll": "Clear All", - "memoryEntries": "Memory Entries", - "dbEntries": "DB Entries", - "cacheHits": "Cache Hits", - "tokensSaved": "Tokens Saved", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "behavior": "Cache Behavior", - "idempotency": "Idempotency Layer", - "clearSuccess": "Cache cleared. {count} expired entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", - "memoryEntriesSub": "In-memory LRU", - "dbEntriesSub": "Persisted (SQLite)", - "cacheHitsSub": "of {total} total", - "tokensSavedSub": "Estimated from hits", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", - "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", - "promptCache": "Prompt Cache (Provider-Side)", - "cachedRequests": "Cached Requests", - "cacheHitRate": "Cache Hit Rate", - "cachedTokens": "Cached Tokens", - "cacheCreationTokens": "Cache Creation Tokens", - "byProvider": "Breakdown by Provider", - "provider": "Provider", - "requests": "Requests", - "inputTokens": "Input Tokens", - "cachedTokensCol": "Cached", - "cacheCreation": "Creation", - "trend24h": "Cache Trend (24h)", - "cached": "Cached", - "overview": "Overview", - "entries": "Entries", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "noEntries": "No cache entries found", - "signature": "Signature", - "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions" + "title": "缓存管理", + "description": "监控和管理语义响应缓存、命中率及 Tokens 节省情况。", + "refresh": "刷新", + "clearAll": "清空全部", + "memoryEntries": "内存条目", + "dbEntries": "数据库条目", + "cacheHits": "缓存命中数", + "tokensSaved": "节省的 Tokens", + "hitRate": "命中率", + "performance": "缓存性能", + "behavior": "缓存行为", + "idempotency": "幂等层", + "clearSuccess": "缓存已清除。已删除 {count} 条过期条目。", + "clearError": "清除缓存失败。", + "unavailable": "缓存不可用", + "unavailableDesc": "无法获取缓存统计信息。请确保服务器正在运行。", + "memoryEntriesSub": "内存 LRU", + "dbEntriesSub": "已持久化(SQLite)", + "cacheHitsSub": "共 {total} 次", + "tokensSavedSub": "根据命中次数估算", + "autoRefresh": "每 {seconds} 秒自动刷新", + "hits": "命中次数", + "misses": "未命中次数", + "total": "总计", + "behaviorDeterministic": "仅缓存 temperature=0 的非流式请求。", + "behaviorBypass": "通过请求头 {header} 绕过缓存。", + "behaviorTwoTier": "双层存储:内存 LRU(快速)+ SQLite(重启后持久化)。", + "behaviorTtl": "默认 TTL:30 分钟。可通过 {envVar} 配置。", + "activeDedupKeys": "活跃去重键", + "dedupWindow": "去重窗口", + "promptCache": "Prompt 缓存(提供商侧)", + "cachedRequests": "缓存请求数", + "cacheHitRate": "缓存命中率", + "cachedTokens": "缓存 Tokens", + "cacheCreationTokens": "缓存创建 Tokens", + "byProvider": "按提供商分类", + "provider": "提供商", + "requests": "请求数", + "inputTokens": "输入 Tokens", + "cachedTokensCol": "已缓存", + "cacheCreation": "创建", + "trend24h": "缓存趋势(24 小时)", + "cached": "已缓存", + "overview": "概览", + "entries": "条目", + "searchEntries": "搜索条目...", + "search": "搜索", + "loading": "加载中...", + "noEntries": "未找到缓存条目", + "signature": "签名", + "model": "模型", + "created": "创建时间", + "expires": "到期时间", + "actions": "操作", + "cacheCreationWrite": "缓存创建(写入)", + "cacheMetrics": "Prompt 缓存指标", + "cacheReuseRatio": "缓存复用率", + "cacheReuseRatioDesc": "缓存 Tokens / 输入 Tokens 总量", + "cachedShort": "已缓存", + "cachedTokensRead": "缓存 Tokens(读取)", + "estCostSaved": "预估节省费用", + "inputShort": "输入", + "requestsShort": "请求", + "resetMetrics": "重置指标", + "resetting": "正在重置...", + "withCacheControl": "含缓存控制", + "writeShort": "写入" } }