mirror of
https://github.com/Wei-Shaw/claude-relay-service.git
synced 2026-01-23 00:53:33 +00:00
- 完成DashboardView.vue全面国际化 * 主要统计卡片:总API Keys、服务账户、今日请求、系统状态全部多语言化 * Token统计模块:今日Token、总消耗量、实时RPM/TPM指标完整国际化 * 实时性能监控:请求数/Token数每分钟指标、历史数据标识多语言化 * 图表组件完整国际化:饼图、趋势图、API Keys使用趋势图 * 交互控件全面支持:日期选择器、粒度切换、自动刷新等 - 图表系统深度国际化 * Chart.js图表标签完全多语言化:Token使用趋势、模型分布等 * 工具提示和坐标轴标签支持动态语言切换 * 表格头部和数据展示完整国际化支持 - 扩展三语言dashboard翻译组 * zh-cn.js: 简体中文专业术语翻译 * zh-tw.js: 繁体中文技术翻译(快取、即時等台湾用词) * en.js: 英文专业技术术语标准翻译 * 总计90+个翻译键值,涵盖所有用户可见文本 - 平台账户工具提示国际化 * Claude/Console/Gemini/Bedrock/OpenAI/Azure OpenAI账户状态 * 支持参数化翻译,动态显示账户数量和状态 - 提升复杂业务场景多语言体验 * 管理后台核心数据可视化页面完全国际化 * 60+个硬编码中文字符串全部替换 * 确保不同语言环境下数据展示的专业性
321 lines
11 KiB
JavaScript
321 lines
11 KiB
JavaScript
export default {
|
|
common: {
|
|
save: 'Save',
|
|
cancel: 'Cancel',
|
|
confirm: 'Confirm',
|
|
loading: 'Loading...',
|
|
edit: 'Edit',
|
|
delete: 'Delete',
|
|
create: 'Create',
|
|
update: 'Update',
|
|
search: 'Search',
|
|
reset: 'Reset',
|
|
locale: 'en'
|
|
},
|
|
language: {
|
|
zh: '简体中文',
|
|
'zh-tw': '繁體中文',
|
|
en: 'English',
|
|
current: 'Current Language',
|
|
switch: 'Switch Language'
|
|
},
|
|
header: {
|
|
adminPanel: 'Admin Panel',
|
|
userMenu: 'User Menu',
|
|
logout: 'Logout',
|
|
settings: 'Settings',
|
|
|
|
// Version related
|
|
currentVersion: 'Current Version',
|
|
newVersionAvailable: 'New version available',
|
|
newVersion: 'New Version',
|
|
hasUpdate: 'New Version Available',
|
|
viewUpdate: 'View Update',
|
|
checkingUpdate: 'Checking for updates...',
|
|
alreadyLatest: 'Already the latest version',
|
|
checkUpdate: 'Check Update',
|
|
|
|
// User menu items
|
|
changeAccountInfo: 'Change Account Info',
|
|
|
|
// Change password modal
|
|
changePasswordModal: {
|
|
title: 'Change Account Information',
|
|
currentUsername: 'Current Username',
|
|
currentUsernameHint: 'Current username, enter new username to modify',
|
|
newUsername: 'New Username',
|
|
newUsernamePlaceholder: 'Enter new username (leave empty to keep unchanged)',
|
|
newUsernameHint: 'Leave empty to keep username unchanged',
|
|
currentPassword: 'Current Password',
|
|
currentPasswordPlaceholder: 'Please enter current password',
|
|
newPassword: 'New Password',
|
|
newPasswordPlaceholder: 'Please enter new password',
|
|
newPasswordHint: 'Password must be at least 8 characters',
|
|
confirmPassword: 'Confirm New Password',
|
|
confirmPasswordPlaceholder: 'Please enter new password again',
|
|
saving: 'Saving...',
|
|
save: 'Save Changes',
|
|
|
|
// Messages
|
|
passwordMismatch: 'Passwords do not match',
|
|
passwordTooShort: 'New password must be at least 8 characters',
|
|
accountInfoChangeSuccess: 'Account information changed successfully, please log in again',
|
|
passwordChangeSuccess: 'Password changed successfully, please log in again',
|
|
changeFailed: 'Change failed',
|
|
changePasswordFailed: 'Failed to change password'
|
|
},
|
|
|
|
// Logout
|
|
logoutConfirm: 'Are you sure you want to logout?',
|
|
logoutSuccess: 'Logged out safely'
|
|
},
|
|
apiStats: {
|
|
title: 'API Key Usage Statistics',
|
|
tutorialTitle: 'Tutorial',
|
|
userLogin: 'User Login',
|
|
adminPanel: 'Admin Panel',
|
|
statsQuery: 'Statistics Query',
|
|
tutorial: 'Tutorial',
|
|
timeRange: 'Statistics Time Range',
|
|
today: 'Today',
|
|
thisMonth: 'This Month',
|
|
|
|
// API Key Input
|
|
usageStatsQuery: 'Usage Statistics Query',
|
|
apiKeyDescription: 'Query your API Key usage and statistical data',
|
|
enterApiKey: 'Enter your API Key',
|
|
enterApiKeys: 'Enter your API Keys (one per line or comma separated)',
|
|
singleMode: 'Single',
|
|
aggregateMode: 'Aggregate',
|
|
singleModeTitle: 'Single Mode',
|
|
aggregateModeTitle: 'Aggregate Mode',
|
|
queryButton: 'Query',
|
|
|
|
// Stats Overview
|
|
batchQuerySummary: 'Batch Query Summary',
|
|
apiKeyInfo: 'API Key Information',
|
|
queryKeysCount: 'Query Keys Count',
|
|
activeKeysCount: 'Active Keys Count',
|
|
invalidKeysCount: 'Invalid Keys Count',
|
|
totalRequests: 'Total Requests',
|
|
totalTokens: 'Total Tokens',
|
|
totalCost: 'Total Cost',
|
|
individual: '',
|
|
|
|
// Aggregated Stats Card
|
|
usageRatio: 'Usage Ratio',
|
|
requests: ' requests',
|
|
otherKeys: 'Other',
|
|
keys: 'Keys',
|
|
|
|
// Model Usage Stats
|
|
modelUsageStats: 'Model Usage Statistics',
|
|
loadingModelStats: 'Loading model statistics...',
|
|
requestCount: ' requests',
|
|
totalCost: 'Total Cost',
|
|
inputTokens: 'Input Tokens',
|
|
outputTokens: 'Output Tokens',
|
|
cacheCreateTokens: 'Cache Create',
|
|
cacheReadTokens: 'Cache Read',
|
|
noModelData: 'No {period} model usage data available',
|
|
|
|
// Token Distribution
|
|
tokenDistribution: 'Token Usage Distribution',
|
|
inputToken: 'Input Tokens',
|
|
outputToken: 'Output Tokens',
|
|
cacheCreateToken: 'Cache Create Tokens',
|
|
cacheReadToken: 'Cache Read Tokens',
|
|
|
|
// Limit Config
|
|
limitConfig: 'Limit Configuration',
|
|
limitConfigAggregate: 'Limit Configuration (Aggregate Query Mode)',
|
|
apiKeysOverview: 'API Keys Overview',
|
|
totalKeys: 'Total Keys',
|
|
activeKeys: 'Active Keys',
|
|
aggregatedStats: 'Aggregated Statistics',
|
|
dailyLimit: 'Daily Limit',
|
|
monthlyLimit: 'Monthly Limit',
|
|
usageToday: 'Usage Today',
|
|
usageThisMonth: 'Usage This Month',
|
|
remaining: 'Remaining',
|
|
|
|
// Stats Overview - Additional keys
|
|
name: 'Name',
|
|
status: 'Status',
|
|
permissions: 'Permissions',
|
|
createdAt: 'Created At',
|
|
expiresAt: 'Expires At',
|
|
active: 'Active',
|
|
inactive: 'Inactive',
|
|
notActivated: 'Not Activated',
|
|
expired: 'Expired',
|
|
neverExpires: 'Never Expires',
|
|
allModels: 'All Models',
|
|
unknown: 'Unknown',
|
|
none: 'None',
|
|
formatError: 'Format Error',
|
|
usageStatsOverview: 'Usage Statistics Overview',
|
|
keyContribution: 'Key Contribution Ratio',
|
|
firstUseDays: 'Expires {days} days after first use',
|
|
todayRequests: 'Today Requests',
|
|
todayTokens: 'Today Tokens',
|
|
todayCost: 'Today Cost',
|
|
todayInputTokens: 'Today Input Tokens',
|
|
monthlyRequests: 'Monthly Requests',
|
|
monthlyTokens: 'Monthly Tokens',
|
|
monthlyCost: 'Monthly Cost',
|
|
monthlyInputTokens: 'Monthly Input Tokens',
|
|
|
|
// Limit Config - Additional keys
|
|
dailyCostLimit: 'Daily Cost Limit',
|
|
concurrencyLimit: 'Concurrency Limit',
|
|
modelLimit: 'Model Limit',
|
|
clientLimit: 'Client Limit',
|
|
restrictedModelsCount: 'Restricted {count} models',
|
|
allowAllModels: 'Allow All Models',
|
|
restrictedClientsCount: 'Restricted {count} clients',
|
|
allowAllClients: 'Allow All Clients',
|
|
detailedLimitInfo: 'Detailed Limit Information',
|
|
restrictedModelsList: 'Restricted Models List',
|
|
restrictedModelsNote: 'This API Key cannot access the models listed above',
|
|
allowedClientsList: 'Allowed Clients',
|
|
allowedClientsNote: 'This API Key can only be used by the clients listed above',
|
|
timeWindowLimit: 'Time Window Limit',
|
|
aggregateStatsNote: 'Each API Key has independent limit settings, individual limit configurations are not shown in aggregate mode',
|
|
aggregateStatsSummary: 'Aggregate Statistics Summary',
|
|
invalidKeysCount: '{count} invalid API Keys',
|
|
orRelationshipRequests: 'Request count and cost limits have an "OR" relationship, rate limiting is triggered when either limit is reached',
|
|
orRelationshipTokens: 'Request count and token usage have an "OR" relationship, rate limiting is triggered when either limit is reached',
|
|
onlyRequestsLimit: 'Only request count is limited',
|
|
|
|
// Token Distribution - Additional keys
|
|
totalAmount: 'Total',
|
|
todayTotal: 'Today Total',
|
|
monthlyTotal: 'Monthly Total',
|
|
|
|
// Additional missing keys
|
|
usageRatioOnlyInMultiMode: 'Usage ratio is only displayed in multi-key query mode',
|
|
noData: 'No Data',
|
|
|
|
// ApiKeyInput placeholders and texts
|
|
apiKeyPlaceholder: 'Please enter your API Key (cr_...)',
|
|
apiKeysPlaceholder: 'Please enter your API Keys, supporting the following formats:\ncr_xxx\ncr_yyy\nor\ncr_xxx, cr_yyy',
|
|
clearInput: 'Clear Input',
|
|
securityNoticeSingle: 'Your API Key is only used to query your own statistical data and will not be stored or used for other purposes',
|
|
securityNoticeMulti: 'Your API Keys are only used to query statistical data and will not be stored. Some individual information will not be displayed in aggregate mode.',
|
|
multiKeyTip: 'Tip: Supports querying up to 30 API Keys simultaneously. Use Ctrl+Enter for quick query.'
|
|
},
|
|
|
|
// Login page
|
|
login: {
|
|
title: 'Admin Panel',
|
|
username: 'Username',
|
|
usernamePlaceholder: 'Please enter username',
|
|
password: 'Password',
|
|
passwordPlaceholder: 'Please enter password',
|
|
loginButton: 'Login',
|
|
loggingIn: 'Logging in...'
|
|
},
|
|
|
|
// Dashboard page
|
|
dashboard: {
|
|
// Main stats cards
|
|
totalApiKeys: 'Total API Keys',
|
|
activeApiKeys: 'Active',
|
|
serviceAccounts: 'Service Accounts',
|
|
normalAccounts: 'Normal',
|
|
abnormalAccounts: 'Abnormal',
|
|
pausedAccounts: 'Paused',
|
|
rateLimitedAccounts: 'Rate Limited',
|
|
todayRequests: 'Today Requests',
|
|
totalRequests: 'Total Requests',
|
|
systemStatus: 'System Status',
|
|
uptime: 'Uptime',
|
|
|
|
// Platform accounts tooltip
|
|
claudeAccount: 'Claude: {total} accounts (Normal: {normal})',
|
|
consoleAccount: 'Console: {total} accounts (Normal: {normal})',
|
|
geminiAccount: 'Gemini: {total} accounts (Normal: {normal})',
|
|
bedrockAccount: 'Bedrock: {total} accounts (Normal: {normal})',
|
|
openaiAccount: 'OpenAI: {total} accounts (Normal: {normal})',
|
|
azureOpenaiAccount: 'Azure OpenAI: {total} accounts (Normal: {normal})',
|
|
|
|
// Token stats cards
|
|
todayToken: 'Today Tokens',
|
|
totalTokenConsumption: 'Total Token Consumption',
|
|
inputTokens: 'Input',
|
|
outputTokens: 'Output',
|
|
cacheCreateTokens: 'Cache Create',
|
|
cacheReadTokens: 'Cache Read',
|
|
|
|
// Real-time metrics
|
|
realtimeRPM: 'Realtime RPM',
|
|
realtimeTPM: 'Realtime TPM',
|
|
requestsPerMinute: 'Requests per Minute',
|
|
tokensPerMinute: 'Tokens per Minute',
|
|
historicalData: 'Historical Data',
|
|
minutes: 'minutes',
|
|
|
|
// Charts section
|
|
modelDistributionAndTrend: 'Model Usage Distribution & Token Usage Trends',
|
|
|
|
// Date filter presets
|
|
today: 'Today',
|
|
yesterday: 'Yesterday',
|
|
last7Days: 'Last 7 Days',
|
|
last30Days: 'Last 30 Days',
|
|
thisWeek: 'This Week',
|
|
lastWeek: 'Last Week',
|
|
thisMonth: 'This Month',
|
|
lastMonth: 'Last Month',
|
|
|
|
// Granularity buttons
|
|
byDay: 'By Day',
|
|
byHour: 'By Hour',
|
|
|
|
// Date picker
|
|
startDatePlaceholder: 'Start Date',
|
|
endDatePlaceholder: 'End Date',
|
|
dateSeparator: 'to',
|
|
maxHours24: 'Maximum 24 hours',
|
|
|
|
// Auto refresh controls
|
|
autoRefresh: 'Auto Refresh',
|
|
refresh: 'Refresh',
|
|
refreshing: 'Refreshing',
|
|
refreshDataNow: 'Refresh data now',
|
|
|
|
// Charts
|
|
tokenUsageDistribution: 'Token Usage Distribution',
|
|
detailedStatistics: 'Detailed Statistics',
|
|
noModelUsageData: 'No model usage data available',
|
|
|
|
// Table headers
|
|
model: 'Model',
|
|
requestCount: 'Requests',
|
|
totalTokens: 'Total Tokens',
|
|
cost: 'Cost',
|
|
percentage: 'Percentage',
|
|
|
|
// Trend charts
|
|
tokenUsageTrend: 'Token Usage Trend',
|
|
apiKeysUsageTrend: 'API Keys Usage Trend',
|
|
requestsCount: 'Requests Count',
|
|
tokenCount: 'Token Count',
|
|
totalApiKeysCount: 'Total {count} API Keys',
|
|
showingTop10: 'Total {count} API Keys, showing top 10 by usage',
|
|
|
|
// Chart labels
|
|
inputTokensLabel: 'Input Tokens',
|
|
outputTokensLabel: 'Output Tokens',
|
|
cacheCreateTokensLabel: 'Cache Create Tokens',
|
|
cacheReadTokensLabel: 'Cache Read Tokens',
|
|
costLabel: 'Cost (USD)',
|
|
requestsLabel: 'Requests',
|
|
time: 'Time',
|
|
date: 'Date',
|
|
tokenQuantity: 'Token Quantity',
|
|
requestsQuantity: 'Requests Count'
|
|
}
|
|
}
|