mirror of
https://github.com/Wei-Shaw/claude-relay-service.git
synced 2026-01-22 16:43:35 +00:00
- 扩展三个语言文件,添加198个settings翻译键,支持中英繁三语言 - 完成SettingsView.vue所有1604行的系统化国际化处理: * 完整国际化HTML模板:页面标题、导航标签、品牌设置、Webhook设置等 * 完整国际化JavaScript功能:Toast消息、确认对话框、表单验证、错误处理 * 集成Vue i18n:添加useI18n composable,实现响应式翻译支持 * 转换静态函数为响应式翻译,支持语言切换时实时更新 - 主要功能模块全面国际化: * 品牌设置:网站名称、图标管理、管理入口配置完全国际化 * Webhook通知:7种平台类型、通知类型、高级设置完全国际化 * 模态框:复杂的平台添加/编辑表单完全国际化 * 响应式布局:桌面端表格和移动端卡片视图完全适配 * 错误处理:37个Toast消息、确认对话框、表单验证完全国际化 现在SettingsView完全支持多语言切换,与其他页面保持一致的国际化标准
870 lines
28 KiB
JavaScript
870 lines
28 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',
|
||
|
||
// Platform display
|
||
openaiResponsesPlatform: 'OpenAI-Responses',
|
||
ccrPlatform: 'CCR'
|
||
},
|
||
apiKeys: {
|
||
// Page title and description
|
||
title: 'API Keys 管理',
|
||
description: '管理和監控您的 API 密鑰',
|
||
|
||
// Tab navigation
|
||
activeTab: '活躍 API Keys',
|
||
deletedTab: '已刪除 API Keys',
|
||
|
||
// Toolbar and actions
|
||
refresh: '重新整理',
|
||
refreshTooltip: '重新整理 API Keys 清單(Ctrl+點擊強制重新整理)',
|
||
createNew: '建立新 Key',
|
||
bulkEdit: '編輯已選取',
|
||
bulkDelete: '刪除已選取',
|
||
|
||
// Table headers
|
||
name: '名稱',
|
||
tags: '標籤',
|
||
status: '狀態',
|
||
usageStats: '使用統計',
|
||
createdAt: '建立時間',
|
||
expiresAt: '過期時間',
|
||
actions: '操作',
|
||
|
||
// Filter options
|
||
timeRange: {
|
||
today: '今日',
|
||
week: '最近7天',
|
||
month: '本月',
|
||
all: '全部時間'
|
||
},
|
||
|
||
// Status
|
||
active: '活躍',
|
||
disabled: '停用',
|
||
expired: '已過期',
|
||
expiringSoon: '即將過期',
|
||
neverExpire: '永不過期',
|
||
notActivated: '未啟用',
|
||
|
||
// Usage statistics
|
||
dailyCost: '今日費用',
|
||
totalCost: '總費用',
|
||
dailyRequests: '今日請求',
|
||
lastUsed: '最後使用',
|
||
neverUsed: '從未使用',
|
||
minutesAgo: '{minutes} 分鐘前',
|
||
hoursAgo: '{hours} 小時前',
|
||
daysAgo: '{days} 天前',
|
||
justNow: '剛剛',
|
||
requests: '次',
|
||
|
||
// Search and filter
|
||
searchPlaceholder: '搜尋名稱...',
|
||
searchPlaceholderWithOwner: '搜尋名稱或擁有者...',
|
||
allTags: '所有標籤',
|
||
noTags: '無標籤',
|
||
|
||
// Binding information
|
||
shared: '使用共享池',
|
||
dedicated: '專屬',
|
||
consoleAccount: 'Console賬戶',
|
||
bindingWarning: '⚠️ 賬戶不存在',
|
||
|
||
// Limits and quotas
|
||
dailyLimit: '每日費用',
|
||
weeklyOpusLimit: 'Opus週費用',
|
||
remainingQuota: '剩餘: ${amount}',
|
||
reset: '重設於 {time}',
|
||
quotaProgress: '配額進度',
|
||
|
||
// Model statistics
|
||
modelStats: '模型使用分佈',
|
||
modelStatsCount: '{count} 個模型',
|
||
totalTokens: '總Token',
|
||
inputTokens: '輸入',
|
||
outputTokens: '輸出',
|
||
cacheCreate: '快取建立',
|
||
cacheRead: '快取讀取',
|
||
totalRequests: '總請求',
|
||
noModelData: '暫無模型使用資料',
|
||
resetFilter: '重新整理',
|
||
adjustTimeRange: '嘗試調整時間範圍或點擊重新整理重新載入資料',
|
||
|
||
// Date filter
|
||
dateFilter: {
|
||
today: '今日',
|
||
days7: '7天',
|
||
days30: '30天'
|
||
},
|
||
|
||
// Actions
|
||
viewDetails: '查看詳細統計',
|
||
edit: '編輯',
|
||
renew: '續期',
|
||
activate: '啟用',
|
||
disable: '停用',
|
||
copy: '複製',
|
||
copyStatsLink: '複製統計頁面連結',
|
||
|
||
// Pagination
|
||
totalRecords: '共 {count} 條記錄',
|
||
pageSize: '每頁顯示',
|
||
records: '條',
|
||
|
||
// Empty states
|
||
noApiKeys: '暫無 API Keys',
|
||
noApiKeysHint: '點擊上方按鈕建立您的第一個 API Key',
|
||
noDeletedKeys: '暫無已刪除的 API Keys',
|
||
noDeletedKeysHint: '已刪除的 API Keys 會出現在這裡',
|
||
loading: '正在載入 API Keys...',
|
||
loadingDeleted: '正在載入已刪除的 API Keys...',
|
||
loadingModelStats: '載入模型統計...',
|
||
|
||
// Deleted keys table
|
||
creator: '建立者',
|
||
deletedBy: '刪除者',
|
||
deletedAt: '刪除時間',
|
||
canRestore: '恢復',
|
||
permanentDelete: '徹底刪除',
|
||
clearAllDeleted: '清空所有已刪除',
|
||
|
||
// User types
|
||
admin: '管理員',
|
||
user: '用戶',
|
||
unknown: '未知',
|
||
system: '系統',
|
||
|
||
// Confirmation dialogs
|
||
confirmDisable: '確定要停用 API Key "{name}" 嗎?停用後所有使用此 Key 的請求將返回 401 錯誤。',
|
||
confirmDelete: '確定要刪除這個 API Key 嗎?此操作不可恢復。',
|
||
confirmBatchDelete: '確定要刪除已選取的 {count} 個 API Key 嗎?此操作不可恢復。',
|
||
confirmRestore: '確定要恢復這個 API Key 嗎?恢復後可以重新使用。',
|
||
confirmPermanentDelete: '確定要徹底刪除這個 API Key 嗎?此操作不可恢復,所有相關資料將被永久刪除。',
|
||
confirmClearAll: '確定要徹底刪除全部 {count} 個已刪除的 API Keys 嗎?此操作不可恢復,所有相關資料將被永久刪除。',
|
||
|
||
// Success messages
|
||
keyActivated: 'API Key 已啟用',
|
||
keyDisabled: 'API Key 已停用',
|
||
keyDeleted: 'API Key 已刪除',
|
||
keyRestored: 'API Key 已成功恢復',
|
||
keyPermanentDeleted: 'API Key 已徹底刪除',
|
||
allDeletedCleared: '已清空所有已刪除的 API Keys',
|
||
linkCopied: '已複製統計頁面連結',
|
||
expiryUpdated: '過期時間已更新',
|
||
|
||
// Error messages
|
||
selectKeysFirst: '請先選擇要編輯的 API Keys',
|
||
loadFailed: '載入 API Keys 失敗',
|
||
operationFailed: '操作失敗',
|
||
copyFailed: '複製失敗,請手動複製',
|
||
updateFailed: '更新失敗',
|
||
deleteFailed: '刪除失敗',
|
||
restoreFailed: '恢復失敗',
|
||
clearFailed: '清空失敗',
|
||
|
||
// Tooltips and helpers
|
||
editExpiry: '編輯過期時間',
|
||
activationDays: '未啟用 ({days}天)',
|
||
boundTo: '綁定到',
|
||
belongsToGroup: '所屬分組: {name}',
|
||
|
||
// Batch operations
|
||
batchSuccess: '成功處理 {count} 個項目',
|
||
batchPartialFail: '{failed} 個處理失敗',
|
||
batchAllFailed: '所有項目處理失敗'
|
||
},
|
||
|
||
// Settings 設置頁面
|
||
settings: {
|
||
title: '系統設置',
|
||
description: '網站定制和通知配置',
|
||
loading: '正在載入設置...',
|
||
|
||
// 導航標籤
|
||
branding: '品牌設置',
|
||
webhook: '通知設置',
|
||
|
||
// 品牌設置
|
||
siteName: '網站名稱',
|
||
siteNameDescription: '品牌標識',
|
||
siteNamePlaceholder: 'Claude Relay Service',
|
||
siteNameHint: '將顯示在瀏覽器標題和頁面頭部',
|
||
|
||
siteIcon: '網站圖標',
|
||
siteIconDescription: 'Favicon',
|
||
currentIcon: '當前圖標',
|
||
uploadIcon: '上傳圖標',
|
||
removeIcon: '刪除',
|
||
iconFormats: '支援 .ico, .png, .jpg, .svg 格式,最大 350KB',
|
||
iconPreview: '圖標預覽',
|
||
|
||
adminEntry: '管理入口',
|
||
adminEntryDescription: '登入按鈕顯示',
|
||
hideLoginButton: '隱藏登入按鈕',
|
||
showLoginButton: '顯示登入按鈕',
|
||
adminEntryHint: '隱藏後,用戶需要直接訪問 /admin/login 頁面登入',
|
||
|
||
// 移動端卡片標題
|
||
siteNameCard: '站點名稱',
|
||
siteNameCardDesc: '自定義您的站點品牌名稱',
|
||
siteIconCard: '站點圖標',
|
||
siteIconCardDesc: '上傳自定義圖標或輸入圖標URL',
|
||
adminEntryCard: '管理入口',
|
||
adminEntryCardDesc: '控制登入按鈕在首頁的顯示',
|
||
|
||
// 操作按鈕
|
||
save: '保存設置',
|
||
saving: '保存中...',
|
||
reset: '重置為預設',
|
||
lastUpdated: '最後更新:{time}',
|
||
lastUpdatedMobile: '上次更新: {time}',
|
||
|
||
// Webhook 設置
|
||
enableWebhook: '啟用 Webhook 通知',
|
||
webhookDescription: '開啟後,系統將按配置發送通知到指定平台',
|
||
|
||
// 通知類型
|
||
notificationTypes: '通知類型',
|
||
accountAnomaly: '帳號異常',
|
||
quotaWarning: '配額警告',
|
||
systemError: '系統錯誤',
|
||
securityAlert: '安全警報',
|
||
accountAnomalyDesc: '帳號狀態異常、認證失敗等',
|
||
quotaWarningDesc: 'API調用配額不足警告',
|
||
systemErrorDesc: '系統運行錯誤和故障',
|
||
securityAlertDesc: '安全相關的警報通知',
|
||
|
||
// 通知平台
|
||
notificationPlatforms: '通知平台',
|
||
addPlatform: '新增平台',
|
||
noPlatforms: '暫無配置的通知平台,請點擊「新增平台」按鈕新增',
|
||
enableSignature: '已啟用簽名驗證',
|
||
testConnection: '測試連線',
|
||
edit: '編輯',
|
||
delete: '刪除',
|
||
|
||
// 高級設置
|
||
advancedSettings: '進階設置',
|
||
maxRetries: '最大重試次數',
|
||
retryDelay: '重試延遲 (毫秒)',
|
||
timeout: '逾時時間 (毫秒)',
|
||
|
||
// 測試通知
|
||
sendTestNotification: '發送測試通知',
|
||
|
||
// 平台模態框
|
||
addPlatformModal: '新增通知平台',
|
||
editPlatformModal: '編輯通知平台',
|
||
configurePlatform: '配置新的Webhook通知渠道',
|
||
updatePlatform: '配置並更新Webhook通知渠道',
|
||
|
||
platformType: '平台類型',
|
||
platformName: '名稱',
|
||
platformNameOptional: '(可選)',
|
||
platformNamePlaceholder: '例如:運維群通知、開發測試群',
|
||
|
||
webhookUrl: 'Webhook URL',
|
||
webhookUrlRequired: '*',
|
||
webhookUrlPlaceholder: 'https://...',
|
||
editModeWarning: '編輯模式下不能更改平台類型',
|
||
|
||
// Bark 特有設置
|
||
deviceKey: '設備密鑰 (Device Key)',
|
||
deviceKeyPlaceholder: '例如:aBcDeFgHiJkLmNoPqRsTuVwX',
|
||
deviceKeyHint: '在Bark App中查看您的推送密鑰',
|
||
serverAddress: '伺服器地址',
|
||
serverAddressOptional: '(可選)',
|
||
serverAddressPlaceholder: '預設: https://api.day.app/push',
|
||
notificationLevel: '通知級別',
|
||
notificationSound: '通知聲音',
|
||
notificationGroup: '通知分組',
|
||
notificationGroupOptional: '(可選)',
|
||
notificationGroupPlaceholder: '預設: claude-relay',
|
||
|
||
// 通知級別選項
|
||
levelAuto: '自動(根據通知類型)',
|
||
levelPassive: '被動',
|
||
levelActive: '預設',
|
||
levelTimeSensitive: '時效性',
|
||
levelCritical: '緊急',
|
||
|
||
// 聲音選項
|
||
soundAuto: '自動(根據通知類型)',
|
||
soundDefault: '預設',
|
||
soundAlarm: '警報',
|
||
soundBell: '鈴聲',
|
||
soundBirdsong: '鳥鳴',
|
||
soundElectronic: '電子音',
|
||
soundGlass: '玻璃',
|
||
soundHorn: '喇叭',
|
||
soundSilence: '靜音',
|
||
|
||
// Bark 提示信息
|
||
barkInstructions: [
|
||
'1. 在iPhone上安裝Bark App',
|
||
'2. 打開App獲取您的設備密鑰',
|
||
'3. 將密鑰貼上到上方輸入框'
|
||
],
|
||
|
||
// 簽名設置
|
||
enableSignatureVerify: '啟用簽名驗證',
|
||
signatureEnabled: '已啟用',
|
||
signatureSecret: '簽名密鑰',
|
||
signatureSecretPlaceholder: 'SEC...',
|
||
|
||
// 平台提示信息
|
||
wechatWorkHint: '請在企業微信群機器人設置中獲取Webhook地址',
|
||
dingtalkHint: '請在釘釘群機器人設置中獲取Webhook地址',
|
||
feishuHint: '請在飛書群機器人設置中獲取Webhook地址',
|
||
slackHint: '請在Slack應用的Incoming Webhooks中獲取地址',
|
||
discordHint: '請在Discord伺服器的整合設置中建立Webhook',
|
||
barkHint: '請在Bark App中查看您的設備密鑰',
|
||
customHint: '請輸入完整的Webhook接收地址',
|
||
|
||
// 模態框按鈕
|
||
required: '必填項',
|
||
cancel: '取消',
|
||
testing: '測試中...',
|
||
saveChanges: '保存修改',
|
||
addPlatformBtn: '新增平台',
|
||
|
||
// 成功/錯誤消息
|
||
loadSettingsFailed: '載入設置失敗',
|
||
settingsSaved: '設置已保存',
|
||
saveSettingsFailed: '保存設置失敗',
|
||
oemSettingsSaved: 'OEM設置保存成功',
|
||
oemSettingsSaveFailed: '保存OEM設置失敗',
|
||
resetToDefault: '已重置為預設設置',
|
||
resetFailed: '重置失敗',
|
||
confirmReset: '確定要重置為預設設置嗎?\n\n這將清除所有自定義的網站名稱和圖標設置。',
|
||
|
||
webhookConfigSaved: '配置已保存',
|
||
webhookConfigSaveFailed: '保存配置失敗',
|
||
getWebhookConfigFailed: '獲取webhook配置失敗',
|
||
|
||
platformAdded: '平台已新增',
|
||
platformUpdated: '平台已更新',
|
||
platformDeleted: '平台已刪除',
|
||
platformDeleteFailed: '刪除失敗',
|
||
confirmDeletePlatform: '確定要刪除這個平台嗎?',
|
||
operationFailed: '操作失敗',
|
||
|
||
testSuccess: '測試成功,webhook連線正常',
|
||
testFailed: '測試失敗',
|
||
testNotificationSent: '測試通知已發送',
|
||
testNotificationFailed: '發送失敗',
|
||
|
||
// 表單驗證消息
|
||
enterBarkDeviceKey: '請輸入Bark設備密鑰',
|
||
enterWebhookUrl: '請輸入Webhook URL',
|
||
enterValidWebhookUrl: '請輸入有效的Webhook URL',
|
||
enterWebhookUrlFirst: '請先輸入Webhook URL',
|
||
enterBarkDeviceKeyFirst: '請先輸入Bark設備密鑰',
|
||
|
||
// 檔案上傳
|
||
fileReadFailed: '檔案讀取失敗',
|
||
iconLoadFailed: 'Icon failed to load',
|
||
|
||
// 平台名稱
|
||
platforms: {
|
||
wechatWork: '企業微信',
|
||
dingtalk: '釘釘',
|
||
feishu: '飛書',
|
||
slack: 'Slack',
|
||
discord: 'Discord',
|
||
bark: 'Bark',
|
||
custom: '自定義'
|
||
}
|
||
}
|
||
}
|