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: '所有項目處理失敗' }, // User-related translations user: { // User Dashboard dashboard: { title: 'Dashboard Overview', welcomeMessage: 'Welcome to your Claude Relay dashboard', // Navigation tabs overview: 'Overview', apiKeys: 'API Keys', usageStats: 'Usage Stats', // Welcome section welcome: 'Welcome', // Stats cards activeApiKeys: 'Active API Keys', deletedApiKeys: 'Deleted API Keys', totalRequests: 'Total Requests', inputTokens: 'Input Tokens', totalCost: 'Total Cost', // Account information section accountInformation: 'Account Information', username: 'Username', displayName: 'Display Name', email: 'Email', role: 'Role', memberSince: 'Member Since', lastLogin: 'Last Login', notAvailable: 'N/A', // Messages logout: 'Logout', logoutSuccess: 'Logged out successfully', logoutFailed: 'Logout failed', loadProfileFailed: 'Failed to load user profile', loadStatsFailed: 'Failed to load API keys stats' }, // User Login login: { title: 'User Sign In', subtitle: 'Sign in to your account to manage your API keys', username: 'Username', password: 'Password', usernamePlaceholder: 'Enter your username', passwordPlaceholder: 'Enter your password', signIn: 'Sign In', signingIn: 'Signing In...', adminLogin: 'Admin Login', // Validation and error messages requiredFields: 'Please enter both username and password', loginSuccess: 'Login successful!', loginFailed: 'Login failed' }, // User Management management: { title: 'User Management', description: 'Manage users, their API keys, and view usage statistics', refresh: 'Refresh', // Stats cards totalUsers: 'Total Users', activeUsers: 'Active Users', totalApiKeys: 'Total API Keys', totalCost: 'Total Cost', // Search and filters searchPlaceholder: 'Search users...', allRoles: 'All Roles', user: 'User', admin: 'Admin', allStatus: 'All Status', active: 'Active', disabled: 'Disabled', // User list users: 'Users', loadingUsers: 'Loading users...', noUsersFound: 'No users found', noUsersMatch: 'No users match your search criteria.', noUsersCreated: 'No users have been created yet.', // User info and actions displayName: 'Display Name', email: 'Email', role: 'Role', username: 'Username', apiKeysCount: 'API keys', lastLogin: 'Last login', neverLoggedIn: 'Never logged in', requests: 'requests', totalCostLabel: 'total cost', // Action buttons and tooltips viewUsageStats: 'View Usage Stats', disableAllApiKeys: 'Disable All API Keys', disableUser: 'Disable User', enableUser: 'Enable User', changeRole: 'Change Role', // Confirmation dialogs disableUserTitle: 'Disable User', enableUserTitle: 'Enable User', disableUserMessage: 'Are you sure you want to disable user "{username}"? This will prevent them from logging in.', enableUserMessage: 'Are you sure you want to enable user "{username}"?', disable: 'Disable', enable: 'Enable', disableAllKeysTitle: 'Disable All API Keys', disableAllKeysMessage: 'Are you sure you want to disable all {count} API keys for user "{username}"? This will prevent them from using the service.', disableKeys: 'Disable Keys', // Success messages userDisabledSuccess: 'User disabled successfully', userEnabledSuccess: 'User enabled successfully', keysDisabledSuccess: 'Disabled {count} API keys', // Error messages loadUsersError: 'Failed to load users', toggleStatusError: 'Failed to toggleStatus', disableKeysError: 'Failed to disableKeys' }, // User Usage Stats Modal usageStatsModal: { title: '使用統計', titleWithUser: '使用統計 - {displayName}', // Time period selection periodSelection: { day: '最近24小時', week: '最近7天', month: '最近30天', quarter: '最近90天' }, // Loading state loadingStats: '正在載入使用統計...', // Summary cards summaryCards: { requests: '請求數', inputTokens: '輸入Token', outputTokens: '輸出Token', totalCost: '總費用' }, // API Keys table apiKeysTable: { title: 'API Keys 使用情況', headers: { apiKey: 'API Key', status: '狀態', requests: '請求數', tokens: 'Token數', cost: '費用', lastUsed: '最後使用' }, status: { active: '活躍', disabled: '已停用' }, tokensFormat: { input: '輸入', output: '輸出' }, never: '從未使用' }, // Usage trend chart usageTrend: { title: '使用趨勢', chartTitle: '使用圖表', dailyTrends: '最近 {period} 的日使用趨勢', chartNote: '(可整合 Chart.js、D3.js 或類似圖表庫)' }, // No data state noData: { title: '暫無使用資料', description: '該使用者在所選時間段內尚未發起任何API請求。' }, // Buttons close: '關閉' }, // Change Role Modal changeRoleModal: { title: '修改使用者角色', // User info display currentRole: '當前角色:{role}', // Role selection form newRole: '新角色', roles: { user: '使用者', userDesc: '具有基本權限的普通使用者', admin: '管理員', adminDesc: '擁有管理使用者和系統的完整權限' }, // Warning messages roleChangeWarning: { title: '角色變更警告', grantAdmin: '授予管理員權限將使該使用者擁有系統的完整存取權限,包括管理其他使用者及其API密鑰的能力。', removeAdmin: '移除管理員權限將限制該使用者只能管理自己的API密鑰和檢視自己的使用統計。' }, // Buttons cancel: '取消', updateRole: '更新角色', updating: '更新中...', // Success message roleUpdated: '使用者角色已更新為 {role}' } }, // 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: '自定義' } }, // AccountForm 組件 accountForm: { // 標題和模態框 editAccount: '編輯帳戶', addAccount: '新增帳戶', // 步驟指示器 stepBasicInfo: '基本資訊', stepAuthorization: '授權認證', // 平台選擇 platform: '平台', platformClaude: 'Claude', platformClaudeConsole: 'Claude Console', platformGemini: 'Gemini', platformOpenAI: 'OpenAI', platformAzureOpenAI: 'Azure OpenAI', platformBedrock: 'Bedrock', // 新增方式 addMethod: '新增方式', addTypeSetupToken: 'Setup Token(推薦)', addTypeOAuth: 'OAuth 授權', addTypeManual: '手動輸入 Access Token', // 基本資訊欄位 accountName: '帳戶名稱', accountNamePlaceholder: '為帳戶設置一個易識別的名稱', description: '描述', descriptionOptional: '描述(可選)', descriptionPlaceholder: '帳戶用途說明...', // 帳戶類型 accountType: '帳戶類型', accountTypeShared: '共用帳戶', accountTypeDedicated: '專屬帳戶', accountTypeGroup: '群組排程', accountTypeDescription: '共用帳戶:供所有API Key使用;專屬帳戶:僅供特定API Key使用;群組排程:加入群組供群組內排程', // 群組選擇 selectGroup: '選擇群組', selectGroupRequired: '選擇群組 *', noGroupsAvailable: '暫無可用群組', memberCount: '個成員', newGroup: '新建群組', refreshGroups: '刷新群組', // Gemini 專案 ID projectId: '專案 ID', projectIdOptional: '專案 ID(可選)', projectIdPlaceholder: '例如:verdant-wares-464411-k9', projectIdDescription: 'Google Cloud/Workspace 帳號需要提供專案 ID', projectIdInstructions: '如何獲取專案 ID:', projectIdStep1: '訪問 Google Cloud Console', projectIdStep2: '複製專案 ID(Project ID),通常是字串格式', projectIdStep3: '⚠️ 注意:要複製專案 ID(Project ID),不要複製專案編號(Project Number)!', projectIdTip: '提示:如果您的帳號是普通個人帳號(未綁定 Google Cloud),請留空此欄位。', projectIdGoogleCloudRequired: 'Google Cloud/Workspace 帳號需要提供專案 ID', projectIdGoogleCloudDescription: '某些 Google 帳號(特別是綁定了 Google Cloud 的帳號)會被識別為 Workspace 帳號,需要提供額外的專案 ID。', // Bedrock 欄位 awsAccessKeyId: 'AWS 存取金鑰 ID', awsAccessKeyIdRequired: 'AWS 存取金鑰 ID *', awsAccessKeyIdPlaceholder: '請輸入 AWS Access Key ID', awsSecretAccessKey: 'AWS 秘密存取金鑰', awsSecretAccessKeyRequired: 'AWS 秘密存取金鑰 *', awsSecretAccessKeyPlaceholder: '請輸入 AWS Secret Access Key', awsRegion: 'AWS 區域', awsRegionRequired: 'AWS 區域 *', awsRegionPlaceholder: '例如:us-east-1', awsRegionReference: '常用 AWS 區域參考:', awsRegionUsEast1: '• us-east-1(美國東部)', awsRegionUsWest2: '• us-west-2(美國西部)', awsRegionEuWest1: '• eu-west-1(歐洲愛爾蘭)', awsRegionApSoutheast1: '• ap-southeast-1(新加坡)', awsRegionApNortheast1: '• ap-northeast-1(東京)', awsRegionEuCentral1: '• eu-central-1(法蘭克福)', awsRegionTip: '💡 請輸入完整的區域代碼,如 us-east-1', sessionToken: '會話權杖', sessionTokenOptional: '會話權杖(可選)', sessionTokenPlaceholder: '如果使用臨時憑證,請輸入會話權杖', sessionTokenDescription: '僅在使用臨時 AWS 憑證時需要填寫', defaultModel: '預設主模型', defaultModelOptional: '預設主模型(可選)', defaultModelPlaceholder: '例如:us.anthropic.claude-sonnet-4-20250514-v1:0', defaultModelDescription: '留空將使用系統預設模型。支援 inference profile ID 或 ARN', bedrockModelConfigTitle: 'Bedrock 模型配置說明:', bedrockModelConfigInferenceProfile: '• 支援 Inference Profile ID(推薦)', bedrockModelConfigArn: '• 支援 Application Inference Profile ARN', bedrockModelConfigCommon: '• 常用模型:us.anthropic.claude-sonnet-4-20250514-v1:0', bedrockModelConfigDefault: '• 留空將使用系統配置的預設模型', smallFastModel: '小快速模型', smallFastModelOptional: '小快速模型(可選)', smallFastModelPlaceholder: '例如:us.anthropic.claude-3-5-haiku-20241022-v1:0', smallFastModelDescription: '用於快速回應的輕量級模型,留空將使用系統預設', // Azure OpenAI 欄位 azureEndpoint: 'Azure Endpoint', azureEndpointRequired: 'Azure Endpoint *', azureEndpointPlaceholder: 'https://your-resource.openai.azure.com', azureEndpointDescription: 'Azure OpenAI 資源的終結點 URL,格式:https://your-resource.openai.azure.com', apiVersion: 'API 版本', apiVersionPlaceholder: '2024-02-01', apiVersionDescription: 'Azure OpenAI API 版本,預設使用最新穩定版本 2024-02-01', deploymentName: '部署名稱', deploymentNameRequired: '部署名稱 *', deploymentNamePlaceholder: 'gpt-4', deploymentNameDescription: '在 Azure OpenAI Studio 中建立的部署名稱', apiKey: 'API Key', apiKeyRequired: 'API Key *', apiKeyPlaceholder: '請輸入 API Key', apiKeyDescription: '從 Azure 入口網站取得的 API 金鑰', supportedModels: '支援的模型', supportedModelsDescription: '選擇此部署支援的模型類型', // Claude Console 欄位 apiUrl: 'API URL', apiUrlRequired: 'API URL *', apiUrlPlaceholder: '例如:https://api.example.com', apiKeyClaudeConsoleRequired: 'API Key *', apiKeyClaudeConsolePlaceholder: '請輸入API Key', dailyQuota: '每日額度限制', dailyQuotaLabel: '每日額度限制($)', dailyQuotaPlaceholder: '0 表示不限制', dailyQuotaDescription: '設置每日使用額度,0 表示不限制', quotaResetTime: '額度重置時間', quotaResetTimePlaceholder: '00:00', quotaResetTimeDescription: '每日自動重置額度的時間', todayUsage: '今日使用情況', remaining: '剩餘', used: '已使用', modelMapping: '模型映射表', modelMappingOptional: '模型映射表(可選)', modelMappingDescription: '留空表示支援所有模型且不修改請求。配置映射後,左側模型會被識別為支援的模型,右側是實際發送的模型。', originalModel: '原始模型名稱', mappedModel: '映射後的模型名稱', addModelMapping: '新增模型映射', userAgent: '自定義 User-Agent', userAgentOptional: '自定義 User-Agent(可選)', userAgentPlaceholder: '留空則透傳用戶端 User-Agent', userAgentDescription: '留空時將自動使用用戶端的 User-Agent,僅在需要固定特定 UA 時填寫', rateLimitMechanism: '限流機制', enableRateLimit: '啟用限流機制', rateLimitDescription: '啟用後,當帳號返回429錯誤時將暫停排程一段時間', rateLimitDuration: '限流時間(分鐘)', rateLimitDurationDescription: '帳號被限流後暫停排程的時間(分鐘)', // Claude 訂閱類型 subscriptionType: '訂閱類型', subscriptionClaudeMax: 'Claude Max', subscriptionClaudePro: 'Claude Pro', claudeProLimitation: 'Pro 帳號不支援 Claude Opus 4 模型', // Claude 特殊功能 autoStopOnWarning: '5小時使用量接近限制時自動停止排程', autoStopOnWarningDescription: '當系統偵測到帳戶接近5小時使用限制時,自動暫停排程該帳戶。進入新的時間視窗後會自動恢復排程。', useUnifiedUserAgent: '使用統一 Claude Code 版本', useUnifiedUserAgentDescription: '開啟後將使用從真實 Claude Code 用戶端擷取的統一 User-Agent,提高相容性', currentUnifiedVersion: '💡 目前統一版本:', clearCache: '清除快取', clearing: '清除中...', waitingForCapture: '⏳ 等待從 Claude Code 用戶端擷取 User-Agent', captureHint: '💡 提示:如果長時間未能擷取,請確認有 Claude Code 用戶端正在使用此帳戶,或聯繫開發者檢查 User-Agent 格式是否發生變化', useUnifiedClientId: '使用統一的用戶端識別', useUnifiedClientIdDescription: '開啟後將使用固定的用戶端識別,使所有請求看起來來自同一個用戶端,減少特徵', clientId: '用戶端識別 ID', regenerate: '重新產生', clientIdDescription: '此ID將替換請求中的user_id用戶端部分,保留session部分用於黏性會話', // 排程優先順序 schedulePriority: '排程優先順序', schedulePriorityRange: '排程優先順序(1-100)', schedulePriorityPlaceholder: '數字越小優先順序越高,預設50', schedulePriorityDescription: '數字越小優先順序越高,建議範圍:1-100', // 手動輸入 Token manualTokenTitle: '手動輸入 Token', manualTokenDescription: '請輸入有效的 Access Token。如果您有 Refresh Token,建議也一併填寫以支援自動重新整理。', manualTokenClaudeDescription: '請輸入有效的 Claude Access Token。如果您有 Refresh Token,建議也一併填寫以支援自動重新整理。', manualTokenGeminiDescription: '請輸入有效的 Gemini Access Token。如果您有 Refresh Token,建議也一併填寫以支援自動重新整理。', manualTokenOpenAIDescription: '請輸入有效的 OpenAI Access Token。如果您有 Refresh Token,建議也一併填寫以支援自動重新整理。', obtainTokenMethods: '取得 Access Token 的方法:', claudeTokenPath: '請從已登入 Claude Code 的機器上取得 ~/.claude/.credentials.json 檔案中的憑證,請勿使用 Claude 官網 API Keys 頁面的金鑰。', geminiTokenPath: '請從已登入 Gemini CLI 的機器上取得 ~/.config/gemini/credentials.json 檔案中的憑證。', openaiTokenPath: '請從已登入 OpenAI 帳戶的機器上取得認證憑證,或透過 OAuth 授權流程取得 Access Token。', accessToken: 'Access Token', accessTokenOptional: 'Access Token(可選)', accessTokenRequired: 'Access Token *', accessTokenPlaceholder: '請輸入 Access Token...', accessTokenOptionalPlaceholder: '可選:如果不填寫,系統會自動透過 Refresh Token 取得...', accessTokenOptionalDescription: 'Access Token 可選填。如果不提供,系統會透過 Refresh Token 自動取得。', refreshToken: 'Refresh Token', refreshTokenOptional: 'Refresh Token(可選)', refreshTokenRequired: 'Refresh Token *', refreshTokenPlaceholder: '請輸入 Refresh Token...', refreshTokenRequiredPlaceholder: '請輸入 Refresh Token(必填)...', refreshTokenDescription: '系統將使用 Refresh Token 自動取得 Access Token 和使用者資訊', refreshTokenTip: '💡 如果未填寫 Refresh Token,Token 過期後需要手動更新。', // Setup Token 流程 setupTokenTitle: 'Claude Setup Token 授權', setupTokenDescription: '請按照以下步驟透過 Setup Token 完成 Claude 帳戶的授權:', setupTokenStep1Title: '點擊下方按鈕產生授權連結', setupTokenStep2Title: '在瀏覽器中開啟連結並完成授權', setupTokenStep2Description: '請在新分頁中開啟授權連結,登入您的 Claude 帳戶並授權 Claude Code。', setupTokenStep2Warning: '注意:如果您設置了代理,請確保瀏覽器也使用相同的代理訪問授權頁面。', setupTokenStep3Title: '輸入 Authorization Code', setupTokenStep3Description: '授權完成後,從返回頁面複製 Authorization Code,並貼上到下方輸入框:', generateSetupTokenUrl: '產生 Setup Token 授權連結', generating: '產生中...', copyLink: '複製連結', regenerateLink: '重新產生', authorizationCode: 'Authorization Code', authorizationCodePlaceholder: '貼上從Claude Code授權頁面取得的Authorization Code...', authorizationCodeDescription: '請貼上從Claude Code授權頁面複製的Authorization Code', verifying: '驗證中...', completeAuthorization: '完成授權', // Token 更新(編輯模式) updateTokenTitle: '更新 Token', updateTokenDescription: '可以更新 Access Token 和 Refresh Token。為了安全起見,不會顯示目前的 Token 值。', updateTokenTip: '💡 留空表示不更新該欄位。', newAccessToken: '新的 Access Token', newRefreshToken: '新的 Refresh Token', leaveBlankNoUpdate: '留空表示不更新...', // 使用情況 currentUsage: '目前使用情況', // 按鈕 cancel: '取消', nextStep: '下一步', previousStep: '上一步', create: '建立', creating: '建立中...', update: '更新', updating: '更新中...', // 錯誤訊息 pleaseEnterAccountName: '請填寫帳戶名稱', pleaseSelectGroup: '請選擇一個群組', pleaseEnterApiUrl: '請填寫 API URL', pleaseEnterApiKey: '請填寫 API Key', pleaseEnterAccessKeyId: '請填寫 AWS 存取金鑰 ID', pleaseEnterSecretAccessKey: '請填寫 AWS 秘密存取金鑰', pleaseEnterRegion: '請選擇 AWS 區域', pleaseEnterAzureEndpoint: '請填寫 Azure Endpoint', pleaseEnterDeploymentName: '請填寫部署名稱', pleaseEnterAccessToken: '請填寫 Access Token', pleaseEnterRefreshToken: '請填寫 Refresh Token', // 成功訊息 linkCopied: '連結已複製', extractedAuthCode: '成功提取授權碼!', cacheClearedSuccess: '統一User-Agent快取已清除', newClientIdGenerated: '已產生新的用戶端識別', groupsRefreshed: '群組列表已重新整理', modelMappingAdded: '已新增映射', modelMappingExists: '模型映射已存在', // 警告和提示 copyFailed: '複製失敗,請手動複製', clearCacheFailed: '清除快取失敗', urlNotFound: 'URL 中未找到授權碼參數,請檢查連結是否正確', urlFormatError: '連結格式錯誤,請檢查是否為完整的 URL', wrongUrlFormat: '請貼上以 http://localhost:45462 開頭的連結', loadGroupsFailed: '載入群組列表失敗', // 確認對話框 projectIdNotFilledTitle: '專案 ID 未填寫', projectIdNotFilledMessage: '您尚未填寫專案 ID。\n\n如果您的Google帳號綁定了Google Cloud或被識別為Workspace帳號,需要提供專案 ID。\n如果您使用的是普通個人帳號,可以繼續不填寫。', continueButton: '繼續', goBackToFill: '返回填寫', continueSave: '繼續保存', // 快捷模型映射按鈕 presetSonnet4: '+ Sonnet 4', presetOpus41: '+ Opus 4.1', presetHaiku35: '+ Haiku 3.5', presetOpus41ToSonnet4: '+ Opus 4.1 → Sonnet 4', // 編輯模式特殊提示 leaveBlankNoUpdateApiKey: '留空表示不更新 API Key', leaveBlankNoUpdateAwsKey: '留空表示不更新 AWS Access Key ID', leaveBlankNoUpdateAwsSecret: '留空表示不更新 AWS Secret Access Key', leaveBlankNoUpdateSession: '留空表示不更新', // 通用描述文字 allModelsIfEmpty: '留空表示支援所有模型。如果指定模型,請求中的模型不在列表內將不會排程到此帳號', systemDefaultIfEmpty: '留空將使用系統預設模型。支援 inference profile ID 或 ARN', noUpdateIfEmpty: '留空表示不更新該欄位', // 手動 Token 輸入部分 manualTokenInput: '手動輸入 Token', manualTokenClaudeDescription: '請輸入有效的 Claude Access Token。如果您有 Refresh Token,建議也一併填寫以支援自動刷新。', manualTokenGeminiDescription: '請輸入有效的 Gemini Access Token。如果您有 Refresh Token,建議也一併填寫以支援自動刷新。', manualTokenOpenAIDescription: '請輸入有效的 OpenAI Access Token。如果您有 Refresh Token,建議也一併填寫以支援自動刷新。', getAccessTokenMethod: '取得 Access Token 的方法:', claudeCredentialsPath: '請從已登入 Claude Code 的機器上取得', geminiCredentialsPath: '請從已登入 Gemini CLI 的機器上取得', openaiCredentialsPath: '請從已登入 OpenAI 帳戶的機器上取得認證憑證,或透過 OAuth 授權流程取得 Access Token。', claudeCredentialsWarning: '檔案中的憑證,請勿使用 Claude 官網 API Keys 頁面的金鑰。', refreshTokenWarning: '💡 如果未填寫 Refresh Token,Token 過期後需要手動更新。', accessTokenOptional: 'Access Token (可選)', accessTokenOptionalPlaceholder: '可選:如果不填寫,系統會自動透過 Refresh Token 取得...', accessTokenOptionalInfo: 'Access Token 可選填。如果不提供,系統會透過 Refresh Token 自動取得。', accessTokenRequired: 'Access Token *', accessTokenRequiredPlaceholder: '請輸入 Access Token...', refreshTokenRequired: 'Refresh Token *', refreshTokenRequiredPlaceholder: '請輸入 Refresh Token(必填)...', refreshTokenRequiredInfo: '系統將使用 Refresh Token 自動取得 Access Token 和使用者資訊', refreshTokenOptional: 'Refresh Token (可選)', refreshTokenOptionalPlaceholder: '請輸入 Refresh Token...', // 優先級設定 priorityPlaceholder: '數字越小優先級越高,預設50', priorityDescription: '數字越小優先級越高,建議範圍:1-100', prioritySchedulingTitle: '排程優先級 (1-100)', priorityEditPlaceholder: '數字越小優先級越高', // Gemini 專案ID projectIdOptional: '專案 ID (可選)', projectIdPlaceholder: '例如:verdant-wares-464411-k9', projectIdDescription: 'Google Cloud/Workspace 帳號可能需要提供專案 ID', // Claude 訂閱類型和進階選項 subscriptionType: '訂閱類型', claudeMaxSubscription: 'Claude Max', 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', regenerateClientId: '重新產生', clientIdDescription: '此ID將替換請求中的user_id用戶端部分,保留session部分用於黏性工作階段', // 編輯模式欄位 accountNameEdit: '帳戶名稱', accountNameEditPlaceholder: '為帳戶設定一個易識別的名稱', descriptionOptionalEdit: '描述 (可選)', descriptionOptionalEditPlaceholder: '帳戶用途說明...', accountTypeEdit: '帳戶類型', selectGroupRequired: '選擇群組 *', noAvailableGroups: '暫無可用群組', membersCount: ' 個成員', createNewGroup: '新建群組', // AWS Bedrock 設定 bedrockCredentials: '憑證設定', bedrockCredentialsDescription: '請填寫 AWS 存取憑證,用於呼叫 Amazon Bedrock 服務。', awsAccessKeyId: 'AWS Access Key ID *', awsAccessKeyIdPlaceholder: '請輸入 AWS 存取密鑰 ID...', awsSecretAccessKey: 'AWS Secret Access Key *', awsSecretAccessKeyPlaceholder: '請輸入 AWS 秘密存取密鑰...', sessionTokenOptional: 'Session Token (可選)', sessionTokenOptionalPlaceholder: '臨時憑證的工作階段令牌...', sessionTokenDescription: '僅在使用臨時憑證(如 STS 產生的憑證)時需要填寫', awsRegion: 'AWS 區域 *', awsRegionPlaceholder: '選擇 AWS 區域...', bedrockModelConfig: '模型設定', defaultModelLabel: '預設模型', defaultModelPlaceholder: '例如:anthropic.claude-3-5-sonnet-20240620-v1:0', defaultModelDescription: '留空將使用系統預設模型。支援 inference profile ID 或 ARN', smallFastModelLabel: '小型快速模型', smallFastModelPlaceholder: '例如:anthropic.claude-3-haiku-20240307-v1:0', smallFastModelDescription: '用於簡單任務的快速模型,支援 inference profile ID 或 ARN', // Azure OpenAI 設定 azureOpenAIConfig: 'Azure OpenAI 設定', azureOpenAIDescription: '請設定 Azure OpenAI 服務的連線資訊和部署詳情。', azureEndpoint: 'Azure Endpoint *', azureEndpointPlaceholder: '例如:https://your-resource.openai.azure.com/', azureEndpointDescription: 'Azure OpenAI 服務的端點 URL', azureApiKey: 'API Key *', azureApiKeyPlaceholder: '請輸入 Azure OpenAI API Key...', azureApiVersion: 'API 版本', azureApiVersionDescription: 'Azure OpenAI API 版本,通常使用最新版本', azureDeploymentName: '部署名稱 *', azureDeploymentNamePlaceholder: '例如:gpt-4', azureDeploymentDescription: '在 Azure OpenAI Studio 中建立的部署名稱', azureSupportedModels: '支援的模型', azureSupportedModelsPlaceholder: '例如:gpt-4, gpt-3.5-turbo', azureSupportedModelsDescription: '此帳戶支援的模型清單,用逗號分隔。留空表示支援所有模型', azureAccountSettings: '帳戶設定', azureIsActive: '啟用此帳戶', azureSchedulable: '允許調度', // Claude Console 模型映射 claudeConsoleModels: '模型映射', claudeConsoleModelsDescription: '設定模型請求的映射關係,將客戶端請求的模型名映射為實際呼叫的模型。', modelMappingFrom: '請求模型', modelMappingFromPlaceholder: '例如:claude-3-5-sonnet-20241022', modelMappingTo: '實際模型', modelMappingToPlaceholder: '例如:claude-3-5-sonnet-latest', addModelMapping: '新增映射', removeMapping: '移除', presetMappings: '預設映射', modelMappingExample: '示例:claude-3-5-sonnet-20241022 → claude-3-5-sonnet-latest', noMappingsConfigured: '暫未設定映射,將直接使用原模型名', // Setup Token 授權流程詳細步驟 setupTokenAuth: 'Setup Token 授權', setupTokenAuthDescription: 'Setup Token 是安全的授權方式,透過臨時授權碼完成帳戶驗證。', setupTokenStep1: '步驟 1:產生授權連結', setupTokenStep1Description: '系統將產生一個專用的授權連結,用於取得臨時授權碼。', setupTokenStep2: '步驟 2:完成授權', setupTokenStep2Description: '在新視窗中開啟授權連結,使用您的 Claude 帳戶登入並完成授權。', setupTokenStep3: '步驟 3:輸入授權碼', setupTokenStep3Description: '授權成功後,系統會顯示授權碼,請複製並貼上到下方輸入框。', setupTokenUrlGenerated: '授權連結已產生', setupTokenOpenInBrowser: '在瀏覽器中開啟', setupTokenCopyLink: '複製連結', setupTokenUrlExpiry: '此連結10分鐘後過期,請盡快完成授權', setupTokenAuthCode: 'Authorization Code *', setupTokenAuthCodePlaceholder: '請貼上從授權頁面取得的授權碼...', setupTokenAuthCodeDescription: '完成授權後,將顯示類似 "auth_code_xxx" 格式的授權碼', setupTokenSmartDetection: '智能檢測', setupTokenSmartDetectionDesc: '支援直接貼上完整的回調 URL,系統會自動提取授權碼', // 更多錯誤訊息和驗證文字 unsupportedPlatform: '不支援的平台', accountCreationFailed: '帳戶建立失敗', accountUpdateFailed: '帳戶更新失敗', detailsInfo: '詳細資訊', accountCreationFailedConsole: '帳戶建立失敗:', accountUpdateFailedConsole: '帳戶更新失敗:', clearCacheFailedWithError: '清除快取失敗:', unknownError: '未知錯誤', modelMappingExistsInfo: '模型映射已存在', modelAddedMapping: '已新增映射', // 限流和配額管理 rateLimitSettings: '限流設定', enableRateLimit: '啟用速率限制', rateLimitDuration: '限流時長 (秒)', rateLimitDurationPlaceholder: '例如:60', rateLimitDescription: '啟用後將限制請求頻率,防止帳戶被封鎖', quotaManagement: '配額管理', dailyQuotaLabel: '每日配額限制', dailyQuotaPlaceholder: '0 表示不限制', quotaResetTimeLabel: '配額重設時間', quotaResetTimePlaceholder: '例如:00:00', quotaResetDescription: '每天配額重設的時間點', currentDailyUsage: '今日已用', // 進階設定 advancedSettings: '進階設定', customUserAgent: '自定義 User-Agent', customUserAgentPlaceholder: '留空使用預設 User-Agent...', userAgentDescription: '用於請求時的 User-Agent 識別', // 通用提示和狀態 notSet: '未設定', unlimited: '無限制', enabled: '已啟用', disabled: '已禁用', active: '活躍', inactive: '非活躍', optional: '可選', required: '必填', recommended: '推薦', // 額外的操作按鈕 testConnection: '測試連線', testing: '測試中...', refresh: '刷新', refreshing: '刷新中...', validate: '驗證', validating: '驗證中...', save: '儲存', saving: '儲存中...', // 使用情況和統計 usageStats: '使用統計', loadingUsage: '載入使用情況...', usageLoadFailed: '使用情況載入失敗', // Gemini 專案 ID 詳細說明 geminiProjectIdRequired: 'Google Cloud/Workspace 帳戶需要提供專案 ID', geminiProjectIdDetail: '某些 Google 帳戶(特別是綁定了 Google Cloud 的帳戶)會被識別為 Workspace 帳戶,需要提供額外的專案 ID。', geminiHowToGetProjectId: '如何取得專案 ID:', geminiVisitConsole: '造訪', geminiCopyProjectId: '複製專案 ID(Project ID),通常是字串格式', geminiProjectIdWarning: '⚠️ 注意:要複製專案 ID(Project ID),不要複製專案編號(Project Number)!', geminiPersonalAccountTip: '提示:如果您的帳戶是普通個人帳戶(未綁定 Google Cloud),請留空此欄位。', // AWS 區域參考 awsRegionReference: '常用 AWS 區域參考:', awsRegionEastUS: 'us-east-1 (美國東部)', awsRegionWestUS: 'us-west-2 (美國西部)', awsRegionEuropeIreland: 'eu-west-1 (歐洲愛爾蘭)', awsRegionAsiaSingapore: 'ap-southeast-1 (新加坡)', awsRegionAsiaTokyo: 'ap-northeast-1 (東京)', awsRegionEuropeFrankfurt: 'eu-central-1 (法蘭克福)', awsRegionInputTip: '💡 請輸入完整的區域代碼,如 us-east-1', // Bedrock 模型說明 bedrockModelConfigDesc: 'Bedrock 模型設定說明:', bedrockSupportsInferenceProfile: '支援 Inference Profile ID(推薦)', bedrockSupportsARN: '支援 Application Inference Profile ARN', bedrockCommonModel: '常用模型:us.anthropic.claude-sonnet-4-20250514-v1:0', bedrockEmptyUsesDefault: '留空將使用系統設定的預設模型', // Azure OpenAI 模型選擇 azureModelSelectionDesc: '選擇此部署支援的模型類型', // 限流機制 rateLimitMechanism: '限流機制', enableRateLimitMechanism: '啟用限流機制', rateLimitDescription2: '啟用後,當帳戶返回429錯誤時將暫停調度一段時間', rateLimitDurationMinutes: '限流時間 (分鐘)', rateLimitDefaultMinutes: '預設60分鐘', rateLimitPauseDesc: '帳戶被限流後暫停調度的時間(分鐘)', // Claude Console 特定欄位 claudeConsoleFields: 'Claude Console 特定欄位', quotaManagement: '額度管理', modelMappingTable: '模型映射表', modelMappingTableOptional: '模型映射表 (可選)', addModelMapping: '新增模型映射', // Claude 訂閱類型 subscriptionType: '訂閱類型', // Setup Token 授權 setupTokenAuth: 'Setup Token 授權', claudeSetupTokenAuth: 'Claude Setup Token 授權', setupTokenAuthSteps: '請按照以下步驟透過 Setup Token 完成 Claude 帳戶的授權:', generateSetupTokenLink: '產生 Setup Token 授權連結', generating: '產生中...', // 按鈕和操作 verifying: '驗證中...', completeAuth: '完成授權', updating: '更新中...', update: '更新', // 錯誤訊息 generateSetupTokenFailed: '產生Setup Token授權連結失敗', copyFailed: '複製失敗,請手動複製', setupTokenAuthFailed: 'Setup Token授權失敗,請檢查授權碼是否正確', accountCreationFailed: '帳戶建立失敗', accountCreationError: '帳戶建立失敗:', // 頁面結構註釋 stepIndicator: '步驟指示器', step1BasicInfo: '步驟1: 基本資訊和代理設定', groupSelector: '分組選擇器', multiSelectGroup: '多選分組介面', newGroupOption: '新建分組選項', geminiProjectId: 'Gemini 專案 ID 欄位', bedrockFields: 'Bedrock 特定欄位', azureOpenAIFields: 'Azure OpenAI 特定欄位', // 驗證訊息 nameRequired: '請填寫帳戶名稱', apiUrlRequired: '請填寫 API URL', rateLimitDefault60: '預設60分鐘', rateLimitPauseDescription: '帳戶被限流後暫停調度的時間(分鐘)', apiUrlPlaceholder: '例如:https://api.example.com', apiKeyPlaceholder: '請輸入API Key', dailyQuotaLimit: '每日額度限制 ($)', quotaZeroUnlimited: '0 表示不限制', dailyQuotaDescription: '設定每日使用額度,0 表示不限制', quotaResetTime: '額度重設時間', quotaResetTimeDescription: '每日自動重設額度的時間', modelMappingDescription: '留空表示支援所有模型且不修改請求。設定映射後,左側模型會被識別為支援的模型,右側是實際傳送的模型。', // 額度管理 quotaManagementFields: '配額管理欄位', dailyQuotaLimitDollar: '每日配額限制 ($)', quotaZeroUnlimited: '0 表示不限制', dailyQuotaDesc: '設定每日使用配額,0 表示不限制', quotaResetTime: '配額重設時間', quotaResetTimeDesc: '每日自動重設配額的時間', // 模型映射 modelMappingOptional: '模型映射表 (可選)', modelMappingDesc: '留空表示支援所有模型且不修改請求。設定映射後,左側模型會被識別為支援的模型,右側是實際發送的模型。', originalModelName: '原始模型名稱', mappedModelName: '映射後的模型名稱', addModelMappingBtn: '新增模型映射', customUserAgentOptional: '自定義 User-Agent (可選)', customUserAgentDesc: '留空時將自動使用客戶端的 User-Agent,僅在需要固定特定 UA 時填寫', userAgentPassthrough: '留空則透傳客戶端 User-Agent', // Claude 訂閱類型 claudeSubscriptionType: '訂閱類型', claudeProLimitation: 'Pro 帳戶不支援 Claude Opus 4 模型', // Claude 進階選項 claudeAutoStopScheduling: '5小時使用量接近限制時自動停止調度', claudeAutoStopDesc: '當系統檢測到帳戶接近5小時使用限制時,自動暫停調度該帳戶。進入新的時間視窗後會自動恢復調度。', claudeUseUnifiedUA: '使用統一 Claude Code 版本', claudeUnifiedUADesc: '開啟後將使用從真實 Claude Code 客戶端捕獲的統一 User-Agent,提高相容性', claudeCurrentUnifiedVersion: '💡 目前統一版本:', claudeWaitingCapture: '⏳ 等待從 Claude Code 客戶端捕獲 User-Agent', claudeCaptureHint: '💡 提示:如果長時間未能捕獲,請確認有 Claude Code 客戶端正在使用此帳戶, 或聯繫開發者檢查 User-Agent 格式是否發生變化', claudeUseUnifiedClientId: '使用統一的客戶端標識', claudeUnifiedClientIdDesc: '開啟後將使用固定的客戶端標識,使所有請求看起來來自同一個客戶端,減少特徵', claudeClientIdLabel: '客戶端標識 ID', claudeClientIdDesc: '此ID將替換請求中的user_id客戶端部分,保留session部分用於黏性工作階段', // Setup Token 流程 setupTokenAuthProcess: 'Claude Setup Token 授權', setupTokenProcessDesc: '請按照以下步驟透過 Setup Token 完成 Claude 帳戶的授權:', setupTokenStepOneTitle: '步驟 1:產生授權連結', setupTokenStepOneDesc: '點擊下方按鈕產生授權連結', setupTokenGenerating: '產生中...', setupTokenGenerateBtn: '產生 Setup Token 授權連結', setupTokenCopyTitle: '複製連結', // 步驟指示器 stepIndicator: '步驟指示器', step1BasicInfo: '步驟1: 基本資訊和代理設定', step2OAuth: '步驟2: OAuth授權', step2SetupToken: '步驟2: Setup Token授權', // 群組選擇器 groupSelector: '群組選擇器', multiGroupInterface: '多選群組介面', createNewGroupOption: '新建群組選項', // 手動輸入Token提示 credentialsFromFile: '檔案中的憑證。', // Placeholder 文字 originalModelNamePlaceholder: '原始模型名稱', mappedModelNamePlaceholder: '映射後的模型名稱', userAgentPlaceholder: '留空則透傳用戶端 User-Agent', authCodePlaceholder: '貼上Claude Code授權頁面獲取的Authorization Code...', leaveEmptyNoUpdate: '留空表示不更新', leaveEmptyNoUpdateKey: '留空表示不更新 API Key', leaveEmptyNoUpdateToken: '留空表示不更新...', // 標籤和描述 customUserAgentOptional: '自定義 User-Agent (可選)', clientIdLabel: '用戶端標識 ID', schedulePriorityLabel: '調度優先級 (1-100)', attentionLabel: '注意:', supportedModelsLabel: '支援的模型', newAccessTokenLabel: '新的 Access Token', newRefreshTokenLabel: '新的 Refresh Token', updateTokenLabel: '更新 Token', // 按鈕文字 regenerateBtn: '重新產生', previousStepBtn: '上一步', // 描述性文字 claudeProLimitation: 'Pro 帳戶不支援 Claude Opus 4 模型', claude5HourLimitDesc: '5小時使用量接近限制時自動停止調度', claude5HourLimitExplanation: '當系統檢測到帳戶接近5小時使用限制時,自動暫停調度該帳戶。進入新的時間視窗後會自動恢復調度。', useUnifiedClaudeVersion: '使用統一 Claude Code 版本', unifiedVersionDesc: '開啟後將使用從真實 Claude Code 用戶端捕獲的統一 User-Agent,提高相容性', currentUnifiedVersion: '💡 目前統一版本:', waitingUserAgent: '⏳ 等待從 Claude Code 用戶端捕獲 User-Agent', userAgentTip: '💡 提示:如果長時間未能捕獲,請確認有 Claude Code 用戶端正在使用此帳戶,', contactDeveloper: '或聯繫開發者檢查 User-Agent 格式是否發生變化', useUnifiedClientId: '使用統一的用戶端標識', unifiedClientIdDesc: '開啟後將使用固定的用戶端標識,使所有請求看起來來自同一個用戶端,減少特徵', clientIdReplaceDesc: '此ID將替換請求中的user_id用戶端部分,保留session部分用於黏性工作階段', // OAuth 步驟文字 step1GenerateAuthLink: '步驟1: 產生授權連結', clickButtonGenerate: '點擊下方按鈕產生授權連結', copyLinkTitle: '複製連結', step2AccessAndAuth: '步驟2: 訪問連結並授權', openInBrowser: '在瀏覽器中開啟連結並完成授權', browserAuthDesc: '請在新分頁中開啟授權連結,登錄您的 Claude 帳戶並授權 Claude Code。', proxyNotice: '如果您設定了代理,請確保瀏覽器也使用相同的代理訪問授權頁面。', step3InputAuthCode: '步驟3: 輸入授權碼', inputAuthCodeTitle: '輸入 Authorization Code', authCompleteDesc: '授權完成後,從返回頁面複製 Authorization Code,並貼上到下方輸入框:', pasteAuthCodeDesc: '請貼上從 Claude Code 授權頁面複製的 Authorization Code', // AWS 區域參考 awsRegionRef: '常用 AWS 區域參考:', // 錯誤訊息 apiKeyRequired: '請填寫 API Key', refreshTokenRequired: '請填寫 Refresh Token', accessTokenRequired: '請填寫 Access Token', copyFailedManual: '複製失敗,請手動複製', // 表單描述 modelSupportDesc: '留空表示支援所有模型。如果指定模型,請求中的模型不在列表內將不會調度到此帳戶', modelTypeSelectionDesc: '選擇此部署支援的模型類型', userAgentDesc: '留空時將自動使用用戶端的 User-Agent,僅在需要固定特定 UA 時填寫', // 基础標籤 apiUrlLabel: 'API URL', apiUrlRequired: 'API URL *', apiKeyLabel: 'API Key', apiKeyRequired: 'API Key *', // 更多缺失的翻譯鍵 copyLinkTooltip: '複製連結', // Claude 訂閱類型顯示 claudeMaxDisplay: 'Claude Max', claudeProDisplay: 'Claude Pro' }, // OAuth Flow Component oauthFlow: { // 平台標題 claudeAccountAuth: 'Claude 帳戶授權', geminiAccountAuth: 'Gemini 帳戶授權', openaiAccountAuth: 'OpenAI 帳戶授權', // 流程說明 claudeAuthDescription: '請按照以下步驟完成 Claude 帳戶的授權:', geminiAuthDescription: '請按照以下步驟完成 Gemini 帳戶的授權:', openaiAuthDescription: '請按照以下步驟完成 OpenAI 帳戶的授權:', // 步驟標題 step1Title: '點擊下方按銮產生授權連結', step2Title: '在瀏覽器中打開連結並完成授權', step3Title: '輸入 Authorization Code', step3TitleOpenAI: '輸入授權連結或 Code', // 步驟描述 step2Description: '請在新分頁中打開授權連結,登入您的 Claude 帳戶並授權。', step2DescriptionGemini: '請在新分頁中打開授權連結,登入您的 Gemini 帳戶並授權。', step2DescriptionOpenAI: '請在新分頁中打開授權連結,登入您的 OpenAI 帳戶並授權。', step3Description: '授權完成後,頁面會顯示一個', step3DescriptionMiddle: ',請將其複製並貼上到下方輸入框:', step3DescriptionGemini: '授權完成後,頁面會顯示一個 Authorization Code,請將其複製並貼上到下方輸入框:', step3DescriptionOpenAI: '授權完成後,當頁面地址變為', step3DescriptionOpenAIMiddle: '時:', // 按銮文字 generating: '產生中...', generateAuthLink: '產生授權連結', regenerate: '重新產生', previousStep: '上一步', completeAuth: '完成授權', verifying: '驗證中...', // 占位符 authCodePlaceholder: '貼上Claude頁面獲取的Authorization Code...', authCodePlaceholderGemini: '貼上Gemini頁面獲取的Authorization Code...', authCodePlaceholderOpenAI: '方式1:複製完整的連結(http://localhost:1455/auth/callback?code=...)\n方式2:僅複製 code 參數的值\n系統會自動識別並提取所需資訊', // 標籤 authorizationCode: 'Authorization Code', authLinkOrCode: '授權連結或 Code', // 提示資訊 copyLinkTooltip: '複製連結', authCodeHint: '請貼上Claude頁面複製的Authorization Code', authCodeHintGemini: '請貼上Gemini頁面複製的Authorization Code', // 注意事項 proxyNotice: '注意:', proxyNoticeText: '如果您設定了代理,請確保瀏覽器也使用相同的代理訪問授權頁面。', // OpenAI 特有提示 openaiImportantNote: '重要提示:', openaiLoadingNote: '授權後頁面可能會加載較長時間,請耐心等待。', openaiAddressNote: '當瀏覽器地址欄變為', openaiAddressNoteMiddle: '開頭時,表示授權已完成。', openaiTip: '提示:', openaiTipText: '您可以直接複製整個連結或僅複製 code 參數值,系統會自動識別。', openaiLinkExample: '• 完整連結示例:', openaiCodeExample: '• 僅 Code 示例:', // 成功和錯誤消息 successExtractCode: '成功提取授權碼!', errorCodeNotFound: 'URL 中未找到授權碼參數,請檢查連結是否正確', errorLinkFormat: '連結格式錯誤,請檢查是否為完整的 URL', errorWrongUrlFormat: '請貼上以 http://localhost:1455 或 http://localhost:45462 開頭的連結', linkCopied: '連結已複製', authFailed: '授權失敗,請檢查授權碼是否正確', generateAuthFailed: '產生授權連結失敗' }, // Group Management Modal groupManagement: { title: '帳戶分組管理', createNewGroup: '創建新分組', createGroup: '創建新分組', groupNameRequired: '分組名稱 *', groupNamePlaceholder: '輸入分組名稱', platformTypeRequired: '平台類型 *', descriptionOptional: '描述 (可選)', descriptionPlaceholder: '分組描述...', creating: '創建中...', create: '創建', cancel: '取消', loading: '加載中...', noGroups: '暫無分組', noDescription: '暫無描述', membersCount: ' 個成員', edit: '編輯', delete: '刪除', editGroup: '編輯分組', platformTypeLabel: '平台類型', cannotModify: '(不可修改)', updating: '更新中...', update: '更新', // Toast messages loadGroupsFailed: '加載分組列表失敗', fillRequiredFields: '請填寫必填項', groupCreated: '分組創建成功', createGroupFailed: '創建分組失敗', fillGroupName: '請填寫分組名稱', groupUpdated: '分組更新成功', updateGroupFailed: '更新分組失敗', groupHasMembers: '分組內還有成員,無法刪除', confirmDelete: '確定要刪除分組 "{name}" 嗎?', groupDeleted: '分組刪除成功', deleteGroupFailed: '刪除分組失敗' }, // Proxy Configuration proxyConfig: { title: '代理設置 (可選)', enableProxy: '啟用代理', configDescription: '配置代理以訪問受限的網路資源。支持 SOCKS5 和 HTTP 代理。', stabilityNotice: '請確保代理伺服器穩定可用,否則會影響帳戶的正常使用。', proxyType: '代理類型', hostAddress: '主機地址', hostPlaceholder: '例如: 192.168.1.100', port: '端口', portPlaceholder: '例如: 1080', needsAuth: '需要身份驗證', username: '用戶名', usernamePlaceholder: '代理用戶名', password: '密碼', passwordPlaceholder: '代理密碼', tip: '提示:', apiRequestNotice: '代理設置將用於所有與此帳戶相關的API請求。請確保代理伺服器支持HTTPS流量轉發。' } }