mirror of
https://github.com/Wei-Shaw/claude-relay-service.git
synced 2026-01-23 09:21:24 +00:00
- 添加useI18n导入并替换100+硬编码中文文本 - 扩展三种语言文件的accounts翻译键(150+条) - 更新下拉选项为响应式计算属性支持动态翻译 - 国际化页面标题、表格列头、筛选器和操作按钮 - 处理状态文本、错误消息和工具提示 - 更新JavaScript函数返回值使用翻译键 - 完整支持桌面端和移动端视图的国际化 - 修正货币符号和时间格式化的参数化翻译 涵盖组件: - 账户管理主界面(标题、描述、筛选器) - 桌面端表格视图(列头、状态、操作按钮) - 移动端卡片视图(标签、按钮、状态) - 错误处理和确认对话框 - 时间和数值格式化函数
495 lines
16 KiB
JavaScript
495 lines
16 KiB
JavaScript
export default {
|
||
common: {
|
||
save: '保存',
|
||
cancel: '取消',
|
||
confirm: '確認',
|
||
loading: '載入中...',
|
||
edit: '編輯',
|
||
delete: '刪除',
|
||
create: '建立',
|
||
update: '更新',
|
||
search: '搜尋',
|
||
reset: '重置',
|
||
locale: 'zh-TW'
|
||
},
|
||
language: {
|
||
zh: '簡體中文',
|
||
'zh-tw': '繁體中文',
|
||
en: 'English',
|
||
current: '當前語言',
|
||
switch: '切換語言'
|
||
},
|
||
header: {
|
||
adminPanel: '管理後台',
|
||
userMenu: '用戶選單',
|
||
logout: '退出登錄',
|
||
settings: '系統設置',
|
||
|
||
// Version related
|
||
currentVersion: '當前版本',
|
||
newVersionAvailable: '有新版本可用',
|
||
newVersion: '新版本',
|
||
hasUpdate: '有新版本',
|
||
viewUpdate: '查看更新',
|
||
checkingUpdate: '檢查更新中...',
|
||
alreadyLatest: '當前已是最新版本',
|
||
checkUpdate: '檢查更新',
|
||
|
||
// User menu items
|
||
changeAccountInfo: '修改帳戶資訊',
|
||
|
||
// Change password modal
|
||
changePasswordModal: {
|
||
title: '修改帳戶資訊',
|
||
currentUsername: '當前用戶名',
|
||
currentUsernameHint: '當前用戶名,輸入新用戶名以修改',
|
||
newUsername: '新用戶名',
|
||
newUsernamePlaceholder: '輸入新用戶名(留空保持不變)',
|
||
newUsernameHint: '留空表示不修改用戶名',
|
||
currentPassword: '當前密碼',
|
||
currentPasswordPlaceholder: '請輸入當前密碼',
|
||
newPassword: '新密碼',
|
||
newPasswordPlaceholder: '請輸入新密碼',
|
||
newPasswordHint: '密碼長度至少8位',
|
||
confirmPassword: '確認新密碼',
|
||
confirmPasswordPlaceholder: '請再次輸入新密碼',
|
||
saving: '保存中...',
|
||
save: '保存修改',
|
||
|
||
// Messages
|
||
passwordMismatch: '兩次輸入的密碼不一致',
|
||
passwordTooShort: '新密碼長度至少8位',
|
||
accountInfoChangeSuccess: '帳戶資訊修改成功,請重新登錄',
|
||
passwordChangeSuccess: '密碼修改成功,請重新登錄',
|
||
changeFailed: '修改失敗',
|
||
changePasswordFailed: '修改密碼失敗'
|
||
},
|
||
|
||
// Logout
|
||
logoutConfirm: '確定要退出登錄嗎?',
|
||
logoutSuccess: '已安全退出'
|
||
},
|
||
apiStats: {
|
||
title: 'API Key 使用統計',
|
||
tutorialTitle: '使用教學',
|
||
userLogin: '用戶登錄',
|
||
adminPanel: '管理後台',
|
||
statsQuery: '統計查詢',
|
||
tutorial: '使用教學',
|
||
timeRange: '統計時間範圍',
|
||
today: '今日',
|
||
thisMonth: '本月',
|
||
|
||
// API Key Input
|
||
usageStatsQuery: '使用統計查詢',
|
||
apiKeyDescription: '查詢您的 API Key 使用情況和統計資料',
|
||
enterApiKey: '輸入您的 API Key',
|
||
enterApiKeys: '輸入您的 API Keys(每行一個或用逗號分隔)',
|
||
singleMode: '單一',
|
||
aggregateMode: '彙整',
|
||
singleModeTitle: '單一模式',
|
||
aggregateModeTitle: '彙整模式',
|
||
queryButton: '查詢',
|
||
|
||
// Stats Overview
|
||
batchQuerySummary: '批次查詢概要',
|
||
apiKeyInfo: 'API Key 資訊',
|
||
queryKeysCount: '查詢 Keys 數',
|
||
activeKeysCount: '有效 Keys 數',
|
||
invalidKeysCount: '無效 Keys 數',
|
||
totalRequests: '總請求數',
|
||
totalTokens: '總 Token 數',
|
||
totalCost: '總費用',
|
||
individual: '個',
|
||
|
||
// Aggregated Stats Card
|
||
usageRatio: '使用占比',
|
||
requests: '次',
|
||
otherKeys: '其他',
|
||
keys: 'Keys',
|
||
|
||
// Model Usage Stats
|
||
modelUsageStats: '模型使用統計',
|
||
loadingModelStats: '載入模型統計資料中...',
|
||
requestCount: '次請求',
|
||
totalCost: '總費用',
|
||
inputTokens: '輸入 Token',
|
||
outputTokens: '輸出 Token',
|
||
cacheCreateTokens: '快取建立',
|
||
cacheReadTokens: '快取讀取',
|
||
noModelData: '暫無{period}模型使用資料',
|
||
|
||
// Token Distribution
|
||
tokenDistribution: 'Token 使用分佈',
|
||
inputToken: '輸入 Token',
|
||
outputToken: '輸出 Token',
|
||
cacheCreateToken: '快取建立 Token',
|
||
cacheReadToken: '快取讀取 Token',
|
||
|
||
// Limit Config
|
||
limitConfig: '限制設定',
|
||
limitConfigAggregate: '限制設定(彙整查詢模式)',
|
||
apiKeysOverview: 'API Keys 概況',
|
||
totalKeys: '總計 Keys',
|
||
activeKeys: '啟用 Keys',
|
||
aggregatedStats: '彙整統計',
|
||
dailyLimit: '日限制',
|
||
monthlyLimit: '月限制',
|
||
usageToday: '今日使用',
|
||
usageThisMonth: '本月使用',
|
||
remaining: '剩餘',
|
||
|
||
// Stats Overview - Additional keys
|
||
name: '名稱',
|
||
status: '狀態',
|
||
permissions: '權限',
|
||
createdAt: '建立時間',
|
||
expiresAt: '過期時間',
|
||
active: '活躍',
|
||
inactive: '已停用',
|
||
notActivated: '未啓動',
|
||
expired: '已過期',
|
||
neverExpires: '永不過期',
|
||
allModels: '全部模型',
|
||
unknown: '未知',
|
||
none: '無',
|
||
formatError: '格式錯誤',
|
||
usageStatsOverview: '使用統計概覽',
|
||
keyContribution: '各 Key 貢獻占比',
|
||
firstUseDays: '首次使用後{days}天過期',
|
||
todayRequests: '今日請求數',
|
||
todayTokens: '今日Token數',
|
||
todayCost: '今日費用',
|
||
todayInputTokens: '今日輸入Token',
|
||
monthlyRequests: '本月請求數',
|
||
monthlyTokens: '本月Token數',
|
||
monthlyCost: '本月費用',
|
||
monthlyInputTokens: '本月輸入Token',
|
||
|
||
// Limit Config - Additional keys
|
||
dailyCostLimit: '每日費用限制',
|
||
concurrencyLimit: '並發限制',
|
||
modelLimit: '模型限制',
|
||
clientLimit: '用戶端限制',
|
||
restrictedModelsCount: '限制 {count} 個模型',
|
||
allowAllModels: '允許所有模型',
|
||
restrictedClientsCount: '限制 {count} 個用戶端',
|
||
allowAllClients: '允許所有用戶端',
|
||
detailedLimitInfo: '詳細限制資訊',
|
||
restrictedModelsList: '受限模型清單',
|
||
restrictedModelsNote: '此 API Key 不能存取以上列出的模型',
|
||
allowedClientsList: '允許的用戶端',
|
||
allowedClientsNote: '此 API Key 只能被以上列出的用戶端使用',
|
||
timeWindowLimit: '時間視窗限制',
|
||
aggregateStatsNote: '每個 API Key 有獨立的限制設定,彙整模式下不顯示單個限制配置',
|
||
aggregateStatsSummary: '彙整統計摘要',
|
||
invalidKeysCount: '{count} 個無效的 API Key',
|
||
orRelationshipRequests: '請求次數和費用限制為「或」的關係,任一達到限制即觸發限流',
|
||
orRelationshipTokens: '請求次數和Token使用量為「或」的關係,任一達到限制即觸發限流',
|
||
onlyRequestsLimit: '僅限制請求次數',
|
||
|
||
// Token Distribution - Additional keys
|
||
totalAmount: '總計',
|
||
todayTotal: '今日總計',
|
||
monthlyTotal: '本月總計',
|
||
|
||
// Additional missing keys
|
||
usageRatioOnlyInMultiMode: '使用占比僅在多Key查詢時顯示',
|
||
noData: '暫無資料',
|
||
|
||
// ApiKeyInput placeholders and texts
|
||
apiKeyPlaceholder: '請輸入您的 API Key (cr_...)',
|
||
apiKeysPlaceholder: '請輸入您的 API Keys,支援以下格式:\ncr_xxx\ncr_yyy\n或\ncr_xxx, cr_yyy',
|
||
clearInput: '清空輸入',
|
||
securityNoticeSingle: '您的 API Key 僅用於查詢自己的統計資料,不會被儲存或用於其他用途',
|
||
securityNoticeMulti: '您的 API Keys 僅用於查詢統計資料,不會被儲存。彙整模式下部分個體化資訊將不顯示。',
|
||
multiKeyTip: '提示:最多支援同時查詢 30 個 API Keys。使用 Ctrl+Enter 快速查詢。'
|
||
},
|
||
|
||
// Login page
|
||
login: {
|
||
title: '管理後台',
|
||
username: '用戶名',
|
||
usernamePlaceholder: '請輸入用戶名',
|
||
password: '密碼',
|
||
passwordPlaceholder: '請輸入密碼',
|
||
loginButton: '登錄',
|
||
loggingIn: '登錄中...'
|
||
},
|
||
|
||
// Dashboard page
|
||
dashboard: {
|
||
// Main stats cards
|
||
totalApiKeys: '總 API Keys',
|
||
activeApiKeys: '活躍',
|
||
serviceAccounts: '服務帳戶',
|
||
normalAccounts: '正常',
|
||
abnormalAccounts: '異常',
|
||
pausedAccounts: '停止調度',
|
||
rateLimitedAccounts: '限流',
|
||
todayRequests: '今日請求',
|
||
totalRequests: '總請求',
|
||
systemStatus: '系統狀態',
|
||
uptime: '運行時間',
|
||
|
||
// Platform accounts tooltip
|
||
claudeAccount: 'Claude: {total} 個 (正常: {normal})',
|
||
consoleAccount: 'Console: {total} 個 (正常: {normal})',
|
||
geminiAccount: 'Gemini: {total} 個 (正常: {normal})',
|
||
bedrockAccount: 'Bedrock: {total} 個 (正常: {normal})',
|
||
openaiAccount: 'OpenAI: {total} 個 (正常: {normal})',
|
||
azureOpenaiAccount: 'Azure OpenAI: {total} 個 (正常: {normal})',
|
||
|
||
// Token stats cards
|
||
todayToken: '今日Token',
|
||
totalTokenConsumption: '總Token消耗',
|
||
inputTokens: '輸入',
|
||
outputTokens: '輸出',
|
||
cacheCreateTokens: '快取建立',
|
||
cacheReadTokens: '快取讀取',
|
||
|
||
// Real-time metrics
|
||
realtimeRPM: '即時RPM',
|
||
realtimeTPM: '即時TPM',
|
||
requestsPerMinute: '每分钟請求數',
|
||
tokensPerMinute: '每分钟Token數',
|
||
historicalData: '歷史資料',
|
||
minutes: '分钟',
|
||
|
||
// Charts section
|
||
modelDistributionAndTrend: '模型使用分佈與Token使用趋勢',
|
||
|
||
// Date filter presets
|
||
today: '今日',
|
||
yesterday: '昨日',
|
||
last7Days: '近 7 天',
|
||
last30Days: '近 30 天',
|
||
thisWeek: '本週',
|
||
lastWeek: '上週',
|
||
thisMonth: '本月',
|
||
lastMonth: '上月',
|
||
|
||
// Granularity buttons
|
||
byDay: '按日',
|
||
byHour: '按小時',
|
||
|
||
// Date picker
|
||
startDatePlaceholder: '開始日期',
|
||
endDatePlaceholder: '結束日期',
|
||
dateSeparator: '至',
|
||
maxHours24: '最多24小時',
|
||
|
||
// Auto refresh controls
|
||
autoRefresh: '自動刷新',
|
||
refresh: '刷新',
|
||
refreshing: '刷新中',
|
||
refreshDataNow: '立即刷新資料',
|
||
|
||
// Charts
|
||
tokenUsageDistribution: 'Token使用分佈',
|
||
detailedStatistics: '詳細統計資料',
|
||
noModelUsageData: '暫無模型使用資料',
|
||
|
||
// Table headers
|
||
model: '模型',
|
||
requestCount: '請求數',
|
||
totalTokens: '總Token',
|
||
cost: '費用',
|
||
percentage: '占比',
|
||
|
||
// Trend charts
|
||
tokenUsageTrend: 'Token使用趋勢',
|
||
apiKeysUsageTrend: 'API Keys 使用趋勢',
|
||
requestsCount: '請求次數',
|
||
tokenCount: 'Token 數量',
|
||
totalApiKeysCount: '共 {count} 個 API Key',
|
||
showingTop10: '共 {count} 個 API Key,顯示使用量前 10 個',
|
||
|
||
// Chart labels
|
||
inputTokensLabel: '輸入Token',
|
||
outputTokensLabel: '輸出Token',
|
||
cacheCreateTokensLabel: '快取建立Token',
|
||
cacheReadTokensLabel: '快取讀取Token',
|
||
costLabel: '費用 (USD)',
|
||
requestsLabel: '請求數',
|
||
time: '時間',
|
||
date: '日期',
|
||
tokenQuantity: 'Token數量',
|
||
requestsQuantity: '請求次數'
|
||
},
|
||
|
||
// Accounts page
|
||
accounts: {
|
||
title: '帳戶管理',
|
||
description: '管理您的 Claude、Gemini、OpenAI 和 Azure OpenAI 帳戶及代理配置',
|
||
|
||
// Filters and sorting
|
||
sortBy: '選擇排序',
|
||
selectPlatform: '選擇平台',
|
||
selectGroup: '選擇分組',
|
||
refresh: '刷新',
|
||
refreshTooltip: '刷新資料 (Ctrl/⌘+點擊強制刷新所有快取)',
|
||
addAccount: '添加帳戶',
|
||
|
||
// Sort options
|
||
sortByName: '按名稱排序',
|
||
sortByDailyTokens: '按今日Token排序',
|
||
sortByDailyRequests: '按今日請求數排序',
|
||
sortByTotalTokens: '按總Token排序',
|
||
sortByLastUsed: '按最後使用排序',
|
||
|
||
// Platform options
|
||
allPlatforms: '所有平台',
|
||
claudePlatform: 'Claude',
|
||
claudeConsolePlatform: 'Claude Console',
|
||
geminiPlatform: 'Gemini',
|
||
openaiPlatform: 'OpenAi',
|
||
azureOpenaiPlatform: 'Azure OpenAI',
|
||
bedrockPlatform: 'Bedrock',
|
||
|
||
// Group options
|
||
allAccounts: '所有帳戶',
|
||
ungroupedAccounts: '未分組帳戶',
|
||
|
||
// Loading states
|
||
loadingAccounts: '正在載入帳戶...',
|
||
noAccounts: '暫無帳戶',
|
||
noAccountsHint: '點擊上方按鈕添加您的第一個帳戶',
|
||
|
||
// Table headers
|
||
name: '名稱',
|
||
platformType: '平台/類型',
|
||
status: '狀態',
|
||
priority: '優先級',
|
||
proxy: '代理',
|
||
dailyUsage: '今日使用',
|
||
sessionWindow: '會話窗口',
|
||
lastUsed: '最後使用',
|
||
actions: '操作',
|
||
|
||
// Account types
|
||
dedicated: '專屬',
|
||
groupScheduling: '分組調度',
|
||
shared: '共享',
|
||
belongsToGroup: '所屬分組: {name}',
|
||
|
||
// Platform labels
|
||
unknown: '未知',
|
||
apiKey: 'API Key',
|
||
oauth: 'OAuth',
|
||
setup: 'Setup',
|
||
aws: 'AWS',
|
||
|
||
// Account status
|
||
normal: '正常',
|
||
abnormal: '異常',
|
||
blocked: '已封鎖',
|
||
tempError: '臨時異常',
|
||
rateLimited: '限流中',
|
||
notSchedulable: '不可調度',
|
||
bound: '綁定: {count} 個API Key',
|
||
|
||
// Proxy status
|
||
noProxy: '無代理',
|
||
|
||
// Usage statistics
|
||
requests: '次',
|
||
noData: '暫無資料',
|
||
averageRpm: '平均 {rpm} RPM',
|
||
|
||
// Session window tooltip
|
||
sessionWindowTooltip: {
|
||
title: '會話窗口進度表示5小時窗口的時間進度',
|
||
normal: '正常:請求正常處理',
|
||
warning: '警告:接近限制',
|
||
rejected: '拒絕:達到速率限制'
|
||
},
|
||
|
||
// Session window status
|
||
remaining: '剩餘 {time}',
|
||
ended: '已結束',
|
||
|
||
// Console quota
|
||
quotaProgress: '額度進度',
|
||
remainingQuota: '剩餘 $${amount}',
|
||
reset: '重置 {time}',
|
||
|
||
// Mobile view labels
|
||
dailyUsageLabel: '今日使用',
|
||
sessionWindowLabel: '會話窗口',
|
||
lastUsedLabel: '最後使用',
|
||
proxyLabel: '代理',
|
||
priorityLabel: '優先級',
|
||
neverUsed: '從未使用',
|
||
sessionWindowTooltipMobile: '會話窗口進度不代表使用量,僅表示距離下一個5小時窗口的剩餘時間',
|
||
|
||
// Action buttons
|
||
resetStatus: '重置狀態',
|
||
resetting: '重置中...',
|
||
resetStatusTooltip: '重置所有異常狀態',
|
||
scheduling: '調度',
|
||
disabled: '停用',
|
||
enableTooltip: '點擊啟用調度',
|
||
disableTooltip: '點擊禁用調度',
|
||
edit: '編輯',
|
||
editTooltip: '編輯帳戶',
|
||
delete: '刪除',
|
||
deleteTooltip: '刪除帳戶',
|
||
pause: '暫停',
|
||
enable: '啟用',
|
||
|
||
// Time formatting
|
||
justNow: '剛剛',
|
||
minutesAgo: '{minutes} 分鐘前',
|
||
hoursAgo: '{hours} 小時前',
|
||
daysAgo: '{days} 天前',
|
||
hoursAndMinutes: '{hours}小時{minutes}分鐘',
|
||
hoursOnly: '{hours}小時',
|
||
minutesOnly: '{minutes}分鐘',
|
||
daysAndHours: '{days}天{hours}小時',
|
||
daysOnly: '{days}天',
|
||
|
||
// Rate limit time
|
||
rateLimitTime: '({time})',
|
||
|
||
// Messages and confirmations
|
||
resetStatusConfirmTitle: '重置帳戶狀態',
|
||
resetStatusConfirmMessage: '確定要重置此帳戶的所有異常狀態嗎?這將清除限流狀態、401錯誤計數等所有異常標記。',
|
||
resetStatusConfirmButton: '確定重置',
|
||
resetStatusCancelButton: '取消',
|
||
statusResetSuccess: '帳戶狀態已重置',
|
||
statusResetFailed: '狀態重置失敗',
|
||
|
||
deleteAccountTitle: '刪除帳戶',
|
||
deleteAccountMessage: '確定要刪除帳戶 "{name}" 嗎?\n\n此操作不可恢復。',
|
||
deleteAccountButton: '刪除',
|
||
deleteAccountCancel: '取消',
|
||
cannotDeleteBoundAccount: '無法刪除此帳號,有 {count} 個API Key綁定到此帳號,請先解綁所有API Key',
|
||
accountDeleted: '帳戶已刪除',
|
||
deleteFailed: '刪除失敗',
|
||
|
||
enabledScheduling: '已啟用調度',
|
||
disabledScheduling: '已禁用調度',
|
||
schedulingToggleFailed: '切換調度狀態失敗',
|
||
unsupportedAccountType: '該帳戶類型暫不支持調度控制',
|
||
operationFailed: '操作失敗',
|
||
|
||
accountCreateSuccess: '帳戶創建成功',
|
||
accountUpdateSuccess: '帳戶更新成功',
|
||
loadAccountsFailed: '載入帳戶失敗',
|
||
unsupportedAccountTypeReset: '不支持的帳戶類型',
|
||
|
||
// Schedulable reasons
|
||
invalidApiKey: 'API Key無效或已過期(401錯誤)',
|
||
serviceOverload: '服務過載(529錯誤)',
|
||
rateLimitTriggered: '觸發限流(429錯誤)',
|
||
authFailed: '認證失敗(401錯誤)',
|
||
manualStop: '手動停止調度',
|
||
|
||
// Account type display
|
||
claudeMax: 'Claude Max',
|
||
claudePro: 'Claude Pro',
|
||
claudeFree: 'Claude Free'
|
||
}
|
||
}
|