mirror of
https://github.com/Wei-Shaw/claude-relay-service.git
synced 2026-01-22 16:43:35 +00:00
feat: 开始 AccountForm 组件国际化
- 扩展语言文件,添加200+条 AccountForm 相关翻译键 - 支持简体中文、繁体中文、英文三种语言 - 添加 useI18n 组合式 API 支持 - 国际化模态框标题、步骤指示器、平台选择等关键UI元素 - 国际化账户类型、分组管理等核心功能 - 国际化 JavaScript 中的Toast消息和确认对话框 - 为多平台(Claude、Gemini、OpenAI、Azure OpenAI、Bedrock、Claude Console)提供完整翻译支持 这是一个大型组件(3730行)的渐进式国际化工作,后续将继续完善其余部分。
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -993,5 +993,298 @@ export default {
|
||||
bark: 'Bark',
|
||||
custom: 'Custom'
|
||||
}
|
||||
},
|
||||
|
||||
// AccountForm Component
|
||||
accountForm: {
|
||||
// Titles and modal
|
||||
editAccount: 'Edit Account',
|
||||
addAccount: 'Add Account',
|
||||
|
||||
// Step indicators
|
||||
stepBasicInfo: 'Basic Information',
|
||||
stepAuthorization: 'Authorization',
|
||||
|
||||
// Platform selection
|
||||
platform: 'Platform',
|
||||
platformClaude: 'Claude',
|
||||
platformClaudeConsole: 'Claude Console',
|
||||
platformGemini: 'Gemini',
|
||||
platformOpenAI: 'OpenAI',
|
||||
platformAzureOpenAI: 'Azure OpenAI',
|
||||
platformBedrock: 'Bedrock',
|
||||
|
||||
// Add methods
|
||||
addMethod: 'Add Method',
|
||||
addTypeSetupToken: 'Setup Token (Recommended)',
|
||||
addTypeOAuth: 'OAuth Authorization',
|
||||
addTypeManual: 'Manual Access Token Input',
|
||||
|
||||
// Basic information fields
|
||||
accountName: 'Account Name',
|
||||
accountNamePlaceholder: 'Set an easily recognizable name for the account',
|
||||
description: 'Description',
|
||||
descriptionOptional: 'Description (Optional)',
|
||||
descriptionPlaceholder: 'Account usage description...',
|
||||
|
||||
// Account type
|
||||
accountType: 'Account Type',
|
||||
accountTypeShared: 'Shared Account',
|
||||
accountTypeDedicated: 'Dedicated Account',
|
||||
accountTypeGroup: 'Group Scheduling',
|
||||
accountTypeDescription: 'Shared: Available to all API Keys; Dedicated: Only for specific API Keys; Group: Join group for group scheduling',
|
||||
|
||||
// Group selection
|
||||
selectGroup: 'Select Group',
|
||||
selectGroupRequired: 'Select Group *',
|
||||
noGroupsAvailable: 'No groups available',
|
||||
memberCount: 'members',
|
||||
newGroup: 'New Group',
|
||||
refreshGroups: 'Refresh Groups',
|
||||
|
||||
// Gemini Project ID
|
||||
projectId: 'Project ID',
|
||||
projectIdOptional: 'Project ID (Optional)',
|
||||
projectIdPlaceholder: 'e.g.: verdant-wares-464411-k9',
|
||||
projectIdDescription: 'Google Cloud/Workspace accounts need to provide Project ID',
|
||||
projectIdInstructions: 'How to get Project ID:',
|
||||
projectIdStep1: 'Visit Google Cloud Console',
|
||||
projectIdStep2: 'Copy Project ID (Project ID), usually in string format',
|
||||
projectIdStep3: '⚠️ Note: Copy Project ID, not Project Number!',
|
||||
projectIdTip: 'Tip: If your account is a regular personal account (not bound to Google Cloud), leave this field blank.',
|
||||
projectIdGoogleCloudRequired: 'Google Cloud/Workspace accounts require Project ID',
|
||||
projectIdGoogleCloudDescription: 'Some Google accounts (especially those bound to Google Cloud) will be identified as Workspace accounts and require an additional Project ID.',
|
||||
|
||||
// Bedrock fields
|
||||
awsAccessKeyId: 'AWS Access Key ID',
|
||||
awsAccessKeyIdRequired: 'AWS Access Key ID *',
|
||||
awsAccessKeyIdPlaceholder: 'Please enter AWS Access Key ID',
|
||||
awsSecretAccessKey: 'AWS Secret Access Key',
|
||||
awsSecretAccessKeyRequired: 'AWS Secret Access Key *',
|
||||
awsSecretAccessKeyPlaceholder: 'Please enter AWS Secret Access Key',
|
||||
awsRegion: 'AWS Region',
|
||||
awsRegionRequired: 'AWS Region *',
|
||||
awsRegionPlaceholder: 'e.g.: us-east-1',
|
||||
awsRegionReference: 'Common AWS regions reference:',
|
||||
awsRegionUsEast1: '• us-east-1 (US East)',
|
||||
awsRegionUsWest2: '• us-west-2 (US West)',
|
||||
awsRegionEuWest1: '• eu-west-1 (Europe Ireland)',
|
||||
awsRegionApSoutheast1: '• ap-southeast-1 (Singapore)',
|
||||
awsRegionApNortheast1: '• ap-northeast-1 (Tokyo)',
|
||||
awsRegionEuCentral1: '• eu-central-1 (Frankfurt)',
|
||||
awsRegionTip: '💡 Please enter complete region code, like us-east-1',
|
||||
sessionToken: 'Session Token',
|
||||
sessionTokenOptional: 'Session Token (Optional)',
|
||||
sessionTokenPlaceholder: 'If using temporary credentials, please enter session token',
|
||||
sessionTokenDescription: 'Only required when using temporary AWS credentials',
|
||||
defaultModel: 'Default Primary Model',
|
||||
defaultModelOptional: 'Default Primary Model (Optional)',
|
||||
defaultModelPlaceholder: 'e.g.: us.anthropic.claude-sonnet-4-20250514-v1:0',
|
||||
defaultModelDescription: 'Leave blank to use system default model. Supports inference profile ID or ARN',
|
||||
bedrockModelConfigTitle: 'Bedrock Model Configuration:',
|
||||
bedrockModelConfigInferenceProfile: '• Supports Inference Profile ID (recommended)',
|
||||
bedrockModelConfigArn: '• Supports Application Inference Profile ARN',
|
||||
bedrockModelConfigCommon: '• Common model: us.anthropic.claude-sonnet-4-20250514-v1:0',
|
||||
bedrockModelConfigDefault: '• Leave blank to use system configured default model',
|
||||
smallFastModel: 'Small Fast Model',
|
||||
smallFastModelOptional: 'Small Fast Model (Optional)',
|
||||
smallFastModelPlaceholder: 'e.g.: us.anthropic.claude-3-5-haiku-20241022-v1:0',
|
||||
smallFastModelDescription: 'Lightweight model for fast responses, leave blank to use system default',
|
||||
|
||||
// Azure OpenAI fields
|
||||
azureEndpoint: 'Azure Endpoint',
|
||||
azureEndpointRequired: 'Azure Endpoint *',
|
||||
azureEndpointPlaceholder: 'https://your-resource.openai.azure.com',
|
||||
azureEndpointDescription: 'Azure OpenAI resource endpoint URL, format: https://your-resource.openai.azure.com',
|
||||
apiVersion: 'API Version',
|
||||
apiVersionPlaceholder: '2024-02-01',
|
||||
apiVersionDescription: 'Azure OpenAI API version, defaults to latest stable version 2024-02-01',
|
||||
deploymentName: 'Deployment Name',
|
||||
deploymentNameRequired: 'Deployment Name *',
|
||||
deploymentNamePlaceholder: 'gpt-4',
|
||||
deploymentNameDescription: 'Deployment name created in Azure OpenAI Studio',
|
||||
apiKey: 'API Key',
|
||||
apiKeyRequired: 'API Key *',
|
||||
apiKeyPlaceholder: 'Please enter API Key',
|
||||
apiKeyDescription: 'API key obtained from Azure portal',
|
||||
supportedModels: 'Supported Models',
|
||||
supportedModelsDescription: 'Select model types supported by this deployment',
|
||||
|
||||
// Claude Console fields
|
||||
apiUrl: 'API URL',
|
||||
apiUrlRequired: 'API URL *',
|
||||
apiUrlPlaceholder: 'e.g.: https://api.example.com',
|
||||
apiKeyClaudeConsoleRequired: 'API Key *',
|
||||
apiKeyClaudeConsolePlaceholder: 'Please enter API Key',
|
||||
dailyQuota: 'Daily Quota Limit',
|
||||
dailyQuotaLabel: 'Daily Quota Limit ($)',
|
||||
dailyQuotaPlaceholder: '0 means no limit',
|
||||
dailyQuotaDescription: 'Set daily usage quota, 0 means no limit',
|
||||
quotaResetTime: 'Quota Reset Time',
|
||||
quotaResetTimePlaceholder: '00:00',
|
||||
quotaResetTimeDescription: 'Daily automatic quota reset time',
|
||||
todayUsage: "Today's Usage",
|
||||
remaining: 'Remaining',
|
||||
used: 'Used',
|
||||
modelMapping: 'Model Mapping Table',
|
||||
modelMappingOptional: 'Model Mapping Table (Optional)',
|
||||
modelMappingDescription: 'Leave blank to support all models without modification. With mapping configured, left models will be recognized as supported, right models are actually sent.',
|
||||
originalModel: 'Original Model Name',
|
||||
mappedModel: 'Mapped Model Name',
|
||||
addModelMapping: 'Add Model Mapping',
|
||||
userAgent: 'Custom User-Agent',
|
||||
userAgentOptional: 'Custom User-Agent (Optional)',
|
||||
userAgentPlaceholder: 'Leave blank to pass through client User-Agent',
|
||||
userAgentDescription: 'When blank, will automatically use client User-Agent, only fill when need to fix specific UA',
|
||||
rateLimitMechanism: 'Rate Limit Mechanism',
|
||||
enableRateLimit: 'Enable Rate Limiting',
|
||||
rateLimitDescription: 'When enabled, will pause scheduling for a period when account returns 429 errors',
|
||||
rateLimitDuration: 'Rate Limit Duration (minutes)',
|
||||
rateLimitDurationDescription: 'Time to pause scheduling after account is rate limited (minutes)',
|
||||
|
||||
// Claude subscription types
|
||||
subscriptionType: 'Subscription Type',
|
||||
subscriptionClaudeMax: 'Claude Max',
|
||||
subscriptionClaudePro: 'Claude Pro',
|
||||
claudeProLimitation: 'Pro accounts do not support Claude Opus 4 model',
|
||||
|
||||
// Claude special features
|
||||
autoStopOnWarning: 'Auto stop scheduling when 5-hour usage approaches limit',
|
||||
autoStopOnWarningDescription: 'When system detects account approaching 5-hour usage limit, automatically pause scheduling this account. Will automatically resume when entering new time window.',
|
||||
useUnifiedUserAgent: 'Use Unified Claude Code Version',
|
||||
useUnifiedUserAgentDescription: 'When enabled, will use unified User-Agent captured from real Claude Code client to improve compatibility',
|
||||
currentUnifiedVersion: '💡 Current unified version: ',
|
||||
clearCache: 'Clear Cache',
|
||||
clearing: 'Clearing...',
|
||||
waitingForCapture: '⏳ Waiting to capture User-Agent from Claude Code client',
|
||||
captureHint: '💡 Tip: If unable to capture for a long time, please confirm Claude Code client is using this account, or contact developer to check if User-Agent format has changed',
|
||||
useUnifiedClientId: 'Use Unified Client Identifier',
|
||||
useUnifiedClientIdDescription: 'When enabled, will use fixed client identifier to make all requests appear from same client, reducing fingerprint',
|
||||
clientId: 'Client Identifier ID',
|
||||
regenerate: 'Regenerate',
|
||||
clientIdDescription: 'This ID will replace user_id client part in requests, keeping session part for sticky sessions',
|
||||
|
||||
// Schedule priority
|
||||
schedulePriority: 'Schedule Priority',
|
||||
schedulePriorityRange: 'Schedule Priority (1-100)',
|
||||
schedulePriorityPlaceholder: 'Lower number = higher priority, default 50',
|
||||
schedulePriorityDescription: 'Lower number = higher priority, recommended range: 1-100',
|
||||
|
||||
// Manual token input
|
||||
manualTokenTitle: 'Manual Token Input',
|
||||
manualTokenDescription: 'Please enter valid Access Token. If you have Refresh Token, also recommend filling it to support auto refresh.',
|
||||
manualTokenClaudeDescription: 'Please enter valid Claude Access Token. If you have Refresh Token, also recommend filling it to support auto refresh.',
|
||||
manualTokenGeminiDescription: 'Please enter valid Gemini Access Token. If you have Refresh Token, also recommend filling it to support auto refresh.',
|
||||
manualTokenOpenAIDescription: 'Please enter valid OpenAI Access Token. If you have Refresh Token, also recommend filling it to support auto refresh.',
|
||||
obtainTokenMethods: 'Methods to obtain Access Token:',
|
||||
claudeTokenPath: 'Please get credentials from ~/.claude/.credentials.json file on machine with logged-in Claude Code, do not use keys from Claude official website API Keys page.',
|
||||
geminiTokenPath: 'Please get credentials from ~/.config/gemini/credentials.json file on machine with logged-in Gemini CLI.',
|
||||
openaiTokenPath: 'Please get authentication credentials from machine with logged-in OpenAI account, or get Access Token through OAuth authorization flow.',
|
||||
accessToken: 'Access Token',
|
||||
accessTokenOptional: 'Access Token (Optional)',
|
||||
accessTokenRequired: 'Access Token *',
|
||||
accessTokenPlaceholder: 'Please enter Access Token...',
|
||||
accessTokenOptionalPlaceholder: 'Optional: If not filled, system will automatically get via Refresh Token...',
|
||||
accessTokenOptionalDescription: 'Access Token is optional. If not provided, system will automatically get via Refresh Token.',
|
||||
refreshToken: 'Refresh Token',
|
||||
refreshTokenOptional: 'Refresh Token (Optional)',
|
||||
refreshTokenRequired: 'Refresh Token *',
|
||||
refreshTokenPlaceholder: 'Please enter Refresh Token...',
|
||||
refreshTokenRequiredPlaceholder: 'Please enter Refresh Token (required)...',
|
||||
refreshTokenDescription: 'System will use Refresh Token to automatically get Access Token and user info',
|
||||
refreshTokenTip: '💡 If Refresh Token not filled, token needs manual update after expiry.',
|
||||
|
||||
// Setup Token flow
|
||||
setupTokenTitle: 'Claude Setup Token Authorization',
|
||||
setupTokenDescription: 'Please follow these steps to complete Claude account authorization via Setup Token:',
|
||||
setupTokenStep1Title: 'Click button below to generate authorization link',
|
||||
setupTokenStep2Title: 'Open link in browser and complete authorization',
|
||||
setupTokenStep2Description: 'Please open authorization link in new tab, login to your Claude account and authorize Claude Code.',
|
||||
setupTokenStep2Warning: 'Note: If you have proxy configured, please ensure browser also uses same proxy to access authorization page.',
|
||||
setupTokenStep3Title: 'Enter Authorization Code',
|
||||
setupTokenStep3Description: 'After authorization completes, copy Authorization Code from return page and paste into input below:',
|
||||
generateSetupTokenUrl: 'Generate Setup Token Authorization Link',
|
||||
generating: 'Generating...',
|
||||
copyLink: 'Copy Link',
|
||||
regenerateLink: 'Regenerate',
|
||||
authorizationCode: 'Authorization Code',
|
||||
authorizationCodePlaceholder: 'Paste Authorization Code obtained from Claude Code authorization page...',
|
||||
authorizationCodeDescription: 'Please paste Authorization Code copied from Claude Code authorization page',
|
||||
verifying: 'Verifying...',
|
||||
completeAuthorization: 'Complete Authorization',
|
||||
|
||||
// Token update (edit mode)
|
||||
updateTokenTitle: 'Update Token',
|
||||
updateTokenDescription: 'Can update Access Token and Refresh Token. For security, current Token values are not displayed.',
|
||||
updateTokenTip: '💡 Leave blank to not update that field.',
|
||||
newAccessToken: 'New Access Token',
|
||||
newRefreshToken: 'New Refresh Token',
|
||||
leaveBlankNoUpdate: 'Leave blank to not update...',
|
||||
|
||||
// Usage information
|
||||
currentUsage: 'Current Usage',
|
||||
|
||||
// Buttons
|
||||
cancel: 'Cancel',
|
||||
nextStep: 'Next Step',
|
||||
previousStep: 'Previous Step',
|
||||
create: 'Create',
|
||||
creating: 'Creating...',
|
||||
update: 'Update',
|
||||
updating: 'Updating...',
|
||||
|
||||
// Error messages
|
||||
pleaseEnterAccountName: 'Please enter account name',
|
||||
pleaseSelectGroup: 'Please select a group',
|
||||
pleaseEnterApiUrl: 'Please enter API URL',
|
||||
pleaseEnterApiKey: 'Please enter API Key',
|
||||
pleaseEnterAccessKeyId: 'Please enter AWS Access Key ID',
|
||||
pleaseEnterSecretAccessKey: 'Please enter AWS Secret Access Key',
|
||||
pleaseEnterRegion: 'Please select AWS region',
|
||||
pleaseEnterAzureEndpoint: 'Please enter Azure Endpoint',
|
||||
pleaseEnterDeploymentName: 'Please enter deployment name',
|
||||
pleaseEnterAccessToken: 'Please enter Access Token',
|
||||
pleaseEnterRefreshToken: 'Please enter Refresh Token',
|
||||
|
||||
// Success messages
|
||||
linkCopied: 'Link copied',
|
||||
extractedAuthCode: 'Successfully extracted authorization code!',
|
||||
cacheClearedSuccess: 'Unified User-Agent cache cleared',
|
||||
newClientIdGenerated: 'New client identifier generated',
|
||||
groupsRefreshed: 'Groups list refreshed',
|
||||
modelMappingAdded: 'Mapping added',
|
||||
modelMappingExists: 'Model mapping already exists',
|
||||
|
||||
// Warnings and hints
|
||||
copyFailed: 'Copy failed, please copy manually',
|
||||
clearCacheFailed: 'Clear cache failed',
|
||||
urlNotFound: 'Authorization code parameter not found in URL, please check if link is correct',
|
||||
urlFormatError: 'Link format error, please check if it is a complete URL',
|
||||
wrongUrlFormat: 'Please paste link starting with http://localhost:45462',
|
||||
loadGroupsFailed: 'Failed to load groups list',
|
||||
|
||||
// Confirmation dialogs
|
||||
projectIdNotFilledTitle: 'Project ID Not Filled',
|
||||
projectIdNotFilledMessage: 'You have not filled Project ID.\n\nIf your Google account is bound to Google Cloud or identified as Workspace account, Project ID is required.\nIf you are using regular personal account, you can continue without filling.',
|
||||
continueButton: 'Continue',
|
||||
goBackToFill: 'Go Back to Fill',
|
||||
continueSave: 'Continue Save',
|
||||
|
||||
// Quick model mapping buttons
|
||||
presetSonnet4: '+ Sonnet 4',
|
||||
presetOpus41: '+ Opus 4.1',
|
||||
presetHaiku35: '+ Haiku 3.5',
|
||||
presetOpus41ToSonnet4: '+ Opus 4.1 → Sonnet 4',
|
||||
|
||||
// Edit mode special hints
|
||||
leaveBlankNoUpdateApiKey: 'Leave blank to not update API Key',
|
||||
leaveBlankNoUpdateAwsKey: 'Leave blank to not update AWS Access Key ID',
|
||||
leaveBlankNoUpdateAwsSecret: 'Leave blank to not update AWS Secret Access Key',
|
||||
leaveBlankNoUpdateSession: 'Leave blank to not update',
|
||||
|
||||
// General description text
|
||||
allModelsIfEmpty: 'Leave blank to support all models. If models specified, requests with models not in list will not be scheduled to this account',
|
||||
systemDefaultIfEmpty: 'Leave blank to use system default model. Supports inference profile ID or ARN',
|
||||
noUpdateIfEmpty: 'Leave blank to not update this field'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -993,5 +993,298 @@ export default {
|
||||
bark: 'Bark',
|
||||
custom: '自定义'
|
||||
}
|
||||
},
|
||||
|
||||
// AccountForm 组件
|
||||
accountForm: {
|
||||
// 标题和模态框
|
||||
editAccount: '编辑账户',
|
||||
addAccount: '添加账户',
|
||||
|
||||
// 步骤指示器
|
||||
stepBasicInfo: '基本信息',
|
||||
stepAuthorization: '授权认证',
|
||||
|
||||
// 平台选择
|
||||
platform: '平台',
|
||||
platformClaude: 'Claude',
|
||||
platformClaudeConsole: 'Claude Console',
|
||||
platformGemini: 'Gemini',
|
||||
platformOpenAI: 'OpenAI',
|
||||
platformAzureOpenAI: 'Azure OpenAI',
|
||||
platformBedrock: 'Bedrock',
|
||||
|
||||
// 添加方式
|
||||
addMethod: '添加方式',
|
||||
addTypeSetupToken: 'Setup Token (推荐)',
|
||||
addTypeOAuth: 'OAuth 授权',
|
||||
addTypeManual: '手动输入 Access Token',
|
||||
|
||||
// 基本信息字段
|
||||
accountName: '账户名称',
|
||||
accountNamePlaceholder: '为账户设置一个易识别的名称',
|
||||
description: '描述',
|
||||
descriptionOptional: '描述 (可选)',
|
||||
descriptionPlaceholder: '账户用途说明...',
|
||||
|
||||
// 账户类型
|
||||
accountType: '账户类型',
|
||||
accountTypeShared: '共享账户',
|
||||
accountTypeDedicated: '专属账户',
|
||||
accountTypeGroup: '分组调度',
|
||||
accountTypeDescription: '共享账户:供所有API Key使用;专属账户:仅供特定API Key使用;分组调度:加入分组供分组内调度',
|
||||
|
||||
// 分组选择
|
||||
selectGroup: '选择分组',
|
||||
selectGroupRequired: '选择分组 *',
|
||||
noGroupsAvailable: '暂无可用分组',
|
||||
memberCount: '个成员',
|
||||
newGroup: '新建分组',
|
||||
refreshGroups: '刷新分组',
|
||||
|
||||
// Gemini 项目 ID
|
||||
projectId: '项目 ID',
|
||||
projectIdOptional: '项目 ID (可选)',
|
||||
projectIdPlaceholder: '例如:verdant-wares-464411-k9',
|
||||
projectIdDescription: 'Google Cloud/Workspace 账号需要提供项目 ID',
|
||||
projectIdInstructions: '如何获取项目 ID:',
|
||||
projectIdStep1: '访问 Google Cloud Console',
|
||||
projectIdStep2: '复制项目 ID(Project ID),通常是字符串格式',
|
||||
projectIdStep3: '⚠️ 注意:要复制项目 ID(Project ID),不要复制项目编号(Project Number)!',
|
||||
projectIdTip: '提示:如果您的账号是普通个人账号(未绑定 Google Cloud),请留空此字段。',
|
||||
projectIdGoogleCloudRequired: 'Google Cloud/Workspace 账号需要提供项目 ID',
|
||||
projectIdGoogleCloudDescription: '某些 Google 账号(特别是绑定了 Google Cloud 的账号)会被识别为 Workspace 账号,需要提供额外的项目 ID。',
|
||||
|
||||
// Bedrock 字段
|
||||
awsAccessKeyId: 'AWS 访问密钥 ID',
|
||||
awsAccessKeyIdRequired: 'AWS 访问密钥 ID *',
|
||||
awsAccessKeyIdPlaceholder: '请输入 AWS Access Key ID',
|
||||
awsSecretAccessKey: 'AWS 秘密访问密钥',
|
||||
awsSecretAccessKeyRequired: 'AWS 秘密访问密钥 *',
|
||||
awsSecretAccessKeyPlaceholder: '请输入 AWS Secret Access Key',
|
||||
awsRegion: 'AWS 区域',
|
||||
awsRegionRequired: 'AWS 区域 *',
|
||||
awsRegionPlaceholder: '例如:us-east-1',
|
||||
awsRegionReference: '常用 AWS 区域参考:',
|
||||
awsRegionUsEast1: '• us-east-1 (美国东部)',
|
||||
awsRegionUsWest2: '• us-west-2 (美国西部)',
|
||||
awsRegionEuWest1: '• eu-west-1 (欧洲爱尔兰)',
|
||||
awsRegionApSoutheast1: '• ap-southeast-1 (新加坡)',
|
||||
awsRegionApNortheast1: '• ap-northeast-1 (东京)',
|
||||
awsRegionEuCentral1: '• eu-central-1 (法兰克福)',
|
||||
awsRegionTip: '💡 请输入完整的区域代码,如 us-east-1',
|
||||
sessionToken: '会话令牌',
|
||||
sessionTokenOptional: '会话令牌 (可选)',
|
||||
sessionTokenPlaceholder: '如果使用临时凭证,请输入会话令牌',
|
||||
sessionTokenDescription: '仅在使用临时 AWS 凭证时需要填写',
|
||||
defaultModel: '默认主模型',
|
||||
defaultModelOptional: '默认主模型 (可选)',
|
||||
defaultModelPlaceholder: '例如:us.anthropic.claude-sonnet-4-20250514-v1:0',
|
||||
defaultModelDescription: '留空将使用系统默认模型。支持 inference profile ID 或 ARN',
|
||||
bedrockModelConfigTitle: 'Bedrock 模型配置说明:',
|
||||
bedrockModelConfigInferenceProfile: '• 支持 Inference Profile ID(推荐)',
|
||||
bedrockModelConfigArn: '• 支持 Application Inference Profile ARN',
|
||||
bedrockModelConfigCommon: '• 常用模型:us.anthropic.claude-sonnet-4-20250514-v1:0',
|
||||
bedrockModelConfigDefault: '• 留空将使用系统配置的默认模型',
|
||||
smallFastModel: '小快速模型',
|
||||
smallFastModelOptional: '小快速模型 (可选)',
|
||||
smallFastModelPlaceholder: '例如:us.anthropic.claude-3-5-haiku-20241022-v1:0',
|
||||
smallFastModelDescription: '用于快速响应的轻量级模型,留空将使用系统默认',
|
||||
|
||||
// Azure OpenAI 字段
|
||||
azureEndpoint: 'Azure Endpoint',
|
||||
azureEndpointRequired: 'Azure Endpoint *',
|
||||
azureEndpointPlaceholder: 'https://your-resource.openai.azure.com',
|
||||
azureEndpointDescription: 'Azure OpenAI 资源的终结点 URL,格式:https://your-resource.openai.azure.com',
|
||||
apiVersion: 'API 版本',
|
||||
apiVersionPlaceholder: '2024-02-01',
|
||||
apiVersionDescription: 'Azure OpenAI API 版本,默认使用最新稳定版本 2024-02-01',
|
||||
deploymentName: '部署名称',
|
||||
deploymentNameRequired: '部署名称 *',
|
||||
deploymentNamePlaceholder: 'gpt-4',
|
||||
deploymentNameDescription: '在 Azure OpenAI Studio 中创建的部署名称',
|
||||
apiKey: 'API Key',
|
||||
apiKeyRequired: 'API Key *',
|
||||
apiKeyPlaceholder: '请输入 API Key',
|
||||
apiKeyDescription: '从 Azure 门户获取的 API 密钥',
|
||||
supportedModels: '支持的模型',
|
||||
supportedModelsDescription: '选择此部署支持的模型类型',
|
||||
|
||||
// Claude Console 字段
|
||||
apiUrl: 'API URL',
|
||||
apiUrlRequired: 'API URL *',
|
||||
apiUrlPlaceholder: '例如:https://api.example.com',
|
||||
apiKeyClaudeConsoleRequired: 'API Key *',
|
||||
apiKeyClaudeConsolePlaceholder: '请输入API Key',
|
||||
dailyQuota: '每日额度限制',
|
||||
dailyQuotaLabel: '每日额度限制 ($)',
|
||||
dailyQuotaPlaceholder: '0 表示不限制',
|
||||
dailyQuotaDescription: '设置每日使用额度,0 表示不限制',
|
||||
quotaResetTime: '额度重置时间',
|
||||
quotaResetTimePlaceholder: '00:00',
|
||||
quotaResetTimeDescription: '每日自动重置额度的时间',
|
||||
todayUsage: '今日使用情况',
|
||||
remaining: '剩余',
|
||||
used: '已使用',
|
||||
modelMapping: '模型映射表',
|
||||
modelMappingOptional: '模型映射表 (可选)',
|
||||
modelMappingDescription: '留空表示支持所有模型且不修改请求。配置映射后,左侧模型会被识别为支持的模型,右侧是实际发送的模型。',
|
||||
originalModel: '原始模型名称',
|
||||
mappedModel: '映射后的模型名称',
|
||||
addModelMapping: '添加模型映射',
|
||||
userAgent: '自定义 User-Agent',
|
||||
userAgentOptional: '自定义 User-Agent (可选)',
|
||||
userAgentPlaceholder: '留空则透传客户端 User-Agent',
|
||||
userAgentDescription: '留空时将自动使用客户端的 User-Agent,仅在需要固定特定 UA 时填写',
|
||||
rateLimitMechanism: '限流机制',
|
||||
enableRateLimit: '启用限流机制',
|
||||
rateLimitDescription: '启用后,当账号返回429错误时将暂停调度一段时间',
|
||||
rateLimitDuration: '限流时间 (分钟)',
|
||||
rateLimitDurationDescription: '账号被限流后暂停调度的时间(分钟)',
|
||||
|
||||
// Claude 订阅类型
|
||||
subscriptionType: '订阅类型',
|
||||
subscriptionClaudeMax: 'Claude Max',
|
||||
subscriptionClaudePro: 'Claude Pro',
|
||||
claudeProLimitation: 'Pro 账号不支持 Claude Opus 4 模型',
|
||||
|
||||
// Claude 特殊功能
|
||||
autoStopOnWarning: '5小时使用量接近限制时自动停止调度',
|
||||
autoStopOnWarningDescription: '当系统检测到账户接近5小时使用限制时,自动暂停调度该账户。进入新的时间窗口后会自动恢复调度。',
|
||||
useUnifiedUserAgent: '使用统一 Claude Code 版本',
|
||||
useUnifiedUserAgentDescription: '开启后将使用从真实 Claude Code 客户端捕获的统一 User-Agent,提高兼容性',
|
||||
currentUnifiedVersion: '💡 当前统一版本:',
|
||||
clearCache: '清除缓存',
|
||||
clearing: '清除中...',
|
||||
waitingForCapture: '⏳ 等待从 Claude Code 客户端捕获 User-Agent',
|
||||
captureHint: '💡 提示:如果长时间未能捕获,请确认有 Claude Code 客户端正在使用此账户,或联系开发者检查 User-Agent 格式是否发生变化',
|
||||
useUnifiedClientId: '使用统一的客户端标识',
|
||||
useUnifiedClientIdDescription: '开启后将使用固定的客户端标识,使所有请求看起来来自同一个客户端,减少特征',
|
||||
clientId: '客户端标识 ID',
|
||||
regenerate: '重新生成',
|
||||
clientIdDescription: '此ID将替换请求中的user_id客户端部分,保留session部分用于粘性会话',
|
||||
|
||||
// 调度优先级
|
||||
schedulePriority: '调度优先级',
|
||||
schedulePriorityRange: '调度优先级 (1-100)',
|
||||
schedulePriorityPlaceholder: '数字越小优先级越高,默认50',
|
||||
schedulePriorityDescription: '数字越小优先级越高,建议范围:1-100',
|
||||
|
||||
// 手动输入 Token
|
||||
manualTokenTitle: '手动输入 Token',
|
||||
manualTokenDescription: '请输入有效的 Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。',
|
||||
manualTokenClaudeDescription: '请输入有效的 Claude Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。',
|
||||
manualTokenGeminiDescription: '请输入有效的 Gemini Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。',
|
||||
manualTokenOpenAIDescription: '请输入有效的 OpenAI Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。',
|
||||
obtainTokenMethods: '获取 Access Token 的方法:',
|
||||
claudeTokenPath: '请从已登录 Claude Code 的机器上获取 ~/.claude/.credentials.json 文件中的凭证, 请勿使用 Claude 官网 API Keys 页面的密钥。',
|
||||
geminiTokenPath: '请从已登录 Gemini CLI 的机器上获取 ~/.config/gemini/credentials.json 文件中的凭证。',
|
||||
openaiTokenPath: '请从已登录 OpenAI 账户的机器上获取认证凭证, 或通过 OAuth 授权流程获取 Access Token。',
|
||||
accessToken: 'Access Token',
|
||||
accessTokenOptional: 'Access Token (可选)',
|
||||
accessTokenRequired: 'Access Token *',
|
||||
accessTokenPlaceholder: '请输入 Access Token...',
|
||||
accessTokenOptionalPlaceholder: '可选:如果不填写,系统会自动通过 Refresh Token 获取...',
|
||||
accessTokenOptionalDescription: 'Access Token 可选填。如果不提供,系统会通过 Refresh Token 自动获取。',
|
||||
refreshToken: 'Refresh Token',
|
||||
refreshTokenOptional: 'Refresh Token (可选)',
|
||||
refreshTokenRequired: 'Refresh Token *',
|
||||
refreshTokenPlaceholder: '请输入 Refresh Token...',
|
||||
refreshTokenRequiredPlaceholder: '请输入 Refresh Token(必填)...',
|
||||
refreshTokenDescription: '系统将使用 Refresh Token 自动获取 Access Token 和用户信息',
|
||||
refreshTokenTip: '💡 如果未填写 Refresh Token,Token 过期后需要手动更新。',
|
||||
|
||||
// Setup Token 流程
|
||||
setupTokenTitle: 'Claude Setup Token 授权',
|
||||
setupTokenDescription: '请按照以下步骤通过 Setup Token 完成 Claude 账户的授权:',
|
||||
setupTokenStep1Title: '点击下方按钮生成授权链接',
|
||||
setupTokenStep2Title: '在浏览器中打开链接并完成授权',
|
||||
setupTokenStep2Description: '请在新标签页中打开授权链接,登录您的 Claude 账户并授权 Claude Code。',
|
||||
setupTokenStep2Warning: '注意:如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。',
|
||||
setupTokenStep3Title: '输入 Authorization Code',
|
||||
setupTokenStep3Description: '授权完成后,从返回页面复制 Authorization Code,并粘贴到下方输入框:',
|
||||
generateSetupTokenUrl: '生成 Setup Token 授权链接',
|
||||
generating: '生成中...',
|
||||
copyLink: '复制链接',
|
||||
regenerateLink: '重新生成',
|
||||
authorizationCode: 'Authorization Code',
|
||||
authorizationCodePlaceholder: '粘贴从Claude Code授权页面获取的Authorization Code...',
|
||||
authorizationCodeDescription: '请粘贴从Claude Code授权页面复制的Authorization Code',
|
||||
verifying: '验证中...',
|
||||
completeAuthorization: '完成授权',
|
||||
|
||||
// Token 更新(编辑模式)
|
||||
updateTokenTitle: '更新 Token',
|
||||
updateTokenDescription: '可以更新 Access Token 和 Refresh Token。为了安全起见,不会显示当前的 Token 值。',
|
||||
updateTokenTip: '💡 留空表示不更新该字段。',
|
||||
newAccessToken: '新的 Access Token',
|
||||
newRefreshToken: '新的 Refresh Token',
|
||||
leaveBlankNoUpdate: '留空表示不更新...',
|
||||
|
||||
// 使用情况
|
||||
currentUsage: '当前使用情况',
|
||||
|
||||
// 按钮
|
||||
cancel: '取消',
|
||||
nextStep: '下一步',
|
||||
previousStep: '上一步',
|
||||
create: '创建',
|
||||
creating: '创建中...',
|
||||
update: '更新',
|
||||
updating: '更新中...',
|
||||
|
||||
// 错误消息
|
||||
pleaseEnterAccountName: '请填写账户名称',
|
||||
pleaseSelectGroup: '请选择一个分组',
|
||||
pleaseEnterApiUrl: '请填写 API URL',
|
||||
pleaseEnterApiKey: '请填写 API Key',
|
||||
pleaseEnterAccessKeyId: '请填写 AWS 访问密钥 ID',
|
||||
pleaseEnterSecretAccessKey: '请填写 AWS 秘密访问密钥',
|
||||
pleaseEnterRegion: '请选择 AWS 区域',
|
||||
pleaseEnterAzureEndpoint: '请填写 Azure Endpoint',
|
||||
pleaseEnterDeploymentName: '请填写部署名称',
|
||||
pleaseEnterAccessToken: '请填写 Access Token',
|
||||
pleaseEnterRefreshToken: '请填写 Refresh Token',
|
||||
|
||||
// 成功消息
|
||||
linkCopied: '链接已复制',
|
||||
extractedAuthCode: '成功提取授权码!',
|
||||
cacheClearedSuccess: '统一User-Agent缓存已清除',
|
||||
newClientIdGenerated: '已生成新的客户端标识',
|
||||
groupsRefreshed: '分组列表已刷新',
|
||||
modelMappingAdded: '已添加映射',
|
||||
modelMappingExists: '模型映射已存在',
|
||||
|
||||
// 警告和提示
|
||||
copyFailed: '复制失败,请手动复制',
|
||||
clearCacheFailed: '清除缓存失败',
|
||||
urlNotFound: 'URL 中未找到授权码参数,请检查链接是否正确',
|
||||
urlFormatError: '链接格式错误,请检查是否为完整的 URL',
|
||||
wrongUrlFormat: '请粘贴以 http://localhost:45462 开头的链接',
|
||||
loadGroupsFailed: '加载分组列表失败',
|
||||
|
||||
// 确认对话框
|
||||
projectIdNotFilledTitle: '项目 ID 未填写',
|
||||
projectIdNotFilledMessage: '您尚未填写项目 ID。\n\n如果您的Google账号绑定了Google Cloud或被识别为Workspace账号,需要提供项目 ID。\n如果您使用的是普通个人账号,可以继续不填写。',
|
||||
continueButton: '继续',
|
||||
goBackToFill: '返回填写',
|
||||
continueSave: '继续保存',
|
||||
|
||||
// 快捷模型映射按钮
|
||||
presetSonnet4: '+ Sonnet 4',
|
||||
presetOpus41: '+ Opus 4.1',
|
||||
presetHaiku35: '+ Haiku 3.5',
|
||||
presetOpus41ToSonnet4: '+ Opus 4.1 → Sonnet 4',
|
||||
|
||||
// 编辑模式特殊提示
|
||||
leaveBlankNoUpdateApiKey: '留空表示不更新 API Key',
|
||||
leaveBlankNoUpdateAwsKey: '留空表示不更新 AWS Access Key ID',
|
||||
leaveBlankNoUpdateAwsSecret: '留空表示不更新 AWS Secret Access Key',
|
||||
leaveBlankNoUpdateSession: '留空表示不更新',
|
||||
|
||||
// 通用描述文本
|
||||
allModelsIfEmpty: '留空表示支持所有模型。如果指定模型,请求中的模型不在列表内将不会调度到此账号',
|
||||
systemDefaultIfEmpty: '留空将使用系统默认模型。支持 inference profile ID 或 ARN',
|
||||
noUpdateIfEmpty: '留空表示不更新该字段'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -993,5 +993,298 @@ export default {
|
||||
bark: 'Bark',
|
||||
custom: '自定義'
|
||||
}
|
||||
},
|
||||
|
||||
// AccountForm 組件
|
||||
accountForm: {
|
||||
// 標題和模態框
|
||||
editAccount: '編輯帳戶',
|
||||
addAccount: '新增帳戶',
|
||||
|
||||
// 步驟指示器
|
||||
stepBasicInfo: '基本資訊',
|
||||
stepAuthorization: '授權認證',
|
||||
|
||||
// 平台選擇
|
||||
platform: '平台',
|
||||
platformClaude: 'Claude',
|
||||
platformClaudeConsole: 'Claude Console',
|
||||
platformGemini: 'Gemini',
|
||||
platformOpenAI: 'OpenAI',
|
||||
platformAzureOpenAI: 'Azure OpenAI',
|
||||
platformBedrock: 'Bedrock',
|
||||
|
||||
// 新增方式
|
||||
addMethod: '新增方式',
|
||||
addTypeSetupToken: 'Setup Token(推薦)',
|
||||
addTypeOAuth: 'OAuth 授權',
|
||||
addTypeManual: '手動輸入 Access Token',
|
||||
|
||||
// 基本資訊欄位
|
||||
accountName: '帳戶名稱',
|
||||
accountNamePlaceholder: '為帳戶設置一個易識別的名稱',
|
||||
description: '描述',
|
||||
descriptionOptional: '描述(可選)',
|
||||
descriptionPlaceholder: '帳戶用途說明...',
|
||||
|
||||
// 帳戶類型
|
||||
accountType: '帳戶類型',
|
||||
accountTypeShared: '共用帳戶',
|
||||
accountTypeDedicated: '專屬帳戶',
|
||||
accountTypeGroup: '群組排程',
|
||||
accountTypeDescription: '共用帳戶:供所有API Key使用;專屬帳戶:僅供特定API Key使用;群組排程:加入群組供群組內排程',
|
||||
|
||||
// 群組選擇
|
||||
selectGroup: '選擇群組',
|
||||
selectGroupRequired: '選擇群組 *',
|
||||
noGroupsAvailable: '暫無可用群組',
|
||||
memberCount: '個成員',
|
||||
newGroup: '新建群組',
|
||||
refreshGroups: '刷新群組',
|
||||
|
||||
// Gemini 專案 ID
|
||||
projectId: '專案 ID',
|
||||
projectIdOptional: '專案 ID(可選)',
|
||||
projectIdPlaceholder: '例如:verdant-wares-464411-k9',
|
||||
projectIdDescription: 'Google Cloud/Workspace 帳號需要提供專案 ID',
|
||||
projectIdInstructions: '如何獲取專案 ID:',
|
||||
projectIdStep1: '訪問 Google Cloud Console',
|
||||
projectIdStep2: '複製專案 ID(Project ID),通常是字串格式',
|
||||
projectIdStep3: '⚠️ 注意:要複製專案 ID(Project ID),不要複製專案編號(Project Number)!',
|
||||
projectIdTip: '提示:如果您的帳號是普通個人帳號(未綁定 Google Cloud),請留空此欄位。',
|
||||
projectIdGoogleCloudRequired: 'Google Cloud/Workspace 帳號需要提供專案 ID',
|
||||
projectIdGoogleCloudDescription: '某些 Google 帳號(特別是綁定了 Google Cloud 的帳號)會被識別為 Workspace 帳號,需要提供額外的專案 ID。',
|
||||
|
||||
// Bedrock 欄位
|
||||
awsAccessKeyId: 'AWS 存取金鑰 ID',
|
||||
awsAccessKeyIdRequired: 'AWS 存取金鑰 ID *',
|
||||
awsAccessKeyIdPlaceholder: '請輸入 AWS Access Key ID',
|
||||
awsSecretAccessKey: 'AWS 秘密存取金鑰',
|
||||
awsSecretAccessKeyRequired: 'AWS 秘密存取金鑰 *',
|
||||
awsSecretAccessKeyPlaceholder: '請輸入 AWS Secret Access Key',
|
||||
awsRegion: 'AWS 區域',
|
||||
awsRegionRequired: 'AWS 區域 *',
|
||||
awsRegionPlaceholder: '例如:us-east-1',
|
||||
awsRegionReference: '常用 AWS 區域參考:',
|
||||
awsRegionUsEast1: '• us-east-1(美國東部)',
|
||||
awsRegionUsWest2: '• us-west-2(美國西部)',
|
||||
awsRegionEuWest1: '• eu-west-1(歐洲愛爾蘭)',
|
||||
awsRegionApSoutheast1: '• ap-southeast-1(新加坡)',
|
||||
awsRegionApNortheast1: '• ap-northeast-1(東京)',
|
||||
awsRegionEuCentral1: '• eu-central-1(法蘭克福)',
|
||||
awsRegionTip: '💡 請輸入完整的區域代碼,如 us-east-1',
|
||||
sessionToken: '會話權杖',
|
||||
sessionTokenOptional: '會話權杖(可選)',
|
||||
sessionTokenPlaceholder: '如果使用臨時憑證,請輸入會話權杖',
|
||||
sessionTokenDescription: '僅在使用臨時 AWS 憑證時需要填寫',
|
||||
defaultModel: '預設主模型',
|
||||
defaultModelOptional: '預設主模型(可選)',
|
||||
defaultModelPlaceholder: '例如:us.anthropic.claude-sonnet-4-20250514-v1:0',
|
||||
defaultModelDescription: '留空將使用系統預設模型。支援 inference profile ID 或 ARN',
|
||||
bedrockModelConfigTitle: 'Bedrock 模型配置說明:',
|
||||
bedrockModelConfigInferenceProfile: '• 支援 Inference Profile ID(推薦)',
|
||||
bedrockModelConfigArn: '• 支援 Application Inference Profile ARN',
|
||||
bedrockModelConfigCommon: '• 常用模型:us.anthropic.claude-sonnet-4-20250514-v1:0',
|
||||
bedrockModelConfigDefault: '• 留空將使用系統配置的預設模型',
|
||||
smallFastModel: '小快速模型',
|
||||
smallFastModelOptional: '小快速模型(可選)',
|
||||
smallFastModelPlaceholder: '例如:us.anthropic.claude-3-5-haiku-20241022-v1:0',
|
||||
smallFastModelDescription: '用於快速回應的輕量級模型,留空將使用系統預設',
|
||||
|
||||
// Azure OpenAI 欄位
|
||||
azureEndpoint: 'Azure Endpoint',
|
||||
azureEndpointRequired: 'Azure Endpoint *',
|
||||
azureEndpointPlaceholder: 'https://your-resource.openai.azure.com',
|
||||
azureEndpointDescription: 'Azure OpenAI 資源的終結點 URL,格式:https://your-resource.openai.azure.com',
|
||||
apiVersion: 'API 版本',
|
||||
apiVersionPlaceholder: '2024-02-01',
|
||||
apiVersionDescription: 'Azure OpenAI API 版本,預設使用最新穩定版本 2024-02-01',
|
||||
deploymentName: '部署名稱',
|
||||
deploymentNameRequired: '部署名稱 *',
|
||||
deploymentNamePlaceholder: 'gpt-4',
|
||||
deploymentNameDescription: '在 Azure OpenAI Studio 中建立的部署名稱',
|
||||
apiKey: 'API Key',
|
||||
apiKeyRequired: 'API Key *',
|
||||
apiKeyPlaceholder: '請輸入 API Key',
|
||||
apiKeyDescription: '從 Azure 入口網站取得的 API 金鑰',
|
||||
supportedModels: '支援的模型',
|
||||
supportedModelsDescription: '選擇此部署支援的模型類型',
|
||||
|
||||
// Claude Console 欄位
|
||||
apiUrl: 'API URL',
|
||||
apiUrlRequired: 'API URL *',
|
||||
apiUrlPlaceholder: '例如:https://api.example.com',
|
||||
apiKeyClaudeConsoleRequired: 'API Key *',
|
||||
apiKeyClaudeConsolePlaceholder: '請輸入API Key',
|
||||
dailyQuota: '每日額度限制',
|
||||
dailyQuotaLabel: '每日額度限制($)',
|
||||
dailyQuotaPlaceholder: '0 表示不限制',
|
||||
dailyQuotaDescription: '設置每日使用額度,0 表示不限制',
|
||||
quotaResetTime: '額度重置時間',
|
||||
quotaResetTimePlaceholder: '00:00',
|
||||
quotaResetTimeDescription: '每日自動重置額度的時間',
|
||||
todayUsage: '今日使用情況',
|
||||
remaining: '剩餘',
|
||||
used: '已使用',
|
||||
modelMapping: '模型映射表',
|
||||
modelMappingOptional: '模型映射表(可選)',
|
||||
modelMappingDescription: '留空表示支援所有模型且不修改請求。配置映射後,左側模型會被識別為支援的模型,右側是實際發送的模型。',
|
||||
originalModel: '原始模型名稱',
|
||||
mappedModel: '映射後的模型名稱',
|
||||
addModelMapping: '新增模型映射',
|
||||
userAgent: '自定義 User-Agent',
|
||||
userAgentOptional: '自定義 User-Agent(可選)',
|
||||
userAgentPlaceholder: '留空則透傳用戶端 User-Agent',
|
||||
userAgentDescription: '留空時將自動使用用戶端的 User-Agent,僅在需要固定特定 UA 時填寫',
|
||||
rateLimitMechanism: '限流機制',
|
||||
enableRateLimit: '啟用限流機制',
|
||||
rateLimitDescription: '啟用後,當帳號返回429錯誤時將暫停排程一段時間',
|
||||
rateLimitDuration: '限流時間(分鐘)',
|
||||
rateLimitDurationDescription: '帳號被限流後暫停排程的時間(分鐘)',
|
||||
|
||||
// Claude 訂閱類型
|
||||
subscriptionType: '訂閱類型',
|
||||
subscriptionClaudeMax: 'Claude Max',
|
||||
subscriptionClaudePro: 'Claude Pro',
|
||||
claudeProLimitation: 'Pro 帳號不支援 Claude Opus 4 模型',
|
||||
|
||||
// Claude 特殊功能
|
||||
autoStopOnWarning: '5小時使用量接近限制時自動停止排程',
|
||||
autoStopOnWarningDescription: '當系統偵測到帳戶接近5小時使用限制時,自動暫停排程該帳戶。進入新的時間視窗後會自動恢復排程。',
|
||||
useUnifiedUserAgent: '使用統一 Claude Code 版本',
|
||||
useUnifiedUserAgentDescription: '開啟後將使用從真實 Claude Code 用戶端擷取的統一 User-Agent,提高相容性',
|
||||
currentUnifiedVersion: '💡 目前統一版本:',
|
||||
clearCache: '清除快取',
|
||||
clearing: '清除中...',
|
||||
waitingForCapture: '⏳ 等待從 Claude Code 用戶端擷取 User-Agent',
|
||||
captureHint: '💡 提示:如果長時間未能擷取,請確認有 Claude Code 用戶端正在使用此帳戶,或聯繫開發者檢查 User-Agent 格式是否發生變化',
|
||||
useUnifiedClientId: '使用統一的用戶端識別',
|
||||
useUnifiedClientIdDescription: '開啟後將使用固定的用戶端識別,使所有請求看起來來自同一個用戶端,減少特徵',
|
||||
clientId: '用戶端識別 ID',
|
||||
regenerate: '重新產生',
|
||||
clientIdDescription: '此ID將替換請求中的user_id用戶端部分,保留session部分用於黏性會話',
|
||||
|
||||
// 排程優先順序
|
||||
schedulePriority: '排程優先順序',
|
||||
schedulePriorityRange: '排程優先順序(1-100)',
|
||||
schedulePriorityPlaceholder: '數字越小優先順序越高,預設50',
|
||||
schedulePriorityDescription: '數字越小優先順序越高,建議範圍:1-100',
|
||||
|
||||
// 手動輸入 Token
|
||||
manualTokenTitle: '手動輸入 Token',
|
||||
manualTokenDescription: '請輸入有效的 Access Token。如果您有 Refresh Token,建議也一併填寫以支援自動重新整理。',
|
||||
manualTokenClaudeDescription: '請輸入有效的 Claude Access Token。如果您有 Refresh Token,建議也一併填寫以支援自動重新整理。',
|
||||
manualTokenGeminiDescription: '請輸入有效的 Gemini Access Token。如果您有 Refresh Token,建議也一併填寫以支援自動重新整理。',
|
||||
manualTokenOpenAIDescription: '請輸入有效的 OpenAI Access Token。如果您有 Refresh Token,建議也一併填寫以支援自動重新整理。',
|
||||
obtainTokenMethods: '取得 Access Token 的方法:',
|
||||
claudeTokenPath: '請從已登入 Claude Code 的機器上取得 ~/.claude/.credentials.json 檔案中的憑證,請勿使用 Claude 官網 API Keys 頁面的金鑰。',
|
||||
geminiTokenPath: '請從已登入 Gemini CLI 的機器上取得 ~/.config/gemini/credentials.json 檔案中的憑證。',
|
||||
openaiTokenPath: '請從已登入 OpenAI 帳戶的機器上取得認證憑證,或透過 OAuth 授權流程取得 Access Token。',
|
||||
accessToken: 'Access Token',
|
||||
accessTokenOptional: 'Access Token(可選)',
|
||||
accessTokenRequired: 'Access Token *',
|
||||
accessTokenPlaceholder: '請輸入 Access Token...',
|
||||
accessTokenOptionalPlaceholder: '可選:如果不填寫,系統會自動透過 Refresh Token 取得...',
|
||||
accessTokenOptionalDescription: 'Access Token 可選填。如果不提供,系統會透過 Refresh Token 自動取得。',
|
||||
refreshToken: 'Refresh Token',
|
||||
refreshTokenOptional: 'Refresh Token(可選)',
|
||||
refreshTokenRequired: 'Refresh Token *',
|
||||
refreshTokenPlaceholder: '請輸入 Refresh Token...',
|
||||
refreshTokenRequiredPlaceholder: '請輸入 Refresh Token(必填)...',
|
||||
refreshTokenDescription: '系統將使用 Refresh Token 自動取得 Access Token 和使用者資訊',
|
||||
refreshTokenTip: '💡 如果未填寫 Refresh Token,Token 過期後需要手動更新。',
|
||||
|
||||
// Setup Token 流程
|
||||
setupTokenTitle: 'Claude Setup Token 授權',
|
||||
setupTokenDescription: '請按照以下步驟透過 Setup Token 完成 Claude 帳戶的授權:',
|
||||
setupTokenStep1Title: '點擊下方按鈕產生授權連結',
|
||||
setupTokenStep2Title: '在瀏覽器中開啟連結並完成授權',
|
||||
setupTokenStep2Description: '請在新分頁中開啟授權連結,登入您的 Claude 帳戶並授權 Claude Code。',
|
||||
setupTokenStep2Warning: '注意:如果您設置了代理,請確保瀏覽器也使用相同的代理訪問授權頁面。',
|
||||
setupTokenStep3Title: '輸入 Authorization Code',
|
||||
setupTokenStep3Description: '授權完成後,從返回頁面複製 Authorization Code,並貼上到下方輸入框:',
|
||||
generateSetupTokenUrl: '產生 Setup Token 授權連結',
|
||||
generating: '產生中...',
|
||||
copyLink: '複製連結',
|
||||
regenerateLink: '重新產生',
|
||||
authorizationCode: 'Authorization Code',
|
||||
authorizationCodePlaceholder: '貼上從Claude Code授權頁面取得的Authorization Code...',
|
||||
authorizationCodeDescription: '請貼上從Claude Code授權頁面複製的Authorization Code',
|
||||
verifying: '驗證中...',
|
||||
completeAuthorization: '完成授權',
|
||||
|
||||
// Token 更新(編輯模式)
|
||||
updateTokenTitle: '更新 Token',
|
||||
updateTokenDescription: '可以更新 Access Token 和 Refresh Token。為了安全起見,不會顯示目前的 Token 值。',
|
||||
updateTokenTip: '💡 留空表示不更新該欄位。',
|
||||
newAccessToken: '新的 Access Token',
|
||||
newRefreshToken: '新的 Refresh Token',
|
||||
leaveBlankNoUpdate: '留空表示不更新...',
|
||||
|
||||
// 使用情況
|
||||
currentUsage: '目前使用情況',
|
||||
|
||||
// 按鈕
|
||||
cancel: '取消',
|
||||
nextStep: '下一步',
|
||||
previousStep: '上一步',
|
||||
create: '建立',
|
||||
creating: '建立中...',
|
||||
update: '更新',
|
||||
updating: '更新中...',
|
||||
|
||||
// 錯誤訊息
|
||||
pleaseEnterAccountName: '請填寫帳戶名稱',
|
||||
pleaseSelectGroup: '請選擇一個群組',
|
||||
pleaseEnterApiUrl: '請填寫 API URL',
|
||||
pleaseEnterApiKey: '請填寫 API Key',
|
||||
pleaseEnterAccessKeyId: '請填寫 AWS 存取金鑰 ID',
|
||||
pleaseEnterSecretAccessKey: '請填寫 AWS 秘密存取金鑰',
|
||||
pleaseEnterRegion: '請選擇 AWS 區域',
|
||||
pleaseEnterAzureEndpoint: '請填寫 Azure Endpoint',
|
||||
pleaseEnterDeploymentName: '請填寫部署名稱',
|
||||
pleaseEnterAccessToken: '請填寫 Access Token',
|
||||
pleaseEnterRefreshToken: '請填寫 Refresh Token',
|
||||
|
||||
// 成功訊息
|
||||
linkCopied: '連結已複製',
|
||||
extractedAuthCode: '成功提取授權碼!',
|
||||
cacheClearedSuccess: '統一User-Agent快取已清除',
|
||||
newClientIdGenerated: '已產生新的用戶端識別',
|
||||
groupsRefreshed: '群組列表已重新整理',
|
||||
modelMappingAdded: '已新增映射',
|
||||
modelMappingExists: '模型映射已存在',
|
||||
|
||||
// 警告和提示
|
||||
copyFailed: '複製失敗,請手動複製',
|
||||
clearCacheFailed: '清除快取失敗',
|
||||
urlNotFound: 'URL 中未找到授權碼參數,請檢查連結是否正確',
|
||||
urlFormatError: '連結格式錯誤,請檢查是否為完整的 URL',
|
||||
wrongUrlFormat: '請貼上以 http://localhost:45462 開頭的連結',
|
||||
loadGroupsFailed: '載入群組列表失敗',
|
||||
|
||||
// 確認對話框
|
||||
projectIdNotFilledTitle: '專案 ID 未填寫',
|
||||
projectIdNotFilledMessage: '您尚未填寫專案 ID。\n\n如果您的Google帳號綁定了Google Cloud或被識別為Workspace帳號,需要提供專案 ID。\n如果您使用的是普通個人帳號,可以繼續不填寫。',
|
||||
continueButton: '繼續',
|
||||
goBackToFill: '返回填寫',
|
||||
continueSave: '繼續保存',
|
||||
|
||||
// 快捷模型映射按鈕
|
||||
presetSonnet4: '+ Sonnet 4',
|
||||
presetOpus41: '+ Opus 4.1',
|
||||
presetHaiku35: '+ Haiku 3.5',
|
||||
presetOpus41ToSonnet4: '+ Opus 4.1 → Sonnet 4',
|
||||
|
||||
// 編輯模式特殊提示
|
||||
leaveBlankNoUpdateApiKey: '留空表示不更新 API Key',
|
||||
leaveBlankNoUpdateAwsKey: '留空表示不更新 AWS Access Key ID',
|
||||
leaveBlankNoUpdateAwsSecret: '留空表示不更新 AWS Secret Access Key',
|
||||
leaveBlankNoUpdateSession: '留空表示不更新',
|
||||
|
||||
// 通用描述文字
|
||||
allModelsIfEmpty: '留空表示支援所有模型。如果指定模型,請求中的模型不在列表內將不會排程到此帳號',
|
||||
systemDefaultIfEmpty: '留空將使用系統預設模型。支援 inference profile ID 或 ARN',
|
||||
noUpdateIfEmpty: '留空表示不更新該欄位'
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user