- Apply immediately on save (write or remove primaryApiKey) - Honor setting on provider switch (enabled: write for non-official, remove for official; disabled: no auto writes) - Remove per-provider Claude plugin buttons from ProviderList - Upsert primaryApiKey=any preserving other fields; respect override dir - Add zh/en i18n for the new setting
346 lines
15 KiB
JSON
346 lines
15 KiB
JSON
{
|
|
"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",
|
|
"settings": "Settings",
|
|
"about": "About",
|
|
"version": "Version",
|
|
"loading": "Loading...",
|
|
"success": "Success",
|
|
"error": "Error",
|
|
"unknown": "Unknown",
|
|
"enterValidValue": "Please enter a valid value"
|
|
},
|
|
"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"
|
|
},
|
|
"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",
|
|
"deleteProvider": "Delete Provider",
|
|
"addNewProvider": "Add New Provider",
|
|
"configError": "Configuration Error",
|
|
"notConfigured": "Not configured for official website",
|
|
"applyToClaudePlugin": "Apply to Claude plugin",
|
|
"removeFromClaudePlugin": "Remove from Claude plugin"
|
|
},
|
|
"notifications": {
|
|
"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",
|
|
"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"
|
|
},
|
|
"confirm": {
|
|
"deleteProvider": "Delete Provider",
|
|
"deleteProviderMessage": "Are you sure you want to delete provider \"{{name}}\"? This action cannot be undone."
|
|
},
|
|
"settings": {
|
|
"title": "Settings",
|
|
"general": "General",
|
|
"language": "Language",
|
|
"importExport": "Import/Export Config",
|
|
"exportConfig": "Export Config to File",
|
|
"selectConfigFile": "Select Config File",
|
|
"import": "Import",
|
|
"importing": "Importing...",
|
|
"importSuccess": "Import Successful!",
|
|
"importFailed": "Import Failed",
|
|
"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",
|
|
"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, you can use third-party providers in the VS Code Claude Code extension",
|
|
"configFileLocation": "Configuration File Location",
|
|
"openFolder": "Open Folder",
|
|
"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.",
|
|
"claudeConfigDir": "Claude Code Configuration Directory",
|
|
"codexConfigDir": "Codex Configuration Directory",
|
|
"browsePlaceholderClaude": "e.g., /home/<your-username>/.claude",
|
|
"browsePlaceholderCodex": "e.g., /home/<your-username>/.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",
|
|
"releaseNotes": "Release Notes",
|
|
"viewReleaseNotes": "View release notes for this version",
|
|
"viewCurrentReleaseNotes": "View current version release notes",
|
|
"exportFailedError": "Export config failed:"
|
|
},
|
|
"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",
|
|
"kimiApiKeyHint": "Fill in to get model list",
|
|
"apiKeyAutoFill": "Just fill in here, config below will be auto-filled",
|
|
"codexApiKeyAutoFill": "Just fill in here, auth.json below will be auto-filled",
|
|
"getApiKey": "Get API Key",
|
|
"parameterConfig": "Parameter Config - {{name}} *",
|
|
"mainModel": "Main Model (optional)",
|
|
"mainModelPlaceholder": "e.g., GLM-4.5",
|
|
"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",
|
|
"fillSupplierName": "Please fill in provider name",
|
|
"fillConfigContent": "Please fill in configuration content",
|
|
"fillParameter": "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}}"
|
|
},
|
|
"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:",
|
|
"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"
|
|
},
|
|
"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",
|
|
"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",
|
|
"configPath": "Config Path",
|
|
"serverCount": "{{count}} MCP server(s) configured",
|
|
"template": {
|
|
"fetch": "Quick Template: mcp-fetch"
|
|
},
|
|
"form": {
|
|
"title": "MCP Title (Unique)",
|
|
"titlePlaceholder": "my-mcp-server",
|
|
"description": "Description",
|
|
"descriptionPlaceholder": "Optional description",
|
|
"jsonConfig": "JSON Configuration",
|
|
"jsonPlaceholder": "{\n \"type\": \"stdio\",\n \"command\": \"uvx\",\n \"args\": [\"mcp-server-fetch\"]\n}",
|
|
"useWizard": "Config Wizard"
|
|
},
|
|
"wizard": {
|
|
"title": "MCP Configuration Wizard",
|
|
"hint": "Quickly configure MCP server and auto-generate JSON configuration",
|
|
"type": "Type",
|
|
"command": "Command",
|
|
"commandPlaceholder": "uvx",
|
|
"args": "Arguments (one per line)",
|
|
"argsPlaceholder": "mcp-server-fetch\n--config config.json",
|
|
"cwd": "Working Directory",
|
|
"cwdPlaceholder": "/path/to/project",
|
|
"env": "Environment Variables",
|
|
"envPlaceholder": "KEY=VALUE\n(one per line)",
|
|
"url": "URL",
|
|
"urlPlaceholder": "https://api.example.com/mcp",
|
|
"urlRequired": "Please enter URL",
|
|
"headers": "Headers (optional)",
|
|
"headersPlaceholder": "Authorization: Bearer token\nContent-Type: application/json",
|
|
"preview": "Configuration Preview",
|
|
"apply": "Apply Configuration"
|
|
},
|
|
"id": "Identifier (unique)",
|
|
"type": "Type",
|
|
"cwd": "Working Directory (optional)",
|
|
"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",
|
|
"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": "Presets",
|
|
"enable": "Enable",
|
|
"enabled": "Enabled",
|
|
"installed": "Installed",
|
|
"docs": "Docs",
|
|
"requiresEnv": "Requires env"
|
|
}
|
|
}
|
|
}
|