fix: 修复重复键

This commit is contained in:
Wangnov
2025-09-11 18:02:59 +08:00
parent d5b9f809b0
commit 8522d20cad
3 changed files with 74 additions and 357 deletions

View File

@@ -62,6 +62,30 @@ export default {
info: 'Information' info: 'Information'
} }
}, },
errors: {
loadDashboardFailed: 'Failed to load dashboard data',
loadUsageTrendFailed: 'Failed to load usage trend',
loadModelStatsFailed: 'Failed to load model statistics',
loadApiKeysTrendFailed: 'Failed to load API Keys trend',
createClaudeConsoleAccountFailed: 'Failed to create Claude Console account',
createAzureOpenAIAccountFailed: 'Failed to create Azure OpenAI account',
updateClaudeConsoleAccountFailed: 'Failed to update Claude Console account',
updateAzureOpenAIAccountFailed: 'Failed to update Azure OpenAI account',
generateSetupTokenUrlFailed: 'Failed to generate Setup Token URL',
exchangeSetupTokenFailed: 'Failed to exchange Setup Token authorization code',
allApiKeysInvalid: 'All API Keys are invalid',
loadOemSettingsFailed: 'Failed to load OEM settings',
getApiKeyStatsFailed: 'Failed to get API Key statistics',
getTagsFailed: 'Failed to get tags',
requestFailed: 'Request failed: {status}',
loadSupportedClientsFailed: 'Failed to load supported clients'
},
system: {
status: {
normal: 'Normal',
abnormal: 'Abnormal'
}
},
confirmDialog: { confirmDialog: {
confirm: 'Confirm', confirm: 'Confirm',
cancel: 'Cancel' cancel: 'Cancel'
@@ -131,10 +155,6 @@ export default {
minutesAgo: '{minutes} minutes ago', minutesAgo: '{minutes} minutes ago',
hoursAgo: '{hours} hours ago', hoursAgo: '{hours} hours ago',
daysAgo: '{days} days ago' daysAgo: '{days} days ago'
},
errors: {
requestFailed: 'Request failed: {status}',
loadSupportedClientsFailed: 'Failed to load supported clients'
} }
}, },
language: { language: {
@@ -221,7 +241,6 @@ export default {
apiKeyInfo: 'API Key Information', apiKeyInfo: 'API Key Information',
queryKeysCount: 'Query Keys Count', queryKeysCount: 'Query Keys Count',
activeKeysCount: 'Active Keys Count', activeKeysCount: 'Active Keys Count',
invalidKeysCount: 'Invalid Keys Count',
totalRequests: 'Total Requests', totalRequests: 'Total Requests',
totalTokens: 'Total Tokens', totalTokens: 'Total Tokens',
totalCost: 'Total Cost', totalCost: 'Total Cost',
@@ -237,7 +256,6 @@ export default {
modelUsageStats: 'Model Usage Statistics', modelUsageStats: 'Model Usage Statistics',
loadingModelStats: 'Loading model statistics...', loadingModelStats: 'Loading model statistics...',
requestCount: ' requests', requestCount: ' requests',
totalCost: 'Total Cost',
inputTokens: 'Input Tokens', inputTokens: 'Input Tokens',
outputTokens: 'Output Tokens', outputTokens: 'Output Tokens',
cacheCreateTokens: 'Cache Create', cacheCreateTokens: 'Cache Create',
@@ -2436,12 +2454,6 @@ export default {
// Manual Token Input Section // Manual Token Input Section
manualTokenInput: 'Manual Token Input', manualTokenInput: 'Manual Token Input',
manualTokenClaudeDescription:
'Please enter valid Claude Access Token. If you have Refresh Token, it is recommended to fill both for automatic refresh support.',
manualTokenGeminiDescription:
'Please enter valid Gemini Access Token. If you have Refresh Token, it is recommended to fill both for automatic refresh support.',
manualTokenOpenAIDescription:
'Please enter valid OpenAI Access Token. If you have Refresh Token, it is recommended to fill both for automatic refresh support.',
getAccessTokenMethod: 'Methods to get Access Token:', getAccessTokenMethod: 'Methods to get Access Token:',
claudeCredentialsPath: 'Please get from logged-in Claude Code machine', claudeCredentialsPath: 'Please get from logged-in Claude Code machine',
geminiCredentialsPath: 'Please get from logged-in Gemini CLI machine', geminiCredentialsPath: 'Please get from logged-in Gemini CLI machine',
@@ -2451,18 +2463,11 @@ export default {
'credentials from file, do not use keys from Claude official API Keys page.', 'credentials from file, do not use keys from Claude official API Keys page.',
refreshTokenWarning: refreshTokenWarning:
'💡 If Refresh Token is not filled, Token needs manual update after expiration.', '💡 If Refresh Token is not filled, Token needs manual update after expiration.',
accessTokenOptional: 'Access Token (Optional)',
accessTokenOptionalPlaceholder:
'Optional: If not filled, system will automatically obtain through Refresh Token...',
accessTokenOptionalInfo: accessTokenOptionalInfo:
'Access Token is optional. If not provided, system will automatically obtain through Refresh Token.', 'Access Token is optional. If not provided, system will automatically obtain through Refresh Token.',
accessTokenRequired: 'Access Token *',
accessTokenRequiredPlaceholder: 'Please enter Access Token...', accessTokenRequiredPlaceholder: 'Please enter Access Token...',
refreshTokenRequired: 'Refresh Token *',
refreshTokenRequiredPlaceholder: 'Please enter Refresh Token (required)...',
refreshTokenRequiredInfo: refreshTokenRequiredInfo:
'System will use Refresh Token to automatically obtain Access Token and user information', 'System will use Refresh Token to automatically obtain Access Token and user information',
refreshTokenOptional: 'Refresh Token (Optional)',
refreshTokenOptionalPlaceholder: 'Please enter Refresh Token...', refreshTokenOptionalPlaceholder: 'Please enter Refresh Token...',
// Priority Settings // Priority Settings
@@ -2471,35 +2476,11 @@ export default {
prioritySchedulingTitle: 'Scheduling Priority (1-100)', prioritySchedulingTitle: 'Scheduling Priority (1-100)',
priorityEditPlaceholder: 'Lower number = higher priority', priorityEditPlaceholder: 'Lower number = higher priority',
// Gemini Project ID
projectIdOptional: 'Project ID (Optional)',
projectIdPlaceholder: 'e.g., verdant-wares-464411-k9',
projectIdDescription: 'Google Cloud/Workspace accounts may require Project ID',
// Claude Subscription Type and Advanced Options // Claude Subscription Type and Advanced Options
subscriptionType: 'Subscription Type',
claudeMaxSubscription: 'Claude Max', claudeMaxSubscription: 'Claude Max',
claudeProSubscription: 'Claude Pro', claudeProSubscription: 'Claude Pro',
claudeProLimitation: 'Pro accounts do not support Claude Opus 4 model',
autoStopOnWarning: 'Auto-stop scheduling when approaching 5-hour limit',
autoStopOnWarningDescription:
'When system detects account approaching 5-hour usage limit, automatically pause scheduling for this account. Will resume automatically 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, improving compatibility',
currentUnifiedVersion: 'Current unified version:',
clearCache: 'Clear Cache',
clearing: 'Clearing...',
waitingForCapture: 'Waiting to capture User-Agent from Claude Code client',
captureHint:
'💡 Hint: If unable to capture for 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, making all requests appear to come from same client, reducing characteristics',
clientIdLabel: 'Client Identifier ID', clientIdLabel: 'Client Identifier ID',
regenerateClientId: 'Regenerate', regenerateClientId: 'Regenerate',
clientIdDescription:
'This ID will replace user_id client part in requests, preserving session part for sticky sessions',
// Edit Mode Fields // Edit Mode Fields
accountNameEdit: 'Account Name', accountNameEdit: 'Account Name',
@@ -2507,7 +2488,6 @@ export default {
descriptionOptionalEdit: 'Description (Optional)', descriptionOptionalEdit: 'Description (Optional)',
descriptionOptionalEditPlaceholder: 'Account usage description...', descriptionOptionalEditPlaceholder: 'Account usage description...',
accountTypeEdit: 'Account Type', accountTypeEdit: 'Account Type',
selectGroupRequired: 'Select Group *',
noAvailableGroups: 'No available groups', noAvailableGroups: 'No available groups',
membersCount: ' members', membersCount: ' members',
createNewGroup: 'Create New Group', createNewGroup: 'Create New Group',
@@ -2516,32 +2496,14 @@ export default {
bedrockCredentials: 'Credentials Configuration', bedrockCredentials: 'Credentials Configuration',
bedrockCredentialsDescription: bedrockCredentialsDescription:
'Please fill in AWS access credentials for calling Amazon Bedrock service.', 'Please fill in AWS access credentials for calling Amazon Bedrock service.',
awsAccessKeyId: 'AWS Access Key ID *',
awsAccessKeyIdPlaceholder: 'Please enter AWS Access Key ID...',
awsSecretAccessKey: 'AWS Secret Access Key *',
awsSecretAccessKeyPlaceholder: 'Please enter AWS Secret Access Key...',
sessionTokenOptional: 'Session Token (Optional)',
sessionTokenOptionalPlaceholder: 'Session token for temporary credentials...',
sessionTokenDescription:
'Only required when using temporary credentials (like STS generated credentials)',
awsRegion: 'AWS Region *',
awsRegionPlaceholder: 'Select AWS region...',
bedrockModelConfig: 'Model Configuration', bedrockModelConfig: 'Model Configuration',
defaultModelLabel: 'Default Model', defaultModelLabel: 'Default Model',
defaultModelPlaceholder: 'e.g., anthropic.claude-3-5-sonnet-20240620-v1:0',
defaultModelDescription:
'Leave blank to use system default model. Supports inference profile ID or ARN',
smallFastModelLabel: 'Small Fast Model', smallFastModelLabel: 'Small Fast Model',
smallFastModelPlaceholder: 'e.g., anthropic.claude-3-haiku-20240307-v1:0',
smallFastModelDescription: 'Fast model for simple tasks, supports inference profile ID or ARN',
// Azure OpenAI Configuration // Azure OpenAI Configuration
azureOpenAIConfig: 'Azure OpenAI Configuration', azureOpenAIConfig: 'Azure OpenAI Configuration',
azureOpenAIDescription: azureOpenAIDescription:
'Please configure connection information and deployment details for Azure OpenAI service.', 'Please configure connection information and deployment details for Azure OpenAI service.',
azureEndpoint: 'Azure Endpoint *',
azureEndpointPlaceholder: 'e.g., https://your-resource.openai.azure.com/',
azureEndpointDescription: 'Endpoint URL for Azure OpenAI service',
azureApiKey: 'API Key *', azureApiKey: 'API Key *',
azureApiKeyPlaceholder: 'Please enter Azure OpenAI API Key...', azureApiKeyPlaceholder: 'Please enter Azure OpenAI API Key...',
azureApiVersion: 'API Version', azureApiVersion: 'API Version',
@@ -2565,7 +2527,6 @@ export default {
modelMappingFromPlaceholder: 'e.g., claude-3-5-sonnet-20241022', modelMappingFromPlaceholder: 'e.g., claude-3-5-sonnet-20241022',
modelMappingTo: 'Actual Model', modelMappingTo: 'Actual Model',
modelMappingToPlaceholder: 'e.g., claude-3-5-sonnet-latest', modelMappingToPlaceholder: 'e.g., claude-3-5-sonnet-latest',
addModelMapping: 'Add Mapping',
removeMapping: 'Remove', removeMapping: 'Remove',
presetMappings: 'Preset Mappings', presetMappings: 'Preset Mappings',
modelMappingExample: 'Example: claude-3-5-sonnet-20241022 → claude-3-5-sonnet-latest', modelMappingExample: 'Example: claude-3-5-sonnet-20241022 → claude-3-5-sonnet-latest',
@@ -2579,11 +2540,7 @@ export default {
setupTokenStep1Description: setupTokenStep1Description:
'System will generate a dedicated authorization link for obtaining temporary authorization code.', 'System will generate a dedicated authorization link for obtaining temporary authorization code.',
setupTokenStep2: 'Step 2: Complete Authorization', setupTokenStep2: 'Step 2: Complete Authorization',
setupTokenStep2Description:
'Open authorization link in new window, log in with your Claude account and complete authorization.',
setupTokenStep3: 'Step 3: Enter Authorization Code', setupTokenStep3: 'Step 3: Enter Authorization Code',
setupTokenStep3Description:
'After successful authorization, system will display authorization code, please copy and paste into input box below.',
setupTokenUrlGenerated: 'Authorization link generated', setupTokenUrlGenerated: 'Authorization link generated',
setupTokenOpenInBrowser: 'Open in browser', setupTokenOpenInBrowser: 'Open in browser',
setupTokenCopyLink: 'Copy link', setupTokenCopyLink: 'Copy link',
@@ -2611,16 +2568,9 @@ export default {
// Rate Limiting and Quota Management // Rate Limiting and Quota Management
rateLimitSettings: 'Rate Limit Settings', rateLimitSettings: 'Rate Limit Settings',
enableRateLimit: 'Enable rate limiting',
rateLimitDuration: 'Rate limit duration (seconds)',
rateLimitDurationPlaceholder: 'e.g., 60', rateLimitDurationPlaceholder: 'e.g., 60',
rateLimitDescription:
'When enabled, will limit request frequency to prevent account being blocked',
quotaManagement: 'Quota Management', quotaManagement: 'Quota Management',
dailyQuotaLabel: 'Daily quota limit',
dailyQuotaPlaceholder: '0 means unlimited',
quotaResetTimeLabel: 'Quota reset time', quotaResetTimeLabel: 'Quota reset time',
quotaResetTimePlaceholder: 'e.g., 00:00',
quotaResetDescription: 'Time point when daily quota resets', quotaResetDescription: 'Time point when daily quota resets',
currentDailyUsage: 'Today used', currentDailyUsage: 'Today used',
@@ -2628,7 +2578,6 @@ export default {
advancedSettings: 'Advanced Settings', advancedSettings: 'Advanced Settings',
customUserAgent: 'Custom User-Agent', customUserAgent: 'Custom User-Agent',
customUserAgentPlaceholder: 'Leave blank to use default User-Agent...', customUserAgentPlaceholder: 'Leave blank to use default User-Agent...',
userAgentDescription: 'User-Agent identifier for requests',
// General Hints and Status // General Hints and Status
notSet: 'Not set', notSet: 'Not set',
@@ -2669,7 +2618,6 @@ export default {
'Tip: If your account is a regular personal account (not bound to Google Cloud), please leave this field empty.', 'Tip: If your account is a regular personal account (not bound to Google Cloud), please leave this field empty.',
// AWS Region Reference // AWS Region Reference
awsRegionReference: 'Common AWS regions reference:',
awsRegionEastUS: 'us-east-1 (US East)', awsRegionEastUS: 'us-east-1 (US East)',
awsRegionWestUS: 'us-west-2 (US West)', awsRegionWestUS: 'us-west-2 (US West)',
awsRegionEuropeIreland: 'eu-west-1 (Europe Ireland)', awsRegionEuropeIreland: 'eu-west-1 (Europe Ireland)',
@@ -2689,7 +2637,6 @@ export default {
azureModelSelectionDesc: 'Select model types supported by this deployment', azureModelSelectionDesc: 'Select model types supported by this deployment',
// Rate Limiting // Rate Limiting
rateLimitMechanism: 'Rate limiting mechanism',
enableRateLimitMechanism: 'Enable rate limiting mechanism', enableRateLimitMechanism: 'Enable rate limiting mechanism',
rateLimitDescription2: rateLimitDescription2:
'When enabled, will pause scheduling for some time when account returns 429 error', 'When enabled, will pause scheduling for some time when account returns 429 error',
@@ -2699,34 +2646,22 @@ export default {
// Claude Console Specific Fields // Claude Console Specific Fields
claudeConsoleFields: 'Claude Console specific fields', claudeConsoleFields: 'Claude Console specific fields',
quotaManagement: 'Quota management',
modelMappingTable: 'Model mapping table', modelMappingTable: 'Model mapping table',
modelMappingTableOptional: 'Model mapping table (optional)', modelMappingTableOptional: 'Model mapping table (optional)',
addModelMapping: 'Add model mapping',
// Claude Subscription Type
subscriptionType: 'Subscription type',
// Setup Token Auth // Setup Token Auth
setupTokenAuth: 'Setup Token authorization',
claudeSetupTokenAuth: 'Claude Setup Token authorization', claudeSetupTokenAuth: 'Claude Setup Token authorization',
setupTokenAuthSteps: setupTokenAuthSteps:
'Please follow these steps to complete Claude account authorization through Setup Token:', 'Please follow these steps to complete Claude account authorization through Setup Token:',
generateSetupTokenLink: 'Generate Setup Token auth link', generateSetupTokenLink: 'Generate Setup Token auth link',
generating: 'Generating...',
// Buttons and actions // Buttons and actions
verifying: 'Verifying...',
completeAuth: 'Complete authorization', completeAuth: 'Complete authorization',
updating: 'Updating...',
update: 'Update',
// Error messages // Error messages
generateSetupTokenFailed: 'Failed to generate Setup Token auth link', generateSetupTokenFailed: 'Failed to generate Setup Token auth link',
copyFailed: 'Copy failed, please copy manually',
setupTokenAuthFailed: setupTokenAuthFailed:
'Setup Token authorization failed, please check if the authorization code is correct', 'Setup Token authorization failed, please check if the authorization code is correct',
accountCreationFailed: 'Account creation failed',
accountCreationError: 'Account creation failed:', accountCreationError: 'Account creation failed:',
// Page structure comments // Page structure comments
@@ -2741,29 +2676,18 @@ export default {
// Validation messages // Validation messages
nameRequired: 'Please enter account name', nameRequired: 'Please enter account name',
apiUrlRequired: 'Please enter API URL',
rateLimitDefault60: 'Default 60 minutes', rateLimitDefault60: 'Default 60 minutes',
rateLimitPauseDescription: 'Time to pause scheduling after account is rate limited (minutes)', rateLimitPauseDescription: 'Time to pause scheduling after account is rate limited (minutes)',
apiUrlPlaceholder: 'e.g., https://api.example.com',
apiKeyPlaceholder: 'Please enter API Key',
dailyQuotaLimit: 'Daily quota limit ($)', dailyQuotaLimit: 'Daily quota limit ($)',
quotaZeroUnlimited: '0 means unlimited', quotaZeroUnlimited: '0 means unlimited',
dailyQuotaDescription: 'Set daily usage quota, 0 means unlimited',
quotaResetTime: 'Quota reset time',
quotaResetTimeDescription: 'Time to automatically reset quota daily',
modelMappingDescription:
'Leave empty to support all models without modifying requests. After configuring mapping, left model will be recognized as supported model, right is the actual model sent.',
// Quota Management // Quota Management
quotaManagementFields: 'Quota management fields', quotaManagementFields: 'Quota management fields',
dailyQuotaLimitDollar: 'Daily quota limit ($)', dailyQuotaLimitDollar: 'Daily quota limit ($)',
quotaZeroUnlimited: '0 means unlimited',
dailyQuotaDesc: 'Set daily usage quota, 0 means unlimited', dailyQuotaDesc: 'Set daily usage quota, 0 means unlimited',
quotaResetTime: 'Quota reset time',
quotaResetTimeDesc: 'Time to automatically reset quota daily', quotaResetTimeDesc: 'Time to automatically reset quota daily',
// Model Mapping // Model Mapping
modelMappingOptional: 'Model mapping table (optional)',
modelMappingDesc: modelMappingDesc:
'Leave empty to support all models without modifying requests. After configuring mapping, left model will be recognized as supported model, right is the actual model sent.', 'Leave empty to support all models without modifying requests. After configuring mapping, left model will be recognized as supported model, right is the actual model sent.',
originalModelName: 'Original model name', originalModelName: 'Original model name',
@@ -2776,7 +2700,6 @@ export default {
// Claude Subscription Type // Claude Subscription Type
claudeSubscriptionType: 'Subscription type', claudeSubscriptionType: 'Subscription type',
claudeProLimitation: 'Pro accounts do not support Claude Opus 4 model',
// Claude Advanced Options // Claude Advanced Options
claudeAutoStopScheduling: 'Auto-stop scheduling when approaching 5-hour limit', claudeAutoStopScheduling: 'Auto-stop scheduling when approaching 5-hour limit',
@@ -2807,13 +2730,10 @@ export default {
setupTokenCopyTitle: 'Copy link', setupTokenCopyTitle: 'Copy link',
// Step Indicators // Step Indicators
stepIndicator: 'Step indicator',
step1BasicInfo: 'Step 1: Basic information and proxy settings',
step2OAuth: 'Step 2: OAuth authorization', step2OAuth: 'Step 2: OAuth authorization',
step2SetupToken: 'Step 2: Setup Token authorization', step2SetupToken: 'Step 2: Setup Token authorization',
// Group Selector // Group Selector
groupSelector: 'Group selector',
multiGroupInterface: 'Multi-group interface', multiGroupInterface: 'Multi-group interface',
createNewGroupOption: 'Create new group option', createNewGroupOption: 'Create new group option',
@@ -2823,15 +2743,12 @@ export default {
// Placeholder texts // Placeholder texts
originalModelNamePlaceholder: 'Original model name', originalModelNamePlaceholder: 'Original model name',
mappedModelNamePlaceholder: 'Mapped model name', mappedModelNamePlaceholder: 'Mapped model name',
userAgentPlaceholder: 'Leave empty to pass through client User-Agent',
authCodePlaceholder: 'Paste Authorization Code obtained from Claude Code auth page...', authCodePlaceholder: 'Paste Authorization Code obtained from Claude Code auth page...',
leaveEmptyNoUpdate: 'Leave empty for no update', leaveEmptyNoUpdate: 'Leave empty for no update',
leaveEmptyNoUpdateKey: 'Leave empty for no API Key update', leaveEmptyNoUpdateKey: 'Leave empty for no API Key update',
leaveEmptyNoUpdateToken: 'Leave empty for no update...', leaveEmptyNoUpdateToken: 'Leave empty for no update...',
// Labels and descriptions // Labels and descriptions
customUserAgentOptional: 'Custom User-Agent (optional)',
clientIdLabel: 'Client ID',
schedulePriorityLabel: 'Schedule Priority (1-100)', schedulePriorityLabel: 'Schedule Priority (1-100)',
attentionLabel: 'Attention:', attentionLabel: 'Attention:',
supportedModelsLabel: 'Supported Models', supportedModelsLabel: 'Supported Models',
@@ -2844,19 +2761,16 @@ export default {
previousStepBtn: 'Previous Step', previousStepBtn: 'Previous Step',
// Descriptive texts // Descriptive texts
claudeProLimitation: 'Pro accounts do not support Claude Opus 4 model',
claude5HourLimitDesc: 'Auto-stop scheduling when approaching 5-hour usage limit', claude5HourLimitDesc: 'Auto-stop scheduling when approaching 5-hour usage limit',
claude5HourLimitExplanation: claude5HourLimitExplanation:
'When system detects account approaching 5-hour usage limit, automatically pause scheduling for this account. Will resume automatically when entering new time window.', 'When system detects account approaching 5-hour usage limit, automatically pause scheduling for this account. Will resume automatically when entering new time window.',
useUnifiedClaudeVersion: 'Use unified Claude Code version', useUnifiedClaudeVersion: 'Use unified Claude Code version',
unifiedVersionDesc: unifiedVersionDesc:
'When enabled, will use unified User-Agent captured from real Claude Code client, improving compatibility', 'When enabled, will use unified User-Agent captured from real Claude Code client, improving compatibility',
currentUnifiedVersion: '💡 Current unified version:',
waitingUserAgent: '⏳ Waiting to capture User-Agent from Claude Code client', waitingUserAgent: '⏳ Waiting to capture User-Agent from Claude Code client',
userAgentTip: userAgentTip:
'💡 Tip: If unable to capture for a long time, please confirm that Claude Code client is using this account,', '💡 Tip: If unable to capture for a long time, please confirm that Claude Code client is using this account,',
contactDeveloper: 'or contact developer to check if User-Agent format has changed', contactDeveloper: 'or contact developer to check if User-Agent format has changed',
useUnifiedClientId: 'Use unified client identifier',
unifiedClientIdDesc: unifiedClientIdDesc:
'When enabled, will use fixed client identifier, making all requests appear from same client, reducing fingerprinting', 'When enabled, will use fixed client identifier, making all requests appear from same client, reducing fingerprinting',
clientIdReplaceDesc: clientIdReplaceDesc:
@@ -2883,9 +2797,6 @@ export default {
awsRegionRef: 'Common AWS regions reference:', awsRegionRef: 'Common AWS regions reference:',
// Error messages // Error messages
apiKeyRequired: 'Please enter API Key',
refreshTokenRequired: 'Please enter Refresh Token',
accessTokenRequired: 'Please enter Access Token',
copyFailedManual: 'Copy failed, please copy manually', copyFailedManual: 'Copy failed, please copy manually',
// Form descriptions // Form descriptions
@@ -2897,9 +2808,7 @@ export default {
// Basic labels // Basic labels
apiUrlLabel: 'API URL', apiUrlLabel: 'API URL',
apiUrlRequired: 'API URL *',
apiKeyLabel: 'API Key', apiKeyLabel: 'API Key',
apiKeyRequired: 'API Key *',
// More missing keys // More missing keys
copyLinkTooltip: 'Copy Link', copyLinkTooltip: 'Copy Link',

View File

@@ -62,6 +62,30 @@ export default {
info: '信息' info: '信息'
} }
}, },
errors: {
loadDashboardFailed: '加载仪表板数据失败',
loadUsageTrendFailed: '加载使用趋势失败',
loadModelStatsFailed: '加载模型统计失败',
loadApiKeysTrendFailed: '加载API Keys趋势失败',
createClaudeConsoleAccountFailed: '创建Claude Console账户失败',
createAzureOpenAIAccountFailed: '创建Azure OpenAI账户失败',
updateClaudeConsoleAccountFailed: '更新Claude Console账户失败',
updateAzureOpenAIAccountFailed: '更新Azure OpenAI账户失败',
generateSetupTokenUrlFailed: '生成Setup Token URL失败',
exchangeSetupTokenFailed: '交换Setup Token授权码失败',
allApiKeysInvalid: '所有 API Key 都无效',
loadOemSettingsFailed: '加载OEM设置失败',
getApiKeyStatsFailed: '获取API Key统计失败',
getTagsFailed: '获取标签失败',
requestFailed: '请求失败: {status}',
loadSupportedClientsFailed: '加载支持的客户端失败'
},
system: {
status: {
normal: '正常',
abnormal: '异常'
}
},
confirmDialog: { confirmDialog: {
confirm: '确认', confirm: '确认',
cancel: '取消' cancel: '取消'
@@ -131,10 +155,6 @@ export default {
minutesAgo: '{minutes}分钟前', minutesAgo: '{minutes}分钟前',
hoursAgo: '{hours}小时前', hoursAgo: '{hours}小时前',
daysAgo: '{days}天前' daysAgo: '{days}天前'
},
errors: {
requestFailed: '请求失败: {status}',
loadSupportedClientsFailed: '加载支持的客户端失败'
} }
}, },
language: { language: {
@@ -145,37 +165,6 @@ export default {
switch: '切换语言' switch: '切换语言'
}, },
layout: {
tabBar: {
tabs: {
dashboard: {
name: '仪表板',
shortName: '仪表板'
},
apiKeys: {
name: 'API Keys',
shortName: 'API'
},
accounts: {
name: '账户管理',
shortName: '账户'
},
userManagement: {
name: '用户管理',
shortName: '用户'
},
tutorial: {
name: '使用教程',
shortName: '教程'
},
settings: {
name: '系统设置',
shortName: '设置'
}
}
}
},
header: { header: {
adminPanel: '管理后台', adminPanel: '管理后台',
userMenu: '用户菜单', userMenu: '用户菜单',
@@ -253,7 +242,6 @@ export default {
apiKeyInfo: 'API Key 信息', apiKeyInfo: 'API Key 信息',
queryKeysCount: '查询 Keys 数', queryKeysCount: '查询 Keys 数',
activeKeysCount: '有效 Keys 数', activeKeysCount: '有效 Keys 数',
invalidKeysCount: '无效 Keys 数',
totalRequests: '总请求数', totalRequests: '总请求数',
totalTokens: '总 Token 数', totalTokens: '总 Token 数',
totalCost: '总费用', totalCost: '总费用',
@@ -269,7 +257,6 @@ export default {
modelUsageStats: '模型使用统计', modelUsageStats: '模型使用统计',
loadingModelStats: '加载模型统计数据中...', loadingModelStats: '加载模型统计数据中...',
requestCount: '次请求', requestCount: '次请求',
totalCost: '总费用',
inputTokens: '输入 Token', inputTokens: '输入 Token',
outputTokens: '输出 Token', outputTokens: '输出 Token',
cacheCreateTokens: '缓存创建', cacheCreateTokens: '缓存创建',
@@ -2420,12 +2407,6 @@ export default {
// 手动 Token 输入部分 // 手动 Token 输入部分
manualTokenInput: '手动输入 Token', manualTokenInput: '手动输入 Token',
manualTokenClaudeDescription:
'请输入有效的 Claude Access Token。如果您有 Refresh Token建议也一并填写以支持自动刷新。',
manualTokenGeminiDescription:
'请输入有效的 Gemini Access Token。如果您有 Refresh Token建议也一并填写以支持自动刷新。',
manualTokenOpenAIDescription:
'请输入有效的 OpenAI Access Token。如果您有 Refresh Token建议也一并填写以支持自动刷新。',
getAccessTokenMethod: '获取 Access Token 的方法:', getAccessTokenMethod: '获取 Access Token 的方法:',
claudeCredentialsPath: '请从已登录 Claude Code 的机器上获取', claudeCredentialsPath: '请从已登录 Claude Code 的机器上获取',
geminiCredentialsPath: '请从已登录 Gemini CLI 的机器上获取', geminiCredentialsPath: '请从已登录 Gemini CLI 的机器上获取',
@@ -2433,15 +2414,9 @@ export default {
'请从已登录 OpenAI 账户的机器上获取认证凭证,或通过 OAuth 授权流程获取 Access Token。', '请从已登录 OpenAI 账户的机器上获取认证凭证,或通过 OAuth 授权流程获取 Access Token。',
claudeCredentialsWarning: '文件中的凭证,请勿使用 Claude 官网 API Keys 页面的密钥。', claudeCredentialsWarning: '文件中的凭证,请勿使用 Claude 官网 API Keys 页面的密钥。',
refreshTokenWarning: '💡 如果未填写 Refresh TokenToken 过期后需要手动更新。', refreshTokenWarning: '💡 如果未填写 Refresh TokenToken 过期后需要手动更新。',
accessTokenOptional: 'Access Token (可选)',
accessTokenOptionalPlaceholder: '可选:如果不填写,系统会自动通过 Refresh Token 获取...',
accessTokenOptionalInfo: 'Access Token 可选填。如果不提供,系统会通过 Refresh Token 自动获取。', accessTokenOptionalInfo: 'Access Token 可选填。如果不提供,系统会通过 Refresh Token 自动获取。',
accessTokenRequired: 'Access Token *',
accessTokenRequiredPlaceholder: '请输入 Access Token...', accessTokenRequiredPlaceholder: '请输入 Access Token...',
refreshTokenRequired: 'Refresh Token *',
refreshTokenRequiredPlaceholder: '请输入 Refresh Token必填...',
refreshTokenRequiredInfo: '系统将使用 Refresh Token 自动获取 Access Token 和用户信息', refreshTokenRequiredInfo: '系统将使用 Refresh Token 自动获取 Access Token 和用户信息',
refreshTokenOptional: 'Refresh Token (可选)',
refreshTokenOptionalPlaceholder: '请输入 Refresh Token...', refreshTokenOptionalPlaceholder: '请输入 Refresh Token...',
// 优先级设置 // 优先级设置
@@ -2450,34 +2425,11 @@ export default {
prioritySchedulingTitle: '调度优先级 (1-100)', prioritySchedulingTitle: '调度优先级 (1-100)',
priorityEditPlaceholder: '数字越小优先级越高', priorityEditPlaceholder: '数字越小优先级越高',
// Gemini 项目ID
projectIdOptional: '项目 ID (可选)',
projectIdPlaceholder: '例如verdant-wares-464411-k9',
projectIdDescription: 'Google Cloud/Workspace 账号可能需要提供项目 ID',
// Claude 订阅类型和高级选项 // Claude 订阅类型和高级选项
subscriptionType: '订阅类型',
claudeMaxSubscription: 'Claude Max', claudeMaxSubscription: 'Claude Max',
claudeProSubscription: 'Claude Pro', claudeProSubscription: 'Claude Pro',
claudeProLimitation: 'Pro 账号不支持 Claude Opus 4 模型',
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:
'开启后将使用固定的客户端标识,使所有请求看起来来自同一个客户端,减少特征',
clientIdLabel: '客户端标识 ID', clientIdLabel: '客户端标识 ID',
regenerateClientId: '重新生成', regenerateClientId: '重新生成',
clientIdDescription: '此ID将替换请求中的user_id客户端部分保留session部分用于粘性会话',
// 编辑模式字段 // 编辑模式字段
accountNameEdit: '账户名称', accountNameEdit: '账户名称',
@@ -2485,7 +2437,6 @@ export default {
descriptionOptionalEdit: '描述 (可选)', descriptionOptionalEdit: '描述 (可选)',
descriptionOptionalEditPlaceholder: '账户用途说明...', descriptionOptionalEditPlaceholder: '账户用途说明...',
accountTypeEdit: '账户类型', accountTypeEdit: '账户类型',
selectGroupRequired: '选择分组 *',
noAvailableGroups: '暂无可用分组', noAvailableGroups: '暂无可用分组',
membersCount: ' 个成员', membersCount: ' 个成员',
createNewGroup: '新建分组', createNewGroup: '新建分组',
@@ -2493,29 +2444,14 @@ export default {
// AWS Bedrock 配置 // AWS Bedrock 配置
bedrockCredentials: '凭证配置', bedrockCredentials: '凭证配置',
bedrockCredentialsDescription: '请填写 AWS 访问凭证,用于调用 Amazon Bedrock 服务。', bedrockCredentialsDescription: '请填写 AWS 访问凭证,用于调用 Amazon Bedrock 服务。',
awsAccessKeyId: 'AWS Access Key ID *',
awsAccessKeyIdPlaceholder: '请输入 AWS 访问密钥 ID...',
awsSecretAccessKey: 'AWS Secret Access Key *',
awsSecretAccessKeyPlaceholder: '请输入 AWS 秘密访问密钥...',
sessionTokenOptional: 'Session Token (可选)',
sessionTokenOptionalPlaceholder: '临时凭证的会话令牌...', sessionTokenOptionalPlaceholder: '临时凭证的会话令牌...',
sessionTokenDescription: '仅在使用临时凭证(如 STS 生成的凭证)时需要填写',
awsRegion: 'AWS 区域 *',
awsRegionPlaceholder: '选择 AWS 区域...',
bedrockModelConfig: '模型配置', bedrockModelConfig: '模型配置',
defaultModelLabel: '默认模型', defaultModelLabel: '默认模型',
defaultModelPlaceholder: '例如anthropic.claude-3-5-sonnet-20240620-v1:0',
defaultModelDescription: '留空将使用系统默认模型。支持 inference profile ID 或 ARN',
smallFastModelLabel: '小型快速模型', smallFastModelLabel: '小型快速模型',
smallFastModelPlaceholder: '例如anthropic.claude-3-haiku-20240307-v1:0',
smallFastModelDescription: '用于简单任务的快速模型,支持 inference profile ID 或 ARN',
// Azure OpenAI 配置 // Azure OpenAI 配置
azureOpenAIConfig: 'Azure OpenAI 配置', azureOpenAIConfig: 'Azure OpenAI 配置',
azureOpenAIDescription: '请配置 Azure OpenAI 服务的连接信息和部署详情。', azureOpenAIDescription: '请配置 Azure OpenAI 服务的连接信息和部署详情。',
azureEndpoint: 'Azure Endpoint *',
azureEndpointPlaceholder: '例如https://your-resource.openai.azure.com/',
azureEndpointDescription: 'Azure OpenAI 服务的端点 URL',
azureApiKey: 'API Key *', azureApiKey: 'API Key *',
azureApiKeyPlaceholder: '请输入 Azure OpenAI API Key...', azureApiKeyPlaceholder: '请输入 Azure OpenAI API Key...',
azureApiVersion: 'API 版本', azureApiVersion: 'API 版本',
@@ -2538,7 +2474,6 @@ export default {
modelMappingFromPlaceholder: '例如claude-3-5-sonnet-20241022', modelMappingFromPlaceholder: '例如claude-3-5-sonnet-20241022',
modelMappingTo: '实际模型', modelMappingTo: '实际模型',
modelMappingToPlaceholder: '例如claude-3-5-sonnet-latest', modelMappingToPlaceholder: '例如claude-3-5-sonnet-latest',
addModelMapping: '添加映射',
removeMapping: '移除', removeMapping: '移除',
presetMappings: '预设映射', presetMappings: '预设映射',
modelMappingExample: '示例claude-3-5-sonnet-20241022 → claude-3-5-sonnet-latest', modelMappingExample: '示例claude-3-5-sonnet-20241022 → claude-3-5-sonnet-latest',
@@ -2550,9 +2485,7 @@ export default {
setupTokenStep1: '步骤 1生成授权链接', setupTokenStep1: '步骤 1生成授权链接',
setupTokenStep1Description: '系统将生成一个专用的授权链接,用于获取临时授权码。', setupTokenStep1Description: '系统将生成一个专用的授权链接,用于获取临时授权码。',
setupTokenStep2: '步骤 2完成授权', setupTokenStep2: '步骤 2完成授权',
setupTokenStep2Description: '在新窗口中打开授权链接,使用您的 Claude 账户登录并完成授权。',
setupTokenStep3: '步骤 3输入授权码', setupTokenStep3: '步骤 3输入授权码',
setupTokenStep3Description: '授权成功后,系统会显示授权码,请复制并粘贴到下方输入框。',
setupTokenUrlGenerated: '授权链接已生成', setupTokenUrlGenerated: '授权链接已生成',
setupTokenOpenInBrowser: '在浏览器中打开', setupTokenOpenInBrowser: '在浏览器中打开',
setupTokenCopyLink: '复制链接', setupTokenCopyLink: '复制链接',
@@ -2577,15 +2510,9 @@ export default {
// 限流和配额管理 // 限流和配额管理
rateLimitSettings: '限流设置', rateLimitSettings: '限流设置',
enableRateLimit: '启用速率限制',
rateLimitDuration: '限流时长 (秒)',
rateLimitDurationPlaceholder: '例如60', rateLimitDurationPlaceholder: '例如60',
rateLimitDescription: '启用后将限制请求频率,防止账户被封锁',
quotaManagement: '配额管理', quotaManagement: '配额管理',
dailyQuotaLabel: '每日配额限制',
dailyQuotaPlaceholder: '0 表示不限制',
quotaResetTimeLabel: '配额重置时间', quotaResetTimeLabel: '配额重置时间',
quotaResetTimePlaceholder: '例如00:00',
quotaResetDescription: '每天配额重置的时间点', quotaResetDescription: '每天配额重置的时间点',
currentDailyUsage: '今日已用', currentDailyUsage: '今日已用',
@@ -2593,7 +2520,6 @@ export default {
advancedSettings: '高级设置', advancedSettings: '高级设置',
customUserAgent: '自定义 User-Agent', customUserAgent: '自定义 User-Agent',
customUserAgentPlaceholder: '留空使用默认 User-Agent...', customUserAgentPlaceholder: '留空使用默认 User-Agent...',
userAgentDescription: '用于请求时的 User-Agent 标识',
// 通用提示和状态 // 通用提示和状态
notSet: '未设置', notSet: '未设置',
@@ -2634,7 +2560,6 @@ export default {
'\u63d0示\uff1a如果您的账号是普通个人账号未绑定 Google Cloud请留空此字段。', '\u63d0示\uff1a如果您的账号是普通个人账号未绑定 Google Cloud请留空此字段。',
// AWS 区域参考 // AWS 区域参考
awsRegionReference: '常用 AWS 区域参考:',
awsRegionEastUS: 'us-east-1 (美国东部)', awsRegionEastUS: 'us-east-1 (美国东部)',
awsRegionWestUS: 'us-west-2 (美国西部)', awsRegionWestUS: 'us-west-2 (美国西部)',
awsRegionEuropeIreland: 'eu-west-1 (欧洲爱尔兰)', awsRegionEuropeIreland: 'eu-west-1 (欧洲爱尔兰)',
@@ -2654,38 +2579,25 @@ export default {
azureModelSelectionDesc: '选择此部署支持的模型类型', azureModelSelectionDesc: '选择此部署支持的模型类型',
// 限流机制 // 限流机制
rateLimitMechanism: '限流机制',
enableRateLimitMechanism: '启用限流机制', enableRateLimitMechanism: '启用限流机制',
rateLimitDescription2: '启用后当账号返回429错误时将暂停调度一段时间', rateLimitDescription2: '启用后当账号返回429错误时将暂停调度一段时间',
// Claude Console 特定字段 // Claude Console 特定字段
claudeConsoleFields: 'Claude Console 特定字段', claudeConsoleFields: 'Claude Console 特定字段',
quotaManagement: '额度管理',
modelMappingTable: '模型映射表', modelMappingTable: '模型映射表',
modelMappingTableOptional: '模型映射表 (可选)', modelMappingTableOptional: '模型映射表 (可选)',
addModelMapping: '添加模型映射',
// Claude 订阅类型
subscriptionType: '订阅类型',
// Setup Token 授权 // Setup Token 授权
setupTokenAuth: 'Setup Token 授权',
claudeSetupTokenAuth: 'Claude Setup Token 授权', claudeSetupTokenAuth: 'Claude Setup Token 授权',
setupTokenAuthSteps: '请按照以下步骤通过 Setup Token 完成 Claude 账户的授权:', setupTokenAuthSteps: '请按照以下步骤通过 Setup Token 完成 Claude 账户的授权:',
generateSetupTokenLink: '生成 Setup Token 授权链接', generateSetupTokenLink: '生成 Setup Token 授权链接',
generating: '生成中...',
// 按钮和操作 // 按钮和操作
verifying: '验证中...',
completeAuth: '完成授权', completeAuth: '完成授权',
updating: '更新中...',
update: '更新',
// 错误消息 // 错误消息
generateSetupTokenFailed: '生成Setup Token授权链接失败', generateSetupTokenFailed: '生成Setup Token授权链接失败',
copyFailed: '复制失败,请手动复制',
setupTokenAuthFailed: 'Setup Token授权失败请检查授权码是否正确', setupTokenAuthFailed: 'Setup Token授权失败请检查授权码是否正确',
accountCreationFailed: '账户创建失败',
accountCreationError: '账户创建失败:', accountCreationError: '账户创建失败:',
// 页面结构注释 // 页面结构注释
@@ -2700,18 +2612,10 @@ export default {
// 验证消息 // 验证消息
nameRequired: '请填写账户名称', nameRequired: '请填写账户名称',
apiUrlRequired: '请填写 API URL',
rateLimitDefault60: '默认60分钟', rateLimitDefault60: '默认60分钟',
rateLimitPauseDescription: '账号被限流后暂停调度的时间(分钟)', rateLimitPauseDescription: '账号被限流后暂停调度的时间(分钟)',
apiUrlPlaceholder: '例如https://api.example.com',
apiKeyPlaceholder: '请输入API Key',
dailyQuotaLimit: '每日额度限制 ($)', dailyQuotaLimit: '每日额度限制 ($)',
quotaZeroUnlimited: '0 表示不限制', quotaZeroUnlimited: '0 表示不限制',
dailyQuotaDescription: '设置每日使用额度0 表示不限制',
quotaResetTime: '额度重置时间',
quotaResetTimeDescription: '每日自动重置额度的时间',
modelMappingDescription:
'留空表示支持所有模型且不修改请求。配置映射后,左侧模型会被识别为支持的模型,右侧是实际发送的模型。',
rateLimitDurationMinutes: '限流时间 (分钟)', rateLimitDurationMinutes: '限流时间 (分钟)',
rateLimitDefaultMinutes: '默认60分钟', rateLimitDefaultMinutes: '默认60分钟',
rateLimitPauseDesc: '账号被限流后暂停调度的时间(分钟)', rateLimitPauseDesc: '账号被限流后暂停调度的时间(分钟)',
@@ -2719,13 +2623,10 @@ export default {
// 额度管理 // 额度管理
quotaManagementFields: '额度管理字段', quotaManagementFields: '额度管理字段',
dailyQuotaLimitDollar: '每日额度限制 ($)', dailyQuotaLimitDollar: '每日额度限制 ($)',
quotaZeroUnlimited: '0 表示不限制',
dailyQuotaDesc: '设置每日使用额度0 表示不限制', dailyQuotaDesc: '设置每日使用额度0 表示不限制',
quotaResetTime: '额度重置时间',
quotaResetTimeDesc: '每日自动重置额度的时间', quotaResetTimeDesc: '每日自动重置额度的时间',
// 模型映射 // 模型映射
modelMappingOptional: '模型映射表 (可选)',
modelMappingDesc: modelMappingDesc:
'留空表示支持所有模型且不修改请求。配置映射后,左侧模型会被识别为支持的模型,右侧是实际发送的模型。', '留空表示支持所有模型且不修改请求。配置映射后,左侧模型会被识别为支持的模型,右侧是实际发送的模型。',
originalModelName: '原始模型名称', originalModelName: '原始模型名称',
@@ -2737,7 +2638,6 @@ export default {
// Claude 订阅类型 // Claude 订阅类型
claudeSubscriptionType: '订阅类型', claudeSubscriptionType: '订阅类型',
claudeProLimitation: 'Pro 账号不支持 Claude Opus 4 模型',
// Claude 高级选项 // Claude 高级选项
claudeAutoStopScheduling: '5小时使用量接近限制时自动停止调度', claudeAutoStopScheduling: '5小时使用量接近限制时自动停止调度',
@@ -2765,13 +2665,10 @@ export default {
setupTokenCopyTitle: '复制链接', setupTokenCopyTitle: '复制链接',
// 步骤指示器 // 步骤指示器
stepIndicator: '步骤指示器',
step1BasicInfo: '步骤1: 基本信息和代理设置',
step2OAuth: '步骤2: OAuth授权', step2OAuth: '步骤2: OAuth授权',
step2SetupToken: '步骤2: Setup Token授权', step2SetupToken: '步骤2: Setup Token授权',
// 分组选择器 // 分组选择器
groupSelector: '分组选择器',
multiGroupInterface: '多选分组界面', multiGroupInterface: '多选分组界面',
createNewGroupOption: '新建分组选项', createNewGroupOption: '新建分组选项',
@@ -2781,15 +2678,12 @@ export default {
// Placeholder 文本 // Placeholder 文本
originalModelNamePlaceholder: '原始模型名称', originalModelNamePlaceholder: '原始模型名称',
mappedModelNamePlaceholder: '映射后的模型名称', mappedModelNamePlaceholder: '映射后的模型名称',
userAgentPlaceholder: '留空则透传客户端 User-Agent',
authCodePlaceholder: '粘贴从Claude Code授权页面获取的Authorization Code...', authCodePlaceholder: '粘贴从Claude Code授权页面获取的Authorization Code...',
leaveEmptyNoUpdate: '留空表示不更新', leaveEmptyNoUpdate: '留空表示不更新',
leaveEmptyNoUpdateKey: '留空表示不更新 API Key', leaveEmptyNoUpdateKey: '留空表示不更新 API Key',
leaveEmptyNoUpdateToken: '留空表示不更新...', leaveEmptyNoUpdateToken: '留空表示不更新...',
// 标签和描述 // 标签和描述
customUserAgentOptional: '自定义 User-Agent (可选)',
clientIdLabel: '客户端标识 ID',
schedulePriorityLabel: '调度优先级 (1-100)', schedulePriorityLabel: '调度优先级 (1-100)',
attentionLabel: '注意:', attentionLabel: '注意:',
supportedModelsLabel: '支持的模型', supportedModelsLabel: '支持的模型',
@@ -2802,17 +2696,14 @@ export default {
previousStepBtn: '上一步', previousStepBtn: '上一步',
// 描述性文本 // 描述性文本
claudeProLimitation: 'Pro 账号不支持 Claude Opus 4 模型',
claude5HourLimitDesc: '5小时使用量接近限制时自动停止调度', claude5HourLimitDesc: '5小时使用量接近限制时自动停止调度',
claude5HourLimitExplanation: claude5HourLimitExplanation:
'当系统检测到账户接近5小时使用限制时自动暂停调度该账户。进入新的时间窗口后会自动恢复调度。', '当系统检测到账户接近5小时使用限制时自动暂停调度该账户。进入新的时间窗口后会自动恢复调度。',
useUnifiedClaudeVersion: '使用统一 Claude Code 版本', useUnifiedClaudeVersion: '使用统一 Claude Code 版本',
unifiedVersionDesc: '开启后将使用从真实 Claude Code 客户端捕获的统一 User-Agent提高兼容性', unifiedVersionDesc: '开启后将使用从真实 Claude Code 客户端捕获的统一 User-Agent提高兼容性',
currentUnifiedVersion: '💡 当前统一版本:',
waitingUserAgent: '⏳ 等待从 Claude Code 客户端捕获 User-Agent', waitingUserAgent: '⏳ 等待从 Claude Code 客户端捕获 User-Agent',
userAgentTip: '💡 提示:如果长时间未能捕获,请确认有 Claude Code 客户端正在使用此账户,', userAgentTip: '💡 提示:如果长时间未能捕获,请确认有 Claude Code 客户端正在使用此账户,',
contactDeveloper: '或联系开发者检查 User-Agent 格式是否发生变化', contactDeveloper: '或联系开发者检查 User-Agent 格式是否发生变化',
useUnifiedClientId: '使用统一的客户端标识',
unifiedClientIdDesc: '开启后将使用固定的客户端标识,使所有请求看起来来自同一个客户端,减少特征', unifiedClientIdDesc: '开启后将使用固定的客户端标识,使所有请求看起来来自同一个客户端,减少特征',
clientIdReplaceDesc: '此ID将替换请求中的user_id客户端部分保留session部分用于粘性会话', clientIdReplaceDesc: '此ID将替换请求中的user_id客户端部分保留session部分用于粘性会话',
@@ -2834,8 +2725,6 @@ export default {
// Error messages // Error messages
apiKeyRequiredError: '请填写 API Key', apiKeyRequiredError: '请填写 API Key',
refreshTokenRequired: '请填写 Refresh Token',
accessTokenRequired: '请填写 Access Token',
copyFailedManual: '复制失败,请手动复制', copyFailedManual: '复制失败,请手动复制',
// 表单描述 // 表单描述
@@ -2846,9 +2735,7 @@ export default {
// 基础标签 // 基础标签
apiUrlLabel: 'API URL', apiUrlLabel: 'API URL',
apiUrlRequired: 'API URL *',
apiKeyLabel: 'API Key', apiKeyLabel: 'API Key',
apiKeyRequired: 'API Key *',
// 更多缺失的翻译键 // 更多缺失的翻译键
copyLinkTooltip: '复制链接', copyLinkTooltip: '复制链接',

View File

@@ -62,6 +62,30 @@ export default {
info: '資訊' info: '資訊'
} }
}, },
errors: {
loadDashboardFailed: '載入儀表板數據失敗',
loadUsageTrendFailed: '載入使用趨勢失敗',
loadModelStatsFailed: '載入模型統計失敗',
loadApiKeysTrendFailed: '載入API Keys趨勢失敗',
createClaudeConsoleAccountFailed: '建立Claude Console帳戶失敗',
createAzureOpenAIAccountFailed: '建立Azure OpenAI帳戶失敗',
updateClaudeConsoleAccountFailed: '更新Claude Console帳戶失敗',
updateAzureOpenAIAccountFailed: '更新Azure OpenAI帳戶失敗',
generateSetupTokenUrlFailed: '產生Setup Token URL失敗',
exchangeSetupTokenFailed: '交換Setup Token授權碼失敗',
allApiKeysInvalid: '所有 API Key 都無效',
loadOemSettingsFailed: '載入OEM設定失敗',
getApiKeyStatsFailed: '獲取API Key統計失敗',
getTagsFailed: '獲取標籤失敗',
requestFailed: '請求失敗: {status}',
loadSupportedClientsFailed: '載入支援的客戶端失敗'
},
system: {
status: {
normal: '正常',
abnormal: '異常'
}
},
confirmDialog: { confirmDialog: {
confirm: '確認', confirm: '確認',
cancel: '取消' cancel: '取消'
@@ -131,10 +155,6 @@ export default {
minutesAgo: '{minutes}分鐘前', minutesAgo: '{minutes}分鐘前',
hoursAgo: '{hours}小時前', hoursAgo: '{hours}小時前',
daysAgo: '{days}天前' daysAgo: '{days}天前'
},
errors: {
requestFailed: '請求失敗: {status}',
loadSupportedClientsFailed: '載入支援的客戶端失敗'
} }
}, },
language: { language: {
@@ -221,7 +241,6 @@ export default {
apiKeyInfo: 'API Key 資訊', apiKeyInfo: 'API Key 資訊',
queryKeysCount: '查詢 Keys 數', queryKeysCount: '查詢 Keys 數',
activeKeysCount: '有效 Keys 數', activeKeysCount: '有效 Keys 數',
invalidKeysCount: '無效 Keys 數',
totalRequests: '總請求數', totalRequests: '總請求數',
totalTokens: '總 Token 數', totalTokens: '總 Token 數',
totalCost: '總費用', totalCost: '總費用',
@@ -237,7 +256,6 @@ export default {
modelUsageStats: '模型使用統計', modelUsageStats: '模型使用統計',
loadingModelStats: '載入模型統計資料中...', loadingModelStats: '載入模型統計資料中...',
requestCount: '次請求', requestCount: '次請求',
totalCost: '總費用',
inputTokens: '輸入 Token', inputTokens: '輸入 Token',
outputTokens: '輸出 Token', outputTokens: '輸出 Token',
cacheCreateTokens: '快取建立', cacheCreateTokens: '快取建立',
@@ -2228,7 +2246,7 @@ export default {
rateLimitDurationDescription: '帳號被限流後暫停排程的時間(分鐘)', rateLimitDurationDescription: '帳號被限流後暫停排程的時間(分鐘)',
// Claude 訂閱類型 // Claude 訂閱類型
subscriptionType: '訂閱類型',
subscriptionClaudeMax: 'Claude Max', subscriptionClaudeMax: 'Claude Max',
subscriptionClaudePro: 'Claude Pro', subscriptionClaudePro: 'Claude Pro',
claudeProLimitation: 'Pro 帳號不支援 Claude Opus 4 模型', claudeProLimitation: 'Pro 帳號不支援 Claude Opus 4 模型',
@@ -2391,12 +2409,6 @@ export default {
// 手動 Token 輸入部分 // 手動 Token 輸入部分
manualTokenInput: '手動輸入 Token', manualTokenInput: '手動輸入 Token',
manualTokenClaudeDescription:
'請輸入有效的 Claude Access Token。如果您有 Refresh Token建議也一併填寫以支援自動刷新。',
manualTokenGeminiDescription:
'請輸入有效的 Gemini Access Token。如果您有 Refresh Token建議也一併填寫以支援自動刷新。',
manualTokenOpenAIDescription:
'請輸入有效的 OpenAI Access Token。如果您有 Refresh Token建議也一併填寫以支援自動刷新。',
getAccessTokenMethod: '取得 Access Token 的方法:', getAccessTokenMethod: '取得 Access Token 的方法:',
claudeCredentialsPath: '請從已登入 Claude Code 的機器上取得', claudeCredentialsPath: '請從已登入 Claude Code 的機器上取得',
geminiCredentialsPath: '請從已登入 Gemini CLI 的機器上取得', geminiCredentialsPath: '請從已登入 Gemini CLI 的機器上取得',
@@ -2404,15 +2416,9 @@ export default {
'請從已登入 OpenAI 帳戶的機器上取得認證憑證,或透過 OAuth 授權流程取得 Access Token。', '請從已登入 OpenAI 帳戶的機器上取得認證憑證,或透過 OAuth 授權流程取得 Access Token。',
claudeCredentialsWarning: '檔案中的憑證,請勿使用 Claude 官網 API Keys 頁面的金鑰。', claudeCredentialsWarning: '檔案中的憑證,請勿使用 Claude 官網 API Keys 頁面的金鑰。',
refreshTokenWarning: '💡 如果未填寫 Refresh TokenToken 過期後需要手動更新。', refreshTokenWarning: '💡 如果未填寫 Refresh TokenToken 過期後需要手動更新。',
accessTokenOptional: 'Access Token (可選)',
accessTokenOptionalPlaceholder: '可選:如果不填寫,系統會自動透過 Refresh Token 取得...',
accessTokenOptionalInfo: 'Access Token 可選填。如果不提供,系統會透過 Refresh Token 自動取得。', accessTokenOptionalInfo: 'Access Token 可選填。如果不提供,系統會透過 Refresh Token 自動取得。',
accessTokenRequired: 'Access Token *',
accessTokenRequiredPlaceholder: '請輸入 Access Token...', accessTokenRequiredPlaceholder: '請輸入 Access Token...',
refreshTokenRequired: 'Refresh Token *',
refreshTokenRequiredPlaceholder: '請輸入 Refresh Token必填...',
refreshTokenRequiredInfo: '系統將使用 Refresh Token 自動取得 Access Token 和使用者資訊', refreshTokenRequiredInfo: '系統將使用 Refresh Token 自動取得 Access Token 和使用者資訊',
refreshTokenOptional: 'Refresh Token (可選)',
refreshTokenOptionalPlaceholder: '請輸入 Refresh Token...', refreshTokenOptionalPlaceholder: '請輸入 Refresh Token...',
// 優先級設定 // 優先級設定
@@ -2421,34 +2427,12 @@ export default {
prioritySchedulingTitle: '排程優先級 (1-100)', prioritySchedulingTitle: '排程優先級 (1-100)',
priorityEditPlaceholder: '數字越小優先級越高', priorityEditPlaceholder: '數字越小優先級越高',
// Gemini 專案ID
projectIdOptional: '專案 ID (可選)',
projectIdPlaceholder: '例如verdant-wares-464411-k9',
projectIdDescription: 'Google Cloud/Workspace 帳號可能需要提供專案 ID',
// Claude 訂閱類型和進階選項 // Claude 訂閱類型和進階選項
subscriptionType: '訂閱類型',
claudeMaxSubscription: 'Claude Max', claudeMaxSubscription: 'Claude Max',
claudeProSubscription: 'Claude Pro', claudeProSubscription: 'Claude Pro',
claudeProLimitation: 'Pro 帳號不支援 Claude Opus 4 模型',
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:
'開啟後將使用固定的用戶端識別,使所有請求看起來來自同一個用戶端,減少特徵',
clientIdLabel: '用戶端識別 ID', clientIdLabel: '用戶端識別 ID',
regenerateClientId: '重新產生', regenerateClientId: '重新產生',
clientIdDescription: '此ID將替換請求中的user_id用戶端部分保留session部分用於黏性工作階段',
// 編輯模式欄位 // 編輯模式欄位
accountNameEdit: '帳戶名稱', accountNameEdit: '帳戶名稱',
@@ -2456,7 +2440,6 @@ export default {
descriptionOptionalEdit: '描述 (可選)', descriptionOptionalEdit: '描述 (可選)',
descriptionOptionalEditPlaceholder: '帳戶用途說明...', descriptionOptionalEditPlaceholder: '帳戶用途說明...',
accountTypeEdit: '帳戶類型', accountTypeEdit: '帳戶類型',
selectGroupRequired: '選擇群組 *',
noAvailableGroups: '暫無可用群組', noAvailableGroups: '暫無可用群組',
membersCount: ' 個成員', membersCount: ' 個成員',
createNewGroup: '新建群組', createNewGroup: '新建群組',
@@ -2464,29 +2447,14 @@ export default {
// AWS Bedrock 設定 // AWS Bedrock 設定
bedrockCredentials: '憑證設定', bedrockCredentials: '憑證設定',
bedrockCredentialsDescription: '請填寫 AWS 存取憑證,用於呼叫 Amazon Bedrock 服務。', bedrockCredentialsDescription: '請填寫 AWS 存取憑證,用於呼叫 Amazon Bedrock 服務。',
awsAccessKeyId: 'AWS Access Key ID *',
awsAccessKeyIdPlaceholder: '請輸入 AWS 存取密鑰 ID...',
awsSecretAccessKey: 'AWS Secret Access Key *',
awsSecretAccessKeyPlaceholder: '請輸入 AWS 秘密存取密鑰...',
sessionTokenOptional: 'Session Token (可選)',
sessionTokenOptionalPlaceholder: '臨時憑證的工作階段令牌...', sessionTokenOptionalPlaceholder: '臨時憑證的工作階段令牌...',
sessionTokenDescription: '僅在使用臨時憑證(如 STS 產生的憑證)時需要填寫',
awsRegion: 'AWS 區域 *',
awsRegionPlaceholder: '選擇 AWS 區域...',
bedrockModelConfig: '模型設定', bedrockModelConfig: '模型設定',
defaultModelLabel: '預設模型', defaultModelLabel: '預設模型',
defaultModelPlaceholder: '例如anthropic.claude-3-5-sonnet-20240620-v1:0',
defaultModelDescription: '留空將使用系統預設模型。支援 inference profile ID 或 ARN',
smallFastModelLabel: '小型快速模型', smallFastModelLabel: '小型快速模型',
smallFastModelPlaceholder: '例如anthropic.claude-3-haiku-20240307-v1:0',
smallFastModelDescription: '用於簡單任務的快速模型,支援 inference profile ID 或 ARN',
// Azure OpenAI 設定 // Azure OpenAI 設定
azureOpenAIConfig: 'Azure OpenAI 設定', azureOpenAIConfig: 'Azure OpenAI 設定',
azureOpenAIDescription: '請設定 Azure OpenAI 服務的連線資訊和部署詳情。', azureOpenAIDescription: '請設定 Azure OpenAI 服務的連線資訊和部署詳情。',
azureEndpoint: 'Azure Endpoint *',
azureEndpointPlaceholder: '例如https://your-resource.openai.azure.com/',
azureEndpointDescription: 'Azure OpenAI 服務的端點 URL',
azureApiKey: 'API Key *', azureApiKey: 'API Key *',
azureApiKeyPlaceholder: '請輸入 Azure OpenAI API Key...', azureApiKeyPlaceholder: '請輸入 Azure OpenAI API Key...',
azureApiVersion: 'API 版本', azureApiVersion: 'API 版本',
@@ -2509,7 +2477,6 @@ export default {
modelMappingFromPlaceholder: '例如claude-3-5-sonnet-20241022', modelMappingFromPlaceholder: '例如claude-3-5-sonnet-20241022',
modelMappingTo: '實際模型', modelMappingTo: '實際模型',
modelMappingToPlaceholder: '例如claude-3-5-sonnet-latest', modelMappingToPlaceholder: '例如claude-3-5-sonnet-latest',
addModelMapping: '新增映射',
removeMapping: '移除', removeMapping: '移除',
presetMappings: '預設映射', presetMappings: '預設映射',
modelMappingExample: '示例claude-3-5-sonnet-20241022 → claude-3-5-sonnet-latest', modelMappingExample: '示例claude-3-5-sonnet-20241022 → claude-3-5-sonnet-latest',
@@ -2521,9 +2488,7 @@ export default {
setupTokenStep1: '步驟 1產生授權連結', setupTokenStep1: '步驟 1產生授權連結',
setupTokenStep1Description: '系統將產生一個專用的授權連結,用於取得臨時授權碼。', setupTokenStep1Description: '系統將產生一個專用的授權連結,用於取得臨時授權碼。',
setupTokenStep2: '步驟 2完成授權', setupTokenStep2: '步驟 2完成授權',
setupTokenStep2Description: '在新視窗中開啟授權連結,使用您的 Claude 帳戶登入並完成授權。',
setupTokenStep3: '步驟 3輸入授權碼', setupTokenStep3: '步驟 3輸入授權碼',
setupTokenStep3Description: '授權成功後,系統會顯示授權碼,請複製並貼上到下方輸入框。',
setupTokenUrlGenerated: '授權連結已產生', setupTokenUrlGenerated: '授權連結已產生',
setupTokenOpenInBrowser: '在瀏覽器中開啟', setupTokenOpenInBrowser: '在瀏覽器中開啟',
setupTokenCopyLink: '複製連結', setupTokenCopyLink: '複製連結',
@@ -2548,15 +2513,9 @@ export default {
// 限流和配額管理 // 限流和配額管理
rateLimitSettings: '限流設定', rateLimitSettings: '限流設定',
enableRateLimit: '啟用速率限制',
rateLimitDuration: '限流時長 (秒)',
rateLimitDurationPlaceholder: '例如60', rateLimitDurationPlaceholder: '例如60',
rateLimitDescription: '啟用後將限制請求頻率,防止帳戶被封鎖',
quotaManagement: '配額管理', quotaManagement: '配額管理',
dailyQuotaLabel: '每日配額限制',
dailyQuotaPlaceholder: '0 表示不限制',
quotaResetTimeLabel: '配額重設時間', quotaResetTimeLabel: '配額重設時間',
quotaResetTimePlaceholder: '例如00:00',
quotaResetDescription: '每天配額重設的時間點', quotaResetDescription: '每天配額重設的時間點',
currentDailyUsage: '今日已用', currentDailyUsage: '今日已用',
@@ -2564,7 +2523,6 @@ export default {
advancedSettings: '進階設定', advancedSettings: '進階設定',
customUserAgent: '自定義 User-Agent', customUserAgent: '自定義 User-Agent',
customUserAgentPlaceholder: '留空使用預設 User-Agent...', customUserAgentPlaceholder: '留空使用預設 User-Agent...',
userAgentDescription: '用於請求時的 User-Agent 識別',
// 通用提示和狀態 // 通用提示和狀態
notSet: '未設定', notSet: '未設定',
@@ -2605,7 +2563,6 @@ export default {
'提示:如果您的帳戶是普通個人帳戶(未綁定 Google Cloud請留空此欄位。', '提示:如果您的帳戶是普通個人帳戶(未綁定 Google Cloud請留空此欄位。',
// AWS 區域參考 // AWS 區域參考
awsRegionReference: '常用 AWS 區域參考:',
awsRegionEastUS: 'us-east-1 (美國東部)', awsRegionEastUS: 'us-east-1 (美國東部)',
awsRegionWestUS: 'us-west-2 (美國西部)', awsRegionWestUS: 'us-west-2 (美國西部)',
awsRegionEuropeIreland: 'eu-west-1 (歐洲愛爾蘭)', awsRegionEuropeIreland: 'eu-west-1 (歐洲愛爾蘭)',
@@ -2625,7 +2582,6 @@ export default {
azureModelSelectionDesc: '選擇此部署支援的模型類型', azureModelSelectionDesc: '選擇此部署支援的模型類型',
// 限流機制 // 限流機制
rateLimitMechanism: '限流機制',
enableRateLimitMechanism: '啟用限流機制', enableRateLimitMechanism: '啟用限流機制',
rateLimitDescription2: '啟用後當帳戶返回429錯誤時將暫停調度一段時間', rateLimitDescription2: '啟用後當帳戶返回429錯誤時將暫停調度一段時間',
rateLimitDurationMinutes: '限流時間 (分鐘)', rateLimitDurationMinutes: '限流時間 (分鐘)',
@@ -2634,32 +2590,23 @@ export default {
// Claude Console 特定欄位 // Claude Console 特定欄位
claudeConsoleFields: 'Claude Console 特定欄位', claudeConsoleFields: 'Claude Console 特定欄位',
quotaManagement: '額度管理',
modelMappingTable: '模型映射表', modelMappingTable: '模型映射表',
modelMappingTableOptional: '模型映射表 (可選)', modelMappingTableOptional: '模型映射表 (可選)',
addModelMapping: '新增模型映射',
// Claude 訂閱類型 // Claude 訂閱類型
subscriptionType: '訂閱類型', subscriptionType: '訂閱類型',
// Setup Token 授權 // Setup Token 授權
setupTokenAuth: 'Setup Token 授權',
claudeSetupTokenAuth: 'Claude Setup Token 授權', claudeSetupTokenAuth: 'Claude Setup Token 授權',
setupTokenAuthSteps: '請按照以下步驟透過 Setup Token 完成 Claude 帳戶的授權:', setupTokenAuthSteps: '請按照以下步驟透過 Setup Token 完成 Claude 帳戶的授權:',
generateSetupTokenLink: '產生 Setup Token 授權連結', generateSetupTokenLink: '產生 Setup Token 授權連結',
generating: '產生中...',
// 按鈕和操作 // 按鈕和操作
verifying: '驗證中...',
completeAuth: '完成授權', completeAuth: '完成授權',
updating: '更新中...',
update: '更新',
// 錯誤訊息 // 錯誤訊息
generateSetupTokenFailed: '產生Setup Token授權連結失敗', generateSetupTokenFailed: '產生Setup Token授權連結失敗',
copyFailed: '複製失敗,請手動複製',
setupTokenAuthFailed: 'Setup Token授權失敗請檢查授權碼是否正確', setupTokenAuthFailed: 'Setup Token授權失敗請檢查授權碼是否正確',
accountCreationFailed: '帳戶建立失敗',
accountCreationError: '帳戶建立失敗:', accountCreationError: '帳戶建立失敗:',
// 頁面結構註釋 // 頁面結構註釋
@@ -2674,29 +2621,18 @@ export default {
// 驗證訊息 // 驗證訊息
nameRequired: '請填寫帳戶名稱', nameRequired: '請填寫帳戶名稱',
apiUrlRequired: '請填寫 API URL',
rateLimitDefault60: '預設60分鐘', rateLimitDefault60: '預設60分鐘',
rateLimitPauseDescription: '帳戶被限流後暫停調度的時間(分鐘)', rateLimitPauseDescription: '帳戶被限流後暫停調度的時間(分鐘)',
apiUrlPlaceholder: '例如https://api.example.com',
apiKeyPlaceholder: '請輸入API Key',
dailyQuotaLimit: '每日額度限制 ($)', dailyQuotaLimit: '每日額度限制 ($)',
quotaZeroUnlimited: '0 表示不限制', quotaZeroUnlimited: '0 表示不限制',
dailyQuotaDescription: '設定每日使用額度0 表示不限制',
quotaResetTime: '額度重設時間',
quotaResetTimeDescription: '每日自動重設額度的時間',
modelMappingDescription:
'留空表示支援所有模型且不修改請求。設定映射後,左側模型會被識別為支援的模型,右側是實際傳送的模型。',
// 額度管理 // 額度管理
quotaManagementFields: '配額管理欄位', quotaManagementFields: '配額管理欄位',
dailyQuotaLimitDollar: '每日配額限制 ($)', dailyQuotaLimitDollar: '每日配額限制 ($)',
quotaZeroUnlimited: '0 表示不限制',
dailyQuotaDesc: '設定每日使用配額0 表示不限制', dailyQuotaDesc: '設定每日使用配額0 表示不限制',
quotaResetTime: '配額重設時間',
quotaResetTimeDesc: '每日自動重設配額的時間', quotaResetTimeDesc: '每日自動重設配額的時間',
// 模型映射 // 模型映射
modelMappingOptional: '模型映射表 (可選)',
modelMappingDesc: modelMappingDesc:
'留空表示支援所有模型且不修改請求。設定映射後,左側模型會被識別為支援的模型,右側是實際發送的模型。', '留空表示支援所有模型且不修改請求。設定映射後,左側模型會被識別為支援的模型,右側是實際發送的模型。',
originalModelName: '原始模型名稱', originalModelName: '原始模型名稱',
@@ -2708,7 +2644,6 @@ export default {
// Claude 訂閱類型 // Claude 訂閱類型
claudeSubscriptionType: '訂閱類型', claudeSubscriptionType: '訂閱類型',
claudeProLimitation: 'Pro 帳戶不支援 Claude Opus 4 模型',
// Claude 進階選項 // Claude 進階選項
claudeAutoStopScheduling: '5小時使用量接近限制時自動停止調度', claudeAutoStopScheduling: '5小時使用量接近限制時自動停止調度',
@@ -2736,13 +2671,10 @@ export default {
setupTokenCopyTitle: '複製連結', setupTokenCopyTitle: '複製連結',
// 步驟指示器 // 步驟指示器
stepIndicator: '步驟指示器',
step1BasicInfo: '步驟1: 基本資訊和代理設定',
step2OAuth: '步驟2: OAuth授權', step2OAuth: '步驟2: OAuth授權',
step2SetupToken: '步驟2: Setup Token授權', step2SetupToken: '步驟2: Setup Token授權',
// 群組選擇器 // 群組選擇器
groupSelector: '群組選擇器',
multiGroupInterface: '多選群組介面', multiGroupInterface: '多選群組介面',
createNewGroupOption: '新建群組選項', createNewGroupOption: '新建群組選項',
@@ -2752,15 +2684,12 @@ export default {
// Placeholder 文字 // Placeholder 文字
originalModelNamePlaceholder: '原始模型名稱', originalModelNamePlaceholder: '原始模型名稱',
mappedModelNamePlaceholder: '映射後的模型名稱', mappedModelNamePlaceholder: '映射後的模型名稱',
userAgentPlaceholder: '留空則透傳用戶端 User-Agent',
authCodePlaceholder: '貼上Claude Code授權頁面獲取的Authorization Code...', authCodePlaceholder: '貼上Claude Code授權頁面獲取的Authorization Code...',
leaveEmptyNoUpdate: '留空表示不更新', leaveEmptyNoUpdate: '留空表示不更新',
leaveEmptyNoUpdateKey: '留空表示不更新 API Key', leaveEmptyNoUpdateKey: '留空表示不更新 API Key',
leaveEmptyNoUpdateToken: '留空表示不更新...', leaveEmptyNoUpdateToken: '留空表示不更新...',
// 標籤和描述 // 標籤和描述
customUserAgentOptional: '自定義 User-Agent (可選)',
clientIdLabel: '用戶端標識 ID',
schedulePriorityLabel: '調度優先級 (1-100)', schedulePriorityLabel: '調度優先級 (1-100)',
attentionLabel: '注意:', attentionLabel: '注意:',
supportedModelsLabel: '支援的模型', supportedModelsLabel: '支援的模型',
@@ -2773,17 +2702,14 @@ export default {
previousStepBtn: '上一步', previousStepBtn: '上一步',
// 描述性文字 // 描述性文字
claudeProLimitation: 'Pro 帳戶不支援 Claude Opus 4 模型',
claude5HourLimitDesc: '5小時使用量接近限制時自動停止調度', claude5HourLimitDesc: '5小時使用量接近限制時自動停止調度',
claude5HourLimitExplanation: claude5HourLimitExplanation:
'當系統檢測到帳戶接近5小時使用限制時自動暫停調度該帳戶。進入新的時間視窗後會自動恢復調度。', '當系統檢測到帳戶接近5小時使用限制時自動暫停調度該帳戶。進入新的時間視窗後會自動恢復調度。',
useUnifiedClaudeVersion: '使用統一 Claude Code 版本', useUnifiedClaudeVersion: '使用統一 Claude Code 版本',
unifiedVersionDesc: '開啟後將使用從真實 Claude Code 用戶端捕獲的統一 User-Agent提高相容性', unifiedVersionDesc: '開啟後將使用從真實 Claude Code 用戶端捕獲的統一 User-Agent提高相容性',
currentUnifiedVersion: '💡 目前統一版本:',
waitingUserAgent: '⏳ 等待從 Claude Code 用戶端捕獲 User-Agent', waitingUserAgent: '⏳ 等待從 Claude Code 用戶端捕獲 User-Agent',
userAgentTip: '💡 提示:如果長時間未能捕獲,請確認有 Claude Code 用戶端正在使用此帳戶,', userAgentTip: '💡 提示:如果長時間未能捕獲,請確認有 Claude Code 用戶端正在使用此帳戶,',
contactDeveloper: '或聯繫開發者檢查 User-Agent 格式是否發生變化', contactDeveloper: '或聯繫開發者檢查 User-Agent 格式是否發生變化',
useUnifiedClientId: '使用統一的用戶端標識',
unifiedClientIdDesc: '開啟後將使用固定的用戶端標識,使所有請求看起來來自同一個用戶端,減少特徵', unifiedClientIdDesc: '開啟後將使用固定的用戶端標識,使所有請求看起來來自同一個用戶端,減少特徵',
clientIdReplaceDesc: '此ID將替換請求中的user_id用戶端部分保留session部分用於黏性工作階段', clientIdReplaceDesc: '此ID將替換請求中的user_id用戶端部分保留session部分用於黏性工作階段',
@@ -2804,9 +2730,6 @@ export default {
awsRegionRef: '常用 AWS 區域參考:', awsRegionRef: '常用 AWS 區域參考:',
// 錯誤訊息 // 錯誤訊息
apiKeyRequired: '請填寫 API Key',
refreshTokenRequired: '請填寫 Refresh Token',
accessTokenRequired: '請填寫 Access Token',
copyFailedManual: '複製失敗,請手動複製', copyFailedManual: '複製失敗,請手動複製',
// 表單描述 // 表單描述
@@ -2817,9 +2740,7 @@ export default {
// 基础標籤 // 基础標籤
apiUrlLabel: 'API URL', apiUrlLabel: 'API URL',
apiUrlRequired: 'API URL *',
apiKeyLabel: 'API Key', apiKeyLabel: 'API Key',
apiKeyRequired: 'API Key *',
// 更多缺失的翻譯鍵 // 更多缺失的翻譯鍵
copyLinkTooltip: '複製連結', copyLinkTooltip: '複製連結',