{ "app": { "title": "CC Switch", "description": "Claude Code & Codex Provider Switching Tool" }, "common": { "add": "Add", "edit": "Edit", "delete": "Delete", "save": "Save", "saving": "Saving...", "cancel": "Cancel", "confirm": "Confirm", "close": "Close", "done": "Done", "settings": "Settings", "about": "About", "version": "Version", "loading": "Loading...", "success": "Success", "error": "Error", "unknown": "Unknown", "enterValidValue": "Please enter a valid value", "clear": "Clear", "toggleTheme": "Toggle theme" }, "apiKeyInput": { "placeholder": "Enter API Key", "show": "Show API Key", "hide": "Hide API Key" }, "jsonEditor": { "mustBeObject": "Configuration must be a JSON object, not an array or other type", "invalidJson": "Invalid JSON format" }, "claudeConfig": { "configLabel": "Claude Code settings.json (JSON) *", "writeCommonConfig": "Write Common Config", "editCommonConfig": "Edit Common Config", "editCommonConfigTitle": "Edit Common Config Snippet", "commonConfigHint": "This snippet will be merged into settings.json when 'Write Common Config' is checked", "fullSettingsHint": "Full Claude Code settings.json content" }, "header": { "viewOnGithub": "View on GitHub", "toggleDarkMode": "Switch to Dark Mode", "toggleLightMode": "Switch to Light Mode", "addProvider": "Add Provider", "switchToChinese": "Switch to Chinese", "switchToEnglish": "Switch to English", "enterEditMode": "Enter Edit Mode", "exitEditMode": "Exit Edit Mode" }, "provider": { "noProviders": "No providers added yet", "noProvidersDescription": "Click the \"Add Provider\" button in the top right to configure your first API provider", "currentlyUsing": "Currently Using", "enable": "Enable", "inUse": "In Use", "editProvider": "Edit Provider", "editProviderHint": "Configuration will be applied to the current provider immediately after update.", "deleteProvider": "Delete Provider", "addNewProvider": "Add New Provider", "addClaudeProvider": "Add Claude Code Provider", "addCodexProvider": "Add Codex Provider", "addProviderHint": "Fill in the information to quickly switch providers in the list.", "editClaudeProvider": "Edit Claude Code Provider", "editCodexProvider": "Edit Codex Provider", "configError": "Configuration Error", "notConfigured": "Not configured for official website", "applyToClaudePlugin": "Apply to Claude plugin", "removeFromClaudePlugin": "Remove from Claude plugin", "dragToReorder": "Drag to reorder", "dragHandle": "Drag to reorder", "duplicate": "Duplicate", "sortUpdateFailed": "Failed to update sort order", "configureUsage": "Configure usage query", "name": "Provider Name", "namePlaceholder": "e.g., Claude Official", "websiteUrl": "Website URL", "configJson": "Config JSON", "writeCommonConfig": "Write common config", "editCommonConfigButton": "Edit common config", "configJsonHint": "Please fill in complete Claude Code configuration", "editCommonConfigTitle": "Edit common config snippet", "editCommonConfigHint": "Common config snippet will be merged into all providers that enable it", "addProvider": "Add Provider", "sortUpdated": "Sort order updated", "usageSaved": "Usage query configuration saved", "usageSaveFailed": "Failed to save usage query configuration" }, "notifications": { "providerAdded": "Provider added", "providerSaved": "Provider configuration saved", "providerDeleted": "Provider deleted successfully", "switchSuccess": "Switch successful! Please restart {{appName}} terminal to take effect", "switchFailed": "Switch failed, please check configuration", "autoImported": "Default provider created from existing configuration", "addFailed": "Failed to add provider: {{error}}", "saveFailed": "Save failed: {{error}}", "saveFailedGeneric": "Save failed, please try again", "appliedToClaudePlugin": "Applied to Claude plugin", "removedFromClaudePlugin": "Removed from Claude plugin", "syncClaudePluginFailed": "Sync Claude plugin failed", "updateSuccess": "Provider updated successfully", "updateFailed": "Failed to update provider: {{error}}", "deleteSuccess": "Provider deleted", "deleteFailed": "Failed to delete provider: {{error}}", "settingsSaved": "Settings saved", "settingsSaveFailed": "Failed to save settings: {{error}}" }, "confirm": { "deleteProvider": "Delete Provider", "deleteProviderMessage": "Are you sure you want to delete provider \"{{name}}\"? This action cannot be undone." }, "settings": { "title": "Settings", "general": "General", "tabGeneral": "General", "tabAdvanced": "Advanced", "language": "Language", "languageHint": "Preview interface language immediately after switching, takes effect permanently after saving.", "theme": "Theme", "themeHint": "Choose the appearance theme for the app, takes effect immediately.", "themeLight": "Light", "themeDark": "Dark", "themeSystem": "System", "importExport": "Import/Export Config", "importExportHint": "Import or export cc-switch configuration for backup or migration.", "exportConfig": "Export Config to File", "selectConfigFile": "Select Config File", "noFileSelected": "No configuration file selected.", "import": "Import", "importing": "Importing...", "importSuccess": "Import Successful!", "importFailed": "Import Failed", "syncLiveFailed": "Imported, but failed to sync to the current provider. Please reselect the provider manually.", "importPartialSuccess": "Config imported, but failed to sync to the current provider.", "importPartialHint": "Please manually reselect the provider to refresh the live configuration.", "configExported": "Config exported to:", "exportFailed": "Export failed", "selectFileFailed": "Failed to select file", "configCorrupted": "Config file may be corrupted or invalid", "backupId": "Backup ID", "autoReload": "Data will refresh automatically in 2 seconds...", "languageOptionChinese": "δΈ­ζ–‡", "languageOptionEnglish": "English", "windowBehavior": "Window Behavior", "windowBehaviorHint": "Configure window minimize and Claude plugin integration policies.", "minimizeToTray": "Minimize to tray on close", "minimizeToTrayDescription": "When checked, clicking the close button will hide to system tray, otherwise the app will exit directly.", "enableClaudePluginIntegration": "Apply to Claude Code extension", "enableClaudePluginIntegrationDescription": "When enabled, the VS Code Claude Code extension provider will switch with this app", "configDirectoryOverride": "Configuration Directory Override (Advanced)", "configDirectoryDescription": "When using Claude Code or Codex in environments like WSL, you can manually specify the configuration directory in WSL to keep provider data consistent with the main environment.", "appConfigDir": "CC-Switch Configuration Directory", "appConfigDirDescription": "Customize the storage location for CC-Switch configuration files (config.json, etc.)", "browsePlaceholderApp": "e.g., C:\\Users\\Administrator\\.cc-switch", "claudeConfigDir": "Claude Code Configuration Directory", "claudeConfigDirDescription": "Override Claude configuration directory (settings.json) and keep claude.json (MCP) alongside it.", "codexConfigDir": "Codex Configuration Directory", "codexConfigDirDescription": "Override Codex configuration directory.", "browsePlaceholderClaude": "e.g., /home//.claude", "browsePlaceholderCodex": "e.g., /home//.codex", "browseDirectory": "Browse Directory", "resetDefault": "Reset to default directory (takes effect after saving)", "checkForUpdates": "Check for Updates", "updateTo": "Update to v{{version}}", "updating": "Updating...", "checking": "Checking...", "upToDate": "Up to Date", "aboutHint": "View version information and update status.", "portableMode": "Portable mode: updates require manual download.", "updateAvailable": "New version available: {{version}}", "updateFailed": "Update installation failed, attempted to open download page.", "checkUpdateFailed": "Failed to check for updates, please try again later.", "openReleaseNotesFailed": "Failed to open release notes", "releaseNotes": "Release Notes", "viewReleaseNotes": "View release notes for this version", "viewCurrentReleaseNotes": "View current version release notes", "importFailedError": "Import config failed: {{message}}", "exportFailedError": "Export config failed:", "restartRequired": "Restart Required", "restartRequiredMessage": "Modifying the CC-Switch configuration directory requires restarting the application to take effect. Restart now?", "restartNow": "Restart Now", "restartLater": "Restart Later", "restartFailed": "Application restart failed, please manually close and reopen.", "devModeRestartHint": "Dev Mode: Automatic restart not supported, please manually restart the application.", "saving": "Saving..." }, "apps": { "claude": "Claude Code", "codex": "Codex" }, "console": { "providerSwitchReceived": "Received provider switch event:", "setupListenerFailed": "Failed to setup provider switch listener:", "updateProviderFailed": "Update provider failed:", "autoImportFailed": "Auto import default configuration failed:", "openLinkFailed": "Failed to open link:", "getVersionFailed": "Failed to get version info:", "loadSettingsFailed": "Failed to load settings:", "getConfigPathFailed": "Failed to get config path:", "getConfigDirFailed": "Failed to get config directory:", "detectPortableFailed": "Failed to detect portable mode:", "saveSettingsFailed": "Failed to save settings:", "updateFailed": "Update failed:", "checkUpdateFailed": "Check for updates failed:", "openConfigFolderFailed": "Failed to open config folder:", "selectConfigDirFailed": "Failed to select config directory:", "getDefaultConfigDirFailed": "Failed to get default config directory:", "openReleaseNotesFailed": "Failed to open release notes:" }, "providerForm": { "supplierName": "Provider Name", "supplierNameRequired": "Provider Name *", "supplierNamePlaceholder": "e.g., Anthropic Official", "websiteUrl": "Website URL", "websiteUrlPlaceholder": "https://example.com (optional)", "apiEndpoint": "API Endpoint", "apiEndpointPlaceholder": "https://your-api-endpoint.com", "codexApiEndpointPlaceholder": "https://your-api-endpoint.com/v1", "manageAndTest": "Manage & Test", "configContent": "Config Content", "useConfigWizard": "Use Configuration Wizard", "manualConfig": "Manually configure provider, requires complete configuration, or", "officialNoApiKey": "Official login does not require API Key, save directly", "codexOfficialNoApiKey": "Official does not require API Key, save directly", "codexApiKeyAutoFill": "Just fill in here, auth.json below will be auto-filled", "kimiApiKeyHint": "Fill in to get model list", "apiKeyAutoFill": "Just fill in here, config below will be auto-filled", "cnOfficialApiKeyHint": "πŸ’‘ Opensource official providers only need API Key, endpoint is preset", "aggregatorApiKeyHint": "πŸ’‘ Aggregator providers only need API Key to use", "thirdPartyApiKeyHint": "πŸ’‘ Third-party providers require both API Key and endpoint", "customApiKeyHint": "πŸ’‘ Custom configuration requires manually filling all necessary fields", "officialHint": "πŸ’‘ Official provider uses browser login, no API Key needed", "getApiKey": "Get API Key", "parameterConfig": "Parameter Config - {{name}} *", "mainModel": "Main Model (optional)", "mainModelPlaceholder": "e.g., GLM-4.6", "fastModel": "Fast Model (optional)", "fastModelPlaceholder": "e.g., GLM-4.5-Air", "modelHint": "πŸ’‘ Leave blank to use provider's default model", "apiHint": "πŸ’‘ Fill in Claude API compatible service endpoint", "codexApiHint": "πŸ’‘ Fill in service endpoint compatible with OpenAI Response format", "fillSupplierName": "Please fill in provider name", "fillConfigContent": "Please fill in configuration content", "fillParameter": "Please fill in {{label}}", "fillTemplateValue": "Please fill in {{label}}", "configJsonError": "Config JSON format error, please check syntax", "authJsonRequired": "auth.json must be a JSON object", "authJsonError": "auth.json format error, please check JSON syntax", "fillAuthJson": "Please fill in auth.json configuration", "fillApiKey": "Please fill in OPENAI_API_KEY", "visitWebsite": "Visit {{url}}", "anthropicModel": "Main Model", "anthropicSmallFastModel": "Fast Model", "modelPlaceholder": "GLM-4.6", "smallModelPlaceholder": "GLM-4.5-Air", "modelHelper": "Optional: Specify default Claude model to use, leave blank to use system default.", "categoryOfficial": "Official", "categoryCnOfficial": "Opensource Official", "categoryAggregation": "Aggregation", "categoryThirdParty": "Third Party" }, "endpointTest": { "title": "API Endpoint Management", "endpoints": "endpoints", "autoSelect": "Auto Select", "testSpeed": "Test", "testing": "Testing", "addEndpointPlaceholder": "https://api.example.com", "done": "Done", "noEndpoints": "No endpoints", "failed": "Failed", "enterValidUrl": "Please enter a valid URL", "invalidUrlFormat": "Invalid URL format", "onlyHttps": "Only HTTP/HTTPS supported", "urlExists": "This URL already exists", "saveFailed": "Save failed, please try again", "loadEndpointsFailed": "Failed to load custom endpoints:", "addEndpointFailed": "Failed to add custom endpoint:", "removeEndpointFailed": "Failed to remove custom endpoint:", "removeFailed": "Remove failed: {{error}}", "updateLastUsedFailed": "Failed to update endpoint last used time", "pleaseAddEndpoint": "Please add an endpoint first", "testUnavailable": "Speed test unavailable", "noResult": "No result returned", "testFailed": "Speed test failed: {{error}}" }, "codexConfig": { "quickWizard": "Quick Configuration Wizard", "authJson": "auth.json (JSON) *", "authJsonPlaceholder": "{\n \"OPENAI_API_KEY\": \"sk-your-api-key-here\"\n}", "authJsonHint": "Codex auth.json configuration content", "configToml": "config.toml (TOML)", "configTomlHint": "Codex config.toml configuration content", "writeCommonConfig": "Write Common Config", "editCommonConfig": "Edit Common Config", "editCommonConfigTitle": "Edit Codex Common Config Snippet", "commonConfigHint": "This snippet will be appended to the end of config.toml when 'Write Common Config' is checked", "wizardHint": "Enter key parameters, the system will automatically generate standard auth.json and config.toml configuration.", "apiKeyLabel": "API Key *", "apiKeyPlaceholder": "sk-your-api-key-here", "supplierNameLabel": "Provider Name *", "supplierNamePlaceholder": "e.g., Codex Official", "supplierNameHint": "Will be displayed in the provider list, can use Chinese", "supplierCodeLabel": "Provider Code (English)", "supplierCodePlaceholder": "custom (optional)", "supplierCodeHint": "Will be used as identifier in config file, defaults to custom", "apiUrlLabel": "API Request URL *", "apiUrlPlaceholder": "https://your-api-endpoint.com/v1", "websiteLabel": "Website URL", "websitePlaceholder": "https://example.com", "websiteHint": "Official website address (optional)", "modelNameLabel": "Model Name *", "modelNamePlaceholder": "gpt-5-codex", "configPreview": "Configuration Preview", "applyConfig": "Apply Configuration" }, "providerPreset": { "label": "Provider Preset", "custom": "Custom Configuration", "other": "Other", "hint": "You can continue to adjust the fields below after selecting a preset." }, "usage": { "queryFailed": "Query failed", "refreshUsage": "Refresh usage", "planUsage": "Plan usage", "invalid": "Expired", "total": "Total:", "used": "Used:", "remaining": "Remaining:" }, "usageScript": { "title": "Configure Usage Query", "enableUsageQuery": "Enable usage query", "presetTemplate": "Preset template", "queryScript": "Query script (JavaScript)", "timeoutSeconds": "Timeout (seconds)", "scriptHelp": "Script writing instructions:", "configFormat": "Configuration format:", "extractorFormat": "Extractor return format (all fields optional):", "tips": "πŸ’‘ Tips:", "testing": "Testing...", "testScript": "Test script", "format": "Format", "saveConfig": "Save config", "scriptEmpty": "Script configuration cannot be empty", "mustHaveReturn": "Script must contain return statement", "testSuccess": "Test successful!", "testFailed": "Test failed", "formatSuccess": "Format successful", "formatFailed": "Format failed", "variablesHint": "Supported variables: {{apiKey}}, {{baseUrl}} | extractor function receives API response JSON object", "fieldIsValid": "β€’ isValid: Boolean, whether plan is valid", "fieldInvalidMessage": "β€’ invalidMessage: String, reason for expiration (shown when isValid is false)", "fieldRemaining": "β€’ remaining: Number, remaining quota", "fieldUnit": "β€’ unit: String, unit (e.g., \"USD\")", "fieldPlanName": "β€’ planName: String, plan name", "fieldTotal": "β€’ total: Number, total quota", "fieldUsed": "β€’ used: Number, used quota", "fieldExtra": "β€’ extra: String, custom display text", "tip1": "β€’ Variables {{apiKey}} and {{baseUrl}} are automatically replaced", "tip2": "β€’ Extractor function runs in sandbox environment, supports ES2020+ syntax", "tip3": "β€’ Entire config must be wrapped in () to form object literal expression" }, "kimiSelector": { "modelConfig": "Model Configuration", "mainModel": "Main Model", "fastModel": "Fast Model", "refreshModels": "Refresh Model List", "pleaseSelectModel": "Please select a model", "noModels": "No models available", "fillApiKeyFirst": "Please fill in API Key first", "requestFailed": "Request failed: {{error}}", "invalidData": "Invalid response data format", "fetchModelsFailed": "Failed to fetch model list", "apiKeyHint": "πŸ’‘ Fill in API Key to automatically fetch available model list" }, "presetSelector": { "title": "Select Configuration Type", "custom": "Custom", "customDescription": "Manually configure provider, requires complete configuration", "officialDescription": "Official login, no API Key required", "presetDescription": "Use preset configuration, only API Key required" }, "mcp": { "title": "MCP Management", "claudeTitle": "Claude Code MCP Management", "codexTitle": "Codex MCP Management", "userLevelPath": "User-level MCP path", "serverList": "Servers", "loading": "Loading...", "empty": "No MCP servers", "emptyDescription": "Click the button in the top right to add your first MCP server", "add": "Add MCP", "addServer": "Add MCP", "editServer": "Edit MCP", "addClaudeServer": "Add Claude Code MCP", "editClaudeServer": "Edit Claude Code MCP", "addCodexServer": "Add Codex MCP", "editCodexServer": "Edit Codex MCP", "configPath": "Config Path", "serverCount": "{{count}} MCP server(s) configured", "enabledCount": "{{count}} enabled", "template": { "fetch": "Quick Template: mcp-fetch" }, "form": { "title": "MCP Title (Unique)", "titlePlaceholder": "my-mcp-server", "name": "Display Name", "namePlaceholder": "e.g. @modelcontextprotocol/server-time", "description": "Description", "descriptionPlaceholder": "Optional description", "tags": "Tags (comma separated)", "tagsPlaceholder": "stdio, time, utility", "homepage": "Homepage", "homepagePlaceholder": "https://example.com", "docs": "Docs", "docsPlaceholder": "https://example.com/docs", "additionalInfo": "Additional Info", "jsonConfig": "JSON Configuration", "jsonPlaceholder": "{\n \"type\": \"stdio\",\n \"command\": \"uvx\",\n \"args\": [\"mcp-server-fetch\"]\n}", "tomlConfig": "TOML Configuration", "tomlPlaceholder": "type = \"stdio\"\ncommand = \"uvx\"\nargs = [\"mcp-server-fetch\"]", "useWizard": "Config Wizard", "syncOtherSide": "Mirror to {{target}}", "syncOtherSideHint": "Apply the same settings to {{target}}; existing entries with the same id will be overwritten.", "willOverwriteWarning": "Will overwrite existing config in {{target}}" }, "wizard": { "title": "MCP Configuration Wizard", "hint": "Quickly configure MCP server and auto-generate JSON configuration", "type": "Type", "typeStdio": "stdio", "typeHttp": "http", "command": "Command", "commandPlaceholder": "npx or uvx", "args": "Arguments", "argsPlaceholder": "arg1\narg2", "env": "Environment Variables", "envPlaceholder": "KEY1=value1\nKEY2=value2", "url": "URL", "urlPlaceholder": "https://api.example.com/mcp", "urlRequired": "Please enter URL", "headers": "Headers (optional)", "headersPlaceholder": "Authorization: Bearer your_token_here\nContent-Type: application/json", "preview": "Configuration Preview", "apply": "Apply Configuration" }, "id": "Identifier (unique)", "type": "Type", "command": "Command", "validateCommand": "Validate Command", "args": "Args", "argsPlaceholder": "e.g., mcp-server-fetch --help", "env": "Environment (one per line, KEY=VALUE)", "envPlaceholder": "FOO=bar\nHELLO=world", "reset": "Reset", "notice": { "restartClaude": "Written. Restart Claude to take effect." }, "msg": { "saved": "Saved", "deleted": "Deleted", "enabled": "Enabled", "disabled": "Disabled", "templateAdded": "Template added" }, "error": { "idRequired": "Please enter identifier", "idExists": "Identifier already exists. Please choose another.", "jsonInvalid": "Invalid JSON format", "tomlInvalid": "Invalid TOML format", "commandRequired": "Please enter command", "singleServerObjectRequired": "Please paste a single MCP server object (do not include top-level mcpServers)", "saveFailed": "Save failed", "deleteFailed": "Delete failed" }, "validation": { "ok": "Command available", "fail": "Command not found" }, "confirm": { "deleteTitle": "Delete MCP Server", "deleteMessage": "Are you sure you want to delete MCP server \"{{id}}\"? This action cannot be undone." }, "presets": { "title": "Select MCP Type", "enable": "Enable", "enabled": "Enabled", "installed": "Installed", "docs": "Docs", "requiresEnv": "Requires env", "fetch": { "name": "mcp-server-fetch", "description": "Universal HTTP request tool, supports GET/POST and other HTTP methods, suitable for quick API requests and web data scraping" }, "time": { "name": "@modelcontextprotocol/server-time", "description": "Time query tool providing current time, timezone conversion, and date calculation features" }, "memory": { "name": "@modelcontextprotocol/server-memory", "description": "Knowledge graph memory system supporting entities, relations, and observations to help AI remember important information from conversations" }, "sequential-thinking": { "name": "@modelcontextprotocol/server-sequential-thinking", "description": "Sequential thinking tool helping AI break down complex problems into multiple steps for deeper thinking" }, "context7": { "name": "@upstash/context7-mcp", "description": "Context7 documentation search tool providing latest library docs and code examples, with higher limits when configured with a key" } } } }