{
  "common": {
    "login": "Login",
    "logout": "Logout",
    "back": "Back",
    "cancel": "Cancel",
    "confirm": "Confirm",
    "save": "Save",
    "delete": "Delete",
    "edit": "Edit",
    "add": "Add",
    "update": "Update",
    "refresh": "Refresh",
    "close": "Close",
    "success": "Success",
    "error": "Error",
    "info": "Info",
    "warning": "Warning",
    "loading": "Loading...",
    "connecting": "Connecting...",
    "connected": "Connected",
    "disconnected": "Disconnected",
    "connecting_status": "Connecting",
    "connected_status": "Connected",
    "disconnected_status": "Disconnected",
    "yes": "Yes",
    "no": "No",
    "not_set": "Not set",
    "optional": "Optional",
    "required": "Required",
    "api_key": "Key",
    "base_url": "Address",
    "prefix": "Prefix",
    "proxy_url": "Proxy",
    "alias": "Alias",
    "failure": "Failure",
    "unknown_error": "Unknown error",
    "quota_update_required": "Please update the CPA version or check for updates",
    "quota_check_credential": "Please check the credential status",
    "copy": "Copy",
    "custom_headers_label": "Custom Headers",
    "custom_headers_hint": "Optional HTTP headers to send with the request. Leave blank to remove.",
    "custom_headers_add": "Add Header",
    "custom_headers_key_placeholder": "Header name, e.g. X-Custom-Header",
    "custom_headers_value_placeholder": "Header value",
    "model_name_placeholder": "Model name, e.g. claude-3-5-sonnet-20241022",
    "model_alias_placeholder": "Model alias (optional)"
  },
  "title": {
    "main": "CLI Proxy API Management Center",
    "login": "CLI Proxy API Management Center",
    "abbr": "CPAMC"
  },
  "auto_login": {
    "title": "Auto Login in Progress...",
    "message": "Attempting to connect to server using locally saved connection information"
  },
  "login": {
    "subtitle": "Please enter connection information to access the management interface",
    "connection_title": "Connection Address",
    "connection_current": "Current URL",
    "connection_auto_hint": "The system will automatically use the current URL for connection",
    "custom_connection_label": "Custom Connection URL:",
    "custom_connection_placeholder": "Eg: https://example.com:8317",
    "custom_connection_hint": "By default the current URL is used. Override it here if needed.",
    "use_current_address": "Use Current URL",
    "remember_password_label": "Remember password",
    "management_key_label": "Management Key:",
    "management_key_placeholder": "Enter the management key",
    "connect_button": "Connect",
    "submit_button": "Login",
    "submitting": "Connecting...",
    "error_title": "Login Failed",
    "error_required": "Please fill in complete connection information",
    "error_invalid": "Connection failed, please check address and key",
    "error_network": "Network connection failed, please check your network or server address",
    "error_timeout": "Connection timed out, server not responding",
    "error_unauthorized": "Authentication failed, invalid management key",
    "error_forbidden": "Access denied, insufficient permissions",
    "error_not_found": "Server address invalid or management API not enabled",
    "error_server": "Internal server error, please try again later",
    "error_cors": "Cross-origin request blocked, please check server configuration",
    "error_ssl": "SSL/TLS certificate verification failed"
  },
  "header": {
    "check_connection": "Check Connection",
    "refresh_all": "Refresh All",
    "logout": "Logout"
  },
  "connection": {
    "title": "Connection Information",
    "server_address": "Server Address:",
    "management_key": "Management Key:",
    "status": "Connection Status:"
  },
  "nav": {
    "dashboard": "Dashboard",
    "basic_settings": "Basic Settings",
    "api_keys": "API Keys",
    "ai_providers": "AI Providers",
    "auth_files": "Auth Files",
    "oauth": "OAuth Login",
    "quota_management": "Quota Management",
    "usage_stats": "Usage Statistics",
    "config_management": "Config Management",
    "logs": "Logs Viewer",
    "system_info": "Management Center Info",
    "monitor": "Monitor Center"
  },
  "dashboard": {
    "title": "Dashboard",
    "subtitle": "Welcome to CLI Proxy API Management Center",
    "openai_providers": "OpenAI Providers",
    "quick_actions": "Quick Actions",
    "current_config": "Current Configuration",
    "management_keys": "Management Keys",
    "provider_keys_detail": "G:{{gemini}} C:{{codex}} Cl:{{claude}} O:{{openai}}",
    "oauth_credentials": "OAuth Credentials",
    "usage_overview": "Usage Overview",
    "total_requests": "Total Requests",
    "total_tokens": "Total Tokens",
    "rpm_30min": "RPM (30min)",
    "tpm_30min": "TPM (30min)",
    "models_used": "Models Used",
    "no_usage_data": "No usage data available",
    "view_detailed_usage": "View Detailed Stats",
    "edit_settings": "Edit Settings",
    "available_models": "Available Models",
    "available_models_desc": "Total models from all providers"
  },
  "basic_settings": {
    "title": "Basic Settings",
    "debug_title": "Debug Mode",
    "debug_enable": "Enable Debug Mode",
    "proxy_title": "Proxy Settings",
    "proxy_url_label": "Proxy URL:",
    "proxy_url_placeholder": "e.g.: socks5://user:pass@127.0.0.1:1080/",
    "proxy_update": "Update",
    "proxy_clear": "Clear",
    "retry_title": "Request Retry",
    "retry_count_label": "Retry Count:",
    "retry_update": "Update",
    "quota_title": "Quota Exceeded Behavior",
    "quota_switch_project": "Auto Switch Project",
    "quota_switch_preview": "Switch to Preview Model",
    "usage_statistics_title": "Usage Statistics",
    "usage_statistics_enable": "Enable usage statistics",
    "logging_title": "Logging",
    "logging_to_file_enable": "Enable logging to file",
    "logs_max_total_size_title": "Log Size Limit",
    "logs_max_total_size_label": "Total log size cap (MB):",
    "logs_max_total_size_hint": "Set to 0 to disable the limit.",
    "logs_max_total_size_update": "Update",
    "request_log_title": "Request Logging",
    "request_log_enable": "Enable request logging",
    "request_log_warning": "Keep this off unless you need detailed troubleshooting.",
    "force_model_prefix_enable": "Force model prefix",
    "ws_auth_title": "WebSocket Authentication",
    "ws_auth_enable": "Require auth for /ws/*",
    "routing_title": "Routing Strategy",
    "routing_strategy_label": "Routing strategy:",
    "routing_strategy_hint": "round-robin cycles through keys; fill-first prioritizes the first available key.",
    "routing_strategy_update": "Update",
    "routing_strategy_round_robin": "round-robin (cycle)",
    "routing_strategy_fill_first": "fill-first (prioritize)"
  },
  "api_keys": {
    "title": "API Keys Management",
    "proxy_auth_title": "Proxy Service Authentication Keys",
    "add_button": "Add Key",
    "empty_title": "No API Keys",
    "empty_desc": "Click the button above to add the first key",
    "item_title": "API Key",
    "add_modal_title": "Add API Key",
    "add_modal_key_label": "API Key:",
    "add_modal_key_placeholder": "Please enter API key",
    "edit_modal_title": "Edit API Key",
    "edit_modal_key_label": "API Key:",
    "delete_confirm": "Are you sure you want to delete this API key?"
  },
  "ai_providers": {
    "title": "AI Providers Configuration",
    "gemini_title": "Gemini API Keys",
    "gemini_add_button": "Add Key",
    "gemini_empty_title": "No Gemini Keys",
    "gemini_empty_desc": "Click the button above to add the first key",
    "gemini_item_title": "Gemini Key",
    "gemini_add_modal_title": "Add Gemini API Key",
    "gemini_add_modal_key_label": "API Keys:",
    "gemini_add_modal_key_placeholder": "Enter Gemini API key",
    "gemini_add_modal_key_hint": "Add keys one by one and optionally specify a Base URL.",
    "gemini_keys_add_btn": "Add Key",
    "gemini_base_url_label": "Base URL (Optional):",
    "gemini_base_url_placeholder": "e.g.: https://generativelanguage.googleapis.com",
    "gemini_edit_modal_title": "Edit Gemini API Key",
    "gemini_edit_modal_key_label": "API Key:",
    "gemini_delete_confirm": "Are you sure you want to delete this Gemini key?",
    "excluded_models_label": "Excluded models (optional):",
    "excluded_models_placeholder": "Comma or newline separated, e.g. gemini-1.5-pro, gemini-1.5-flash",
    "excluded_models_hint": "Leave empty to allow all models; values are trimmed and deduplicated automatically.",
    "excluded_models_count": "Excluding {{count}} models",
    "prefix_label": "Prefix (Optional):",
    "prefix_placeholder": "e.g.: team-a",
    "prefix_hint": "When set, call models as prefix/<model> to target this entry.",
    "config_toggle_label": "Enabled",
    "config_disabled_badge": "Disabled",
    "codex_title": "Codex API Configuration",
    "codex_add_button": "Add Configuration",
    "codex_empty_title": "No Codex Configuration",
    "codex_empty_desc": "Click the button above to add the first configuration",
    "codex_item_title": "Codex Configuration",
    "codex_add_modal_title": "Add Codex API Configuration",
    "codex_add_modal_key_label": "API Key:",
    "codex_add_modal_key_placeholder": "Please enter Codex API key",
    "codex_add_modal_url_label": "Base URL (Required):",
    "codex_add_modal_url_placeholder": "e.g.: https://api.example.com",
    "codex_add_modal_proxy_label": "Proxy URL (Optional):",
    "codex_add_modal_proxy_placeholder": "e.g.: socks5://proxy.example.com:1080",
    "codex_edit_modal_title": "Edit Codex API Configuration",
    "codex_edit_modal_key_label": "API Key:",
    "codex_edit_modal_url_label": "Base URL (Required):",
    "codex_edit_modal_proxy_label": "Proxy URL (Optional):",
    "codex_delete_confirm": "Are you sure you want to delete this Codex configuration?",
    "claude_title": "Claude API Configuration",
    "claude_add_button": "Add Configuration",
    "claude_empty_title": "No Claude Configuration",
    "claude_empty_desc": "Click the button above to add the first configuration",
    "claude_item_title": "Claude Configuration",
    "claude_add_modal_title": "Add Claude API Configuration",
    "claude_add_modal_key_label": "API Key:",
    "claude_add_modal_key_placeholder": "Please enter Claude API key",
    "claude_add_modal_url_label": "Base URL (Optional):",
    "claude_add_modal_url_placeholder": "e.g.: https://api.anthropic.com",
    "claude_add_modal_proxy_label": "Proxy URL (Optional):",
    "claude_add_modal_proxy_placeholder": "e.g.: socks5://proxy.example.com:1080",
    "claude_edit_modal_title": "Edit Claude API Configuration",
    "claude_edit_modal_key_label": "API Key:",
    "claude_edit_modal_url_label": "Base URL (Optional):",
    "claude_edit_modal_proxy_label": "Proxy URL (Optional):",
    "claude_delete_confirm": "Are you sure you want to delete this Claude configuration?",
    "claude_models_label": "Custom Models (Optional):",
    "claude_models_hint": "Leave empty to allow all models, or add name[, alias] entries to limit/alias them.",
    "claude_models_add_btn": "Add Model",
    "claude_models_count": "Models Count",
    "vertex_title": "Vertex API Configuration",
    "vertex_add_button": "Add Configuration",
    "vertex_empty_title": "No Vertex Configuration",
    "vertex_empty_desc": "Click the button above to add the first configuration",
    "vertex_item_title": "Vertex Configuration",
    "vertex_add_modal_title": "Add Vertex API Configuration",
    "vertex_add_modal_key_label": "API Key:",
    "vertex_add_modal_key_placeholder": "Please enter Vertex API key",
    "vertex_add_modal_url_label": "Base URL (Required):",
    "vertex_add_modal_url_placeholder": "e.g.: https://example.com/api",
    "vertex_add_modal_proxy_label": "Proxy URL (Optional):",
    "vertex_add_modal_proxy_placeholder": "e.g.: socks5://proxy.example.com:1080",
    "vertex_edit_modal_title": "Edit Vertex API Configuration",
    "vertex_edit_modal_key_label": "API Key:",
    "vertex_edit_modal_url_label": "Base URL (Required):",
    "vertex_edit_modal_proxy_label": "Proxy URL (Optional):",
    "vertex_delete_confirm": "Are you sure you want to delete this Vertex configuration?",
    "vertex_models_label": "Model aliases (alias required):",
    "vertex_models_add_btn": "Add Mapping",
    "vertex_models_hint": "Each alias needs both the original model and the alias.",
    "vertex_models_count": "Alias count",
    "ampcode_title": "Amp CLI Integration (ampcode)",
    "ampcode_modal_title": "Configure Ampcode",
    "ampcode_upstream_url_label": "Upstream URL",
    "ampcode_upstream_url_placeholder": "e.g. https://ampcode.com",
    "ampcode_upstream_url_hint": "Optional. Leave empty to use the default/auto-discovered control plane URL.",
    "ampcode_upstream_api_key_label": "Upstream API Key (Amp Official)",
    "ampcode_upstream_api_key_placeholder": "Enter sk-amp... (leave empty to keep current)",
    "ampcode_upstream_api_key_hint": "Optional. Leaving it empty will not change the current Amp official key. Use the button below to clear it.",
    "ampcode_upstream_api_key_current": "Current Amp official key: {{key}}",
    "ampcode_clear_upstream_api_key": "Clear official key",
    "ampcode_clear_upstream_api_key_confirm": "Are you sure you want to clear the Ampcode upstream API key (Amp official)?",
    "ampcode_force_model_mappings_label": "Force model mappings",
    "ampcode_force_model_mappings_hint": "When enabled, mappings override local API-key availability checks.",
    "ampcode_model_mappings_label": "Model mappings (from → to)",
    "ampcode_model_mappings_hint": "Rewrites model names in Amp requests. Leave empty to disable mappings.",
    "ampcode_model_mappings_add_btn": "Add mapping",
    "ampcode_model_mappings_from_placeholder": "from model (source)",
    "ampcode_model_mappings_to_placeholder": "to model (target)",
    "ampcode_model_mappings_count": "Mappings Count",
    "ampcode_mappings_overwrite_confirm": "Existing mappings could not be loaded. Continuing may overwrite or clear them. Continue?",
    "openai_title": "OpenAI Compatible Providers",
    "openai_add_button": "Add Provider",
    "openai_empty_title": "No OpenAI Compatible Providers",
    "openai_empty_desc": "Click the button above to add the first provider",
    "openai_add_modal_title": "Add OpenAI Compatible Provider",
    "openai_add_modal_name_label": "Provider Name:",
    "openai_add_modal_name_placeholder": "e.g.: openrouter",
    "openai_add_modal_url_label": "Base URL:",
    "openai_add_modal_url_placeholder": "e.g.: https://openrouter.ai/api/v1",
    "openai_add_modal_keys_label": "API Keys",
    "openai_edit_modal_keys_label": "API Keys",
    "openai_keys_hint": "Add each key separately with an optional proxy URL to keep things organized.",
    "openai_keys_add_btn": "Add Key",
    "openai_key_placeholder": "sk-... key",
    "openai_proxy_placeholder": "Optional proxy URL (e.g. socks5://...)",
    "openai_add_modal_models_label": "Model List (name[, alias] one per line):",
    "openai_models_hint": "Example: gpt-4o-mini or moonshotai/kimi-k2:free, kimi-k2",
    "openai_model_name_placeholder": "Model name, e.g. moonshotai/kimi-k2:free",
    "openai_model_alias_placeholder": "Model alias (optional)",
    "openai_models_add_btn": "Add Model",
    "openai_models_fetch_button": "Fetch via /models",
    "openai_models_fetch_title": "Pick Models from /models",
    "openai_models_fetch_hint": "Call the /models endpoint using the Base URL above, sending the first API key as Bearer plus custom headers.",
    "openai_models_fetch_url_label": "Request URL",
    "openai_models_fetch_refresh": "Refresh",
    "openai_models_fetch_loading": "Fetching models from /models...",
    "openai_models_fetch_empty": "No models returned. Please check the endpoint or auth.",
    "openai_models_fetch_error": "Failed to fetch models",
    "openai_models_fetch_back": "Back to edit",
    "openai_models_fetch_apply": "Add selected models",
    "openai_models_search_label": "Search models",
    "openai_models_search_placeholder": "Filter by name, alias, or description",
    "openai_models_search_empty": "No models match your search. Try a different keyword.",
    "openai_models_fetch_invalid_url": "Please enter a valid Base URL first",
    "openai_models_fetch_added": "{{count}} new models added",
    "openai_edit_modal_title": "Edit OpenAI Compatible Provider",
    "openai_edit_modal_name_label": "Provider Name:",
    "openai_edit_modal_url_label": "Base URL:",
    "openai_edit_modal_models_label": "Model List (name[, alias] one per line):",
    "openai_delete_confirm": "Are you sure you want to delete this OpenAI provider?",
    "openai_keys_count": "Keys Count",
    "openai_models_count": "Models Count",
    "openai_test_title": "Connection Test",
    "openai_test_hint": "Send a /chat/completions request with the current settings to verify availability.",
    "openai_test_model_placeholder": "Model to test",
    "openai_test_action": "Run Test",
    "openai_test_running": "Sending test request...",
    "openai_test_timeout": "Test request timed out after {{seconds}} seconds.",
    "openai_test_success": "Test succeeded. The model responded.",
    "openai_test_failed": "Test failed",
    "openai_test_select_placeholder": "Choose from current models",
    "openai_test_select_empty": "No models configured. Add models first",
    "search_placeholder": "Search configs (keys, URLs, models...)",
    "search_empty_title": "No matching configs",
    "search_empty_desc": "Try a different keyword or clear the search box"
  },
  "auth_files": {
    "title": "Auth Files Management",
    "title_section": "Auth Files",
    "description": "Manage all CLI Proxy JSON auth files here (e.g. Qwen, Gemini, Vertex). Uploading a credential immediately enables the corresponding AI integration.",
    "upload_button": "Upload File",
    "delete_all_button": "Delete All",
    "empty_title": "No Auth Files",
    "empty_desc": "Click the button above to upload the first file",
    "search_empty_title": "No matching files",
    "search_empty_desc": "Try changing the filters or clearing the search box.",
    "file_size": "Size",
    "file_modified": "Modified",
    "download_button": "Download",
    "delete_button": "Delete",
    "delete_confirm": "Are you sure you want to delete file",
    "delete_all_confirm": "Are you sure you want to delete all auth files? This operation cannot be undone!",
    "delete_filtered_confirm": "Are you sure you want to delete all {{type}} auth files? This operation cannot be undone!",
    "upload_error_json": "Only JSON files are allowed",
    "upload_error_size": "File size cannot exceed {{maxSize}}",
    "upload_success": "File uploaded successfully",
    "download_success": "File downloaded successfully",
    "delete_success": "File deleted successfully",
    "delete_all_success": "Successfully deleted",
    "delete_filtered_success": "Deleted {{count}} {{type}} auth files successfully",
    "delete_filtered_partial": "{{type}} auth files deletion finished: {{success}} succeeded, {{failed}} failed",
    "delete_filtered_none": "No deletable auth files under the current filter ({{type}})",
    "files_count": "files",
    "pagination_prev": "Previous",
    "pagination_next": "Next",
    "pagination_info": "Page {{current}} / {{total}} · {{count}} files",
    "search_label": "Search configs",
    "search_placeholder": "Filter by name, type, or provider",
    "page_size_label": "Per page",
    "page_size_unit": "items",
    "view_mode_paged": "Paged",
    "view_mode_all": "Show all",
    "too_many_files_warning": "Too many credentials. Showing all may cause performance issues, please use paged view.",
    "filter_all": "All",
    "filter_qwen": "Qwen",
    "filter_gemini": "Gemini",
    "filter_gemini-cli": "GeminiCLI",
    "filter_aistudio": "AIStudio",
    "filter_claude": "Claude",
    "filter_codex": "Codex",
    "filter_antigravity": "Antigravity",
    "filter_kiro": "Kiro",
    "filter_iflow": "iFlow",
    "filter_vertex": "Vertex",
    "filter_empty": "Empty",
    "filter_unknown": "Other",
    "type_qwen": "Qwen",
    "type_gemini": "Gemini",
    "type_gemini-cli": "GeminiCLI",
    "type_aistudio": "AIStudio",
    "type_claude": "Claude",
    "type_codex": "Codex",
    "type_antigravity": "Antigravity",
    "type_kiro": "Kiro",
    "type_iflow": "iFlow",
    "type_vertex": "Vertex",
    "type_empty": "Empty",
    "type_unknown": "Other",
    "type_virtual": "Virtual auth file",
    "models_button": "Models",
    "models_title": "Supported models",
    "models_loading": "Loading model list...",
    "models_empty": "No available models for this credential",
    "models_empty_desc": "This credential may not be loaded by the server yet, or no models are bound to it.",
    "models_unsupported": "This feature is not supported in the current version",
    "models_unsupported_desc": "Please update CLI Proxy API to the latest version and try again",
    "models_excluded_badge": "Excluded",
    "models_excluded_hint": "This model is excluded by OAuth",
    "status_toggle_label": "Enabled",
    "status_enabled_success": "\"{{name}}\" enabled",
    "status_disabled_success": "\"{{name}}\" disabled",
    "prefix_proxy_button": "Edit prefix/proxy_url",
    "prefix_proxy_loading": "Loading credential...",
    "prefix_proxy_source_label": "Credential JSON",
    "prefix_label": "prefix",
    "proxy_url_label": "proxy_url",
    "prefix_placeholder": "",
    "proxy_url_placeholder": "socks5://username:password@proxy_ip:port/",
    "prefix_proxy_invalid_json": "This credential is not a JSON object and cannot be edited.",
    "prefix_proxy_saved_success": "Updated \"{{name}}\" successfully"
  },
  "antigravity_quota": {
    "title": "Antigravity Quota",
    "empty_title": "No Antigravity Auth Files",
    "empty_desc": "Upload an Antigravity credential to view remaining quota.",
    "idle": "Not loaded. Click Refresh Button.",
    "loading": "Loading quota...",
    "load_failed": "Failed to load quota: {{message}}",
    "missing_auth_index": "Auth file missing auth_index",
    "empty_models": "No quota data available",
    "refresh_button": "Refresh Quota",
    "fetch_all": "Fetch All"
  },
  "codex_quota": {
    "title": "Codex Quota",
    "empty_title": "No Codex Auth Files",
    "empty_desc": "Upload a Codex credential to view quota.",
    "idle": "Not loaded. Click Refresh Button.",
    "loading": "Loading quota...",
    "load_failed": "Failed to load quota: {{message}}",
    "missing_auth_index": "Auth file missing auth_index",
    "missing_account_id": "Codex credential missing ChatGPT account ID",
    "empty_windows": "No quota data available",
    "no_access": "This credential has no Codex access (plan: free).",
    "refresh_button": "Refresh Quota",
    "fetch_all": "Fetch All",
    "primary_window": "5-hour limit",
    "secondary_window": "Weekly limit",
    "code_review_window": "Code review limit",
    "plan_label": "Plan",
    "plan_plus": "Plus",
    "plan_team": "Team",
    "plan_free": "Free"
  },
  "gemini_cli_quota": {
    "title": "Gemini CLI Quota",
    "empty_title": "No Gemini CLI Auth Files",
    "empty_desc": "Upload a Gemini CLI credential to view remaining quota.",
    "idle": "Not loaded. Click Refresh Button.",
    "loading": "Loading quota...",
    "load_failed": "Failed to load quota: {{message}}",
    "missing_auth_index": "Auth file missing auth_index",
    "missing_project_id": "Gemini CLI credential missing project ID",
    "empty_buckets": "No quota data available",
    "refresh_button": "Refresh Quota",
    "fetch_all": "Fetch All",
    "remaining_amount": "Remaining {{count}}"
  },
  "kiro_quota": {
    "title": "Kiro Quota",
    "empty_title": "No Kiro Auth Files",
    "empty_desc": "Upload a Kiro credential to view remaining quota.",
    "idle": "Not loaded. Click Refresh Button.",
    "loading": "Loading quota...",
    "load_failed": "Failed to load quota: {{message}}",
    "missing_auth_index": "Auth file missing auth_index",
    "empty_data": "No quota data available",
    "refresh_button": "Refresh Quota",
    "fetch_all": "Fetch All",
    "subscription_label": "Subscription",
    "base_credits_label": "Base Credits",
    "bonus_credits_label": "Bonus Credits",
    "total_credits_label": "Total Credits",
    "remaining_credits": "Remaining {{count}}"
  },
  "vertex_import": {
    "title": "Vertex JSON Login",
    "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.",
    "location_label": "Region (optional)",
    "location_placeholder": "us-central1",
    "location_hint": "Leave empty to use the default region us-central1.",
    "file_label": "Service account key JSON",
    "file_hint": "Only Google Cloud service account key JSON files are accepted.",
    "file_placeholder": "No file selected",
    "choose_file": "Choose File",
    "import_button": "Import Vertex Credential",
    "file_required": "Select a .json credential file first",
    "success": "Vertex credential imported successfully",
    "result_title": "Credential saved",
    "result_project": "Project ID",
    "result_email": "Service account",
    "result_location": "Region",
    "result_file": "Persisted file"
  },
  "oauth_excluded": {
    "title": "OAuth Excluded Models",
    "description": "Per-provider exclusions are shown as cards; click edit to adjust. Wildcards * are supported and the scope follows the auth file filter.",
    "add": "Add Exclusion",
    "add_title": "Add provider exclusion",
    "edit_title": "Edit exclusions for {{provider}}",
    "refresh": "Refresh",
    "refreshing": "Refreshing...",
    "provider_label": "Provider",
    "provider_auto": "Follow current filter",
    "provider_placeholder": "e.g. gemini-cli",
    "provider_hint": "Defaults to the current filter; pick an existing provider or type a new name.",
    "models_label": "Models to exclude",
    "models_loading": "Loading models...",
    "models_unsupported": "Current CPA version does not support fetching model lists.",
    "models_loaded": "{{count}} models loaded. Check the models to exclude.",
    "no_models_available": "No models available for this provider.",
    "save": "Save/Update",
    "saving": "Saving...",
    "save_success": "Excluded models updated",
    "save_failed": "Failed to update excluded models",
    "delete": "Delete Provider",
    "delete_confirm": "Delete the exclusion list for {{provider}}?",
    "delete_success": "Exclusion list removed",
    "delete_failed": "Failed to delete exclusion list",
    "deleting": "Deleting...",
    "no_models": "No excluded models",
    "model_count": "{{count}} models excluded",
    "list_empty_all": "No exclusions yet—use “Add Exclusion” to create one.",
    "list_empty_filtered": "No exclusions in this scope; click “Add Exclusion” to add.",
    "disconnected": "Connect to the server to view exclusions",
    "load_failed": "Failed to load exclusion list",
    "provider_required": "Please enter a provider first",
    "scope_all": "Scope: All providers",
    "scope_provider": "Scope: {{provider}}",
    "upgrade_required": "This feature requires a newer CLI Proxy API (CPA) version. Please upgrade.",
    "upgrade_required_title": "Please upgrade CLI Proxy API",
    "upgrade_required_desc": "The current server does not support the OAuth excluded models API. Please upgrade to the latest CLI Proxy API (CPA) version."
  },
  "oauth_model_alias": {
    "title": "OAuth Model Aliases",
    "add": "Add Alias",
    "add_title": "Add provider model aliases",
    "provider_label": "Provider",
    "provider_placeholder": "e.g. gemini-cli / vertex",
    "provider_hint": "Defaults to the current filter; pick an existing provider or type a new name.",
    "model_source_loading": "Loading models...",
    "model_source_unsupported": "The current CPA version does not support fetching model lists (manual input still works).",
    "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.",
    "alias_label": "Model aliases",
    "alias_name_placeholder": "Source model name",
    "alias_placeholder": "Alias (required)",
    "alias_fork_label": "Keep original",
    "add_alias": "Add alias",
    "save": "Save/Update",
    "save_success": "Model aliases updated",
    "save_failed": "Failed to update model aliases",
    "delete": "Delete Provider",
    "delete_confirm": "Delete model aliases for {{provider}}?",
    "delete_success": "Model aliases removed",
    "delete_failed": "Failed to delete model aliases",
    "no_models": "No model aliases",
    "model_count": "{{count}} aliases",
    "list_empty_all": "No model aliases yet—use “Add Alias” to create one.",
    "provider_required": "Please enter a provider first",
    "upgrade_required": "This feature requires a newer CLI Proxy API (CPA) version. Please upgrade.",
    "upgrade_required_title": "Please upgrade CLI Proxy API",
    "upgrade_required_desc": "The current server does not support the OAuth model aliases API. Please upgrade to the latest CLI Proxy API (CPA) version."
  },
  "auth_login": {
    "codex_oauth_title": "Codex OAuth",
    "codex_oauth_button": "Start Codex Login",
    "codex_oauth_hint": "Login to Codex service through OAuth flow, automatically obtain and save authentication files.",
    "codex_oauth_url_label": "Authorization URL:",
    "codex_open_link": "Open Link",
    "codex_copy_link": "Copy Link",
    "codex_oauth_status_waiting": "Waiting for authentication...",
    "codex_oauth_status_success": "Authentication successful!",
    "codex_oauth_status_error": "Authentication failed:",
    "codex_oauth_start_error": "Failed to start Codex OAuth:",
    "codex_oauth_polling_error": "Failed to check authentication status:",
    "anthropic_oauth_title": "Anthropic OAuth",
    "anthropic_oauth_button": "Start Anthropic Login",
    "anthropic_oauth_hint": "Login to Anthropic (Claude) service through OAuth flow, automatically obtain and save authentication files.",
    "anthropic_oauth_url_label": "Authorization URL:",
    "anthropic_open_link": "Open Link",
    "anthropic_copy_link": "Copy Link",
    "anthropic_oauth_status_waiting": "Waiting for authentication...",
    "anthropic_oauth_status_success": "Authentication successful!",
    "anthropic_oauth_status_error": "Authentication failed:",
    "anthropic_oauth_start_error": "Failed to start Anthropic OAuth:",
    "anthropic_oauth_polling_error": "Failed to check authentication status:",
    "antigravity_oauth_title": "Antigravity OAuth",
    "antigravity_oauth_button": "Start Antigravity Login",
    "antigravity_oauth_hint": "Login to Antigravity service (Google account) through OAuth flow, automatically obtain and save authentication files.",
    "antigravity_oauth_url_label": "Authorization URL:",
    "antigravity_open_link": "Open Link",
    "antigravity_copy_link": "Copy Link",
    "antigravity_oauth_status_waiting": "Waiting for authentication...",
    "antigravity_oauth_status_success": "Authentication successful!",
    "antigravity_oauth_status_error": "Authentication failed:",
    "antigravity_oauth_start_error": "Failed to start Antigravity OAuth:",
    "antigravity_oauth_polling_error": "Failed to check authentication status:",
    "gemini_cli_oauth_title": "Gemini CLI OAuth",
    "gemini_cli_oauth_button": "Start Gemini CLI Login",
    "gemini_cli_oauth_hint": "Login to Google Gemini CLI service through OAuth flow, automatically obtain and save authentication files.",
    "gemini_cli_project_id_label": "Google Cloud Project ID (Optional):",
    "gemini_cli_project_id_placeholder": "Leave blank to auto-select first available project",
    "gemini_cli_project_id_hint": "Optional. If not provided, the system will automatically select the first available project from your account.",
    "gemini_cli_project_id_required": "Please enter a Google Cloud project ID.",
    "gemini_cli_oauth_url_label": "Authorization URL:",
    "gemini_cli_open_link": "Open Link",
    "gemini_cli_copy_link": "Copy Link",
    "gemini_cli_oauth_status_waiting": "Waiting for authentication...",
    "gemini_cli_oauth_status_success": "Authentication successful!",
    "gemini_cli_oauth_status_error": "Authentication failed:",
    "gemini_cli_oauth_start_error": "Failed to start Gemini CLI OAuth:",
    "gemini_cli_oauth_polling_error": "Failed to check authentication status:",
    "qwen_oauth_title": "Qwen OAuth",
    "qwen_oauth_button": "Start Qwen Login",
    "qwen_oauth_hint": "Login to Qwen service through device authorization flow, automatically obtain and save authentication files.",
    "qwen_oauth_url_label": "Authorization URL:",
    "qwen_open_link": "Open Link",
    "qwen_copy_link": "Copy Link",
    "qwen_oauth_status_waiting": "Waiting for authentication...",
    "qwen_oauth_status_success": "Authentication successful!",
    "qwen_oauth_status_error": "Authentication failed:",
    "qwen_oauth_start_error": "Failed to start Qwen OAuth:",
    "qwen_oauth_polling_error": "Failed to check authentication status:",
    "oauth_callback_label": "Callback URL",
    "oauth_callback_placeholder": "http://localhost:1455/auth/callback?code=...&state=...",
    "oauth_callback_hint": "Remote browser mode: after the provider redirects to http://localhost:..., copy the full URL and submit it here.",
    "oauth_callback_button": "Submit Callback URL",
    "oauth_callback_required": "Please paste the full redirect URL first.",
    "oauth_callback_success": "Callback URL submitted. Continue waiting for authentication.",
    "oauth_callback_error": "Failed to submit callback URL:",
    "oauth_callback_upgrade_hint": "Please update CLI Proxy API or check the connection.",
    "oauth_callback_status_success": "Callback URL submitted, waiting for authentication...",
    "oauth_callback_status_error": "Callback URL submission failed:",
    "missing_state": "Unable to retrieve authentication state parameter",
    "iflow_oauth_title": "iFlow OAuth",
    "iflow_oauth_button": "Start iFlow Login",
    "iflow_oauth_hint": "Login to iFlow service through OAuth flow, automatically obtain and save authentication files.",
    "iflow_oauth_url_label": "Authorization URL:",
    "iflow_open_link": "Open Link",
    "iflow_copy_link": "Copy Link",
    "iflow_oauth_status_waiting": "Waiting for authentication...",
    "iflow_oauth_status_success": "Authentication successful!",
    "iflow_oauth_status_error": "Authentication failed:",
    "iflow_oauth_start_error": "Failed to start iFlow OAuth:",
    "iflow_oauth_polling_error": "Failed to check authentication status:",
    "iflow_cookie_title": "iFlow Cookie Login",
    "iflow_cookie_label": "Cookie Value:",
    "iflow_cookie_placeholder": "Enter the BXAuth value, starting with BXAuth=",
    "iflow_cookie_hint": "Submit an existing cookie to finish login without opening the authorization link; the credential file will be saved automatically.",
    "iflow_cookie_key_hint": "Note: Create a key on the platform first.",
    "iflow_cookie_button": "Submit Cookie Login",
    "iflow_cookie_status_success": "Cookie login succeeded and credentials are saved.",
    "iflow_cookie_status_error": "Cookie login failed:",
    "iflow_cookie_status_duplicate": "Duplicate config:",
    "iflow_cookie_start_error": "Failed to submit cookie login:",
    "iflow_cookie_config_duplicate": "A config file already exists (duplicate). Remove the existing file and try again if you want to re-save it.",
    "iflow_cookie_required": "Please provide the Cookie value first.",
    "iflow_cookie_result_title": "Cookie Login Result",
    "iflow_cookie_result_email": "Account",
    "iflow_cookie_result_expired": "Expires At",
    "iflow_cookie_result_path": "Saved Path",
    "iflow_cookie_result_type": "Type",
    "remote_access_disabled": "This login method is not available for remote access. Please access from localhost."
  },
  "usage_stats": {
    "title": "Usage Statistics",
    "total_requests": "Total Requests",
    "success_requests": "Success Requests",
    "failed_requests": "Failed Requests",
    "total_tokens": "Total Tokens",
    "cached_tokens": "Cached Tokens",
    "reasoning_tokens": "Reasoning Tokens",
    "rpm_30m": "RPM",
    "tpm_30m": "TPM",
    "rate_30m": "Rate (last 30 min)",
    "model_name": "Model Name",
    "model_price_settings": "Model Pricing Settings",
    "saved_prices": "Saved Prices",
    "requests_trend": "Request Trends",
    "tokens_trend": "Token Usage Trends",
    "api_details": "API Details",
    "by_hour": "By Hour",
    "by_day": "By Day",
    "refresh": "Refresh",
    "export": "Export",
    "import": "Import",
    "export_success": "Usage export downloaded",
    "import_success": "Import complete: added {{added}}, skipped {{skipped}}, total {{total}}, failed {{failed}}",
    "import_invalid": "Invalid usage export file",
    "chart_line_label_1": "Line 1",
    "chart_line_label_2": "Line 2",
    "chart_line_label_3": "Line 3",
    "chart_line_label_4": "Line 4",
    "chart_line_label_5": "Line 5",
    "chart_line_label_6": "Line 6",
    "chart_line_label_7": "Line 7",
    "chart_line_label_8": "Line 8",
    "chart_line_label_9": "Line 9",
    "chart_line_hidden": "Hide",
    "chart_line_actions_label": "Lines to display",
    "chart_line_add": "Add line",
    "chart_line_all": "All",
    "chart_line_delete": "Delete line",
    "chart_line_hint": "Show up to 9 model lines at once",
    "no_data": "No Data Available",
    "loading_error": "Loading Failed",
    "api_endpoint": "API Endpoint",
    "requests_count": "Request Count",
    "tokens_count": "Token Count",
    "models": "Model Statistics",
    "success_rate": "Success Rate",
    "total_cost": "Total Cost",
    "total_cost_hint": "Based on configured model pricing",
    "model_price_title": "Model Pricing",
    "model_price_reset": "Clear Prices",
    "model_price_model_label": "Model",
    "model_price_select_placeholder": "Choose a model",
    "model_price_select_hint": "Models come from usage details",
    "model_price_prompt": "Prompt price",
    "model_price_completion": "Completion price",
    "model_price_cache": "Cache price",
    "model_price_save": "Save Price",
    "model_price_empty": "No model prices set",
    "model_price_model": "Model",
    "model_price_saved": "Model price saved",
    "model_price_model_required": "Please choose a model to set pricing",
    "cost_trend": "Cost Overview",
    "cost_axis_label": "Cost ($)",
    "cost_need_price": "Set a model price to view cost stats",
    "cost_need_usage": "No usage data available to calculate cost",
    "cost_no_data": "No cost data yet"
  },
  "stats": {
    "success": "Success",
    "failure": "Failure"
  },
  "logs": {
    "title": "Logs Viewer",
    "refresh_button": "Refresh Logs",
    "clear_button": "Clear Logs",
    "download_button": "Download Logs",
    "error_log_button": "Select Error Log",
    "error_logs_modal_title": "Error Request Logs",
    "error_logs_description": "Pick an error request log file to download (only generated when request logging is off).",
    "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.",
    "error_logs_empty": "No error request log files found",
    "error_logs_load_error": "Failed to load error log list",
    "error_logs_size": "Size",
    "error_logs_modified": "Last modified",
    "error_logs_download": "Download",
    "error_log_download_success": "Error log downloaded successfully",
    "request_log_download_title": "Download Request Log",
    "request_log_download_confirm": "Download request log for ID {{id}}?",
    "request_log_download_success": "Request log downloaded successfully",
    "empty_title": "No Logs Available",
    "empty_desc": "When \"Enable logging to file\" is enabled, logs will be displayed here",
    "log_content": "Log Content",
    "loading": "Loading logs...",
    "load_error": "Failed to load logs",
    "clear_confirm": "Are you sure you want to clear all logs? This action cannot be undone!",
    "clear_success": "Logs cleared successfully",
    "download_success": "Logs downloaded successfully",
    "auto_refresh": "Auto Refresh",
    "auto_refresh_enabled": "Auto refresh enabled",
    "auto_refresh_disabled": "Auto refresh disabled",
    "load_more_hint": "Scroll up to load more",
    "hidden_lines": "Hidden: {{count}} lines",
    "loaded_lines": "Loaded: {{count}} lines",
    "filtered_lines": "Filtered: {{count}} lines",
    "hide_management_logs": "Hide {{prefix}} logs",
    "show_raw_logs": "Show Raw Logs",
    "show_raw_logs_hint": "Show original log text for easier multi-line copy",
    "search_placeholder": "Search logs by content or keyword",
    "search_empty_title": "No matching logs found",
    "search_empty_desc": "Try a different keyword or clear the filters.",
    "double_click_copy_hint": "Double-click to copy raw log line",
    "copy_success": "Log copied to clipboard",
    "copy_failed": "Copy failed",
    "lines": "lines",
    "removed": "Filtered",
    "upgrade_required_title": "Please Upgrade CLI Proxy API",
    "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."
  },
  "config_management": {
    "title": "Config Management",
    "editor_title": "Configuration File",
    "reload": "Reload",
    "save": "Save",
    "description": "View and edit the server-side config.yaml file. Validate the syntax before saving.",
    "status_idle": "Waiting for action",
    "status_loading": "Loading configuration...",
    "status_loaded": "Configuration loaded",
    "status_dirty": "Unsaved changes",
    "status_disconnected": "Connect to the server to load the configuration",
    "status_load_failed": "Load failed",
    "status_saving": "Saving configuration...",
    "status_saved": "Configuration saved",
    "status_save_failed": "Save failed",
    "save_success": "Configuration saved successfully",
    "error_yaml_not_supported": "Server did not return YAML. Verify the /config.yaml endpoint is available.",
    "editor_placeholder": "key: value",
    "search_placeholder": "Search config...",
    "search_button": "Search",
    "search_no_results": "No results",
    "search_prev": "Previous",
    "search_next": "Next"
  },
  "quota_management": {
    "title": "Quota Management",
    "description": "Monitor OAuth quota status for Antigravity, Codex, and Gemini CLI credentials.",
    "refresh_files": "Refresh auth files",
    "refresh_files_and_quota": "Refresh files & quota"
  },
  "system_info": {
    "title": "Management Center Info",
    "connection_status_title": "Connection Status",
    "api_status_label": "API Status:",
    "config_status_label": "Config Status:",
    "last_update_label": "Last Update:",
    "cache_data": "Cache Data",
    "real_time_data": "Real-time Data",
    "not_loaded": "Not Loaded",
    "seconds_ago": "seconds ago",
    "models_title": "Available Models",
    "models_desc": "Shows the /models response and uses saved API keys for auth automatically.",
    "models_loading": "Loading available models...",
    "models_empty": "No models returned by /models",
    "models_error": "Failed to load model list",
    "models_count": "{{count}} available models",
    "version_check_title": "Update Check",
    "version_check_desc": "Call the /latest-version endpoint to compare with the server version and see if an update is available.",
    "version_current_label": "Current version",
    "version_latest_label": "Latest version",
    "version_check_button": "Check for updates",
    "version_check_idle": "Click to check for updates",
    "version_checking": "Checking for the latest version...",
    "version_update_available": "An update is available: {{version}}",
    "version_is_latest": "You are on the latest version",
    "version_check_error": "Update check failed",
    "version_current_missing": "Server version is unavailable; cannot compare",
    "version_unknown": "Unknown",
    "quick_links_title": "Quick Links",
    "quick_links_desc": "Access project repositories and documentation for help and updates.",
    "link_main_repo": "Main Repository",
    "link_main_repo_desc": "CLI Proxy API core program source code",
    "link_webui_repo": "WebUI Repository",
    "link_webui_repo_desc": "Management Center frontend source code",
    "link_docs": "Documentation",
    "link_docs_desc": "Usage tutorials and configuration guides",
    "clear_login_title": "Local Login Data",
    "clear_login_desc": "Clear locally saved login data and sign out. Usage stats pricing settings will remain untouched.",
    "clear_login_button": "Clear login data",
    "clear_login_confirm": "Clear local login data and sign out now?"
  },
  "notification": {
    "debug_updated": "Debug settings updated",
    "proxy_updated": "Proxy settings updated",
    "proxy_cleared": "Proxy settings cleared",
    "retry_updated": "Retry settings updated",
    "quota_switch_project_updated": "Project switch settings updated",
    "quota_switch_preview_updated": "Preview model switch settings updated",
    "usage_statistics_updated": "Usage statistics settings updated",
    "logging_to_file_updated": "Logging settings updated",
    "logs_max_total_size_updated": "Log size limit updated",
    "request_log_updated": "Request logging setting updated",
    "force_model_prefix_updated": "Model prefix setting updated",
    "ws_auth_updated": "WebSocket authentication setting updated",
    "routing_strategy_updated": "Routing strategy updated",
    "login_storage_cleared": "Local login data cleared",
    "api_key_added": "API key added successfully",
    "api_key_updated": "API key updated successfully",
    "api_key_deleted": "API key deleted successfully",
    "api_key_invalid_chars": "API key can only contain letters, numbers, and symbols",
    "gemini_key_added": "Gemini key added successfully",
    "gemini_key_updated": "Gemini key updated successfully",
    "gemini_key_deleted": "Gemini key deleted successfully",
    "gemini_multi_input_required": "Please enter at least one Gemini key",
    "gemini_multi_failed": "Gemini bulk add failed",
    "gemini_multi_summary": "Gemini bulk add finished: {{success}} added, {{skipped}} skipped, {{failed}} failed",
    "codex_config_added": "Codex configuration added successfully",
    "codex_config_updated": "Codex configuration updated successfully",
    "codex_config_deleted": "Codex configuration deleted successfully",
    "codex_base_url_required": "Please enter the Codex Base URL",
    "claude_config_added": "Claude configuration added successfully",
    "claude_config_updated": "Claude configuration updated successfully",
    "claude_config_deleted": "Claude configuration deleted successfully",
    "vertex_config_added": "Vertex configuration added successfully",
    "vertex_config_updated": "Vertex configuration updated successfully",
    "vertex_config_deleted": "Vertex configuration deleted successfully",
    "vertex_base_url_required": "Please enter the Vertex Base URL",
    "config_enabled": "Configuration enabled",
    "config_disabled": "Configuration disabled",
    "field_required": "Required fields cannot be empty",
    "openai_provider_required": "Please fill in provider name and Base URL",
    "openai_provider_added": "OpenAI provider added successfully",
    "openai_provider_updated": "OpenAI provider updated successfully",
    "openai_provider_deleted": "OpenAI provider deleted successfully",
    "ampcode_updated": "Ampcode configuration updated",
    "ampcode_upstream_api_key_cleared": "Ampcode upstream API key override cleared",
    "openai_model_name_required": "Model name is required",
    "openai_test_url_required": "Please provide a valid Base URL before testing",
    "openai_test_key_required": "Please add at least one API key before testing",
    "openai_test_model_required": "Please select a model to test",
    "data_refreshed": "Data refreshed successfully",
    "connection_required": "Please establish connection first",
    "refresh_failed": "Refresh failed",
    "update_failed": "Update failed",
    "add_failed": "Add failed",
    "delete_failed": "Delete failed",
    "upload_failed": "Upload failed",
    "download_failed": "Download failed",
    "login_failed": "Login failed",
    "please_enter": "Please enter",
    "please_fill": "Please fill",
    "provider_name_url": "provider name and Base URL",
    "api_key": "API key",
    "gemini_api_key": "Gemini API key",
    "codex_api_key": "Codex API key",
    "claude_api_key": "Claude API key",
    "link_copied": "Link copied to clipboard"
  },
  "language": {
    "switch": "Language",
    "chinese": "中文",
    "english": "English"
  },
  "theme": {
    "switch": "Theme",
    "light": "Light",
    "dark": "Dark",
    "switch_to_light": "Switch to light mode",
    "switch_to_dark": "Switch to dark mode",
    "auto": "Follow system"
  },
  "sidebar": {
    "toggle_expand": "Expand sidebar",
    "toggle_collapse": "Collapse sidebar"
  },
  "footer": {
    "api_version": "CLI Proxy API Version",
    "build_date": "Build Time",
    "version": "Management UI Version",
    "author": "Author"
  },
  "monitor": {
    "title": "Monitor Center",
    "time_range": "Time Range",
    "today": "Today",
    "last_n_days": "Last {{n}} Days",
    "api_filter": "API Query",
    "api_filter_placeholder": "Query API data",
    "apply": "Apply",
    "no_data": "No data available",
    "requests": "Requests",
    "kpi": {
      "requests": "Requests",
      "success": "Success",
      "failed": "Failed",
      "rate": "Success Rate",
      "tokens": "Tokens",
      "input": "Input",
      "output": "Output",
      "reasoning": "Reasoning",
      "cached": "Cached",
      "avg_tpm": "Avg TPM",
      "avg_rpm": "Avg RPM",
      "avg_rpd": "Avg RPD",
      "tokens_per_minute": "Tokens per minute",
      "requests_per_minute": "Requests per minute",
      "requests_per_day": "Requests per day"
    },
    "distribution": {
      "title": "Model Usage Distribution",
      "by_requests": "By Requests",
      "by_tokens": "By Tokens",
      "requests": "Requests",
      "tokens": "Tokens",
      "request_share": "Request Share",
      "token_share": "Token Share"
    },
    "trend": {
      "title": "Daily Usage Trend",
      "subtitle": "Requests and Token usage trend",
      "requests": "Requests",
      "input_tokens": "Input Tokens",
      "output_tokens": "Output Tokens",
      "reasoning_tokens": "Reasoning Tokens",
      "cached_tokens": "Cached Tokens"
    },
    "hourly": {
      "last_6h": "Last 6 Hours",
      "last_12h": "Last 12 Hours",
      "last_24h": "Last 24 Hours",
      "all": "All",
      "requests": "Requests",
      "success_rate": "Success Rate"
    },
    "hourly_model": {
      "title": "Hourly Model Request Distribution",
      "models": "Models"
    },
    "hourly_token": {
      "title": "Hourly Token Usage",
      "subtitle": "By Hour",
      "total": "Total Tokens",
      "input": "Input",
      "output": "Output",
      "reasoning": "Reasoning",
      "cached": "Cached"
    },
    "channel": {
      "title": "Channel Statistics",
      "subtitle": "Grouped by source channel",
      "click_hint": "Click row to expand model details",
      "all_channels": "All Channels",
      "all_models": "All Models",
      "all_status": "All Status",
      "only_success": "Success Only",
      "only_failed": "Failed Only",
      "header_name": "Channel",
      "header_count": "Requests",
      "header_rate": "Success Rate",
      "header_recent": "Recent Status",
      "header_time": "Last Request",
      "model_details": "Model Details",
      "model": "Model",
      "success": "Success",
      "failed": "Failed"
    },
    "time": {
      "today": "Today",
      "last_n_days": "{{n}} Days",
      "custom": "Custom",
      "to": "to",
      "apply": "Apply"
    },
    "failure": {
      "title": "Failure Analysis",
      "subtitle": "Locate issues by source channel",
      "click_hint": "Click row to expand details",
      "no_failures": "No failure data",
      "header_name": "Channel",
      "header_count": "Failures",
      "header_time": "Last Failure",
      "header_models": "Top Failed Models",
      "all_failed_models": "All Failed Models"
    },
    "logs": {
      "title": "Request Logs",
      "total_count": "{{count}} records",
      "sort_hint": "Auto sorted by time desc",
      "scroll_hint": "Scroll to browse all data",
      "virtual_scroll_info": "Showing {{visible}} rows, {{total}} records total",
      "all_apis": "All APIs",
      "all_models": "All Models",
      "all_sources": "All Sources",
      "all_status": "All Status",
      "all_provider_types": "All Providers",
      "success": "Success",
      "failed": "Failed",
      "last_update": "Last Update",
      "manual_refresh": "Manual Refresh",
      "refresh_5s": "5s Refresh",
      "refresh_10s": "10s Refresh",
      "refresh_15s": "15s Refresh",
      "refresh_30s": "30s Refresh",
      "refresh_60s": "60s Refresh",
      "refresh_in_seconds": "Refresh in {{seconds}}s",
      "refreshing": "Refreshing...",
      "header_auth": "Auth Index",
      "header_api": "API",
      "header_request_type": "Type",
      "header_model": "Model",
      "header_source": "Source",
      "header_status": "Status",
      "header_recent": "Recent Status",
      "header_rate": "Success Rate",
      "header_count": "Requests",
      "header_input": "Input",
      "header_output": "Output",
      "header_total": "Total Tokens",
      "header_time": "Time",
      "header_actions": "Actions",
      "showing": "Showing {{start}}-{{end}} of {{total}}",
      "page_info": "Page {{current}}/{{total}}",
      "first_page": "First",
      "prev_page": "Prev",
      "next_page": "Next",
      "last_page": "Last",
      "disable": "Disable",
      "disable_model": "Disable this model",
      "disabled": "Disabled",
      "removed": "Removed",
      "disabling": "Disabling...",
      "disable_confirm_title": "Confirm Disable Model",
      "disable_error": "Disable failed",
      "disable_error_no_provider": "Cannot identify provider",
      "disable_error_provider_not_found": "Provider config not found: {{provider}}",
      "disable_not_supported": "{{provider}} provider does not support disable operation",
      "disable_unsupported_title": "Auto-disable Not Supported",
      "disable_unsupported_desc": "{{providerType}} type providers do not support auto-disable feature.",
      "disable_unsupported_guide_title": "Manual Operation Guide",
      "disable_unsupported_guide_step1": "1. Go to the \"AI Providers\" page",
      "disable_unsupported_guide_step2": "2. Find the corresponding {{providerType}} configuration",
      "disable_unsupported_guide_step3": "3. Edit the config and remove model \"{{model}}\"",
      "disable_unsupported_guide_step4": "4. Save the configuration to apply changes",
      "disable_unsupported_close": "Got it"
    }
  }
}
