2025-12-18 13:50:39 +08:00
|
|
|
|
export default {
|
|
|
|
|
|
// Home Page
|
|
|
|
|
|
home: {
|
|
|
|
|
|
viewOnGithub: '在 GitHub 上查看',
|
|
|
|
|
|
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: '保存中...',
|
2025-12-20 10:48:42 +08:00
|
|
|
|
refresh: '刷新',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// Navigation
|
|
|
|
|
|
nav: {
|
|
|
|
|
|
dashboard: '仪表盘',
|
|
|
|
|
|
apiKeys: 'API 密钥',
|
|
|
|
|
|
usage: '使用记录',
|
|
|
|
|
|
redeem: '兑换',
|
|
|
|
|
|
profile: '个人资料',
|
|
|
|
|
|
users: '用户管理',
|
|
|
|
|
|
groups: '分组管理',
|
|
|
|
|
|
subscriptions: '订阅管理',
|
|
|
|
|
|
accounts: '账号管理',
|
2025-12-23 15:46:10 +08:00
|
|
|
|
proxies: 'IP管理',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
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: '今日缓存',
|
|
|
|
|
|
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: '使用兑换码充值',
|
|
|
|
|
|
},
|
|
|
|
|
|
|
2025-12-23 10:01:58 +08:00
|
|
|
|
// Groups (shared)
|
|
|
|
|
|
groups: {
|
|
|
|
|
|
subscription: '订阅',
|
|
|
|
|
|
},
|
|
|
|
|
|
|
2025-12-18 13:50:39 +08:00
|
|
|
|
// 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: '输出',
|
2025-12-19 16:57:31 +08:00
|
|
|
|
cacheRead: '读取',
|
|
|
|
|
|
cacheWrite: '写入',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
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: '用户',
|
2025-12-23 11:26:22 +08:00
|
|
|
|
username: '用户名',
|
|
|
|
|
|
wechat: '微信号',
|
|
|
|
|
|
enterUsername: '输入用户名',
|
|
|
|
|
|
enterWechat: '输入微信号',
|
|
|
|
|
|
editProfile: '编辑个人资料',
|
|
|
|
|
|
updateProfile: '更新资料',
|
|
|
|
|
|
updating: '更新中...',
|
|
|
|
|
|
updateSuccess: '资料更新成功',
|
|
|
|
|
|
updateFailed: '资料更新失败',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
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: '今日缓存',
|
|
|
|
|
|
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: '搜索用户...',
|
2025-12-23 11:26:22 +08:00
|
|
|
|
searchUsers: '搜索用户...',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
roleFilter: '角色筛选',
|
|
|
|
|
|
allRoles: '全部角色',
|
2025-12-23 11:26:22 +08:00
|
|
|
|
allStatus: '全部状态',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
statusFilter: '状态筛选',
|
|
|
|
|
|
allStatuses: '全部状态',
|
2025-12-23 11:26:22 +08:00
|
|
|
|
admin: '管理员',
|
|
|
|
|
|
user: '用户',
|
|
|
|
|
|
disabled: '禁用',
|
|
|
|
|
|
email: '邮箱',
|
|
|
|
|
|
password: '密码',
|
|
|
|
|
|
username: '用户名',
|
|
|
|
|
|
wechat: '微信号',
|
|
|
|
|
|
notes: '备注',
|
|
|
|
|
|
enterEmail: '请输入邮箱',
|
|
|
|
|
|
enterPassword: '请输入密码',
|
|
|
|
|
|
enterUsername: '请输入用户名(选填)',
|
|
|
|
|
|
enterWechat: '请输入微信号(选填)',
|
|
|
|
|
|
enterNotes: '请输入备注(仅管理员可见)',
|
|
|
|
|
|
notesHint: '此备注仅对管理员可见',
|
|
|
|
|
|
enterNewPassword: '请输入新密码(选填)',
|
|
|
|
|
|
leaveEmptyToKeep: '留空则保持原密码不变',
|
|
|
|
|
|
generatePassword: '生成随机密码',
|
|
|
|
|
|
copyPassword: '复制密码',
|
|
|
|
|
|
creating: '创建中...',
|
|
|
|
|
|
updating: '更新中...',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
columns: {
|
2025-12-23 11:26:22 +08:00
|
|
|
|
user: '用户',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
email: '邮箱',
|
2025-12-23 11:26:22 +08:00
|
|
|
|
username: '用户名',
|
|
|
|
|
|
wechat: '微信号',
|
|
|
|
|
|
notes: '备注',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
role: '角色',
|
2025-12-23 11:03:10 +08:00
|
|
|
|
subscriptions: '订阅分组',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
balance: '余额',
|
|
|
|
|
|
usage: '用量',
|
|
|
|
|
|
concurrency: '并发数',
|
|
|
|
|
|
status: '状态',
|
|
|
|
|
|
created: '创建时间',
|
|
|
|
|
|
actions: '操作',
|
|
|
|
|
|
},
|
|
|
|
|
|
today: '今日',
|
|
|
|
|
|
total: '累计',
|
2025-12-23 11:03:10 +08:00
|
|
|
|
noSubscription: '暂无订阅',
|
|
|
|
|
|
daysRemaining: '{days}天',
|
|
|
|
|
|
expired: '已过期',
|
2025-12-23 11:26:22 +08:00
|
|
|
|
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}' 吗?此操作无法撤销。",
|
2025-12-18 13:50:39 +08:00
|
|
|
|
roles: {
|
|
|
|
|
|
admin: '管理员',
|
|
|
|
|
|
user: '用户',
|
|
|
|
|
|
},
|
|
|
|
|
|
statuses: {
|
|
|
|
|
|
active: '正常',
|
|
|
|
|
|
banned: '禁用',
|
|
|
|
|
|
},
|
|
|
|
|
|
form: {
|
|
|
|
|
|
emailLabel: '邮箱',
|
|
|
|
|
|
emailPlaceholder: '请输入邮箱',
|
2025-12-23 11:26:22 +08:00
|
|
|
|
usernameLabel: '用户名',
|
|
|
|
|
|
usernamePlaceholder: '请输入用户名(选填)',
|
|
|
|
|
|
wechatLabel: '微信号',
|
|
|
|
|
|
wechatPlaceholder: '请输入微信号(选填)',
|
|
|
|
|
|
notesLabel: '备注',
|
|
|
|
|
|
notesPlaceholder: '请输入备注(仅管理员可见)',
|
|
|
|
|
|
notesHint: '此备注仅对管理员可见',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
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: '更新允许分组失败',
|
2025-12-23 16:29:57 +08:00
|
|
|
|
deposit: '充值',
|
|
|
|
|
|
withdraw: '退款',
|
|
|
|
|
|
depositAmount: '充值金额',
|
|
|
|
|
|
withdrawAmount: '退款金额',
|
|
|
|
|
|
depositNotesPlaceholder: '例如:新用户注册奖励、活动充值、补偿充值等',
|
|
|
|
|
|
withdrawNotesPlaceholder: '例如:服务问题退款、错误充值退回、账户注销退款等',
|
|
|
|
|
|
notesOptional: '备注为可选项,有助于未来查账',
|
|
|
|
|
|
amountHint: '请输入正数金额',
|
|
|
|
|
|
newBalance: '操作后余额',
|
|
|
|
|
|
depositing: '充值中...',
|
|
|
|
|
|
withdrawing: '退款中...',
|
|
|
|
|
|
confirmDeposit: '确认充值',
|
|
|
|
|
|
confirmWithdraw: '确认退款',
|
|
|
|
|
|
depositSuccess: '充值成功',
|
|
|
|
|
|
withdrawSuccess: '退款成功',
|
|
|
|
|
|
failedToDeposit: '充值失败',
|
|
|
|
|
|
failedToWithdraw: '退款失败',
|
|
|
|
|
|
useDepositWithdrawButtons: '请使用充值/退款按钮调整余额',
|
|
|
|
|
|
insufficientBalance: '余额不足,退款后余额不能为负数',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// Groups Management
|
|
|
|
|
|
groups: {
|
|
|
|
|
|
title: '分组管理',
|
|
|
|
|
|
description: '管理 API 密钥分组和费率配置',
|
|
|
|
|
|
createGroup: '创建分组',
|
|
|
|
|
|
editGroup: '编辑分组',
|
|
|
|
|
|
deleteGroup: '删除分组',
|
|
|
|
|
|
deleteConfirm: "确定要删除分组 '{name}' 吗?所有关联的 API 密钥将不再属于任何分组。",
|
|
|
|
|
|
deleteConfirmSubscription: "确定要删除订阅分组 '{name}' 吗?此操作会让所有绑定此订阅的用户的 API Key 失效,并删除所有相关的订阅记录。此操作无法撤销。",
|
|
|
|
|
|
columns: {
|
|
|
|
|
|
name: '名称',
|
2025-12-23 10:01:58 +08:00
|
|
|
|
platform: '平台',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
rateMultiplier: '费率倍数',
|
|
|
|
|
|
exclusive: '独占',
|
2025-12-23 10:01:58 +08:00
|
|
|
|
type: '类型',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
priority: '优先级',
|
|
|
|
|
|
apiKeys: 'API 密钥数',
|
2025-12-23 10:01:58 +08:00
|
|
|
|
accounts: '账号数',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
status: '状态',
|
|
|
|
|
|
actions: '操作',
|
2025-12-23 10:01:58 +08:00
|
|
|
|
billingType: '计费类型',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
},
|
|
|
|
|
|
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: '选择此分组关联的平台',
|
2025-12-23 10:01:58 +08:00
|
|
|
|
platformNotEditable: '创建后不可更改平台',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
noGroupsYet: '暂无分组',
|
|
|
|
|
|
createFirstGroup: '创建您的第一个分组来组织 API 密钥。',
|
|
|
|
|
|
creating: '创建中...',
|
|
|
|
|
|
updating: '更新中...',
|
2025-12-23 10:01:58 +08:00
|
|
|
|
limitDay: '日',
|
|
|
|
|
|
limitWeek: '周',
|
|
|
|
|
|
limitMonth: '月',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
groupCreated: '分组创建成功',
|
|
|
|
|
|
groupUpdated: '分组更新成功',
|
|
|
|
|
|
groupDeleted: '分组删除成功',
|
|
|
|
|
|
failedToCreate: '创建分组失败',
|
|
|
|
|
|
failedToUpdate: '更新分组失败',
|
|
|
|
|
|
subscription: {
|
|
|
|
|
|
title: '订阅设置',
|
|
|
|
|
|
type: '计费类型',
|
|
|
|
|
|
typeHint: '标准计费从用户余额扣除。订阅模式使用配额限制。',
|
2025-12-19 08:41:30 +08:00
|
|
|
|
typeNotEditable: '分组创建后无法修改计费类型。',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
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: '未配置限额',
|
2025-12-23 10:14:41 +08:00
|
|
|
|
resetNow: '即将重置',
|
2025-12-23 10:38:15 +08:00
|
|
|
|
windowNotActive: '窗口未激活',
|
2025-12-23 10:14:41 +08:00
|
|
|
|
resetInMinutes: '{minutes} 分钟后重置',
|
|
|
|
|
|
resetInHoursMinutes: '{hours} 小时 {minutes} 分钟后重置',
|
|
|
|
|
|
resetInDaysHours: '{days} 天 {hours} 小时后重置',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
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: '添加账号',
|
|
|
|
|
|
editAccount: '编辑账号',
|
|
|
|
|
|
deleteAccount: '删除账号',
|
|
|
|
|
|
deleteConfirmMessage: "确定要删除账号 '{name}' 吗?",
|
|
|
|
|
|
refreshCookie: '刷新 Cookie',
|
|
|
|
|
|
testAccount: '测试账号',
|
|
|
|
|
|
// Filter options
|
|
|
|
|
|
allPlatforms: '全部平台',
|
|
|
|
|
|
allTypes: '全部类型',
|
|
|
|
|
|
allStatus: '全部状态',
|
|
|
|
|
|
oauthType: 'OAuth',
|
|
|
|
|
|
// Schedulable toggle
|
|
|
|
|
|
schedulable: '参与调度',
|
|
|
|
|
|
schedulableHint: '开启后账号参与API请求调度',
|
|
|
|
|
|
schedulableEnabled: '调度已开启',
|
|
|
|
|
|
schedulableDisabled: '调度已关闭',
|
|
|
|
|
|
failedToToggleSchedulable: '切换调度状态失败',
|
|
|
|
|
|
columns: {
|
|
|
|
|
|
name: '名称',
|
|
|
|
|
|
platform: '平台',
|
|
|
|
|
|
type: '类型',
|
|
|
|
|
|
priority: '优先级',
|
|
|
|
|
|
weight: '权重',
|
|
|
|
|
|
status: '状态',
|
|
|
|
|
|
schedulable: '调度',
|
2025-12-23 11:20:02 +08:00
|
|
|
|
todayStats: '今日统计',
|
|
|
|
|
|
groups: '分组',
|
|
|
|
|
|
usageWindows: '用量窗口',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
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: '账号删除成功',
|
2025-12-23 10:01:58 +08:00
|
|
|
|
resetStatus: '重置状态',
|
|
|
|
|
|
statusReset: '账号状态已重置',
|
|
|
|
|
|
failedToResetStatus: '重置账号状态失败',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
cookieRefreshedSuccess: 'Cookie 刷新成功',
|
|
|
|
|
|
testSuccess: '账号测试通过',
|
|
|
|
|
|
testFailed: '账号测试失败',
|
|
|
|
|
|
failedToLoad: '加载账号列表失败',
|
|
|
|
|
|
failedToSave: '保存账号失败',
|
|
|
|
|
|
failedToDelete: '删除账号失败',
|
|
|
|
|
|
failedToRefresh: '刷新 Cookie 失败',
|
|
|
|
|
|
// Create/Edit Account Modal
|
2025-12-22 22:58:31 +08:00
|
|
|
|
platform: '平台',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
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: '该错误码已被选中',
|
2025-12-19 16:39:25 +08:00
|
|
|
|
interceptWarmupRequests: '拦截预热请求',
|
|
|
|
|
|
interceptWarmupRequestsDesc: '启用后,标题生成等预热请求将返回 mock 响应,不消耗上游 token',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
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: '在浏览器中登录 <strong>claude.ai</strong>',
|
|
|
|
|
|
step2: '按 <kbd>F12</kbd> 打开开发者工具',
|
|
|
|
|
|
step3: '切换到 <strong>Application</strong> 标签',
|
|
|
|
|
|
step4: '找到 <strong>Cookies</strong> → <strong>https://claude.ai</strong>',
|
|
|
|
|
|
step5: '找到 <strong>sessionKey</strong> 所在行',
|
|
|
|
|
|
step6: '复制 <strong>Value</strong> 列的值',
|
|
|
|
|
|
sessionKeyFormat: 'sessionKey 通常以 <code>sk-ant-sid01-</code> 开头',
|
|
|
|
|
|
startAutoAuth: '开始自动授权',
|
|
|
|
|
|
authorizing: '授权中...',
|
|
|
|
|
|
followSteps: '按照以下步骤授权您的 Claude 账号:',
|
|
|
|
|
|
step1GenerateUrl: '点击下方按钮生成授权 URL',
|
|
|
|
|
|
generateAuthUrl: '生成授权 URL',
|
|
|
|
|
|
generating: '生成中...',
|
|
|
|
|
|
regenerate: '重新生成',
|
|
|
|
|
|
step2OpenUrl: '在浏览器中打开 URL 并完成授权',
|
|
|
|
|
|
openUrlDesc: '在新标签页中打开授权 URL,登录您的 Claude 账号并授权。',
|
|
|
|
|
|
proxyWarning: '<strong>注意:</strong>如果您配置了代理,请确保浏览器使用相同的代理访问授权页面。',
|
|
|
|
|
|
step3EnterCode: '输入授权码',
|
|
|
|
|
|
authCodeDesc: '授权完成后,页面会显示一个 <strong>授权码</strong>。复制并粘贴到下方:',
|
|
|
|
|
|
authCode: '授权码',
|
|
|
|
|
|
authCodePlaceholder: '粘贴 Claude 页面的授权码...',
|
|
|
|
|
|
authCodeHint: '粘贴从 Claude 页面复制的授权码',
|
|
|
|
|
|
completeAuth: '完成授权',
|
|
|
|
|
|
verifying: '验证中...',
|
|
|
|
|
|
pleaseEnterSessionKey: '请输入至少一个有效的 sessionKey',
|
|
|
|
|
|
authFailed: '授权失败',
|
|
|
|
|
|
cookieAuthFailed: 'Cookie 授权失败',
|
|
|
|
|
|
keyAuthFailed: '密钥 {index}: {error}',
|
|
|
|
|
|
successCreated: '成功创建 {count} 个账号',
|
2025-12-22 22:58:31 +08:00
|
|
|
|
// OpenAI specific
|
|
|
|
|
|
openai: {
|
|
|
|
|
|
title: 'OpenAI 账户授权',
|
|
|
|
|
|
followSteps: '请按照以下步骤完成 OpenAI 账户的授权:',
|
|
|
|
|
|
step1GenerateUrl: '点击下方按钮生成授权链接',
|
|
|
|
|
|
generateAuthUrl: '生成授权链接',
|
|
|
|
|
|
step2OpenUrl: '在浏览器中打开链接并完成授权',
|
|
|
|
|
|
openUrlDesc: '请在新标签页中打开授权链接,登录您的 OpenAI 账户并授权。',
|
|
|
|
|
|
importantNotice: '<strong>重要提示:</strong>授权后页面可能会加载较长时间,请耐心等待。当浏览器地址栏变为 <code>http://localhost...</code> 开头时,表示授权已完成。',
|
|
|
|
|
|
step3EnterCode: '输入授权链接或 Code',
|
|
|
|
|
|
authCodeDesc: '授权完成后,当页面地址变为 <code>http://localhost:xxx/auth/callback?code=...</code> 时:',
|
|
|
|
|
|
authCode: '授权链接或 Code',
|
|
|
|
|
|
authCodePlaceholder: '方式1:复制完整的链接\n(http://localhost:xxx/auth/callback?code=...)\n方式2:仅复制 code 参数的值',
|
|
|
|
|
|
authCodeHint: '您可以直接复制整个链接或仅复制 code 参数值,系统会自动识别',
|
|
|
|
|
|
},
|
2025-12-18 13:50:39 +08:00
|
|
|
|
},
|
|
|
|
|
|
// Re-Auth Modal
|
|
|
|
|
|
reAuthorizeAccount: '重新授权账号',
|
|
|
|
|
|
claudeCodeAccount: 'Claude Code 账号',
|
2025-12-22 22:58:31 +08:00
|
|
|
|
openaiAccount: 'OpenAI 账号',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
inputMethod: '输入方式',
|
|
|
|
|
|
reAuthorizedSuccess: '账号重新授权成功',
|
|
|
|
|
|
// Test Modal
|
|
|
|
|
|
testAccountConnection: '测试账号连接',
|
|
|
|
|
|
account: '账号',
|
|
|
|
|
|
readyToTest: '准备测试。点击"开始测试"按钮开始...',
|
|
|
|
|
|
connectingToApi: '连接 API 中...',
|
|
|
|
|
|
testCompleted: '测试完成!',
|
|
|
|
|
|
connectedToApi: '已连接到 API',
|
|
|
|
|
|
usingModel: '使用模型:{model}',
|
|
|
|
|
|
sendingTestMessage: '发送测试消息:"hi"',
|
|
|
|
|
|
response: '响应:',
|
|
|
|
|
|
startTest: '开始测试',
|
|
|
|
|
|
retry: '重试',
|
|
|
|
|
|
copyOutput: '复制输出',
|
|
|
|
|
|
startingTestForAccount: '开始测试账号:{name}',
|
|
|
|
|
|
testAccountTypeLabel: '账号类型:{type}',
|
2025-12-19 15:59:39 +08:00
|
|
|
|
selectTestModel: '选择测试模型',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
testModel: 'claude-sonnet-4-5-20250929',
|
|
|
|
|
|
testPrompt: '提示词:"hi"',
|
2025-12-23 13:42:33 +08:00
|
|
|
|
// 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: '该账号暂无使用数据',
|
|
|
|
|
|
},
|
2025-12-18 13:50:39 +08:00
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// Proxies Management
|
|
|
|
|
|
proxies: {
|
2025-12-23 15:46:10 +08:00
|
|
|
|
title: 'IP管理',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
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: '代理列表',
|
2025-12-19 10:32:22 +08:00
|
|
|
|
batchInputPlaceholder: "每行输入一个代理,支持以下格式:\nsocks5://user:pass{'@'}192.168.1.1:1080\nhttp://192.168.1.1:8080\nhttps://user:pass{'@'}proxy.example.com:443",
|
2025-12-19 11:24:22 +08:00
|
|
|
|
batchInputHint: "支持 http、https、socks5 协议,格式:协议://[用户名:密码{'@'}]主机:端口",
|
2025-12-18 13:50:39 +08:00
|
|
|
|
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: '填写客服联系方式,将展示在兑换页面、个人资料等位置',
|
|
|
|
|
|
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: '请输入收件人邮箱地址',
|
|
|
|
|
|
},
|
2025-12-20 15:11:43 +08:00
|
|
|
|
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: <your-admin-api-key>',
|
|
|
|
|
|
},
|
2025-12-18 13:50:39 +08:00
|
|
|
|
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: '查看发布',
|
2025-12-18 21:15:10 +08:00
|
|
|
|
viewChangelog: '查看更新日志',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
refresh: '刷新',
|
|
|
|
|
|
sourceMode: '源码构建',
|
2025-12-18 21:15:10 +08:00
|
|
|
|
sourceModeHint: '源码构建请使用 git pull 更新',
|
|
|
|
|
|
updateNow: '立即更新',
|
|
|
|
|
|
updating: '正在更新...',
|
|
|
|
|
|
updateComplete: '更新完成',
|
|
|
|
|
|
updateFailed: '更新失败',
|
|
|
|
|
|
restartRequired: '请重启服务以应用更新',
|
|
|
|
|
|
restartNow: '立即重启',
|
|
|
|
|
|
restarting: '正在重启...',
|
|
|
|
|
|
retry: '重试',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// 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} 后重置',
|
2025-12-23 10:38:15 +08:00
|
|
|
|
windowNotActive: '等待首次使用',
|
2025-12-18 13:50:39 +08:00
|
|
|
|
usageOf: '已用 {used} / {limit}',
|
|
|
|
|
|
},
|
|
|
|
|
|
}
|