diff --git a/bin/cli/locales/zh-TW.json b/bin/cli/locales/zh-TW.json new file mode 100644 index 0000000000..41a8974219 --- /dev/null +++ b/bin/cli/locales/zh-TW.json @@ -0,0 +1,1262 @@ +{ + "common": { + "error": "錯誤:{message}", + "serverOffline": "OmniRoute 伺服器已離線。請啟動:omniroute serve", + "authRequired": "需要認證。請設定 OMNIROUTE_API_KEY 或執行:omniroute setup", + "rateLimited": "請求超出限制。請在 {seconds}s 後重試。", + "timeout": "請求在 {ms}ms 後超時。", + "success": "完成。", + "yes": "是", + "no": "否", + "confirm": "確定嗎?(是/否)", + "dryRun": "【模擬】將執行:{action}", + "cancelled": "已取消。", + "jsonOpt": "以 JSON 格式輸出", + "yesOpt": "跳過確認" + }, + "program": { + "description": "OmniRoute — 具有自動故障轉移的智慧 AI 路由器", + "version": "列印版本並退出", + "output": "輸出格式(table, json, jsonl, csv)", + "quiet": "禁止非必要輸出", + "no_color": "停用彩色輸出", + "timeout": "HTTP 請求超時(毫秒)", + "api_key": "OmniRoute 伺服器的 API 金鑰", + "base_url": "OmniRoute 伺服器的基礎 URL", + "context": "此命令使用的伺服器上下文/配置檔案", + "lang": "設定 CLI 顯示語言(覆蓋 OMNIROUTE_LANG)" + }, + "setup": { + "title": "OmniRoute 設定", + "passwordPrompt": "管理員密碼", + "providerPrompt": "預設提供商(留空跳過)", + "done": "設定完成", + "passwordSet": "管理員密碼已配置", + "providerSet": "提供商已配置:{name}", + "testingProvider": "正在測試提供商連線:{name}", + "testPassed": "提供商測試通過", + "testFailed": "提供商測試失敗:{error}", + "loginEnabled": "登入:已啟用(密碼已更新)", + "loginDisabled": "登入:已停用", + "providerInfo": "提供商:{info}" + }, + "doctor": { + "title": "OmniRoute 診斷", + "dbOk": "資料庫:正常({path})", + "dbMissing": "資料庫:未初始化 — 執行 omniroute setup", + "portOk": "埠 {port}:可用", + "portConflict": "埠 {port}:已被其他程序佔用", + "encryptionOk": "加密金鑰:已配置", + "encryptionMissing": "加密金鑰缺失 — 執行 omniroute setup", + "allGood": "所有檢查通過。", + "warnings": "{count} 個警告 — 見上文。" + }, + "providers": { + "title": "提供商", + "noProviders": "未配置提供商。執行:omniroute setup", + "testing": "正在測試 {name}...", + "available": "{count} 個提供商可用", + "connected": "已連線", + "disconnected": "未連線", + "validationFailed": "驗證失敗:{error}", + "metrics": { + "description": "顯示提供商效能指標(延遲、成功率、成本)", + "provider": "按提供商 ID 篩選", + "connection_id": "按連線 ID 篩選", + "period": "時間範圍:1h|6h|24h|7d|30d(預設:24h)", + "metric": "關注特定指標欄位", + "sort": "按欄位排序(降序)", + "limit": "最大行數(預設:50)", + "watch": "每 5 秒重新整理(即時模式)", + "compare": "逗號分隔的提供商 ID,並排比較" + }, + "metric_single": { + "description": "獲取特定連線的單個指標值" + }, + "rotate": { + "description": "輪換提供商連線的上游 API 金鑰", + "newKeyOpt": "新 API 金鑰值(避免使用:優先使用 --from-env)", + "fromEnvOpt": "從環境變數 VAR 讀取新金鑰", + "oauthOpt": "改為觸發 OAuth 重新認證流程", + "skipTestOpt": "跳過輪換後的連通性測試", + "dryRunOpt": "預覽將要更改的內容而不寫入", + "confirmPrompt": "替換連線 \"{name}\" ({id}) 的 API 金鑰?[y/N] ", + "dryRunResult": "【模擬】將輪換 \"{name}\" ({id}) 的金鑰。未做任何更改。", + "oauthHint": "OAuth 連線 — 執行:omniroute oauth {provider}", + "envVarEmpty": "環境變數 {var} 未設定或為空。", + "success": "已為 \"{name}\" 輪換金鑰。執行 providers test {id} 驗證。", + "testPassed": "輪換後測試通過。", + "testFailed": "輪換後測試失敗:{error}" + }, + "status": { + "description": "顯示所有提供商連線的金鑰健康狀態(期限、過期、冷卻)", + "providerOpt": "按提供商名稱篩選", + "header": "ID 提供商 名稱 過期狀態 測試狀態 冷卻至", + "noData": "沒有可用的提供商連線資料。", + "requiresServer": "providers status 需要 OmniRoute 伺服器正在執行。" + } + }, + "keys": { + "title": "API 金鑰", + "addDescription": "為提供商新增或更新 API 金鑰", + "listDescription": "列出所有已配置的 API 金鑰", + "removeDescription": "移除提供商的 API 金鑰", + "regenerateDescription": "重新生成 OmniRoute API 金鑰", + "revokeDescription": "撤銷 OmniRoute API 金鑰", + "revealDescription": "顯示未掩碼的 API 金鑰值", + "usageDescription": "顯示 API 金鑰的最近使用情況", + "usageLimitOpt": "最近請求數", + "rotateDescription": "生成新金鑰並使舊金鑰失效", + "graceOpt": "舊金鑰失效前的寬限期(毫秒)", + "stdinOpt": "從標準輸入讀取 API 金鑰而不是引數", + "added": "已為 {provider} 新增金鑰。", + "removed": "金鑰已移除。", + "listed": "{count} 個金鑰。", + "noKeys": "未配置金鑰。", + "noUsage": "未找到使用資料。", + "confirmRemove": "移除金鑰 {id}?", + "confirmRegenerate": "重新生成金鑰 {id}?", + "confirmRevoke": "撤銷金鑰 {id}?", + "confirmRotate": "輪換金鑰 {id}?(舊金鑰將在寬限期後失效)", + "regenerated": "已重新生成。新金鑰:{key}", + "revoked": "金鑰 {id} 已撤銷。", + "rotated": "金鑰 {id} 已輪換。新金鑰 ID:{newId}", + "revealWarning": "⚠ 這將顯示完整的未掩碼金鑰。請確保您的螢幕不被人看到。", + "providerRequired": "需要提供商。", + "keyRequired": "需要 API 金鑰。", + "stdinEmpty": "未通過標準輸入提供 API 金鑰。", + "unknownProvider": "未知提供商:{provider}", + "policy": { + "title": "金鑰策略", + "showDescription": "顯示金鑰的速率/成本策略", + "setDescription": "設定金鑰的速率/成本策略", + "rateLimitOpt": "每分鐘最大請求數", + "maxCostOpt": "每日最大成本(美元)", + "allowedModelsOpt": "逗號分隔的允許模型列表", + "nothingToSet": "未提供策略欄位。使用 --rate-limit、--max-cost 或 --allowed-models。", + "updated": "策略已更新。" + }, + "expiration": { + "title": "金鑰過期", + "listDescription": "列出即將過期的金鑰", + "daysOpt": "顯示 N 天內過期的金鑰", + "none": "{days} 天內沒有金鑰過期。", + "listTitle": "{days} 天內過期的金鑰:" + } + }, + "stream": { + "description": "使用 SSE 檢查模式流式傳輸聊天響應", + "file": "從檔案讀取提示", + "stdin": "從標準輸入讀取提示", + "model": "模型 ID(預設:auto)", + "system": "系統提示", + "combo": "強制指定組合名稱", + "max_tokens": "響應最大令牌數", + "responses_api": "使用 /v1/responses 而不是 /v1/chat/completions", + "raw": "列印接收到的原始 SSE 行", + "debug": "在 stderr 中列印每塊的時間資訊", + "save": "將所有 SSE 事件儲存到 .jsonl 檔案", + "error": { + "empty_prompt": "錯誤:需要提供提示(位置引數、--file 或 --stdin)" + } + }, + "usage": { + "description": "使用分析、預算、配額和日誌", + "analytics": { + "description": "顯示彙總使用分析", + "period": "時間範圍:1d|7d|30d|90d|ytd|all(預設:30d)", + "provider": "按提供商 ID 篩選" + }, + "budget": { + "description": "管理成本預算", + "set": { + "scope": "預算範圍(預設:全域性)", + "period": "預算週期:daily|weekly|monthly(預設:monthly)" + } + }, + "quota": { + "description": "顯示提供商配額使用情況", + "provider": "按提供商 ID 篩選", + "check": "顯示新請求是否有可用配額" + }, + "logs": { + "description": "顯示請求呼叫日誌", + "limit": "返回的日誌條目數(預設:100)", + "search": "篩選日誌的搜尋查詢", + "since": "返回自此時間戳以來的日誌", + "follow": "持續跟蹤新的日誌條目", + "api_key": "按 API 金鑰篩選日誌" + }, + "utilization": { + "description": "顯示 API 金鑰利用率指標", + "api_key": "按 API 金鑰篩選" + }, + "history": { + "description": "顯示請求歷史", + "limit": "歷史條目數(預設:100)" + }, + "proxy_logs": { + "description": "顯示代理級請求日誌", + "limit": "代理日誌條目數(預設:100)" + } + }, + "cost": { + "description": "按提供商、模型、組合或 API 金鑰顯示成本報告", + "period": "時間範圍:1d|7d|30d|90d|ytd|all(預設:30d)", + "since": "開始日期(ISO 格式,例如 2026-01-01)— 覆蓋 --period", + "until": "結束日期(ISO 格式)", + "group_by": "按以下方式分組:provider|model|api-key|combo|day(預設:provider)", + "api_key_filter": "按特定 API 金鑰篩選", + "limit": "顯示的最大行數(預設:100)" + }, + "simulate": { + "description": "模擬路由(空執行)— 顯示將選擇哪些提供商而不呼叫上游", + "file": "從 JSON 檔案載入完整請求體", + "model": "模型 ID(預設:auto)", + "combo": "強制指定組合名稱", + "reasoning": "推理努力級別(low|medium|high)", + "thinking": "擴充套件思維令牌預算", + "explain": "在 stderr 中列印回退樹和成本範圍", + "noCombo": "未找到匹配的組合。使用以下命令配置:omniroute combo create" + }, + "chat": { + "description": "向 OmniRoute 傳送一次性聊天提示", + "file": "從檔案讀取提示", + "stdin": "從標準輸入讀取提示", + "system": "系統提示", + "model": "模型 ID(預設:auto)", + "max_tokens": "響應最大令牌數", + "temperature": "取樣溫度(0–2)", + "top_p": "Top-p 核取樣", + "reasoning_effort": "推理努力級別(low|medium|high)", + "thinking_budget": "擴充套件思維令牌預算", + "combo": "強制指定組合名稱", + "responses_api": "使用 /v1/responses 而不是 /v1/chat/completions", + "stream": "增量流式傳輸響應", + "no_history": "不儲存到 ~/.omniroute/cli-history.jsonl", + "error": { + "empty_prompt": "錯誤:需要提供提示(位置引數、--file 或 --stdin)" + } + }, + "serve": { + "description": "啟動 OmniRoute 伺服器(預設操作)", + "starting": "正在啟動 OmniRoute 伺服器(埠 {port})...", + "ready": "就緒地址:http://localhost:{port}", + "stopping": "正在停止伺服器(PID {pid})...", + "stopped": "伺服器已停止。", + "notRunning": "伺服器未在執行。", + "port": "監聽埠(預設:20128)", + "no_open": "不自動開啟瀏覽器", + "daemon": "以後臺守護程序方式執行伺服器", + "log": "內聯顯示伺服器日誌", + "no_recovery": "停用崩潰自動重啟(除錯模式)", + "max_restarts": "30 秒內的最大崩潰重啟次數(預設:2)", + "tray": "顯示系統托盤圖示(僅桌面,選擇加入)", + "no_tray": "停用系統托盤圖示" + }, + "backup": { + "title": "備份", + "description": "建立 OmniRoute 資料備份", + "creating": "正在建立備份...", + "done": "備份已儲存至 {path}", + "noFiles": "沒有可備份的檔案(資料庫未初始化)", + "failed": "備份失敗:{error}", + "restoring": "正在從 {path} 恢復...", + "restored": "恢復完成。", + "restoreDescription": "從備份恢復", + "listTitle": "可用備份", + "noBackups": "未找到備份。", + "notFound": "未找到備份:{name}", + "confirmRestore": "用 {ts} 的備份覆蓋當前資料?", + "createDescription": "建立 OmniRoute 資料備份", + "nameOpt": "自定義備份名稱", + "cloudOpt": "將備份上傳到雲端儲存", + "encryptOpt": "使用 AES-256-GCM 加密備份", + "keyFileOpt": "包含加密密碼的檔案路徑", + "excludeOpt": "排除匹配模式的檔案(可重複)", + "retentionOpt": "僅保留最近 N 個備份", + "passphrasePrompt": "加密密碼:", + "noPassphrase": "加密備份需要密碼。", + "cloudFailed": "警告:雲上傳失敗。本地備份已儲存。", + "cloudUploaded": "雲備份已上傳:{url}", + "auto": { + "title": "備份計劃", + "enableDescription": "啟用定時自動備份", + "disableDescription": "停用定時自動備份", + "statusDescription": "顯示當前備份計劃狀態", + "cronOpt": "計劃 cron 表示式(預設:每天凌晨 3 點)", + "enabled": "已啟用自動備份(cron:{cron})。", + "hint": " 計劃由 omniroute serve 啟動時讀取。", + "disabled": "已停用自動備份。", + "notConfigured": "未配置備份計劃。" + } + }, + "health": { + "description": "檢查伺服器健康狀態和元件狀態", + "noServer": "伺服器未執行。啟動:omniroute serve", + "title": "健康狀態", + "status": "狀態:{status}", + "uptime": "執行時間:{uptime}", + "requests": "請求數(24h):{count}", + "cost": "成本(24h):" + }, + "quota": { + "description": "顯示提供商配額使用情況", + "noServer": "伺服器未執行。啟動:omniroute serve", + "noData": "沒有可用的配額資訊。" + }, + "cache": { + "description": "管理響應快取", + "noServer": "伺服器未執行。啟動:omniroute serve", + "cleared": "快取已清除。", + "clearFailed": "清除快取失敗。" + }, + "redis": { + "description": "一鍵啟動本地 Redis 容器(Podman 或 Docker),用於 OmniRoute 快取和配額跟蹤" + }, + "test": { + "description": "測試提供商連線", + "noServer": "伺服器未執行。啟動:omniroute serve", + "testing": "正在測試 {provider} / {model}...", + "passed": "連線成功!", + "failed": "連線失敗:{error}", + "allProvidersOpt": "測試所有已配置的提供商", + "latencyOpt": "顯示延遲測量值(平均/最小/最大 毫秒)", + "repeatOpt": "重複測試 N 次並彙總結果", + "compareOpt": "逗號分隔的要比較的模型(例如 gpt-4o,claude-3-5-sonnet)", + "saveOpt": "將結果儲存到 JSON 檔案", + "saved": "結果已儲存至 {path}", + "compareTitle": "模型比較", + "compareMinTwo": "--compare 需要至少兩個模型(逗號分隔)", + "noProviders": "未配置提供商。新增:omniroute keys add" + }, + "update": { + "checking": "正在檢查更新...", + "upToDate": "已是最新版本({version})。", + "available": "有可用更新:{current} → {latest}", + "installing": "正在安裝 {latest}...", + "done": "已更新至 {latest}。重啟伺服器以生效。" + }, + "mcp": { + "title": "MCP 伺服器", + "running": "MCP 伺服器正在執行({transport})", + "stopped": "MCP 伺服器已停止。", + "restarted": "MCP 伺服器已重啟。", + "call": { + "description": "直接呼叫 MCP 工具", + "args": "JSON 引數物件(內聯)", + "args_file": "JSON 引數檔案路徑", + "stream": "使用流式端點(/api/mcp/stream)", + "scope": "所需作用域(可重複,例如 read:health)" + }, + "scopes": { + "description": "列出可用的 MCP 作用域", + "tool": "顯示特定工具所需的作用域" + }, + "tools": { + "description": "檢查 MCP 工具", + "list": { + "description": "列出所有 MCP 工具", + "scope": "按作用域篩選" + }, + "info": { + "description": "顯示 MCP 工具的後設資料" + }, + "schema": { + "description": "顯示 MCP 工具的輸入/輸出 JSON 模式", + "io": "模式型別:input|output(預設:input)" + } + }, + "audit": { + "description": "MCP 審計日誌(audit --source mcp 的別名)" + } + }, + "a2a": { + "skills": { + "description": "從代理卡片列出可用的 A2A 技能" + }, + "invoke": { + "description": "呼叫 A2A 技能並返回任務 ID", + "input": "JSON 輸入物件", + "input_file": "JSON 輸入檔案路徑", + "wait": "等待任務完成後返回", + "timeout": "等待完成的超時時間(毫秒,預設:60000)" + }, + "tasks": { + "description": "管理 A2A 任務", + "list": { + "status": "按狀態篩選", + "skill": "按技能 ID 篩選" + }, + "watch": { + "description": "輪詢任務狀態直至完成" + }, + "stream": { + "description": "通過 SSE 流式傳輸任務執行事件" + }, + "logs": { + "description": "顯示任務訊息和產物" + } + } + }, + "policy": { + "description": "管理 OmniRoute 授權策略", + "list": { + "description": "列出策略", + "kind": "按型別篩選(allow|deny|rate-limit|cost-cap)", + "scope": "按作用域篩選(global|api-key|provider)" + }, + "get": { + "description": "按 ID 獲取策略詳情" + }, + "create": { + "description": "從 JSON 檔案建立策略", + "file": "策略 JSON 檔案路徑" + }, + "update": { + "description": "從 JSON 檔案更新策略", + "file": "策略 JSON 檔案路徑" + }, + "delete": { + "description": "按 ID 刪除策略", + "yes": "跳過確認提示" + }, + "evaluate": { + "description": "空執行策略評估(退出碼 0=允許,4=拒絕)", + "api_key": "要評估的 API 金鑰", + "action": "要檢查的操作(例如 chat, embed, admin)", + "resource": "資源路徑或識別符號", + "context": "作為 JSON 物件的額外上下文" + }, + "export": { + "description": "將所有策略匯出到 JSON 檔案" + }, + "import": { + "description": "從 JSON 檔案匯入策略", + "overwrite": "覆蓋具有相同 ID 的現有策略" + } + }, + "compression": { + "description": "配置和檢查 OmniRoute 壓縮管道", + "status": { + "description": "顯示當前壓縮狀態和設定" + }, + "configure": { + "description": "配置壓縮設定", + "engine": "壓縮引擎(caveman|rtk|hybrid|none)", + "caveman_agg": "Caveman 激程序度 0.0–1.0", + "rtk_budget": "RTK 令牌預算", + "language_pack": "要啟用的語言包" + }, + "engine": { + "description": "獲取或設定活動壓縮引擎" + }, + "combos": { + "description": "管理壓縮組合統計" + }, + "rules": { + "description": "管理壓縮規則", + "add": { + "pattern": "要匹配的模式(正則或 field:pattern)", + "action": "操作:drop|shrink|replace" + } + }, + "language_packs": { + "description": "列出可用的壓縮語言包" + }, + "preview": { + "description": "預覽壓縮對請求的效果", + "file": "請求 JSON 檔案路徑" + } + }, + "tunnel": { + "title": "隧道", + "listDescription": "列出活動隧道", + "createDescription": "建立隧道", + "created": "隧道已建立:{url}", + "stopped": "隧道已停止。", + "confirmStop": "停止隧道 {id}?", + "stopDescription": "停止隧道", + "statusDescription": "顯示隧道的詳細狀態", + "logsDescription": "顯示隧道日誌", + "infoDescription": "顯示隧道的配置詳情", + "rotateDescription": "生成新的隧道 URL", + "tailOpt": "顯示的日誌行數", + "typeRequired": "需要隧道型別。", + "noLogs": "沒有可用日誌。", + "notAvailable": "隧道資訊不可用。", + "noTunnels": "沒有活動隧道。", + "infoTitle": "隧道資訊:{type}", + "rotated": "隧道 URL 已輪換:{url}", + "confirmRotate": "輪換隧道 {type}?(將生成新 URL)" + }, + "stop": { + "description": "停止 OmniRoute 伺服器", + "stopping": "正在停止伺服器(PID {pid})...", + "stopped": "伺服器已停止。", + "notRunning": "沒有伺服器在執行。", + "portFallback": "未找到 PID 檔案,嘗試通過埠停止..." + }, + "restart": { + "description": "重啟 OmniRoute 伺服器", + "restarting": "正在重啟 OmniRoute 伺服器..." + }, + "dashboard": { + "description": "在瀏覽器中開啟 OmniRoute 儀表盤", + "opening": "正在開啟儀表盤:{url}", + "urlOnly": "僅列印儀表盤 URL,不開啟瀏覽器", + "tui": "開啟互動式 TUI 儀表盤(終端 UI,7 個標籤頁)" + }, + "models": { + "description": "列出可用模型(需要伺服器)", + "search": "按 ID、名稱、提供商或描述篩選模型", + "noServer": "伺服器未執行。啟動:omniroute serve", + "noModels": "未找到模型。" + }, + "audit": { + "description": "訪問合規和 MCP 審計日誌", + "source": "日誌來源:all|compliance|mcp(預設:all)", + "since": "返回自此時間戳以來的條目(ISO 8601)", + "until": "返回直至此時間戳的條目(ISO 8601)", + "tail": { + "description": "顯示最近的審計日誌條目", + "follow": "持續跟蹤新條目(2 秒輪詢)", + "limit": "顯示的最大條目數(預設:100)" + }, + "search": { + "description": "按關鍵詞搜尋審計日誌條目", + "limit": "最大結果數(預設:200)", + "actor": "按參與者 ID 篩選", + "action": "按操作名稱篩選" + }, + "export": { + "description": "將審計日誌匯出到檔案", + "format": "輸出格式:jsonl|csv(預設:jsonl)" + }, + "stats": { + "description": "顯示審計日誌統計", + "period": "時間範圍:1d|7d|30d(預設:7d)" + }, + "get": { + "description": "按 ID 獲取單個審計日誌條目" + } + }, + "skills": { + "description": "管理 OmniRoute 技能(沙箱、內建、自定義、混合、skillssh)", + "list": { + "description": "列出已安裝的技能", + "type": "按型別篩選(sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "僅顯示已啟用的技能", + "disabled": "僅顯示已停用的技能", + "api_key": "按 API 金鑰篩選" + }, + "get": { + "description": "按 ID 獲取技能詳情" + }, + "install": { + "description": "從檔案或 URL 安裝技能", + "from_file": "技能 JSON 定義檔案路徑", + "from_url": "遠端技能定義的 URL", + "type": "技能型別(sandbox|custom|hybrid)", + "enable": "安裝後啟用技能" + }, + "enable": { + "description": "按 ID 啟用技能" + }, + "disable": { + "description": "按 ID 停用技能", + "yes": "跳過確認提示" + }, + "delete": { + "description": "按 ID 刪除技能", + "yes": "跳過確認提示" + }, + "execute": { + "description": "按 ID 執行技能", + "input": "JSON 輸入物件", + "input_file": "JSON 輸入檔案路徑", + "timeout": "執行超時時間(毫秒,預設:30000)" + }, + "executions": { + "description": "列出技能執行歷史", + "skill": "按技能 ID 篩選", + "limit": "最大結果數(預設:50)", + "status": "按狀態篩選(running|completed|failed)" + }, + "skillssh": { + "description": "管理通過 SSH 安裝的技能" + }, + "marketplace": { + "description": "瀏覽和安裝市場中的技能" + }, + "mp": { + "search": { + "description": "搜尋市場包", + "category": "按類別篩選", + "tag": "按標籤篩選", + "limit": "最大結果數(預設:30)", + "sort": "排序方式:downloads|rating|recent" + }, + "info": { + "description": "顯示包詳情和說明文件" + }, + "install": { + "description": "安裝市場包", + "version": "包版本(預設:latest)", + "enable": "安裝後啟用", + "yes": "跳過確認提示" + }, + "categories": { + "description": "列出市場類別" + }, + "featured": { + "description": "顯示推薦市場包" + } + } + }, + "memory": { + "description": "管理 OmniRoute 對話記憶(FTS5 + 向量)", + "search": { + "description": "按語義查詢搜尋記憶條目", + "type": "按記憶型別篩選(user|feedback|project|reference)", + "limit": "最大結果數(預設:20)", + "api_key": "按 API 金鑰篩選", + "token_budget": "限制結果中的總令牌數" + }, + "add": { + "description": "新增新的記憶條目", + "content": "記憶文本內容", + "file": "從檔案讀取內容", + "type": "記憶型別(預設:user)", + "metadata": "JSON 後設資料物件", + "api_key": "關聯到 API 金鑰" + }, + "clear": { + "description": "刪除匹配篩選條件的記憶條目", + "type": "按型別篩選", + "older": "刪除早於指定時長的條目(30d, 6m, 1y)", + "api_key": "按 API 金鑰篩選", + "yes": "跳過確認提示" + }, + "list": { + "description": "列出記憶條目(不按搜尋排名)", + "type": "按型別篩選", + "limit": "最大結果數(預設:100)", + "api_key": "按 API 金鑰篩選" + }, + "get": { + "description": "按 ID 獲取單個記憶條目" + }, + "delete": { + "description": "按 ID 刪除記憶條目", + "yes": "跳過確認提示" + }, + "health": { + "description": "顯示記憶子系統健康狀態(FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "管理 OAuth 提供商連線", + "providers": { + "description": "列出支援 OAuth 的提供商及其流程型別" + }, + "start": { + "description": "為提供商啟動 OAuth 授權流程", + "provider": "提供商 ID(gemini, copilot, cursor, ...)", + "no_browser": "僅列印 URL — 不開啟瀏覽器", + "import_system": "從本地系統配置自動匯入憑據", + "social": "社交登入提供商(google|github)— kiro 需要", + "timeout": "等待授權超時時間(毫秒,預設:300000)" + }, + "status": { + "description": "列出活動的 OAuth 連線", + "provider": "按提供商 ID 篩選" + }, + "revoke": { + "description": "撤銷 OAuth 連線", + "provider": "要撤銷的提供商 ID", + "connection_id": "按 ID 撤銷特定連線", + "yes": "跳過確認提示" + } + }, + "cloud": { + "description": "管理雲 AI 代理任務(codex, devin, jules)", + "agents": { + "description": "列出可用的雲代理" + }, + "agent": { + "description": "管理 {agent} 雲代理任務", + "auth": { + "description": "通過 OAuth 授權 {agent}" + } + }, + "task": { + "description": "管理雲代理任務", + "create": { + "description": "建立新的代理任務", + "title": "任務標題(預設為提示的前 80 個字元)", + "prompt": "任務提示文本", + "prompt_file": "從檔案讀取提示", + "repo": "要克隆的任務倉庫 URL", + "branch": "要使用的分支名稱", + "metadata": "JSON 後設資料物件" + }, + "list": { + "description": "列出代理任務", + "status": "按狀態篩選(running|completed|failed|cancelled)", + "limit": "最大結果數(預設:50)" + }, + "get": { + "description": "按 ID 獲取任務詳情" + }, + "status": { + "description": "列印任務狀態(running|completed|failed|cancelled)" + }, + "cancel": { + "description": "取消執行中的任務", + "yes": "跳過確認提示" + }, + "approve": { + "description": "批准代理計劃開始執行" + }, + "message": { + "description": "向執行中的任務傳送訊息" + } + }, + "sources": { + "description": "列出任務產生的原始檔" + } + }, + "eval": { + "description": "管理評估套件和執行", + "suites": { + "description": "管理評估套件", + "list": { + "description": "列出評估套件" + }, + "get": { + "description": "按 ID 獲取評估套件詳情" + }, + "create": { + "description": "從 JSON 檔案建立評估套件", + "file": "套件定義 JSON 檔案路徑" + } + }, + "run": { + "description": "為套件啟動評估執行", + "model": "要評估的模型 ID(預設:auto)", + "combo": "強制指定組合名稱", + "concurrency": "併發樣本數(預設:4)", + "tag": "標記此次執行以便後續篩選", + "watch": "觀察執行進度直至完成" + }, + "list": { + "description": "列出評估執行", + "suite": "按套件 ID 篩選", + "status": "按狀態篩選", + "since": "返回自此時間戳以來的執行", + "limit": "最大結果數(預設:50)" + }, + "get": { + "description": "按 ID 獲取評估執行詳情" + }, + "results": { + "description": "顯示評估執行的樣本結果", + "failed": "僅顯示失敗的樣本" + }, + "cancel": { + "description": "取消正在執行的評估", + "yes": "跳過確認提示" + }, + "scorecard": { + "description": "顯示已完成評估執行的記分卡" + } + }, + "webhooks": { + "description": "管理 OmniRoute Webhook", + "events": { + "description": "列出所有可用的 Webhook 事件型別" + }, + "list": { + "description": "列出已配置的 Webhook" + }, + "get": { + "description": "按 ID 獲取 Webhook 詳情" + }, + "add": { + "description": "註冊新的 Webhook", + "url": "目標 URL", + "events": "逗號分隔的事件型別列表", + "secret": "HMAC 簽名金鑰", + "header": "額外的標頭(key=value 格式,可重複)", + "no_enabled": "以停用狀態建立 Webhook" + }, + "update": { + "description": "更新現有 Webhook", + "enabled": "設定啟用狀態(true|false)" + }, + "remove": { + "description": "刪除 Webhook", + "yes": "跳過確認提示" + }, + "test": { + "description": "向 Webhook 傳送測試事件", + "event": "要模擬的事件型別(預設:request.completed)" + } + }, + "files": { + "description": "管理檔案(上傳、列出、獲取、下載、刪除)", + "list": { + "purpose": "按用途篩選", + "limit": "最大結果數" + }, + "get": { + "description": "獲取檔案後設資料" + }, + "upload": { + "description": "上傳檔案", + "purpose": "檔案用途(batch, assistants, fine-tune)" + }, + "content": { + "description": "下載檔案內容", + "out": "儲存到路徑(預設:stdout)" + }, + "delete": { + "yes": "跳過確認" + } + }, + "batches": { + "description": "管理相容 OpenAI 的批次作業", + "list": { + "status": "按狀態篩選", + "limit": "最大結果數" + }, + "create": { + "description": "建立批次作業", + "inputFile": "輸入檔案 ID", + "endpoint": "目標端點", + "window": "完成視窗", + "metadata": "新增後設資料 key=value" + }, + "submit": { + "description": "上傳 JSONL 檔案並建立批次作業", + "jsonl": "JSONL 檔案路徑", + "endpoint": "目標端點", + "wait": "等待完成" + }, + "cancel": { + "yes": "跳過確認" + }, + "wait": { + "timeout": "超時時間(毫秒)" + }, + "output": { + "out": "將輸出儲存到路徑" + }, + "errors": { + "out": "將錯誤儲存到路徑" + } + }, + "translator": { + "description": "在 LLM 格式之間轉換請求體", + "detect": { + "description": "檢測請求體格式" + }, + "translate": { + "description": "將請求體從一種格式轉換為另一種格式" + }, + "send": { + "description": "轉換併發送到上游" + }, + "stream": { + "description": "流式轉換請求體" + }, + "from": "源格式(openai|anthropic|gemini|cohere)", + "to": "目標格式(openai|anthropic|gemini|cohere)", + "file": "請求體 JSON 檔案路徑", + "out": "將輸出儲存到檔案", + "model": "覆蓋模型", + "history": { + "limit": "最大結果數" + } + }, + "pricing": { + "description": "管理模型定價資料", + "sync": { + "description": "從上游同步價格", + "provider": "按提供商篩選", + "force": "強制重新同步" + }, + "list": { + "provider": "按提供商篩選", + "model": "按模型篩選", + "limit": "最大結果數" + }, + "defaults": { + "description": "管理預設定價", + "input": "每 1M 令牌的輸入成本(美元)", + "output": "每 1M 令牌的輸出成本(美元)", + "cacheRead": "每 1M 令牌的快取讀取成本(美元)", + "cacheWrite": "每 1M 令牌的快取寫入成本(美元)" + }, + "diff": { + "description": "顯示與上游價格的差異", + "model": "按模型篩選" + } + }, + "resilience": { + "description": "檢查和管理彈性機制", + "status": { + "provider": "按提供商篩選" + }, + "breakers": { + "provider": "按提供商篩選" + }, + "cooldowns": { + "provider": "按提供商篩選", + "connectionId": "按連線 ID 篩選" + }, + "lockouts": { + "provider": "按提供商篩選", + "model": "按模型篩選" + }, + "reset": { + "description": "重置斷路器/冷卻狀態", + "provider": "要重置的提供商", + "connectionId": "要重置的連線 ID", + "model": "要重置鎖定狀態的模型", + "allCooldowns": "重置提供商的所有冷卻", + "yes": "跳過確認" + }, + "profile": { + "description": "管理彈性配置檔案", + "name": "配置檔名稱" + }, + "config": { + "description": "管理彈性配置", + "threshold": "失敗閾值", + "resetTimeout": "重置超時(毫秒)", + "baseCooldown": "基礎冷卻時間(毫秒)" + } + }, + "nodes": { + "description": "管理提供商節點(端點)", + "list": { + "provider": "按提供商篩選", + "enabled": "僅顯示已啟用的節點" + }, + "add": { + "provider": "提供商名稱", + "baseUrl": "節點的基礎 URL", + "name": "節點名稱", + "weight": "負載均衡權重", + "region": "區域標籤", + "authHeader": "自定義認證標頭(key=value)" + }, + "update": { + "baseUrl": "新的基礎 URL", + "name": "新名稱", + "weight": "新權重", + "region": "新區域", + "enabled": "啟用或停用(true|false)" + }, + "remove": { + "yes": "跳過確認" + }, + "validate": { + "baseUrl": "要驗證的 URL", + "provider": "要驗證的提供商" + }, + "test": { + "description": "向節點發送測試請求" + }, + "metrics": { + "description": "顯示節點指標", + "period": "時間範圍(例如 24h, 7d)" + } + }, + "context": { + "description": "配置上下文工程管道(Caveman, RTK)", + "analytics": { + "period": "時間範圍(例如 7d, 30d)" + }, + "caveman": { + "description": "管理 Caveman 上下文壓縮器", + "config": { + "description": "顯示或更新 Caveman 配置", + "aggressiveness": "激程序度 0.0–1.0", + "maxShrinkPct": "最大壓縮百分比", + "preserveTags": "要保留的逗號分隔標籤" + } + }, + "rtk": { + "description": "管理 RTK 上下文最佳化器", + "config": { + "description": "顯示或更新 RTK 配置", + "tokenBudget": "RTK 令牌預算", + "reservePct": "保留百分比" + }, + "filters": { + "description": "管理 RTK 過濾器", + "pattern": "過濾器模式(正則)", + "priority": "過濾器優先順序(預設:100)", + "action": "過濾器操作:drop|shrink|replace", + "yes": "跳過確認" + }, + "test": { + "file": "請求 JSON 檔案路徑" + } + }, + "combos": { + "description": "上下文感知的組合管理" + } + }, + "sessions": { + "description": "檢查和管理活動會話", + "list": { + "user": "按使用者篩選", + "kind": "按型別篩選(dashboard|api-key|mcp|a2a)", + "active": "僅顯示活動會話", + "limit": "最大結果數(預設:100)" + }, + "expire": { + "yes": "跳過確認" + }, + "expireAll": { + "user": "要過期其會話的使用者", + "yes": "跳過確認" + } + }, + "tags": { + "description": "管理資源標籤", + "add": { + "color": "標籤顏色(十六進位制或名稱)", + "description": "標籤描述" + }, + "remove": { + "yes": "跳過確認" + }, + "assign": { + "tag": "標籤名稱", + "to": "目標資源,格式為 type:id(例如 provider:openai)" + }, + "unassign": { + "tag": "標籤名稱", + "from": "來源資源,格式為 type:id" + } + }, + "openapi": { + "description": "訪問和測試 OmniRoute OpenAPI 規範", + "dump": { + "description": "將 OpenAPI 規範輸出到 stdout 或檔案", + "format": "輸出格式:yaml|json(預設:yaml)", + "out": "儲存到檔案路徑" + }, + "validate": { + "description": "驗證 OpenAPI 規範" + }, + "try": { + "description": "通過規範測試 API 端點", + "method": "HTTP 方法(預設:GET)", + "body": "請求體 JSON 檔案路徑", + "query": "查詢引數 key=value(可重複)", + "header": "標頭 key=value(可重複)" + }, + "endpoints": { + "description": "列出所有 API 端點", + "search": "按路徑或摘要篩選" + }, + "paths": { + "description": "列出所有 API 路徑" + } + }, + "combo": { + "title": "組合", + "switched": "當前組合:{name}", + "created": "組合已建立:{name}", + "deleted": "組合已刪除:{name}", + "noCombos": "未配置組合。", + "confirmDelete": "刪除組合 {name}?", + "suggest": { + "description": "使用 AI 評分為任務推薦最佳組合", + "task": "任務描述", + "maxCost": "每次請求的最大成本(美元)", + "maxLatencyMs": "最大延遲(毫秒)", + "weights": "JSON 評分權重,例如 {\"latency\":0.7,\"cost\":0.3}", + "top": "要顯示的候選數(預設:5)", + "explain": "將理由列印到 stderr", + "switch": "啟用排名最高的組合" + } + }, + "oneproxy": { + "description": "管理 OneProxy 上游代理池", + "stats": { + "provider": "按提供商篩選", + "period": "時間範圍(預設:24h)" + }, + "fetch": { + "description": "從代理池獲取代理", + "count": "要獲取的代理數(預設:1)", + "type": "代理型別:http|socks5(預設:http)" + }, + "rotate": { + "description": "強制輪換代理", + "provider": "要輪換的提供商", + "connectionId": "要輪換的特定連線 ID" + }, + "config": { + "description": "顯示或更新 OneProxy 配置", + "enabled": "啟用代理池(true|false)", + "poolSize": "池大小", + "providerSource": "代理提供商的 URL", + "rotationPolicy": "輪換策略:sticky|per-request|periodic" + }, + "pool": { + "description": "列出當前代理池及指標" + } + }, + "open": { + "description": "在瀏覽器中開啟特定的 OmniRoute 儀表盤頁面", + "url": "僅列印 URL,不開啟瀏覽器" + }, + "telemetry": { + "description": "訪問聚合遙測資料", + "summary": { + "description": "顯示聚合遙測摘要", + "period": "時間範圍:24h|7d|30d(預設:24h)", + "compareTo": "與上一時期比較" + }, + "export": { + "description": "將遙測事件匯出到 JSONL", + "out": "輸出檔案路徑(預設:telemetry.jsonl)", + "period": "匯出時間範圍(預設:7d)" + } + }, + "sync": { + "description": "在 OmniRoute 例項之間同步配置", + "push": { + "description": "將配置推送到雲或遠端例項", + "target": "目標(cloud 或 context:name)", + "bundle": "要同步的包部分", + "dryRun": "預覽但不應用" + }, + "pull": { + "description": "從雲或遠端拉取配置", + "source": "來源(cloud 或 context:name)", + "merge": "與現有配置合併", + "replace": "替換現有配置", + "dryRun": "預覽但不應用" + }, + "diff": { + "source": "源上下文", + "target": "目標上下文" + }, + "bundle": { + "description": "將配置匯出為包檔案", + "include": "要包含的部分(逗號分隔)" + }, + "import": { + "description": "匯入包檔案", + "dryRun": "驗證但不應用" + }, + "initialize": { + "fromCloud": "從雲備份初始化" + }, + "tokens": { + "description": "管理同步令牌", + "create": { + "name": "令牌名稱", + "scope": "令牌作用域", + "ttl": "令牌有效期(例如 30d)" + }, + "revoke": { + "yes": "跳過確認" + } + }, + "resolve": { + "description": "互動式解決同步衝突" + } + }, + "config": { + "contexts": { + "description": "管理伺服器上下文/配置檔案(新增、使用、列出、顯示、移除、重新命名、匯出、匯入)" + }, + "lang": { + "description": "管理 CLI 顯示語言", + "getDescription": "顯示當前活動的語言程式碼", + "setDescription": "設定顯示語言並儲存到配置", + "listDescription": "列出所有可用語言", + "listTitle": "可用語言", + "current": "語言:{code}({name})", + "saved": "語言已設定為 {code}({name})。", + "noCode": "需要語言程式碼。執行 omniroute config lang list 檢視可用程式碼。", + "unknown": "未知語言程式碼:{code}。執行 omniroute config lang list 檢視可用程式碼。", + "alreadySet": "語言已設定為 {code}。", + "envHint": "提示:您也可以在環境中設定 OMNIROUTE_LANG={code}。" + } + }, + "completion": { + "description": "生成或安裝 Shell 補全指令碼", + "zsh": "列印 zsh 補全指令碼", + "bash": "列印 bash 補全指令碼", + "fish": "列印 fish 補全指令碼", + "install": "為檢測到的 Shell 全域性安裝補全指令碼", + "refresh": "重新整理組合/提供商/模型快取" + }, + "logs": { + "description": "流式傳輸或匯出請求日誌", + "follow": "即時流式傳輸日誌", + "filter": "按級別篩選(error,warn,info)— 逗號分隔", + "lines": "要獲取的行數", + "timeout": "連線超時(毫秒)", + "baseUrl": "OmniRoute API 基礎 URL", + "requestId": "按請求 ID 篩選", + "apiKey": "按 API 金鑰篩選", + "combo": "按組合名稱篩選", + "status": "按 HTTP 狀態碼篩選", + "durationMin": "最小請求持續時間(毫秒)", + "durationMax": "最大請求持續時間(毫秒)", + "export": "將日誌儲存到檔案(json/jsonl/csv)", + "exported": "日誌已儲存至 {path}", + "stopped": "日誌流已停止。", + "streamError": "日誌流錯誤:{message}" + }, + "tray": { + "description": "控制系統托盤圖示", + "show": "顯示托盤圖示(如果伺服器使用 --tray 執行)", + "hide": "隱藏托盤圖示", + "quit": "通過托盤退出 OmniRoute" + }, + "autostart": { + "description": "管理 OmniRoute 開機自啟(Linux:systemd 使用者服務)", + "enable": "啟用開機自啟", + "disable": "停用開機自啟", + "status": "顯示自啟狀態", + "toggle": "切換開機自啟" + }, + "runtime": { + "description": "管理本地執行時依賴", + "check": "檢查執行時目錄中本地依賴的狀態", + "repair": "重新安裝執行時目錄中的本地依賴", + "repair_force": "即使有效也強制重新安裝", + "clean": "刪除執行時目錄(釋放磁碟空間)", + "clean_yes": "跳過確認" + }, + "repl": { + "description": "與 LLM 互動式多輪 REPL", + "model": "要使用的模型(預設:auto)", + "combo": "要使用的組合名稱", + "system": "系統提示", + "resume": "按名稱恢復儲存的會話" + }, + "plugin": { + "description": "管理 CLI 外掛(omniroute-cmd-*)", + "list": "列出已安裝的外掛", + "install": "從 npm 或本地路徑安裝外掛", + "remove": "刪除已安裝的外掛", + "info": "顯示已安裝外掛的詳情", + "search": "搜尋 npm 登錄檔中的可用外掛", + "update": "更新已安裝的外掛", + "scaffold": "搭建新的外掛模板" + } +} diff --git a/config/i18n.json b/config/i18n.json index 6e1492496b..2b44ee7aa8 100644 --- a/config/i18n.json +++ b/config/i18n.json @@ -340,6 +340,14 @@ "native": "中文 (简体)", "english": "Chinese (Simplified)", "flag": "🇨🇳" + }, + { + "code": "zh-TW", + "label": "ZH-TW", + "name": "中文 (繁體)", + "native": "中文 (繁體)", + "english": "Chinese (Traditional)", + "flag": "🇹🇼" } ] } diff --git a/docs/README.md b/docs/README.md index d43de85363..9cb3895425 100644 --- a/docs/README.md +++ b/docs/README.md @@ -177,7 +177,7 @@ Mermaid sources and exported SVG/PNG diagrams referenced from the docs above. Se ## i18n/ -Translated mirrors of the documentation in 42 locales. See [i18n/README.md](i18n/README.md) for the supported language list. +Translated mirrors of the documentation in 43 locales. See [i18n/README.md](i18n/README.md) for the supported language list. ## screenshots/ diff --git a/docs/guides/I18N.md b/docs/guides/I18N.md index 355093f24f..ed684900b9 100644 --- a/docs/guides/I18N.md +++ b/docs/guides/I18N.md @@ -6,7 +6,7 @@ lastUpdated: 2026-06-28 # i18n — Internationalization Guide -OmniRoute supports **42 languages** with full dashboard UI translation, translated documentation, and RTL support for Arabic and Hebrew. +OmniRoute supports **43 languages** with full dashboard UI translation, translated documentation, and RTL support for Arabic and Hebrew. 🌐 **Languages:** 🇺🇸 [English](./I18N.md) | 🇧🇷 [Português (Brasil)](../i18n/pt-BR/docs/guides/I18N.md) | 🇪🇸 [Español](../i18n/es/docs/guides/I18N.md) | 🇫🇷 [Français](../i18n/fr/docs/guides/I18N.md) | 🇩🇪 [Deutsch](../i18n/de/docs/guides/I18N.md) | 🇮🇹 [Italiano](../i18n/it/docs/guides/I18N.md) | 🇷🇺 [Русский](../i18n/ru/docs/guides/I18N.md) | 🇨🇳 [中文 (简体)](../i18n/zh-CN/docs/guides/I18N.md) | 🇯🇵 [日本語](../i18n/ja/docs/guides/I18N.md) | 🇰🇷 [한국어](../i18n/ko/docs/guides/I18N.md) | 🇸🇦 [العربية](../i18n/ar/docs/guides/I18N.md) | 🇮🇳 [हिन्दी](../i18n/hi/docs/guides/I18N.md) | 🇹🇭 [ไทย](../i18n/th/docs/guides/I18N.md) | 🇹🇷 [Türkçe](../i18n/tr/docs/guides/I18N.md) | 🇺🇦 [Українська](../i18n/uk-UA/docs/guides/I18N.md) | 🇻🇳 [Tiếng Việt](../i18n/vi/docs/guides/I18N.md) | 🇧🇬 [Български](../i18n/bg/docs/guides/I18N.md) | 🇩🇰 [Dansk](../i18n/da/docs/guides/I18N.md) | 🇫🇮 [Suomi](../i18n/fi/docs/guides/I18N.md) | 🇮🇱 [עברית](../i18n/he/docs/guides/I18N.md) | 🇭🇺 [Magyar](../i18n/hu/docs/guides/I18N.md) | 🇮🇩 [Bahasa Indonesia](../i18n/id/docs/guides/I18N.md) | 🇲🇾 [Bahasa Melayu](../i18n/ms/docs/guides/I18N.md) | 🇳🇱 [Nederlands](../i18n/nl/docs/guides/I18N.md) | 🇳🇴 [Norsk](../i18n/no/docs/guides/I18N.md) | 🇵🇹 [Português (Portugal)](../i18n/pt/docs/guides/I18N.md) | 🇷🇴 [Română](../i18n/ro/docs/guides/I18N.md) | 🇵🇱 [Polski](../i18n/pl/docs/guides/I18N.md) | 🇸🇰 [Slovenčina](../i18n/sk/docs/guides/I18N.md) | 🇸🇪 [Svenska](../i18n/sv/docs/guides/I18N.md) | 🇵🇭 [Filipino](../i18n/phi/docs/guides/I18N.md) | 🇨🇿 [Čeština](../i18n/cs/docs/guides/I18N.md) @@ -134,6 +134,7 @@ README variants) are not yet handled by the new pipeline and are still used. | `uk-UA` | Українська | No | `uk` | | `vi` | Tiếng Việt | No | `vi` | | `zh-CN` | 中文 (简体) | No | `zh-CN` | +| `zh-TW` | 中文 (繁體) | No | `zh-TW` | ## Adding a New Language @@ -241,7 +242,7 @@ python3 scripts/i18n/i18n_autotranslate.py \ - Scans `docs/i18n/` markdown files for English paragraphs - Skips code blocks, tables, and already-translated content - Sends paragraphs to LLM with technical translation system prompt -- Supports all 42 languages +- Supports all 43 languages ## CLI i18n @@ -250,7 +251,7 @@ The `omniroute` CLI has its own i18n layer separate from the Next.js dashboard. ### How it works - Every user-facing string in CLI commands goes through `t("module.key", vars)` from `bin/cli/i18n.mjs`. -- Catalogs are JSON files in `bin/cli/locales/` — 42 ship out-of-the-box. +- Catalogs are JSON files in `bin/cli/locales/` — 43 ship out-of-the-box. - Locale falls back to `en` for any missing key, so partial translations are valid. - The source of truth for available locales is `config/i18n.json` (shared with the dashboard). @@ -301,7 +302,7 @@ invocation. Use `config lang set` to persist. ### Available locales -42 locale files ship in `bin/cli/locales/`. Full translations: `en`, `pt-BR`. +43 locale files ship in `bin/cli/locales/`. Full translations: `en`, `pt-BR`. Scaffold-only (all keys fall back to `en`): `bn`, `gu`, `he`, `in`, `mr`, `ms`, `phi`, `sw`, `ta`, `te`, `ur`. All other 29 locales have `common` + `program` keys translated. @@ -348,12 +349,13 @@ python3 scripts/i18n/validate_translation.py -l cs - **Placeholder mismatches** — ICU placeholders that don't match between source and translation **Exit codes:** -| Code | Meaning | -|------|---------| -| 0 | OK | -| 1 | Generic error | -| 2 | Missing strings (hard error) | -| 3 | Untranslated warning (soft) | + +| Code | Meaning | +| ---- | ---------------------------- | +| 0 | OK | +| 1 | Generic error | +| 2 | Missing strings (hard error) | +| 3 | Untranslated warning (soft) | **Environment:** Set `TRANSLATION_LANG=cs` or use `-l cs` flag. diff --git a/scripts/i18n/generate-multilang.mjs b/scripts/i18n/generate-multilang.mjs index 3ad9919f98..39812499e9 100644 --- a/scripts/i18n/generate-multilang.mjs +++ b/scripts/i18n/generate-multilang.mjs @@ -97,6 +97,15 @@ const LOCALE_SPECS = [ readmeName: "中文 (简体)", docsName: "中文 (简体)", }, + { + code: "zh-TW", + googleTl: "zh-TW", + label: "ZH-TW", + flag: "🇹🇼", + languageName: "中文 (繁體)", + readmeName: "中文 (繁體)", + docsName: "中文 (繁體)", + }, { code: "de", googleTl: "de", @@ -414,7 +423,7 @@ const LOCALE_SPECS = [ }, ]; -const EXISTING_README_CODES = new Set(["pt-BR", "es", "fr", "it", "ru", "zh-CN", "de"]); +const EXISTING_README_CODES = new Set(["pt-BR", "es", "fr", "it", "ru", "zh-CN", "zh-TW", "de"]); const RTL_LOCALES = new Set(["ar", "fa", "he", "ur"]); const URL_MAX_TEXT_LENGTH = 1800; diff --git a/src/i18n/messages/zh-TW.json b/src/i18n/messages/zh-TW.json new file mode 100644 index 0000000000..b879139a9f --- /dev/null +++ b/src/i18n/messages/zh-TW.json @@ -0,0 +1,9077 @@ +{ + "common": { + "save": "儲存", + "cancel": "取消", + "delete": "刪除", + "loading": "正在載入...", + "error": "發生錯誤", + "success": "成功", + "confirm": "你確定嗎?", + "refresh": "重新整理", + "close": "關閉", + "add": "新增", + "edit": "編輯", + "search": "搜尋", + "back": "返回", + "next": "下一頁", + "submit": "提交", + "reset": "重置", + "copy": "複製", + "copied": "已複製!", + "enabled": "啟用", + "disabled": "已停用", + "active": "啟用中", + "inactive": "不活躍", + "noData": "無可用資料", + "nothingHere": "暫無內容", + "configure": "配置", + "manualConfig": "__MISSING__:Manual config", + "manage": "管理", + "name": "名稱", + "actions": "操作", + "status": "狀態", + "type": "型別", + "model": "模型", + "models": "模型", + "provider": "提供商", + "unknownProvider": "__MISSING__:Unknown provider", + "account": "帳戶", + "time": "時間", + "details": "詳情", + "created": "已建立", + "lastUsed": "最近重新整理", + "loadMore": "載入更多", + "noResults": "沒有找到結果", + "reloadPage": "重新載入頁面", + "connected": "已連線", + "disconnected": "已斷開連線", + "notConfigured": "未配置", + "testConnection": "測試連線", + "enable": "啟用", + "disable": "停用", + "columns": "列", + "newest": "最新", + "oldest": "最早", + "all": "全部", + "none": "無", + "yes": "是的", + "no": "否", + "on": "開啟", + "off": "關閉", + "warning": "警告", + "note": "注意事項", + "free": "免費", + "skipToContent": "跳至內容", + "maintenanceServerIssues": "伺服器當前存在異常,部分功能可能暫時不可用。", + "maintenanceServerUnreachable": "伺服器暫時無法連線,正在重新連線...", + "accept": "接受", + "accountId": "帳戶 ID", + "alias": "別名", + "apiKeyId": "API 金鑰 ID", + "apiKeyName": "API 金鑰名稱", + "apiKeySecret": "API 金鑰密文", + "authorization": "授權", + "content-type": "內容型別", + "content-length": "內容長度", + "cookie": "Cookie", + "file": "檔案", + "host": "主機", + "id": "ID", + "import": "匯入", + "limit": "限制", + "offset": "偏移量", + "open": "開啟", + "origin": "來源", + "promptTokens": "輸入 Tokens", + "completionTokens": "輸出 Tokens", + "totalTokens": "總 Tokens", + "rawModel": "原始模型", + "scope": "作用域", + "skill": "技能", + "sortBy": "排序依據", + "sortOrder": "排序順序", + "tab": "標籤頁", + "text": "文本", + "textarea": "文本域", + "tool": "工具", + "toolId": "工具 ID", + "web": "網頁", + "whereUsed": "使用位置", + "whitelist": "白名單", + "blacklist": "黑名單", + "resolve": "解析", + "force": "強制", + "base64url": "Base64 URL", + "hex": "十六進位制", + "range": "範圍", + "component": "元件", + "redirect_uri": "重定向 URI", + "idempotency-key": "冪等鍵", + "error_description": "錯誤描述", + "code": "程式碼", + "compatible": "相容", + "chat-completions": "對話補全", + "oauth": "OAuth", + "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", + "better-sqlite3": "better-sqlite3", + "undici": "undici", + "builder-id": "構建器 ID", + "musicDesc": "音樂描述", + "musicGeneration": "音樂生成", + "idc": "IDC", + "cloud-status-changed": "雲狀態已變更", + "where_used": "使用位置", + "windowMs": "時間視窗(ms)", + "social-github": "GitHub", + "social-google": "Google", + "TOOL_ALLOWLIST": "工具允許列表", + "TOOL_DENYLIST": "工具拒絕列表", + "Failed to save pricing": "儲存定價失敗", + "Failed to reset pricing": "重置定價失敗", + "apikey": "API 金鑰", + "http": "HTTP", + "goToDashboard": "前往儀表板", + "checkSystemStatus": "檢視系統狀態", + "selectModel": "選擇模型", + "combos": "組合", + "noModelsFound": "未找到 Model", + "clear": "清除", + "done": "完成", + "errorOccurred": "錯誤發生", + "comboDeleted": "Combo 已刪除", + "hide": "隱藏", + "creating": "正在建立", + "comboCreated": "Combo 已建立", + "swapFormats": "交換格式", + "daysAgo": "天前", + "retries": "重試次數", + "errorDuringRestore": "錯誤期間恢復", + "eventsAppearHint": "事件顯示提示", + "noLockouts": "無鎖定", + "webSearchDesc": "Web Search 功能說明", + "audioProvidersHeading": "音訊 Provider", + "cloudAgentProviders": "雲代理提供商", + "minutesAgo": "分鐘前", + "a": "A", + "liveAutoRefreshing": "即時自動重新整理中", + "webSearch": "網頁搜尋", + "anthropicPrefixPlaceholder": "Anthropic 字首", + "addModelToCombo": "新增模型到組合", + "failedToLoad": "載入失敗", + "categoryMedia": "類別媒體", + "enableCloud": "啟用雲端", + "expirationBannerExpiringSoon": "過期橫幅即將過期即將", + "retry": "重試", + "embeddings": "嵌入", + "errorCount": "錯誤數量", + "backupReasonManual": "備份原因手動", + "safeSearchModerate": "安全搜尋中等", + "activeLimiters": "活躍限制器", + "a2aCardTitle": "A2A", + "cloudWorkerUnreachable": "Cloud Worker 不可達", + "testFailed": "測試失敗", + "compatibleBaseUrlHint": "填寫相容 API 的 Base URL。", + "usageTracking": "使用量跟蹤", + "disableCloudTitle": "停用雲端", + "noConnections": "無連線", + "providerHealth": "提供商健康狀態", + "confirmDbImport": "確認DB匯入", + "notAvailableSymbol": "—", + "backupsAvailable": "可用備份", + "providerAuto": "自動提供商", + "newProviderNamePlaceholder": "新的提供商名稱", + "a2aQuickStartStep2": "A2A快速開始步驟2", + "ok": "確定", + "available": "可用", + "noBackupYet": "無備份暫無", + "more": "更多", + "noCompatibleYet": "無相容暫無", + "multiProvider": "多提供商", + "repairEnvHint": "修復環境提示", + "disablingCloud": "正在停用 Cloud", + "testBench": "測試臺", + "valid": "有效", + "cloudBenefitShare": "共享 Cloud 訪問能力", + "mcpCardTitle": "MCP", + "disableConfirm": "確認停用?", + "filters": "篩選器", + "expirationBannerExpiredDesc": "過期橫幅已過期說明", + "saveComboDefaults": "儲存組合預設值", + "cloudConnectedVerified": "Cloud 連線已驗證", + "uptime": "執行時間", + "compatibleProdPlaceholder": "相容生產佔位符", + "fallbackChainsTitle": "後備鏈", + "oauthLabel": "OAuth 標籤", + "a2aCardDescription": "通過 A2A 協議連線 Agent 工作流。", + "okShort": "確定短標籤", + "maintenance": "維護", + "formatConverter": "格式轉換器", + "zedImportNetworkError": "Zed 匯入網路錯誤", + "apiKeyLabel": "API key 標籤", + "noModelsForProvider": "此提供商沒有可用模型", + "mcpCardDescription": "通過 MCP 工具連線 Agent 和自動化流程。", + "apiTypeLabel": "API 型別標籤", + "configuredProvidersLabel": "已配置 Provider 標籤", + "maxRetriesLabel": "最大重試次數標籤", + "title": "標題", + "output": "輸出", + "prefixHint": "字首提示", + "skipWizard": "跳過嚮導", + "failedCount": "失敗數量", + "confirmDbImportDesc": "確認DB匯入說明", + "entries": "條目", + "until": "直到", + "disableCombo": "停用組合", + "liveMonitorDescriptionPrefix": "即時顯示請求流經 OmniRoute 時產生的事件。使用", + "runningCount": "執行中數量", + "noActiveConnectionsInGroup": "此分組中沒有活躍連線", + "savedSuccessfully": "儲存成功", + "systemStorage": "系統儲存", + "videoDesc": "影片說明", + "maxResults": "最大結果數", + "timeRangeMonth": "時間範圍月", + "testSummary": "測試摘要", + "failedSetPassword": "設定密碼失敗", + "audio": "音訊", + "restore": "恢復", + "disableWarning": "停用警告", + "moderationsDesc": "稽核說明", + "providerHealthStatusAria": "提供商健康狀態", + "modelNamePlaceholder": "模型名稱", + "mcpQuickStartStep2": "MCP 快速開始步驟 2", + "quickStart": "快速開始", + "fullExportFailedWithError": "完整匯出失敗:{error}", + "loadingBackups": "正在載入備份", + "anthropicBaseUrlPlaceholder": "Anthropic Base URL", + "description": "描述", + "noProviderFound": "未找到提供商", + "auto": "自動", + "protocolsDescription": "配置並測試支援的協議端點。", + "cloudSessionNote": "Cloud Session 提示", + "advancedSettings": "高階設定", + "defaultStrategy": "預設策略", + "purgeExpiredLogs": "清理已過期日誌", + "justNow": "剛剛現在", + "providerTestFailed": "提供商測試失敗", + "openaiBaseUrlPlaceholder": "OpenAI Base URL", + "image": "影像", + "failedCreateChain": "建立鏈失敗", + "importDatabase": "匯入資料庫", + "allDataLocal": "全部資料本地", + "sectionTitle": "分割槽標題", + "failedToggle": "切換失敗", + "editCombo": "編輯 Combo", + "testResults": "測試結果", + "searchQuery": "搜尋查詢", + "addCcCompatible": "新增 CC 相容", + "duplicate": "重複", + "createCombo": "建立組合", + "searchTypeWeb": "搜尋型別:Web", + "addChain": "新增鏈", + "prefixLabel": "字首標籤", + "listModelsDesc": "列出可用 Model。", + "databaseSize": "資料庫大小", + "chainCreated": "鏈已建立", + "providerTestTimeout": "提供商測試超時", + "routingStrategy": "路由策略", + "translateAction": "翻譯操作", + "exportFailed": "匯出失敗", + "connectedVerificationPending": "連線驗證待處理", + "a2aQuickStartTitle": "A2A 快速開始", + "couldNotTest": "無法測試", + "testAllCompatible": "測試所有相容項", + "anthropicCompatibleName": "Anthropic 相容名稱", + "disabling": "正在停用", + "failedEnable": "啟用失敗", + "categoryUtility": "工具類別", + "customUrlOptional": "自定義 URL(可選)", + "localProviders": "本地 Provider", + "comboNamePlaceholder": "Combo 名稱", + "memoryRss": "記憶體 RSS", + "disableProvider": "停用提供商", + "welcomeDesc": "歡迎使用 OmniRoute。", + "nameLabel": "名稱標籤", + "allOperational": "全部執行正常", + "backupNow": "備份現在", + "providerMaxRetriesAria": "提供商最大重試次數", + "textToSpeechDesc": "將文本轉換為語音音訊。", + "machineId": "機器 ID", + "globalProxy": "全域性代理", + "hitsMisses": "命中未命中", + "testDesc": "執行連線測試以驗證配置。", + "chatDesc": "聊天說明", + "importSuccess": "匯入成功", + "chat": "聊天", + "a2aQuickStartStep1": "A2A快速開始步驟1", + "importFailed": "匯入失敗", + "inputPlaceholder": "輸入內容...", + "providerModelsTitle": "提供商模型", + "lastBackup": "最近備份", + "yourEndpoint": "你的 Endpoint", + "autoDisableThresholdDesc": "觸發自動停用前允許的連續失敗次數。", + "rerankDesc": "重排說明", + "modelsPathPlaceholder": "Model 路徑", + "noCombosYet": "暫無 Combo", + "connectedVerificationPendingWithError": "已連線,驗證待完成:{error}", + "comboDefaultsGuideHint1": "配置 Combo 預設策略和目標。", + "enableCloudTitle": "啟用雲端", + "configuredProvidersHint": "僅顯示已配置的 Provider。", + "paused": "已暫停", + "llmProviders": "LLM Provider", + "enableCombo": "啟用組合", + "removeProviderOverrideAria": "移除提供商覆蓋", + "nodeVersion": "Node 版本", + "openai": "OpenAI", + "exportFailedWithError": "匯出失敗:{error}", + "proxyConfigured": "代理已配置", + "concurrencyPerModel": "每個模型併發數", + "protocolTasksLabel": "協議任務標籤", + "oauthProviders": "OAuth 提供商", + "lockedCount": "已鎖定數量", + "deleteChainConfirm": "刪除此後備鏈?", + "recentTranslations": "最近翻譯", + "zedImportButton": "從 Zed 匯入", + "responsesDesc": "Responses API 相容端點", + "testedCount": "已測試數量", + "providersCommaSeparatedPlaceholder": "以逗號分隔的 Provider", + "signatureDefaults": "簽名預設值", + "errorCreating": "錯誤建立", + "timeRangeYear": "時間範圍年", + "compatibleLabel": "相容", + "cloudDisabledSuccess": "雲端已停用", + "deleteConfirm": "確認刪除?", + "check": "檢查", + "safeSearch": "安全搜尋", + "protocolLastActivity": "協議最近活動", + "openMcpDashboard": "開啟 MCP Dashboard", + "testBenchTab": "測試臺", + "chatPathLabel": "聊天路徑標籤", + "retryDelay": "重試延遲", + "errorUpdating": "錯誤更新", + "ideCliIntegrations": "IDE 與 CLI 整合", + "imageGeneration": "影像生成", + "apiKeyRequired": "API key 為必填項", + "resetAllTitle": "全部重置", + "connectionError": "連線錯誤", + "modelName": "模型名稱", + "apiKeyForCheck": "用於檢查的 API 金鑰", + "cloudRequestTimeout": "雲端請求超時", + "showConfiguredOnly": "顯示已配置僅", + "showFreeOnly": "僅免費", + "addFirstProvider": "新增您的第一個提供商", + "addFirstProviderDesc": "連線 AI 提供商以開始通過 OmniRoute 路由請求。您可以使用免費提供商、API 金鑰或 OAuth 帳戶。", + "learnMore": "瞭解更多", + "includeDomains": "包含域名", + "promptCache": "提示快取", + "cloudConnected": "Cloud 已連線", + "deleteChain": "刪除鏈", + "chatPathPlaceholder": "聊天路徑佔位符", + "databasePath": "資料庫路徑", + "usingLocalServer": "正在使用本地 Server", + "globalComboConfig": "全域性 Combo 配置", + "backupFailed": "備份失敗", + "tabProtocols": "協議標籤頁", + "continue": "繼續", + "categorySearch": "類別搜尋", + "rateLimitStatus": "速率限制狀態", + "repairEnvSuccess": "環境修復成功", + "nameRequired": "名稱必填", + "country": "國家/地區", + "trackMetricsDesc": "跟蹤請求、延遲和成本指標。", + "durationSecondsShort": "時長秒短標籤", + "formatConverterDescription": "在不同 API 格式之間轉換請求。", + "cloudBenefitAccess": "訪問 Cloud 能力", + "maxRetries": "最大重試次數", + "queueTimeout": "佇列超時", + "queueDepth": "__MISSING__:Queue Depth", + "addProvider": "新增提供商", + "realtime": "即時", + "totalTranslations": "總計翻譯", + "protocolActiveStreamsLabel": "協議活躍 Stream", + "repairEnv": "修復環境", + "modelsCount": "Model 數量", + "viewBackups": "檢視備份", + "responsesApi": "Responses API", + "copyComboName": "複製 Combo 名稱", + "failures": "失敗", + "failedUpdate": "更新失敗", + "imageDesc": "影像說明", + "failedCreate": "建立失敗", + "remainingOfLimit": "剩餘Of限制", + "protocolsTitle": "協議", + "expirationBannerExpiringSoonDesc": "過期橫幅即將過期即將說明", + "source": "來源", + "failed": "失敗", + "apiKeyMgmt": "API key 管理", + "mcpQuickStartStep1": "MCP 快速開始步驟 1", + "runTest": "執行測試", + "loadingFallbackChains": "正在載入後備鏈", + "healthy": "健康", + "version": "版本", + "saveBlockWeighted": "儲存 Block Weighted", + "zedImportNone": "沒有可從 Zed 匯入的內容", + "noBackupsYet": "無備份暫無", + "noGlobalProxy": "無全域性代理", + "noModels": "無 Model", + "stickyLimit": "粘性限制", + "passedCount": "通過數量", + "zedImportFailed": "Zed 匯入失敗", + "saving": "正在儲存", + "testAll": "全部測試", + "globalProxyDesc": "全域性代理說明", + "latencyP99": "延遲P99", + "connectingToCloud": "正在連線雲端", + "responses": "響應", + "errorDeleting": "錯誤刪除", + "openaiPrefixPlaceholder": "OpenAI 字首", + "enterPassword": "輸入密碼", + "openA2aDashboard": "開啟 A2A Dashboard", + "enableProvider": "啟用提供商", + "modeTest": "測試模式", + "failedDeleteChain": "刪除鏈失敗", + "providerDesc": "提供商描述", + "templateLoadHint": "選擇模板以快速填充配置。", + "lastFailure": "最近失敗", + "moveDown": "移動下移", + "providerLabel": "提供商標籤", + "clearCacheFailed": "清除快取失敗", + "imagesGenerations": "影像生成", + "repairEnvWorking": "修復環境處理中", + "millisecondsShort": "毫秒短標籤", + "globalLabel": "全域性標籤", + "failuresPlural": "失敗複數", + "completionsLegacyDesc": "舊版 Completions API 相容端點。", + "searchProviders": "搜尋 Provider", + "chatPathHint": "聊天路徑提示", + "defaultStrategyDesc": "預設策略說明", + "latencyP95": "延遲P95", + "textToSpeech": "文本轉語音", + "searchType": "搜尋型別", + "messages": "訊息", + "aggregatorsGateways": "聚合器與閘道器", + "comboStrategyAria": "Combo 策略", + "input": "輸入", + "testingConnection": "正在測試連線", + "excludeDomains": "排除域名", + "webCookieProviders": "Web Cookie 提供商", + "allTestsPassed": "全部測試通過", + "openaiCompatibleName": "OpenAI 相容名稱", + "warningCostOptimizedPartialPricing": "部分模型缺少定價,成本最佳化結果可能不完整。", + "comboDefaultsGuideTitle": "組合預設值指南", + "hoursAgo": "小時前", + "notAvailable": "不可用", + "skipAndContinue": "跳過並繼續", + "moderations": "稽核", + "proxyConfig": "代理配置", + "upstreamProxyProviders": "上游代理 Provider", + "exportAll": "匯出全部", + "queuedCount": "排隊中數量", + "resetAll": "重置全部", + "noTranslations": "無翻譯", + "avgLatency": "平均延遲", + "throttleStatus": "限流狀態", + "backupRetentionDesc": "備份保留說明", + "noCBData": "無CB資料", + "chainDeleted": "鏈已刪除", + "timeLeft": "時間剩餘", + "expirationBannerExpired": "過期橫幅已過期", + "language": "語言", + "invalidFileType": "無效檔案型別", + "monitoredProviders": "監控中的 Provider", + "errors": "錯誤", + "heap": "堆記憶體", + "chatCompletions": "聊天補全", + "exampleTemplatesHint": "示例模板提示", + "retryDelayLabel": "重試延遲標籤", + "audioTranscription": "音訊轉寫", + "fallbackChainsDesc": "定義每個模型的提供商後備順序。", + "exampleTemplates": "示例模板", + "connectionsCount": "連線數量", + "modelsPathLabel": "Model 路徑", + "activeProvidersHint": "當前正在處理請求的 Provider。", + "activeLockouts": "活躍鎖定", + "invalid": "無效", + "skipPassword": "跳過密碼", + "moveUp": "移動上移", + "timeRange": "時間範圍", + "stickyLimitDesc": "粘性限制說明", + "cloudBenefitEdge": "邊緣 Cloud 能力", + "custom": "自定義", + "verifying": "正在驗證", + "baseUrlLabel": "Base URL 標籤", + "setPassword": "設定密碼", + "safeSearchStrict": "安全搜尋嚴格", + "noChangesSinceBackup": "無變更自從備份", + "modelsPathHint": "用於拉取 Model 列表的路徑。", + "audioTranscriptions": "音訊轉寫", + "testCombo": "測試組合", + "mcpQuickStartTitle": "MCP 快速開始", + "comboUpdated": "Combo 已更新", + "weighted": "加權", + "providers": "Provider", + "ccCompatibleLabel": "CC 相容", + "noFallbackChainsDesc": "建立一條鏈路,用於定義某個模型的提供商回退順序。", + "yesImport": "確認匯入", + "lockoutsAutoRefreshHint": "鎖定自動重新整理提示", + "tabApis": "API 標籤頁", + "sectionDescription": "分割槽描述", + "filter": "篩選", + "purgeLogsFailed": "清理日誌失敗", + "latency": "延遲", + "testAllOAuth": "測試所有 OAuth", + "mcpQuickStartStep3": "MCP 快速開始步驟 3", + "repairEnvFailed": "環境修復失敗", + "zedImportHint": "從 Zed 配置中匯入 Provider。", + "modelsAcrossEndpoints": "跨 Endpoint 的 Model", + "autoDisableBannedAccounts": "自動停用被封禁帳戶", + "securityDesc": "安全說明", + "listModels": "列出 Model", + "backupRestore": "備份恢復", + "target": "目標", + "zedImportSuccess": "Zed 匯入成功", + "lastHeaderUpdate": "上次請求頭更新", + "categoryCore": "類別核心", + "noFallbackChains": "無後備鏈", + "noSearchProviders": "無搜尋 Provider", + "autoBalance": "自動均衡", + "noModelsYet": "暫無 Model", + "signatureFamily": "簽名族", + "externalApiCalls": "外部 API 呼叫", + "providerOverridesDesc": "覆蓋每個提供商的超時和重試設定。", + "signatureTool": "簽名工具", + "connectionFailed": "連線失敗", + "activeLimitersPlural": "活躍限制器複數", + "doneDesc": "完成說明", + "down": "下移", + "noDataYet": "無資料暫無", + "activeProviders": "活躍 Provider", + "nameInvalid": "名稱無效", + "skip": "跳過", + "createChain": "建立鏈", + "audioSpeech": "語音合成", + "cacheCleared": "快取已清除", + "searchTypeNews": "搜尋型別:News", + "durationMillisecondsShort": "時長毫秒短標籤", + "addOpenAICompatible": "新增開啟Ai相容", + "chatTesterTab": "聊天測試標籤頁", + "queued": "排隊中", + "domainPlaceholder": "域名佔位符", + "durationMinutesShort": "時長分鐘短標籤", + "verifyingConnection": "正在驗證連線", + "imageProviders": "影像 Provider", + "protocolToolsLabel": "協議工具標籤", + "queryPlaceholder": "查詢佔位符", + "videoGeneration": "影片生成", + "timeRangeWeek": "時間範圍:周", + "limitExhausted": "限額已耗盡", + "failedDisable": "停用失敗", + "inMemoryNote": "資料僅儲存在記憶體中。", + "compatibleHint": "相容提示", + "errorShort": "錯誤短標籤", + "advancedHint": "顯示高階選項。", + "restoreFailed": "恢復失敗", + "searchProvidersHeading": "搜尋 Provider", + "comboName": "Combo 名稱", + "autoDisableDescription": "當檢測到永久封禁訊號時自動停用帳戶。", + "embeddingsDesc": "Embeddings API 相容端點。", + "operational": "執行正常", + "testAllApiKey": "測試所有 API 金鑰", + "backupCreated": "備份已建立", + "errorDuringImport": "錯誤期間匯入", + "comboDefaultsGuideHint2": "這些預設值會在新建 Combo 時使用。", + "connecting": "正在連線", + "fillModelAndProviders": "請填寫模型和提供商", + "syncing": "正在同步", + "resetConfirm": "重置確認", + "trackMetrics": "跟蹤指標", + "successful": "成功", + "recovering": "正在恢復", + "autoDisableThreshold": "自動停用閾值", + "anthropic": "Anthropic", + "syncingData": "正在同步資料", + "cloudBenefitPorts": "通過 Cloud 暴露埠", + "compatibleProviders": "相容 Provider", + "freeTierProviders": "免費層級提供商", + "freeTierLabel": "提供免費套餐", + "freeTierProvidersDesc": "提供免費套餐的提供商 — 有些需要 API 金鑰註冊,有些則根本不需要憑據。", + "clearCache": "清除快取", + "reqs": "請求數", + "addAnthropicCompatible": "新增 Anthropic 相容 Provider", + "apiKeyProviders": "API key Provider", + "tabsAria": "標籤頁", + "resetting": "正在重置", + "millisecondsAbbr": "毫秒縮寫", + "backupReasonPreRestore": "恢復前備份", + "disableCloud": "停用雲端", + "newProviderNameAria": "新的提供商名稱", + "passwordsMismatch": "密碼不匹配", + "a2aQuickStartStep3": "A2A快速開始步驟3", + "liveMonitorDescriptionSuffix": "或外部 API 呼叫來生成事件。", + "failedAddProvider": "新增提供商失敗", + "addAtLeastOneProvider": "至少新增一個提供商", + "reasonSeparator": "原因分隔符", + "zedImporting": "正在從 Zed 匯入", + "confirmPasswordPlaceholder": "確認密碼佔位符", + "whatYouGet": "你將獲得", + "signatureSession": "簽名 Session", + "errorCountNoCode": "無程式碼錯誤數", + "testing": "正在測試", + "providersCommaSeparated": "以逗號分隔的 Provider", + "exportDatabase": "匯出資料庫", + "hitRate": "命中率", + "completionsLegacy": "Completions 舊版", + "removeModel": "移除模型", + "timeRangeDay": "時間範圍:天", + "cloudRequestFailed": "雲端請求失敗", + "updatedAt": "更新時間", + "monitoredProvidersHint": "選擇需要監控的 Provider。", + "connectionSuccessful": "連線成功", + "latencyP50": "延遲P50", + "logsDeleted": "日誌已刪除", + "chatTester": "聊天測試器", + "safeSearchOff": "Safe Search 關閉", + "nameHint": "名稱提示", + "debugToggle": "除錯開關", + "embedding": "嵌入", + "issuesLabel": "問題標籤", + "optionAny": "任意選項", + "maxNestingDepth": "最大巢狀深度", + "rerank": "重新排序", + "checking": "正在檢查", + "getStarted": "開始使用", + "restoreSuccess": "恢復成功", + "issuesDetected": "檢測到問題", + "signatureCache": "簽名快取", + "modelLockouts": "模型鎖定", + "usingCloudProxy": "正在使用 Cloud 代理", + "loadingHealth": "正在載入健康狀態", + "providerOverrides": "提供商覆蓋", + "audioTranscriptionDesc": "音訊轉寫說明", + "learnedFromHeaders": "從響應頭學習", + "totalRequests": "總計請求", + "cloudUnstableNote": "Cloud 連線不穩定,部分功能可能受影響。", + "gamificationAdmin": "遊戲化管理員", + "monitorAnomaliesAndHealth": "監控異常和系統健康狀況", + "flaggedAnomalies": "標記的異常", + "noAnomaliesDetected": "未檢測到異常情況", + "apiKey": "API金鑰", + "xpLastHour": "XP(1 小時)", + "zScore": "Z 分數", + "tokensCommunityServers": "社群伺服器", + "tokensServerNamePlaceholder": "伺服器名稱", + "tokensApiKeyPlaceholder": "API金鑰", + "tokensTokenBalance": "代幣餘額", + "tokensSendTokens": "傳送代幣", + "tokensRecipientApiKeyId": "接收者 API 金鑰 ID", + "tokensRecipientApiKeyIdPlaceholder": "輸入收件人 API 金鑰 ID", + "tokensReasonOptional": "原因(可選)", + "tokensReasonPlaceholder": "例如獎金,獎勵", + "tokensTransactionHistory": "交易記錄", + "tokensNoTransactionsYet": "還沒有交易", + "tokensInviteCodes": "邀請碼", + "tokensMaxUses": "最大使用次數", + "tokensRedeemCode": "兌換程式碼", + "tokensRedeemCodePlaceholder": "輸入邀請碼", + "tokensYourActiveInvites": "您的有效邀請", + "tierCoverageTitle": "層級覆蓋範圍", + "tierCoverageSubtitle": "每個後備層配置的提供程式", + "batchDetailCopyId": "複製身份證件", + "batchDetailClose": "關閉", + "batchDetailEndpoint": "端點", + "batchDetailModel": "型號", + "batchDetailWindow": "窗戶", + "batchDetailCreated": "已建立", + "providerTopologyEmpty": "尚未連線提供商", + "badgeToastUnlocked": "徽章已解鎖!", + "batchListSearchPlaceholder": "按 ID、端點、型號搜尋...", + "batchListDeleteAllCompletedTitle": "刪除所有已完成的批次", + "batchListBatchesTable": "批次", + "changelogViewerLoading": "正在從 GitHub 載入變更日誌...", + "profileLoading": "正在載入個人資料...", + "profileHowToEarn": "如何賺取", + "bootstrapBannerDismiss": "解僱", + "batchListDeleteBatchTitle": "刪除批次及其檔案", + "leaderboardYourRank": "你的等級", + "leaderboardLoading": "正在載入排行榜...", + "batchFileDetailCopyId": "複製身份證件", + "batchFileDetailClose": "關閉", + "batchFileDetailFailedToLoad": "無法載入檔案內容", + "batchFilesListSearchPlaceholder": "按 ID 或檔名搜尋...", + "batchFilesListFilesTable": "檔案", + "batchPageLoadingMore": "載入更多...", + "recommended": "推薦", + "understand": "我明白", + "batchConceptTitle": "批處理", + "batchConceptSubtitle": "以約 50% 的成本非同步處理數千個請求(24 小時間隔)。非常適合評估、批次分類和嵌入。", + "batchConceptHowItWorks": "工作原理", + "batchConceptBenefit50pct": "輸入 + 輸出令牌享受 50% 折扣", + "batchConceptAsync24h": "非同步處理,24 小時完成視窗", + "batchConceptUseCases": "最適合批次分類、評估和嵌入", + "filesConceptTitle": "批處理檔案", + "filesConceptSubtitle": "批處理使用的 JSONL 檔案:輸入請求、結果和錯誤。", + "filesConceptInput": "輸入 — 每行一個請求的 JSONL", + "filesConceptOutput": "輸出 — 已完成請求的結果", + "filesConceptError": "錯誤 — 失敗的請求", + "filesConceptRetention": "保留期:預設為 30 天(Anthropic 為 29 天)", + "wizardTitle": "新建批處理", + "wizardClose": "關閉", + "wizardNext": "下一步", + "wizardBack": "上一步", + "wizardCancel": "取消", + "wizardCreate": "建立批處理", + "wizardCreating": "建立中…", + "wizardStep1Destination": "目標", + "wizardStep2Input": "輸入", + "wizardStep3Validate": "驗證", + "wizardStep4Cost": "成本與建立", + "wizardProviderLabel": "提供商", + "wizardEndpointLabel": "端點", + "wizardModelLabel": "模型", + "wizardInputKindJsonl": "JSONL", + "wizardInputKindCsv": "CSV(我們將轉換)", + "wizardDropOrPick": "拖放檔案或點選選擇", + "wizardCsvMappingTitle": "將 CSV 列對映到請求欄位", + "wizardCsvMappingAddField": "新增欄位", + "wizardValidationOk": "所有行有效", + "wizardValidationErrors": "驗證錯誤", + "wizardValidationPreview": "預覽(前 5 個請求)", + "wizardValidationSamplingNote": "檔案較大 — 通過抽樣驗證(前 1000 行 + 後 100 行)。完整驗證在伺服器端執行。", + "wizardCostSync": "同步成本", + "wizardCostBatch": "批處理成本(-50%)", + "wizardCostSavings": "節省", + "wizardCostEstimatedNotice": "估算成本 — 實際計費可能有所不同。", + "wizardErrorUpload": "上傳檔案失敗。請重試。", + "wizardErrorCreate": "建立批處理失敗。請重試。", + "wizardEmptyProviders": "先連線支援批處理的提供商(OpenAI、Anthropic 或 Gemini)以建立批處理。", + "uploadModalTitle": "上傳批處理檔案", + "uploadModalDropOrPick": "拖放 .jsonl 檔案或點選選擇", + "uploadModalUpload": "上傳", + "uploadModalCancel": "取消", + "uploadModalError": "上傳失敗。請重試。", + "uploadModalSuccess": "已上傳", + "uploadModalSizeLimit": "最大 512 MB", + "batchListNewButton": "新建批處理", + "batchListAutoRefresh": "自動重新整理 30 秒", + "batchListCostColumn": "成本", + "batchActionCancel": "取消", + "batchActionDownloadOutput": "下載輸出", + "batchActionDownloadErrors": "下載錯誤", + "batchActionRetry": "重試失敗的", + "batchActionRetryConfirm": "重試 {n} 個失敗請求?最終成本取決於實際消耗的令牌。", + "expirationBadgeCritical": "緊急", + "expirationBadgeWarning": "即將", + "expirationBadgeNormal": "待處理", + "expirationBadgeExpired": "已過期", + "filesListUploadButton": "上傳", + "filesListUsedByColumn": "被使用", + "filesListUsedByNone": "無", + "filesListUsedByRoleInput": "輸入", + "filesListUsedByRoleOutput": "輸出", + "filesListUsedByRoleError": "錯誤", + "filesListSizeColumn": "大小", + "batchListProgressPartial": "(部分)", + "batchListProviderColumn": "提供商", + "batchListProviderUnknown": "—", + "batchListProviderOther": "其他", + "batchListTitle": "批處理", + "batchListCount": "{count} 個批處理", + "batchListRemovingCompleted": "移除中…", + "batchListRemoveCompleted": "移除已完成", + "batchListTableStatus": "狀態", + "batchListTableId": "ID", + "batchListTableEndpoint": "端點", + "batchListTableModel": "模型", + "batchListTableProgress": "進度", + "batchListTableCreated": "建立時間", + "batchListTableExpires": "過期時間", + "batchListLoading": "載入中…", + "batchListEmpty": "未找到批處理", + "batchListValidating": "驗證中…", + "batchStatusAll": "所有狀態", + "batchStatusInProgress": "進行中", + "batchStatusValidating": "驗證中", + "batchStatusFinalizing": "最終處理中", + "batchStatusCompleted": "已完成", + "batchStatusFailed": "已失敗", + "batchStatusCancelled": "已取消", + "batchStatusCancelling": "取消中", + "batchStatusExpired": "已過期", + "batchStatusCompletedWithFailures": "已完成(有失敗)", + "batchStatusInProgressWithFailures": "進行中(有失敗)", + "batchStatusFinalizingWithFailures": "最終處理中(有失敗)", + "batchStatusCancelledWithFailures": "已取消(有失敗)", + "batchStatusExpiredWithFailures": "已過期(部分)", + "wizardCostEstimating": "估算成本…", + "wizardCostRequests": "請求數", + "wizardCostInputTok": "輸入 tok", + "wizardCostOutputTok": "輸出 tok", + "wizardCostWindow": "視窗", + "wizardDestinationSelectProvider": "選擇提供商…", + "wizardDestinationSelectModel": "選擇模型…", + "wizardDestinationConnectProvider": "連線提供商", + "batchListBatchCreated": "批處理 {id} 已建立 — 重新整理列表中…", + "batchListBatchCreatedDismiss": "關閉", + "batchListRefreshing": "重新整理中…", + "batchListRefresh": "重新整理", + "uploadFileModalRemove": "移除", + "uploadFileModalUploading": "上傳中…", + "wizardInputReading": "讀取檔案…", + "wizardInputReady": "就緒", + "wizardInputLargeFileLabel": "大檔案 — 抽樣驗證", + "wizardInputCsvJsonlReady": "JSONL 已生成 — 可以驗證。", + "wizardInputLargeFileWarning": "檢測到大檔案 — 通過抽樣驗證(前 5 MB + 後 100 KB)。完整驗證在伺服器端進行。", + "wizardCostWindow24h": "24 小時完成視窗", + "wizardValidationFieldsOk": "必填欄位有效", + "filesListDelete": "刪除", + "filesListDownload": "下載", + "batchDetailActionCancel": "取消批處理", + "batchDetailActionRetry": "重試失敗請求", + "batchDetailCancelling": "取消中…", + "batchDetailRetrying": "準備重試…", + "batchDetailCancelConfirm": "取消此批處理?進行中的請求將停止。", + "batchActionCancelError": "取消批處理失敗。請重試。", + "batchActionRetryError": "重試失敗請求失敗。請重試。", + "batchConceptRetentionNote": "結果和錯誤檔案保留 30 天(Anthropic:29 天)" + }, + "disabled": "__MISSING__:Disabled", + "featureFlagOmnirouteEmergencyFallbackDescription": "__MISSING__:Route budget-exhausted requests to the emergency free fallback provider/model.", + "featureFlagArenaEloSyncEnabledDescription": "__MISSING__:Enable periodic Arena AI leaderboard ELO sync for model intelligence rankings.", + "sidebar": { + "home": "首頁", + "dashboard": "儀表板", + "providers": "提供商", + "combos": "組合", + "usage": "用量", + "analytics": "分析", + "costs": "成本", + "health": "健康", + "proxy": "代理", + "limits": "限制與配額", + "cliTools": "CLI 工具", + "media": "媒體", + "settings": "設定", + "translator": "翻譯器", + "playground": "演練場", + "searchTools": "搜尋工具", + "agents": "智慧體", + "cloudAgents": "雲代理", + "memory": "記憶", + "skills": "技能", + "omniSkills": "全方位技能", + "agentSkills": "代理技能", + "docs": "文件", + "issues": "問題反饋", + "endpoints": "端點", + "endpointsSubtitle": "您的 AI 連線 URL", + "apiManager": "API 管理", + "apiManagerSubtitle": "管理 API 金鑰和訪問", + "embeddedServices": "內嵌服務", + "embeddedServicesSubtitle": "管理本地代理服務", + "logs": "日誌", + "webhooks": "Webhook", + "webhooksSubtitle": "獲取事件通知", + "combosSubtitle": "用於故障轉移的組提供程式", + "batchSubtitle": "處理多個請求", + "contextCavemanSubtitle": "迅速壓縮", + "contextRtkSubtitle": "輸出濾波", + "auditLog": "審計日誌", + "shutdown": "停止服務", + "restart": "重啟服務", + "shutdownConfirm": "確定要停止 OmniRoute 嗎?", + "restartConfirm": "確定要重啟 OmniRoute 嗎?", + "version": "v{version}", + "debug": "除錯", + "system": "系統", + "help": "幫助", + "primarySection": "主導航", + "cliSection": "CLI", + "debugSection": "除錯", + "systemSection": "系統", + "helpSection": "幫助", + "serverDisconnected": "伺服器已斷開連線", + "serverDisconnectedMsg": "代理伺服器已停止,或正在重啟。", + "expandSidebar": "展開側邊欄", + "collapseSidebar": "收起側邊欄", + "themes": "主題", + "presetColors": "熱門配色", + "createTheme": "建立主題", + "chooseColor": "選擇一種顏色", + "themeCoral": "珊瑚", + "themeBlue": "藍色", + "themeRed": "紅色", + "themeGreen": "綠色", + "themeViolet": "紫羅蘭", + "themeOrange": "橙色", + "themeCyan": "青色", + "cliToolsShort": "工具", + "cache": "快取", + "cacheShort": "快取", + "batch": "批次任務", + "themeSystem": "主題系統", + "whitelabelingDesc": "自定義品牌展示與主題外觀。", + "switchThemes": "切換主題", + "themeAccentDesc": "選擇用於按鈕、連結和高亮狀態的強調色。", + "uploadFavicon": "上傳 Favicon", + "themeDark": "深色主題", + "customLogoDesc": "上傳用於側邊欄和登入頁的自定義 Logo。", + "sidebarVisibilityToggle": "側邊欄可見性開關", + "themeAccent": "主題強調色", + "resetFavicon": "重置 Favicon", + "whitelabeling": "白標", + "darkMode": "深色模式", + "uploadLogo": "上傳 Logo", + "themeLight": "淺色主題", + "appName": "應用名稱", + "appNameDesc": "設定在介面和瀏覽器標題中顯示的名稱。", + "resetLogo": "重置 Logo", + "customFavicon": "自定義 Favicon", + "hideHealthLogs": "隱藏健康檢查日誌", + "customLogo": "自定義 Logo", + "appearance": "外觀", + "themeSelectionAria": "主題選擇", + "themeCreate": "建立主題", + "customFaviconDesc": "上傳用於瀏覽器標籤頁的自定義 Favicon。", + "logoPreview": "Logo 預覽", + "themeCustom": "自定義主題", + "hideHealthLogsDesc": "隱藏健康檢查日誌說明", + "faviconPreview": "Favicon 預覽", + "changelog": "更新日誌", + "contextSection": "上下文與快取", + "contextCaveman": "Caveman", + "contextRtk": "RTK", + "contextCombos": "引擎組合", + "contextLite": "Lite", + "contextAggressive": "Aggressive", + "contextUltra": "Ultra", + "contextSettings": "Compression Settings", + "contextHeadroom": "Headroom", + "contextSessionDedup": "Session Dedup", + "contextCcr": "CCR", + "contextLlmlingua": "LLMLingua", + "combosLive": "Combo Studio", + "compressionStudio": "Compression Studio", + "routingSection": "路由", + "protocolsSection": "協議", + "agentsAiSection": "代理與 AI", + "cacheContextSection": "快取與上下文", + "analyticsSection": "分析", + "costsSection": "成本", + "monitoringSection": "監控", + "auditSecuritySection": "審計與安全", + "devtoolsSection": "開發工具", + "configurationSection": "配置", + "aiFeaturesSection": "AI 功能", + "mcp": "MCP", + "a2a": "A2A", + "plugins": "__MISSING__:Plugins", + "apiEndpoints": "API 端點", + "batchFiles": "檔案", + "analyticsEvals": "評估", + "analyticsSearch": "搜尋", + "analyticsUtilization": "利用率", + "analyticsComboHealth": "組合健康", + "analyticsCompression": "壓縮", + "costsBudget": "預算", + "costsFreeTiers": "免費層預算", + "costsFreeTiersSubtitle": "每月免費令牌配額", + "freeProviderRankings": "__MISSING__:Free Provider Rankings", + "freeProviderRankingsSubtitle": "__MISSING__:Best free providers ranked by model ELO scores", + "costsQuotaShare": "配額共享", + "costsPricing": "定價", + "logsProxy": "代理日誌", + "logsConsole": "控制台", + "logsActivity": "活動", + "auditMcp": "MCP 審計", + "auditA2a": "A2A稽核", + "settingsGeneral": "通用", + "settingsAppearance": "外觀", + "settingsAi": "AI 設定", + "settingsSecurity": "安全", + "settingsAccessTokens": "__MISSING__:Access Tokens", + "settingsFeatureFlags": "功能標誌", + "settingsAuthz": "授權", + "settingsRouting": "路由", + "settingsResilience": "彈性", + "modelLockout": "__MISSING__:Model Lockout", + "settingsAdvanced": "高階", + "omniProxySection": "OmniProxy", + "quotaTracker": "提供商配額", + "providerQuota": "提供商配額", + "runtime": "執行時", + "consoleLogs": "控制台日誌", + "globalRouting": "全域性路由", + "mitmProxy": "MITM 代理", + "oneProxy": "1Proxy", + "agenticFeaturesSection": "代理功能", + "otherFeaturesSection": "其他功能", + "compressionContextGroup": "壓縮上下文", + "gamificationGroup": "Gamification", + "toolsGroup": "工具", + "integrationsGroup": "整合", + "proxyGroup": "代理", + "costsParametersGroup": "成本引數", + "auditGroup": "審計", + "batchGroup": "批處理", + "homeSubtitle": "儀表盤概覽", + "providersSubtitle": "管理 AI 提供商", + "quotaTrackerSubtitle": "跟蹤使用限制", + "providerQuotaSubtitle": "跟蹤提供商使用限制", + "runtimeSubtitle": "即時彈性與會話", + "contextCombosSubtitle": "組合壓縮引擎", + "cliToolsSubtitle": "配置 CLI 執行時", + "agentsSubtitle": "管理本地代理", + "cloudAgentsSubtitle": "管理基於雲的代理", + "apiEndpointsSubtitle": "暴露自定義端點", + "proxySubtitle": "HTTP 代理設定", + "mitmProxySubtitle": "MITM 攔截", + "oneProxySubtitle": "公共代理閘道器", + "leaderboard": "排行榜", + "profile": "個人資料", + "tokens": "令牌", + "leaderboardSubtitle": "排名與成就", + "profileSubtitle": "帳戶與偏好", + "tokensSubtitle": "令牌使用和預算", + "usageSubtitle": "流量和使用統計", + "analyticsComboHealthSubtitle": "組合目標可靠性", + "analyticsUtilizationSubtitle": "提供商利用率", + "costsSubtitle": "支出明細", + "cacheSubtitle": "快取命中率", + "analyticsCompressionSubtitle": "令牌節省統計", + "analyticsSearchSubtitle": "搜尋工具分析", + "analyticsEvalsSubtitle": "評估套件結果", + "providerStats": "提供商統計", + "providerStatsSubtitle": "延遲和效能指標", + "logsSubtitle": "應用日誌", + "logsProxySubtitle": "代理流量日誌", + "consoleLogsSubtitle": "控制台輸出", + "logsActivitySubtitle": "使用者活動日誌", + "healthSubtitle": "系統健康檢查", + "costsPricingSubtitle": "按模型定價規則", + "costsBudgetSubtitle": "預算限制", + "costsQuotaShareSubtitle": "跨金鑰共享提供商配額", + "auditLogSubtitle": "授權審計", + "auditMcpSubtitle": "MCP 伺服器審計", + "auditA2aSubtitle": "A2A 協議審計", + "translatorSubtitle": "格式轉換", + "playgroundSubtitle": "即時測試提示", + "searchToolsSubtitle": "搜尋工具登錄檔", + "memorySubtitle": "持久的代理記憶", + "omniSkillsSubtitle": "沙箱技能登錄檔", + "agentSkillsSubtitle": "A2A 技能登錄檔", + "mcpSubtitle": "MCP 伺服器控制", + "a2aSubtitle": "A2A 協議伺服器", + "pluginsSubtitle": "__MISSING__:Plugin marketplace & installs", + "mediaSubtitle": "快取的媒體檔案", + "batchFilesSubtitle": "批處理輸入/輸出檔案", + "settingsSubtitle": "所有設定", + "settingsGeneralSubtitle": "應用基礎", + "settingsAppearanceSubtitle": "主題與佈局", + "settingsAiSubtitle": "AI 行為預設值", + "globalRoutingSubtitle": "全域性路由規則", + "settingsResilienceSubtitle": "重試與斷路器", + "settingsAdvancedSubtitle": "高階使用者選項", + "settingsSecuritySubtitle": "認證與加密", + "settingsAccessTokensSubtitle": "__MISSING__:Scoped CLI tokens for remote mode", + "settingsFeatureFlagsSubtitle": "切換系統功能", + "settingsSidebar": "側邊欄", + "settingsSidebarSubtitle": "自定義側邊欄佈局", + "settingsAuthzSubtitle": "路由清單與繞過策略", + "docsSubtitle": "文件", + "issuesSubtitle": "報告錯誤", + "changelogSubtitle": "釋出說明", + "costsQuotaPlans": "計劃與配額", + "costsQuotaPlansSubtitle": "按提供商配置計劃", + "activity": "活動", + "activitySubtitle": "近期事件的友好動態", + "logsGroup": "日誌", + "systemGroup": "系統", + "costsOverview": "概述", + "costsOverviewSubtitle": "綜合成本分析", + "agentBridge": "代理橋接", + "agentBridgeSubtitle": "攔截 IDE 代理流量", + "trafficInspector": "流量檢查器", + "trafficInspectorSubtitle": "監控 LLM 呼叫 + 除錯任何 HTTPS 流量", + "cliCode": "CLI 程式碼的", + "cliCodeSubtitle": "指向 OmniRoute 的程式碼工具", + "cliAgents": "CLI 代理", + "cliAgentsSubtitle": "自主 CLI 代理", + "acpAgents": "ACP 代理", + "acpAgentsSubtitle": "由 OmniRoute 生成的 CLI", + "skipToContent": "跳到內容", + "unpinSection": "取消固定分割槽", + "pinSectionOpen": "固定分割槽開啟", + "reloadPage": "重新載入頁面", + "dragReorderSection": "拖拽以重新排序分割槽", + "dragReorderItem": "拖拽以重新排序", + "cannotHide": "此項無法隱藏", + "alwaysVisible": "始終可見", + "groupSeparatorLabel": "隔斷", + "discovery": "__MISSING__:Discovery", + "discoverySubtitle": "__MISSING__:Scan providers for free access" + }, + "webhooks": { + "title": "Webhook", + "description": "配置系統事件的 HTTP 回撥。", + "configuredWebhooks": "已配置的 Webhook", + "configuredWebhooksDesc": "管理投遞端點、訂閱事件、狀態和測試傳送。", + "addWebhook": "新增 Webhook", + "editWebhook": "編輯 Webhook", + "name": "名稱", + "namePlaceholder": "生產監控", + "unnamedWebhook": "未命名 Webhook", + "url": "端點 URL", + "events": "事件", + "allEvents": "所有事件", + "secret": "金鑰", + "secretPlaceholder": "留空將自動生成金鑰", + "secretEditPlaceholder": "留空以保留當前金鑰", + "status": "狀態", + "active": "活動", + "inactive": "未活動", + "errored": "出錯", + "total": "總計", + "lastTriggered": "上次觸發", + "actions": "操作", + "enabled": "已啟用", + "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 失敗。", + "delete": "刪除", + "deleteConfirm": "確定要刪除此 Webhook 嗎?", + "deleteSuccess": "Webhook 刪除成功。", + "deleteFailed": "刪除 Webhook 失敗。", + "edit": "編輯", + "enable": "啟用", + "disable": "停用", + "noWebhooks": "尚未配置 Webhook。", + "signatureTitle": "Webhook 簽名", + "signatureDescription": "每次投遞都會包含一個 X-Webhook-Signature 請求頭,該簽名使用 Webhook 金鑰通過 HMAC-SHA256 生成。信任載荷前請先驗證簽名。", + "wizard": { + "cancel": "取消", + "step1Title": "選擇整合", + "step2Title": "配置目標", + "step3Title": "事件與測試", + "back": "返回", + "next": "下一步", + "finish": "完成", + "step1Desc": "選擇此 Webhook 要對接的目標整合系統。" + }, + "howItWorks": { + "step1": "選擇一個整合提供商(如 Slack、Discord、自定義 Webhook)並配置連線詳情。", + "step2": "配置要訂閱的系統事件(如補全錯誤、模型回退或用量限制)。", + "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 秒。", + "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\"" + }, + "deliveries": { + "title": "投遞日誌", + "loadFailed": "載入 Webhook 投遞日誌失敗。", + "empty": "暫無投遞記錄。觸發一個事件或傳送測試負載。", + "status": "狀態", + "event": "事件", + "latency": "延遲", + "at": "傳送時間" + }, + "kinds": { + "comingSoon": "即將推出", + "slack": "Slack", + "slackDesc": "將系統事件直接釋出到 Slack 頻道", + "telegram": "Telegram", + "telegramDesc": "通過 Telegram 機器人傳送事件訊息", + "discord": "Discord", + "discordDesc": "將即時更新直接推送到 Discord 伺服器", + "custom": "自定義 Webhook", + "customDesc": "將系統事件負載投遞到任意 HTTPS 端點", + "email": "郵件通知", + "emailDesc": "通過郵件接收摘要更新", + "pagerduty": "PagerDuty", + "pagerdutyDesc": "在 PagerDuty 上為關鍵系統問題觸發告警", + "teams": "Microsoft Teams", + "teamsDesc": "將系統通知轉發到 Microsoft Teams 頻道" + }, + "testPayloadSent": "測試負載已傳送", + "testResponse": "測試響應", + "validateUrl": { + "checking": "正在檢查 URL...", + "ok": "URL 有效", + "blockedPrivate": "URL 是被阻止的私有地址", + "invalidUrl": "URL 格式無效" + }, + "custom": { + "endpointUrl": "端點 URL", + "endpointUrlPlaceholder": "https://api.yourdomain.com/webhook", + "secretKey": "金鑰", + "secretKeyPlaceholder": "輸入金鑰或留空以自動生成", + "secretKeyHint": "用於對負載頭進行簽名以進行身份驗證。" + }, + "discord": { + "webhookUrl": "Discord Webhook URL", + "webhookUrlPlaceholder": "https://discord.com/api/webhooks/...", + "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:" + }, + "telegram": { + "botToken": "Telegram 機器人令牌", + "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", + "botTokenHint": "建立機器人時從 @BotFather 獲取的 HTTP API 令牌。", + "chatId": "Telegram 聊天 ID / 頻道", + "chatIdPlaceholder": "-100123456789 或 @channelname", + "chatIdHint": "聊天/頻道的唯一數字識別符號或公開使用者名稱。", + "tutorial": "如何配置 Telegram Webhook:" + } + }, + "compliance": { + "auditTitle": "審計", + "auditDescription": "在一個運維檢視中檢視合規事件和 MCP 工具呼叫。", + "complianceTab": "合規", + "mcpTab": "MCP 審計", + "title": "合規審計", + "description": "合規審計日誌記錄的策略、訪問、提供商和安全事件。", + "eventType": "事件型別", + "eventTypePlaceholder": "按操作或事件型別篩選", + "severity": "嚴重級別", + "allSeverities": "所有嚴重級別", + "info": "資訊", + "warning": "警告", + "critical": "嚴重", + "sourceIp": "來源 IP", + "userOrKey": "使用者 / 金鑰", + "action": "操作", + "result": "結果", + "details": "詳情", + "timestamp": "時間戳", + "from": "起始", + "to": "結束", + "refresh": "重新整理", + "export": "匯出", + "clearFilters": "清除篩選", + "loading": "正在載入審計事件...", + "showing": "正在顯示 {total} 個事件中的 {count} 個", + "policyViolation": "策略違規", + "accessDenied": "訪問被拒絕", + "injectionBlocked": "注入已阻止", + "noEvents": "尚未記錄合規事件。", + "failedFetch": "獲取合規審計日誌失敗。", + "viewDetails": "檢視詳情", + "closeDetails": "關閉詳情", + "notAvailable": "—", + "system": "系統", + "previous": "上一頁", + "next": "下一頁", + "mcpAudit": "MCP 審計", + "mcpAuditDesc": "MCP 伺服器記錄的工具呼叫審計條目。", + "failedFetchMcpAudit": "獲取 MCP 審計日誌失敗。", + "tool": "工具", + "toolPlaceholder": "按工具名稱篩選", + "duration": "持續時間", + "apiKey": "API 金鑰", + "output": "輸出", + "allResults": "所有結果", + "success": "成功", + "failure": "失敗", + "noMcpEvents": "尚未記錄 MCP 審計事件。", + "a2aAudit": "A2A稽核", + "a2aAuditDesc": "A2A伺服器記錄的任務執行審計跟蹤。", + "a2aShowingTasks": "顯示 {count} 個任務(共 {total} 個)", + "a2aSkill": "技能", + "a2aSkillPlaceholder": "按技能名稱過濾", + "a2aState": "狀態", + "a2aAllStates": "所有州", + "a2aStateSubmitted": "已提交", + "a2aStateWorking": "工作", + "a2aStateCompleted": "已完成", + "a2aStateFailed": "失敗", + "a2aStateCancelled": "取消", + "a2aTaskId": "任務編號", + "a2aEvents": "活動", + "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 金鑰已解禁", + "auth.login.error": "登入錯誤", + "auth.login.failed": "登入失敗", + "auth.login.locked": "登入被鎖定", + "auth.login.misconfigured": "登入配置錯誤", + "auth.login.setup_required": "需要登入設定", + "auth.login.success": "登入成功", + "auth.logout.success": "登出成功", + "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.updated": "提供者憑據已更新", + "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 金鑰已洩露", + "settings.update": "設定已更新", + "settings.update_failed": "設定更新失敗", + "sync.token.created": "同步令牌已建立", + "sync.token.revoked": "同步令牌已撤銷" + } + }, + "themesPage": { + "title": "主題", + "description": "選擇預設主題,或僅用一種顏色建立自定義主題", + "presetColors": "熱門配色", + "customTheme": "自定義主題", + "customThemeDesc": "點選建立主題,然後選擇一種顏色", + "createTheme": "建立主題", + "activePreset": "當前主題" + }, + "header": { + "logout": "退出登入", + "language": "語言", + "providers": "提供商", + "providerDescription": "管理 AI 提供商連線", + "combos": "組合", + "comboDescription": "支援故障回退的模型組合", + "usage": "用量與分析", + "usageDescription": "監控 API 用量、Token 消耗和請求日誌", + "analytics": "分析", + "analyticsDescription": "檢視圖表、趨勢和評測洞察", + "cliTools": "CLI 工具", + "cliToolsDescription": "配置 CLI 工具", + "home": "首頁", + "homeDescription": "歡迎使用 OmniRoute", + "endpoint": "端點", + "endpointDescription": "管理代理端點、MCP、A2A 和 API 端點", + "mcp": "MCP", + "mcpDescription": "Model Context Protocol 服務管理與工具", + "a2a": "A2A", + "a2aDescription": "Agent-to-Agent 協議任務與可觀測性", + "settings": "設定", + "settingsDescription": "管理你的偏好設定", + "openaiCompatible": "OpenAI 相容", + "anthropicCompatible": "Anthropic 相容", + "media": "媒體", + "mediaDescription": "生成影像、影片和音樂", + "themes": "主題", + "themesDescription": "為整個儀表板選擇顏色主題", + "costsDescription": "跟蹤支出,分析趨勢,管理所有 AI 提供商的預算", + "cacheDescription": "監控提供商提示快取效率和本地語義響應複用。", + "limitsDescription": "為每個 API 金鑰和提供商配置速率限制和配額", + "runtimeDescription": "即時執行時可觀測性 — 斷路器、冷卻、模型鎖定、會話和配額告警", + "apiManagerDescription": "管理 OmniRoute 例項的 API 金鑰和訪問控制", + "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": "搜尋分析、提供商細分、快取命中率和成本跟蹤", + "logsDescription": "即時請求日誌、錯誤追蹤和流式事件檢查器", + "auditDescription": "API 金鑰使用、MCP 工具呼叫和策略事件的合規審計追蹤", + "webhooksDescription": "配置 Webhook 端點以接收即時事件通知", + "healthDescription": "系統健康概覽:提供商、斷路器、速率限制和資料庫", + "proxyDescription": "為出站提供商連線配置上游代理設定", + "apiEndpointsDescription": "管理自定義 API 端點配置和路由覆蓋", + "batchFilesDescription": "瀏覽和管理批處理作業輸出檔案和結果", + "analyticsEvalsDescription": "模型評估結果和效能基準", + "analyticsSearchDescription": "搜尋查詢分析、快取命中率和成本跟蹤", + "analyticsUtilizationDescription": "提供商利用率指標和容量規劃", + "analyticsComboHealthDescription": "組合路由配置的即時健康與效能", + "analyticsCompressionDescription": "上下文壓縮分析和令牌節省", + "costsBudgetDescription": "每個 API 金鑰和提供商的預算限制和支出告警", + "costsPricingDescription": "用於令牌成本計算的自定義定價配置", + "logsProxyDescription": "上游代理請求日誌和流量檢查", + "logsConsoleDescription": "應用控制台輸出和除錯日誌", + "logsActivityDescription": "使用者操作和系統事件的審計追蹤", + "auditMcpDescription": "MCP 工具呼叫審計追蹤和合規記錄", + "auditA2a": "A2A稽核", + "auditA2aDescription": "A2A任務執行審計追蹤、狀態轉換、技能呼叫記錄", + "settingsGeneralDescription": "儲存、資料庫和通用例項配置", + "settingsAppearanceDescription": "主題、品牌和視覺自定義", + "settingsAiDescription": "AI 行為、思維預算、視覺和記憶設定", + "settingsSecurityDescription": "認證、授權和訪問控制設定", + "featureFlags": "功能標誌", + "featureFlagsDescription": "控制系統能力和實驗特點", + "featureFlagsActive": "{count} 活躍", + "featureFlagsInactive": "{count} 無效", + "featureFlagsOverrides": "{count} 資料庫覆蓋", + "featureFlagsSearch": "搜尋標誌...", + "featureFlagsCategoryAll": "全部", + "featureFlagsCategorySecurity": "安全性", + "featureFlagsCategoryNetwork": "網路", + "featureFlagsCategoryPolicies": "政策", + "featureFlagsCategoryRuntime": "執行時", + "featureFlagsCategoryCli": "命令列介面", + "featureFlagsCategoryHealth": "健康", + "featureFlagsSourceDb": "資料庫", + "featureFlagsSourceEnv": "環境電壓", + "featureFlagsSourceDefault": "預設", + "featureFlagsReset": "重置", + "featureFlagsResetAll": "重置所有覆蓋", + "featureFlagsResetAllConfirm": "您確定要重置所有功能標誌覆蓋嗎?這會將所有標誌恢復為其 ENV 或預設值。", + "featureFlagsRestartRequired": "需要重啟才能申請", + "featureFlagsNoResults": "沒有符合您搜尋條件的標誌", + "featureFlagsSaved": "標誌已更新", + "featureFlagsError": "更新標誌失敗", + "settingsRoutingDescription": "路由規則、模型別名、組合預設值和降級設定", + "settingsResilienceDescription": "斷路器、重試和回退配置", + "settingsAdvancedDescription": "高階負載規則、請求限制和代理 API 設定", + "mitmProxyDescription": "配置 MITM 代理設定以進行流量檢查和除錯", + "oneProxyDescription": "配置 1Proxy 設定以實現高階代理鏈", + "omniSkillsDescription": "安裝和管理用於自動提示和工具執行的沙箱技能" + }, + "home": { + "quickStart": "快速入門", + "quickStartDesc": "4 個步驟快速上手:連線提供商、路由模型並監控全域性執行情況。", + "fullDocs": "完整文件", + "step1Title": "1. 建立 API 金鑰", + "step1Desc": "前往 端點 -> 已註冊金鑰。為每個環境生成一個獨立金鑰。", + "step2Title": "2. 連線提供商", + "step2Desc": "在 提供商 中新增帳戶。支援 OAuth、API Key 和免費套餐。", + "step3Title": "3. 配置客戶端", + "step3Desc": "在 IDE 或 API 客戶端中將基本 URL 設定為 {url}。", + "step4Title": "4. 監控與最佳化", + "step4Desc": "在 請求日誌分析 中跟蹤 Token、成本與錯誤。", + "providersOverview": "提供商概覽", + "configuredOf": "{total} 個可用提供商中已配置 {configured} 個", + "noModelsAvailable": "該提供商當前沒有可用模型。", + "noProvidersConfigured": "尚未配置提供商", + "addProvider": "新增提供商", + "configureFirst": "首先在 {providers} 中配置連線", + "configureProvider": "配置提供商", + "modelAvailable": "{count} 模型可用", + "modelsAvailable": "{count} 個模型可用", + "connectionsActive": "{count} 連線處於活動狀態", + "connectionsActivePlural": "{count} 連線處於活動狀態", + "copyModelName": "複製模型名稱", + "documentation": "文件", + "healthMonitor": "健康監測", + "reportIssue": "報告問題", + "activeError": "{active} 有效 · {errors} 錯誤", + "oauthLabel": "OAuth", + "apiKeyLabel": "API金鑰", + "requestsShort": "{count} 次請求", + "providerModelsTitle": "{provider} - 模型", + "copiedModel": "已複製:{model}", + "aliasLabel": "別名", + "updateNow": "立即更新", + "updating": "更新中...", + "updateAvailableDesc": "有新版本可用。點選更新。", + "updateStarted": "更新已開始...", + "reloadingPageAutomatically": "自動重新載入頁面...", + "providerTopology": "提供商拓撲" + }, + "analytics": { + "title": "分析", + "usageAnalyticsTitle": "用量分析", + "diversityScoreTitle": "供應商多元化", + "diversityScoreDesc": "近期流量視窗內提供商集中度的快照。", + "diversityShannonEntropy": "夏農熵", + "diversityWindow": "視窗:{count} 次請求 · 最近 {mins} 分鐘", + "diversityHealthy": "分佈健康", + "diversityRiskHigh": "供應商鎖定風險高", + "diversityRiskModerate": "分佈一般", + "diversityScoreLabel": "得分", + "diversityHigherExplanation": "數值越高,表示流量分散到的提供商越多。", + "diversityNoData": "暫無近期用量資料。", + "chartRequests": "請求數", + "chartInput": "輸入", + "chartOutput": "輸出", + "chartTotal": "合計", + "chartCost": "成本", + "chartShare": "佔比", + "chartServiceTier": "服務層級", + "chartServiceTierSplit": "Fast / Standard 成本拆分", + "chartCostPct": "佔成本 {pct}%", + "chartUsageDetail": "用量明細", + "chartCacheRead": "快取讀取", + "chartCostByProvider": "按提供商劃分的成本", + "chartNoCostData": "無成本資料", + "chartModelUsageOverTime": "模型用量趨勢", + "chartNoData": "無資料", + "chartWeekly": "每週", + "chartModelBreakdown": "按模型拆分", + "chartModel": "模型", + "chartProvider": "提供商", + "chartProviderBreakdown": "按提供商拆分", + "filterAllKeys": "全部金鑰", + "filterSearchKeys": "搜尋金鑰…", + "filterNoKeysMatch": "沒有匹配的金鑰", + "filterOneKey": "1 個金鑰", + "filterMultipleKeys": "{count} 個金鑰", + "rangeToday": "今天", + "rangeYesterday": "昨天", + "rangeLast3Days": "最近 3 天", + "rangeThisWeek": "本週", + "rangeLast14Days": "最近 14 天", + "rangeThisMonth": "本月", + "rangeQuickSelect": "快速選擇", + "rangeStart": "起始", + "rangeEnd": "結束", + "rangeCancel": "取消", + "rangeApply": "應用", + "rangeErrorInvalid": "起始時間必須早於結束時間", + "period1D": "1 天", + "period7D": "7 天", + "period30D": "30 天", + "period90D": "90 天", + "periodYTD": "年初至今", + "periodAll": "全部", + "totalTokens": "總 Token 數", + "inputTokens": "輸入 Token", + "outputTokens": "輸出 Token", + "estCost": "預估成本", + "infraTitle": "基礎設施", + "infraAccounts": "帳號", + "infraProviders": "提供商", + "infraApiKeys": "API 金鑰", + "infraModels": "模型", + "perfTitle": "效能", + "perfAvgTokens": "平均 Token / 請求", + "perfCostReq": "成本 / 請求", + "perfIoRatio": "輸入/輸出比", + "perfFastReq": "Fast 請求", + "highlightsTitle": "亮點", + "highlightsTopModel": "熱門模型", + "highlightsTopProvider": "熱門提供商", + "highlightsBusiestDay": "最繁忙的一天", + "highlightsDiversity": "多樣性", + "highlightsFallbackRate": "回退率", + "customRange": "自定義", + "overviewDescription": "監控所有提供商和模型的 API 使用模式、令牌消耗、成本和活動趨勢。", + "evalsDescription": "執行評估套件來測試和驗證您的 LLM 端點。比較模型質量、檢測迴歸和基準延遲。", + "overview": "概述", + "evals": "評測", + "utilization": "利用率", + "utilizationDescription": "提供商配額使用趨勢和速率限制跟蹤", + "modelStatus": "模型狀態", + "modelStatusCooldown": "冷卻中", + "modelStatusUnavailable": "不可用", + "modelStatusError": "錯誤", + "comboHealth": "組合健康狀況", + "comboHealthDescription": "組合級別配額、使用分佈和效能指標", + "compressionAnalyticsTitle": "壓縮分析", + "compressionAnalyticsDescription": "壓縮分析 — token 節省、模式分佈和提供商統計。", + "autoRoutingTotalAutoRequests": "自動請求總數", + "autoRoutingAvgSelectionScore": "平均選擇分數", + "autoRoutingExplorationRate": "探索率", + "autoRoutingLkgpHitRate": "LKGP命中率", + "autoRoutingRequestsByVariant": "變體請求", + "autoRoutingTopRoutedProviders": "頂級路由提供商", + "comboHealthWorstQuotaLeft": "剩餘最差名額", + "comboHealthUsageSkew": "使用偏差", + "comboHealthSuccessRate": "成功率", + "comboHealthQuotaHealth": "配額健康", + "comboHealthRequests": "要求", + "comboHealthTokens": "代幣", + "comboHealthAvgLatency": "平均延遲", + "comboHealthTotalRequests": "請求總數", + "comboHealthExecutionTargets": "執行目標", + "comboHealthSuccess": "成功", + "comboHealthLatency": "延遲", + "comboHealthQuota": "配額", + "comboHealthTitle": "組合健康", + "comboHealthUnableToLoad": "無法載入組合生命值", + "comboHealthGettingStarted": "開始使用", + "compressionAnalyticsTotalRequests": "請求總數", + "compressionAnalyticsTokensSaved": "已儲存代幣", + "compressionAnalyticsAvgSavings": "平均節省", + "compressionAnalyticsAvgDuration": "平均持續時間", + "compressionAnalyticsReceipts": "收據", + "compressionAnalyticsFallbacks": "後備措施", + "compressionAnalyticsPromptTokens": "提示標記", + "compressionAnalyticsCompletionTokens": "完成標記", + "compressionAnalyticsTotalTokens": "代幣總數", + "compressionAnalyticsCacheTokens": "快取令牌", + "compressionAnalyticsNoDataYet": "還沒有壓縮資料", + "searchAnalyticsTotalSearches": "總搜尋次數", + "searchAnalyticsCacheHitRate": "快取命中率", + "searchAnalyticsTotalCost": "總成本", + "searchAnalyticsAvgResponse": "平均響應", + "searchAnalyticsNoSearchesYet": "還沒有搜尋", + "providerUtilizationTitle": "提供商利用率", + "providerUtilizationFailedToLoad": "無法載入利用率資料", + "providerUtilizationNoData": "沒有可用的利用率資料", + "providerUtilizationGettingStarted": "開始使用", + "providerUtilizationLatestSnapshot": "最新配額快照", + "providerUtilizationRemainingCapacity": "剩餘容量" + }, + "apiManager": { + "title": "API 金鑰", + "createKey": "建立 API 金鑰", + "key": "金鑰", + "revokeKey": "撤銷金鑰", + "revokeConfirm": "確定要撤銷這個 API 金鑰嗎?", + "noKeys": "還沒有 API 金鑰", + "noKeysDesc": "建立你的第一個 API 金鑰,用於驗證發往端點的請求", + "keyLabel": "金鑰標籤", + "permissions": "許可權", + "expiresAt": "過期時間", + "never": "永不過期", + "revoke": "撤銷", + "showKey": "顯示金鑰", + "hideKey": "隱藏金鑰", + "copyKey": "複製 API 金鑰", + "allModels": "全部模型", + "selectedModels": "已選模型", + "readOnly": "只讀", + "fullAccess": "完全訪問", + "keyManagement": "API 金鑰管理", + "keyManagementDesc": "建立和管理用於訪問端點的 API 金鑰", + "totalKeys": "金鑰總數", + "restricted": "受限", + "totalRequests": "請求總數", + "modelsAvailable": "可用模型", + "registeredKeys": "已註冊金鑰", + "keysRegistered": "已註冊 {count} 個金鑰", + "keyRegistered": "已註冊 {count} 個金鑰", + "keysSecurityNote": "每個金鑰的用量跟蹤彼此隔離,並且可以單獨撤銷。出於安全考慮,金鑰建立後會被遮罩顯示。", + "createFirstKey": "建立第一個金鑰", + "name": "名稱", + "usage": "用量", + "created": "建立時間", + "actions": "操作", + "reqs": "請求", + "neverUsed": "從未使用", + "deleteConfirm": "刪除這個 API 金鑰?", + "usageTips": "使用提示", + "tipAuth": "在 Authorization 請求頭中以 Bearer YOUR_KEY 的形式使用 API 金鑰", + "tipSecure": "金鑰只會在建立時顯示一次,請妥善儲存", + "tipSeparate": "建議為不同客戶端或環境建立獨立金鑰", + "tipRestrict": "將金鑰限制到特定模型,可提升安全性並更好控制成本", + "keyName": "金鑰名稱", + "keyNamePlaceholder": "例如:生產環境金鑰、開發環境金鑰", + "keyNameDesc": "使用清晰的名稱標識該金鑰的用途", + "managementAccessDesc": "允許此 API 金鑰管理 OmniRoute 配置。", + "selfServiceVisibility": "自助可見性", + "selfServiceVisibilityDesc": "控制此金鑰可檢視自身用量和共享上游配額的範圍。", + "ownUsageVisibility": "自身成本和 Token 用量", + "ownUsageVisibilityDesc": "允許此金鑰呼叫狀態端點,檢視自身美元用量、預算佔比和 Token 總量。", + "sharedAccountQuotaVisibility": "共享帳號配額", + "sharedAccountQuotaVisibilityDesc": "當配置了一個明確連線時,允許此金鑰檢視共享上游帳號配額。", + "localUsageCommand": "__MISSING__:Allow local usage command", + "localUsageCommandDesc": "__MISSING__:Allows this API key to use @@om-usage to retrieve cached usage and quota information without calling an upstream provider.", + "localUsageCommandBadge": "__MISSING__:Usage cmd", + "keyCreated": "API 金鑰已建立", + "keyCreatedSuccess": "金鑰建立成功!", + "keyCreatedNote": "請立即複製並儲存此金鑰,它不會再次顯示。", + "done": "完成", + "savePermissions": "儲存許可權", + "endpointRestrictions": "允許的端點", + "allEndpointsAllowed": "此金鑰可以訪問所有 API 端點。", + "endpointsRestricted": "僅限 {count} 個端點。", + "autoResolve": "自動解析", + "autoResolveDesc": "為這個 API 金鑰自動將有歧義的模型名解析到原生提供商。", + "streamDefaultMode": "流預設相容性", + "streamDefaultModeDesc": "此鍵省略了 `stream` 標誌。JSON 模式返回非流式響應,除非客戶端明確請求 SSE。", + "streamDefaultLegacy": "遺留", + "streamDefaultJson": "JSON 相容", + "streamDefaultBadge": "JSON 流預設", + "keyActive": "金鑰啟用狀態", + "keyActiveDesc": "啟用或停用此 API 金鑰。被停用的金鑰會立即返回 403。", + "accessSchedule": "訪問時段", + "accessScheduleDesc": "將訪問限制在一週中的特定日期和時段。", + "scheduleFrom": "開始時間", + "scheduleUntil": "結束時間", + "scheduleDays": "日期", + "scheduleTimezone": "時區", + "scheduleTimezoneHint": "使用 IANA 時區名稱,例如 America/New_York、Europe/Berlin", + "scheduleActive": "時段限制", + "disabled": "已停用", + "daySun": "週日", + "dayMon": "週一", + "dayTue": "週二", + "dayWed": "週三", + "dayThu": "週四", + "dayFri": "週五", + "daySat": "週六", + "allowAll": "允許全部", + "restrict": "限制訪問", + "allowAllInfo": "該金鑰可訪問所有可用模型。", + "restrictInfo": "該金鑰可訪問 {total} 個模型中的 {selected} 個。", + "selected": "已選擇 {count} 個", + "all": "全部", + "clear": "清空", + "searchModels": "按名稱或提供商搜尋模型...", + "noModelsFound": "未找到模型", + "keyNameRequired": "金鑰名稱不能為空", + "keyNameTooLong": "金鑰名稱長度不能超過 {max} 個字元", + "keyNameInvalid": "金鑰名稱只能包含字母、數字、空格、連字元和下劃線", + "invalidKeyName": "金鑰名稱無效", + "failedCreateKey": "建立金鑰失敗", + "failedCreateKeyRetry": "建立金鑰失敗,請重試。", + "invalidKeyId": "金鑰 ID 無效", + "failedDeleteKey": "刪除金鑰失敗", + "failedDeleteKeyRetry": "刪除金鑰失敗,請重試。", + "invalidModelsSelection": "模型選擇無效", + "cannotSelectMoreThanModels": "最多隻能選擇 {max} 個模型", + "failedUpdatePermissions": "更新許可權失敗", + "failedUpdatePermissionsRetry": "更新許可權失敗,請重試。", + "unknownProvider": "未知", + "copyMaskedKey": "複製遮罩後的金鑰", + "keyOnlyAvailableAtCreation": "完整金鑰僅會在建立時顯示一次,請在首次建立時立即複製儲存", + "modelsCount": "{count, plural, one {# 個模型} other {# 個模型}}", + "devicesCount": "__MISSING__:{count, plural, one {# device} other {# devices}}", + "devicesTooltip": "__MISSING__:{count, plural, one {# distinct IP/User-Agent device seen with this key (last 30 min)} other {# distinct IP/User-Agent devices seen with this key (last 30 min)}}", + "lastUsedOn": "最近使用:{date}", + "viewCostsFor": "檢視 {name} 的費用", + "editPermissions": "編輯許可權", + "deleteKey": "刪除金鑰", + "regenerateKey": "重新生成金鑰", + "regenerateConfirm": "您確定要重新生成此 API 金鑰嗎?舊金鑰將立即失效。", + "failedRegenerateKey": "無法重新生成 API 金鑰", + "failedRegenerateKeyRetry": "無法重新生成 API 金鑰。請再試一次。", + "model": "{count} 個模型", + "models": "{count} 個模型", + "permissionsTitle": "許可權:{name}", + "allowAllDesc": "該金鑰可訪問所有可用模型。", + "restrictDesc": "該金鑰可訪問 {totalModels} 個模型中的 {selectedCount} 個。", + "selectedCount": "已選擇 {count} 個", + "maxActiveSessions": "最大活動會話數", + "apiManagerCustomRateLimits": "自定義費率限制", + "apiManagerCustomRateLimitsDesc": "覆蓋全域性預設限制。留空以使用預設值。", + "apiManagerRateLimitRequestsPlaceholder": "要求", + "apiManagerRateLimitReqPer": "請求/", + "apiManagerRateLimitSecondsPlaceholder": "秒數", + "apiManagerRemoveLimitTitle": "移除限制", + "apiManagerTimezonePlaceholder": "美洲/聖保羅", + "noLogPayloadPrivacy": "無日誌有效負載隱私", + "bannedStatus": "禁止狀態", + "managementApiAccess": "管理API訪問", + "expirationDate": "有效期", + "managementAccess": "管理訪問", + "allowedConnections": "允許的連線", + "searchPlaceholder": "按名稱或 token 搜尋...", + "activeOnly": "僅顯示啟用", + "filterStatus": "狀態", + "filterType": "型別", + "filterAll": "全部", + "filterStatusActive": "啟用", + "filterStatusDisabled": "已停用", + "filterStatusBanned": "已封禁", + "filterStatusExpired": "已過期", + "filterTypeStandard": "標準", + "filterTypeManage": "管理", + "filterTypeRestricted": "受限", + "shownOf": "已顯示 {shown} / {total}", + "emptyFilterTitle": "沒有金鑰匹配當前篩選條件", + "emptyFilterClear": "清除篩選", + "disableNonPublicModels": "停用非公開模型", + "disableNonPublicModelsDesc": "拒絕對未發現或未標記為公共的模型在提供者目錄中的請求", + "normalKeysSection": "普通鍵", + "quotaKeysSection": "配額金鑰", + "quotaPill": "配額", + "quotaModeOnly": "僅配額" + }, + "auditLog": { + "title": "稽核日誌", + "searchPlaceholder": "搜尋操作...", + "action": "操作", + "actor": "操作人", + "target": "目標", + "ipAddress": "IP地址", + "timestamp": "時間戳", + "noEntries": "未找到稽核條目", + "filterByAction": "按操作過濾...", + "filterByActor": "按操作人篩選...", + "filterEntriesAria": "過濾稽核日誌條目", + "filterByActionTypeAria": "按操作型別過濾", + "filterByActorAria": "按操作人篩選", + "refreshAuditLogAria": "重新整理稽核日誌", + "tableAria": "稽核日誌條目", + "failedFetchAuditLog": "無法獲取稽核日誌", + "notAvailable": "—", + "description": "行政行為和安全事件", + "showing": "顯示 {count} 條目(偏移量 {offset})", + "previous": "上一頁" + }, + "media": { + "title": "媒體", + "subtitle": "生成影像、影片和音樂", + "model": "模型", + "prompt": "提示詞", + "generate": "生成", + "generating": "生成中...", + "loadingModels": "正在載入可用模型...", + "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 生成音樂。", + "kinds": { + "embedding": "向量嵌入", + "image": "影像", + "imageToText": "影像轉文字", + "tts": "文字轉語音", + "stt": "語音轉文字", + "webSearch": "網路搜尋", + "webFetch": "網頁抓取", + "video": "影片", + "music": "音樂", + "ocr": "__MISSING__:OCR" + }, + "noProviders": "尚未為此型別配置任何提供商。", + "addConnection": "新增連線", + "backToProviders": "返回提供商列表", + "connections": "{count} 個連線", + "noConnections": "暫無連線 —— 請從提供商頁面新增。", + "loading": "正在載入...", + "suggestedModels": "__MISSING__:Suggested models from provider" + }, + "search": { + "searchQuery": "搜尋詞", + "searchResults": "搜尋結果", + "cachedResult": "已快取", + "searchCost": "成本", + "searchTools": "搜尋工具", + "searchToolsDesc": "支援提供商對比的高階搜尋測試", + "compareProviders": "對比提供商", + "rerankResults": "結果重排", + "searchHistory": "搜尋歷史", + "urlOverlap": "URL 重疊度", + "noSearchProviders": "尚未配置搜尋提供商。請前往設定新增。", + "noRerankModels": "沒有可用的重排模型", + "webSearch": "網頁搜尋", + "provider": "提供商", + "searchType": "搜尋型別", + "maxResults": "最大結果數", + "filters": "篩選條件", + "country": "國家", + "language": "語言", + "timeRange": "時間範圍", + "includeDomains": "包含域名", + "excludeDomains": "排除域名", + "safeSearch": "安全搜尋", + "safeSearchOff": "關閉", + "safeSearchModerate": "中等", + "safeSearchStrict": "嚴格", + "queryPlaceholder": "輸入搜尋詞...", + "providerAuto": "自動(最低成本)", + "searchTypeWeb": "網頁", + "searchTypeNews": "新聞", + "optionAny": "任意", + "timeRangeDay": "過去一天", + "timeRangeWeek": "過去一週", + "timeRangeMonth": "過去一個月", + "timeRangeYear": "過去一年", + "domainPlaceholder": "example.com", + "requestTimedOut": "請求超時({seconds}s)", + "networkError": "網路錯誤", + "formatted": "格式化檢視", + "rawJson": "JSON", + "cacheMiss": "未命中快取", + "cacheHit": "命中快取", + "latency": "延遲", + "cost": "成本", + "results": "結果", + "rerank": "重排", + "rerankModel": "重排模型", + "positionDelta": "排名變化", + "emptyState": "傳送搜尋請求後即可檢視結果", + "copy": "複製", + "resetToDefault": "重置為預設值", + "tabSearch": "搜尋", + "tabScrape": "抓取", + "tabCompare": "比較", + "modalitiesGuide": "模態指南", + "searchConceptTitle": "搜尋", + "searchConceptDesc": "搜尋 = 獲取網頁結果列表(標題、URL、摘要、相關性分數)", + "scrapeConceptTitle": "抓取", + "scrapeConceptDesc": "抓取 = 提取 URL 的完整內容(Markdown、文本或 HTML)", + "compareConceptTitle": "比較", + "compareConceptDesc": "比較 = 跨 N 個提供商並排執行相同查詢,比較延遲、成本和結果重疊", + "rerankConceptTitle": "重新排序", + "rerankConceptDesc": "重新排序 = 通過 LLM 重新排序結果以基於查詢提高相關性", + "autoConceptTitle": "自動(最便宜)", + "autoConceptDesc": "自動(最便宜)= 自動選擇具有已配置憑據的最便宜可用提供商", + "providerCatalogTitle": "提供商目錄", + "kindSearch": "搜尋", + "kindFetch": "獲取/抓取", + "statusConfigured": "已配置", + "statusMissing": "無憑據", + "statusRateLimited": "速率受限", + "configureProvider": "在提供商中配置", + "loadingProviders": "載入提供商…", + "failedToLoadProviders": "載入提供商失敗", + "costPerQuery": "成本/查詢", + "freeQuota": "免費配額/月", + "scrapeUrl": "要抓取的 URL", + "scrapeUrlPlaceholder": "https://example.com", + "scrapeUrlRequired": "__MISSING__:URL is required", + "scrapeUrlInvalid": "__MISSING__:Invalid URL — it must start with http:// or https://", + "scrapeExtract": "提取", + "scrapeExtracting": "提取中…", + "scrapeFullPage": "整頁", + "scrapeFormat": "格式", + "formatMarkdown": "Markdown", + "formatHtml": "HTML", + "formatText": "文本", + "scrapePreview": "預覽", + "scrapeRaw": "原始", + "scrapeContentTruncated": "(已截斷,檢視原始)", + "scrapeMetadata": "後設資料", + "scrapeProvider": "提供商", + "scrapeSize": "大小", + "scrapeEmptyState": "__MISSING__:Enter a URL to extract its content", + "scrapeProvidersAvailable": "__MISSING__:Available providers: Firecrawl, Jina Reader, Tavily.", + "compareRun": "比較", + "compareRunning": "比較中…", + "autoProvider": "自動(最便宜)", + "configuredStatus": "已配置", + "rateLimitedStatus": "速率受限", + "noCredential": "無憑據", + "searchTypeLabel": "型別", + "rerankModelLabel": "重新排序模型", + "noneOption": "無", + "size": "大小" + }, + "cliTools": { + "title": "CLI 工具", + "noActiveProviders": "當前沒有活躍的提供商", + "noActiveProvidersDesc": "請先新增並連線提供商以配置 CLI 工具。", + "mapModels": "對映模型", + "testConnection": "測試連線", + "connectionStatus": "連線狀態", + "configureEndpoint": "配置端點", + "instructions": "使用說明", + "modelMapping": "模型對映", + "baseUrl": "基礎 URL", + "apiKey": "API金鑰", + "configured": "已配置", + "notConfigured": "未配置", + "notInstalled": "未安裝", + "custom": "自定義", + "unknown": "未知", + "lastSavedAt": "最後儲存:{date}", + "never": "從來沒有", + "justNow": "剛才", + "minutesAgoShort": "{count} 分鐘前", + "hoursAgoShort": "{count} 小時前", + "daysAgoShort": "{count} 天前", + "monthsAgoShort": "{count} 個月前", + "yearsAgoShort": "{count}年前", + "runtimeCheckFailed": "執行時檢查失敗", + "yourApiKeyPlaceholder": "你的 API 金鑰", + "modelPlaceholder": "provider/model-id", + "configurationSaved": "配置儲存成功。", + "failedToSave": "儲存配置失敗。", + "noApiKeysCreateOne": "無 API 金鑰 - 在“金鑰”頁面建立一個", + "defaultOmnirouteKey": "sk_omniroute(預設)", + "selectModel": "選擇模型", + "selectModelForAlias": "選擇 {alias} 的模型", + "selectModelForTool": "選擇 {tool} 的模型", + "select": "選擇", + "clear": "清除", + "comingSoon": "即將推出", + "checkingRuntime": "正在檢查執行時狀態...", + "guideOnlyIntegration": "僅指南整合(無需本地執行時)", + "cliRuntimeDetected": "CLI 執行時已檢測到並準備就緒", + "cliFoundNotRunnable": "CLI 已找到但無法執行{reason}", + "cliRuntimeNotDetected": "未檢測到 CLI 執行時", + "binary": "二進位制", + "configPath": "配置路徑", + "configPathShort": "配置", + "failedCheckRuntimeStatus": "無法檢查執行時狀態。", + "copy": "複製", + "copied": "已複製", + "copyConfig": "複製配置", + "saveConfig": "儲存配置", + "selectionSaved": "選擇已儲存", + "guide": "指南", + "detected": "檢測到", + "notReady": "還沒準備好", + "active": "活躍", + "inactive": "不活躍", + "startMitm": "啟動中間人", + "stopMitm": "停止中間人", + "mitmStarted": "MITM 啟動成功!", + "mitmStopped": "MITM 已成功停止!", + "failedStart": "啟動 MITM 失敗", + "failedStop": "停止 MITM 失敗", + "saveMappings": "儲存對映", + "mappingsSaved": "對映已儲存!", + "failedSaveMappings": "儲存對映失敗", + "howItWorks": "工作原理:", + "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 路由。", + "mitmStep2Prefix": "2. 將", + "mitmStep2Suffix": "新增到你的 hosts 檔案,並指向 127.0.0.1。", + "mitmStep3": "3. 開啟 {toolName},後續請求就會自動通過代理轉發。", + "sudoPasswordRequiredTitle": "需要 sudo 密碼", + "sudoPasswordHint": "修改主機檔案和系統代理設定需要管理員密碼。", + "enterSudoPassword": "輸入 sudo 密碼", + "sudoPasswordRequiredError": "必須提供 sudo 密碼。", + "cancel": "取消", + "confirm": "確認", + "settingsApplied": "設定應用成功!", + "failedApplySettings": "無法應用設定", + "settingsReset": "設定重置成功!", + "failedResetSettings": "重置設定失敗", + "backupRestored": "備份已恢復!", + "failedRestore": "恢復失敗", + "checkingCli": "正在檢查 {tool} CLI...", + "cliNotRunnable": "{tool} CLI 已安裝但無法執行", + "cliNotInstalled": "{tool} CLI 未安裝", + "cliNotDetected": "未檢測到 {tool} CLI", + "cliDetectedReady": "{tool} CLI 已檢測到並準備就緒", + "cliFoundFailedHealthcheck": "找到 {tool} CLI,但執行時執行狀況檢查失敗{reason}。", + "installCliPrompt": "請安裝 {tool} CLI 以使用此功能。", + "installCodexPrompt": "請先安裝 Codex CLI,才能使用自動應用功能。", + "hide": "隱藏", + "howToInstall": "如何安裝", + "installationGuide": "安裝指南", + "platforms": "macOS / Linux / Windows:", + "afterInstallationRun": "安裝後,執行", + "toVerify": "來驗證。", + "current": "當前", + "baseUrlPlaceholder": "https://.../v1", + "resetToDefault": "重置為預設值", + "providerModelPlaceholder": "提供商/模型 ID", + "apply": "應用", + "reset": "重置", + "manualConfig": "手動配置", + "backups": "備份", + "configBackups": "配置備份", + "noBackupsYet": "還沒有備份。每次應用或重置之前都會自動建立備份。", + "restore": "恢復", + "backupRestoredReloading": "備份已恢復!正在重新載入狀態...", + "failedRestoreBackup": "恢復備份失敗", + "applied": "已應用!", + "failed": "失敗", + "resetDone": "重置!", + "omnirouteConfiguredOpenAiCompatible": "OmniRoute 已配置為 OpenAI 相容提供商", + "provider": "提供商", + "model": "模型", + "providers": "提供商", + "auth": "授權", + "noApiKeysAvailable": "沒有可用的 API 金鑰", + "usingDefaultOmniroute": "使用預設值:sk_omniroute", + "updateConfig": "更新配置", + "applyConfig": "應用配置", + "noBackupsAvailable": "沒有可用的備份。", + "profileSaved": "配置檔案“{name}”已儲存!", + "failedSaveProfile": "儲存配置檔案失敗", + "profileActivated": "配置檔案已啟用!", + "failedActivateProfile": "啟用配置檔案失敗", + "profiles": "配置檔案", + "savedProfiles": "儲存的配置檔案", + "noProfilesYet": "尚未儲存配置檔案。將當前配置儲存為下面的配置檔案。", + "activate": "啟用", + "deleteProfile": "刪除配置檔案", + "profileNamePlaceholder": "配置檔案名稱(例如:個人帳戶)", + "saveCurrent": "儲存當前", + "codexAuthNotePrefix": "Codex 使用", + "codexAuthNoteMiddle": "與", + "codexAuthNoteSuffix": "單擊“應用”進行自動配置。", + "claudeManualConfiguration": "Claude CLI - 手動配置", + "codexManualConfiguration": "Codex CLI - 手動配置", + "droidManualConfiguration": "Factory Droid - 手動配置", + "openClawManualConfiguration": "OpenClaw - 手動配置", + "clineManualConfiguration": "Cline - 手動配置", + "kiloManualConfiguration": "Kilo - 手動配置", + "whenToUseLabel": "何時使用", + "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 別名和路由規則支援時使用。", + "qwen": "當您需要使用阿里雲 Qwen Code CLI 進行編碼任務時使用。", + "hermes": "當您需要輕量級終端原生 AI 助手來處理快速任務時使用。", + "hermes-agent": "需要使用 Hermes Agent (by Nousresearch) 時使用,預設、委派、視覺與輔助模型均通過 OmniRoute 路由。", + "custom": "用於自定義工具實現或通用 OpenAI 相容配置。" + }, + "toolDescriptions": { + "antigravity": "帶 MITM 的 Google Antigravity IDE", + "claude": "Claude Code CLI", + "codex": "OpenAI Codex CLI", + "droid": "Factory Droid AI 助手", + "openclaw": "OpenClaw AI 助手", + "cline": "Cline AI 編碼助手 CLI", + "kilo": "Kilo Code AI 助手 CLI", + "cursor": "Cursor AI 程式碼編輯器", + "continue": "繼續AI助手", + "opencode": "OpenCode AI 編碼智慧體(終端)", + "kiro": "Amazon Kiro - AI 驅動 IDE", + "windsurf": "Windsurf AI Code Editor", + "copilot": "GitHub Copilot AI Assistant", + "qwen": "Alibaba Qwen Code CLI", + "amp": "Sourcegraph Amp 程式設計助手 CLI", + "hermes": "Hermes AI 終端助手", + "hermes-agent": "Hermes Agent (by Nousresearch) — 支援多模型(委派、視覺、壓縮等)的高階終端 AI。", + "custom": "通用 OpenAI 相容 CLI 或 SDK 配置生成器" + }, + "guides": { + "cursor": { + "notes": { + "0": "使用該功能需要 Cursor Pro 帳戶。", + "1": "Cursor 會通過自己的伺服器轉發請求,因此不支援本地端點。請在設定中啟用雲端點。" + }, + "steps": { + "1": { + "title": "開啟設定", + "desc": "轉到設定 -> 模型" + }, + "2": { + "title": "啟用 OpenAI API", + "desc": "開啟 “OpenAI API key” 選項" + }, + "3": { + "title": "Base URL" + }, + "4": { + "title": "API金鑰" + }, + "5": { + "title": "新增自定義模型", + "desc": "點選“檢視所有模型”->“新增自定義模型”" + }, + "6": { + "title": "選擇模型" + } + } + }, + "continue": { + "steps": { + "1": { + "title": "開啟配置", + "desc": "開啟繼續配置檔案" + }, + "2": { + "title": "API金鑰" + }, + "3": { + "title": "選擇模型" + }, + "4": { + "title": "新增模型配置", + "desc": "將以下配置新增到您的模型陣列中:" + } + }, + "notes": { + "0": "Continue 使用 JSON 配置檔案。" + } + }, + "opencode": { + "steps": { + "1": { + "title": "安裝 OpenCode", + "desc": "通過 npm 安裝:npm install -g opencode-ai" + }, + "2": { + "title": "API 金鑰" + }, + "3": { + "title": "設定 Base URL", + "desc": "opencode config set baseUrl {baseUrl}" + }, + "4": { + "title": "選擇模型" + }, + "5": { + "title": "使用 Thinking 變體", + "desc": "對於思考模型,請使用 --variant high/low/max 執行(示例命令見下方)。" + } + }, + "notes": { + "0": "OpenCode 需要配置 API 金鑰。", + "1": "將基礎 URL 設定為您的 OmniRoute 端點。" + } + }, + "kiro": { + "steps": { + "1": { + "title": "開啟 Kiro 設定", + "desc": "前往 Settings → AI Provider" + }, + "2": { + "title": "Base URL", + "desc": "貼上你的 OmniRoute 端點 URL" + }, + "3": { + "title": "API 金鑰" + }, + "4": { + "title": "選擇模型" + } + }, + "notes": { + "0": "Kiro 需要 Amazon 帳戶。" + } + }, + "windsurf": { + "steps": { + "1": { + "title": "開啟 AI 設定", + "desc": "點選 Windsurf 中的 AI Settings 圖示,或前往 Settings" + }, + "2": { + "title": "新增自定義提供商", + "desc": "選擇 \"Add custom provider\" (OpenAI 相容)" + }, + "3": { + "title": "Base URL", + "desc": "http://127.0.0.1:20128/v1" + }, + "4": { + "title": "API Key", + "desc": "選擇你的 OmniRoute API 金鑰" + }, + "5": { + "title": "選擇模型", + "desc": "從下拉選單中選擇模型" + } + } + } + }, + "autoConfiguredTab": "自動配置", + "toolCategoriesDesc": "配置 AI 程式設計助手通過 OmniRoute 路由", + "allToolsTab": "所有工具", + "guidedClientsTab": "引導客戶端", + "mitmClientsTab": "MITM 客戶端", + "customCliTab": "自定義 CLI", + "toolCategories": "工具分類", + "visibleToolsCount": "{count} 個工具可用", + "customCliBuilderTitle": "相容 OpenAI 的 CLI 構建器", + "customCliBuilderDescription": "為任何接受 OpenAI 相容的基本 URL、API 金鑰和模型 ID 的 CLI 或 SDK 生成環境變數和 JSON 片段。", + "customCliNoModels": "連線至少一個提供者以填充模型選擇器。", + "customCliNameLabel": "CLI 名稱", + "customCliNamePlaceholder": "例如我的團隊 CLI", + "customCliDefaultModelLabel": "預設型號", + "customCliDefaultModelHelp": "使用任何 OmniRoute 模型 ID 或組合。大多數與 OpenAI 相容的 CLI 只需要 /v1 基本 URL 加上模型字串。", + "customCliKeyHelper": "對於本地安裝 OmniRoute 可以使用 sk_omniroute。在雲模式下,選擇您的管理 API 金鑰之一。", + "customCliAliasMappingsLabel": "別名對映", + "customCliAliasMappingsHelp": "需要穩定簡寫名稱的包裝器指令碼或配置檔案的可選幫助程式別名。", + "customCliAddAlias": "新增別名", + "customCliNoMappings": "還沒有別名對映。如果您的包裝器或團隊指令碼使用穩定的短名稱,請新增一個。", + "customCliAliasPlaceholder": "例如評論", + "customCliTargetModelLabel": "目標型號", + "customCliEndpointHintLabel": "如何連線端點", + "customCliEndpointHint": "將任何 OpenAI 相容客戶端指向 OmniRoute /v1 基本 URL。原始聊天完成端點是 {endpoint}。當工具需要提供程式物件時使用 JSON 塊,或者在讀取 OPENAI_* 變數時使用 env 指令碼。", + "customCliEnvBlockTitle": "環境 / shell 片段", + "customCliJsonBlockTitle": "提供者 JSON 塊", + "copilotConfigGenerator": "GitHub Copilot 配置生成器", + "copilotApiKey": "API金鑰", + "copilotFilterModelsPlaceholder": "過濾器型號...", + "copilotMaxInputTokens": "最大輸入令牌數", + "copilotMaxOutputTokens": "最大輸出代幣", + "copilotToolCalling": "工具呼叫", + "copilotPasteInto": "貼上到:", + "wireApiChatCompletions": "聊天完成 (/chat/completions)", + "wireApiResponses": "響應 API (/responses)" + }, + "combos": { + "title": "組合", + "description": "建立支援權重路由與故障回退的模型組合", + "autoCatalogTitle": "自動路由目錄", + "autoCatalogTemplateCount": "{count} 個模板", + "autoCatalogDescription": "內建 auto/* 組合,從已連線的提供商動態解析。直接將這些 ID 作為 model 欄位使用——無需設定。", + "autoCatalogExpand": "展開自動路由目錄", + "autoCatalogCollapse": "收起自動路由目錄", + "createCombo": "建立組合", + "editCombo": "編輯組合", + "deleteCombo": "刪除組合", + "noModels": "沒有模型", + "noModelsYet": "尚未新增模型", + "addModel": "新增模型", + "addModelToCombo": "向組合中新增模型", + "routingStrategy": "路由策略", + "maxRetries": "最大重試次數", + "timeout": "超時時間(毫秒)", + "healthcheck": "健康檢查", + "priority": "優先順序", + "fallback": "回退", + "roundRobin": "輪詢", + "random": "隨機", + "leastLatency": "最低延遲", + "comboName": "組合名稱", + "comboNamePlaceholder": "my-combo", + "comboDescription": "__MISSING__:Description", + "comboDescriptionPlaceholder": "__MISSING__:Optional note describing this combo", + "deleteConfirm": "刪除這個組合?", + "noCombosYet": "還沒有組合", + "comboCreated": "組合建立成功", + "comboUpdated": "組合更新成功", + "comboDeleted": "組合已刪除", + "failedCreate": "建立組合失敗", + "failedUpdate": "更新組合失敗", + "errorCreating": "建立組合時出錯", + "errorUpdating": "更新組合時出錯", + "errorDeleting": "刪除組合時出錯", + "testFailed": "測試請求失敗", + "failedToggle": "切換組合狀態失敗", + "testResults": "測試結果 — {name}", + "resolvedBy": "最終由以下模型處理:", + "more": "另有 +{count} 個", + "reqs": "請求", + "success": "成功", + "proxyConfigured": "已配置代理", + "copyComboName": "複製組合名稱", + "enableCombo": "啟用組合", + "disableCombo": "停用組合", + "testCombo": "測試組合", + "duplicate": "複製", + "proxyConfig": "代理配置", + "nameRequired": "名稱不能為空", + "nameInvalid": "僅允許字母、數字、-、_、/ 和 .", + "nameHint": "僅允許字母、數字、-、_、/ 和 .", + "priorityDesc": "順序回退:優先嚐試模型 1,其次模型 2,以此類推", + "weightedDesc": "按照權重百分比分配流量,並支援失敗回退", + "roundRobinDesc": "迴圈分發:每個請求按順序輪到下一個模型", + "contextRelay": "上下文接力", + "contextRelayDesc": "在帳戶輪換時通過交接摘要保持會話連續性", + "randomDesc": "均勻隨機選擇,失敗後回退到剩餘模型", + "leastUsedDesc": "優先選擇請求數最少的模型,隨時間平衡負載", + "costOptimizedDesc": "根據定價優先路由到最便宜的模型", + "resetAware": "復位感知RR", + "resetAwareDesc": "平衡剩餘配額與 5 小時和每週重置,然後對相似分數進行迴圈賽", + "strictRandom": "嚴格隨機", + "strictRandomDesc": "洗牌池模式:每個模型使用一次後再重新洗牌", + "fusion": "__MISSING__:Fusion", + "fusionDesc": "__MISSING__:Fans the prompt to every panel model in parallel, then a judge model synthesizes one final answer", + "fusionJudgeModel": "__MISSING__:Judge model", + "fusionJudgeModelHelp": "__MISSING__:Model that synthesizes the panel answers into one final response. Leave empty to use the first panel model.", + "fusionMinPanel": "__MISSING__:Min panel", + "fusionMinPanelHelp": "__MISSING__:Successful panel answers required before stragglers get a grace window (default 2).", + "fusionStragglerGraceMs": "__MISSING__:Straggler grace (ms)", + "fusionStragglerGraceMsHelp": "__MISSING__:How long to wait for slow panel models once quorum is reached (default 8000).", + "fusionPanelHardTimeoutMs": "__MISSING__:Panel hard timeout (ms)", + "fusionPanelHardTimeoutMsHelp": "__MISSING__:Absolute cap so one hung model can't stall the whole panel (default 90000).", + "models": "模型", + "autoBalance": "自動平衡", + "advancedSettings": "高階設定", + "retryDelay": "重試延遲(毫秒)", + "concurrencyPerModel": "每模型併發數", + "queueTimeout": "排隊超時(毫秒)", + "contextRelayHandoffThreshold": "交接閾值", + "contextRelayHandoffThresholdHelp": "當配額使用達到該閾值時,OmniRoute 會在當前活躍帳戶耗盡前生成結構化交接摘要。", + "contextRelayMaxMessages": "摘要最大訊息數", + "contextRelayMaxMessagesHelp": "限制壓縮排接力摘要中的最近歷史訊息數量。", + "contextRelaySummaryModel": "摘要模型", + "contextRelaySummaryModelHelp": "僅用於生成交接摘要的可選覆蓋模型。留空則複用當前活躍的 combo 模型。", + "contextRelayProviderNote": "Context Relay 當前主要為 Codex 帳戶輪換生成交接摘要。與同一提供商的多個帳戶配合使用時,連續性效果最佳。", + "advancedHint": "留空則使用全域性預設值。這些設定會覆蓋每個提供商的配置。", + "failoverBeforeRetry": "重試之前進行故障轉移", + "maxSetRetries": "最大設定重試次數", + "setRetryDelayMs": "設定重試延遲(毫秒)", + "moveUp": "上移", + "moveDown": "下移", + "removeModel": "移除", + "saving": "儲存中...", + "weighted": "加權", + "leastUsed": "最少使用", + "costOpt": "成本最佳化", + "strategyGuideTitle": "如何使用這種策略", + "strategyGuideWhen": "適用場景", + "strategyGuideAvoid": "不適用場景", + "strategyGuideExample": "示例", + "strategyGuide": { + "priority": { + "when": "你有一個首選模型,只希望在失敗時才切換到備用模型。", + "avoid": "你需要在多個模型之間分配流量。", + "example": "主力編碼模型 + 發生故障時切換到更便宜的備份模型。" + }, + "weighted": { + "when": "你需要在多個模型之間按比例分配流量。", + "avoid": "你無法長期維護準確的權重。", + "example": "80% 穩定模型 + 20% 金絲雀模型的釋出方案。" + }, + "round-robin": { + "when": "你希望流量分佈可預測且均勻。", + "avoid": "模型之間的延遲或成本差異很大。", + "example": "同一模型掛在多個帳號上,用於分攤吞吐。" + }, + "random": { + "when": "你只需要簡單分流,且不想做太多配置。", + "avoid": "你需要嚴格的流量保證。", + "example": "對等模型之間的快速原型驗證。" + }, + "least-used": { + "when": "你希望根據即時負載動態均衡。", + "avoid": "流量太低,無法體現按使用量均衡的價值。", + "example": "混合負載場景下,某個模型常常更容易過載。" + }, + "cost-optimized": { + "when": "降低成本是你的首要目標。", + "avoid": "定價資料缺失或已經過期。", + "example": "後臺任務或批處理作業,優先考慮更低成本。" + }, + "reset-aware": { + "when": "您可以使用配額遙測和不同的重置視窗跨多個帳戶進行路由。", + "avoid": "大多數帳戶無法使用配額遙測。", + "example": "寧願明天每週重置 60% 的帳戶,也不願稍後重置 80% 的帳戶。" + }, + "strict-random": { + "when": "適用於希望實現絕對均勻分配的場景,每個模型在重複前都會恰好使用一次。", + "avoid": "如果模型之間的質量或延遲差異較大,且呼叫順序很重要,則不建議使用。", + "example": "例如:同一模型掛載多個帳戶,用於更均勻地分攤使用量。" + }, + "p2c": { + "when": "當您希望使用 Power-of-Two-Choices 演算法進行低延遲選擇時使用。", + "avoid": "對於少於等於 2 個模型的小型組合避免使用 — 與輪詢相比沒有優勢。", + "example": "示例:在 4 個或更多等效模型端點之間進行高吞吐量推理。" + }, + "context-relay": { + "when": "當長會話必須在帳戶輪換時保持工作上下文不丟失時使用。", + "avoid": "當帳戶切換很少發生或您不希望額外的摘要請求時避免使用。", + "example": "示例:在接近配額耗盡時輪換多個帳戶的 Codex 會話。" + }, + "fill-first": { + "when": "當您希望在轉移到下一個提供商之前完全耗盡一個提供商的配額時使用。", + "avoid": "當您需要在提供商之間進行請求級負載均衡時避免使用。", + "example": "示例:在使用完所有 200 美元的 Deepgram 額度後再回退到 Groq。" + }, + "auto": { + "when": "當您需要基於成本、延遲和質量的多因素評分路由時使用。", + "avoid": "當您需要嚴格的優先順序排序或歷史永續性時避免使用。", + "example": "示例:在具有不同優勢的模型之間平衡請求。" + }, + "lkgp": { + "when": "當您希望基於歷史成功率和效能進行路由時使用。", + "avoid": "當歷史資料有限或不可靠時避免使用。", + "example": "示例:路由到在特定任務上有良好記錄的模型。" + }, + "context-optimized": { + "when": "當您需要最佳化模型間的上下文視窗使用時使用。", + "avoid": "當模型具有相似的上下文長度或任務簡單時避免使用。", + "example": "示例:在具有大上下文視窗的模型之間分配長對話。" + } + }, + "advancedHelp": { + "maxRetries": "請求失敗前最多會嘗試多少次重試。", + "retryDelay": "兩次重試之間的初始等待時間。值越大越能降低突發壓力。", + "timeout": "請求被中止前允許的最長持續時間。", + "healthcheck": "路由決策時跳過不健康的模型或提供商。", + "concurrencyPerModel": "輪詢模式下每個模型允許的最大併發請求數。", + "queueTimeout": "請求在佇列中等待超時前允許停留的最長時間。", + "failoverBeforeRetry": "啟用後,任何上游錯誤都會觸發立即故障轉移到下一個組合目標,跳過所有重試和回退 URL。", + "maxSetRetries": "每個目標失敗時重試完整目標集的次數。 0 = 沒有設定級別重試。", + "setRetryDelayMs": "設定級別重試嘗試之間的延遲,為暫時性問題提供解決時間。", + "disableSessionStickiness": "__MISSING__:Rotate to a different connection on every request instead of pinning a whole conversation to one connection by the first-message hash. Overrides the global default. Leave on Inherit to preserve prompt-cache hits for multi-turn chats." + }, + "templatesTitle": "快捷模板", + "templatesDescription": "先套用一個初始模板,再按需調整模型和配置。", + "templateApply": "應用模板", + "templateHighAvailability": "高可用", + "templateHighAvailabilityDesc": "優先順序路由,配合健康檢查和安全重試。", + "templateCostSaver": "節省成本", + "templateCostSaverDesc": "面向預算優先場景的成本最佳化路由。", + "templateBalanced": "均衡負載", + "templateBalancedDesc": "使用最少使用策略,隨時間均衡需求。", + "usageGuideHide": "隱藏", + "usageGuideDontShowAgain": "不再顯示", + "usageGuideShow": "顯示指南", + "quickTestTitle": "組合已準備好驗證", + "quickTestDescription": "現在執行一次測試,確認回退與延遲行為是否符合預期。", + "testNow": "立即測試", + "pricingCoverage": "定價覆蓋率", + "pricingCoverageHint": "成本最佳化策略在組合內所有模型都有定價資訊時效果最佳。", + "pricingAvailable": "已有定價", + "pricingMissing": "無定價", + "pricingAvailableShort": "已定價", + "pricingMissingShort": "無定價", + "warningRoundRobinSingleModel": "輪詢策略至少有 2 個模型時才最有價值。", + "warningCostOptimizedPartialPricing": "在 {total} 個模型中,只有 {priced} 個有定價資訊。路由可能只具備部分成本感知能力。", + "warningCostOptimizedNoPricing": "該組合未找到任何定價資料。成本最佳化策略的路由結果可能不符合預期。", + "filterAll": "全部", + "filterIntelligent": "智慧路由", + "filterDeterministic": "確定性", + "filterEmptyTitle": "沒有組合匹配此策略篩選。", + "filterEmptyIntelligentDescription": "建立自動或 LKGP 組合以填充智慧路由儀表盤。", + "filterEmptyDeterministicDescription": "當前僅存在自動和 LKGP 組合。切換回\"全部\"或建立確定性組合。", + "readinessTitle": "可以儲存了嗎?", + "readinessDescription": "在建立或更新組合前,請先檢查以下專案。", + "readinessCheckName": "組合名稱有效", + "readinessCheckModels": "至少選擇了一個模型", + "readinessCheckWeights": "加權總和為 100%", + "readinessCheckWeightsOptional": "當前策略無需權重規則", + "readinessCheckPricing": "已有定價資料", + "readinessCheckPricingOptional": "當前策略無需定價規則", + "saveBlockedTitle": "以下問題修復前無法儲存:", + "saveBlockName": "請先填寫組合名稱。", + "saveBlockModels": "請至少新增一個模型。", + "saveBlockWeighted": "請將權重總和設定為 100%(當前:{total}%)。", + "saveBlockPricing": "請至少為一個模型補充定價資訊,或改用其他策略。", + "recommendationsLabel": "推薦配置", + "applyRecommendations": "應用推薦", + "recommendationsUpdated": "已為 {strategy} 更新推薦配置。", + "recommendationsApplied": "推薦配置已應用到當前組合。", + "intelligentPanelTitle": "智慧路由儀表盤", + "intelligentPanelDesc": "此自動路由組合的即時評分和健康狀態。", + "configOnlyStatus": "配置檢視", + "configOnlyHint": "此面板僅顯示路由輸入,即時熔斷器狀態請到健康頁面檢視。", + "routingInputs": "路由輸入", + "routingInputsHint": "模式包與權重保留在此處;熔斷器執行狀態保留在健康頁面。", + "emailVisibilityHint": "此處帳號郵箱遵循全域性隱私開關。", + "emailVisibilityTooltip": "使用眼睛圖示可在組合、提供商與配額頁面間全域性切換帳號郵箱的顯示與隱藏。", + "manualModel": "手動模型", + "manualModelInvalid": "請按 provider/model 格式填寫。", + "manualModelUnknownProvider": "未知的提供商字首。", + "builderDynamicAccountShort": "動態帳號", + "builderNeedValidName": "請先填寫有效的組合名稱再繼續。", + "statusOverview": "狀態概覽", + "normalOperation": "正常執行", + "allProvidersHealthy": "供應商報告路由狀況良好。", + "incidentMode": "事件模式", + "highCircuitBreakerRate": "檢測到熔斷器頻繁觸發。", + "activeModePack": "當前模式包", + "modePackUpdated": "模式包已更新為 {pack}。", + "modePackHint": "切換預設以調整路由引擎偏向,無需重建組合。", + "providerScores": "供應商評分", + "allProvidersEvaluated": "未配置候選池。執行時評估所有活躍供應商。", + "excludedProviders": "已排除的供應商", + "excludedProvidersHint": "熔斷器處於 OPEN 狀態的供應商將被臨時排除在路由之外。", + "noExcludedProviders": "當前沒有供應商被排除。", + "cooldownMinutes": "冷卻:{minutes} 分鐘", + "builderIntelligentTitle": "智慧路由配置", + "builderIntelligentDesc": "為此自動路由組合配置多因子評分引擎。", + "candidatePoolLabel": "候選池", + "candidatePoolHint": "選擇引擎應評估的供應商。留空則使用所有活躍供應商。", + "candidatePoolEmpty": "暫無可用活躍供應商。", + "candidatePoolAllProviders": "所有供應商", + "modePackLabel": "模式包", + "routerStrategyLabel": "路由策略", + "strategyRules": "規則(6 因子評分)", + "explorationRateLabel": "探索率", + "explorationRateHint": "{percent}% 的請求可以探索非最優供應商。", + "budgetCapLabel": "預算上限(美元/請求)", + "budgetCapPlaceholder": "無限制", + "advancedWeightsTitle": "高階:評分權重", + "weightQuota": "配額", + "weightHealth": "健康度", + "weightCostInv": "成本", + "weightLatencyInv": "延遲", + "weightTaskFit": "任務適配", + "weightStability": "穩定性", + "weightTierPriority": "層級", + "reviewIntelligentTitle": "智慧路由配置", + "strategyRecommendations": { + "priority": { + "title": "穩妥基線", + "description": "使用一個主模型,並保持回退鏈路簡短且可靠。", + "tip1": "把最可靠的模型放在第一位。", + "tip2": "保留 1 到 2 個質量相近的備用模型。", + "tip3": "開啟安全重試,吸收臨時性的提供商故障。" + }, + "weighted": { + "title": "可控流量分配", + "description": "非常適合金絲雀釋出和模型漸進遷移。", + "tip1": "建議從 90/10 這樣的保守配比開始。", + "tip2": "始終保持總權重為 100%,並在調整後自動平衡。", + "tip3": "在提高金絲雀權重前,先觀察成功率和延遲。" + }, + "round-robin": { + "title": "可預測的負載分攤", + "description": "適合模型能力接近、且需要平滑分佈流量的場景。", + "tip1": "至少使用 2 個模型。", + "tip2": "設定併發限制,避免突發流量打滿單個模型。", + "tip3": "結合佇列超時,在飽和時快速失敗。" + }, + "random": { + "title": "低配置快速分散", + "description": "適用於不需要嚴格保證、只想簡單分流的場景。", + "tip1": "儘量選擇延遲特徵相近的模型。", + "tip2": "保留重試機制,以吸收隨機命中的失敗。", + "tip3": "更適合實驗場景,不建議用於嚴格 SLA。" + }, + "least-used": { + "title": "自適應均衡", + "description": "優先路由到使用更少的模型,隨著時間降低熱點。", + "tip1": "持續穩定流量下效果更好。", + "tip2": "結合健康檢查,能獲得更穩妥的均衡效果。", + "tip3": "跟蹤各模型用量,驗證分佈改善情況。" + }, + "cost-optimized": { + "title": "預算優先路由", + "description": "在具備定價後設資料時,優先路由到成本更低的模型。", + "tip1": "確保所有已選模型都具備定價資訊。", + "tip2": "為高難度提示保留一個質量更高的回退模型。", + "tip3": "適合批處理或後臺任務等成本是主要指標的場景。" + }, + "reset-aware": { + "title": "重置感知帳戶輪換", + "description": "根據重置時間平衡剩餘的提供商配額。", + "tip1": "對具有配額遙測的提供商使用顯式帳戶步驟或帳戶標籤路由。", + "tip2": "當短期疲勞風險更大時,調整訓練次數與每週重量。", + "tip3": "保持領帶較小,這樣等值帳戶仍然可以公平地輪換。" + }, + "strict-random": { + "title": "洗牌池分配", + "description": "每輪中每個模型都會被恰好使用一次,然後再重新洗牌。", + "tip1": "至少使用 2 個模型,才能體現分配效果。", + "tip2": "最適合效能相近的模型。", + "tip3": "非常適合在多個 API 帳戶之間做負載均衡。" + }, + "fill-first": { + "description": "在切換到鏈中的下一個提供商之前,先耗盡一個提供商的配額。", + "tip1": "按免費配額大小排列模型 — 最大的放在第一位。", + "tip2": "啟用健康檢查以跳過已耗盡的提供商。", + "tip3": "非常適合免費層級堆疊(Deepgram → Groq → NIM)。", + "title": "配額耗盡策略" + }, + "auto": { + "description": "基於成本、延遲、質量和健康的即時評分進行路由。", + "tip1": "讓引擎自動平衡多個因素。", + "tip2": "在日誌中監控哪些因素驅動路由決策。", + "tip3": "用於複雜工作負載,其中沒有單一因素佔主導。", + "title": "多因素最佳化" + }, + "lkgp": { + "description": "基於歷史成功率和永續性能資料進行路由。", + "tip1": "在依賴此策略之前讓成功歷史積累足夠資料。", + "tip2": "最適合具有穩定效能特徵的工作負載。", + "tip3": "定期審查歷史資料,確保路由決策保持準確。", + "title": "歷史路由" + }, + "context-optimized": { + "description": "基於上下文視窗使用情況和令牌效率最佳化路由。", + "tip1": "將長對話路由到具有更大上下文視窗的模型。", + "tip2": "監控上下文利用率以避免令牌浪費。", + "tip3": "最適合需要大量上下文保留的對話式 AI。", + "title": "上下文最佳化" + }, + "context-relay": { + "description": "當預期帳戶輪換且下一個帳戶必須繼承簡化的任務摘要時效果最佳。", + "tip1": "與為同一模型系列輪換帳戶的提供商配合使用。", + "tip2": "將交接閾值設定在硬配額截止值以下,以便有時間生成摘要。", + "tip3": "僅在主模型太貴或不穩定時,才設定專用摘要模型。", + "title": "會話連續性優先" + }, + "p2c": { + "description": "每次請求從隨機候選中選出負載較輕的一個 — 低延遲,高擴充套件性。", + "tip1": "配合 4 個或更多模型使用效果最佳。", + "tip2": "需要在設定中啟用延遲遙測。", + "tip3": "是高吞吐量組合中輪詢的絕佳替代方案。", + "title": "雙選負載均衡" + } + }, + "templateFreeStack": "免費棧($0)", + "templateFreeStackDesc": "在所有免費提供商之間進行輪詢:Kiro(Claude)、Qoder(5 個模型)、Qwen(4 個模型)。零成本,編碼不中斷。", + "auto": "自動組合", + "autoDesc": "自愈型智慧路由池(效能最佳化)", + "lkgp": "LKGP 模式", + "lkgpDesc": "最後已知良好提供商(可預測的彈性)", + "wizardGuideTitle": "組合入門指南", + "wizardGuideDesc": "建立模型組合以智慧路由 AI 流量", + "wizardGuideHint": "或點選上方「+ 建立組合」", + "createFirstCombo": "建立您的第一個組合", + "wizardStep1Title": "命名您的組合", + "wizardStep1Desc": "為您的組合指定唯一名稱,以便在路由規則中識別", + "wizardStep2Title": "新增模型", + "wizardStep2Desc": "選擇 AI 模型並排列其故障轉移優先順序順序", + "wizardStep3Title": "選擇策略", + "wizardStep3Desc": "選擇請求在模型之間的分發方式 — 提供 13 種策略", + "wizardStep4Title": "審查並儲存", + "wizardStep4Desc": "審查您的配置並激活組合", + "emailVisibilityStateOn": "開啟", + "emailVisibilityStateOff": "關閉", + "reorderHandle": "拖拽排序", + "failedReorder": "模型重排序失敗", + "builderFlowTitle": "組合構建流程", + "builderStage": { + "basics": { + "label": "基礎", + "description": "名稱和起始模板" + }, + "steps": { + "label": "步驟", + "description": "提供商、模型和帳戶選擇" + }, + "strategy": { + "label": "策略", + "description": "路由行為和高階設定" + }, + "intelligent": { + "label": "智慧路由", + "description": "自動路由候選池、預設和評分" + }, + "review": { + "label": "審查", + "description": "儲存前的最終驗證" + } + }, + "builderStageVisited": "階段已完成", + "builderStageCurrent": "當前階段", + "builderStagePending": "待處理", + "builderStageLocked": "已鎖定 — 請先完成上一步", + "builderTitle": "構建組合", + "builderBrowseCatalog": "瀏覽目錄", + "builderProvider": "提供商", + "builderLoadingProviders": "載入提供商中...", + "builderSelectProvider": "選擇提供商", + "builderModel": "模型", + "builderSelectModel": "選擇模型", + "builderProviderFirst": "請先選擇提供商", + "builderAccount": "帳戶", + "builderPreview": "預覽", + "builderAddStep": "新增步驟", + "builderDuplicateExact": "該提供商/模型/帳戶步驟已存在於組合中。", + "builderComboRef": "組合引用", + "builderAddComboRef": "新增組合引用", + "builderComboRefStep": "新增組合引用步驟", + "builderPinnedAccount": "固定帳戶", + "builderLegacyEntry": "舊版條目", + "reviewName": "名稱", + "reviewStrategy": "策略", + "reviewSteps": "步驟", + "reviewAccounts": "帳戶", + "reviewProviders": "提供商", + "reviewComboRefs": "組合引用", + "reviewAdvanced": "高階設定", + "reviewAgentFlags": "Agent 標誌", + "reviewSequence": "模型序列", + "reviewNoSteps": "未配置任何步驟", + "builderStagesDescription": "按順序完成各個階段以定義組合、構建步驟、選擇路由策略並審查結果。", + "builderStepsDescription": "按順序構建每個組合步驟:提供商、模型,然後是帳戶。這允許在不同帳戶上重複使用相同的提供商和模型。", + "selectProvider": "選擇提供商", + "selectProviderPlaceholder": "選擇提供商", + "selectModel": "選擇模型", + "selectModelPlaceholder": "請先選擇提供商", + "selectAccount": "選擇帳戶", + "selectComboToReference": "選擇要引用的現有組合", + "comboReference": "組合引用", + "addComboReference": "新增組合引用", + "addStepBeforeContinue": "在繼續到下一階段之前,請至少新增一個步驟。", + "previewNextStep": "選擇提供商和模型以預覽下一步。", + "autoSelectAccount": "執行時自動選擇帳戶", + "modePackBalanced": "均衡", + "modePackBudget": "預算優先", + "modePackPerformance": "效能優先", + "modePackCustom": "自定義", + "browseLegacyCatalog": "瀏覽舊版模型目錄", + "agentFeaturesTitle": "智慧代理功能", + "agentFeaturesDescription": "— 可選,用於智慧體/工具工作流", + "responseValidationTitle": "__MISSING__:Response validation", + "responseValidationHelp": "__MISSING__:Fail over to the next target when a 200 OK body fails these checks (assistant content).", + "responseValidationForbidden": "__MISSING__:Forbidden substrings (one per line)", + "responseValidationRequired": "__MISSING__:Required substrings (one per line)", + "responseValidationMinLength": "__MISSING__:Minimum content length (chars)", + "responseValidationJsonPaths": "__MISSING__:JSON-path checks", + "responseValidationAddCheck": "__MISSING__:+ Add check", + "agentFeaturesSystemMessageOverride": "系統訊息覆蓋", + "agentFeaturesSystemMessagePlaceholder": "覆蓋通過此組合路由的所有請求的系統提示…", + "agentFeaturesSystemMessageHint": "替換客戶端傳送的任何系統訊息。留空則透傳客戶端系統訊息。", + "agentFeaturesToolFilterRegex": "工具過濾器正則", + "agentFeaturesToolFilterHint": "只有名稱匹配此正則的工具才會轉發給供應商。留空則轉發所有工具。", + "agentFeaturesContextCacheHint": "跨輪次鎖定供應商/模型以保持快取會話。內部標籤在轉發給供應商前會被移除。", + "agentFeaturesContextCacheProtection": "上下文快取保護", + "agentFeaturesContextLength": "上下文長度", + "agentFeaturesContextLengthPlaceholder": "例如128000", + "agentFeaturesContextLengthHint": "在 /v1/models 中定義此組合的上下文視窗。", + "agentFeaturesContextLengthErrorInteger": "上下文長度必須是有效整數", + "agentFeaturesContextLengthErrorRange": "上下文長度必須介於 1000 到 2000000 之間", + "compressionOverride": "壓縮覆蓋", + "modePack": "模式包", + "disableSessionStickiness": "__MISSING__:Disable session stickiness", + "sessionStickinessEnabled": "__MISSING__:Stickiness on", + "sessionStickinessDisabled": "__MISSING__:Stickiness off" + }, + "costs": { + "title": "成本", + "pageDescription": "跟蹤支出、分析趨勢,並管理所有提供商的 AI 預算", + "overview": "概覽", + "budget": "預算", + "totalCost": "總成本", + "breakdown": "成本明細", + "noData": "無成本資料", + "byModel": "按模型", + "byProvider": "按提供商", + "range7d": "7 天", + "range30d": "30 天", + "range90d": "90 天", + "rangeAll": "全部時間", + "spend30d": "30 天支出", + "activeModels": "活躍 Model", + "selectedWindow": "已選視窗", + "activeProviders": "活躍 Provider", + "overviewTitle": "概覽", + "spend7d": "7 天支出", + "avgCostPerRequest": "平均每次請求成本", + "noCostDataDescription": "發起請求後,成本資料會顯示在這裡。", + "spendToday": "今日支出", + "overviewLoadFailed": "載入成本概覽失敗", + "overviewDescription": "按提供商、模型和時間段彙總成本。", + "providerShare": "提供商佔比", + "topProviders": "熱門 Provider", + "costTrend": "成本趨勢", + "noCostDataTitle": "暫無成本資料", + "topModels": "熱門 Model", + "requestsInWindow": "視窗內請求數", + "tokenUsage": "Token 用量", + "totalTokens": "Token 總數", + "inputTokens": "輸入 Token", + "outputTokens": "輸出 Token", + "inputOutputRatio": "輸入/輸出比例", + "tokens": "token", + "routingEfficiency": "路由效率", + "fallbackCount": "回退請求數", + "fallbackRate": "回退率", + "modelCoverage": "模型覆蓋率", + "modelCoverageDesc": "帶有明確模型的請求佔比", + "outOfRequests": "共 {total} 個請求", + "costByApiKey": "按 API 金鑰統計成本", + "costByAccount": "按帳戶統計成本", + "apiKeyName": "API 金鑰", + "account": "帳戶", + "requests": "請求數", + "cost": "成本", + "dayStreak": "連續天數", + "weeklyUsagePattern": "每週使用模式", + "activityHeatmap": "活動熱力圖(365 天)", + "less": "較少", + "more": "較多", + "monthlyForecast": "月度預測", + "forecastBasis": "基於最近 {days} 天", + "avgDailyCost": "平均每日成本", + "daysRemaining": "剩餘 {days} 天", + "periodComparison": "週期對比", + "previousPeriod": "上半期", + "currentPeriod": "當前半期", + "exportCSV": "匯出為 CSV", + "exportJSON": "匯出為 JSON", + "legacyFreeLabel": "舊版 / 免費", + "costExplorerTitle": "成本探索器", + "costExplorerDescription": "按提供商、模型、API 金鑰、帳戶或服務層級探索支出。", + "groupProvider": "提供商", + "groupModel": "模型", + "groupApiKey": "API 金鑰", + "groupAccount": "帳戶", + "groupServiceTier": "服務層級", + "serviceTierFast": "快速", + "serviceTierFlex": "彈性", + "serviceTierStandard": "標準", + "serviceTierBreakdownTitle": "服務層級", + "serviceTierBreakdownSubtitle": "快速 / 彈性 / 標準 分佈", + "serviceTierUsageSaved": "已節省用量", + "serviceTierCostSaved": "已節省", + "serviceTierCostShareSuffix": "成本佔比", + "dimension": "維度", + "share": "佔比", + "legacyOrFree": "舊版 / 免費", + "filterRows": "篩選行…", + "filterCostExplorerRows": "篩選成本探索器行", + "noMatchingCostRows": "沒有匹配的成本行", + "noMatchingCostRowsDescription": "調整搜尋文本、分組或所選時間視窗。", + "showingCostRows": "正在顯示 {total} 個匹配行中的 {shown} 個。", + "showingTopCostRows": "正在顯示 {total} 個匹配行中的 {shown} 個(前 50 個)。" + }, + "endpoint": { + "title": "API 端點", + "available": "可用端點", + "cloudProxy": "雲代理", + "disableConfirm": "確定要停用雲代理嗎?", + "baseUrl": "基礎 URL", + "apiKeyLabel": "API 金鑰", + "registeredKeys": "已註冊金鑰", + "chatCompletions": "對話補全", + "responses": "響應", + "listModels": "列出模型", + "usingCloudProxy": "當前使用雲代理", + "usingLocalServer": "當前使用本地伺服器", + "machineId": "機器 ID:{id}...", + "disableCloud": "停用雲端", + "enableCloud": "啟用雲端", + "modelsAcrossEndpoints": "{endpoints} 個端點共提供 {models} 個模型", + "loadingModels": "正在載入可用模型...", + "chatDesc": "支援所有提供商的流式與非流式聊天", + "embeddings": "嵌入", + "embeddingsDesc": "用於搜尋和 RAG 流程的文本向量", + "imageGeneration": "影像生成", + "imageDesc": "根據文本提示生成影像", + "rerank": "重排", + "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", + "categoryMedia": "媒體與多模態", + "categorySearch": "搜尋與發現", + "categoryUtility": "工具與管理", + "webSearch": "網頁搜尋", + "webSearchDesc": "統一接入多個提供商的網頁搜尋,支援自動故障轉移與快取", + "searchProvider": "搜尋提供商", + "searchProviderDesc": "該提供商會用於 `POST /v1/search` 的網頁搜尋。無需配置模型,只要連線 API 金鑰即可使用。", + "enableCloudTitle": "啟用雲代理", + "whatYouGet": "啟用後可獲得", + "cloudBenefitAccess": "從世界任何地方訪問你的 API", + "cloudBenefitShare": "方便與團隊共享端點", + "cloudBenefitPorts": "無需開放埠或配置防火牆", + "cloudBenefitEdge": "全球邊緣網路加速", + "cloudSessionNote": "雲端會保留你的認證會話 1 天;若未使用,將自動刪除。", + "cloudUnstableNote": "目前雲端在部分 Claude Code OAuth 場景下仍不夠穩定。", + "cloudConnected": "雲代理已連線!", + "connectingToCloud": "正在連線雲端...", + "verifyingConnection": "正在驗證連線...", + "connecting": "連線中...", + "verifying": "驗證中...", + "connected": "已連線!", + "disableCloudTitle": "停用雲代理", + "disableWarning": "所有認證會話都會從雲端刪除。", + "syncingData": "正在同步最新資料...", + "disablingCloud": "正在停用雲端...", + "syncing": "同步中...", + "disabling": "停用中...", + "cloudConnectedVerified": "雲代理已連線並驗證成功!", + "connectedVerificationPending": "已連線,等待驗證", + "connectedVerificationPendingWithError": "已連線,等待驗證:{error}", + "cloudDisabledSuccess": "雲端已成功停用", + "syncedSuccess": "同步成功", + "failedDisable": "停用雲端失敗", + "failedEnable": "啟用雲端失敗", + "cloudRequestTimeout": "雲端請求超時", + "cloudRequestFailed": "雲端請求失敗", + "cloudWorkerUnreachable": "無法連線到雲 Worker。請確認雲服務已執行(在 `/cloud` 中執行 `npm run dev`)。", + "connectionFailed": "連線失敗", + "syncFailed": "同步雲端資料失敗", + "cloudflaredTitle": "Cloudflare 快速隧道", + "cloudflaredDescription": "為當前端點建立 Cloudflare Quick Tunnel。", + "cloudflaredUrlNotice": "建立一個臨時的 Cloudflare Quick Tunnel。每次重啟後 URL 都會變化。", + "cloudflaredEnable": "啟用 Tunnel", + "cloudflaredInstallAndEnable": "安裝並啟用", + "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。", + "cloudflaredLastError": "最近錯誤:{error}", + "providerModelsTitle": "{provider} — 模型", + "noModelsForProvider": "該提供商當前沒有可用模型。", + "chat": "聊天", + "embedding": "向量", + "image": "影像", + "custom": "自定義", + "modelsCount": "{count, plural, one {# 個模型} other {# 個模型}}", + "sectionTitle": "整合入口", + "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 端點", + "protocolToolsLabel": "工具數", + "protocolTasksLabel": "任務數", + "protocolActiveStreamsLabel": "活躍流數", + "protocolLastActivity": "最近活動", + "quickStart": "快速開始", + "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 請求。", + "a2aQuickStartStep3": "使用 `tasks/get` 與 `tasks/cancel` 跟蹤和控制任務。", + "completionsLegacy": "Completions(舊版)", + "completionsLegacyDesc": "舊版 OpenAI 文本補全介面,同時接受 `prompt` 字串和 `messages` 陣列格式", + "messagesApi": "留言", + "messagesApiDesc": "適用於 Claude 相容提供程式的本機人性訊息 API 格式", + "imageEdits": "影像編輯", + "imageEditsDesc": "使用 AI 編輯和修改現有影像(修復、修復、變體)", + "batchApi": "批次API", + "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 失敗", + "tailscaleInstallProgress": "處理中...", + "tailscaleInstalled": "Tailscale 安裝成功", + "tailscaleRunning": "執行中", + "tailscaleNeedsLogin": "需要登入", + "tailscaleStoppedState": "已停止", + "tailscaleNotInstalled": "未安裝", + "tailscaleUnsupported": "不支援", + "tailscaleError": "錯誤", + "tailscaleDisable": "停止 Funnel", + "tailscaleInstallAndEnable": "安裝並啟用", + "tailscaleLoginAndEnable": "登入並啟用", + "tailscaleEnable": "啟用 Funnel", + "tailscaleUrlNotice": "使用你的 Tailscale .ts.net 地址。首次使用時可能需要登入並批准 Funnel。", + "tailscaleTitle": "Tailscale Funnel", + "tailscaleNeedsLoginHint": "先使用 Tailscale 認證此機器,然後啟用 Funnel。", + "tailscaleBinaryPath": "二進位制檔案:{path}", + "tailscaleLastError": "最近錯誤:{error}", + "tailscaleInstallTitle": "安裝 Tailscale", + "tailscaleInstallIntro": "在此機器上安裝 Tailscale,並準備讓 OmniRoute 啟用 Funnel。", + "tailscaleInstallPasswordHint": "在 macOS 和 Linux 上,安裝軟體包和啟動守護程序可能需要 sudo。", + "tailscaleSudoPlaceholder": "可選 sudo 密碼", + "tailscaleInstalling": "正在安裝", + "tailscaleSudoLabel": "Sudo 密碼(macOS/Linux 上必需)", + "ngrokTitle": "ngrok 隧道", + "ngrokRunning": "執行中", + "ngrokStarting": "正在啟動", + "ngrokStoppedState": "已停止", + "ngrokNeedsAuth": "需要認證", + "ngrokNotInstalled": "未安裝", + "ngrokUnsupported": "不支援", + "ngrokError": "錯誤", + "ngrokEnable": "啟用隧道", + "ngrokDisable": "停止隧道", + "ngrokUrlNotice": "建立一個公開的 ngrok 隧道。", + "ngrokAuthTokenLabel": "Authtoken(未設定 NGROK_AUTHTOKEN 時必需)", + "ngrokAuthTokenPlaceholder": "輸入你的 ngrok authtoken", + "ngrokLastError": "上次錯誤:{error}", + "ngrokStarted": "ngrok 隧道已啟動", + "ngrokStopped": "ngrok 隧道已停止", + "ngrokRequestFailed": "更新 ngrok 隧道失敗", + "apiEndpointsCatalogUnavailable": "API目錄不可用", + "apiEndpointsSearchPlaceholder": "搜尋端點...", + "apiEndpointsRequiresAuth": "需要授權", + "apiEndpointsNoMatch": "沒有端點與您的過濾器匹配", + "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 聊天", + "localServer": "本地伺服器", + "cloudOmniroute": "雲全路由", + "copyUrl": "複製網址", + "badgeLoopbackTooltip": "此端點僅可本地訪問(僅限迴環)", + "badgeAlwaysProtectedTooltip": "此端點始終受保護,需要授權", + "badgeInternalTooltip": "這是系統內部端點", + "tierAll": "全部", + "tierAuth": "需認證", + "tierLoopback": "迴環", + "tierAlwaysProtected": "始終受保護", + "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..." + }, + "endpoints": { + "tabProxy": "端點代理", + "tabApiEndpoints": "API 端點", + "apiEndpointsTitle": "API 端點", + "apiEndpointsDescription": "可被其他應用程式和服務使用的後端API端點。", + "comingSoon": "即將推出", + "plannedFeatures": "計劃的功能", + "featureRestApi": "REST API目錄與互動式文件", + "featureWebhooks": "Webhook配置和事件訂閱", + "featureSwagger": "OpenAPI / Swagger規範自動生成", + "featureAuth": "每個端點的API金鑰和OAuth範圍管理" + }, + "mcpDashboard": { + "loading": "正在載入 MCP 儀表板...", + "activate": "啟用", + "deactivate": "停用", + "confirmSwitchCombo": "確定要將組合“{combo}”設為{action}嗎?", + "switchComboFailed": "切換組合狀態失敗。", + "switchComboSuccess": "組合“{combo}”已更新。", + "confirmApplyProfile": "確定要應用彈性配置“{profile}”嗎?", + "applyProfileFailed": "應用彈性配置失敗。", + "applyProfileSuccess": "已應用配置“{profile}”。", + "confirmResetBreakers": "確定要重置全部斷路器嗎?", + "resetBreakersFailed": "重置斷路器失敗。", + "resetBreakersSuccess": "斷路器已重置。", + "processStatus": "程序狀態", + "online": "線上", + "offline": "離線", + "disableLabel": "停用 {label}", + "enableLabel": "啟用 {label}", + "transportMode": "傳輸模式", + "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 傳輸連線。", + "mcpStep3": "呼叫 {code1} 和 {code2} 等工具。", + "pid": "PID", + "sessionUptime": "會話執行時長", + "lastHeartbeat": "最近心跳", + "activity24h": "近 24 小時活動", + "totalCalls": "呼叫總數", + "successRate": "成功率", + "avgLatency": "平均延遲", + "topTools": "熱門工具", + "noToolCalls24h": "最近 24 小時沒有工具呼叫。", + "runtimeDetails": "執行時詳情", + "transport": "傳輸方式", + "scopesEnforced": "已啟用作用域控制", + "yes": "是", + "no": "否", + "lastCall": "最近呼叫", + "heartbeatPath": "心跳檔案路徑", + "operationalControls": "執行控制", + "switchCombo": "切換組合", + "inactive": "未啟用", + "active": "已啟用", + "activateCombo": "啟用組合", + "deactivateCombo": "停用組合", + "applyResilienceProfile": "應用彈性配置", + "profileAggressive": "激進", + "profileBalanced": "平衡", + "profileConservative": "保守", + "applyProfile": "應用配置", + "resetCircuitBreakers": "重置斷路器", + "resetCircuitBreakersHelp": "清除當前斷路器狀態及提供商失敗計數。", + "resetAllBreakers": "重置全部斷路器", + "toolsAndScopes": "工具與作用域", + "tableTool": "工具", + "tableScopes": "作用域", + "tablePhase": "階段", + "tableAudit": "審計", + "auditLog": "審計日誌", + "auditSummary": "呼叫數:{total}|第 {page} / {totalPages} 頁", + "allTools": "全部工具", + "allResults": "全部結果", + "success": "成功", + "failure": "失敗", + "apiKeyIdPlaceholder": "apiKeyId", + "loadingAuditEntries": "正在載入審計記錄...", + "noAuditEntriesForFilters": "當前篩選條件下沒有審計記錄。", + "tableTimestamp": "時間戳", + "tableDuration": "耗時", + "tableResult": "結果", + "tableApiKey": "API 金鑰", + "failed": "失敗", + "previous": "上一頁", + "next": "下一頁", + "apiKeyId": "API Key ID", + "offset": "偏移量", + "limit": "限制", + "tool": "工具" + }, + "a2aDashboard": { + "loading": "正在載入 A2A 儀表板...", + "confirmCancelTask": "確定要取消任務 {taskId} 嗎?", + "cancelTaskFailed": "取消任務失敗。", + "cancelTaskSuccess": "任務 {taskId} 已取消。", + "smokeSendFailed": "`message/send` 冒煙測試失敗。", + "smokeSendSuccessWithTask": "`message/send` 呼叫成功(任務 {taskId})。", + "smokeSendSuccess": "`message/send` 呼叫成功。", + "smokeStreamFailed": "`message/stream` 冒煙測試失敗。", + "smokeStreamSuccessWithTask": "`message/stream` 呼叫成功(任務 {taskId}{stateSuffix})。", + "smokeStreamNoTaskId": "`message/stream` 完成,但未返回任務 ID。", + "health": "健康狀態", + "ok": "正常", + "totalTasks": "任務總數", + "activeStreams": "活躍流數", + "lastTask": "最近任務", + "taskStateOverview": "任務狀態概覽", + "state": { + "submitted": "已提交", + "working": "處理中", + "completed": "已完成", + "failed": "失敗", + "cancelled": "已取消" + }, + "agentCard": "智慧體卡片", + "agentCardPath": "/.well-known/agent.json", + "version": "版本", + "url": "URL", + "capabilities": "能力", + "agentCardNotAvailable": "Agent Card 不可用。", + "quickValidation": "快速驗證", + "quickValidationDescription": "通過即時 `/a2a` 端點執行冒煙呼叫。", + "runMessageSend": "執行 message/send", + "runMessageStream": "執行 message/stream", + "taskManagement": "任務管理", + "taskSummary": "任務總數:{total}|第 {page} / {totalPages} 頁", + "allStates": "全部狀態", + "allSkills": "全部技能", + "loadingTasks": "正在載入任務...", + "noTasksForFilters": "當前篩選條件下沒有任務。", + "tableTask": "任務", + "tableSkill": "技能", + "tableState": "狀態", + "tableUpdated": "更新時間", + "tableActions": "操作", + "view": "檢視", + "cancel": "取消", + "previous": "上一頁", + "next": "下一頁", + "taskDetail": "任務詳情", + "close": "關閉", + "metadata": "後設資料", + "events": "事件", + "artifacts": "產物", + "tablePhase": "階段", + "offset": "偏移量", + "limit": "限制", + "skill": "技能", + "rpcEndpoint": "釋出 /a2a", + "rpcMethodSend": "留言/傳送", + "rpcMethodStream": "訊息/流", + "rpcMethodGet": "任務/獲取", + "rpcMethodCancel": "任務/取消", + "serviceLabel": "A2A", + "online": "線上", + "offline": "離線", + "disableLabel": "停用 {label}", + "enableLabel": "啟用 {label}", + "a2aDisabledTitle": "A2A 已停用", + "a2aDisabledDesc": "在上方啟用 A2A 後即可檢視任務遙測、代理詳情與校驗工具。", + "a2aIntro": "Agent2Agent JSON-RPC 2.0 端點 — 傳送任務、流式響應、取消執行中的任務。", + "a2aStep1": "在 {code} 處發現代理卡片。", + "a2aStep2": "向 {code1} 傳送 JSON-RPC,使用 {code2} 或 {code3}。", + "a2aStep3": "使用 {code1} 和 {code2} 跟蹤並取消任務。" + }, + "memory": { + "a": "A", + "actions": "操作", + "addMemory": "新增記憶", + "allTypes": "全部型別", + "cancel": "取消", + "checkHealth": "檢查健康狀況", + "checkingHealth": "正在檢查...", + "compactOld": "緊湊舊版", + "concept": { + "title": "對話記憶", + "description": "OmniRoute 從每次對話中學習,記住事實、事件、程式和語義概念,使響應更加準確和上下文感知。", + "howWorksToggle": "它是如何工作的", + "howWorksContent": "1. 自動提取:在每個響應結束時,事實和事件會被自動檢測並儲存。\n2. 檢索:在每個響應之前,通過FTS5(精確)、向量(語義)或混合RRF搜尋最相關的記憶。\n3. 注入:相關記憶被注入到助手上下文中,以提高響應質量。\n4. 管理:使用此頁面檢視、編輯、匯出和壓縮舊記憶。" + }, + "content": "內容", + "contentPlaceholder": "要記住的值或 JSON 內容", + "created": "建立時間", + "delete": "刪除", + "deleteConfirmDesc": "此操作無法撤銷。記憶體將被永久刪除。", + "deleteConfirmTitle": "刪除記憶體?", + "description": "檢視並管理已儲存的記憶條目", + "editMemory": "編輯記憶體", + "editModal": { + "title": "編輯記憶體", + "metadataLabel": "後設資料 (JSON)", + "metadataInvalid": "無效的 JSON", + "saveFailed": "儲存記憶體失敗" + }, + "embedding": { + "autoLabel": "自動", + "autoDesc": "使用最佳可用選項:遠端提供者 > 靜態 > 轉換器", + "remoteLabel": "遠端提供者", + "remoteDesc": "通過提供者 API 使用嵌入(需要 API 金鑰)", + "staticLabel": "靜態本地(藥水)", + "staticDesc": "不使用WASM或外部依賴的本地嵌入", + "transformersLabel": "Transformers.js (MiniLM)", + "transformersDesc": "通過 @huggingface/transformers 本地嵌入 (~400MB RAM)", + "providerModelLabel": "提供者 / 模型", + "noRemoteProviders": "沒有配置 API 金鑰的提供者", + "selectProviderModel": "選擇一個模型", + "staticEnabledLabel": "啟用靜態藥水", + "staticEnabledDesc": "在本地下載並使用 potion-base-8M 模型", + "transformersEnabledLabel": "啟用 Transformers.js", + "transformersEnabledDesc": "選擇本地 MiniLM(約 400MB RAM,約 3 秒冷啟動)", + "transformersWarning": "需要約400MB記憶體,並在第一次語義查詢時冷啟動約3秒。" + }, + "emptyState": { + "title": "還沒有記憶", + "description": "記憶是從對話中自動建立的。您也可以使用上面的按鈕手動新增它們。" + }, + "engine": { + "statusTitle": "引擎狀態", + "embeddingTitle": "嵌入源", + "rerankTitle": "重新排序(可選)", + "reindexNow": "立即重新索引", + "reindexStarted": "重新索引已開始({pending} 個待處理)", + "reindexFailed": "重新索引啟動失敗", + "keywordLabel": "關鍵字 (FTS5)", + "keywordReason": "關鍵字搜尋始終可用", + "embeddingLabel": "嵌入", + "vectorStoreLabel": "向量儲存", + "qdrantLabel": "Qdrant", + "rerankLabel": "重新排序", + "qdrantDisabled": "停用", + "qdrantOk": "健康 ({latencyMs}ms)", + "qdrantError": "連線錯誤", + "needsReindex": "{count} 個記憶體需要重新索引", + "configureCta": "配置", + "vectorStoreInstallHint": "要啟用向量搜尋:npm install sqlite-vec(需要本地 Node.js,而不是 WASM),然後重啟。" + }, + "episodic": "情景型", + "export": "匯出", + "factual": "事實型", + "healthUnknown": "健康狀況不明", + "hitRate": "命中率", + "import": "匯入", + "importError": "匯入檔案失敗", + "importResult": "{imported} 匯入, {skipped} 跳過", + "key": "鍵", + "keyPlaceholder": "例如使用者偏好主題", + "loading": "正在載入記憶...", + "memories": "記憶", + "next": "下一步", + "noMemories": "未找到記憶條目", + "pageInfo": "第 {page} 頁,共 {totalPages}(共 {total})", + "pipelineError": "管道錯誤", + "pipelineOk": "管道正常 ({latencyMs}ms)", + "playground": { + "infoTitle": "記憶體遊樂場", + "infoDesc": "模擬將為給定查詢檢索到的內容。沒有修改任何記憶 — 只讀預覽。", + "queryLabel": "測試查詢", + "queryPlaceholder": "輸入問題或測試短語...", + "strategyLabel": "策略", + "strategyExact": "精確 (FTS5)", + "strategySemantic": "語義(向量)", + "strategyHybrid": "混合 (RRF)", + "budgetLabel": "預算(代幣)", + "simulate": "模擬", + "resultsTitle": "{count} 個結果", + "resolutionTitle": "搜尋解析度", + "resolutionEmbedding": "嵌入", + "resolutionStore": "向量儲存", + "resolutionStrategy": "使用的策略", + "rerankApplied": "重新排序已應用", + "fallback": "後備", + "noResults": "未找到與此查詢相關的記憶。", + "tokensUsed": "已使用的令牌", + "none": "無", + "errorFetch": "獲取預覽失敗" + }, + "previous": "上一頁", + "procedural": "程式型", + "qdrant": { + "title": "Qdrant(向量儲存 Tier 2)", + "description": "可選的 Qdrant 整合用於可擴充套件的語義搜尋", + "enableLabel": "啟用 Qdrant", + "enableDesc": "啟用後,Qdrant 將作為主要向量儲存使用", + "banner": "__MISSING__: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": "__MISSING__:Local Docker: http://localhost:6333 · Qdrant Cloud: your cluster URL", + "collectionHelp": "__MISSING__:Any name — OmniRoute creates it on first use", + "embeddingModelHelp": "__MISSING__: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.", + "testConnection": "測試連線", + "testing": "測試中...", + "statusActive": "活動", + "statusError": "錯誤", + "statusDisabled": "停用", + "healthOk": "連線正常 ({latencyMs}ms)", + "healthError": "連線錯誤", + "saved": "設定已儲存", + "saveError": "儲存失敗", + "portLabel": "埠", + "embeddingModelLabel": "嵌入模型", + "optional": "可選", + "apiKeyKeepPlaceholder": "留空以保持當前金鑰", + "apiKeyOptional": "如果不使用身份驗證,請留空", + "removeApiKey": "移除", + "quickSelectModel": "快速選擇", + "searchTestTitle": "語義搜尋測試", + "searchPlaceholder": "輸入測試查詢...", + "searching": "搜尋中...", + "search": "搜尋", + "cleanupTitle": "清理舊積分", + "cleanupDesc": "刪除過期記憶(保留期)的 Qdrant 點。", + "cleaning": "清理中...", + "cleanNow": "立即清理", + "cleanupSuccess": "已移除 {count} 點數", + "cleanupFailed": "清理失敗" + }, + "rerank": { + "enableLabel": "啟用重新排序", + "enableDesc": "在搜尋後使用重新排序模型對結果進行重新排序", + "warning": "Rerank 會增加 +200-500ms 的延遲和每個請求的額外成本。請謹慎使用。", + "providerModelLabel": "重新排序提供者 / 模型", + "noProviderWithKey": "沒有配置 API 金鑰的提供者。請配置一個提供者以使用 rerank。", + "selectProviderModel": "選擇一個提供者/模型" + }, + "save": "儲存", + "saving": "儲存中...", + "search": "搜尋記憶...", + "semantic": "語義型", + "summarize": { + "title": "壓縮舊記憶", + "noCandidates": "沒有符合壓縮條件的記憶(標準:超過30天)。", + "candidatesDesc": "{count} 個記憶將被壓縮為摘要。此操作無法撤銷。", + "confirm": "立即緊湊" + }, + "tabs": { + "memories": "記憶", + "playground": "遊樂場", + "engine": "引擎" + }, + "title": "記憶管理", + "tokensUsed": "已用 Tokens", + "tooltip": { + "totalEntries": "此 API 金鑰儲存的總記憶數", + "tokensUsed": "活動記憶佔用的估計總令牌數", + "hitRate": "按 ID 讀取的快取命中率(不是語義回憶準確性)", + "factual": "使用者上下文中的客觀、永久性事實", + "episodic": "對話歷史中的事件和經歷", + "procedural": "助手應遵循的程式、工作流程和指令", + "semantic": "概念、偏好和領域知識" + }, + "totalEntries": "總條目數", + "type": "型別", + "memoryEnabled": "記憶體已啟用" + }, + "skills": { + "title": "技能", + "description": "管理並監控 AI 技能", + "skillsTab": "技能", + "executionsTab": "執行記錄", + "sandboxTab": "沙箱", + "loading": "正在載入技能...", + "noSkills": "未找到技能", + "noExecutions": "未找到執行記錄", + "enabled": "已啟用", + "disabled": "已停用", + "delete": "__MISSING__:Delete", + "version": "版本", + "tableDescription": "說明", + "skill": "技能", + "status": "狀態", + "duration": "耗時", + "time": "時間", + "sandboxConfig": "沙箱配置", + "cpuLimit": "CPU 限制", + "cpuLimitDesc": "單個技能允許的最長執行時間", + "memoryLimit": "記憶體限制", + "memoryLimitDesc": "允許分配的最大記憶體", + "timeout": "超時", + "timeoutDesc": "等待響應的最長時間", + "networkAccess": "網路訪問", + "networkAccessDesc": "允許發起出站網路請求", + "mode": "模式", + "q": "問", + "filterSkillsPlaceholder": "按名稱、描述或標籤過濾技能", + "allModes": "所有模式", + "totalSkills": "技能總數", + "enabledSkills": "已啟用", + "totalExecutions": "執行次數", + "successRate": "成功率", + "marketplaceTab": "市場", + "applyFilters": "應用篩選", + "popularDefaultsLabel": "所選提供商的預設熱門技能:", + "onMode": "開", + "offMode": "關", + "autoMode": "自動", + "installSkillButton": "安裝技能", + "installSkillModalTitle": "安裝技能", + "installJsonPlaceholder": "在此貼上技能清單 JSON...", + "installing": "正在安裝...", + "installSuccess": "技能已安裝({id})", + "installError": "安裝失敗", + "invalidJson": "無效的 JSON", + "searchMarketplacePlaceholder": "搜尋技能...", + "searchMarketplace": "搜尋市場", + "marketplaceEmpty": "市場中未找到技能", + "marketplaceError": "搜尋失敗", + "installingFromMarketplace": "正在從市場安裝...", + "popularSkills": "熱門技能", + "skillsMarketplace": "技能市場", + "searching": "正在搜尋...", + "pageInfo": "第 {page} / {totalPages} 頁(共 {total} 條)", + "previous": "上一頁", + "next": "下一頁", + "activeProvider": "當前提供商:", + "changeInSettings": "可在 設定 → 記憶與技能 中修改。", + "installs": "安裝", + "marketplaceSkillsMpHint": "請在設定中配置 SkillsMP API 金鑰以瀏覽市場。", + "marketplaceSkillsShHint": "搜尋 skills.sh 公開目錄以發現並安裝代理技能。", + "installSkillModalDesc": "貼上技能清單 JSON 或上傳 .json 檔案。", + "uploadJson": "上傳 JSON", + "cancel": "取消", + "installSkill": "安裝技巧" + }, + "health": { + "title": "系統健康狀況", + "description": "即時監控您的 OmniRoute 例項", + "healthy": "健康", + "degraded": "降級", + "down": "下線", + "uptime": "正常執行時間", + "memory": "記憶體", + "memoryRss": "記憶體(RSS)", + "heap": "堆", + "cpu": "CPU", + "database": "資料庫", + "version": "版本", + "lastCheck": "最後檢查", + "providerHealth": "提供商健康", + "systemMetrics": "系統指標", + "tokenHealth": "令牌健康", + "refreshAll": "全部重新整理", + "checkNow": "立即檢視", + "loadingHealth": "正在載入健康資料...", + "failedToLoad": "無法載入健康資料:{error}", + "retry": "重試", + "allOperational": "所有系統均可執行", + "issuesDetected": "檢測到系統問題", + "updatedAt": "更新了 {time}", + "latency": "延遲", + "latencyP50": "p50", + "latencyP95": "p95", + "latencyP99": "p99", + "millisecondsShort": "{value} 毫秒", + "notAvailable": "—", + "totalRequests": "請求總數", + "noDataYet": "還沒有資料", + "promptCache": "提示快取", + "entries": "條目", + "hitRate": "命中率", + "hitsMisses": "命中/未命中", + "signatureCache": "簽名快取", + "signatureDefaults": "預設值", + "signatureTool": "工具", + "signatureFamily": "家庭", + "signatureSession": "會話", + "recovering": "正在恢復中", + "noCBData": "當前沒有可用的斷路器資料,請先發起一些請求。", + "providerHealthStatusAria": "提供商健康狀況", + "issuesLabel": "檢測到的問題", + "operational": "執行中", + "providers": "提供商", + "configuredProvidersLabel": "在儀表板中配置", + "configuredProvidersHint": "指已在 /dashboard/providers 中配置憑證的提供商,無論當前執行時狀態如何。", + "activeProviders": "{count} 個活躍", + "activeProvidersHint": "指當前已啟用並可參與請求路由的已配置提供商。", + "monitoredProviders": "{count} 個監控中", + "monitoredProvidersHint": "指當前由斷路器健康監控器持續跟蹤的提供商。", + "healthyCount": "{count} 健康", + "nodeVersion": "節點 {version}", + "failures": "{count} 失敗", + "failuresPlural": "{count} 失敗", + "lastFailure": "最近一次", + "rateLimitStatus": "速率限制狀態", + "activeLimiters": "{count} 主動限制器", + "activeLimitersPlural": "{count} 主動限制器", + "queued": "排隊中", + "queuedCount": "{count} 已排隊", + "running": "執行中", + "runningCount": "{count} 正在執行", + "ok": "正常", + "activeLockouts": "主動鎖定", + "resetConfirm": "將所有斷路器重置為正常狀態?這將清除所有故障計數並將所有提供商恢復到執行狀態。", + "resetAllTitle": "將所有斷路器重置為正常狀態", + "resetting": "正在重置...", + "resetAll": "全部重置", + "until": "直到 {time}", + "limitExhausted": "已耗盡", + "learnedFromHeaders": "從響應頭學習", + "remainingOfLimit": "剩餘 {remaining}/{limit}", + "throttleStatus": "限流:{value}", + "lastHeaderUpdate": "響應頭更新:{age}", + "databaseHealth": "資料庫健康狀況", + "stickyBoundSessions": "粘性繫結會話", + "sessionsByApiKey": "按 API 金鑰進行的會話", + "noActiveSessionsTracked": "尚未跟蹤任何活動會話。", + "noSessionQuotaMonitorsActive": "沒有活動的會話配額監視器。", + "gracefulDegradationStatus": "優雅降級狀態", + "additionalModels": "+{count} 更多型號", + "providerHealthMatrixTitle": "提供商健康矩陣", + "providerHealthMatrixDescription": "來自熔斷器、冷卻、鎖定和日誌的提供商 × 帳戶 × 模型狀態。", + "healthMatrixRange": "健康矩陣時間範圍", + "providerFilter": "提供商篩選", + "onlyIssues": "僅顯示問題", + "refresh": "重新整理", + "accounts": "帳戶", + "models": "模型", + "issues": "問題", + "loadingProviderHealthMatrix": "正在載入提供商健康矩陣...", + "failedProviderHealthMatrix": "載入提供商健康矩陣失敗:{error}", + "noProvidersMatchedFilters": "沒有提供商匹配當前篩選條件。", + "modelPillSummary": "{requests} 請求 · {successRate} 成功率 · {latency} 平均延遲", + "modelLockoutSummary": "{reason} · 剩餘 {duration}", + "locked": "已鎖定", + "inferred": "推斷", + "inactive": "不活躍", + "noConnectionId": "無連線 ID", + "accountModelSummary": "{connectionId} · {count} 個模型", + "cooldown": "冷卻中", + "durationRemaining": "剩餘 {duration}", + "noSyncedModelsOrTraffic": "暫無同步模型或近期流量。", + "providerRowSummary": "{active}/{total} 活躍帳戶 · {requests} 請求 · {successRate} 成功率 · {latency} 平均延遲", + "cooldownCount": "{count} 個冷卻中", + "lockoutCount": "{count} 個鎖定", + "issueCount": "{count} 個問題", + "score": "評分", + "lastRequest": "最近請求", + "lastError": "最近錯誤" + }, + "telemetry": { + "title": "系統遙測", + "description": "來自此 OmniRoute 程序的滾動請求、執行時、會話和記憶體訊號。", + "uptime": "執行時間", + "totalRequests": "請求總數", + "avgLatency": "平均延遲", + "errorRate": "錯誤率", + "activeConnections": "活動連線", + "memoryUsage": "記憶體使用", + "latencyTrend": "延遲趨勢", + "throughputTrend": "吞吐趨勢", + "memoryTrend": "記憶體趨勢", + "refresh": "重新整理", + "updatedAt": "更新於 {time}", + "loadFailed": "載入遙測失敗。", + "partialData": "遙測資料部分可用:{error}" + }, + "mitm": { + "title": "MITM 代理", + "description": "用於攔截和路由客戶端請求的透明代理。", + "enable": "啟用 MITM 代理", + "enableDesc": "啟動或停止本地攔截程序和 DNS 覆蓋。", + "status": "狀態", + "running": "執行中", + "stopped": "已停止", + "start": "啟動", + "stop": "停止", + "refresh": "重新整理", + "port": "代理埠", + "apiKey": "路由器 API 金鑰", + "apiKeyPlaceholder": "可選;留空則回退到本地金鑰", + "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 證書", + "regenerateCert": "重新生成證書", + "regenerateConfirm": "這會使現有客戶端信任失效。要繼續嗎?", + "regenerateSuccess": "MITM 證書已重新生成。", + "regenerateFailed": "重新生成 MITM 證書失敗。", + "targetRoutes": "目標路由", + "interceptedRequests": "已攔截請求", + "activeConnections": "活動連線", + "dnsConfigured": "DNS 已配置", + "pid": "PID", + "lastIntercept": "上次攔截", + "target": "目標", + "host": "主機", + "localPort": "本地埠", + "endpoints": "端點", + "enabled": "已啟用", + "configured": "已配置", + "yes": "是", + "no": "否", + "noTargets": "未配置目標路由。" + }, + "limits": { + "title": "限制和配額", + "rateLimit": "速率限制", + "remaining": "剩餘", + "requestsPerMinute": "請求/分鐘", + "tokensPerMinute": "Tokens/分鐘", + "dailyLimit": "每日限額" + }, + "logs": { + "title": "日誌", + "requestLogs": "請求日誌", + "proxyLogs": "代理日誌", + "auditLog": "稽核日誌", + "console": "控制台", + "auditLogDesc": "行政行為和安全事件", + "loading": "正在載入...", + "refresh": "重新整理", + "filterByAction": "按操作過濾...", + "filterByActor": "按操作人篩選...", + "filterEntriesAria": "過濾稽核日誌條目", + "filterByActionTypeAria": "按操作型別過濾", + "filterByActorAria": "按操作人篩選", + "refreshAuditLogAria": "重新整理稽核日誌", + "tableAria": "稽核日誌條目", + "failedFetchAuditLog": "無法獲取稽核日誌", + "showing": "顯示 {count} 條目(偏移量 {offset})", + "search": "搜尋", + "timestamp": "時間戳", + "action": "操作", + "actor": "操作人", + "target": "目標", + "details": "詳情", + "ipAddress": "IP地址", + "notAvailable": "—", + "noEntries": "未找到稽核日誌條目", + "previous": "上一頁", + "next": "下一頁", + "providerWarningTitle": "提供商警告", + "viewDetails": "檢視詳情", + "eventMetadata": "事件後設資料", + "eventPayload": "事件負載", + "requestId": "請求 ID", + "providerWarningDesc": "上游提供商返回了警告。請檢視詳情以瞭解更多資訊。", + "a": "A", + "offset": "偏移量", + "limit": "限制", + "status": "狀態", + "resourceType": "資源型別", + "totalEntries": "總條目數", + "tab": "標籤頁", + "auditModalSubtitle": "審計詳情", + "close": "關閉", + "runningRequests": "活躍請求", + "runningRequestsDesc": "當前正在執行的上游請求即時檢視", + "clearAll": "全部清除", + "confirmClearActiveRequests": "清除所有活躍請求?", + "model": "模型", + "provider": "提供商", + "account": "帳戶", + "elapsed": "已耗時", + "activeStage": "階段", + "activeStageUnknown": "尚未傳送到上游", + "activeStageRegistered": "已註冊", + "activeStagePayloadPrepared": "負載已準備", + "activeStageWaitingAccountSlot": "等待帳戶槽位", + "activeStageWaitingRateLimit": "等待速率限制器", + "activeStageRateLimitSlotAcquired": "已獲取速率限制槽位", + "activeStageSendingToProvider": "正在傳送到上游", + "activeStageProviderResponseStarted": "上游響應已開始", + "count": "數量", + "payloads": "Payload", + "viewPayloads": "檢視", + "activeCount": "{count} 個活躍", + "clientPayload": "客戶端請求載荷", + "upstreamPayload": "上游提供商載荷", + "upstreamNotSentYet": "尚未傳送到上游", + "runningRequestDetailMeta": "Account:{account} — 已耗時:{elapsed}", + "export": "匯出", + "exporting": "正在匯出...", + "exportFailed": "匯出失敗", + "cleanHistoryButton": "__MISSING__:Clean history", + "cleanHistoryTitle": "__MISSING__:Clean log history?", + "cleanHistoryMessage": "__MISSING__:This permanently clears all request log rows, legacy detail rows, and local artifact files under DATA_DIR/call_logs. The live page will refresh after cleanup.", + "cleanHistoryConfirm": "__MISSING__:Clean history", + "cleanHistoryCancel": "__MISSING__:Cancel", + "cleanHistorySuccess": "__MISSING__:Cleaned {deleted} log entries, {deletedArtifacts} artifacts, and {deletedDetailedLogs} legacy detail rows.", + "cleanHistoryEmpty": "__MISSING__:No request log history was found.", + "cleanHistoryFailed": "__MISSING__:Failed to clean log history.", + "timeRange": "時間範圍", + "lastNHours": "最近 {hours} 小時", + "defaultRange": "預設", + "consoleViewer": { + "fetchFailed": "獲取日誌失敗", + "copyFailed": "複製日誌條目失敗", + "copyLogEntry": "複製日誌條目" + }, + "compressionLogTitle": "壓縮日誌", + "compressionLogEmpty": "尚未有壓縮請求。啟用壓縮處理請求時,壓縮統計資訊將出現在此處。", + "tokens": "令牌" + }, + "onboarding": { + "welcome": "歡迎", + "tiers": "__MISSING__:Tiers", + "security": "安全", + "test": "測試", + "ready": "準備好了!", + "setPassword": "設定密碼", + "addProvider": "新增您的第一個提供商", + "getStarted": "開始使用", + "skip": "跳過", + "skipWizard": "完全跳過嚮導", + "skipPassword": "跳過密碼設定", + "skipAndContinue": "跳過並繼續", + "passwordLabel": "密碼", + "confirmPassword": "確認密碼", + "enterPassword": "輸入密碼", + "confirmPasswordPlaceholder": "確認密碼", + "passwordsMismatch": "密碼不匹配", + "setupComplete": "設定完成!", + "goToDashboard": "轉到儀表板→", + "welcomeDesc": "OmniRoute 是您的本地 AI API 代理。它通過負載均衡、故障轉移和使用情況跟蹤將請求路由到多個 AI 提供商。", + "multiProvider": "多提供商", + "usageTracking": "使用情況追蹤", + "securityDesc": "設定密碼以保護您的儀表板,或暫時跳過。", + "providerDesc": "連線你的第一個 AI 提供商。你之後還可以繼續新增。", + "apiKeyRequired": "API 金鑰(必填)", + "customUrlOptional": "自定義 URL(可選)", + "testDesc": "讓我們驗證您的提供商連線是否有效。", + "runTest": "執行連線測試", + "testingConnection": "測試連線...", + "connectionSuccessful": "連線成功!您的提供商已準備就緒。", + "noProviderFound": "未找到提供商。您可以稍後從儀表板新增一個。", + "testFailed": "測試失敗,但您可以稍後配置。", + "couldNotTest": "現在無法測試。您可以從儀表板進行測試。", + "doneDesc": "你都準備好了!您的 OmniRoute 例項已配置並準備好代理 AI 請求。", + "yourEndpoint": "您的端點:", + "continue": "繼續", + "retry": "重試", + "failedSetPassword": "設定密碼失敗。再試一次。", + "failedAddProvider": "新增提供商失敗。再試一次。", + "connectionError": "連線錯誤。請再試一次。", + "provider": "提供商", + "apiKeyHelp": "API金鑰是AI服務的密碼。從提供商的網站(例如 platform.openai.com、console.anthropic.com)獲取一個。", + "tier": { + "subtitle": "OmniRoute 將提供商組織為三層,因此路由首先優先選擇最可靠、成本最低的路徑。", + "tier1": { + "label": "優質客戶", + "description": "具有本機身份驗證流程和推理模型的一流 CLI。" + }, + "tier2": { + "label": "成本最佳化", + "description": "用於日常流量的廉價、高吞吐量提供商。" + }, + "tier3": { + "label": "後備和專業", + "description": "本地託管或專用端點用作後備。" + }, + "configure": "配置提供商" + }, + "tierFlowDiagramAlt": "OmniRoute 3 層回退圖", + "apiKeyMgmt": "API金鑰管理" + }, + "providers": { + "title": "提供商", + "Account Deactivated": "帳戶已停用", + "allProviders": "所有提供商", + "audioProviders": "音訊提供商", + "showFreeOnly": "僅顯示免費", + "addProvider": "新增提供商", + "addFirstProvider": "新增您的第一個提供商", + "addFirstProviderDesc": "連線 AI 提供商以開始通過 OmniRoute 路由請求。您可以使用免費提供商、API 金鑰或 OAuth 帳戶。", + "learnMore": "瞭解更多", + "adaptaTutorial": { + "title": "__MISSING__:How to connect Adapta Web", + "introPrefix": "__MISSING__:Adapta authenticates through Clerk. The token", + "introSuffix": "__MISSING__:is a long-lived JWT that lets OmniRoute refresh sessions automatically.", + "or": "__MISSING__:or", + "step1Title": "__MISSING__:Open Adapta chat", + "step1DescPrefix": "__MISSING__:Open", + "step1DescSuffix": "__MISSING__:and sign in with your Gold or Business account.", + "step2Title": "__MISSING__:Open DevTools", + "step2DescPrefix": "__MISSING__:Press", + "step2DescSuffix": "__MISSING__:to open Developer Tools.", + "step3Title": "__MISSING__:Go to Application → Cookies", + "step3DescPrefix": "__MISSING__:In the", + "step3DescMiddle": "__MISSING__:expand", + "step3DescSuffix": "__MISSING__:and click", + "step4Title": "__MISSING__:Copy the cookie value for", + "step4DescPrefix": "__MISSING__:Find the cookie named", + "step4DescMiddle": "__MISSING__:in the list. Click it and copy the content from the", + "step4DescSuffix": "__MISSING__:column. It starts with", + "step5Title": "__MISSING__:Paste it here and save", + "step5DescPrefix": "__MISSING__:Click", + "step5DescMiddle": "__MISSING__:paste the", + "step5DescSuffix": "__MISSING__:value into the API Key field, then save. OmniRoute will refresh the session automatically.", + "tipLabel": "__MISSING__:Tip:", + "tipPrefix": "__MISSING__:The", + "tipSuffix": "__MISSING__:cookie is long-lived, usually for months. You only need to renew it if you sign out or Adapta invalidates the session." + }, + "editProvider": "編輯提供商", + "deleteProvider": "刪除提供商", + "noProviders": "沒有配置提供商", + "modelAvailability": "模型可用性", + "accounts": "帳戶", + "newAccount": "新帳戶", + "deleteConfirm": "您確定要刪除該提供商嗎?", + "testing": "測試...", + "testConnection": "測試連線", + "testSuccess": "連線成功", + "testFailed": "連線失敗", + "available": "可用", + "cooldown": "冷卻時間", + "unavailable": "不可用", + "unknown": "未知", + "oauthLabel": "OAuth", + "compatibleLabel": "相容", + "chat": "聊天", + "responses": "回應", + "messages": "留言", + "oauthProviders": "OAuth 提供商", + "freeProviders": "免費提供商", + "apiKeyProviders": "API 金鑰提供商", + "compatibleProviders": "API 金鑰相容提供商", + "testAll": "測試全部", + "distributeProxies": "分配代理", + "distributing": "分配中...", + "selectedCount": "已選 {count} 個", + "accountsCount": "{count} 個帳戶", + "testAllOAuth": "測試所有 OAuth 連線", + "testAllFree": "測試所有免費連線", + "testAllApiKey": "測試所有 API 金鑰連線", + "testAllCompatible": "測試所有相容連線", + "testAllModels": "測試所有模型", + "testAllModelsConfirm": "測試所有可見模型?如果啟用了自動隱藏,失敗的模型將被隱藏。", + "testingAllModels": "測試中 {done}/{total}...", + "testAllResults": "{total} 個模型中 {ok} 個可用", + "noModelsToTest": "沒有模型匹配當前篩選條件", + "showAllModels": "全部", + "showVisibleOnly": "僅可見", + "freeFilterAll": "全部", + "freeFilterFreeOnly": "僅免費", + "freeFilterPaidOnly": "僅付費", + "sortFreeFirst": "__MISSING__:Free first", + "showHiddenOnly": "僅隱藏", + "filterByVisibility": "按可見性篩選", + "autoHideFailed": "自動隱藏失敗模型", + "autoHideFailedHint": "啟用後,測試全部會把非臨時失敗的模型從 /v1/models 等公共目錄中隱藏。單模型測試永遠不會自動隱藏。", + "connected": "{count} 已連線", + "errorCount": "{count} 錯誤 ({code})", + "errorCountNoCode": "{count} 錯誤", + "testAllCompleted": "已測試 {total} 個模型:{ok} 個通過,{failed} 個失敗", + "modelAutoHidden": "模型 {model} 已自動隱藏(測試失敗)", + "filterAll": "全部", + "filterVisible": "僅可見", + "filterHidden": "僅隱藏", + "modelsHiddenCount": "已隱藏 {count} 個", + "warningCount": "{count} 警告", + "noConnections": "無連線", + "expiredBadge": "已過期", + "expiringSoonBadge": "即將過期", + "freeTier": "免費額度", + "freeTierAvailable": "有免費額度", + "hasFreeTooltip": "提供免費層", + "noAuthLabel": "免鑑權", + "noAuthProviders": "免鑑權提供商", + "upstreamProxyLabel": "上游代理", + "freeAggregated": "所有提供免費層的提供商(同時也會顯示在各自的原生分類中)", + "deprecated": "已棄用", + "deprecatedProvider": "此提供商已棄用", + "riskNotice": { + "title": "繼續之前", + "tooltip": "該提供商有使用注意事項 —— 點選檢視詳情", + "oauth": "此提供商使用你官方產品的會話 / OAuth,這並未被授權用於代理或路由用途。 不建議進行高強度的自主代理使用(OpenCloud 風格、長鏈路多步流程、大批次請求)—— 上游可能因此限制甚至封禁帳號。 使用風險自負。", + "webCookie": "此提供商通過你的網頁會話 Cookie 進行鑑權。上游服務可能隨時讓會話失效,屆時你需要重新登入。不建議用於長時間無人值守的操作。 使用風險自負。", + "deprecated": "此提供商已被上游下線,可能隨時停止工作。已存在的連線可能在上游完全關閉訪問前繼續可用。建議考慮替代方案。", + "dontShowAgain": "對此提供商不再顯示此提示", + "understand": "我已瞭解,繼續", + "cancel": "取消" + }, + "disabled": "已停用", + "enableProvider": "啟用提供商", + "disableProvider": "停用提供商", + "testResults": "測試結果", + "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 連線", + "oauth2Label": "OAuth2", + "oauth2Desc": "使用 OAuth2 身份驗證連線您的帳戶。", + "displayName": "顯示名稱", + "displayNamePlaceholder": "例如,生產 API、開發環境", + "displayNameHint": "可選。用於標識此配置的友好名稱。", + "active": "活躍", + "activeDescription": "啟用此提供商以在您的應用程式中使用", + "cancel": "取消", + "createProvider": "建立提供商", + "failedCreate": "建立提供商失敗", + "errorOccurred": "發生錯誤。請再試一次。", + "modelStatus": "模型狀態", + "showConfiguredOnly": "僅顯示已配置", + "allModelsOperational": "所有模型執行正常", + "modelsWithIssues": "{count} 有問題的模型", + "allModelsNormal": "所有模型當前響應正常。", + "cooldownCleared": "{model} 的冷卻時間已清除", + "failedClearCooldown": "無法清除冷卻時間", + "loadingAvailability": "正在載入模型可用性...", + "clearCooldown": "清除", + "clearing": "清算...", + "until": "直到 {time}", + "providerTestFailed": "提供商測試失敗", + "providerTestTimeout": "提供商測試超時,可能是同時測試的連線過多", + "modeTest": "{mode} 測試", + "passedCount": "{count} 通過", + "failedCount": "{count} 失敗", + "testedCount": "{count} 已測試", + "millisecondsAbbr": "{value} 毫秒", + "okShort": "好的", + "errorShort": "錯誤", + "noActiveConnectionsInGroup": "未找到該組的活動連線。", + "allTestsPassed": "所有 {total} 測試均已通過", + "testSummary": "{passed}/{total} 通過,{failed} 失敗", + "nameLabel": "名稱", + "prefixLabel": "字首", + "baseUrlLabel": "基礎 URL", + "apiTypeLabel": "API 型別", + "prefixHint": "必填。模型名稱使用的唯一字首。", + "nameHint": "必填。該節點的友好標籤。", + "baseUrlHint": "必填。 提供商 API 基本 URL。", + "iconUrlLabel": "__MISSING__:Icon URL", + "iconUrlHint": "__MISSING__:Optional. Image URL shown as this provider's icon.", + "anthropicPrefixPlaceholder": "ac-prod", + "openaiPrefixPlaceholder": "oc-prod", + "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", + "openaiBaseUrlPlaceholder": "https://api.openai.com/v1", + "validateConnection": "驗證連線", + "validating": "正在驗證...", + "connectionValid": "連線有效!", + "connectionFailed": "連線失敗。檢查 URL 和金鑰。", + "testKeyLabel": "測試 API 金鑰", + "testKeyPlaceholder": "sk-...(僅用於驗證)", + "providerNotFound": "未找到提供商", + "deleteConnectionConfirm": "刪除這個連線嗎?", + "batchDeleteSelected": "刪除選中({count})", + "batchDeleteConfirm": "刪除 {count} 個連線?此操作無法撤銷。", + "batchDeleteSuccess": "已刪除 {count} 個連線", + "batchActivateSelected": "批次啟用", + "batchDeactivateSelected": "批次停用", + "batchRetestSelected": "批次測試", + "batchActivateSuccess": "已啟用 {count} 個連線", + "batchDeactivateSuccess": "已停用 {count} 個連線", + "batchUpdatePartial": "__MISSING__:{count} updated, {skipped} skipped (no longer exist)", + "batchUpdateNone": "__MISSING__:No connections were updated (they may no longer exist)", + "batchRetestLimit": "__MISSING__:Retest up to {max} connections at a time", + "noConnectionsToTest": "__MISSING__:No matching connections to test", + "batchDeleteConfirmTitle": "刪除連線", + "batchDeleteConfirmButton": "刪除", + "filterActive": "健康", + "filterError": "錯誤", + "filterBanned": "封禁", + "filterCreditsExhausted": "額度耗盡", + "noFilteredConnections": "沒有符合當前篩選條件的連線。", + "failedSetAlias": "設定別名失敗", + "setAliasSuccess": "別名 {alias} 已設定", + "deleteAliasSuccess": "別名 {alias} 已刪除", + "failedSaveConnection": "儲存連線失敗", + "failedSaveConnectionRetry": "無法儲存連線。請再試一次。", + "failedRetestConnection": "重新測試連線失敗", + "deleteCompatibleNodeConfirm": "刪除此 {type} 相容節點?", + "anthropicCompatibleDetails": "Anthropic 相容詳情", + "openaiCompatibleDetails": "OpenAI 相容詳情", + "messagesApi": "Messages API", + "responsesApi": "Responses API", + "embeddings": "嵌入", + "audioTranscriptions": "音訊轉寫", + "audioSpeech": "語音合成", + "imagesGenerations": "影像生成", + "chatCompletions": "聊天完成", + "importingModels": "正在匯入...", + "importFromModels": "從 /models 匯入", + "modelsImported": "已匯入 {count} 個模型", + "allModelsAlreadyImported": "所有模型已匯入", + "noNewModelsToImport": "沒有新模型可匯入 — 所有模型已在登錄檔或自定義模型列表中", + "skippingExistingModels": "跳過 {count} 個已有模型", + "autoSync": "自動同步", + "autoSyncTooltip": "每 24 小時自動重新整理模型列表(可通過 MODEL_SYNC_INTERVAL_HOURS 配置)", + "autoSyncEnabled": "自動同步已啟用 — 模型將定期重新整理", + "autoSyncDisabled": "自動同步已停用", + "autoSyncToggleFailed": "切換自動同步失敗", + "clearAllModels": "清除所有模型", + "clearAllModelsConfirm": "您確定要刪除此提供商的所有模型嗎?", + "clearAllModelsSuccess": "所有模型已清除", + "clearAllModelsFailed": "清除模型失敗", + "addConnectionToImport": "新增連線以啟用匯入。", + "noModelsConfigured": "尚未配置模型", + "connectionCount": "{count} 連線", + "fetchingModels": "正在獲取可用模型...", + "failedFetchModels": "獲取模型失敗", + "noFreeModelsFound": "__MISSING__:No free models found for this provider — nothing imported.", + "fetchModelsSuccess": "找到 {count} 個新模型", + "fetchModelsFailed": "無法自動獲取模型(可從設定中重試)", + "noModelsFound": "未找到模型", + "importFailed": "匯入失敗", + "noNewModelsAdded": "沒有新增新模型。", + "adding": "新增...", + "close": "關閉", + "importingModelsTitle": "匯入模型", + "copyModel": "複製模型", + "filterModels": "篩選模型…", + "testAllRateLimited": "達到速率限制,已提前停止", + "hideFailedAuto": "自動隱藏失敗模型", + "selectAllModels": "全選", + "hideAllModels": "全部隱藏", + "modelsActive": "已啟用", + "showModel": "顯示模型", + "hideModel": "隱藏模型", + "removeModel": "刪除模型", + "rateLimitProtected": "受保護", + "rateLimitUnprotected": "無保護", + "enableRateLimitProtection": "單擊啟用速率限制保護", + "disableRateLimitProtection": "單擊以停用速率限制保護", + "testAllProgress": "已測試 {done}/{total}", + "testAllFailedHidden": "已隱藏 {count} 個失敗模型", + "testAllDone": "所有模型已測試", + "productionKey": "生產金鑰", + "enterNewApiKey": "輸入新的 API 金鑰", + "codexApplyModalTitle": "適用於當地法典", + "codexApplyTargetLabel": "目標路徑", + "codexApplyBackupLabel": "備份", + "codexApplyWarning": "這將替換現有的 auth.json。繼續?", + "codexApplyConfirmCheckbox": "我確認我想替換現有的 auth.json", + "codexApply": "申請", + "bulkTabSingle": "單個", + "bulkTabBulkAdd": "批次新增", + "bulkAddFormatHint": "每行一個金鑰。格式:名稱|API金鑰 或僅 API金鑰(按序號自動命名)。", + "bulkValidateKeys": "儲存前驗證每個金鑰(較慢)", + "bulkAddAllKeys": "新增所有金鑰", + "bulkAddedCount": "{count, plural, other {已新增 # 個金鑰}}", + "bulkFailedCount": "{count, plural, other {# 個失敗}}", + "optional": "可選", + "anthropicCompatibleName": "Anthropic 相容", + "openaiCompatibleName": "OpenAI 相容", + "compatibleDefaultModelLabel": "__MISSING__:Default Model", + "compatibleDefaultModelHint": "__MISSING__:Enter the model ID exactly as your compatible endpoint expects it. This model will be saved as the connection default.", + "failedImportModels": "匯入模型失敗", + "noModelsReturnedFromEndpoint": "/models 端點沒有返回任何模型。", + "importingModelsProgress": "正在匯入 {current} 個模型(共 {total} 個)...", + "foundModelsStartingImport": "找到 {count} 模型。開始匯入...", + "importingModelById": "正在匯入 {modelId}...", + "importSuccessCount": "成功匯入 {count, plural, one {# 個模型} other {# 個模型}}!", + "noNewModelsAddedExisting": "沒有新增新模型(全部已存在)。", + "importDoneCount": "✓ 完成!{count, plural, one {已匯入 # 個模型。} other {已匯入 # 個模型。}}", + "unexpectedErrorOccurred": "發生意外錯誤", + "connectionCountLabel": "{count, plural, one {# 個連線} other {# 個連線}}", + "messagesPath": "messages", + "responsesPath": "responses", + "chatCompletionsPath": "chat/completions", + "add": "新增", + "edit": "編輯", + "delete": "刪除", + "anthropic": "Anthropic", + "openai": "OpenAI", + "singleConnectionPerCompatible": "每個相容節點僅允許一個連線。如果需要更多連線,請新增另一個節點。", + "connections": "連線", + "providerProxyTitleConfigured": "提供商代理:{host}", + "configured": "已配置", + "providerProxyConfigureHint": "為該提供商的所有連線配置代理", + "providerProxy": "提供商代理", + "repairEnv": "修復 .env", + "repairEnvWorking": "修復中...", + "repairEnvHint": "將缺失的 OAuth 預設值補充到 .env 中,不會覆蓋現有值。", + "repairEnvSuccess": "OAuth 預設值已恢復", + "repairEnvFailed": "修復 .env 失敗", + "noConnectionsYet": "還沒有連線", + "addFirstConnectionHint": "新增您的第一個連線以開始使用", + "addConnection": "新增連線", + "availableModels": "可用模型", + "builtInModels": "內建模型", + "builtInModelsHint": "該提供商的登錄檔模型。點選鉛筆可設定相容選項。", + "pageAutoRefresh": "頁面會自動重新整理...", + "statusDisabled": "已停用", + "statusConnected": "已連線", + "statusRuntimeIssue": "執行時問題", + "statusAuthFailed": "驗證失敗", + "statusRateLimited": "被限流", + "statusNetworkIssue": "網路問題", + "statusTestUnsupported": "測試不受支援", + "statusUnavailable": "不可用", + "statusFailed": "失敗", + "statusError": "錯誤", + "oauthAccount": "OAuth 帳戶", + "errorTypeRuntime": "本地執行時", + "errorTypeUpstreamAuth": "上游授權", + "errorTypeMissingCredential": "缺少憑證", + "errorTypeRefreshFailed": "重新整理失敗", + "errorTypeTokenExpired": "令牌已過期", + "errorTypeRateLimited": "速率有限", + "errorTypeUpstreamUnavailable": "上游不可用", + "errorTypeNetworkError": "網路錯誤", + "errorTypeTestUnsupported": "測試不支援", + "errorTypeUpstreamError": "上游錯誤", + "errorTypeCreditsExhausted": "額度已用完", + "errorTypeBanned": "403 禁止訪問", + "proxySourceGlobal": "全域性", + "proxySourceProvider": "提供商", + "proxySourceKey": "金鑰", + "proxyConfiguredBySource": "代理 ({source}):{host}", + "proxyOn": "代理開啟", + "proxyOff": "代理關閉", + "proxyEnabledTitle": "此連線已啟用代理", + "proxyDisabledTitle": "此連線已停用代理", + "perKeyProxyOn": "按金鑰", + "perKeyProxyOff": "連線", + "perKeyProxyEnabledTitle": "已為此提供商啟用按金鑰代理分配", + "perKeyProxyDisabledTitle": "已為此提供商停用按金鑰代理分配", + "autoPriority": "自動:{priority}", + "proxy": "代理", + "retestAuthentication": "重新驗證身份", + "retest": "重新測試", + "disableConnection": "停用連線", + "enableConnection": "啟用連線", + "reauthenticateConnection": "重新驗證此連線", + "proxyConfig": "代理配置", + "aliasExistsAlert": "別名“{alias}”已存在。請使用不同的模型或編輯現有別名。", + "aliasInputPlaceholder": "alias name", + "clickToSetAlias": "Click to set alias", + "clickToEditAlias": "Alias: {alias} (click to edit)", + "openRouterAnyModelHint": "OpenRouter 支援任意模型。新增模型並建立別名後即可快速訪問。", + "modelIdFromOpenRouter": "模型 ID(來自 OpenRouter)", + "openRouterModelPlaceholder": "anthropic/claude-3-opus", + "customModels": "自定義模型", + "customModelsHint": "新增預設列表中沒有的模型 ID,這些模型也能參與路由。", + "normalizeToolCallIdLabel": "將工具呼叫 ID 規範為 9 位(如 Mistral)", + "preserveDeveloperRoleLabel": "保留 Responses 的 developer 角色(不對映為 system)", + "compatAdjustmentsTitle": "相容性", + "compatButtonLabel": "相容性", + "compatToolIdShort": "工具 ID 9 位", + "compatDeveloperShort": "developer 角色", + "compatDoNotPreserveDeveloper": "不保留 developer 角色", + "compatBadgeNoPreserve": "不保留", + "compatProtocolLabel": "客戶端請求協議", + "compatProtocolHint": "以下選項在 OmniRoute 識別到該請求形態(OpenAI Chat、Responses API 或 Anthropic Messages)時生效。", + "compatProtocolOpenAI": "OpenAI Chat Completions", + "compatProtocolOpenAIResponses": "OpenAI Responses API", + "compatProtocolClaude": "Anthropic Messages", + "targetFormatLabel": "__MISSING__:Target Format", + "targetFormatHint": "__MISSING__:Override the upstream wire format. Use 'Anthropic Messages' to route OpenAI-compatible providers (e.g. opencode-go) through the /v1/messages endpoint.", + "targetFormatAuto": "__MISSING__:Default (auto)", + "targetFormatGemini": "__MISSING__:Gemini", + "targetFormatAntigravity": "__MISSING__:Antigravity", + "compatUpstreamHeadersLabel": "上游額外請求頭", + "compatUpstreamHeadersHint": "與修改廠商連線/API 配置同屬高許可權能力,僅可信管理員應使用。這些頭會在 OmniRoute 按廠商 API Key 自動加好鑑權頭之後再合併。若「名稱」與系統已加的頭相同(例如都叫 Authorization),則以你填的值為準,會整段替換自動那條(含 Bearer 令牌),上游請求裡不再使用面板裡儲存的金鑰來生成 Authorization。填錯可能導致 401,請謹慎。每個請求頭單獨一行;部分閘道器需要額外 Authentication 等可在此加。滑鼠移入或聚焦「值」可暫時看明文。點空白處、關閉本面板或切走焦點即儲存。", + "compatUpstreamHeaderName": "請求頭名稱", + "compatUpstreamHeaderValue": "值", + "compatUpstreamAddRow": "新增請求頭", + "compatUpstreamRemoveRow": "刪除此行", + "compatBadgeUpstreamHeaders": "請求頭", + "perModelQuotaLabel": "按模型配額", + "perModelQuotaDescription": "啟用後,429/404 錯誤只會鎖定特定 Model,而不是整個連線。適用於具有按 Model 速率限制的 Provider(例如 ModelScope)。", + "importFreeModelsOnlyLabel": "__MISSING__:Import only free models", + "importFreeModelsOnlyHint": "__MISSING__:When enabled, only this provider's free models are imported. Paid models are skipped.", + "perModelQuotaToggle": "按模型配額開關", + "modelId": "模型 ID", + "customModelPlaceholder": "例如:gpt-4.5-turbo", + "loading": "正在載入...", + "removeCustomModel": "刪除自定義模型", + "noCustomModels": "尚未新增自定義模型。", + "allSuggestedAliasesExist": "所有建議別名都已存在。請選擇其他模型,或刪除衝突的別名。", + "failedSaveCustomModel": "儲存自定義模型失敗", + "modelAddedSuccess": "模型 {modelId} 新增成功", + "failedAddModelTryAgain": "新增模型失敗,請重試。", + "failedSaveImportedModel": "無法將匯入的模型儲存到自定義資料庫", + "failedImportModelsTryAgain": "匯入模型失敗。請再試一次。", + "failedRemoveModelFromDatabase": "無法從資料庫中刪除模型", + "modelRemovedSuccess": "模型刪除成功", + "failedDeleteModelTryAgain": "刪除模型失敗。請再試一次。", + "compatibleModelsDescription": "可手動新增 {type} 相容模型,或從 `/models` 端點匯入。", + "anthropicCompatibleModelPlaceholder": "claude-3-opus-20240229", + "openaiCompatibleModelPlaceholder": "gpt-4o", + "apiKeyValidationFailed": "API 金鑰驗證失敗。請檢查您的金鑰並重試。", + "addProviderApiKeyTitle": "新增 {provider} API 金鑰", + "checking": "正在檢查...", + "check": "檢查", + "valid": "有效", + "invalid": "無效", + "creating": "創造...", + "validationChecksAnthropicCompatible": "驗證會通過檢查 API 金鑰來確認 {provider} 是否可用。", + "validationChecksOpenAiCompatible": "驗證會通過你填寫的 Base URL 上的 `/models` 介面來檢查 {provider}。", + "priorityLabel": "優先順序", + "saving": "正在儲存...", + "save": "儲存", + "editConnection": "編輯連線", + "accountName": "帳戶名稱", + "email": "電子郵件", + "healthCheckMinutes": "健康檢查(分鐘)", + "healthCheckHint": "主動令牌重新整理間隔。 0 = 停用。", + "deselectAllModels": "取消全選", + "modelsActiveCount": "{active}/{total} 已啟用", + "noModelsMatch": "沒有匹配 \"{filter}\" 的模型", + "groupLabel": "環境", + "groupPlaceholder": "例如:eKaizen、Personal", + "failedTestConnection": "測試連線失敗", + "failed": "失敗", + "leaveBlankKeepCurrentApiKey": "留空以保留當前的 API 金鑰。", + "editCompatibleTitle": "編輯 {type} 相容", + "compatibleBaseUrlHint": "{type} 相容 API 的根 URL。若端點路徑是自定義的,請在高階設定中配置。", + "apiKeyForCheck": "API 金鑰(用於檢查)", + "testModelIdLabel": "__MISSING__:Model ID (optional)", + "testModelIdPlaceholder": "__MISSING__:e.g. my-model-id", + "testModelIdHint": "__MISSING__:If the provider lacks a /models endpoint, enter a model ID to validate via /chat/completions instead.", + "compatibleProdPlaceholder": "{type} 相容(產品)", + "tokenRefreshed": "Token 重新整理成功", + "tokenRefreshFailed": "Token 重新整理失敗", + "applyCodexAuthLocal": "應用認證", + "exportCodexAuthFile": "匯出認證", + "applyClaudeAuthLocal": "申請授權", + "exportClaudeAuthFile": "匯出授權", + "importClaudeAuth": "匯入授權", + "claudeApplyModalTitle": "適用於當地克勞德程式碼", + "claudeApplyTargetLabel": "目標路徑", + "claudeApplyBackupLabel": "備份", + "claudeApplyMcpHint": "現有的 MCP OAuth 狀態將被保留。", + "claudeApplyWarning": "這將取代現有的 claudeAiOauth 部分。繼續?", + "claudeApplyConfirmCheckbox": "我確認我想替換現有的 claudeAiOauth 部分", + "claudeApply": "申請", + "claudeAuthAppliedLocal": "克勞德授權在本地應用", + "claudeAuthApplyFailed": "本地申請Claude auth失敗", + "claudeAuthExported": "克勞德授權檔案匯出", + "claudeAuthExportFailed": "無法匯出 Claude 身份驗證檔案", + "claudeImportModalTitle": "匯入克勞德·奧特", + "claudeImportTabSingle": "單人", + "claudeImportTabBulk": "散裝", + "claudeImportTabUpload": "上傳檔案", + "claudeImportTabPaste": "貼上 JSON", + "claudeImportFileLabel": "選擇.credentials.json", + "claudeImportPasteLabel": "貼上 JSON 內容", + "claudeImportEmailLabel": "帳戶郵箱", + "claudeImportNameLabel": "連線名稱(可選)", + "claudeImportOverwriteLabel": "如果帳戶已存在,則替換現有連線", + "claudeImportSubmit": "進口", + "claudeImportSuccess": "克勞德連線匯入成功", + "claudeImportInvalidJson": "無法將檔案解析為 JSON", + "claudeImportInvalidShape": "該檔案不是有效的 .credentials.json", + "claudeImportDuplicate": "帳戶已存在 - 啟用“替換現有”以覆蓋", + "claudeImportIdentityUnverified": "Bootstrap 無法驗證該帳戶。啟用“替換現有”或提供電子郵件。", + "claudeImportFailed": "匯入克勞德授權失敗", + "claudeImportBulkModeUpload": "上傳檔案", + "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 授權", + "geminiImportTabSingle": "單人", + "geminiImportTabBulk": "散裝", + "geminiImportTabUpload": "上傳檔案", + "geminiImportTabPaste": "貼上 JSON", + "geminiImportFileLabel": "選擇 oauth_creds.json", + "geminiImportPasteLabel": "貼上 JSON 內容", + "geminiImportEmailLabel": "帳戶郵箱", + "geminiImportNameLabel": "連線名稱(可選)", + "geminiImportOverwriteLabel": "如果帳戶已存在,則替換現有連線", + "geminiImportSubmit": "進口", + "geminiImportSuccess": "Gemini 連線匯入成功", + "geminiImportInvalidJson": "無法將檔案解析為 JSON", + "geminiImportInvalidShape": "該檔案不是有效的 oauth_creds.json", + "geminiImportDuplicate": "帳戶已存在 - 啟用“替換現有”以覆蓋", + "geminiImportIdentityUnverified": "無法通過 id_token 驗證身份。啟用“替換現有”或提供電子郵件。", + "geminiImportFailed": "匯入 Gemini 身份驗證失敗", + "geminiImportBulkModeUpload": "上傳檔案", + "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": "__MISSING__:Codex CLI Guide", + "codexCliGuideTitle": "__MISSING__:Codex CLI Guide", + "codexCliGuideLoading": "__MISSING__:Loading guide...", + "codexCliGuideLoadFailed": "__MISSING__:Could not load the guide.", + "codexExternalLinkButton": "__MISSING__:External Codex link", + "codexExternalLinkModalTitle": "__MISSING__:External Codex link", + "codexExternalLinkModalDescription": "__MISSING__:Share this single-use link with the person who will authenticate the Codex account. They open it in their own browser, complete the OpenAI login, and the connection is registered here. The link expires in 15 minutes.", + "codexExternalLinkGenerating": "__MISSING__:Generating link...", + "codexExternalLinkWaiting": "__MISSING__:Waiting for browser authentication. This window refreshes automatically.", + "codexExternalLinkCreateFailed": "__MISSING__:Failed to generate the link.", + "codexExternalLinkNetworkError": "__MISSING__:Could not contact the server.", + "codexExternalLinkConnected": "__MISSING__:Codex account connected through the external link.", + "codexExternalLinkExpired": "__MISSING__:The link expired before completion.", + "importCodexAuth": "匯入授權", + "codexImportModalTitle": "匯入法典認證", + "codexImportTabSingle": "單人", + "codexImportTabBulk": "散裝", + "codexImportTabUpload": "上傳檔案", + "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", + "codexImportDuplicate": "帳戶已存在 - 啟用“替換現有”以覆蓋", + "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} 已匯入", + "codexImportBulkFailed": "{count} 失敗", + "codexImportBulkZipExtracting": "正在提取 ZIP...", + "codexImportBulkZipError": "無法提取 ZIP", + "advancedSettings": "高階設定", + "chatPathLabel": "聊天端點路徑", + "chatPathPlaceholder": "/chat/completions", + "chatPathHint": "為非標準 API 的提供商自定義聊天路徑(例如:/v4/chat/completions)", + "modelsPathLabel": "模型端點路徑", + "modelsPathPlaceholder": "/models", + "modelsPathHint": "為驗證流程自定義模型路徑(例如:/v4/models)", + "clientIdentityLabel": "__MISSING__:Client Identity", + "clientIdentityHint": "__MISSING__:Optional. Adds client fingerprint headers (e.g. User-Agent) matching a known CLI for compatible gateways that expect one.", + "statusDeactivated": "已停用(手動)", + "statusBanned": "已封禁 / 沙箱違規", + "statusCreditsExhausted": "餘額不足 / 配額已耗盡", + "showEmails": "顯示所有郵箱", + "hideEmails": "隱藏所有郵箱", + "a": "A", + "accountConcurrencyCapHint": "限制此 Account 可同時處理的請求數。", + "accountConcurrencyCapLabel": "Account 併發上限", + "accountIdHint": "用於區分同一 Provider 下的多個 Account。", + "accountIdLabel": "Account ID", + "accountIdPlaceholder": "Account ID 佔位符", + "addAnotherApiKey": "新增另一個 API 金鑰或貼上多個金鑰", + "addCcCompatible": "新增 CC 相容", + "aggregatorsGateways": "聚合器與閘道器", + "enterpriseCloud": "企業與雲", + "apiFormatLabel": "API 格式", + "apiKeyOptionalHint": "如果上游不需要認證,可以留空 API key。", + "apiKeyOptionalLabel": "API key(可選)", + "apiRegionChina": "中國區", + "apiRegionHint": "選擇此 Provider 的 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 值。", + "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", + "blackboxWebCookieHint": "從 Blackbox Web 會話複製 Cookie。", + "blackboxWebCookiePlaceholder": "Blackbox Web Cookie", + "t3ChatWebCookieHint": "開啟 t3.chat → 開發工具 → 應用程式 → 本地儲存 → https://t3.chat,複製“凸會話 ID”。然後開啟 DevTools → Network,從任何聊天請求中複製完整的 Cookie 標頭。將這兩個值貼上到下面的欄位中。", + "t3ChatWebCookiePlaceholder": "凸會話 ID=abc123...", + "blockClaudeExtraUsageDescription": "隱藏部分 Provider 返回的重複 Claude 額外用量記錄,避免和主 token 統計重複。", + "blockClaudeExtraUsageLabel": "遮蔽重複 Claude 用量", + "disableCoolingDescription": "__MISSING__:Skip the transient cooldown so this connection stays eligible even after recoverable errors (terminal states like banned/expired still apply).", + "disableCoolingLabel": "__MISSING__:Disable cooldown for this connection", + "bulkPasteAdded": "{count, plural, one {已新增 1 個 key} other {已新增 # 個 key}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {已跳過 1 個重複項} other {已跳過 # 個重複項}}", + "bulkPasteHint": "每行貼上一個 API 金鑰。空行會被忽略,重複金鑰會被跳過。", + "ccCompatibleBaseUrlHint": "Claude Code 專用中轉站的 Base URL,不要包含 /messages。", + "ccCompatibleBaseUrlPlaceholder": "https://relay.example.com/v1", + "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 這類模型別名。", + "ccCompatiblePrefixPlaceholder": "cc", + "ccCompatibleValidationHint": "這個 Provider 只適用於僅向 Claude Code 客戶端提供服務的中轉站。OmniRoute 會把任何進入的請求改寫為 Claude Code 相容的傳輸格式,以通過這些中轉站的驗證。如果你只是想使用 Claude Code CLI,或者不清楚這類中轉站是什麼,請使用普通 Anthropic-compatible Provider。", + "claudeExtraUsageShort": "額外用量", + "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 佔位符", + "cpaModeDisabledTitle": "CLIProxyAPI 相容模式已關閉", + "cpaModeEnabledTitle": "CLIProxyAPI 相容模式已開啟", + "customUserAgentHint": "傳送給上游 Provider 的自定義 User-Agent。", + "customUserAgentLabel": "自定義 User-Agent", + "databricksBaseUrlHint": "Databricks Serving Endpoint 的 Base URL。", + "defaultThinkingStrengthHint": "請求未指定 reasoning effort 時使用。", + "defaultThinkingStrengthLabel": "預設思考強度", + "deleteAllExtraApiKeys": "全部刪除", + "excludedModelsHint": "這些 Model 不會出現在路由和選擇器中。", + "excludedModelsLabel": "排除的 Model", + "excludedModelsPlaceholder": "以逗號分隔的 Model ID", + "expirationBannerExpired": "憑據已過期", + "expirationBannerExpiredDesc": "此 Provider 的憑據已過期,請更新後繼續使用。", + "expirationBannerExpiringSoon": "憑據即將過期", + "expirationBannerExpiringSoonDesc": "此 Provider 的憑據即將過期,請提前更新。", + "extraApiKeyMasked": "金鑰 {index}:{prefix}••••{suffix}", + "extraApiKeysHint": "為同一提供商新增額外 API 金鑰,以便輪換和回退使用。", + "extraApiKeysLabel": "額外 API 金鑰", + "apiKeyHealthLabel": "API 金鑰健康狀態", + "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 期間發現的專案。", + "antigravityClientProfileLabel": "客戶端配置", + "antigravityClientProfileHint": "選擇 OmniRoute 向 API 呈現的 Antigravity 客戶端身份。", + "antigravityClientProfileIde": "IDE", + "antigravityClientProfileHarness": "Harness / CLI", + "codexFastTierActiveChip": "Codex Fast 層級已啟用", + "tierFast": "快速", + "antigravityProjectIdLabel": "谷歌雲專案 ID", + "antigravityProjectIdPlaceholder": "我的 GCP 專案 ID", + "grokWebCookieHint": "從 Grok Web 會話複製 Cookie。", + "grokWebCookiePlaceholder": "Grok Web Cookie", + "herokuBaseUrlHint": "Heroku 部署的 Base URL。", + "hideEmail": "隱藏郵箱", + "imageProviders": "影像 Provider", + "videoProviders": "影片生成", + "embeddingRerankProviders": "嵌入與重排序", + "imagesShortLabel": "影像", + "llmProviders": "LLM Provider", + "localProviderApiKeyOptionalHint": "本地提供商的 API 金鑰通常是可選的。", + "localProviderBaseUrlHint": "輸入本地提供商的 Base URL。", + "localProviders": "本地 Provider", + "maxConcurrentWholeNumberError": "最大併發必須是整數", + "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。", + "perplexityWebCookiePlaceholder": "Perplexity Web Cookie", + "personalAccessTokenLabel": "個人訪問令牌", + "qoderPatHint": "輸入 Qoder Personal Access Token。", + "qoderPatPlaceholder": "Qoder PAT", + "rateLimitOverridesSection": "速率限制覆蓋", + "rateLimitOverridesMaxConcurrentHint": "此連線的最大併發請求覆蓋。覆蓋帳戶級別的上限。", + "rateLimitOverridesMaxConcurrentLabel": "最大併發(速率限制)", + "rateLimitOverridesMinTimeHint": "請求之間的最小時間(毫秒)。覆蓋預設速率限制器延遲。", + "rateLimitOverridesMinTimeLabel": "最小間隔(毫秒)", + "rateLimitOverridesRpmHint": "此連線的每分鐘最大請求數。覆蓋提供商預設值。", + "rateLimitOverridesRpmLabel": "RPM(請求/分鐘)", + "rateLimitOverridesTpdHint": "此連線的每日最大令牌數。覆蓋提供商預設值。", + "rateLimitOverridesTpdLabel": "TPD(令牌/天)", + "rateLimitOverridesTpmHint": "此連線的每分鐘最大令牌數。覆蓋提供商預設值。", + "rateLimitOverridesTpmLabel": "TPM(令牌/分鐘)", + "refreshOauthTokenTitle": "重新整理 OAuth Token", + "regionHint": "選擇此 Provider 使用的區域。", + "regionLabel": "區域", + "removeThisKey": "移除此 key", + "routingTagsHint": "新增標籤以便在路由規則中匹配此連線。", + "routingTagsLabel": "路由標籤", + "routingTagsPlaceholder": "例如 coding, fast, cheap", + "search": "搜尋", + "searchEngineIdHint": "Google Programmable Search Engine 的 ID。", + "searchEngineIdLabel": "Search Engine ID", + "searchEngineIdRequired": "Search Engine ID 為必填項", + "searchProvider": "搜尋提供商", + "searchProviderDesc": "按名稱、能力或類別查詢提供商。", + "searchProviders": "搜尋 Provider", + "searchByModel": "__MISSING__:Search by model…", + "searchProvidersHeading": "搜尋 Provider", + "searxngBaseUrlHint": "SearXNG 例項的 Base URL。", + "searxngInfo": "配置 SearXNG 以啟用自託管 Web Search。", + "sessionCookieLabel": "Session Cookie", + "showEmail": "顯示郵箱", + "snowflakeBaseUrlHint": "Snowflake Cortex 服務的 Base URL。", + "supportedEndpointAudio": "音訊", + "supportedEndpointChat": "聊天", + "supportedEndpointEmbeddings": "嵌入", + "supportedEndpointImages": "影像", + "supportedEndpointsLabel": "支援的端點", + "tagGroupHint": "用於篩選和組織 Provider 的標籤分組。", + "tagGroupLabel": "標籤分組", + "tagGroupPlaceholder": "標籤分組佔位符", + "testModel": "測試模型", + "testingModel": "正在測試模型", + "toggleOffShort": "關", + "toggleOnShort": "開", + "tokenExpiredBadge": "Token 已過期", + "tokenExpiredTitle": "Token 已過期", + "tokenExpiresSoonTitle": "Token 即將過期", + "tokenShort": "Token", + "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", + "weeklyShort": "每週", + "xiaomiMimoBaseUrlHint": "小米 Mimo 服務的 Base URL。", + "zedImportButton": "從 Zed 匯入", + "zedImportFailed": "Zed 匯入失敗", + "zedImportHint": "從 Zed 配置中匯入 Provider。", + "zedImportNetworkError": "Zed 匯入網路錯誤", + "zedImportNone": "沒有可從 Zed 匯入的內容", + "zedImportSuccess": "Zed 匯入成功", + "zedImporting": "正在從 Zed 匯入", + "freeTierProviders": "免費層提供商", + "freeTierLabel": "有免費額度", + "freeTierProvidersDesc": "提供免費層的提供商——有些需要註冊 API 金鑰,有些無需任何憑證。", + "providerSummaryAll": "全部", + "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) 自動檢測路徑。", + "webFetch": "網頁抓取", + "webFetchTooltip": "從網頁 URL 抽取內容的提供商(HTML → Markdown、抓取、截圖)", + "webFetchProvidersHeading": "網頁抓取提供商", + "compatibleProvidersDesc": "您託管或配置的 OpenAI 相容和 Anthropic 相容端點。將任意 OpenAI SDK 指向您的 URL 並在此處路由請求。", + "oauthProvidersDesc": "通過 OAuth 認證的提供商——登入一次,OmniRoute 自動處理令牌輪換。", + "webCookieProvidersDesc": "這些提供商使用瀏覽器網路會話、cookie 或網路令牌而不是 API 金鑰。開啟提供程式以新增所需的會話憑據。", + "apiKeyProvidersDesc": "標準 API 金鑰提供商。新增金鑰後,OmniRoute 代為路由、重試和限流。", + "noAuthProvidersDesc": "無需憑證的開放端點——無需註冊即可立即使用。", + "upstreamProxyProvidersDesc": "通過上游代理路由出站流量。適用於企業網路或流量審計場景。", + "webFetchProvidersDesc": "從網頁 URL 抓取和提取內容的提供商。用於將即時網頁資料注入提示詞。", + "aggregatorsGatewaysDesc": "多提供商聚合器和 AI 閘道器,通過單一統一 API 對接數十個底層模型。", + "enterpriseCloudDesc": "企業級和雲託管模型,提供增強 SLA、合規認證和專用容量。", + "cloudAgentProvidersDesc": "自主雲代理,可執行長時間執行的任務,支援計劃審批和即時狀態跟蹤。", + "localProvidersDesc": "在您自己的硬體上執行的自託管模型。資料不會離開您的基礎設施。", + "searchProvidersDesc": "網頁和文件搜尋提供商。可附加到 LLM 呼叫以實現檢索增強生成(RAG)。", + "audioProvidersDesc": "文本轉語音和語音轉文本提供商,用於語音輸入輸出和音訊轉錄管道。", + "embeddingRerankProvidersDesc": "向量嵌入和重排序提供商,用於語義搜尋、RAG 管道和相似度評分。", + "imageProvidersDesc": "影像生成和視覺提供商——從文本建立影像或分析現有影像。", + "videoProvidersDesc": "影片生成提供商。從文本提示或影像建立短影片片段。", + "onboardingWizard": "提供商入職嚮導", + "onboardingWizardShort": "入職嚮導", + "onboardingWizardDescription": "通過驗證、永續性和即時連線測試連線 API 金鑰、自定義相容和 OAuth 提供商。", + "onboardingStepType": "型別", + "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": "選擇一個提供商,然後嚮導將指導您完成憑據和測試。", + "onboardingChangeType": "變更型別", + "onboardingChangeProvider": "更換提供商", + "onboardingSearchProviders": "搜尋提供商...", + "onboardingApiKeyOptional": "API 金鑰可選", + "onboardingProviderConnected": "提供商已連線", + "onboardingProviderSavedWithWarnings": "提供者儲存時帶有警告", + "onboardingProviderFinished": "提供商入職完成", + "onboardingYourProviderConnection": "您的提供商連線", + "onboardingTestPassed": "測試通過", + "onboardingTestFailed": "測試失敗", + "onboardingOpenProviderDetails": "開放提供商詳細資訊", + "onboardingTryInPlayground": "去遊樂場試試", + "onboardingDefaultConnectionName": "{provider} 主要", + "onboardingTestingConnection": "測試提供商連線...", + "onboardingValidatingCredentials": "正在驗證憑據...", + "onboardingSavingConnection": "正在儲存提供商連線...", + "onboardingProviderFailed": "提供商加入失敗", + "onboardingCreatingCompatibleProvider": "建立相容的提供者...", + "onboardingSavingCompatibleConnection": "正在儲存相容的提供商連線...", + "onboardingCustomProviderFallbackName": "定製提供商", + "onboardingCustomProviderFailed": "自定義提供商加入失敗", + "onboardingLoadingOAuthConnection": "正在載入 OAuth 連線...", + "onboardingOAuthNoConnectionFound": "OAuth 已完成,但未找到提供者連線。", + "onboardingOAuthFailed": "OAuth 登入失敗", + "onboardingAddProvider": "新增 {provider}", + "onboardingConnectionName": "連線名稱", + "onboardingApiKeyOptionalLabel": "API 金鑰(可選)", + "onboardingBaseUrlOverride": "基本 URL 覆蓋", + "onboardingBaseUrlOverrideHint": "可選。儲存為providerSpecificData.baseUrl。", + "onboardingRegion": "地區", + "onboardingSearchCx": "搜尋 CX/引擎 ID", + "onboardingProviderSpecificIdPlaceholder": "可選的提供商特定 ID", + "onboardingCustomUserAgent": "自定義使用者代理", + "onboardingWorking": "工作…", + "onboardingValidateSaveTest": "驗證、儲存和測試", + "onboardingBack": "返回", + "onboardingCreateCustomCompatibleProvider": "建立自定義相容提供商", + "onboardingCreateCustomCompatibleDescription": "該向導首先建立一個提供程式節點,然後儲存並測試其 API 金鑰連線。", + "onboardingProtocol": "協議", + "onboardingOpenAiCompatible": "相容 OpenAI", + "onboardingAnthropicCompatible": "人類相容", + "onboardingClaudeCodeCompatible": "克勞德程式碼相容", + "onboardingProviderPrefix": "提供商字首", + "onboardingProviderPrefixHint": "用於生成託管提供商 ID。", + "onboardingChatPath": "聊天路徑", + "onboardingModelsPath": "模型路徑", + "onboardingCreateSaveTest": "建立、儲存和測試", + "onboardingConnectProvider": "連線 {provider}", + "onboardingOAuthFlowDescription": "OmniRoute 將開啟該提供商的現有 OAuth 流程。登入後,嚮導將重新載入已儲存的連線並執行與提供程式頁面相同的連線測試。", + "onboardingStartOAuthFlow": "啟動 OAuth 流程", + "passthroughModelsDescription": "{provider} 接受提供者本機模型 ID。從 /models 匯入或新增用於路由的自定義 ID。", + "bedrockModelsDescription": "Amazon Bedrock 模型的範圍按 AWS 區域劃分。從 /models 匯入或新增在所選區域中啟用的基岩模型 ID。", + "bedrockModelPlaceholder": "人類.克勞德十四行詩-4-6", + "addProviderSessionCookieTitle": "新增 {provider} 會話 cookie", + "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}", + "webSessionGuideStep1": "在瀏覽器中登入 {provider}。", + "webSessionGuideStep2": "開啟瀏覽器開發人員工具並檢查 Web 應用程式發出的請求。", + "webSessionGuideStep3": "從提供商自己的域複製所需的憑據。對於 cookie,僅複製 Cookie 標頭值並省略 Cookie:。", + "webSessionGuideStep4": "將其貼上到此處並檢查連線。如果它停止工作,請重新登入並將其替換為新值。", + "webSessionSecurityHint": "將其視為密碼:它可以訪問您登入的網路帳戶,直到其過期或被撤銷。", + "webNoAuthGuideTitle": "無需任何憑證", + "webNoAuthGuideBody": "{provider} 不需要 API 金鑰或 cookie。儲存連線以使用其免費 Web 端點。", + "webSessionCredentialValidationFailed": "會話憑據驗證失敗。重新登入,複製新的憑據,然後重試。", + "checkCookie": "檢查cookie", + "checkWebToken": "檢查令牌", + "huggingchatLabel": "HuggingChat(免費)", + "huggingchatDesc": "通過 huggingface.co/chat 免費使用 LLM 聊天", + "poeWebLabel": "Poe 網頁", + "poeWebDesc": "通過 poe.com 進行多模型聊天", + "veniceWebLabel": "威尼斯網路", + "veniceWebDesc": "隱私專注的 AI 聊天", + "v0VercelWebLabel": "v0 Vercel Web", + "v0VercelWebDesc": "通過 v0.dev 的 AI 程式碼生成", + "kimiWebLabel": "Kimi Web", + "kimiWebDesc": "通過 www.kimi.com 訪問 Moonshot AI 聊天(國際版,Connect-RPC API)", + "doubaoWebLabel": "Dola Web", + "doubaoWebDesc": "通過 dola.com 訪問字節跳動 AI 聊天", + "overrideBaseUrlAdvanced": "__MISSING__:Advanced: override base URL", + "overrideBaseUrlHint": "__MISSING__:Advanced: point this built-in provider at a custom endpoint. Leave blank to use the default.", + "bulkAddFormatHintCloudflare": "__MISSING__:One key per line. Format: name|accountId|apiKey (Cloudflare account ID + API token)." + }, + "settings": { + "title": "設定", + "general": "常規", + "security": "安全", + "appearance": "外觀", + "routing": "路由", + "cache": "快取", + "resilience": "韌性", + "description": "__MISSING__:Description", + "enable": "__MISSING__:Enable", + "disable": "__MISSING__:Disable", + "update": "__MISSING__:Update", + "routingSettingsIntro": "控制您的請求如何路由、轉換和傳送給 AI 提供商。", + "routingOpDropParagraphContainsLabel": "丟棄段落(包含)", + "routingOpDropParagraphStartsWithLabel": "丟棄段落(開頭匹配)", + "routingOpReplaceTextLabel": "替換文本", + "routingOpReplaceRegexLabel": "替換正則", + "routingOpDropBlockContainsLabel": "丟棄塊(包含)", + "routingOpPrependSystemBlockLabel": "在系統塊開頭插入", + "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.'。", + "routingOpAppendSystemBlockDesc": "在系統陣列末尾追加一個新文本塊。用於不必置於 [0] 位置的修飾性內容。", + "routingOpInjectBillingHeaderDesc": "在前置位置插入特殊的 'x-anthropic-billing-header: cc_version=...; cc_entrypoint=...; cch=...;' 文本塊,用於通過 Anthropic 分類器校驗。CC 橋接轉發端點必須使用;原生 claude 提供商已自帶計費行,在那裡通常無需此操作。", + "routingOpObfuscateWordsDesc": "在每個指定詞的首字母后插入零寬連字元,例如 'opencode' 變為 'o‍pencode'。視覺上對人類完全相同,但能繞過分類器的詞匹配。作用於系統塊、使用者/助手訊息以及工具描述。", + "routingNeedlesHint": "子串列表。段落只要包含其中任一項即匹配。通過「新增條目」逐行新增。", + "routingPrefixesHint": "字串列表。段落以其中任一項開頭即匹配(匹配前會去除前導空白)。", + "routingCaseSensitiveHint": "開啟時 'OpenCode' 與 'opencode' 視為不同字串。關閉(預設)時忽略大小寫。", + "routingMatchLiteralHint": "要查詢的精確字面子串,不解析為正則 — . * ? 等特殊字元按字面處理。", + "routingReplacementTextHint": "替換字串。留空則刪除匹配項,周圍文本保持不變。", + "routingAllOccurrencesHint": "開啟(預設)時替換所有出現位置;關閉時僅替換第一次匹配。", + "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": "掃描詞語的請求體範圍:系統塊、使用者/助手訊息以及工具描述。", + "routingObfuscateTargetsLabel": "目標", + "routingSummarizeDropParagraphContains": "丟棄包含的段落:{items}", + "routingSummarizeDropParagraphStartsWith": "丟棄開頭匹配的段落:{items}", + "routingSummarizeReplaceText": "將 \"{match}\" 替換為 \"{replacement}\"", + "routingSummarizeReplaceRegex": "正則 /{pattern}/{flags} → \"{replacement}\"", + "routingSummarizeDropBlockContains": "丟棄包含的塊:{items}", + "routingSummarizePrependSystemBlock": "前置塊:\"{text}\"", + "routingSummarizeAppendSystemBlock": "追加塊:\"{text}\"", + "routingSummarizeInjectBillingHeader": "注入計費頭(entrypoint={entrypoint},version={versionFormat},cch={cchAlgo})", + "routingSummarizeObfuscateWords": "通過 ZWJ 在 {targets} 中混淆 {count} 個詞", + "routingDefaultAutoVariantLKGP": "上次正常的提供商", + "routingDefaultAutoVariantLKGPDesc": "上次正常的提供商", + "routingDefaultAutoVariantCoding": "程式碼場景質量優先", + "routingDefaultAutoVariantCodingDesc": "程式碼場景質量優先", + "routingDefaultAutoVariantFast": "低延遲路由", + "routingDefaultAutoVariantFastDesc": "低延遲路由", + "routingDefaultAutoVariantCheap": "成本優先", + "routingDefaultAutoVariantCheapDesc": "成本優先", + "routingDefaultAutoVariantOffline": "高可用", + "routingDefaultAutoVariantOfflineDesc": "高可用", + "routingDefaultAutoVariantSmart": "最佳探索(10% 探索率)", + "routingDefaultAutoVariantSmartDesc": "最佳探索(10% 探索率)", + "routingOpSummaryCount": "{count, plural, =0 {無操作} other {# 個操作}}", + "routingOpEnabled": "已啟用", + "routingOpDisabled": "已停用", + "routingOpStatusSeparator": "·", + "resilienceSettingsIntro": "提供程式失敗時自動重試、冷卻和回退。", + "aiSettingsIntro": "用於思考預算、模型行為和壓縮的 AI 特定設定。", + "systemPrompt": "系統提示", + "thinkingBudget": "思考預算", + "proxy": "代理", + "httpProxy": "HTTP 代理", + "1proxy": "1proxy", + "proxySubTabsAria": "代理設定分割槽", + "requestBodyLimitTitle": "請求體大小限制", + "requestBodyLimitDescription": "解析請求體前允許的最大 API 載荷大小。專用上傳路由仍至少保留其內建的 100 MB 限制。", + "requestBodyLimitInputLabel": "請求體限制(MB)", + "requestBodyLimitEmptyError": "請輸入 MB 限制值", + "requestBodyLimitWholeNumberError": "請使用整數", + "requestBodyLimitMinimumError": "最小值為 {min} MB", + "requestBodyLimitMaximumError": "最大值為 {max} MB", + "requestBodyLimitLoadFailed": "載入請求限制設定失敗", + "requestBodyLimitSaveSuccess": "請求體限制已儲存", + "requestBodyLimitSaveFailed": "儲存請求體限制失敗", + "requestBodyLimitSaving": "正在儲存...", + "requestBodyLimitSave": "儲存", + "requestBodyLimitCurrent": "當前:{value}", + "mitmProxy": "MITM 代理", + "pricing": "定價", + "storage": "儲存", + "policies": "策略", + "ipFilter": "IP過濾器", + "comboDefaults": "組合預設值", + "fallbackChains": "後備鏈", + "changePassword": "更改密碼", + "enablePassword": "啟用密碼", + "darkMode": "深色模式", + "lightMode": "淺色模式", + "memoryTitle": "記憶", + "memoryDesc": "跨會話持久化對話記憶", + "memoryEnabled": "啟用記憶", + "memoryEnabledDesc": "啟用後,OmniRoute 會注入相關的歷史上下文。", + "memoryTokenCostWarning": "__MISSING__:Heads up: with memory enabled, OmniRoute injects up to {tokens} tokens of retrieved context into every chat request — this increases token usage and cost. To skip injection for a specific request, send the \"x-omniroute-no-memory: true\" header.", + "maxTokens": "最大 Tokens", + "retentionDays": "保留時長", + "recent": "最近", + "recentDesc": "按時間順序的時間窗", + "semantic": "語義", + "semanticDesc": "向量搜尋", + "hybrid": "混合", + "hybridDesc": "最近 + 語義", + "skillsTitle": "技能", + "skillsDesc": "供模型呼叫的工具", + "skillsEnabled": "啟用技能", + "skillsEnabledDesc": "允許智慧體觸發函式。", + "skillsComingSoon": "技能市場即將推出。", + "memorySkillsTitle": "記憶與技能", + "memorySkillsDesc": "持久化上下文與能力", + "modelsDevTitle": "模型資料庫", + "modelsDevDesc": "從 models.dev 自動同步定價、能力和規格", + "modelsDevEnabled": "啟用 models.dev 同步", + "modelsDevEnabledDesc": "從開源的 models.dev 資料庫獲取模型定價、能力和規格", + "modelsDevInterval": "同步間隔", + "syncNow": "立即同步", + "syncing": "同步中...", + "lastSync": "上次同步", + "never": "從未", + "justNow": "剛才", + "modelsDevStats": "同步統計", + "modelsDevStatsDesc": "當前 models.dev 資料覆蓋情況", + "providers": "提供商", + "modelsWithPricing": "已有定價的模型", + "capabilities": "能力", + "lastSyncCount": "上次同步數量", + "lastSyncFull": "上次完整同步", + "modelsDevInfo": "工作原理", + "modelsDevInfoDesc": "models.dev 是由 SST/OpenCode 團隊維護的開源 AI 模型規格資料庫,提供 100+ 提供商、4,000+ 模型的定價、能力、上下文限制和模態資訊。", + "modelsDevInfoResolution": "定價解析順序(優先順序從高到低):", + "modelsDevInfoOrder": "使用者覆蓋 → models.dev → LiteLLM → 硬編碼預設值", + "systemTheme": "系統主題", + "debugToggle": "啟用除錯模式", + "logToolSourcesToggle": "__MISSING__:Log Tool Sources", + "logToolSourcesDescription": "__MISSING__:Emit a diagnostic log line per request summarizing tool count and MCP/hosted/client source breakdown.", + "homePinProviderQuotaToHome": "將資訊固定到首頁", + "homeProviderQuotaLimits": "提供商配額限制", + "homeProviderQuotaLimitsDesc": "將提供商配額狀態容器(含全部重新整理按鈕)固定到首頁頂部。", + "homeQuickStart": "快速入門", + "homeQuickStartDesc": "在首頁上顯示快速入門面板。", + "homeProviderTopology": "提供商拓撲", + "homeProviderTopologyDesc": "在首頁上顯示提供商拓撲。", + "accountEmailVisibility": "帳號郵箱可見性", + "accountEmailVisibilityDesc": "在提供商、組合、日誌、配額和 Playground 頁面顯示完整帳號郵箱。關閉後預設打碼顯示。", + "sidebarVisibilityToggle": "顯示側邊欄專案", + "enableCache": "啟用快取", + "cacheTTL": "快取生存時間", + "maxCacheSize": "最大快取大小", + "clearCache": "清除快取", + "cacheCleared": "快取已成功清除", + "clearCacheFailed": "清除快取失敗", + "cacheHits": "快取命中", + "cacheMisses": "快取未命中", + "hitRate": "命中率", + "cacheEntries": "快取條目", + "cacheSettings": "快取設定", + "semanticCache": "語義快取", + "maxEntries": "最大條目數", + "ttlMinutes": "TTL(分鐘)", + "promptCache": "提示快取", + "strategy": "策略", + "preserveClientCache": "保留客戶端快取", + "enabled": "已啟用", + "loading": "載入中...", + "saving": "正在儲存...", + "save": "儲存", + "circuitBreaker": "斷路器", + "retryPolicy": "重試策略", + "maxRetries": "最大重試次數", + "retryDelay": "重試延遲", + "timeoutMs": "超時(毫秒)", + "enableSystemPrompt": "啟用系統提示", + "systemPromptText": "系統提示文字", + "autoDisableBannedAccounts": "自動停用被封禁帳戶", + "autoDisableDescription": "若提供商連線返回特定的永久封禁訊號(如 HTTP 403\"請驗證您的帳戶\"),則將其永久標記為停用。這會將其從組合輪換中移除。", + "autoDisableThreshold": "封禁閾值", + "autoDisableThresholdDesc": "觸發永久停用所需的連續封禁訊號次數。", + "customBannedSignals": "__MISSING__:Banned Keywords", + "customBannedSignalsDesc": "__MISSING__:Additional keywords that trigger permanent account ban detection. Built-in keywords always apply.", + "customBannedSignalsPlaceholder": "__MISSING__:e.g. api key revoked", + "noCustomBannedSignals": "__MISSING__:No custom keywords. Only built-in keywords are active.", + "resilienceStructureTitle": "彈性結構", + "resilienceStructureDesc": "此頁面僅配置行為。即時斷路器狀態顯示在執行狀況頁面上。組合特定的重試和迴圈槽控制保留在組合設定上。", + "enableThinking": "激發思考", + "maxThinkingTokens": "最大思考令牌", + "enableProxy": "啟用代理", + "perKeyProxyEnabled": "啟用按金鑰代理分配", + "perKeyProxyEnabledDesc": "啟用後,每個提供商連線可以使用自己的代理分配", + "proxyUrl": "代理網址", + "pricingRates": "定價費率格式", + "currentPricing": "當前定價概述", + "loadingPricing": "正在載入定價資料...", + "noPricing": "無可用定價資料", + "input": "輸入", + "output": "輸出", + "cached": "快取", + "reasoning": "推理", + "cacheCreation": "快取建立", + "customPricing": "定製定價", + "databaseSize": "資料庫大小", + "backupDb": "備份資料庫", + "restoreDb": "恢復資料庫", + "exportData": "匯出資料", + "importData": "匯入資料", + "clearData": "清除所有資料", + "clearDataConfirm": "這將永久刪除所有資料。你確定嗎?", + "enableRequestLogs": "啟用請求日誌", + "logRetention": "日誌保留", + "ipWhitelist": "IP白名單", + "ipBlacklist": "IP黑名單", + "addIP": "新增IP", + "savedSuccessfully": "設定儲存成功", + "ai": "人工智慧", + "advanced": "高階", + "localMode": "本地模式 - 所有資料都儲存在你的裝置上", + "settingsSectionsAria": "設定部分", + "switchThemes": "在淺色和深色主題之間切換", + "themeSelectionAria": "主題選擇", + "themeLight": "淺色", + "themeDark": "深色", + "themeSystem": "系統", + "endpointTunnelVisibility": "端點隧道可見性", + "endpointTunnelVisibilityDesc": "隱藏端點頁面中的隧道控制項,但不改變隧道執行狀態。", + "showCloudflareTunnel": "Cloudflare 快速隧道", + "showCloudflareTunnelDesc": "在端點頁面顯示 Cloudflare Quick Tunnel 控制項。", + "showTailscaleFunnel": "Tailscale Funnel", + "showTailscaleFunnelDesc": "在端點頁面顯示 Tailscale Funnel 控制項。", + "showNgrokTunnel": "ngrok 隧道", + "showNgrokTunnelDesc": "在端點頁面顯示 ngrok Tunnel 控制項。", + "sidebarVisibility": "隱藏側邊欄專案", + "sidebarVisibilityDesc": "可以隱藏任意側邊欄導航項,以減少視覺負擔,但不會停用任何功能", + "sidebarVisibilityHint": "當某個側邊欄分組中的所有專案都被隱藏時,該分組會自動隱藏", + "hideHealthLogs": "隱藏健康檢查日誌", + "hideHealthLogsDesc": "開啟後,將抑制伺服器控制台中的 [HealthCheck] 訊息", + "themeAccent": "主題顏色", + "themeAccentDesc": "選擇預設顏色,或使用單一顏色建立你自己的主題", + "themeCreate": "建立主題", + "themeCustom": "自定義主題", + "themeBlue": "藍色", + "themeRed": "紅色", + "themeGreen": "綠色", + "themeViolet": "紫色", + "themeOrange": "橙色", + "themeCyan": "青色", + "whitelabeling": "品牌定製", + "whitelabelingDesc": "自定義應用名稱和 Logo", + "appName": "應用名稱", + "appNameDesc": "顯示在側邊欄和瀏覽器標籤頁中的名稱", + "customLogo": "自定義 Logo URL", + "customLogoDesc": "你的自定義 Logo 圖片地址", + "uploadLogo": "上傳 Logo", + "resetLogo": "恢復預設", + "logoPreview": "預覽", + "customFavicon": "瀏覽器 Favicon", + "customFaviconDesc": "你的自定義 Favicon 地址(顯示在瀏覽器標籤頁中)", + "uploadFavicon": "上傳 Favicon", + "resetFavicon": "重置 Favicon", + "faviconPreview": "Favicon 預覽", + "flushCache": "重新整理快取", + "flushing": "正在重新整理...", + "size": "尺寸", + "hits": "命中次數", + "evictions": "驅逐", + "loadingCacheStats": "正在載入快取統計資訊...", + "globalProxy": "全域性代理", + "globalProxyDesc": "為所有 API 呼叫配置全域性出站代理。單獨的提供商、組合和鍵可以覆蓋此設定。", + "noGlobalProxy": "沒有配置全域性代理", + "proxyPool": "代理池", + "freePool": "免費池", + "proxyDocumentation": "代理文件", + "proxyGlobalConfigTab": "全域性配置", + "proxyPoolTab": "代理池", + "freePoolTab": "免費泳池", + "proxyDocumentationTab": "文件", + "bulkHealthcheck": "批次健康檢查", + "bulkHealthcheckDesc": "針對目標 URL 測試所有已配置代理,找出可用代理。", + "healthcheckTesting": "測試中...", + "healthcheckAll": "全部健康檢查", + "healthcheckFailed": "執行健康檢查失敗", + "healthcheckTestingAll": "正在並行測試所有代理...", + "healthcheckTotal": "總數", + "healthcheckWorking": "可用", + "healthcheckFailedLabel": "失敗", + "healthcheckStatus": "狀態", + "healthcheckProxyUrl": "代理 URL", + "healthcheckLatency": "延遲", + "proxyDocumentationScopeTitle": "代理作用域解析", + "proxyDocumentationScopeDescBefore": "OmniRoute 按優先順序順序解析出站代理:", + "proxyDocumentationScopeOrder": "組合 → 帳戶 → 提供商 → 全域性", + "proxyDocumentationScopeDescAfter": "。最具體的作用域優先。", + "proxyDocumentationAddTitle": "新增自定義代理", + "proxyDocumentationAddDescBefore": "轉到", + "proxyDocumentationAddDescMiddle": "選項卡 → 點選", + "proxyDocumentationAddCta": "+ 新增代理", + "proxyDocumentationAddDescAfter": "。填寫型別(http/https/socks5)、主機和埠。可選擇將其分配給作用域。", + "proxyDocumentationBulkTitle": "批次匯入格式", + "proxyDocumentationBulkDesc": "管道符分隔的欄位:", + "proxyDocumentationSocks5DescBefore": "SOCKS5 代理預設停用。設定", + "proxyDocumentationFreePoolDesc": "免費池選項卡聚合來自 1proxy、Proxifly 和 IPLocate 的代理。使用 ⊕ 測試並將代理提升到您的登錄檔中。只有通過連通性測試的代理才會被新增。", + "proxyDocumentationVercelRelayDescBefore": "Vercel Relay 是一個出站邊緣中繼,而不是入站隧道。部署後,LLM API 呼叫將通過 Vercel 的動態 IP 傳送,繞過資料中心地理封鎖和速率限制。中繼由生成的金鑰頭保護", + "proxyDocumentationVercelRelayDescAfter": "您的 Vercel 令牌僅在部署期間使用,不會儲存。", + "vercelRelayTokenRequired": "需要令牌", + "vercelRelayDeployFailed": "部署失敗", + "vercelRelayTokenHint": "令牌僅在部署期間使用——從不儲存。", + "denoRelayTokenRequired": "__MISSING__:Deno Deploy token is required", + "denoRelayOrgDomainRequired": "__MISSING__:Organization domain is required", + "denoRelayDeployFailed": "__MISSING__:Deno Deploy failed", + "denoRelayTokenHint": "__MISSING__:Organization token (prefix ddo_) from console.deno.com → Organization → Settings → Organization Tokens. Used once for deploy and never stored.", + "denoRelayOrgDomainHint": "__MISSING__:Your Deno Deploy organization's default domain (e.g. acme.deno.net). The relay will be reachable at https://..deno.net.", + "proxyFreePoolFilterProtocol": "按協議篩選", + "proxyFreePoolProtocol": "協議", + "proxyFreePoolCountryPlaceholder": "國家(例如 US)", + "proxyFreePoolFilterCountry": "按國家篩選", + "proxyFreePoolMinQualityPlaceholder": "最低質量", + "proxyFreePoolMinQualityLabel": "最低質量分數", + "proxyFreePoolSyncAll": "同步全部", + "proxyFreePoolTotal": "總計", + "proxyFreePoolInPool": "池中", + "proxyFreePoolAvgQuality": "平均質量", + "proxyFreePoolSelected": "已選 {count} 個", + "proxyFreePoolAddSelected": "將選中項新增到池", + "proxyFreePoolAddVisible": "將所有可見項新增到池", + "proxyFreePoolSource": "來源", + "proxyFreePoolHostPort": "主機:埠", + "proxyFreePoolType": "型別", + "proxyFreePoolCountry": "國家", + "proxyFreePoolQuality": "質量", + "proxyFreePoolLatency": "延遲", + "proxyFreePoolEmpty": "未找到代理。點選同步全部從來源獲取。", + "close": "關閉", + "cancel": "取消", + "globalLabel": "全域性", + "configure": "配置", + "globalSystemPrompt": "全域性系統提示", + "saved": "已儲存", + "beforePromptLabel": "提示詞前置", + "beforePromptDesc": "注入到代理/提供商系統指令之前", + "beforePromptPlaceholder": "插入到代理/提供商提示詞之前的指令...", + "afterPromptLabel": "提示詞後置", + "afterPromptDesc": "注入到代理/提供商系統指令之後", + "afterPromptPlaceholder": "插入到代理/提供商提示詞之後的指令...", + "chars": "{count} 字元", + "thinkingBudgetTitle": "思考預算", + "thinkingBudgetDesc": "控制所有請求中 AI 推理令牌的使用", + "passthrough": "直通", + "passthroughDesc": "沒有變化——客戶控制思維預算", + "auto": "自動", + "autoDesc": "丟棄所有思考配置,由提供商自行決定", + "custom": "定製", + "customDesc": "為所有請求設定固定的 Token 預算", + "adaptive": "自適應", + "adaptiveDesc": "根據請求複雜性調整預算", + "effortNone": "無(0 Tokens)", + "effortLow": "低(1K Tokens)", + "effortMedium": "中(10K Tokens)", + "effortHigh": "高(128K Tokens)", + "tokenBudget": "Token 預算", + "tokens": "Token", + "baseEffortLevel": "基本努力水平", + "adaptiveHint": "自適應模式根據訊息計數、工具使用情況和提示長度從此基本級別進行擴充套件。", + "requireLogin": "需要登入", + "requireLoginDesc": "當開啟時,儀表板需要密碼。當關閉時,無需登入即可訪問。", + "currentPassword": "當前密碼", + "enterCurrentPassword": "輸入當前密碼", + "newPassword": "新密碼", + "enterNewPassword": "輸入新密碼", + "confirmPassword": "確認新密碼", + "confirmPasswordPlaceholder": "確認新密碼", + "passwordsNoMatch": "密碼不匹配", + "passwordUpdated": "密碼更新成功", + "failedUpdatePassword": "更新密碼失敗", + "errorOccurred": "發生錯誤", + "updatePassword": "更新密碼", + "setPassword": "設定密碼", + "apiEndpointProtection": "API 端點保護", + "requireAuthModels": "/models 需要 API 金鑰", + "requireAuthModelsDesc": "開啟後,`/v1/models` 對未認證請求返回 404,從而阻止未授權使用者發現模型。", + "authModelHeading": "當前授權模型", + "authModelClient": "客戶端 API 端點(/v1/*、/chat/*、/responses/*、/codex/*、/messages/*)需要 Bearer API 金鑰。", + "authModelManagement": "管理端點(/dashboard、/api/*)需要儀表盤會話或管理憑據。", + "authModelPublic": "只有登入、健康檢查和引導路由是公開的。", + "bruteForceProtection": "登入暴力破解保護", + "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 指紋", + "enableFingerprintTitle": "為 {provider} 啟用指紋", + "disableFingerprintTitle": "為 {provider} 停用指紋", + "systemTransforms": "系統塊轉換管道", + "systemTransformsDesc": "在轉發之前,每個提供者訂購的轉換管道應用於請求正文。支援任何提供商 ID。", + "systemTransformsAddProvider": "新增提供商", + "systemTransformsAddProviderPlaceholder": "選擇提供商...", + "systemTransformsAddProviderAllConfigured": "所有提供商均已配置", + "systemTransformsRemoveProvider": "刪除提供商", + "systemTransformsNoProviders": "沒有配置提供者。新增提供商即可開始。", + "systemTransformsOpMoveUp": "向上移動", + "systemTransformsOpMoveDown": "下移", + "systemTransformsOpDelete": "刪除操作", + "routingStrategy": "路由策略", + "routingAdvancedGuideTitle": "高階路由指南", + "routingAdvancedGuideHint1": "需要可預測優先順序時使用 Fill First,需要公平分配時使用 Round Robin,需要延遲彈性時使用 P2C。", + "routingAdvancedGuideHint2": "如果各提供商在質量或成本上差異明顯,後臺任務可優先考慮“成本最佳化”,需要均衡消耗時可從“最少使用”開始。", + "fillFirst": "優先填滿", + "fillFirstDesc": "按優先順序順序使用帳戶", + "roundRobin": "輪詢", + "roundRobinDesc": "在所有帳戶之間輪流分配", + "p2c": "P2C", + "p2cDesc": "隨機選2個,使用更健康的一個", + "random": "隨機", + "randomDesc": "每次請求隨機選擇帳戶", + "leastUsed": "最少使用", + "leastUsedDesc": "優先選擇最近使用最少的帳戶", + "costOpt": "成本最佳化", + "costOptDesc": "優先選擇成本最低的可用帳戶", + "resetAware": "復位感知RR", + "resetAwareDesc": "優先選擇剩餘配額正常且重置時間較近的帳戶", + "strictRandom": "嚴格隨機", + "strictRandomDesc": "洗牌池模式:每個帳戶使用一次後再重新洗牌", + "stickyLimit": "粘性限制", + "stickyLimitDesc": "切換前每個帳戶連續處理的請求次數", + "modelAliases": "模型別名", + "modelAliasesTitle": "模型別名", + "modelAliasesDesc": "使用精確匹配或萬用字元模式重對映模型名稱。", + "addCustomAlias": "新增自定義別名", + "deprecatedModelId": "已棄用的模型 ID", + "newModelId": "新模型 ID", + "customAliases": "自定義別名", + "builtInAliases": "內建別名", + "backgroundDegradationTitle": "後臺任務降級", + "backgroundDegradationDesc": "自動檢測後臺任務(標題、摘要)並路由到更便宜的模型", + "enableDegradation": "啟用後臺任務降級", + "enableDegradationHint": "啟用後,標題生成和摘要等後臺任務會自動路由到更便宜的模型", + "tasksDetected": "檢測到的任務", + "degradationMap": "模型降級對映", + "premiumModel": "高階模型", + "cheapModel": "低成本模型", + "detectionPatterns": "檢測模式", + "newPattern": "例如:\"生成標題\"", + "aliasPatternPlaceholder": "claude-sonnet-*", + "aliasTargetPlaceholder": "claude-sonnet-4-20250514", + "pattern": "圖案", + "targetModel": "目標模型", + "add": "+ 新增", + "session": "會話", + "sessionDetailsAria": "會話詳情", + "status": "狀態", + "authenticated": "已認證", + "guest": "嘉賓", + "loginTime": "登入時間", + "sessionAge": "會話年齡", + "browser": "瀏覽器", + "clearLocalData": "清除本地資料", + "logout": "退出", + "clearLocalDataConfirm": "清除所有本地資料?這將重置您的首選項。", + "unknown": "未知", + "systemActor": "系統", + "ipAccessControl": "IP訪問控制", + "ipAccessControlDesc": "阻止或允許特定 IP 地址", + "ipModeDisabled": "已停用", + "ipModeBlacklist": "黑名單", + "ipModeWhitelist": "白名單", + "ipModeWhitelistPriority": "WL優先順序", + "addIpAddress": "新增IP地址", + "ipAddressPlaceholder": "192.168.1.0/24 或 10.0.*.*", + "block": "+ 遮蔽", + "allow": "+ 允許", + "blocked": "已被阻止 ({count})", + "allowed": "允許 ({count})", + "temporaryBans": "臨時禁令 ({count})", + "minLeft": "還剩 {min}m", + "auditLog": "稽核日誌", + "searchAuditLogs": "搜尋稽核日誌...", + "failedLoadAuditLog": "無法載入稽核日誌", + "noAuditEvents": "未找到稽核事件", + "action": "操作", + "actor": "操作人", + "details": "詳情", + "time": "時間", + "fallbackChainsTitle": "後備鏈", + "fallbackChainsDesc": "定義每個模型的提供商後備順序", + "addChain": "+ 新增鏈", + "modelName": "模型名稱", + "modelNamePlaceholder": "claude-sonnet-4-20250514", + "providersCommaSeparated": "提供商(用逗號分隔,按優先順序排序)", + "providersCommaSeparatedPlaceholder": "anthropic, openai, gemini", + "createChain": "建立鏈", + "noFallbackChains": "無後備鏈", + "noFallbackChainsDesc": "建立一條鏈路,用於定義某個模型的提供商回退順序。", + "loadingFallbackChains": "正在載入後備鏈...", + "deleteChainConfirm": "刪除“{model}”的後備鏈?", + "chainCreated": "為 {model} 建立的鏈", + "chainDeleted": "已刪除 {model} 鏈", + "failedCreateChain": "建立鏈失敗", + "failedDeleteChain": "刪除鏈失敗", + "deleteChain": "刪除鏈", + "fillModelAndProviders": "請填寫模型名稱和提供商", + "addAtLeastOneProvider": "新增至少一個提供商", + "comboDefaultsTitle": "組合預設值", + "comboDefaultsGuideTitle": "如何調整組合預設值", + "comboDefaultsGuideHint1": "在低延遲流中保持較低的重試次數;僅增加長生成任務的超時。", + "comboDefaultsGuideHint2": "當一個提供程式需要與全域性預設值不同的超時/重試行為時,請使用提供程式覆蓋。", + "globalComboConfig": "全域性組合配置", + "defaultStrategy": "預設策略", + "defaultStrategyDesc": "應用於沒有明確策略的新組合", + "comboStrategyAria": "組合策略", + "priority": "優先順序", + "weighted": "加權", + "contextRelay": "上下文接力", + "contextRelayDesc": "在帳戶輪換髮生時,採用優先順序風格路由並自動執行上下文交接", + "maxRetriesLabel": "最大重試次數", + "retryDelayLabel": "重試延遲(毫秒)", + "timeoutLabel": "超時(毫秒)", + "healthCheck": "健康檢查", + "healthCheckDesc": "預先檢查提供商的可用性", + "trackMetrics": "跟蹤指標", + "trackMetricsDesc": "記錄每個組合請求指標", + "providerOverrides": "提供商覆蓋", + "providerOverridesDesc": "覆蓋每個提供商的超時和重試。提供商設定會覆蓋全域性預設設定。", + "providerMaxRetriesAria": "{provider} 最大重試次數", + "providerTimeoutAria": "{provider} 超時毫秒", + "removeProviderOverrideAria": "刪除 {provider} 覆蓋", + "selectProviderPlaceholder": "__MISSING__:Select provider...", + "searchProviderPlaceholder": "__MISSING__:Search providers...", + "searchProviderAria": "__MISSING__:Search providers", + "newProviderNamePlaceholder": "例如 google、openai...", + "newProviderNameAria": "新的提供商名稱", + "retries": "重試", + "ms": "毫秒", + "saveComboDefaults": "儲存組合預設值", + "maxNestingDepth": "最大巢狀深度", + "concurrencyPerModel": "併發/模型", + "queueTimeout": "佇列超時(毫秒)", + "queueDepth": "__MISSING__:Queue Depth", + "contextRelayHandoffThreshold": "交接閾值", + "contextRelayMaxMessages": "摘要最大訊息數", + "contextRelaySummaryModel": "摘要模型", + "contextRelayProviderNote": "Context Relay 當前會為 Codex 帳戶生成交接摘要,並將這些值作為新的或未配置 combo 的全域性預設值。", + "providerProfiles": "提供商策略配置", + "providerProfilesDesc": "為 OAuth(基於會話)和 API Key(計費型)提供商分別設定彈性策略。由於速率限制更低,OAuth 提供商通常採用更嚴格的閾值。", + "oauthProviders": "OAuth 提供商", + "apiKeyProviders": "API 金鑰提供商", + "transientCooldown": "瞬時故障冷卻", + "rateLimitCooldown": "限流冷卻", + "maxBackoffLevel": "最大退避級別", + "cbThreshold": "熔斷閾值", + "cbResetTime": "熔斷重置時間", + "rateLimiting": "速率限制", + "rateLimitingDesc": "API 金鑰提供商會自動受到安全預設值的速率限制。限制是從響應標頭中學習的,並隨著時間的推移進行調整。", + "defaultSafetyNet": "預設安全網", + "rpm": "RPM", + "minGap": "最小間隔", + "maxConcurrent": "最大併發數", + "activeLimiters": "活動限流器", + "noActiveLimiters": "尚無活動的速率限制器。", + "reservoir": "令牌池", + "running": "執行中", + "queued": "排隊中", + "circuitBreakers": "斷路器", + "breakerStateClosed": "閉合", + "breakerStateOpen": "斷開", + "breakerStateHalfOpen": "半開", + "tripped": "{count} 已觸發", + "healthy": "{count} 健康", + "resetAll": "全部重置", + "noCircuitBreakers": "尚未啟用斷路器。當請求流經組合管道時,它們會自動建立。", + "failures": "{count} 失敗", + "policiesLocked": "策略和鎖定識別符號", + "allOperational": "所有系統均可執行——無停工或斷路器跳閘", + "loadingPolicies": "正在載入策略...", + "lockedIdentifiers": "鎖定識別符號", + "unlockedIdentifier": "解鎖:{identifier}", + "sinceDate": "自 {date} 起", + "forceUnlock": "強制解鎖", + "unlocking": "解鎖...", + "failedUnlock": "解鎖失敗", + "failedLoadWithStatus": "載入失敗:{status}", + "failedLoadResilience": "無法載入彈性狀態", + "saveFailed": "儲存失敗", + "resetFailed": "重置失敗", + "loadingResilience": "正在載入彈性狀態...", + "retry": "重試", + "systemStorage": "系統與儲存", + "allDataLocal": "所有資料都儲存在本地計算機上", + "databasePath": "資料庫路徑", + "export": "匯出", + "exportDatabase": "匯出資料庫", + "exportAll": "全部匯出 (.tar.gz)", + "importDatabase": "匯入資料庫", + "confirmDbImport": "確認資料庫匯入", + "confirmDbImportDesc": "這會將所有當前資料替換為 {file} 中的內容。匯入前將自動建立備份。", + "yesImport": "是的,匯入", + "lastBackup": "上次備份", + "noBackupYet": "還沒有備份", + "backupNow": "立即備份", + "backupRestore": "備份與恢復", + "viewBackups": "檢視備份", + "hide": "隱藏", + "backupRetentionDesc": "資料庫快照會在還原之前自動建立,並且在資料更改時每 15 分鐘自動建立一次。保留:24 小時 + 30 每日備份,智慧輪換。", + "loadingBackups": "正在載入備份...", + "noBackupsYet": "尚無可用的備份。當資料發生變化時,將自動建立備份。", + "backupsAvailable": "{count} 可用備份", + "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 金鑰。", + "minutesAgo": "{count} 分鐘前", + "hoursAgo": "{count} 小時前", + "daysAgo": "{count} 天前", + "backupReasonManual": "手動", + "backupReasonPreRestore": "預恢復", + "connectionsCount": "{count, plural, one {# 個連線} other {# 個連線}}", + "noChangesSinceBackup": "自上次備份以來沒有任何變化", + "backupFailed": "備份失敗", + "restoreFailed": "恢復失敗", + "importFailed": "匯入失敗", + "errorDuringRestore": "恢復期間發生錯誤", + "errorDuringImport": "匯入時發生錯誤", + "modelPricing": "模型定價", + "modelPricingDesc": "配置每個模型的成本費率 • 所有費率均以美元/100 萬 Tokens 為單位", + "registry": "登記處", + "priced": "定價", + "searchProvidersModels": "搜尋提供商或模型...", + "showAll": "顯示全部", + "noProvidersMatch": "沒有與您的搜尋匹配的提供商。", + "howPricingWorks": "定價如何運作", + "cacheWrite": "快取寫入", + "unsaved": "未儲存", + "resetDefaults": "重置預設值", + "saveProvider": "儲存提供商", + "model": "模型", + "models": "模型", + "moreProviders": "{count} 更多提供商", + "withPricing": "已配置定價", + "policiesCircuitBreakers": "策略與斷路器", + "activeIssuesDetected": "檢測到活躍問題", + "off": "關閉", + "resetPricingConfirm": "將 {provider} 的所有定價重置為預設值?", + "pricingDescInput": "輸入:傳送到模型的令牌", + "pricingDescOutput": "輸出:生成的 Tokens", + "pricingDescCached": "快取:重用輸入(約輸入率的 50%)", + "pricingDescReasoning": "推理:思考 Tokens(預設回退到輸出費率)", + "pricingDescCacheWrite": "快取寫入:建立快取條目(回退到輸入)", + "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(回退到輸入費率)", + "customPricingNote": "你可以覆蓋特定模型的預設定價。自定義覆蓋會優先於自動檢測到的定價。", + "editPricing": "編輯定價", + "viewFullDetails": "檢視完整詳情", + "themeCoral": "珊瑚色", + "adaptiveVolumeRouting": "自適應流量路由", + "adaptiveVolumeRoutingDesc": "根據即時負載量和吞吐壓力,動態調整各提供商連線承載的流量。", + "lkgpToggleTitle": "最後已知良好提供商(LKGP)", + "lkgpToggleDesc": "啟用後,路由器會記住上一次成功返回響應的提供商,並在後續請求中優先嚐試它。", + "echoRequestedModelTitle": "__MISSING__:Echo requested model name in responses", + "echoRequestedModelDesc": "__MISSING__:When enabled, the response `model` field echoes the alias or combo name the client requested instead of the upstream model name. Fixes strict clients (e.g. Claude Desktop) that reject a response whose model does not match the request.", + "webSearchRouteTitle": "__MISSING__:Web search routing", + "webSearchRouteDesc": "__MISSING__:When a request includes a native web_search tool, route the whole request to this model instead of the default — useful for providers that don't implement Anthropic's web_search server tool. Leave blank to disable.", + "webSearchRoutePlaceholder": "__MISSING__:e.g. openrouter,anthropic/claude-3.5-sonnet", + "clearLkgpCache": "清除 LKGP 快取", + "lkgpCacheCleared": "LKGP 快取已成功清除", + "lkgpCacheClearFailed": "清除 LKGP 快取失敗", + "days": "天", + "lkgp": "LKGP 模式", + "lkgpDesc": "最後已知良好提供商(可預測的彈性)", + "maintenance": "維護", + "purgeExpiredLogs": "清理過期日誌", + "purgeLogsFailed": "清理日誌失敗", + "logsDeleted": "__MISSING__:{count, plural, =0 {No expired logs purged} one {Purged # expired log} other {Purged # expired logs}}", + "resetUsageData": "__MISSING__:Reset Usage Data", + "resetUsageDataDesc": "__MISSING__:Select how far back you want to delete usage data. This action cannot be undone.", + "resetUsagePeriod_5m": "__MISSING__:5 minutes", + "resetUsagePeriod_1h": "__MISSING__:1 hour", + "resetUsagePeriod_3h": "__MISSING__:3 hours", + "resetUsagePeriod_6h": "__MISSING__:6 hours", + "resetUsagePeriod_12h": "__MISSING__:12 hours", + "resetUsagePeriod_1d": "__MISSING__:1 day", + "resetUsagePeriod_7d": "__MISSING__:7 days", + "resetUsagePeriod_30d": "__MISSING__:30 days", + "resetUsagePeriod_all": "__MISSING__:All time", + "resetUsageSuccess": "__MISSING__:{count, plural, =0 {No usage data rows deleted} one {Reset usage data (# row deleted)} other {Reset usage data (# rows deleted)}}", + "resetUsageFailed": "__MISSING__:Failed to reset usage data", + "reset": "__MISSING__:Reset", + "resetting": "__MISSING__:Resetting...", + "contextOpt": "上下文最佳化", + "contextOptDesc": "根據上下文視窗需求和對話長度進行路由", + "priorityDesc": "順序回退——先嚐試提供商 1,再嘗試提供商 2,依此類推", + "weightedDesc": "按百分比權重在各提供商之間分配流量", + "modelRoutingTitle": "模型路由規則", + "modelRoutingDesc": "使用 glob 模式自動將模型路由到指定組合", + "addRule": "新增規則", + "routeToCombo": "路由到組合", + "selectCombo": "選擇組合...", + "priorityHint": "數值越高越優先檢查。具體模式建議使用 10+。", + "patternHint": "使用 * 匹配任意字元,? 匹配單個字元。不區分大小寫。", + "noRoutingRules": "未配置路由規則。請求預設使用全域性組合。", + "routingRuleHint": "新增類似 claude-opus* -> frontier-combo 的規則,以自動路由請求。", + "deleteRoutingRule": "刪除此模型路由規則?", + "exactMatchMode": "精確匹配", + "wildcardPatternMode": "萬用字元模式", + "exactMatchModeDesc": "對已棄用或已重新命名的模型 ID 使用精確別名。", + "wildcardPatternModeDesc": "當一組模型應對映到同一目標時,使用帶 * 和 ? 的萬用字元別名。", + "noExactAliasesConfigured": "未配置精確匹配別名。", + "wildcardRulesTitle": "萬用字元規則", + "noWildcardAliasesConfigured": "未配置萬用字元別名。", + "overview": "概覽", + "unknownError": "未知錯誤", + "pricingSourceLiteLLM": "LiteLLM 定價來源", + "clearSyncedPricingConfirm": "確定要清除已同步的定價嗎?", + "clearSyncedPricingFailed": "清除已同步定價失敗", + "pricingSourceUser": "使用者定價來源", + "pageDescription": "頁面描述", + "pricingSyncStatus": "定價同步狀態", + "whitelist": "白名單", + "syncDisabled": "同步已停用", + "pricingLoadFailed": "載入定價失敗", + "pricingSyncDescription": "從 models.dev 同步模型定價和能力資料。", + "clearSyncedPricingSuccess": "已清除同步定價", + "clearSyncedPricingFailedWithReason": "清除價格失敗:{reason}", + "pricingSourceDefault": "預設定價來源", + "pricingSyncSuccess": "定價同步成功", + "enableSyncError": "啟用同步失敗", + "syncEnabled": "同步已啟用", + "blacklist": "黑名單", + "pricingSourceModelsDev": "models.dev 定價來源", + "syncedModels": "已同步模型", + "budget": "預算", + "pricingSyncTitle": "定價同步", + "pricingResetFailedWithReason": "重置價格失敗:{reason}", + "tab": "選項卡", + "pricingSavedProvider": "已儲存 {provider} 的價格", + "pricingSyncFailed": "定價同步失敗", + "pricingSaveFailedWithReason": "儲存價格失敗:{reason}", + "pricingResetProvider": "已重置 {provider} 的價格", + "nextSync": "下次同步", + "pricingSyncFailedWithReason": "價格同步失敗:{reason}", + "clearSyncedPricing": "清除同步定價", + "compressionTitle": "提示詞壓縮", + "compressionDesc": "在傳送給提供商之前壓縮提示詞,以減少 token 使用量", + "tokenSaverTitle": "Token Saver", + "tokenSaverSubtitle": "讓每次請求消耗更少 token。", + "tokenSaverToolOutput": "工具輸出", + "tokenSaverToolOutputDesc": "在傳送給提供商前清理 git、grep、ls、tree 和日誌輸出。", + "tokenSaverLlmOutput": "LLM 輸出", + "tokenSaverLlmOutputDesc": "注入簡潔回覆指令,不改寫提供商輸出。", + "tokenSaverInputCompression": "輸入壓縮", + "tokenSaverInputCompressionDesc": "在保留程式碼、URL 和意圖的前提下改寫可壓縮的對話歷史。", + "tokenSaverFineTunePrefix": "可在以下頁面微調各引擎:", + "tokenSaverFineTuneSuffix": "或按請求組合引擎:", + "compressionMode": "壓縮模式", + "compressionModeOff": "關閉", + "compressionModeOffDesc": "不應用壓縮", + "compressionModeLite": "精簡", + "compressionModeLiteDesc": "減少空白字元和空行", + "compressionModeStandard": "標準(Caveman)", + "compressionModeStandardDesc": "基於規則的壓縮,包含 30+ 個模式,並保留程式碼塊和 URL", + "compressionModeAggressive": "激進", + "compressionModeAggressiveDesc": "摘要 + 工具結果壓縮 + 漸進老化,以實現最大節省", + "compressionModeUltra": "極速", + "compressionModeUltraDesc": "使用包括語義去重在內的全部技術進行最大壓縮", + "compressionAggressiveConfig": "Aggressive 引擎配置", + "compressionAggressiveConfigDesc": "微調摘要、工具壓縮和老化閾值", + "compressionUltraConfig": "Ultra 引擎配置", + "compressionUltraConfigDesc": "微調啟發式剪枝、SLM 後備和每條訊息閾值", + "compressionUltraRate": "保留比例", + "compressionUltraMinScore": "最低分數閾值", + "compressionUltraSlmFallback": "回退到 Aggressive", + "compressionUltraModelPath": "SLM 模型路徑", + "compressionUltraEngine": "__MISSING__:Ultra tier", + "compressionUltraEngineHeuristic": "__MISSING__:Heuristic (Tier-A, default)", + "compressionUltraEngineSlm": "__MISSING__:SLM (LLMLingua-2, opt-in)", + "compressionUltraSlmHint": "__MISSING__:SLM downloads a small ONNX model on first use (cold-start) and transparently falls back to the heuristic on timeout or if unavailable.", + "compressionUltraSlmPrewarm": "__MISSING__:Pre-warm SLM model on enable", + "compressionSummarizerEnabled": "啟用摘要器", + "compressionMaxTokensPerMessage": "每條訊息最大 Token 數", + "compressionMinSavings": "最低節省閾值", + "compressionAgingThresholds": "老化閾值", + "compressionAgingThresholdsDesc": "每個老化層級保留的最近訊息數量(越高表示保留越多)", + "compressionToolStrategies": "工具結果策略", + "compressionToolStrategiesDesc": "為不同工具結果型別切換壓縮策略", + "compressionGeneral": "通用設定", + "compressionAutoTrigger": "自動觸發閾值", + "compressionCacheTTL": "快取 TTL", + "compressionPreserveSystem": "保留系統提示", + "compressionPreserveSystemAlways": "__MISSING__:Always", + "compressionPreserveSystemWhenNoCache": "__MISSING__:When no cache", + "compressionPreserveSystemNever": "__MISSING__:Never", + "compressionCavemanConfig": "Caveman 引擎配置", + "compressionCavemanConfigDesc": "微調基於規則的壓縮引擎", + "compressionCavemanPanelHint": "__MISSING__:Its on/off and level are set in the panel:", + "compressionRoles": "壓縮訊息角色", + "compressionRoleUser": "使用者", + "compressionRoleAssistant": "助手", + "compressionRoleSystem": "系統", + "compressionMinLength": "最小訊息長度", + "compressionSkipRules": "跳過壓縮規則", + "compressionSkipRulesDesc": "點選規則以在壓縮時跳過它們", + "compressionPreservePatterns": "保留模式", + "compressionPreservePatternsDesc": "永不壓縮的正規表示式模式(每行一個)", + "compressionLogTitle": "壓縮日誌", + "compressionLogEmpty": "尚無壓縮請求。啟用壓縮後處理請求時,壓縮統計會顯示在這裡。", + "minutes": "分鐘", + "compressionModeRtk": "RTK", + "compressionModeRtkDesc": "感知命令的工具輸出過濾", + "compressionModeStacked": "堆疊", + "compressionModeStackedDesc": "先進行 RTK 工具輸出過濾,再進行 Caveman 訊息壓縮", + "qdrantTitle": "Qdrant(向量記憶體)", + "qdrantDesc": "可選。在外部向量資料庫中索引語義記憶以加快檢索速度。", + "qdrantStatusActive": "活躍", + "qdrantStatusError": "錯誤", + "qdrantStatusDisabled": "殘疾人", + "qdrantEnable": "啟用 Qdrant", + "qdrantEnableDesc": "啟用後,語義/混合策略可以使用 Qdrant 來檢索記憶。", + "qdrantTesting": "測試...", + "qdrantTestConnection": "測試連線", + "qdrantSaved": "配置已儲存", + "qdrantSaveError": "儲存配置失敗", + "qdrantHostHint": "沒有埠。示例:127.0.0.1 或 http://qdrant", + "qdrantPort": "港口", + "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。", + "qdrantHelpStep3": "3. 模型欄位:openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free。", + "qdrantHelpStep4": "4. 儲存,測試連線,然後測試搜尋。", + "qdrantEmbeddingQuickSelect": "從發現的模型中快速選擇...", + "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", + "qdrantEmbeddingHint": "格式:提供商/模型。必須配置提供者憑證。", + "qdrantApiKeyPlaceholderKeep": "(留空以保留當前金鑰)", + "qdrantApiKeyPlaceholderOptional": "(如不用則留空)", + "qdrantSaveHint": "提示:編輯主機/埠/集合/模型,然後單擊“儲存”。 API 金鑰是可選的。", + "qdrantSearchTestTitle": "搜尋測試", + "qdrantSearchTestDesc": "在 Qdrant 中生成嵌入和搜尋。", + "qdrantSearchPlaceholder": "示例:使用者偏好、歷史記錄等", + "qdrantNoResults": "無結果(或未配置 Qdrant)。", + "qdrantCleanupTitle": "保留和清理", + "qdrantCleanupDesc": "根據以下內容刪除過期和舊的積分", + "searching": "正在尋找...", + "cleaning": "清潔...", + "cleanNow": "立即清潔", + "optional": "可選", + "current": "當前", + "remove": "刪除", + "search": "搜尋", + "oneproxyTitle": "1proxy 免費代理市場", + "oneproxyTotalProxies": "代理總數", + "oneproxyAvgQuality": "平均質量", + "resilienceScope": "範圍:", + "resilienceTrigger": "觸發:", + "resilienceEffect": "效果:", + "resilienceRequestQueueTitle": "請求佇列與速率", + "resilienceAutoEnableApiKeyProviders": "為 API 金鑰提供商自動啟用", + "resilienceRequestsPerMinute": "每分鐘請求數", + "resilienceMinTimeBetweenRequests": "請求之間的最小時間", + "resilienceConcurrentRequests": "併發請求數", + "resilienceMaxQueueWaitTime": "最大佇列等待時間", + "resilienceBaseCooldown": "基礎冷卻時間", + "resilienceUseUpstreamRetryHints": "使用上游重試提示", + "resilienceDefaultPerProvider": "預設(按提供商)", + "resilienceAlwaysOn": "始終開啟", + "resilienceAlwaysOff": "始終關閉", + "routingRemoveEntry": "刪除條目", + "routingNeedlesSubstrings": "Needles(要匹配的子字串)", + "routingCaseSensitive": "區分大小寫", + "routingPrefixes": "字首", + "routingMatch": "比賽", + "routingReplacement": "更換", + "routingReplaceAllOccurrences": "替換所有出現的地方", + "routingPatternRegex": "模式(正規表示式)", + "routingFlags": "旗幟", + "routingNeedles": "針", + "routingBlockText": "塊文本", + "routingIdempotencyKey": "冪等性金鑰", + "routingEntrypoint": "入口點", + "routingVersionFormat": "版本格式", + "routingCchAlgorithm": "CCH演算法", + "routingWordsToObfuscate": "要混淆的單詞(在第一個字元後插入 ZWJ)", + "logsSettingsTitle": "日誌設定", + "detailedLogsLabel": "啟用詳細日誌", + "detailedLogsDesc": "啟用詳細的請求/響應日誌記錄", + "callLogPipelineLabel": "呼叫日誌管道", + "callLogPipelineDesc": "啟用通話記錄處理管道", + "maxDetailSizeLabel": "最大細節大小 (KB)", + "maxDetailSizeDesc": "詳細日誌條目的最大大小", + "ringBufferSizeLabel": "環形緩衝區大小", + "ringBufferSizeDesc": "日誌環形緩衝區的大小", + "semanticCacheEnabledLabel": "語義快取啟用", + "semanticCacheMaxSizeLabel": "語義快取最大大小", + "semanticCacheMaxSizeDesc": "語義快取條目的最大數量", + "semanticCacheTTLLabel": "語義快取 TTL", + "promptCacheEnabledLabel": "提示快取已啟用", + "promptCacheEnabledDesc": "啟用提示快取", + "promptCacheStrategyLabel": "提示快取策略", + "promptCacheStrategyDesc": "即時快取策略", + "alwaysPreserveClientCacheLabel": "始終保留客戶端快取", + "alwaysPreserveClientCacheDesc": "客戶端快取儲存策略", + "logRetentionPolicyTitle": "日誌保留策略", + "resilienceUseUpstream429HintsForBreaker": "使用上游 429 提示(斷路器)", + "appearanceLogoPreviewAlt": "標誌預覽", + "appearanceFaviconPreviewAlt": "圖示預覽", + "oneproxyLastSync": "上次同步", + "oneproxyAllProtocols": "所有協議", + "oneproxyCountryCodePlaceholder": "國家/地區程式碼(例如美國)", + "oneproxyMinQualityPlaceholder": "最低質量", + "oneproxyLoadingProxies": "正在載入代理...", + "oneproxyLastSyncLabel": "上次同步:", + "oneproxyProxiesFetched": "獲取的代理:", + "oneproxyConsecutiveFailures": "連續失敗:", + "oneproxyErrorLabel": "錯誤:", + "oneproxyNever": "從來沒有", + "oneproxySyncStatusTitle": "同步狀態", + "oneproxySuccess": "成功", + "oneproxyFailed": "失敗", + "routingAntigravitySignatureTitle": "反重力簽名快取模式", + "routingAntigravitySignatureDesc": "控制 OmniRoute 在 Antigravity 相容的工具呼叫流程中是僅複用已儲存的 Gemini thought 簽名,還是接受經校驗的客戶端提交簽名。", + "routingAntigravitySignatureEnabledLabel": "啟用", + "routingAntigravitySignatureEnabledDesc": "當前行為。忽略客戶端提交的簽名,繼續使用 OmniRoute 已儲存的流程。", + "routingAntigravitySignatureBypassLabel": "繞過", + "routingAntigravitySignatureBypassDesc": "經過輕量校驗後接受客戶端提交的簽名,無效時回退到已儲存的簽名。", + "routingAntigravitySignatureBypassStrictLabel": "嚴格繞過", + "routingAntigravitySignatureBypassStrictDesc": "在接受客戶端提交的簽名前要求完整的 protobuf 校驗。", + "routingHeaderFingerprintTitle": "標頭指紋(每個提供商)", + "routingServerRejectedSave": "⚠ 伺服器拒絕儲存:", + "routingAddTransformOp": "新增變換操作", + "routingClientCacheControlTitle": "客戶端快取控制", + "routingClientCacheControlDesc": "配置 OmniRoute 是否保留客戶端提交的 cache_control 標記", + "routingClientCacheControlAutoDesc": "對於確定性的 Claude 相容流程,按原樣保留客戶端提交的 cache_control。如果請求未攜帶 cache_control,OmniRoute 不會注入任何由橋接器擁有的標記,以相容 CC 相容的第三方代理。", + "routingClientCacheControlAlwaysLabel": "始終保留", + "routingClientCacheControlAlwaysDesc": "始終按原樣將客戶端提交的 cache_control 請求頭轉發給上游提供商。", + "routingClientCacheControlNeverLabel": "從不保留", + "routingClientCacheControlNeverDesc": "始終移除客戶端的 cache_control 請求頭,在原生提供商流程支援時由 OmniRoute 管理快取。", + "routingZeroConfigTitle": "零配置自動路由", + "routingZeroConfigDesc": "啟用使用 auto/ 字首的自動提供商選擇。啟用後,發往 auto、auto/coding、auto/fast 等的請求將在所有已連線提供商之間動態路由。", + "routingDefaultAutoVariant": "預設自動變體", + "visionBridge": "願景橋", + "visionBridgeDesc": "在將影像請求路由到純文本模型之前,自動執行一次視覺到文本的回退。", + "visionBridgeEnabledLabel": "啟用", + "visionBridgeEnabledDesc": "切換預呼叫橋接,將影像內容替換為提取出的文本。", + "visionBridgeModel": "橋樑模型", + "visionBridgeModelPlaceholder": "openai/gpt-4o-mini", + "visionBridgeModelHint": "可使用任何支援視覺的 OmniRoute 模型 ID。", + "visionBridgePrompt": "橋接提示", + "visionBridgePromptPlaceholder": "簡要描述一下這張圖片。", + "visionBridgePromptHint": "在將提取出的描述注入回原始請求前,先發送給視覺模型。", + "visionBridgeTimeoutMs": "超時(毫秒)", + "visionBridgeMaxImagesPerRequest": "每個請求的最大影像數", + "resilienceMaxBackoffSteps": "最大退避步數", + "resilienceProviderBreakerTitle": "按提供商的斷路器", + "resilienceFailureThreshold": "失敗閾值", + "resilienceDegradationThreshold": "Degradation threshold", + "resilienceResetTimeout": "重置超時", + "resilienceFailureThresholdLabel": "失敗閾值", + "resilienceResetTimeoutLabel": "重置超時", + "resilienceConnectionCooldownTitle": "連線冷卻", + "resilienceUseUpstreamRetryHintsLabel": "使用上游重試提示", + "resilienceUseUpstream429BreakerLabel": "使用上游 429 提示(斷路器)", + "resilienceMaxBackoffStepsLabel": "最大退避步數", + "resilienceYes": "是的", + "resilienceNo": "否", + "resilienceDefault": "預設", + "storageDatabaseBackupRetention": "資料庫備份保留", + "storageDatabaseBackups": "__MISSING__:Database backups", + "storagePurgeData": "清除資料", + "storagePurgeDataDesc": "__MISSING__:Immediately delete all records without applying retention checks. Use with caution.", + "storageRetentionCleanup": "__MISSING__:Retention Settings", + "storageRetentionCleanupDesc": "__MISSING__:Configure operational record retention and database backup cleanup.", + "retentionCallDays": "__MISSING__:Call {count}d", + "retentionAppDays": "__MISSING__:App {count}d", + "retentionRows": "__MISSING__:{count} rows", + "retentionQuotaSnapshots": "配額快照(天)", + "retentionCompressionAnalytics": "__MISSING__:Compression Analytics (days)", + "retentionMcpAudit": "MCP 稽核(天)", + "retentionA2aEvents": "A2A 活動(天)", + "retentionCallLogs": "通話記錄(天)", + "retentionUsageHistory": "使用歷史(天)", + "retentionMemoryEntries": "記憶體條目(天)", + "saveRetentionSettings": "__MISSING__:Save retention settings", + "storageAutoVacuumMode": "自動真空模式", + "storageScheduledVacuum": "預定真空", + "storageVacuumHour": "真空時間(0-23)", + "storagePageSize": "頁面大小(位元組)", + "storageDatabaseSize": "資料庫大小", + "storagePageCount": "頁數", + "storageFreelistCount": "空閒列表計數", + "storageLastVacuum": "最後一次真空", + "storageLastOptimization": "最後最佳化", + "storageIntegrityCheck": "完整性檢查", + "storageIntegrityOk": "✓ 確定", + "storageIntegrityError": "✗ 錯誤", + "storageUsageTokenBuffer": "使用令牌緩衝區", + "storageUsageTokenBufferDesc": "__MISSING__:Extra tokens added to reported usage to account for system prompt overhead.", + "storageUsageTokenBufferHint": "__MISSING__:Set to 0 to report raw provider token counts. Default: 2000.", + "storageUsageTokenBufferCurrent": "__MISSING__:Current: {value}", + "redisLauncherTitle": "__MISSING__:Local Redis", + "redisLauncherDesc": "__MISSING__:One-click launch a Redis 7 container (Podman or Docker) for response cache, quota tracking, and rate limiting.", + "redisLauncherRefresh": "__MISSING__:Refresh", + "redisLauncherStop": "__MISSING__:Stop", + "redisLauncherLaunching": "__MISSING__:Launching...", + "redisLauncherLaunch": "__MISSING__:Launch Redis", + "redisLauncherContainer": "__MISSING__:Container", + "redisLauncherRunning": "__MISSING__:Running", + "redisLauncherReachable": "__MISSING__:Reachable", + "redisLauncherError": "__MISSING__:Error: {message}", + "redisLauncherHint": "__MISSING__:Equivalent to running `omniroute redis up`. The container is named `omniroute-redis` and listens on 127.0.0.1:6379.", + "compressionSettingsAutoTriggerMode": "自動觸發模式", + "compressionSettingsMcpDescriptionCompression": "MCP描述壓縮", + "mcpAccessibilityTitle": "__MISSING__:MCP accessibility output", + "compressionSettingsCavemanIntensity": "穴居人強度", + "compressionSettingsCavemanOutputMode": "穴居人輸出模式", + "compressionSettingsOutputStyles": "__MISSING__:Output styles", + "compressionStylesTileTitle": "__MISSING__:Output styles", + "compressionSettingsOutputIntensity": "輸出強度", + "compressionSettingsAutoClarityBypass": "自動清晰度旁路", + "resilienceWaitForCooldown": "等待冷卻", + "resilienceEnableServerSideWait": "啟用伺服器端等待", + "resilienceMaximumRetries": "最大重試次數", + "resilienceMaximumWaitPerRetry": "每次重試的最長等待時間", + "memorySkillsSkillsmpMarketplace": "SkillsMP 市場", + "memorySkillsFailedToSave": "儲存失敗", + "memorySkillsApiKey": "API金鑰", + "memorySkillsActiveSkillsProvider": "主動技能提供者", + "cliproxyapiFallback": "CLIProxyAPI 後備", + "cliproxyapiEnableFallback": "啟用 CLIProxyAPI 回退", + "cliproxyapiUrl": "CLIProxyAPI URL", + "cliproxyapiStatus": "CLIProxyAPI 狀態", + "cliproxyapiNotDetected": "未檢測到", + "cliproxyapiImportAuthTitle": "__MISSING__:Import accounts from CLIProxyAPI", + "cliproxyapiImportAuthDesc": "__MISSING__: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.", + "cliproxyapiImportAuthButton": "__MISSING__:Import accounts", + "payloadRulesTitle": "負載規則", + "payloadRulesDesc": "按模型與協議配置請求 payload 的變更。修改會持久化到設定中,並在儲存後立即熱載入到執行時。", + "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultDesc": "僅在外發 payload 缺少目標路徑時應用引數。", + "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideDesc": "強制將值寫入 payload,替換該路徑上已存在的任何內容。", + "payloadRuleFilterTitle": "filter", + "payloadRuleFilterDesc": "在向上遊發起請求前,從 payload 中移除被遮蔽的引數。", + "payloadRuleDefaultRawTitle": "defaultRaw", + "payloadRuleDefaultRawDesc": "與 default 類似,但會先嚐試將字串值解析為 JSON。儲存時也接受舊的輸入別名 default-raw。", + "payloadEditorTitle": "編輯器", + "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 規則", + "requestLimitsTitle": "請求限制", + "requestLimitsDesc": "配置全域性請求限制與併發保護。", + "maxRequestSizeLabel": "最大請求大小(MB)", + "maxRequestSizeDesc": "傳入 API 請求允許的最大大小。", + "maxResponseSizeLabel": "最大響應大小(MB)", + "maxResponseSizeDesc": "傳出 API 響應允許的最大大小。", + "maxRequestTokensLabel": "最大請求 Token 數", + "maxRequestTokensDesc": "單次請求允許的總 Token 上限。", + "maxResponseTokensLabel": "最大響應 Token 數", + "maxResponseTokensDesc": "單次響應允許的總 Token 上限。", + "modelCooldownsTitle": "處於冷卻狀態的模型", + "modelCooldownsEmpty": "目前沒有模型處於冷卻狀態。", + "responsesStateTitle": "響應狀態", + "responsesStateDesc": "控制 OmniRoute 如何處理 previous_response_id。", + "responsesStateModeLabel": "previous_response_id 處理", + "responsesStateModeAuto": "自動", + "responsesStateModeStrip": "剝離", + "responsesStateModePreserve": "保留", + "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 設定", + "codexFastTierTierLabel": "服務層級", + "codexFastTierTierPriority": "優先順序", + "codexFastTierTierFlex": "彈性", + "codexFastTierTierDefault": "預設", + "codexFastTierModelsLabel": "快速層模型", + "codexFastTierModelsHint": "啟用快速層後,只有勾選的模型會附帶 service_tier。", + "codexFastTierModelCheckbox": "為 {model} 啟用快速層", + "claudeFastModeTitle": "克勞德快速模式", + "claudeFastModeDesc": "選擇選定的克勞德請求進入人擇快速模式(速度:“快速”)。", + "claudeFastModeHint": "Anthropic 並未正式支援 SDK 樣式客戶端的快速模式。啟用後,OmniRoute 會轉發 X-CPA-Force-Fast-Mode 標頭,以便配對的 CLIProxyAPI 構建可以選擇欺騙入口點。只有列出的 Opus 模型才會受到 Anthropic 客戶端檢查的控制。訂閱層、最大計劃和快速模式信用餘額仍然在伺服器端強制執行 - 即使開啟切換,Anthropic 也可能返回 out_of_credits。", + "claudeFastModeModelsLabel": "應用於模型 ({count})", + "claudeFastModeModelCheckbox": "為 {model} 啟用快速模式", + "claudeFastModeSaveError": "無法更新克勞德快速模式設定", + "authz": { + "cors": { + "wildcard": { + "title": "__MISSING__:CORS is open to every origin (CORS_ALLOW_ALL=true)", + "desc": "__MISSING__:Any website can call this server's API from a visitor's browser. Use only on trusted networks — set explicit origins in ALLOWED_ORIGINS and disable CORS_ALLOW_ALL in production." + } + }, + "title": "授權清單", + "description": "5 級路由分類與即時繞過策略。讀取展示完整分類;變更操作需重新輸入管理密碼。", + "loading": "正在載入清單…", + "loadError": "載入授權清單失敗", + "tier": { + "LOCAL_ONLY": "僅本地", + "ALWAYS_PROTECTED": "始終受保護", + "MANAGEMENT": "管理", + "CLIENT_API": "客戶端 API", + "PUBLIC": "公開" + }, + "bypass": { + "section": "管理範圍繞過", + "kill_switch": { + "label": "繞過總開關", + "desc": "總開關。關閉時,無論按字首的列表如何,任何 LOCAL_ONLY 字首都無法從非環回地址訪問。" + }, + "prefix": { + "label": "可繞過的字首", + "desc": "管理範圍的 API 金鑰(或儀表盤會話)可從非環回地址訪問的 LOCAL_ONLY 字首。", + "add": "新增字首", + "placeholder": "/api/mcp/v2/", + "empty": "未配置任何字首,繞過實際處於關閉狀態。" + }, + "cli_tools_runtime_note": "可建立子程序的字首。編譯期已停用,無法設為可繞過。僅供檢視。" + }, + "password": { + "prompt": { + "label": "當前密碼", + "desc": "重新確認以應用涉及安全的變更。" + }, + "placeholder": "當前管理密碼", + "cancel": "取消", + "submit": "應用" + }, + "save": "儲存更改", + "saved": "授權設定已更新", + "pending": "存在未儲存的更改", + "badge": { + "bypassable": "可通過管理範圍繞過", + "strict": "嚴格環回", + "auth_required": "需要鑑權", + "public": "公開", + "always_protected": "始終受保護", + "spawn_capable": "可建立子程序" + }, + "error": { + "PASSWORD_REQUIRED": "需要輸入當前密碼才能應用這些更改。", + "PASSWORD_MISMATCH": "當前密碼不正確。", + "INSUFFICIENT_SCOPE": "API 金鑰缺少 manage 範圍。", + "BYPASS_PREFIX_NOT_ALLOWED": "其中一個或多個字首指向可建立子程序的路由,無法被繞過。", + "GENERIC": "更新授權設定失敗。" + } + }, + "resilienceBaseCooldownLabel": "基礎冷卻時間", + "scopeLabel": "適用範圍", + "triggerLabel": "觸發", + "effectLabel": "效果", + "statusEnabled": "啟用", + "statusDisabled": "殘疾人", + "resilienceRequestQueueScope": "每個請求佇列", + "resilienceRequestQueueTrigger": "傳送到上游之前", + "resilienceRequestQueueEffect": "對請求進行排隊、限制併發並間隔呼叫", + "resilienceRequestQueueDesc": "該層僅控制排隊和節奏。它不儲存冷卻時間或開啟斷路器。", + "resilienceAutoEnableApiKeyProvidersDesc": "預設情況下為活動 API 金鑰連線啟用佇列保護。", + "resilienceMaxQueueWait": "最大佇列等待時間", + "resilienceConnectionCooldownScope": "單獨連線", + "resilienceConnectionCooldownTrigger": "當連線返回暫時性上游故障時", + "resilienceConnectionCooldownEffect": "暫時跳過該連線並增加重複失敗的退避時間", + "resilienceConnectionCooldownDesc": "基礎冷卻時間涵蓋短暫的連線故障。當啟用上游重試提示時,提供程式的顯式視窗將覆蓋本地冷卻時間。", + "resilienceUseUpstreamRetryHintsDesc": "使用來自上游提供商的重試/重置值(如果可用)。", + "resilienceUseUpstream429BreakerHints": "使用上游 429 提示進行斷路器冷卻", + "resilienceUseUpstream429BreakerHintsShort": "使用上游 429 提示", + "resilienceUseUpstream429BreakerHintsDesc": "將 429 響應中的重試/配額耗盡訊號應用於斷路器冷卻持續時間。預設使用每個提供商的策略:直接雲提供商預設開啟;反向代理、自託管和 CLI 支援的提供商預設關閉。獨立於“使用上游重試提示”。", + "resilienceProviderBreakerScope": "整個提供商", + "resilienceProviderBreakerTrigger": "連接回退耗盡後最終傳輸/伺服器失敗", + "resilienceProviderBreakerEffect": "暫時阻止該提供商,直到重置時間到期", + "resilienceProviderBreakerDesc": "即時斷路器狀態僅顯示在執行狀況頁面上。連線範圍的 429 速率限制保留在連線冷卻中,並且不會觸發提供商斷路器。", + "resilienceResetTime": "復位時間", + "resilienceWaitForCooldownTitle": "等待冷卻", + "resilienceWaitForCooldownScope": "當前客戶請求", + "resilienceWaitForCooldownTrigger": "當所有候選連線已經冷卻時", + "resilienceWaitForCooldownEffect": "等待伺服器並在第一個冷卻時間到期時重試", + "resilienceWaitForCooldownDesc": "這僅影響當前請求。它不儲存連線或提供者狀態。", + "resilienceEnableServerWait": "啟用伺服器端等待", + "resilienceEnableServerWaitDesc": "啟用後,OmniRoute 會等待第一次冷卻時間到期並自動重試。", + "resilienceMaxAttempts": "最大嘗試次數", + "resilienceMaxWaitPerAttempt": "每次嘗試的最長等待時間", + "resilienceComboCooldownWaitTitle": "__MISSING__:Quota-share combo cooldown wait", + "resilienceComboCooldownWaitDesc": "__MISSING__:For quota-share combos only: wait out a short transient cooldown and re-dispatch instead of returning a 429 immediately. Never waits on quota_exhausted.", + "resilienceComboCooldownWaitToggleDesc": "__MISSING__:Quota-share combos only; never waits on quota_exhausted.", + "resilienceComboCooldownMaxWaitMs": "__MISSING__:Maximum wait per attempt", + "resilienceComboCooldownBudgetMs": "__MISSING__:Total wait budget", + "resilienceQuotaShareConcurrencyTitle": "__MISSING__:Quota-share per-connection concurrency", + "resilienceQuotaShareConcurrencyDesc": "__MISSING__:For quota-share combos only: when a connection sets a Max Concurrent cap, serialize concurrent requests to that subscription account so it is never flooded past its ceiling. Excess requests wait in the queue instead of getting a 429. The cap comes from each connection's Max Concurrent field; this switch only enables or disables honoring it.", + "resilienceQuotaShareConcurrencyToggleDesc": "__MISSING__:Quota-share combos only; honors each connection's Max Concurrent cap.", + "resilienceProviderCooldownTitle": "__MISSING__:Provider Cooldown", + "resilienceProviderCooldownScope": "__MISSING__:All combo requests", + "resilienceProviderCooldownTrigger": "__MISSING__:When a provider/connection fails", + "resilienceProviderCooldownEffect": "__MISSING__:Skips the failed provider for a cooldown period before retrying", + "resilienceProviderCooldownDesc": "__MISSING__:Prevents subsequent requests from re-walking the same failing providers. Cooldown scales exponentially with consecutive failures.", + "resilienceProviderCooldownEnabled": "__MISSING__:Enable global provider cooldown", + "resilienceProviderCooldownEnabledDesc": "__MISSING__:When enabled, failed providers are tracked globally and skipped for a cooldown period.", + "resilienceProviderCooldownMin": "__MISSING__:Minimum cooldown", + "resilienceProviderCooldownMax": "__MISSING__:Maximum cooldown", + "forcedFingerprintTitle": "{provider} 始終啟用 — OAuth 帳戶安全所必需;無法關閉。", + "forcedFingerprintBadge": "必需", + "codexSessionAffinityTitle": "法典會話關聯性", + "codexSessionAffinityDesc": "將同一帳戶上的一個 Codex 對話保留這麼多秒。 0 停用它。", + "codexSessionAffinityTtl": "關聯性 TTL(秒)", + "resetAwareQuotaCacheTitle": "重置感知配額快取", + "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 免費層上部署的輕量級代理端點,用於繞過本地網路/區域限制。", + "vercelRelayDeploying": "正在部署...", + "vercelRelayDeploy": "部署", + "deployRelayButton": "__MISSING__:Deploy Relay", + "denoRelayButton": "__MISSING__:Deploy Deno Relay", + "denoRelayModalTitle": "__MISSING__:Deploy Deno Relay", + "denoRelayWarning": "__MISSING__:Warning: A Deno Deploy organization token is required. This token will only be used to create the relay app and will never be stored by OmniRoute.", + "denoRelayTokenLabel": "__MISSING__:Deno Deploy Organization Token", + "denoRelayOrgDomainLabel": "__MISSING__:Organization Domain", + "denoRelayProjectNameLabel": "__MISSING__:Deno App Name", + "denoRelayFreeTierNote": "__MISSING__:Deno Deploy v2 runs on a global edge network. Free tier: 1M requests & 100GiB outbound traffic per month, no per-request CPU limits, up to 20 active apps & 50 custom domains.", + "denoRelayDeploying": "__MISSING__:Deploying...", + "denoRelayDeploy": "__MISSING__:Deploy", + "cloudflareRelaySuccess": "__MISSING__:Cloudflare Relay deployed successfully", + "cloudflareRelayButton": "__MISSING__:Deploy Cloudflare Relay", + "cloudflareRelayModalTitle": "__MISSING__:Deploy Cloudflare Worker Relay", + "cloudflareRelayWarning": "__MISSING__:Deploys a Cloudflare Worker that proxies LLM requests through Cloudflare's edge network — masking the host IP behind dynamic Cloudflare addresses. The Worker enforces a one-time auth secret so the public workers.dev URL cannot be reused as an open relay.", + "cloudflareRelayTokenHowto": "__MISSING__:Create the API token under My Profile -> API Tokens -> Create Token -> Custom Token -> Account / Workers Scripts / Edit.", + "cloudflareRelayAccountIdLabel": "__MISSING__:Cloudflare Account ID", + "cloudflareRelayAccountIdHint": "__MISSING__:Found on the right side of the Cloudflare dashboard overview page.", + "cloudflareRelayApiTokenLabel": "__MISSING__:Cloudflare API Token", + "cloudflareRelayApiTokenHint": "__MISSING__:Requires 'Workers Scripts: Edit' permission. The token is used only at deploy time and is never stored.", + "cloudflareRelayProjectNameLabel": "__MISSING__:Worker Name", + "cloudflareRelayFreeTierNote": "__MISSING__:Free tier: 100,000 requests/day per Cloudflare account.", + "cloudflareRelayDeploying": "__MISSING__:Deploying...", + "cloudflareRelayDeploy": "__MISSING__:Deploy", + "cloudflareRelayCredsRequired": "__MISSING__:Account ID and API Token are required", + "cloudflareRelayDeployFailed": "__MISSING__:Deploy failed", + "modelLockout": "__MISSING__:Model Lockout", + "modelLockoutPageDescription": "__MISSING__:Configure which HTTP error codes trigger per-model lockout and control the cooldown behavior.", + "modelLockoutEnabled": "__MISSING__:Enable Model Lockout", + "modelLockoutEnabledDescription": "__MISSING__:When enabled, models that fail with configured error codes are temporarily locked to prevent retry loops.", + "modelLockoutErrorCodes": "__MISSING__:Error Codes", + "modelLockoutErrorCodesDescription": "__MISSING__:HTTP status codes that trigger model lockout. Type a code and click Add, or select from suggestions.", + "modelLockoutBaseCooldown": "__MISSING__:Base Cooldown (ms)", + "modelLockoutBaseCooldownDescription": "__MISSING__:Initial cooldown duration in milliseconds before a model can be retried.", + "modelLockoutMaxCooldown": "__MISSING__:Max Cooldown (ms)", + "modelLockoutMaxCooldownDescription": "__MISSING__:Maximum cooldown duration in milliseconds. Prevents excessively long lockouts.", + "modelLockoutExponentialBackoff": "__MISSING__:Exponential Backoff", + "modelLockoutExponentialBackoffDescription": "__MISSING__:When enabled, each consecutive failure increases the cooldown duration exponentially.", + "modelLockoutMaxBackoffSteps": "__MISSING__:Max Backoff Steps", + "modelLockoutMaxBackoffStepsDescription": "__MISSING__:Maximum number of backoff steps before the cooldown stops growing. The Max Cooldown cap is reached first in most configurations, making this a safety ceiling for when Max Cooldown is raised.", + "disableSessionStickiness": "__MISSING__:Disable session stickiness", + "disableSessionStickinessDesc": "__MISSING__:Round-robin and random combos rotate to a different connection on every request instead of pinning a whole conversation to one connection by the first-message hash. Leave off to preserve prompt-cache hits for multi-turn chats. Per-combo overrides take precedence." + }, + "contextRtk": { + "title": "RTK 引擎", + "description": "面向工具輸出、終端日誌和構建結果的命令感知壓縮。", + "enabled": "已啟用", + "intensity": "強度", + "intensityMinimal": "最小", + "intensityStandard": "標準", + "intensityAggressive": "激進", + "toolResults": "工具結果", + "assistantMessages": "助手訊息", + "codeBlocks": "程式碼塊", + "filterCatalog": "過濾器目錄", + "filterCatalogDesc": "可用的輸出過濾器(按類別)", + "guidedConfig": "配置", + "guidedConfigDesc": "調整 RTK 過濾終端輸出的方式", + "maxLines": "最大行數", + "maxChars": "最大字元數", + "deduplicateThreshold": "去重閾值", + "customFilters": "自定義過濾器", + "detectedType": "檢測型別", + "confidence": "信心", + "beforeAfter": "之前/之後", + "trustProjectFilters": "信任專案過濾器", + "rawOutputRetention": "原始輸出保留", + "rawOutputNever": "從不", + "rawOutputFailures": "失敗時", + "rawOutputAlways": "始終", + "rawOutputMaxBytes": "原始輸出最大位元組數", + "filterTesting": "過濾測試", + "pasteOutput": "貼上工具輸出以測試過濾...", + "presetHigh": "好鬥的", + "presetLow": "光", + "presetMaxChars": "最大輸出字元數", + "presetMaxLines": "最大輸出線數", + "presetMedium": "標準型", + "run": "執行", + "result": "結果", + "previewEmpty": "執行示例以預覽 RTK 輸出。", + "detected": "已檢測", + "masterSwitchOffAlert": "Token Saver 總開關已關閉 — 在壓縮設定中開啟它之前,這些設定不會影響請求。", + "tokensFiltered": "已過濾 token", + "filtersActive": "活動過濾器", + "requests": "請求數", + "avgSavings": "平均節省", + "simpleMode": "簡單", + "advancedMode": "高階", + "searchFilters": "搜尋過濾器...", + "tooltipDedup": "刪除重複行的積極程度。", + "tooltipMaxChars": "每個輸出塊的最大字元數。", + "tooltipMaxLines": "命令輸出中保留的最大行數。多餘的部分被截斷。", + "learnDiscoverTitle": "__MISSING__:Learn & Discover filters", + "learnDiscoverDesc": "__MISSING__:Mine your captured command output (Raw Output retention must be on) to suggest new RTK filters. Suggestions only — you review and save them.", + "discoverHeading": "__MISSING__:Discover repeated noise", + "discoverButton": "__MISSING__:Scan samples", + "discoverScanning": "__MISSING__:Scanning…", + "discoverEmpty": "__MISSING__:No repeated noise found. Enable Raw Output retention and run a few commands first.", + "discoverSamples": "__MISSING__:{count} sample(s) scanned", + "discoverHits": "__MISSING__:{hits}× across samples", + "learnHeading": "__MISSING__:Learn a filter for a command", + "learnCommandPlaceholder": "__MISSING__:e.g. npm install", + "learnButton": "__MISSING__:Suggest filter", + "learnEmpty": "__MISSING__:No suggestion yet. Type a command you have run and scan.", + "learnSamplesUsed": "__MISSING__:Learned from {count} matching sample(s)", + "suggestionError": "__MISSING__:Could not load suggestions. Check management auth and try again." + }, + "contextCombos": { + "title": "壓縮組合", + "description": "定義不同路由場景中引擎的組合方式。", + "createCombo": "建立壓縮組合", + "editCombo": "編輯", + "deleteCombo": "刪除", + "deleteConfirm": "刪除此壓縮組合?", + "pipeline": "流水線", + "addStep": "新增步驟", + "removeStep": "移除", + "name": "名稱", + "descriptionField": "描述", + "languagePacks": "語言包", + "outputMode": "輸出模式", + "assignToRouting": "分配到路由組合", + "noAssignments": "沒有可用的路由組合", + "default": "預設", + "setAsDefault": "設為預設", + "save": "儲存", + "cancel": "取消", + "enabled": "已啟用" + }, + "contextCaveman": { + "title": "Caveman 引擎", + "description": "基於規則的訊息壓縮,包含語言包、分析和輸出模式控制。", + "advancedConfig": "高階配置", + "advancedConfigDesc": "微調壓縮行為", + "aggressiveSettings": "激進的設定", + "aggressiveSettingsDesc": "最大壓縮與潛在的質量權衡", + "requests": "請求數", + "tokensSaved": "已節省 token", + "savingsPercent": "節省比例", + "avgLatency": "平均延遲", + "languagePacks": "語言包", + "languagePacksDesc": "為特定語言啟用壓縮規則。", + "labelAutoTrigger": "當上下文超出時自動壓縮", + "labelCompressionRate": "抗壓強度", + "labelMaxTokens": "每條訊息的目標令牌", + "labelMinLength": "最小訊息長度", + "labelMinSavings": "儲存的最低代幣數量", + "enabled": "已啟用", + "autoDetect": "自動檢測語言", + "rulesCount": "{count} 條規則", + "inputCompressionTitle": "輸入壓縮", + "inputCompressionDesc": "用更短的措辭重寫聊天曆史,可減少約 50% 的輸入 Token。", + "analyticsTitle": "壓縮分析", + "noAnalytics": "尚無壓縮分析。", + "outputMode": "輸出方式", + "outputModeDesc": "指示 LLM 以簡潔、緊湊的格式回覆。", + "outputModeTitle": "輸出模式", + "quickSettings": "快速設定", + "quickSettingsDesc": "開始使用的基本壓縮設定", + "autoClarity": "自動清晰度繞過", + "bypassConditions": "繞過條件", + "bypassConditionsList": "安全、不可逆、需澄清、順序敏感", + "simpleMode": "簡單", + "advancedMode": "高階", + "tooltipAutoTrigger": "當上下文超過此大小時自動壓縮。", + "tooltipCompressionRate": "0.0 = 無,1.0 = 最大值。 0.5 = 平衡。", + "tooltipMaxTokens": "壓縮後的目標令牌計數。更低=更具攻擊性。", + "tooltipMinLength": "比這短的訊息不會被壓縮。更低=更多壓縮。", + "tooltipMinSavings": "僅當至少儲存這麼多令牌時才進行壓縮。", + "ultraSettings": "超級設定", + "ultraSettingsDesc": "SLM 支援的語義壓縮", + "preview": { + "lite": "回覆要簡潔。保留技術術語、程式碼、錯誤、URL 和識別符號。", + "full": "回覆要簡短緊湊。保留所有技術實質。", + "ultra": "用常見技術縮寫進行極簡回覆。保留精確符號。" + } + }, + "translator": { + "title": "翻譯器", + "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 請求。", + "recentTranslations": "最近的翻譯", + "noTranslations": "還沒有翻譯", + "source": "來源", + "target": "目標", + "time": "時間", + "model": "模型", + "status": "狀態", + "latency": "延遲", + "totalTranslations": "總翻譯數", + "successful": "成功", + "errors": "錯誤", + "avgLatency": "平均延遲", + "millisecondsShort": "{value} 毫秒", + "notAvailableSymbol": "—", + "liveAutoRefreshing": "直播 — 自動重新整理", + "paused": "已暫停", + "eventsAppearHint": "請求流經 OmniRoute 時,翻譯事件會顯示在這裡。你可以通過下面任一方式生成事件:", + "chatTesterTab": "聊天測試選項卡", + "testBenchTab": "測試臺選項卡", + "externalApiCalls": "外部API呼叫", + "ideCliIntegrations": "IDE/CLI 整合", + "inMemoryNote": "注意:事件儲存在記憶體中,並在伺服器重新啟動時重置。", + "ok": "好的", + "errorShort": "錯誤率", + "formatConverter": "格式轉換器", + "formatConverterDescription": "貼上或輸入 JSON 請求體。翻譯器會自動識別源格式並將其轉換為目標格式。你可以藉此除錯 OmniRoute 在各種格式之間的轉換行為(OpenAI ↔ Claude ↔ Gemini ↔ Responses API)。", + "translationPathHubSpoke": "{source} → OpenAI(中間格式)→ {target}", + "translationPathDirect": "{source} → {target}(直接轉換器)", + "translationPathPassthrough": "格式相同 — 無需轉換", + "openaiIntermediatePanel": "OpenAI 中間格式", + "autoFeaturesTitle": "OmniRoute 自動處理的內容", + "autoFeaturesCount": "8 項功能", + "featureReasoningCache": "推理快取", + "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 字元格式。", + "featureMissingToolResponse": "工具響應注入", + "featureMissingToolResponseDesc": "當客戶端傳送 tool_calls 但沒有對應響應時,注入空的 tool_result 訊息。", + "featureThinkingBudget": "思考預算", + "featureThinkingBudgetDesc": "自動管理 thinking 配置。當最後一條訊息不是使用者訊息時移除 thinking 引數。", + "featureDirectPaths": "直接轉換路徑", + "featureDirectPathsDesc": "某些格式組合(Claude→Gemini)有繞過 OpenAI 中樞的直接轉換器,可產生更準確的輸出。", + "featureImageMapping": "影像尺寸對映", + "featureImageMappingDesc": "在 API 格式之間轉換影像尺寸約定(例如 OpenAI detail 等級 → Gemini 尺寸)。", + "input": "輸入", + "output": "輸出", + "auto": "汽車", + "swapFormats": "交換格式", + "translateAction": "翻譯", + "clear": "清除", + "inputPlaceholder": "在此處貼上請求正文或選擇下面的模板...", + "exampleTemplates": "示例模板", + "exampleTemplatesHint": "— 點選載入", + "templateLoadHint": "模板以 {format} 格式載入請求。更改源格式以以不同的格式載入。", + "compatibilityTester": "相容性測試儀", + "compatibilityReport": "相容性報告", + "testBenchDescription": "執行預定義的場景(簡單聊天、工具呼叫等)以驗證翻譯和提供商相容性。選擇源格式和目標提供商,然後執行所有測試以檢視相容性百分比。使用它來查詢哪些功能可以跨提供商使用。", + "targetProvider": "目標提供商", + "runAllTests": "執行所有測試", + "runTest": "執行測試", + "reRun": "重新執行", + "running": "執行...", + "passed": "通過了", + "failed": "失敗了", + "passedIconLabel": "✅ 通過", + "chunks": "塊", + "scenarioSimpleChat": "簡單聊天", + "scenarioToolCalling": "工具呼叫", + "scenarioMultiTurn": "多圈", + "scenarioThinking": "思考", + "scenarioSystemPrompt": "系統提示", + "scenarioStreaming": "流媒體", + "templateNames": { + "simple-chat": "簡單聊天", + "tool-calling": "工具呼叫", + "multi-turn": "多圈", + "thinking": "思考", + "system-prompt": "系統提示", + "streaming": "流媒體", + "vision": "願景", + "schema-coercion": "模式強制" + }, + "templateDescriptions": { + "simple-chat": "基本簡訊", + "tool-calling": "函式/工具呼叫", + "multi-turn": "與歷史對話", + "thinking": "擴充套件思維/推理", + "system-prompt": "複雜系統指令", + "streaming": "SSE 流請求", + "vision": "帶影像輸入的多模式請求", + "schema-coercion": "結構化輸出/JSON 模式實施" + }, + "templatePayloads": { + "simpleChat": { + "system": "你是一個有用的助手。", + "userGreeting": "你好!你今天怎麼樣?" + }, + "toolCalling": { + "userWeather": "聖保羅 的天氣怎麼樣?", + "toolDescription": "獲取某個位置的當前天氣", + "cityNameDescription": "城市名稱" + }, + "multiTurn": { + "system": "你是一名編碼助理。", + "userInitial": "請用 Python 寫一個對陣列進行排序的函式。", + "assistantExample": "這是一個簡單的排序函式: ```python\ndef sort_array(arr): return sorted(arr)\n```", + "userFollowUp": "現在將其按降序排序。" + }, + "thinking": { + "question": "前 100 個質數之和是多少?" + }, + "systemPrompt": { + "systemInstruction": "你是一名專注於分散式系統的高階軟體工程師。請使用行業最佳實踐簡潔作答,並在合適時提供程式碼示例。回覆請使用 Markdown 格式。", + "question": "如何實現斷路器模式?" + }, + "streaming": { + "prompt": "給我講一個關於機器人學習繪畫的小故事。" + }, + "vision": { + "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": "使用公制單位查詢東京的天氣幷包括每小時的細分。", + "toolDescription": "通過結構化選項獲取城市的天氣。", + "cityDescription": "要查詢的城市,例如“東京”或“紐約”。" + } + }, + "openaiCompatibleLabel": "OpenAI 相容", + "anthropicCompatibleLabel": "Anthropic 相容", + "noTemplateForFormat": "沒有此格式的模板", + "translationFailed": "翻譯失敗:{error}", + "pipelineDebugger": "管道偵錯程式", + "translationPipeline": "翻譯管道", + "pipelineVisualization": "管道視覺化", + "pipelineVisualizationHint": "傳送訊息以檢視您的請求如何經過檢測 → 翻譯 → 提供商呼叫。", + "chatTesterDescription": "以特定客戶端格式傳送訊息並檢查翻譯管道的每個步驟。", + "chatTesterFlow": "客戶端請求 → 格式檢測 → OpenAI 中間格式 → 提供商格式 → 響應", + "clickStepToInspect": "單擊任意步驟即可檢查該階段的資料。", + "clientFormat": "客戶端格式", + "provider": "提供商", + "modelPlaceholder": "選擇或輸入模型名稱...", + "sendMessageToSeePipeline": "傳送訊息檢視翻譯管道", + "chatMessageHintPrefix": "您的訊息將被格式化為", + "chatMessageHintSuffix": "請求,通過管道進行翻譯,然後傳送給選定的提供商。", + "youWithFormat": "您 ({format})", + "assistant": "助理", + "typeMessage": "輸入訊息...", + "send": "傳送", + "clientRequest": "客戶端請求", + "clientRequestDescription": "您的客戶端傳送的請求正文", + "formatDetected": "檢測到格式", + "formatDetectedDescription": "OmniRoute 會根據請求結構自動識別 API 格式", + "openaiIntermediate": "OpenAI 中間格式", + "openaiIntermediateDescription": "所有格式都會先歸一化為 OpenAI 格式(通用橋接層)", + "providerFormat": "提供商格式", + "providerFormatDescription": "隨後再把 OpenAI 格式轉換為提供商原生格式", + "providerResponse": "提供商回應", + "providerResponseRawDescription": "來自提供商 API 的原始響應", + "providerResponseSseDescription": "來自提供商 API 的原始 SSE 流", + "unexpectedError": "發生意外錯誤", + "error": "錯誤", + "errorMessage": "錯誤:{message}", + "requestFailed": "請求失敗", + "noTextExtracted": "(未提取文字)", + "liveMonitorMemoryNote": "事件儲存在記憶體中,重啟後會丟失。", + "liveMonitorMemoryCapNote": "最多保留 200 個事件。", + "eventSourcesLabel": "事件來源:", + "eventSourceTranslatorPage": "• Translator 頁面(Chat Tester、Test Bench)", + "eventSourceMainPipeline": "• 主請求流水線(CLI/IDE/API 流量)", + "liveMonitorDescriptionPrefix": "這裡會顯示 API 呼叫流經 OmniRoute 時產生的翻譯事件。事件來自記憶體緩衝區(重啟後會重置)。使用", + "liveMonitorDescriptionSuffix": ",或外部 API 呼叫來生成事件。", + "streamTransformer": "流轉換器", + "modeDescriptionStreamTransformer": "通過響應轉換器執行聊天完成 SSE 流。", + "streamTransformerTitle": "響應流轉換器", + "streamTransformerDescription": "貼上聊天完成 SSE 流,通過 OmniRoute 的響應轉換器執行它,並在連線客戶端之前檢查發出的響應。* 事件。", + "loadTextSample": "載入文本樣本", + "loadToolSample": "載入工具呼叫示例", + "transformToResponses": "轉換為響應", + "rawChatSseInput": "原始聊天完成 SSE", + "transformedResponsesSse": "轉換後的響應 API SSE", + "noResultsYet": "還沒有結果", + "transformedEvents": "轉化事件", + "uniqueEventTypes": "獨特的事件型別", + "inputLines": "輸入線", + "outputLines": "輸出線", + "transformedEventTimeline": "轉變的事件時間線", + "transformerTimelineHint": "執行變壓器以按順序檢查發出的 response.output_* 事件。", + "eventType": "事件型別", + "eventPreview": "預覽", + "comboRouted": "組合路由", + "uniqueEndpoints": "獨特的端點", + "routeDetails": "路線詳情", + "comboBadge": "組合", + "routeEndpointLabel": "端點", + "routeConnectionLabel": "連線方式", + "scenarioVision": "視覺(影像理解)", + "scenarioSchemaCoercion": "模式強制(結構化輸出)", + "techniques": "技巧:", + "friendlyTitle": "翻譯器", + "friendlySubtitle": "使用您現有的應用程式與任何提供商 — 無需重寫程式碼。", + "conceptHeadline": "您的應用程式使用一個 API 的“語言”。翻譯器將其轉換為使用另一個提供者。", + "conceptDiagramAppLabel": "您的應用程式", + "conceptDiagramSourceLabel": "源格式", + "conceptDiagramHubLabel": "OpenAI (中心)", + "conceptDiagramTargetLabel": "目標提供者", + "conceptDiagramExampleApp": "例如 Anthropic SDK", + "conceptDiagramExampleSource": "Claude", + "conceptDiagramExampleTarget": "雙子座", + "conceptHowItWorksToggle": "它是如何工作的", + "conceptHowItWorksBody": "您的應用以其自己的格式傳送請求。翻譯器檢測該格式,通過 OpenAI 作為中介中心進行轉換(或在可用的情況下直接進行轉換),將其傳送到所選提供商,並將響應轉換回您應用的格式。", + "tabTranslate": "翻譯", + "tabMonitor": "監視器", + "tabTranslateAriaLabel": "前往翻譯選項卡", + "tabMonitorAriaLabel": "轉到監視器選項卡", + "simpleAppUsesLabel": "我的應用程式使用", + "simpleAppUsesHint": "您的應用程式使用的 API 格式(例如,Anthropic SDK = claude)。", + "simpleSendToLabel": "傳送到", + "simpleSendToHint": "實際將請求傳送到哪裡(在 OmniRoute 中連線的提供者)。", + "simpleStartWithLabel": "開始於", + "simpleStartWithExamplePlaceholder": "選擇一個現成的示例", + "simpleStartWithCustomOption": "貼上您的請求(高階)", + "simpleModeLabel": "模式", + "simpleModePreview": "僅預覽翻譯", + "simpleModeSend": "傳送並檢視響應", + "simpleAdvancedToggle": "高階", + "simpleInputPanelTitle": "輸入", + "simpleInputPanelHint": "自由文本訊息或現成示例", + "simpleResultPanelTitle": "翻譯 + 回覆", + "narratedDetected": "✓ 檢測到: {format}", + "narratedTranslating": "正在翻譯到 {target}...", + "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。", + "advancedTestBenchTitle": "測試平臺 (8 個場景)", + "advancedTestBenchSubtitle": "執行所有場景並報告通過/失敗 + 相容性 %。", + "advancedCompressionTitle": "壓縮預覽", + "advancedCompressionSubtitle": "估算不同壓縮模式下的令牌節省。", + "monitorOriginHint": "由 Translate 或主管道生成的事件會即時顯示在這裡。", + "monitorEmptyCta": "轉到翻譯選項卡併發送請求 — 它將出現在這裡。", + "monitorOpenTranslateButton": "前往翻譯", + "pipelineStepClientRequest": "客戶端請求", + "pipelineStepClientRequestDesc": "以客戶端格式接收到請求", + "pipelineStepFormatDetected": "檢測到的格式", + "pipelineStepFormatDetectedDesc": "自動檢測到的源格式", + "pipelineStepOpenAIIntermediate": "OpenAI 中級", + "pipelineStepOpenAIIntermediateDesc": "翻譯為 OpenAI hub 格式", + "pipelineStepProviderFormat": "提供者格式", + "pipelineStepProviderFormatDesc": "翻譯為提供者目標格式", + "pipelineStepProviderResponse": "提供者響應", + "pipelineStepProviderResponseDesc": "來自提供者的流式響應", + "conceptDiagramArrow1": "說話", + "conceptDiagramArrow2": "翻譯", + "conceptDiagramArrow3": "轉換", + "conceptDiagramExampleHub": "OpenAI", + "conceptDiagramHubTooltip": "翻譯器用於在沒有直接對映的格式之間轉換的中間樞紐。", + "conceptDiagramSourceTooltip": "您的應用程式使用的 API 格式(例如,Anthropic SDK = claude)。", + "conceptDiagramTargetTooltip": "請求將實際傳送到的提供者。", + "compressionEmptyHint": "__MISSING__:Fill in the input field on the Translate tab (Simple Controls or Raw JSON) to enable the preview.", + "compressionModeLabel": "__MISSING__:Compression mode", + "compressionPreviewButton": "__MISSING__:Preview Compression", + "compressionPreviewing": "__MISSING__:Previewing…" + }, + "usage": { + "title": "用量", + "loggerTab": "記錄器", + "proxyTab": "代理", + "budgetManagement": "預算管理", + "budgetSaved": "已儲存預算限制", + "budgetSaveFailed": "未能節省預算", + "loadingBudgetData": "正在載入預算資料...", + "noApiKeysTitle": "沒有 API 金鑰", + "noApiKeysDescription": "首先新增 API 金鑰以設定預算限制。", + "apiKey": "API key", + "todaysSpend": "今天的花費", + "thisMonth": "本月", + "setLimits": "設定限制", + "dailyLimitUsd": "每日限額(美元)", + "monthlyLimitUsd": "每月限額(美元)", + "warningThresholdPercent": "警告閾值 (%)", + "dailyLimitPlaceholder": "例如5.00", + "monthlyLimitPlaceholder": "例如50.00", + "warningThresholdPlaceholder": "80", + "saveLimits": "儲存限制", + "budgetOk": "預算正常 — 剩餘 {remaining}", + "budgetExceeded": "超出預算 - 請求可能被阻止", + "totalRequests": "請求總數", + "noDataYet": "還沒有資料", + "latency": "延遲", + "latencyP50": "p50", + "latencyP95": "p95", + "latencyP99": "p99", + "promptCache": "提示快取", + "systemHealth": "系統健康狀況", + "entries": "條目", + "activeCount": "{count} 活躍", + "openCircuitBreakersDetected": "檢測到斷路器開路", + "hitRate": "命中率", + "hitsMisses": "命中/未命中", + "circuitBreakers": "斷路器", + "lockedIPs": "鎖定IP", + "lockoutsAutoRefreshHint": "每個模型速率限制鎖定 • 自動重新整理 10 秒", + "lockedCount": "{count, plural, one {# 個鎖定項} other {# 個鎖定項}}", + "timeLeft": "剩餘 {time}", + "howItWorks": "工作原理", + "howItWorksSubtitle": "瞭解評估如何驗證您的 LLM 回答", + "define": "定義", + "defineStepDescription": "使用包含、正規表示式或完全匹配等策略建立帶有輸入提示和預期輸出標準的測試用例。", + "run": "執行", + "runStepDescription": "通過 OmniRoute 對你的 LLM 端點執行測試用例。每個案例都會作為真實 API 請求傳送。", + "evaluate": "評估", + "evaluateStepDescription": "將響應與預期標準進行比較。檢視每種情況的通過/失敗情況以及延遲指標和詳細反饋。", + "evalsStrategyContainsLabel": "包含", + "evalsStrategyExactLabel": "精確匹配", + "evalsStrategyRegexLabel": "正則", + "evalsStrategyCustomLabel": "自定義邏輯", + "evalsStrategyContainsDescription": "檢查 LLM 輸出是否包含期望的子串。", + "evalsStrategyExactDescription": "檢查 LLM 輸出是否與期望值完全一致。", + "evalsStrategyRegexDescription": "通過正規表示式校驗 LLM 輸出。", + "evalsStrategyCustomDescription": "自定義評估邏輯(通過 JSON 配置)。", + "historyColumnSuiteName": "套件名稱", + "historyColumnTarget": "目標", + "historyColumnPassRate": "通過率", + "historyColumnAvgLatencyMs": "平均延遲", + "historyColumnCreatedAt": "執行時間", + "evalSuites": "評估套件", + "evalSuitesHint": "點選套件可檢視測試用例,然後執行以評估你的 LLM 端點", + "evalsLoading": "正在載入評估套件...", + "noEvalSuitesFound": "未找到評估套件", + "noEvalSuitesDescription": "評測套件可以通過 API 或程式碼定義。它們會使用包含、正規表示式、精確匹配和自定義函式等策略,根據預期結果驗證模型輸出。", + "columnCase": "案例", + "columnStatus": "狀態", + "columnLatency": "延遲", + "columnDetails": "詳情", + "columnModel": "模型", + "columnStrategy": "策略", + "columnExpected": "預期", + "statsSuites": "套件", + "statsTestCases": "測試用例", + "statsModels": "模型", + "statsCoverage": "覆蓋範圍", + "statsStrategiesCount": "{count} 策略", + "evaluationStrategies": "評估策略", + "modelsUnderTest": "測試中的模型", + "searchSuitesPlaceholder": "搜尋套件...", + "passSuffix": "通過", + "casesCount": "{count, plural, one {# 個案例} other {# 個案例}}", + "runEval": "執行評估", + "runAllSuites": "全部執行", + "runAllRunning": "正在全部執行...", + "runAllProgress": "正在執行 {current}/{total}:{name}", + "runAllFailedSuites": "{count, plural, one {# 個套件失敗} other {# 個套件失敗}}", + "runAllCompleted": "已執行 {suites} 個套件 — {passed} 個通過,{failed} 個失敗", + "runAllCompletedWithFailures": "已執行 {completed} 個套件;{failedSuites} 個執行失敗", + "runningProgress": "正在執行 {current}/{total}...", + "passRate": "通過率", + "summaryBreakdown": "{passed} 通過 · {failed} 失敗 · {total} 總計", + "passedIconLabel": "✅ 通過", + "failedIconLabel": "❌ 失敗", + "resultPassed": "已通過", + "resultFailed": "失敗", + "expandResult": "展開結果詳情", + "collapseResult": "摺疊結果詳情", + "detailsContains": "包含:“{term}”", + "detailsRegex": "正規表示式:{pattern}", + "detailsExpected": "預期:“{expected}”", + "expectedOutputLabel": "預期輸出", + "noResultsYet": "還沒有結果", + "testCasesCount": "測試用例 ({count})", + "noTestCasesDefined": "沒有定義測試用例", + "runEvalHint": "點選“執行評測”即可對你的 LLM 端點執行所有案例。每次測試都會通過 OmniRoute 傳送真實請求。", + "notifyNoTestCases": "沒有為此套件定義測試用例", + "notifyAllCasesPassed": "所有 {total} 案例均已通過 ✅", + "notifySomeCasesFailed": "{passed}/{total} 通過,{failed} 失敗", + "notifyEvalRunFailed": "評估執行失敗", + "notifyEvalTitle": "評估:{name}", + "modelEvals": "模型評估", + "evalsHeroDescription": "通過執行預定義評測套件來測試和驗證你的 LLM 端點。每個套件都包含多個測試用例,會經由 OmniRoute 傳送真實提示,並將響應與預期標準進行比較,幫助你發現迴歸、比較模型,並確保跨提供商的響應質量。", + "qualityValidation": "質量驗證", + "modelComparison": "模型對比", + "regressionDetection": "迴歸檢測", + "latencyBenchmarks": "延遲基準", + "modelLockouts": "模型鎖定", + "noLockouts": "當前沒有被鎖定的模型", + "activeSessions": "活躍會話", + "noSessions": "沒有活動會話", + "sessionsHint": "會話顯示為請求流經代理", + "sessionsTrackedHint": "通過請求指紋跟蹤 • 自動重新整理 5 秒", + "session": "會話", + "age": "年齡", + "requests": "請求", + "connection": "連線方式", + "durationMillisecondsShort": "{value} 毫秒", + "durationSecondsShort": "{value} 秒", + "durationMinutesShort": "{value} 分", + "durationHoursShort": "{value} 時", + "reasonSeparator": "-", + "notAvailableSymbol": "-", + "providerLimits": "提供商限制", + "noProviders": "沒有連線提供商", + "connectProvidersForQuota": "通過 OAuth 連線提供商,以跟蹤 API 配額限制和使用情況。", + "accountsCount": "{count, plural, one {# 個帳戶} other {# 個帳戶}}", + "filteredFromCount": "(從 {count} 過濾)", + "autoRefresh": "自動重新整理", + "refreshAll": "全部重新整理", + "loadingQuotas": "正在載入...", + "showMoreQuotas": "__MISSING__:Show {count} more", + "showLessQuotas": "__MISSING__:Show less", + "account": "帳戶", + "modelQuotas": "模型配額", + "lastUsed": "最近重新整理", + "actions": "操作", + "refreshQuota": "重新整理配額", + "today": "今天", + "tomorrow": "明天", + "dayTimeFormat": "{day}、{time}", + "inDuration": "在 {duration} 中", + "notApplicable": "不適用", + "rawPlanWithValue": "原始計劃:{plan}", + "noPlanFromProvider": "提供商沒有計劃", + "tokenExpiresIn": "令牌在 {time} 後過期", + "tokenExpired": "令牌已過期", + "noQuotaData": "無配額資料", + "cardExpand": "展開", + "cardCollapse": "收起", + "moreQuotas": "還有 {count} 項", + "ungrouped": "未分組", + "viewFlat": "平鋪檢視", + "viewByEnvironment": "按環境分組", + "noQuotaDataAvailable": "無可用配額資料", + "noAccountsForTierFilter": "未找到適用於層過濾器的帳戶", + "tierAll": "全部", + "tierEnterprise": "企業", + "tierTeam": "團隊", + "tierBusiness": "商務", + "tierUltra": "超", + "tierPro": "專業版", + "tierPlus": "加號", + "tierFree": "免費", + "tierLite": "輕量", + "tierUnknown": "未知", + "statTotal": "總計", + "statCritical": "嚴重", + "statAlert": "警報", + "statHealthy": "健康", + "filterPurchaseTypeLabel": "型別", + "filterTierLabel": "層級", + "purchaseAll": "全部", + "purchaseOauthSub": "訂閱", + "purchaseOauthFree": "OAuth 免費", + "purchaseApiKey": "API 金鑰", + "creditsLabel": "額度", + "creditBalanceHint": "剩餘額度", + "unlimitedLabel": "無限", + "refreshing": "重新整理中", + "resetsIn": "重置倒計時", + "editCutoffs": "編輯截止值", + "forceRefresh": "立即重新整理", + "suiteBuilderSaveFailed": "儲存套件失敗", + "clone": "克隆", + "exportSuite": "匯出", + "importSuite": "匯入", + "suiteExported": "套件已匯出", + "suiteExportFailed": "匯出套件失敗", + "suiteImportReady": "套件匯入已載入,等待檢查", + "suiteImportFailed": "匯入套件失敗", + "suiteImportInvalid": "無效的 eval 套件 JSON", + "suiteBuilderCloneSuffix": "副本", + "suiteBuilderImportedSuite": "已匯入套件", + "scorecardTitle": "記分卡", + "evalApiKey": "API key", + "scorecardPassRate": "通過率", + "targetTypeModel": "模型", + "actualOutputLabel": "實際輸出", + "evalTargetHint": "選擇要評估的模型或組合。", + "suiteBuilderDeleted": "Suite 刪除成功", + "suiteBuilderCaseCardHint": "定義輸入提示和預期輸出標準。", + "nextResetUtc": "下次重置(UTC)", + "scorecardHint": "彙總所有 Evaluation Suite 的通過率。", + "suiteLatestRunsHint": "此套件最近的評估執行。", + "saving": "正在儲存", + "suiteBuilderCaseModelLabel": "模型(可選)", + "evalControlsTitle": "Evaluation 控制項", + "suiteBuilderEditTitle": "編輯 Evaluation Suite", + "suiteBuilderCaseStrategyLabel": "驗證策略", + "notifySelectDifferentCompareTarget": "請選擇不同的比較目標", + "recentRunsHint": "正在顯示最近的評估執行。點選某次執行可檢視詳細結果。", + "evalCompareHint": "可選擇與第二個目標比較結果。", + "suiteBuilderCaseInvalid": "此 Case 存在驗證錯誤,請先修復再儲存。", + "historyEmpty": "暫無 Evaluation 歷史", + "suiteBuilderUpdated": "Suite 更新成功", + "resetInterval": "重置間隔", + "suiteBuilderCreateTitle": "建立評估套件", + "activePeriodSpend": "當前週期支出", + "evalApiKeyHint": "選擇用於評估請求的 API 金鑰。", + "evalCompareOptional": "對比(可選)", + "suiteBuilderDeleteFailed": "刪除套件失敗", + "suiteBuilderCaseSystemPromptPlaceholder": "可選系統指令...", + "scorecardCases": "Case", + "runCompletedWithScore": "Evaluation 已完成 — 通過率 {score}%", + "suiteBuilderCustomBadge": "自定義", + "targetSuiteDefaults": "Suite 預設值", + "suiteBuilderDeleteConfirm": "確定要刪除此套件嗎?此操作無法撤銷。", + "suiteBuilderNameLabel": "Suite 名稱", + "scorecardSuites": "套件", + "evalCompareTarget": "對比目標", + "suiteBuilderCaseModelPlaceholder": "例如 gpt-4o-mini", + "evalControlsHint": "配置評估目標和 API 金鑰,然後執行套件以驗證模型質量。", + "recentRunsTitle": "最近執行", + "suiteBuilderCaseSystemPromptLabel": "系統提示", + "suiteBuilderCaseExpectedPlaceholder": "例如 def fibonacci", + "suiteBuilderCaseExpectedPlaceholderContains": "例如 def fibonacci", + "suiteBuilderCaseExpectedPlaceholderExact": "貼上精確的預期響應", + "suiteBuilderCaseExpectedPlaceholderRegex": "例如 ^\\s*\\{.*\\}\\s*$", + "suiteBuilderCaseExpectedHintRegex": "使用不帶包裹斜槓的 JavaScript 正規表示式。", + "suiteBuilderNamePlaceholder": "例如 Coding Quality Suite", + "suiteBuilderAddCase": "新增 Case", + "cancel": "取消", + "evalTarget": "目標", + "suiteBuilderCaseNameLabel": "Case 名稱", + "weeklyLimitUsd": "每週限額(USD)", + "suiteBuilderCaseUserPromptPlaceholder": "例如用 Python 寫一個 fibonacci 函式", + "suiteBuilderNameRequired": "Suite 名稱為必填項", + "suiteBuilderCaseUserPromptLabel": "使用者 Prompt", + "daily": "每日", + "resultErrorLabel": "錯誤", + "suiteBuilderBuiltInBadge": "內建", + "suiteBuilderCaseCardTitle": "測試用例", + "suiteBuilderDuplicateCase": "複製", + "weeklyLimitPlaceholder": "例如 50.00", + "suiteBuilderCaseTagsHint": "用於組織測試用例的逗號分隔標籤。", + "notifyEvalRunFailedWithReason": "評估失敗:{reason}", + "weekly": "每週", + "runEvalRunning": "正在執行 Evaluation...", + "delete": "刪除", + "resetTimeUtc": "重置時間(UTC)", + "evalApiKeyAuto": "自動(使用預設值)", + "suiteBuilderDescriptionPlaceholder": "可選:描述此套件測試的內容...", + "targetComparisonTitle": "目標對比", + "save": "儲存", + "suiteBuilderCreated": "Suite 建立成功", + "suiteLatestRuns": "最新執行", + "suiteBuilderCaseExpectedLabel": "期望值", + "historyLatency": "延遲", + "suiteBuilderCaseTagsPlaceholder": "例如 coding, python", + "targetTypeCombo": "組合", + "scorecardPassed": "已通過", + "suiteBuilderCaseTagsLabel": "標籤", + "suiteBuilderNewSuite": "新建 Suite", + "notifyEvalLoadFailed": "載入評估資料失敗", + "notConfigured": "未配置", + "suiteBuilderCaseNamePlaceholder": "例如 Python 斐波那契測試", + "intervalLabel": "間隔", + "suiteBuilderCreateAction": "建立套件", + "suiteBuilderCasesHint": "每個用例都會發送一個提示並驗證響應。", + "suiteBuilderUpdatedAt": "更新時間", + "errorBadge": "錯誤", + "suiteBuilderCasesTitle": "測試用例", + "edit": "編輯", + "monthly": "每月", + "suiteBuilderCasesRequired": "至少需要一個測試用例", + "weeklyLimitSummary": "每週預算限額摘要", + "suiteBuilderDescriptionLabel": "描述", + "targetComparisonHint": "在目標之間並排比較評估結果。", + "compareCompletedWithScore": "對比已完成 — 通過率 {score}%", + "staleQuotaTooltip": "上次重新整理失敗 — 顯示快取資料", + "quotaThresholdLabel": "最小剩餘時間", + "quotaCutoffsColumnHelp": "當剩餘配額降至此百分比或以下時停止請求。", + "quotaCutoffsButtonDefault": "預設", + "quotaCutoffsButtonHelp": "編輯此帳戶的最小剩餘配額截止值。", + "quotaCutoffsButtonDisabled": "此帳戶尚無可用的配額視窗。", + "deactivateAccount": "__MISSING__:Deactivate account (stop routing)", + "activateAccount": "__MISSING__:Activate account (resume routing)", + "accountActivated": "__MISSING__:Account activated", + "accountDeactivated": "__MISSING__:Account deactivated", + "toggleActiveFailed": "__MISSING__:Failed to update account status", + "quotaCutoffsTitle": "{name} ({provider}) 的配額截止", + "quotaCutoffsExplainer": "覆蓋停止為每個配額視窗選擇此帳戶的最小剩餘配額百分比。留空以繼承提供程式預設值。", + "quotaCutoffsDefaultHint": "預設最小剩餘量:{default}%", + "quotaCutoffsResetAll": "全部重置", + "quotaCutoffsNoWindows": "此帳戶尚無可用的配額視窗。", + "quotaThresholdInvalid": "輸入 0 到 100 之間的整數。", + "budgetKpiToday": "今天", + "budgetKpiThisMonth": "這個月", + "budgetKpiProjEom": "專案結束", + "budgetKpiBlocked": "被阻止", + "budgetKpiAtRisk": "有風險", + "budgetKpiActiveKeys": "活動鍵", + "budgetSearchKeysPlaceholder": "搜尋鍵...", + "budgetSortPctUsed": "排序:使用百分比 ↓", + "budgetSortTodayDollar": "排序:今日$ ↓", + "budgetSortMonthDollar": "排序: 月 $ ↓", + "budgetSortNameAZ": "排序: 名稱 (A–Z)", + "budgetColDailyLim": "每日限制", + "budgetColMonthlyLim": "每月限制", + "budgetColUsedPct": "使用百分比", + "percentUsed": "已使用 {pct}%", + "budgetLoading": "載入中...", + "budgetNoKeysMatch": "沒有鍵匹配過濾器", + "budgetLinearExtrapolation": "線性外推法", + "budgetThisMonthSoFar": "這個月到目前為止", + "budgetProjectedEndOfMonth": "預計月底", + "budgetByProvider": "按提供商", + "budgetDailyDollar": "每日 $", + "budgetWeeklyDollar": "每週 $", + "budgetMonthlyDollar": "每月 $", + "budgetWarnAtPct": "警告%", + "quotaAlerts": "配額提醒", + "quotaTableRefreshing": "⟳ 清爽...", + "noSpendLast30Days": "過去 30 天內沒有消費", + "updatedShort": "更新於", + "lastRefreshed": "上次重新整理", + "providerQuota": "提供商配額", + "providerQuotaHomeHint": "已連線帳戶的即時狀態" + }, + "modals": { + "waitingAuth": "等待授權", + "verificationUrl": "驗證網址", + "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 資料庫讀取", + "initializing": "正在初始化...", + "pricingConfig": "定價配置", + "loadingPricing": "正在載入定價資料...", + "pricingRatesFormat": "定價格式", + "noPricingData": "無可用定價資料", + "noModelsFound": "沒有找到模型" + }, + "loggers": { + "allProviders": "所有提供商", + "allModels": "所有模型", + "allAccounts": "所有帳戶", + "allApiKeys": "所有 API 金鑰", + "allTypes": "所有型別", + "allLevels": "所有級別", + "modelAZ": "模型 A-Z", + "modelZA": "Z-A型", + "loadingLogs": "正在載入日誌...", + "loadingProxyLogs": "正在載入代理日誌...", + "noLogEntries": "未找到日誌條目", + "noPayloadData": "此日誌條目沒有可用的有效負載資料。", + "proxyEvent": "代理事件", + "proxy": "代理", + "level": "等級", + "directNative": "直接(本地)", + "combo": "組合", + "inputTokens": "我:", + "outputTokens": "哦:" + }, + "stats": { + "usageOverview": "使用概述", + "outputTokens": "輸出 Tokens", + "totalCost": "總成本", + "usageByModel": "按模型使用", + "usageByAccount": "按帳戶使用情況", + "failedToLoad": "無法載入使用情況統計資訊。", + "tokenHealth": "令牌健康", + "totalOAuth": "總 OAuth", + "healthy": "健康", + "warning": "警告", + "errored": "出錯了", + "lastCheck": "最後檢查", + "noData": "無資料", + "share": "分享", + "unableToLoad": "無法載入系統指標", + "product": "產品", + "resources": "資源", + "company": "公司" + }, + "auth": { + "welcome": "歡迎", + "signIn": "登入", + "enterPassword": "輸入您的密碼以繼續", + "password": "密碼", + "unifiedProxy": "統一 AI API 代理", + "unifiedAiApiProxy": "統一 AI API 代理", + "unifiedAiApiProxyDesc": "通過單個端點將請求路由到多個 AI 提供商。內建負載均衡、故障轉移和使用情況跟蹤。", + "passwordNotEnabled": "未啟用密碼保護", + "loading": "正在載入...", + "invalidPassword": "密碼無效", + "errorOccurredRetry": "發生錯誤。請再試一次。", + "configureInstance": "開始配置你的 OmniRoute 例項", + "runOnboardingWizard": "執行入門嚮導來設定您的密碼並連線您的第一個 AI 提供商。", + "startOnboarding": "開始引導", + "secureYourInstance": "保護您的例項", + "setPasswordDescription": "設定密碼以保護您的儀表板並保護您的 API 端點免遭未經授權的訪問。", + "configurePassword": "配置密碼", + "continue": "繼續", + "windowWillClose": "該視窗將自動關閉...", + "closeTabNow": "您現在可以關閉此選項卡。", + "copyUrlManual": "請複製位址列中的 URL 並將其貼上到應用程式中。", + "accessDeniedDescription": "您無權訪問此資源。檢查您的 API 金鑰或聯絡管理員。", + "goToDashboard": "轉到儀表板", + "featureMultiProviderTitle": "多提供商", + "featureMultiProviderDesc": "OpenAI、Anthropic、Google 等", + "featureLoadBalancingTitle": "負載均衡", + "featureLoadBalancingDesc": "智慧分配請求", + "featureUsageTrackingTitle": "使用情況追蹤", + "featureUsageTrackingDesc": "監控成本和 Tokens", + "resetPassword": "重置密碼", + "resetDescription": "選擇一種方法來恢復對儀表板的訪問許可權", + "stopServer": "停止 OmniRoute 伺服器", + "processing": "處理中...", + "pleaseWait": "我們正在完成授權,請稍候。", + "authSuccess": "授權成功!", + "copyUrl": "複製此網址", + "accessDenied": "訪問被拒絕", + "methodCliTitle": "方法 1:CLI 重置", + "methodCliDescription": "在執行 OmniRoute 的伺服器上執行以下命令:", + "methodCliHint": "這將提示您設定新密碼。必須首先停止伺服器。", + "methodManualTitle": "方法 2:手動重置", + "methodManualDescription": "從資料庫中刪除密碼並在啟動時設定新密碼:", + "setPasswordInYour": "在以下位置設定新密碼:", + "fileLabelSuffix": "檔案:", + "newPasswordPlaceholder": "your_new_password", + "deleteSettingsFile": "刪除", + "orRemovePasswordHashField": "或刪除 passwordHash 欄位", + "restartServerWithNewPassword": "重啟伺服器,系統會使用新密碼", + "backToLogin": "返回登入", + "forgotPassword": "忘記密碼?", + "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。" + }, + "landing": { + "brandName": "OmniRoute", + "navigateHome": "導航至主頁", + "toggleMenu": "切換選單", + "featuresLink": "特點", + "docsLink": "文件", + "github": "GitHub", + "versionLive": "v1.0 現已上線", + "oneEndpoint": "一個端點", + "allProviders": "所有 AI 提供商", + "heroDescription": "帶 Web 儀表板的 AI 端點代理,是 CLIProxyAPI 的 JavaScript 版本。可與 Claude Code、OpenAI Codex、Cline、RooCode 等 CLI 工具無縫配合。", + "getStarted": "開始使用", + "viewOnGithub": "在 GitHub 上檢視", + "powerfulFeatures": "強大的功能", + "featuresSubtitle": "在一個地方管理 AI 基礎設施所需的一切,專為規模化而構建。", + "featureUnifiedEndpointTitle": "統一端點", + "featureUnifiedEndpointDesc": "通過單一標準 API URL 訪問所有提供商。", + "featureEasySetupTitle": "輕鬆設定", + "featureEasySetupDesc": "使用 npx 命令在幾分鐘內啟動並執行。", + "featureModelFallbackTitle": "模型回退", + "featureModelFallbackDesc": "發生故障或高延遲時自動切換提供商。", + "featureUsageTrackingTitle": "使用情況追蹤", + "featureUsageTrackingDesc": "所有模型的詳細分析和成本監控。", + "featureOAuthApiKeysTitle": "OAuth 與 API 金鑰", + "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 或其他提供商完成處理。", + "getStartedIn30Seconds": "30 秒內開始", + "getStartedDescription": "安裝 OmniRoute,通過 Web 儀表板配置你的提供商,然後開始路由 AI 請求。", + "installOmniRoute": "安裝 OmniRoute", + "installStepDescription": "執行 npx 命令立即啟動伺服器", + "openDashboard": "開啟儀表板", + "openDashboardStepDescription": "通過 Web 介面配置提供商和 API 金鑰", + "routeRequests": "路由請求", + "routeRequestsStepDescription": "將您的 CLI 工具指向 {endpoint}", + "terminal": "終端", + "copy": "複製", + "copied": "✓ 已複製", + "startingOmniRoute": "正在啟動 OmniRoute...", + "serverRunningOnLabel": "伺服器運行於", + "dashboardLabel": "儀表板", + "readyToRoute": "已準備好開始路由! ✓", + "configureProvidersNote": "📝 在儀表板中配置提供商或使用環境變數", + "dataLocation": "資料位置:", + "dataLocationMacLinux": "macOS/Linux:", + "dataLocationWindows": "Windows:", + "product": "產品", + "dashboardLink": "儀表板", + "changelog": "變更日誌", + "resources": "資源", + "documentation": "文件", + "npm": "npm", + "legal": "法律", + "mitLicense": "MIT 許可證", + "footerTagline": "AI 生成的統一端點。輕鬆連線、路由和管理您的 AI 提供商。", + "copyright": "© {year} OmniRoute。保留所有權利。", + "flowToolClaudeCode": "Claude Code", + "flowToolOpenAICodex": "OpenAI Codex", + "flowToolCline": "Cline", + "flowToolCursor": "Cursor", + "flowProviderOpenAI": "OpenAI", + "flowProviderAnthropic": "Anthropic", + "flowProviderGemini": "Gemini", + "flowProviderGithubCopilot": "GitHub Copilot", + "interactiveDiagram": "可互動流程圖", + "ctaTitle": "準備好簡化你的 AI 基礎設施了嗎?", + "ctaDescription": "加入更多開發者,一起用 OmniRoute 簡化 AI 整合流程。開源且可免費開始使用。", + "startFree": "免費開始", + "readDocumentation": "閱讀文件" + }, + "docs": { + "title": "文件", + "quickStart": "快速入門", + "deploymentGuides": "部署指南", + "features": "特點", + "supportedProviders": "支援的提供商", + "supportedProvidersToc": "提供商", + "commonUseCases": "常見用例", + "clientCompatibility": "客戶端相容性", + "protocolsToc": "協議", + "apiReference": "API參考", + "managementApiReference": "管理 API 參考", + "managementApiDescription": "用於代理登錄檔、作用域繫結以及舊版代理遷移的自動化介面。", + "method": "方法", + "path": "路徑", + "notes": "註釋", + "modelPrefixes": "模型字首", + "prefix": "字首", + "troubleshooting": "故障排除", + "supportsChat": "支援聊天和響應端點。", + "oauthAutoRefresh": "支援自動重新整理 Token 的 OAuth 連線。", + "fullStreaming": "所有模型都支援完整流式輸出。", + "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金鑰", + "quickStartStep2Text": "轉至端點 -> 註冊金鑰。每個環境生成一個金鑰。", + "quickStartStep3Title": "3. 連線提供商", + "quickStartStep3Text": "通過 OAuth 登入、API 金鑰或免費套餐自動接入來新增提供商帳戶。", + "quickStartStep4Title": "4. 設定客戶端基本 URL", + "quickStartStep4Prefix": "將您的 IDE 或 API 客戶端指向", + "quickStartStep4Suffix": "例如使用提供商字首", + "deploySetupTitle": "設定指南", + "deploySetupText": "OmniRoute 的分步安裝、環境配置和首次執行演練。", + "deployElectronTitle": "電子桌面", + "deployElectronText": "在 Windows、macOS 和 Linux 上將 OmniRoute 作為本機桌面應用程式執行。", + "deployDockerTitle": "碼頭工人", + "deployDockerText": "使用 Docker Compose 進行容器化部署;為生產堆疊和 Kubernetes 做好準備。", + "deployVmTitle": "虛擬機器", + "deployVmText": "在任何 Linux VM 上自託管。包括 systemd 單元、日誌輪換和備份工具。", + "deployFlyTitle": "飛行大作戰", + "deployFlyText": "使用一個 Fly.toml 和一個部署命令部署到 Fly.io 邊緣執行時。", + "deployPwaTitle": "漸進式網頁應用", + "deployPwaText": "在 Android、iOS 和桌面瀏覽器上將 OmniRoute 作為漸進式 Web 應用程式安裝。", + "deployTermuxTitle": "Termux(Android)", + "deployTermuxText": "通過 Termux 在 Android 上以無介面模式執行 OmniRoute,並從移動瀏覽器訪問儀表盤。", + "featureRoutingTitle": "多提供商路由", + "featureRoutingText": "通過單一 OpenAI 相容端點將請求路由到 30+ AI 提供商,支援聊天、Responses、音訊和影像 API。", + "featureCombosTitle": "組合和平衡", + "featureCombosText": "使用後備鏈和平衡策略建立模型組合:迴圈、優先順序、隨機、最少使用和成本最佳化。", + "featureUsageTitle": "使用情況和成本跟蹤", + "featureUsageText": "即時令牌計數、每個提供商/模型的成本計算以及按 API 金鑰和帳戶劃分的詳細使用情況細分。", + "featureAnalyticsTitle": "分析儀表板", + "featureAnalyticsText": "視覺化分析,包含隨時間變化的請求、令牌、錯誤、延遲、成本和模型受歡迎程度的圖表。", + "featureHealthTitle": "健康監測", + "featureHealthText": "即時健康檢查、提供商狀態、斷路器狀態以及具有指數退避功能的自動速率限制檢測。", + "featureCliTitle": "CLI工具", + "featureCliText": "可在儀表板中管理 IDE 配置、匯出/匯入備份、發現 Codex 配置檔案並修改設定。", + "featureSecurityTitle": "安全與策略", + "featureSecurityText": "API 金鑰身份驗證、IP 過濾、提示注入防護、域策略、會話管理和稽核日誌記錄。", + "featureCloudSyncTitle": "雲同步", + "featureCloudSyncText": "將配置同步到 Cloudflare Workers,以便通過加密憑據和自動故障轉移實現遠端訪問。", + "providersAcrossConnectionTypes": "跨三種連線型別的 {count} 提供商。", + "manageProviders": "管理提供商", + "providersCount": "{count} 提供商", + "providerTypeFree": "免費套餐", + "providerTypeOAuth": "OAuth", + "providerTypeApiKey": "API金鑰", + "useCaseSingleEndpointTitle": "許多提供商的單一端點", + "useCaseSingleEndpointText": "將客戶端統一指向一個 Base URL,再通過模型字首進行路由(例如:gh/、cc/、kr/、openai/)。", + "useCaseFallbackTitle": "使用組合進行回退和模型切換", + "useCaseFallbackText": "在儀表板中建立組合模型,並在提供商內部輪換時保持客戶端配置穩定。", + "useCaseUsageVisibilityTitle": "使用情況、成本和除錯可見性", + "useCaseUsageVisibilityText": "在“使用情況”和“分析”選項卡中按提供商、帳戶和 API 金鑰跟蹤令牌和成本。", + "clientCherryStudioTitle": "櫻桃工作室", + "baseUrlLabel": "基礎 URL", + "chatEndpointLabel": "聊天端點", + "modelRecommendationLabel": "模型建議:顯式字首", + "clientCodexTitle": "Codex / GitHub Copilot 模型", + "clientCodexBullet1": "使用模型 ID", + "clientCodexBullet2": "Codex 系列模型會自動路由到", + "clientCodexBullet3": "非法典模型繼續", + "clientCursorTitle": "Cursor IDE", + "clientCursorBullet1": "使用", + "clientCursorBullet1Suffix": "Cursor 模型字首。", + "clientCursorBullet2": "OAuth 連線方式:在 Providers 頁面中登入。", + "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 配置指南。", + "clientClineTitle": "Cline", + "clientClineBullet1": "Cline 最適合使用顯式的提供商/模型字首,這樣路由器無需猜測後端。", + "clientClineBullet2": "常規模型使用 `/v1/chat/completions`,並在不同帳戶間複用同一個 OmniRoute base URL。", + "clientClineBullet3": "除錯 Cline 執行時問題前,請使用提供商儀表盤驗證 OAuth/API 金鑰。", + "clientKimiTitle": "Kimi Coding", + "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 傳輸。", + "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` 請求。", + "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)。", + "endpointSpeechNote": "語音生成(ElevenLabs、OpenAI TTS)。", + "endpointEmbeddingsNote": "文本嵌入生成(OpenAI、Cohere、Voyage)。", + "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。", + "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)。", + "endpointSearchNote": "通過 5 個提供商進行網頁搜尋(Serper、Brave、Exa、Tavily、Perplexity)。", + "endpointSearchAnalyticsNote": "搜尋請求的分析和指標。", + "endpointVideoNote": "影片生成(ComfyUI、SD WebUI 工作流)。", + "endpointMusicNote": "通過 ComfyUI 工作流生成音樂。", + "endpointMessagesNote": "Anthropic 原生 messages 端點。", + "endpointCountTokensNote": "統計給定訊息載荷的 token 數。", + "endpointFilesNote": "用於多模態輸入的檔案上傳。", + "endpointBatchesNote": "用於批次 API 請求的 Batch 處理。", + "endpointWsNote": "用於即時流式傳輸的 WebSocket 端點。", + "mgmtProvidersListNote": "列出所有已註冊的提供商連線。", + "mgmtProvidersCreateNote": "建立新的提供商連線。", + "mgmtProvidersUpdateNote": "更新現有提供商連線。", + "mgmtProvidersDeleteNote": "刪除提供商連線。", + "mgmtProvidersTestNote": "測試提供商的連線和認證。", + "mgmtProvidersModelsNote": "列出特定提供商的可用模型。", + "mgmtSettingsGetNote": "獲取當前應用設定。", + "mgmtSettingsUpdateNote": "更新應用設定。", + "mgmtPayloadRulesGetNote": "獲取載荷轉換規則。", + "mgmtPayloadRulesUpdateNote": "更新載荷轉換規則。", + "mcpToolsTitle": "MCP 工具", + "mcpToolsDescription": "OmniRoute 通過 Model Context Protocol 暴露 {count} 個工具,用於 Agent 編排。", + "mcpToolsCount": "{count} 個工具", + "mcpToolsToc": "MCP 工具", + "mcpToolsRoutingTitle": "路由與發現", + "mcpToolsRoutingDesc": "健康檢查、組合管理、配額監控、成本報告和模型目錄訪問。", + "mcpToolsOperationsTitle": "運維與策略", + "mcpToolsOperationsDesc": "路由模擬、預算保護、策略切換、韌性配置和提供商指標。", + "mcpToolsCacheTitle": "快取管理", + "mcpToolsCacheDesc": "檢視快取統計,並清空語義快取或簽名快取。", + "mcpToolsCompressionTitle": "壓縮發動機", + "mcpToolsCompressionDesc": "配置 RTK/Brotli 壓縮、交換引擎並按組合檢查壓縮分析。", + "mcpToolsOneProxyTitle": "1代理/隧道", + "mcpToolsOneProxyDesc": "管理出站代理、輪換住宅 IP 並檢查代理執行狀況。", + "mcpToolsMemoryTitle": "記憶", + "mcpToolsMemoryDesc": "搜尋、新增和清除持久化對話記憶條目。", + "mcpToolsSkillsTitle": "技能", + "mcpToolsSkillsDesc": "列出、啟用、執行和監控自定義技能執行。", + "featureAutoComboTitle": "Auto-Combo", + "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 通訊通道。" + }, + "legal": { + "privacyPolicy": "隱私政策", + "termsOfService": "服務條款", + "providerConfigurations": "提供商配置", + "apiKeys": "API 金鑰", + "usageLogs": "使用日誌", + "applicationSettings": "應用程式設定", + "viewExportAnalytics": "檢視和匯出使用情況分析", + "clearHistory": "隨時清除使用記錄", + "configureRetention": "配置日誌保留策略", + "backupRestore": "備份和恢復您的資料庫", + "privacyMetadataTitle": "隱私政策 | OmniRoute", + "privacyMetadataDescription": "OmniRoute AI API 代理路由器的隱私政策。", + "termsMetadataTitle": "服務條款 | OmniRoute", + "termsMetadataDescription": "OmniRoute AI API 代理路由器的服務條款。", + "backToHome": "返回首頁", + "lastUpdated": "最後更新:{date}", + "policyLastUpdatedDate": "2026 年 2 月 13 日", + "listSeparator": "-", + "questionsVisit": "有問題嗎?訪問我們的", + "githubRepository": "GitHub 倉庫", + "privacySection1Title": "1. 本地優先架構", + "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 隱私政策", + "privacySection5Title": "5. 雲同步(可選)", + "privacySection5Text": "如果您啟用可選的雲同步功能,提供商配置和 API 金鑰可能會傳輸到配置的雲端點。此功能預設處於停用狀態,需要明確選擇加入。", + "privacySection6Title": "6. 日誌記錄", + "privacyLoggingIntro": "可以通過儀表板設定配置請求日誌。您可以:", + "privacySection7Title": "7. 您的權利", + "privacySection7TextStart": "由於所有資料都儲存在本地,因此您擁有完全的控制權。您可以隨時刪除您的資料,方法是刪除", + "privacySection7TextEnd": "目錄或使用儀表板中的資料庫備份和恢復功能。", + "termsSection1Title": "1. 概述", + "termsSection1Text": "OmniRoute 是一款本地優先的 AI API 代理路由器,完全執行在你的裝置上。它通過負載均衡、故障回退和用量跟蹤,將請求路由到多個 AI 提供商。", + "termsSection2Title": "2. 使用者的責任", + "termsResponsibilityApiKeys": "你需要自行負責管理自己的 API 金鑰,以及第三方 AI 提供商(OpenAI、Anthropic、Google 等)的憑證。", + "termsResponsibilityCompliance": "你必須遵守通過 OmniRoute 訪問的每個 AI 提供商的服務條款。", + "termsResponsibilitySecurity": "你需要負責本地 OmniRoute 安裝的安全,包括設定密碼和限制網路訪問。", + "termsSection3Title": "3. 工作原理", + "termsSection3Text": "OmniRoute 充當中間代理。傳送到 OmniRoute 的 API 呼叫會被轉換後轉發到你配置的 AI 提供商。除必要的協議轉換外,OmniRoute 不會修改你的請求或響應內容。", + "termsSection4Title": "4. 資料處理", + "termsDataStoredLocally": "所有資料都儲存在你本機上的 SQLite 資料庫中。", + "termsNoTransmission": "除非你明確啟用雲同步功能,否則 OmniRoute 不會將任何資料傳輸到外部伺服器。", + "termsDataLocationText": "使用日誌、API 金鑰和配置儲存在", + "termsSection5Title": "5. 免責宣告", + "termsSection5Text": "OmniRoute 按“原樣”提供,不附帶任何形式的保證。我們不對 API 使用成本、服務中斷或資料丟失造成的任何損失負責。請始終為配置做好備份。", + "termsSection6Title": "6. 開源", + "termsSection6Text": "OmniRoute 是開源軟體。您可以根據其許可條款自由檢查、修改和分發它。" + }, + "agents": { + "title": "CLI 智慧體", + "description": "發現系統中已安裝的 CLI 智慧體,並支援新增自定義智慧體以便自動檢測。", + "refresh": "重新整理", + "installed": "已安裝", + "notFound": "未找到", + "builtIn": "內建", + "custom": "自定義", + "remove": "移除", + "addCustomAgent": "新增自定義智慧體", + "addCustomAgentDesc": "註冊任意 CLI 工具用於檢測,重新整理時會自動掃描。", + "agentName": "智慧體名稱", + "binaryName": "執行檔名", + "versionCommand": "版本命令", + "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 不在內建列表中,請使用“新增自定義智慧體”,並填寫執行檔名與版本命令。", + "setupGuideCommandMissingTitle": "修復“command not found”", + "setupGuideCommandMissingDesc": "請確認 CLI 命令已存在於 PATH 中,重新開啟一個終端會話後再次點選“重新整理”。", + "cliToolsRedirectTitle": "CLI 工具已移至專用頁面", + "cliToolsRedirectDesc": "在 CLI Tools 頁面管理 Agent CLI 整合與重定向。", + "spawnArgsPlaceholder": "啟動引數佔位符", + "binaryNamePlaceholder": "二進位制名稱佔位符", + "versionCommandPlaceholder": "版本命令佔位符", + "architectureTitle": "架構", + "flowLocalBinary": "本地二進位制", + "flowOmniRoute": "OmniRoute", + "agentNamePlaceholder": "Agent 名稱佔位符", + "architectureDescription": "瞭解 OmniRoute 如何在客戶端、路由器和 Agent 目標之間轉發請求。", + "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 協議用作執行目標", + "flowDiagramClient": "客戶端應用", + "flowDiagramClientDesc": "SDK、API 或上游服務", + "flowDiagramOmniRoute": "OmniRoute", + "flowDiagramOmniRouteDesc": "接收請求並選擇目標", + "flowDiagramSpawn": "啟動程序", + "flowDiagramSpawnDesc": "通過 stdio 啟動 CLI 二進位制檔案", + "flowDiagramCli": "CLI 代理", + "flowDiagramCliDesc": "使用自身認證/模型處理", + "fingerprintSettingsHint": "CLI 指紋匹配(偽裝成特定 CLI 工具的請求)可在以下位置配置:", + "settingsRoutingLink": "設定/路由", + "openSettings": "設定", + "copyRawUrlTitle": "將原始 URL 複製到剪貼簿", + "copied": "複製了!", + "copyUrl": "複製網址", + "startHere": "從這裡開始", + "badgeNew": "新", + "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 — 無需手動文件。" + }, + "cloudAgents": { + "title": "雲代理", + "description": "管理自主編碼代理(Jules、Devin、Codex Cloud)", + "loading": "正在載入任務...", + "aboutTitle": "關於雲代理", + "aboutDescription": "雲代理是遠端人工智慧編碼助手,可以自主執行任務。它們的工作方式與本地 CLI 代理不同 - 您可以通過 OmniRoute 的 API 與它們互動。", + "howItWorksTitle": "工作原理:", + "howItWorksDesc": "建立任務 → 代理分析並提出計劃 → 您批准 → 代理執行 → 結果返回", + "newTaskTitle": "建立新任務", + "newTaskDescription": "使用雲代理啟動新任務", + "selectAgent": "選擇代理", + "taskDescription": "任務描述", + "taskDescriptionPlaceholder": "描述您希望代理做什麼...", + "startTask": "啟動任務", + "tasks": "任務", + "taskDetail": "任務詳情", + "noTasks": "還沒有任務。建立一個以開始使用。", + "noTasksTitle": "暫無任務", + "noTasksDesc": "建立你的第一個任務以開始使用。", + "tasksTab": "任務", + "agentsTab": "代理", + "settingsTab": "設定", + "agentsEnabled": "已啟用", + "agentsDisabled": "已停用", + "filterAllProviders": "所有提供商", + "filterAll": "全部", + "autoRefreshing": "自動重新整理中", + "viewPR": "檢視 Pull Request", + "connected": "已連線", + "notConnected": "未連線", + "configure": "配置", + "settingsTitle": "雲代理設定", + "settingsDesc": "為雲代理配置本地偏好。", + "settingEnableAgents": "啟用雲代理", + "settingEnableAgentsDesc": "允許 OmniRoute 編排自主編碼代理。", + "settingAutoPR": "自動建立 PR", + "settingAutoPRDesc": "任務完成後自動建立包含變更的 Pull Request。", + "settingRequireApproval": "需要方案審批", + "settingRequireApprovalDesc": "代理執行所提方案前始終等待手動批准。", + "untitledTask": "無標題任務", + "created": "已建立", + "conversation": "對話", + "result": "結果", + "error": "錯誤", + "planReady": "計劃已準備好等待批准", + "approvePlan": "批准計劃", + "rejectPlan": "拒絕並取消", + "sendMessagePlaceholder": "給代理發訊息...", + "cancel": "取消", + "delete": "刪除", + "selectTaskPrompt": "選擇任務檢視詳細資訊", + "statusPending": "待定", + "statusRunning": "跑步", + "statusWaitingApproval": "等待批准", + "statusCompleted": "已完成", + "statusFailed": "失敗", + "statusCancelled": "取消", + "repositoryName": "儲存庫名稱", + "repositoryUrl": "儲存庫網址", + "branch": "分公司" + }, + "templateNames": { + "simple-chat": "簡單對話", + "streaming": "流式響應", + "system-prompt": "系統提示詞", + "thinking": "思考模式", + "tool-calling": "工具呼叫", + "multi-turn": "多輪對話", + "vision": "願景", + "schema-coercion": "模式強制" + }, + "templateDescriptions": { + "simple-chat": "帶系統訊息的基礎對話模板", + "streaming": "用於流式響應的模板", + "system-prompt": "帶自定義系統提示詞的模板", + "thinking": "帶推理/思考預算的模板", + "tool-calling": "用於工具/函式呼叫的模板", + "multi-turn": "用於多輪對話的模板", + "vision": "具有影像輸入的多模態模板", + "schema-coercion": "結構化輸出/JSON 模式實施" + }, + "templatePayloads": { + "simpleChat": { + "system": "你是一名樂於助人的 AI 助手。", + "userGreeting": "你好!今天我可以幫你做些什麼?" + }, + "streaming": { + "prompt": "寫一個關於" + }, + "systemPrompt": { + "question": "生命的意義是什麼?", + "systemInstruction": "請給出一個深思熟慮、帶有哲學意味的回答。" + }, + "thinking": { + "question": "請解釋量子計算" + }, + "toolCalling": { + "cityNameDescription": "需要查詢天氣的城市名稱", + "toolDescription": "獲取某個地點的當前天氣", + "userWeather": "東京現在天氣怎麼樣?" + }, + "multiTurn": { + "system": "你是一名樂於助人的助手。", + "assistantExample": "我很樂意幫助你處理這件事。", + "userInitial": "我需要幫助來處理", + "userFollowUp": "你可以再詳細說明一下嗎?" + } + }, + "cache": { + "title": "快取管理", + "description": "監控提供商側 Prompt Cache 的效率,以及本地 Semantic Cache 的響應複用情況。", + "refresh": "重新整理", + "clearAll": "清空語義快取", + "memoryEntries": "記憶體條目", + "memoryEntriesSub": "記憶體 LRU", + "dbEntries": "資料庫條目", + "dbEntriesSub": "已持久化(SQLite)", + "cacheHits": "快取命中數", + "cacheHitsSub": "共 {total} 次", + "tokensSaved": "節省的 Tokens", + "tokensSavedSub": "根據命中次數估算", + "hitRate": "命中率", + "performance": "快取效能", + "autoRefresh": "每 {seconds} 秒自動重新整理", + "hits": "命中次數", + "misses": "未命中次數", + "total": "總計", + "behavior": "快取行為", + "behaviorDeterministic": "僅快取 temperature=0 的非流式請求。", + "behaviorBypass": "通過請求頭 {header} 繞過快取。", + "behaviorTwoTier": "雙層儲存:記憶體 LRU(快速)+ SQLite(重啟後持久化)。", + "behaviorTtl": "預設 TTL:30 分鐘。可通過 {envVar} 配置。", + "idempotency": "冪等層", + "activeDedupKeys": "活躍去重鍵", + "dedupWindow": "去重視窗", + "clearSuccess": "語義快取已清空,已刪除 {count} 條記錄。", + "clearError": "清除快取失敗。", + "unavailable": "快取不可用", + "unavailableDesc": "無法獲取快取統計資訊。請確保伺服器正在執行。", + "loadingCacheAria": "正在載入快取", + "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 快取指標", + "withCacheControl": "含快取控制", + "cachedTokensRead": "從快取讀取", + "cacheCreationWrite": "寫入快取", + "cacheReuseRatio": "快取複用率", + "cacheReuseRatioDesc": "快取讀取 token / 輸入 token 總量", + "estCostSaved": "預估節省費用", + "lastUpdated": "上次更新", + "hoursTracked": "個小時", + "busiestHour": "最繁忙時段", + "peakCacheRate": "最高快取率", + "trendHour": "小時", + "activityVolume": "活動量", + "requestsShort": "請求", + "inputShort": "輸入", + "cachedShort": "已快取", + "writeShort": "寫入", + "resetting": "正在重置...", + "resetMetrics": "重置指標", + "byProvider": "按提供商分類", + "providerCacheRateDesc": "每個提供商都會直接展示總輸入 token、cache read token 和 cache write token,方便你對照原始資料判斷比率是否可靠。", + "provider": "提供商", + "requests": "請求數", + "inputTokens": "輸入 Tokens 總計", + "cachedTokensCol": "快取讀取", + "cacheCreation": "快取寫入", + "trend24h": "快取趨勢(24 小時)", + "peakCached": "峰值快取量", + "cached": "已快取", + "overview": "概覽", + "tableProvider": "提供商", + "tableModel": "模型", + "performanceTitle": "效能", + "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 活動。", + "signature": "簽名", + "model": "模型", + "created": "建立時間", + "expires": "到期時間", + "actions": "操作", + "deduplicatedRequests": "去重請求數", + "savedCalls": "節省的 API 呼叫次數", + "totalProcessed": "已處理請求總數", + "disabled": "已停用", + "totalRequests": "總請求數", + "reasoningCache": "推理回放", + "reasoningCacheDesc": "為多輪工具呼叫流程保留模型思考內容", + "reasoningEntries": "活動條目", + "reasoningReplayRate": "回放率", + "reasoningReplays": "總回放次數", + "reasoningCharsCached": "已快取字元數", + "reasoningMisses": "快取未命中", + "reasoningByProvider": "按提供商", + "reasoningByModel": "按模型", + "reasoningRecentEntries": "最近條目", + "reasoningToolCallId": "工具呼叫 ID", + "reasoningChars": "字元數", + "reasoningAge": "時間", + "reasoningView": "檢視", + "reasoningDetail": "推理內容", + "reasoningBehavior": "行為", + "reasoningBehaviorCapture": "從流式響應中捕獲 reasoning_content", + "reasoningBehaviorReplay": "當客戶端省略時,在下一輪重新注入", + "reasoningBehaviorFallback": "記憶體優先,並使用 SQLite 作為崩潰恢復後備", + "reasoningBehaviorTtl": "TTL:2 小時 | 最大條目:2,000(記憶體)", + "reasoningBehaviorModels": "支援:DeepSeek、Kimi、Qwen-Thinking、GLM", + "reasoningClearAll": "清空推理快取", + "reasoningClearSuccess": "已清除 {count} 個推理快取條目", + "reasoningClearError": "清除推理快取失敗", + "reasoningNoData": "尚未快取推理條目。思考模型使用工具呼叫時會顯示條目。", + "cachePerformanceRetry": "重試", + "cachePerformanceHitRate": "命中率", + "cachePerformanceAvgLatency": "平均延遲(毫秒)", + "cachePerformanceP95Latency": "p95 延遲(毫秒)", + "retry": "重試", + "reasoningAvgChars": "平均字元數", + "tableShare": "佔比", + "justNow": "剛剛", + "minutesAgo": "{minutes} 分鐘前", + "hoursAgo": "{hours} 小時前", + "daysAgo": "{days} 天前", + "entries": "條目" + }, + "proxyConfigModal": { + "levelGlobal": "全域性", + "levelProvider": "供應商", + "levelCombo": "組合", + "levelKey": "金鑰", + "levelDirect": "直接(無代理)", + "titleGlobal": "全域性代理配置", + "titleLevel": "{level} 代理 — {label}", + "loading": "正在載入代理配置...", + "inheritingFrom": "繼承自", + "source": "來源", + "savedProxy": "已儲存代理", + "custom": "自定義", + "selectSavedProxyPlaceholder": "選擇已儲存的代理...", + "proxyType": "代理型別", + "host": "主機", + "hostPlaceholder": "1.2.3.4 或 proxy.example.com", + "port": "埠", + "authOptional": "認證(可選)", + "username": "使用者名稱", + "usernamePlaceholder": "使用者名稱", + "password": "密碼", + "passwordPlaceholder": "密碼", + "connected": "已連線", + "ip": "IP:", + "connectionFailed": "連線失敗", + "testConnection": "測試連線", + "clear": "清除", + "cancel": "取消", + "save": "儲存", + "errorSelectSavedProxy": "請先選擇已儲存的代理。", + "errorSelectProxyFirst": "請先選擇代理。", + "errorProxyNotFound": "所選代理未找到。", + "errorClearSavedProxy": "清除已儲存代理失敗", + "errorSaveProxy": "儲存代理配置失敗", + "errorClearProxy": "清除代理配置失敗", + "errorSocks5Hidden": "SOCKS5 已配置但已隱藏,因為 NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false。" + }, + "oauthModal": { + "title": "連線 {providerName}", + "waiting": "等待授權", + "completeAuthInPopup": "在彈出視窗中完成授權。", + "popupClosedHint": "如果彈出視窗關閉而沒有重定向回來(例如 Qoder),此對話方塊將自動切換到手動 URL 輸入模式。", + "popupBlocked": "彈出視窗被阻止?手動輸入 URL", + "deviceCodeVisitUrl": "訪問下面的 URL 並輸入程式碼:", + "deviceCodeVerificationUrl": "驗證 URL", + "deviceCodeYourCode": "您的程式碼", + "deviceCodeWaiting": "等待授權...", + "googleOAuthWarning": "遠端訪問 + Google OAuth:預設憑據僅接受重定向到 localhost。授權後,您的瀏覽器將嘗試開啟 localhost — 複製該完整 URL 並貼上到下方。要完全遠端使用而無需此手動步驟,配置您自己的 OAuth 憑據。", + "remoteAccessInfo": "遠端訪問:由於您是遠端訪問 OmniRoute,授權後您會看到一個錯誤頁面(localhost 未找到)。這是正常的 — 只需從瀏覽器位址列複製完整 URL 並貼上到下方。", + "step1OpenUrl": "步驟 1:在瀏覽器中開啟此 URL", + "copy": "複製", + "step2PasteCallback": "步驟 2:在此處貼上回撥 URL 或授權程式碼", + "step2Hint": "授權後,貼上完整的回撥 URL。對於 Claude Code 和 Cline,您也可以直接貼上身份驗證程式碼,例如 code#state。", + "connect": "連線", + "cancel": "取消", + "success": "連線成功!", + "successMessage": "您的 {providerName} 帳戶已連線。", + "done": "完成", + "error": "連線失敗", + "tryAgain": "重試" + }, + "cursorAuthModal": { + "title": "連線 Cursor IDE", + "autoDetecting": "自動檢測令牌中...", + "readingFromCursor": "正在從 Cursor IDE 或 cursor-agent 讀取", + "tokensAutoDetected": "已成功從 Cursor IDE 自動檢測到令牌!", + "cursorNotDetected": "未檢測到 Cursor IDE。請手動貼上您的令牌。", + "accessToken": "訪問令牌", + "required": "*", + "accessTokenPlaceholder": "訪問令牌將自動填充...", + "machineId": "機器 ID", + "optional": "(可選)", + "machineIdPlaceholder": "機器 ID 將自動填充...", + "importing": "正在匯入...", + "importToken": "匯入令牌", + "cancel": "取消", + "errorAutoDetect": "無法自動檢測令牌", + "errorAutoDetectFailed": "自動檢測令牌失敗", + "errorEnterToken": "請輸入訪問令牌", + "errorImportFailed": "匯入失敗" + }, + "pricingModal": { + "title": "定價配置", + "loading": "正在載入定價資料...", + "pricingRatesFormat": "定價費率格式", + "ratesDescription": "所有費率均為 每百萬令牌美元($/1M 令牌)。示例:輸入費率為 2.50 表示每 1,000,000 個輸入令牌收費 2.50 美元。", + "model": "模型", + "input": "輸入", + "output": "輸出", + "cached": "快取", + "reasoning": "推理", + "cacheCreation": "快取建立", + "noPricingData": "無定價資料可用", + "resetToDefaults": "重置為預設值", + "cancel": "取消", + "saving": "正在儲存...", + "saveChanges": "儲存更改", + "resetConfirm": "將所有定價重置為預設值?此操作無法撤銷。", + "errorSaveFailed": "儲存定價失敗", + "errorResetFailed": "重置定價失敗" + }, + "proxyRegistry": { + "title": "代理登錄檔", + "description": "儲存可重用的代理並跟蹤分配。", + "importLegacy": "匯入舊版", + "bulkAssign": "批次分配", + "addProxy": "新增代理", + "loading": "正在載入代理...", + "noProxies": "暫無儲存的代理。", + "tableName": "名稱", + "tableEndpoint": "端點", + "tableStatus": "狀態", + "tableHealth": "健康狀態(24小時)", + "tableUsage": "使用情況", + "tableActions": "操作", + "test": "測試", + "edit": "編輯", + "delete": "刪除", + "modalCreateTitle": "建立代理", + "modalEditTitle": "編輯代理", + "labelName": "名稱", + "labelType": "型別", + "labelFamily": "__MISSING__:IP family", + "familyAuto": "__MISSING__:Auto (dual-stack)", + "familyIpv4": "__MISSING__:IPv4 only", + "familyIpv6": "__MISSING__:IPv6 only", + "familyHint": "__MISSING__:Egress address family. Auto keeps dual-stack; IPv4/IPv6 pin this proxy to that family (prevents a v4 leak under an IPv6-only proxy).", + "labelHost": "主機", + "labelPort": "埠", + "labelUsername": "使用者名稱", + "labelPassword": "密碼", + "labelRegion": "區域", + "labelStatus": "狀態", + "labelNotes": "備註", + "usernamePlaceholderEdit": "留空以保留當前使用者名稱", + "passwordPlaceholderEdit": "留空以保留當前密碼", + "statusActive": "活躍", + "statusInactive": "非活躍", + "cancel": "取消", + "save": "儲存", + "bulkModalTitle": "批次代理分配", + "bulkLabelScope": "範圍", + "bulkLabelProxy": "代理", + "bulkClearAssignment": "(清除分配)", + "bulkLabelScopeIds": "範圍 ID(逗號或換行符分隔)", + "bulkScopeIdsPlaceholder": "provider-openai,provider-anthropic", + "bulkApply": "應用", + "labelScope": "作用域", + "labelProxy": "代理", + "scopeGlobal": "全域性", + "scopeProvider": "按提供商", + "scopeAccount": "按帳號", + "scopeCombo": "按組合", + "bulkImportErrorMissingName": "缺少 NAME", + "bulkImportErrorMissingHost": "缺少 HOST", + "bulkImportErrorInvalidPort": "PORT 無效(必須為 1-65535)", + "bulkImportErrorInvalidType": "TYPE 無效(使用 http、https 或 socks5)", + "bulkImportErrorInvalidStatus": "STATUS 無效(使用 active 或 inactive)", + "errorLoadFailed": "載入代理登錄檔失敗", + "errorNameHostRequired": "名稱和主機為必填項", + "errorSaveFailed": "儲存代理失敗", + "errorDeleteFailed": "刪除代理失敗", + "errorForceDeleteConfirm": "此代理仍在分配中。強制刪除並移除所有分配?", + "errorMigrateFailed": "遷移舊版代理配置失敗", + "errorBulkFailed": "執行批次分配失敗", + "success": "✓", + "failure": "✗", + "failed": "失敗", + "successRate": "{rate}% 成功", + "avgLatency": "{latency} 毫秒平均", + "assignmentsCount": "{count} 個分配", + "noData": "—", + "testSuccess": "✓ {ip}", + "testLatency": "{latency}毫秒", + "testFailure": "✗ {error}", + "bulkImport": "批次匯入", + "bulkImportTitle": "批次匯入代理", + "bulkImportDescription": "使用管道符分隔格式貼上代理配置。每行一個代理。已有代理(相同 host + port)將被更新。", + "bulkImportParse": "解析", + "bulkImportImport": "匯入 {count} 個代理", + "bulkImportImporting": "正在匯入...", + "bulkImportParsed": "已解析 {count} 個代理", + "bulkImportSkipped": "已跳過 {count} 行", + "bulkImportParseErrors": "{count} 個錯誤", + "bulkImportNoValidEntries": "未找到有效條目。請檢查格式後重試。", + "bulkImportSuccess": "匯入完成:已建立 {created} 個,已更新 {updated} 個,失敗 {failed} 個", + "bulkImportErrorLine": "第 {line} 行:{reason}", + "bulkImportMaxExceeded": "每次最多匯入 100 個代理", + "bulkImportPreview": "預覽", + "clearAssignment": "(明確分配)", + "bulkProxyAssignment": "批次代理分配", + "testAll": "__MISSING__:Test All", + "errorTestFailed": "__MISSING__:Failed to test proxies", + "batchSelectedCount": "__MISSING__:{count} selected", + "batchDeleteSelected": "__MISSING__:Delete {count} selected", + "batchActivateSelected": "__MISSING__:Enable {count} selected", + "testPassed": "__MISSING__:✓ OK" + }, + "playground": { + "title": "模型演練場", + "description": "直接從儀表板測試任何模型。選擇提供商、模型和端點型別,然後傳送請求以檢視原始響應。", + "endpoint": "端點", + "provider": "提供商", + "model": "模型", + "accountKey": "帳戶 / 金鑰", + "autoAccounts": "自動({count} 個帳戶)", + "noAccounts": "無帳戶", + "send": "傳送", + "cancel": "取消", + "audioFile": "音訊檔案", + "attachImages": "附加圖片(視覺)", + "multipartFormData": "multipart/form-data", + "upToImages": "最多 4 張圖片", + "selectAudioFile": "選擇音訊檔案進行轉錄(mp3、wav、m4a、ogg、flac…)", + "clearAll": "清除全部", + "request": "請求", + "response": "響應", + "transcription": "轉錄", + "copy": "複製", + "resetToDefault": "重置為預設", + "downloadAudio": "下載音訊", + "copyText": "複製文本", + "transcriptionHint": "轉錄使用 multipart/form-data。上傳上面的音訊檔案 — 下面的 JSON 控制額外引數(模型、語言)。", + "imagesGenerated": "生成了 {count} 張圖片", + "generatedImage": "生成圖片 {index}", + "save": "儲存", + "endpointOptions": { + "chat": "聊天補全", + "responses": "響應", + "images": "圖片生成", + "embeddings": "Embeddings", + "speech": "文本轉語音", + "transcription": "音訊轉錄", + "video": "影片生成", + "music": "音樂生成", + "rerank": "Rerank", + "search": "網頁搜尋" + }, + "conversationalChat": "對話式聊天", + "clearChat": "清除聊天內容", + "typeMessagePlaceholder": "輸入訊息...(Shift+Enter 換行)", + "tabChat": "聊天", + "tabCompare": "比較", + "tabApi": "API", + "tabBuild": "構建", + "configPane": "配置", + "systemPrompt": "系統提示", + "systemPromptPlaceholder": "你是一個樂於助人的助手。", + "modelPlaceholder": "例如 openai/gpt-4o", + "endpointLabel": "端點", + "parametersLabel": "引數", + "collapseConfig": "摺疊配置面板", + "expandConfig": "展開配置面板", + "temperature": "溫度", + "maxTokens": "最大令牌數", + "topP": "Top-p", + "presencePenalty": "存在懲罰", + "frequencyPenalty": "頻率懲罰", + "seedPlaceholder": "隨機(留空)", + "presetsLabel": "預設", + "loadPreset": "載入預設", + "savePreset": "儲存預設", + "noPresets": "無預設", + "presetNamePlaceholder": "預設名稱", + "savingPreset": "儲存中…", + "nameRequired": "名稱是必填項", + "failedToSavePreset": "儲存預設失敗", + "improvePrompt": "最佳化提示", + "improvingPrompt": "最佳化中…", + "improvePromptTitle": "使用 AI 最佳化提示", + "setModelFirst": "請先設定模型", + "improveQuotaWarning": "這將消耗配置中模型配額的用量。", + "improveConfirm": "最佳化", + "exportCode": "匯出程式碼", + "exportCodeTitle": "匯出程式碼", + "exportShort": "匯出", + "noStateToExport": "沒有可匯出的 Playground 狀態。", + "closeExportModal": "關閉匯出模態框", + "close": "關閉", + "exportRealKeyWarning": "安全警告:匯出被阻止 — 輸出中檢測到真實的 API 金鑰。請重置您的 API 金鑰並重試。", + "placeholderHintPrefix": "替換", + "placeholderHintSuffix": "使用您的實際 API 金鑰,或將其設定為環境變數。", + "copyLangCode": "複製 {language} 程式碼", + "loadingPresets": "載入中…", + "loadPresetPlaceholder": "載入預設…", + "copyCode": "複製", + "copiedCode": "已複製!", + "addModel": "+ 新增模型", + "runAll": "執行全部", + "cancelAll": "取消全部", + "maxColumnsReached": "最大 {max} 列", + "modelPlaceholderCompare": "模型(Cmd+K)…", + "ttft": "TTFT", + "tps": "TPS", + "metricsDisclaimer": "客戶端估算", + "tokensLabel": "令牌", + "costLabel": "成本", + "costEstimated": "(估算)", + "toolsLabel": "工具", + "addTool": "新增工具", + "toolNamePlaceholder": "函式名稱", + "toolDescPlaceholder": "描述(可選)", + "toolParamsInvalid": "引數必須為有效 JSON", + "structuredOutputLabel": "結構化輸出", + "enableJsonMode": "啟用 JSON 模式", + "disableJsonMode": "停用 JSON 模式", + "invalidJson": "無效 JSON", + "running": "執行中…", + "runLabel": "執行", + "enterToolResult": "輸入工具結果…", + "build": { + "step1Label": "測試什麼?", + "step2Label": "配置", + "step3Label": "執行", + "step1Title": "你想測試什麼?", + "step1Subtitle": "選擇您想在本次會議中探索的功能。", + "step2Title": "配置", + "step2Subtitle": "設定請求中將使用的工具或 JSON 架構。", + "step3Title": "執行", + "modeToolsTitle": "工具", + "modeToolsDesc": "測試函式呼叫 — 定義工具並檢視模型如何呼叫它們。", + "modeJsonTitle": "JSON", + "modeJsonDesc": "測試結構化輸出 — 將響應限制為 JSON 架構。", + "modeBothTitle": "工具 + JSON", + "modeBothDesc": "在單個請求中結合函式呼叫和結構化輸出。", + "backButton": "返回", + "nextButton": "下一步", + "runButton": "執行", + "promptPlaceholder": "輸入您的訊息…(按 Enter 傳送,Shift+Enter 換行)" + } + }, + "miniPlayground": { + "endpoint": "端點", + "apiKey": "API 金鑰", + "model": "模型", + "voice": "聲音", + "speed": "語速", + "input": "輸入", + "url": "URL", + "format": "格式", + "depth": "深度", + "copyCurl": "複製 cURL", + "copied": "已複製!", + "run": "執行", + "running": "執行中...", + "response": "響應", + "tunnel": "隧道", + "send": "傳送", + "selectKey": "選擇金鑰", + "testLabel": "測試", + "expandTest": "展開測試", + "collapseTest": "收起測試", + "revealKey": "顯示金鑰", + "hideKey": "隱藏金鑰", + "download": "下載", + "play": "播放", + "query": "查詢", + "numResults": "最大結果數", + "prompt": "提示詞", + "size": "尺寸", + "duration": "時長", + "question": "問題", + "audioFile": "音訊檔案", + "noKeysFound": "未找到 API 金鑰。請到 Keys 區域新增一個。", + "exampleLabel": "示例", + "latency": "{ms} 毫秒", + "statsLine": "{ms}ms · {tokensIn} 輸入 / {tokensOut} 輸出 tokens" + }, + "requestLogger": { + "recording": "正在錄製", + "paused": "已暫停", + "pipelineLogsOn": "管道日誌開啟", + "pipelineLogsOff": "管道日誌關閉", + "updatingPipelineLogs": "正在更新管道日誌...", + "updatePipelineFailed": "更新流水線日誌失敗", + "capturePipeline": "為新請求捕獲流水線載荷", + "searchPlaceholder": "搜尋模型、提供商、帳戶、API金鑰、組合...", + "allProviders": "所有提供商", + "allModels": "所有模型", + "allAccounts": "所有帳戶", + "allApiKeys": "所有API金鑰", + "total": "總計", + "ok": "成功", + "err": "錯誤", + "combo": "組合", + "keys": "金鑰", + "shown": "顯示", + "sortNewest": "最新", + "sortOldest": "最早", + "sortTokensDesc": "令牌 ↓", + "sortTokensAsc": "令牌 ↑", + "sortDurationDesc": "時長 ↓", + "sortDurationAsc": "時長 ↑", + "sortStatusDesc": "狀態 ↓", + "sortStatusAsc": "狀態 ↑", + "sortModelAsc": "模型 A-Z", + "sortModelDesc": "模型 Z-A", + "sortLogs": "日誌排序", + "refresh": "重新整理", + "columnsLabel": "列", + "cacheSem": "語義", + "cacheUp": "線上", + "semantic": "Semantic Cache", + "upstream": "上游", + "semanticCacheHit": "語義快取命中(由 OmniRoute 提供)", + "upstreamResponse": "上游提供商響應", + "noApiKey": "無 API key", + "requestedRoutedTitle": "請求 {requested},路由為 {routed}", + "statusFilters": { + "all": "全部", + "error": "錯誤", + "success": "成功", + "combo": "組合" + }, + "columns": { + "status": "狀態", + "cacheSource": "快取來源", + "model": "模型", + "requested": "請求", + "provider": "提供商", + "protocol": "請求協議", + "account": "帳戶", + "apiKey": "API金鑰", + "combo": "組合", + "tokens": "Tokens", + "compressed": "壓縮", + "tps": "TPS", + "duration": "時長", + "time": "時間" + }, + "loadingLogs": "正在載入日誌...", + "noLogs": "暫無日誌記錄。進行一些API呼叫以在此處檢視它們。", + "noMatchingLogs": "沒有匹配當前篩選器的日誌。", + "callLogsInfo": "呼叫日誌也儲存為JSON檔案到{dataDir},並根據{retentionDays}和{maxEntries}進行輪換。", + "loadMore": "__MISSING__:Load More", + "loadingMore": "__MISSING__:Loading more..." + }, + "proxyLogger": { + "filterAll": "全部", + "filterErrors": "錯誤", + "filterSuccess": "成功", + "filterTimeout": "超時", + "colStatus": "狀態", + "colProxy": "代理", + "colTls": "TLS", + "colType": "型別", + "colLevel": "級別", + "colProvider": "提供商", + "colTarget": "目標", + "colLatency": "延遲", + "colClientIp": "客戶端 IP", + "colTime": "時間", + "recording": "記錄中", + "paused": "已暫停", + "searchPlaceholder": "搜尋主機、提供商、目標或 IP...", + "allTypes": "全部型別", + "allLevels": "全部級別", + "allProviders": "全部 Provider", + "total": "總計", + "ok": "正常", + "err": "錯誤", + "timeoutShort": "超時", + "direct": "直連", + "newest": "最新", + "oldest": "最舊", + "latencyDesc": "延遲 ↓", + "latencyAsc": "延遲 ↑", + "refresh": "重新整理", + "columns": "列", + "loadingProxyLogs": "正在載入代理日誌...", + "noProxyLogs": "尚無代理日誌。配置代理併發起 API 呼叫後會顯示在這裡。", + "noMatchingLogs": "沒有日誌匹配當前篩選條件。", + "tlsFingerprint": "Chrome 124 TLS 指紋", + "colPublicIp": "公共IP" + }, + "endpointOptions": { + "speech": "語音", + "search": "搜尋", + "images": "影像", + "chat": "聊天", + "music": "音樂", + "responses": "響應", + "rerank": "重新排序", + "video": "影片", + "embeddings": "嵌入", + "transcription": "轉寫" + }, + "toolDescriptions": { + "cline": "Cline", + "openclaw": "Openclaw", + "droid": "Droid", + "codex": "Codex", + "claude": "Claude", + "kilo": "Kilo" + }, + "runtime": { + "title": "執行時", + "description": "即時可觀測性 — 3 層彈性 + 會話 + 配額告警", + "pause": "暫停", + "resume": "恢復", + "refreshNow": "立即重新整理", + "kpiSessions": "會話", + "kpiCircuits": "斷路器", + "kpiCooldowns": "冷卻", + "kpiLockouts": "鎖定", + "hintStickyBound": "{count} 個粘性繫結", + "hintRecovering": "{count} 個恢復中", + "hintAllHealthy": "全部健康", + "hintOpen": "開啟", + "hintConnsCooling": "連線冷卻中", + "hintModelsBlocked": "模型已阻止", + "resilienceTitle": "3 層彈性", + "resilienceSubtitle": "反映記錄的彈性模型", + "providersHealthy": "{percent}% 提供商健康", + "layer": "第 {n} 層", + "layer1Title": "提供商斷路器", + "layer1Desc": "阻止到上游級失敗的提供商的流量", + "layer2Title": "連線冷卻", + "layer2Desc": "跳過一個壞帳戶/金鑰;其他連線繼續服務", + "layer3Title": "模型鎖定", + "layer3Desc": "按模型速率限制鎖定;同一連線仍可服務其他模型", + "badgeAffectedOf": "{affected}/{total} 受影響", + "badgeCooling": "{count} 冷卻中", + "badgeLocked": "{count} 已鎖定", + "emptyCircuits": "尚無活動斷路器", + "emptyCooldowns": "尚無連線冷卻", + "emptyLockouts": "無模型鎖定", + "moreCooldowns": "+{count} 更多冷卻", + "moreLockouts": "+{count} 更多鎖定", + "feedTitle": "即時動態", + "feedSubtitle": "最近 {count} 個事件", + "feedFilterAll": "全部", + "feedFilterCircuits": "斷路器", + "feedFilterCooldowns": "冷卻", + "feedFilterLockouts": "鎖定", + "feedFilterSessions": "會話", + "feedFilterQuotas": "配額", + "feedClear": "清除", + "feedEmptyWaiting": "等待事件…(每 5 秒輪詢一次)", + "feedEmptyFiltered": "沒有匹配此篩選條件的事件", + "sessionsTitle": "活動會話", + "sessionsSubtitle": "粘性繫結請求指紋(即時)", + "sessionsActive": "{count} 個活動", + "sessionsEmptyTitle": "無活動會話", + "sessionsEmptyHint": "請求流經代理時會出現會話", + "tblSession": "會話", + "tblAge": "時長", + "tblIdle": "空閒", + "tblReqs": "請求數", + "tblBoundTo": "繫結到", + "topApiKeys": "熱門 API 金鑰", + "quotaMonitorsTitle": "配額監視器", + "quotaMonitorsSubtitle": "每個帳戶視窗的即時配額狀態", + "openQuota": "開放配額", + "allQuotasHealthy": "所有配額健康", + "statusExhausted": "已耗盡", + "statusAlerting": "告警中", + "statusError": "錯誤", + "moreSuffix": "+{count} 更多" + }, + "quotaShare": { + "title": "配額共享", + "description": "通過百分比限制跨 API 金鑰共享提供商配額", + "newPool": "新建池", + "betaTitle": "Beta — UI preview.", + "betaDescription": "配置儲存在 localStorage 中(尚未持久化到伺服器)。每次請求的上限執行將在未來更新中實現。", + "kpiActivePools": "活躍池", + "kpiKeysAllocated": "已分配金鑰", + "kpiAvgUnallocated": "平均未分配", + "kpiProvidersWithQuota": "有配額的提供商", + "emptyTitle": "未配置池", + "emptyDescription": "建立池以分配 API 金鑰,通過百分比分配共享提供商的配額視窗。", + "loading": "載入中…", + "removePool": "移除池", + "removeConfirm": "移除此池?", + "pool": "池", + "used": "已使用", + "allocationsCount": "分配({count})", + "allocatedFree": "已分配 {allocated}% · 空閒 {free}%", + "noAllocations": "尚未分配金鑰", + "capLabel": "上限 {value}", + "notTrackedYet": "(尚未跟蹤)", + "policy": "策略", + "policyHard": "硬性", + "policySoft": "軟性", + "policyBurst": "突發", + "policyHardHint": "金鑰耗盡分配時阻止", + "policySoftHint": "允許溢位,僅告警", + "policyBurstHint": "允許突發進入空閒池", + "editAllocations": "編輯分配", + "newPoolTitle": "新建配額池", + "providerConnection": "提供商連線(帳戶)", + "selectConnection": "選擇連線…", + "noEligibleConnections": "沒有帶配額資料的連線。首先從 /dashboard/quota 重新整理。", + "quotaWindow": "配額視窗", + "selectWindow": "選擇視窗…", + "alreadyUsedSuffix": "(已使用)", + "windowReset": "重置", + "duplicatePoolError": "此連線 + 視窗的池已存在", + "cancel": "取消", + "createPool": "建立池", + "editTitle": "編輯分配", + "noKeysAdded": "未分配金鑰。請在下方新增。", + "totalLabel": "總計:{percent}%", + "totalExceeded": "⚠ 超過 100%", + "addKey": "+ 新增金鑰…", + "equalSplit": "平均分配", + "save": "儲存分配", + "betaPreviewLabel": "Beta — UI 預覽。", + "betaConfigSavedPrefix": "配置儲存在", + "betaConfigSavedSuffix": "(尚未保留在伺服器上)。每個請求上限的強制執行尚未連線到代理管道中。此螢幕可讓您設計和視覺化配額分配;真正的執行將在未來的迭代中通過資料庫永續性和上游呼叫攔截來實現。", + "policyLabel": "政策:", + "resetIn": "重置於", + "quotaTotal": "總計", + "kpiAvgUtilization": "平均利用率", + "kpiBorrowingNow": "現在借款", + "conceptTitle": "配額分成是如何工作的", + "conceptIntro": "配額共享通過節約型公平分享將提供者的配額分配給多個 API 金鑰:每個金鑰獲得一個按比例分配的份額,但可以在不超過全球上限的情況下從自由余額中借用。", + "conceptFairShare": "公平共享:每個鍵接收與其配置權重成比例的配額", + "conceptBorrowing": "借用:金鑰可以在不違反上限的情況下消耗他人的自由余額", + "conceptGlobalCap": "硬性全球上限:提供者的絕對限制永遠不會被超越", + "conceptWindows": "Windows: 5小時,按小時、按日、按周、按月 — 每個獨立跟蹤", + "conceptKeyHowTitle": "為配額啟用金鑰", + "conceptKeyHowDesc": "在 API 管理器中正常建立金鑰 — 它會自動出現在嚮導的金鑰步驟中。在那裡勾選獨佔以使其僅限配額。沒有單獨的啟用步驟。", + "conceptExclusiveTitle": "“Exclusive” 的作用是什麼", + "conceptExclusiveDesc": "獨佔金鑰僅檢視/使用池的 quotaShared-* 模型 — 其他所有模型在其 /v1/models 中被隱藏並被阻止。", + "burnRateTitle": "燒錢率", + "burnRateExhaustsIn": "排氣在", + "dimensionResetIn": "重置於", + "realConsumedColumn": "已消耗", + "deficitColumn": "赤字", + "borrowingIndicator": "借款", + "migratedFromLocalStorageNotice": "池成功從 localStorage 遷移。", + "policyCapAbsoluteLabel": "絕對上限", + "policyCapAbsolutePlaceholder": "數字限制(可選)", + "multiDimensionLabel": "多維", + "stackedBarTitle": "按 API 金鑰切片", + "usedSuffix": "已使用 {percent}%", + "wizardTitle": "新配額池", + "editPoolTitle": "編輯池", + "saveChanges": "儲存更改", + "wizardStep1Label": "帳戶", + "wizardStep2Label": "限制", + "wizardStep3Label": "金鑰", + "wizardStep1Title": "選擇提供商連線", + "wizardStep1Subtitle": "選擇此池將共享配額的提供者帳戶,設定名稱和預設策略。", + "wizardStep2Title": "配置配額維度", + "wizardStep2Subtitle": "為所選連線定義配額計劃維度(單位、視窗、限制)。保持不變以保持當前設定。", + "wizardStep3Title": "分配 API 金鑰", + "wizardStep3Subtitle": "將 API 金鑰分配給該池,設定權重 % 分配和可選上限。", + "wizardPoolNameLabel": "池名稱", + "wizardPoolNamePlaceholder": "我的配額池", + "wizardNext": "下一個", + "wizardBack": "返回", + "wizardCreatePool": "建立池", + "wizardDimensionsEditedNotice": "已編輯的尺寸 - 在建立泳池時將作為手動覆蓋儲存。", + "wizardExclusiveLabel": "獨佔配額", + "wizardExclusiveHint": "啟用後,這些 API 金鑰將僅允許使用此池的虛擬模型(在儲存時應用 allowedQuotas 對帳)。", + "wizardPreviewLabel": "虛擬模型名稱預覽", + "wizardConnectionsLabel": "提供者連線", + "wizardPrimaryBadge": "主要", + "wizardAdditionalConnectionsNote": "附加連線使用其目錄預設限制(稍後可編輯)。", + "wizardSingleProviderNote": "一個池使用單一提供者", + "wizardPreviewMoreModels": "+{count} 更多", + "accountQuotaTitle": "帳戶配額", + "accountQuotaNone": "—", + "logTitle": "使用日誌", + "logEmpty": "尚未使用", + "groupLabel": "組", + "newGroup": "新建組", + "renameGroup": "重新命名組", + "groupSelectHint": "按組過濾池", + "groupAllocationNote": "分配適用於此組中的所有池,通過共享配額層。", + "groupNamePrompt": "輸入組名", + "wizardGroupLabel": "組", + "allGroups": "所有組", + "endpointsTitle": "可用的端點", + "endpointsHint": "使用任何分配的金鑰呼叫這些虛擬模型 — 路由 + 配額按組處理。", + "previewForKey": "金鑰預覽", + "previewKeyNone": "(所有端點)", + "endpointsBaseUrl": "基礎 URL", + "endpointsCollapse": "摺疊", + "endpointsExpand": "展開", + "endpointsAnthropicNote": "Anthropic 原生", + "endpointsResponsesNote": "OpenAI 響應 — codex/github", + "endpointsWsNote": "WebSocket — 僅限 codex", + "betaText": "配額共享功能正常,但預計會有錯誤。發現一個了嗎?請報告。", + "betaReportLink": "報告問題", + "deleteGroup": "刪除組", + "deleteGroupConfirm": "要刪除此組嗎?必須先重新分配或移除其池。", + "deleteGroupHasPools": "該組仍然有池 — 請先重新分配或刪除它們。", + "ungroupedTitle": "未分組", + "ungroupedHint": "這些池未分配給已知組。編輯一個池以將其移動到真實組中。" + }, + "plugins": { + "title": "外掛", + "description": "安裝和管理外掛以擴充套件 OmniRoute 功能", + "loading": "載入外掛中…", + "scanning": "掃描中…", + "scanForPlugins": "掃描外掛", + "noPlugins": "未安裝外掛", + "noPluginsDescription": "將外掛目錄放入 ~/.omniroute/plugins/ 並點選掃描。", + "activate": "啟用", + "deactivate": "停用", + "uninstall": "解除安裝", + "uninstallConfirm": "解除安裝外掛 \"{name}\"?", + "pluginScanComplete": "外掛掃描完成", + "pluginScanFailed": "外掛掃描失敗", + "activated": "{name} 已啟用", + "deactivated": "{name} 已停用", + "activateFailed": "啟用 {name} 失敗", + "deactivateFailed": "停用 {name} 失敗", + "uninstalled": "{name} 已解除安裝", + "uninstallFailed": "解除安裝 {name} 失敗", + "configure": "配置:{name}", + "configurePlugin": "配置", + "noConfigSettings": "此外掛無可配置的設定。", + "saving": "儲存中…", + "saveConfiguration": "儲存配置", + "configurationSaved": "配置已儲存", + "saveConfigurationFailed": "儲存配置失敗", + "pluginNotFound": "未找到外掛", + "version": "版本", + "author": "作者", + "description_label": "描述", + "status": "狀態", + "enabled": "已啟用", + "disabled": "已停用", + "installedTab": "__MISSING__:Installed", + "marketplaceTab": "__MISSING__:Marketplace", + "marketplaceUrlLabel": "__MISSING__:Custom Marketplace URL", + "marketplaceUrlPlaceholder": "__MISSING__:Leave empty for official Omniroute registry", + "saveMarketplaceUrl": "__MISSING__:Save & Reload", + "marketplaceUrlSaved": "__MISSING__:Marketplace URL updated", + "marketplaceEmpty": "__MISSING__:No plugins found in marketplace.", + "marketplaceInstallComingSoon": "__MISSING__:Marketplace installs are coming soon.", + "verified": "__MISSING__:Verified", + "install": "__MISSING__:Install", + "installedFromMarketplace": "__MISSING__:Plugin {name} installed!", + "hooks": "鉤子" + }, + "quotaPlans": { + "title": "計劃與配額", + "description": "為每個提供商配置配額計劃 — 維度(%、請求、令牌、$)和時間視窗", + "providerLabel": "提供者 / 連線", + "detectedPlanLabel": "檢測到的計劃", + "manualPlanLabel": "手動覆蓋", + "unconfiguredLabel": "未配置 — 需要手動設定", + "dimensionLabel": "尺寸", + "addDimension": "新增維度", + "removeDimension": "移除", + "limitLabel": "限制", + "unitOptions": { + "percent": "%", + "requests": "請求", + "tokens": "令牌", + "usd": "美元 ($)" + }, + "windowOptions": { + "5h": "5 小時", + "hourly": "每小時", + "daily": "每日", + "weekly": "每週", + "monthly": "每月" + }, + "useCatalogButton": "使用目錄", + "saveOverrideButton": "儲存覆蓋", + "revertToCatalogButton": "恢復到目錄", + "unknownProviderNotice": "在左側選擇一個提供商以配置其配額計劃。", + "catalogTitle": "已知目錄", + "catalogDescription": "自動檢測到以下提供商的計劃:" + }, + "activity": { + "title": "活動", + "description": "最近事件動態", + "emptyTitle": "尚無活動", + "emptyDescription": "當您新增提供者、建立組合或旋轉金鑰時,事件將出現在這裡。", + "todayHeader": "今天", + "yesterdayHeader": "昨天", + "filterAll": "全部", + "filterProviders": "提供者", + "filterCombos": "組合", + "filterApiKeys": "API 金鑰", + "filterSettings": "設定", + "filterQuota": "配額", + "filterAuth": "認證", + "filterSystem": "系統", + "relative": { + "justNow": "剛剛", + "minutesAgo": "{n}分鐘前", + "hoursAgo": "{n} 小時前", + "yesterday": "昨天", + "daysAgo": "{n} 天前" + }, + "eventVerb": { + "providerAdded": "{actor} 添加了提供者 {target}", + "providerRemoved": "{actor} 移除了提供者 {target}", + "providerTested": "{actor} 測試了提供者 {target}", + "comboCreated": "{actor} 建立了組合 {target}", + "comboUpdated": "{actor} 更新了組合 {target}", + "comboDeleted": "{actor} 移除了組合 {target}", + "apiKeyCreated": "{actor} 建立了 API 金鑰 {target}", + "apiKeyRevoked": "{actor} 撤銷了 API 金鑰 {target}", + "apiKeyRotated": "{actor} 旋轉了 API 金鑰 {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}", + "quotaPoolUpdated": "{actor} 更新了配額池 {target}", + "quotaPoolDeleted": "{actor} 移除了配額池 {target}", + "quotaPlanUpdated": "{actor} 更新了配額計劃 {target}", + "quotaStoreDriverChanged": "QuotaStore 驅動已更改", + "updateApplied": "已應用更新 {target}", + "deployCompleted": "部署完成", + "skillInstalled": "{actor} 安裝了技能 {target}", + "skillRemoved": "{actor} 移除了技能 {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 嘗試", + "authLoginSuccess": "{actor} 已登入", + "authLoginError": "{actor} 的登入錯誤", + "authLoginFailed": "{name} 登入失敗", + "authLoginLocked": "{actor} 在嘗試次數過多後被鎖定", + "authLoginMisconfigured": "身份驗證配置無效", + "authLoginSetupRequired": "需要進行身份驗證設定", + "authLogoutSuccess": "{actor} 已登出", + "syncTokenCreated": "{actor} 建立了同步令牌", + "syncTokenRevoked": "{actor} 撤銷了同步令牌", + "settingsUpdate": "{actor} 更新了設定", + "settingsUpdateFailed": "設定更新失敗", + "serviceRevealApiKey": "{actor} 揭露了 {target} 的 API 金鑰", + "genericEvent": "{actor} {target}" + } + }, + "agentBridge": { + "title": "AgentBridge", + "subtitle": "使用 IDE 代理與 OmniRoute 模型 — 無需配置", + "riskBannerTitle": "自行承擔風險", + "riskBannerBody": "AgentBridge 攔截來自 IDE 代理的 HTTPS 流量。通過啟用它,您接受遵守每個代理服務條款的責任。切勿在禁止 TLS 檢查的裝置或網路上使用。", + "riskBannerDismiss": "關閉", + "serverCardTitle": "AgentBridge 伺服器", + "statusRunning": "執行中", + "statusStopped": "已停止", + "statusActive": "活動", + "statusDnsOff": "DNS 關閉", + "statusSetupRequired": "需要設定", + "statusInvestigating": "調查中", + "serverPort": "埠", + "serverConns": "連線", + "serverIntercepted": "攔截成功", + "serverLastStarted": "最後啟動時間", + "startServer": "開始", + "stopServer": "停止", + "restartServer": "重啟", + "trustCert": "信任證書", + "downloadCert": "下載證書", + "certManualTitle": "__MISSING__:Certificate couldn't be installed automatically (e.g. inside a container). The bridge can still run — trust the CA manually:", + "regenerateCert": "重新生成證書", + "starting": "正在啟動…", + "stopping": "停止中…", + "restarting": "正在重啟…", + "trusting": "信任中……", + "regenerating": "重新生成中…", + "upstreamCaLabel": "上游 CA 證書(企業)", + "upstreamCaPlaceholder": "/etc/ssl/certs/corp-ca.pem", + "upstreamCaTest": "測試 TLS", + "upstreamCaTestOk": "TLS 測試通過", + "upstreamCaTestError": "TLS 測試失敗 — 檢查路徑和 CA 檔案", + "bypassSectionTitle": "繞過列表", + "bypassSectionDesc": "匹配這些模式的主機將直接隧道(不進行 TLS 解密)。預設包括銀行、.gov 和企業 SSO。", + "bypassDefaultsLabel": "預設繞過模式(只讀)", + "bypassUserLabel": "自定義繞過模式(每行一個,glob 或正規表示式)", + "saveBypassList": "儲存繞過列表", + "agentListTitle": "IDE 代理", + "filterAll": "全部", + "filterActive": "活躍", + "filterSetupRequired": "需要設定", + "filterInvestigating": "調查中", + "searchAgents": "搜尋代理…", + "noAgentsMatch": "沒有代理與當前篩選條件匹配", + "agentHosts": "攔截的主機", + "certTrusted": "證書已信任", + "certNotTrusted": "證書不受信任", + "investigatingNotice": "該代理正在接受調查。主機和 API 介面仍在確認中。一旦上游 API 文件完成,設定將可用。", + "modelMappingsLabel": "模型對映", + "sourceModel": "源模型(代理原生)", + "targetModel": "目標模型 (OmniRoute)", + "noMappings": "未配置模型對映。執行設定嚮導以自動檢測模型。", + "selectModel": "選擇…", + "saveMappings": "儲存對映", + "setupWizard": "設定嚮導", + "startDns": "啟動 DNS", + "stopDns": "停止 DNS", + "toggling": "切換中…", + "viewTraffic": "檢視流量", + "emptyNoProvidersTitle": "尚未配置提供程式", + "emptyNoProvidersBody": "要使用 AgentBridge,首先連線至少一個提供者。它將是 IDE 請求路由的目標。", + "emptyGoToProviders": "前往提供者", + "wizardTitle": "設定嚮導", + "wizardSubtitle": "3步設定", + "wizardStep1Label": "驗證", + "wizardStep2Label": "DNS", + "wizardStep3Label": "對映", + "wizardStep1Desc": "確認伺服器正在執行並且證書已安裝。", + "wizardStep2Desc": "以下條目將被新增到 /etc/hosts 以通過 AgentBridge 重定向流量:", + "wizardStep3Desc": "您現在可以在代理卡中配置模型對映。重啟 IDE 以應用更改。", + "wizardStep3Success": "代理已配置!", + "wizardServerCheck": "AgentBridge 伺服器", + "wizardRunning": "執行中", + "wizardNotRunning": "未執行", + "wizardCertCheck": "證書", + "wizardTrusted": "可信的", + "wizardNotTrusted": "尚未信任 — 使用信任證書按鈕", + "wizardTutorialTitle": "設定說明:", + "wizardEnableDns": "新增 /etc/hosts 條目", + "wizardDnsAlreadyEnabled": "此代理已啟用 DNS", + "enablingDns": "啟用中…", + "modelSelectorTitle": "選擇目標模型", + "modelSelectorSearch": "搜尋模型…", + "noModelsFound": "未找到模型", + "quickLinks": "快速連結", + "quickLinkProviders": "配置提供程式", + "quickLinkInspector": "在流量檢查器中檢視流量", + "maintenanceTitle": "__MISSING__:Maintenance & Diagnostics", + "maintenanceSubtitle": "__MISSING__:Self-test the capture pipeline, undo leftover system state, and move your setup between machines.", + "orphanedStateWarning": "__MISSING__:A previous session left system state behind (DNS spoof, CA, or system proxy). Run Repair to clean it up.", + "diagnose": "__MISSING__:Diagnose", + "diagnosing": "__MISSING__:Diagnosing…", + "diagnoseHealthy": "__MISSING__:Capture pipeline is healthy.", + "diagnoseUnhealthy": "__MISSING__:Capture pipeline has problems:", + "repair": "__MISSING__:Repair", + "repairing": "__MISSING__:Repairing…", + "repairDone": "__MISSING__:Repaired: {items}", + "repairNothing": "__MISSING__:Nothing to repair — system state is clean.", + "removeCa": "__MISSING__:Remove CA", + "removeCaConfirm": "__MISSING__:Remove CA?", + "removeCaDone": "__MISSING__:MITM root CA removed from the OS trust store.", + "removing": "__MISSING__:Removing…", + "confirm": "__MISSING__:Confirm", + "exportConfig": "__MISSING__:Export config", + "exporting": "__MISSING__:Exporting…", + "importConfig": "__MISSING__:Import config", + "importing": "__MISSING__:Importing…", + "importInvalidJson": "__MISSING__:The selected file is not valid JSON.", + "importDone": "__MISSING__:Imported {bypass} bypass · {hosts} hosts · {agents} agents", + "save": "儲存", + "saving": "儲存中…", + "cancel": "取消", + "back": "返回", + "next": "下一個", + "done": "完成", + "loading": "載入中…", + "riskNoticeTitle": "風險確認", + "riskNoticeBody": "AgentBridge 將通過 DNS 重定向其 API 主機來攔截來自此代理的 HTTPS 流量。僅在您接受遵守代理的服務條款和任何適用的網路政策的責任時啟用。", + "pageMoved": { + "goNow": "現在去", + "message": "MITM Proxy 現在歸 AgentBridge 所有。", + "title": "此頁面已移動" + } + }, + "trafficInspector": { + "title": "流量檢查員", + "subtitle": "監控 LLM 呼叫並除錯任何應用程式的 HTTPS 流量", + "captureModesTitle": "捕獲模式", + "agentBridgeMode": "AgentBridge", + "agentBridgeModeDesc": "捕獲來自所有連線的 IDE 代理的流量", + "customHostsMode": "自定義主機", + "customHostsModeDesc": "新增特定主機以進行攔截", + "httpProxyMode": "HTTP 代理", + "httpProxyModeDesc": "使用 HTTP_PROXY 環境變數", + "systemWideMode": "系統範圍內", + "systemWideModeDesc": "攔截所有系統流量(高階)", + "tproxyMode": "__MISSING__:TPROXY Decrypt", + "tproxyModeUnavailable": "__MISSING__:TPROXY decrypt requires Linux + root + the native addon", + "filterBarTitle": "過濾器", + "profileLlmOnly": "僅限 LLM", + "profileCustom": "自定義", + "profileAll": "全部", + "filterHost": "過濾主機…", + "filterAgent": "代理人", + "filterStatus": "狀態", + "pauseBtn": "暫停", + "resumeBtn": "簡歷", + "clearBtn": "清除", + "exportHar": "匯出 .har", + "recordSession": "記錄", + "stopSession": "停止", + "liveBadge": "直播", + "offlineBadge": "離線", + "noRequests": "尚未捕獲任何請求。", + "noRequestsDesc": "確保 AgentBridge 正在執行或啟用其他捕獲模式。", + "selectRequest": "選擇一個請求以進行檢查。", + "tabConversation": "對話", + "tabHeaders": "標題", + "tabRequest": "請求", + "tabResponse": "響應", + "tabTiming": "計時", + "tabLlm": "LLM", + "tabStats": "統計資訊", + "requestHeaders": "請求頭部", + "responseHeaders": "響應頭部", + "rawEvents": "原始事件", + "mergedView": "合併檢視", + "noBody": "沒有主體。", + "streaming": "流媒體…", + "manageHosts": "管理主機", + "copySnippet": "複製代理程式碼片段", + "addHost": "新增", + "hostPlaceholder": "api.openai.com", + "noHostsYet": "尚未新增自定義主機。", + "noSessionsYet": "還沒有會話", + "allTraffic": "所有流量(無會話)", + "sessionsDropdown": "會話", + "annotationPlaceholder": "新增備註…", + "contextFingerprint": "上下文指紋", + "llmProvider": "檢測到的提供者", + "llmApiKind": "API 型別", + "llmModel": "模型", + "llmMessages": "訊息", + "llmStream": "流媒體", + "llmMappedTo": "對映到", + "llmCostEstimate": "成本估算", + "systemProxyExitWarning": "系統範圍的代理仍然處於活動狀態 — 仍然離開頁面嗎?", + "customHostsTitle": "自定義主機", + "loading": "載入中…", + "copied": "已複製!", + "copy": "複製", + "httpProxyTitle": "HTTP 代理程式碼片段 — 埠 {port}", + "notRecording": "未錄製", + "anyStatus": "任何狀態", + "liveOnly": "__MISSING__:Live", + "viewingRecordedSession": "檢視錄製的會話", + "backToLive": "返回直播", + "untitledSession": "未命名會話", + "contextHistory": "上下文歷史", + "modelResponse": "模型響應", + "conversationNoMessages": "在此請求中未找到訊息。", + "conversationNotAvailable": "對話資料不可用。這可能不是 LLM 請求,或者主體無法解析。", + "loadingCharts": "載入圖表…", + "statsErrors": "錯誤", + "statsLatency": "延遲(最近 50 個請求)", + "statsNoData": "尚未有請求。開始會話錄製以捕獲統計資料。", + "statsStatusDistribution": "狀態分佈", + "statsSuccessful": "成功", + "statsTotalRequests": "總請求數", + "timingProxyOverhead": "代理開銷", + "timingUpstreamResponse": "上游響應", + "timingNoData": "沒有可用的時間資料。", + "timingTotalLatency": "總延遲", + "timingTimestamp": "時間戳", + "timingMethod": "方法", + "timingStatus": "狀態", + "timingRequestSize": "請求大小", + "timingResponseSize": "響應大小", + "pausedNewBadge": "{count} 新的", + "clearContextFilter": "清除" + }, + "cliCommon": { + "concept": { + "code": { + "title": "CLI 程式碼的", + "phrase": "指向 OmniRoute 的程式碼工具", + "flow": "你 → CLI 程式碼 → OmniRoute → 提供者", + "seeOther": "檢視 →" + }, + "agent": { + "title": "CLI 代理", + "phrase": "通用自主CLI代理,您可以指向OmniRoute", + "flow": "您 → CLI 代理 → OmniRoute → 提供者", + "seeOther": "檢視 →" + }, + "acp": { + "title": "ACP 代理", + "phrase": "OmniRoute 作為執行後端(反向流)生成的 CLI", + "flow": "客戶端 → OmniRoute → 生成 CLI (stdio/ACP) → 響應", + "seeOther": "檢視 →" + } + }, + "comparison": { + "title": "瞭解 OmniRoute 中的 3 種 CLI 型別", + "thisPage": "[此頁面 ✓]", + "open": "__MISSING__:Open →", + "code": { + "title": "程式碼工具", + "desc": "指向 Omni", + "flow": "你 → CLI → Omni → 提供者", + "examples": "例如:claude,codex" + }, + "agent": { + "title": "廣泛自主代理", + "desc": "指向 Omni", + "flow": "你 → 代理 → Omni", + "examples": "例如:hermes,goose" + }, + "acp": { + "title": "Omni 使用的後端 CLI", + "desc": "反向執行", + "flow": "Omni → spawn CLI → resp", + "examples": "例如:claude,codex (ACP)" + } + }, + "card": { + "detected": "檢測到", + "notDetected": "未檢測到", + "configured": "已配置", + "notConfigured": "未配置", + "configure": "配置 →", + "howToInstall": "如何安裝 →", + "manualConfig": "手動配置", + "installGuide": "安裝指南", + "endpointLabel": "端點", + "baseUrlFull": "__MISSING__:Full Base URL", + "baseUrlPartial": "部分基礎 URL", + "refreshDetection": "重新整理檢測", + "alsoAcp": "也 ACP", + "connectProviderHint": "__MISSING__:Connect a provider in Providers" + }, + "detail": { + "back": "返回", + "apply": "儲存", + "reset": "清除", + "manualConfig": "手動配置", + "vendor": "供應商", + "category": "型別", + "detectionStatus": "檢測", + "configStatus": "配置", + "baseUrlLabel": "基礎 URL", + "apiKeyLabel": "API 金鑰", + "modelMappingLabel": "模型對映", + "noActiveProviders": "沒有活動的提供者。", + "noActiveProvidersDesc": "請前往 Providers 連線至少 1 個提供者,然後再配置 CLI。", + "openProviders": "開啟提供者 →" + } + }, + "cliCode": { + "pageTitle": "CLI 程式碼的", + "pageSubtitle": "指向 OmniRoute 的程式碼工具", + "searchPlaceholder": "搜尋 CLI…", + "filterDetectionLabel": "檢測", + "filterBaseUrlLabel": "基礎 URL", + "detectionAll": "所有", + "detectionInstalled": "已安裝", + "detectionNotFound": "未找到", + "baseUrlAll": "所有", + "baseUrlFull": "完整", + "baseUrlPartial": "部分" + }, + "cliAgents": { + "pageTitle": "CLI 代理", + "pageSubtitle": "通用自主CLI代理", + "refreshDetection": "重新整理檢測", + "searchPlaceholder": "搜尋代理…", + "detectionFilterLabel": "檢測", + "detectionAll": "全部", + "detectionInstalled": "已安裝", + "detectionNotInstalled": "未安裝", + "visibleCount": "{count} 可見", + "emptyState": "未找到符合當前篩選條件的 CLI 代理。" + }, + "acpAgents": { + "pageTitle": "ACP 代理", + "pageSubtitle": "OmniRoute 作為執行後端生成的 CLI", + "scanning": "正在檢測代理…", + "refresh": "重新整理", + "setupGuideTitle": "設定指南", + "setupGuideDetectCliTitle": "檢測 CLI", + "setupGuideDetectCliDesc": "代理通過在 PATH 中執行 --version 命令來識別。", + "setupGuideCustomAgentTitle": "新增自定義代理", + "setupGuideCustomAgentDesc": "填寫下面的表格以註冊自定義 CLI 代理。", + "setupGuideCommandMissingTitle": "找不到命令", + "setupGuideCommandMissingDesc": "檢查二進位制檔案是否在 PATH 中。", + "fingerprintSettingsHint": "在中配置路由和指紋", + "settingsRoutingLink": "設定 → 路由", + "installed": "已安裝", + "notFound": "未找到", + "builtIn": "內建", + "custom": "自定義", + "agentUseCaseHint": "通過 ACP 可用以生成。", + "remove": "移除", + "addCustomAgent": "新增自定義代理", + "addCustomAgentDesc": "通過 ACP 註冊一個自定義 CLI 代理。", + "addAgent": "新增代理", + "agentName": "名稱", + "agentNamePlaceholder": "我的代理", + "binaryName": "二進位制", + "binaryNamePlaceholder": "例如:myagent", + "versionCommand": "版本命令", + "versionCommandPlaceholder": "例如:myagent --version", + "spawnArgs": "生成引數", + "spawnArgsPlaceholder": "例如:--quiet,--json", + "cliCodeRedirectCta": "開啟 CLI 程式碼的" + }, + "agentSkills": { + "pageTitle": "特工技能", + "pageSubtitle": "教你的代理操作 OmniRoute — 22 個 API 區域 + 20 個 CLI 家族", + "conceptCard": { + "agent": { + "title": "代理技能 — 外呼", + "description": "代理技能是機器可讀的 SKILL.md 文件,外部 AI 代理(Claude Code、Cursor、Copilot 等)從 GitHub 獲取這些文件,以瞭解如何通過 REST 或 CLI 操作 OmniRoute。它們由代理讀取,而不是由 OmniRoute 執行。", + "crossLinkLabel": "瞭解區別 →" + }, + "omni": { + "title": "全能技能 — 入站", + "description": "Omni Skills 是 OmniRoute 在每個請求中注入到模型上下文中的沙盒工具。它們由 OmniRoute 執行,而不是由代理讀取。", + "crossLinkLabel": "瞭解差異 →" + }, + "comparison": { + "colAgent": "特工技能", + "colOmni": "全能技能", + "whatIs": { + "label": "它是什麼", + "agent": "機器可讀的 SKILL.md,教外部代理如何操作 OmniRoute", + "omni": "OmniRoute 注入到 LLM 請求中的可執行工具" + }, + "direction": { + "label": "方向", + "agent": "外部 — 外部代理學習控制 OmniRoute", + "omni": "入站 — OmniRoute 為經過它的模型提供工具" + }, + "executor": { + "label": "執行者", + "agent": "外部代理(讀取 markdown → 通過 API/CLI 執行)", + "omni": "OmniRoute 本身(攔截 tool_calls,Docker 沙箱)" + }, + "storage": { + "label": "儲存", + "agent": "動態目錄 (/api/agent-skills) → GitHub 上的 SKILL.md", + "omni": "SQLite (SkillsMP / skills.sh / local)" + }, + "tagline": { + "label": "標語", + "agent": "教你的代理使用 OmniRoute", + "omni": "為 OmniRoute 模型提供可執行工具" + } + } + }, + "filters": { + "category": "類別", + "area": "區域", + "searchPlaceholder": "搜尋技能…" + }, + "categoryApi": "API", + "categoryCli": "命令列介面", + "categoryConfig": "配置", + "filterAll": "所有", + "coverageLabel": "覆蓋率", + "mcpUrl": "MCP URL", + "a2aLink": "A2A", + "copyUrl": "複製 URL", + "viewOnGithub": "在 GitHub 上檢視", + "previewLoading": "載入技能文件…", + "previewError": "載入技能文件失敗。", + "previewEmpty": "選擇一個技能以預覽其文件。", + "generateButton": "生成缺失的技能", + "coverageBar": { + "complete": "完成", + "partial": "部分" + }, + "noSkillsFound": "未找到與您的篩選條件匹配的技能。", + "regenerateConfirm": "這將重新生成所有缺失的 SKILL.md 檔案。繼續嗎?", + "regenerateRunning": "正在重新生成技能…", + "regenerateSuccess": "技能成功重生。", + "regenerateError": "無法重新生成技能。" + }, + "freeProviderRankingsPage": { + "title": "__MISSING__:Free Provider Rankings", + "subtitle": "__MISSING__:Best free providers ranked by model ELO scores from Arena AI leaderboards", + "loading": "__MISSING__:Loading rankings...", + "errorLoading": "__MISSING__:Failed to load rankings", + "emptyState": "__MISSING__:No rankings available yet. Arena ELO data syncs on startup (daily) — check back shortly, or trigger a manual sync. Disable Arena ELO Sync in Feature Flags or set ARENA_ELO_SYNC_ENABLED=false to opt out.", + "bestModel": "__MISSING__:Best", + "allCategories": "__MISSING__:All Categories", + "categoryDefault": "__MISSING__:Default", + "categoryCoding": "__MISSING__:Coding", + "categoryReview": "__MISSING__:Review", + "categoryDocumentation": "__MISSING__:Documentation", + "categoryDebugging": "__MISSING__:Debugging", + "colRank": "__MISSING__:Rank", + "colProvider": "__MISSING__:Provider", + "colTopModel": "__MISSING__:Top Model", + "colScore": "__MISSING__:Score", + "colAvgScore": "__MISSING__:Avg Score", + "colModels": "__MISSING__:Models", + "colType": "__MISSING__:Type", + "filterConfiguredOnly": "__MISSING__:Configured only", + "filterAvailableOnly": "__MISSING__:Available only", + "filterAvailableOnlyHelp": "__MISSING__:Hide providers whose connections are all rate-limited or out of quota.", + "configuredOnly": "__MISSING__:Configured Only", + "configuredOnlyHint": "__MISSING__:Show only providers with active connections", + "noConfiguredProviders": "__MISSING__:No configured providers found. Add a provider connection first.", + "colConfigured": "__MISSING__:Status" + }, + "discovery": { + "title": "__MISSING__:Provider Discovery", + "subtitle": "__MISSING__:Scan providers for free/unlimited access methods and review findings. Opt-in, local-only.", + "scanLabel": "__MISSING__:Provider to scan", + "scanPlaceholder": "__MISSING__:e.g. huggingchat", + "scan": "__MISSING__:Scan", + "scanning": "__MISSING__:Scanning…", + "scanQueued": "__MISSING__:Scan complete for {provider}.", + "scanFailed": "__MISSING__:Scan failed.", + "loadFailed": "__MISSING__:Failed to load discovery results.", + "localOnlyNote": "__MISSING__:This tool is local-only (loopback). Scans run from this machine and are never reachable remotely.", + "verify": "__MISSING__:Verify", + "verifyFailed": "__MISSING__:Failed to verify finding.", + "delete": "__MISSING__:Delete", + "deleteFailed": "__MISSING__:Failed to delete finding.", + "deleteTitle": "__MISSING__:Delete discovery result", + "deleteConfirm": "__MISSING__:Delete the discovery finding for {provider}? This cannot be undone.", + "emptyTitle": "__MISSING__:No discovery results yet", + "emptyDescription": "__MISSING__:Run a scan above to look for free access methods on a provider.", + "risk": "__MISSING__:Risk", + "method": "__MISSING__:Method", + "auth": "__MISSING__:Auth", + "feasibility": "__MISSING__:Feasibility", + "models": "__MISSING__:Models" + } +}