PageSourceSearch

https://mintminer.com/assets/index-Dvhr44A_.js

js mintminer.com collected 2026-10-06 08:09:43 UTC 389,124 bytes, 30 lines download raw bytes

1const e={batchImageGuide:{title:"图片批量生成",description:"一次提交多条提示词,任务完成后可统一下载图片结果"},home:{viewOnGithub:"在 GitHub 上查看",viewDocs:"查看文档",docs:"文档",switchToLight:"切换到浅色模式",switchToDark:"切换到深色模式",dashboard:"控制台",login:"登录",getStarted:"立即开始",goToDashboard:"进入控制台",heroSubtitle:"一个密钥,畅用多个 AI 模型",heroDescription:"无需管理多个订阅账号,一站式接入 Claude、GPT、Gemini 等主流 AI 服务",tags:{subscriptionToApi:"订阅转 API",stickySession:"会话保持",realtimeBilling:"按量计费"},painPoints:{title:"你是否也遇到这些问题?",items:{expensive:{title:"订阅费用高",desc:"每个 AI 服务都要单独订阅,每月支出越来越多"},complex:{title:"多账号难管理",desc:"不同平台的账号、密钥分散各处,管理起来很麻烦"},unstable:{title:"服务不稳定",desc:"单一账号容易触发限制,影响正常使用"},noControl:{title:"用量无法控制",desc:"不知道钱花在哪了,也无法限制团队成员的使用"}}},solutions:{title:"我们帮你解决",subtitle:"简单三步,开始省心使用 AI"},features:{unifiedGateway:"一键接入",unifiedGatewayDesc:"获取一个 API 密钥,即可调用所有已接入的 AI 模型,无需分别申请。",multiAccount:"稳定可靠",multiAccountDesc:"智能调度多个上游账号,自动切换和负载均衡,告别频繁报错。",balanceQuota:"用多少付多少",balanceQuotaDesc:"按实际使用量计费,支持设置配额上限,团队用量一目了然。"},comparison:{title:"为什么选择我们?",headers:{feature:"对比项",official:"官方订阅",us:"本平台"},items:{pricing:{feature:"付费方式",official:"固定月费,用不完也付",us:"按量付费,用多少付多少"},models:{feature:"模型选择",official:"单一服务商",us:"多模型随意切换"},management:{feature:"账号管理",official:"每个服务单独管理",us:"统一密钥,一站管理"},stability:{feature:"服务稳定性",official:"单账号易触发限制",us:"多账号池,自动切换"},control:{feature:"用量控制",official:"无法限制",us:"可设配额、查明细"}}},providers:{title:"已支持的 AI 模型",description:"一个 API,多种选择",supported:"已支持",soon:"即将推出",claude:"Claude",gemini:"Gemini",antigravity:"Antigravity",more:"更多"},cta:{title:"准备好开始了吗?",description:"注册即可获得免费试用额度,体验一站式 AI 服务",button:"免费注册"},footer:{allRightsReserved:"保留所有权利。"}},keyUsage:{title:"API Key 用量查询",subtitle:"输入您的 API Key 以查看实时消费金额与使用状态",placeholder:"sk-ant-mirror-xxxxxxxxxxxx",query:"查询",querying:"查询中...",privacyNote:"您的 Key 仅在浏览器本地处理,不会被存储",dateRange:"统计范围:",dateRangeToday:"今日",dateRange7d:"7 天",dateRange30d:"30 天",dateRange90d:"90 天",dateRangeCustom:"自定义",apply:"应用",used:"已使用",detailInfo:"详细信息",tokenStats:"Token 统计",dailyDetail:"按日明细",modelStats:"模型用量统计",date:"日期",model:"模型",requests:"请求数",inputTokens:"输入 Tokens",outputTokens:"输出 Tokens",cacheCreationTokens:"缓存创建",cacheReadTokens:"缓存读取",cacheWriteTokens:"缓存写入",totalTokens:"总 Tokens",cost:"费用",quotaMode:"Key 限额模式",walletBalance:"钱包余额",totalQuota:"总额度",limit5h:"5 小时限额",limitDaily:"日限额",limit7d:"7 天限额",limitWeekly:"周限额",limitMonthly:"月限额",remainingQuota:"剩余额度",expiresAt:"过期时间",todayExpires:"(今日到期)",daysLeft:"({days} 天)",usedQuota:"已用额度",resetNow:"即将重置",subscriptionType:"订阅类型",subscriptionExpires:"订阅到期",todayRequests:"今日请求",todayInputTokens:"今日输入",todayOutputTokens:"今日输出",todayTokens:"今日 Tokens",todayCacheCreation:"今日缓存创建",todayCacheRead:"今日缓存读取",todayCost:"今日费用",rpmTpm:"RPM / TPM",totalRequests:"累计请求",totalInputTokens:"累计输入",totalOutputTokens:"累计输出",totalTokensLabel:"累计 Tokens",totalCacheCreation:"累计缓存创建",totalCacheRead:"累计缓存读取",totalCost:"累计费用",avgDuration:"平均耗时",enterApiKey:"请输入 API Key",querySuccess:"查询成功",queryFailed:"查询失败",queryFailedRetry:"查询失败,请稍后重试",noDailyUsage:"暂无按日用量数据"},setup:{title:"Sub2API 安装向导",description:"配置您的 Sub2API 实例",database:{title:"数据库配置",description:"连接到您的 PostgreSQL 数据库",host:"主机",port:"端口",username:"用户名",password:"密码",databaseName:"数据库名称",sslMode:"SSL 模式",passwordPlaceholder:"密码",ssl:{disable:"禁用",require:"要求",verifyCa:"验证 CA",verifyFull:"完全验证"}},redis:{title:"Redis 配置",description:"连接到您的 Redis 服务器",host:"主机",port:"端口",username:"用户名(可选)",password:"密码(可选)",database:"数据库",usernamePlaceholder:"默认用户留空",passwordPlaceholder:"密码",enableTls:"启用 TLS",enableTlsHint:"连接 Redis 时使用 TLS(公共 CA 证书)"}
1,admin:{title:"管理员账户",description:"创建您的管理员账户",email:"邮箱",password:"密码",confirmPassword:"确认密码",passwordPlaceholder:"至少 8 个字符",confirmPasswordPlaceholder:"确认密码",passwordMismatch:"密码不匹配"},ready:{title:"准备安装",description:"检查您的配置并完成安装",database:"数据库",redis:"Redis",adminEmail:"管理员邮箱"},status:{testing:"测试中...",success:"连接成功",testConnection:"测试连接",installing:"安装中...",completeInstallation:"完成安装",completed:"安装完成!",redirecting:"正在跳转到登录页面...",restarting:"服务正在重启,请稍候...",timeout:"服务重启时间超出预期,请手动刷新页面。"}}},t={common:{loading:"加载中...",submitting:"提交中...",justNow:"刚刚",peakRateTooltip:"高峰倍率:{window}",peakRateImageNote:";token 计费的图片 token 同样适用,图片按次计费不受高峰影响",save:"保存",saved:"保存成功",deleted:"删除成功",cancel:"取消",delete:"删除",edit:"编辑",create:"创建",apply:"应用",clear:"清除",creating:"创建中...",required:"必填",sending:"发送中...",tryAgain:"请重试",update:"更新",confirm:"确认",reset:"重置",search:"搜索",filter:"筛选",export:"导出",import:"导入",actions:"操作",status:"状态",name:"名称",email:"邮箱",password:"密码",submit:"提交",back:"返回",next:"下一步",yes:"是",no:"否",all:"全部",none:"无",selectAll:"全选",noData:"暂无数据",expand:"展开",collapse:"收起",success:"成功",error:"错误",critical:"严重",warning:"警告",info:"提示",active:"启用",inactive:"禁用",more:"更多",close:"关闭",toggleMenu:"切换菜单",userMenu:"用户菜单",pageNotFound:"页面不存在",enabled:"已启用",disabled:"已禁用",total:"总计",balance:"余额",availableBalance:"可用余额",frozenBalance:"冻结金额",totalBalance:"总余额",available:"可用",copiedToClipboard:"已复制到剪贴板",copied:"已复制",copyFailed:"复制失败",verifying:"验证中...",processing:"处理中...",contactSupport:"联系客服",add:"添加",invalidEmail:"请输入有效的邮箱地址",optional:"可选",selectOption:"请选择",searchPlaceholder:"搜索...",noOptionsFound:"无匹配选项",noGroupsAvailable:"无可用分组",unknownError:"发生未知错误",saving:"保存中...",selectedCount:"(已选 {count} 个)",refresh:"刷新",autoRefresh:{title:"自动刷新",enable:"启用自动刷新",countdown:"自动刷新: {seconds}s",seconds:"{n} 秒"},view:"查看",settings:"设置",chooseFile:"选择文件",upload:"上传",remove:"移除",noFileSelected:"未选择文件",selectedFile:"已选:{name}",fileReadFailed:"读取文件失败",selectImageFile:"请选择图片文件",fileTooLargeKb:"文件过大({size} KB),上限 {max} KB",copy:"复制",notAvailable:"不可用",now:"现在",today:"今天",tomorrow:"明天",unknown:"未知",minutes:"分钟",time:{never:"从未",justNow:"刚刚",minutesAgo:"{n}分钟前",hoursAgo:"{n}小时前",daysAgo:"{n}天前",countdown:{daysHours:"{d}d {h}h",hoursMinutes:"{h}h {m}m",minutes:"{m}m",withSuffix:"{time} 后解除"}}},adminCompliance:{title:"部署与运营合规确认",blockingNotice:"继续使用控制台前,须完成部署与运营合规确认。",riskNotice:"本确认用于以清晰、显著、可留痕的方式提示自部署实例的合规义务与运营风险。",version:"协议版本",openDocument:"在 GitHub 查看协议文件",documentSource:"协议正文来自本项目仓库中的 Markdown 文件。修改协议内容时必须同步递增协议版本;已确认的旧版本将失效,控制台使用者须重新确认。",inputLabel:"请逐字输入以下确认短语",inputPlaceholder:"输入确认短语以继续",inputMismatch:"确认短语不匹配,请逐字输入提示内容。",legalNote:"本确认用于明确自部署实例与开源项目、著作权人、贡献者及维护者之间的非关联关系和责任边界;部署、运营或控制相关实例的主体应独立承担其适用义务。",logout:"退出登录",accept:"确认并继续",accepted:"合规确认已记录",acceptFailed:"提交确认失败"},legal:{loadFailed:"文档加载失败",retryLater:"请稍后刷新页面重试。",notFound:"文档不存在",notFoundDescription:"当前条款文档不存在或已被管理员移除。",updatedAt:"更新日期:{date}",empty:"暂无正文内容",loginAgreement:"登录条款",adminCompl
1iance:"部署与运营合规承诺",loginAgreementPrompt:{checkboxPrefix:"我已阅读并同意",documentSeparator:"、",noticeTitle:"继续登录前需要先同意最新条款。",noticeDescription:"未同意前,账号密码输入和快捷登录会保持禁用。",viewTerms:"查看条款",dialogTitle:"条款更新通知",dialogDescription:"我们的服务条款已于 {date} 更新。在继续使用服务之前,请仔细阅读并同意以下条款。",recently:"近期",relatedDocuments:"相关文档",reject:"拒绝",accept:"同意并继续",loginRejectedWarning:"未同意最新条款前,无法输入账号密码或使用快捷登录。",loginRequiredWarning:"请先阅读并同意最新条款后再登录。",registerRejectedWarning:"未同意最新条款前,无法注册或使用快捷登录。",registerRequiredWarning:"请先阅读并同意最新条款后再注册。"}},nav:{dashboard:"仪表盘",announcements:"公告",apiKeys:"API 密钥",batchImage:"批量生图",usage:"使用记录",redeem:"兑换",affiliate:"邀请返利",affiliateManagement:"邀请返利",affiliateInviteRecords:"邀请记录",affiliateRebateRecords:"返利记录",affiliateTransferRecords:"提取记录",profile:"个人资料",users:"用户管理",groups:"分组管理",channels:"渠道管理",availableChannels:"可用渠道",modelPlaza:"模型广场",subscriptions:"订阅管理",accounts:"账号管理",plugins:"插件管理",proxies:"IP管理",redeemCodes:"兑换码",ops:"运维监控",promoCodes:"优惠码",settings:"系统设置",myAccount:"我的账户",lightMode:"浅色模式",darkMode:"深色模式",collapse:"收起",expand:"展开",logout:"退出登录",github:"GitHub",mySubscriptions:"我的订阅",buySubscription:"充值/订阅",docs:"文档",myOrders:"我的订单",orderManagement:"订单管理",paymentDashboard:"支付概览",paymentConfig:"支付配置",paymentPlans:"订阅套餐",channelManagement:"渠道管理",channelPricing:"渠道定价",channelMonitor:"渠道监控",channelStatus:"渠道状态",riskControl:"风控中心",securityAudit:"安全审计",contentModeration:"内容审核",promptAudit:"提示词审计",auditLogs:"操作日志"},auth:{welcomeBack:"欢迎回来",signInToAccount:"登录您的账户以继续",signIn:"登录",signingIn:"登录中...",passkeySignIn:"使用 Passkey 登录",passkeySigningIn:"正在等待 Passkey...",passkeyCancelled:"已取消 Passkey 登录。",passkeyFailed:"Passkey 登录失败,请重试。",createAccount:"创建账户",signUpToStart:"注册以开始使用 {siteName}",signUp:"注册",processing:"处理中...",continue:"继续",rememberMe:"记住我",dontHaveAccount:"还没有账户?",alreadyHaveAccount:"已有账户?",registrationDisabled:"注册功能暂时关闭,请联系管理员。",emailLabel:"邮箱",emailPlaceholder:"请输入邮箱",passwordLabel:"密码",passwordPlaceholder:"请输入密码",createPasswordPlaceholder:"创建一个安全的密码",passwordHint:"至少 6 个字符",emailRequired:"请输入邮箱",invalidEmail:"请输入有效的邮箱地址",passwordRequired:"请输入密码",passwordMinLength:"密码至少需要 6 个字符",loginFailed:"登录失败,请检查您的凭据后重试。",errors:{USER_NOT_ACTIVE:"账号已被禁用"},registrationFailed:"注册失败,请重试。",emailDomainRegistrationLimit:"该邮箱域名无法注册新账户。请使用主流邮箱注册;如需使用企业邮箱,请联系客服添加域名白名单。",emailSuffixNotAllowed:"该邮箱域名不在允许注册范围内。",emailSuffixNotAllowedWithAllowed:"该邮箱域名不被允许。可用域名:{suffixes}",emailSuffixAllowedMore:"等 {count} 项",loginSuccess:"登录成功!欢迎回来。",accountCreatedSuccess:"账户创建成功!欢迎使用 {siteName}。",reloginRequired:"会话已过期,请重新登录。",turnstileExpired:"验证已过期,请重试",turnstileFailed:"验证失败,请重试",captchaVerified:"验证已完成",captchaLoading:"正在加载验证码…",captchaClickToVerify:"点击完成人机验证",captchaVerifying:"验证中…",completeVerification:"请完成验证",verifyYourEmail:"验证您的邮箱",sessionExpired:"会话已过期",sessionExpiredDesc:"请返回注册页面重新开始。",verificationCode:"验证码",verificationCodeHint:"请输入发送到您邮箱的6位验证码",sendingCode:"发送中...",sendCode:"发送验证码",clickToResend:"点击重新发送验证码",resendCode:"重新发送验证码",sendCodeDesc:"我们将发送验证码到",codeSentSuccess:"验证码已发送!请查收您的邮箱。",verifying:"验证中...",verifyAndCreate:"验证并创建账户",resendCountdown:"{countdown}秒后可重新发送",backToRegistration:"返回注册",sendCodeFailed:"发送验证码失败,请重试。",verifyFailed:"验证失败,请重试。",codeRequired:"请输入验证码",invali
1dCode:"请输入有效的6位验证码",promoCodeLabel:"优惠码",promoCodePlaceholder:"输入优惠码(可选)",promoCodeValid:"有效!注册后将获得 ${amount} 赠送余额",promoCodeInvalid:"无效的优惠码",promoCodeNotFound:"优惠码不存在",promoCodeExpired:"此优惠码已过期",promoCodeDisabled:"此优惠码已被禁用",promoCodeMaxUsed:"此优惠码已达到使用上限",promoCodeAlreadyUsed:"您已使用过此优惠码",promoCodeValidating:"优惠码正在验证中,请稍候",promoCodeInvalidCannotRegister:"优惠码无效,请检查后重试或清空优惠码",invitationCodeLabel:"邀请码",invitationCodePlaceholder:"请输入邀请码",invitationCodeRequired:"请输入邀请码",invitationCodeValid:"邀请码有效",invitationCodeInvalid:"邀请码无效或已被使用",invitationCodeValidating:"正在验证邀请码...",invitationCodeInvalidCannotRegister:"邀请码无效,请检查后重试",oauthOrContinue:"或使用其他继续",linuxdo:{signIn:"使用 Linux.do 登录",orContinue:"或使用邮箱密码继续",callbackTitle:"正在完成登录",callbackProcessing:"正在验证登录信息,请稍候...",callbackHint:"如果页面未自动跳转,请返回登录页重试。",callbackMissingToken:"登录信息缺失,请返回重试。",backToLogin:"返回登录",invitationRequired:"该 Linux.do 账号尚未注册,站点已开启邀请码注册,请输入邀请码以完成注册。",invalidPendingToken:"注册凭证已失效,请重新使用 Linux.do 登录。",completeRegistration:"完成注册",completing:"正在完成注册...",completeRegistrationFailed:"注册失败,请检查邀请码后重试。"},dingtalk:{signIn:"钉钉登录",callbackTitle:"正在完成钉钉登录",callbackProcessing:"正在验证钉钉登录信息,请稍候...",callbackHint:"如果页面未自动跳转,请返回登录页重试。",callbackMissingToken:"登录信息缺失,请返回重试。",backToLogin:"返回登录",invitationRequired:"该钉钉账号尚未注册,站点已开启邀请码注册,请输入邀请码以完成注册。",invalidPendingToken:"注册凭证已失效,请重新使用钉钉登录。",completeRegistration:"完成注册",completing:"正在完成注册...",completeRegistrationFailed:"注册失败,请检查邀请码后重试。",createAccountTitle:"创建钉钉账户",registrationDisabledRedirectToBind:"当前已禁止注册新账户,请使用已有账户邮箱和密码绑定钉钉登录",error:{title:"钉钉登录失败",csrf:"登录会话已过期,请重新扫码登录",corp_rejected:"您的钉钉账号不属于本企业,请联系管理员",dingtalk_not_enabled:"钉钉登录暂未启用",upstream_error:"钉钉服务暂时不可用,请稍后重试",missing_browser_session:"浏览器会话丢失,请重新登录",missing_params:"请求参数不完整",invalid_state:"登录状态异常",provider_error:"钉钉授权失败",session_error:"会话创建失败,请重试",retry:"重新登录"}},emailOAuth:{signIn:"使用 {providerName} 登录"},oidc:{signIn:"使用 {providerName} 登录",callbackTitle:"正在完成 {providerName} 登录",callbackProcessing:"正在验证 {providerName} 登录信息,请稍候...",callbackHint:"如果页面未自动跳转,请返回登录页重试。",callbackMissingToken:"登录信息缺失,请返回重试。",backToLogin:"返回登录",invitationRequired:"该 {providerName} 账号尚未注册,站点已开启邀请码注册,请输入邀请码以完成注册。",invalidPendingToken:"注册凭证已失效,请重新登录。",completeRegistration:"完成注册",completing:"正在完成注册...",completeRegistrationFailed:"注册失败,请检查邀请码后重试。"},oauthFlow:{profileDetailsTitle:"使用 {providerName} 资料",profileDetailsDescription:"选择是否将 {providerName} 的昵称或头像应用到当前账户。",useDisplayName:"使用昵称",useAvatar:"使用头像",avatarAlt:"{providerName} 头像",reviewProfileBeforeContinue:"请先确认 {providerName} 资料后再继续。",chooseHowToContinue:"选择后续操作",chooseAccountActionHint:"请选择绑定已有账户,或创建一个新账户。",suggestedEmail:"建议邮箱:{email}",bindExistingAccount:"绑定已有账户",createNewAccount:"创建新账户",createAccountHint:"请输入邮箱地址以创建账户并继续。",bindLoginHint:"登录一个已有账户以绑定此次 {providerName} 登录。",signInThenBindDescription:"请先登录已有账户,再将此次 {providerName} 登录绑定到该账户。",bindSignInToExistingAccount:"将此次 {providerName} 登录绑定到已有账户。",bindCurrentAccountTitle:"绑定当前账户",bindCurrentAccountDescription:"将此次 {providerName} 登录绑定到当前浏览器已登录的账户。",bindCurrentAccount:"绑定当前账户",logInAndBind:"登录并绑定",useDifferentEmail:"使用其他邮箱",backToOptions:"返回选项",yourAccount:"当前账户",totpHint:"请输入 {account} 的 6 位验证码,以完成此次 {providerName} 登录绑定。",verifyAndContinue:"验证并继续",wechatAvailabilityUnknown:"暂时无法确认微信登录可用性,请刷新后重试。",wechatSystemBrowserOnly:"当前微信登录流程仅支持在系统浏览器中继续。",wechatBrowserOnly:"当前微信登录流程仅支持在微信内置浏览器中继续。",wechatNotConfigured:"微信登录尚未配置。"},linuxdoCallbackPageTitle:"LinuxDo 登录回调",dingtalkCallbackPageTitle:"钉钉登录回调",dingtalkProviderName:"钉钉",oidcCallbackPageTitle:"OIDC 登录回调",oauthCallbackPageTitle:"OAuth 回调",wechatProviderName:"微信",wechatCallbackPageTitle:"微信登录回调",wechatPaymentCallbackPageTitle:"微信支付回调",wechatPayment:{callbackTitle:"正在恢复微信支付",callbackProcessing:"正在恢复微信支付...",backToPayment:"返回支付页",callbackMissingResumeToken:"微信支付回调缺少恢复令牌。"},oauth:{callbackTitle:"OAuth 回调",callbackHint:"按需将授权码和状态值复制回后台授权流程。",invali
1dCallbackTitle:"无效的登录回调",invalidCallbackHint:"当前页面缺少有效的授权结果,请返回登录页重新发起快捷登录。",code:"授权码",state:"状态",fullUrl:"完整URL"},forgotPassword:"忘记密码?",forgotPasswordTitle:"重置密码",forgotPasswordHint:"输入您的邮箱地址,我们将向您发送密码重置链接。",sendResetLink:"发送重置链接",sendingResetLink:"发送中...",sendResetLinkFailed:"发送重置链接失败,请重试。",resetEmailSent:"重置链接已发送",resetEmailSentHint:"如果该邮箱已注册,您将很快收到密码重置链接。请检查您的收件箱和垃圾邮件文件夹。",backToLogin:"返回登录",rememberedPassword:"想起密码了?",resetPasswordTitle:"设置新密码",resetPasswordHint:"请在下方输入您的新密码。",newPassword:"新密码",newPasswordPlaceholder:"输入新密码",confirmPassword:"确认密码",confirmPasswordPlaceholder:"再次输入新密码",confirmPasswordRequired:"请确认您的密码",passwordsDoNotMatch:"两次输入的密码不一致",resetPassword:"重置密码",resettingPassword:"重置中...",resetPasswordFailed:"重置密码失败,请重试。",passwordResetSuccess:"密码重置成功",passwordResetSuccessHint:"您的密码已重置。现在可以使用新密码登录。",invalidResetLink:"无效的重置链接",invalidResetLinkHint:"此密码重置链接无效或已过期。请重新请求一个新链接。",requestNewResetLink:"请求新的重置链接",invalidOrExpiredToken:"密码重置链接无效或已过期。请重新请求一个新链接。"},stepUp:{title:"需要二次验证",hint:"请输入身份验证器应用中的 6 位验证码以继续此敏感操作。",verifyFailed:"验证失败,请重试",notEnabled:"此操作需要开启二次验证,请先在个人资料中启用 TOTP。",adminApiKeyForbidden:"管理 API Key 无法执行此操作,请使用已通过二次验证的管理员会话。"}},i={dashboard:{title:"仪表盘",welcomeMessage:"欢迎回来!这是您账户的概览。",balance:"余额",apiKeys:"API 密钥",todayRequests:"今日请求",todayCost:"今日消费",todayTokens:"今日 Token",totalTokens:"累计 Token",cacheToday:"今日缓存",performance:"性能指标",avgResponse:"平均响应",averageTime:"平均时间",timeRange:"时间范围",granularity:"粒度",day:"按天",hour:"按小时",modelDistribution:"模型分布",groupDistribution:"分组使用分布",platformBreakdown:"按平台拆分",platformBreakdownEmpty:"暂无平台用量",platformCount:"{count} 个平台",platformOther:"其他",platformQuota:{title:"配额用量",daily:"日",weekly:"周",monthly:"月(近30天)",resetsAt:"{time} 重置",noLimit:"不限制",disabled:"已禁用"},tokenUsageTrend:"Token 使用趋势",noDataAvailable:"暂无数据",model:"模型",group:"分组",noGroup:"无分组",requests:"请求",tokens:"Token",actual:"实际",standard:"标准",input:"输入",output:"输出",cache:"缓存",recentUsage:"最近使用",last7Days:"近 7 天",noUsageRecords:"暂无使用记录",startUsingApi:"开始使用 API 后,您的使用历史将显示在这里。",viewAllUsage:"查看全部",quickActions:"快捷操作",createApiKey:"创建 API 密钥",generateNewKey:"生成新的 API 密钥",batchImageAgent:"批量生图助手",batchImageAgentDesc:"复制给 Agent 的任务说明",viewUsage:"查看使用记录",checkDetailedLogs:"查看详细的使用日志",redeemCode:"兑换码",addBalanceWithCode:"使用兑换码充值"},groups:{subscription:"订阅"},keys:{title:"API 密钥",description:"管理您的 API 密钥和访问令牌",searchPlaceholder:"搜索名称或Key...",endpoints:{title:"API 端点",default:"默认",copied:"已复制",copiedHint:"已复制到剪贴板",clickToCopy:"点击可复制此端点",speedTest:"测速"},allGroups:"全部分组",allStatus:"全部状态",columnSettings:"列设置",columnAlwaysVisible:"该列固定显示,不可隐藏",createKey:"创建密钥",editKey:"编辑密钥",deleteKey:"删除密钥",deleteConfirmMessage:"确定要删除 '{name}' 吗?此操作无法撤销。",id:"ID",apiKey:"API 密钥",group:"分组",currentConcurrency:"当前并发",noGroup:"无分组",searchGroup:"搜索分组...",noGroupFound:"未找到匹配的分组",created:"创建时间",copyToClipboard:"复制到剪贴板",copied:"已复制!",importToCcSwitch:"导入到 CCS",enable:"启用",disable:"禁用",nameLabel:"名称",namePlaceholder:"我的 API 密钥",groupLabel:"分ç
1»„",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:"近30天",quota:"额度",lastUsedAt:"上次使用时间",lastUsedIP:"最近使用 IP",useKey:"使用密钥",useKeyModal:{title:"使用 API 密钥",description:"将以下环境变量添加到您的终端配置文件或直接在终端中运行。",copy:"复制",copied:"已复制",note:"这些环境变量将在当前终端会话中生效。如需永久配置,请将其添加到 ~/.bashrc、~/.zshrc 或相应的配置文件中。",claudeSettingsHint:"用户级持久配置。此文件包含 API 密钥,请勿提交到项目仓库。",noGroupTitle:"请先分配分组",noGroupDescription:"æ­¤ API 密钥尚未分配分组,请先在密钥列表中点击分组列进行分配,然后才能查看使用配置。",openai:{description:"将以下配置文件添加到 Codex CLI 配置目录中。",authModeTitle:"Codex 认证模式",authModeDescription:"兼容模式保留旧版 Codex 配置;API Key Mode 用于授权客户端图片执行器。",authModeLegacy:"兼容模式",authModeApiKey:"API Key Mode",authModeApiKeyRestartNotice:"保存此配置后,必须完全退出并重启 Codex Desktop 或 CLI,然后新建 task,让客户端重新构建工具注册表。",configTomlHint:"请确保以下内容位于 config.toml 文件的开头部分",note:"请确保配置目录存在。macOS/Linux 用户可运行 mkdir -p ~/.codex 创建目录。",noteWindows:"按 Win+R,输入 %userprofile%\\.codex 打开配置目录。如目录不存在,请先手动创建。"},cliTabs:{claudeCode:"Claude Code",geminiCli:"Gemini CLI",codexCli:"Codex CLI",codexCliWs:"Codex CLI (WebSocket)",grokCli:"Grok CLI",opencode:"OpenCode"},antigravity:{description:"为 Antigravity 分组配置 API 访问。请根据您使用的客户端选择对应的配置方式。",claudeCode:"Claude Code",geminiCli:"Gemini CLI",claudeNote:"这些环境变量将在当前终端会话中生效。如需永久配置,请将其添加到 ~/.bashrc、~/.zshrc 或相应的配置文件中。",geminiNote:"这些环境变量将在当前终端会话中生效。如需永久配置,请将其添加到 ~/.bashrc、~/.zshrc 或相应的配置文件中。"},gemini:{description:"将以下环境变量添加到您的终端配置文件或直接在终端中运行,以配置 Gemini CLI 访问。",modelComment:"如果你有 Gemini 3 权限可以填:gemini-3-pro-preview",note:"这些环境变量将在当前终端会话中生效。如需永久配置,请将其添加到 ~/.bashrc、~/.zshrc 或相应的配置文件中。"},grok:{description:"配置 Grok CLI、Claude Code、Codex 或 OpenCode,让请求通过当前 Sub2API Grok 分组发送。文本模型走 Responses;图片/视频使用 Imagine 模型 ID 与媒体端点。",claudeDescription:"配置 Claude Code,让 Messages API 请求通过当前 Sub2API Grok 分组发送。",codexDescription:"配置 Codex,让 Responses API 请求通过当前 Sub2API Grok 分组发送。",configTomlHint:"官方路径:~/.grok/config.toml(或 $GROK_HOME)。请填写 [endpoints](models_base_url / models_list_url / xai_api_base_url / cli_chat_proxy_base_url)、[auth] preferred_method=api_key、[models]、[session]、[features] 图片/视频覆盖。优先 env_key,勿硬编码 api_key;文本模型必须 api_backend=responses。合并前备份,保存后运行 grok inspect。",codexConfigTomlHint:'Codex 官方:wire_api 仅支持 "responses";优先 env_key,勿与 experimental_bearer_token 混用;非 OpenAI 网关默认 supports_websockets = false(Sub2API 仍可接客户端 WS 并桥接到 HTTP/SSE)。合并前备份 ~/.codex/config.toml。',note:"导出 GROK_MODELS_BASE_URL 与 XAI_API_KEY,将完整 config.toml(endpoints/auth/models/session/features)保存为 ~/.grok/config.toml,运行 grok inspect,再用 /model 选择 grok-4.5(编程场景可用 grok-build-0.1)。",noteWindows:"设置 GROK_MODELS_BASE_URL 与 XAI_API_KEY,将完整 config.toml 保存为 %USERPROFILE%\\.grok\\config.toml,运行 grok inspect,再用 /model 选择 grok-4.5(编程场景可用 grok-build-0.1)。",claudeNote:"二选一:终端环境变量仅当前会话;~/.claude/settings.json 可持久化。请勿把含 API Key 的文件提交到仓库。",codexNote:"导出 SUB2API_API_KEY,将 config.toml 保存到 ~/.codex(可用 mkdir -p ~/.codex)。优先 env_key,勿提交密钥。",codexNoteWindows:"设置 $env:SUB2API_API_KEY,将 config.toml 保存到 %USERPROFILE%\\.codex。优先 env_key,勿提交密钥。"},deepseek:{description:"通过当前 DeepSeek 分组配置 Claude Code、Codex 或 OpenCode。",codexDescription:"使用 API Key 配置 Codex,并通过当前 DeepSeek 分组发送请求。",codexConfigTomlHint:"下载下方模型目录,将两个文件保存到 Codex 配置目录后重启 Codex。",codexNote:"启动 Codex 前先导出 SUB2API_API_KEY。下载的目录只包含模型元数据,不包含 API Key。"},composite:{description:"通过当前 Composite 路由分组配置受支持的客户端。",codexDescription:"使用 API Key 和当前 Composite 分组的完整模型目录配置 Codex。",codexConfigTomlHint:"下载下方模型目录,将两个文件保存到 Codex 配置目录后重启 Codex。",codexNote:"启动 Codex 前先导出 SUB2API_API_KEY;分组会根据目录中选中的模型路由请求。"},routedCodex:{description:"使用当前路由分组的完整模型目录配置 Codex。",configTomlHint:"下载下方模型目录,将两个文件保存到 Codex 配置目录后重启 Codex。",note:"启动 Codex 前先导出 SUB2API_API_KEY。下载的目录只包含模型元数据,不包含 API Key。"},codexModelCatalog:{title:"Codex 模型目录",description:"使用当前 API Key 获取目录,并保存到 config.toml 引用的路径。",fetch:"获取目录",retry:"重试",download:"下载目录",modelsCount:"已获取 {count} 个模型",errorDescription:"无法使用当前 API Key 获取模型目录。"},opencode:{title:"OpenCode 配置示例",subtitle:"opencode.json",hint:"配置文件路径:~/.config/opencode/opencode.json(或 opencode.jsonc),不存在需手动创建。可使用默认 provider(openai/anthropic/google)或自定义 provider_id。API Key 支持直接配置或通过客户端 /connect 命令配置。示例仅供参考,模型与选项可按需调整。"}},customKeyLabel:"自定义密钥",customKeyPlaceholder:"输入自定义密钥(至少16个字符)",customKeyHint:"仅允许字母、数字、下划线和连字符,最少16个字符。",customKeyTooShort:"自定义密钥至少é
1œ€è¦16个字符",customKeyInvalidChars:"自定义密钥只能包含字母、数字、下划线和连字符",customKeyRequired:"请输入自定义密钥",ipRestriction:"IP 限制",ipWhitelist:"IP 白名单",ipWhitelistPlaceholder:`192.168.1.100
210.0.0.0/8`,ipWhitelistHint:"每行一个 IP 或 CIDR,设置后仅允许这些 IP 使用此密钥",ipBlacklist:"IP 黑名单",ipBlacklistPlaceholder:`1.2.3.4
35.6.0.0/16`,ipBlacklistHint:"每行一个 IP 或 CIDR,这些 IP 将被禁止使用此密钥",ipRestrictionEnabled:"已配置 IP 限制",ccSwitchNotInstalled:"CC-Switch 未安装或协议处理程序未注册。请先安装 CC-Switch 或手动复制 API 密钥。",ccsClientSelect:{title:"选择客户端",description:"请选择您要导入到 CC-Switch 的客户端类型:",claudeCode:"Claude Code",claudeCodeDesc:"导入为 Claude Code 配置",geminiCli:"Gemini CLI",geminiCliDesc:"导入为 Gemini CLI 配置"},quotaLimit:"额度限制",quotaAmount:"额度金额 (USD)",quotaAmountPlaceholder:"输入 USD 额度限制",quotaAmountHint:"设置此密钥可消费的最大金额。0 = 无限制。",quotaUsed:"已用额度",reset:"重置",resetQuotaUsed:"将已用额度重置为 0",resetQuotaTitle:"确认重置额度",resetQuotaConfirmMessage:'确定要将密钥 "{name}" 的已用额度(${used})重置为 0 吗?此操作不可撤销。',quotaResetSuccess:"额度重置成功",failedToResetQuota:"重置额度失败",rateLimitColumn:"速率限制",rateLimitSection:"速率限制",resetUsage:"重置",rateLimit5h:"5小时限额 (USD)",rateLimit1d:"日限额 (USD)",rateLimit7d:"7天限额 (USD)",rateLimitHint:"设置此密钥在指定时间窗口内的最大消费额。0 
3= 无限制。",rateLimitUsage:"速率限制用量",resetRateLimitUsage:"重置速率限制用量",resetRateLimitTitle:"确认重置速率限制",resetRateLimitConfirmMessage:'确定要重置密钥 "{name}" 的速率限制用量吗?所有时间窗口的已用额度将归零。此操作不可撤销。',rateLimitResetSuccess:"速率限制已重置",failedToResetRateLimit:"重置速率限制失败",resetNow:"即将重置",expiration:"密钥有效期",expiresInDays:"{days} 天",extendDays:"+{days} 天",customDate:"自定义",expirationDate:"过期时间",expirationDateHint:"选择此 API 密钥的过期时间。",currentExpiration:"当前过期时间",expiresAt:"过期时间",noExpiration:"永久有效",status:{active:"活跃",inactive:"已停用",quota_exhausted:"额度耗尽",expired:"已过期"}},usage:{title:"使用记录",description:"查看和分析您的 API 使用历史",costDetails:"费用明细",tokenDetails:"Token 明细",cacheTtlOverriddenHint:"缓存 TTL Override 已启用",cacheTtlOverriddenLabel:"TTL 替换",cacheTtlOverridden5m:"按 5m 计费",cacheTtlOverridden1h:"按 1h 计费",totalRequests:"总请求数",totalTokens:"总 Token",cacheTotal:"缓存",cacheBreakdown:"缓存 Token 明细",cacheCreationTokensLabel:"缓存创建",cacheReadTokensLabel:"缓存读取",totalCost:"总消费",standardCost:"标准",actualCost:"实际",accountCost:"成本",userBilled:"用户扣费",accountBilled:"账号计费",resetNow:"现在",resetPending:"待刷新",accountMultiplier:"账号倍率",avgDuration:"平均耗时",inSelectedRange:"所选范围内",perRequest:"每次请求",apiKeyFilter:"API 密钥",allApiKeys:"全部密钥",timeRange:"时间范围",exportCsv:"导出 CSV",exportExcel:"导出 Excel",exportingProgress:"正在导出数据...",exportedCount:"已导出 {current}/{total} 条",estimatedTime:"预计剩余时间:{time}",cancelExport:"取消导出",exportCancelled:"导出已取消",exporting:"导出中...",preparingExport:"正在准备导出...",model:"模型",requestedModel:"请求",upstreamModel:"上游",sentUpstreamModel:"发往上游",upstreamResponseModel:"上游响应",upstreamModelMismatch:"上游响应模型不一致",modelVariant:"疑似版本变体",modelMismatch:"模型不一致",reasoningEffort:"推理强度",requestedReasoningEffort:"请求推理强度",endpoint:"端点",endpointDistribution:"端点分布",inbound:"入站",upstream:"上游",mapping:"映射",path:"路径",inboundEndpoint:"入站端点",upstreamEndpoint:"上游端点",type:"类型",tokens:"Token",cost:"费用",firstToken:"首 Token",duration:"耗时",latency:"延迟",latencyFirstToken:"首字",latencyDuration:"总耗时",time:"时间",ws:"WS",stream:"流式",sync:"同步",nativeCompactionV2:"压缩",compactionFilter:"请求类别",allCompactionTypes:"全部请求",compactionOnly:"仅原生压缩",cyber:"安全策略",live:"Live",unknown:"未知",in:"输入",out:"输出",cacheHit:"缓存命中",cacheCreate:"缓存创建",cacheHitRate:"缓存命中率",inputTokenPrice:"输入单价",outputTokenPrice:"输出单价",perMillionTokens:"/ 1M Token",unitPrice:"单次价格",imageUnitPrice:"单张价格",imageTotalPrice:"图片总价",imageCount:"图片张数",imageBillingSize:"计费尺寸",imageInputSize:"输入尺寸",imageOutputSize:"输出尺寸",imageInputTokens:"图片输入 Token",imageInputTokenPrice:"图片输入单价",imageInputCost:"图片输入费用",imageOutputTokens:"图片输出 Token",imageOutputTokenPrice:"图片输出单价",imageOutputCost:"图片输出费用",imageSizeSource:"尺寸来源",imageSizeBreakdown:"尺寸明细",imageSizeSourceOutput:"上游输出",imageSizeSourceInput:"请求输入",imageSizeSourceDefault:"默认计费档位",imageSizeSourceLegacy:"历史记录",imageSizeSourceMissing:"未记录",imageSizeNotRecorded:"未记录",imageSizeLegacyUnstandardized:"历史非标准",imageSizeUnknown:"未知",cacheRead:"读取",cacheWrite:"写入",serviceTier:"服务档位",serviceTierPriority:"Fast",serviceTierUltrafast:"Ultrafast",serviceTierFlex:"Flex",serviceTierStandard:"Standard",rate:"倍率",original:"原始",billed:"计费",noRecords:"未找到使用记录,请尝试调整筛选条件。",failedToLoad:"加载使用记录失败",noDataToExport:"没有可导出的数据",exportSuccess:"使用数据导出成功",exportFailed:"使用数据导出失败",exportExcelSuccess:"使用数据导出成功(Excel格式)",exp
3ortExcelFailed:"使用数据导出失败",imageUnit:"张",userAgent:"User-Agent",ipGeo:{fetch:"获取地区",fetching:"获取中...",failed:"获取失败",private:"内网地址",refreshTitle:"刷新地区信息",batchFetch:"批量获取地区",batchFetching:"获取中...",pending:"{count} 个 IP 待获取地区",batchFailed:"批量获取地区信息失败",detailOrg:"运营商",detailTimezone:"时区",detailAccuracy:"定位精度",detailCoordinates:"坐标"},tabs:{usage:"用量明细",errors:"错误请求",ranking:"用户排行"},errors:{time:"时间",model:"模型",endpoint:"端点",status:"状态码",category:"分类",platform:"平台",message:"错误信息",keyName:"Key 名称",keyDeleted:"已删除",allKeys:"全部 Key",modelPlaceholder:"搜索模型",allCategories:"全部分类",allStatuses:"全部状态码",empty:"暂无错误请求",failedToLoad:"加载错误请求失败",categories:{auth:"认证失败",rate_limit:"限流",quota:"余额/订阅",invalid_request:"参数错误",service_unavailable:"服务暂时不可用",upstream:"上游错误",internal:"平台错误",other:"其他",cyber:"安全策略"},detail:{title:"错误请求详情",responseBody:"上游响应内容",upstreamStatus:"上游状态码",loadFailed:"加载详情失败,请稍后重试"}}},monitorCommon:{status:{operational:"正常",degraded:"降级",failed:"失败",error:"错误",unknown:"-"},providers:{openai:"OpenAI",anthropic:"Anthropic",gemini:"Gemini",grok:"Grok",antigravity:"Antigravity",kimi:"Kimi",zhipu:"智谱 GLM",deepseek:"DeepSeek"},checkMode:{probe:"探活",quota:"配额",quota_probe:"探活 + 配额"},quota:{unavailable:"配额信息不可用",windows:{"5h":"5 小时","7d":"7 天","7dSonnet":"7 天 Sonnet","7dFable":"7 天 Fable",weekly:"周",daily:"日","30d":"30 天",total:"总量"},labels:{requests:"请求",tokens:"Token",shared:"共享",pro:"Pro",flash:"Flash"}},extraModelsHeader:"附加模型",extraModelsEmpty:"无附加模型",latencyEmpty:"-",availabilityPrefix:"可用性",dialogLatency:"对话延迟",endpointPing:"端点 PING",history60pts:"近 {n} 次记录",nextUpdateIn:"{n}s 后刷新",past:"PAST",now:"NOW",maintenancePaused:"维护中 · 已暂停时间线采集",extraModelsCount:"+ {n} 模型",pollEvery:"{n}s 轮询",updatedAt:"更新于 {time}",relativeSecondsAgo:"{n} 秒前",relativeMinutesAgo:"{n} 分钟前",relativeHoursAgo:"{n} 小时前",relativeDaysAgo:"{n} 天前"},channelStatus:{title:"渠道状态",description:"查看渠道可用性、延迟和近期状态",searchPlaceholder:"搜索渠道...",allProviders:"全部供应商",loadError:"加载渠道状态失败",detailLoadError:"加载渠道详情失败",detailTitle:"渠道详情",closeDetail:"关闭",windowTab:{"7d":"7 天","15d":"15 天","30d":"30 天"},overall:{operational:"OPERATIONAL",degraded:"DEGRADED",unavailable:"UNAVAILABLE"},columns:{name:"名称",provider:"供应商",groupName:"分组",primaryModel:"主模型",availability7d:"7 天可用率",latency:"延迟 (ms)"},detailColumns:{model:"模型",latestStatus:"最新状态",latestLatency:"最新延迟 (ms)",availability7d:"7 天可用率",availability15d:"15 天可用率",availability30d:"30 天可用率",avgLatency7d:"7 天平均延迟 (ms)"},empty:{title:"暂无可显示的渠道",description:"管理员尚未配置可监控的渠道。"}},availableChannels:{title:"可用渠道",description:"查看您可访问的渠道与其支持的模型、定价",searchPlaceholder:"搜索渠道或模型...",empty:"暂无可用渠道",noModels:"未配置模型",noPricing:"未配置定价",exclusive:"专属",public:"公开",exclusiveTooltip:"管理员授权给你的专属分组",publicTooltip:"对所有用户公开的分组",columns:{name:"渠道名",description:"描述",platform:"平台",groups:"我可访问的分组",supportedModels:"支持模型"},pricing:{billingMode:"计费模式",billingModeToken:"按 Token",billingModePerRequest:"按次",billingModeImage:"按图片",billingModeVideo:"按视频",inputPrice:"输入",outputPrice:"输出",cacheWritePrice:"缓存写入",cacheWrite5mPrice:"缓存写入(5m)",cacheWrite1hPrice:"缓存写入(1h)",cacheReadPrice:"缓存读取",imageInputPrice:"图片输入",imageOutputPrice:"图片输出",perRequestPrice:"每次请求",intervals:"阶梯定价",unitPerMillion:"/ 1M token",unitPerRequest:"/ 次"}}
3,modelPlaza:{title:"模型广场",description:"按分组浏览可用模型与价格",loading:"加载中...",empty:"暂无可展示的分组",loadFailed:"加载模型广场失败",noSearchResult:"没有匹配的模型",anonymousHint:"登录后可查看你的专属分组与专属倍率",filters:{platformLabel:"平台",groupLabel:"分组",rateLabel:"倍率",modelLabel:"模型",searchPlaceholder:"搜索模型名称",all:"全部"},badges:{exclusive:"专属分组",subscription:"订阅"},detail:{noModels:"该分组暂未配置模型",noPricing:"未配置定价",peakNote:"高峰时段 {window} 计费倍率 ×{multiplier}",longContextDisabledNote:"该分组未启用长上下文阶梯计费,超阈值请求仍按基础档计费,官方阶梯仅供参考"},table:{model:"模型",input:"输入",output:"输出",cache:"缓存",cacheWrite:"写入",cacheRead:"读取",cacheWriteShort:"写",cacheReadShort:"读",tierHint:"按单次请求的总上下文(输入 + 缓存写入 + 缓存读取)所在档位对整单计价",tierHintMarginal:"仅超过阈值的部分按该档计价,输出不加价",maxReasoningMultiplierBadge:"Max ×{multiplier}",maxReasoningMultiplierHint:"最终转发的推理强度为 max 时,整次请求的计费与额度消耗乘以 {multiplier}",marginalBadge:"超出部分计价",timePricingRowHint:"按 {timezone} 时间,在该时段内发起的请求按本行价格计费",timePricingRowHintWeekdays:"按 {timezone} 时间,仅工作日(周一至周五)在该时段内发起的请求按本行价格计费,周末全天按标准价",timePricingRowHintPeak:";本行价格未含高峰倍率,与高峰时段 {window} 重叠的部分实付再乘 ×{multiplier}",timePricingWeekdays:"工作日",timePricingRateHint:"生效倍率 {rate} × 时段倍率 {multiplier}",paidPrice:"实付价格(折后)",officialPrice:"官方价格",rate:"折扣倍率",unitPerMillion:"$ / 1M token",perUnitRequest:"/ 次",perUnitImage:"/ 张",perRequest:"按次计费",perImage:"按图片计费"},nav:{login:"登录",backToDashboard:"回到后台"}},affiliate:{title:"邀请返利",description:"邀请新用户注册,并将返利额度转入账户余额",yourCode:"我的邀请码",inviteLink:"邀请链接",copyCode:"复制邀请码",copyLink:"复制链接",codeCopied:"邀请码已复制",linkCopied:"邀请链接已复制",loadFailed:"加载邀请返利数据失败",transferFailed:"转入余额失败",stats:{rebateRate:"我的返利比例",rebateRateHint:"被邀请用户每次充值后你可获得的返利比例",invitedUsers:"邀请人数",availableQuota:"可转返利额度",frozenQuota:"冻结中",frozenQuotaHint:"新产生的返利正在冻结期中",totalQuota:"历史返利额度"},transfer:{title:"返利额度转余额",description:"将当前可用返利额度一键转入账户余额",button:"转入余额",transferring:"转入中...",empty:"当前没有可转入额度",success:"已转入余额:{amount}"},invitees:{title:"已邀请用户",empty:"暂无邀请记录",columns:{email:"邮箱",username:"用户名",rebate:"返利明细",joinedAt:"注册时间"}},tips:{title:"使用说明",line1:"将邀请码或邀请链接分享给新用户。",line2:"被邀请用户充值后,你可获得 {rate} 的返利额度。",line3:"返利额度可随时转入账户余额。",line4:"新产生的返利需要经过冻结期后才能提现。"}},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:"余额充值(兑换)",balanceAddedAffiliate:"余额充值(返利转入)",balanceAddedAdm
3in:"余额充值(管理员)",balanceDeductedAdmin:"余额扣除(管理员)",concurrencyAddedRedeem:"并发增加(兑换)",concurrencyAddedAdmin:"并发增加(管理员)",concurrencyReducedAdmin:"并发减少(管理员)",adminAdjustment:"管理员调整",subscriptionAssigned:"订阅已分配",subscriptionAssignedDesc:"您已获得 {groupName} 的访问权限",subscriptionDays:"{days} 天",days:"天",codeRedeemSuccess:"兑换成功!",failedToRedeem:"兑换失败,请检查兑换码后重试。",subscriptionRefreshFailed:"兑换成功,但订阅状态刷新失败。",pleaseEnterCode:"请输入兑换码"},profile:{title:"个人设置",description:"管理您的账户信息和设置",accountBalance:"账户余额",concurrencyLimit:"并发限制",rpmLimit:"RPM 限制",rpmUnlimited:"不限制",memberSince:"注册时间",overviewTitle:"账户总览",overviewDescription:"快速查看账号状态、资料来源与常用设置。",basicsTitle:"资料与头像",basicsDescription:"维护公开展示信息,并保持头像与昵称风格一致。",linkedProfileSources:"资料来源",linkedProfileSourcesDescription:"部分头像和昵称可能同步自第三方登录方式。",securityTitle:"安全设置",securityDescription:"密码、双因素认证和通知提醒集中放在右侧。",administrator:"管理员",user:"用户",username:"用户名",email:"邮箱",status:"状态",role:"角色",enterUsername:"输入用户名",editProfile:"编辑个人资料",updateProfile:"更新资料",updating:"更新中...",updateSuccess:"资料更新成功",updateFailed:"资料更新失败",usernameRequired:"用户名不能为空",changePassword:"修改密码",currentPassword:"当前密码",newPassword:"新密码",confirmNewPassword:"确认新密码",passwordHint:"密码至少需要 8 个字符",changingPassword:"修改中...",changePasswordButton:"修改密码",passwordsNotMatch:"两次输入的密码不一致",passwordTooShort:"密码至少需要 8 个字符",passwordChangeSuccess:"密码修改成功",passwordChangeFailed:"密码修改失败",totp:{title:"双因素认证 (2FA)",description:"使用 Google Authenticator 等应用增强账户安全",enabled:"已启用",enabledAt:"启用时间",notEnabled:"未启用",notEnabledHint:"启用双因素认证可以增强账户安全性",enable:"启用",disable:"禁用",featureDisabled:"功能未开放",featureDisabledHint:"管理员尚未开放双因素认证功能",setupTitle:"设置双因素认证",setupStep1:"使用认证器应用扫描下方二维码",setupStep2:"输入应用显示的 6 位验证码",manualEntry:"无法扫码?手动输入密钥:",enterCode:"输入 6 位验证码",verify:"验证",setupFailed:"获取设置信息失败",verifyFailed:"验证码错误,请重试",enableSuccess:"双因素认证已启用",disableTitle:"禁用双因素认证",disableWarning:"禁用后,登录时将不再需要é
3ªŒè¯ç ã€‚这可能会降低您的账户安全性。",enterPassword:"请输入当前密码确认",confirmDisable:"确认禁用",disableSuccess:"双因素认证已禁用",disableFailed:"禁用失败,请检查密码是否正确",loginTitle:"双因素认证",loginHint:"请输入您认证器应用显示的 6 位验证码",loginFailed:"验证失败,请重试",verifyEmailFirst:"请先验证您的邮箱",verifyPasswordFirst:"请先验证您的身份",emailCode:"邮箱验证码",enterEmailCode:"请输入 6 位验证码",sendCode:"发送验证码",codeSent:"验证码已发送到您的邮箱",sendCodeFailed:"发送验证码失败"},passkey:{title:"Passkey",description:"使用面容 ID、触控 ID、Windows Hello 或安全密钥免密码登录。",add:"添加 Passkey",continue:"创建 Passkey",name:"Passkey 名称",namePlaceholder:"例如:MacBook 触控 ID",passwordPlaceholder:"输入当前登录密码以确认",empty:"尚未添加任何 Passkey。",synced:"已同步",createdAt:"创建于 {date}",lastUsed:"上次使用 {date}",featureDisabled:"管理员尚未配置 Passkey 功能。",unsupported:"当前浏览器或设备不支持 Passkey。",loadFailed:"加载 Passkey 失败。",added:"Passkey 已添加。",addFailed:"添加 Passkey 失败。",renamePrompt:"请输入新的 Passkey 名称",renamed:"Passkey 已重命名。",renameFailed:"重命名 Passkey 失败。",deleteTitle:"删除 Passkey",deleteConfirm:"删除“{name}”?删除后将无法再使用它登录。",deleted:"Passkey 已删除。",deleteFailed:"删除 Passkey 失败。"},balanceNotify:{title:"余额不足提醒",description:"当账户余额低于阈值时发送邮件提醒",enabled:"启用余额不足提醒",threshold:"自定义提醒阈值",thresholdHint:"留空使用系统默认值",thresholdPlaceholder:"输入金额",systemDefault:"系统默认值",extraEmails:"通知邮箱",extraEmailsHint:"必须添加并验证邮箱后,余额不足时才能收到提醒邮件",primaryEmail:"主邮箱",noExtraEmails:"暂无额外通知邮箱",enterEmail:"输入邮箱地址",addEmail:"添加邮箱",emailPlaceholder:"输入邮箱地址",sendCode:"发送验证码",resend:"重发",codeSent:"验证码已发送",codeSentTo:"验证码已发送到 {email}",enterCode:"输入验证码",codePlaceholder:"6位验证码",verify:"验证",emailAdded:"邮箱已添加",emailRemoved:"邮箱已移除",verifySuccess:"邮箱添加成功",removeEmail:"移除",removeSuccess:"邮箱已移除",emailDuplicate:"该邮箱已存在",maxEmailsReached:"已达到通知邮箱数量上限",unverified:"未验证",verified:"已验证"},avatar:{title:"资料头像",description:"仅支持上传头像图片;静态图片会自动压缩到 20KB 以内后再保存。",uploadAction:"上传图片",uploadHint:"上传图片时会自动压缩静态图片到 20KB 以内,GIF 需自行控制在 20KB 以内",uploadRequired:"请先上传头像图片",saveSuccess:"头像已更新",deleteSuccess:"头像已删除",invalidType:"请选择图片文件",gifTooLarge:"GIF 头像必须在 20KB 以内",compressTooLarge:"无法将图片压缩到 20KB 以内,请换一张更小的图片",compressFailed:"压缩所选图片失败",readFailed:"读取所选图片失败",emptyDeleteHint:"当前没有可删除的头像"},authBindings:{title:"登录方式绑定",description:"查看当前绑定状态,并将更多第三方登录方式关联到这个账号。",bindAction:"绑定 {providerName}",bindSuccess:"账号绑定成功",emailPlaceholder:"输入邮箱地址",codePlaceholder:"输入验证码",passwordPlaceholder:"设置登录密码",replaceEmailPasswordPlaceholder:"输入当前密码",sendCodeAction:"发送验证码",manageEmailAction:"管理邮箱",hideEmailFormAction:"收起邮箱表单",confirmEmailBindAction:"绑定邮箱",confirmEmailReplaceAction:"更换主邮箱",codeSentTo:"验证码已发送到 {email}",replaceSuccess:"主邮箱已更新",unbindAction:"解绑",unbindSuccess:"{providerName} 已解绑",boundCount:"已关联 {count} 条记录",status:{bound:"已绑定",notBound:"未绑定"},providers:{email:"邮箱",linuxdo:"LinuxDo",dingtalk:"钉钉",oidc:"{providerName}",wechat:"微信"},notes:{emailManagedFromProfile:"主邮箱在资料表单中管理",canUnbind:"你可以解绑这个登录方式。",bindAnotherBeforeUnbind:"请先绑定其他登录方式,再解除当前绑定。"},source:{avatar:"头像当前来自 {providerName}",username:"昵称当前来自 {providerName}"}}},empty:{noData:"暂无数据"},table:{expandActions:"展开更多操作",collapseActions:"收起操作"},pagination:{showing:"显示",to:"至",of:"共",results:"条结果",page:"页",pageOf:"第 {page} / {total} 页",previous:"上一页",next:"下一页",perPage:"每页",goToPage:"跳转到第 {page} 页",jumpTo:"跳转页",jumpPlaceholder:"页码",jumpAction:"跳转"},errors:{somethingWentWrong:"出错了",pageNotFound:"页面未找到",unauthorized:"未授权",forbidden:"禁止è
3®¿é—®",serverError:"服务器错误",networkError:"网络错误",timeout:"请求超时",tryAgain:"请重试"},dates:{today:"今天",yesterday:"昨天",thisWeek:"本周",lastWeek:"上周",thisMonth:"本月",lastMonth:"上月",last24Hours:"近24小时",last7Days:"近 7 天",last14Days:"近 14 天",last30Days:"近 30 天",custom:"自定义",startDate:"开始日期",endDate:"结束日期",apply:"应用",selectDateRange:"选择日期范围"}},o={channelMonitorV2:{title:"渠道监控",updating:"正在更新数据",updatedTo:"更新至 {time}",partialCoverage:"部分历史覆盖",bootstrap:{title:"正在补齐历史监控数据",description:"首次启用被动监控时,系统会在后台静默聚合 90 分钟、24 小时、7 天与 30 天窗口;完成后可切换全部时间范围。",progress:"进度 {percent}%",working:"后台聚合中…"},timeRange:"时间范围",clearFilters:"重置",refreshingFilters:"筛选条件已变化,正在刷新矩阵、趋势和明细…",switchingData:"正在切换筛选数据…",summaryAria:"筛选范围整体汇总",loadFailed:"渠道监控加载失败",detailLoadFailed:"渠道监控明细加载失败",otherModels:"其他模型",ignored:"忽略",currentUser:"当前用户",ranges:{"90m":"90m","24h":"24h","7d":"7d","30d":"30d"},filters:{platform:"平台",allPlatforms:"全部",group:"分组",allGroups:"全部",model:"模型",allModels:"全部",empty:"暂无可选项",selectedCount:"{count} 项",labelValue:"{label}:{value}"},groupBy:{label:"展示维度",platform:"平台",platformGroup:"平台 / 分组",platformModel:"平台 / 模型",platformGroupModel:"平台 / 分组 / 模型"},trendView:{label:"趋势视图",pulse:"色块矩阵",line:"折线图"},healthMode:{label:"健康显示",overall:"综合",success:"错误率",ttft:"首 Token",cache:"缓存率"},tabs:{aria:"明细维度",models:"模型",errors:"错误原因",users:"用户排行"},metrics:{rpm:"RPM",tpm:"TPM",tps:"每秒 Token",rpmDetail:"每分钟请求数",tpmDetail:"每分钟 Token 数",tpsDetail:"由 TPM ÷ 60 换算",errorRate:"错误率",ttft:"首 Token",ttftP50:"首 Token P50",durationP50:"请求时长 P50",cacheRate:"缓存率",cacheDetail:"读缓存占比",successRate:"成功率",successRateValue:"成功率 {value}",errorRateValue:"错误率 {value}",rpmValue:"RPM {value}",tpmValue:"TPM {value}",tpsValue:"每秒 Token {value}",ttftValue:"首 Token {value}",durationValue:"请求时长 {value}",cacheRateValue:"缓存率 {value}"},table:{platformModel:"平台 / 模型",rank:"排名",user:"用户"},empty:{title:"没有可展示的数据",description:"尝试调整时间范围或筛选条件"},bucket:{minutes:"{count} 分钟粒度",hours:"{count} 小时粒度",days:"{count} 天粒度"},matrix:{title:"可用性趋势",description:"每行是一种渠道组合,每个色块代表一个统计区间;悬停查看明细",wheelZoom:"在色块上滚轮放大(区间变窄、色块变宽)",wheelZoomX:"在色块上滚轮放大(区间变窄、色块变宽)",dimension:"渠道维度",emptyTitle:"当前筛选窗口没有矩阵数据",legendAria:"健康分数图例",bad:"å·®",good:"好",healthyLegend:"健康 (≥80)",warningLegend:"需关注 (50–79)",criticalLegend:"异常 (<50)",unknownLegend:"无流量 / 样本不足",noTraffic:"该区间无流量",noTrafficAt:"{time} · 无流量",scoreLine:"健康分 {score}",resetZoom:"重置缩放"},chart:{title:"可用性趋势",description:"平滑趋势:错误率 · 首 Token P50 · 缓存率",emptyTitle:"当前筛选窗口没有趋势数据",errorLegend:"错误率(左轴 %)",cacheLegend:"缓存率(左轴 %)",ttftLegend:"首 Token P50(右轴)",errorDataset:"错误率趋势 %",cacheDataset:"缓存率趋势 %",ttftDataset:"首 Token 趋势 P50 (ms)",percentAxis:"比率 %",resetZoom:"重置缩放"},errorDetail:{http:"HTTP {code}",upstream:"上游 {code}",noMessage:"无错误消息",empty:"仅展示分类占比(样本消息仅管理员可见)"},errorCategories:{content_policy:"内容策略",authentication:"认证失败",context_limit:"上下文超限",invali
3d_request:"请求格式",model_unsupported:"模型不支持",group_access:"分组权限",quota_or_balance:"额度或余额",account_pool_unavailable:"账号池不可用",rate_or_capacity:"限流或容量",timeout:"超时",transport_or_stream:"传输或流",upstream_forbidden:"上游拒绝",not_found:"资源不存在",client_cancelled:"客户端取消",upstream_5xx:"上游 5xx",internal:"内部错误",other:"其他"},rank:{gold:"第 1 名 金",silver:"第 2 名 银",bronze:"第 3 名 铜",place:"第 {n} 名",unranked:"未上榜"},settings:{title:"V2 数据监控配置",description:"配置被动用量汇总维度(平台 / 模型 / 分组)与刷新频率。健康色与明细在用户端 /monitor 以比例、RPM/TPM 展示,不暴露绝对请求量。",save:"保存",loading:"加载中...",loadFailed:"V2 配置加载失败",saveSuccess:"V2 监控配置已保存",saveFailed:"V2 配置保存失败",modeBanner:"当前系统设置为 {mode}。V2 分钟聚合不会运行;此处配置可预先保存,切换到 {modeV2} 后立即生效。可在系统设置 → 功能开关调整。",modeClosed:"渠道监控已关闭",modeV1:"V1 主动探测",modeV2:"V2 被动监控",enableTitle:"启用 V2 汇总",enableHint:"在系统模式为 V2 时生效;关闭后仅停止本配置的汇总,系统模式开关仍在「功能开关」",refreshTitle:"汇总频率",refreshHint:"影响矩阵时间粒度与刷新节奏",refreshAria:"汇总频率",platformsTitle:"平台与模型",platformsHint:"留空 = 展示全部真实模型名;填写后仅名单内单独成行,其余归入「其他」",modelsPlaceholder:"留空=全部真实模型;或填写主流模型名单(其余归其他)",badgeAllModels:"全部模型",badgeOther:"+ 其他",groupsTitle:"监控分组",groupsSelected:"已选择 {count} 个分组",groupsAll:"全部分组",groupsEmpty:"没有可选择的分组",errorsTitle:"错误分类与忽略",errorsHint:"勾选「忽略」的类别不计入错误率与健康分,仍在错误原因列表中以灰色显示并标记忽略。未匹配的错误归入「其他」。",ignoredSummary:"已忽略 {ignored} 类 · 计入错误率 {counted} 类",healthTitle:"健康阈值",healthHint:"控制用户端色块和整体评分。默认阈值较宽松,避免少量错误或低缓存率立即显示异常。",fields:{minimumSample:"最小样本数",warningError:"错误率关注 %",criticalError:"错误率异常 %",targetTtft:"TTFT 目标 ms",warningTtft:"TTFT 关注 ms",criticalTtft:"TTFT 异常 ms",warningCache:"缓存率关注 %",criticalCache:"缓存率异常 %"},namedModelsEmpty:"各平台模型列表为空:将展示全部真实模型名(不归入「其他」)。",namedModelsCount:"将展示 {count} 个命名模型维度;名单外模型归入各平台「其他」。",userContractTitle:"用户端展示约定",userContract:{health:"健康色三指标:错误率 60% + 首 Token P50 20% + 缓存率 20%(阈值可在上方配置)",trend:"趋势可切换色块矩阵 / 折线图(错误率 · 缓存率 · 首 Token)",latency:"延迟展示 AVG · P50 · P90;不展示绝对请求数 / 错误数",models:"模型列表留空时展示真实模型名,不会全部归入「其他」"}},admin:{descriptionV1:"当前系统设置为 V1 主动探测:可管理监控项并立即检测;V2 聚合不会运行。",descriptionV2:"当前系统设置为 V2 被动监控:配置聚合维度;V1 主动探测不会运行。",tabAria:"监控管理",tabV2:"V2 数据监控配置",tabV1Active:"V1 主动探测",tabV1History:"V1 历史(当前模式未启用探测)"}}},a={batchImage:{columns:{taskName:"任务名称",model:"模型",apiKey:"提交密钥",result:"结果",cost:"费用",downloadStatus:"下载状态"},status:{queued:"排队中",running:"生成中",processingResults:"整理结果",settling:"结算中",completed:"已完成",failed:"失败",cancelled:"已取消",outputDeleted:"结果已删除",partialSuccess:"部分成功",allFailed:"全部失败"},itemStatus:{pending:"排队中",succeeded:"成功",failed:"失败",cancelled:"已取消",recovered:"已补成功"},filters:{searchTaskName:"搜索任务名称",allApiKeys:"全部 API Key",allStatuses:"全部状态",allDownloadStates:"全部下载状态",downloaded:"已下载",notDownloaded:"未下载"}
3,actions:{usageGuide:"使用说明",createJob:"创建批量任务",downloadSelected:"下载选中",deleteRecords:"删除记录",retryFailedItems:"重试失败项",cancelJob:"取消任务",downloadZip:"下载 ZIP",viewDetail:"查看详情",download:"下载",moreActions:"更多操作",copyInstruction:"复制说明",submitJob:"提交任务"},list:{selectedJobs:"已选择 {count} 个任务",expandChildren:"展开 {n} 个子任务",collapseChildren:"收起子任务",childCount:"{n} 子任务",childBadge:"子任务",keyNotRecorded:"未记录",totalCount:"共 {n}",notDownloaded:"未下载",empty:"暂无批量任务",emptyHint:"点击右上角创建批量任务。"},pagination:{pageNumber:"第 {page} 页",pageItems:"本页 {count} 条"},promptPopover:{title:"完整 Prompt",copied:"Prompt 已复制"},detail:{title:"任务详情",aggregatedResult:"汇总结果",result:"结果",cost:"费用",downloadStatus:"下载状态",items:"明细",preview:"预览",previewZoom:"放大压缩预览 {id}",previewReload:"重新加载压缩预览",previewLoad:"加载压缩预览",previewUnavailable:"不可预览",noImage:"无图片",loadingItems:"正在加载明细...",noItems:"暂无明细",noItemsHint:"排队或生成中的任务会先显示已提交的 prompt,结果整理完成后会更新图片状态。",mainTask:"主任务:{name}",childTask:"子任务:{name}",holdCost:"冻结 {amount}"},itemResult:{recoveredByRetry:"旧失败已由重试子任务补成功",readyPreview:"图片已生成,可点击预览",readyDownload:"图片已生成,可下载",noUsableImage:"未生成可用图片",cancelled:"任务已取消",waiting:"等待生成结果",emptyImageOutput:"上游返回了结果,但这条没有图片内容。通常是 Gemini/Vertex 单条生成失败或被安全策略拦截。",providerItemFailed:"上游返回的这条结果没有可用图片。"},imagePreview:{title:"图片预览",notice:"当前显示的是浏览器本地缓存的压缩缩略图,清晰度会有影响;需要查看原图请下载 ZIP。"},create:{title:"创建批量任务",taskName:"任务名称",taskNamePlaceholder:"不填写则默认使用当前时间",loadingKeys:"加载 API Key 中...",selectKeyPlaceholder:"请选择 Gemini API Key",noKeysHint:"当前没有可用于批量生图的 Gemini API Key。请先创建并绑定已开启批量生图的 Gemini 分组。",model:"模型",imageSize:"图片尺寸",imageSizeHint:"当前批量任务固定按 1K 图片提交。",outputFormat:"输出格式",estimatedOutput:"预计生成",estimatedOutputValue:"{images} å¼  / {prompts} 条",promptAdded:"已添加 {count} 条",promptPlaceholder:"粘贴 prompt,添加后进入下方列表",customIdPlaceholder:"Custom ID 可选",outputCountPerPrompt:"每条生成张数",outputCountOption:"{n} å¼ ",referenceImage:"参考图",removeReferenceImage:"移除参考图",limitsHint:"每条最多 {maxPerItem} 张,整组最多 {maxPerJob} 张;当前模型每条最多 {refLimit} 张参考图,参考图按生成张数重复消耗输入 token。",referenceCount:"{n} 参考图",noPrompts:"还没有添加 prompt。",cancelNotice:"取消任务会请求上游取消;已被系统索引为成功的图片仍会按成功项结算扣费,其余冻结金额会释放。",submittingNotice:"正在创建上游批量任务,通常需要几秒,请不要重复提交。",modelNoReferenceImages:"当前模型不支持参考图。",refLimitReached:"当前模型每条最多 {limit} 张参考图。",refLimitExceededIgnored:"当前模型每条最多 {limit} 张参考图,已忽略超出的文件。",refFormatUnsupported:"参考图仅支持 PNG、JPEG 或 WebP。",refFileTooLarge:"{name} 超过 10MB,已忽略。"},guide:{title:"批量生图使用说明",uiTitle:"当前界面如何使用",step1:"1. 选择已开启批量生图的 Gemini API Key,模型列表会按该 Key 所属分组可用模型展示。",step2:"2. 任务名称可以留空,提交时会自动使用当前时间;Prompt 需要一条条添加到列表里,每条 Prompt 可附参考图,也可以设置重复生成张数。",step3:"3. 提交后任务会先排队,明细会展示已提交的 Prompt;图片预览默认不加载,点击明细里的预览按钮才会加载单张图。",step4:"4. 完成后可以下载 ZIP;部分失败时,更多菜单里可以只重试失败项。当前结算仍按成功输出图张数计算,不单独对参考图加价。",skillTitle:"给 Codex 的 Skill 说明",skillDesc:"用于告诉 Codex 如何ä
3»£æ›¿ç”¨æˆ·æ•´ç† prompt、提交任务和下载结果。"},messages:{loadKeysFailed:"加载 API Key 失败",loadModelsFailed:"加载可用模型失败",loadJobsFailed:"加载批量任务失败",selectApiKey:"请选择可用的 Gemini API Key",noModelsForKey:"当前密钥没有可用的批量生图模型",selectModel:"请选择模型",promptRequired:"请至少填写一条 prompt",submitted:"批量任务已提交",submitFailed:"提交失败",refreshFailed:"刷新失败",cancelConfirm:"取消会请求上游取消;已被系统索引为成功的图片仍会按成功项结算扣费,其余冻结金额会释放。确定取消吗?",cancelled:"已请求取消任务",cancelFailed:"取消失败",batchDownloadStarted:"已开始下载选中的任务",downloadFailed:"下载失败",retrySubmitted:"已提交失败项重试任务",retryFailed:"重试失败项失败",retryMissingPrompts:"这个任务没有保存失败项 prompt,无法自动重试。请复制原 prompt 后重新创建任务。",retryTaskNameSuffix:"重试失败项",deleteConfirm:"删除后这个任务会从你的列表隐藏,但账务记录仍会保留。确定删除吗?",deleteSelectedConfirm:"删除后选中的任务会从你的列表隐藏,但账务记录仍会保留。确定删除吗?",deleted:"任务记录已删除",deleteFailed:"删除任务记录失败",loadItemsFailed:"加载明细失败",loadPreviewFailed:"加载图片预览失败",copiedInstruction:"已复制批量生图说明",loadingModels:"加载可用模型中...",noModels:"无可用模型",noModelsHint:"当前密钥所属分组没有配置可用于批量生图的模型。",noCompatibleAccount:"当前密钥所属分组没有可用的批量生图上游账号。请联系管理员检查:该分组是否绑定了可调度的 Gemini API Key 或 Vertex 服务账号,以及账号是否支持所选模型。",unsupportedProvider:"这个任务使用的批量生图通道当前不可用。请联系管理员检查批量生图通道配置。",providerSubmitFailed:"上游批量生图任务提交失败。请联系管理员检查上游账号状态、模型权限或服务状态。",vertexGcsBucketMissing:"Vertex 批量生图缺少托管 GCS 存储桶配置。请联系管理员配置 BATCH_IMAGE_VERTEX_MANAGED_GCS_BUCKET 后再提交。",queueFailed:"任务队列暂时不可用,批量任务没有成功入队。请联系管理员检查队列服务。",billingHoldFailed:"费用冻结失败,批量任务没有成功提交。请联系管理员检查余额冻结或计费服务。",groupDisabled:"当前密钥所属分组没有开启批量生图。你可以换一个已开启批量生图的密钥,或联系管理员开启。",pricingMissing:"所选模型还没有配置批量生图价格。请联系管理员补充价格配置。",insufficientBalance:"余额不足,无法冻结本次批量生图费用。",invalidModel:"请选择一个可用于当前密钥的批量生图模型。",invalidItems:"Prompt 列表格式不正确,请检查是否为空、是否超过数量限制,或图片尺寸是否仍为 1K。",duplicateCustomId:"Prompt 列表里的 custom_id 不能重复。",promptTooLong:"单条 prompt 过长,请缩短后重试。",invalidReferenceImage:"参考图格式不正确,请使用 10MB 以内的 PNG、JPEG 或 WebP。",tooManyReferenceImages:"参考图数量超过限制:Flash Image 每条最多 3 张,Pro Image 每条最多 14 张,整组最多 1000 张。",referenceImagesTooLarge:"参考图总量过大。inline 参考图整组最多 128MB;大量参考图请改用 gs:// file_uri 或拆分任务。",tooManyOutputImages:"预计生成张数超过限制:每条最多 4 张,整组最多 200 张。",idempotencyConflict:"这次提交和之前的请求标识冲突,请刷新页面后重新提交。",notReady:"任务还没有完成,完成后才能下载。",outputDeleted:"这个任务的结果文件已经被清理,无法下载。",resultMissing:"结果文件不可用,可能是上游结果文件已清理、存储权限异常,或管理员迁移过存储配置。请联系管理员检查结果文件。",itemFailed:"这条明细没有成功图片,无法预览。",itemImageIndexOutOfRange:"这条明细没有可预览的图片。",downloadLimited:"当前下载请求太多,请稍后再试。",downloadTooLarge:"这个 ZIP 太大,已超过单次下载限制。请减少单次下载数量,或联系管理员调整批量下载上限。",deleteNotReady:"任务结束后才能删除记录。正在生成或结算中的任务请先等待完成。",disabled:"批量生图功能当前未开启。",authRequired:"当前 API Key 不可用或已失效,请重新选择密钥。",adminReference:"请把错误码和请求 ID 发给管理员排查。",errorReference:"错误信息",errorCodeRef:"错误码:{code}",requestIdRef:"请求 ID:{id}",httpStatusRef:"HTTP 状态:{status}"}}},r={dashboard:{title:"管理控制台",description:"系统概览与统计数据",apiKeys:"API 密钥",totalApiKeys:"API 密钥总数",activeApiKeys:"活跃密钥",users:"用户",totalUsers:"用户总数",activeUsers:"活跃用户",accounts:"账号",totalAccounts:"账号总数",activeAccounts:"活跃账号",todayRequests:"今日请求",totalRequests:"总请求数",todayCost:"今日消费",totalCost:"总消费",newUsersToday:"今日新增用户",actual:"实际",standard:"标准",accountCost:"成本",todayTokens:"今日 Token",totalTokens:"总 Token",input:"输入",output:"输出",cacheToday:"今日缓存",performance:"性能指标",avgResponse:"平均响应",averageTime:"平均时间",active:"活跃",ok:"正常",err:"错误",create:"创建",timeRange:"时间范围",granularity:"粒度",day:"按天",hour:"按小时",modelDistribution:"模型分布",groupDistribution:"分组使用分布",metricTokens:"按 Token",metricActualCost:"按实际消费",tokenUsageTrend:"Token 使用趋势",userUsageTrend:"用户使用趋势(Top 12)",noDataAvailable:"暂无数据",model:"模型",group:"分组",noGroup:"无分组",requests:"请求",tokens:"Token",cache:"缓存",recentUsage:"最近使用",viewM
3odelDistribution:"模型分布",viewSpendingRanking:"用户消费榜",spendingRankingTitle:"用户消费榜",spendingRankingUser:"用户",spendingRankingRequests:"请求",spendingRankingTokens:"Token",spendingRankingSpend:"消费",spendingRankingOther:"其他",spendingRankingUsage:"用量",spendShort:"消费",requestsShort:"请求",tokensShort:"Token",last7Days:"近 7 天",noUsageRecords:"暂无使用记录",startUsingApi:"开始使用 API 后,使用历史将显示在这里。",viewAllUsage:"查看全部",quickActions:"快捷操作",manageUsers:"管理用户",viewUserAccounts:"查看和管理用户账户",manageAccounts:"管理账号",configureAiAccounts:"配置 AI 平台账号",batchImage:"批量生图",batchImageDesc:"提交任务、复制 Agent 调用说明",groupPricing:"分组定价",groupPricingDesc:"设置批量折扣和冻结比例",systemSettings:"系统设置",configureSystem:"配置系统设置",failedToLoad:"加载仪表盘数据失败"},backup:{title:"数据库备份",description:"全量数据库备份到 S3 兼容存储,支持定时备份与恢复",s3:{title:"S3 存储配置",description:"配置 S3 兼容存储(支持 Cloudflare R2)",descriptionPrefix:"配置 S3 兼容存储(支持",descriptionSuffix:")",enabled:"启用 S3 存储",endpoint:"端点地址",region:"区域",bucket:"存储桶",prefix:"Key 前缀",accessKeyId:"Access Key ID",secretAccessKey:"Secret Access Key",secretConfigured:"已配置,留空保持不变",forcePathStyle:"强制路径风格",testConnection:"测试连接",testSuccess:"S3 连接测试成功",testFailed:"S3 连接测试失败",saved:"S3 配置已保存"},imageStorage:{title:"异步生图对象存储",description:"开启后,异步生图接口可用,生成结果转存到对象存储,只把短链接写入 Redis。与备份共用同一套 S3 客户端,保存后立即生效,无需重启。",enabled:"启用异步生图",reuseBackupS3:"复用上方备份的 S3 配置(只用不同的存储桶/前缀)",bucket:"存储桶",bucketInherited:"留空则沿用备份存储桶",prefix:"Key 前缀",publicBaseUrl:"公开访问域名",publicBaseUrlPlaceholder:"留空则返回预签名临时链接",presignExpiryHours:"预签名链接有效期(小时)",saved:"异步生图对象存储配置已保存"},schedule:{title:"定时备份",description:"配置自动定时备份",enabled:"启用定时备份",cronExpr:"Cron 表达式",cronHint:'例如 "0 2 * * *" 表示每天凌晨 2 点',retainDays:"备份过期天数",retainDaysHint:"备份文件超过此天数后自动删除,0 = 永不过期",retainCount:"最大保留份数",retainCountHint:"最多保留的备份数量,0 = 不限制",saved:"定时备份配置已保存"},operations:{title:"备份记录",description:"创建手动备份和管理已有备份记录",createBackup:"创建备份",backing:"备份中...",backupCreated:"备份创建成功",expireDays:"过期天数",alreadyInProgress:"已有备份正在进行中",backupRunning:"备份进行中...",backupFailed:"备份失败",restoreRunning:"恢复进行中...",restoreFailed:"恢复失败"},columns:{status:"状态",fileName:"文件名",size:"大小",parts:"分卷数",expiresAt:"过期时间",triggeredBy:"触发方式",startedAt:"开始时间",actions:"操作"},status:{pending:"等待中",running:"执行中",completed:"已完成",failed:"失败"},progress:{pending:"准备中",dumping:"导出数据库",uploading:"上传中"},trigger:{manual:"手动",scheduled:"定时"},neverExpire:"永不过期",empty:"暂无备份记录",actions:{download:"下载",downloadParts:"下载分卷",downloadPartsHint:"请按顺序下载全部分卷后拼接 gzip 字节流:Linux/macOS 使用 cat payload.part-* > backup.sql.gz;Windows 使用 copy /b payload.part-000001+payload.part-000002 backup.sql.gz。",partLabel:"第 {index} 卷",downloadFailed:"下载地址为空",restore:"恢复",restoreConfirm:"确定要从此备份恢复吗?这将覆盖当前数据库!",restorePasswordPrompt:"请输入管理员密码以确认恢复操作",restoreSuccess:"数据库恢复成功",deleteConfirm:"确定要删除此备份吗?",deleted:"备份已删除"},r2Guide:{title:"Cloudflare R2 配置教程",intro:"Cloudflare R2 提供 S3 兼容的对象存储,免费额度为 10GB 存储 + 每月 100 万次 A 类请求,非常适合数据库备份。",step1:{title:"创建 R2 存储桶",line1:"登录 Cloudflare Dashboard (dash.cloudflare.com),左侧菜单选择「R2 对象存储」",line2:"点击「创建存储桶」,输入名称(如 sub2api-backups),选择区域",line3:"点击创建完成"},step2:{title:"创建 API 令牌",line1:"在 R2 页面,点击右上角「管理 R2 API 令牌」",line2:"点击「创建 API 令牌」,权限选择「对象读和写」",line3:"建议指定存储桶范围(仅允许访问备份桶,更安全)",line4:"创建后会显示 Access Key ID 和 Secret Acce
3ss Key",warning:"Secret Access Key 只会显示一次,请立即复制保存!"},step3:{title:"获取 S3 端点地址",desc:"在 R2 概览页面找到你的账户 ID(在 URL 或右侧面板中),端点格式为:",accountId:"你的账户 ID"},step4:{title:"填写以下配置",checkEnabled:"勾选",bucketValue:"你创建的存储桶名称",fromStep2:"第 2 步获取的值",unchecked:"不勾选"},freeTier:"R2 免费额度:10GB 存储 + 每月 100 万次 A 类请求 + 1000 万次 B 类请求,对数据库备份完全够用。"}},dataManagement:{title:"数据管理",description:"统一管理数据管理代理状态、对象存储配置和备份任务",agent:{title:"数据管理代理状态",description:"系统会自动探测固定 Unix Socket,仅在可连通时启用数据管理功能。",enabled:"数据管理代理已就绪,可继续进行数据管理操作。",disabled:"数据管理代理不可用,当前仅可查看诊断信息。",socketPath:"Socket 路径",version:"版本",status:"状态",uptime:"运行时长",reasonLabel:"不可用原因",reason:{DATA_MANAGEMENT_AGENT_SOCKET_MISSING:"未检测到数据管理 Socket 文件",DATA_MANAGEMENT_AGENT_UNAVAILABLE:"数据管理代理不可连通",BACKUP_AGENT_SOCKET_MISSING:"未检测到备份 Socket 文件",BACKUP_AGENT_UNAVAILABLE:"备份代理不可连通",UNKNOWN:"未知原因"}},sections:{config:{title:"备份配置",description:"配置备份源、保留策略与 S3 存储参数。"},s3:{title:"S3 对象存储",description:"配置并测试备份产物上传到标准 S3 对象存储。"},backup:{title:"备份操作",description:"触发 PostgreSQL、Redis 与全量备份任务。"},history:{title:"备份历史",description:"查看备份任务执行状态、错误与产物信息。"}},form:{sourceMode:"源模式",backupRoot:"备份根目录",activePostgresProfile:"当前激活 PostgreSQL 配置",activeRedisProfile:"当前激活 Redis 配置",activeS3Profile:"当前激活 S3 账号",retentionDays:"保留天数",keepLast:"至少保留最近任务数",uploadToS3:"上传到 S3",useActivePostgresProfile:"使用当前激活 PostgreSQL 配置",useActiveRedisProfile:"使用当前激活 Redis 配置",useActiveS3Profile:"使用当前激活账号",idempotencyKey:"幂等键(可选)",secretConfigured:"已配置,留空不变",source:{profileID:"配置 ID(唯一)",profileName:"配置名称",setActive:"创建后立即设为激活配置"},postgres:{title:"PostgreSQL",host:"主机",port:"端口",user:"用户名",password:"密码",database:"数据库",sslMode:"SSL 模式",containerName:"容器名(docker_exec 模式)"},redis:{title:"Redis",addr:"地址(host:port)",username:"用户名",password:"密码",db:"数据库编号",containerName:"容器名(docker_exec 模式)"},s3:{enabled:"启用 S3 上传",profileID:"账号 ID(唯一)",profileName:"账号名称",endpoint:"Endpoint(可选)",region:"Region",bucket:"Bucket",accessKeyID:"Access Key ID",secretAccessKey:"Secret Access Key",prefix:"对象前缀",forcePathStyle:"强制 path-style",useSSL:"使用 SSL",setActive:"创建后立即设为激活账号"}},sourceProfiles:{createTitle:"创建数据源配置",editTitle:"编辑数据源配置",empty:"暂无配置,请先创建",deleteConfirm:"确定删除配置 {profileID} 吗?",columns:{profile:"配置",active:"激活状态",connection:"连接信息",database:"数据库",updatedAt:"更新时间",actions:"操作"}},s3Profiles:{createTitle:"创建 S3 账号",editTitle:"编辑 S3 账号",empty:"暂无 S3 账号,请先创建",editHint:"点击“编辑”将在右侧抽屉中修改账号信息。",deleteConfirm:"确定删除 S3 账号 {profileID} 吗?",columns:{profile:"账号",active:"激活状态",storage:"存储配置",updatedAt:"更新时间",actions:"操作"}},history:{total:"共 {count} 条",empty:"暂无备份任务",columns:{jobID:"任务 ID",type:"类型",status:"状态",triggeredBy:"触发人",pgProfile:"PostgreSQL 配置",redisProfile:"Redis 配置",s3Profile:"S3 账号",finishedAt:"完成时间",artifact:"产物",error:"错误"},status:{queued:"排队中",running:"执行中",succeeded:"成功",failed:"失败",partial_succeeded:"部分成功"}},actions:{refresh:"刷新状态",disabledHint:"请先启动 datamanagementd 并确认 Socket 可连通。",reloadConfig:"加载配置",reloadSourceProfiles:"刷新数据源配置",reloadProfiles:"刷新账号列表",newSourceProfile:"新建数据源配置",saveConfig:"保存配置",configSaved:"配置保存成功",testS3:"测试 S3 连接",s3TestOK:"S3 连接测试成功",s3TestFailed:"S3 连接测试失败",newProfile:"新建账号",saveProfile:"保存账号",activateProfile:"设为激活",profileIDRequired:"请输入账号 ID",profileNameRequired:"请输入账号名称",profileSelectRequired:"请先选择要编辑的账号",profileCreated:"S3 账号创建成功",profileSaved:"S3 账号保存成功",profileActivated:"S3 账号已切换为激活",profileDeleted:"S3 账号删除成功",sourceProfileCreated:"数据源配置创建成功",sourceProfileSaved:"数据源配置保存成功",sourceProfileActivated:"数据源配置已切换为激活",sourceProfileDeleted:"数据源配置删除成功",createBackup:"创建备份任务",jobCreated:"备份任务已创建:{jobID}({status})",refreshJobs:"刷新任务",loadMore:"加载更多"}},affiliates:{invitesDescription:"查看全站邀请关系和被邀请用户累计返利",rebatesDescription:"查看每一笔产生返利的充值订单",transfersDescription:"查看返利额度转入账户余额的提取流水",errors:{loadFailed:"加载邀请返利记录失败"},records:{search:"搜索",searchPlaceholder:"邮箱、用户名、用户 ID、订单号",startAt:"开始日期",endAt:"结束日期",inviter:"邀请人",invitee:"被邀请人",user:"用户",affCode:"邀请码",order:"订单",totalRebate:"累计返利",orderAmount:"充值金额",payAmount:"支付金额",rebateAmount:"返利金额",paymentType:"支付方式",orderStatus:"订单状态",transferAmount:"提取金额",balanceAfter:"提取后余额",availableQuotaAfter:"提取后可提",frozenQuotaAfter:"提取后冻结",historyQuotaAfter:"提取后历史返利",invitedAt:"邀请时间",rebatedAt:"返利时间",transferredAt:"提取时间"},overview:{title:"用户返利概览",affCode:"邀请码",rebateRate:"返利比例",
3invitedCount:"邀请人数",rebatedInviteeCount:"已产生返利人数",availableQuota:"可提余额",historyQuota:"历史返利"}},users:{title:"用户管理",description:"管理用户账户和权限",createUser:"创建用户",bulkLimits:{action:"批量设置限制({count})",title:"批量设置用户限制",selectedCount:"已选择 {count} 个用户",selectionLimit:"一次最多选择 {max} 个用户。",selectUser:"选择 {email}",enableConcurrency:"修改并发数",enableRPMLimit:"修改 RPM 限制",unlimited:"不限制",nonNegativeInteger:"请输入非负整数。",apply:"应用限制",applying:"应用中...",concurrencyValue:"并发数:{value}",rpmValue:"RPM:{value}",rpmUnlimitedValue:"RPM:不限制",confirm:`确定覆盖 {count} 个用户的限制吗?
4{fields}`,success:"已更新 {count} 个用户的限制",failed:"批量更新用户限制失败"},editUser:"编辑用户",deleteUser:"删除用户",deleteConfirmMessage:"确定要删除用户 '{email}' 吗?此操作无法撤销。",searchPlaceholder:"邮箱/用户名/备注/API Key 模糊搜索...",searchUsers:"邮箱/用户名/备注/API Key 模糊搜索",roleFilter:"角色筛选",allRoles:"全部角色",allStatus:"全部状态",allGroups:"全部分组",searchGroups:"搜索分组...",fuzzySearch:"模糊搜索",apiKeyGroupFilter:"API Key 分组",apiKeyGroupExclusive:"专用分ç
4»„",apiKeyGroupPublic:"公开分组",apiKeyGroupSubscription:"订阅分组",apiKeyGroupDisabled:"已禁用分组",authorizedGroupFilter:"授权分组",allAuthorizedGroups:"全部授权分组",searchAuthorizedGroups:"搜索授权分组...",allApiKeyGroups:"全部 API Key 分组",searchApiKeyGroups:"搜索 API Key 分组...",statusFilter:"状态筛选",allStatuses:"全部状态",admin:"管理员",user:"用户",disabled:"禁用",email:"邮箱",password:"密码",username:"用户名",notes:"备注",enterEmail:"请输入邮箱",enterPassword:"请输入密码",enterUsername:"请输入用户名(选填)",enterNotes:"请输入备注(仅管理员可见)",notesHint:"此备注仅对管理员可见",enterNewPassword:"请输入新密码(选填)",leaveEmptyToKeep:"留空则保持原密码不变",generatePassword:"生成随机密码",copyPassword:"复制密码",passwordCopied:"密码已复制",creating:"创建中...",updating:"更新中...",columns:{user:"用户",id:"ID",email:"邮箱",username:"用户名",notes:"备注",role:"角色",groups:"分组",subscriptions:"订阅分组",balance:"余额",balancePlatformQuota:"余额(平台配额)",usage:"用量",usageAnthropic:"用量 (Claude)",usageOpenAI:"用量 (OpenAI)",usageGemini:"用量 (Gemini)",usageAntigravity:"用量 (Antigravity)",concurrency:"并发数",status:"状态",lastActive:"最后活跃时间",lastUsed:"最后使用时间",created:"创建时间",actions:"操作"},today:"今日",total:"近30天",sortBy:"排序方式",sortCurrentPageOnly:"仅对本页数据排序",noSubscription:"暂无订阅",publicGroupCount:"+{count} 公开",exclusiveLabel:"专属",publicLabel:"公开",daysRemaining:"{days}天",expired:"已过期",disable:"禁用",enable:"启用",disableUser:"禁用用户",enableUser:"启用用户",viewApiKeys:"查看 API 密钥",groups:"分组",apiKeys:"API密钥",userApiKeys:"用户 API 密钥",noApiKeys:"此用户暂无 API 密钥",group:"分组",none:"无",groupChangedSuccess:"分组修改成功",groupChangedWithGrant:"分组修改成功,已自动为用户添加「{group}」分组权限",groupChangeFailed:"分组修改失败",noUsersYet:"暂无用户",createFirstUser:"创建您的第一个用户以开始使用系统",userCreated:"用户创建成功",userUpdated:"用户更新成功",userDeleted:"用户删除成功",userEnabled:"用户已启用",userDisabled:"用户已禁用",failedToLoad:"加载用户列表失败",failedToCreate:"创建用户失败",failedToUpdate:"更新用户失败",failedToDelete:"删除用户失败",failedToToggle:"更新用户状态失败",failedToLoadApiKeys:"加载用户 API 密钥失败",deleteConfirm:"确定要删除用户 '{email}' 吗?此操作无法撤销。",roles:{admin:"管理员",user:"用户"},form:{emailLabel:"邮箱",emailPlaceholder:"请输入邮箱",usernameLabel:"用户名",usernamePlaceholder:"请输入用户名(选填)",notesLabel:"备注",notesPlaceholder:"请输入备注(仅管理员可见)",notesHint:"此备注仅对管理员可见",passwordLabel:"密码",passwordPlaceholder:"请输入密码(留空则不修改)",roleLabel:"角色",selectRole:"选择角色",balanceLabel:"余额",concurrencyLabel:"并发数",statusLabel:"状态",selectStatus:"选择状态",rpmLimit:"每分钟请求数 (RPM)",concurrencyPlaceholder:"0 表示不限制",concurrencyHint:"该用户的最大并发请求数,0 = 不限制",rpmLimitPlaceholder:"0 表示不限制",rpmLimitHint:"该用户每分钟最大请求数,0 = 不限制;仅在所用分组未设置 rpm_limit 时作为兜底生效"},adjustBalance:"调整余额",adjustConcurrency:"调整并发数",adjustmentAmount:"调整金额",adjustmentAmountHint:"正数增加,负数减少",currentBalance:"当前余额",currentConcurrency:"当前并发数",saving:"保存中...",noUsers:"暂无用户",noUsersDescription:"创建您的第一个用户以开始使用系统。",userCreatedSuccess:"用户创建成功",userUpdatedSuccess:"用户更新成功",userDeletedSuccess:"用户删除成功",balanceAdjustedSuccess:"余额调整成功",concurrencyAdjustedSuccess:"并发数调整成功",failedToSave:"保存用户失败",failedToAdjust:"调整失败",emailRequired:"请输入邮箱",concurrencyNonNegative:"并发数不能为负数,0 表示不限制",amountRequired:"请输入有效金额",insufficientBalance:"余额不足",
4setAllowedGroups:"设置允许分组",allowedGroupsHint:"选择此用户可以使用的标准分组。订阅类型分组请在订阅管理中配置。",noStandardGroups:"暂无标准分组",allowAllGroups:"允许全部分组",allowAllGroupsHint:"用户可以使用任何非专属分组",allowedGroupsUpdated:"允许分组更新成功",failedToLoadGroups:"加载分组列表失败",failedToUpdateAllowedGroups:"更新允许分组失败",groupConfig:"用户分组配置",groupConfigHint:"为用户 {email} 配置专属分组倍率(覆盖分组默认倍率)",exclusiveGroups:"专属分组",publicGroups:"公开分组(默认可用)",restrictPublicGroups:"限制可访问的公开分组",restrictPublicGroupsHint:"开启后,该用户仅能使用下方勾选的公开分组;关闭则可使用全部公开分组。",publicGroupsRestricted:"公开分组(已限制)",defaultRate:"默认倍率",customRate:"专属倍率",useDefaultRate:"使用默认",customRatePlaceholder:"留空使用默认",groupConfigUpdated:"分组配置更新成功",replaceGroup:"替换分组",clickToReplace:"点击替换分组",replaceGroupTitle:"替换专属分组",replaceGroupHint:"选择新分组替换「{old}」,将自动迁移绑定的 Key 并更新分组权限",replaceGroupConfirm:"确认替换",replaceGroupSuccess:"分组替换成功,已迁移 {count} 个 Key",selectNewGroup:"请选择目标分组",noOtherGroups:"没有其他可用的专属分组",deposit:"充值",withdraw:"退款",depositAmount:"充值金额",withdrawAmount:"退款金额",withdrawAll:"全部",depositNotesPlaceholder:"例如:新用户注册奖励、活动充值、补偿充值等",withdrawNotesPlaceholder:"例如:服务问题退款、错误充值退回、账户注销退款等",notesOptional:"备注为可选项,有助于未来查账",amountHint:"请输入正数金额",newBalance:"操作后余额",depositing:"充值中...",withdrawing:"退款中...",confirmDeposit:"确认充值",confirmWithdraw:"确认退款",depositSuccess:"充值成功",withdrawSuccess:"退款成功",failedToDeposit:"充值失败",failedToWithdraw:"退款失败",useDepositWithdrawButtons:"请使用充值/退款按钮调整余额",balanceHistory:"充值记录",balanceHistoryTip:"点击查看充值记录",columnAlwaysVisible:"该列固定显示,不可隐藏",platformBreakdown:"按平台拆分",platformBreakdownEmpty:"暂无平台明细",platformBreakdownHint:"悬浮查看各平台用量",platformOther:"其他",balanceHistoryTitle:"用户充值和并发变动记录",noBalanceHistory:"暂无变动记录",allTypes:"全部类型",typeBalance:"余额(兑换码)",typeAffiliateBalance:"余额(返利转入)",typeAdminBalance:"余额(管理员调整)",typeConcurrency:"并发(兑换码)",typeAdminConcurrency:"并发(管理员调整)",typeSubscription:"订阅",failedToLoadBalanceHistory:"加载余额记录失败",createdAt:"创建时间",totalRecharged:"总充值",filterSettings:"筛选设置",columnSettings:"列设置",filterValue:"输入值",attributes:{title:"用户属性配置",description:"配置用户的自定义属性字段",configButton:"属性配置",addAttribute:"添加属性",editAttribute:"编辑属性",deleteAttribute:"删除属性",deleteConfirm:"确定要删除属性 '{name}' 吗?所有用户的该属性值将被删除。",noAttributes:"暂无自定义属性",noAttributesHint:"点击上方按钮添加自定义属性",key:"属性键",keyHint:"用于程序引用,只能包含字母、数字和下划线",name:"显示名称",nameHint:"在表单中显示的名称",type:"属性类型",fieldDescription:"描述",fieldDescriptionHint:"属性的说明文字",placeholder:"占位符",placeholderHint:"输入框的提示文字",required:"必填",enabled:"启用",options:"选项配置",optionsHint:"用于单选/多选类型",addOption:"添加选项",optionValue:"选项值",optionLabel:"显示文本",validation:"验证规则",minLength:"最小长度",maxLength:"最大长度",min:"最小值",max:"最大值",pattern:"正则表达式",patternMessage:"验证失败提示",types:{text:"单行文本",textarea:"多行文本",number:"数字",email:"邮箱",url:"链接",date:"日期",select:"单选",multi_select:"多选"}
4,created:"属性创建成功",updated:"属性更新成功",deleted:"属性删除成功",reordered:"属性排序更新成功",failedToLoad:"加载属性列表失败",failedToCreate:"创建属性失败",failedToUpdate:"更新属性失败",keyRequired:"请输入属性键",nameRequired:"请输入显示名称",optionsRequired:"请至少添加一个选项",failedToDelete:"删除属性失败",failedToReorder:"更新排序失败",keyExists:"属性键已存在",dragToReorder:"拖拽排序"},platformQuota:{menuItem:"平台限额",title:"平台限额",subtitle:"为用户 {email} 配置各上游平台的日 / 周 / 月用量上限",columns:{platform:"平台",daily:"日 (USD)",weekly:"周 (USD)",monthly:"月 (USD, 30天滚动)",usage:"当前用量"},placeholder:"不限制",save:"保存",saving:"保存中...",cancel:"取消",clearAll:"全部清空(取消所有限额)",clearAllConfirm:'确认清空全部平台的日 / 周 / 月限额?所有平台将变为"无限额",本地无法撤销,需要在保存前手动重填。',reset:{button:"重置该窗口",confirm:"确认重置该用户 {platform} 平台的 {window} 用量?此操作立即生效。",success:"已重置 {platform} {window} 用量",failed:"重置失败"},updateSuccess:"平台限额已更新",updateFailed:"保存失败",loadFailed:"加载失败",hint:"留空 = 不限制该窗口。",windowDaily:"日",windowWeekly:"周",windowMonthly:"月",cellNotConfigured:"未配置",cellColumnTooltip:"仅展示已设限额的平台",subscriptionWarning:"此用户有活跃订阅,平台限额仅在余额(标准)模式下生效,订阅模式请求不受此限额约束。",invalidNumber:"以下字段填写不是合法数字,请修正后再保存:{fields}"}},groups:{title:"分组管理",description:"管理 API 密钥分组和费率配置",searchGroups:"搜索分组...",createGroup:"创建分组",editGroup:"编辑分组",deleteGroup:"删除分组",duplicate:"复制",duplicating:"复制中",duplicateSuccess:"分组已复制为「{name}」,已默认停用,请确认配置后再启用",duplicateFailed:"复制分组失败",sortOrder:"排序",columnSettings:"列设置",sortOrderHint:"拖拽分组调整显示顺序,排在前面的分组会优先显示",sortOrderUpdated:"排序已更新",failedToUpdateSortOrder:"更新排序失败",deleteConfirm:"确定要删除分组 '{name}' 吗?所有关联的 API 密钥将不再属于任何分组。",deleteConfirmSubscription:"确定要删除订阅分组 '{name}' 吗?此操作会让所有绑定此订阅的用户的 API Key 失效,并删除所有相关的订阅记录。此操作无法撤销。",columns:{name:"名称",id:"ID",platform:"平台",rateMultiplier:"费率倍数",rpmOverride:"RPM 覆盖",rpmOverrideHint:"该用户在此分组的 RPM 上限;留空 = 使用分组默认;0 = 不限制",rateDefault:"默认",rpmDefault:"默认",exclusive:"独占",type:"类型",priority:"优先级",apiKeys:"API 密钥数",accounts:"账号数",capacity:"容量",usage:"用量",status:"状态",actions:"操作",billingType:"计费类型",userName:"用户名",userEmail:"邮箱",userNotes:"备注",userStatus:"状态"},usageToday:"今日",usageYesterday:"昨日",usageTotal:"累计",accountsAvailable:"可用:",accountsRateLimited:"限流:",accountsTotal:"总量:",accountsUnit:"个账号",form:{name:"名称",description:"描述",platform:"平台",rateMultiplier:"费率倍数",status:"状态",exclusive:"专属分组",nameLabel:"分组名称",namePlaceholder:"请输入分组名称",descriptionLabel:"描述",descriptionPlaceholder:"请输入描述(可选)",rateMultiplierLabel:"费率倍数",rateMultiplierHint:"1.0 = 标准费率,0.5 = 半价,2.0 = 双倍",rpmLimit:"每分钟请求数 (RPM)",rpmLimitPlaceholder:"0 表示不限制",rpmLimitHint:"每用户在本分组每分钟最大请求数,0 = 不限制;一旦设置即接管该用户的限流(覆盖用户级 rpm_limit)",maxReasoningEffort:"推理强度上限",maxReasoningEffortUnlimited:"不限制(跟随请求)",maxReasoningEffortHint:"仅限制客户端主动请求的 Anthropic/OpenAI 推理强度;Composite 分组按实际目标平台生效。不会为缺省请求主动开启推理。上限优先级高于推理强度映射。",maxReasoningEffortOverLimit:"超限访问控制",maxReasoningEffortOverLimitDowngrade:"超过上限时自动降档",maxReasoningEffortOverLimitDeny:"拒绝访问",maxReasoningEffortOverLimitHint:"设置上限后生效。自动降档会将超过上限的请求改写为上限值后转发;拒绝访问则直接返回错误。",reasoningEffortMappings:"推理强度映射",reasoningEffortMappingsHint:"类型和模型均可留空,表示匹配全部模型。同一类型和模型下可添加多条请求值映射,例如前缀 gpt 同时将 high、xhigh 转到 medium。转发值可选拒绝,命中对应请求值时直接返回错误。精确优先于前å
4Žç¼€ï¼Œæ›´é•¿å‰åŽç¼€ä¼˜å…ˆã€‚",addReasoningEffortMapping:"添加映射",addReasoningEffortPair:"添加请求值",removeReasoningEffortMapping:"删除映射",removeReasoningEffortPair:"删除请求值",reasoningEffortMatchType:"类型",reasoningEffortModel:"模型",reasoningEffortMatchExact:"精确",reasoningEffortMatchPrefix:"前缀",reasoningEffortMatchSuffix:"后缀",reasoningEffortMatchTypePlaceholder:"全匹配",reasoningEffortModelPlaceholder:"留空则全部 / gpt / gpt-5.4",reasoningEffortFrom:"请求值",reasoningEffortTo:"转发值",reasoningEffortToDeny:"拒绝",reasoningEffortFromPlaceholder:"请选择 A",reasoningEffortToPlaceholder:"请选择 B",fromRequired:"请选择请求值 A",toRequired:"请选择转发值 B",unsupportedFrom:"请求值不受当前平台支持",unsupportedTo:"转发值不受当前平台支持",unsupportedMatchType:"匹配类型仅支持精确、前缀或后缀",duplicateFrom:"同一模型范围内请求值不能重复",duplicateScope:"类型和模型组合不能重复",exclusiveLabel:"专属分组",exclusiveHint:"专属分组,可以手动指定给用户",platformLabel:"平台限制",platformPlaceholder:"选择平台(留空则不限制)",accountsLabel:"指定账号",accountsPlaceholder:"选择账号(留空则不限制)",priorityLabel:"优先级",priorityHint:"数值越小优先级越高,用于账号调度",statusLabel:"状态"},exclusiveObj:{yes:"是",no:"否"},exclusive:"专属",exclusiveHint:"专属分组,可以手动指定给特定用户",exclusiveTooltip:{title:"什么是专属分组?",description:"开启后,用户在创建 API Key 时将无法看到此分组。只有管理员手动将用户分配到此分组后,用户才能使用。",example:"使用场景:",exampleContent:"公开分组费率 0.8,您可以创建一个费率 0.7 的专属分组,手动分配给 VIP 用户,让他们享受更优惠的价格。"},rateMultiplierHint:"1.0 = 标准费率,0.5 = 半价,2.0 = 双倍",platforms:{all:"全部平台",anthropic:"Anthropic",openai:"OpenAI",gemini:"Gemini",antigravity:"Antigravity",grok:"Grok",kimi:"Kimi",zhipu:"Zhipu GLM",deepseek:"DeepSeek",composite:"Composite"},saving:"保存中...",noGroups:"暂无分组",noGroupsDescription:"创建分组以更好地管理 API 密钥和费率。",groupCreatedSuccess:"分组创建成功",groupUpdatedSuccess:"分组更新成功",groupDeletedSuccess:"分组删除成功",failedToLoad:"加载分组列表失败",failedToSave:"保存分组失败",failedToDelete:"删除分组失败",allPlatforms:"全部平台",allStatus:"全部状态",allGroups:"全部分组",exclusiveFilter:"专属",nonExclusive:"公开",public:"公开",rateAndAccounts:"{rate}x 费率 · {count} 个账号",accountsCount:"{count} 个账号",rateLabel:"倍率",accountFilters:{title:"账号过滤控制",oauthOnly:"仅允许 OAuth 账号",oauthOnlyEnabled:"已启用 — 排除 API Key 类型账号",privacySetOnly:"仅允许隐私保护已设置的账号",privacySetOnlyEnabled:"已启用 — Privacy 未设置的账号将被排除",disabled:"未启用"},enterGroupName:"请输入分组名称",optionalDescription:"可选描述",platformHint:"选择此分组关联的平台",platformNotEditable:"创建后不可更改平台",noGroupsYet:"暂无分组",createFirstGroup:"创建您的第一个分组来组织 API 密钥。",creating:"创建中...",updating:"更新中...",limitDay:"日",limitWeek:"周",limitMonth:"月",groupCreated:"分组创建成功",groupUpdated:"分组更新成功",groupDeleted:"分组删除成功",failedToCreate:"创建分组失败",failedToUpdate:"更新分组失败",nameRequired:"请输入分组名称",rateMultipliers:"专属倍率",rateMultipliersTitle:"分ç
4»„专属倍率管理",addUserRate:"添加用户专属倍率",rpmOverrides:"专属 RPM",rpmOverridesTitle:"分组专属 RPM 管理",addUserRpm:"添加用户专属 RPM",noRpmOverrides:"暂无用户设置了专属 RPM",rpmSaved:"专属 RPM 已保存",groupRpmDefault:"分组默认 RPM",searchUserPlaceholder:"搜索用户邮箱...",noRateMultipliers:"暂无用户设置了专属倍率",rateUpdated:"专属倍率已更新",rateDeleted:"专属倍率已删除",rateAdded:"专属倍率已添加",clearAll:"全部清空",confirmClearAll:"确定要清空该分组所有用户的专属倍率设置吗?此操作不可撤销。",rateCleared:"已清空所有专属倍率",batchAdjust:"批量调整倍率",multiplierFactor:"乘数",applyMultiplier:"应用",rateAdjusted:"倍率已批量调整",rateSaved:"专属倍率已保存",finalRate:"最终倍率",unsavedChanges:"有未保存的修改",revertChanges:"撤销修改",userInfo:"用户信息",subscription:{title:"订阅设置",type:"计费类型",typeHint:"标准计费从用户余额扣除。订阅模式使用配额限制。",typeNotEditable:"分组创建后无法修改计费类型。",standard:"标准(余额)",subscription:"订阅(配额)",dailyLimit:"每日限额(USD)",weeklyLimit:"每周限额(USD)",monthlyLimit:"每月限额(USD)",defaultValidityDays:"默认有效期(天)",validityHint:"分配给用户时订阅的有效天数",noLimit:"无限制"},imagePricing:{title:"图片生成计费",description:"配置图片生成能力和图片基础单价,留空则使用默认价格",allowImageGeneration:"允许当前分组生图",allowBatchImageGeneration:"允许当前分组批量生图",independentMultiplier:"生图倍率独立",imageMultiplier:"生图独立倍率",batchDiscountMultiplier:"批量生图折扣倍率",batchHoldMultiplier:"批量冻结价格比例",batchSectionHint:"批量生图仅影响批量任务:结算价格会叠加批量折扣倍率,提交时冻结金额按普通生图原价 × 批量冻结价格比例计算。参考图也会产生上游输入 token 消耗,建议批量生图折扣倍率设置大于 0.5。",batchDisabledHint:"请先开启当前分组生图,才能开启批量生图。",batchGeminiOnlyHint:"批量生图当前仅支持 Gemini 分组。",modeHint:"默认关闭独立倍率时,图片费用 = 图片价格 × 当前分组有效倍率;开启独立倍率后,图片费用 = 图片价格 × 生图独立倍率。",finalPricePreview:"最终单张价格预览",notConfigured:"未配置"},videoPricing:{title:"视频生成计费",description:"配置 Grok 视频生成的每秒单价(USD/秒),留空则使用默认每秒价(grok-imagine-video:480p $0.05/s、720p $0.07/s;video-1.5:480p $0.08/s、720p $0.14/s、1080p $0.25/s)",modelOverridesTitle:"按模型覆盖视频价格",modelOverridesDescription:"已填写的单元格会覆盖该模型族的平面分辨率价格。video-1.5 的 preview 与 legacy 别名共用同一模型族;留空则回退到平面分辨率价格。",independentMultiplier:"视频倍率独立",videoMultiplier:"视频独立倍率",modeHint:"视频按秒计费:费用 = 每秒价格 × 时长(1-15 秒,未指定默认 8 秒)。默认叠加当前分组有效倍率;开启独立倍率后改用视频独立倍率。",finalPricePreview:"最终每秒价格预览",notConfigured:"未配置"},explicitPricing:{title:"Grok 搜索与 Voice 定价",description:"分组级 web_search(每千次)与 Voice realtime / TTS / STT 单价(USD)。留空表示未配置。",searchPricePer1k:"搜索每千次价格(USD)",pricePlaceholder:"可选"},modelPricing:{title:"分组逐模型定价",description:"匹配模型后覆盖渠道和内置价格。长上下文阶梯沿用官方/预设价卡,无需再手填区间。音频可用按次层级配置 realtime、tts、stt。",longContext:"启用长上下文阶梯定价",longContextHint:"勾选后按渠道区间或官方预设阶梯计费;关闭后默认按第一档,账号显式开启时除外。",add:"添加模型价格"},voicePricing:{title:"Grok Voice 定价",description:"分组级 Voice realtime / TTS / STT 单价(USD)。留空表示未配置。",audioRealtimePerMin:"Realtime 每分钟价格(USD)",audioTtsPerMillionChars:"TTS 每百万字符价格(USD)",audioSttPerHour:"STT 每小时价格(USD)",pricePlaceholder:"可选"},webSearchPricing:{title:"Codex 网页搜索计费",pricePerCall:"搜索单次价格(USD/次)",pricePerCallHint:"留空使用默认价 $0.01/次(官方定价 $10/1000 次);填 0 表示免费。实际扣费会叠加分组费率倍数。",finalPricePreview:"应用当前倍率后的单次价格:{price}"},peakRate:{enable:"启用高峰倍率",peakStart:"高峰开始",peakEnd:"高峰结束",peakMultiplier:"高峰倍率",multiplierHint:"作用于 token 
4计费倍率;token 计费的图片 token 同样适用,0 表示高峰 token 请求按 0 倍计费"},profitControl:{enable:"启用利润控制",enabledHint:'调度时仅允许"账号倍率 ≤ 请求实际下游倍率 ×(1 − 最低毛利率 − 安全缓冲)"的账号进入候选池;账号倍率可手工维护或由探测同步,既有排序、粘性与熔断在合格账号间照常工作。图片/视频调度暂不参与。',disabledHint:"关闭后调度不做利润过滤,账号倍率高于下游倍率的账号也会被选中,可能产生亏损请求。",minMargin:"最低毛利率(%)",minMarginHint:"百分比输入,如 30 表示 30%;后端按小数存储",safetyBuffer:"安全缓冲(%)",safetyBufferHint:"与最低毛利率相加后从下游倍率中扣除,默认 0",marginRangeError:"最低毛利率应在 0 到 99.99 之间",bufferRangeError:"安全缓冲应在 0 到 99.99 之间",sumTooHigh:"最低毛利率与安全缓冲之和必须小于 100%,否则将排除全部账号"},modelAllowlist:{title:"模型白名单",hint:"开启后,不在白名单中的模型会被拒绝(404 model_not_found),模型列表接口也只展示白名单内的模型。条目支持精确模型 ID 与末尾 * 通配。注意:Claude Code 会用 haiku 系小模型做标题/摘要等探测,/messages/count_tokens 同样受白名单控制,请一并勾选所需的小模型。",loading:"正在加载候选模型...",empty:"暂无候选模型,可在下方手工添加条目",selectedSummary:"已选 {selected} / {total}",selectAll:"全选",invertSelection:"反选",wildcardTag:"通配",customPlaceholder:"自定义条目,如 claude-* 或 gpt-5.5-codex",addCustom:"添加",emptySelectionError:"模型白名单已开启,请至少选择或添加一个模型条目",errors:{empty:"请输入模型条目",invalidWildcard:"通配符 * 只能出现在条目末尾",duplicate:"该条目已存在"}},codexModelsManifest:{title:"固定账号获取模型列表",hint:"开启后,普通模型列表与 Codex Model Manifest 均优先从选定账号获取并合并,再应用账号映射和分组列表过滤;限流/过载中的选定账号仍会被使用。",enable:"使用特定账号获取模型列表",enabledHint:"账号来源限定为当前分组内的 OpenAI 账号,最多选择 10 个。",disabledHint:"未启用:普通列表使用本地映射或默认模型;Codex 优先使用本地目录,无本地目录时由调度器选账。",accounts:"选定账号",searchPlaceholder:"搜索账号(当前分组内 OpenAI 账号)",searchEmpty:"未找到匹配账号",fallback:"选定账号全部不可用时回退调度器",fallbackHint:"关闭时返回 503 / 上游错误;开启时回退到现有调度器选账路径。",selectAtLeastOne:"开启固定账号后至少选择一个账号"},compositeRoutes:{action:"路由",title:"Composite 路由",titleWithGroup:"Composite 路由:{name}",routes:"已保存路由",empty:"暂无 Composite 路由",publicModel:"公开模型",target:"目标",scope:"范围",priority:"优先级",addRoute:"添加路由",editRoute:"编辑路由",matchType:"匹配方式",endpoint:"端点",targetPlatform:"目标平台",upstreamModel:"上游模型",upstreamModelHint:"留空表示透传原始请求模型:前缀匹配下每个命中模型各自原样转发(如 deepseek-v4-flash、deepseek-v4-pro 分别转发);填写则所有命中请求都固定转发该模型。",notes:"备注",enabled:"启用",preview:"预览",matched:"已匹配",notMatched:"未匹配",publicModelRequired:"请输入公开模型",routeCreated:"Composite 路由已创建",routeUpdated:"Composite 路由已更新",routeDeleted:"Composite 路由已删除",failedToLoad:"加载 Composite 路由失败",failedToSave:"保存 Composite 路由失败",failedToDelete:"删除 Composite 路由失败",failedToPreview:"预览 Composite 路由失败",deleteConfirm:"确定删除此 Composite 路由?",endpoints:{any:"任意",messages:"Messages",countTokens:"Count Tokens",responses:"Responses",chatCompletions:"Chat Completions",embeddings:"Embeddings",images:"Images",gemini:"Gemini 原生"},match:{exact:"精确",prefix:"前缀"},sources:{route:"路由",detector:"内置识别"}},claudeCode:{title:"Claude Code 客户端限制",tooltip:"启用后,此分组仅允许 Claude Code 官方客户端访问。非 Claude Code 请求将被拒绝或降级到指定分组。",enabled:"仅限 Claude Code",disabled:"允许所有客户端",fallbackGroup:"降级分组",fallbackHint:"非 Claude Code 请求将使用此分组,留空则直接拒绝",noFallback:"不降级(直接拒绝)"},openaiMessages:{title:"OpenAI Messages 调度配置",allowDispatch:"允许 /v1/messages 调度",allowDispatchHint:"启用后,此 OpenAI 分组的 API Key 可以通过 /v1/messages 端点调度请求",familyMappingTitle:"系列默认映射",familyMappingHint:"当请求命中 Opus、Sonnet、Haiku 系列时,会优先使用这里配置的目标模型。",opusModel:"Opus 映射模型",opusModelPlaceholder:"ä¾
4‹å¦‚: gpt-5.4",sonnetModel:"Sonnet 映射模型",sonnetModelPlaceholder:"例如: gpt-5.3-codex",haikuModel:"Haiku 映射模型",haikuModelPlaceholder:"例如: gpt-5.4-mini",exactMappingTitle:"精确模型覆盖",exactMappingHint:"精确 Claude 模型覆盖优先级高于系列默认映射,可将某个具体 Claude 模型单独映射到不同的目标模型。",noExactMappings:"暂无精确模型覆盖规则",addExactMapping:"添加精确映射",claudeModel:"Claude 模型",claudeModelPlaceholder:"例如: claude-sonnet-4-5-20250929",targetModel:"目标模型",targetModelPlaceholder:"例如: gpt-5.4",removeExactMapping:"删除精确映射"},openaiLive:{title:"OpenAI Live",allow:"允许访问 Live",hint:"启用后,此 OpenAI 分组的 API Key 可以创建并控制 Live 语音会话。默认关闭。运行 Sub2API 的服务端必须是 Apple Silicon Mac,并安装官方 ChatGPT App;客户端平台不受限制。",unsupportedTitle:"当前服务端不支持 Live",unsupportedMessage:"当前 Sub2API 服务端无法生成 Live 所需的设备证明,即使开启也不能使用。是否仍然开启?",enableAnyway:"仍然开启"},openaiFast:{title:"OpenAI Fast 模式",force:"强制使用 Fast(priority)",hint:"开启后,此分组的 OpenAI 请求会强制写入 service_tier=priority;全局 Fast/Flex 策略仍可过滤或拦截。保存后新请求立即生效,已建立的 WebSocket 会话需重连。",free:"免费 Fast",freeHint:"该分组的 Fast 请求仍使用 priority 档位,但客户实际费用按同一请求的 Standard 价格计算。"},invalidRequestFallback:{title:"无效请求兜底分组",hint:"仅当上游明确返回 prompt too long 时才会触发,留空表示不兜底",noFallback:"不兜底"},copyAccounts:{title:"从分组复制账号",tooltip:"选择一个或多个相同平台的分组,创建后会自动将这些分组的所有账号绑定到新分组(去重)。",tooltipEdit:"选择一个或多个相同平台的分组,保存后当前分组的账号会被替换为这些分组的账号(去重)。",selectPlaceholder:"选择分组以复制其账号...",hint:"可选多个分组,账号会自动去重",hintEdit:"⚠️ 注意:这会替换当前分组的所有账号绑定"},modelRouting:{title:"模型路由配置",tooltip:"配置特定模型请求优先路由到指定账号。支持通配符匹配,如 claude-opus-* 匹配所有 opus 模型。",enabled:"已启用",disabled:"已禁用",disabledHint:"启用后,配置的路由规则才会生效",addRule:"添加路由规则",modelPattern:"模型模式",modelPatternPlaceholder:"claude-opus-*",modelPatternHint:"支持 * 通配符,如 claude-opus-* 匹配所有 opus 模型",accounts:"优先账号",selectAccounts:"选择账号",noAccounts:"此分组暂无账号",loadingAccounts:"加载账号中...",removeRule:"删除规则",noRules:"暂无路由规则",noRulesHint:"添加路由规则以将特定模型请求优先路由到指定账号",searchAccountPlaceholder:"搜索账号...",accountsHint:"选择此模型模式优先使用的账号"},claudeMaxSimulation:{title:"Claude Max 用量模拟",tooltip:"启用后,对于没有上游缓存写入用量的 Claude 模型,系统会确定性地将 token 映射为少量输入加 1h 缓存创建,同时保持总 token 不变。",enabled:"已启用(模拟 1h 缓存)",disabled:"已禁用",hint:"仅调整用量计费日志中的 token 类别。不会持久化每个请求的映射状态。"},mcpXml:{title:"MCP XML 协议注入",tooltip:"启用后,当请求包含 MCP 工具时,会在 system prompt 中注入 XML 格式调用协议提示词。关闭此选项可避免对某些客户端造成干扰。",enabled:"已启用",disabled:"已禁用"},supportedScopes:{title:"支持的模型系列",tooltip:"选择此分组支持的模型系列。未勾选的系列将不会被路由到此分组。",claude:"Claude",geminiText:"Gemini Text",geminiImage:"Gemini Image",hint:"至少选择一个模型系列"}}},n={availableChannels:{title:"可用渠道",description:"按渠道聚合查看关联分组与支持模型(已展开通配符)",searchPlaceholder:"搜索渠道或模型...",columns:{name:"渠道名",status:"状态",billingSource:"计费模型来源",groups:"关联分组",supportedModels:"支持模型"},empty:"暂无数据",noGroups:"未关联分组",noModels:"未配置模型映射",noPricing:"未配置定价",statusActive:"启用",statusDisabled:"停用",billingSource:{requested:"请求模型",upstream:"上游模型",channel_mapped:"映射后模型"},pricing:{billingMode:"计费模式",billingModeToken:"按 Token",billingModePerRequest:"按次",billingModeImage:"按图片",billingModeVideo:"按视频",inputPrice:"输入",outputPrice:"输出",cacheWritePrice:"缓存写入",cacheWrite5mPrice:"缓存写入(5m)",cacheWrite1hPrice:"缓存写入(1h)",cacheReadPrice:"缓存读取",imageOutputPrice:"图片输出",perRequestPrice:"每次请求",intervals:"阶梯定价",unitPerMillion:"/ 1M token",unitPerRequest:"/ 次"}},channels:{title:"渠道管理",description:"管理渠道和自定义模型定价",searchChannels:"搜索渠道...",createChannel:"创建渠道",editChannel:"编辑渠道",deleteChannel:"删除渠道",statusActive:"启用",statusDisabled:"停用",allStatus:"全部状态",groupsUnit:"个分组",pricingUnit:"条定价",noChannelsYet:"暂无渠道",createFirstChannel:"创建第一个渠道来管理模型定价",loadError:"加载渠道列表失败",createSuccess:"渠道创建成功",updateSuccess:"渠道更新成功",deleteSuccess:"渠道删除成功",createError:"创建渠道失败",updateError:"更新渠道失败",deleteError:"删除渠道失败",nameRequired:"请输入渠道名称",noGroupsSelected:"请为 {platform} 至少选择一个分组",emptyModelsInPricing:"请为 {platform} 定价规则至少添加一个模型",duplicateModels:"模型「{0}」在多个定价条目中重复",modelConflict:"模型模式 '{model1}' 和 '{model2}' 冲突:匹配范围重叠。模型名称按大小写不敏感匹配,已有条目已覆盖其所有大小写变体,无需重复添加。",mappingConflict:"模型映射源 '{model1}' 和 '{model2}' 冲突:匹配范围重叠。源模式按大小写不敏感匹配,已有条目已覆盖其所有大小写变体。",intervalValidation:{negativeMin:"区间 #{index}:最小 token 数({value})不能为负数",maxPositive:"区间 #{index}:最大 token 数({value})必须大于 0",maxGreaterThanMin:"区间 #{index}:最大 token 数({max})必须大于最小 token 数({min})",negativePrice:"区间 #{index}:{field}不能为负数",multiplierPositive:"区间 #{index}:{field}必须大于 0",unboundedLast:"区间 #{index}:无上限区间(最大 token 数为空)必须放在最后",overlap:"区间 #{previousIndex} 和 #{currentIndex} 重叠:前一个上界({previousMax})大于当前下界({currentMin})",price:{inputPrice:"输入价格",outputPrice:"输出价格",cacheWritePrice:"缓存写入价格",cacheWrite1hPrice:"1h 缓存写入价格",cacheReadPrice:"缓存读取价格",perRequestPrice:"单次价格"}},timePricingValidation:{timezone:"请选择有效的 IANA 时区",format:"开始时间和结束时间必须使用 HH:mm:ss 格式",range:"开始时间必须早于结束时间;跨午夜请拆分为两个时间段",overlap:"时间段不能重叠",multiplier:"倍率必须大于 0,且最多保留两位小数"},deleteConfirm:"确定要删除渠道「{name}」吗?此操作不可撤销。",columns:{name:"名称",description:"描述",status:"状态",groups:"分组",pricing:"定价",createdAt:"创建时间",actions:"操作"},billingMode:{token:"Token",perRequest:"按次",image:"图片(按次)",video:"视频(按秒)"},form:{name:"名称",namePlaceholder:"输入渠道名称",description:"描述",descriptionPlaceholder:"可选描述",status:"状态",groups:"关联分组",noGroupsAvailable:"暂无可用分组",inOtherChannel:"已属于「{name}」",modelPricing:"模型定价",models:"模型列表",modelsPlaceholder:"输入完整模型名后按回车添加",modelInputHint:"按回车添加,支持粘贴批量导入",billingMode:"计费模式",defaultPrices:"默认价格(未命中区间时使用)",inputPrice:"输入",outputPrice:"输出",cacheWritePrice:"缓存写入",cacheWrite5mPrice:"缓存写入(5m)",cacheWrite1hPrice:"缓存写入(1h)",cacheReadPrice:"缓存读取",cacheWritePriceShort:"缓存写",cacheWrite5mPriceShort:"缓存写 5m",cacheWrite1hPriceShort:"缓存写 1h",cacheReadPriceShort:"缓存读",imageInputPrice:"图片输入",imageTokenPrice:"图片输出",imageOutputPrice:"图片输出价格",pricePlaceholder:"默认",fastMultiplier:"Fast 倍率",flexMultiplier:"Flex 倍率",maxReasoningEffortMultiplier:"Max 推理倍率",fable51DefaultMaxReasoningMultiplier:"默认 3",multiplierPlaceholder:"未配置",multiplierPositive:"Fast/Flex/Max 推理倍率必须大于 0",inputMultiplier:"输入倍率",outputMultiplier:"输出倍率",cacheWriteMultiplier:"缓存写倍率",cacheReadMultiplier:"缓存读倍率",intervals:"上下文区间定价(可选)",timePricing:"时间段
4定价(可选)",timezone:"时区",timePricingDayScope:"生效日",timePricingEveryDay:"每日生效(周一至周日,含周末)",timePricingWeekdaysOnly:"仅工作日生效(周一至周五)",addTimePeriod:"添加时间段",startTime:"开始时间",endTime:"结束时间",multiplier:"倍率",removeTimePeriod:"删除时间段",minTokens:"最小",maxTokens:"最大",inclusive:"(含)",addInterval:"添加区间",requestTiers:"按次计费层级",imageTiers:"图片计费层级(按次)",videoTiers:"视频分辨率层级(按秒)",addTier:"添加层级",noTiersYet:"暂无层级,点击添加配置按次计费价格",noPricingRules:'暂无定价规则,点击"添加"创建',perRequestPrice:"单次价格",perRequestPriceRequired:"按次/图片计费模式必须设置默认价格或至少一个计费层级",tierLabel:"层级",resolution:"分辨率",modelMapping:"模型映射",modelMappingHint:"将请求中的模型名映射为实际模型名。在账号级别映射之前执行。",noMappingRules:'暂无映射规则,点击"添加"创建',mappingSource:"源模型",mappingTarget:"目标模型",billingModelSource:"计费基准",billingModelSourceChannelMapped:"以渠道映射后的模型计费",billingModelSourceRequested:"以请求模型计费",billingModelSourceUpstream:"以最终模型计费",billingModelSourceResponse:"按上游响应模型计费",billingModelSourceHint:"控制使用哪个模型名称进行定价查找",selectedCount:"已选 {count} 个",searchGroups:"搜索分组...",noGroupsMatch:"没有匹配的分组",restrictModels:"限制模型",restrictModelsHint:"开启后,仅允许模型定价列表中的模型。不在列表中的模型请求将被拒绝。",defaultPerRequestPrice:"默认单次价格(未命中层级时使用)",defaultImagePrice:"默认图片价格(未命中层级时使用)",defaultVideoPrice:"默认视频每秒价格(未命中层级时使用)",platformConfig:"平台配置",webSearchEmulation:"Web Search 模拟",webSearchEmulationHint:"⚠️ 开启后该渠道下所有 Anthropic 分组的账号将自动拦截 web_search 请求,请谨慎操作",webSearchEmulationGlobalDisabled:"请先在系统设置 → 网关 → Web Search 模拟中启用全局开关",codexImageGenerationBridge:"Codex 图片生成桥接",codexImageGenerationBridgeHint:"开启后,OpenAI 分组仅会为非 Responses Lite 的 Codex /responses 文本请求自动注入 hosted image_generation 工具。桥接不会为 Responses Lite 注入工具;本地 image_gen 的处理由客户端和账号策略决定。仅在路由账号支持图片生成时开启。",bedrockCCCompat:"Bedrock CC 兼容",bedrockCCCompatHint:"⚠️ 开启后,该渠道下 Bedrock 账号的请求将进行 Claude Code 兼容处理(thinking 类型转换、tool_use ID 清理)",basicSettings:"基础设置",addPlatform:"添加平台",noPlatforms:'点击"添加平台"开始配置渠道',mappingCount:"条映射",pricingEntry:"定价配置",noModels:"未添加模型",applyPricingToAccountStats:"应用模型定价到账号统计",applyPricingToAccountStatsDesc:"启用后,未被自定义规则匹配的请求将使用模型定价文件中的标准价格计算账号统计费用",accountStatsPricingRules:"自定义账号统计定价规则",addRule:"添加规则",noRulesConfigured:"未配置自定义规则,将使用上方的模型定价。",ruleName:"规则名称(可选)",ruleGroups:"分组",ruleAccounts:"账号",searchAccountPlaceholder:"搜索账号...",ruleAccountsHint:"留空表示匹配所有账号",ruleModelPricing:"模型定价",noGroupsInChannel:"上方平台标签页中未选择分组",unnamed:"未命名",syncLatestModels:"同步最新模型",syncingModels:"同步中...",syncModelsSuccess:"已同步 {count} 个新模型",syncModelsAlreadyUpToDate:"模型列表已是最新",syncModelsError:"同步模型失败"}},riskControl:{title:"风控中心",description:"配置内容审计策略并查看审核记录",loadFailed:"加载风控中心失败",saveFailed:"保存内容审计配置失败",logsFailed:"加载审核记录失败",saved:"内容审计配置已保存",refresh:"刷新",config:"内容审计配置",configHint:"调用 OpenAI Moderations 进行请求内容评分,命中阈值后按模式处理。",openSettings:"内容审计设置",settingsTitle:"内容审计设置",refreshStatus:"刷新状态",records:"审核记录",recordsHint:"展示命中、æ
4‹¦æˆªã€å¼‚常和已采样记录。",saveConfig:"保存内容审计配置",statusFailed:"加载运行状态失败",enabled:"开启内容审计",enabledHint:"关闭后即使风控中心菜单启用,也不会审核网关请求。",mode:"全局模式",modePreBlock:"前置拦截",modePreBlockDesc:"每次请求先同步审核最新用户输入,命中后立即拒绝请求。",modeObserve:"仅观察",modeObserveDesc:"请求直接放行,最新用户输入进入异步审核队列;命中后只记录、通知和按规则累计。",modeOff:"关闭",modeOffDesc:"不执行内容审计,也不会写入审核记录。",baseUrl:"OpenAI Base URL",model:"模型名",apiKey:"OpenAI API Key",apiKeys:"OpenAI API Keys",apiKeyCount:"{count} 个 Key",apiKeyPlaceholder:"请输入 API Key",apiKeysPlaceholder:"新增 API Key,每行一个;保存后会追加到已保存 Key",apiKeysPlaceholderReplace:"覆盖保存 API Key,每行一个;保存后会替换全部已保存 Key",apiKeysPlaceholderKeep:"新增 API Key,每行一个;保存后会追加到已保存 Key",apiKeysHint:"当前已保存 {count} 个 Key;输入区只用于新增,保存时会增量追加并自动去重。",apiKeysWriteMode:"写入方式",apiKeysModeAppend:"增量添加",apiKeysModeReplace:"覆盖保存",apiKeysModeAppendHint:"默认模式:保存时追加输入区 Key,并保留已保存 Key。",apiKeysModeReplaceHint:"覆盖模式:保存时用输入区 Key 替换全部已保存 Key。",apiKeysReplaceWarning:"覆盖模式",apiKeysReplaceNoInput:"覆盖保存至少需要输入 1 个 API Key",apiKeyPlaceholderKeep:"留空保持不变",apiKeyWillClear:"保存后清除已配置 Key",apiKeyConfigured:"已配置",apiKeyTemporary:"待保存",apiKeyPendingDelete:"待删除",apiKeyPendingDeleteCount:"待删除 {count} 个 Key",deleteApiKey:"删除这个 Key",undoDeleteApiKey:"撤销删除",inputApiKeyCount:"输入区 {count} 个 Key",storedApiKeyCount:"已保存 {count} 个 Key",testInputApiKeys:"测试输入区 Key",testStoredApiKeys:"测试已保存 Key",testContentWithStoredApiKey:"用已保存 Key 试跑内容",testingApiKeys:"测试中",apiKeyTestNoInput:"请先输入需要测试的 OpenAI API Key",apiKeyTestDone:"Key 测试完成,共 {count} 个",apiKeyTestFailed:"测试 OpenAI API Key 失败",apiKeyHealth:"Key 可用状态",apiKeyFreezeRule:"400 不冻结;401/403 冻结 10 分钟;429/529 冻结 1 分钟;其他 HTTP 错误冻结 10 秒。",apiKeyRows:"{count} 个 Key",apiKeyRowsCollapsed:"已隐藏 {count} 个 Key",apiKeyRowsExpanded:"正在显示全部 {count} 个 Key",expandApiKeyRows:"展开",collapseApiKeyRows:"收起",apiKeyHealthEmpty:"暂无 Key 状态",apiKeyHealthEmptyHint:"保存 Key 或测试输入区 Key 后会显示可用性。",apiKeyStatusOk:"可用",apiKeyStatusError:"异常",apiKeyStatusFrozen:"冻结",apiKeyStatusUnknown:"未测试",apiKeyFailureCount:"失败 {count} 次",apiKeyLatency:"{ms} ms",apiKeyHTTPStatus:"HTTP {status}",apiKeyFrozenUntil:"冻结至 {time}",apiKeyLastChecked:"检查于 {time}",apiKeyNotTested:"尚未测试",auditTestInput:"审计试跑输入",auditTestInputHint:"可填写提示词并上传或粘贴图片;图片以 base64 发送,不会保存文件。",auditTestPromptPlaceholder:"输入要测试的用户提示词;留空时仅测试 Key 可用性。",auditTestImages:"测试图片",auditTestImagesHint:"支持上传、拖拽或粘贴图片,最多 1 张,每张不超过 8MB。",addAuditTestImage:"添加图片",clearAuditTest:"清空试跑",auditTestImageLimit:"最多只能添加 {count} 张测试图片",auditTestImageTooLarge:"单张测试图片不能超过 8MB",auditTestImageReadFailed:"读取测试图片失败",auditTestResult:"审计试跑结果",auditTestHighest:"最高分类 {category},分数 {score}",auditTestComposite:"综合评分",auditTestFlagged:"命中阈值",auditTestPassed:"未命中",notConfigured:"未配置",clearApiKey:"清除已保存 Key",keepApiKey:"保留已保存 Key",timeoutMs:"HTTP 超时 (ms)",retryCount:"失败重试次数",sampleRate:"采样率",proxy:"代理服务器",proxyHint:"审计请求经指定代理(IP管理-代理服务器)发出,适用于出口 IP 不受 OpenAI 支持的部署;默认直连。",recordNonHits:"记录未命中输入",recordNonHitsHint:"开启后会记录抽样但未命中的请求摘要,摘要会先脱敏再入库。",preHashCheck:"启用前置哈希比对",preHashCheckHint:"异步审核命中过的输入哈希会被前置拦截;该拦截不发送邮件,也不累计封禁次数。",flaggedHashCount:"当前哈希集合数量:{count} 个",flaggedHashHint:"哈希永久保存在 Redis 集合中;可粘贴完整 64 位哈希删除误拦截项,或一键清空全部风险哈希。",flaggedHashPlaceholder:"粘贴完整 64 位输入哈希",deleteFlaggedHash:"删除指定哈希",clearFlaggedHashes:"一键清空",clearFlaggedHashesConfirm:"确定要清空全部风险输入哈希吗?此操作不会删除审核记录,但会取消所有历史哈希拦截。",flaggedHashDeleted:"风险哈希已删除",flaggedHashNotFound:"该风险哈希不存在",flaggedHashDeleteFailed:"删除风险哈希失败",flaggedHashesCleared:"已清空 {count} 个风险哈希",flaggedHashesClearFailed:"清空风险哈希失败",workerCount:"Worker 数",queueSize:"异步队列大小",blockStatus:"拦截 HTTP 状态码",blockMessage:"自定义拦截提示",defaultBlockMessage:"内容审计命中风险规则,请调整输入后重试",emailOnHit:"命中后发送邮件",emailOnHitHint:"开启后每次达到阈值都会向用户发送风控提醒邮件;自动封禁通知始终发送。",autoBan:"自动封禁用户",autoBanHint:"命中次数达到阈值后将禁用用户账号、刷新认证缓存并发送封禁通知邮件。",cyberPolicyExcludeBan:"cyber_policy 不计入封号次数",cyberPolicyExcludeBanHint:"开启后,cyber_policy 拦截不再计入自动封号的违规次数:当次不判定封号,历史累计亦排除。风控日志与通知邮件照常。",violationNotCounted:"未计入封号",banThreshold:"封禁触发次数",violationWindowHours:"累计窗口(小时)",hitRetentionDays:"命中记录保留(
4天)",nonHitRetentionDays:"未命中记录保留(天,最多 3 天)",violationCount:"{count} 次",emailSent:"已发邮件",emailNotSent:"未发邮件",autoBanned:"已封禁",unbanUser:"解封",unbanSuccess:"用户已解封",unbanFailed:"解封用户失败",inputDetailTitle:"输入摘要详情",inputDetailContent:"完整内容",matchedKeyword:"命中关键词",queueDelay:"排队 {ms} ms",allGroups:"全部分组",allGroupsHint:"当前审计全部分组",selectedGroupsHint:"当前审计指定分组",groupScope:"审计分组",groupScopeHint:"开启右侧开关表示全部分组,关闭后选择指定分组。",selectedGroups:"指定分组",searchGroups:"搜索分组名称或平台",noGroups:"暂无可用分组",modelFilter:"模型范围",modelFilterHint:"按客户端请求的模型名决定是否执行内容审计,模型映射后仍以请求模型判断。",modelFilterAll:"所有模型",modelFilterAllDesc:"所有模型请求都会进入内容审计。",modelFilterInclude:"仅指定模型",modelFilterIncludeDesc:"只有列表中的模型会执行内容审计。",modelFilterExclude:"排除指定模型",modelFilterExcludeDesc:"列表中的模型跳过内容审计,其余模型执行审计。",modelFilterModels:"模型列表",modelFilterModelCount:"已配置 {count} 个模型",modelFilterModelsRequired:"当前模型范围至少需要配置 1 个模型",modelFilterAllSummary:"全部模型生效",modelFilterIncludeSummary:"仅 {count} 个模型生效",modelFilterExcludeSummary:"排除 {count} 个模型",emptyLogs:"暂无审核记录",preBlockSyncStatus:"前置拦截同步状态",preBlockSyncHint:"同步审核链路的实时计数,不包含异步写记录任务。",preBlockActive:"同步处理中",preBlockActiveHint:"当前正在审核",preBlockChecked:"已检查",preBlockCheckedHint:"进入前置拦截链路",preBlockAllowed:"已放行",preBlockAllowedHint:"未触发拦截",preBlockBlocked:"已拦截",preBlockBlockedHint:"命中后拒绝请求",preBlockErrors:"审核异常",preBlockErrorsHint:"失败或无可用 Key",preBlockAvgLatency:"平均耗时",preBlockAvgLatencyHint:"同步链路平均值",preBlockAPIKeyLoad:"审核 Key 负载",preBlockAPIKeyLoadHint:"同步前置拦截直接轮询可用审核 Key。",preBlockAPIKeyLoadSummary:"同步并发 {active} / 可用 Key {available},累计 {total} 次,worker:{workerActive} / {workerTotal}",preBlockAPIKeyTotals:"累计 {total},成功 {success},异常 {errors}",preBlockAPIKeyLoadEmpty:"暂无审核 Key 负载数据",preBlockKeyActiveShort:"并发",preBlockKeyTotalShort:"累计",preBlockKeyAvgShort:"平均",preBlockKeyLastShort:"最近",workerStatus:"Worker 运行状态",workerStatusHint:"异步审计任务和前置拦截记录任务的队列与 Worker 池状态,不包含同步前置拦截审核请求。",workerPool:"Worker 池",workerPoolMeta:"{active} 个处理中,{idle} 个空闲可用,共 {total} 个",queueUsage:"队列占用",activeWorkers:"处理中",idleWorkers:"空闲可用",workerActive:"正在处理异步审计或记录任务",workerIdle:"已启动,当前空闲可用",workerDisabled:"风控或内容审计未启用",processed:"已处理",droppedErrors:"丢弃/异常",autoRefresh:"每 15 秒自动刷新",last
4Cleanup:"上次清理:{time}",cleanupStats:"上次清理删除命中 {hit} 条,未命中 {nonHit} 条",riskSwitchOff:"系统开关关闭",riskThresholds:"风险阈值",riskThresholdsHint:"按 OpenAI Moderations 分类调整命中阈值,分数达到或超过阈值即视为命中。",riskThresholdDefault:"默认 {value}",riskThresholdReset:"恢复默认阈值",riskThresholdPercent:"阈值百分比",tabs:{basic:"基础",scope:"审计范围",runtime:"运行队列",response:"命中通知",riskThresholds:"风险阈值",keywords:"关键词拦截",retention:"日志保留"},blockedKeywords:"拦截关键词",blockedKeywordsPlaceholder:`每行输入一个关键词,例如:
5敏感词1
6敏感词2`,blockedKeywordsDescription:"匹配忽略大小写;命中后会按下方策略决定是否调用上游审计接口。",blockedKeywordsPreBlockHint:"关键词拦截仅在「前置拦截」模式下生效。",blockedKeywordsModeWarning:"当前为「{mode}」模式,关键词拦截不会生效;请切换到「前置拦截」模式后再保存关键词。",blockedKeywordCount:"已配置 {count} 个关键词",blockedKeywordsLimit:"最多保存 {max} 个关键词,单个长度不超过 200 个字符;重复项会自动去重。",keywordBlockingMode:"审计策略",keywordModeKeywordAndApi:"关键词 + API",keywordModeKeywordAndApiDesc:"命中关键词直接拦截;未命中时再调用上游审计接口。",keywordModeKeywordOnly:"仅关键词",keywordModeKeywordOnlyDesc:"只用关键词判断,未命中即放行,不调用上游审计接口,可显著降低 API 用量。",keywordModeKeywordOnlyNotice:"当前为「仅关键词」策略:未命中关键词的请求将直接放行,不调用上游审计接口。",keywordModeApiOnly:"仅 API",keywordModeApiOnlyDesc:"只调用上游审计接口判断,本页的关键词列表将不会生效。",keywordModeApiOnlyNotice:"当前为「仅 API」策略:关键词列表不会生效,请求会全部交给上游审计接口判断。",overview:{status:"运行状态",enabled:"已启用",disabled:"未启用",apiKey:"API Key",groupScope:"审计范围",logs:"审核记录",currentFilter:"当前筛选结果"},filters:{search:"按用户/Key/摘要搜索",from:"开始时间",to:"结束时间",allGroups:"全部分组",allEndpoints:"全部端点"},table:{time:"时间",group:"分组",user:"用户",apiKey:"API Key",endpoint:"端点",result:"结果",highest:"最高分",actionMeta:"处置",latency:"上游耗时",input:"输入摘要"},result:{all:"全部结果",hit:"命中",blocked:"已拦截",pass:"未命中",error:"异常"},action:{block:"拦截",keywordBlock:"关键词拦截",cyberPolicy:"网络安全策略",error:"异常"}},channelMonitor:{title:"渠道监控",description:"监测各渠道的可用性、延迟和状态",searchPlaceholder:"搜索监控名称...",allProviders:"全部供应商",allStatus:"全部状态",enabledFilter:"启用状态",onlyEnabled:"仅启用",onlyDisabled:"仅禁用",createButton:"新增监控",createTitle:"新增渠道监控",editTitle:"编辑渠道监控",runNow:"立即检测",runSuccess:"检测完成",runFailed:"检测失败",duplicate:"复制",duplicating:"复制中",duplicateSuccess:"监控已复制为「{name}」,已默认停用,请确认配置后再启用",duplicateFailed:"复制监控失败",duplicateKeyUnavailable:"API Key 无法解密,请先编辑并重新填写 Key 后再复制",apiKeyDecryptFailed:"API Key 解密失败,请重新编辑该监控并填入新的 Key",createSuccess:"监控创建成功",updateSuccess:"监控更新成功",deleteSuccess:"监控删除成功",loadError:"加载监控列表失败",deleteConfirm:"确定要删除监控「{name}」吗?此操作不可撤销。",nameRequired:"请输入监控名称",primaryModelRequired:"请输入主模型",linkedAccountRequired:"请选择关联账号",columns:{name:"名称",provider:"供应商",primaryModel:"主模型",availability7d:"7 天可用率",latency:"延迟 (ms)",enabled:"启用",actions:"操作"},form:{name:"名称",namePlaceholder:"输入监控名称",provider:"平台",checkMode:"检查方式",checkModeProbe:"探活",checkModeProbeHint:"向上游发送轻量 LLM 请求,检测可用性与延迟",checkModeQuota:"配额",checkModeQuotaHint:"只查询关联账号的用量滚动窗口/余额,不发送探活请求",checkModeQuotaProbe:"探活 + 配额",checkModeQuotaProbeHint:"探活的同时查询配额,用量快照附加在主模型结果上",linkedAccount:"关联账号",linkedAccountPlaceholder:"选择账号",linkedAccountHint:"配额数据来自所选账号(复用账号管理侧的用量/余é¢
6æŸ¥è¯¢ï¼‰",linkedAccountEmpty:"当前平台暂无账号,请先在账号管理中添加",linkedAccountMissing:"关联账号已不存在或不可访问,请重新选择账号",openAIQuotaProbeHint:"注意:OpenAI 平台的用量查询可能触发 Codex 探测请求,会消耗账号自身的额度(每 10 分钟最多触发一次)",apiMode:"OpenAI 协议",apiModeChatCompletions:"OpenAI Compatible",apiModeChatCompletionsHint:"使用 /v1/chat/completions,发送 messages;适合大多数兼容站。",apiModeResponses:"Responses API",apiModeResponsesHint:"使用 /v1/responses,默认带 instructions + input;适合本站自检/Codex。",endpoint:"上游地址",endpointPlaceholder:"https://api.example.com",useCurrentDomain:"使用当前服务",apiKey:"API Key",apiKeyPlaceholder:"请输入 API Key",apiKeyEditPlaceholder:"留空表示不修改",useMyKey:"使用我的 Key",selectKeyTitle:"选择我的 API Key",selectKeyHint:"仅显示当前账号下处于「启用」状态且未过期的 Key。",noActiveKey:"没有可用的启用状态 Key",primaryModel:"主模型",primaryModelPlaceholder:"gpt-4o-mini",extraModels:"附加模型",extraModelsPlaceholder:"回车添加附加模型",groupName:"分组名称",groupNamePlaceholder:"可选,用于在用户视图中聚合显示",intervalSeconds:"检测间隔 (秒)",intervalSecondsHint:"范围:15 - 3600 秒",jitterSeconds:"随机抖动 (± 秒)",jitterSecondsHint:"每次检测在间隔基础上正负随机偏移该秒数,0 表示固定间隔;需满足 间隔 - 抖动 ≥ 15 秒",enabled:"启用监控",kindRequired:"请选择供应商"},runResultTitle:"检测结果",noMonitorsYet:"暂无监控",createFirstMonitor:"创建第一个监控来跟踪渠道可用性",advanced:{section:"高级(可选)",sectionHint:"自定义请求头和请求体,用于突破上游的客户端识别限制(如仅允许 Claude Code 客户端)。",headers:"自定义请求头",headersPlaceholder:`User-Agent: claude-cli/1.0.83 (external, cli)
7x-app: cli
8anthropic-beta: claude-code-20250219`,headerNamePlaceholder:"Header 名",headerValuePlaceholder:"Value",headerAddRow:"添加 Header",headerNameInvalid:"Header 名不能包含空格或冒号:{name}",headersHint:"与默认请求头合并,用户值优先。hop-by-hop 类 header(Host/Content-Length/...)会被忽略。",headersParseError:"无法解析这一行:{line}",bodyMode:"请求体处理",bodyModeOff:"默认",bodyModeMerge:"合并",bodyModeReplace:"覆盖",bodyModeHintOff:"使用 adapter 默认请求体(带 challenge 数学题校验)。",bodyModeHintMerge:"与默认请求体浅合并,用户字段优先;但 model / messages / contents 会被保护不允许覆盖(动这些字段请用「覆盖」模式)。",bodyModeHintReplace:"完全用下方 JSON 作为请求体。注意:此模式下跳过 challenge 校验,改为 HTTP 2xx + 响应文本非空即视为可用。",bodyJson:"Body JSON",bodyJsonFormat:"格式化",bodyJsonHint:"失焦时自动解析校验。留空等价于没有覆盖。",bodyJsonError:"JSON 解析失败",bodyJsonObjectError:"请求体必须是一个 JSON 对象(不能是数组或基本类型)"},templateField:{label:"请求模板",none:"不使用模板",placeholder:"选择一个模板(按当前平台过滤)",applyHint:"选中模板后,会把模板的请求头和请求体拷贝到此监控(快照)。后续模板变动不自动同步。"},template:{manageButton:"模板管理",managerTitle:"请求模板管理",createButton:"新建模板",emptyState:"当前平台下还没有请求模板",missingName:"请输入模板名称",createSuccess:"模板创建成功",updateSuccess:"模板更新成功",deleteSuccess:"模板删除成功",applyButton:"应用到关联监控",applyTooltip:"把当前模板配置覆盖到所有关联的监控上",applyTitle:"应用模板",applyConfirm:"确认应用",applyConfirmMessage:"将把模板「{name}」的当前配置覆盖到 {n} 个关联监控。监控本地已编辑的自定义修改会被丢弃,是否继续?",applySuccess:"已应用到 {n} 个监控",applyPickerTitle:"应用模板「{name}」",applyPickerHint:"勾选要覆盖请求头/请求体的监控(默认全选)。监控本地已编辑的自定义修改会被丢弃。",applyPickerEmpty:"当前模板没有关联监控",applyPickerConfirm:"应用到 {n} 个监控",selectNone:"全不选",selectedCount:"已选 {n} / {total}",deleteConfirm:"确定要删除模板「{name}
8」吗?{n} 个关联监控会解除关联但保留自己的快照继续工作。",associatedCount:"{n} 个关联监控",headersSummary:"{n} 个自定义请求头",form:{name:"模板名称",namePlaceholder:"例:Claude Code 伪装",description:"说明",descriptionPlaceholder:"可选:说明这个模板的用途和来源(抓包日期等)"}}},subscriptions:{title:"订阅管理",description:"管理用户订阅和配额限制",assignSubscription:"分配订阅",adjustSubscription:"调整订阅",revokeSubscription:"撤销订阅",restoreSubscription:"恢复订阅",allStatus:"全部状态",allGroups:"全部分组",allPlatforms:"全部平台",daily:"每日",weekly:"每周",monthly:"每月",noLimits:"未配置限额",unlimited:"无限制",resetNow:"即将重置",windowNotActive:"窗口未激活",resetInMinutes:"{minutes} 分钟后重置",resetInHoursMinutes:"{hours} 小时 {minutes} 分钟后重置",resetInDaysHours:"{days} 天 {hours} 小时后重置",quotaEndsInMinutes:"额度将在 {minutes} 分钟后结束",quotaEndsInHoursMinutes:"额度将在 {hours} 小时 {minutes} 分钟后结束",quotaEndsInDaysHours:"额度将在 {days} 天 {hours} 小时后结束",daysRemaining:"剩余 {days} 天",hoursMinutesRemaining:"剩余 {hours} 小时 {minutes} 分钟",minutesRemaining:"剩余 {minutes} 分钟",remainingDays:"剩余天数",noExpiration:"无过期时间",status:{active:"生效中",expired:"已过期",revoked:"已撤销",suspended:"已暂停"},columns:{user:"用户",group:"分组",usage:"用量",expires:"到期时间",status:"状态",actions:"操作"},form:{user:"用户",group:"订阅分组",validityDays:"有效期(天)",adjustDays:"调整天数"},selectUser:"选择用户",selectGroup:"选择订阅分组",groupHint:"仅显示订阅计费类型的分组",validityHint:"订阅的有效天数",adjustingFor:"为以下用户调整订阅",currentExpiration:"当前到期时间",adjustDaysPlaceholder:"正数延长,负数缩短",adjustHint:"输入正数延长订阅,负数缩短订阅(缩短后剩余天数需大于0)",assign:"分配",assigning:"分配中...",adjust:"调整",adjusting:"调整中...",revoke:"撤销",restore:"恢复",resetQuota:"重置配额",resetQuotaTitle:"重置用量配额",resetQuotaConfirm:"确定要重置 '{user}' 的每日、每周和每月用量配额吗?用量将归零并从今天开始重新计算。",quotaResetSuccess:"配额重置成功",failedToResetQuota:"重置配额失败",noSubscriptionsYet:"暂无订阅",assignFirstSubscription:"分配一个订阅以开始使用。",subscriptionAssigned:"订阅分配成功",subscriptionAdjusted:"订阅调整成功",subscriptionRevoked:"订阅撤销成功",subscriptionRestored:"订阅已恢复",failedToLoad:"加载订阅列表失败",failedToAssign:"分配订阅失败",failedToAdjust:"调整订阅失败",failedToRevoke:"撤销订阅失败",failedToRestore:"恢复订阅失败",adjustWouldExpire:"调整后剩余天数必须大于0",adjustOutOfRange:"调整天数必须在 -36500 到 36500 之间",pleaseSelectUser:"请选择用户",pleaseSelectGroup:"请选择分组",validityDaysRequired:"请输入有效的天数(至少1天)",revokeConfirm:"确定要撤销 '{user}' 的订阅吗?可稍后在已撤销列表中恢复。",restoreConfirm:"确定要恢复 '{user}' 的订阅吗?如果原订阅已过期,恢复后将显示为已过期。",guide:{title:"订阅管理教程",subtitle:"订阅模式允许你按时间周期为用户分配使用额度,支持日/周/月配额限制。按照以下步骤即可完成配置。",showGuide:"使用指南",step1:{title:"创建订阅分组",line1:"前往「分组管理」页面,点击「创建分组」",line2:"将计费类型设为「订阅」,配置日/周/月额度限制",line3:"保存分组,确保状态为「正常」",link:"前往分组管理"},step2:{title:"分配订阅给用户",line1:"点击本页右上角「分配订阅」按钮",line2:"在弹窗中搜索用户邮箱并选择目标用户",line3:"选择订阅分组、设置有效期天数,点击「分配」"},step3:{title:"管理已有订阅"},actions:{adjust:"调整",adjustDesc:"延长或缩短订阅有效期",resetQuota:"重置配额",resetQuotaDesc:"将日/周/月用量归零,重新开始计算",revoke:"撤销",revokeDesc:"立即终止该用户的订阅,可在已撤销列表中恢复"},tip:"提示:订阅分组下拉列表中只会显示计费类型为「订阅」且状态为「正常」的分组。如果没有可选项,请先到分ç
8»„管理中创建。"}}},s={accounts:{title:"账号管理",description:"管理 AI 平台账号和 Cookie",createAccount:"添加账号",autoRefresh:"自动刷新",enableAutoRefresh:"启用自动刷新",refreshInterval5s:"5 秒",refreshInterval10s:"10 秒",refreshInterval15s:"15 秒",refreshInterval30s:"30 秒",autoRefreshCountdown:"自动刷新:{seconds}s",listPendingSyncHint:"列表存在待同步变更,点击同步可补齐最新数据。",listPendingSyncAction:"立即同步",syncFromCrs:"从 CRS 同步",dataExport:"导出",dataExportSelected:"导出选中",dataExportIncludeProxies:"导出代理(导出账号关联的代理)",dataImport:"导入",moreActions:"更多操作",dataActions:"数据操作",toolActions:"工具",viewColumns:"列显示",selectedCount:"已选 {count}",dataExportConfirmMessage:"导出的数据包含账号与代理的敏感信息,请妥善保存。",dataExportConfirm:"确认导出",dataExported:"数据导出成功",dataExportedSkippedShadows:"数据已导出。已跳过 {count} 个 spark 影子账号:其调度配置不在备份内,还原后需在重建的影子上重新调优。",dataExportFailed:"数据导出失败",dataImportTitle:"导入数据",dataImportHint:"上传导出的 JSON 文件以批量导入账号与代理。",dataImportWarning:"导入将创建新账号与代理,分组需手工绑定;请确认已有数据不会冲突。",dataImportFile:"数据文件",dataImportButton:"开始导入",dataImporting:"导入中...",dataImportSelectFile:"请选择数据文件",dataImportParseFailed:"数据解析失败",dataImportParseFailedFile:"文件 {name} 解析失败",dataImportInvalidFile:"文件 {name} 不是受支持的导出数据文件",dataImportIgnoredFiles:"已忽略 {count} 个非 JSON 文件",dataImportFailed:"数据导入失败",dataImportResult:"导入结果",dataImportResultSummary:"代理创建 {proxy_created},复用 {proxy_reused},失败 {proxy_failed};账号创建 {account_created},失败 {account_failed}",dataImportErrors:"失败详情",dataImportSuccess:"导入完成:账号 {account_created},失败 {account_failed}",dataImportCompletedWithErrors:"导入完成但有错误:账号失败 {account_failed},代理失败 {proxy_failed}",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},跳过 {skipped}",syncCompletedWithErrors:"同步完成但有错误:失败 {failed}(创建 {created},更新 {updated},跳过 {skipped})",syncFailed:"同步失败",crsPreview:"预览",crsPreviewing:"预览中...",crsPreviewFailed:"预览失败",crsExistingAccounts:"将自动更新的已有账号",crsNewAccounts:"新账号(可选择)",crsSelectAll:"全选",crsSelectNone:"全不选",crsNoNewAccounts:"所有 CRS 账号均已同步。",crsWillUpdate:"将更新 {count} 个已有账号。",crsSelectedCount:"已选择 {count} 个新账号",crsUpdateBehaviorNote:'已有账号仅同步 CRS 返回的字段,缺失字段保持原值;凭据按键合并,不会清空未下发的键;未勾选"同步代理"时保留原有代理。',crsBack:"返回",editAccount:"编辑账号",deleteAccount:"删除账号",searchAccounts:"搜索账号...",notes:"备注",notesPlaceholder:"请输入备注",notesHint:"备注可选",allPlatforms:"全部平台",allTypes:"全部类型",allStatus:"全部状态",allGroups:"全部分组",ungroupedGroup:"未分配分组",oauthType:"OAuth",schedulable:"参与调度",schedulableHint:"开启后账号参与API请求调度",schedulableEnabled:"调度已开启",schedulableDisabled:"调度已关闭",failedToToggleSchedulable:"切换调度状态失败",groupCountTotal:"共 {count} 个分组",columns:{name:"名称",id:"账号ID",platformType:"平台/类型",platform:"平台",type:"类型",capacity:"容量",notes:"备注",priority:"优先级",billingRateMultiplier:"账号倍率",upstreamBillingRate:"上游声明倍率",weight:"权重",schedulerScore:"调度权值",status:"状态",schedulable:"调度",todayStats:"今日统计",groups:"分组",usageWindows:"用量窗口",proxy:"代理",lastUsed:"最近使用",createdAt:"创建时间",expiresAt:"过期时间",actions:"操作"},schedulerScore:{baseShort:"普通",stickyShort:"粘性",ungrouped:"未分组",hint:"显示格式为“分组名 / 基础分 / 粘性加分”。基础分按当前筛选条件限定的候选账号计算,包含优先级、负载、排队、错误率、首包延迟、重置窗口、额度余量、计费倍率等因子;粘性加分只在开启粘性加权时用于 previous_response_id 或 session_hash。分数越大越优先。"},usageWindowsHint:"“5h / 7d”是上游账号(如 OpenAI ChatGPT、Claude)官方的æ
8»šåŠ¨ç”¨é‡çª—å£é™åˆ¶ï¼Œç”±ä¸Šæ¸¸å¯¹è´¦å·è®¾å®šï¼Œå¹¶éž sub2api 配置,也与你映射的模型无关。窗口滚动到期后用量会自动重置,无法在 sub2api 端解除该限制。",ollamaCloud:{title:"Ollama Cloud 用量",sessionSecurityHint:"浏览器会话会加密落库,且只发送到固定的 Ollama 官方设置页。",configured:"已配置",notConfigured:"未配置",notRefreshed:"尚未刷新",encryptionKeyRequired:"请先配置持久 TOTP_ENCRYPTION_KEY,再保存浏览器会话。",sessionLabel:"Ollama 浏览器 Cookie",sessionPlaceholder:"wos-session=...; __Secure-authjs.session-token.0=...",writeOnlyHint:"仅写入。已保存内容不可查看,留空不会覆盖。",deleteSession:"删除会话",deleteConfirm:"确定删除已保存的 Ollama 浏览器会话及其用量快照?",refreshNow:"刷新用量",autoRefresh:"自动刷新用量",autoRefreshHint:"只有账号开关和全局开关同时启用时才会定时刷新。",plan:"套餐",fiveHour:"5 小时",fiveHourShort:"5h",sevenDay:"7 天",sevenDayShort:"7d",balance:"余额",models:"模型",status:"状态",updatedAt:"更新时间",ok:"正常",unauthorized:"会话已过期",failed:"刷新失败",windowWithReset:"已用 {percent},{reset} 重置",loadFailed:"加载 Ollama Cloud 用量设置失败",sessionSaved:"Ollama 浏览器会话已保存",sessionSaveFailed:"保存 Ollama 浏览器会话失败",sessionDeleted:"Ollama 浏览器会话已删除",sessionDeleteFailed:"删除 Ollama 浏览器会话失败",autoRefreshFailed:"更新自动刷新设置失败",refreshSuccess:"Ollama Cloud 用量已刷新",refreshFailed:"刷新 Ollama Cloud 用量失败",errors:{request_failed:"请求失败",empty_response:"响应为空",response_host_mismatch:"响应主机不符合安全边界",redirect_blocked:"官方设置页发生重定向",unauthorized:"浏览器会话已过期",http_error:"官方设置页返回错误",response_read_failed:"读取响应失败",response_too_large:"设置页超过响应大小限制",invalid_html:"无法识别设置页格式",OLLAMA_CLOUD_USAGE_REFRESH_RATE_LIMITED:"刷新过于频繁,请在 {retry_after_seconds} 秒后重试。"}},upstreamBilling:{trustWarning:"此倍率由上游站点针对当前 API Key 自行声明。Sub2API 无法验证该值是否与实际扣费一致;上游站点或中间代理可能返回伪造、过期或被篡改的数据。请结合账单、余额变化和实际用量自行核验。",autoProbe:"自动探测上游声明倍率",autoProbeHint:"启用后按全局周期刷新上游声明倍率;此开关本身不会修改账号倍率。",syncRate:"同步上游声明倍率",syncRateHint:"成功探测后自动更新账号倍率,同步的是不含高峰的基准倍率;探测失败或声明超出允许范围时保持不变。开启本项会同时打开“自动探测上游声明倍率”。",syncRateManagedHint:"当前倍率由上游声明的基准倍率(不含高峰)自动维护。",syncedRateTooltip:"该账号倍率由上游声明的基准倍率(不含高峰)自动同步",manualProbe:"立即探测上游倍率",stale:"已过期",unsupported:"不支持",failed:"失败",notProbed:"未探测",groupRate:"分组默认:{value}x",userRate:"用户专属倍率:{value}x",peakRate:"高峰:{start}-{end},{value}x({timezone})",noPeakRate:"高峰倍率:未启用",effectiveRate:"当前倍率:{value}x",updatedAt:"更新时间:{value}",nextProbeAt:"下一次探测:{value}",lastDetectedRate:"上次探测倍率:{value}x",lastDetectedAt:"上次探测时间:{value}",elapsedSince:"已过去:{value}",justNow:"不足 1 分钟",minutesAgo:"{count} 分钟",hoursAgo:"{count} 小时",daysAgo:"{count} 天",accountProbeState:"当前账号自动检测:",globalProbeState:"全局探测开关:",enabled:"打开",disabled:"关闭",probeFailed:"探测上游倍率失败",noEligibleAccounts:"请选择 API Key 账号",batchLimit:"每次最多探测 20 个账号",batchCompleted:"已完成 {count} 个账号的倍率探测",batchPartial:"倍率探测部分完成:成功 {success} 个,失败 {failed} 个"},allPrivacyModes:"全部Privacy状态",privacyUnset:"未设置",privacyTrainingOff:"已关闭训练数据共享",privacyCfBlocked:"被 Cloudflare 拦截,训练可能仍开启",privacyFailed:"关闭训练数据共享å
8¤±è´¥",privacyAntigravitySet:"已关闭遥测和营销邮件",privacyAntigravityFailed:"隐私设置失败",setPrivacy:"设置隐私",subscriptionAbnormal:"异常",subscriptionExpires:"到期",capacity:{windowCost:{blocked:"5h窗口费用超限,账号暂停调度",stickyOnly:"5h窗口费用达阈值,仅允许粘性会话",normal:"5h窗口费用正常"},sessions:{full:"活跃会话已满,新会话需等待(空闲超时:{idle}分钟)",normal:"活跃会话正常(空闲超时:{idle}分钟)"},rpm:{full:"已达 RPM 上限",warning:"RPM 接近上限",normal:"RPM 正常",tieredNormal:"RPM 限制 (三区模型) - 正常",tieredWarning:"RPM 限制 (三区模型) - 接近阈值",tieredStickyOnly:"RPM 限制 (三区模型) - 仅粘性会话 | 缓冲区: {buffer}",tieredBlocked:"RPM 限制 (三区模型) - 已阻塞 | 缓冲区: {buffer}",stickyExemptNormal:"RPM 限制 (粘性豁免) - 正常",stickyExemptWarning:"RPM 限制 (粘性豁免) - 接近阈值",stickyExemptOver:"RPM 限制 (粘性豁免) - 超限,仅粘性会话"},quota:{exceeded:"配额已用完,账号暂停调度",normal:"配额正常"}},clearRateLimit:"清除速率限制",resetQuota:"重置配额",quotaLimit:"配额限制",quotaLimitPlaceholder:"0 表示不限制",quotaLimitHint:"设置日/周/总使用额度(美元),任一维度达到限额后账号暂停调度。Anthropic API Key 账号还可配置客户端亲和。修改限额不会重置已用额度。",quotaLimitToggle:"启用配额限制",quotaLimitToggleHint:"开启后,当账号用量达到设定额度时自动暂停调度",quotaDailyLimit:"日限额",quotaDailyLimitHint:"从首次使用起每 24 小时自动重置。",quotaWeeklyLimit:"周限额",quotaWeeklyLimitHint:"从首次使用起每 7 天自动重置。",quotaTotalLimit:"总限额",quotaTotalLimitHint:"累计消费上限,不会自动重置 — 使用「重置配额」手动清零。",quotaResetMode:"重置方式",quotaResetModeRolling:"滚动窗口",quotaResetModeFixed:"固定时间",quotaResetHour:"重置时间",quotaWeeklyResetDay:"重置日",quotaResetTimezone:"重置时区",quotaDailyLimitHintFixed:"每天 {hour}:00({timezone})重置。",quotaWeeklyLimitHintFixed:"每{day} {hour}:00({timezone})重置。",dayOfWeek:{monday:"周一",tuesday:"周二",wednesday:"周三",thursday:"周四",friday:"周五",saturday:"周六",sunday:"周日"},quotaLimitAmount:"总限额",quotaLimitAmountHint:"累计消费上限,不会自动重置。",quotaNotify:{alert:"提醒阈值",enabled:"启用告警",threshold:"告警金额",thresholdPlaceholder:"输入百分比"},testConnection:"测试连接",reAuthorize:"重新授权",refreshToken:"刷新令牌",noAccountsYet:"暂无账号",createFirstAccount:"添加 AI 平台账号以开始使用 API 网关。",tokenRefreshed:"Token 刷新成功",accountDeleted:"账号删除成功",rateLimitCleared:"速率限制已清除",setupToken:"Setup Token",apiKey:"API Key",deleteConfirm:"确定要删除账号 '{name}' 吗?此操作无法撤销。",failedToClearRateLimit:"清除速率限制失败",platforms:{claude:"Claude",openai:"OpenAI",anthropic:"Anthropic",gemini:"Gemini",antigravity:"Antigravity",grok:"Grok",kimi:"Kimi",zhipu:"Zhipu GLM",deepseek:"DeepSeek"},cnProviders:{accountMode:{title:"账号类型",payg:"按量付费",paygDesc:"消耗账户余额,按 Token 计费。余额不足自动冷却,充值后恢复。",coding:"Coding Plan",codingDesc:"订阅制编程套餐,按 5 小时 / 每周滚动用量窗口限流。"},apiProtocol:{title:"API 协议",adaptive:"自适应",adaptiveDesc:"按入站协议优先使用供应商原生端点,仅在没有对应端点时转换。",endpoints:"协议端点",responsesFallbackDesc:"该供应商没有原生 Responses 端点,Responses 请求将转换为 Chat Completions。",chatCompletions:"Chat Completions",chatCompletionsDesc:"标准 OpenAI 兼容端点,其他格式请求将被转换。",anthropic:"Anthropic",anthropicDesc:"直通供应商原生 Anthropic 端点,零转换,适配 Claude Code。",responses:"Responses",responsesDesc:"供应商原生 Responses 端点,适配 Codex。"},zhipuTeam:{title:"团队版组织 / 项目 ID",organization:"组织 ID(团队版可选)",organizationPlaceholder:"团队版 Coding Plan 的组织 ID",project:"项目 ID(团队版可选)",projectPlaceholder:"团队版 Coding Plan 的项目 ID",hint:"仅团队版 GLM Coding Plan 需要填写,填写后用量查询走团队版端点;个人版留空即可。获取方式点击左侧问号查看教程。",help:{title:"如何获取组织 / 项目 ID",step1:"用团队版账号登录智谱开放平台(bigmodel.cn),进入「Coding Plan → 团队版 → 我的套餐」页面。",step2:"按 F12 打开æµ
8è§ˆå™¨å¼€å‘者工具,切换到「Network / 网络」标签,然后刷新页面。",step3:"在 Network 的筛选框中输入 /api/biz/v1/organization,点击命中的请求(如 api_keys)。",step4:"请求 URL 中 org- 开头的一段即组织 ID、proj_ 开头的一段即项目 ID(也可在 Request Headers 中查看 bigmodel-organization / bigmodel-project 的值),分别填入上方输入框。",example:"示例:…/organization/org-0610bE2D…/projects/proj_0798F20…/api_keys → org-0610bE2D… 填「组织 ID」,proj_0798F20… 填「项目 ID」"}},balance:"余额 --",window5h:"5h",windowWeekly:"7d",probe:"查询",probeTooltip:"请求供应商额度端点,查询 5 小时 / 每周滚动窗口用量",balanceProbeTooltip:"请求供应商余额端点,查询账户余额",balanceLow:"余额不足",noBalanceEndpoint:"该平台暂无余额查询接口"},types:{oauth:"OAuth",chatgptOauth:"ChatGPT OAuth",responsesApi:"Responses API",googleOauth:"Google OAuth",codeAssist:"Code Assist",antigravityOauth:"Antigravity OAuth",grokOauth:"Grok OAuth",antigravityApikey:"通过 Base URL + API Key 连接",upstream:"对接上游",upstreamDesc:"通过 Base URL + API Key 连接上游"},antigravityProjectIdLabel:"GCP Project ID(可选)",antigravityProjectIdPlaceholder:"your-gcp-project-id",antigravityProjectIdHint:"standard-tier 且未自动返回 project_id 的 Antigravity 账号需要填写用户自带 GCP project。",accountSchedulingThresholdOverride:"账号自动停调阈值覆盖",accountSchedulingThresholdOverrideHint:"仅对当前账号覆盖平台级自动停调阈值;关闭后使用平台设置。",accountSchedulingThresholdOverrideValue:"账号阈值百分比",accountSchedulingThresholdOverrideDisabledHint:"1-100,达到该用量百分比后临时不可调度;100 表示禁用当前账号自动停调。",status:{active:"正常",inactive:"停用",expired:"已过期",error:"错误",cooldown:"冷却中",paused:"暂停",limited:"限流",rateLimited:"限流中",overloaded:"过载中",tempUnschedulable:"临时不可调度",quotaExceeded:"配额超限",unschedulable:"不可调度",rateLimitedUntil:"限流中,当前不参与调度,预计 {time} 自动恢复",rateLimitedAutoResume:"{time} 自动恢复",modelRateLimitedUntil:"{model} 限流至 {time}",modelCreditOveragesUntil:"{model} 正在使用 AI Credits,至 {time}",creditsExhausted:"积分已用尽",creditsExhaustedUntil:"AI Credits 已用尽,预计 {time} 恢复",overloadedUntil:"负载过重,重置时间:{time}",viewTempUnschedDetails:"查看临时不可调度详情",tempUnschedulableUntil:"预计 {time} 恢复"},tempUnschedulable:{title:"临时不可调度",statusTitle:"临时不可调度状态",hint:"当错误码与关键词同时匹配时,账号会在指定时间内被临时禁用。",notice:"规则按顺序匹配,需同时满足错误码与关键词。",addRule:"添加规则",ruleOrder:"规则序号",multipleErrorTrigger:"{minutes} 分钟内累计 {count} 次匹配错误,达到触发阈值({threshold})。",multipleErrorTriggerNoWindow:"累计 {count} 次匹配错误,达到触发阈值({threshold})。",multipleErrorCountInWindow:"{minutes} 分钟内累计发生 {count} 次匹配错误。",multipleErrorCount:"本次不可调度由累计 {count} 次匹配错误触发。",ruleIndex:"规则 #{index}",errorCode:"错误码",errorCodePlaceholder:"例如 429",durationMinutes:"持续时间(分钟)",durationPlaceholder:"例如 30",keywords:"关键词",keywordsPlaceholder:"例如 overloaded, too many requests",keywordsHint:"多个关键词用逗号分隔,匹配时必须命中其中之一。",description:"描述",descriptionPlaceholder:"可选,便于记忆规则用途",rulesInvalid:"请至少填写一条包含错误码、关键词和时长的规则。",viewDetails:"查看临时不可调度详情",accountName:"账号",triggeredAt:"触发时间",until:"解除时间",remaining:"剩余时间",matchedKeyword:"匹配关键词",errorMessage:"错误详情",reset:"恢复状态",resetSuccess:"账号状态已恢复",resetFailed:"恢复账号状态失败",failedToLoad:"加载临时不可调度状态失败",notActive:"当前账号未处于临时不可调度状态。",expired:"已到期",remainingMinutes:"约 {minutes} 分钟",remainingHours:"约 {hours} 小时",remainingHoursMinutes:"约 {hours} 小时 {minutes} 分钟",presets:{overloadLabel:"529 过载",overloadDesc:"服务过载 - 暂停 60 分钟",rateLimitLabel:"429 限流",rateLimitDesc:"触发限流 - 暂停 10 分钟",unavailableLabel:"503 维护",unavailableDesc:"服务不可用 - 暂停 30 分钟"}},usageWindow:{statsTitle:"5小时窗口用量统计",statsTitleDaily:"每日用量统计",geminiProDaily:"Pro",geminiFlashDaily:"Flash",gemini3Pro:"G3P",gemini3Flash:"G3F",gemini3Image:"G31FI",claude:"Claude",grokRequests:"请求",grokTokens:"Token",grokFreeQuota24hHint:"按 sub2api 近 24 小时本地 Token 用量估算(上限 {limit})",grokWeeklyUsage:"周额度已用 {percent}%",grokUsed:"已用 $",grokBalance:"余额 $",grokPrepaid:"预付余额",grokMonthlyLimit:"月度已用/上限(USD)",grokOverage:"超额 onDemandUsed/onDemandCap",grokOverageShort:"超额 $",grokUnknown:"Grok 配额需等待首次上游响应返回 xAI rate-limit 头后显示。",grokRetryAfter:"{time} 后重试",grokProbe:"探测",grokProbeTooltip:"发送最小 xAI Responses 探测请求并读取配额响应头",grokResetUnsupported:"不支持重置",grokResetUnsupportedTooltip:"xAI 未向 Grok OAuth 账号开放重置额度接口",grokNoHeaders:"未观察到配额响应头",grokLastStatus:"状态 {status}",grokLastProbe:"探测 {time}",grokLastHeadersSeen:"响应头 {time}",passiveSampled:"被动采样",activeQuery:"查询"},openaiQuotaReset:{count:"次数",reset:"重置",countTooltipLoad:"点击查询剩余重置次数",countTooltipRefresh:"点击刷新剩余重置次数",resetTooltipReady:"消耗 1 次重置次数以立即恢复当前窗口",resetTooltipNeedQuery:"先点击「次数」加载剩余重置次数",resetTooltipNoCredits:"没有可用的重置次数",resetTooltipShadow:"Spark 影子账号不能重置次数;请在母账号上重置",expiresAt:"到期 {time}",expiresAtFull:"重置次数到期时间: {time}",expandExpirations:"展开其余 {count} 张重置次数到期时间",collapseExpirations:"收起重置次数到期时间",expirationDetail
8s:"重置次数到期明细",noCreditsAvailable:"没有可用的重置次数",resetSuccess:"已重置 {windows} 个窗口,次数和账号状态已更新",resetCacheRefreshFailed:"窗口已重置、账号状态已恢复,但重置次数未能回读,请重新查询次数。",resetAccountRecoveryFailed:"窗口已重置,但账号状态恢复失败,请手动恢复账号状态。",resetAccountRefreshFailed:"窗口、账号状态和重置次数缓存已更新,但无法加载最新账号显示。",refreshCachePersistFailed:"已显示实时次数,但到期明细获取失败,仍保留原有缓存明细。",autoStatus:{checking:"检测中",available:"卡可用",resetting:"自动重置中",success:"自动重置成功",noCredit:"无卡",failed:"自动重置失败"},confirmTitle:"确认重置周限",confirmMessage:"将消耗 1 次重置次数立即恢复当前窗口,剩余 {count} 次。此操作不可撤销,确定继续吗?"},tier:{free:"Free",pro:"Pro",ultra:"Ultra",aiPremium:"AI Premium",standard:"标准版",basic:"基础版",personal:"个人版",unlimited:"无限制"},ineligibleWarning:"该账号无 Antigravity 使用权限,但仍能进行 API 转发。继续使用请自行承担风险。",forbidden:"已封禁",forbiddenValidation:"需要验证",forbiddenViolation:"违规封禁",openVerification:"打开验证链接",copyLink:"复制链接",linkCopied:"链接已复制",needsReauth:"需要重新授权",rateLimited:"限流中",usageError:"获取失败",testing:"测试中...",bulkSchedulableEnabled:"成功启用 {count} 个账号的调度",bulkSchedulableDisabled:"成功停止 {count} 个账号的调度",bulkSchedulablePartial:"部分调度更新成功:成功 {success} 个,失败 {failed} 个",bulkSchedulableResultUnknown:"批量调度结果不完整,请稍后重试或刷新列表",bulkActions:{selected:"已选择 {count} 个账号",selectedAll:"已选择全部 {count} 个账号",selectCurrentPage:"本页全选",selectAllResults:"全选所有结果({count})",selectingAll:"正在选择全部结果...",selectAllFailed:"获取全部账号失败,原有选择未改变",clear:"清除选择",edit:"批量编辑账号",delete:"批量删除",confirmDelete:"确认删除选中的 {count} 个账号吗?此操作不可恢复。",deleteSuccess:"已成功删除 {count} 个账号",enableScheduling:"批量启用调度",disableScheduling:"批量停止调度",resetStatus:"批量重置状态",refreshToken:"批量刷新令牌",probeUpstreamBilling:"探测上游倍率",resetStatusSuccess:"已成功重置 {count} 个账号状态",refreshTokenSuccess:"已成功刷新 {count} 个账号令牌",partialSuccess:"操作部分完成:{success} 成功,{failed} 失败"},bulkEdit:{title:"批量编辑账号",selectionInfo:"已选择 {count} 个账号。只更新您勾选或填写的字段,未勾选的字段保持不变。",baseUrlPlaceholder:"https://api.anthropic.com 或 https://api.openai.com",baseUrlNotice:"适用于 API Key 账号及 Grok OAuth 账号的转发端点,留空则不修改",submit:"批量更新",updating:"更新中...",success:"成功更新 {count} 个账号",successWithInherited:"成功更新 {count} 个账号;其中 {inherited} 个影子账号仍跟随母账号。",partialSuccess:"部分更新成功:成功 {success} 个,失败 {failed} 个",partialSuccessWithInherited:"部分更新成功:成功 {success} 个,失败 {failed} 个;其中 {inherited} 个影子账号仍跟随母账号。",failed:"批量更新失败",noSelection:"请选择要编辑的账号",noFieldsSelected:"请至少选择一个要更新的字段",rateSyncWarning:"已开启上游倍率同步的账号不能批量手工修改倍率,请先在账号编辑页关闭同步。",rateSyncConflict:"无法修改账号倍率:{count} 个目标账号已开启上游倍率同步。",longContextShadowHint:"长上下文计费归母账号所有。选中的影子账号仍跟随母账号,筛选全量目标时同样如此。",longContextParentRequired:"选中的账号全部是影子账号,请选择母账号修改长上下文计费。",mixedPlatformWarning:"所选账号跨越多个平台({platforms})。显示的模型映射预设为合并结果——请确保映射对每个平台都适用。"},bulkDeleteTitle:"批量删除账号",bulkDeleteConfirm:"确定要删除选中的 {count} 个账号吗?此操作无法撤销。",bulkDeleteSuccess:"成功删除 {count} 个账号",bulkDeletePartial:"部分删除成功:成功 {success} 个,失败 {failed} 个",bulkDeleteFailed:"批量删除失败",recoverState:"恢复状态",recoverStateHint:"用于恢复错误、限流和临时不可调度等可恢复状态。",recoverStateSuccess:"账号状态已恢复",recoverStateFailed:"恢复账号状态失败",fallbackActive:"已回退",fallbackActiveTip:"原代理 {origin} 已到期,当前使用备用代理",revertProxy:"切回原代理",revertProxySuccess:"已成功切回原代理",revertProxyFailed:"切回原代理失败",createSparkShadow:"创建 Spark 影子账号",createSparkShadowConfirm:"为「{name}」创建链接型 Spark 影子账号?影子共享母账号凭据、仅服务 spark 模型。",createSparkShadowSuccess:"Spark 影子账号已创建",createSparkShadowFailed:"创建 Spark 影子账号失败",duplicateAccount:"复制账号",duplicateSuccess:"账号已复制为「{name}」,已暂停调度,请确认凭据后再启用",duplicateFailed:"复制账号失败",resetStatus:"重置状态",statusReset:"账号状态已重置",failedToResetStatus:"重置账号状态失败",testFailed:"账号测试失败",failedToLoad:"加载账号列表失败",failedToDelete:"删除账号失败",failedToRefresh:"刷新 Cookie 失败",platform:"平台",accountName:"账号名称",enterAccountName:"请输入账号名称",accountType:"账号类型",claudeCode:"Claude Code",claudeConsole:"Claude Console",bedrockLabel:"AW
8S Bedrock",bedrockDesc:"SigV4 / API Key",vertexLabel:"Vertex",vertexDesc:"Service Account",vertexAnthropicHint:"使用 Google Cloud Service Account JSON 通过 Vertex AI 调用 Anthropic Claude。建议配置模型映射,将客户端 Claude 模型名映射到 Vertex 模型 ID。",vertexGeminiHint:"使用 Google Cloud Service Account JSON 访问 Vertex AI Gemini。建议将 Vertex 账号放入独立分组,避免和 AI Studio/Gemini OAuth 同模型混调。",vertexSaJsonLabel:"Service Account JSON",vertexSaJsonLoaded:"已读取 Service Account JSON",vertexSaJsonDrop:"拖入 Service Account JSON",vertexSaJsonKeyHidden:"密钥内容不会在表单中显示。",vertexSaJsonDropHint:"把 .json 文件拖到这里,或点击按钮选择文件。",vertexSaJsonSelectBtn:"选择 JSON",vertexSaJsonUploadHint:"上传或拖入 JSON 后会自动读取 project_id,密钥内容仅用于创建账号提交。",vertexSaJsonEditHint:"Service Account JSON 不在编辑页显示;需要更换 JSON 时请删除账号后重新创建。",vertexProjectIdPlaceholder:"从 JSON 自动读取",vertexLocationHint:"不同 Vertex 模型可用 location 可能不同,这里选择账号默认 endpoint location。",vertexLocationRequired:"请填写 Vertex location",vertexSaJsonMissingFields:"Service Account JSON 缺少 project_id、client_email 或 private_key",vertexSaJsonMissingProjectId:"Service Account JSON 缺少 project_id",vertexSaJsonMissingClientEmail:"Service Account JSON 缺少 client_email",vertexSaJsonInvalid:"Service Account JSON 格式无效",vertexSaJsonRequired:"请上传 Service Account JSON",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",upstreamRequestIdHeader:"上游ID",upstreamRequestIdHeaderPlaceholder:"留空不记录",upstreamRequestIdHeaderHelp:{intro:"填写直接上游在响应头中声明请求标识的头名,记录到用量明细的“上游ID”列;留空则不记录。",examplesTitle:"常见取值",sub2apiNote:"对应对方用量明细的请求ID列",official:"{platform} 官方 API"},openai:{baseUrlHint:"留空使用官方 OpenAI API",apiKeyHint:"您的 OpenAI API Key",oauthPassthrough:"自动透传(仅替换认证)",oauthPassthroughDesc:"开启后,该 OpenAI 账号将自动透传请求与响应,仅替换认证并保留计费/并发/审计及必要安全过滤;如遇兼容性问题可随时关闭回滚。",flattenNamespaces:"摊平 Codex namespace 工具(兼容)",flattenNamespacesDesc:"默认关闭:/responses 上的 namespace 工具声明原样转发,这正是 ChatGPT Codex 后端期望的形态。仅当该 OAuth 账号指向不认识 namespace 的兼容上游时才开启——摊平会把工具改名为 namespace__tool,使按 functions.<命名空间>.<工具> 寻址的模型(如 gpt-5.6 多智能体)无法调用。压缩(compact)请求不受该开关影响,始终摊平。",longContextBilling:"API 长上下文计费",longContextBillingDesc:"默认关闭。仅当该账号的上游会按模型阈值收取 OpenAI API 长上下文费率时开启。",responsesWebsocketsV2:"Responses WebSocket v2",responsesWebsocketsV2Desc:"默认关闭。开启后可启用 responses_websockets_v2 协议能力(受网关全局开关与账号类型开关约束)。",wsMode:"WS mode",wsModeDesc:"仅对当前 OpenAI 账号类型生效;包括 http_bridge 在内的账号 WS mode 仅在全局 gateway.openai_ws.mode_router_v2_enabled=true 时生效。",wsModeOff:"关闭(off)",wsModeCtxPool:"上下文池(ctx_pool)",wsModePassthrough:"透传(passthrough)",wsModeHttpBridge:"HTTP 桥接(http_bridge)",wsModeShared:"共享(shared)",wsModeDedicated:"独享(dedicated)",wsModeConcurrencyHint:"启用 WS mode 后,该账号并发数将作为该账号 WS 连接池上限。",wsModePassthroughHint:"passthrough 模式不使用 WS 连接池。",oauthResponsesWebsocketsV2:"OAuth WebSocket Mode",oauthResponsesWebsocketsV2Desc:"仅对 OpenAI OAuth 生效。开启后该账号才允许使用 OpenAI WebSocket Mode 协议。",apiKeyResponsesWebsocketsV2:"API Key WebSocket Mode",apiKeyResponsesWebsocketsV2Desc:"仅对 OpenAI API Key 生效。开启后该账号才允许使用 OpenAI WebSocket Mode 协议。",responsesWebsocketsV2PassthroughHint:"当前已开启自动透传:仅影响 HTTP 透传链路,不影响 WS mode。",responsesMode:"Responses API 支持",responsesModeDesc:"仅对 OpenAI API Key 的文本转发链路生效。自动跟随探测结果,强制模式会覆盖自动探测。",responsesModeAuto:"自动",responsesModeForceResponses:"强制 Responses",responsesModeForceChatCompletions:"强制 Chat Completions",responsesModeTextDisabledHint:"未启用 Responses / Chat Completions 端点时,此设置不适用。",imagesUrlToB64Json:"生图结果 URL 转 base64",imagesUrlToB64JsonDesc:"仅对 OpenAI API Key 的 Images 非流式响应生效。上游返回的图片缺少 b64_json 但带 url 时,网关下载该 url 并以 base64 回填 b64_json(url 保留),兼容按官方接口实现的客户端;下载失败则原样返回。",endpointCapabilities:"端点能力",endpointCapabilitiesDesc:"用于调度筛选。文本端点会跟随上方 Responses API 支持显示为 Responses、Chat Completions 或自动模式;Embeddings 独立控制 /v1/embeddings。",capabilityResponses:"Responses",capabilityTextAuto:"Responses / Chat Completions(自动)",capabilityResponsesAuto:"Responses(自动探测)",capabilityChatCompletions:"Chat Completions",capabilityChatCompletionsAuto:"Chat Completions(自动探测)",capabilityEmbeddings:"Embeddings",responsesStatusAutoSupported:"自动探测:Responses",responsesStatusAutoUnsupported:"自动探测:Chat 
8Completions",responsesStatusAutoUnknown:"自动探测:未探测",responsesStatusForcedResponses:"已强制 Responses",responsesStatusForcedChatCompletions:"已强制 Chat Completions",planType:"订阅档位(手动覆盖)",planTypeDesc:"手动纠正本账号的 ChatGPT 订阅档位(Plus / Pro / Free)。注意:令牌临期刷新或命中 429 限流时,会用真实档位自动覆盖此处设置。",planTypeClear:"清空(自动识别)",codexCLIOnly:"仅允许 Codex 官方客户端",codexCLIOnlyDesc:"仅对 OpenAI OAuth 生效。开启后仅允许 Codex 官方客户端家族访问;关闭后完全绕过并保持原逻辑。",codexCLIOnlyAppServer:"允许 Codex app-server 客户端",codexCLIOnlyAppServerDesc:"仅在上方开关开启时生效。开启后本账号额外放行内嵌 Codex 引擎、经 app-server 协议接入的第三方客户端(如 Claude Code 的 codex 插件),仍需通过全局引擎指纹门;与全局 app-server 开关取 OR(任一开即放行)。",codexFingerprintMode:"Codex 指纹收敛",codexFingerprintModeDesc:"多人共享同一 OAuth 账号时,将各用户的设备/会话标识收敛为账号级恒定值,减少上游可见的设备数和会话数。默认关闭(原样透传客户端标识),需要时再显式开启;部分账号开启收敛后出现过额度缩水,请按自己的实测结果选择。",codexFingerprintOff:"关闭(透传,默认)",codexFingerprintDevice:"仅设备",codexFingerprintSession:"设备+会话",codexFingerprintFull:"完全收敛",codexImageTool:"Codex 图片桥接策略",codexImageToolDesc:"统一控制 Codex /responses 文本请求的 hosted image_generation 桥接和客户端图片工具声明。hosted 工具自动注入仅适用于非 Responses Lite 请求;账号级策略优先于渠道和全局配置,不影响独立图片生成接口。",codexImageToolInherit:"跟随渠道",codexImageToolInheritDesc:"不写入账号覆盖;非 Lite 请求是否注入 hosted 工具由渠道或全局策略决定,客户端显式携带的 hosted 工具和本地 image_gen 声明照常放行。",codexImageToolEnabled:"启用 Hosted 桥接",codexImageToolEnabledDesc:"仅为非 Responses Lite 请求注入 hosted image_generation 工具;客户端显式携带的图片工具仍会放行。",codexImageToolDisabled:"不注入 Hosted 工具",codexImageToolDisabledDesc:"不注入 hosted 工具;客户端显式携带的 hosted 工具和本地 image_gen 声明仍会放行。",codexImageToolBlock:"移除客户端图片工具",codexImageToolBlockDesc:"不通过桥接自动注入 hosted 工具,并移除客户端显式携带的 hosted image_generation 工具、本地 image_gen 声明及相关 tool_choice;image-only 模型路由不受影响。",codexImageToolBadgeInherit:"渠道策略",codexImageToolBadgeEnabled:"Hosted 桥接已开启",codexImageToolBadgeDisabled:"不注入 Hosted 工具",codexImageToolBadgeBlock:"客户端图片工具已移除",compactMode:"Compact 模式",compactModeDesc:"控制本账号在 /responses/compact 调度中的参与方式。Auto 跟随探测结果,Force On 强制允许,Force Off 强制排除。",compactModeAuto:"自动",compactModeForceOn:"强制开启",compactModeForceOff:"强制关闭",compactModelMapping:"Compact 专属模型映射",compactModelMappingDesc:"仅在 /responses/compact 请求中生效。当上游 compact 端点需要特殊 compact 模型时使用。",compactSupported:"支持 Compact",compactUnsupported:"不支持 Compact",compactAuto:"Compact Auto",compactUnknown:"Compact Auto",compactLastChecked:"最近探测",testMode:"测试模式",testModeDefault:"常规请求",testModeCompact:"Compact 探测",modelRestrictionDisabledByPassthrough:"已开启自动透传:模型白名单/映射不会生效。"},grok:{baseUrlHint:"Grok OAuth 账号会转发到官方 xAI API Base URL。",apiKeyHint:"Grok 订阅支持使用 OAuth refresh token;API Key 账号不在本次范围内。",testMode:"测试模式",testModeHint:"文本 / 图片 / 视频使用所选模型。网页搜索、TTS、STT、Realtime 走独立接口探测(不是对话里的 tools)。",testModeText:"文本(Responses)",testModeImage:"图片(/images/generations)",testModeVideo:"视频(/videos/generations)",testModeSearch:"网页搜索(/web_search)",testModeTTS:"语音合成 TTS(/tts)",testModeSTT:"语音识别 STT(/stt)",testModeRealtime:"实时语音 Realtime(WS /realtime)",textTestMode:"模式:文本(Responses)",searchTestMode:"模式:网页搜索(/web_search)",ttsTestMode:"模式:TTS(/tts)",sttTestMode:"模式:STT(/stt)",realtimeTestMode:"模式:Realtime(WS /realtime)",searchQueryLabel:"搜索关键词",searchQueryPlaceholder:"ä¾
8‹å¦‚:xAI Grok",searchQueryDefault:"xAI Grok",searchTestHint:"独立网页搜索探测(与网关 /v1/web_search 语义一致),不是带 tools 的自由对话。",ttsTextLabel:"TTS 文本",ttsTextPlaceholder:"例如:Hello from Sub2API connectivity test.",ttsTextDefault:"Hello from Sub2API account connectivity test.",ttsTestHint:"独立调用 /v1/tts(language=en);成功时显示音频字节数。",sttTestHint:"独立调用 /v1/stt,使用合成静音 WAV;成功表示接口可达。",realtimeTestHint:"独立 WebSocket 拨号 /v1/realtime(model=grok-voice-latest)。握手成功即连通;若有首包服务端事件会一并显示。",sendingSearchRequest:"正在发送独立 web_search 请求...",sendingTTSRequest:"正在发送独立 /tts 请求...",sendingSTTRequest:"正在发送独立 /stt 请求...",sendingRealtimeRequest:"正在拨号独立 /realtime WebSocket...",selectedTestMode:"测试模式:{mode}",imageUploadLabel:"源图片(可选,图生图/编辑)",videoFirstFrameLabel:"首帧 / 参考图(可选)",imageUploadHint:"建议 PNG/JPEG,宽高均 ≥ 8 像素,编辑建议小于约 4MB。上传源图会走 /images/edits(图生图);不上传则走 /images/generations 文生图。",videoFirstFrameHint:"可选首帧/参考图用于图生视频。建议 PNG/JPEG,宽高均 ≥ 8 像素。",audioUploadLabel:"音频文件(STT 可选)",audioUploadHint:"上传真实音频做转写;不上传则用静音 WAV 仅测连通。",mediaTooLarge:"文件过大(管理端测试上传上限约 6MB)。",chooseImageFile:"选择图片",chooseAudioFile:"选择音频",uploadPreviewAlt:"上传预览",fileReadFailed:"读取所选文件失败",noResponseBody:"服务器未返回响应体"},anthropic:{apiKeyPassthrough:"自动透传(仅替换认证)",apiKeyPassthroughDesc:"仅对 Anthropic API Key 生效。开启后,messages/count_tokens 请求将透传上游并仅替换认证,保留计费/并发/审计及必要安全过滤;关闭即可回滚到现有兼容链路。",apiKeyAuthScheme:"上游认证方式",apiKeyAuthSchemeDesc:"选择转发到 Anthropic-compatible 上游时使用的 API Key 认证头。Ollama Cloud 使用 Authorization: Bearer。",apiKeyAuthSchemeXApiKey:"x-api-key",apiKeyAuthSchemeBearer:"Authorization: Bearer",webSearchEmulation:"Web Search 模拟",webSearchEmulationDesc:"为该 API Key 账号启用 web search 模拟。客户端发送纯 web_search 请求时,由网关调用第三方搜索 API 并构造响应返回。默认跟随渠道配置。",webSearchDefault:"默认",webSearchEnabled:"开启",webSearchDisabled:"关闭"},modelRestriction:"模型限制(可选)",modelWhitelist:"模型白名单",modelMapping:"模型映射",fromModel:"请求模型",toModel:"目标模型",selectAllowedModels:"选择允许的模型。留空则支持所有模型。",mapRequestModels:"将请求模型映射到实际模型。左边是请求的模型,右边是发送到 API 的实际模型。",selectedModels:"已选择 {count} 个模型",supportsAllModels:"(支持所有模型)",requestModel:"请求模型",actualModel:"实际模型",addMapping:"添加映射",mappingExists:"模型 {model} 的映射已存在",wildcardOnlyAtEnd:"通配符 * 只能放在末尾",targetNoWildcard:"目标模型不能包含通配符 *",searchModels:"搜索模型...",noMatchingModels:"没有匹配的模型",fillRelatedModels:"同步最新支持模型",syncUpstreamModels:"同步上游支持的模型",syncUpstreamModelsLoading:"同步上游中...",syncUpstreamModelsSuccess:"已从上游同步 {count} 个新模型(上游共 {total} 个)",syncUpstreamModelsNoChanges:"上游 {count} 个模型均已在白名单中",syncUpstreamModelsEmpty:"上游没有返回可同步的模型",syncUpstreamModelsFailed:"同步上游模型失败",syncUpstreamModelsError:"同步上游模型失败:{message}",syncUpstreamModelsMetadataIncomplete:"模型 ID 已同步,但未能更新任何能力元数据。",syncUpstreamModelsMetadataPartial:"已更新部分模型的能力元数据;其余模型能力仍不完整。",clearAllModels:"清除所有模型",customModelName:"自定义模型名称",enterCustomModelName:"输入自定义模型名称",addModel:"填入",modelExists:"该模型已存在",modelCount:"{count} 个模型",poolMode:"池模式",poolModeHint:"上游为账号池时启用,错误不标记本地账号状态",poolModeInfo:"启用后,上游 429/403/401 错误将自动重试而不标记账号限流或错误,适用于上游指向å
8¦ä¸€ä¸ª sub2api 实例的场景。",poolModeRetryCount:"同账号重试次数",poolModeRetryCountHint:"仅在池模式下生效。0 表示不原地重试;默认 {default},最大 {max}。",poolModeRetryStatusCodes:"同账号重试状态码",poolModeRetryStatusCodesHint:"仅在池模式下生效。以英文逗号分隔的 HTTP 状态码(100-599),命中时触发同账号重试。留空使用默认值({default})。",customErrorCodes:"自定义错误码",customErrorCodesHint:"仅对选中的错误码停止调度",customErrorCodesWarning:"仅选中的错误码会停止调度,其他错误将返回 500。",customErrorCodes429Warning:"429 已有内置的限流处理机制。添加到自定义错误码后,将直接停止调度而非临时限流。确定要添加吗?",customErrorCodes529Warning:"529 已有内置的过载处理机制。添加到自定义错误码后,将直接停止调度而非临时标记过载。确定要添加吗?",selectedErrorCodes:"已选择",noneSelectedUsesDefault:"未选择(使用默认策略)",enterErrorCode:"输入错误码 (100-599)",invalidErrorCode:"请输入有效的 HTTP 错误码 (100-599)",errorCodeExists:"该错误码已被选中",interceptWarmupRequests:"拦截预热请求",interceptWarmupRequestsDesc:"启用后,标题生成等预热请求将返回 mock 响应,不消耗上游 token",headerOverride:{title:"请求头覆写",hint:"转发时用配置值覆盖同名请求头(不区分大小写)",info:"仅对本账号的出站请求生效:配置的请求头会在转发前覆盖客户端/网关生成的同名头。认证头(authorization、x-api-key)与连接控制头不允许覆写。",namePlaceholder:"请求头名称(如 user-agent)",valuePlaceholder:"覆写值(留空表示不覆写)",addRow:"添加请求头",importJson:"JSON 导入",importJsonApply:"解析
8并填入",importJsonCancel:"取消",importJsonHint:"粘贴扁平 JSON 对象(请求头名 → 值),解析后将整体替换当前列表。",importJsonInvalid:'JSON 格式不正确:需要"请求头名 → 字符串值"的扁平对象',copyJson:"复制为 JSON",emptyValueHint:"值留空的行不会参与覆盖,仅作为待填写的占位。",bulkDisableHint:"保存后将关闭所选账号的请求头覆写并清空已有配置。",bulkReplaceHint:"保存后将用下方配置整体替换所选账号已有的请求头覆写配置。",bulkEmptyRows:"请至少添加一行请求头再保存;如需清空已有配置,请关闭上方开关。",invalidName:"请求头名称格式不正确(仅允许字母、数字和 !#$%&'*+-.^_`|~ 字符)",blockedName:"该请求头不允许覆写(认证头与连接控制头由系统管理)",duplicateName:"存在重复的请求头名称(匹配不区分大小写)",invalidValue:"请求头值不合法(不允许控制字符,长度不超过 8192)",tooManyEntries:"请求头覆写条目过多(最多 64 条)"},grokCustomBaseUrl:{title:"自定义上游地址",hint:"开启后账号流量(对话/媒体/探测)改发指定地址;OAuth 授权与令牌刷新不受影响,仍走官方端点。",placeholder:"https://relay.example.com/v1",required:"开启自定义上游地址后必须填写地址",invalid:"上游地址格式不正确(需为 http(s):// 开头的完整地址)",presets:{cli:"Grok Build CLI",official:"官方 API"}},grokClientToolCache:{title:"客户端工具缓存(可能改变自动工具选择)",hint:"仅对已识别为 Free 的 Grok OAuth 账号生效,默认会为 Codex、Trae 等客户端函数工具请求启用上游提示缓存;如不接受自动工具选择行为,可关闭此开关退出。"},autoPauseOnExpired:"过期自动暂停调度",autoPauseOnExpiredDesc:"启用后,账号过期将自动暂停调度",autoPause5hThreshold:"5h 用量阈值(%)",autoPause7dThreshold:"7d 用量阈值(%)",autoPauseThresholdHint:"留空或填 0 表示使用全局默认阈值(在运维设置中配置);填具体值则覆盖全局默认。达到阈值后仅在调度时跳过账号,不修改 schedulable。",autoPause5hDisabled:"禁用 5h 自动暂停",autoPause7dDisabled:"禁用 7d 自动暂停",autoPauseDisabledHint:"开启后该账号永不进入自动暂停(即使全局默认阈值已配置)。",autoResetCredit:{title:"自动使用重置卡",hint:"仅在实际用量达到阈值时使用最早到期的可用卡;默认关闭。无卡或失败时账号保持暂停。",threshold5h:"5h 自动用卡阈值(%)",threshold7d:"7d 自动用卡阈值(%)",thresholdHint:"两个窗口独立判断,任一达到自身阈值即触发。可填写 0.1–100,默认均为 100。",thresholdInvalid:"自动使用重置卡阈值必须在 0.1% 到 100% 之间。"},quotaControl:{title:"配额控制",hint:"配置费用窗口、会话限制、客户端亲和等调度控制。",windowCost:{label:"5h窗口费用控制",hint:"限制账号在5小时窗口内的费用使用",limit:"费用阈值",limitPlaceholder:"50",limitHint:"达到阈值后不参与新请求调度",stickyReserve:"粘性预留额度",stickyReservePlaceholder:"10",stickyReserveHint:"为粘性会话预留的额外额度"},sessionLimit:{label:"会话数量控制",hint:"限制同时活跃的会话数量",maxSessions:"最大会话数",maxSessionsPlaceholder:"3",maxSessionsHint:"同时活跃的最大会话数量",idleTimeout:"空闲超时",idleTimeoutPlaceholder:"5",idleTimeoutHint:"会话空闲超时后自动释放"},rpmLimit:{label:"RPM 限制",hint:"限制每分钟请求数量,保护上游账号",baseRpm:"基础 RPM",baseRpmPlaceholder:"15",baseRpmHint:"每分钟最大请求数,0 或留空表示不限制",strategy:"RPM 策略",strategyTiered:"三区模型",strategyStickyExempt:"粘性豁免",strategyTieredHint:"绿区→黄区→仅粘性→阻塞,逐步限流",strategyStickyExemptHint:"超限后仅允许粘性会话",strategyHint:"三区模型: 超限后逐步限制; 粘性豁免: 已有会话不受限",stickyBuffer:"粘性缓冲区",stickyBufferPlaceholder:"默认: base RPM 的 20%",stickyBufferHint:"超过 base RPM 后,粘性会话额外允许的请求数。为空则使用默认值(base RPM 的 20%,最小为 1)",userMsgQueue:"用户消息限速",userMsgQueueHint:"对用户消息施加发送限制,避免触发上游 RPM 限制",umqModeOff:"关闭",umqModeThrottle:"软性限速",umqModeSerialize:"串行队列"},tlsFingerprint:{label:"TLS 指纹模拟",hint:"模拟 Node.js/Claude Code 客户端的 TLS 指纹",defaultProfile:"内置默认",randomProfile:"随机"},sessionIdMasking:{label:"会话 ID 伪装",hint:"启用后将在 
815 分钟内固定 metadata.user_id 中的 session ID,使上游认为请求来自同一会话"},cacheTTLOverride:{label:"缓存 TTL 强制替换",hint:"将所有缓存创建 token 强制按指定的 TTL 类型(5分钟或1小时)计费",target:"目标 TTL",targetHint:"选择计费使用的 TTL 类型"},customBaseUrl:{label:"自定义转发地址",hint:"启用后将请求转发到自定义中继服务,代理地址将作为 URL 参数传递给中继服务",urlHint:"中继服务地址(如 https://relay.example.com)"},clientAffinity:{label:"客户端亲和调度",hint:"启用后,新会话会优先调度到该客户端之前使用过的账号,避免频繁切换账号"}},affinityNoClients:"无亲和客户端",affinityClients:"{count} 个亲和客户端:",affinitySection:"客户端亲和",affinitySectionHint:"控制客户端在账号间的分布。通过配置区域阈值来平衡负载。",affinityToggle:"启用客户端亲和",affinityToggleHint:"新会话优先调度到该客户端之前使用过的账号",affinityBase:"基础限额(绿区)",affinityBasePlaceholder:"留空表示不限制",affinityBaseHint:"绿区最大客户端数量(完整优先级调度)",affinityBaseOffHint:"未开启绿区限制,所有客户端均享受完整优先级调度",affinityBuffer:"缓冲区(黄区)",affinityBufferPlaceholder:"例如 3",affinityBufferHint:"黄区允许的额外客户端数量(降级优先级调度)",affinityBufferInfinite:"不限制",expired:"已过期",proxy:"代理",noProxy:"无代理",concurrency:"并发数",loadFactor:"负载因子",loadFactorHint:"提高负载因子可以提高对账号的调度频率",priority:"优先级",priorityHint:"优先级越小的账号优先使用",billingRateMultiplier:"账号计费倍率",billingRateMultiplierHint:"0 表示不计费,仅影响账号计费",expiresAt:"过期时间",expiresAtHint:"留空表示不过期",expiresAtTimezoneHint:"输入按浏览器本地时区({timezone})解释。",higherPriorityFirst:"数值越小优先级越高",mixedScheduling:"在 /v1/messages 中使用",mixedSchedulingHint:"启用后可参与 Anthropic/Gemini 分组的调度",mixedSchedulingTooltip:"!!注意!! Antigravity Claude 和 Anthropic Claude 无法在同个上下文中使用,如果你同时有 Anthropic 账号和 Antigravity 账号,开启此选项会导致经常 400 报错。开启后,请用分组功能做好 Antigravity 账号和 Anthropic 账号的隔离。一定要弄明白再开启!!",aiCreditsBalance:"AI Credits",allowOverages:"允许超量请求 (AI Credits)",allowOveragesTooltip:"仅在免费配额被明确判定为耗尽后才会使用 AI Credits。普通并发 429 限流不会切换到超量请求。",creating:"创建中...",updating:"更新中...",accountCreated:"账号创建成功",accountUpdated:"账号更新成功",failedToCreate:"创建账号失败",failedToUpdate:"更新账号失败",pleaseSelectStatus:"请选择有效的账号状态",mixedChannelWarningTitle:"混合渠道警告",mixedChannelWarning:'警告:分组 "{groupName}" 中同时包含 {currentPlatform} 和 {otherPlatform} 账号。混合使用不同渠道可能导致 thinking block 签名验证问题,会自动回退到非 thinking 模式。确定要继续吗?',pleaseEnterAccountName:"请输入账号名称",pleaseEnterApiKey:"请输入 API Key",bedrockAccessKeyId:"AWS Access Key ID",bedrockSecretAccessKey:"AWS Secret Access Key",bedrockSessionToken:"AWS Session Token",bedrockRegion:"AWS Region",bedrockRegionHint:"例如 us-east-1, us-west-2, eu-west-1",bedrockForceGlobal:"强制使用 Global 跨区域推理",bedrockForceGlobalHint:"启用后模型 ID 使用 global. 前缀(如 global.anthropic.claude-...),请求可路由到全球任意支持的区域,获得更高可用性",bedrockAccessKeyIdRequired:"请输入 AWS Access Key ID",bedrockSecretAccessKeyRequired:"请输入 AWS Secret Access Key",bedrockRegionRequired:"请选择 AWS Region",bedrockSessionTokenHint:"可选,用于临时凭证",bedrockSecretKeyLeaveEmpty:"留空以保持当前密钥",bedrockAuthMode:"认证方式",bedrockAuthModeSigv4:"SigV4 签名",bedrockAuthModeApikey:"Bedrock API Key",bedrockApiKeyLabel:"Bedrock API Key",bedrockApiKeyDesc:"Bearer Token 认证",bedrockApiKeyInput:"API Key",bedrockApiKeyRequired:"请输入 Bedrock API Key",bedrockApiKeyLeaveEmpty:"留空以保持当前密钥",apiKeyIsRequired:"API Key 是必需的",leaveEmptyToKeep:"留空以保持当前密钥",upstream:{baseUrl:"上游 Base URL",baseUrlHint:"上游 Antigravity 服务的地址,例如:https://cloudcode-pa.googleapis.com",apiKey:"上游 API Key",apiKeyHint:"上游服务的 API Key",pleaseEnterBaseUrl:"请输入上游 Base URL",pleaseEnterApiKey:"请输入上游 API Key"},oauth:{title:"Claude 账号授权",authMethod:"授权方式",manualAuth:"手动授权",cookieAutoAuth:"Cookie 自动授权",cookieAutoAuthDesc:"使用 claude.ai sessionKey 自动完成 OAuth 授权,无需手动打开æµ
8è§ˆå™¨ã€‚",sessionKey:"sessionKey",keysCount:"{count} 个密钥",batchCreateAccounts:"将批量创建 {count} 个账号",sessionKeyPlaceholder:`每行一个 sessionKey,例如:
9sk-ant-sid01-xxxxx...
10sk-ant-sid01-yyyyy...`,sessionKeyPlaceholderSingle:"sk-ant-sid01-xxxxx...",howToGetSessionKey:"如何获取 sessionKey",step1:"在浏览器中登录 claude.ai",step2:"按 F12 打开开发者工具",step3:"切换到 Application 标签",step4:"找到 Cookies → https://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} 个账号",batchSuccess:"成功创建 {count} 个账号",batchPartialSuccess:"部分成功:{success} 个成功,{failed} 个失败",batchFailed:"批量创建失败",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:复制完整的链接
11(http://localhost:xxx/auth/callback?code=...)
12方式2:仅复制 code 参数的值`,authCodeHint:"您可以直接复制整个链接或仅复制 code 参数值,系统会自动识别",failedToGenerateUrl:"生成 OpenAI 授权链接失败",failedToExchangeCode:"OpenAI 授权码兑换失败",failedToValidateRT:"验证 Refresh Token 失败",errors:{OPENAI_OAUTH_PROXY_REQUIRED:"未设置代理,当前服务器无法直连 OpenAI,导致 OpenAI OAuth 请求失败。请先选择可访问 OpenAI 的代理后重试;如果授权码已失效,请重新生成授权链接。"},refreshTokenAuth:"手动输入 RT",refreshTokenDesc:"输入您已有的 OpenAI Refresh Token,支持批量输入(每行一个),系统将自动验证并创建账号。",refreshTokenPlaceholder:`粘贴您的 OpenAI Refresh Token...
13支持多个,每行一个`,mobileRefreshTokenAuth:"手动输入 Mobile RT",accessTokenAuth:"手动输入 AT",codexSessionAuth:"Codex OAuth auth.json / AT 导入",codexSessionDesc:"粘贴 Codex OAuth auth.json 或 accessToken,按第一步配置创建账号。",codexSessionInputLabel:"Codex OAuth auth.json 或 accessToken",codexSessionPlaceholder:"支持多行,每行一个 token 或 auth.json 对象",codexSessionHint:"OAuth session/accessToken 导入继续沿用原有过期规则。",codexSessionImportAndCreate:"导入并创建账号",codexSessionEmpty:"请输入 Codex auth.json 或 accessToken",codexSessionImportFailed:"Codex 账号导入失败",codexSessionImportSuccess:"导入完成:新增 {created},更新 {updated},跳过 {skipped}",codexSessionImportPartial:"部分成功:新增 {created},更新 {updated},跳过 {skipped},失败 {failed}",agentIdentityAuth:"Agent Identity auth.json",agentIdentityDesc:"导入 Codex Agent Identity auth.json,不保存 OAuth access token 或 refresh token。",agentIdentityInput
13Label:"Agent Identity auth.json",agentIdentityPlaceholder:"粘贴一个 Agent Identity auth.json 对象",agentIdentityHint:"文件必须使用 auth_mode=agentIdentity;每次上游请求都会动态签名。",agentIdentityInvalid:"请选择 auth_mode=agentIdentity 的 Codex auth.json。",codexPatAuth:"Codex Personal Access Token",codexPatDesc:"输入 Codex at- Personal Access Token,系统会先调用 OpenAI whoami 校验后再创建账号。",codexPatInputLabel:"Codex PAT",codexPatPlaceholder:"at-...",codexPatHint:"这是独立认证模式,不保存 refresh_token,也不会写入 OAuth access_token 过期时间。",codexPatImportAndCreate:"校验并创建 Codex PAT 账号",codexPatEmpty:"请输入 Codex Personal Access Token",codexPatImportFailed:"Codex PAT 账号创建失败",sessionTokenAuth:"手动输入 ST",sessionTokenDesc:"输入您已有的 Session Token,支持批量输入(每行一个),系统将自动验证并创建账号。",sessionTokenPlaceholder:`粘贴您的 Session Token...
14支持多个,每行一个`,sessionTokenRawLabel:"原始字符串",sessionTokenRawPlaceholder:"粘贴 /api/auth/session 原始数据或 Session Token...",sessionTokenRawHint:"支持粘贴完整 JSON,系统会自动解析 ST 和 AT。",openSessionUrl:"打开获取链接",copySessionUrl:"复制链接",sessionUrlHint:"该链接通常可获取 AT。若返回中无 sessionToken,请从浏览器 Cookie 复制 __Secure-next-auth.session-token 作为 ST。",parsedSessionTokensLabel:"解析出的 ST",parsedSessionTokensEmpty:"未解析到 ST,请检查输入内容",parsedAccessTokensLabel:"解析出的 AT",validating:"验证中...",validateAndCreate:"验证并创建账号",pleaseEnterRefreshToken:"请输入 Refresh Token",pleaseEnterSessionToken:"请输入 Session Token"},grok:{title:"Grok 账号授权",followSteps:"请按照以下步骤授权您的 xAI/Grok 账号:",step1GenerateUrl:"生成 xAI 授权链接",generateAuthUrl:"生成授权链接",step2OpenUrl:"在浏览器中打开链接并完成授权",openUrlDesc:"在新标签页中打开授权链接,登录 xAI 并授权 API 访问。",importantNotice:"当浏览器跳转到本地 callback URL 后,请复制完整 URL 或 code 参数回填到这里。",step3EnterCode:"输入授权链接或 Code",authCodeDesc:"授权完成后,粘贴 callback URL、查询字符串或授权码:",authCode:"授权链接或 Code",authCodePlaceholder:"粘贴完整 callback URL、?code=... 查询字符串或 code 值",authCodeHint:"支持完整 callback URL、查询字符串或裸 code。",refreshTokenAuth:"手动输入 RT",refreshTokenDesc:"输入已有的 xAI refresh token,支持批量输入(每行一个)。",refreshTokenPlaceholder:`粘贴您的 xAI refresh token...
15支持多个,每行一个`,ssoCookieAuth:"SSO Cookie 导入",ssoCookieDesc:"每行粘贴一个 Grok Web SSO key,系统会自动走 xAI Device Flow 并转换为 Grok Build OAuth 凭据。",ssoCookieLabel:"Grok Web SSO Key",ssoCookiePlaceholder:`每行一个 SSO key
16支持多个,每行一个`,ssoCookieHint:"每行一个 SSO key;多个 key 会 3 路并发导入,耗时约 90 秒 × 批次数,建议使用对应地区代理。",emailPasswordAuth:"邮箱密码登录",emailPasswordDesc:"使用 Grok 网页邮箱与密码登录。服务端仅用密码换取临时 SSO 再转 Build OAuth;密码与 raw SSO 均不会写入账号凭据。",emailPasswordInputLabel:"邮箱----密码",emailPasswordPlaceholder:`user{'@'}example.com----your-password
17支持多个,每行一组`,emailPasswordHint:"格式:email----password(密码可含 -)。需要配置 YesCaptcha 密钥;建议搭配代理。",pleaseEnterPassword:"请输入 email----password(每行一组)",pleaseEnterSSOToken:"请输入 SSO Token",failedToValidateSSO:"校验 Grok SSO 失败",failedToAuthorizePassword:"Grok 密码授权失败",convertingSSO:"转换中...",convertSSOAndCreate:"转换并创建账号",validating:"验证中...",validateAndCreate:"验证并创建账号",pleaseEnterRefreshToken:"请输入 Refresh Token",failedToGenerateUrl:"生成 Grok 授权链接失败",missingExchangeParams:"缺少授权码、state 或 OAuth 会话",failedToExchangeCode:"Grok 授权码兑换失败",failedToValidateRT:"验证 Grok refresh token 失败",failedToConvertSSO:"Grok SSO 转换失败",errors:{GROK_OAUTH_SESSION_NOT_FOUND:"Grok OAuth 会话不存在或已过期。请重新生成授权链接ï¼
17Œå¹¶ç²˜è´´æœ€æ–°çš„回调链接。",GROK_OAUTH_INVALID_STATE:"Grok OAuth state 与当前会话不匹配。请粘贴同一次生成的授权链接返回的回调 URL。",GROK_OAUTH_STATE_REQUIRED:"回调链接缺少 OAuth state。请粘贴完整 callback URL,不要只粘贴 code。",GROK_OAUTH_CODE_REQUIRED:"缺少 Grok 授权码。请粘贴完整 callback URL、查询字符串或 code 值。",GROK_OAUTH_NO_REFRESH_TOKEN:"Grok 响应未返回 refresh token。请重新生成授权链接,并再次确认 offline access 授权。",GROK_OAUTH_PROXY_NOT_AVAILABLE:"无法查询 Grok OAuth 代理配置。请检查选择的代理后重试。",GROK_OAUTH_PROXY_NOT_FOUND:"找不到所选代理。请选择可用代理后重试。"},oauthOnlyHint:"首版 Grok 支持仅包含 OAuth 订阅的 Responses API 文本/推理转发。"},gemini:{title:"Gemini 账户授权",followSteps:"请按照以下步骤完成 Gemini 账户的授权:",step1GenerateUrl:"生成授权链接",generateAuthUrl:"生成授权链接",projectIdLabel:"Project ID(可选)",projectIdPlaceholder:"例如:my-gcp-project 或 cloud-ai-companion-xxxxx",projectIdHint:"留空则在兑换授权码后自动探测;若自动探测失败,可填写后重新生成授权链接再授权。",howToGetProjectId:"如何获取",step2OpenUrl:"在浏览器中打开链接并完成授权",openUrlDesc:"请在新标签页中打开授权链接,登录您的 Google 账户并授权。",step3EnterCode:"输入回调链接或 Code",authCodeDesc:"授权完成后,复制浏览器跳转后的回调链接(推荐)或仅复制 code,粘贴到下方即可。",authCode:"回调链接或 Code",authCodePlaceholder:`方式1(推荐):粘贴回调链接
18方式2:仅粘贴 code 参数的值`,authCodeHint:"系统会自动从链接中解析 code/state。",redirectUri:"Redirect URI",redirectUriHint:"需要在 Google OAuth Client 中配置,且必须与此处完全一致。",confirmRedirectUri:"我已在 Google OAuth Client 中配置了该 Redirect URI(必须完全一致)",invalidRedirectUri:"Redirect URI 必须是合法的 http(s) URL",redirectUriNotConfirmed:"请确认 Redirect URI 已在 Google OAuth Client 中正确配置",missingRedirectUri:"缺少 Redirect URI",failedToGenerateUrl:"生成 Gemini 授权链接失败",missingExchangeParams:"缺少 code / session_id / state",failedToExchangeCode:"Gemini 授权码兑换失败",missingProjectId:"GCP Project ID 获取失败:您的 Google 账号未关联有效的 GCP 项目。请前往 Google Cloud Console 激活 GCP 并绑定信用卡,或在授权时手动填写 Project ID。",modelPassthrough:"Gemini 直接转发模型",modelPassthroughDesc:"所有模型请求将直接转发至 Gemini API,不进行模型限制或映射。",stateWarningTitle:"提示",stateWarningDesc:"建议粘贴完整回调链接(包含 code 和 state)。",oauthTypeLabel:"OAuth 类型",needsProjectId:"内置授权(Code Assist)",needsProjectIdDesc:"需要 GCP 项目与 Project ID",noProjectIdNeeded:"自定义授权(AI Studio)",noProjectIdNeededDesc:"需管理员配置 OAuth Client",aiStudioNotConfiguredShort:"未配置",aiStudioNotConfiguredTip:"AI Studio OAuth 未配置:请先设置 GEMINI_OAUTH_CLIENT_ID / GEMINI_OAUTH_CLIENT_SECRET,并在 Google OAuth Client 添加 Redirect URI:http://localhost:1455/auth/callback(Consent Screen scopes 需包含 https://www.googleapis.com/auth/generative-language.retriever)",aiStudioNotConfigured:"AI Studio OAuth 未配置:请先设置 GEMINI_OAUTH_CLIENT_ID / GEMINI_OAUTH_CLIENT_SECRET,并在 Google OAuth Client 添加 Redirect URI:http://localhost:1455/auth/callback"},antigravity:{title:"Antigravity 账户授权",followSteps:"请按照以下步骤完成 Antigravity 账户的授权:",step1GenerateUrl:"生成授权链接",generateAuthUrl:"生成授权链接",step2OpenUrl:"在浏览器中打开链接并完成授权",openUrlDesc:"请在新标签页中打开授权链接,登录您的 Google 账户并授权。",importantNotice:"重要提示:授权后页面可能会加载较长时间,请耐心等待。当浏览器地址栏变为 http://localhost... 开头时,表示授权已完成。",step3EnterCode:"输入授权链接或 Code",authCodeDe
18sc:"授权完成后,当页面地址变为 http://localhost:xxx/auth/callback?code=... 时:",authCode:"授权链接或 Code",authCodePlaceholder:`方式1:复制完整的链接
19(http://localhost:xxx/auth/callback?code=...)
20方式2:仅复制 code 参数的值`,authCodeHint:"您可以直接复制整个链接或仅复制 code 参数值,系统会自动识别",failedToGenerateUrl:"生成 Antigravity 授权链接失败",missingExchangeParams:"缺少 code / session_id / state",failedToExchangeCode:"Antigravity 授权码兑换失败",refreshTokenAuth:"手动输入 RT",refreshTokenDesc:"输入您已有的 Antigravity Refresh Token,支持批量输入(每行一个),系统将自动验证并创建账号。",refreshTokenPlaceholder:`粘贴您的 Antigravity Refresh Token...
21支持多个,每行一个`,validating:"验证中...",validateAndCreate:"验证并创建账号",pleaseEnterRefreshToken:"请输入 Refresh Token",failedToValidateRT:"验证 Refresh Token 失败"}},gemini:{helpButton:"使用帮助",helpDialog:{title:"Gemini 使用指南",apiKeySection:"API Key 相关链接"},modelPassthrough:"Gemini 直接转发模型",modelPassthroughDesc:"所有模型请求将直接转发至 Gemini API,不进行模型限制或映射。",baseUrlHint:"留空使用官方 Gemini API",apiKeyHint:"您的 Gemini API Key(以 AIza 开头)",tier:{label:"账号等级",hint:"提示:系统会优先尝试自动识别账号等级;若自动识别不可用或失败,则使用你选择的等级作为回退(本地模拟配额)。",aiStudioHint:"AI Studio 的配额是按模型分别限流(Pro/Flash 独立)。若已绑卡(按量付费),请选 Pay-as-you-go。",googleOne:{free:"Google One Free",pro:"Google One Pro",ultra:"Google One Ultra"},gcp:{standard:"GCP Standard",enterprise:"GCP Enterprise"},aiStudio:{free:"Google AI Free",paid:"Google AI Pay-as-you-go"}},accountType:{oauthTitle:"OAuth 授权(Gemini)",oauthDesc:"使用 Google 账号授权,并选择 OAuth 子类型。",apiKeyTitle:"API 密钥(AI Studio)",apiKeyDesc:"最快接入方式,使用 AIza API Key。",apiKeyNote:"适合轻量测试。免费层限流严格,数据可能用于训练。",apiKeyLink:"获取 API Key",quotaLink:"配额说明"},oauthType:{builtInTitle:"内置授权(Gemini CLI / Code Assist)",builtInDesc:"使用 Google 内ç
21½®å®¢æˆ·ç«¯ ID,无需管理员配置。",builtInRequirement:"需要 GCP 项目并填写 Project ID。",googleOneDesc:"个人账号,享受 Google One 订阅配额",codeAssistDesc:"企业级,需要 GCP 项目",codeAssistRequirement:"需要激活 GCP 项目并绑定信用卡",showAdvanced:"显示高级选项(自建 OAuth Client)",hideAdvanced:"隐藏高级选项(自建 OAuth Client)",gcpProjectLink:"创建项目",customTitle:"自定义授权(AI Studio OAuth)",customDesc:"使用管理员预设的 OAuth 客户端,适合组织管理。",customRequirement:"需管理员配置 Client ID 并加入测试用户白名单。",badges:{recommended:"推荐",highConcurrency:"高并发",individuals:"推荐个人用户",noGcp:"无需 GCP",enterprise:"企业用户",noAdmin:"无需管理员配置",orgManaged:"组织管理",adminRequired:"需要管理员"}},setupGuide:{title:"Gemini 使用准备",checklistTitle:"准备工作",checklistItems:{usIp:"使用美国 IP,并确保账号归属地为美国。",age:"账号需满 18 岁。"},activationTitle:"服务激活",activationItems:{geminiWeb:"激活 Gemini Web,避免 User not initialized。",gcpProject:"激活 GCP 项目,获取 Code Assist 所需 Project ID。"},links:{countryCheck:"检查归属地",countryChange:"修改归属地",geminiWebActivation:"激活 Gemini Web",gcpProject:"打开 GCP 控制台"}},quotaPolicy:{title:"Gemini 配额与限流政策(参考)",note:"注意:Gemini 官方未提供用量查询接口。此处显示的“每日配额”是由系统根据账号等级模拟计算的估算值,仅供调度参考,请以 Google 官方实际报错为准。",columns:{channel:"授权通道",account:"账号状态",limits:"限流政策",docs:"官方文档"},docs:{codeAssist:"Code Assist 配额",aiStudio:"AI Studio 定价",vertex:"Vertex AI 配额"},simulatedNote:"本地模拟配额,仅供参考",rows:{googleOne:{channel:"Google One OAuth(个人版 / Code Assist for Individuals)",limitsFree:"共享池:1000 RPD / 60 RPM(不分模型)",limitsPro:"共享池:1500 RPD / 120 RPM(不分模型)",limitsUltra:"共享池:2000 RPD / 120 RPM(不分模型)"},gcp:{channel:"GCP Code Assist OAuth(企业版)",limitsStandard:"共享池:1500 RPD / 120 RPM(不分模型)",limitsEnterprise:"共享池:2000 RPD / 120 RPM(不分模型)"},cli:{channel:"Gemini CLI(官方 Google 登录 / Code Assist)",free:"免费 Google 账号",premium:"Google One AI Premium",limitsFree:"RPD ~1000;RPM ~60(软限制)",limitsPremium:"RPD ~1500+;RPM ~60+(优先队列)"},gcloud:{channel:"GCP Code Assist(gcloud 登录)",account:"未购买 Code Assist 订阅",limits:"RPD ~1000;RPM ~60(预览期)"},aiStudio:{channel:"AI Studio API Key / OAuth",free:"未绑卡(免费层)",paid:"已绑卡(按量付费)",limitsFree:"RPD 50;RPM 2(Pro)/ 15(Flash)",limitsPaid:"RPD 不限;RPM 1000(Pro)/ 2000(Flash)(按模型配额)"},customOAuth:{channel:"Custom OAuth Client(GCP)",free:"项目未绑卡",paid:"项目已绑卡",limitsFree:"RPD 50;RPM 2(项目配额)",limitsPaid:"RPD 不限;RPM 1000+(项目配额)"}}},rateLimit:{ok:"未限流",unlimited:"无限流",limited:"限流 {time}",now:"现在"}},reAuthorizeAccount:"重新授权账号",claudeCodeAccount:"Claude Code 账号",openaiAccount:"OpenAI 账号",geminiAccount:"Gemini 账号",antigravityAccount:"Antigravity 账号",grokAccount:"Grok 账号",inputMethod:"输入方式",reAuthorizedSuccess:"账号重新授权成功",testAccountConnection:"测试账号连接",errorPrefix:"错误:{message}",imagePreviewAlt:"测试图片 {index}",imageLightboxAlt:"图片预览",account:"账号",readyToTest:'准备测试。点击"开始测试"按钮开始...',connectingToApi:"连接 API 中...",testCompleted:"测试完成!",connectedToApi:"已连接到 API",usingModel:"使用模型:{model}",sendingTestMessage:'发送测试消息:"hi"',sendingImageRequest:"发送生图测试请求...",response:"响应:",startTest:"开始测试",retry:"重试",copyOutput:"复制输出",outputCopied:"输出已复制",startingTestForAccount:"开始测试账号:{name}",testAccountTypeLabel:"账号类型:{type}",selectTestModel:"选择测试模型",testModel:"测试模型",testPrompt:'提示词:"hi"',imagePromptLabel:"生图提示词",imagePromptPlaceholder:"ä¾
21‹å¦‚:生成一只戴宇航员头盔的橘猫,像素插画风格,纯色背景。",imagePromptDefault:"Generate a cute orange cat astronaut sticker on a clean pastel background.",imageTestHint:"调用独立 /v1/images/generations 生图,并在下方预览返回图片。",imageTestMode:"模式:生图测试",videoPromptLabel:"视频提示词",videoPromptPlaceholder:"例如:一只红球在白地板上弹跳一次,动作简短。",videoPromptDefault:"A red ball bouncing once on a white floor, short simple motion.",videoTestHint:"调用独立 /v1/videos/generations,轮询至完成后下载成品视频并在页面上预览。",videoTestMode:"模式:视频生成测试",sendingVideoRequest:"正在发送视频生成测试请求...",imagePreview:"生成结果:",imageReceived:"已收到第 {count} 张测试图片",audioPreview:"生成音频:",audioReceived:"已收到第 {count} 段测试音频",videoPreview:"生成视频:",videoReceived:"已收到第 {count} 段测试视频",viewStats:"查看统计",usageStatistics:"使用统计",last30DaysUsage:"近30天使用统计(日均基于实际使用天数)",stats:{totalCost:"30天总费用",accumulatedCost:"累计成本",standardCost:"标准计费",totalRequests:"30天总请求",totalCalls:"累计调用次数",avgDailyCost:"日均费用",basedOnActualDays:"基于 {days} 天实际使用",avgDailyRequests:"日均请求",avgDailyUsage:"平均每日调用",todayOverview:"今日概览",cost:"费用",requests:"请求",tokens:"Token",highestCostDay:"最高费用日",highestRequestDay:"最高请求日",date:"日期",accumulatedTokens:"累计 Token",totalTokens:"30天总计",dailyAvgTokens:"日均 Token",performance:"性能",avgResponseTime:"平均响应",daysActive:"活跃天数",recentActivity:"最近统计",todayRequests:"今日请求",todayTokens:"今日 Token",todayCost:"今日费用",usageTrend:"30天费用与请求趋势",noData:"该账号暂无使用数据"}}},l={scheduledTests:{title:"定时测试",addPlan:"添加计划",editPlan:"编辑计划",deletePlan:"删除计划",model:"模型",cronExpression:"Cron 表达式",enabled:"启用",lastRun:"上次运行",nextRun:"下次运行",maxResults:"最大结果数",noPlans:"暂无定时测试计划",confirmDelete:"确定要删除此计划吗?",createSuccess:"计划创建成功",updateSuccess:"计划更新成功",deleteSuccess:"计划删除成功",results:"测试结果",noResults:"暂无测试结果",responseText:"响应",errorMessage:"错误",success:"成功",failed:"失败",running:"运行中",schedule:"定时测试",cronHelp:"标准 5 字段 cron 表达式(例如 */30 * * * *)",cronTooltipTitle:"Cron 表达式示例:",cronTooltipMeaning:"用于定义自动执行测试的时间规则,格式依次为:分钟 小时 日 月 星期。",cronTooltipExampleEvery30Min:"*/30 * * * *:每 30 分钟运行一次",cronTooltipExampleHourly:"0 * * * *:每小时整点运行一次",cronTooltipExampleDaily:"0 9 * * *:每天 09:00 运行一次",cronTooltipExampleWeekly:"0 9 * * 1:每周一 09:00 运行一次",cronTooltipRange:"推荐填写范围:使用标准 5 字段 cron;如果只是健康检查,建议从每 30 分钟、每 1 小时或每天固定时间开始,不建议一开始就设置过高频率。",maxResultsTooltipTitle:"最大结果数说明:",maxResultsTooltipMeaning:"用于限制单个计划最多保留多少条历史测试结果,避免结果列表无限增长。",maxResultsTooltipBody:"系统只会保留最近的测试结果;当保存数量超过这个值时,更早的历史记录会自动清理,避免列表过长和存储持续增长。",maxResultsTooltipExample:"例如填写 100,表示最多保存最近 100 次测试结果;第 101 次结果写入后,最早的一条会被清理。",maxResultsTooltipRange:"推荐填写范围:一般可填 20 到 200。只关注近期可用性时可填 20-50;需要回看较长时间的波动趋势时可填 100-200。",autoRecover:"自动恢复",autoRecoverHelp:"测试成功后自动恢复异常状态的账号"},proxies:{title:"IP管理",description:"管理代理服务器配置",createProxy:"添加代理",editProxy:"编辑代理",deleteProxy:"删除代理",ad:{inline:"正在寻找合适的代理 IP?"},deleteConfirmMessage:"确定要删除代理 '{name}' 吗?",testProxy:"测试代理",dataImport:"导入",dataExportSelected:"导出选中",dataImportTitle:"导入代理",dataImportHint:"上传代理导出的 JSON 文件以批量导入代理。",dataImportWarning:"导入将创建或复用代理,保留状态并在完成后自动触发延迟检测。",dataImportFile:"数据文件",dataImportButton:"开始导入",dataImporting:"导入中...",dataImportSelectFile:"请选择数据文件",dataImportParseFailed:"数据解析失败",dataImportFailed:"数据导入失败",dataImportResult:"导入结果",dataImportResultSummary:"创建 {proxy_created},复用 {proxy_reused},失败 {proxy_failed}",dataImportErrors:"失败详情",dataImportSuccess:"导入完成:创建 {proxy_created},复用 {proxy_reused}",dataImportCompletedWithErrors:"导入完成但有错误:失败 {proxy_failed}",dataExport:"导出",dataExportConfirmMessage:"导出的数据包含代理的敏感信息,请妥善保存。",dataExportConfirm:"确认导出",dataExported:"数据导出成功",dataExportFailed:"数据导出失败",columns:{name:"名称",protocol:"协议",address:"地址",auth:"认证",location:"地理位置",status:"状态",accounts:"账号数",latency:"延迟",expiry:"有效期",createdAt:"创建时间",actions:"操作",nameLabel:"名称",namePlaceholder:"请输入代理名称",protocolLabel:"协议",selectProtocol:"选择协议",hostLabel:"主机",hostPlaceholder:"请输入主机地址",portLabel:"端口",portPlaceholder:"请输入端口",usernameLabel:"用户名(可选)",usernamePlaceholder:"请输入用户名",passwordLabel:"密码(可选)",passwordPlaceholder:"请输入密码",priorityLabel:"优先级",statusLabel:"状态"},filters:{protocol:"协议",allProtocols:"全部协议",status:"状态",allStatuses:"全部状态"}
21,copyProxyUrl:"复制代理 URL",urlCopied:"代理 URL 已复制",allProtocols:"全部协议",allStatus:"全部状态",searchProxies:"搜索代理...",protocols:{http:"HTTP",https:"HTTPS",socks5:"SOCKS5",socks5h:"SOCKS5H (远程 DNS)"},name:"名称",protocol:"协议",host:"主机",port:"端口",username:"用户名(可选)",password:"密码(可选)",status:"状态",enterProxyName:"请输入代理名称",optionalAuth:"可选认证信息",leaveEmptyToKeep:"留空保持不变",form:{hostPlaceholder:"请输入主机地址",portPlaceholder:"请输入端口"},noProxiesYet:"暂无代理",createFirstProxy:"添加您的第一个代理以开始使用。",testConnection:"测试连接",qualityCheck:"质量检测",batchQualityCheck:"批量质量检测",batchTest:"批量测试",testFailed:"失败",latencyFailed:"链接失败",batchTestEmpty:"暂无可测试的代理",batchTestDone:"批量测试完成,共测试 {count} 个代理",batchTestFailed:"批量测试失败",batchDeleteAction:"删除",batchDelete:"批量删除",batchDeleteConfirm:"确定删除选中的 {count} 个代理吗?已被账号使用的将自动跳过。",batchDeleteDone:"已删除 {deleted} 个代理,跳过 {skipped} 个",batchDeleteSkipped:"已跳过 {skipped} 个代理",batchDeleteFailed:"批量删除失败",deleteBlockedInUse:"该代理已有账号使用,无法删除",accountsTitle:"使用该IP的账号",accountsEmpty:"暂无账号使用此代理",accountsFailed:"获取账号列表失败",accountName:"账号名称",accountPlatform:"所属平台",accountNotes:"备注",standardAdd:"标准添加",batchAdd:"快捷添加",batchInput:"代理列表",batchInputPlaceholder:`每行输入一个代理,支持以下格式:
22socks5://user:pass{'@'}192.168.1.1:1080
23http://192.168.1.1:8080
24https://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:"批量导入失败",saving:"保存中...",testing:"测试中...",creating:"创建中...",updating:"更新中...",noProxies:"暂无代理",noProxiesDescription:"添加代理服务器以增强 API 访问稳定性ã€
24‚",proxyCreated:"代理添加成功",proxyUpdated:"代理更新成功",proxyDeleted:"代理删除成功",proxyWorking:"代理连接正常",proxyWorkingWithLatency:"代理连接正常,延迟 {latency}ms",proxyTestFailed:"代理测试失败",qualityCheckDone:"质量检测完成:评分 {score}({grade})",qualityCheckFailed:"代理质量检测失败",batchQualityDone:"批量质量检测完成,共检测 {count} 个;优质 {healthy} 个,告警 {warn} 个,挑战 {challenge} 个,异常 {failed} 个",batchQualityFailed:"批量质量检测失败",batchQualityEmpty:"暂无可检测质量的代理",qualityReportTitle:"代理质量检测报告",qualityGrade:"等级 {grade}",qualityExitIP:"出口 IP",qualityCountry:"出口地区",qualityBaseLatency:"基础延迟",qualityCheckedAt:"检测时间",qualityTableTarget:"检测项",qualityTableStatus:"状态",qualityTableLatency:"延迟",qualityTableMessage:"说明",qualityInline:"质量 {grade}/{score}",qualityStatusHealthy:"优质",qualityStatusPass:"通过",qualityStatusWarn:"告警",qualityStatusFail:"失败",qualityStatusChallenge:"挑战",qualityTargetBase:"基础连通性",proxyCreatedSuccess:"代理添加成功",proxyUpdatedSuccess:"代理更新成功",proxyDeletedSuccess:"代理删除成功",testSuccess:"代理测试通过",failedToLoad:"加载代理列表失败",failedToSave:"保存代理失败",failedToDelete:"删除代理失败",failedToCreate:"创建代理失败",failedToUpdate:"更新代理失败",failedToTest:"测试代理失败",nameRequired:"请输入代理名称",hostRequired:"请输入主机地址",portInvalid:"端口必须在 1-65535 之间",deleteConfirm:"确定要删除代理 '{name}' 吗?使用此代理的账号将被移除代理设置。",neverExpires:"永不过期",expired:"已过期",overdueDays:"已超期 {days} 天",expiringInDays:"{days} 天后到期",remainingDays:"剩余 {days} 天",expiresAt:"有效期",nDays:"{days} 天",expiryDaysPlaceholder:"自定义天数,留空 = 永不过期",expiryWarnDays:"到期提醒提前天数",fallbackMode:"到期回退",fallbackNone:"不回退",fallbackProxy:"指定备用代理",fallbackDirect:"回退直连",backupProxy:"备用代理"},redeem:{title:"兑换码管理",description:"生成和管理兑换码",generateCodes:"生成兑换码",columns:{code:"兑换码",type:"类型",value:"面值",status:"状态",usedBy:"使用者",usedAt:"使用时间",expiresAt:"过期时间",createdAt:"创建时间",actions:"操作"},types:{balance:"余额",concurrency:"并发数",subscription:"订阅",invitation:"邀请码",admin_balance:"余额(管理员)",admin_concurrency:"并发数(管理员)"},balance:"余额",concurrency:"并发数",subscription:"订阅",invitation:"邀请码",invitationHint:"邀请码用于限制用户注册,使用后自动标记为已使用。",allTypes:"全部类型",allStatus:"全部状态",unused:"未使用",used:"已使用",searchCodes:"搜索兑换码或邮箱...",exportCsv:"导出 CSV",batchUpdate:"批量修改",batchUpdateTitle:"批量修改兑换码",selectedCount:"已选择 {count} 个兑换码",clearSelection:"清空选择",selectCodesFirst:"请先选择兑换码",noBatchFieldsSelected:"请至少勾选一个要修改的字段",batchUpdateSuccess:"成功修改 {count} 个兑换码",failedToBatchUpdate:"批量修改兑换码失败",batchFields:{status:"状态",expiresAt:"过期时间",notes:"备注",group:"分组"},batchNotesPlaceholder:"输入新的备注,留空可清空备注",clearGroup:"清空分组",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:"有效天数",codeExpiry:"兑换码过期",neverExpires:"永不过期",expiryPresetDays:"{days} 天",customExpiry:"自定义",customExpiryDays:"自定义天数",expiryDaysRequired:"请输入有效的过期天数",expiryDateRequired:"请输入有效的过期日期和时间",localTimeZoneHint:"自定义时间按浏览器本地时区({timezone})解释。",groupRequired:"请选择订阅分组",days:"天",status:{unused:"未使用",used:"已使用",expired:"已过期",disabled:"已禁用"},form:{typeLabel:"类型",selectType:"选择类型",valueLabel:"面值",valuePlaceholder:"请输入面值",balanceHint:"余额金额(美元)",concurrencyHint:"并发数增量",countLabel:"数量",countPlaceholder:"请输入数量",countHint:"要生成的兑换码数量",prefixLabel:"前缀(可选)",prefixPlaceholder:"ä¾
24‹å¦‚: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:"删除兑换码失败"},announcements:{title:"公告管理",description:"创建公告并按条件投放",createFirstAnnouncement:"还没有公告,创建您的第一条公告。",createAnnouncement:"创建公告",editAnnouncement:"编辑公告",deleteAnnouncement:"删除公告",searchAnnouncements:"搜索公告...",status:"状态",allStatus:"全部状态",columns:{title:"标题",status:"状态",notifyMode:"通知方式",targeting:"展示条件",timeRange:"有效期",createdAt:"创建时间",actions:"操作"},statusLabels:{draft:"草稿",active:"展示中",archived:"已归档"},notifyModeLabels:{silent:"静默",popup:"弹窗"},form:{title:"标题",content:"内容(支持 Markdown)",status:"状态",notifyMode:"通知方式",notifyModeHint:"弹窗模式会自动弹出通知给用户",startsAt:"开始时间",endsAt:"结束时间",startsAtHint:"留空表示立即生效",endsAtHint:"留空表示永久生效",targetingMode:"展示条件",targetingAll:"所有用户",targetingCustom:"按条件",addOrGroup:"添加 OR 条件组",addAndCondition:"添加 AND 条件",conditionType:"条件类型",conditionSubscription:"订阅套餐",conditionBalance:"余额",operator:"运算符",balanceValue:"余额阈值",selectPackages:"选择套餐"},operators:{gt:">",gte:"≥",lt:"<",lte:"≤",eq:"="},targetingSummaryAll:"全部用户",targetingSummaryCustom:"自定义({groups} 组)",timeImmediate:"立即",timeNever:"永久",readStatus:"已读情况",preview:"预览",eligible:"符合条件",readAt:"已读时间",unread:"未读",searchUsers:"搜索用户...",failedToLoad:"加载公告失败",failedToCreate:"创建公告失败",failedToUpdate:"更新公告失败",failedToDelete:"删除公告失败",failedToLoadReadStatus:"加载已读情况失败",deleteConfirm:"确定要删除该公告吗?此操作无法撤销。"},promo:{title:"优惠码管理",description:"创建和管理注册优惠码",createCode:"创建优惠码",editCode:"编辑优惠码",deleteCode:"删除优惠码",searchCodes:"搜索优惠码...",allStatus:"全部状态",columns:{code:"优惠码",bonusAmount:"赠送金额",maxUses:"最大使用次数",usedCount:"已使用",usage:"使用量",status:"状态",expiresAt:"过期时间",createdAt:"创建时间",actions:"操作"},code:"优惠码",autoGenerate:"留空自动生成",codePlaceholder:"输入优惠码或留空",bonusAmount:"赠送金额 ($)",maxUses:"最大使用次数",zeroUnlimited:"0 = 无限制",expiresAt:"过期时间",notes:"备注",notesPlaceholder:"可选备注信息",status:"状态",neverExpires:"永不过期",statusActive:"启用",statusDisabled:"禁用",statusExpired:"已过期",statusMaxUsed:"已用完",usageRecords:"使用记录",viewUsages:"查看使用记录",noUsages:"暂无使用记录",userPrefix:"用户 #{id}",copied:"已复制!",noCodesYet:"暂无优惠码",createFirstCode:"创建您的第一个优惠码,为新用户提供注册奖励。",codeCreated:"优惠码创建成功",codeUpdated:"优惠码更新成功",codeDeleted:"优惠码删除成功",deleteCodeConfirm:"确定要删除此优惠码吗?此操作无法撤销。",copyRegisterLink:"复制注册链接",registerLinkCopied:"注册链接已复制到剪贴板",failedToLoad:"加载优惠码失败",failedToCreate:"创建优惠码失败",failedToUpdate:"更新优惠码失败",failedToDelete:"删除优惠码失败",failedToLoadUsages:"加载使用记录失败"},usage:{title:"使用记录",description:"查看和管理所有用户的使用记录",userFilter:"用户",searchUserPlaceholder:"按邮箱搜索用户...",searchApiKeyPlaceholder:"按名称搜索 API 密钥...",searchAccountPlaceholder:"按名称搜索账号...",selectedUser:"已选择",user:"用户",account:"账户",group:"分组",requestId:"请求ID",upstreamRequestId:"上游ID",requestIdCopied:"请求ID已复制",upstreamRequestIdCopied:"上游ID已复制",allModels:"全部模型",allAccounts:"全部账户",allGroups:"全部分ç
24»„",allTypes:"全部类型",inputCost:"输入费用",outputCost:"输出费用",cacheCreationCost:"缓存创建费用",cacheReadCost:"缓存读取费用",inputTokens:"输入 Token",outputTokens:"输出 Token",cacheCreationTokens:"缓存创建 Token",cacheCreation5mTokens:"缓存创建",cacheCreation1hTokens:"缓存创建",cacheReadTokens:"缓存读取 Token",failedToLoad:"加载使用记录失败",billingType:"计费类型",allBillingTypes:"全部计费类型",billingTypeBalance:"钱包余额",billingTypeSubscription:"订阅套餐",billingMode:"计费模式",billingModeToken:"按量",billingModePerRequest:"按次",billingModeImage:"按次(图片)",billingModeVideo:"按次(视频)",allBillingModes:"全部计费模式",upstreamModelAudit:"上游模型审计",allUpstreamModelAudit:"全部响应模型状态",upstreamModelMismatchOnly:"仅不一致",upstreamModelMatchedOnly:"仅一致",ipAddress:"IP",clickToViewBalance:"点击查看充值记录",failedToLoadUser:"加载用户信息失败",userDeletedBadge:"已删除",tokenRanking:{subtitle:"按当前筛选与时间范围统计每个用户的 Token 用量",rowHint:"点击查看该用户的用量明细",userCount:"共 {count} 位用户",columns:{user:"用户",requests:"请求数",inputTokens:"输入 Token",outputTokens:"输出 Token",cacheTokens:"缓存 Token",totalTokens:"总 Token",cost:"费用"}},cleanup:{button:"清理",title:"清理使用记录",warning:"清理不可恢复,且会影响历史统计回看。",submit:"提交清理",submitting:"提交中...",confirmTitle:"确认清理",confirmMessage:"确定要提交清理任务吗?清理不可恢复。",confirmSubmit:"确认清理",cancel:"取消任务",cancelConfirmTitle:"确认取消",cancelConfirmMessage:"确定要取消该清理任务吗?",cancelConfirm:"确认取消",cancelSuccess:"清理任务已取消",cancelFailed:"取消清理任务失败",recentTasks:"最近清理任务",loadingTasks:"正在加载任务...",noTasks:"暂无清理任务",range:"时间范围",deletedRows:"删除数量",missingRange:"请选择时间范围",submitSuccess:"清理任务已创建",submitFailed:"创建清理任务失败",loadFailed:"加载清理任务失败",status:{pending:"待执行",running:"执行中",succeeded:"已完成",failed:"失败",canceled:"已取消"}}}},d={ops:{title:"运维监控",description:"运维监控与排障",systemHealth:"系统健康",overview:"概览",noSystemMetrics:"尚未收集系统指标。",collectedAt:"采集时间:",window:"窗口",memory:"内存",db:"数据库",goroutines:"协程",jobs:"后台任务",jobsHelp:"点击“明细”查看任务心跳与报错信息",active:"活跃",idle:"空闲",waiting:"等待",conns:"连接",queue:"队列",accountSwitches:"账号切换",ok:"正常",lastRun:"最近运行",lastSuccess:"最近成功",lastError:"最近错误",result:"结果",noData:"暂无数据",loadingText:"加载中...",ready:"就绪",autoRefreshRemaining:"剩余 {seconds}s",systemLogs:{title:"系统日志",description:"优先显示最新日志,可按条件筛选、搜索和清理。",queue:"队列",written:"已写入",dropped:"已丢弃",failed:"写入失败",runtimeConfig:"运行时日志配置(立即生效)",all:"全部",level:"级别",stacktraceThreshold:"堆栈阈值",samplingInitial:"采样初始条数",samplingThereafter:"后续采样间隔",retentionDays:"保留天数",caller:"调用方",sampling:"采样",saveAndApply:"保存并应用",resetDefaults:"重置默认值",latestWriteError:"最近写入错误:",timeRange:"时间范围",startTime:"开始时间(可选)",endTime:"结束时间(可选)",host:"Host",component:"组件",componentPlaceholder:"例如 http.access",keyId:"KEY ID",platform:"平台",model:"模型",keyword:"关键词",keywordPlaceholder:"message/request_id",search:"搜索",cleanCurrentFilters:"清理当前筛选结果",refreshHealth:"刷新健康状态",empty:"暂无系统日志",time:"时间",logDetails:"日志详情",loadFailed:"加载系统日志失败",runtimeConfigActive:"运行时日志配置已生效",runtimeConfigSaveFailed:"保存日志配置失败",resetRuntimeConfigConfirm:"确定要重置为启动配置(env/yaml)并立即应用吗?",runtimeConfigReset:"已重置为启动日志配置",runtimeConfigResetFailed:"重置日志配置失败",cleanupConfirm:"确定要清理匹配当前筛选条件的系统日志吗?此操作不可撤销。",cleanupSuccess:"清理完成,已删除 {count} 条日志。",cleanupFilterRequired:"清理需要至少一个筛选条件(起止时间或其他字段)",cleanupFailed:"清理系统日志失败"},requestsTotal:"请求(总计)",slaScope:"SLA 范围:",tokens:"Token数",tps:"TPS",current:"当前",peak:"峰值",average:"平均",totalRequests:"总请求",avgQps:"平均 QPS",avgTps:"平均 TPS",avg
24Latency:"平均请求时长",avgTtft:"平均首 Token 延迟",exceptions:"异常数",requestErrors:"请求错误",errorCount:"错误数",upstreamErrors:"上游错误",errorCountExcl429529:"错误数(排除429/529)",sla:"SLA(排除业务限制)",businessLimited:"业务限制:",errors:"错误",errorRate:"错误率:",upstreamRate:"上游错误率:",latencyDuration:"请求时长",ttftLabel:"首 Token 延迟(毫秒)",p50:"p50",p90:"p90",p95:"p95",p99:"p99",avg:"avg",max:"max",requests:"请求数",requestsTitle:"请求",upstream:"上游",client:"客户端",system:"系统",other:"其他",errorsSla:"错误(SLA范围)",upstreamExcl429529:"上游(排除429/529)",failedToLoadData:"加载运维数据失败",failedToLoadOverview:"加载概览数据失败",failedToLoadThroughputTrend:"加载吞吐趋势失败",failedToLoadSwitchTrend:"加载平均账号切换趋势失败",failedToLoadLatencyHistogram:"加载请求时长分布失败",failedToLoadErrorTrend:"加载错误趋势失败",failedToLoadErrorDistribution:"加载错误分布失败",failedToLoadErrorDetail:"加载错误详情失败",retryFailed:"重试失败",tpsK:"TPS(千)",top:"最高:",throughputTrend:"吞吐趋势",switchRateTrend:"平均账号切换趋势",latencyHistogram:"请求时长分布",errorTrend:"错误趋势",errorDistribution:"错误分布",switchRate:"平均账号切换",health:"健康",healthCondition:"健康状况",healthHelp:"基于 SLA、错误率和资源使用情况的系统整体健康评分",healthyStatus:"健康",riskyStatus:"风险",idleStatus:"待机",timeRange:{"5m":"近5分钟","30m":"近30分钟","1h":"近1小时","1d":"近1天","15d":"近15天","6h":"近6小时","24h":"近24小时","7d":"近7天","30d":"近30天",custom:"自定义"},openaiTokenStats:{title:"OpenAI Token 请求统计",viewModeTopN:"TopN",viewModePagination:"分页",prevPage:"上一页",nextPage:"下一页",pageInfo:"第 {page}/{total} 页",totalModels:"模型总数:{total}",failedToLoad:"加载 OpenAI Token 统计失败",empty:"当前筛选条件下暂无 OpenAI Token 请求统计数据",table:{model:"模型",requestCount:"请求数",avgTokensPerSec:"平均 Tokens/秒",avgFirstTokenMs:"平均首 Token 延迟(ms)",totalOutputTokens:"输出 Token 总数",avgDurationMs:"平均时长(ms)",requestsWithFirstToken:"首 Token 样本数"}},customTimeRange:{startTime:"开始时间",endTime:"结束时间"},fullscreen:{enter:"进入全屏"},diagnosis:{title:"智能诊断",footer:"基于当前指标的自动诊断建议",idle:"系统当前处于待机状态",idleImpact:"无活跃流量",dbDown:"数据库连接失败",dbDownImpact:"所有数据库操作将失败",dbDownAction:"检查数据库服务状态、网络连接和连接配置",redisDown:"Redis连接失败",redisDownImpact:"缓存功能降级,性能可能下降",redisDownAction:"检查Redis服务状态和网络连接",cpuCritical:"CPU使用率严重过高 ({usage}%)",cpuCriticalImpact:"系统响应变慢,可能影响所有请求",cpuCriticalAction:"检查CPU密集型任务,考虑扩容或优化代码",cpuHigh:"CPU使用率偏高 ({usage}%)",cpuHighImpact:"系统负载较高,需要关注",cpuHighAction:"监控CPU趋势,准备扩容方案",memoryCritical:"内存使用率严重过高 ({usage}%)",memoryCriticalImpact:"可能触发OOM,系统稳定性受威胁",memoryCriticalAction:"检查内存泄漏,考虑增加内存或优化内存使用",memoryHigh:"内存使用率偏高 ({usage}%)",memoryHighImpact:"内存压力较大,需要关注",memoryHighAction:"监控内存趋势,检查是否有内存泄漏",ttftHigh:"首 Token 时间偏高 ({ttft}ms)",ttftHighImpact:"用户感知时长增加",ttftHighAction:"优化请求处理流程,减少前置逻辑耗时",upstreamCritical:"上游错误率严重偏高 ({rate}%)",upstreamCriticalImpact:"可能影响大量用户请求",upstreamCriticalAction:"检查上游服务健康状态,启用降级策略",upstreamHigh:"上游错误率偏高 ({rate}%)",upstreamHighImpact:"建议检查上游服务状态",upstreamHighAction:"联系上游服务团队,准备降级方案",errorHigh:"错误率过高 ({rate}%)",errorHighImpact:"大量请求失败",errorHighAction:"查看错误日志,定位错误根因,紧急修复",errorElevated:"错误率偏高 ({rate}%)",errorElevatedImpact:"建议检查错误日志",errorElevatedAction:"分析错误类型和分布,制定修复计划",slaCritical:"SLA 严重低于目标 ({sla}%)",slaCriticalImpact:"用户体验严重受损",slaCriticalAction:"紧急排查错误原因,必要时采取限流保护",
24slaLow:"SLA 低于目标 ({sla}%)",slaLowImpact:"需要关注服务质量",slaLowAction:"分析SLA下降原因,优化系统性能",healthCritical:"综合健康评分过低 ({score})",healthCriticalImpact:"多个指标可能同时异常,建议优先排查错误与资源使用情况",healthCriticalAction:"全面检查系统状态,优先处理critical级别问题",healthLow:"综合健康评分偏低 ({score})",healthLowImpact:"可能存在轻度波动,建议关注 SLA 与错误率",healthLowAction:"监控指标趋势,预防问题恶化",healthy:"所有系统指标正常",healthyImpact:"服务运行稳定"},errorLog:{timeId:"时间 / ID",commonErrors:{contextDeadlineExceeded:"请求超时",connectionRefused:"连接被拒绝",rateLimit:"触发限流"},time:"时间",type:"类型",context:"上下文",platform:"平台",model:"模型",group:"分组",user:"用户",userId:"用户 ID",apiKey:"API Key",keyDeletedBadge:"Key 已删除",account:"账号",accountId:"账号 ID",status:"状态码",message:"响应内容",ip:"IP",latency:"请求时长",action:"操作",noErrors:"该窗口内暂无错误。",grp:"GRP:",acc:"ACC:",details:"详情",phase:"阶段",id:"ID:",typeUpstream:"上游",typeRequest:"请求",typeAuth:"认证",typeAccountAuth:"账号认证",typeRouting:"路由",typeInternal:"内部",endpoint:"端点",requestType:"类型",requestTypeSync:"同步",requestTypeStream:"流式",requestTypeWs:"WS"},errorDetails:{upstreamErrors:"上游错误",requestErrors:"请求错误",unresolved:"未解决",resolved:"已解决",viewErrors:"错误",viewExcluded:"排除项",statusCodeOther:"其他",owner:{provider:"服务商",client:"客户端",platform:"平台"},phase:{request:"请求",auth:"认证",account_auth:"账号认证",routing:"路由",upstream:"上游",network:"网络",internal:"内部"},total:"总计:",searchPlaceholder:"搜索 request_id / client_request_id / message"},errorDetail:{title:"错误详情",titleWithId:"错误 #{id}",noErrorSelected:"未选择错误。",backToList:"返回列表",resolution:"已解决:",failedToUpdateResolvedStatus:"更新解决状态失败",classificationKeys:{phase:"阶段",owner:"归属方",source:"来源",resolvedAt:"解决时间",resolvedBy:"解决人"},source:{upstream_http:"上游 HTTP"},upstreamKeys:{status:"状态码",message:"消息",detail:"详情",upstreamErrors:"上游错误列表"},upstreamEvent:{account:"账号",status:"状态码",requestId:"请求ID"}
24,responsePreview:{expand:"响应内容(点击展开)",collapse:"响应内容(点击收起)"},loading:"加载中…",requestId:"请求 ID",time:"时间",phase:"阶段",status:"状态码",upstreamStatus:"上游状态码",message:"消息",rootCause:"根因",diagnosticPayloads:"诊断载荷",payloads:{client:"客户端响应",upstream_message:"上游消息",upstream_detail:"上游详情",upstream_events:"上游事件"},basicInfo:"基本信息",platform:"平台",model:"模型",group:"分组",user:"用户",account:"账号",latency:"请求时长",businessLimited:"业务限制",requestPath:"请求路径",inboundEndpoint:"入站端点",upstreamEndpoint:"上游端点",requestedModel:"请求模型",upstreamModel:"上游模型",requestType:"请求类型",requestTypeUnknown:"未知",requestTypeSync:"同步",requestTypeStream:"流式",requestTypeWs:"WebSocket",modelMapping:"模型映射",timings:"时序信息",auth:"认证",routing:"路由",upstream:"上游",response:"响应",classification:"错误分类",errorBody:"错误体",trimmed:"已截断",markResolved:"标记已解决",markUnresolved:"标记未解决",tabOverview:"概览",tabRequest:"请求详情",tabResponse:"响应详情",responseBody:"响应详情",compareA:"对比 A",compareB:"对比 B",suggestion:"处理建议",suggestUpstream:"⚠️ 上游服务不稳定,建议:检查上游账号状态 / 考虑切换账号",suggestRequest:"⚠️ 客户端请求错误,建议:联系客户修正请求参数 / 手动标记已解决",suggestAuth:"⚠️ 认证失败,建议:检查 API Key 是否有效 / 联系客户更新凭证",suggestPlatform:"🚨 平台错误,建议立即排查修复",suggestGeneric:"查看详情了解更多信息",apiKeyPrefix:"Key 前缀",keyDeletedBadge:"Key 已删除"},requestDetails:{title:"请求明细",details:"明细",rangeLabel:"窗口:{range}",rangeMinutes:"{n} 分钟",rangeHours:"{n} 小时",empty:"该窗口内暂无请求。",emptyHint:"可尝试调整时间范围或取消部分筛选。",failedToLoad:"加载请求明细失败",requestIdCopied:"请求ID已复制",copyFailed:"复制失败",copy:"复制",viewError:"查看错误",kind:{success:"成功",error:"失败"},table:{time:"时间",kind:"类型",platform:"平台",model:"模型",duration:"耗时",status:"状态码",requestId:"请求ID",actions:"操作"}},alertEvents:{title:"告警事件",description:"最近的告警触发/恢复记录(仅邮件通知)",loading:"加载中...",empty:"暂无告警事件",loadFailed:"加载告警事件失败",status:{firing:"告警中",resolved:"已恢复",manualResolved:"手动已解决"},detail:{title:"告警详情",loading:"加载详情中...",empty:"暂无详情",loadFailed:"加载告警详情失败",manualResolve:"标记为已解决",manualResolvedSuccess:"已标记为手动解决",manualResolvedFailed:"标记为手动解决失败",silence:"忽略此告警",silenceSuccess:"已静默该告警",silenceFailed:"静默失败",viewRule:"查看规则",viewLogs:"查看相关日志",firedAt:"触发时间",resolvedAt:"解决时间",ruleId:"规则 ID",dimensions:"维度信息",historyTitle:"历史记录",historyHint:"同一规则 + 相同维度的最近事件",historyLoading:"加载历史中...",historyEmpty:"暂无历史记录"},table:{time:"时间",status:"状态",severity:"级别",platform:"平台",ruleId:"规则ID",title:"标题",duration:"持续时间",metric:"指标 / 阈值",dimensions:"维度",email:"邮件已发送",emailSent:"已发送",emailIgnored:"已忽略"}},alertRules:{title:"告警规则",description:"创建与管理系统阈值告警(仅邮件通知)",loading:"加载中...",empty:"暂无告警规则",loadFailed:"加载告警规则失败",saveSuccess:"警报规则保存成功",saveFailed:"保存告警规则失败",deleteSuccess:"警报规则删除成功",deleteFailed:"删除告警规则失败",create:"新建规则",createTitle:"新建告警规则",editTitle:"编辑告警规则",deleteConfirmTitle:"确认删除该规则?",deleteConfirmMessage:"将删除该规则及其关联的告警事件,是否继续?",manage:"预警规则",metricGroups:{system:"系统指标",group:"分组级别指标(需 group_id)",account:"账号级别æ
24Œ‡æ ‡"},metrics:{successRate:"成功率 (%)",errorRate:"错误率 (%)",upstreamErrorRate:"上游错误率 (%)",p95:"P95 请求时长 (ms)",p99:"P99 请求时长 (ms)",cpu:"CPU 使用率 (%)",memory:"内存使用率 (%)",queueDepth:"并发排队深度",groupAvailableAccounts:"分组可用账号数",groupAvailableRatio:"分组可用比例 (%)",groupRateLimitRatio:"分组限流比例 (%)",accountRateLimitedCount:"限流账号数",accountErrorCount:"错误账号数(不含临时不可调度)",accountErrorRatio:"错误账号比例 (%)",accountTempUnscheduledCount:"临时不可调度账号数",overloadAccountCount:"过载账号数"},metricDescriptions:{successRate:"统计窗口内成功请求占比(0~100)。",errorRate:"统计窗口内失败请求占比(0~100)。",upstreamErrorRate:"统计窗口内上游错误占比(0~100)。",p95:"统计窗口内 P95 请求耗时(毫秒)。",p99:"统计窗口内 P99 请求耗时(毫秒)。",cpu:"当前实例 CPU 使用率(0~100)。",memory:"当前实例内存使用率(0~100)。",queueDepth:"统计窗口内并发队列排队深度(等待中的请求数)。",groupAvailableAccounts:"指定分组中当前可用账号数量(需要 group_id 过滤)。",groupAvailableRatio:"指定分组中可用账号占比(0~100,需要 group_id 过滤)。",groupRateLimitRatio:"指定分组中账号被限流的比例(0~100,需要 group_id 过滤)。",accountRateLimitedCount:"统计窗口内被限流的账号数量。",accountErrorCount:"统计窗口内产生错误的账号数量(不含临时不可调度)。",accountErrorRatio:"统计窗口内错误账号占比(0~100)。",accountTempUnscheduledCount:"当前处于临时不可调度状态的账号数量(如代理/凭据故障被自动摘除)。",overloadAccountCount:"统计窗口内过载账号数量。"},hints:{recommended:"推荐:运算符 {operator},阈值 {threshold}{unit}",groupRequired:"该指标为分组级别指标,必须选择分组(group_id)。",groupOptional:"可选:通过 group_id 将规则限定到某个分组。"},table:{name:"名称",metric:"指标",severity:"级别",enabled:"启用",actions:"操作"},form:{name:"名称",description:"描述",metric:"指标",operator:"运算符",groupId:"分组(group_id)",groupPlaceholder:"请选择分组",allGroups:"全部分组",threshold:"阈值",severity:"级别",window:"统计窗口(分钟)",sustained:"连续样本数(每分钟)",cooldown:"冷却期(分钟)",enabled:"启用",notifyEmail:"发送邮件通知"},validation:{title:"请先修正以下问题",invalid:"规则不合法",nameRequired:"名称不能为空",metricRequired:"指标不能为空",groupIdRequired:"分组级别指标必须指定 group_id",operatorRequired:"运算符不能为空",thresholdRequired:"阈值必须为数字",windowRange:"统计窗口必须为 1 / 5 / 60 分钟之一",sustainedRange:"连续样本数必须在 1 到 1440 之间",cooldownRange:"冷却期必须在 0 到 1440 分钟之间"}},runtime:{title:"运维监控运行设置",description:"配置存储在数据库中,无需修改 config 文件即可生效。",loading:"加载中...",noData:"暂无运行设置",loadFailed:"加载运行设置失败",saveSuccess:"运行设置已保存",saveFailed:"保存运行设置失败",alertTitle:"告警评估器",groupAvailabilityTitle:"分ç
24»„可用性监控",evalIntervalSeconds:"评估间隔(秒)",metricThresholds:"指标阈值配置",metricThresholdsHint:"配置各项指标的告警阈值,超出阈值时将以红色显示",slaMinPercent:"SLA 最低百分比",slaMinPercentHint:"SLA 低于此值时显示为红色(默认:99.5%)",ttftP99MaxMs:"TTFT P99 最大值(毫秒)",ttftP99MaxMsHint:"TTFT P99 高于此值时显示为红色(默认:500ms)",requestErrorRateMaxPercent:"请求错误率最大值(%)",requestErrorRateMaxPercentHint:"请求错误率高于此值时显示为红色(默认:5%)",upstreamErrorRateMaxPercent:"上游错误率最大值(%)",upstreamErrorRateMaxPercentHint:"上游错误率高于此值时显示为红色(默认:5%)",silencing:{title:"告警静默(维护模式)",enabled:"启用静默",globalUntil:"静默截止时间(RFC3339)",untilHint:"建议填写截止时间,避免忘记关闭静默。",reason:"原因",reasonPlaceholder:"例如:计划维护",entries:{title:"高级:定向静默",hint:"可选:仅静默特定规则或特定级别。字段留空表示匹配全部。",add:"新增条目",empty:"暂无定向静默条目",entryTitle:"条目 #{n}",ruleId:"规则ID(可选)",ruleIdPlaceholder:"例如:1",severities:"级别(可选)",severitiesPlaceholder:"例如:P0,P1(留空=全部)",until:"截止时间(RFC3339)",reason:"原因",validation:{untilRequired:"条目截止时间不能为空",untilFormat:"条目截止时间必须为合法的 RFC3339 时间戳",ruleIdPositive:"条目 rule_id 必须为正整数",severitiesFormat:"条目级别必须为 P0..P3 的逗号分隔列表"}},validation:{timeFormat:"静默时间必须为合法的 RFC3339 时间戳"}},lockEnabled:"启用分布式锁",lockKey:"分布式锁 Key",lockTTLSeconds:"分布式锁 TTL(秒)",showAdvancedDeveloperSettings:"显示高级开发者设置 (Distributed Lock)",advancedSettingsSummary:"高级设置 (分布式锁)",evalIntervalHint:"检测任务的执行频率,建议保持默认。",validation:{title:"请先修正以下问题",invalid:"设置不合法",evalIntervalRange:"评估间隔必须在 1 到 86400 秒之间",lockKeyRequired:"启用分布式锁时必须填写 Lock Key",lockKeyPrefix:"分布式锁 Key 必须以「{prefix}」开头",lockKeyHint:"建议以「{prefix}」开头以避免冲突",lockTtlRange:"分布式锁 TTL 必须在 1 到 86400 秒之间",slaMinPercentRange:"SLA 最低值必须在 0-100 之间",ttftP99MaxRange:"TTFT P99 最大值必须大于或等于 0",requestErrorRateMaxRange:"请求错误率最大值必须在 0-100 之间",upstreamErrorRateMaxRange:"上游错误率最大值必须在 0-100 之间"}},email:{title:"邮件通知配置",description:"配置告警/报告邮件通知(存储在数据库中)。",loading:"加载中...",noData:"暂无邮件通知配置",loadFailed:"加载邮件通知配置失败",saveSuccess:"邮件通知配置已保存",saveFailed:"保存邮件通知配置失败",alertTitle:"告警邮件",reportTitle:"报告邮件",recipients:"收件人",recipientsHint:"若为空,系统可能会回退使用第一个管理员邮箱。",minSeverity:"最低级别",minSeverityAll:"全部级别",rateLimitPerHour:"每小时限额",batchWindowSeconds:"合并窗口(秒)",includeResolved:"包含恢复通知",dailySummary:"每日摘要",weeklySummary:"每周摘要",errorDigest:"错误摘要",errorDigestMinCount:"错误摘要最小数量",accountHealth:"账号健康报告",accountHealthThreshold:"错误率阈值(%)",cronPlaceholder:"Cron 表达式",reportHint:"发送时间使用 Cron 语法;留空将使用默认值。",validation:{title:"请先修正以下问题",invalid:"邮件通知配置不合法",alertRecipientsRequired:"已启用告警邮件,但未配置任何收件人",reportRecipientsRequired:"已启用报告邮件,但未配置任何收件人",invalidRecipients:"存在不合法的收件人邮箱",rateLimitRange:"每小时限额必须为 ≥ 0 的数字",batchWindowRange:"合并窗口必须在 0 到 86400 秒之间",cronRequired:"启用定时任务时必须填写 Cron 表达式",cronFormat:"Cron 表达式格式可能不正确(至少应包含 5 段)",digestMinCountRange:"错误摘要最小数量必须为 ≥ 0 的数字",accountHealthThresholdRange:"账号健康错误率阈值必须在 0 到 100 之间"}},settings:{title:"运维监控设置",loadFailed:"加载设置失败",saveSuccess:"运维监控设置保存成功",saveFailed:"保存设置失败",dataCollection:"数据采集",evaluationInterval:"评估间隔(秒)",evaluationIntervalHint:"检测任务的执行频率,建议保持默认",alertConfig:"预警配置",enableAlert:"开启预警",alertRecipients:"预警接收邮箱",emailPlaceholder:"输入邮箱地址",recipientsHint:"若为空,系统将使用第一个管理员邮箱作为
24默认收件人",minSeverity:"最低级别",reportConfig:"评估报告配置",enableReport:"开启评估报告",reportRecipients:"评估报告接收邮箱",dailySummary:"每日摘要",weeklySummary:"每周摘要",metricThresholds:"指标阈值配置",metricThresholdsHint:"配置各项指标的告警阈值,超出阈值时将以红色显示",slaMinPercent:"SLA最低百分比",slaMinPercentHint:"SLA低于此值时显示为红色(默认:99.5%)",ttftP99MaxMs:"TTFT P99最大值(毫秒)",ttftP99MaxMsHint:"TTFT P99高于此值时显示为红色(默认:500ms)",requestErrorRateMaxPercent:"请求错误率最大值(%)",requestErrorRateMaxPercentHint:"请求错误率高于此值时显示为红色(默认:5%)",upstreamErrorRateMaxPercent:"上游错误率最大值(%)",upstreamErrorRateMaxPercentHint:"上游错误率高于此值时显示为红色(默认:5%)",advancedSettings:"高级设置",dataRetention:"数据保留策略",enableCleanup:"启用数据清理",cleanupSchedule:"清理计划(Cron)",cleanupScheduleHint:"例如:0 2 * * * 表示每天凌晨2点",errorLogRetentionDays:"错误日志保留天数",minuteMetricsRetentionDays:"分钟指标保留天数",hourlyMetricsRetentionDays:"小时指标保留天数",retentionDaysHint:"建议保留 7-90 天,过长会占用存储空间;填 0 表示每次定时清理时清空所有历史",aggregation:"预聚合任务",enableAggregation:"启用预聚合任务",aggregationHint:"预聚合可提升长时间窗口查询性能",openaiQuotaAutoPause:"OpenAI 账号配额自动暂停",openaiQuotaAutoPauseHint:"当 OpenAI 账号 5h / 7d 用量达到阈值时,调度会自动跳过该账号;窗口滚动后自动恢复。账号级阈值优先于此全局默认值。",openaiQuotaAutoPauseDefault5h:"默认 5h 用量阈值 (%)",openaiQuotaAutoPauseDefault7d:"默认 7d 用量阈值 (%)",openaiQuotaAutoPauseThresholdHint:"取值 0-100,留空或 0 表示不启用全局默认阈值。",errorFiltering:"错误过滤",ignoreCountTokensErrors:"忽略 count_tokens 错误",ignoreCountTokensErrorsHint:"启用后,count_tokens 请求的错误将不会写入错误日志。",ignoreContextCanceled:"忽略客户端断连错误",ignoreContextCanceledHint:"启用后,客户端主动断开连接(context canceled)的错误将不会写入错误日志。",ignoreNoAvailableAccounts:"忽略无可用账号错误",ignoreNoAvailableAccountsHint:'启用后,"No available accounts" 错误将不会写入错误日志(不推荐,这通常是配置问题)。',ignoreInsufficientBalanceErrors:"忽略余额不足错误",ignoreInsufficientBalanceErrorsHint:"启用后,账号余额不足(Insufficient balance)的错误将不会写入错误日志。",autoRefresh:"自动刷新",enableAutoRefresh:"启用自动刷新",enableAutoRefreshHint:"自动刷新仪表板数据,启用后会定期拉取最新数据。",refreshInterval:"刷新间隔",refreshInterval15s:"15 秒",refreshInterval30s:"30 秒",refreshInterval60s:"60 秒",dashboardCards:"仪表盘卡片",displayAlertEvents:"展示告警事件",displayAlertEventsHint:"控制运维监控仪表盘中告警事件卡片是否显示,默认开启。",displayOpenAITokenStats:"展示 OpenAI Token 请求统计",displayOpenAITokenStatsHint:"控制运维监控仪表盘中 OpenAI Token 请求统计卡片是否显示,默认关闭。",autoRefreshCountdown:"自动刷新:{seconds}s",validation:{title:"请先修正以下问题",retentionDaysRange:"保留天数必须在 0-365 天之间(0 = 每次清理时清空所有)",slaMinPercentRange:"SLA最低百分比必须在0-100之间",ttftP99MaxRange:"TTFT P99最大值必须大于等于0",requestErrorRateMaxRange:"请求错误率最大值必须在0-100之间",upstreamErrorRateMaxRange:"上游错误率最大值必须在0-100之间",openaiQuotaAutoPauseRange:"OpenAI 配额自动暂停阈值必须在 0-100 之间"}},concurrency:{title:"并发 / 排队",byPlatform:"按平台",byGroup:"按分组",byAccount:"按账号",byUser:"按用户",showByUserTooltip:"切换用户视图,显示每个用户的并发使用情况",switchToUser:"切换到用户视图",switchToPlatform:"切换回平台视图",totalRows:"共 {count} 项",disabledHint:"已在设置中关闭实时监控。",empty:"暂无数据",queued:"队列 {count}",rateLimited:"限流 {count}",errorAccounts:"异常 {count}",loadFailed:"加载并发数据失败"},realtime:{title:"实时信息",connected:"实时已连接",connecting:"实时连接中",reconnecting:"实时重连中",offline:"实时离线",closed:"实时已关闭",reconnectIn:"重连 {seconds}s"},queryMode:{auto:"Auto(自动)",raw:"Raw(不聚合)",preagg:"Preagg(聚合)"},accountAvailability:{available:"可用",unavailable:"不可用",accountError:"异常"},tooltips:{totalRequests:"当前时间窗口内的总请求数和Token消耗量。",throughputTrend:"当前窗口内的请求/QPS 与 token/TPS 趋势。",switchRateTrend:"近5小时内账号切换次数 / 请求总数的趋势(平均切换次数)。",latencyHistogram:"成功请求的请求时é•
24¿åˆ†å¸ƒï¼ˆæ¯«ç§’)。",errorTrend:"错误趋势(SLA 口径排除业务限制;上游错误率排除 429/529)。",errorDistribution:"按状态码统计的错误分布(SLA 口径,排除业务限制)。",upstreamErrors:"上游服务返回的错误,包括API提供商的错误响应(排除429/529限流错误)。",goroutines:'Go 运行时的协程数量(轻量级线程)。没有绝对"安全值",建议以历史基线为准。经验参考:<2000 常见;2000-8000 需关注;>8000 且伴随队列上升时,优先排查阻塞/泄漏。',cpu:"CPU 使用率,显示系统处理器的负载情况。",memory:"内存使用率,包括已使用和总可用内存。",db:"数据库连接池状态,包括活跃连接、空闲连接和等待连接数。",redis:"Redis 连接池状态,显示活跃和空闲的连接数。",jobs:"后台任务执行状态,包括最近运行时间、成功时间和错误信息。",qps:"每秒查询数(QPS)和每秒Token数(TPS),实时显示系统吞吐量。",tokens:"当前时间窗口内处理的总Token数量。",sla:"服务等级协议达成率,排除业务限制(如余额不足、配额超限)的成功请求占比。",errors:"错误统计,包括总错误数、错误率和上游错误率。",latency:"请求时长统计,包括 p50、p90、p95、p99 等百分位数。",ttft:"首 Token 延迟(Time To First Token),衡量流式响应的首 Token 返回速度。",health:"系统健康评分(0-100),综合考虑 SLA、错误率和资源使用情况。"},charts:{emptyRequest:"该时间窗口内暂无请求。",emptyError:"该时间窗口内暂无错误。",resetZoom:"重置",resetZoomHint:"重置缩放(若启用)",downloadChart:"下载",downloadChartHint:"下载图表图片"}}},c={settings:{title:"系统设置",description:"管理注册、邮箱验证、默认值和 SMTP 设置",tabs:{general:"通用设置",agreement:"登录条款",features:"功能开关",security:"安全与认证",users:"用户默认值",gateway:"网关服务",email:"邮件设置",backup:"数据备份",payment:"支付设置"},features:{channelMonitor:{title:"渠道监控",description:"启用后在 V1 主动探测与 V2 被动用量监控中二选一。关闭后两种模式的后台任务均停止,用户端入口隐藏。",configureLink:"前往 渠道管理 > 渠道监控 配置监控项",enabled:"启用渠道监控",enabledHint:"关闭后 V1 调度器与 V2 聚合均停止;已有配置与历史保留。",mode:"监控模式",modeHint:"默认 V1(主动探测)。仅在需要被动聚合时切换到 V2;同一时间只能启用一种实现。",modeV2:"V2 被动监控",modeV1:"V1 主动探测",modeV2Hint:"需主动选择:基于真实网关流量聚合健康指标,不向上游发送探活请求;启用期间 V1 探测停止。",modeV1Hint:"默认模式:按配置的渠道监控项定时发起上游健康检查(产生探测流量)。",defaultInterval:"默认检测间隔(秒)",defaultIntervalHint:"仅 V1 模式使用:新建渠道监控时表单的默认值,可被单个渠道覆盖。范围 15 – 3600 秒。",hideThroughput:"对用户隐藏吞吐速率(RPM / TPM)",hideThroughputHint:"开启后,用户端渠道监控页面与用户 API 不返回 RPM/TPM,避免用「速率 × 时间窗」反推集群规模。管理员仍可见完整指标;错误率、延迟、缓存率照常展示。",showQuota:"向用户展示渠道用量/余额",showQuotaHint:"开启后,配额模式的渠道监控会在用户端渠道状态页展示关联账号的用量滚动窗口/余额。默认关闭;管理员始终可见。"},availableChannels:{title:"可用渠道",description:"向已登录用户展示他们能访问的渠道、模型和定价聚合视图。默认关闭。",configureLink:"前往 渠道管理 > 渠道定价 配置模型价格",enabled:"启用可用渠道",enabledHint:"关闭后用户端侧边栏入口隐藏,接口返回空数组。"},modelPlaza:{title:"模型广场",description:"以分组为单位向访客展示可用模型与价格的公开页面。默认关闭。",enabled:"启用模型广场",enabledHint:"开启后顶栏显示入口ï¼
24Œé¡µé¢å¯é€šè¿‡ /model-plaza 独立访问。",requireAuth:"需要登录才可访问",requireAuthHint:"开启后未登录访问将跳转登录页;关闭则公开可见,匿名访客仅展示非专属分组。",priceDescription:"价格说明(Markdown)",priceDescriptionHint:"展示在模型广场页面顶部,可用于说明计费规则、汇率、优惠活动等。"},pluginManagement:{title:"插件管理",description:"控制管理员侧边栏是否显示插件管理入口。此开关不控制插件运行状态。",enabled:"显示插件管理菜单",enabledHint:"关闭后仅隐藏侧边栏菜单;已加载或正在运行的插件不会因此停止。"},riskControl:{title:"风控中心",description:"启用内容审计菜单和全端点请求审核入口。默认关闭。",configureLink:"前往 风控中心 配置内容审计",enabled:"启用风控中心",enabledHint:"关闭后管理员侧边栏入口隐藏,网关内容审计不会执行。",cyberSessionBlock:"cyber 会话自动屏蔽",cyberSessionBlockHint:"开启后,被上游网络安全策略(cyber_policy)拦截的会话将在 TTL 内被本地屏蔽,不再发往上游。仅屏蔽该会话,不影响同 Key 其他会话。",cyberSessionBlockTTL:"屏蔽时长(秒)"},affiliate:{title:"邀请返利",description:"老用户邀请新用户注册,新用户充值后老用户按比例获得返利额度。默认关闭。",enabled:"启用邀请返利",enabledHint:"关闭后用户菜单中的邀请页面入口隐藏、注册时忽略邀请码、新充值不再产生返利。已有返利额度仍可转入余额。",adminRechargeRebate:"管理员充值参与返利",adminRechargeRebateHint:"开启后,通过“用户管理 > 充值”增加的余额会产生邀请返利;设置余额和扣款不参与返利。",rebateRate:"全局返利比例",rebateRateHint:"充值后返给邀请人的默认比例(0-100%,例如填写 10 表示返利 10%)。",freezeHours:"返利冻结期(小时)",freezeHoursDesc:"新产生的返利将在冻结期内无法提现。0 = 不冻结。",durationDays:"返利有效期(天)",durationDaysDesc:"被邀请用户注册后多少天内的充值产生返利。0 = 永久有效。",perInviteeCap:"单人返利上限",perInviteeCapDesc:"每个被邀请用户最多产生的返利总额。0 = 无上限。",customUsers:{title:"专属用户配置",description:"为指定用户设置专属邀请码或专属返利比例。仅展示已设置过专属配置的用户。",addButton:"添加专属用户",searchPlaceholder:"搜索邮箱或用户名",batchButton:"批量设置比例(已选 {count})",empty:"暂无专属配置用户",customBadge:"自定义",useGlobal:"沿用全局",resetTitle:"重置该用户的专属配置",resetMessage:`确认将 {email} 的专属配置全部重置为默认?
25• 专属返利比例将清除(沿用全局)
26• 邀请码将重新生成为系统随机码(已分发的旧邀请链接将失效)`,totalLabel:"共 {total} 条",col:{email:"邮箱",username:"用户名",code:"邀请码",rate:"专属比例",actions:"操作"}},modal:{addTitle:"添加专属用户",editTitle:"编辑专属配置",userLabel:"用户",userPlaceholder:"搜索邮箱或用户名",changeUser:"更换用户",codeLabel:"专属邀请码(可选)",codePlaceholder:"例如 VIP2026",codeHint:"4-32 位,仅支持大写字母、数字、下划线、连字符;留空表示不修改;输入将自动转大写。",rateLabel:"专属返利比例(可选)",ratePlaceholder:"例如 30",rateHint:"0-100%;留空(编辑模式下)表示清除专属比例并沿用全局。",errorBadRate:"请输入 0-100 之间的比例",errorEmpty:"至少填写一项:专属邀请码或专属返利比例"},batchModal:{title:"批量设置专属比例(已选 {count} 个用户)",hint:"为所选用户统一设置专属返利比例。",placeholder:"例如 30",clearHint:"留空提交将清除所选用户的专属比例。"}}},emailTabDisabledTitle:"邮箱验证未启用",emailTabDisabledHint:"请在「安全与认证」选项卡中启用邮箱验证后,再配置 SMTP 设置。",registration:{title:"注册设置",description:"控制用户注册和验证",enableRegistration:"开放注册",enableRegistrationHint:"允许新用户注册",emailVerification:"邮箱验证",emailVerificationHint:"新用户注册时需要验证邮箱",emailSuffixWhitelist:"邮箱域名白名单",emailSuffixWhitelistHint:"仅允许使用指定域名的邮箱注册账号;留空则不限制(例如 {'@'}qq.com, {'@'}gmail.com, *.edu.cn)",emailSuffixWhitelistPlaceholder:"{'@'}example.com, *.edu.cn",emailSuffixWhitelistInputHint:"留空则不限制。使用 *.edu.cn 可匹配 edu.cn 及其子域名。",emailDomainQuota:"非白名单域名限量注册",emailDomainQuotaHint:"开启后,白名单非空时,其他可注册主域名各限注册一个账户;关闭时非白名单域名直接拒绝注册。白名单为空时本开关无效果",promoCode:"优惠码",promoCodeHint:"允许用户在注册时使用优惠码",
26invitationCode:"邀请码注册",invitationCodeHint:"开启后,用户注册时需要填写有效的邀请码",passwordReset:"忘记密码",passwordResetHint:"允许用户通过邮箱重置密码",frontendUrl:"前端地址",frontendUrlPlaceholder:"https://example.com",frontendUrlHint:"用于生成邮件中的密码重置链接,例如 https://example.com",totp:"双因素认证 (2FA)",totpHint:"允许用户使用 Google Authenticator 等应用进行二次验证",totpKeyNotConfigured:"请先在环境变量中配置 TOTP_ENCRYPTION_KEY。使用命令 openssl rand -hex 32 生成密钥。"},security:{passkey:"Passkey 登录",passkeyHint:"当依赖方配置有效时,允许无密码登录及用户自行管理 Passkey。",passkeyConfigured:"WebAuthn 依赖方配置有效。",passkeyNotConfigured:"请先配置有效的 RP ID 与允许的 HTTPS 来源,再启用 Passkey 登录。",passkeyRPID:"RP ID",passkeyOrigins:"允许的 HTTPS 来源",passkeyValueNotConfigured:"未配置",passkeyDeploymentHint:"请由服务器运维在部署配置中将 webauthn.enabled 设为 true,填写 webauthn.rp_id(仅域名)与 webauthn.rp_origins(完整 HTTPS 来源),然后重启服务。",stepUp:"敏感操作二次验证 (step-up 2FA)",stepUpHint:"开启后,账号/代理导出、备份创建与下载、S3 配置修改、提升管理员等敏感操作需要先完成 TOTP 二次验证(15 分钟内有效)。开启前需本人已启用 2FA;关闭该开关本身也需要二次验证。",stepUpEnableRequiresTotp:"开启敏感操作二次验证前,请先在个人资料中为当前账号启用 2FA (TOTP)。",sessionBinding:"会话 IP/UA 绑定",sessionBindingHint:"将登录会话与客户端 IP 和 User-Agent 绑定,任一变化即强制该会话失效并需重新登录(提升被盗凭证的利用门槛)。",auditRetention:"操作日志保留天数",auditRetentionHint:"超过该天数的操作日志将被自动清理;填 0 表示永久保留(仅支持手动清空)。"},panelRateLimit:{title:"面板接口限流",description:"限制面板 API 的请求频率,防止高频刷接口(如用量统计、仪表盘查询)打爆数据库",proxySafeNote:"登录后的接口按「用户账号」维度计数,与来源 IP 无关——反向代理、NAT 共享出口等场景不会被误拦截;公开接口按真实客户端 IP 计数,回环与内网地址(反代内部转发地址)会自动跳过。",enabled:"启用面板接口限流",enabledHint:"对登录后的面板接口按账号限流;超出阈值返回 429,窗口重置后自动恢复。",userRpm:"每账号请求上限",userRpmHint:"单个账号每分钟允许的面板 API 请求总数,正常页面操作远达不到该阈值;0 表示不限制。",heavyRpm:"重查询请求上限",heavyRpmHint:"单个账号每分钟允许的用量/仪表盘等聚合统计查询次数(这类请求对数据库压力最大);0 表示不限制。",publicIpRpm:"公开接口每 IP 上限",publicIpRpmHint:"无需登录的公开接口(如站点公开设置)每个真实客户端 IP 每分钟的请求上限;0 表示不限制。",perMinute:"次/分钟",exemptAdmin:"管理员豁免",exemptAdminHint:"开启后管理员账号不受面板限流约束,避免批量运维操作被误拦。",saved:"面板接口限流配置已保存",saveFailed:"保存面板接口限流配置失败"},turnstile:{title:"Cloudflare Turnstile",description:"登录和注册的机器人防护",enableTurnstile:"启用 Turnstile",enableTurnstileHint:"需要 Cloudflare Turnstile 验证",siteKey:"站点密钥",secretKey:"私密密钥",siteKeyHint:"从 Cloudflare Dashboard 获取",cloudflareDashboard:"Cloudflare Dashboard",secretKeyHint:"服务端验证密钥(请保密)",secretKeyConfiguredHint:"密钥已配置,留空以保留当前值。"},captcha:{title:"人机验证",description:"登录和注册的机器人防护",enable:"启用人机验证",enableHint:"开启后登录、注册等入口需要通过人机验证",provider:"验证服务商",providerTurnstile:"Cloudflare Turnstile",providerTencent:"腾讯天御验证码",providerAliyun:"阿里云验证码 2.0"},tencentCaptcha:{title:"腾讯天御验证码",description:"为登录、注册及第三方登录创建账号流程提供滑动验证码保护",enable:"启用腾讯天御验证码",enableHint:"启用后将在所有原 Turnstile 场景使用腾讯滑动验证码",keepExisting:"留空以保留当前值",configured:"已配置,留空不会覆盖。",required:"启用前必须填写此项。",mutualExclusion:"腾讯天御验证码与 Cloudflare Turnstile、阿里云验证码互斥,开启其中一个会自动关闭其它。",regi
26on:"服务站点",regionCn:"中国站",regionIntl:"国际站",regionHint:"决定前端加载的 SDK 脚本与服务端校验接入点,需与 CaptchaAppId 所属站点一致;国际站请在 tencentcloud.com 控制台创建验证",appCredentialsTitle:"验证码应用密钥",appCredentialsHint:"CaptchaAppId 与 AppSecretKey 来自验证码控制台的验证管理页面。",cloudCredentialsTitle:"云 API 调用密钥",cloudCredentialsHint:"SecretId 与 SecretKey 用于服务端调用 DescribeCaptchaResult 接口。",appId:"CaptchaAppId",appSecretKey:"AppSecretKey",cloudSecretId:"腾讯云 SecretId",cloudSecretKey:"腾讯云 SecretKey",camPermissionHint:"推荐创建 CAM 子用户并授予 QcloudCaptchaFullAccess,避免使用主账号永久密钥。",aidEncryptedHint:"当前版本暂不支持 aidEncrypted,请先不要在验证码控制台开启 CaptchaAppId 强制校验。",openCaptchaConsole:"打开验证码控制台",createCloudKeys:"创建 SecretId / SecretKey",openWebDocs:"查看 Web 接入文档"},aliyunCaptcha:{accessKeyId:"AccessKey ID",accessKeyIdHint:"用于服务端验证的阿里云 AccessKey ID,建议使用仅含验证码权限的 RAM 子账号",accessKeySecret:"AccessKey Secret",accessKeySecretHint:"服务端验证密钥(请保密)",accessKeySecretConfiguredHint:"密钥已配置,留空以保留当前值。",sceneId:"场景 ID",sceneIdHint:"在阿里云验证码控制台创建验证场景后获取;验证方式(无痕/滑块/拼图)在控制台按场景配置",prefix:"身份标(prefix)",prefixHint:"在控制台概览页实例基本信息中获取",region:"服务地域",regionCn:"中国内地",regionSgp:"新加坡",regionHint:"决定前端脚本接入区域与服务端接入点,需与阿里云验证码实例所属地域一致"},apiKeyAcl:{title:"API Key IP 访问控制",description:"控制 API Key 白/黑名单、操作审计日志与会话 IP/UA 绑定使用哪个客户端 IP 判断",trustForwardedIp:"信任反代传递的客户端 IP",trustForwardedIpHint:"为保证升级兼容默认开启。开启后 CF-Connecting-IP、X-Real-IP 或 X-Forwarded-For 会直接接管客户端 IP 解析并覆盖 server.trusted_proxies;关闭后严格使用 server.trusted_proxies 配置的 Gin 可信代理链。仅在源站无法被直接访问时开启接管模式。切换会改变现有会话的 IP 指纹。",forwardedClientIpHeaders:"自定义客户端 IP 请求头",forwardedClientIpHeadersHint:"添加 CDN 或反代请求头名称,解析时优先于内置请求头。",forwardedClientIpHeadersPlaceholder:"X-Client-IP",forwardedClientIpHeadersRiskHint:"源站可被直接访问时,这些原始请求头可被伪造;请先限制源站访问再信任它们。",forwardedClientIpHeaderInvalid:"请输入有效的 HTTP 请求头名称。",forwardedClientIpHeadersLimit:"自定义客户端 IP 请求头最多允许 {max} 个。",removeForwardedClientIpHeader:"移除 {header}"},linuxdo:{title:"LinuxDo Connect 登录",description:"配置 LinuxDo Connect OAuth,用于 Sub2API 用户登录",enable:"启用 LinuxDo 登录",enableHint:"在登录/注册页面显示 LinuxDo 登录入口",clientId:"Client ID",clientIdPlaceholder:"例如:hprJ5pC3...",clientIdHint:"从 Connect.Linux.Do 后台获取",clientSecret:"Client Secret",clientSecretPlaceholder:"********",clientSecretHint:"用于后端交换 token(请保密)",clientSecretConfiguredPlaceholder:"********",clientSecretConfiguredHint:"密钥已配置,留空以保留当前值。",redirectUrl:"回调地址(Redirect URL)",redirectUrlPlaceholder:"https://your-domain.com/api/v1/auth/oauth/linuxdo/callback",redirectUrlHint:"需与 Connect.Linux.Do 中配置的回调地址一致(必须是 http(s) 完整 URL)",quickSetCopy:"使用当前站点生成并复制",redirectUrlSetAndCopied:"已使用当前站点生成回调地址并复制到剪贴板"},dingtalk:{title:"钉钉登录",description:"配置钉钉 OAuth,用于 Sub2API 用户登录",enable:"启用钉钉登录-企业内部应用",enableHint:"在登录/注册页面显示钉钉登录入口",clientId:"Client ID(AppKey)",clientIdPlaceholder:"ä¾
26‹å¦‚:dingxxxxxxxxxxxxxxxx",clientIdHint:"从钉钉开放平台应用详情页获取",clientSecret:"Client Secret(AppSecret)",clientSecretPlaceholder:"********",clientSecretHint:"用于后端交换 token(请保密)",clientSecretConfiguredPlaceholder:"********",clientSecretConfiguredHint:"密钥已配置,留空以保留当前值。",redirectUrl:"回调地址(Redirect URL)",redirectUrlPlaceholder:"https://your-domain.com/api/v1/auth/oauth/dingtalk/callback",redirectUrlHint:"需与钉钉开放平台中配置的回调地址一致(必须是 http(s) 完整 URL)",corpPolicy:{label:"企业限制策略",hint:"控制哪些钉钉账号(企业)可以登录",none:"不限制(所有钉钉账号均可登录)",internalOnly:"仅本企业(Internal Only)"},bypassRegistration:"开放钉钉注册",bypassRegistrationHint:"即使「开放注册」关闭时也可以通过钉钉登录来注册",syncDisplayName:"同步钉钉姓名",syncDisplayNameHint:"登录时将钉钉姓名写入 username 字段(同时记录到 dingtalk_name 属性)",syncCorpEmail:"同步企业邮箱",syncCorpEmailHint:"登录时将钉钉企业邮箱写入 dingtalk_email 属性(不影响登录邮箱)",syncCorpEmailPermissionHint:"需在钉钉开放平台 → 应用 → 权限管理中为本应用申请「邮箱等个人信息(fieldEmail)」权限,否则 OAPI 不会返回企业邮箱字段",syncDept:"同步部门",syncDeptHint:"登录时将钉钉首个部门完整路径写入 dingtalk_department 属性(每次登录实时拉取)",syncDeptPermissionHint:"需在钉钉开放平台 → 应用 → 权限管理中为本应用申请「通讯录部门信息读权限(qyapi_get_department_list)」,否则无法递归出部门路径",syncDisplayNameTarget:"属性键",syncDisplayNameTargetHint:"默认 dingtalk_name / 钉钉姓名;保存设置时按上述属性键和显示名称自动创建用户属性(已存在则仅同步显示名称)",syncCorpEmailTarget:"属性键",syncCorpEmailTargetHint:"默认 dingtalk_email / 钉钉企业邮箱;保存设置时按上述属性键和显示名称自动创建用户属性(已存在则仅同步显示名称)",syncDeptTarget:"属性键",syncDeptTargetHint:"默认 dingtalk_department / 钉钉部门;保存设置时按上述属性键和显示名称自动创建用户属性(已存在则仅同步显示名称)",syncAttrDisplayName:"显示名称"},oidc:{title:"OIDC 登录",description:"配置标准 OIDC Provider(例如 Keycloak)",enable:"启用 OIDC 登录",enableHint:"在登录/注册页面显示 OIDC 登录入口",providerName:"Provider 名称",providerNamePlaceholder:"例如 Keycloak",clientId:"Client ID",clientIdPlaceholder:"OIDC client id",clientSecret:"Client Secret",clientSecretPlaceholder:"********",clientSecretHint:"用于后端交换 token(请保密)",clientSecretConfiguredPlaceholder:"********",clientSecretConfiguredHint:"密钥已配置,留空以保留当前值。",issuerUrl:"Issuer URL",issuerUrlPlaceholder:"https://id.example.com/realms/main",discoveryUrl:"Discovery URL",discoveryUrlPlaceholder:"可选,留空将基于 issuer 自动推导",authorizeUrl:"Authorize URL",authorizeUrlPlaceholder:"可选,可通过 discovery 自动获取",tokenUrl:"Token URL",tokenUrlPlaceholder:"可选,可通过 discovery 自动获取",userinfoUrl:"UserInfo URL",userinfoUrlPlaceholder:"可选,可通过 discovery 自动获取",jwksUrl:"JWKS URL",jwksUrlPlaceholder:"可选;启用严格 ID Token 校验时必填",scopes:"Scopes",scopesPlaceholder:"openid email profile",scopesHint:"必须包含 openid",redirectUrl:"后端回调地址(Redirect URL)",redirectUrlPlaceholder:"https://your-domain.com/api/v1/auth/oauth/oidc/callback",redirectUrlHint:"必须与 OIDC Provider 中配置的回调地址一致",quickSetCopy:"使用当前站点生成并复制",redirectUrlSetAndCopied:"已使用当前站点生成回调地址并复制到剪贴板",frontendRedirectUrl:"前端回调路径",frontendRedirectUrlPlaceholder:"/auth/oidc/callback",frontendRedirectUrlHint:"后端回调完成后重定向到此前端路径",tokenAuthMethod:"Token 鉴权方式",clockSkewSeconds:"时钟偏移(秒)",allowedSigningAlgs:"允许的签名算法",allowedSigningAlgsPlaceholder:"RS256,ES256,PS256",usePkce:"启用 PKCE",validateIdToken:"校验 ID Token",requireEmailVerified:"要求邮箱已验证",userinfoEmailPath:"UserInfo 邮箱字段路径",userinfoEmailPathPlaceholder:"ä¾
26‹å¦‚ data.email",userinfoIdPath:"UserInfo ID 字段路径",userinfoIdPathPlaceholder:"例如 data.id",userinfoUsernamePath:"UserInfo 用户名字段路径",userinfoUsernamePathPlaceholder:"例如 data.username"},defaults:{title:"用户默认设置",description:"新用户的默认值",defaultBalance:"默认余额",defaultBalanceHint:"新用户的初始余额",affiliateRebateRate:"邀请返利比例",affiliateRebateRateHint:"充值后返给邀请人的比例(0-100%,例如填写 10 表示返利 10%)",defaultConcurrency:"默认并发数",defaultConcurrencyHint:"新用户的最大并发请求数",defaultUserRpmLimit:"默认用户 RPM 限制",defaultUserRpmLimitHint:"新用户默认每分钟最大请求数,0 = 不限制;仅作用于新用户创建时初始化",defaultSubscriptions:"默认订阅列表",defaultSubscriptionsHint:"新用户创建或注册时自动分配这些订阅",addDefaultSubscription:"添加默认订阅",defaultSubscriptionsEmpty:"未配置默认订阅。新用户不会自动获得订阅套餐。",defaultSubscriptionsDuplicate:"默认订阅存在重复分组:{groupId}。每个分组只能出现一次。",subscriptionGroup:"订阅分组",subscriptionValidityDays:"有效期(天)",defaultPlatformQuotas:"默认平台限额(注册时分配)",defaultPlatformQuotasHint:"新用户注册时自动写入平台限额记录;已有用户不受影响。留空 = 该平台该窗口不限制。",platformQuotaNotice:"月限额为 30 天滚动窗口,非自然月"},platformQuota:{platform:"平台",daily:"日限额 (USD)",weekly:"周限额 (USD)",monthly:"月限额 (USD, 30天滚动)",placeholder:"不限"},claudeCode:{title:"Claude Code 设置",description:"控制 Claude Code 客户端访问要求",minVersion:"最低版本号",minVersionPlaceholder:"例如 2.1.63",minVersionHint:"拒绝低于此版本的 Claude Code 客户端请求(semver 格式)。留空则不检查版本。",maxVersion:"最高版本号",maxVersionPlaceholder:"例如 2.5.0",maxVersionHint:"拒绝高于此版本的 Claude Code 客户端请求(semver 格式)。留空则不限制最高版本。"},scheduling:{title:"网关调度设置",description:"控制 API Key 的调度行为",allowUngroupedKey:"允许未分组 Key 调度",allowUngroupedKeyHint:"关闭后,未分配到任何分组的 API Key 将无法发起请求(返回 403)。建议保持关闭以确保所有 Key 都归属明确的分组。",accountSchedulingThresholdsTitle:"平台账号自动停调阈值",accountSchedulingThresholdsDescription:"当账号当前原生用量窗口(OpenAI Codex/Anthropic 会话,或 Grok 请求/Token 利用率)达到该百分比时,Sub2API 会临时将其移出调度,直到窗口重置。填 100 表示禁用。",accountSchedulingThresholdsGlobalHint:"系统级默认值,作用于该平台全部账号。可在账号编辑页对单个账号覆盖。",accountSchedulingThresholdsDisabledHint:"100 表示禁用该平台自动停调;1–99 表示达到该利用率后暂停调度。",accountSchedulingThresholdsRangeHint:"整数 1–100(百分比)。仅 OpenAI / Anthropic / Grok。"},upstreamBillingProbe:{title:"上游倍率自动探测",description:"定期获取 API Key 账号所连接上游 Sub2API 站点声明的计费倍率;只有另行开启“同步上游声明倍率”的账号才会更新账号倍率。",enabled:"启用全局自动探测",enabledHint:"开启后,仅对账号自身已启用自动检测的账号执行定时探测;关闭后停止所有定时探测,手动探测不受影响。",intervalMinutes:"探测周期(分钟)",intervalHint:"范围 5–1440 分钟。成功探测结果的有效期为两个探测周期。",saved:"上游倍率自动探测设置已保存",saveFailed:"保存上游倍率自动探测设置失败"},ollamaCloudUsage:{title:"Ollama Cloud 用量刷新",description:"在模型请求驱动下刷新账号在 Ollama 官方设置页展示的用量;默认关闭。无新请求时不会自动抓取。",enabled:"启用全局自动刷新",enabledHint:"仅刷新已保存浏览器会话且账号自身也开启自动刷新的账号;需有后续模型请求才会触发。手动刷新不受影响。",intervalMinutes:"持续请求最长等待(分钟)",intervalHint:"范围 15–1440 分钟。请求持续不断导致 debounce 一直后移时,最晚在此时间强制刷新。",debounceMinutes:"请求安静等待(分钟)",debounceHint:"范围 1–60 分钟。最后一次模型请求安静满此时长后再抓取用量。",saved:"Ollama Cloud 用量刷新设置
26已保存",saveFailed:"保存 Ollama Cloud 用量刷新设置失败"},gatewayForwarding:{title:"请求转发行为",description:"控制请求转发到上游 OAuth 账号时的行为",grokDefaultTextModel:"默认 Grok 文本模型",grokDefaultTextModelHint:"用于空模型值;仅在右侧开关开启时也用于其他客户端模型命名空间。允许填写自定义 Grok 模型 ID。",grokCrossClientMap:"映射其他客户端模型到 Grok",grokCrossClientMapHint:"为兼容客户端,默认开启。GPT、Codex、o 系列和 Claude 模型 ID 会路由到左侧默认 Grok 文本模型;关闭后必须使用 Grok 模型 ID。",grokDefaultBaseURLMode:"默认 Grok 上游",grokDefaultBaseURLModeHint:"仅用于 Grok 账号未配置显式 base URL 的文本请求;媒体和语音仍使用官方 API 主机。",grokBaseURLModeCLI:"CLI 聊天代理",grokBaseURLModeAPI:"公共 API",grokBaseURLModeUSEast1:"区域 API(us-east-1)",grokBaseURLModeUSWest2:"区域 API(us-west-2)",grokBaseURLModeEUWest1:"区域 API(eu-west-1)",openaiTTFTMode:"OpenAI Responses 首 token 统计口径",openaiTTFTModeSemantic:"历史兼容(语义事件)",openaiTTFTModeVisible:"真实可见输出",openaiTTFTModeHint:"默认使用历史兼容口径,首个非预置语义事件即记录 first_token_ms。选择真实可见输出后,仅在首个非空文本、工具参数或图片内容到达时记录。",fingerprintUnification:"指纹统一化",fingerprintUnificationHint:"统一共享同一 OAuth 账号的用户的 X-Stainless-* 请求头。关闭后透传客户端原始请求头。",metadataPassthrough:"Metadata 透传",metadataPassthroughHint:"透传客户端原始 metadata.user_id,不进行重写。可能提高上游缓存命中率。",cchSigning:"CCH 签名",cchSigningHint:"对转发请求的 billing header 进行 CCH 哈希签名。关闭时保留原始占位符。",claudeOAuthSystemPromptInjection:"Claude OAuth System 注入",claudeOAuthSystemPromptInjectionHint:"为非 Claude Code 客户端的 Claude OAuth 请求注入 Claude Code 形态的 system blocks。默认开启。",claudeOAuthSystemPrompt:"Claude OAuth 扩展提示词",claudeOAuthSystemPromptPlaceholder:"留空时使用内置 Claude Code 扩展提示词。",claudeOAuthSystemPromptHint:"兼容旧配置:仅控制第三个注入的 system block。",claudeOAuthSystemPromptBlocks:"Claude OAuth System Blocks",claudeOAuthSystemPromptBlocksHint:"每个 block 会保存为带 enabled、type、text、可选 cache_control 的 JSON。{'{'}billing_header{'}'} 会按请求动态生成;Claude Code 身份提示词和扩展提示词可直接编辑,也可用预设恢复默认值。",systemBlockTitle:"System Block {index}",systemBlockPreset:"预设",systemBlockPresetBilling:"Billing Header",systemBlockPresetIdentity:"Claude Code 身份提示词",systemBlockPresetExpansion:"Claude Code 扩展提示词",systemBlockPresetCustom:"自定义",systemBlockType:"类型",systemBlockTypeText:"文本",systemBlockText:"内容",systemBlockCacheControl:"Cache Control",systemBlockHide:"隐藏 block 详情",systemBlockShow:"展示 block 详情",addSystemBlock:"添加 block",resetSystemBlocks:"恢复默认",cacheTTL5m:"5 分钟",cacheTTL1h:"1 小时",anthropicCacheTTL1hInjection:"Anthropic 缓存 TTL 注入",anthropicCacheTTL1hInjectionHint:"开启后,对 Anthropic OAuth/Setup Token 请求体中已有的 ephemeral 缓存块强制写入 1h;响应 usage 默认按 5m 回写计费,账号级 TTL 计费设置优先。",rewriteMessageCacheControl:"改写消息缓存断点",rewriteMessageCacheControlHint:"默认关闭,保留客户端在 messages 内容块中的 cache_control。开启后会清除客户端断点并注入代理断点,适合不自行管理缓存策略的客户端。",clientDatelineNormalization:"客户端 dateline 归一化",clientDatelineNormalizationHint:`默认开启。将 Anthropic OAuth/Setup Token 请求体中 "Today's date is …" 语句里的撇号与日期分隔符还原为 ASCII 撇号 + 短横线 (2026-07-01) 的规范形态,抹除某些客户端在检测到非官方 base URL 时注入的隐写指纹位。仅作用于 system prompt 与 <system-reminder> 块内,API Key 账号不受影响。`,antigravityUserAgentVersion:"Antigravity UA 版本",antigravityUserAgentVersionPlaceholder:"1.23.2",antigravityUserAgentVersionHint:"留空时使用 ANTIGRAVITY_USER_AGENT_VERSION 或内置默认值 1.23.2;填写后后台设置优先ã€
26‚",openaiCodexUserAgent:"OpenAI Codex UA",openaiCodexUserAgentPlaceholder:"codex-tui/0.146.1 (Ubuntu 22.4.0; x86_64) WindowsTerminal (codex-tui; 0.146.1)",openaiCodexUserAgentHint:"出站统一使用的完整 Codex User-Agent,用于自定义 OS / 架构 / 终端指纹。留空则按下方版本号拼出标准 codex-tui 形态(推荐)。填写后首段和尾部的版本号仍会被下方版本号同步覆盖,避免这条 UA 停在填写时的旧版本——上游在容量紧张时按客户端身份分优先级降载,陈旧或非官方形态的身份会被优先丢弃并回 server_is_overloaded。",openaiCodexClientVersion:"Codex 客户端版本号",openaiCodexClientVersionPlaceholder:"留空则跟随自动同步",openaiCodexClientVersionHint:"网关对上游声明的 Codex 客户端版本号,User-Agent 与 version 头同源使用。留空表示使用自动同步到的官方最新稳定版;填写后固定为该版本,不再跟随同步。",openaiCodexVersionAutoSync:"自动同步 Codex 版本号",openaiCodexVersionAutoSyncHint:"每 6 小时从官方仓库获取最新稳定版客户端版本号,无需为了跟版本而升级本服务。关闭后仅使用上方手填版本或内置版本。",openaiCodexVersionSyncedValue:"当前同步到:{version}",codexHardeningTitle:"Codex 设置",codexClientRestrictionTitle:"Codex 客户端限制",codexHardeningDesc:"仅对已开启「仅允许 Codex 官方客户端」的 OpenAI OAuth 账号生效(全局)。在 User-Agent/Originator 之外,用版本区间、引擎指纹门与黑/白名单巩固判定。",minCodexVersion:"最低 Codex 版本",minCodexVersionPlaceholder:"例如 0.142.0",maxCodexVersion:"最高 Codex 版本",maxCodexVersionPlaceholder:"例如 0.200.0",codexVersionHint:"仅对官方客户端生效,校验其版本是否落在 [最低, 最高] 区间。留空表示该侧不限制。",codexFingerprintSignals:"Codex 引擎指纹信号",codexFingerprintSignalsDesc:"定义引擎指纹信号:勾「必须」的信号需全部命中(AND),每条 / 分隔的变体取或(OR);一条都不勾即不校验。默认只勾 x-codex- 前缀。类型:头精确 / 头前缀 / body 路径。",codexFpTypeHeaderExact:"头精确",codexFpTypeHeaderPrefix:"头前缀",codexFpTypeBodyPath:"body 路径",codexFpMatchPlaceholder:"匹配,变体用 / 分隔(如 session-id / session_id 或 x-codex-)",codexFpRequired:"必须",codexFingerprintNoRequiredWarn:"未勾选任何「必须」信号——引擎指纹门当前不生效,等于放行所有通过身份/版本的候选。如需启用校验,请至少勾选一条信号。",codexAllowAppServer:"Codex app-server",codexAllowAppServerDesc:"放行内嵌 Codex 引擎、经 app-server 协议接入的第三方客户端(如 Claude Code 的 codex 插件)。默认关闭;开启后此类客户端通过引擎指纹门(下方信号列表)即放行,关闭则仅放行官方客户端与白名单。",codexBlacklist:"User-Agent/Originator 黑名单",codexBlacklistDesc:"命中任一字段即拒,优先于一切放行。originator 精确匹配,User-Agent 为包含匹配(多个用逗号分隔)。",codexWhitelist:"User-Agent/Originator 白名单",codexWhitelistDesc:"放行官方集之外的客户端:需 originator 精确,且每个 User-Agent 标记都命中。默认仍需过引擎指纹门,勾「跳过引擎指纹」可免。",codexWhitelistSkipFingerprint:"跳过引擎指纹",codexWhitelistSkipFingerprintTooltip:"风险:勾选后该条仅凭 originator + User-Agent(均可伪造)放行,不再要求引擎指纹兜底。仅用于确属可信、但本身不发 codex 引擎指纹的第三方客户端。",codexOriginatorPlaceholder:"originator(精确,如 opencode)",codexUaContainsPlaceholder:"User-Agent 包含标记,逗号分隔(如 opencode/)",codexAddRow:"添加一条",codexRemoveRow:"删除"},webSearchEmulation:{title:"Web Search 模拟",description:"为不原生支持搜索的 Anthropic API Key 账号注入 web search 能力",enabled:"启用 Web Search 模拟",enabledHint:"全局开关。关闭后所有渠道和账号的 web search 模拟均不生效。",providers:"搜索服务商",addProvider:"添加服务商",providerType:"服务商类型",apiKey:"API Key",apiKeyPlaceholder:"输入 API Key",apiKeyConfigured:"已配置",showApiKey:"显示",hideApiKey:"隐藏",copyApiKey:"复制",copied:"已复制",quotaLimit:"配额上限",quotaLimitHint:"留空表示无限制;填写时必须大于 0",quotaLimitMustBePositive:"配额上限必须大于 0",subscribedAt:"订阅时间",subscribedAtHint:"配额从此日期起每月自动重置;留空则不自动重置",quotaUsage:"用量",resetUsage:"重置",resetUsageConfirm:"确定要重置此服务商的用量计数吗?",resetUsageSuccess:"用量已重置",proxy:"代理",removeProvider:"删除",noProviders:"未配置搜索服务商",test:"测试",testDefaultQuery:"搜索今年世界大事件",testing:"搜索中...",testResultTitle:"搜索结果",testResultProvider:"服务商",testNoResults:"无搜索结果"},site:{title:"站点设置",description:"自定义站点品牌",backendMode:"Backend 模式",backendModeDescription:"禁用用户注册、公开页面和自助服务功能。仅管理员可以登录和管理平台。",siteName:"站点名称",siteNameHint:"显示在邮件和页面标题中",siteNamePlaceholder:"Sub2API",siteSubtitle:"站点副标题",siteSubtitleHint:"显示在登录和注册页面",siteSubtitlePlaceholder:"订阅转 API 转换平台",apiBaseUrl:"API 端点地址",apiBaseUrlHint:'用于"使用密钥"、"导入到 CC Switch"和回调地址建议,留空则使用当前站点地址',apiBaseUrlPlaceholder:"https://api.example.com",tablePreferencesTitle:"通用表格设置",tablePreferencesDescription:"设置后台与用户侧表格组件的默认分页行为",tableDefaultPageSize:"默认每页条数",tableDefaultPageSizeHint:"必须为 5-1000 之间的整数",tablePageSizeOptions:"可选每页条数列表",tablePageSizeOptionsPlaceholder:"10, 20, 50, 100",tablePageSizeOptionsHint:"使用英文逗号分隔,取值范围 5-1000,保存æ—
26¶ä¼šè‡ªåŠ¨åŽ»é‡å¹¶æŽ’åº",tableDefaultPageSizeRangeError:"默认每页条数必须在 {min}-{max} 之间",tablePageSizeOptionsFormatError:"可选每页条数格式无效,请输入 {min}-{max} 之间的整数并用英文逗号分隔",customEndpoints:{title:"自定义端点",description:"添加额外的 API 端点地址,用户可在「API Keys」页面快速复制",itemLabel:"端点 #{n}",name:"名称",namePlaceholder:"如:OpenAI Compatible",endpointUrl:"端点地址",endpointUrlPlaceholder:"https://api2.example.com",descriptionLabel:"介绍",descriptionPlaceholder:"如:支持 OpenAI 格式请求",add:"添加端点"},contactInfo:"客服联系方式",contactInfoPlaceholder:"例如:QQ: 123456789",contactInfoHint:"填写客服联系方式,将展示在兑换页面、个人资料等位置",docUrl:"文档链接",docUrlHint:"文档网站的链接。留空则隐藏文档链接。",docUrlPlaceholder:"https://docs.example.com",siteLogo:"站点Logo",uploadImage:"上传图片",remove:"移除",logoHint:"PNG、JPG 或 SVG 格式,最大 300KB。建议:80x80px 正方形图片。",logoSizeError:"图片大小超过 300KB 限制({size}KB)",logoTypeError:"请选择图片文件",logoReadError:"读取图片文件失败",homeContent:"首页内容",homeContentPlaceholder:"在此输入首页内容,支持 Markdown & HTML 代码。如果输入的是一个链接,则会使用该链接作为 iframe 的 src 属性。",homeContentHint:"自定义首页内容,支持 Markdown/HTML。如果输入的是链接(以 http:// 或 https:// 开头),则会使用该链接作为 iframe 的 src 属性,这允许你设置任意网页作为首页。设置后首页的状态信息将不再显示。",homeContentIframeWarning:"⚠️ iframe 模式提示:部分网站设置了 X-Frame-Options 或 CSP 安全策略,禁止被嵌入到 iframe 中。如果页面显示空白或报错,请确认目标网站允许被嵌入,或考虑使用 HTML 模式自行构建页面内容。",compactHome:"简洁首页",compactHomeHint:"未设置自定义首页内容时,展示简洁的站点信息页面。",hideCcsImportButton:"隐藏 CCS 导入按钮",hideCcsImportButtonHint:'启用后将在 API Keys 页面隐藏"导入 CCS"按钮'},purchase:{title:"充值/订阅页面",description:"在侧边栏展示“充值/订阅”入口,并在页面内通过 iframe 打开指定链接",enabled:"显示充值/订阅入口",enabledHint:"仅在标准模式(非简单模式)下展示",url:"充值/订阅页面 URL",urlPlaceholder:"https://example.com/purchase",urlHint:"必须是完整的 http(s) 链接",iframeWarning:"⚠️ iframe 提示:部分网站会通过 X-Frame-Options 或 CSP(frame-ancestors)禁止被 iframe 嵌入,出现空白时可引导用户使用”新窗口打开”。",integrationDoc:"支付集成文档",integrationDocHint:"包含接口说明、幂等语义及示例代码"},customMenu:{title:"自定义菜单页面",description:"添加自定义 iframe 页面到侧边栏导航。每个页面可以设置为普通用户或管理员可见。",itemLabel:"菜单项 #{n}",name:"菜单名称",namePlaceholder:"如:帮助中心",url:"页面 URL",urlPlaceholder:"https://example.com/page",iconSvg:"SVG 图标",iconSvgPlaceholder:"<svg>...</svg>",iconPreview:"图标预览",uploadSvg:"上传 SVG",removeSvg:"清除",visibility:"可见角色",visibilityUser:"普通用户",visibilityAdmin:"管理员",add:"添加菜单项",remove:"删除",moveUp:"上移",moveDown:"下移"},payment:{title:"支付设置",description:"配置支付系统选项",configGuide:"支付配置指南",enabled:"启用支付",enabledHint:"启用或禁用支付系统",enabledPaymentTypes:"启用的服务商",enabledPaymentTypesHint:"禁用服务商将同时禁用对应的实例。",findProvider:"正在寻找合适的易支付服务商?",minAmount:"最低金额",maxAmount:"最高金额",dailyLimit:"每日限额",balanceRechargeMultiplier:"余额充值倍率",balanceRechargeMultiplierHint:"用户每支付 1 CNY 可获得多少 USD 余额",balanceRechargePreview:"预览:1 CNY = {usd} USD",subscriptionUsdToCnyRate:"订阅 CNY 换算汇率",subscriptionUsdToCnyRateHint:"CNY 支付通道下,套餐每 1 USD 价格收取多少 CNY(如 7.15)。0 或留空 = 不换算,订阅按 price 数值直接收款。启用后所有套餐 price 必须按 USD 定价",subscriptionUsdToCnyRateDisabled:"未启用(按 price 直付)",rechargeFeeRate:"充值手续费率",rechargeFeeRateHint:"用户充值时额外收取的手续费百分比,0 表示不收取手续费",rechargeFeePreview:"预览:充值 100 元,手续费 {fee} 元",orderTimeout:"订单超时时间",orderTimeoutHint:"单位:分钟,至少 1 分钟",maxPendingOrders:"最大待支付订单数",cancelRateLimit:"限制取消频率",cancelRateLimitHint:"启用后,用户在时间窗口内取消订单次数超限将无法创建新订单",cancelRateLimitEvery:"每",cancelRateLimitAllowMax:"最多",cancelRateLimitTimes:"次",cancelRateLimitWindow:"时间窗口",cancelRateLimitUnit:"周期",cancelRateLimitMax:"最大取消次数",cancelRateLimitUnitMinute:"分钟",cancelRateLimitUnitHour:"小时",cancelRateLimitUnitDay:"天",cancelRateLimitWindowMode:"窗口模式",cancelRateLimitWindowModeRolling:"滚动",cancelRateLimitWindowModeFixed:"固定",alipayForceQRCode:"支付宝强制二维码支付",alipayForceQRCodeHint:"启用后,移动端支付宝用户将统一使用二ç
26»´ç æ‰«ç æ”¯ä»˜ï¼Œä¸å†è·³è½¬è‡³æ‰‹æœºç½‘站支付",alipayMobilePrecreateDeepLink:"支付宝移动端当面付唤起",alipayMobilePrecreateDeepLinkHint:"启用后,移动端官方支付宝订单调用当面付并尝试打开支付宝;失败时显示动态二维码。该设置优先于强制二维码支付",helpText:"帮助文本",helpImageUrl:"帮助图片链接",manageProviders:"管理服务商",balancePaymentDisabled:"禁用余额充值",noLimit:"留空表示不限制",helpImage:"帮助图片",helpImagePlaceholder:"上传或输入图片链接",helpTextPlaceholder:"输入帮助说明文本...",providerEasypay:"易支付",providerAlipay:"支付宝官方",providerWxpay:"微信官方",providerStripe:"Stripe",providerAirwallex:"Airwallex",typeDisabled:"类型已禁用",enableTypesFirst:"请先在上方启用至少一种服务商",easypayRedirect:"跳转",paymentMode:"支付模式",modeRedirect:"跳转",modeQRCode:"二维码",modePopup:"弹窗",validationNameRequired:"服务商名称不能为空",validationTypesRequired:"请至少选择一种支持的支付方式",validationFieldRequired:"{field} 不能为空",validationEasyPayCustomMethodRequired:"每个易支付自定义方式都必须填写支付方式和上游 type",validationEasyPayCustomMethodTypeInvalid:"易支付自定义支付方式只能包含小写字母、数字、下划线和短横线",validationEasyPayCustomMethodUpstreamTypeInvalid:"易支付上游 type 只能包含小写字母、数字、下划线和短横线",validationEasyPayCustomMethodReserved:"易支付自定义支付方式不能使用内置的 alipay 或 wxpay",validationEasyPayCustomMethodPrefixReserved:"易支付自定义支付方式不能以 alipay 或 wxpay 开头",validationEasyPayCustomMethodDuplicate:"易支付自定义支付方式不能重复",field_apiBase:"API 基础地址",field_notifyUrl:"异步通知地址",field_returnUrl:"同步跳转地址",callbackBaseUrl:"回调基础地址",field_privateKey:"私钥",field_publicKey:"公钥",field_mpAppId:"公众号 App ID",field_mchId:"商户号",field_apiV3Key:"API v3 密钥",field_publicKeyId:"公钥 ID",field_certSerial:"证书序列号",field_h5AppName:"H5 应用名称",field_h5AppUrl:"H5 应用地址",wxpayConfigHint:"微信支付通常只需要填写 App ID。公众号 App ID、H5 应用名称、H5 应用地址仅在公众号支付或 H5 场景有特殊要求时再填写。",wxpayAdvancedOptions:"微信支付高级可选项",field_secretKey:"密钥",field_clientId:"Client ID",field_apiKey:"API Key",field_publishableKey:"公开密钥",field_webhookSecret:"Webhook 密钥",field_countryCode:"国家/地区代码",field_currency:"支付币种",field_accountId:"Airwallex 账户 ID",field_airwallexApiBaseHint:"必须和 API Key 所属环境一致:沙箱/测试密钥使用 https://api-demo.airwallex.com/api/v1,生产密钥使用 https://api.airwallex.com/api/v1。环境混用会返回 credentials_invalid / Access Denied。",field_paymentCurrencyHint:"默认 CNY。Stripe 和 Airwallex 可按账户支持从下拉项选择 HKD、USD 等币种;微信、支付宝、易支付仍按 CNY。",field_accountIdHint:"不涉及多账户、组织级密钥或连接账户收款时可以不填;单账户 Scoped API Key 会默认使用所选账户。",field_cid:"支付渠道 ID",field_cidAlipay:"支付宝渠道 ID",field_cidWxpay:"微信渠道 ID",easypayCustomMethods:"易支付自定义支付方式",easypayCustomMethodsHint:"添加当前易支付服务商额外支持的支付方式。支付方式会记录到 Sub2API 订单中,上游 type 会作为易支付 type 参数提交。",addCustomMethod:"添加方式",customMethodType:"支付方式",customMethodUpstreamType:"上游 type",customMethodDisplayName:"显示名称",customMethodDisplayNamePlaceholder:"如:信用卡",stripeWebhookHint:"请在 Stripe Dashboard 中将以下地址配置为 Webhook 端点:",stripeWebhookApiVersionHint:"Webhook 端点的 API 版本请与当前集成的 Stripe SDK 对齐,建议选择 {version};版本不一致可能导致回调事件解析失败。",airwallexWebhookHint:"请在 Airwallex 后台将以下
26地址配置为 Webhook 端点;事件至少选择 Payment Intent -> Succeeded(payment_intent.succeeded),建议同时选择 Payment Intent -> Cancelled(payment_intent.cancelled);API version 选择账户默认或最新稳定版本。",airwallexGuideSummary:"创建 Airwallex Scoped API 密钥时,建议只在账户级权限中为 Payment Acceptance 勾选读取和写入。",airwallexGuideNote:"不需要勾选 Spend、Payouts、Transfers、Funds Splits、POS 终端等与在线收款无关的权限。Webhook 事件至少选择 payment_intent.succeeded,建议同时选择 payment_intent.cancelled;API version 选择账户默认或最新稳定版本。",limitsTitle:"限额配置",limitSingleMin:"单笔最低",limitSingleMax:"单笔最高",limitDaily:"每日限额",limitsHint:"全部留空使用全局配置,部分填写时留空项表示不限制",limitsUseGlobal:"使用全局配置",limitsNoLimit:"不限制",productNamePrefix:"商品名前缀",productNameSuffix:"商品名后缀",preview:"预览",loadBalanceStrategy:"负载均衡策略",strategyRoundRobin:"轮询",strategyLeastAmount:"最少金额",providerManagement:"服务商管理",providerManagementDesc:"管理支付服务商实例",createProvider:"添加服务商",editProvider:"编辑服务商",deleteProvider:"删除服务商",deleteProviderConfirm:"确定要删除此服务商吗?",providerName:"服务商名称",providerKey:"服务商类型",selectProviderKey:"选择服务商类型",providerConfig:"凭证配置",paymentGuideTrigger:"查看支付方式说明",guideOpenLabel:"开通:",guideCallLabel:"调用:",guideFallbackLabel:"降级:",alipayGuideSummary:"桌面优先扫码单,失败再走收银台;移动默认手机网站支付,也可启用当面付唤起。",alipayGuideFaceToFaceTitle:"当面付 / 扫码支付",alipayGuideFaceToFaceOpen:"需开通当面付或扫码支付能力。",alipayGuideFaceToFaceCall:"桌面端下单时优先调用 alipay.trade.precreate,前台直接渲染二维码。",alipayGuideFaceToFaceFallback:"接口不可用或返回失败时,自动降级到电脑网站支付。",alipayGuidePagePayTitle:"电脑网站支付",alipayGuidePagePayOpen:"需开通电脑网站支付。",alipayGuidePagePayCall:"桌面端当面付不可用时调用 alipay.trade.page.pay,并继续把返回链接渲染成二维码。",alipayGuidePagePayFallback:"同时保留打开收银台入口,用户可手动重新拉起支付页。",alipayGuideWapTitle:"手机网站支付",alipayGuideWapOpen:"需开通手机网站支付。",alipayGuideWapCall:"默认调用 alipay.trade.wap.pay;开启移动端当面付唤起后改用 alipay.trade.precreate。",alipayGuideWapFallback:"未开通或返回异常时,前端自动改走扫码支付并提示未开通移动支付。",wxpayGuideSummary:"桌面优先 Native 扫码,移动端按浏览器环境走 JSAPI 或 H5。",wxpayGuideNote:"当前表单默认共用一个 App ID,适合同主体下统一配置网页、移动和公众号场景。",wxpayGuideNativeTitle:"Native / 扫码支付",wxpayGuideNativeOpen:"需开通 Native 或扫码支付能力。",wxpayGuideNativeCall:"桌面端默认调用 Native,下发二维码内容给前台渲染。",wxpayGuideNativeFallback:"移动端无法走 JSAPI 或 H5 时,也会自动回退到这里。",wxpayGuideJsapiTitle:"JSAPI / 公众号支付",wxpayGuideJsapiOpen:"需开通公众号支付,并保证当前浏览器在微信内且能拿到 OpenID。",wxpayGuideJsapiCall:"微信内浏览器完成授权后调用 JSAPI,直接拉起微信支付。",wxpayGuideJsapiFallback:"未配置、Bridge 不可用或拉起失败时,自动改走扫码支付。",wxpayGuideH5Title:"H5 支付",wxpayGuideH5Open:"需开通 H5 支付。",wxpayGuideH5Call:"移动端非微信浏览器且有客户端 IP 时调用 H5 支付,跳转微信收银台。",wxpayGuideH5Fallback:"未开通 H5 或下单失败时,自动改走扫码支付。",noProviders:"暂无服务商实例",supportedTypes:"支持的支付方式",supportedTypesHint:"逗号分隔,如 alipay,wxpay",refundEnabled:"允许退款",allowUserRefund:"允许用户退款",enableConflict:"{method} 已有启用中的服务商实例:{provider}。请先停用现有实例后再启用或切换。"},balanceNotify:{title:"余额不足提醒",description:"当用户余额低于阈值时发送邮件提醒",enabled:"启用余额不足提醒",threshold:"默认提醒阈值",thresholdHint:"用户未自定义时使用此值",thresholdPlaceholder:"输入金额",rechargeUrl:"充值页面 URL",rechargeUrlPlaceholder:"https://example.com/payment",rechargeUrlHint:"设置
26后邮件中将包含充值链接按钮"},quotaNotify:{title:"账号限额通知",description:"当账号配额用量达到告警阈值时通知管理员",enabled:"启用账号限额通知",emails:"通知邮箱",emailsHint:"留空则不发送通知",addEmail:"添加邮箱",emailPlaceholder:"输入邮箱地址"},subscriptionExpiryNotify:{title:"订阅到期提醒",description:"控制是否向用户发送订阅即将到期的邮件提醒。",enabled:"启用订阅到期提醒",enabledHint:"开启后,系统会在订阅到期前 7 天、3 天、1 天各发送一次提醒。"},smtp:{title:"SMTP 设置",description:"配置用于发送验证码的邮件服务",testConnection:"测试连接",testing:"测试中...",host:"SMTP 主机",hostPlaceholder:"smtp.gmail.com",port:"SMTP 端口",portPlaceholder:"587",username:"SMTP 用户名",usernamePlaceholder:"your-email{'@'}gmail.com",password:"SMTP 密码",passwordPlaceholder:"********",passwordHint:"留空以保留现有密码",passwordConfiguredPlaceholder:"********",passwordConfiguredHint:"密码已配置,留空以保留当前值。",fromEmail:"发件人邮箱",fromEmailPlaceholder:"noreply{'@'}example.com",fromName:"发件人名称",fromNamePlaceholder:"Sub2API",useTls:"使用 TLS",useTlsHint:"为 SMTP 连接启用 TLS 加密"},testEmail:{title:"发送测试邮件",description:"发送测试邮件以验证 SMTP 配置",recipientEmail:"收件人邮箱",recipientEmailPlaceholder:"test{'@'}example.com",sendTestEmail:"发送测试邮件",sending:"发送中...",enterRecipientHint:"请输入收件人邮箱地址"},emailTemplates:{title:"邮件模板",description:"按事件和语言自定义通知邮件主题与 HTML 内容。",event:"事件",locale:"语言",localeEn:"英文",localeZh:"中文",subject:"主题",subjectPlaceholder:"输入邮件主题",html:"HTML 模板",htmlPlaceholder:"编辑邮件 HTML 模板",placeholders:"可用占位符",placeholdersHelp:"点击占位符可复制。后端发送邮件时会替换这些值。",livePreview:"实时预览",previewSecurityHint:"预览 HTML 由后端预览接口生成,并在禁用脚本的沙盒 iframe 中展示。",preview:"预览 / 刷新",previewing:"预览中...",save:"保存模板",saving:"保存中...",restoreOfficial:"恢复官方模板",restoring:"恢复中...",restoreConfirm:"确定恢复此事件和语言的官方模板吗?当前自定义版本将被替换。",restoreSuccess:"已恢复官方模板",saveSuccess:"邮件模板已保存",placeholderCopied:"占位符已复制",validationRequired:"主题和 HTML 模板不能为空",empty:"暂无可用的邮件模板事件或语言。",noPreview:"刷新预览后查看渲染后的邮件主题。",customized:"已自定义"},opsMonitoring:{title:"运维监控",description:"启用运维监控模块,用于排障与健康可视化",disabled:"运维监控已关闭",enabled:"启用运维监控",enabledHint:"启用运维监控模块(仅管理员可见)",realtimeEnabled:"启用实时监控",realtimeEnabledHint:"启用实时请求速率和指标推送(WebSocket)",queryMode:"默认查询模式",queryModeHint:"运维监控默认查询模式(自动/原始/预聚合)",queryModeAuto:"自动(推荐)",queryModeRaw:"原始(最准确,但较慢)",queryModePreagg:"预聚合(最快,需预聚合)",metricsInterval:"采集频率(秒)",metricsIntervalHint:"系统/请求指标采集频率(60-3600 秒)"},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:"此密钥ä
26»…显示一次,请立即复制保存。",securityWarning:"警告:此密钥拥有完整的管理员权限,请妥善保管。",usage:"使用方法:在请求头中添加 x-api-key: <your-admin-api-key>"},overloadCooldown:{title:"529 过载冷却",description:"配置上游返回 529(过载)时的账号调度暂停策略",enabled:"启用过载冷却",enabledHint:"收到 529 错误时暂停该账号的调度,冷却后自动恢复",cooldownMinutes:"冷却时长(分钟)",cooldownMinutesHint:"账号暂停调度的持续时间(1-120 分钟)",saved:"过载冷却设置保存成功",saveFailed:"保存过载冷却设置失败"},rateLimit429Cooldown:{title:"429 默认回避",description:"配置上游返回 429 且没有明确重置时间时的默认账号回避策略",enabled:"启用 429 默认回避",enabledHint:"收到无重置时间的 429 时暂停该账号调度,冷却后自动恢复",cooldownSeconds:"回避时长(秒)",cooldownSecondsHint:"默认回避持续时间(1-7200 秒);上游返回明确 reset 时仍优先使用上游时间",saved:"429 默认回避设置保存成功",saveFailed:"保存 429 默认回避设置失败"},streamTimeout:{title:"流超时处理",description:"配置上游响应超时时的账户处理策略,避免问题账户持续被选中",enabled:"启用流超时处理",enabledHint:"当上游响应超时时,自动处理问题账户",timeoutSeconds:"超时阈值(秒)",timeoutSecondsHint:"流数据间隔超过此时间视为超时(30-300秒)",action:"处理方式",actionTempUnsched:"临时不可调度",actionError:"标记为错误状态",actionNone:"不处理",actionHint:"超时后对账户执行的操作",tempUnschedMinutes:"暂停时长(分钟)",tempUnschedMinutesHint:"临时不可调度的持续时间(1-60分钟)",thresholdCount:"触发阈值(次数)",thresholdCountHint:"累计超时多少次后触发处理(1-10次)",thresholdWindowMinutes:"阈值窗口(分钟)",thresholdWindowMinutesHint:"超时计数的时间窗口(1-60分钟)",saved:"流超时设置保存成功",saveFailed:"保存流超时设置失败"},rectifier:{title:"请求整流器",description:"当上游返回特定错误时,自动修正请求参数并重试,提高请求成功率",enabled:"启用请求整流器",enabledHint:"总开关,关闭后所有整流功能均不生效",thinkingSignature:"Thinking 签名整流",thinkingSignatureHint:"当上游返回 thinking block 签名校验错误时,自动去除签名并重试",thinkingBudget:"Thinking Budget 整流",thinkingBudgetHint:"当上游返回 budget_tokens 约束错误(≥1024)时,自动将 budget 设为 32000 并重试",apikeySignature:"API Key 签名整流",apikeySignatureHint:"当 API Key 账号的上游返回签名相关错误时,自动去除签名并重试(内置规则始终生效)",apikeyPatterns:"自定义匹配关键词",apikeyPatternsHint:"额外的关键词,匹配响应体中的内容(不区分大小写)。内置规则始终生效,此处用于补充额外匹配。",apikeyPatternPlaceholder:"例如:thinking_error 或 签名无效",addPattern:"添加关键词",saved:"整流器设置保存成功",saveFailed:"保存整流器设置失败"},betaPolicy:{title:"Beta 策略",description:"配置转发 Anthropic API 请求时如何处理 Beta 特性。仅适用于 /v1/messages 接口。",action:"处理方式",actionPass:"透传(不处理)",actionFilter:"过滤(移除)",actionBlock:"拦截(拒绝请求)",scope:"生效范围",scopeAll:"全部账号",scopeOAuth:"仅 OAuth 账号",scopeAPIKey:"仅 API Key 账号",scopeBedrock:"仅 Bedrock 账号",errorMessage:"错误消息",errorMessagePlaceholder:"拦截时返回的自定义错误消息",errorMessageHint:"留空则使用默认错误消息",saved:"Beta 策略设置保存成功",saveFailed:"保存 Beta 策略设置失败",modelWhitelist:"模型白名单",modelWhitelistHint:"留空则对所有模型生效。支持精确匹配和通配符前缀(如 claude-opus-*)",modelPatternPlaceholder:"例如: claude-opus-* 或 claude-opus-4-6",addModelPattern:"添加模型规则",removePattern:"移除",fallbackAction:"未匹配模型处理方式",fallbackActionHint:"当请求模型不在白名单中时的处理方式",fallbackErrorMessagePlaceholder:"未匹配模型被拦截时返回的自定义错误消息",quickPresets:"快捷预设",presetOpusOnly:"仅 Opus 允许 1M",presetOpusOnlyDesc:"Opus 透传,其他模型过滤",commonPatterns:"常用模式"},openaiFastPolicy:{title:"OpenAI Fast/Flex 策略",description:"基于请求体 service_tier 字段拦截/过滤/透传 OpenAI fast(priority)、ultrafast 与 flex 请求;仅作用于 OpenAI 网关。",empty:"尚未配置任何规则。点击下方按钮新增。",ruleHeader:"规则 #{index}",removeRule:"删除规则",addRule:"新增规则",saveHint:"保存时随系统设置一起提交(点击页面底部「保存」按钮)。",serviceTier:"service_tier 匹配",tierAll:"全部 tier 值",tierPriority:"priority(fast)",tierUltrafast:"ultrafast",tierFlex:"flex",action:"处理方式",actionPass:"透传(保留 service_tier)",actionFilter:"过滤(移除 service_tier)",actionForcePriority:"强制设置 priority(fast)",actionBlock:"拦截(拒绝请求)",scope:"生效范围",scopeAll:"全部账号",scopeOAuth:"仅 OAuth 账号",scopeAPIKey:"仅 API Key 账号",scopeBedrock:"仅 Bedrock 账号",userIds:"指定用户",userIdsHint:"输入任意邮箱关键词进行模糊搜索。留空表示对全部 Sub2API 用户生效;选中用户的 API Key 请求优先匹配用户规则。",userSearchPlaceholder:"输入用户邮箱搜索",userSearchEmpty:"未找到匹配用户",userDeleted:"(已删除)",userIdFallback:"用户 #{id}",removeUser:"移除用户",errorMessage:"错误消息",errorMessagePlaceholder:"拦截时返回的自定义错误消息",errorMessageHint:"留空则使用默认错误消息。",modelWhitelist:"目标模型",modelWhitelistHint:"列表内模型使用“处理方式”,列表外模型使用“其他模型处理方式”。留空时“处理方式”应用于全部模型。支持精确匹配与前缀通配符(如 gpt-5.6*)。",modelPatternPlaceholder:"ä¾
26‹å¦‚: gpt-5.6-sol 或 gpt-5.6*",addModelPattern:"添加目标模型",fallbackAction:"其他模型处理方式",fallbackActionHint:"仅应用于目标列表之外的模型。",fallbackErrorMessagePlaceholder:"其他模型被拦截时返回的自定义错误消息",summaryTargetModels:"目标模型",summaryAllModels:"全部模型",summaryOtherModels:"其他模型",summaryAction:{pass:"透传",filter:"过滤",block:"拦截",force_priority:"强制 priority"}},wechatConnect:{title:"微信登录",description:"用于微信开放平台或公众号/小程序的第三方登录配置。",enabledLabel:"启用微信登录",enabledHint:"开启后可使用微信第三方登录回调与授权配置。",appIdLabel:"AppID",appIdPlaceholder:"微信开放平台 AppID",appSecretLabel:"AppSecret",appSecretConfiguredPlaceholder:"密钥已配置,留空以保留当前值。",appSecretPlaceholder:"微信开放平台 AppSecret",appSecretConfiguredHint:"密钥已配置,留空以保留当前值。",appSecretHint:"填写后会覆盖当前微信密钥。",modeLabel:"模式",openModeLabel:"非微信环境使用开放平台",openModeHint:"浏览器不在微信内时,自动走开放平台扫码授权。",mpModeLabel:"微信环境使用公众号",mpModeHint:"浏览器在微信内时,自动走公众号授权。",redirectUrlLabel:"回调地址",redirectUrlPlaceholder:"https://your-site.com/api/v1/auth/oauth/wechat/callback",generateAndCopy:"使用当前站点生成并复制",redirectUrlSetAndCopied:"已使用当前站点生成回调地址并复制到剪贴板",frontendRedirectUrlLabel:"前端回调地址",frontendRedirectUrlPlaceholder:"/auth/wechat/callback",frontendRedirectUrlHint:"通常用于前端路由回调地址,需与后端配置保持一致。"},authSourceDefaults:{title:"认证来源默认值",description:"按注册来源配置新用户默认余额、并发、订阅与授权策略。",requireEmailLabel:"第三方注册强制补充邮箱",requireEmailHint:"启用后,Linux DO、OIDC、微信注册缺少邮箱时必须先补充邮箱地址。",enabledHint:"以下默认值会在该来源注册新用户时发放;首次绑定时授权仅作用于已有账号绑定该来源。",sources:{email:{title:"邮箱注册",description:"适用于邮箱密码注册的新用户默认配额。"},linuxdo:{title:"Linux DO 登录",description:"适用于 Linux DO 第三方注册的新用户默认配额。"},oidc:{title:"OIDC 登录",description:"适用于 OIDC 第三方注册的新用户默认配额。"},wechat:{title:"微信登录",description:"适用于微信第三方注册的新用户默认配额。"}},grantOnFirstBindLabel:"首次绑定时授权",grantOnFirstBindHint:"已有账号首次绑定该来源时发放默认权益。",defaultSubscriptionsLabel:"默认订阅",defaultSubscriptionsHint:"仅对当前认证来源生效,未配置时不追加来源专属订阅。",noSourceSubscriptions:"当前来源未配置专属默认订阅。",platformQuotasOverride:"平台限额覆盖",platformQuotasOverrideHint:"留空的字段继承「系统默认平台限额」;填 0 表示禁止该窗口使用。"},paymentVisibleMethods:{methodLabel:"{title} 可见方式",methodHint:"控制前台结算页是否展示该方式,以及展示时使用的来源键。",sourceLabel:"支付来源",sourceHint:"启用后必须明确选择一个来源;未配置状态不会对外展示该支付方式。",sourceRequiredError:"{title} 已启用,请先选择支付来源。"},openaiExperimentalScheduler:{title:"OpenAI 实验调度策略",description:"默认关闭。开启后仅影响本网关在 OpenAI 账号间的实验性调度选择逻辑,不代表上游 OpenAI 官方能力。",lowRatePriorityTitle:"低倍率优先",lowRatePriorityDescription:"开启后优先选择计费倍率较低的账号;倍率相同时,再比较账号优先级和当前负载等。启用实验调度策略后,此开关不生效。",oauthRateTitle:"OAuth 调度参考倍率",oauthRatePriorityDescription:"同一分组同时包含 API Key 和 OAuth 账号时,OAuth 账号按此倍率与已探测的 API Key 计费倍率一起排序。",oauthRateWeightedDescription:"同一分组同时包含 API Key 和 OAuth 账号时,计算“计费倍率”得分时,OAuth 账号按此倍率参与计算。",stickyWeightedTitle:"粘性加权",stickyWeightedDescription:"开启后 previous_response_id 和 session_hash 粘性进入高级调度打分;关闭时仍按旧逻辑硬命中粘性账号。",subscriptionPriorityTitle:"订阅优先",subscriptionPriorityDescription:"开启后先在 ChatGPT 订阅账号池中按权值选取;订阅池拿不到席位时再回退到非订阅账号池。",weightsTitle:"调度权值覆盖",weightsDescription:"留空时使用配置/环境变量值;配置未设置时使用内置默认值。页面非空设置优先ã€
26‚",defaultPlaceholder:"配置/默认:{value}",topKLabel:"TopK",priorityWeight:"优先级",loadWeight:"负载",queueWeight:"排队",errorRateWeight:"错误率",ttftWeight:"首包延迟",resetWeight:"重置窗口",quotaHeadroomWeight:"额度余量",upstreamCostWeight:"计费倍率",previousResponseWeight:"previous_response 粘性",sessionStickyWeight:"session_hash 粘性"},usageRecords:{title:"使用记录",description:"与终端用户可见的用量及失败请求记录相关的设置。"},user_error_view:{label:"允许用户查看自己的错误请求",description:"开启后,用户可在用量页查看自己失败请求的精简信息(不含内部/上游错误细节)。需运维监控开启才有数据。"},saveSettings:"保存设置",saving:"保存中...",settingsSaved:"设置保存成功",smtpConnectionSuccess:"SMTP 连接成功",testEmailSent:"测试邮件发送成功",failedToLoad:"加载设置失败",failedToSave:"保存设置失败",failedToTestSmtp:"SMTP 连接测试失败",failedToSendTestEmail:"发送测试邮件失败"},errorPassthrough:{title:"错误透传规则",description:"配置上游错误如何返回给客户端",createRule:"创建规则",editRule:"编辑规则",deleteRule:"删除规则",noRules:"暂无规则",createFirstRule:"创建第一条错误透传规则",allPlatforms:"所有平台",passthrough:"透传",custom:"自定义",code:"状态码",body:"消息体",skipMonitoring:"跳过监控",columns:{priority:"优先级",name:"名称",conditions:"匹配条件",platforms:"平台",behavior:"响应行为",status:"状态",actions:"操作"},matchMode:{any:"错误码 或 关键词",all:"错误码 且 关键词",anyHint:"状态码匹配任一错误码,或消息包含任一关键词",allHint:"状态码匹配任一错误码,且消息包含任一关键词"},form:{name:"规则名称",namePlaceholder:"例如:上下文超限透传",priority:"优先级",priorityHint:"数值越小优先级越高,优先匹配",description:"规则描述",descriptionPlaceholder:"描述此规则的用途...",matchConditions:"匹配条件",errorCodes:"错误码",errorCodesPlaceholder:"422, 400, 429",errorCodesHint:"多个错误码用逗号分隔",keywords:"关键词",keywordsPlaceholder:`每行一个关键词
27context limit
28model not supported`,keywordsHint:"每行一个关键词,不区分大小写",matchMode:"匹配模式",platforms:"适用平台",platformsHint:"不选择表示适用于所有平台",responseBehavior:"响应行为",passthroughCode:"透传上游状态码",responseCode:"自定义状态码",passthroughBody:"透传上游错误信息",customMessage:"自定义错误信息",customMessagePlaceholder:"返回给客户端的错误信息...",skipMonitoring:"跳过运维监控记录",skipMonitoringHint:"开启后,匹配此规则的错误不会被记录到运维监控中",enabled:"启用此规则"},nameRequired:"请输入规则名称",conditionsRequired:"请至少配置一个错误码或关键词",ruleCreated:"规则创建成功",ruleUpdated:"规则更新成功",ruleDeleted:"规则删除成功",deleteConfirm:'确定要删除规则 "{name}" 吗?',failedToLoad:"加载规则失败",failedToSave:"保存规则失败",failedToDelete:"删除规则失败",failedToToggle:"切换状态失败"},tlsFingerprintProfiles:{title:"TLS 指纹模板",description:"管理 TLS 指纹模板,用于模拟特定客户端的 TLS 握手特征",createProfile:"创建模板",editProfile:"编辑模板",deleteProfile:"删除模板",noProfiles:"暂无模板",createFirstProfile:"创建你的第一个 TLS 指纹模板",columns:{name:"名称",description:"描述",grease:"GREASE",alpn:"ALPN",actions:"操作"},form:{pasteYaml:"粘贴 YAML 配置",pasteYamlPlaceholder:"将 TLS 指纹采集器复制的 YAML 粘贴到这里...",pasteYamlHint:"粘贴从 TLS 指纹采集器复制的 YAML 配置,自动填充所有字段。",openCollector:"打开采集器",parseYaml:"解析 YAML",yamlParsed:"YAML 解析成功,字段已自动填充",yamlParseFailed:"YAML 解析失败:未找到 name 字段",name:"模板名称",namePlaceholder:"例如 macOS Node.js v24",description:"描述",descriptionPlaceholder:"可选的模板描述",enableGrease:"启用 GREASE",enableGreaseHint:"在 TLS ClientHello 扩展中插入 GREASE 值",cipherSuites:"密码套件",cipherSuitesHint:"逗号分隔的十六进制值,例如 0x1301, 0x1302, 0xc02c",curves:"椭圆曲线",curvesHint:"逗号分隔的曲线 ID",pointFormats:"点格式",signatureAlgorithms:"签名算法",alpnProtocols:"ALPN 协议",alpnProtocolsHint:"逗号分隔,例如 h2, http/1.1",supportedVersions:"支持的 TLS 版本",keyShareGroups:"密钥共享组",pskModes:"PSK 模式",extensions:"扩展"},deleteConfirm:"删除模板",deleteConfirmMessage:'确定要删除模板 "{name}
28" 吗?使用此模板的账号将回退到内置默认值。',createSuccess:"模板创建成功",updateSuccess:"模板更新成功",deleteSuccess:"模板删除成功",loadFailed:"加载模板失败",saveFailed:"保存模板失败",deleteFailed:"删除模板失败"}},p={audit:{title:"操作日志",description:"记录管理员与用户的管理面操作,请求头凭证仅保留首尾、请求体已脱敏。日志无法单条删除,全量清理需二次验证。",clearAll:"全部清理",empty:"暂无操作日志",loadFailed:"加载操作日志失败",filters:{all:"全部",q:"关键字",qPlaceholder:"路径 / 动作 / 操作者邮箱",actorEmail:"操作者邮箱",action:"动作",clientIp:"客户端 IP",method:"请求方法",authMethod:"认证方式",result:"结果",resultSuccess:"成功",resultFailure:"失败",startTime:"开始时间",endTime:"结束时间"},columns:{time:"时间",actor:"操作者",action:"动作",method:"方法",result:"结果",clientIp:"客户端 IP",detail:"详情"},detail:{title:"操作日志详情",actorRole:"角色",methodPath:"方法 / 路径",latency:"耗时",requestId:"请求 ID",credential:"凭证(掩码)",userAgent:"User-Agent",requestBody:"请求体(已脱敏)",extra:"附加信息"},clearConfirm:{title:"清理全部操作日志",message:"此操作将永久删除所有操作日志,且不可恢复。清理动作本身会被留痕记录。确定继续吗?",totpTitle:"输入二次验证码",totpHint:"清理操作日志需要现场验证 TOTP 验证码。",success:"已清理 {count} 条操作日志",failed:"清理操作日志失败"}}},u={promptAudit:{title:"提示词审计",description:"通过 OpenAI 兼容 Qwen3Guard 节点异步复核或同步阻止用户输入;事件的完整提示词会入库保存,仅供管理员复核。",configVersion:"配置版本 v{version}",tabs:{config:"配置",events:"事件"},actions:{refresh:"刷新运行态",retry:"重试",Allow:"放行",Warn:"警告",Block:"阻止"},common:{actions:"操作",never:"从未"},mode:{off:"已关闭",async_audit:"异步只审计",blocking:"同步审计并阻止"},status:{disabled:"未启用",running:"运行中",degraded:"降级",error:"错误",healthy:"健康",failed:"失败",stale:"心跳过期"},decisions:{pass:"通过",flag:"标记",critical:"严重"},riskLevels:{low:"低",medium:"中",high:"高",critical:"严重"},scanners:{violent:"暴力",non_violent_illegal_acts:"非暴力违法行为",sexual_content_or_sexual_acts:"色情内容或性行为",pii:"个人身份信息",suicide_and_self_harm:"自杀与自残",unethical_acts:"不道德行为",politically_sensitive_topics:"政治敏感话题",copyright_violation:"版权侵犯",jailbreak:"越狱"},scannerDescriptions:{violent:"暴力或暴力威胁",non_violent_illegal_acts:"非暴力违法活动",sexual_content_or_sexual_acts:"色情内容或性行为",pii:"个人身份信息",suicide_and_self_harm:"自杀或自残",unethical_acts:"不道德行为",politically_sensitive_topics:"政治敏感话题",copyright_violation:"版权侵权",jailbreak:"提示注入或越狱尝试"},runtime:{title:"运行概览",description:"显示服务端当前生效状态;未保存的草稿不会改变这些数值。",process:"进程状态",mode:"生效模式",version:"生效 / 期望版本",workers:"活动 / 总 Worker",queue:"活动任务 / 容量",dependencies:"依赖",guardMetrics:"同步 Guard 指标",latest:"最近处理与错误",queueBreakdown:"queued {queued} · processing {processing} · retry {retry} · done {done} · failed {failed}",deliveryTotals:"累计入队 {enqueued} · 丢弃 {dropped} · 处理 {processed} · 失败 {failed}"},metrics:{total:"总计",allowed:"放行",flagged:"标记",blocked:"阻止",unavailable:"不可用",timeouts:"超时",failovers:"故障切换"},pool:{title:"审计池",description:"按顺序使用启用的 OpenAI 兼容节点;探测由服务端真实网络环境发起。",add:"新增节点",edit:"编辑节点",empty:"尚未配置审计节点。",node:"节点",model:"模型",limits:"超时 / 单片上限",credential:"凭据与探测",configured:"API Key 已配置",missing:"未配置 API Key",invali
28d:"API Key 无法解密,请重新输入",probe:"连接测试",probing:"探测中…",probeProgress:"配置校验 ✓ · 请求已发送 · 等待服务响应…",probeResult:"配置校验 ✓ · 请求 ✓ · HTTP {http} · {status} · {latency} ms",name:"节点名称",id:"稳定节点 ID",baseUrl:"Base URL",apiKey:"API Key",keepSecret:"留空以保留已保存的 API Key",reenterSecret:"已保存的 API Key 无法解密(加密密钥已变更),请重新输入",secretHint:"明文只在本次编辑内存中存在;保存成功后会立即清除。",clearSecret:"显式清除已保存的 API Key",timeout:"总超时(毫秒)",inputLimit:"单片 Unicode 字符上限",toggleNode:"切换节点 {name}",deleteConfirm:"从草稿中删除节点“{name}”?保存配置后生效。"},policy:{title:"审计策略",description:"配置适用分组、九类输入风险、Worker 与队列边界。",scope:"适用范围",allGroups:"全部分组",selectedGroups:"指定分组",searchGroups:"搜索分组",noGroups:"没有匹配分组",missingGroups:"配置中包含已删除的分组 ID",selectedCount:"已选择 {count} 个分组",scanners:"Qwen3Guard 输入风险分类",workerCount:"Worker 数量",queueCapacity:"持久队列容量",strategy:"节点策略",strategyHint:"按配置顺序优先尝试,必要时故障切换。"},saveBar:{enabled:"启用提示词审计",blocking:"同步阻止",blockingLatestTurnOnly:"仅审最新输入和上一轮输出",storePass:"保存安全事件",dirty:"有未保存的更改",synced:"配置已同步"},blockingConfirm:{title:"开启同步阻止?",message:"适用请求会在账号选择、计费和访问上游之前等待 Guard。命中 Block、Guard 不可用或响应非法时,请求都不会访问上游。",confirm:"理解风险并开启"},events:{title:"审计事件",description:"按身份、入口、风险、Hash 和时间复核事件,详情中可查看完整提示词。",decision:"判定",risk:"风险等级",endpoint:"入口",groupId:"分组 ID",userId:"用户 ID",apiKeyId:"API Key ID",keyword:"关键词",startAt:"开始时间",endAt:"结束时间",deleteSelected:"删除选中项({count})",deleteByFilter:"按筛选删除",filterDeleteDialogTitle:"按筛选删除审计事件",filterDeleteDialogDesc:"选择删除的时间范围与风险条件后即可执行删除;删除不可恢复。如需提前查看匹配数量,可先获取删除预览。",filterTimeRange:"删除时间范围",filterTimeRangeHint:"将删除所选截止时间之前产生的事件;预览后新产生的事件不受影响。",timePresets:{"1d":"1 天前","7d":"7 天前","30d":"30 天前","90d":"90 天前",all:"全部时间",custom:"自定义范围"},customRangeInvalid:"自定义范围需要有效的开始与结束时间,且开始早于结束。",moreConditions:"更多条件(入口 / 关键词 / 分组 / 用户)",filterDeletePreviewAction:"获取删除预览",filterDeletePreviewing:"正在生成预览…",filterDeleteNeedPreview:"可直接确认删除;如需提前查看匹配数量,可先获取删除预览。",filterDeleteConfirmInvalidRange:"请先选择有效的删除时间范围(自定义范围需开始早于结束)。",filterDeleteConfirmNoMatches:"当前筛选匹配 0 条事件,没有可删除的内容。",selectAll:"选择当前页全部事件",selectEvent:"选择事件 {id}",time:"时间",identity:"用户 / 邮箱 / API Key",user:"用户名",email:"用户邮箱",apiKey:"API Key 名称",group:"分组",route:"入口 / 模型",result:"判定 / 风险",preview:"脱敏预览",empty:"没有符合条件的事件。",passEventsDisabled:"当前未开启“保存安全事件”:安全请求仍会完成审计,但不会出现在事件列表中;Flag 和 Critical 风险事件仍会保存。",openConfiguration:"前往配置",detailTitle:"提示词审计事件详情",tabs:{summary:"审计摘要",risks:"具体风险",technical:"技术信息"},promptFull:"完整提示词(未脱敏)",promptFullHint:"完整提示词已随事件入库,仅供管理员复核触发内容;请按敏感数据妥善处理,切勿外泄。",guardReturn:"模型审计返回",guardReturnHint:"展示 Guard 归一化后的结构化结果(判定、分类、分数与脱敏证据),不含原始响应体。",riskSummaries:"风险摘要",evidence:"脱敏证据",score:"分数",categories:"分类",model:"模型",stage:"请求阶段",noRisks:"本事件没有派生风险摘要。",requestId:"Request ID",promptHash:"Prompt SHA-256",technical:{scanner:"扫描器",policy:"策略",guardEndpoint:"Guard 节点",config:"配置版本",chunks:"分片数",latency:"耗时",protocol:"协议"},deleteConfirmTitle:"删除审计事件?",deleteConfirmMessage:"将永久删除 {count} 条事件及符合条件的孤立任务。",filterDeleteCount:"服务端快照匹配 {count} 条事件。",snapshotMax:"快照最大事件 ID",expiresAt:"确认令牌过期时间",filterDeleteWarning:"只删除预览高水位内的事件;预览后产生的新事件会保留。筛选一旦变化,必须重新预览。",confirmFilterDelete:"确认永久删除"}
28,messages:{saved:"提示词审计配置已保存,明文 API Key 状态已清除。",probeSucceeded:"审计节点连接正常。",deleted:"已删除 {count} 条审计事件。"},errors:{loadConfig:"无法加载提示词审计配置。",loadRuntime:"无法加载提示词审计运行态。",loadGroups:"无法加载分组列表。",loadEvents:"无法加载审计事件。",loadDetail:"无法加载事件详情。",saveConfig:"配置保存失败。",probe:"节点探测失败。",delete:"事件删除失败。",previewDelete:"无法生成删除预览,请检查时间范围。",deleteConfirmation:"删除确认无效或已过期,请重新预览。",prompt_audit_config_conflict:"配置已被其他管理员更新。请重新加载服务端配置,再决定如何合并本地草稿。",prompt_audit_encryption_key_required:"未配置固定加密密钥,审计节点 API Key 将在服务重启后失效。请先设置 TOTP_ENCRYPTION_KEY 环境变量并重启服务。",prompt_guard_requires_audit_enabled:"开启同步阻止前必须先启用提示词审计。",prompt_audit_invalid_endpoint:"审计节点配置无效。",prompt_audit_endpoint_required:"启用审计前至少需要一个启用节点。",prompt_audit_groups_required:"指定分组模式至少需要选择一个分组。",prompt_audit_scanners_required:"至少需要启用一个风险分类。"}}},m={plugins:{title:"插件管理",description:"安装和管理独立运行的 OAuth 出站传输插件。API Key 流程不受影响。",upload:"安装插件",uploadHint:"仅接受 .s2plugin 包;默认要求可信发布者签名。",runtimeNotice:"插件安装、启用、停用和配置由 Sub2API 宿主动态处理,通常不需要重启宿主实例。只有宿主版本或宿主配置本身变化时,才按部署方式执行重启。",menuNotice:"系统设置中的“插件管理”开关仅控制侧边栏菜单显示,不会停止已经加载或正在运行的插件。",empty:"尚未安装插件",emptyHint:"选择本机的 .s2plugin 文件进行安装。Sub2API 不会自动下载第三方插件。",configure:"配置",enable:"启用",disable:"停用",test:"测试",uninstall:"卸载",rollout:"OAuth 流量比例",compatibility:"版本兼容性",currentVersion:"当前 Sub2API",requiredVersion:"要求范围",recommendedVersion:"建议版本",signature:"包签名",trusted:"已验证",unsigned:"未签名",runtime:"运行状态",healthy:"运行正常",unhealthy:"未运行",compatible:"兼容",untested:"未验证版本",incompatible:"不兼容",enabled:"已启用",disabled:"已停用",error:"异常",starting:"启动中",configTitle:"{name} 配置",loadingUI:"正在加载插件配置界面...",uiUnavailable:"无法加载插件配置界面",uploadSuccess:"插件安装成功,当前保持停用",enableSuccess:"插件已启用",disableSuccess:"插件已停用",uninstallSuccess:"插件已卸载",testSuccess:"插件测试通过",confirmDisable:"确定停用此插件吗?新的 OAuth 请求会立即恢复 Sub2API 原有路径。",confirmUninstall:"确定卸载此插件吗?插件必须先停用。此操作会移除安装文件和配置。",confirmUntested:"该插件兼容当前版本范围,但未声明已测试当前 Sub2API 版本。确定承担风险并启用吗?",fileRequired:"请选择 .s2plugin 文件",bridgeRejected:"插件 UI 消息校验失败",onlyOpenAI:"初期能力:仅 OpenAI OAuth 出站传输",noAccountCoupling:"作用域为平台与账号类型,不修改账号数据,也不需要在账号页逐个开启。"}},g={...r,...n,...s,...l,...d,...c,...p,...u,...m},y={subscriptionProgress:{title:"我的订阅",viewDetails:"查看订阅详情",activeCount:"{count} 个有效订阅",daily:"每日",weekly:"每周",monthly:"每月",daysRemaining:"剩余 {days} 天",expired:"已过期",expiresToday:"今天到期",expiresTomorrow:"明天到期",viewAll:"查看全部订阅",noSubscriptions:"暂无有效订阅",unlimited:"无限制"},version:{currentVersion:"当前版本",latestVersion:"最新版本",upToDate:"已是最新版本",updateAvailable:"有新版本可用!",releaseNotes:"更新日志",noReleaseNotes:"暂无更新日志",viewUpdate:"查看更新",viewRelease:"查看发布",viewChangelog:"查看更新日志",refresh:"刷新",sourceMode:"源码构建",sourceModeHint:"源码构建请使用 git pull 更新",updateNow:"立即更新",updating:"正在更新...",updateComplete:"更新完成",updateFailed:"更新失败",restartRequired:"请重启服务以应用更新",restartNow:"立即重启",restarting:"正在重启...",retry:"重试",rollback:"版本回退",rollbackSelectVersion:"选择要回退到的版本(近 3 个版本)",rollbackConfirm:"回退到 {version}",rollbackWarning:"回退将下载所选版本并替换当前程序,完成后需重启服务",rollingBack:"正在回退...",rollbackComplete:"回退完成",rollbackFailed:"回退失败",manualRollbackCommand:"手动回退方式",copyCommand:"复制",copied:"已复制",noRollbackVersions:"暂无可回退的版本",loadVersionsFailed:"获取版本列表失败",rollbackSourceHint:"源码构建不支持在线回退",deployScript:"脚本部署",deployDocker:"Docker",dockerEditCompose:"修改 docker-compose.yml 中的镜像版本",dockerRecreate:"重新创建容器"},purchase:{title:"充值/订阅",description:"通过内嵌页面完成充
28值/订阅",openInNewTab:"新窗口打开",notEnabledTitle:"该功能未开启",notEnabledDesc:"管理员暂未开启充值/订阅入口,请联系管理员。",notConfiguredTitle:"充值/订阅链接未配置",notConfiguredDesc:"管理员已开启入口,但尚未配置充值/订阅链接,请联系管理员。"},customPage:{title:"自定义页面",openInNewTab:"新窗口打开",notFoundTitle:"页面不存在",notFoundDesc:"该自定义页面不存在或已被删除。",notConfiguredTitle:"页面链接未配置",notConfiguredDesc:"该自定义页面的 URL 未正确配置。",tableOfContents:"目录",copyCode:"复制",copiedCode:"已复制",copyCodeFailed:"失败"},announcements:{title:"公告",description:"查看系统公告",unreadOnly:"仅显示未读",markRead:"标记已读",markAllRead:"全部已读",viewAll:"查看全部公告",markedAsRead:"已标记为已读",allMarkedAsRead:"所有公告已标记为已读",newCount:"有 {count} 条新公告",readAt:"已读时间",read:"已读",unread:"未读",startsAt:"开始时间",endsAt:"结束时间",empty:"暂无公告",emptyUnread:"暂无未读公告",total:"条公告",emptyDescription:"暂时没有任何系统公告",readStatus:"您已阅读此公告",markReadHint:'点击"已读"标记此公告'},userSubscriptions:{title:"我的订阅",description:"查看您的订阅计划和用量",noActiveSubscriptions:"暂无有效订阅",noActiveSubscriptionsDesc:"您没有任何有效订阅。请联系管理员获取订阅。",failedToLoad:"加载订阅失败",status:{active:"有效",expired:"已过期",revoked:"已撤销"},usage:"用量",expires:"到期时间",noExpiration:"无到期时间",unlimited:"无限制",unlimitedDesc:"该订阅无用量限制",daily:"每日",weekly:"每周",monthly:"每月",daysRemaining:"剩余 {days} 天",expiresOn:"{date} 到期",resetIn:"{time} 后重置",quotaEndsIn:"额度将在 {time} 后结束",windowNotActive:"等待首次使用",usageOf:"已用 {used} / {limit}"},onboarding:{restartTour:"重新查看新手引导",dontShowAgain:"不再提示",dontShowAgainTitle:"永久关闭新手引导",confirmDontShow:`确定不再显示新手引导吗?
29
30您可以随时在右上角头像菜单中重新开启。`,confirmExit:"确定要退出新手引导吗?您可以随时在右上角菜单重新开始。",interactiveHint:"按 Enter 或点击继续",navigation:{flipPage:"翻页",exit:"退出"},admin:{welcome:{title:"👋 欢迎使用 Sub2API",description:'<div style="line-height: 1.8;"><p style="margin-bottom: 16px;">Sub2API 是一个强大的 AI 服务中转平台,让您轻松管理和分发 AI 服务。</p><p style="margin-bottom: 12px;"><b>🎯 核心功能:</b></p><ul style="margin-left: 20px; margin-bottom: 16px;"><li>📦 <b>分组管理</b> - 创建不同的服务套餐(VIP、免费试用等)</li><li>🔗 <b>账号池</b> - 连接多个上游 AI 服务商账号</li><li>🔑 <b>密钥分发</b> - 为用户生成独立的 API Key</li><li>💰 <b>计费管理</b> - 灵活的费率和配额控制</li></ul><p style="color: #10b981; font-weight: 600;">接下来,我们将用 3 分钟带您完成首次配置 →</p></div>',nextBtn:"开始配置 🚀",prevBtn:"跳过"},groupManage:{title:"📦 第一步:分组管理",description:'<div style="line-height: 1.7;"><p style="margin-bottom: 12px;"><b>什么是分组?</b></p><p style="margin-bottom: 12px;">分组是 Sub2API 的核心概念,它就像一个"服务套餐":</p><ul style="margin-left: 20px; margin-bottom: 12px; font-size: 13px;"><li>🎯 每个分组可以包含多个上游账号</li><li>💰 每个分组有独立的计费倍率</li><li>👥 可以设置为公开或专属分组</li></ul><p style="margin-top: 12px; padding: 8px 12px; background: #f0fdf4; border-left: 3px solid #10b981; border-radius: 4px; font-size: 13px;"><b>💡 示例:</b>您可以创建"VIP专线"(高倍率)和"免费试用"(低倍率)两个分组</p><p style="margin-top: 16px; color: #10b981; font-weight: 600;">👉 点击左侧的"分组管理"开始</p></div>'},createGroup:{title:"➕ 创建新分组",description:'<div style="line-height: 1.7;"><p style="margin-bottom: 12px;">现在让我们创建第一个分组。</p><p style="padding: 8px 12px; background: #eff6ff; border-left: 3px solid #3b82f6; border-radius: 4px; font-size: 13px; margin-bottom: 12px;"><b>📝 提示:</b>
30建议先创建一个测试分组,熟悉流程后再创建正式分组</p><p style="color: #10b981; font-weight: 600;">👉 点击"创建分组"按钮</p></div>'},groupName:{title:"✏️ 1. 分组名称",description:'<div style="line-height: 1.7;"><p style="margin-bottom: 12px;">为您的分组起一个易于识别的名称。</p><div style="padding: 8px 12px; background: #f0fdf4; border-left: 3px solid #10b981; border-radius: 4px; font-size: 13px; margin-bottom: 12px;"><b>💡 命名建议:</b><ul style="margin: 8px 0 0 16px;"><li>"测试分组" - 用于测试</li><li>"VIP专线" - 高质量服务</li><li>"免费试用" - 体验版</li></ul></div><p style="font-size: 13px; color: #6b7280;">填写完成后点击"下一步"继续</p></div>',nextBtn:"下一步"},groupPlatform:{title:"🤖 2. 选择平台",description:'<div style="line-height: 1.7;"><p style="margin-bottom: 12px;">选择该分组支持的 AI 平台。</p><div style="padding: 8px 12px; background: #eff6ff; border-left: 3px solid #3b82f6; border-radius: 4px; font-size: 13px; margin-bottom: 12px;"><b>📌 平台说明:</b><ul style="margin: 8px 0 0 16px;"><li><b>Anthropic</b> - Claude 系列模型</li><li><b>OpenAI</b> - GPT 系列模型</li><li><b>Google</b> - Gemini 系列模型</li></ul></div><p style="font-size: 13px; color: #6b7280;">一个分组只能选择一个平台</p></div>',nextBtn:"下一步"},groupMultiplier:{title:"💰 3. 费率倍数",description:'<div style="line-height: 1.7;"><p style="margin-bottom: 12px;">设置该分组的计费倍率,控制用户的实际扣费。</p><div style="padding: 8px 12px; background: #fef3c7; border-left: 3px solid #f59e0b; border-radius: 4px; font-size: 13px; margin-bottom: 12px;"><b>⚙️ 计费规则:</b><ul style="margin: 8px 0 0 16px;"><li><b>1.0</b> - 原价计费(成本价)</li><li><b>1.5</b> - 用户消耗 $1,扣除 $1.5</li><li><b>2.0</b> - 用户消耗 $1,扣除 $2</li><li><b>0.8</b> - 补贴模式(亏本运营)</li></ul></div><p style="font-size: 13px; color: #6b7280;">建议测试分组设置为 1.0</p></div>',nextBtn:"下一步"},groupExclusive:{title:"🔒 4. 专属分组(可选)",description:'<div style="line-height: 1.7;"><p style="margin-bottom: 12px;">控制分组的可见性和访问权限。</p><div style="padding: 8px 12px; background: #eff6ff; border-left: 3px solid #3b82f6; border-radius: 4px; font-size: 13px; margin-bottom: 12px;"><b>🔐 权限说明:</b><ul style="margin: 8px 0 0 16px;"><li><b>关闭</b> - 公开分组,所有用户可见</li><li><b>开启</b> - 专属分组,仅指定用户可见</li></ul></div><p style="padding: 8px 12px; background: #f0fdf4; border-left: 3px solid #10b981; border-radius: 4px; font-size: 13px;"><b>💡 使用场景:</b>VIP 用户专属、内部测试、特殊客户等</p></div>',nextBtn:"下一步"},groupSubmit:{title:"✅ 保存分组",description:'<div style="line-height: 1.7;"><p style="margin-bottom: 12px;">确认信息无误后,点击创建按钮保存分组。</p><p style="padding: 8px 12px; background: #fef3c7; border-left: 3px solid #f59e0b; border-radius: 4px; font-size: 13px; margin-bottom: 12px;"><b>⚠️ 注意:</b>分组创建后,平台类型不可修改,其他信息可以随时编辑</p><p style="padding: 8px 12px; background: #f0fdf4; border-left: 3px solid #10b981; border-radius: 4px; font-size: 13px;"><b>📌 下一步:</b>创建成功后,我们将添加上游账号到这个分组</p><p style="margin-top: 12px; color: #10b981; font-weight: 600;">👉 点击"创建"按钮</p></div>'},accountManage:{title:"🔗 第二步:添加账号",description:'<div style="line-height: 1.7;"><p style="margin-bottom: 12px;"><b>太棒了!分组已创建成功 🎉</b></p><p style="margin-bottom: 12px;">现在需要添加上游 AI 服务商的账号,让分组能够实际提供服务。</p><div style="padding: 8px 12px; background: #eff6ff; border-left: 3px solid #3b82f6; border-radius: 4px; font-size: 13px; margin-bottom: 12px;"><b>🔑 账号的作用:</b><ul style="margin: 8px 0 0 16px;"><li>连接到上游 AI 服务(Claude、GPT 等)</li><li>一个分组可以包含多个账号(负载均衡)</li><li>支持 OAuth 和 Session Key 两种方式</li></ul></div><p style="margin-top: 16px; color: #10b981; font-weight: 600;">👉 点击左侧的"账号管理"</p></div>'},createAccount:{title:"➕ 添加新账号",description:'<div style="line-height: 1.7;"><p style="margin-bottom: 12px;">点击按钮开始添加您的第一个上游账号。</p><p style="padding: 8px 12px; background: #f0fdf4; border-left: 3px solid #10b981; border-radius: 4px; font-size: 13px;"><b>💡 提示:</b>建议使用 OAuth 方式,更安全且无需手动提取密钥</p><p style="margin-top: 12px; color: #10b981; font-weight: 600;">👉 点击"添加账号"按钮</p></div>'},accountName:{title:"✏️ 1. 账号名称",description:'<div style="line-height: 1.7;"><p style="margin-bottom: 12px;">为账号设置一个便于识别的名称。</p><p style="padding: 8px 12px; background: #f0fdf4; border-left: 3px solid #10b981; border-radius: 4px; font-size: 13px;"><b>💡 命名建议:</b>"Claude主账号"、"GPT备用1"、"测试账号" 等</p></div>',nextBtn:"下一步"}
30,accountPlatform:{title:"🤖 2. 选择平台",description:'<div style="line-height: 1.7;"><p style="margin-bottom: 12px;">选择该账号对应的服务商平台。</p><p style="padding: 8px 12px; background: #fef3c7; border-left: 3px solid #f59e0b; border-radius: 4px; font-size: 13px;"><b>⚠️ 重要:</b>平台必须与刚才创建的分组平台一致</p></div>',nextBtn:"下一步"},accountType:{title:"🔐 3. 授权方式",description:'<div style="line-height: 1.7;"><p style="margin-bottom: 12px;">选择账号的授权方式。</p><div style="padding: 8px 12px; background: #f0fdf4; border-left: 3px solid #10b981; border-radius: 4px; font-size: 13px; margin-bottom: 12px;"><b>✅ 推荐:OAuth 方式</b><ul style="margin: 8px 0 0 16px;"><li>无需手动提取密钥</li><li>更安全,支持自动刷新</li><li>适用于 Claude Code、ChatGPT OAuth</li></ul></div><div style="padding: 8px 12px; background: #eff6ff; border-left: 3px solid #3b82f6; border-radius: 4px; font-size: 13px;"><b>📌 Session Key 方式</b><ul style="margin: 8px 0 0 16px;"><li>需要手动从浏览器提取</li><li>可能需要定期更新</li><li>适用于不支持 OAuth 的平台</li></ul></div></div>',nextBtn:"下一步"},accountPriority:{title:"⚖️ 4. 优先级(可选)",description:'<div style="line-height: 1.7;"><p style="margin-bottom: 12px;">设置账号的调用优先级。</p><div style="padding: 8px 12px; background: #eff6ff; border-left: 3px solid #3b82f6; border-radius: 4px; font-size: 13px; margin-bottom: 12px;"><b>📊 优先级规则:</b><ul style="margin: 8px 0 0 16px;"><li>数字越小,优先级越高</li><li>系统优先使用低数值账号</li><li>相同优先级则随机选择</li></ul></div><p style="padding: 8px 12px; background: #f0fdf4; border-left: 3px solid #10b981; border-radius: 4px; font-size: 13px;"><b>💡 使用场景:</b>主账号设置低数值,备用账号设置高数值</p></div>',nextBtn:"下一步"},accountGroups:{title:"🎯 5. 分配分组",description:'<div style="line-height: 1.7;"><p style="margin-bottom: 12px;"><b>关键步骤!</b>将账号分配到刚才创建的分组。</p><div style="padding: 8px 12px; background: #fee2e2; border-left: 3px solid #ef4444; border-radius: 4px; font-size: 13px; margin-bottom: 12px;"><b>⚠️ 重要提醒:</b><ul style="margin: 8px 0 0 16px;"><li>必须勾选至少一个分组</li><li>未分配分组的账号无法使用</li><li>一个账号可以分配给多个分组</li></ul></div><p style="padding: 8px 12px; background: #f0fdf4; border-left: 3px solid #10b981; border-radius: 4px; font-size: 13px;"><b>💡 提示:</b>请勾选刚才创建的测试分组</p></div>',nextBtn:"下一步"},accountSubmit:{title:"✅ 保存账号",description:'<div style="line-height: 1.7;"><p style="margin-bottom: 12px;">确认信息无误后,点击保存按钮。</p><div style="padding: 8px 12px; background: #eff6ff; border-left: 3px solid #3b82f6; border-radius: 4px; font-size: 13px; margin-bottom: 12px;"><b>📌 OAuth 授权流程:</b><ul style="margin: 8px 0 0 16px;"><li>点击保存后会跳转到服务商页面</li><li>在服务商页面完成登录授权</li><li>授权成功后自动返回</li></ul></div><p style="padding: 8px 12px; background: #f0fdf4; border-left: 3px solid #10b981; border-radius: 4px; font-size: 13px;"><b>📌 下一步:</b>账号添加成功后,我们将创建 API 密钥</p><p style="margin-top: 12px; color: #10b981; font-weight: 600;">👉 点击"保存"按钮</p></div>'},keyManage:{title:"🔑 第三步:生成密钥",description:'<div style="line-height: 1.7;"><p style="margin-bottom: 12px;"><b>恭喜!账号配置完成 🎉</b></p><p style="margin-bottom: 12px;">最后一步,生成 API Key 来测试服务是否正常工作。</p><div style="padding: 8px 12px; background: #eff6ff; border-left: 3px solid #3b82f6; border-radius: 4px; font-size: 13px; margin-bottom: 12px;"><b>🔑 API Key 的作用:</b><ul style="margin: 8px 0 0 16px;"><li>用于调用 AI 服务的凭证</li><li>每个 Key 绑定一个分组</li><li>可以设置配额和有效期</li><li>支持独立的使用统计</li></ul></div><p style="margin-top: 16px; color: #10b981; font-weight: 600;">👉 点击左侧的"API 密钥"</p></div>'},createKey:{title:"➕ 创建密钥",description:'<div style="line-height: 1.7;"><p style="margin-bottom: 12px;">点击按钮创建您的第一个 API Key。</p><p style="padding: 8px 12px; background: #f0fdf4; border-left: 3px solid #10b981; border-radius: 4px; font-size: 13px;"><b>💡 提示:</b>创建后请立即复制保存,密钥只显示一次</p><p style="margin-top: 12px; color: #10b981; font-weight: 600;">👉 点击"创建密钥"按钮</p></div>'},keyName:{title:"✏️ 1. 密钥名称",description:'<div style="line-height: 1.7;"><p style="margin-bottom: 12px;">为密钥设置一个便于管理的名称。</p><p style="padding: 8px 12px; background: #f0fdf4; border-left: 3px solid #10b981; border-radius: 4px; font-size: 13px;"><b>💡 命名建议:</b>"测试密钥"、"生产环境"、"移动端" 等</p></div>',nextBtn:"下一步"}
30,keyGroup:{title:"🎯 2. 选择分组",description:'<div style="line-height: 1.7;"><p style="margin-bottom: 12px;">选择刚才配置好的分组。</p><div style="padding: 8px 12px; background: #eff6ff; border-left: 3px solid #3b82f6; border-radius: 4px; font-size: 13px; margin-bottom: 12px;"><b>📌 分组决定:</b><ul style="margin: 8px 0 0 16px;"><li>该密钥可以使用哪些账号</li><li>计费倍率是多少</li><li>是否为专属密钥</li></ul></div><p style="padding: 8px 12px; background: #f0fdf4; border-left: 3px solid #10b981; border-radius: 4px; font-size: 13px;"><b>💡 提示:</b>选择刚才创建的测试分组</p></div>',nextBtn:"下一步"},keySubmit:{title:"🎉 生成并复制",description:'<div style="line-height: 1.7;"><p style="margin-bottom: 12px;">点击创建后,系统会生成完整的 API Key。</p><div style="padding: 8px 12px; background: #fee2e2; border-left: 3px solid #ef4444; border-radius: 4px; font-size: 13px; margin-bottom: 12px;"><b>⚠️ 重要提醒:</b><ul style="margin: 8px 0 0 16px;"><li>密钥只显示一次,请立即复制</li><li>丢失后需要重新生成</li><li>妥善保管,不要泄露给他人</li></ul></div><div style="padding: 8px 12px; background: #f0fdf4; border-left: 3px solid #10b981; border-radius: 4px; font-size: 13px; margin-bottom: 12px;"><b>🚀 下一步:</b><ul style="margin: 8px 0 0 16px;"><li>复制生成的 sk-xxx 密钥</li><li>在支持 OpenAI 接口的客户端中使用</li><li>开始体验 AI 服务!</li></ul></div><p style="margin-top: 12px; color: #10b981; font-weight: 600;">👉 点击"创建"按钮</p></div>'}},user:{welcome:{title:"👋 欢迎使用 Sub2API",description:'<div style="line-height: 1.8;"><p style="margin-bottom: 16px;">您好!欢迎来到 Sub2API AI 服务平台。</p><p style="margin-bottom: 12px;"><b>🎯 快速开始:</b></p><ul style="margin-left: 20px; margin-bottom: 16px;"><li>🔑 创建 API 密钥</li><li>📋 复制密钥到您的应用</li><li>🚀 开始使用 AI 服务</li></ul><p style="color: #10b981; font-weight: 600;">只需 1 分钟,让我们开始吧 →</p></div>',nextBtn:"开始 🚀",prevBtn:"跳过"},keyManage:{title:"🔑 API 密钥管理",description:'<div style="line-height: 1.7;"><p style="margin-bottom: 12px;">在这里管理您的所有 API 访问密钥。</p><p style="padding: 8px 12px; background: #eff6ff; border-left: 3px solid #3b82f6; border-radius: 4px; font-size: 13px;"><b>📌 什么是 API 密钥?</b><br/>API 密钥是您访问 AI 服务的凭证,就像一把钥匙,让您的应用能够调用 AI 能力。</p><p style="margin-top: 12px; color: #10b981; font-weight: 600;">👉 点击进入密钥页面</p></div>'},createKey:{title:"➕ 创建新密钥",description:'<div style="line-height: 1.7;"><p style="margin-bottom: 12px;">点击按钮创建您的第一个 API 密钥。</p><p style="padding: 8px 12px; background: #f0fdf4; border-left: 3px solid #10b981; border-radius: 4px; font-size: 13px;"><b>💡 提示:</b>创建后密钥只显示一次,请务必复制保存</p><p style="margin-top: 12px; color: #10b981; font-weight: 600;">👉 点击"创建密钥"</p></div>'},keyName:{title:"✏️ 密钥名称",description:'<div style="line-height: 1.7;"><p style="margin-bottom: 12px;">为密钥起一个便于识别的名称。</p><p style="padding: 8px 12px; background: #f0fdf4; border-left: 3px solid #10b981; border-radius: 4px; font-size: 13px;"><b>💡 示例:</b>"我的第一个密钥"、"测试用" 等</p></div>',nextBtn:"下一步"},keyGroup:{title:"🎯 选择分组",description:'<div style="line-height: 1.7;"><p style="margin-bottom: 12px;">选择管理员为您分配的服务分组。</p><p style="padding: 8px 12px; background: #eff6ff; border-left: 3px solid #3b82f6; border-radius: 4px; font-size: 13px;"><b>📌 分组说明:</b><br/>不同分组可能有不同的服务质量和计费标准,请根据需要选择。</p></div>',nextBtn:"下一步"},keySubmit:{title:"🎉 完成创建",description:'<div style="line-height: 1.7;"><p style="margin-bottom: 12px;">点击确认创建您的 API 密钥。</p><div style="padding: 8px 12px; background: #fee2e2; border-left: 3px solid #ef4444; border-radius: 4px; font-size: 13px; margin-bottom: 12px;"><b>⚠️ 重要:</b><ul style="margin: 8px 0 0 16px;"><li>创建后请立即复制密钥(sk-xxx)</li><li>密钥只显示一次,丢失需重新生成</li></ul></div><p style="padding: 8px 12px; background: #f0fdf4; border-left: 3px solid #10b981; border-radius: 4px; font-size: 13px;"><b>🚀 如何使用:</b><br/>将密钥配置到支持 OpenAI 接口的任何客户端(如 ChatBox、OpenCat 等),即可开始使用!</p><p style="margin-top: 12px; color: #10b981; font-weight: 600;">👉 点击"创建"按钮</p></div>'}}},payment:{title:"充值/订阅",amountLabel:"充值金额",paymentAmount:"支付金额",creditedBalance:"到账余额",quickAmounts:"快捷金额",customAmount:"自定义金额",enterAmount:"输入金额",paymentMethod:"支付方式",fee:"手续费",actualPay:"实付金额",createOrder:"确认支付",methods:{easypay:"易支付",alipay:"支付宝",wxpay:"微信支付",stripe:"Stripe",airwallex:"Airwallex",card:"银行卡",link:"Link",alipay_direct:"支付宝(直连)",wxpay_direct:"微信支付(直连)"},status:{pending:"待支付",paid:"已支付",recharging:"充值中",completed:"已完成",expired:"已过期",cancelled:"已取消",failed:"失败",refund_requested:"退款申请中",refunding:"退款中",refund_pending:"退款处理中",refunded:"已退款",partially_refunded:"部分退款",refund_failed:"退款失败"},qr:{scanToPay:"请扫码支付",scanAlipay:"支付宝扫码支付",scanWxpay:"微信扫码支付",scanAlipayHint:"请使用手机打开支付宝,扫描二维码完成支付",scanWxpayHint:"请使用手机打开微信,扫描二维码完成支付",payInNewWindow:"请在新窗口中完成支付",payInNewWindowHint:"支付页面已在新窗口打开,请在新窗口中完成支付后返回此页面",openPayWindow:"重新打开支付页面",expires
30In:"剩余支付时间",expired:"订单已过期",expiredDesc:"订单已超时,请重新创建订单",cancelled:"订单已取消",cancelledDesc:"您已取消本次支付",waitingPayment:"等待支付...",cancelOrder:"取消订单",alipayOpening:"正在打开支付宝",alipayContinueInApp:"请在支付宝中完成支付",alipayWaitingHint:"支付结果将由服务端确认,本页面会自动更新",alipayFallbackTitle:"打开支付宝未成功",alipayFallbackHint:"可重新打开支付宝,或保存下方二维码后从支付宝相册识别",reopenAlipay:"重新打开支付宝",saveQRCode:"保存二维码",alipaySaveAndScanHint:"保存二维码后,打开支付宝扫一扫,从相册选择二维码"},orders:{title:"我的订单",empty:"暂无订单",orderId:"订单 ID",orderNo:"订单编号",amount:"金额",payAmount:"实付",creditedAmount:"到账金额",fee:"手续费",baseAmount:"充值金额",includedInPayAmount:"已含在实付金额中",status:"状态",paymentMethod:"支付方式",createdAt:"创建时间",cancel:"取消订单",userId:"用户 ID",orderType:"订单类型",actions:"操作",requestRefund:"申请退款"},result:{success:"支付成功",subscriptionSuccess:"订阅成功",processing:"支付处理中",processingHint:"支付结果仍在确认中,页面会自动刷新。",failed:"支付失败",backToRecharge:"返回充值",viewOrders:"查看订单"},currentBalance:"当前余额",groupFallback:"分组 #{id}",rechargeAccount:"充值账户",activeSubscription:"当前订阅",noActiveSubscription:"暂无有效订阅",tabTopUp:"充值",tabSubscribe:"订阅",noPlans:"暂无可用订阅套餐",notAvailable:"充值功能暂未开放",confirmSubscription:"确认订阅",confirmCancel:"确定要取消此订单吗?",amountTooLow:"最低金额为 {min}",amountTooHigh:"最高金额为 {max}",amountNoMethod:"该金额没有可用的支付方式",rechargeRatePreview:"当前倍率:1 {currency} = {usd} USD",refundReason:"退款原因",refundReasonPlaceholder:"请描述您的退款原因",stripeLoadFailed:"支付组件加载失败,请刷新页面重试",stripeMissingParams:"缺少订单ID或支付密钥",stripeNotConfigured:"Stripe 未配置",airwallexLoadFailed:"Airwallex 支付组件加载失败,请刷新页面重试",airwallexMissingParams:"缺少 Airwallex 支付参数",errors:{tooManyPending:"待支付订单过多(最多 {max} 个),请先完成或取消现有订单",cancelRateLimited:"取消订单过于频繁,请稍后再试",wechatH5NotAuthorized:"当前商户未开通微信 H5 支付,请在微信中打开当前页面继续支付。",wechatPaymentMpNotConfigured:"当前站点未完成公众号/JSAPI 支付配置,暂时无法在微信内直接拉起支付。",wechatJsapiUnavailable:"当前环境未能拉起微信支付,请确认正在微信内打开本页后重试。",wechatJsapiFailed:"微信支付未完成,请重新拉起支付或改用扫码支付。",wechatUnavailable:"当前微信支付暂不可用,请稍后重试。",wechatOpenInWeChatHint:"请复制当前页面链接到微信内打开,或直接改用电脑端微信扫码支付。",wechatScanOnDesktopHint:"电脑端请直接使用微信扫一扫完成支付;移动端请在微信内打开当前页面。",wechatSwitchBrowserHint:"请改用电脑端微信扫码,或在外部浏览器重新打开本页后再试。",mobilePaymentFallbackToQr:"当前商户未开通移动支付,已自动切换为扫码支付。",alipayDesktopUnavailable:"当前支付宝桌面支付未成功生成二维码。",alipayDesktopQrHint:"电脑端支付宝应展示扫码单,请刷新后重试,或确认浏览器未拦截当前支付页。",alipayMobileUnavailable:"当前页面未成功跳转到支付宝。",alipayMobileOpenHint:"请允许当前页面打开支付宝 App,或改用系统浏览器重新发起支付。",PAYMENT_DISABLED:"支付系统已关闭",USER_INACTIVE:"账号已被禁用",BALANCE_PAYMENT_DISABLED:"余额充值功能已关闭",INVALID_AMOUNT:"金额无效",INVALID_INPUT:"参数有误",PLAN_NOT_AVAILABLE:"套餐不存在或已下架",GROUP_NOT_FOUND:"订阅分组不可用",GROUP_TYPE_MISMATCH:"分组类型不是订阅类型",TOO_MANY_PENDING:"待支付订单过多(最多 {max} 个),请先完成或取消现有订单",DAILY_LIMIT_EXCEEDED:"今日充值已达上限,剩余额度 {remaining}",PAYMENT_GATEWAY_ERROR:"支付方式不可用",NO_AVAILABLE_INSTANCE:"暂无可用的支付通道",PAYMENT_PROVIDER_MISCONFIGURED:"支付通道配置错误,请联系管理员",WXPAY_CONFIG_MISSING_KEY:"微信支付配置缺少必填项:{key}",WXPAY_CONFIG_INVALID_KEY_LENGTH:"微信支付 {key}
30 长度错误,应为 {expected} 字节(实际 {actual})",WXPAY_CONFIG_INVALID_KEY:"微信支付 {key} 格式错误,请确认复制了完整的 PEM 内容",PENDING_ORDERS:"该服务商有未完成的订单,请等待订单完成后再操作",PAYMENT_PROVIDER_CONFLICT:"该支付方式已有其他启用中的服务商实例,请先停用后再继续。",CANCEL_RATE_LIMITED:"取消订单过于频繁,请稍后再试",NOT_FOUND:"订单不存在",FORBIDDEN:"无权限操作此订单",CONFLICT:"订单状态已变更,请刷新",INVALID_ORDER_TYPE:"仅余额订单可申请退款",INVALID_STATUS:"当前订单状态不允许此操作",BALANCE_NOT_ENOUGH:"退款金额超过余额",REFUND_AMOUNT_EXCEEDED:"退款金额超过充值金额",REFUND_FAILED:"退款失败"},airwallexPay:"Airwallex 支付",stripePay:"立即支付",stripeSuccessProcessing:"支付成功,正在处理订单...",stripePopup:{redirecting:"正在跳转到支付页面...",loadingQr:"正在获取微信支付二维码...",timeout:"等待支付凭证超时,请重试",qrFailed:"未能获取微信支付二维码"},subscribeNow:"立即开通",renewNow:"续费",selectPlan:"选择套餐",planFeatures:"功能特性",planCard:{rate:"倍率",peakRate:"高峰倍率",dailyLimit:"日限额",weeklyLimit:"周限额",monthlyLimit:"月限额",quota:"配额",unlimited:"无限制",models:"模型"},days:"天",weeks:"周",months:"个月",years:"年",oneMonth:"1 个月",oneYear:"1 年",perMonth:"月",perYear:"年",admin:{tabs:{overview:"概览",orders:"订单管理",channels:"支付渠道",plans:"订阅套餐"},todayRevenue:"今日收入",totalRevenue:"总收入",todayOrders:"今日订单",orderCount:"订单数",avgAmount:"平均金额",revenue:"收入",dailyRevenue:"每日收入",paymentDistribution:"支付方式分布",colUser:"用户",topUsers:"消费排行",noData:"暂无数据",days:"天",weeks:"周",months:"月",searchOrders:"搜索订单...",allStatuses:"全部状态",allPaymentTypes:"全部支付方式",allOrderTypes:"全部订单类型",orderDetail:"订单详情",orderType:"订单类型",orders:"订单",balanceOrder:"余额充值",subscriptionOrder:"订阅",paidAt:"支付时间",completedAt:"完成时间",expiresAt:"过期时间",feeRate:"手续费率",refund:"退款",refundOrder:"退款订单",refundAmount:"退款金额",maxRefundable:"最大可退金额",refundReason:"退款原因",refundReasonPlaceholder:"请输入退款原因",confirmRefund:"确认退款",refundSuccess:"退款成功",refundPending:"退款处理中,待网关确认",queryRefundStatus:"查询退款状态",refundInfo:"退款信息",refundEnabled:"允许退款",allowUserRefund:"允许用户退款",alreadyRefunded:"已退款",deductBalance:"扣除余额",deductBalanceHint:"从用户余额中扣回充值金额",userBalance:"用户余额",orderAmount:"订单金额",insufficientBalance:"余额不足,将扣至 $0",noDeduction:"将不扣除用户余额",forceRefund:"强制退款(忽略余额检查)",orderCancelled:"订单已取消",retry:"重试",retrySuccess:"重试成功",a
30pproveRefund:"批准退款",retryRefund:"重试退款",refundRequestInfo:"退款申请信息",refundRequestedAt:"申请时间",refundRequestedBy:"申请人",refundRequestReason:"申请原因",auditLogs:"操作日志",operator:"操作人",channelName:"渠道名称",channelDescription:"渠道描述",createChannel:"创建渠道",editChannel:"编辑渠道",deleteChannel:"删除渠道",deleteChannelConfirm:"确定要删除此渠道吗?",planName:"套餐名称",planDescription:"套餐描述",createPlan:"创建套餐",editPlan:"编辑套餐",deletePlan:"删除套餐",deletePlanConfirm:"确定要删除此套餐吗?",originalPrice:"原价",price:"价格",currency:"币种标注",currencyPlaceholder:"如 USD / NZD / CNY",currencyHint:"仅用于价格展示的 ISO 三字母币种码,留空不展示,不影响实际扣款",subscriptionCnyPayPreview:"CNY 通道实扣预览:{amount}",subscriptionCnyPayPreviewWithFee:"(含 {feeRate}% 手续费:{total})",validity:"有效期",validityUnit:"有效期单位",sortOrder:"排序",forSale:"上架状态",onSale:"上架",offSale:"下架",group:"分组",groupId:"分组 ID",features:"功能特性",featuresHint:"每行一个特性",featuresPlaceholder:"输入套餐特性...",providerManagement:"服务商管理",providerManagementDesc:"管理支付服务商实例",createProvider:"创建服务商",editProvider:"编辑服务商",deleteProvider:"删除服务商",deleteProviderConfirm:"确定要删除此服务商吗?",providerName:"服务商名称",providerKey:"服务商标识",selectProviderKey:"选择服务商标识",providerConfig:"服务商配置",noProviders:"暂无服务商",noProvidersHint:"创建一个服务商实例以开始接受支付",supportedTypes:"支持的支付方式",supportedTypesHint:"选择此服务商支持的支付方式",rateMultiplier:"费率倍数",dashboardTitle:"支付概览",dashboardDesc:"充值订单统计与分析",daySuffix:"天",paymentConfigTitle:"支付配置",paymentConfigDesc:"管理支付服务商与相关设置",plansPageTitle:"订阅套餐管理",plansPageDesc:"管理订阅套餐配置",tabPlanConfig:"套餐配置",tabUserSubs:"用户订阅",selectGroup:"请选择分组",groupRequired:"请选择订阅分组",priceRequired:"价格必须大于 0",validityRequired:"有效期必须大于 0",groupMissing:"缺失",groupInfo:"分组信息",platform:"平台",rateMultiplierLabel:"倍率",dailyLimit:"日限额",weeklyLimit:"周限额",monthlyLimit:"月限额",unlimited:"无限制",searchUserSubs:"搜索用户订阅...",daily:"日",weekly:"周",monthly:"月",subsStatus:{active:"生效中",expired:"已过期",revoked:"已撤销"}}}},h={...e,...t,...i,...o,...a,admin:g,...y};export{h as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.