mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-08-01 04:02:02 +08:00
fix(i18n): add 9 missing translation keys to all locales (#5960)
* fix(i18n): add missing grokBuild translation keys to all locales providerForm.requiredFields and failover.tooltip.takeoverRequired were missing from all four locale files (en, zh, zh-TW, ja). The Grok Build provider form validation toast and the failover tooltip fell back to hardcoded Chinese defaultValue, which leaked simplified Chinese into zh-TW and zh-Hant UI even though fallbackLng is set to en. Add the two keys to every locale so each language shows its own translation. Co-Authored-By: Claude <noreply@anthropic.com> * fix(i18n): add 6 more missing translation keys to all locales A broader scan found six more keys referenced in code with hardcoded Chinese defaultValue but missing from all four locale files (en, zh, zh-TW, ja): - provider.duplicateLiveIdsLoadFailed (App.tsx provider duplicate toast) - codexConfig.noCommonConfigToApply (useCodexCommonConfig snippet error) - claudeDesktop.route.stopBlockedByTakeover (ClaudeDesktopRouteToggle warning) - notifications.proxyReasonClaudeDesktop (useProviderActions proxy reason) - proxy.server.stopped / proxy.server.stopFailed (useProxyStatus toasts) Add proper per-language translations to all locales, matching the existing sibling-key style (e.g. proxy.server.started/startFailed uses the same {{detail}} interpolation). Co-Authored-By: Claude <noreply@anthropic.com> * fix(i18n): add missing unpriced translations --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Jason <farion1231@gmail.com>
This commit is contained in:
@@ -172,7 +172,8 @@
|
||||
"oauthHint": "Google official uses OAuth personal authentication, no need to fill in API Key. The browser will automatically open for login on first use.",
|
||||
"apiKeyPlaceholder": "Enter Gemini API Key"
|
||||
}
|
||||
}
|
||||
},
|
||||
"duplicateLiveIdsLoadFailed": "Failed to read provider identifiers from config, please fix the config and try again"
|
||||
},
|
||||
"claudeCode": {
|
||||
"needsRouting": "Needs Routing",
|
||||
@@ -221,7 +222,8 @@
|
||||
"tooltip": {
|
||||
"active": "Claude Desktop local routing is running - {{address}}:{{port}}",
|
||||
"inactive": "Turn on Claude Desktop local routing for providers that need model mapping or format conversion. Configured address: {{address}}:{{port}}"
|
||||
}
|
||||
},
|
||||
"stopBlockedByTakeover": "Another app is using proxy takeover. Please disable that app's takeover in settings before stopping local routing."
|
||||
}
|
||||
},
|
||||
"notifications": {
|
||||
@@ -270,7 +272,8 @@
|
||||
"backfillWarning": "Switched successfully, but failed to save changes back to the previous provider",
|
||||
"windowControlFailed": "Window control failed: {{error}}",
|
||||
"officialBlockedByProxy": "Cannot switch to official provider while local routing is active. Using routing with official APIs may cause account bans.",
|
||||
"proxyOfficialWarning": "Current provider {{name}} is official. Consider switching to a third-party provider before using local routing."
|
||||
"proxyOfficialWarning": "Current provider {{name}} is official. Consider switching to a third-party provider before using local routing.",
|
||||
"proxyReasonClaudeDesktop": "Using Claude Desktop local routing mode"
|
||||
},
|
||||
"confirm": {
|
||||
"deleteProvider": "Delete Provider",
|
||||
@@ -1168,7 +1171,8 @@
|
||||
"fetchModelsAuthFailed": "API Key is invalid or lacks permission",
|
||||
"fetchModelsNotSupported": "This provider does not support fetching model list",
|
||||
"fetchModelsEndpointNotFound": "No reachable models endpoint found. Please check the Base URL or confirm whether the provider exposes this API.",
|
||||
"fetchModelsTimeout": "Request timed out, please check network connection"
|
||||
"fetchModelsTimeout": "Request timed out, please check network connection",
|
||||
"requiredFields": "Please fill in provider name, API endpoint, API Key and model"
|
||||
},
|
||||
"copilot": {
|
||||
"authSection": "GitHub Copilot Authentication",
|
||||
@@ -1365,7 +1369,8 @@
|
||||
"reasoningEffortHint": "Enable when the upstream supports thinking-depth control such as low/high/max. Enabling this also turns on thinking mode and converts Codex's reasoning.effort into the upstream Chat parameter.",
|
||||
"reasoningGroupTitle": "Reasoning Capability",
|
||||
"reasoningSectionHint": "Preset providers are configured automatically; custom providers are inferred from name/URL. Override manually only when auto-detection is wrong.",
|
||||
"advancedSectionHint": "Includes upstream format, model mapping, reasoning overrides and custom User-Agent. Providers using the Chat Completions protocol require routing takeover to be enabled."
|
||||
"advancedSectionHint": "Includes upstream format, model mapping, reasoning overrides and custom User-Agent. Providers using the Chat Completions protocol require routing takeover to be enabled.",
|
||||
"noCommonConfigToApply": "The common config snippet is empty or contains nothing to write"
|
||||
},
|
||||
"geminiConfig": {
|
||||
"envFile": "Environment Variables (.env)",
|
||||
@@ -1464,6 +1469,7 @@
|
||||
"totalRequests": "Total Requests",
|
||||
"totalCost": "Total Cost",
|
||||
"cost": "Cost",
|
||||
"unpriced": "Unpriced",
|
||||
"perMillion": "(per million)",
|
||||
"trends": "Usage Trends",
|
||||
"rangeToday": "Last 24 hours (hourly)",
|
||||
@@ -2549,7 +2555,8 @@
|
||||
},
|
||||
"tooltip": {
|
||||
"enabled": "{{app}} failover enabled\nRequests follow queue priority (P1→P2→...)",
|
||||
"disabled": "Enable {{app}} failover\nSwitches to queue P1 immediately, then falls back on failures"
|
||||
"disabled": "Enable {{app}} failover\nSwitches to queue P1 immediately, then falls back on failures",
|
||||
"takeoverRequired": "Take over {{app}} first, then enable failover"
|
||||
}
|
||||
},
|
||||
"proxy": {
|
||||
@@ -2727,7 +2734,9 @@
|
||||
},
|
||||
"server": {
|
||||
"started": "Routing service started - {{address}}:{{port}}",
|
||||
"startFailed": "Failed to start routing service: {{detail}}"
|
||||
"startFailed": "Failed to start routing service: {{detail}}",
|
||||
"stopped": "Routing service stopped",
|
||||
"stopFailed": "Failed to stop routing service: {{detail}}"
|
||||
},
|
||||
"stoppedWithRestore": "Routing service stopped, all routing configs restored",
|
||||
"stopWithRestoreFailed": "Stop failed: {{detail}}"
|
||||
|
||||
@@ -172,7 +172,8 @@
|
||||
"oauthHint": "Google 公式は OAuth 個人認証を使用するため API Key は不要です。初回利用時にブラウザが開きます。",
|
||||
"apiKeyPlaceholder": "Gemini API Key を入力"
|
||||
}
|
||||
}
|
||||
},
|
||||
"duplicateLiveIdsLoadFailed": "設定内のプロバイダー識別子を読み込めませんでした。設定を修正してから再度お試しください"
|
||||
},
|
||||
"claudeCode": {
|
||||
"needsRouting": "ルーティングが必要",
|
||||
@@ -221,7 +222,8 @@
|
||||
"tooltip": {
|
||||
"active": "Claude Desktop ローカルルーティングは起動中です - {{address}}:{{port}}",
|
||||
"inactive": "モデルマッピングや形式変換が必要なプロバイダー向けに Claude Desktop ローカルルーティングを起動します。設定アドレス: {{address}}:{{port}}"
|
||||
}
|
||||
},
|
||||
"stopBlockedByTakeover": "別のアプリがプロキシテイクオーバーを使用しています。設定で該当アプリのテイクオーバーを無効にしてから、ローカルルーティングを停止してください。"
|
||||
}
|
||||
},
|
||||
"notifications": {
|
||||
@@ -270,7 +272,8 @@
|
||||
"backfillWarning": "切り替え成功しましたが、前のプロバイダーへの設定保存に失敗しました",
|
||||
"windowControlFailed": "ウィンドウ操作に失敗しました: {{error}}",
|
||||
"officialBlockedByProxy": "ローカルルーティングモード中は公式プロバイダーに切り替えできません。ルーティング経由で公式 API にアクセスするとアカウントが停止される可能性があります。",
|
||||
"proxyOfficialWarning": "現在のプロバイダー {{name}} は公式です。ローカルルーティングを使用する前にサードパーティプロバイダーに切り替えてください。"
|
||||
"proxyOfficialWarning": "現在のプロバイダー {{name}} は公式です。ローカルルーティングを使用する前にサードパーティプロバイダーに切り替えてください。",
|
||||
"proxyReasonClaudeDesktop": "Claude Desktop ローカルルーティングモードを使用中"
|
||||
},
|
||||
"confirm": {
|
||||
"deleteProvider": "プロバイダーを削除",
|
||||
@@ -1168,7 +1171,8 @@
|
||||
"fetchModelsAuthFailed": "API Key が無効か、権限がありません",
|
||||
"fetchModelsNotSupported": "このプロバイダーはモデル一覧の取得に対応していません",
|
||||
"fetchModelsEndpointNotFound": "利用可能なモデル一覧エンドポイントが見つかりません。Base URL を確認するか、プロバイダーが該当 API を公開しているかご確認ください",
|
||||
"fetchModelsTimeout": "リクエストがタイムアウトしました。ネットワーク接続を確認してください"
|
||||
"fetchModelsTimeout": "リクエストがタイムアウトしました。ネットワーク接続を確認してください",
|
||||
"requiredFields": "プロバイダー名、API エンドポイント、API Key、モデルを入力してください"
|
||||
},
|
||||
"copilot": {
|
||||
"authSection": "GitHub Copilot 認証",
|
||||
@@ -1365,7 +1369,8 @@
|
||||
"reasoningEffortHint": "上流が low/high/max などの思考の深さの制御に対応している場合に有効化します。有効にすると思考モードも自動的にオンになり、Codex の reasoning.effort を上流の Chat パラメータに変換します。",
|
||||
"reasoningGroupTitle": "思考能力",
|
||||
"reasoningSectionHint": "プリセットの供給元は自動的に設定され、カスタム供給元は名前/URL から自動推論されます。自動識別が正しくない場合のみ手動で上書きしてください。",
|
||||
"advancedSectionHint": "上流フォーマット、モデルマッピング、思考能力、カスタム User-Agent の設定を含みます。Chat Completions プロトコルを使用するプロバイダーはルーティング引き継ぎの有効化が必要です。"
|
||||
"advancedSectionHint": "上流フォーマット、モデルマッピング、思考能力、カスタム User-Agent の設定を含みます。Chat Completions プロトコルを使用するプロバイダーはルーティング引き継ぎの有効化が必要です。",
|
||||
"noCommonConfigToApply": "共通設定スニペットが空か、書き込む内容がありません"
|
||||
},
|
||||
"geminiConfig": {
|
||||
"envFile": "環境変数 (.env)",
|
||||
@@ -1464,6 +1469,7 @@
|
||||
"totalRequests": "総リクエスト数",
|
||||
"totalCost": "総コスト",
|
||||
"cost": "コスト",
|
||||
"unpriced": "価格未設定",
|
||||
"perMillion": "(100万あたり)",
|
||||
"trends": "利用トレンド",
|
||||
"rangeToday": "直近24時間 (時間別)",
|
||||
@@ -2549,7 +2555,8 @@
|
||||
},
|
||||
"tooltip": {
|
||||
"enabled": "{{app}} フェイルオーバーが有効\nキューの優先度(P1→P2→...)で使用します",
|
||||
"disabled": "{{app}} フェイルオーバーを有効にする\nキューの P1 に即時切替し、失敗時は次を順に試行します"
|
||||
"disabled": "{{app}} フェイルオーバーを有効にする\nキューの P1 に即時切替し、失敗時は次を順に試行します",
|
||||
"takeoverRequired": "先に {{app}} を引き継いでから、フェイルオーバーを有効にしてください"
|
||||
}
|
||||
},
|
||||
"proxy": {
|
||||
@@ -2727,7 +2734,9 @@
|
||||
},
|
||||
"server": {
|
||||
"started": "ルーティングサービスが開始されました - {{address}}:{{port}}",
|
||||
"startFailed": "ルーティングサービスの開始に失敗しました: {{detail}}"
|
||||
"startFailed": "ルーティングサービスの開始に失敗しました: {{detail}}",
|
||||
"stopped": "ルーティングサービスが停止しました",
|
||||
"stopFailed": "ルーティングサービスの停止に失敗しました: {{detail}}"
|
||||
},
|
||||
"stoppedWithRestore": "ルーティングサービスが停止し、すべてのルーティング設定が復元されました",
|
||||
"stopWithRestoreFailed": "停止に失敗しました: {{detail}}"
|
||||
|
||||
@@ -172,7 +172,8 @@
|
||||
"oauthHint": "Google 官方使用 OAuth 個人驗證,無需填寫 API Key。首次使用時會自動開啟瀏覽器進行登入。",
|
||||
"apiKeyPlaceholder": "請輸入 Gemini API Key"
|
||||
}
|
||||
}
|
||||
},
|
||||
"duplicateLiveIdsLoadFailed": "讀取設定中的供應商識別碼失敗,請先修復設定後再試"
|
||||
},
|
||||
"claudeCode": {
|
||||
"needsRouting": "需要路由",
|
||||
@@ -221,7 +222,8 @@
|
||||
"tooltip": {
|
||||
"active": "Claude Desktop 本地路由已開啟 - {{address}}:{{port}}",
|
||||
"inactive": "開啟 Claude Desktop 本地路由,用於需要模型對應或格式轉換的供應商。目前設定位址:{{address}}:{{port}}"
|
||||
}
|
||||
},
|
||||
"stopBlockedByTakeover": "其他應用正在使用代理接管。請先在設定中關閉對應應用接管,再停止本機路由。"
|
||||
}
|
||||
},
|
||||
"notifications": {
|
||||
@@ -270,7 +272,8 @@
|
||||
"backfillWarning": "切換成功,但舊供應商設定回填失敗,您手動修改的設定可能未儲存",
|
||||
"windowControlFailed": "視窗控制失敗:{{error}}",
|
||||
"officialBlockedByProxy": "本地路由模式下不能切換至官方供應商,使用路由存取官方 API 可能導致帳號被封鎖",
|
||||
"proxyOfficialWarning": "目前供應商 {{name}} 是官方供應商,建議切換至第三方供應商後再使用本地路由"
|
||||
"proxyOfficialWarning": "目前供應商 {{name}} 是官方供應商,建議切換至第三方供應商後再使用本地路由",
|
||||
"proxyReasonClaudeDesktop": "使用 Claude Desktop 本機路由模式"
|
||||
},
|
||||
"confirm": {
|
||||
"deleteProvider": "刪除供應商",
|
||||
@@ -1169,7 +1172,8 @@
|
||||
"fetchModelsAuthFailed": "API Key 無效或無權限",
|
||||
"fetchModelsNotSupported": "該供應商不支援取得模型清單",
|
||||
"fetchModelsEndpointNotFound": "未找到可用的模型清單端點,請檢查 Base URL 或確認供應商是否開放該 API",
|
||||
"fetchModelsTimeout": "請求逾時,請檢查網路連線"
|
||||
"fetchModelsTimeout": "請求逾時,請檢查網路連線",
|
||||
"requiredFields": "請填寫供應商名稱、API 位址、API Key 和模型"
|
||||
},
|
||||
"copilot": {
|
||||
"authSection": "GitHub Copilot 驗證",
|
||||
@@ -1366,7 +1370,8 @@
|
||||
"reasoningEffortHint": "上游支援 low/high/max 等思考深度控制時啟用。啟用後會自動啟用思考模式,並把 Codex 的 reasoning.effort 轉成上游 Chat 參數。",
|
||||
"reasoningGroupTitle": "思考能力",
|
||||
"reasoningSectionHint": "預設供應商已自動設定;自訂供應商會按名稱/位址自動推斷。僅當自動識別不準時才需手動覆寫。",
|
||||
"advancedSectionHint": "包含上游格式、模型映射、思考能力與自訂 User-Agent。使用 Chat Completions 協定的供應商需開啟路由接管才能使用。"
|
||||
"advancedSectionHint": "包含上游格式、模型映射、思考能力與自訂 User-Agent。使用 Chat Completions 協定的供應商需開啟路由接管才能使用。",
|
||||
"noCommonConfigToApply": "通用設定片段為空或沒有可寫入的內容"
|
||||
},
|
||||
"geminiConfig": {
|
||||
"envFile": "環境變數 (.env)",
|
||||
@@ -1465,6 +1470,7 @@
|
||||
"totalRequests": "總請求數",
|
||||
"totalCost": "總成本",
|
||||
"cost": "成本",
|
||||
"unpriced": "未定價",
|
||||
"perMillion": "(每百萬)",
|
||||
"trends": "使用趨勢",
|
||||
"rangeToday": "過去 24 小時 (按小時)",
|
||||
@@ -2550,7 +2556,8 @@
|
||||
},
|
||||
"tooltip": {
|
||||
"enabled": "{{app}} 故障轉移已啟用\n按佇列優先順序(P1→P2→...)選擇供應商",
|
||||
"disabled": "啟用 {{app}} 故障轉移\n將立即切換至佇列 P1,並在失敗時自動切換至下一個"
|
||||
"disabled": "啟用 {{app}} 故障轉移\n將立即切換至佇列 P1,並在失敗時自動切換至下一個",
|
||||
"takeoverRequired": "請先接管 {{app}},再啟用故障轉移"
|
||||
}
|
||||
},
|
||||
"proxy": {
|
||||
@@ -2728,7 +2735,9 @@
|
||||
},
|
||||
"server": {
|
||||
"started": "路由服務已啟動 - {{address}}:{{port}}",
|
||||
"startFailed": "啟動路由服務失敗:{{detail}}"
|
||||
"startFailed": "啟動路由服務失敗:{{detail}}",
|
||||
"stopped": "路由服務已停止",
|
||||
"stopFailed": "停止路由服務失敗:{{detail}}"
|
||||
},
|
||||
"stoppedWithRestore": "路由服務已關閉,已還原所有路由設定",
|
||||
"stopWithRestoreFailed": "停止失敗:{{detail}}"
|
||||
|
||||
@@ -172,7 +172,8 @@
|
||||
"oauthHint": "Google 官方使用 OAuth 个人认证,无需填写 API Key。首次使用时会自动打开浏览器进行登录。",
|
||||
"apiKeyPlaceholder": "请输入 Gemini API Key"
|
||||
}
|
||||
}
|
||||
},
|
||||
"duplicateLiveIdsLoadFailed": "读取配置中的供应商标识失败,请先修复配置后再试"
|
||||
},
|
||||
"claudeCode": {
|
||||
"needsRouting": "需要路由",
|
||||
@@ -221,7 +222,8 @@
|
||||
"tooltip": {
|
||||
"active": "Claude Desktop 本地路由已开启 - {{address}}:{{port}}",
|
||||
"inactive": "开启 Claude Desktop 本地路由,用于需要模型映射或格式转换的供应商。当前配置地址:{{address}}:{{port}}"
|
||||
}
|
||||
},
|
||||
"stopBlockedByTakeover": "其它应用正在使用代理接管。请先在设置中关闭对应应用接管,再停止本地路由。"
|
||||
}
|
||||
},
|
||||
"notifications": {
|
||||
@@ -270,7 +272,8 @@
|
||||
"backfillWarning": "切换成功,但旧供应商配置回填失败,您手动修改的配置可能未保存",
|
||||
"windowControlFailed": "窗口控制失败:{{error}}",
|
||||
"officialBlockedByProxy": "本地路由模式下不能切换到官方供应商,使用路由访问官方 API 可能导致账号被封禁",
|
||||
"proxyOfficialWarning": "当前供应商 {{name}} 是官方供应商,建议切换到第三方供应商后再使用本地路由"
|
||||
"proxyOfficialWarning": "当前供应商 {{name}} 是官方供应商,建议切换到第三方供应商后再使用本地路由",
|
||||
"proxyReasonClaudeDesktop": "使用 Claude Desktop 本地路由模式"
|
||||
},
|
||||
"confirm": {
|
||||
"deleteProvider": "删除供应商",
|
||||
@@ -1168,7 +1171,8 @@
|
||||
"fetchModelsAuthFailed": "API Key 无效或无权限",
|
||||
"fetchModelsNotSupported": "该供应商不支持获取模型列表",
|
||||
"fetchModelsEndpointNotFound": "未找到可用的模型列表端点,请检查 Base URL 或确认供应商是否开放该接口",
|
||||
"fetchModelsTimeout": "请求超时,请检查网络连接"
|
||||
"fetchModelsTimeout": "请求超时,请检查网络连接",
|
||||
"requiredFields": "请填写供应商名称、API 地址、API Key 和模型"
|
||||
},
|
||||
"copilot": {
|
||||
"authSection": "GitHub Copilot 认证",
|
||||
@@ -1365,7 +1369,8 @@
|
||||
"reasoningEffortHint": "上游支持 low/high/max 等思考深度控制时启用。启用后会自动启用思考模式,并把 Codex 的 reasoning.effort 转成上游 Chat 参数。",
|
||||
"reasoningGroupTitle": "思考能力",
|
||||
"reasoningSectionHint": "预设供应商已自动配置;自定义供应商会按名称/地址自动推断。仅当自动识别不准时才需手动覆盖。",
|
||||
"advancedSectionHint": "包含上游格式、模型映射、思考能力与自定义 User-Agent。使用 Chat Completions 协议的供应商需开启路由接管才能使用。"
|
||||
"advancedSectionHint": "包含上游格式、模型映射、思考能力与自定义 User-Agent。使用 Chat Completions 协议的供应商需开启路由接管才能使用。",
|
||||
"noCommonConfigToApply": "通用配置片段为空或没有可写入的内容"
|
||||
},
|
||||
"geminiConfig": {
|
||||
"envFile": "环境变量 (.env)",
|
||||
@@ -1464,6 +1469,7 @@
|
||||
"totalRequests": "总请求数",
|
||||
"totalCost": "总成本",
|
||||
"cost": "成本",
|
||||
"unpriced": "未定价",
|
||||
"perMillion": "(每百万)",
|
||||
"trends": "使用趋势",
|
||||
"rangeToday": "过去 24 小时 (按小时)",
|
||||
@@ -2549,7 +2555,8 @@
|
||||
},
|
||||
"tooltip": {
|
||||
"enabled": "{{app}} 故障转移已启用\n按队列优先级(P1→P2→...)选择供应商",
|
||||
"disabled": "启用 {{app}} 故障转移\n将立即切换到队列 P1,并在失败时自动切换到下一个"
|
||||
"disabled": "启用 {{app}} 故障转移\n将立即切换到队列 P1,并在失败时自动切换到下一个",
|
||||
"takeoverRequired": "请先接管 {{app}},再启用故障转移"
|
||||
}
|
||||
},
|
||||
"proxy": {
|
||||
@@ -2727,7 +2734,9 @@
|
||||
},
|
||||
"server": {
|
||||
"started": "路由服务已启动 - {{address}}:{{port}}",
|
||||
"startFailed": "启动路由服务失败: {{detail}}"
|
||||
"startFailed": "启动路由服务失败: {{detail}}",
|
||||
"stopped": "路由服务已停止",
|
||||
"stopFailed": "停止路由服务失败:{{detail}}"
|
||||
},
|
||||
"stoppedWithRestore": "路由服务已关闭,已恢复所有路由配置",
|
||||
"stopWithRestoreFailed": "停止失败: {{detail}}"
|
||||
|
||||
Reference in New Issue
Block a user