export default { // Home Page home: { viewOnGithub: '在 GitHub 上查看', viewDocs: '查看文档', docs: '文档', switchToLight: '切换到浅色模式', switchToDark: '切换到深色模式', dashboard: '控制台', login: '登录', getStarted: '开始使用', goToDashboard: '进入控制台', tags: { subscriptionToApi: '订阅转 API', stickySession: '粘性会话', realtimeBilling: '实时计费', }, features: { unifiedGateway: '统一 API 网关', unifiedGatewayDesc: '将 Claude 订阅转换为 API 接口,通过标准 /v1/messages 接口访问 AI 能力。', multiAccount: '多账号池', multiAccountDesc: '智能负载均衡管理多个上游账号,支持 OAuth 和 API Key 认证。', balanceQuota: '余额与配额', balanceQuotaDesc: '基于 Token 的精确计费和用量追踪,支持配额管理和兑换码充值。', }, providers: { title: '支持的服务商', description: 'AI 服务的统一 API 接口', supported: '已支持', soon: '即将推出', }, footer: { allRightsReserved: '保留所有权利。', }, }, // Common common: { loading: '加载中...', save: '保存', cancel: '取消', delete: '删除', edit: '编辑', create: '创建', update: '更新', confirm: '确认', reset: '重置', search: '搜索', filter: '筛选', export: '导出', import: '导入', actions: '操作', status: '状态', name: '名称', email: '邮箱', password: '密码', submit: '提交', back: '返回', next: '下一步', yes: '是', no: '否', all: '全部', none: '无', noData: '暂无数据', success: '成功', error: '错误', warning: '警告', info: '提示', active: '启用', inactive: '禁用', close: '关闭', enabled: '已启用', disabled: '已禁用', total: '总计', balance: '余额', available: '可用', copiedToClipboard: '已复制到剪贴板', copyFailed: '复制失败', contactSupport: '联系客服', selectOption: '请选择', searchPlaceholder: '搜索...', noOptionsFound: '无匹配选项', saving: '保存中...', refresh: '刷新', }, // Navigation nav: { dashboard: '仪表盘', apiKeys: 'API 密钥', usage: '使用记录', redeem: '兑换', profile: '个人资料', users: '用户管理', groups: '分组管理', subscriptions: '订阅管理', accounts: '账号管理', proxies: 'IP管理', redeemCodes: '兑换码', settings: '系统设置', myAccount: '我的账户', lightMode: '浅色模式', darkMode: '深色模式', collapse: '收起', expand: '展开', logout: '退出登录', github: 'GitHub', mySubscriptions: '我的订阅', }, // Auth auth: { welcomeBack: '欢迎回来', signInToAccount: '登录您的账户以继续', signIn: '登录', signingIn: '登录中...', createAccount: '创建账户', signUpToStart: '注册以开始使用 {siteName}', signUp: '注册', processing: '处理中...', continue: '继续', rememberMe: '记住我', dontHaveAccount: '还没有账户?', alreadyHaveAccount: '已有账户?', registrationDisabled: '注册功能暂时关闭,请联系管理员。', emailLabel: '邮箱', emailPlaceholder: '请输入邮箱', passwordLabel: '密码', passwordPlaceholder: '请输入密码', createPasswordPlaceholder: '创建一个安全的密码', passwordHint: '至少 6 个字符', emailRequired: '请输入邮箱', invalidEmail: '请输入有效的邮箱地址', passwordRequired: '请输入密码', passwordMinLength: '密码至少需要 6 个字符', loginFailed: '登录失败,请检查您的凭据后重试。', registrationFailed: '注册失败,请重试。', loginSuccess: '登录成功!欢迎回来。', accountCreatedSuccess: '账户创建成功!欢迎使用 {siteName}。', turnstileExpired: '验证已过期,请重试', turnstileFailed: '验证失败,请重试', completeVerification: '请完成验证', }, // Dashboard dashboard: { title: '仪表盘', welcomeMessage: '欢迎回来!这是您账户的概览。', balance: '余额', apiKeys: 'API 密钥', todayRequests: '今日请求', todayCost: '今日消费', todayTokens: '今日 Token', totalTokens: '累计 Token', cacheToday: '今日缓存', performance: '性能指标', avgResponse: '平均响应', averageTime: '平均时间', timeRange: '时间范围', granularity: '粒度', day: '按天', hour: '按小时', modelDistribution: '模型分布', tokenUsageTrend: 'Token 使用趋势', noDataAvailable: '暂无数据', model: '模型', requests: '请求', tokens: 'Token', actual: '实际', standard: '标准', input: '输入', output: '输出', cache: '缓存', recentUsage: '最近使用', last7Days: '近 7 天', noUsageRecords: '暂无使用记录', startUsingApi: '开始使用 API 后,您的使用历史将显示在这里。', viewAllUsage: '查看全部', quickActions: '快捷操作', createApiKey: '创建 API 密钥', generateNewKey: '生成新的 API 密钥', viewUsage: '查看使用记录', checkDetailedLogs: '查看详细的使用日志', redeemCode: '兑换码', addBalanceWithCode: '使用兑换码充值', }, // Groups (shared) groups: { subscription: '订阅', }, // API Keys keys: { title: 'API 密钥', description: '管理您的 API 密钥和访问令牌', createKey: '创建密钥', editKey: '编辑密钥', deleteKey: '删除密钥', deleteConfirmMessage: "确定要删除 '{name}' 吗?此操作无法撤销。", apiKey: 'API 密钥', group: '分组', noGroup: '无分组', created: '创建时间', copyToClipboard: '复制到剪贴板', copied: '已复制!', importToCcSwitch: '导入到 CC Switch', enable: '启用', disable: '禁用', nameLabel: '名称', namePlaceholder: '我的 API 密钥', groupLabel: '分组', selectGroup: '选择分组', statusLabel: '状态', selectStatus: '选择状态', saving: '保存中...', noKeysYet: '暂无 API 密钥', createFirstKey: '创建您的第一个 API 密钥以开始使用 API。', keyCreatedSuccess: 'API 密钥创建成功', keyUpdatedSuccess: 'API 密钥更新成功', keyDeletedSuccess: 'API 密钥删除成功', keyEnabledSuccess: 'API 密钥已启用', keyDisabledSuccess: 'API 密钥已禁用', failedToLoad: '加载 API 密钥失败', failedToSave: '保存 API 密钥失败', failedToDelete: '删除 API 密钥失败', failedToUpdateStatus: '更新 API 密钥状态失败', clickToChangeGroup: '点击更换分组', groupChangedSuccess: '分组更换成功', failedToChangeGroup: '更换分组失败', groupRequired: '请选择分组', usage: '用量', today: '今日', total: '累计', useKey: '使用密钥', useKeyModal: { title: '使用 API 密钥', description: '将以下环境变量添加到您的终端配置文件或直接在终端中运行。', copy: '复制', copied: '已复制', note: '这些环境变量将在当前终端会话中生效。如需永久配置,请将其添加到 ~/.bashrc、~/.zshrc 或相应的配置文件中。', }, customKeyLabel: '自定义密钥', customKeyPlaceholder: '输入自定义密钥(至少16个字符)', customKeyHint: '仅允许字母、数字、下划线和连字符,最少16个字符。', customKeyTooShort: '自定义密钥至少需要16个字符', customKeyInvalidChars: '自定义密钥只能包含字母、数字、下划线和连字符', customKeyRequired: '请输入自定义密钥', }, // Usage usage: { title: '使用记录', description: '查看和分析您的 API 使用历史', totalRequests: '总请求数', totalTokens: '总 Token', totalCost: '总消费', standardCost: '标准', actualCost: '实际', avgDuration: '平均耗时', inSelectedRange: '所选范围内', perRequest: '每次请求', apiKeyFilter: 'API 密钥', allApiKeys: '全部密钥', timeRange: '时间范围', exportCsv: '导出 CSV', model: '模型', type: '类型', tokens: 'Token', cost: '费用', firstToken: '首 Token', duration: '耗时', time: '时间', stream: '流式', sync: '同步', in: '输入', out: '输出', cacheRead: '读取', cacheWrite: '写入', rate: '倍率', original: '原始', billed: '计费', noRecords: '未找到使用记录,请尝试调整筛选条件。', failedToLoad: '加载使用记录失败', noDataToExport: '没有可导出的数据', exportSuccess: '使用数据导出成功', billingType: '消费类型', balance: '余额', subscription: '订阅', }, // Redeem redeem: { title: '兑换码', description: '输入兑换码以充值余额或增加并发数', currentBalance: '当前余额', concurrency: '并发数', requests: '请求', redeemCodeLabel: '兑换码', redeemCodePlaceholder: '请输入兑换码', redeemCodeHint: '兑换码区分大小写', redeeming: '兑换中...', redeemButton: '兑换', redeemSuccess: '兑换成功!', redeemFailed: '兑换失败', added: '已添加', concurrentRequests: '并发请求', newBalance: '新余额', newConcurrency: '新并发数', aboutCodes: '关于兑换码', codeRule1: '每个兑换码只能使用一次', codeRule2: '兑换码可以增加余额、并发数或试用权限', codeRule3: '如有兑换问题,请联系客服', codeRule4: '余额和并发数即时更新', recentActivity: '最近活动', historyWillAppear: '您的兑换历史将显示在这里', balanceAddedRedeem: '余额充值(兑换)', balanceAddedAdmin: '余额充值(管理员)', balanceDeductedAdmin: '余额扣除(管理员)', concurrencyAddedRedeem: '并发增加(兑换)', concurrencyAddedAdmin: '并发增加(管理员)', concurrencyReducedAdmin: '并发减少(管理员)', adminAdjustment: '管理员调整', subscriptionAssigned: '订阅已分配', subscriptionAssignedDesc: '您已获得 {groupName} 的访问权限', subscriptionDays: '{days} 天', days: '天', codeRedeemSuccess: '兑换成功!', failedToRedeem: '兑换失败,请检查兑换码后重试。', }, // Profile profile: { title: '个人设置', description: '管理您的账户信息和设置', accountBalance: '账户余额', concurrencyLimit: '并发限制', memberSince: '注册时间', administrator: '管理员', user: '用户', username: '用户名', wechat: '微信号', enterUsername: '输入用户名', enterWechat: '输入微信号', editProfile: '编辑个人资料', updateProfile: '更新资料', updating: '更新中...', updateSuccess: '资料更新成功', updateFailed: '资料更新失败', changePassword: '修改密码', currentPassword: '当前密码', newPassword: '新密码', confirmNewPassword: '确认新密码', passwordHint: '密码至少需要 8 个字符', changingPassword: '修改中...', changePasswordButton: '修改密码', passwordsNotMatch: '两次输入的密码不一致', passwordTooShort: '密码至少需要 8 个字符', passwordChangeSuccess: '密码修改成功', passwordChangeFailed: '密码修改失败', }, // Empty States empty: { noData: '暂无数据', }, // Pagination pagination: { showing: '显示', to: '至', of: '共', results: '条结果', page: '页', pageOf: '第 {page} / {total} 页', previous: '上一页', next: '下一页', perPage: '每页', goToPage: '跳转到第 {page} 页', }, // Errors errors: { somethingWentWrong: '出错了', pageNotFound: '页面未找到', unauthorized: '未授权', forbidden: '禁止访问', serverError: '服务器错误', networkError: '网络错误', timeout: '请求超时', tryAgain: '请重试', }, // Dates dates: { today: '今天', yesterday: '昨天', thisWeek: '本周', lastWeek: '上周', thisMonth: '本月', lastMonth: '上月', last7Days: '近 7 天', last14Days: '近 14 天', last30Days: '近 30 天', custom: '自定义', startDate: '开始日期', endDate: '结束日期', apply: '应用', selectDateRange: '选择日期范围', }, // Admin admin: { // Dashboard dashboard: { title: '管理控制台', description: '系统概览与统计数据', apiKeys: 'API 密钥', totalApiKeys: 'API 密钥总数', activeApiKeys: '活跃密钥', users: '用户', totalUsers: '用户总数', activeUsers: '活跃用户', accounts: '账号', totalAccounts: '账号总数', activeAccounts: '活跃账号', todayRequests: '今日请求', totalRequests: '总请求数', todayCost: '今日消费', totalCost: '总消费', actual: '实际', standard: '标准', todayTokens: '今日 Token', totalTokens: '总 Token', input: '输入', output: '输出', cacheToday: '今日缓存', performance: '性能指标', avgResponse: '平均响应', averageTime: '平均时间', timeRange: '时间范围', granularity: '粒度', day: '按天', hour: '按小时', modelDistribution: '模型分布', tokenUsageTrend: 'Token 使用趋势', noDataAvailable: '暂无数据', model: '模型', requests: '请求', tokens: 'Token', cache: '缓存', recentUsage: '最近使用', last7Days: '近 7 天', noUsageRecords: '暂无使用记录', startUsingApi: '开始使用 API 后,使用历史将显示在这里。', viewAllUsage: '查看全部', quickActions: '快捷操作', manageUsers: '管理用户', viewUserAccounts: '查看和管理用户账户', manageAccounts: '管理账号', configureAiAccounts: '配置 AI 平台账号', systemSettings: '系统设置', configureSystem: '配置系统设置', failedToLoad: '加载仪表盘数据失败', }, // Users Management users: { title: '用户管理', description: '管理用户账户和权限', createUser: '创建用户', editUser: '编辑用户', deleteUser: '删除用户', deleteConfirmMessage: "确定要删除用户 '{email}' 吗?此操作无法撤销。", searchPlaceholder: '搜索用户...', searchUsers: '搜索用户...', roleFilter: '角色筛选', allRoles: '全部角色', allStatus: '全部状态', statusFilter: '状态筛选', allStatuses: '全部状态', admin: '管理员', user: '用户', disabled: '禁用', email: '邮箱', password: '密码', username: '用户名', wechat: '微信号', notes: '备注', enterEmail: '请输入邮箱', enterPassword: '请输入密码', enterUsername: '请输入用户名(选填)', enterWechat: '请输入微信号(选填)', enterNotes: '请输入备注(仅管理员可见)', notesHint: '此备注仅对管理员可见', enterNewPassword: '请输入新密码(选填)', leaveEmptyToKeep: '留空则保持原密码不变', generatePassword: '生成随机密码', copyPassword: '复制密码', creating: '创建中...', updating: '更新中...', columns: { user: '用户', email: '邮箱', username: '用户名', wechat: '微信号', notes: '备注', role: '角色', subscriptions: '订阅分组', balance: '余额', usage: '用量', concurrency: '并发数', status: '状态', created: '创建时间', actions: '操作', }, today: '今日', total: '累计', noSubscription: '暂无订阅', daysRemaining: '{days}天', expired: '已过期', disableUser: '禁用用户', enableUser: '启用用户', viewApiKeys: '查看 API 密钥', userApiKeys: '用户 API 密钥', noApiKeys: '此用户暂无 API 密钥', group: '分组', none: '无', noUsersYet: '暂无用户', createFirstUser: '创建您的第一个用户以开始使用系统', userCreated: '用户创建成功', userUpdated: '用户更新成功', userDeleted: '用户删除成功', userEnabled: '用户已启用', userDisabled: '用户已禁用', failedToLoad: '加载用户列表失败', failedToCreate: '创建用户失败', failedToUpdate: '更新用户失败', failedToDelete: '删除用户失败', failedToToggle: '更新用户状态失败', failedToLoadApiKeys: '加载用户 API 密钥失败', deleteConfirm: "确定要删除用户 '{email}' 吗?此操作无法撤销。", roles: { admin: '管理员', user: '用户', }, statuses: { active: '正常', banned: '禁用', }, form: { emailLabel: '邮箱', emailPlaceholder: '请输入邮箱', usernameLabel: '用户名', usernamePlaceholder: '请输入用户名(选填)', wechatLabel: '微信号', wechatPlaceholder: '请输入微信号(选填)', notesLabel: '备注', notesPlaceholder: '请输入备注(仅管理员可见)', notesHint: '此备注仅对管理员可见', passwordLabel: '密码', passwordPlaceholder: '请输入密码(留空则不修改)', roleLabel: '角色', selectRole: '选择角色', balanceLabel: '余额', concurrencyLabel: '并发数', statusLabel: '状态', selectStatus: '选择状态', }, adjustBalance: '调整余额', adjustConcurrency: '调整并发数', adjustmentAmount: '调整金额', adjustmentAmountHint: '正数增加,负数减少', currentBalance: '当前余额', currentConcurrency: '当前并发数', saving: '保存中...', noUsers: '暂无用户', noUsersDescription: '创建您的第一个用户以开始使用系统。', userCreatedSuccess: '用户创建成功', userUpdatedSuccess: '用户更新成功', userDeletedSuccess: '用户删除成功', balanceAdjustedSuccess: '余额调整成功', concurrencyAdjustedSuccess: '并发数调整成功', failedToSave: '保存用户失败', failedToAdjust: '调整失败', setAllowedGroups: '设置允许分组', allowedGroupsHint: '选择此用户可以使用的标准分组。订阅类型分组请在订阅管理中配置。', noStandardGroups: '暂无标准分组', allowAllGroups: '允许全部分组', allowAllGroupsHint: '用户可以使用任何非专属分组', allowedGroupsUpdated: '允许分组更新成功', failedToLoadGroups: '加载分组列表失败', failedToUpdateAllowedGroups: '更新允许分组失败', deposit: '充值', withdraw: '退款', depositAmount: '充值金额', withdrawAmount: '退款金额', depositNotesPlaceholder: '例如:新用户注册奖励、活动充值、补偿充值等', withdrawNotesPlaceholder: '例如:服务问题退款、错误充值退回、账户注销退款等', notesOptional: '备注为可选项,有助于未来查账', amountHint: '请输入正数金额', newBalance: '操作后余额', depositing: '充值中...', withdrawing: '退款中...', confirmDeposit: '确认充值', confirmWithdraw: '确认退款', depositSuccess: '充值成功', withdrawSuccess: '退款成功', failedToDeposit: '充值失败', failedToWithdraw: '退款失败', useDepositWithdrawButtons: '请使用充值/退款按钮调整余额', insufficientBalance: '余额不足,退款后余额不能为负数', }, // Groups Management groups: { title: '分组管理', description: '管理 API 密钥分组和费率配置', createGroup: '创建分组', editGroup: '编辑分组', deleteGroup: '删除分组', deleteConfirm: "确定要删除分组 '{name}' 吗?所有关联的 API 密钥将不再属于任何分组。", deleteConfirmSubscription: "确定要删除订阅分组 '{name}' 吗?此操作会让所有绑定此订阅的用户的 API Key 失效,并删除所有相关的订阅记录。此操作无法撤销。", columns: { name: '名称', platform: '平台', rateMultiplier: '费率倍数', exclusive: '独占', type: '类型', priority: '优先级', apiKeys: 'API 密钥数', accounts: '账号数', status: '状态', actions: '操作', billingType: '计费类型', }, form: { name: '名称', description: '描述', platform: '平台', rateMultiplier: '费率倍数', status: '状态', nameLabel: '分组名称', namePlaceholder: '请输入分组名称', descriptionLabel: '描述', descriptionPlaceholder: '请输入描述(可选)', rateMultiplierLabel: '费率倍数', rateMultiplierHint: '1.0 = 标准费率,0.5 = 半价,2.0 = 双倍', exclusiveLabel: '独占模式', exclusiveHint: '启用后,此分组的用户将独占使用分配的账号', platformLabel: '平台限制', platformPlaceholder: '选择平台(留空则不限制)', accountsLabel: '指定账号', accountsPlaceholder: '选择账号(留空则不限制)', priorityLabel: '优先级', priorityHint: '数值越高优先级越高,用于账号调度', statusLabel: '状态', }, exclusive: { yes: '是', no: '否', }, platforms: { all: '全部平台', claude: 'Claude', openai: 'OpenAI', }, saving: '保存中...', noGroups: '暂无分组', noGroupsDescription: '创建分组以更好地管理 API 密钥和费率。', groupCreatedSuccess: '分组创建成功', groupUpdatedSuccess: '分组更新成功', groupDeletedSuccess: '分组删除成功', failedToLoad: '加载分组列表失败', failedToSave: '保存分组失败', failedToDelete: '删除分组失败', allPlatforms: '全部平台', allStatus: '全部状态', allGroups: '全部分组', exclusiveFilter: '独占', nonExclusive: '非独占', public: '公开', accountsCount: '{count} 个账号', enterGroupName: '请输入分组名称', optionalDescription: '可选描述', platformHint: '选择此分组关联的平台', platformNotEditable: '创建后不可更改平台', noGroupsYet: '暂无分组', createFirstGroup: '创建您的第一个分组来组织 API 密钥。', creating: '创建中...', updating: '更新中...', limitDay: '日', limitWeek: '周', limitMonth: '月', groupCreated: '分组创建成功', groupUpdated: '分组更新成功', groupDeleted: '分组删除成功', failedToCreate: '创建分组失败', failedToUpdate: '更新分组失败', subscription: { title: '订阅设置', type: '计费类型', typeHint: '标准计费从用户余额扣除。订阅模式使用配额限制。', typeNotEditable: '分组创建后无法修改计费类型。', standard: '标准(余额)', subscription: '订阅(配额)', dailyLimit: '每日限额(USD)', weeklyLimit: '每周限额(USD)', monthlyLimit: '每月限额(USD)', defaultValidityDays: '默认有效期(天)', validityHint: '分配给用户时订阅的有效天数', noLimit: '无限制', }, }, // Subscriptions Management subscriptions: { title: '订阅管理', description: '管理用户订阅和配额限制', assignSubscription: '分配订阅', extendSubscription: '延长订阅', revokeSubscription: '撤销订阅', allStatus: '全部状态', allGroups: '全部分组', daily: '每日', weekly: '每周', monthly: '每月', noLimits: '未配置限额', resetNow: '即将重置', windowNotActive: '窗口未激活', resetInMinutes: '{minutes} 分钟后重置', resetInHoursMinutes: '{hours} 小时 {minutes} 分钟后重置', resetInDaysHours: '{days} 天 {hours} 小时后重置', daysRemaining: '天剩余', noExpiration: '无过期时间', status: { active: '生效中', expired: '已过期', revoked: '已撤销', }, columns: { user: '用户', group: '分组', usage: '用量', expires: '到期时间', status: '状态', actions: '操作', }, form: { user: '用户', group: '订阅分组', validityDays: '有效期(天)', extendDays: '延长天数', }, selectUser: '选择用户', selectGroup: '选择订阅分组', groupHint: '仅显示订阅计费类型的分组', validityHint: '订阅的有效天数', extendingFor: '为以下用户延长订阅', currentExpiration: '当前到期时间', assign: '分配', assigning: '分配中...', extend: '延长', extending: '延长中...', revoke: '撤销', noSubscriptionsYet: '暂无订阅', assignFirstSubscription: '分配一个订阅以开始使用。', subscriptionAssigned: '订阅分配成功', subscriptionExtended: '订阅延长成功', subscriptionRevoked: '订阅撤销成功', failedToLoad: '加载订阅列表失败', failedToAssign: '分配订阅失败', failedToExtend: '延长订阅失败', failedToRevoke: '撤销订阅失败', revokeConfirm: "确定要撤销 '{user}' 的订阅吗?此操作无法撤销。", }, // Accounts Management accounts: { title: '账号管理', description: '管理 AI 平台账号和 Cookie', createAccount: '添加账号', syncFromCrs: '从 CRS 同步', syncFromCrsTitle: '从 CRS 同步账号', syncFromCrsDesc: '将 claude-relay-service(CRS)中的账号同步到当前系统(不会在浏览器侧直接请求 CRS)。', crsVersionRequirement: '⚠️ 注意:CRS 版本必须 ≥ v1.1.240 才支持此功能', crsBaseUrl: 'CRS 服务地址', crsBaseUrlPlaceholder: '例如:http://127.0.0.1:3000', crsUsername: '用户名', crsPassword: '密码', syncProxies: '同时同步代理(按 host/port/账号匹配或自动创建)', syncNow: '开始同步', syncing: '同步中...', syncMissingFields: '请填写服务地址、用户名和密码', syncResult: '同步结果', syncResultSummary: '创建 {created},更新 {updated},跳过 {skipped},失败 {failed}', syncErrors: '错误/跳过详情', syncCompleted: '同步完成:创建 {created},更新 {updated}', syncCompletedWithErrors: '同步完成但有错误:失败 {failed}(创建 {created},更新 {updated})', syncFailed: '同步失败', editAccount: '编辑账号', deleteAccount: '删除账号', deleteConfirmMessage: "确定要删除账号 '{name}' 吗?", refreshCookie: '刷新 Cookie', testAccount: '测试账号', // Filter options allPlatforms: '全部平台', allTypes: '全部类型', allStatus: '全部状态', oauthType: 'OAuth', // Schedulable toggle schedulable: '参与调度', schedulableHint: '开启后账号参与API请求调度', schedulableEnabled: '调度已开启', schedulableDisabled: '调度已关闭', failedToToggleSchedulable: '切换调度状态失败', columns: { name: '名称', platformType: '平台/类型', platform: '平台', type: '类型', concurrencyStatus: '并发', priority: '优先级', weight: '权重', status: '状态', schedulable: '调度', todayStats: '今日统计', groups: '分组', usageWindows: '用量窗口', lastUsed: '最近使用', actions: '操作', }, platforms: { claude: 'Claude', openai: 'OpenAI', anthropic: 'Anthropic', }, types: { oauth: 'OAuth', api_key: 'API Key', cookie: 'Cookie', }, statuses: { active: '正常', inactive: '停用', error: '错误', cooldown: '冷却中', }, form: { nameLabel: '账号名称', namePlaceholder: '请输入账号名称', platformLabel: '平台', selectPlatform: '选择平台', typeLabel: '类型', selectType: '选择类型', credentialsLabel: '凭证', credentialsPlaceholder: '请输入 Cookie 或 API Key', priorityLabel: '优先级', priorityHint: '数值越高优先级越高', weightLabel: '权重', weightHint: '用于负载均衡的权重值', statusLabel: '状态', }, filters: { platform: '平台', allPlatforms: '全部平台', type: '类型', allTypes: '全部类型', status: '状态', allStatuses: '全部状态', }, saving: '保存中...', refreshing: '刷新中...', testing: '测试中...', noAccounts: '暂无账号', noAccountsDescription: '添加 AI 平台账号以开始使用 API 网关。', accountCreatedSuccess: '账号添加成功', accountUpdatedSuccess: '账号更新成功', accountDeletedSuccess: '账号删除成功', bulkActions: { selected: '已选择 {count} 个账号', selectCurrentPage: '本页全选', clear: '清除选择', edit: '批量编辑账号', delete: '批量删除', }, bulkEdit: { title: '批量编辑账号', selectionInfo: '已选择 {count} 个账号。只更新您勾选或填写的字段,未勾选的字段保持不变。', baseUrlPlaceholder: 'https://api.anthropic.com 或 https://api.openai.com', baseUrlNotice: '仅适用于 API Key 账号,留空则不修改', submit: '批量更新', updating: '更新中...', success: '成功更新 {count} 个账号', partialSuccess: '部分更新成功:成功 {success} 个,失败 {failed} 个', failed: '批量更新失败', noSelection: '请选择要编辑的账号', noFieldsSelected: '请至少选择一个要更新的字段', }, bulkDeleteTitle: '批量删除账号', bulkDeleteConfirm: '确定要删除选中的 {count} 个账号吗?此操作无法撤销。', bulkDeleteSuccess: '成功删除 {count} 个账号', bulkDeletePartial: '部分删除成功:成功 {success} 个,失败 {failed} 个', bulkDeleteFailed: '批量删除失败', resetStatus: '重置状态', statusReset: '账号状态已重置', failedToResetStatus: '重置账号状态失败', cookieRefreshedSuccess: 'Cookie 刷新成功', testSuccess: '账号测试通过', testFailed: '账号测试失败', failedToLoad: '加载账号列表失败', failedToSave: '保存账号失败', failedToDelete: '删除账号失败', failedToRefresh: '刷新 Cookie 失败', // Create/Edit Account Modal platform: '平台', accountName: '账号名称', enterAccountName: '请输入账号名称', accountType: '账号类型', claudeCode: 'Claude Code', claudeConsole: 'Claude Console', oauthSetupToken: 'OAuth / Setup Token', addMethod: '添加方式', setupTokenLongLived: 'Setup Token(长期有效)', baseUrl: 'Base URL', baseUrlHint: '留空使用官方 Anthropic API', apiKeyRequired: 'API Key *', apiKeyPlaceholder: 'sk-ant-api03-...', apiKeyHint: '您的 Claude Console API Key', modelRestriction: '模型限制(可选)', modelWhitelist: '模型白名单', modelMapping: '模型映射', selectAllowedModels: '选择允许的模型。留空则支持所有模型。', mapRequestModels: '将请求模型映射到实际模型。左边是请求的模型,右边是发送到 API 的实际模型。', selectedModels: '已选择 {count} 个模型', supportsAllModels: '(支持所有模型)', requestModel: '请求模型', actualModel: '实际模型', addMapping: '添加映射', mappingExists: '模型 {model} 的映射已存在', customErrorCodes: '自定义错误码', customErrorCodesHint: '仅对选中的错误码停止调度', customErrorCodesWarning: '仅选中的错误码会停止调度,其他错误将返回 500。', selectedErrorCodes: '已选择', noneSelectedUsesDefault: '未选择(使用默认策略)', enterErrorCode: '输入错误码 (100-599)', invalidErrorCode: '请输入有效的 HTTP 错误码 (100-599)', errorCodeExists: '该错误码已被选中', interceptWarmupRequests: '拦截预热请求', interceptWarmupRequestsDesc: '启用后,标题生成等预热请求将返回 mock 响应,不消耗上游 token', proxy: '代理', noProxy: '无代理', concurrency: '并发数', priority: '优先级', priorityHint: '优先级越高的账号优先使用', higherPriorityFirst: '数值越高优先级越高', creating: '创建中...', updating: '更新中...', accountCreated: '账号创建成功', accountUpdated: '账号更新成功', failedToCreate: '创建账号失败', failedToUpdate: '更新账号失败', pleaseEnterAccountName: '请输入账号名称', pleaseEnterApiKey: '请输入 API Key', apiKeyIsRequired: 'API Key 是必需的', leaveEmptyToKeep: '留空以保持当前密钥', // OAuth flow oauth: { title: 'Claude 账号授权', authMethod: '授权方式', manualAuth: '手动授权', cookieAutoAuth: 'Cookie 自动授权', cookieAutoAuthDesc: '使用 claude.ai sessionKey 自动完成 OAuth 授权,无需手动打开浏览器。', sessionKey: 'sessionKey', keysCount: '{count} 个密钥', batchCreateAccounts: '将批量创建 {count} 个账号', sessionKeyPlaceholder: '每行一个 sessionKey,例如:\nsk-ant-sid01-xxxxx...\nsk-ant-sid01-yyyyy...', sessionKeyPlaceholderSingle: 'sk-ant-sid01-xxxxx...', howToGetSessionKey: '如何获取 sessionKey', step1: '在浏览器中登录 claude.ai', step2: '按 F12 打开开发者工具', step3: '切换到 Application 标签', step4: '找到 Cookieshttps://claude.ai', step5: '找到 sessionKey 所在行', step6: '复制 Value 列的值', sessionKeyFormat: 'sessionKey 通常以 sk-ant-sid01- 开头', startAutoAuth: '开始自动授权', authorizing: '授权中...', followSteps: '按照以下步骤授权您的 Claude 账号:', step1GenerateUrl: '点击下方按钮生成授权 URL', generateAuthUrl: '生成授权 URL', generating: '生成中...', regenerate: '重新生成', step2OpenUrl: '在浏览器中打开 URL 并完成授权', openUrlDesc: '在新标签页中打开授权 URL,登录您的 Claude 账号并授权。', proxyWarning: '注意:如果您配置了代理,请确保浏览器使用相同的代理访问授权页面。', step3EnterCode: '输入授权码', authCodeDesc: '授权完成后,页面会显示一个 授权码。复制并粘贴到下方:', authCode: '授权码', authCodePlaceholder: '粘贴 Claude 页面的授权码...', authCodeHint: '粘贴从 Claude 页面复制的授权码', completeAuth: '完成授权', verifying: '验证中...', pleaseEnterSessionKey: '请输入至少一个有效的 sessionKey', authFailed: '授权失败', cookieAuthFailed: 'Cookie 授权失败', keyAuthFailed: '密钥 {index}: {error}', successCreated: '成功创建 {count} 个账号', // OpenAI specific openai: { title: 'OpenAI 账户授权', followSteps: '请按照以下步骤完成 OpenAI 账户的授权:', step1GenerateUrl: '点击下方按钮生成授权链接', generateAuthUrl: '生成授权链接', step2OpenUrl: '在浏览器中打开链接并完成授权', openUrlDesc: '请在新标签页中打开授权链接,登录您的 OpenAI 账户并授权。', importantNotice: '重要提示:授权后页面可能会加载较长时间,请耐心等待。当浏览器地址栏变为 http://localhost... 开头时,表示授权已完成。', step3EnterCode: '输入授权链接或 Code', authCodeDesc: '授权完成后,当页面地址变为 http://localhost:xxx/auth/callback?code=... 时:', authCode: '授权链接或 Code', authCodePlaceholder: '方式1:复制完整的链接\n(http://localhost:xxx/auth/callback?code=...)\n方式2:仅复制 code 参数的值', authCodeHint: '您可以直接复制整个链接或仅复制 code 参数值,系统会自动识别', }, }, // Re-Auth Modal reAuthorizeAccount: '重新授权账号', claudeCodeAccount: 'Claude Code 账号', openaiAccount: 'OpenAI 账号', inputMethod: '输入方式', reAuthorizedSuccess: '账号重新授权成功', // Test Modal testAccountConnection: '测试账号连接', account: '账号', readyToTest: '准备测试。点击"开始测试"按钮开始...', connectingToApi: '连接 API 中...', testCompleted: '测试完成!', connectedToApi: '已连接到 API', usingModel: '使用模型:{model}', sendingTestMessage: '发送测试消息:"hi"', response: '响应:', startTest: '开始测试', retry: '重试', copyOutput: '复制输出', startingTestForAccount: '开始测试账号:{name}', testAccountTypeLabel: '账号类型:{type}', selectTestModel: '选择测试模型', testModel: 'claude-sonnet-4-5-20250929', testPrompt: '提示词:"hi"', // Stats Modal viewStats: '查看统计', usageStatistics: '使用统计', last30DaysUsage: '近30天使用统计(日均基于实际使用天数)', stats: { totalCost: '30天总费用', accumulatedCost: '累计成本', standardCost: '标准计费', totalRequests: '30天总请求', totalCalls: '累计调用次数', avgDailyCost: '日均费用', basedOnActualDays: '基于 {days} 天实际使用', avgDailyRequests: '日均请求', avgDailyUsage: '平均每日调用', todayOverview: '今日概览', cost: '费用', requests: '请求', highestCostDay: '最高费用日', highestRequestDay: '最高请求日', date: '日期', accumulatedTokens: '累计 Token', totalTokens: '30天总计', dailyAvgTokens: '日均 Token', performance: '性能', avgResponseTime: '平均响应', daysActive: '活跃天数', recentActivity: '最近统计', todayRequests: '今日请求', todayTokens: '今日 Token', todayCost: '今日费用', usageTrend: '30天费用与请求趋势', noData: '该账号暂无使用数据', }, }, // Proxies Management proxies: { title: 'IP管理', description: '管理代理服务器配置', createProxy: '添加代理', editProxy: '编辑代理', deleteProxy: '删除代理', deleteConfirmMessage: "确定要删除代理 '{name}' 吗?", testProxy: '测试代理', columns: { name: '名称', protocol: '协议', address: '地址', priority: '优先级', status: '状态', lastCheck: '最近检测', actions: '操作', }, protocols: { http: 'HTTP', https: 'HTTPS', socks5: 'SOCKS5', }, statuses: { active: '正常', inactive: '停用', error: '错误', }, form: { nameLabel: '名称', namePlaceholder: '请输入代理名称', protocolLabel: '协议', selectProtocol: '选择协议', hostLabel: '主机', hostPlaceholder: '请输入主机地址', portLabel: '端口', portPlaceholder: '请输入端口', usernameLabel: '用户名(可选)', usernamePlaceholder: '请输入用户名', passwordLabel: '密码(可选)', passwordPlaceholder: '请输入密码', priorityLabel: '优先级', statusLabel: '状态', }, filters: { protocol: '协议', allProtocols: '全部协议', status: '状态', allStatuses: '全部状态', }, // Additional keys used in ProxiesView allProtocols: '全部协议', allStatus: '全部状态', searchProxies: '搜索代理...', name: '名称', protocol: '协议', host: '主机', port: '端口', username: '用户名(可选)', password: '密码(可选)', status: '状态', enterProxyName: '请输入代理名称', optionalAuth: '可选认证信息', leaveEmptyToKeep: '留空保持不变', noProxiesYet: '暂无代理', createFirstProxy: '添加您的第一个代理以开始使用。', testConnection: '测试连接', batchTest: '批量测试', testFailed: '失败', // Batch import standardAdd: '标准添加', batchAdd: '快捷添加', batchInput: '代理列表', batchInputPlaceholder: "每行输入一个代理,支持以下格式:\nsocks5://user:pass{'@'}192.168.1.1:1080\nhttp://192.168.1.1:8080\nhttps://user:pass{'@'}proxy.example.com:443", batchInputHint: "支持 http、https、socks5 协议,格式:协议://[用户名:密码{'@'}]主机:端口", parsedCount: '有效 {count} 个', invalidCount: '无效 {count} 个', duplicateCount: '重复 {count} 个', importing: '导入中...', importProxies: '导入 {count} 个代理', batchImportSuccess: '成功导入 {created} 个代理,跳过 {skipped} 个重复', batchImportAllSkipped: '全部 {skipped} 个代理已存在,跳过导入', failedToImport: '批量导入失败', // Other messages saving: '保存中...', testing: '测试中...', creating: '创建中...', updating: '更新中...', noProxies: '暂无代理', noProxiesDescription: '添加代理服务器以增强 API 访问稳定性。', proxyCreated: '代理添加成功', proxyUpdated: '代理更新成功', proxyDeleted: '代理删除成功', proxyWorking: '代理连接正常', proxyWorkingWithLatency: '代理连接正常,延迟 {latency}ms', proxyTestFailed: '代理测试失败', proxyCreatedSuccess: '代理添加成功', proxyUpdatedSuccess: '代理更新成功', proxyDeletedSuccess: '代理删除成功', testSuccess: '代理测试通过', failedToLoad: '加载代理列表失败', failedToSave: '保存代理失败', failedToDelete: '删除代理失败', failedToCreate: '创建代理失败', failedToUpdate: '更新代理失败', failedToTest: '测试代理失败', deleteConfirm: "确定要删除代理 '{name}' 吗?使用此代理的账号将被移除代理设置。", }, // Redeem Codes Management redeem: { title: '兑换码管理', description: '生成和管理兑换码', generateCodes: '生成兑换码', columns: { code: '兑换码', type: '类型', value: '面值', status: '状态', usedBy: '使用者', usedAt: '使用时间', createdAt: '创建时间', actions: '操作', }, types: { balance: '余额', concurrency: '并发数', subscription: '订阅', }, // 用于选择器和筛选器的直接键 balance: '余额', concurrency: '并发数', subscription: '订阅', allTypes: '全部类型', allStatus: '全部状态', unused: '未使用', used: '已使用', searchCodes: '搜索兑换码...', exportCsv: '导出 CSV', deleteAllUnused: '删除全部未使用', deleteCodeConfirm: '确定要删除此兑换码吗?此操作无法撤销。', deleteAllUnusedConfirm: '确定要删除全部未使用的兑换码吗?此操作无法撤销。', deleteAll: '全部删除', generateCodesTitle: '生成兑换码', generatedSuccessfully: '生成成功', codesCreated: '已创建 {count} 个兑换码', codeType: '类型', amount: '金额 ($)', value: '面值', count: '数量', generate: '生成', copyAll: '全部复制', download: '下载', codesExported: '兑换码导出成功', codeDeleted: '兑换码删除成功', codesDeleted: '成功删除 {count} 个未使用的兑换码', noUnusedCodes: '没有未使用的兑换码可删除', userPrefix: '用户 #{id}', failedToExport: '导出兑换码失败', failedToDeleteUnused: '删除未使用的兑换码失败', failedToCopy: '复制失败', selectGroup: '选择分组', selectGroupPlaceholder: '选择订阅分组', validityDays: '有效天数', groupRequired: '请选择订阅分组', days: '天', statuses: { unused: '未使用', used: '已使用', expired: '已过期', disabled: '已禁用', }, form: { typeLabel: '类型', selectType: '选择类型', valueLabel: '面值', valuePlaceholder: '请输入面值', balanceHint: '余额金额(美元)', concurrencyHint: '并发数增量', countLabel: '数量', countPlaceholder: '请输入数量', countHint: '要生成的兑换码数量', prefixLabel: '前缀(可选)', prefixPlaceholder: '例如:GIFT', expiresLabel: '过期时间(可选)', }, filters: { type: '类型', allTypes: '全部类型', status: '状态', allStatuses: '全部状态', search: '搜索兑换码', }, generating: '生成中...', copyCode: '复制', copied: '已复制!', disableCode: '禁用', enableCode: '启用', deleteCode: '删除', deleteConfirmMessage: '确定要删除此兑换码吗?', noCodes: '暂无兑换码', noCodesDescription: '生成兑换码以向用户分发余额或并发数。', codesGeneratedSuccess: '兑换码生成成功,共 {count} 个', codeDisabledSuccess: '兑换码已禁用', codeEnabledSuccess: '兑换码已启用', codeDeletedSuccess: '兑换码删除成功', failedToLoad: '加载兑换码列表失败', failedToGenerate: '生成兑换码失败', failedToUpdate: '更新兑换码失败', failedToDelete: '删除兑换码失败', }, // Usage Records usage: { title: '使用记录', description: '查看和管理所有用户的使用记录', userFilter: '用户', searchUserPlaceholder: '按邮箱搜索用户...', selectedUser: '已选择', user: '用户', failedToLoad: '加载使用记录失败', }, // Settings settings: { title: '系统设置', description: '管理注册、邮箱验证、默认值和 SMTP 设置', registration: { title: '注册设置', description: '控制用户注册和验证', enableRegistration: '开放注册', enableRegistrationHint: '允许新用户注册', emailVerification: '邮箱验证', emailVerificationHint: '新用户注册时需要验证邮箱', }, turnstile: { title: 'Cloudflare Turnstile', description: '登录和注册的机器人防护', enableTurnstile: '启用 Turnstile', enableTurnstileHint: '需要 Cloudflare Turnstile 验证', siteKey: '站点密钥', secretKey: '私密密钥', siteKeyHint: '从 Cloudflare Dashboard 获取', secretKeyHint: '服务端验证密钥(请保密)', }, defaults: { title: '用户默认设置', description: '新用户的默认值', defaultBalance: '默认余额', defaultBalanceHint: '新用户的初始余额', defaultConcurrency: '默认并发数', defaultConcurrencyHint: '新用户的最大并发请求数', }, site: { title: '站点设置', description: '自定义站点品牌', siteName: '站点名称', siteNameHint: '显示在邮件和页面标题中', siteSubtitle: '站点副标题', siteSubtitleHint: '显示在登录和注册页面', apiBaseUrl: 'API 端点地址', apiBaseUrlHint: '用于"使用密钥"和"导入到 CC Switch"功能,留空则使用当前站点地址', contactInfo: '客服联系方式', contactInfoPlaceholder: '例如:QQ: 123456789', contactInfoHint: '填写客服联系方式,将展示在兑换页面、个人资料等位置', docUrl: '文档链接', docUrlHint: '文档网站的链接。留空则隐藏文档链接。', siteLogo: '站点Logo', uploadImage: '上传图片', remove: '移除', logoHint: 'PNG、JPG 或 SVG 格式,最大 300KB。建议:80x80px 正方形图片。', logoSizeError: '图片大小超过 300KB 限制({size}KB)', logoTypeError: '请选择图片文件', logoReadError: '读取图片文件失败', }, smtp: { title: 'SMTP 设置', description: '配置用于发送验证码的邮件服务', testConnection: '测试连接', testing: '测试中...', host: 'SMTP 主机', port: 'SMTP 端口', username: 'SMTP 用户名', password: 'SMTP 密码', passwordHint: '留空以保留现有密码', fromEmail: '发件人邮箱', fromName: '发件人名称', useTls: '使用 TLS', useTlsHint: '为 SMTP 连接启用 TLS 加密', }, testEmail: { title: '发送测试邮件', description: '发送测试邮件以验证 SMTP 配置', recipientEmail: '收件人邮箱', sendTestEmail: '发送测试邮件', sending: '发送中...', enterRecipientHint: '请输入收件人邮箱地址', }, adminApiKey: { title: '管理员 API Key', description: '用于外部系统集成的全局 API Key,拥有完整的管理员权限', notConfigured: '尚未配置管理员 API Key', configured: '管理员 API Key 已启用', currentKey: '当前密钥', regenerate: '重新生成', regenerating: '生成中...', delete: '删除', deleting: '删除中...', create: '创建密钥', creating: '创建中...', regenerateConfirm: '确定要重新生成吗?当前密钥将立即失效。', deleteConfirm: '确定要删除管理员 API Key 吗?外部集成将停止工作。', keyGenerated: '新的管理员 API Key 已生成', keyDeleted: '管理员 API Key 已删除', copyKey: '复制密钥', keyCopied: '密钥已复制到剪贴板', keyWarning: '此密钥仅显示一次,请立即复制保存。', securityWarning: '警告:此密钥拥有完整的管理员权限,请妥善保管。', usage: '使用方法:在请求头中添加 x-api-key: ', }, saveSettings: '保存设置', saving: '保存中...', settingsSaved: '设置保存成功', smtpConnectionSuccess: 'SMTP 连接成功', testEmailSent: '测试邮件发送成功', failedToLoad: '加载设置失败', failedToSave: '保存设置失败', failedToTestSmtp: 'SMTP 连接测试失败', failedToSendTestEmail: '发送测试邮件失败', }, }, // Subscription Progress (Header component) subscriptionProgress: { title: '我的订阅', viewDetails: '查看订阅详情', activeCount: '{count} 个有效订阅', daily: '每日', weekly: '每周', monthly: '每月', daysRemaining: '剩余 {days} 天', expired: '已过期', expiresToday: '今天到期', expiresTomorrow: '明天到期', viewAll: '查看全部订阅', noSubscriptions: '暂无有效订阅', }, // Version Badge version: { currentVersion: '当前版本', latestVersion: '最新版本', upToDate: '已是最新版本', updateAvailable: '有新版本可用!', releaseNotes: '更新日志', noReleaseNotes: '暂无更新日志', viewUpdate: '查看更新', viewRelease: '查看发布', viewChangelog: '查看更新日志', refresh: '刷新', sourceMode: '源码构建', sourceModeHint: '源码构建请使用 git pull 更新', updateNow: '立即更新', updating: '正在更新...', updateComplete: '更新完成', updateFailed: '更新失败', restartRequired: '请重启服务以应用更新', restartNow: '立即重启', restarting: '正在重启...', retry: '重试', }, // User Subscriptions Page userSubscriptions: { title: '我的订阅', description: '查看您的订阅计划和用量', noActiveSubscriptions: '暂无有效订阅', noActiveSubscriptionsDesc: '您没有任何有效订阅。请联系管理员获取订阅。', status: { active: '有效', expired: '已过期', revoked: '已撤销', }, usage: '用量', expires: '到期时间', noExpiration: '无到期时间', unlimited: '无限制', daily: '每日', weekly: '每周', monthly: '每月', daysRemaining: '剩余 {days} 天', expiresOn: '{date} 到期', resetIn: '{time} 后重置', windowNotActive: '等待首次使用', usageOf: '已用 {used} / {limit}', }, }