1 line
1.2 MiB
Plaintext
1 line
1.2 MiB
Plaintext
{"repo": "blueskyxn/cpa-panel-lts", "files": {"src/i18n/locales/en.json": {"4a3d69d5e1d2eef01ed3ed4fadecd6adbe4b5a42": {"t": 1785674689.7016094, "n": 136523, "h": "77e31ee66ebd70a2", "c": "{\n \"common\": {\n \"login\": \"Login\",\n \"logout\": \"Logout\",\n \"back\": \"Back\",\n \"cancel\": \"Cancel\",\n \"confirm\": \"Confirm\",\n \"leave\": \"Leave\",\n \"stay\": \"Stay\",\n \"save\": \"Save\",\n \"delete\": \"Delete\",\n \"edit\": \"Edit\",\n \"add\": \"Add\",\n \"update\": \"Update\",\n \"refresh\": \"Refresh\",\n \"close\": \"Close\",\n \"success\": \"Success\",\n \"error\": \"Error\",\n \"info\": \"Info\",\n \"warning\": \"Warning\",\n \"loading\": \"Loading...\",\n \"connecting\": \"Connecting...\",\n \"connected\": \"Connected\",\n \"disconnected\": \"Disconnected\",\n \"connecting_status\": \"Connecting\",\n \"connected_status\": \"Connected\",\n \"disconnected_status\": \"Disconnected\",\n \"yes\": \"Yes\",\n \"no\": \"No\",\n \"not_set\": \"Not set\",\n \"optional\": \"Optional\",\n \"required\": \"Required\",\n \"api_key\": \"Key\",\n \"base_url\": \"Address\",\n \"prefix\": \"Prefix\",\n \"proxy_url\": \"Proxy\",\n \"priority\": \"Priority\",\n \"alias\": \"Alias\",\n \"failure\": \"Failure\",\n \"unknown_error\": \"Unknown error\",\n \"quota_update_required\": \"Please update the CPA version or check for updates\",\n \"quota_check_credential\": \"Please check the credential status\",\n \"copy\": \"Copy\",\n \"expand\": \"Expand\",\n \"collapse\": \"Collapse\",\n \"status\": \"Status\",\n \"action\": \"Action\",\n \"custom_headers_label\": \"Custom Headers\",\n \"custom_headers_hint\": \"Optional HTTP headers to send with the request. Leave blank to remove.\",\n \"custom_headers_add\": \"Add Header\",\n \"custom_headers_key_placeholder\": \"Header name, e.g. X-Custom-Header\",\n \"custom_headers_value_placeholder\": \"Header value\",\n \"model_name_placeholder\": \"Model name, e.g. claude-3-5-sonnet-20241022\",\n \"model_alias_placeholder\": \"Model alias (optional)\",\n \"invalid_provider_index\": \"Invalid provider index.\",\n \"unsaved_changes_title\": \"Unsaved changes\",\n \"unsaved_changes_message\": \"You have unsaved changes. Leaving now will discard them. Do you want to leave?\"\n },\n \"title\": {\n \"main\": \"CLI Proxy API Management Center\",\n \"login\": \"CLI Proxy API Management Center\",\n \"abbr\": \"CPAMC\"\n },\n \"splash\": {\n \"title\": \"CLI Proxy API\",\n \"subtitle\": \"Management Center\"\n },\n \"auto_login\": {\n \"title\": \"Auto Login in Progress...\",\n \"message\": \"Attempting to connect to server using locally saved connection information\"\n },\n \"login\": {\n \"subtitle\": \"Please enter connection information to access the management interface\",\n \"connection_title\": \"Connection Address\",\n \"connection_current\": \"Current URL\",\n \"connection_auto_hint\": \"The system will automatically use the current URL for connection\",\n \"custom_connection_label\": \"Custom Connection URL:\",\n \"custom_connection_placeholder\": \"Eg: https://example.com:8317\",\n \"custom_connection_hint\": \"By default the current URL is used. Override it here if needed.\",\n \"use_current_address\": \"Use Current URL\",\n \"remember_password_label\": \"Remember password\",\n \"management_key_label\": \"Management Key:\",\n \"management_key_placeholder\": \"Enter the management key\",\n \"connect_button\": \"Connect\",\n \"submit_button\": \"Login\",\n \"submitting\": \"Connecting...\",\n \"error_title\": \"Login Failed\",\n \"error_backend_detail\": \"Backend response\",\n \"error_required\": \"Please fill in complete connection information\",\n \"error_invalid\": \"Connection failed, please check the server address, Management API, and management key\",\n \"error_network\": \"Network connection failed, please check your network or server address\",\n \"error_timeout\": \"Connection timed out, server not responding\",\n \"error_unauthorized\": \"Authentication failed, management key is missing or invalid\",\n \"error_forbidden\": \"Access denied, remote management is disabled, the management key is not configured, or this IP is temporarily banned\",\n \"error_not_found\": \"Management API not found, confirm the server address points to the CLIProxyAPI backend\",\n \"error_server\": \"Backend failed while handling the management request, check the server logs\",\n \"error_cors\": \"Cross-origin request blocked, please check server configuration\",\n \"error_ssl\": \"SSL/TLS certificate verification failed\"\n },\n \"header\": {\n \"check_connection\": \"Check Connection\",\n \"refresh_all\": \"Refresh All\",\n \"logout\": \"Logout\"\n },\n \"connection\": {\n \"title\": \"Connection Information\",\n \"server_address\": \"Server Address:\",\n \"management_key\": \"Management Key:\",\n \"status\": \"Connection Status:\"\n },\n \"nav\": {\n \"dashboard\": \"Dashboard\",\n \"basic_settings\": \"Basic Settings\",\n \"api_keys\": \"API Keys\",\n \"ai_providers\": \"AI Providers\",\n \"auth_files\": \"Auth Files\",\n \"oauth\": \"OAuth Login\",\n \"quota_management\": \"Quota Management\",\n \"usage_stats\": \"Usage Statistics\",\n \"plugins\": \"Plugins\",\n \"plugins_runtime_unavailable\": \"Plugins (runtime unavailable)\",\n \"plugin_store\": \"Plugin Store\",\n \"config_management\": \"Config Panel\",\n \"logs\": \"Logs Viewer\",\n \"system_info\": \"Management Center Info\"\n },\n \"nav_groups\": {\n \"operate\": \"Operate\",\n \"gateway\": \"Gateway\",\n \"observe\": \"Observe\",\n \"plugin_pages\": \"Plugins\",\n \"control\": \"Control\"\n },\n \"nav_meta\": {\n \"dashboard\": \"Operations overview\",\n \"ai_providers\": \"Upstream model routing\",\n \"auth_files\": \"Auth files & credentials\",\n \"oauth\": \"OAuth authorization\",\n \"quota_management\": \"API keys & limits\",\n \"usage_stats\": \"Full usage and request analytics\",\n \"plugins\": \"Plugin toggles & config\",\n \"plugin_store\": \"Discover & install plugins\",\n \"logs\": \"Request tracing\",\n \"config_management\": \"Gateway configuration\",\n \"system_info\": \"Runtime & diagnostics\"\n },\n \"dashboard\": {\n \"title\": \"Dashboard\",\n \"subtitle\": \"Welcome to CLI Proxy API Management Center\",\n \"openai_providers\": \"OpenAI Providers\",\n \"quick_actions\": \"Quick Actions\",\n \"current_config\": \"Current Configuration\",\n \"management_keys\": \"Management Keys\",\n \"provider_keys_detail\": \"G:{{gemini}} C:{{codex}} X:{{xai}} Cl:{{claude}} V:{{vertex}} O:{{openai}} A:{{ampcode}}\",\n \"oauth_credentials\": \"OAuth Credentials\",\n \"edit_settings\": \"Edit Settings\",\n \"routing_strategy\": \"Routing Strategy\",\n \"available_models\": \"Available Models\",\n \"available_models_desc\": \"Total models from all providers\",\n \"welcome_back\": \"Welcome Back\",\n \"greeting_morning\": \"Good Morning\",\n \"greeting_afternoon\": \"Good Afternoon\",\n \"greeting_evening\": \"Good Evening\",\n \"greeting_night\": \"Good Night\",\n \"caring_morning\": \"A fresh start — let's make today count.\",\n \"caring_afternoon\": \"Steady progress — you're doing great.\",\n \"caring_evening\": \"Wrapping up nicely — almost there.\",\n \"caring_night\": \"Burning the midnight oil? Don't forget to rest.\",\n \"system_overview\": \"System Overview\"\n },\n \"basic_settings\": {\n \"title\": \"Basic Settings\",\n \"debug_title\": \"Debug Mode\",\n \"debug_enable\": \"Enable Debug Mode\",\n \"proxy_title\": \"Proxy Settings\",\n \"proxy_url_label\": \"Proxy URL:\",\n \"proxy_url_placeholder\": \"e.g.: socks5://user:pass@127.0.0.1:1080/\",\n \"proxy_update\": \"Update\",\n \"proxy_clear\": \"Clear\",\n \"retry_title\": \"Request Retry\",\n \"retry_count_label\": \"Retry Count:\",\n \"retry_update\": \"Update\",\n \"quota_title\": \"Quota Exceeded Behavior\",\n \"quota_switch_project\": \"Auto Switch Project\",\n \"quota_switch_preview\": \"Switch to Preview Model\",\n \"logging_title\": \"Logging\",\n \"logging_to_file_enable\": \"Enable logging to file\",\n \"logs_max_total_size_title\": \"Log Size Limit\",\n \"logs_max_total_size_label\": \"Total log size cap (MB):\",\n \"logs_max_total_size_hint\": \"Set to 0 to disable the limit.\",\n \"logs_max_total_size_update\": \"Update\",\n \"request_log_title\": \"Request Logging\",\n \"request_log_enable\": \"Enable request logging\",\n \"request_log_warning\": \"Keep this off unless you need detailed troubleshooting.\",\n \"force_model_prefix_enable\": \"Force model prefix\",\n \"ws_auth_title\": \"WebSocket Authentication\",\n \"ws_auth_enable\": \"Require auth for /ws/*\",\n \"routing_title\": \"Routing Strategy\",\n \"routing_strategy_label\": \"Routing strategy:\",\n \"routing_strategy_hint\": \"round-robin cycles through keys; fill-first prioritizes the first available key.\",\n \"routing_strategy_update\": \"Update\",\n \"routing_strategy_round_robin\": \"round-robin (cycle)\",\n \"routing_strategy_fill_first\": \"fill-first (prioritize)\"\n },\n \"api_keys\": {\n \"title\": \"API Keys Management\",\n \"proxy_auth_title\": \"Proxy Service Authentication Keys\",\n \"add_button\": \"Add Key\",\n \"empty_title\": \"No API Keys\",\n \"empty_desc\": \"Click the button above to add the first key\",\n \"item_title\": \"API Key\",\n \"add_modal_title\": \"Add API Key\",\n \"add_modal_key_label\": \"API Key:\",\n \"add_modal_key_placeholder\": \"Please enter API key\",\n \"edit_modal_title\": \"Edit API Key\",\n \"edit_modal_key_label\": \"API Key:\",\n \"delete_confirm\": \"Are you sure you want to delete this API key?\"\n },\n \"ai_providers\": {\n \"title\": \"AI Providers Configuration\",\n \"gemini_title\": \"Gemini API Keys\",\n \"gemini_add_button\": \"Add Key\",\n \"gemini_empty_title\": \"No Gemini Keys\",\n \"gemini_empty_desc\": \"Click the button above to add the first key\",\n \"gemini_item_title\": \"Gemini Key\",\n \"gemini_add_modal_title\": \"Add Gemini API Key\",\n \"gemini_add_modal_key_label\": \"API Keys:\",\n \"gemini_add_modal_key_placeholder\": \"Enter Gemini API key\",\n \"gemini_add_modal_key_hint\": \"Add keys one by one and optionally specify a Base URL.\",\n \"gemini_keys_add_btn\": \"Add Key\",\n \"gemini_base_url_label\": \"Base URL (Optional):\",\n \"gemini_base_url_placeholder\": \"e.g.: https://generativelanguage.googleapis.com\",\n \"gemini_add_modal_proxy_label\": \"Proxy URL (Optional):\",\n \"gemini_add_modal_proxy_placeholder\": \"e.g.: socks5://proxy.example.com:1080\",\n \"gemini_models_label\": \"Custom Models (Optional):\",\n \"gemini_models_hint\": \"Leave empty to allow all models, or add name[, alias] entries to limit/alias them for this key.\",\n \"gemini_models_add_btn\": \"Add Model\",\n \"gemini_models_fetch_button\": \"Fetch via /v1beta/models\",\n \"gemini_models_fetch_title\": \"Pick Models from Gemini /v1beta/models\",\n \"gemini_models_fetch_hint\": \"Call GET /v1beta/models per the Gemini API. By default, it sends x-goog-api-key from the API Key field, merged with your custom headers.\",\n \"gemini_models_fetch_url_label\": \"Request URL\",\n \"gemini_models_fetch_refresh\": \"Refresh\",\n \"gemini_models_fetch_loading\": \"Fetching models from Gemini /v1beta/models...\",\n \"gemini_models_fetch_empty\": \"No models returned. Please check Base URL, API key, or headers.\",\n \"gemini_models_fetch_error\": \"Failed to fetch Gemini models\",\n \"gemini_models_fetch_apply\": \"Add selected models\",\n \"model_discovery_select_visible\": \"Select current list\",\n \"model_discovery_clear_selection\": \"Clear selection\",\n \"model_discovery_selected_count\": \"{{count}} selected\",\n \"gemini_models_search_label\": \"Search models\",\n \"gemini_models_search_placeholder\": \"Filter by name, alias, or description\",\n \"gemini_models_search_empty\": \"No models match your search. Try a different keyword.\",\n \"gemini_models_fetch_added\": \"{{count}} new models added\",\n \"gemini_models_count\": \"Models Count\",\n \"gemini_edit_modal_title\": \"Edit Gemini API Key\",\n \"gemini_edit_modal_key_label\": \"API Key:\",\n \"gemini_delete_confirm\": \"Are you sure you want to delete this Gemini key?\",\n \"excluded_models_label\": \"Excluded models (optional):\",\n \"excluded_models_placeholder\": \"Comma or newline separated, e.g. gemini-1.5-pro, gemini-1.5-flash\",\n \"excluded_models_hint\": \"Leave empty to allow all models; values are trimmed and deduplicated automatically.\",\n \"excluded_models_count\": \"Excluding {{count}} models\",\n \"prefix_label\": \"Prefix (Optional):\",\n \"prefix_placeholder\": \"e.g.: team-a\",\n \"prefix_hint\": \"When set, call models as prefix/<model> to target this entry.\",\n \"priority_label\": \"Priority (Optional):\",\n \"priority_hint\": \"Higher values are preferred. Leave empty for default (0).\",\n \"config_toggle_label\": \"Enabled\",\n \"config_disabled_badge\": \"Disabled\",\n \"codex_title\": \"Codex API Configuration\",\n \"codex_add_button\": \"Add Configuration\",\n \"codex_empty_title\": \"No Codex Configuration\",\n \"codex_empty_desc\": \"Click the button above to add the first configuration\",\n \"codex_item_title\": \"Codex Configuration\",\n \"codex_add_modal_title\": \"Add Codex API Configuration\",\n \"codex_add_modal_key_label\": \"API Key:\",\n \"codex_add_modal_key_placeholder\": \"Please enter Codex API key\",\n \"codex_add_modal_url_label\": \"Base URL (Required):\",\n \"codex_add_modal_url_placeholder\": \"e.g.: https://api.example.com\",\n \"codex_add_modal_proxy_label\": \"Proxy URL (Optional):\",\n \"codex_add_modal_proxy_placeholder\": \"e.g.: socks5://proxy.example.com:1080\",\n \"codex_websockets_label\": \"Websockets\",\n \"codex_websockets_hint\": \"Enable Responses API websocket transport for this key.\",\n \"codex_models_label\": \"Custom Models (Optional):\",\n \"codex_models_hint\": \"Leave empty to allow all models, or add name[, alias] entries to limit/alias them.\",\n \"codex_models_add_btn\": \"Add Model\",\n \"codex_models_fetch_button\": \"Fetch via /v1/models\",\n \"codex_models_fetch_title\": \"Pick Models from /v1/models\",\n \"codex_models_fetch_hint\": \"Call GET /v1/models using the Base URL above, sending the API key as Bearer (if provided) and merging your custom headers.\",\n \"codex_models_fetch_url_label\": \"Request URL\",\n \"codex_models_fetch_refresh\": \"Refresh\",\n \"codex_models_fetch_loading\": \"Fetching models from /v1/models...\",\n \"codex_models_fetch_empty\": \"No models returned. Please check Base URL, API key, or headers.\",\n \"codex_models_fetch_error\": \"Failed to fetch models\",\n \"codex_models_fetch_apply\": \"Add selected models\",\n \"codex_models_search_label\": \"Search models\",\n \"codex_models_search_placeholder\": \"Filter by name, alias, or description\",\n \"codex_models_search_empty\": \"No models match your search. Try a different keyword.\",\n \"codex_models_fetch_added\": \"{{count}} new models added\",\n \"codex_models_count\": \"Models Count\",\n \"codex_edit_modal_title\": \"Edit Codex API Configuration\",\n \"codex_edit_modal_key_label\": \"API Key:\",\n \"codex_edit_modal_url_label\": \"Base URL (Required):\",\n \"codex_edit_modal_proxy_label\": \"Proxy URL (Optional):\",\n \"codex_delete_confirm\": \"Are you sure you want to delete this Codex configuration?\",\n \"claude_title\": \"Claude API Configuration\",\n \"claude_add_button\": \"Add Configuration\",\n \"claude_empty_title\": \"No Claude Configuration\",\n \"claude_empty_desc\": \"Click the button above to add the first configuration\",\n \"claude_item_title\": \"Claude Configuration\",\n \"claude_add_modal_title\": \"Add Claude API Configuration\",\n \"claude_add_modal_key_label\": \"API Key:\",\n \"claude_add_modal_key_placeholder\": \"Please enter Claude API key\",\n \"claude_add_modal_url_label\": \"Base URL (Optional):\",\n \"claude_add_modal_url_placeholder\": \"e.g.: https://api.anthropic.com\",\n \"claude_add_modal_proxy_label\": \"Proxy URL (Optional):\",\n \"claude_add_modal_proxy_placeholder\": \"e.g.: socks5://proxy.example.com:1080\",\n \"claude_edit_modal_title\": \"Edit Claude API Configuration\",\n \"claude_edit_modal_key_label\": \"API Key:\",\n \"claude_edit_modal_url_label\": \"Base URL (Optional):\",\n \"claude_edit_modal_proxy_label\": \"Proxy URL (Optional):\",\n \"claude_delete_confirm\": \"Are you sure you want to delete this Claude configuration?\",\n \"claude_models_label\": \"Custom Models (Optional):\",\n \"claude_models_hint\": \"Leave empty to allow all models, or add name[, alias] entries to limit/alias them.\",\n \"claude_models_add_btn\": \"Add Model\",\n \"claude_models_count\": \"Models Count\",\n \"claude_models_fetch_button\": \"Fetch via /v1/models\",\n \"claude_models_fetch_title\": \"Pick Models from Claude /v1/models\",\n \"claude_models_fetch_hint\": \"Call GET /v1/models with Anthropic headers. By default, this sends x-api-key and anthropic-version: 2023-06-01, merged with your custom headers.\",\n \"claude_models_fetch_url_label\": \"Request URL\",\n \"claude_models_fetch_refresh\": \"Refresh\",\n \"claude_models_fetch_loading\": \"Fetching models from Claude /v1/models...\",\n \"claude_models_fetch_empty\": \"No models returned. Please check Base URL, API key, or headers.\",\n \"claude_models_fetch_error\": \"Failed to fetch Claude models\",\n \"claude_models_fetch_apply\": \"Add selected models\",\n \"claude_models_search_label\": \"Search models\",\n \"claude_models_search_placeholder\": \"Filter by name, alias, or description\",\n \"claude_models_search_empty\": \"No models match your search. Try a different keyword.\",\n \"claude_models_fetch_added\": \"{{count}} new models added\",\n \"claude_test_title\": \"Connection Test\",\n \"claude_test_hint\": \"Send a test request to /v1/messages using Anthropic headers to verify this configuration.\",\n \"claude_test_select_placeholder\": \"Choose from current models\",\n \"claude_test_select_empty\": \"No models configured. Add models first\",\n \"claude_test_action\": \"Test\",\n \"claude_test_running\": \"Sending Claude test request...\",\n \"claude_test_timeout\": \"Test request timed out after {{seconds}} seconds.\",\n \"claude_test_success\": \"Test succeeded. Claude model responded.\",\n \"claude_test_failed\": \"Test failed\",\n \"claude_test_key_required\": \"Please provide a Claude API key or set x-api-key in custom headers\",\n \"claude_test_model_required\": \"Please select a model to test\",\n \"claude_test_endpoint_invalid\": \"Unable to build a valid Claude /v1/messages endpoint\",\n \"claude_cloak_title\": \"Request Cloaking (Optional):\",\n \"claude_cloak_toggle_label\": \"Enable\",\n \"claude_cloak_toggle_aria\": \"Toggle request cloaking\",\n \"claude_cloak_hint\": \"Cloaking disguises requests to appear as coming from the official Claude Code CLI for non-Claude-Code clients.\",\n \"claude_cloak_mode_label\": \"Mode:\",\n \"claude_cloak_mode_hint\": \"auto: cloak only when client is not Claude Code; always: always cloak; never: never cloak.\",\n \"claude_cloak_mode_auto\": \"Auto (non-Claude-Code only)\",\n \"claude_cloak_mode_always\": \"Always\",\n \"claude_cloak_mode_never\": \"Never\",\n \"claude_cloak_strict_label\": \"Strict mode:\",\n \"claude_cloak_strict_hint\": \"When enabled, strip user system messages and keep only the Claude Code prompt.\",\n \"claude_cloak_sensitive_words_label\": \"Sensitive words (optional):\",\n \"claude_cloak_sensitive_words_placeholder\": \"Comma or newline separated, e.g. internal-project\",\n \"claude_cloak_sensitive_words_hint\": \"These words are obfuscated with zero-width characters.\",\n \"claude_cloak_sensitive_words_count\": \"Sensitive words\",\n \"vertex_title\": \"Vertex API Configuration\",\n \"vertex_add_button\": \"Add Configuration\",\n \"vertex_empty_title\": \"No Vertex Configuration\",\n \"vertex_empty_desc\": \"Click the button above to add the first configuration\",\n \"vertex_item_title\": \"Vertex Configuration\",\n \"vertex_add_modal_title\": \"Add Vertex API Configuration\",\n \"vertex_add_modal_key_label\": \"API Key:\",\n \"vertex_add_modal_key_placeholder\": \"Please enter Vertex API key\",\n \"vertex_add_modal_url_label\": \"Base URL:\",\n \"vertex_add_modal_url_placeholder\": \"e.g.: https://example.com/api\",\n \"vertex_add_modal_proxy_label\": \"Proxy URL (Optional):\",\n \"vertex_add_modal_proxy_placeholder\": \"e.g.: socks5://proxy.example.com:1080\",\n \"vertex_edit_modal_title\": \"Edit Vertex API Configuration\",\n \"vertex_edit_modal_key_label\": \"API Key:\",\n \"vertex_edit_modal_url_label\": \"Base URL:\",\n \"vertex_edit_modal_proxy_label\": \"Proxy URL (Optional):\",\n \"vertex_delete_confirm\": \"Are you sure you want to delete this Vertex configuration?\",\n \"vertex_models_label\": \"Model aliases:\",\n \"vertex_models_add_btn\": \"Add Mapping\",\n \"vertex_models_count\": \"Alias count\",\n \"ampcode_title\": \"Amp CLI Integration (ampcode)\",\n \"ampcode_modal_title\": \"Configure Ampcode\",\n \"ampcode_upstream_url_label\": \"Upstream URL\",\n \"ampcode_upstream_url_placeholder\": \"e.g. https://ampcode.com\",\n \"ampcode_upstream_url_hint\": \"Optional. Leave empty to use the default/auto-discovered control plane URL.\",\n \"ampcode_upstream_api_key_label\": \"Upstream API Key (Amp Official)\",\n \"ampcode_upstream_api_key_placeholder\": \"Enter sk-amp... (leave empty to keep current)\",\n \"ampcode_upstream_api_key_hint\": \"Optional. Leaving it empty will not change the current Amp official key. Use the button below to clear it.\",\n \"ampcode_upstream_api_key_current\": \"Current Amp official key: {{key}}\",\n \"ampcode_clear_upstream_api_key\": \"Clear official key\",\n \"ampcode_clear_upstream_api_key_confirm\": \"Are you sure you want to clear the Ampcode upstream API key (Amp official)?\",\n \"ampcode_upstream_api_keys_label\": \"Multi-upstream API key routing\",\n \"ampcode_upstream_api_keys_hint\": \"Bind different Amp upstream API keys to specific client API keys. Client keys can be separated by commas or new lines.\",\n \"ampcode_upstream_api_keys_add_btn\": \"Add upstream mapping\",\n \"ampcode_upstream_api_keys_upstream_placeholder\": \"Upstream API key (sk-amp-...)\",\n \"ampcode_upstream_api_keys_clients_placeholder\": \"Client API keys, separated by commas or new lines\",\n \"ampcode_upstream_api_keys_item_title\": \"Upstream mapping #{{index}}\",\n \"ampcode_upstream_api_keys_count\": \"Upstream mappings\",\n \"ampcode_force_model_mappings_label\": \"Force model mappings\",\n \"ampcode_force_model_mappings_hint\": \"When enabled, mappings override local API-key availability checks.\",\n \"ampcode_model_mappings_label\": \"Model mappings (from → to)\",\n \"ampcode_model_mappings_hint\": \"Rewrites model names in Amp requests. Leave empty to disable mappings.\",\n \"ampcode_model_mappings_add_btn\": \"Add mapping\",\n \"ampcode_model_mappings_from_placeholder\": \"from model (source)\",\n \"ampcode_model_mappings_to_placeholder\": \"to model (target)\",\n \"ampcode_model_mappings_count\": \"Mappings Count\",\n \"ampcode_lists_overwrite_title\": \"Overwrite list settings\",\n \"ampcode_lists_overwrite_confirm\": \"Existing multi-upstream/model mapping lists could not be loaded. Continuing may overwrite or clear them. Continue?\",\n \"ampcode_mappings_overwrite_confirm\": \"Existing mappings could not be loaded. Continuing may overwrite or clear them. Continue?\",\n \"openai_title\": \"OpenAI Compatible Providers\",\n \"openai_add_button\": \"Add Provider\",\n \"openai_empty_title\": \"No OpenAI Compatible Providers\",\n \"openai_empty_desc\": \"Click the button above to add the first provider\",\n \"openai_filtered_empty_title\": \"No matching providers\",\n \"openai_filtered_empty_desc\": \"No providers match the current model filter. Clear the filter and try again.\",\n \"sort_by_name\": \"Sort by Name\",\n \"sort_ascending\": \"Sort ascending\",\n \"sort_asc_short\": \"Asc\",\n \"sort_by_priority\": \"Sort by Priority\",\n \"sort_by_recent_success\": \"Sort by Recent Success\",\n \"sort_descending\": \"Sort descending\",\n \"sort_desc_short\": \"Desc\",\n \"openai_test_model\": \"Test Model\",\n \"openai_add_modal_title\": \"Add OpenAI Compatible Provider\",\n \"openai_add_modal_name_label\": \"Provider Name:\",\n \"openai_add_modal_name_placeholder\": \"e.g.: openrouter\",\n \"openai_add_modal_url_label\": \"Base URL:\",\n \"openai_add_modal_url_placeholder\": \"e.g.: https://openrouter.ai/api/v1\",\n \"openai_add_modal_keys_label\": \"API Keys\",\n \"openai_edit_modal_keys_label\": \"API Keys\",\n \"openai_keys_hint\": \"Add each key separately with an optional proxy URL to keep things organized.\",\n \"openai_keys_add_btn\": \"Add Key\",\n \"openai_key_placeholder\": \"sk-... key\",\n \"openai_proxy_placeholder\": \"Optional proxy URL (e.g. socks5://...)\",\n \"openai_add_modal_models_label\": \"Model List (name[, alias] one per line):\",\n \"openai_models_hint\": \"Example: gpt-4o-mini or moonshotai/kimi-k2:free, kimi-k2\",\n \"openai_model_name_placeholder\": \"Model name, e.g. moonshotai/kimi-k2:free\",\n \"openai_model_alias_placeholder\": \"Model alias (optional)\",\n \"openai_models_add_btn\": \"Add Model\",\n \"openai_models_fetch_button\": \"Fetch via /models\",\n \"openai_models_fetch_title\": \"Pick Models from /models\",\n \"openai_models_fetch_hint\": \"Call the /models endpoint using the Base URL above, sending the first API key as Bearer plus custom headers.\",\n \"openai_models_fetch_url_label\": \"Request URL\",\n \"openai_models_fetch_refresh\": \"Refresh\",\n \"openai_models_fetch_loading\": \"Fetching models from /models...\",\n \"openai_models_fetch_empty\": \"No models returned. Please check the endpoint or auth.\",\n \"openai_models_fetch_error\": \"Failed to fetch models\",\n \"openai_models_fetch_back\": \"Back to edit\",\n \"openai_models_fetch_apply\": \"Add selected models\",\n \"openai_models_search_label\": \"Search models\",\n \"openai_models_search_placeholder\": \"Filter by name, alias, or description\",\n \"openai_models_search_empty\": \"No models match your search. Try a different keyword.\",\n \"openai_models_fetch_invalid_url\": \"Please enter a valid Base URL first\",\n \"openai_models_fetch_added\": \"{{count}} new models added\",\n \"openai_edit_modal_title\": \"Edit OpenAI Compatible Provider\",\n \"openai_edit_modal_name_label\": \"Provider Name:\",\n \"openai_edit_modal_url_label\": \"Base URL:\",\n \"openai_edit_modal_models_label\": \"Model List (name[, alias] one per line):\",\n \"openai_delete_confirm\": \"Are you sure you want to delete this OpenAI provider?\",\n \"openai_keys_count\": \"Keys Count\",\n \"openai_models_count\": \"Models Count\",\n \"openai_test_title\": \"Connection Test\",\n \"openai_test_hint\": \"Send a /chat/completions request with the current settings to verify availability.\",\n \"openai_test_model_placeholder\": \"Model to test\",\n \"openai_test_action\": \"Run Test\",\n \"openai_test_running\": \"Sending test request...\",\n \"openai_test_timeout\": \"Test request timed out after {{seconds}} seconds.\",\n \"openai_test_success\": \"Test succeeded. The model responded.\",\n \"openai_test_failed\": \"Test failed\",\n \"openai_test_select_placeholder\": \"Choose from current models\",\n \"openai_test_select_empty\": \"No models configured. Add models first\",\n \"openai_test_single_action\": \"Test\",\n \"openai_test_all_action\": \"Test All Keys\",\n \"openai_test_all_hint\": \"Test connection status for all keys\",\n \"openai_test_all_success\": \"All {{count}} keys passed the test\",\n \"openai_test_all_failed\": \"All {{count}} keys failed the test\",\n \"openai_test_all_partial\": \"Test completed: {{success}} passed, {{failed}} failed\",\n \"model_search_placeholder\": \"Filter by models...\",\n \"model_search_clear\": \"Clear\",\n \"model_select_all\": \"Select All\",\n \"model_filter_empty\": \"No models to filter\"\n },\n \"auth_files\": {\n \"title\": \"Auth Files Management\",\n \"title_section\": \"Auth Files\",\n \"description\": \"Manage all CLI Proxy JSON auth files here (e.g. Qwen, Gemini, Vertex). Uploading a credential immediately enables the corresponding AI integration.\",\n \"upload_button\": \"Upload File\",\n \"delete_all_button\": \"Delete All\",\n \"empty_title\": \"No Auth Files\",\n \"empty_desc\": \"Click the button above to upload the first file\",\n \"search_empty_title\": \"No matching files\",\n \"search_empty_desc\": \"Try changing the filters or clearing the search box.\",\n \"file_size\": \"Size\",\n \"file_modified\": \"Modified\",\n \"health_status_label\": \"Health\",\n \"health_status_healthy\": \"Healthy\",\n \"health_status_warning\": \"Warning\",\n \"health_status_disabled\": \"Disabled\",\n \"health_status_unknown\": \"Unknown\",\n \"health_status_no_message\": \"No status message\",\n \"last_refresh_label\": \"Last Refresh\",\n \"refresh_not_available\": \"N/A\",\n \"refresh_just_now\": \"Just now\",\n \"download_button\": \"Download\",\n \"delete_button\": \"Delete\",\n \"delete_confirm\": \"Are you sure you want to delete file\",\n \"delete_all_confirm\": \"Are you sure you want to delete all auth files? This operation cannot be undone!\",\n \"delete_filtered_confirm\": \"Are you sure you want to delete all {{type}} auth files? This operation cannot be undone!\",\n \"delete_problem_button\": \"Delete Problem Files\",\n \"delete_problem_button_with_type\": \"Delete Problematic {{type}} Files\",\n \"delete_problem_confirm\": \"Are you sure you want to delete all problematic auth files? This operation cannot be undone!\",\n \"delete_problem_filtered_confirm\": \"Are you sure you want to delete all problematic {{type}} auth files? This operation cannot be undone!\",\n \"delete_filtered_result_button\": \"Delete filtered results\",\n \"delete_filtered_result_confirm\": \"Are you sure you want to delete auth files in the current filtered results? This operation cannot be undone!\",\n \"upload_error_json\": \"Only JSON files are allowed\",\n \"upload_error_size\": \"File size cannot exceed {{maxSize}}\",\n \"upload_success\": \"File uploaded successfully\",\n \"download_success\": \"File downloaded successfully\",\n \"delete_success\": \"File deleted successfully\",\n \"delete_all_success\": \"Successfully deleted\",\n \"delete_filtered_success\": \"Deleted {{count}} {{type}} auth files successfully\",\n \"delete_filtered_partial\": \"{{type}} auth files deletion finished: {{success}} succeeded, {{failed}} failed\",\n \"delete_filtered_none\": \"No deletable auth files under the current filter ({{type}})\",\n \"delete_problem_success\": \"Deleted {{count}} problematic auth files successfully\",\n \"delete_problem_filtered_success\": \"Deleted {{count}} problematic {{type}} auth files successfully\",\n \"delete_problem_partial\": \"Problematic auth files deletion finished: {{success}} succeeded, {{failed}} failed\",\n \"delete_problem_filtered_partial\": \"Problematic {{type}} auth files deletion finished: {{success}} succeeded, {{failed}} failed\",\n \"delete_problem_none\": \"No deletable problematic auth files under the current filter\",\n \"delete_problem_filtered_none\": \"No deletable problematic {{type}} auth files under the current filter\",\n \"delete_filtered_result_success\": \"Deleted {{count}} auth files from the filtered results successfully\",\n \"delete_filtered_result_partial\": \"Filtered result deletion finished: {{success}} succeeded, {{failed}} failed\",\n \"delete_filtered_result_none\": \"No deletable auth files in the current filtered results\",\n \"files_count\": \"files\",\n \"pagination_prev\": \"Previous\",\n \"pagination_next\": \"Next\",\n \"pagination_info\": \"Page {{current}} / {{total}} · {{count}} files\",\n \"search_label\": \"Search configs\",\n \"search_placeholder\": \"Filter by name, type, or provider. Use * as a wildcard\",\n \"problem_filter_label\": \"Problem Filter\",\n \"problem_filter_only\": \"Only show problematic credentials\",\n \"disabled_filter_only\": \"Only show disabled credentials\",\n \"display_options_label\": \"Display options\",\n \"compact_mode_label\": \"Compact mode\",\n \"sort_label\": \"Sort\",\n \"sort_default\": \"Default\",\n \"sort_az\": \"A-Z Name\",\n \"sort_priority\": \"Priority\",\n \"priority_display\": \"Priority\",\n \"page_size_label\": \"Per page\",\n \"page_size_unit\": \"items\",\n \"view_mode_paged\": \"Paged\",\n \"view_mode_all\": \"Show all\",\n \"too_many_files_warning\": \"Too many credentials. Showing all may cause performance issues, please use paged view.\",\n \"filter_all\": \"All\",\n \"filter_qwen\": \"Qwen\",\n \"filter_gemini\": \"Gemini\",\n \"filter_gemini-cli\": \"GeminiCLI\",\n \"filter_kimi\": \"Kimi\",\n \"filter_aistudio\": \"AIStudio\",\n \"filter_claude\": \"Claude\",\n \"filter_codex\": \"Codex\",\n \"filter_antigravity\": \"Antigravity\",\n \"filter_xai\": \"xAI\",\n \"filter_iflow\": \"iFlow\",\n \"filter_vertex\": \"Vertex\",\n \"filter_empty\": \"Empty\",\n \"filter_unknown\": \"Other\",\n \"type_qwen\": \"Qwen\",\n \"type_gemini\": \"Gemini\",\n \"type_gemini-cli\": \"GeminiCLI\",\n \"type_kimi\": \"Kimi\",\n \"type_aistudio\": \"AIStudio\",\n \"type_claude\": \"Claude\",\n \"type_codex\": \"Codex\",\n \"type_antigravity\": \"Antigravity\",\n \"type_xai\": \"xAI\",\n \"type_iflow\": \"iFlow\",\n \"type_vertex\": \"Vertex\",\n \"type_empty\": \"Empty\",\n \"type_unknown\": \"Other\",\n \"type_virtual\": \"Virtual auth file\",\n \"models_button\": \"Models\",\n \"models_title\": \"Supported models\",\n \"models_loading\": \"Loading model list...\",\n \"models_empty\": \"No available models for this credential\",\n \"models_empty_desc\": \"This credential may not be loaded by the server yet, or no models are bound to it.\",\n \"models_unsupported\": \"This feature is not supported in the current version\",\n \"models_unsupported_desc\": \"Please update CLI Proxy API to the latest version and try again\",\n \"models_excluded_badge\": \"Disabled\",\n \"models_excluded_hint\": \"This OAuth model is disabled\",\n \"status_toggle_label\": \"Enabled\",\n \"status_enabled_success\": \"\\\"{{name}}\\\" enabled\",\n \"status_disabled_success\": \"\\\"{{name}}\\\" disabled\",\n \"batch_status_success\": \"{{count}} files updated successfully\",\n \"batch_status_partial\": \"{{success}} updated, {{failed}} failed\",\n \"batch_delete_title\": \"Delete Selected Files\",\n \"batch_delete_confirm\": \"Are you sure you want to delete {{count}} files?\",\n \"batch_selected\": \"{{count}} selected\",\n \"batch_select_all\": \"Select All\",\n \"batch_select_page\": \"Select page\",\n \"batch_select_filtered\": \"Select filtered\",\n \"batch_invert_page\": \"Invert page\",\n \"batch_deselect\": \"Deselect\",\n \"batch_download\": \"Download selected\",\n \"batch_download_success\": \"Started downloading {{count}} files\",\n \"batch_download_partial\": \"Download finished: {{success}} succeeded, {{failed}} failed\",\n \"batch_enable\": \"Enable\",\n \"batch_disable\": \"Disable\",\n \"prefix_proxy_button\": \"Auth File Details / Edit\",\n \"auth_field_editor_title\": \"Auth File Details / Edit - {{name}}\",\n \"prefix_proxy_loading\": \"Loading auth file...\",\n \"prefix_proxy_info_label\": \"Auth file info (info)\",\n \"prefix_proxy_source_label\": \"Auth file JSON (preview)\",\n \"prefix_proxy_invalid_content_label\": \"Downloaded content (truncated)\",\n \"prefix_label\": \"Prefix (prefix)\",\n \"proxy_url_label\": \"Proxy URL (proxy_url)\",\n \"prefix_placeholder\": \"\",\n \"proxy_url_placeholder\": \"socks5://username:password@proxy_ip:port/\",\n \"priority_label\": \"Priority (priority)\",\n \"priority_placeholder\": \"e.g. 10 or -1\",\n \"priority_hint\": \"Integers only. Invalid values are ignored. Larger value means higher priority.\",\n \"websockets_label\": \"WebSockets (websockets)\",\n \"websockets_hint\": \"Enable Responses API websocket transport for this credential.\",\n \"codex_websockets_label\": \"WebSockets (websockets)\",\n \"codex_websockets_hint\": \"Enable Responses API websocket transport for this Codex credential.\",\n \"excluded_models_label\": \"Excluded models (excluded_models)\",\n \"excluded_models_placeholder\": \"Comma or newline separated, e.g. model-a, gpt-5-*, *-preview\",\n \"excluded_models_hint\": \"Saved as an array and normalized by trim/lowercase/dedup/sort.\",\n \"disable_cooling_label\": \"Disable cooling (disable_cooling)\",\n \"disable_cooling_placeholder\": \"e.g. true / false / 1 / 0\",\n \"disable_cooling_hint\": \"Supports booleans, numeric 0/non-0, and strings like true/false/1/0; unparseable values are ignored.\",\n \"using_api_label\": \"Use official API (using_api)\",\n \"using_api_hint\": \"Use the official xAI API when enabled; use Grok CLI chat-proxy when disabled.\",\n \"note_label\": \"Note\",\n \"note_placeholder\": \"Enter a note, e.g.: John's account\",\n \"note_hint\": \"Optional. Used to describe the purpose or owner of this credential; leave empty to omit.\",\n \"note_display\": \"Note\",\n \"headers_label\": \"Custom Headers (headers)\",\n \"headers_placeholder\": \"{\\n \\\"Header-Name\\\": \\\"value\\\"\\n}\",\n \"headers_hint\": \"Enter custom HTTP headers as a JSON object, e.g., {\\\"X-My-Header\\\": \\\"value\\\"}\",\n \"headers_invalid_json\": \"Custom headers must be valid JSON.\",\n \"headers_invalid_object\": \"Custom headers must be a JSON object.\",\n \"headers_invalid_value\": \"Each custom header value must be a string.\",\n \"prefix_proxy_invalid_json\": \"This auth file is not a JSON object, so fields cannot be edited.\",\n \"prefix_proxy_html_challenge\": \"Downloaded content is an HTML challenge page, not an auth JSON object. Re-authenticate or replace this auth file before editing fields.\",\n \"prefix_proxy_saved_success\": \"Updated auth file \\\"{{name}}\\\" successfully\",\n \"quota_refresh_single\": \"Refresh quota\",\n \"quota_refresh_hint\": \"Refresh quota only for this credential\",\n \"quota_refresh_success\": \"Quota refreshed for \\\"{{name}}\\\"\",\n \"quota_refresh_failed\": \"Failed to refresh quota for \\\"{{name}}\\\": {{message}}\"\n },\n \"antigravity_quota\": {\n \"title\": \"Antigravity Quota\",\n \"empty_title\": \"No Antigravity Auth Files\",\n \"empty_desc\": \"Upload an Antigravity credential to view remaining quota.\",\n \"idle\": \"Click here to refresh quota\",\n \"loading\": \"Loading quota...\",\n \"load_failed\": \"Failed to load quota: {{message}}\",\n \"missing_auth_index\": \"Auth file missing auth_index\",\n \"empty_models\": \"No quota data available\",\n \"refresh_button\": \"Refresh Quota\",\n \"fetch_all\": \"Fetch All\"\n },\n \"claude_quota\": {\n \"title\": \"Claude Quota\",\n \"empty_title\": \"No Claude OAuth Files\",\n \"empty_desc\": \"Log in with Claude OAuth to view quota.\",\n \"idle\": \"Click here to refresh quota\",\n \"loading\": \"Loading quota...\",\n \"load_failed\": \"Failed to load quota: {{message}}\",\n \"missing_auth_index\": \"Auth file missing auth_index\",\n \"empty_windows\": \"No quota data available\",\n \"refresh_button\": \"Refresh Quota\",\n \"fetch_all\": \"Fetch All\",\n \"five_hour\": \"5-hour limit\",\n \"seven_day\": \"7-day limit\",\n \"seven_day_oauth_apps\": \"7-day OAuth apps\",\n \"seven_day_opus\": \"7-day Opus\",\n \"seven_day_sonnet\": \"7-day Sonnet\",\n \"seven_day_cowork\": \"7-day Cowork\",\n \"iguana_necktie\": \"Iguana Necktie\",\n \"seven_day_fable\": \"7-day Fable 5\",\n \"extra_usage_label\": \"Extra Usage\",\n \"plan_label\": \"Plan\",\n \"plan_unknown\": \"Unknown\",\n \"plan_free\": \"Free\",\n \"plan_pro\": \"Pro\",\n \"plan_max\": \"Max\",\n \"plan_max5\": \"Max 5x\",\n \"plan_max20\": \"Max 20x\",\n \"plan_team\": \"Team\"\n },\n \"gemini_cli_quota\": {\n \"title\": \"Gemini CLI Quota\",\n \"empty_title\": \"No Gemini CLI Auth Files\",\n \"empty_desc\": \"Upload a Gemini CLI credential to view remaining quota.\",\n \"idle\": \"Click here to refresh quota\",\n \"loading\": \"Loading quota...\",\n \"load_failed\": \"Failed to load quota: {{message}}\",\n \"missing_auth_index\": \"Auth file missing auth_index\",\n \"missing_project_id\": \"Gemini CLI credential missing project ID\",\n \"empty_buckets\": \"No quota data available\",\n \"refresh_button\": \"Refresh Quota\",\n \"fetch_all\": \"Fetch All\",\n \"remaining_amount\": \"Remaining {{count}}\",\n \"tier_label\": \"Tier\",\n \"tier_free\": \"Free\",\n \"tier_legacy\": \"Legacy\",\n \"tier_standard\": \"Standard\",\n \"tier_pro\": \"Pro\",\n \"tier_ultra\": \"Ultra\",\n \"credit_label\": \"Google One AI Credits\",\n \"credit_amount\": \"{{count}} credits\"\n },\n \"kimi_quota\": {\n \"title\": \"Kimi Quota\",\n \"empty_title\": \"No Kimi Auth Files\",\n \"empty_desc\": \"Upload a Kimi credential to view remaining quota.\",\n \"idle\": \"Click here to refresh quota\",\n \"loading\": \"Loading quota...\",\n \"load_failed\": \"Failed to load quota: {{message}}\",\n \"missing_auth_index\": \"Auth file missing auth_index\",\n \"empty_data\": \"No quota data available\",\n \"refresh_button\": \"Refresh Quota\",\n \"fetch_all\": \"Fetch All\",\n \"weekly_limit\": \"Weekly limit\",\n \"limit_window\": \"{{duration}} limit\",\n \"limit_index\": \"Limit #{{index}}\",\n \"reset_hint\": \"resets in {{hint}}\"\n },\n \"xai_quota\": {\n \"title\": \"Grok Quota\",\n \"empty_title\": \"No xAI/Grok Auth Files\",\n \"empty_desc\": \"Log in with xAI OAuth to view Grok quota.\",\n \"idle\": \"Click here to refresh quota\",\n \"loading\": \"Loading quota...\",\n \"load_failed\": \"Failed to load quota: {{message}}\",\n \"missing_auth_index\": \"Auth file missing auth_index\",\n \"empty_data\": \"No quota data available\",\n \"refresh_button\": \"Refresh Quota\",\n \"fetch_all\": \"Fetch All\",\n \"weekly_limit\": \"Weekly limit\",\n \"monthly_credits\": \"Monthly credits\",\n \"used_percent\": \"Used {{percent}}\",\n \"reset_at\": \"Resets {{time}}\",\n \"product_usage\": \"{{product}} usage\",\n \"plan_label\": \"Plan\",\n \"plan_supergrok\": \"SuperGrok\",\n \"plan_supergrok_heavy\": \"SuperGrok Heavy\",\n \"pay_as_you_go_label\": \"Pay as you go\",\n \"pay_as_you_go_enabled\": \"Enabled, cap {{cap}}\",\n \"pay_as_you_go_disabled\": \"Disabled\"\n },\n \"vertex_import\": {\n \"title\": \"Vertex JSON Login\",\n \"description\": \"Upload a Google service account JSON to store it as auth-dir/vertex-<project>.json using the same rules as the CLI vertex-import helper.\",\n \"location_label\": \"Region (optional)\",\n \"location_placeholder\": \"us-central1\",\n \"location_hint\": \"Leave empty to use the default region us-central1.\",\n \"file_label\": \"Service account key JSON\",\n \"file_hint\": \"Only Google Cloud service account key JSON files are accepted.\",\n \"file_placeholder\": \"No file selected\",\n \"choose_file\": \"Choose File\",\n \"import_button\": \"Import Vertex Credential\",\n \"file_required\": \"Select a .json credential file first\",\n \"success\": \"Vertex credential imported successfully\",\n \"result_title\": \"Credential saved\",\n \"result_project\": \"Project ID\",\n \"result_email\": \"Service account\",\n \"result_location\": \"Region\",\n \"result_file\": \"Persisted file\"\n },\n \"oauth_excluded\": {\n \"title\": \"OAuth Model Disablement\",\n \"description\": \"Per-provider model disablement is shown as cards; click a card to edit or delete. Wildcards * are supported and the scope follows the auth file filter.\",\n \"add\": \"Add Disablement\",\n \"add_title\": \"Add provider model disablement\",\n \"edit_title\": \"Edit model disablement for {{provider}}\",\n \"refresh\": \"Refresh\",\n \"refreshing\": \"Refreshing...\",\n \"provider_label\": \"Provider\",\n \"provider_auto\": \"Follow current filter\",\n \"provider_placeholder\": \"e.g. gemini-cli\",\n \"provider_hint\": \"Defaults to the current filter; pick an existing provider or type a new name.\",\n \"models_label\": \"Models to disable\",\n \"models_loading\": \"Loading models...\",\n \"models_unsupported\": \"Current CPA version does not support fetching model lists.\",\n \"models_loaded\": \"{{count}} models loaded. Check the models to disable.\",\n \"no_models_available\": \"No models available for this provider.\",\n \"custom_rule_label\": \"Custom model rule\",\n \"custom_rule_hint\": \"Enter an exact model ID or a wildcard rule such as gpt-*.\",\n \"custom_rule_placeholder\": \"e.g. gpt-* / custom-model\",\n \"custom_rule_add\": \"Add rule\",\n \"custom_rules_label\": \"Configured custom rules\",\n \"custom_rule_remove\": \"Remove {{rule}}\",\n \"save\": \"Save/Update\",\n \"saving\": \"Saving...\",\n \"save_success\": \"Model disablement updated\",\n \"save_failed\": \"Failed to update model disablement\",\n \"delete\": \"Delete Provider\",\n \"delete_confirm\": \"Delete model disablement for {{provider}}?\",\n \"delete_success\": \"Provider model disablement removed\",\n \"delete_failed\": \"Failed to delete model disablement\",\n \"deleting\": \"Deleting...\",\n \"no_models\": \"No disabled models configured\",\n \"model_count\": \"{{count}} models disabled\",\n \"list_empty_all\": \"No provider model disablement yet; click “Add Disablement” to create one.\",\n \"list_empty_filtered\": \"No disabled items in this scope; click “Add Disablement” to add.\",\n \"disconnected\": \"Connect to the server to view model disablement\",\n \"load_failed\": \"Failed to load model disablement\",\n \"provider_required\": \"Please enter a provider first\",\n \"scope_all\": \"Scope: All providers\",\n \"scope_provider\": \"Scope: {{provider}}\",\n \"upgrade_required\": \"Current CPA version does not support OAuth model disablement. Please upgrade.\",\n \"upgrade_required_title\": \"Please upgrade CLI Proxy API\",\n \"upgrade_required_desc\": \"The current server version does not support fetching OAuth model disablement. Please upgrade to the latest CPA (CLI Proxy API) version and try again.\"\n },\n \"oauth_model_alias\": {\n \"title\": \"OAuth Model Aliases\",\n \"add\": \"Add Alias\",\n \"add_title\": \"Add provider model aliases\",\n \"provider_label\": \"Provider\",\n \"provider_placeholder\": \"e.g. gemini-cli / vertex\",\n \"provider_hint\": \"Defaults to the current filter; pick an existing provider or type a new name.\",\n \"model_source_loading\": \"Loading models...\",\n \"model_source_unsupported\": \"The current CPA version does not support fetching model lists (manual input still works).\",\n \"model_source_loaded\": \"{{count}} models loaded. Use the dropdown in 'Source model name', or type custom values. Saving an empty list removes that provider. Enable 'Keep original' to keep the original name while adding the alias.\",\n \"alias_label\": \"Model aliases\",\n \"alias_name_placeholder\": \"Source model name\",\n \"alias_placeholder\": \"Alias (required)\",\n \"duplicate_alias\": \"Each alias must be unique for this provider.\",\n \"alias_fork_label\": \"Keep original\",\n \"add_alias\": \"Add alias\",\n \"save\": \"Save/Update\",\n \"save_success\": \"Model aliases updated\",\n \"save_failed\": \"Failed to update model aliases\",\n \"delete\": \"Delete Provider\",\n \"delete_confirm\": \"Delete model aliases for {{provider}}?\",\n \"delete_link_title\": \"Unlink mapping\",\n \"delete_link_confirm\": \"Unlink mapping from <code>{{sourceModel}}</code> ({{provider}}) to alias <code>{{alias}}</code>?\",\n \"delete_alias_title\": \"Delete Alias\",\n \"delete_alias_confirm\": \"Delete alias <code>{{alias}}</code> and unmap all associated models?\",\n \"delete_success\": \"Model aliases removed\",\n \"delete_failed\": \"Failed to delete model aliases\",\n \"no_models\": \"No model aliases\",\n \"model_count\": \"{{count}} aliases\",\n \"list_empty_all\": \"No model aliases yet—use “Add Alias” to create one.\",\n \"chart_title\": \"All mappings overview\",\n \"diagram_providers\": \"Providers\",\n \"diagram_source_models\": \"Source Models\",\n \"diagram_aliases\": \"Aliases\",\n \"diagram_expand\": \"Expand\",\n \"diagram_collapse\": \"Collapse\",\n \"diagram_add_alias\": \"Add Alias\",\n \"diagram_rename\": \"Rename\",\n \"diagram_rename_alias_title\": \"Rename alias\",\n \"diagram_rename_alias_label\": \"New alias name\",\n \"diagram_rename_placeholder\": \"Enter alias name...\",\n \"diagram_delete_link\": \"Unlink from {{provider}} / {{name}}\",\n \"diagram_delete_alias\": \"Delete alias\",\n \"diagram_please_enter_alias\": \"Please enter an alias name.\",\n \"diagram_alias_exists\": \"This alias already exists.\",\n \"diagram_add_alias_title\": \"Add alias\",\n \"diagram_add_alias_label\": \"Alias name\",\n \"diagram_add_placeholder\": \"Enter new alias name...\",\n \"diagram_rename_btn\": \"Rename\",\n \"diagram_add_btn\": \"Add\",\n \"diagram_settings\": \"Settings\",\n \"diagram_settings_title\": \"Alias settings — {{alias}}\",\n \"diagram_settings_source_title\": \"Source model settings\",\n \"diagram_settings_empty\": \"No mappings for this alias yet.\",\n \"diagram_tap_hint\": \"On touch devices: tap a source model, then tap an alias to link.\",\n \"view_mode\": \"View mode\",\n \"view_mode_diagram\": \"Diagram\",\n \"view_mode_list\": \"List\",\n \"provider_required\": \"Please enter a provider first\",\n \"upgrade_required\": \"This feature requires a newer CLI Proxy API (CPA) version. Please upgrade.\",\n \"upgrade_required_title\": \"Please upgrade CLI Proxy API\",\n \"upgrade_required_desc\": \"The current server does not support the OAuth model aliases API. Please upgrade to the latest CLI Proxy API (CPA) version.\"\n },\n \"auth_login\": {\n \"codex_oauth_title\": \"Codex OAuth\",\n \"codex_oauth_button\": \"Start Codex Login\",\n \"codex_oauth_hint\": \"Login to Codex service through OAuth flow, automatically obtain and save authentication files.\",\n \"codex_oauth_url_label\": \"Authorization URL:\",\n \"codex_open_link\": \"Open Link\",\n \"codex_copy_link\": \"Copy Link\",\n \"codex_oauth_status_waiting\": \"Waiting for authentication...\",\n \"codex_oauth_status_success\": \"Authentication successful!\",\n \"codex_oauth_status_error\": \"Authentication failed:\",\n \"codex_oauth_start_error\": \"Failed to start Codex OAuth:\",\n \"codex_oauth_polling_error\": \"Failed to check authentication status:\",\n \"anthropic_oauth_title\": \"Anthropic OAuth\",\n \"anthropic_oauth_button\": \"Start Anthropic Login\",\n \"anthropic_oauth_hint\": \"Login to Anthropic (Claude) service through OAuth flow, automatically obtain and save authentication files.\",\n \"anthropic_oauth_url_label\": \"Authorization URL:\",\n \"anthropic_open_link\": \"Open Link\",\n \"anthropic_copy_link\": \"Copy Link\",\n \"anthropic_oauth_status_waiting\": \"Waiting for authentication...\",\n \"anthropic_oauth_status_success\": \"Authentication successful!\",\n \"anthropic_oauth_status_error\": \"Authentication failed:\",\n \"anthropic_oauth_start_error\": \"Failed to start Anthropic OAuth:\",\n \"anthropic_oauth_polling_error\": \"Failed to check authentication status:\",\n \"antigravity_oauth_title\": \"Antigravity OAuth\",\n \"antigravity_oauth_button\": \"Start Antigravity Login\",\n \"antigravity_oauth_hint\": \"Login to Antigravity service (Google account) through OAuth flow, automatically obtain and save authentication files.\",\n \"antigravity_oauth_url_label\": \"Authorization URL:\",\n \"antigravity_open_link\": \"Open Link\",\n \"antigravity_copy_link\": \"Copy Link\",\n \"antigravity_oauth_status_waiting\": \"Waiting for authentication...\",\n \"antigravity_oauth_status_success\": \"Authentication successful!\",\n \"antigravity_oauth_status_error\": \"Authentication failed:\",\n \"antigravity_oauth_start_error\": \"Failed to start Antigravity OAuth:\",\n \"antigravity_oauth_polling_error\": \"Failed to check authentication status:\",\n \"gemini_cli_oauth_title\": \"Gemini CLI OAuth\",\n \"gemini_cli_oauth_button\": \"Start Gemini CLI Login\",\n \"gemini_cli_oauth_hint\": \"Login to Google Gemini CLI service through OAuth flow, automatically obtain and save authentication files.\",\n \"gemini_cli_project_id_label\": \"Google Cloud Project ID (Optional):\",\n \"gemini_cli_project_id_placeholder\": \"Leave blank to auto-select first available project\",\n \"gemini_cli_project_id_hint\": \"Optional. If not provided, the system will automatically select the first available project from your account. Enter ALL to fetch all projects.\",\n \"gemini_cli_project_id_required\": \"Please enter a Google Cloud project ID.\",\n \"gemini_cli_oauth_url_label\": \"Authorization URL:\",\n \"gemini_cli_open_link\": \"Open Link\",\n \"gemini_cli_copy_link\": \"Copy Link\",\n \"gemini_cli_oauth_status_waiting\": \"Waiting for authentication...\",\n \"gemini_cli_oauth_status_success\": \"Authentication successful!\",\n \"gemini_cli_oauth_status_error\": \"Authentication failed:\",\n \"gemini_cli_oauth_start_error\": \"Failed to start Gemini CLI OAuth:\",\n \"gemini_cli_oauth_polling_error\": \"Failed to check authentication status:\",\n \"kimi_oauth_title\": \"Kimi OAuth\",\n \"kimi_oauth_button\": \"Start Kimi Login\",\n \"kimi_oauth_hint\": \"Login to Kimi service through OAuth device flow, automatically obtain and save authentication files.\",\n \"kimi_oauth_url_label\": \"Authorization URL:\",\n \"kimi_open_link\": \"Open Link\",\n \"kimi_copy_link\": \"Copy Link\",\n \"kimi_oauth_status_waiting\": \"Waiting for authentication...\",\n \"kimi_oauth_status_success\": \"Authentication successful!\",\n \"kimi_oauth_status_error\": \"Authentication failed:\",\n \"kimi_oauth_start_error\": \"Failed to start Kimi OAuth:\",\n \"kimi_oauth_polling_error\": \"Failed to check authentication status:\",\n \"xai_oauth_title\": \"xAI OAuth\",\n \"xai_oauth_button\": \"Start xAI Login\",\n \"xai_oauth_hint\": \"Login to xAI Grok through OAuth flow, automatically obtain and save authentication files.\",\n \"xai_oauth_url_label\": \"Authorization URL:\",\n \"xai_open_link\": \"Open Link\",\n \"xai_copy_link\": \"Copy Link\",\n \"xai_oauth_status_waiting\": \"Waiting for authentication...\",\n \"xai_oauth_status_success\": \"Authentication successful!\",\n \"xai_oauth_status_error\": \"Authentication failed:\",\n \"xai_oauth_start_error\": \"Failed to start xAI OAuth:\",\n \"xai_oauth_polling_error\": \"Failed to check authentication status:\",\n \"xai_callback_label\": \"Callback URL or code\",\n \"xai_callback_placeholder\": \"Paste the code shown by Grok, or the full callback URL\",\n \"xai_callback_hint\": \"Grok may only show a code on the page. Paste that code directly and the app will submit it as http://127.0.0.1:56121/callback?... automatically.\",\n \"xai_callback_required\": \"Please paste the code shown by Grok or the full callback URL first.\",\n \"xai_callback_state_missing\": \"Missing the state for this xAI login. Start xAI login again, then submit the code.\",\n \"oauth_callback_label\": \"Callback URL\",\n \"oauth_callback_placeholder\": \"http://localhost:1455/auth/callback?code=...&state=...\",\n \"oauth_callback_hint\": \"Remote browser mode: after the provider redirects to http://localhost:..., copy the full URL and submit it here.\",\n \"oauth_callback_button\": \"Submit Callback URL\",\n \"oauth_callback_required\": \"Please paste the full redirect URL first.\",\n \"oauth_callback_success\": \"Callback URL submitted. Continue waiting for authentication.\",\n \"oauth_callback_error\": \"Failed to submit callback URL:\",\n \"oauth_callback_upgrade_hint\": \"Please update CLI Proxy API or check the connection.\",\n \"oauth_callback_status_success\": \"Callback URL submitted, waiting for authentication...\",\n \"oauth_callback_status_error\": \"Callback URL submission failed:\",\n \"missing_state\": \"Unable to retrieve authentication state parameter\",\n \"login_another_account\": \"Log in another account\",\n \"view_auth_files\": \"View auth files\",\n \"iflow_oauth_title\": \"iFlow OAuth\",\n \"iflow_oauth_button\": \"Start iFlow Login\",\n \"iflow_oauth_hint\": \"Login to iFlow service through OAuth flow, automatically obtain and save authentication files.\",\n \"iflow_oauth_url_label\": \"Authorization URL:\",\n \"iflow_open_link\": \"Open Link\",\n \"iflow_copy_link\": \"Copy Link\",\n \"iflow_oauth_status_waiting\": \"Waiting for authentication...\",\n \"iflow_oauth_status_success\": \"Authentication successful!\",\n \"iflow_oauth_status_error\": \"Authentication failed:\",\n \"iflow_oauth_start_error\": \"Failed to start iFlow OAuth:\",\n \"iflow_oauth_polling_error\": \"Failed to check authentication status:\",\n \"remote_access_disabled\": \"This login method is not available for remote access. Please access from localhost.\"\n },\n \"stats\": {\n \"success\": \"Success\",\n \"failure\": \"Failure\"\n },\n \"status_bar\": {\n \"success_short\": \"✓\",\n \"failure_short\": \"✗\",\n \"no_requests\": \"No requests\"\n },\n \"usage_stats\": {\n \"title\": \"Usage Statistics\",\n \"total_requests\": \"Total Requests\",\n \"success_requests\": \"Success Requests\",\n \"failed_requests\": \"Failed Requests\",\n \"total_tokens\": \"Total Tokens\",\n \"cached_tokens\": \"Cached Tokens\",\n \"cache_read_tokens\": \"Cache Read Tokens\",\n \"cache_write_tokens\": \"Cache Write Tokens\",\n \"reasoning_tokens\": \"Reasoning Tokens\",\n \"rpm_30m\": \"RPM\",\n \"tpm_30m\": \"TPM\",\n \"rate_30m\": \"Rate (last 30 min)\",\n \"model_name\": \"Model Name\",\n \"model_price_settings\": \"Model Pricing Settings\",\n \"saved_prices\": \"Saved Prices\",\n \"requests_trend\": \"Request Trends\",\n \"tokens_trend\": \"Token Usage Trends\",\n \"api_details\": \"API Details\",\n \"by_hour\": \"By Hour\",\n \"by_day\": \"By Day\",\n \"range_filter\": \"Time Range\",\n \"range_all\": \"All Time\",\n \"range_1h\": \"Last 1 Hour\",\n \"range_7h\": \"Last 7 Hours\",\n \"range_24h\": \"Last 24 Hours\",\n \"range_7d\": \"Last 7 Days\",\n \"range_30d\": \"Last 30 Days\",\n \"filter_all\": \"All\",\n \"clear_filters\": \"Clear Filters\",\n \"refresh\": \"Refresh\",\n \"export\": \"Export\",\n \"import\": \"Import\",\n \"export_csv\": \"Export CSV\",\n \"export_json\": \"Export JSON\",\n \"export_success\": \"Usage export downloaded\",\n \"import_success\": \"Import complete: added {{added}}, skipped {{skipped}}, total {{total}}, failed {{failed}}\",\n \"import_success_migrated_v1\": \"Import complete: added {{added}}, skipped {{skipped}}, total {{total}}, failed {{failed}}. Token contract migrated from schema v1 to v{{schemaVersion}}.\",\n \"import_invalid\": \"Invalid usage export file\",\n \"import_review_title\": \"Review usage import\",\n \"import_review_intro\": \"Imports are additive. Review this snapshot before merging it into the current Core usage data.\",\n \"import_review_summary\": \"Version {{version}} · {{details}} request details\",\n \"import_review_duplicates\": \"{{count}} potential duplicates inside this file\",\n \"import_review_overlaps\": \"{{count}} potential overlaps with current usage\",\n \"import_review_uncertain_identities\": \"{{count}} details without a stable timestamp were excluded from duplicate and overlap detection\",\n \"import_review_current_unavailable\": \"Current usage was unavailable, so overlap detection could not be completed.\",\n \"import_error_usage_version_unsupported\": \"Unsupported usage export version. Only schema v1 and v2 can be imported.\",\n \"import_error_usage_shape_invalid\": \"Invalid usage export structure or field type.\",\n \"import_error_usage_v1_token_contract_invalid\": \"The schema v1 token contract is invalid and cannot be migrated safely.\",\n \"import_error_usage_v1_cache_semantics_ambiguous\": \"Schema v1 cache semantics are ambiguous. Cached details require uncached_input_tokens for a lossless migration.\",\n \"import_error_usage_v2_token_contract_invalid\": \"Invalid canonical schema v2 token contract.\",\n \"import_error_usage_aggregate_overflow\": \"Import would overflow Core usage aggregates. No usage data was merged.\",\n \"import_review_confirm\": \"Import anyway\",\n \"chart_line_label_1\": \"Line 1\",\n \"chart_line_label_2\": \"Line 2\",\n \"chart_line_label_3\": \"Line 3\",\n \"chart_line_label_4\": \"Line 4\",\n \"chart_line_label_5\": \"Line 5\",\n \"chart_line_label_6\": \"Line 6\",\n \"chart_line_label_7\": \"Line 7\",\n \"chart_line_label_8\": \"Line 8\",\n \"chart_line_label_9\": \"Line 9\",\n \"chart_line_hidden\": \"Hide\",\n \"chart_line_actions_label\": \"Lines to display\",\n \"chart_line_add\": \"Add line\",\n \"chart_line_all\": \"All\",\n \"chart_line_delete\": \"Delete line\",\n \"chart_line_hint\": \"Show up to 9 model lines at once\",\n \"no_data\": \"No Data Available\",\n \"loading_error\": \"Loading Failed\",\n \"api_endpoint\": \"API Endpoint\",\n \"requests_count\": \"Request Count\",\n \"tokens_count\": \"Token Count\",\n \"model_cache_rate\": \"Cache Read Share\",\n \"model_cache_rate_hint\": \"Cache Read Share = Cache Read Tokens / Total Input Tokens. It is shown only when every request in the model statistic has recorded detail; otherwise it is not set.\",\n \"models\": \"Model Statistics\",\n \"success_rate\": \"Success Rate\",\n \"total_cost\": \"Total Cost\",\n \"total_cost_hint\": \"Based on configured model pricing\",\n \"model_price_title\": \"Model Pricing\",\n \"model_price_reset\": \"Clear Prices\",\n \"model_price_model_label\": \"Model\",\n \"model_price_select_placeholder\": \"Choose a model\",\n \"model_price_select_hint\": \"Models come from usage details\",\n \"model_price_prompt\": \"Prompt price\",\n \"model_price_completion\": \"Completion price\",\n \"model_price_cache\": \"Cache read price\",\n \"model_price_cache_write\": \"Cache write price\",\n \"model_price_cache_write_auto\": \"Auto\",\n \"model_price_cache_write_hint\": \"Leave blank to use the current prompt price. Existing Auto entries also follow this default.\",\n \"model_price_invalid\": \"Enter a valid number greater than or equal to 0.\",\n \"model_price_save\": \"Save Price\",\n \"model_price_empty\": \"No model prices set\",\n \"model_price_model\": \"Model\",\n \"model_price_saved\": \"Model price saved\",\n \"model_price_model_required\": \"Please choose a model to set pricing\",\n \"pricing_title\": \"Pricing workspace\",\n \"pricing_subtitle\": \"Estimate API-equivalent USD from the current API catalog, browser-local profile, usage tokens, service tier, and context band.\",\n \"pricing_back\": \"Back to Usage\",\n \"pricing_open\": \"Configure pricing\",\n \"pricing_catalog\": \"Preset catalog\",\n \"pricing_catalog_version\": \"Catalog version\",\n \"pricing_catalog_title\": \"Preset price table\",\n \"pricing_catalog_description\": \"All {{count}} verified preset models remain visible without usage. The catalog was updated on {{asOf}}; every row links to its official source and browser-local custom overrides are excluded.\",\n \"pricing_catalog_unit\": \"USD / 1M tokens\",\n \"pricing_catalog_table_label\": \"Complete preset price table\",\n \"pricing_catalog_context_band\": \"Context band\",\n \"pricing_catalog_short_band\": \"Short context\",\n \"pricing_catalog_long_band\": \"Long context\",\n \"pricing_catalog_short_range\": \"< {{threshold}} input tokens\",\n \"pricing_catalog_long_range\": \"≥ {{threshold}} input tokens · entire request\",\n \"pricing_catalog_all_contexts\": \"All supported contexts\",\n \"pricing_catalog_aliases\": \"Aliases: {{aliases}}\",\n \"pricing_catalog_model_notes\": \"Model notes\",\n \"pricing_catalog_verified_as_of\": \"Verified: {{asOf}}\",\n \"pricing_catalog_unavailable\": \"Unavailable\",\n \"pricing_catalog_fast_explicit_summary\": \"In {{input}} · Cached {{cached}} · Write {{cacheWrite}} · Out {{output}}\",\n \"pricing_source\": \"Official source\",\n \"pricing_api_source\": \"API pricing source\",\n \"pricing_estimate_notice\": \"Local API-equivalent estimates are references, not provider invoices.\",\n \"pricing_browser_notice\": \"The profile is stored only in this browser and can be shared across Core instances opened here.\",\n \"pricing_history_notice\": \"All historical requests are recalculated with the current catalog and profile.\",\n \"pricing_migrated_v2\": \"Legacy v2 prices were preserved as a v3 profile. Matching short-rate overrides can be switched to complete presets after confirmation.\",\n \"pricing_profile_warning\": \"The saved pricing profile contained invalid data. Review the current defaults before saving.\",\n \"pricing_profile_save_failed\": \"Could not save the pricing profile in this browser.\",\n \"pricing_profile_saved\": \"Pricing profile saved\",\n \"pricing_summary\": \"Pricing coverage summary\",\n \"pricing_api_usd_estimate\": \"Local API-equivalent estimate (USD)\",\n \"pricing_api_usd\": \"Local API-equivalent amount\",\n \"pricing_api_request_coverage\": \"Local estimate request coverage\",\n \"pricing_requests_unit\": \"requests\",\n \"pricing_models_metric\": \"Priced models / actual models\",\n \"pricing_request_coverage\": \"Priced request coverage\",\n \"pricing_token_coverage\": \"Priced token coverage\",\n \"pricing_assumed_tier\": \"Assumed-tier requests\",\n \"pricing_assumed_tier_hint\": \"Historical or unknown tiers priced as Std\",\n \"pricing_cost_incomplete\": \"The local estimate is incomplete; unmatched, unsupported, or detail-less usage is excluded.\",\n \"pricing_partial_coverage\": \"Partial local estimate: {{request}}% of requests and {{token}}% of tokens are covered.\",\n \"pricing_entry_title\": \"Local API-equivalent estimate\",\n \"pricing_entry_description\": \"Amounts are calculated entirely in this browser from the catalog, profile, tokens, service tier, and context band.\",\n \"pricing_models_covered\": \"{{priced}} / {{total}} models priced\",\n \"pricing_requests_covered\": \"{{percent}}% request coverage\",\n \"pricing_models_ratio\": \"{{percent}}% model coverage\",\n \"pricing_search\": \"Search actual usage models\",\n \"pricing_filter\": \"Pricing status filter\",\n \"pricing_filter_all\": \"All\",\n \"pricing_filter_preset\": \"Preset\",\n \"pricing_filter_custom\": \"Custom\",\n \"pricing_filter_unmatched\": \"Locally unmatched\",\n \"pricing_filter_anomaly\": \"Anomaly\",\n \"pricing_import_action\": \"Import profile\",\n \"pricing_export_action\": \"Export profile\",\n \"pricing_reset_action\": \"Restore all defaults\",\n \"pricing_export_success\": \"Pricing profile exported\",\n \"pricing_import_title\": \"Import pricing profile\",\n \"pricing_import_confirm\": \"Replace the current browser v3 API pricing profile with this validated file? Usage data is not changed.\",\n \"pricing_import_success\": \"Pricing profile imported\",\n \"pricing_import_invalid\": \"Invalid pricing profile\",\n \"pricing_reset_title\": \"Restore all preset prices\",\n \"pricing_reset_confirm\": \"Clear every v3 API price override and alias? Usage data will remain unchanged.\",\n \"pricing_reset_success\": \"Preset pricing restored\",\n \"pricing_empty_title\": \"No usage models yet\",\n \"pricing_empty_description\": \"The configurator only shows models that exist in real usage. Generate or import usage data first.\",\n \"pricing_standard_short\": \"Standard short\",\n \"pricing_standard_api\": \"API Standard\",\n \"pricing_fast\": \"Fast\",\n \"pricing_fast_policies\": \"Fast policies\",\n \"pricing_fast_policy_title\": \"API Priority and ChatGPT Standard/Fast use separate official multipliers.\",\n \"pricing_api_priority_multiplier\": \"API ×{{multiplier}}\",\n \"pricing_api_priority_multiplier_official\": \"Official API ×{{multiplier}}\",\n \"pricing_api_priority_multiplier_custom\": \"Custom API ×{{multiplier}}\",\n \"pricing_api_priority_explicit_rates\": \"API explicit rates\",\n \"pricing_long_context\": \"Long context\",\n \"pricing_usage\": \"Current usage\",\n \"pricing_no_usage_requests\": \"No usage requests\",\n \"pricing_no_usage_tokens\": \"No usage tokens\",\n \"pricing_matching_presets_notice\": \"Legacy-shaped custom entries matching preset short rates: {{count}}. They still override official Fast and long-context rules.\",\n \"pricing_matching_presets_title\": \"Use complete presets\",\n \"pricing_matching_presets_confirm\": \"Remove only the {{count}} matching overrides so they inherit official Fast and long-context rules? Other custom prices and aliases will remain unchanged.\",\n \"pricing_matching_presets_action\": \"Use complete presets\",\n \"pricing_matching_presets_success\": \"Complete presets applied to {{count}} matching entries\",\n \"pricing_unmatched\": \"No exact match\",\n \"pricing_match_custom\": \"Custom\",\n \"pricing_match_preset\": \"Preset\",\n \"pricing_match_alias\": \"Alias\",\n \"pricing_match_none\": \"Unmatched\",\n \"pricing_anomaly\": \"Needs review\",\n \"pricing_long_unsupported\": \"Fast long context unsupported\",\n \"pricing_fast_configured\": \"Fast configured\",\n \"pricing_long_requests\": \"{{count}} long requests\",\n \"pricing_short_only\": \"Short-context usage\",\n \"pricing_single_rate_card\": \"One API rate card for all supported contexts\",\n \"pricing_no_matches\": \"No models match the current search and filter.\",\n \"pricing_catalog_footer\": \"API catalog includes {{count}} verified models · checked {{asOf}} · USD per 1M tokens.\",\n \"pricing_editor_title\": \"API token pricing editor\",\n \"pricing_editor_domain_notice\": \"This profile affects the local API-equivalent estimate for every matched usage record.\",\n \"pricing_alias\": \"Exact alias target\",\n \"pricing_alias_hint\": \"Map this observed model name to one exact preset or custom model. Alias mode disables direct rate editing.\",\n \"pricing_alias_canonical_hint\": \"This is already an exact preset model, so an alias is not needed.\",\n \"pricing_standard_rates\": \"Standard rates · USD / 1M\",\n \"pricing_fast_rates\": \"Fast rates · USD / 1M\",\n \"pricing_rate_input\": \"Input\",\n \"pricing_rate_cached_input\": \"Cached input\",\n \"pricing_rate_cache_write\": \"Cache write\",\n \"pricing_rate_output\": \"Output\",\n \"pricing_auto\": \"Auto / input rate\",\n \"pricing_fast_mode_none\": \"Not configured\",\n \"pricing_fast_mode_rates\": \"Explicit rates\",\n \"pricing_fast_mode_multiplier\": \"Standard × multiplier\",\n \"pricing_fast_multiplier\": \"Fast multiplier\",\n \"pricing_fast_long_supported\": \"Allow Fast with long context\",\n \"pricing_long_enable\": \"Enable a long-context rate card\",\n \"pricing_long_threshold\": \"Input-token threshold\",\n \"pricing_preview_affected\": \"Affected usage requests\",\n \"pricing_preview_coverage\": \"Local request coverage\",\n \"pricing_preview_cost\": \"Recalculated local estimate\",\n \"pricing_editor_error_rates\": \"Enter valid non-negative rates for every required field.\",\n \"pricing_editor_error_threshold\": \"Enter a positive whole-number long-context threshold.\",\n \"pricing_editor_error_multiplier\": \"Enter a Fast multiplier greater than 0.\",\n \"pricing_editor_error_profile\": \"The alias or rate card conflicts with the pricing profile.\",\n \"pricing_restore_preset\": \"Restore preset\",\n \"pricing_delete_config\": \"Delete configuration\",\n \"pricing_preset_restored\": \"Preset restored\",\n \"pricing_custom_deleted\": \"Custom pricing removed\",\n \"cost_trend\": \"Cost Overview\",\n \"pricing_api_usd_trend\": \"Local API-equivalent estimate trend (USD)\",\n \"cost_axis_label\": \"Cost ($)\",\n \"cost_need_price\": \"Set a model price to view cost stats\",\n \"cost_need_usage\": \"No usage data available to calculate cost\",\n \"cost_no_data\": \"No cost data yet\",\n \"credential_stats\": \"Credential Statistics\",\n \"credential_name\": \"Credential\",\n \"token_breakdown\": \"Token Type Breakdown\",\n \"request_events_title\": \"Request Events\",\n \"request_events_filter_model\": \"Model\",\n \"request_events_filter_source\": \"Source\",\n \"request_events_filter_auth_index\": \"Auth Index\",\n \"request_events_filter_tier\": \"Tier\",\n \"request_events_filter_effort\": \"Effort\",\n \"request_events_filter_cache\": \"Cache Status\",\n \"request_events_numeric_filter\": \"Token value range\",\n \"request_events_numeric_metric\": \"Token metric\",\n \"request_events_numeric_any\": \"Select metric\",\n \"request_events_numeric_min\": \"Minimum\",\n \"request_events_numeric_max\": \"Maximum\",\n \"request_events_numeric_invalid\": \"Enter non-negative whole-number bounds.\",\n \"request_events_numeric_range_invalid\": \"Minimum cannot be greater than maximum.\",\n \"request_events_numeric_help\": \"Choose a Token metric and enter at least one bound. Results change only when you apply the range.\",\n \"request_events_numeric_preview\": \"Preview\",\n \"request_events_numeric_active_label\": \"Token range: {{filter}}\",\n \"request_events_numeric_clear\": \"Clear range\",\n \"request_events_numeric_apply\": \"Apply range\",\n \"request_events_cache_present\": \"Has Cached Tokens\",\n \"request_events_cache_absent\": \"No Cached Tokens\",\n \"request_events_range_page\": \"Follow Page ({{range}})\",\n \"request_events_column_settings\": \"Column Settings\",\n \"request_events_restore_default_columns\": \"Restore Default Columns\",\n \"request_events_timestamp\": \"Timestamp\",\n \"request_events_source\": \"Source\",\n \"request_events_auth_index\": \"Auth Index\",\n \"request_events_tier\": \"Tier\",\n \"request_events_tier_fast\": \"Fast\",\n \"request_events_tier_standard\": \"Std\",\n \"request_events_tier_tooltip_effective\": \"Core confirmed the effective service tier: {{tier}}.\",\n \"request_events_tier_tooltip_response\": \"Upstream reported the service tier: {{tier}}.\",\n \"request_events_tier_tooltip_request\": \"Shown from the requested service tier: {{tier}}; billing may differ.\",\n \"request_events_tier_tooltip_assumed\": \"Historical or unknown tier; estimated as Std.\",\n \"request_events_tier_legacy_unknown\": \"Legacy / Unknown\",\n \"request_events_tier_other\": \"Other: {{tier}}\",\n \"request_events_effort\": \"Effort\",\n \"request_events_effort_legacy_unknown\": \"Legacy / Unknown\",\n \"request_events_result\": \"Result\",\n \"time\": \"Latency\",\n \"avg_time\": \"Avg Latency\",\n \"latency_unit_hint\": \"Durations use backend field {{field}} and are interpreted as {{unit}} before formatting.\",\n \"duration_unit_d\": \"d\",\n \"duration_unit_h\": \"h\",\n \"duration_unit_m\": \"m\",\n \"duration_unit_s\": \"s\",\n \"duration_unit_ms\": \"ms\",\n \"request_events_empty_title\": \"No request events\",\n \"request_events_empty_desc\": \"No request details are available for the selected time range.\",\n \"request_events_no_result_title\": \"No matching events\",\n \"request_events_no_result_desc\": \"Try different filters or clear the current filters.\",\n \"request_events_count\": \"{{count}} events\",\n \"request_events_limit_hint\": \"Showing {{shown}} of {{total}} events to keep rendering responsive.\",\n \"request_events_total_input_tokens\": \"Total Input Tokens\",\n \"request_events_non_cache_read_input_tokens\": \"Non-Cache-Read Input Tokens\",\n \"request_events_non_cache_read_input_tokens_hint\": \"Calculated locally in Panel as Total Input Tokens - Cache Read Tokens, never below 0. This is the cache-rate complement, not normal prompt input. Cache Write Tokens are shown and priced separately.\",\n \"request_events_total_output_tokens\": \"Total Output Tokens\",\n \"request_events_explicit_output_tokens\": \"Explicit Output Tokens\",\n \"request_events_output_tokens_hint\": \"Explicit Output Tokens = Total Output Tokens - Reasoning Tokens, never below 0.\",\n \"request_events_cache_rate\": \"Cache Read Share\",\n \"request_events_cache_rate_hint\": \"Cache Read Share = Cache Read Tokens / Total Input Tokens. Zero and values below 25% are low, 25% up to but not including 60% is moderate, and 60% or above is high. Cache reads above total input are marked as anomalies. Only the Cache Read value is colored by this status; other Token values remain neutral.\",\n \"request_events_cache_rate_low\": \"Low\",\n \"request_events_cache_rate_medium\": \"Moderate\",\n \"request_events_cache_rate_high\": \"High\",\n \"request_events_cache_rate_anomaly\": \"Anomaly\",\n \"request_events_cache_rate_cell_label\": \"{{tokens}} cache-read tokens, {{rate}}, {{tone}}\",\n \"request_events_cache_rate_anomaly_label\": \"Cache-read tokens ({{tokens}}) exceed total input tokens ({{input}}).\",\n \"request_events_table_region\": \"Request events table\",\n \"input_tokens\": \"Input Tokens\",\n \"output_tokens\": \"Output Tokens\",\n \"last_updated\": \"Updated\"\n },\n \"service_health\": {\n \"title\": \"Service Health\",\n \"window\": \"Last 7 days\",\n \"oldest\": \"Oldest\",\n \"newest\": \"Latest\"\n },\n \"logs\": {\n \"title\": \"Logs Viewer\",\n \"runtime_unknown\": \"Current runtime: detecting\",\n \"runtime_cpa\": \"Current runtime: CPA\",\n \"runtime_home\": \"Current runtime: Home\",\n \"refresh_button\": \"Refresh Logs\",\n \"clear_button\": \"Clear Logs\",\n \"fullscreen_button\": \"Full Screen\",\n \"exit_fullscreen_button\": \"Exit Full Screen\",\n \"download_button\": \"Download Logs\",\n \"error_log_button\": \"Select Error Log\",\n \"error_logs_modal_title\": \"Error Request Logs\",\n \"error_logs_description\": \"Pick an error request log file to open or download (only generated when request logging is off).\",\n \"error_logs_home_unavailable\": \"In Home mode, use Log Content for database logs. Error request log files only apply to CPA file logs.\",\n \"error_logs_request_log_enabled\": \"Request logging is enabled, so this list will always be empty. Disable request logging and refresh to view error logs.\",\n \"error_logs_empty\": \"No error request log files found\",\n \"error_logs_load_error\": \"Failed to load error log list\",\n \"error_logs_size\": \"Size\",\n \"error_logs_modified\": \"Last modified\",\n \"error_logs_open\": \"Open\",\n \"error_logs_download\": \"Download\",\n \"error_log_view_title\": \"Error Request Log Details\",\n \"error_log_open_failed\": \"Failed to open error log\",\n \"error_log_empty_content\": \"This error log is empty\",\n \"error_log_copy_success\": \"Error log content copied\",\n \"error_log_download_success\": \"Error log downloaded successfully\",\n \"request_log_download_title\": \"Download Request Log\",\n \"request_log_download_confirm\": \"Download request log for ID {{id}}?\",\n \"request_log_download_success\": \"Request log downloaded successfully\",\n \"empty_title\": \"No Logs Available\",\n \"empty_desc\": \"When \\\"Enable logging to file\\\" is enabled, logs will be displayed here\",\n \"cpa_file_logging_required\": \"The connected runtime is CPA. Log viewing requires logging to file to be enabled first.\",\n \"cpa_file_logging_required_title\": \"File logging is required\",\n \"cpa_file_logging_required_desc\": \"CPA reads this log view from local log files. Enable logging-to-file in the config, then refresh.\",\n \"file_logging_required\": \"This logs endpoint requires logging to file before file logs can be read.\",\n \"file_logging_required_title\": \"File logging is required\",\n \"file_logging_required_desc\": \"This logs endpoint reads local log files. Enable logging-to-file in the config, then refresh.\",\n \"home_clear_unavailable\": \"Home logs come from database queries and cannot be cleared here.\",\n \"log_content\": \"Log Content\",\n \"loading\": \"Loading logs...\",\n \"load_error\": \"Failed to load logs\",\n \"clear_confirm\": \"Are you sure you want to clear all logs? This action cannot be undone!\",\n \"clear_success\": \"Logs cleared successfully\",\n \"download_success\": \"Logs downloaded successfully\",\n \"auto_refresh\": \"Auto Refresh\",\n \"auto_refresh_enabled\": \"Auto refresh enabled\",\n \"auto_refresh_disabled\": \"Auto refresh disabled\",\n \"load_more_hint\": \"Scroll up to load more\",\n \"hidden_lines\": \"Hidden: {{count}} lines\",\n \"loaded_lines\": \"Loaded: {{count}} lines\",\n \"filtered_lines\": \"Filtered: {{count}} lines\",\n \"hide_management_logs\": \"Hide {{prefix}} logs\",\n \"show_raw_logs\": \"Show Raw Logs\",\n \"show_raw_logs_hint\": \"Show original log text for easier multi-line copy\",\n \"search_placeholder\": \"Search logs by content or keyword\",\n \"filter_panel_title\": \"Structured Filters\",\n \"filter_panel_expand\": \"Expand structured filters\",\n \"filter_panel_collapse\": \"Collapse structured filters\",\n \"filter_panel_active_count\": \"{{count}} active\",\n \"filter_method\": \"Method\",\n \"filter_status\": \"Status\",\n \"filter_path\": \"Path\",\n \"filter_path_empty\": \"No path candidates\",\n \"filter_status_2xx\": \"2xx\",\n \"filter_status_3xx\": \"3xx\",\n \"filter_status_4xx\": \"4xx\",\n \"filter_status_5xx\": \"5xx\",\n \"clear_filters\": \"Clear Filters\",\n \"search_empty_title\": \"No matching logs found\",\n \"search_empty_desc\": \"Try a different keyword or clear the filters.\",\n \"double_click_copy_hint\": \"Double-click to copy raw log line\",\n \"copy_success\": \"Log copied to clipboard\",\n \"copy_failed\": \"Copy failed\",\n \"lines\": \"lines\",\n \"removed\": \"Filtered\",\n \"upgrade_required_title\": \"Please Upgrade CLI Proxy API\",\n \"upgrade_required_desc\": \"The current server version does not support the logs viewing feature. Please upgrade to the latest version of CLI Proxy API to use this feature.\"\n },\n \"config_management\": {\n \"title\": \"Config Panel\",\n \"editor_title\": \"Configuration File\",\n \"reload\": \"Reload\",\n \"reload_confirm_message\": \"Reloading will discard your unsaved changes. Do you want to continue?\",\n \"save\": \"Save\",\n \"description\": \"Edit config.yaml via visual editor or source file\",\n \"status_idle\": \"Waiting for action\",\n \"status_loading\": \"Loading configuration...\",\n \"status_loading_short\": \"Loading\",\n \"status_loaded\": \"Configuration loaded\",\n \"status_loaded_short\": \"Loaded\",\n \"status_dirty\": \"Unsaved changes\",\n \"status_dirty_short\": \"Unsaved\",\n \"status_disconnected\": \"Connect to the server to load the configuration\",\n \"status_disconnected_short\": \"Disconnected\",\n \"status_load_failed\": \"Load failed\",\n \"status_load_failed_short\": \"Failed\",\n \"status_saving\": \"Saving configuration...\",\n \"status_saving_short\": \"Saving\",\n \"status_saved\": \"Configuration saved\",\n \"status_save_failed\": \"Save failed\",\n \"save_success\": \"Configuration saved successfully\",\n \"error_yaml_not_supported\": \"Server did not return YAML. Verify the /config.yaml endpoint is available.\",\n \"visual_mode_unavailable\": \"Visual editor unavailable until YAML syntax is fixed\",\n \"visual_mode_unavailable_short\": \"YAML issue\",\n \"validation_blocked_short\": \"Fix errors\",\n \"visual_mode_unavailable_detail\": \"Visual editor is unavailable because the configuration contains invalid YAML: {{message}}\",\n \"visual_mode_save_blocked\": \"Cannot save from visual mode until the YAML syntax is fixed\",\n \"visual_mode_latest_yaml_invalid\": \"The latest server configuration contains invalid YAML. Review it in source mode before saving visual changes: {{message}}\",\n \"editor_placeholder\": \"key: value\",\n \"search_placeholder\": \"Search config...\",\n \"search_button\": \"Search\",\n \"search_no_results\": \"No results\",\n \"search_prev\": \"Previous\",\n \"search_next\": \"Next\",\n \"diff\": {\n \"title\": \"Review Changes\",\n \"current\": \"Current\",\n \"modified\": \"Modified\",\n \"confirm\": \"Confirm Save\",\n \"no_changes\": \"No changes detected\"\n },\n \"tabs\": {\n \"visual\": \"Visual Editor\",\n \"source\": \"Source File Editor\"\n },\n \"visual\": {\n \"notice\": \"Visual mode covers common fields. Review or edit unsupported config.yaml entries in source mode.\",\n \"quick_jump\": \"Quick Jump\",\n \"subsection_navigation\": \"{{section}} groups\",\n \"sections\": {\n \"server\": {\n \"title\": \"Server Configuration\",\n \"description\": \"Basic server settings\",\n \"listener_group_title\": \"Listener\",\n \"host\": \"Host Address\",\n \"port\": \"Port\"\n },\n \"tls\": {\n \"title\": \"TLS/SSL Configuration\",\n \"description\": \"HTTPS secure connection settings\",\n \"enable\": \"Enable TLS\",\n \"enable_desc\": \"Enable HTTPS secure connection\",\n \"cert\": \"Certificate File Path\",\n \"key\": \"Private Key File Path\"\n },\n \"remote\": {\n \"title\": \"Remote Management\",\n \"description\": \"Remote access and control panel settings\",\n \"allow_remote\": \"Allow Remote Access\",\n \"allow_remote_desc\": \"Allow management access from other hosts\",\n \"disable_panel\": \"Disable Control Panel\",\n \"disable_panel_desc\": \"Disable the built-in web control panel\",\n \"disable_auto_update_panel\": \"Disable Panel Auto Updates\",\n \"disable_auto_update_panel_desc\": \"Download the panel when first missing, but never auto-update it from GitHub\",\n \"secret_key\": \"Management Key\",\n \"secret_key_placeholder\": \"Set management key\",\n \"panel_repo\": \"Panel Repository\"\n },\n \"auth\": {\n \"title\": \"Authentication Configuration\",\n \"description\": \"API keys and authentication directory settings\",\n \"group_title\": \"Access & Authentication\",\n \"group_description\": \"Remote management, control-panel access, API keys, and authentication files\",\n \"credentials_title\": \"Authentication Files & API Keys\",\n \"auth_dir\": \"Auth Directory (auth-dir)\",\n \"auth_dir_hint\": \"Directory path for authentication files (supports ~)\"\n },\n \"system\": {\n \"title\": \"System Configuration\",\n \"description\": \"Debug, logging, statistics, and performance settings\",\n \"group_navigation_label\": \"System configuration groups\",\n \"runtime_group_title\": \"Runtime & Operations\",\n \"runtime_group_desc\": \"Core switches, logs, usage collection, and signature handling\",\n \"plugins_group_title\": \"Plugins\",\n \"plugins_group_desc\": \"Runtime enablement, registry sources, and private source auth\",\n \"headers_group_title\": \"Headers & Codex Strategy\",\n \"headers_group_desc\": \"Claude and Codex defaults plus abnormal-reasoning retry behavior\",\n \"network_group_title\": \"Network & Routing\",\n \"network_group_desc\": \"Proxy, retries, affinity, image handling, and endpoint behavior\",\n \"core_controls_title\": \"Core Runtime Controls\",\n \"core_controls_desc\": \"Top-level switches for diagnostics, throughput, and file logging\",\n \"plugin_runtime_title\": \"Plugin Runtime\",\n \"plugin_runtime_desc\": \"Enable or disable dynamic-library plugin loading\",\n \"operations_title\": \"Logs, Usage, and Signature Handling\",\n \"operations_desc\": \"Retention limits, in-memory usage collection, and Antigravity signature behavior\",\n \"debug\": \"Debug Mode\",\n \"debug_desc\": \"Enable verbose debug logging\",\n \"commercial_mode\": \"Commercial Mode\",\n \"commercial_mode_desc\": \"Disable high-overhead middleware to support high concurrency\",\n \"logging_to_file\": \"Log to File\",\n \"logging_to_file_desc\": \"Save logs to files\",\n \"plugins_enabled\": \"Enable Plugin System\",\n \"plugins_enabled_desc\": \"Enable standard dynamic-library plugin loading; individual plugin instances are still managed on the Plugins page\",\n \"plugin_store_sources\": \"Third-party Plugin Sources\",\n \"plugin_store_sources_desc\": \"Append plugin-store registry sources; the built-in official source is always kept\",\n \"plugin_store_sources_label\": \"Plugin source registry URL (plugins.store-sources)\",\n \"plugin_store_sources_placeholder\": \"https://example.com/cliproxy-plugins/registry.json\",\n \"plugin_store_sources_hint\": \"One registry.json URL per row. Empty rows are filtered on save\",\n \"plugin_store_auth\": \"Plugin Store Auth Rules\",\n \"plugin_store_auth_desc\": \"Configure auth headers for private registries, GitHub Release metadata, or artifact downloads\",\n \"plugin_store_auth_hint\": \"Enter environment variable names only, not actual tokens. The backend reads the values from its runtime environment.\",\n \"store_auth_empty\": \"No auth rules are configured. Public plugin sources do not need one.\",\n \"store_auth_rule\": \"Auth rule\",\n \"store_auth_add\": \"Add auth rule\",\n \"store_auth_match\": \"Matching URL prefix\",\n \"store_auth_type\": \"Auth type\",\n \"store_auth_apply_to\": \"Apply to\",\n \"store_auth_apply_to_hint\": \"When nothing is selected, the rule applies to all request types.\",\n \"store_auth_apply_registry\": \"Registry\",\n \"store_auth_apply_metadata\": \"Metadata\",\n \"store_auth_apply_artifact\": \"Artifact\",\n \"store_auth_type_none\": \"None\",\n \"store_auth_type_bearer\": \"Bearer\",\n \"store_auth_type_basic\": \"Basic\",\n \"store_auth_type_header\": \"Custom header\",\n \"store_auth_type_github_token\": \"GitHub token\",\n \"store_auth_token_env\": \"Token env var\",\n \"store_auth_username_env\": \"Username env var\",\n \"store_auth_password_env\": \"Password env var\",\n \"store_auth_header_name\": \"Header name\",\n \"store_auth_header_value_env\": \"Header value env var\",\n \"store_auth_allow_insecure\": \"Allow insecure HTTP URLs\",\n \"logs_max_size\": \"Log File Size Limit (MB)\",\n \"error_logs_max_files\": \"Retained Error Log Files\",\n \"usage_statistics_enabled\": \"Enable In-memory Usage Statistics\",\n \"usage_statistics_enabled_desc\": \"Aggregate request usage statistics in memory\",\n \"redis_usage_retention\": \"Redis Usage Queue Retention (seconds)\",\n \"redis_usage_retention_hint\": \"In-memory retention for RESP LPOP/RPOP usage output, max 3600 seconds\",\n \"antigravity_signature_cache\": \"Enable Antigravity Signature Cache\",\n \"antigravity_signature_cache_desc\": \"Prefer and validate cached thinking-block signatures\",\n \"antigravity_signature_strict\": \"Strict Bypass Signature Validation\",\n \"antigravity_signature_strict_desc\": \"Only applies when the signature cache is disabled; validates the full Claude protobuf tree\"\n },\n \"headers\": {\n \"title\": \"Header Defaults\",\n \"description\": \"Default headers for Claude and Codex OAuth requests when the client omits them\",\n \"claude_title\": \"Claude Header Defaults\",\n \"codex_title\": \"Codex Header Defaults\",\n \"user_agent\": \"User-Agent\",\n \"package_version\": \"Package Version\",\n \"runtime_version\": \"Runtime Version\",\n \"os\": \"OS\",\n \"arch\": \"Arch\",\n \"timeout\": \"Timeout\",\n \"stabilize_device\": \"Stabilize Device Profile\",\n \"stabilize_device_desc\": \"Pin OS/Arch and stabilize the software fingerprint per credential/API key\",\n \"beta_features\": \"Beta Features\",\n \"codex_identity_confuse\": \"Codex Identity Confuse\",\n \"codex_identity_confuse_desc\": \"When fill-first routing or session affinity is used, remap Codex prompt_cache_key and installation identity for the selected auth\",\n \"codex_abnormal_reasoning_retry_title\": \"Codex Abnormal Reasoning Retry\",\n \"codex_abnormal_reasoning_retry_desc\": \"Manage the Core LTS retry guard for Codex OAuth responses with abnormal reasoning token counts\",\n \"codex_abnormal_reasoning_retry_summary_title\": \"Current Strategy Overview\",\n \"codex_abnormal_reasoning_retry_summary_desc\": \"Switches, retry action, and delivery behavior are separated so the effective guard state is easier to verify.\",\n \"codex_abnormal_reasoning_retry_summary_action\": \"Matched action\",\n \"codex_abnormal_reasoning_retry_summary_stream_buffer\": \"Stream buffer\",\n \"codex_abnormal_reasoning_retry_summary_hedged\": \"Hedged mode\",\n \"codex_abnormal_reasoning_retry_summary_distinct_auth\": \"Distinct auth\",\n \"codex_abnormal_reasoning_retry_summary_on\": \"Enabled\",\n \"codex_abnormal_reasoning_retry_summary_off\": \"Disabled\",\n \"codex_abnormal_reasoning_retry_group_switches_title\": \"Base Switches\",\n \"codex_abnormal_reasoning_retry_group_switches_desc\": \"Decide whether the strategy is active, whether streaming output is buffered, and whether a second request lane can be used.\",\n \"codex_abnormal_reasoning_retry_group_retry_title\": \"Retry Scheduling\",\n \"codex_abnormal_reasoning_retry_group_retry_desc\": \"Configure the matched action, buffer cap, second-lane delay, and hedged return mode.\",\n \"codex_abnormal_reasoning_retry_group_match_title\": \"Match Conditions\",\n \"codex_abnormal_reasoning_retry_group_match_desc\": \"Limit matching by model, reasoning effort, abnormal reasoning token count, and retry budget.\",\n \"codex_abnormal_reasoning_retry_group_delivery_title\": \"Delivery And Usage\",\n \"codex_abnormal_reasoning_retry_group_delivery_desc\": \"Control exhausted behavior, client-visible usage, and candidate response selection.\",\n \"codex_abnormal_reasoning_retry_group_scope_title\": \"Auth Scope\",\n \"codex_abnormal_reasoning_retry_group_scope_desc\": \"Restrict the strategy by auth kind or auth ID so unrelated credentials are not affected.\",\n \"codex_abnormal_reasoning_retry_enabled\": \"Enable Abnormal Reasoning Retry\",\n \"codex_abnormal_reasoning_retry_enabled_desc\": \"Shortcut for retry/disabled; use Action for observe-only mode\",\n \"codex_abnormal_reasoning_retry_action_label\": \"Retry action\",\n \"codex_abnormal_reasoning_retry_action_hint\": \"retry discards matching responses and retries; observe-only records matches without retry; disabled leaves responses unchanged\",\n \"codex_abnormal_reasoning_retry_action_retry\": \"Retry\",\n \"codex_abnormal_reasoning_retry_action_observe_only\": \"Observe only\",\n \"codex_abnormal_reasoning_retry_action_disabled\": \"Disabled\",\n \"codex_abnormal_reasoning_retry_action_retry_desc\": \"Matching responses are discarded and retried until the retry limit is reached.\",\n \"codex_abnormal_reasoning_retry_action_observe_only_desc\": \"Matches are recorded only. The response delivered to the client is not changed.\",\n \"codex_abnormal_reasoning_retry_action_disabled_desc\": \"The abnormal reasoning guard is disabled. Matching conditions do not affect delivery.\",\n \"codex_abnormal_reasoning_retry_stream_buffer\": \"Buffer Streaming Responses\",\n \"codex_abnormal_reasoning_retry_stream_buffer_desc\": \"Hold streaming chunks until response.completed so matching abnormal responses can be retried transparently\",\n \"codex_abnormal_reasoning_retry_stream_buffer_max_bytes_label\": \"Stream buffer max bytes\",\n \"codex_abnormal_reasoning_retry_stream_buffer_max_bytes_hint\": \"Defaults to 16 MiB (16777216); 0 also uses the safe default. Exceeding the limit fails the stream closed with 502 and never passes through partial output\",\n \"codex_abnormal_reasoning_retry_hedged_retry_enabled\": \"Enable Hedged Retry\",\n \"codex_abnormal_reasoning_retry_hedged_retry_enabled_desc\": \"After the first abnormal response is discarded, launch a delayed second lane to reduce tail latency\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_label\": \"Hedged retry mode\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_hint\": \"Quality waits for dispatched lanes; speed returns the first successful lane. Delivery policy selects among completed candidates.\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_quality\": \"Quality (default)\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_speed\": \"Speed\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_quality_desc\": \"Wait for dispatched lanes and choose the steadier result using the delivery policy.\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_speed_desc\": \"Return as soon as the first deliverable lane succeeds, trading some certainty for lower latency.\",\n \"codex_abnormal_reasoning_retry_hedge_delay_ms_label\": \"Hedge delay (ms)\",\n \"codex_abnormal_reasoning_retry_hedge_delay_ms_hint\": \"Delay before starting the second lane after an abnormal attempt has triggered retry\",\n \"codex_abnormal_reasoning_retry_require_distinct_auth\": \"Require Distinct Auth\",\n \"codex_abnormal_reasoning_retry_require_distinct_auth_desc\": \"Prefer a different auth ID for the hedged second lane\",\n \"codex_abnormal_reasoning_retry_model_contains_label\": \"Model contains\",\n \"codex_abnormal_reasoning_retry_model_contains_hint\": \"Matches when the requested or resolved upstream model contains any value\",\n \"codex_abnormal_reasoning_retry_reasoning_efforts_label\": \"Reasoning efforts\",\n \"codex_abnormal_reasoning_retry_reasoning_efforts_hint\": \"Optional translated Codex reasoning.effort values such as high or xhigh; leave empty to match any effort\",\n \"codex_abnormal_reasoning_retry_reasoning_tokens_label\": \"Reasoning tokens\",\n \"codex_abnormal_reasoning_retry_reasoning_tokens_hint\": \"Non-negative integer token counts that trigger retry\",\n \"codex_abnormal_reasoning_retry_max_retries_label\": \"Max abnormal retries\",\n \"codex_abnormal_reasoning_retry_max_retries_hint\": \"Maximum extra retries caused by abnormal reasoning detection; 0 records the failed attempt and returns 502 without retry\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_label\": \"Exhausted behavior\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_hint\": \"Choose what Core returns after abnormal retry attempts exceed the max retries limit\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_error\": \"Return 502 error\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_pass_through\": \"Pass through abnormal response\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_error_desc\": \"After the retry limit is reached, return 502 instead of delivering the abnormal response.\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_pass_through_desc\": \"After the retry limit is reached, deliver the last abnormal response so the request can still complete.\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_label\": \"Client usage aggregation\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_hint\": \"Controls client-visible token aggregation only; Management usage keeps per-attempt accounting.\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_delivered_only\": \"Delivered only (default)\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum\": \"Sum fields\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum_with_delivered_total\": \"Sum with delivered total\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_delivered_only_desc\": \"The client sees usage from the delivered response only. Management usage still records every real attempt.\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum_desc\": \"The client sees usage fields summed across all attempts.\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum_with_delivered_total_desc\": \"Detail fields are summed, but total remains from the delivered response for clients that read only total.\",\n \"codex_abnormal_reasoning_retry_delivery_policy_label\": \"Delivery policy\",\n \"codex_abnormal_reasoning_retry_delivery_policy_hint\": \"Used only when candidates include both special and non-special responses\",\n \"codex_abnormal_reasoning_retry_delivery_policy_best_non_special\": \"Best non-special (default)\",\n \"codex_abnormal_reasoning_retry_delivery_policy_first_non_special\": \"First non-special\",\n \"codex_abnormal_reasoning_retry_delivery_policy_max_output\": \"Max output\",\n \"codex_abnormal_reasoning_retry_delivery_policy_latest\": \"Latest\",\n \"codex_abnormal_reasoning_retry_delivery_policy_best_non_special_desc\": \"Deliver the highest-quality normal response.\",\n \"codex_abnormal_reasoning_retry_delivery_policy_first_non_special_desc\": \"Deliver the first successful normal response to reduce waiting.\",\n \"codex_abnormal_reasoning_retry_delivery_policy_max_output_desc\": \"Deliver the candidate with the largest output.\",\n \"codex_abnormal_reasoning_retry_delivery_policy_latest_desc\": \"Deliver the latest completed candidate.\",\n \"codex_abnormal_reasoning_retry_fallback_policy_label\": \"Fallback policy\",\n \"codex_abnormal_reasoning_retry_fallback_policy_hint\": \"Used when every candidate is special after retries are exhausted\",\n \"codex_abnormal_reasoning_retry_fallback_policy_best_special\": \"Best special (default)\",\n \"codex_abnormal_reasoning_retry_fallback_policy_max_output_special\": \"Max output special\",\n \"codex_abnormal_reasoning_retry_fallback_policy_latest_special\": \"Latest special\",\n \"codex_abnormal_reasoning_retry_fallback_policy_best_special_desc\": \"When only abnormal candidates remain, choose the highest-quality abnormal response.\",\n \"codex_abnormal_reasoning_retry_fallback_policy_max_output_special_desc\": \"When only abnormal candidates remain, choose the abnormal response with the largest output.\",\n \"codex_abnormal_reasoning_retry_fallback_policy_latest_special_desc\": \"When only abnormal candidates remain, choose the latest completed abnormal response.\",\n \"codex_abnormal_reasoning_retry_auth_kinds_label\": \"Auth kinds\",\n \"codex_abnormal_reasoning_retry_auth_kinds_hint\": \"Normalized auth kind whitelist; default OAuth does not match API keys\",\n \"codex_abnormal_reasoning_retry_auth_ids_label\": \"Auth IDs\",\n \"codex_abnormal_reasoning_retry_auth_ids_hint\": \"Optional exact auth ID whitelist; leave empty to match all IDs\"\n },\n \"network\": {\n \"title\": \"Network Configuration\",\n \"description\": \"Proxy, retry, and routing settings\",\n \"proxy_url\": \"Proxy URL\",\n \"request_retry\": \"Request Retry Count\",\n \"max_retry_credentials\": \"Max Retry Credentials\",\n \"max_retry_credentials_hint\": \"Leave empty to keep it unset. Set to 0 to preserve legacy behavior and try all available credentials.\",\n \"max_retry_interval\": \"Max Retry Interval (seconds)\",\n \"transient_error_cooldown_seconds\": \"Transient Error Cooldown (seconds)\",\n \"transient_error_cooldown_seconds_hint\": \"Leave empty to use the Core default. 0 keeps the legacy 60-second cooldown; negative values disable transient error cooldowns.\",\n \"auth_auto_refresh_workers\": \"Auth Auto-refresh Workers\",\n \"auth_auto_refresh_workers_hint\": \"When greater than 0, overrides the default worker count (16)\",\n \"disable_image_generation\": \"Disable Image Generation\",\n \"disable_image_generation_hint\": \"false enables automatic image-tool injection; true disables image generation everywhere; chat removes image_generation from non-image endpoints; passthrough leaves the client's tool list unchanged on non-image endpoints (image endpoints behave like chat)\",\n \"disable_image_generation_false\": \"false (enabled)\",\n \"disable_image_generation_true\": \"true (disabled everywhere)\",\n \"disable_image_generation_chat\": \"chat (remove image tool from non-image endpoints)\",\n \"disable_image_generation_passthrough\": \"passthrough (preserve client tools)\",\n \"gpt_image_2_base_model\": \"GPT Image 2 Base Model\",\n \"gpt_image_2_base_model_hint\": \"Mainline model used when proxying gpt-image-2 image requests; backend uses its default when empty or invalid\",\n \"routing_strategy\": \"Routing Strategy\",\n \"routing_strategy_hint\": \"Select credential selection strategy\",\n \"strategy_round_robin\": \"Round Robin\",\n \"strategy_fill_first\": \"Fill First\",\n \"session_affinity_ttl\": \"Session Affinity TTL\",\n \"force_model_prefix\": \"Force Model Prefix\",\n \"force_model_prefix_desc\": \"Unprefixed model requests only use credentials without prefix\",\n \"passthrough_headers\": \"Pass Through Upstream Headers\",\n \"passthrough_headers_desc\": \"Forward filtered upstream response headers to downstream clients\",\n \"disable_cooling\": \"Disable Cooling\",\n \"disable_cooling_desc\": \"Globally disable auth/model cooldown windows after failures\",\n \"session_affinity\": \"Session Affinity Routing\",\n \"ws_auth\": \"WebSocket Authentication\",\n \"ws_auth_desc\": \"Enable WebSocket authentication (/v1/ws)\",\n \"enable_gemini_cli_endpoint\": \"Enable Gemini CLI Internal Endpoint\",\n \"enable_gemini_cli_endpoint_desc\": \"Enable /v1internal:* compatibility endpoints\"\n },\n \"quota\": {\n \"title\": \"Quota Fallback\",\n \"description\": \"Fallback strategy when quota is exceeded\",\n \"switch_project\": \"Switch Project\",\n \"switch_project_desc\": \"Automatically switch to another project when quota is exceeded\",\n \"switch_preview_model\": \"Switch to Preview Model\",\n \"switch_preview_model_desc\": \"Switch to preview model version when quota is exceeded\",\n \"antigravity_credits\": \"Use Antigravity Credits\"\n },\n \"streaming\": {\n \"title\": \"Streaming Configuration\",\n \"description\": \"Keepalive and bootstrap retry settings\",\n \"keepalive_seconds\": \"Keepalive Seconds\",\n \"keepalive_hint\": \"Set to 0 or leave empty to disable keepalive\",\n \"bootstrap_retries\": \"Bootstrap Retries\",\n \"bootstrap_hint\": \"Number of retries during stream startup (before first byte)\",\n \"nonstream_keepalive\": \"Non-stream Keepalive Interval (seconds)\",\n \"nonstream_keepalive_hint\": \"Send blank lines every N seconds for non-streaming responses to prevent idle timeout, set to 0 or leave empty to disable\",\n \"disabled\": \"Disabled\"\n },\n \"payload\": {\n \"title\": \"Payload Configuration\",\n \"description\": \"Default values, raw JSON rules, override rules, and filter rules\",\n \"default_rules\": \"Default Rules\",\n \"default_rules_desc\": \"Use these default values when parameters are not specified in the request\",\n \"default_raw_rules\": \"Default Raw Rules\",\n \"default_raw_rules_desc\": \"When parameters are missing, write these values as raw JSON fragments such as true, 123, \\\"high\\\", or {\\\"type\\\":\\\"object\\\"}\",\n \"override_rules\": \"Override Rules\",\n \"override_rules_desc\": \"Force override parameter values in the request\",\n \"override_raw_rules\": \"Override Raw Rules\",\n \"override_raw_rules_desc\": \"Always overwrite parameter values as raw JSON fragments, useful for response_format, schemas, and other complex fields\",\n \"filter_rules\": \"Filter Rules\",\n \"filter_rules_desc\": \"Pre-filter upstream request body via JSON Path, automatically remove non-compliant/redundant parameters (Request Sanitization)\"\n }\n },\n \"api_keys\": {\n \"label\": \"API Keys List (api-keys)\",\n \"add\": \"Add API Key\",\n \"generate\": \"Generate\",\n \"empty\": \"No API keys\",\n \"hint\": \"Each entry represents an API key (consistent with 'API Key Management' page style)\",\n \"edit_title\": \"Edit API Key\",\n \"add_title\": \"Add API Key\",\n \"input_label\": \"API Key\",\n \"input_placeholder\": \"Paste your API key\",\n \"input_hint\": \"This only modifies the local config file content, it will not sync to the API Key Management interface\",\n \"error_empty\": \"Please enter an API key\",\n \"error_invalid\": \"API key contains invalid characters\"\n },\n \"payload_rules\": {\n \"rule\": \"Rule\",\n \"models\": \"Applicable Models\",\n \"model_name\": \"Model Name\",\n \"model_scope\": \"Model Scope\",\n \"scope_any\": \"Any (current behavior)\",\n \"scope_requested\": \"Requested model\",\n \"scope_upstream\": \"Upstream model\",\n \"scope_custom\": \"Custom: {{scope}}\",\n \"provider_type\": \"Provider Type\",\n \"add_model\": \"Add Model\",\n \"params\": \"Parameter Settings\",\n \"remove_params\": \"Remove Parameters\",\n \"json_path\": \"JSON Path (e.g., temperature)\",\n \"json_path_filter\": \"JSON Path (gjson/sjson), e.g., generationConfig.thinkingConfig.thinkingBudget\",\n \"param_type\": \"Parameter Type\",\n \"param_value\": \"Parameter Value\",\n \"add_param\": \"Add Parameter\",\n \"no_rules\": \"No rules\",\n \"add_rule\": \"Add Rule\",\n \"provider_default\": \"Default\",\n \"provider_openai\": \"OpenAI\",\n \"provider_openai_response\": \"OpenAI Response\",\n \"provider_responses\": \"Responses\",\n \"provider_gemini\": \"Gemini\",\n \"provider_claude\": \"Claude\",\n \"provider_codex\": \"Codex\",\n \"provider_antigravity\": \"Antigravity\",\n \"advanced\": \"Advanced\",\n \"hide_advanced\": \"Hide Advanced\",\n \"from_protocol\": \"Source Protocol (from-protocol)\",\n \"headers\": \"Request Header Matches\",\n \"header_name\": \"Header Name\",\n \"header_value\": \"Header Value\",\n \"add_header\": \"Add Header\",\n \"match\": \"Required Matches (match)\",\n \"notMatch\": \"Forbidden Matches (not-match)\",\n \"exist\": \"Required Paths (exist)\",\n \"notExist\": \"Forbidden Paths (not-exist)\",\n \"condition_path\": \"Match Path\",\n \"condition_value\": \"Match Value\",\n \"add_condition\": \"Add Condition\",\n \"value_type_string\": \"String\",\n \"value_type_number\": \"Number\",\n \"value_type_boolean\": \"Boolean\",\n \"value_type_json\": \"JSON\",\n \"value_string\": \"String value\",\n \"value_number\": \"Number value (e.g., 0.7)\",\n \"value_boolean\": \"true or false\",\n \"value_json\": \"JSON value\",\n \"value_raw_json\": \"Raw JSON fragment, e.g. true, 123, \\\"high\\\", or {\\\"type\\\":\\\"object\\\"}\",\n \"value_default\": \"Value\",\n \"boolean_true\": \"true\",\n \"boolean_false\": \"false\"\n },\n \"validation\": {\n \"validation_blocked\": \"Fix validation errors before saving\",\n \"port_range\": \"Enter a valid port between 1 and 65535\",\n \"non_negative_integer\": \"Enter a non-negative whole number\",\n \"integer\": \"Enter a whole number\",\n \"integer_range_1_3600\": \"Enter a whole number between 1 and 3600\",\n \"payload_invalid_number\": \"Enter a valid number\",\n \"payload_invalid_boolean\": \"Choose true or false\",\n \"payload_invalid_json\": \"Enter valid JSON\"\n },\n \"common\": {\n \"edit\": \"Edit\",\n \"delete\": \"Delete\",\n \"cancel\": \"Cancel\",\n \"update\": \"Update\",\n \"add\": \"Add\"\n }\n }\n },\n \"quota_management\": {\n \"title\": \"Quota Management\",\n \"description\": \"Monitor OAuth quota status for Antigravity, Codex, and Gemini CLI credentials.\",\n \"refresh_files\": \"Refresh auth files\",\n \"refresh_files_and_quota\": \"Refresh files & quota\",\n \"refresh_all_credentials\": \"Refresh all credentials\",\n \"card_idle_hint\": \"Use the top \\\"Refresh all credentials\\\" button to fetch the latest quota data.\"\n },\n \"plugin_management\": {\n \"title\": \"Plugin Management\",\n \"description\": \"Review discovered and registered plugins, then manage instance toggles, config fields, and resource links.\",\n \"refresh\": \"Refresh\",\n \"load_failed\": \"Failed to load plugins\",\n \"config_load_failed\": \"Failed to read plugin config\",\n \"config_not_found\": \"Unable to read plugin config because the backend could not find this plugin.\",\n \"unsupported_backend\": \"The current backend does not expose the plugin management API. Use a newer backend build that includes plugin management endpoints, then restart the service.\",\n \"runtime_unavailable_title\": \"Plugin runtime unavailable\",\n \"runtime_unavailable_desc\": \"plugins.enabled is true, but the server reports x-cpa-support-plugin: 0. The current binary does not include plugin runtime support, so plugin management and store actions remain locked. Deploy a plugin-capable build for the current platform and restart the backend. On Linux this commonly requires CGO and a compatible libc. Disable plugins.enabled if plugins are not intended.\",\n \"runtime_probe_failed_desc\": \"plugins.enabled is true, but the Panel could not verify plugin runtime support from either x-cpa-support-plugin or the plugin API. Plugin actions remain locked. Check the backend build and reverse-proxy/CORS header exposure, then reconnect.\",\n \"runtime_unavailable_action\": \"Review configuration\",\n \"global_status\": \"Global status\",\n \"global_enabled\": \"Enabled\",\n \"global_disabled\": \"Disabled\",\n \"global_disabled_hint\": \"plugins.enabled is false, so enabled plugin instances will not become effective.\",\n \"plugins_dir\": \"Plugin directory\",\n \"discovered\": \"Discovered\",\n \"effective\": \"Effective\",\n \"search_placeholder\": \"Search plugin ID, name, author, or resource...\",\n \"search_label\": \"Search plugins\",\n \"no_plugins\": \"No plugins\",\n \"no_plugins_desc\": \"No plugins were found in the plugin directory or runtime registry.\",\n \"configured\": \"Configured\",\n \"not_configured\": \"Not configured\",\n \"registered\": \"Registered\",\n \"not_registered\": \"Not registered\",\n \"oauth\": \"OAuth\",\n \"status_effective\": \"Effective\",\n \"status_inactive\": \"Inactive\",\n \"version_label\": \"Version\",\n \"author_label\": \"Author\",\n \"path_label\": \"Path\",\n \"edit_config\": \"Edit config\",\n \"open_resource\": \"Open resource\",\n \"open_repository\": \"Open repository\",\n \"config_title\": \"Configure {{name}}\",\n \"base_settings\": \"Base settings\",\n \"enabled\": \"Enabled\",\n \"enabled_hint\": \"Controls the enabled field for this plugin instance under plugins.configs.\",\n \"priority\": \"Priority\",\n \"config_fields\": \"Config fields\",\n \"no_config_fields\": \"This plugin does not declare visual config fields.\",\n \"select_placeholder\": \"Select\",\n \"array_item_placeholder\": \"Enter array item\",\n \"add_array_item\": \"Add array item\",\n \"remove_array_item\": \"Remove array item\",\n \"delete_plugin\": \"Delete\",\n \"delete_confirm_title\": \"Delete plugin\",\n \"delete_confirm_message\": \"Delete {{name}} ({{id}})? This removes the local plugin file and saved config.\",\n \"delete_success\": \"Plugin deleted\",\n \"delete_failed\": \"Failed to delete plugin\",\n \"delete_restart_required\": \"The loaded plugin cannot be removed until the backend restarts.\",\n \"toggle_success\": \"Plugin status updated\",\n \"toggle_failed\": \"Failed to update plugin status\",\n \"runtime_pending\": \"Plugin change was saved, but the runtime state is still pending. Refresh later or check backend logs.\",\n \"save_success\": \"Plugin config saved\",\n \"save_failed\": \"Failed to save plugin config\",\n \"validation_failed\": \"Fix plugin config form errors first\",\n \"invalid_priority\": \"Enter an integer priority\",\n \"invalid_number\": \"Enter a valid number\",\n \"invalid_integer\": \"Enter a valid integer\",\n \"invalid_json\": \"Enter valid JSON\",\n \"expected_array\": \"Enter a JSON array\",\n \"expected_object\": \"Enter a JSON object\",\n \"invalid_enum\": \"Choose one of the declared enum values\"\n },\n \"plugin_store\": {\n \"title\": \"Plugin Store\",\n \"description\": \"Browse the plugin registry, then install or update plugins for the current backend.\",\n \"description_show_more\": \"Show more\",\n \"description_show_less\": \"Show less\",\n \"source_name\": \"Source: {{source}}\",\n \"cli_proxy_api_source\": \"CLIProxyAPI source\",\n \"refresh\": \"Refresh\",\n \"retry\": \"Retry\",\n \"load_failed\": \"Failed to load the plugin store\",\n \"unsupported_backend\": \"The current backend does not expose the plugin store API. Use a newer backend build that includes plugin store endpoints, then restart the service.\",\n \"registry_failed\": \"Failed to reach the plugin registry\",\n \"global_status\": \"Global status\",\n \"global_enabled\": \"Enabled\",\n \"global_disabled\": \"Disabled\",\n \"global_disabled_hint\": \"plugins.enabled is false, so installed plugins will not become effective.\",\n \"plugins_dir\": \"Plugin directory\",\n \"stat_available\": \"Available\",\n \"search_placeholder\": \"Search plugin ID, name, author, or tag...\",\n \"search_label\": \"Search plugin store\",\n \"filter_label\": \"Filter by install status\",\n \"filter_all\": \"All\",\n \"filter_installed\": \"Installed\",\n \"filter_not_installed\": \"Not installed\",\n \"filter_updates\": \"Updates\",\n \"badge_installed\": \"Installed\",\n \"badge_update\": \"Update available\",\n \"badge_effective\": \"Effective\",\n \"version_arrow\": \"v{{from}} → v{{to}}\",\n \"install_type\": \"Install: {{type}}\",\n \"platforms\": \"Platforms: {{platforms}}\",\n \"auth_required\": \"Auth required\",\n \"auth_configured\": \"Auth configured\",\n \"auth_required_hint\": \"Configure plugins.store-auth before installing from this source or artifact URL\",\n \"source_errors_title\": \"Some plugin sources failed to load\",\n \"install\": \"Install\",\n \"update\": \"Update\",\n \"manage\": \"Manage\",\n \"install_confirm_title\": \"Install plugin\",\n \"install_confirm_message\": \"Download {{target}} from the plugin registry and install it into the local plugin directory?\",\n \"update_confirm_title\": \"Update plugin\",\n \"update_confirm_message\": \"Download and install {{target}}?\",\n \"install_version_label\": \"Version\",\n \"install_version_latest\": \"latest\",\n \"install_version_latest_mode\": \"Latest stable\",\n \"install_version_latest_hint\": \"Resolved by the backend during install. Current listed version: {{version}}.\",\n \"install_version_release_mode\": \"Choose release\",\n \"install_version_release_hint\": \"Read installable tags from GitHub Releases.\",\n \"install_version_manual_mode\": \"Manual release tag\",\n \"install_version_manual_hint\": \"Use only when automatic release loading is unavailable.\",\n \"install_versions_loading\": \"Loading GitHub Releases...\",\n \"install_versions_load_failed\": \"Failed to load release versions\",\n \"install_version_non_github\": \"This plugin repository is not a GitHub repository\",\n \"install_versions_empty\": \"No selectable releases were found.\",\n \"install_versions_only_prerelease\": \"Only prerelease versions are available. Show prereleases to choose one.\",\n \"install_version_release_select\": \"Choose release version\",\n \"install_version_release_placeholder\": \"Choose release version\",\n \"install_version_prerelease_badge\": \"prerelease\",\n \"install_version_assets_count\": \"{{count}} assets\",\n \"install_version_show_prerelease\": \"Show prerelease versions\",\n \"install_version_manual_placeholder\": \"For example v0.1.4\",\n \"install_version_manual_error\": \"Release tags can only contain letters, numbers, dots, underscores, plus signs, and hyphens; spaces and slashes are not allowed.\",\n \"install_version_current_selected\": \"{{version}} is already installed. Choose another version.\",\n \"install_version_releases_link\": \"View GitHub Releases\",\n \"install_success\": \"Plugin installed\",\n \"update_success\": \"Plugin updated\",\n \"install_failed\": \"Failed to install plugin\",\n \"update_failed\": \"Failed to update plugin\",\n \"status_pending\": \"Plugin files were updated, but the local status has not refreshed yet. Refresh later or check backend logs.\",\n \"registration_pending\": \"Plugin files were updated, but registration is still pending. Refresh later or check backend logs.\",\n \"restart_required_notice\": \"Restart the service to load the new plugin version\",\n \"restart_required_banner\": \"Restart the service to apply the new version of: {{plugins}}\",\n \"open_repository\": \"Open repository\",\n \"open_homepage\": \"Open homepage\",\n \"no_plugins\": \"Registry is empty\",\n \"no_plugins_desc\": \"The plugin registry did not return any plugins.\",\n \"no_matches\": \"No matching plugins\",\n \"no_matches_desc\": \"No plugins match the current search or filter.\",\n \"clear_filters\": \"Clear filters\",\n \"security_banner_title\": \"Third-party plugins run with full backend access\",\n \"security_banner_text\": \"Plugins execute code inside the proxy service and can read your credentials and traffic. Only install plugins you trust — be especially careful with any plugin not published by the official router-for-me organization.\",\n \"badge_untrusted\": \"Third-party\",\n \"gate_title\": \"Install {{name}}\",\n \"gate_title_update\": \"Update {{name}}\",\n \"gate_warning\": \"Unexpected and harmful things can happen if you don't read this.\",\n \"gate_effect_runs_code\": \"This plugin will run uncertified third-party code inside your proxy backend. The system cannot isolate or audit its behavior, and it may have access to your sensitive credentials, network requests, and response data.\",\n \"gate_effect_no_review\": \"This plugin is not published or reviewed by the official router-for-me organization. The official organization makes no express or implied warranty for this plugin's stability, security, compliance, or any behavior changes in future versions.\",\n \"gate_effect_restart\": \"Installing it changes the local plugin directory and may require a service restart to take effect.\",\n \"gate_untrusted_alert\": \"This plugin is not from the official router-for-me organization. Only continue if you fully trust its author and source.\",\n \"gate_repository_label\": \"Repository\",\n \"gate_source_label\": \"Source\",\n \"gate_step1_action\": \"I want to install this plugin\",\n \"gate_step2_action\": \"I have read and understand these risks\",\n \"gate_step3_prompt\": \"To confirm, type \\\"{{token}}\\\" in the box below\",\n \"gate_step3_action\": \"Install this plugin\",\n \"gate_step3_hint\": \"Enter the exact identifier shown above to enable installation.\"\n },\n \"plugin_resource\": {\n \"title\": \"Plugin Page\",\n \"page_count\": \"{{count}} pages\",\n \"load_failed\": \"Failed to load plugin page\",\n \"unavailable\": \"Plugin page unavailable\",\n \"not_found\": \"Plugin page not found\",\n \"not_found_desc\": \"This plugin page is not declared by the current backend plugin list.\",\n \"empty_src\": \"Plugin page URL is empty\",\n \"empty_src_desc\": \"This plugin menu does not provide an embeddable page URL.\"\n },\n \"system_info\": {\n \"title\": \"Management Center Info\",\n \"about_title\": \"CLI Proxy API Management Center\",\n \"connection_status_title\": \"Connection Status\",\n \"api_status_label\": \"API Status:\",\n \"config_status_label\": \"Config Status:\",\n \"last_update_label\": \"Last Update:\",\n \"cache_data\": \"Cache Data\",\n \"real_time_data\": \"Real-time Data\",\n \"not_loaded\": \"Not Loaded\",\n \"seconds_ago\": \"seconds ago\",\n \"models_title\": \"Available Models\",\n \"models_desc\": \"Shows the /models response and uses saved API keys for auth automatically.\",\n \"models_loading\": \"Loading available models...\",\n \"models_empty\": \"No models returned by /models\",\n \"models_error\": \"Failed to load model list\",\n \"models_count\": \"{{count}} available models\",\n \"version_check_title\": \"Update Check\",\n \"version_check_desc\": \"Call the /latest-version endpoint to compare with the server version and see if an update is available.\",\n \"version_current_label\": \"Current version\",\n \"version_latest_label\": \"Latest version\",\n \"version_check_button\": \"Check for updates\",\n \"version_check_idle\": \"Click to check for updates\",\n \"version_checking\": \"Checking for the latest version...\",\n \"version_update_available\": \"An update is available: {{version}}\",\n \"version_is_latest\": \"You are on the latest version\",\n \"version_check_error\": \"Update check failed\",\n \"version_current_missing\": \"Server version is unavailable; cannot compare\",\n \"version_unknown\": \"Unknown\",\n \"quick_links_title\": \"Quick Links\",\n \"quick_links_desc\": \"Access project repositories and documentation for help and updates.\",\n \"link_main_repo\": \"Main Repository\",\n \"link_main_repo_desc\": \"CLI Proxy API core program source code\",\n \"link_webui_repo\": \"WebUI Repository\",\n \"link_webui_repo_desc\": \"Management Center frontend source code\",\n \"link_docs\": \"Documentation\",\n \"link_docs_desc\": \"Configuration tutorials and guides\",\n \"clear_login_title\": \"Local Login Data\",\n \"clear_login_desc\": \"Clear locally saved login data and sign out.\",\n \"clear_login_button\": \"Clear login data\",\n \"clear_login_confirm\": \"Clear local login data and sign out now?\"\n },\n \"notification\": {\n \"debug_updated\": \"Debug settings updated\",\n \"proxy_updated\": \"Proxy settings updated\",\n \"proxy_cleared\": \"Proxy settings cleared\",\n \"retry_updated\": \"Retry settings updated\",\n \"quota_switch_project_updated\": \"Project switch settings updated\",\n \"quota_switch_preview_updated\": \"Preview model switch settings updated\",\n \"logging_to_file_updated\": \"Logging settings updated\",\n \"logs_max_total_size_updated\": \"Log size limit updated\",\n \"request_log_updated\": \"Request logging setting updated\",\n \"force_model_prefix_updated\": \"Model prefix setting updated\",\n \"ws_auth_updated\": \"WebSocket authentication setting updated\",\n \"routing_strategy_updated\": \"Routing strategy updated\",\n \"login_storage_cleared\": \"Local login data cleared\",\n \"api_key_added\": \"API key added successfully\",\n \"api_key_updated\": \"API key updated successfully\",\n \"api_key_deleted\": \"API key deleted successfully\",\n \"api_key_invalid_chars\": \"API key can only contain letters, numbers, and symbols\",\n \"gemini_key_added\": \"Gemini key added successfully\",\n \"gemini_key_updated\": \"Gemini key updated successfully\",\n \"gemini_key_deleted\": \"Gemini key deleted successfully\",\n \"gemini_multi_input_required\": \"Please enter at least one Gemini key\",\n \"gemini_multi_failed\": \"Gemini bulk add failed\",\n \"gemini_multi_summary\": \"Gemini bulk add finished: {{success}} added, {{skipped}} skipped, {{failed}} failed\",\n \"codex_config_added\": \"Codex configuration added successfully\",\n \"codex_config_updated\": \"Codex configuration updated successfully\",\n \"codex_config_deleted\": \"Codex configuration deleted successfully\",\n \"codex_base_url_required\": \"Please enter the Codex Base URL\",\n \"claude_config_added\": \"Claude configuration added successfully\",\n \"claude_config_updated\": \"Claude configuration updated successfully\",\n \"claude_config_deleted\": \"Claude configuration deleted successfully\",\n \"vertex_config_added\": \"Vertex configuration added successfully\",\n \"vertex_config_updated\": \"Vertex configuration updated successfully\",\n \"vertex_config_deleted\": \"Vertex configuration deleted successfully\",\n \"config_enabled\": \"Configuration enabled\",\n \"config_disabled\": \"Configuration disabled\",\n \"field_required\": \"Required fields cannot be empty\",\n \"openai_provider_required\": \"Please fill in provider name and Base URL\",\n \"openai_provider_added\": \"OpenAI provider added successfully\",\n \"openai_provider_updated\": \"OpenAI provider updated successfully\",\n \"openai_provider_deleted\": \"OpenAI provider deleted successfully\",\n \"openai_model_name_required\": \"Model name is required\",\n \"openai_test_url_required\": \"Please provide a valid Base URL before testing\",\n \"openai_test_key_required\": \"Please add at least one API key before testing\",\n \"openai_test_model_required\": \"Please select a model to test\",\n \"data_refreshed\": \"Data refreshed successfully\",\n \"connection_required\": \"Please establish connection first\",\n \"refresh_failed\": \"Refresh failed\",\n \"update_failed\": \"Update failed\",\n \"add_failed\": \"Add failed\",\n \"delete_failed\": \"Delete failed\",\n \"upload_failed\": \"Upload failed\",\n \"download_failed\": \"Download failed\",\n \"login_failed\": \"Login failed\",\n \"please_enter\": \"Please enter\",\n \"please_fill\": \"Please fill\",\n \"provider_name_url\": \"provider name and Base URL\",\n \"api_key\": \"API key\",\n \"gemini_api_key\": \"Gemini API key\",\n \"codex_api_key\": \"Codex API key\",\n \"claude_api_key\": \"Claude API key\",\n \"commercial_mode_restart_required\": \"Commercial mode setting changed. Please restart the service for it to take effect\",\n \"copy_failed\": \"Copy failed\",\n \"link_copied\": \"Link copied to clipboard\"\n },\n \"language\": {\n \"switch\": \"Language\",\n \"chinese\": \"中文\",\n \"chinese_tw\": \"Traditional Chinese (Taiwan)\",\n \"english\": \"English\",\n \"russian\": \"Русский\"\n },\n \"theme\": {\n \"switch\": \"Theme\",\n \"light\": \"Wool Paper\",\n \"white\": \"Pure White\",\n \"dark\": \"Dark\",\n \"switch_to_light\": \"Switch to wool paper mode\",\n \"switch_to_dark\": \"Switch to dark mode\",\n \"auto\": \"Follow system\"\n },\n \"sidebar\": {\n \"primary_navigation\": \"Primary navigation\",\n \"toggle_expand\": \"Expand sidebar\",\n \"toggle_collapse\": \"Collapse sidebar\"\n },\n \"footer\": {\n \"api_version\": \"CLI Proxy API Version\",\n \"build_date\": \"Build Time\",\n \"version\": \"Management UI Version\",\n \"author\": \"Author\"\n },\n \"providersPage\": {\n \"header\": {\n \"title\": \"AI Providers\",\n \"activeResources\": \"{{active}}/{{total}} active resources\",\n \"providerFamilies\": \"{{count}} provider families\",\n \"updatedAt\": \"Updated {{time}}\",\n \"issueCount\": \"{{count}} issues\"\n },\n \"actions\": {\n \"refresh\": \"Refresh\",\n \"syncing\": \"Syncing\",\n \"new\": \"New\",\n \"edit\": \"Edit\",\n \"view\": \"View\",\n \"delete\": \"Delete\",\n \"clear\": \"Clear\",\n \"cancel\": \"Cancel\",\n \"save\": \"Save\",\n \"create\": \"Create\",\n \"enable\": \"Enable\",\n \"disable\": \"Disable\"\n },\n \"categories\": {\n \"title\": \"Providers\",\n \"activeCount\": \"{{active}}/{{total}} active\"\n },\n \"providerNames\": {\n \"gemini\": \"Gemini\",\n \"codex\": \"Codex\",\n \"xai\": \"xAI\",\n \"claude\": \"Claude\",\n \"vertex\": \"Vertex\",\n \"openaiCompatibility\": \"OpenAI Compatible\",\n \"claudeApi\": \"ClaudeAPI\",\n \"code0\": \"Code0\",\n \"fennoAI\": \"FennoAI\",\n \"qiniuCloud\": \"Qiniu Cloud\"\n },\n \"table\": {\n \"key\": \"Key\",\n \"baseUrl\": \"Base URL\",\n \"prefix\": \"Prefix\",\n \"models\": \"Models/Headers\",\n \"status\": \"Status\",\n \"actions\": \"Actions\",\n \"metrics\": {\n \"models\": \"Models\",\n \"keys\": \"Keys\",\n \"headers\": \"Headers\"\n },\n \"stats\": {\n \"recent\": \"Recent\",\n \"fullUsage\": \"Usage\",\n \"tokens\": \"Tokens\",\n \"cost\": \"Cost\"\n },\n \"websocketsTag\": \"WebSockets\",\n \"cloakTag\": \"Cloak\",\n \"empty\": \"No resources yet, click \\\"New\\\" to add.\",\n \"filterPlaceholder\": \"Search keys, URLs, prefixes…\",\n \"description\": \"Manage resources under {{route}}\",\n \"providerIssue\": \"This provider has an issue\"\n },\n \"status\": {\n \"active\": \"Active\",\n \"disabled\": \"Disabled\",\n \"notSet\": \"Not set\",\n \"none\": \"None\",\n \"notConfigured\": \"Not configured\",\n \"defaultSuffix\": \"(default)\"\n },\n \"detail\": {\n \"title\": \"Details\",\n \"metadataTitle\": \"Metadata\",\n \"fields\": {\n \"identifier\": \"Identifier\",\n \"baseUrl\": \"Base URL\",\n \"proxyUrl\": \"Proxy URL\",\n \"prefix\": \"Prefix\",\n \"models\": \"Models\",\n \"headers\": \"Headers\",\n \"authIndex\": \"Auth Index\",\n \"excludedModels\": \"Excluded models\",\n \"apiKeyEntries\": \"API key entries\"\n }\n },\n \"form\": {\n \"createEyebrow\": \"New\",\n \"editEyebrow\": \"Edit\",\n \"name\": \"Name\",\n \"apiKey\": \"API key\",\n \"apiKeyCreatePlaceholder\": \"Enter API key\",\n \"apiKeyEditPlaceholder\": \"Leave empty to keep unchanged\",\n \"baseUrl\": \"Base URL\",\n \"baseUrlRequiredHint\": \"Required for this provider\",\n \"proxyUrl\": \"Proxy URL\",\n \"prefix\": \"Prefix\",\n \"priority\": \"Priority\",\n \"disabled\": \"Disable this entry\",\n \"disabledHint\": \"Disabled entries won't be used by the gateway\",\n \"websockets\": \"Enable WebSockets\",\n \"testModel\": \"Test model\",\n \"testModelClaudeHint\": \"Used for connectivity testing only; not saved\",\n \"testModelAutoWith\": \"Auto · {{name}}\",\n \"testModelAutoEmpty\": \"Auto (no models added yet)\",\n \"testModelCustom\": \"{{name}} (custom)\",\n \"modelsSection\": \"Custom models\",\n \"addModel\": \"Add model\",\n \"modelNamePlaceholder\": \"Upstream model name\",\n \"modelAliasPlaceholder\": \"Routing alias (optional)\",\n \"modelDisplayNamePlaceholder\": \"Display name (optional)\",\n \"headersSection\": \"Request headers\",\n \"addHeader\": \"Add header\",\n \"headers\": \"Headers\",\n \"headersHint\": \"One per line, format Key: Value\",\n \"excludedSection\": \"Excluded models\",\n \"excludedHint\": \"One model per line; matched models won't be routed\",\n \"cloakSection\": \"Cloak settings\",\n \"cloakMode\": \"Mode\",\n \"cloakStrict\": \"Strict mode\",\n \"cloakSensitiveWords\": \"Sensitive words (one per line)\",\n \"apiKeyEntriesSection\": \"API key entries\",\n \"apiKeyEntry\": \"Key #{{index}}\",\n \"addApiKeyEntry\": \"Add key entry\",\n \"showApiKey\": \"Show API key\",\n \"hideApiKey\": \"Hide API key\",\n \"disableCooling\": \"Disable cooling\",\n \"disableCoolingHint\": \"Disable failure cooldown windows only for this credential or provider\",\n \"modelEntry\": \"Model #{{index}}\",\n \"modelImage\": \"Allow image endpoints\",\n \"modelImageHint\": \"Allow this model on /v1/images/generations and /v1/images/edits\",\n \"thinkingConfig\": \"Thinking config (JSON)\",\n \"thinkingConfigHint\": \"Supports levels, min, max, zero_allowed, dynamic_allowed\",\n \"cloakCacheUserId\": \"Cache user_id\",\n \"cloakCacheUserIdHint\": \"Reuse the Claude cloak user_id per API key\",\n \"experimentalCchSigning\": \"Experimental CCH signing\",\n \"experimentalCchSigningHint\": \"Sign the final cloaked Claude /v1/messages body with CCH\",\n \"validation\": {\n \"nameRequired\": \"Name is required\",\n \"apiKeyRequired\": \"At least one API key is required\",\n \"baseUrlRequired\": \"Base URL is required\"\n },\n \"showAllEntries\": \"Show all ({{count}})\",\n \"showFewerEntries\": \"Show fewer\",\n \"proxyBadge\": \"Proxy\",\n \"modelBadgeImage\": \"Image\",\n \"modelBadgeThinking\": \"Thinking\"\n },\n \"delete\": {\n \"title\": \"Delete resource\",\n \"confirm\": \"Delete {{name}}? This action cannot be undone.\"\n },\n \"toast\": {\n \"created\": \"Created\",\n \"updated\": \"Updated\",\n \"deleted\": \"Deleted\",\n \"enabled\": \"Enabled\",\n \"disabled\": \"Disabled\",\n \"toggleFailed\": \"Failed to update status\"\n },\n \"unsavedChanges\": {\n \"title\": \"Discard unsaved changes?\",\n \"message\": \"You have unsaved edits in this form. Closing will discard them.\",\n \"discard\": \"Discard changes\",\n \"keepEditing\": \"Keep editing\"\n },\n \"connectivity\": {\n \"test\": \"Test\",\n \"testAll\": \"Test all\",\n \"success\": \"Reachable\",\n \"baseUrlRequired\": \"Base URL is required\",\n \"endpointInvalid\": \"Endpoint URL is invalid\",\n \"apiKeyRequired\": \"API key is required\",\n \"modelRequired\": \"Test model is required\",\n \"timeout\": \"Timed out after {{seconds}}s\",\n \"requestFailed\": \"Request failed\"\n },\n \"discovery\": {\n \"openButton\": \"Fetch from endpoint\",\n \"searchPlaceholder\": \"Search models\",\n \"reload\": \"Reload\",\n \"loading\": \"Loading models…\",\n \"empty\": \"No models returned by the endpoint\",\n \"notLoaded\": \"Click Reload to fetch models\",\n \"selectAll\": \"Select all\",\n \"clearAll\": \"Clear selection\",\n \"selectedCount\": \"{{selected}} / {{total}}\",\n \"alreadyAdded\": \"Already added\",\n \"close\": \"Close\",\n \"apply\": \"Apply ({{count}})\"\n },\n \"toolbar\": {\n \"sortBy\": \"Sort by\",\n \"sort\": {\n \"name\": \"Name\",\n \"priority\": \"Priority\",\n \"recentSuccess\": \"Recent success\",\n \"directionAsc\": \"Ascending\",\n \"directionDesc\": \"Descending\"\n },\n \"filter\": {\n \"allModels\": \"All models\",\n \"selectedModels\": \"{{selected}}/{{total}} models\",\n \"selectAll\": \"Select all\",\n \"clear\": \"Clear\",\n \"empty\": \"No models configured yet\"\n }\n },\n \"modelCatalog\": {\n \"notLoaded\": \"Not loaded\"\n },\n \"sponsor\": {\n \"protocolSummary\": \"Anthropic / OpenAI / Gemini / Codex API (Responses)\",\n \"detailHint\": \"{{provider}} is persisted into the matching API key configs by protocol; this view manages them together.\",\n \"apiKeyHint\": \"This key is only written to the selected group/protocol config.\",\n \"aggregationConflict\": \"This grouped provider contains multiple backend configs or OpenAI keys. Edit it in the source configuration to avoid data loss.\",\n \"partialMutationWarning\": \"The operation failed after one or more protocols may have been updated. The latest configuration was reloaded; review it before retrying.\",\n \"groupedKeysTitle\": \"Grouped keys\",\n \"groupedKeysHint\": \"Platform keys may be bound to a group when created. Each grouped key here manages one protocol, and model discovery only uses that protocol.\",\n \"groupedKey\": \"Grouped key #{{index}}\",\n \"addGroupedKey\": \"Add grouped key\",\n \"removeGroupedKey\": \"Remove grouped key\",\n \"protocol\": \"Group/protocol\",\n \"protocolHint\": \"Select the group/protocol for this key.\",\n \"protocolEndpoint\": \"Current protocol endpoint\",\n \"urlMode\": \"{{provider}} URL\",\n \"urlHint\": \"All URLs use the same API conventions. Saving writes only the endpoint for the current grouped protocol.\",\n \"urlOptions\": {\n \"standard\": \"Standard URL\",\n \"direct\": \"Direct URL\",\n \"domestic\": \"China mainland route\",\n \"overseas\": \"Overseas route\"\n },\n \"urlOptionDescriptions\": {\n \"domestic\": \"For users and workloads in mainland China; usually lower latency in mainland networks.\",\n \"overseas\": \"For overseas deployments, cross-border access, or workloads that need overseas models.\"\n },\n \"modelsTitle\": \"Protocol model settings\",\n \"modelsHint\": \"Configure model allowlists or aliases separately for Codex API, Anthropic, Gemini, and OpenAI-compatible routes.\",\n \"protocolModels\": {\n \"codex\": \"Codex API models\",\n \"anthropic\": \"Anthropic models\",\n \"gemini\": \"Gemini models\",\n \"openai\": \"OpenAI-compatible models\"\n },\n \"protocolModelHints\": {\n \"codex\": \"Writes to the Codex API config models. Fetch from /v1/models and set aliases if needed.\",\n \"anthropic\": \"Writes to the Anthropic config models. Fetch from /v1/models and set aliases if needed.\",\n \"gemini\": \"Writes to the Gemini config models. Fetch from /v1beta/models and set aliases if needed.\",\n \"openai\": \"Writes to the OpenAI-compatible config models. Fetch from /models and set aliases if needed.\"\n },\n \"validation\": {\n \"keyRequired\": \"Enter an API key for every grouped key.\",\n \"protocolDuplicate\": \"Each protocol can only have one grouped key.\"\n },\n \"openaiEntries\": \"OpenAI-compatible keys\",\n \"codexEntries\": \"Codex API keys\",\n \"anthropicEntries\": \"Anthropic keys\",\n \"geminiEntries\": \"Gemini keys\",\n \"protocols\": {\n \"anthropic\": \"Anthropic\",\n \"openai\": \"OpenAI Compatible\",\n \"gemini\": \"Gemini\",\n \"codexResponses\": \"Codex API (Responses)\"\n }\n }\n }\n}\n"}, "c2241c78c404507afc886e183ead3e84dbb38c52": {"t": 1785846934.378688, "n": 136558, "h": "6c738358b8ecd7a9", "c": "{\n \"common\": {\n \"login\": \"Login\",\n \"logout\": \"Logout\",\n \"back\": \"Back\",\n \"cancel\": \"Cancel\",\n \"confirm\": \"Confirm\",\n \"leave\": \"Leave\",\n \"stay\": \"Stay\",\n \"save\": \"Save\",\n \"delete\": \"Delete\",\n \"edit\": \"Edit\",\n \"add\": \"Add\",\n \"update\": \"Update\",\n \"refresh\": \"Refresh\",\n \"close\": \"Close\",\n \"success\": \"Success\",\n \"error\": \"Error\",\n \"info\": \"Info\",\n \"warning\": \"Warning\",\n \"loading\": \"Loading...\",\n \"connecting\": \"Connecting...\",\n \"connected\": \"Connected\",\n \"disconnected\": \"Disconnected\",\n \"connecting_status\": \"Connecting\",\n \"connected_status\": \"Connected\",\n \"disconnected_status\": \"Disconnected\",\n \"yes\": \"Yes\",\n \"no\": \"No\",\n \"not_set\": \"Not set\",\n \"optional\": \"Optional\",\n \"required\": \"Required\",\n \"api_key\": \"Key\",\n \"base_url\": \"Address\",\n \"prefix\": \"Prefix\",\n \"proxy_url\": \"Proxy\",\n \"priority\": \"Priority\",\n \"alias\": \"Alias\",\n \"failure\": \"Failure\",\n \"unknown_error\": \"Unknown error\",\n \"quota_update_required\": \"Please update the CPA version or check for updates\",\n \"quota_check_credential\": \"Please check the credential status\",\n \"copy\": \"Copy\",\n \"expand\": \"Expand\",\n \"collapse\": \"Collapse\",\n \"status\": \"Status\",\n \"action\": \"Action\",\n \"custom_headers_label\": \"Custom Headers\",\n \"custom_headers_hint\": \"Optional HTTP headers to send with the request. Leave blank to remove.\",\n \"custom_headers_add\": \"Add Header\",\n \"custom_headers_key_placeholder\": \"Header name, e.g. X-Custom-Header\",\n \"custom_headers_value_placeholder\": \"Header value\",\n \"model_name_placeholder\": \"Model name, e.g. claude-3-5-sonnet-20241022\",\n \"model_alias_placeholder\": \"Model alias (optional)\",\n \"invalid_provider_index\": \"Invalid provider index.\",\n \"unsaved_changes_title\": \"Unsaved changes\",\n \"unsaved_changes_message\": \"You have unsaved changes. Leaving now will discard them. Do you want to leave?\"\n },\n \"title\": {\n \"main\": \"CLI Proxy API Management Center\",\n \"login\": \"CLI Proxy API Management Center\",\n \"abbr\": \"CPAMC\"\n },\n \"splash\": {\n \"title\": \"CLI Proxy API\",\n \"subtitle\": \"Management Center\"\n },\n \"auto_login\": {\n \"title\": \"Auto Login in Progress...\",\n \"message\": \"Attempting to connect to server using locally saved connection information\"\n },\n \"login\": {\n \"subtitle\": \"Please enter connection information to access the management interface\",\n \"connection_title\": \"Connection Address\",\n \"connection_current\": \"Current URL\",\n \"connection_auto_hint\": \"The system will automatically use the current URL for connection\",\n \"custom_connection_label\": \"Custom Connection URL:\",\n \"custom_connection_placeholder\": \"Eg: https://example.com:8317\",\n \"custom_connection_hint\": \"By default the current URL is used. Override it here if needed.\",\n \"use_current_address\": \"Use Current URL\",\n \"remember_password_label\": \"Remember password\",\n \"management_key_label\": \"Management Key:\",\n \"management_key_placeholder\": \"Enter the management key\",\n \"connect_button\": \"Connect\",\n \"submit_button\": \"Login\",\n \"submitting\": \"Connecting...\",\n \"error_title\": \"Login Failed\",\n \"error_backend_detail\": \"Backend response\",\n \"error_required\": \"Please fill in complete connection information\",\n \"error_invalid\": \"Connection failed, please check the server address, Management API, and management key\",\n \"error_network\": \"Network connection failed, please check your network or server address\",\n \"error_timeout\": \"Connection timed out, server not responding\",\n \"error_unauthorized\": \"Authentication failed, management key is missing or invalid\",\n \"error_forbidden\": \"Access denied, remote management is disabled, the management key is not configured, or this IP is temporarily banned\",\n \"error_not_found\": \"Management API not found, confirm the server address points to the CLIProxyAPI backend\",\n \"error_server\": \"Backend failed while handling the management request, check the server logs\",\n \"error_cors\": \"Cross-origin request blocked, please check server configuration\",\n \"error_ssl\": \"SSL/TLS certificate verification failed\"\n },\n \"header\": {\n \"check_connection\": \"Check Connection\",\n \"refresh_all\": \"Refresh All\",\n \"logout\": \"Logout\"\n },\n \"connection\": {\n \"title\": \"Connection Information\",\n \"server_address\": \"Server Address:\",\n \"management_key\": \"Management Key:\",\n \"status\": \"Connection Status:\"\n },\n \"nav\": {\n \"dashboard\": \"Dashboard\",\n \"basic_settings\": \"Basic Settings\",\n \"api_keys\": \"API Keys\",\n \"ai_providers\": \"AI Providers\",\n \"auth_files\": \"Auth Files\",\n \"oauth\": \"OAuth Login\",\n \"quota_management\": \"Quota Management\",\n \"usage_stats\": \"Usage Statistics\",\n \"plugins\": \"Plugins\",\n \"plugins_runtime_unavailable\": \"Plugins (runtime unavailable)\",\n \"plugin_store\": \"Plugin Store\",\n \"config_management\": \"Config Panel\",\n \"logs\": \"Logs Viewer\",\n \"system_info\": \"Management Center Info\"\n },\n \"nav_groups\": {\n \"operate\": \"Operate\",\n \"gateway\": \"Gateway\",\n \"observe\": \"Observe\",\n \"plugin_pages\": \"Plugins\",\n \"control\": \"Control\"\n },\n \"nav_meta\": {\n \"dashboard\": \"Operations overview\",\n \"ai_providers\": \"Upstream model routing\",\n \"auth_files\": \"Auth files & credentials\",\n \"oauth\": \"OAuth authorization\",\n \"quota_management\": \"API keys & limits\",\n \"usage_stats\": \"Full usage and request analytics\",\n \"plugins\": \"Plugin toggles & config\",\n \"plugin_store\": \"Discover & install plugins\",\n \"logs\": \"Request tracing\",\n \"config_management\": \"Gateway configuration\",\n \"system_info\": \"Runtime & diagnostics\"\n },\n \"dashboard\": {\n \"title\": \"Dashboard\",\n \"subtitle\": \"Welcome to CLI Proxy API Management Center\",\n \"openai_providers\": \"OpenAI Providers\",\n \"quick_actions\": \"Quick Actions\",\n \"current_config\": \"Current Configuration\",\n \"management_keys\": \"Management Keys\",\n \"provider_keys_detail\": \"G:{{gemini}} C:{{codex}} X:{{xai}} Cl:{{claude}} V:{{vertex}} O:{{openai}} A:{{ampcode}}\",\n \"oauth_credentials\": \"OAuth Credentials\",\n \"edit_settings\": \"Edit Settings\",\n \"routing_strategy\": \"Routing Strategy\",\n \"available_models\": \"Available Models\",\n \"available_models_desc\": \"Total models from all providers\",\n \"welcome_back\": \"Welcome Back\",\n \"greeting_morning\": \"Good Morning\",\n \"greeting_afternoon\": \"Good Afternoon\",\n \"greeting_evening\": \"Good Evening\",\n \"greeting_night\": \"Good Night\",\n \"caring_morning\": \"A fresh start — let's make today count.\",\n \"caring_afternoon\": \"Steady progress — you're doing great.\",\n \"caring_evening\": \"Wrapping up nicely — almost there.\",\n \"caring_night\": \"Burning the midnight oil? Don't forget to rest.\",\n \"system_overview\": \"System Overview\"\n },\n \"basic_settings\": {\n \"title\": \"Basic Settings\",\n \"debug_title\": \"Debug Mode\",\n \"debug_enable\": \"Enable Debug Mode\",\n \"proxy_title\": \"Proxy Settings\",\n \"proxy_url_label\": \"Proxy URL:\",\n \"proxy_url_placeholder\": \"e.g.: socks5://user:pass@127.0.0.1:1080/\",\n \"proxy_update\": \"Update\",\n \"proxy_clear\": \"Clear\",\n \"retry_title\": \"Request Retry\",\n \"retry_count_label\": \"Retry Count:\",\n \"retry_update\": \"Update\",\n \"quota_title\": \"Quota Exceeded Behavior\",\n \"quota_switch_project\": \"Auto Switch Project\",\n \"quota_switch_preview\": \"Switch to Preview Model\",\n \"logging_title\": \"Logging\",\n \"logging_to_file_enable\": \"Enable logging to file\",\n \"logs_max_total_size_title\": \"Log Size Limit\",\n \"logs_max_total_size_label\": \"Total log size cap (MB):\",\n \"logs_max_total_size_hint\": \"Set to 0 to disable the limit.\",\n \"logs_max_total_size_update\": \"Update\",\n \"request_log_title\": \"Request Logging\",\n \"request_log_enable\": \"Enable request logging\",\n \"request_log_warning\": \"Keep this off unless you need detailed troubleshooting.\",\n \"force_model_prefix_enable\": \"Force model prefix\",\n \"ws_auth_title\": \"WebSocket Authentication\",\n \"ws_auth_enable\": \"Require auth for /ws/*\",\n \"routing_title\": \"Routing Strategy\",\n \"routing_strategy_label\": \"Routing strategy:\",\n \"routing_strategy_hint\": \"round-robin cycles through keys; fill-first prioritizes the first available key.\",\n \"routing_strategy_update\": \"Update\",\n \"routing_strategy_round_robin\": \"round-robin (cycle)\",\n \"routing_strategy_fill_first\": \"fill-first (prioritize)\"\n },\n \"api_keys\": {\n \"title\": \"API Keys Management\",\n \"proxy_auth_title\": \"Proxy Service Authentication Keys\",\n \"add_button\": \"Add Key\",\n \"empty_title\": \"No API Keys\",\n \"empty_desc\": \"Click the button above to add the first key\",\n \"item_title\": \"API Key\",\n \"add_modal_title\": \"Add API Key\",\n \"add_modal_key_label\": \"API Key:\",\n \"add_modal_key_placeholder\": \"Please enter API key\",\n \"edit_modal_title\": \"Edit API Key\",\n \"edit_modal_key_label\": \"API Key:\",\n \"delete_confirm\": \"Are you sure you want to delete this API key?\"\n },\n \"ai_providers\": {\n \"title\": \"AI Providers Configuration\",\n \"gemini_title\": \"Gemini API Keys\",\n \"gemini_add_button\": \"Add Key\",\n \"gemini_empty_title\": \"No Gemini Keys\",\n \"gemini_empty_desc\": \"Click the button above to add the first key\",\n \"gemini_item_title\": \"Gemini Key\",\n \"gemini_add_modal_title\": \"Add Gemini API Key\",\n \"gemini_add_modal_key_label\": \"API Keys:\",\n \"gemini_add_modal_key_placeholder\": \"Enter Gemini API key\",\n \"gemini_add_modal_key_hint\": \"Add keys one by one and optionally specify a Base URL.\",\n \"gemini_keys_add_btn\": \"Add Key\",\n \"gemini_base_url_label\": \"Base URL (Optional):\",\n \"gemini_base_url_placeholder\": \"e.g.: https://generativelanguage.googleapis.com\",\n \"gemini_add_modal_proxy_label\": \"Proxy URL (Optional):\",\n \"gemini_add_modal_proxy_placeholder\": \"e.g.: socks5://proxy.example.com:1080\",\n \"gemini_models_label\": \"Custom Models (Optional):\",\n \"gemini_models_hint\": \"Leave empty to allow all models, or add name[, alias] entries to limit/alias them for this key.\",\n \"gemini_models_add_btn\": \"Add Model\",\n \"gemini_models_fetch_button\": \"Fetch via /v1beta/models\",\n \"gemini_models_fetch_title\": \"Pick Models from Gemini /v1beta/models\",\n \"gemini_models_fetch_hint\": \"Call GET /v1beta/models per the Gemini API. By default, it sends x-goog-api-key from the API Key field, merged with your custom headers.\",\n \"gemini_models_fetch_url_label\": \"Request URL\",\n \"gemini_models_fetch_refresh\": \"Refresh\",\n \"gemini_models_fetch_loading\": \"Fetching models from Gemini /v1beta/models...\",\n \"gemini_models_fetch_empty\": \"No models returned. Please check Base URL, API key, or headers.\",\n \"gemini_models_fetch_error\": \"Failed to fetch Gemini models\",\n \"gemini_models_fetch_apply\": \"Add selected models\",\n \"model_discovery_select_visible\": \"Select current list\",\n \"model_discovery_clear_selection\": \"Clear selection\",\n \"model_discovery_selected_count\": \"{{count}} selected\",\n \"gemini_models_search_label\": \"Search models\",\n \"gemini_models_search_placeholder\": \"Filter by name, alias, or description\",\n \"gemini_models_search_empty\": \"No models match your search. Try a different keyword.\",\n \"gemini_models_fetch_added\": \"{{count}} new models added\",\n \"gemini_models_count\": \"Models Count\",\n \"gemini_edit_modal_title\": \"Edit Gemini API Key\",\n \"gemini_edit_modal_key_label\": \"API Key:\",\n \"gemini_delete_confirm\": \"Are you sure you want to delete this Gemini key?\",\n \"excluded_models_label\": \"Excluded models (optional):\",\n \"excluded_models_placeholder\": \"Comma or newline separated, e.g. gemini-1.5-pro, gemini-1.5-flash\",\n \"excluded_models_hint\": \"Leave empty to allow all models; values are trimmed and deduplicated automatically.\",\n \"excluded_models_count\": \"Excluding {{count}} models\",\n \"prefix_label\": \"Prefix (Optional):\",\n \"prefix_placeholder\": \"e.g.: team-a\",\n \"prefix_hint\": \"When set, call models as prefix/<model> to target this entry.\",\n \"priority_label\": \"Priority (Optional):\",\n \"priority_hint\": \"Higher values are preferred. Leave empty for default (0).\",\n \"config_toggle_label\": \"Enabled\",\n \"config_disabled_badge\": \"Disabled\",\n \"codex_title\": \"Codex API Configuration\",\n \"codex_add_button\": \"Add Configuration\",\n \"codex_empty_title\": \"No Codex Configuration\",\n \"codex_empty_desc\": \"Click the button above to add the first configuration\",\n \"codex_item_title\": \"Codex Configuration\",\n \"codex_add_modal_title\": \"Add Codex API Configuration\",\n \"codex_add_modal_key_label\": \"API Key:\",\n \"codex_add_modal_key_placeholder\": \"Please enter Codex API key\",\n \"codex_add_modal_url_label\": \"Base URL (Required):\",\n \"codex_add_modal_url_placeholder\": \"e.g.: https://api.example.com\",\n \"codex_add_modal_proxy_label\": \"Proxy URL (Optional):\",\n \"codex_add_modal_proxy_placeholder\": \"e.g.: socks5://proxy.example.com:1080\",\n \"codex_websockets_label\": \"Websockets\",\n \"codex_websockets_hint\": \"Enable Responses API websocket transport for this key.\",\n \"codex_models_label\": \"Custom Models (Optional):\",\n \"codex_models_hint\": \"Leave empty to allow all models, or add name[, alias] entries to limit/alias them.\",\n \"codex_models_add_btn\": \"Add Model\",\n \"codex_models_fetch_button\": \"Fetch via /v1/models\",\n \"codex_models_fetch_title\": \"Pick Models from /v1/models\",\n \"codex_models_fetch_hint\": \"Call GET /v1/models using the Base URL above, sending the API key as Bearer (if provided) and merging your custom headers.\",\n \"codex_models_fetch_url_label\": \"Request URL\",\n \"codex_models_fetch_refresh\": \"Refresh\",\n \"codex_models_fetch_loading\": \"Fetching models from /v1/models...\",\n \"codex_models_fetch_empty\": \"No models returned. Please check Base URL, API key, or headers.\",\n \"codex_models_fetch_error\": \"Failed to fetch models\",\n \"codex_models_fetch_apply\": \"Add selected models\",\n \"codex_models_search_label\": \"Search models\",\n \"codex_models_search_placeholder\": \"Filter by name, alias, or description\",\n \"codex_models_search_empty\": \"No models match your search. Try a different keyword.\",\n \"codex_models_fetch_added\": \"{{count}} new models added\",\n \"codex_models_count\": \"Models Count\",\n \"codex_edit_modal_title\": \"Edit Codex API Configuration\",\n \"codex_edit_modal_key_label\": \"API Key:\",\n \"codex_edit_modal_url_label\": \"Base URL (Required):\",\n \"codex_edit_modal_proxy_label\": \"Proxy URL (Optional):\",\n \"codex_delete_confirm\": \"Are you sure you want to delete this Codex configuration?\",\n \"claude_title\": \"Claude API Configuration\",\n \"claude_add_button\": \"Add Configuration\",\n \"claude_empty_title\": \"No Claude Configuration\",\n \"claude_empty_desc\": \"Click the button above to add the first configuration\",\n \"claude_item_title\": \"Claude Configuration\",\n \"claude_add_modal_title\": \"Add Claude API Configuration\",\n \"claude_add_modal_key_label\": \"API Key:\",\n \"claude_add_modal_key_placeholder\": \"Please enter Claude API key\",\n \"claude_add_modal_url_label\": \"Base URL (Optional):\",\n \"claude_add_modal_url_placeholder\": \"e.g.: https://api.anthropic.com\",\n \"claude_add_modal_proxy_label\": \"Proxy URL (Optional):\",\n \"claude_add_modal_proxy_placeholder\": \"e.g.: socks5://proxy.example.com:1080\",\n \"claude_edit_modal_title\": \"Edit Claude API Configuration\",\n \"claude_edit_modal_key_label\": \"API Key:\",\n \"claude_edit_modal_url_label\": \"Base URL (Optional):\",\n \"claude_edit_modal_proxy_label\": \"Proxy URL (Optional):\",\n \"claude_delete_confirm\": \"Are you sure you want to delete this Claude configuration?\",\n \"claude_models_label\": \"Custom Models (Optional):\",\n \"claude_models_hint\": \"Leave empty to allow all models, or add name[, alias] entries to limit/alias them.\",\n \"claude_models_add_btn\": \"Add Model\",\n \"claude_models_count\": \"Models Count\",\n \"claude_models_fetch_button\": \"Fetch via /v1/models\",\n \"claude_models_fetch_title\": \"Pick Models from Claude /v1/models\",\n \"claude_models_fetch_hint\": \"Call GET /v1/models with Anthropic headers. By default, this sends x-api-key and anthropic-version: 2023-06-01, merged with your custom headers.\",\n \"claude_models_fetch_url_label\": \"Request URL\",\n \"claude_models_fetch_refresh\": \"Refresh\",\n \"claude_models_fetch_loading\": \"Fetching models from Claude /v1/models...\",\n \"claude_models_fetch_empty\": \"No models returned. Please check Base URL, API key, or headers.\",\n \"claude_models_fetch_error\": \"Failed to fetch Claude models\",\n \"claude_models_fetch_apply\": \"Add selected models\",\n \"claude_models_search_label\": \"Search models\",\n \"claude_models_search_placeholder\": \"Filter by name, alias, or description\",\n \"claude_models_search_empty\": \"No models match your search. Try a different keyword.\",\n \"claude_models_fetch_added\": \"{{count}} new models added\",\n \"claude_test_title\": \"Connection Test\",\n \"claude_test_hint\": \"Send a test request to /v1/messages using Anthropic headers to verify this configuration.\",\n \"claude_test_select_placeholder\": \"Choose from current models\",\n \"claude_test_select_empty\": \"No models configured. Add models first\",\n \"claude_test_action\": \"Test\",\n \"claude_test_running\": \"Sending Claude test request...\",\n \"claude_test_timeout\": \"Test request timed out after {{seconds}} seconds.\",\n \"claude_test_success\": \"Test succeeded. Claude model responded.\",\n \"claude_test_failed\": \"Test failed\",\n \"claude_test_key_required\": \"Please provide a Claude API key or set x-api-key in custom headers\",\n \"claude_test_model_required\": \"Please select a model to test\",\n \"claude_test_endpoint_invalid\": \"Unable to build a valid Claude /v1/messages endpoint\",\n \"claude_cloak_title\": \"Request Cloaking (Optional):\",\n \"claude_cloak_toggle_label\": \"Enable\",\n \"claude_cloak_toggle_aria\": \"Toggle request cloaking\",\n \"claude_cloak_hint\": \"Cloaking disguises requests to appear as coming from the official Claude Code CLI for non-Claude-Code clients.\",\n \"claude_cloak_mode_label\": \"Mode:\",\n \"claude_cloak_mode_hint\": \"auto: cloak only when client is not Claude Code; always: always cloak; never: never cloak.\",\n \"claude_cloak_mode_auto\": \"Auto (non-Claude-Code only)\",\n \"claude_cloak_mode_always\": \"Always\",\n \"claude_cloak_mode_never\": \"Never\",\n \"claude_cloak_strict_label\": \"Strict mode:\",\n \"claude_cloak_strict_hint\": \"When enabled, strip user system messages and keep only the Claude Code prompt.\",\n \"claude_cloak_sensitive_words_label\": \"Sensitive words (optional):\",\n \"claude_cloak_sensitive_words_placeholder\": \"Comma or newline separated, e.g. internal-project\",\n \"claude_cloak_sensitive_words_hint\": \"These words are obfuscated with zero-width characters.\",\n \"claude_cloak_sensitive_words_count\": \"Sensitive words\",\n \"vertex_title\": \"Vertex API Configuration\",\n \"vertex_add_button\": \"Add Configuration\",\n \"vertex_empty_title\": \"No Vertex Configuration\",\n \"vertex_empty_desc\": \"Click the button above to add the first configuration\",\n \"vertex_item_title\": \"Vertex Configuration\",\n \"vertex_add_modal_title\": \"Add Vertex API Configuration\",\n \"vertex_add_modal_key_label\": \"API Key:\",\n \"vertex_add_modal_key_placeholder\": \"Please enter Vertex API key\",\n \"vertex_add_modal_url_label\": \"Base URL:\",\n \"vertex_add_modal_url_placeholder\": \"e.g.: https://example.com/api\",\n \"vertex_add_modal_proxy_label\": \"Proxy URL (Optional):\",\n \"vertex_add_modal_proxy_placeholder\": \"e.g.: socks5://proxy.example.com:1080\",\n \"vertex_edit_modal_title\": \"Edit Vertex API Configuration\",\n \"vertex_edit_modal_key_label\": \"API Key:\",\n \"vertex_edit_modal_url_label\": \"Base URL:\",\n \"vertex_edit_modal_proxy_label\": \"Proxy URL (Optional):\",\n \"vertex_delete_confirm\": \"Are you sure you want to delete this Vertex configuration?\",\n \"vertex_models_label\": \"Model aliases:\",\n \"vertex_models_add_btn\": \"Add Mapping\",\n \"vertex_models_count\": \"Alias count\",\n \"ampcode_title\": \"Amp CLI Integration (ampcode)\",\n \"ampcode_modal_title\": \"Configure Ampcode\",\n \"ampcode_upstream_url_label\": \"Upstream URL\",\n \"ampcode_upstream_url_placeholder\": \"e.g. https://ampcode.com\",\n \"ampcode_upstream_url_hint\": \"Optional. Leave empty to use the default/auto-discovered control plane URL.\",\n \"ampcode_upstream_api_key_label\": \"Upstream API Key (Amp Official)\",\n \"ampcode_upstream_api_key_placeholder\": \"Enter sk-amp... (leave empty to keep current)\",\n \"ampcode_upstream_api_key_hint\": \"Optional. Leaving it empty will not change the current Amp official key. Use the button below to clear it.\",\n \"ampcode_upstream_api_key_current\": \"Current Amp official key: {{key}}\",\n \"ampcode_clear_upstream_api_key\": \"Clear official key\",\n \"ampcode_clear_upstream_api_key_confirm\": \"Are you sure you want to clear the Ampcode upstream API key (Amp official)?\",\n \"ampcode_upstream_api_keys_label\": \"Multi-upstream API key routing\",\n \"ampcode_upstream_api_keys_hint\": \"Bind different Amp upstream API keys to specific client API keys. Client keys can be separated by commas or new lines.\",\n \"ampcode_upstream_api_keys_add_btn\": \"Add upstream mapping\",\n \"ampcode_upstream_api_keys_upstream_placeholder\": \"Upstream API key (sk-amp-...)\",\n \"ampcode_upstream_api_keys_clients_placeholder\": \"Client API keys, separated by commas or new lines\",\n \"ampcode_upstream_api_keys_item_title\": \"Upstream mapping #{{index}}\",\n \"ampcode_upstream_api_keys_count\": \"Upstream mappings\",\n \"ampcode_force_model_mappings_label\": \"Force model mappings\",\n \"ampcode_force_model_mappings_hint\": \"When enabled, mappings override local API-key availability checks.\",\n \"ampcode_model_mappings_label\": \"Model mappings (from → to)\",\n \"ampcode_model_mappings_hint\": \"Rewrites model names in Amp requests. Leave empty to disable mappings.\",\n \"ampcode_model_mappings_add_btn\": \"Add mapping\",\n \"ampcode_model_mappings_from_placeholder\": \"from model (source)\",\n \"ampcode_model_mappings_to_placeholder\": \"to model (target)\",\n \"ampcode_model_mappings_count\": \"Mappings Count\",\n \"ampcode_lists_overwrite_title\": \"Overwrite list settings\",\n \"ampcode_lists_overwrite_confirm\": \"Existing multi-upstream/model mapping lists could not be loaded. Continuing may overwrite or clear them. Continue?\",\n \"ampcode_mappings_overwrite_confirm\": \"Existing mappings could not be loaded. Continuing may overwrite or clear them. Continue?\",\n \"openai_title\": \"OpenAI Compatible Providers\",\n \"openai_add_button\": \"Add Provider\",\n \"openai_empty_title\": \"No OpenAI Compatible Providers\",\n \"openai_empty_desc\": \"Click the button above to add the first provider\",\n \"openai_filtered_empty_title\": \"No matching providers\",\n \"openai_filtered_empty_desc\": \"No providers match the current model filter. Clear the filter and try again.\",\n \"sort_by_name\": \"Sort by Name\",\n \"sort_ascending\": \"Sort ascending\",\n \"sort_asc_short\": \"Asc\",\n \"sort_by_priority\": \"Sort by Priority\",\n \"sort_by_recent_success\": \"Sort by Recent Success\",\n \"sort_descending\": \"Sort descending\",\n \"sort_desc_short\": \"Desc\",\n \"openai_test_model\": \"Test Model\",\n \"openai_add_modal_title\": \"Add OpenAI Compatible Provider\",\n \"openai_add_modal_name_label\": \"Provider Name:\",\n \"openai_add_modal_name_placeholder\": \"e.g.: openrouter\",\n \"openai_add_modal_url_label\": \"Base URL:\",\n \"openai_add_modal_url_placeholder\": \"e.g.: https://openrouter.ai/api/v1\",\n \"openai_add_modal_keys_label\": \"API Keys\",\n \"openai_edit_modal_keys_label\": \"API Keys\",\n \"openai_keys_hint\": \"Add each key separately with an optional proxy URL to keep things organized.\",\n \"openai_keys_add_btn\": \"Add Key\",\n \"openai_key_placeholder\": \"sk-... key\",\n \"openai_proxy_placeholder\": \"Optional proxy URL (e.g. socks5://...)\",\n \"openai_add_modal_models_label\": \"Model List (name[, alias] one per line):\",\n \"openai_models_hint\": \"Example: gpt-4o-mini or moonshotai/kimi-k2:free, kimi-k2\",\n \"openai_model_name_placeholder\": \"Model name, e.g. moonshotai/kimi-k2:free\",\n \"openai_model_alias_placeholder\": \"Model alias (optional)\",\n \"openai_models_add_btn\": \"Add Model\",\n \"openai_models_fetch_button\": \"Fetch via /models\",\n \"openai_models_fetch_title\": \"Pick Models from /models\",\n \"openai_models_fetch_hint\": \"Call the /models endpoint using the Base URL above, sending the first API key as Bearer plus custom headers.\",\n \"openai_models_fetch_url_label\": \"Request URL\",\n \"openai_models_fetch_refresh\": \"Refresh\",\n \"openai_models_fetch_loading\": \"Fetching models from /models...\",\n \"openai_models_fetch_empty\": \"No models returned. Please check the endpoint or auth.\",\n \"openai_models_fetch_error\": \"Failed to fetch models\",\n \"openai_models_fetch_back\": \"Back to edit\",\n \"openai_models_fetch_apply\": \"Add selected models\",\n \"openai_models_search_label\": \"Search models\",\n \"openai_models_search_placeholder\": \"Filter by name, alias, or description\",\n \"openai_models_search_empty\": \"No models match your search. Try a different keyword.\",\n \"openai_models_fetch_invalid_url\": \"Please enter a valid Base URL first\",\n \"openai_models_fetch_added\": \"{{count}} new models added\",\n \"openai_edit_modal_title\": \"Edit OpenAI Compatible Provider\",\n \"openai_edit_modal_name_label\": \"Provider Name:\",\n \"openai_edit_modal_url_label\": \"Base URL:\",\n \"openai_edit_modal_models_label\": \"Model List (name[, alias] one per line):\",\n \"openai_delete_confirm\": \"Are you sure you want to delete this OpenAI provider?\",\n \"openai_keys_count\": \"Keys Count\",\n \"openai_models_count\": \"Models Count\",\n \"openai_test_title\": \"Connection Test\",\n \"openai_test_hint\": \"Send a /chat/completions request with the current settings to verify availability.\",\n \"openai_test_model_placeholder\": \"Model to test\",\n \"openai_test_action\": \"Run Test\",\n \"openai_test_running\": \"Sending test request...\",\n \"openai_test_timeout\": \"Test request timed out after {{seconds}} seconds.\",\n \"openai_test_success\": \"Test succeeded. The model responded.\",\n \"openai_test_failed\": \"Test failed\",\n \"openai_test_select_placeholder\": \"Choose from current models\",\n \"openai_test_select_empty\": \"No models configured. Add models first\",\n \"openai_test_single_action\": \"Test\",\n \"openai_test_all_action\": \"Test All Keys\",\n \"openai_test_all_hint\": \"Test connection status for all keys\",\n \"openai_test_all_success\": \"All {{count}} keys passed the test\",\n \"openai_test_all_failed\": \"All {{count}} keys failed the test\",\n \"openai_test_all_partial\": \"Test completed: {{success}} passed, {{failed}} failed\",\n \"model_search_placeholder\": \"Filter by models...\",\n \"model_search_clear\": \"Clear\",\n \"model_select_all\": \"Select All\",\n \"model_filter_empty\": \"No models to filter\"\n },\n \"auth_files\": {\n \"title\": \"Auth Files Management\",\n \"title_section\": \"Auth Files\",\n \"description\": \"Manage all CLI Proxy JSON auth files here (e.g. Qwen, Gemini, Vertex). Uploading a credential immediately enables the corresponding AI integration.\",\n \"upload_button\": \"Upload File\",\n \"delete_all_button\": \"Delete All\",\n \"empty_title\": \"No Auth Files\",\n \"empty_desc\": \"Click the button above to upload the first file\",\n \"search_empty_title\": \"No matching files\",\n \"search_empty_desc\": \"Try changing the filters or clearing the search box.\",\n \"file_size\": \"Size\",\n \"file_modified\": \"Modified\",\n \"health_status_label\": \"Health\",\n \"health_status_healthy\": \"Healthy\",\n \"health_status_warning\": \"Warning\",\n \"health_status_disabled\": \"Disabled\",\n \"health_status_unknown\": \"Unknown\",\n \"health_status_no_message\": \"No status message\",\n \"last_refresh_label\": \"Last Refresh\",\n \"refresh_not_available\": \"N/A\",\n \"refresh_just_now\": \"Just now\",\n \"download_button\": \"Download\",\n \"delete_button\": \"Delete\",\n \"delete_confirm\": \"Are you sure you want to delete file\",\n \"delete_all_confirm\": \"Are you sure you want to delete all auth files? This operation cannot be undone!\",\n \"delete_filtered_confirm\": \"Are you sure you want to delete all {{type}} auth files? This operation cannot be undone!\",\n \"delete_problem_button\": \"Delete Problem Files\",\n \"delete_problem_button_with_type\": \"Delete Problematic {{type}} Files\",\n \"delete_problem_confirm\": \"Are you sure you want to delete all problematic auth files? This operation cannot be undone!\",\n \"delete_problem_filtered_confirm\": \"Are you sure you want to delete all problematic {{type}} auth files? This operation cannot be undone!\",\n \"delete_filtered_result_button\": \"Delete filtered results\",\n \"delete_filtered_result_confirm\": \"Are you sure you want to delete auth files in the current filtered results? This operation cannot be undone!\",\n \"upload_error_json\": \"Only JSON files are allowed\",\n \"upload_error_size\": \"File size cannot exceed {{maxSize}}\",\n \"upload_success\": \"File uploaded successfully\",\n \"download_success\": \"File downloaded successfully\",\n \"delete_success\": \"File deleted successfully\",\n \"delete_all_success\": \"Successfully deleted\",\n \"delete_filtered_success\": \"Deleted {{count}} {{type}} auth files successfully\",\n \"delete_filtered_partial\": \"{{type}} auth files deletion finished: {{success}} succeeded, {{failed}} failed\",\n \"delete_filtered_none\": \"No deletable auth files under the current filter ({{type}})\",\n \"delete_problem_success\": \"Deleted {{count}} problematic auth files successfully\",\n \"delete_problem_filtered_success\": \"Deleted {{count}} problematic {{type}} auth files successfully\",\n \"delete_problem_partial\": \"Problematic auth files deletion finished: {{success}} succeeded, {{failed}} failed\",\n \"delete_problem_filtered_partial\": \"Problematic {{type}} auth files deletion finished: {{success}} succeeded, {{failed}} failed\",\n \"delete_problem_none\": \"No deletable problematic auth files under the current filter\",\n \"delete_problem_filtered_none\": \"No deletable problematic {{type}} auth files under the current filter\",\n \"delete_filtered_result_success\": \"Deleted {{count}} auth files from the filtered results successfully\",\n \"delete_filtered_result_partial\": \"Filtered result deletion finished: {{success}} succeeded, {{failed}} failed\",\n \"delete_filtered_result_none\": \"No deletable auth files in the current filtered results\",\n \"files_count\": \"files\",\n \"pagination_prev\": \"Previous\",\n \"pagination_next\": \"Next\",\n \"pagination_info\": \"Page {{current}} / {{total}} · {{count}} files\",\n \"search_label\": \"Search configs\",\n \"search_placeholder\": \"Filter by name, type, or provider. Use * as a wildcard\",\n \"problem_filter_label\": \"Problem Filter\",\n \"problem_filter_only\": \"Only show problematic credentials\",\n \"disabled_filter_only\": \"Only show disabled credentials\",\n \"display_options_label\": \"Display options\",\n \"compact_mode_label\": \"Compact mode\",\n \"sort_label\": \"Sort\",\n \"sort_default\": \"Default\",\n \"sort_az\": \"A-Z Name\",\n \"sort_priority\": \"Priority\",\n \"priority_display\": \"Priority\",\n \"page_size_label\": \"Per page\",\n \"page_size_unit\": \"items\",\n \"view_mode_paged\": \"Paged\",\n \"view_mode_all\": \"Show all\",\n \"too_many_files_warning\": \"Too many credentials. Showing all may cause performance issues, please use paged view.\",\n \"filter_all\": \"All\",\n \"filter_qwen\": \"Qwen\",\n \"filter_gemini\": \"Gemini\",\n \"filter_gemini-cli\": \"GeminiCLI\",\n \"filter_kimi\": \"Kimi\",\n \"filter_aistudio\": \"AIStudio\",\n \"filter_claude\": \"Claude\",\n \"filter_codex\": \"Codex\",\n \"filter_antigravity\": \"Antigravity\",\n \"filter_xai\": \"xAI\",\n \"filter_iflow\": \"iFlow\",\n \"filter_vertex\": \"Vertex\",\n \"filter_empty\": \"Empty\",\n \"filter_unknown\": \"Other\",\n \"type_qwen\": \"Qwen\",\n \"type_gemini\": \"Gemini\",\n \"type_gemini-cli\": \"GeminiCLI\",\n \"type_kimi\": \"Kimi\",\n \"type_aistudio\": \"AIStudio\",\n \"type_claude\": \"Claude\",\n \"type_codex\": \"Codex\",\n \"type_antigravity\": \"Antigravity\",\n \"type_xai\": \"xAI\",\n \"type_iflow\": \"iFlow\",\n \"type_vertex\": \"Vertex\",\n \"type_empty\": \"Empty\",\n \"type_unknown\": \"Other\",\n \"type_virtual\": \"Virtual auth file\",\n \"models_button\": \"Models\",\n \"models_title\": \"Supported models\",\n \"models_loading\": \"Loading model list...\",\n \"models_empty\": \"No available models for this credential\",\n \"models_empty_desc\": \"This credential may not be loaded by the server yet, or no models are bound to it.\",\n \"models_unsupported\": \"This feature is not supported in the current version\",\n \"models_unsupported_desc\": \"Please update CLI Proxy API to the latest version and try again\",\n \"models_excluded_badge\": \"Disabled\",\n \"models_excluded_hint\": \"This OAuth model is disabled\",\n \"status_toggle_label\": \"Enabled\",\n \"status_enabled_success\": \"\\\"{{name}}\\\" enabled\",\n \"status_disabled_success\": \"\\\"{{name}}\\\" disabled\",\n \"batch_status_success\": \"{{count}} files updated successfully\",\n \"batch_status_partial\": \"{{success}} updated, {{failed}} failed\",\n \"batch_delete_title\": \"Delete Selected Files\",\n \"batch_delete_confirm\": \"Are you sure you want to delete {{count}} files?\",\n \"batch_selected\": \"{{count}} selected\",\n \"batch_select_all\": \"Select All\",\n \"batch_select_page\": \"Select page\",\n \"batch_select_filtered\": \"Select filtered\",\n \"batch_invert_page\": \"Invert page\",\n \"batch_deselect\": \"Deselect\",\n \"batch_download\": \"Download selected\",\n \"batch_download_success\": \"Started downloading {{count}} files\",\n \"batch_download_partial\": \"Download finished: {{success}} succeeded, {{failed}} failed\",\n \"batch_enable\": \"Enable\",\n \"batch_disable\": \"Disable\",\n \"prefix_proxy_button\": \"Auth File Details / Edit\",\n \"auth_field_editor_title\": \"Auth File Details / Edit - {{name}}\",\n \"prefix_proxy_loading\": \"Loading auth file...\",\n \"prefix_proxy_info_label\": \"Auth file info (info)\",\n \"prefix_proxy_source_label\": \"Auth file JSON (preview)\",\n \"prefix_proxy_invalid_content_label\": \"Downloaded content (truncated)\",\n \"prefix_label\": \"Prefix (prefix)\",\n \"proxy_url_label\": \"Proxy URL (proxy_url)\",\n \"prefix_placeholder\": \"\",\n \"proxy_url_placeholder\": \"socks5://username:password@proxy_ip:port/\",\n \"priority_label\": \"Priority (priority)\",\n \"priority_placeholder\": \"e.g. 10 or -1\",\n \"priority_hint\": \"Integers only. Invalid values are ignored. Larger value means higher priority.\",\n \"websockets_label\": \"WebSockets (websockets)\",\n \"websockets_hint\": \"Enable Responses API websocket transport for this credential.\",\n \"codex_websockets_label\": \"WebSockets (websockets)\",\n \"codex_websockets_hint\": \"Enable Responses API websocket transport for this Codex credential.\",\n \"excluded_models_label\": \"Excluded models (excluded_models)\",\n \"excluded_models_placeholder\": \"Comma or newline separated, e.g. model-a, gpt-5-*, *-preview\",\n \"excluded_models_hint\": \"Saved as an array and normalized by trim/lowercase/dedup/sort.\",\n \"disable_cooling_label\": \"Disable cooling (disable_cooling)\",\n \"disable_cooling_placeholder\": \"e.g. true / false / 1 / 0\",\n \"disable_cooling_hint\": \"Supports booleans, numeric 0/non-0, and strings like true/false/1/0; unparseable values are ignored.\",\n \"using_api_label\": \"Use official API (using_api)\",\n \"using_api_hint\": \"Use the official xAI API when enabled; use Grok CLI chat-proxy when disabled.\",\n \"note_label\": \"Note\",\n \"note_placeholder\": \"Enter a note, e.g.: John's account\",\n \"note_hint\": \"Optional. Used to describe the purpose or owner of this credential; leave empty to omit.\",\n \"note_display\": \"Note\",\n \"headers_label\": \"Custom Headers (headers)\",\n \"headers_placeholder\": \"{\\n \\\"Header-Name\\\": \\\"value\\\"\\n}\",\n \"headers_hint\": \"Enter custom HTTP headers as a JSON object, e.g., {\\\"X-My-Header\\\": \\\"value\\\"}\",\n \"headers_invalid_json\": \"Custom headers must be valid JSON.\",\n \"headers_invalid_object\": \"Custom headers must be a JSON object.\",\n \"headers_invalid_value\": \"Each custom header value must be a string.\",\n \"prefix_proxy_invalid_json\": \"This auth file is not a JSON object, so fields cannot be edited.\",\n \"prefix_proxy_html_challenge\": \"Downloaded content is an HTML challenge page, not an auth JSON object. Re-authenticate or replace this auth file before editing fields.\",\n \"prefix_proxy_saved_success\": \"Updated auth file \\\"{{name}}\\\" successfully\",\n \"quota_refresh_single\": \"Refresh quota\",\n \"quota_refresh_hint\": \"Refresh quota only for this credential\",\n \"quota_refresh_success\": \"Quota refreshed for \\\"{{name}}\\\"\",\n \"quota_refresh_failed\": \"Failed to refresh quota for \\\"{{name}}\\\": {{message}}\"\n },\n \"antigravity_quota\": {\n \"title\": \"Antigravity Quota\",\n \"empty_title\": \"No Antigravity Auth Files\",\n \"empty_desc\": \"Upload an Antigravity credential to view remaining quota.\",\n \"idle\": \"Click here to refresh quota\",\n \"loading\": \"Loading quota...\",\n \"load_failed\": \"Failed to load quota: {{message}}\",\n \"missing_auth_index\": \"Auth file missing auth_index\",\n \"empty_models\": \"No quota data available\",\n \"refresh_button\": \"Refresh Quota\",\n \"fetch_all\": \"Fetch All\"\n },\n \"claude_quota\": {\n \"title\": \"Claude Quota\",\n \"empty_title\": \"No Claude OAuth Files\",\n \"empty_desc\": \"Log in with Claude OAuth to view quota.\",\n \"idle\": \"Click here to refresh quota\",\n \"loading\": \"Loading quota...\",\n \"load_failed\": \"Failed to load quota: {{message}}\",\n \"missing_auth_index\": \"Auth file missing auth_index\",\n \"empty_windows\": \"No quota data available\",\n \"refresh_button\": \"Refresh Quota\",\n \"fetch_all\": \"Fetch All\",\n \"five_hour\": \"5-hour limit\",\n \"seven_day\": \"7-day limit\",\n \"seven_day_oauth_apps\": \"7-day OAuth apps\",\n \"seven_day_opus\": \"7-day Opus\",\n \"seven_day_sonnet\": \"7-day Sonnet\",\n \"seven_day_cowork\": \"7-day Cowork\",\n \"iguana_necktie\": \"Iguana Necktie\",\n \"seven_day_fable\": \"7-day Fable 5\",\n \"extra_usage_label\": \"Extra Usage\",\n \"plan_label\": \"Plan\",\n \"plan_unknown\": \"Unknown\",\n \"plan_free\": \"Free\",\n \"plan_pro\": \"Pro\",\n \"plan_max\": \"Max\",\n \"plan_max5\": \"Max 5x\",\n \"plan_max20\": \"Max 20x\",\n \"plan_team\": \"Team\"\n },\n \"gemini_cli_quota\": {\n \"title\": \"Gemini CLI Quota\",\n \"empty_title\": \"No Gemini CLI Auth Files\",\n \"empty_desc\": \"Upload a Gemini CLI credential to view remaining quota.\",\n \"idle\": \"Click here to refresh quota\",\n \"loading\": \"Loading quota...\",\n \"load_failed\": \"Failed to load quota: {{message}}\",\n \"missing_auth_index\": \"Auth file missing auth_index\",\n \"missing_project_id\": \"Gemini CLI credential missing project ID\",\n \"empty_buckets\": \"No quota data available\",\n \"refresh_button\": \"Refresh Quota\",\n \"fetch_all\": \"Fetch All\",\n \"remaining_amount\": \"Remaining {{count}}\",\n \"tier_label\": \"Tier\",\n \"tier_free\": \"Free\",\n \"tier_legacy\": \"Legacy\",\n \"tier_standard\": \"Standard\",\n \"tier_pro\": \"Pro\",\n \"tier_ultra\": \"Ultra\",\n \"credit_label\": \"Google One AI Credits\",\n \"credit_amount\": \"{{count}} credits\"\n },\n \"kimi_quota\": {\n \"title\": \"Kimi Quota\",\n \"empty_title\": \"No Kimi Auth Files\",\n \"empty_desc\": \"Upload a Kimi credential to view remaining quota.\",\n \"idle\": \"Click here to refresh quota\",\n \"loading\": \"Loading quota...\",\n \"load_failed\": \"Failed to load quota: {{message}}\",\n \"missing_auth_index\": \"Auth file missing auth_index\",\n \"empty_data\": \"No quota data available\",\n \"refresh_button\": \"Refresh Quota\",\n \"fetch_all\": \"Fetch All\",\n \"weekly_limit\": \"Weekly limit\",\n \"limit_window\": \"{{duration}} limit\",\n \"limit_index\": \"Limit #{{index}}\",\n \"reset_hint\": \"resets in {{hint}}\",\n \"reset_at\": \"Resets {{time}}\"\n },\n \"xai_quota\": {\n \"title\": \"Grok Quota\",\n \"empty_title\": \"No xAI/Grok Auth Files\",\n \"empty_desc\": \"Log in with xAI OAuth to view Grok quota.\",\n \"idle\": \"Click here to refresh quota\",\n \"loading\": \"Loading quota...\",\n \"load_failed\": \"Failed to load quota: {{message}}\",\n \"missing_auth_index\": \"Auth file missing auth_index\",\n \"empty_data\": \"No quota data available\",\n \"refresh_button\": \"Refresh Quota\",\n \"fetch_all\": \"Fetch All\",\n \"weekly_limit\": \"Weekly limit\",\n \"monthly_credits\": \"Monthly credits\",\n \"used_percent\": \"Used {{percent}}\",\n \"reset_at\": \"Resets {{time}}\",\n \"product_usage\": \"{{product}} usage\",\n \"plan_label\": \"Plan\",\n \"plan_supergrok\": \"SuperGrok\",\n \"plan_supergrok_heavy\": \"SuperGrok Heavy\",\n \"pay_as_you_go_label\": \"Pay as you go\",\n \"pay_as_you_go_enabled\": \"Enabled, cap {{cap}}\",\n \"pay_as_you_go_disabled\": \"Disabled\"\n },\n \"vertex_import\": {\n \"title\": \"Vertex JSON Login\",\n \"description\": \"Upload a Google service account JSON to store it as auth-dir/vertex-<project>.json using the same rules as the CLI vertex-import helper.\",\n \"location_label\": \"Region (optional)\",\n \"location_placeholder\": \"us-central1\",\n \"location_hint\": \"Leave empty to use the default region us-central1.\",\n \"file_label\": \"Service account key JSON\",\n \"file_hint\": \"Only Google Cloud service account key JSON files are accepted.\",\n \"file_placeholder\": \"No file selected\",\n \"choose_file\": \"Choose File\",\n \"import_button\": \"Import Vertex Credential\",\n \"file_required\": \"Select a .json credential file first\",\n \"success\": \"Vertex credential imported successfully\",\n \"result_title\": \"Credential saved\",\n \"result_project\": \"Project ID\",\n \"result_email\": \"Service account\",\n \"result_location\": \"Region\",\n \"result_file\": \"Persisted file\"\n },\n \"oauth_excluded\": {\n \"title\": \"OAuth Model Disablement\",\n \"description\": \"Per-provider model disablement is shown as cards; click a card to edit or delete. Wildcards * are supported and the scope follows the auth file filter.\",\n \"add\": \"Add Disablement\",\n \"add_title\": \"Add provider model disablement\",\n \"edit_title\": \"Edit model disablement for {{provider}}\",\n \"refresh\": \"Refresh\",\n \"refreshing\": \"Refreshing...\",\n \"provider_label\": \"Provider\",\n \"provider_auto\": \"Follow current filter\",\n \"provider_placeholder\": \"e.g. gemini-cli\",\n \"provider_hint\": \"Defaults to the current filter; pick an existing provider or type a new name.\",\n \"models_label\": \"Models to disable\",\n \"models_loading\": \"Loading models...\",\n \"models_unsupported\": \"Current CPA version does not support fetching model lists.\",\n \"models_loaded\": \"{{count}} models loaded. Check the models to disable.\",\n \"no_models_available\": \"No models available for this provider.\",\n \"custom_rule_label\": \"Custom model rule\",\n \"custom_rule_hint\": \"Enter an exact model ID or a wildcard rule such as gpt-*.\",\n \"custom_rule_placeholder\": \"e.g. gpt-* / custom-model\",\n \"custom_rule_add\": \"Add rule\",\n \"custom_rules_label\": \"Configured custom rules\",\n \"custom_rule_remove\": \"Remove {{rule}}\",\n \"save\": \"Save/Update\",\n \"saving\": \"Saving...\",\n \"save_success\": \"Model disablement updated\",\n \"save_failed\": \"Failed to update model disablement\",\n \"delete\": \"Delete Provider\",\n \"delete_confirm\": \"Delete model disablement for {{provider}}?\",\n \"delete_success\": \"Provider model disablement removed\",\n \"delete_failed\": \"Failed to delete model disablement\",\n \"deleting\": \"Deleting...\",\n \"no_models\": \"No disabled models configured\",\n \"model_count\": \"{{count}} models disabled\",\n \"list_empty_all\": \"No provider model disablement yet; click “Add Disablement” to create one.\",\n \"list_empty_filtered\": \"No disabled items in this scope; click “Add Disablement” to add.\",\n \"disconnected\": \"Connect to the server to view model disablement\",\n \"load_failed\": \"Failed to load model disablement\",\n \"provider_required\": \"Please enter a provider first\",\n \"scope_all\": \"Scope: All providers\",\n \"scope_provider\": \"Scope: {{provider}}\",\n \"upgrade_required\": \"Current CPA version does not support OAuth model disablement. Please upgrade.\",\n \"upgrade_required_title\": \"Please upgrade CLI Proxy API\",\n \"upgrade_required_desc\": \"The current server version does not support fetching OAuth model disablement. Please upgrade to the latest CPA (CLI Proxy API) version and try again.\"\n },\n \"oauth_model_alias\": {\n \"title\": \"OAuth Model Aliases\",\n \"add\": \"Add Alias\",\n \"add_title\": \"Add provider model aliases\",\n \"provider_label\": \"Provider\",\n \"provider_placeholder\": \"e.g. gemini-cli / vertex\",\n \"provider_hint\": \"Defaults to the current filter; pick an existing provider or type a new name.\",\n \"model_source_loading\": \"Loading models...\",\n \"model_source_unsupported\": \"The current CPA version does not support fetching model lists (manual input still works).\",\n \"model_source_loaded\": \"{{count}} models loaded. Use the dropdown in 'Source model name', or type custom values. Saving an empty list removes that provider. Enable 'Keep original' to keep the original name while adding the alias.\",\n \"alias_label\": \"Model aliases\",\n \"alias_name_placeholder\": \"Source model name\",\n \"alias_placeholder\": \"Alias (required)\",\n \"duplicate_alias\": \"Each alias must be unique for this provider.\",\n \"alias_fork_label\": \"Keep original\",\n \"add_alias\": \"Add alias\",\n \"save\": \"Save/Update\",\n \"save_success\": \"Model aliases updated\",\n \"save_failed\": \"Failed to update model aliases\",\n \"delete\": \"Delete Provider\",\n \"delete_confirm\": \"Delete model aliases for {{provider}}?\",\n \"delete_link_title\": \"Unlink mapping\",\n \"delete_link_confirm\": \"Unlink mapping from <code>{{sourceModel}}</code> ({{provider}}) to alias <code>{{alias}}</code>?\",\n \"delete_alias_title\": \"Delete Alias\",\n \"delete_alias_confirm\": \"Delete alias <code>{{alias}}</code> and unmap all associated models?\",\n \"delete_success\": \"Model aliases removed\",\n \"delete_failed\": \"Failed to delete model aliases\",\n \"no_models\": \"No model aliases\",\n \"model_count\": \"{{count}} aliases\",\n \"list_empty_all\": \"No model aliases yet—use “Add Alias” to create one.\",\n \"chart_title\": \"All mappings overview\",\n \"diagram_providers\": \"Providers\",\n \"diagram_source_models\": \"Source Models\",\n \"diagram_aliases\": \"Aliases\",\n \"diagram_expand\": \"Expand\",\n \"diagram_collapse\": \"Collapse\",\n \"diagram_add_alias\": \"Add Alias\",\n \"diagram_rename\": \"Rename\",\n \"diagram_rename_alias_title\": \"Rename alias\",\n \"diagram_rename_alias_label\": \"New alias name\",\n \"diagram_rename_placeholder\": \"Enter alias name...\",\n \"diagram_delete_link\": \"Unlink from {{provider}} / {{name}}\",\n \"diagram_delete_alias\": \"Delete alias\",\n \"diagram_please_enter_alias\": \"Please enter an alias name.\",\n \"diagram_alias_exists\": \"This alias already exists.\",\n \"diagram_add_alias_title\": \"Add alias\",\n \"diagram_add_alias_label\": \"Alias name\",\n \"diagram_add_placeholder\": \"Enter new alias name...\",\n \"diagram_rename_btn\": \"Rename\",\n \"diagram_add_btn\": \"Add\",\n \"diagram_settings\": \"Settings\",\n \"diagram_settings_title\": \"Alias settings — {{alias}}\",\n \"diagram_settings_source_title\": \"Source model settings\",\n \"diagram_settings_empty\": \"No mappings for this alias yet.\",\n \"diagram_tap_hint\": \"On touch devices: tap a source model, then tap an alias to link.\",\n \"view_mode\": \"View mode\",\n \"view_mode_diagram\": \"Diagram\",\n \"view_mode_list\": \"List\",\n \"provider_required\": \"Please enter a provider first\",\n \"upgrade_required\": \"This feature requires a newer CLI Proxy API (CPA) version. Please upgrade.\",\n \"upgrade_required_title\": \"Please upgrade CLI Proxy API\",\n \"upgrade_required_desc\": \"The current server does not support the OAuth model aliases API. Please upgrade to the latest CLI Proxy API (CPA) version.\"\n },\n \"auth_login\": {\n \"codex_oauth_title\": \"Codex OAuth\",\n \"codex_oauth_button\": \"Start Codex Login\",\n \"codex_oauth_hint\": \"Login to Codex service through OAuth flow, automatically obtain and save authentication files.\",\n \"codex_oauth_url_label\": \"Authorization URL:\",\n \"codex_open_link\": \"Open Link\",\n \"codex_copy_link\": \"Copy Link\",\n \"codex_oauth_status_waiting\": \"Waiting for authentication...\",\n \"codex_oauth_status_success\": \"Authentication successful!\",\n \"codex_oauth_status_error\": \"Authentication failed:\",\n \"codex_oauth_start_error\": \"Failed to start Codex OAuth:\",\n \"codex_oauth_polling_error\": \"Failed to check authentication status:\",\n \"anthropic_oauth_title\": \"Anthropic OAuth\",\n \"anthropic_oauth_button\": \"Start Anthropic Login\",\n \"anthropic_oauth_hint\": \"Login to Anthropic (Claude) service through OAuth flow, automatically obtain and save authentication files.\",\n \"anthropic_oauth_url_label\": \"Authorization URL:\",\n \"anthropic_open_link\": \"Open Link\",\n \"anthropic_copy_link\": \"Copy Link\",\n \"anthropic_oauth_status_waiting\": \"Waiting for authentication...\",\n \"anthropic_oauth_status_success\": \"Authentication successful!\",\n \"anthropic_oauth_status_error\": \"Authentication failed:\",\n \"anthropic_oauth_start_error\": \"Failed to start Anthropic OAuth:\",\n \"anthropic_oauth_polling_error\": \"Failed to check authentication status:\",\n \"antigravity_oauth_title\": \"Antigravity OAuth\",\n \"antigravity_oauth_button\": \"Start Antigravity Login\",\n \"antigravity_oauth_hint\": \"Login to Antigravity service (Google account) through OAuth flow, automatically obtain and save authentication files.\",\n \"antigravity_oauth_url_label\": \"Authorization URL:\",\n \"antigravity_open_link\": \"Open Link\",\n \"antigravity_copy_link\": \"Copy Link\",\n \"antigravity_oauth_status_waiting\": \"Waiting for authentication...\",\n \"antigravity_oauth_status_success\": \"Authentication successful!\",\n \"antigravity_oauth_status_error\": \"Authentication failed:\",\n \"antigravity_oauth_start_error\": \"Failed to start Antigravity OAuth:\",\n \"antigravity_oauth_polling_error\": \"Failed to check authentication status:\",\n \"gemini_cli_oauth_title\": \"Gemini CLI OAuth\",\n \"gemini_cli_oauth_button\": \"Start Gemini CLI Login\",\n \"gemini_cli_oauth_hint\": \"Login to Google Gemini CLI service through OAuth flow, automatically obtain and save authentication files.\",\n \"gemini_cli_project_id_label\": \"Google Cloud Project ID (Optional):\",\n \"gemini_cli_project_id_placeholder\": \"Leave blank to auto-select first available project\",\n \"gemini_cli_project_id_hint\": \"Optional. If not provided, the system will automatically select the first available project from your account. Enter ALL to fetch all projects.\",\n \"gemini_cli_project_id_required\": \"Please enter a Google Cloud project ID.\",\n \"gemini_cli_oauth_url_label\": \"Authorization URL:\",\n \"gemini_cli_open_link\": \"Open Link\",\n \"gemini_cli_copy_link\": \"Copy Link\",\n \"gemini_cli_oauth_status_waiting\": \"Waiting for authentication...\",\n \"gemini_cli_oauth_status_success\": \"Authentication successful!\",\n \"gemini_cli_oauth_status_error\": \"Authentication failed:\",\n \"gemini_cli_oauth_start_error\": \"Failed to start Gemini CLI OAuth:\",\n \"gemini_cli_oauth_polling_error\": \"Failed to check authentication status:\",\n \"kimi_oauth_title\": \"Kimi OAuth\",\n \"kimi_oauth_button\": \"Start Kimi Login\",\n \"kimi_oauth_hint\": \"Login to Kimi service through OAuth device flow, automatically obtain and save authentication files.\",\n \"kimi_oauth_url_label\": \"Authorization URL:\",\n \"kimi_open_link\": \"Open Link\",\n \"kimi_copy_link\": \"Copy Link\",\n \"kimi_oauth_status_waiting\": \"Waiting for authentication...\",\n \"kimi_oauth_status_success\": \"Authentication successful!\",\n \"kimi_oauth_status_error\": \"Authentication failed:\",\n \"kimi_oauth_start_error\": \"Failed to start Kimi OAuth:\",\n \"kimi_oauth_polling_error\": \"Failed to check authentication status:\",\n \"xai_oauth_title\": \"xAI OAuth\",\n \"xai_oauth_button\": \"Start xAI Login\",\n \"xai_oauth_hint\": \"Login to xAI Grok through OAuth flow, automatically obtain and save authentication files.\",\n \"xai_oauth_url_label\": \"Authorization URL:\",\n \"xai_open_link\": \"Open Link\",\n \"xai_copy_link\": \"Copy Link\",\n \"xai_oauth_status_waiting\": \"Waiting for authentication...\",\n \"xai_oauth_status_success\": \"Authentication successful!\",\n \"xai_oauth_status_error\": \"Authentication failed:\",\n \"xai_oauth_start_error\": \"Failed to start xAI OAuth:\",\n \"xai_oauth_polling_error\": \"Failed to check authentication status:\",\n \"xai_callback_label\": \"Callback URL or code\",\n \"xai_callback_placeholder\": \"Paste the code shown by Grok, or the full callback URL\",\n \"xai_callback_hint\": \"Grok may only show a code on the page. Paste that code directly and the app will submit it as http://127.0.0.1:56121/callback?... automatically.\",\n \"xai_callback_required\": \"Please paste the code shown by Grok or the full callback URL first.\",\n \"xai_callback_state_missing\": \"Missing the state for this xAI login. Start xAI login again, then submit the code.\",\n \"oauth_callback_label\": \"Callback URL\",\n \"oauth_callback_placeholder\": \"http://localhost:1455/auth/callback?code=...&state=...\",\n \"oauth_callback_hint\": \"Remote browser mode: after the provider redirects to http://localhost:..., copy the full URL and submit it here.\",\n \"oauth_callback_button\": \"Submit Callback URL\",\n \"oauth_callback_required\": \"Please paste the full redirect URL first.\",\n \"oauth_callback_success\": \"Callback URL submitted. Continue waiting for authentication.\",\n \"oauth_callback_error\": \"Failed to submit callback URL:\",\n \"oauth_callback_upgrade_hint\": \"Please update CLI Proxy API or check the connection.\",\n \"oauth_callback_status_success\": \"Callback URL submitted, waiting for authentication...\",\n \"oauth_callback_status_error\": \"Callback URL submission failed:\",\n \"missing_state\": \"Unable to retrieve authentication state parameter\",\n \"login_another_account\": \"Log in another account\",\n \"view_auth_files\": \"View auth files\",\n \"iflow_oauth_title\": \"iFlow OAuth\",\n \"iflow_oauth_button\": \"Start iFlow Login\",\n \"iflow_oauth_hint\": \"Login to iFlow service through OAuth flow, automatically obtain and save authentication files.\",\n \"iflow_oauth_url_label\": \"Authorization URL:\",\n \"iflow_open_link\": \"Open Link\",\n \"iflow_copy_link\": \"Copy Link\",\n \"iflow_oauth_status_waiting\": \"Waiting for authentication...\",\n \"iflow_oauth_status_success\": \"Authentication successful!\",\n \"iflow_oauth_status_error\": \"Authentication failed:\",\n \"iflow_oauth_start_error\": \"Failed to start iFlow OAuth:\",\n \"iflow_oauth_polling_error\": \"Failed to check authentication status:\",\n \"remote_access_disabled\": \"This login method is not available for remote access. Please access from localhost.\"\n },\n \"stats\": {\n \"success\": \"Success\",\n \"failure\": \"Failure\"\n },\n \"status_bar\": {\n \"success_short\": \"✓\",\n \"failure_short\": \"✗\",\n \"no_requests\": \"No requests\"\n },\n \"usage_stats\": {\n \"title\": \"Usage Statistics\",\n \"total_requests\": \"Total Requests\",\n \"success_requests\": \"Success Requests\",\n \"failed_requests\": \"Failed Requests\",\n \"total_tokens\": \"Total Tokens\",\n \"cached_tokens\": \"Cached Tokens\",\n \"cache_read_tokens\": \"Cache Read Tokens\",\n \"cache_write_tokens\": \"Cache Write Tokens\",\n \"reasoning_tokens\": \"Reasoning Tokens\",\n \"rpm_30m\": \"RPM\",\n \"tpm_30m\": \"TPM\",\n \"rate_30m\": \"Rate (last 30 min)\",\n \"model_name\": \"Model Name\",\n \"model_price_settings\": \"Model Pricing Settings\",\n \"saved_prices\": \"Saved Prices\",\n \"requests_trend\": \"Request Trends\",\n \"tokens_trend\": \"Token Usage Trends\",\n \"api_details\": \"API Details\",\n \"by_hour\": \"By Hour\",\n \"by_day\": \"By Day\",\n \"range_filter\": \"Time Range\",\n \"range_all\": \"All Time\",\n \"range_1h\": \"Last 1 Hour\",\n \"range_7h\": \"Last 7 Hours\",\n \"range_24h\": \"Last 24 Hours\",\n \"range_7d\": \"Last 7 Days\",\n \"range_30d\": \"Last 30 Days\",\n \"filter_all\": \"All\",\n \"clear_filters\": \"Clear Filters\",\n \"refresh\": \"Refresh\",\n \"export\": \"Export\",\n \"import\": \"Import\",\n \"export_csv\": \"Export CSV\",\n \"export_json\": \"Export JSON\",\n \"export_success\": \"Usage export downloaded\",\n \"import_success\": \"Import complete: added {{added}}, skipped {{skipped}}, total {{total}}, failed {{failed}}\",\n \"import_success_migrated_v1\": \"Import complete: added {{added}}, skipped {{skipped}}, total {{total}}, failed {{failed}}. Token contract migrated from schema v1 to v{{schemaVersion}}.\",\n \"import_invalid\": \"Invalid usage export file\",\n \"import_review_title\": \"Review usage import\",\n \"import_review_intro\": \"Imports are additive. Review this snapshot before merging it into the current Core usage data.\",\n \"import_review_summary\": \"Version {{version}} · {{details}} request details\",\n \"import_review_duplicates\": \"{{count}} potential duplicates inside this file\",\n \"import_review_overlaps\": \"{{count}} potential overlaps with current usage\",\n \"import_review_uncertain_identities\": \"{{count}} details without a stable timestamp were excluded from duplicate and overlap detection\",\n \"import_review_current_unavailable\": \"Current usage was unavailable, so overlap detection could not be completed.\",\n \"import_error_usage_version_unsupported\": \"Unsupported usage export version. Only schema v1 and v2 can be imported.\",\n \"import_error_usage_shape_invalid\": \"Invalid usage export structure or field type.\",\n \"import_error_usage_v1_token_contract_invalid\": \"The schema v1 token contract is invalid and cannot be migrated safely.\",\n \"import_error_usage_v1_cache_semantics_ambiguous\": \"Schema v1 cache semantics are ambiguous. Cached details require uncached_input_tokens for a lossless migration.\",\n \"import_error_usage_v2_token_contract_invalid\": \"Invalid canonical schema v2 token contract.\",\n \"import_error_usage_aggregate_overflow\": \"Import would overflow Core usage aggregates. No usage data was merged.\",\n \"import_review_confirm\": \"Import anyway\",\n \"chart_line_label_1\": \"Line 1\",\n \"chart_line_label_2\": \"Line 2\",\n \"chart_line_label_3\": \"Line 3\",\n \"chart_line_label_4\": \"Line 4\",\n \"chart_line_label_5\": \"Line 5\",\n \"chart_line_label_6\": \"Line 6\",\n \"chart_line_label_7\": \"Line 7\",\n \"chart_line_label_8\": \"Line 8\",\n \"chart_line_label_9\": \"Line 9\",\n \"chart_line_hidden\": \"Hide\",\n \"chart_line_actions_label\": \"Lines to display\",\n \"chart_line_add\": \"Add line\",\n \"chart_line_all\": \"All\",\n \"chart_line_delete\": \"Delete line\",\n \"chart_line_hint\": \"Show up to 9 model lines at once\",\n \"no_data\": \"No Data Available\",\n \"loading_error\": \"Loading Failed\",\n \"api_endpoint\": \"API Endpoint\",\n \"requests_count\": \"Request Count\",\n \"tokens_count\": \"Token Count\",\n \"model_cache_rate\": \"Cache Read Share\",\n \"model_cache_rate_hint\": \"Cache Read Share = Cache Read Tokens / Total Input Tokens. It is shown only when every request in the model statistic has recorded detail; otherwise it is not set.\",\n \"models\": \"Model Statistics\",\n \"success_rate\": \"Success Rate\",\n \"total_cost\": \"Total Cost\",\n \"total_cost_hint\": \"Based on configured model pricing\",\n \"model_price_title\": \"Model Pricing\",\n \"model_price_reset\": \"Clear Prices\",\n \"model_price_model_label\": \"Model\",\n \"model_price_select_placeholder\": \"Choose a model\",\n \"model_price_select_hint\": \"Models come from usage details\",\n \"model_price_prompt\": \"Prompt price\",\n \"model_price_completion\": \"Completion price\",\n \"model_price_cache\": \"Cache read price\",\n \"model_price_cache_write\": \"Cache write price\",\n \"model_price_cache_write_auto\": \"Auto\",\n \"model_price_cache_write_hint\": \"Leave blank to use the current prompt price. Existing Auto entries also follow this default.\",\n \"model_price_invalid\": \"Enter a valid number greater than or equal to 0.\",\n \"model_price_save\": \"Save Price\",\n \"model_price_empty\": \"No model prices set\",\n \"model_price_model\": \"Model\",\n \"model_price_saved\": \"Model price saved\",\n \"model_price_model_required\": \"Please choose a model to set pricing\",\n \"pricing_title\": \"Pricing workspace\",\n \"pricing_subtitle\": \"Estimate API-equivalent USD from the current API catalog, browser-local profile, usage tokens, service tier, and context band.\",\n \"pricing_back\": \"Back to Usage\",\n \"pricing_open\": \"Configure pricing\",\n \"pricing_catalog\": \"Preset catalog\",\n \"pricing_catalog_version\": \"Catalog version\",\n \"pricing_catalog_title\": \"Preset price table\",\n \"pricing_catalog_description\": \"All {{count}} verified preset models remain visible without usage. The catalog was updated on {{asOf}}; every row links to its official source and browser-local custom overrides are excluded.\",\n \"pricing_catalog_unit\": \"USD / 1M tokens\",\n \"pricing_catalog_table_label\": \"Complete preset price table\",\n \"pricing_catalog_context_band\": \"Context band\",\n \"pricing_catalog_short_band\": \"Short context\",\n \"pricing_catalog_long_band\": \"Long context\",\n \"pricing_catalog_short_range\": \"< {{threshold}} input tokens\",\n \"pricing_catalog_long_range\": \"≥ {{threshold}} input tokens · entire request\",\n \"pricing_catalog_all_contexts\": \"All supported contexts\",\n \"pricing_catalog_aliases\": \"Aliases: {{aliases}}\",\n \"pricing_catalog_model_notes\": \"Model notes\",\n \"pricing_catalog_verified_as_of\": \"Verified: {{asOf}}\",\n \"pricing_catalog_unavailable\": \"Unavailable\",\n \"pricing_catalog_fast_explicit_summary\": \"In {{input}} · Cached {{cached}} · Write {{cacheWrite}} · Out {{output}}\",\n \"pricing_source\": \"Official source\",\n \"pricing_api_source\": \"API pricing source\",\n \"pricing_estimate_notice\": \"Local API-equivalent estimates are references, not provider invoices.\",\n \"pricing_browser_notice\": \"The profile is stored only in this browser and can be shared across Core instances opened here.\",\n \"pricing_history_notice\": \"All historical requests are recalculated with the current catalog and profile.\",\n \"pricing_migrated_v2\": \"Legacy v2 prices were preserved as a v3 profile. Matching short-rate overrides can be switched to complete presets after confirmation.\",\n \"pricing_profile_warning\": \"The saved pricing profile contained invalid data. Review the current defaults before saving.\",\n \"pricing_profile_save_failed\": \"Could not save the pricing profile in this browser.\",\n \"pricing_profile_saved\": \"Pricing profile saved\",\n \"pricing_summary\": \"Pricing coverage summary\",\n \"pricing_api_usd_estimate\": \"Local API-equivalent estimate (USD)\",\n \"pricing_api_usd\": \"Local API-equivalent amount\",\n \"pricing_api_request_coverage\": \"Local estimate request coverage\",\n \"pricing_requests_unit\": \"requests\",\n \"pricing_models_metric\": \"Priced models / actual models\",\n \"pricing_request_coverage\": \"Priced request coverage\",\n \"pricing_token_coverage\": \"Priced token coverage\",\n \"pricing_assumed_tier\": \"Assumed-tier requests\",\n \"pricing_assumed_tier_hint\": \"Historical or unknown tiers priced as Std\",\n \"pricing_cost_incomplete\": \"The local estimate is incomplete; unmatched, unsupported, or detail-less usage is excluded.\",\n \"pricing_partial_coverage\": \"Partial local estimate: {{request}}% of requests and {{token}}% of tokens are covered.\",\n \"pricing_entry_title\": \"Local API-equivalent estimate\",\n \"pricing_entry_description\": \"Amounts are calculated entirely in this browser from the catalog, profile, tokens, service tier, and context band.\",\n \"pricing_models_covered\": \"{{priced}} / {{total}} models priced\",\n \"pricing_requests_covered\": \"{{percent}}% request coverage\",\n \"pricing_models_ratio\": \"{{percent}}% model coverage\",\n \"pricing_search\": \"Search actual usage models\",\n \"pricing_filter\": \"Pricing status filter\",\n \"pricing_filter_all\": \"All\",\n \"pricing_filter_preset\": \"Preset\",\n \"pricing_filter_custom\": \"Custom\",\n \"pricing_filter_unmatched\": \"Locally unmatched\",\n \"pricing_filter_anomaly\": \"Anomaly\",\n \"pricing_import_action\": \"Import profile\",\n \"pricing_export_action\": \"Export profile\",\n \"pricing_reset_action\": \"Restore all defaults\",\n \"pricing_export_success\": \"Pricing profile exported\",\n \"pricing_import_title\": \"Import pricing profile\",\n \"pricing_import_confirm\": \"Replace the current browser v3 API pricing profile with this validated file? Usage data is not changed.\",\n \"pricing_import_success\": \"Pricing profile imported\",\n \"pricing_import_invalid\": \"Invalid pricing profile\",\n \"pricing_reset_title\": \"Restore all preset prices\",\n \"pricing_reset_confirm\": \"Clear every v3 API price override and alias? Usage data will remain unchanged.\",\n \"pricing_reset_success\": \"Preset pricing restored\",\n \"pricing_empty_title\": \"No usage models yet\",\n \"pricing_empty_description\": \"The configurator only shows models that exist in real usage. Generate or import usage data first.\",\n \"pricing_standard_short\": \"Standard short\",\n \"pricing_standard_api\": \"API Standard\",\n \"pricing_fast\": \"Fast\",\n \"pricing_fast_policies\": \"Fast policies\",\n \"pricing_fast_policy_title\": \"API Priority and ChatGPT Standard/Fast use separate official multipliers.\",\n \"pricing_api_priority_multiplier\": \"API ×{{multiplier}}\",\n \"pricing_api_priority_multiplier_official\": \"Official API ×{{multiplier}}\",\n \"pricing_api_priority_multiplier_custom\": \"Custom API ×{{multiplier}}\",\n \"pricing_api_priority_explicit_rates\": \"API explicit rates\",\n \"pricing_long_context\": \"Long context\",\n \"pricing_usage\": \"Current usage\",\n \"pricing_no_usage_requests\": \"No usage requests\",\n \"pricing_no_usage_tokens\": \"No usage tokens\",\n \"pricing_matching_presets_notice\": \"Legacy-shaped custom entries matching preset short rates: {{count}}. They still override official Fast and long-context rules.\",\n \"pricing_matching_presets_title\": \"Use complete presets\",\n \"pricing_matching_presets_confirm\": \"Remove only the {{count}} matching overrides so they inherit official Fast and long-context rules? Other custom prices and aliases will remain unchanged.\",\n \"pricing_matching_presets_action\": \"Use complete presets\",\n \"pricing_matching_presets_success\": \"Complete presets applied to {{count}} matching entries\",\n \"pricing_unmatched\": \"No exact match\",\n \"pricing_match_custom\": \"Custom\",\n \"pricing_match_preset\": \"Preset\",\n \"pricing_match_alias\": \"Alias\",\n \"pricing_match_none\": \"Unmatched\",\n \"pricing_anomaly\": \"Needs review\",\n \"pricing_long_unsupported\": \"Fast long context unsupported\",\n \"pricing_fast_configured\": \"Fast configured\",\n \"pricing_long_requests\": \"{{count}} long requests\",\n \"pricing_short_only\": \"Short-context usage\",\n \"pricing_single_rate_card\": \"One API rate card for all supported contexts\",\n \"pricing_no_matches\": \"No models match the current search and filter.\",\n \"pricing_catalog_footer\": \"API catalog includes {{count}} verified models · checked {{asOf}} · USD per 1M tokens.\",\n \"pricing_editor_title\": \"API token pricing editor\",\n \"pricing_editor_domain_notice\": \"This profile affects the local API-equivalent estimate for every matched usage record.\",\n \"pricing_alias\": \"Exact alias target\",\n \"pricing_alias_hint\": \"Map this observed model name to one exact preset or custom model. Alias mode disables direct rate editing.\",\n \"pricing_alias_canonical_hint\": \"This is already an exact preset model, so an alias is not needed.\",\n \"pricing_standard_rates\": \"Standard rates · USD / 1M\",\n \"pricing_fast_rates\": \"Fast rates · USD / 1M\",\n \"pricing_rate_input\": \"Input\",\n \"pricing_rate_cached_input\": \"Cached input\",\n \"pricing_rate_cache_write\": \"Cache write\",\n \"pricing_rate_output\": \"Output\",\n \"pricing_auto\": \"Auto / input rate\",\n \"pricing_fast_mode_none\": \"Not configured\",\n \"pricing_fast_mode_rates\": \"Explicit rates\",\n \"pricing_fast_mode_multiplier\": \"Standard × multiplier\",\n \"pricing_fast_multiplier\": \"Fast multiplier\",\n \"pricing_fast_long_supported\": \"Allow Fast with long context\",\n \"pricing_long_enable\": \"Enable a long-context rate card\",\n \"pricing_long_threshold\": \"Input-token threshold\",\n \"pricing_preview_affected\": \"Affected usage requests\",\n \"pricing_preview_coverage\": \"Local request coverage\",\n \"pricing_preview_cost\": \"Recalculated local estimate\",\n \"pricing_editor_error_rates\": \"Enter valid non-negative rates for every required field.\",\n \"pricing_editor_error_threshold\": \"Enter a positive whole-number long-context threshold.\",\n \"pricing_editor_error_multiplier\": \"Enter a Fast multiplier greater than 0.\",\n \"pricing_editor_error_profile\": \"The alias or rate card conflicts with the pricing profile.\",\n \"pricing_restore_preset\": \"Restore preset\",\n \"pricing_delete_config\": \"Delete configuration\",\n \"pricing_preset_restored\": \"Preset restored\",\n \"pricing_custom_deleted\": \"Custom pricing removed\",\n \"cost_trend\": \"Cost Overview\",\n \"pricing_api_usd_trend\": \"Local API-equivalent estimate trend (USD)\",\n \"cost_axis_label\": \"Cost ($)\",\n \"cost_need_price\": \"Set a model price to view cost stats\",\n \"cost_need_usage\": \"No usage data available to calculate cost\",\n \"cost_no_data\": \"No cost data yet\",\n \"credential_stats\": \"Credential Statistics\",\n \"credential_name\": \"Credential\",\n \"token_breakdown\": \"Token Type Breakdown\",\n \"request_events_title\": \"Request Events\",\n \"request_events_filter_model\": \"Model\",\n \"request_events_filter_source\": \"Source\",\n \"request_events_filter_auth_index\": \"Auth Index\",\n \"request_events_filter_tier\": \"Tier\",\n \"request_events_filter_effort\": \"Effort\",\n \"request_events_filter_cache\": \"Cache Status\",\n \"request_events_numeric_filter\": \"Token value range\",\n \"request_events_numeric_metric\": \"Token metric\",\n \"request_events_numeric_any\": \"Select metric\",\n \"request_events_numeric_min\": \"Minimum\",\n \"request_events_numeric_max\": \"Maximum\",\n \"request_events_numeric_invalid\": \"Enter non-negative whole-number bounds.\",\n \"request_events_numeric_range_invalid\": \"Minimum cannot be greater than maximum.\",\n \"request_events_numeric_help\": \"Choose a Token metric and enter at least one bound. Results change only when you apply the range.\",\n \"request_events_numeric_preview\": \"Preview\",\n \"request_events_numeric_active_label\": \"Token range: {{filter}}\",\n \"request_events_numeric_clear\": \"Clear range\",\n \"request_events_numeric_apply\": \"Apply range\",\n \"request_events_cache_present\": \"Has Cached Tokens\",\n \"request_events_cache_absent\": \"No Cached Tokens\",\n \"request_events_range_page\": \"Follow Page ({{range}})\",\n \"request_events_column_settings\": \"Column Settings\",\n \"request_events_restore_default_columns\": \"Restore Default Columns\",\n \"request_events_timestamp\": \"Timestamp\",\n \"request_events_source\": \"Source\",\n \"request_events_auth_index\": \"Auth Index\",\n \"request_events_tier\": \"Tier\",\n \"request_events_tier_fast\": \"Fast\",\n \"request_events_tier_standard\": \"Std\",\n \"request_events_tier_tooltip_effective\": \"Core confirmed the effective service tier: {{tier}}.\",\n \"request_events_tier_tooltip_response\": \"Upstream reported the service tier: {{tier}}.\",\n \"request_events_tier_tooltip_request\": \"Shown from the requested service tier: {{tier}}; billing may differ.\",\n \"request_events_tier_tooltip_assumed\": \"Historical or unknown tier; estimated as Std.\",\n \"request_events_tier_legacy_unknown\": \"Legacy / Unknown\",\n \"request_events_tier_other\": \"Other: {{tier}}\",\n \"request_events_effort\": \"Effort\",\n \"request_events_effort_legacy_unknown\": \"Legacy / Unknown\",\n \"request_events_result\": \"Result\",\n \"time\": \"Latency\",\n \"avg_time\": \"Avg Latency\",\n \"latency_unit_hint\": \"Durations use backend field {{field}} and are interpreted as {{unit}} before formatting.\",\n \"duration_unit_d\": \"d\",\n \"duration_unit_h\": \"h\",\n \"duration_unit_m\": \"m\",\n \"duration_unit_s\": \"s\",\n \"duration_unit_ms\": \"ms\",\n \"request_events_empty_title\": \"No request events\",\n \"request_events_empty_desc\": \"No request details are available for the selected time range.\",\n \"request_events_no_result_title\": \"No matching events\",\n \"request_events_no_result_desc\": \"Try different filters or clear the current filters.\",\n \"request_events_count\": \"{{count}} events\",\n \"request_events_limit_hint\": \"Showing {{shown}} of {{total}} events to keep rendering responsive.\",\n \"request_events_total_input_tokens\": \"Total Input Tokens\",\n \"request_events_non_cache_read_input_tokens\": \"Non-Cache-Read Input Tokens\",\n \"request_events_non_cache_read_input_tokens_hint\": \"Calculated locally in Panel as Total Input Tokens - Cache Read Tokens, never below 0. This is the cache-rate complement, not normal prompt input. Cache Write Tokens are shown and priced separately.\",\n \"request_events_total_output_tokens\": \"Total Output Tokens\",\n \"request_events_explicit_output_tokens\": \"Explicit Output Tokens\",\n \"request_events_output_tokens_hint\": \"Explicit Output Tokens = Total Output Tokens - Reasoning Tokens, never below 0.\",\n \"request_events_cache_rate\": \"Cache Read Share\",\n \"request_events_cache_rate_hint\": \"Cache Read Share = Cache Read Tokens / Total Input Tokens. Zero and values below 25% are low, 25% up to but not including 60% is moderate, and 60% or above is high. Cache reads above total input are marked as anomalies. Only the Cache Read value is colored by this status; other Token values remain neutral.\",\n \"request_events_cache_rate_low\": \"Low\",\n \"request_events_cache_rate_medium\": \"Moderate\",\n \"request_events_cache_rate_high\": \"High\",\n \"request_events_cache_rate_anomaly\": \"Anomaly\",\n \"request_events_cache_rate_cell_label\": \"{{tokens}} cache-read tokens, {{rate}}, {{tone}}\",\n \"request_events_cache_rate_anomaly_label\": \"Cache-read tokens ({{tokens}}) exceed total input tokens ({{input}}).\",\n \"request_events_table_region\": \"Request events table\",\n \"input_tokens\": \"Input Tokens\",\n \"output_tokens\": \"Output Tokens\",\n \"last_updated\": \"Updated\"\n },\n \"service_health\": {\n \"title\": \"Service Health\",\n \"window\": \"Last 7 days\",\n \"oldest\": \"Oldest\",\n \"newest\": \"Latest\"\n },\n \"logs\": {\n \"title\": \"Logs Viewer\",\n \"runtime_unknown\": \"Current runtime: detecting\",\n \"runtime_cpa\": \"Current runtime: CPA\",\n \"runtime_home\": \"Current runtime: Home\",\n \"refresh_button\": \"Refresh Logs\",\n \"clear_button\": \"Clear Logs\",\n \"fullscreen_button\": \"Full Screen\",\n \"exit_fullscreen_button\": \"Exit Full Screen\",\n \"download_button\": \"Download Logs\",\n \"error_log_button\": \"Select Error Log\",\n \"error_logs_modal_title\": \"Error Request Logs\",\n \"error_logs_description\": \"Pick an error request log file to open or download (only generated when request logging is off).\",\n \"error_logs_home_unavailable\": \"In Home mode, use Log Content for database logs. Error request log files only apply to CPA file logs.\",\n \"error_logs_request_log_enabled\": \"Request logging is enabled, so this list will always be empty. Disable request logging and refresh to view error logs.\",\n \"error_logs_empty\": \"No error request log files found\",\n \"error_logs_load_error\": \"Failed to load error log list\",\n \"error_logs_size\": \"Size\",\n \"error_logs_modified\": \"Last modified\",\n \"error_logs_open\": \"Open\",\n \"error_logs_download\": \"Download\",\n \"error_log_view_title\": \"Error Request Log Details\",\n \"error_log_open_failed\": \"Failed to open error log\",\n \"error_log_empty_content\": \"This error log is empty\",\n \"error_log_copy_success\": \"Error log content copied\",\n \"error_log_download_success\": \"Error log downloaded successfully\",\n \"request_log_download_title\": \"Download Request Log\",\n \"request_log_download_confirm\": \"Download request log for ID {{id}}?\",\n \"request_log_download_success\": \"Request log downloaded successfully\",\n \"empty_title\": \"No Logs Available\",\n \"empty_desc\": \"When \\\"Enable logging to file\\\" is enabled, logs will be displayed here\",\n \"cpa_file_logging_required\": \"The connected runtime is CPA. Log viewing requires logging to file to be enabled first.\",\n \"cpa_file_logging_required_title\": \"File logging is required\",\n \"cpa_file_logging_required_desc\": \"CPA reads this log view from local log files. Enable logging-to-file in the config, then refresh.\",\n \"file_logging_required\": \"This logs endpoint requires logging to file before file logs can be read.\",\n \"file_logging_required_title\": \"File logging is required\",\n \"file_logging_required_desc\": \"This logs endpoint reads local log files. Enable logging-to-file in the config, then refresh.\",\n \"home_clear_unavailable\": \"Home logs come from database queries and cannot be cleared here.\",\n \"log_content\": \"Log Content\",\n \"loading\": \"Loading logs...\",\n \"load_error\": \"Failed to load logs\",\n \"clear_confirm\": \"Are you sure you want to clear all logs? This action cannot be undone!\",\n \"clear_success\": \"Logs cleared successfully\",\n \"download_success\": \"Logs downloaded successfully\",\n \"auto_refresh\": \"Auto Refresh\",\n \"auto_refresh_enabled\": \"Auto refresh enabled\",\n \"auto_refresh_disabled\": \"Auto refresh disabled\",\n \"load_more_hint\": \"Scroll up to load more\",\n \"hidden_lines\": \"Hidden: {{count}} lines\",\n \"loaded_lines\": \"Loaded: {{count}} lines\",\n \"filtered_lines\": \"Filtered: {{count}} lines\",\n \"hide_management_logs\": \"Hide {{prefix}} logs\",\n \"show_raw_logs\": \"Show Raw Logs\",\n \"show_raw_logs_hint\": \"Show original log text for easier multi-line copy\",\n \"search_placeholder\": \"Search logs by content or keyword\",\n \"filter_panel_title\": \"Structured Filters\",\n \"filter_panel_expand\": \"Expand structured filters\",\n \"filter_panel_collapse\": \"Collapse structured filters\",\n \"filter_panel_active_count\": \"{{count}} active\",\n \"filter_method\": \"Method\",\n \"filter_status\": \"Status\",\n \"filter_path\": \"Path\",\n \"filter_path_empty\": \"No path candidates\",\n \"filter_status_2xx\": \"2xx\",\n \"filter_status_3xx\": \"3xx\",\n \"filter_status_4xx\": \"4xx\",\n \"filter_status_5xx\": \"5xx\",\n \"clear_filters\": \"Clear Filters\",\n \"search_empty_title\": \"No matching logs found\",\n \"search_empty_desc\": \"Try a different keyword or clear the filters.\",\n \"double_click_copy_hint\": \"Double-click to copy raw log line\",\n \"copy_success\": \"Log copied to clipboard\",\n \"copy_failed\": \"Copy failed\",\n \"lines\": \"lines\",\n \"removed\": \"Filtered\",\n \"upgrade_required_title\": \"Please Upgrade CLI Proxy API\",\n \"upgrade_required_desc\": \"The current server version does not support the logs viewing feature. Please upgrade to the latest version of CLI Proxy API to use this feature.\"\n },\n \"config_management\": {\n \"title\": \"Config Panel\",\n \"editor_title\": \"Configuration File\",\n \"reload\": \"Reload\",\n \"reload_confirm_message\": \"Reloading will discard your unsaved changes. Do you want to continue?\",\n \"save\": \"Save\",\n \"description\": \"Edit config.yaml via visual editor or source file\",\n \"status_idle\": \"Waiting for action\",\n \"status_loading\": \"Loading configuration...\",\n \"status_loading_short\": \"Loading\",\n \"status_loaded\": \"Configuration loaded\",\n \"status_loaded_short\": \"Loaded\",\n \"status_dirty\": \"Unsaved changes\",\n \"status_dirty_short\": \"Unsaved\",\n \"status_disconnected\": \"Connect to the server to load the configuration\",\n \"status_disconnected_short\": \"Disconnected\",\n \"status_load_failed\": \"Load failed\",\n \"status_load_failed_short\": \"Failed\",\n \"status_saving\": \"Saving configuration...\",\n \"status_saving_short\": \"Saving\",\n \"status_saved\": \"Configuration saved\",\n \"status_save_failed\": \"Save failed\",\n \"save_success\": \"Configuration saved successfully\",\n \"error_yaml_not_supported\": \"Server did not return YAML. Verify the /config.yaml endpoint is available.\",\n \"visual_mode_unavailable\": \"Visual editor unavailable until YAML syntax is fixed\",\n \"visual_mode_unavailable_short\": \"YAML issue\",\n \"validation_blocked_short\": \"Fix errors\",\n \"visual_mode_unavailable_detail\": \"Visual editor is unavailable because the configuration contains invalid YAML: {{message}}\",\n \"visual_mode_save_blocked\": \"Cannot save from visual mode until the YAML syntax is fixed\",\n \"visual_mode_latest_yaml_invalid\": \"The latest server configuration contains invalid YAML. Review it in source mode before saving visual changes: {{message}}\",\n \"editor_placeholder\": \"key: value\",\n \"search_placeholder\": \"Search config...\",\n \"search_button\": \"Search\",\n \"search_no_results\": \"No results\",\n \"search_prev\": \"Previous\",\n \"search_next\": \"Next\",\n \"diff\": {\n \"title\": \"Review Changes\",\n \"current\": \"Current\",\n \"modified\": \"Modified\",\n \"confirm\": \"Confirm Save\",\n \"no_changes\": \"No changes detected\"\n },\n \"tabs\": {\n \"visual\": \"Visual Editor\",\n \"source\": \"Source File Editor\"\n },\n \"visual\": {\n \"notice\": \"Visual mode covers common fields. Review or edit unsupported config.yaml entries in source mode.\",\n \"quick_jump\": \"Quick Jump\",\n \"subsection_navigation\": \"{{section}} groups\",\n \"sections\": {\n \"server\": {\n \"title\": \"Server Configuration\",\n \"description\": \"Basic server settings\",\n \"listener_group_title\": \"Listener\",\n \"host\": \"Host Address\",\n \"port\": \"Port\"\n },\n \"tls\": {\n \"title\": \"TLS/SSL Configuration\",\n \"description\": \"HTTPS secure connection settings\",\n \"enable\": \"Enable TLS\",\n \"enable_desc\": \"Enable HTTPS secure connection\",\n \"cert\": \"Certificate File Path\",\n \"key\": \"Private Key File Path\"\n },\n \"remote\": {\n \"title\": \"Remote Management\",\n \"description\": \"Remote access and control panel settings\",\n \"allow_remote\": \"Allow Remote Access\",\n \"allow_remote_desc\": \"Allow management access from other hosts\",\n \"disable_panel\": \"Disable Control Panel\",\n \"disable_panel_desc\": \"Disable the built-in web control panel\",\n \"disable_auto_update_panel\": \"Disable Panel Auto Updates\",\n \"disable_auto_update_panel_desc\": \"Download the panel when first missing, but never auto-update it from GitHub\",\n \"secret_key\": \"Management Key\",\n \"secret_key_placeholder\": \"Set management key\",\n \"panel_repo\": \"Panel Repository\"\n },\n \"auth\": {\n \"title\": \"Authentication Configuration\",\n \"description\": \"API keys and authentication directory settings\",\n \"group_title\": \"Access & Authentication\",\n \"group_description\": \"Remote management, control-panel access, API keys, and authentication files\",\n \"credentials_title\": \"Authentication Files & API Keys\",\n \"auth_dir\": \"Auth Directory (auth-dir)\",\n \"auth_dir_hint\": \"Directory path for authentication files (supports ~)\"\n },\n \"system\": {\n \"title\": \"System Configuration\",\n \"description\": \"Debug, logging, statistics, and performance settings\",\n \"group_navigation_label\": \"System configuration groups\",\n \"runtime_group_title\": \"Runtime & Operations\",\n \"runtime_group_desc\": \"Core switches, logs, usage collection, and signature handling\",\n \"plugins_group_title\": \"Plugins\",\n \"plugins_group_desc\": \"Runtime enablement, registry sources, and private source auth\",\n \"headers_group_title\": \"Headers & Codex Strategy\",\n \"headers_group_desc\": \"Claude and Codex defaults plus abnormal-reasoning retry behavior\",\n \"network_group_title\": \"Network & Routing\",\n \"network_group_desc\": \"Proxy, retries, affinity, image handling, and endpoint behavior\",\n \"core_controls_title\": \"Core Runtime Controls\",\n \"core_controls_desc\": \"Top-level switches for diagnostics, throughput, and file logging\",\n \"plugin_runtime_title\": \"Plugin Runtime\",\n \"plugin_runtime_desc\": \"Enable or disable dynamic-library plugin loading\",\n \"operations_title\": \"Logs, Usage, and Signature Handling\",\n \"operations_desc\": \"Retention limits, in-memory usage collection, and Antigravity signature behavior\",\n \"debug\": \"Debug Mode\",\n \"debug_desc\": \"Enable verbose debug logging\",\n \"commercial_mode\": \"Commercial Mode\",\n \"commercial_mode_desc\": \"Disable high-overhead middleware to support high concurrency\",\n \"logging_to_file\": \"Log to File\",\n \"logging_to_file_desc\": \"Save logs to files\",\n \"plugins_enabled\": \"Enable Plugin System\",\n \"plugins_enabled_desc\": \"Enable standard dynamic-library plugin loading; individual plugin instances are still managed on the Plugins page\",\n \"plugin_store_sources\": \"Third-party Plugin Sources\",\n \"plugin_store_sources_desc\": \"Append plugin-store registry sources; the built-in official source is always kept\",\n \"plugin_store_sources_label\": \"Plugin source registry URL (plugins.store-sources)\",\n \"plugin_store_sources_placeholder\": \"https://example.com/cliproxy-plugins/registry.json\",\n \"plugin_store_sources_hint\": \"One registry.json URL per row. Empty rows are filtered on save\",\n \"plugin_store_auth\": \"Plugin Store Auth Rules\",\n \"plugin_store_auth_desc\": \"Configure auth headers for private registries, GitHub Release metadata, or artifact downloads\",\n \"plugin_store_auth_hint\": \"Enter environment variable names only, not actual tokens. The backend reads the values from its runtime environment.\",\n \"store_auth_empty\": \"No auth rules are configured. Public plugin sources do not need one.\",\n \"store_auth_rule\": \"Auth rule\",\n \"store_auth_add\": \"Add auth rule\",\n \"store_auth_match\": \"Matching URL prefix\",\n \"store_auth_type\": \"Auth type\",\n \"store_auth_apply_to\": \"Apply to\",\n \"store_auth_apply_to_hint\": \"When nothing is selected, the rule applies to all request types.\",\n \"store_auth_apply_registry\": \"Registry\",\n \"store_auth_apply_metadata\": \"Metadata\",\n \"store_auth_apply_artifact\": \"Artifact\",\n \"store_auth_type_none\": \"None\",\n \"store_auth_type_bearer\": \"Bearer\",\n \"store_auth_type_basic\": \"Basic\",\n \"store_auth_type_header\": \"Custom header\",\n \"store_auth_type_github_token\": \"GitHub token\",\n \"store_auth_token_env\": \"Token env var\",\n \"store_auth_username_env\": \"Username env var\",\n \"store_auth_password_env\": \"Password env var\",\n \"store_auth_header_name\": \"Header name\",\n \"store_auth_header_value_env\": \"Header value env var\",\n \"store_auth_allow_insecure\": \"Allow insecure HTTP URLs\",\n \"logs_max_size\": \"Log File Size Limit (MB)\",\n \"error_logs_max_files\": \"Retained Error Log Files\",\n \"usage_statistics_enabled\": \"Enable In-memory Usage Statistics\",\n \"usage_statistics_enabled_desc\": \"Aggregate request usage statistics in memory\",\n \"redis_usage_retention\": \"Redis Usage Queue Retention (seconds)\",\n \"redis_usage_retention_hint\": \"In-memory retention for RESP LPOP/RPOP usage output, max 3600 seconds\",\n \"antigravity_signature_cache\": \"Enable Antigravity Signature Cache\",\n \"antigravity_signature_cache_desc\": \"Prefer and validate cached thinking-block signatures\",\n \"antigravity_signature_strict\": \"Strict Bypass Signature Validation\",\n \"antigravity_signature_strict_desc\": \"Only applies when the signature cache is disabled; validates the full Claude protobuf tree\"\n },\n \"headers\": {\n \"title\": \"Header Defaults\",\n \"description\": \"Default headers for Claude and Codex OAuth requests when the client omits them\",\n \"claude_title\": \"Claude Header Defaults\",\n \"codex_title\": \"Codex Header Defaults\",\n \"user_agent\": \"User-Agent\",\n \"package_version\": \"Package Version\",\n \"runtime_version\": \"Runtime Version\",\n \"os\": \"OS\",\n \"arch\": \"Arch\",\n \"timeout\": \"Timeout\",\n \"stabilize_device\": \"Stabilize Device Profile\",\n \"stabilize_device_desc\": \"Pin OS/Arch and stabilize the software fingerprint per credential/API key\",\n \"beta_features\": \"Beta Features\",\n \"codex_identity_confuse\": \"Codex Identity Confuse\",\n \"codex_identity_confuse_desc\": \"When fill-first routing or session affinity is used, remap Codex prompt_cache_key and installation identity for the selected auth\",\n \"codex_abnormal_reasoning_retry_title\": \"Codex Abnormal Reasoning Retry\",\n \"codex_abnormal_reasoning_retry_desc\": \"Manage the Core LTS retry guard for Codex OAuth responses with abnormal reasoning token counts\",\n \"codex_abnormal_reasoning_retry_summary_title\": \"Current Strategy Overview\",\n \"codex_abnormal_reasoning_retry_summary_desc\": \"Switches, retry action, and delivery behavior are separated so the effective guard state is easier to verify.\",\n \"codex_abnormal_reasoning_retry_summary_action\": \"Matched action\",\n \"codex_abnormal_reasoning_retry_summary_stream_buffer\": \"Stream buffer\",\n \"codex_abnormal_reasoning_retry_summary_hedged\": \"Hedged mode\",\n \"codex_abnormal_reasoning_retry_summary_distinct_auth\": \"Distinct auth\",\n \"codex_abnormal_reasoning_retry_summary_on\": \"Enabled\",\n \"codex_abnormal_reasoning_retry_summary_off\": \"Disabled\",\n \"codex_abnormal_reasoning_retry_group_switches_title\": \"Base Switches\",\n \"codex_abnormal_reasoning_retry_group_switches_desc\": \"Decide whether the strategy is active, whether streaming output is buffered, and whether a second request lane can be used.\",\n \"codex_abnormal_reasoning_retry_group_retry_title\": \"Retry Scheduling\",\n \"codex_abnormal_reasoning_retry_group_retry_desc\": \"Configure the matched action, buffer cap, second-lane delay, and hedged return mode.\",\n \"codex_abnormal_reasoning_retry_group_match_title\": \"Match Conditions\",\n \"codex_abnormal_reasoning_retry_group_match_desc\": \"Limit matching by model, reasoning effort, abnormal reasoning token count, and retry budget.\",\n \"codex_abnormal_reasoning_retry_group_delivery_title\": \"Delivery And Usage\",\n \"codex_abnormal_reasoning_retry_group_delivery_desc\": \"Control exhausted behavior, client-visible usage, and candidate response selection.\",\n \"codex_abnormal_reasoning_retry_group_scope_title\": \"Auth Scope\",\n \"codex_abnormal_reasoning_retry_group_scope_desc\": \"Restrict the strategy by auth kind or auth ID so unrelated credentials are not affected.\",\n \"codex_abnormal_reasoning_retry_enabled\": \"Enable Abnormal Reasoning Retry\",\n \"codex_abnormal_reasoning_retry_enabled_desc\": \"Shortcut for retry/disabled; use Action for observe-only mode\",\n \"codex_abnormal_reasoning_retry_action_label\": \"Retry action\",\n \"codex_abnormal_reasoning_retry_action_hint\": \"retry discards matching responses and retries; observe-only records matches without retry; disabled leaves responses unchanged\",\n \"codex_abnormal_reasoning_retry_action_retry\": \"Retry\",\n \"codex_abnormal_reasoning_retry_action_observe_only\": \"Observe only\",\n \"codex_abnormal_reasoning_retry_action_disabled\": \"Disabled\",\n \"codex_abnormal_reasoning_retry_action_retry_desc\": \"Matching responses are discarded and retried until the retry limit is reached.\",\n \"codex_abnormal_reasoning_retry_action_observe_only_desc\": \"Matches are recorded only. The response delivered to the client is not changed.\",\n \"codex_abnormal_reasoning_retry_action_disabled_desc\": \"The abnormal reasoning guard is disabled. Matching conditions do not affect delivery.\",\n \"codex_abnormal_reasoning_retry_stream_buffer\": \"Buffer Streaming Responses\",\n \"codex_abnormal_reasoning_retry_stream_buffer_desc\": \"Hold streaming chunks until response.completed so matching abnormal responses can be retried transparently\",\n \"codex_abnormal_reasoning_retry_stream_buffer_max_bytes_label\": \"Stream buffer max bytes\",\n \"codex_abnormal_reasoning_retry_stream_buffer_max_bytes_hint\": \"Defaults to 16 MiB (16777216); 0 also uses the safe default. Exceeding the limit fails the stream closed with 502 and never passes through partial output\",\n \"codex_abnormal_reasoning_retry_hedged_retry_enabled\": \"Enable Hedged Retry\",\n \"codex_abnormal_reasoning_retry_hedged_retry_enabled_desc\": \"After the first abnormal response is discarded, launch a delayed second lane to reduce tail latency\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_label\": \"Hedged retry mode\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_hint\": \"Quality waits for dispatched lanes; speed returns the first successful lane. Delivery policy selects among completed candidates.\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_quality\": \"Quality (default)\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_speed\": \"Speed\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_quality_desc\": \"Wait for dispatched lanes and choose the steadier result using the delivery policy.\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_speed_desc\": \"Return as soon as the first deliverable lane succeeds, trading some certainty for lower latency.\",\n \"codex_abnormal_reasoning_retry_hedge_delay_ms_label\": \"Hedge delay (ms)\",\n \"codex_abnormal_reasoning_retry_hedge_delay_ms_hint\": \"Delay before starting the second lane after an abnormal attempt has triggered retry\",\n \"codex_abnormal_reasoning_retry_require_distinct_auth\": \"Require Distinct Auth\",\n \"codex_abnormal_reasoning_retry_require_distinct_auth_desc\": \"Prefer a different auth ID for the hedged second lane\",\n \"codex_abnormal_reasoning_retry_model_contains_label\": \"Model contains\",\n \"codex_abnormal_reasoning_retry_model_contains_hint\": \"Matches when the requested or resolved upstream model contains any value\",\n \"codex_abnormal_reasoning_retry_reasoning_efforts_label\": \"Reasoning efforts\",\n \"codex_abnormal_reasoning_retry_reasoning_efforts_hint\": \"Optional translated Codex reasoning.effort values such as high or xhigh; leave empty to match any effort\",\n \"codex_abnormal_reasoning_retry_reasoning_tokens_label\": \"Reasoning tokens\",\n \"codex_abnormal_reasoning_retry_reasoning_tokens_hint\": \"Non-negative integer token counts that trigger retry\",\n \"codex_abnormal_reasoning_retry_max_retries_label\": \"Max abnormal retries\",\n \"codex_abnormal_reasoning_retry_max_retries_hint\": \"Maximum extra retries caused by abnormal reasoning detection; 0 records the failed attempt and returns 502 without retry\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_label\": \"Exhausted behavior\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_hint\": \"Choose what Core returns after abnormal retry attempts exceed the max retries limit\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_error\": \"Return 502 error\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_pass_through\": \"Pass through abnormal response\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_error_desc\": \"After the retry limit is reached, return 502 instead of delivering the abnormal response.\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_pass_through_desc\": \"After the retry limit is reached, deliver the last abnormal response so the request can still complete.\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_label\": \"Client usage aggregation\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_hint\": \"Controls client-visible token aggregation only; Management usage keeps per-attempt accounting.\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_delivered_only\": \"Delivered only (default)\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum\": \"Sum fields\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum_with_delivered_total\": \"Sum with delivered total\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_delivered_only_desc\": \"The client sees usage from the delivered response only. Management usage still records every real attempt.\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum_desc\": \"The client sees usage fields summed across all attempts.\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum_with_delivered_total_desc\": \"Detail fields are summed, but total remains from the delivered response for clients that read only total.\",\n \"codex_abnormal_reasoning_retry_delivery_policy_label\": \"Delivery policy\",\n \"codex_abnormal_reasoning_retry_delivery_policy_hint\": \"Used only when candidates include both special and non-special responses\",\n \"codex_abnormal_reasoning_retry_delivery_policy_best_non_special\": \"Best non-special (default)\",\n \"codex_abnormal_reasoning_retry_delivery_policy_first_non_special\": \"First non-special\",\n \"codex_abnormal_reasoning_retry_delivery_policy_max_output\": \"Max output\",\n \"codex_abnormal_reasoning_retry_delivery_policy_latest\": \"Latest\",\n \"codex_abnormal_reasoning_retry_delivery_policy_best_non_special_desc\": \"Deliver the highest-quality normal response.\",\n \"codex_abnormal_reasoning_retry_delivery_policy_first_non_special_desc\": \"Deliver the first successful normal response to reduce waiting.\",\n \"codex_abnormal_reasoning_retry_delivery_policy_max_output_desc\": \"Deliver the candidate with the largest output.\",\n \"codex_abnormal_reasoning_retry_delivery_policy_latest_desc\": \"Deliver the latest completed candidate.\",\n \"codex_abnormal_reasoning_retry_fallback_policy_label\": \"Fallback policy\",\n \"codex_abnormal_reasoning_retry_fallback_policy_hint\": \"Used when every candidate is special after retries are exhausted\",\n \"codex_abnormal_reasoning_retry_fallback_policy_best_special\": \"Best special (default)\",\n \"codex_abnormal_reasoning_retry_fallback_policy_max_output_special\": \"Max output special\",\n \"codex_abnormal_reasoning_retry_fallback_policy_latest_special\": \"Latest special\",\n \"codex_abnormal_reasoning_retry_fallback_policy_best_special_desc\": \"When only abnormal candidates remain, choose the highest-quality abnormal response.\",\n \"codex_abnormal_reasoning_retry_fallback_policy_max_output_special_desc\": \"When only abnormal candidates remain, choose the abnormal response with the largest output.\",\n \"codex_abnormal_reasoning_retry_fallback_policy_latest_special_desc\": \"When only abnormal candidates remain, choose the latest completed abnormal response.\",\n \"codex_abnormal_reasoning_retry_auth_kinds_label\": \"Auth kinds\",\n \"codex_abnormal_reasoning_retry_auth_kinds_hint\": \"Normalized auth kind whitelist; default OAuth does not match API keys\",\n \"codex_abnormal_reasoning_retry_auth_ids_label\": \"Auth IDs\",\n \"codex_abnormal_reasoning_retry_auth_ids_hint\": \"Optional exact auth ID whitelist; leave empty to match all IDs\"\n },\n \"network\": {\n \"title\": \"Network Configuration\",\n \"description\": \"Proxy, retry, and routing settings\",\n \"proxy_url\": \"Proxy URL\",\n \"request_retry\": \"Request Retry Count\",\n \"max_retry_credentials\": \"Max Retry Credentials\",\n \"max_retry_credentials_hint\": \"Leave empty to keep it unset. Set to 0 to preserve legacy behavior and try all available credentials.\",\n \"max_retry_interval\": \"Max Retry Interval (seconds)\",\n \"transient_error_cooldown_seconds\": \"Transient Error Cooldown (seconds)\",\n \"transient_error_cooldown_seconds_hint\": \"Leave empty to use the Core default. 0 keeps the legacy 60-second cooldown; negative values disable transient error cooldowns.\",\n \"auth_auto_refresh_workers\": \"Auth Auto-refresh Workers\",\n \"auth_auto_refresh_workers_hint\": \"When greater than 0, overrides the default worker count (16)\",\n \"disable_image_generation\": \"Disable Image Generation\",\n \"disable_image_generation_hint\": \"false enables automatic image-tool injection; true disables image generation everywhere; chat removes image_generation from non-image endpoints; passthrough leaves the client's tool list unchanged on non-image endpoints (image endpoints behave like chat)\",\n \"disable_image_generation_false\": \"false (enabled)\",\n \"disable_image_generation_true\": \"true (disabled everywhere)\",\n \"disable_image_generation_chat\": \"chat (remove image tool from non-image endpoints)\",\n \"disable_image_generation_passthrough\": \"passthrough (preserve client tools)\",\n \"gpt_image_2_base_model\": \"GPT Image 2 Base Model\",\n \"gpt_image_2_base_model_hint\": \"Mainline model used when proxying gpt-image-2 image requests; backend uses its default when empty or invalid\",\n \"routing_strategy\": \"Routing Strategy\",\n \"routing_strategy_hint\": \"Select credential selection strategy\",\n \"strategy_round_robin\": \"Round Robin\",\n \"strategy_fill_first\": \"Fill First\",\n \"session_affinity_ttl\": \"Session Affinity TTL\",\n \"force_model_prefix\": \"Force Model Prefix\",\n \"force_model_prefix_desc\": \"Unprefixed model requests only use credentials without prefix\",\n \"passthrough_headers\": \"Pass Through Upstream Headers\",\n \"passthrough_headers_desc\": \"Forward filtered upstream response headers to downstream clients\",\n \"disable_cooling\": \"Disable Cooling\",\n \"disable_cooling_desc\": \"Globally disable auth/model cooldown windows after failures\",\n \"session_affinity\": \"Session Affinity Routing\",\n \"ws_auth\": \"WebSocket Authentication\",\n \"ws_auth_desc\": \"Enable WebSocket authentication (/v1/ws)\",\n \"enable_gemini_cli_endpoint\": \"Enable Gemini CLI Internal Endpoint\",\n \"enable_gemini_cli_endpoint_desc\": \"Enable /v1internal:* compatibility endpoints\"\n },\n \"quota\": {\n \"title\": \"Quota Fallback\",\n \"description\": \"Fallback strategy when quota is exceeded\",\n \"switch_project\": \"Switch Project\",\n \"switch_project_desc\": \"Automatically switch to another project when quota is exceeded\",\n \"switch_preview_model\": \"Switch to Preview Model\",\n \"switch_preview_model_desc\": \"Switch to preview model version when quota is exceeded\",\n \"antigravity_credits\": \"Use Antigravity Credits\"\n },\n \"streaming\": {\n \"title\": \"Streaming Configuration\",\n \"description\": \"Keepalive and bootstrap retry settings\",\n \"keepalive_seconds\": \"Keepalive Seconds\",\n \"keepalive_hint\": \"Set to 0 or leave empty to disable keepalive\",\n \"bootstrap_retries\": \"Bootstrap Retries\",\n \"bootstrap_hint\": \"Number of retries during stream startup (before first byte)\",\n \"nonstream_keepalive\": \"Non-stream Keepalive Interval (seconds)\",\n \"nonstream_keepalive_hint\": \"Send blank lines every N seconds for non-streaming responses to prevent idle timeout, set to 0 or leave empty to disable\",\n \"disabled\": \"Disabled\"\n },\n \"payload\": {\n \"title\": \"Payload Configuration\",\n \"description\": \"Default values, raw JSON rules, override rules, and filter rules\",\n \"default_rules\": \"Default Rules\",\n \"default_rules_desc\": \"Use these default values when parameters are not specified in the request\",\n \"default_raw_rules\": \"Default Raw Rules\",\n \"default_raw_rules_desc\": \"When parameters are missing, write these values as raw JSON fragments such as true, 123, \\\"high\\\", or {\\\"type\\\":\\\"object\\\"}\",\n \"override_rules\": \"Override Rules\",\n \"override_rules_desc\": \"Force override parameter values in the request\",\n \"override_raw_rules\": \"Override Raw Rules\",\n \"override_raw_rules_desc\": \"Always overwrite parameter values as raw JSON fragments, useful for response_format, schemas, and other complex fields\",\n \"filter_rules\": \"Filter Rules\",\n \"filter_rules_desc\": \"Pre-filter upstream request body via JSON Path, automatically remove non-compliant/redundant parameters (Request Sanitization)\"\n }\n },\n \"api_keys\": {\n \"label\": \"API Keys List (api-keys)\",\n \"add\": \"Add API Key\",\n \"generate\": \"Generate\",\n \"empty\": \"No API keys\",\n \"hint\": \"Each entry represents an API key (consistent with 'API Key Management' page style)\",\n \"edit_title\": \"Edit API Key\",\n \"add_title\": \"Add API Key\",\n \"input_label\": \"API Key\",\n \"input_placeholder\": \"Paste your API key\",\n \"input_hint\": \"This only modifies the local config file content, it will not sync to the API Key Management interface\",\n \"error_empty\": \"Please enter an API key\",\n \"error_invalid\": \"API key contains invalid characters\"\n },\n \"payload_rules\": {\n \"rule\": \"Rule\",\n \"models\": \"Applicable Models\",\n \"model_name\": \"Model Name\",\n \"model_scope\": \"Model Scope\",\n \"scope_any\": \"Any (current behavior)\",\n \"scope_requested\": \"Requested model\",\n \"scope_upstream\": \"Upstream model\",\n \"scope_custom\": \"Custom: {{scope}}\",\n \"provider_type\": \"Provider Type\",\n \"add_model\": \"Add Model\",\n \"params\": \"Parameter Settings\",\n \"remove_params\": \"Remove Parameters\",\n \"json_path\": \"JSON Path (e.g., temperature)\",\n \"json_path_filter\": \"JSON Path (gjson/sjson), e.g., generationConfig.thinkingConfig.thinkingBudget\",\n \"param_type\": \"Parameter Type\",\n \"param_value\": \"Parameter Value\",\n \"add_param\": \"Add Parameter\",\n \"no_rules\": \"No rules\",\n \"add_rule\": \"Add Rule\",\n \"provider_default\": \"Default\",\n \"provider_openai\": \"OpenAI\",\n \"provider_openai_response\": \"OpenAI Response\",\n \"provider_responses\": \"Responses\",\n \"provider_gemini\": \"Gemini\",\n \"provider_claude\": \"Claude\",\n \"provider_codex\": \"Codex\",\n \"provider_antigravity\": \"Antigravity\",\n \"advanced\": \"Advanced\",\n \"hide_advanced\": \"Hide Advanced\",\n \"from_protocol\": \"Source Protocol (from-protocol)\",\n \"headers\": \"Request Header Matches\",\n \"header_name\": \"Header Name\",\n \"header_value\": \"Header Value\",\n \"add_header\": \"Add Header\",\n \"match\": \"Required Matches (match)\",\n \"notMatch\": \"Forbidden Matches (not-match)\",\n \"exist\": \"Required Paths (exist)\",\n \"notExist\": \"Forbidden Paths (not-exist)\",\n \"condition_path\": \"Match Path\",\n \"condition_value\": \"Match Value\",\n \"add_condition\": \"Add Condition\",\n \"value_type_string\": \"String\",\n \"value_type_number\": \"Number\",\n \"value_type_boolean\": \"Boolean\",\n \"value_type_json\": \"JSON\",\n \"value_string\": \"String value\",\n \"value_number\": \"Number value (e.g., 0.7)\",\n \"value_boolean\": \"true or false\",\n \"value_json\": \"JSON value\",\n \"value_raw_json\": \"Raw JSON fragment, e.g. true, 123, \\\"high\\\", or {\\\"type\\\":\\\"object\\\"}\",\n \"value_default\": \"Value\",\n \"boolean_true\": \"true\",\n \"boolean_false\": \"false\"\n },\n \"validation\": {\n \"validation_blocked\": \"Fix validation errors before saving\",\n \"port_range\": \"Enter a valid port between 1 and 65535\",\n \"non_negative_integer\": \"Enter a non-negative whole number\",\n \"integer\": \"Enter a whole number\",\n \"integer_range_1_3600\": \"Enter a whole number between 1 and 3600\",\n \"payload_invalid_number\": \"Enter a valid number\",\n \"payload_invalid_boolean\": \"Choose true or false\",\n \"payload_invalid_json\": \"Enter valid JSON\"\n },\n \"common\": {\n \"edit\": \"Edit\",\n \"delete\": \"Delete\",\n \"cancel\": \"Cancel\",\n \"update\": \"Update\",\n \"add\": \"Add\"\n }\n }\n },\n \"quota_management\": {\n \"title\": \"Quota Management\",\n \"description\": \"Monitor OAuth quota status for Antigravity, Codex, and Gemini CLI credentials.\",\n \"refresh_files\": \"Refresh auth files\",\n \"refresh_files_and_quota\": \"Refresh files & quota\",\n \"refresh_all_credentials\": \"Refresh all credentials\",\n \"card_idle_hint\": \"Use the top \\\"Refresh all credentials\\\" button to fetch the latest quota data.\"\n },\n \"plugin_management\": {\n \"title\": \"Plugin Management\",\n \"description\": \"Review discovered and registered plugins, then manage instance toggles, config fields, and resource links.\",\n \"refresh\": \"Refresh\",\n \"load_failed\": \"Failed to load plugins\",\n \"config_load_failed\": \"Failed to read plugin config\",\n \"config_not_found\": \"Unable to read plugin config because the backend could not find this plugin.\",\n \"unsupported_backend\": \"The current backend does not expose the plugin management API. Use a newer backend build that includes plugin management endpoints, then restart the service.\",\n \"runtime_unavailable_title\": \"Plugin runtime unavailable\",\n \"runtime_unavailable_desc\": \"plugins.enabled is true, but the server reports x-cpa-support-plugin: 0. The current binary does not include plugin runtime support, so plugin management and store actions remain locked. Deploy a plugin-capable build for the current platform and restart the backend. On Linux this commonly requires CGO and a compatible libc. Disable plugins.enabled if plugins are not intended.\",\n \"runtime_probe_failed_desc\": \"plugins.enabled is true, but the Panel could not verify plugin runtime support from either x-cpa-support-plugin or the plugin API. Plugin actions remain locked. Check the backend build and reverse-proxy/CORS header exposure, then reconnect.\",\n \"runtime_unavailable_action\": \"Review configuration\",\n \"global_status\": \"Global status\",\n \"global_enabled\": \"Enabled\",\n \"global_disabled\": \"Disabled\",\n \"global_disabled_hint\": \"plugins.enabled is false, so enabled plugin instances will not become effective.\",\n \"plugins_dir\": \"Plugin directory\",\n \"discovered\": \"Discovered\",\n \"effective\": \"Effective\",\n \"search_placeholder\": \"Search plugin ID, name, author, or resource...\",\n \"search_label\": \"Search plugins\",\n \"no_plugins\": \"No plugins\",\n \"no_plugins_desc\": \"No plugins were found in the plugin directory or runtime registry.\",\n \"configured\": \"Configured\",\n \"not_configured\": \"Not configured\",\n \"registered\": \"Registered\",\n \"not_registered\": \"Not registered\",\n \"oauth\": \"OAuth\",\n \"status_effective\": \"Effective\",\n \"status_inactive\": \"Inactive\",\n \"version_label\": \"Version\",\n \"author_label\": \"Author\",\n \"path_label\": \"Path\",\n \"edit_config\": \"Edit config\",\n \"open_resource\": \"Open resource\",\n \"open_repository\": \"Open repository\",\n \"config_title\": \"Configure {{name}}\",\n \"base_settings\": \"Base settings\",\n \"enabled\": \"Enabled\",\n \"enabled_hint\": \"Controls the enabled field for this plugin instance under plugins.configs.\",\n \"priority\": \"Priority\",\n \"config_fields\": \"Config fields\",\n \"no_config_fields\": \"This plugin does not declare visual config fields.\",\n \"select_placeholder\": \"Select\",\n \"array_item_placeholder\": \"Enter array item\",\n \"add_array_item\": \"Add array item\",\n \"remove_array_item\": \"Remove array item\",\n \"delete_plugin\": \"Delete\",\n \"delete_confirm_title\": \"Delete plugin\",\n \"delete_confirm_message\": \"Delete {{name}} ({{id}})? This removes the local plugin file and saved config.\",\n \"delete_success\": \"Plugin deleted\",\n \"delete_failed\": \"Failed to delete plugin\",\n \"delete_restart_required\": \"The loaded plugin cannot be removed until the backend restarts.\",\n \"toggle_success\": \"Plugin status updated\",\n \"toggle_failed\": \"Failed to update plugin status\",\n \"runtime_pending\": \"Plugin change was saved, but the runtime state is still pending. Refresh later or check backend logs.\",\n \"save_success\": \"Plugin config saved\",\n \"save_failed\": \"Failed to save plugin config\",\n \"validation_failed\": \"Fix plugin config form errors first\",\n \"invalid_priority\": \"Enter an integer priority\",\n \"invalid_number\": \"Enter a valid number\",\n \"invalid_integer\": \"Enter a valid integer\",\n \"invalid_json\": \"Enter valid JSON\",\n \"expected_array\": \"Enter a JSON array\",\n \"expected_object\": \"Enter a JSON object\",\n \"invalid_enum\": \"Choose one of the declared enum values\"\n },\n \"plugin_store\": {\n \"title\": \"Plugin Store\",\n \"description\": \"Browse the plugin registry, then install or update plugins for the current backend.\",\n \"description_show_more\": \"Show more\",\n \"description_show_less\": \"Show less\",\n \"source_name\": \"Source: {{source}}\",\n \"cli_proxy_api_source\": \"CLIProxyAPI source\",\n \"refresh\": \"Refresh\",\n \"retry\": \"Retry\",\n \"load_failed\": \"Failed to load the plugin store\",\n \"unsupported_backend\": \"The current backend does not expose the plugin store API. Use a newer backend build that includes plugin store endpoints, then restart the service.\",\n \"registry_failed\": \"Failed to reach the plugin registry\",\n \"global_status\": \"Global status\",\n \"global_enabled\": \"Enabled\",\n \"global_disabled\": \"Disabled\",\n \"global_disabled_hint\": \"plugins.enabled is false, so installed plugins will not become effective.\",\n \"plugins_dir\": \"Plugin directory\",\n \"stat_available\": \"Available\",\n \"search_placeholder\": \"Search plugin ID, name, author, or tag...\",\n \"search_label\": \"Search plugin store\",\n \"filter_label\": \"Filter by install status\",\n \"filter_all\": \"All\",\n \"filter_installed\": \"Installed\",\n \"filter_not_installed\": \"Not installed\",\n \"filter_updates\": \"Updates\",\n \"badge_installed\": \"Installed\",\n \"badge_update\": \"Update available\",\n \"badge_effective\": \"Effective\",\n \"version_arrow\": \"v{{from}} → v{{to}}\",\n \"install_type\": \"Install: {{type}}\",\n \"platforms\": \"Platforms: {{platforms}}\",\n \"auth_required\": \"Auth required\",\n \"auth_configured\": \"Auth configured\",\n \"auth_required_hint\": \"Configure plugins.store-auth before installing from this source or artifact URL\",\n \"source_errors_title\": \"Some plugin sources failed to load\",\n \"install\": \"Install\",\n \"update\": \"Update\",\n \"manage\": \"Manage\",\n \"install_confirm_title\": \"Install plugin\",\n \"install_confirm_message\": \"Download {{target}} from the plugin registry and install it into the local plugin directory?\",\n \"update_confirm_title\": \"Update plugin\",\n \"update_confirm_message\": \"Download and install {{target}}?\",\n \"install_version_label\": \"Version\",\n \"install_version_latest\": \"latest\",\n \"install_version_latest_mode\": \"Latest stable\",\n \"install_version_latest_hint\": \"Resolved by the backend during install. Current listed version: {{version}}.\",\n \"install_version_release_mode\": \"Choose release\",\n \"install_version_release_hint\": \"Read installable tags from GitHub Releases.\",\n \"install_version_manual_mode\": \"Manual release tag\",\n \"install_version_manual_hint\": \"Use only when automatic release loading is unavailable.\",\n \"install_versions_loading\": \"Loading GitHub Releases...\",\n \"install_versions_load_failed\": \"Failed to load release versions\",\n \"install_version_non_github\": \"This plugin repository is not a GitHub repository\",\n \"install_versions_empty\": \"No selectable releases were found.\",\n \"install_versions_only_prerelease\": \"Only prerelease versions are available. Show prereleases to choose one.\",\n \"install_version_release_select\": \"Choose release version\",\n \"install_version_release_placeholder\": \"Choose release version\",\n \"install_version_prerelease_badge\": \"prerelease\",\n \"install_version_assets_count\": \"{{count}} assets\",\n \"install_version_show_prerelease\": \"Show prerelease versions\",\n \"install_version_manual_placeholder\": \"For example v0.1.4\",\n \"install_version_manual_error\": \"Release tags can only contain letters, numbers, dots, underscores, plus signs, and hyphens; spaces and slashes are not allowed.\",\n \"install_version_current_selected\": \"{{version}} is already installed. Choose another version.\",\n \"install_version_releases_link\": \"View GitHub Releases\",\n \"install_success\": \"Plugin installed\",\n \"update_success\": \"Plugin updated\",\n \"install_failed\": \"Failed to install plugin\",\n \"update_failed\": \"Failed to update plugin\",\n \"status_pending\": \"Plugin files were updated, but the local status has not refreshed yet. Refresh later or check backend logs.\",\n \"registration_pending\": \"Plugin files were updated, but registration is still pending. Refresh later or check backend logs.\",\n \"restart_required_notice\": \"Restart the service to load the new plugin version\",\n \"restart_required_banner\": \"Restart the service to apply the new version of: {{plugins}}\",\n \"open_repository\": \"Open repository\",\n \"open_homepage\": \"Open homepage\",\n \"no_plugins\": \"Registry is empty\",\n \"no_plugins_desc\": \"The plugin registry did not return any plugins.\",\n \"no_matches\": \"No matching plugins\",\n \"no_matches_desc\": \"No plugins match the current search or filter.\",\n \"clear_filters\": \"Clear filters\",\n \"security_banner_title\": \"Third-party plugins run with full backend access\",\n \"security_banner_text\": \"Plugins execute code inside the proxy service and can read your credentials and traffic. Only install plugins you trust — be especially careful with any plugin not published by the official router-for-me organization.\",\n \"badge_untrusted\": \"Third-party\",\n \"gate_title\": \"Install {{name}}\",\n \"gate_title_update\": \"Update {{name}}\",\n \"gate_warning\": \"Unexpected and harmful things can happen if you don't read this.\",\n \"gate_effect_runs_code\": \"This plugin will run uncertified third-party code inside your proxy backend. The system cannot isolate or audit its behavior, and it may have access to your sensitive credentials, network requests, and response data.\",\n \"gate_effect_no_review\": \"This plugin is not published or reviewed by the official router-for-me organization. The official organization makes no express or implied warranty for this plugin's stability, security, compliance, or any behavior changes in future versions.\",\n \"gate_effect_restart\": \"Installing it changes the local plugin directory and may require a service restart to take effect.\",\n \"gate_untrusted_alert\": \"This plugin is not from the official router-for-me organization. Only continue if you fully trust its author and source.\",\n \"gate_repository_label\": \"Repository\",\n \"gate_source_label\": \"Source\",\n \"gate_step1_action\": \"I want to install this plugin\",\n \"gate_step2_action\": \"I have read and understand these risks\",\n \"gate_step3_prompt\": \"To confirm, type \\\"{{token}}\\\" in the box below\",\n \"gate_step3_action\": \"Install this plugin\",\n \"gate_step3_hint\": \"Enter the exact identifier shown above to enable installation.\"\n },\n \"plugin_resource\": {\n \"title\": \"Plugin Page\",\n \"page_count\": \"{{count}} pages\",\n \"load_failed\": \"Failed to load plugin page\",\n \"unavailable\": \"Plugin page unavailable\",\n \"not_found\": \"Plugin page not found\",\n \"not_found_desc\": \"This plugin page is not declared by the current backend plugin list.\",\n \"empty_src\": \"Plugin page URL is empty\",\n \"empty_src_desc\": \"This plugin menu does not provide an embeddable page URL.\"\n },\n \"system_info\": {\n \"title\": \"Management Center Info\",\n \"about_title\": \"CLI Proxy API Management Center\",\n \"connection_status_title\": \"Connection Status\",\n \"api_status_label\": \"API Status:\",\n \"config_status_label\": \"Config Status:\",\n \"last_update_label\": \"Last Update:\",\n \"cache_data\": \"Cache Data\",\n \"real_time_data\": \"Real-time Data\",\n \"not_loaded\": \"Not Loaded\",\n \"seconds_ago\": \"seconds ago\",\n \"models_title\": \"Available Models\",\n \"models_desc\": \"Shows the /models response and uses saved API keys for auth automatically.\",\n \"models_loading\": \"Loading available models...\",\n \"models_empty\": \"No models returned by /models\",\n \"models_error\": \"Failed to load model list\",\n \"models_count\": \"{{count}} available models\",\n \"version_check_title\": \"Update Check\",\n \"version_check_desc\": \"Call the /latest-version endpoint to compare with the server version and see if an update is available.\",\n \"version_current_label\": \"Current version\",\n \"version_latest_label\": \"Latest version\",\n \"version_check_button\": \"Check for updates\",\n \"version_check_idle\": \"Click to check for updates\",\n \"version_checking\": \"Checking for the latest version...\",\n \"version_update_available\": \"An update is available: {{version}}\",\n \"version_is_latest\": \"You are on the latest version\",\n \"version_check_error\": \"Update check failed\",\n \"version_current_missing\": \"Server version is unavailable; cannot compare\",\n \"version_unknown\": \"Unknown\",\n \"quick_links_title\": \"Quick Links\",\n \"quick_links_desc\": \"Access project repositories and documentation for help and updates.\",\n \"link_main_repo\": \"Main Repository\",\n \"link_main_repo_desc\": \"CLI Proxy API core program source code\",\n \"link_webui_repo\": \"WebUI Repository\",\n \"link_webui_repo_desc\": \"Management Center frontend source code\",\n \"link_docs\": \"Documentation\",\n \"link_docs_desc\": \"Configuration tutorials and guides\",\n \"clear_login_title\": \"Local Login Data\",\n \"clear_login_desc\": \"Clear locally saved login data and sign out.\",\n \"clear_login_button\": \"Clear login data\",\n \"clear_login_confirm\": \"Clear local login data and sign out now?\"\n },\n \"notification\": {\n \"debug_updated\": \"Debug settings updated\",\n \"proxy_updated\": \"Proxy settings updated\",\n \"proxy_cleared\": \"Proxy settings cleared\",\n \"retry_updated\": \"Retry settings updated\",\n \"quota_switch_project_updated\": \"Project switch settings updated\",\n \"quota_switch_preview_updated\": \"Preview model switch settings updated\",\n \"logging_to_file_updated\": \"Logging settings updated\",\n \"logs_max_total_size_updated\": \"Log size limit updated\",\n \"request_log_updated\": \"Request logging setting updated\",\n \"force_model_prefix_updated\": \"Model prefix setting updated\",\n \"ws_auth_updated\": \"WebSocket authentication setting updated\",\n \"routing_strategy_updated\": \"Routing strategy updated\",\n \"login_storage_cleared\": \"Local login data cleared\",\n \"api_key_added\": \"API key added successfully\",\n \"api_key_updated\": \"API key updated successfully\",\n \"api_key_deleted\": \"API key deleted successfully\",\n \"api_key_invalid_chars\": \"API key can only contain letters, numbers, and symbols\",\n \"gemini_key_added\": \"Gemini key added successfully\",\n \"gemini_key_updated\": \"Gemini key updated successfully\",\n \"gemini_key_deleted\": \"Gemini key deleted successfully\",\n \"gemini_multi_input_required\": \"Please enter at least one Gemini key\",\n \"gemini_multi_failed\": \"Gemini bulk add failed\",\n \"gemini_multi_summary\": \"Gemini bulk add finished: {{success}} added, {{skipped}} skipped, {{failed}} failed\",\n \"codex_config_added\": \"Codex configuration added successfully\",\n \"codex_config_updated\": \"Codex configuration updated successfully\",\n \"codex_config_deleted\": \"Codex configuration deleted successfully\",\n \"codex_base_url_required\": \"Please enter the Codex Base URL\",\n \"claude_config_added\": \"Claude configuration added successfully\",\n \"claude_config_updated\": \"Claude configuration updated successfully\",\n \"claude_config_deleted\": \"Claude configuration deleted successfully\",\n \"vertex_config_added\": \"Vertex configuration added successfully\",\n \"vertex_config_updated\": \"Vertex configuration updated successfully\",\n \"vertex_config_deleted\": \"Vertex configuration deleted successfully\",\n \"config_enabled\": \"Configuration enabled\",\n \"config_disabled\": \"Configuration disabled\",\n \"field_required\": \"Required fields cannot be empty\",\n \"openai_provider_required\": \"Please fill in provider name and Base URL\",\n \"openai_provider_added\": \"OpenAI provider added successfully\",\n \"openai_provider_updated\": \"OpenAI provider updated successfully\",\n \"openai_provider_deleted\": \"OpenAI provider deleted successfully\",\n \"openai_model_name_required\": \"Model name is required\",\n \"openai_test_url_required\": \"Please provide a valid Base URL before testing\",\n \"openai_test_key_required\": \"Please add at least one API key before testing\",\n \"openai_test_model_required\": \"Please select a model to test\",\n \"data_refreshed\": \"Data refreshed successfully\",\n \"connection_required\": \"Please establish connection first\",\n \"refresh_failed\": \"Refresh failed\",\n \"update_failed\": \"Update failed\",\n \"add_failed\": \"Add failed\",\n \"delete_failed\": \"Delete failed\",\n \"upload_failed\": \"Upload failed\",\n \"download_failed\": \"Download failed\",\n \"login_failed\": \"Login failed\",\n \"please_enter\": \"Please enter\",\n \"please_fill\": \"Please fill\",\n \"provider_name_url\": \"provider name and Base URL\",\n \"api_key\": \"API key\",\n \"gemini_api_key\": \"Gemini API key\",\n \"codex_api_key\": \"Codex API key\",\n \"claude_api_key\": \"Claude API key\",\n \"commercial_mode_restart_required\": \"Commercial mode setting changed. Please restart the service for it to take effect\",\n \"copy_failed\": \"Copy failed\",\n \"link_copied\": \"Link copied to clipboard\"\n },\n \"language\": {\n \"switch\": \"Language\",\n \"chinese\": \"中文\",\n \"chinese_tw\": \"Traditional Chinese (Taiwan)\",\n \"english\": \"English\",\n \"russian\": \"Русский\"\n },\n \"theme\": {\n \"switch\": \"Theme\",\n \"light\": \"Wool Paper\",\n \"white\": \"Pure White\",\n \"dark\": \"Dark\",\n \"switch_to_light\": \"Switch to wool paper mode\",\n \"switch_to_dark\": \"Switch to dark mode\",\n \"auto\": \"Follow system\"\n },\n \"sidebar\": {\n \"primary_navigation\": \"Primary navigation\",\n \"toggle_expand\": \"Expand sidebar\",\n \"toggle_collapse\": \"Collapse sidebar\"\n },\n \"footer\": {\n \"api_version\": \"CLI Proxy API Version\",\n \"build_date\": \"Build Time\",\n \"version\": \"Management UI Version\",\n \"author\": \"Author\"\n },\n \"providersPage\": {\n \"header\": {\n \"title\": \"AI Providers\",\n \"activeResources\": \"{{active}}/{{total}} active resources\",\n \"providerFamilies\": \"{{count}} provider families\",\n \"updatedAt\": \"Updated {{time}}\",\n \"issueCount\": \"{{count}} issues\"\n },\n \"actions\": {\n \"refresh\": \"Refresh\",\n \"syncing\": \"Syncing\",\n \"new\": \"New\",\n \"edit\": \"Edit\",\n \"view\": \"View\",\n \"delete\": \"Delete\",\n \"clear\": \"Clear\",\n \"cancel\": \"Cancel\",\n \"save\": \"Save\",\n \"create\": \"Create\",\n \"enable\": \"Enable\",\n \"disable\": \"Disable\"\n },\n \"categories\": {\n \"title\": \"Providers\",\n \"activeCount\": \"{{active}}/{{total}} active\"\n },\n \"providerNames\": {\n \"gemini\": \"Gemini\",\n \"codex\": \"Codex\",\n \"xai\": \"xAI\",\n \"claude\": \"Claude\",\n \"vertex\": \"Vertex\",\n \"openaiCompatibility\": \"OpenAI Compatible\",\n \"claudeApi\": \"ClaudeAPI\",\n \"code0\": \"Code0\",\n \"fennoAI\": \"FennoAI\",\n \"qiniuCloud\": \"Qiniu Cloud\"\n },\n \"table\": {\n \"key\": \"Key\",\n \"baseUrl\": \"Base URL\",\n \"prefix\": \"Prefix\",\n \"models\": \"Models/Headers\",\n \"status\": \"Status\",\n \"actions\": \"Actions\",\n \"metrics\": {\n \"models\": \"Models\",\n \"keys\": \"Keys\",\n \"headers\": \"Headers\"\n },\n \"stats\": {\n \"recent\": \"Recent\",\n \"fullUsage\": \"Usage\",\n \"tokens\": \"Tokens\",\n \"cost\": \"Cost\"\n },\n \"websocketsTag\": \"WebSockets\",\n \"cloakTag\": \"Cloak\",\n \"empty\": \"No resources yet, click \\\"New\\\" to add.\",\n \"filterPlaceholder\": \"Search keys, URLs, prefixes…\",\n \"description\": \"Manage resources under {{route}}\",\n \"providerIssue\": \"This provider has an issue\"\n },\n \"status\": {\n \"active\": \"Active\",\n \"disabled\": \"Disabled\",\n \"notSet\": \"Not set\",\n \"none\": \"None\",\n \"notConfigured\": \"Not configured\",\n \"defaultSuffix\": \"(default)\"\n },\n \"detail\": {\n \"title\": \"Details\",\n \"metadataTitle\": \"Metadata\",\n \"fields\": {\n \"identifier\": \"Identifier\",\n \"baseUrl\": \"Base URL\",\n \"proxyUrl\": \"Proxy URL\",\n \"prefix\": \"Prefix\",\n \"models\": \"Models\",\n \"headers\": \"Headers\",\n \"authIndex\": \"Auth Index\",\n \"excludedModels\": \"Excluded models\",\n \"apiKeyEntries\": \"API key entries\"\n }\n },\n \"form\": {\n \"createEyebrow\": \"New\",\n \"editEyebrow\": \"Edit\",\n \"name\": \"Name\",\n \"apiKey\": \"API key\",\n \"apiKeyCreatePlaceholder\": \"Enter API key\",\n \"apiKeyEditPlaceholder\": \"Leave empty to keep unchanged\",\n \"baseUrl\": \"Base URL\",\n \"baseUrlRequiredHint\": \"Required for this provider\",\n \"proxyUrl\": \"Proxy URL\",\n \"prefix\": \"Prefix\",\n \"priority\": \"Priority\",\n \"disabled\": \"Disable this entry\",\n \"disabledHint\": \"Disabled entries won't be used by the gateway\",\n \"websockets\": \"Enable WebSockets\",\n \"testModel\": \"Test model\",\n \"testModelClaudeHint\": \"Used for connectivity testing only; not saved\",\n \"testModelAutoWith\": \"Auto · {{name}}\",\n \"testModelAutoEmpty\": \"Auto (no models added yet)\",\n \"testModelCustom\": \"{{name}} (custom)\",\n \"modelsSection\": \"Custom models\",\n \"addModel\": \"Add model\",\n \"modelNamePlaceholder\": \"Upstream model name\",\n \"modelAliasPlaceholder\": \"Routing alias (optional)\",\n \"modelDisplayNamePlaceholder\": \"Display name (optional)\",\n \"headersSection\": \"Request headers\",\n \"addHeader\": \"Add header\",\n \"headers\": \"Headers\",\n \"headersHint\": \"One per line, format Key: Value\",\n \"excludedSection\": \"Excluded models\",\n \"excludedHint\": \"One model per line; matched models won't be routed\",\n \"cloakSection\": \"Cloak settings\",\n \"cloakMode\": \"Mode\",\n \"cloakStrict\": \"Strict mode\",\n \"cloakSensitiveWords\": \"Sensitive words (one per line)\",\n \"apiKeyEntriesSection\": \"API key entries\",\n \"apiKeyEntry\": \"Key #{{index}}\",\n \"addApiKeyEntry\": \"Add key entry\",\n \"showApiKey\": \"Show API key\",\n \"hideApiKey\": \"Hide API key\",\n \"disableCooling\": \"Disable cooling\",\n \"disableCoolingHint\": \"Disable failure cooldown windows only for this credential or provider\",\n \"modelEntry\": \"Model #{{index}}\",\n \"modelImage\": \"Allow image endpoints\",\n \"modelImageHint\": \"Allow this model on /v1/images/generations and /v1/images/edits\",\n \"thinkingConfig\": \"Thinking config (JSON)\",\n \"thinkingConfigHint\": \"Supports levels, min, max, zero_allowed, dynamic_allowed\",\n \"cloakCacheUserId\": \"Cache user_id\",\n \"cloakCacheUserIdHint\": \"Reuse the Claude cloak user_id per API key\",\n \"experimentalCchSigning\": \"Experimental CCH signing\",\n \"experimentalCchSigningHint\": \"Sign the final cloaked Claude /v1/messages body with CCH\",\n \"validation\": {\n \"nameRequired\": \"Name is required\",\n \"apiKeyRequired\": \"At least one API key is required\",\n \"baseUrlRequired\": \"Base URL is required\"\n },\n \"showAllEntries\": \"Show all ({{count}})\",\n \"showFewerEntries\": \"Show fewer\",\n \"proxyBadge\": \"Proxy\",\n \"modelBadgeImage\": \"Image\",\n \"modelBadgeThinking\": \"Thinking\"\n },\n \"delete\": {\n \"title\": \"Delete resource\",\n \"confirm\": \"Delete {{name}}? This action cannot be undone.\"\n },\n \"toast\": {\n \"created\": \"Created\",\n \"updated\": \"Updated\",\n \"deleted\": \"Deleted\",\n \"enabled\": \"Enabled\",\n \"disabled\": \"Disabled\",\n \"toggleFailed\": \"Failed to update status\"\n },\n \"unsavedChanges\": {\n \"title\": \"Discard unsaved changes?\",\n \"message\": \"You have unsaved edits in this form. Closing will discard them.\",\n \"discard\": \"Discard changes\",\n \"keepEditing\": \"Keep editing\"\n },\n \"connectivity\": {\n \"test\": \"Test\",\n \"testAll\": \"Test all\",\n \"success\": \"Reachable\",\n \"baseUrlRequired\": \"Base URL is required\",\n \"endpointInvalid\": \"Endpoint URL is invalid\",\n \"apiKeyRequired\": \"API key is required\",\n \"modelRequired\": \"Test model is required\",\n \"timeout\": \"Timed out after {{seconds}}s\",\n \"requestFailed\": \"Request failed\"\n },\n \"discovery\": {\n \"openButton\": \"Fetch from endpoint\",\n \"searchPlaceholder\": \"Search models\",\n \"reload\": \"Reload\",\n \"loading\": \"Loading models…\",\n \"empty\": \"No models returned by the endpoint\",\n \"notLoaded\": \"Click Reload to fetch models\",\n \"selectAll\": \"Select all\",\n \"clearAll\": \"Clear selection\",\n \"selectedCount\": \"{{selected}} / {{total}}\",\n \"alreadyAdded\": \"Already added\",\n \"close\": \"Close\",\n \"apply\": \"Apply ({{count}})\"\n },\n \"toolbar\": {\n \"sortBy\": \"Sort by\",\n \"sort\": {\n \"name\": \"Name\",\n \"priority\": \"Priority\",\n \"recentSuccess\": \"Recent success\",\n \"directionAsc\": \"Ascending\",\n \"directionDesc\": \"Descending\"\n },\n \"filter\": {\n \"allModels\": \"All models\",\n \"selectedModels\": \"{{selected}}/{{total}} models\",\n \"selectAll\": \"Select all\",\n \"clear\": \"Clear\",\n \"empty\": \"No models configured yet\"\n }\n },\n \"modelCatalog\": {\n \"notLoaded\": \"Not loaded\"\n },\n \"sponsor\": {\n \"protocolSummary\": \"Anthropic / OpenAI / Gemini / Codex API (Responses)\",\n \"detailHint\": \"{{provider}} is persisted into the matching API key configs by protocol; this view manages them together.\",\n \"apiKeyHint\": \"This key is only written to the selected group/protocol config.\",\n \"aggregationConflict\": \"This grouped provider contains multiple backend configs or OpenAI keys. Edit it in the source configuration to avoid data loss.\",\n \"partialMutationWarning\": \"The operation failed after one or more protocols may have been updated. The latest configuration was reloaded; review it before retrying.\",\n \"groupedKeysTitle\": \"Grouped keys\",\n \"groupedKeysHint\": \"Platform keys may be bound to a group when created. Each grouped key here manages one protocol, and model discovery only uses that protocol.\",\n \"groupedKey\": \"Grouped key #{{index}}\",\n \"addGroupedKey\": \"Add grouped key\",\n \"removeGroupedKey\": \"Remove grouped key\",\n \"protocol\": \"Group/protocol\",\n \"protocolHint\": \"Select the group/protocol for this key.\",\n \"protocolEndpoint\": \"Current protocol endpoint\",\n \"urlMode\": \"{{provider}} URL\",\n \"urlHint\": \"All URLs use the same API conventions. Saving writes only the endpoint for the current grouped protocol.\",\n \"urlOptions\": {\n \"standard\": \"Standard URL\",\n \"direct\": \"Direct URL\",\n \"domestic\": \"China mainland route\",\n \"overseas\": \"Overseas route\"\n },\n \"urlOptionDescriptions\": {\n \"domestic\": \"For users and workloads in mainland China; usually lower latency in mainland networks.\",\n \"overseas\": \"For overseas deployments, cross-border access, or workloads that need overseas models.\"\n },\n \"modelsTitle\": \"Protocol model settings\",\n \"modelsHint\": \"Configure model allowlists or aliases separately for Codex API, Anthropic, Gemini, and OpenAI-compatible routes.\",\n \"protocolModels\": {\n \"codex\": \"Codex API models\",\n \"anthropic\": \"Anthropic models\",\n \"gemini\": \"Gemini models\",\n \"openai\": \"OpenAI-compatible models\"\n },\n \"protocolModelHints\": {\n \"codex\": \"Writes to the Codex API config models. Fetch from /v1/models and set aliases if needed.\",\n \"anthropic\": \"Writes to the Anthropic config models. Fetch from /v1/models and set aliases if needed.\",\n \"gemini\": \"Writes to the Gemini config models. Fetch from /v1beta/models and set aliases if needed.\",\n \"openai\": \"Writes to the OpenAI-compatible config models. Fetch from /models and set aliases if needed.\"\n },\n \"validation\": {\n \"keyRequired\": \"Enter an API key for every grouped key.\",\n \"protocolDuplicate\": \"Each protocol can only have one grouped key.\"\n },\n \"openaiEntries\": \"OpenAI-compatible keys\",\n \"codexEntries\": \"Codex API keys\",\n \"anthropicEntries\": \"Anthropic keys\",\n \"geminiEntries\": \"Gemini keys\",\n \"protocols\": {\n \"anthropic\": \"Anthropic\",\n \"openai\": \"OpenAI Compatible\",\n \"gemini\": \"Gemini\",\n \"codexResponses\": \"Codex API (Responses)\"\n }\n }\n }\n}\n"}}, "src/i18n/locales/zh-CN.json": {"4a3d69d5e1d2eef01ed3ed4fadecd6adbe4b5a42": {"t": 1785674689.993449, "n": 100130, "h": "51f9030c71650144", "c": "{\n \"common\": {\n \"login\": \"登录\",\n \"logout\": \"登出\",\n \"back\": \"返回\",\n \"cancel\": \"取消\",\n \"confirm\": \"确认\",\n \"leave\": \"离开\",\n \"stay\": \"继续编辑\",\n \"save\": \"保存\",\n \"delete\": \"删除\",\n \"edit\": \"编辑\",\n \"add\": \"添加\",\n \"update\": \"更新\",\n \"refresh\": \"刷新\",\n \"close\": \"关闭\",\n \"success\": \"成功\",\n \"error\": \"错误\",\n \"info\": \"信息\",\n \"warning\": \"警告\",\n \"loading\": \"加载中...\",\n \"connecting\": \"连接中...\",\n \"connected\": \"已连接\",\n \"disconnected\": \"未连接\",\n \"connecting_status\": \"连接中\",\n \"connected_status\": \"已连接\",\n \"disconnected_status\": \"未连接\",\n \"yes\": \"是\",\n \"no\": \"否\",\n \"not_set\": \"未设置\",\n \"optional\": \"可选\",\n \"required\": \"必填\",\n \"api_key\": \"密钥\",\n \"base_url\": \"地址\",\n \"prefix\": \"前缀\",\n \"proxy_url\": \"代理\",\n \"priority\": \"优先级\",\n \"alias\": \"别名\",\n \"failure\": \"失败\",\n \"unknown_error\": \"未知错误\",\n \"quota_update_required\": \"请更新 CPA 版本或检查更新\",\n \"quota_check_credential\": \"请检查凭证状态\",\n \"copy\": \"复制\",\n \"expand\": \"展开\",\n \"collapse\": \"收起\",\n \"status\": \"状态\",\n \"action\": \"操作\",\n \"custom_headers_label\": \"自定义请求头\",\n \"custom_headers_hint\": \"可选,设置需要附带到请求中的 HTTP 头,名称和值均不能为空。\",\n \"custom_headers_add\": \"添加请求头\",\n \"custom_headers_key_placeholder\": \"Header 名称,例如 X-Custom-Header\",\n \"custom_headers_value_placeholder\": \"Header 值\",\n \"model_name_placeholder\": \"模型名称,例如 claude-3-5-sonnet-20241022\",\n \"model_alias_placeholder\": \"模型别名 (可选)\",\n \"invalid_provider_index\": \"无效的提供商索引。\",\n \"unsaved_changes_title\": \"未保存的更改\",\n \"unsaved_changes_message\": \"你有未保存的更改,离开后将丢失这些更改。确定要离开吗?\"\n },\n \"title\": {\n \"main\": \"CLI Proxy API Management Center\",\n \"login\": \"CLI Proxy API Management Center\",\n \"abbr\": \"CPAMC\"\n },\n \"splash\": {\n \"title\": \"CLI Proxy API\",\n \"subtitle\": \"管理中心\"\n },\n \"auto_login\": {\n \"title\": \"正在自动登录...\",\n \"message\": \"正在使用本地保存的连接信息尝试连接服务器\"\n },\n \"login\": {\n \"subtitle\": \"请输入连接信息以访问管理界面\",\n \"connection_title\": \"连接地址\",\n \"connection_current\": \"当前地址\",\n \"connection_auto_hint\": \"系统将自动使用当前访问地址进行连接\",\n \"custom_connection_label\": \"自定义连接地址:\",\n \"custom_connection_placeholder\": \"例如: https://example.com:8317\",\n \"custom_connection_hint\": \"默认使用当前访问地址,若需要可手动输入其他地址。\",\n \"use_current_address\": \"使用当前地址\",\n \"remember_password_label\": \"记住密码\",\n \"management_key_label\": \"管理密钥:\",\n \"management_key_placeholder\": \"请输入管理密钥\",\n \"connect_button\": \"连接\",\n \"submit_button\": \"登录\",\n \"submitting\": \"连接中...\",\n \"error_title\": \"登录失败\",\n \"error_backend_detail\": \"后端返回\",\n \"error_required\": \"请填写完整的连接信息\",\n \"error_invalid\": \"连接失败,请检查服务地址、管理接口和管理密钥\",\n \"error_network\": \"网络连接失败,请检查网络或服务器地址\",\n \"error_timeout\": \"连接超时,服务器无响应\",\n \"error_unauthorized\": \"认证失败,管理密钥缺失或无效\",\n \"error_forbidden\": \"访问被拒绝,远程管理未启用、管理密钥未配置或 IP 被临时封禁\",\n \"error_not_found\": \"未找到 Management API,请确认服务地址指向 CLIProxyAPI 后端\",\n \"error_server\": \"后端处理管理接口时发生错误,请查看服务日志\",\n \"error_cors\": \"跨域请求被阻止,请检查服务器配置\",\n \"error_ssl\": \"SSL/TLS 证书验证失败\"\n },\n \"header\": {\n \"check_connection\": \"检查连接\",\n \"refresh_all\": \"刷新全部\",\n \"logout\": \"登出\"\n },\n \"connection\": {\n \"title\": \"连接信息\",\n \"server_address\": \"服务器地址:\",\n \"management_key\": \"管理密钥:\",\n \"status\": \"连接状态:\"\n },\n \"nav\": {\n \"dashboard\": \"仪表盘\",\n \"basic_settings\": \"基础设置\",\n \"api_keys\": \"API 密钥\",\n \"ai_providers\": \"AI 提供商\",\n \"auth_files\": \"认证文件\",\n \"oauth\": \"OAuth 登录\",\n \"quota_management\": \"配额管理\",\n \"usage_stats\": \"使用统计\",\n \"plugins\": \"插件管理\",\n \"plugins_runtime_unavailable\": \"插件管理(运行时不可用)\",\n \"plugin_store\": \"插件商店\",\n \"config_management\": \"配置面板\",\n \"logs\": \"日志查看\",\n \"system_info\": \"中心信息\"\n },\n \"nav_groups\": {\n \"operate\": \"运行\",\n \"gateway\": \"网关\",\n \"observe\": \"观测\",\n \"plugin_pages\": \"插件\",\n \"control\": \"控制\"\n },\n \"nav_meta\": {\n \"dashboard\": \"运行总览\",\n \"ai_providers\": \"上游模型路由\",\n \"auth_files\": \"Auth 文件与凭证\",\n \"oauth\": \"OAuth 授权登录\",\n \"quota_management\": \"API Key 与限额\",\n \"usage_stats\": \"完整用量与请求分析\",\n \"plugins\": \"插件启停与配置\",\n \"plugin_store\": \"发现并安装插件\",\n \"logs\": \"请求追踪与排查\",\n \"config_management\": \"网关基础配置\",\n \"system_info\": \"运行与诊断信息\"\n },\n \"dashboard\": {\n \"title\": \"仪表盘\",\n \"subtitle\": \"欢迎使用 CLI Proxy API 管理中心\",\n \"openai_providers\": \"OpenAI 提供商\",\n \"quick_actions\": \"快捷操作\",\n \"current_config\": \"当前配置\",\n \"management_keys\": \"管理密钥\",\n \"provider_keys_detail\": \"G:{{gemini}} C:{{codex}} X:{{xai}} Cl:{{claude}} V:{{vertex}} O:{{openai}} A:{{ampcode}}\",\n \"oauth_credentials\": \"OAuth 凭证\",\n \"edit_settings\": \"编辑设置\",\n \"routing_strategy\": \"路由策略\",\n \"available_models\": \"可用模型\",\n \"available_models_desc\": \"所有提供商的模型总数\",\n \"welcome_back\": \"欢迎回来\",\n \"greeting_morning\": \"早上好\",\n \"greeting_afternoon\": \"下午好\",\n \"greeting_evening\": \"晚上好\",\n \"greeting_night\": \"夜深了\",\n \"caring_morning\": \"新的一天,准备大展身手吧。\",\n \"caring_afternoon\": \"稳步推进中,继续加油。\",\n \"caring_evening\": \"今天辛苦了,收尾工作做好哦。\",\n \"caring_night\": \"夜深了,别忘了早些休息。\",\n \"system_overview\": \"系统概览\"\n },\n \"basic_settings\": {\n \"title\": \"基础设置\",\n \"debug_title\": \"调试模式\",\n \"debug_enable\": \"启用调试模式\",\n \"proxy_title\": \"代理设置\",\n \"proxy_url_label\": \"代理 URL:\",\n \"proxy_url_placeholder\": \"例如: socks5://user:pass@127.0.0.1:1080/\",\n \"proxy_update\": \"更新\",\n \"proxy_clear\": \"清空\",\n \"retry_title\": \"请求重试\",\n \"retry_count_label\": \"重试次数:\",\n \"retry_update\": \"更新\",\n \"quota_title\": \"配额超出行为\",\n \"quota_switch_project\": \"自动切换项目\",\n \"quota_switch_preview\": \"切换到预览模型\",\n \"logging_title\": \"日志记录\",\n \"logging_to_file_enable\": \"启用日志记录到文件\",\n \"logs_max_total_size_title\": \"日志容量限制\",\n \"logs_max_total_size_label\": \"日志总大小上限 (MB):\",\n \"logs_max_total_size_hint\": \"设置为 0 表示不限制。\",\n \"logs_max_total_size_update\": \"更新\",\n \"request_log_title\": \"请求日志\",\n \"request_log_enable\": \"启用请求日志\",\n \"request_log_warning\": \"仅在需要排查问题时开启,日常请保持关闭。\",\n \"force_model_prefix_enable\": \"强制模型前缀\",\n \"ws_auth_title\": \"WebSocket 鉴权\",\n \"ws_auth_enable\": \"启用 /ws/* 鉴权\",\n \"routing_title\": \"路由策略\",\n \"routing_strategy_label\": \"路由策略:\",\n \"routing_strategy_hint\": \"round-robin 为轮询,fill-first 为优先填充。\",\n \"routing_strategy_update\": \"更新\",\n \"routing_strategy_round_robin\": \"round-robin (轮询)\",\n \"routing_strategy_fill_first\": \"fill-first (优先填充)\"\n },\n \"api_keys\": {\n \"title\": \"API 密钥管理\",\n \"proxy_auth_title\": \"代理服务认证密钥\",\n \"add_button\": \"添加密钥\",\n \"empty_title\": \"暂无API密钥\",\n \"empty_desc\": \"点击上方按钮添加第一个密钥\",\n \"item_title\": \"API密钥\",\n \"add_modal_title\": \"添加API密钥\",\n \"add_modal_key_label\": \"API密钥:\",\n \"add_modal_key_placeholder\": \"请输入API密钥\",\n \"edit_modal_title\": \"编辑API密钥\",\n \"edit_modal_key_label\": \"API密钥:\",\n \"delete_confirm\": \"确定要删除这个API密钥吗?\"\n },\n \"ai_providers\": {\n \"title\": \"AI 提供商配置\",\n \"gemini_title\": \"Gemini API 密钥\",\n \"gemini_add_button\": \"添加密钥\",\n \"gemini_empty_title\": \"暂无Gemini密钥\",\n \"gemini_empty_desc\": \"点击上方按钮添加第一个密钥\",\n \"gemini_item_title\": \"Gemini密钥\",\n \"gemini_add_modal_title\": \"添加Gemini API密钥\",\n \"gemini_add_modal_key_label\": \"API密钥\",\n \"gemini_add_modal_key_placeholder\": \"输入 Gemini API 密钥\",\n \"gemini_add_modal_key_hint\": \"逐条输入密钥,可同时指定可选 Base URL。\",\n \"gemini_keys_add_btn\": \"添加密钥\",\n \"gemini_base_url_label\": \"Base URL (可选)\",\n \"gemini_base_url_placeholder\": \"例如: https://generativelanguage.googleapis.com\",\n \"gemini_add_modal_proxy_label\": \"代理 URL (可选):\",\n \"gemini_add_modal_proxy_placeholder\": \"例如: socks5://proxy.example.com:1080\",\n \"gemini_models_label\": \"自定义模型 (可选):\",\n \"gemini_models_hint\": \"为空表示使用全部模型;可填写 name[, alias] 以限制或重命名模型。\",\n \"gemini_models_add_btn\": \"添加模型\",\n \"gemini_models_fetch_button\": \"从 /v1beta/models 获取\",\n \"gemini_models_fetch_title\": \"从 Gemini /v1beta/models 选择模型\",\n \"gemini_models_fetch_hint\": \"按 Gemini API 规范请求 GET /v1beta/models;默认附带 x-goog-api-key(来自 API Key 字段)并合并你配置的自定义请求头。\",\n \"gemini_models_fetch_url_label\": \"请求地址\",\n \"gemini_models_fetch_refresh\": \"重新获取\",\n \"gemini_models_fetch_loading\": \"正在从 Gemini /v1beta/models 获取模型列表...\",\n \"gemini_models_fetch_empty\": \"未获取到模型,请检查 Base URL、API Key 或请求头。\",\n \"gemini_models_fetch_error\": \"获取 Gemini 模型失败\",\n \"gemini_models_fetch_apply\": \"添加所选模型\",\n \"model_discovery_select_visible\": \"全选当前列表\",\n \"model_discovery_clear_selection\": \"清空已选\",\n \"model_discovery_selected_count\": \"已选 {{count}} 项\",\n \"gemini_models_search_label\": \"搜索模型\",\n \"gemini_models_search_placeholder\": \"按名称、别名或描述筛选\",\n \"gemini_models_search_empty\": \"没有匹配的模型,请更换关键字试试。\",\n \"gemini_models_fetch_added\": \"已添加 {{count}} 个新模型\",\n \"gemini_models_count\": \"模型数量\",\n \"gemini_edit_modal_title\": \"编辑Gemini API密钥\",\n \"gemini_edit_modal_key_label\": \"API密钥:\",\n \"gemini_delete_confirm\": \"确定要删除这个Gemini密钥吗?\",\n \"excluded_models_label\": \"排除的模型 (可选):\",\n \"excluded_models_placeholder\": \"用逗号或换行分隔,例如: gemini-1.5-pro, gemini-1.5-flash\",\n \"excluded_models_hint\": \"留空表示不过滤;保存时会自动去重并忽略空白。\",\n \"excluded_models_count\": \"排除 {{count}} 个模型\",\n \"prefix_label\": \"前缀 (可选):\",\n \"prefix_placeholder\": \"例如: team-a\",\n \"prefix_hint\": \"设置后可用 prefix/<model> 选择该条目。\",\n \"priority_label\": \"优先级 (可选):\",\n \"priority_hint\": \"数值越大优先级越高;留空表示默认(0)。\",\n \"config_toggle_label\": \"启用\",\n \"config_disabled_badge\": \"已停用\",\n \"codex_title\": \"Codex API 配置\",\n \"codex_add_button\": \"添加配置\",\n \"codex_empty_title\": \"暂无Codex配置\",\n \"codex_empty_desc\": \"点击上方按钮添加第一个配置\",\n \"codex_item_title\": \"Codex配置\",\n \"codex_add_modal_title\": \"添加Codex API配置\",\n \"codex_add_modal_key_label\": \"API密钥:\",\n \"codex_add_modal_key_placeholder\": \"请输入Codex API密钥\",\n \"codex_add_modal_url_label\": \"Base URL (必填):\",\n \"codex_add_modal_url_placeholder\": \"例如: https://api.example.com\",\n \"codex_add_modal_proxy_label\": \"代理 URL (可选):\",\n \"codex_add_modal_proxy_placeholder\": \"例如: socks5://proxy.example.com:1080\",\n \"codex_websockets_label\": \"Websockets\",\n \"codex_websockets_hint\": \"开启 Responses API 的 websocket 传输。\",\n \"codex_models_label\": \"自定义模型 (可选):\",\n \"codex_models_hint\": \"为空表示使用全部模型;可填写 name[, alias] 以限制或重命名模型。\",\n \"codex_models_add_btn\": \"添加模型\",\n \"codex_models_fetch_button\": \"从 /v1/models 获取\",\n \"codex_models_fetch_title\": \"从 /v1/models 选择模型\",\n \"codex_models_fetch_hint\": \"使用上方 Base URL 调用 /v1/models 端点,附带 API Key(Bearer)与自定义请求头。\",\n \"codex_models_fetch_url_label\": \"请求地址\",\n \"codex_models_fetch_refresh\": \"重新获取\",\n \"codex_models_fetch_loading\": \"正在从 /v1/models 获取模型列表...\",\n \"codex_models_fetch_empty\": \"未获取到模型,请检查端点或鉴权信息。\",\n \"codex_models_fetch_error\": \"获取模型失败\",\n \"codex_models_fetch_apply\": \"添加所选模型\",\n \"codex_models_search_label\": \"搜索模型\",\n \"codex_models_search_placeholder\": \"按名称、别名或描述筛选\",\n \"codex_models_search_empty\": \"没有匹配的模型,请更换关键字试试。\",\n \"codex_models_fetch_added\": \"已添加 {{count}} 个新模型\",\n \"codex_models_count\": \"模型数量\",\n \"codex_edit_modal_title\": \"编辑Codex API配置\",\n \"codex_edit_modal_key_label\": \"API密钥:\",\n \"codex_edit_modal_url_label\": \"Base URL (必填):\",\n \"codex_edit_modal_proxy_label\": \"代理 URL (可选):\",\n \"codex_delete_confirm\": \"确定要删除这个Codex配置吗?\",\n \"claude_title\": \"Claude API 配置\",\n \"claude_add_button\": \"添加配置\",\n \"claude_empty_title\": \"暂无Claude配置\",\n \"claude_empty_desc\": \"点击上方按钮添加第一个配置\",\n \"claude_item_title\": \"Claude配置\",\n \"claude_add_modal_title\": \"添加Claude API配置\",\n \"claude_add_modal_key_label\": \"API密钥:\",\n \"claude_add_modal_key_placeholder\": \"请输入Claude API密钥\",\n \"claude_add_modal_url_label\": \"Base URL (可选):\",\n \"claude_add_modal_url_placeholder\": \"例如: https://api.anthropic.com\",\n \"claude_add_modal_proxy_label\": \"代理 URL (可选):\",\n \"claude_add_modal_proxy_placeholder\": \"例如: socks5://proxy.example.com:1080\",\n \"claude_edit_modal_title\": \"编辑Claude API配置\",\n \"claude_edit_modal_key_label\": \"API密钥:\",\n \"claude_edit_modal_url_label\": \"Base URL (可选):\",\n \"claude_edit_modal_proxy_label\": \"代理 URL (可选):\",\n \"claude_delete_confirm\": \"确定要删除这个Claude配置吗?\",\n \"claude_models_label\": \"自定义模型 (可选):\",\n \"claude_models_hint\": \"为空表示使用全部模型;可填写 name[, alias] 以限制或重命名模型。\",\n \"claude_models_add_btn\": \"添加模型\",\n \"claude_models_count\": \"模型数量\",\n \"claude_models_fetch_button\": \"从 /v1/models 获取\",\n \"claude_models_fetch_title\": \"从 Claude /v1/models 选择模型\",\n \"claude_models_fetch_hint\": \"按 Anthropic 规范请求 GET /v1/models,默认附带 x-api-key 与 anthropic-version: 2023-06-01;也会合并你配置的自定义请求头。\",\n \"claude_models_fetch_url_label\": \"请求地址\",\n \"claude_models_fetch_refresh\": \"重新获取\",\n \"claude_models_fetch_loading\": \"正在从 Claude /v1/models 获取模型列表...\",\n \"claude_models_fetch_empty\": \"未获取到模型,请检查 Base URL、API Key 或请求头。\",\n \"claude_models_fetch_error\": \"获取 Claude 模型失败\",\n \"claude_models_fetch_apply\": \"添加所选模型\",\n \"claude_models_search_label\": \"搜索模型\",\n \"claude_models_search_placeholder\": \"按名称、别名或描述筛选\",\n \"claude_models_search_empty\": \"没有匹配的模型,请更换关键字试试。\",\n \"claude_models_fetch_added\": \"已添加 {{count}} 个新模型\",\n \"claude_test_title\": \"连通性测试\",\n \"claude_test_hint\": \"按 Anthropic 规范向 /v1/messages 发送测试请求,验证当前配置是否可用。\",\n \"claude_test_select_placeholder\": \"从当前模型列表选择\",\n \"claude_test_select_empty\": \"当前未配置模型,请先添加模型\",\n \"claude_test_action\": \"测试\",\n \"claude_test_running\": \"正在发送 Claude 测试请求...\",\n \"claude_test_timeout\": \"测试请求超时({{seconds}}秒)。\",\n \"claude_test_success\": \"测试成功,Claude 模型可用。\",\n \"claude_test_failed\": \"测试失败\",\n \"claude_test_key_required\": \"请先填写 Claude API Key 或在自定义请求头中设置 x-api-key\",\n \"claude_test_model_required\": \"请选择要测试的模型\",\n \"claude_test_endpoint_invalid\": \"无法构造有效的 Claude /v1/messages 请求地址\",\n \"claude_cloak_title\": \"请求伪装 (可选):\",\n \"claude_cloak_toggle_label\": \"启用\",\n \"claude_cloak_toggle_aria\": \"切换请求伪装\",\n \"claude_cloak_hint\": \"对非 Claude Code 客户端,将请求伪装成 Claude Code CLI 的格式。\",\n \"claude_cloak_mode_label\": \"模式:\",\n \"claude_cloak_mode_hint\": \"auto: 仅对非 Claude Code 客户端伪装;always: 总是伪装;never: 从不伪装。\",\n \"claude_cloak_mode_auto\": \"自动(仅非 Claude Code)\",\n \"claude_cloak_mode_always\": \"总是\",\n \"claude_cloak_mode_never\": \"从不\",\n \"claude_cloak_strict_label\": \"严格模式:\",\n \"claude_cloak_strict_hint\": \"启用后会移除用户 system 消息,仅保留 Claude Code 提示词。\",\n \"claude_cloak_sensitive_words_label\": \"敏感词 (可选):\",\n \"claude_cloak_sensitive_words_placeholder\": \"用逗号或换行分隔,例如: internal-project\",\n \"claude_cloak_sensitive_words_hint\": \"这些词会被插入零宽字符进行混淆。\",\n \"claude_cloak_sensitive_words_count\": \"敏感词\",\n \"vertex_title\": \"Vertex API 配置\",\n \"vertex_add_button\": \"添加配置\",\n \"vertex_empty_title\": \"暂无Vertex配置\",\n \"vertex_empty_desc\": \"点击上方按钮添加第一个配置\",\n \"vertex_item_title\": \"Vertex配置\",\n \"vertex_add_modal_title\": \"添加Vertex API配置\",\n \"vertex_add_modal_key_label\": \"API密钥:\",\n \"vertex_add_modal_key_placeholder\": \"请输入Vertex API密钥\",\n \"vertex_add_modal_url_label\": \"Base URL:\",\n \"vertex_add_modal_url_placeholder\": \"例如: https://example.com/api\",\n \"vertex_add_modal_proxy_label\": \"代理 URL (可选):\",\n \"vertex_add_modal_proxy_placeholder\": \"例如: socks5://proxy.example.com:1080\",\n \"vertex_edit_modal_title\": \"编辑Vertex API配置\",\n \"vertex_edit_modal_key_label\": \"API密钥:\",\n \"vertex_edit_modal_url_label\": \"Base URL:\",\n \"vertex_edit_modal_proxy_label\": \"代理 URL (可选):\",\n \"vertex_delete_confirm\": \"确定要删除这个Vertex配置吗?\",\n \"vertex_models_label\": \"模型别名:\",\n \"vertex_models_add_btn\": \"添加映射\",\n \"vertex_models_count\": \"别名数量\",\n \"ampcode_title\": \"Amp CLI 集成 (ampcode)\",\n \"ampcode_modal_title\": \"配置 Ampcode\",\n \"ampcode_upstream_url_label\": \"Upstream URL\",\n \"ampcode_upstream_url_placeholder\": \"例如: https://ampcode.com\",\n \"ampcode_upstream_url_hint\": \"可选;留空表示使用默认/自动发现的控制平面地址。\",\n \"ampcode_upstream_api_key_label\": \"Upstream API Key (Amp官方)\",\n \"ampcode_upstream_api_key_placeholder\": \"输入 sk-amp...(留空不修改)\",\n \"ampcode_upstream_api_key_hint\": \"可选;留空不会修改当前Amp官方密钥,需清除请点击下方按钮。\",\n \"ampcode_upstream_api_key_current\": \"当前Amp官方密钥: {{key}}\",\n \"ampcode_clear_upstream_api_key\": \"清除官方密钥\",\n \"ampcode_clear_upstream_api_key_confirm\": \"确定要清除 Ampcode 的 upstream API key(Amp官方)吗?\",\n \"ampcode_upstream_api_keys_label\": \"多上游 API Key 路由\",\n \"ampcode_upstream_api_keys_hint\": \"为指定客户端 API Key 绑定不同的 Amp 上游 API Key;客户端 key 可用逗号或换行分隔。\",\n \"ampcode_upstream_api_keys_add_btn\": \"添加多上游映射\",\n \"ampcode_upstream_api_keys_upstream_placeholder\": \"上游 API Key(sk-amp-...)\",\n \"ampcode_upstream_api_keys_clients_placeholder\": \"客户端 API Keys,用逗号或换行分隔\",\n \"ampcode_upstream_api_keys_item_title\": \"上游映射 #{{index}}\",\n \"ampcode_upstream_api_keys_count\": \"多上游映射\",\n \"ampcode_force_model_mappings_label\": \"强制应用模型映射\",\n \"ampcode_force_model_mappings_hint\": \"开启后,模型映射将覆盖本地 API Key 可用性判断。\",\n \"ampcode_model_mappings_label\": \"模型映射 (from → to)\",\n \"ampcode_model_mappings_hint\": \"用于重写 Amp 请求中的模型名称;留空表示不做映射。\",\n \"ampcode_model_mappings_add_btn\": \"添加映射\",\n \"ampcode_model_mappings_from_placeholder\": \"from 模型(原始)\",\n \"ampcode_model_mappings_to_placeholder\": \"to 模型(目标)\",\n \"ampcode_model_mappings_count\": \"映射数量\",\n \"ampcode_lists_overwrite_title\": \"覆盖列表配置\",\n \"ampcode_lists_overwrite_confirm\": \"当前未成功加载服务器已有多上游/模型映射配置,继续保存可能覆盖或清空这些列表,是否继续?\",\n \"ampcode_mappings_overwrite_confirm\": \"当前未成功加载服务器已有映射,继续保存可能覆盖或清空已有映射,是否继续?\",\n \"openai_title\": \"OpenAI 兼容提供商\",\n \"openai_add_button\": \"添加提供商\",\n \"openai_empty_title\": \"暂无OpenAI兼容提供商\",\n \"openai_empty_desc\": \"点击上方按钮添加第一个提供商\",\n \"openai_filtered_empty_title\": \"没有匹配的提供商\",\n \"openai_filtered_empty_desc\": \"当前模型筛选下没有匹配的提供商,请清除筛选后重试。\",\n \"sort_by_name\": \"按名称排序\",\n \"sort_ascending\": \"升序排序\",\n \"sort_asc_short\": \"升序\",\n \"sort_by_priority\": \"按优先级排序\",\n \"sort_by_recent_success\": \"按最近成功数排序\",\n \"sort_descending\": \"降序排序\",\n \"sort_desc_short\": \"降序\",\n \"openai_test_model\": \"测试模型\",\n \"openai_add_modal_title\": \"添加OpenAI兼容提供商\",\n \"openai_add_modal_name_label\": \"提供商名称:\",\n \"openai_add_modal_name_placeholder\": \"例如: openrouter\",\n \"openai_add_modal_url_label\": \"Base URL:\",\n \"openai_add_modal_url_placeholder\": \"例如: https://openrouter.ai/api/v1\",\n \"openai_add_modal_keys_label\": \"API密钥\",\n \"openai_edit_modal_keys_label\": \"API密钥\",\n \"openai_keys_hint\": \"每个密钥可搭配一个可选代理地址,更便于管理。\",\n \"openai_keys_add_btn\": \"添加密钥\",\n \"openai_key_placeholder\": \"输入 sk- 开头的密钥\",\n \"openai_proxy_placeholder\": \"可选代理 URL (如 socks5://...)\",\n \"openai_add_modal_models_label\": \"模型列表 (name[, alias] 每行一个):\",\n \"openai_models_hint\": \"示例:gpt-4o-mini 或 moonshotai/kimi-k2:free, kimi-k2\",\n \"openai_model_name_placeholder\": \"模型名称,如 moonshotai/kimi-k2:free\",\n \"openai_model_alias_placeholder\": \"模型别名 (可选)\",\n \"openai_models_add_btn\": \"添加模型\",\n \"openai_models_fetch_button\": \"从 /models 获取\",\n \"openai_models_fetch_title\": \"从 /models 选择模型\",\n \"openai_models_fetch_hint\": \"使用上方 Base URL 调用 /models 端点,附带首个 API Key(Bearer)与自定义请求头。\",\n \"openai_models_fetch_url_label\": \"请求地址\",\n \"openai_models_fetch_refresh\": \"重新获取\",\n \"openai_models_fetch_loading\": \"正在从 /models 获取模型列表...\",\n \"openai_models_fetch_empty\": \"未获取到模型,请检查端点或鉴权信息。\",\n \"openai_models_fetch_error\": \"获取模型失败\",\n \"openai_models_fetch_back\": \"返回编辑\",\n \"openai_models_fetch_apply\": \"添加所选模型\",\n \"openai_models_search_label\": \"搜索模型\",\n \"openai_models_search_placeholder\": \"按名称、别名或描述筛选\",\n \"openai_models_search_empty\": \"没有匹配的模型,请更换关键字试试。\",\n \"openai_models_fetch_invalid_url\": \"请先填写有效的 Base URL\",\n \"openai_models_fetch_added\": \"已添加 {{count}} 个新模型\",\n \"openai_edit_modal_title\": \"编辑OpenAI兼容提供商\",\n \"openai_edit_modal_name_label\": \"提供商名称:\",\n \"openai_edit_modal_url_label\": \"Base URL:\",\n \"openai_edit_modal_models_label\": \"模型列表 (name[, alias] 每行一个):\",\n \"openai_delete_confirm\": \"确定要删除这个OpenAI提供商吗?\",\n \"openai_keys_count\": \"密钥数量\",\n \"openai_models_count\": \"模型数量\",\n \"openai_test_title\": \"连通性测试\",\n \"openai_test_hint\": \"使用当前配置向 /chat/completions 请求,验证是否可用。\",\n \"openai_test_model_placeholder\": \"选择或输入要测试的模型\",\n \"openai_test_action\": \"发送测试\",\n \"openai_test_running\": \"正在发送测试请求...\",\n \"openai_test_timeout\": \"测试请求超时({{seconds}}秒)。\",\n \"openai_test_success\": \"测试成功,模型可用。\",\n \"openai_test_failed\": \"测试失败\",\n \"openai_test_select_placeholder\": \"从当前模型列表选择\",\n \"openai_test_select_empty\": \"当前未配置模型,请先添加模型\",\n \"openai_test_single_action\": \"测试\",\n \"openai_test_all_action\": \"一键测试全部密钥\",\n \"openai_test_all_hint\": \"测试所有密钥的连接状态\",\n \"openai_test_all_success\": \"所有 {{count}} 个密钥测试通过\",\n \"openai_test_all_failed\": \"所有 {{count}} 个密钥测试失败\",\n \"openai_test_all_partial\": \"测试完成:{{success}} 个通过,{{failed}} 个失败\",\n \"model_search_placeholder\": \"按模型筛选...\",\n \"model_search_clear\": \"清除\",\n \"model_select_all\": \"全选\",\n \"model_filter_empty\": \"暂无可筛选模型\"\n },\n \"auth_files\": {\n \"title\": \"认证文件管理\",\n \"title_section\": \"认证文件\",\n \"description\": \"这里集中管理 CLI Proxy 支持的所有 JSON 认证文件(如 Qwen、Gemini、Vertex 等),上传后即可在运行时启用相应的 AI 服务。\",\n \"upload_button\": \"上传文件\",\n \"delete_all_button\": \"删除全部\",\n \"empty_title\": \"暂无认证文件\",\n \"empty_desc\": \"点击上方按钮上传第一个文件\",\n \"search_empty_title\": \"没有匹配的配置文件\",\n \"search_empty_desc\": \"请调整筛选条件或清空搜索关键字再试一次。\",\n \"file_size\": \"大小\",\n \"file_modified\": \"修改时间\",\n \"health_status_label\": \"健康状态\",\n \"health_status_healthy\": \"健康\",\n \"health_status_warning\": \"警告\",\n \"health_status_disabled\": \"已停用\",\n \"health_status_unknown\": \"未知\",\n \"health_status_no_message\": \"暂无状态说明\",\n \"last_refresh_label\": \"最近刷新\",\n \"refresh_not_available\": \"暂无\",\n \"refresh_just_now\": \"刚刚\",\n \"download_button\": \"下载\",\n \"delete_button\": \"删除\",\n \"delete_confirm\": \"确定要删除文件\",\n \"delete_all_confirm\": \"确定要删除所有认证文件吗?此操作不可恢复!\",\n \"delete_filtered_confirm\": \"确定要删除筛选出的 {{type}} 认证文件吗?此操作不可恢复!\",\n \"delete_problem_button\": \"删除问题凭证\",\n \"delete_problem_button_with_type\": \"删除 {{type}} 问题凭证\",\n \"delete_problem_confirm\": \"确定要删除所有有问题的认证文件吗?此操作不可恢复!\",\n \"delete_problem_filtered_confirm\": \"确定要删除筛选出的有问题的 {{type}} 认证文件吗?此操作不可恢复!\",\n \"delete_filtered_result_button\": \"删除筛选结果\",\n \"delete_filtered_result_confirm\": \"确定要删除当前筛选结果中的认证文件吗?此操作不可恢复!\",\n \"upload_error_json\": \"只能上传JSON文件\",\n \"upload_error_size\": \"文件大小不能超过 {{maxSize}}\",\n \"upload_success\": \"文件上传成功\",\n \"download_success\": \"文件下载成功\",\n \"delete_success\": \"文件删除成功\",\n \"delete_all_success\": \"成功删除\",\n \"delete_filtered_success\": \"成功删除 {{count}} 个 {{type}} 认证文件\",\n \"delete_filtered_partial\": \"{{type}} 认证文件删除完成,成功 {{success}} 个,失败 {{failed}} 个\",\n \"delete_filtered_none\": \"当前筛选类型 ({{type}}) 下没有可删除的认证文件\",\n \"delete_problem_success\": \"成功删除 {{count}} 个有问题的认证文件\",\n \"delete_problem_filtered_success\": \"成功删除 {{count}} 个有问题的 {{type}} 认证文件\",\n \"delete_problem_partial\": \"有问题认证文件删除完成,成功 {{success}} 个,失败 {{failed}} 个\",\n \"delete_problem_filtered_partial\": \"有问题的 {{type}} 认证文件删除完成,成功 {{success}} 个,失败 {{failed}} 个\",\n \"delete_problem_none\": \"当前没有可删除的有问题认证文件\",\n \"delete_problem_filtered_none\": \"当前筛选类型 ({{type}}) 下没有可删除的有问题认证文件\",\n \"delete_filtered_result_success\": \"成功删除 {{count}} 个筛选结果中的认证文件\",\n \"delete_filtered_result_partial\": \"筛选结果删除完成,成功 {{success}} 个,失败 {{failed}} 个\",\n \"delete_filtered_result_none\": \"当前筛选结果中没有可删除的认证文件\",\n \"files_count\": \"个文件\",\n \"pagination_prev\": \"上一页\",\n \"pagination_next\": \"下一页\",\n \"pagination_info\": \"第 {{current}} / {{total}} 页 · 共 {{count}} 个文件\",\n \"search_label\": \"搜索配置文件\",\n \"search_placeholder\": \"输入名称、类型或提供方关键字,支持 * 通配\",\n \"problem_filter_label\": \"问题筛选\",\n \"problem_filter_only\": \"仅显示有问题凭证\",\n \"disabled_filter_only\": \"仅显示已停用凭证\",\n \"display_options_label\": \"显示选项\",\n \"compact_mode_label\": \"简略模式\",\n \"sort_label\": \"排序\",\n \"sort_default\": \"默认\",\n \"sort_az\": \"A-Z 名称\",\n \"sort_priority\": \"优先级\",\n \"priority_display\": \"优先级\",\n \"page_size_label\": \"单页数量\",\n \"page_size_unit\": \"个/页\",\n \"view_mode_paged\": \"按页显示\",\n \"view_mode_all\": \"显示全部\",\n \"too_many_files_warning\": \"您的凭证总数过多,全部加载会导致页面卡顿,请保持单页浏览。\",\n \"filter_all\": \"全部\",\n \"filter_qwen\": \"Qwen\",\n \"filter_gemini\": \"Gemini\",\n \"filter_gemini-cli\": \"GeminiCLI\",\n \"filter_kimi\": \"Kimi\",\n \"filter_aistudio\": \"AIStudio\",\n \"filter_claude\": \"Claude\",\n \"filter_codex\": \"Codex\",\n \"filter_antigravity\": \"Antigravity\",\n \"filter_xai\": \"xAI\",\n \"filter_iflow\": \"iFlow\",\n \"filter_vertex\": \"Vertex\",\n \"filter_empty\": \"空文件\",\n \"filter_unknown\": \"其他\",\n \"type_qwen\": \"Qwen\",\n \"type_gemini\": \"Gemini\",\n \"type_gemini-cli\": \"GeminiCLI\",\n \"type_kimi\": \"Kimi\",\n \"type_aistudio\": \"AIStudio\",\n \"type_claude\": \"Claude\",\n \"type_codex\": \"Codex\",\n \"type_antigravity\": \"Antigravity\",\n \"type_xai\": \"xAI\",\n \"type_iflow\": \"iFlow\",\n \"type_vertex\": \"Vertex\",\n \"type_empty\": \"空文件\",\n \"type_unknown\": \"其他\",\n \"type_virtual\": \"虚拟认证文件\",\n \"models_button\": \"模型\",\n \"models_title\": \"支持的模型\",\n \"models_loading\": \"正在加载模型列表...\",\n \"models_empty\": \"该凭证暂无可用模型\",\n \"models_empty_desc\": \"该认证凭证可能尚未被服务器加载或没有绑定任何模型\",\n \"models_unsupported\": \"当前版本不支持此功能\",\n \"models_unsupported_desc\": \"请更新 CLI Proxy API 到最新版本后重试\",\n \"models_excluded_badge\": \"已禁用\",\n \"models_excluded_hint\": \"此 OAuth 模型已被禁用\",\n \"status_toggle_label\": \"启用\",\n \"status_enabled_success\": \"已启用 \\\"{{name}}\\\"\",\n \"status_disabled_success\": \"已停用 \\\"{{name}}\\\"\",\n \"batch_status_success\": \"已成功更新 {{count}} 个文件\",\n \"batch_status_partial\": \"成功 {{success}} 个,失败 {{failed}} 个\",\n \"batch_delete_title\": \"删除选中文件\",\n \"batch_delete_confirm\": \"确定要删除 {{count}} 个文件吗?\",\n \"batch_selected\": \"已选 {{count}} 项\",\n \"batch_select_all\": \"全选\",\n \"batch_select_page\": \"全选当前页\",\n \"batch_select_filtered\": \"全选筛选结果\",\n \"batch_invert_page\": \"反选当前页\",\n \"batch_deselect\": \"取消选择\",\n \"batch_download\": \"下载选中\",\n \"batch_download_success\": \"已开始下载 {{count}} 个文件\",\n \"batch_download_partial\": \"下载完成:成功 {{success}} 个,失败 {{failed}} 个\",\n \"batch_enable\": \"启用\",\n \"batch_disable\": \"禁用\",\n \"prefix_proxy_button\": \"认证文件详情 / 编辑\",\n \"auth_field_editor_title\": \"认证文件详情 / 编辑 - {{name}}\",\n \"prefix_proxy_loading\": \"正在加载认证文件...\",\n \"prefix_proxy_info_label\": \"认证文件信息(info)\",\n \"prefix_proxy_source_label\": \"认证文件 JSON(预览)\",\n \"prefix_proxy_invalid_content_label\": \"下载内容(已截断)\",\n \"prefix_label\": \"前缀(prefix)\",\n \"proxy_url_label\": \"代理 URL(proxy_url)\",\n \"prefix_placeholder\": \"\",\n \"proxy_url_placeholder\": \"socks5://username:password@proxy_ip:port/\",\n \"priority_label\": \"优先级(priority)\",\n \"priority_placeholder\": \"例如: 10 或 -1\",\n \"priority_hint\": \"仅支持整数;非法值会被忽略。数值越大优先级越高。\",\n \"websockets_label\": \"WebSockets(websockets)\",\n \"websockets_hint\": \"为该凭证开启 Responses API 的 websocket 传输。\",\n \"codex_websockets_label\": \"WebSockets(websockets)\",\n \"codex_websockets_hint\": \"为该 Codex 凭证开启 Responses API 的 websocket 传输。\",\n \"excluded_models_label\": \"排除模型(excluded_models)\",\n \"excluded_models_placeholder\": \"用逗号或换行分隔,例如: model-a, gpt-5-*, *-preview\",\n \"excluded_models_hint\": \"保存为数组;会自动 trim、小写、去重并排序。\",\n \"disable_cooling_label\": \"禁用冷却(disable_cooling)\",\n \"disable_cooling_placeholder\": \"例如: true / false / 1 / 0\",\n \"disable_cooling_hint\": \"支持布尔值、0/非0 数字或字符串 true/false/1/0;无法解析时忽略。\",\n \"using_api_label\": \"使用官方 API(using_api)\",\n \"using_api_hint\": \"开启后使用 xAI 官方 API;关闭时使用 Grok CLI chat-proxy。\",\n \"note_label\": \"备注(note)\",\n \"note_placeholder\": \"输入备注信息,例如:张三的账号\",\n \"note_hint\": \"可选,用于标记凭证用途或归属;留空则不写入。\",\n \"note_display\": \"备注\",\n \"headers_label\": \"自定义请求头(headers)\",\n \"headers_placeholder\": \"{\\n \\\"Header-Name\\\": \\\"value\\\"\\n}\",\n \"headers_hint\": \"以 JSON 对象格式输入自定义 HTTP 请求头,例如:{\\\"X-My-Header\\\": \\\"value\\\"}\",\n \"headers_invalid_json\": \"自定义请求头必须是有效的 JSON。\",\n \"headers_invalid_object\": \"自定义请求头必须是 JSON 对象。\",\n \"headers_invalid_value\": \"每个自定义请求头的值都必须是字符串。\",\n \"prefix_proxy_invalid_json\": \"该认证文件不是 JSON 对象,无法编辑字段。\",\n \"prefix_proxy_html_challenge\": \"下载到的是 HTML 验证页面,不是认证 JSON 对象。请重新认证或替换该认证文件后再编辑字段。\",\n \"prefix_proxy_saved_success\": \"已更新认证文件 \\\"{{name}}\\\"\",\n \"quota_refresh_single\": \"刷新额度\",\n \"quota_refresh_hint\": \"仅刷新该认证文件的额度\",\n \"quota_refresh_success\": \"已刷新 \\\"{{name}}\\\" 的额度\",\n \"quota_refresh_failed\": \"刷新 \\\"{{name}}\\\" 的额度失败:{{message}}\"\n },\n \"antigravity_quota\": {\n \"title\": \"Antigravity 额度\",\n \"empty_title\": \"暂无 Antigravity 认证\",\n \"empty_desc\": \"上传 Antigravity 认证文件后即可查看额度。\",\n \"idle\": \"点击此处刷新额度\",\n \"loading\": \"正在加载额度...\",\n \"load_failed\": \"额度获取失败:{{message}}\",\n \"missing_auth_index\": \"认证文件缺少 auth_index\",\n \"empty_models\": \"暂无额度数据\",\n \"refresh_button\": \"刷新额度\",\n \"fetch_all\": \"获取全部\"\n },\n \"claude_quota\": {\n \"title\": \"Claude 额度\",\n \"empty_title\": \"暂无 Claude OAuth 认证\",\n \"empty_desc\": \"使用 Claude OAuth 登录后即可查看额度。\",\n \"idle\": \"点击此处刷新额度\",\n \"loading\": \"正在加载额度...\",\n \"load_failed\": \"额度获取失败:{{message}}\",\n \"missing_auth_index\": \"认证文件缺少 auth_index\",\n \"empty_windows\": \"暂无额度数据\",\n \"refresh_button\": \"刷新额度\",\n \"fetch_all\": \"获取全部\",\n \"five_hour\": \"5 小时限额\",\n \"seven_day\": \"7 天限额\",\n \"seven_day_oauth_apps\": \"7 天 OAuth 应用\",\n \"seven_day_opus\": \"7 天 Opus\",\n \"seven_day_sonnet\": \"7 天 Sonnet\",\n \"seven_day_cowork\": \"7 天 Cowork\",\n \"iguana_necktie\": \"Iguana Necktie\",\n \"seven_day_fable\": \"7 天 Fable 5\",\n \"extra_usage_label\": \"额外用量\",\n \"plan_label\": \"套餐\",\n \"plan_unknown\": \"未知\",\n \"plan_free\": \"免费版\",\n \"plan_pro\": \"专业版\",\n \"plan_max\": \"Max\",\n \"plan_max5\": \"Max 5x\",\n \"plan_max20\": \"Max 20x\",\n \"plan_team\": \"团队版\"\n },\n \"gemini_cli_quota\": {\n \"title\": \"Gemini CLI 额度\",\n \"empty_title\": \"暂无 Gemini CLI 认证\",\n \"empty_desc\": \"上传 Gemini CLI 认证文件后即可查看额度。\",\n \"idle\": \"点击此处刷新额度\",\n \"loading\": \"正在加载额度...\",\n \"load_failed\": \"额度获取失败:{{message}}\",\n \"missing_auth_index\": \"认证文件缺少 auth_index\",\n \"missing_project_id\": \"Gemini CLI 凭证缺少 Project ID\",\n \"empty_buckets\": \"暂无额度数据\",\n \"refresh_button\": \"刷新额度\",\n \"fetch_all\": \"获取全部\",\n \"remaining_amount\": \"剩余 {{count}}\",\n \"tier_label\": \"层级\",\n \"tier_free\": \"免费版\",\n \"tier_legacy\": \"旧版\",\n \"tier_standard\": \"标准版\",\n \"tier_pro\": \"Pro\",\n \"tier_ultra\": \"Ultra\",\n \"credit_label\": \"Google One AI 积分\",\n \"credit_amount\": \"{{count}} 积分\"\n },\n \"kimi_quota\": {\n \"title\": \"Kimi 额度\",\n \"empty_title\": \"暂无 Kimi 认证\",\n \"empty_desc\": \"上传 Kimi 认证文件后即可查看额度。\",\n \"idle\": \"点击此处刷新额度\",\n \"loading\": \"正在加载额度...\",\n \"load_failed\": \"额度获取失败:{{message}}\",\n \"missing_auth_index\": \"认证文件缺少 auth_index\",\n \"empty_data\": \"暂无额度数据\",\n \"refresh_button\": \"刷新额度\",\n \"fetch_all\": \"获取全部\",\n \"weekly_limit\": \"周限额\",\n \"limit_window\": \"{{duration}} 限额\",\n \"limit_index\": \"限额 #{{index}}\",\n \"reset_hint\": \"{{hint}} 后重置\"\n },\n \"xai_quota\": {\n \"title\": \"Grok 额度\",\n \"empty_title\": \"暂无 xAI/Grok 认证\",\n \"empty_desc\": \"使用 xAI OAuth 登录后即可查看 Grok 额度。\",\n \"idle\": \"点击此处刷新额度\",\n \"loading\": \"正在加载额度...\",\n \"load_failed\": \"额度获取失败:{{message}}\",\n \"missing_auth_index\": \"认证文件缺少 auth_index\",\n \"empty_data\": \"暂无额度数据\",\n \"refresh_button\": \"刷新额度\",\n \"fetch_all\": \"获取全部\",\n \"weekly_limit\": \"周限额\",\n \"monthly_credits\": \"月度积分\",\n \"used_percent\": \"已用 {{percent}}\",\n \"reset_at\": \"重置 {{time}}\",\n \"product_usage\": \"{{product}} 使用\",\n \"plan_label\": \"套餐\",\n \"plan_supergrok\": \"SuperGrok\",\n \"plan_supergrok_heavy\": \"SuperGrok Heavy\",\n \"pay_as_you_go_label\": \"按量付费\",\n \"pay_as_you_go_enabled\": \"已启用,封顶 {{cap}}\",\n \"pay_as_you_go_disabled\": \"未启用\"\n },\n \"vertex_import\": {\n \"title\": \"Vertex JSON 登录\",\n \"description\": \"上传 Google 服务账号 JSON,使用 CLI vertex-import 同步规则写入 auth-dir/vertex-<project>.json。\",\n \"location_label\": \"目标区域 (可选)\",\n \"location_placeholder\": \"us-central1\",\n \"location_hint\": \"留空表示使用默认区域 us-central1。\",\n \"file_label\": \"服务账号密钥 JSON\",\n \"file_hint\": \"仅支持 Google Cloud service account key JSON 文件,私钥会自动规范化。\",\n \"file_placeholder\": \"尚未选择文件\",\n \"choose_file\": \"选择文件\",\n \"import_button\": \"导入 Vertex 凭证\",\n \"file_required\": \"请先选择 .json 凭证文件\",\n \"success\": \"Vertex 凭证导入成功\",\n \"result_title\": \"凭证已保存\",\n \"result_project\": \"项目 ID\",\n \"result_email\": \"服务账号\",\n \"result_location\": \"区域\",\n \"result_file\": \"存储文件\"\n },\n \"oauth_excluded\": {\n \"title\": \"OAuth 模型禁用\",\n \"description\": \"按提供商分列展示,点击卡片编辑或删除;支持 * 通配符,范围跟随上方的配置文件过滤标签。\",\n \"add\": \"新增禁用\",\n \"add_title\": \"新增提供商模型禁用\",\n \"edit_title\": \"编辑 {{provider}} 的模型禁用\",\n \"refresh\": \"刷新\",\n \"refreshing\": \"刷新中...\",\n \"provider_label\": \"提供商\",\n \"provider_auto\": \"跟随当前过滤\",\n \"provider_placeholder\": \"例如 gemini-cli / openai\",\n \"provider_hint\": \"默认选中当前筛选的提供商,也可直接输入或选择其他名称。\",\n \"models_label\": \"禁用的模型\",\n \"models_loading\": \"正在加载模型列表...\",\n \"models_unsupported\": \"当前 CPA 版本不支持获取模型列表。\",\n \"models_loaded\": \"已加载 {{count}} 个模型,勾选要禁用的模型。\",\n \"no_models_available\": \"该提供商暂无可用模型列表。\",\n \"custom_rule_label\": \"自定义模型规则\",\n \"custom_rule_hint\": \"可填写精确模型 ID,或使用 gpt-* 这样的通配符规则。\",\n \"custom_rule_placeholder\": \"例如 gpt-* / custom-model\",\n \"custom_rule_add\": \"添加规则\",\n \"custom_rules_label\": \"已配置的自定义规则\",\n \"custom_rule_remove\": \"移除 {{rule}}\",\n \"save\": \"保存/更新\",\n \"saving\": \"正在保存...\",\n \"save_success\": \"模型禁用已更新\",\n \"save_failed\": \"更新模型禁用失败\",\n \"delete\": \"删除提供商\",\n \"delete_confirm\": \"确定要删除 {{provider}} 的模型禁用吗?\",\n \"delete_success\": \"已删除该提供商的模型禁用\",\n \"delete_failed\": \"删除模型禁用失败\",\n \"deleting\": \"正在删除...\",\n \"no_models\": \"未配置禁用模型\",\n \"model_count\": \"禁用 {{count}} 个模型\",\n \"list_empty_all\": \"暂无任何提供商的模型禁用,点击“新增禁用”创建。\",\n \"list_empty_filtered\": \"当前筛选下没有禁用项,点击“新增禁用”添加。\",\n \"disconnected\": \"请先连接服务器以查看模型禁用\",\n \"load_failed\": \"加载模型禁用失败\",\n \"provider_required\": \"请先填写提供商名称\",\n \"scope_all\": \"当前范围:全局(显示所有提供商)\",\n \"scope_provider\": \"当前范围:{{provider}}\",\n \"upgrade_required\": \"当前 CPA 版本不支持 OAuth 模型禁用,请升级 CPA 版本\",\n \"upgrade_required_title\": \"需要升级 CPA 版本\",\n \"upgrade_required_desc\": \"当前服务器版本不支持获取 OAuth 模型禁用功能,请升级到最新版本的 CPA(CLI Proxy API)后重试。\"\n },\n \"oauth_model_alias\": {\n \"title\": \"OAuth 模型别名\",\n \"add\": \"新增别名\",\n \"add_title\": \"新增提供商模型别名\",\n \"provider_label\": \"提供商\",\n \"provider_placeholder\": \"例如 gemini-cli / vertex\",\n \"provider_hint\": \"默认选中当前筛选的提供商,也可直接输入或选择其他名称。\",\n \"model_source_loading\": \"正在加载模型列表...\",\n \"model_source_unsupported\": \"当前 CPA 版本不支持获取模型列表(仍可手动输入)。\",\n \"model_source_loaded\": \"已加载 {{count}} 个模型,可在“原模型名称”中下拉选择;也可手动输入。留空保存将删除该提供商记录;开启“保留原名”会在保留原模型名的同时新增别名。\",\n \"alias_label\": \"模型别名\",\n \"alias_name_placeholder\": \"原模型名称\",\n \"alias_placeholder\": \"别名 (必填)\",\n \"duplicate_alias\": \"同一提供商下的别名不能重复。\",\n \"alias_fork_label\": \"保留原名\",\n \"add_alias\": \"添加别名\",\n \"save\": \"保存/更新\",\n \"save_success\": \"模型别名已更新\",\n \"save_failed\": \"更新模型别名失败\",\n \"delete\": \"删除提供商\",\n \"delete_confirm\": \"确定要删除 {{provider}} 的模型别名吗?\",\n \"delete_link_title\": \"取消链接\",\n \"delete_link_confirm\": \"确定取消 <code>{{sourceModel}}</code>({{provider}})到别名 <code>{{alias}}</code> 的映射?\",\n \"delete_alias_title\": \"删除别名\",\n \"delete_alias_confirm\": \"确定删除别名 <code>{{alias}}</code> 并取消所有关联模型的映射?\",\n \"delete_success\": \"已删除该提供商的模型别名\",\n \"delete_failed\": \"删除模型别名失败\",\n \"no_models\": \"未配置模型别名\",\n \"model_count\": \"{{count}} 条别名\",\n \"list_empty_all\": \"暂无任何提供商的模型别名,点击“新增别名”创建。\",\n \"chart_title\": \"全部映射概览\",\n \"diagram_providers\": \"提供商\",\n \"diagram_source_models\": \"源模型\",\n \"diagram_aliases\": \"别名\",\n \"diagram_expand\": \"展开\",\n \"diagram_collapse\": \"收起\",\n \"diagram_add_alias\": \"添加别名\",\n \"diagram_rename\": \"重命名\",\n \"diagram_rename_alias_title\": \"重命名别名\",\n \"diagram_rename_alias_label\": \"新别名名称\",\n \"diagram_rename_placeholder\": \"输入别名名称...\",\n \"diagram_delete_link\": \"取消链接 {{provider}} / {{name}}\",\n \"diagram_delete_alias\": \"删除别名\",\n \"diagram_please_enter_alias\": \"请输入别名名称。\",\n \"diagram_alias_exists\": \"该别名已存在。\",\n \"diagram_add_alias_title\": \"添加别名\",\n \"diagram_add_alias_label\": \"别名名称\",\n \"diagram_add_placeholder\": \"输入新别名名称...\",\n \"diagram_rename_btn\": \"重命名\",\n \"diagram_add_btn\": \"添加\",\n \"diagram_settings\": \"设置\",\n \"diagram_settings_title\": \"别名设置 — {{alias}}\",\n \"diagram_settings_source_title\": \"源模型设置\",\n \"diagram_settings_empty\": \"该别名暂无映射。\",\n \"diagram_tap_hint\": \"触摸设备上:先点选源模型,再点选别名即可建立映射。\",\n \"view_mode\": \"视图模式\",\n \"view_mode_diagram\": \"概览\",\n \"view_mode_list\": \"管理\",\n \"provider_required\": \"请先填写提供商名称\",\n \"upgrade_required\": \"当前 CPA 版本不支持模型别名功能,请升级 CPA 版本\",\n \"upgrade_required_title\": \"需要升级 CPA 版本\",\n \"upgrade_required_desc\": \"当前服务器版本不支持 OAuth 模型别名功能,请升级到最新版本的 CPA(CLI Proxy API)后重试。\"\n },\n \"auth_login\": {\n \"codex_oauth_title\": \"Codex OAuth\",\n \"codex_oauth_button\": \"开始 Codex 登录\",\n \"codex_oauth_hint\": \"通过 OAuth 流程登录 Codex 服务,自动获取并保存认证文件。\",\n \"codex_oauth_url_label\": \"授权链接:\",\n \"codex_open_link\": \"打开链接\",\n \"codex_copy_link\": \"复制链接\",\n \"codex_oauth_status_waiting\": \"等待认证中...\",\n \"codex_oauth_status_success\": \"认证成功!\",\n \"codex_oauth_status_error\": \"认证失败:\",\n \"codex_oauth_start_error\": \"启动 Codex OAuth 失败:\",\n \"codex_oauth_polling_error\": \"检查认证状态失败:\",\n \"anthropic_oauth_title\": \"Anthropic OAuth\",\n \"anthropic_oauth_button\": \"开始 Anthropic 登录\",\n \"anthropic_oauth_hint\": \"通过 OAuth 流程登录 Anthropic (Claude) 服务,自动获取并保存认证文件。\",\n \"anthropic_oauth_url_label\": \"授权链接:\",\n \"anthropic_open_link\": \"打开链接\",\n \"anthropic_copy_link\": \"复制链接\",\n \"anthropic_oauth_status_waiting\": \"等待认证中...\",\n \"anthropic_oauth_status_success\": \"认证成功!\",\n \"anthropic_oauth_status_error\": \"认证失败:\",\n \"anthropic_oauth_start_error\": \"启动 Anthropic OAuth 失败:\",\n \"anthropic_oauth_polling_error\": \"检查认证状态失败:\",\n \"antigravity_oauth_title\": \"Antigravity OAuth\",\n \"antigravity_oauth_button\": \"开始 Antigravity 登录\",\n \"antigravity_oauth_hint\": \"通过 OAuth 流程登录 Antigravity(Google 账号)服务,自动获取并保存认证文件。\",\n \"antigravity_oauth_url_label\": \"授权链接:\",\n \"antigravity_open_link\": \"打开链接\",\n \"antigravity_copy_link\": \"复制链接\",\n \"antigravity_oauth_status_waiting\": \"等待认证中...\",\n \"antigravity_oauth_status_success\": \"认证成功!\",\n \"antigravity_oauth_status_error\": \"认证失败:\",\n \"antigravity_oauth_start_error\": \"启动 Antigravity OAuth 失败:\",\n \"antigravity_oauth_polling_error\": \"检查认证状态失败:\",\n \"gemini_cli_oauth_title\": \"Gemini CLI OAuth\",\n \"gemini_cli_oauth_button\": \"开始 Gemini CLI 登录\",\n \"gemini_cli_oauth_hint\": \"通过 OAuth 流程登录 Google Gemini CLI 服务,自动获取并保存认证文件。\",\n \"gemini_cli_project_id_label\": \"Google Cloud 项目 ID (可选):\",\n \"gemini_cli_project_id_placeholder\": \"留空将自动选择第一个可用项目\",\n \"gemini_cli_project_id_hint\": \"可选填写项目 ID。如不填写,系统将自动选择您账号下的第一个可用项目。输入 ALL 可获取全部项目。\",\n \"gemini_cli_project_id_required\": \"请填写 Google Cloud 项目 ID。\",\n \"gemini_cli_oauth_url_label\": \"授权链接:\",\n \"gemini_cli_open_link\": \"打开链接\",\n \"gemini_cli_copy_link\": \"复制链接\",\n \"gemini_cli_oauth_status_waiting\": \"等待认证中...\",\n \"gemini_cli_oauth_status_success\": \"认证成功!\",\n \"gemini_cli_oauth_status_error\": \"认证失败:\",\n \"gemini_cli_oauth_start_error\": \"启动 Gemini CLI OAuth 失败:\",\n \"gemini_cli_oauth_polling_error\": \"检查认证状态失败:\",\n \"kimi_oauth_title\": \"Kimi OAuth\",\n \"kimi_oauth_button\": \"开始 Kimi 登录\",\n \"kimi_oauth_hint\": \"通过设备授权流程登录 Kimi 服务,自动获取并保存认证文件。\",\n \"kimi_oauth_url_label\": \"授权链接:\",\n \"kimi_open_link\": \"打开链接\",\n \"kimi_copy_link\": \"复制链接\",\n \"kimi_oauth_status_waiting\": \"等待认证中...\",\n \"kimi_oauth_status_success\": \"认证成功!\",\n \"kimi_oauth_status_error\": \"认证失败:\",\n \"kimi_oauth_start_error\": \"启动 Kimi OAuth 失败:\",\n \"kimi_oauth_polling_error\": \"检查认证状态失败:\",\n \"xai_oauth_title\": \"xAI OAuth\",\n \"xai_oauth_button\": \"开始 xAI 登录\",\n \"xai_oauth_hint\": \"通过 OAuth 流程登录 xAI Grok 服务,自动获取并保存认证文件。\",\n \"xai_oauth_url_label\": \"授权链接:\",\n \"xai_open_link\": \"打开链接\",\n \"xai_copy_link\": \"复制链接\",\n \"xai_oauth_status_waiting\": \"等待认证中...\",\n \"xai_oauth_status_success\": \"认证成功!\",\n \"xai_oauth_status_error\": \"认证失败:\",\n \"xai_oauth_start_error\": \"启动 xAI OAuth 失败:\",\n \"xai_oauth_polling_error\": \"检查认证状态失败:\",\n \"xai_callback_label\": \"回调 URL 或授权码\",\n \"xai_callback_placeholder\": \"粘贴页面显示的 code,或完整 callback URL\",\n \"xai_callback_hint\": \"Grok 有时只在页面显示 code。可直接粘贴 code,系统会自动拼接为 http://127.0.0.1:56121/callback?... 后提交。\",\n \"xai_callback_required\": \"请先粘贴 Grok 页面显示的 code 或完整回调 URL。\",\n \"xai_callback_state_missing\": \"缺少本次 xAI 登录的 state,请重新开始 xAI 登录后再提交 code。\",\n \"oauth_callback_label\": \"回调 URL\",\n \"oauth_callback_placeholder\": \"http://localhost:1455/auth/callback?code=...&state=...\",\n \"oauth_callback_hint\": \"远程浏览器模式:当授权跳转到 http://localhost:... 后,复制完整 URL 并提交到这里。\",\n \"oauth_callback_button\": \"提交回调 URL\",\n \"oauth_callback_required\": \"请先粘贴完整的回调 URL。\",\n \"oauth_callback_success\": \"回调 URL 已提交,请继续等待认证。\",\n \"oauth_callback_error\": \"提交回调 URL 失败:\",\n \"oauth_callback_upgrade_hint\": \"请更新CLI Proxy API或检查连接\",\n \"oauth_callback_status_success\": \"回调 URL 已提交,等待认证中...\",\n \"oauth_callback_status_error\": \"回调 URL 提交失败:\",\n \"missing_state\": \"无法获取认证状态参数\",\n \"login_another_account\": \"登录另一个账号\",\n \"view_auth_files\": \"查看认证文件\",\n \"iflow_oauth_title\": \"iFlow OAuth\",\n \"iflow_oauth_button\": \"开始 iFlow 登录\",\n \"iflow_oauth_hint\": \"通过 OAuth 流程登录 iFlow 服务,自动获取并保存认证文件。\",\n \"iflow_oauth_url_label\": \"授权链接:\",\n \"iflow_open_link\": \"打开链接\",\n \"iflow_copy_link\": \"复制链接\",\n \"iflow_oauth_status_waiting\": \"等待认证中...\",\n \"iflow_oauth_status_success\": \"认证成功!\",\n \"iflow_oauth_status_error\": \"认证失败:\",\n \"iflow_oauth_start_error\": \"启动 iFlow OAuth 失败:\",\n \"iflow_oauth_polling_error\": \"检查认证状态失败:\",\n \"remote_access_disabled\": \"远程访问不支持此登录方式,请从本地 (localhost) 访问\"\n },\n \"stats\": {\n \"success\": \"成功\",\n \"failure\": \"失败\"\n },\n \"status_bar\": {\n \"success_short\": \"✓\",\n \"failure_short\": \"✗\",\n \"no_requests\": \"无请求\"\n },\n \"usage_stats\": {\n \"title\": \"使用统计\",\n \"total_requests\": \"总请求数\",\n \"success_requests\": \"成功请求\",\n \"failed_requests\": \"失败请求\",\n \"total_tokens\": \"总Token数\",\n \"cached_tokens\": \"缓存 Tokens\",\n \"cache_read_tokens\": \"缓存读取 Tokens\",\n \"cache_write_tokens\": \"缓存写入 Tokens\",\n \"reasoning_tokens\": \"思考 Tokens\",\n \"rpm_30m\": \"RPM\",\n \"tpm_30m\": \"TPM\",\n \"rate_30m\": \"近30分钟速率\",\n \"model_name\": \"模型名称\",\n \"model_price_settings\": \"模型价格设置\",\n \"saved_prices\": \"已保存的价格\",\n \"requests_trend\": \"请求趋势\",\n \"tokens_trend\": \"Token 使用趋势\",\n \"api_details\": \"API 详细统计\",\n \"by_hour\": \"按小时\",\n \"by_day\": \"按天\",\n \"range_filter\": \"时间范围\",\n \"range_all\": \"全部时间\",\n \"range_1h\": \"最近1小时\",\n \"range_7h\": \"最近7小时\",\n \"range_24h\": \"最近24小时\",\n \"range_7d\": \"最近7天\",\n \"range_30d\": \"最近30天\",\n \"filter_all\": \"全部\",\n \"clear_filters\": \"清空筛选\",\n \"refresh\": \"刷新\",\n \"export\": \"导出数据\",\n \"import\": \"导入数据\",\n \"export_csv\": \"导出 CSV\",\n \"export_json\": \"导出 JSON\",\n \"export_success\": \"使用统计已导出\",\n \"import_success\": \"导入完成:新增 {{added}},跳过 {{skipped}},总请求 {{total}},失败 {{failed}}\",\n \"import_success_migrated_v1\": \"导入完成:新增 {{added}},跳过 {{skipped}},总请求 {{total}},失败 {{failed}}。Token contract 已从 schema v1 迁移到 v{{schemaVersion}}。\",\n \"import_invalid\": \"导入文件格式不正确\",\n \"import_review_title\": \"检查使用统计导入\",\n \"import_review_intro\": \"导入采用追加合并。请先检查此快照,再合并到当前 Core 使用统计。\",\n \"import_review_summary\": \"版本 {{version}} · {{details}} 条请求明细\",\n \"import_review_duplicates\": \"文件内可能重复 {{count}} 条\",\n \"import_review_overlaps\": \"与当前统计可能重叠 {{count}} 条\",\n \"import_review_uncertain_identities\": \"{{count}} 条明细缺少稳定时间戳,未参与重复与重叠检测\",\n \"import_review_current_unavailable\": \"当前使用统计不可用,因此无法完成重叠检测。\",\n \"import_error_usage_version_unsupported\": \"不支持的使用统计导出版本;仅可导入 schema v1 或 v2。\",\n \"import_error_usage_shape_invalid\": \"使用统计导出的嵌套结构或字段类型无效。\",\n \"import_error_usage_v1_token_contract_invalid\": \"schema v1 Token contract 无效,无法安全迁移。\",\n \"import_error_usage_v1_cache_semantics_ambiguous\": \"schema v1 缓存语义不明确;含缓存的明细必须提供 uncached_input_tokens 才能无损迁移。\",\n \"import_error_usage_v2_token_contract_invalid\": \"无效的 canonical schema v2 Token contract。\",\n \"import_error_usage_aggregate_overflow\": \"导入会导致 Core 使用统计聚合溢出;没有合并任何使用数据。\",\n \"import_review_confirm\": \"仍然导入\",\n \"chart_line_label_1\": \"曲线 1\",\n \"chart_line_label_2\": \"曲线 2\",\n \"chart_line_label_3\": \"曲线 3\",\n \"chart_line_label_4\": \"曲线 4\",\n \"chart_line_label_5\": \"曲线 5\",\n \"chart_line_label_6\": \"曲线 6\",\n \"chart_line_label_7\": \"曲线 7\",\n \"chart_line_label_8\": \"曲线 8\",\n \"chart_line_label_9\": \"曲线 9\",\n \"chart_line_hidden\": \"不显示\",\n \"chart_line_actions_label\": \"曲线数量\",\n \"chart_line_add\": \"增加曲线\",\n \"chart_line_all\": \"全部\",\n \"chart_line_delete\": \"删除曲线\",\n \"chart_line_hint\": \"最多同时显示 9 条模型曲线\",\n \"no_data\": \"暂无数据\",\n \"loading_error\": \"加载失败\",\n \"api_endpoint\": \"API端点\",\n \"requests_count\": \"请求次数\",\n \"tokens_count\": \"Token数量\",\n \"model_cache_rate\": \"缓存读取占比\",\n \"model_cache_rate_hint\": \"缓存读取占比 = 缓存读取 Token / 总输入 Token。仅当该模型统计中的每个请求都有已记录的明细时显示;否则为未设置。\",\n \"models\": \"模型统计\",\n \"success_rate\": \"成功率\",\n \"total_cost\": \"总花费\",\n \"total_cost_hint\": \"基于已设置的模型单价\",\n \"model_price_title\": \"模型价格\",\n \"model_price_reset\": \"清除价格\",\n \"model_price_model_label\": \"选择模型\",\n \"model_price_select_placeholder\": \"选择模型\",\n \"model_price_select_hint\": \"模型列表来自使用统计明细\",\n \"model_price_prompt\": \"提示价格\",\n \"model_price_completion\": \"补全价格\",\n \"model_price_cache\": \"缓存读取价格\",\n \"model_price_cache_write\": \"缓存写入价格\",\n \"model_price_cache_write_auto\": \"自动\",\n \"model_price_cache_write_hint\": \"留空时使用当前提示价格;已有“自动”设置也会跟随此默认值。如需不同计费请显式填写缓存写入价格。\",\n \"model_price_invalid\": \"请输入大于或等于 0 的有效数字。\",\n \"model_price_save\": \"保存价格\",\n \"model_price_empty\": \"暂未设置任何模型价格\",\n \"model_price_model\": \"模型\",\n \"model_price_saved\": \"模型价格已保存\",\n \"model_price_model_required\": \"请选择要设置价格的模型\",\n \"pricing_title\": \"价格估算工作台\",\n \"pricing_subtitle\": \"使用当前 API catalog、浏览器本地 Profile、usage Token、service tier 和 context band 统一计算 API 等价 USD。\",\n \"pricing_back\": \"返回使用统计\",\n \"pricing_open\": \"配置价格\",\n \"pricing_catalog\": \"预设 Catalog\",\n \"pricing_catalog_version\": \"Catalog 版本\",\n \"pricing_catalog_title\": \"预设价格表\",\n \"pricing_catalog_description\": \"全部 {{count}} 个已核实预设模型始终可见,不依赖 usage;Catalog 更新日期为 {{asOf}},每行均链接官方来源,不包含浏览器本地自定义覆盖。\",\n \"pricing_catalog_unit\": \"USD / 1M Tokens\",\n \"pricing_catalog_table_label\": \"完整预设价格表\",\n \"pricing_catalog_context_band\": \"上下文档位\",\n \"pricing_catalog_short_band\": \"短上下文\",\n \"pricing_catalog_long_band\": \"长上下文\",\n \"pricing_catalog_short_range\": \"< {{threshold}} 输入 Token\",\n \"pricing_catalog_long_range\": \"≥ {{threshold}} 输入 Token · 整条请求\",\n \"pricing_catalog_all_contexts\": \"全部受支持上下文\",\n \"pricing_catalog_aliases\": \"别名:{{aliases}}\",\n \"pricing_catalog_model_notes\": \"模型说明\",\n \"pricing_catalog_verified_as_of\": \"核对日期:{{asOf}}\",\n \"pricing_catalog_unavailable\": \"不可用\",\n \"pricing_catalog_fast_explicit_summary\": \"入 {{input}} · 缓存读 {{cached}} · 写 {{cacheWrite}} · 出 {{output}}\",\n \"pricing_source\": \"官方来源\",\n \"pricing_api_source\": \"API 价格来源\",\n \"pricing_estimate_notice\": \"本地 API 等价金额仅供参考,不是供应商账单。\",\n \"pricing_browser_notice\": \"价格 Profile 仅保存在当前浏览器,并会被此浏览器打开的不同 Core 实例共享。\",\n \"pricing_history_notice\": \"全部历史请求始终按当前 catalog 和 Profile 重新计算。\",\n \"pricing_migrated_v2\": \"旧版 v2 价格已完整保留为 v3 Profile;与预设短价一致的覆盖项可在确认后改用完整预设。\",\n \"pricing_profile_warning\": \"已保存的价格 Profile 含有无效数据,请检查当前默认值后再保存。\",\n \"pricing_profile_save_failed\": \"无法在当前浏览器保存价格 Profile。\",\n \"pricing_profile_saved\": \"价格 Profile 已保存\",\n \"pricing_summary\": \"价格覆盖摘要\",\n \"pricing_api_usd_estimate\": \"本地 API 等价估算(USD)\",\n \"pricing_api_usd\": \"本地 API 等价金额\",\n \"pricing_api_request_coverage\": \"本地估算请求覆盖率\",\n \"pricing_requests_unit\": \"条请求\",\n \"pricing_models_metric\": \"已定价模型 / 实际模型\",\n \"pricing_request_coverage\": \"已定价请求覆盖率\",\n \"pricing_token_coverage\": \"已定价 Token 覆盖率\",\n \"pricing_assumed_tier\": \"假设档位请求数\",\n \"pricing_assumed_tier_hint\": \"历史或未知档位按 Std 估算\",\n \"pricing_cost_incomplete\": \"本地估算不完整;未匹配、不支持或缺少事件明细的用量未计入金额。\",\n \"pricing_partial_coverage\": \"当前为部分本地估算:请求覆盖 {{request}}%,Token 覆盖 {{token}}%。\",\n \"pricing_entry_title\": \"本地 API 等价估算\",\n \"pricing_entry_description\": \"金额完全由当前浏览器使用 catalog、Profile、Token、service tier 和 context band 计算。\",\n \"pricing_models_covered\": \"已定价 {{priced}} / {{total}} 个模型\",\n \"pricing_requests_covered\": \"请求覆盖 {{percent}}%\",\n \"pricing_models_ratio\": \"模型覆盖 {{percent}}%\",\n \"pricing_search\": \"搜索实际用量模型\",\n \"pricing_filter\": \"价格状态筛选\",\n \"pricing_filter_all\": \"全部\",\n \"pricing_filter_preset\": \"预设\",\n \"pricing_filter_custom\": \"自定义\",\n \"pricing_filter_unmatched\": \"本地未匹配\",\n \"pricing_filter_anomaly\": \"异常\",\n \"pricing_import_action\": \"导入价格 Profile\",\n \"pricing_export_action\": \"导出价格 Profile\",\n \"pricing_reset_action\": \"恢复全部默认\",\n \"pricing_export_success\": \"价格 Profile 已导出\",\n \"pricing_import_title\": \"导入价格 Profile\",\n \"pricing_import_confirm\": \"用这个已通过校验的文件替换当前浏览器 v3 API 价格 Profile?使用统计不会改变。\",\n \"pricing_import_success\": \"价格 Profile 已导入\",\n \"pricing_import_invalid\": \"价格 Profile 无效\",\n \"pricing_reset_title\": \"恢复全部预设价格\",\n \"pricing_reset_confirm\": \"清除全部 v3 API 价格覆盖与别名?使用统计将保持不变。\",\n \"pricing_reset_success\": \"已恢复预设价格\",\n \"pricing_empty_title\": \"暂无实际用量模型\",\n \"pricing_empty_description\": \"配置器只展示真实 usage 中出现过的模型。请先产生或导入使用统计。\",\n \"pricing_standard_short\": \"Standard 短上下文\",\n \"pricing_standard_api\": \"API Standard\",\n \"pricing_fast\": \"Fast\",\n \"pricing_fast_policies\": \"Fast 计费规则\",\n \"pricing_fast_policy_title\": \"API Priority 与 ChatGPT Standard/Fast 使用各自独立的官方倍率。\",\n \"pricing_api_priority_multiplier\": \"API ×{{multiplier}}\",\n \"pricing_api_priority_multiplier_official\": \"官方 API ×{{multiplier}}\",\n \"pricing_api_priority_multiplier_custom\": \"自定义 API ×{{multiplier}}\",\n \"pricing_api_priority_explicit_rates\": \"API 独立费率\",\n \"pricing_long_context\": \"长上下文\",\n \"pricing_usage\": \"当前用量\",\n \"pricing_no_usage_requests\": \"无用量请求\",\n \"pricing_no_usage_tokens\": \"无用量 Token\",\n \"pricing_matching_presets_notice\": \"有 {{count}} 个旧式自定义价格与预设短价一致,但仍在遮蔽官方 Fast 和长上下文规则。\",\n \"pricing_matching_presets_title\": \"改用完整预设\",\n \"pricing_matching_presets_confirm\": \"仅移除这 {{count}} 个匹配的覆盖项,让它们继承官方 Fast 和长上下文规则?其他自定义价格和别名不会改变。\",\n \"pricing_matching_presets_action\": \"改用完整预设\",\n \"pricing_matching_presets_success\": \"{{count}} 个匹配的覆盖项已改用完整预设\",\n \"pricing_unmatched\": \"无精确匹配\",\n \"pricing_match_custom\": \"自定义\",\n \"pricing_match_preset\": \"预设\",\n \"pricing_match_alias\": \"别名\",\n \"pricing_match_none\": \"未匹配\",\n \"pricing_anomaly\": \"需要检查\",\n \"pricing_long_unsupported\": \"Fast 不支持长上下文\",\n \"pricing_fast_configured\": \"已配置 Fast\",\n \"pricing_long_requests\": \"{{count}} 条长上下文请求\",\n \"pricing_short_only\": \"仅短上下文用量\",\n \"pricing_single_rate_card\": \"所有受支持上下文共用一张 API 费率表\",\n \"pricing_no_matches\": \"没有模型符合当前搜索和筛选条件。\",\n \"pricing_catalog_footer\": \"API Catalog 包含 {{count}} 个已核实模型 · 核对日期 {{asOf}} · 单位 USD / 1M Tokens。\",\n \"pricing_editor_title\": \"API Token 价格编辑器\",\n \"pricing_editor_domain_notice\": \"此 Profile 影响所有匹配用量的本地 API 等价估算。\",\n \"pricing_alias\": \"精确别名目标\",\n \"pricing_alias_hint\": \"将当前实际模型名映射到一个精确的预设或自定义模型;启用别名后不再直接编辑费率。\",\n \"pricing_alias_canonical_hint\": \"当前模型已精确命中预设,不需要设置别名。\",\n \"pricing_standard_rates\": \"Standard 费率 · USD / 1M\",\n \"pricing_fast_rates\": \"Fast 费率 · USD / 1M\",\n \"pricing_rate_input\": \"输入\",\n \"pricing_rate_cached_input\": \"缓存输入\",\n \"pricing_rate_cache_write\": \"缓存写入\",\n \"pricing_rate_output\": \"输出\",\n \"pricing_auto\": \"自动 / 继承输入价\",\n \"pricing_fast_mode_none\": \"暂不配置\",\n \"pricing_fast_mode_rates\": \"显式费率\",\n \"pricing_fast_mode_multiplier\": \"Standard × 倍率\",\n \"pricing_fast_multiplier\": \"Fast 倍率\",\n \"pricing_fast_long_supported\": \"允许 Fast 与长上下文组合\",\n \"pricing_long_enable\": \"启用长上下文费率表\",\n \"pricing_long_threshold\": \"输入 Token 阈值\",\n \"pricing_preview_affected\": \"受影响的用量请求\",\n \"pricing_preview_coverage\": \"本地请求覆盖率\",\n \"pricing_preview_cost\": \"重算后本地估算\",\n \"pricing_editor_error_rates\": \"请为所有必填项输入有效的非负费率。\",\n \"pricing_editor_error_threshold\": \"请输入大于 0 的长上下文整数阈值。\",\n \"pricing_editor_error_multiplier\": \"请输入大于 0 的 Fast 倍率。\",\n \"pricing_editor_error_profile\": \"别名或费率表与当前价格 Profile 冲突。\",\n \"pricing_restore_preset\": \"恢复预设\",\n \"pricing_delete_config\": \"删除配置\",\n \"pricing_preset_restored\": \"已恢复预设\",\n \"pricing_custom_deleted\": \"已删除自定义价格\",\n \"cost_trend\": \"花费统计\",\n \"pricing_api_usd_trend\": \"本地 API 等价估算趋势(USD)\",\n \"cost_axis_label\": \"花费 ($)\",\n \"cost_need_price\": \"请先设置模型价格\",\n \"cost_need_usage\": \"暂无使用数据,无法计算花费\",\n \"cost_no_data\": \"没有可计算的花费数据\",\n \"credential_stats\": \"凭证统计\",\n \"credential_name\": \"凭证\",\n \"token_breakdown\": \"Token 类型分布\",\n \"request_events_title\": \"请求事件明细\",\n \"request_events_filter_model\": \"模型\",\n \"request_events_filter_source\": \"来源\",\n \"request_events_filter_auth_index\": \"认证索引\",\n \"request_events_filter_tier\": \"服务层级\",\n \"request_events_filter_effort\": \"推理强度\",\n \"request_events_filter_cache\": \"缓存状态\",\n \"request_events_numeric_filter\": \"Token 数值范围\",\n \"request_events_numeric_metric\": \"Token 指标\",\n \"request_events_numeric_any\": \"选择指标\",\n \"request_events_numeric_min\": \"最小值\",\n \"request_events_numeric_max\": \"最大值\",\n \"request_events_numeric_invalid\": \"请输入非负整数边界。\",\n \"request_events_numeric_range_invalid\": \"最小值不能大于最大值。\",\n \"request_events_numeric_help\": \"选择 Token 指标,并填写至少一个边界;点击“应用范围”后才会更新结果。\",\n \"request_events_numeric_preview\": \"条件预览\",\n \"request_events_numeric_active_label\": \"Token 范围:{{filter}}\",\n \"request_events_numeric_clear\": \"清除范围\",\n \"request_events_numeric_apply\": \"应用范围\",\n \"request_events_cache_present\": \"有缓存 Token\",\n \"request_events_cache_absent\": \"无缓存 Token\",\n \"request_events_range_page\": \"跟随页面({{range}})\",\n \"request_events_column_settings\": \"列设置\",\n \"request_events_restore_default_columns\": \"恢复默认列\",\n \"request_events_timestamp\": \"时间\",\n \"request_events_source\": \"来源\",\n \"request_events_auth_index\": \"认证索引\",\n \"request_events_tier\": \"服务层级\",\n \"request_events_tier_fast\": \"Fast\",\n \"request_events_tier_standard\": \"Std\",\n \"request_events_tier_tooltip_effective\": \"Core 已确认实际服务档位:{{tier}}。\",\n \"request_events_tier_tooltip_response\": \"上游响应回报服务档位:{{tier}}。\",\n \"request_events_tier_tooltip_request\": \"根据请求档位显示为 {{tier}},实际计费可能不同。\",\n \"request_events_tier_tooltip_assumed\": \"历史或未知档位,按 Std 估算。\",\n \"request_events_tier_legacy_unknown\": \"历史 / 未知\",\n \"request_events_tier_other\": \"其他:{{tier}}\",\n \"request_events_effort\": \"推理强度\",\n \"request_events_effort_legacy_unknown\": \"历史 / 未知\",\n \"request_events_result\": \"结果\",\n \"time\": \"延迟\",\n \"avg_time\": \"平均延迟\",\n \"latency_unit_hint\": \"耗时取自后端字段 {{field}},按 {{unit}} 解释后再格式化显示。\",\n \"duration_unit_d\": \"天\",\n \"duration_unit_h\": \"时\",\n \"duration_unit_m\": \"分\",\n \"duration_unit_s\": \"秒\",\n \"duration_unit_ms\": \"毫秒\",\n \"request_events_empty_title\": \"暂无请求事件\",\n \"request_events_empty_desc\": \"当前时间范围内暂无可用的请求明细数据。\",\n \"request_events_no_result_title\": \"没有匹配结果\",\n \"request_events_no_result_desc\": \"请尝试调整筛选条件,或清空当前筛选。\",\n \"request_events_count\": \"{{count}} 条事件\",\n \"request_events_limit_hint\": \"为保证渲染性能,仅展示 {{shown}} / {{total}} 条事件。\",\n \"request_events_total_input_tokens\": \"总输入 Token\",\n \"request_events_non_cache_read_input_tokens\": \"非缓存读取输入 Token\",\n \"request_events_non_cache_read_input_tokens_hint\": \"按总输入 Token - 缓存读取 Token 在 Panel 本地计算,结果不小于 0。这是缓存率的补集,不是普通提示词输入。缓存写入 Token 单独展示和计价。\",\n \"request_events_total_output_tokens\": \"总输出 Token\",\n \"request_events_explicit_output_tokens\": \"显式输出 Token\",\n \"request_events_output_tokens_hint\": \"显式输出 Token = 总输出 Token - 思考 Token,结果不小于 0。\",\n \"request_events_cache_rate\": \"缓存读取占比\",\n \"request_events_cache_rate_hint\": \"缓存读取占比 = 缓存读取 Token / 总输入 Token。0% 和低于 25% 为偏低,25% 至低于 60% 为一般,60% 及以上为较高;缓存读取超过总输入时标记为异常。仅缓存读取数值按此状态着色;其他 Token 数值保持中性。\",\n \"request_events_cache_rate_low\": \"偏低\",\n \"request_events_cache_rate_medium\": \"一般\",\n \"request_events_cache_rate_high\": \"较高\",\n \"request_events_cache_rate_anomaly\": \"异常\",\n \"request_events_cache_rate_cell_label\": \"缓存读取 {{tokens}} Token,占比 {{rate}},状态{{tone}}\",\n \"request_events_cache_rate_anomaly_label\": \"缓存读取 Token({{tokens}})超过总输入 Token({{input}})。\",\n \"request_events_table_region\": \"请求事件明细表\",\n \"input_tokens\": \"输入 Tokens\",\n \"output_tokens\": \"输出 Tokens\",\n \"last_updated\": \"更新于\"\n },\n \"service_health\": {\n \"title\": \"服务健康监测\",\n \"window\": \"最近 7 天\",\n \"oldest\": \"最早\",\n \"newest\": \"最新\"\n },\n \"logs\": {\n \"title\": \"日志查看\",\n \"runtime_unknown\": \"当前运行端:识别中\",\n \"runtime_cpa\": \"当前运行端:CPA\",\n \"runtime_home\": \"当前运行端:Home\",\n \"refresh_button\": \"刷新日志\",\n \"clear_button\": \"清空日志\",\n \"fullscreen_button\": \"全屏显示\",\n \"exit_fullscreen_button\": \"退出全屏\",\n \"download_button\": \"下载日志\",\n \"error_log_button\": \"选择错误日志\",\n \"error_logs_modal_title\": \"错误请求日志\",\n \"error_logs_description\": \"请选择要打开或下载的错误请求日志文件(仅在关闭请求日志时生成)。\",\n \"error_logs_home_unavailable\": \"Home 模式下请在日志内容页查看数据库日志,错误请求日志列表仅适用于 CPA 文件日志。\",\n \"error_logs_request_log_enabled\": \"当前已开启请求日志,按接口约定错误请求日志列表会始终为空。关闭请求日志后再刷新即可查看。\",\n \"error_logs_empty\": \"暂无错误请求日志文件\",\n \"error_logs_load_error\": \"加载错误日志列表失败\",\n \"error_logs_size\": \"大小\",\n \"error_logs_modified\": \"最后修改\",\n \"error_logs_open\": \"打开\",\n \"error_logs_download\": \"下载\",\n \"error_log_view_title\": \"错误请求日志详情\",\n \"error_log_open_failed\": \"打开错误日志失败\",\n \"error_log_empty_content\": \"该错误日志没有内容\",\n \"error_log_copy_success\": \"错误日志内容已复制\",\n \"error_log_download_success\": \"错误日志下载成功\",\n \"request_log_download_title\": \"下载报文\",\n \"request_log_download_confirm\": \"是否要下载id为{{id}}的报文?\",\n \"request_log_download_success\": \"报文下载成功\",\n \"empty_title\": \"暂无日志记录\",\n \"empty_desc\": \"当启用\\\"日志记录到文件\\\"功能后,日志将显示在这里\",\n \"cpa_file_logging_required\": \"当前连接的是 CPA,日志查看需要先开启“日志记录到文件”。\",\n \"cpa_file_logging_required_title\": \"需要开启文件日志\",\n \"cpa_file_logging_required_desc\": \"CPA 的日志接口读取本地日志文件。请在配置中开启 logging-to-file 后再刷新查看。\",\n \"file_logging_required\": \"当前日志接口需要先开启“日志记录到文件”后才能读取文件日志。\",\n \"file_logging_required_title\": \"需要开启文件日志\",\n \"file_logging_required_desc\": \"当前日志接口读取本地日志文件。请在配置中开启 logging-to-file 后再刷新查看。\",\n \"home_clear_unavailable\": \"Home 日志来自数据库查询,当前不支持从这里清空。\",\n \"log_content\": \"日志内容\",\n \"loading\": \"正在加载日志...\",\n \"load_error\": \"加载日志失败\",\n \"clear_confirm\": \"确定要清空所有日志吗?此操作不可恢复!\",\n \"clear_success\": \"日志已清空\",\n \"download_success\": \"日志下载成功\",\n \"auto_refresh\": \"自动刷新\",\n \"auto_refresh_enabled\": \"自动刷新已开启\",\n \"auto_refresh_disabled\": \"自动刷新已关闭\",\n \"load_more_hint\": \"向上滚动加载更多\",\n \"hidden_lines\": \"已隐藏 {{count}} 行\",\n \"loaded_lines\": \"已载入 {{count}} 行\",\n \"filtered_lines\": \"已过滤 {{count}} 行\",\n \"hide_management_logs\": \"屏蔽 {{prefix}} 日志\",\n \"show_raw_logs\": \"显示原始日志\",\n \"show_raw_logs_hint\": \"直接显示原始日志文本,方便多行复制\",\n \"search_placeholder\": \"搜索日志内容或关键字\",\n \"filter_panel_title\": \"结构化筛选\",\n \"filter_panel_expand\": \"展开结构化筛选\",\n \"filter_panel_collapse\": \"收起结构化筛选\",\n \"filter_panel_active_count\": \"已选 {{count}} 项\",\n \"filter_method\": \"请求方法\",\n \"filter_status\": \"状态码\",\n \"filter_path\": \"路径\",\n \"filter_path_empty\": \"暂无可筛选路径\",\n \"filter_status_2xx\": \"2xx\",\n \"filter_status_3xx\": \"3xx\",\n \"filter_status_4xx\": \"4xx\",\n \"filter_status_5xx\": \"5xx\",\n \"clear_filters\": \"清空筛选\",\n \"search_empty_title\": \"未找到匹配的日志\",\n \"search_empty_desc\": \"尝试更换关键字或清空筛选条件。\",\n \"double_click_copy_hint\": \"双击复制日志原文\",\n \"copy_success\": \"已复制日志原文\",\n \"copy_failed\": \"复制失败\",\n \"lines\": \"行\",\n \"removed\": \"已过滤\",\n \"upgrade_required_title\": \"需要升级 CLI Proxy API\",\n \"upgrade_required_desc\": \"当前服务器版本不支持日志查看功能,请升级到最新版本的 CLI Proxy API 以使用此功能。\"\n },\n \"config_management\": {\n \"title\": \"配置面板\",\n \"editor_title\": \"配置文件\",\n \"reload\": \"重新加载\",\n \"reload_confirm_message\": \"重新加载将丢弃你当前未保存的修改,确定继续吗?\",\n \"save\": \"保存\",\n \"description\": \"通过可视化或者源文件方式编辑 config.yaml 配置文件\",\n \"status_idle\": \"等待操作\",\n \"status_loading\": \"加载配置中...\",\n \"status_loading_short\": \"加载中\",\n \"status_loaded\": \"配置已加载\",\n \"status_loaded_short\": \"已加载\",\n \"status_dirty\": \"有未保存的更改\",\n \"status_dirty_short\": \"未保存\",\n \"status_disconnected\": \"请先连接服务器以加载配置\",\n \"status_disconnected_short\": \"未连接\",\n \"status_load_failed\": \"加载失败\",\n \"status_load_failed_short\": \"失败\",\n \"status_saving\": \"正在保存配置...\",\n \"status_saving_short\": \"保存中\",\n \"status_saved\": \"配置保存完成\",\n \"status_save_failed\": \"保存失败\",\n \"save_success\": \"配置已保存\",\n \"error_yaml_not_supported\": \"服务器未返回 YAML 格式,请确认 /config.yaml 接口可用\",\n \"visual_mode_unavailable\": \"YAML 语法修复前无法使用可视化编辑\",\n \"visual_mode_unavailable_short\": \"YAML错误\",\n \"validation_blocked_short\": \"待修复\",\n \"visual_mode_unavailable_detail\": \"当前配置存在无效 YAML,暂时无法使用可视化编辑:{{message}}\",\n \"visual_mode_save_blocked\": \"请先修复 YAML 语法错误,再从可视化模式保存\",\n \"visual_mode_latest_yaml_invalid\": \"服务端最新配置包含无效 YAML,请先切回源码模式检查后再保存可视化修改:{{message}}\",\n \"editor_placeholder\": \"key: value\",\n \"search_placeholder\": \"搜索配置内容...\",\n \"search_button\": \"搜索\",\n \"search_no_results\": \"无结果\",\n \"search_prev\": \"上一个\",\n \"search_next\": \"下一个\",\n \"diff\": {\n \"title\": \"确认变更\",\n \"current\": \"当前配置\",\n \"modified\": \"修改后\",\n \"confirm\": \"确认保存\",\n \"no_changes\": \"未检测到变更\"\n },\n \"tabs\": {\n \"visual\": \"可视化编辑\",\n \"source\": \"源文件编辑\"\n },\n \"visual\": {\n \"notice\": \"可视化模式覆盖常用字段,未覆盖的配置仍需在源文件模式中查看或编辑。\",\n \"quick_jump\": \"快速跳转\",\n \"subsection_navigation\": \"{{section}}分组\",\n \"sections\": {\n \"server\": {\n \"title\": \"服务器配置\",\n \"description\": \"基础服务器设置\",\n \"listener_group_title\": \"监听地址\",\n \"host\": \"主机地址\",\n \"port\": \"端口\"\n },\n \"tls\": {\n \"title\": \"TLS/SSL 配置\",\n \"description\": \"HTTPS 安全连接设置\",\n \"enable\": \"启用 TLS\",\n \"enable_desc\": \"启用 HTTPS 安全连接\",\n \"cert\": \"证书文件路径\",\n \"key\": \"私钥文件路径\"\n },\n \"remote\": {\n \"title\": \"远程管理\",\n \"description\": \"远程访问和控制面板设置\",\n \"allow_remote\": \"允许远程访问\",\n \"allow_remote_desc\": \"允许从其他主机访问管理接口\",\n \"disable_panel\": \"禁用控制面板\",\n \"disable_panel_desc\": \"禁用内置的 Web 控制面板\",\n \"disable_auto_update_panel\": \"禁用面板自动更新\",\n \"disable_auto_update_panel_desc\": \"首次缺失时仍可下载,但不再从 GitHub 后台自动更新\",\n \"secret_key\": \"管理密钥\",\n \"secret_key_placeholder\": \"设置管理密钥\",\n \"panel_repo\": \"面板仓库\"\n },\n \"auth\": {\n \"title\": \"认证配置\",\n \"description\": \"API 密钥与认证文件目录设置\",\n \"group_title\": \"访问与认证\",\n \"group_description\": \"远程管理、控制面板访问、API 密钥与认证文件\",\n \"credentials_title\": \"认证文件与 API 密钥\",\n \"auth_dir\": \"认证文件目录 (auth-dir)\",\n \"auth_dir_hint\": \"存放认证文件的目录路径(支持 ~)\"\n },\n \"system\": {\n \"title\": \"系统配置\",\n \"description\": \"调试、日志、统计与性能调试设置\",\n \"group_navigation_label\": \"系统配置分组\",\n \"runtime_group_title\": \"运行与运维\",\n \"runtime_group_desc\": \"核心开关、日志、用量统计与签名处理\",\n \"plugins_group_title\": \"插件\",\n \"plugins_group_desc\": \"插件运行开关、来源与私有源认证\",\n \"headers_group_title\": \"请求头与 Codex 策略\",\n \"headers_group_desc\": \"Claude/Codex 默认请求头与异常推理重试策略\",\n \"network_group_title\": \"网络与路由\",\n \"network_group_desc\": \"代理、重试、会话亲和、图像与端点行为\",\n \"core_controls_title\": \"核心运行开关\",\n \"core_controls_desc\": \"集中管理诊断、高并发与文件日志等顶层开关\",\n \"plugin_runtime_title\": \"插件运行\",\n \"plugin_runtime_desc\": \"启用或停用动态库插件加载\",\n \"operations_title\": \"日志、用量与签名处理\",\n \"operations_desc\": \"配置保留上限、内存用量统计与 Antigravity 签名行为\",\n \"debug\": \"调试模式\",\n \"debug_desc\": \"启用详细的调试日志\",\n \"commercial_mode\": \"商业模式\",\n \"commercial_mode_desc\": \"禁用高开销中间件以支持高并发\",\n \"logging_to_file\": \"写入日志文件\",\n \"logging_to_file_desc\": \"将日志保存到文件\",\n \"plugins_enabled\": \"启用插件系统\",\n \"plugins_enabled_desc\": \"启用标准动态库插件加载;具体插件实例仍在插件管理页启停\",\n \"plugin_store_sources\": \"第三方插件源\",\n \"plugin_store_sources_desc\": \"追加插件商店 registry 源;内置官方源始终保留\",\n \"plugin_store_sources_label\": \"插件源 registry URL (plugins.store-sources)\",\n \"plugin_store_sources_placeholder\": \"https://example.com/cliproxy-plugins/registry.json\",\n \"plugin_store_sources_hint\": \"每行一个 registry.json URL,保存时会过滤空行\",\n \"plugin_store_auth\": \"插件商店认证规则\",\n \"plugin_store_auth_desc\": \"为私有注册表、GitHub Release 元数据或制品下载配置认证 Header\",\n \"plugin_store_auth_hint\": \"只填写环境变量名,不要填写真实 token。后端会从运行时环境读取对应值。\",\n \"store_auth_empty\": \"尚未配置认证规则。公开插件源不需要配置。\",\n \"store_auth_rule\": \"认证规则\",\n \"store_auth_add\": \"添加认证规则\",\n \"store_auth_match\": \"匹配的 URL 前缀\",\n \"store_auth_type\": \"认证类型\",\n \"store_auth_apply_to\": \"应用到\",\n \"store_auth_apply_to_hint\": \"不选择时,该规则会应用到所有请求类型。\",\n \"store_auth_apply_registry\": \"注册表\",\n \"store_auth_apply_metadata\": \"元数据\",\n \"store_auth_apply_artifact\": \"制品\",\n \"store_auth_type_none\": \"无\",\n \"store_auth_type_bearer\": \"Bearer\",\n \"store_auth_type_basic\": \"Basic\",\n \"store_auth_type_header\": \"自定义 Header\",\n \"store_auth_type_github_token\": \"GitHub token\",\n \"store_auth_token_env\": \"Token 环境变量\",\n \"store_auth_username_env\": \"用户名环境变量\",\n \"store_auth_password_env\": \"密码环境变量\",\n \"store_auth_header_name\": \"Header 名称\",\n \"store_auth_header_value_env\": \"Header 值环境变量\",\n \"store_auth_allow_insecure\": \"允许不安全的 HTTP URL\",\n \"logs_max_size\": \"日志文件大小限制 (MB)\",\n \"error_logs_max_files\": \"错误日志保留文件数\",\n \"usage_statistics_enabled\": \"启用内存用量统计\",\n \"usage_statistics_enabled_desc\": \"启用内存中的请求用量聚合\",\n \"redis_usage_retention\": \"Redis 用量队列保留秒数\",\n \"redis_usage_retention_hint\": \"RESP 接口 LPOP/RPOP 用量队列的内存保留时间,最大 3600 秒\",\n \"antigravity_signature_cache\": \"启用 Antigravity 签名缓存\",\n \"antigravity_signature_cache_desc\": \"优先使用并校验缓存的 thinking block 签名\",\n \"antigravity_signature_strict\": \"严格校验旁路签名\",\n \"antigravity_signature_strict_desc\": \"仅在关闭签名缓存时生效,按完整 Claude protobuf 树校验\"\n },\n \"headers\": {\n \"title\": \"Header 默认值\",\n \"description\": \"Claude 与 Codex OAuth 请求在客户端缺少 Header 时使用的默认值\",\n \"claude_title\": \"Claude Header Defaults\",\n \"codex_title\": \"Codex Header Defaults\",\n \"user_agent\": \"User-Agent\",\n \"package_version\": \"Package Version\",\n \"runtime_version\": \"Runtime Version\",\n \"os\": \"OS\",\n \"arch\": \"Arch\",\n \"timeout\": \"Timeout\",\n \"stabilize_device\": \"稳定设备指纹\",\n \"stabilize_device_desc\": \"固定 OS/Arch,并按凭据/API Key 稳定软件指纹\",\n \"beta_features\": \"实验功能\",\n \"codex_identity_confuse\": \"Codex 身份混淆\",\n \"codex_identity_confuse_desc\": \"在填满优先或会话粘性路由下,按所选认证重映射 Codex 缓存键与安装身份\",\n \"codex_abnormal_reasoning_retry_title\": \"Codex 降智对抗策略\",\n \"codex_abnormal_reasoning_retry_desc\": \"检测异常推理令牌数后,控制重试、对冲请求、最终交付和客户端用量展示\",\n \"codex_abnormal_reasoning_retry_summary_title\": \"当前策略概览\",\n \"codex_abnormal_reasoning_retry_summary_desc\": \"把开关、重试动作和交付结果拆开显示,便于确认策略是否真的按预期生效。\",\n \"codex_abnormal_reasoning_retry_summary_action\": \"命中动作\",\n \"codex_abnormal_reasoning_retry_summary_stream_buffer\": \"流式缓存\",\n \"codex_abnormal_reasoning_retry_summary_hedged\": \"对冲模式\",\n \"codex_abnormal_reasoning_retry_summary_distinct_auth\": \"不同认证\",\n \"codex_abnormal_reasoning_retry_summary_on\": \"已开启\",\n \"codex_abnormal_reasoning_retry_summary_off\": \"已关闭\",\n \"codex_abnormal_reasoning_retry_group_switches_title\": \"基础开关\",\n \"codex_abnormal_reasoning_retry_group_switches_desc\": \"先决定是否启用策略、是否缓存流式响应,以及是否使用第二路请求。\",\n \"codex_abnormal_reasoning_retry_group_retry_title\": \"重试调度\",\n \"codex_abnormal_reasoning_retry_group_retry_desc\": \"设置命中后的动作、缓存上限、第二路请求延迟和对冲返回模式。\",\n \"codex_abnormal_reasoning_retry_group_match_title\": \"命中条件\",\n \"codex_abnormal_reasoning_retry_group_match_desc\": \"限定模型、推理强度、异常推理令牌数和最大重试次数。\",\n \"codex_abnormal_reasoning_retry_group_delivery_title\": \"交付与用量\",\n \"codex_abnormal_reasoning_retry_group_delivery_desc\": \"控制重试耗尽后的返回、客户端可见用量,以及多候选响应的选择方式。\",\n \"codex_abnormal_reasoning_retry_group_scope_title\": \"认证范围\",\n \"codex_abnormal_reasoning_retry_group_scope_desc\": \"按认证类型或认证 ID 缩小策略影响范围,避免误伤其他凭据。\",\n \"codex_abnormal_reasoning_retry_enabled\": \"策略快捷开关\",\n \"codex_abnormal_reasoning_retry_enabled_desc\": \"开启时自动重试,关闭时不改变响应;仅观察模式请在下方重试动作中选择\",\n \"codex_abnormal_reasoning_retry_action_label\": \"重试动作\",\n \"codex_abnormal_reasoning_retry_action_hint\": \"选择命中异常推理令牌数后的处理动作\",\n \"codex_abnormal_reasoning_retry_action_retry\": \"自动重试\",\n \"codex_abnormal_reasoning_retry_action_observe_only\": \"仅观察\",\n \"codex_abnormal_reasoning_retry_action_disabled\": \"关闭\",\n \"codex_abnormal_reasoning_retry_action_retry_desc\": \"当前会丢弃命中异常推理令牌数的响应,并按重试上限重新请求。\",\n \"codex_abnormal_reasoning_retry_action_observe_only_desc\": \"当前只记录命中结果,不会改变返回给客户端的响应。\",\n \"codex_abnormal_reasoning_retry_action_disabled_desc\": \"当前不启用降智对抗策略,匹配条件不会影响响应交付。\",\n \"codex_abnormal_reasoning_retry_stream_buffer\": \"缓存流式响应\",\n \"codex_abnormal_reasoning_retry_stream_buffer_desc\": \"在响应完成前暂存流式片段,命中异常时可避免提前交付异常内容\",\n \"codex_abnormal_reasoning_retry_stream_buffer_max_bytes_label\": \"流式缓存上限字节数\",\n \"codex_abnormal_reasoning_retry_stream_buffer_max_bytes_hint\": \"默认 16 MiB(16777216);填 0 也使用安全默认值。超出后当前流式响应以 502 失败关闭,不会透传部分内容\",\n \"codex_abnormal_reasoning_retry_hedged_retry_enabled\": \"启用对冲重试\",\n \"codex_abnormal_reasoning_retry_hedged_retry_enabled_desc\": \"首个异常响应被丢弃后,延迟启动第二路请求以降低尾延迟\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_label\": \"对冲重试模式\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_hint\": \"选择第二路请求启动后的返回策略\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_quality\": \"质量优先(默认)\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_speed\": \"速度优先\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_quality_desc\": \"当前会等待已发出的请求通道,再按交付策略挑选更稳的结果。\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_speed_desc\": \"当前会在首个可交付请求通道成功后尽快返回,用更短等待换取响应速度。\",\n \"codex_abnormal_reasoning_retry_hedge_delay_ms_label\": \"对冲延迟(毫秒)\",\n \"codex_abnormal_reasoning_retry_hedge_delay_ms_hint\": \"异常请求尝试触发重试后,启动第二路请求前等待的时间\",\n \"codex_abnormal_reasoning_retry_require_distinct_auth\": \"要求不同认证\",\n \"codex_abnormal_reasoning_retry_require_distinct_auth_desc\": \"第二路对冲请求优先选择不同的认证 ID\",\n \"codex_abnormal_reasoning_retry_model_contains_label\": \"模型包含\",\n \"codex_abnormal_reasoning_retry_model_contains_hint\": \"请求模型或解析后的上游模型包含任一值即匹配\",\n \"codex_abnormal_reasoning_retry_reasoning_efforts_label\": \"推理强度\",\n \"codex_abnormal_reasoning_retry_reasoning_efforts_hint\": \"可选的 Codex 推理强度过滤值,例如 high 或 xhigh;留空表示不限制强度\",\n \"codex_abnormal_reasoning_retry_reasoning_tokens_label\": \"推理令牌数\",\n \"codex_abnormal_reasoning_retry_reasoning_tokens_hint\": \"触发策略的非负整数令牌数\",\n \"codex_abnormal_reasoning_retry_max_retries_label\": \"最大异常重试次数\",\n \"codex_abnormal_reasoning_retry_max_retries_hint\": \"异常推理检测触发的最大额外重试次数;填 0 表示记录失败尝试并直接返回 502\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_label\": \"超过上限后的策略\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_hint\": \"选择异常重试次数超过最大值后的处理方式\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_error\": \"返回 502\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_pass_through\": \"放行异常响应\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_error_desc\": \"超过重试上限后返回 502,避免把异常响应交付给客户端。\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_pass_through_desc\": \"超过重试上限后放行最后的异常响应,优先保持请求可返回。\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_label\": \"客户端用量聚合\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_hint\": \"选择客户端可见用量的聚合方式;管理面板用量统计仍按真实请求尝试记录\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_delivered_only\": \"仅统计交付响应(默认)\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum\": \"合并所有尝试\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum_with_delivered_total\": \"合并明细,保留交付总数\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_delivered_only_desc\": \"当前客户端只看到最终交付响应的用量;管理面板仍记录每次真实尝试。\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum_desc\": \"当前客户端会看到所有请求尝试的用量逐项累加。\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum_with_delivered_total_desc\": \"当前会累加明细字段,但总数沿用最终交付响应,便于兼容只读取总数的客户端。\",\n \"codex_abnormal_reasoning_retry_delivery_policy_label\": \"交付策略\",\n \"codex_abnormal_reasoning_retry_delivery_policy_hint\": \"只在候选池同时存在正常与异常响应时生效\",\n \"codex_abnormal_reasoning_retry_delivery_policy_best_non_special\": \"最佳正常响应(默认)\",\n \"codex_abnormal_reasoning_retry_delivery_policy_first_non_special\": \"首个正常响应\",\n \"codex_abnormal_reasoning_retry_delivery_policy_max_output\": \"输出最多的响应\",\n \"codex_abnormal_reasoning_retry_delivery_policy_latest\": \"最新响应\",\n \"codex_abnormal_reasoning_retry_delivery_policy_best_non_special_desc\": \"当前会优先交付质量最高的正常响应。\",\n \"codex_abnormal_reasoning_retry_delivery_policy_first_non_special_desc\": \"当前会交付最先成功的正常响应,减少等待时间。\",\n \"codex_abnormal_reasoning_retry_delivery_policy_max_output_desc\": \"当前会交付输出量最大的候选响应,优先保留内容量。\",\n \"codex_abnormal_reasoning_retry_delivery_policy_latest_desc\": \"当前会交付最后完成的候选响应,按最新尝试结果收敛。\",\n \"codex_abnormal_reasoning_retry_fallback_policy_label\": \"兜底策略\",\n \"codex_abnormal_reasoning_retry_fallback_policy_hint\": \"所有候选仍异常且重试耗尽时生效\",\n \"codex_abnormal_reasoning_retry_fallback_policy_best_special\": \"最佳异常响应(默认)\",\n \"codex_abnormal_reasoning_retry_fallback_policy_max_output_special\": \"输出最多的异常响应\",\n \"codex_abnormal_reasoning_retry_fallback_policy_latest_special\": \"最新异常响应\",\n \"codex_abnormal_reasoning_retry_fallback_policy_best_special_desc\": \"当前在只能放行异常候选时,选择质量最高的异常响应。\",\n \"codex_abnormal_reasoning_retry_fallback_policy_max_output_special_desc\": \"当前在只能放行异常候选时,选择输出量最大的异常响应。\",\n \"codex_abnormal_reasoning_retry_fallback_policy_latest_special_desc\": \"当前在只能放行异常候选时,选择最后完成的异常响应。\",\n \"codex_abnormal_reasoning_retry_auth_kinds_label\": \"认证类型\",\n \"codex_abnormal_reasoning_retry_auth_kinds_hint\": \"归一化后的认证类型白名单;默认 OAuth 不匹配 API Key\",\n \"codex_abnormal_reasoning_retry_auth_ids_label\": \"认证 ID\",\n \"codex_abnormal_reasoning_retry_auth_ids_hint\": \"可选的精确认证 ID 白名单;留空表示不限制 ID\"\n },\n \"network\": {\n \"title\": \"网络配置\",\n \"description\": \"代理、重试和路由设置\",\n \"proxy_url\": \"代理 URL\",\n \"request_retry\": \"请求重试次数\",\n \"max_retry_credentials\": \"最大重试凭据数\",\n \"max_retry_credentials_hint\": \"留空表示不设置;设为 0 表示保留 legacy 行为,并尝试所有可用凭据。\",\n \"max_retry_interval\": \"最大重试间隔 (秒)\",\n \"transient_error_cooldown_seconds\": \"瞬时错误冷却时间 (秒)\",\n \"transient_error_cooldown_seconds_hint\": \"留空使用 Core 默认值。0 保留旧的 60 秒冷却;负数禁用瞬时错误冷却。\",\n \"auth_auto_refresh_workers\": \"认证自动刷新 Worker 数\",\n \"auth_auto_refresh_workers_hint\": \"大于 0 时覆盖默认 Worker 数(16)\",\n \"disable_image_generation\": \"禁用图像生成\",\n \"disable_image_generation_hint\": \"false 启用自动图像工具注入;true 全部禁用;chat 从非图片端点移除 image_generation;passthrough 在非图片端点不注入也不删除客户端工具(图片端点与 chat 相同)\",\n \"disable_image_generation_false\": \"false(启用)\",\n \"disable_image_generation_true\": \"true(全部禁用)\",\n \"disable_image_generation_chat\": \"chat(从非图片端点移除图像工具)\",\n \"disable_image_generation_passthrough\": \"passthrough(原样保留客户端工具)\",\n \"gpt_image_2_base_model\": \"GPT Image 2 基础模型\",\n \"gpt_image_2_base_model_hint\": \"代理 gpt-image-2 图片请求时使用的主线模型;留空或非法时后端使用默认值\",\n \"routing_strategy\": \"路由策略\",\n \"routing_strategy_hint\": \"选择凭据选择策略\",\n \"strategy_round_robin\": \"轮询 (Round Robin)\",\n \"strategy_fill_first\": \"填充优先 (Fill First)\",\n \"session_affinity_ttl\": \"会话粘性 TTL\",\n \"force_model_prefix\": \"强制模型前缀\",\n \"force_model_prefix_desc\": \"未带前缀的模型请求只使用无前缀凭据\",\n \"passthrough_headers\": \"透传上游响应 Header\",\n \"passthrough_headers_desc\": \"将过滤后的上游响应 Header 转发给下游客户端\",\n \"disable_cooling\": \"禁用冷却调度\",\n \"disable_cooling_desc\": \"全局禁用认证/模型失败后的冷却窗口\",\n \"session_affinity\": \"会话粘性路由\",\n \"ws_auth\": \"WebSocket 认证\",\n \"ws_auth_desc\": \"启用 WebSocket 连接认证 (/v1/ws)\",\n \"enable_gemini_cli_endpoint\": \"启用 Gemini CLI 内部端点\",\n \"enable_gemini_cli_endpoint_desc\": \"启用 /v1internal:* 兼容端点\"\n },\n \"quota\": {\n \"title\": \"配额回退\",\n \"description\": \"配额耗尽时的回退策略\",\n \"switch_project\": \"切换项目\",\n \"switch_project_desc\": \"配额耗尽时自动切换到其他项目\",\n \"switch_preview_model\": \"切换预览模型\",\n \"switch_preview_model_desc\": \"配额耗尽时切换到预览版本模型\",\n \"antigravity_credits\": \"使用Antigravity Credits\"\n },\n \"streaming\": {\n \"title\": \"流式传输配置\",\n \"description\": \"Keepalive 与 bootstrap 重试设置\",\n \"keepalive_seconds\": \"Keepalive 秒数\",\n \"keepalive_hint\": \"设置为 0 或留空表示禁用 keepalive\",\n \"bootstrap_retries\": \"Bootstrap 重试次数\",\n \"bootstrap_hint\": \"流式传输启动时(首包前)的重试次数\",\n \"nonstream_keepalive\": \"非流式 Keepalive 间隔 (秒)\",\n \"nonstream_keepalive_hint\": \"非流式响应时每隔 N 秒发送空行以防止空闲超时,设置为 0 或留空表示禁用\",\n \"disabled\": \"已禁用\"\n },\n \"payload\": {\n \"title\": \"Payload 配置\",\n \"description\": \"默认值、原始 JSON 规则、覆盖规则与过滤规则\",\n \"default_rules\": \"默认规则\",\n \"default_rules_desc\": \"当请求中未指定参数时,使用这些默认值\",\n \"default_raw_rules\": \"默认 Raw 规则\",\n \"default_raw_rules_desc\": \"当请求中未指定参数时,按原始 JSON 片段写入这些值,例如 true、123、\\\"high\\\" 或 {\\\"type\\\":\\\"object\\\"}\",\n \"override_rules\": \"覆盖规则\",\n \"override_rules_desc\": \"强制覆盖请求中的参数值\",\n \"override_raw_rules\": \"覆盖 Raw 规则\",\n \"override_raw_rules_desc\": \"始终按原始 JSON 片段覆盖参数值,适合 response_format、schema 等复杂字段\",\n \"filter_rules\": \"过滤规则\",\n \"filter_rules_desc\": \"通过 JSON Path 预过滤上游请求体,自动剔除不合规/冗余参数(Request Sanitization)\"\n }\n },\n \"api_keys\": {\n \"label\": \"API 密钥列表 (api-keys)\",\n \"add\": \"添加 API 密钥\",\n \"generate\": \"生成\",\n \"empty\": \"暂无 API 密钥\",\n \"hint\": \"每个条目代表一个 API 密钥(与 「API 密钥管理」 页面样式一致)\",\n \"edit_title\": \"编辑 API 密钥\",\n \"add_title\": \"添加 API 密钥\",\n \"input_label\": \"API 密钥\",\n \"input_placeholder\": \"粘贴你的 API 密钥\",\n \"input_hint\": \"此处仅修改本地配置文件内容,不会自动同步到 API 密钥管理接口\",\n \"error_empty\": \"请输入 API 密钥\",\n \"error_invalid\": \"API 密钥包含无效字符\"\n },\n \"payload_rules\": {\n \"rule\": \"规则\",\n \"models\": \"适用模型\",\n \"model_name\": \"模型名称\",\n \"model_scope\": \"模型匹配范围\",\n \"scope_any\": \"任意(当前行为)\",\n \"scope_requested\": \"用户请求模型\",\n \"scope_upstream\": \"上游模型\",\n \"scope_custom\": \"自定义:{{scope}}\",\n \"provider_type\": \"供应商类型\",\n \"add_model\": \"添加模型\",\n \"params\": \"参数设置\",\n \"remove_params\": \"移除参数\",\n \"json_path\": \"JSON 路径 (如 temperature)\",\n \"json_path_filter\": \"JSON 路径 (gjson/sjson),如 generationConfig.thinkingConfig.thinkingBudget\",\n \"param_type\": \"参数类型\",\n \"param_value\": \"参数值\",\n \"add_param\": \"添加参数\",\n \"no_rules\": \"暂无规则\",\n \"add_rule\": \"添加规则\",\n \"provider_default\": \"默认\",\n \"provider_openai\": \"OpenAI\",\n \"provider_openai_response\": \"OpenAI Response\",\n \"provider_responses\": \"Responses\",\n \"provider_gemini\": \"Gemini\",\n \"provider_claude\": \"Claude\",\n \"provider_codex\": \"Codex\",\n \"provider_antigravity\": \"Antigravity\",\n \"advanced\": \"高级\",\n \"hide_advanced\": \"收起高级\",\n \"from_protocol\": \"来源协议 (from-protocol)\",\n \"headers\": \"请求 Header 匹配\",\n \"header_name\": \"Header 名称\",\n \"header_value\": \"Header 值\",\n \"add_header\": \"添加 Header\",\n \"match\": \"必须匹配 (match)\",\n \"notMatch\": \"不得匹配 (not-match)\",\n \"exist\": \"必须存在 (exist)\",\n \"notExist\": \"不得存在 (not-exist)\",\n \"condition_path\": \"匹配路径\",\n \"condition_value\": \"匹配值\",\n \"add_condition\": \"添加条件\",\n \"value_type_string\": \"字符串\",\n \"value_type_number\": \"数字\",\n \"value_type_boolean\": \"布尔\",\n \"value_type_json\": \"JSON\",\n \"value_string\": \"字符串值\",\n \"value_number\": \"数字值 (如 0.7)\",\n \"value_boolean\": \"true 或 false\",\n \"value_json\": \"JSON 值\",\n \"value_raw_json\": \"原始 JSON 片段,如 true、123、\\\"high\\\" 或 {\\\"type\\\":\\\"object\\\"}\",\n \"value_default\": \"值\",\n \"boolean_true\": \"true\",\n \"boolean_false\": \"false\"\n },\n \"validation\": {\n \"validation_blocked\": \"请先修复表单校验错误再保存\",\n \"port_range\": \"请输入 1 到 65535 之间的有效端口\",\n \"non_negative_integer\": \"请输入非负整数\",\n \"integer\": \"请输入整数\",\n \"integer_range_1_3600\": \"请输入 1 到 3600 之间的整数\",\n \"payload_invalid_number\": \"请输入有效数字\",\n \"payload_invalid_boolean\": \"请选择 true 或 false\",\n \"payload_invalid_json\": \"请输入有效的 JSON\"\n },\n \"common\": {\n \"edit\": \"编辑\",\n \"delete\": \"删除\",\n \"cancel\": \"取消\",\n \"update\": \"更新\",\n \"add\": \"添加\"\n }\n }\n },\n \"quota_management\": {\n \"title\": \"配额管理\",\n \"description\": \"集中查看 OAuth 额度与剩余情况\",\n \"refresh_files\": \"刷新认证文件\",\n \"refresh_files_and_quota\": \"刷新认证文件&额度\",\n \"refresh_all_credentials\": \"刷新全部凭证\",\n \"card_idle_hint\": \"请使用顶部“刷新全部凭证”按钮获取最新额度。\"\n },\n \"plugin_management\": {\n \"title\": \"插件管理\",\n \"description\": \"查看已发现和已注册的插件,管理实例开关、配置字段和资源入口。\",\n \"refresh\": \"刷新\",\n \"load_failed\": \"加载插件失败\",\n \"config_load_failed\": \"读取插件配置失败\",\n \"config_not_found\": \"无法读取插件配置,后端未找到该插件。\",\n \"unsupported_backend\": \"当前后端未暴露插件管理 API。请使用包含插件管理接口的新后端构建,并重启服务。\",\n \"runtime_unavailable_title\": \"插件运行时不可用\",\n \"runtime_unavailable_desc\": \"当前 plugins.enabled 为 true,但服务端返回 x-cpa-support-plugin: 0。当前二进制不包含插件运行时支持,因此插件管理和商店操作继续锁定。请部署适用于当前平台且包含插件运行时的 Core 构建并重启后端;Linux 环境通常需要启用 CGO 并使用兼容的 libc。若不计划使用插件,则关闭 plugins.enabled。\",\n \"runtime_probe_failed_desc\": \"当前 plugins.enabled 为 true,但面板既无法通过 x-cpa-support-plugin 确认运行时能力,也无法通过插件 API 完成兼容探测。插件操作继续锁定。请检查后端构建及反向代理/CORS 的 header 暴露,然后重新连接。\",\n \"runtime_unavailable_action\": \"查看配置\",\n \"global_status\": \"全局状态\",\n \"global_enabled\": \"已启用\",\n \"global_disabled\": \"已停用\",\n \"global_disabled_hint\": \"当前 plugins.enabled 为 false,插件实例即使启用也不会生效。\",\n \"plugins_dir\": \"插件目录\",\n \"discovered\": \"发现插件\",\n \"effective\": \"生效插件\",\n \"search_placeholder\": \"搜索插件 ID、名称、作者或资源...\",\n \"search_label\": \"搜索插件\",\n \"no_plugins\": \"暂无插件\",\n \"no_plugins_desc\": \"未从插件目录或运行时注册表中发现插件。\",\n \"configured\": \"已配置\",\n \"not_configured\": \"未配置\",\n \"registered\": \"已注册\",\n \"not_registered\": \"未注册\",\n \"oauth\": \"OAuth\",\n \"status_effective\": \"生效中\",\n \"status_inactive\": \"未生效\",\n \"version_label\": \"版本\",\n \"author_label\": \"作者\",\n \"path_label\": \"路径\",\n \"edit_config\": \"编辑配置\",\n \"open_resource\": \"打开资源\",\n \"open_repository\": \"打开仓库\",\n \"config_title\": \"配置 {{name}}\",\n \"base_settings\": \"基础设置\",\n \"enabled\": \"启用\",\n \"enabled_hint\": \"控制 plugins.configs 中该插件实例的 enabled 字段。\",\n \"priority\": \"优先级\",\n \"config_fields\": \"配置字段\",\n \"no_config_fields\": \"该插件没有声明可视化配置字段。\",\n \"select_placeholder\": \"请选择\",\n \"array_item_placeholder\": \"输入数组项\",\n \"add_array_item\": \"添加数组项\",\n \"remove_array_item\": \"删除数组项\",\n \"delete_plugin\": \"删除\",\n \"delete_confirm_title\": \"删除插件\",\n \"delete_confirm_message\": \"确定删除 {{name}}({{id}})吗?这会移除本地插件文件和已保存配置。\",\n \"delete_success\": \"插件已删除\",\n \"delete_failed\": \"插件删除失败\",\n \"delete_restart_required\": \"已加载的插件需要重启后端后才能移除。\",\n \"toggle_success\": \"插件状态已更新\",\n \"toggle_failed\": \"插件状态更新失败\",\n \"runtime_pending\": \"插件变更已保存,但运行时状态仍在等待更新。请稍后刷新或检查后端日志。\",\n \"save_success\": \"插件配置已保存\",\n \"save_failed\": \"插件配置保存失败\",\n \"validation_failed\": \"请先修复插件配置表单错误\",\n \"invalid_priority\": \"请输入整数优先级\",\n \"invalid_number\": \"请输入有效数字\",\n \"invalid_integer\": \"请输入有效整数\",\n \"invalid_json\": \"请输入有效 JSON\",\n \"expected_array\": \"请输入 JSON 数组\",\n \"expected_object\": \"请输入 JSON 对象\",\n \"invalid_enum\": \"请选择声明的枚举值\"\n },\n \"plugin_store\": {\n \"title\": \"插件商店\",\n \"description\": \"浏览插件注册表,为当前后端安装或更新插件。\",\n \"description_show_more\": \"展开描述\",\n \"description_show_less\": \"收起描述\",\n \"source_name\": \"来源:{{source}}\",\n \"cli_proxy_api_source\": \"CLIProxyAPI源\",\n \"refresh\": \"刷新\",\n \"retry\": \"重试\",\n \"load_failed\": \"插件商店加载失败\",\n \"unsupported_backend\": \"当前后端未暴露插件商店 API。请使用包含插件商店接口的新后端构建,并重启服务。\",\n \"registry_failed\": \"插件注册表请求失败\",\n \"global_status\": \"全局状态\",\n \"global_enabled\": \"已启用\",\n \"global_disabled\": \"已停用\",\n \"global_disabled_hint\": \"当前 plugins.enabled 为 false,已安装的插件不会生效。\",\n \"plugins_dir\": \"插件目录\",\n \"stat_available\": \"可用插件\",\n \"search_placeholder\": \"搜索插件 ID、名称、作者或标签...\",\n \"search_label\": \"搜索插件商店\",\n \"filter_label\": \"按安装状态筛选\",\n \"filter_all\": \"全部\",\n \"filter_installed\": \"已安装\",\n \"filter_not_installed\": \"未安装\",\n \"filter_updates\": \"可更新\",\n \"badge_installed\": \"已安装\",\n \"badge_update\": \"可更新\",\n \"badge_effective\": \"生效中\",\n \"version_arrow\": \"v{{from}} → v{{to}}\",\n \"install_type\": \"安装方式:{{type}}\",\n \"platforms\": \"平台:{{platforms}}\",\n \"auth_required\": \"需要认证\",\n \"auth_configured\": \"认证已配置\",\n \"auth_required_hint\": \"安装该来源或制品 URL 前,请先配置 plugins.store-auth\",\n \"source_errors_title\": \"部分插件源加载失败\",\n \"install\": \"安装\",\n \"update\": \"更新\",\n \"manage\": \"管理\",\n \"install_confirm_title\": \"安装插件\",\n \"install_confirm_message\": \"将从插件注册表下载 {{target}} 并安装到本地插件目录,是否继续?\",\n \"update_confirm_title\": \"更新插件\",\n \"update_confirm_message\": \"将下载并安装 {{target}},是否继续?\",\n \"install_version_label\": \"版本\",\n \"install_version_latest\": \"最新版本\",\n \"install_version_latest_mode\": \"最新稳定版\",\n \"install_version_latest_hint\": \"安装时由后端解析。当前列表版本:{{version}}。\",\n \"install_version_release_mode\": \"选择 Release\",\n \"install_version_release_hint\": \"从 GitHub Releases 读取可安装标签。\",\n \"install_version_manual_mode\": \"手动 Release 标签\",\n \"install_version_manual_hint\": \"仅在自动加载 Release 不可用时使用。\",\n \"install_versions_loading\": \"正在加载 GitHub Releases...\",\n \"install_versions_load_failed\": \"Release 版本加载失败\",\n \"install_version_non_github\": \"该插件仓库不是 GitHub 仓库\",\n \"install_versions_empty\": \"没有找到可选择的 Release。\",\n \"install_versions_only_prerelease\": \"只有预发布版本可用。显示预发布后才能选择。\",\n \"install_version_release_select\": \"选择 Release 版本\",\n \"install_version_release_placeholder\": \"选择 Release 版本\",\n \"install_version_prerelease_badge\": \"预发布\",\n \"install_version_assets_count\": \"{{count}} 个制品\",\n \"install_version_show_prerelease\": \"显示预发布版本\",\n \"install_version_manual_placeholder\": \"例如 v0.1.4\",\n \"install_version_manual_error\": \"Release 标签只能包含字母、数字、点、下划线、加号和连字符;不能包含空格或斜杠。\",\n \"install_version_current_selected\": \"{{version}} 已安装,请选择其他版本。\",\n \"install_version_releases_link\": \"查看 GitHub Releases\",\n \"install_success\": \"插件安装成功\",\n \"update_success\": \"插件更新成功\",\n \"install_failed\": \"插件安装失败\",\n \"update_failed\": \"插件更新失败\",\n \"status_pending\": \"插件文件已更新,但本地状态尚未刷新。请稍后刷新或检查后端日志。\",\n \"registration_pending\": \"插件文件已更新,但运行时注册仍在等待完成。请稍后刷新或检查后端日志。\",\n \"restart_required_notice\": \"需要重启服务才能加载新的插件版本\",\n \"restart_required_banner\": \"以下插件需重启服务后才能应用新版本:{{plugins}}\",\n \"open_repository\": \"打开仓库\",\n \"open_homepage\": \"打开主页\",\n \"no_plugins\": \"注册表为空\",\n \"no_plugins_desc\": \"插件注册表未返回任何插件。\",\n \"no_matches\": \"没有匹配的插件\",\n \"no_matches_desc\": \"当前搜索或筛选条件下没有插件。\",\n \"clear_filters\": \"清除筛选\",\n \"security_banner_title\": \"第三方插件以后端完整权限运行\",\n \"security_banner_text\": \"插件会在代理服务内部执行代码,可读取你的凭据与流量。请仅安装你信任的插件——尤其要警惕任何并非由官方组织 router-for-me 发布的插件。\",\n \"badge_untrusted\": \"第三方\",\n \"gate_title\": \"安装 {{name}}\",\n \"gate_title_update\": \"更新 {{name}}\",\n \"gate_warning\": \"如果你不阅读以下内容,可能会发生意料之外的危险后果。\",\n \"gate_effect_runs_code\": \"该插件将在您的代理后端内运行第三方未认证代码。系统无法对其行为进行隔离或审计,其具备访问您的敏感凭据、网络请求与响应数据的潜在权限。\",\n \"gate_effect_no_review\": \"本插件并非由官方组织 router-for-me 发布或审核。官方不对该插件的稳定性、安全性、合规性以及后续版本的任意行为变更承担任何明示或暗示的担保责任。\",\n \"gate_effect_restart\": \"安装会修改本地插件目录,并可能需要重启服务才能生效。\",\n \"gate_untrusted_alert\": \"该插件并非来自官方组织 router-for-me。请仅在你完全信任其作者与来源时继续。\",\n \"gate_repository_label\": \"仓库\",\n \"gate_source_label\": \"来源\",\n \"gate_step1_action\": \"我要安装此插件\",\n \"gate_step2_action\": \"我已阅读并理解上述风险\",\n \"gate_step3_prompt\": \"如需确认,请在下方输入框中键入 “{{token}}”\",\n \"gate_step3_action\": \"安装此插件\",\n \"gate_step3_hint\": \"请输入上方显示的完整标识以启用安装。\"\n },\n \"plugin_resource\": {\n \"title\": \"插件页面\",\n \"page_count\": \"{{count}} 个页面\",\n \"load_failed\": \"加载插件页面失败\",\n \"unavailable\": \"插件页面不可用\",\n \"not_found\": \"未找到插件页面\",\n \"not_found_desc\": \"该插件页面未在当前后端插件列表中声明。\",\n \"empty_src\": \"插件页面地址为空\",\n \"empty_src_desc\": \"该插件菜单未提供可嵌入的页面地址。\"\n },\n \"system_info\": {\n \"title\": \"管理中心信息\",\n \"about_title\": \"CLI Proxy API Management Center\",\n \"connection_status_title\": \"连接状态\",\n \"api_status_label\": \"API 状态:\",\n \"config_status_label\": \"配置状态:\",\n \"last_update_label\": \"最后更新:\",\n \"cache_data\": \"缓存数据\",\n \"real_time_data\": \"实时数据\",\n \"not_loaded\": \"未加载\",\n \"seconds_ago\": \"秒前\",\n \"models_title\": \"可用模型列表\",\n \"models_desc\": \"展示 /models 返回的模型,并自动使用服务器保存的 API Key 进行鉴权。\",\n \"models_loading\": \"正在加载可用模型...\",\n \"models_empty\": \"未从 /models 获取到模型数据\",\n \"models_error\": \"获取模型列表失败\",\n \"models_count\": \"可用模型 {{count}} 个\",\n \"version_check_title\": \"版本检查\",\n \"version_check_desc\": \"调用 /latest-version 接口比对服务器版本,提示是否有可用更新。\",\n \"version_current_label\": \"当前版本\",\n \"version_latest_label\": \"最新版本\",\n \"version_check_button\": \"检查更新\",\n \"version_check_idle\": \"点击检查更新\",\n \"version_checking\": \"正在检查最新版本...\",\n \"version_update_available\": \"有新版本可用:{{version}}\",\n \"version_is_latest\": \"当前已是最新版本\",\n \"version_check_error\": \"检查更新失败\",\n \"version_current_missing\": \"未获取到服务器版本号,暂无法比对\",\n \"version_unknown\": \"未知\",\n \"quick_links_title\": \"快捷链接\",\n \"quick_links_desc\": \"访问项目仓库和文档,获取帮助和更新。\",\n \"link_main_repo\": \"主程序仓库\",\n \"link_main_repo_desc\": \"CLI Proxy API 核心程序源代码\",\n \"link_webui_repo\": \"WebUI 仓库\",\n \"link_webui_repo_desc\": \"管理中心前端界面源代码\",\n \"link_docs\": \"使用教程\",\n \"link_docs_desc\": \"配置指南和使用说明\",\n \"clear_login_title\": \"本地登录信息\",\n \"clear_login_desc\": \"清理本地保存的登录信息并退出登录。\",\n \"clear_login_button\": \"清理登录信息\",\n \"clear_login_confirm\": \"确认清理本地登录信息并退出登录?\"\n },\n \"notification\": {\n \"debug_updated\": \"调试设置已更新\",\n \"proxy_updated\": \"代理设置已更新\",\n \"proxy_cleared\": \"代理设置已清空\",\n \"retry_updated\": \"重试设置已更新\",\n \"quota_switch_project_updated\": \"项目切换设置已更新\",\n \"quota_switch_preview_updated\": \"预览模型切换设置已更新\",\n \"logging_to_file_updated\": \"日志记录设置已更新\",\n \"logs_max_total_size_updated\": \"日志容量设置已更新\",\n \"request_log_updated\": \"请求日志设置已更新\",\n \"force_model_prefix_updated\": \"模型前缀设置已更新\",\n \"ws_auth_updated\": \"WebSocket 鉴权设置已更新\",\n \"routing_strategy_updated\": \"路由策略已更新\",\n \"login_storage_cleared\": \"本地登录信息已清理\",\n \"api_key_added\": \"API密钥添加成功\",\n \"api_key_updated\": \"API密钥更新成功\",\n \"api_key_deleted\": \"API密钥删除成功\",\n \"api_key_invalid_chars\": \"API密钥仅支持英文字母、数字和符号\",\n \"gemini_key_added\": \"Gemini密钥添加成功\",\n \"gemini_key_updated\": \"Gemini密钥更新成功\",\n \"gemini_key_deleted\": \"Gemini密钥删除成功\",\n \"gemini_multi_input_required\": \"请先输入至少一个Gemini密钥\",\n \"gemini_multi_failed\": \"Gemini密钥批量添加失败\",\n \"gemini_multi_summary\": \"Gemini批量添加完成:成功 {{success}},跳过 {{skipped}},失败 {{failed}}\",\n \"codex_config_added\": \"Codex配置添加成功\",\n \"codex_config_updated\": \"Codex配置更新成功\",\n \"codex_config_deleted\": \"Codex配置删除成功\",\n \"codex_base_url_required\": \"请填写Codex Base URL\",\n \"claude_config_added\": \"Claude配置添加成功\",\n \"claude_config_updated\": \"Claude配置更新成功\",\n \"claude_config_deleted\": \"Claude配置删除成功\",\n \"vertex_config_added\": \"Vertex配置添加成功\",\n \"vertex_config_updated\": \"Vertex配置更新成功\",\n \"vertex_config_deleted\": \"Vertex配置删除成功\",\n \"config_enabled\": \"配置已启用\",\n \"config_disabled\": \"配置已停用\",\n \"field_required\": \"必填字段不能为空\",\n \"openai_provider_required\": \"请填写提供商名称和Base URL\",\n \"openai_provider_added\": \"OpenAI提供商添加成功\",\n \"openai_provider_updated\": \"OpenAI提供商更新成功\",\n \"openai_provider_deleted\": \"OpenAI提供商删除成功\",\n \"openai_model_name_required\": \"请填写模型名称\",\n \"openai_test_url_required\": \"请先填写有效的 Base URL 以进行测试\",\n \"openai_test_key_required\": \"请至少填写一个 API 密钥以进行测试\",\n \"openai_test_model_required\": \"请选择要测试的模型\",\n \"data_refreshed\": \"数据刷新成功\",\n \"connection_required\": \"请先建立连接\",\n \"refresh_failed\": \"刷新失败\",\n \"update_failed\": \"更新失败\",\n \"add_failed\": \"添加失败\",\n \"delete_failed\": \"删除失败\",\n \"upload_failed\": \"上传失败\",\n \"download_failed\": \"下载失败\",\n \"login_failed\": \"登录失败\",\n \"please_enter\": \"请输入\",\n \"please_fill\": \"请填写\",\n \"provider_name_url\": \"提供商名称和Base URL\",\n \"api_key\": \"API密钥\",\n \"gemini_api_key\": \"Gemini API密钥\",\n \"codex_api_key\": \"Codex API密钥\",\n \"claude_api_key\": \"Claude API密钥\",\n \"commercial_mode_restart_required\": \"商业模式开关已变更,请重启服务后生效\",\n \"copy_failed\": \"复制失败\",\n \"link_copied\": \"已复制\"\n },\n \"language\": {\n \"switch\": \"语言\",\n \"chinese\": \"中文\",\n \"chinese_tw\": \"繁體中文(台灣)\",\n \"english\": \"English\",\n \"russian\": \"Русский\"\n },\n \"theme\": {\n \"switch\": \"主题\",\n \"light\": \"羊毛纸\",\n \"white\": \"纯白\",\n \"dark\": \"暗色\",\n \"switch_to_light\": \"切换到羊毛纸模式\",\n \"switch_to_dark\": \"切换到暗色模式\",\n \"auto\": \"跟随系统\"\n },\n \"sidebar\": {\n \"primary_navigation\": \"主导航\",\n \"toggle_expand\": \"展开侧边栏\",\n \"toggle_collapse\": \"收起侧边栏\"\n },\n \"footer\": {\n \"api_version\": \"CLI Proxy API 版本\",\n \"build_date\": \"构建时间\",\n \"version\": \"管理中心版本\",\n \"author\": \"作者\"\n },\n \"providersPage\": {\n \"header\": {\n \"title\": \"AI 提供商\",\n \"activeResources\": \"{{active}}/{{total}} 个活跃资源\",\n \"providerFamilies\": \"{{count}} 个提供商家族\",\n \"updatedAt\": \"更新于 {{time}}\",\n \"issueCount\": \"{{count}} 个问题\"\n },\n \"actions\": {\n \"refresh\": \"刷新\",\n \"syncing\": \"同步中\",\n \"new\": \"新建\",\n \"edit\": \"编辑\",\n \"view\": \"查看\",\n \"delete\": \"删除\",\n \"clear\": \"清空\",\n \"cancel\": \"取消\",\n \"save\": \"保存\",\n \"create\": \"创建\",\n \"enable\": \"启用\",\n \"disable\": \"停用\"\n },\n \"categories\": {\n \"title\": \"提供商\",\n \"activeCount\": \"{{active}}/{{total}} 活跃\"\n },\n \"providerNames\": {\n \"gemini\": \"Gemini\",\n \"codex\": \"Codex\",\n \"xai\": \"xAI\",\n \"claude\": \"Claude\",\n \"vertex\": \"Vertex\",\n \"openaiCompatibility\": \"OpenAI 兼容\",\n \"claudeApi\": \"ClaudeAPI\",\n \"code0\": \"Code0\",\n \"fennoAI\": \"FennoAI\",\n \"qiniuCloud\": \"七牛云\"\n },\n \"table\": {\n \"key\": \"密钥\",\n \"baseUrl\": \"服务地址\",\n \"prefix\": \"前缀\",\n \"models\": \"模型/请求头\",\n \"status\": \"状态\",\n \"actions\": \"操作\",\n \"metrics\": {\n \"models\": \"模型\",\n \"keys\": \"密钥\",\n \"headers\": \"请求头\"\n },\n \"stats\": {\n \"recent\": \"近期\",\n \"fullUsage\": \"完整统计\",\n \"tokens\": \"Token\",\n \"cost\": \"花费\"\n },\n \"websocketsTag\": \"WebSockets\",\n \"cloakTag\": \"Cloak\",\n \"empty\": \"尚未添加配置,点击右上角新建。\",\n \"filterPlaceholder\": \"搜索密钥、地址、前缀…\",\n \"description\": \"在 {{route}} 下管理资源\",\n \"providerIssue\": \"此提供商存在问题\"\n },\n \"status\": {\n \"active\": \"活跃\",\n \"disabled\": \"已停用\",\n \"notSet\": \"未设置\",\n \"none\": \"无\",\n \"notConfigured\": \"未配置\",\n \"defaultSuffix\": \"(默认)\"\n },\n \"detail\": {\n \"title\": \"详情\",\n \"metadataTitle\": \"元数据\",\n \"fields\": {\n \"identifier\": \"标识\",\n \"baseUrl\": \"服务地址\",\n \"proxyUrl\": \"代理 URL\",\n \"prefix\": \"前缀\",\n \"models\": \"模型数\",\n \"headers\": \"请求头数\",\n \"authIndex\": \"Auth Index\",\n \"excludedModels\": \"排除模型数\",\n \"apiKeyEntries\": \"密钥条目数\"\n }\n },\n \"form\": {\n \"createEyebrow\": \"新建\",\n \"editEyebrow\": \"编辑\",\n \"name\": \"名称\",\n \"apiKey\": \"API 密钥\",\n \"apiKeyCreatePlaceholder\": \"输入 API 密钥\",\n \"apiKeyEditPlaceholder\": \"留空表示不修改\",\n \"baseUrl\": \"服务地址\",\n \"baseUrlRequiredHint\": \"此提供商要求填写服务地址\",\n \"proxyUrl\": \"代理 URL\",\n \"prefix\": \"前缀\",\n \"priority\": \"优先级\",\n \"disabled\": \"停用此条目\",\n \"disabledHint\": \"停用后不会被网关使用\",\n \"websockets\": \"启用 WebSockets\",\n \"testModel\": \"测试模型\",\n \"testModelClaudeHint\": \"仅用于连通性测试,不会被保存\",\n \"testModelAutoWith\": \"自动 · {{name}}\",\n \"testModelAutoEmpty\": \"自动(尚未添加模型)\",\n \"testModelCustom\": \"{{name}}(自定义)\",\n \"modelsSection\": \"自定义模型\",\n \"addModel\": \"添加模型\",\n \"modelNamePlaceholder\": \"上游模型名称\",\n \"modelAliasPlaceholder\": \"路由别名(可选)\",\n \"modelDisplayNamePlaceholder\": \"显示名称(可选)\",\n \"headersSection\": \"请求头\",\n \"addHeader\": \"添加请求头\",\n \"headers\": \"请求头\",\n \"headersHint\": \"每行一条,格式 Key: Value\",\n \"excludedSection\": \"排除模型\",\n \"excludedHint\": \"每行一个模型名,匹配后将不会被路由到此提供商\",\n \"cloakSection\": \"Cloak 配置\",\n \"cloakMode\": \"模式\",\n \"cloakStrict\": \"严格模式\",\n \"cloakSensitiveWords\": \"敏感词(每行一个)\",\n \"apiKeyEntriesSection\": \"API 密钥条目\",\n \"apiKeyEntry\": \"密钥 #{{index}}\",\n \"addApiKeyEntry\": \"添加密钥条目\",\n \"showApiKey\": \"显示密钥\",\n \"hideApiKey\": \"隐藏密钥\",\n \"disableCooling\": \"禁用冷却调度\",\n \"disableCoolingHint\": \"仅对当前凭据或提供商禁用失败后的冷却窗口\",\n \"modelEntry\": \"模型 #{{index}}\",\n \"modelImage\": \"允许图片端点\",\n \"modelImageHint\": \"允许该模型用于 /v1/images/generations 和 /v1/images/edits\",\n \"thinkingConfig\": \"Thinking 配置(JSON)\",\n \"thinkingConfigHint\": \"可配置 levels、min、max、zero_allowed、dynamic_allowed\",\n \"cloakCacheUserId\": \"缓存 user_id\",\n \"cloakCacheUserIdHint\": \"按 API key 复用 Claude cloak 生成的 user_id\",\n \"experimentalCchSigning\": \"实验性 CCH 签名\",\n \"experimentalCchSigningHint\": \"对 cloaked Claude /v1/messages 最终请求体启用 CCH 签名\",\n \"validation\": {\n \"nameRequired\": \"名称必填\",\n \"apiKeyRequired\": \"至少填写一个 API 密钥\",\n \"baseUrlRequired\": \"服务地址必填\"\n },\n \"showAllEntries\": \"显示全部({{count}})\",\n \"showFewerEntries\": \"收起\",\n \"proxyBadge\": \"代理\",\n \"modelBadgeImage\": \"图片\",\n \"modelBadgeThinking\": \"Thinking\"\n },\n \"delete\": {\n \"title\": \"删除资源\",\n \"confirm\": \"确定要删除 {{name}} 吗?此操作不可撤销。\"\n },\n \"toast\": {\n \"created\": \"创建成功\",\n \"updated\": \"更新成功\",\n \"deleted\": \"删除成功\",\n \"enabled\": \"已启用\",\n \"disabled\": \"已停用\",\n \"toggleFailed\": \"更新状态失败\"\n },\n \"unsavedChanges\": {\n \"title\": \"确定丢弃未保存的修改吗?\",\n \"message\": \"当前表单还有未保存的修改,关闭后会被丢弃。\",\n \"discard\": \"丢弃修改\",\n \"keepEditing\": \"继续编辑\"\n },\n \"connectivity\": {\n \"test\": \"测试\",\n \"testAll\": \"全部测试\",\n \"success\": \"连通\",\n \"baseUrlRequired\": \"服务地址必填\",\n \"endpointInvalid\": \"服务地址不合法\",\n \"apiKeyRequired\": \"API 密钥必填\",\n \"modelRequired\": \"测试模型必填\",\n \"timeout\": \"请求超过 {{seconds}} 秒\",\n \"requestFailed\": \"请求失败\"\n },\n \"discovery\": {\n \"openButton\": \"从端点拉取\",\n \"searchPlaceholder\": \"搜索模型\",\n \"reload\": \"重新加载\",\n \"loading\": \"正在加载模型…\",\n \"empty\": \"端点未返回任何模型\",\n \"notLoaded\": \"点击重新加载以获取模型\",\n \"selectAll\": \"全选\",\n \"clearAll\": \"清空选择\",\n \"selectedCount\": \"{{selected}} / {{total}}\",\n \"alreadyAdded\": \"已添加\",\n \"close\": \"关闭\",\n \"apply\": \"应用 ({{count}})\"\n },\n \"toolbar\": {\n \"sortBy\": \"排序\",\n \"sort\": {\n \"name\": \"名称\",\n \"priority\": \"优先级\",\n \"recentSuccess\": \"近期成功数\",\n \"directionAsc\": \"升序\",\n \"directionDesc\": \"降序\"\n },\n \"filter\": {\n \"allModels\": \"全部模型\",\n \"selectedModels\": \"{{selected}}/{{total}} 个模型\",\n \"selectAll\": \"全选\",\n \"clear\": \"清空\",\n \"empty\": \"暂无已配置模型\"\n }\n },\n \"modelCatalog\": {\n \"notLoaded\": \"未加载\"\n },\n \"sponsor\": {\n \"protocolSummary\": \"Anthropic / OpenAI / Gemini / Codex API (Responses)\",\n \"detailHint\": \"{{provider}} 会按协议分别写入对应的 API Key 配置,这里只做聚合管理。\",\n \"apiKeyHint\": \"此 Key 只会写入当前选择的分组/协议配置。\",\n \"aggregationConflict\": \"此聚合提供商包含多条后端配置或多个 OpenAI 密钥。为避免数据丢失,请在源码配置中编辑。\",\n \"partialMutationWarning\": \"操作失败,但一个或多个协议可能已更新。已重新读取最新配置,请检查后再重试。\",\n \"groupedKeysTitle\": \"分组 Key\",\n \"groupedKeysHint\": \"平台创建 Key 时可能需要选择分组,这里每个分组 Key 只管理一个协议,模型也只从该协议拉取。\",\n \"groupedKey\": \"分组 Key #{{index}}\",\n \"addGroupedKey\": \"添加分组 Key\",\n \"removeGroupedKey\": \"删除分组 Key\",\n \"protocol\": \"分组/协议\",\n \"protocolHint\": \"请选择此 Key 对应的分组/协议。\",\n \"protocolEndpoint\": \"当前协议地址\",\n \"urlMode\": \"{{provider}} URL\",\n \"urlHint\": \"不同 URL 的使用规范一致,保存时只会写入当前分组协议对应地址。\",\n \"urlOptions\": {\n \"standard\": \"普通 URL\",\n \"direct\": \"专线直连 URL\",\n \"domestic\": \"国内线路\",\n \"overseas\": \"海外线路\"\n },\n \"urlOptionDescriptions\": {\n \"domestic\": \"面向中国大陆用户和部署在中国大陆网络环境中的业务,通常可获得更低延迟。\",\n \"overseas\": \"面向海外部署、跨境访问或需要访问境外模型的业务。\"\n },\n \"modelsTitle\": \"协议模型配置\",\n \"modelsHint\": \"可分别限制或别名映射 Codex API、Anthropic、Gemini 与 OpenAI 兼容入口的模型。\",\n \"protocolModels\": {\n \"codex\": \"Codex API 模型\",\n \"anthropic\": \"Anthropic 模型\",\n \"gemini\": \"Gemini 模型\",\n \"openai\": \"OpenAI 兼容模型\"\n },\n \"protocolModelHints\": {\n \"codex\": \"写入 Codex API 配置的 models,可从 /v1/models 拉取后设置别名。\",\n \"anthropic\": \"写入 Anthropic 配置的 models,可从 /v1/models 拉取后设置别名。\",\n \"gemini\": \"写入 Gemini 配置的 models,可从 /v1beta/models 拉取后设置别名。\",\n \"openai\": \"写入 OpenAI 兼容配置的 models,可从 /models 拉取后设置别名。\"\n },\n \"validation\": {\n \"keyRequired\": \"请为每个分组 Key 填写 API Key。\",\n \"protocolDuplicate\": \"每个协议只能添加一个分组 Key。\"\n },\n \"openaiEntries\": \"OpenAI 兼容密钥数\",\n \"codexEntries\": \"Codex API 密钥数\",\n \"anthropicEntries\": \"Anthropic 密钥数\",\n \"geminiEntries\": \"Gemini 密钥数\",\n \"protocols\": {\n \"anthropic\": \"Anthropic\",\n \"openai\": \"OpenAI 兼容\",\n \"gemini\": \"Gemini\",\n \"codexResponses\": \"Codex API (Responses)\"\n }\n }\n }\n}\n"}, "c2241c78c404507afc886e183ead3e84dbb38c52": {"t": 1785846961.540875, "n": 100161, "h": "fc2fa38e4a771df8", "c": "{\n \"common\": {\n \"login\": \"登录\",\n \"logout\": \"登出\",\n \"back\": \"返回\",\n \"cancel\": \"取消\",\n \"confirm\": \"确认\",\n \"leave\": \"离开\",\n \"stay\": \"继续编辑\",\n \"save\": \"保存\",\n \"delete\": \"删除\",\n \"edit\": \"编辑\",\n \"add\": \"添加\",\n \"update\": \"更新\",\n \"refresh\": \"刷新\",\n \"close\": \"关闭\",\n \"success\": \"成功\",\n \"error\": \"错误\",\n \"info\": \"信息\",\n \"warning\": \"警告\",\n \"loading\": \"加载中...\",\n \"connecting\": \"连接中...\",\n \"connected\": \"已连接\",\n \"disconnected\": \"未连接\",\n \"connecting_status\": \"连接中\",\n \"connected_status\": \"已连接\",\n \"disconnected_status\": \"未连接\",\n \"yes\": \"是\",\n \"no\": \"否\",\n \"not_set\": \"未设置\",\n \"optional\": \"可选\",\n \"required\": \"必填\",\n \"api_key\": \"密钥\",\n \"base_url\": \"地址\",\n \"prefix\": \"前缀\",\n \"proxy_url\": \"代理\",\n \"priority\": \"优先级\",\n \"alias\": \"别名\",\n \"failure\": \"失败\",\n \"unknown_error\": \"未知错误\",\n \"quota_update_required\": \"请更新 CPA 版本或检查更新\",\n \"quota_check_credential\": \"请检查凭证状态\",\n \"copy\": \"复制\",\n \"expand\": \"展开\",\n \"collapse\": \"收起\",\n \"status\": \"状态\",\n \"action\": \"操作\",\n \"custom_headers_label\": \"自定义请求头\",\n \"custom_headers_hint\": \"可选,设置需要附带到请求中的 HTTP 头,名称和值均不能为空。\",\n \"custom_headers_add\": \"添加请求头\",\n \"custom_headers_key_placeholder\": \"Header 名称,例如 X-Custom-Header\",\n \"custom_headers_value_placeholder\": \"Header 值\",\n \"model_name_placeholder\": \"模型名称,例如 claude-3-5-sonnet-20241022\",\n \"model_alias_placeholder\": \"模型别名 (可选)\",\n \"invalid_provider_index\": \"无效的提供商索引。\",\n \"unsaved_changes_title\": \"未保存的更改\",\n \"unsaved_changes_message\": \"你有未保存的更改,离开后将丢失这些更改。确定要离开吗?\"\n },\n \"title\": {\n \"main\": \"CLI Proxy API Management Center\",\n \"login\": \"CLI Proxy API Management Center\",\n \"abbr\": \"CPAMC\"\n },\n \"splash\": {\n \"title\": \"CLI Proxy API\",\n \"subtitle\": \"管理中心\"\n },\n \"auto_login\": {\n \"title\": \"正在自动登录...\",\n \"message\": \"正在使用本地保存的连接信息尝试连接服务器\"\n },\n \"login\": {\n \"subtitle\": \"请输入连接信息以访问管理界面\",\n \"connection_title\": \"连接地址\",\n \"connection_current\": \"当前地址\",\n \"connection_auto_hint\": \"系统将自动使用当前访问地址进行连接\",\n \"custom_connection_label\": \"自定义连接地址:\",\n \"custom_connection_placeholder\": \"例如: https://example.com:8317\",\n \"custom_connection_hint\": \"默认使用当前访问地址,若需要可手动输入其他地址。\",\n \"use_current_address\": \"使用当前地址\",\n \"remember_password_label\": \"记住密码\",\n \"management_key_label\": \"管理密钥:\",\n \"management_key_placeholder\": \"请输入管理密钥\",\n \"connect_button\": \"连接\",\n \"submit_button\": \"登录\",\n \"submitting\": \"连接中...\",\n \"error_title\": \"登录失败\",\n \"error_backend_detail\": \"后端返回\",\n \"error_required\": \"请填写完整的连接信息\",\n \"error_invalid\": \"连接失败,请检查服务地址、管理接口和管理密钥\",\n \"error_network\": \"网络连接失败,请检查网络或服务器地址\",\n \"error_timeout\": \"连接超时,服务器无响应\",\n \"error_unauthorized\": \"认证失败,管理密钥缺失或无效\",\n \"error_forbidden\": \"访问被拒绝,远程管理未启用、管理密钥未配置或 IP 被临时封禁\",\n \"error_not_found\": \"未找到 Management API,请确认服务地址指向 CLIProxyAPI 后端\",\n \"error_server\": \"后端处理管理接口时发生错误,请查看服务日志\",\n \"error_cors\": \"跨域请求被阻止,请检查服务器配置\",\n \"error_ssl\": \"SSL/TLS 证书验证失败\"\n },\n \"header\": {\n \"check_connection\": \"检查连接\",\n \"refresh_all\": \"刷新全部\",\n \"logout\": \"登出\"\n },\n \"connection\": {\n \"title\": \"连接信息\",\n \"server_address\": \"服务器地址:\",\n \"management_key\": \"管理密钥:\",\n \"status\": \"连接状态:\"\n },\n \"nav\": {\n \"dashboard\": \"仪表盘\",\n \"basic_settings\": \"基础设置\",\n \"api_keys\": \"API 密钥\",\n \"ai_providers\": \"AI 提供商\",\n \"auth_files\": \"认证文件\",\n \"oauth\": \"OAuth 登录\",\n \"quota_management\": \"配额管理\",\n \"usage_stats\": \"使用统计\",\n \"plugins\": \"插件管理\",\n \"plugins_runtime_unavailable\": \"插件管理(运行时不可用)\",\n \"plugin_store\": \"插件商店\",\n \"config_management\": \"配置面板\",\n \"logs\": \"日志查看\",\n \"system_info\": \"中心信息\"\n },\n \"nav_groups\": {\n \"operate\": \"运行\",\n \"gateway\": \"网关\",\n \"observe\": \"观测\",\n \"plugin_pages\": \"插件\",\n \"control\": \"控制\"\n },\n \"nav_meta\": {\n \"dashboard\": \"运行总览\",\n \"ai_providers\": \"上游模型路由\",\n \"auth_files\": \"Auth 文件与凭证\",\n \"oauth\": \"OAuth 授权登录\",\n \"quota_management\": \"API Key 与限额\",\n \"usage_stats\": \"完整用量与请求分析\",\n \"plugins\": \"插件启停与配置\",\n \"plugin_store\": \"发现并安装插件\",\n \"logs\": \"请求追踪与排查\",\n \"config_management\": \"网关基础配置\",\n \"system_info\": \"运行与诊断信息\"\n },\n \"dashboard\": {\n \"title\": \"仪表盘\",\n \"subtitle\": \"欢迎使用 CLI Proxy API 管理中心\",\n \"openai_providers\": \"OpenAI 提供商\",\n \"quick_actions\": \"快捷操作\",\n \"current_config\": \"当前配置\",\n \"management_keys\": \"管理密钥\",\n \"provider_keys_detail\": \"G:{{gemini}} C:{{codex}} X:{{xai}} Cl:{{claude}} V:{{vertex}} O:{{openai}} A:{{ampcode}}\",\n \"oauth_credentials\": \"OAuth 凭证\",\n \"edit_settings\": \"编辑设置\",\n \"routing_strategy\": \"路由策略\",\n \"available_models\": \"可用模型\",\n \"available_models_desc\": \"所有提供商的模型总数\",\n \"welcome_back\": \"欢迎回来\",\n \"greeting_morning\": \"早上好\",\n \"greeting_afternoon\": \"下午好\",\n \"greeting_evening\": \"晚上好\",\n \"greeting_night\": \"夜深了\",\n \"caring_morning\": \"新的一天,准备大展身手吧。\",\n \"caring_afternoon\": \"稳步推进中,继续加油。\",\n \"caring_evening\": \"今天辛苦了,收尾工作做好哦。\",\n \"caring_night\": \"夜深了,别忘了早些休息。\",\n \"system_overview\": \"系统概览\"\n },\n \"basic_settings\": {\n \"title\": \"基础设置\",\n \"debug_title\": \"调试模式\",\n \"debug_enable\": \"启用调试模式\",\n \"proxy_title\": \"代理设置\",\n \"proxy_url_label\": \"代理 URL:\",\n \"proxy_url_placeholder\": \"例如: socks5://user:pass@127.0.0.1:1080/\",\n \"proxy_update\": \"更新\",\n \"proxy_clear\": \"清空\",\n \"retry_title\": \"请求重试\",\n \"retry_count_label\": \"重试次数:\",\n \"retry_update\": \"更新\",\n \"quota_title\": \"配额超出行为\",\n \"quota_switch_project\": \"自动切换项目\",\n \"quota_switch_preview\": \"切换到预览模型\",\n \"logging_title\": \"日志记录\",\n \"logging_to_file_enable\": \"启用日志记录到文件\",\n \"logs_max_total_size_title\": \"日志容量限制\",\n \"logs_max_total_size_label\": \"日志总大小上限 (MB):\",\n \"logs_max_total_size_hint\": \"设置为 0 表示不限制。\",\n \"logs_max_total_size_update\": \"更新\",\n \"request_log_title\": \"请求日志\",\n \"request_log_enable\": \"启用请求日志\",\n \"request_log_warning\": \"仅在需要排查问题时开启,日常请保持关闭。\",\n \"force_model_prefix_enable\": \"强制模型前缀\",\n \"ws_auth_title\": \"WebSocket 鉴权\",\n \"ws_auth_enable\": \"启用 /ws/* 鉴权\",\n \"routing_title\": \"路由策略\",\n \"routing_strategy_label\": \"路由策略:\",\n \"routing_strategy_hint\": \"round-robin 为轮询,fill-first 为优先填充。\",\n \"routing_strategy_update\": \"更新\",\n \"routing_strategy_round_robin\": \"round-robin (轮询)\",\n \"routing_strategy_fill_first\": \"fill-first (优先填充)\"\n },\n \"api_keys\": {\n \"title\": \"API 密钥管理\",\n \"proxy_auth_title\": \"代理服务认证密钥\",\n \"add_button\": \"添加密钥\",\n \"empty_title\": \"暂无API密钥\",\n \"empty_desc\": \"点击上方按钮添加第一个密钥\",\n \"item_title\": \"API密钥\",\n \"add_modal_title\": \"添加API密钥\",\n \"add_modal_key_label\": \"API密钥:\",\n \"add_modal_key_placeholder\": \"请输入API密钥\",\n \"edit_modal_title\": \"编辑API密钥\",\n \"edit_modal_key_label\": \"API密钥:\",\n \"delete_confirm\": \"确定要删除这个API密钥吗?\"\n },\n \"ai_providers\": {\n \"title\": \"AI 提供商配置\",\n \"gemini_title\": \"Gemini API 密钥\",\n \"gemini_add_button\": \"添加密钥\",\n \"gemini_empty_title\": \"暂无Gemini密钥\",\n \"gemini_empty_desc\": \"点击上方按钮添加第一个密钥\",\n \"gemini_item_title\": \"Gemini密钥\",\n \"gemini_add_modal_title\": \"添加Gemini API密钥\",\n \"gemini_add_modal_key_label\": \"API密钥\",\n \"gemini_add_modal_key_placeholder\": \"输入 Gemini API 密钥\",\n \"gemini_add_modal_key_hint\": \"逐条输入密钥,可同时指定可选 Base URL。\",\n \"gemini_keys_add_btn\": \"添加密钥\",\n \"gemini_base_url_label\": \"Base URL (可选)\",\n \"gemini_base_url_placeholder\": \"例如: https://generativelanguage.googleapis.com\",\n \"gemini_add_modal_proxy_label\": \"代理 URL (可选):\",\n \"gemini_add_modal_proxy_placeholder\": \"例如: socks5://proxy.example.com:1080\",\n \"gemini_models_label\": \"自定义模型 (可选):\",\n \"gemini_models_hint\": \"为空表示使用全部模型;可填写 name[, alias] 以限制或重命名模型。\",\n \"gemini_models_add_btn\": \"添加模型\",\n \"gemini_models_fetch_button\": \"从 /v1beta/models 获取\",\n \"gemini_models_fetch_title\": \"从 Gemini /v1beta/models 选择模型\",\n \"gemini_models_fetch_hint\": \"按 Gemini API 规范请求 GET /v1beta/models;默认附带 x-goog-api-key(来自 API Key 字段)并合并你配置的自定义请求头。\",\n \"gemini_models_fetch_url_label\": \"请求地址\",\n \"gemini_models_fetch_refresh\": \"重新获取\",\n \"gemini_models_fetch_loading\": \"正在从 Gemini /v1beta/models 获取模型列表...\",\n \"gemini_models_fetch_empty\": \"未获取到模型,请检查 Base URL、API Key 或请求头。\",\n \"gemini_models_fetch_error\": \"获取 Gemini 模型失败\",\n \"gemini_models_fetch_apply\": \"添加所选模型\",\n \"model_discovery_select_visible\": \"全选当前列表\",\n \"model_discovery_clear_selection\": \"清空已选\",\n \"model_discovery_selected_count\": \"已选 {{count}} 项\",\n \"gemini_models_search_label\": \"搜索模型\",\n \"gemini_models_search_placeholder\": \"按名称、别名或描述筛选\",\n \"gemini_models_search_empty\": \"没有匹配的模型,请更换关键字试试。\",\n \"gemini_models_fetch_added\": \"已添加 {{count}} 个新模型\",\n \"gemini_models_count\": \"模型数量\",\n \"gemini_edit_modal_title\": \"编辑Gemini API密钥\",\n \"gemini_edit_modal_key_label\": \"API密钥:\",\n \"gemini_delete_confirm\": \"确定要删除这个Gemini密钥吗?\",\n \"excluded_models_label\": \"排除的模型 (可选):\",\n \"excluded_models_placeholder\": \"用逗号或换行分隔,例如: gemini-1.5-pro, gemini-1.5-flash\",\n \"excluded_models_hint\": \"留空表示不过滤;保存时会自动去重并忽略空白。\",\n \"excluded_models_count\": \"排除 {{count}} 个模型\",\n \"prefix_label\": \"前缀 (可选):\",\n \"prefix_placeholder\": \"例如: team-a\",\n \"prefix_hint\": \"设置后可用 prefix/<model> 选择该条目。\",\n \"priority_label\": \"优先级 (可选):\",\n \"priority_hint\": \"数值越大优先级越高;留空表示默认(0)。\",\n \"config_toggle_label\": \"启用\",\n \"config_disabled_badge\": \"已停用\",\n \"codex_title\": \"Codex API 配置\",\n \"codex_add_button\": \"添加配置\",\n \"codex_empty_title\": \"暂无Codex配置\",\n \"codex_empty_desc\": \"点击上方按钮添加第一个配置\",\n \"codex_item_title\": \"Codex配置\",\n \"codex_add_modal_title\": \"添加Codex API配置\",\n \"codex_add_modal_key_label\": \"API密钥:\",\n \"codex_add_modal_key_placeholder\": \"请输入Codex API密钥\",\n \"codex_add_modal_url_label\": \"Base URL (必填):\",\n \"codex_add_modal_url_placeholder\": \"例如: https://api.example.com\",\n \"codex_add_modal_proxy_label\": \"代理 URL (可选):\",\n \"codex_add_modal_proxy_placeholder\": \"例如: socks5://proxy.example.com:1080\",\n \"codex_websockets_label\": \"Websockets\",\n \"codex_websockets_hint\": \"开启 Responses API 的 websocket 传输。\",\n \"codex_models_label\": \"自定义模型 (可选):\",\n \"codex_models_hint\": \"为空表示使用全部模型;可填写 name[, alias] 以限制或重命名模型。\",\n \"codex_models_add_btn\": \"添加模型\",\n \"codex_models_fetch_button\": \"从 /v1/models 获取\",\n \"codex_models_fetch_title\": \"从 /v1/models 选择模型\",\n \"codex_models_fetch_hint\": \"使用上方 Base URL 调用 /v1/models 端点,附带 API Key(Bearer)与自定义请求头。\",\n \"codex_models_fetch_url_label\": \"请求地址\",\n \"codex_models_fetch_refresh\": \"重新获取\",\n \"codex_models_fetch_loading\": \"正在从 /v1/models 获取模型列表...\",\n \"codex_models_fetch_empty\": \"未获取到模型,请检查端点或鉴权信息。\",\n \"codex_models_fetch_error\": \"获取模型失败\",\n \"codex_models_fetch_apply\": \"添加所选模型\",\n \"codex_models_search_label\": \"搜索模型\",\n \"codex_models_search_placeholder\": \"按名称、别名或描述筛选\",\n \"codex_models_search_empty\": \"没有匹配的模型,请更换关键字试试。\",\n \"codex_models_fetch_added\": \"已添加 {{count}} 个新模型\",\n \"codex_models_count\": \"模型数量\",\n \"codex_edit_modal_title\": \"编辑Codex API配置\",\n \"codex_edit_modal_key_label\": \"API密钥:\",\n \"codex_edit_modal_url_label\": \"Base URL (必填):\",\n \"codex_edit_modal_proxy_label\": \"代理 URL (可选):\",\n \"codex_delete_confirm\": \"确定要删除这个Codex配置吗?\",\n \"claude_title\": \"Claude API 配置\",\n \"claude_add_button\": \"添加配置\",\n \"claude_empty_title\": \"暂无Claude配置\",\n \"claude_empty_desc\": \"点击上方按钮添加第一个配置\",\n \"claude_item_title\": \"Claude配置\",\n \"claude_add_modal_title\": \"添加Claude API配置\",\n \"claude_add_modal_key_label\": \"API密钥:\",\n \"claude_add_modal_key_placeholder\": \"请输入Claude API密钥\",\n \"claude_add_modal_url_label\": \"Base URL (可选):\",\n \"claude_add_modal_url_placeholder\": \"例如: https://api.anthropic.com\",\n \"claude_add_modal_proxy_label\": \"代理 URL (可选):\",\n \"claude_add_modal_proxy_placeholder\": \"例如: socks5://proxy.example.com:1080\",\n \"claude_edit_modal_title\": \"编辑Claude API配置\",\n \"claude_edit_modal_key_label\": \"API密钥:\",\n \"claude_edit_modal_url_label\": \"Base URL (可选):\",\n \"claude_edit_modal_proxy_label\": \"代理 URL (可选):\",\n \"claude_delete_confirm\": \"确定要删除这个Claude配置吗?\",\n \"claude_models_label\": \"自定义模型 (可选):\",\n \"claude_models_hint\": \"为空表示使用全部模型;可填写 name[, alias] 以限制或重命名模型。\",\n \"claude_models_add_btn\": \"添加模型\",\n \"claude_models_count\": \"模型数量\",\n \"claude_models_fetch_button\": \"从 /v1/models 获取\",\n \"claude_models_fetch_title\": \"从 Claude /v1/models 选择模型\",\n \"claude_models_fetch_hint\": \"按 Anthropic 规范请求 GET /v1/models,默认附带 x-api-key 与 anthropic-version: 2023-06-01;也会合并你配置的自定义请求头。\",\n \"claude_models_fetch_url_label\": \"请求地址\",\n \"claude_models_fetch_refresh\": \"重新获取\",\n \"claude_models_fetch_loading\": \"正在从 Claude /v1/models 获取模型列表...\",\n \"claude_models_fetch_empty\": \"未获取到模型,请检查 Base URL、API Key 或请求头。\",\n \"claude_models_fetch_error\": \"获取 Claude 模型失败\",\n \"claude_models_fetch_apply\": \"添加所选模型\",\n \"claude_models_search_label\": \"搜索模型\",\n \"claude_models_search_placeholder\": \"按名称、别名或描述筛选\",\n \"claude_models_search_empty\": \"没有匹配的模型,请更换关键字试试。\",\n \"claude_models_fetch_added\": \"已添加 {{count}} 个新模型\",\n \"claude_test_title\": \"连通性测试\",\n \"claude_test_hint\": \"按 Anthropic 规范向 /v1/messages 发送测试请求,验证当前配置是否可用。\",\n \"claude_test_select_placeholder\": \"从当前模型列表选择\",\n \"claude_test_select_empty\": \"当前未配置模型,请先添加模型\",\n \"claude_test_action\": \"测试\",\n \"claude_test_running\": \"正在发送 Claude 测试请求...\",\n \"claude_test_timeout\": \"测试请求超时({{seconds}}秒)。\",\n \"claude_test_success\": \"测试成功,Claude 模型可用。\",\n \"claude_test_failed\": \"测试失败\",\n \"claude_test_key_required\": \"请先填写 Claude API Key 或在自定义请求头中设置 x-api-key\",\n \"claude_test_model_required\": \"请选择要测试的模型\",\n \"claude_test_endpoint_invalid\": \"无法构造有效的 Claude /v1/messages 请求地址\",\n \"claude_cloak_title\": \"请求伪装 (可选):\",\n \"claude_cloak_toggle_label\": \"启用\",\n \"claude_cloak_toggle_aria\": \"切换请求伪装\",\n \"claude_cloak_hint\": \"对非 Claude Code 客户端,将请求伪装成 Claude Code CLI 的格式。\",\n \"claude_cloak_mode_label\": \"模式:\",\n \"claude_cloak_mode_hint\": \"auto: 仅对非 Claude Code 客户端伪装;always: 总是伪装;never: 从不伪装。\",\n \"claude_cloak_mode_auto\": \"自动(仅非 Claude Code)\",\n \"claude_cloak_mode_always\": \"总是\",\n \"claude_cloak_mode_never\": \"从不\",\n \"claude_cloak_strict_label\": \"严格模式:\",\n \"claude_cloak_strict_hint\": \"启用后会移除用户 system 消息,仅保留 Claude Code 提示词。\",\n \"claude_cloak_sensitive_words_label\": \"敏感词 (可选):\",\n \"claude_cloak_sensitive_words_placeholder\": \"用逗号或换行分隔,例如: internal-project\",\n \"claude_cloak_sensitive_words_hint\": \"这些词会被插入零宽字符进行混淆。\",\n \"claude_cloak_sensitive_words_count\": \"敏感词\",\n \"vertex_title\": \"Vertex API 配置\",\n \"vertex_add_button\": \"添加配置\",\n \"vertex_empty_title\": \"暂无Vertex配置\",\n \"vertex_empty_desc\": \"点击上方按钮添加第一个配置\",\n \"vertex_item_title\": \"Vertex配置\",\n \"vertex_add_modal_title\": \"添加Vertex API配置\",\n \"vertex_add_modal_key_label\": \"API密钥:\",\n \"vertex_add_modal_key_placeholder\": \"请输入Vertex API密钥\",\n \"vertex_add_modal_url_label\": \"Base URL:\",\n \"vertex_add_modal_url_placeholder\": \"例如: https://example.com/api\",\n \"vertex_add_modal_proxy_label\": \"代理 URL (可选):\",\n \"vertex_add_modal_proxy_placeholder\": \"例如: socks5://proxy.example.com:1080\",\n \"vertex_edit_modal_title\": \"编辑Vertex API配置\",\n \"vertex_edit_modal_key_label\": \"API密钥:\",\n \"vertex_edit_modal_url_label\": \"Base URL:\",\n \"vertex_edit_modal_proxy_label\": \"代理 URL (可选):\",\n \"vertex_delete_confirm\": \"确定要删除这个Vertex配置吗?\",\n \"vertex_models_label\": \"模型别名:\",\n \"vertex_models_add_btn\": \"添加映射\",\n \"vertex_models_count\": \"别名数量\",\n \"ampcode_title\": \"Amp CLI 集成 (ampcode)\",\n \"ampcode_modal_title\": \"配置 Ampcode\",\n \"ampcode_upstream_url_label\": \"Upstream URL\",\n \"ampcode_upstream_url_placeholder\": \"例如: https://ampcode.com\",\n \"ampcode_upstream_url_hint\": \"可选;留空表示使用默认/自动发现的控制平面地址。\",\n \"ampcode_upstream_api_key_label\": \"Upstream API Key (Amp官方)\",\n \"ampcode_upstream_api_key_placeholder\": \"输入 sk-amp...(留空不修改)\",\n \"ampcode_upstream_api_key_hint\": \"可选;留空不会修改当前Amp官方密钥,需清除请点击下方按钮。\",\n \"ampcode_upstream_api_key_current\": \"当前Amp官方密钥: {{key}}\",\n \"ampcode_clear_upstream_api_key\": \"清除官方密钥\",\n \"ampcode_clear_upstream_api_key_confirm\": \"确定要清除 Ampcode 的 upstream API key(Amp官方)吗?\",\n \"ampcode_upstream_api_keys_label\": \"多上游 API Key 路由\",\n \"ampcode_upstream_api_keys_hint\": \"为指定客户端 API Key 绑定不同的 Amp 上游 API Key;客户端 key 可用逗号或换行分隔。\",\n \"ampcode_upstream_api_keys_add_btn\": \"添加多上游映射\",\n \"ampcode_upstream_api_keys_upstream_placeholder\": \"上游 API Key(sk-amp-...)\",\n \"ampcode_upstream_api_keys_clients_placeholder\": \"客户端 API Keys,用逗号或换行分隔\",\n \"ampcode_upstream_api_keys_item_title\": \"上游映射 #{{index}}\",\n \"ampcode_upstream_api_keys_count\": \"多上游映射\",\n \"ampcode_force_model_mappings_label\": \"强制应用模型映射\",\n \"ampcode_force_model_mappings_hint\": \"开启后,模型映射将覆盖本地 API Key 可用性判断。\",\n \"ampcode_model_mappings_label\": \"模型映射 (from → to)\",\n \"ampcode_model_mappings_hint\": \"用于重写 Amp 请求中的模型名称;留空表示不做映射。\",\n \"ampcode_model_mappings_add_btn\": \"添加映射\",\n \"ampcode_model_mappings_from_placeholder\": \"from 模型(原始)\",\n \"ampcode_model_mappings_to_placeholder\": \"to 模型(目标)\",\n \"ampcode_model_mappings_count\": \"映射数量\",\n \"ampcode_lists_overwrite_title\": \"覆盖列表配置\",\n \"ampcode_lists_overwrite_confirm\": \"当前未成功加载服务器已有多上游/模型映射配置,继续保存可能覆盖或清空这些列表,是否继续?\",\n \"ampcode_mappings_overwrite_confirm\": \"当前未成功加载服务器已有映射,继续保存可能覆盖或清空已有映射,是否继续?\",\n \"openai_title\": \"OpenAI 兼容提供商\",\n \"openai_add_button\": \"添加提供商\",\n \"openai_empty_title\": \"暂无OpenAI兼容提供商\",\n \"openai_empty_desc\": \"点击上方按钮添加第一个提供商\",\n \"openai_filtered_empty_title\": \"没有匹配的提供商\",\n \"openai_filtered_empty_desc\": \"当前模型筛选下没有匹配的提供商,请清除筛选后重试。\",\n \"sort_by_name\": \"按名称排序\",\n \"sort_ascending\": \"升序排序\",\n \"sort_asc_short\": \"升序\",\n \"sort_by_priority\": \"按优先级排序\",\n \"sort_by_recent_success\": \"按最近成功数排序\",\n \"sort_descending\": \"降序排序\",\n \"sort_desc_short\": \"降序\",\n \"openai_test_model\": \"测试模型\",\n \"openai_add_modal_title\": \"添加OpenAI兼容提供商\",\n \"openai_add_modal_name_label\": \"提供商名称:\",\n \"openai_add_modal_name_placeholder\": \"例如: openrouter\",\n \"openai_add_modal_url_label\": \"Base URL:\",\n \"openai_add_modal_url_placeholder\": \"例如: https://openrouter.ai/api/v1\",\n \"openai_add_modal_keys_label\": \"API密钥\",\n \"openai_edit_modal_keys_label\": \"API密钥\",\n \"openai_keys_hint\": \"每个密钥可搭配一个可选代理地址,更便于管理。\",\n \"openai_keys_add_btn\": \"添加密钥\",\n \"openai_key_placeholder\": \"输入 sk- 开头的密钥\",\n \"openai_proxy_placeholder\": \"可选代理 URL (如 socks5://...)\",\n \"openai_add_modal_models_label\": \"模型列表 (name[, alias] 每行一个):\",\n \"openai_models_hint\": \"示例:gpt-4o-mini 或 moonshotai/kimi-k2:free, kimi-k2\",\n \"openai_model_name_placeholder\": \"模型名称,如 moonshotai/kimi-k2:free\",\n \"openai_model_alias_placeholder\": \"模型别名 (可选)\",\n \"openai_models_add_btn\": \"添加模型\",\n \"openai_models_fetch_button\": \"从 /models 获取\",\n \"openai_models_fetch_title\": \"从 /models 选择模型\",\n \"openai_models_fetch_hint\": \"使用上方 Base URL 调用 /models 端点,附带首个 API Key(Bearer)与自定义请求头。\",\n \"openai_models_fetch_url_label\": \"请求地址\",\n \"openai_models_fetch_refresh\": \"重新获取\",\n \"openai_models_fetch_loading\": \"正在从 /models 获取模型列表...\",\n \"openai_models_fetch_empty\": \"未获取到模型,请检查端点或鉴权信息。\",\n \"openai_models_fetch_error\": \"获取模型失败\",\n \"openai_models_fetch_back\": \"返回编辑\",\n \"openai_models_fetch_apply\": \"添加所选模型\",\n \"openai_models_search_label\": \"搜索模型\",\n \"openai_models_search_placeholder\": \"按名称、别名或描述筛选\",\n \"openai_models_search_empty\": \"没有匹配的模型,请更换关键字试试。\",\n \"openai_models_fetch_invalid_url\": \"请先填写有效的 Base URL\",\n \"openai_models_fetch_added\": \"已添加 {{count}} 个新模型\",\n \"openai_edit_modal_title\": \"编辑OpenAI兼容提供商\",\n \"openai_edit_modal_name_label\": \"提供商名称:\",\n \"openai_edit_modal_url_label\": \"Base URL:\",\n \"openai_edit_modal_models_label\": \"模型列表 (name[, alias] 每行一个):\",\n \"openai_delete_confirm\": \"确定要删除这个OpenAI提供商吗?\",\n \"openai_keys_count\": \"密钥数量\",\n \"openai_models_count\": \"模型数量\",\n \"openai_test_title\": \"连通性测试\",\n \"openai_test_hint\": \"使用当前配置向 /chat/completions 请求,验证是否可用。\",\n \"openai_test_model_placeholder\": \"选择或输入要测试的模型\",\n \"openai_test_action\": \"发送测试\",\n \"openai_test_running\": \"正在发送测试请求...\",\n \"openai_test_timeout\": \"测试请求超时({{seconds}}秒)。\",\n \"openai_test_success\": \"测试成功,模型可用。\",\n \"openai_test_failed\": \"测试失败\",\n \"openai_test_select_placeholder\": \"从当前模型列表选择\",\n \"openai_test_select_empty\": \"当前未配置模型,请先添加模型\",\n \"openai_test_single_action\": \"测试\",\n \"openai_test_all_action\": \"一键测试全部密钥\",\n \"openai_test_all_hint\": \"测试所有密钥的连接状态\",\n \"openai_test_all_success\": \"所有 {{count}} 个密钥测试通过\",\n \"openai_test_all_failed\": \"所有 {{count}} 个密钥测试失败\",\n \"openai_test_all_partial\": \"测试完成:{{success}} 个通过,{{failed}} 个失败\",\n \"model_search_placeholder\": \"按模型筛选...\",\n \"model_search_clear\": \"清除\",\n \"model_select_all\": \"全选\",\n \"model_filter_empty\": \"暂无可筛选模型\"\n },\n \"auth_files\": {\n \"title\": \"认证文件管理\",\n \"title_section\": \"认证文件\",\n \"description\": \"这里集中管理 CLI Proxy 支持的所有 JSON 认证文件(如 Qwen、Gemini、Vertex 等),上传后即可在运行时启用相应的 AI 服务。\",\n \"upload_button\": \"上传文件\",\n \"delete_all_button\": \"删除全部\",\n \"empty_title\": \"暂无认证文件\",\n \"empty_desc\": \"点击上方按钮上传第一个文件\",\n \"search_empty_title\": \"没有匹配的配置文件\",\n \"search_empty_desc\": \"请调整筛选条件或清空搜索关键字再试一次。\",\n \"file_size\": \"大小\",\n \"file_modified\": \"修改时间\",\n \"health_status_label\": \"健康状态\",\n \"health_status_healthy\": \"健康\",\n \"health_status_warning\": \"警告\",\n \"health_status_disabled\": \"已停用\",\n \"health_status_unknown\": \"未知\",\n \"health_status_no_message\": \"暂无状态说明\",\n \"last_refresh_label\": \"最近刷新\",\n \"refresh_not_available\": \"暂无\",\n \"refresh_just_now\": \"刚刚\",\n \"download_button\": \"下载\",\n \"delete_button\": \"删除\",\n \"delete_confirm\": \"确定要删除文件\",\n \"delete_all_confirm\": \"确定要删除所有认证文件吗?此操作不可恢复!\",\n \"delete_filtered_confirm\": \"确定要删除筛选出的 {{type}} 认证文件吗?此操作不可恢复!\",\n \"delete_problem_button\": \"删除问题凭证\",\n \"delete_problem_button_with_type\": \"删除 {{type}} 问题凭证\",\n \"delete_problem_confirm\": \"确定要删除所有有问题的认证文件吗?此操作不可恢复!\",\n \"delete_problem_filtered_confirm\": \"确定要删除筛选出的有问题的 {{type}} 认证文件吗?此操作不可恢复!\",\n \"delete_filtered_result_button\": \"删除筛选结果\",\n \"delete_filtered_result_confirm\": \"确定要删除当前筛选结果中的认证文件吗?此操作不可恢复!\",\n \"upload_error_json\": \"只能上传JSON文件\",\n \"upload_error_size\": \"文件大小不能超过 {{maxSize}}\",\n \"upload_success\": \"文件上传成功\",\n \"download_success\": \"文件下载成功\",\n \"delete_success\": \"文件删除成功\",\n \"delete_all_success\": \"成功删除\",\n \"delete_filtered_success\": \"成功删除 {{count}} 个 {{type}} 认证文件\",\n \"delete_filtered_partial\": \"{{type}} 认证文件删除完成,成功 {{success}} 个,失败 {{failed}} 个\",\n \"delete_filtered_none\": \"当前筛选类型 ({{type}}) 下没有可删除的认证文件\",\n \"delete_problem_success\": \"成功删除 {{count}} 个有问题的认证文件\",\n \"delete_problem_filtered_success\": \"成功删除 {{count}} 个有问题的 {{type}} 认证文件\",\n \"delete_problem_partial\": \"有问题认证文件删除完成,成功 {{success}} 个,失败 {{failed}} 个\",\n \"delete_problem_filtered_partial\": \"有问题的 {{type}} 认证文件删除完成,成功 {{success}} 个,失败 {{failed}} 个\",\n \"delete_problem_none\": \"当前没有可删除的有问题认证文件\",\n \"delete_problem_filtered_none\": \"当前筛选类型 ({{type}}) 下没有可删除的有问题认证文件\",\n \"delete_filtered_result_success\": \"成功删除 {{count}} 个筛选结果中的认证文件\",\n \"delete_filtered_result_partial\": \"筛选结果删除完成,成功 {{success}} 个,失败 {{failed}} 个\",\n \"delete_filtered_result_none\": \"当前筛选结果中没有可删除的认证文件\",\n \"files_count\": \"个文件\",\n \"pagination_prev\": \"上一页\",\n \"pagination_next\": \"下一页\",\n \"pagination_info\": \"第 {{current}} / {{total}} 页 · 共 {{count}} 个文件\",\n \"search_label\": \"搜索配置文件\",\n \"search_placeholder\": \"输入名称、类型或提供方关键字,支持 * 通配\",\n \"problem_filter_label\": \"问题筛选\",\n \"problem_filter_only\": \"仅显示有问题凭证\",\n \"disabled_filter_only\": \"仅显示已停用凭证\",\n \"display_options_label\": \"显示选项\",\n \"compact_mode_label\": \"简略模式\",\n \"sort_label\": \"排序\",\n \"sort_default\": \"默认\",\n \"sort_az\": \"A-Z 名称\",\n \"sort_priority\": \"优先级\",\n \"priority_display\": \"优先级\",\n \"page_size_label\": \"单页数量\",\n \"page_size_unit\": \"个/页\",\n \"view_mode_paged\": \"按页显示\",\n \"view_mode_all\": \"显示全部\",\n \"too_many_files_warning\": \"您的凭证总数过多,全部加载会导致页面卡顿,请保持单页浏览。\",\n \"filter_all\": \"全部\",\n \"filter_qwen\": \"Qwen\",\n \"filter_gemini\": \"Gemini\",\n \"filter_gemini-cli\": \"GeminiCLI\",\n \"filter_kimi\": \"Kimi\",\n \"filter_aistudio\": \"AIStudio\",\n \"filter_claude\": \"Claude\",\n \"filter_codex\": \"Codex\",\n \"filter_antigravity\": \"Antigravity\",\n \"filter_xai\": \"xAI\",\n \"filter_iflow\": \"iFlow\",\n \"filter_vertex\": \"Vertex\",\n \"filter_empty\": \"空文件\",\n \"filter_unknown\": \"其他\",\n \"type_qwen\": \"Qwen\",\n \"type_gemini\": \"Gemini\",\n \"type_gemini-cli\": \"GeminiCLI\",\n \"type_kimi\": \"Kimi\",\n \"type_aistudio\": \"AIStudio\",\n \"type_claude\": \"Claude\",\n \"type_codex\": \"Codex\",\n \"type_antigravity\": \"Antigravity\",\n \"type_xai\": \"xAI\",\n \"type_iflow\": \"iFlow\",\n \"type_vertex\": \"Vertex\",\n \"type_empty\": \"空文件\",\n \"type_unknown\": \"其他\",\n \"type_virtual\": \"虚拟认证文件\",\n \"models_button\": \"模型\",\n \"models_title\": \"支持的模型\",\n \"models_loading\": \"正在加载模型列表...\",\n \"models_empty\": \"该凭证暂无可用模型\",\n \"models_empty_desc\": \"该认证凭证可能尚未被服务器加载或没有绑定任何模型\",\n \"models_unsupported\": \"当前版本不支持此功能\",\n \"models_unsupported_desc\": \"请更新 CLI Proxy API 到最新版本后重试\",\n \"models_excluded_badge\": \"已禁用\",\n \"models_excluded_hint\": \"此 OAuth 模型已被禁用\",\n \"status_toggle_label\": \"启用\",\n \"status_enabled_success\": \"已启用 \\\"{{name}}\\\"\",\n \"status_disabled_success\": \"已停用 \\\"{{name}}\\\"\",\n \"batch_status_success\": \"已成功更新 {{count}} 个文件\",\n \"batch_status_partial\": \"成功 {{success}} 个,失败 {{failed}} 个\",\n \"batch_delete_title\": \"删除选中文件\",\n \"batch_delete_confirm\": \"确定要删除 {{count}} 个文件吗?\",\n \"batch_selected\": \"已选 {{count}} 项\",\n \"batch_select_all\": \"全选\",\n \"batch_select_page\": \"全选当前页\",\n \"batch_select_filtered\": \"全选筛选结果\",\n \"batch_invert_page\": \"反选当前页\",\n \"batch_deselect\": \"取消选择\",\n \"batch_download\": \"下载选中\",\n \"batch_download_success\": \"已开始下载 {{count}} 个文件\",\n \"batch_download_partial\": \"下载完成:成功 {{success}} 个,失败 {{failed}} 个\",\n \"batch_enable\": \"启用\",\n \"batch_disable\": \"禁用\",\n \"prefix_proxy_button\": \"认证文件详情 / 编辑\",\n \"auth_field_editor_title\": \"认证文件详情 / 编辑 - {{name}}\",\n \"prefix_proxy_loading\": \"正在加载认证文件...\",\n \"prefix_proxy_info_label\": \"认证文件信息(info)\",\n \"prefix_proxy_source_label\": \"认证文件 JSON(预览)\",\n \"prefix_proxy_invalid_content_label\": \"下载内容(已截断)\",\n \"prefix_label\": \"前缀(prefix)\",\n \"proxy_url_label\": \"代理 URL(proxy_url)\",\n \"prefix_placeholder\": \"\",\n \"proxy_url_placeholder\": \"socks5://username:password@proxy_ip:port/\",\n \"priority_label\": \"优先级(priority)\",\n \"priority_placeholder\": \"例如: 10 或 -1\",\n \"priority_hint\": \"仅支持整数;非法值会被忽略。数值越大优先级越高。\",\n \"websockets_label\": \"WebSockets(websockets)\",\n \"websockets_hint\": \"为该凭证开启 Responses API 的 websocket 传输。\",\n \"codex_websockets_label\": \"WebSockets(websockets)\",\n \"codex_websockets_hint\": \"为该 Codex 凭证开启 Responses API 的 websocket 传输。\",\n \"excluded_models_label\": \"排除模型(excluded_models)\",\n \"excluded_models_placeholder\": \"用逗号或换行分隔,例如: model-a, gpt-5-*, *-preview\",\n \"excluded_models_hint\": \"保存为数组;会自动 trim、小写、去重并排序。\",\n \"disable_cooling_label\": \"禁用冷却(disable_cooling)\",\n \"disable_cooling_placeholder\": \"例如: true / false / 1 / 0\",\n \"disable_cooling_hint\": \"支持布尔值、0/非0 数字或字符串 true/false/1/0;无法解析时忽略。\",\n \"using_api_label\": \"使用官方 API(using_api)\",\n \"using_api_hint\": \"开启后使用 xAI 官方 API;关闭时使用 Grok CLI chat-proxy。\",\n \"note_label\": \"备注(note)\",\n \"note_placeholder\": \"输入备注信息,例如:张三的账号\",\n \"note_hint\": \"可选,用于标记凭证用途或归属;留空则不写入。\",\n \"note_display\": \"备注\",\n \"headers_label\": \"自定义请求头(headers)\",\n \"headers_placeholder\": \"{\\n \\\"Header-Name\\\": \\\"value\\\"\\n}\",\n \"headers_hint\": \"以 JSON 对象格式输入自定义 HTTP 请求头,例如:{\\\"X-My-Header\\\": \\\"value\\\"}\",\n \"headers_invalid_json\": \"自定义请求头必须是有效的 JSON。\",\n \"headers_invalid_object\": \"自定义请求头必须是 JSON 对象。\",\n \"headers_invalid_value\": \"每个自定义请求头的值都必须是字符串。\",\n \"prefix_proxy_invalid_json\": \"该认证文件不是 JSON 对象,无法编辑字段。\",\n \"prefix_proxy_html_challenge\": \"下载到的是 HTML 验证页面,不是认证 JSON 对象。请重新认证或替换该认证文件后再编辑字段。\",\n \"prefix_proxy_saved_success\": \"已更新认证文件 \\\"{{name}}\\\"\",\n \"quota_refresh_single\": \"刷新额度\",\n \"quota_refresh_hint\": \"仅刷新该认证文件的额度\",\n \"quota_refresh_success\": \"已刷新 \\\"{{name}}\\\" 的额度\",\n \"quota_refresh_failed\": \"刷新 \\\"{{name}}\\\" 的额度失败:{{message}}\"\n },\n \"antigravity_quota\": {\n \"title\": \"Antigravity 额度\",\n \"empty_title\": \"暂无 Antigravity 认证\",\n \"empty_desc\": \"上传 Antigravity 认证文件后即可查看额度。\",\n \"idle\": \"点击此处刷新额度\",\n \"loading\": \"正在加载额度...\",\n \"load_failed\": \"额度获取失败:{{message}}\",\n \"missing_auth_index\": \"认证文件缺少 auth_index\",\n \"empty_models\": \"暂无额度数据\",\n \"refresh_button\": \"刷新额度\",\n \"fetch_all\": \"获取全部\"\n },\n \"claude_quota\": {\n \"title\": \"Claude 额度\",\n \"empty_title\": \"暂无 Claude OAuth 认证\",\n \"empty_desc\": \"使用 Claude OAuth 登录后即可查看额度。\",\n \"idle\": \"点击此处刷新额度\",\n \"loading\": \"正在加载额度...\",\n \"load_failed\": \"额度获取失败:{{message}}\",\n \"missing_auth_index\": \"认证文件缺少 auth_index\",\n \"empty_windows\": \"暂无额度数据\",\n \"refresh_button\": \"刷新额度\",\n \"fetch_all\": \"获取全部\",\n \"five_hour\": \"5 小时限额\",\n \"seven_day\": \"7 天限额\",\n \"seven_day_oauth_apps\": \"7 天 OAuth 应用\",\n \"seven_day_opus\": \"7 天 Opus\",\n \"seven_day_sonnet\": \"7 天 Sonnet\",\n \"seven_day_cowork\": \"7 天 Cowork\",\n \"iguana_necktie\": \"Iguana Necktie\",\n \"seven_day_fable\": \"7 天 Fable 5\",\n \"extra_usage_label\": \"额外用量\",\n \"plan_label\": \"套餐\",\n \"plan_unknown\": \"未知\",\n \"plan_free\": \"免费版\",\n \"plan_pro\": \"专业版\",\n \"plan_max\": \"Max\",\n \"plan_max5\": \"Max 5x\",\n \"plan_max20\": \"Max 20x\",\n \"plan_team\": \"团队版\"\n },\n \"gemini_cli_quota\": {\n \"title\": \"Gemini CLI 额度\",\n \"empty_title\": \"暂无 Gemini CLI 认证\",\n \"empty_desc\": \"上传 Gemini CLI 认证文件后即可查看额度。\",\n \"idle\": \"点击此处刷新额度\",\n \"loading\": \"正在加载额度...\",\n \"load_failed\": \"额度获取失败:{{message}}\",\n \"missing_auth_index\": \"认证文件缺少 auth_index\",\n \"missing_project_id\": \"Gemini CLI 凭证缺少 Project ID\",\n \"empty_buckets\": \"暂无额度数据\",\n \"refresh_button\": \"刷新额度\",\n \"fetch_all\": \"获取全部\",\n \"remaining_amount\": \"剩余 {{count}}\",\n \"tier_label\": \"层级\",\n \"tier_free\": \"免费版\",\n \"tier_legacy\": \"旧版\",\n \"tier_standard\": \"标准版\",\n \"tier_pro\": \"Pro\",\n \"tier_ultra\": \"Ultra\",\n \"credit_label\": \"Google One AI 积分\",\n \"credit_amount\": \"{{count}} 积分\"\n },\n \"kimi_quota\": {\n \"title\": \"Kimi 额度\",\n \"empty_title\": \"暂无 Kimi 认证\",\n \"empty_desc\": \"上传 Kimi 认证文件后即可查看额度。\",\n \"idle\": \"点击此处刷新额度\",\n \"loading\": \"正在加载额度...\",\n \"load_failed\": \"额度获取失败:{{message}}\",\n \"missing_auth_index\": \"认证文件缺少 auth_index\",\n \"empty_data\": \"暂无额度数据\",\n \"refresh_button\": \"刷新额度\",\n \"fetch_all\": \"获取全部\",\n \"weekly_limit\": \"周限额\",\n \"limit_window\": \"{{duration}} 限额\",\n \"limit_index\": \"限额 #{{index}}\",\n \"reset_hint\": \"{{hint}} 后重置\",\n \"reset_at\": \"{{time}} 重置\"\n },\n \"xai_quota\": {\n \"title\": \"Grok 额度\",\n \"empty_title\": \"暂无 xAI/Grok 认证\",\n \"empty_desc\": \"使用 xAI OAuth 登录后即可查看 Grok 额度。\",\n \"idle\": \"点击此处刷新额度\",\n \"loading\": \"正在加载额度...\",\n \"load_failed\": \"额度获取失败:{{message}}\",\n \"missing_auth_index\": \"认证文件缺少 auth_index\",\n \"empty_data\": \"暂无额度数据\",\n \"refresh_button\": \"刷新额度\",\n \"fetch_all\": \"获取全部\",\n \"weekly_limit\": \"周限额\",\n \"monthly_credits\": \"月度积分\",\n \"used_percent\": \"已用 {{percent}}\",\n \"reset_at\": \"重置 {{time}}\",\n \"product_usage\": \"{{product}} 使用\",\n \"plan_label\": \"套餐\",\n \"plan_supergrok\": \"SuperGrok\",\n \"plan_supergrok_heavy\": \"SuperGrok Heavy\",\n \"pay_as_you_go_label\": \"按量付费\",\n \"pay_as_you_go_enabled\": \"已启用,封顶 {{cap}}\",\n \"pay_as_you_go_disabled\": \"未启用\"\n },\n \"vertex_import\": {\n \"title\": \"Vertex JSON 登录\",\n \"description\": \"上传 Google 服务账号 JSON,使用 CLI vertex-import 同步规则写入 auth-dir/vertex-<project>.json。\",\n \"location_label\": \"目标区域 (可选)\",\n \"location_placeholder\": \"us-central1\",\n \"location_hint\": \"留空表示使用默认区域 us-central1。\",\n \"file_label\": \"服务账号密钥 JSON\",\n \"file_hint\": \"仅支持 Google Cloud service account key JSON 文件,私钥会自动规范化。\",\n \"file_placeholder\": \"尚未选择文件\",\n \"choose_file\": \"选择文件\",\n \"import_button\": \"导入 Vertex 凭证\",\n \"file_required\": \"请先选择 .json 凭证文件\",\n \"success\": \"Vertex 凭证导入成功\",\n \"result_title\": \"凭证已保存\",\n \"result_project\": \"项目 ID\",\n \"result_email\": \"服务账号\",\n \"result_location\": \"区域\",\n \"result_file\": \"存储文件\"\n },\n \"oauth_excluded\": {\n \"title\": \"OAuth 模型禁用\",\n \"description\": \"按提供商分列展示,点击卡片编辑或删除;支持 * 通配符,范围跟随上方的配置文件过滤标签。\",\n \"add\": \"新增禁用\",\n \"add_title\": \"新增提供商模型禁用\",\n \"edit_title\": \"编辑 {{provider}} 的模型禁用\",\n \"refresh\": \"刷新\",\n \"refreshing\": \"刷新中...\",\n \"provider_label\": \"提供商\",\n \"provider_auto\": \"跟随当前过滤\",\n \"provider_placeholder\": \"例如 gemini-cli / openai\",\n \"provider_hint\": \"默认选中当前筛选的提供商,也可直接输入或选择其他名称。\",\n \"models_label\": \"禁用的模型\",\n \"models_loading\": \"正在加载模型列表...\",\n \"models_unsupported\": \"当前 CPA 版本不支持获取模型列表。\",\n \"models_loaded\": \"已加载 {{count}} 个模型,勾选要禁用的模型。\",\n \"no_models_available\": \"该提供商暂无可用模型列表。\",\n \"custom_rule_label\": \"自定义模型规则\",\n \"custom_rule_hint\": \"可填写精确模型 ID,或使用 gpt-* 这样的通配符规则。\",\n \"custom_rule_placeholder\": \"例如 gpt-* / custom-model\",\n \"custom_rule_add\": \"添加规则\",\n \"custom_rules_label\": \"已配置的自定义规则\",\n \"custom_rule_remove\": \"移除 {{rule}}\",\n \"save\": \"保存/更新\",\n \"saving\": \"正在保存...\",\n \"save_success\": \"模型禁用已更新\",\n \"save_failed\": \"更新模型禁用失败\",\n \"delete\": \"删除提供商\",\n \"delete_confirm\": \"确定要删除 {{provider}} 的模型禁用吗?\",\n \"delete_success\": \"已删除该提供商的模型禁用\",\n \"delete_failed\": \"删除模型禁用失败\",\n \"deleting\": \"正在删除...\",\n \"no_models\": \"未配置禁用模型\",\n \"model_count\": \"禁用 {{count}} 个模型\",\n \"list_empty_all\": \"暂无任何提供商的模型禁用,点击“新增禁用”创建。\",\n \"list_empty_filtered\": \"当前筛选下没有禁用项,点击“新增禁用”添加。\",\n \"disconnected\": \"请先连接服务器以查看模型禁用\",\n \"load_failed\": \"加载模型禁用失败\",\n \"provider_required\": \"请先填写提供商名称\",\n \"scope_all\": \"当前范围:全局(显示所有提供商)\",\n \"scope_provider\": \"当前范围:{{provider}}\",\n \"upgrade_required\": \"当前 CPA 版本不支持 OAuth 模型禁用,请升级 CPA 版本\",\n \"upgrade_required_title\": \"需要升级 CPA 版本\",\n \"upgrade_required_desc\": \"当前服务器版本不支持获取 OAuth 模型禁用功能,请升级到最新版本的 CPA(CLI Proxy API)后重试。\"\n },\n \"oauth_model_alias\": {\n \"title\": \"OAuth 模型别名\",\n \"add\": \"新增别名\",\n \"add_title\": \"新增提供商模型别名\",\n \"provider_label\": \"提供商\",\n \"provider_placeholder\": \"例如 gemini-cli / vertex\",\n \"provider_hint\": \"默认选中当前筛选的提供商,也可直接输入或选择其他名称。\",\n \"model_source_loading\": \"正在加载模型列表...\",\n \"model_source_unsupported\": \"当前 CPA 版本不支持获取模型列表(仍可手动输入)。\",\n \"model_source_loaded\": \"已加载 {{count}} 个模型,可在“原模型名称”中下拉选择;也可手动输入。留空保存将删除该提供商记录;开启“保留原名”会在保留原模型名的同时新增别名。\",\n \"alias_label\": \"模型别名\",\n \"alias_name_placeholder\": \"原模型名称\",\n \"alias_placeholder\": \"别名 (必填)\",\n \"duplicate_alias\": \"同一提供商下的别名不能重复。\",\n \"alias_fork_label\": \"保留原名\",\n \"add_alias\": \"添加别名\",\n \"save\": \"保存/更新\",\n \"save_success\": \"模型别名已更新\",\n \"save_failed\": \"更新模型别名失败\",\n \"delete\": \"删除提供商\",\n \"delete_confirm\": \"确定要删除 {{provider}} 的模型别名吗?\",\n \"delete_link_title\": \"取消链接\",\n \"delete_link_confirm\": \"确定取消 <code>{{sourceModel}}</code>({{provider}})到别名 <code>{{alias}}</code> 的映射?\",\n \"delete_alias_title\": \"删除别名\",\n \"delete_alias_confirm\": \"确定删除别名 <code>{{alias}}</code> 并取消所有关联模型的映射?\",\n \"delete_success\": \"已删除该提供商的模型别名\",\n \"delete_failed\": \"删除模型别名失败\",\n \"no_models\": \"未配置模型别名\",\n \"model_count\": \"{{count}} 条别名\",\n \"list_empty_all\": \"暂无任何提供商的模型别名,点击“新增别名”创建。\",\n \"chart_title\": \"全部映射概览\",\n \"diagram_providers\": \"提供商\",\n \"diagram_source_models\": \"源模型\",\n \"diagram_aliases\": \"别名\",\n \"diagram_expand\": \"展开\",\n \"diagram_collapse\": \"收起\",\n \"diagram_add_alias\": \"添加别名\",\n \"diagram_rename\": \"重命名\",\n \"diagram_rename_alias_title\": \"重命名别名\",\n \"diagram_rename_alias_label\": \"新别名名称\",\n \"diagram_rename_placeholder\": \"输入别名名称...\",\n \"diagram_delete_link\": \"取消链接 {{provider}} / {{name}}\",\n \"diagram_delete_alias\": \"删除别名\",\n \"diagram_please_enter_alias\": \"请输入别名名称。\",\n \"diagram_alias_exists\": \"该别名已存在。\",\n \"diagram_add_alias_title\": \"添加别名\",\n \"diagram_add_alias_label\": \"别名名称\",\n \"diagram_add_placeholder\": \"输入新别名名称...\",\n \"diagram_rename_btn\": \"重命名\",\n \"diagram_add_btn\": \"添加\",\n \"diagram_settings\": \"设置\",\n \"diagram_settings_title\": \"别名设置 — {{alias}}\",\n \"diagram_settings_source_title\": \"源模型设置\",\n \"diagram_settings_empty\": \"该别名暂无映射。\",\n \"diagram_tap_hint\": \"触摸设备上:先点选源模型,再点选别名即可建立映射。\",\n \"view_mode\": \"视图模式\",\n \"view_mode_diagram\": \"概览\",\n \"view_mode_list\": \"管理\",\n \"provider_required\": \"请先填写提供商名称\",\n \"upgrade_required\": \"当前 CPA 版本不支持模型别名功能,请升级 CPA 版本\",\n \"upgrade_required_title\": \"需要升级 CPA 版本\",\n \"upgrade_required_desc\": \"当前服务器版本不支持 OAuth 模型别名功能,请升级到最新版本的 CPA(CLI Proxy API)后重试。\"\n },\n \"auth_login\": {\n \"codex_oauth_title\": \"Codex OAuth\",\n \"codex_oauth_button\": \"开始 Codex 登录\",\n \"codex_oauth_hint\": \"通过 OAuth 流程登录 Codex 服务,自动获取并保存认证文件。\",\n \"codex_oauth_url_label\": \"授权链接:\",\n \"codex_open_link\": \"打开链接\",\n \"codex_copy_link\": \"复制链接\",\n \"codex_oauth_status_waiting\": \"等待认证中...\",\n \"codex_oauth_status_success\": \"认证成功!\",\n \"codex_oauth_status_error\": \"认证失败:\",\n \"codex_oauth_start_error\": \"启动 Codex OAuth 失败:\",\n \"codex_oauth_polling_error\": \"检查认证状态失败:\",\n \"anthropic_oauth_title\": \"Anthropic OAuth\",\n \"anthropic_oauth_button\": \"开始 Anthropic 登录\",\n \"anthropic_oauth_hint\": \"通过 OAuth 流程登录 Anthropic (Claude) 服务,自动获取并保存认证文件。\",\n \"anthropic_oauth_url_label\": \"授权链接:\",\n \"anthropic_open_link\": \"打开链接\",\n \"anthropic_copy_link\": \"复制链接\",\n \"anthropic_oauth_status_waiting\": \"等待认证中...\",\n \"anthropic_oauth_status_success\": \"认证成功!\",\n \"anthropic_oauth_status_error\": \"认证失败:\",\n \"anthropic_oauth_start_error\": \"启动 Anthropic OAuth 失败:\",\n \"anthropic_oauth_polling_error\": \"检查认证状态失败:\",\n \"antigravity_oauth_title\": \"Antigravity OAuth\",\n \"antigravity_oauth_button\": \"开始 Antigravity 登录\",\n \"antigravity_oauth_hint\": \"通过 OAuth 流程登录 Antigravity(Google 账号)服务,自动获取并保存认证文件。\",\n \"antigravity_oauth_url_label\": \"授权链接:\",\n \"antigravity_open_link\": \"打开链接\",\n \"antigravity_copy_link\": \"复制链接\",\n \"antigravity_oauth_status_waiting\": \"等待认证中...\",\n \"antigravity_oauth_status_success\": \"认证成功!\",\n \"antigravity_oauth_status_error\": \"认证失败:\",\n \"antigravity_oauth_start_error\": \"启动 Antigravity OAuth 失败:\",\n \"antigravity_oauth_polling_error\": \"检查认证状态失败:\",\n \"gemini_cli_oauth_title\": \"Gemini CLI OAuth\",\n \"gemini_cli_oauth_button\": \"开始 Gemini CLI 登录\",\n \"gemini_cli_oauth_hint\": \"通过 OAuth 流程登录 Google Gemini CLI 服务,自动获取并保存认证文件。\",\n \"gemini_cli_project_id_label\": \"Google Cloud 项目 ID (可选):\",\n \"gemini_cli_project_id_placeholder\": \"留空将自动选择第一个可用项目\",\n \"gemini_cli_project_id_hint\": \"可选填写项目 ID。如不填写,系统将自动选择您账号下的第一个可用项目。输入 ALL 可获取全部项目。\",\n \"gemini_cli_project_id_required\": \"请填写 Google Cloud 项目 ID。\",\n \"gemini_cli_oauth_url_label\": \"授权链接:\",\n \"gemini_cli_open_link\": \"打开链接\",\n \"gemini_cli_copy_link\": \"复制链接\",\n \"gemini_cli_oauth_status_waiting\": \"等待认证中...\",\n \"gemini_cli_oauth_status_success\": \"认证成功!\",\n \"gemini_cli_oauth_status_error\": \"认证失败:\",\n \"gemini_cli_oauth_start_error\": \"启动 Gemini CLI OAuth 失败:\",\n \"gemini_cli_oauth_polling_error\": \"检查认证状态失败:\",\n \"kimi_oauth_title\": \"Kimi OAuth\",\n \"kimi_oauth_button\": \"开始 Kimi 登录\",\n \"kimi_oauth_hint\": \"通过设备授权流程登录 Kimi 服务,自动获取并保存认证文件。\",\n \"kimi_oauth_url_label\": \"授权链接:\",\n \"kimi_open_link\": \"打开链接\",\n \"kimi_copy_link\": \"复制链接\",\n \"kimi_oauth_status_waiting\": \"等待认证中...\",\n \"kimi_oauth_status_success\": \"认证成功!\",\n \"kimi_oauth_status_error\": \"认证失败:\",\n \"kimi_oauth_start_error\": \"启动 Kimi OAuth 失败:\",\n \"kimi_oauth_polling_error\": \"检查认证状态失败:\",\n \"xai_oauth_title\": \"xAI OAuth\",\n \"xai_oauth_button\": \"开始 xAI 登录\",\n \"xai_oauth_hint\": \"通过 OAuth 流程登录 xAI Grok 服务,自动获取并保存认证文件。\",\n \"xai_oauth_url_label\": \"授权链接:\",\n \"xai_open_link\": \"打开链接\",\n \"xai_copy_link\": \"复制链接\",\n \"xai_oauth_status_waiting\": \"等待认证中...\",\n \"xai_oauth_status_success\": \"认证成功!\",\n \"xai_oauth_status_error\": \"认证失败:\",\n \"xai_oauth_start_error\": \"启动 xAI OAuth 失败:\",\n \"xai_oauth_polling_error\": \"检查认证状态失败:\",\n \"xai_callback_label\": \"回调 URL 或授权码\",\n \"xai_callback_placeholder\": \"粘贴页面显示的 code,或完整 callback URL\",\n \"xai_callback_hint\": \"Grok 有时只在页面显示 code。可直接粘贴 code,系统会自动拼接为 http://127.0.0.1:56121/callback?... 后提交。\",\n \"xai_callback_required\": \"请先粘贴 Grok 页面显示的 code 或完整回调 URL。\",\n \"xai_callback_state_missing\": \"缺少本次 xAI 登录的 state,请重新开始 xAI 登录后再提交 code。\",\n \"oauth_callback_label\": \"回调 URL\",\n \"oauth_callback_placeholder\": \"http://localhost:1455/auth/callback?code=...&state=...\",\n \"oauth_callback_hint\": \"远程浏览器模式:当授权跳转到 http://localhost:... 后,复制完整 URL 并提交到这里。\",\n \"oauth_callback_button\": \"提交回调 URL\",\n \"oauth_callback_required\": \"请先粘贴完整的回调 URL。\",\n \"oauth_callback_success\": \"回调 URL 已提交,请继续等待认证。\",\n \"oauth_callback_error\": \"提交回调 URL 失败:\",\n \"oauth_callback_upgrade_hint\": \"请更新CLI Proxy API或检查连接\",\n \"oauth_callback_status_success\": \"回调 URL 已提交,等待认证中...\",\n \"oauth_callback_status_error\": \"回调 URL 提交失败:\",\n \"missing_state\": \"无法获取认证状态参数\",\n \"login_another_account\": \"登录另一个账号\",\n \"view_auth_files\": \"查看认证文件\",\n \"iflow_oauth_title\": \"iFlow OAuth\",\n \"iflow_oauth_button\": \"开始 iFlow 登录\",\n \"iflow_oauth_hint\": \"通过 OAuth 流程登录 iFlow 服务,自动获取并保存认证文件。\",\n \"iflow_oauth_url_label\": \"授权链接:\",\n \"iflow_open_link\": \"打开链接\",\n \"iflow_copy_link\": \"复制链接\",\n \"iflow_oauth_status_waiting\": \"等待认证中...\",\n \"iflow_oauth_status_success\": \"认证成功!\",\n \"iflow_oauth_status_error\": \"认证失败:\",\n \"iflow_oauth_start_error\": \"启动 iFlow OAuth 失败:\",\n \"iflow_oauth_polling_error\": \"检查认证状态失败:\",\n \"remote_access_disabled\": \"远程访问不支持此登录方式,请从本地 (localhost) 访问\"\n },\n \"stats\": {\n \"success\": \"成功\",\n \"failure\": \"失败\"\n },\n \"status_bar\": {\n \"success_short\": \"✓\",\n \"failure_short\": \"✗\",\n \"no_requests\": \"无请求\"\n },\n \"usage_stats\": {\n \"title\": \"使用统计\",\n \"total_requests\": \"总请求数\",\n \"success_requests\": \"成功请求\",\n \"failed_requests\": \"失败请求\",\n \"total_tokens\": \"总Token数\",\n \"cached_tokens\": \"缓存 Tokens\",\n \"cache_read_tokens\": \"缓存读取 Tokens\",\n \"cache_write_tokens\": \"缓存写入 Tokens\",\n \"reasoning_tokens\": \"思考 Tokens\",\n \"rpm_30m\": \"RPM\",\n \"tpm_30m\": \"TPM\",\n \"rate_30m\": \"近30分钟速率\",\n \"model_name\": \"模型名称\",\n \"model_price_settings\": \"模型价格设置\",\n \"saved_prices\": \"已保存的价格\",\n \"requests_trend\": \"请求趋势\",\n \"tokens_trend\": \"Token 使用趋势\",\n \"api_details\": \"API 详细统计\",\n \"by_hour\": \"按小时\",\n \"by_day\": \"按天\",\n \"range_filter\": \"时间范围\",\n \"range_all\": \"全部时间\",\n \"range_1h\": \"最近1小时\",\n \"range_7h\": \"最近7小时\",\n \"range_24h\": \"最近24小时\",\n \"range_7d\": \"最近7天\",\n \"range_30d\": \"最近30天\",\n \"filter_all\": \"全部\",\n \"clear_filters\": \"清空筛选\",\n \"refresh\": \"刷新\",\n \"export\": \"导出数据\",\n \"import\": \"导入数据\",\n \"export_csv\": \"导出 CSV\",\n \"export_json\": \"导出 JSON\",\n \"export_success\": \"使用统计已导出\",\n \"import_success\": \"导入完成:新增 {{added}},跳过 {{skipped}},总请求 {{total}},失败 {{failed}}\",\n \"import_success_migrated_v1\": \"导入完成:新增 {{added}},跳过 {{skipped}},总请求 {{total}},失败 {{failed}}。Token contract 已从 schema v1 迁移到 v{{schemaVersion}}。\",\n \"import_invalid\": \"导入文件格式不正确\",\n \"import_review_title\": \"检查使用统计导入\",\n \"import_review_intro\": \"导入采用追加合并。请先检查此快照,再合并到当前 Core 使用统计。\",\n \"import_review_summary\": \"版本 {{version}} · {{details}} 条请求明细\",\n \"import_review_duplicates\": \"文件内可能重复 {{count}} 条\",\n \"import_review_overlaps\": \"与当前统计可能重叠 {{count}} 条\",\n \"import_review_uncertain_identities\": \"{{count}} 条明细缺少稳定时间戳,未参与重复与重叠检测\",\n \"import_review_current_unavailable\": \"当前使用统计不可用,因此无法完成重叠检测。\",\n \"import_error_usage_version_unsupported\": \"不支持的使用统计导出版本;仅可导入 schema v1 或 v2。\",\n \"import_error_usage_shape_invalid\": \"使用统计导出的嵌套结构或字段类型无效。\",\n \"import_error_usage_v1_token_contract_invalid\": \"schema v1 Token contract 无效,无法安全迁移。\",\n \"import_error_usage_v1_cache_semantics_ambiguous\": \"schema v1 缓存语义不明确;含缓存的明细必须提供 uncached_input_tokens 才能无损迁移。\",\n \"import_error_usage_v2_token_contract_invalid\": \"无效的 canonical schema v2 Token contract。\",\n \"import_error_usage_aggregate_overflow\": \"导入会导致 Core 使用统计聚合溢出;没有合并任何使用数据。\",\n \"import_review_confirm\": \"仍然导入\",\n \"chart_line_label_1\": \"曲线 1\",\n \"chart_line_label_2\": \"曲线 2\",\n \"chart_line_label_3\": \"曲线 3\",\n \"chart_line_label_4\": \"曲线 4\",\n \"chart_line_label_5\": \"曲线 5\",\n \"chart_line_label_6\": \"曲线 6\",\n \"chart_line_label_7\": \"曲线 7\",\n \"chart_line_label_8\": \"曲线 8\",\n \"chart_line_label_9\": \"曲线 9\",\n \"chart_line_hidden\": \"不显示\",\n \"chart_line_actions_label\": \"曲线数量\",\n \"chart_line_add\": \"增加曲线\",\n \"chart_line_all\": \"全部\",\n \"chart_line_delete\": \"删除曲线\",\n \"chart_line_hint\": \"最多同时显示 9 条模型曲线\",\n \"no_data\": \"暂无数据\",\n \"loading_error\": \"加载失败\",\n \"api_endpoint\": \"API端点\",\n \"requests_count\": \"请求次数\",\n \"tokens_count\": \"Token数量\",\n \"model_cache_rate\": \"缓存读取占比\",\n \"model_cache_rate_hint\": \"缓存读取占比 = 缓存读取 Token / 总输入 Token。仅当该模型统计中的每个请求都有已记录的明细时显示;否则为未设置。\",\n \"models\": \"模型统计\",\n \"success_rate\": \"成功率\",\n \"total_cost\": \"总花费\",\n \"total_cost_hint\": \"基于已设置的模型单价\",\n \"model_price_title\": \"模型价格\",\n \"model_price_reset\": \"清除价格\",\n \"model_price_model_label\": \"选择模型\",\n \"model_price_select_placeholder\": \"选择模型\",\n \"model_price_select_hint\": \"模型列表来自使用统计明细\",\n \"model_price_prompt\": \"提示价格\",\n \"model_price_completion\": \"补全价格\",\n \"model_price_cache\": \"缓存读取价格\",\n \"model_price_cache_write\": \"缓存写入价格\",\n \"model_price_cache_write_auto\": \"自动\",\n \"model_price_cache_write_hint\": \"留空时使用当前提示价格;已有“自动”设置也会跟随此默认值。如需不同计费请显式填写缓存写入价格。\",\n \"model_price_invalid\": \"请输入大于或等于 0 的有效数字。\",\n \"model_price_save\": \"保存价格\",\n \"model_price_empty\": \"暂未设置任何模型价格\",\n \"model_price_model\": \"模型\",\n \"model_price_saved\": \"模型价格已保存\",\n \"model_price_model_required\": \"请选择要设置价格的模型\",\n \"pricing_title\": \"价格估算工作台\",\n \"pricing_subtitle\": \"使用当前 API catalog、浏览器本地 Profile、usage Token、service tier 和 context band 统一计算 API 等价 USD。\",\n \"pricing_back\": \"返回使用统计\",\n \"pricing_open\": \"配置价格\",\n \"pricing_catalog\": \"预设 Catalog\",\n \"pricing_catalog_version\": \"Catalog 版本\",\n \"pricing_catalog_title\": \"预设价格表\",\n \"pricing_catalog_description\": \"全部 {{count}} 个已核实预设模型始终可见,不依赖 usage;Catalog 更新日期为 {{asOf}},每行均链接官方来源,不包含浏览器本地自定义覆盖。\",\n \"pricing_catalog_unit\": \"USD / 1M Tokens\",\n \"pricing_catalog_table_label\": \"完整预设价格表\",\n \"pricing_catalog_context_band\": \"上下文档位\",\n \"pricing_catalog_short_band\": \"短上下文\",\n \"pricing_catalog_long_band\": \"长上下文\",\n \"pricing_catalog_short_range\": \"< {{threshold}} 输入 Token\",\n \"pricing_catalog_long_range\": \"≥ {{threshold}} 输入 Token · 整条请求\",\n \"pricing_catalog_all_contexts\": \"全部受支持上下文\",\n \"pricing_catalog_aliases\": \"别名:{{aliases}}\",\n \"pricing_catalog_model_notes\": \"模型说明\",\n \"pricing_catalog_verified_as_of\": \"核对日期:{{asOf}}\",\n \"pricing_catalog_unavailable\": \"不可用\",\n \"pricing_catalog_fast_explicit_summary\": \"入 {{input}} · 缓存读 {{cached}} · 写 {{cacheWrite}} · 出 {{output}}\",\n \"pricing_source\": \"官方来源\",\n \"pricing_api_source\": \"API 价格来源\",\n \"pricing_estimate_notice\": \"本地 API 等价金额仅供参考,不是供应商账单。\",\n \"pricing_browser_notice\": \"价格 Profile 仅保存在当前浏览器,并会被此浏览器打开的不同 Core 实例共享。\",\n \"pricing_history_notice\": \"全部历史请求始终按当前 catalog 和 Profile 重新计算。\",\n \"pricing_migrated_v2\": \"旧版 v2 价格已完整保留为 v3 Profile;与预设短价一致的覆盖项可在确认后改用完整预设。\",\n \"pricing_profile_warning\": \"已保存的价格 Profile 含有无效数据,请检查当前默认值后再保存。\",\n \"pricing_profile_save_failed\": \"无法在当前浏览器保存价格 Profile。\",\n \"pricing_profile_saved\": \"价格 Profile 已保存\",\n \"pricing_summary\": \"价格覆盖摘要\",\n \"pricing_api_usd_estimate\": \"本地 API 等价估算(USD)\",\n \"pricing_api_usd\": \"本地 API 等价金额\",\n \"pricing_api_request_coverage\": \"本地估算请求覆盖率\",\n \"pricing_requests_unit\": \"条请求\",\n \"pricing_models_metric\": \"已定价模型 / 实际模型\",\n \"pricing_request_coverage\": \"已定价请求覆盖率\",\n \"pricing_token_coverage\": \"已定价 Token 覆盖率\",\n \"pricing_assumed_tier\": \"假设档位请求数\",\n \"pricing_assumed_tier_hint\": \"历史或未知档位按 Std 估算\",\n \"pricing_cost_incomplete\": \"本地估算不完整;未匹配、不支持或缺少事件明细的用量未计入金额。\",\n \"pricing_partial_coverage\": \"当前为部分本地估算:请求覆盖 {{request}}%,Token 覆盖 {{token}}%。\",\n \"pricing_entry_title\": \"本地 API 等价估算\",\n \"pricing_entry_description\": \"金额完全由当前浏览器使用 catalog、Profile、Token、service tier 和 context band 计算。\",\n \"pricing_models_covered\": \"已定价 {{priced}} / {{total}} 个模型\",\n \"pricing_requests_covered\": \"请求覆盖 {{percent}}%\",\n \"pricing_models_ratio\": \"模型覆盖 {{percent}}%\",\n \"pricing_search\": \"搜索实际用量模型\",\n \"pricing_filter\": \"价格状态筛选\",\n \"pricing_filter_all\": \"全部\",\n \"pricing_filter_preset\": \"预设\",\n \"pricing_filter_custom\": \"自定义\",\n \"pricing_filter_unmatched\": \"本地未匹配\",\n \"pricing_filter_anomaly\": \"异常\",\n \"pricing_import_action\": \"导入价格 Profile\",\n \"pricing_export_action\": \"导出价格 Profile\",\n \"pricing_reset_action\": \"恢复全部默认\",\n \"pricing_export_success\": \"价格 Profile 已导出\",\n \"pricing_import_title\": \"导入价格 Profile\",\n \"pricing_import_confirm\": \"用这个已通过校验的文件替换当前浏览器 v3 API 价格 Profile?使用统计不会改变。\",\n \"pricing_import_success\": \"价格 Profile 已导入\",\n \"pricing_import_invalid\": \"价格 Profile 无效\",\n \"pricing_reset_title\": \"恢复全部预设价格\",\n \"pricing_reset_confirm\": \"清除全部 v3 API 价格覆盖与别名?使用统计将保持不变。\",\n \"pricing_reset_success\": \"已恢复预设价格\",\n \"pricing_empty_title\": \"暂无实际用量模型\",\n \"pricing_empty_description\": \"配置器只展示真实 usage 中出现过的模型。请先产生或导入使用统计。\",\n \"pricing_standard_short\": \"Standard 短上下文\",\n \"pricing_standard_api\": \"API Standard\",\n \"pricing_fast\": \"Fast\",\n \"pricing_fast_policies\": \"Fast 计费规则\",\n \"pricing_fast_policy_title\": \"API Priority 与 ChatGPT Standard/Fast 使用各自独立的官方倍率。\",\n \"pricing_api_priority_multiplier\": \"API ×{{multiplier}}\",\n \"pricing_api_priority_multiplier_official\": \"官方 API ×{{multiplier}}\",\n \"pricing_api_priority_multiplier_custom\": \"自定义 API ×{{multiplier}}\",\n \"pricing_api_priority_explicit_rates\": \"API 独立费率\",\n \"pricing_long_context\": \"长上下文\",\n \"pricing_usage\": \"当前用量\",\n \"pricing_no_usage_requests\": \"无用量请求\",\n \"pricing_no_usage_tokens\": \"无用量 Token\",\n \"pricing_matching_presets_notice\": \"有 {{count}} 个旧式自定义价格与预设短价一致,但仍在遮蔽官方 Fast 和长上下文规则。\",\n \"pricing_matching_presets_title\": \"改用完整预设\",\n \"pricing_matching_presets_confirm\": \"仅移除这 {{count}} 个匹配的覆盖项,让它们继承官方 Fast 和长上下文规则?其他自定义价格和别名不会改变。\",\n \"pricing_matching_presets_action\": \"改用完整预设\",\n \"pricing_matching_presets_success\": \"{{count}} 个匹配的覆盖项已改用完整预设\",\n \"pricing_unmatched\": \"无精确匹配\",\n \"pricing_match_custom\": \"自定义\",\n \"pricing_match_preset\": \"预设\",\n \"pricing_match_alias\": \"别名\",\n \"pricing_match_none\": \"未匹配\",\n \"pricing_anomaly\": \"需要检查\",\n \"pricing_long_unsupported\": \"Fast 不支持长上下文\",\n \"pricing_fast_configured\": \"已配置 Fast\",\n \"pricing_long_requests\": \"{{count}} 条长上下文请求\",\n \"pricing_short_only\": \"仅短上下文用量\",\n \"pricing_single_rate_card\": \"所有受支持上下文共用一张 API 费率表\",\n \"pricing_no_matches\": \"没有模型符合当前搜索和筛选条件。\",\n \"pricing_catalog_footer\": \"API Catalog 包含 {{count}} 个已核实模型 · 核对日期 {{asOf}} · 单位 USD / 1M Tokens。\",\n \"pricing_editor_title\": \"API Token 价格编辑器\",\n \"pricing_editor_domain_notice\": \"此 Profile 影响所有匹配用量的本地 API 等价估算。\",\n \"pricing_alias\": \"精确别名目标\",\n \"pricing_alias_hint\": \"将当前实际模型名映射到一个精确的预设或自定义模型;启用别名后不再直接编辑费率。\",\n \"pricing_alias_canonical_hint\": \"当前模型已精确命中预设,不需要设置别名。\",\n \"pricing_standard_rates\": \"Standard 费率 · USD / 1M\",\n \"pricing_fast_rates\": \"Fast 费率 · USD / 1M\",\n \"pricing_rate_input\": \"输入\",\n \"pricing_rate_cached_input\": \"缓存输入\",\n \"pricing_rate_cache_write\": \"缓存写入\",\n \"pricing_rate_output\": \"输出\",\n \"pricing_auto\": \"自动 / 继承输入价\",\n \"pricing_fast_mode_none\": \"暂不配置\",\n \"pricing_fast_mode_rates\": \"显式费率\",\n \"pricing_fast_mode_multiplier\": \"Standard × 倍率\",\n \"pricing_fast_multiplier\": \"Fast 倍率\",\n \"pricing_fast_long_supported\": \"允许 Fast 与长上下文组合\",\n \"pricing_long_enable\": \"启用长上下文费率表\",\n \"pricing_long_threshold\": \"输入 Token 阈值\",\n \"pricing_preview_affected\": \"受影响的用量请求\",\n \"pricing_preview_coverage\": \"本地请求覆盖率\",\n \"pricing_preview_cost\": \"重算后本地估算\",\n \"pricing_editor_error_rates\": \"请为所有必填项输入有效的非负费率。\",\n \"pricing_editor_error_threshold\": \"请输入大于 0 的长上下文整数阈值。\",\n \"pricing_editor_error_multiplier\": \"请输入大于 0 的 Fast 倍率。\",\n \"pricing_editor_error_profile\": \"别名或费率表与当前价格 Profile 冲突。\",\n \"pricing_restore_preset\": \"恢复预设\",\n \"pricing_delete_config\": \"删除配置\",\n \"pricing_preset_restored\": \"已恢复预设\",\n \"pricing_custom_deleted\": \"已删除自定义价格\",\n \"cost_trend\": \"花费统计\",\n \"pricing_api_usd_trend\": \"本地 API 等价估算趋势(USD)\",\n \"cost_axis_label\": \"花费 ($)\",\n \"cost_need_price\": \"请先设置模型价格\",\n \"cost_need_usage\": \"暂无使用数据,无法计算花费\",\n \"cost_no_data\": \"没有可计算的花费数据\",\n \"credential_stats\": \"凭证统计\",\n \"credential_name\": \"凭证\",\n \"token_breakdown\": \"Token 类型分布\",\n \"request_events_title\": \"请求事件明细\",\n \"request_events_filter_model\": \"模型\",\n \"request_events_filter_source\": \"来源\",\n \"request_events_filter_auth_index\": \"认证索引\",\n \"request_events_filter_tier\": \"服务层级\",\n \"request_events_filter_effort\": \"推理强度\",\n \"request_events_filter_cache\": \"缓存状态\",\n \"request_events_numeric_filter\": \"Token 数值范围\",\n \"request_events_numeric_metric\": \"Token 指标\",\n \"request_events_numeric_any\": \"选择指标\",\n \"request_events_numeric_min\": \"最小值\",\n \"request_events_numeric_max\": \"最大值\",\n \"request_events_numeric_invalid\": \"请输入非负整数边界。\",\n \"request_events_numeric_range_invalid\": \"最小值不能大于最大值。\",\n \"request_events_numeric_help\": \"选择 Token 指标,并填写至少一个边界;点击“应用范围”后才会更新结果。\",\n \"request_events_numeric_preview\": \"条件预览\",\n \"request_events_numeric_active_label\": \"Token 范围:{{filter}}\",\n \"request_events_numeric_clear\": \"清除范围\",\n \"request_events_numeric_apply\": \"应用范围\",\n \"request_events_cache_present\": \"有缓存 Token\",\n \"request_events_cache_absent\": \"无缓存 Token\",\n \"request_events_range_page\": \"跟随页面({{range}})\",\n \"request_events_column_settings\": \"列设置\",\n \"request_events_restore_default_columns\": \"恢复默认列\",\n \"request_events_timestamp\": \"时间\",\n \"request_events_source\": \"来源\",\n \"request_events_auth_index\": \"认证索引\",\n \"request_events_tier\": \"服务层级\",\n \"request_events_tier_fast\": \"Fast\",\n \"request_events_tier_standard\": \"Std\",\n \"request_events_tier_tooltip_effective\": \"Core 已确认实际服务档位:{{tier}}。\",\n \"request_events_tier_tooltip_response\": \"上游响应回报服务档位:{{tier}}。\",\n \"request_events_tier_tooltip_request\": \"根据请求档位显示为 {{tier}},实际计费可能不同。\",\n \"request_events_tier_tooltip_assumed\": \"历史或未知档位,按 Std 估算。\",\n \"request_events_tier_legacy_unknown\": \"历史 / 未知\",\n \"request_events_tier_other\": \"其他:{{tier}}\",\n \"request_events_effort\": \"推理强度\",\n \"request_events_effort_legacy_unknown\": \"历史 / 未知\",\n \"request_events_result\": \"结果\",\n \"time\": \"延迟\",\n \"avg_time\": \"平均延迟\",\n \"latency_unit_hint\": \"耗时取自后端字段 {{field}},按 {{unit}} 解释后再格式化显示。\",\n \"duration_unit_d\": \"天\",\n \"duration_unit_h\": \"时\",\n \"duration_unit_m\": \"分\",\n \"duration_unit_s\": \"秒\",\n \"duration_unit_ms\": \"毫秒\",\n \"request_events_empty_title\": \"暂无请求事件\",\n \"request_events_empty_desc\": \"当前时间范围内暂无可用的请求明细数据。\",\n \"request_events_no_result_title\": \"没有匹配结果\",\n \"request_events_no_result_desc\": \"请尝试调整筛选条件,或清空当前筛选。\",\n \"request_events_count\": \"{{count}} 条事件\",\n \"request_events_limit_hint\": \"为保证渲染性能,仅展示 {{shown}} / {{total}} 条事件。\",\n \"request_events_total_input_tokens\": \"总输入 Token\",\n \"request_events_non_cache_read_input_tokens\": \"非缓存读取输入 Token\",\n \"request_events_non_cache_read_input_tokens_hint\": \"按总输入 Token - 缓存读取 Token 在 Panel 本地计算,结果不小于 0。这是缓存率的补集,不是普通提示词输入。缓存写入 Token 单独展示和计价。\",\n \"request_events_total_output_tokens\": \"总输出 Token\",\n \"request_events_explicit_output_tokens\": \"显式输出 Token\",\n \"request_events_output_tokens_hint\": \"显式输出 Token = 总输出 Token - 思考 Token,结果不小于 0。\",\n \"request_events_cache_rate\": \"缓存读取占比\",\n \"request_events_cache_rate_hint\": \"缓存读取占比 = 缓存读取 Token / 总输入 Token。0% 和低于 25% 为偏低,25% 至低于 60% 为一般,60% 及以上为较高;缓存读取超过总输入时标记为异常。仅缓存读取数值按此状态着色;其他 Token 数值保持中性。\",\n \"request_events_cache_rate_low\": \"偏低\",\n \"request_events_cache_rate_medium\": \"一般\",\n \"request_events_cache_rate_high\": \"较高\",\n \"request_events_cache_rate_anomaly\": \"异常\",\n \"request_events_cache_rate_cell_label\": \"缓存读取 {{tokens}} Token,占比 {{rate}},状态{{tone}}\",\n \"request_events_cache_rate_anomaly_label\": \"缓存读取 Token({{tokens}})超过总输入 Token({{input}})。\",\n \"request_events_table_region\": \"请求事件明细表\",\n \"input_tokens\": \"输入 Tokens\",\n \"output_tokens\": \"输出 Tokens\",\n \"last_updated\": \"更新于\"\n },\n \"service_health\": {\n \"title\": \"服务健康监测\",\n \"window\": \"最近 7 天\",\n \"oldest\": \"最早\",\n \"newest\": \"最新\"\n },\n \"logs\": {\n \"title\": \"日志查看\",\n \"runtime_unknown\": \"当前运行端:识别中\",\n \"runtime_cpa\": \"当前运行端:CPA\",\n \"runtime_home\": \"当前运行端:Home\",\n \"refresh_button\": \"刷新日志\",\n \"clear_button\": \"清空日志\",\n \"fullscreen_button\": \"全屏显示\",\n \"exit_fullscreen_button\": \"退出全屏\",\n \"download_button\": \"下载日志\",\n \"error_log_button\": \"选择错误日志\",\n \"error_logs_modal_title\": \"错误请求日志\",\n \"error_logs_description\": \"请选择要打开或下载的错误请求日志文件(仅在关闭请求日志时生成)。\",\n \"error_logs_home_unavailable\": \"Home 模式下请在日志内容页查看数据库日志,错误请求日志列表仅适用于 CPA 文件日志。\",\n \"error_logs_request_log_enabled\": \"当前已开启请求日志,按接口约定错误请求日志列表会始终为空。关闭请求日志后再刷新即可查看。\",\n \"error_logs_empty\": \"暂无错误请求日志文件\",\n \"error_logs_load_error\": \"加载错误日志列表失败\",\n \"error_logs_size\": \"大小\",\n \"error_logs_modified\": \"最后修改\",\n \"error_logs_open\": \"打开\",\n \"error_logs_download\": \"下载\",\n \"error_log_view_title\": \"错误请求日志详情\",\n \"error_log_open_failed\": \"打开错误日志失败\",\n \"error_log_empty_content\": \"该错误日志没有内容\",\n \"error_log_copy_success\": \"错误日志内容已复制\",\n \"error_log_download_success\": \"错误日志下载成功\",\n \"request_log_download_title\": \"下载报文\",\n \"request_log_download_confirm\": \"是否要下载id为{{id}}的报文?\",\n \"request_log_download_success\": \"报文下载成功\",\n \"empty_title\": \"暂无日志记录\",\n \"empty_desc\": \"当启用\\\"日志记录到文件\\\"功能后,日志将显示在这里\",\n \"cpa_file_logging_required\": \"当前连接的是 CPA,日志查看需要先开启“日志记录到文件”。\",\n \"cpa_file_logging_required_title\": \"需要开启文件日志\",\n \"cpa_file_logging_required_desc\": \"CPA 的日志接口读取本地日志文件。请在配置中开启 logging-to-file 后再刷新查看。\",\n \"file_logging_required\": \"当前日志接口需要先开启“日志记录到文件”后才能读取文件日志。\",\n \"file_logging_required_title\": \"需要开启文件日志\",\n \"file_logging_required_desc\": \"当前日志接口读取本地日志文件。请在配置中开启 logging-to-file 后再刷新查看。\",\n \"home_clear_unavailable\": \"Home 日志来自数据库查询,当前不支持从这里清空。\",\n \"log_content\": \"日志内容\",\n \"loading\": \"正在加载日志...\",\n \"load_error\": \"加载日志失败\",\n \"clear_confirm\": \"确定要清空所有日志吗?此操作不可恢复!\",\n \"clear_success\": \"日志已清空\",\n \"download_success\": \"日志下载成功\",\n \"auto_refresh\": \"自动刷新\",\n \"auto_refresh_enabled\": \"自动刷新已开启\",\n \"auto_refresh_disabled\": \"自动刷新已关闭\",\n \"load_more_hint\": \"向上滚动加载更多\",\n \"hidden_lines\": \"已隐藏 {{count}} 行\",\n \"loaded_lines\": \"已载入 {{count}} 行\",\n \"filtered_lines\": \"已过滤 {{count}} 行\",\n \"hide_management_logs\": \"屏蔽 {{prefix}} 日志\",\n \"show_raw_logs\": \"显示原始日志\",\n \"show_raw_logs_hint\": \"直接显示原始日志文本,方便多行复制\",\n \"search_placeholder\": \"搜索日志内容或关键字\",\n \"filter_panel_title\": \"结构化筛选\",\n \"filter_panel_expand\": \"展开结构化筛选\",\n \"filter_panel_collapse\": \"收起结构化筛选\",\n \"filter_panel_active_count\": \"已选 {{count}} 项\",\n \"filter_method\": \"请求方法\",\n \"filter_status\": \"状态码\",\n \"filter_path\": \"路径\",\n \"filter_path_empty\": \"暂无可筛选路径\",\n \"filter_status_2xx\": \"2xx\",\n \"filter_status_3xx\": \"3xx\",\n \"filter_status_4xx\": \"4xx\",\n \"filter_status_5xx\": \"5xx\",\n \"clear_filters\": \"清空筛选\",\n \"search_empty_title\": \"未找到匹配的日志\",\n \"search_empty_desc\": \"尝试更换关键字或清空筛选条件。\",\n \"double_click_copy_hint\": \"双击复制日志原文\",\n \"copy_success\": \"已复制日志原文\",\n \"copy_failed\": \"复制失败\",\n \"lines\": \"行\",\n \"removed\": \"已过滤\",\n \"upgrade_required_title\": \"需要升级 CLI Proxy API\",\n \"upgrade_required_desc\": \"当前服务器版本不支持日志查看功能,请升级到最新版本的 CLI Proxy API 以使用此功能。\"\n },\n \"config_management\": {\n \"title\": \"配置面板\",\n \"editor_title\": \"配置文件\",\n \"reload\": \"重新加载\",\n \"reload_confirm_message\": \"重新加载将丢弃你当前未保存的修改,确定继续吗?\",\n \"save\": \"保存\",\n \"description\": \"通过可视化或者源文件方式编辑 config.yaml 配置文件\",\n \"status_idle\": \"等待操作\",\n \"status_loading\": \"加载配置中...\",\n \"status_loading_short\": \"加载中\",\n \"status_loaded\": \"配置已加载\",\n \"status_loaded_short\": \"已加载\",\n \"status_dirty\": \"有未保存的更改\",\n \"status_dirty_short\": \"未保存\",\n \"status_disconnected\": \"请先连接服务器以加载配置\",\n \"status_disconnected_short\": \"未连接\",\n \"status_load_failed\": \"加载失败\",\n \"status_load_failed_short\": \"失败\",\n \"status_saving\": \"正在保存配置...\",\n \"status_saving_short\": \"保存中\",\n \"status_saved\": \"配置保存完成\",\n \"status_save_failed\": \"保存失败\",\n \"save_success\": \"配置已保存\",\n \"error_yaml_not_supported\": \"服务器未返回 YAML 格式,请确认 /config.yaml 接口可用\",\n \"visual_mode_unavailable\": \"YAML 语法修复前无法使用可视化编辑\",\n \"visual_mode_unavailable_short\": \"YAML错误\",\n \"validation_blocked_short\": \"待修复\",\n \"visual_mode_unavailable_detail\": \"当前配置存在无效 YAML,暂时无法使用可视化编辑:{{message}}\",\n \"visual_mode_save_blocked\": \"请先修复 YAML 语法错误,再从可视化模式保存\",\n \"visual_mode_latest_yaml_invalid\": \"服务端最新配置包含无效 YAML,请先切回源码模式检查后再保存可视化修改:{{message}}\",\n \"editor_placeholder\": \"key: value\",\n \"search_placeholder\": \"搜索配置内容...\",\n \"search_button\": \"搜索\",\n \"search_no_results\": \"无结果\",\n \"search_prev\": \"上一个\",\n \"search_next\": \"下一个\",\n \"diff\": {\n \"title\": \"确认变更\",\n \"current\": \"当前配置\",\n \"modified\": \"修改后\",\n \"confirm\": \"确认保存\",\n \"no_changes\": \"未检测到变更\"\n },\n \"tabs\": {\n \"visual\": \"可视化编辑\",\n \"source\": \"源文件编辑\"\n },\n \"visual\": {\n \"notice\": \"可视化模式覆盖常用字段,未覆盖的配置仍需在源文件模式中查看或编辑。\",\n \"quick_jump\": \"快速跳转\",\n \"subsection_navigation\": \"{{section}}分组\",\n \"sections\": {\n \"server\": {\n \"title\": \"服务器配置\",\n \"description\": \"基础服务器设置\",\n \"listener_group_title\": \"监听地址\",\n \"host\": \"主机地址\",\n \"port\": \"端口\"\n },\n \"tls\": {\n \"title\": \"TLS/SSL 配置\",\n \"description\": \"HTTPS 安全连接设置\",\n \"enable\": \"启用 TLS\",\n \"enable_desc\": \"启用 HTTPS 安全连接\",\n \"cert\": \"证书文件路径\",\n \"key\": \"私钥文件路径\"\n },\n \"remote\": {\n \"title\": \"远程管理\",\n \"description\": \"远程访问和控制面板设置\",\n \"allow_remote\": \"允许远程访问\",\n \"allow_remote_desc\": \"允许从其他主机访问管理接口\",\n \"disable_panel\": \"禁用控制面板\",\n \"disable_panel_desc\": \"禁用内置的 Web 控制面板\",\n \"disable_auto_update_panel\": \"禁用面板自动更新\",\n \"disable_auto_update_panel_desc\": \"首次缺失时仍可下载,但不再从 GitHub 后台自动更新\",\n \"secret_key\": \"管理密钥\",\n \"secret_key_placeholder\": \"设置管理密钥\",\n \"panel_repo\": \"面板仓库\"\n },\n \"auth\": {\n \"title\": \"认证配置\",\n \"description\": \"API 密钥与认证文件目录设置\",\n \"group_title\": \"访问与认证\",\n \"group_description\": \"远程管理、控制面板访问、API 密钥与认证文件\",\n \"credentials_title\": \"认证文件与 API 密钥\",\n \"auth_dir\": \"认证文件目录 (auth-dir)\",\n \"auth_dir_hint\": \"存放认证文件的目录路径(支持 ~)\"\n },\n \"system\": {\n \"title\": \"系统配置\",\n \"description\": \"调试、日志、统计与性能调试设置\",\n \"group_navigation_label\": \"系统配置分组\",\n \"runtime_group_title\": \"运行与运维\",\n \"runtime_group_desc\": \"核心开关、日志、用量统计与签名处理\",\n \"plugins_group_title\": \"插件\",\n \"plugins_group_desc\": \"插件运行开关、来源与私有源认证\",\n \"headers_group_title\": \"请求头与 Codex 策略\",\n \"headers_group_desc\": \"Claude/Codex 默认请求头与异常推理重试策略\",\n \"network_group_title\": \"网络与路由\",\n \"network_group_desc\": \"代理、重试、会话亲和、图像与端点行为\",\n \"core_controls_title\": \"核心运行开关\",\n \"core_controls_desc\": \"集中管理诊断、高并发与文件日志等顶层开关\",\n \"plugin_runtime_title\": \"插件运行\",\n \"plugin_runtime_desc\": \"启用或停用动态库插件加载\",\n \"operations_title\": \"日志、用量与签名处理\",\n \"operations_desc\": \"配置保留上限、内存用量统计与 Antigravity 签名行为\",\n \"debug\": \"调试模式\",\n \"debug_desc\": \"启用详细的调试日志\",\n \"commercial_mode\": \"商业模式\",\n \"commercial_mode_desc\": \"禁用高开销中间件以支持高并发\",\n \"logging_to_file\": \"写入日志文件\",\n \"logging_to_file_desc\": \"将日志保存到文件\",\n \"plugins_enabled\": \"启用插件系统\",\n \"plugins_enabled_desc\": \"启用标准动态库插件加载;具体插件实例仍在插件管理页启停\",\n \"plugin_store_sources\": \"第三方插件源\",\n \"plugin_store_sources_desc\": \"追加插件商店 registry 源;内置官方源始终保留\",\n \"plugin_store_sources_label\": \"插件源 registry URL (plugins.store-sources)\",\n \"plugin_store_sources_placeholder\": \"https://example.com/cliproxy-plugins/registry.json\",\n \"plugin_store_sources_hint\": \"每行一个 registry.json URL,保存时会过滤空行\",\n \"plugin_store_auth\": \"插件商店认证规则\",\n \"plugin_store_auth_desc\": \"为私有注册表、GitHub Release 元数据或制品下载配置认证 Header\",\n \"plugin_store_auth_hint\": \"只填写环境变量名,不要填写真实 token。后端会从运行时环境读取对应值。\",\n \"store_auth_empty\": \"尚未配置认证规则。公开插件源不需要配置。\",\n \"store_auth_rule\": \"认证规则\",\n \"store_auth_add\": \"添加认证规则\",\n \"store_auth_match\": \"匹配的 URL 前缀\",\n \"store_auth_type\": \"认证类型\",\n \"store_auth_apply_to\": \"应用到\",\n \"store_auth_apply_to_hint\": \"不选择时,该规则会应用到所有请求类型。\",\n \"store_auth_apply_registry\": \"注册表\",\n \"store_auth_apply_metadata\": \"元数据\",\n \"store_auth_apply_artifact\": \"制品\",\n \"store_auth_type_none\": \"无\",\n \"store_auth_type_bearer\": \"Bearer\",\n \"store_auth_type_basic\": \"Basic\",\n \"store_auth_type_header\": \"自定义 Header\",\n \"store_auth_type_github_token\": \"GitHub token\",\n \"store_auth_token_env\": \"Token 环境变量\",\n \"store_auth_username_env\": \"用户名环境变量\",\n \"store_auth_password_env\": \"密码环境变量\",\n \"store_auth_header_name\": \"Header 名称\",\n \"store_auth_header_value_env\": \"Header 值环境变量\",\n \"store_auth_allow_insecure\": \"允许不安全的 HTTP URL\",\n \"logs_max_size\": \"日志文件大小限制 (MB)\",\n \"error_logs_max_files\": \"错误日志保留文件数\",\n \"usage_statistics_enabled\": \"启用内存用量统计\",\n \"usage_statistics_enabled_desc\": \"启用内存中的请求用量聚合\",\n \"redis_usage_retention\": \"Redis 用量队列保留秒数\",\n \"redis_usage_retention_hint\": \"RESP 接口 LPOP/RPOP 用量队列的内存保留时间,最大 3600 秒\",\n \"antigravity_signature_cache\": \"启用 Antigravity 签名缓存\",\n \"antigravity_signature_cache_desc\": \"优先使用并校验缓存的 thinking block 签名\",\n \"antigravity_signature_strict\": \"严格校验旁路签名\",\n \"antigravity_signature_strict_desc\": \"仅在关闭签名缓存时生效,按完整 Claude protobuf 树校验\"\n },\n \"headers\": {\n \"title\": \"Header 默认值\",\n \"description\": \"Claude 与 Codex OAuth 请求在客户端缺少 Header 时使用的默认值\",\n \"claude_title\": \"Claude Header Defaults\",\n \"codex_title\": \"Codex Header Defaults\",\n \"user_agent\": \"User-Agent\",\n \"package_version\": \"Package Version\",\n \"runtime_version\": \"Runtime Version\",\n \"os\": \"OS\",\n \"arch\": \"Arch\",\n \"timeout\": \"Timeout\",\n \"stabilize_device\": \"稳定设备指纹\",\n \"stabilize_device_desc\": \"固定 OS/Arch,并按凭据/API Key 稳定软件指纹\",\n \"beta_features\": \"实验功能\",\n \"codex_identity_confuse\": \"Codex 身份混淆\",\n \"codex_identity_confuse_desc\": \"在填满优先或会话粘性路由下,按所选认证重映射 Codex 缓存键与安装身份\",\n \"codex_abnormal_reasoning_retry_title\": \"Codex 降智对抗策略\",\n \"codex_abnormal_reasoning_retry_desc\": \"检测异常推理令牌数后,控制重试、对冲请求、最终交付和客户端用量展示\",\n \"codex_abnormal_reasoning_retry_summary_title\": \"当前策略概览\",\n \"codex_abnormal_reasoning_retry_summary_desc\": \"把开关、重试动作和交付结果拆开显示,便于确认策略是否真的按预期生效。\",\n \"codex_abnormal_reasoning_retry_summary_action\": \"命中动作\",\n \"codex_abnormal_reasoning_retry_summary_stream_buffer\": \"流式缓存\",\n \"codex_abnormal_reasoning_retry_summary_hedged\": \"对冲模式\",\n \"codex_abnormal_reasoning_retry_summary_distinct_auth\": \"不同认证\",\n \"codex_abnormal_reasoning_retry_summary_on\": \"已开启\",\n \"codex_abnormal_reasoning_retry_summary_off\": \"已关闭\",\n \"codex_abnormal_reasoning_retry_group_switches_title\": \"基础开关\",\n \"codex_abnormal_reasoning_retry_group_switches_desc\": \"先决定是否启用策略、是否缓存流式响应,以及是否使用第二路请求。\",\n \"codex_abnormal_reasoning_retry_group_retry_title\": \"重试调度\",\n \"codex_abnormal_reasoning_retry_group_retry_desc\": \"设置命中后的动作、缓存上限、第二路请求延迟和对冲返回模式。\",\n \"codex_abnormal_reasoning_retry_group_match_title\": \"命中条件\",\n \"codex_abnormal_reasoning_retry_group_match_desc\": \"限定模型、推理强度、异常推理令牌数和最大重试次数。\",\n \"codex_abnormal_reasoning_retry_group_delivery_title\": \"交付与用量\",\n \"codex_abnormal_reasoning_retry_group_delivery_desc\": \"控制重试耗尽后的返回、客户端可见用量,以及多候选响应的选择方式。\",\n \"codex_abnormal_reasoning_retry_group_scope_title\": \"认证范围\",\n \"codex_abnormal_reasoning_retry_group_scope_desc\": \"按认证类型或认证 ID 缩小策略影响范围,避免误伤其他凭据。\",\n \"codex_abnormal_reasoning_retry_enabled\": \"策略快捷开关\",\n \"codex_abnormal_reasoning_retry_enabled_desc\": \"开启时自动重试,关闭时不改变响应;仅观察模式请在下方重试动作中选择\",\n \"codex_abnormal_reasoning_retry_action_label\": \"重试动作\",\n \"codex_abnormal_reasoning_retry_action_hint\": \"选择命中异常推理令牌数后的处理动作\",\n \"codex_abnormal_reasoning_retry_action_retry\": \"自动重试\",\n \"codex_abnormal_reasoning_retry_action_observe_only\": \"仅观察\",\n \"codex_abnormal_reasoning_retry_action_disabled\": \"关闭\",\n \"codex_abnormal_reasoning_retry_action_retry_desc\": \"当前会丢弃命中异常推理令牌数的响应,并按重试上限重新请求。\",\n \"codex_abnormal_reasoning_retry_action_observe_only_desc\": \"当前只记录命中结果,不会改变返回给客户端的响应。\",\n \"codex_abnormal_reasoning_retry_action_disabled_desc\": \"当前不启用降智对抗策略,匹配条件不会影响响应交付。\",\n \"codex_abnormal_reasoning_retry_stream_buffer\": \"缓存流式响应\",\n \"codex_abnormal_reasoning_retry_stream_buffer_desc\": \"在响应完成前暂存流式片段,命中异常时可避免提前交付异常内容\",\n \"codex_abnormal_reasoning_retry_stream_buffer_max_bytes_label\": \"流式缓存上限字节数\",\n \"codex_abnormal_reasoning_retry_stream_buffer_max_bytes_hint\": \"默认 16 MiB(16777216);填 0 也使用安全默认值。超出后当前流式响应以 502 失败关闭,不会透传部分内容\",\n \"codex_abnormal_reasoning_retry_hedged_retry_enabled\": \"启用对冲重试\",\n \"codex_abnormal_reasoning_retry_hedged_retry_enabled_desc\": \"首个异常响应被丢弃后,延迟启动第二路请求以降低尾延迟\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_label\": \"对冲重试模式\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_hint\": \"选择第二路请求启动后的返回策略\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_quality\": \"质量优先(默认)\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_speed\": \"速度优先\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_quality_desc\": \"当前会等待已发出的请求通道,再按交付策略挑选更稳的结果。\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_speed_desc\": \"当前会在首个可交付请求通道成功后尽快返回,用更短等待换取响应速度。\",\n \"codex_abnormal_reasoning_retry_hedge_delay_ms_label\": \"对冲延迟(毫秒)\",\n \"codex_abnormal_reasoning_retry_hedge_delay_ms_hint\": \"异常请求尝试触发重试后,启动第二路请求前等待的时间\",\n \"codex_abnormal_reasoning_retry_require_distinct_auth\": \"要求不同认证\",\n \"codex_abnormal_reasoning_retry_require_distinct_auth_desc\": \"第二路对冲请求优先选择不同的认证 ID\",\n \"codex_abnormal_reasoning_retry_model_contains_label\": \"模型包含\",\n \"codex_abnormal_reasoning_retry_model_contains_hint\": \"请求模型或解析后的上游模型包含任一值即匹配\",\n \"codex_abnormal_reasoning_retry_reasoning_efforts_label\": \"推理强度\",\n \"codex_abnormal_reasoning_retry_reasoning_efforts_hint\": \"可选的 Codex 推理强度过滤值,例如 high 或 xhigh;留空表示不限制强度\",\n \"codex_abnormal_reasoning_retry_reasoning_tokens_label\": \"推理令牌数\",\n \"codex_abnormal_reasoning_retry_reasoning_tokens_hint\": \"触发策略的非负整数令牌数\",\n \"codex_abnormal_reasoning_retry_max_retries_label\": \"最大异常重试次数\",\n \"codex_abnormal_reasoning_retry_max_retries_hint\": \"异常推理检测触发的最大额外重试次数;填 0 表示记录失败尝试并直接返回 502\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_label\": \"超过上限后的策略\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_hint\": \"选择异常重试次数超过最大值后的处理方式\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_error\": \"返回 502\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_pass_through\": \"放行异常响应\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_error_desc\": \"超过重试上限后返回 502,避免把异常响应交付给客户端。\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_pass_through_desc\": \"超过重试上限后放行最后的异常响应,优先保持请求可返回。\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_label\": \"客户端用量聚合\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_hint\": \"选择客户端可见用量的聚合方式;管理面板用量统计仍按真实请求尝试记录\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_delivered_only\": \"仅统计交付响应(默认)\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum\": \"合并所有尝试\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum_with_delivered_total\": \"合并明细,保留交付总数\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_delivered_only_desc\": \"当前客户端只看到最终交付响应的用量;管理面板仍记录每次真实尝试。\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum_desc\": \"当前客户端会看到所有请求尝试的用量逐项累加。\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum_with_delivered_total_desc\": \"当前会累加明细字段,但总数沿用最终交付响应,便于兼容只读取总数的客户端。\",\n \"codex_abnormal_reasoning_retry_delivery_policy_label\": \"交付策略\",\n \"codex_abnormal_reasoning_retry_delivery_policy_hint\": \"只在候选池同时存在正常与异常响应时生效\",\n \"codex_abnormal_reasoning_retry_delivery_policy_best_non_special\": \"最佳正常响应(默认)\",\n \"codex_abnormal_reasoning_retry_delivery_policy_first_non_special\": \"首个正常响应\",\n \"codex_abnormal_reasoning_retry_delivery_policy_max_output\": \"输出最多的响应\",\n \"codex_abnormal_reasoning_retry_delivery_policy_latest\": \"最新响应\",\n \"codex_abnormal_reasoning_retry_delivery_policy_best_non_special_desc\": \"当前会优先交付质量最高的正常响应。\",\n \"codex_abnormal_reasoning_retry_delivery_policy_first_non_special_desc\": \"当前会交付最先成功的正常响应,减少等待时间。\",\n \"codex_abnormal_reasoning_retry_delivery_policy_max_output_desc\": \"当前会交付输出量最大的候选响应,优先保留内容量。\",\n \"codex_abnormal_reasoning_retry_delivery_policy_latest_desc\": \"当前会交付最后完成的候选响应,按最新尝试结果收敛。\",\n \"codex_abnormal_reasoning_retry_fallback_policy_label\": \"兜底策略\",\n \"codex_abnormal_reasoning_retry_fallback_policy_hint\": \"所有候选仍异常且重试耗尽时生效\",\n \"codex_abnormal_reasoning_retry_fallback_policy_best_special\": \"最佳异常响应(默认)\",\n \"codex_abnormal_reasoning_retry_fallback_policy_max_output_special\": \"输出最多的异常响应\",\n \"codex_abnormal_reasoning_retry_fallback_policy_latest_special\": \"最新异常响应\",\n \"codex_abnormal_reasoning_retry_fallback_policy_best_special_desc\": \"当前在只能放行异常候选时,选择质量最高的异常响应。\",\n \"codex_abnormal_reasoning_retry_fallback_policy_max_output_special_desc\": \"当前在只能放行异常候选时,选择输出量最大的异常响应。\",\n \"codex_abnormal_reasoning_retry_fallback_policy_latest_special_desc\": \"当前在只能放行异常候选时,选择最后完成的异常响应。\",\n \"codex_abnormal_reasoning_retry_auth_kinds_label\": \"认证类型\",\n \"codex_abnormal_reasoning_retry_auth_kinds_hint\": \"归一化后的认证类型白名单;默认 OAuth 不匹配 API Key\",\n \"codex_abnormal_reasoning_retry_auth_ids_label\": \"认证 ID\",\n \"codex_abnormal_reasoning_retry_auth_ids_hint\": \"可选的精确认证 ID 白名单;留空表示不限制 ID\"\n },\n \"network\": {\n \"title\": \"网络配置\",\n \"description\": \"代理、重试和路由设置\",\n \"proxy_url\": \"代理 URL\",\n \"request_retry\": \"请求重试次数\",\n \"max_retry_credentials\": \"最大重试凭据数\",\n \"max_retry_credentials_hint\": \"留空表示不设置;设为 0 表示保留 legacy 行为,并尝试所有可用凭据。\",\n \"max_retry_interval\": \"最大重试间隔 (秒)\",\n \"transient_error_cooldown_seconds\": \"瞬时错误冷却时间 (秒)\",\n \"transient_error_cooldown_seconds_hint\": \"留空使用 Core 默认值。0 保留旧的 60 秒冷却;负数禁用瞬时错误冷却。\",\n \"auth_auto_refresh_workers\": \"认证自动刷新 Worker 数\",\n \"auth_auto_refresh_workers_hint\": \"大于 0 时覆盖默认 Worker 数(16)\",\n \"disable_image_generation\": \"禁用图像生成\",\n \"disable_image_generation_hint\": \"false 启用自动图像工具注入;true 全部禁用;chat 从非图片端点移除 image_generation;passthrough 在非图片端点不注入也不删除客户端工具(图片端点与 chat 相同)\",\n \"disable_image_generation_false\": \"false(启用)\",\n \"disable_image_generation_true\": \"true(全部禁用)\",\n \"disable_image_generation_chat\": \"chat(从非图片端点移除图像工具)\",\n \"disable_image_generation_passthrough\": \"passthrough(原样保留客户端工具)\",\n \"gpt_image_2_base_model\": \"GPT Image 2 基础模型\",\n \"gpt_image_2_base_model_hint\": \"代理 gpt-image-2 图片请求时使用的主线模型;留空或非法时后端使用默认值\",\n \"routing_strategy\": \"路由策略\",\n \"routing_strategy_hint\": \"选择凭据选择策略\",\n \"strategy_round_robin\": \"轮询 (Round Robin)\",\n \"strategy_fill_first\": \"填充优先 (Fill First)\",\n \"session_affinity_ttl\": \"会话粘性 TTL\",\n \"force_model_prefix\": \"强制模型前缀\",\n \"force_model_prefix_desc\": \"未带前缀的模型请求只使用无前缀凭据\",\n \"passthrough_headers\": \"透传上游响应 Header\",\n \"passthrough_headers_desc\": \"将过滤后的上游响应 Header 转发给下游客户端\",\n \"disable_cooling\": \"禁用冷却调度\",\n \"disable_cooling_desc\": \"全局禁用认证/模型失败后的冷却窗口\",\n \"session_affinity\": \"会话粘性路由\",\n \"ws_auth\": \"WebSocket 认证\",\n \"ws_auth_desc\": \"启用 WebSocket 连接认证 (/v1/ws)\",\n \"enable_gemini_cli_endpoint\": \"启用 Gemini CLI 内部端点\",\n \"enable_gemini_cli_endpoint_desc\": \"启用 /v1internal:* 兼容端点\"\n },\n \"quota\": {\n \"title\": \"配额回退\",\n \"description\": \"配额耗尽时的回退策略\",\n \"switch_project\": \"切换项目\",\n \"switch_project_desc\": \"配额耗尽时自动切换到其他项目\",\n \"switch_preview_model\": \"切换预览模型\",\n \"switch_preview_model_desc\": \"配额耗尽时切换到预览版本模型\",\n \"antigravity_credits\": \"使用Antigravity Credits\"\n },\n \"streaming\": {\n \"title\": \"流式传输配置\",\n \"description\": \"Keepalive 与 bootstrap 重试设置\",\n \"keepalive_seconds\": \"Keepalive 秒数\",\n \"keepalive_hint\": \"设置为 0 或留空表示禁用 keepalive\",\n \"bootstrap_retries\": \"Bootstrap 重试次数\",\n \"bootstrap_hint\": \"流式传输启动时(首包前)的重试次数\",\n \"nonstream_keepalive\": \"非流式 Keepalive 间隔 (秒)\",\n \"nonstream_keepalive_hint\": \"非流式响应时每隔 N 秒发送空行以防止空闲超时,设置为 0 或留空表示禁用\",\n \"disabled\": \"已禁用\"\n },\n \"payload\": {\n \"title\": \"Payload 配置\",\n \"description\": \"默认值、原始 JSON 规则、覆盖规则与过滤规则\",\n \"default_rules\": \"默认规则\",\n \"default_rules_desc\": \"当请求中未指定参数时,使用这些默认值\",\n \"default_raw_rules\": \"默认 Raw 规则\",\n \"default_raw_rules_desc\": \"当请求中未指定参数时,按原始 JSON 片段写入这些值,例如 true、123、\\\"high\\\" 或 {\\\"type\\\":\\\"object\\\"}\",\n \"override_rules\": \"覆盖规则\",\n \"override_rules_desc\": \"强制覆盖请求中的参数值\",\n \"override_raw_rules\": \"覆盖 Raw 规则\",\n \"override_raw_rules_desc\": \"始终按原始 JSON 片段覆盖参数值,适合 response_format、schema 等复杂字段\",\n \"filter_rules\": \"过滤规则\",\n \"filter_rules_desc\": \"通过 JSON Path 预过滤上游请求体,自动剔除不合规/冗余参数(Request Sanitization)\"\n }\n },\n \"api_keys\": {\n \"label\": \"API 密钥列表 (api-keys)\",\n \"add\": \"添加 API 密钥\",\n \"generate\": \"生成\",\n \"empty\": \"暂无 API 密钥\",\n \"hint\": \"每个条目代表一个 API 密钥(与 「API 密钥管理」 页面样式一致)\",\n \"edit_title\": \"编辑 API 密钥\",\n \"add_title\": \"添加 API 密钥\",\n \"input_label\": \"API 密钥\",\n \"input_placeholder\": \"粘贴你的 API 密钥\",\n \"input_hint\": \"此处仅修改本地配置文件内容,不会自动同步到 API 密钥管理接口\",\n \"error_empty\": \"请输入 API 密钥\",\n \"error_invalid\": \"API 密钥包含无效字符\"\n },\n \"payload_rules\": {\n \"rule\": \"规则\",\n \"models\": \"适用模型\",\n \"model_name\": \"模型名称\",\n \"model_scope\": \"模型匹配范围\",\n \"scope_any\": \"任意(当前行为)\",\n \"scope_requested\": \"用户请求模型\",\n \"scope_upstream\": \"上游模型\",\n \"scope_custom\": \"自定义:{{scope}}\",\n \"provider_type\": \"供应商类型\",\n \"add_model\": \"添加模型\",\n \"params\": \"参数设置\",\n \"remove_params\": \"移除参数\",\n \"json_path\": \"JSON 路径 (如 temperature)\",\n \"json_path_filter\": \"JSON 路径 (gjson/sjson),如 generationConfig.thinkingConfig.thinkingBudget\",\n \"param_type\": \"参数类型\",\n \"param_value\": \"参数值\",\n \"add_param\": \"添加参数\",\n \"no_rules\": \"暂无规则\",\n \"add_rule\": \"添加规则\",\n \"provider_default\": \"默认\",\n \"provider_openai\": \"OpenAI\",\n \"provider_openai_response\": \"OpenAI Response\",\n \"provider_responses\": \"Responses\",\n \"provider_gemini\": \"Gemini\",\n \"provider_claude\": \"Claude\",\n \"provider_codex\": \"Codex\",\n \"provider_antigravity\": \"Antigravity\",\n \"advanced\": \"高级\",\n \"hide_advanced\": \"收起高级\",\n \"from_protocol\": \"来源协议 (from-protocol)\",\n \"headers\": \"请求 Header 匹配\",\n \"header_name\": \"Header 名称\",\n \"header_value\": \"Header 值\",\n \"add_header\": \"添加 Header\",\n \"match\": \"必须匹配 (match)\",\n \"notMatch\": \"不得匹配 (not-match)\",\n \"exist\": \"必须存在 (exist)\",\n \"notExist\": \"不得存在 (not-exist)\",\n \"condition_path\": \"匹配路径\",\n \"condition_value\": \"匹配值\",\n \"add_condition\": \"添加条件\",\n \"value_type_string\": \"字符串\",\n \"value_type_number\": \"数字\",\n \"value_type_boolean\": \"布尔\",\n \"value_type_json\": \"JSON\",\n \"value_string\": \"字符串值\",\n \"value_number\": \"数字值 (如 0.7)\",\n \"value_boolean\": \"true 或 false\",\n \"value_json\": \"JSON 值\",\n \"value_raw_json\": \"原始 JSON 片段,如 true、123、\\\"high\\\" 或 {\\\"type\\\":\\\"object\\\"}\",\n \"value_default\": \"值\",\n \"boolean_true\": \"true\",\n \"boolean_false\": \"false\"\n },\n \"validation\": {\n \"validation_blocked\": \"请先修复表单校验错误再保存\",\n \"port_range\": \"请输入 1 到 65535 之间的有效端口\",\n \"non_negative_integer\": \"请输入非负整数\",\n \"integer\": \"请输入整数\",\n \"integer_range_1_3600\": \"请输入 1 到 3600 之间的整数\",\n \"payload_invalid_number\": \"请输入有效数字\",\n \"payload_invalid_boolean\": \"请选择 true 或 false\",\n \"payload_invalid_json\": \"请输入有效的 JSON\"\n },\n \"common\": {\n \"edit\": \"编辑\",\n \"delete\": \"删除\",\n \"cancel\": \"取消\",\n \"update\": \"更新\",\n \"add\": \"添加\"\n }\n }\n },\n \"quota_management\": {\n \"title\": \"配额管理\",\n \"description\": \"集中查看 OAuth 额度与剩余情况\",\n \"refresh_files\": \"刷新认证文件\",\n \"refresh_files_and_quota\": \"刷新认证文件&额度\",\n \"refresh_all_credentials\": \"刷新全部凭证\",\n \"card_idle_hint\": \"请使用顶部“刷新全部凭证”按钮获取最新额度。\"\n },\n \"plugin_management\": {\n \"title\": \"插件管理\",\n \"description\": \"查看已发现和已注册的插件,管理实例开关、配置字段和资源入口。\",\n \"refresh\": \"刷新\",\n \"load_failed\": \"加载插件失败\",\n \"config_load_failed\": \"读取插件配置失败\",\n \"config_not_found\": \"无法读取插件配置,后端未找到该插件。\",\n \"unsupported_backend\": \"当前后端未暴露插件管理 API。请使用包含插件管理接口的新后端构建,并重启服务。\",\n \"runtime_unavailable_title\": \"插件运行时不可用\",\n \"runtime_unavailable_desc\": \"当前 plugins.enabled 为 true,但服务端返回 x-cpa-support-plugin: 0。当前二进制不包含插件运行时支持,因此插件管理和商店操作继续锁定。请部署适用于当前平台且包含插件运行时的 Core 构建并重启后端;Linux 环境通常需要启用 CGO 并使用兼容的 libc。若不计划使用插件,则关闭 plugins.enabled。\",\n \"runtime_probe_failed_desc\": \"当前 plugins.enabled 为 true,但面板既无法通过 x-cpa-support-plugin 确认运行时能力,也无法通过插件 API 完成兼容探测。插件操作继续锁定。请检查后端构建及反向代理/CORS 的 header 暴露,然后重新连接。\",\n \"runtime_unavailable_action\": \"查看配置\",\n \"global_status\": \"全局状态\",\n \"global_enabled\": \"已启用\",\n \"global_disabled\": \"已停用\",\n \"global_disabled_hint\": \"当前 plugins.enabled 为 false,插件实例即使启用也不会生效。\",\n \"plugins_dir\": \"插件目录\",\n \"discovered\": \"发现插件\",\n \"effective\": \"生效插件\",\n \"search_placeholder\": \"搜索插件 ID、名称、作者或资源...\",\n \"search_label\": \"搜索插件\",\n \"no_plugins\": \"暂无插件\",\n \"no_plugins_desc\": \"未从插件目录或运行时注册表中发现插件。\",\n \"configured\": \"已配置\",\n \"not_configured\": \"未配置\",\n \"registered\": \"已注册\",\n \"not_registered\": \"未注册\",\n \"oauth\": \"OAuth\",\n \"status_effective\": \"生效中\",\n \"status_inactive\": \"未生效\",\n \"version_label\": \"版本\",\n \"author_label\": \"作者\",\n \"path_label\": \"路径\",\n \"edit_config\": \"编辑配置\",\n \"open_resource\": \"打开资源\",\n \"open_repository\": \"打开仓库\",\n \"config_title\": \"配置 {{name}}\",\n \"base_settings\": \"基础设置\",\n \"enabled\": \"启用\",\n \"enabled_hint\": \"控制 plugins.configs 中该插件实例的 enabled 字段。\",\n \"priority\": \"优先级\",\n \"config_fields\": \"配置字段\",\n \"no_config_fields\": \"该插件没有声明可视化配置字段。\",\n \"select_placeholder\": \"请选择\",\n \"array_item_placeholder\": \"输入数组项\",\n \"add_array_item\": \"添加数组项\",\n \"remove_array_item\": \"删除数组项\",\n \"delete_plugin\": \"删除\",\n \"delete_confirm_title\": \"删除插件\",\n \"delete_confirm_message\": \"确定删除 {{name}}({{id}})吗?这会移除本地插件文件和已保存配置。\",\n \"delete_success\": \"插件已删除\",\n \"delete_failed\": \"插件删除失败\",\n \"delete_restart_required\": \"已加载的插件需要重启后端后才能移除。\",\n \"toggle_success\": \"插件状态已更新\",\n \"toggle_failed\": \"插件状态更新失败\",\n \"runtime_pending\": \"插件变更已保存,但运行时状态仍在等待更新。请稍后刷新或检查后端日志。\",\n \"save_success\": \"插件配置已保存\",\n \"save_failed\": \"插件配置保存失败\",\n \"validation_failed\": \"请先修复插件配置表单错误\",\n \"invalid_priority\": \"请输入整数优先级\",\n \"invalid_number\": \"请输入有效数字\",\n \"invalid_integer\": \"请输入有效整数\",\n \"invalid_json\": \"请输入有效 JSON\",\n \"expected_array\": \"请输入 JSON 数组\",\n \"expected_object\": \"请输入 JSON 对象\",\n \"invalid_enum\": \"请选择声明的枚举值\"\n },\n \"plugin_store\": {\n \"title\": \"插件商店\",\n \"description\": \"浏览插件注册表,为当前后端安装或更新插件。\",\n \"description_show_more\": \"展开描述\",\n \"description_show_less\": \"收起描述\",\n \"source_name\": \"来源:{{source}}\",\n \"cli_proxy_api_source\": \"CLIProxyAPI源\",\n \"refresh\": \"刷新\",\n \"retry\": \"重试\",\n \"load_failed\": \"插件商店加载失败\",\n \"unsupported_backend\": \"当前后端未暴露插件商店 API。请使用包含插件商店接口的新后端构建,并重启服务。\",\n \"registry_failed\": \"插件注册表请求失败\",\n \"global_status\": \"全局状态\",\n \"global_enabled\": \"已启用\",\n \"global_disabled\": \"已停用\",\n \"global_disabled_hint\": \"当前 plugins.enabled 为 false,已安装的插件不会生效。\",\n \"plugins_dir\": \"插件目录\",\n \"stat_available\": \"可用插件\",\n \"search_placeholder\": \"搜索插件 ID、名称、作者或标签...\",\n \"search_label\": \"搜索插件商店\",\n \"filter_label\": \"按安装状态筛选\",\n \"filter_all\": \"全部\",\n \"filter_installed\": \"已安装\",\n \"filter_not_installed\": \"未安装\",\n \"filter_updates\": \"可更新\",\n \"badge_installed\": \"已安装\",\n \"badge_update\": \"可更新\",\n \"badge_effective\": \"生效中\",\n \"version_arrow\": \"v{{from}} → v{{to}}\",\n \"install_type\": \"安装方式:{{type}}\",\n \"platforms\": \"平台:{{platforms}}\",\n \"auth_required\": \"需要认证\",\n \"auth_configured\": \"认证已配置\",\n \"auth_required_hint\": \"安装该来源或制品 URL 前,请先配置 plugins.store-auth\",\n \"source_errors_title\": \"部分插件源加载失败\",\n \"install\": \"安装\",\n \"update\": \"更新\",\n \"manage\": \"管理\",\n \"install_confirm_title\": \"安装插件\",\n \"install_confirm_message\": \"将从插件注册表下载 {{target}} 并安装到本地插件目录,是否继续?\",\n \"update_confirm_title\": \"更新插件\",\n \"update_confirm_message\": \"将下载并安装 {{target}},是否继续?\",\n \"install_version_label\": \"版本\",\n \"install_version_latest\": \"最新版本\",\n \"install_version_latest_mode\": \"最新稳定版\",\n \"install_version_latest_hint\": \"安装时由后端解析。当前列表版本:{{version}}。\",\n \"install_version_release_mode\": \"选择 Release\",\n \"install_version_release_hint\": \"从 GitHub Releases 读取可安装标签。\",\n \"install_version_manual_mode\": \"手动 Release 标签\",\n \"install_version_manual_hint\": \"仅在自动加载 Release 不可用时使用。\",\n \"install_versions_loading\": \"正在加载 GitHub Releases...\",\n \"install_versions_load_failed\": \"Release 版本加载失败\",\n \"install_version_non_github\": \"该插件仓库不是 GitHub 仓库\",\n \"install_versions_empty\": \"没有找到可选择的 Release。\",\n \"install_versions_only_prerelease\": \"只有预发布版本可用。显示预发布后才能选择。\",\n \"install_version_release_select\": \"选择 Release 版本\",\n \"install_version_release_placeholder\": \"选择 Release 版本\",\n \"install_version_prerelease_badge\": \"预发布\",\n \"install_version_assets_count\": \"{{count}} 个制品\",\n \"install_version_show_prerelease\": \"显示预发布版本\",\n \"install_version_manual_placeholder\": \"例如 v0.1.4\",\n \"install_version_manual_error\": \"Release 标签只能包含字母、数字、点、下划线、加号和连字符;不能包含空格或斜杠。\",\n \"install_version_current_selected\": \"{{version}} 已安装,请选择其他版本。\",\n \"install_version_releases_link\": \"查看 GitHub Releases\",\n \"install_success\": \"插件安装成功\",\n \"update_success\": \"插件更新成功\",\n \"install_failed\": \"插件安装失败\",\n \"update_failed\": \"插件更新失败\",\n \"status_pending\": \"插件文件已更新,但本地状态尚未刷新。请稍后刷新或检查后端日志。\",\n \"registration_pending\": \"插件文件已更新,但运行时注册仍在等待完成。请稍后刷新或检查后端日志。\",\n \"restart_required_notice\": \"需要重启服务才能加载新的插件版本\",\n \"restart_required_banner\": \"以下插件需重启服务后才能应用新版本:{{plugins}}\",\n \"open_repository\": \"打开仓库\",\n \"open_homepage\": \"打开主页\",\n \"no_plugins\": \"注册表为空\",\n \"no_plugins_desc\": \"插件注册表未返回任何插件。\",\n \"no_matches\": \"没有匹配的插件\",\n \"no_matches_desc\": \"当前搜索或筛选条件下没有插件。\",\n \"clear_filters\": \"清除筛选\",\n \"security_banner_title\": \"第三方插件以后端完整权限运行\",\n \"security_banner_text\": \"插件会在代理服务内部执行代码,可读取你的凭据与流量。请仅安装你信任的插件——尤其要警惕任何并非由官方组织 router-for-me 发布的插件。\",\n \"badge_untrusted\": \"第三方\",\n \"gate_title\": \"安装 {{name}}\",\n \"gate_title_update\": \"更新 {{name}}\",\n \"gate_warning\": \"如果你不阅读以下内容,可能会发生意料之外的危险后果。\",\n \"gate_effect_runs_code\": \"该插件将在您的代理后端内运行第三方未认证代码。系统无法对其行为进行隔离或审计,其具备访问您的敏感凭据、网络请求与响应数据的潜在权限。\",\n \"gate_effect_no_review\": \"本插件并非由官方组织 router-for-me 发布或审核。官方不对该插件的稳定性、安全性、合规性以及后续版本的任意行为变更承担任何明示或暗示的担保责任。\",\n \"gate_effect_restart\": \"安装会修改本地插件目录,并可能需要重启服务才能生效。\",\n \"gate_untrusted_alert\": \"该插件并非来自官方组织 router-for-me。请仅在你完全信任其作者与来源时继续。\",\n \"gate_repository_label\": \"仓库\",\n \"gate_source_label\": \"来源\",\n \"gate_step1_action\": \"我要安装此插件\",\n \"gate_step2_action\": \"我已阅读并理解上述风险\",\n \"gate_step3_prompt\": \"如需确认,请在下方输入框中键入 “{{token}}”\",\n \"gate_step3_action\": \"安装此插件\",\n \"gate_step3_hint\": \"请输入上方显示的完整标识以启用安装。\"\n },\n \"plugin_resource\": {\n \"title\": \"插件页面\",\n \"page_count\": \"{{count}} 个页面\",\n \"load_failed\": \"加载插件页面失败\",\n \"unavailable\": \"插件页面不可用\",\n \"not_found\": \"未找到插件页面\",\n \"not_found_desc\": \"该插件页面未在当前后端插件列表中声明。\",\n \"empty_src\": \"插件页面地址为空\",\n \"empty_src_desc\": \"该插件菜单未提供可嵌入的页面地址。\"\n },\n \"system_info\": {\n \"title\": \"管理中心信息\",\n \"about_title\": \"CLI Proxy API Management Center\",\n \"connection_status_title\": \"连接状态\",\n \"api_status_label\": \"API 状态:\",\n \"config_status_label\": \"配置状态:\",\n \"last_update_label\": \"最后更新:\",\n \"cache_data\": \"缓存数据\",\n \"real_time_data\": \"实时数据\",\n \"not_loaded\": \"未加载\",\n \"seconds_ago\": \"秒前\",\n \"models_title\": \"可用模型列表\",\n \"models_desc\": \"展示 /models 返回的模型,并自动使用服务器保存的 API Key 进行鉴权。\",\n \"models_loading\": \"正在加载可用模型...\",\n \"models_empty\": \"未从 /models 获取到模型数据\",\n \"models_error\": \"获取模型列表失败\",\n \"models_count\": \"可用模型 {{count}} 个\",\n \"version_check_title\": \"版本检查\",\n \"version_check_desc\": \"调用 /latest-version 接口比对服务器版本,提示是否有可用更新。\",\n \"version_current_label\": \"当前版本\",\n \"version_latest_label\": \"最新版本\",\n \"version_check_button\": \"检查更新\",\n \"version_check_idle\": \"点击检查更新\",\n \"version_checking\": \"正在检查最新版本...\",\n \"version_update_available\": \"有新版本可用:{{version}}\",\n \"version_is_latest\": \"当前已是最新版本\",\n \"version_check_error\": \"检查更新失败\",\n \"version_current_missing\": \"未获取到服务器版本号,暂无法比对\",\n \"version_unknown\": \"未知\",\n \"quick_links_title\": \"快捷链接\",\n \"quick_links_desc\": \"访问项目仓库和文档,获取帮助和更新。\",\n \"link_main_repo\": \"主程序仓库\",\n \"link_main_repo_desc\": \"CLI Proxy API 核心程序源代码\",\n \"link_webui_repo\": \"WebUI 仓库\",\n \"link_webui_repo_desc\": \"管理中心前端界面源代码\",\n \"link_docs\": \"使用教程\",\n \"link_docs_desc\": \"配置指南和使用说明\",\n \"clear_login_title\": \"本地登录信息\",\n \"clear_login_desc\": \"清理本地保存的登录信息并退出登录。\",\n \"clear_login_button\": \"清理登录信息\",\n \"clear_login_confirm\": \"确认清理本地登录信息并退出登录?\"\n },\n \"notification\": {\n \"debug_updated\": \"调试设置已更新\",\n \"proxy_updated\": \"代理设置已更新\",\n \"proxy_cleared\": \"代理设置已清空\",\n \"retry_updated\": \"重试设置已更新\",\n \"quota_switch_project_updated\": \"项目切换设置已更新\",\n \"quota_switch_preview_updated\": \"预览模型切换设置已更新\",\n \"logging_to_file_updated\": \"日志记录设置已更新\",\n \"logs_max_total_size_updated\": \"日志容量设置已更新\",\n \"request_log_updated\": \"请求日志设置已更新\",\n \"force_model_prefix_updated\": \"模型前缀设置已更新\",\n \"ws_auth_updated\": \"WebSocket 鉴权设置已更新\",\n \"routing_strategy_updated\": \"路由策略已更新\",\n \"login_storage_cleared\": \"本地登录信息已清理\",\n \"api_key_added\": \"API密钥添加成功\",\n \"api_key_updated\": \"API密钥更新成功\",\n \"api_key_deleted\": \"API密钥删除成功\",\n \"api_key_invalid_chars\": \"API密钥仅支持英文字母、数字和符号\",\n \"gemini_key_added\": \"Gemini密钥添加成功\",\n \"gemini_key_updated\": \"Gemini密钥更新成功\",\n \"gemini_key_deleted\": \"Gemini密钥删除成功\",\n \"gemini_multi_input_required\": \"请先输入至少一个Gemini密钥\",\n \"gemini_multi_failed\": \"Gemini密钥批量添加失败\",\n \"gemini_multi_summary\": \"Gemini批量添加完成:成功 {{success}},跳过 {{skipped}},失败 {{failed}}\",\n \"codex_config_added\": \"Codex配置添加成功\",\n \"codex_config_updated\": \"Codex配置更新成功\",\n \"codex_config_deleted\": \"Codex配置删除成功\",\n \"codex_base_url_required\": \"请填写Codex Base URL\",\n \"claude_config_added\": \"Claude配置添加成功\",\n \"claude_config_updated\": \"Claude配置更新成功\",\n \"claude_config_deleted\": \"Claude配置删除成功\",\n \"vertex_config_added\": \"Vertex配置添加成功\",\n \"vertex_config_updated\": \"Vertex配置更新成功\",\n \"vertex_config_deleted\": \"Vertex配置删除成功\",\n \"config_enabled\": \"配置已启用\",\n \"config_disabled\": \"配置已停用\",\n \"field_required\": \"必填字段不能为空\",\n \"openai_provider_required\": \"请填写提供商名称和Base URL\",\n \"openai_provider_added\": \"OpenAI提供商添加成功\",\n \"openai_provider_updated\": \"OpenAI提供商更新成功\",\n \"openai_provider_deleted\": \"OpenAI提供商删除成功\",\n \"openai_model_name_required\": \"请填写模型名称\",\n \"openai_test_url_required\": \"请先填写有效的 Base URL 以进行测试\",\n \"openai_test_key_required\": \"请至少填写一个 API 密钥以进行测试\",\n \"openai_test_model_required\": \"请选择要测试的模型\",\n \"data_refreshed\": \"数据刷新成功\",\n \"connection_required\": \"请先建立连接\",\n \"refresh_failed\": \"刷新失败\",\n \"update_failed\": \"更新失败\",\n \"add_failed\": \"添加失败\",\n \"delete_failed\": \"删除失败\",\n \"upload_failed\": \"上传失败\",\n \"download_failed\": \"下载失败\",\n \"login_failed\": \"登录失败\",\n \"please_enter\": \"请输入\",\n \"please_fill\": \"请填写\",\n \"provider_name_url\": \"提供商名称和Base URL\",\n \"api_key\": \"API密钥\",\n \"gemini_api_key\": \"Gemini API密钥\",\n \"codex_api_key\": \"Codex API密钥\",\n \"claude_api_key\": \"Claude API密钥\",\n \"commercial_mode_restart_required\": \"商业模式开关已变更,请重启服务后生效\",\n \"copy_failed\": \"复制失败\",\n \"link_copied\": \"已复制\"\n },\n \"language\": {\n \"switch\": \"语言\",\n \"chinese\": \"中文\",\n \"chinese_tw\": \"繁體中文(台灣)\",\n \"english\": \"English\",\n \"russian\": \"Русский\"\n },\n \"theme\": {\n \"switch\": \"主题\",\n \"light\": \"羊毛纸\",\n \"white\": \"纯白\",\n \"dark\": \"暗色\",\n \"switch_to_light\": \"切换到羊毛纸模式\",\n \"switch_to_dark\": \"切换到暗色模式\",\n \"auto\": \"跟随系统\"\n },\n \"sidebar\": {\n \"primary_navigation\": \"主导航\",\n \"toggle_expand\": \"展开侧边栏\",\n \"toggle_collapse\": \"收起侧边栏\"\n },\n \"footer\": {\n \"api_version\": \"CLI Proxy API 版本\",\n \"build_date\": \"构建时间\",\n \"version\": \"管理中心版本\",\n \"author\": \"作者\"\n },\n \"providersPage\": {\n \"header\": {\n \"title\": \"AI 提供商\",\n \"activeResources\": \"{{active}}/{{total}} 个活跃资源\",\n \"providerFamilies\": \"{{count}} 个提供商家族\",\n \"updatedAt\": \"更新于 {{time}}\",\n \"issueCount\": \"{{count}} 个问题\"\n },\n \"actions\": {\n \"refresh\": \"刷新\",\n \"syncing\": \"同步中\",\n \"new\": \"新建\",\n \"edit\": \"编辑\",\n \"view\": \"查看\",\n \"delete\": \"删除\",\n \"clear\": \"清空\",\n \"cancel\": \"取消\",\n \"save\": \"保存\",\n \"create\": \"创建\",\n \"enable\": \"启用\",\n \"disable\": \"停用\"\n },\n \"categories\": {\n \"title\": \"提供商\",\n \"activeCount\": \"{{active}}/{{total}} 活跃\"\n },\n \"providerNames\": {\n \"gemini\": \"Gemini\",\n \"codex\": \"Codex\",\n \"xai\": \"xAI\",\n \"claude\": \"Claude\",\n \"vertex\": \"Vertex\",\n \"openaiCompatibility\": \"OpenAI 兼容\",\n \"claudeApi\": \"ClaudeAPI\",\n \"code0\": \"Code0\",\n \"fennoAI\": \"FennoAI\",\n \"qiniuCloud\": \"七牛云\"\n },\n \"table\": {\n \"key\": \"密钥\",\n \"baseUrl\": \"服务地址\",\n \"prefix\": \"前缀\",\n \"models\": \"模型/请求头\",\n \"status\": \"状态\",\n \"actions\": \"操作\",\n \"metrics\": {\n \"models\": \"模型\",\n \"keys\": \"密钥\",\n \"headers\": \"请求头\"\n },\n \"stats\": {\n \"recent\": \"近期\",\n \"fullUsage\": \"完整统计\",\n \"tokens\": \"Token\",\n \"cost\": \"花费\"\n },\n \"websocketsTag\": \"WebSockets\",\n \"cloakTag\": \"Cloak\",\n \"empty\": \"尚未添加配置,点击右上角新建。\",\n \"filterPlaceholder\": \"搜索密钥、地址、前缀…\",\n \"description\": \"在 {{route}} 下管理资源\",\n \"providerIssue\": \"此提供商存在问题\"\n },\n \"status\": {\n \"active\": \"活跃\",\n \"disabled\": \"已停用\",\n \"notSet\": \"未设置\",\n \"none\": \"无\",\n \"notConfigured\": \"未配置\",\n \"defaultSuffix\": \"(默认)\"\n },\n \"detail\": {\n \"title\": \"详情\",\n \"metadataTitle\": \"元数据\",\n \"fields\": {\n \"identifier\": \"标识\",\n \"baseUrl\": \"服务地址\",\n \"proxyUrl\": \"代理 URL\",\n \"prefix\": \"前缀\",\n \"models\": \"模型数\",\n \"headers\": \"请求头数\",\n \"authIndex\": \"Auth Index\",\n \"excludedModels\": \"排除模型数\",\n \"apiKeyEntries\": \"密钥条目数\"\n }\n },\n \"form\": {\n \"createEyebrow\": \"新建\",\n \"editEyebrow\": \"编辑\",\n \"name\": \"名称\",\n \"apiKey\": \"API 密钥\",\n \"apiKeyCreatePlaceholder\": \"输入 API 密钥\",\n \"apiKeyEditPlaceholder\": \"留空表示不修改\",\n \"baseUrl\": \"服务地址\",\n \"baseUrlRequiredHint\": \"此提供商要求填写服务地址\",\n \"proxyUrl\": \"代理 URL\",\n \"prefix\": \"前缀\",\n \"priority\": \"优先级\",\n \"disabled\": \"停用此条目\",\n \"disabledHint\": \"停用后不会被网关使用\",\n \"websockets\": \"启用 WebSockets\",\n \"testModel\": \"测试模型\",\n \"testModelClaudeHint\": \"仅用于连通性测试,不会被保存\",\n \"testModelAutoWith\": \"自动 · {{name}}\",\n \"testModelAutoEmpty\": \"自动(尚未添加模型)\",\n \"testModelCustom\": \"{{name}}(自定义)\",\n \"modelsSection\": \"自定义模型\",\n \"addModel\": \"添加模型\",\n \"modelNamePlaceholder\": \"上游模型名称\",\n \"modelAliasPlaceholder\": \"路由别名(可选)\",\n \"modelDisplayNamePlaceholder\": \"显示名称(可选)\",\n \"headersSection\": \"请求头\",\n \"addHeader\": \"添加请求头\",\n \"headers\": \"请求头\",\n \"headersHint\": \"每行一条,格式 Key: Value\",\n \"excludedSection\": \"排除模型\",\n \"excludedHint\": \"每行一个模型名,匹配后将不会被路由到此提供商\",\n \"cloakSection\": \"Cloak 配置\",\n \"cloakMode\": \"模式\",\n \"cloakStrict\": \"严格模式\",\n \"cloakSensitiveWords\": \"敏感词(每行一个)\",\n \"apiKeyEntriesSection\": \"API 密钥条目\",\n \"apiKeyEntry\": \"密钥 #{{index}}\",\n \"addApiKeyEntry\": \"添加密钥条目\",\n \"showApiKey\": \"显示密钥\",\n \"hideApiKey\": \"隐藏密钥\",\n \"disableCooling\": \"禁用冷却调度\",\n \"disableCoolingHint\": \"仅对当前凭据或提供商禁用失败后的冷却窗口\",\n \"modelEntry\": \"模型 #{{index}}\",\n \"modelImage\": \"允许图片端点\",\n \"modelImageHint\": \"允许该模型用于 /v1/images/generations 和 /v1/images/edits\",\n \"thinkingConfig\": \"Thinking 配置(JSON)\",\n \"thinkingConfigHint\": \"可配置 levels、min、max、zero_allowed、dynamic_allowed\",\n \"cloakCacheUserId\": \"缓存 user_id\",\n \"cloakCacheUserIdHint\": \"按 API key 复用 Claude cloak 生成的 user_id\",\n \"experimentalCchSigning\": \"实验性 CCH 签名\",\n \"experimentalCchSigningHint\": \"对 cloaked Claude /v1/messages 最终请求体启用 CCH 签名\",\n \"validation\": {\n \"nameRequired\": \"名称必填\",\n \"apiKeyRequired\": \"至少填写一个 API 密钥\",\n \"baseUrlRequired\": \"服务地址必填\"\n },\n \"showAllEntries\": \"显示全部({{count}})\",\n \"showFewerEntries\": \"收起\",\n \"proxyBadge\": \"代理\",\n \"modelBadgeImage\": \"图片\",\n \"modelBadgeThinking\": \"Thinking\"\n },\n \"delete\": {\n \"title\": \"删除资源\",\n \"confirm\": \"确定要删除 {{name}} 吗?此操作不可撤销。\"\n },\n \"toast\": {\n \"created\": \"创建成功\",\n \"updated\": \"更新成功\",\n \"deleted\": \"删除成功\",\n \"enabled\": \"已启用\",\n \"disabled\": \"已停用\",\n \"toggleFailed\": \"更新状态失败\"\n },\n \"unsavedChanges\": {\n \"title\": \"确定丢弃未保存的修改吗?\",\n \"message\": \"当前表单还有未保存的修改,关闭后会被丢弃。\",\n \"discard\": \"丢弃修改\",\n \"keepEditing\": \"继续编辑\"\n },\n \"connectivity\": {\n \"test\": \"测试\",\n \"testAll\": \"全部测试\",\n \"success\": \"连通\",\n \"baseUrlRequired\": \"服务地址必填\",\n \"endpointInvalid\": \"服务地址不合法\",\n \"apiKeyRequired\": \"API 密钥必填\",\n \"modelRequired\": \"测试模型必填\",\n \"timeout\": \"请求超过 {{seconds}} 秒\",\n \"requestFailed\": \"请求失败\"\n },\n \"discovery\": {\n \"openButton\": \"从端点拉取\",\n \"searchPlaceholder\": \"搜索模型\",\n \"reload\": \"重新加载\",\n \"loading\": \"正在加载模型…\",\n \"empty\": \"端点未返回任何模型\",\n \"notLoaded\": \"点击重新加载以获取模型\",\n \"selectAll\": \"全选\",\n \"clearAll\": \"清空选择\",\n \"selectedCount\": \"{{selected}} / {{total}}\",\n \"alreadyAdded\": \"已添加\",\n \"close\": \"关闭\",\n \"apply\": \"应用 ({{count}})\"\n },\n \"toolbar\": {\n \"sortBy\": \"排序\",\n \"sort\": {\n \"name\": \"名称\",\n \"priority\": \"优先级\",\n \"recentSuccess\": \"近期成功数\",\n \"directionAsc\": \"升序\",\n \"directionDesc\": \"降序\"\n },\n \"filter\": {\n \"allModels\": \"全部模型\",\n \"selectedModels\": \"{{selected}}/{{total}} 个模型\",\n \"selectAll\": \"全选\",\n \"clear\": \"清空\",\n \"empty\": \"暂无已配置模型\"\n }\n },\n \"modelCatalog\": {\n \"notLoaded\": \"未加载\"\n },\n \"sponsor\": {\n \"protocolSummary\": \"Anthropic / OpenAI / Gemini / Codex API (Responses)\",\n \"detailHint\": \"{{provider}} 会按协议分别写入对应的 API Key 配置,这里只做聚合管理。\",\n \"apiKeyHint\": \"此 Key 只会写入当前选择的分组/协议配置。\",\n \"aggregationConflict\": \"此聚合提供商包含多条后端配置或多个 OpenAI 密钥。为避免数据丢失,请在源码配置中编辑。\",\n \"partialMutationWarning\": \"操作失败,但一个或多个协议可能已更新。已重新读取最新配置,请检查后再重试。\",\n \"groupedKeysTitle\": \"分组 Key\",\n \"groupedKeysHint\": \"平台创建 Key 时可能需要选择分组,这里每个分组 Key 只管理一个协议,模型也只从该协议拉取。\",\n \"groupedKey\": \"分组 Key #{{index}}\",\n \"addGroupedKey\": \"添加分组 Key\",\n \"removeGroupedKey\": \"删除分组 Key\",\n \"protocol\": \"分组/协议\",\n \"protocolHint\": \"请选择此 Key 对应的分组/协议。\",\n \"protocolEndpoint\": \"当前协议地址\",\n \"urlMode\": \"{{provider}} URL\",\n \"urlHint\": \"不同 URL 的使用规范一致,保存时只会写入当前分组协议对应地址。\",\n \"urlOptions\": {\n \"standard\": \"普通 URL\",\n \"direct\": \"专线直连 URL\",\n \"domestic\": \"国内线路\",\n \"overseas\": \"海外线路\"\n },\n \"urlOptionDescriptions\": {\n \"domestic\": \"面向中国大陆用户和部署在中国大陆网络环境中的业务,通常可获得更低延迟。\",\n \"overseas\": \"面向海外部署、跨境访问或需要访问境外模型的业务。\"\n },\n \"modelsTitle\": \"协议模型配置\",\n \"modelsHint\": \"可分别限制或别名映射 Codex API、Anthropic、Gemini 与 OpenAI 兼容入口的模型。\",\n \"protocolModels\": {\n \"codex\": \"Codex API 模型\",\n \"anthropic\": \"Anthropic 模型\",\n \"gemini\": \"Gemini 模型\",\n \"openai\": \"OpenAI 兼容模型\"\n },\n \"protocolModelHints\": {\n \"codex\": \"写入 Codex API 配置的 models,可从 /v1/models 拉取后设置别名。\",\n \"anthropic\": \"写入 Anthropic 配置的 models,可从 /v1/models 拉取后设置别名。\",\n \"gemini\": \"写入 Gemini 配置的 models,可从 /v1beta/models 拉取后设置别名。\",\n \"openai\": \"写入 OpenAI 兼容配置的 models,可从 /models 拉取后设置别名。\"\n },\n \"validation\": {\n \"keyRequired\": \"请为每个分组 Key 填写 API Key。\",\n \"protocolDuplicate\": \"每个协议只能添加一个分组 Key。\"\n },\n \"openaiEntries\": \"OpenAI 兼容密钥数\",\n \"codexEntries\": \"Codex API 密钥数\",\n \"anthropicEntries\": \"Anthropic 密钥数\",\n \"geminiEntries\": \"Gemini 密钥数\",\n \"protocols\": {\n \"anthropic\": \"Anthropic\",\n \"openai\": \"OpenAI 兼容\",\n \"gemini\": \"Gemini\",\n \"codexResponses\": \"Codex API (Responses)\"\n }\n }\n }\n}\n"}}, "src/i18n/locales/zh-TW.json": {"4a3d69d5e1d2eef01ed3ed4fadecd6adbe4b5a42": {"t": 1785674717.4919887, "n": 101508, "h": "bf19aa32d17ddd19", "c": "{\n \"common\": {\n \"login\": \"登入\",\n \"logout\": \"登出\",\n \"back\": \"返回\",\n \"cancel\": \"取消\",\n \"confirm\": \"確認\",\n \"leave\": \"離開\",\n \"stay\": \"繼續編輯\",\n \"save\": \"儲存\",\n \"delete\": \"刪除\",\n \"edit\": \"編輯\",\n \"add\": \"新增\",\n \"update\": \"更新\",\n \"refresh\": \"重新整理\",\n \"close\": \"關閉\",\n \"success\": \"成功\",\n \"error\": \"錯誤\",\n \"info\": \"資訊\",\n \"warning\": \"警告\",\n \"loading\": \"載入中...\",\n \"connecting\": \"連線中...\",\n \"connected\": \"已連線\",\n \"disconnected\": \"未連線\",\n \"connecting_status\": \"連線中\",\n \"connected_status\": \"已連線\",\n \"disconnected_status\": \"未連線\",\n \"yes\": \"是\",\n \"no\": \"否\",\n \"not_set\": \"未設定\",\n \"optional\": \"選填\",\n \"required\": \"必填\",\n \"api_key\": \"金鑰\",\n \"base_url\": \"位址\",\n \"prefix\": \"前綴\",\n \"proxy_url\": \"代理\",\n \"priority\": \"優先順序\",\n \"alias\": \"別名\",\n \"failure\": \"失敗\",\n \"unknown_error\": \"未知錯誤\",\n \"quota_update_required\": \"請更新 CPA 版本或檢查更新\",\n \"quota_check_credential\": \"請檢查憑證狀態\",\n \"copy\": \"複製\",\n \"expand\": \"展開\",\n \"collapse\": \"收起\",\n \"status\": \"狀態\",\n \"action\": \"操作\",\n \"custom_headers_label\": \"自訂請求標頭\",\n \"custom_headers_hint\": \"選填,設定需要附帶到請求中的 HTTP 標頭,名稱和值均不能為空。\",\n \"custom_headers_add\": \"新增請求標頭\",\n \"custom_headers_key_placeholder\": \"Header 名稱,例如 X-Custom-Header\",\n \"custom_headers_value_placeholder\": \"Header 值\",\n \"model_name_placeholder\": \"模型名稱,例如 claude-3-5-sonnet-20241022\",\n \"model_alias_placeholder\": \"模型別名(選填)\",\n \"invalid_provider_index\": \"無效的供應商索引。\",\n \"unsaved_changes_title\": \"未儲存的變更\",\n \"unsaved_changes_message\": \"你有未儲存的變更,離開後將遺失這些變更。確定要離開嗎?\"\n },\n \"title\": {\n \"main\": \"CLI Proxy API Management Center\",\n \"login\": \"CLI Proxy API Management Center\",\n \"abbr\": \"CPAMC\"\n },\n \"splash\": {\n \"title\": \"CLI Proxy API\",\n \"subtitle\": \"管理中心\"\n },\n \"auto_login\": {\n \"title\": \"正在自動登入...\",\n \"message\": \"正在使用本地儲存的連線資訊嘗試連線伺服器\"\n },\n \"login\": {\n \"subtitle\": \"請輸入連線資訊以存取管理介面\",\n \"connection_title\": \"連線位址\",\n \"connection_current\": \"目前位址\",\n \"connection_auto_hint\": \"系統將自動使用目前存取位址進行連線\",\n \"custom_connection_label\": \"自訂連線位址:\",\n \"custom_connection_placeholder\": \"例如: https://example.com:8317\",\n \"custom_connection_hint\": \"預設使用目前存取位址,若需要可手動輸入其他位址。\",\n \"use_current_address\": \"使用目前位址\",\n \"remember_password_label\": \"記住密碼\",\n \"management_key_label\": \"管理金鑰:\",\n \"management_key_placeholder\": \"請輸入管理金鑰\",\n \"connect_button\": \"連線\",\n \"submit_button\": \"登入\",\n \"submitting\": \"連線中...\",\n \"error_title\": \"登入失敗\",\n \"error_backend_detail\": \"後端返回\",\n \"error_required\": \"請填寫完整的連線資訊\",\n \"error_invalid\": \"連線失敗,請檢查服務位址、管理介面和管理金鑰\",\n \"error_network\": \"網路連線失敗,請檢查網路或伺服器位址\",\n \"error_timeout\": \"連線逾時,伺服器無回應\",\n \"error_unauthorized\": \"驗證失敗,管理金鑰缺失或無效\",\n \"error_forbidden\": \"存取被拒絕,遠端管理未啟用、管理金鑰未設定或 IP 被暫時封鎖\",\n \"error_not_found\": \"找不到 Management API,請確認服務位址指向 CLIProxyAPI 後端\",\n \"error_server\": \"後端處理管理介面時發生錯誤,請查看服務日誌\",\n \"error_cors\": \"跨域請求被阻擋,請檢查伺服器設定\",\n \"error_ssl\": \"SSL/TLS 憑證驗證失敗\"\n },\n \"header\": {\n \"check_connection\": \"檢查連線\",\n \"refresh_all\": \"全部重新整理\",\n \"logout\": \"登出\"\n },\n \"connection\": {\n \"title\": \"連線資訊\",\n \"server_address\": \"伺服器位址:\",\n \"management_key\": \"管理金鑰:\",\n \"status\": \"連線狀態:\"\n },\n \"nav\": {\n \"dashboard\": \"儀表板\",\n \"basic_settings\": \"基本設定\",\n \"api_keys\": \"API 金鑰\",\n \"ai_providers\": \"AI 供應商\",\n \"auth_files\": \"驗證檔案\",\n \"oauth\": \"OAuth 登入\",\n \"quota_management\": \"配額管理\",\n \"usage_stats\": \"使用統計\",\n \"plugins\": \"插件管理\",\n \"plugins_runtime_unavailable\": \"插件管理(執行階段不可用)\",\n \"plugin_store\": \"插件商店\",\n \"config_management\": \"設定面板\",\n \"logs\": \"記錄檢視\",\n \"system_info\": \"中心資訊\"\n },\n \"nav_groups\": {\n \"operate\": \"運行\",\n \"gateway\": \"閘道\",\n \"observe\": \"觀測\",\n \"plugin_pages\": \"插件\",\n \"control\": \"控制\"\n },\n \"nav_meta\": {\n \"dashboard\": \"運行總覽\",\n \"ai_providers\": \"上游模型路由\",\n \"auth_files\": \"Auth 檔案與憑證\",\n \"oauth\": \"OAuth 授權登入\",\n \"quota_management\": \"API Key 與限額\",\n \"usage_stats\": \"完整用量與請求分析\",\n \"plugins\": \"插件啟停與設定\",\n \"plugin_store\": \"探索並安裝插件\",\n \"logs\": \"請求追蹤與排查\",\n \"config_management\": \"閘道基礎設定\",\n \"system_info\": \"運行與診斷資訊\"\n },\n \"dashboard\": {\n \"title\": \"儀表板\",\n \"subtitle\": \"歡迎使用 CLI Proxy API 管理中心\",\n \"openai_providers\": \"OpenAI 供應商\",\n \"quick_actions\": \"快速操作\",\n \"current_config\": \"目前設定\",\n \"management_keys\": \"管理金鑰\",\n \"provider_keys_detail\": \"G:{{gemini}} C:{{codex}} X:{{xai}} Cl:{{claude}} V:{{vertex}} O:{{openai}} A:{{ampcode}}\",\n \"oauth_credentials\": \"OAuth 憑證\",\n \"edit_settings\": \"編輯設定\",\n \"routing_strategy\": \"路由策略\",\n \"available_models\": \"可用模型\",\n \"available_models_desc\": \"所有供應商的模型總數\",\n \"welcome_back\": \"歡迎回來\",\n \"greeting_morning\": \"早安\",\n \"greeting_afternoon\": \"午安\",\n \"greeting_evening\": \"晚安\",\n \"greeting_night\": \"夜深了\",\n \"caring_morning\": \"新的一天,準備大展身手吧。\",\n \"caring_afternoon\": \"穩步推進中,繼續加油。\",\n \"caring_evening\": \"今天辛苦了,收尾工作做好喔。\",\n \"caring_night\": \"夜深了,別忘了早點休息。\",\n \"system_overview\": \"系統概覽\"\n },\n \"basic_settings\": {\n \"title\": \"基本設定\",\n \"debug_title\": \"除錯模式\",\n \"debug_enable\": \"啟用除錯模式\",\n \"proxy_title\": \"代理設定\",\n \"proxy_url_label\": \"代理 URL:\",\n \"proxy_url_placeholder\": \"例如: socks5://user:pass@127.0.0.1:1080/\",\n \"proxy_update\": \"更新\",\n \"proxy_clear\": \"清空\",\n \"retry_title\": \"請求重試\",\n \"retry_count_label\": \"重試次數:\",\n \"retry_update\": \"更新\",\n \"quota_title\": \"配額超出行為\",\n \"quota_switch_project\": \"自動切換專案\",\n \"quota_switch_preview\": \"切換到預覽模型\",\n \"logging_title\": \"記錄\",\n \"logging_to_file_enable\": \"啟用記錄到檔案\",\n \"logs_max_total_size_title\": \"記錄容量限制\",\n \"logs_max_total_size_label\": \"記錄總大小上限(MB):\",\n \"logs_max_total_size_hint\": \"設定為 0 表示不限制。\",\n \"logs_max_total_size_update\": \"更新\",\n \"request_log_title\": \"請求記錄\",\n \"request_log_enable\": \"啟用請求記錄\",\n \"request_log_warning\": \"僅在需要排查問題時開啟,日常請保持關閉。\",\n \"force_model_prefix_enable\": \"強制模型前綴\",\n \"ws_auth_title\": \"WebSocket 驗證\",\n \"ws_auth_enable\": \"啟用 /ws/* 驗證\",\n \"routing_title\": \"路由策略\",\n \"routing_strategy_label\": \"路由策略:\",\n \"routing_strategy_hint\": \"round-robin 為輪詢,fill-first 為優先填充。\",\n \"routing_strategy_update\": \"更新\",\n \"routing_strategy_round_robin\": \"round-robin(輪詢)\",\n \"routing_strategy_fill_first\": \"fill-first(優先填充)\"\n },\n \"api_keys\": {\n \"title\": \"API 金鑰管理\",\n \"proxy_auth_title\": \"代理服務驗證金鑰\",\n \"add_button\": \"新增金鑰\",\n \"empty_title\": \"暫無 API 金鑰\",\n \"empty_desc\": \"點擊上方按鈕新增第一個金鑰\",\n \"item_title\": \"API 金鑰\",\n \"add_modal_title\": \"新增 API 金鑰\",\n \"add_modal_key_label\": \"API 金鑰:\",\n \"add_modal_key_placeholder\": \"請輸入 API 金鑰\",\n \"edit_modal_title\": \"編輯 API 金鑰\",\n \"edit_modal_key_label\": \"API 金鑰:\",\n \"delete_confirm\": \"確定要刪除這個 API 金鑰嗎?\"\n },\n \"ai_providers\": {\n \"title\": \"AI 供應商設定\",\n \"gemini_title\": \"Gemini API 金鑰\",\n \"gemini_add_button\": \"新增金鑰\",\n \"gemini_empty_title\": \"暫無 Gemini 金鑰\",\n \"gemini_empty_desc\": \"點擊上方按鈕新增第一個金鑰\",\n \"gemini_item_title\": \"Gemini 金鑰\",\n \"gemini_add_modal_title\": \"新增 Gemini API 金鑰\",\n \"gemini_add_modal_key_label\": \"API 金鑰\",\n \"gemini_add_modal_key_placeholder\": \"輸入 Gemini API 金鑰\",\n \"gemini_add_modal_key_hint\": \"逐條輸入金鑰,可同時指定選填 Base URL。\",\n \"gemini_keys_add_btn\": \"新增金鑰\",\n \"gemini_base_url_label\": \"Base URL(選填)\",\n \"gemini_base_url_placeholder\": \"例如: https://generativelanguage.googleapis.com\",\n \"gemini_add_modal_proxy_label\": \"代理 URL(選填):\",\n \"gemini_add_modal_proxy_placeholder\": \"例如: socks5://proxy.example.com:1080\",\n \"gemini_models_label\": \"自訂模型(選填):\",\n \"gemini_models_hint\": \"為空表示使用全部模型;可填寫 name[, alias] 以限制或重新命名模型。\",\n \"gemini_models_add_btn\": \"新增模型\",\n \"gemini_models_fetch_button\": \"從 /v1beta/models 取得\",\n \"gemini_models_fetch_title\": \"從 Gemini /v1beta/models 選擇模型\",\n \"gemini_models_fetch_hint\": \"按 Gemini API 規範請求 GET /v1beta/models;預設附帶 x-goog-api-key(來自 API Key 欄位)並合併你設定的自訂請求標頭。\",\n \"gemini_models_fetch_url_label\": \"請求位址\",\n \"gemini_models_fetch_refresh\": \"重新取得\",\n \"gemini_models_fetch_loading\": \"正在從 Gemini /v1beta/models 取得模型清單...\",\n \"gemini_models_fetch_empty\": \"未取得到模型,請檢查 Base URL、API Key 或請求標頭。\",\n \"gemini_models_fetch_error\": \"取得 Gemini 模型失敗\",\n \"gemini_models_fetch_apply\": \"新增已選模型\",\n \"model_discovery_select_visible\": \"全選目前清單\",\n \"model_discovery_clear_selection\": \"清空已選\",\n \"model_discovery_selected_count\": \"已選 {{count}} 項\",\n \"gemini_models_search_label\": \"搜尋模型\",\n \"gemini_models_search_placeholder\": \"依名稱、別名或描述篩選\",\n \"gemini_models_search_empty\": \"沒有符合的模型,請更換關鍵字試試。\",\n \"gemini_models_fetch_added\": \"已新增 {{count}} 個新模型\",\n \"gemini_models_count\": \"模型數量\",\n \"gemini_edit_modal_title\": \"編輯 Gemini API 金鑰\",\n \"gemini_edit_modal_key_label\": \"API 金鑰:\",\n \"gemini_delete_confirm\": \"確定要刪除這個 Gemini 金鑰嗎?\",\n \"excluded_models_label\": \"排除的模型(選填):\",\n \"excluded_models_placeholder\": \"用逗號或換行分隔,例如: gemini-1.5-pro, gemini-1.5-flash\",\n \"excluded_models_hint\": \"留空表示不篩選;儲存時會自動去重並忽略空白。\",\n \"excluded_models_count\": \"排除 {{count}} 個模型\",\n \"prefix_label\": \"前綴(選填):\",\n \"prefix_placeholder\": \"例如: team-a\",\n \"prefix_hint\": \"設定後可用 prefix/<model> 選擇該條目。\",\n \"priority_label\": \"優先順序(選填):\",\n \"priority_hint\": \"數值越大優先順序越高;留空表示預設(0)。\",\n \"config_toggle_label\": \"啟用\",\n \"config_disabled_badge\": \"已停用\",\n \"codex_title\": \"Codex API 設定\",\n \"codex_add_button\": \"新增設定\",\n \"codex_empty_title\": \"暫無 Codex 設定\",\n \"codex_empty_desc\": \"點擊上方按鈕新增第一個設定\",\n \"codex_item_title\": \"Codex 設定\",\n \"codex_add_modal_title\": \"新增 Codex API 設定\",\n \"codex_add_modal_key_label\": \"API 金鑰:\",\n \"codex_add_modal_key_placeholder\": \"請輸入 Codex API 金鑰\",\n \"codex_add_modal_url_label\": \"Base URL(必填):\",\n \"codex_add_modal_url_placeholder\": \"例如: https://api.example.com\",\n \"codex_add_modal_proxy_label\": \"代理 URL(選填):\",\n \"codex_add_modal_proxy_placeholder\": \"例如: socks5://proxy.example.com:1080\",\n \"codex_websockets_label\": \"Websockets\",\n \"codex_websockets_hint\": \"開啟 Responses API 的 websocket 傳輸。\",\n \"codex_models_label\": \"自訂模型(選填):\",\n \"codex_models_hint\": \"為空表示使用全部模型;可填寫 name[, alias] 以限制或重新命名模型。\",\n \"codex_models_add_btn\": \"新增模型\",\n \"codex_models_fetch_button\": \"從 /v1/models 取得\",\n \"codex_models_fetch_title\": \"從 /v1/models 選擇模型\",\n \"codex_models_fetch_hint\": \"使用上方 Base URL 呼叫 /v1/models 端點,附帶 API Key(Bearer)與自訂請求標頭。\",\n \"codex_models_fetch_url_label\": \"請求位址\",\n \"codex_models_fetch_refresh\": \"重新取得\",\n \"codex_models_fetch_loading\": \"正在從 /v1/models 取得模型清單...\",\n \"codex_models_fetch_empty\": \"未取得到模型,請檢查端點或驗證資訊。\",\n \"codex_models_fetch_error\": \"取得模型失敗\",\n \"codex_models_fetch_apply\": \"新增已選模型\",\n \"codex_models_search_label\": \"搜尋模型\",\n \"codex_models_search_placeholder\": \"依名稱、別名或描述篩選\",\n \"codex_models_search_empty\": \"沒有符合的模型,請更換關鍵字試試。\",\n \"codex_models_fetch_added\": \"已新增 {{count}} 個新模型\",\n \"codex_models_count\": \"模型數量\",\n \"codex_edit_modal_title\": \"編輯 Codex API 設定\",\n \"codex_edit_modal_key_label\": \"API 金鑰:\",\n \"codex_edit_modal_url_label\": \"Base URL(必填):\",\n \"codex_edit_modal_proxy_label\": \"代理 URL(選填):\",\n \"codex_delete_confirm\": \"確定要刪除這個 Codex 設定嗎?\",\n \"claude_title\": \"Claude API 設定\",\n \"claude_add_button\": \"新增設定\",\n \"claude_empty_title\": \"暫無 Claude 設定\",\n \"claude_empty_desc\": \"點擊上方按鈕新增第一個設定\",\n \"claude_item_title\": \"Claude 設定\",\n \"claude_add_modal_title\": \"新增 Claude API 設定\",\n \"claude_add_modal_key_label\": \"API 金鑰:\",\n \"claude_add_modal_key_placeholder\": \"請輸入 Claude API 金鑰\",\n \"claude_add_modal_url_label\": \"Base URL(選填):\",\n \"claude_add_modal_url_placeholder\": \"例如: https://api.anthropic.com\",\n \"claude_add_modal_proxy_label\": \"代理 URL(選填):\",\n \"claude_add_modal_proxy_placeholder\": \"例如: socks5://proxy.example.com:1080\",\n \"claude_edit_modal_title\": \"編輯 Claude API 設定\",\n \"claude_edit_modal_key_label\": \"API 金鑰:\",\n \"claude_edit_modal_url_label\": \"Base URL(選填):\",\n \"claude_edit_modal_proxy_label\": \"代理 URL(選填):\",\n \"claude_delete_confirm\": \"確定要刪除這個 Claude 設定嗎?\",\n \"claude_models_label\": \"自訂模型(選填):\",\n \"claude_models_hint\": \"為空表示使用全部模型;可填寫 name[, alias] 以限制或重新命名模型。\",\n \"claude_models_add_btn\": \"新增模型\",\n \"claude_models_count\": \"模型數量\",\n \"claude_models_fetch_button\": \"從 /v1/models 取得\",\n \"claude_models_fetch_title\": \"從 Claude /v1/models 選擇模型\",\n \"claude_models_fetch_hint\": \"按 Anthropic 規範請求 GET /v1/models,預設附帶 x-api-key 與 anthropic-version: 2023-06-01;也會合併你設定的自訂請求標頭。\",\n \"claude_models_fetch_url_label\": \"請求位址\",\n \"claude_models_fetch_refresh\": \"重新取得\",\n \"claude_models_fetch_loading\": \"正在從 Claude /v1/models 取得模型清單...\",\n \"claude_models_fetch_empty\": \"未取得到模型,請檢查 Base URL、API Key 或請求標頭。\",\n \"claude_models_fetch_error\": \"取得 Claude 模型失敗\",\n \"claude_models_fetch_apply\": \"新增已選模型\",\n \"claude_models_search_label\": \"搜尋模型\",\n \"claude_models_search_placeholder\": \"依名稱、別名或描述篩選\",\n \"claude_models_search_empty\": \"沒有符合的模型,請更換關鍵字試試。\",\n \"claude_models_fetch_added\": \"已新增 {{count}} 個新模型\",\n \"claude_test_title\": \"連通性測試\",\n \"claude_test_hint\": \"按 Anthropic 規範向 /v1/messages 發送測試請求,驗證目前設定是否可用。\",\n \"claude_test_select_placeholder\": \"從目前模型清單選擇\",\n \"claude_test_select_empty\": \"目前未設定模型,請先新增模型\",\n \"claude_test_action\": \"測試\",\n \"claude_test_running\": \"正在發送 Claude 測試請求...\",\n \"claude_test_timeout\": \"測試請求逾時({{seconds}} 秒)。\",\n \"claude_test_success\": \"測試成功,Claude 模型可用。\",\n \"claude_test_failed\": \"測試失敗\",\n \"claude_test_key_required\": \"請先填寫 Claude API Key 或在自訂請求標頭中設定 x-api-key\",\n \"claude_test_model_required\": \"請選擇要測試的模型\",\n \"claude_test_endpoint_invalid\": \"無法建構有效的 Claude /v1/messages 請求位址\",\n \"claude_cloak_title\": \"請求偽裝(選填):\",\n \"claude_cloak_toggle_label\": \"啟用\",\n \"claude_cloak_toggle_aria\": \"切換請求偽裝\",\n \"claude_cloak_hint\": \"對非 Claude Code 客戶端,將請求偽裝成 Claude Code CLI 的格式。\",\n \"claude_cloak_mode_label\": \"模式:\",\n \"claude_cloak_mode_hint\": \"auto: 僅對非 Claude Code 客戶端偽裝;always: 總是偽裝;never: 從不偽裝。\",\n \"claude_cloak_mode_auto\": \"自動(僅非 Claude Code)\",\n \"claude_cloak_mode_always\": \"總是\",\n \"claude_cloak_mode_never\": \"從不\",\n \"claude_cloak_strict_label\": \"嚴格模式:\",\n \"claude_cloak_strict_hint\": \"啟用後會移除用戶 system 訊息,僅保留 Claude Code 提示詞。\",\n \"claude_cloak_sensitive_words_label\": \"敏感詞(選填):\",\n \"claude_cloak_sensitive_words_placeholder\": \"用逗號或換行分隔,例如: internal-project\",\n \"claude_cloak_sensitive_words_hint\": \"這些詞會被插入零寬字元進行混淆。\",\n \"claude_cloak_sensitive_words_count\": \"敏感詞\",\n \"vertex_title\": \"Vertex API 設定\",\n \"vertex_add_button\": \"新增設定\",\n \"vertex_empty_title\": \"暫無 Vertex 設定\",\n \"vertex_empty_desc\": \"點擊上方按鈕新增第一個設定\",\n \"vertex_item_title\": \"Vertex 設定\",\n \"vertex_add_modal_title\": \"新增 Vertex API 設定\",\n \"vertex_add_modal_key_label\": \"API 金鑰:\",\n \"vertex_add_modal_key_placeholder\": \"請輸入 Vertex API 金鑰\",\n \"vertex_add_modal_url_label\": \"Base URL:\",\n \"vertex_add_modal_url_placeholder\": \"例如: https://example.com/api\",\n \"vertex_add_modal_proxy_label\": \"代理 URL(選填):\",\n \"vertex_add_modal_proxy_placeholder\": \"例如: socks5://proxy.example.com:1080\",\n \"vertex_edit_modal_title\": \"編輯 Vertex API 設定\",\n \"vertex_edit_modal_key_label\": \"API 金鑰:\",\n \"vertex_edit_modal_url_label\": \"Base URL:\",\n \"vertex_edit_modal_proxy_label\": \"代理 URL(選填):\",\n \"vertex_delete_confirm\": \"確定要刪除這個 Vertex 設定嗎?\",\n \"vertex_models_label\": \"模型別名:\",\n \"vertex_models_add_btn\": \"新增映射\",\n \"vertex_models_count\": \"別名數量\",\n \"ampcode_title\": \"Amp CLI 整合(ampcode)\",\n \"ampcode_modal_title\": \"設定 Ampcode\",\n \"ampcode_upstream_url_label\": \"Upstream URL\",\n \"ampcode_upstream_url_placeholder\": \"例如: https://ampcode.com\",\n \"ampcode_upstream_url_hint\": \"選填;留空表示使用預設/自動探索的控制平面位址。\",\n \"ampcode_upstream_api_key_label\": \"Upstream API Key(Amp 官方)\",\n \"ampcode_upstream_api_key_placeholder\": \"輸入 sk-amp...(留空不修改)\",\n \"ampcode_upstream_api_key_hint\": \"選填;留空不會修改目前 Amp 官方金鑰,需清除請點擊下方按鈕。\",\n \"ampcode_upstream_api_key_current\": \"目前 Amp 官方金鑰: {{key}}\",\n \"ampcode_clear_upstream_api_key\": \"清除官方金鑰\",\n \"ampcode_clear_upstream_api_key_confirm\": \"確定要清除 Ampcode 的 upstream API key(Amp 官方)嗎?\",\n \"ampcode_upstream_api_keys_label\": \"多上游 API Key 路由\",\n \"ampcode_upstream_api_keys_hint\": \"為指定客戶端 API Key 綁定不同的 Amp 上游 API Key;客戶端 key 可用逗號或換行分隔。\",\n \"ampcode_upstream_api_keys_add_btn\": \"新增多上游映射\",\n \"ampcode_upstream_api_keys_upstream_placeholder\": \"上游 API Key(sk-amp-...)\",\n \"ampcode_upstream_api_keys_clients_placeholder\": \"客戶端 API Keys,用逗號或換行分隔\",\n \"ampcode_upstream_api_keys_item_title\": \"上游映射 #{{index}}\",\n \"ampcode_upstream_api_keys_count\": \"多上游映射\",\n \"ampcode_force_model_mappings_label\": \"強制套用模型映射\",\n \"ampcode_force_model_mappings_hint\": \"開啟後,模型映射將覆寫本地 API Key 可用性判斷。\",\n \"ampcode_model_mappings_label\": \"模型映射(from → to)\",\n \"ampcode_model_mappings_hint\": \"用於改寫 Amp 請求中的模型名稱;留空表示不做映射。\",\n \"ampcode_model_mappings_add_btn\": \"新增映射\",\n \"ampcode_model_mappings_from_placeholder\": \"from 模型(原始)\",\n \"ampcode_model_mappings_to_placeholder\": \"to 模型(目標)\",\n \"ampcode_model_mappings_count\": \"映射數量\",\n \"ampcode_lists_overwrite_title\": \"覆寫清單設定\",\n \"ampcode_lists_overwrite_confirm\": \"目前未成功載入伺服器已有多上游/模型映射設定,繼續儲存可能覆寫或清空這些清單,是否繼續?\",\n \"ampcode_mappings_overwrite_confirm\": \"目前未成功載入伺服器已有映射,繼續儲存可能覆寫或清空已有映射,是否繼續?\",\n \"openai_title\": \"OpenAI 相容供應商\",\n \"openai_add_button\": \"新增供應商\",\n \"openai_empty_title\": \"暫無 OpenAI 相容供應商\",\n \"openai_empty_desc\": \"點擊上方按鈕新增第一個供應商\",\n \"openai_filtered_empty_title\": \"沒有匹配的供應商\",\n \"openai_filtered_empty_desc\": \"目前模型篩選下沒有匹配的供應商,請清除篩選後再試一次。\",\n \"sort_by_name\": \"依名稱排序\",\n \"sort_ascending\": \"升冪排序\",\n \"sort_asc_short\": \"升冪\",\n \"sort_by_priority\": \"依優先順序排序\",\n \"sort_by_recent_success\": \"依最近成功排序\",\n \"sort_descending\": \"降冪排序\",\n \"sort_desc_short\": \"降冪\",\n \"openai_test_model\": \"測試模型\",\n \"openai_add_modal_title\": \"新增 OpenAI 相容供應商\",\n \"openai_add_modal_name_label\": \"供應商名稱:\",\n \"openai_add_modal_name_placeholder\": \"例如: openrouter\",\n \"openai_add_modal_url_label\": \"Base URL:\",\n \"openai_add_modal_url_placeholder\": \"例如: https://openrouter.ai/api/v1\",\n \"openai_add_modal_keys_label\": \"API 金鑰\",\n \"openai_edit_modal_keys_label\": \"API 金鑰\",\n \"openai_keys_hint\": \"每個金鑰可搭配一個選填代理位址,更便於管理。\",\n \"openai_keys_add_btn\": \"新增金鑰\",\n \"openai_key_placeholder\": \"輸入 sk- 開頭的金鑰\",\n \"openai_proxy_placeholder\": \"選填代理 URL(如 socks5://...)\",\n \"openai_add_modal_models_label\": \"模型清單(name[, alias] 每行一個):\",\n \"openai_models_hint\": \"範例:gpt-4o-mini 或 moonshotai/kimi-k2:free, kimi-k2\",\n \"openai_model_name_placeholder\": \"模型名稱,如 moonshotai/kimi-k2:free\",\n \"openai_model_alias_placeholder\": \"模型別名(選填)\",\n \"openai_models_add_btn\": \"新增模型\",\n \"openai_models_fetch_button\": \"從 /models 取得\",\n \"openai_models_fetch_title\": \"從 /models 選擇模型\",\n \"openai_models_fetch_hint\": \"使用上方 Base URL 呼叫 /models 端點,附帶第一個 API Key(Bearer)與自訂請求標頭。\",\n \"openai_models_fetch_url_label\": \"請求位址\",\n \"openai_models_fetch_refresh\": \"重新取得\",\n \"openai_models_fetch_loading\": \"正在從 /models 取得模型清單...\",\n \"openai_models_fetch_empty\": \"未取得到模型,請檢查端點或驗證資訊。\",\n \"openai_models_fetch_error\": \"取得模型失敗\",\n \"openai_models_fetch_back\": \"返回編輯\",\n \"openai_models_fetch_apply\": \"新增已選模型\",\n \"openai_models_search_label\": \"搜尋模型\",\n \"openai_models_search_placeholder\": \"依名稱、別名或描述篩選\",\n \"openai_models_search_empty\": \"沒有符合的模型,請更換關鍵字試試。\",\n \"openai_models_fetch_invalid_url\": \"請先填寫有效的 Base URL\",\n \"openai_models_fetch_added\": \"已新增 {{count}} 個新模型\",\n \"openai_edit_modal_title\": \"編輯 OpenAI 相容供應商\",\n \"openai_edit_modal_name_label\": \"供應商名稱:\",\n \"openai_edit_modal_url_label\": \"Base URL:\",\n \"openai_edit_modal_models_label\": \"模型清單(name[, alias] 每行一個):\",\n \"openai_delete_confirm\": \"確定要刪除這個 OpenAI 供應商嗎?\",\n \"openai_keys_count\": \"金鑰數量\",\n \"openai_models_count\": \"模型數量\",\n \"openai_test_title\": \"連通性測試\",\n \"openai_test_hint\": \"使用目前設定向 /chat/completions 請求,驗證是否可用。\",\n \"openai_test_model_placeholder\": \"選擇或輸入要測試的模型\",\n \"openai_test_action\": \"發送測試\",\n \"openai_test_running\": \"正在發送測試請求...\",\n \"openai_test_timeout\": \"測試請求逾時({{seconds}} 秒)。\",\n \"openai_test_success\": \"測試成功,模型可用。\",\n \"openai_test_failed\": \"測試失敗\",\n \"openai_test_select_placeholder\": \"從目前模型清單選擇\",\n \"openai_test_select_empty\": \"目前未設定模型,請先新增模型\",\n \"openai_test_single_action\": \"測試\",\n \"openai_test_all_action\": \"一鍵測試全部金鑰\",\n \"openai_test_all_hint\": \"測試所有金鑰的連線狀態\",\n \"openai_test_all_success\": \"所有 {{count}} 個金鑰測試通過\",\n \"openai_test_all_failed\": \"所有 {{count}} 個金鑰測試失敗\",\n \"openai_test_all_partial\": \"測試完成:{{success}} 個通過,{{failed}} 個失敗\",\n \"model_search_placeholder\": \"依模型篩選...\",\n \"model_search_clear\": \"清除\",\n \"model_select_all\": \"全選\",\n \"model_filter_empty\": \"暫無可篩選模型\"\n },\n \"auth_files\": {\n \"title\": \"驗證檔案管理\",\n \"title_section\": \"驗證檔案\",\n \"description\": \"這裡集中管理 CLI Proxy 支援的所有 JSON 驗證檔案(如 Qwen、Gemini、Vertex 等),上傳後即可在執行時啟用對應的 AI 服務。\",\n \"upload_button\": \"上傳檔案\",\n \"delete_all_button\": \"刪除全部\",\n \"empty_title\": \"暫無驗證檔案\",\n \"empty_desc\": \"點擊上方按鈕上傳第一個檔案\",\n \"search_empty_title\": \"沒有符合的設定檔\",\n \"search_empty_desc\": \"請調整篩選條件或清空搜尋關鍵字再試一次。\",\n \"file_size\": \"大小\",\n \"file_modified\": \"修改時間\",\n \"health_status_label\": \"健康狀態\",\n \"health_status_healthy\": \"健康\",\n \"health_status_warning\": \"警告\",\n \"health_status_disabled\": \"已停用\",\n \"health_status_unknown\": \"未知\",\n \"health_status_no_message\": \"暫無狀態說明\",\n \"last_refresh_label\": \"最近重新整理\",\n \"refresh_not_available\": \"暫無\",\n \"refresh_just_now\": \"剛剛\",\n \"download_button\": \"下載\",\n \"delete_button\": \"刪除\",\n \"delete_confirm\": \"確定要刪除檔案\",\n \"delete_all_confirm\": \"確定要刪除所有驗證檔案嗎?此操作無法還原!\",\n \"delete_filtered_confirm\": \"確定要刪除篩選出的 {{type}} 驗證檔案嗎?此操作無法還原!\",\n \"delete_problem_button\": \"刪除問題憑證\",\n \"delete_problem_button_with_type\": \"刪除 {{type}} 問題憑證\",\n \"delete_problem_confirm\": \"確定要刪除所有有問題的驗證檔案嗎?此操作無法還原!\",\n \"delete_problem_filtered_confirm\": \"確定要刪除篩選出的有問題的 {{type}} 驗證檔案嗎?此操作無法還原!\",\n \"delete_filtered_result_button\": \"刪除篩選結果\",\n \"delete_filtered_result_confirm\": \"確定要刪除目前篩選結果中的驗證檔案嗎?此操作無法還原!\",\n \"upload_error_json\": \"只能上傳 JSON 檔案\",\n \"upload_error_size\": \"檔案大小不能超過 {{maxSize}}\",\n \"upload_success\": \"檔案上傳成功\",\n \"download_success\": \"檔案下載成功\",\n \"delete_success\": \"檔案刪除成功\",\n \"delete_all_success\": \"成功刪除\",\n \"delete_filtered_success\": \"成功刪除 {{count}} 個 {{type}} 驗證檔案\",\n \"delete_filtered_partial\": \"{{type}} 驗證檔案刪除完成,成功 {{success}} 個,失敗 {{failed}} 個\",\n \"delete_filtered_none\": \"目前篩選類型({{type}})下沒有可刪除的驗證檔案\",\n \"delete_problem_success\": \"成功刪除 {{count}} 個有問題的驗證檔案\",\n \"delete_problem_filtered_success\": \"成功刪除 {{count}} 個有問題的 {{type}} 驗證檔案\",\n \"delete_problem_partial\": \"有問題驗證檔案刪除完成,成功 {{success}} 個,失敗 {{failed}} 個\",\n \"delete_problem_filtered_partial\": \"有問題的 {{type}} 驗證檔案刪除完成,成功 {{success}} 個,失敗 {{failed}} 個\",\n \"delete_problem_none\": \"目前沒有可刪除的有問題驗證檔案\",\n \"delete_problem_filtered_none\": \"目前篩選類型({{type}})下沒有可刪除的有問題驗證檔案\",\n \"delete_filtered_result_success\": \"成功刪除 {{count}} 個篩選結果中的驗證檔案\",\n \"delete_filtered_result_partial\": \"篩選結果刪除完成,成功 {{success}} 個,失敗 {{failed}} 個\",\n \"delete_filtered_result_none\": \"目前篩選結果中沒有可刪除的驗證檔案\",\n \"files_count\": \"個檔案\",\n \"pagination_prev\": \"上一頁\",\n \"pagination_next\": \"下一頁\",\n \"pagination_info\": \"第 {{current}} / {{total}} 頁 · 共 {{count}} 個檔案\",\n \"search_label\": \"搜尋設定檔\",\n \"search_placeholder\": \"輸入名稱、類型或供應方關鍵字,支援 * 萬用字元\",\n \"problem_filter_label\": \"問題篩選\",\n \"problem_filter_only\": \"僅顯示有問題憑證\",\n \"disabled_filter_only\": \"僅顯示已停用憑證\",\n \"display_options_label\": \"顯示選項\",\n \"compact_mode_label\": \"簡略模式\",\n \"sort_label\": \"排序\",\n \"sort_default\": \"預設\",\n \"sort_az\": \"A-Z 名稱\",\n \"sort_priority\": \"優先順序\",\n \"priority_display\": \"優先順序\",\n \"page_size_label\": \"單頁數量\",\n \"page_size_unit\": \"個/頁\",\n \"view_mode_paged\": \"分頁顯示\",\n \"view_mode_all\": \"顯示全部\",\n \"too_many_files_warning\": \"您的憑證總數過多,全部載入會導致頁面卡頓,請保持分頁瀏覽。\",\n \"filter_all\": \"全部\",\n \"filter_qwen\": \"Qwen\",\n \"filter_gemini\": \"Gemini\",\n \"filter_gemini-cli\": \"GeminiCLI\",\n \"filter_kimi\": \"Kimi\",\n \"filter_aistudio\": \"AIStudio\",\n \"filter_claude\": \"Claude\",\n \"filter_codex\": \"Codex\",\n \"filter_antigravity\": \"Antigravity\",\n \"filter_xai\": \"xAI\",\n \"filter_iflow\": \"iFlow\",\n \"filter_vertex\": \"Vertex\",\n \"filter_empty\": \"空檔案\",\n \"filter_unknown\": \"其他\",\n \"type_qwen\": \"Qwen\",\n \"type_gemini\": \"Gemini\",\n \"type_gemini-cli\": \"GeminiCLI\",\n \"type_kimi\": \"Kimi\",\n \"type_aistudio\": \"AIStudio\",\n \"type_claude\": \"Claude\",\n \"type_codex\": \"Codex\",\n \"type_antigravity\": \"Antigravity\",\n \"type_xai\": \"xAI\",\n \"type_iflow\": \"iFlow\",\n \"type_vertex\": \"Vertex\",\n \"type_empty\": \"空檔案\",\n \"type_unknown\": \"其他\",\n \"type_virtual\": \"虛擬驗證檔案\",\n \"models_button\": \"模型\",\n \"models_title\": \"支援的模型\",\n \"models_loading\": \"正在載入模型清單...\",\n \"models_empty\": \"該憑證暫無可用模型\",\n \"models_empty_desc\": \"該驗證憑證可能尚未被伺服器載入或沒有綁定任何模型\",\n \"models_unsupported\": \"目前版本不支援此功能\",\n \"models_unsupported_desc\": \"請更新 CLI Proxy API 到最新版本後重試\",\n \"models_excluded_badge\": \"已停用\",\n \"models_excluded_hint\": \"此 OAuth 模型已被停用\",\n \"status_toggle_label\": \"啟用\",\n \"status_enabled_success\": \"已啟用「{{name}}」\",\n \"status_disabled_success\": \"已停用「{{name}}」\",\n \"batch_status_success\": \"已成功更新 {{count}} 個檔案\",\n \"batch_status_partial\": \"成功 {{success}} 個,失敗 {{failed}} 個\",\n \"batch_delete_title\": \"刪除已選檔案\",\n \"batch_delete_confirm\": \"確定要刪除 {{count}} 個檔案嗎?\",\n \"batch_selected\": \"已選 {{count}} 項\",\n \"batch_select_all\": \"全選\",\n \"batch_select_page\": \"全選目前頁\",\n \"batch_select_filtered\": \"全選篩選結果\",\n \"batch_invert_page\": \"反選目前頁\",\n \"batch_deselect\": \"取消選擇\",\n \"batch_download\": \"下載已選\",\n \"batch_download_success\": \"已開始下載 {{count}} 個檔案\",\n \"batch_download_partial\": \"下載完成:成功 {{success}} 個,失敗 {{failed}} 個\",\n \"batch_enable\": \"啟用\",\n \"batch_disable\": \"停用\",\n \"prefix_proxy_button\": \"驗證檔案詳情 / 編輯\",\n \"auth_field_editor_title\": \"驗證檔案詳情 / 編輯 - {{name}}\",\n \"prefix_proxy_loading\": \"正在載入驗證檔案...\",\n \"prefix_proxy_info_label\": \"驗證檔案資訊(info)\",\n \"prefix_proxy_source_label\": \"驗證檔案 JSON(預覽)\",\n \"prefix_proxy_invalid_content_label\": \"下載內容(已截斷)\",\n \"prefix_label\": \"前綴(prefix)\",\n \"proxy_url_label\": \"代理 URL(proxy_url)\",\n \"prefix_placeholder\": \"\",\n \"proxy_url_placeholder\": \"socks5://username:password@proxy_ip:port/\",\n \"priority_label\": \"優先順序(priority)\",\n \"priority_placeholder\": \"例如: 10 或 -1\",\n \"priority_hint\": \"僅支援整數;無效值會被忽略。數值越大優先順序越高。\",\n \"websockets_label\": \"WebSockets(websockets)\",\n \"websockets_hint\": \"為該憑證開啟 Responses API 的 websocket 傳輸。\",\n \"codex_websockets_label\": \"WebSockets(websockets)\",\n \"codex_websockets_hint\": \"為該 Codex 憑證開啟 Responses API 的 websocket 傳輸。\",\n \"excluded_models_label\": \"排除模型(excluded_models)\",\n \"excluded_models_placeholder\": \"用逗號或換行分隔,例如: model-a, gpt-5-*, *-preview\",\n \"excluded_models_hint\": \"儲存為陣列;會自動 trim、小寫、去重並排序。\",\n \"disable_cooling_label\": \"停用冷卻(disable_cooling)\",\n \"disable_cooling_placeholder\": \"例如: true / false / 1 / 0\",\n \"disable_cooling_hint\": \"支援布林值、0/非0 數字或字串 true/false/1/0;無法解析時忽略。\",\n \"using_api_label\": \"使用官方 API(using_api)\",\n \"using_api_hint\": \"開啟後使用 xAI 官方 API;關閉時使用 Grok CLI chat-proxy。\",\n \"note_label\": \"備註(note)\",\n \"note_placeholder\": \"輸入備註資訊,例如:張三的帳號\",\n \"note_hint\": \"選填,用於標記憑證用途或歸屬;留空則不寫入。\",\n \"note_display\": \"備註\",\n \"headers_label\": \"自訂請求標頭(headers)\",\n \"headers_placeholder\": \"{\\n \\\"Header-Name\\\": \\\"value\\\"\\n}\",\n \"headers_hint\": \"以 JSON 物件格式輸入自訂 HTTP 請求標頭,例如:{\\\"X-My-Header\\\": \\\"value\\\"}\",\n \"headers_invalid_json\": \"自訂請求標頭必須是有效的 JSON。\",\n \"headers_invalid_object\": \"自訂請求標頭必須是 JSON 物件。\",\n \"headers_invalid_value\": \"每個自訂請求標頭的值都必須是字串。\",\n \"prefix_proxy_invalid_json\": \"該驗證檔案不是 JSON 物件,無法編輯欄位。\",\n \"prefix_proxy_html_challenge\": \"下載到的是 HTML 驗證頁面,不是驗證 JSON 物件。請重新驗證或替換該驗證檔案後再編輯欄位。\",\n \"prefix_proxy_saved_success\": \"已更新驗證檔案「{{name}}」\",\n \"quota_refresh_single\": \"重新整理配額\",\n \"quota_refresh_hint\": \"僅重新整理該驗證檔案的配額\",\n \"quota_refresh_success\": \"已重新整理「{{name}}」的配額\",\n \"quota_refresh_failed\": \"重新整理「{{name}}」的配額失敗:{{message}}\"\n },\n \"antigravity_quota\": {\n \"title\": \"Antigravity 配額\",\n \"empty_title\": \"暫無 Antigravity 驗證\",\n \"empty_desc\": \"上傳 Antigravity 驗證檔案後即可查看配額。\",\n \"idle\": \"點擊此處重新整理配額\",\n \"loading\": \"正在載入配額...\",\n \"load_failed\": \"配額取得失敗:{{message}}\",\n \"missing_auth_index\": \"驗證檔案缺少 auth_index\",\n \"empty_models\": \"暫無配額資料\",\n \"refresh_button\": \"重新整理配額\",\n \"fetch_all\": \"取得全部\"\n },\n \"claude_quota\": {\n \"title\": \"Claude 配額\",\n \"empty_title\": \"暫無 Claude OAuth 驗證\",\n \"empty_desc\": \"使用 Claude OAuth 登入後即可查看配額。\",\n \"idle\": \"點擊此處重新整理配額\",\n \"loading\": \"正在載入配額...\",\n \"load_failed\": \"配額取得失敗:{{message}}\",\n \"missing_auth_index\": \"驗證檔案缺少 auth_index\",\n \"empty_windows\": \"暫無配額資料\",\n \"refresh_button\": \"重新整理配額\",\n \"fetch_all\": \"取得全部\",\n \"five_hour\": \"5 小時限額\",\n \"seven_day\": \"7 天限額\",\n \"seven_day_oauth_apps\": \"7 天 OAuth 應用\",\n \"seven_day_opus\": \"7 天 Opus\",\n \"seven_day_sonnet\": \"7 天 Sonnet\",\n \"seven_day_cowork\": \"7 天 Cowork\",\n \"iguana_necktie\": \"Iguana Necktie\",\n \"seven_day_fable\": \"7 天 Fable 5\",\n \"extra_usage_label\": \"額外用量\",\n \"plan_label\": \"方案\",\n \"plan_unknown\": \"未知\",\n \"plan_free\": \"免費版\",\n \"plan_pro\": \"專業版\",\n \"plan_max\": \"Max\",\n \"plan_max5\": \"Max 5x\",\n \"plan_max20\": \"Max 20x\",\n \"plan_team\": \"團隊版\"\n },\n \"gemini_cli_quota\": {\n \"title\": \"Gemini CLI 配額\",\n \"empty_title\": \"暫無 Gemini CLI 驗證\",\n \"empty_desc\": \"上傳 Gemini CLI 驗證檔案後即可查看配額。\",\n \"idle\": \"點擊此處重新整理配額\",\n \"loading\": \"正在載入配額...\",\n \"load_failed\": \"配額取得失敗:{{message}}\",\n \"missing_auth_index\": \"驗證檔案缺少 auth_index\",\n \"missing_project_id\": \"Gemini CLI 憑證缺少 Project ID\",\n \"empty_buckets\": \"暫無配額資料\",\n \"refresh_button\": \"重新整理配額\",\n \"fetch_all\": \"取得全部\",\n \"remaining_amount\": \"剩餘 {{count}}\",\n \"tier_label\": \"層級\",\n \"tier_free\": \"免費版\",\n \"tier_legacy\": \"舊版\",\n \"tier_standard\": \"標準版\",\n \"tier_pro\": \"Pro\",\n \"tier_ultra\": \"Ultra\",\n \"credit_label\": \"Google One AI 點數\",\n \"credit_amount\": \"{{count}} 點數\"\n },\n \"kimi_quota\": {\n \"title\": \"Kimi 配額\",\n \"empty_title\": \"暫無 Kimi 驗證\",\n \"empty_desc\": \"上傳 Kimi 驗證檔案後即可查看配額。\",\n \"idle\": \"點擊此處重新整理配額\",\n \"loading\": \"正在載入配額...\",\n \"load_failed\": \"配額取得失敗:{{message}}\",\n \"missing_auth_index\": \"驗證檔案缺少 auth_index\",\n \"empty_data\": \"暫無配額資料\",\n \"refresh_button\": \"重新整理配額\",\n \"fetch_all\": \"取得全部\",\n \"weekly_limit\": \"週限額\",\n \"limit_window\": \"{{duration}} 限額\",\n \"limit_index\": \"限額 #{{index}}\",\n \"reset_hint\": \"{{hint}} 後重置\"\n },\n \"xai_quota\": {\n \"title\": \"Grok 配額\",\n \"empty_title\": \"暫無 xAI/Grok 驗證\",\n \"empty_desc\": \"使用 xAI OAuth 登入後即可查看 Grok 配額。\",\n \"idle\": \"點擊此處重新整理配額\",\n \"loading\": \"正在載入配額...\",\n \"load_failed\": \"配額取得失敗:{{message}}\",\n \"missing_auth_index\": \"驗證檔案缺少 auth_index\",\n \"empty_data\": \"暫無配額資料\",\n \"refresh_button\": \"重新整理配額\",\n \"fetch_all\": \"取得全部\",\n \"weekly_limit\": \"週限額\",\n \"monthly_credits\": \"月度點數\",\n \"used_percent\": \"已用 {{percent}}\",\n \"reset_at\": \"重置 {{time}}\",\n \"product_usage\": \"{{product}} 使用\",\n \"plan_label\": \"方案\",\n \"plan_supergrok\": \"SuperGrok\",\n \"plan_supergrok_heavy\": \"SuperGrok Heavy\",\n \"pay_as_you_go_label\": \"按量付費\",\n \"pay_as_you_go_enabled\": \"已啟用,封頂 {{cap}}\",\n \"pay_as_you_go_disabled\": \"未啟用\"\n },\n \"vertex_import\": {\n \"title\": \"Vertex JSON 登入\",\n \"description\": \"上傳 Google 服務帳號 JSON,使用 CLI vertex-import 同步規則寫入 auth-dir/vertex-<project>.json。\",\n \"location_label\": \"目標區域(選填)\",\n \"location_placeholder\": \"us-central1\",\n \"location_hint\": \"留空表示使用預設區域 us-central1。\",\n \"file_label\": \"服務帳號金鑰 JSON\",\n \"file_hint\": \"僅支援 Google Cloud service account key JSON 檔案,私鑰會自動規範化。\",\n \"file_placeholder\": \"尚未選擇檔案\",\n \"choose_file\": \"選擇檔案\",\n \"import_button\": \"匯入 Vertex 憑證\",\n \"file_required\": \"請先選擇 .json 憑證檔案\",\n \"success\": \"Vertex 憑證匯入成功\",\n \"result_title\": \"憑證已儲存\",\n \"result_project\": \"專案 ID\",\n \"result_email\": \"服務帳號\",\n \"result_location\": \"區域\",\n \"result_file\": \"儲存檔案\"\n },\n \"oauth_excluded\": {\n \"title\": \"OAuth 模型停用\",\n \"description\": \"按供應商分列展示,點擊卡片編輯或刪除;支援 * 萬用字元,範圍跟隨上方的設定檔篩選標籤。\",\n \"add\": \"新增停用\",\n \"add_title\": \"新增供應商模型停用\",\n \"edit_title\": \"編輯 {{provider}} 的模型停用\",\n \"refresh\": \"重新整理\",\n \"refreshing\": \"重新整理中...\",\n \"provider_label\": \"供應商\",\n \"provider_auto\": \"跟隨目前篩選\",\n \"provider_placeholder\": \"例如 gemini-cli / openai\",\n \"provider_hint\": \"預設選取目前篩選的供應商,也可直接輸入或選擇其他名稱。\",\n \"models_label\": \"停用的模型\",\n \"models_loading\": \"正在載入模型清單...\",\n \"models_unsupported\": \"目前 CPA 版本不支援取得模型清單。\",\n \"models_loaded\": \"已載入 {{count}} 個模型,勾選要停用的模型。\",\n \"no_models_available\": \"該供應商暫無可用模型清單。\",\n \"custom_rule_label\": \"自訂模型規則\",\n \"custom_rule_hint\": \"可填寫精確模型 ID,或使用 gpt-* 這類萬用字元規則。\",\n \"custom_rule_placeholder\": \"例如 gpt-* / custom-model\",\n \"custom_rule_add\": \"新增規則\",\n \"custom_rules_label\": \"已設定的自訂規則\",\n \"custom_rule_remove\": \"移除 {{rule}}\",\n \"save\": \"儲存/更新\",\n \"saving\": \"正在儲存...\",\n \"save_success\": \"模型停用已更新\",\n \"save_failed\": \"更新模型停用失敗\",\n \"delete\": \"刪除供應商\",\n \"delete_confirm\": \"確定要刪除 {{provider}} 的模型停用嗎?\",\n \"delete_success\": \"已刪除該供應商的模型停用\",\n \"delete_failed\": \"刪除模型停用失敗\",\n \"deleting\": \"正在刪除...\",\n \"no_models\": \"未設定停用模型\",\n \"model_count\": \"停用 {{count}} 個模型\",\n \"list_empty_all\": \"暫無任何供應商的模型停用,點擊「新增停用」建立。\",\n \"list_empty_filtered\": \"目前篩選下沒有停用項,點擊「新增停用」新增。\",\n \"disconnected\": \"請先連線伺服器以查看模型停用\",\n \"load_failed\": \"載入模型停用失敗\",\n \"provider_required\": \"請先填寫供應商名稱\",\n \"scope_all\": \"目前範圍:全域(顯示所有供應商)\",\n \"scope_provider\": \"目前範圍:{{provider}}\",\n \"upgrade_required\": \"目前 CPA 版本不支援 OAuth 模型停用,請升級 CPA 版本\",\n \"upgrade_required_title\": \"需要升級 CPA 版本\",\n \"upgrade_required_desc\": \"目前伺服器版本不支援取得 OAuth 模型停用功能,請升級到最新版本的 CPA(CLI Proxy API)後重試。\"\n },\n \"oauth_model_alias\": {\n \"title\": \"OAuth 模型別名\",\n \"add\": \"新增別名\",\n \"add_title\": \"新增供應商模型別名\",\n \"provider_label\": \"供應商\",\n \"provider_placeholder\": \"例如 gemini-cli / vertex\",\n \"provider_hint\": \"預設選取目前篩選的供應商,也可直接輸入或選擇其他名稱。\",\n \"model_source_loading\": \"正在載入模型清單...\",\n \"model_source_unsupported\": \"目前 CPA 版本不支援取得模型清單(仍可手動輸入)。\",\n \"model_source_loaded\": \"已載入 {{count}} 個模型,可在「原模型名稱」中下拉選擇;也可手動輸入。留空儲存將刪除該供應商記錄;開啟「保留原名」會在保留原模型名的同時新增別名。\",\n \"alias_label\": \"模型別名\",\n \"alias_name_placeholder\": \"原模型名稱\",\n \"alias_placeholder\": \"別名(必填)\",\n \"duplicate_alias\": \"同一供應商下的別名不能重複。\",\n \"alias_fork_label\": \"保留原名\",\n \"add_alias\": \"新增別名\",\n \"save\": \"儲存/更新\",\n \"save_success\": \"模型別名已更新\",\n \"save_failed\": \"更新模型別名失敗\",\n \"delete\": \"刪除供應商\",\n \"delete_confirm\": \"確定要刪除 {{provider}} 的模型別名嗎?\",\n \"delete_link_title\": \"取消連結\",\n \"delete_link_confirm\": \"確定取消 <code>{{sourceModel}}</code>({{provider}})到別名 <code>{{alias}}</code> 的映射?\",\n \"delete_alias_title\": \"刪除別名\",\n \"delete_alias_confirm\": \"確定刪除別名 <code>{{alias}}</code> 並取消所有關聯模型的映射?\",\n \"delete_success\": \"已刪除該供應商的模型別名\",\n \"delete_failed\": \"刪除模型別名失敗\",\n \"no_models\": \"未設定模型別名\",\n \"model_count\": \"{{count}} 條別名\",\n \"list_empty_all\": \"暫無任何供應商的模型別名,點擊「新增別名」建立。\",\n \"chart_title\": \"全部映射概覽\",\n \"diagram_providers\": \"供應商\",\n \"diagram_source_models\": \"來源模型\",\n \"diagram_aliases\": \"別名\",\n \"diagram_expand\": \"展開\",\n \"diagram_collapse\": \"收起\",\n \"diagram_add_alias\": \"新增別名\",\n \"diagram_rename\": \"重新命名\",\n \"diagram_rename_alias_title\": \"重新命名別名\",\n \"diagram_rename_alias_label\": \"新別名名稱\",\n \"diagram_rename_placeholder\": \"輸入別名名稱...\",\n \"diagram_delete_link\": \"取消連結 {{provider}} / {{name}}\",\n \"diagram_delete_alias\": \"刪除別名\",\n \"diagram_please_enter_alias\": \"請輸入別名名稱。\",\n \"diagram_alias_exists\": \"該別名已存在。\",\n \"diagram_add_alias_title\": \"新增別名\",\n \"diagram_add_alias_label\": \"別名名稱\",\n \"diagram_add_placeholder\": \"輸入新別名名稱...\",\n \"diagram_rename_btn\": \"重新命名\",\n \"diagram_add_btn\": \"新增\",\n \"diagram_settings\": \"設定\",\n \"diagram_settings_title\": \"別名設定 — {{alias}}\",\n \"diagram_settings_source_title\": \"來源模型設定\",\n \"diagram_settings_empty\": \"該別名暫無映射。\",\n \"diagram_tap_hint\": \"觸控設備上:先點選來源模型,再點選別名即可建立映射。\",\n \"view_mode\": \"檢視模式\",\n \"view_mode_diagram\": \"概覽\",\n \"view_mode_list\": \"管理\",\n \"provider_required\": \"請先填寫供應商名稱\",\n \"upgrade_required\": \"目前 CPA 版本不支援模型別名功能,請升級 CPA 版本\",\n \"upgrade_required_title\": \"需要升級 CPA 版本\",\n \"upgrade_required_desc\": \"目前伺服器版本不支援 OAuth 模型別名功能,請升級到最新版本的 CPA(CLI Proxy API)後重試。\"\n },\n \"auth_login\": {\n \"codex_oauth_title\": \"Codex OAuth\",\n \"codex_oauth_button\": \"開始 Codex 登入\",\n \"codex_oauth_hint\": \"透過 OAuth 流程登入 Codex 服務,自動取得並儲存驗證檔案。\",\n \"codex_oauth_url_label\": \"授權連結:\",\n \"codex_open_link\": \"開啟連結\",\n \"codex_copy_link\": \"複製連結\",\n \"codex_oauth_status_waiting\": \"等待驗證中...\",\n \"codex_oauth_status_success\": \"驗證成功!\",\n \"codex_oauth_status_error\": \"驗證失敗:\",\n \"codex_oauth_start_error\": \"啟動 Codex OAuth 失敗:\",\n \"codex_oauth_polling_error\": \"檢查驗證狀態失敗:\",\n \"anthropic_oauth_title\": \"Anthropic OAuth\",\n \"anthropic_oauth_button\": \"開始 Anthropic 登入\",\n \"anthropic_oauth_hint\": \"透過 OAuth 流程登入 Anthropic(Claude)服務,自動取得並儲存驗證檔案。\",\n \"anthropic_oauth_url_label\": \"授權連結:\",\n \"anthropic_open_link\": \"開啟連結\",\n \"anthropic_copy_link\": \"複製連結\",\n \"anthropic_oauth_status_waiting\": \"等待驗證中...\",\n \"anthropic_oauth_status_success\": \"驗證成功!\",\n \"anthropic_oauth_status_error\": \"驗證失敗:\",\n \"anthropic_oauth_start_error\": \"啟動 Anthropic OAuth 失敗:\",\n \"anthropic_oauth_polling_error\": \"檢查驗證狀態失敗:\",\n \"antigravity_oauth_title\": \"Antigravity OAuth\",\n \"antigravity_oauth_button\": \"開始 Antigravity 登入\",\n \"antigravity_oauth_hint\": \"透過 OAuth 流程登入 Antigravity(Google 帳號)服務,自動取得並儲存驗證檔案。\",\n \"antigravity_oauth_url_label\": \"授權連結:\",\n \"antigravity_open_link\": \"開啟連結\",\n \"antigravity_copy_link\": \"複製連結\",\n \"antigravity_oauth_status_waiting\": \"等待驗證中...\",\n \"antigravity_oauth_status_success\": \"驗證成功!\",\n \"antigravity_oauth_status_error\": \"驗證失敗:\",\n \"antigravity_oauth_start_error\": \"啟動 Antigravity OAuth 失敗:\",\n \"antigravity_oauth_polling_error\": \"檢查驗證狀態失敗:\",\n \"gemini_cli_oauth_title\": \"Gemini CLI OAuth\",\n \"gemini_cli_oauth_button\": \"開始 Gemini CLI 登入\",\n \"gemini_cli_oauth_hint\": \"透過 OAuth 流程登入 Google Gemini CLI 服務,自動取得並儲存驗證檔案。\",\n \"gemini_cli_project_id_label\": \"Google Cloud 專案 ID(選填):\",\n \"gemini_cli_project_id_placeholder\": \"留空將自動選擇第一個可用專案\",\n \"gemini_cli_project_id_hint\": \"可選填專案 ID。如不填寫,系統將自動選擇您帳號下的第一個可用專案。輸入 ALL 可取得全部專案。\",\n \"gemini_cli_project_id_required\": \"請填寫 Google Cloud 專案 ID。\",\n \"gemini_cli_oauth_url_label\": \"授權連結:\",\n \"gemini_cli_open_link\": \"開啟連結\",\n \"gemini_cli_copy_link\": \"複製連結\",\n \"gemini_cli_oauth_status_waiting\": \"等待驗證中...\",\n \"gemini_cli_oauth_status_success\": \"驗證成功!\",\n \"gemini_cli_oauth_status_error\": \"驗證失敗:\",\n \"gemini_cli_oauth_start_error\": \"啟動 Gemini CLI OAuth 失敗:\",\n \"gemini_cli_oauth_polling_error\": \"檢查驗證狀態失敗:\",\n \"kimi_oauth_title\": \"Kimi OAuth\",\n \"kimi_oauth_button\": \"開始 Kimi 登入\",\n \"kimi_oauth_hint\": \"透過裝置授權流程登入 Kimi 服務,自動取得並儲存驗證檔案。\",\n \"kimi_oauth_url_label\": \"授權連結:\",\n \"kimi_open_link\": \"開啟連結\",\n \"kimi_copy_link\": \"複製連結\",\n \"kimi_oauth_status_waiting\": \"等待驗證中...\",\n \"kimi_oauth_status_success\": \"驗證成功!\",\n \"kimi_oauth_status_error\": \"驗證失敗:\",\n \"kimi_oauth_start_error\": \"啟動 Kimi OAuth 失敗:\",\n \"kimi_oauth_polling_error\": \"檢查驗證狀態失敗:\",\n \"xai_oauth_title\": \"xAI OAuth\",\n \"xai_oauth_button\": \"開始 xAI 登入\",\n \"xai_oauth_hint\": \"透過 OAuth 流程登入 xAI Grok 服務,自動取得並儲存驗證檔案。\",\n \"xai_oauth_url_label\": \"授權連結:\",\n \"xai_open_link\": \"開啟連結\",\n \"xai_copy_link\": \"複製連結\",\n \"xai_oauth_status_waiting\": \"等待驗證中...\",\n \"xai_oauth_status_success\": \"驗證成功!\",\n \"xai_oauth_status_error\": \"驗證失敗:\",\n \"xai_oauth_start_error\": \"啟動 xAI OAuth 失敗:\",\n \"xai_oauth_polling_error\": \"檢查驗證狀態失敗:\",\n \"xai_callback_label\": \"回調 URL 或授權碼\",\n \"xai_callback_placeholder\": \"貼上頁面顯示的 code,或完整 callback URL\",\n \"xai_callback_hint\": \"Grok 有時只在頁面顯示 code。可直接貼上 code,系統會自動拼接為 http://127.0.0.1:56121/callback?... 後提交。\",\n \"xai_callback_required\": \"請先貼上 Grok 頁面顯示的 code 或完整回調 URL。\",\n \"xai_callback_state_missing\": \"缺少本次 xAI 登入的 state,請重新開始 xAI 登入後再提交 code。\",\n \"qwen_oauth_title\": \"Qwen OAuth\",\n \"qwen_oauth_button\": \"開始 Qwen 登入\",\n \"qwen_oauth_hint\": \"透過裝置授權流程登入 Qwen 服務,自動取得並儲存驗證檔案。\",\n \"qwen_oauth_url_label\": \"授權連結:\",\n \"qwen_open_link\": \"開啟連結\",\n \"qwen_copy_link\": \"複製連結\",\n \"qwen_oauth_status_waiting\": \"等待驗證中...\",\n \"qwen_oauth_status_success\": \"驗證成功!\",\n \"qwen_oauth_status_error\": \"驗證失敗:\",\n \"qwen_oauth_start_error\": \"啟動 Qwen OAuth 失敗:\",\n \"qwen_oauth_polling_error\": \"檢查驗證狀態失敗:\",\n \"oauth_callback_label\": \"回調 URL\",\n \"oauth_callback_placeholder\": \"http://localhost:1455/auth/callback?code=...&state=...\",\n \"oauth_callback_hint\": \"遠端瀏覽器模式:當授權跳轉到 http://localhost:... 後,複製完整 URL 並提交到這裡。\",\n \"oauth_callback_button\": \"提交回調 URL\",\n \"oauth_callback_required\": \"請先貼上完整的回調 URL。\",\n \"oauth_callback_success\": \"回調 URL 已提交,請繼續等待驗證。\",\n \"oauth_callback_error\": \"提交回調 URL 失敗:\",\n \"oauth_callback_upgrade_hint\": \"請更新 CLI Proxy API 或檢查連線\",\n \"oauth_callback_status_success\": \"回調 URL 已提交,等待驗證中...\",\n \"oauth_callback_status_error\": \"回調 URL 提交失敗:\",\n \"missing_state\": \"無法取得驗證狀態參數\",\n \"iflow_oauth_title\": \"iFlow OAuth\",\n \"iflow_oauth_button\": \"開始 iFlow 登入\",\n \"iflow_oauth_hint\": \"透過 OAuth 流程登入 iFlow 服務,自動取得並儲存驗證檔案。\",\n \"iflow_oauth_url_label\": \"授權連結:\",\n \"iflow_open_link\": \"開啟連結\",\n \"iflow_copy_link\": \"複製連結\",\n \"iflow_oauth_status_waiting\": \"等待驗證中...\",\n \"iflow_oauth_status_success\": \"驗證成功!\",\n \"iflow_oauth_status_error\": \"驗證失敗:\",\n \"iflow_oauth_start_error\": \"啟動 iFlow OAuth 失敗:\",\n \"iflow_oauth_polling_error\": \"檢查驗證狀態失敗:\",\n \"iflow_cookie_title\": \"iFlow Cookie 登入\",\n \"iflow_cookie_label\": \"Cookie 內容:\",\n \"iflow_cookie_placeholder\": \"填入 BXAuth 值,以 BXAuth= 開頭\",\n \"iflow_cookie_hint\": \"直接提交 Cookie 以完成登入(無需開啟授權連結),伺服器端將自動儲存憑證。\",\n \"iflow_cookie_key_hint\": \"提示:需在平台上先建立 Key。\",\n \"iflow_cookie_button\": \"提交 Cookie 登入\",\n \"iflow_cookie_status_success\": \"Cookie 登入成功,憑證已儲存。\",\n \"iflow_cookie_status_error\": \"Cookie 登入失敗:\",\n \"iflow_cookie_status_duplicate\": \"設定檔重複:\",\n \"iflow_cookie_start_error\": \"提交 Cookie 登入失敗:\",\n \"iflow_cookie_config_duplicate\": \"偵測到設定檔已存在(重複),如需重新儲存請先刪除原檔案後重試。\",\n \"iflow_cookie_required\": \"請先填寫 Cookie 內容\",\n \"iflow_cookie_result_title\": \"Cookie 登入結果\",\n \"iflow_cookie_result_email\": \"帳號\",\n \"iflow_cookie_result_expired\": \"到期時間\",\n \"iflow_cookie_result_path\": \"儲存路徑\",\n \"iflow_cookie_result_type\": \"類型\",\n \"remote_access_disabled\": \"遠端存取不支援此登入方式,請從本地(localhost)存取\"\n },\n \"stats\": {\n \"success\": \"成功\",\n \"failure\": \"失敗\"\n },\n \"status_bar\": {\n \"success_short\": \"✓\",\n \"failure_short\": \"✗\",\n \"no_requests\": \"無請求\"\n },\n \"usage_stats\": {\n \"title\": \"使用統計\",\n \"total_requests\": \"總請求數\",\n \"success_requests\": \"成功請求\",\n \"failed_requests\": \"失敗請求\",\n \"total_tokens\": \"總 Token 數\",\n \"cached_tokens\": \"快取 Tokens\",\n \"cache_read_tokens\": \"快取讀取 Tokens\",\n \"cache_write_tokens\": \"快取寫入 Tokens\",\n \"reasoning_tokens\": \"推理 Tokens\",\n \"rpm_30m\": \"RPM\",\n \"tpm_30m\": \"TPM\",\n \"rate_30m\": \"近 30 分鐘速率\",\n \"model_name\": \"模型名稱\",\n \"model_price_settings\": \"模型定價設定\",\n \"saved_prices\": \"已儲存的定價\",\n \"requests_trend\": \"請求趨勢\",\n \"tokens_trend\": \"Token 使用趨勢\",\n \"api_details\": \"API 詳細統計\",\n \"by_hour\": \"依小時\",\n \"by_day\": \"依天\",\n \"range_filter\": \"時間範圍\",\n \"range_all\": \"全部時間\",\n \"range_1h\": \"最近 1 小時\",\n \"range_7h\": \"最近 7 小時\",\n \"range_24h\": \"最近 24 小時\",\n \"range_7d\": \"最近 7 天\",\n \"range_30d\": \"最近 30 天\",\n \"filter_all\": \"全部\",\n \"clear_filters\": \"清空篩選\",\n \"refresh\": \"重新整理\",\n \"export\": \"匯出資料\",\n \"import\": \"匯入資料\",\n \"export_csv\": \"匯出 CSV\",\n \"export_json\": \"匯出 JSON\",\n \"export_success\": \"使用統計已匯出\",\n \"import_success\": \"匯入完成:新增 {{added}},跳過 {{skipped}},總請求 {{total}},失敗 {{failed}}\",\n \"import_success_migrated_v1\": \"匯入完成:新增 {{added}},跳過 {{skipped}},總請求 {{total}},失敗 {{failed}}。Token contract 已從 schema v1 遷移到 v{{schemaVersion}}。\",\n \"import_invalid\": \"匯入檔案格式不正確\",\n \"import_review_title\": \"檢查使用統計匯入\",\n \"import_review_intro\": \"匯入採追加合併。請先檢查此快照,再合併到目前 Core 使用統計。\",\n \"import_review_summary\": \"版本 {{version}} · {{details}} 筆請求明細\",\n \"import_review_duplicates\": \"檔案內可能重複 {{count}} 筆\",\n \"import_review_overlaps\": \"與目前統計可能重疊 {{count}} 筆\",\n \"import_review_uncertain_identities\": \"{{count}} 筆明細缺少穩定時間戳,未參與重複與重疊偵測\",\n \"import_review_current_unavailable\": \"目前使用統計無法取得,因此無法完成重疊偵測。\",\n \"import_error_usage_version_unsupported\": \"不支援的使用統計匯出版本;僅可匯入 schema v1 或 v2。\",\n \"import_error_usage_shape_invalid\": \"使用統計匯出的巢狀結構或欄位類型無效。\",\n \"import_error_usage_v1_token_contract_invalid\": \"schema v1 Token contract 無效,無法安全遷移。\",\n \"import_error_usage_v1_cache_semantics_ambiguous\": \"schema v1 快取語義不明確;含快取的明細必須提供 uncached_input_tokens 才能無損遷移。\",\n \"import_error_usage_v2_token_contract_invalid\": \"無效的 canonical schema v2 Token contract。\",\n \"import_error_usage_aggregate_overflow\": \"匯入會導致 Core 使用統計彙總溢位;沒有合併任何使用資料。\",\n \"import_review_confirm\": \"仍然匯入\",\n \"chart_line_label_1\": \"曲線 1\",\n \"chart_line_label_2\": \"曲線 2\",\n \"chart_line_label_3\": \"曲線 3\",\n \"chart_line_label_4\": \"曲線 4\",\n \"chart_line_label_5\": \"曲線 5\",\n \"chart_line_label_6\": \"曲線 6\",\n \"chart_line_label_7\": \"曲線 7\",\n \"chart_line_label_8\": \"曲線 8\",\n \"chart_line_label_9\": \"曲線 9\",\n \"chart_line_hidden\": \"不顯示\",\n \"chart_line_actions_label\": \"曲線數量\",\n \"chart_line_add\": \"增加曲線\",\n \"chart_line_all\": \"全部\",\n \"chart_line_delete\": \"刪除曲線\",\n \"chart_line_hint\": \"最多同時顯示 9 條模型曲線\",\n \"no_data\": \"暫無資料\",\n \"loading_error\": \"載入失敗\",\n \"api_endpoint\": \"API 端點\",\n \"requests_count\": \"請求次數\",\n \"tokens_count\": \"Token 數量\",\n \"model_cache_rate\": \"快取讀取占比\",\n \"model_cache_rate_hint\": \"快取讀取占比 = 快取讀取 Token / 總輸入 Token。僅在該模型統計中的每個請求都有已記錄明細時顯示;否則為未設定。\",\n \"models\": \"模型統計\",\n \"success_rate\": \"成功率\",\n \"total_cost\": \"總花費\",\n \"total_cost_hint\": \"基於已設定的模型單價\",\n \"model_price_title\": \"模型定價\",\n \"model_price_reset\": \"清除定價\",\n \"model_price_model_label\": \"選擇模型\",\n \"model_price_select_placeholder\": \"選擇模型\",\n \"model_price_select_hint\": \"模型清單來自使用統計明細\",\n \"model_price_prompt\": \"提示定價\",\n \"model_price_completion\": \"補全定價\",\n \"model_price_cache\": \"快取讀取定價\",\n \"model_price_cache_write\": \"快取寫入定價\",\n \"model_price_cache_write_auto\": \"自動\",\n \"model_price_cache_write_hint\": \"留空時使用目前提示定價;既有「自動」設定也會跟隨此預設值。如需不同計費請明確填寫快取寫入定價。\",\n \"model_price_invalid\": \"請輸入大於或等於 0 的有效數字。\",\n \"model_price_save\": \"儲存定價\",\n \"model_price_empty\": \"尚未設定任何模型定價\",\n \"model_price_model\": \"模型\",\n \"model_price_saved\": \"模型定價已儲存\",\n \"model_price_model_required\": \"請選擇要設定定價的模型\",\n \"pricing_title\": \"價格估算工作台\",\n \"pricing_subtitle\": \"使用目前 API catalog、瀏覽器本機 Profile、usage Token、service tier 與 context band 統一計算 API 等價 USD。\",\n \"pricing_back\": \"返回使用統計\",\n \"pricing_open\": \"設定價格\",\n \"pricing_catalog\": \"預設 Catalog\",\n \"pricing_catalog_version\": \"Catalog 版本\",\n \"pricing_catalog_title\": \"預設價格表\",\n \"pricing_catalog_description\": \"全部 {{count}} 個已核實預設模型始終可見,不依賴 usage;Catalog 更新日期為 {{asOf}},每列均連結官方來源,不包含瀏覽器本機自訂覆蓋。\",\n \"pricing_catalog_unit\": \"USD / 1M Tokens\",\n \"pricing_catalog_table_label\": \"完整預設價格表\",\n \"pricing_catalog_context_band\": \"上下文檔位\",\n \"pricing_catalog_short_band\": \"短上下文\",\n \"pricing_catalog_long_band\": \"長上下文\",\n \"pricing_catalog_short_range\": \"< {{threshold}} 輸入 Token\",\n \"pricing_catalog_long_range\": \"≥ {{threshold}} 輸入 Token · 整筆請求\",\n \"pricing_catalog_all_contexts\": \"全部支援的上下文\",\n \"pricing_catalog_aliases\": \"別名:{{aliases}}\",\n \"pricing_catalog_model_notes\": \"模型說明\",\n \"pricing_catalog_verified_as_of\": \"核對日期:{{asOf}}\",\n \"pricing_catalog_unavailable\": \"不可用\",\n \"pricing_catalog_fast_explicit_summary\": \"入 {{input}} · 快取讀 {{cached}} · 寫 {{cacheWrite}} · 出 {{output}}\",\n \"pricing_source\": \"官方來源\",\n \"pricing_api_source\": \"API 價格來源\",\n \"pricing_estimate_notice\": \"本機 API 等價金額僅供參考,不是供應商帳單。\",\n \"pricing_browser_notice\": \"價格 Profile 僅儲存在目前瀏覽器,並會由此瀏覽器開啟的不同 Core 實例共用。\",\n \"pricing_history_notice\": \"所有歷史請求都會依目前 catalog 與 Profile 重新計算。\",\n \"pricing_migrated_v2\": \"舊版 v2 價格已完整保留為 v3 Profile;與預設短價一致的覆寫項可在確認後改用完整預設。\",\n \"pricing_profile_warning\": \"已儲存的價格 Profile 含有無效資料,請檢查目前預設值後再儲存。\",\n \"pricing_profile_save_failed\": \"無法在目前瀏覽器儲存價格 Profile。\",\n \"pricing_profile_saved\": \"價格 Profile 已儲存\",\n \"pricing_summary\": \"價格覆蓋摘要\",\n \"pricing_api_usd_estimate\": \"本機 API 等價估算(USD)\",\n \"pricing_api_usd\": \"本機 API 等價金額\",\n \"pricing_api_request_coverage\": \"本機估算請求覆蓋率\",\n \"pricing_requests_unit\": \"筆請求\",\n \"pricing_models_metric\": \"已定價模型 / 實際模型\",\n \"pricing_request_coverage\": \"已定價請求覆蓋率\",\n \"pricing_token_coverage\": \"已定價 Token 覆蓋率\",\n \"pricing_assumed_tier\": \"假設檔位請求數\",\n \"pricing_assumed_tier_hint\": \"歷史或未知檔位按 Std 估算\",\n \"pricing_cost_incomplete\": \"本機估算不完整;未匹配、不支援或缺少事件明細的用量未計入金額。\",\n \"pricing_partial_coverage\": \"目前為部分本機估算:請求覆蓋 {{request}}%,Token 覆蓋 {{token}}%。\",\n \"pricing_entry_title\": \"本機 API 等價估算\",\n \"pricing_entry_description\": \"金額完全由目前瀏覽器使用 catalog、Profile、Token、service tier 與 context band 計算。\",\n \"pricing_models_covered\": \"已定價 {{priced}} / {{total}} 個模型\",\n \"pricing_requests_covered\": \"請求覆蓋 {{percent}}%\",\n \"pricing_models_ratio\": \"模型覆蓋 {{percent}}%\",\n \"pricing_search\": \"搜尋實際用量模型\",\n \"pricing_filter\": \"價格狀態篩選\",\n \"pricing_filter_all\": \"全部\",\n \"pricing_filter_preset\": \"預設\",\n \"pricing_filter_custom\": \"自訂\",\n \"pricing_filter_unmatched\": \"本機未匹配\",\n \"pricing_filter_anomaly\": \"異常\",\n \"pricing_import_action\": \"匯入價格 Profile\",\n \"pricing_export_action\": \"匯出價格 Profile\",\n \"pricing_reset_action\": \"恢復全部預設\",\n \"pricing_export_success\": \"價格 Profile 已匯出\",\n \"pricing_import_title\": \"匯入價格 Profile\",\n \"pricing_import_confirm\": \"要用這個已通過驗證的檔案取代目前瀏覽器 v3 API 價格 Profile 嗎?使用統計不會變更。\",\n \"pricing_import_success\": \"價格 Profile 已匯入\",\n \"pricing_import_invalid\": \"價格 Profile 無效\",\n \"pricing_reset_title\": \"恢復全部預設價格\",\n \"pricing_reset_confirm\": \"清除全部 v3 API 價格覆蓋與別名嗎?使用統計將保持不變。\",\n \"pricing_reset_success\": \"已恢復預設價格\",\n \"pricing_empty_title\": \"尚無實際用量模型\",\n \"pricing_empty_description\": \"設定器只顯示真實 usage 中出現過的模型。請先產生或匯入使用統計。\",\n \"pricing_standard_short\": \"Standard 短上下文\",\n \"pricing_standard_api\": \"API Standard\",\n \"pricing_fast\": \"Fast\",\n \"pricing_fast_policies\": \"Fast 計費規則\",\n \"pricing_fast_policy_title\": \"API Priority 與 ChatGPT Standard/Fast 使用各自獨立的官方倍率。\",\n \"pricing_api_priority_multiplier\": \"API ×{{multiplier}}\",\n \"pricing_api_priority_multiplier_official\": \"官方 API ×{{multiplier}}\",\n \"pricing_api_priority_multiplier_custom\": \"自訂 API ×{{multiplier}}\",\n \"pricing_api_priority_explicit_rates\": \"API 獨立費率\",\n \"pricing_long_context\": \"長上下文\",\n \"pricing_usage\": \"目前用量\",\n \"pricing_no_usage_requests\": \"無用量請求\",\n \"pricing_no_usage_tokens\": \"無用量 Token\",\n \"pricing_matching_presets_notice\": \"有 {{count}} 個舊式自訂價格與預設短價一致,但仍在遮蔽官方 Fast 和長上下文規則。\",\n \"pricing_matching_presets_title\": \"改用完整預設\",\n \"pricing_matching_presets_confirm\": \"僅移除這 {{count}} 個相符的覆寫項,讓它們繼承官方 Fast 和長上下文規則?其他自訂價格和別名不會變更。\",\n \"pricing_matching_presets_action\": \"改用完整預設\",\n \"pricing_matching_presets_success\": \"{{count}} 個相符的覆寫項已改用完整預設\",\n \"pricing_unmatched\": \"無精確匹配\",\n \"pricing_match_custom\": \"自訂\",\n \"pricing_match_preset\": \"預設\",\n \"pricing_match_alias\": \"別名\",\n \"pricing_match_none\": \"未匹配\",\n \"pricing_anomaly\": \"需要檢查\",\n \"pricing_long_unsupported\": \"Fast 不支援長上下文\",\n \"pricing_fast_configured\": \"已設定 Fast\",\n \"pricing_long_requests\": \"{{count}} 筆長上下文請求\",\n \"pricing_short_only\": \"僅短上下文用量\",\n \"pricing_single_rate_card\": \"所有受支援上下文共用一張 API 費率表\",\n \"pricing_no_matches\": \"沒有模型符合目前搜尋與篩選條件。\",\n \"pricing_catalog_footer\": \"API Catalog 包含 {{count}} 個已核實模型 · 核對日期 {{asOf}} · 單位 USD / 1M Tokens。\",\n \"pricing_editor_title\": \"API Token 價格編輯器\",\n \"pricing_editor_domain_notice\": \"此 Profile 影響所有符合用量的本機 API 等價估算。\",\n \"pricing_alias\": \"精確別名目標\",\n \"pricing_alias_hint\": \"將目前實際模型名稱映射到一個精確的預設或自訂模型;啟用別名後不再直接編輯費率。\",\n \"pricing_alias_canonical_hint\": \"目前模型已精確命中預設,不需要設定別名。\",\n \"pricing_standard_rates\": \"Standard 費率 · USD / 1M\",\n \"pricing_fast_rates\": \"Fast 費率 · USD / 1M\",\n \"pricing_rate_input\": \"輸入\",\n \"pricing_rate_cached_input\": \"快取輸入\",\n \"pricing_rate_cache_write\": \"快取寫入\",\n \"pricing_rate_output\": \"輸出\",\n \"pricing_auto\": \"自動 / 繼承輸入價\",\n \"pricing_fast_mode_none\": \"暫不設定\",\n \"pricing_fast_mode_rates\": \"明確費率\",\n \"pricing_fast_mode_multiplier\": \"Standard × 倍率\",\n \"pricing_fast_multiplier\": \"Fast 倍率\",\n \"pricing_fast_long_supported\": \"允許 Fast 與長上下文組合\",\n \"pricing_long_enable\": \"啟用長上下文費率表\",\n \"pricing_long_threshold\": \"輸入 Token 門檻\",\n \"pricing_preview_affected\": \"受影響的用量請求\",\n \"pricing_preview_coverage\": \"本機請求覆蓋率\",\n \"pricing_preview_cost\": \"重算後本機估算\",\n \"pricing_editor_error_rates\": \"請為所有必填欄位輸入有效的非負費率。\",\n \"pricing_editor_error_threshold\": \"請輸入大於 0 的長上下文整數門檻。\",\n \"pricing_editor_error_multiplier\": \"請輸入大於 0 的 Fast 倍率。\",\n \"pricing_editor_error_profile\": \"別名或費率表與目前價格 Profile 衝突。\",\n \"pricing_restore_preset\": \"恢復預設\",\n \"pricing_delete_config\": \"刪除設定\",\n \"pricing_preset_restored\": \"已恢復預設\",\n \"pricing_custom_deleted\": \"已刪除自訂價格\",\n \"cost_trend\": \"花費統計\",\n \"pricing_api_usd_trend\": \"本機 API 等價估算趨勢(USD)\",\n \"cost_axis_label\": \"花費($)\",\n \"cost_need_price\": \"請先設定模型定價\",\n \"cost_need_usage\": \"暫無使用資料,無法計算花費\",\n \"cost_no_data\": \"沒有可計算的花費資料\",\n \"credential_stats\": \"憑證統計\",\n \"credential_name\": \"憑證\",\n \"token_breakdown\": \"Token 類型分布\",\n \"request_events_title\": \"請求事件明細\",\n \"request_events_filter_model\": \"模型\",\n \"request_events_filter_source\": \"來源\",\n \"request_events_filter_auth_index\": \"驗證索引\",\n \"request_events_filter_tier\": \"服務層級\",\n \"request_events_filter_effort\": \"推理強度\",\n \"request_events_filter_cache\": \"快取狀態\",\n \"request_events_numeric_filter\": \"Token 數值範圍\",\n \"request_events_numeric_metric\": \"Token 指標\",\n \"request_events_numeric_any\": \"選擇指標\",\n \"request_events_numeric_min\": \"最小值\",\n \"request_events_numeric_max\": \"最大值\",\n \"request_events_numeric_invalid\": \"請輸入非負整數邊界。\",\n \"request_events_numeric_range_invalid\": \"最小值不能大於最大值。\",\n \"request_events_numeric_help\": \"選擇 Token 指標,並填寫至少一個邊界;點擊「套用範圍」後才會更新結果。\",\n \"request_events_numeric_preview\": \"條件預覽\",\n \"request_events_numeric_active_label\": \"Token 範圍:{{filter}}\",\n \"request_events_numeric_clear\": \"清除範圍\",\n \"request_events_numeric_apply\": \"套用範圍\",\n \"request_events_cache_present\": \"有快取 Token\",\n \"request_events_cache_absent\": \"無快取 Token\",\n \"request_events_range_page\": \"跟隨頁面({{range}})\",\n \"request_events_column_settings\": \"欄位設定\",\n \"request_events_restore_default_columns\": \"恢復預設欄位\",\n \"request_events_timestamp\": \"時間\",\n \"request_events_source\": \"來源\",\n \"request_events_auth_index\": \"驗證索引\",\n \"request_events_tier\": \"服務層級\",\n \"request_events_tier_fast\": \"Fast\",\n \"request_events_tier_standard\": \"Std\",\n \"request_events_tier_tooltip_effective\": \"Core 已確認實際服務層級:{{tier}}。\",\n \"request_events_tier_tooltip_response\": \"上游回應回報服務層級:{{tier}}。\",\n \"request_events_tier_tooltip_request\": \"依請求層級顯示為 {{tier}},實際計費可能不同。\",\n \"request_events_tier_tooltip_assumed\": \"歷史或未知層級,依 Std 估算。\",\n \"request_events_tier_legacy_unknown\": \"歷史 / 未知\",\n \"request_events_tier_other\": \"其他:{{tier}}\",\n \"request_events_effort\": \"推理強度\",\n \"request_events_effort_legacy_unknown\": \"歷史 / 未知\",\n \"request_events_result\": \"結果\",\n \"time\": \"延遲\",\n \"avg_time\": \"平均延遲\",\n \"latency_unit_hint\": \"耗時取自後端欄位 {{field}},按 {{unit}} 解讀後再格式化顯示。\",\n \"duration_unit_d\": \"天\",\n \"duration_unit_h\": \"時\",\n \"duration_unit_m\": \"分\",\n \"duration_unit_s\": \"秒\",\n \"duration_unit_ms\": \"毫秒\",\n \"request_events_empty_title\": \"暫無請求事件\",\n \"request_events_empty_desc\": \"目前時間範圍內暫無可用的請求明細資料。\",\n \"request_events_no_result_title\": \"沒有符合結果\",\n \"request_events_no_result_desc\": \"請嘗試調整篩選條件,或清空目前篩選。\",\n \"request_events_count\": \"{{count}} 條事件\",\n \"request_events_limit_hint\": \"為確保渲染效能,僅展示 {{shown}} / {{total}} 條事件。\",\n \"request_events_total_input_tokens\": \"總輸入 Token\",\n \"request_events_non_cache_read_input_tokens\": \"非快取讀取輸入 Token\",\n \"request_events_non_cache_read_input_tokens_hint\": \"按總輸入 Token - 快取讀取 Token 在 Panel 本地計算,結果不小於 0。這是快取率的補集,不是一般提示詞輸入。快取寫入 Token 會另外展示及計價。\",\n \"request_events_total_output_tokens\": \"總輸出 Token\",\n \"request_events_explicit_output_tokens\": \"顯式輸出 Token\",\n \"request_events_output_tokens_hint\": \"顯式輸出 Token = 總輸出 Token - 推理 Token,結果不小於 0。\",\n \"request_events_cache_rate\": \"快取讀取占比\",\n \"request_events_cache_rate_hint\": \"快取讀取占比 = 快取讀取 Token / 總輸入 Token。0% 與低於 25% 為偏低,25% 至低於 60% 為一般,60% 及以上為較高;快取讀取超過總輸入時標記為異常。僅快取讀取數值依此狀態著色;其他 Token 數值保持中性。\",\n \"request_events_cache_rate_low\": \"偏低\",\n \"request_events_cache_rate_medium\": \"一般\",\n \"request_events_cache_rate_high\": \"較高\",\n \"request_events_cache_rate_anomaly\": \"異常\",\n \"request_events_cache_rate_cell_label\": \"快取讀取 {{tokens}} Token,占比 {{rate}},狀態{{tone}}\",\n \"request_events_cache_rate_anomaly_label\": \"快取讀取 Token({{tokens}})超過總輸入 Token({{input}})。\",\n \"request_events_table_region\": \"請求事件明細表\",\n \"input_tokens\": \"輸入 Tokens\",\n \"output_tokens\": \"輸出 Tokens\",\n \"last_updated\": \"更新於\"\n },\n \"service_health\": {\n \"title\": \"服務健康監測\",\n \"window\": \"最近 7 天\",\n \"oldest\": \"最早\",\n \"newest\": \"最新\"\n },\n \"logs\": {\n \"title\": \"記錄檢視\",\n \"runtime_unknown\": \"目前執行端:識別中\",\n \"runtime_cpa\": \"目前執行端:CPA\",\n \"runtime_home\": \"目前執行端:Home\",\n \"refresh_button\": \"重新整理記錄\",\n \"clear_button\": \"清空記錄\",\n \"fullscreen_button\": \"全螢幕顯示\",\n \"exit_fullscreen_button\": \"退出全螢幕\",\n \"download_button\": \"下載記錄\",\n \"error_log_button\": \"選擇錯誤記錄\",\n \"error_logs_modal_title\": \"錯誤請求記錄\",\n \"error_logs_description\": \"請選擇要開啟或下載的錯誤請求記錄檔案(僅在關閉請求記錄時產生)。\",\n \"error_logs_home_unavailable\": \"Home 模式下請在記錄內容頁查看資料庫記錄,錯誤請求記錄清單僅適用於 CPA 檔案記錄。\",\n \"error_logs_request_log_enabled\": \"目前已開啟請求記錄,按介面約定錯誤請求記錄清單會始終為空。關閉請求記錄後再重新整理即可查看。\",\n \"error_logs_empty\": \"暫無錯誤請求記錄檔案\",\n \"error_logs_load_error\": \"載入錯誤記錄清單失敗\",\n \"error_logs_size\": \"大小\",\n \"error_logs_modified\": \"最後修改\",\n \"error_logs_open\": \"開啟\",\n \"error_logs_download\": \"下載\",\n \"error_log_view_title\": \"錯誤請求記錄詳情\",\n \"error_log_open_failed\": \"開啟錯誤記錄失敗\",\n \"error_log_empty_content\": \"此錯誤記錄沒有內容\",\n \"error_log_copy_success\": \"錯誤記錄內容已複製\",\n \"error_log_download_success\": \"錯誤記錄下載成功\",\n \"request_log_download_title\": \"下載封包\",\n \"request_log_download_confirm\": \"是否要下載 id 為 {{id}} 的封包?\",\n \"request_log_download_success\": \"封包下載成功\",\n \"empty_title\": \"暫無記錄\",\n \"empty_desc\": \"當啟用「記錄到檔案」功能後,記錄將顯示在這裡\",\n \"cpa_file_logging_required\": \"目前連線的是 CPA,記錄檢視需要先開啟「記錄到檔案」。\",\n \"cpa_file_logging_required_title\": \"需要開啟檔案記錄\",\n \"cpa_file_logging_required_desc\": \"CPA 的記錄介面會讀取本機記錄檔。請在設定中開啟 logging-to-file 後再重新整理查看。\",\n \"file_logging_required\": \"目前記錄介面需要先開啟「記錄到檔案」後才能讀取檔案記錄。\",\n \"file_logging_required_title\": \"需要開啟檔案記錄\",\n \"file_logging_required_desc\": \"目前記錄介面會讀取本機記錄檔。請在設定中開啟 logging-to-file 後再重新整理查看。\",\n \"home_clear_unavailable\": \"Home 記錄來自資料庫查詢,目前不支援從這裡清空。\",\n \"log_content\": \"記錄內容\",\n \"loading\": \"正在載入記錄...\",\n \"load_error\": \"載入記錄失敗\",\n \"clear_confirm\": \"確定要清空所有記錄嗎?此操作無法還原!\",\n \"clear_success\": \"記錄已清空\",\n \"download_success\": \"記錄下載成功\",\n \"auto_refresh\": \"自動重新整理\",\n \"auto_refresh_enabled\": \"自動重新整理已開啟\",\n \"auto_refresh_disabled\": \"自動重新整理已關閉\",\n \"load_more_hint\": \"向上滾動載入更多\",\n \"hidden_lines\": \"已隱藏 {{count}} 行\",\n \"loaded_lines\": \"已載入 {{count}} 行\",\n \"filtered_lines\": \"已篩選 {{count}} 行\",\n \"hide_management_logs\": \"隱藏 {{prefix}} 記錄\",\n \"show_raw_logs\": \"顯示原始記錄\",\n \"show_raw_logs_hint\": \"直接顯示原始記錄文字,方便多行複製\",\n \"search_placeholder\": \"搜尋記錄內容或關鍵字\",\n \"filter_panel_title\": \"結構化篩選\",\n \"filter_panel_expand\": \"展開結構化篩選\",\n \"filter_panel_collapse\": \"收起結構化篩選\",\n \"filter_panel_active_count\": \"已選 {{count}} 項\",\n \"filter_method\": \"請求方法\",\n \"filter_status\": \"狀態碼\",\n \"filter_path\": \"路徑\",\n \"filter_path_empty\": \"暫無可篩選路徑\",\n \"filter_status_2xx\": \"2xx\",\n \"filter_status_3xx\": \"3xx\",\n \"filter_status_4xx\": \"4xx\",\n \"filter_status_5xx\": \"5xx\",\n \"clear_filters\": \"清空篩選\",\n \"search_empty_title\": \"未找到符合的記錄\",\n \"search_empty_desc\": \"嘗試更換關鍵字或清空篩選條件。\",\n \"double_click_copy_hint\": \"雙擊複製記錄原文\",\n \"copy_success\": \"已複製記錄原文\",\n \"copy_failed\": \"複製失敗\",\n \"lines\": \"行\",\n \"removed\": \"已篩選\",\n \"upgrade_required_title\": \"需要升級 CLI Proxy API\",\n \"upgrade_required_desc\": \"目前伺服器版本不支援記錄檢視功能,請升級到最新版本的 CLI Proxy API 以使用此功能。\"\n },\n \"config_management\": {\n \"title\": \"設定面板\",\n \"editor_title\": \"設定檔\",\n \"reload\": \"重新載入\",\n \"reload_confirm_message\": \"重新載入將捨棄你目前未儲存的修改,確定繼續嗎?\",\n \"save\": \"儲存\",\n \"description\": \"透過視覺化或原始檔方式編輯 config.yaml 設定檔\",\n \"status_idle\": \"等待操作\",\n \"status_loading\": \"載入設定中...\",\n \"status_loading_short\": \"載入中\",\n \"status_loaded\": \"設定已載入\",\n \"status_loaded_short\": \"已載入\",\n \"status_dirty\": \"有未儲存的變更\",\n \"status_dirty_short\": \"未儲存\",\n \"status_disconnected\": \"請先連線伺服器以載入設定\",\n \"status_disconnected_short\": \"未連線\",\n \"status_load_failed\": \"載入失敗\",\n \"status_load_failed_short\": \"失敗\",\n \"status_saving\": \"正在儲存設定...\",\n \"status_saving_short\": \"儲存中\",\n \"status_saved\": \"設定儲存完成\",\n \"status_save_failed\": \"儲存失敗\",\n \"save_success\": \"設定已儲存\",\n \"error_yaml_not_supported\": \"伺服器未回傳 YAML 格式,請確認 /config.yaml 介面可用\",\n \"visual_mode_unavailable\": \"YAML 語法修復前無法使用視覺化編輯\",\n \"visual_mode_unavailable_short\": \"YAML 錯誤\",\n \"validation_blocked_short\": \"待修復\",\n \"visual_mode_unavailable_detail\": \"目前設定存在無效 YAML,暫時無法使用視覺化編輯:{{message}}\",\n \"visual_mode_save_blocked\": \"請先修復 YAML 語法錯誤,再從視覺化模式儲存\",\n \"visual_mode_latest_yaml_invalid\": \"伺服器最新設定包含無效 YAML,請先切回原始碼模式檢查後再儲存視覺化修改:{{message}}\",\n \"editor_placeholder\": \"key: value\",\n \"search_placeholder\": \"搜尋設定內容...\",\n \"search_button\": \"搜尋\",\n \"search_no_results\": \"無結果\",\n \"search_prev\": \"上一個\",\n \"search_next\": \"下一個\",\n \"diff\": {\n \"title\": \"確認變更\",\n \"current\": \"目前設定\",\n \"modified\": \"修改後\",\n \"confirm\": \"確認儲存\",\n \"no_changes\": \"未偵測到變更\"\n },\n \"tabs\": {\n \"visual\": \"視覺化編輯\",\n \"source\": \"原始檔編輯\"\n },\n \"visual\": {\n \"notice\": \"視覺化模式涵蓋常用欄位,未涵蓋的設定仍需在原始檔模式中查看或編輯。\",\n \"quick_jump\": \"快速跳轉\",\n \"subsection_navigation\": \"{{section}}分組\",\n \"sections\": {\n \"server\": {\n \"title\": \"伺服器設定\",\n \"description\": \"基本伺服器設定\",\n \"listener_group_title\": \"監聽位址\",\n \"host\": \"主機位址\",\n \"port\": \"連接埠\"\n },\n \"tls\": {\n \"title\": \"TLS/SSL 設定\",\n \"description\": \"HTTPS 安全連線設定\",\n \"enable\": \"啟用 TLS\",\n \"enable_desc\": \"啟用 HTTPS 安全連線\",\n \"cert\": \"憑證檔案路徑\",\n \"key\": \"私鑰檔案路徑\"\n },\n \"remote\": {\n \"title\": \"遠端管理\",\n \"description\": \"遠端存取和控制面板設定\",\n \"allow_remote\": \"允許遠端存取\",\n \"allow_remote_desc\": \"允許從其他主機存取管理介面\",\n \"disable_panel\": \"停用控制面板\",\n \"disable_panel_desc\": \"停用內建的 Web 控制面板\",\n \"disable_auto_update_panel\": \"停用面板自動更新\",\n \"disable_auto_update_panel_desc\": \"首次缺失時仍可下載,但不再從 GitHub 背景自動更新\",\n \"secret_key\": \"管理金鑰\",\n \"secret_key_placeholder\": \"設定管理金鑰\",\n \"panel_repo\": \"面板儲存庫\"\n },\n \"auth\": {\n \"title\": \"驗證設定\",\n \"description\": \"API 金鑰與驗證檔案目錄設定\",\n \"group_title\": \"存取與驗證\",\n \"group_description\": \"遠端管理、控制面板存取、API 金鑰與驗證檔案\",\n \"credentials_title\": \"驗證檔案與 API 金鑰\",\n \"auth_dir\": \"驗證檔案目錄(auth-dir)\",\n \"auth_dir_hint\": \"存放驗證檔案的目錄路徑(支援 ~)\"\n },\n \"system\": {\n \"title\": \"系統設定\",\n \"description\": \"除錯、記錄、統計與效能調整設定\",\n \"group_navigation_label\": \"系統設定分組\",\n \"runtime_group_title\": \"執行與維運\",\n \"runtime_group_desc\": \"核心開關、記錄、用量統計與簽名處理\",\n \"plugins_group_title\": \"插件\",\n \"plugins_group_desc\": \"插件執行開關、來源與私有源認證\",\n \"headers_group_title\": \"請求標頭與 Codex 策略\",\n \"headers_group_desc\": \"Claude/Codex 預設請求標頭與異常推理重試策略\",\n \"network_group_title\": \"網路與路由\",\n \"network_group_desc\": \"代理、重試、工作階段親和、圖像與端點行為\",\n \"core_controls_title\": \"核心執行開關\",\n \"core_controls_desc\": \"集中管理診斷、高並行與檔案記錄等頂層開關\",\n \"plugin_runtime_title\": \"插件執行\",\n \"plugin_runtime_desc\": \"啟用或停用動態庫插件載入\",\n \"operations_title\": \"記錄、用量與簽名處理\",\n \"operations_desc\": \"設定保留上限、記憶體用量統計與 Antigravity 簽名行為\",\n \"debug\": \"除錯模式\",\n \"debug_desc\": \"啟用詳細的除錯記錄\",\n \"commercial_mode\": \"商業模式\",\n \"commercial_mode_desc\": \"停用高開銷中介軟體以支援高並行\",\n \"logging_to_file\": \"寫入記錄檔\",\n \"logging_to_file_desc\": \"將記錄儲存到檔案\",\n \"plugins_enabled\": \"啟用插件系統\",\n \"plugins_enabled_desc\": \"啟用標準動態庫插件載入;具體插件實例仍在插件管理頁啟停\",\n \"plugin_store_sources\": \"第三方插件源\",\n \"plugin_store_sources_desc\": \"追加插件商店 registry 源;內建官方源始終保留\",\n \"plugin_store_sources_label\": \"插件源 registry URL(plugins.store-sources)\",\n \"plugin_store_sources_placeholder\": \"https://example.com/cliproxy-plugins/registry.json\",\n \"plugin_store_sources_hint\": \"每列一個 registry.json URL,儲存時會過濾空列\",\n \"plugin_store_auth\": \"插件商店認證規則\",\n \"plugin_store_auth_desc\": \"為私有註冊表、GitHub Release 中繼資料或成品下載設定認證 Header\",\n \"plugin_store_auth_hint\": \"只填寫環境變數名稱,不要填寫真實 token。後端會從執行環境讀取對應值。\",\n \"store_auth_empty\": \"尚未設定認證規則。公開插件源不需要設定。\",\n \"store_auth_rule\": \"認證規則\",\n \"store_auth_add\": \"新增認證規則\",\n \"store_auth_match\": \"符合的 URL 前綴\",\n \"store_auth_type\": \"認證類型\",\n \"store_auth_apply_to\": \"套用到\",\n \"store_auth_apply_to_hint\": \"未選擇時,該規則會套用到所有請求類型。\",\n \"store_auth_apply_registry\": \"註冊表\",\n \"store_auth_apply_metadata\": \"中繼資料\",\n \"store_auth_apply_artifact\": \"成品\",\n \"store_auth_type_none\": \"無\",\n \"store_auth_type_bearer\": \"Bearer\",\n \"store_auth_type_basic\": \"Basic\",\n \"store_auth_type_header\": \"自訂 Header\",\n \"store_auth_type_github_token\": \"GitHub token\",\n \"store_auth_token_env\": \"Token 環境變數\",\n \"store_auth_username_env\": \"使用者名稱環境變數\",\n \"store_auth_password_env\": \"密碼環境變數\",\n \"store_auth_header_name\": \"Header 名稱\",\n \"store_auth_header_value_env\": \"Header 值環境變數\",\n \"store_auth_allow_insecure\": \"允許不安全的 HTTP URL\",\n \"logs_max_size\": \"記錄檔大小限制(MB)\",\n \"error_logs_max_files\": \"錯誤記錄保留檔案數\",\n \"usage_statistics_enabled\": \"啟用記憶體用量統計\",\n \"usage_statistics_enabled_desc\": \"啟用記憶體中的請求用量聚合\",\n \"redis_usage_retention\": \"Redis 用量佇列保留秒數\",\n \"redis_usage_retention_hint\": \"RESP 介面 LPOP/RPOP 用量佇列的記憶體保留時間,最大 3600 秒\",\n \"antigravity_signature_cache\": \"啟用 Antigravity 簽名快取\",\n \"antigravity_signature_cache_desc\": \"優先使用並校驗快取的 thinking block 簽名\",\n \"antigravity_signature_strict\": \"嚴格校驗旁路簽名\",\n \"antigravity_signature_strict_desc\": \"僅在關閉簽名快取時生效,按完整 Claude protobuf 樹校驗\"\n },\n \"headers\": {\n \"title\": \"Header 預設值\",\n \"description\": \"Claude 與 Codex OAuth 請求在客戶端缺少 Header 時使用的預設值\",\n \"claude_title\": \"Claude Header Defaults\",\n \"codex_title\": \"Codex Header Defaults\",\n \"user_agent\": \"User-Agent\",\n \"package_version\": \"Package Version\",\n \"runtime_version\": \"Runtime Version\",\n \"os\": \"OS\",\n \"arch\": \"Arch\",\n \"timeout\": \"Timeout\",\n \"stabilize_device\": \"穩定設備指紋\",\n \"stabilize_device_desc\": \"固定 OS/Arch,並按憑證/API Key 穩定軟體指紋\",\n \"beta_features\": \"實驗功能\",\n \"codex_identity_confuse\": \"Codex 身分混淆\",\n \"codex_identity_confuse_desc\": \"在填滿優先或會話黏性路由下,按所選驗證重映射 Codex 快取鍵與安裝身分\",\n \"codex_abnormal_reasoning_retry_title\": \"Codex 降智對抗策略\",\n \"codex_abnormal_reasoning_retry_desc\": \"偵測異常推理權杖數後,控制重試、對沖請求、最終交付與客戶端用量顯示\",\n \"codex_abnormal_reasoning_retry_summary_title\": \"目前策略概覽\",\n \"codex_abnormal_reasoning_retry_summary_desc\": \"把開關、重試動作與交付結果拆開顯示,便於確認策略是否真的依預期生效。\",\n \"codex_abnormal_reasoning_retry_summary_action\": \"命中動作\",\n \"codex_abnormal_reasoning_retry_summary_stream_buffer\": \"串流快取\",\n \"codex_abnormal_reasoning_retry_summary_hedged\": \"對沖模式\",\n \"codex_abnormal_reasoning_retry_summary_distinct_auth\": \"不同驗證\",\n \"codex_abnormal_reasoning_retry_summary_on\": \"已開啟\",\n \"codex_abnormal_reasoning_retry_summary_off\": \"已關閉\",\n \"codex_abnormal_reasoning_retry_group_switches_title\": \"基礎開關\",\n \"codex_abnormal_reasoning_retry_group_switches_desc\": \"先決定是否啟用策略、是否快取串流回應,以及是否使用第二路請求。\",\n \"codex_abnormal_reasoning_retry_group_retry_title\": \"重試調度\",\n \"codex_abnormal_reasoning_retry_group_retry_desc\": \"設定命中後的動作、快取上限、第二路請求延遲和對沖回傳模式。\",\n \"codex_abnormal_reasoning_retry_group_match_title\": \"命中條件\",\n \"codex_abnormal_reasoning_retry_group_match_desc\": \"限定模型、推理強度、異常推理權杖數和最大重試次數。\",\n \"codex_abnormal_reasoning_retry_group_delivery_title\": \"交付與用量\",\n \"codex_abnormal_reasoning_retry_group_delivery_desc\": \"控制重試耗盡後的回傳、客戶端可見用量,以及多候選回應的選擇方式。\",\n \"codex_abnormal_reasoning_retry_group_scope_title\": \"驗證範圍\",\n \"codex_abnormal_reasoning_retry_group_scope_desc\": \"按驗證類型或驗證 ID 縮小策略影響範圍,避免誤傷其他憑證。\",\n \"codex_abnormal_reasoning_retry_enabled\": \"策略快捷開關\",\n \"codex_abnormal_reasoning_retry_enabled_desc\": \"開啟時自動重試,關閉時不改變回應;僅觀察模式請在下方重試動作中選擇\",\n \"codex_abnormal_reasoning_retry_action_label\": \"重試動作\",\n \"codex_abnormal_reasoning_retry_action_hint\": \"選擇命中異常推理權杖數後的處理動作\",\n \"codex_abnormal_reasoning_retry_action_retry\": \"自動重試\",\n \"codex_abnormal_reasoning_retry_action_observe_only\": \"僅觀察\",\n \"codex_abnormal_reasoning_retry_action_disabled\": \"關閉\",\n \"codex_abnormal_reasoning_retry_action_retry_desc\": \"目前會丟棄命中異常推理權杖數的回應,並依重試上限重新請求。\",\n \"codex_abnormal_reasoning_retry_action_observe_only_desc\": \"目前只記錄命中結果,不會改變回傳給客戶端的回應。\",\n \"codex_abnormal_reasoning_retry_action_disabled_desc\": \"目前不啟用降智對抗策略,符合條件不會影響回應交付。\",\n \"codex_abnormal_reasoning_retry_stream_buffer\": \"快取串流回應\",\n \"codex_abnormal_reasoning_retry_stream_buffer_desc\": \"在回應完成前暫存串流片段,命中異常時可避免提前交付異常內容\",\n \"codex_abnormal_reasoning_retry_stream_buffer_max_bytes_label\": \"串流快取上限位元組數\",\n \"codex_abnormal_reasoning_retry_stream_buffer_max_bytes_hint\": \"預設 16 MiB(16777216);填 0 也使用安全預設值。超出後目前串流回應會以 502 失敗關閉,不會透傳部分內容\",\n \"codex_abnormal_reasoning_retry_hedged_retry_enabled\": \"啟用對沖重試\",\n \"codex_abnormal_reasoning_retry_hedged_retry_enabled_desc\": \"首個異常回應被丟棄後,延遲啟動第二路請求以降低尾端延遲\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_label\": \"對沖重試模式\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_hint\": \"選擇第二路請求啟動後的回傳策略\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_quality\": \"品質優先(預設)\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_speed\": \"速度優先\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_quality_desc\": \"目前會等待已發出的請求通道,再依交付策略挑選更穩的結果。\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_speed_desc\": \"目前會在首個可交付請求通道成功後儘快回傳,以較短等待換取回應速度。\",\n \"codex_abnormal_reasoning_retry_hedge_delay_ms_label\": \"對沖延遲(毫秒)\",\n \"codex_abnormal_reasoning_retry_hedge_delay_ms_hint\": \"異常請求嘗試觸發重試後,啟動第二路請求前等待的時間\",\n \"codex_abnormal_reasoning_retry_require_distinct_auth\": \"要求不同驗證\",\n \"codex_abnormal_reasoning_retry_require_distinct_auth_desc\": \"第二路對沖請求優先選擇不同的驗證 ID\",\n \"codex_abnormal_reasoning_retry_model_contains_label\": \"模型包含\",\n \"codex_abnormal_reasoning_retry_model_contains_hint\": \"請求模型或解析後的上游模型包含任一值即符合\",\n \"codex_abnormal_reasoning_retry_reasoning_efforts_label\": \"推理強度\",\n \"codex_abnormal_reasoning_retry_reasoning_efforts_hint\": \"可選的 Codex 推理強度過濾值,例如 high 或 xhigh;留空表示不限制強度\",\n \"codex_abnormal_reasoning_retry_reasoning_tokens_label\": \"推理權杖數\",\n \"codex_abnormal_reasoning_retry_reasoning_tokens_hint\": \"觸發策略的非負整數權杖數\",\n \"codex_abnormal_reasoning_retry_max_retries_label\": \"最大異常重試次數\",\n \"codex_abnormal_reasoning_retry_max_retries_hint\": \"異常推理偵測觸發的最大額外重試次數;填 0 表示記錄失敗嘗試並直接回傳 502\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_label\": \"超過上限後的策略\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_hint\": \"選擇異常重試次數超過最大值後的處理方式\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_error\": \"回傳 502\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_pass_through\": \"放行異常回應\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_error_desc\": \"超過重試上限後回傳 502,避免把異常回應交付給客戶端。\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_pass_through_desc\": \"超過重試上限後放行最後的異常回應,優先保持請求可回傳。\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_label\": \"客戶端用量聚合\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_hint\": \"選擇客戶端可見用量的聚合方式;管理面板用量統計仍按真實請求嘗試記錄\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_delivered_only\": \"僅統計交付回應(預設)\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum\": \"合併所有嘗試\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum_with_delivered_total\": \"合併明細,保留交付總數\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_delivered_only_desc\": \"目前客戶端只看到最終交付回應的用量;管理面板仍記錄每次真實嘗試。\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum_desc\": \"目前客戶端會看到所有請求嘗試的用量逐項累加。\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum_with_delivered_total_desc\": \"目前會累加明細欄位,但總數沿用最終交付回應,便於相容只讀取總數的客戶端。\",\n \"codex_abnormal_reasoning_retry_delivery_policy_label\": \"交付策略\",\n \"codex_abnormal_reasoning_retry_delivery_policy_hint\": \"只在候選池同時存在正常與異常回應時生效\",\n \"codex_abnormal_reasoning_retry_delivery_policy_best_non_special\": \"最佳正常回應(預設)\",\n \"codex_abnormal_reasoning_retry_delivery_policy_first_non_special\": \"首個正常回應\",\n \"codex_abnormal_reasoning_retry_delivery_policy_max_output\": \"輸出最多的回應\",\n \"codex_abnormal_reasoning_retry_delivery_policy_latest\": \"最新回應\",\n \"codex_abnormal_reasoning_retry_delivery_policy_best_non_special_desc\": \"目前會優先交付品質最高的正常回應。\",\n \"codex_abnormal_reasoning_retry_delivery_policy_first_non_special_desc\": \"目前會交付最先成功的正常回應,減少等待時間。\",\n \"codex_abnormal_reasoning_retry_delivery_policy_max_output_desc\": \"目前會交付輸出量最大的候選回應,優先保留內容量。\",\n \"codex_abnormal_reasoning_retry_delivery_policy_latest_desc\": \"目前會交付最後完成的候選回應,依最新嘗試結果收斂。\",\n \"codex_abnormal_reasoning_retry_fallback_policy_label\": \"兜底策略\",\n \"codex_abnormal_reasoning_retry_fallback_policy_hint\": \"所有候選仍異常且重試耗盡時生效\",\n \"codex_abnormal_reasoning_retry_fallback_policy_best_special\": \"最佳異常回應(預設)\",\n \"codex_abnormal_reasoning_retry_fallback_policy_max_output_special\": \"輸出最多的異常回應\",\n \"codex_abnormal_reasoning_retry_fallback_policy_latest_special\": \"最新異常回應\",\n \"codex_abnormal_reasoning_retry_fallback_policy_best_special_desc\": \"目前在只能放行異常候選時,選擇品質最高的異常回應。\",\n \"codex_abnormal_reasoning_retry_fallback_policy_max_output_special_desc\": \"目前在只能放行異常候選時,選擇輸出量最大的異常回應。\",\n \"codex_abnormal_reasoning_retry_fallback_policy_latest_special_desc\": \"目前在只能放行異常候選時,選擇最後完成的異常回應。\",\n \"codex_abnormal_reasoning_retry_auth_kinds_label\": \"驗證類型\",\n \"codex_abnormal_reasoning_retry_auth_kinds_hint\": \"正規化後的驗證類型白名單;預設 OAuth 不符合 API Key\",\n \"codex_abnormal_reasoning_retry_auth_ids_label\": \"驗證 ID\",\n \"codex_abnormal_reasoning_retry_auth_ids_hint\": \"可選的精確驗證 ID 白名單;留空表示不限制 ID\"\n },\n \"network\": {\n \"title\": \"網路設定\",\n \"description\": \"代理、重試和路由設定\",\n \"proxy_url\": \"代理 URL\",\n \"request_retry\": \"請求重試次數\",\n \"max_retry_credentials\": \"最大重試憑證數\",\n \"max_retry_credentials_hint\": \"留空表示不設定;設為 0 表示保留 legacy 行為,並嘗試所有可用憑證。\",\n \"max_retry_interval\": \"最大重試間隔(秒)\",\n \"transient_error_cooldown_seconds\": \"瞬時錯誤冷卻時間(秒)\",\n \"transient_error_cooldown_seconds_hint\": \"留空使用 Core 預設值。0 保留舊的 60 秒冷卻;負數停用瞬時錯誤冷卻。\",\n \"auth_auto_refresh_workers\": \"驗證自動刷新 Worker 數\",\n \"auth_auto_refresh_workers_hint\": \"大於 0 時覆蓋預設 Worker 數(16)\",\n \"disable_image_generation\": \"停用圖像生成\",\n \"disable_image_generation_hint\": \"false 啟用自動圖像工具注入;true 全部停用;chat 從非圖片端點移除 image_generation;passthrough 在非圖片端點不注入也不刪除客戶端工具(圖片端點與 chat 相同)\",\n \"disable_image_generation_false\": \"false(啟用)\",\n \"disable_image_generation_true\": \"true(全部停用)\",\n \"disable_image_generation_chat\": \"chat(從非圖片端點移除圖像工具)\",\n \"disable_image_generation_passthrough\": \"passthrough(原樣保留客戶端工具)\",\n \"gpt_image_2_base_model\": \"GPT Image 2 基礎模型\",\n \"gpt_image_2_base_model_hint\": \"代理 gpt-image-2 圖片請求時使用的主線模型;留空或非法時後端使用預設值\",\n \"routing_strategy\": \"路由策略\",\n \"routing_strategy_hint\": \"選擇憑證選擇策略\",\n \"strategy_round_robin\": \"輪詢(Round Robin)\",\n \"strategy_fill_first\": \"填充優先(Fill First)\",\n \"session_affinity_ttl\": \"會話黏性 TTL\",\n \"force_model_prefix\": \"強制模型前綴\",\n \"force_model_prefix_desc\": \"未帶前綴的模型請求只使用無前綴憑證\",\n \"passthrough_headers\": \"透傳上游回應 Header\",\n \"passthrough_headers_desc\": \"將過濾後的上游回應 Header 轉發給下游客戶端\",\n \"disable_cooling\": \"停用冷卻調度\",\n \"disable_cooling_desc\": \"全域停用驗證/模型失敗後的冷卻視窗\",\n \"session_affinity\": \"會話黏性路由\",\n \"ws_auth\": \"WebSocket 驗證\",\n \"ws_auth_desc\": \"啟用 WebSocket 連線驗證(/v1/ws)\",\n \"enable_gemini_cli_endpoint\": \"啟用 Gemini CLI 內部端點\",\n \"enable_gemini_cli_endpoint_desc\": \"啟用 /v1internal:* 相容端點\"\n },\n \"quota\": {\n \"title\": \"配額回退\",\n \"description\": \"配額耗盡時的回退策略\",\n \"switch_project\": \"切換專案\",\n \"switch_project_desc\": \"配額耗盡時自動切換到其他專案\",\n \"switch_preview_model\": \"切換預覽模型\",\n \"switch_preview_model_desc\": \"配額耗盡時切換到預覽版本模型\",\n \"antigravity_credits\": \"使用Antigravity Credits\"\n },\n \"streaming\": {\n \"title\": \"串流傳輸設定\",\n \"description\": \"Keepalive 與 bootstrap 重試設定\",\n \"keepalive_seconds\": \"Keepalive 秒數\",\n \"keepalive_hint\": \"設定為 0 或留空表示停用 keepalive\",\n \"bootstrap_retries\": \"Bootstrap 重試次數\",\n \"bootstrap_hint\": \"串流傳輸啟動時(首包前)的重試次數\",\n \"nonstream_keepalive\": \"非串流 Keepalive 間隔(秒)\",\n \"nonstream_keepalive_hint\": \"非串流回應時每隔 N 秒發送空行以防止閒置逾時,設定為 0 或留空表示停用\",\n \"disabled\": \"已停用\"\n },\n \"payload\": {\n \"title\": \"Payload 設定\",\n \"description\": \"預設值、原始 JSON 規則、覆寫規則與篩選規則\",\n \"default_rules\": \"預設規則\",\n \"default_rules_desc\": \"當請求中未指定參數時,使用這些預設值\",\n \"default_raw_rules\": \"預設 Raw 規則\",\n \"default_raw_rules_desc\": \"當請求中未指定參數時,按原始 JSON 片段寫入這些值,例如 true、123、\\\"high\\\" 或 {\\\"type\\\":\\\"object\\\"}\",\n \"override_rules\": \"覆寫規則\",\n \"override_rules_desc\": \"強制覆寫請求中的參數值\",\n \"override_raw_rules\": \"覆寫 Raw 規則\",\n \"override_raw_rules_desc\": \"始終按原始 JSON 片段覆寫參數值,適合 response_format、schema 等複雜欄位\",\n \"filter_rules\": \"篩選規則\",\n \"filter_rules_desc\": \"透過 JSON Path 預篩選上游請求體,自動剔除不合規/冗餘參數(Request Sanitization)\"\n }\n },\n \"api_keys\": {\n \"label\": \"API 金鑰清單(api-keys)\",\n \"add\": \"新增 API 金鑰\",\n \"generate\": \"產生\",\n \"empty\": \"暫無 API 金鑰\",\n \"hint\": \"每個條目代表一個 API 金鑰(與「API 金鑰管理」頁面樣式一致)\",\n \"edit_title\": \"編輯 API 金鑰\",\n \"add_title\": \"新增 API 金鑰\",\n \"input_label\": \"API 金鑰\",\n \"input_placeholder\": \"貼上你的 API 金鑰\",\n \"input_hint\": \"此處僅修改本地設定檔內容,不會自動同步到 API 金鑰管理介面\",\n \"error_empty\": \"請輸入 API 金鑰\",\n \"error_invalid\": \"API 金鑰包含無效字元\"\n },\n \"payload_rules\": {\n \"rule\": \"規則\",\n \"models\": \"適用模型\",\n \"model_name\": \"模型名稱\",\n \"model_scope\": \"模型匹配範圍\",\n \"scope_any\": \"任意(目前行為)\",\n \"scope_requested\": \"使用者請求模型\",\n \"scope_upstream\": \"上游模型\",\n \"scope_custom\": \"自訂:{{scope}}\",\n \"provider_type\": \"供應商類型\",\n \"add_model\": \"新增模型\",\n \"params\": \"參數設定\",\n \"remove_params\": \"移除參數\",\n \"json_path\": \"JSON 路徑(如 temperature)\",\n \"json_path_filter\": \"JSON 路徑(gjson/sjson),如 generationConfig.thinkingConfig.thinkingBudget\",\n \"param_type\": \"參數類型\",\n \"param_value\": \"參數值\",\n \"add_param\": \"新增參數\",\n \"no_rules\": \"暫無規則\",\n \"add_rule\": \"新增規則\",\n \"provider_default\": \"預設\",\n \"provider_openai\": \"OpenAI\",\n \"provider_openai_response\": \"OpenAI Response\",\n \"provider_responses\": \"Responses\",\n \"provider_gemini\": \"Gemini\",\n \"provider_claude\": \"Claude\",\n \"provider_codex\": \"Codex\",\n \"provider_antigravity\": \"Antigravity\",\n \"advanced\": \"進階\",\n \"hide_advanced\": \"收起進階\",\n \"from_protocol\": \"來源協議(from-protocol)\",\n \"headers\": \"請求 Header 匹配\",\n \"header_name\": \"Header 名稱\",\n \"header_value\": \"Header 值\",\n \"add_header\": \"新增 Header\",\n \"match\": \"必須匹配(match)\",\n \"notMatch\": \"不得匹配(not-match)\",\n \"exist\": \"必須存在(exist)\",\n \"notExist\": \"不得存在(not-exist)\",\n \"condition_path\": \"匹配路徑\",\n \"condition_value\": \"匹配值\",\n \"add_condition\": \"新增條件\",\n \"value_type_string\": \"字串\",\n \"value_type_number\": \"數字\",\n \"value_type_boolean\": \"布林\",\n \"value_type_json\": \"JSON\",\n \"value_string\": \"字串值\",\n \"value_number\": \"數字值(如 0.7)\",\n \"value_boolean\": \"true 或 false\",\n \"value_json\": \"JSON 值\",\n \"value_raw_json\": \"原始 JSON 片段,如 true、123、\\\"high\\\" 或 {\\\"type\\\":\\\"object\\\"}\",\n \"value_default\": \"值\",\n \"boolean_true\": \"true\",\n \"boolean_false\": \"false\"\n },\n \"validation\": {\n \"validation_blocked\": \"請先修復表單驗證錯誤再儲存\",\n \"port_range\": \"請輸入 1 到 65535 之間的有效連接埠\",\n \"non_negative_integer\": \"請輸入非負整數\",\n \"integer\": \"請輸入整數\",\n \"integer_range_1_3600\": \"請輸入 1 到 3600 之間的整數\",\n \"payload_invalid_number\": \"請輸入有效數字\",\n \"payload_invalid_boolean\": \"請選擇 true 或 false\",\n \"payload_invalid_json\": \"請輸入有效的 JSON\"\n },\n \"common\": {\n \"edit\": \"編輯\",\n \"delete\": \"刪除\",\n \"cancel\": \"取消\",\n \"update\": \"更新\",\n \"add\": \"新增\"\n }\n }\n },\n \"quota_management\": {\n \"title\": \"配額管理\",\n \"description\": \"集中查看 OAuth 配額與剩餘情況\",\n \"refresh_files\": \"重新整理驗證檔案\",\n \"refresh_files_and_quota\": \"重新整理驗證檔案&配額\",\n \"refresh_all_credentials\": \"重新整理全部憑證\",\n \"card_idle_hint\": \"請使用頂部「重新整理全部憑證」按鈕取得最新配額。\"\n },\n \"plugin_management\": {\n \"title\": \"插件管理\",\n \"description\": \"查看已發現和已註冊的插件,管理實例開關、設定欄位和資源入口。\",\n \"refresh\": \"重新整理\",\n \"load_failed\": \"載入插件失敗\",\n \"config_load_failed\": \"讀取插件設定失敗\",\n \"config_not_found\": \"無法讀取插件設定,後端未找到該插件。\",\n \"unsupported_backend\": \"目前後端未暴露插件管理 API。請使用包含插件管理介面的新版後端建置,並重新啟動服務。\",\n \"runtime_unavailable_title\": \"插件執行階段不可用\",\n \"runtime_unavailable_desc\": \"目前 plugins.enabled 為 true,但伺服器回傳 x-cpa-support-plugin: 0。目前二進位檔不包含插件執行階段支援,因此插件管理與商店操作會繼續鎖定。請部署適用於目前平台且包含插件執行階段的 Core 建置並重新啟動後端;Linux 環境通常需要啟用 CGO 並使用相容的 libc。若不打算使用插件,請關閉 plugins.enabled。\",\n \"runtime_probe_failed_desc\": \"目前 plugins.enabled 為 true,但面板既無法透過 x-cpa-support-plugin 確認執行階段能力,也無法透過插件 API 完成相容性探測。插件操作會繼續鎖定。請檢查後端建置及反向代理/CORS 的 header 公開設定,然後重新連線。\",\n \"runtime_unavailable_action\": \"查看設定\",\n \"global_status\": \"全域狀態\",\n \"global_enabled\": \"已啟用\",\n \"global_disabled\": \"已停用\",\n \"global_disabled_hint\": \"目前 plugins.enabled 為 false,插件實例即使啟用也不會生效。\",\n \"plugins_dir\": \"插件目錄\",\n \"discovered\": \"發現插件\",\n \"effective\": \"生效插件\",\n \"search_placeholder\": \"搜尋插件 ID、名稱、作者或資源...\",\n \"search_label\": \"搜尋插件\",\n \"no_plugins\": \"暫無插件\",\n \"no_plugins_desc\": \"未從插件目錄或執行時註冊表中發現插件。\",\n \"configured\": \"已設定\",\n \"not_configured\": \"未設定\",\n \"registered\": \"已註冊\",\n \"not_registered\": \"未註冊\",\n \"oauth\": \"OAuth\",\n \"status_effective\": \"生效中\",\n \"status_inactive\": \"未生效\",\n \"version_label\": \"版本\",\n \"author_label\": \"作者\",\n \"path_label\": \"路徑\",\n \"edit_config\": \"編輯設定\",\n \"open_resource\": \"開啟資源\",\n \"open_repository\": \"開啟倉庫\",\n \"config_title\": \"設定 {{name}}\",\n \"base_settings\": \"基礎設定\",\n \"enabled\": \"啟用\",\n \"enabled_hint\": \"控制 plugins.configs 中該插件實例的 enabled 欄位。\",\n \"priority\": \"優先級\",\n \"config_fields\": \"設定欄位\",\n \"no_config_fields\": \"該插件沒有宣告可視化設定欄位。\",\n \"select_placeholder\": \"請選擇\",\n \"array_item_placeholder\": \"輸入陣列項目\",\n \"add_array_item\": \"新增陣列項目\",\n \"remove_array_item\": \"刪除陣列項目\",\n \"delete_plugin\": \"刪除\",\n \"delete_confirm_title\": \"刪除插件\",\n \"delete_confirm_message\": \"確定刪除 {{name}}({{id}})嗎?這會移除本機插件檔案和已儲存設定。\",\n \"delete_success\": \"插件已刪除\",\n \"delete_failed\": \"插件刪除失敗\",\n \"delete_restart_required\": \"已載入的插件需要重新啟動後端後才能移除。\",\n \"toggle_success\": \"插件狀態已更新\",\n \"toggle_failed\": \"插件狀態更新失敗\",\n \"runtime_pending\": \"插件變更已儲存,但執行時狀態仍在等待更新。請稍後重新整理或檢查後端日誌。\",\n \"save_success\": \"插件設定已儲存\",\n \"save_failed\": \"插件設定儲存失敗\",\n \"validation_failed\": \"請先修復插件設定表單錯誤\",\n \"invalid_priority\": \"請輸入整數優先級\",\n \"invalid_number\": \"請輸入有效數字\",\n \"invalid_integer\": \"請輸入有效整數\",\n \"invalid_json\": \"請輸入有效 JSON\",\n \"expected_array\": \"請輸入 JSON 陣列\",\n \"expected_object\": \"請輸入 JSON 物件\",\n \"invalid_enum\": \"請選擇宣告的枚舉值\"\n },\n \"plugin_store\": {\n \"title\": \"插件商店\",\n \"description\": \"瀏覽插件註冊表,為目前後端安裝或更新插件。\",\n \"description_show_more\": \"展開描述\",\n \"description_show_less\": \"收起描述\",\n \"source_name\": \"來源:{{source}}\",\n \"cli_proxy_api_source\": \"CLIProxyAPI來源\",\n \"refresh\": \"重新整理\",\n \"retry\": \"重試\",\n \"load_failed\": \"插件商店載入失敗\",\n \"unsupported_backend\": \"目前後端未提供插件商店 API。請使用包含插件商店介面的新後端建置,並重新啟動服務。\",\n \"registry_failed\": \"插件註冊表請求失敗\",\n \"global_status\": \"全域狀態\",\n \"global_enabled\": \"已啟用\",\n \"global_disabled\": \"已停用\",\n \"global_disabled_hint\": \"目前 plugins.enabled 為 false,已安裝的插件不會生效。\",\n \"plugins_dir\": \"插件目錄\",\n \"stat_available\": \"可用插件\",\n \"search_placeholder\": \"搜尋插件 ID、名稱、作者或標籤...\",\n \"search_label\": \"搜尋插件商店\",\n \"filter_label\": \"依安裝狀態篩選\",\n \"filter_all\": \"全部\",\n \"filter_installed\": \"已安裝\",\n \"filter_not_installed\": \"未安裝\",\n \"filter_updates\": \"可更新\",\n \"badge_installed\": \"已安裝\",\n \"badge_update\": \"可更新\",\n \"badge_effective\": \"生效中\",\n \"version_arrow\": \"v{{from}} → v{{to}}\",\n \"install_type\": \"安裝方式:{{type}}\",\n \"platforms\": \"平台:{{platforms}}\",\n \"auth_required\": \"需要認證\",\n \"auth_configured\": \"認證已設定\",\n \"auth_required_hint\": \"安裝該來源或成品 URL 前,請先設定 plugins.store-auth\",\n \"source_errors_title\": \"部分插件源載入失敗\",\n \"install\": \"安裝\",\n \"update\": \"更新\",\n \"manage\": \"管理\",\n \"install_confirm_title\": \"安裝插件\",\n \"install_confirm_message\": \"將從插件註冊表下載 {{target}} 並安裝到本機插件目錄,是否繼續?\",\n \"update_confirm_title\": \"更新插件\",\n \"update_confirm_message\": \"將下載並安裝 {{target}},是否繼續?\",\n \"install_version_label\": \"版本\",\n \"install_version_latest\": \"最新版本\",\n \"install_version_latest_mode\": \"最新穩定版\",\n \"install_version_latest_hint\": \"安裝時由後端解析。目前列表版本:{{version}}。\",\n \"install_version_release_mode\": \"選擇 Release\",\n \"install_version_release_hint\": \"從 GitHub Releases 讀取可安裝標籤。\",\n \"install_version_manual_mode\": \"手動 Release 標籤\",\n \"install_version_manual_hint\": \"僅在自動載入 Release 不可用時使用。\",\n \"install_versions_loading\": \"正在載入 GitHub Releases...\",\n \"install_versions_load_failed\": \"Release 版本載入失敗\",\n \"install_version_non_github\": \"該插件儲存庫不是 GitHub 儲存庫\",\n \"install_versions_empty\": \"沒有找到可選擇的 Release。\",\n \"install_versions_only_prerelease\": \"只有預發布版本可用。顯示預發布後才能選擇。\",\n \"install_version_release_select\": \"選擇 Release 版本\",\n \"install_version_release_placeholder\": \"選擇 Release 版本\",\n \"install_version_prerelease_badge\": \"預發布\",\n \"install_version_assets_count\": \"{{count}} 個成品\",\n \"install_version_show_prerelease\": \"顯示預發布版本\",\n \"install_version_manual_placeholder\": \"例如 v0.1.4\",\n \"install_version_manual_error\": \"Release 標籤只能包含字母、數字、點、底線、加號和連字號;不能包含空格或斜線。\",\n \"install_version_current_selected\": \"{{version}} 已安裝,請選擇其他版本。\",\n \"install_version_releases_link\": \"查看 GitHub Releases\",\n \"install_success\": \"插件安裝成功\",\n \"update_success\": \"插件更新成功\",\n \"install_failed\": \"插件安裝失敗\",\n \"update_failed\": \"插件更新失敗\",\n \"status_pending\": \"插件檔案已更新,但本機狀態尚未重新整理。請稍後重新整理或檢查後端日誌。\",\n \"registration_pending\": \"插件檔案已更新,但執行時註冊仍在等待完成。請稍後重新整理或檢查後端日誌。\",\n \"restart_required_notice\": \"需要重新啟動服務才能載入新的插件版本\",\n \"restart_required_banner\": \"以下插件需重新啟動服務後才能套用新版本:{{plugins}}\",\n \"open_repository\": \"開啟儲存庫\",\n \"open_homepage\": \"開啟首頁\",\n \"no_plugins\": \"註冊表為空\",\n \"no_plugins_desc\": \"插件註冊表未回傳任何插件。\",\n \"no_matches\": \"沒有符合的插件\",\n \"no_matches_desc\": \"目前搜尋或篩選條件下沒有插件。\",\n \"clear_filters\": \"清除篩選\",\n \"security_banner_title\": \"第三方插件以後端完整權限執行\",\n \"security_banner_text\": \"插件會在代理服務內部執行程式碼,可讀取你的憑證與流量。請僅安裝你信任的插件——尤其要警惕任何並非由官方組織 router-for-me 發布的插件。\",\n \"badge_untrusted\": \"第三方\",\n \"gate_title\": \"安裝 {{name}}\",\n \"gate_title_update\": \"更新 {{name}}\",\n \"gate_warning\": \"如果你不閱讀以下內容,可能會發生意料之外的危險後果。\",\n \"gate_effect_runs_code\": \"該插件將在您的代理後端內執行第三方未認證程式碼。系統無法對其行為進行隔離或稽核,其具備存取您的敏感憑證、網路請求與回應資料的潛在權限。\",\n \"gate_effect_no_review\": \"本插件並非由官方組織 router-for-me 發布或審核。官方不對該插件的穩定性、安全性、合規性以及後續版本的任意行為變更承擔任何明示或暗示的擔保責任。\",\n \"gate_effect_restart\": \"安裝會修改本機插件目錄,並可能需要重新啟動服務才能生效。\",\n \"gate_untrusted_alert\": \"該插件並非來自官方組織 router-for-me。請僅在你完全信任其作者與來源時繼續。\",\n \"gate_repository_label\": \"儲存庫\",\n \"gate_source_label\": \"來源\",\n \"gate_step1_action\": \"我要安裝此插件\",\n \"gate_step2_action\": \"我已閱讀並理解上述風險\",\n \"gate_step3_prompt\": \"如需確認,請在下方輸入框中鍵入 “{{token}}”\",\n \"gate_step3_action\": \"安裝此插件\",\n \"gate_step3_hint\": \"請輸入上方顯示的完整識別碼以啟用安裝。\"\n },\n \"plugin_resource\": {\n \"title\": \"插件頁面\",\n \"page_count\": \"{{count}} 個頁面\",\n \"load_failed\": \"載入插件頁面失敗\",\n \"unavailable\": \"插件頁面不可用\",\n \"not_found\": \"找不到插件頁面\",\n \"not_found_desc\": \"目前後端插件清單未宣告此插件頁面。\",\n \"empty_src\": \"插件頁面位址為空\",\n \"empty_src_desc\": \"此插件選單未提供可嵌入的頁面位址。\"\n },\n \"system_info\": {\n \"title\": \"管理中心資訊\",\n \"about_title\": \"CLI Proxy API Management Center\",\n \"connection_status_title\": \"連線狀態\",\n \"api_status_label\": \"API 狀態:\",\n \"config_status_label\": \"設定狀態:\",\n \"last_update_label\": \"最後更新:\",\n \"cache_data\": \"快取資料\",\n \"real_time_data\": \"即時資料\",\n \"not_loaded\": \"未載入\",\n \"seconds_ago\": \"秒前\",\n \"models_title\": \"可用模型清單\",\n \"models_desc\": \"展示 /models 回傳的模型,並自動使用伺服器儲存的 API Key 進行驗證。\",\n \"models_loading\": \"正在載入可用模型...\",\n \"models_empty\": \"未從 /models 取得到模型資料\",\n \"models_error\": \"取得模型清單失敗\",\n \"models_count\": \"可用模型 {{count}} 個\",\n \"version_check_title\": \"版本檢查\",\n \"version_check_desc\": \"呼叫 /latest-version 介面比對伺服器版本,提示是否有可用更新。\",\n \"version_current_label\": \"目前版本\",\n \"version_latest_label\": \"最新版本\",\n \"version_check_button\": \"檢查更新\",\n \"version_check_idle\": \"點擊檢查更新\",\n \"version_checking\": \"正在檢查最新版本...\",\n \"version_update_available\": \"有新版本可用:{{version}}\",\n \"version_is_latest\": \"目前已是最新版本\",\n \"version_check_error\": \"檢查更新失敗\",\n \"version_current_missing\": \"未取得到伺服器版本號,暫無法比對\",\n \"version_unknown\": \"未知\",\n \"quick_links_title\": \"快速連結\",\n \"quick_links_desc\": \"存取專案儲存庫和文件,取得協助和更新。\",\n \"link_main_repo\": \"主程式儲存庫\",\n \"link_main_repo_desc\": \"CLI Proxy API 核心程式原始碼\",\n \"link_webui_repo\": \"WebUI 儲存庫\",\n \"link_webui_repo_desc\": \"管理中心前端介面原始碼\",\n \"link_docs\": \"使用教學\",\n \"link_docs_desc\": \"設定指南和使用說明\",\n \"clear_login_title\": \"本地登入資訊\",\n \"clear_login_desc\": \"清理本地儲存的登入資訊並登出。\",\n \"clear_login_button\": \"清理登入資訊\",\n \"clear_login_confirm\": \"確認清理本地登入資訊並登出?\"\n },\n \"notification\": {\n \"debug_updated\": \"除錯設定已更新\",\n \"proxy_updated\": \"代理設定已更新\",\n \"proxy_cleared\": \"代理設定已清空\",\n \"retry_updated\": \"重試設定已更新\",\n \"quota_switch_project_updated\": \"專案切換設定已更新\",\n \"quota_switch_preview_updated\": \"預覽模型切換設定已更新\",\n \"logging_to_file_updated\": \"記錄設定已更新\",\n \"logs_max_total_size_updated\": \"記錄容量設定已更新\",\n \"request_log_updated\": \"請求記錄設定已更新\",\n \"force_model_prefix_updated\": \"模型前綴設定已更新\",\n \"ws_auth_updated\": \"WebSocket 驗證設定已更新\",\n \"routing_strategy_updated\": \"路由策略已更新\",\n \"login_storage_cleared\": \"本地登入資訊已清理\",\n \"api_key_added\": \"API 金鑰新增成功\",\n \"api_key_updated\": \"API 金鑰更新成功\",\n \"api_key_deleted\": \"API 金鑰刪除成功\",\n \"api_key_invalid_chars\": \"API 金鑰僅支援英文字母、數字和符號\",\n \"gemini_key_added\": \"Gemini 金鑰新增成功\",\n \"gemini_key_updated\": \"Gemini 金鑰更新成功\",\n \"gemini_key_deleted\": \"Gemini 金鑰刪除成功\",\n \"gemini_multi_input_required\": \"請先輸入至少一個 Gemini 金鑰\",\n \"gemini_multi_failed\": \"Gemini 金鑰批次新增失敗\",\n \"gemini_multi_summary\": \"Gemini 批次新增完成:成功 {{success}},跳過 {{skipped}},失敗 {{failed}}\",\n \"codex_config_added\": \"Codex 設定新增成功\",\n \"codex_config_updated\": \"Codex 設定更新成功\",\n \"codex_config_deleted\": \"Codex 設定刪除成功\",\n \"codex_base_url_required\": \"請填寫 Codex Base URL\",\n \"claude_config_added\": \"Claude 設定新增成功\",\n \"claude_config_updated\": \"Claude 設定更新成功\",\n \"claude_config_deleted\": \"Claude 設定刪除成功\",\n \"vertex_config_added\": \"Vertex 設定新增成功\",\n \"vertex_config_updated\": \"Vertex 設定更新成功\",\n \"vertex_config_deleted\": \"Vertex 設定刪除成功\",\n \"config_enabled\": \"設定已啟用\",\n \"config_disabled\": \"設定已停用\",\n \"field_required\": \"必填欄位不能為空\",\n \"openai_provider_required\": \"請填寫供應商名稱和 Base URL\",\n \"openai_provider_added\": \"OpenAI 供應商新增成功\",\n \"openai_provider_updated\": \"OpenAI 供應商更新成功\",\n \"openai_provider_deleted\": \"OpenAI 供應商刪除成功\",\n \"openai_model_name_required\": \"請填寫模型名稱\",\n \"openai_test_url_required\": \"請先填寫有效的 Base URL 以進行測試\",\n \"openai_test_key_required\": \"請至少填寫一個 API 金鑰以進行測試\",\n \"openai_test_model_required\": \"請選擇要測試的模型\",\n \"data_refreshed\": \"資料重新整理成功\",\n \"connection_required\": \"請先建立連線\",\n \"refresh_failed\": \"重新整理失敗\",\n \"update_failed\": \"更新失敗\",\n \"add_failed\": \"新增失敗\",\n \"delete_failed\": \"刪除失敗\",\n \"upload_failed\": \"上傳失敗\",\n \"download_failed\": \"下載失敗\",\n \"login_failed\": \"登入失敗\",\n \"please_enter\": \"請輸入\",\n \"please_fill\": \"請填寫\",\n \"provider_name_url\": \"供應商名稱和 Base URL\",\n \"api_key\": \"API 金鑰\",\n \"gemini_api_key\": \"Gemini API 金鑰\",\n \"codex_api_key\": \"Codex API 金鑰\",\n \"claude_api_key\": \"Claude API 金鑰\",\n \"commercial_mode_restart_required\": \"商業模式開關已變更,請重啟服務後生效\",\n \"copy_failed\": \"複製失敗\",\n \"link_copied\": \"已複製\"\n },\n \"language\": {\n \"switch\": \"語言\",\n \"chinese\": \"簡體中文\",\n \"chinese_tw\": \"繁體中文(台灣)\",\n \"english\": \"英文\",\n \"russian\": \"俄文\"\n },\n \"theme\": {\n \"switch\": \"主題\",\n \"light\": \"羊毛紙\",\n \"white\": \"純白\",\n \"dark\": \"深色\",\n \"switch_to_light\": \"切換到羊毛紙模式\",\n \"switch_to_dark\": \"切換到深色模式\",\n \"auto\": \"跟隨系統\"\n },\n \"sidebar\": {\n \"primary_navigation\": \"主導覽\",\n \"toggle_expand\": \"展開側邊欄\",\n \"toggle_collapse\": \"收起側邊欄\"\n },\n \"footer\": {\n \"api_version\": \"CLI Proxy API 版本\",\n \"build_date\": \"建置時間\",\n \"version\": \"管理中心版本\",\n \"author\": \"作者\"\n },\n \"providersPage\": {\n \"header\": {\n \"title\": \"AI 提供商\",\n \"activeResources\": \"{{active}}/{{total}} 個活躍資源\",\n \"providerFamilies\": \"{{count}} 個提供商家族\",\n \"updatedAt\": \"更新於 {{time}}\",\n \"issueCount\": \"{{count}} 個問題\"\n },\n \"actions\": {\n \"refresh\": \"重新整理\",\n \"syncing\": \"同步中\",\n \"new\": \"新增\",\n \"edit\": \"編輯\",\n \"view\": \"檢視\",\n \"delete\": \"刪除\",\n \"clear\": \"清空\",\n \"cancel\": \"取消\",\n \"save\": \"儲存\",\n \"create\": \"建立\",\n \"enable\": \"啟用\",\n \"disable\": \"停用\"\n },\n \"categories\": {\n \"title\": \"提供商\",\n \"activeCount\": \"{{active}}/{{total}} 活躍\"\n },\n \"providerNames\": {\n \"gemini\": \"Gemini\",\n \"codex\": \"Codex\",\n \"xai\": \"xAI\",\n \"claude\": \"Claude\",\n \"vertex\": \"Vertex\",\n \"openaiCompatibility\": \"OpenAI 相容\",\n \"claudeApi\": \"ClaudeAPI\",\n \"code0\": \"Code0\",\n \"fennoAI\": \"FennoAI\",\n \"qiniuCloud\": \"七牛雲\"\n },\n \"table\": {\n \"key\": \"金鑰\",\n \"baseUrl\": \"服務位址\",\n \"prefix\": \"前綴\",\n \"models\": \"模型/請求標頭\",\n \"status\": \"狀態\",\n \"actions\": \"操作\",\n \"metrics\": {\n \"models\": \"模型\",\n \"keys\": \"金鑰\",\n \"headers\": \"請求標頭\"\n },\n \"stats\": {\n \"recent\": \"近期\",\n \"fullUsage\": \"完整統計\",\n \"tokens\": \"Token\",\n \"cost\": \"花費\"\n },\n \"websocketsTag\": \"WebSockets\",\n \"cloakTag\": \"Cloak\",\n \"empty\": \"尚未新增設定,點擊右上角新增。\",\n \"filterPlaceholder\": \"搜尋金鑰、位址、前綴…\",\n \"description\": \"在 {{route}} 下管理資源\",\n \"providerIssue\": \"此提供商存在問題\"\n },\n \"status\": {\n \"active\": \"活躍\",\n \"disabled\": \"已停用\",\n \"notSet\": \"未設定\",\n \"none\": \"無\",\n \"notConfigured\": \"未設定\",\n \"defaultSuffix\": \"(預設)\"\n },\n \"detail\": {\n \"title\": \"詳情\",\n \"metadataTitle\": \"元資料\",\n \"fields\": {\n \"identifier\": \"識別碼\",\n \"baseUrl\": \"服務位址\",\n \"proxyUrl\": \"代理 URL\",\n \"prefix\": \"前綴\",\n \"models\": \"模型數\",\n \"headers\": \"請求標頭數\",\n \"authIndex\": \"Auth Index\",\n \"excludedModels\": \"排除模型數\",\n \"apiKeyEntries\": \"金鑰條目數\"\n }\n },\n \"form\": {\n \"createEyebrow\": \"新增\",\n \"editEyebrow\": \"編輯\",\n \"name\": \"名稱\",\n \"apiKey\": \"API 金鑰\",\n \"apiKeyCreatePlaceholder\": \"輸入 API 金鑰\",\n \"apiKeyEditPlaceholder\": \"留空表示不修改\",\n \"baseUrl\": \"服務位址\",\n \"baseUrlRequiredHint\": \"此提供商需要填寫服務位址\",\n \"proxyUrl\": \"代理 URL\",\n \"prefix\": \"前綴\",\n \"priority\": \"優先級\",\n \"disabled\": \"停用此條目\",\n \"disabledHint\": \"停用後不會被閘道使用\",\n \"websockets\": \"啟用 WebSockets\",\n \"testModel\": \"測試模型\",\n \"testModelClaudeHint\": \"僅用於連通性測試,不會被儲存\",\n \"testModelAutoWith\": \"自動 · {{name}}\",\n \"testModelAutoEmpty\": \"自動(尚未新增模型)\",\n \"testModelCustom\": \"{{name}}(自訂)\",\n \"modelsSection\": \"自訂模型\",\n \"addModel\": \"新增模型\",\n \"modelNamePlaceholder\": \"上游模型名稱\",\n \"modelAliasPlaceholder\": \"路由別名(選填)\",\n \"modelDisplayNamePlaceholder\": \"顯示名稱(選填)\",\n \"headersSection\": \"請求標頭\",\n \"addHeader\": \"新增請求標頭\",\n \"headers\": \"請求標頭\",\n \"headersHint\": \"每行一條,格式 Key: Value\",\n \"excludedSection\": \"排除模型\",\n \"excludedHint\": \"每行一個模型名稱,匹配後將不會被路由到此提供商\",\n \"cloakSection\": \"Cloak 設定\",\n \"cloakMode\": \"模式\",\n \"cloakStrict\": \"嚴格模式\",\n \"cloakSensitiveWords\": \"敏感詞(每行一個)\",\n \"apiKeyEntriesSection\": \"API 金鑰條目\",\n \"apiKeyEntry\": \"金鑰 #{{index}}\",\n \"addApiKeyEntry\": \"新增金鑰條目\",\n \"showApiKey\": \"顯示金鑰\",\n \"hideApiKey\": \"隱藏金鑰\",\n \"disableCooling\": \"停用冷卻調度\",\n \"disableCoolingHint\": \"僅對目前憑證或提供商停用失敗後的冷卻視窗\",\n \"modelEntry\": \"模型 #{{index}}\",\n \"modelImage\": \"允許圖片端點\",\n \"modelImageHint\": \"允許該模型用於 /v1/images/generations 和 /v1/images/edits\",\n \"thinkingConfig\": \"Thinking 設定(JSON)\",\n \"thinkingConfigHint\": \"可設定 levels、min、max、zero_allowed、dynamic_allowed\",\n \"cloakCacheUserId\": \"快取 user_id\",\n \"cloakCacheUserIdHint\": \"按 API key 複用 Claude cloak 產生的 user_id\",\n \"experimentalCchSigning\": \"實驗性 CCH 簽名\",\n \"experimentalCchSigningHint\": \"對 cloaked Claude /v1/messages 最終請求體啟用 CCH 簽名\",\n \"validation\": {\n \"nameRequired\": \"名稱必填\",\n \"apiKeyRequired\": \"至少填寫一個 API 金鑰\",\n \"baseUrlRequired\": \"服務位址必填\"\n },\n \"showAllEntries\": \"顯示全部({{count}})\",\n \"showFewerEntries\": \"收起\",\n \"proxyBadge\": \"代理\",\n \"modelBadgeImage\": \"圖片\",\n \"modelBadgeThinking\": \"Thinking\"\n },\n \"delete\": {\n \"title\": \"刪除資源\",\n \"confirm\": \"確定要刪除 {{name}} 嗎?此操作不可復原。\"\n },\n \"toast\": {\n \"created\": \"建立成功\",\n \"updated\": \"更新成功\",\n \"deleted\": \"刪除成功\",\n \"enabled\": \"已啟用\",\n \"disabled\": \"已停用\",\n \"toggleFailed\": \"更新狀態失敗\"\n },\n \"unsavedChanges\": {\n \"title\": \"確定捨棄未儲存的變更嗎?\",\n \"message\": \"目前表單還有尚未儲存的變更,關閉後會遺失。\",\n \"discard\": \"捨棄變更\",\n \"keepEditing\": \"繼續編輯\"\n },\n \"connectivity\": {\n \"test\": \"測試\",\n \"testAll\": \"全部測試\",\n \"success\": \"連通\",\n \"baseUrlRequired\": \"服務位址必填\",\n \"endpointInvalid\": \"服務位址不合法\",\n \"apiKeyRequired\": \"API 金鑰必填\",\n \"modelRequired\": \"測試模型必填\",\n \"timeout\": \"請求超過 {{seconds}} 秒\",\n \"requestFailed\": \"請求失敗\"\n },\n \"discovery\": {\n \"openButton\": \"從端點拉取\",\n \"searchPlaceholder\": \"搜尋模型\",\n \"reload\": \"重新載入\",\n \"loading\": \"正在載入模型…\",\n \"empty\": \"端點未回傳任何模型\",\n \"notLoaded\": \"點擊重新載入以取得模型\",\n \"selectAll\": \"全選\",\n \"clearAll\": \"清空選擇\",\n \"selectedCount\": \"{{selected}} / {{total}}\",\n \"alreadyAdded\": \"已新增\",\n \"close\": \"關閉\",\n \"apply\": \"套用 ({{count}})\"\n },\n \"toolbar\": {\n \"sortBy\": \"排序\",\n \"sort\": {\n \"name\": \"名稱\",\n \"priority\": \"優先級\",\n \"recentSuccess\": \"近期成功數\",\n \"directionAsc\": \"升序\",\n \"directionDesc\": \"降序\"\n },\n \"filter\": {\n \"allModels\": \"全部模型\",\n \"selectedModels\": \"{{selected}}/{{total}} 個模型\",\n \"selectAll\": \"全選\",\n \"clear\": \"清空\",\n \"empty\": \"尚無已設定模型\"\n }\n },\n \"modelCatalog\": {\n \"notLoaded\": \"未載入\"\n },\n \"sponsor\": {\n \"protocolSummary\": \"Anthropic / OpenAI / Gemini / Codex API (Responses)\",\n \"detailHint\": \"{{provider}} 會按協議分別寫入對應的 API Key 設定,此處只做聚合管理。\",\n \"apiKeyHint\": \"此金鑰只會寫入目前選擇的分組/協議設定。\",\n \"aggregationConflict\": \"此聚合提供商包含多筆後端設定或多個 OpenAI 金鑰。為避免資料遺失,請在原始碼設定中編輯。\",\n \"partialMutationWarning\": \"操作失敗,但一個或多個協議可能已更新。已重新讀取最新設定,請檢查後再重試。\",\n \"groupedKeysTitle\": \"分組金鑰\",\n \"groupedKeysHint\": \"平台建立 Key 時可能需要選擇分組,這裡每個分組金鑰只管理一個協議,模型也只從該協議拉取。\",\n \"groupedKey\": \"分組金鑰 #{{index}}\",\n \"addGroupedKey\": \"新增分組金鑰\",\n \"removeGroupedKey\": \"刪除分組金鑰\",\n \"protocol\": \"分組/協議\",\n \"protocolHint\": \"請選擇此 Key 對應的分組/協議。\",\n \"protocolEndpoint\": \"目前協議位址\",\n \"urlMode\": \"{{provider}} URL\",\n \"urlHint\": \"不同 URL 的使用規範一致,儲存時只會寫入目前分組協議對應位址。\",\n \"urlOptions\": {\n \"standard\": \"普通 URL\",\n \"direct\": \"專線直連 URL\",\n \"domestic\": \"中國大陸線路\",\n \"overseas\": \"海外線路\"\n },\n \"urlOptionDescriptions\": {\n \"domestic\": \"面向中國大陸使用者和部署在中國大陸網路環境中的業務,通常可獲得更低延遲。\",\n \"overseas\": \"面向海外部署、跨境存取或需要存取境外模型的業務。\"\n },\n \"modelsTitle\": \"協議模型設定\",\n \"modelsHint\": \"可分別限制或別名映射 Codex API、Anthropic、Gemini 與 OpenAI 相容入口的模型。\",\n \"protocolModels\": {\n \"codex\": \"Codex API 模型\",\n \"anthropic\": \"Anthropic 模型\",\n \"gemini\": \"Gemini 模型\",\n \"openai\": \"OpenAI 相容模型\"\n },\n \"protocolModelHints\": {\n \"codex\": \"寫入 Codex API 設定的 models,可從 /v1/models 拉取後設定別名。\",\n \"anthropic\": \"寫入 Anthropic 設定的 models,可從 /v1/models 拉取後設定別名。\",\n \"gemini\": \"寫入 Gemini 設定的 models,可從 /v1beta/models 拉取後設定別名。\",\n \"openai\": \"寫入 OpenAI 相容設定的 models,可從 /models 拉取後設定別名。\"\n },\n \"validation\": {\n \"keyRequired\": \"請為每個分組金鑰填寫 API Key。\",\n \"protocolDuplicate\": \"每個協議只能新增一個分組金鑰。\"\n },\n \"openaiEntries\": \"OpenAI 相容金鑰數\",\n \"codexEntries\": \"Codex API 金鑰數\",\n \"anthropicEntries\": \"Anthropic 金鑰數\",\n \"geminiEntries\": \"Gemini 金鑰數\",\n \"protocols\": {\n \"anthropic\": \"Anthropic\",\n \"openai\": \"OpenAI 相容\",\n \"gemini\": \"Gemini\",\n \"codexResponses\": \"Codex API (Responses)\"\n }\n }\n }\n}\n"}, "c2241c78c404507afc886e183ead3e84dbb38c52": {"t": 1785846934.5534933, "n": 101539, "h": "4264bd2efa70b039", "c": "{\n \"common\": {\n \"login\": \"登入\",\n \"logout\": \"登出\",\n \"back\": \"返回\",\n \"cancel\": \"取消\",\n \"confirm\": \"確認\",\n \"leave\": \"離開\",\n \"stay\": \"繼續編輯\",\n \"save\": \"儲存\",\n \"delete\": \"刪除\",\n \"edit\": \"編輯\",\n \"add\": \"新增\",\n \"update\": \"更新\",\n \"refresh\": \"重新整理\",\n \"close\": \"關閉\",\n \"success\": \"成功\",\n \"error\": \"錯誤\",\n \"info\": \"資訊\",\n \"warning\": \"警告\",\n \"loading\": \"載入中...\",\n \"connecting\": \"連線中...\",\n \"connected\": \"已連線\",\n \"disconnected\": \"未連線\",\n \"connecting_status\": \"連線中\",\n \"connected_status\": \"已連線\",\n \"disconnected_status\": \"未連線\",\n \"yes\": \"是\",\n \"no\": \"否\",\n \"not_set\": \"未設定\",\n \"optional\": \"選填\",\n \"required\": \"必填\",\n \"api_key\": \"金鑰\",\n \"base_url\": \"位址\",\n \"prefix\": \"前綴\",\n \"proxy_url\": \"代理\",\n \"priority\": \"優先順序\",\n \"alias\": \"別名\",\n \"failure\": \"失敗\",\n \"unknown_error\": \"未知錯誤\",\n \"quota_update_required\": \"請更新 CPA 版本或檢查更新\",\n \"quota_check_credential\": \"請檢查憑證狀態\",\n \"copy\": \"複製\",\n \"expand\": \"展開\",\n \"collapse\": \"收起\",\n \"status\": \"狀態\",\n \"action\": \"操作\",\n \"custom_headers_label\": \"自訂請求標頭\",\n \"custom_headers_hint\": \"選填,設定需要附帶到請求中的 HTTP 標頭,名稱和值均不能為空。\",\n \"custom_headers_add\": \"新增請求標頭\",\n \"custom_headers_key_placeholder\": \"Header 名稱,例如 X-Custom-Header\",\n \"custom_headers_value_placeholder\": \"Header 值\",\n \"model_name_placeholder\": \"模型名稱,例如 claude-3-5-sonnet-20241022\",\n \"model_alias_placeholder\": \"模型別名(選填)\",\n \"invalid_provider_index\": \"無效的供應商索引。\",\n \"unsaved_changes_title\": \"未儲存的變更\",\n \"unsaved_changes_message\": \"你有未儲存的變更,離開後將遺失這些變更。確定要離開嗎?\"\n },\n \"title\": {\n \"main\": \"CLI Proxy API Management Center\",\n \"login\": \"CLI Proxy API Management Center\",\n \"abbr\": \"CPAMC\"\n },\n \"splash\": {\n \"title\": \"CLI Proxy API\",\n \"subtitle\": \"管理中心\"\n },\n \"auto_login\": {\n \"title\": \"正在自動登入...\",\n \"message\": \"正在使用本地儲存的連線資訊嘗試連線伺服器\"\n },\n \"login\": {\n \"subtitle\": \"請輸入連線資訊以存取管理介面\",\n \"connection_title\": \"連線位址\",\n \"connection_current\": \"目前位址\",\n \"connection_auto_hint\": \"系統將自動使用目前存取位址進行連線\",\n \"custom_connection_label\": \"自訂連線位址:\",\n \"custom_connection_placeholder\": \"例如: https://example.com:8317\",\n \"custom_connection_hint\": \"預設使用目前存取位址,若需要可手動輸入其他位址。\",\n \"use_current_address\": \"使用目前位址\",\n \"remember_password_label\": \"記住密碼\",\n \"management_key_label\": \"管理金鑰:\",\n \"management_key_placeholder\": \"請輸入管理金鑰\",\n \"connect_button\": \"連線\",\n \"submit_button\": \"登入\",\n \"submitting\": \"連線中...\",\n \"error_title\": \"登入失敗\",\n \"error_backend_detail\": \"後端返回\",\n \"error_required\": \"請填寫完整的連線資訊\",\n \"error_invalid\": \"連線失敗,請檢查服務位址、管理介面和管理金鑰\",\n \"error_network\": \"網路連線失敗,請檢查網路或伺服器位址\",\n \"error_timeout\": \"連線逾時,伺服器無回應\",\n \"error_unauthorized\": \"驗證失敗,管理金鑰缺失或無效\",\n \"error_forbidden\": \"存取被拒絕,遠端管理未啟用、管理金鑰未設定或 IP 被暫時封鎖\",\n \"error_not_found\": \"找不到 Management API,請確認服務位址指向 CLIProxyAPI 後端\",\n \"error_server\": \"後端處理管理介面時發生錯誤,請查看服務日誌\",\n \"error_cors\": \"跨域請求被阻擋,請檢查伺服器設定\",\n \"error_ssl\": \"SSL/TLS 憑證驗證失敗\"\n },\n \"header\": {\n \"check_connection\": \"檢查連線\",\n \"refresh_all\": \"全部重新整理\",\n \"logout\": \"登出\"\n },\n \"connection\": {\n \"title\": \"連線資訊\",\n \"server_address\": \"伺服器位址:\",\n \"management_key\": \"管理金鑰:\",\n \"status\": \"連線狀態:\"\n },\n \"nav\": {\n \"dashboard\": \"儀表板\",\n \"basic_settings\": \"基本設定\",\n \"api_keys\": \"API 金鑰\",\n \"ai_providers\": \"AI 供應商\",\n \"auth_files\": \"驗證檔案\",\n \"oauth\": \"OAuth 登入\",\n \"quota_management\": \"配額管理\",\n \"usage_stats\": \"使用統計\",\n \"plugins\": \"插件管理\",\n \"plugins_runtime_unavailable\": \"插件管理(執行階段不可用)\",\n \"plugin_store\": \"插件商店\",\n \"config_management\": \"設定面板\",\n \"logs\": \"記錄檢視\",\n \"system_info\": \"中心資訊\"\n },\n \"nav_groups\": {\n \"operate\": \"運行\",\n \"gateway\": \"閘道\",\n \"observe\": \"觀測\",\n \"plugin_pages\": \"插件\",\n \"control\": \"控制\"\n },\n \"nav_meta\": {\n \"dashboard\": \"運行總覽\",\n \"ai_providers\": \"上游模型路由\",\n \"auth_files\": \"Auth 檔案與憑證\",\n \"oauth\": \"OAuth 授權登入\",\n \"quota_management\": \"API Key 與限額\",\n \"usage_stats\": \"完整用量與請求分析\",\n \"plugins\": \"插件啟停與設定\",\n \"plugin_store\": \"探索並安裝插件\",\n \"logs\": \"請求追蹤與排查\",\n \"config_management\": \"閘道基礎設定\",\n \"system_info\": \"運行與診斷資訊\"\n },\n \"dashboard\": {\n \"title\": \"儀表板\",\n \"subtitle\": \"歡迎使用 CLI Proxy API 管理中心\",\n \"openai_providers\": \"OpenAI 供應商\",\n \"quick_actions\": \"快速操作\",\n \"current_config\": \"目前設定\",\n \"management_keys\": \"管理金鑰\",\n \"provider_keys_detail\": \"G:{{gemini}} C:{{codex}} X:{{xai}} Cl:{{claude}} V:{{vertex}} O:{{openai}} A:{{ampcode}}\",\n \"oauth_credentials\": \"OAuth 憑證\",\n \"edit_settings\": \"編輯設定\",\n \"routing_strategy\": \"路由策略\",\n \"available_models\": \"可用模型\",\n \"available_models_desc\": \"所有供應商的模型總數\",\n \"welcome_back\": \"歡迎回來\",\n \"greeting_morning\": \"早安\",\n \"greeting_afternoon\": \"午安\",\n \"greeting_evening\": \"晚安\",\n \"greeting_night\": \"夜深了\",\n \"caring_morning\": \"新的一天,準備大展身手吧。\",\n \"caring_afternoon\": \"穩步推進中,繼續加油。\",\n \"caring_evening\": \"今天辛苦了,收尾工作做好喔。\",\n \"caring_night\": \"夜深了,別忘了早點休息。\",\n \"system_overview\": \"系統概覽\"\n },\n \"basic_settings\": {\n \"title\": \"基本設定\",\n \"debug_title\": \"除錯模式\",\n \"debug_enable\": \"啟用除錯模式\",\n \"proxy_title\": \"代理設定\",\n \"proxy_url_label\": \"代理 URL:\",\n \"proxy_url_placeholder\": \"例如: socks5://user:pass@127.0.0.1:1080/\",\n \"proxy_update\": \"更新\",\n \"proxy_clear\": \"清空\",\n \"retry_title\": \"請求重試\",\n \"retry_count_label\": \"重試次數:\",\n \"retry_update\": \"更新\",\n \"quota_title\": \"配額超出行為\",\n \"quota_switch_project\": \"自動切換專案\",\n \"quota_switch_preview\": \"切換到預覽模型\",\n \"logging_title\": \"記錄\",\n \"logging_to_file_enable\": \"啟用記錄到檔案\",\n \"logs_max_total_size_title\": \"記錄容量限制\",\n \"logs_max_total_size_label\": \"記錄總大小上限(MB):\",\n \"logs_max_total_size_hint\": \"設定為 0 表示不限制。\",\n \"logs_max_total_size_update\": \"更新\",\n \"request_log_title\": \"請求記錄\",\n \"request_log_enable\": \"啟用請求記錄\",\n \"request_log_warning\": \"僅在需要排查問題時開啟,日常請保持關閉。\",\n \"force_model_prefix_enable\": \"強制模型前綴\",\n \"ws_auth_title\": \"WebSocket 驗證\",\n \"ws_auth_enable\": \"啟用 /ws/* 驗證\",\n \"routing_title\": \"路由策略\",\n \"routing_strategy_label\": \"路由策略:\",\n \"routing_strategy_hint\": \"round-robin 為輪詢,fill-first 為優先填充。\",\n \"routing_strategy_update\": \"更新\",\n \"routing_strategy_round_robin\": \"round-robin(輪詢)\",\n \"routing_strategy_fill_first\": \"fill-first(優先填充)\"\n },\n \"api_keys\": {\n \"title\": \"API 金鑰管理\",\n \"proxy_auth_title\": \"代理服務驗證金鑰\",\n \"add_button\": \"新增金鑰\",\n \"empty_title\": \"暫無 API 金鑰\",\n \"empty_desc\": \"點擊上方按鈕新增第一個金鑰\",\n \"item_title\": \"API 金鑰\",\n \"add_modal_title\": \"新增 API 金鑰\",\n \"add_modal_key_label\": \"API 金鑰:\",\n \"add_modal_key_placeholder\": \"請輸入 API 金鑰\",\n \"edit_modal_title\": \"編輯 API 金鑰\",\n \"edit_modal_key_label\": \"API 金鑰:\",\n \"delete_confirm\": \"確定要刪除這個 API 金鑰嗎?\"\n },\n \"ai_providers\": {\n \"title\": \"AI 供應商設定\",\n \"gemini_title\": \"Gemini API 金鑰\",\n \"gemini_add_button\": \"新增金鑰\",\n \"gemini_empty_title\": \"暫無 Gemini 金鑰\",\n \"gemini_empty_desc\": \"點擊上方按鈕新增第一個金鑰\",\n \"gemini_item_title\": \"Gemini 金鑰\",\n \"gemini_add_modal_title\": \"新增 Gemini API 金鑰\",\n \"gemini_add_modal_key_label\": \"API 金鑰\",\n \"gemini_add_modal_key_placeholder\": \"輸入 Gemini API 金鑰\",\n \"gemini_add_modal_key_hint\": \"逐條輸入金鑰,可同時指定選填 Base URL。\",\n \"gemini_keys_add_btn\": \"新增金鑰\",\n \"gemini_base_url_label\": \"Base URL(選填)\",\n \"gemini_base_url_placeholder\": \"例如: https://generativelanguage.googleapis.com\",\n \"gemini_add_modal_proxy_label\": \"代理 URL(選填):\",\n \"gemini_add_modal_proxy_placeholder\": \"例如: socks5://proxy.example.com:1080\",\n \"gemini_models_label\": \"自訂模型(選填):\",\n \"gemini_models_hint\": \"為空表示使用全部模型;可填寫 name[, alias] 以限制或重新命名模型。\",\n \"gemini_models_add_btn\": \"新增模型\",\n \"gemini_models_fetch_button\": \"從 /v1beta/models 取得\",\n \"gemini_models_fetch_title\": \"從 Gemini /v1beta/models 選擇模型\",\n \"gemini_models_fetch_hint\": \"按 Gemini API 規範請求 GET /v1beta/models;預設附帶 x-goog-api-key(來自 API Key 欄位)並合併你設定的自訂請求標頭。\",\n \"gemini_models_fetch_url_label\": \"請求位址\",\n \"gemini_models_fetch_refresh\": \"重新取得\",\n \"gemini_models_fetch_loading\": \"正在從 Gemini /v1beta/models 取得模型清單...\",\n \"gemini_models_fetch_empty\": \"未取得到模型,請檢查 Base URL、API Key 或請求標頭。\",\n \"gemini_models_fetch_error\": \"取得 Gemini 模型失敗\",\n \"gemini_models_fetch_apply\": \"新增已選模型\",\n \"model_discovery_select_visible\": \"全選目前清單\",\n \"model_discovery_clear_selection\": \"清空已選\",\n \"model_discovery_selected_count\": \"已選 {{count}} 項\",\n \"gemini_models_search_label\": \"搜尋模型\",\n \"gemini_models_search_placeholder\": \"依名稱、別名或描述篩選\",\n \"gemini_models_search_empty\": \"沒有符合的模型,請更換關鍵字試試。\",\n \"gemini_models_fetch_added\": \"已新增 {{count}} 個新模型\",\n \"gemini_models_count\": \"模型數量\",\n \"gemini_edit_modal_title\": \"編輯 Gemini API 金鑰\",\n \"gemini_edit_modal_key_label\": \"API 金鑰:\",\n \"gemini_delete_confirm\": \"確定要刪除這個 Gemini 金鑰嗎?\",\n \"excluded_models_label\": \"排除的模型(選填):\",\n \"excluded_models_placeholder\": \"用逗號或換行分隔,例如: gemini-1.5-pro, gemini-1.5-flash\",\n \"excluded_models_hint\": \"留空表示不篩選;儲存時會自動去重並忽略空白。\",\n \"excluded_models_count\": \"排除 {{count}} 個模型\",\n \"prefix_label\": \"前綴(選填):\",\n \"prefix_placeholder\": \"例如: team-a\",\n \"prefix_hint\": \"設定後可用 prefix/<model> 選擇該條目。\",\n \"priority_label\": \"優先順序(選填):\",\n \"priority_hint\": \"數值越大優先順序越高;留空表示預設(0)。\",\n \"config_toggle_label\": \"啟用\",\n \"config_disabled_badge\": \"已停用\",\n \"codex_title\": \"Codex API 設定\",\n \"codex_add_button\": \"新增設定\",\n \"codex_empty_title\": \"暫無 Codex 設定\",\n \"codex_empty_desc\": \"點擊上方按鈕新增第一個設定\",\n \"codex_item_title\": \"Codex 設定\",\n \"codex_add_modal_title\": \"新增 Codex API 設定\",\n \"codex_add_modal_key_label\": \"API 金鑰:\",\n \"codex_add_modal_key_placeholder\": \"請輸入 Codex API 金鑰\",\n \"codex_add_modal_url_label\": \"Base URL(必填):\",\n \"codex_add_modal_url_placeholder\": \"例如: https://api.example.com\",\n \"codex_add_modal_proxy_label\": \"代理 URL(選填):\",\n \"codex_add_modal_proxy_placeholder\": \"例如: socks5://proxy.example.com:1080\",\n \"codex_websockets_label\": \"Websockets\",\n \"codex_websockets_hint\": \"開啟 Responses API 的 websocket 傳輸。\",\n \"codex_models_label\": \"自訂模型(選填):\",\n \"codex_models_hint\": \"為空表示使用全部模型;可填寫 name[, alias] 以限制或重新命名模型。\",\n \"codex_models_add_btn\": \"新增模型\",\n \"codex_models_fetch_button\": \"從 /v1/models 取得\",\n \"codex_models_fetch_title\": \"從 /v1/models 選擇模型\",\n \"codex_models_fetch_hint\": \"使用上方 Base URL 呼叫 /v1/models 端點,附帶 API Key(Bearer)與自訂請求標頭。\",\n \"codex_models_fetch_url_label\": \"請求位址\",\n \"codex_models_fetch_refresh\": \"重新取得\",\n \"codex_models_fetch_loading\": \"正在從 /v1/models 取得模型清單...\",\n \"codex_models_fetch_empty\": \"未取得到模型,請檢查端點或驗證資訊。\",\n \"codex_models_fetch_error\": \"取得模型失敗\",\n \"codex_models_fetch_apply\": \"新增已選模型\",\n \"codex_models_search_label\": \"搜尋模型\",\n \"codex_models_search_placeholder\": \"依名稱、別名或描述篩選\",\n \"codex_models_search_empty\": \"沒有符合的模型,請更換關鍵字試試。\",\n \"codex_models_fetch_added\": \"已新增 {{count}} 個新模型\",\n \"codex_models_count\": \"模型數量\",\n \"codex_edit_modal_title\": \"編輯 Codex API 設定\",\n \"codex_edit_modal_key_label\": \"API 金鑰:\",\n \"codex_edit_modal_url_label\": \"Base URL(必填):\",\n \"codex_edit_modal_proxy_label\": \"代理 URL(選填):\",\n \"codex_delete_confirm\": \"確定要刪除這個 Codex 設定嗎?\",\n \"claude_title\": \"Claude API 設定\",\n \"claude_add_button\": \"新增設定\",\n \"claude_empty_title\": \"暫無 Claude 設定\",\n \"claude_empty_desc\": \"點擊上方按鈕新增第一個設定\",\n \"claude_item_title\": \"Claude 設定\",\n \"claude_add_modal_title\": \"新增 Claude API 設定\",\n \"claude_add_modal_key_label\": \"API 金鑰:\",\n \"claude_add_modal_key_placeholder\": \"請輸入 Claude API 金鑰\",\n \"claude_add_modal_url_label\": \"Base URL(選填):\",\n \"claude_add_modal_url_placeholder\": \"例如: https://api.anthropic.com\",\n \"claude_add_modal_proxy_label\": \"代理 URL(選填):\",\n \"claude_add_modal_proxy_placeholder\": \"例如: socks5://proxy.example.com:1080\",\n \"claude_edit_modal_title\": \"編輯 Claude API 設定\",\n \"claude_edit_modal_key_label\": \"API 金鑰:\",\n \"claude_edit_modal_url_label\": \"Base URL(選填):\",\n \"claude_edit_modal_proxy_label\": \"代理 URL(選填):\",\n \"claude_delete_confirm\": \"確定要刪除這個 Claude 設定嗎?\",\n \"claude_models_label\": \"自訂模型(選填):\",\n \"claude_models_hint\": \"為空表示使用全部模型;可填寫 name[, alias] 以限制或重新命名模型。\",\n \"claude_models_add_btn\": \"新增模型\",\n \"claude_models_count\": \"模型數量\",\n \"claude_models_fetch_button\": \"從 /v1/models 取得\",\n \"claude_models_fetch_title\": \"從 Claude /v1/models 選擇模型\",\n \"claude_models_fetch_hint\": \"按 Anthropic 規範請求 GET /v1/models,預設附帶 x-api-key 與 anthropic-version: 2023-06-01;也會合併你設定的自訂請求標頭。\",\n \"claude_models_fetch_url_label\": \"請求位址\",\n \"claude_models_fetch_refresh\": \"重新取得\",\n \"claude_models_fetch_loading\": \"正在從 Claude /v1/models 取得模型清單...\",\n \"claude_models_fetch_empty\": \"未取得到模型,請檢查 Base URL、API Key 或請求標頭。\",\n \"claude_models_fetch_error\": \"取得 Claude 模型失敗\",\n \"claude_models_fetch_apply\": \"新增已選模型\",\n \"claude_models_search_label\": \"搜尋模型\",\n \"claude_models_search_placeholder\": \"依名稱、別名或描述篩選\",\n \"claude_models_search_empty\": \"沒有符合的模型,請更換關鍵字試試。\",\n \"claude_models_fetch_added\": \"已新增 {{count}} 個新模型\",\n \"claude_test_title\": \"連通性測試\",\n \"claude_test_hint\": \"按 Anthropic 規範向 /v1/messages 發送測試請求,驗證目前設定是否可用。\",\n \"claude_test_select_placeholder\": \"從目前模型清單選擇\",\n \"claude_test_select_empty\": \"目前未設定模型,請先新增模型\",\n \"claude_test_action\": \"測試\",\n \"claude_test_running\": \"正在發送 Claude 測試請求...\",\n \"claude_test_timeout\": \"測試請求逾時({{seconds}} 秒)。\",\n \"claude_test_success\": \"測試成功,Claude 模型可用。\",\n \"claude_test_failed\": \"測試失敗\",\n \"claude_test_key_required\": \"請先填寫 Claude API Key 或在自訂請求標頭中設定 x-api-key\",\n \"claude_test_model_required\": \"請選擇要測試的模型\",\n \"claude_test_endpoint_invalid\": \"無法建構有效的 Claude /v1/messages 請求位址\",\n \"claude_cloak_title\": \"請求偽裝(選填):\",\n \"claude_cloak_toggle_label\": \"啟用\",\n \"claude_cloak_toggle_aria\": \"切換請求偽裝\",\n \"claude_cloak_hint\": \"對非 Claude Code 客戶端,將請求偽裝成 Claude Code CLI 的格式。\",\n \"claude_cloak_mode_label\": \"模式:\",\n \"claude_cloak_mode_hint\": \"auto: 僅對非 Claude Code 客戶端偽裝;always: 總是偽裝;never: 從不偽裝。\",\n \"claude_cloak_mode_auto\": \"自動(僅非 Claude Code)\",\n \"claude_cloak_mode_always\": \"總是\",\n \"claude_cloak_mode_never\": \"從不\",\n \"claude_cloak_strict_label\": \"嚴格模式:\",\n \"claude_cloak_strict_hint\": \"啟用後會移除用戶 system 訊息,僅保留 Claude Code 提示詞。\",\n \"claude_cloak_sensitive_words_label\": \"敏感詞(選填):\",\n \"claude_cloak_sensitive_words_placeholder\": \"用逗號或換行分隔,例如: internal-project\",\n \"claude_cloak_sensitive_words_hint\": \"這些詞會被插入零寬字元進行混淆。\",\n \"claude_cloak_sensitive_words_count\": \"敏感詞\",\n \"vertex_title\": \"Vertex API 設定\",\n \"vertex_add_button\": \"新增設定\",\n \"vertex_empty_title\": \"暫無 Vertex 設定\",\n \"vertex_empty_desc\": \"點擊上方按鈕新增第一個設定\",\n \"vertex_item_title\": \"Vertex 設定\",\n \"vertex_add_modal_title\": \"新增 Vertex API 設定\",\n \"vertex_add_modal_key_label\": \"API 金鑰:\",\n \"vertex_add_modal_key_placeholder\": \"請輸入 Vertex API 金鑰\",\n \"vertex_add_modal_url_label\": \"Base URL:\",\n \"vertex_add_modal_url_placeholder\": \"例如: https://example.com/api\",\n \"vertex_add_modal_proxy_label\": \"代理 URL(選填):\",\n \"vertex_add_modal_proxy_placeholder\": \"例如: socks5://proxy.example.com:1080\",\n \"vertex_edit_modal_title\": \"編輯 Vertex API 設定\",\n \"vertex_edit_modal_key_label\": \"API 金鑰:\",\n \"vertex_edit_modal_url_label\": \"Base URL:\",\n \"vertex_edit_modal_proxy_label\": \"代理 URL(選填):\",\n \"vertex_delete_confirm\": \"確定要刪除這個 Vertex 設定嗎?\",\n \"vertex_models_label\": \"模型別名:\",\n \"vertex_models_add_btn\": \"新增映射\",\n \"vertex_models_count\": \"別名數量\",\n \"ampcode_title\": \"Amp CLI 整合(ampcode)\",\n \"ampcode_modal_title\": \"設定 Ampcode\",\n \"ampcode_upstream_url_label\": \"Upstream URL\",\n \"ampcode_upstream_url_placeholder\": \"例如: https://ampcode.com\",\n \"ampcode_upstream_url_hint\": \"選填;留空表示使用預設/自動探索的控制平面位址。\",\n \"ampcode_upstream_api_key_label\": \"Upstream API Key(Amp 官方)\",\n \"ampcode_upstream_api_key_placeholder\": \"輸入 sk-amp...(留空不修改)\",\n \"ampcode_upstream_api_key_hint\": \"選填;留空不會修改目前 Amp 官方金鑰,需清除請點擊下方按鈕。\",\n \"ampcode_upstream_api_key_current\": \"目前 Amp 官方金鑰: {{key}}\",\n \"ampcode_clear_upstream_api_key\": \"清除官方金鑰\",\n \"ampcode_clear_upstream_api_key_confirm\": \"確定要清除 Ampcode 的 upstream API key(Amp 官方)嗎?\",\n \"ampcode_upstream_api_keys_label\": \"多上游 API Key 路由\",\n \"ampcode_upstream_api_keys_hint\": \"為指定客戶端 API Key 綁定不同的 Amp 上游 API Key;客戶端 key 可用逗號或換行分隔。\",\n \"ampcode_upstream_api_keys_add_btn\": \"新增多上游映射\",\n \"ampcode_upstream_api_keys_upstream_placeholder\": \"上游 API Key(sk-amp-...)\",\n \"ampcode_upstream_api_keys_clients_placeholder\": \"客戶端 API Keys,用逗號或換行分隔\",\n \"ampcode_upstream_api_keys_item_title\": \"上游映射 #{{index}}\",\n \"ampcode_upstream_api_keys_count\": \"多上游映射\",\n \"ampcode_force_model_mappings_label\": \"強制套用模型映射\",\n \"ampcode_force_model_mappings_hint\": \"開啟後,模型映射將覆寫本地 API Key 可用性判斷。\",\n \"ampcode_model_mappings_label\": \"模型映射(from → to)\",\n \"ampcode_model_mappings_hint\": \"用於改寫 Amp 請求中的模型名稱;留空表示不做映射。\",\n \"ampcode_model_mappings_add_btn\": \"新增映射\",\n \"ampcode_model_mappings_from_placeholder\": \"from 模型(原始)\",\n \"ampcode_model_mappings_to_placeholder\": \"to 模型(目標)\",\n \"ampcode_model_mappings_count\": \"映射數量\",\n \"ampcode_lists_overwrite_title\": \"覆寫清單設定\",\n \"ampcode_lists_overwrite_confirm\": \"目前未成功載入伺服器已有多上游/模型映射設定,繼續儲存可能覆寫或清空這些清單,是否繼續?\",\n \"ampcode_mappings_overwrite_confirm\": \"目前未成功載入伺服器已有映射,繼續儲存可能覆寫或清空已有映射,是否繼續?\",\n \"openai_title\": \"OpenAI 相容供應商\",\n \"openai_add_button\": \"新增供應商\",\n \"openai_empty_title\": \"暫無 OpenAI 相容供應商\",\n \"openai_empty_desc\": \"點擊上方按鈕新增第一個供應商\",\n \"openai_filtered_empty_title\": \"沒有匹配的供應商\",\n \"openai_filtered_empty_desc\": \"目前模型篩選下沒有匹配的供應商,請清除篩選後再試一次。\",\n \"sort_by_name\": \"依名稱排序\",\n \"sort_ascending\": \"升冪排序\",\n \"sort_asc_short\": \"升冪\",\n \"sort_by_priority\": \"依優先順序排序\",\n \"sort_by_recent_success\": \"依最近成功排序\",\n \"sort_descending\": \"降冪排序\",\n \"sort_desc_short\": \"降冪\",\n \"openai_test_model\": \"測試模型\",\n \"openai_add_modal_title\": \"新增 OpenAI 相容供應商\",\n \"openai_add_modal_name_label\": \"供應商名稱:\",\n \"openai_add_modal_name_placeholder\": \"例如: openrouter\",\n \"openai_add_modal_url_label\": \"Base URL:\",\n \"openai_add_modal_url_placeholder\": \"例如: https://openrouter.ai/api/v1\",\n \"openai_add_modal_keys_label\": \"API 金鑰\",\n \"openai_edit_modal_keys_label\": \"API 金鑰\",\n \"openai_keys_hint\": \"每個金鑰可搭配一個選填代理位址,更便於管理。\",\n \"openai_keys_add_btn\": \"新增金鑰\",\n \"openai_key_placeholder\": \"輸入 sk- 開頭的金鑰\",\n \"openai_proxy_placeholder\": \"選填代理 URL(如 socks5://...)\",\n \"openai_add_modal_models_label\": \"模型清單(name[, alias] 每行一個):\",\n \"openai_models_hint\": \"範例:gpt-4o-mini 或 moonshotai/kimi-k2:free, kimi-k2\",\n \"openai_model_name_placeholder\": \"模型名稱,如 moonshotai/kimi-k2:free\",\n \"openai_model_alias_placeholder\": \"模型別名(選填)\",\n \"openai_models_add_btn\": \"新增模型\",\n \"openai_models_fetch_button\": \"從 /models 取得\",\n \"openai_models_fetch_title\": \"從 /models 選擇模型\",\n \"openai_models_fetch_hint\": \"使用上方 Base URL 呼叫 /models 端點,附帶第一個 API Key(Bearer)與自訂請求標頭。\",\n \"openai_models_fetch_url_label\": \"請求位址\",\n \"openai_models_fetch_refresh\": \"重新取得\",\n \"openai_models_fetch_loading\": \"正在從 /models 取得模型清單...\",\n \"openai_models_fetch_empty\": \"未取得到模型,請檢查端點或驗證資訊。\",\n \"openai_models_fetch_error\": \"取得模型失敗\",\n \"openai_models_fetch_back\": \"返回編輯\",\n \"openai_models_fetch_apply\": \"新增已選模型\",\n \"openai_models_search_label\": \"搜尋模型\",\n \"openai_models_search_placeholder\": \"依名稱、別名或描述篩選\",\n \"openai_models_search_empty\": \"沒有符合的模型,請更換關鍵字試試。\",\n \"openai_models_fetch_invalid_url\": \"請先填寫有效的 Base URL\",\n \"openai_models_fetch_added\": \"已新增 {{count}} 個新模型\",\n \"openai_edit_modal_title\": \"編輯 OpenAI 相容供應商\",\n \"openai_edit_modal_name_label\": \"供應商名稱:\",\n \"openai_edit_modal_url_label\": \"Base URL:\",\n \"openai_edit_modal_models_label\": \"模型清單(name[, alias] 每行一個):\",\n \"openai_delete_confirm\": \"確定要刪除這個 OpenAI 供應商嗎?\",\n \"openai_keys_count\": \"金鑰數量\",\n \"openai_models_count\": \"模型數量\",\n \"openai_test_title\": \"連通性測試\",\n \"openai_test_hint\": \"使用目前設定向 /chat/completions 請求,驗證是否可用。\",\n \"openai_test_model_placeholder\": \"選擇或輸入要測試的模型\",\n \"openai_test_action\": \"發送測試\",\n \"openai_test_running\": \"正在發送測試請求...\",\n \"openai_test_timeout\": \"測試請求逾時({{seconds}} 秒)。\",\n \"openai_test_success\": \"測試成功,模型可用。\",\n \"openai_test_failed\": \"測試失敗\",\n \"openai_test_select_placeholder\": \"從目前模型清單選擇\",\n \"openai_test_select_empty\": \"目前未設定模型,請先新增模型\",\n \"openai_test_single_action\": \"測試\",\n \"openai_test_all_action\": \"一鍵測試全部金鑰\",\n \"openai_test_all_hint\": \"測試所有金鑰的連線狀態\",\n \"openai_test_all_success\": \"所有 {{count}} 個金鑰測試通過\",\n \"openai_test_all_failed\": \"所有 {{count}} 個金鑰測試失敗\",\n \"openai_test_all_partial\": \"測試完成:{{success}} 個通過,{{failed}} 個失敗\",\n \"model_search_placeholder\": \"依模型篩選...\",\n \"model_search_clear\": \"清除\",\n \"model_select_all\": \"全選\",\n \"model_filter_empty\": \"暫無可篩選模型\"\n },\n \"auth_files\": {\n \"title\": \"驗證檔案管理\",\n \"title_section\": \"驗證檔案\",\n \"description\": \"這裡集中管理 CLI Proxy 支援的所有 JSON 驗證檔案(如 Qwen、Gemini、Vertex 等),上傳後即可在執行時啟用對應的 AI 服務。\",\n \"upload_button\": \"上傳檔案\",\n \"delete_all_button\": \"刪除全部\",\n \"empty_title\": \"暫無驗證檔案\",\n \"empty_desc\": \"點擊上方按鈕上傳第一個檔案\",\n \"search_empty_title\": \"沒有符合的設定檔\",\n \"search_empty_desc\": \"請調整篩選條件或清空搜尋關鍵字再試一次。\",\n \"file_size\": \"大小\",\n \"file_modified\": \"修改時間\",\n \"health_status_label\": \"健康狀態\",\n \"health_status_healthy\": \"健康\",\n \"health_status_warning\": \"警告\",\n \"health_status_disabled\": \"已停用\",\n \"health_status_unknown\": \"未知\",\n \"health_status_no_message\": \"暫無狀態說明\",\n \"last_refresh_label\": \"最近重新整理\",\n \"refresh_not_available\": \"暫無\",\n \"refresh_just_now\": \"剛剛\",\n \"download_button\": \"下載\",\n \"delete_button\": \"刪除\",\n \"delete_confirm\": \"確定要刪除檔案\",\n \"delete_all_confirm\": \"確定要刪除所有驗證檔案嗎?此操作無法還原!\",\n \"delete_filtered_confirm\": \"確定要刪除篩選出的 {{type}} 驗證檔案嗎?此操作無法還原!\",\n \"delete_problem_button\": \"刪除問題憑證\",\n \"delete_problem_button_with_type\": \"刪除 {{type}} 問題憑證\",\n \"delete_problem_confirm\": \"確定要刪除所有有問題的驗證檔案嗎?此操作無法還原!\",\n \"delete_problem_filtered_confirm\": \"確定要刪除篩選出的有問題的 {{type}} 驗證檔案嗎?此操作無法還原!\",\n \"delete_filtered_result_button\": \"刪除篩選結果\",\n \"delete_filtered_result_confirm\": \"確定要刪除目前篩選結果中的驗證檔案嗎?此操作無法還原!\",\n \"upload_error_json\": \"只能上傳 JSON 檔案\",\n \"upload_error_size\": \"檔案大小不能超過 {{maxSize}}\",\n \"upload_success\": \"檔案上傳成功\",\n \"download_success\": \"檔案下載成功\",\n \"delete_success\": \"檔案刪除成功\",\n \"delete_all_success\": \"成功刪除\",\n \"delete_filtered_success\": \"成功刪除 {{count}} 個 {{type}} 驗證檔案\",\n \"delete_filtered_partial\": \"{{type}} 驗證檔案刪除完成,成功 {{success}} 個,失敗 {{failed}} 個\",\n \"delete_filtered_none\": \"目前篩選類型({{type}})下沒有可刪除的驗證檔案\",\n \"delete_problem_success\": \"成功刪除 {{count}} 個有問題的驗證檔案\",\n \"delete_problem_filtered_success\": \"成功刪除 {{count}} 個有問題的 {{type}} 驗證檔案\",\n \"delete_problem_partial\": \"有問題驗證檔案刪除完成,成功 {{success}} 個,失敗 {{failed}} 個\",\n \"delete_problem_filtered_partial\": \"有問題的 {{type}} 驗證檔案刪除完成,成功 {{success}} 個,失敗 {{failed}} 個\",\n \"delete_problem_none\": \"目前沒有可刪除的有問題驗證檔案\",\n \"delete_problem_filtered_none\": \"目前篩選類型({{type}})下沒有可刪除的有問題驗證檔案\",\n \"delete_filtered_result_success\": \"成功刪除 {{count}} 個篩選結果中的驗證檔案\",\n \"delete_filtered_result_partial\": \"篩選結果刪除完成,成功 {{success}} 個,失敗 {{failed}} 個\",\n \"delete_filtered_result_none\": \"目前篩選結果中沒有可刪除的驗證檔案\",\n \"files_count\": \"個檔案\",\n \"pagination_prev\": \"上一頁\",\n \"pagination_next\": \"下一頁\",\n \"pagination_info\": \"第 {{current}} / {{total}} 頁 · 共 {{count}} 個檔案\",\n \"search_label\": \"搜尋設定檔\",\n \"search_placeholder\": \"輸入名稱、類型或供應方關鍵字,支援 * 萬用字元\",\n \"problem_filter_label\": \"問題篩選\",\n \"problem_filter_only\": \"僅顯示有問題憑證\",\n \"disabled_filter_only\": \"僅顯示已停用憑證\",\n \"display_options_label\": \"顯示選項\",\n \"compact_mode_label\": \"簡略模式\",\n \"sort_label\": \"排序\",\n \"sort_default\": \"預設\",\n \"sort_az\": \"A-Z 名稱\",\n \"sort_priority\": \"優先順序\",\n \"priority_display\": \"優先順序\",\n \"page_size_label\": \"單頁數量\",\n \"page_size_unit\": \"個/頁\",\n \"view_mode_paged\": \"分頁顯示\",\n \"view_mode_all\": \"顯示全部\",\n \"too_many_files_warning\": \"您的憑證總數過多,全部載入會導致頁面卡頓,請保持分頁瀏覽。\",\n \"filter_all\": \"全部\",\n \"filter_qwen\": \"Qwen\",\n \"filter_gemini\": \"Gemini\",\n \"filter_gemini-cli\": \"GeminiCLI\",\n \"filter_kimi\": \"Kimi\",\n \"filter_aistudio\": \"AIStudio\",\n \"filter_claude\": \"Claude\",\n \"filter_codex\": \"Codex\",\n \"filter_antigravity\": \"Antigravity\",\n \"filter_xai\": \"xAI\",\n \"filter_iflow\": \"iFlow\",\n \"filter_vertex\": \"Vertex\",\n \"filter_empty\": \"空檔案\",\n \"filter_unknown\": \"其他\",\n \"type_qwen\": \"Qwen\",\n \"type_gemini\": \"Gemini\",\n \"type_gemini-cli\": \"GeminiCLI\",\n \"type_kimi\": \"Kimi\",\n \"type_aistudio\": \"AIStudio\",\n \"type_claude\": \"Claude\",\n \"type_codex\": \"Codex\",\n \"type_antigravity\": \"Antigravity\",\n \"type_xai\": \"xAI\",\n \"type_iflow\": \"iFlow\",\n \"type_vertex\": \"Vertex\",\n \"type_empty\": \"空檔案\",\n \"type_unknown\": \"其他\",\n \"type_virtual\": \"虛擬驗證檔案\",\n \"models_button\": \"模型\",\n \"models_title\": \"支援的模型\",\n \"models_loading\": \"正在載入模型清單...\",\n \"models_empty\": \"該憑證暫無可用模型\",\n \"models_empty_desc\": \"該驗證憑證可能尚未被伺服器載入或沒有綁定任何模型\",\n \"models_unsupported\": \"目前版本不支援此功能\",\n \"models_unsupported_desc\": \"請更新 CLI Proxy API 到最新版本後重試\",\n \"models_excluded_badge\": \"已停用\",\n \"models_excluded_hint\": \"此 OAuth 模型已被停用\",\n \"status_toggle_label\": \"啟用\",\n \"status_enabled_success\": \"已啟用「{{name}}」\",\n \"status_disabled_success\": \"已停用「{{name}}」\",\n \"batch_status_success\": \"已成功更新 {{count}} 個檔案\",\n \"batch_status_partial\": \"成功 {{success}} 個,失敗 {{failed}} 個\",\n \"batch_delete_title\": \"刪除已選檔案\",\n \"batch_delete_confirm\": \"確定要刪除 {{count}} 個檔案嗎?\",\n \"batch_selected\": \"已選 {{count}} 項\",\n \"batch_select_all\": \"全選\",\n \"batch_select_page\": \"全選目前頁\",\n \"batch_select_filtered\": \"全選篩選結果\",\n \"batch_invert_page\": \"反選目前頁\",\n \"batch_deselect\": \"取消選擇\",\n \"batch_download\": \"下載已選\",\n \"batch_download_success\": \"已開始下載 {{count}} 個檔案\",\n \"batch_download_partial\": \"下載完成:成功 {{success}} 個,失敗 {{failed}} 個\",\n \"batch_enable\": \"啟用\",\n \"batch_disable\": \"停用\",\n \"prefix_proxy_button\": \"驗證檔案詳情 / 編輯\",\n \"auth_field_editor_title\": \"驗證檔案詳情 / 編輯 - {{name}}\",\n \"prefix_proxy_loading\": \"正在載入驗證檔案...\",\n \"prefix_proxy_info_label\": \"驗證檔案資訊(info)\",\n \"prefix_proxy_source_label\": \"驗證檔案 JSON(預覽)\",\n \"prefix_proxy_invalid_content_label\": \"下載內容(已截斷)\",\n \"prefix_label\": \"前綴(prefix)\",\n \"proxy_url_label\": \"代理 URL(proxy_url)\",\n \"prefix_placeholder\": \"\",\n \"proxy_url_placeholder\": \"socks5://username:password@proxy_ip:port/\",\n \"priority_label\": \"優先順序(priority)\",\n \"priority_placeholder\": \"例如: 10 或 -1\",\n \"priority_hint\": \"僅支援整數;無效值會被忽略。數值越大優先順序越高。\",\n \"websockets_label\": \"WebSockets(websockets)\",\n \"websockets_hint\": \"為該憑證開啟 Responses API 的 websocket 傳輸。\",\n \"codex_websockets_label\": \"WebSockets(websockets)\",\n \"codex_websockets_hint\": \"為該 Codex 憑證開啟 Responses API 的 websocket 傳輸。\",\n \"excluded_models_label\": \"排除模型(excluded_models)\",\n \"excluded_models_placeholder\": \"用逗號或換行分隔,例如: model-a, gpt-5-*, *-preview\",\n \"excluded_models_hint\": \"儲存為陣列;會自動 trim、小寫、去重並排序。\",\n \"disable_cooling_label\": \"停用冷卻(disable_cooling)\",\n \"disable_cooling_placeholder\": \"例如: true / false / 1 / 0\",\n \"disable_cooling_hint\": \"支援布林值、0/非0 數字或字串 true/false/1/0;無法解析時忽略。\",\n \"using_api_label\": \"使用官方 API(using_api)\",\n \"using_api_hint\": \"開啟後使用 xAI 官方 API;關閉時使用 Grok CLI chat-proxy。\",\n \"note_label\": \"備註(note)\",\n \"note_placeholder\": \"輸入備註資訊,例如:張三的帳號\",\n \"note_hint\": \"選填,用於標記憑證用途或歸屬;留空則不寫入。\",\n \"note_display\": \"備註\",\n \"headers_label\": \"自訂請求標頭(headers)\",\n \"headers_placeholder\": \"{\\n \\\"Header-Name\\\": \\\"value\\\"\\n}\",\n \"headers_hint\": \"以 JSON 物件格式輸入自訂 HTTP 請求標頭,例如:{\\\"X-My-Header\\\": \\\"value\\\"}\",\n \"headers_invalid_json\": \"自訂請求標頭必須是有效的 JSON。\",\n \"headers_invalid_object\": \"自訂請求標頭必須是 JSON 物件。\",\n \"headers_invalid_value\": \"每個自訂請求標頭的值都必須是字串。\",\n \"prefix_proxy_invalid_json\": \"該驗證檔案不是 JSON 物件,無法編輯欄位。\",\n \"prefix_proxy_html_challenge\": \"下載到的是 HTML 驗證頁面,不是驗證 JSON 物件。請重新驗證或替換該驗證檔案後再編輯欄位。\",\n \"prefix_proxy_saved_success\": \"已更新驗證檔案「{{name}}」\",\n \"quota_refresh_single\": \"重新整理配額\",\n \"quota_refresh_hint\": \"僅重新整理該驗證檔案的配額\",\n \"quota_refresh_success\": \"已重新整理「{{name}}」的配額\",\n \"quota_refresh_failed\": \"重新整理「{{name}}」的配額失敗:{{message}}\"\n },\n \"antigravity_quota\": {\n \"title\": \"Antigravity 配額\",\n \"empty_title\": \"暫無 Antigravity 驗證\",\n \"empty_desc\": \"上傳 Antigravity 驗證檔案後即可查看配額。\",\n \"idle\": \"點擊此處重新整理配額\",\n \"loading\": \"正在載入配額...\",\n \"load_failed\": \"配額取得失敗:{{message}}\",\n \"missing_auth_index\": \"驗證檔案缺少 auth_index\",\n \"empty_models\": \"暫無配額資料\",\n \"refresh_button\": \"重新整理配額\",\n \"fetch_all\": \"取得全部\"\n },\n \"claude_quota\": {\n \"title\": \"Claude 配額\",\n \"empty_title\": \"暫無 Claude OAuth 驗證\",\n \"empty_desc\": \"使用 Claude OAuth 登入後即可查看配額。\",\n \"idle\": \"點擊此處重新整理配額\",\n \"loading\": \"正在載入配額...\",\n \"load_failed\": \"配額取得失敗:{{message}}\",\n \"missing_auth_index\": \"驗證檔案缺少 auth_index\",\n \"empty_windows\": \"暫無配額資料\",\n \"refresh_button\": \"重新整理配額\",\n \"fetch_all\": \"取得全部\",\n \"five_hour\": \"5 小時限額\",\n \"seven_day\": \"7 天限額\",\n \"seven_day_oauth_apps\": \"7 天 OAuth 應用\",\n \"seven_day_opus\": \"7 天 Opus\",\n \"seven_day_sonnet\": \"7 天 Sonnet\",\n \"seven_day_cowork\": \"7 天 Cowork\",\n \"iguana_necktie\": \"Iguana Necktie\",\n \"seven_day_fable\": \"7 天 Fable 5\",\n \"extra_usage_label\": \"額外用量\",\n \"plan_label\": \"方案\",\n \"plan_unknown\": \"未知\",\n \"plan_free\": \"免費版\",\n \"plan_pro\": \"專業版\",\n \"plan_max\": \"Max\",\n \"plan_max5\": \"Max 5x\",\n \"plan_max20\": \"Max 20x\",\n \"plan_team\": \"團隊版\"\n },\n \"gemini_cli_quota\": {\n \"title\": \"Gemini CLI 配額\",\n \"empty_title\": \"暫無 Gemini CLI 驗證\",\n \"empty_desc\": \"上傳 Gemini CLI 驗證檔案後即可查看配額。\",\n \"idle\": \"點擊此處重新整理配額\",\n \"loading\": \"正在載入配額...\",\n \"load_failed\": \"配額取得失敗:{{message}}\",\n \"missing_auth_index\": \"驗證檔案缺少 auth_index\",\n \"missing_project_id\": \"Gemini CLI 憑證缺少 Project ID\",\n \"empty_buckets\": \"暫無配額資料\",\n \"refresh_button\": \"重新整理配額\",\n \"fetch_all\": \"取得全部\",\n \"remaining_amount\": \"剩餘 {{count}}\",\n \"tier_label\": \"層級\",\n \"tier_free\": \"免費版\",\n \"tier_legacy\": \"舊版\",\n \"tier_standard\": \"標準版\",\n \"tier_pro\": \"Pro\",\n \"tier_ultra\": \"Ultra\",\n \"credit_label\": \"Google One AI 點數\",\n \"credit_amount\": \"{{count}} 點數\"\n },\n \"kimi_quota\": {\n \"title\": \"Kimi 配額\",\n \"empty_title\": \"暫無 Kimi 驗證\",\n \"empty_desc\": \"上傳 Kimi 驗證檔案後即可查看配額。\",\n \"idle\": \"點擊此處重新整理配額\",\n \"loading\": \"正在載入配額...\",\n \"load_failed\": \"配額取得失敗:{{message}}\",\n \"missing_auth_index\": \"驗證檔案缺少 auth_index\",\n \"empty_data\": \"暫無配額資料\",\n \"refresh_button\": \"重新整理配額\",\n \"fetch_all\": \"取得全部\",\n \"weekly_limit\": \"週限額\",\n \"limit_window\": \"{{duration}} 限額\",\n \"limit_index\": \"限額 #{{index}}\",\n \"reset_hint\": \"{{hint}} 後重置\",\n \"reset_at\": \"{{time}} 重置\"\n },\n \"xai_quota\": {\n \"title\": \"Grok 配額\",\n \"empty_title\": \"暫無 xAI/Grok 驗證\",\n \"empty_desc\": \"使用 xAI OAuth 登入後即可查看 Grok 配額。\",\n \"idle\": \"點擊此處重新整理配額\",\n \"loading\": \"正在載入配額...\",\n \"load_failed\": \"配額取得失敗:{{message}}\",\n \"missing_auth_index\": \"驗證檔案缺少 auth_index\",\n \"empty_data\": \"暫無配額資料\",\n \"refresh_button\": \"重新整理配額\",\n \"fetch_all\": \"取得全部\",\n \"weekly_limit\": \"週限額\",\n \"monthly_credits\": \"月度點數\",\n \"used_percent\": \"已用 {{percent}}\",\n \"reset_at\": \"重置 {{time}}\",\n \"product_usage\": \"{{product}} 使用\",\n \"plan_label\": \"方案\",\n \"plan_supergrok\": \"SuperGrok\",\n \"plan_supergrok_heavy\": \"SuperGrok Heavy\",\n \"pay_as_you_go_label\": \"按量付費\",\n \"pay_as_you_go_enabled\": \"已啟用,封頂 {{cap}}\",\n \"pay_as_you_go_disabled\": \"未啟用\"\n },\n \"vertex_import\": {\n \"title\": \"Vertex JSON 登入\",\n \"description\": \"上傳 Google 服務帳號 JSON,使用 CLI vertex-import 同步規則寫入 auth-dir/vertex-<project>.json。\",\n \"location_label\": \"目標區域(選填)\",\n \"location_placeholder\": \"us-central1\",\n \"location_hint\": \"留空表示使用預設區域 us-central1。\",\n \"file_label\": \"服務帳號金鑰 JSON\",\n \"file_hint\": \"僅支援 Google Cloud service account key JSON 檔案,私鑰會自動規範化。\",\n \"file_placeholder\": \"尚未選擇檔案\",\n \"choose_file\": \"選擇檔案\",\n \"import_button\": \"匯入 Vertex 憑證\",\n \"file_required\": \"請先選擇 .json 憑證檔案\",\n \"success\": \"Vertex 憑證匯入成功\",\n \"result_title\": \"憑證已儲存\",\n \"result_project\": \"專案 ID\",\n \"result_email\": \"服務帳號\",\n \"result_location\": \"區域\",\n \"result_file\": \"儲存檔案\"\n },\n \"oauth_excluded\": {\n \"title\": \"OAuth 模型停用\",\n \"description\": \"按供應商分列展示,點擊卡片編輯或刪除;支援 * 萬用字元,範圍跟隨上方的設定檔篩選標籤。\",\n \"add\": \"新增停用\",\n \"add_title\": \"新增供應商模型停用\",\n \"edit_title\": \"編輯 {{provider}} 的模型停用\",\n \"refresh\": \"重新整理\",\n \"refreshing\": \"重新整理中...\",\n \"provider_label\": \"供應商\",\n \"provider_auto\": \"跟隨目前篩選\",\n \"provider_placeholder\": \"例如 gemini-cli / openai\",\n \"provider_hint\": \"預設選取目前篩選的供應商,也可直接輸入或選擇其他名稱。\",\n \"models_label\": \"停用的模型\",\n \"models_loading\": \"正在載入模型清單...\",\n \"models_unsupported\": \"目前 CPA 版本不支援取得模型清單。\",\n \"models_loaded\": \"已載入 {{count}} 個模型,勾選要停用的模型。\",\n \"no_models_available\": \"該供應商暫無可用模型清單。\",\n \"custom_rule_label\": \"自訂模型規則\",\n \"custom_rule_hint\": \"可填寫精確模型 ID,或使用 gpt-* 這類萬用字元規則。\",\n \"custom_rule_placeholder\": \"例如 gpt-* / custom-model\",\n \"custom_rule_add\": \"新增規則\",\n \"custom_rules_label\": \"已設定的自訂規則\",\n \"custom_rule_remove\": \"移除 {{rule}}\",\n \"save\": \"儲存/更新\",\n \"saving\": \"正在儲存...\",\n \"save_success\": \"模型停用已更新\",\n \"save_failed\": \"更新模型停用失敗\",\n \"delete\": \"刪除供應商\",\n \"delete_confirm\": \"確定要刪除 {{provider}} 的模型停用嗎?\",\n \"delete_success\": \"已刪除該供應商的模型停用\",\n \"delete_failed\": \"刪除模型停用失敗\",\n \"deleting\": \"正在刪除...\",\n \"no_models\": \"未設定停用模型\",\n \"model_count\": \"停用 {{count}} 個模型\",\n \"list_empty_all\": \"暫無任何供應商的模型停用,點擊「新增停用」建立。\",\n \"list_empty_filtered\": \"目前篩選下沒有停用項,點擊「新增停用」新增。\",\n \"disconnected\": \"請先連線伺服器以查看模型停用\",\n \"load_failed\": \"載入模型停用失敗\",\n \"provider_required\": \"請先填寫供應商名稱\",\n \"scope_all\": \"目前範圍:全域(顯示所有供應商)\",\n \"scope_provider\": \"目前範圍:{{provider}}\",\n \"upgrade_required\": \"目前 CPA 版本不支援 OAuth 模型停用,請升級 CPA 版本\",\n \"upgrade_required_title\": \"需要升級 CPA 版本\",\n \"upgrade_required_desc\": \"目前伺服器版本不支援取得 OAuth 模型停用功能,請升級到最新版本的 CPA(CLI Proxy API)後重試。\"\n },\n \"oauth_model_alias\": {\n \"title\": \"OAuth 模型別名\",\n \"add\": \"新增別名\",\n \"add_title\": \"新增供應商模型別名\",\n \"provider_label\": \"供應商\",\n \"provider_placeholder\": \"例如 gemini-cli / vertex\",\n \"provider_hint\": \"預設選取目前篩選的供應商,也可直接輸入或選擇其他名稱。\",\n \"model_source_loading\": \"正在載入模型清單...\",\n \"model_source_unsupported\": \"目前 CPA 版本不支援取得模型清單(仍可手動輸入)。\",\n \"model_source_loaded\": \"已載入 {{count}} 個模型,可在「原模型名稱」中下拉選擇;也可手動輸入。留空儲存將刪除該供應商記錄;開啟「保留原名」會在保留原模型名的同時新增別名。\",\n \"alias_label\": \"模型別名\",\n \"alias_name_placeholder\": \"原模型名稱\",\n \"alias_placeholder\": \"別名(必填)\",\n \"duplicate_alias\": \"同一供應商下的別名不能重複。\",\n \"alias_fork_label\": \"保留原名\",\n \"add_alias\": \"新增別名\",\n \"save\": \"儲存/更新\",\n \"save_success\": \"模型別名已更新\",\n \"save_failed\": \"更新模型別名失敗\",\n \"delete\": \"刪除供應商\",\n \"delete_confirm\": \"確定要刪除 {{provider}} 的模型別名嗎?\",\n \"delete_link_title\": \"取消連結\",\n \"delete_link_confirm\": \"確定取消 <code>{{sourceModel}}</code>({{provider}})到別名 <code>{{alias}}</code> 的映射?\",\n \"delete_alias_title\": \"刪除別名\",\n \"delete_alias_confirm\": \"確定刪除別名 <code>{{alias}}</code> 並取消所有關聯模型的映射?\",\n \"delete_success\": \"已刪除該供應商的模型別名\",\n \"delete_failed\": \"刪除模型別名失敗\",\n \"no_models\": \"未設定模型別名\",\n \"model_count\": \"{{count}} 條別名\",\n \"list_empty_all\": \"暫無任何供應商的模型別名,點擊「新增別名」建立。\",\n \"chart_title\": \"全部映射概覽\",\n \"diagram_providers\": \"供應商\",\n \"diagram_source_models\": \"來源模型\",\n \"diagram_aliases\": \"別名\",\n \"diagram_expand\": \"展開\",\n \"diagram_collapse\": \"收起\",\n \"diagram_add_alias\": \"新增別名\",\n \"diagram_rename\": \"重新命名\",\n \"diagram_rename_alias_title\": \"重新命名別名\",\n \"diagram_rename_alias_label\": \"新別名名稱\",\n \"diagram_rename_placeholder\": \"輸入別名名稱...\",\n \"diagram_delete_link\": \"取消連結 {{provider}} / {{name}}\",\n \"diagram_delete_alias\": \"刪除別名\",\n \"diagram_please_enter_alias\": \"請輸入別名名稱。\",\n \"diagram_alias_exists\": \"該別名已存在。\",\n \"diagram_add_alias_title\": \"新增別名\",\n \"diagram_add_alias_label\": \"別名名稱\",\n \"diagram_add_placeholder\": \"輸入新別名名稱...\",\n \"diagram_rename_btn\": \"重新命名\",\n \"diagram_add_btn\": \"新增\",\n \"diagram_settings\": \"設定\",\n \"diagram_settings_title\": \"別名設定 — {{alias}}\",\n \"diagram_settings_source_title\": \"來源模型設定\",\n \"diagram_settings_empty\": \"該別名暫無映射。\",\n \"diagram_tap_hint\": \"觸控設備上:先點選來源模型,再點選別名即可建立映射。\",\n \"view_mode\": \"檢視模式\",\n \"view_mode_diagram\": \"概覽\",\n \"view_mode_list\": \"管理\",\n \"provider_required\": \"請先填寫供應商名稱\",\n \"upgrade_required\": \"目前 CPA 版本不支援模型別名功能,請升級 CPA 版本\",\n \"upgrade_required_title\": \"需要升級 CPA 版本\",\n \"upgrade_required_desc\": \"目前伺服器版本不支援 OAuth 模型別名功能,請升級到最新版本的 CPA(CLI Proxy API)後重試。\"\n },\n \"auth_login\": {\n \"codex_oauth_title\": \"Codex OAuth\",\n \"codex_oauth_button\": \"開始 Codex 登入\",\n \"codex_oauth_hint\": \"透過 OAuth 流程登入 Codex 服務,自動取得並儲存驗證檔案。\",\n \"codex_oauth_url_label\": \"授權連結:\",\n \"codex_open_link\": \"開啟連結\",\n \"codex_copy_link\": \"複製連結\",\n \"codex_oauth_status_waiting\": \"等待驗證中...\",\n \"codex_oauth_status_success\": \"驗證成功!\",\n \"codex_oauth_status_error\": \"驗證失敗:\",\n \"codex_oauth_start_error\": \"啟動 Codex OAuth 失敗:\",\n \"codex_oauth_polling_error\": \"檢查驗證狀態失敗:\",\n \"anthropic_oauth_title\": \"Anthropic OAuth\",\n \"anthropic_oauth_button\": \"開始 Anthropic 登入\",\n \"anthropic_oauth_hint\": \"透過 OAuth 流程登入 Anthropic(Claude)服務,自動取得並儲存驗證檔案。\",\n \"anthropic_oauth_url_label\": \"授權連結:\",\n \"anthropic_open_link\": \"開啟連結\",\n \"anthropic_copy_link\": \"複製連結\",\n \"anthropic_oauth_status_waiting\": \"等待驗證中...\",\n \"anthropic_oauth_status_success\": \"驗證成功!\",\n \"anthropic_oauth_status_error\": \"驗證失敗:\",\n \"anthropic_oauth_start_error\": \"啟動 Anthropic OAuth 失敗:\",\n \"anthropic_oauth_polling_error\": \"檢查驗證狀態失敗:\",\n \"antigravity_oauth_title\": \"Antigravity OAuth\",\n \"antigravity_oauth_button\": \"開始 Antigravity 登入\",\n \"antigravity_oauth_hint\": \"透過 OAuth 流程登入 Antigravity(Google 帳號)服務,自動取得並儲存驗證檔案。\",\n \"antigravity_oauth_url_label\": \"授權連結:\",\n \"antigravity_open_link\": \"開啟連結\",\n \"antigravity_copy_link\": \"複製連結\",\n \"antigravity_oauth_status_waiting\": \"等待驗證中...\",\n \"antigravity_oauth_status_success\": \"驗證成功!\",\n \"antigravity_oauth_status_error\": \"驗證失敗:\",\n \"antigravity_oauth_start_error\": \"啟動 Antigravity OAuth 失敗:\",\n \"antigravity_oauth_polling_error\": \"檢查驗證狀態失敗:\",\n \"gemini_cli_oauth_title\": \"Gemini CLI OAuth\",\n \"gemini_cli_oauth_button\": \"開始 Gemini CLI 登入\",\n \"gemini_cli_oauth_hint\": \"透過 OAuth 流程登入 Google Gemini CLI 服務,自動取得並儲存驗證檔案。\",\n \"gemini_cli_project_id_label\": \"Google Cloud 專案 ID(選填):\",\n \"gemini_cli_project_id_placeholder\": \"留空將自動選擇第一個可用專案\",\n \"gemini_cli_project_id_hint\": \"可選填專案 ID。如不填寫,系統將自動選擇您帳號下的第一個可用專案。輸入 ALL 可取得全部專案。\",\n \"gemini_cli_project_id_required\": \"請填寫 Google Cloud 專案 ID。\",\n \"gemini_cli_oauth_url_label\": \"授權連結:\",\n \"gemini_cli_open_link\": \"開啟連結\",\n \"gemini_cli_copy_link\": \"複製連結\",\n \"gemini_cli_oauth_status_waiting\": \"等待驗證中...\",\n \"gemini_cli_oauth_status_success\": \"驗證成功!\",\n \"gemini_cli_oauth_status_error\": \"驗證失敗:\",\n \"gemini_cli_oauth_start_error\": \"啟動 Gemini CLI OAuth 失敗:\",\n \"gemini_cli_oauth_polling_error\": \"檢查驗證狀態失敗:\",\n \"kimi_oauth_title\": \"Kimi OAuth\",\n \"kimi_oauth_button\": \"開始 Kimi 登入\",\n \"kimi_oauth_hint\": \"透過裝置授權流程登入 Kimi 服務,自動取得並儲存驗證檔案。\",\n \"kimi_oauth_url_label\": \"授權連結:\",\n \"kimi_open_link\": \"開啟連結\",\n \"kimi_copy_link\": \"複製連結\",\n \"kimi_oauth_status_waiting\": \"等待驗證中...\",\n \"kimi_oauth_status_success\": \"驗證成功!\",\n \"kimi_oauth_status_error\": \"驗證失敗:\",\n \"kimi_oauth_start_error\": \"啟動 Kimi OAuth 失敗:\",\n \"kimi_oauth_polling_error\": \"檢查驗證狀態失敗:\",\n \"xai_oauth_title\": \"xAI OAuth\",\n \"xai_oauth_button\": \"開始 xAI 登入\",\n \"xai_oauth_hint\": \"透過 OAuth 流程登入 xAI Grok 服務,自動取得並儲存驗證檔案。\",\n \"xai_oauth_url_label\": \"授權連結:\",\n \"xai_open_link\": \"開啟連結\",\n \"xai_copy_link\": \"複製連結\",\n \"xai_oauth_status_waiting\": \"等待驗證中...\",\n \"xai_oauth_status_success\": \"驗證成功!\",\n \"xai_oauth_status_error\": \"驗證失敗:\",\n \"xai_oauth_start_error\": \"啟動 xAI OAuth 失敗:\",\n \"xai_oauth_polling_error\": \"檢查驗證狀態失敗:\",\n \"xai_callback_label\": \"回調 URL 或授權碼\",\n \"xai_callback_placeholder\": \"貼上頁面顯示的 code,或完整 callback URL\",\n \"xai_callback_hint\": \"Grok 有時只在頁面顯示 code。可直接貼上 code,系統會自動拼接為 http://127.0.0.1:56121/callback?... 後提交。\",\n \"xai_callback_required\": \"請先貼上 Grok 頁面顯示的 code 或完整回調 URL。\",\n \"xai_callback_state_missing\": \"缺少本次 xAI 登入的 state,請重新開始 xAI 登入後再提交 code。\",\n \"qwen_oauth_title\": \"Qwen OAuth\",\n \"qwen_oauth_button\": \"開始 Qwen 登入\",\n \"qwen_oauth_hint\": \"透過裝置授權流程登入 Qwen 服務,自動取得並儲存驗證檔案。\",\n \"qwen_oauth_url_label\": \"授權連結:\",\n \"qwen_open_link\": \"開啟連結\",\n \"qwen_copy_link\": \"複製連結\",\n \"qwen_oauth_status_waiting\": \"等待驗證中...\",\n \"qwen_oauth_status_success\": \"驗證成功!\",\n \"qwen_oauth_status_error\": \"驗證失敗:\",\n \"qwen_oauth_start_error\": \"啟動 Qwen OAuth 失敗:\",\n \"qwen_oauth_polling_error\": \"檢查驗證狀態失敗:\",\n \"oauth_callback_label\": \"回調 URL\",\n \"oauth_callback_placeholder\": \"http://localhost:1455/auth/callback?code=...&state=...\",\n \"oauth_callback_hint\": \"遠端瀏覽器模式:當授權跳轉到 http://localhost:... 後,複製完整 URL 並提交到這裡。\",\n \"oauth_callback_button\": \"提交回調 URL\",\n \"oauth_callback_required\": \"請先貼上完整的回調 URL。\",\n \"oauth_callback_success\": \"回調 URL 已提交,請繼續等待驗證。\",\n \"oauth_callback_error\": \"提交回調 URL 失敗:\",\n \"oauth_callback_upgrade_hint\": \"請更新 CLI Proxy API 或檢查連線\",\n \"oauth_callback_status_success\": \"回調 URL 已提交,等待驗證中...\",\n \"oauth_callback_status_error\": \"回調 URL 提交失敗:\",\n \"missing_state\": \"無法取得驗證狀態參數\",\n \"iflow_oauth_title\": \"iFlow OAuth\",\n \"iflow_oauth_button\": \"開始 iFlow 登入\",\n \"iflow_oauth_hint\": \"透過 OAuth 流程登入 iFlow 服務,自動取得並儲存驗證檔案。\",\n \"iflow_oauth_url_label\": \"授權連結:\",\n \"iflow_open_link\": \"開啟連結\",\n \"iflow_copy_link\": \"複製連結\",\n \"iflow_oauth_status_waiting\": \"等待驗證中...\",\n \"iflow_oauth_status_success\": \"驗證成功!\",\n \"iflow_oauth_status_error\": \"驗證失敗:\",\n \"iflow_oauth_start_error\": \"啟動 iFlow OAuth 失敗:\",\n \"iflow_oauth_polling_error\": \"檢查驗證狀態失敗:\",\n \"iflow_cookie_title\": \"iFlow Cookie 登入\",\n \"iflow_cookie_label\": \"Cookie 內容:\",\n \"iflow_cookie_placeholder\": \"填入 BXAuth 值,以 BXAuth= 開頭\",\n \"iflow_cookie_hint\": \"直接提交 Cookie 以完成登入(無需開啟授權連結),伺服器端將自動儲存憑證。\",\n \"iflow_cookie_key_hint\": \"提示:需在平台上先建立 Key。\",\n \"iflow_cookie_button\": \"提交 Cookie 登入\",\n \"iflow_cookie_status_success\": \"Cookie 登入成功,憑證已儲存。\",\n \"iflow_cookie_status_error\": \"Cookie 登入失敗:\",\n \"iflow_cookie_status_duplicate\": \"設定檔重複:\",\n \"iflow_cookie_start_error\": \"提交 Cookie 登入失敗:\",\n \"iflow_cookie_config_duplicate\": \"偵測到設定檔已存在(重複),如需重新儲存請先刪除原檔案後重試。\",\n \"iflow_cookie_required\": \"請先填寫 Cookie 內容\",\n \"iflow_cookie_result_title\": \"Cookie 登入結果\",\n \"iflow_cookie_result_email\": \"帳號\",\n \"iflow_cookie_result_expired\": \"到期時間\",\n \"iflow_cookie_result_path\": \"儲存路徑\",\n \"iflow_cookie_result_type\": \"類型\",\n \"remote_access_disabled\": \"遠端存取不支援此登入方式,請從本地(localhost)存取\"\n },\n \"stats\": {\n \"success\": \"成功\",\n \"failure\": \"失敗\"\n },\n \"status_bar\": {\n \"success_short\": \"✓\",\n \"failure_short\": \"✗\",\n \"no_requests\": \"無請求\"\n },\n \"usage_stats\": {\n \"title\": \"使用統計\",\n \"total_requests\": \"總請求數\",\n \"success_requests\": \"成功請求\",\n \"failed_requests\": \"失敗請求\",\n \"total_tokens\": \"總 Token 數\",\n \"cached_tokens\": \"快取 Tokens\",\n \"cache_read_tokens\": \"快取讀取 Tokens\",\n \"cache_write_tokens\": \"快取寫入 Tokens\",\n \"reasoning_tokens\": \"推理 Tokens\",\n \"rpm_30m\": \"RPM\",\n \"tpm_30m\": \"TPM\",\n \"rate_30m\": \"近 30 分鐘速率\",\n \"model_name\": \"模型名稱\",\n \"model_price_settings\": \"模型定價設定\",\n \"saved_prices\": \"已儲存的定價\",\n \"requests_trend\": \"請求趨勢\",\n \"tokens_trend\": \"Token 使用趨勢\",\n \"api_details\": \"API 詳細統計\",\n \"by_hour\": \"依小時\",\n \"by_day\": \"依天\",\n \"range_filter\": \"時間範圍\",\n \"range_all\": \"全部時間\",\n \"range_1h\": \"最近 1 小時\",\n \"range_7h\": \"最近 7 小時\",\n \"range_24h\": \"最近 24 小時\",\n \"range_7d\": \"最近 7 天\",\n \"range_30d\": \"最近 30 天\",\n \"filter_all\": \"全部\",\n \"clear_filters\": \"清空篩選\",\n \"refresh\": \"重新整理\",\n \"export\": \"匯出資料\",\n \"import\": \"匯入資料\",\n \"export_csv\": \"匯出 CSV\",\n \"export_json\": \"匯出 JSON\",\n \"export_success\": \"使用統計已匯出\",\n \"import_success\": \"匯入完成:新增 {{added}},跳過 {{skipped}},總請求 {{total}},失敗 {{failed}}\",\n \"import_success_migrated_v1\": \"匯入完成:新增 {{added}},跳過 {{skipped}},總請求 {{total}},失敗 {{failed}}。Token contract 已從 schema v1 遷移到 v{{schemaVersion}}。\",\n \"import_invalid\": \"匯入檔案格式不正確\",\n \"import_review_title\": \"檢查使用統計匯入\",\n \"import_review_intro\": \"匯入採追加合併。請先檢查此快照,再合併到目前 Core 使用統計。\",\n \"import_review_summary\": \"版本 {{version}} · {{details}} 筆請求明細\",\n \"import_review_duplicates\": \"檔案內可能重複 {{count}} 筆\",\n \"import_review_overlaps\": \"與目前統計可能重疊 {{count}} 筆\",\n \"import_review_uncertain_identities\": \"{{count}} 筆明細缺少穩定時間戳,未參與重複與重疊偵測\",\n \"import_review_current_unavailable\": \"目前使用統計無法取得,因此無法完成重疊偵測。\",\n \"import_error_usage_version_unsupported\": \"不支援的使用統計匯出版本;僅可匯入 schema v1 或 v2。\",\n \"import_error_usage_shape_invalid\": \"使用統計匯出的巢狀結構或欄位類型無效。\",\n \"import_error_usage_v1_token_contract_invalid\": \"schema v1 Token contract 無效,無法安全遷移。\",\n \"import_error_usage_v1_cache_semantics_ambiguous\": \"schema v1 快取語義不明確;含快取的明細必須提供 uncached_input_tokens 才能無損遷移。\",\n \"import_error_usage_v2_token_contract_invalid\": \"無效的 canonical schema v2 Token contract。\",\n \"import_error_usage_aggregate_overflow\": \"匯入會導致 Core 使用統計彙總溢位;沒有合併任何使用資料。\",\n \"import_review_confirm\": \"仍然匯入\",\n \"chart_line_label_1\": \"曲線 1\",\n \"chart_line_label_2\": \"曲線 2\",\n \"chart_line_label_3\": \"曲線 3\",\n \"chart_line_label_4\": \"曲線 4\",\n \"chart_line_label_5\": \"曲線 5\",\n \"chart_line_label_6\": \"曲線 6\",\n \"chart_line_label_7\": \"曲線 7\",\n \"chart_line_label_8\": \"曲線 8\",\n \"chart_line_label_9\": \"曲線 9\",\n \"chart_line_hidden\": \"不顯示\",\n \"chart_line_actions_label\": \"曲線數量\",\n \"chart_line_add\": \"增加曲線\",\n \"chart_line_all\": \"全部\",\n \"chart_line_delete\": \"刪除曲線\",\n \"chart_line_hint\": \"最多同時顯示 9 條模型曲線\",\n \"no_data\": \"暫無資料\",\n \"loading_error\": \"載入失敗\",\n \"api_endpoint\": \"API 端點\",\n \"requests_count\": \"請求次數\",\n \"tokens_count\": \"Token 數量\",\n \"model_cache_rate\": \"快取讀取占比\",\n \"model_cache_rate_hint\": \"快取讀取占比 = 快取讀取 Token / 總輸入 Token。僅在該模型統計中的每個請求都有已記錄明細時顯示;否則為未設定。\",\n \"models\": \"模型統計\",\n \"success_rate\": \"成功率\",\n \"total_cost\": \"總花費\",\n \"total_cost_hint\": \"基於已設定的模型單價\",\n \"model_price_title\": \"模型定價\",\n \"model_price_reset\": \"清除定價\",\n \"model_price_model_label\": \"選擇模型\",\n \"model_price_select_placeholder\": \"選擇模型\",\n \"model_price_select_hint\": \"模型清單來自使用統計明細\",\n \"model_price_prompt\": \"提示定價\",\n \"model_price_completion\": \"補全定價\",\n \"model_price_cache\": \"快取讀取定價\",\n \"model_price_cache_write\": \"快取寫入定價\",\n \"model_price_cache_write_auto\": \"自動\",\n \"model_price_cache_write_hint\": \"留空時使用目前提示定價;既有「自動」設定也會跟隨此預設值。如需不同計費請明確填寫快取寫入定價。\",\n \"model_price_invalid\": \"請輸入大於或等於 0 的有效數字。\",\n \"model_price_save\": \"儲存定價\",\n \"model_price_empty\": \"尚未設定任何模型定價\",\n \"model_price_model\": \"模型\",\n \"model_price_saved\": \"模型定價已儲存\",\n \"model_price_model_required\": \"請選擇要設定定價的模型\",\n \"pricing_title\": \"價格估算工作台\",\n \"pricing_subtitle\": \"使用目前 API catalog、瀏覽器本機 Profile、usage Token、service tier 與 context band 統一計算 API 等價 USD。\",\n \"pricing_back\": \"返回使用統計\",\n \"pricing_open\": \"設定價格\",\n \"pricing_catalog\": \"預設 Catalog\",\n \"pricing_catalog_version\": \"Catalog 版本\",\n \"pricing_catalog_title\": \"預設價格表\",\n \"pricing_catalog_description\": \"全部 {{count}} 個已核實預設模型始終可見,不依賴 usage;Catalog 更新日期為 {{asOf}},每列均連結官方來源,不包含瀏覽器本機自訂覆蓋。\",\n \"pricing_catalog_unit\": \"USD / 1M Tokens\",\n \"pricing_catalog_table_label\": \"完整預設價格表\",\n \"pricing_catalog_context_band\": \"上下文檔位\",\n \"pricing_catalog_short_band\": \"短上下文\",\n \"pricing_catalog_long_band\": \"長上下文\",\n \"pricing_catalog_short_range\": \"< {{threshold}} 輸入 Token\",\n \"pricing_catalog_long_range\": \"≥ {{threshold}} 輸入 Token · 整筆請求\",\n \"pricing_catalog_all_contexts\": \"全部支援的上下文\",\n \"pricing_catalog_aliases\": \"別名:{{aliases}}\",\n \"pricing_catalog_model_notes\": \"模型說明\",\n \"pricing_catalog_verified_as_of\": \"核對日期:{{asOf}}\",\n \"pricing_catalog_unavailable\": \"不可用\",\n \"pricing_catalog_fast_explicit_summary\": \"入 {{input}} · 快取讀 {{cached}} · 寫 {{cacheWrite}} · 出 {{output}}\",\n \"pricing_source\": \"官方來源\",\n \"pricing_api_source\": \"API 價格來源\",\n \"pricing_estimate_notice\": \"本機 API 等價金額僅供參考,不是供應商帳單。\",\n \"pricing_browser_notice\": \"價格 Profile 僅儲存在目前瀏覽器,並會由此瀏覽器開啟的不同 Core 實例共用。\",\n \"pricing_history_notice\": \"所有歷史請求都會依目前 catalog 與 Profile 重新計算。\",\n \"pricing_migrated_v2\": \"舊版 v2 價格已完整保留為 v3 Profile;與預設短價一致的覆寫項可在確認後改用完整預設。\",\n \"pricing_profile_warning\": \"已儲存的價格 Profile 含有無效資料,請檢查目前預設值後再儲存。\",\n \"pricing_profile_save_failed\": \"無法在目前瀏覽器儲存價格 Profile。\",\n \"pricing_profile_saved\": \"價格 Profile 已儲存\",\n \"pricing_summary\": \"價格覆蓋摘要\",\n \"pricing_api_usd_estimate\": \"本機 API 等價估算(USD)\",\n \"pricing_api_usd\": \"本機 API 等價金額\",\n \"pricing_api_request_coverage\": \"本機估算請求覆蓋率\",\n \"pricing_requests_unit\": \"筆請求\",\n \"pricing_models_metric\": \"已定價模型 / 實際模型\",\n \"pricing_request_coverage\": \"已定價請求覆蓋率\",\n \"pricing_token_coverage\": \"已定價 Token 覆蓋率\",\n \"pricing_assumed_tier\": \"假設檔位請求數\",\n \"pricing_assumed_tier_hint\": \"歷史或未知檔位按 Std 估算\",\n \"pricing_cost_incomplete\": \"本機估算不完整;未匹配、不支援或缺少事件明細的用量未計入金額。\",\n \"pricing_partial_coverage\": \"目前為部分本機估算:請求覆蓋 {{request}}%,Token 覆蓋 {{token}}%。\",\n \"pricing_entry_title\": \"本機 API 等價估算\",\n \"pricing_entry_description\": \"金額完全由目前瀏覽器使用 catalog、Profile、Token、service tier 與 context band 計算。\",\n \"pricing_models_covered\": \"已定價 {{priced}} / {{total}} 個模型\",\n \"pricing_requests_covered\": \"請求覆蓋 {{percent}}%\",\n \"pricing_models_ratio\": \"模型覆蓋 {{percent}}%\",\n \"pricing_search\": \"搜尋實際用量模型\",\n \"pricing_filter\": \"價格狀態篩選\",\n \"pricing_filter_all\": \"全部\",\n \"pricing_filter_preset\": \"預設\",\n \"pricing_filter_custom\": \"自訂\",\n \"pricing_filter_unmatched\": \"本機未匹配\",\n \"pricing_filter_anomaly\": \"異常\",\n \"pricing_import_action\": \"匯入價格 Profile\",\n \"pricing_export_action\": \"匯出價格 Profile\",\n \"pricing_reset_action\": \"恢復全部預設\",\n \"pricing_export_success\": \"價格 Profile 已匯出\",\n \"pricing_import_title\": \"匯入價格 Profile\",\n \"pricing_import_confirm\": \"要用這個已通過驗證的檔案取代目前瀏覽器 v3 API 價格 Profile 嗎?使用統計不會變更。\",\n \"pricing_import_success\": \"價格 Profile 已匯入\",\n \"pricing_import_invalid\": \"價格 Profile 無效\",\n \"pricing_reset_title\": \"恢復全部預設價格\",\n \"pricing_reset_confirm\": \"清除全部 v3 API 價格覆蓋與別名嗎?使用統計將保持不變。\",\n \"pricing_reset_success\": \"已恢復預設價格\",\n \"pricing_empty_title\": \"尚無實際用量模型\",\n \"pricing_empty_description\": \"設定器只顯示真實 usage 中出現過的模型。請先產生或匯入使用統計。\",\n \"pricing_standard_short\": \"Standard 短上下文\",\n \"pricing_standard_api\": \"API Standard\",\n \"pricing_fast\": \"Fast\",\n \"pricing_fast_policies\": \"Fast 計費規則\",\n \"pricing_fast_policy_title\": \"API Priority 與 ChatGPT Standard/Fast 使用各自獨立的官方倍率。\",\n \"pricing_api_priority_multiplier\": \"API ×{{multiplier}}\",\n \"pricing_api_priority_multiplier_official\": \"官方 API ×{{multiplier}}\",\n \"pricing_api_priority_multiplier_custom\": \"自訂 API ×{{multiplier}}\",\n \"pricing_api_priority_explicit_rates\": \"API 獨立費率\",\n \"pricing_long_context\": \"長上下文\",\n \"pricing_usage\": \"目前用量\",\n \"pricing_no_usage_requests\": \"無用量請求\",\n \"pricing_no_usage_tokens\": \"無用量 Token\",\n \"pricing_matching_presets_notice\": \"有 {{count}} 個舊式自訂價格與預設短價一致,但仍在遮蔽官方 Fast 和長上下文規則。\",\n \"pricing_matching_presets_title\": \"改用完整預設\",\n \"pricing_matching_presets_confirm\": \"僅移除這 {{count}} 個相符的覆寫項,讓它們繼承官方 Fast 和長上下文規則?其他自訂價格和別名不會變更。\",\n \"pricing_matching_presets_action\": \"改用完整預設\",\n \"pricing_matching_presets_success\": \"{{count}} 個相符的覆寫項已改用完整預設\",\n \"pricing_unmatched\": \"無精確匹配\",\n \"pricing_match_custom\": \"自訂\",\n \"pricing_match_preset\": \"預設\",\n \"pricing_match_alias\": \"別名\",\n \"pricing_match_none\": \"未匹配\",\n \"pricing_anomaly\": \"需要檢查\",\n \"pricing_long_unsupported\": \"Fast 不支援長上下文\",\n \"pricing_fast_configured\": \"已設定 Fast\",\n \"pricing_long_requests\": \"{{count}} 筆長上下文請求\",\n \"pricing_short_only\": \"僅短上下文用量\",\n \"pricing_single_rate_card\": \"所有受支援上下文共用一張 API 費率表\",\n \"pricing_no_matches\": \"沒有模型符合目前搜尋與篩選條件。\",\n \"pricing_catalog_footer\": \"API Catalog 包含 {{count}} 個已核實模型 · 核對日期 {{asOf}} · 單位 USD / 1M Tokens。\",\n \"pricing_editor_title\": \"API Token 價格編輯器\",\n \"pricing_editor_domain_notice\": \"此 Profile 影響所有符合用量的本機 API 等價估算。\",\n \"pricing_alias\": \"精確別名目標\",\n \"pricing_alias_hint\": \"將目前實際模型名稱映射到一個精確的預設或自訂模型;啟用別名後不再直接編輯費率。\",\n \"pricing_alias_canonical_hint\": \"目前模型已精確命中預設,不需要設定別名。\",\n \"pricing_standard_rates\": \"Standard 費率 · USD / 1M\",\n \"pricing_fast_rates\": \"Fast 費率 · USD / 1M\",\n \"pricing_rate_input\": \"輸入\",\n \"pricing_rate_cached_input\": \"快取輸入\",\n \"pricing_rate_cache_write\": \"快取寫入\",\n \"pricing_rate_output\": \"輸出\",\n \"pricing_auto\": \"自動 / 繼承輸入價\",\n \"pricing_fast_mode_none\": \"暫不設定\",\n \"pricing_fast_mode_rates\": \"明確費率\",\n \"pricing_fast_mode_multiplier\": \"Standard × 倍率\",\n \"pricing_fast_multiplier\": \"Fast 倍率\",\n \"pricing_fast_long_supported\": \"允許 Fast 與長上下文組合\",\n \"pricing_long_enable\": \"啟用長上下文費率表\",\n \"pricing_long_threshold\": \"輸入 Token 門檻\",\n \"pricing_preview_affected\": \"受影響的用量請求\",\n \"pricing_preview_coverage\": \"本機請求覆蓋率\",\n \"pricing_preview_cost\": \"重算後本機估算\",\n \"pricing_editor_error_rates\": \"請為所有必填欄位輸入有效的非負費率。\",\n \"pricing_editor_error_threshold\": \"請輸入大於 0 的長上下文整數門檻。\",\n \"pricing_editor_error_multiplier\": \"請輸入大於 0 的 Fast 倍率。\",\n \"pricing_editor_error_profile\": \"別名或費率表與目前價格 Profile 衝突。\",\n \"pricing_restore_preset\": \"恢復預設\",\n \"pricing_delete_config\": \"刪除設定\",\n \"pricing_preset_restored\": \"已恢復預設\",\n \"pricing_custom_deleted\": \"已刪除自訂價格\",\n \"cost_trend\": \"花費統計\",\n \"pricing_api_usd_trend\": \"本機 API 等價估算趨勢(USD)\",\n \"cost_axis_label\": \"花費($)\",\n \"cost_need_price\": \"請先設定模型定價\",\n \"cost_need_usage\": \"暫無使用資料,無法計算花費\",\n \"cost_no_data\": \"沒有可計算的花費資料\",\n \"credential_stats\": \"憑證統計\",\n \"credential_name\": \"憑證\",\n \"token_breakdown\": \"Token 類型分布\",\n \"request_events_title\": \"請求事件明細\",\n \"request_events_filter_model\": \"模型\",\n \"request_events_filter_source\": \"來源\",\n \"request_events_filter_auth_index\": \"驗證索引\",\n \"request_events_filter_tier\": \"服務層級\",\n \"request_events_filter_effort\": \"推理強度\",\n \"request_events_filter_cache\": \"快取狀態\",\n \"request_events_numeric_filter\": \"Token 數值範圍\",\n \"request_events_numeric_metric\": \"Token 指標\",\n \"request_events_numeric_any\": \"選擇指標\",\n \"request_events_numeric_min\": \"最小值\",\n \"request_events_numeric_max\": \"最大值\",\n \"request_events_numeric_invalid\": \"請輸入非負整數邊界。\",\n \"request_events_numeric_range_invalid\": \"最小值不能大於最大值。\",\n \"request_events_numeric_help\": \"選擇 Token 指標,並填寫至少一個邊界;點擊「套用範圍」後才會更新結果。\",\n \"request_events_numeric_preview\": \"條件預覽\",\n \"request_events_numeric_active_label\": \"Token 範圍:{{filter}}\",\n \"request_events_numeric_clear\": \"清除範圍\",\n \"request_events_numeric_apply\": \"套用範圍\",\n \"request_events_cache_present\": \"有快取 Token\",\n \"request_events_cache_absent\": \"無快取 Token\",\n \"request_events_range_page\": \"跟隨頁面({{range}})\",\n \"request_events_column_settings\": \"欄位設定\",\n \"request_events_restore_default_columns\": \"恢復預設欄位\",\n \"request_events_timestamp\": \"時間\",\n \"request_events_source\": \"來源\",\n \"request_events_auth_index\": \"驗證索引\",\n \"request_events_tier\": \"服務層級\",\n \"request_events_tier_fast\": \"Fast\",\n \"request_events_tier_standard\": \"Std\",\n \"request_events_tier_tooltip_effective\": \"Core 已確認實際服務層級:{{tier}}。\",\n \"request_events_tier_tooltip_response\": \"上游回應回報服務層級:{{tier}}。\",\n \"request_events_tier_tooltip_request\": \"依請求層級顯示為 {{tier}},實際計費可能不同。\",\n \"request_events_tier_tooltip_assumed\": \"歷史或未知層級,依 Std 估算。\",\n \"request_events_tier_legacy_unknown\": \"歷史 / 未知\",\n \"request_events_tier_other\": \"其他:{{tier}}\",\n \"request_events_effort\": \"推理強度\",\n \"request_events_effort_legacy_unknown\": \"歷史 / 未知\",\n \"request_events_result\": \"結果\",\n \"time\": \"延遲\",\n \"avg_time\": \"平均延遲\",\n \"latency_unit_hint\": \"耗時取自後端欄位 {{field}},按 {{unit}} 解讀後再格式化顯示。\",\n \"duration_unit_d\": \"天\",\n \"duration_unit_h\": \"時\",\n \"duration_unit_m\": \"分\",\n \"duration_unit_s\": \"秒\",\n \"duration_unit_ms\": \"毫秒\",\n \"request_events_empty_title\": \"暫無請求事件\",\n \"request_events_empty_desc\": \"目前時間範圍內暫無可用的請求明細資料。\",\n \"request_events_no_result_title\": \"沒有符合結果\",\n \"request_events_no_result_desc\": \"請嘗試調整篩選條件,或清空目前篩選。\",\n \"request_events_count\": \"{{count}} 條事件\",\n \"request_events_limit_hint\": \"為確保渲染效能,僅展示 {{shown}} / {{total}} 條事件。\",\n \"request_events_total_input_tokens\": \"總輸入 Token\",\n \"request_events_non_cache_read_input_tokens\": \"非快取讀取輸入 Token\",\n \"request_events_non_cache_read_input_tokens_hint\": \"按總輸入 Token - 快取讀取 Token 在 Panel 本地計算,結果不小於 0。這是快取率的補集,不是一般提示詞輸入。快取寫入 Token 會另外展示及計價。\",\n \"request_events_total_output_tokens\": \"總輸出 Token\",\n \"request_events_explicit_output_tokens\": \"顯式輸出 Token\",\n \"request_events_output_tokens_hint\": \"顯式輸出 Token = 總輸出 Token - 推理 Token,結果不小於 0。\",\n \"request_events_cache_rate\": \"快取讀取占比\",\n \"request_events_cache_rate_hint\": \"快取讀取占比 = 快取讀取 Token / 總輸入 Token。0% 與低於 25% 為偏低,25% 至低於 60% 為一般,60% 及以上為較高;快取讀取超過總輸入時標記為異常。僅快取讀取數值依此狀態著色;其他 Token 數值保持中性。\",\n \"request_events_cache_rate_low\": \"偏低\",\n \"request_events_cache_rate_medium\": \"一般\",\n \"request_events_cache_rate_high\": \"較高\",\n \"request_events_cache_rate_anomaly\": \"異常\",\n \"request_events_cache_rate_cell_label\": \"快取讀取 {{tokens}} Token,占比 {{rate}},狀態{{tone}}\",\n \"request_events_cache_rate_anomaly_label\": \"快取讀取 Token({{tokens}})超過總輸入 Token({{input}})。\",\n \"request_events_table_region\": \"請求事件明細表\",\n \"input_tokens\": \"輸入 Tokens\",\n \"output_tokens\": \"輸出 Tokens\",\n \"last_updated\": \"更新於\"\n },\n \"service_health\": {\n \"title\": \"服務健康監測\",\n \"window\": \"最近 7 天\",\n \"oldest\": \"最早\",\n \"newest\": \"最新\"\n },\n \"logs\": {\n \"title\": \"記錄檢視\",\n \"runtime_unknown\": \"目前執行端:識別中\",\n \"runtime_cpa\": \"目前執行端:CPA\",\n \"runtime_home\": \"目前執行端:Home\",\n \"refresh_button\": \"重新整理記錄\",\n \"clear_button\": \"清空記錄\",\n \"fullscreen_button\": \"全螢幕顯示\",\n \"exit_fullscreen_button\": \"退出全螢幕\",\n \"download_button\": \"下載記錄\",\n \"error_log_button\": \"選擇錯誤記錄\",\n \"error_logs_modal_title\": \"錯誤請求記錄\",\n \"error_logs_description\": \"請選擇要開啟或下載的錯誤請求記錄檔案(僅在關閉請求記錄時產生)。\",\n \"error_logs_home_unavailable\": \"Home 模式下請在記錄內容頁查看資料庫記錄,錯誤請求記錄清單僅適用於 CPA 檔案記錄。\",\n \"error_logs_request_log_enabled\": \"目前已開啟請求記錄,按介面約定錯誤請求記錄清單會始終為空。關閉請求記錄後再重新整理即可查看。\",\n \"error_logs_empty\": \"暫無錯誤請求記錄檔案\",\n \"error_logs_load_error\": \"載入錯誤記錄清單失敗\",\n \"error_logs_size\": \"大小\",\n \"error_logs_modified\": \"最後修改\",\n \"error_logs_open\": \"開啟\",\n \"error_logs_download\": \"下載\",\n \"error_log_view_title\": \"錯誤請求記錄詳情\",\n \"error_log_open_failed\": \"開啟錯誤記錄失敗\",\n \"error_log_empty_content\": \"此錯誤記錄沒有內容\",\n \"error_log_copy_success\": \"錯誤記錄內容已複製\",\n \"error_log_download_success\": \"錯誤記錄下載成功\",\n \"request_log_download_title\": \"下載封包\",\n \"request_log_download_confirm\": \"是否要下載 id 為 {{id}} 的封包?\",\n \"request_log_download_success\": \"封包下載成功\",\n \"empty_title\": \"暫無記錄\",\n \"empty_desc\": \"當啟用「記錄到檔案」功能後,記錄將顯示在這裡\",\n \"cpa_file_logging_required\": \"目前連線的是 CPA,記錄檢視需要先開啟「記錄到檔案」。\",\n \"cpa_file_logging_required_title\": \"需要開啟檔案記錄\",\n \"cpa_file_logging_required_desc\": \"CPA 的記錄介面會讀取本機記錄檔。請在設定中開啟 logging-to-file 後再重新整理查看。\",\n \"file_logging_required\": \"目前記錄介面需要先開啟「記錄到檔案」後才能讀取檔案記錄。\",\n \"file_logging_required_title\": \"需要開啟檔案記錄\",\n \"file_logging_required_desc\": \"目前記錄介面會讀取本機記錄檔。請在設定中開啟 logging-to-file 後再重新整理查看。\",\n \"home_clear_unavailable\": \"Home 記錄來自資料庫查詢,目前不支援從這裡清空。\",\n \"log_content\": \"記錄內容\",\n \"loading\": \"正在載入記錄...\",\n \"load_error\": \"載入記錄失敗\",\n \"clear_confirm\": \"確定要清空所有記錄嗎?此操作無法還原!\",\n \"clear_success\": \"記錄已清空\",\n \"download_success\": \"記錄下載成功\",\n \"auto_refresh\": \"自動重新整理\",\n \"auto_refresh_enabled\": \"自動重新整理已開啟\",\n \"auto_refresh_disabled\": \"自動重新整理已關閉\",\n \"load_more_hint\": \"向上滾動載入更多\",\n \"hidden_lines\": \"已隱藏 {{count}} 行\",\n \"loaded_lines\": \"已載入 {{count}} 行\",\n \"filtered_lines\": \"已篩選 {{count}} 行\",\n \"hide_management_logs\": \"隱藏 {{prefix}} 記錄\",\n \"show_raw_logs\": \"顯示原始記錄\",\n \"show_raw_logs_hint\": \"直接顯示原始記錄文字,方便多行複製\",\n \"search_placeholder\": \"搜尋記錄內容或關鍵字\",\n \"filter_panel_title\": \"結構化篩選\",\n \"filter_panel_expand\": \"展開結構化篩選\",\n \"filter_panel_collapse\": \"收起結構化篩選\",\n \"filter_panel_active_count\": \"已選 {{count}} 項\",\n \"filter_method\": \"請求方法\",\n \"filter_status\": \"狀態碼\",\n \"filter_path\": \"路徑\",\n \"filter_path_empty\": \"暫無可篩選路徑\",\n \"filter_status_2xx\": \"2xx\",\n \"filter_status_3xx\": \"3xx\",\n \"filter_status_4xx\": \"4xx\",\n \"filter_status_5xx\": \"5xx\",\n \"clear_filters\": \"清空篩選\",\n \"search_empty_title\": \"未找到符合的記錄\",\n \"search_empty_desc\": \"嘗試更換關鍵字或清空篩選條件。\",\n \"double_click_copy_hint\": \"雙擊複製記錄原文\",\n \"copy_success\": \"已複製記錄原文\",\n \"copy_failed\": \"複製失敗\",\n \"lines\": \"行\",\n \"removed\": \"已篩選\",\n \"upgrade_required_title\": \"需要升級 CLI Proxy API\",\n \"upgrade_required_desc\": \"目前伺服器版本不支援記錄檢視功能,請升級到最新版本的 CLI Proxy API 以使用此功能。\"\n },\n \"config_management\": {\n \"title\": \"設定面板\",\n \"editor_title\": \"設定檔\",\n \"reload\": \"重新載入\",\n \"reload_confirm_message\": \"重新載入將捨棄你目前未儲存的修改,確定繼續嗎?\",\n \"save\": \"儲存\",\n \"description\": \"透過視覺化或原始檔方式編輯 config.yaml 設定檔\",\n \"status_idle\": \"等待操作\",\n \"status_loading\": \"載入設定中...\",\n \"status_loading_short\": \"載入中\",\n \"status_loaded\": \"設定已載入\",\n \"status_loaded_short\": \"已載入\",\n \"status_dirty\": \"有未儲存的變更\",\n \"status_dirty_short\": \"未儲存\",\n \"status_disconnected\": \"請先連線伺服器以載入設定\",\n \"status_disconnected_short\": \"未連線\",\n \"status_load_failed\": \"載入失敗\",\n \"status_load_failed_short\": \"失敗\",\n \"status_saving\": \"正在儲存設定...\",\n \"status_saving_short\": \"儲存中\",\n \"status_saved\": \"設定儲存完成\",\n \"status_save_failed\": \"儲存失敗\",\n \"save_success\": \"設定已儲存\",\n \"error_yaml_not_supported\": \"伺服器未回傳 YAML 格式,請確認 /config.yaml 介面可用\",\n \"visual_mode_unavailable\": \"YAML 語法修復前無法使用視覺化編輯\",\n \"visual_mode_unavailable_short\": \"YAML 錯誤\",\n \"validation_blocked_short\": \"待修復\",\n \"visual_mode_unavailable_detail\": \"目前設定存在無效 YAML,暫時無法使用視覺化編輯:{{message}}\",\n \"visual_mode_save_blocked\": \"請先修復 YAML 語法錯誤,再從視覺化模式儲存\",\n \"visual_mode_latest_yaml_invalid\": \"伺服器最新設定包含無效 YAML,請先切回原始碼模式檢查後再儲存視覺化修改:{{message}}\",\n \"editor_placeholder\": \"key: value\",\n \"search_placeholder\": \"搜尋設定內容...\",\n \"search_button\": \"搜尋\",\n \"search_no_results\": \"無結果\",\n \"search_prev\": \"上一個\",\n \"search_next\": \"下一個\",\n \"diff\": {\n \"title\": \"確認變更\",\n \"current\": \"目前設定\",\n \"modified\": \"修改後\",\n \"confirm\": \"確認儲存\",\n \"no_changes\": \"未偵測到變更\"\n },\n \"tabs\": {\n \"visual\": \"視覺化編輯\",\n \"source\": \"原始檔編輯\"\n },\n \"visual\": {\n \"notice\": \"視覺化模式涵蓋常用欄位,未涵蓋的設定仍需在原始檔模式中查看或編輯。\",\n \"quick_jump\": \"快速跳轉\",\n \"subsection_navigation\": \"{{section}}分組\",\n \"sections\": {\n \"server\": {\n \"title\": \"伺服器設定\",\n \"description\": \"基本伺服器設定\",\n \"listener_group_title\": \"監聽位址\",\n \"host\": \"主機位址\",\n \"port\": \"連接埠\"\n },\n \"tls\": {\n \"title\": \"TLS/SSL 設定\",\n \"description\": \"HTTPS 安全連線設定\",\n \"enable\": \"啟用 TLS\",\n \"enable_desc\": \"啟用 HTTPS 安全連線\",\n \"cert\": \"憑證檔案路徑\",\n \"key\": \"私鑰檔案路徑\"\n },\n \"remote\": {\n \"title\": \"遠端管理\",\n \"description\": \"遠端存取和控制面板設定\",\n \"allow_remote\": \"允許遠端存取\",\n \"allow_remote_desc\": \"允許從其他主機存取管理介面\",\n \"disable_panel\": \"停用控制面板\",\n \"disable_panel_desc\": \"停用內建的 Web 控制面板\",\n \"disable_auto_update_panel\": \"停用面板自動更新\",\n \"disable_auto_update_panel_desc\": \"首次缺失時仍可下載,但不再從 GitHub 背景自動更新\",\n \"secret_key\": \"管理金鑰\",\n \"secret_key_placeholder\": \"設定管理金鑰\",\n \"panel_repo\": \"面板儲存庫\"\n },\n \"auth\": {\n \"title\": \"驗證設定\",\n \"description\": \"API 金鑰與驗證檔案目錄設定\",\n \"group_title\": \"存取與驗證\",\n \"group_description\": \"遠端管理、控制面板存取、API 金鑰與驗證檔案\",\n \"credentials_title\": \"驗證檔案與 API 金鑰\",\n \"auth_dir\": \"驗證檔案目錄(auth-dir)\",\n \"auth_dir_hint\": \"存放驗證檔案的目錄路徑(支援 ~)\"\n },\n \"system\": {\n \"title\": \"系統設定\",\n \"description\": \"除錯、記錄、統計與效能調整設定\",\n \"group_navigation_label\": \"系統設定分組\",\n \"runtime_group_title\": \"執行與維運\",\n \"runtime_group_desc\": \"核心開關、記錄、用量統計與簽名處理\",\n \"plugins_group_title\": \"插件\",\n \"plugins_group_desc\": \"插件執行開關、來源與私有源認證\",\n \"headers_group_title\": \"請求標頭與 Codex 策略\",\n \"headers_group_desc\": \"Claude/Codex 預設請求標頭與異常推理重試策略\",\n \"network_group_title\": \"網路與路由\",\n \"network_group_desc\": \"代理、重試、工作階段親和、圖像與端點行為\",\n \"core_controls_title\": \"核心執行開關\",\n \"core_controls_desc\": \"集中管理診斷、高並行與檔案記錄等頂層開關\",\n \"plugin_runtime_title\": \"插件執行\",\n \"plugin_runtime_desc\": \"啟用或停用動態庫插件載入\",\n \"operations_title\": \"記錄、用量與簽名處理\",\n \"operations_desc\": \"設定保留上限、記憶體用量統計與 Antigravity 簽名行為\",\n \"debug\": \"除錯模式\",\n \"debug_desc\": \"啟用詳細的除錯記錄\",\n \"commercial_mode\": \"商業模式\",\n \"commercial_mode_desc\": \"停用高開銷中介軟體以支援高並行\",\n \"logging_to_file\": \"寫入記錄檔\",\n \"logging_to_file_desc\": \"將記錄儲存到檔案\",\n \"plugins_enabled\": \"啟用插件系統\",\n \"plugins_enabled_desc\": \"啟用標準動態庫插件載入;具體插件實例仍在插件管理頁啟停\",\n \"plugin_store_sources\": \"第三方插件源\",\n \"plugin_store_sources_desc\": \"追加插件商店 registry 源;內建官方源始終保留\",\n \"plugin_store_sources_label\": \"插件源 registry URL(plugins.store-sources)\",\n \"plugin_store_sources_placeholder\": \"https://example.com/cliproxy-plugins/registry.json\",\n \"plugin_store_sources_hint\": \"每列一個 registry.json URL,儲存時會過濾空列\",\n \"plugin_store_auth\": \"插件商店認證規則\",\n \"plugin_store_auth_desc\": \"為私有註冊表、GitHub Release 中繼資料或成品下載設定認證 Header\",\n \"plugin_store_auth_hint\": \"只填寫環境變數名稱,不要填寫真實 token。後端會從執行環境讀取對應值。\",\n \"store_auth_empty\": \"尚未設定認證規則。公開插件源不需要設定。\",\n \"store_auth_rule\": \"認證規則\",\n \"store_auth_add\": \"新增認證規則\",\n \"store_auth_match\": \"符合的 URL 前綴\",\n \"store_auth_type\": \"認證類型\",\n \"store_auth_apply_to\": \"套用到\",\n \"store_auth_apply_to_hint\": \"未選擇時,該規則會套用到所有請求類型。\",\n \"store_auth_apply_registry\": \"註冊表\",\n \"store_auth_apply_metadata\": \"中繼資料\",\n \"store_auth_apply_artifact\": \"成品\",\n \"store_auth_type_none\": \"無\",\n \"store_auth_type_bearer\": \"Bearer\",\n \"store_auth_type_basic\": \"Basic\",\n \"store_auth_type_header\": \"自訂 Header\",\n \"store_auth_type_github_token\": \"GitHub token\",\n \"store_auth_token_env\": \"Token 環境變數\",\n \"store_auth_username_env\": \"使用者名稱環境變數\",\n \"store_auth_password_env\": \"密碼環境變數\",\n \"store_auth_header_name\": \"Header 名稱\",\n \"store_auth_header_value_env\": \"Header 值環境變數\",\n \"store_auth_allow_insecure\": \"允許不安全的 HTTP URL\",\n \"logs_max_size\": \"記錄檔大小限制(MB)\",\n \"error_logs_max_files\": \"錯誤記錄保留檔案數\",\n \"usage_statistics_enabled\": \"啟用記憶體用量統計\",\n \"usage_statistics_enabled_desc\": \"啟用記憶體中的請求用量聚合\",\n \"redis_usage_retention\": \"Redis 用量佇列保留秒數\",\n \"redis_usage_retention_hint\": \"RESP 介面 LPOP/RPOP 用量佇列的記憶體保留時間,最大 3600 秒\",\n \"antigravity_signature_cache\": \"啟用 Antigravity 簽名快取\",\n \"antigravity_signature_cache_desc\": \"優先使用並校驗快取的 thinking block 簽名\",\n \"antigravity_signature_strict\": \"嚴格校驗旁路簽名\",\n \"antigravity_signature_strict_desc\": \"僅在關閉簽名快取時生效,按完整 Claude protobuf 樹校驗\"\n },\n \"headers\": {\n \"title\": \"Header 預設值\",\n \"description\": \"Claude 與 Codex OAuth 請求在客戶端缺少 Header 時使用的預設值\",\n \"claude_title\": \"Claude Header Defaults\",\n \"codex_title\": \"Codex Header Defaults\",\n \"user_agent\": \"User-Agent\",\n \"package_version\": \"Package Version\",\n \"runtime_version\": \"Runtime Version\",\n \"os\": \"OS\",\n \"arch\": \"Arch\",\n \"timeout\": \"Timeout\",\n \"stabilize_device\": \"穩定設備指紋\",\n \"stabilize_device_desc\": \"固定 OS/Arch,並按憑證/API Key 穩定軟體指紋\",\n \"beta_features\": \"實驗功能\",\n \"codex_identity_confuse\": \"Codex 身分混淆\",\n \"codex_identity_confuse_desc\": \"在填滿優先或會話黏性路由下,按所選驗證重映射 Codex 快取鍵與安裝身分\",\n \"codex_abnormal_reasoning_retry_title\": \"Codex 降智對抗策略\",\n \"codex_abnormal_reasoning_retry_desc\": \"偵測異常推理權杖數後,控制重試、對沖請求、最終交付與客戶端用量顯示\",\n \"codex_abnormal_reasoning_retry_summary_title\": \"目前策略概覽\",\n \"codex_abnormal_reasoning_retry_summary_desc\": \"把開關、重試動作與交付結果拆開顯示,便於確認策略是否真的依預期生效。\",\n \"codex_abnormal_reasoning_retry_summary_action\": \"命中動作\",\n \"codex_abnormal_reasoning_retry_summary_stream_buffer\": \"串流快取\",\n \"codex_abnormal_reasoning_retry_summary_hedged\": \"對沖模式\",\n \"codex_abnormal_reasoning_retry_summary_distinct_auth\": \"不同驗證\",\n \"codex_abnormal_reasoning_retry_summary_on\": \"已開啟\",\n \"codex_abnormal_reasoning_retry_summary_off\": \"已關閉\",\n \"codex_abnormal_reasoning_retry_group_switches_title\": \"基礎開關\",\n \"codex_abnormal_reasoning_retry_group_switches_desc\": \"先決定是否啟用策略、是否快取串流回應,以及是否使用第二路請求。\",\n \"codex_abnormal_reasoning_retry_group_retry_title\": \"重試調度\",\n \"codex_abnormal_reasoning_retry_group_retry_desc\": \"設定命中後的動作、快取上限、第二路請求延遲和對沖回傳模式。\",\n \"codex_abnormal_reasoning_retry_group_match_title\": \"命中條件\",\n \"codex_abnormal_reasoning_retry_group_match_desc\": \"限定模型、推理強度、異常推理權杖數和最大重試次數。\",\n \"codex_abnormal_reasoning_retry_group_delivery_title\": \"交付與用量\",\n \"codex_abnormal_reasoning_retry_group_delivery_desc\": \"控制重試耗盡後的回傳、客戶端可見用量,以及多候選回應的選擇方式。\",\n \"codex_abnormal_reasoning_retry_group_scope_title\": \"驗證範圍\",\n \"codex_abnormal_reasoning_retry_group_scope_desc\": \"按驗證類型或驗證 ID 縮小策略影響範圍,避免誤傷其他憑證。\",\n \"codex_abnormal_reasoning_retry_enabled\": \"策略快捷開關\",\n \"codex_abnormal_reasoning_retry_enabled_desc\": \"開啟時自動重試,關閉時不改變回應;僅觀察模式請在下方重試動作中選擇\",\n \"codex_abnormal_reasoning_retry_action_label\": \"重試動作\",\n \"codex_abnormal_reasoning_retry_action_hint\": \"選擇命中異常推理權杖數後的處理動作\",\n \"codex_abnormal_reasoning_retry_action_retry\": \"自動重試\",\n \"codex_abnormal_reasoning_retry_action_observe_only\": \"僅觀察\",\n \"codex_abnormal_reasoning_retry_action_disabled\": \"關閉\",\n \"codex_abnormal_reasoning_retry_action_retry_desc\": \"目前會丟棄命中異常推理權杖數的回應,並依重試上限重新請求。\",\n \"codex_abnormal_reasoning_retry_action_observe_only_desc\": \"目前只記錄命中結果,不會改變回傳給客戶端的回應。\",\n \"codex_abnormal_reasoning_retry_action_disabled_desc\": \"目前不啟用降智對抗策略,符合條件不會影響回應交付。\",\n \"codex_abnormal_reasoning_retry_stream_buffer\": \"快取串流回應\",\n \"codex_abnormal_reasoning_retry_stream_buffer_desc\": \"在回應完成前暫存串流片段,命中異常時可避免提前交付異常內容\",\n \"codex_abnormal_reasoning_retry_stream_buffer_max_bytes_label\": \"串流快取上限位元組數\",\n \"codex_abnormal_reasoning_retry_stream_buffer_max_bytes_hint\": \"預設 16 MiB(16777216);填 0 也使用安全預設值。超出後目前串流回應會以 502 失敗關閉,不會透傳部分內容\",\n \"codex_abnormal_reasoning_retry_hedged_retry_enabled\": \"啟用對沖重試\",\n \"codex_abnormal_reasoning_retry_hedged_retry_enabled_desc\": \"首個異常回應被丟棄後,延遲啟動第二路請求以降低尾端延遲\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_label\": \"對沖重試模式\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_hint\": \"選擇第二路請求啟動後的回傳策略\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_quality\": \"品質優先(預設)\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_speed\": \"速度優先\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_quality_desc\": \"目前會等待已發出的請求通道,再依交付策略挑選更穩的結果。\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_speed_desc\": \"目前會在首個可交付請求通道成功後儘快回傳,以較短等待換取回應速度。\",\n \"codex_abnormal_reasoning_retry_hedge_delay_ms_label\": \"對沖延遲(毫秒)\",\n \"codex_abnormal_reasoning_retry_hedge_delay_ms_hint\": \"異常請求嘗試觸發重試後,啟動第二路請求前等待的時間\",\n \"codex_abnormal_reasoning_retry_require_distinct_auth\": \"要求不同驗證\",\n \"codex_abnormal_reasoning_retry_require_distinct_auth_desc\": \"第二路對沖請求優先選擇不同的驗證 ID\",\n \"codex_abnormal_reasoning_retry_model_contains_label\": \"模型包含\",\n \"codex_abnormal_reasoning_retry_model_contains_hint\": \"請求模型或解析後的上游模型包含任一值即符合\",\n \"codex_abnormal_reasoning_retry_reasoning_efforts_label\": \"推理強度\",\n \"codex_abnormal_reasoning_retry_reasoning_efforts_hint\": \"可選的 Codex 推理強度過濾值,例如 high 或 xhigh;留空表示不限制強度\",\n \"codex_abnormal_reasoning_retry_reasoning_tokens_label\": \"推理權杖數\",\n \"codex_abnormal_reasoning_retry_reasoning_tokens_hint\": \"觸發策略的非負整數權杖數\",\n \"codex_abnormal_reasoning_retry_max_retries_label\": \"最大異常重試次數\",\n \"codex_abnormal_reasoning_retry_max_retries_hint\": \"異常推理偵測觸發的最大額外重試次數;填 0 表示記錄失敗嘗試並直接回傳 502\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_label\": \"超過上限後的策略\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_hint\": \"選擇異常重試次數超過最大值後的處理方式\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_error\": \"回傳 502\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_pass_through\": \"放行異常回應\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_error_desc\": \"超過重試上限後回傳 502,避免把異常回應交付給客戶端。\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_pass_through_desc\": \"超過重試上限後放行最後的異常回應,優先保持請求可回傳。\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_label\": \"客戶端用量聚合\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_hint\": \"選擇客戶端可見用量的聚合方式;管理面板用量統計仍按真實請求嘗試記錄\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_delivered_only\": \"僅統計交付回應(預設)\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum\": \"合併所有嘗試\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum_with_delivered_total\": \"合併明細,保留交付總數\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_delivered_only_desc\": \"目前客戶端只看到最終交付回應的用量;管理面板仍記錄每次真實嘗試。\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum_desc\": \"目前客戶端會看到所有請求嘗試的用量逐項累加。\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum_with_delivered_total_desc\": \"目前會累加明細欄位,但總數沿用最終交付回應,便於相容只讀取總數的客戶端。\",\n \"codex_abnormal_reasoning_retry_delivery_policy_label\": \"交付策略\",\n \"codex_abnormal_reasoning_retry_delivery_policy_hint\": \"只在候選池同時存在正常與異常回應時生效\",\n \"codex_abnormal_reasoning_retry_delivery_policy_best_non_special\": \"最佳正常回應(預設)\",\n \"codex_abnormal_reasoning_retry_delivery_policy_first_non_special\": \"首個正常回應\",\n \"codex_abnormal_reasoning_retry_delivery_policy_max_output\": \"輸出最多的回應\",\n \"codex_abnormal_reasoning_retry_delivery_policy_latest\": \"最新回應\",\n \"codex_abnormal_reasoning_retry_delivery_policy_best_non_special_desc\": \"目前會優先交付品質最高的正常回應。\",\n \"codex_abnormal_reasoning_retry_delivery_policy_first_non_special_desc\": \"目前會交付最先成功的正常回應,減少等待時間。\",\n \"codex_abnormal_reasoning_retry_delivery_policy_max_output_desc\": \"目前會交付輸出量最大的候選回應,優先保留內容量。\",\n \"codex_abnormal_reasoning_retry_delivery_policy_latest_desc\": \"目前會交付最後完成的候選回應,依最新嘗試結果收斂。\",\n \"codex_abnormal_reasoning_retry_fallback_policy_label\": \"兜底策略\",\n \"codex_abnormal_reasoning_retry_fallback_policy_hint\": \"所有候選仍異常且重試耗盡時生效\",\n \"codex_abnormal_reasoning_retry_fallback_policy_best_special\": \"最佳異常回應(預設)\",\n \"codex_abnormal_reasoning_retry_fallback_policy_max_output_special\": \"輸出最多的異常回應\",\n \"codex_abnormal_reasoning_retry_fallback_policy_latest_special\": \"最新異常回應\",\n \"codex_abnormal_reasoning_retry_fallback_policy_best_special_desc\": \"目前在只能放行異常候選時,選擇品質最高的異常回應。\",\n \"codex_abnormal_reasoning_retry_fallback_policy_max_output_special_desc\": \"目前在只能放行異常候選時,選擇輸出量最大的異常回應。\",\n \"codex_abnormal_reasoning_retry_fallback_policy_latest_special_desc\": \"目前在只能放行異常候選時,選擇最後完成的異常回應。\",\n \"codex_abnormal_reasoning_retry_auth_kinds_label\": \"驗證類型\",\n \"codex_abnormal_reasoning_retry_auth_kinds_hint\": \"正規化後的驗證類型白名單;預設 OAuth 不符合 API Key\",\n \"codex_abnormal_reasoning_retry_auth_ids_label\": \"驗證 ID\",\n \"codex_abnormal_reasoning_retry_auth_ids_hint\": \"可選的精確驗證 ID 白名單;留空表示不限制 ID\"\n },\n \"network\": {\n \"title\": \"網路設定\",\n \"description\": \"代理、重試和路由設定\",\n \"proxy_url\": \"代理 URL\",\n \"request_retry\": \"請求重試次數\",\n \"max_retry_credentials\": \"最大重試憑證數\",\n \"max_retry_credentials_hint\": \"留空表示不設定;設為 0 表示保留 legacy 行為,並嘗試所有可用憑證。\",\n \"max_retry_interval\": \"最大重試間隔(秒)\",\n \"transient_error_cooldown_seconds\": \"瞬時錯誤冷卻時間(秒)\",\n \"transient_error_cooldown_seconds_hint\": \"留空使用 Core 預設值。0 保留舊的 60 秒冷卻;負數停用瞬時錯誤冷卻。\",\n \"auth_auto_refresh_workers\": \"驗證自動刷新 Worker 數\",\n \"auth_auto_refresh_workers_hint\": \"大於 0 時覆蓋預設 Worker 數(16)\",\n \"disable_image_generation\": \"停用圖像生成\",\n \"disable_image_generation_hint\": \"false 啟用自動圖像工具注入;true 全部停用;chat 從非圖片端點移除 image_generation;passthrough 在非圖片端點不注入也不刪除客戶端工具(圖片端點與 chat 相同)\",\n \"disable_image_generation_false\": \"false(啟用)\",\n \"disable_image_generation_true\": \"true(全部停用)\",\n \"disable_image_generation_chat\": \"chat(從非圖片端點移除圖像工具)\",\n \"disable_image_generation_passthrough\": \"passthrough(原樣保留客戶端工具)\",\n \"gpt_image_2_base_model\": \"GPT Image 2 基礎模型\",\n \"gpt_image_2_base_model_hint\": \"代理 gpt-image-2 圖片請求時使用的主線模型;留空或非法時後端使用預設值\",\n \"routing_strategy\": \"路由策略\",\n \"routing_strategy_hint\": \"選擇憑證選擇策略\",\n \"strategy_round_robin\": \"輪詢(Round Robin)\",\n \"strategy_fill_first\": \"填充優先(Fill First)\",\n \"session_affinity_ttl\": \"會話黏性 TTL\",\n \"force_model_prefix\": \"強制模型前綴\",\n \"force_model_prefix_desc\": \"未帶前綴的模型請求只使用無前綴憑證\",\n \"passthrough_headers\": \"透傳上游回應 Header\",\n \"passthrough_headers_desc\": \"將過濾後的上游回應 Header 轉發給下游客戶端\",\n \"disable_cooling\": \"停用冷卻調度\",\n \"disable_cooling_desc\": \"全域停用驗證/模型失敗後的冷卻視窗\",\n \"session_affinity\": \"會話黏性路由\",\n \"ws_auth\": \"WebSocket 驗證\",\n \"ws_auth_desc\": \"啟用 WebSocket 連線驗證(/v1/ws)\",\n \"enable_gemini_cli_endpoint\": \"啟用 Gemini CLI 內部端點\",\n \"enable_gemini_cli_endpoint_desc\": \"啟用 /v1internal:* 相容端點\"\n },\n \"quota\": {\n \"title\": \"配額回退\",\n \"description\": \"配額耗盡時的回退策略\",\n \"switch_project\": \"切換專案\",\n \"switch_project_desc\": \"配額耗盡時自動切換到其他專案\",\n \"switch_preview_model\": \"切換預覽模型\",\n \"switch_preview_model_desc\": \"配額耗盡時切換到預覽版本模型\",\n \"antigravity_credits\": \"使用Antigravity Credits\"\n },\n \"streaming\": {\n \"title\": \"串流傳輸設定\",\n \"description\": \"Keepalive 與 bootstrap 重試設定\",\n \"keepalive_seconds\": \"Keepalive 秒數\",\n \"keepalive_hint\": \"設定為 0 或留空表示停用 keepalive\",\n \"bootstrap_retries\": \"Bootstrap 重試次數\",\n \"bootstrap_hint\": \"串流傳輸啟動時(首包前)的重試次數\",\n \"nonstream_keepalive\": \"非串流 Keepalive 間隔(秒)\",\n \"nonstream_keepalive_hint\": \"非串流回應時每隔 N 秒發送空行以防止閒置逾時,設定為 0 或留空表示停用\",\n \"disabled\": \"已停用\"\n },\n \"payload\": {\n \"title\": \"Payload 設定\",\n \"description\": \"預設值、原始 JSON 規則、覆寫規則與篩選規則\",\n \"default_rules\": \"預設規則\",\n \"default_rules_desc\": \"當請求中未指定參數時,使用這些預設值\",\n \"default_raw_rules\": \"預設 Raw 規則\",\n \"default_raw_rules_desc\": \"當請求中未指定參數時,按原始 JSON 片段寫入這些值,例如 true、123、\\\"high\\\" 或 {\\\"type\\\":\\\"object\\\"}\",\n \"override_rules\": \"覆寫規則\",\n \"override_rules_desc\": \"強制覆寫請求中的參數值\",\n \"override_raw_rules\": \"覆寫 Raw 規則\",\n \"override_raw_rules_desc\": \"始終按原始 JSON 片段覆寫參數值,適合 response_format、schema 等複雜欄位\",\n \"filter_rules\": \"篩選規則\",\n \"filter_rules_desc\": \"透過 JSON Path 預篩選上游請求體,自動剔除不合規/冗餘參數(Request Sanitization)\"\n }\n },\n \"api_keys\": {\n \"label\": \"API 金鑰清單(api-keys)\",\n \"add\": \"新增 API 金鑰\",\n \"generate\": \"產生\",\n \"empty\": \"暫無 API 金鑰\",\n \"hint\": \"每個條目代表一個 API 金鑰(與「API 金鑰管理」頁面樣式一致)\",\n \"edit_title\": \"編輯 API 金鑰\",\n \"add_title\": \"新增 API 金鑰\",\n \"input_label\": \"API 金鑰\",\n \"input_placeholder\": \"貼上你的 API 金鑰\",\n \"input_hint\": \"此處僅修改本地設定檔內容,不會自動同步到 API 金鑰管理介面\",\n \"error_empty\": \"請輸入 API 金鑰\",\n \"error_invalid\": \"API 金鑰包含無效字元\"\n },\n \"payload_rules\": {\n \"rule\": \"規則\",\n \"models\": \"適用模型\",\n \"model_name\": \"模型名稱\",\n \"model_scope\": \"模型匹配範圍\",\n \"scope_any\": \"任意(目前行為)\",\n \"scope_requested\": \"使用者請求模型\",\n \"scope_upstream\": \"上游模型\",\n \"scope_custom\": \"自訂:{{scope}}\",\n \"provider_type\": \"供應商類型\",\n \"add_model\": \"新增模型\",\n \"params\": \"參數設定\",\n \"remove_params\": \"移除參數\",\n \"json_path\": \"JSON 路徑(如 temperature)\",\n \"json_path_filter\": \"JSON 路徑(gjson/sjson),如 generationConfig.thinkingConfig.thinkingBudget\",\n \"param_type\": \"參數類型\",\n \"param_value\": \"參數值\",\n \"add_param\": \"新增參數\",\n \"no_rules\": \"暫無規則\",\n \"add_rule\": \"新增規則\",\n \"provider_default\": \"預設\",\n \"provider_openai\": \"OpenAI\",\n \"provider_openai_response\": \"OpenAI Response\",\n \"provider_responses\": \"Responses\",\n \"provider_gemini\": \"Gemini\",\n \"provider_claude\": \"Claude\",\n \"provider_codex\": \"Codex\",\n \"provider_antigravity\": \"Antigravity\",\n \"advanced\": \"進階\",\n \"hide_advanced\": \"收起進階\",\n \"from_protocol\": \"來源協議(from-protocol)\",\n \"headers\": \"請求 Header 匹配\",\n \"header_name\": \"Header 名稱\",\n \"header_value\": \"Header 值\",\n \"add_header\": \"新增 Header\",\n \"match\": \"必須匹配(match)\",\n \"notMatch\": \"不得匹配(not-match)\",\n \"exist\": \"必須存在(exist)\",\n \"notExist\": \"不得存在(not-exist)\",\n \"condition_path\": \"匹配路徑\",\n \"condition_value\": \"匹配值\",\n \"add_condition\": \"新增條件\",\n \"value_type_string\": \"字串\",\n \"value_type_number\": \"數字\",\n \"value_type_boolean\": \"布林\",\n \"value_type_json\": \"JSON\",\n \"value_string\": \"字串值\",\n \"value_number\": \"數字值(如 0.7)\",\n \"value_boolean\": \"true 或 false\",\n \"value_json\": \"JSON 值\",\n \"value_raw_json\": \"原始 JSON 片段,如 true、123、\\\"high\\\" 或 {\\\"type\\\":\\\"object\\\"}\",\n \"value_default\": \"值\",\n \"boolean_true\": \"true\",\n \"boolean_false\": \"false\"\n },\n \"validation\": {\n \"validation_blocked\": \"請先修復表單驗證錯誤再儲存\",\n \"port_range\": \"請輸入 1 到 65535 之間的有效連接埠\",\n \"non_negative_integer\": \"請輸入非負整數\",\n \"integer\": \"請輸入整數\",\n \"integer_range_1_3600\": \"請輸入 1 到 3600 之間的整數\",\n \"payload_invalid_number\": \"請輸入有效數字\",\n \"payload_invalid_boolean\": \"請選擇 true 或 false\",\n \"payload_invalid_json\": \"請輸入有效的 JSON\"\n },\n \"common\": {\n \"edit\": \"編輯\",\n \"delete\": \"刪除\",\n \"cancel\": \"取消\",\n \"update\": \"更新\",\n \"add\": \"新增\"\n }\n }\n },\n \"quota_management\": {\n \"title\": \"配額管理\",\n \"description\": \"集中查看 OAuth 配額與剩餘情況\",\n \"refresh_files\": \"重新整理驗證檔案\",\n \"refresh_files_and_quota\": \"重新整理驗證檔案&配額\",\n \"refresh_all_credentials\": \"重新整理全部憑證\",\n \"card_idle_hint\": \"請使用頂部「重新整理全部憑證」按鈕取得最新配額。\"\n },\n \"plugin_management\": {\n \"title\": \"插件管理\",\n \"description\": \"查看已發現和已註冊的插件,管理實例開關、設定欄位和資源入口。\",\n \"refresh\": \"重新整理\",\n \"load_failed\": \"載入插件失敗\",\n \"config_load_failed\": \"讀取插件設定失敗\",\n \"config_not_found\": \"無法讀取插件設定,後端未找到該插件。\",\n \"unsupported_backend\": \"目前後端未暴露插件管理 API。請使用包含插件管理介面的新版後端建置,並重新啟動服務。\",\n \"runtime_unavailable_title\": \"插件執行階段不可用\",\n \"runtime_unavailable_desc\": \"目前 plugins.enabled 為 true,但伺服器回傳 x-cpa-support-plugin: 0。目前二進位檔不包含插件執行階段支援,因此插件管理與商店操作會繼續鎖定。請部署適用於目前平台且包含插件執行階段的 Core 建置並重新啟動後端;Linux 環境通常需要啟用 CGO 並使用相容的 libc。若不打算使用插件,請關閉 plugins.enabled。\",\n \"runtime_probe_failed_desc\": \"目前 plugins.enabled 為 true,但面板既無法透過 x-cpa-support-plugin 確認執行階段能力,也無法透過插件 API 完成相容性探測。插件操作會繼續鎖定。請檢查後端建置及反向代理/CORS 的 header 公開設定,然後重新連線。\",\n \"runtime_unavailable_action\": \"查看設定\",\n \"global_status\": \"全域狀態\",\n \"global_enabled\": \"已啟用\",\n \"global_disabled\": \"已停用\",\n \"global_disabled_hint\": \"目前 plugins.enabled 為 false,插件實例即使啟用也不會生效。\",\n \"plugins_dir\": \"插件目錄\",\n \"discovered\": \"發現插件\",\n \"effective\": \"生效插件\",\n \"search_placeholder\": \"搜尋插件 ID、名稱、作者或資源...\",\n \"search_label\": \"搜尋插件\",\n \"no_plugins\": \"暫無插件\",\n \"no_plugins_desc\": \"未從插件目錄或執行時註冊表中發現插件。\",\n \"configured\": \"已設定\",\n \"not_configured\": \"未設定\",\n \"registered\": \"已註冊\",\n \"not_registered\": \"未註冊\",\n \"oauth\": \"OAuth\",\n \"status_effective\": \"生效中\",\n \"status_inactive\": \"未生效\",\n \"version_label\": \"版本\",\n \"author_label\": \"作者\",\n \"path_label\": \"路徑\",\n \"edit_config\": \"編輯設定\",\n \"open_resource\": \"開啟資源\",\n \"open_repository\": \"開啟倉庫\",\n \"config_title\": \"設定 {{name}}\",\n \"base_settings\": \"基礎設定\",\n \"enabled\": \"啟用\",\n \"enabled_hint\": \"控制 plugins.configs 中該插件實例的 enabled 欄位。\",\n \"priority\": \"優先級\",\n \"config_fields\": \"設定欄位\",\n \"no_config_fields\": \"該插件沒有宣告可視化設定欄位。\",\n \"select_placeholder\": \"請選擇\",\n \"array_item_placeholder\": \"輸入陣列項目\",\n \"add_array_item\": \"新增陣列項目\",\n \"remove_array_item\": \"刪除陣列項目\",\n \"delete_plugin\": \"刪除\",\n \"delete_confirm_title\": \"刪除插件\",\n \"delete_confirm_message\": \"確定刪除 {{name}}({{id}})嗎?這會移除本機插件檔案和已儲存設定。\",\n \"delete_success\": \"插件已刪除\",\n \"delete_failed\": \"插件刪除失敗\",\n \"delete_restart_required\": \"已載入的插件需要重新啟動後端後才能移除。\",\n \"toggle_success\": \"插件狀態已更新\",\n \"toggle_failed\": \"插件狀態更新失敗\",\n \"runtime_pending\": \"插件變更已儲存,但執行時狀態仍在等待更新。請稍後重新整理或檢查後端日誌。\",\n \"save_success\": \"插件設定已儲存\",\n \"save_failed\": \"插件設定儲存失敗\",\n \"validation_failed\": \"請先修復插件設定表單錯誤\",\n \"invalid_priority\": \"請輸入整數優先級\",\n \"invalid_number\": \"請輸入有效數字\",\n \"invalid_integer\": \"請輸入有效整數\",\n \"invalid_json\": \"請輸入有效 JSON\",\n \"expected_array\": \"請輸入 JSON 陣列\",\n \"expected_object\": \"請輸入 JSON 物件\",\n \"invalid_enum\": \"請選擇宣告的枚舉值\"\n },\n \"plugin_store\": {\n \"title\": \"插件商店\",\n \"description\": \"瀏覽插件註冊表,為目前後端安裝或更新插件。\",\n \"description_show_more\": \"展開描述\",\n \"description_show_less\": \"收起描述\",\n \"source_name\": \"來源:{{source}}\",\n \"cli_proxy_api_source\": \"CLIProxyAPI來源\",\n \"refresh\": \"重新整理\",\n \"retry\": \"重試\",\n \"load_failed\": \"插件商店載入失敗\",\n \"unsupported_backend\": \"目前後端未提供插件商店 API。請使用包含插件商店介面的新後端建置,並重新啟動服務。\",\n \"registry_failed\": \"插件註冊表請求失敗\",\n \"global_status\": \"全域狀態\",\n \"global_enabled\": \"已啟用\",\n \"global_disabled\": \"已停用\",\n \"global_disabled_hint\": \"目前 plugins.enabled 為 false,已安裝的插件不會生效。\",\n \"plugins_dir\": \"插件目錄\",\n \"stat_available\": \"可用插件\",\n \"search_placeholder\": \"搜尋插件 ID、名稱、作者或標籤...\",\n \"search_label\": \"搜尋插件商店\",\n \"filter_label\": \"依安裝狀態篩選\",\n \"filter_all\": \"全部\",\n \"filter_installed\": \"已安裝\",\n \"filter_not_installed\": \"未安裝\",\n \"filter_updates\": \"可更新\",\n \"badge_installed\": \"已安裝\",\n \"badge_update\": \"可更新\",\n \"badge_effective\": \"生效中\",\n \"version_arrow\": \"v{{from}} → v{{to}}\",\n \"install_type\": \"安裝方式:{{type}}\",\n \"platforms\": \"平台:{{platforms}}\",\n \"auth_required\": \"需要認證\",\n \"auth_configured\": \"認證已設定\",\n \"auth_required_hint\": \"安裝該來源或成品 URL 前,請先設定 plugins.store-auth\",\n \"source_errors_title\": \"部分插件源載入失敗\",\n \"install\": \"安裝\",\n \"update\": \"更新\",\n \"manage\": \"管理\",\n \"install_confirm_title\": \"安裝插件\",\n \"install_confirm_message\": \"將從插件註冊表下載 {{target}} 並安裝到本機插件目錄,是否繼續?\",\n \"update_confirm_title\": \"更新插件\",\n \"update_confirm_message\": \"將下載並安裝 {{target}},是否繼續?\",\n \"install_version_label\": \"版本\",\n \"install_version_latest\": \"最新版本\",\n \"install_version_latest_mode\": \"最新穩定版\",\n \"install_version_latest_hint\": \"安裝時由後端解析。目前列表版本:{{version}}。\",\n \"install_version_release_mode\": \"選擇 Release\",\n \"install_version_release_hint\": \"從 GitHub Releases 讀取可安裝標籤。\",\n \"install_version_manual_mode\": \"手動 Release 標籤\",\n \"install_version_manual_hint\": \"僅在自動載入 Release 不可用時使用。\",\n \"install_versions_loading\": \"正在載入 GitHub Releases...\",\n \"install_versions_load_failed\": \"Release 版本載入失敗\",\n \"install_version_non_github\": \"該插件儲存庫不是 GitHub 儲存庫\",\n \"install_versions_empty\": \"沒有找到可選擇的 Release。\",\n \"install_versions_only_prerelease\": \"只有預發布版本可用。顯示預發布後才能選擇。\",\n \"install_version_release_select\": \"選擇 Release 版本\",\n \"install_version_release_placeholder\": \"選擇 Release 版本\",\n \"install_version_prerelease_badge\": \"預發布\",\n \"install_version_assets_count\": \"{{count}} 個成品\",\n \"install_version_show_prerelease\": \"顯示預發布版本\",\n \"install_version_manual_placeholder\": \"例如 v0.1.4\",\n \"install_version_manual_error\": \"Release 標籤只能包含字母、數字、點、底線、加號和連字號;不能包含空格或斜線。\",\n \"install_version_current_selected\": \"{{version}} 已安裝,請選擇其他版本。\",\n \"install_version_releases_link\": \"查看 GitHub Releases\",\n \"install_success\": \"插件安裝成功\",\n \"update_success\": \"插件更新成功\",\n \"install_failed\": \"插件安裝失敗\",\n \"update_failed\": \"插件更新失敗\",\n \"status_pending\": \"插件檔案已更新,但本機狀態尚未重新整理。請稍後重新整理或檢查後端日誌。\",\n \"registration_pending\": \"插件檔案已更新,但執行時註冊仍在等待完成。請稍後重新整理或檢查後端日誌。\",\n \"restart_required_notice\": \"需要重新啟動服務才能載入新的插件版本\",\n \"restart_required_banner\": \"以下插件需重新啟動服務後才能套用新版本:{{plugins}}\",\n \"open_repository\": \"開啟儲存庫\",\n \"open_homepage\": \"開啟首頁\",\n \"no_plugins\": \"註冊表為空\",\n \"no_plugins_desc\": \"插件註冊表未回傳任何插件。\",\n \"no_matches\": \"沒有符合的插件\",\n \"no_matches_desc\": \"目前搜尋或篩選條件下沒有插件。\",\n \"clear_filters\": \"清除篩選\",\n \"security_banner_title\": \"第三方插件以後端完整權限執行\",\n \"security_banner_text\": \"插件會在代理服務內部執行程式碼,可讀取你的憑證與流量。請僅安裝你信任的插件——尤其要警惕任何並非由官方組織 router-for-me 發布的插件。\",\n \"badge_untrusted\": \"第三方\",\n \"gate_title\": \"安裝 {{name}}\",\n \"gate_title_update\": \"更新 {{name}}\",\n \"gate_warning\": \"如果你不閱讀以下內容,可能會發生意料之外的危險後果。\",\n \"gate_effect_runs_code\": \"該插件將在您的代理後端內執行第三方未認證程式碼。系統無法對其行為進行隔離或稽核,其具備存取您的敏感憑證、網路請求與回應資料的潛在權限。\",\n \"gate_effect_no_review\": \"本插件並非由官方組織 router-for-me 發布或審核。官方不對該插件的穩定性、安全性、合規性以及後續版本的任意行為變更承擔任何明示或暗示的擔保責任。\",\n \"gate_effect_restart\": \"安裝會修改本機插件目錄,並可能需要重新啟動服務才能生效。\",\n \"gate_untrusted_alert\": \"該插件並非來自官方組織 router-for-me。請僅在你完全信任其作者與來源時繼續。\",\n \"gate_repository_label\": \"儲存庫\",\n \"gate_source_label\": \"來源\",\n \"gate_step1_action\": \"我要安裝此插件\",\n \"gate_step2_action\": \"我已閱讀並理解上述風險\",\n \"gate_step3_prompt\": \"如需確認,請在下方輸入框中鍵入 “{{token}}”\",\n \"gate_step3_action\": \"安裝此插件\",\n \"gate_step3_hint\": \"請輸入上方顯示的完整識別碼以啟用安裝。\"\n },\n \"plugin_resource\": {\n \"title\": \"插件頁面\",\n \"page_count\": \"{{count}} 個頁面\",\n \"load_failed\": \"載入插件頁面失敗\",\n \"unavailable\": \"插件頁面不可用\",\n \"not_found\": \"找不到插件頁面\",\n \"not_found_desc\": \"目前後端插件清單未宣告此插件頁面。\",\n \"empty_src\": \"插件頁面位址為空\",\n \"empty_src_desc\": \"此插件選單未提供可嵌入的頁面位址。\"\n },\n \"system_info\": {\n \"title\": \"管理中心資訊\",\n \"about_title\": \"CLI Proxy API Management Center\",\n \"connection_status_title\": \"連線狀態\",\n \"api_status_label\": \"API 狀態:\",\n \"config_status_label\": \"設定狀態:\",\n \"last_update_label\": \"最後更新:\",\n \"cache_data\": \"快取資料\",\n \"real_time_data\": \"即時資料\",\n \"not_loaded\": \"未載入\",\n \"seconds_ago\": \"秒前\",\n \"models_title\": \"可用模型清單\",\n \"models_desc\": \"展示 /models 回傳的模型,並自動使用伺服器儲存的 API Key 進行驗證。\",\n \"models_loading\": \"正在載入可用模型...\",\n \"models_empty\": \"未從 /models 取得到模型資料\",\n \"models_error\": \"取得模型清單失敗\",\n \"models_count\": \"可用模型 {{count}} 個\",\n \"version_check_title\": \"版本檢查\",\n \"version_check_desc\": \"呼叫 /latest-version 介面比對伺服器版本,提示是否有可用更新。\",\n \"version_current_label\": \"目前版本\",\n \"version_latest_label\": \"最新版本\",\n \"version_check_button\": \"檢查更新\",\n \"version_check_idle\": \"點擊檢查更新\",\n \"version_checking\": \"正在檢查最新版本...\",\n \"version_update_available\": \"有新版本可用:{{version}}\",\n \"version_is_latest\": \"目前已是最新版本\",\n \"version_check_error\": \"檢查更新失敗\",\n \"version_current_missing\": \"未取得到伺服器版本號,暫無法比對\",\n \"version_unknown\": \"未知\",\n \"quick_links_title\": \"快速連結\",\n \"quick_links_desc\": \"存取專案儲存庫和文件,取得協助和更新。\",\n \"link_main_repo\": \"主程式儲存庫\",\n \"link_main_repo_desc\": \"CLI Proxy API 核心程式原始碼\",\n \"link_webui_repo\": \"WebUI 儲存庫\",\n \"link_webui_repo_desc\": \"管理中心前端介面原始碼\",\n \"link_docs\": \"使用教學\",\n \"link_docs_desc\": \"設定指南和使用說明\",\n \"clear_login_title\": \"本地登入資訊\",\n \"clear_login_desc\": \"清理本地儲存的登入資訊並登出。\",\n \"clear_login_button\": \"清理登入資訊\",\n \"clear_login_confirm\": \"確認清理本地登入資訊並登出?\"\n },\n \"notification\": {\n \"debug_updated\": \"除錯設定已更新\",\n \"proxy_updated\": \"代理設定已更新\",\n \"proxy_cleared\": \"代理設定已清空\",\n \"retry_updated\": \"重試設定已更新\",\n \"quota_switch_project_updated\": \"專案切換設定已更新\",\n \"quota_switch_preview_updated\": \"預覽模型切換設定已更新\",\n \"logging_to_file_updated\": \"記錄設定已更新\",\n \"logs_max_total_size_updated\": \"記錄容量設定已更新\",\n \"request_log_updated\": \"請求記錄設定已更新\",\n \"force_model_prefix_updated\": \"模型前綴設定已更新\",\n \"ws_auth_updated\": \"WebSocket 驗證設定已更新\",\n \"routing_strategy_updated\": \"路由策略已更新\",\n \"login_storage_cleared\": \"本地登入資訊已清理\",\n \"api_key_added\": \"API 金鑰新增成功\",\n \"api_key_updated\": \"API 金鑰更新成功\",\n \"api_key_deleted\": \"API 金鑰刪除成功\",\n \"api_key_invalid_chars\": \"API 金鑰僅支援英文字母、數字和符號\",\n \"gemini_key_added\": \"Gemini 金鑰新增成功\",\n \"gemini_key_updated\": \"Gemini 金鑰更新成功\",\n \"gemini_key_deleted\": \"Gemini 金鑰刪除成功\",\n \"gemini_multi_input_required\": \"請先輸入至少一個 Gemini 金鑰\",\n \"gemini_multi_failed\": \"Gemini 金鑰批次新增失敗\",\n \"gemini_multi_summary\": \"Gemini 批次新增完成:成功 {{success}},跳過 {{skipped}},失敗 {{failed}}\",\n \"codex_config_added\": \"Codex 設定新增成功\",\n \"codex_config_updated\": \"Codex 設定更新成功\",\n \"codex_config_deleted\": \"Codex 設定刪除成功\",\n \"codex_base_url_required\": \"請填寫 Codex Base URL\",\n \"claude_config_added\": \"Claude 設定新增成功\",\n \"claude_config_updated\": \"Claude 設定更新成功\",\n \"claude_config_deleted\": \"Claude 設定刪除成功\",\n \"vertex_config_added\": \"Vertex 設定新增成功\",\n \"vertex_config_updated\": \"Vertex 設定更新成功\",\n \"vertex_config_deleted\": \"Vertex 設定刪除成功\",\n \"config_enabled\": \"設定已啟用\",\n \"config_disabled\": \"設定已停用\",\n \"field_required\": \"必填欄位不能為空\",\n \"openai_provider_required\": \"請填寫供應商名稱和 Base URL\",\n \"openai_provider_added\": \"OpenAI 供應商新增成功\",\n \"openai_provider_updated\": \"OpenAI 供應商更新成功\",\n \"openai_provider_deleted\": \"OpenAI 供應商刪除成功\",\n \"openai_model_name_required\": \"請填寫模型名稱\",\n \"openai_test_url_required\": \"請先填寫有效的 Base URL 以進行測試\",\n \"openai_test_key_required\": \"請至少填寫一個 API 金鑰以進行測試\",\n \"openai_test_model_required\": \"請選擇要測試的模型\",\n \"data_refreshed\": \"資料重新整理成功\",\n \"connection_required\": \"請先建立連線\",\n \"refresh_failed\": \"重新整理失敗\",\n \"update_failed\": \"更新失敗\",\n \"add_failed\": \"新增失敗\",\n \"delete_failed\": \"刪除失敗\",\n \"upload_failed\": \"上傳失敗\",\n \"download_failed\": \"下載失敗\",\n \"login_failed\": \"登入失敗\",\n \"please_enter\": \"請輸入\",\n \"please_fill\": \"請填寫\",\n \"provider_name_url\": \"供應商名稱和 Base URL\",\n \"api_key\": \"API 金鑰\",\n \"gemini_api_key\": \"Gemini API 金鑰\",\n \"codex_api_key\": \"Codex API 金鑰\",\n \"claude_api_key\": \"Claude API 金鑰\",\n \"commercial_mode_restart_required\": \"商業模式開關已變更,請重啟服務後生效\",\n \"copy_failed\": \"複製失敗\",\n \"link_copied\": \"已複製\"\n },\n \"language\": {\n \"switch\": \"語言\",\n \"chinese\": \"簡體中文\",\n \"chinese_tw\": \"繁體中文(台灣)\",\n \"english\": \"英文\",\n \"russian\": \"俄文\"\n },\n \"theme\": {\n \"switch\": \"主題\",\n \"light\": \"羊毛紙\",\n \"white\": \"純白\",\n \"dark\": \"深色\",\n \"switch_to_light\": \"切換到羊毛紙模式\",\n \"switch_to_dark\": \"切換到深色模式\",\n \"auto\": \"跟隨系統\"\n },\n \"sidebar\": {\n \"primary_navigation\": \"主導覽\",\n \"toggle_expand\": \"展開側邊欄\",\n \"toggle_collapse\": \"收起側邊欄\"\n },\n \"footer\": {\n \"api_version\": \"CLI Proxy API 版本\",\n \"build_date\": \"建置時間\",\n \"version\": \"管理中心版本\",\n \"author\": \"作者\"\n },\n \"providersPage\": {\n \"header\": {\n \"title\": \"AI 提供商\",\n \"activeResources\": \"{{active}}/{{total}} 個活躍資源\",\n \"providerFamilies\": \"{{count}} 個提供商家族\",\n \"updatedAt\": \"更新於 {{time}}\",\n \"issueCount\": \"{{count}} 個問題\"\n },\n \"actions\": {\n \"refresh\": \"重新整理\",\n \"syncing\": \"同步中\",\n \"new\": \"新增\",\n \"edit\": \"編輯\",\n \"view\": \"檢視\",\n \"delete\": \"刪除\",\n \"clear\": \"清空\",\n \"cancel\": \"取消\",\n \"save\": \"儲存\",\n \"create\": \"建立\",\n \"enable\": \"啟用\",\n \"disable\": \"停用\"\n },\n \"categories\": {\n \"title\": \"提供商\",\n \"activeCount\": \"{{active}}/{{total}} 活躍\"\n },\n \"providerNames\": {\n \"gemini\": \"Gemini\",\n \"codex\": \"Codex\",\n \"xai\": \"xAI\",\n \"claude\": \"Claude\",\n \"vertex\": \"Vertex\",\n \"openaiCompatibility\": \"OpenAI 相容\",\n \"claudeApi\": \"ClaudeAPI\",\n \"code0\": \"Code0\",\n \"fennoAI\": \"FennoAI\",\n \"qiniuCloud\": \"七牛雲\"\n },\n \"table\": {\n \"key\": \"金鑰\",\n \"baseUrl\": \"服務位址\",\n \"prefix\": \"前綴\",\n \"models\": \"模型/請求標頭\",\n \"status\": \"狀態\",\n \"actions\": \"操作\",\n \"metrics\": {\n \"models\": \"模型\",\n \"keys\": \"金鑰\",\n \"headers\": \"請求標頭\"\n },\n \"stats\": {\n \"recent\": \"近期\",\n \"fullUsage\": \"完整統計\",\n \"tokens\": \"Token\",\n \"cost\": \"花費\"\n },\n \"websocketsTag\": \"WebSockets\",\n \"cloakTag\": \"Cloak\",\n \"empty\": \"尚未新增設定,點擊右上角新增。\",\n \"filterPlaceholder\": \"搜尋金鑰、位址、前綴…\",\n \"description\": \"在 {{route}} 下管理資源\",\n \"providerIssue\": \"此提供商存在問題\"\n },\n \"status\": {\n \"active\": \"活躍\",\n \"disabled\": \"已停用\",\n \"notSet\": \"未設定\",\n \"none\": \"無\",\n \"notConfigured\": \"未設定\",\n \"defaultSuffix\": \"(預設)\"\n },\n \"detail\": {\n \"title\": \"詳情\",\n \"metadataTitle\": \"元資料\",\n \"fields\": {\n \"identifier\": \"識別碼\",\n \"baseUrl\": \"服務位址\",\n \"proxyUrl\": \"代理 URL\",\n \"prefix\": \"前綴\",\n \"models\": \"模型數\",\n \"headers\": \"請求標頭數\",\n \"authIndex\": \"Auth Index\",\n \"excludedModels\": \"排除模型數\",\n \"apiKeyEntries\": \"金鑰條目數\"\n }\n },\n \"form\": {\n \"createEyebrow\": \"新增\",\n \"editEyebrow\": \"編輯\",\n \"name\": \"名稱\",\n \"apiKey\": \"API 金鑰\",\n \"apiKeyCreatePlaceholder\": \"輸入 API 金鑰\",\n \"apiKeyEditPlaceholder\": \"留空表示不修改\",\n \"baseUrl\": \"服務位址\",\n \"baseUrlRequiredHint\": \"此提供商需要填寫服務位址\",\n \"proxyUrl\": \"代理 URL\",\n \"prefix\": \"前綴\",\n \"priority\": \"優先級\",\n \"disabled\": \"停用此條目\",\n \"disabledHint\": \"停用後不會被閘道使用\",\n \"websockets\": \"啟用 WebSockets\",\n \"testModel\": \"測試模型\",\n \"testModelClaudeHint\": \"僅用於連通性測試,不會被儲存\",\n \"testModelAutoWith\": \"自動 · {{name}}\",\n \"testModelAutoEmpty\": \"自動(尚未新增模型)\",\n \"testModelCustom\": \"{{name}}(自訂)\",\n \"modelsSection\": \"自訂模型\",\n \"addModel\": \"新增模型\",\n \"modelNamePlaceholder\": \"上游模型名稱\",\n \"modelAliasPlaceholder\": \"路由別名(選填)\",\n \"modelDisplayNamePlaceholder\": \"顯示名稱(選填)\",\n \"headersSection\": \"請求標頭\",\n \"addHeader\": \"新增請求標頭\",\n \"headers\": \"請求標頭\",\n \"headersHint\": \"每行一條,格式 Key: Value\",\n \"excludedSection\": \"排除模型\",\n \"excludedHint\": \"每行一個模型名稱,匹配後將不會被路由到此提供商\",\n \"cloakSection\": \"Cloak 設定\",\n \"cloakMode\": \"模式\",\n \"cloakStrict\": \"嚴格模式\",\n \"cloakSensitiveWords\": \"敏感詞(每行一個)\",\n \"apiKeyEntriesSection\": \"API 金鑰條目\",\n \"apiKeyEntry\": \"金鑰 #{{index}}\",\n \"addApiKeyEntry\": \"新增金鑰條目\",\n \"showApiKey\": \"顯示金鑰\",\n \"hideApiKey\": \"隱藏金鑰\",\n \"disableCooling\": \"停用冷卻調度\",\n \"disableCoolingHint\": \"僅對目前憑證或提供商停用失敗後的冷卻視窗\",\n \"modelEntry\": \"模型 #{{index}}\",\n \"modelImage\": \"允許圖片端點\",\n \"modelImageHint\": \"允許該模型用於 /v1/images/generations 和 /v1/images/edits\",\n \"thinkingConfig\": \"Thinking 設定(JSON)\",\n \"thinkingConfigHint\": \"可設定 levels、min、max、zero_allowed、dynamic_allowed\",\n \"cloakCacheUserId\": \"快取 user_id\",\n \"cloakCacheUserIdHint\": \"按 API key 複用 Claude cloak 產生的 user_id\",\n \"experimentalCchSigning\": \"實驗性 CCH 簽名\",\n \"experimentalCchSigningHint\": \"對 cloaked Claude /v1/messages 最終請求體啟用 CCH 簽名\",\n \"validation\": {\n \"nameRequired\": \"名稱必填\",\n \"apiKeyRequired\": \"至少填寫一個 API 金鑰\",\n \"baseUrlRequired\": \"服務位址必填\"\n },\n \"showAllEntries\": \"顯示全部({{count}})\",\n \"showFewerEntries\": \"收起\",\n \"proxyBadge\": \"代理\",\n \"modelBadgeImage\": \"圖片\",\n \"modelBadgeThinking\": \"Thinking\"\n },\n \"delete\": {\n \"title\": \"刪除資源\",\n \"confirm\": \"確定要刪除 {{name}} 嗎?此操作不可復原。\"\n },\n \"toast\": {\n \"created\": \"建立成功\",\n \"updated\": \"更新成功\",\n \"deleted\": \"刪除成功\",\n \"enabled\": \"已啟用\",\n \"disabled\": \"已停用\",\n \"toggleFailed\": \"更新狀態失敗\"\n },\n \"unsavedChanges\": {\n \"title\": \"確定捨棄未儲存的變更嗎?\",\n \"message\": \"目前表單還有尚未儲存的變更,關閉後會遺失。\",\n \"discard\": \"捨棄變更\",\n \"keepEditing\": \"繼續編輯\"\n },\n \"connectivity\": {\n \"test\": \"測試\",\n \"testAll\": \"全部測試\",\n \"success\": \"連通\",\n \"baseUrlRequired\": \"服務位址必填\",\n \"endpointInvalid\": \"服務位址不合法\",\n \"apiKeyRequired\": \"API 金鑰必填\",\n \"modelRequired\": \"測試模型必填\",\n \"timeout\": \"請求超過 {{seconds}} 秒\",\n \"requestFailed\": \"請求失敗\"\n },\n \"discovery\": {\n \"openButton\": \"從端點拉取\",\n \"searchPlaceholder\": \"搜尋模型\",\n \"reload\": \"重新載入\",\n \"loading\": \"正在載入模型…\",\n \"empty\": \"端點未回傳任何模型\",\n \"notLoaded\": \"點擊重新載入以取得模型\",\n \"selectAll\": \"全選\",\n \"clearAll\": \"清空選擇\",\n \"selectedCount\": \"{{selected}} / {{total}}\",\n \"alreadyAdded\": \"已新增\",\n \"close\": \"關閉\",\n \"apply\": \"套用 ({{count}})\"\n },\n \"toolbar\": {\n \"sortBy\": \"排序\",\n \"sort\": {\n \"name\": \"名稱\",\n \"priority\": \"優先級\",\n \"recentSuccess\": \"近期成功數\",\n \"directionAsc\": \"升序\",\n \"directionDesc\": \"降序\"\n },\n \"filter\": {\n \"allModels\": \"全部模型\",\n \"selectedModels\": \"{{selected}}/{{total}} 個模型\",\n \"selectAll\": \"全選\",\n \"clear\": \"清空\",\n \"empty\": \"尚無已設定模型\"\n }\n },\n \"modelCatalog\": {\n \"notLoaded\": \"未載入\"\n },\n \"sponsor\": {\n \"protocolSummary\": \"Anthropic / OpenAI / Gemini / Codex API (Responses)\",\n \"detailHint\": \"{{provider}} 會按協議分別寫入對應的 API Key 設定,此處只做聚合管理。\",\n \"apiKeyHint\": \"此金鑰只會寫入目前選擇的分組/協議設定。\",\n \"aggregationConflict\": \"此聚合提供商包含多筆後端設定或多個 OpenAI 金鑰。為避免資料遺失,請在原始碼設定中編輯。\",\n \"partialMutationWarning\": \"操作失敗,但一個或多個協議可能已更新。已重新讀取最新設定,請檢查後再重試。\",\n \"groupedKeysTitle\": \"分組金鑰\",\n \"groupedKeysHint\": \"平台建立 Key 時可能需要選擇分組,這裡每個分組金鑰只管理一個協議,模型也只從該協議拉取。\",\n \"groupedKey\": \"分組金鑰 #{{index}}\",\n \"addGroupedKey\": \"新增分組金鑰\",\n \"removeGroupedKey\": \"刪除分組金鑰\",\n \"protocol\": \"分組/協議\",\n \"protocolHint\": \"請選擇此 Key 對應的分組/協議。\",\n \"protocolEndpoint\": \"目前協議位址\",\n \"urlMode\": \"{{provider}} URL\",\n \"urlHint\": \"不同 URL 的使用規範一致,儲存時只會寫入目前分組協議對應位址。\",\n \"urlOptions\": {\n \"standard\": \"普通 URL\",\n \"direct\": \"專線直連 URL\",\n \"domestic\": \"中國大陸線路\",\n \"overseas\": \"海外線路\"\n },\n \"urlOptionDescriptions\": {\n \"domestic\": \"面向中國大陸使用者和部署在中國大陸網路環境中的業務,通常可獲得更低延遲。\",\n \"overseas\": \"面向海外部署、跨境存取或需要存取境外模型的業務。\"\n },\n \"modelsTitle\": \"協議模型設定\",\n \"modelsHint\": \"可分別限制或別名映射 Codex API、Anthropic、Gemini 與 OpenAI 相容入口的模型。\",\n \"protocolModels\": {\n \"codex\": \"Codex API 模型\",\n \"anthropic\": \"Anthropic 模型\",\n \"gemini\": \"Gemini 模型\",\n \"openai\": \"OpenAI 相容模型\"\n },\n \"protocolModelHints\": {\n \"codex\": \"寫入 Codex API 設定的 models,可從 /v1/models 拉取後設定別名。\",\n \"anthropic\": \"寫入 Anthropic 設定的 models,可從 /v1/models 拉取後設定別名。\",\n \"gemini\": \"寫入 Gemini 設定的 models,可從 /v1beta/models 拉取後設定別名。\",\n \"openai\": \"寫入 OpenAI 相容設定的 models,可從 /models 拉取後設定別名。\"\n },\n \"validation\": {\n \"keyRequired\": \"請為每個分組金鑰填寫 API Key。\",\n \"protocolDuplicate\": \"每個協議只能新增一個分組金鑰。\"\n },\n \"openaiEntries\": \"OpenAI 相容金鑰數\",\n \"codexEntries\": \"Codex API 金鑰數\",\n \"anthropicEntries\": \"Anthropic 金鑰數\",\n \"geminiEntries\": \"Gemini 金鑰數\",\n \"protocols\": {\n \"anthropic\": \"Anthropic\",\n \"openai\": \"OpenAI 相容\",\n \"gemini\": \"Gemini\",\n \"codexResponses\": \"Codex API (Responses)\"\n }\n }\n }\n}\n"}}, "src/i18n/locales/ru.json": {"4a3d69d5e1d2eef01ed3ed4fadecd6adbe4b5a42": {"t": 1785674718.8485434, "n": 144150, "h": "5b364fa24a8bae58", "c": "{\n \"common\": {\n \"login\": \"Войти\",\n \"logout\": \"Выйти\",\n \"back\": \"Назад\",\n \"cancel\": \"Отмена\",\n \"confirm\": \"Подтвердить\",\n \"leave\": \"Уйти\",\n \"stay\": \"Остаться\",\n \"save\": \"Сохранить\",\n \"delete\": \"Удалить\",\n \"edit\": \"Редактировать\",\n \"add\": \"Добавить\",\n \"update\": \"Обновить\",\n \"refresh\": \"Обновить\",\n \"close\": \"Закрыть\",\n \"success\": \"Успешно\",\n \"error\": \"Ошибка\",\n \"info\": \"Информация\",\n \"warning\": \"Внимание\",\n \"loading\": \"Загрузка...\",\n \"connecting\": \"Подключение...\",\n \"connected\": \"Подключено\",\n \"disconnected\": \"Отключено\",\n \"connecting_status\": \"Подключение\",\n \"connected_status\": \"Подключено\",\n \"disconnected_status\": \"Отключено\",\n \"yes\": \"Да\",\n \"no\": \"Нет\",\n \"not_set\": \"Не задано\",\n \"optional\": \"Необязательно\",\n \"required\": \"Обязательно\",\n \"api_key\": \"Ключ\",\n \"base_url\": \"Адрес\",\n \"prefix\": \"Префикс\",\n \"proxy_url\": \"Прокси\",\n \"priority\": \"Приоритет\",\n \"alias\": \"Псевдоним\",\n \"failure\": \"Сбой\",\n \"unknown_error\": \"Неизвестная ошибка\",\n \"quota_update_required\": \"Пожалуйста, обновите CPA или проверьте наличие обновлений\",\n \"quota_check_credential\": \"Пожалуйста, проверьте статус учётных данных\",\n \"copy\": \"Копировать\",\n \"expand\": \"Развернуть\",\n \"collapse\": \"Свернуть\",\n \"status\": \"Статус\",\n \"action\": \"Действие\",\n \"custom_headers_label\": \"Пользовательские заголовки\",\n \"custom_headers_hint\": \"Необязательно — HTTP-заголовки для отправки с запросом. Оставьте пустым для удаления.\",\n \"custom_headers_add\": \"Добавить заголовок\",\n \"custom_headers_key_placeholder\": \"Имя заголовка, например X-Custom-Header\",\n \"custom_headers_value_placeholder\": \"Значение заголовка\",\n \"model_name_placeholder\": \"Имя модели, напр. claude-3-5-sonnet-20241022\",\n \"model_alias_placeholder\": \"Псевдоним модели (необязательно)\",\n \"invalid_provider_index\": \"Неверный индекс провайдера.\",\n \"unsaved_changes_title\": \"Несохранённые изменения\",\n \"unsaved_changes_message\": \"У вас есть несохранённые изменения. Если вы уйдёте, они будут потеряны. Выйти?\"\n },\n \"title\": {\n \"main\": \"Центр управления CLI Proxy API\",\n \"login\": \"Центр управления CLI Proxy API\",\n \"abbr\": \"CPAMC\"\n },\n \"splash\": {\n \"title\": \"CLI Proxy API\",\n \"subtitle\": \"Центр управления\"\n },\n \"auto_login\": {\n \"title\": \"Автовход...\",\n \"message\": \"Пытаемся подключиться к серверу, используя сохранённые данные\"\n },\n \"login\": {\n \"subtitle\": \"Введите данные подключения, чтобы получить доступ к панели управления\",\n \"connection_title\": \"Адрес подключения\",\n \"connection_current\": \"Текущий URL\",\n \"connection_auto_hint\": \"Система автоматически использует текущий URL для подключения\",\n \"custom_connection_label\": \"Пользовательский URL подключения:\",\n \"custom_connection_placeholder\": \"Напр.: https://example.com:8317\",\n \"custom_connection_hint\": \"По умолчанию используется текущий URL. При необходимости замените его.\",\n \"use_current_address\": \"Использовать текущий URL\",\n \"remember_password_label\": \"Запомнить пароль\",\n \"management_key_label\": \"Ключ управления:\",\n \"management_key_placeholder\": \"Введите ключ управления\",\n \"connect_button\": \"Подключиться\",\n \"submit_button\": \"Войти\",\n \"submitting\": \"Подключение...\",\n \"error_title\": \"Ошибка входа\",\n \"error_backend_detail\": \"Ответ сервера\",\n \"error_required\": \"Пожалуйста, заполните все данные подключения\",\n \"error_invalid\": \"Подключение не удалось, проверьте адрес сервера, Management API и ключ управления\",\n \"error_network\": \"Сетевая ошибка, проверьте подключение или адрес сервера\",\n \"error_timeout\": \"Время ожидания истекло, сервер не отвечает\",\n \"error_unauthorized\": \"Аутентификация не удалась, ключ управления отсутствует или неверен\",\n \"error_forbidden\": \"Доступ запрещён: удалённое управление отключено, ключ управления не настроен или IP временно заблокирован\",\n \"error_not_found\": \"Management API не найден, проверьте, что адрес указывает на backend CLIProxyAPI\",\n \"error_server\": \"Backend не смог обработать запрос управления, проверьте журналы сервера\",\n \"error_cors\": \"Блокировка CORS, проверьте конфигурацию сервера\",\n \"error_ssl\": \"Ошибка проверки SSL/TLS сертификата\"\n },\n \"header\": {\n \"check_connection\": \"Проверить подключение\",\n \"refresh_all\": \"Обновить всё\",\n \"logout\": \"Выйти\"\n },\n \"connection\": {\n \"title\": \"Информация о подключении\",\n \"server_address\": \"Адрес сервера:\",\n \"management_key\": \"Ключ управления:\",\n \"status\": \"Статус подключения:\"\n },\n \"nav\": {\n \"dashboard\": \"Панель\",\n \"basic_settings\": \"Основные настройки\",\n \"api_keys\": \"API ключи\",\n \"ai_providers\": \"Поставщики AI\",\n \"auth_files\": \"Файлы аутентификации\",\n \"oauth\": \"OAuth вход\",\n \"quota_management\": \"Управление квотами\",\n \"usage_stats\": \"Статистика использования\",\n \"plugins\": \"Плагины\",\n \"plugins_runtime_unavailable\": \"Плагины (среда выполнения недоступна)\",\n \"plugin_store\": \"Магазин плагинов\",\n \"config_management\": \"Панель конфигурации\",\n \"logs\": \"Просмотр логов\",\n \"system_info\": \"Информация системы\"\n },\n \"nav_groups\": {\n \"operate\": \"Работа\",\n \"gateway\": \"Шлюз\",\n \"observe\": \"Наблюдение\",\n \"plugin_pages\": \"Страницы плагинов\",\n \"control\": \"Управление\"\n },\n \"nav_meta\": {\n \"dashboard\": \"Обзор работы\",\n \"ai_providers\": \"Маршрутизация моделей\",\n \"auth_files\": \"Файлы и учётные данные\",\n \"oauth\": \"Авторизация OAuth\",\n \"quota_management\": \"API ключи и лимиты\",\n \"usage_stats\": \"Полная статистика использования и запросов\",\n \"plugins\": \"Переключатели и ресурсы плагинов\",\n \"plugin_store\": \"Поиск и установка плагинов\",\n \"logs\": \"Трассировка запросов\",\n \"config_management\": \"Базовая конфигурация шлюза\",\n \"system_info\": \"Состояние и диагностика\"\n },\n \"dashboard\": {\n \"title\": \"Панель управления\",\n \"subtitle\": \"Добро пожаловать в Центр управления CLI Proxy API\",\n \"openai_providers\": \"Поставщики OpenAI\",\n \"quick_actions\": \"Быстрые действия\",\n \"current_config\": \"Текущая конфигурация\",\n \"management_keys\": \"Ключи управления\",\n \"provider_keys_detail\": \"G:{{gemini}} C:{{codex}} X:{{xai}} Cl:{{claude}} V:{{vertex}} O:{{openai}} A:{{ampcode}}\",\n \"oauth_credentials\": \"Учётные данные OAuth\",\n \"edit_settings\": \"Изменить настройки\",\n \"routing_strategy\": \"Стратегия маршрутизации\",\n \"available_models\": \"Доступные модели\",\n \"available_models_desc\": \"Всего моделей от всех провайдеров\",\n \"welcome_back\": \"С возвращением\",\n \"greeting_morning\": \"Доброе утро\",\n \"greeting_afternoon\": \"Добрый день\",\n \"greeting_evening\": \"Добрый вечер\",\n \"greeting_night\": \"Доброй ночи\",\n \"caring_morning\": \"Новый день — начнём продуктивно.\",\n \"caring_afternoon\": \"Уверенный прогресс — отличная работа.\",\n \"caring_evening\": \"День подходит к концу — финальный рывок.\",\n \"caring_night\": \"Поздняя работа? Не забудьте отдохнуть.\",\n \"system_overview\": \"Обзор системы\"\n },\n \"basic_settings\": {\n \"title\": \"Основные настройки\",\n \"debug_title\": \"Режим отладки\",\n \"debug_enable\": \"Включить режим отладки\",\n \"proxy_title\": \"Настройки прокси\",\n \"proxy_url_label\": \"URL прокси:\",\n \"proxy_url_placeholder\": \"например: socks5://user:pass@127.0.0.1:1080/\",\n \"proxy_update\": \"Обновить\",\n \"proxy_clear\": \"Очистить\",\n \"retry_title\": \"Повтор запросов\",\n \"retry_count_label\": \"Количество повторов:\",\n \"retry_update\": \"Обновить\",\n \"quota_title\": \"Поведение при превышении квоты\",\n \"quota_switch_project\": \"Автоматически переключать проект\",\n \"quota_switch_preview\": \"Переключаться на preview-модель\",\n \"logging_title\": \"Журналирование\",\n \"logging_to_file_enable\": \"Включить журналирование в файл\",\n \"logs_max_total_size_title\": \"Лимит размера журналов\",\n \"logs_max_total_size_label\": \"Максимальный общий размер журналов (МБ):\",\n \"logs_max_total_size_hint\": \"Установите 0, чтобы отключить лимит.\",\n \"logs_max_total_size_update\": \"Обновить\",\n \"request_log_title\": \"Журналирование запросов\",\n \"request_log_enable\": \"Включить журналирование запросов\",\n \"request_log_warning\": \"Оставьте выключенным, если подробная диагностика не нужна.\",\n \"force_model_prefix_enable\": \"Включить принудительный префикс модели\",\n \"ws_auth_title\": \"Аутентификация WebSocket\",\n \"ws_auth_enable\": \"Требовать аутентификацию для /ws/*\",\n \"routing_title\": \"Стратегия маршрутизации\",\n \"routing_strategy_label\": \"Стратегия маршрутизации:\",\n \"routing_strategy_hint\": \"round-robin циклически перебирает ключи; fill-first отдаёт приоритет первому доступному ключу.\",\n \"routing_strategy_update\": \"Обновить\",\n \"routing_strategy_round_robin\": \"round-robin (цикл)\",\n \"routing_strategy_fill_first\": \"fill-first (приоритет)\"\n },\n \"api_keys\": {\n \"title\": \"Управление API-ключами\",\n \"proxy_auth_title\": \"Ключи аутентификации прокси-сервиса\",\n \"add_button\": \"Добавить ключ\",\n \"empty_title\": \"API-ключи отсутствуют\",\n \"empty_desc\": \"Нажмите кнопку выше, чтобы добавить первый ключ\",\n \"item_title\": \"API-ключ\",\n \"add_modal_title\": \"Добавление API-ключа\",\n \"add_modal_key_label\": \"API-ключ:\",\n \"add_modal_key_placeholder\": \"Введите API-ключ\",\n \"edit_modal_title\": \"Редактирование API-ключа\",\n \"edit_modal_key_label\": \"API-ключ:\",\n \"delete_confirm\": \"Удалить этот API-ключ?\"\n },\n \"ai_providers\": {\n \"title\": \"Конфигурация AI-провайдеров\",\n \"gemini_title\": \"API-ключи Gemini\",\n \"gemini_add_button\": \"Добавить ключ\",\n \"gemini_empty_title\": \"Ключи Gemini отсутствуют\",\n \"gemini_empty_desc\": \"Нажмите кнопку выше, чтобы добавить первый ключ\",\n \"gemini_item_title\": \"Ключ Gemini\",\n \"gemini_add_modal_title\": \"Добавление API-ключа Gemini\",\n \"gemini_add_modal_key_label\": \"API-ключи:\",\n \"gemini_add_modal_key_placeholder\": \"Введите API-ключ Gemini\",\n \"gemini_add_modal_key_hint\": \"Добавляйте ключи по одному и при необходимости указывайте базовый URL.\",\n \"gemini_keys_add_btn\": \"Добавить ключ\",\n \"gemini_base_url_label\": \"Базовый URL (необязательно):\",\n \"gemini_base_url_placeholder\": \"например: https://generativelanguage.googleapis.com\",\n \"gemini_add_modal_proxy_label\": \"URL прокси (необязательно):\",\n \"gemini_add_modal_proxy_placeholder\": \"например: socks5://proxy.example.com:1080\",\n \"gemini_models_label\": \"Пользовательские модели (необязательно):\",\n \"gemini_models_hint\": \"Оставьте пустым, чтобы разрешить все модели, или добавьте записи name[, alias], чтобы ограничить/переименовать их для этого ключа.\",\n \"gemini_models_add_btn\": \"Добавить модель\",\n \"gemini_models_fetch_button\": \"Получить через /v1beta/models\",\n \"gemini_models_fetch_title\": \"Выбор моделей из Gemini /v1beta/models\",\n \"gemini_models_fetch_hint\": \"Вызывает GET /v1beta/models по спецификации Gemini API. По умолчанию отправляется x-goog-api-key из поля API-ключа, объединённый с вашими пользовательскими заголовками.\",\n \"gemini_models_fetch_url_label\": \"URL запроса\",\n \"gemini_models_fetch_refresh\": \"Обновить\",\n \"gemini_models_fetch_loading\": \"Получение моделей из Gemini /v1beta/models...\",\n \"gemini_models_fetch_empty\": \"Модели не получены. Проверьте Base URL, API-ключ или заголовки.\",\n \"gemini_models_fetch_error\": \"Не удалось получить модели Gemini\",\n \"gemini_models_fetch_apply\": \"Добавить выбранные модели\",\n \"model_discovery_select_visible\": \"Выбрать текущий список\",\n \"model_discovery_clear_selection\": \"Очистить выбор\",\n \"model_discovery_selected_count\": \"Выбрано: {{count}}\",\n \"gemini_models_search_label\": \"Поиск моделей\",\n \"gemini_models_search_placeholder\": \"Фильтр по имени, псевдониму или описанию\",\n \"gemini_models_search_empty\": \"Нет подходящих моделей. Попробуйте другой запрос.\",\n \"gemini_models_fetch_added\": \"Добавлено новых моделей: {{count}}\",\n \"gemini_models_count\": \"Количество моделей\",\n \"gemini_edit_modal_title\": \"Редактирование API-ключа Gemini\",\n \"gemini_edit_modal_key_label\": \"API-ключ:\",\n \"gemini_delete_confirm\": \"Удалить этот ключ Gemini?\",\n \"excluded_models_label\": \"Исключённые модели (необязательно):\",\n \"excluded_models_placeholder\": \"Через запятую или с новой строки, например gemini-1.5-pro, gemini-1.5-flash\",\n \"excluded_models_hint\": \"Оставьте пустым, чтобы разрешить все модели; значения автоматически обрезаются и дедуплицируются.\",\n \"excluded_models_count\": \"Исключено моделей: {{count}}\",\n \"prefix_label\": \"Префикс (необязательно):\",\n \"prefix_placeholder\": \"например: team-a\",\n \"prefix_hint\": \"Если задано, обращайтесь к моделям как prefix/<model>, чтобы выбрать эту запись.\",\n \"priority_label\": \"Приоритет (необязательно):\",\n \"priority_hint\": \"Чем больше значение, тем выше приоритет. Оставьте пустым для значения по умолчанию (0).\",\n \"config_toggle_label\": \"Включено\",\n \"config_disabled_badge\": \"Отключено\",\n \"codex_title\": \"Конфигурация Codex API\",\n \"codex_add_button\": \"Добавить конфигурацию\",\n \"codex_empty_title\": \"Конфигурации Codex отсутствуют\",\n \"codex_empty_desc\": \"Нажмите кнопку выше, чтобы добавить первую конфигурацию\",\n \"codex_item_title\": \"Конфигурация Codex\",\n \"codex_add_modal_title\": \"Добавление конфигурации Codex API\",\n \"codex_add_modal_key_label\": \"API-ключ:\",\n \"codex_add_modal_key_placeholder\": \"Введите API-ключ Codex\",\n \"codex_add_modal_url_label\": \"Базовый URL (обязательно):\",\n \"codex_add_modal_url_placeholder\": \"например: https://api.example.com\",\n \"codex_add_modal_proxy_label\": \"URL прокси (необязательно):\",\n \"codex_add_modal_proxy_placeholder\": \"например: socks5://proxy.example.com:1080\",\n \"codex_websockets_label\": \"Websockets\",\n \"codex_websockets_hint\": \"Включает websocket-транспорт Responses API для этого ключа.\",\n \"codex_models_label\": \"Пользовательские модели (необязательно):\",\n \"codex_models_hint\": \"Оставьте пустым, чтобы разрешить все модели, или добавьте записи name[, alias], чтобы ограничить/переименовать их.\",\n \"codex_models_add_btn\": \"Добавить модель\",\n \"codex_models_fetch_button\": \"Получить через /v1/models\",\n \"codex_models_fetch_title\": \"Выбор моделей из Codex /v1/models\",\n \"codex_models_fetch_hint\": \"Вызывает GET /v1/models по спецификации OpenAI. По умолчанию отправляет API-ключ как Bearer (если указан) и объединяет его с пользовательскими заголовками.\",\n \"codex_models_fetch_url_label\": \"URL запроса\",\n \"codex_models_fetch_refresh\": \"Обновить\",\n \"codex_models_fetch_loading\": \"Получение моделей из /v1/models...\",\n \"codex_models_fetch_empty\": \"Модели не получены. Проверьте Base URL, API-ключ или заголовки.\",\n \"codex_models_fetch_error\": \"Не удалось получить модели\",\n \"codex_models_fetch_apply\": \"Добавить выбранные модели\",\n \"codex_models_search_label\": \"Поиск моделей\",\n \"codex_models_search_placeholder\": \"Фильтр по имени, псевдониму или описанию\",\n \"codex_models_search_empty\": \"Модели по запросу не найдены. Попробуйте другой запрос.\",\n \"codex_models_fetch_added\": \"Добавлено новых моделей: {{count}}\",\n \"codex_models_count\": \"Количество моделей\",\n \"codex_edit_modal_title\": \"Редактирование конфигурации Codex API\",\n \"codex_edit_modal_key_label\": \"API-ключ:\",\n \"codex_edit_modal_url_label\": \"Базовый URL (обязательно):\",\n \"codex_edit_modal_proxy_label\": \"URL прокси (необязательно):\",\n \"codex_delete_confirm\": \"Удалить эту конфигурацию Codex?\",\n \"claude_title\": \"Конфигурация Claude API\",\n \"claude_add_button\": \"Добавить конфигурацию\",\n \"claude_empty_title\": \"Конфигурации Claude отсутствуют\",\n \"claude_empty_desc\": \"Нажмите кнопку выше, чтобы добавить первую конфигурацию\",\n \"claude_item_title\": \"Конфигурация Claude\",\n \"claude_add_modal_title\": \"Добавление конфигурации Claude API\",\n \"claude_add_modal_key_label\": \"API-ключ:\",\n \"claude_add_modal_key_placeholder\": \"Введите API-ключ Claude\",\n \"claude_add_modal_url_label\": \"Базовый URL (необязательно):\",\n \"claude_add_modal_url_placeholder\": \"например: https://api.anthropic.com\",\n \"claude_add_modal_proxy_label\": \"URL прокси (необязательно):\",\n \"claude_add_modal_proxy_placeholder\": \"например: socks5://proxy.example.com:1080\",\n \"claude_edit_modal_title\": \"Редактирование конфигурации Claude API\",\n \"claude_edit_modal_key_label\": \"API-ключ:\",\n \"claude_edit_modal_url_label\": \"Базовый URL (необязательно):\",\n \"claude_edit_modal_proxy_label\": \"URL прокси (необязательно):\",\n \"claude_delete_confirm\": \"Удалить эту конфигурацию Claude?\",\n \"claude_models_label\": \"Пользовательские модели (необязательно):\",\n \"claude_models_hint\": \"Оставьте пустым, чтобы разрешить все модели, или добавьте записи name[, alias], чтобы ограничить/переименовать их.\",\n \"claude_models_add_btn\": \"Добавить модель\",\n \"claude_models_count\": \"Количество моделей\",\n \"claude_models_fetch_button\": \"Получить через /v1/models\",\n \"claude_models_fetch_title\": \"Выбор моделей из Claude /v1/models\",\n \"claude_models_fetch_hint\": \"Вызывает GET /v1/models по спецификации Anthropic. По умолчанию отправляются x-api-key и anthropic-version: 2023-06-01, объединённые с вашими пользовательскими заголовками.\",\n \"claude_models_fetch_url_label\": \"URL запроса\",\n \"claude_models_fetch_refresh\": \"Обновить\",\n \"claude_models_fetch_loading\": \"Получение моделей из Claude /v1/models...\",\n \"claude_models_fetch_empty\": \"Модели не вернулись. Проверьте Base URL, API-ключ или заголовки.\",\n \"claude_models_fetch_error\": \"Не удалось получить модели Claude\",\n \"claude_models_fetch_apply\": \"Добавить выбранные модели\",\n \"claude_models_search_label\": \"Поиск моделей\",\n \"claude_models_search_placeholder\": \"Фильтр по имени, псевдониму или описанию\",\n \"claude_models_search_empty\": \"Модели по запросу не найдены. Попробуйте другой ключ.\",\n \"claude_models_fetch_added\": \"Добавлено новых моделей: {{count}}\",\n \"claude_test_title\": \"Тест подключения\",\n \"claude_test_hint\": \"Отправляет тестовый запрос в /v1/messages по спецификации Anthropic, чтобы проверить текущую конфигурацию.\",\n \"claude_test_select_placeholder\": \"Выберите из текущих моделей\",\n \"claude_test_select_empty\": \"Модели не настроены. Сначала добавьте модели\",\n \"claude_test_action\": \"Тест\",\n \"claude_test_running\": \"Отправка тестового запроса Claude...\",\n \"claude_test_timeout\": \"Тестовый запрос превысил тайм-аут {{seconds}} с\",\n \"claude_test_success\": \"Тест выполнен успешно. Модель Claude ответила.\",\n \"claude_test_failed\": \"Тест не выполнен\",\n \"claude_test_key_required\": \"Укажите Claude API-ключ или задайте x-api-key в пользовательских заголовках\",\n \"claude_test_model_required\": \"Выберите модель для теста\",\n \"claude_test_endpoint_invalid\": \"Не удалось сформировать корректный endpoint Claude /v1/messages\",\n \"claude_cloak_title\": \"Маскировка запросов (необязательно):\",\n \"claude_cloak_toggle_label\": \"Включить\",\n \"claude_cloak_toggle_aria\": \"Переключить маскировку запросов\",\n \"claude_cloak_hint\": \"Маскировка делает запросы похожими на запросы официального CLI Claude Code для клиентов, которые не являются Claude Code.\",\n \"claude_cloak_mode_label\": \"Режим:\",\n \"claude_cloak_mode_hint\": \"auto: маскировать только если клиент не Claude Code; always: всегда; never: никогда.\",\n \"claude_cloak_mode_auto\": \"Auto (только не-Claude Code)\",\n \"claude_cloak_mode_always\": \"Всегда\",\n \"claude_cloak_mode_never\": \"Никогда\",\n \"claude_cloak_strict_label\": \"Строгий режим:\",\n \"claude_cloak_strict_hint\": \"Если включено, пользовательские system-сообщения удаляются, остаётся только промпт Claude Code.\",\n \"claude_cloak_sensitive_words_label\": \"Чувствительные слова (необязательно):\",\n \"claude_cloak_sensitive_words_placeholder\": \"Через запятую или с новой строки, например internal-project\",\n \"claude_cloak_sensitive_words_hint\": \"Эти слова будут обфусцированы с помощью символов нулевой ширины.\",\n \"claude_cloak_sensitive_words_count\": \"Чувствительные слова\",\n \"vertex_title\": \"Конфигурация Vertex API\",\n \"vertex_add_button\": \"Добавить конфигурацию\",\n \"vertex_empty_title\": \"Конфигурации Vertex отсутствуют\",\n \"vertex_empty_desc\": \"Нажмите кнопку выше, чтобы добавить первую конфигурацию\",\n \"vertex_item_title\": \"Конфигурация Vertex\",\n \"vertex_add_modal_title\": \"Добавление конфигурации Vertex API\",\n \"vertex_add_modal_key_label\": \"API-ключ:\",\n \"vertex_add_modal_key_placeholder\": \"Введите API-ключ Vertex\",\n \"vertex_add_modal_url_label\": \"Базовый URL:\",\n \"vertex_add_modal_url_placeholder\": \"например: https://example.com/api\",\n \"vertex_add_modal_proxy_label\": \"URL прокси (необязательно):\",\n \"vertex_add_modal_proxy_placeholder\": \"например: socks5://proxy.example.com:1080\",\n \"vertex_edit_modal_title\": \"Редактирование конфигурации Vertex API\",\n \"vertex_edit_modal_key_label\": \"API-ключ:\",\n \"vertex_edit_modal_url_label\": \"Базовый URL:\",\n \"vertex_edit_modal_proxy_label\": \"URL прокси (необязательно):\",\n \"vertex_delete_confirm\": \"Удалить эту конфигурацию Vertex?\",\n \"vertex_models_label\": \"Псевдонимы моделей:\",\n \"vertex_models_add_btn\": \"Добавить сопоставление\",\n \"vertex_models_count\": \"Количество псевдонимов\",\n \"ampcode_title\": \"Интеграция Amp CLI (ampcode)\",\n \"ampcode_modal_title\": \"Настройка Ampcode\",\n \"ampcode_upstream_url_label\": \"Upstream URL\",\n \"ampcode_upstream_url_placeholder\": \"например: https://ampcode.com\",\n \"ampcode_upstream_url_hint\": \"Необязательно. Оставьте пустым, чтобы использовать URL плоскости управления по умолчанию/обнаруженный автоматически.\",\n \"ampcode_upstream_api_key_label\": \"Upstream API-ключ (официальный Amp)\",\n \"ampcode_upstream_api_key_placeholder\": \"Введите sk-amp... (оставьте пустым, чтобы сохранить текущий)\",\n \"ampcode_upstream_api_key_hint\": \"Необязательно. Пустое значение не изменит текущий официальный ключ Amp. Используйте кнопку ниже, чтобы очистить его.\",\n \"ampcode_upstream_api_key_current\": \"Текущий официальный ключ Amp: {{key}}\",\n \"ampcode_clear_upstream_api_key\": \"Очистить официальный ключ\",\n \"ampcode_clear_upstream_api_key_confirm\": \"Очистить upstream API-ключ Ampcode (официальный Amp)?\",\n \"ampcode_upstream_api_keys_label\": \"Маршрутизация нескольких upstream API-ключей\",\n \"ampcode_upstream_api_keys_hint\": \"Привяжите разные upstream API-ключи Amp к указанным клиентским API-ключам. Клиентские ключи можно разделять запятыми или переводами строки.\",\n \"ampcode_upstream_api_keys_add_btn\": \"Добавить upstream-сопоставление\",\n \"ampcode_upstream_api_keys_upstream_placeholder\": \"Upstream API-ключ (sk-amp-...)\",\n \"ampcode_upstream_api_keys_clients_placeholder\": \"Клиентские API-ключи, через запятую или с новой строки\",\n \"ampcode_upstream_api_keys_item_title\": \"Upstream-сопоставление #{{index}}\",\n \"ampcode_upstream_api_keys_count\": \"Количество upstream-сопоставлений\",\n \"ampcode_force_model_mappings_label\": \"Принудительно применять сопоставления моделей\",\n \"ampcode_force_model_mappings_hint\": \"При включении сопоставления переопределяют локальные проверки доступности API-ключей.\",\n \"ampcode_model_mappings_label\": \"Сопоставления моделей (из → в)\",\n \"ampcode_model_mappings_hint\": \"Переименовывает модели в запросах Amp. Оставьте пустым, чтобы отключить сопоставления.\",\n \"ampcode_model_mappings_add_btn\": \"Добавить сопоставление\",\n \"ampcode_model_mappings_from_placeholder\": \"исходная модель\",\n \"ampcode_model_mappings_to_placeholder\": \"целевая модель\",\n \"ampcode_model_mappings_count\": \"Количество сопоставлений\",\n \"ampcode_lists_overwrite_title\": \"Перезаписать списки\",\n \"ampcode_lists_overwrite_confirm\": \"Существующие списки multi-upstream/сопоставлений моделей не удалось загрузить. Продолжение может перезаписать или очистить их. Продолжить?\",\n \"ampcode_mappings_overwrite_confirm\": \"Не удалось загрузить существующие сопоставления. Продолжение может перезаписать или очистить их. Продолжить?\",\n \"openai_title\": \"Совместимые с OpenAI провайдеры\",\n \"openai_add_button\": \"Добавить провайдера\",\n \"openai_empty_title\": \"Провайдеры OpenAI отсутствуют\",\n \"openai_empty_desc\": \"Нажмите кнопку выше, чтобы добавить первого провайдера\",\n \"openai_filtered_empty_title\": \"Нет подходящих провайдеров\",\n \"openai_filtered_empty_desc\": \"Ни один провайдер не соответствует текущему фильтру моделей. Очистите фильтр и попробуйте снова.\",\n \"sort_by_name\": \"Сортировать по имени\",\n \"sort_ascending\": \"Сортировать по возрастанию\",\n \"sort_asc_short\": \"Возр.\",\n \"sort_by_priority\": \"Сортировать по приоритету\",\n \"sort_by_recent_success\": \"Сортировать по недавним успехам\",\n \"sort_descending\": \"Сортировать по убыванию\",\n \"sort_desc_short\": \"Убыв.\",\n \"openai_test_model\": \"Тестовая модель\",\n \"openai_add_modal_title\": \"Добавление совместимого с OpenAI провайдера\",\n \"openai_add_modal_name_label\": \"Имя провайдера:\",\n \"openai_add_modal_name_placeholder\": \"например: openrouter\",\n \"openai_add_modal_url_label\": \"Базовый URL:\",\n \"openai_add_modal_url_placeholder\": \"например: https://openrouter.ai/api/v1\",\n \"openai_add_modal_keys_label\": \"API-ключи\",\n \"openai_edit_modal_keys_label\": \"API-ключи\",\n \"openai_keys_hint\": \"Добавляйте каждый ключ отдельно с необязательным URL прокси для удобства.\",\n \"openai_keys_add_btn\": \"Добавить ключ\",\n \"openai_key_placeholder\": \"ключ вида sk-...\",\n \"openai_proxy_placeholder\": \"Необязательный URL прокси (например, socks5://...)\",\n \"openai_add_modal_models_label\": \"Список моделей (name[, alias] по строкам):\",\n \"openai_models_hint\": \"Пример: gpt-4o-mini или moonshotai/kimi-k2:free, kimi-k2\",\n \"openai_model_name_placeholder\": \"Имя модели, например moonshotai/kimi-k2:free\",\n \"openai_model_alias_placeholder\": \"Псевдоним модели (необязательно)\",\n \"openai_models_add_btn\": \"Добавить модель\",\n \"openai_models_fetch_button\": \"Получить через /models\",\n \"openai_models_fetch_title\": \"Выбор моделей из /models\",\n \"openai_models_fetch_hint\": \"Вызовите эндпоинт /models, используя указанный выше базовый URL, отправив первый API-ключ как Bearer с дополнительными заголовками.\",\n \"openai_models_fetch_url_label\": \"URL запроса\",\n \"openai_models_fetch_refresh\": \"Обновить\",\n \"openai_models_fetch_loading\": \"Получение моделей из /models...\",\n \"openai_models_fetch_empty\": \"Модели не вернулись. Проверьте эндпоинт или авторизацию.\",\n \"openai_models_fetch_error\": \"Не удалось получить модели\",\n \"openai_models_fetch_back\": \"Вернуться к редактированию\",\n \"openai_models_fetch_apply\": \"Добавить выбранные модели\",\n \"openai_models_search_label\": \"Поиск моделей\",\n \"openai_models_search_placeholder\": \"Фильтр по имени, псевдониму или описанию\",\n \"openai_models_search_empty\": \"Модели по запросу не найдены. Попробуйте другой ключ.\",\n \"openai_models_fetch_invalid_url\": \"Сначала введите корректный базовый URL\",\n \"openai_models_fetch_added\": \"Добавлено новых моделей: {{count}}\",\n \"openai_edit_modal_title\": \"Редактирование совместимого с OpenAI провайдера\",\n \"openai_edit_modal_name_label\": \"Имя провайдера:\",\n \"openai_edit_modal_url_label\": \"Базовый URL:\",\n \"openai_edit_modal_models_label\": \"Список моделей (name[, alias] по строкам):\",\n \"openai_delete_confirm\": \"Удалить этого провайдера OpenAI?\",\n \"openai_keys_count\": \"Количество ключей\",\n \"openai_models_count\": \"Количество моделей\",\n \"openai_test_title\": \"Тест подключения\",\n \"openai_test_hint\": \"Отправьте запрос /chat/completions с текущими настройками, чтобы проверить доступность.\",\n \"openai_test_model_placeholder\": \"Модель для теста\",\n \"openai_test_action\": \"Запустить тест\",\n \"openai_test_running\": \"Отправка тестового запроса...\",\n \"openai_test_timeout\": \"Тестовый запрос превысил тайм-аут {{seconds}} с\",\n \"openai_test_success\": \"Тест выполнен успешно. Модель ответила.\",\n \"openai_test_failed\": \"Тест не выполнен\",\n \"openai_test_select_placeholder\": \"Выберите из текущих моделей\",\n \"openai_test_select_empty\": \"Модели не настроены. Сначала добавьте модели\",\n \"openai_test_single_action\": \"Тест\",\n \"openai_test_all_action\": \"Тестировать все ключи\",\n \"openai_test_all_hint\": \"Проверить состояние подключения для всех ключей\",\n \"openai_test_all_success\": \"Все {{count}} ключей прошли тест\",\n \"openai_test_all_failed\": \"Все {{count}} ключей не прошли тест\",\n \"openai_test_all_partial\": \"Тест завершен: {{success}} прошло, {{failed}} не прошло\",\n \"model_search_placeholder\": \"Фильтр по моделям...\",\n \"model_search_clear\": \"Очистить\",\n \"model_select_all\": \"Выбрать все\",\n \"model_filter_empty\": \"Нет моделей для фильтра\"\n },\n \"auth_files\": {\n \"title\": \"Управление файлами авторизации\",\n \"title_section\": \"Файлы авторизации\",\n \"description\": \"Управляйте всеми JSON-файлами авторизации CLI Proxy (например, Qwen, Gemini, Vertex). Загрузка учётных данных сразу включает соответствующую интеграцию AI.\",\n \"upload_button\": \"Загрузить файл\",\n \"delete_all_button\": \"Удалить всё\",\n \"empty_title\": \"Файлы авторизации отсутствуют\",\n \"empty_desc\": \"Нажмите кнопку выше, чтобы загрузить первый файл\",\n \"search_empty_title\": \"Файлы не найдены\",\n \"search_empty_desc\": \"Попробуйте изменить фильтры или очистить строку поиска.\",\n \"file_size\": \"Размер\",\n \"file_modified\": \"Изменён\",\n \"health_status_label\": \"Состояние\",\n \"health_status_healthy\": \"Нормально\",\n \"health_status_warning\": \"Предупреждение\",\n \"health_status_disabled\": \"Отключено\",\n \"health_status_unknown\": \"Неизвестно\",\n \"health_status_no_message\": \"Нет сообщения о статусе\",\n \"last_refresh_label\": \"Последнее обновление\",\n \"refresh_not_available\": \"Н/Д\",\n \"refresh_just_now\": \"Только что\",\n \"download_button\": \"Скачать\",\n \"delete_button\": \"Удалить\",\n \"delete_confirm\": \"Удалить файл\",\n \"delete_all_confirm\": \"Удалить все файлы авторизации? Это действие нельзя отменить!\",\n \"delete_filtered_confirm\": \"Удалить все файлы авторизации {{type}}? Это действие нельзя отменить!\",\n \"delete_problem_button\": \"Удалить проблемные\",\n \"delete_problem_button_with_type\": \"Удалить проблемные файлы {{type}}\",\n \"delete_problem_confirm\": \"Удалить все проблемные файлы авторизации? Это действие нельзя отменить!\",\n \"delete_problem_filtered_confirm\": \"Удалить все проблемные файлы авторизации {{type}}? Это действие нельзя отменить!\",\n \"delete_filtered_result_button\": \"Удалить результаты фильтра\",\n \"delete_filtered_result_confirm\": \"Удалить файлы авторизации из текущих результатов фильтра? Это действие нельзя отменить!\",\n \"upload_error_json\": \"Допустимы только файлы JSON\",\n \"upload_error_size\": \"Размер файла не может превышать {{maxSize}}\",\n \"upload_success\": \"Файл успешно загружен\",\n \"download_success\": \"Файл успешно скачан\",\n \"delete_success\": \"Файл успешно удалён\",\n \"delete_all_success\": \"Удаление завершено\",\n \"delete_filtered_success\": \"Удалено файлов {{type}}: {{count}}\",\n \"delete_filtered_partial\": \"Удаление файлов {{type}} завершено: успешных {{success}}, ошибок {{failed}}\",\n \"delete_filtered_none\": \"Нет файлов {{type}} для удаления при текущем фильтре\",\n \"delete_problem_success\": \"Удалено проблемных файлов авторизации: {{count}}\",\n \"delete_problem_filtered_success\": \"Удалено проблемных файлов авторизации {{type}}: {{count}}\",\n \"delete_problem_partial\": \"Удаление проблемных файлов авторизации завершено: успешных {{success}}, ошибок {{failed}}\",\n \"delete_problem_filtered_partial\": \"Удаление проблемных файлов авторизации {{type}} завершено: успешных {{success}}, ошибок {{failed}}\",\n \"delete_problem_none\": \"Нет проблемных файлов авторизации для удаления при текущем фильтре\",\n \"delete_problem_filtered_none\": \"Нет проблемных файлов авторизации {{type}} для удаления при текущем фильтре\",\n \"delete_filtered_result_success\": \"Удалено файлов авторизации из результатов фильтра: {{count}}\",\n \"delete_filtered_result_partial\": \"Удаление результатов фильтра завершено: успешных {{success}}, ошибок {{failed}}\",\n \"delete_filtered_result_none\": \"Нет файлов авторизации для удаления в текущих результатах фильтра\",\n \"files_count\": \"файлов\",\n \"pagination_prev\": \"Предыдущая\",\n \"pagination_next\": \"Следующая\",\n \"pagination_info\": \"Страница {{current}} / {{total}} · {{count}} файлов\",\n \"search_label\": \"Поиск конфигов\",\n \"search_placeholder\": \"Фильтр по имени, типу или провайдеру, поддерживается wildcard *\",\n \"problem_filter_label\": \"Фильтр проблем\",\n \"problem_filter_only\": \"Показывать только проблемные учётные данные\",\n \"disabled_filter_only\": \"Показывать только отключённые учётные данные\",\n \"display_options_label\": \"Параметры отображения\",\n \"compact_mode_label\": \"Компактный режим\",\n \"sort_label\": \"Сортировка\",\n \"sort_default\": \"По умолчанию\",\n \"sort_az\": \"A-Z Имя\",\n \"sort_priority\": \"Приоритет\",\n \"priority_display\": \"Приоритет\",\n \"page_size_label\": \"На странице\",\n \"page_size_unit\": \"элементов\",\n \"view_mode_paged\": \"Постранично\",\n \"view_mode_all\": \"Показать все\",\n \"too_many_files_warning\": \"Слишком много учётных данных. Полный список может повлиять на производительность, используйте постраничный режим.\",\n \"filter_all\": \"Все\",\n \"filter_qwen\": \"Qwen\",\n \"filter_gemini\": \"Gemini\",\n \"filter_gemini-cli\": \"GeminiCLI\",\n \"filter_kimi\": \"Kimi\",\n \"filter_aistudio\": \"AIStudio\",\n \"filter_claude\": \"Claude\",\n \"filter_codex\": \"Codex\",\n \"filter_antigravity\": \"Antigravity\",\n \"filter_xai\": \"xAI\",\n \"filter_iflow\": \"iFlow\",\n \"filter_vertex\": \"Vertex\",\n \"filter_empty\": \"Пусто\",\n \"filter_unknown\": \"Другое\",\n \"type_qwen\": \"Qwen\",\n \"type_gemini\": \"Gemini\",\n \"type_gemini-cli\": \"GeminiCLI\",\n \"type_kimi\": \"Kimi\",\n \"type_aistudio\": \"AIStudio\",\n \"type_claude\": \"Claude\",\n \"type_codex\": \"Codex\",\n \"type_antigravity\": \"Antigravity\",\n \"type_xai\": \"xAI\",\n \"type_iflow\": \"iFlow\",\n \"type_vertex\": \"Vertex\",\n \"type_empty\": \"Пусто\",\n \"type_unknown\": \"Другое\",\n \"type_virtual\": \"Виртуальный файл авторизации\",\n \"models_button\": \"Модели\",\n \"models_title\": \"Поддерживаемые модели\",\n \"models_loading\": \"Загрузка списка моделей...\",\n \"models_empty\": \"Для этих учётных данных нет доступных моделей\",\n \"models_empty_desc\": \"Возможно, учётные данные ещё не загружены сервером или к ним не привязаны модели.\",\n \"models_unsupported\": \"Функция не поддерживается в текущей версии\",\n \"models_unsupported_desc\": \"Обновите CLI Proxy API до последней версии и повторите попытку\",\n \"models_excluded_badge\": \"Отключена\",\n \"models_excluded_hint\": \"Эта OAuth-модель отключена\",\n \"status_toggle_label\": \"Включено\",\n \"status_enabled_success\": \"\\\"{{name}}\\\" включён\",\n \"status_disabled_success\": \"\\\"{{name}}\\\" отключён\",\n \"batch_status_success\": \"{{count}} файлов обновлено\",\n \"batch_status_partial\": \"{{success}} обновлено, {{failed}} не удалось\",\n \"batch_delete_title\": \"Удалить выбранные файлы\",\n \"batch_delete_confirm\": \"Удалить {{count}} файлов?\",\n \"batch_selected\": \"{{count}} выбрано\",\n \"batch_select_all\": \"Выбрать все\",\n \"batch_select_page\": \"Выбрать страницу\",\n \"batch_select_filtered\": \"Выбрать по фильтру\",\n \"batch_invert_page\": \"Инвертировать страницу\",\n \"batch_deselect\": \"Отменить\",\n \"batch_download\": \"Скачать выбранные\",\n \"batch_download_success\": \"Запущена загрузка {{count}} файлов\",\n \"batch_download_partial\": \"Загрузка завершена: успешно {{success}}, ошибок {{failed}}\",\n \"batch_enable\": \"Включить\",\n \"batch_disable\": \"Отключить\",\n \"prefix_proxy_button\": \"Просмотр / редактирование файла авторизации\",\n \"auth_field_editor_title\": \"Просмотр / редактирование файла авторизации - {{name}}\",\n \"prefix_proxy_loading\": \"Загрузка файла авторизации...\",\n \"prefix_proxy_info_label\": \"Информация о файле авторизации (info)\",\n \"prefix_proxy_source_label\": \"JSON файла авторизации (предпросмотр)\",\n \"prefix_proxy_invalid_content_label\": \"Скачанное содержимое (сокращено)\",\n \"prefix_label\": \"Префикс (prefix)\",\n \"proxy_url_label\": \"URL прокси (proxy_url)\",\n \"prefix_placeholder\": \"\",\n \"proxy_url_placeholder\": \"socks5://username:password@proxy_ip:port/\",\n \"priority_label\": \"Приоритет (priority)\",\n \"priority_placeholder\": \"например: 10 или -1\",\n \"priority_hint\": \"Только целые числа. Некорректные значения игнорируются. Чем больше число, тем выше приоритет.\",\n \"websockets_label\": \"WebSockets (websockets)\",\n \"websockets_hint\": \"Включает websocket-транспорт Responses API для этих учётных данных.\",\n \"codex_websockets_label\": \"WebSockets (websockets)\",\n \"codex_websockets_hint\": \"Включает websocket-транспорт Responses API для этих учётных данных Codex.\",\n \"excluded_models_label\": \"Исключённые модели (excluded_models)\",\n \"excluded_models_placeholder\": \"Через запятую или с новой строки, например: model-a, gpt-5-*, *-preview\",\n \"excluded_models_hint\": \"Сохраняется как массив; значения trim/нижний регистр/без дублей/с сортировкой.\",\n \"disable_cooling_label\": \"Отключение охлаждения (disable_cooling)\",\n \"disable_cooling_placeholder\": \"например: true / false / 1 / 0\",\n \"disable_cooling_hint\": \"Поддерживает boolean, числа 0/не 0 и строки true/false/1/0; непарсируемые значения игнорируются.\",\n \"using_api_label\": \"Использовать официальный API (using_api)\",\n \"using_api_hint\": \"Если включено, используется официальный API xAI; если выключено — Grok CLI chat-proxy.\",\n \"note_label\": \"Заметка (note)\",\n \"note_placeholder\": \"Введите заметку, например: аккаунт Ивана\",\n \"note_hint\": \"Необязательно. Используется для описания назначения или владельца учётных данных; оставьте пустым, чтобы не записывать.\",\n \"note_display\": \"Заметка\",\n \"prefix_proxy_invalid_json\": \"Этот файл авторизации не является JSON-объектом, поэтому поля нельзя редактировать.\",\n \"prefix_proxy_html_challenge\": \"Скачанное содержимое является HTML-страницей проверки, а не JSON-объектом авторизации. Повторно авторизуйтесь или замените файл перед редактированием полей.\",\n \"prefix_proxy_saved_success\": \"Файл авторизации \\\"{{name}}\\\" успешно обновлён\",\n \"card_tools_title\": \"Инструменты\",\n \"quota_refresh_single\": \"Обновить квоту\",\n \"quota_refresh_hint\": \"Обновить квоту только для этих учётных данных\",\n \"quota_refresh_success\": \"Квота для \\\"{{name}}\\\" обновлена\",\n \"quota_refresh_failed\": \"Не удалось обновить квоту для \\\"{{name}}\\\": {{message}}\"\n },\n \"antigravity_quota\": {\n \"title\": \"Квота Antigravity\",\n \"empty_title\": \"Файлы авторизации Antigravity отсутствуют\",\n \"empty_desc\": \"Загрузите учётные данные Antigravity, чтобы увидеть оставшуюся квоту.\",\n \"idle\": \"Не загружено. Нажмите \\\"Обновить квоту\\\".\",\n \"loading\": \"Загрузка квоты...\",\n \"load_failed\": \"Не удалось загрузить квоту: {{message}}\",\n \"missing_auth_index\": \"В файле авторизации отсутствует auth_index\",\n \"empty_models\": \"Данные по квоте отсутствуют\",\n \"refresh_button\": \"Обновить квоту\",\n \"fetch_all\": \"Получить все\"\n },\n \"claude_quota\": {\n \"title\": \"Квота Claude\",\n \"empty_title\": \"Файлы авторизации Claude OAuth отсутствуют\",\n \"empty_desc\": \"Войдите через Claude OAuth, чтобы увидеть квоту.\",\n \"idle\": \"Не загружено. Нажмите \\\"Обновить квоту\\\".\",\n \"loading\": \"Загрузка квоты...\",\n \"load_failed\": \"Не удалось загрузить квоту: {{message}}\",\n \"missing_auth_index\": \"В файле авторизации отсутствует auth_index\",\n \"empty_windows\": \"Данные по квоте отсутствуют\",\n \"refresh_button\": \"Обновить квоту\",\n \"fetch_all\": \"Получить все\",\n \"five_hour\": \"Лимит на 5 часов\",\n \"seven_day\": \"Лимит на 7 дней\",\n \"seven_day_oauth_apps\": \"7 дней OAuth приложения\",\n \"seven_day_opus\": \"7 дней Opus\",\n \"seven_day_sonnet\": \"7 дней Sonnet\",\n \"seven_day_cowork\": \"7 дней Cowork\",\n \"iguana_necktie\": \"Iguana Necktie\",\n \"seven_day_fable\": \"7 дней Fable 5\",\n \"extra_usage_label\": \"Дополнительное использование\",\n \"plan_label\": \"План\",\n \"plan_unknown\": \"Неизвестно\",\n \"plan_free\": \"Free\",\n \"plan_pro\": \"Pro\",\n \"plan_max\": \"Max\",\n \"plan_max5\": \"Max 5x\",\n \"plan_max20\": \"Max 20x\",\n \"plan_team\": \"Team\"\n },\n \"gemini_cli_quota\": {\n \"title\": \"Квота Gemini CLI\",\n \"empty_title\": \"Файлы авторизации Gemini CLI отсутствуют\",\n \"empty_desc\": \"Загрузите учётные данные Gemini CLI, чтобы увидеть оставшуюся квоту.\",\n \"idle\": \"Не загружено. Нажмите \\\"Обновить квоту\\\".\",\n \"loading\": \"Загрузка квоты...\",\n \"load_failed\": \"Не удалось загрузить квоту: {{message}}\",\n \"missing_auth_index\": \"В файле авторизации отсутствует auth_index\",\n \"missing_project_id\": \"В учётных данных Gemini CLI отсутствует идентификатор проекта\",\n \"empty_buckets\": \"Данные по квоте отсутствуют\",\n \"refresh_button\": \"Обновить квоту\",\n \"fetch_all\": \"Получить все\",\n \"remaining_amount\": \"Осталось {{count}}\",\n \"tier_label\": \"Уровень\",\n \"tier_free\": \"Бесплатный\",\n \"tier_legacy\": \"Устаревший\",\n \"tier_standard\": \"Стандартный\",\n \"tier_pro\": \"Pro\",\n \"tier_ultra\": \"Ultra\",\n \"credit_label\": \"Google One AI кредиты\",\n \"credit_amount\": \"{{count}} кредитов\"\n },\n \"kimi_quota\": {\n \"title\": \"Квота Kimi\",\n \"empty_title\": \"Файлы авторизации Kimi отсутствуют\",\n \"empty_desc\": \"Загрузите учётные данные Kimi, чтобы увидеть оставшуюся квоту.\",\n \"idle\": \"Не загружено. Нажмите \\\"Обновить квоту\\\".\",\n \"loading\": \"Загрузка квоты...\",\n \"load_failed\": \"Не удалось загрузить квоту: {{message}}\",\n \"missing_auth_index\": \"В файле авторизации отсутствует auth_index\",\n \"empty_data\": \"Данные по квоте отсутствуют\",\n \"refresh_button\": \"Обновить квоту\",\n \"fetch_all\": \"Получить все\",\n \"weekly_limit\": \"Недельный лимит\",\n \"limit_window\": \"Лимит {{duration}}\",\n \"limit_index\": \"Лимит #{{index}}\",\n \"reset_hint\": \"сброс через {{hint}}\"\n },\n \"xai_quota\": {\n \"title\": \"Квота Grok\",\n \"empty_title\": \"Файлы авторизации xAI/Grok отсутствуют\",\n \"empty_desc\": \"Войдите через xAI OAuth, чтобы увидеть квоту Grok.\",\n \"idle\": \"Не загружено. Нажмите \\\"Обновить квоту\\\".\",\n \"loading\": \"Загрузка квоты...\",\n \"load_failed\": \"Не удалось загрузить квоту: {{message}}\",\n \"missing_auth_index\": \"В файле авторизации отсутствует auth_index\",\n \"empty_data\": \"Данные по квоте отсутствуют\",\n \"refresh_button\": \"Обновить квоту\",\n \"fetch_all\": \"Получить все\",\n \"weekly_limit\": \"Недельный лимит\",\n \"monthly_credits\": \"Месячные кредиты\",\n \"used_percent\": \"Использовано {{percent}}\",\n \"reset_at\": \"Сброс {{time}}\",\n \"product_usage\": \"Использование {{product}}\",\n \"plan_label\": \"План\",\n \"plan_supergrok\": \"SuperGrok\",\n \"plan_supergrok_heavy\": \"SuperGrok Heavy\",\n \"pay_as_you_go_label\": \"Оплата по факту\",\n \"pay_as_you_go_enabled\": \"Включено, лимит {{cap}}\",\n \"pay_as_you_go_disabled\": \"Отключено\"\n },\n \"vertex_import\": {\n \"title\": \"Вход с Vertex JSON\",\n \"description\": \"Загрузите JSON ключа сервисного аккаунта Google, чтобы сохранить его как auth-dir/vertex-<project>.json по тем же правилам, что и помощник CLI vertex-import.\",\n \"location_label\": \"Регион (необязательно)\",\n \"location_placeholder\": \"us-central1\",\n \"location_hint\": \"Оставьте пустым, чтобы использовать регион us-central1 по умолчанию.\",\n \"file_label\": \"JSON ключ сервисного аккаунта\",\n \"file_hint\": \"Принимаются только JSON-файлы ключей сервисных аккаунтов Google Cloud.\",\n \"file_placeholder\": \"Файл не выбран\",\n \"choose_file\": \"Выбрать файл\",\n \"import_button\": \"Импортировать учётные данные Vertex\",\n \"file_required\": \"Сначала выберите файл учётных данных .json\",\n \"success\": \"Учётные данные Vertex успешно импортированы\",\n \"result_title\": \"Учётные данные сохранены\",\n \"result_project\": \"ID проекта\",\n \"result_email\": \"Сервисный аккаунт\",\n \"result_location\": \"Регион\",\n \"result_file\": \"Сохранённый файл\"\n },\n \"oauth_excluded\": {\n \"title\": \"Отключение OAuth-моделей\",\n \"description\": \"Отключения моделей по провайдерам отображаются карточками; нажмите карточку, чтобы изменить или удалить. Поддерживаются шаблоны *. Область зависит от фильтра файлов авторизации.\",\n \"add\": \"Добавить отключение\",\n \"add_title\": \"Добавление отключения моделей для провайдера\",\n \"edit_title\": \"Редактирование отключения моделей для {{provider}}\",\n \"refresh\": \"Обновить\",\n \"refreshing\": \"Обновляется...\",\n \"provider_label\": \"Провайдер\",\n \"provider_auto\": \"Следовать текущему фильтру\",\n \"provider_placeholder\": \"например: gemini-cli\",\n \"provider_hint\": \"По умолчанию используется текущий фильтр; выберите существующего провайдера или введите новое имя.\",\n \"models_label\": \"Отключаемые модели\",\n \"models_loading\": \"Загрузка моделей...\",\n \"models_unsupported\": \"Текущая версия CPA не поддерживает загрузку списка моделей.\",\n \"models_loaded\": \"Загружено моделей: {{count}}. Отметьте модели, которые нужно отключить.\",\n \"no_models_available\": \"Для этого провайдера нет доступных моделей.\",\n \"custom_rule_label\": \"Пользовательское правило модели\",\n \"custom_rule_hint\": \"Введите точный ID модели или шаблон, например gpt-*.\",\n \"custom_rule_placeholder\": \"например: gpt-* / custom-model\",\n \"custom_rule_add\": \"Добавить правило\",\n \"custom_rules_label\": \"Настроенные пользовательские правила\",\n \"custom_rule_remove\": \"Удалить {{rule}}\",\n \"save\": \"Сохранить/обновить\",\n \"saving\": \"Сохранение...\",\n \"save_success\": \"Отключение моделей обновлено\",\n \"save_failed\": \"Не удалось обновить отключение моделей\",\n \"delete\": \"Удалить провайдера\",\n \"delete_confirm\": \"Удалить отключение моделей для {{provider}}?\",\n \"delete_success\": \"Отключение моделей провайдера удалено\",\n \"delete_failed\": \"Не удалось удалить отключение моделей\",\n \"deleting\": \"Удаление...\",\n \"no_models\": \"Отключаемые модели не настроены\",\n \"model_count\": \"Отключено моделей: {{count}}\",\n \"list_empty_all\": \"Отключений моделей пока нет — используйте \\\"Добавить отключение\\\".\",\n \"list_empty_filtered\": \"В этой области нет отключённых моделей; нажмите \\\"Добавить отключение\\\".\",\n \"disconnected\": \"Подключитесь к серверу, чтобы просматривать отключение моделей\",\n \"load_failed\": \"Не удалось загрузить отключение моделей\",\n \"provider_required\": \"Сначала укажите провайдера\",\n \"scope_all\": \"Область: все провайдеры\",\n \"scope_provider\": \"Область: {{provider}}\",\n \"upgrade_required\": \"Текущая версия CPA не поддерживает отключение OAuth-моделей. Пожалуйста, обновите систему.\",\n \"upgrade_required_title\": \"Пожалуйста, обновите CLI Proxy API\",\n \"upgrade_required_desc\": \"Текущая версия сервера не поддерживает получение отключения OAuth-моделей. Обновите CPA (CLI Proxy API) до последней версии и повторите попытку.\"\n },\n \"oauth_model_alias\": {\n \"title\": \"Псевдонимы моделей OAuth\",\n \"add\": \"Добавить псевдоним\",\n \"add_title\": \"Добавление псевдонимов моделей провайдера\",\n \"provider_label\": \"Провайдер\",\n \"provider_placeholder\": \"например: gemini-cli / vertex\",\n \"provider_hint\": \"По умолчанию используется текущий фильтр; выберите существующего провайдера или введите новое имя.\",\n \"model_source_loading\": \"Загрузка моделей...\",\n \"model_source_unsupported\": \"Текущая версия CPA не поддерживает загрузку списка моделей (ручной ввод остаётся доступным).\",\n \"model_source_loaded\": \"Загружено моделей: {{count}}. Используйте выпадающий список \\\"Исходная модель\\\" или введите своё значение. Сохранение пустого списка удаляет провайдера. Включите \\\"Сохранить оригинал\\\", чтобы оставить исходное имя вместе с псевдонимом.\",\n \"alias_label\": \"Псевдонимы моделей\",\n \"alias_name_placeholder\": \"Исходное имя модели\",\n \"alias_placeholder\": \"Псевдоним (обязательно)\",\n \"duplicate_alias\": \"Каждый псевдоним этого провайдера должен быть уникальным.\",\n \"alias_fork_label\": \"Сохранить оригинал\",\n \"add_alias\": \"Добавить псевдоним\",\n \"save\": \"Сохранить/обновить\",\n \"save_success\": \"Псевдонимы моделей обновлены\",\n \"save_failed\": \"Не удалось обновить псевдонимы моделей\",\n \"delete\": \"Удалить провайдера\",\n \"delete_confirm\": \"Удалить псевдонимы моделей для {{provider}}?\",\n \"delete_link_title\": \"Убрать сопоставление\",\n \"delete_link_confirm\": \"Удалить сопоставление из <code>{{sourceModel}}</code> ({{provider}}) к псевдониму <code>{{alias}}</code>?\",\n \"delete_alias_title\": \"Удалить псевдоним\",\n \"delete_alias_confirm\": \"Удалить псевдоним <code>{{alias}}</code> и все связанные сопоставления?\",\n \"delete_success\": \"Псевдонимы моделей удалены\",\n \"delete_failed\": \"Не удалось удалить псевдонимы моделей\",\n \"no_models\": \"Псевдонимов нет\",\n \"model_count\": \"Количество псевдонимов: {{count}}\",\n \"list_empty_all\": \"Псевдонимы ещё не созданы — используйте \\\"Добавить псевдоним\\\".\",\n \"chart_title\": \"Обзор всех сопоставлений\",\n \"diagram_providers\": \"Провайдеры\",\n \"diagram_source_models\": \"Исходные модели\",\n \"diagram_aliases\": \"Псевдонимы\",\n \"diagram_expand\": \"Развернуть\",\n \"diagram_collapse\": \"Свернуть\",\n \"diagram_add_alias\": \"Добавить псевдоним\",\n \"diagram_rename\": \"Переименовать\",\n \"diagram_rename_alias_title\": \"Переименование псевдонима\",\n \"diagram_rename_alias_label\": \"Новое имя псевдонима\",\n \"diagram_rename_placeholder\": \"Введите имя псевдонима...\",\n \"diagram_delete_link\": \"Убрать связь {{provider}} / {{name}}\",\n \"diagram_delete_alias\": \"Удалить псевдоним\",\n \"diagram_please_enter_alias\": \"Введите имя псевдонима.\",\n \"diagram_alias_exists\": \"Этот псевдоним уже существует.\",\n \"diagram_add_alias_title\": \"Добавление псевдонима\",\n \"diagram_add_alias_label\": \"Имя псевдонима\",\n \"diagram_add_placeholder\": \"Введите новое имя псевдонима...\",\n \"diagram_rename_btn\": \"Переименовать\",\n \"diagram_add_btn\": \"Добавить\",\n \"diagram_settings\": \"Настройки\",\n \"diagram_settings_title\": \"Настройки псевдонима — {{alias}}\",\n \"diagram_settings_source_title\": \"Настройки исходной модели\",\n \"diagram_settings_empty\": \"Для этого псевдонима ещё нет сопоставлений.\",\n \"diagram_tap_hint\": \"На сенсорных устройствах: коснитесь исходной модели, затем псевдонима для связывания.\",\n \"view_mode\": \"Режим просмотра\",\n \"view_mode_diagram\": \"Диаграмма\",\n \"view_mode_list\": \"Список\",\n \"provider_required\": \"Сначала укажите провайдера\",\n \"upgrade_required\": \"Эта функция требует более новой версии CLI Proxy API (CPA). Обновите систему.\",\n \"upgrade_required_title\": \"Пожалуйста, обновите CLI Proxy API\",\n \"upgrade_required_desc\": \"Текущая версия сервера не поддерживает API псевдонимов моделей OAuth. Обновите CLI Proxy API (CPA) до последней версии.\"\n },\n \"auth_login\": {\n \"codex_oauth_title\": \"Codex OAuth\",\n \"codex_oauth_button\": \"Начать вход Codex\",\n \"codex_oauth_hint\": \"Выполните вход в сервис Codex через OAuth и автоматически получите/сохраните файлы авторизации.\",\n \"codex_oauth_url_label\": \"URL авторизации:\",\n \"codex_open_link\": \"Открыть ссылку\",\n \"codex_copy_link\": \"Скопировать ссылку\",\n \"codex_oauth_status_waiting\": \"Ожидание аутентификации...\",\n \"codex_oauth_status_success\": \"Аутентификация успешна!\",\n \"codex_oauth_status_error\": \"Ошибка аутентификации:\",\n \"codex_oauth_start_error\": \"Не удалось запустить Codex OAuth:\",\n \"codex_oauth_polling_error\": \"Не удалось проверить статус аутентификации:\",\n \"anthropic_oauth_title\": \"Anthropic OAuth\",\n \"anthropic_oauth_button\": \"Начать вход Anthropic\",\n \"anthropic_oauth_hint\": \"Выполните вход в сервис Anthropic (Claude) через OAuth и автоматически получите/сохраните файлы авторизации.\",\n \"anthropic_oauth_url_label\": \"URL авторизации:\",\n \"anthropic_open_link\": \"Открыть ссылку\",\n \"anthropic_copy_link\": \"Скопировать ссылку\",\n \"anthropic_oauth_status_waiting\": \"Ожидание аутентификации...\",\n \"anthropic_oauth_status_success\": \"Аутентификация успешна!\",\n \"anthropic_oauth_status_error\": \"Ошибка аутентификации:\",\n \"anthropic_oauth_start_error\": \"Не удалось запустить Anthropic OAuth:\",\n \"anthropic_oauth_polling_error\": \"Не удалось проверить статус аутентификации:\",\n \"antigravity_oauth_title\": \"Antigravity OAuth\",\n \"antigravity_oauth_button\": \"Начать вход Antigravity\",\n \"antigravity_oauth_hint\": \"Выполните вход в сервис Antigravity (Google) через OAuth и автоматически получите/сохраните файлы авторизации.\",\n \"antigravity_oauth_url_label\": \"URL авторизации:\",\n \"antigravity_open_link\": \"Открыть ссылку\",\n \"antigravity_copy_link\": \"Скопировать ссылку\",\n \"antigravity_oauth_status_waiting\": \"Ожидание аутентификации...\",\n \"antigravity_oauth_status_success\": \"Аутентификация успешна!\",\n \"antigravity_oauth_status_error\": \"Ошибка аутентификации:\",\n \"antigravity_oauth_start_error\": \"Не удалось запустить Antigravity OAuth:\",\n \"antigravity_oauth_polling_error\": \"Не удалось проверить статус аутентификации:\",\n \"gemini_cli_oauth_title\": \"Gemini CLI OAuth\",\n \"gemini_cli_oauth_button\": \"Начать вход Gemini CLI\",\n \"gemini_cli_oauth_hint\": \"Выполните вход в сервис Google Gemini CLI через OAuth и автоматически получите/сохраните файлы авторизации.\",\n \"gemini_cli_project_id_label\": \"Google Cloud Project ID (необязательно):\",\n \"gemini_cli_project_id_placeholder\": \"Оставьте пустым, чтобы выбрать первый доступный проект автоматически\",\n \"gemini_cli_project_id_hint\": \"Необязательно. Если не указано, система автоматически выберет первый доступный проект вашей учётной записи. Введите ALL, чтобы получить все проекты.\",\n \"gemini_cli_project_id_required\": \"Укажите идентификатор проекта Google Cloud.\",\n \"gemini_cli_oauth_url_label\": \"URL авторизации:\",\n \"gemini_cli_open_link\": \"Открыть ссылку\",\n \"gemini_cli_copy_link\": \"Скопировать ссылку\",\n \"gemini_cli_oauth_status_waiting\": \"Ожидание аутентификации...\",\n \"gemini_cli_oauth_status_success\": \"Аутентификация успешна!\",\n \"gemini_cli_oauth_status_error\": \"Ошибка аутентификации:\",\n \"gemini_cli_oauth_start_error\": \"Не удалось запустить Gemini CLI OAuth:\",\n \"gemini_cli_oauth_polling_error\": \"Не удалось проверить статус аутентификации:\",\n \"kimi_oauth_title\": \"Kimi OAuth\",\n \"kimi_oauth_button\": \"Начать вход Kimi\",\n \"kimi_oauth_hint\": \"Выполните вход в сервис Kimi через поток авторизации устройства и автоматически получите/сохраните файлы авторизации.\",\n \"kimi_oauth_url_label\": \"URL авторизации:\",\n \"kimi_open_link\": \"Открыть ссылку\",\n \"kimi_copy_link\": \"Скопировать ссылку\",\n \"kimi_oauth_status_waiting\": \"Ожидание аутентификации...\",\n \"kimi_oauth_status_success\": \"Аутентификация успешна!\",\n \"kimi_oauth_status_error\": \"Ошибка аутентификации:\",\n \"kimi_oauth_start_error\": \"Не удалось запустить Kimi OAuth:\",\n \"kimi_oauth_polling_error\": \"Не удалось проверить статус аутентификации:\",\n \"xai_oauth_title\": \"xAI OAuth\",\n \"xai_oauth_button\": \"Начать вход xAI\",\n \"xai_oauth_hint\": \"Выполните вход в xAI Grok через OAuth и автоматически получите/сохраните файлы авторизации.\",\n \"xai_oauth_url_label\": \"URL авторизации:\",\n \"xai_open_link\": \"Открыть ссылку\",\n \"xai_copy_link\": \"Скопировать ссылку\",\n \"xai_oauth_status_waiting\": \"Ожидание аутентификации...\",\n \"xai_oauth_status_success\": \"Аутентификация успешна!\",\n \"xai_oauth_status_error\": \"Ошибка аутентификации:\",\n \"xai_oauth_start_error\": \"Не удалось запустить xAI OAuth:\",\n \"xai_oauth_polling_error\": \"Не удалось проверить статус аутентификации:\",\n \"xai_callback_label\": \"Callback URL или код\",\n \"xai_callback_placeholder\": \"Вставьте код со страницы Grok или полный callback URL\",\n \"xai_callback_hint\": \"Grok иногда показывает только код на странице. Вставьте этот код напрямую, приложение автоматически отправит его как http://127.0.0.1:56121/callback?...\",\n \"xai_callback_required\": \"Сначала вставьте код со страницы Grok или полный callback URL.\",\n \"xai_callback_state_missing\": \"Отсутствует state для этого входа xAI. Запустите вход xAI заново и затем отправьте код.\",\n \"oauth_callback_label\": \"Callback URL\",\n \"oauth_callback_placeholder\": \"http://localhost:1455/auth/callback?code=...&state=...\",\n \"oauth_callback_hint\": \"Режим удалённого браузера: после перенаправления провайдера на http://localhost:... скопируйте полный URL и отправьте его здесь.\",\n \"oauth_callback_button\": \"Отправить Callback URL\",\n \"oauth_callback_required\": \"Сначала вставьте полный URL перенаправления.\",\n \"oauth_callback_success\": \"Callback URL отправлен. Продолжайте ожидать аутентификацию.\",\n \"oauth_callback_error\": \"Не удалось отправить Callback URL:\",\n \"oauth_callback_upgrade_hint\": \"Обновите CLI Proxy API или проверьте подключение.\",\n \"oauth_callback_status_success\": \"Callback URL отправлен, ожидаем аутентификацию...\",\n \"oauth_callback_status_error\": \"Не удалось отправить Callback URL:\",\n \"missing_state\": \"Не удалось получить параметр состояния аутентификации\",\n \"login_another_account\": \"Войти в другой аккаунт\",\n \"view_auth_files\": \"Открыть файлы авторизации\",\n \"iflow_oauth_title\": \"iFlow OAuth\",\n \"iflow_oauth_button\": \"Начать вход iFlow\",\n \"iflow_oauth_hint\": \"Выполните вход в сервис iFlow через OAuth и автоматически получите/сохраните файлы авторизации.\",\n \"iflow_oauth_url_label\": \"URL авторизации:\",\n \"iflow_open_link\": \"Открыть ссылку\",\n \"iflow_copy_link\": \"Скопировать ссылку\",\n \"iflow_oauth_status_waiting\": \"Ожидание аутентификации...\",\n \"iflow_oauth_status_success\": \"Аутентификация успешна!\",\n \"iflow_oauth_status_error\": \"Ошибка аутентификации:\",\n \"iflow_oauth_start_error\": \"Не удалось запустить iFlow OAuth:\",\n \"iflow_oauth_polling_error\": \"Не удалось проверить статус аутентификации:\",\n \"remote_access_disabled\": \"Этот способ входа недоступен при удалённом доступе. Подключитесь с localhost.\"\n },\n \"stats\": {\n \"success\": \"Успех\",\n \"failure\": \"Сбой\"\n },\n \"status_bar\": {\n \"success_short\": \"✓\",\n \"failure_short\": \"✗\",\n \"no_requests\": \"Нет запросов\"\n },\n \"usage_stats\": {\n \"title\": \"Статистика использования\",\n \"total_requests\": \"Всего запросов\",\n \"success_requests\": \"Успешные запросы\",\n \"failed_requests\": \"Неуспешные запросы\",\n \"total_tokens\": \"Всего токенов\",\n \"cached_tokens\": \"Кэшированные токены\",\n \"cache_read_tokens\": \"Токены чтения из кэша\",\n \"cache_write_tokens\": \"Токены записи в кэш\",\n \"reasoning_tokens\": \"Токены рассуждений\",\n \"rpm_30m\": \"RPM\",\n \"tpm_30m\": \"TPM\",\n \"rate_30m\": \"Скорость (последние 30 мин)\",\n \"model_name\": \"Название модели\",\n \"model_price_settings\": \"Настройки стоимости моделей\",\n \"saved_prices\": \"Сохранённые цены\",\n \"requests_trend\": \"Динамика запросов\",\n \"tokens_trend\": \"Динамика токенов\",\n \"api_details\": \"Детали API\",\n \"by_hour\": \"По часам\",\n \"by_day\": \"По дням\",\n \"range_filter\": \"Диапазон времени\",\n \"range_all\": \"За всё время\",\n \"range_1h\": \"Последний час\",\n \"range_7h\": \"Последние 7 часов\",\n \"range_24h\": \"Последние 24 часа\",\n \"range_7d\": \"Последние 7 дней\",\n \"range_30d\": \"Последние 30 дней\",\n \"filter_all\": \"Все\",\n \"clear_filters\": \"Сбросить фильтры\",\n \"refresh\": \"Обновить\",\n \"export\": \"Экспорт\",\n \"import\": \"Импорт\",\n \"export_csv\": \"Экспорт CSV\",\n \"export_json\": \"Экспорт JSON\",\n \"export_success\": \"Экспорт использования скачан\",\n \"import_success\": \"Импорт завершён: добавлено {{added}}, пропущено {{skipped}}, всего {{total}}, ошибок {{failed}}\",\n \"import_success_migrated_v1\": \"Импорт завершён: добавлено {{added}}, пропущено {{skipped}}, всего {{total}}, ошибок {{failed}}. Контракт токенов перенесён со схемы v1 на v{{schemaVersion}}.\",\n \"import_invalid\": \"Недопустимый файл экспорта использования\",\n \"import_review_title\": \"Проверка импорта использования\",\n \"import_review_intro\": \"Импорт добавляет данные к существующим. Проверьте снимок перед объединением с текущей статистикой Core.\",\n \"import_review_summary\": \"Версия {{version}} · деталей запросов: {{details}}\",\n \"import_review_duplicates\": \"Возможных дубликатов внутри файла: {{count}}\",\n \"import_review_overlaps\": \"Возможных пересечений с текущими данными: {{count}}\",\n \"import_review_uncertain_identities\": \"Записей без стабильной временной метки, исключённых из проверки дубликатов и пересечений: {{count}}\",\n \"import_review_current_unavailable\": \"Текущая статистика недоступна, поэтому проверить пересечения не удалось.\",\n \"import_error_usage_version_unsupported\": \"Версия экспорта использования не поддерживается. Можно импортировать только схемы v1 и v2.\",\n \"import_error_usage_shape_invalid\": \"Недопустимая структура экспорта использования или тип поля.\",\n \"import_error_usage_v1_token_contract_invalid\": \"Контракт токенов схемы v1 недопустим и не может быть безопасно перенесён.\",\n \"import_error_usage_v1_cache_semantics_ambiguous\": \"Семантика кэша схемы v1 неоднозначна. Для записей с кэшем требуется uncached_input_tokens, чтобы выполнить перенос без потерь.\",\n \"import_error_usage_v2_token_contract_invalid\": \"Недопустимый канонический контракт токенов схемы v2.\",\n \"import_error_usage_aggregate_overflow\": \"Импорт приведёт к переполнению агрегатов использования Core. Данные использования не были объединены.\",\n \"import_review_confirm\": \"Всё равно импортировать\",\n \"chart_line_label_1\": \"Линия 1\",\n \"chart_line_label_2\": \"Линия 2\",\n \"chart_line_label_3\": \"Линия 3\",\n \"chart_line_label_4\": \"Линия 4\",\n \"chart_line_label_5\": \"Линия 5\",\n \"chart_line_label_6\": \"Линия 6\",\n \"chart_line_label_7\": \"Линия 7\",\n \"chart_line_label_8\": \"Линия 8\",\n \"chart_line_label_9\": \"Линия 9\",\n \"chart_line_hidden\": \"Скрыть\",\n \"chart_line_actions_label\": \"Линии для отображения\",\n \"chart_line_add\": \"Добавить линию\",\n \"chart_line_all\": \"Все\",\n \"chart_line_delete\": \"Удалить линию\",\n \"chart_line_hint\": \"Отображайте до 9 линий моделей одновременно\",\n \"no_data\": \"Данные отсутствуют\",\n \"loading_error\": \"Не удалось загрузить\",\n \"api_endpoint\": \"API-эндпоинт\",\n \"requests_count\": \"Количество запросов\",\n \"tokens_count\": \"Количество токенов\",\n \"model_cache_rate\": \"Доля чтения кеша\",\n \"model_cache_rate_hint\": \"Доля чтения кеша = токены чтения кеша / всего входных токенов. Показывается только когда для каждого запроса в статистике модели записаны детали; иначе не задана.\",\n \"models\": \"Статистика моделей\",\n \"success_rate\": \"Успешность\",\n \"total_cost\": \"Общая стоимость\",\n \"total_cost_hint\": \"Основано на настроенной стоимости моделей\",\n \"model_price_title\": \"Стоимость моделей\",\n \"model_price_reset\": \"Сбросить цены\",\n \"model_price_model_label\": \"Модель\",\n \"model_price_select_placeholder\": \"Выберите модель\",\n \"model_price_select_hint\": \"Модели берутся из детальной статистики использования\",\n \"model_price_prompt\": \"Цена prompt\",\n \"model_price_completion\": \"Цена completion\",\n \"model_price_cache\": \"Цена чтения из кэша\",\n \"model_price_cache_write\": \"Цена записи в кэш\",\n \"model_price_cache_write_auto\": \"Авто\",\n \"model_price_cache_write_hint\": \"Если поле пустое, используется текущая цена prompt. Существующие значения «Авто» также следуют этому правилу.\",\n \"model_price_invalid\": \"Введите корректное число не меньше 0.\",\n \"model_price_save\": \"Сохранить цену\",\n \"model_price_empty\": \"Цена для моделей не задана\",\n \"model_price_model\": \"Модель\",\n \"model_price_saved\": \"Цена модели сохранена\",\n \"model_price_model_required\": \"Выберите модель для задания цены\",\n \"pricing_title\": \"Рабочая область цен\",\n \"pricing_subtitle\": \"API-эквивалентная сумма в USD рассчитывается по текущему API-каталогу, локальному профилю браузера, токенам, service tier и context band.\",\n \"pricing_back\": \"Назад к использованию\",\n \"pricing_open\": \"Настроить цены\",\n \"pricing_catalog\": \"Каталог предустановок\",\n \"pricing_catalog_version\": \"Версия каталога\",\n \"pricing_catalog_title\": \"Таблица предустановленных цен\",\n \"pricing_catalog_description\": \"Все {{count}} проверенных моделей доступны независимо от данных использования. Каталог обновлён {{asOf}}; каждая строка содержит ссылку на официальный источник, локальные переопределения браузера не включены.\",\n \"pricing_catalog_unit\": \"USD / 1 млн токенов\",\n \"pricing_catalog_table_label\": \"Полная таблица предустановленных цен\",\n \"pricing_catalog_context_band\": \"Диапазон контекста\",\n \"pricing_catalog_short_band\": \"Короткий контекст\",\n \"pricing_catalog_long_band\": \"Длинный контекст\",\n \"pricing_catalog_short_range\": \"< {{threshold}} входных токенов\",\n \"pricing_catalog_long_range\": \"≥ {{threshold}} входных токенов · весь запрос\",\n \"pricing_catalog_all_contexts\": \"Все поддерживаемые контексты\",\n \"pricing_catalog_aliases\": \"Псевдонимы: {{aliases}}\",\n \"pricing_catalog_model_notes\": \"Описание модели\",\n \"pricing_catalog_verified_as_of\": \"Проверено: {{asOf}}\",\n \"pricing_catalog_unavailable\": \"Недоступно\",\n \"pricing_catalog_fast_explicit_summary\": \"Вход {{input}} · кэш {{cached}} · запись {{cacheWrite}} · выход {{output}}\",\n \"pricing_source\": \"Официальный источник\",\n \"pricing_api_source\": \"Источник цен API\",\n \"pricing_estimate_notice\": \"Локальная API-эквивалентная оценка справочная и не является счётом поставщика.\",\n \"pricing_browser_notice\": \"Профиль хранится только в этом браузере и используется всеми экземплярами Core, открытыми в нём.\",\n \"pricing_history_notice\": \"Все исторические запросы пересчитываются по текущему каталогу и профилю.\",\n \"pricing_migrated_v2\": \"Цены v2 полностью сохранены в профиле v3. Совпадающие короткие тарифы можно переключить на полные предустановки после подтверждения.\",\n \"pricing_profile_warning\": \"Сохранённый профиль цен содержит недопустимые данные. Проверьте текущие значения по умолчанию перед сохранением.\",\n \"pricing_profile_save_failed\": \"Не удалось сохранить профиль цен в этом браузере.\",\n \"pricing_profile_saved\": \"Профиль цен сохранён\",\n \"pricing_summary\": \"Сводка покрытия цен\",\n \"pricing_api_usd_estimate\": \"Локальная API-эквивалентная оценка (USD)\",\n \"pricing_api_usd\": \"Локальная API-эквивалентная сумма\",\n \"pricing_api_request_coverage\": \"Покрытие запросов локальной оценкой\",\n \"pricing_requests_unit\": \"запросов\",\n \"pricing_models_metric\": \"Модели с ценой / фактические модели\",\n \"pricing_request_coverage\": \"Покрытие запросов ценами\",\n \"pricing_token_coverage\": \"Покрытие токенов ценами\",\n \"pricing_assumed_tier\": \"Запросы с предполагаемым уровнем\",\n \"pricing_assumed_tier_hint\": \"Исторические или неизвестные уровни оцениваются как Std\",\n \"pricing_cost_incomplete\": \"Локальная оценка неполная: использование без соответствия, с неподдерживаемым тарифом или без деталей не включено.\",\n \"pricing_partial_coverage\": \"Частичная локальная оценка: покрыто {{request}}% запросов и {{token}}% токенов.\",\n \"pricing_entry_title\": \"Локальная API-эквивалентная оценка\",\n \"pricing_entry_description\": \"Суммы полностью рассчитываются в браузере по каталогу, профилю, токенам, service tier и context band.\",\n \"pricing_models_covered\": \"Цена задана для {{priced}} из {{total}} моделей\",\n \"pricing_requests_covered\": \"Покрытие запросов: {{percent}}%\",\n \"pricing_models_ratio\": \"Покрытие моделей: {{percent}}%\",\n \"pricing_search\": \"Поиск моделей из реального использования\",\n \"pricing_filter\": \"Фильтр состояния цен\",\n \"pricing_filter_all\": \"Все\",\n \"pricing_filter_preset\": \"Предустановка\",\n \"pricing_filter_custom\": \"Пользовательские\",\n \"pricing_filter_unmatched\": \"Нет локального соответствия\",\n \"pricing_filter_anomaly\": \"Аномалия\",\n \"pricing_import_action\": \"Импортировать профиль\",\n \"pricing_export_action\": \"Экспортировать профиль\",\n \"pricing_reset_action\": \"Восстановить все значения\",\n \"pricing_export_success\": \"Профиль цен экспортирован\",\n \"pricing_import_title\": \"Импорт профиля цен\",\n \"pricing_import_confirm\": \"Заменить текущий профиль цен API v3 в браузере этим проверенным файлом? Данные использования не изменятся.\",\n \"pricing_import_success\": \"Профиль цен импортирован\",\n \"pricing_import_invalid\": \"Недопустимый профиль цен\",\n \"pricing_reset_title\": \"Восстановить все предустановленные цены\",\n \"pricing_reset_confirm\": \"Удалить все переопределения и псевдонимы цен API v3? Данные использования останутся без изменений.\",\n \"pricing_reset_success\": \"Предустановленные цены восстановлены\",\n \"pricing_empty_title\": \"Моделей использования пока нет\",\n \"pricing_empty_description\": \"Конфигуратор показывает только модели, встречающиеся в реальных данных использования. Сначала создайте или импортируйте статистику.\",\n \"pricing_standard_short\": \"Короткий Standard\",\n \"pricing_standard_api\": \"API Standard\",\n \"pricing_fast\": \"Fast\",\n \"pricing_fast_policies\": \"Правила Fast\",\n \"pricing_fast_policy_title\": \"API Priority и ChatGPT Standard/Fast используют отдельные официальные множители.\",\n \"pricing_api_priority_multiplier\": \"API ×{{multiplier}}\",\n \"pricing_api_priority_multiplier_official\": \"Официальный API ×{{multiplier}}\",\n \"pricing_api_priority_multiplier_custom\": \"Пользовательский API ×{{multiplier}}\",\n \"pricing_api_priority_explicit_rates\": \"Явные ставки API\",\n \"pricing_long_context\": \"Длинный контекст\",\n \"pricing_usage\": \"Текущее использование\",\n \"pricing_no_usage_requests\": \"Нет запросов использования\",\n \"pricing_no_usage_tokens\": \"Нет токенов использования\",\n \"pricing_matching_presets_notice\": \"{{count}} устаревших пользовательских тарифов совпадают с короткими предустановленными тарифами, но всё ещё перекрывают официальные правила Fast и длинного контекста.\",\n \"pricing_matching_presets_title\": \"Использовать полные предустановки\",\n \"pricing_matching_presets_confirm\": \"Удалить только {{count}} совпадающих переопределений, чтобы применить официальные правила Fast и длинного контекста? Остальные пользовательские цены и псевдонимы не изменятся.\",\n \"pricing_matching_presets_action\": \"Использовать предустановки\",\n \"pricing_matching_presets_success\": \"Для {{count}} совпадающих переопределений применены полные предустановки\",\n \"pricing_unmatched\": \"Нет точного соответствия\",\n \"pricing_match_custom\": \"Пользовательская\",\n \"pricing_match_preset\": \"Предустановка\",\n \"pricing_match_alias\": \"Псевдоним\",\n \"pricing_match_none\": \"Без соответствия\",\n \"pricing_anomaly\": \"Требует проверки\",\n \"pricing_long_unsupported\": \"Fast не поддерживает длинный контекст\",\n \"pricing_fast_configured\": \"Fast настроен\",\n \"pricing_long_requests\": \"Запросов с длинным контекстом: {{count}}\",\n \"pricing_short_only\": \"Только короткий контекст\",\n \"pricing_single_rate_card\": \"Один тариф API для всех поддерживаемых контекстов\",\n \"pricing_no_matches\": \"Нет моделей, соответствующих текущему поиску и фильтру.\",\n \"pricing_catalog_footer\": \"Каталог API содержит {{count}} проверенных моделей · проверено {{asOf}} · USD за 1 млн токенов.\",\n \"pricing_editor_title\": \"Редактор цен API-токенов\",\n \"pricing_editor_domain_notice\": \"Профиль влияет на локальную API-эквивалентную оценку всех совпавших записей.\",\n \"pricing_alias\": \"Точная цель псевдонима\",\n \"pricing_alias_hint\": \"Сопоставьте это имя модели с одной точной предустановленной или пользовательской моделью. В режиме псевдонима прямое редактирование тарифов отключено.\",\n \"pricing_alias_canonical_hint\": \"Эта модель уже точно совпадает с предустановкой, поэтому псевдоним не требуется.\",\n \"pricing_standard_rates\": \"Тарифы Standard · USD / 1 млн\",\n \"pricing_fast_rates\": \"Тарифы Fast · USD / 1 млн\",\n \"pricing_rate_input\": \"Вход\",\n \"pricing_rate_cached_input\": \"Кэшированный вход\",\n \"pricing_rate_cache_write\": \"Запись в кэш\",\n \"pricing_rate_output\": \"Выход\",\n \"pricing_auto\": \"Авто / цена входа\",\n \"pricing_fast_mode_none\": \"Не настроено\",\n \"pricing_fast_mode_rates\": \"Явные тарифы\",\n \"pricing_fast_mode_multiplier\": \"Standard × множитель\",\n \"pricing_fast_multiplier\": \"Множитель Fast\",\n \"pricing_fast_long_supported\": \"Разрешить Fast с длинным контекстом\",\n \"pricing_long_enable\": \"Включить тарифы длинного контекста\",\n \"pricing_long_threshold\": \"Порог входных токенов\",\n \"pricing_preview_affected\": \"Затронутые запросы использования\",\n \"pricing_preview_coverage\": \"Локальное покрытие запросов\",\n \"pricing_preview_cost\": \"Локальная оценка после пересчёта\",\n \"pricing_editor_error_rates\": \"Введите корректные неотрицательные тарифы для всех обязательных полей.\",\n \"pricing_editor_error_threshold\": \"Введите положительный целочисленный порог длинного контекста.\",\n \"pricing_editor_error_multiplier\": \"Введите множитель Fast больше 0.\",\n \"pricing_editor_error_profile\": \"Псевдоним или тарифы конфликтуют с профилем цен.\",\n \"pricing_restore_preset\": \"Восстановить предустановку\",\n \"pricing_delete_config\": \"Удалить конфигурацию\",\n \"pricing_preset_restored\": \"Предустановка восстановлена\",\n \"pricing_custom_deleted\": \"Пользовательские цены удалены\",\n \"cost_trend\": \"Обзор стоимости\",\n \"pricing_api_usd_trend\": \"Тренд локальной API-эквивалентной оценки (USD)\",\n \"cost_axis_label\": \"Стоимость ($)\",\n \"cost_need_price\": \"Задайте стоимость модели, чтобы увидеть статистику затрат\",\n \"cost_need_usage\": \"Нет данных использования для расчёта стоимости\",\n \"cost_no_data\": \"Данных о стоимости ещё нет\",\n \"credential_stats\": \"Статистика учётных данных\",\n \"credential_name\": \"Учётные данные\",\n \"token_breakdown\": \"Распределение типов токенов\",\n \"request_events_title\": \"События запросов\",\n \"request_events_filter_model\": \"Модель\",\n \"request_events_filter_source\": \"Источник\",\n \"request_events_filter_auth_index\": \"Auth Index\",\n \"request_events_filter_tier\": \"Уровень обслуживания\",\n \"request_events_filter_effort\": \"Усилие рассуждения\",\n \"request_events_filter_cache\": \"Статус кеша\",\n \"request_events_numeric_filter\": \"Диапазон токенов\",\n \"request_events_numeric_metric\": \"Метрика токенов\",\n \"request_events_numeric_any\": \"Выберите метрику\",\n \"request_events_numeric_min\": \"Минимум\",\n \"request_events_numeric_max\": \"Максимум\",\n \"request_events_numeric_invalid\": \"Введите неотрицательные целые границы.\",\n \"request_events_numeric_range_invalid\": \"Минимум не может превышать максимум.\",\n \"request_events_numeric_help\": \"Выберите метрику токенов и укажите хотя бы одну границу. Результаты изменятся только после применения.\",\n \"request_events_numeric_preview\": \"Предпросмотр\",\n \"request_events_numeric_active_label\": \"Диапазон токенов: {{filter}}\",\n \"request_events_numeric_clear\": \"Очистить диапазон\",\n \"request_events_numeric_apply\": \"Применить диапазон\",\n \"request_events_cache_present\": \"Есть кешированные токены\",\n \"request_events_cache_absent\": \"Без кешированных токенов\",\n \"request_events_range_page\": \"Как на странице ({{range}})\",\n \"request_events_column_settings\": \"Настройка столбцов\",\n \"request_events_restore_default_columns\": \"Восстановить столбцы по умолчанию\",\n \"request_events_timestamp\": \"Время\",\n \"request_events_source\": \"Источник\",\n \"request_events_auth_index\": \"Auth Index\",\n \"request_events_tier\": \"Уровень\",\n \"request_events_tier_fast\": \"Fast\",\n \"request_events_tier_standard\": \"Std\",\n \"request_events_tier_tooltip_effective\": \"Core подтвердил фактический уровень обслуживания: {{tier}}.\",\n \"request_events_tier_tooltip_response\": \"Вышестоящий сервис сообщил уровень обслуживания: {{tier}}.\",\n \"request_events_tier_tooltip_request\": \"Показан запрошенный уровень {{tier}}; фактическая тарификация может отличаться.\",\n \"request_events_tier_tooltip_assumed\": \"Исторический или неизвестный уровень; оценено как Std.\",\n \"request_events_tier_legacy_unknown\": \"Исторический / Неизвестно\",\n \"request_events_tier_other\": \"Другое: {{tier}}\",\n \"request_events_effort\": \"Усилие\",\n \"request_events_effort_legacy_unknown\": \"Исторический / Неизвестно\",\n \"request_events_result\": \"Результат\",\n \"time\": \"Задержка\",\n \"avg_time\": \"Средняя задержка\",\n \"latency_unit_hint\": \"Длительность берётся из поля бэкенда {{field}} и интерпретируется как {{unit}} перед форматированием.\",\n \"duration_unit_d\": \"д\",\n \"duration_unit_h\": \"ч\",\n \"duration_unit_m\": \"мин\",\n \"duration_unit_s\": \"с\",\n \"duration_unit_ms\": \"мс\",\n \"request_events_empty_title\": \"События запросов отсутствуют\",\n \"request_events_empty_desc\": \"Нет деталей запросов для выбранного диапазона времени.\",\n \"request_events_no_result_title\": \"Совпадений не найдено\",\n \"request_events_no_result_desc\": \"Попробуйте другие фильтры или очистите текущие.\",\n \"request_events_count\": \"{{count}} событий\",\n \"request_events_limit_hint\": \"Показано {{shown}} из {{total}} событий для стабильной производительности.\",\n \"request_events_total_input_tokens\": \"Всего входных токенов\",\n \"request_events_non_cache_read_input_tokens\": \"Входные токены без чтения кеша\",\n \"request_events_non_cache_read_input_tokens_hint\": \"Локально вычисляется в Panel как разность всех входных токенов и токенов чтения кеша, не меньше 0. Это дополнение доли чтения кеша, а не обычные токены промпта. Токены записи кеша отображаются и тарифицируются отдельно.\",\n \"request_events_total_output_tokens\": \"Всего выходных токенов\",\n \"request_events_explicit_output_tokens\": \"Явные выходные токены\",\n \"request_events_output_tokens_hint\": \"Явные выходные токены = всего выходных токенов - токены рассуждения; результат не меньше 0.\",\n \"request_events_cache_rate\": \"Доля чтения кеша\",\n \"request_events_cache_rate_hint\": \"Доля чтения кеша = токены чтения кеша / всего входных токенов. Нулевая доля и значения ниже 25% считаются низкими, от 25% включительно до 60% исключительно — средними, 60% и выше — высокими; чтение кеша больше общего ввода помечается как аномалия. По этому статусу окрашивается только значение чтения кеша; остальные значения токенов остаются нейтральными.\",\n \"request_events_cache_rate_low\": \"Низкая\",\n \"request_events_cache_rate_medium\": \"Средняя\",\n \"request_events_cache_rate_high\": \"Высокая\",\n \"request_events_cache_rate_anomaly\": \"Аномалия\",\n \"request_events_cache_rate_cell_label\": \"Токены чтения кеша: {{tokens}}, доля: {{rate}}, уровень: {{tone}}\",\n \"request_events_cache_rate_anomaly_label\": \"Токенов чтения кеша ({{tokens}}) больше, чем всего входных токенов ({{input}}).\",\n \"request_events_table_region\": \"Таблица событий запросов\",\n \"input_tokens\": \"Входные токены\",\n \"output_tokens\": \"Выходные токены\",\n \"last_updated\": \"Обновлено\"\n },\n \"service_health\": {\n \"title\": \"Состояние сервиса\",\n \"window\": \"Последние 7 дней\",\n \"oldest\": \"Старые\",\n \"newest\": \"Новые\"\n },\n \"logs\": {\n \"title\": \"Просмотр журналов\",\n \"runtime_unknown\": \"Текущий режим: определяется\",\n \"runtime_cpa\": \"Текущий режим: CPA\",\n \"runtime_home\": \"Текущий режим: Home\",\n \"refresh_button\": \"Обновить журналы\",\n \"clear_button\": \"Очистить журналы\",\n \"fullscreen_button\": \"На весь экран\",\n \"exit_fullscreen_button\": \"Выйти из полноэкранного режима\",\n \"download_button\": \"Скачать журналы\",\n \"error_log_button\": \"Выбрать журнал ошибок\",\n \"error_logs_modal_title\": \"Журналы ошибок запросов\",\n \"error_logs_description\": \"Выберите файл журнала ошибок запроса, чтобы открыть или скачать его (создаётся только при отключённом журналировании запросов).\",\n \"error_logs_home_unavailable\": \"В режиме Home смотрите журналы базы данных на вкладке содержимого. Файлы ошибок запросов относятся только к файловым журналам CPA.\",\n \"error_logs_request_log_enabled\": \"Журналирование запросов включено, поэтому этот список всегда будет пустым. Отключите журналирование запросов и обновите список, чтобы просмотреть журналы ошибок.\",\n \"error_logs_empty\": \"Файлы журнала ошибок запросов не найдены\",\n \"error_logs_load_error\": \"Не удалось загрузить список журналов ошибок\",\n \"error_logs_size\": \"Размер\",\n \"error_logs_modified\": \"Изменён\",\n \"error_logs_open\": \"Открыть\",\n \"error_logs_download\": \"Скачать\",\n \"error_log_view_title\": \"Подробности журнала ошибок запроса\",\n \"error_log_open_failed\": \"Не удалось открыть журнал ошибок\",\n \"error_log_empty_content\": \"Этот журнал ошибок пуст\",\n \"error_log_copy_success\": \"Содержимое журнала ошибок скопировано\",\n \"error_log_download_success\": \"Журнал ошибок успешно скачан\",\n \"request_log_download_title\": \"Скачать журнал запросов\",\n \"request_log_download_confirm\": \"Скачать журнал запросов с идентификатором {{id}}?\",\n \"request_log_download_success\": \"Журнал запросов успешно скачан\",\n \"empty_title\": \"Журналы недоступны\",\n \"empty_desc\": \"Когда включена опция \\\"Включить журналирование в файл\\\", журналы появятся здесь\",\n \"cpa_file_logging_required\": \"Подключён режим CPA. Для просмотра журналов сначала включите запись журналов в файл.\",\n \"cpa_file_logging_required_title\": \"Требуется файловое журналирование\",\n \"cpa_file_logging_required_desc\": \"CPA читает этот журнал из локальных файлов. Включите logging-to-file в конфигурации и обновите страницу.\",\n \"file_logging_required\": \"Этот endpoint журналов требует включить запись журналов в файл перед чтением файловых журналов.\",\n \"file_logging_required_title\": \"Требуется файловое журналирование\",\n \"file_logging_required_desc\": \"Этот endpoint журналов читает локальные файлы. Включите logging-to-file в конфигурации и обновите страницу.\",\n \"home_clear_unavailable\": \"Журналы Home загружаются из базы данных и не могут быть очищены здесь.\",\n \"log_content\": \"Содержимое журнала\",\n \"loading\": \"Загрузка журналов...\",\n \"load_error\": \"Не удалось загрузить журналы\",\n \"clear_confirm\": \"Очистить все журналы? Действие нельзя отменить!\",\n \"clear_success\": \"Журналы успешно очищены\",\n \"download_success\": \"Журналы успешно скачаны\",\n \"auto_refresh\": \"Автообновление\",\n \"auto_refresh_enabled\": \"Автообновление включено\",\n \"auto_refresh_disabled\": \"Автообновление выключено\",\n \"load_more_hint\": \"Прокрутите вверх, чтобы загрузить ещё\",\n \"hidden_lines\": \"Скрыто: {{count}} строк\",\n \"loaded_lines\": \"Загружено: {{count}} строк\",\n \"filtered_lines\": \"Отфильтровано: {{count}} строк\",\n \"hide_management_logs\": \"Скрыть журналы {{prefix}}\",\n \"show_raw_logs\": \"Показать исходные журналы\",\n \"show_raw_logs_hint\": \"Показать текст журнала без обработки для удобного копирования в несколько строк\",\n \"search_placeholder\": \"Искать по содержимому или ключевым словам\",\n \"filter_panel_title\": \"Структурные фильтры\",\n \"filter_panel_expand\": \"Развернуть структурные фильтры\",\n \"filter_panel_collapse\": \"Свернуть структурные фильтры\",\n \"filter_panel_active_count\": \"Активно: {{count}}\",\n \"filter_method\": \"Метод\",\n \"filter_status\": \"Статус\",\n \"filter_path\": \"Путь\",\n \"filter_path_empty\": \"Нет доступных путей\",\n \"filter_status_2xx\": \"2xx\",\n \"filter_status_3xx\": \"3xx\",\n \"filter_status_4xx\": \"4xx\",\n \"filter_status_5xx\": \"5xx\",\n \"clear_filters\": \"Очистить фильтры\",\n \"search_empty_title\": \"Подходящих журналов не найдено\",\n \"search_empty_desc\": \"Попробуйте другой запрос или сбросьте фильтры.\",\n \"double_click_copy_hint\": \"Дважды нажмите, чтобы скопировать строку журнала\",\n \"copy_success\": \"Строка журнала скопирована\",\n \"copy_failed\": \"Не удалось скопировать\",\n \"lines\": \"строк\",\n \"removed\": \"Отфильтровано\",\n \"upgrade_required_title\": \"Обновите CLI Proxy API\",\n \"upgrade_required_desc\": \"Текущая версия сервера не поддерживает просмотр журналов. Обновите CLI Proxy API до последней версии, чтобы использовать эту функцию.\"\n },\n \"config_management\": {\n \"title\": \"Панель конфигурации\",\n \"editor_title\": \"Файл конфигурации\",\n \"reload\": \"Перезагрузить\",\n \"reload_confirm_message\": \"Перезагрузка отбросит ваши несохранённые изменения. Продолжить?\",\n \"save\": \"Сохранить\",\n \"description\": \"Редактируйте config.yaml через визуальный редактор или исходный файл\",\n \"status_idle\": \"Ожидание действия\",\n \"status_loading\": \"Загрузка конфигурации...\",\n \"status_loading_short\": \"Загрузка\",\n \"status_loaded\": \"Конфигурация загружена\",\n \"status_loaded_short\": \"Загружено\",\n \"status_dirty\": \"Есть несохранённые изменения\",\n \"status_dirty_short\": \"Несохранено\",\n \"status_disconnected\": \"Подключитесь к серверу, чтобы загрузить конфигурацию\",\n \"status_disconnected_short\": \"Нет связи\",\n \"status_load_failed\": \"Не удалось загрузить\",\n \"status_load_failed_short\": \"Ошибка\",\n \"status_saving\": \"Сохранение конфигурации...\",\n \"status_saving_short\": \"Сохранение\",\n \"status_saved\": \"Конфигурация сохранена\",\n \"status_save_failed\": \"Не удалось сохранить\",\n \"save_success\": \"Конфигурация успешно сохранена\",\n \"error_yaml_not_supported\": \"Сервер не вернул YAML. Убедитесь, что доступна конечная точка /config.yaml.\",\n \"visual_mode_unavailable\": \"Визуальный редактор недоступен, пока не исправлен синтаксис YAML\",\n \"visual_mode_unavailable_short\": \"Ошибка YAML\",\n \"validation_blocked_short\": \"Есть ошибки\",\n \"visual_mode_unavailable_detail\": \"Визуальный редактор недоступен, потому что в конфигурации есть некорректный YAML: {{message}}\",\n \"visual_mode_save_blocked\": \"Нельзя сохранять из визуального режима, пока не исправлен синтаксис YAML\",\n \"visual_mode_latest_yaml_invalid\": \"Последняя конфигурация на сервере содержит некорректный YAML. Проверьте её в режиме исходника перед сохранением визуальных изменений: {{message}}\",\n \"editor_placeholder\": \"key: value\",\n \"search_placeholder\": \"Поиск по конфигурации...\",\n \"search_button\": \"Поиск\",\n \"search_no_results\": \"Нет результатов\",\n \"search_prev\": \"Назад\",\n \"search_next\": \"Вперёд\",\n \"diff\": {\n \"title\": \"Обзор изменений\",\n \"current\": \"Текущая\",\n \"modified\": \"Изменённая\",\n \"confirm\": \"Подтвердить\",\n \"no_changes\": \"Изменений не обнаружено\"\n },\n \"tabs\": {\n \"visual\": \"Визуальный редактор\",\n \"source\": \"Редактор файла\"\n },\n \"visual\": {\n \"notice\": \"Визуальный режим охватывает основные поля. Остальные параметры config.yaml по-прежнему нужно проверять или редактировать в режиме исходника.\",\n \"quick_jump\": \"Быстрый переход\",\n \"subsection_navigation\": \"Разделы: {{section}}\",\n \"sections\": {\n \"server\": {\n \"title\": \"Настройки сервера\",\n \"description\": \"Базовые параметры сервера\",\n \"listener_group_title\": \"Прослушивание\",\n \"host\": \"Адрес хоста\",\n \"port\": \"Порт\"\n },\n \"tls\": {\n \"title\": \"Настройка TLS/SSL\",\n \"description\": \"Параметры безопасного HTTPS-соединения\",\n \"enable\": \"Включить TLS\",\n \"enable_desc\": \"Включить безопасное HTTPS-соединение\",\n \"cert\": \"Путь к сертификату\",\n \"key\": \"Путь к закрытому ключу\"\n },\n \"remote\": {\n \"title\": \"Удалённое управление\",\n \"description\": \"Настройки удалённого доступа и панели управления\",\n \"allow_remote\": \"Разрешить удалённый доступ\",\n \"allow_remote_desc\": \"Разрешить управление с других хостов\",\n \"disable_panel\": \"Отключить панель\",\n \"disable_panel_desc\": \"Отключить встроенную веб-панель управления\",\n \"disable_auto_update_panel\": \"Отключить автообновление панели\",\n \"disable_auto_update_panel_desc\": \"Скачивать панель при первом отсутствии, но не обновлять её автоматически с GitHub\",\n \"secret_key\": \"Ключ управления\",\n \"secret_key_placeholder\": \"Задайте ключ управления\",\n \"panel_repo\": \"Репозиторий панели\"\n },\n \"auth\": {\n \"title\": \"Настройки аутентификации\",\n \"description\": \"API-ключи и каталог аутентификации\",\n \"group_title\": \"Доступ и аутентификация\",\n \"group_description\": \"Удалённое управление, доступ к панели, API-ключи и файлы аутентификации\",\n \"credentials_title\": \"Файлы аутентификации и API-ключи\",\n \"auth_dir\": \"Каталог auth-dir\",\n \"auth_dir_hint\": \"Путь к каталогу с файлами аутентификации (поддерживает ~)\"\n },\n \"system\": {\n \"title\": \"Системные настройки\",\n \"description\": \"Отладка, журналирование, статистика и производительность\",\n \"group_navigation_label\": \"Группы системных настроек\",\n \"runtime_group_title\": \"Runtime и эксплуатация\",\n \"runtime_group_desc\": \"Основные переключатели, журналы, usage и обработка подписей\",\n \"plugins_group_title\": \"Плагины\",\n \"plugins_group_desc\": \"Включение runtime, источники registry и аутентификация приватных источников\",\n \"headers_group_title\": \"Заголовки и стратегия Codex\",\n \"headers_group_desc\": \"Заголовки Claude/Codex и стратегия abnormal-reasoning retry\",\n \"network_group_title\": \"Сеть и маршрутизация\",\n \"network_group_desc\": \"Прокси, повторы, affinity, изображения и поведение endpoint\",\n \"core_controls_title\": \"Основные параметры runtime\",\n \"core_controls_desc\": \"Главные переключатели диагностики, производительности и файловых журналов\",\n \"plugin_runtime_title\": \"Plugin runtime\",\n \"plugin_runtime_desc\": \"Включение или отключение загрузки dynamic-library плагинов\",\n \"operations_title\": \"Журналы, usage и обработка подписей\",\n \"operations_desc\": \"Лимиты хранения, сбор usage в памяти и поведение подписей Antigravity\",\n \"debug\": \"Режим отладки\",\n \"debug_desc\": \"Включить подробные отладочные журналы\",\n \"commercial_mode\": \"Коммерческий режим\",\n \"commercial_mode_desc\": \"Отключить тяжёлое промежуточное ПО для поддержки высокой нагрузки\",\n \"logging_to_file\": \"Журналировать в файл\",\n \"logging_to_file_desc\": \"Сохранять журналы в файлы\",\n \"plugins_enabled\": \"Включить систему плагинов\",\n \"plugins_enabled_desc\": \"Включает загрузку стандартных dynamic-library плагинов; отдельные экземпляры управляются на странице плагинов\",\n \"plugin_store_sources\": \"Сторонние источники плагинов\",\n \"plugin_store_sources_desc\": \"Добавляет registry-источники магазина плагинов; встроенный официальный источник всегда сохраняется\",\n \"plugin_store_sources_label\": \"URL registry источника плагинов (plugins.store-sources)\",\n \"plugin_store_sources_placeholder\": \"https://example.com/cliproxy-plugins/registry.json\",\n \"plugin_store_sources_hint\": \"Один URL registry.json в строке. Пустые строки отфильтровываются при сохранении\",\n \"plugin_store_auth\": \"Правила аутентификации магазина плагинов\",\n \"plugin_store_auth_desc\": \"Настройте заголовки аутентификации для приватных registry, метаданных GitHub Releases или загрузки артефактов\",\n \"plugin_store_auth_hint\": \"Указывайте только имена переменных окружения, а не реальные token. Backend читает значения из своей runtime-среды.\",\n \"store_auth_empty\": \"Правила аутентификации не настроены. Публичным источникам плагинов они не нужны.\",\n \"store_auth_rule\": \"Правило аутентификации\",\n \"store_auth_add\": \"Добавить правило\",\n \"store_auth_match\": \"Совпадающий URL-префикс\",\n \"store_auth_type\": \"Тип аутентификации\",\n \"store_auth_apply_to\": \"Применять к\",\n \"store_auth_apply_to_hint\": \"Если ничего не выбрано, правило применяется ко всем типам запросов.\",\n \"store_auth_apply_registry\": \"Registry\",\n \"store_auth_apply_metadata\": \"Метаданные\",\n \"store_auth_apply_artifact\": \"Артефакт\",\n \"store_auth_type_none\": \"Нет\",\n \"store_auth_type_bearer\": \"Bearer\",\n \"store_auth_type_basic\": \"Basic\",\n \"store_auth_type_header\": \"Пользовательский заголовок\",\n \"store_auth_type_github_token\": \"GitHub token\",\n \"store_auth_token_env\": \"Переменная token\",\n \"store_auth_username_env\": \"Переменная username\",\n \"store_auth_password_env\": \"Переменная password\",\n \"store_auth_header_name\": \"Имя заголовка\",\n \"store_auth_header_value_env\": \"Переменная значения заголовка\",\n \"store_auth_allow_insecure\": \"Разрешить небезопасные HTTP URL\",\n \"logs_max_size\": \"Максимальный размер файла журнала (МБ)\",\n \"error_logs_max_files\": \"Файлов журнала ошибок\",\n \"usage_statistics_enabled\": \"Включить статистику использования в памяти\",\n \"usage_statistics_enabled_desc\": \"Агрегировать статистику использования запросов в памяти\",\n \"redis_usage_retention\": \"Хранение очереди Redis usage (сек)\",\n \"redis_usage_retention_hint\": \"Время хранения вывода RESP LPOP/RPOP в памяти, максимум 3600 секунд\",\n \"antigravity_signature_cache\": \"Включить кэш подписей Antigravity\",\n \"antigravity_signature_cache_desc\": \"Предпочитать и проверять кэшированные подписи thinking-блоков\",\n \"antigravity_signature_strict\": \"Строгая проверка bypass-подписи\",\n \"antigravity_signature_strict_desc\": \"Применяется только при отключённом кэше подписей; проверяет полное дерево Claude protobuf\"\n },\n \"headers\": {\n \"title\": \"Заголовки по умолчанию\",\n \"description\": \"Заголовки по умолчанию для OAuth-запросов Claude и Codex, когда клиент их не отправил\",\n \"claude_title\": \"Claude Header Defaults\",\n \"codex_title\": \"Codex Header Defaults\",\n \"user_agent\": \"User-Agent\",\n \"package_version\": \"Package Version\",\n \"runtime_version\": \"Runtime Version\",\n \"os\": \"OS\",\n \"arch\": \"Arch\",\n \"timeout\": \"Timeout\",\n \"stabilize_device\": \"Стабилизировать профиль устройства\",\n \"stabilize_device_desc\": \"Фиксировать OS/Arch и стабилизировать программный отпечаток для учётных данных/API-ключа\",\n \"beta_features\": \"Экспериментальные функции\",\n \"codex_identity_confuse\": \"Смешивание личности Codex\",\n \"codex_identity_confuse_desc\": \"При маршрутизации с заполнением или привязке сессии переназначает ключ кэша и установочную личность Codex под выбранную запись авторизации\",\n \"codex_abnormal_reasoning_retry_title\": \"Стратегия защиты Codex от деградации\",\n \"codex_abnormal_reasoning_retry_desc\": \"После обнаружения аномального числа токенов рассуждения управляет повторами, параллельным запросом, итоговой доставкой и видимой клиенту статистикой\",\n \"codex_abnormal_reasoning_retry_summary_title\": \"Текущий обзор стратегии\",\n \"codex_abnormal_reasoning_retry_summary_desc\": \"Переключатели, действие повтора и доставка разделены, чтобы было проще проверить фактически активное поведение.\",\n \"codex_abnormal_reasoning_retry_summary_action\": \"Действие при совпадении\",\n \"codex_abnormal_reasoning_retry_summary_stream_buffer\": \"Потоковый буфер\",\n \"codex_abnormal_reasoning_retry_summary_hedged\": \"Параллельный режим\",\n \"codex_abnormal_reasoning_retry_summary_distinct_auth\": \"Другая авторизация\",\n \"codex_abnormal_reasoning_retry_summary_on\": \"Включено\",\n \"codex_abnormal_reasoning_retry_summary_off\": \"Отключено\",\n \"codex_abnormal_reasoning_retry_group_switches_title\": \"Основные переключатели\",\n \"codex_abnormal_reasoning_retry_group_switches_desc\": \"Сначала задайте активность стратегии, буферизацию потокового ответа и возможность второй линии запроса.\",\n \"codex_abnormal_reasoning_retry_group_retry_title\": \"Планирование повтора\",\n \"codex_abnormal_reasoning_retry_group_retry_desc\": \"Настройте действие при совпадении, лимит буфера, задержку второй линии и режим возврата.\",\n \"codex_abnormal_reasoning_retry_group_match_title\": \"Условия совпадения\",\n \"codex_abnormal_reasoning_retry_group_match_desc\": \"Ограничьте совпадение по модели, интенсивности рассуждения, числу аномальных токенов и бюджету повторов.\",\n \"codex_abnormal_reasoning_retry_group_delivery_title\": \"Доставка и статистика\",\n \"codex_abnormal_reasoning_retry_group_delivery_desc\": \"Управляет поведением после исчерпания повторов, видимой клиенту статистикой и выбором ответа-кандидата.\",\n \"codex_abnormal_reasoning_retry_group_scope_title\": \"Область авторизации\",\n \"codex_abnormal_reasoning_retry_group_scope_desc\": \"Сузьте влияние стратегии по типу авторизации или ID, чтобы не затрагивать другие учётные данные.\",\n \"codex_abnormal_reasoning_retry_enabled\": \"Быстрый переключатель стратегии\",\n \"codex_abnormal_reasoning_retry_enabled_desc\": \"При включении используется автоматический повтор, при выключении ответ не меняется; режим наблюдения выбирается в поле действия\",\n \"codex_abnormal_reasoning_retry_action_label\": \"Действие при совпадении\",\n \"codex_abnormal_reasoning_retry_action_hint\": \"Выберите обработку ответа с аномальным числом токенов рассуждения\",\n \"codex_abnormal_reasoning_retry_action_retry\": \"Автоматически повторить\",\n \"codex_abnormal_reasoning_retry_action_observe_only\": \"Только наблюдать\",\n \"codex_abnormal_reasoning_retry_action_disabled\": \"Отключить\",\n \"codex_abnormal_reasoning_retry_action_retry_desc\": \"Совпавший ответ отбрасывается, затем запрос повторяется до установленного лимита.\",\n \"codex_abnormal_reasoning_retry_action_observe_only_desc\": \"Совпадение только записывается. Ответ, доставляемый клиенту, не меняется.\",\n \"codex_abnormal_reasoning_retry_action_disabled_desc\": \"Защита отключена. Условия совпадения не влияют на доставку ответа.\",\n \"codex_abnormal_reasoning_retry_stream_buffer\": \"Буферизовать потоковые ответы\",\n \"codex_abnormal_reasoning_retry_stream_buffer_desc\": \"Сохраняет потоковые фрагменты до завершения ответа, чтобы не доставлять аномальный ответ слишком рано\",\n \"codex_abnormal_reasoning_retry_stream_buffer_max_bytes_label\": \"Лимит буфера потока в байтах\",\n \"codex_abnormal_reasoning_retry_stream_buffer_max_bytes_hint\": \"По умолчанию 16 MiB (16777216); 0 также включает безопасное значение. При превышении поток завершается с 502 без передачи частичного ответа\",\n \"codex_abnormal_reasoning_retry_hedged_retry_enabled\": \"Включить параллельный повтор\",\n \"codex_abnormal_reasoning_retry_hedged_retry_enabled_desc\": \"После отброшенного аномального ответа запускает второй запрос с задержкой, чтобы снизить хвостовую задержку\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_label\": \"Режим параллельного повтора\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_hint\": \"Выберите стратегию возврата после запуска второго запроса\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_quality\": \"Приоритет качества (по умолчанию)\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_speed\": \"Приоритет скорости\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_quality_desc\": \"Ожидает уже отправленные запросы и выбирает более устойчивый результат по политике доставки.\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_speed_desc\": \"Возвращает первый доставляемый успешный результат, сокращая ожидание ценой меньшей уверенности.\",\n \"codex_abnormal_reasoning_retry_hedge_delay_ms_label\": \"Задержка параллельного повтора (мс)\",\n \"codex_abnormal_reasoning_retry_hedge_delay_ms_hint\": \"Время ожидания перед запуском второго запроса после аномальной попытки\",\n \"codex_abnormal_reasoning_retry_require_distinct_auth\": \"Требовать другую авторизацию\",\n \"codex_abnormal_reasoning_retry_require_distinct_auth_desc\": \"Для второго параллельного запроса предпочтительно выбрать другой ID авторизации\",\n \"codex_abnormal_reasoning_retry_model_contains_label\": \"Модель содержит\",\n \"codex_abnormal_reasoning_retry_model_contains_hint\": \"Срабатывает, если запрошенная или разрешённая upstream-модель содержит любое значение\",\n \"codex_abnormal_reasoning_retry_reasoning_efforts_label\": \"Интенсивность рассуждения\",\n \"codex_abnormal_reasoning_retry_reasoning_efforts_hint\": \"Необязательные значения интенсивности Codex, например high или xhigh; пусто означает без ограничения\",\n \"codex_abnormal_reasoning_retry_reasoning_tokens_label\": \"Токены рассуждения\",\n \"codex_abnormal_reasoning_retry_reasoning_tokens_hint\": \"Неотрицательные целые значения числа токенов, запускающие стратегию\",\n \"codex_abnormal_reasoning_retry_max_retries_label\": \"Максимум аномальных повторов\",\n \"codex_abnormal_reasoning_retry_max_retries_hint\": \"Максимум дополнительных повторов из-за аномального рассуждения; 0 записывает неудачную попытку и сразу возвращает 502\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_label\": \"Стратегия после лимита\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_hint\": \"Выберите обработку после превышения максимального числа аномальных повторов\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_error\": \"Вернуть 502\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_pass_through\": \"Пропустить аномальный ответ\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_error_desc\": \"После достижения лимита повторов вернуть 502 вместо доставки аномального ответа клиенту.\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_pass_through_desc\": \"После достижения лимита повторов доставить последний аномальный ответ, чтобы запрос всё же завершился.\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_label\": \"Агрегация клиентской статистики\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_hint\": \"Выберите видимую клиенту агрегацию; статистика панели управления всё равно записывает реальные попытки\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_delivered_only\": \"Только доставленный ответ (по умолчанию)\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum\": \"Суммировать все попытки\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum_with_delivered_total\": \"Суммировать детали, сохранить итог доставленного\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_delivered_only_desc\": \"Клиент видит статистику только доставленного ответа. Панель управления всё равно записывает каждую реальную попытку.\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum_desc\": \"Клиент видит сумму полей статистики по всем попыткам.\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum_with_delivered_total_desc\": \"Детальные поля суммируются, но итог берётся из доставленного ответа для совместимости с клиентами, читающими только итог.\",\n \"codex_abnormal_reasoning_retry_delivery_policy_label\": \"Политика доставки\",\n \"codex_abnormal_reasoning_retry_delivery_policy_hint\": \"Используется, когда среди кандидатов есть и нормальные, и аномальные ответы\",\n \"codex_abnormal_reasoning_retry_delivery_policy_best_non_special\": \"Лучший нормальный ответ (по умолчанию)\",\n \"codex_abnormal_reasoning_retry_delivery_policy_first_non_special\": \"Первый нормальный ответ\",\n \"codex_abnormal_reasoning_retry_delivery_policy_max_output\": \"Ответ с наибольшим выводом\",\n \"codex_abnormal_reasoning_retry_delivery_policy_latest\": \"Последний ответ\",\n \"codex_abnormal_reasoning_retry_delivery_policy_best_non_special_desc\": \"Доставляет самый качественный нормальный ответ.\",\n \"codex_abnormal_reasoning_retry_delivery_policy_first_non_special_desc\": \"Доставляет первый успешный нормальный ответ, чтобы сократить ожидание.\",\n \"codex_abnormal_reasoning_retry_delivery_policy_max_output_desc\": \"Доставляет кандидата с наибольшим объёмом вывода.\",\n \"codex_abnormal_reasoning_retry_delivery_policy_latest_desc\": \"Доставляет последнего завершённого кандидата.\",\n \"codex_abnormal_reasoning_retry_fallback_policy_label\": \"Резервная стратегия\",\n \"codex_abnormal_reasoning_retry_fallback_policy_hint\": \"Используется, когда после исчерпания повторов все кандидаты остаются аномальными\",\n \"codex_abnormal_reasoning_retry_fallback_policy_best_special\": \"Лучший аномальный ответ (по умолчанию)\",\n \"codex_abnormal_reasoning_retry_fallback_policy_max_output_special\": \"Аномальный ответ с наибольшим выводом\",\n \"codex_abnormal_reasoning_retry_fallback_policy_latest_special\": \"Последний аномальный ответ\",\n \"codex_abnormal_reasoning_retry_fallback_policy_best_special_desc\": \"Когда остаются только аномальные кандидаты, выбирает самый качественный аномальный ответ.\",\n \"codex_abnormal_reasoning_retry_fallback_policy_max_output_special_desc\": \"Когда остаются только аномальные кандидаты, выбирает аномальный ответ с наибольшим выводом.\",\n \"codex_abnormal_reasoning_retry_fallback_policy_latest_special_desc\": \"Когда остаются только аномальные кандидаты, выбирает последнего завершённого аномального кандидата.\",\n \"codex_abnormal_reasoning_retry_auth_kinds_label\": \"Типы авторизации\",\n \"codex_abnormal_reasoning_retry_auth_kinds_hint\": \"Белый список нормализованных типов авторизации; OAuth по умолчанию не совпадает с API-ключом\",\n \"codex_abnormal_reasoning_retry_auth_ids_label\": \"ID авторизации\",\n \"codex_abnormal_reasoning_retry_auth_ids_hint\": \"Необязательный точный белый список ID авторизации; пусто означает без ограничения по ID\"\n },\n \"network\": {\n \"title\": \"Сетевые настройки\",\n \"description\": \"Параметры прокси, повторов и маршрутизации\",\n \"proxy_url\": \"URL прокси\",\n \"request_retry\": \"Количество повторов запросов\",\n \"max_retry_credentials\": \"Максимум учётных данных для повторов\",\n \"max_retry_credentials_hint\": \"Оставьте пустым, чтобы не задавать поле. Значение 0 сохраняет legacy-поведение и позволяет перебрать все доступные учётные данные.\",\n \"max_retry_interval\": \"Максимальный интервал повтора (сек)\",\n \"transient_error_cooldown_seconds\": \"Cooldown transient-ошибок (сек)\",\n \"transient_error_cooldown_seconds_hint\": \"Оставьте пустым для значения Core по умолчанию. 0 сохраняет legacy cooldown 60 секунд; отрицательные значения отключают cooldown transient-ошибок.\",\n \"auth_auto_refresh_workers\": \"Workers автообновления auth\",\n \"auth_auto_refresh_workers_hint\": \"Если больше 0, переопределяет число workers по умолчанию (16)\",\n \"disable_image_generation\": \"Отключить генерацию изображений\",\n \"disable_image_generation_hint\": \"false включает автоматическое добавление image tool; true отключает генерацию везде; chat удаляет image_generation на не-image endpoints; passthrough не добавляет и не удаляет клиентские tools на не-image endpoints (image endpoints работают как chat)\",\n \"disable_image_generation_false\": \"false (включено)\",\n \"disable_image_generation_true\": \"true (отключено везде)\",\n \"disable_image_generation_chat\": \"chat (удалять image tool на не-image endpoints)\",\n \"disable_image_generation_passthrough\": \"passthrough (сохранить клиентские tools)\",\n \"gpt_image_2_base_model\": \"Базовая модель GPT Image 2\",\n \"gpt_image_2_base_model_hint\": \"Основная модель для проксирования gpt-image-2 image-запросов; если пусто или неверно, backend использует значение по умолчанию\",\n \"routing_strategy\": \"Стратегия маршрутизации\",\n \"routing_strategy_hint\": \"Выберите стратегию подбора учётных данных\",\n \"strategy_round_robin\": \"По кругу\",\n \"strategy_fill_first\": \"Сначала заполнить\",\n \"session_affinity_ttl\": \"TTL привязки сессии\",\n \"force_model_prefix\": \"Принудительный префикс модели\",\n \"force_model_prefix_desc\": \"Запросы к моделям без префикса используют только учётные данные без префикса\",\n \"passthrough_headers\": \"Передавать upstream-заголовки\",\n \"passthrough_headers_desc\": \"Передавать отфильтрованные upstream-заголовки ответа downstream-клиентам\",\n \"disable_cooling\": \"Отключить cooldown\",\n \"disable_cooling_desc\": \"Глобально отключить окна охлаждения auth/model после ошибок\",\n \"session_affinity\": \"Маршрутизация с привязкой к сессии\",\n \"ws_auth\": \"Аутентификация WebSocket\",\n \"ws_auth_desc\": \"Включить аутентификацию WebSocket (/v1/ws)\",\n \"enable_gemini_cli_endpoint\": \"Включить внутренний endpoint Gemini CLI\",\n \"enable_gemini_cli_endpoint_desc\": \"Включить совместимые endpoints /v1internal:*\"\n },\n \"quota\": {\n \"title\": \"Резерв по квоте\",\n \"description\": \"Стратегия при превышении квоты\",\n \"switch_project\": \"Переключить проект\",\n \"switch_project_desc\": \"Автоматически переходить на другой проект при превышении квоты\",\n \"switch_preview_model\": \"Переключить на preview-модель\",\n \"switch_preview_model_desc\": \"Переключаться на preview-версию модели при превышении квоты\",\n \"antigravity_credits\": \"Использовать Antigravity Credits\"\n },\n \"streaming\": {\n \"title\": \"Настройки стриминга\",\n \"description\": \"Параметры keepalive и повторов запуска\",\n \"keepalive_seconds\": \"Период keepalive (сек)\",\n \"keepalive_hint\": \"Установите 0 или оставьте поле пустым, чтобы отключить keepalive\",\n \"bootstrap_retries\": \"Повторы запуска\",\n \"bootstrap_hint\": \"Количество попыток при запуске стрима (до первого байта)\",\n \"nonstream_keepalive\": \"Интервал keepalive для нестиминговых ответов (сек)\",\n \"nonstream_keepalive_hint\": \"Отправлять пустые строки каждые N секунд для нестиминговых ответов, чтобы избежать простоя; установите 0 или оставьте пустым для отключения\",\n \"disabled\": \"Отключено\"\n },\n \"payload\": {\n \"title\": \"Настройки полезной нагрузки\",\n \"description\": \"Значения по умолчанию, raw JSON-правила, правила переопределения и фильтрации\",\n \"default_rules\": \"Правила по умолчанию\",\n \"default_rules_desc\": \"Использовать эти значения, если параметр не указан в запросе\",\n \"default_raw_rules\": \"Raw-правила по умолчанию\",\n \"default_raw_rules_desc\": \"Если параметр отсутствует, записывать эти значения как raw JSON-фрагменты, например true, 123, \\\"high\\\" или {\\\"type\\\":\\\"object\\\"}\",\n \"override_rules\": \"Правила переопределения\",\n \"override_rules_desc\": \"Принудительно задавать значения параметров в запросе\",\n \"override_raw_rules\": \"Raw-правила переопределения\",\n \"override_raw_rules_desc\": \"Всегда перезаписывать значения как raw JSON-фрагменты; полезно для response_format, схем и других сложных полей\",\n \"filter_rules\": \"Правила фильтрации\",\n \"filter_rules_desc\": \"Предварительно фильтровать тело исходящего запроса через JSON Path, автоматически удалять несоответствующие или лишние параметры (санитизация запроса)\"\n }\n },\n \"api_keys\": {\n \"label\": \"Список API-ключей (api-keys)\",\n \"add\": \"Добавить API-ключ\",\n \"generate\": \"Сгенерировать\",\n \"empty\": \"API-ключи отсутствуют\",\n \"hint\": \"Каждая запись — это API-ключ (в том же стиле, что и на странице управления API-ключами)\",\n \"edit_title\": \"Редактирование API-ключа\",\n \"add_title\": \"Добавление API-ключа\",\n \"input_label\": \"API-ключ\",\n \"input_placeholder\": \"Вставьте API-ключ\",\n \"input_hint\": \"Меняет только содержимое локального файла конфигурации, не синхронизируется с интерфейсом управления API-ключами\",\n \"error_empty\": \"Введите API-ключ\",\n \"error_invalid\": \"API-ключ содержит недопустимые символы\"\n },\n \"payload_rules\": {\n \"rule\": \"Правило\",\n \"models\": \"Применимые модели\",\n \"model_name\": \"Название модели\",\n \"model_scope\": \"Область модели\",\n \"scope_any\": \"Любая (текущее поведение)\",\n \"scope_requested\": \"Запрошенная модель\",\n \"scope_upstream\": \"Верхняя модель\",\n \"scope_custom\": \"Пользовательская: {{scope}}\",\n \"provider_type\": \"Тип провайдера\",\n \"add_model\": \"Добавить модель\",\n \"params\": \"Настройки параметров\",\n \"remove_params\": \"Удалить параметры\",\n \"json_path\": \"JSON Path (например, temperature)\",\n \"json_path_filter\": \"JSON Path (gjson/sjson), например generationConfig.thinkingConfig.thinkingBudget\",\n \"param_type\": \"Тип параметра\",\n \"param_value\": \"Значение параметра\",\n \"add_param\": \"Добавить параметр\",\n \"no_rules\": \"Правил нет\",\n \"add_rule\": \"Добавить правило\",\n \"provider_default\": \"По умолчанию\",\n \"provider_openai\": \"OpenAI\",\n \"provider_openai_response\": \"OpenAI Response\",\n \"provider_responses\": \"Responses\",\n \"provider_gemini\": \"Gemini\",\n \"provider_claude\": \"Claude\",\n \"provider_codex\": \"Codex\",\n \"provider_antigravity\": \"Antigravity\",\n \"advanced\": \"Дополнительно\",\n \"hide_advanced\": \"Скрыть дополнительно\",\n \"from_protocol\": \"Исходный протокол (from-protocol)\",\n \"headers\": \"Совпадения заголовков запроса\",\n \"header_name\": \"Имя заголовка\",\n \"header_value\": \"Значение заголовка\",\n \"add_header\": \"Добавить заголовок\",\n \"match\": \"Обязательные совпадения (match)\",\n \"notMatch\": \"Запрещённые совпадения (not-match)\",\n \"exist\": \"Обязательные пути (exist)\",\n \"notExist\": \"Запрещённые пути (not-exist)\",\n \"condition_path\": \"Путь условия\",\n \"condition_value\": \"Значение условия\",\n \"add_condition\": \"Добавить условие\",\n \"value_type_string\": \"Строка\",\n \"value_type_number\": \"Число\",\n \"value_type_boolean\": \"Булево\",\n \"value_type_json\": \"JSON\",\n \"value_string\": \"Строковое значение\",\n \"value_number\": \"Числовое значение (например, 0.7)\",\n \"value_boolean\": \"true или false\",\n \"value_json\": \"Значение JSON\",\n \"value_raw_json\": \"Raw JSON-фрагмент, например true, 123, \\\"high\\\" или {\\\"type\\\":\\\"object\\\"}\",\n \"value_default\": \"Значение\",\n \"boolean_true\": \"true\",\n \"boolean_false\": \"false\"\n },\n \"validation\": {\n \"validation_blocked\": \"Исправьте ошибки валидации перед сохранением\",\n \"port_range\": \"Введите корректный порт от 1 до 65535\",\n \"non_negative_integer\": \"Введите неотрицательное целое число\",\n \"integer\": \"Введите целое число\",\n \"integer_range_1_3600\": \"Введите целое число от 1 до 3600\",\n \"payload_invalid_number\": \"Введите корректное число\",\n \"payload_invalid_boolean\": \"Выберите true или false\",\n \"payload_invalid_json\": \"Введите корректный JSON\"\n },\n \"common\": {\n \"edit\": \"Изменить\",\n \"delete\": \"Удалить\",\n \"cancel\": \"Отменить\",\n \"update\": \"Обновить\",\n \"add\": \"Добавить\"\n }\n }\n },\n \"quota_management\": {\n \"title\": \"Управление квотами\",\n \"description\": \"Следите за статусом квот OAuth для учётных данных Antigravity, Codex и Gemini CLI.\",\n \"refresh_files\": \"Обновить файлы авторизации\",\n \"refresh_files_and_quota\": \"Обновить файлы и квоты\",\n \"refresh_all_credentials\": \"Обновить все учётные данные\",\n \"card_idle_hint\": \"Используйте кнопку «Обновить все учётные данные» сверху, чтобы загрузить актуальные данные по квотам.\"\n },\n \"plugin_management\": {\n \"title\": \"Управление плагинами\",\n \"description\": \"Просматривайте найденные и зарегистрированные плагины, управляйте переключателями экземпляров, полями конфигурации и ссылками на ресурсы.\",\n \"refresh\": \"Обновить\",\n \"load_failed\": \"Не удалось загрузить плагины\",\n \"config_load_failed\": \"Не удалось прочитать конфигурацию плагина\",\n \"config_not_found\": \"Не удалось прочитать конфигурацию плагина: backend не нашёл этот плагин.\",\n \"unsupported_backend\": \"Текущий backend не предоставляет API управления плагинами. Используйте более новую сборку backend с эндпоинтами управления плагинами и перезапустите сервис.\",\n \"runtime_unavailable_title\": \"Среда выполнения плагинов недоступна\",\n \"runtime_unavailable_desc\": \"plugins.enabled имеет значение true, но сервер сообщает x-cpa-support-plugin: 0. Текущая сборка не содержит среды выполнения плагинов, поэтому управление плагинами и магазин остаются заблокированными. Разверните сборку Core с поддержкой плагинов для текущей платформы и перезапустите backend. В Linux обычно требуются CGO и совместимая libc. Отключите plugins.enabled, если плагины не нужны.\",\n \"runtime_probe_failed_desc\": \"plugins.enabled имеет значение true, но Panel не смог подтвердить поддержку среды выполнения ни через x-cpa-support-plugin, ни через API плагинов. Операции с плагинами остаются заблокированными. Проверьте сборку backend и доступность header через reverse proxy/CORS, затем подключитесь снова.\",\n \"runtime_unavailable_action\": \"Проверить конфигурацию\",\n \"global_status\": \"Глобальный статус\",\n \"global_enabled\": \"Включено\",\n \"global_disabled\": \"Отключено\",\n \"global_disabled_hint\": \"plugins.enabled имеет значение false, поэтому включённые экземпляры плагинов не станут активными.\",\n \"plugins_dir\": \"Каталог плагинов\",\n \"discovered\": \"Найдено\",\n \"effective\": \"Активно\",\n \"search_placeholder\": \"Искать ID, имя, автора или ресурс плагина...\",\n \"search_label\": \"Поиск плагинов\",\n \"no_plugins\": \"Плагинов нет\",\n \"no_plugins_desc\": \"В каталоге плагинов и реестре времени выполнения плагины не найдены.\",\n \"configured\": \"Настроен\",\n \"not_configured\": \"Не настроен\",\n \"registered\": \"Зарегистрирован\",\n \"not_registered\": \"Не зарегистрирован\",\n \"oauth\": \"OAuth\",\n \"status_effective\": \"Активен\",\n \"status_inactive\": \"Неактивен\",\n \"version_label\": \"Версия\",\n \"author_label\": \"Автор\",\n \"path_label\": \"Путь\",\n \"edit_config\": \"Изменить конфиг\",\n \"open_resource\": \"Открыть ресурс\",\n \"open_repository\": \"Открыть репозиторий\",\n \"config_title\": \"Настроить {{name}}\",\n \"base_settings\": \"Базовые настройки\",\n \"enabled\": \"Включено\",\n \"enabled_hint\": \"Управляет полем enabled для этого экземпляра плагина в plugins.configs.\",\n \"priority\": \"Приоритет\",\n \"config_fields\": \"Поля конфигурации\",\n \"no_config_fields\": \"Этот плагин не объявляет визуальные поля конфигурации.\",\n \"select_placeholder\": \"Выберите\",\n \"array_item_placeholder\": \"Введите элемент массива\",\n \"add_array_item\": \"Добавить элемент массива\",\n \"remove_array_item\": \"Удалить элемент массива\",\n \"delete_plugin\": \"Удалить\",\n \"delete_confirm_title\": \"Удалить плагин\",\n \"delete_confirm_message\": \"Удалить {{name}} ({{id}})? Будут удалены локальный файл плагина и сохранённая конфигурация.\",\n \"delete_success\": \"Плагин удалён\",\n \"delete_failed\": \"Не удалось удалить плагин\",\n \"delete_restart_required\": \"Загруженный плагин можно удалить только после перезапуска backend.\",\n \"toggle_success\": \"Статус плагина обновлён\",\n \"toggle_failed\": \"Не удалось обновить статус плагина\",\n \"runtime_pending\": \"Изменение плагина сохранено, но состояние runtime ещё обновляется. Обновите страницу позже или проверьте логи backend.\",\n \"save_success\": \"Конфигурация плагина сохранена\",\n \"save_failed\": \"Не удалось сохранить конфигурацию плагина\",\n \"validation_failed\": \"Сначала исправьте ошибки формы конфигурации плагина\",\n \"invalid_priority\": \"Введите целочисленный приоритет\",\n \"invalid_number\": \"Введите корректное число\",\n \"invalid_integer\": \"Введите корректное целое число\",\n \"invalid_json\": \"Введите корректный JSON\",\n \"expected_array\": \"Введите JSON-массив\",\n \"expected_object\": \"Введите JSON-объект\",\n \"invalid_enum\": \"Выберите одно из объявленных значений enum\"\n },\n \"plugin_store\": {\n \"title\": \"Магазин плагинов\",\n \"description\": \"Просматривайте реестр плагинов, устанавливайте и обновляйте плагины для текущего бэкенда.\",\n \"description_show_more\": \"Показать больше\",\n \"description_show_less\": \"Свернуть\",\n \"source_name\": \"Источник: {{source}}\",\n \"cli_proxy_api_source\": \"Источник CLIProxyAPI\",\n \"refresh\": \"Обновить\",\n \"retry\": \"Повторить\",\n \"load_failed\": \"Не удалось загрузить магазин плагинов\",\n \"unsupported_backend\": \"Текущий бэкенд не предоставляет API магазина плагинов. Используйте новую сборку бэкенда с поддержкой магазина плагинов и перезапустите службу.\",\n \"registry_failed\": \"Не удалось обратиться к реестру плагинов\",\n \"global_status\": \"Глобальный статус\",\n \"global_enabled\": \"Включено\",\n \"global_disabled\": \"Отключено\",\n \"global_disabled_hint\": \"Параметр plugins.enabled выключен, поэтому установленные плагины не будут работать.\",\n \"plugins_dir\": \"Каталог плагинов\",\n \"stat_available\": \"Доступно\",\n \"search_placeholder\": \"Поиск по ID, названию, автору или тегу...\",\n \"search_label\": \"Поиск в магазине плагинов\",\n \"filter_label\": \"Фильтр по статусу установки\",\n \"filter_all\": \"Все\",\n \"filter_installed\": \"Установленные\",\n \"filter_not_installed\": \"Не установленные\",\n \"filter_updates\": \"Обновления\",\n \"badge_installed\": \"Установлен\",\n \"badge_update\": \"Доступно обновление\",\n \"badge_effective\": \"Активен\",\n \"version_arrow\": \"v{{from}} → v{{to}}\",\n \"install_type\": \"Установка: {{type}}\",\n \"platforms\": \"Платформы: {{platforms}}\",\n \"auth_required\": \"Требуется аутентификация\",\n \"auth_configured\": \"Аутентификация настроена\",\n \"auth_required_hint\": \"Настройте plugins.store-auth перед установкой из этого источника или URL артефакта\",\n \"source_errors_title\": \"Некоторые источники плагинов не загрузились\",\n \"install\": \"Установить\",\n \"update\": \"Обновить\",\n \"manage\": \"Управлять\",\n \"install_confirm_title\": \"Установка плагина\",\n \"install_confirm_message\": \"Скачать {{target}} из реестра плагинов и установить в локальный каталог плагинов?\",\n \"update_confirm_title\": \"Обновление плагина\",\n \"update_confirm_message\": \"Скачать и установить {{target}}?\",\n \"install_version_label\": \"Версия\",\n \"install_version_latest\": \"последняя\",\n \"install_version_latest_mode\": \"Последняя стабильная\",\n \"install_version_latest_hint\": \"Разрешается backend во время установки. Текущая версия в списке: {{version}}.\",\n \"install_version_release_mode\": \"Выбрать release\",\n \"install_version_release_hint\": \"Прочитать устанавливаемые tags из GitHub Releases.\",\n \"install_version_manual_mode\": \"Ручной release tag\",\n \"install_version_manual_hint\": \"Используйте только когда автоматическая загрузка releases недоступна.\",\n \"install_versions_loading\": \"Загрузка GitHub Releases...\",\n \"install_versions_load_failed\": \"Не удалось загрузить версии releases\",\n \"install_version_non_github\": \"Репозиторий этого плагина не является GitHub-репозиторием\",\n \"install_versions_empty\": \"Подходящие releases не найдены.\",\n \"install_versions_only_prerelease\": \"Доступны только prerelease-версии. Включите prerelease, чтобы выбрать одну.\",\n \"install_version_release_select\": \"Выберите версию release\",\n \"install_version_release_placeholder\": \"Выберите версию release\",\n \"install_version_prerelease_badge\": \"prerelease\",\n \"install_version_assets_count\": \"{{count}} артефактов\",\n \"install_version_show_prerelease\": \"Показать prerelease-версии\",\n \"install_version_manual_placeholder\": \"Например v0.1.4\",\n \"install_version_manual_error\": \"Release tags могут содержать только буквы, цифры, точки, подчёркивания, плюсы и дефисы; пробелы и слэши запрещены.\",\n \"install_version_current_selected\": \"{{version}} уже установлена. Выберите другую версию.\",\n \"install_version_releases_link\": \"Открыть GitHub Releases\",\n \"install_success\": \"Плагин установлен\",\n \"update_success\": \"Плагин обновлён\",\n \"install_failed\": \"Не удалось установить плагин\",\n \"update_failed\": \"Не удалось обновить плагин\",\n \"status_pending\": \"Файлы плагина обновлены, но локальный статус ещё не обновился. Обновите страницу позже или проверьте логи backend.\",\n \"registration_pending\": \"Файлы плагина обновлены, но регистрация ещё ожидается. Обновите страницу позже или проверьте логи backend.\",\n \"restart_required_notice\": \"Перезапустите службу, чтобы загрузить новую версию плагина\",\n \"restart_required_banner\": \"Перезапустите службу, чтобы применить новую версию: {{plugins}}\",\n \"open_repository\": \"Открыть репозиторий\",\n \"open_homepage\": \"Открыть сайт\",\n \"no_plugins\": \"Реестр пуст\",\n \"no_plugins_desc\": \"Реестр плагинов не вернул ни одного плагина.\",\n \"no_matches\": \"Нет подходящих плагинов\",\n \"no_matches_desc\": \"Нет плагинов, соответствующих текущему поиску или фильтру.\",\n \"clear_filters\": \"Сбросить фильтры\",\n \"security_banner_title\": \"Сторонние плагины работают с полным доступом к бэкенду\",\n \"security_banner_text\": \"Плагины выполняют код внутри прокси-сервиса и могут читать ваши учётные данные и трафик. Устанавливайте только плагины, которым доверяете, — особенно осторожно относитесь к плагинам, не опубликованным официальной организацией router-for-me.\",\n \"badge_untrusted\": \"Сторонний\",\n \"gate_title\": \"Установка {{name}}\",\n \"gate_title_update\": \"Обновление {{name}}\",\n \"gate_warning\": \"Если вы не прочитаете это, могут произойти неожиданные и опасные последствия.\",\n \"gate_effect_runs_code\": \"Этот плагин будет выполнять несертифицированный сторонний код внутри вашего прокси-бэкенда. Система не может изолировать или аудировать его поведение, и он может получить доступ к вашим конфиденциальным учётным данным, сетевым запросам и данным ответов.\",\n \"gate_effect_no_review\": \"Этот плагин не опубликован и не проверен официальной организацией router-for-me. Официальная организация не предоставляет никаких явных или подразумеваемых гарантий стабильности, безопасности, соответствия требованиям или любых изменений поведения в последующих версиях этого плагина.\",\n \"gate_effect_restart\": \"Установка изменяет локальный каталог плагинов и может потребовать перезапуска сервиса.\",\n \"gate_untrusted_alert\": \"Этот плагин не от официальной организации router-for-me. Продолжайте, только если полностью доверяете его автору и источнику.\",\n \"gate_repository_label\": \"Репозиторий\",\n \"gate_source_label\": \"Источник\",\n \"gate_step1_action\": \"Я хочу установить этот плагин\",\n \"gate_step2_action\": \"Я прочитал и понимаю эти риски\",\n \"gate_step3_prompt\": \"Для подтверждения введите «{{token}}» в поле ниже\",\n \"gate_step3_action\": \"Установить этот плагин\",\n \"gate_step3_hint\": \"Введите точный идентификатор, показанный выше, чтобы включить установку.\"\n },\n \"plugin_resource\": {\n \"page_count\": \"{{count}} страниц\"\n },\n \"system_info\": {\n \"title\": \"Информация о центре управления\",\n \"about_title\": \"CLI Proxy API Management Center\",\n \"connection_status_title\": \"Статус подключения\",\n \"api_status_label\": \"Статус API:\",\n \"config_status_label\": \"Статус конфигурации:\",\n \"last_update_label\": \"Последнее обновление:\",\n \"cache_data\": \"Данные из кэша\",\n \"real_time_data\": \"Данные в реальном времени\",\n \"not_loaded\": \"Не загружено\",\n \"seconds_ago\": \"секунд назад\",\n \"models_title\": \"Доступные модели\",\n \"models_desc\": \"Показывает ответ /models и автоматически использует сохранённые API-ключи для авторизации.\",\n \"models_loading\": \"Загрузка доступных моделей...\",\n \"models_empty\": \"Сервис /models не вернул модели\",\n \"models_error\": \"Не удалось загрузить список моделей\",\n \"models_count\": \"Доступно моделей: {{count}}\",\n \"version_check_title\": \"Проверка обновлений\",\n \"version_check_desc\": \"Вызовите эндпоинт /latest-version, чтобы сравнить с версией сервера и узнать о доступных обновлениях.\",\n \"version_current_label\": \"Текущая версия\",\n \"version_latest_label\": \"Последняя версия\",\n \"version_check_button\": \"Проверить обновления\",\n \"version_check_idle\": \"Нажмите, чтобы проверить обновления\",\n \"version_checking\": \"Поиск последней версии...\",\n \"version_update_available\": \"Доступно обновление: {{version}}\",\n \"version_is_latest\": \"Установлена последняя версия\",\n \"version_check_error\": \"Не удалось проверить обновление\",\n \"version_current_missing\": \"Версия сервера недоступна; сравнение невозможно\",\n \"version_unknown\": \"Неизвестно\",\n \"quick_links_title\": \"Быстрые ссылки\",\n \"quick_links_desc\": \"Доступ к репозиториям проекта и документации для помощи и обновлений.\",\n \"link_main_repo\": \"Основной репозиторий\",\n \"link_main_repo_desc\": \"Исходный код основной программы CLI Proxy API\",\n \"link_webui_repo\": \"Репозиторий WebUI\",\n \"link_webui_repo_desc\": \"Исходный код фронтенда центра управления\",\n \"link_docs\": \"Документация\",\n \"link_docs_desc\": \"Учебные пособия и руководства по настройке\",\n \"clear_login_title\": \"Локальные данные входа\",\n \"clear_login_desc\": \"Очистите локально сохранённые данные входа и выполните выход.\",\n \"clear_login_button\": \"Очистить данные входа\",\n \"clear_login_confirm\": \"Очистить локальные данные входа и выйти?\"\n },\n \"notification\": {\n \"debug_updated\": \"Настройки отладки обновлены\",\n \"proxy_updated\": \"Настройки прокси обновлены\",\n \"proxy_cleared\": \"Настройки прокси очищены\",\n \"retry_updated\": \"Настройки повторов обновлены\",\n \"quota_switch_project_updated\": \"Настройки переключения проектов обновлены\",\n \"quota_switch_preview_updated\": \"Настройки переключения на preview-модель обновлены\",\n \"logging_to_file_updated\": \"Настройки журналирования обновлены\",\n \"logs_max_total_size_updated\": \"Лимит размера журналов обновлён\",\n \"request_log_updated\": \"Настройка журналирования запросов обновлена\",\n \"force_model_prefix_updated\": \"Настройка префикса модели обновлена\",\n \"ws_auth_updated\": \"Настройка аутентификации WebSocket обновлена\",\n \"routing_strategy_updated\": \"Стратегия маршрутизации обновлена\",\n \"login_storage_cleared\": \"Локальные данные входа очищены\",\n \"api_key_added\": \"API-ключ успешно добавлен\",\n \"api_key_updated\": \"API-ключ успешно обновлён\",\n \"api_key_deleted\": \"API-ключ успешно удалён\",\n \"api_key_invalid_chars\": \"API-ключ может содержать только буквы, цифры и символы\",\n \"gemini_key_added\": \"Ключ Gemini успешно добавлен\",\n \"gemini_key_updated\": \"Ключ Gemini успешно обновлён\",\n \"gemini_key_deleted\": \"Ключ Gemini успешно удалён\",\n \"gemini_multi_input_required\": \"Введите хотя бы один ключ Gemini\",\n \"gemini_multi_failed\": \"Пакетное добавление Gemini не удалось\",\n \"gemini_multi_summary\": \"Пакетное добавление Gemini завершено: добавлено {{success}}, пропущено {{skipped}}, ошибок {{failed}}\",\n \"codex_config_added\": \"Конфигурация Codex успешно добавлена\",\n \"codex_config_updated\": \"Конфигурация Codex успешно обновлена\",\n \"codex_config_deleted\": \"Конфигурация Codex успешно удалена\",\n \"codex_base_url_required\": \"Введите базовый URL Codex\",\n \"claude_config_added\": \"Конфигурация Claude успешно добавлена\",\n \"claude_config_updated\": \"Конфигурация Claude успешно обновлена\",\n \"claude_config_deleted\": \"Конфигурация Claude успешно удалена\",\n \"vertex_config_added\": \"Конфигурация Vertex успешно добавлена\",\n \"vertex_config_updated\": \"Конфигурация Vertex успешно обновлена\",\n \"vertex_config_deleted\": \"Конфигурация Vertex успешно удалена\",\n \"config_enabled\": \"Конфигурация включена\",\n \"config_disabled\": \"Конфигурация выключена\",\n \"field_required\": \"Обязательные поля не могут быть пустыми\",\n \"openai_provider_required\": \"Заполните имя провайдера и базовый URL\",\n \"openai_provider_added\": \"Провайдер OpenAI успешно добавлен\",\n \"openai_provider_updated\": \"Провайдер OpenAI успешно обновлён\",\n \"openai_provider_deleted\": \"Провайдер OpenAI успешно удалён\",\n \"openai_model_name_required\": \"Введите имя модели\",\n \"openai_test_url_required\": \"Укажите корректный базовый URL перед тестированием\",\n \"openai_test_key_required\": \"Добавьте хотя бы один API-ключ перед тестированием\",\n \"openai_test_model_required\": \"Выберите модель для теста\",\n \"data_refreshed\": \"Данные успешно обновлены\",\n \"connection_required\": \"Сначала установите подключение\",\n \"refresh_failed\": \"Не удалось обновить\",\n \"update_failed\": \"Не удалось обновить\",\n \"add_failed\": \"Не удалось добавить\",\n \"delete_failed\": \"Не удалось удалить\",\n \"upload_failed\": \"Не удалось загрузить\",\n \"download_failed\": \"Не удалось скачать\",\n \"login_failed\": \"Вход не выполнен\",\n \"please_enter\": \"Пожалуйста, введите\",\n \"please_fill\": \"Пожалуйста, заполните\",\n \"provider_name_url\": \"имя провайдера и базовый URL\",\n \"api_key\": \"API-ключ\",\n \"gemini_api_key\": \"API-ключ Gemini\",\n \"codex_api_key\": \"API-ключ Codex\",\n \"claude_api_key\": \"API-ключ Claude\",\n \"commercial_mode_restart_required\": \"Режим коммерческого использования изменён. Перезапустите сервис, чтобы применить изменения\",\n \"copy_failed\": \"Не удалось скопировать\",\n \"link_copied\": \"Ссылка скопирована в буфер обмена\"\n },\n \"language\": {\n \"switch\": \"Язык\",\n \"chinese\": \"中文\",\n \"chinese_tw\": \"繁體中文(台灣)\",\n \"english\": \"English\",\n \"russian\": \"Русский\"\n },\n \"theme\": {\n \"switch\": \"Тема\",\n \"light\": \"Шерстяная бумага\",\n \"white\": \"Чисто-белая\",\n \"dark\": \"Тёмная\",\n \"switch_to_light\": \"Переключиться на тему «Шерстяная бумага»\",\n \"switch_to_dark\": \"Переключиться на тёмную тему\",\n \"auto\": \"Следовать системе\"\n },\n \"sidebar\": {\n \"primary_navigation\": \"Основная навигация\",\n \"toggle_expand\": \"Развернуть боковую панель\",\n \"toggle_collapse\": \"Свернуть боковую панель\"\n },\n \"footer\": {\n \"api_version\": \"Версия CLI Proxy API\",\n \"build_date\": \"Время сборки\",\n \"version\": \"Версия интерфейса управления\",\n \"author\": \"Автор\"\n },\n \"providersPage\": {\n \"header\": {\n \"title\": \"AI Провайдеры\",\n \"activeResources\": \"{{active}}/{{total}} активных\",\n \"providerFamilies\": \"{{count}} семейств\",\n \"updatedAt\": \"Обновлено {{time}}\",\n \"issueCount\": \"{{count}} проблем\"\n },\n \"actions\": {\n \"refresh\": \"Обновить\",\n \"syncing\": \"Синхронизация\",\n \"new\": \"Создать\",\n \"edit\": \"Изменить\",\n \"view\": \"Просмотр\",\n \"delete\": \"Удалить\",\n \"clear\": \"Очистить\",\n \"cancel\": \"Отмена\",\n \"save\": \"Сохранить\",\n \"create\": \"Создать\",\n \"enable\": \"Включить\",\n \"disable\": \"Отключить\"\n },\n \"categories\": {\n \"title\": \"Провайдеры\",\n \"activeCount\": \"{{active}}/{{total}} активных\"\n },\n \"providerNames\": {\n \"gemini\": \"Gemini\",\n \"codex\": \"Codex\",\n \"xai\": \"xAI\",\n \"claude\": \"Claude\",\n \"vertex\": \"Vertex\",\n \"openaiCompatibility\": \"OpenAI-совместимый\",\n \"claudeApi\": \"ClaudeAPI\",\n \"code0\": \"Code0\",\n \"fennoAI\": \"FennoAI\",\n \"qiniuCloud\": \"Qiniu Cloud\"\n },\n \"table\": {\n \"key\": \"Ключ\",\n \"baseUrl\": \"Base URL\",\n \"prefix\": \"Префикс\",\n \"models\": \"Модели/Заголовки\",\n \"status\": \"Статус\",\n \"actions\": \"Действия\",\n \"metrics\": {\n \"models\": \"Модели\",\n \"keys\": \"Ключи\",\n \"headers\": \"Заголовки\"\n },\n \"stats\": {\n \"recent\": \"Недавние\",\n \"fullUsage\": \"Usage\",\n \"tokens\": \"Токены\",\n \"cost\": \"Стоимость\"\n },\n \"websocketsTag\": \"WebSockets\",\n \"cloakTag\": \"Cloak\",\n \"empty\": \"Нет ресурсов, нажмите \\\"Создать\\\".\",\n \"filterPlaceholder\": \"Поиск по ключам, URL, префиксам…\",\n \"description\": \"Управление ресурсами {{route}}\",\n \"providerIssue\": \"Проблема с провайдером\"\n },\n \"status\": {\n \"active\": \"Активен\",\n \"disabled\": \"Отключён\",\n \"notSet\": \"Не задано\",\n \"none\": \"Нет\",\n \"notConfigured\": \"Не настроено\",\n \"defaultSuffix\": \"(по умолчанию)\"\n },\n \"detail\": {\n \"title\": \"Подробности\",\n \"metadataTitle\": \"Метаданные\",\n \"fields\": {\n \"identifier\": \"Идентификатор\",\n \"baseUrl\": \"Base URL\",\n \"proxyUrl\": \"Proxy URL\",\n \"prefix\": \"Префикс\",\n \"models\": \"Моделей\",\n \"headers\": \"Заголовков\",\n \"authIndex\": \"Auth Index\",\n \"excludedModels\": \"Исключённых моделей\",\n \"apiKeyEntries\": \"API-ключей\"\n }\n },\n \"form\": {\n \"createEyebrow\": \"Создать\",\n \"editEyebrow\": \"Изменить\",\n \"name\": \"Название\",\n \"apiKey\": \"API-ключ\",\n \"apiKeyCreatePlaceholder\": \"Введите API-ключ\",\n \"apiKeyEditPlaceholder\": \"Оставьте пустым, чтобы не менять\",\n \"baseUrl\": \"Base URL\",\n \"baseUrlRequiredHint\": \"Обязательно для этого провайдера\",\n \"proxyUrl\": \"Proxy URL\",\n \"prefix\": \"Префикс\",\n \"priority\": \"Приоритет\",\n \"disabled\": \"Отключить эту запись\",\n \"disabledHint\": \"Отключённые записи не используются шлюзом\",\n \"websockets\": \"Включить WebSockets\",\n \"testModel\": \"Тестовая модель\",\n \"testModelClaudeHint\": \"Используется только для проверки соединения; не сохраняется\",\n \"testModelAutoWith\": \"Авто · {{name}}\",\n \"testModelAutoEmpty\": \"Авто (модели ещё не добавлены)\",\n \"testModelCustom\": \"{{name}} (своя)\",\n \"modelsSection\": \"Пользовательские модели\",\n \"addModel\": \"Добавить модель\",\n \"modelNamePlaceholder\": \"Имя модели у провайдера\",\n \"modelAliasPlaceholder\": \"Псевдоним маршрутизации (необязательно)\",\n \"modelDisplayNamePlaceholder\": \"Отображаемое имя (необязательно)\",\n \"headersSection\": \"Заголовки запроса\",\n \"addHeader\": \"Добавить заголовок\",\n \"headers\": \"Заголовки\",\n \"headersHint\": \"По одному в строке, формат Key: Value\",\n \"excludedSection\": \"Исключённые модели\",\n \"excludedHint\": \"По одной модели в строке; совпавшие модели не будут направлены\",\n \"cloakSection\": \"Настройки Cloak\",\n \"cloakMode\": \"Режим\",\n \"cloakStrict\": \"Строгий режим\",\n \"cloakSensitiveWords\": \"Стоп-слова (по одному в строке)\",\n \"apiKeyEntriesSection\": \"API-ключи\",\n \"apiKeyEntry\": \"Ключ #{{index}}\",\n \"addApiKeyEntry\": \"Добавить ключ\",\n \"showApiKey\": \"Показать ключ API\",\n \"hideApiKey\": \"Скрыть ключ API\",\n \"disableCooling\": \"Отключить cooldown\",\n \"disableCoolingHint\": \"Отключает окна охлаждения после ошибок только для этой записи\",\n \"modelEntry\": \"Модель #{{index}}\",\n \"modelImage\": \"Разрешить image endpoints\",\n \"modelImageHint\": \"Разрешить модель для /v1/images/generations и /v1/images/edits\",\n \"thinkingConfig\": \"Thinking config (JSON)\",\n \"thinkingConfigHint\": \"Поддерживает levels, min, max, zero_allowed, dynamic_allowed\",\n \"cloakCacheUserId\": \"Кэшировать user_id\",\n \"cloakCacheUserIdHint\": \"Переиспользовать Claude cloak user_id для каждого API-ключа\",\n \"experimentalCchSigning\": \"Экспериментальная CCH-подпись\",\n \"experimentalCchSigningHint\": \"Подписывать финальное тело cloaked Claude /v1/messages через CCH\",\n \"validation\": {\n \"nameRequired\": \"Название обязательно\",\n \"apiKeyRequired\": \"Нужен хотя бы один API-ключ\",\n \"baseUrlRequired\": \"Base URL обязателен\"\n },\n \"showAllEntries\": \"Показать все ({{count}})\",\n \"showFewerEntries\": \"Показать меньше\",\n \"proxyBadge\": \"Прокси\",\n \"modelBadgeImage\": \"Image\",\n \"modelBadgeThinking\": \"Thinking\"\n },\n \"delete\": {\n \"title\": \"Удалить ресурс\",\n \"confirm\": \"Удалить {{name}}? Действие необратимо.\"\n },\n \"toast\": {\n \"created\": \"Создано\",\n \"updated\": \"Обновлено\",\n \"deleted\": \"Удалено\",\n \"enabled\": \"Включено\",\n \"disabled\": \"Отключено\",\n \"toggleFailed\": \"Не удалось обновить статус\"\n },\n \"unsavedChanges\": {\n \"title\": \"Отменить несохранённые изменения?\",\n \"message\": \"В форме есть несохранённые изменения. При закрытии они будут потеряны.\",\n \"discard\": \"Отменить изменения\",\n \"keepEditing\": \"Продолжить\"\n },\n \"connectivity\": {\n \"test\": \"Проверить\",\n \"testAll\": \"Проверить все\",\n \"success\": \"Доступно\",\n \"baseUrlRequired\": \"Base URL обязателен\",\n \"endpointInvalid\": \"Некорректный адрес\",\n \"apiKeyRequired\": \"API-ключ обязателен\",\n \"modelRequired\": \"Нужна тестовая модель\",\n \"timeout\": \"Таймаут после {{seconds}} с\",\n \"requestFailed\": \"Запрос не выполнен\"\n },\n \"discovery\": {\n \"openButton\": \"Получить с конечной точки\",\n \"searchPlaceholder\": \"Поиск моделей\",\n \"reload\": \"Обновить\",\n \"loading\": \"Загрузка моделей…\",\n \"empty\": \"Конечная точка не вернула моделей\",\n \"notLoaded\": \"Нажмите Обновить, чтобы загрузить модели\",\n \"selectAll\": \"Выбрать все\",\n \"clearAll\": \"Снять выбор\",\n \"selectedCount\": \"{{selected}} / {{total}}\",\n \"alreadyAdded\": \"Уже добавлено\",\n \"close\": \"Закрыть\",\n \"apply\": \"Применить ({{count}})\"\n },\n \"toolbar\": {\n \"sortBy\": \"Сортировка\",\n \"sort\": {\n \"name\": \"Имя\",\n \"priority\": \"Приоритет\",\n \"recentSuccess\": \"Недавние успехи\",\n \"directionAsc\": \"По возрастанию\",\n \"directionDesc\": \"По убыванию\"\n },\n \"filter\": {\n \"allModels\": \"Все модели\",\n \"selectedModels\": \"{{selected}}/{{total}} моделей\",\n \"selectAll\": \"Выбрать все\",\n \"clear\": \"Очистить\",\n \"empty\": \"Модели ещё не настроены\"\n }\n },\n \"modelCatalog\": {\n \"notLoaded\": \"Не загружено\"\n },\n \"sponsor\": {\n \"protocolSummary\": \"Anthropic / OpenAI / Gemini / Codex API (Responses)\",\n \"detailHint\": \"{{provider}} сохраняется в соответствующие конфигурации API key по протоколам; здесь они управляются вместе.\",\n \"apiKeyHint\": \"Этот ключ записывается только в выбранную группу/протокол.\",\n \"aggregationConflict\": \"Этот объединённый провайдер содержит несколько серверных конфигураций или ключей OpenAI. Чтобы избежать потери данных, измените исходную конфигурацию.\",\n \"partialMutationWarning\": \"Операция завершилась ошибкой, но один или несколько протоколов могли обновиться. Последняя конфигурация загружена повторно; проверьте её перед повторной попыткой.\",\n \"groupedKeysTitle\": \"Групповые ключи\",\n \"groupedKeysHint\": \"Ключи платформы могут привязываться к группе при создании. Каждый групповой ключ здесь управляет одним протоколом, а модели загружаются только из этого протокола.\",\n \"groupedKey\": \"Групповой ключ #{{index}}\",\n \"addGroupedKey\": \"Добавить групповой ключ\",\n \"removeGroupedKey\": \"Удалить групповой ключ\",\n \"protocol\": \"Группа/протокол\",\n \"protocolHint\": \"Выберите группу/протокол для этого ключа.\",\n \"protocolEndpoint\": \"Текущий endpoint протокола\",\n \"urlMode\": \"{{provider}} URL\",\n \"urlHint\": \"Все URL используют одинаковые правила API. При сохранении записывается только endpoint текущего группового протокола.\",\n \"urlOptions\": {\n \"standard\": \"Обычный URL\",\n \"direct\": \"Прямой URL\",\n \"domestic\": \"Маршрут для материкового Китая\",\n \"overseas\": \"Зарубежный маршрут\"\n },\n \"urlOptionDescriptions\": {\n \"domestic\": \"Для пользователей и нагрузок в материковом Китае; обычно дает меньшую задержку в сетях материкового Китая.\",\n \"overseas\": \"Для зарубежных развертываний, трансграничного доступа или задач, которым нужны зарубежные модели.\"\n },\n \"modelsTitle\": \"Настройки моделей по протоколам\",\n \"modelsHint\": \"Настраивайте allowlist моделей и алиасы отдельно для маршрутов Codex API, Anthropic, Gemini и OpenAI-compatible.\",\n \"protocolModels\": {\n \"codex\": \"Модели Codex API\",\n \"anthropic\": \"Модели Anthropic\",\n \"gemini\": \"Модели Gemini\",\n \"openai\": \"Модели OpenAI-compatible\"\n },\n \"protocolModelHints\": {\n \"codex\": \"Записывается в models конфигурации Codex API. Можно загрузить из /v1/models и задать алиасы.\",\n \"anthropic\": \"Записывается в models конфигурации Anthropic. Можно загрузить из /v1/models и задать алиасы.\",\n \"gemini\": \"Записывается в models конфигурации Gemini. Можно загрузить из /v1beta/models и задать алиасы.\",\n \"openai\": \"Записывается в models конфигурации OpenAI-compatible. Можно загрузить из /models и задать алиасы.\"\n },\n \"validation\": {\n \"keyRequired\": \"Введите API key для каждого группового ключа.\",\n \"protocolDuplicate\": \"Для каждого протокола можно добавить только один групповой ключ.\"\n },\n \"openaiEntries\": \"Ключей OpenAI-compatible\",\n \"codexEntries\": \"Ключей Codex API\",\n \"anthropicEntries\": \"Ключей Anthropic\",\n \"geminiEntries\": \"Ключей Gemini\",\n \"protocols\": {\n \"anthropic\": \"Anthropic\",\n \"openai\": \"OpenAI-compatible\",\n \"gemini\": \"Gemini\",\n \"codexResponses\": \"Codex API (Responses)\"\n }\n }\n }\n}\n"}, "c2241c78c404507afc886e183ead3e84dbb38c52": {"t": 1785846934.5303853, "n": 144184, "h": "491bb51547d30487", "c": "{\n \"common\": {\n \"login\": \"Войти\",\n \"logout\": \"Выйти\",\n \"back\": \"Назад\",\n \"cancel\": \"Отмена\",\n \"confirm\": \"Подтвердить\",\n \"leave\": \"Уйти\",\n \"stay\": \"Остаться\",\n \"save\": \"Сохранить\",\n \"delete\": \"Удалить\",\n \"edit\": \"Редактировать\",\n \"add\": \"Добавить\",\n \"update\": \"Обновить\",\n \"refresh\": \"Обновить\",\n \"close\": \"Закрыть\",\n \"success\": \"Успешно\",\n \"error\": \"Ошибка\",\n \"info\": \"Информация\",\n \"warning\": \"Внимание\",\n \"loading\": \"Загрузка...\",\n \"connecting\": \"Подключение...\",\n \"connected\": \"Подключено\",\n \"disconnected\": \"Отключено\",\n \"connecting_status\": \"Подключение\",\n \"connected_status\": \"Подключено\",\n \"disconnected_status\": \"Отключено\",\n \"yes\": \"Да\",\n \"no\": \"Нет\",\n \"not_set\": \"Не задано\",\n \"optional\": \"Необязательно\",\n \"required\": \"Обязательно\",\n \"api_key\": \"Ключ\",\n \"base_url\": \"Адрес\",\n \"prefix\": \"Префикс\",\n \"proxy_url\": \"Прокси\",\n \"priority\": \"Приоритет\",\n \"alias\": \"Псевдоним\",\n \"failure\": \"Сбой\",\n \"unknown_error\": \"Неизвестная ошибка\",\n \"quota_update_required\": \"Пожалуйста, обновите CPA или проверьте наличие обновлений\",\n \"quota_check_credential\": \"Пожалуйста, проверьте статус учётных данных\",\n \"copy\": \"Копировать\",\n \"expand\": \"Развернуть\",\n \"collapse\": \"Свернуть\",\n \"status\": \"Статус\",\n \"action\": \"Действие\",\n \"custom_headers_label\": \"Пользовательские заголовки\",\n \"custom_headers_hint\": \"Необязательно — HTTP-заголовки для отправки с запросом. Оставьте пустым для удаления.\",\n \"custom_headers_add\": \"Добавить заголовок\",\n \"custom_headers_key_placeholder\": \"Имя заголовка, например X-Custom-Header\",\n \"custom_headers_value_placeholder\": \"Значение заголовка\",\n \"model_name_placeholder\": \"Имя модели, напр. claude-3-5-sonnet-20241022\",\n \"model_alias_placeholder\": \"Псевдоним модели (необязательно)\",\n \"invalid_provider_index\": \"Неверный индекс провайдера.\",\n \"unsaved_changes_title\": \"Несохранённые изменения\",\n \"unsaved_changes_message\": \"У вас есть несохранённые изменения. Если вы уйдёте, они будут потеряны. Выйти?\"\n },\n \"title\": {\n \"main\": \"Центр управления CLI Proxy API\",\n \"login\": \"Центр управления CLI Proxy API\",\n \"abbr\": \"CPAMC\"\n },\n \"splash\": {\n \"title\": \"CLI Proxy API\",\n \"subtitle\": \"Центр управления\"\n },\n \"auto_login\": {\n \"title\": \"Автовход...\",\n \"message\": \"Пытаемся подключиться к серверу, используя сохранённые данные\"\n },\n \"login\": {\n \"subtitle\": \"Введите данные подключения, чтобы получить доступ к панели управления\",\n \"connection_title\": \"Адрес подключения\",\n \"connection_current\": \"Текущий URL\",\n \"connection_auto_hint\": \"Система автоматически использует текущий URL для подключения\",\n \"custom_connection_label\": \"Пользовательский URL подключения:\",\n \"custom_connection_placeholder\": \"Напр.: https://example.com:8317\",\n \"custom_connection_hint\": \"По умолчанию используется текущий URL. При необходимости замените его.\",\n \"use_current_address\": \"Использовать текущий URL\",\n \"remember_password_label\": \"Запомнить пароль\",\n \"management_key_label\": \"Ключ управления:\",\n \"management_key_placeholder\": \"Введите ключ управления\",\n \"connect_button\": \"Подключиться\",\n \"submit_button\": \"Войти\",\n \"submitting\": \"Подключение...\",\n \"error_title\": \"Ошибка входа\",\n \"error_backend_detail\": \"Ответ сервера\",\n \"error_required\": \"Пожалуйста, заполните все данные подключения\",\n \"error_invalid\": \"Подключение не удалось, проверьте адрес сервера, Management API и ключ управления\",\n \"error_network\": \"Сетевая ошибка, проверьте подключение или адрес сервера\",\n \"error_timeout\": \"Время ожидания истекло, сервер не отвечает\",\n \"error_unauthorized\": \"Аутентификация не удалась, ключ управления отсутствует или неверен\",\n \"error_forbidden\": \"Доступ запрещён: удалённое управление отключено, ключ управления не настроен или IP временно заблокирован\",\n \"error_not_found\": \"Management API не найден, проверьте, что адрес указывает на backend CLIProxyAPI\",\n \"error_server\": \"Backend не смог обработать запрос управления, проверьте журналы сервера\",\n \"error_cors\": \"Блокировка CORS, проверьте конфигурацию сервера\",\n \"error_ssl\": \"Ошибка проверки SSL/TLS сертификата\"\n },\n \"header\": {\n \"check_connection\": \"Проверить подключение\",\n \"refresh_all\": \"Обновить всё\",\n \"logout\": \"Выйти\"\n },\n \"connection\": {\n \"title\": \"Информация о подключении\",\n \"server_address\": \"Адрес сервера:\",\n \"management_key\": \"Ключ управления:\",\n \"status\": \"Статус подключения:\"\n },\n \"nav\": {\n \"dashboard\": \"Панель\",\n \"basic_settings\": \"Основные настройки\",\n \"api_keys\": \"API ключи\",\n \"ai_providers\": \"Поставщики AI\",\n \"auth_files\": \"Файлы аутентификации\",\n \"oauth\": \"OAuth вход\",\n \"quota_management\": \"Управление квотами\",\n \"usage_stats\": \"Статистика использования\",\n \"plugins\": \"Плагины\",\n \"plugins_runtime_unavailable\": \"Плагины (среда выполнения недоступна)\",\n \"plugin_store\": \"Магазин плагинов\",\n \"config_management\": \"Панель конфигурации\",\n \"logs\": \"Просмотр логов\",\n \"system_info\": \"Информация системы\"\n },\n \"nav_groups\": {\n \"operate\": \"Работа\",\n \"gateway\": \"Шлюз\",\n \"observe\": \"Наблюдение\",\n \"plugin_pages\": \"Страницы плагинов\",\n \"control\": \"Управление\"\n },\n \"nav_meta\": {\n \"dashboard\": \"Обзор работы\",\n \"ai_providers\": \"Маршрутизация моделей\",\n \"auth_files\": \"Файлы и учётные данные\",\n \"oauth\": \"Авторизация OAuth\",\n \"quota_management\": \"API ключи и лимиты\",\n \"usage_stats\": \"Полная статистика использования и запросов\",\n \"plugins\": \"Переключатели и ресурсы плагинов\",\n \"plugin_store\": \"Поиск и установка плагинов\",\n \"logs\": \"Трассировка запросов\",\n \"config_management\": \"Базовая конфигурация шлюза\",\n \"system_info\": \"Состояние и диагностика\"\n },\n \"dashboard\": {\n \"title\": \"Панель управления\",\n \"subtitle\": \"Добро пожаловать в Центр управления CLI Proxy API\",\n \"openai_providers\": \"Поставщики OpenAI\",\n \"quick_actions\": \"Быстрые действия\",\n \"current_config\": \"Текущая конфигурация\",\n \"management_keys\": \"Ключи управления\",\n \"provider_keys_detail\": \"G:{{gemini}} C:{{codex}} X:{{xai}} Cl:{{claude}} V:{{vertex}} O:{{openai}} A:{{ampcode}}\",\n \"oauth_credentials\": \"Учётные данные OAuth\",\n \"edit_settings\": \"Изменить настройки\",\n \"routing_strategy\": \"Стратегия маршрутизации\",\n \"available_models\": \"Доступные модели\",\n \"available_models_desc\": \"Всего моделей от всех провайдеров\",\n \"welcome_back\": \"С возвращением\",\n \"greeting_morning\": \"Доброе утро\",\n \"greeting_afternoon\": \"Добрый день\",\n \"greeting_evening\": \"Добрый вечер\",\n \"greeting_night\": \"Доброй ночи\",\n \"caring_morning\": \"Новый день — начнём продуктивно.\",\n \"caring_afternoon\": \"Уверенный прогресс — отличная работа.\",\n \"caring_evening\": \"День подходит к концу — финальный рывок.\",\n \"caring_night\": \"Поздняя работа? Не забудьте отдохнуть.\",\n \"system_overview\": \"Обзор системы\"\n },\n \"basic_settings\": {\n \"title\": \"Основные настройки\",\n \"debug_title\": \"Режим отладки\",\n \"debug_enable\": \"Включить режим отладки\",\n \"proxy_title\": \"Настройки прокси\",\n \"proxy_url_label\": \"URL прокси:\",\n \"proxy_url_placeholder\": \"например: socks5://user:pass@127.0.0.1:1080/\",\n \"proxy_update\": \"Обновить\",\n \"proxy_clear\": \"Очистить\",\n \"retry_title\": \"Повтор запросов\",\n \"retry_count_label\": \"Количество повторов:\",\n \"retry_update\": \"Обновить\",\n \"quota_title\": \"Поведение при превышении квоты\",\n \"quota_switch_project\": \"Автоматически переключать проект\",\n \"quota_switch_preview\": \"Переключаться на preview-модель\",\n \"logging_title\": \"Журналирование\",\n \"logging_to_file_enable\": \"Включить журналирование в файл\",\n \"logs_max_total_size_title\": \"Лимит размера журналов\",\n \"logs_max_total_size_label\": \"Максимальный общий размер журналов (МБ):\",\n \"logs_max_total_size_hint\": \"Установите 0, чтобы отключить лимит.\",\n \"logs_max_total_size_update\": \"Обновить\",\n \"request_log_title\": \"Журналирование запросов\",\n \"request_log_enable\": \"Включить журналирование запросов\",\n \"request_log_warning\": \"Оставьте выключенным, если подробная диагностика не нужна.\",\n \"force_model_prefix_enable\": \"Включить принудительный префикс модели\",\n \"ws_auth_title\": \"Аутентификация WebSocket\",\n \"ws_auth_enable\": \"Требовать аутентификацию для /ws/*\",\n \"routing_title\": \"Стратегия маршрутизации\",\n \"routing_strategy_label\": \"Стратегия маршрутизации:\",\n \"routing_strategy_hint\": \"round-robin циклически перебирает ключи; fill-first отдаёт приоритет первому доступному ключу.\",\n \"routing_strategy_update\": \"Обновить\",\n \"routing_strategy_round_robin\": \"round-robin (цикл)\",\n \"routing_strategy_fill_first\": \"fill-first (приоритет)\"\n },\n \"api_keys\": {\n \"title\": \"Управление API-ключами\",\n \"proxy_auth_title\": \"Ключи аутентификации прокси-сервиса\",\n \"add_button\": \"Добавить ключ\",\n \"empty_title\": \"API-ключи отсутствуют\",\n \"empty_desc\": \"Нажмите кнопку выше, чтобы добавить первый ключ\",\n \"item_title\": \"API-ключ\",\n \"add_modal_title\": \"Добавление API-ключа\",\n \"add_modal_key_label\": \"API-ключ:\",\n \"add_modal_key_placeholder\": \"Введите API-ключ\",\n \"edit_modal_title\": \"Редактирование API-ключа\",\n \"edit_modal_key_label\": \"API-ключ:\",\n \"delete_confirm\": \"Удалить этот API-ключ?\"\n },\n \"ai_providers\": {\n \"title\": \"Конфигурация AI-провайдеров\",\n \"gemini_title\": \"API-ключи Gemini\",\n \"gemini_add_button\": \"Добавить ключ\",\n \"gemini_empty_title\": \"Ключи Gemini отсутствуют\",\n \"gemini_empty_desc\": \"Нажмите кнопку выше, чтобы добавить первый ключ\",\n \"gemini_item_title\": \"Ключ Gemini\",\n \"gemini_add_modal_title\": \"Добавление API-ключа Gemini\",\n \"gemini_add_modal_key_label\": \"API-ключи:\",\n \"gemini_add_modal_key_placeholder\": \"Введите API-ключ Gemini\",\n \"gemini_add_modal_key_hint\": \"Добавляйте ключи по одному и при необходимости указывайте базовый URL.\",\n \"gemini_keys_add_btn\": \"Добавить ключ\",\n \"gemini_base_url_label\": \"Базовый URL (необязательно):\",\n \"gemini_base_url_placeholder\": \"например: https://generativelanguage.googleapis.com\",\n \"gemini_add_modal_proxy_label\": \"URL прокси (необязательно):\",\n \"gemini_add_modal_proxy_placeholder\": \"например: socks5://proxy.example.com:1080\",\n \"gemini_models_label\": \"Пользовательские модели (необязательно):\",\n \"gemini_models_hint\": \"Оставьте пустым, чтобы разрешить все модели, или добавьте записи name[, alias], чтобы ограничить/переименовать их для этого ключа.\",\n \"gemini_models_add_btn\": \"Добавить модель\",\n \"gemini_models_fetch_button\": \"Получить через /v1beta/models\",\n \"gemini_models_fetch_title\": \"Выбор моделей из Gemini /v1beta/models\",\n \"gemini_models_fetch_hint\": \"Вызывает GET /v1beta/models по спецификации Gemini API. По умолчанию отправляется x-goog-api-key из поля API-ключа, объединённый с вашими пользовательскими заголовками.\",\n \"gemini_models_fetch_url_label\": \"URL запроса\",\n \"gemini_models_fetch_refresh\": \"Обновить\",\n \"gemini_models_fetch_loading\": \"Получение моделей из Gemini /v1beta/models...\",\n \"gemini_models_fetch_empty\": \"Модели не получены. Проверьте Base URL, API-ключ или заголовки.\",\n \"gemini_models_fetch_error\": \"Не удалось получить модели Gemini\",\n \"gemini_models_fetch_apply\": \"Добавить выбранные модели\",\n \"model_discovery_select_visible\": \"Выбрать текущий список\",\n \"model_discovery_clear_selection\": \"Очистить выбор\",\n \"model_discovery_selected_count\": \"Выбрано: {{count}}\",\n \"gemini_models_search_label\": \"Поиск моделей\",\n \"gemini_models_search_placeholder\": \"Фильтр по имени, псевдониму или описанию\",\n \"gemini_models_search_empty\": \"Нет подходящих моделей. Попробуйте другой запрос.\",\n \"gemini_models_fetch_added\": \"Добавлено новых моделей: {{count}}\",\n \"gemini_models_count\": \"Количество моделей\",\n \"gemini_edit_modal_title\": \"Редактирование API-ключа Gemini\",\n \"gemini_edit_modal_key_label\": \"API-ключ:\",\n \"gemini_delete_confirm\": \"Удалить этот ключ Gemini?\",\n \"excluded_models_label\": \"Исключённые модели (необязательно):\",\n \"excluded_models_placeholder\": \"Через запятую или с новой строки, например gemini-1.5-pro, gemini-1.5-flash\",\n \"excluded_models_hint\": \"Оставьте пустым, чтобы разрешить все модели; значения автоматически обрезаются и дедуплицируются.\",\n \"excluded_models_count\": \"Исключено моделей: {{count}}\",\n \"prefix_label\": \"Префикс (необязательно):\",\n \"prefix_placeholder\": \"например: team-a\",\n \"prefix_hint\": \"Если задано, обращайтесь к моделям как prefix/<model>, чтобы выбрать эту запись.\",\n \"priority_label\": \"Приоритет (необязательно):\",\n \"priority_hint\": \"Чем больше значение, тем выше приоритет. Оставьте пустым для значения по умолчанию (0).\",\n \"config_toggle_label\": \"Включено\",\n \"config_disabled_badge\": \"Отключено\",\n \"codex_title\": \"Конфигурация Codex API\",\n \"codex_add_button\": \"Добавить конфигурацию\",\n \"codex_empty_title\": \"Конфигурации Codex отсутствуют\",\n \"codex_empty_desc\": \"Нажмите кнопку выше, чтобы добавить первую конфигурацию\",\n \"codex_item_title\": \"Конфигурация Codex\",\n \"codex_add_modal_title\": \"Добавление конфигурации Codex API\",\n \"codex_add_modal_key_label\": \"API-ключ:\",\n \"codex_add_modal_key_placeholder\": \"Введите API-ключ Codex\",\n \"codex_add_modal_url_label\": \"Базовый URL (обязательно):\",\n \"codex_add_modal_url_placeholder\": \"например: https://api.example.com\",\n \"codex_add_modal_proxy_label\": \"URL прокси (необязательно):\",\n \"codex_add_modal_proxy_placeholder\": \"например: socks5://proxy.example.com:1080\",\n \"codex_websockets_label\": \"Websockets\",\n \"codex_websockets_hint\": \"Включает websocket-транспорт Responses API для этого ключа.\",\n \"codex_models_label\": \"Пользовательские модели (необязательно):\",\n \"codex_models_hint\": \"Оставьте пустым, чтобы разрешить все модели, или добавьте записи name[, alias], чтобы ограничить/переименовать их.\",\n \"codex_models_add_btn\": \"Добавить модель\",\n \"codex_models_fetch_button\": \"Получить через /v1/models\",\n \"codex_models_fetch_title\": \"Выбор моделей из Codex /v1/models\",\n \"codex_models_fetch_hint\": \"Вызывает GET /v1/models по спецификации OpenAI. По умолчанию отправляет API-ключ как Bearer (если указан) и объединяет его с пользовательскими заголовками.\",\n \"codex_models_fetch_url_label\": \"URL запроса\",\n \"codex_models_fetch_refresh\": \"Обновить\",\n \"codex_models_fetch_loading\": \"Получение моделей из /v1/models...\",\n \"codex_models_fetch_empty\": \"Модели не получены. Проверьте Base URL, API-ключ или заголовки.\",\n \"codex_models_fetch_error\": \"Не удалось получить модели\",\n \"codex_models_fetch_apply\": \"Добавить выбранные модели\",\n \"codex_models_search_label\": \"Поиск моделей\",\n \"codex_models_search_placeholder\": \"Фильтр по имени, псевдониму или описанию\",\n \"codex_models_search_empty\": \"Модели по запросу не найдены. Попробуйте другой запрос.\",\n \"codex_models_fetch_added\": \"Добавлено новых моделей: {{count}}\",\n \"codex_models_count\": \"Количество моделей\",\n \"codex_edit_modal_title\": \"Редактирование конфигурации Codex API\",\n \"codex_edit_modal_key_label\": \"API-ключ:\",\n \"codex_edit_modal_url_label\": \"Базовый URL (обязательно):\",\n \"codex_edit_modal_proxy_label\": \"URL прокси (необязательно):\",\n \"codex_delete_confirm\": \"Удалить эту конфигурацию Codex?\",\n \"claude_title\": \"Конфигурация Claude API\",\n \"claude_add_button\": \"Добавить конфигурацию\",\n \"claude_empty_title\": \"Конфигурации Claude отсутствуют\",\n \"claude_empty_desc\": \"Нажмите кнопку выше, чтобы добавить первую конфигурацию\",\n \"claude_item_title\": \"Конфигурация Claude\",\n \"claude_add_modal_title\": \"Добавление конфигурации Claude API\",\n \"claude_add_modal_key_label\": \"API-ключ:\",\n \"claude_add_modal_key_placeholder\": \"Введите API-ключ Claude\",\n \"claude_add_modal_url_label\": \"Базовый URL (необязательно):\",\n \"claude_add_modal_url_placeholder\": \"например: https://api.anthropic.com\",\n \"claude_add_modal_proxy_label\": \"URL прокси (необязательно):\",\n \"claude_add_modal_proxy_placeholder\": \"например: socks5://proxy.example.com:1080\",\n \"claude_edit_modal_title\": \"Редактирование конфигурации Claude API\",\n \"claude_edit_modal_key_label\": \"API-ключ:\",\n \"claude_edit_modal_url_label\": \"Базовый URL (необязательно):\",\n \"claude_edit_modal_proxy_label\": \"URL прокси (необязательно):\",\n \"claude_delete_confirm\": \"Удалить эту конфигурацию Claude?\",\n \"claude_models_label\": \"Пользовательские модели (необязательно):\",\n \"claude_models_hint\": \"Оставьте пустым, чтобы разрешить все модели, или добавьте записи name[, alias], чтобы ограничить/переименовать их.\",\n \"claude_models_add_btn\": \"Добавить модель\",\n \"claude_models_count\": \"Количество моделей\",\n \"claude_models_fetch_button\": \"Получить через /v1/models\",\n \"claude_models_fetch_title\": \"Выбор моделей из Claude /v1/models\",\n \"claude_models_fetch_hint\": \"Вызывает GET /v1/models по спецификации Anthropic. По умолчанию отправляются x-api-key и anthropic-version: 2023-06-01, объединённые с вашими пользовательскими заголовками.\",\n \"claude_models_fetch_url_label\": \"URL запроса\",\n \"claude_models_fetch_refresh\": \"Обновить\",\n \"claude_models_fetch_loading\": \"Получение моделей из Claude /v1/models...\",\n \"claude_models_fetch_empty\": \"Модели не вернулись. Проверьте Base URL, API-ключ или заголовки.\",\n \"claude_models_fetch_error\": \"Не удалось получить модели Claude\",\n \"claude_models_fetch_apply\": \"Добавить выбранные модели\",\n \"claude_models_search_label\": \"Поиск моделей\",\n \"claude_models_search_placeholder\": \"Фильтр по имени, псевдониму или описанию\",\n \"claude_models_search_empty\": \"Модели по запросу не найдены. Попробуйте другой ключ.\",\n \"claude_models_fetch_added\": \"Добавлено новых моделей: {{count}}\",\n \"claude_test_title\": \"Тест подключения\",\n \"claude_test_hint\": \"Отправляет тестовый запрос в /v1/messages по спецификации Anthropic, чтобы проверить текущую конфигурацию.\",\n \"claude_test_select_placeholder\": \"Выберите из текущих моделей\",\n \"claude_test_select_empty\": \"Модели не настроены. Сначала добавьте модели\",\n \"claude_test_action\": \"Тест\",\n \"claude_test_running\": \"Отправка тестового запроса Claude...\",\n \"claude_test_timeout\": \"Тестовый запрос превысил тайм-аут {{seconds}} с\",\n \"claude_test_success\": \"Тест выполнен успешно. Модель Claude ответила.\",\n \"claude_test_failed\": \"Тест не выполнен\",\n \"claude_test_key_required\": \"Укажите Claude API-ключ или задайте x-api-key в пользовательских заголовках\",\n \"claude_test_model_required\": \"Выберите модель для теста\",\n \"claude_test_endpoint_invalid\": \"Не удалось сформировать корректный endpoint Claude /v1/messages\",\n \"claude_cloak_title\": \"Маскировка запросов (необязательно):\",\n \"claude_cloak_toggle_label\": \"Включить\",\n \"claude_cloak_toggle_aria\": \"Переключить маскировку запросов\",\n \"claude_cloak_hint\": \"Маскировка делает запросы похожими на запросы официального CLI Claude Code для клиентов, которые не являются Claude Code.\",\n \"claude_cloak_mode_label\": \"Режим:\",\n \"claude_cloak_mode_hint\": \"auto: маскировать только если клиент не Claude Code; always: всегда; never: никогда.\",\n \"claude_cloak_mode_auto\": \"Auto (только не-Claude Code)\",\n \"claude_cloak_mode_always\": \"Всегда\",\n \"claude_cloak_mode_never\": \"Никогда\",\n \"claude_cloak_strict_label\": \"Строгий режим:\",\n \"claude_cloak_strict_hint\": \"Если включено, пользовательские system-сообщения удаляются, остаётся только промпт Claude Code.\",\n \"claude_cloak_sensitive_words_label\": \"Чувствительные слова (необязательно):\",\n \"claude_cloak_sensitive_words_placeholder\": \"Через запятую или с новой строки, например internal-project\",\n \"claude_cloak_sensitive_words_hint\": \"Эти слова будут обфусцированы с помощью символов нулевой ширины.\",\n \"claude_cloak_sensitive_words_count\": \"Чувствительные слова\",\n \"vertex_title\": \"Конфигурация Vertex API\",\n \"vertex_add_button\": \"Добавить конфигурацию\",\n \"vertex_empty_title\": \"Конфигурации Vertex отсутствуют\",\n \"vertex_empty_desc\": \"Нажмите кнопку выше, чтобы добавить первую конфигурацию\",\n \"vertex_item_title\": \"Конфигурация Vertex\",\n \"vertex_add_modal_title\": \"Добавление конфигурации Vertex API\",\n \"vertex_add_modal_key_label\": \"API-ключ:\",\n \"vertex_add_modal_key_placeholder\": \"Введите API-ключ Vertex\",\n \"vertex_add_modal_url_label\": \"Базовый URL:\",\n \"vertex_add_modal_url_placeholder\": \"например: https://example.com/api\",\n \"vertex_add_modal_proxy_label\": \"URL прокси (необязательно):\",\n \"vertex_add_modal_proxy_placeholder\": \"например: socks5://proxy.example.com:1080\",\n \"vertex_edit_modal_title\": \"Редактирование конфигурации Vertex API\",\n \"vertex_edit_modal_key_label\": \"API-ключ:\",\n \"vertex_edit_modal_url_label\": \"Базовый URL:\",\n \"vertex_edit_modal_proxy_label\": \"URL прокси (необязательно):\",\n \"vertex_delete_confirm\": \"Удалить эту конфигурацию Vertex?\",\n \"vertex_models_label\": \"Псевдонимы моделей:\",\n \"vertex_models_add_btn\": \"Добавить сопоставление\",\n \"vertex_models_count\": \"Количество псевдонимов\",\n \"ampcode_title\": \"Интеграция Amp CLI (ampcode)\",\n \"ampcode_modal_title\": \"Настройка Ampcode\",\n \"ampcode_upstream_url_label\": \"Upstream URL\",\n \"ampcode_upstream_url_placeholder\": \"например: https://ampcode.com\",\n \"ampcode_upstream_url_hint\": \"Необязательно. Оставьте пустым, чтобы использовать URL плоскости управления по умолчанию/обнаруженный автоматически.\",\n \"ampcode_upstream_api_key_label\": \"Upstream API-ключ (официальный Amp)\",\n \"ampcode_upstream_api_key_placeholder\": \"Введите sk-amp... (оставьте пустым, чтобы сохранить текущий)\",\n \"ampcode_upstream_api_key_hint\": \"Необязательно. Пустое значение не изменит текущий официальный ключ Amp. Используйте кнопку ниже, чтобы очистить его.\",\n \"ampcode_upstream_api_key_current\": \"Текущий официальный ключ Amp: {{key}}\",\n \"ampcode_clear_upstream_api_key\": \"Очистить официальный ключ\",\n \"ampcode_clear_upstream_api_key_confirm\": \"Очистить upstream API-ключ Ampcode (официальный Amp)?\",\n \"ampcode_upstream_api_keys_label\": \"Маршрутизация нескольких upstream API-ключей\",\n \"ampcode_upstream_api_keys_hint\": \"Привяжите разные upstream API-ключи Amp к указанным клиентским API-ключам. Клиентские ключи можно разделять запятыми или переводами строки.\",\n \"ampcode_upstream_api_keys_add_btn\": \"Добавить upstream-сопоставление\",\n \"ampcode_upstream_api_keys_upstream_placeholder\": \"Upstream API-ключ (sk-amp-...)\",\n \"ampcode_upstream_api_keys_clients_placeholder\": \"Клиентские API-ключи, через запятую или с новой строки\",\n \"ampcode_upstream_api_keys_item_title\": \"Upstream-сопоставление #{{index}}\",\n \"ampcode_upstream_api_keys_count\": \"Количество upstream-сопоставлений\",\n \"ampcode_force_model_mappings_label\": \"Принудительно применять сопоставления моделей\",\n \"ampcode_force_model_mappings_hint\": \"При включении сопоставления переопределяют локальные проверки доступности API-ключей.\",\n \"ampcode_model_mappings_label\": \"Сопоставления моделей (из → в)\",\n \"ampcode_model_mappings_hint\": \"Переименовывает модели в запросах Amp. Оставьте пустым, чтобы отключить сопоставления.\",\n \"ampcode_model_mappings_add_btn\": \"Добавить сопоставление\",\n \"ampcode_model_mappings_from_placeholder\": \"исходная модель\",\n \"ampcode_model_mappings_to_placeholder\": \"целевая модель\",\n \"ampcode_model_mappings_count\": \"Количество сопоставлений\",\n \"ampcode_lists_overwrite_title\": \"Перезаписать списки\",\n \"ampcode_lists_overwrite_confirm\": \"Существующие списки multi-upstream/сопоставлений моделей не удалось загрузить. Продолжение может перезаписать или очистить их. Продолжить?\",\n \"ampcode_mappings_overwrite_confirm\": \"Не удалось загрузить существующие сопоставления. Продолжение может перезаписать или очистить их. Продолжить?\",\n \"openai_title\": \"Совместимые с OpenAI провайдеры\",\n \"openai_add_button\": \"Добавить провайдера\",\n \"openai_empty_title\": \"Провайдеры OpenAI отсутствуют\",\n \"openai_empty_desc\": \"Нажмите кнопку выше, чтобы добавить первого провайдера\",\n \"openai_filtered_empty_title\": \"Нет подходящих провайдеров\",\n \"openai_filtered_empty_desc\": \"Ни один провайдер не соответствует текущему фильтру моделей. Очистите фильтр и попробуйте снова.\",\n \"sort_by_name\": \"Сортировать по имени\",\n \"sort_ascending\": \"Сортировать по возрастанию\",\n \"sort_asc_short\": \"Возр.\",\n \"sort_by_priority\": \"Сортировать по приоритету\",\n \"sort_by_recent_success\": \"Сортировать по недавним успехам\",\n \"sort_descending\": \"Сортировать по убыванию\",\n \"sort_desc_short\": \"Убыв.\",\n \"openai_test_model\": \"Тестовая модель\",\n \"openai_add_modal_title\": \"Добавление совместимого с OpenAI провайдера\",\n \"openai_add_modal_name_label\": \"Имя провайдера:\",\n \"openai_add_modal_name_placeholder\": \"например: openrouter\",\n \"openai_add_modal_url_label\": \"Базовый URL:\",\n \"openai_add_modal_url_placeholder\": \"например: https://openrouter.ai/api/v1\",\n \"openai_add_modal_keys_label\": \"API-ключи\",\n \"openai_edit_modal_keys_label\": \"API-ключи\",\n \"openai_keys_hint\": \"Добавляйте каждый ключ отдельно с необязательным URL прокси для удобства.\",\n \"openai_keys_add_btn\": \"Добавить ключ\",\n \"openai_key_placeholder\": \"ключ вида sk-...\",\n \"openai_proxy_placeholder\": \"Необязательный URL прокси (например, socks5://...)\",\n \"openai_add_modal_models_label\": \"Список моделей (name[, alias] по строкам):\",\n \"openai_models_hint\": \"Пример: gpt-4o-mini или moonshotai/kimi-k2:free, kimi-k2\",\n \"openai_model_name_placeholder\": \"Имя модели, например moonshotai/kimi-k2:free\",\n \"openai_model_alias_placeholder\": \"Псевдоним модели (необязательно)\",\n \"openai_models_add_btn\": \"Добавить модель\",\n \"openai_models_fetch_button\": \"Получить через /models\",\n \"openai_models_fetch_title\": \"Выбор моделей из /models\",\n \"openai_models_fetch_hint\": \"Вызовите эндпоинт /models, используя указанный выше базовый URL, отправив первый API-ключ как Bearer с дополнительными заголовками.\",\n \"openai_models_fetch_url_label\": \"URL запроса\",\n \"openai_models_fetch_refresh\": \"Обновить\",\n \"openai_models_fetch_loading\": \"Получение моделей из /models...\",\n \"openai_models_fetch_empty\": \"Модели не вернулись. Проверьте эндпоинт или авторизацию.\",\n \"openai_models_fetch_error\": \"Не удалось получить модели\",\n \"openai_models_fetch_back\": \"Вернуться к редактированию\",\n \"openai_models_fetch_apply\": \"Добавить выбранные модели\",\n \"openai_models_search_label\": \"Поиск моделей\",\n \"openai_models_search_placeholder\": \"Фильтр по имени, псевдониму или описанию\",\n \"openai_models_search_empty\": \"Модели по запросу не найдены. Попробуйте другой ключ.\",\n \"openai_models_fetch_invalid_url\": \"Сначала введите корректный базовый URL\",\n \"openai_models_fetch_added\": \"Добавлено новых моделей: {{count}}\",\n \"openai_edit_modal_title\": \"Редактирование совместимого с OpenAI провайдера\",\n \"openai_edit_modal_name_label\": \"Имя провайдера:\",\n \"openai_edit_modal_url_label\": \"Базовый URL:\",\n \"openai_edit_modal_models_label\": \"Список моделей (name[, alias] по строкам):\",\n \"openai_delete_confirm\": \"Удалить этого провайдера OpenAI?\",\n \"openai_keys_count\": \"Количество ключей\",\n \"openai_models_count\": \"Количество моделей\",\n \"openai_test_title\": \"Тест подключения\",\n \"openai_test_hint\": \"Отправьте запрос /chat/completions с текущими настройками, чтобы проверить доступность.\",\n \"openai_test_model_placeholder\": \"Модель для теста\",\n \"openai_test_action\": \"Запустить тест\",\n \"openai_test_running\": \"Отправка тестового запроса...\",\n \"openai_test_timeout\": \"Тестовый запрос превысил тайм-аут {{seconds}} с\",\n \"openai_test_success\": \"Тест выполнен успешно. Модель ответила.\",\n \"openai_test_failed\": \"Тест не выполнен\",\n \"openai_test_select_placeholder\": \"Выберите из текущих моделей\",\n \"openai_test_select_empty\": \"Модели не настроены. Сначала добавьте модели\",\n \"openai_test_single_action\": \"Тест\",\n \"openai_test_all_action\": \"Тестировать все ключи\",\n \"openai_test_all_hint\": \"Проверить состояние подключения для всех ключей\",\n \"openai_test_all_success\": \"Все {{count}} ключей прошли тест\",\n \"openai_test_all_failed\": \"Все {{count}} ключей не прошли тест\",\n \"openai_test_all_partial\": \"Тест завершен: {{success}} прошло, {{failed}} не прошло\",\n \"model_search_placeholder\": \"Фильтр по моделям...\",\n \"model_search_clear\": \"Очистить\",\n \"model_select_all\": \"Выбрать все\",\n \"model_filter_empty\": \"Нет моделей для фильтра\"\n },\n \"auth_files\": {\n \"title\": \"Управление файлами авторизации\",\n \"title_section\": \"Файлы авторизации\",\n \"description\": \"Управляйте всеми JSON-файлами авторизации CLI Proxy (например, Qwen, Gemini, Vertex). Загрузка учётных данных сразу включает соответствующую интеграцию AI.\",\n \"upload_button\": \"Загрузить файл\",\n \"delete_all_button\": \"Удалить всё\",\n \"empty_title\": \"Файлы авторизации отсутствуют\",\n \"empty_desc\": \"Нажмите кнопку выше, чтобы загрузить первый файл\",\n \"search_empty_title\": \"Файлы не найдены\",\n \"search_empty_desc\": \"Попробуйте изменить фильтры или очистить строку поиска.\",\n \"file_size\": \"Размер\",\n \"file_modified\": \"Изменён\",\n \"health_status_label\": \"Состояние\",\n \"health_status_healthy\": \"Нормально\",\n \"health_status_warning\": \"Предупреждение\",\n \"health_status_disabled\": \"Отключено\",\n \"health_status_unknown\": \"Неизвестно\",\n \"health_status_no_message\": \"Нет сообщения о статусе\",\n \"last_refresh_label\": \"Последнее обновление\",\n \"refresh_not_available\": \"Н/Д\",\n \"refresh_just_now\": \"Только что\",\n \"download_button\": \"Скачать\",\n \"delete_button\": \"Удалить\",\n \"delete_confirm\": \"Удалить файл\",\n \"delete_all_confirm\": \"Удалить все файлы авторизации? Это действие нельзя отменить!\",\n \"delete_filtered_confirm\": \"Удалить все файлы авторизации {{type}}? Это действие нельзя отменить!\",\n \"delete_problem_button\": \"Удалить проблемные\",\n \"delete_problem_button_with_type\": \"Удалить проблемные файлы {{type}}\",\n \"delete_problem_confirm\": \"Удалить все проблемные файлы авторизации? Это действие нельзя отменить!\",\n \"delete_problem_filtered_confirm\": \"Удалить все проблемные файлы авторизации {{type}}? Это действие нельзя отменить!\",\n \"delete_filtered_result_button\": \"Удалить результаты фильтра\",\n \"delete_filtered_result_confirm\": \"Удалить файлы авторизации из текущих результатов фильтра? Это действие нельзя отменить!\",\n \"upload_error_json\": \"Допустимы только файлы JSON\",\n \"upload_error_size\": \"Размер файла не может превышать {{maxSize}}\",\n \"upload_success\": \"Файл успешно загружен\",\n \"download_success\": \"Файл успешно скачан\",\n \"delete_success\": \"Файл успешно удалён\",\n \"delete_all_success\": \"Удаление завершено\",\n \"delete_filtered_success\": \"Удалено файлов {{type}}: {{count}}\",\n \"delete_filtered_partial\": \"Удаление файлов {{type}} завершено: успешных {{success}}, ошибок {{failed}}\",\n \"delete_filtered_none\": \"Нет файлов {{type}} для удаления при текущем фильтре\",\n \"delete_problem_success\": \"Удалено проблемных файлов авторизации: {{count}}\",\n \"delete_problem_filtered_success\": \"Удалено проблемных файлов авторизации {{type}}: {{count}}\",\n \"delete_problem_partial\": \"Удаление проблемных файлов авторизации завершено: успешных {{success}}, ошибок {{failed}}\",\n \"delete_problem_filtered_partial\": \"Удаление проблемных файлов авторизации {{type}} завершено: успешных {{success}}, ошибок {{failed}}\",\n \"delete_problem_none\": \"Нет проблемных файлов авторизации для удаления при текущем фильтре\",\n \"delete_problem_filtered_none\": \"Нет проблемных файлов авторизации {{type}} для удаления при текущем фильтре\",\n \"delete_filtered_result_success\": \"Удалено файлов авторизации из результатов фильтра: {{count}}\",\n \"delete_filtered_result_partial\": \"Удаление результатов фильтра завершено: успешных {{success}}, ошибок {{failed}}\",\n \"delete_filtered_result_none\": \"Нет файлов авторизации для удаления в текущих результатах фильтра\",\n \"files_count\": \"файлов\",\n \"pagination_prev\": \"Предыдущая\",\n \"pagination_next\": \"Следующая\",\n \"pagination_info\": \"Страница {{current}} / {{total}} · {{count}} файлов\",\n \"search_label\": \"Поиск конфигов\",\n \"search_placeholder\": \"Фильтр по имени, типу или провайдеру, поддерживается wildcard *\",\n \"problem_filter_label\": \"Фильтр проблем\",\n \"problem_filter_only\": \"Показывать только проблемные учётные данные\",\n \"disabled_filter_only\": \"Показывать только отключённые учётные данные\",\n \"display_options_label\": \"Параметры отображения\",\n \"compact_mode_label\": \"Компактный режим\",\n \"sort_label\": \"Сортировка\",\n \"sort_default\": \"По умолчанию\",\n \"sort_az\": \"A-Z Имя\",\n \"sort_priority\": \"Приоритет\",\n \"priority_display\": \"Приоритет\",\n \"page_size_label\": \"На странице\",\n \"page_size_unit\": \"элементов\",\n \"view_mode_paged\": \"Постранично\",\n \"view_mode_all\": \"Показать все\",\n \"too_many_files_warning\": \"Слишком много учётных данных. Полный список может повлиять на производительность, используйте постраничный режим.\",\n \"filter_all\": \"Все\",\n \"filter_qwen\": \"Qwen\",\n \"filter_gemini\": \"Gemini\",\n \"filter_gemini-cli\": \"GeminiCLI\",\n \"filter_kimi\": \"Kimi\",\n \"filter_aistudio\": \"AIStudio\",\n \"filter_claude\": \"Claude\",\n \"filter_codex\": \"Codex\",\n \"filter_antigravity\": \"Antigravity\",\n \"filter_xai\": \"xAI\",\n \"filter_iflow\": \"iFlow\",\n \"filter_vertex\": \"Vertex\",\n \"filter_empty\": \"Пусто\",\n \"filter_unknown\": \"Другое\",\n \"type_qwen\": \"Qwen\",\n \"type_gemini\": \"Gemini\",\n \"type_gemini-cli\": \"GeminiCLI\",\n \"type_kimi\": \"Kimi\",\n \"type_aistudio\": \"AIStudio\",\n \"type_claude\": \"Claude\",\n \"type_codex\": \"Codex\",\n \"type_antigravity\": \"Antigravity\",\n \"type_xai\": \"xAI\",\n \"type_iflow\": \"iFlow\",\n \"type_vertex\": \"Vertex\",\n \"type_empty\": \"Пусто\",\n \"type_unknown\": \"Другое\",\n \"type_virtual\": \"Виртуальный файл авторизации\",\n \"models_button\": \"Модели\",\n \"models_title\": \"Поддерживаемые модели\",\n \"models_loading\": \"Загрузка списка моделей...\",\n \"models_empty\": \"Для этих учётных данных нет доступных моделей\",\n \"models_empty_desc\": \"Возможно, учётные данные ещё не загружены сервером или к ним не привязаны модели.\",\n \"models_unsupported\": \"Функция не поддерживается в текущей версии\",\n \"models_unsupported_desc\": \"Обновите CLI Proxy API до последней версии и повторите попытку\",\n \"models_excluded_badge\": \"Отключена\",\n \"models_excluded_hint\": \"Эта OAuth-модель отключена\",\n \"status_toggle_label\": \"Включено\",\n \"status_enabled_success\": \"\\\"{{name}}\\\" включён\",\n \"status_disabled_success\": \"\\\"{{name}}\\\" отключён\",\n \"batch_status_success\": \"{{count}} файлов обновлено\",\n \"batch_status_partial\": \"{{success}} обновлено, {{failed}} не удалось\",\n \"batch_delete_title\": \"Удалить выбранные файлы\",\n \"batch_delete_confirm\": \"Удалить {{count}} файлов?\",\n \"batch_selected\": \"{{count}} выбрано\",\n \"batch_select_all\": \"Выбрать все\",\n \"batch_select_page\": \"Выбрать страницу\",\n \"batch_select_filtered\": \"Выбрать по фильтру\",\n \"batch_invert_page\": \"Инвертировать страницу\",\n \"batch_deselect\": \"Отменить\",\n \"batch_download\": \"Скачать выбранные\",\n \"batch_download_success\": \"Запущена загрузка {{count}} файлов\",\n \"batch_download_partial\": \"Загрузка завершена: успешно {{success}}, ошибок {{failed}}\",\n \"batch_enable\": \"Включить\",\n \"batch_disable\": \"Отключить\",\n \"prefix_proxy_button\": \"Просмотр / редактирование файла авторизации\",\n \"auth_field_editor_title\": \"Просмотр / редактирование файла авторизации - {{name}}\",\n \"prefix_proxy_loading\": \"Загрузка файла авторизации...\",\n \"prefix_proxy_info_label\": \"Информация о файле авторизации (info)\",\n \"prefix_proxy_source_label\": \"JSON файла авторизации (предпросмотр)\",\n \"prefix_proxy_invalid_content_label\": \"Скачанное содержимое (сокращено)\",\n \"prefix_label\": \"Префикс (prefix)\",\n \"proxy_url_label\": \"URL прокси (proxy_url)\",\n \"prefix_placeholder\": \"\",\n \"proxy_url_placeholder\": \"socks5://username:password@proxy_ip:port/\",\n \"priority_label\": \"Приоритет (priority)\",\n \"priority_placeholder\": \"например: 10 или -1\",\n \"priority_hint\": \"Только целые числа. Некорректные значения игнорируются. Чем больше число, тем выше приоритет.\",\n \"websockets_label\": \"WebSockets (websockets)\",\n \"websockets_hint\": \"Включает websocket-транспорт Responses API для этих учётных данных.\",\n \"codex_websockets_label\": \"WebSockets (websockets)\",\n \"codex_websockets_hint\": \"Включает websocket-транспорт Responses API для этих учётных данных Codex.\",\n \"excluded_models_label\": \"Исключённые модели (excluded_models)\",\n \"excluded_models_placeholder\": \"Через запятую или с новой строки, например: model-a, gpt-5-*, *-preview\",\n \"excluded_models_hint\": \"Сохраняется как массив; значения trim/нижний регистр/без дублей/с сортировкой.\",\n \"disable_cooling_label\": \"Отключение охлаждения (disable_cooling)\",\n \"disable_cooling_placeholder\": \"например: true / false / 1 / 0\",\n \"disable_cooling_hint\": \"Поддерживает boolean, числа 0/не 0 и строки true/false/1/0; непарсируемые значения игнорируются.\",\n \"using_api_label\": \"Использовать официальный API (using_api)\",\n \"using_api_hint\": \"Если включено, используется официальный API xAI; если выключено — Grok CLI chat-proxy.\",\n \"note_label\": \"Заметка (note)\",\n \"note_placeholder\": \"Введите заметку, например: аккаунт Ивана\",\n \"note_hint\": \"Необязательно. Используется для описания назначения или владельца учётных данных; оставьте пустым, чтобы не записывать.\",\n \"note_display\": \"Заметка\",\n \"prefix_proxy_invalid_json\": \"Этот файл авторизации не является JSON-объектом, поэтому поля нельзя редактировать.\",\n \"prefix_proxy_html_challenge\": \"Скачанное содержимое является HTML-страницей проверки, а не JSON-объектом авторизации. Повторно авторизуйтесь или замените файл перед редактированием полей.\",\n \"prefix_proxy_saved_success\": \"Файл авторизации \\\"{{name}}\\\" успешно обновлён\",\n \"card_tools_title\": \"Инструменты\",\n \"quota_refresh_single\": \"Обновить квоту\",\n \"quota_refresh_hint\": \"Обновить квоту только для этих учётных данных\",\n \"quota_refresh_success\": \"Квота для \\\"{{name}}\\\" обновлена\",\n \"quota_refresh_failed\": \"Не удалось обновить квоту для \\\"{{name}}\\\": {{message}}\"\n },\n \"antigravity_quota\": {\n \"title\": \"Квота Antigravity\",\n \"empty_title\": \"Файлы авторизации Antigravity отсутствуют\",\n \"empty_desc\": \"Загрузите учётные данные Antigravity, чтобы увидеть оставшуюся квоту.\",\n \"idle\": \"Не загружено. Нажмите \\\"Обновить квоту\\\".\",\n \"loading\": \"Загрузка квоты...\",\n \"load_failed\": \"Не удалось загрузить квоту: {{message}}\",\n \"missing_auth_index\": \"В файле авторизации отсутствует auth_index\",\n \"empty_models\": \"Данные по квоте отсутствуют\",\n \"refresh_button\": \"Обновить квоту\",\n \"fetch_all\": \"Получить все\"\n },\n \"claude_quota\": {\n \"title\": \"Квота Claude\",\n \"empty_title\": \"Файлы авторизации Claude OAuth отсутствуют\",\n \"empty_desc\": \"Войдите через Claude OAuth, чтобы увидеть квоту.\",\n \"idle\": \"Не загружено. Нажмите \\\"Обновить квоту\\\".\",\n \"loading\": \"Загрузка квоты...\",\n \"load_failed\": \"Не удалось загрузить квоту: {{message}}\",\n \"missing_auth_index\": \"В файле авторизации отсутствует auth_index\",\n \"empty_windows\": \"Данные по квоте отсутствуют\",\n \"refresh_button\": \"Обновить квоту\",\n \"fetch_all\": \"Получить все\",\n \"five_hour\": \"Лимит на 5 часов\",\n \"seven_day\": \"Лимит на 7 дней\",\n \"seven_day_oauth_apps\": \"7 дней OAuth приложения\",\n \"seven_day_opus\": \"7 дней Opus\",\n \"seven_day_sonnet\": \"7 дней Sonnet\",\n \"seven_day_cowork\": \"7 дней Cowork\",\n \"iguana_necktie\": \"Iguana Necktie\",\n \"seven_day_fable\": \"7 дней Fable 5\",\n \"extra_usage_label\": \"Дополнительное использование\",\n \"plan_label\": \"План\",\n \"plan_unknown\": \"Неизвестно\",\n \"plan_free\": \"Free\",\n \"plan_pro\": \"Pro\",\n \"plan_max\": \"Max\",\n \"plan_max5\": \"Max 5x\",\n \"plan_max20\": \"Max 20x\",\n \"plan_team\": \"Team\"\n },\n \"gemini_cli_quota\": {\n \"title\": \"Квота Gemini CLI\",\n \"empty_title\": \"Файлы авторизации Gemini CLI отсутствуют\",\n \"empty_desc\": \"Загрузите учётные данные Gemini CLI, чтобы увидеть оставшуюся квоту.\",\n \"idle\": \"Не загружено. Нажмите \\\"Обновить квоту\\\".\",\n \"loading\": \"Загрузка квоты...\",\n \"load_failed\": \"Не удалось загрузить квоту: {{message}}\",\n \"missing_auth_index\": \"В файле авторизации отсутствует auth_index\",\n \"missing_project_id\": \"В учётных данных Gemini CLI отсутствует идентификатор проекта\",\n \"empty_buckets\": \"Данные по квоте отсутствуют\",\n \"refresh_button\": \"Обновить квоту\",\n \"fetch_all\": \"Получить все\",\n \"remaining_amount\": \"Осталось {{count}}\",\n \"tier_label\": \"Уровень\",\n \"tier_free\": \"Бесплатный\",\n \"tier_legacy\": \"Устаревший\",\n \"tier_standard\": \"Стандартный\",\n \"tier_pro\": \"Pro\",\n \"tier_ultra\": \"Ultra\",\n \"credit_label\": \"Google One AI кредиты\",\n \"credit_amount\": \"{{count}} кредитов\"\n },\n \"kimi_quota\": {\n \"title\": \"Квота Kimi\",\n \"empty_title\": \"Файлы авторизации Kimi отсутствуют\",\n \"empty_desc\": \"Загрузите учётные данные Kimi, чтобы увидеть оставшуюся квоту.\",\n \"idle\": \"Не загружено. Нажмите \\\"Обновить квоту\\\".\",\n \"loading\": \"Загрузка квоты...\",\n \"load_failed\": \"Не удалось загрузить квоту: {{message}}\",\n \"missing_auth_index\": \"В файле авторизации отсутствует auth_index\",\n \"empty_data\": \"Данные по квоте отсутствуют\",\n \"refresh_button\": \"Обновить квоту\",\n \"fetch_all\": \"Получить все\",\n \"weekly_limit\": \"Недельный лимит\",\n \"limit_window\": \"Лимит {{duration}}\",\n \"limit_index\": \"Лимит #{{index}}\",\n \"reset_hint\": \"сброс через {{hint}}\",\n \"reset_at\": \"Сброс {{time}}\"\n },\n \"xai_quota\": {\n \"title\": \"Квота Grok\",\n \"empty_title\": \"Файлы авторизации xAI/Grok отсутствуют\",\n \"empty_desc\": \"Войдите через xAI OAuth, чтобы увидеть квоту Grok.\",\n \"idle\": \"Не загружено. Нажмите \\\"Обновить квоту\\\".\",\n \"loading\": \"Загрузка квоты...\",\n \"load_failed\": \"Не удалось загрузить квоту: {{message}}\",\n \"missing_auth_index\": \"В файле авторизации отсутствует auth_index\",\n \"empty_data\": \"Данные по квоте отсутствуют\",\n \"refresh_button\": \"Обновить квоту\",\n \"fetch_all\": \"Получить все\",\n \"weekly_limit\": \"Недельный лимит\",\n \"monthly_credits\": \"Месячные кредиты\",\n \"used_percent\": \"Использовано {{percent}}\",\n \"reset_at\": \"Сброс {{time}}\",\n \"product_usage\": \"Использование {{product}}\",\n \"plan_label\": \"План\",\n \"plan_supergrok\": \"SuperGrok\",\n \"plan_supergrok_heavy\": \"SuperGrok Heavy\",\n \"pay_as_you_go_label\": \"Оплата по факту\",\n \"pay_as_you_go_enabled\": \"Включено, лимит {{cap}}\",\n \"pay_as_you_go_disabled\": \"Отключено\"\n },\n \"vertex_import\": {\n \"title\": \"Вход с Vertex JSON\",\n \"description\": \"Загрузите JSON ключа сервисного аккаунта Google, чтобы сохранить его как auth-dir/vertex-<project>.json по тем же правилам, что и помощник CLI vertex-import.\",\n \"location_label\": \"Регион (необязательно)\",\n \"location_placeholder\": \"us-central1\",\n \"location_hint\": \"Оставьте пустым, чтобы использовать регион us-central1 по умолчанию.\",\n \"file_label\": \"JSON ключ сервисного аккаунта\",\n \"file_hint\": \"Принимаются только JSON-файлы ключей сервисных аккаунтов Google Cloud.\",\n \"file_placeholder\": \"Файл не выбран\",\n \"choose_file\": \"Выбрать файл\",\n \"import_button\": \"Импортировать учётные данные Vertex\",\n \"file_required\": \"Сначала выберите файл учётных данных .json\",\n \"success\": \"Учётные данные Vertex успешно импортированы\",\n \"result_title\": \"Учётные данные сохранены\",\n \"result_project\": \"ID проекта\",\n \"result_email\": \"Сервисный аккаунт\",\n \"result_location\": \"Регион\",\n \"result_file\": \"Сохранённый файл\"\n },\n \"oauth_excluded\": {\n \"title\": \"Отключение OAuth-моделей\",\n \"description\": \"Отключения моделей по провайдерам отображаются карточками; нажмите карточку, чтобы изменить или удалить. Поддерживаются шаблоны *. Область зависит от фильтра файлов авторизации.\",\n \"add\": \"Добавить отключение\",\n \"add_title\": \"Добавление отключения моделей для провайдера\",\n \"edit_title\": \"Редактирование отключения моделей для {{provider}}\",\n \"refresh\": \"Обновить\",\n \"refreshing\": \"Обновляется...\",\n \"provider_label\": \"Провайдер\",\n \"provider_auto\": \"Следовать текущему фильтру\",\n \"provider_placeholder\": \"например: gemini-cli\",\n \"provider_hint\": \"По умолчанию используется текущий фильтр; выберите существующего провайдера или введите новое имя.\",\n \"models_label\": \"Отключаемые модели\",\n \"models_loading\": \"Загрузка моделей...\",\n \"models_unsupported\": \"Текущая версия CPA не поддерживает загрузку списка моделей.\",\n \"models_loaded\": \"Загружено моделей: {{count}}. Отметьте модели, которые нужно отключить.\",\n \"no_models_available\": \"Для этого провайдера нет доступных моделей.\",\n \"custom_rule_label\": \"Пользовательское правило модели\",\n \"custom_rule_hint\": \"Введите точный ID модели или шаблон, например gpt-*.\",\n \"custom_rule_placeholder\": \"например: gpt-* / custom-model\",\n \"custom_rule_add\": \"Добавить правило\",\n \"custom_rules_label\": \"Настроенные пользовательские правила\",\n \"custom_rule_remove\": \"Удалить {{rule}}\",\n \"save\": \"Сохранить/обновить\",\n \"saving\": \"Сохранение...\",\n \"save_success\": \"Отключение моделей обновлено\",\n \"save_failed\": \"Не удалось обновить отключение моделей\",\n \"delete\": \"Удалить провайдера\",\n \"delete_confirm\": \"Удалить отключение моделей для {{provider}}?\",\n \"delete_success\": \"Отключение моделей провайдера удалено\",\n \"delete_failed\": \"Не удалось удалить отключение моделей\",\n \"deleting\": \"Удаление...\",\n \"no_models\": \"Отключаемые модели не настроены\",\n \"model_count\": \"Отключено моделей: {{count}}\",\n \"list_empty_all\": \"Отключений моделей пока нет — используйте \\\"Добавить отключение\\\".\",\n \"list_empty_filtered\": \"В этой области нет отключённых моделей; нажмите \\\"Добавить отключение\\\".\",\n \"disconnected\": \"Подключитесь к серверу, чтобы просматривать отключение моделей\",\n \"load_failed\": \"Не удалось загрузить отключение моделей\",\n \"provider_required\": \"Сначала укажите провайдера\",\n \"scope_all\": \"Область: все провайдеры\",\n \"scope_provider\": \"Область: {{provider}}\",\n \"upgrade_required\": \"Текущая версия CPA не поддерживает отключение OAuth-моделей. Пожалуйста, обновите систему.\",\n \"upgrade_required_title\": \"Пожалуйста, обновите CLI Proxy API\",\n \"upgrade_required_desc\": \"Текущая версия сервера не поддерживает получение отключения OAuth-моделей. Обновите CPA (CLI Proxy API) до последней версии и повторите попытку.\"\n },\n \"oauth_model_alias\": {\n \"title\": \"Псевдонимы моделей OAuth\",\n \"add\": \"Добавить псевдоним\",\n \"add_title\": \"Добавление псевдонимов моделей провайдера\",\n \"provider_label\": \"Провайдер\",\n \"provider_placeholder\": \"например: gemini-cli / vertex\",\n \"provider_hint\": \"По умолчанию используется текущий фильтр; выберите существующего провайдера или введите новое имя.\",\n \"model_source_loading\": \"Загрузка моделей...\",\n \"model_source_unsupported\": \"Текущая версия CPA не поддерживает загрузку списка моделей (ручной ввод остаётся доступным).\",\n \"model_source_loaded\": \"Загружено моделей: {{count}}. Используйте выпадающий список \\\"Исходная модель\\\" или введите своё значение. Сохранение пустого списка удаляет провайдера. Включите \\\"Сохранить оригинал\\\", чтобы оставить исходное имя вместе с псевдонимом.\",\n \"alias_label\": \"Псевдонимы моделей\",\n \"alias_name_placeholder\": \"Исходное имя модели\",\n \"alias_placeholder\": \"Псевдоним (обязательно)\",\n \"duplicate_alias\": \"Каждый псевдоним этого провайдера должен быть уникальным.\",\n \"alias_fork_label\": \"Сохранить оригинал\",\n \"add_alias\": \"Добавить псевдоним\",\n \"save\": \"Сохранить/обновить\",\n \"save_success\": \"Псевдонимы моделей обновлены\",\n \"save_failed\": \"Не удалось обновить псевдонимы моделей\",\n \"delete\": \"Удалить провайдера\",\n \"delete_confirm\": \"Удалить псевдонимы моделей для {{provider}}?\",\n \"delete_link_title\": \"Убрать сопоставление\",\n \"delete_link_confirm\": \"Удалить сопоставление из <code>{{sourceModel}}</code> ({{provider}}) к псевдониму <code>{{alias}}</code>?\",\n \"delete_alias_title\": \"Удалить псевдоним\",\n \"delete_alias_confirm\": \"Удалить псевдоним <code>{{alias}}</code> и все связанные сопоставления?\",\n \"delete_success\": \"Псевдонимы моделей удалены\",\n \"delete_failed\": \"Не удалось удалить псевдонимы моделей\",\n \"no_models\": \"Псевдонимов нет\",\n \"model_count\": \"Количество псевдонимов: {{count}}\",\n \"list_empty_all\": \"Псевдонимы ещё не созданы — используйте \\\"Добавить псевдоним\\\".\",\n \"chart_title\": \"Обзор всех сопоставлений\",\n \"diagram_providers\": \"Провайдеры\",\n \"diagram_source_models\": \"Исходные модели\",\n \"diagram_aliases\": \"Псевдонимы\",\n \"diagram_expand\": \"Развернуть\",\n \"diagram_collapse\": \"Свернуть\",\n \"diagram_add_alias\": \"Добавить псевдоним\",\n \"diagram_rename\": \"Переименовать\",\n \"diagram_rename_alias_title\": \"Переименование псевдонима\",\n \"diagram_rename_alias_label\": \"Новое имя псевдонима\",\n \"diagram_rename_placeholder\": \"Введите имя псевдонима...\",\n \"diagram_delete_link\": \"Убрать связь {{provider}} / {{name}}\",\n \"diagram_delete_alias\": \"Удалить псевдоним\",\n \"diagram_please_enter_alias\": \"Введите имя псевдонима.\",\n \"diagram_alias_exists\": \"Этот псевдоним уже существует.\",\n \"diagram_add_alias_title\": \"Добавление псевдонима\",\n \"diagram_add_alias_label\": \"Имя псевдонима\",\n \"diagram_add_placeholder\": \"Введите новое имя псевдонима...\",\n \"diagram_rename_btn\": \"Переименовать\",\n \"diagram_add_btn\": \"Добавить\",\n \"diagram_settings\": \"Настройки\",\n \"diagram_settings_title\": \"Настройки псевдонима — {{alias}}\",\n \"diagram_settings_source_title\": \"Настройки исходной модели\",\n \"diagram_settings_empty\": \"Для этого псевдонима ещё нет сопоставлений.\",\n \"diagram_tap_hint\": \"На сенсорных устройствах: коснитесь исходной модели, затем псевдонима для связывания.\",\n \"view_mode\": \"Режим просмотра\",\n \"view_mode_diagram\": \"Диаграмма\",\n \"view_mode_list\": \"Список\",\n \"provider_required\": \"Сначала укажите провайдера\",\n \"upgrade_required\": \"Эта функция требует более новой версии CLI Proxy API (CPA). Обновите систему.\",\n \"upgrade_required_title\": \"Пожалуйста, обновите CLI Proxy API\",\n \"upgrade_required_desc\": \"Текущая версия сервера не поддерживает API псевдонимов моделей OAuth. Обновите CLI Proxy API (CPA) до последней версии.\"\n },\n \"auth_login\": {\n \"codex_oauth_title\": \"Codex OAuth\",\n \"codex_oauth_button\": \"Начать вход Codex\",\n \"codex_oauth_hint\": \"Выполните вход в сервис Codex через OAuth и автоматически получите/сохраните файлы авторизации.\",\n \"codex_oauth_url_label\": \"URL авторизации:\",\n \"codex_open_link\": \"Открыть ссылку\",\n \"codex_copy_link\": \"Скопировать ссылку\",\n \"codex_oauth_status_waiting\": \"Ожидание аутентификации...\",\n \"codex_oauth_status_success\": \"Аутентификация успешна!\",\n \"codex_oauth_status_error\": \"Ошибка аутентификации:\",\n \"codex_oauth_start_error\": \"Не удалось запустить Codex OAuth:\",\n \"codex_oauth_polling_error\": \"Не удалось проверить статус аутентификации:\",\n \"anthropic_oauth_title\": \"Anthropic OAuth\",\n \"anthropic_oauth_button\": \"Начать вход Anthropic\",\n \"anthropic_oauth_hint\": \"Выполните вход в сервис Anthropic (Claude) через OAuth и автоматически получите/сохраните файлы авторизации.\",\n \"anthropic_oauth_url_label\": \"URL авторизации:\",\n \"anthropic_open_link\": \"Открыть ссылку\",\n \"anthropic_copy_link\": \"Скопировать ссылку\",\n \"anthropic_oauth_status_waiting\": \"Ожидание аутентификации...\",\n \"anthropic_oauth_status_success\": \"Аутентификация успешна!\",\n \"anthropic_oauth_status_error\": \"Ошибка аутентификации:\",\n \"anthropic_oauth_start_error\": \"Не удалось запустить Anthropic OAuth:\",\n \"anthropic_oauth_polling_error\": \"Не удалось проверить статус аутентификации:\",\n \"antigravity_oauth_title\": \"Antigravity OAuth\",\n \"antigravity_oauth_button\": \"Начать вход Antigravity\",\n \"antigravity_oauth_hint\": \"Выполните вход в сервис Antigravity (Google) через OAuth и автоматически получите/сохраните файлы авторизации.\",\n \"antigravity_oauth_url_label\": \"URL авторизации:\",\n \"antigravity_open_link\": \"Открыть ссылку\",\n \"antigravity_copy_link\": \"Скопировать ссылку\",\n \"antigravity_oauth_status_waiting\": \"Ожидание аутентификации...\",\n \"antigravity_oauth_status_success\": \"Аутентификация успешна!\",\n \"antigravity_oauth_status_error\": \"Ошибка аутентификации:\",\n \"antigravity_oauth_start_error\": \"Не удалось запустить Antigravity OAuth:\",\n \"antigravity_oauth_polling_error\": \"Не удалось проверить статус аутентификации:\",\n \"gemini_cli_oauth_title\": \"Gemini CLI OAuth\",\n \"gemini_cli_oauth_button\": \"Начать вход Gemini CLI\",\n \"gemini_cli_oauth_hint\": \"Выполните вход в сервис Google Gemini CLI через OAuth и автоматически получите/сохраните файлы авторизации.\",\n \"gemini_cli_project_id_label\": \"Google Cloud Project ID (необязательно):\",\n \"gemini_cli_project_id_placeholder\": \"Оставьте пустым, чтобы выбрать первый доступный проект автоматически\",\n \"gemini_cli_project_id_hint\": \"Необязательно. Если не указано, система автоматически выберет первый доступный проект вашей учётной записи. Введите ALL, чтобы получить все проекты.\",\n \"gemini_cli_project_id_required\": \"Укажите идентификатор проекта Google Cloud.\",\n \"gemini_cli_oauth_url_label\": \"URL авторизации:\",\n \"gemini_cli_open_link\": \"Открыть ссылку\",\n \"gemini_cli_copy_link\": \"Скопировать ссылку\",\n \"gemini_cli_oauth_status_waiting\": \"Ожидание аутентификации...\",\n \"gemini_cli_oauth_status_success\": \"Аутентификация успешна!\",\n \"gemini_cli_oauth_status_error\": \"Ошибка аутентификации:\",\n \"gemini_cli_oauth_start_error\": \"Не удалось запустить Gemini CLI OAuth:\",\n \"gemini_cli_oauth_polling_error\": \"Не удалось проверить статус аутентификации:\",\n \"kimi_oauth_title\": \"Kimi OAuth\",\n \"kimi_oauth_button\": \"Начать вход Kimi\",\n \"kimi_oauth_hint\": \"Выполните вход в сервис Kimi через поток авторизации устройства и автоматически получите/сохраните файлы авторизации.\",\n \"kimi_oauth_url_label\": \"URL авторизации:\",\n \"kimi_open_link\": \"Открыть ссылку\",\n \"kimi_copy_link\": \"Скопировать ссылку\",\n \"kimi_oauth_status_waiting\": \"Ожидание аутентификации...\",\n \"kimi_oauth_status_success\": \"Аутентификация успешна!\",\n \"kimi_oauth_status_error\": \"Ошибка аутентификации:\",\n \"kimi_oauth_start_error\": \"Не удалось запустить Kimi OAuth:\",\n \"kimi_oauth_polling_error\": \"Не удалось проверить статус аутентификации:\",\n \"xai_oauth_title\": \"xAI OAuth\",\n \"xai_oauth_button\": \"Начать вход xAI\",\n \"xai_oauth_hint\": \"Выполните вход в xAI Grok через OAuth и автоматически получите/сохраните файлы авторизации.\",\n \"xai_oauth_url_label\": \"URL авторизации:\",\n \"xai_open_link\": \"Открыть ссылку\",\n \"xai_copy_link\": \"Скопировать ссылку\",\n \"xai_oauth_status_waiting\": \"Ожидание аутентификации...\",\n \"xai_oauth_status_success\": \"Аутентификация успешна!\",\n \"xai_oauth_status_error\": \"Ошибка аутентификации:\",\n \"xai_oauth_start_error\": \"Не удалось запустить xAI OAuth:\",\n \"xai_oauth_polling_error\": \"Не удалось проверить статус аутентификации:\",\n \"xai_callback_label\": \"Callback URL или код\",\n \"xai_callback_placeholder\": \"Вставьте код со страницы Grok или полный callback URL\",\n \"xai_callback_hint\": \"Grok иногда показывает только код на странице. Вставьте этот код напрямую, приложение автоматически отправит его как http://127.0.0.1:56121/callback?...\",\n \"xai_callback_required\": \"Сначала вставьте код со страницы Grok или полный callback URL.\",\n \"xai_callback_state_missing\": \"Отсутствует state для этого входа xAI. Запустите вход xAI заново и затем отправьте код.\",\n \"oauth_callback_label\": \"Callback URL\",\n \"oauth_callback_placeholder\": \"http://localhost:1455/auth/callback?code=...&state=...\",\n \"oauth_callback_hint\": \"Режим удалённого браузера: после перенаправления провайдера на http://localhost:... скопируйте полный URL и отправьте его здесь.\",\n \"oauth_callback_button\": \"Отправить Callback URL\",\n \"oauth_callback_required\": \"Сначала вставьте полный URL перенаправления.\",\n \"oauth_callback_success\": \"Callback URL отправлен. Продолжайте ожидать аутентификацию.\",\n \"oauth_callback_error\": \"Не удалось отправить Callback URL:\",\n \"oauth_callback_upgrade_hint\": \"Обновите CLI Proxy API или проверьте подключение.\",\n \"oauth_callback_status_success\": \"Callback URL отправлен, ожидаем аутентификацию...\",\n \"oauth_callback_status_error\": \"Не удалось отправить Callback URL:\",\n \"missing_state\": \"Не удалось получить параметр состояния аутентификации\",\n \"login_another_account\": \"Войти в другой аккаунт\",\n \"view_auth_files\": \"Открыть файлы авторизации\",\n \"iflow_oauth_title\": \"iFlow OAuth\",\n \"iflow_oauth_button\": \"Начать вход iFlow\",\n \"iflow_oauth_hint\": \"Выполните вход в сервис iFlow через OAuth и автоматически получите/сохраните файлы авторизации.\",\n \"iflow_oauth_url_label\": \"URL авторизации:\",\n \"iflow_open_link\": \"Открыть ссылку\",\n \"iflow_copy_link\": \"Скопировать ссылку\",\n \"iflow_oauth_status_waiting\": \"Ожидание аутентификации...\",\n \"iflow_oauth_status_success\": \"Аутентификация успешна!\",\n \"iflow_oauth_status_error\": \"Ошибка аутентификации:\",\n \"iflow_oauth_start_error\": \"Не удалось запустить iFlow OAuth:\",\n \"iflow_oauth_polling_error\": \"Не удалось проверить статус аутентификации:\",\n \"remote_access_disabled\": \"Этот способ входа недоступен при удалённом доступе. Подключитесь с localhost.\"\n },\n \"stats\": {\n \"success\": \"Успех\",\n \"failure\": \"Сбой\"\n },\n \"status_bar\": {\n \"success_short\": \"✓\",\n \"failure_short\": \"✗\",\n \"no_requests\": \"Нет запросов\"\n },\n \"usage_stats\": {\n \"title\": \"Статистика использования\",\n \"total_requests\": \"Всего запросов\",\n \"success_requests\": \"Успешные запросы\",\n \"failed_requests\": \"Неуспешные запросы\",\n \"total_tokens\": \"Всего токенов\",\n \"cached_tokens\": \"Кэшированные токены\",\n \"cache_read_tokens\": \"Токены чтения из кэша\",\n \"cache_write_tokens\": \"Токены записи в кэш\",\n \"reasoning_tokens\": \"Токены рассуждений\",\n \"rpm_30m\": \"RPM\",\n \"tpm_30m\": \"TPM\",\n \"rate_30m\": \"Скорость (последние 30 мин)\",\n \"model_name\": \"Название модели\",\n \"model_price_settings\": \"Настройки стоимости моделей\",\n \"saved_prices\": \"Сохранённые цены\",\n \"requests_trend\": \"Динамика запросов\",\n \"tokens_trend\": \"Динамика токенов\",\n \"api_details\": \"Детали API\",\n \"by_hour\": \"По часам\",\n \"by_day\": \"По дням\",\n \"range_filter\": \"Диапазон времени\",\n \"range_all\": \"За всё время\",\n \"range_1h\": \"Последний час\",\n \"range_7h\": \"Последние 7 часов\",\n \"range_24h\": \"Последние 24 часа\",\n \"range_7d\": \"Последние 7 дней\",\n \"range_30d\": \"Последние 30 дней\",\n \"filter_all\": \"Все\",\n \"clear_filters\": \"Сбросить фильтры\",\n \"refresh\": \"Обновить\",\n \"export\": \"Экспорт\",\n \"import\": \"Импорт\",\n \"export_csv\": \"Экспорт CSV\",\n \"export_json\": \"Экспорт JSON\",\n \"export_success\": \"Экспорт использования скачан\",\n \"import_success\": \"Импорт завершён: добавлено {{added}}, пропущено {{skipped}}, всего {{total}}, ошибок {{failed}}\",\n \"import_success_migrated_v1\": \"Импорт завершён: добавлено {{added}}, пропущено {{skipped}}, всего {{total}}, ошибок {{failed}}. Контракт токенов перенесён со схемы v1 на v{{schemaVersion}}.\",\n \"import_invalid\": \"Недопустимый файл экспорта использования\",\n \"import_review_title\": \"Проверка импорта использования\",\n \"import_review_intro\": \"Импорт добавляет данные к существующим. Проверьте снимок перед объединением с текущей статистикой Core.\",\n \"import_review_summary\": \"Версия {{version}} · деталей запросов: {{details}}\",\n \"import_review_duplicates\": \"Возможных дубликатов внутри файла: {{count}}\",\n \"import_review_overlaps\": \"Возможных пересечений с текущими данными: {{count}}\",\n \"import_review_uncertain_identities\": \"Записей без стабильной временной метки, исключённых из проверки дубликатов и пересечений: {{count}}\",\n \"import_review_current_unavailable\": \"Текущая статистика недоступна, поэтому проверить пересечения не удалось.\",\n \"import_error_usage_version_unsupported\": \"Версия экспорта использования не поддерживается. Можно импортировать только схемы v1 и v2.\",\n \"import_error_usage_shape_invalid\": \"Недопустимая структура экспорта использования или тип поля.\",\n \"import_error_usage_v1_token_contract_invalid\": \"Контракт токенов схемы v1 недопустим и не может быть безопасно перенесён.\",\n \"import_error_usage_v1_cache_semantics_ambiguous\": \"Семантика кэша схемы v1 неоднозначна. Для записей с кэшем требуется uncached_input_tokens, чтобы выполнить перенос без потерь.\",\n \"import_error_usage_v2_token_contract_invalid\": \"Недопустимый канонический контракт токенов схемы v2.\",\n \"import_error_usage_aggregate_overflow\": \"Импорт приведёт к переполнению агрегатов использования Core. Данные использования не были объединены.\",\n \"import_review_confirm\": \"Всё равно импортировать\",\n \"chart_line_label_1\": \"Линия 1\",\n \"chart_line_label_2\": \"Линия 2\",\n \"chart_line_label_3\": \"Линия 3\",\n \"chart_line_label_4\": \"Линия 4\",\n \"chart_line_label_5\": \"Линия 5\",\n \"chart_line_label_6\": \"Линия 6\",\n \"chart_line_label_7\": \"Линия 7\",\n \"chart_line_label_8\": \"Линия 8\",\n \"chart_line_label_9\": \"Линия 9\",\n \"chart_line_hidden\": \"Скрыть\",\n \"chart_line_actions_label\": \"Линии для отображения\",\n \"chart_line_add\": \"Добавить линию\",\n \"chart_line_all\": \"Все\",\n \"chart_line_delete\": \"Удалить линию\",\n \"chart_line_hint\": \"Отображайте до 9 линий моделей одновременно\",\n \"no_data\": \"Данные отсутствуют\",\n \"loading_error\": \"Не удалось загрузить\",\n \"api_endpoint\": \"API-эндпоинт\",\n \"requests_count\": \"Количество запросов\",\n \"tokens_count\": \"Количество токенов\",\n \"model_cache_rate\": \"Доля чтения кеша\",\n \"model_cache_rate_hint\": \"Доля чтения кеша = токены чтения кеша / всего входных токенов. Показывается только когда для каждого запроса в статистике модели записаны детали; иначе не задана.\",\n \"models\": \"Статистика моделей\",\n \"success_rate\": \"Успешность\",\n \"total_cost\": \"Общая стоимость\",\n \"total_cost_hint\": \"Основано на настроенной стоимости моделей\",\n \"model_price_title\": \"Стоимость моделей\",\n \"model_price_reset\": \"Сбросить цены\",\n \"model_price_model_label\": \"Модель\",\n \"model_price_select_placeholder\": \"Выберите модель\",\n \"model_price_select_hint\": \"Модели берутся из детальной статистики использования\",\n \"model_price_prompt\": \"Цена prompt\",\n \"model_price_completion\": \"Цена completion\",\n \"model_price_cache\": \"Цена чтения из кэша\",\n \"model_price_cache_write\": \"Цена записи в кэш\",\n \"model_price_cache_write_auto\": \"Авто\",\n \"model_price_cache_write_hint\": \"Если поле пустое, используется текущая цена prompt. Существующие значения «Авто» также следуют этому правилу.\",\n \"model_price_invalid\": \"Введите корректное число не меньше 0.\",\n \"model_price_save\": \"Сохранить цену\",\n \"model_price_empty\": \"Цена для моделей не задана\",\n \"model_price_model\": \"Модель\",\n \"model_price_saved\": \"Цена модели сохранена\",\n \"model_price_model_required\": \"Выберите модель для задания цены\",\n \"pricing_title\": \"Рабочая область цен\",\n \"pricing_subtitle\": \"API-эквивалентная сумма в USD рассчитывается по текущему API-каталогу, локальному профилю браузера, токенам, service tier и context band.\",\n \"pricing_back\": \"Назад к использованию\",\n \"pricing_open\": \"Настроить цены\",\n \"pricing_catalog\": \"Каталог предустановок\",\n \"pricing_catalog_version\": \"Версия каталога\",\n \"pricing_catalog_title\": \"Таблица предустановленных цен\",\n \"pricing_catalog_description\": \"Все {{count}} проверенных моделей доступны независимо от данных использования. Каталог обновлён {{asOf}}; каждая строка содержит ссылку на официальный источник, локальные переопределения браузера не включены.\",\n \"pricing_catalog_unit\": \"USD / 1 млн токенов\",\n \"pricing_catalog_table_label\": \"Полная таблица предустановленных цен\",\n \"pricing_catalog_context_band\": \"Диапазон контекста\",\n \"pricing_catalog_short_band\": \"Короткий контекст\",\n \"pricing_catalog_long_band\": \"Длинный контекст\",\n \"pricing_catalog_short_range\": \"< {{threshold}} входных токенов\",\n \"pricing_catalog_long_range\": \"≥ {{threshold}} входных токенов · весь запрос\",\n \"pricing_catalog_all_contexts\": \"Все поддерживаемые контексты\",\n \"pricing_catalog_aliases\": \"Псевдонимы: {{aliases}}\",\n \"pricing_catalog_model_notes\": \"Описание модели\",\n \"pricing_catalog_verified_as_of\": \"Проверено: {{asOf}}\",\n \"pricing_catalog_unavailable\": \"Недоступно\",\n \"pricing_catalog_fast_explicit_summary\": \"Вход {{input}} · кэш {{cached}} · запись {{cacheWrite}} · выход {{output}}\",\n \"pricing_source\": \"Официальный источник\",\n \"pricing_api_source\": \"Источник цен API\",\n \"pricing_estimate_notice\": \"Локальная API-эквивалентная оценка справочная и не является счётом поставщика.\",\n \"pricing_browser_notice\": \"Профиль хранится только в этом браузере и используется всеми экземплярами Core, открытыми в нём.\",\n \"pricing_history_notice\": \"Все исторические запросы пересчитываются по текущему каталогу и профилю.\",\n \"pricing_migrated_v2\": \"Цены v2 полностью сохранены в профиле v3. Совпадающие короткие тарифы можно переключить на полные предустановки после подтверждения.\",\n \"pricing_profile_warning\": \"Сохранённый профиль цен содержит недопустимые данные. Проверьте текущие значения по умолчанию перед сохранением.\",\n \"pricing_profile_save_failed\": \"Не удалось сохранить профиль цен в этом браузере.\",\n \"pricing_profile_saved\": \"Профиль цен сохранён\",\n \"pricing_summary\": \"Сводка покрытия цен\",\n \"pricing_api_usd_estimate\": \"Локальная API-эквивалентная оценка (USD)\",\n \"pricing_api_usd\": \"Локальная API-эквивалентная сумма\",\n \"pricing_api_request_coverage\": \"Покрытие запросов локальной оценкой\",\n \"pricing_requests_unit\": \"запросов\",\n \"pricing_models_metric\": \"Модели с ценой / фактические модели\",\n \"pricing_request_coverage\": \"Покрытие запросов ценами\",\n \"pricing_token_coverage\": \"Покрытие токенов ценами\",\n \"pricing_assumed_tier\": \"Запросы с предполагаемым уровнем\",\n \"pricing_assumed_tier_hint\": \"Исторические или неизвестные уровни оцениваются как Std\",\n \"pricing_cost_incomplete\": \"Локальная оценка неполная: использование без соответствия, с неподдерживаемым тарифом или без деталей не включено.\",\n \"pricing_partial_coverage\": \"Частичная локальная оценка: покрыто {{request}}% запросов и {{token}}% токенов.\",\n \"pricing_entry_title\": \"Локальная API-эквивалентная оценка\",\n \"pricing_entry_description\": \"Суммы полностью рассчитываются в браузере по каталогу, профилю, токенам, service tier и context band.\",\n \"pricing_models_covered\": \"Цена задана для {{priced}} из {{total}} моделей\",\n \"pricing_requests_covered\": \"Покрытие запросов: {{percent}}%\",\n \"pricing_models_ratio\": \"Покрытие моделей: {{percent}}%\",\n \"pricing_search\": \"Поиск моделей из реального использования\",\n \"pricing_filter\": \"Фильтр состояния цен\",\n \"pricing_filter_all\": \"Все\",\n \"pricing_filter_preset\": \"Предустановка\",\n \"pricing_filter_custom\": \"Пользовательские\",\n \"pricing_filter_unmatched\": \"Нет локального соответствия\",\n \"pricing_filter_anomaly\": \"Аномалия\",\n \"pricing_import_action\": \"Импортировать профиль\",\n \"pricing_export_action\": \"Экспортировать профиль\",\n \"pricing_reset_action\": \"Восстановить все значения\",\n \"pricing_export_success\": \"Профиль цен экспортирован\",\n \"pricing_import_title\": \"Импорт профиля цен\",\n \"pricing_import_confirm\": \"Заменить текущий профиль цен API v3 в браузере этим проверенным файлом? Данные использования не изменятся.\",\n \"pricing_import_success\": \"Профиль цен импортирован\",\n \"pricing_import_invalid\": \"Недопустимый профиль цен\",\n \"pricing_reset_title\": \"Восстановить все предустановленные цены\",\n \"pricing_reset_confirm\": \"Удалить все переопределения и псевдонимы цен API v3? Данные использования останутся без изменений.\",\n \"pricing_reset_success\": \"Предустановленные цены восстановлены\",\n \"pricing_empty_title\": \"Моделей использования пока нет\",\n \"pricing_empty_description\": \"Конфигуратор показывает только модели, встречающиеся в реальных данных использования. Сначала создайте или импортируйте статистику.\",\n \"pricing_standard_short\": \"Короткий Standard\",\n \"pricing_standard_api\": \"API Standard\",\n \"pricing_fast\": \"Fast\",\n \"pricing_fast_policies\": \"Правила Fast\",\n \"pricing_fast_policy_title\": \"API Priority и ChatGPT Standard/Fast используют отдельные официальные множители.\",\n \"pricing_api_priority_multiplier\": \"API ×{{multiplier}}\",\n \"pricing_api_priority_multiplier_official\": \"Официальный API ×{{multiplier}}\",\n \"pricing_api_priority_multiplier_custom\": \"Пользовательский API ×{{multiplier}}\",\n \"pricing_api_priority_explicit_rates\": \"Явные ставки API\",\n \"pricing_long_context\": \"Длинный контекст\",\n \"pricing_usage\": \"Текущее использование\",\n \"pricing_no_usage_requests\": \"Нет запросов использования\",\n \"pricing_no_usage_tokens\": \"Нет токенов использования\",\n \"pricing_matching_presets_notice\": \"{{count}} устаревших пользовательских тарифов совпадают с короткими предустановленными тарифами, но всё ещё перекрывают официальные правила Fast и длинного контекста.\",\n \"pricing_matching_presets_title\": \"Использовать полные предустановки\",\n \"pricing_matching_presets_confirm\": \"Удалить только {{count}} совпадающих переопределений, чтобы применить официальные правила Fast и длинного контекста? Остальные пользовательские цены и псевдонимы не изменятся.\",\n \"pricing_matching_presets_action\": \"Использовать предустановки\",\n \"pricing_matching_presets_success\": \"Для {{count}} совпадающих переопределений применены полные предустановки\",\n \"pricing_unmatched\": \"Нет точного соответствия\",\n \"pricing_match_custom\": \"Пользовательская\",\n \"pricing_match_preset\": \"Предустановка\",\n \"pricing_match_alias\": \"Псевдоним\",\n \"pricing_match_none\": \"Без соответствия\",\n \"pricing_anomaly\": \"Требует проверки\",\n \"pricing_long_unsupported\": \"Fast не поддерживает длинный контекст\",\n \"pricing_fast_configured\": \"Fast настроен\",\n \"pricing_long_requests\": \"Запросов с длинным контекстом: {{count}}\",\n \"pricing_short_only\": \"Только короткий контекст\",\n \"pricing_single_rate_card\": \"Один тариф API для всех поддерживаемых контекстов\",\n \"pricing_no_matches\": \"Нет моделей, соответствующих текущему поиску и фильтру.\",\n \"pricing_catalog_footer\": \"Каталог API содержит {{count}} проверенных моделей · проверено {{asOf}} · USD за 1 млн токенов.\",\n \"pricing_editor_title\": \"Редактор цен API-токенов\",\n \"pricing_editor_domain_notice\": \"Профиль влияет на локальную API-эквивалентную оценку всех совпавших записей.\",\n \"pricing_alias\": \"Точная цель псевдонима\",\n \"pricing_alias_hint\": \"Сопоставьте это имя модели с одной точной предустановленной или пользовательской моделью. В режиме псевдонима прямое редактирование тарифов отключено.\",\n \"pricing_alias_canonical_hint\": \"Эта модель уже точно совпадает с предустановкой, поэтому псевдоним не требуется.\",\n \"pricing_standard_rates\": \"Тарифы Standard · USD / 1 млн\",\n \"pricing_fast_rates\": \"Тарифы Fast · USD / 1 млн\",\n \"pricing_rate_input\": \"Вход\",\n \"pricing_rate_cached_input\": \"Кэшированный вход\",\n \"pricing_rate_cache_write\": \"Запись в кэш\",\n \"pricing_rate_output\": \"Выход\",\n \"pricing_auto\": \"Авто / цена входа\",\n \"pricing_fast_mode_none\": \"Не настроено\",\n \"pricing_fast_mode_rates\": \"Явные тарифы\",\n \"pricing_fast_mode_multiplier\": \"Standard × множитель\",\n \"pricing_fast_multiplier\": \"Множитель Fast\",\n \"pricing_fast_long_supported\": \"Разрешить Fast с длинным контекстом\",\n \"pricing_long_enable\": \"Включить тарифы длинного контекста\",\n \"pricing_long_threshold\": \"Порог входных токенов\",\n \"pricing_preview_affected\": \"Затронутые запросы использования\",\n \"pricing_preview_coverage\": \"Локальное покрытие запросов\",\n \"pricing_preview_cost\": \"Локальная оценка после пересчёта\",\n \"pricing_editor_error_rates\": \"Введите корректные неотрицательные тарифы для всех обязательных полей.\",\n \"pricing_editor_error_threshold\": \"Введите положительный целочисленный порог длинного контекста.\",\n \"pricing_editor_error_multiplier\": \"Введите множитель Fast больше 0.\",\n \"pricing_editor_error_profile\": \"Псевдоним или тарифы конфликтуют с профилем цен.\",\n \"pricing_restore_preset\": \"Восстановить предустановку\",\n \"pricing_delete_config\": \"Удалить конфигурацию\",\n \"pricing_preset_restored\": \"Предустановка восстановлена\",\n \"pricing_custom_deleted\": \"Пользовательские цены удалены\",\n \"cost_trend\": \"Обзор стоимости\",\n \"pricing_api_usd_trend\": \"Тренд локальной API-эквивалентной оценки (USD)\",\n \"cost_axis_label\": \"Стоимость ($)\",\n \"cost_need_price\": \"Задайте стоимость модели, чтобы увидеть статистику затрат\",\n \"cost_need_usage\": \"Нет данных использования для расчёта стоимости\",\n \"cost_no_data\": \"Данных о стоимости ещё нет\",\n \"credential_stats\": \"Статистика учётных данных\",\n \"credential_name\": \"Учётные данные\",\n \"token_breakdown\": \"Распределение типов токенов\",\n \"request_events_title\": \"События запросов\",\n \"request_events_filter_model\": \"Модель\",\n \"request_events_filter_source\": \"Источник\",\n \"request_events_filter_auth_index\": \"Auth Index\",\n \"request_events_filter_tier\": \"Уровень обслуживания\",\n \"request_events_filter_effort\": \"Усилие рассуждения\",\n \"request_events_filter_cache\": \"Статус кеша\",\n \"request_events_numeric_filter\": \"Диапазон токенов\",\n \"request_events_numeric_metric\": \"Метрика токенов\",\n \"request_events_numeric_any\": \"Выберите метрику\",\n \"request_events_numeric_min\": \"Минимум\",\n \"request_events_numeric_max\": \"Максимум\",\n \"request_events_numeric_invalid\": \"Введите неотрицательные целые границы.\",\n \"request_events_numeric_range_invalid\": \"Минимум не может превышать максимум.\",\n \"request_events_numeric_help\": \"Выберите метрику токенов и укажите хотя бы одну границу. Результаты изменятся только после применения.\",\n \"request_events_numeric_preview\": \"Предпросмотр\",\n \"request_events_numeric_active_label\": \"Диапазон токенов: {{filter}}\",\n \"request_events_numeric_clear\": \"Очистить диапазон\",\n \"request_events_numeric_apply\": \"Применить диапазон\",\n \"request_events_cache_present\": \"Есть кешированные токены\",\n \"request_events_cache_absent\": \"Без кешированных токенов\",\n \"request_events_range_page\": \"Как на странице ({{range}})\",\n \"request_events_column_settings\": \"Настройка столбцов\",\n \"request_events_restore_default_columns\": \"Восстановить столбцы по умолчанию\",\n \"request_events_timestamp\": \"Время\",\n \"request_events_source\": \"Источник\",\n \"request_events_auth_index\": \"Auth Index\",\n \"request_events_tier\": \"Уровень\",\n \"request_events_tier_fast\": \"Fast\",\n \"request_events_tier_standard\": \"Std\",\n \"request_events_tier_tooltip_effective\": \"Core подтвердил фактический уровень обслуживания: {{tier}}.\",\n \"request_events_tier_tooltip_response\": \"Вышестоящий сервис сообщил уровень обслуживания: {{tier}}.\",\n \"request_events_tier_tooltip_request\": \"Показан запрошенный уровень {{tier}}; фактическая тарификация может отличаться.\",\n \"request_events_tier_tooltip_assumed\": \"Исторический или неизвестный уровень; оценено как Std.\",\n \"request_events_tier_legacy_unknown\": \"Исторический / Неизвестно\",\n \"request_events_tier_other\": \"Другое: {{tier}}\",\n \"request_events_effort\": \"Усилие\",\n \"request_events_effort_legacy_unknown\": \"Исторический / Неизвестно\",\n \"request_events_result\": \"Результат\",\n \"time\": \"Задержка\",\n \"avg_time\": \"Средняя задержка\",\n \"latency_unit_hint\": \"Длительность берётся из поля бэкенда {{field}} и интерпретируется как {{unit}} перед форматированием.\",\n \"duration_unit_d\": \"д\",\n \"duration_unit_h\": \"ч\",\n \"duration_unit_m\": \"мин\",\n \"duration_unit_s\": \"с\",\n \"duration_unit_ms\": \"мс\",\n \"request_events_empty_title\": \"События запросов отсутствуют\",\n \"request_events_empty_desc\": \"Нет деталей запросов для выбранного диапазона времени.\",\n \"request_events_no_result_title\": \"Совпадений не найдено\",\n \"request_events_no_result_desc\": \"Попробуйте другие фильтры или очистите текущие.\",\n \"request_events_count\": \"{{count}} событий\",\n \"request_events_limit_hint\": \"Показано {{shown}} из {{total}} событий для стабильной производительности.\",\n \"request_events_total_input_tokens\": \"Всего входных токенов\",\n \"request_events_non_cache_read_input_tokens\": \"Входные токены без чтения кеша\",\n \"request_events_non_cache_read_input_tokens_hint\": \"Локально вычисляется в Panel как разность всех входных токенов и токенов чтения кеша, не меньше 0. Это дополнение доли чтения кеша, а не обычные токены промпта. Токены записи кеша отображаются и тарифицируются отдельно.\",\n \"request_events_total_output_tokens\": \"Всего выходных токенов\",\n \"request_events_explicit_output_tokens\": \"Явные выходные токены\",\n \"request_events_output_tokens_hint\": \"Явные выходные токены = всего выходных токенов - токены рассуждения; результат не меньше 0.\",\n \"request_events_cache_rate\": \"Доля чтения кеша\",\n \"request_events_cache_rate_hint\": \"Доля чтения кеша = токены чтения кеша / всего входных токенов. Нулевая доля и значения ниже 25% считаются низкими, от 25% включительно до 60% исключительно — средними, 60% и выше — высокими; чтение кеша больше общего ввода помечается как аномалия. По этому статусу окрашивается только значение чтения кеша; остальные значения токенов остаются нейтральными.\",\n \"request_events_cache_rate_low\": \"Низкая\",\n \"request_events_cache_rate_medium\": \"Средняя\",\n \"request_events_cache_rate_high\": \"Высокая\",\n \"request_events_cache_rate_anomaly\": \"Аномалия\",\n \"request_events_cache_rate_cell_label\": \"Токены чтения кеша: {{tokens}}, доля: {{rate}}, уровень: {{tone}}\",\n \"request_events_cache_rate_anomaly_label\": \"Токенов чтения кеша ({{tokens}}) больше, чем всего входных токенов ({{input}}).\",\n \"request_events_table_region\": \"Таблица событий запросов\",\n \"input_tokens\": \"Входные токены\",\n \"output_tokens\": \"Выходные токены\",\n \"last_updated\": \"Обновлено\"\n },\n \"service_health\": {\n \"title\": \"Состояние сервиса\",\n \"window\": \"Последние 7 дней\",\n \"oldest\": \"Старые\",\n \"newest\": \"Новые\"\n },\n \"logs\": {\n \"title\": \"Просмотр журналов\",\n \"runtime_unknown\": \"Текущий режим: определяется\",\n \"runtime_cpa\": \"Текущий режим: CPA\",\n \"runtime_home\": \"Текущий режим: Home\",\n \"refresh_button\": \"Обновить журналы\",\n \"clear_button\": \"Очистить журналы\",\n \"fullscreen_button\": \"На весь экран\",\n \"exit_fullscreen_button\": \"Выйти из полноэкранного режима\",\n \"download_button\": \"Скачать журналы\",\n \"error_log_button\": \"Выбрать журнал ошибок\",\n \"error_logs_modal_title\": \"Журналы ошибок запросов\",\n \"error_logs_description\": \"Выберите файл журнала ошибок запроса, чтобы открыть или скачать его (создаётся только при отключённом журналировании запросов).\",\n \"error_logs_home_unavailable\": \"В режиме Home смотрите журналы базы данных на вкладке содержимого. Файлы ошибок запросов относятся только к файловым журналам CPA.\",\n \"error_logs_request_log_enabled\": \"Журналирование запросов включено, поэтому этот список всегда будет пустым. Отключите журналирование запросов и обновите список, чтобы просмотреть журналы ошибок.\",\n \"error_logs_empty\": \"Файлы журнала ошибок запросов не найдены\",\n \"error_logs_load_error\": \"Не удалось загрузить список журналов ошибок\",\n \"error_logs_size\": \"Размер\",\n \"error_logs_modified\": \"Изменён\",\n \"error_logs_open\": \"Открыть\",\n \"error_logs_download\": \"Скачать\",\n \"error_log_view_title\": \"Подробности журнала ошибок запроса\",\n \"error_log_open_failed\": \"Не удалось открыть журнал ошибок\",\n \"error_log_empty_content\": \"Этот журнал ошибок пуст\",\n \"error_log_copy_success\": \"Содержимое журнала ошибок скопировано\",\n \"error_log_download_success\": \"Журнал ошибок успешно скачан\",\n \"request_log_download_title\": \"Скачать журнал запросов\",\n \"request_log_download_confirm\": \"Скачать журнал запросов с идентификатором {{id}}?\",\n \"request_log_download_success\": \"Журнал запросов успешно скачан\",\n \"empty_title\": \"Журналы недоступны\",\n \"empty_desc\": \"Когда включена опция \\\"Включить журналирование в файл\\\", журналы появятся здесь\",\n \"cpa_file_logging_required\": \"Подключён режим CPA. Для просмотра журналов сначала включите запись журналов в файл.\",\n \"cpa_file_logging_required_title\": \"Требуется файловое журналирование\",\n \"cpa_file_logging_required_desc\": \"CPA читает этот журнал из локальных файлов. Включите logging-to-file в конфигурации и обновите страницу.\",\n \"file_logging_required\": \"Этот endpoint журналов требует включить запись журналов в файл перед чтением файловых журналов.\",\n \"file_logging_required_title\": \"Требуется файловое журналирование\",\n \"file_logging_required_desc\": \"Этот endpoint журналов читает локальные файлы. Включите logging-to-file в конфигурации и обновите страницу.\",\n \"home_clear_unavailable\": \"Журналы Home загружаются из базы данных и не могут быть очищены здесь.\",\n \"log_content\": \"Содержимое журнала\",\n \"loading\": \"Загрузка журналов...\",\n \"load_error\": \"Не удалось загрузить журналы\",\n \"clear_confirm\": \"Очистить все журналы? Действие нельзя отменить!\",\n \"clear_success\": \"Журналы успешно очищены\",\n \"download_success\": \"Журналы успешно скачаны\",\n \"auto_refresh\": \"Автообновление\",\n \"auto_refresh_enabled\": \"Автообновление включено\",\n \"auto_refresh_disabled\": \"Автообновление выключено\",\n \"load_more_hint\": \"Прокрутите вверх, чтобы загрузить ещё\",\n \"hidden_lines\": \"Скрыто: {{count}} строк\",\n \"loaded_lines\": \"Загружено: {{count}} строк\",\n \"filtered_lines\": \"Отфильтровано: {{count}} строк\",\n \"hide_management_logs\": \"Скрыть журналы {{prefix}}\",\n \"show_raw_logs\": \"Показать исходные журналы\",\n \"show_raw_logs_hint\": \"Показать текст журнала без обработки для удобного копирования в несколько строк\",\n \"search_placeholder\": \"Искать по содержимому или ключевым словам\",\n \"filter_panel_title\": \"Структурные фильтры\",\n \"filter_panel_expand\": \"Развернуть структурные фильтры\",\n \"filter_panel_collapse\": \"Свернуть структурные фильтры\",\n \"filter_panel_active_count\": \"Активно: {{count}}\",\n \"filter_method\": \"Метод\",\n \"filter_status\": \"Статус\",\n \"filter_path\": \"Путь\",\n \"filter_path_empty\": \"Нет доступных путей\",\n \"filter_status_2xx\": \"2xx\",\n \"filter_status_3xx\": \"3xx\",\n \"filter_status_4xx\": \"4xx\",\n \"filter_status_5xx\": \"5xx\",\n \"clear_filters\": \"Очистить фильтры\",\n \"search_empty_title\": \"Подходящих журналов не найдено\",\n \"search_empty_desc\": \"Попробуйте другой запрос или сбросьте фильтры.\",\n \"double_click_copy_hint\": \"Дважды нажмите, чтобы скопировать строку журнала\",\n \"copy_success\": \"Строка журнала скопирована\",\n \"copy_failed\": \"Не удалось скопировать\",\n \"lines\": \"строк\",\n \"removed\": \"Отфильтровано\",\n \"upgrade_required_title\": \"Обновите CLI Proxy API\",\n \"upgrade_required_desc\": \"Текущая версия сервера не поддерживает просмотр журналов. Обновите CLI Proxy API до последней версии, чтобы использовать эту функцию.\"\n },\n \"config_management\": {\n \"title\": \"Панель конфигурации\",\n \"editor_title\": \"Файл конфигурации\",\n \"reload\": \"Перезагрузить\",\n \"reload_confirm_message\": \"Перезагрузка отбросит ваши несохранённые изменения. Продолжить?\",\n \"save\": \"Сохранить\",\n \"description\": \"Редактируйте config.yaml через визуальный редактор или исходный файл\",\n \"status_idle\": \"Ожидание действия\",\n \"status_loading\": \"Загрузка конфигурации...\",\n \"status_loading_short\": \"Загрузка\",\n \"status_loaded\": \"Конфигурация загружена\",\n \"status_loaded_short\": \"Загружено\",\n \"status_dirty\": \"Есть несохранённые изменения\",\n \"status_dirty_short\": \"Несохранено\",\n \"status_disconnected\": \"Подключитесь к серверу, чтобы загрузить конфигурацию\",\n \"status_disconnected_short\": \"Нет связи\",\n \"status_load_failed\": \"Не удалось загрузить\",\n \"status_load_failed_short\": \"Ошибка\",\n \"status_saving\": \"Сохранение конфигурации...\",\n \"status_saving_short\": \"Сохранение\",\n \"status_saved\": \"Конфигурация сохранена\",\n \"status_save_failed\": \"Не удалось сохранить\",\n \"save_success\": \"Конфигурация успешно сохранена\",\n \"error_yaml_not_supported\": \"Сервер не вернул YAML. Убедитесь, что доступна конечная точка /config.yaml.\",\n \"visual_mode_unavailable\": \"Визуальный редактор недоступен, пока не исправлен синтаксис YAML\",\n \"visual_mode_unavailable_short\": \"Ошибка YAML\",\n \"validation_blocked_short\": \"Есть ошибки\",\n \"visual_mode_unavailable_detail\": \"Визуальный редактор недоступен, потому что в конфигурации есть некорректный YAML: {{message}}\",\n \"visual_mode_save_blocked\": \"Нельзя сохранять из визуального режима, пока не исправлен синтаксис YAML\",\n \"visual_mode_latest_yaml_invalid\": \"Последняя конфигурация на сервере содержит некорректный YAML. Проверьте её в режиме исходника перед сохранением визуальных изменений: {{message}}\",\n \"editor_placeholder\": \"key: value\",\n \"search_placeholder\": \"Поиск по конфигурации...\",\n \"search_button\": \"Поиск\",\n \"search_no_results\": \"Нет результатов\",\n \"search_prev\": \"Назад\",\n \"search_next\": \"Вперёд\",\n \"diff\": {\n \"title\": \"Обзор изменений\",\n \"current\": \"Текущая\",\n \"modified\": \"Изменённая\",\n \"confirm\": \"Подтвердить\",\n \"no_changes\": \"Изменений не обнаружено\"\n },\n \"tabs\": {\n \"visual\": \"Визуальный редактор\",\n \"source\": \"Редактор файла\"\n },\n \"visual\": {\n \"notice\": \"Визуальный режим охватывает основные поля. Остальные параметры config.yaml по-прежнему нужно проверять или редактировать в режиме исходника.\",\n \"quick_jump\": \"Быстрый переход\",\n \"subsection_navigation\": \"Разделы: {{section}}\",\n \"sections\": {\n \"server\": {\n \"title\": \"Настройки сервера\",\n \"description\": \"Базовые параметры сервера\",\n \"listener_group_title\": \"Прослушивание\",\n \"host\": \"Адрес хоста\",\n \"port\": \"Порт\"\n },\n \"tls\": {\n \"title\": \"Настройка TLS/SSL\",\n \"description\": \"Параметры безопасного HTTPS-соединения\",\n \"enable\": \"Включить TLS\",\n \"enable_desc\": \"Включить безопасное HTTPS-соединение\",\n \"cert\": \"Путь к сертификату\",\n \"key\": \"Путь к закрытому ключу\"\n },\n \"remote\": {\n \"title\": \"Удалённое управление\",\n \"description\": \"Настройки удалённого доступа и панели управления\",\n \"allow_remote\": \"Разрешить удалённый доступ\",\n \"allow_remote_desc\": \"Разрешить управление с других хостов\",\n \"disable_panel\": \"Отключить панель\",\n \"disable_panel_desc\": \"Отключить встроенную веб-панель управления\",\n \"disable_auto_update_panel\": \"Отключить автообновление панели\",\n \"disable_auto_update_panel_desc\": \"Скачивать панель при первом отсутствии, но не обновлять её автоматически с GitHub\",\n \"secret_key\": \"Ключ управления\",\n \"secret_key_placeholder\": \"Задайте ключ управления\",\n \"panel_repo\": \"Репозиторий панели\"\n },\n \"auth\": {\n \"title\": \"Настройки аутентификации\",\n \"description\": \"API-ключи и каталог аутентификации\",\n \"group_title\": \"Доступ и аутентификация\",\n \"group_description\": \"Удалённое управление, доступ к панели, API-ключи и файлы аутентификации\",\n \"credentials_title\": \"Файлы аутентификации и API-ключи\",\n \"auth_dir\": \"Каталог auth-dir\",\n \"auth_dir_hint\": \"Путь к каталогу с файлами аутентификации (поддерживает ~)\"\n },\n \"system\": {\n \"title\": \"Системные настройки\",\n \"description\": \"Отладка, журналирование, статистика и производительность\",\n \"group_navigation_label\": \"Группы системных настроек\",\n \"runtime_group_title\": \"Runtime и эксплуатация\",\n \"runtime_group_desc\": \"Основные переключатели, журналы, usage и обработка подписей\",\n \"plugins_group_title\": \"Плагины\",\n \"plugins_group_desc\": \"Включение runtime, источники registry и аутентификация приватных источников\",\n \"headers_group_title\": \"Заголовки и стратегия Codex\",\n \"headers_group_desc\": \"Заголовки Claude/Codex и стратегия abnormal-reasoning retry\",\n \"network_group_title\": \"Сеть и маршрутизация\",\n \"network_group_desc\": \"Прокси, повторы, affinity, изображения и поведение endpoint\",\n \"core_controls_title\": \"Основные параметры runtime\",\n \"core_controls_desc\": \"Главные переключатели диагностики, производительности и файловых журналов\",\n \"plugin_runtime_title\": \"Plugin runtime\",\n \"plugin_runtime_desc\": \"Включение или отключение загрузки dynamic-library плагинов\",\n \"operations_title\": \"Журналы, usage и обработка подписей\",\n \"operations_desc\": \"Лимиты хранения, сбор usage в памяти и поведение подписей Antigravity\",\n \"debug\": \"Режим отладки\",\n \"debug_desc\": \"Включить подробные отладочные журналы\",\n \"commercial_mode\": \"Коммерческий режим\",\n \"commercial_mode_desc\": \"Отключить тяжёлое промежуточное ПО для поддержки высокой нагрузки\",\n \"logging_to_file\": \"Журналировать в файл\",\n \"logging_to_file_desc\": \"Сохранять журналы в файлы\",\n \"plugins_enabled\": \"Включить систему плагинов\",\n \"plugins_enabled_desc\": \"Включает загрузку стандартных dynamic-library плагинов; отдельные экземпляры управляются на странице плагинов\",\n \"plugin_store_sources\": \"Сторонние источники плагинов\",\n \"plugin_store_sources_desc\": \"Добавляет registry-источники магазина плагинов; встроенный официальный источник всегда сохраняется\",\n \"plugin_store_sources_label\": \"URL registry источника плагинов (plugins.store-sources)\",\n \"plugin_store_sources_placeholder\": \"https://example.com/cliproxy-plugins/registry.json\",\n \"plugin_store_sources_hint\": \"Один URL registry.json в строке. Пустые строки отфильтровываются при сохранении\",\n \"plugin_store_auth\": \"Правила аутентификации магазина плагинов\",\n \"plugin_store_auth_desc\": \"Настройте заголовки аутентификации для приватных registry, метаданных GitHub Releases или загрузки артефактов\",\n \"plugin_store_auth_hint\": \"Указывайте только имена переменных окружения, а не реальные token. Backend читает значения из своей runtime-среды.\",\n \"store_auth_empty\": \"Правила аутентификации не настроены. Публичным источникам плагинов они не нужны.\",\n \"store_auth_rule\": \"Правило аутентификации\",\n \"store_auth_add\": \"Добавить правило\",\n \"store_auth_match\": \"Совпадающий URL-префикс\",\n \"store_auth_type\": \"Тип аутентификации\",\n \"store_auth_apply_to\": \"Применять к\",\n \"store_auth_apply_to_hint\": \"Если ничего не выбрано, правило применяется ко всем типам запросов.\",\n \"store_auth_apply_registry\": \"Registry\",\n \"store_auth_apply_metadata\": \"Метаданные\",\n \"store_auth_apply_artifact\": \"Артефакт\",\n \"store_auth_type_none\": \"Нет\",\n \"store_auth_type_bearer\": \"Bearer\",\n \"store_auth_type_basic\": \"Basic\",\n \"store_auth_type_header\": \"Пользовательский заголовок\",\n \"store_auth_type_github_token\": \"GitHub token\",\n \"store_auth_token_env\": \"Переменная token\",\n \"store_auth_username_env\": \"Переменная username\",\n \"store_auth_password_env\": \"Переменная password\",\n \"store_auth_header_name\": \"Имя заголовка\",\n \"store_auth_header_value_env\": \"Переменная значения заголовка\",\n \"store_auth_allow_insecure\": \"Разрешить небезопасные HTTP URL\",\n \"logs_max_size\": \"Максимальный размер файла журнала (МБ)\",\n \"error_logs_max_files\": \"Файлов журнала ошибок\",\n \"usage_statistics_enabled\": \"Включить статистику использования в памяти\",\n \"usage_statistics_enabled_desc\": \"Агрегировать статистику использования запросов в памяти\",\n \"redis_usage_retention\": \"Хранение очереди Redis usage (сек)\",\n \"redis_usage_retention_hint\": \"Время хранения вывода RESP LPOP/RPOP в памяти, максимум 3600 секунд\",\n \"antigravity_signature_cache\": \"Включить кэш подписей Antigravity\",\n \"antigravity_signature_cache_desc\": \"Предпочитать и проверять кэшированные подписи thinking-блоков\",\n \"antigravity_signature_strict\": \"Строгая проверка bypass-подписи\",\n \"antigravity_signature_strict_desc\": \"Применяется только при отключённом кэше подписей; проверяет полное дерево Claude protobuf\"\n },\n \"headers\": {\n \"title\": \"Заголовки по умолчанию\",\n \"description\": \"Заголовки по умолчанию для OAuth-запросов Claude и Codex, когда клиент их не отправил\",\n \"claude_title\": \"Claude Header Defaults\",\n \"codex_title\": \"Codex Header Defaults\",\n \"user_agent\": \"User-Agent\",\n \"package_version\": \"Package Version\",\n \"runtime_version\": \"Runtime Version\",\n \"os\": \"OS\",\n \"arch\": \"Arch\",\n \"timeout\": \"Timeout\",\n \"stabilize_device\": \"Стабилизировать профиль устройства\",\n \"stabilize_device_desc\": \"Фиксировать OS/Arch и стабилизировать программный отпечаток для учётных данных/API-ключа\",\n \"beta_features\": \"Экспериментальные функции\",\n \"codex_identity_confuse\": \"Смешивание личности Codex\",\n \"codex_identity_confuse_desc\": \"При маршрутизации с заполнением или привязке сессии переназначает ключ кэша и установочную личность Codex под выбранную запись авторизации\",\n \"codex_abnormal_reasoning_retry_title\": \"Стратегия защиты Codex от деградации\",\n \"codex_abnormal_reasoning_retry_desc\": \"После обнаружения аномального числа токенов рассуждения управляет повторами, параллельным запросом, итоговой доставкой и видимой клиенту статистикой\",\n \"codex_abnormal_reasoning_retry_summary_title\": \"Текущий обзор стратегии\",\n \"codex_abnormal_reasoning_retry_summary_desc\": \"Переключатели, действие повтора и доставка разделены, чтобы было проще проверить фактически активное поведение.\",\n \"codex_abnormal_reasoning_retry_summary_action\": \"Действие при совпадении\",\n \"codex_abnormal_reasoning_retry_summary_stream_buffer\": \"Потоковый буфер\",\n \"codex_abnormal_reasoning_retry_summary_hedged\": \"Параллельный режим\",\n \"codex_abnormal_reasoning_retry_summary_distinct_auth\": \"Другая авторизация\",\n \"codex_abnormal_reasoning_retry_summary_on\": \"Включено\",\n \"codex_abnormal_reasoning_retry_summary_off\": \"Отключено\",\n \"codex_abnormal_reasoning_retry_group_switches_title\": \"Основные переключатели\",\n \"codex_abnormal_reasoning_retry_group_switches_desc\": \"Сначала задайте активность стратегии, буферизацию потокового ответа и возможность второй линии запроса.\",\n \"codex_abnormal_reasoning_retry_group_retry_title\": \"Планирование повтора\",\n \"codex_abnormal_reasoning_retry_group_retry_desc\": \"Настройте действие при совпадении, лимит буфера, задержку второй линии и режим возврата.\",\n \"codex_abnormal_reasoning_retry_group_match_title\": \"Условия совпадения\",\n \"codex_abnormal_reasoning_retry_group_match_desc\": \"Ограничьте совпадение по модели, интенсивности рассуждения, числу аномальных токенов и бюджету повторов.\",\n \"codex_abnormal_reasoning_retry_group_delivery_title\": \"Доставка и статистика\",\n \"codex_abnormal_reasoning_retry_group_delivery_desc\": \"Управляет поведением после исчерпания повторов, видимой клиенту статистикой и выбором ответа-кандидата.\",\n \"codex_abnormal_reasoning_retry_group_scope_title\": \"Область авторизации\",\n \"codex_abnormal_reasoning_retry_group_scope_desc\": \"Сузьте влияние стратегии по типу авторизации или ID, чтобы не затрагивать другие учётные данные.\",\n \"codex_abnormal_reasoning_retry_enabled\": \"Быстрый переключатель стратегии\",\n \"codex_abnormal_reasoning_retry_enabled_desc\": \"При включении используется автоматический повтор, при выключении ответ не меняется; режим наблюдения выбирается в поле действия\",\n \"codex_abnormal_reasoning_retry_action_label\": \"Действие при совпадении\",\n \"codex_abnormal_reasoning_retry_action_hint\": \"Выберите обработку ответа с аномальным числом токенов рассуждения\",\n \"codex_abnormal_reasoning_retry_action_retry\": \"Автоматически повторить\",\n \"codex_abnormal_reasoning_retry_action_observe_only\": \"Только наблюдать\",\n \"codex_abnormal_reasoning_retry_action_disabled\": \"Отключить\",\n \"codex_abnormal_reasoning_retry_action_retry_desc\": \"Совпавший ответ отбрасывается, затем запрос повторяется до установленного лимита.\",\n \"codex_abnormal_reasoning_retry_action_observe_only_desc\": \"Совпадение только записывается. Ответ, доставляемый клиенту, не меняется.\",\n \"codex_abnormal_reasoning_retry_action_disabled_desc\": \"Защита отключена. Условия совпадения не влияют на доставку ответа.\",\n \"codex_abnormal_reasoning_retry_stream_buffer\": \"Буферизовать потоковые ответы\",\n \"codex_abnormal_reasoning_retry_stream_buffer_desc\": \"Сохраняет потоковые фрагменты до завершения ответа, чтобы не доставлять аномальный ответ слишком рано\",\n \"codex_abnormal_reasoning_retry_stream_buffer_max_bytes_label\": \"Лимит буфера потока в байтах\",\n \"codex_abnormal_reasoning_retry_stream_buffer_max_bytes_hint\": \"По умолчанию 16 MiB (16777216); 0 также включает безопасное значение. При превышении поток завершается с 502 без передачи частичного ответа\",\n \"codex_abnormal_reasoning_retry_hedged_retry_enabled\": \"Включить параллельный повтор\",\n \"codex_abnormal_reasoning_retry_hedged_retry_enabled_desc\": \"После отброшенного аномального ответа запускает второй запрос с задержкой, чтобы снизить хвостовую задержку\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_label\": \"Режим параллельного повтора\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_hint\": \"Выберите стратегию возврата после запуска второго запроса\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_quality\": \"Приоритет качества (по умолчанию)\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_speed\": \"Приоритет скорости\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_quality_desc\": \"Ожидает уже отправленные запросы и выбирает более устойчивый результат по политике доставки.\",\n \"codex_abnormal_reasoning_retry_hedged_retry_mode_speed_desc\": \"Возвращает первый доставляемый успешный результат, сокращая ожидание ценой меньшей уверенности.\",\n \"codex_abnormal_reasoning_retry_hedge_delay_ms_label\": \"Задержка параллельного повтора (мс)\",\n \"codex_abnormal_reasoning_retry_hedge_delay_ms_hint\": \"Время ожидания перед запуском второго запроса после аномальной попытки\",\n \"codex_abnormal_reasoning_retry_require_distinct_auth\": \"Требовать другую авторизацию\",\n \"codex_abnormal_reasoning_retry_require_distinct_auth_desc\": \"Для второго параллельного запроса предпочтительно выбрать другой ID авторизации\",\n \"codex_abnormal_reasoning_retry_model_contains_label\": \"Модель содержит\",\n \"codex_abnormal_reasoning_retry_model_contains_hint\": \"Срабатывает, если запрошенная или разрешённая upstream-модель содержит любое значение\",\n \"codex_abnormal_reasoning_retry_reasoning_efforts_label\": \"Интенсивность рассуждения\",\n \"codex_abnormal_reasoning_retry_reasoning_efforts_hint\": \"Необязательные значения интенсивности Codex, например high или xhigh; пусто означает без ограничения\",\n \"codex_abnormal_reasoning_retry_reasoning_tokens_label\": \"Токены рассуждения\",\n \"codex_abnormal_reasoning_retry_reasoning_tokens_hint\": \"Неотрицательные целые значения числа токенов, запускающие стратегию\",\n \"codex_abnormal_reasoning_retry_max_retries_label\": \"Максимум аномальных повторов\",\n \"codex_abnormal_reasoning_retry_max_retries_hint\": \"Максимум дополнительных повторов из-за аномального рассуждения; 0 записывает неудачную попытку и сразу возвращает 502\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_label\": \"Стратегия после лимита\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_hint\": \"Выберите обработку после превышения максимального числа аномальных повторов\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_error\": \"Вернуть 502\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_pass_through\": \"Пропустить аномальный ответ\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_error_desc\": \"После достижения лимита повторов вернуть 502 вместо доставки аномального ответа клиенту.\",\n \"codex_abnormal_reasoning_retry_exhausted_behavior_pass_through_desc\": \"После достижения лимита повторов доставить последний аномальный ответ, чтобы запрос всё же завершился.\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_label\": \"Агрегация клиентской статистики\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_hint\": \"Выберите видимую клиенту агрегацию; статистика панели управления всё равно записывает реальные попытки\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_delivered_only\": \"Только доставленный ответ (по умолчанию)\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum\": \"Суммировать все попытки\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum_with_delivered_total\": \"Суммировать детали, сохранить итог доставленного\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_delivered_only_desc\": \"Клиент видит статистику только доставленного ответа. Панель управления всё равно записывает каждую реальную попытку.\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum_desc\": \"Клиент видит сумму полей статистики по всем попыткам.\",\n \"codex_abnormal_reasoning_retry_client_usage_aggregation_sum_with_delivered_total_desc\": \"Детальные поля суммируются, но итог берётся из доставленного ответа для совместимости с клиентами, читающими только итог.\",\n \"codex_abnormal_reasoning_retry_delivery_policy_label\": \"Политика доставки\",\n \"codex_abnormal_reasoning_retry_delivery_policy_hint\": \"Используется, когда среди кандидатов есть и нормальные, и аномальные ответы\",\n \"codex_abnormal_reasoning_retry_delivery_policy_best_non_special\": \"Лучший нормальный ответ (по умолчанию)\",\n \"codex_abnormal_reasoning_retry_delivery_policy_first_non_special\": \"Первый нормальный ответ\",\n \"codex_abnormal_reasoning_retry_delivery_policy_max_output\": \"Ответ с наибольшим выводом\",\n \"codex_abnormal_reasoning_retry_delivery_policy_latest\": \"Последний ответ\",\n \"codex_abnormal_reasoning_retry_delivery_policy_best_non_special_desc\": \"Доставляет самый качественный нормальный ответ.\",\n \"codex_abnormal_reasoning_retry_delivery_policy_first_non_special_desc\": \"Доставляет первый успешный нормальный ответ, чтобы сократить ожидание.\",\n \"codex_abnormal_reasoning_retry_delivery_policy_max_output_desc\": \"Доставляет кандидата с наибольшим объёмом вывода.\",\n \"codex_abnormal_reasoning_retry_delivery_policy_latest_desc\": \"Доставляет последнего завершённого кандидата.\",\n \"codex_abnormal_reasoning_retry_fallback_policy_label\": \"Резервная стратегия\",\n \"codex_abnormal_reasoning_retry_fallback_policy_hint\": \"Используется, когда после исчерпания повторов все кандидаты остаются аномальными\",\n \"codex_abnormal_reasoning_retry_fallback_policy_best_special\": \"Лучший аномальный ответ (по умолчанию)\",\n \"codex_abnormal_reasoning_retry_fallback_policy_max_output_special\": \"Аномальный ответ с наибольшим выводом\",\n \"codex_abnormal_reasoning_retry_fallback_policy_latest_special\": \"Последний аномальный ответ\",\n \"codex_abnormal_reasoning_retry_fallback_policy_best_special_desc\": \"Когда остаются только аномальные кандидаты, выбирает самый качественный аномальный ответ.\",\n \"codex_abnormal_reasoning_retry_fallback_policy_max_output_special_desc\": \"Когда остаются только аномальные кандидаты, выбирает аномальный ответ с наибольшим выводом.\",\n \"codex_abnormal_reasoning_retry_fallback_policy_latest_special_desc\": \"Когда остаются только аномальные кандидаты, выбирает последнего завершённого аномального кандидата.\",\n \"codex_abnormal_reasoning_retry_auth_kinds_label\": \"Типы авторизации\",\n \"codex_abnormal_reasoning_retry_auth_kinds_hint\": \"Белый список нормализованных типов авторизации; OAuth по умолчанию не совпадает с API-ключом\",\n \"codex_abnormal_reasoning_retry_auth_ids_label\": \"ID авторизации\",\n \"codex_abnormal_reasoning_retry_auth_ids_hint\": \"Необязательный точный белый список ID авторизации; пусто означает без ограничения по ID\"\n },\n \"network\": {\n \"title\": \"Сетевые настройки\",\n \"description\": \"Параметры прокси, повторов и маршрутизации\",\n \"proxy_url\": \"URL прокси\",\n \"request_retry\": \"Количество повторов запросов\",\n \"max_retry_credentials\": \"Максимум учётных данных для повторов\",\n \"max_retry_credentials_hint\": \"Оставьте пустым, чтобы не задавать поле. Значение 0 сохраняет legacy-поведение и позволяет перебрать все доступные учётные данные.\",\n \"max_retry_interval\": \"Максимальный интервал повтора (сек)\",\n \"transient_error_cooldown_seconds\": \"Cooldown transient-ошибок (сек)\",\n \"transient_error_cooldown_seconds_hint\": \"Оставьте пустым для значения Core по умолчанию. 0 сохраняет legacy cooldown 60 секунд; отрицательные значения отключают cooldown transient-ошибок.\",\n \"auth_auto_refresh_workers\": \"Workers автообновления auth\",\n \"auth_auto_refresh_workers_hint\": \"Если больше 0, переопределяет число workers по умолчанию (16)\",\n \"disable_image_generation\": \"Отключить генерацию изображений\",\n \"disable_image_generation_hint\": \"false включает автоматическое добавление image tool; true отключает генерацию везде; chat удаляет image_generation на не-image endpoints; passthrough не добавляет и не удаляет клиентские tools на не-image endpoints (image endpoints работают как chat)\",\n \"disable_image_generation_false\": \"false (включено)\",\n \"disable_image_generation_true\": \"true (отключено везде)\",\n \"disable_image_generation_chat\": \"chat (удалять image tool на не-image endpoints)\",\n \"disable_image_generation_passthrough\": \"passthrough (сохранить клиентские tools)\",\n \"gpt_image_2_base_model\": \"Базовая модель GPT Image 2\",\n \"gpt_image_2_base_model_hint\": \"Основная модель для проксирования gpt-image-2 image-запросов; если пусто или неверно, backend использует значение по умолчанию\",\n \"routing_strategy\": \"Стратегия маршрутизации\",\n \"routing_strategy_hint\": \"Выберите стратегию подбора учётных данных\",\n \"strategy_round_robin\": \"По кругу\",\n \"strategy_fill_first\": \"Сначала заполнить\",\n \"session_affinity_ttl\": \"TTL привязки сессии\",\n \"force_model_prefix\": \"Принудительный префикс модели\",\n \"force_model_prefix_desc\": \"Запросы к моделям без префикса используют только учётные данные без префикса\",\n \"passthrough_headers\": \"Передавать upstream-заголовки\",\n \"passthrough_headers_desc\": \"Передавать отфильтрованные upstream-заголовки ответа downstream-клиентам\",\n \"disable_cooling\": \"Отключить cooldown\",\n \"disable_cooling_desc\": \"Глобально отключить окна охлаждения auth/model после ошибок\",\n \"session_affinity\": \"Маршрутизация с привязкой к сессии\",\n \"ws_auth\": \"Аутентификация WebSocket\",\n \"ws_auth_desc\": \"Включить аутентификацию WebSocket (/v1/ws)\",\n \"enable_gemini_cli_endpoint\": \"Включить внутренний endpoint Gemini CLI\",\n \"enable_gemini_cli_endpoint_desc\": \"Включить совместимые endpoints /v1internal:*\"\n },\n \"quota\": {\n \"title\": \"Резерв по квоте\",\n \"description\": \"Стратегия при превышении квоты\",\n \"switch_project\": \"Переключить проект\",\n \"switch_project_desc\": \"Автоматически переходить на другой проект при превышении квоты\",\n \"switch_preview_model\": \"Переключить на preview-модель\",\n \"switch_preview_model_desc\": \"Переключаться на preview-версию модели при превышении квоты\",\n \"antigravity_credits\": \"Использовать Antigravity Credits\"\n },\n \"streaming\": {\n \"title\": \"Настройки стриминга\",\n \"description\": \"Параметры keepalive и повторов запуска\",\n \"keepalive_seconds\": \"Период keepalive (сек)\",\n \"keepalive_hint\": \"Установите 0 или оставьте поле пустым, чтобы отключить keepalive\",\n \"bootstrap_retries\": \"Повторы запуска\",\n \"bootstrap_hint\": \"Количество попыток при запуске стрима (до первого байта)\",\n \"nonstream_keepalive\": \"Интервал keepalive для нестиминговых ответов (сек)\",\n \"nonstream_keepalive_hint\": \"Отправлять пустые строки каждые N секунд для нестиминговых ответов, чтобы избежать простоя; установите 0 или оставьте пустым для отключения\",\n \"disabled\": \"Отключено\"\n },\n \"payload\": {\n \"title\": \"Настройки полезной нагрузки\",\n \"description\": \"Значения по умолчанию, raw JSON-правила, правила переопределения и фильтрации\",\n \"default_rules\": \"Правила по умолчанию\",\n \"default_rules_desc\": \"Использовать эти значения, если параметр не указан в запросе\",\n \"default_raw_rules\": \"Raw-правила по умолчанию\",\n \"default_raw_rules_desc\": \"Если параметр отсутствует, записывать эти значения как raw JSON-фрагменты, например true, 123, \\\"high\\\" или {\\\"type\\\":\\\"object\\\"}\",\n \"override_rules\": \"Правила переопределения\",\n \"override_rules_desc\": \"Принудительно задавать значения параметров в запросе\",\n \"override_raw_rules\": \"Raw-правила переопределения\",\n \"override_raw_rules_desc\": \"Всегда перезаписывать значения как raw JSON-фрагменты; полезно для response_format, схем и других сложных полей\",\n \"filter_rules\": \"Правила фильтрации\",\n \"filter_rules_desc\": \"Предварительно фильтровать тело исходящего запроса через JSON Path, автоматически удалять несоответствующие или лишние параметры (санитизация запроса)\"\n }\n },\n \"api_keys\": {\n \"label\": \"Список API-ключей (api-keys)\",\n \"add\": \"Добавить API-ключ\",\n \"generate\": \"Сгенерировать\",\n \"empty\": \"API-ключи отсутствуют\",\n \"hint\": \"Каждая запись — это API-ключ (в том же стиле, что и на странице управления API-ключами)\",\n \"edit_title\": \"Редактирование API-ключа\",\n \"add_title\": \"Добавление API-ключа\",\n \"input_label\": \"API-ключ\",\n \"input_placeholder\": \"Вставьте API-ключ\",\n \"input_hint\": \"Меняет только содержимое локального файла конфигурации, не синхронизируется с интерфейсом управления API-ключами\",\n \"error_empty\": \"Введите API-ключ\",\n \"error_invalid\": \"API-ключ содержит недопустимые символы\"\n },\n \"payload_rules\": {\n \"rule\": \"Правило\",\n \"models\": \"Применимые модели\",\n \"model_name\": \"Название модели\",\n \"model_scope\": \"Область модели\",\n \"scope_any\": \"Любая (текущее поведение)\",\n \"scope_requested\": \"Запрошенная модель\",\n \"scope_upstream\": \"Верхняя модель\",\n \"scope_custom\": \"Пользовательская: {{scope}}\",\n \"provider_type\": \"Тип провайдера\",\n \"add_model\": \"Добавить модель\",\n \"params\": \"Настройки параметров\",\n \"remove_params\": \"Удалить параметры\",\n \"json_path\": \"JSON Path (например, temperature)\",\n \"json_path_filter\": \"JSON Path (gjson/sjson), например generationConfig.thinkingConfig.thinkingBudget\",\n \"param_type\": \"Тип параметра\",\n \"param_value\": \"Значение параметра\",\n \"add_param\": \"Добавить параметр\",\n \"no_rules\": \"Правил нет\",\n \"add_rule\": \"Добавить правило\",\n \"provider_default\": \"По умолчанию\",\n \"provider_openai\": \"OpenAI\",\n \"provider_openai_response\": \"OpenAI Response\",\n \"provider_responses\": \"Responses\",\n \"provider_gemini\": \"Gemini\",\n \"provider_claude\": \"Claude\",\n \"provider_codex\": \"Codex\",\n \"provider_antigravity\": \"Antigravity\",\n \"advanced\": \"Дополнительно\",\n \"hide_advanced\": \"Скрыть дополнительно\",\n \"from_protocol\": \"Исходный протокол (from-protocol)\",\n \"headers\": \"Совпадения заголовков запроса\",\n \"header_name\": \"Имя заголовка\",\n \"header_value\": \"Значение заголовка\",\n \"add_header\": \"Добавить заголовок\",\n \"match\": \"Обязательные совпадения (match)\",\n \"notMatch\": \"Запрещённые совпадения (not-match)\",\n \"exist\": \"Обязательные пути (exist)\",\n \"notExist\": \"Запрещённые пути (not-exist)\",\n \"condition_path\": \"Путь условия\",\n \"condition_value\": \"Значение условия\",\n \"add_condition\": \"Добавить условие\",\n \"value_type_string\": \"Строка\",\n \"value_type_number\": \"Число\",\n \"value_type_boolean\": \"Булево\",\n \"value_type_json\": \"JSON\",\n \"value_string\": \"Строковое значение\",\n \"value_number\": \"Числовое значение (например, 0.7)\",\n \"value_boolean\": \"true или false\",\n \"value_json\": \"Значение JSON\",\n \"value_raw_json\": \"Raw JSON-фрагмент, например true, 123, \\\"high\\\" или {\\\"type\\\":\\\"object\\\"}\",\n \"value_default\": \"Значение\",\n \"boolean_true\": \"true\",\n \"boolean_false\": \"false\"\n },\n \"validation\": {\n \"validation_blocked\": \"Исправьте ошибки валидации перед сохранением\",\n \"port_range\": \"Введите корректный порт от 1 до 65535\",\n \"non_negative_integer\": \"Введите неотрицательное целое число\",\n \"integer\": \"Введите целое число\",\n \"integer_range_1_3600\": \"Введите целое число от 1 до 3600\",\n \"payload_invalid_number\": \"Введите корректное число\",\n \"payload_invalid_boolean\": \"Выберите true или false\",\n \"payload_invalid_json\": \"Введите корректный JSON\"\n },\n \"common\": {\n \"edit\": \"Изменить\",\n \"delete\": \"Удалить\",\n \"cancel\": \"Отменить\",\n \"update\": \"Обновить\",\n \"add\": \"Добавить\"\n }\n }\n },\n \"quota_management\": {\n \"title\": \"Управление квотами\",\n \"description\": \"Следите за статусом квот OAuth для учётных данных Antigravity, Codex и Gemini CLI.\",\n \"refresh_files\": \"Обновить файлы авторизации\",\n \"refresh_files_and_quota\": \"Обновить файлы и квоты\",\n \"refresh_all_credentials\": \"Обновить все учётные данные\",\n \"card_idle_hint\": \"Используйте кнопку «Обновить все учётные данные» сверху, чтобы загрузить актуальные данные по квотам.\"\n },\n \"plugin_management\": {\n \"title\": \"Управление плагинами\",\n \"description\": \"Просматривайте найденные и зарегистрированные плагины, управляйте переключателями экземпляров, полями конфигурации и ссылками на ресурсы.\",\n \"refresh\": \"Обновить\",\n \"load_failed\": \"Не удалось загрузить плагины\",\n \"config_load_failed\": \"Не удалось прочитать конфигурацию плагина\",\n \"config_not_found\": \"Не удалось прочитать конфигурацию плагина: backend не нашёл этот плагин.\",\n \"unsupported_backend\": \"Текущий backend не предоставляет API управления плагинами. Используйте более новую сборку backend с эндпоинтами управления плагинами и перезапустите сервис.\",\n \"runtime_unavailable_title\": \"Среда выполнения плагинов недоступна\",\n \"runtime_unavailable_desc\": \"plugins.enabled имеет значение true, но сервер сообщает x-cpa-support-plugin: 0. Текущая сборка не содержит среды выполнения плагинов, поэтому управление плагинами и магазин остаются заблокированными. Разверните сборку Core с поддержкой плагинов для текущей платформы и перезапустите backend. В Linux обычно требуются CGO и совместимая libc. Отключите plugins.enabled, если плагины не нужны.\",\n \"runtime_probe_failed_desc\": \"plugins.enabled имеет значение true, но Panel не смог подтвердить поддержку среды выполнения ни через x-cpa-support-plugin, ни через API плагинов. Операции с плагинами остаются заблокированными. Проверьте сборку backend и доступность header через reverse proxy/CORS, затем подключитесь снова.\",\n \"runtime_unavailable_action\": \"Проверить конфигурацию\",\n \"global_status\": \"Глобальный статус\",\n \"global_enabled\": \"Включено\",\n \"global_disabled\": \"Отключено\",\n \"global_disabled_hint\": \"plugins.enabled имеет значение false, поэтому включённые экземпляры плагинов не станут активными.\",\n \"plugins_dir\": \"Каталог плагинов\",\n \"discovered\": \"Найдено\",\n \"effective\": \"Активно\",\n \"search_placeholder\": \"Искать ID, имя, автора или ресурс плагина...\",\n \"search_label\": \"Поиск плагинов\",\n \"no_plugins\": \"Плагинов нет\",\n \"no_plugins_desc\": \"В каталоге плагинов и реестре времени выполнения плагины не найдены.\",\n \"configured\": \"Настроен\",\n \"not_configured\": \"Не настроен\",\n \"registered\": \"Зарегистрирован\",\n \"not_registered\": \"Не зарегистрирован\",\n \"oauth\": \"OAuth\",\n \"status_effective\": \"Активен\",\n \"status_inactive\": \"Неактивен\",\n \"version_label\": \"Версия\",\n \"author_label\": \"Автор\",\n \"path_label\": \"Путь\",\n \"edit_config\": \"Изменить конфиг\",\n \"open_resource\": \"Открыть ресурс\",\n \"open_repository\": \"Открыть репозиторий\",\n \"config_title\": \"Настроить {{name}}\",\n \"base_settings\": \"Базовые настройки\",\n \"enabled\": \"Включено\",\n \"enabled_hint\": \"Управляет полем enabled для этого экземпляра плагина в plugins.configs.\",\n \"priority\": \"Приоритет\",\n \"config_fields\": \"Поля конфигурации\",\n \"no_config_fields\": \"Этот плагин не объявляет визуальные поля конфигурации.\",\n \"select_placeholder\": \"Выберите\",\n \"array_item_placeholder\": \"Введите элемент массива\",\n \"add_array_item\": \"Добавить элемент массива\",\n \"remove_array_item\": \"Удалить элемент массива\",\n \"delete_plugin\": \"Удалить\",\n \"delete_confirm_title\": \"Удалить плагин\",\n \"delete_confirm_message\": \"Удалить {{name}} ({{id}})? Будут удалены локальный файл плагина и сохранённая конфигурация.\",\n \"delete_success\": \"Плагин удалён\",\n \"delete_failed\": \"Не удалось удалить плагин\",\n \"delete_restart_required\": \"Загруженный плагин можно удалить только после перезапуска backend.\",\n \"toggle_success\": \"Статус плагина обновлён\",\n \"toggle_failed\": \"Не удалось обновить статус плагина\",\n \"runtime_pending\": \"Изменение плагина сохранено, но состояние runtime ещё обновляется. Обновите страницу позже или проверьте логи backend.\",\n \"save_success\": \"Конфигурация плагина сохранена\",\n \"save_failed\": \"Не удалось сохранить конфигурацию плагина\",\n \"validation_failed\": \"Сначала исправьте ошибки формы конфигурации плагина\",\n \"invalid_priority\": \"Введите целочисленный приоритет\",\n \"invalid_number\": \"Введите корректное число\",\n \"invalid_integer\": \"Введите корректное целое число\",\n \"invalid_json\": \"Введите корректный JSON\",\n \"expected_array\": \"Введите JSON-массив\",\n \"expected_object\": \"Введите JSON-объект\",\n \"invalid_enum\": \"Выберите одно из объявленных значений enum\"\n },\n \"plugin_store\": {\n \"title\": \"Магазин плагинов\",\n \"description\": \"Просматривайте реестр плагинов, устанавливайте и обновляйте плагины для текущего бэкенда.\",\n \"description_show_more\": \"Показать больше\",\n \"description_show_less\": \"Свернуть\",\n \"source_name\": \"Источник: {{source}}\",\n \"cli_proxy_api_source\": \"Источник CLIProxyAPI\",\n \"refresh\": \"Обновить\",\n \"retry\": \"Повторить\",\n \"load_failed\": \"Не удалось загрузить магазин плагинов\",\n \"unsupported_backend\": \"Текущий бэкенд не предоставляет API магазина плагинов. Используйте новую сборку бэкенда с поддержкой магазина плагинов и перезапустите службу.\",\n \"registry_failed\": \"Не удалось обратиться к реестру плагинов\",\n \"global_status\": \"Глобальный статус\",\n \"global_enabled\": \"Включено\",\n \"global_disabled\": \"Отключено\",\n \"global_disabled_hint\": \"Параметр plugins.enabled выключен, поэтому установленные плагины не будут работать.\",\n \"plugins_dir\": \"Каталог плагинов\",\n \"stat_available\": \"Доступно\",\n \"search_placeholder\": \"Поиск по ID, названию, автору или тегу...\",\n \"search_label\": \"Поиск в магазине плагинов\",\n \"filter_label\": \"Фильтр по статусу установки\",\n \"filter_all\": \"Все\",\n \"filter_installed\": \"Установленные\",\n \"filter_not_installed\": \"Не установленные\",\n \"filter_updates\": \"Обновления\",\n \"badge_installed\": \"Установлен\",\n \"badge_update\": \"Доступно обновление\",\n \"badge_effective\": \"Активен\",\n \"version_arrow\": \"v{{from}} → v{{to}}\",\n \"install_type\": \"Установка: {{type}}\",\n \"platforms\": \"Платформы: {{platforms}}\",\n \"auth_required\": \"Требуется аутентификация\",\n \"auth_configured\": \"Аутентификация настроена\",\n \"auth_required_hint\": \"Настройте plugins.store-auth перед установкой из этого источника или URL артефакта\",\n \"source_errors_title\": \"Некоторые источники плагинов не загрузились\",\n \"install\": \"Установить\",\n \"update\": \"Обновить\",\n \"manage\": \"Управлять\",\n \"install_confirm_title\": \"Установка плагина\",\n \"install_confirm_message\": \"Скачать {{target}} из реестра плагинов и установить в локальный каталог плагинов?\",\n \"update_confirm_title\": \"Обновление плагина\",\n \"update_confirm_message\": \"Скачать и установить {{target}}?\",\n \"install_version_label\": \"Версия\",\n \"install_version_latest\": \"последняя\",\n \"install_version_latest_mode\": \"Последняя стабильная\",\n \"install_version_latest_hint\": \"Разрешается backend во время установки. Текущая версия в списке: {{version}}.\",\n \"install_version_release_mode\": \"Выбрать release\",\n \"install_version_release_hint\": \"Прочитать устанавливаемые tags из GitHub Releases.\",\n \"install_version_manual_mode\": \"Ручной release tag\",\n \"install_version_manual_hint\": \"Используйте только когда автоматическая загрузка releases недоступна.\",\n \"install_versions_loading\": \"Загрузка GitHub Releases...\",\n \"install_versions_load_failed\": \"Не удалось загрузить версии releases\",\n \"install_version_non_github\": \"Репозиторий этого плагина не является GitHub-репозиторием\",\n \"install_versions_empty\": \"Подходящие releases не найдены.\",\n \"install_versions_only_prerelease\": \"Доступны только prerelease-версии. Включите prerelease, чтобы выбрать одну.\",\n \"install_version_release_select\": \"Выберите версию release\",\n \"install_version_release_placeholder\": \"Выберите версию release\",\n \"install_version_prerelease_badge\": \"prerelease\",\n \"install_version_assets_count\": \"{{count}} артефактов\",\n \"install_version_show_prerelease\": \"Показать prerelease-версии\",\n \"install_version_manual_placeholder\": \"Например v0.1.4\",\n \"install_version_manual_error\": \"Release tags могут содержать только буквы, цифры, точки, подчёркивания, плюсы и дефисы; пробелы и слэши запрещены.\",\n \"install_version_current_selected\": \"{{version}} уже установлена. Выберите другую версию.\",\n \"install_version_releases_link\": \"Открыть GitHub Releases\",\n \"install_success\": \"Плагин установлен\",\n \"update_success\": \"Плагин обновлён\",\n \"install_failed\": \"Не удалось установить плагин\",\n \"update_failed\": \"Не удалось обновить плагин\",\n \"status_pending\": \"Файлы плагина обновлены, но локальный статус ещё не обновился. Обновите страницу позже или проверьте логи backend.\",\n \"registration_pending\": \"Файлы плагина обновлены, но регистрация ещё ожидается. Обновите страницу позже или проверьте логи backend.\",\n \"restart_required_notice\": \"Перезапустите службу, чтобы загрузить новую версию плагина\",\n \"restart_required_banner\": \"Перезапустите службу, чтобы применить новую версию: {{plugins}}\",\n \"open_repository\": \"Открыть репозиторий\",\n \"open_homepage\": \"Открыть сайт\",\n \"no_plugins\": \"Реестр пуст\",\n \"no_plugins_desc\": \"Реестр плагинов не вернул ни одного плагина.\",\n \"no_matches\": \"Нет подходящих плагинов\",\n \"no_matches_desc\": \"Нет плагинов, соответствующих текущему поиску или фильтру.\",\n \"clear_filters\": \"Сбросить фильтры\",\n \"security_banner_title\": \"Сторонние плагины работают с полным доступом к бэкенду\",\n \"security_banner_text\": \"Плагины выполняют код внутри прокси-сервиса и могут читать ваши учётные данные и трафик. Устанавливайте только плагины, которым доверяете, — особенно осторожно относитесь к плагинам, не опубликованным официальной организацией router-for-me.\",\n \"badge_untrusted\": \"Сторонний\",\n \"gate_title\": \"Установка {{name}}\",\n \"gate_title_update\": \"Обновление {{name}}\",\n \"gate_warning\": \"Если вы не прочитаете это, могут произойти неожиданные и опасные последствия.\",\n \"gate_effect_runs_code\": \"Этот плагин будет выполнять несертифицированный сторонний код внутри вашего прокси-бэкенда. Система не может изолировать или аудировать его поведение, и он может получить доступ к вашим конфиденциальным учётным данным, сетевым запросам и данным ответов.\",\n \"gate_effect_no_review\": \"Этот плагин не опубликован и не проверен официальной организацией router-for-me. Официальная организация не предоставляет никаких явных или подразумеваемых гарантий стабильности, безопасности, соответствия требованиям или любых изменений поведения в последующих версиях этого плагина.\",\n \"gate_effect_restart\": \"Установка изменяет локальный каталог плагинов и может потребовать перезапуска сервиса.\",\n \"gate_untrusted_alert\": \"Этот плагин не от официальной организации router-for-me. Продолжайте, только если полностью доверяете его автору и источнику.\",\n \"gate_repository_label\": \"Репозиторий\",\n \"gate_source_label\": \"Источник\",\n \"gate_step1_action\": \"Я хочу установить этот плагин\",\n \"gate_step2_action\": \"Я прочитал и понимаю эти риски\",\n \"gate_step3_prompt\": \"Для подтверждения введите «{{token}}» в поле ниже\",\n \"gate_step3_action\": \"Установить этот плагин\",\n \"gate_step3_hint\": \"Введите точный идентификатор, показанный выше, чтобы включить установку.\"\n },\n \"plugin_resource\": {\n \"page_count\": \"{{count}} страниц\"\n },\n \"system_info\": {\n \"title\": \"Информация о центре управления\",\n \"about_title\": \"CLI Proxy API Management Center\",\n \"connection_status_title\": \"Статус подключения\",\n \"api_status_label\": \"Статус API:\",\n \"config_status_label\": \"Статус конфигурации:\",\n \"last_update_label\": \"Последнее обновление:\",\n \"cache_data\": \"Данные из кэша\",\n \"real_time_data\": \"Данные в реальном времени\",\n \"not_loaded\": \"Не загружено\",\n \"seconds_ago\": \"секунд назад\",\n \"models_title\": \"Доступные модели\",\n \"models_desc\": \"Показывает ответ /models и автоматически использует сохранённые API-ключи для авторизации.\",\n \"models_loading\": \"Загрузка доступных моделей...\",\n \"models_empty\": \"Сервис /models не вернул модели\",\n \"models_error\": \"Не удалось загрузить список моделей\",\n \"models_count\": \"Доступно моделей: {{count}}\",\n \"version_check_title\": \"Проверка обновлений\",\n \"version_check_desc\": \"Вызовите эндпоинт /latest-version, чтобы сравнить с версией сервера и узнать о доступных обновлениях.\",\n \"version_current_label\": \"Текущая версия\",\n \"version_latest_label\": \"Последняя версия\",\n \"version_check_button\": \"Проверить обновления\",\n \"version_check_idle\": \"Нажмите, чтобы проверить обновления\",\n \"version_checking\": \"Поиск последней версии...\",\n \"version_update_available\": \"Доступно обновление: {{version}}\",\n \"version_is_latest\": \"Установлена последняя версия\",\n \"version_check_error\": \"Не удалось проверить обновление\",\n \"version_current_missing\": \"Версия сервера недоступна; сравнение невозможно\",\n \"version_unknown\": \"Неизвестно\",\n \"quick_links_title\": \"Быстрые ссылки\",\n \"quick_links_desc\": \"Доступ к репозиториям проекта и документации для помощи и обновлений.\",\n \"link_main_repo\": \"Основной репозиторий\",\n \"link_main_repo_desc\": \"Исходный код основной программы CLI Proxy API\",\n \"link_webui_repo\": \"Репозиторий WebUI\",\n \"link_webui_repo_desc\": \"Исходный код фронтенда центра управления\",\n \"link_docs\": \"Документация\",\n \"link_docs_desc\": \"Учебные пособия и руководства по настройке\",\n \"clear_login_title\": \"Локальные данные входа\",\n \"clear_login_desc\": \"Очистите локально сохранённые данные входа и выполните выход.\",\n \"clear_login_button\": \"Очистить данные входа\",\n \"clear_login_confirm\": \"Очистить локальные данные входа и выйти?\"\n },\n \"notification\": {\n \"debug_updated\": \"Настройки отладки обновлены\",\n \"proxy_updated\": \"Настройки прокси обновлены\",\n \"proxy_cleared\": \"Настройки прокси очищены\",\n \"retry_updated\": \"Настройки повторов обновлены\",\n \"quota_switch_project_updated\": \"Настройки переключения проектов обновлены\",\n \"quota_switch_preview_updated\": \"Настройки переключения на preview-модель обновлены\",\n \"logging_to_file_updated\": \"Настройки журналирования обновлены\",\n \"logs_max_total_size_updated\": \"Лимит размера журналов обновлён\",\n \"request_log_updated\": \"Настройка журналирования запросов обновлена\",\n \"force_model_prefix_updated\": \"Настройка префикса модели обновлена\",\n \"ws_auth_updated\": \"Настройка аутентификации WebSocket обновлена\",\n \"routing_strategy_updated\": \"Стратегия маршрутизации обновлена\",\n \"login_storage_cleared\": \"Локальные данные входа очищены\",\n \"api_key_added\": \"API-ключ успешно добавлен\",\n \"api_key_updated\": \"API-ключ успешно обновлён\",\n \"api_key_deleted\": \"API-ключ успешно удалён\",\n \"api_key_invalid_chars\": \"API-ключ может содержать только буквы, цифры и символы\",\n \"gemini_key_added\": \"Ключ Gemini успешно добавлен\",\n \"gemini_key_updated\": \"Ключ Gemini успешно обновлён\",\n \"gemini_key_deleted\": \"Ключ Gemini успешно удалён\",\n \"gemini_multi_input_required\": \"Введите хотя бы один ключ Gemini\",\n \"gemini_multi_failed\": \"Пакетное добавление Gemini не удалось\",\n \"gemini_multi_summary\": \"Пакетное добавление Gemini завершено: добавлено {{success}}, пропущено {{skipped}}, ошибок {{failed}}\",\n \"codex_config_added\": \"Конфигурация Codex успешно добавлена\",\n \"codex_config_updated\": \"Конфигурация Codex успешно обновлена\",\n \"codex_config_deleted\": \"Конфигурация Codex успешно удалена\",\n \"codex_base_url_required\": \"Введите базовый URL Codex\",\n \"claude_config_added\": \"Конфигурация Claude успешно добавлена\",\n \"claude_config_updated\": \"Конфигурация Claude успешно обновлена\",\n \"claude_config_deleted\": \"Конфигурация Claude успешно удалена\",\n \"vertex_config_added\": \"Конфигурация Vertex успешно добавлена\",\n \"vertex_config_updated\": \"Конфигурация Vertex успешно обновлена\",\n \"vertex_config_deleted\": \"Конфигурация Vertex успешно удалена\",\n \"config_enabled\": \"Конфигурация включена\",\n \"config_disabled\": \"Конфигурация выключена\",\n \"field_required\": \"Обязательные поля не могут быть пустыми\",\n \"openai_provider_required\": \"Заполните имя провайдера и базовый URL\",\n \"openai_provider_added\": \"Провайдер OpenAI успешно добавлен\",\n \"openai_provider_updated\": \"Провайдер OpenAI успешно обновлён\",\n \"openai_provider_deleted\": \"Провайдер OpenAI успешно удалён\",\n \"openai_model_name_required\": \"Введите имя модели\",\n \"openai_test_url_required\": \"Укажите корректный базовый URL перед тестированием\",\n \"openai_test_key_required\": \"Добавьте хотя бы один API-ключ перед тестированием\",\n \"openai_test_model_required\": \"Выберите модель для теста\",\n \"data_refreshed\": \"Данные успешно обновлены\",\n \"connection_required\": \"Сначала установите подключение\",\n \"refresh_failed\": \"Не удалось обновить\",\n \"update_failed\": \"Не удалось обновить\",\n \"add_failed\": \"Не удалось добавить\",\n \"delete_failed\": \"Не удалось удалить\",\n \"upload_failed\": \"Не удалось загрузить\",\n \"download_failed\": \"Не удалось скачать\",\n \"login_failed\": \"Вход не выполнен\",\n \"please_enter\": \"Пожалуйста, введите\",\n \"please_fill\": \"Пожалуйста, заполните\",\n \"provider_name_url\": \"имя провайдера и базовый URL\",\n \"api_key\": \"API-ключ\",\n \"gemini_api_key\": \"API-ключ Gemini\",\n \"codex_api_key\": \"API-ключ Codex\",\n \"claude_api_key\": \"API-ключ Claude\",\n \"commercial_mode_restart_required\": \"Режим коммерческого использования изменён. Перезапустите сервис, чтобы применить изменения\",\n \"copy_failed\": \"Не удалось скопировать\",\n \"link_copied\": \"Ссылка скопирована в буфер обмена\"\n },\n \"language\": {\n \"switch\": \"Язык\",\n \"chinese\": \"中文\",\n \"chinese_tw\": \"繁體中文(台灣)\",\n \"english\": \"English\",\n \"russian\": \"Русский\"\n },\n \"theme\": {\n \"switch\": \"Тема\",\n \"light\": \"Шерстяная бумага\",\n \"white\": \"Чисто-белая\",\n \"dark\": \"Тёмная\",\n \"switch_to_light\": \"Переключиться на тему «Шерстяная бумага»\",\n \"switch_to_dark\": \"Переключиться на тёмную тему\",\n \"auto\": \"Следовать системе\"\n },\n \"sidebar\": {\n \"primary_navigation\": \"Основная навигация\",\n \"toggle_expand\": \"Развернуть боковую панель\",\n \"toggle_collapse\": \"Свернуть боковую панель\"\n },\n \"footer\": {\n \"api_version\": \"Версия CLI Proxy API\",\n \"build_date\": \"Время сборки\",\n \"version\": \"Версия интерфейса управления\",\n \"author\": \"Автор\"\n },\n \"providersPage\": {\n \"header\": {\n \"title\": \"AI Провайдеры\",\n \"activeResources\": \"{{active}}/{{total}} активных\",\n \"providerFamilies\": \"{{count}} семейств\",\n \"updatedAt\": \"Обновлено {{time}}\",\n \"issueCount\": \"{{count}} проблем\"\n },\n \"actions\": {\n \"refresh\": \"Обновить\",\n \"syncing\": \"Синхронизация\",\n \"new\": \"Создать\",\n \"edit\": \"Изменить\",\n \"view\": \"Просмотр\",\n \"delete\": \"Удалить\",\n \"clear\": \"Очистить\",\n \"cancel\": \"Отмена\",\n \"save\": \"Сохранить\",\n \"create\": \"Создать\",\n \"enable\": \"Включить\",\n \"disable\": \"Отключить\"\n },\n \"categories\": {\n \"title\": \"Провайдеры\",\n \"activeCount\": \"{{active}}/{{total}} активных\"\n },\n \"providerNames\": {\n \"gemini\": \"Gemini\",\n \"codex\": \"Codex\",\n \"xai\": \"xAI\",\n \"claude\": \"Claude\",\n \"vertex\": \"Vertex\",\n \"openaiCompatibility\": \"OpenAI-совместимый\",\n \"claudeApi\": \"ClaudeAPI\",\n \"code0\": \"Code0\",\n \"fennoAI\": \"FennoAI\",\n \"qiniuCloud\": \"Qiniu Cloud\"\n },\n \"table\": {\n \"key\": \"Ключ\",\n \"baseUrl\": \"Base URL\",\n \"prefix\": \"Префикс\",\n \"models\": \"Модели/Заголовки\",\n \"status\": \"Статус\",\n \"actions\": \"Действия\",\n \"metrics\": {\n \"models\": \"Модели\",\n \"keys\": \"Ключи\",\n \"headers\": \"Заголовки\"\n },\n \"stats\": {\n \"recent\": \"Недавние\",\n \"fullUsage\": \"Usage\",\n \"tokens\": \"Токены\",\n \"cost\": \"Стоимость\"\n },\n \"websocketsTag\": \"WebSockets\",\n \"cloakTag\": \"Cloak\",\n \"empty\": \"Нет ресурсов, нажмите \\\"Создать\\\".\",\n \"filterPlaceholder\": \"Поиск по ключам, URL, префиксам…\",\n \"description\": \"Управление ресурсами {{route}}\",\n \"providerIssue\": \"Проблема с провайдером\"\n },\n \"status\": {\n \"active\": \"Активен\",\n \"disabled\": \"Отключён\",\n \"notSet\": \"Не задано\",\n \"none\": \"Нет\",\n \"notConfigured\": \"Не настроено\",\n \"defaultSuffix\": \"(по умолчанию)\"\n },\n \"detail\": {\n \"title\": \"Подробности\",\n \"metadataTitle\": \"Метаданные\",\n \"fields\": {\n \"identifier\": \"Идентификатор\",\n \"baseUrl\": \"Base URL\",\n \"proxyUrl\": \"Proxy URL\",\n \"prefix\": \"Префикс\",\n \"models\": \"Моделей\",\n \"headers\": \"Заголовков\",\n \"authIndex\": \"Auth Index\",\n \"excludedModels\": \"Исключённых моделей\",\n \"apiKeyEntries\": \"API-ключей\"\n }\n },\n \"form\": {\n \"createEyebrow\": \"Создать\",\n \"editEyebrow\": \"Изменить\",\n \"name\": \"Название\",\n \"apiKey\": \"API-ключ\",\n \"apiKeyCreatePlaceholder\": \"Введите API-ключ\",\n \"apiKeyEditPlaceholder\": \"Оставьте пустым, чтобы не менять\",\n \"baseUrl\": \"Base URL\",\n \"baseUrlRequiredHint\": \"Обязательно для этого провайдера\",\n \"proxyUrl\": \"Proxy URL\",\n \"prefix\": \"Префикс\",\n \"priority\": \"Приоритет\",\n \"disabled\": \"Отключить эту запись\",\n \"disabledHint\": \"Отключённые записи не используются шлюзом\",\n \"websockets\": \"Включить WebSockets\",\n \"testModel\": \"Тестовая модель\",\n \"testModelClaudeHint\": \"Используется только для проверки соединения; не сохраняется\",\n \"testModelAutoWith\": \"Авто · {{name}}\",\n \"testModelAutoEmpty\": \"Авто (модели ещё не добавлены)\",\n \"testModelCustom\": \"{{name}} (своя)\",\n \"modelsSection\": \"Пользовательские модели\",\n \"addModel\": \"Добавить модель\",\n \"modelNamePlaceholder\": \"Имя модели у провайдера\",\n \"modelAliasPlaceholder\": \"Псевдоним маршрутизации (необязательно)\",\n \"modelDisplayNamePlaceholder\": \"Отображаемое имя (необязательно)\",\n \"headersSection\": \"Заголовки запроса\",\n \"addHeader\": \"Добавить заголовок\",\n \"headers\": \"Заголовки\",\n \"headersHint\": \"По одному в строке, формат Key: Value\",\n \"excludedSection\": \"Исключённые модели\",\n \"excludedHint\": \"По одной модели в строке; совпавшие модели не будут направлены\",\n \"cloakSection\": \"Настройки Cloak\",\n \"cloakMode\": \"Режим\",\n \"cloakStrict\": \"Строгий режим\",\n \"cloakSensitiveWords\": \"Стоп-слова (по одному в строке)\",\n \"apiKeyEntriesSection\": \"API-ключи\",\n \"apiKeyEntry\": \"Ключ #{{index}}\",\n \"addApiKeyEntry\": \"Добавить ключ\",\n \"showApiKey\": \"Показать ключ API\",\n \"hideApiKey\": \"Скрыть ключ API\",\n \"disableCooling\": \"Отключить cooldown\",\n \"disableCoolingHint\": \"Отключает окна охлаждения после ошибок только для этой записи\",\n \"modelEntry\": \"Модель #{{index}}\",\n \"modelImage\": \"Разрешить image endpoints\",\n \"modelImageHint\": \"Разрешить модель для /v1/images/generations и /v1/images/edits\",\n \"thinkingConfig\": \"Thinking config (JSON)\",\n \"thinkingConfigHint\": \"Поддерживает levels, min, max, zero_allowed, dynamic_allowed\",\n \"cloakCacheUserId\": \"Кэшировать user_id\",\n \"cloakCacheUserIdHint\": \"Переиспользовать Claude cloak user_id для каждого API-ключа\",\n \"experimentalCchSigning\": \"Экспериментальная CCH-подпись\",\n \"experimentalCchSigningHint\": \"Подписывать финальное тело cloaked Claude /v1/messages через CCH\",\n \"validation\": {\n \"nameRequired\": \"Название обязательно\",\n \"apiKeyRequired\": \"Нужен хотя бы один API-ключ\",\n \"baseUrlRequired\": \"Base URL обязателен\"\n },\n \"showAllEntries\": \"Показать все ({{count}})\",\n \"showFewerEntries\": \"Показать меньше\",\n \"proxyBadge\": \"Прокси\",\n \"modelBadgeImage\": \"Image\",\n \"modelBadgeThinking\": \"Thinking\"\n },\n \"delete\": {\n \"title\": \"Удалить ресурс\",\n \"confirm\": \"Удалить {{name}}? Действие необратимо.\"\n },\n \"toast\": {\n \"created\": \"Создано\",\n \"updated\": \"Обновлено\",\n \"deleted\": \"Удалено\",\n \"enabled\": \"Включено\",\n \"disabled\": \"Отключено\",\n \"toggleFailed\": \"Не удалось обновить статус\"\n },\n \"unsavedChanges\": {\n \"title\": \"Отменить несохранённые изменения?\",\n \"message\": \"В форме есть несохранённые изменения. При закрытии они будут потеряны.\",\n \"discard\": \"Отменить изменения\",\n \"keepEditing\": \"Продолжить\"\n },\n \"connectivity\": {\n \"test\": \"Проверить\",\n \"testAll\": \"Проверить все\",\n \"success\": \"Доступно\",\n \"baseUrlRequired\": \"Base URL обязателен\",\n \"endpointInvalid\": \"Некорректный адрес\",\n \"apiKeyRequired\": \"API-ключ обязателен\",\n \"modelRequired\": \"Нужна тестовая модель\",\n \"timeout\": \"Таймаут после {{seconds}} с\",\n \"requestFailed\": \"Запрос не выполнен\"\n },\n \"discovery\": {\n \"openButton\": \"Получить с конечной точки\",\n \"searchPlaceholder\": \"Поиск моделей\",\n \"reload\": \"Обновить\",\n \"loading\": \"Загрузка моделей…\",\n \"empty\": \"Конечная точка не вернула моделей\",\n \"notLoaded\": \"Нажмите Обновить, чтобы загрузить модели\",\n \"selectAll\": \"Выбрать все\",\n \"clearAll\": \"Снять выбор\",\n \"selectedCount\": \"{{selected}} / {{total}}\",\n \"alreadyAdded\": \"Уже добавлено\",\n \"close\": \"Закрыть\",\n \"apply\": \"Применить ({{count}})\"\n },\n \"toolbar\": {\n \"sortBy\": \"Сортировка\",\n \"sort\": {\n \"name\": \"Имя\",\n \"priority\": \"Приоритет\",\n \"recentSuccess\": \"Недавние успехи\",\n \"directionAsc\": \"По возрастанию\",\n \"directionDesc\": \"По убыванию\"\n },\n \"filter\": {\n \"allModels\": \"Все модели\",\n \"selectedModels\": \"{{selected}}/{{total}} моделей\",\n \"selectAll\": \"Выбрать все\",\n \"clear\": \"Очистить\",\n \"empty\": \"Модели ещё не настроены\"\n }\n },\n \"modelCatalog\": {\n \"notLoaded\": \"Не загружено\"\n },\n \"sponsor\": {\n \"protocolSummary\": \"Anthropic / OpenAI / Gemini / Codex API (Responses)\",\n \"detailHint\": \"{{provider}} сохраняется в соответствующие конфигурации API key по протоколам; здесь они управляются вместе.\",\n \"apiKeyHint\": \"Этот ключ записывается только в выбранную группу/протокол.\",\n \"aggregationConflict\": \"Этот объединённый провайдер содержит несколько серверных конфигураций или ключей OpenAI. Чтобы избежать потери данных, измените исходную конфигурацию.\",\n \"partialMutationWarning\": \"Операция завершилась ошибкой, но один или несколько протоколов могли обновиться. Последняя конфигурация загружена повторно; проверьте её перед повторной попыткой.\",\n \"groupedKeysTitle\": \"Групповые ключи\",\n \"groupedKeysHint\": \"Ключи платформы могут привязываться к группе при создании. Каждый групповой ключ здесь управляет одним протоколом, а модели загружаются только из этого протокола.\",\n \"groupedKey\": \"Групповой ключ #{{index}}\",\n \"addGroupedKey\": \"Добавить групповой ключ\",\n \"removeGroupedKey\": \"Удалить групповой ключ\",\n \"protocol\": \"Группа/протокол\",\n \"protocolHint\": \"Выберите группу/протокол для этого ключа.\",\n \"protocolEndpoint\": \"Текущий endpoint протокола\",\n \"urlMode\": \"{{provider}} URL\",\n \"urlHint\": \"Все URL используют одинаковые правила API. При сохранении записывается только endpoint текущего группового протокола.\",\n \"urlOptions\": {\n \"standard\": \"Обычный URL\",\n \"direct\": \"Прямой URL\",\n \"domestic\": \"Маршрут для материкового Китая\",\n \"overseas\": \"Зарубежный маршрут\"\n },\n \"urlOptionDescriptions\": {\n \"domestic\": \"Для пользователей и нагрузок в материковом Китае; обычно дает меньшую задержку в сетях материкового Китая.\",\n \"overseas\": \"Для зарубежных развертываний, трансграничного доступа или задач, которым нужны зарубежные модели.\"\n },\n \"modelsTitle\": \"Настройки моделей по протоколам\",\n \"modelsHint\": \"Настраивайте allowlist моделей и алиасы отдельно для маршрутов Codex API, Anthropic, Gemini и OpenAI-compatible.\",\n \"protocolModels\": {\n \"codex\": \"Модели Codex API\",\n \"anthropic\": \"Модели Anthropic\",\n \"gemini\": \"Модели Gemini\",\n \"openai\": \"Модели OpenAI-compatible\"\n },\n \"protocolModelHints\": {\n \"codex\": \"Записывается в models конфигурации Codex API. Можно загрузить из /v1/models и задать алиасы.\",\n \"anthropic\": \"Записывается в models конфигурации Anthropic. Можно загрузить из /v1/models и задать алиасы.\",\n \"gemini\": \"Записывается в models конфигурации Gemini. Можно загрузить из /v1beta/models и задать алиасы.\",\n \"openai\": \"Записывается в models конфигурации OpenAI-compatible. Можно загрузить из /models и задать алиасы.\"\n },\n \"validation\": {\n \"keyRequired\": \"Введите API key для каждого группового ключа.\",\n \"protocolDuplicate\": \"Для каждого протокола можно добавить только один групповой ключ.\"\n },\n \"openaiEntries\": \"Ключей OpenAI-compatible\",\n \"codexEntries\": \"Ключей Codex API\",\n \"anthropicEntries\": \"Ключей Anthropic\",\n \"geminiEntries\": \"Ключей Gemini\",\n \"protocols\": {\n \"anthropic\": \"Anthropic\",\n \"openai\": \"OpenAI-compatible\",\n \"gemini\": \"Gemini\",\n \"codexResponses\": \"Codex API (Responses)\"\n }\n }\n }\n}\n"}}}} |