Files
OpenFlare/frontend/messages/zh-CN.json
T
ryan f5c9da03f4 前端测试套件 44 失败→全绿:10 个测试文件补 NextIntlClientProvider 包装(含 React19 createElement 类型修复、.ts→.tsx 重命名);修复真实 i18n ICU bug(githubUrlInvalid 的 {owner}/{repo} 未转义导致生产渲染成 key,zh/en + fragment 4 文件同步转义);更新 2 处过期测试期望。vitest 116/116 + tsc + eslint 全绿,checks.sh 增加前端测试门禁。
Result: {"status":"keep","total_issues":8,"golint_canonicalheader":0,"golint_errname":0,"golint_errorlint":1,"golint_exhaustive":0,"golint_forcetypeassert":0,"golint_gosec":0,"golint_intrange":0,"golint_modernize":3,"golint_nilnil":3,"golint_perfsprint":0,"golint_prealloc":0,"golint_recvcheck":1,"golint_usestdlibvars":0,"golint_wastedassign":0,"golint_total":8,"golint_test_testifylint":0,"golint_test_thelper":0,"golint_test_usetesting":0,"golint_test_total":0,"golint_vetx_total":0,"eslint_problems":0,"eslint_errors":0,"eslint_warnings":0,"tsc_errors":0,"measure_s":39}
2026-08-16 19:08:21 +08:00

4405 lines
197 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"common": {
"save": "保存",
"cancel": "取消",
"confirm": "确认",
"delete": "删除",
"loading": "加载中...",
"retry": "重试",
"optional": "(可选)",
"settings": "设置",
"search": "搜索",
"unknownError": "发生错误,请重试",
"loadFailed": "加载失败"
},
"layout": {
"nav": {
"home": "首页",
"myFiles": "我的文件",
"users": "用户管理",
"tasks": "任务管理",
"storage": "存储管理",
"database": "数据管理",
"push": "通知推送",
"messageGateway": "消息通道",
"logs": "系统日志",
"system": "系统配置",
"adminSettings": "系统设置",
"demo": "规范示例",
"apiDocs": "接口文档",
"usageDocs": "使用文档",
"dashboard": "数据看板",
"nodes": "节点管理",
"proxyRoutes": "规则管理",
"websites": "域名列表",
"certificates": "TLS证书",
"dnsAccounts": "DNS账号",
"cloudflare": "Cloudflare",
"origins": "源站地址",
"responses": "响应页面",
"waf": "WAF",
"ipGroups": "IP 组",
"rateLimits": "限流",
"pages": "Pages",
"configVersions": "版本发布",
"accessLogs": "访问日志",
"performance": "性能调优",
"applyLogs": "应用日志"
},
"groups": {
"admin": "管理",
"docs": "文档库",
"security": "安全性",
"websites": "网站管理"
},
"user": {
"adminRole": "系统管理员",
"userRole": "普通用户",
"notLoggedIn": "未登录",
"syncing": "正在同步账户",
"profile": "我的资料",
"settings": "设置",
"help": "使用帮助",
"logout": "退出登录",
"unknownUser": "未知用户"
},
"logoutDialog": {
"title": "确认登出",
"description": "您确定要登出当前账户吗?",
"loggingOut": "正在登出,请稍候...",
"confirm": "确认登出",
"inProgress": "登出中...",
"failed": "登出失败",
"failedDescription": "登出时发生错误,请重试"
},
"header": {
"notifications": "通知",
"settings": "设置",
"search": "搜索",
"toggleFullWidth": "切换全宽",
"toggleTheme": "主题切换",
"changePasswordBanner": "为了您的账号安全,请立即修改密码!",
"changePasswordAction": "去修改密码",
"bannerTitle": "最新通知",
"bannerLink": "查看详情",
"dismiss": "关闭",
"guest": "访客"
},
"search": {
"categoryPage": "页面",
"categoryFeature": "功能",
"categorySetting": "设置",
"categoryAdmin": "管理",
"tipPrefix": "Tips:",
"tipSlash": "还可以使用 / 来打开此界面",
"tipArrow": "来切换选中项",
"tipNewTab": "在新标签页打开",
"tipDidYouKnow": "你知道吗:搜索功能还在持续升级中",
"searchPlaceholder": "搜索页面和功能...",
"noResults": "没有找到相关内容,换个词试试?",
"openInNewTab": "在新标签页打开",
"open": "打开",
"closeSearch": "关闭搜索界面",
"items": {
"globalSettings": "全局设置",
"appearance": "外观设置",
"homeDesc": "返回控制台总览",
"usageDocsDesc": "查看新手教程和集成示例",
"nodesDesc": "管理边缘节点、中继节点与内网穿透通道",
"proxyRoutesDesc": "配置反向代理、路由匹配规则、WAF 策略与缓存设置",
"websitesDesc": "管理托管域名及证书绑定与监听配置",
"certificatesDesc": "申请与管理 SSL/TLS 证书,支持自动续期",
"dnsAccountsDesc": "配置 DNS 服务商 API 凭证以自动申请证书及管理解析",
"originsDesc": "管理反向代理的目标后端服务器与负载均衡组",
"responsesDesc": "配置源站错误页与离线兜底联系页",
"wafDesc": "配置 Web 应用防火墙规则,阻断恶意请求",
"ipGroupsDesc": "定义 IP 地址列表以在 WAF 或路由中实现黑白名单控制",
"rateLimitsDesc": "配置边缘站点默认并发与带宽限流策略",
"pagesDesc": "上传或部署静态网页,提供全球 CDN 加速托管",
"configVersionsDesc": "查看、对比、发布与回滚系统配置版本",
"accessLogsDesc": "查看并检索全量网站访问请求日志与网络分析数据",
"applyLogsDesc": "查看节点配置下发、同步与生效的历史记录",
"performanceDesc": "调优网络连接、代理超时与核心系统性能参数",
"settingsDesc": "配置应用个人偏好选项",
"profileDesc": "编辑昵称、头像和个人属性",
"appearanceDesc": "配置系统显示主题(亮色/暗色)",
"adminSettingsDesc": "管理系统登录注册与认证源配置 (管理员专属)",
"systemDesc": "动态修改平台核心运行时配置 (管理员专属)",
"usersDesc": "管理平台注册用户的活跃状态 (管理员专属)",
"tasksDesc": "下发与排查后台异步定时任务 (管理员专属)",
"storageDesc": "查看、检索与清理上传到对象存储中的文件 (管理员专属)",
"databaseDesc": "监控数据库表大小、分页浏览物理表内容并支持交互式 SQL (管理员专属)",
"pushDesc": "配置与下发邮件、Lark 和 Telegram 渠道通知推送 (管理员专属)",
"logsDesc": "查看系统日志与后台异步任务执行日志 (管理员专属)"
}
},
"error": {
"loadFailed": "加载失败",
"retry": "重试",
"unknownError": "发生未知错误,请稍后重试",
"viewDetails": "查看详细错误信息",
"unknownErrorShort": "发生未知错误"
},
"loading": {
"loading": "加载中",
"loadingDesc": "正在获取活动数据..."
},
"empty": {
"noData": "暂无数据",
"noContent": "当前没有任何记录"
}
},
"auth": {
"login": {
"title": "登录到您的账号",
"description": "欢迎回来,请输入您的账号信息继续。",
"username": "邮箱或用户名",
"usernamePlaceholder": "输入邮箱或用户名",
"password": "密码",
"passwordPlaceholder": "输入您的密码",
"showPassword": "显示密码",
"hidePassword": "隐藏密码",
"submit": "登录",
"submitting": "登录中...",
"success": "登录成功",
"failed": "登录失败,请重试",
"incomplete": "邮箱/用户名或密码未填写完整",
"incompleteDesc": "请先输入邮箱/用户名和密码后再登录",
"capPending": "人机验证尚未完成,请稍候…",
"capRequired": "请先点击「开始验证」完成人机验证",
"orUse": "或者使用",
"oauthLogin": "{name} 登录",
"oauthFailed": "第三方登录失败",
"noAccount": "还没有账号?",
"registerNow": "立即注册",
"codeSent": "登录验证码已发送至您的邮箱,请注意查收",
"codeTipMasked": "已向您的安全邮箱 {email} 发送了登录验证码。",
"codeTipGeneric": "请输入您的登录验证码。",
"needBind": "您的第三方账号未绑定本地账号,系统已关闭注册。请登录已有本地账号进行绑定。",
"bindSuccess": "绑定成功",
"checkingSession": "正在检查登录状态",
"checkingSessionDesc": "请稍候,我们正在确认当前会话...",
"redirecting": "正在跳转至控制台...",
"verifyingCredentials": "正在验证凭据",
"establishingSession": "请稍候,我们正在为您建立安全会话..."
},
"otp": {
"title": "验证您的登录",
"description": "输入发送到安全邮箱的 6 位验证码。",
"code": "验证码",
"resend": "重新发送",
"resendIn": "{seconds}秒后重发",
"submit": "验证",
"submitting": "验证中...",
"help": "遇到登录问题?",
"contactSupport": "联系客服"
},
"register": {
"title": "创建您的账号",
"description": "填写以下信息,开始使用平台服务。",
"username": "用户名",
"usernamePlaceholder": "请输入用户名",
"nickname": "昵称",
"nicknamePlaceholder": "请输入昵称",
"email": "电子邮箱",
"emailPlaceholder": "请输入电子邮箱",
"password": "密码",
"passwordPlaceholder": "请输入密码(至少 8 位)",
"emailCode": "邮箱验证码",
"emailCodePlaceholder": "请输入 6 位邮箱验证码",
"getCode": "获取验证码",
"resendIn": "{seconds}秒后重发",
"submit": "创建账号",
"submitting": "注册中...",
"success": "注册并登录成功",
"failed": "注册失败,请重试",
"closed": "系统注册功能已关闭",
"codeSent": "验证码已发送至您的邮箱,请查收",
"sendCodeFailed": "发送验证码失败,请重试",
"emailRequired": "请先输入邮箱地址",
"emailInvalid": "请输入有效的邮箱地址",
"usernamePasswordRequired": "用户名和密码不能为空",
"passwordTooShort": "密码长度不能少于 8 位",
"emailEmpty": "邮箱不能为空",
"codeRequired": "验证码不能为空",
"capPending": "人机验证尚未完成,请稍候…",
"capRequired": "请先点击「开始验证」完成人机验证",
"hasAccount": "已经有账号?",
"backToLogin": "返回登录"
},
"capWidget": {
"clickToStart": "点击开始人机验证",
"waitingVerification": "等待人机验证…",
"verifying": "正在完成人机验证…",
"verificationPassed": "人机验证通过",
"verificationFailed": "人机验证失败",
"retry": "重试"
},
"requireAuth": {
"accessDenied": "访问被拒绝",
"noPermission": "您没有权限访问此页面"
}
},
"settings": {
"title": "设置",
"categories": {
"personal": "个人设置",
"account": "账户设置"
},
"items": {
"profile": "个人资料",
"profileDesc": "查看您的账户信息",
"accessToken": "访问令牌 (AccessToken)",
"accessTokenDesc": "管理用于 API 访问的个人 Token",
"notifications": "通知设置",
"notificationsDesc": "设置您的通知偏好",
"appearance": "外观设置",
"appearanceDesc": "自定义界面主题与显示"
},
"appearance": {
"breadcrumb": "外观设置",
"themeMode": "主题模式",
"themeModeDesc": "选择应用程序的整体明暗主题",
"modeLight": "明亮",
"modeDark": "黑暗",
"modeSystem": "自动",
"interface": "界面外观",
"interfaceDesc": "选择界面的配色方案和视觉风格",
"switched": "外观已切换为 {name}",
"switchFailed": "切换失败",
"language": "语言",
"languageDesc": "选择界面显示语言",
"comingSoon": "即将推出",
"comingSoonBody": "更多自定义选项正在开发中..."
},
"notifications": {
"breadcrumb": "通知设置",
"display": "通知显示",
"displayDesc": "设置通知相关的显示选项",
"showBell": "显示通知铃铛",
"showBellDesc": "在顶部导航栏中显示通知铃铛图标"
},
"accessToken": {
"breadcrumb": "访问令牌",
"title": "个人访问令牌 (AccessToken)",
"generate": "生成新令牌",
"securityTitle": "安全提示:",
"securityBody": "访问令牌具有您账户的完整接口调用权限。为了您的账户与资产安全,请切勿通过任何代码库提交、即时通讯工具或公共媒介泄露此令牌。推荐按需创建,不使用时及时撤销。",
"listTitle": "活动令牌列表",
"listDesc": "当前可用的所有访问令牌",
"userToken": "用户令牌",
"empty": "您当前暂无生成任何访问令牌",
"generateFirst": "生成第一个令牌",
"createTitle": "生成新令牌",
"createDesc": "请为新的访问令牌设置一个易于识别的名称,以便将来管理。",
"name": "令牌名称",
"adminHint": "开启后此令牌可访问 /admin/** 管理端点,默认关闭",
"generateAction": "生成令牌",
"readyTitle": "令牌密钥已就绪",
"readyBody": "这是您唯一一次能够查看此访问令牌明文密钥的机会。请立即将其复制并安全地保存。",
"nameRequired": "请输入令牌名称",
"createSuccess": "访问令牌创建成功",
"createFailed": "创建访问令牌失败",
"deleteSuccess": "访问令牌已撤销",
"deleteFailed": "删除访问令牌失败",
"rotateSuccess": "访问令牌轮换成功,旧密钥已失效",
"rotateFailed": "轮换访问令牌失败",
"deleteConfirm": "确定要删除并撤销令牌「{name}」吗?删除后此令牌将立即失效且不可恢复。",
"rotateConfirm": "确定要轮换令牌「{name}」的密钥吗?轮换后系统将生成全新密钥,原令牌密钥将立即失效。",
"deleteConfirmTitle": "确认撤销访问令牌",
"rotateConfirmTitle": "确认轮换访问令牌",
"confirmRevoke": "确认撤销",
"confirmRotate": "确认轮换",
"revoking": "撤销中...",
"rotating": "轮换中...",
"subtitle": "管理您的 API 访问密钥,用于开发或第三方工具直接调用系统 API",
"adminBadge": "管理员",
"adminPermission": "管理员权限",
"createdAt": "创建于: {date}",
"copy": "复制",
"rotate": "轮换",
"revoke": "撤销",
"copySuccess": "复制成功",
"copyFailed": "复制失败",
"namePlaceholder": "例如:my-development-key",
"generating": "正在生成...",
"importantTitle": "重要提示:",
"savedConfirm": "我已经复制并妥善保存"
},
"profile": {
"passwordChangeSuccess": "密码修改成功",
"passwordChangeFailed": "修改密码失败,请重试",
"passwordMismatch": "两次输入的新密码不一致",
"passwordTooShort": "新密码长度不能少于 8 位",
"profileUpdateSuccess": "个人信息修改成功",
"profileUpdateFailed": "修改个人信息失败,请重试",
"bindSourceFailed": "绑定认证源失败",
"avatarUploadSuccess": "头像上传成功,点击保存以生效",
"avatarUploadFailed": "上传头像失败",
"genderMale": "男",
"genderFemale": "女",
"genderSecret": "保密",
"title": "个人资料",
"userNotFound": "未找到用户信息",
"breadcrumbSettings": "设置",
"breadcrumbProfile": "个人资料",
"basicInfo": "基本资料",
"basicInfoDesc": "您的个人账户基本信息",
"editProfile": "编辑资料",
"account": "账户",
"nickname": "昵称",
"notSet": "未设置",
"uid": "用户ID (UID)",
"email": "邮箱",
"notBound": "未绑定",
"phone": "手机号码",
"gender": "性别",
"website": "个人网站",
"location": "所在地",
"isAdmin": "管理员身份",
"yes": "是",
"no": "否",
"bio": "个人简介",
"bioDefault": "这个人很懒,什么都没有留下。",
"changePassword": "修改密码",
"changePasswordDesc": "更改您的账号密码以确保安全。密码长度不能少于 8 位。",
"passwordRiskWarning": "密码风险提示",
"mustChangePassword": "为了账号安全,您必须修改初始密码。",
"currentPassword": "当前密码",
"currentPasswordPlaceholder": "请输入当前密码",
"newPassword": "新密码",
"newPasswordPlaceholder": "新密码(至少 8 位)",
"confirmNewPassword": "确认新密码",
"confirmNewPasswordPlaceholder": "确认新密码",
"submitting": "提交中...",
"confirmChange": "确认修改",
"thirdPartyBinding": "第三方账号绑定",
"thirdPartyBindingDesc": "管理并关联您的第三方授权账户,便于快捷登录与验证",
"boundAccounts": "已绑定账号",
"noAccountIdentifier": "未提供账号标识",
"unbind": "解绑",
"bindingRemoved": "绑定已移除",
"noBoundAccounts": "暂无绑定的第三方账号",
"bindNewAccount": "绑定新账号",
"bindSource": "绑定 {name}",
"noAvailableSources": "暂无可用第三方认证源",
"editProfileTitle": "编辑个人资料",
"editProfileDesc": "修改您的基本信息,保存后立即生效。",
"uploadAvatar": "点击上传/修改头像",
"nicknamePlaceholder": "请输入您的昵称",
"emailPlaceholder": "请输入您的邮箱",
"phonePlaceholder": "请输入手机号",
"genderPlaceholder": "选择性别",
"locationPlaceholder": "如:北京",
"bioPlaceholder": "介绍一下自己吧...",
"cancel": "取消",
"saving": "保存中...",
"saveChanges": "保存修改",
"cropAvatar": "裁剪头像",
"cropAvatarDesc": "调整头像位置和大小,使其处于居中圆形区域内。"
},
"botBinding": {
"title": "绑定机器人",
"description": "把 Telegram / QQ 私聊身份绑定到此账号,向机器人发消息即可入库。",
"bound": "已绑定",
"empty": "尚未绑定任何机器人",
"unbind": "解绑",
"bind": "绑定配对码",
"bindDialogTitle": "绑定机器人",
"bindDialogDescription": "选择一个已启用的通道,并输入机器人发给你的配对码。",
"selectChannel": "选择通道",
"pairingCode": "配对码",
"pairingCodePlaceholder": "ABCD-EFGH",
"submit": "绑定",
"cancel": "取消",
"bindSuccess": "绑定成功",
"bindFailed": "绑定失败",
"unbindSuccess": "已解绑",
"unbindFailed": "解绑失败",
"platformUserId": "平台用户 ID",
"noChannels": "暂无可用通道,请联系管理员添加。",
"typeTelegram": "Telegram",
"typeQQ": "QQ",
"loadFailed": "加载绑定失败"
},
"security": {
"passwordLoginEnabled": "允许密码登录",
"passwordLoginEnabledDesc": "关闭后仅保留第三方 OIDC 认证源进行系统登录。",
"registrationEnabled": "允许注册",
"registrationEnabledDesc": "关闭后系统将禁止新用户进行自主账号注册。",
"passwordRegisterEnabled": "允许密码注册",
"passwordRegisterEnabledDesc": "关闭后只能通过管理员创建或第三方认证关联建号。",
"oidcLoginEnabled": "允许 OIDC 登录",
"oidcLoginEnabledDesc": "关闭后所有的第三方 OIDC 认证登录入口都会被隐藏。",
"emailLoginVerification": "邮箱登录验证",
"emailLoginVerificationDesc": "开启后,使用账号密码登录时需要通过邮箱接收并验证 6 位验证码。",
"emailRegisterVerification": "邮箱注册验证",
"emailRegisterVerificationDesc": "开启后,用户注册账号时需要通过邮箱接收并验证 6 位验证码。",
"loginSessionTTLUpdated": "登录状态保持时间已更新",
"updateConfigFailed": "更新配置失败",
"invalidHours": "请输入有效的过期小时数(正整数)",
"securityConfigUpdated": "系统安全配置已更新",
"authSourceStatusUpdated": "认证源状态已更新",
"toggleStatusFailed": "切换状态失败",
"authSourceDeleted": "认证源已删除",
"deleteAuthSourceFailed": "删除认证源失败",
"captchaConfigSaved": "人机验证配置已成功保存",
"saveConfigFailed": "保存配置失败",
"loginRegistrationSettings": "系统登录/注册设置",
"loginRegistrationSettingsDesc": "配置系统的登录限制与用户自主注册权限",
"loginSessionTTL": "登录状态保持时间",
"loginSessionTTLDesc": "配置用户登录会话在浏览器中的保持期限。设置为\"关闭\"则在浏览器关闭后自动退登。",
"selectRetentionTime": "选择保留时间",
"sessionOff": "关闭 (浏览器关闭自动退登)",
"session7Days": "7 天",
"session30Days": "30 天",
"sessionNeverExpire": "永不过期",
"sessionCustom": "自定义时长",
"hoursPlaceholder": "小时",
"authSourceManagement": "认证源管理",
"authSourceManagementDesc": "添加、修改并启用系统自定义的 OIDC 认证源",
"addAuthSource": "新增认证源",
"enabled": "已启用",
"disabled": "已禁用",
"identifier": "标识符",
"type": "类型",
"secretConfigured": "Secret 已配置",
"secretNotConfigured": "Secret 未配置",
"deleteAuthSourceConfirm": "确定删除认证源「{name}」吗?删除后无法恢复。",
"deleteAuthSourceTitle": "确认删除认证源",
"confirmDelete": "确认删除",
"deleting": "删除中...",
"noAuthSources": "暂无配置的认证源,点击上方按钮新增",
"captchaConfig": "人机验证配置 (Cap CAPTCHA)",
"captchaConfigDesc": "配置基于 Proof-of-Work (PoW) 的无感人机验证,保护系统登录免受暴力破解和撞库攻击",
"autoStartSolving": "打开页面后自动开始计算",
"challengeCount": "难题数量 (Count)",
"challengeCountDesc": "客户端需求解的难题总数。默认 1,推荐 1 至 5",
"challengeDifficulty": "验证难度 (Difficulty)",
"challengeDifficultyDesc": "PoW 前缀哈希位数,每加 1 计算时间翻倍。默认 4,推荐 4",
"challengeSize": "盐值长度 (Size)",
"challengeSizeDesc": "难题盐值混淆字符长度。默认 32",
"challengeTTL": "难题超时时长 (秒)",
"challengeTTLDesc": "难题有效期限。默认 600 秒 (10 分钟)",
"tokenTTL": "验证凭证有效时长 (秒)",
"tokenTTLDesc": "PoW 计算求解通过后,签发的登录凭证有效时长。默认 1200 秒 (20 分钟)",
"saving": "保存中...",
"saveConfig": "保存配置"
},
"system": {
"addressAutoDetected": "已自动获取当前域名并填充",
"configUpdated": "配置已更新",
"updateConfigFailed": "更新配置失败",
"generalConfigSaved": "通用配置已成功保存",
"saveConfigFailed": "保存配置失败",
"smtpConfigSaved": "SMTP 邮件配置已成功保存",
"connectingTest": "正在发起连接测试...",
"testEmailSent": "测试邮件发送成功",
"sendFailedCheckConfig": "发送失败,请检查配置和日志。",
"testEmailFailed": "测试邮件发送失败",
"requestFailed": "请求发送失败",
"requestError": "[请求错误]",
"testRequestFailed": "测试请求发送失败",
"enterTargetEmail": "请输入目标邮箱地址",
"generalSettings": "通用设置",
"generalSettingsDesc": "配置站点标识、服务地址与搜索引擎收录策略",
"siteName": "站点名称",
"siteNameDesc": "用于网页标题、登录注册页面、管理后台与系统邮件。",
"serverAddress": "服务器访问地址",
"useCurrentDomain": "使用当前域名",
"serverAddressDesc": "限定 API 的允许来源;留空将开放任意来源访问。",
"searchEngineIndexing": "搜索引擎抓取与收录",
"indexingAllowed": "允许收录",
"indexingDenied": "禁止收录",
"searchEngineIndexingDesc": "控制 Google、Baidu、Bing 等搜索引擎是否可以索引公开页面。",
"addressChangeWarning": "地址变更会影响跨域访问策略,请填写完整协议与域名。",
"saving": "保存中...",
"saveConfig": "保存配置",
"smtpSettings": "SMTP 邮件设置",
"smtpSettingsDesc": "配置系统的邮件发送服务 (SMTP)",
"smtpHost": "SMTP 服务器地址",
"smtpPort": "SMTP 端口",
"smtpUsername": "SMTP 账户",
"smtpPassword": "SMTP 访问凭证",
"smtpPasswordMasked": "•••••• (已配置,留空或输入新值)",
"smtpPasswordPlaceholder": "输入凭证密码",
"testSend": "测试发件",
"smtpTestTitle": "SMTP 发件测试",
"smtpTestDesc": "输入接收测试邮件的邮箱地址。系统将使用您在表单中当前填写的 SMTP 配置进行发件测试。",
"targetEmail": "目标邮箱地址",
"connectionLog": "连接与传输日志",
"testSuccess": "测试成功!邮件已顺利发出。",
"testFailed": "测试失败",
"close": "关闭",
"testing": "测试中...",
"startTest": "开始测试"
},
"other": {
"menuDisplayUpdated": "目录显示配置已更新",
"updateConfigFailed": "更新配置失败",
"menuDisplayManagement": "目录显示管理",
"menuDisplayManagementDesc": "配置系统左侧菜单的显示与隐藏状态,适用于所有登录用户。",
"notHideable": "不可隐藏",
"securityTipTitle": "安全提示:",
"securityTipDesc": "为了防止管理员在关闭\"系统设置\"后导致无法重新访问此配置页,系统限制了\"系统设置\"的关闭权限。其它所有菜单均可自由开关,隐藏后对应的分组标题在为空时也会自动隐藏。",
"groupBusiness": "业务菜单",
"groupAdmin": "管理菜单",
"groupDocs": "文档菜单",
"descDashboard": "查看边缘节点请求、访客与流量等多维度图表看板",
"descNodes": "注册与管理反向代理边缘节点服务状态",
"descProxyRoutes": "配置和发布反代路由规则、负载均衡与源站绑定",
"descWebsites": "配置站点根域名并查看关联网站详情",
"descCertificates": "管理和下发网站 SSL/TLS 证书",
"descDnsAccounts": "配置 Cloudflare/Alidns 等 DNS 服务商 API 凭证",
"descOrigins": "集中维护和管理后端业务源站服务器组",
"descWaf": "配置 Web 应用防火墙自定义规则与频率限制",
"descIpGroups": "管理黑白名单 IP 集合,用于 WAF 规则过滤",
"descPages": "托管和发布静态网页项目,支持自动关联域名",
"descConfigVersions": "查看规则快照版本并进行配置热更新分发与回滚",
"descAccessLogs": "多维度实时浏览边缘节点请求访问明细",
"descPerformance": "配置缓存、图片压缩等页面性能加速策略",
"descUsers": "查看和管理系统用户列表及其状态",
"descTasks": "查看和调度系统异步及定时任务",
"descStorage": "管理系统文件存储和清理无用文件",
"descDatabase": "监控物理数据库状态、分页浏览表数据及交互式 SQL 查询",
"descPush": "配置和发送系统通知及推送消息",
"descLogs": "查看异步任务执行日志和系统运行情况",
"descSystem": "管理和维护系统基础键值对配置",
"descAdminSettings": "配置安全验证、邮箱服务及目录显示",
"descUsageDocs": "面向开发与运营的部署使用指南"
},
"templates": {
"templateCreated": "通知模板已成功创建",
"createTemplateFailed": "创建模板失败",
"templateSaved": "通知模板已成功保存",
"updateTemplateFailed": "修改模板失败",
"templateDeleted": "通知模板已删除",
"deleteTemplateFailed": "删除模板失败",
"templateManagement": "通知模板管理",
"templateManagementDesc": "配置与编辑系统各类场景的通知邮件/短信模板,支持动态变量渲染",
"addTemplate": "新增模板",
"systemBuiltIn": "系统内置",
"custom": "自定义",
"identifier": "标识符",
"subject": "主题",
"deleteTemplateConfirm": "确定删除模板「{name}」吗?删除后无法恢复。",
"deleteTemplateTitle": "确认删除模板",
"confirmDelete": "确认删除",
"deleting": "删除中...",
"noTemplates": "暂无配置的通知模板,点击上方按钮新增",
"editTemplate": "编辑通知模板",
"addTemplateTitle": "新增通知模板",
"templateDesc": "配置模板渲染逻辑,支持 Go `text/template` 语法(例如 `{{.Code}}` 表示验证码变量)。",
"templateKey": "模板标识符 (Key)",
"templateKeyDesc": "模板的唯一标识,在代码中通过此 Key 调用。",
"templateName": "模板名称",
"templateNameDesc": "用于后台识别该模板的可读名称。",
"templateType": "模板类型",
"templateTypeDesc": "模板分类标识,目前支持 `email`。",
"templateSubject": "模板主题 (Subject)",
"templateSubjectDesc": "邮件标题(类型为 email 时生效)。",
"templateDescription": "模板说明与变量描述",
"templateContent": "模板正文内容 (Content)",
"cancel": "取消",
"saving": "保存中...",
"saveConfig": "保存配置"
},
"info": {
"upgradeVerified": "升级包已校验完成,服务正在重启",
"applyUpgradeFailed": "应用升级失败",
"appUpdate": "应用更新",
"appUpdateDesc": "检查上游 GitHub Actions Release 并升级当前服务",
"newVersionAvailable": "发现新版本",
"alreadyLatest": "已是最新",
"cannotGetVersion": "无法获取上游版本信息",
"recheck": "重新检查",
"currentVersion": "当前版本",
"latestVersion": "最新版本",
"buildTime": "构建时间",
"platform": "运行平台",
"upstreamRepo": "上游仓库",
"releaseAsset": "Release 资产",
"releaseNotes": "更新说明",
"checkUpdate": "检查更新",
"viewRelease": "查看 Release",
"upgradeNow": "立即升级",
"upgradeTo": "升级到 {version}?",
"upgradeDesc": "服务将下载并校验 {asset},随后替换当前二进制并重启。请确保安装目录可写,且服务允许原地重启。",
"cancel": "取消",
"confirmUpgrade": "确认升级",
"devBuildNoUpgrade": "开发构建没有可比较的 Release 版本,不能执行自动升级。",
"platformNotSupported": "当前平台暂不支持自动替换二进制,请从 Release 页面手动升级。",
"noUpgradeNeeded": "当前版本无需升级。"
},
"operation": {
"whitelistUpdated": "文件访问白名单已更新",
"updateWhitelistFailed": "更新白名单失败",
"fileAccessControl": "文件访问权限控制",
"fileAccessControlDesc": "配置免登录直接访问的文件业务类型。不在白名单内的文件将要求登录鉴权。",
"addAuthFreeType": "添加免鉴权类型:",
"selectBusinessType": "选择业务类型...",
"allTypesAdded": "所有类型已添加",
"currentAuthFreeList": "当前免鉴权列表",
"whitelistEmpty": "白名单已空,所有类型文件的访问都将需要登录。",
"typeAvatar": "头像 (avatar)",
"typeAttachment": "附件 (attachment)",
"typeDoc": "文档 (doc)",
"typeGeneric": "通用 (generic)",
"logRetentionTitle": "日志保留时间",
"logRetentionDesc": "配置各日志数据库的日志保留天数,切换日志数据库后自动按对应配置清理过期日志。",
"days": "天",
"save": "保存",
"logRetentionUpdated": "日志保留时间已更新",
"logRetentionUpdateFailed": "更新日志保留时间失败",
"retentionInvalid": "{label}必须为大于等于 1 的整数",
"retentionPostgresDesc": "访问日志与可观测指标统一保留天数",
"retentionSqliteDesc": "SQLite 日志保留天数",
"retentionClickhouseDesc": "ClickHouse 日志保留天数"
},
"authSourceModal": {
"authSourceSaved": "认证源已保存",
"saveAuthSourceFailed": "保存认证源失败",
"editAuthSource": "编辑认证源",
"addAuthSource": "新增认证源",
"editAuthSourceDesc": "修改系统自定义的 OIDC 认证源参数。",
"addAuthSourceDesc": "配置新的自定义 OIDC 认证源。",
"identifier": "标识符 (英文名称)",
"displayName": "展示名称",
"keepOriginalIfEmpty": "留空则保留原值",
"discoveryURL": "Discovery URL (OIDC 发行方 URL)",
"iconURL": "图标 URL (可选)",
"enableAuthSource": "启用认证源",
"enableAuthSourceDesc": "启用后会立即显示在登录页和账号绑定中。",
"cancel": "取消",
"saving": "保存中...",
"save": "保存"
}
},
"admin": {
"files": {
"pageTitle": "存储管理",
"tabStats": "文件存储信息",
"tabList": "文件列表",
"tabStorage": "存储配置",
"stats": {
"noData": "暂无上传数据",
"noDataDesc": "上传文件后即可在此查看容量与文件分布分析。",
"totalFiles": "总文件数",
"countUnit": "个",
"totalFilesDesc": "您上传的可用文件数量汇总",
"totalSize": "占用存储容量",
"totalSizeDesc": "文件实际在磁盘/S3中占用的总空间",
"weeklyNewFiles": "近 7 天新增文件",
"weeklyNewFilesDesc": "最近 7 天上传成功的文件总数",
"weeklyNewSize": "近 7 天新增大小",
"weeklyNewSizeDesc": "最近 7 天上传所消耗的存储带宽",
"trendTitle": "最近 7 天新增趋势",
"trendDesc": "按日统计近一周期内的上传波动",
"trendCount": "新增数量 (个)",
"trendSize": "新增大小 (MB)",
"chartLabelCount": "新增文件数",
"chartLabelSize": "新增大小",
"countDistTitle": "文件格式数量分布",
"countDistDesc": "各种格式类型的文件个数占比",
"noCategoryData": "暂无分类数据",
"maxCountHint": "文件类型中数量最多的是「{name}」,累计上传了 {count} 个文件。",
"sizeDistTitle": "文件占用容量分布",
"sizeDistDesc": "各种格式类型的文件大小占比",
"noSizeData": "暂无容量数据",
"maxSizeHint": "文件类型中占用存储最大的是「{name}」,共消耗了 {size} 存储容量。",
"catImages": "图片",
"catVideos": "视频",
"catAudio": "音频",
"catDocuments": "文档",
"catArchives": "压缩包",
"catOthers": "其他",
"none": "无"
},
"list": {
"searchPlaceholder": "搜索文件名...",
"selectAll": "全选本页",
"deselectAll": "取消全选",
"selectedCount": "已选 {count} 个",
"batchDownload": "打包下载",
"batchDownloadSuccess": "批量下载已开始",
"batchDownloadFailed": "批量下载失败",
"totalFiles": "共 {count} 个文件",
"noMatch": "没有匹配的文件",
"noFiles": "您还没有上传任何文件",
"colPreview": "预览",
"colName": "文件名",
"colPath": "路径",
"colType": "业务类别",
"colMime": "MIME类型",
"colSize": "大小",
"colUploadedAt": "上传时间",
"colActions": "操作",
"viewDetail": "查看详情",
"download": "下载",
"delete": "删除",
"prevPage": "上一页",
"nextPage": "下一页",
"detailTitle": "文件详情",
"detailDesc": "查看文件的完整元数据与配置属性。",
"detailId": "文件 ID",
"detailName": "文件名",
"detailPath": "存储路径",
"detailSize": "大小",
"bytes": "字节",
"detailMime": "MIME 类型",
"detailExtension": "文件后缀",
"detailBizType": "业务类型",
"detailDriver": "存储驱动",
"detailUploaderId": "上传者 ID",
"detailUploadedAt": "上传时间",
"detailMetadata": "额外元数据",
"deleteTitle": "确认删除文件",
"deleteConfirm": "确定要删除文件「{name}」吗?此操作不可撤销。",
"cancel": "取消",
"confirmDelete": "确认删除",
"deleteSuccess": "文件已删除",
"deleteFailed": "删除失败",
"extensionFile": "{ext} 文件"
},
"storage": {
"maintenanceMode": "存储维护模式",
"maintenanceDesc": "{source} → {target}。迁移期间文件只允许读取,禁止上传、删除和清理。",
"migrationProgress": "迁移进度请查看任务执行日志:{taskId}",
"notDispatched": "尚未下发",
"retryMigration": "重试迁移",
"fileStorage": "文件存储",
"fileStorageDesc": "默认使用本地存储。配置系统文件的存储媒介,切换存储类型且已有文件时,系统会自动进入维护模式并迁移文件。",
"storageType": "存储类型",
"rootDir": "根目录",
"endpoint": "服务地址",
"username": "用户名",
"password": "密码",
"basePath": "基础路径",
"switchWarning": "⚠️ 您已切换存储类型。点击「保存配置」将立即切换活动存储引擎,并同步更新已有文件的存储驱动标记。仅在需要复制物理文件时才使用「开始迁移」。",
"saveConfig": "保存配置",
"startMigration": "开始迁移",
"keyPrefix": "对象前缀",
"cdnUrl": "CDN 地址",
"pathStyleDesc": "MinIO 等自托管 S3 通常需要开启。",
"saveSuccess": "存储配置已保存",
"saveFailed": "保存存储配置失败",
"migrateSuccess": "存储迁移任务已下发",
"migrateFailed": "下发存储迁移任务失败",
"retrySuccess": "存储迁移任务已重新下发",
"retryFailed": "运行存储迁移失败",
"driverLocal": "本地文件系统",
"driverS3": "AWS S3",
"driverR2": "Cloudflare R2",
"driverMinio": "MinIO",
"driverOss": "阿里云 OSS",
"driverWebdav": "WebDAV",
"driverUnknown": "未知"
}
},
"users": {
"pageTitle": "用户管理",
"createUser": "新增用户",
"colUser": "用户",
"colEmail": "邮箱",
"colLastLogin": "上次登陆",
"colRegisteredAt": "注册时间",
"colLastUpdate": "上次更新",
"colActions": "操作",
"loadingUsers": "加载用户列表中...",
"noUsers": "暂无用户数据",
"adminAccount": "管理员账户",
"disableAccount": "禁用账户",
"enableAccount": "启用账户",
"viewDetail": "查看详情",
"editUser": "编辑用户",
"editTitle": "编辑用户",
"editDesc": "修改用户档案、授予/撤销管理权限或重置其密码。",
"usernameImmutable": "用户名 (不可修改)",
"nicknameOptional": "昵称 (选填)",
"nicknamePlaceholder": "请输入昵称",
"email": "邮箱",
"emailPlaceholder": "请输入邮箱地址",
"resetPasswordOptional": "重置密码 (选填)",
"resetPasswordPlaceholder": "留空表示保持当前密码,输入则重置 (至少 8 位)",
"adminPermission": "管理员权限",
"adminPermissionDesc": "开启后此账号将拥有后台管理权限。",
"cannotRevokeSelfAdmin": "不能撤销当前登录用户的管理员权限。",
"deleteUser": "删除用户",
"cancel": "取消",
"save": "保存",
"saving": "保存中...",
"deleteConfirmTitle": "确认删除用户",
"deleteConfirmDesc": "确定要删除用户 {name} 吗?该操作会移除用户账号,删除后无法撤销。",
"confirmDelete": "确认删除",
"createTitle": "新增用户",
"createDesc": "直接创建一个本地密码登录的新账户。",
"username": "用户名",
"usernamePlaceholder": "请输入用户名 (至少 3 位)",
"password": "密码",
"passwordPlaceholder": "请输入登录密码 (至少 8 位)",
"enableAccountLabel": "启用账户",
"enableAccountDesc": "禁用后此账号将无法登录系统。",
"create": "创建",
"creating": "创建中...",
"userProfile": "用户档案",
"refreshingDetail": "正在刷新详情",
"registeredAt": "注册时间",
"personalInfo": "个人资料",
"phone": "手机",
"gender": "性别",
"location": "所在地",
"website": "网站",
"bio": "简介",
"systemRecords": "系统记录",
"accountStatus": "账户状态",
"statusActive": "正常",
"statusDisabled": "禁用",
"isAdmin": "管理员",
"yes": "是",
"no": "否",
"lastLogin": "最后登录",
"lastUpdate": "最后更新",
"banAccount": "封禁账户",
"unbanAccount": "解除封禁",
"search": "搜索",
"searchUserIdPlaceholder": "输入用户 ID...",
"searchUsernamePlaceholder": "输入 username...",
"searchEmailPlaceholder": "输入邮箱...",
"clear": "清除",
"status": "状态",
"statusAll": "全部状态",
"clearFilters": "清空筛选",
"totalRecords": "{total} 条记录",
"perPage": "{count}条/页",
"refreshData": "刷新数据",
"validation": {
"emailRequired": "邮箱不能为空",
"emailInvalid": "邮箱格式不正确",
"passwordTooShort": "密码长度不能少于 8 位",
"usernameRequired": "用户名不能为空",
"usernameTooShort": "用户名长度不能少于 3 位",
"passwordRequired": "密码不能为空"
}
},
"tasks": {
"pageTitle": "任务管理",
"tabTasks": "任务管理",
"tabSchedules": "定时任务",
"tabExecutions": "任务日志",
"unknownError": "未知错误",
"statusPending": "等待中",
"statusRunning": "执行中",
"statusSucceeded": "成功",
"statusFailed": "失败",
"triggerSystem": "系统",
"triggerManual": "手动",
"triggerRetry": "重试",
"triggerSchedule": "定时",
"allStatuses": "全部状态",
"allTasks": "全部任务",
"refresh": "刷新",
"loadingExecutions": "加载任务执行记录中...",
"noExecutions": "暂无任务执行记录",
"colTask": "任务",
"colStatus": "状态",
"colTrigger": "触发",
"colRetry": "重试",
"colDuration": "耗时",
"colResult": "结果/错误",
"colCreatedAt": "创建时间",
"paginationInfo": "共 {total} 条,当前第 {current}/{totalPages} 页",
"prevPage": "上一页",
"nextPage": "下一页",
"executionDetailTitle": "任务执行详情",
"loadingDetail": "加载任务详情中...",
"detailStatus": "状态",
"detailTrigger": "触发来源",
"detailRetryCount": "重试次数",
"detailDuration": "耗时",
"detailTaskId": "任务标识",
"detailCreatedAt": "创建时间",
"detailStartedAt": "开始时间",
"detailFinishedAt": "结束时间",
"detailUpdatedAt": "更新时间",
"detailResult": "执行结果",
"detailError": "错误信息",
"detailPayload": "Payload",
"detailLog": "执行日志",
"noLog": "暂无日志",
"noExecutionSelected": "未选择任务记录",
"refreshDetail": "刷新详情",
"retryTask": "重试任务",
"retrySuccess": "任务已重新下发",
"retrySuccessDesc": "新任务 ID:{taskId}",
"retryFailed": "任务重试失败",
"loadSchedulesFailed": "加载定时任务配置失败",
"scheduleEnabled": "已启用定时任务:{name}",
"scheduleDisabled": "已停用定时任务:{name}",
"changeScheduleStatusFailed": "修改任务状态失败",
"scheduleNameRequired": "任务名称不能为空",
"cronRequired": "Cron 表达式不能为空",
"scheduleUpdateSuccess": "定时任务更新成功",
"scheduleCreateSuccess": "定时任务创建成功",
"submitFailed": "提交失败",
"scheduleDeleteSuccess": "定时任务删除成功",
"deleteFailed": "删除失败",
"addSchedule": "新增定时任务",
"loadingSchedules": "加载定时任务配置中...",
"noSchedules": "暂无定时任务配置,点击上方按钮新增",
"colScheduleName": "任务名称",
"colAssociatedTask": "关联异步任务",
"colCron": "Cron 表达式",
"colPayload": "执行参数 (Payload)",
"colEnabled": "启用状态",
"colActions": "操作",
"editSchedule": "修改定时任务",
"scheduleDialogDesc": "配置定时任务的调度参数和运行载荷。",
"scheduleName": "任务名称",
"scheduleNamePlaceholder": "例如:每日数据清理",
"associatedTask": "关联异步任务",
"cronExpression": "Cron 表达式",
"cronPlaceholder": "e.g. 0 */2 * * * 或 @daily",
"cronHint": "使用标准 5 位 Cron 字段格式(分钟、小时、日期、月份、星期几)。",
"scheduleActive": "启用状态",
"scheduleActiveDesc": "决定此定时任务是否会定时触发执行。",
"noParamsRequired": "所选任务类型不需要运行参数参数。",
"payloadConfig": "运行参数配置 (Payload)",
"paramOn": "开启",
"paramOff": "关闭",
"saveChanges": "保存修改",
"confirmCreate": "确认创建",
"deleteScheduleTitle": "删除定时任务",
"deleteScheduleDesc": "确定要删除此定时任务吗?该操作不可撤销,且会立即取消其在调度器中的调度计划。",
"cancel": "取消",
"confirmDelete": "确认删除",
"loadTaskTypesFailed": "加载任务类型失败",
"dispatchSuccess": "任务下发成功",
"dispatchSuccessDesc": "已成功将任务 {name} 加入队列:{taskId}",
"dispatchFailed": "任务下发失败",
"loadingTaskTypes": "加载任务类型中...",
"noTaskTypes": "暂无可用任务类型",
"taskType": "类型:",
"taskRetry": "重试:",
"executeNow": "立即执行",
"dispatchTask": "下发任务",
"dispatchTaskDesc": "配置任务参数并启动,任务将在后台异步执行。",
"executeTask": "执行任务",
"startTime": "开始时间",
"startTimeDesc": "选择同步的起始时间点",
"endTime": "结束时间",
"endTimeDesc": "选择同步的结束时间点",
"noParamsHint": "此任务无需额外配置参数,确认后将直接下发。",
"start": "启动",
"dispatching": "下发中",
"selectDate": "选择日期",
"logPrimaryDb": "日志主库",
"retentionDays": "保留天数",
"migrationStatus": "迁移状态",
"migrating": "迁移中",
"idle": "空闲",
"selectLogDb": "选择日志数据库",
"dbPostgresPrimary": "PostgreSQL(主库)",
"dbSqlitePrimary": "SQLite(主库)",
"dbClickhouse": "ClickHouse",
"taskTypeFilter": "任务类型",
"executionRecord": "执行记录"
},
"push": {
"pageTitle": "通知推送管理",
"eventsTab": "事件管理",
"historiesTab": "通知历史",
"settingsTab": "通道管理与设置",
"events": {
"eventUpdateSuccess": "事件更新成功",
"eventUpdateFailed": "事件更新失败",
"operationFailed": "操作失败",
"eventCreateSuccess": "事件创建成功",
"eventCreateFailed": "事件创建失败",
"configDeleteSuccess": "配置删除成功",
"configDeleteFailed": "配置删除失败",
"templateInvalidJson": "消息模板不是合法的 JSON 格式",
"selectSystemEvent": "请选择系统事件",
"selectAsyncTask": "请选择异步任务",
"addEvent": "新增通知事件",
"loadingEvents": "加载通知事件中...",
"noEvents": "暂无通知配置事件,请点击右上角新增",
"colEvent": "通知事件",
"colChannels": "关联渠道",
"colTargets": "推送目标",
"colStatus": "状态",
"colActions": "操作",
"taskBadge": "任务",
"noChannelSpecified": "未指定渠道",
"emailChannel": "邮件",
"configure": "配置",
"deleteEventConfirm": "确定要删除该通知事件配置吗?删除后无法恢复。",
"deleteEventTitle": "确认删除通知事件",
"confirmDelete": "确认删除",
"deleting": "删除中...",
"delete": "删除",
"addEventDialogTitle": "新增通知事件",
"addEventDialogDesc": "选择系统内置的事件并绑定推送渠道,创建后即可开始生效",
"eventType": "事件类型",
"builtinEventType": "系统内置事件",
"taskEventType": "任务完成事件",
"systemEvent": "系统事件",
"loadingSystemEvents": "加载系统事件中...",
"allBuiltinEventsConfigured": "所有内置事件都已配置,没有可新增的事件。",
"selectSystemEventPlaceholder": "请选择系统事件",
"systemAsyncTask": "系统异步任务",
"loadingAsyncTasks": "加载异步任务中...",
"noAvailableTasks": "暂无可用的系统任务。",
"selectAsyncTaskPlaceholder": "请选择异步任务",
"eventDescription": "事件说明:",
"noDescription": "无描述信息",
"taskDescription": "任务说明:",
"pushChannelsMulti": "推送渠道 (可多选)",
"selectConfiguredChannels": "选择已配置推送渠道",
"emailPush": "邮件推送",
"noAvailableChannels": "暂无可用渠道,请先在\"通道管理与设置\"中创建或启用。",
"pushTargets": "推送目标 (仅邮件等渠道需要)",
"pushTargetsPlaceholder": "多个目标用英文逗号分隔,例如:user1@test.com, user2@test.com",
"contentTemplate": "内容渲染模板 (JSON 格式)",
"taskTemplateVars": "支持变量:{{task_name}}, {{task_status}}, {{task_duration}}, {{user.username}}",
"eventTemplateVars": "支持变量:{{user.username}}, {{ip}}, {{time}}",
"enableStatus": "启用状态",
"enableStatusDesc": "创建后是否立即开始接收此事件的通知",
"cancel": "取消",
"enableSave": "启用保存",
"editEventDialogTitle": "事件通知渠道配置",
"editEventDialogDesc": "自定义本事件触发时,需要异步推送的渠道以及接收人邮箱等配置",
"eventName": "事件名称",
"eventKey": "事件键 (Key)",
"relatedAsyncTask": "关联异步任务",
"noAvailableChannelsEdit": "暂无可用渠道,请先在\"通道管理与设置\"中创建并启用。",
"saveChanges": "保存修改",
"taskCompleteTitle": "任务完成: {name}",
"taskCompleteContent": "异步任务 {{task_name}} 已完成。状态: {{task_status}},耗时: {{task_duration}} ms。"
},
"settings": {
"channelCreateSuccess": "通道创建成功",
"channelCreateFailed": "通道创建失败",
"channelUpdateSuccess": "通道更新成功",
"channelUpdateFailed": "通道更新失败",
"channelDeleteSuccess": "通道删除成功",
"channelDeleteFailed": "通道删除失败",
"channelNameRequired": "通道名称不能为空",
"channelNameFormat": "通道名称只能使用英文字母、数字和下划线",
"invalidChannelType": "无效的通道类型",
"httpsRequired": "地址必须以 https:// 开头以确保安全性",
"jsonFormatRequired": "请求体必须是合法的 JSON 格式",
"larkTemplateFormat": "自定义卡片模版必须是合法的 JSON 格式",
"sendingTestPush": "正在发送测试推送...",
"testPushSuccess": "测试推送发送成功,请前往对应平台确认。",
"connectivityTestFailed": "连通性测试失败",
"customPushChannels": "自定义推送通道",
"customPushChannelsDesc": "添加、配置及管理用于第三方 Webhook 对接的自定义数据推送通道",
"createChannel": "新建消息通道",
"loadingChannels": "加载消息通道中...",
"noCustomChannels": "暂无自定义通道配置,请点击右上角新建",
"colName": "名称",
"colType": "类型",
"colRemark": "备注",
"colStatus": "状态",
"colActions": "操作",
"noRemark": "无备注",
"test": "测试",
"edit": "编辑",
"deleteChannelConfirm": "确定要删除通道「{name}」吗?删除后无法恢复。",
"deleteChannelTitle": "确认删除通道",
"confirmDelete": "确认删除",
"deleting": "删除中...",
"delete": "删除",
"editChannelDialogTitle": "编辑消息通道",
"createChannelDialogTitle": "新建消息通道",
"channelDialogDesc": "配置自定义通知推送通道,支持以 POST 请求方式向第三方 Webhook 或推送服务投递数据",
"channelName": "名称",
"channelNamePlaceholder": "请输入通道名称,请仅使用英文字母和下划线,该名称必须唯一",
"channelNameHint": "通道唯一标识,创建后不可修改",
"channelRemark": "备注",
"channelRemarkPlaceholder": "请输入备注信息",
"channelType": "通道类型",
"selectChannelType": "选择通道类型",
"quickLoadTemplates": "快捷加载常用模版实例:",
"loadedFeishuTemplate": "已加载飞书 Webhook 模版",
"loadedDingTalkTemplate": "已加载钉钉机器人模版",
"loadedWeChatTemplate": "已加载企业微信机器人模版",
"loadedBarkTemplate": "已加载 Bark App 模版",
"cancel": "取消",
"confirm": "确定",
"sendTestNotification": "发送测试通知",
"sendTestNotificationDesc": "请输入消息测试的接收目标,点击发送后系统将通过此通道执行连通性推送测试",
"pushChannelName": "推送通道名称",
"testPushTarget": "测试推送目标 (对应模板变量 $to)",
"testPushTargetPlaceholder": "请输入测试推送接收人/目标标识,如 Bark Token、邮箱等",
"sendTest": "发送测试",
"fieldRequired": "{label}不能为空",
"configHelp": "{name}配置说明"
},
"histories": {
"searchPlaceholder": "输入事件键过滤...",
"sendStatus": "发送状态",
"allStatus": "全部状态",
"sendSuccess": "发送成功",
"sendFailed": "发送失败",
"colEvent": "事件",
"colChannel": "渠道",
"colTarget": "目标",
"colTitle": "标题",
"colLevel": "等级",
"colStatus": "状态",
"colTime": "时间",
"loadingHistories": "加载推送历史记录中...",
"noHistoryData": "无推送历史数据",
"emailChannel": "邮件",
"success": "成功",
"failed": "失败",
"totalRecords": "共 {total} 条历史记录",
"pushNotificationDetail": "推送通知详情",
"pushNotificationDetailDesc": "查看该条通知发送的详细审计信息与内容",
"eventIdentifier": "事件标识",
"sendChannel": "发送渠道",
"emailPush": "邮件推送",
"pushTarget": "推送目标",
"sendTime": "发送时间",
"notificationLevel": "通知等级",
"failureReason": "失败原因",
"notificationTitle": "通知标题",
"notificationContent": "通知内容",
"close": "关闭"
}
},
"messageGateway": {
"pageTitle": "消息通道",
"pageDescription": "配置实例级 Telegram / QQ 机器人,用户通过配对码绑定私聊身份。",
"addChannel": "添加通道",
"emptyTitle": "还没有消息通道",
"emptyDescription": "添加一个共享机器人,用户即可在资料页绑定并发送私聊消息。",
"enabled": "已启用",
"disabled": "已禁用",
"delete": "删除",
"deleteConfirmTitle": "删除通道?",
"deleteConfirmDescription": "将同时删除该通道下的绑定和未使用的配对码。此操作不可撤销。",
"createSuccess": "通道已创建",
"createFailed": "创建通道失败",
"updateSuccess": "通道已更新",
"updateFailed": "更新通道失败",
"deleteSuccess": "通道已删除",
"deleteFailed": "删除通道失败",
"testSuccess": "连通性测试通过",
"testFailed": "连通性测试失败",
"name": "名称",
"namePlaceholder": "例如:运营机器人",
"type": "类型",
"typeTelegram": "Telegram",
"typeQQ": "QQ",
"selectType": "选择通道类型",
"botToken": "Bot Token",
"botTokenPlaceholder": "从 BotFather 获取",
"baseUrl": "API 地址",
"baseUrlPlaceholder": "https://api.telegram.org",
"appId": "App ID",
"appSecret": "App Secret",
"portalHost": "开放平台域名",
"portalHostPlaceholder": "q.qq.com",
"keepSecretHint": "留空则保留已保存的密钥",
"cancel": "取消",
"create": "创建",
"testConnection": "测试连通性",
"loadFailed": "加载通道失败"
},
"database": {
"pageTitle": "数据管理",
"refreshData": "刷新数据",
"fetchOverviewFailed": "获取数据库概览失败",
"fetchTablesFailed": "获取数据库数据表列表失败",
"exportSuccess": "数据库导出成功",
"exportSuccessDesc": "已下载归档文件: {filename}",
"exportFailed": "数据库导出失败",
"dbType": "数据库类型",
"versionInfo": "版本信息",
"nameOrPath": "名称/路径",
"dbSize": "数据库大小",
"physicalTables": "物理数据表",
"activeConnections": "活跃连接数",
"featureArea": "功能区",
"featureAreaDesc": "数据库导出及自定义高级 SQL 执行终端",
"dbBackupExport": "数据库备份导出",
"dbBackupExportDesc": "直接导出并下载物理数据库镜像文件(SQLite 导出 .db,PostgreSQL 导出为打包的 .sql 文本文件)",
"preparing": "正在准备...",
"startExport": "开始导出",
"sqlQueryConsole": "SQL 查询控台",
"sqlQueryConsoleDesc": "打开在线 SQL 控制终端,执行原生的 SQL 进行数据筛选、更新、调试或性能优化",
"enterConsole": "进入控台",
"cache": {
"fetchCacheStatusFailed": "获取磁盘缓存状态失败",
"saveFailed": "保存失败",
"maxSizeMustBePositive": "最大容量限制必须是大于等于 1 的整数",
"ttlMustBeNonNegative": "默认过期时间必须是大于等于 0 的整数",
"saveSuccess": "保存成功",
"cachePolicyHotUpdated": "磁盘缓存策略已热更新",
"saveConfigFailed": "保存配置失败",
"clearSuccess": "清空成功",
"cacheDataCleared": "缓存数据已全部清除",
"clearCacheFailed": "清空缓存失败",
"cacheManagement": "缓存管理",
"cacheManagementDesc": "管理和监控系统级磁盘缓存的资源占用、生命周期及淘汰策略",
"refreshStatus": "刷新状态",
"runtimeStatus": "运行状态",
"usedSpace": "已用空间",
"cacheKeysCount": "缓存键数量",
"files": "个文件",
"cacheBaseDirectory": "缓存基准目录",
"clearCacheNow": "立即清空缓存",
"policyConfig": "策略配置",
"maxSizeLimit": "最大容量限制 (MB)",
"maxSizeHint": "当总大小超出该值时,自动触发淘汰算法",
"ttlLimit": "生存时间限制 (分钟)",
"ttlHint": "缓存项的最长存活时间,超期后将失效被清理",
"enableLru": "启用 LRU 淘汰机制",
"enableLruDesc": "在到达最大容量限制时,自动移除最久未被访问的缓存项。关闭该功能仅清理过期项。",
"saving": "正在保存...",
"saveSettings": "保存设置",
"noCacheStatus": "未加载到缓存状态信息",
"confirmClearAllCache": "确认清空所有缓存?",
"confirmClearDesc": "该操作将彻底清空磁盘目录下的全部缓存文件(包含临时解压、处理后的图片及各种块文件),重置键数量统计为 0。此操作不可撤销,且可能导致用户拉取资源时出现一过性的响应变慢。",
"cancel": "取消",
"clearing": "清理中...",
"confirmClear": "确认清空",
"unknownError": "未知错误",
"maxSizePlaceholder": "例如 100",
"ttlPlaceholder": "例如 60,0 表示永不过期"
},
"sql": {
"sqlExecSuccess": "SQL 执行成功",
"sqlExecFailed": "SQL 执行失败",
"sqlQueryTerminal": "SQL 查询终端",
"sqlEditor": "SQL 编辑器",
"quickTemplates": "快速模板:",
"selectPresetSQL": "选择预设 SQL",
"queryUsers": "查询用户 (SELECT users)",
"queryFiles": "查询文件 (SELECT uploads)",
"queryTaskExecutions": "查询任务流水 (SELECT task_executions)",
"sqliteVersion": "SQLite 版本 (SQLite only)",
"postgresVersion": "PostgreSQL 版本 (Postgres only)",
"running": "运行中...",
"run": "运行",
"executionOutput": "执行输出",
"type": "类型",
"duration": "耗时",
"executingQuery": "正在在数据库执行查询,请稍候...",
"queryResultEmpty": "查询结果为空",
"sqlExecSuccessTitle": "SQL 执行成功",
"affectedRows": "受影响行数: {rows} 行,耗时 {ms} 毫秒。",
"editorReady": "编辑器就绪,请在上方编写 SQL 并运行查看结果",
"unknownExecError": "未知执行错误",
"clearEditor": "清空编辑器",
"dragResize": "拖动调整大小",
"execErrorTitle": "SQL 执行报错 (Error):"
},
"tableBrowser": {
"tableBrowser": "数据表浏览器",
"tableBrowserDesc": "浏览数据库中的物理数据表详情及内容",
"selectTable": "选择数据表",
"noRecordsInTable": "表中无记录数据",
"totalRows": "总行数",
"records": "条记录",
"prevPage": "上一页",
"nextPage": "下一页",
"pageIndicator": "第 {current} / {total} 页",
"noTableSelected": "未选择数据表或表结构无法加载",
"fetchTableFailed": "获取数据表 {table} 数据失败",
"unknownError": "未知错误"
},
"unknownError": "未知错误",
"exportException": "导出异常"
},
"logs": {
"pageTitle": "系统日志",
"accessAnalytics": "访问分析",
"userAccessLogs": "用户访问日志",
"appRuntimeLogs": "应用运行日志",
"accessLogs": {
"clickhouseDisabled": "ClickHouse 未启用",
"clickhouseDisabledDesc": "当前系统配置未启用 ClickHouse 存储,系统不会收集用户访问日志。如需使用此功能,请在后端 config.yaml 配置文件中配置并启用 ClickHouse。",
"username": "用户名",
"usernamePlaceholder": "输入用户名搜索...",
"apiPath": "接口路径",
"pathPlaceholder": "模糊匹配路径...",
"startTime": "起始时间",
"endTime": "结束时间",
"search": "搜索",
"reset": "重置",
"loadingAccessLogs": "加载访问日志中...",
"noAccessLogs": "未查询到任何访问日志数据",
"colMethod": "请求方法",
"colPath": "路径",
"colUser": "用户",
"colIp": "IP",
"colStatus": "状态",
"colLatency": "耗时",
"colRequestTime": "请求时间",
"colDetail": "详情",
"unknownUser": "未知用户",
"paginationInfo": "共 {total} 条记录,当前第 {page}/{totalPages} 页",
"prevPage": "上一页",
"nextPage": "下一页",
"accessLogDetail": "访问日志详情",
"method": "请求方法",
"responseStatus": "响应状态",
"latency": "耗时",
"ipAddress": "IP 地址",
"user": "用户",
"noNickname": "无昵称",
"unknownGuest": "未知/游客",
"requestPath": "请求路径",
"requestTime": "请求时间",
"noLogSelected": "未选中日志明细",
"copiedToClipboard": "{subject}已复制到剪贴板",
"noHeaderData": "暂无头部数据",
"accessId": "访问 ID: {id}",
"copyUserAgent": "复制 User-Agent",
"copyHeaders": "复制 Headers"
},
"analytics": {
"clickhouseDisabled": "ClickHouse 未启用",
"clickhouseDisabledDesc": "当前系统配置未启用 ClickHouse 存储,系统不会收集用户访问日志。如需使用此功能,请在后端 config.yaml 配置文件中配置并启用 ClickHouse。",
"loadingAnalytics": "加载访问统计指标中...",
"totalRequests7d": "近 7 天总请求数",
"totalRequests7dDesc": "系统记录的所有成功认证的访问总频次",
"activeBrowserTypes": "活跃终端分类数",
"activeBrowserTypesDesc": "在一周内发起请求的浏览器代理大类统计",
"activeUsers": "活跃独立用户数",
"activeUsersDesc": "一周内累计发起高频请求的注册账户总量",
"weeklyAccessTrend": "一周访问量趋势",
"weeklyAccessTrendDesc": "展现系统最近 7 天内的每日 API 请求曲线",
"noTrendData": "暂无趋势数据",
"browserRanking": "使用的浏览器排行",
"browserRankingDesc": "基于请求头 User-Agent 智能分类的一周占比统计",
"noBrowserData": "暂无浏览器排行数据",
"topActiveUsers": "最活跃的用户排行 (Top 10)",
"topActiveUsersDesc": "统计最近一周发起接口访问请求数量最多的账户",
"noActiveUsersData": "暂无活跃用户数据",
"unknown": "未知",
"noNickname": "(无昵称)",
"requests": "次请求",
"fetchFailed": "获取数据统计失败",
"requestVolume": "请求量",
"requestCount": "请求次数",
"countTimes": "{count} 次 ({percent}%)"
},
"appLogs": {
"loading": "加载中...",
"loadOlderLogs": "加载更早日志",
"noLogs": "暂无日志",
"backToLatest": "回到最新",
"fetchFailed": "获取日志失败",
"loadOlderFailed": "加载更早日志失败"
}
},
"system": {
"pageTitle": "系统配置",
"configKey": "配置键",
"configValue": "配置值",
"required": "必需",
"configDescription": "配置描述",
"optionalDescription": "可选描述",
"publicVisibility": "公共可见",
"configType": "配置类型",
"systemConfig": "系统配置",
"businessConfig": "业务配置",
"createdAt": "创建时间",
"emptyDescription": "未发现系统配置",
"loadingDescription": "配置加载中",
"visible": "可见",
"invisible": "不可见",
"description": "描述"
},
"settings": {
"pageTitle": "系统设置",
"tabs": {
"security": "安全设置",
"operation": "业务设置",
"system": "系统设置",
"other": "其他设置",
"status": "系统状态",
"info": "系统信息",
"openflare": "OpenFlare"
},
"status": {
"pageTitle": "系统状态",
"fetchFailed": "获取系统状态失败",
"unknownRequestError": "请求时发生未知错误",
"autoRefresh": "自动刷新",
"refresh": "刷新",
"cards": {
"serviceOverview": "服务概览",
"serviceOverviewDesc": "服务的基础生命指标",
"memoryStats": "内存统计",
"memoryStatsDesc": "主内存消耗概览",
"heapStack": "堆/栈详情",
"heapStackDesc": "运行时堆栈内存空间细节",
"internalStructs": "底层及结构体内存",
"internalStructsDesc": "运行时底层管理结构体开销",
"gcAndAlloc": "垃圾回收与分配计数",
"gcAndAllocDesc": "GC 历史数据与分配频次"
},
"metrics": {
"uptime": "服务运行时间",
"goroutines": "当前 Goroutines 数量",
"heapObjects": "Heap 对象数量",
"alloc": "当前内存使用量",
"totalAlloc": "所有已分配的内存",
"sys": "内存占用量",
"nextGc": "下次 GC 内存回收量",
"memoryUsagePercent": "当前使用率 (Alloc / Sys)",
"heapAlloc": "当前 Heap 内存使用量",
"heapSys": "Heap 内存占用量",
"heapIdle": "Heap 内存空闲量",
"heapInuse": "正在使用的 Heap 内存",
"heapReleased": "已释放的 Heap 内存",
"stackInuse": "启动 Stack 使用量",
"stackSys": "已分配的 Stack 内存",
"mspanInuse": "MSpan 结构内存使用量",
"mspanSys": "已分配的 MSpan 结构内存",
"mcacheInuse": "MCache 结构内存使用量",
"mcacheSys": "已分配的 MCache 结构内存",
"buckHashSys": "已分配的剖析哈希表内存",
"gcSys": "已分配的 GC 元数据内存",
"otherSys": "其它已分配的系统内存",
"numGc": "GC 执行次数",
"lastGcTime": "距离上次 GC 时间",
"pauseTotalNs": "GC 暂停时间总量",
"lastPause": "上次 GC 暂停时间",
"mallocs": "内存分配次数",
"frees": "内存释放次数",
"lookups": "指针查找次数"
}
}
},
"demo": {
"pageTitle": "开发规范示例",
"specTitle": "规范说明",
"specDescription": "此页面展示了后台 Sidebar 关联页面的标准标题栏布局,供开发参考。",
"coreSpecTitle": "核心规范细节与编写原则:",
"rules": {
"structureFocus": {
"title": "结构专注",
"description": ":页面标题区必须保持绝对干净。请不要在标题下方放置任何描述段落或小字副标题,让页面在视线进入时保持极简与信息纯粹。"
},
"containerAlignment": {
"title": "容器与上边距对齐",
"description": "作为标题行基础容器(不含下边框),外层统一使用",
"description2": "进行上边距的视觉对齐,确保切换菜单时顶部高度感一致。"
},
"iconPresentation": {
"title": "图标呈现",
"description": "样式。禁止为图标包裹任何背景色小卡片、圆角或装饰性边框。"
},
"textStyle": {
"title": "文本样式标准",
"description": ",禁用字重加粗(如",
"description2": ")或任何渐变色,保证全站字体一致性。"
},
"tabsModular": {
"title": "Tabs 模块化拆分",
"description": "或就近放在",
"description2": "下),主页面文件只负责维护当前 Tab 的激活状态及外层骨架布局。"
},
"complexityDriven": {
"title": "复杂度驱动的区块拆分",
"description": "行时,必须将高密度区块拆分为子组件。路由专属、不复用的子组件应放在对应路由的特征目录中(如",
"description2": "),只有真正跨页面复用的组件才进入全局",
"description3": "。典型标杆案例参考\"数据管理\" ("
}
},
"tabs": {
"dashboard": "仪表盘与指标卡片",
"table": "数据表格规范",
"controls": "输入控件与表单"
},
"controls": {
"formDemoTitle": "表单与输入框交互演示",
"formDemoDesc": "包含按钮变体、下拉选择、多选框及基础输入框的标准样式",
"taskName": "任务名称",
"taskNamePlaceholder": "输入要创建的任务描述...",
"taskNameHint": "任务名称将用于后台执行记录的可读性显示",
"taskCategory": "任务分类",
"categoryDatabase": "数据库运维",
"categorySync": "数据批量同步",
"categoryCleanup": "过期磁盘清理",
"allowNotify": "允许触发异步通知推送",
"allowNotifyDesc": "勾选后,在当前后台任务顺利执行结束时,会关联派发多渠道通知推送。",
"buttonStyles": "按钮样式对齐:",
"primaryButton": "主要操作 (Primary)",
"secondaryButton": "次要操作 (Secondary)",
"outlineButton": "辅助线框 (Outline)",
"ghostButton": "幽灵按钮 (Ghost)",
"formDesignSpec": "表单设计规范",
"spec": {
"unifiedHeight": "1. 统一控件高度与投影:",
"checkboxAlignment": "2. Checkbox 与文本的对齐:",
"buttonStrategy": "3. 按钮使用策略:"
}
},
"table": {
"mockData": {
"syncExport": "用户信息批量同步导出",
"dbBackup": "系统数据库每周自动备份归档",
"s3Cleanup": "远端S3过期缓存对象自动清理任务"
},
"mockType": {
"dataSync": "数据同步",
"dbOps": "数据库运维",
"diskCleanup": "磁盘清理"
},
"mockDuration": {
"running": "在执行中"
},
"searchPlaceholder": "输入任务名称搜索...",
"filter": "过滤",
"newTask": "新建任务",
"columns": {
"taskId": "任务编号",
"taskName": "执行任务名称",
"taskType": "任务类型",
"status": "状态",
"duration": "执行耗时",
"triggerTime": "触发时间",
"actions": "操作"
},
"status": {
"success": "成功",
"running": "运行中",
"failed": "失败"
},
"tableDesignSpec": "表格设计规范与代码模板",
"spec": {
"container": "表格容器必须统一使用带有虚线边框的容器,即类名:",
"headerBg": "表头背景设为",
"headerStyle": "。表头表项字号统一为小字粗体",
"cellDivider": "单元格行与列之间使用虚线分割(",
"rowHover": ")。表格行悬浮交互采用温和过渡色",
"monoFont": "编码、主键或唯一 ID 类字段一律采用等宽字体呈现:",
"badgeStyle": "状态标签(Badge)尽量圆角化(",
"badgeStyle2": "),并以浅背景配以各自对应的图标圆点,以实现现代、高对比度的视觉质感。"
}
},
"dashboard": {
"cpuUsage": "容器 CPU 使用率",
"cpuStatus": "容器运行正常,负载平稳",
"storageUsage": "存储已用容量",
"storageStatus": "数据已同步远端 S3 存储桶,支持自动过期",
"database": "物理数据库",
"activeConnections": "活跃连接:",
"totalTables": "总表数量:",
"dbStatus": "链接池自动维护中,最大连接限制为 100",
"dashboardDesignSpec": "指标卡片 & 仪表盘设计规范",
"spec": {
"dashedBorder": "指标卡片统一采用",
"dashedBorder2": "作为边框和投影。",
"headerLayout": "头部使用",
"headerLayout2": "布局,左侧为标题小字,右侧为直接呈现的 Lucide 图标。",
"valueStyle": "数值强调使用且仅使用",
"valueStyle2": "展示。",
"progressBar": "进度条使用",
"progressBar2": "细条高度,不喧宾夺主。",
"secondaryText": "底部的次要说明信息必须统一使用",
"secondaryText2": "等辅助类。"
}
}
}
},
"docs": {
"backToHome": "返回首页",
"sectionCount": "共 {count} 个章节",
"lastUpdated": "最后更新",
"copied": "已复制",
"copyMarkdown": "复制 Markdown",
"toc": "目录",
"haveQuestions": "还有疑问?",
"contactSupport": "联系客服支持",
"api": {
"title": "接口文档",
"description": "Wavelet Platform 后端 API 完整参考,涵盖认证、用户、令牌与配置管理。",
"field": "字段",
"type": "类型",
"descriptionLabel": "说明",
"endpoint": "端点",
"desc": "描述",
"param": "参数",
"required": "必需",
"yes": "是",
"no": "否",
"username": "用户名",
"password": "密码",
"optional": "可选",
"default": "默认",
"section1": {
"title": "通用约定",
"desc": "所有 API 响应遵循统一信封格式。",
"responseFormat": "响应格式",
"responseFormatDesc": "所有接口均返回以下 JSON 结构:",
"errorMsgDesc": "成功时为空字符串,失败时为可读错误信息",
"dataDesc": "业务数据,结构因接口而异",
"successExample": "成功响应示例",
"failExample": "失败响应示例",
"failExampleErrorMsg": "错误信息",
"authentication": "认证方式",
"authenticationDesc": "系统支持两种认证方式,所有受保护的接口均需携带其一:",
"sessionCredential": "Session 凭证",
"sessionCredentialDesc": "登录后由服务端 Set-Cookie 返回,浏览器自动携带。",
"accessTokenCredential": "AccessToken 凭证",
"accessTokenCredentialDesc": "通过 Header 传递,适用于 API 调用与第三方集成:",
"supportedHeaders": "支持的 Header"
},
"section2": {
"title": "认证接口",
"register": "注册",
"registerDesc": "创建新用户账号并自动登录。",
"usernameDesc": "用户名,唯一,至少 3 位",
"passwordDesc": "密码,至少 8 位",
"nicknameDesc": "昵称(可选)",
"passwordLogin": "密码登录",
"passwordLoginDesc": "使用邮箱/用户名 + 密码登录,成功后 Set-Cookie。",
"logout": "登出",
"logoutDesc": "销毁当前会话。",
"getProfile": "获取当前用户信息",
"getProfileDesc": "返回当前已登录用户的完整档案。"
},
"section3": {
"title": "访问令牌管理",
"desc": "管理个人 API 访问令牌(AccessToken),用于无浏览器场景的 API 调用。",
"listTokens": "列出令牌",
"listTokensDesc": "获取当前用户的所有活跃访问令牌。",
"createToken": "创建令牌",
"tokenName": "令牌名称",
"createTokenDesc": "创建新的访问令牌,返回一次性密钥。",
"isAdminDesc": "是否授予管理员权限(默认 false)",
"endpoint": "端点",
"successResponseExample": "成功响应示例",
"deleteToken": "删除令牌",
"deleteTokenDesc": "撤销指定的访问令牌。",
"rotateToken": "轮换令牌",
"rotateTokenDesc": "为指定令牌生成新密钥,旧密钥立即失效。"
},
"section4": {
"title": "系统配置管理",
"publicConfig": "获取公开配置",
"publicConfigDesc": "返回所有标记为公开的系统配置项,无需认证。",
"responseExample": "响应示例",
"adminConfigs": "管理员配置接口",
"adminConfigsDesc": "以下接口需要管理员权限。",
"getConfigList": "获取配置列表",
"createConfig": "创建配置",
"updateConfig": "更新配置",
"deleteConfig": "删除配置"
}
},
"howToUse": {
"title": "使用文档",
"description": "Wavelet Platform 快速上手指南,涵盖认证、令牌、配置、任务与可观测性。",
"section1": {
"title": "系统架构概览",
"desc": "Wavelet Platform 采用 Go + Next.js 前后端分离架构。",
"architecture": "技术栈",
"architectureDesc": "Go 1.25+ / Gin / GORM / PostgreSQL / Redis / Asynq",
"authSystem": "认证系统",
"authSystemDesc": "支持密码登录 + OIDC 第三方认证",
"accessToken": "访问令牌",
"accessTokenDesc": "用于 API 调用的 Personal Access Token",
"observability": "可观测性",
"observabilityDesc": "OpenTelemetry + 结构化日志"
},
"section2": {
"title": "认证与注册",
"desc": "系统支持多种认证方式,可通过管理后台灵活配置。",
"passwordAuth": "密码认证",
"selfRegister": "自主注册",
"selfRegisterDesc": "用户可通过注册页面创建账号。",
"bcryptDesc": "密码使用 bcrypt 加密存储。",
"switchControl": "开关控制",
"switchControlDesc": "管理员可在后台独立控制:",
"oidc": "OIDC 第三方登录",
"oidcDesc": "支持配置任意 OIDC 兼容的认证源(如 Google、GitHub、企业 SSO)。",
"oidcStep1": "在「系统设置 → 安全设置」中新增认证源",
"oidcStep2": "填写 Discovery URL、Client ID、Client Secret",
"oidcStep3": "启用后,登录页将自动显示对应入口"
},
"section3": {
"title": "访问令牌 (AccessToken)",
"desc": "用于无浏览器场景的 API 调用。",
"generation": "生成与管理",
"oneTimeDisplay": "一次性显示",
"oneTimeDisplayDesc": "创建令牌后,密钥仅显示一次。",
"oneTimeDisplayHint": "请务必在创建后立即复制保存。",
"secureHash": "安全存储",
"secureHashDesc": "系统仅存储令牌的 SHA-256 哈希,原始密钥不可恢复。",
"headerUsage": "使用方式",
"headerUsageDesc": "在请求 Header 中携带令牌:",
"bearerHeader": "Bearer Token 方式",
"customHeader": "自定义 Header 方式"
},
"section4": {
"title": "系统配置",
"desc": "通过管理后台或 API 动态管理系统配置。",
"cacheAccel": "缓存加速",
"cacheAccelDesc": "公开配置项支持多级缓存(内存 → Redis → 数据库),高频读取场景下性能优异。",
"coreConfigs": "核心配置项",
"siteName": "站点名称",
"passwordLoginEnabled": "密码登录开关",
"registrationEnabled": "注册开关",
"maxApiKeys": "最大 API Key 数量"
},
"section5": {
"title": "异步任务",
"desc": "基于 Asynq 的分布式任务队列系统。",
"scheduler": "定时任务 (Scheduler)",
"schedulerDesc": "支持 Cron 表达式配置定时任务。",
"worker": "Worker",
"workerDesc": "后台 Worker 进程负责消费和执行任务。"
},
"section6": {
"title": "可观测性",
"desc": "内置 OpenTelemetry 支持。",
"tracing": "链路追踪",
"tracingDesc": "支持将 Trace 数据导出到 Jaeger、Zipkin 等后端。",
"structuredLog": "结构化日志",
"structuredLogDesc": "基于 Zap 的高性能结构化日志,支持按级别输出。"
}
},
"terms": {
"title": "服务协议",
"description": "使用 Wavelet Platform 前,请仔细阅读以下服务条款。",
"section1": {
"title": "总则",
"subject": "协议主体",
"subjectDesc": "本协议是您与 Wavelet Platform 运营方之间关于使用平台服务所订立的协议。",
"readCarefully": "请仔细阅读",
"readCarefullyDesc": "请您在使用服务前仔细阅读本协议全部内容。如您不同意本协议的任何条款,请勿使用本平台服务。",
"composition": "协议构成",
"compositionDesc": "本协议正文包括协议正文、平台已经发布或将来可能发布的各类规则。所有规则为本协议不可分割的组成部分,与协议正文具有同等法律效力。"
},
"section2": {
"title": "服务内容",
"liability": "责任范围",
"liabilityDesc": "本平台仅提供技术基础设施和开发工具服务。用户应自行承担使用平台过程中产生的所有责任。"
},
"section3": {
"title": "用户账号",
"accountSystem": "账号体系",
"accountSystemDesc": "用户在本平台注册并获得账号后,应妥善保管其账号和密码。用户应对其账号项下的所有行为负责。",
"securityResponsibility": "安全责任",
"passwordSecurity": "密码安全",
"passwordSecurityDesc": "用户应使用安全强度足够的密码,并定期更换。因用户密码保管不当导致的损失,由用户自行承担。",
"tokenSecurity": "令牌安全",
"tokenSecurityDesc": "访问令牌(AccessToken)等同于账号凭证,用户应妥善保管。",
"tokenLeakLiability": "因令牌泄露导致的任何损失,由用户自行承担。"
},
"section4": {
"title": "使用规范",
"desc": "用户在使用本平台服务时,必须遵守以下规范:",
"redLine": "禁止行为红线",
"nationalSecurity": "危害国家安全",
"nationalSecurityDesc": "不得利用平台服务制作、复制、发布含有危害国家安全的信息。",
"illegalInfo": "违法信息",
"illegalInfoDesc": "不得制作、复制、发布违反国家法律法规的信息。",
"harmfulContent": "有害内容",
"harmfulContentDesc": "不得发布含有骚扰、侮辱、恐吓或其他有害内容的信息。",
"ipInfringement": "知识产权侵权",
"ipInfringementDesc": "不得侵犯他人知识产权、商业秘密等合法权益。",
"otherIllegal": "其他违法行为",
"otherIllegalDesc": "不得利用平台服务从事其他违反法律法规的行为。",
"enforcement": "违规处理",
"enforcementDesc": "如用户违反上述规范,平台有权采取以下措施:",
"enforcementAction": "警告、暂停或终止服务"
},
"section5": {
"title": "免责声明",
"basicDisclaimer": "基本免责",
"basicDisclaimerDesc": "平台将尽最大努力确保服务的安全性和稳定性,但不对以下情形承担责任:",
"techInterruption": "技术中断",
"techInterruptionDesc": "因以下原因导致的服务中断或数据丢失:",
"naturalDisaster": "自然灾害等不可抗力",
"govAction": "政府行为或法律法规变更",
"telecomFailure": "电信运营商故障",
"hacking": "黑客攻击或计算机病毒"
},
"section6": {
"title": "法律适用与争议解决",
"applicableLaw": "适用法律",
"applicableLawDesc": "本协议的签订、履行和解释均适用:",
"lawName": "中华人民共和国法律",
"lawScope": "不含冲突法规则",
"disputeResolution": "争议解决",
"disputeResolutionDesc": "因本协议引起的或与本协议有关的任何争议,双方应友好协商解决。协商不成的,任何一方均有权向有管辖权的人民法院提起诉讼。"
}
},
"privacy": {
"title": "隐私政策",
"description": "Wavelet Platform 重视用户隐私保护。本政策说明我们如何收集、使用和保护您的个人信息。",
"descriptionRights": "请在使用我们的服务前仔细阅读本政策。",
"section1": {
"title": "信息收集",
"desc": "我们收集以下类型的信息:",
"authInfo": "认证信息",
"authInfoDesc": "包括用户名、邮箱地址、加密后的密码哈希。",
"authInfoNote": "我们不会存储您的明文密码。",
"logInfo": "访问日志",
"logInfoDesc": "包括 IP 地址、浏览器类型、访问时间、请求路径。"
},
"section2": {
"title": "信息使用",
"desc": "我们收集的信息用于以下目的:",
"storageSecurity": "存储安全",
"storageSecurityDesc": "所有用户数据均加密存储于安全的服务器环境中。",
"encryption": "加密措施",
"encryptionDesc": "密码使用 bcrypt 单向哈希加密,令牌使用 SHA-256 哈希存储。",
"accessControl": "访问控制",
"accessControlDesc": "严格的权限管理机制确保只有授权人员才能访问用户数据。"
},
"section3": {
"title": "信息使用目的",
"desc": "我们收集的信息将用于以下目的:",
"identity": "身份验证",
"identityDesc": "验证用户身份,确保账号安全。",
"business": "业务运营",
"businessDesc": "提供、维护和改进我们的服务。",
"riskControl": "风险控制",
"riskControlDesc": "检测、预防和处理安全风险及欺诈行为。",
"prohibited": "禁止用途",
"prohibitedDesc": "我们承诺不会将用户信息用于以下用途:出售给第三方、发送未经许可的商业推广。"
},
"section4": {
"title": "信息共享与披露",
"sharingPrinciple": "共享原则",
"sharingPrincipleDesc": "未经用户同意,我们不会向第三方共享用户个人信息,但以下情况除外:",
"sharingException1": "法律法规要求、政府机关依法定程序调取",
"sharingException2": "为保护平台或公众的合法权益所必需",
"transfer": "信息转让",
"transferDesc": "如平台发生合并、收购等情形,我们会要求新的持有者继续受本政策约束。"
},
"section5": {
"title": "用户权利",
"desc": "用户对其个人信息享有以下权利:",
"viewManage": "查看与管理",
"viewManageDesc": "用户可随时在个人设置中查看和修改其个人信息。",
"deleteAccount": "账号删除",
"deleteAccountDesc": "用户可申请删除其账号及关联的所有个人数据。"
},
"section6": {
"title": "政策更新",
"desc": "我们可能会不时更新本隐私政策。政策更新后,我们会在平台上发布通知。",
"notification": "重大变更将通过站内通知或邮件方式告知用户。"
}
}
},
"home": {
"banner": {
"description": "这是一个通用的二次开发基础平台,内置用户管理、认证鉴权、文件存储、任务调度、通知推送和可观测性等常用功能模块,帮助开发者快速启动新项目。",
"getStarted": "快速开始",
"hideHint": "收起提示"
},
"navigation": {
"title": "导航"
},
"quickLinks": {
"profile": {
"title": "个人资料",
"description": "查看和编辑您的账户信息"
},
"apiDocs": {
"title": "接口文档",
"description": "API 接口完整参考"
},
"userDocs": {
"title": "使用文档",
"description": "快速上手指南"
}
},
"adminLinks": {
"settings": {
"title": "系统设置",
"description": "配置系统安全、业务与外观参数"
},
"systemConfig": {
"title": "系统配置",
"description": "管理 Key-Value 系统配置项"
},
"userManagement": {
"title": "用户管理",
"description": "查看和管理所有注册用户"
},
"tasks": {
"title": "任务管理",
"description": "异步任务队列与定时任务调度"
},
"logs": {
"title": "系统日志",
"description": "用户访问日志与应用运行日志"
}
},
"jumpNow": "立即跳转",
"enterNow": "立即进入",
"adminConsole": "管理后台",
"developerSection": {
"heading": "开发者友好",
"description": "内置完整的 RESTful API 文档、Swagger UI 与 TypeScript SDK 示例,帮助您快速集成。",
"features": {
"restful": "完整 RESTful API",
"swagger": "在线 Swagger 文档",
"typescript": "TypeScript SDK 示例",
"examples": "丰富的使用示例"
},
"apiDocs": "查看接口文档",
"codeComment": "// 快速开始 — API 调用示例",
"codeQuickStart": "快速开始"
},
"hero": {
"subtitle": "内置用户认证、文件存储、任务调度",
"subtitleLine2": "通知推送与可观测性,帮助您快速启动下一个项目。",
"getStarted": "快速开始",
"learnMore": "了解更多",
"features": {
"readyToUse": "开箱即用",
"highlyExtensible": "高度可扩展",
"industrialGrade": "工业级品质"
}
},
"footer": {
"description": "通用二次开发标准范式平台",
"product": "产品",
"dashboard": "控制台",
"personalSettings": "个人设置",
"development": "开发",
"quickStart": "快速开始",
"apiDocs": "接口文档",
"sourceCode": "源代码",
"community": "社区",
"discussions": "Discussions",
"privacyPolicy": "隐私政策",
"termsOfService": "服务条款"
}
},
"files": {
"uploadSuccess": "文件上传成功",
"uploadFailed": "上传失败",
"deleteSuccess": "文件已成功删除",
"deleteFailed": "删除失败",
"searchPlaceholder": "搜索文件名...",
"private": "私有",
"public": "公开",
"uploading": "正在上传...",
"uploadFile": "上传文件",
"noFiles": "还没有上传文件",
"noMatchingFiles": "未搜索到匹配的文件",
"uploadFirstFile": "上传您的第一个文件,支持图片、视频、文档和压缩包等格式。",
"selectFileUpload": "选择文件上传",
"downloadFile": "下载文件",
"deleteFile": "删除文件",
"prevPage": "上一页",
"nextPage": "下一页",
"confirmDeleteFile": "确认删除文件",
"confirmDeleteFileDesc": "确定要删除文件「{name}」吗?删除后此文件将无法恢复。",
"cancel": "取消",
"confirmDelete": "确认删除",
"myFiles": "我的文件"
},
"general": {
"manage": {
"saveSuccess": "保存成功",
"saveFailed": "保存失败",
"unknownError": "未知错误",
"deleteSuccess": "删除成功",
"deleteFailed": "删除失败",
"loading": "加载中",
"noData": "暂无数据",
"configList": "配置列表",
"confirmDelete": "确认删除?",
"confirmDeleteDesc": "此操作无法撤销。这将永久删除该配置。",
"cancel": "取消",
"confirmDeleteAction": "确认删除",
"configInfo": "配置信息",
"selectConfigToView": "请选择配置查看详情",
"updating": "更新中",
"update": "更新",
"actions": "操作"
},
"passwordDialog": {
"enterPassword": "请输入密码",
"enterPasswordDesc": "为了您的账户安全,请输入6位认证密码进行验证",
"cancel": "取消",
"verifying": "验证中...",
"confirm": "确认"
}
},
"contexts": {
"adminUsers": {
"userStatusChanged": "已{action}用户 {username}",
"enabled": "启用",
"disabled": "禁用",
"updateStatusFailed": "更新状态失败",
"userCreated": "已成功创建用户 {username}",
"createUserFailed": "创建用户失败",
"userDeleted": "已删除用户 {username}",
"deleteUserFailed": "删除用户失败",
"updateUserSuccess": "更新用户信息成功",
"updateUserFailed": "更新用户信息失败"
},
"admin": {
"loadConfigFailed": "加载系统配置失败",
"updateConfigFailed": "更新系统配置失败"
},
"user": {
"getUserInfoFailed": "获取用户信息失败",
"logoutFailed": "登出失败"
}
},
"notFound": {
"description": "抱歉,您访问的页面似已迷失在数字星云中。请检查路径或返回安全地带。",
"previousPage": "上一页",
"home": "首页"
},
"providers": {
"titleUpdater": {
"login": "登录",
"register": "注册",
"admin": "后台管理",
"dashboard": "控制台"
}
},
"metadata": {
"title": "OpenFlare",
"description": "OpenFlare 边缘节点与反向代理管理平台"
},
"dashboard": {
"title": "总览",
"generatedAt": "数据生成于 {time}",
"refresh": "刷新",
"loadingTitle": "加载总览数据",
"loadingDesc": "正在聚合节点健康、流量与容量指标...",
"loadFailed": "总览看板加载失败:{error}",
"emptyTitle": "暂无总览数据",
"emptyDesc": "系统已经启动,但还没有可展示的总览聚合结果。",
"requestFailed": "请求失败,请稍后重试。",
"stats": {
"requests24h": "24h 请求量",
"requestsMeta": "24h 独立访客 {visitors} · 错误 {errors} · 估算 QPS {qps}",
"clusterCapacity": "集群容量",
"avgMemoryHighLoad": "平均内存 {memory} · 高负载节点 CPU {cpu} / 内存 {memoryNodes} / 存储 {storage}",
"nodeOverview": "节点概览",
"onlineOf": "/ {total} 在线",
"pending": "待接入 {count}",
"unhealthyOffline": "异常 {unhealthy} · 离线 {offline}"
},
"world": {
"title": "全球态势板",
"description": "汇总节点分布、来源国家热度与最近窗口运行状态。",
"legendSource": "来源",
"legendHealthy": "正常",
"legendPressure": "承压",
"legendUnhealthy": "异常",
"modeVisitorSource": "访客来源",
"modeNodeCoords": "节点坐标",
"modeCoverage": "覆盖信号",
"onlineCoverage": "在线覆盖",
"onlineHint": "{online}/{total} 在线",
"runHealth": "运行健康",
"unhealthyCount": "{count} 个异常",
"requests24h": "24小时请求",
"qpsReported": "QPS {qps} · {count} 个节点上报",
"nodeCoords": "节点坐标",
"sourceCountries": "{count} 个来源国家",
"fallbackPins": "未配置时使用预设落点",
"avgCpu": "平均 CPU",
"highCount": "{count} 个偏高",
"avgMemory": "平均内存",
"highStorage": "高存储",
"offlinePending": "{offline} 离线 · {pending} 待接入",
"mapPreparing": "地图准备中",
"mapPreparingDesc": "进入可视区域后加载",
"noNodesOverlay": "暂无节点,接入后将展示地理分布"
},
"map": {
"sourceRequests": "最近 24 小时来源请求 {count}",
"presetPin": "预设落点",
"requestsErrors": "请求量 {requests} · 错误数 {errors}",
"eventsStatus": "活动事件 {events} · 节点状态 {status}",
"openrestyStatus": "OpenResty 状态 {status}",
"loadFailed": "全球地图加载失败",
"loading": "全球地图加载中",
"loadFailedDesc": "ECharts 世界地图资源未能成功注册,请稍后刷新重试。",
"loadingDesc": "正在按需初始化全球地图,这一步会延后到首屏内容稳定后执行。",
"measuring": "正在测量地图容器尺寸..."
},
"trafficTrend": {
"title": "24 小时请求趋势",
"description": "按小时拆分请求总量与 2xx/4xx/5xx 状态码请求量,判断各状态是否异常抬升。",
"summaryHint": "近 24 小时",
"requests": "请求量",
"status2xx": "2xx 请求",
"status4xx": "4xx 请求",
"status5xx": "5xx 请求"
},
"capacityTrend": {
"title": "24 小时容量趋势",
"description": "按小时聚合 CPU 与内存使用率,判断整体容量是否持续紧张。",
"avgCpu": "平均 CPU",
"avgMemory": "平均内存"
},
"trafficCapacity": {
"title": "24 小时业务流量与容量趋势",
"networkHint": "近 24 小时 · 来自访问日志",
"received": "接收数据",
"provided": "已提供数据",
"capacityHint": "近 24 小时 · 宿主机容量 · 平均值"
},
"distributions": {
"sourceTitle": "来源分布",
"sourceDesc": "聚合最近 24 小时主要来源国家。",
"sourceEmpty": "暂无来源分布数据",
"statusTitle": "状态码分布",
"statusDesc": "快速判断成功响应是否仍是主流,以及错误码是否有抬升。",
"statusEmpty": "暂无状态码分布",
"httpLabel": "HTTP {code}",
"domainTitle": "Top Domain",
"domainDesc": "观察主要流量集中在哪些域名。",
"domainEmpty": "暂无域名分布"
},
"nodeHealth": {
"title": "节点健康列表",
"description": "按异常数量和资源压力排序。",
"openNodes": "进入节点页",
"emptyTitle": "暂无节点",
"emptyDesc": "节点接入后,这里会展示系统健康与容量摘要。",
"colNode": "节点",
"colStatus": "状态",
"colCpuMem": "CPU / 内存",
"colReqErr": "请求 / 错误",
"colEvents": "活动异常",
"colHeartbeat": "最近心跳",
"colActions": "操作",
"noGeo": "未配置地图点位",
"wsConnected": "WS 已连接",
"na": "暂无",
"detail": "详情"
},
"nodeRank": {
"title": "Top 节点榜单",
"traffic": "流量最高节点",
"trafficEmpty": "暂无流量榜单",
"pressure": "容量压力节点",
"pressureEmpty": "暂无容量压力数据"
}
},
"nodes": {
"title": "节点管理",
"applyLogs": "应用记录",
"create": "新增节点",
"listTitle": "节点列表",
"refreshNow": "立即刷新",
"loadingList": "加载节点列表中...",
"emptyAll": "暂无节点,请先创建一个节点。",
"emptyFilter": "当前筛选无结果",
"updated": "节点已更新",
"created": "节点已创建",
"deleted": "节点已删除",
"deleteTitle": "确认删除节点",
"deleteDesc": "确认删除节点「{name}」吗?删除后该节点需要重新创建并重新接入。",
"deleting": "删除中...",
"confirmDelete": "确认删除",
"edit": "编辑",
"delete": "删除",
"refresh": "刷新",
"detail": "详情",
"na": "暂无",
"wsConnected": "WS 已连接",
"wsEstablished": "WebSocket 长连接已建立",
"requestFailed": "请求失败,请稍后重试。",
"unknown": "未知",
"running": "运行中",
"liveConfig": "实时配置",
"notApplied": "未应用",
"enabled": "已启用",
"manual": "手动",
"lockedSuffix": "(已锁定)",
"noGeo": "未配置地图点位",
"notConfigured": "未配置",
"ipLine": "IP:{ip}",
"locationLine": "位置:{location}",
"backToList": "返回节点列表",
"missingId": "缺少节点 ID,请从节点列表进入详情页。",
"loadingDetail": "加载节点详情中...",
"notFound": "节点不存在,可能已被删除或 ID 无效。",
"syncing": "同步中...",
"forceSync": "强制同步",
"dispatching": "下发中...",
"viewUpgrade": "查看升级",
"tabOverview": "概览",
"tabManage": "状态与部署",
"kpiNodeId": "节点 ID",
"kpiLastSeen": "最近心跳",
"kpiCurrentConfig": "当前配置",
"filter": {
"all": "全部节点",
"descAll": "当前展示全部节点。",
"descRelay": "当前仅展示 Relay 节点。",
"descTunnel": "当前仅展示 Tunnel 节点。",
"descEdge": "当前仅展示 Edge 节点。"
},
"status": {
"online": "在线",
"pending": "待接入",
"offline": "离线",
"running": "运行中",
"wsConnected": "WS 已连接"
},
"apply": {
"success": "成功",
"warning": "警告",
"failed": "失败",
"none": "暂无"
},
"health": {
"healthy": "健康",
"unhealthy": "异常",
"unknown": "未知"
},
"relative": {
"justNow": "刚刚",
"minutesAgo": "{count} 分钟前",
"hoursAgo": "{count} 小时前",
"daysAgo": "{count} 天前",
"monthsAgo": "{count} 个月前"
},
"uptime": {
"daysHours": "{days} 天 {hours} 小时",
"hoursMinutes": "{hours} 小时 {minutes} 分钟",
"minutes": "{minutes} 分钟"
},
"channel": {
"preview": "预览版",
"stable": "正式版"
},
"table": {
"node": "节点",
"status": "状态",
"version": "Version",
"runHealth": "运行健康",
"currentVersion": "当前版本",
"latestApply": "最近应用",
"lastSeen": "最近心跳",
"actions": "操作"
},
"editor": {
"editTitle": "编辑节点",
"createTitle": "新增节点",
"description": "预创建节点后可在详情页查看专属 Token 与部署命令。",
"nodeType": "节点类型",
"typeEdge": "Edge 节点",
"typeRelay": "Relay 节点",
"typeTunnel": "Tunnel 节点",
"name": "节点名称",
"namePlaceholder": "例如 edge-hk-01",
"ip": "节点 IP",
"ipPlaceholder": "可选,接入后自动上报",
"lockIp": "锁定 IP",
"lockIpDesc": "启用后管理端不再自动覆盖 IP",
"autoUpdate": "自动更新 Agent",
"autoUpdateDesc": "启用后节点将自动拉取正式版更新",
"bindPort": "绑定端口",
"vhostPort": "VHost 端口",
"manualGeo": "手动地图点位",
"manualGeoDesc": "用于总览地图展示",
"geoName": "位置名称",
"latitude": "纬度",
"longitude": "经度",
"saving": "保存中...",
"saveEdit": "保存修改",
"createAction": "新增节点",
"errName": "请输入节点名称",
"errLockIp": "锁定 IP 时必须填写节点 IP",
"errBindPort": "请输入有效的绑定端口",
"errVhostPort": "请输入有效的 VHost 端口"
},
"install": {
"edgeTitle": "边缘节点部署",
"edgeDesc": "使用 Agent Token 将边缘节点接入控制端。",
"relayTitle": "中继部署命令",
"relayDesc": "使用 Discovery Token 将 frps 中继节点接入控制端。",
"tunnelTitle": "隧道部署命令",
"tunnelDesc": "使用 Tunnel Token 将 openflared 客户端接入控制端。",
"agentToken": "Agent Token",
"discoveryToken": "Discovery Token",
"tunnelToken": "Tunnel Token",
"scriptLabel": "一键脚本部署 (Linux / macOS)",
"dockerLabel": "Docker 容器部署",
"copyFailed": "复制失败,请手动选择命令文本。",
"copiedScript": "部署脚本命令已复制",
"copiedDocker": "Docker 部署命令已复制",
"copyScript": "复制脚本",
"copyDocker": "复制 Docker",
"nodeId": "Node ID",
"serverUrl": "Server URL(控制端地址)",
"serverUrlHint": "部署脚本和容器将使用此地址连接 OpenFlare 控制端。",
"noToken": "节点尚未生成接入 Token,请稍后刷新。",
"needServerUrl": "请填写有效的 Server URL 以生成部署命令。"
},
"update": {
"title": "Agent 升级",
"description": "检查 GitHub 发布并向节点下发升级指令,节点将在下一次心跳后执行。",
"currentVersion": "当前版本",
"channel": "检查通道",
"updateStatus": "更新状态",
"waitingPreview": "等待预览更新",
"waitingUpdate": "等待更新",
"notRequested": "未下发",
"checking": "检查发布版本中...",
"hasUpdate": "发现可升级版本",
"upToDate": "当前已是最新版本",
"previewRelease": "Preview 发布",
"stableRelease": "正式发布",
"targetVersion": "目标版本",
"notFound": "未找到",
"publishedAt": "发布时间",
"noNotes": "暂无更新说明",
"viewRelease": "查看发布详情",
"checkStable": "检查正式版",
"checkPreview": "检查预览版",
"upgradePreview": "升级到预览版",
"upgradeStable": "升级到正式版"
},
"edge": {
"upgrade": "升级 Agent",
"restartOpenresty": "重启 OpenResty",
"runStatus": "运行状态",
"runStatusDesc": "节点在线情况与 OpenResty 健康",
"openrestyHealth": "OpenResty 健康",
"lastSeen": "最近心跳",
"ip": "IP 地址",
"geo": "地图点位",
"syncTitle": "配置同步",
"syncDesc": "版本追平与应用结果摘要",
"currentVersion": "当前配置版本",
"latestApply": "最近应用",
"latestApplyAt": "最近应用时间",
"agentVersion": "Agent 版本",
"nginxVersion": "Nginx 版本",
"autoUpdate": "自动更新",
"runtimeMessages": "运行消息",
"runtimeMessagesDesc": "OpenResty 与 Agent 上报的状态说明",
"openrestyMessage": "OpenResty 状态消息",
"noExtraError": "当前未上报额外错误。",
"restartPending": "已等待节点在下一次心跳后执行 OpenResty 重启。",
"kpiAgent": "Agent 版本",
"connectionHint": "OpenResty 当前连接",
"toastUpdated": "节点已更新",
"toastForceSync": "已向节点 {name} 下发强制同步指令",
"toastRestart": "已向节点 {name} 下发 OpenResty 重启指令",
"toastUpgrade": "已向节点 {name} 下发{channel}升级指令",
"toastDeleted": "节点已删除"
},
"relay": {
"upgrade": "升级 Relay",
"runStatus": "中继运行状态",
"runStatusDesc": "frps 在线情况与负载摘要",
"health": "中继健康",
"connections": "活动连接 / 代理数",
"portsTitle": "网络端口",
"portsDesc": "frps 控制面与 HTTP 虚拟主机配置",
"bindPort": "绑定控制端口",
"vhostPort": "VHost HTTP 端口",
"agentAddr": "Agent 接入地址",
"relayVersion": "Relay 版本",
"frpsVersion": "frps 核心版本",
"webuiTitle": "FRPS WebUI",
"webuiDesc": "控制 frps 内置 Web 管理界面是否启用及其监听端口",
"enableWebui": "启用 Web 管理界面",
"enableWebuiHint": "开启后,节点将启动 frps 的内置管理服务。",
"webuiPort": "Web 管理界面端口",
"webuiPortPlaceholder": "例如: 17500",
"actualPort": "当前实际监听端口:{port} (修改后在下次节点心跳同步时生效,默认为绑定端口 + 500)。",
"openWebui": "打开 FRPS WebUI",
"copiedLink": "链接已复制到剪贴板",
"copyLink": "复制链接",
"webuiDisabled": "WebUI 已禁用或未配置绑定端口。",
"metadata": "节点元数据",
"createdAt": "创建时间",
"updatedAt": "更新时间",
"kpiFrps": "frps 核心",
"connectionHint": "中继承载活动连接数",
"invalidPort": "端口号必须在 1 ~ 65535 范围内",
"portSaveFailed": "更新端口失败",
"toastPortSaved": "FRPS WebUI 端口配置已更新",
"toastUpdated": "中继节点已更新",
"toastWebui": "FRPS WebUI 设置已更新",
"toastForceSync": "已向中继节点 {name} 下发强制同步指令",
"toastUpgrade": "已向中继节点 {name} 下发{channel}升级指令",
"toastDeleted": "中继节点已删除",
"deleteTitle": "确认删除中继节点",
"deleteDesc": "确认删除中继节点「{name}」吗?删除后该节点需要重新创建并重新接入。"
},
"tunnel": {
"upgrade": "升级 openflared",
"runStatus": "隧道运行状态",
"runStatusDesc": "openflared 连接与在线情况",
"flaredStatus": "flared 状态",
"autoUpdate": "自动更新",
"syncTitle": "配置同步",
"syncDesc": "隧道客户端配置追平状态",
"currentVersion": "当前配置版本",
"latestApply": "最近应用",
"latestApplyAt": "最近应用时间",
"fileCount": "同步文件数",
"fileCountValue": "{count} 个",
"upgradeStatus": "升级状态",
"credentials": "接入凭证",
"credentialsDesc": "隧道客户端接入所需 Token",
"tunnelToken": "Tunnel Token",
"createdAt": "创建时间",
"updatedAt": "更新时间",
"kpiOpenflared": "openflared",
"connectionHint": "隧道并发连接数",
"toastUpdated": "隧道节点已更新",
"toastForceSync": "已向隧道节点 {name} 下发强制同步指令",
"toastUpgrade": "已向隧道节点 {name} 下发{channel}升级指令",
"toastDeleted": "隧道节点已删除",
"deleteTitle": "确认删除隧道节点",
"deleteDesc": "确认删除隧道节点「{name}」吗?删除后该节点需要重新创建并重新接入。"
},
"obs": {
"hostname": "主机名",
"os": "操作系统",
"kernelArch": "内核 / 架构",
"uptime": "在线时长",
"cpu": "CPU",
"cpuCores": "{count} 核",
"totalMemory": "总内存",
"totalStorage": "总存储",
"reportedAt": "上报时间",
"eventsTitle": "健康事件时间线",
"eventsDesc": "保留活动与已恢复事件,帮助判断运行状态。",
"cleanupLogs": "清理日志",
"filterAll": "全部事件",
"filterActive": "活动中",
"filterResolved": "已恢复",
"filterEmpty": "当前筛选下没有健康事件。",
"noMessage": "暂无详细消息",
"firstTriggered": "首次触发:",
"lastTriggered": "最近触发:",
"resolvedAt": "恢复时间:",
"noEvents": "节点当前还没有上报健康事件记录。",
"cleaned": "已清理 {count} 条健康事件日志",
"nothingToClean": "当前没有可清理的健康事件日志",
"loading": "加载运行观测数据中...",
"diag": "运行诊断",
"activeIssues": "{count} 个活动异常",
"stable": "运行稳定",
"noActiveEvents": "当前没有活动中的健康事件",
"systemCore": "系统核心",
"uptimeFromProfile": "来自节点系统画像上报",
"profileTitle": "系统画像",
"profileDesc": "节点上报的主机与硬件信息",
"noProfile": "节点已接入,但尚未上报完整系统画像。",
"noProfileLong": "节点已经接入,但还没有上报完整系统画像。",
"snapshotTitle": "实时资源快照",
"snapshotDesc": "最近一次 metrics 上报",
"realtimeResources": "实时资源",
"memory": "内存",
"storage": "存储",
"connections": "连接数",
"snapshotAgo": "快照 {time}",
"noSnapshot": "节点已接入,但尚未上报资源快照。",
"noSnapshotLong": "节点已经接入,但还没有上报资源快照。",
"cleanupTitle": "清理健康事件日志",
"cleanupDesc": "该操作会删除此节点在控制端记录的所有健康诊断事件历史,不会影响后续新事件上报。",
"cleaning": "清理中...",
"confirmCleanup": "确认清理",
"windowRequests": "查询窗口请求",
"windowVisitorsHint": "查询窗口独立访客 {visitors} · 错误率 {rate}%",
"noWindowSummary": "当前没有可展示的请求窗口摘要",
"capacityPressure": "容量压力",
"needsAttention": "需要关注",
"normalRange": "正常范围",
"cpuStorage": "CPU {cpu} · 存储 {storage}",
"noResourceSnapshot": "当前没有资源快照",
"sourceSignal": "来源信号",
"requestTimes": "{count} 次请求",
"noSourceDist": "当前没有来源分布数据",
"systemInfo": "系统信息",
"networkTraffic": "网络流量",
"noActiveIssue": "无活动异常",
"openrestyConn": "OpenResty 连接",
"currentConn": "当前连接:",
"throughputHint": "业务吞吐请看访问日志趋势(已提供/接收数据)",
"windowVisitors": "查询窗口独立访客",
"reqQps": "请求 {requests} · 估算 QPS {qps}",
"noTrafficSummary": "暂无窗口流量摘要",
"windowErrors": "查询窗口错误",
"errorRate": "错误率 {rate}%",
"noErrorSummary": "暂无错误率摘要",
"noNetworkSnapshot": "节点已经接入,但还没有上报网络流量相关快照。",
"trafficTrendDesc": "按小时聚合该节点的请求量和错误量。",
"capacityTrendDesc": "观察该节点 CPU 与内存使用率在 24 小时内的变化。",
"structureTitle": "请求结构分布",
"structureDesc": "聚合最近 24 小时窗口上报,帮助判断错误集中在哪些状态码、流量集中在哪些域名。",
"mainStatus": "主状态码",
"times": "{count} 次",
"noStatusDist": "暂无状态码分布",
"topDomain": "Top Domain",
"noDomainDist": "暂无域名分布",
"resolvedEvents": "已恢复事件",
"resolvedHint": "最近 24 小时已恢复健康事件",
"statusDist": "状态码分布",
"distEmpty": "暂无分布数据",
"unknownLabel": "未知"
},
"networkTrend": {
"title": "24 小时网络趋势",
"description": "按小时展示已提供/接收数据(访问日志);摘要为近 24 小时总量。",
"summaryHint": "近 24 小时",
"received": "接收数据",
"provided": "已提供数据"
},
"diskIo": {
"title": "24 小时磁盘 IO 趋势",
"description": "按小时展示磁盘读写速率(B/s),辅助判断日志放大、缓存抖动或磁盘压力。",
"summaryHint": "近 24 小时 · 平均速率",
"read": "磁盘读",
"write": "磁盘写"
}
},
"performance": {
"title": "性能",
"description": "集中管理 OpenResty 全局性能参数,保存后进入统一配置发布链路。",
"preview": "查看配置预览",
"saved": "性能参数已保存",
"saveFailed": "保存失败",
"loadingAuth": "加载权限信息...",
"forbiddenTitle": "权限不足",
"forbiddenDesc": "只有管理员可以访问性能设置。",
"loading": "加载性能参数...",
"runtimeTitle": "连接与事件",
"runtimeDesc": "worker、超时、请求体大小等运行参数",
"proxyTitle": "反代缓冲与超时",
"proxyDesc": "upstream 连接、缓冲与 WebSocket/HTTP3 开关",
"gzipTitle": "压缩",
"cacheTitle": "缓存",
"cacheDesc": "单节点反代缓存优化场景",
"errors": {
"workerProcesses": "worker_processes 必须为 auto 或大于 0 的整数",
"timeouts": "超时与连接参数必须为大于 0 的整数",
"statusCode": "空白页面返回状态码必须在 100 到 999 之间",
"bodySize": "client_max_body_size 格式不合法",
"headerBuffers": "large_client_header_buffers 格式必须类似 \"4 16k\"",
"proxyTimeouts": "代理超时参数必须为大于 0 的整数秒",
"proxyBuffers": "proxy_buffers 格式必须类似 \"16 16k\"",
"bufferSize": "缓冲大小必须为整数或带 k/m/g 单位的值",
"gzipMinLength": "gzip_min_length 必须为大于 0 的整数",
"gzipLevel": "gzip_comp_level 必须在 1 到 9 之间",
"cachePath": "启用缓存时必须填写 proxy_cache_path 目录",
"cacheFormat": "缓存 levels、inactive、max_size 或 lock_timeout 格式不合法",
"cacheKey": "启用缓存时必须填写缓存 Key 模板"
}
},
"applyLogs": {
"title": "应用日志",
"description": "查看节点应用配置的成功、警告和失败记录,支持按 node_id 过滤。",
"refresh": "刷新",
"clear": "清空日志",
"backToNodes": "返回节点",
"totalRecords": "总记录数",
"currentPage": "当前页",
"totalPages": "总页数",
"pageNodes": "当前页节点数",
"nodeId": "Node ID",
"nodePlaceholder": "输入 node_id 过滤应用日志",
"pageSize": "每页条数",
"pageSizeOption": "{count} 条",
"filter": "筛选",
"reset": "重置筛选",
"emptyTitle": "暂无应用日志",
"emptyDesc": "当前筛选条件下没有可展示的应用记录。",
"colNodeId": "Node ID",
"colVersion": "版本",
"colResult": "结果",
"colChecksum": "Checksum",
"colTime": "时间",
"colMessage": "消息",
"colActions": "操作",
"detail": "详情",
"pageInfo": "第 {current} / {total} 页,共 {count} 条记录。",
"prev": "上一页",
"next": "下一页",
"loadFailed": "加载失败",
"cleared": "应用日志已清空",
"clearedDesc": "共删除 {count} 条记录",
"clearFailed": "清空应用日志失败",
"unknownError": "未知错误",
"clearTitle": "确认清空应用日志?",
"clearDesc": "该操作将删除全部 {count} 条应用日志记录,且不可撤销。清空后节点仍会照常上报新的应用结果。",
"clearing": "清空中...",
"confirmClear": "确认清空",
"success": "成功",
"warning": "警告",
"failed": "失败",
"sheetTitle": "应用日志详情",
"sheetDesc": "查看单条应用日志的完整结果与校验信息。",
"versionBadge": "版本: {version}",
"createdAt": "创建时间",
"targetChecksum": "目标 Checksum",
"mainChecksum": "主配置摘要",
"routeChecksum": "路由配置摘要",
"supportFiles": "支持文件数",
"message": "消息",
"close": "关闭"
},
"configVersions": {
"title": "配置版本",
"description": "查看历史快照、预览待发布配置差异,并在需要时重新激活旧版本。",
"refresh": "刷新",
"cleanupOld": "清理旧版本",
"viewDiff": "查看差异",
"forcePublish": "强制发布",
"previewPublish": "预览并发布",
"emptyTitle": "暂无历史版本",
"emptyDesc": "当前还没有可查看的发布记录,请先触发一次配置发布。",
"colVersion": "版本号",
"colStatus": "状态",
"colAuthor": "创建人",
"colChecksum": "Checksum",
"colCreatedAt": "创建时间",
"colActions": "操作",
"active": "当前激活",
"history": "历史版本",
"system": "系统",
"snapshot": "快照",
"activate": "激活",
"loadFailed": "加载失败",
"previewLoadFailed": "加载预览失败",
"diffLoadFailed": "加载差异失败",
"publishSuccess": "发布成功",
"publishSuccessDesc": "版本 {version}",
"publishFailed": "发布失败",
"activateSuccess": "激活成功",
"activateSuccessDesc": "版本 {version}",
"activateFailed": "激活失败",
"cleanupDone": "清理完成",
"cleanupDoneDesc": "已删除 {count} 个历史快照",
"cleanupFailed": "清理失败",
"unknownError": "未知错误",
"confirmPublishTitle": "确认发布配置",
"confirmPublishDesc": "将把当前待发布配置生成新版本并设为激活版本,节点将随后拉取更新。",
"confirmPublish": "确认发布",
"confirmForceTitle": "确认强制发布",
"confirmForceDesc": "将忽略配置变化检查并立即生成一个新版本,请确认你确实需要重新发布。",
"confirmActivateTitle": "确认激活版本",
"confirmActivateDesc": "确认将版本 {version} 设为当前激活版本吗?",
"confirmActivate": "确认激活",
"previewTitle": "发布预览",
"previewDesc": "查看待发布配置的渲染结果与支持文件。",
"loadingPreview": "正在加载预览...",
"routeCount": "规则 {count} 条",
"websiteCount": "网站 {count} 个",
"mainConfig": "主配置",
"routeConfig": "路由配置",
"supportFiles": "支持文件 ({count})",
"noSupportFiles": "当前发布不需要额外支持文件。",
"noChanges": "当前规则与已激活版本一致,无法重复发布。",
"close": "关闭",
"publishing": "发布中...",
"diffTitle": "配置差异",
"diffDesc": "对比当前待发布配置与已激活版本之间的差异。",
"loadingDiff": "正在加载差异数据...",
"activeVersion": "激活版本",
"none": "无",
"addedDomains": "新增域名",
"removedDomains": "删除域名",
"modifiedDomains": "修改域名",
"itemCount": "{count} 项",
"noChange": "无变更",
"emptyValue": "空",
"mainChanged": "主配置 已变化",
"mainUnchanged": "主配置 无变化",
"wafChanged": "WAF 已变化",
"wafUnchanged": "WAF 无变化",
"websiteDelta": "网站数 {from} → {to}",
"optionKey": "参数",
"activeValue": "激活值",
"pendingValue": "待发布值",
"noOptionChanges": "当前无 OpenResty 参数变化。",
"snapshotTitle": "版本快照",
"snapshotVersion": "版本 {version}",
"snapshotDesc": "查看历史配置版本的完整快照内容。",
"loadingSnapshot": "正在加载快照...",
"createdBy": "创建人",
"createdAt": "创建时间",
"snapshotLoadFailed": "加载版本快照失败",
"cleanupTitle": "清理历史快照",
"cleanupDesc": "删除旧的历史快照配置,系统将始终保护当前已激活的版本不被删除。",
"keepCount": "保留最近快照个数",
"keepHint": "默认为 10 个,最少需保留 3 个。",
"keepMin": "最少保留 3 个历史快照",
"cleaning": "清理中...",
"confirmCleanup": "确认清理"
},
"waf": {
"title": "WAF",
"createRule": "新建规则",
"ruleGroups": "规则组",
"ruleGroupsDesc": "使用可视化流程编排 WAF 防护规则;全局规则始终应用到所有网站。",
"refresh": "刷新",
"loading": "加载 WAF 规则组中...",
"empty": "暂无规则组,系统通常会自动创建全局规则组。",
"created": "规则已创建",
"groupDeleted": "规则组已删除",
"deleteTitle": "确认删除规则组",
"deleteDesc": "确认删除规则组「{name}」吗?删除后无法恢复。",
"deleting": "删除中...",
"confirmDelete": "确认删除",
"operationFailed": "操作失败",
"autoConfigMustBeObject": "自动配置必须是 JSON 对象。",
"autoConfigInvalid": "自动配置格式错误",
"saveFailed": "保存失败",
"enabled": "已启用",
"disabled": "已停用",
"enable": "启用",
"disable": "停用",
"global": "全局",
"custom": "自定义",
"allSites": "全部网站",
"siteCount": "{count} 个网站",
"columns": {
"name": "名称",
"type": "类型",
"status": "状态",
"nodeCount": "节点数",
"scope": "应用范围",
"updatedAt": "更新时间",
"actions": "操作"
},
"actions": {
"compose": "编排",
"delete": "删除"
},
"createDialog": {
"title": "新建 WAF 规则",
"description": "创建后将进入编排页面,通过处理单元配置规则执行流程。",
"name": "规则名称",
"namePlaceholder": "例如:入口防护",
"submit": "创建并编排"
},
"editor": {
"missingId": "缺少有效的规则 ID。",
"loadFailed": "规则加载失败,请重试。",
"reload": "重新加载",
"back": "返回",
"graphValid": "图校验通过",
"issueCount": "{count} 个问题",
"unsaved": "未保存",
"enableRule": "启用规则",
"format": "格式化",
"formatTitle": "自动整理节点与连线布局",
"saving": "保存中...",
"save": "保存",
"saved": "规则图已保存",
"conflict": "规则已在其他页面更新,请重新加载",
"saveCheckNodes": "保存失败,请检查标记的节点和连线",
"ruleEnabled": "规则已启用",
"ruleDisabled": "规则已停用",
"leaveTitle": "未保存的更改",
"leaveDesc": "存在未保存的更改,确定离开吗?",
"leaveConfirm": "确定离开",
"deleteNode": "删除节点",
"systemNodeLocked": "系统节点不可删除",
"deleteEdge": "删除连线",
"propsTitle": "节点属性",
"propsDesc": "配置当前处理单元",
"systemNodeNoConfig": "系统节点无需配置。",
"displayName": "显示名称",
"ips": "IP 地址",
"cidrs": "CIDR 网段",
"ipGroups": "IP 组",
"countries": "国家代码",
"countriesDesc": "共 {count} 个国家/地区,显示国家名与 ISO 代码",
"regions": "地区代码",
"regionsDesc": "共 {count} 个一级行政区,输入名称或代码搜索",
"uaCheck": "UA 检查",
"enableUaCheck": "开启 UA 检查",
"enableUaCheckTip": "开启后如果请求头不携带 UA 将返回 False",
"block": "屏蔽",
"blockTip": "命中返回 false,优先级高于匹配",
"blockBots": "屏蔽常见爬虫 UA",
"blockBotsTip": "浏览器或操作系统分类为 Bot(含 bot / spider / crawler / slurp 等特征,如 Googlebot)",
"blockAbnormal": "屏蔽非正常 UA",
"blockAbnormalTip": "浏览器分类为 Other 或 Unknown(不含搜索引擎等爬虫 Bot,爬虫请用上方开关)",
"blockCustom": "屏蔽自定义 UA",
"blockCustomTip": "原始 User-Agent 命中任一条正则时返回 false(Lua 模式语法)",
"customUaPatterns": "自定义 UA 正则",
"customUaPatternsTip": "每行一条 Lua 模式正则,命中任一条即 false;最多 32 条",
"uaMatch": "UA 匹配",
"matchMode": "匹配模式",
"matchModeTip": "浏览器与操作系统两侧都有选择时生效",
"matchOr": "或(OR)",
"matchAnd": "且(AND)",
"browsers": "浏览器",
"os": "操作系统",
"security": "安全防护",
"securityTip": "命中任意已启用规则返回 False",
"basicProtection": "基础防护",
"help": "说明",
"oneValuePerLine": "每行一个值",
"selectedCount": "已选择 {count} 项",
"pleaseSelect": "请选择",
"createLabel": "新建{label}",
"searchNameOrCode": "搜索名称或代码",
"addCode": "添加代码",
"searchOptions": "输入名称或代码搜索 {count} 个选项",
"noMatchingOptions": "没有匹配的选项",
"algorithm": "算法",
"algorithmFast": "快速",
"algorithmSlow": "稳健",
"difficulty": "难度",
"sessionTtl": "会话 TTL(秒)",
"challengeTtl": "挑战 TTL(秒)",
"statusCode": "HTTP 状态码",
"responseBody": "HTML 响应体",
"bytes": "字节",
"securityRules": {
"path_traversal": {
"label": "路径穿越防护",
"tip": "检测 Path / Query / Body 中的 ../ 与编码变种"
},
"file_inclusion": {
"label": "文件包含(LFI/RFI)",
"tip": "检测 Path / Query / Body 中的 php://、file://、/etc/passwd 等"
},
"sql_injection": {
"label": "SQL 注入",
"tip": "检测 Query / Body / Header / Cookie 中的 SQL 注入特征"
},
"command_injection": {
"label": "命令注入",
"tip": "检测 Query / Body / Header 中的 OS 命令注入特征"
},
"xss": {
"label": "XSS",
"tip": "检测 Query / Body / Header 中的反射型 XSS 特征"
},
"ssrf": {
"label": "SSRF",
"tip": "检测 Query / Body 中的内网地址与危险协议"
},
"malicious_upload": {
"label": "恶意文件上传",
"tip": "检测 Multipart 文件名与危险扩展名"
},
"xxe": {
"label": "XXE",
"tip": "检测 XML Body 中的外部实体特征"
},
"crlf_injection": {
"label": "CRLF 注入",
"tip": "检测 Header / Query / Body 中的换行注入"
}
}
}
},
"ipGroups": {
"title": "IP 组",
"create": "新建 IP 组",
"listTitle": "IP 组列表",
"listDesc": "维护可被 WAF IP 黑白名单引用的手动、自动与订阅 IP 集合。",
"refresh": "刷新",
"loading": "加载 IP 组中...",
"empty": "暂无 IP 组,请先创建一个。",
"updated": "IP 组已更新",
"created": "IP 组已创建",
"deleted": "IP 组已删除",
"synced": "同步完成",
"ipRemoved": "IP 已移除",
"testHit": "规则测试完成,命中 {count} 个 IP",
"testMiss": "规则测试完成,当前未命中任何 IP",
"deleteTitle": "确认删除 IP 组",
"deleteDesc": "确认删除 IP 组「{name}」吗?删除后无法恢复。",
"deleting": "删除中...",
"confirmDelete": "确认删除",
"operationFailed": "操作失败",
"types": {
"manual": "手动",
"automatic": "自动",
"subscription": "订阅"
},
"enabled": "启用",
"disabled": "停用",
"noSyncRecord": "尚无同步记录",
"columns": {
"name": "名称",
"type": "类型",
"status": "状态",
"ipCount": "IP 数",
"refCount": "引用次数",
"syncStatus": "同步状态",
"updatedAt": "更新时间",
"actions": "操作"
},
"actions": {
"view": "查看",
"edit": "编辑",
"test": "测试规则",
"runNow": "立即执行",
"syncNow": "立即同步",
"delete": "删除"
},
"ban": {
"permanent": "永久",
"expired": "已过期",
"minutesLater": "{count} 分钟后",
"hoursLater": "{count} 小时后"
},
"presets": {
"scan404": "单 IP 404 高频扫描",
"directAccess": "单 IP 直连访问异常"
},
"dialog": {
"editTitle": "编辑 {name}",
"createTitle": "新建 IP 组",
"description": "维护可被 WAF IP 黑白名单引用的手动、自动与订阅 IP 集合。",
"name": "IP 组名称",
"nameRequired": "请输入 IP 组名称",
"type": "类型",
"enable": "启用 IP 组",
"enableDesc": "关闭后保留配置,但发布时不会展开到 WAF 运行时名单。",
"subscriptionUrl": "订阅 URL",
"subscriptionUrlRequired": "订阅类型需要填写订阅 URL",
"subscriptionFormat": "订阅格式",
"formatText": "文本列表",
"syncInterval": "同步间隔(分钟)",
"syncIntervalDesc": "最小 1 分钟,默认 1440 分钟。",
"mappingRule": "JSON 映射规则",
"mappingPlaceholder": "留空表示根数组",
"autoIntervalDesc": "定时从请求日志挖掘恶意 IP 的周期。最小 1 分钟,默认 1440 分钟。",
"presetRules": "预设规则",
"autoConfigJson": "自动配置 JSON",
"ipList": "IP / IP 段",
"ipListSubscriptionHint": "订阅同步会覆盖此列表;也可以先手动保存当前内容。",
"ipListManualHint": "支持单个 IP 或 CIDR,每行一个。",
"saving": "保存中...",
"save": "保存 IP 组"
},
"testDialog": {
"title": "自动规则测试结果",
"description": "基于当前自动配置 JSON 对请求日志进行回看测试。",
"testing": "测试中...",
"summary": "回看 {lookback} · 规则 {rules} 条 · 命中 {matched} 个 IP",
"testedAt": "测试时间:{time}",
"noMatch": "当前没有匹配到任何 IP。",
"empty": "暂无测试结果。",
"close": "关闭"
},
"viewDialog": {
"titleNamed": "查看 {name}",
"title": "查看 IP 组",
"summary": "{type} · 共 {count} 条 IP",
"fallbackDesc": "查看当前 IP 组中的 IP 列表,并可移除不需要的条目。",
"loading": "加载 IP 列表...",
"noGroup": "未选择 IP 组。",
"emptyAuto": "该自动规则暂未抓取任何 IP,可点击「立即执行」手动触发抓取。",
"empty": "当前 IP 组暂无 IP 条目。",
"subscriptionHint": "订阅类型在下次同步时可能重新拉取已删除的 IP。",
"ipAddress": "IP 地址",
"capturedAt": "抓取时间",
"banRemaining": "封禁剩余",
"actions": "操作",
"deleteIp": "删除 {ip}",
"close": "关闭",
"deleteTitle": "确认删除 IP",
"deleteDesc": "确认从 IP 组「{name}」中移除 {ip} 吗?",
"deleting": "删除中...",
"confirmDelete": "确认删除"
},
"autoConfigMustBeObject": "自动配置必须是 JSON 对象。"
},
"rateLimits": {
"title": "限流",
"subtitle": "查看边缘请求压力,并配置站点默认并发与带宽限流。",
"loadingAuth": "加载权限信息...",
"forbiddenTitle": "权限不足",
"forbiddenDesc": "只有管理员可以访问限流设置。",
"tabAnalysis": "分析",
"tabConfig": "配置",
"loadingPage": "加载限流页面...",
"loadingPressure": "加载请求压力...",
"loadFailed": "加载失败",
"emptyTitle": "暂无数据",
"emptyDesc": "当前时间范围内没有可用的访问日志。",
"topHost": "平均 RPS 最高域名",
"topIp": "平均 RPS 最高 IP",
"avgRate": "{range}平均请求速率",
"range": {
"h24": "24 小时",
"h72": "3 天"
},
"chart": {
"title": "请求压力",
"empty": "暂无请求压力数据",
"requestRate": "请求速率",
"uniqueVisitors": "独立访客",
"visitorsPerBucket": "访客 / 桶"
},
"config": {
"saved": "限流参数已保存",
"saveFailed": "保存失败",
"loading": "加载限流参数...",
"preview": "查看配置预览",
"title": "全局默认限流",
"description": "0 或空表示默认关闭;站点未单独配置时继承此处设置。修改后需在版本发布中生效。",
"save": "保存",
"connPerServer": "默认并发限制(每站点)",
"connPerServerHint": "站点最大并发连接数默认值",
"connPerIp": "默认单 IP 并发",
"connPerIpHint": "单个 IP 最大并发连接数默认值",
"limitRate": "默认限速",
"limitRateHint": "单请求带宽默认值,例如 512k 或 1m",
"reqPerIp": "默认单 IP 请求频率限制",
"reqPerIpHint": "单个 IP 请求频率默认值,例如 10r/s 或 100r/m,留空关闭",
"invalidConn": "并发限制请输入非负整数,或留空表示关闭",
"invalidRate": "限速格式不合法,请使用 512k、1m、纯数字,或留空关闭",
"invalidReq": "请求频率限制格式不合法,请使用类似 10r/s、100r/m,或留空关闭"
}
},
"pages": {
"title": "Pages",
"subtitle": "边缘静态站点托管,上传静态资源部署包并在代理规则中选择 Pages 上游。",
"refresh": "刷新",
"create": "新建项目",
"loadFailed": "加载失败",
"emptyTitle": "还没有 Pages 项目",
"emptyDesc": "先创建一个项目,再上传静态资源部署包。",
"enabled": "已启用",
"disabled": "已停用",
"spaFallback": "SPA fallback",
"strict404": "严格 404",
"currentActive": "当前激活",
"none": "暂无",
"activatedAt": "激活时间:",
"notActivated": "未激活",
"viewDetail": "查看详情",
"saveFailed": "保存失败",
"updated": "项目已更新",
"created": "项目已创建",
"deleted": "项目已删除",
"deleteFailed": "删除失败",
"editTitle": "编辑 Pages 项目",
"createTitle": "新建 Pages 项目",
"editorDesc": "配置静态站点托管参数,上传部署包后在代理规则中选择 Pages 上游。",
"settingsDesc": "配置静态站点托管参数,保存后会同步到项目详情与代理引用。",
"reset": "重置",
"saving": "保存中...",
"saveChanges": "保存修改",
"createProject": "创建项目",
"form": {
"name": "项目名称",
"nameRequired": "请输入项目名称",
"slug": "项目标识",
"slugPlaceholder": "留空自动生成",
"entryFile": "入口文件",
"entryRequired": "请输入入口文件",
"rootDir": "根目录",
"optional": "可选",
"spaFallback": "SPA fallback",
"spaFallbackDesc": "未命中静态文件时回退到指定路径",
"fallbackPath": "回退路径",
"fallbackPathPrefix": "回退路径必须以 / 开头",
"apiProxy": "API 反向代理",
"apiProxyDesc": "为静态站点附加 API 反代规则",
"matchPath": "匹配路径",
"matchPathPrefix": "匹配路径必须以 / 开头",
"backend": "后端地址",
"backendPrefix": "后端地址必须以 http:// 或 https:// 开头",
"rewrite": "重写规则"
},
"detail": {
"invalidId": "缺少有效的 Pages 项目 ID。",
"loading": "加载项目详情...",
"loadFailed": "项目详情加载失败",
"back": "返回列表",
"notFound": "Pages 项目不存在或已被删除。",
"deploymentCount": "{count} 个部署",
"tabDeployments": "部署",
"tabSettings": "设置"
},
"danger": {
"title": "危险区域",
"deleteProject": "删除项目",
"deleteHint": "将永久删除 {name}({slug})及其全部部署。",
"confirmTitle": "删除 Pages 项目",
"confirmDesc": "确认删除项目 {name} 吗?此操作不可恢复。",
"confirm": "确认删除"
},
"upload": {
"selectFile": "请选择部署包",
"success": "部署包上传成功",
"failed": "上传失败",
"unsupported": "仅支持 zip、tar.gz、tar.xz、tar.bz2、tar、7z 格式的部署包",
"title": "上传部署包",
"description": "上传不可变的静态资源压缩包,完成后可在部署历史中激活。",
"localPackage": "本地部署包",
"dropHint": "拖拽部署包到此处,或点击选择文件",
"selected": "已选择 {name}({size})",
"chooseArchive": "请选择一个受支持的压缩包。",
"entry": "部署入口",
"entryHint": "入口来自项目设置;部署包上传不会覆盖该配置。",
"processing": "服务端处理中",
"progress": "上传进度",
"pleaseWait": "请稍候",
"uploading": "上传中...",
"submit": "上传并创建部署"
},
"files": {
"loadFailed": "文件清单加载失败",
"empty": "暂无文件记录",
"path": "路径",
"size": "大小"
},
"history": {
"source": {
"manual_upload": "本地上传",
"manual_url": "URL 导入"
},
"trigger": {
"manual_upload": "手动上传",
"manual_url": "手动导入",
"manual_sync": "手动同步",
"scheduled_auto_update": "定时更新"
},
"fileMeta": "{checksum} · {count} 个文件 · ",
"createdAt": "创建于 {time}",
"activatedAt": " · 激活于 {time}",
"collapseFiles": "收起文件清单",
"expandFiles": "展开文件清单",
"deploymentNumber": "部署 #{number}",
"activate": "激活",
"delete": "删除",
"activated": "历史部署已激活;自动更新(如已开启)已关闭",
"activateFailed": "激活失败",
"deleted": "部署已删除",
"deleteFailed": "删除失败",
"activateTitle": "激活历史部署",
"deleteTitle": "删除部署",
"activateDesc": "激活其它历史部署会终止当前来源任务;若已开启自动更新,将同时关闭自动更新。",
"deleteDesc": "确认删除部署 #{number} 吗?此操作不可恢复。",
"confirm": "确认",
"loading": "加载部署历史...",
"loadFailed": "部署历史加载失败",
"productionHint": "当前对外生效的生产部署;切换激活状态后会立即生效。",
"manualUpload": "手动上传",
"emptyProductionTitle": "暂无 Production 部署",
"emptyProductionDesc": "上传本地部署包,或配置 Remote URL / GitHub Release 来源后同步发布。",
"historyHint": "部署记录不可变,来源信息是创建部署时的安全快照。可从历史部署激活或删除。",
"emptyTitle": "暂无部署",
"emptyDesc": "上传本地部署包,或配置 Remote URL / GitHub Release 来源后同步发布。"
},
"source": {
"status": {
"idle": "空闲",
"checking": "检查中",
"update_available": "有可用更新",
"syncing": "同步中",
"failed": "最近同步失败",
"attention": "需要确认"
},
"check": "检查",
"syncPublish": "同步并发布",
"missingExecutionId": "缺少任务执行 ID",
"actionDone": "部署源{action}完成",
"actionFailed": "部署源{action}失败",
"checkQueued": "检查任务已提交",
"checkQueueFailed": "检查任务提交失败",
"syncQueued": "同步任务已提交",
"syncQueueFailed": "同步任务提交失败",
"title": "部署源",
"loadingDesc": "加载来源配置...",
"independentDesc": "来源配置与部署历史相互独立。",
"loadFailed": "部署源加载失败",
"configDesc": "配置远端来源并同步发布;发布结果见部署历史。",
"manualBadge": "手动部署",
"localPackage": "本地部署包",
"noRemote": "当前没有持久化远端来源。上传部署包后,再从部署历史显式激活。",
"submitFailed": "来源任务提交失败",
"statusFailed": "任务状态读取失败",
"waitStopped": "自动等待已停止,任务可能仍在后台运行。",
"refreshStatus": "刷新任务状态",
"configure": "配置",
"checkUpdate": "检查更新",
"refresh": "刷新",
"confirmTitle": "确认发布当前 GitHub revision",
"confirmLead": "这将发布卡片当前显示的精确 revision:",
"revisionUnavailable": "当前 revision 已不可用,请刷新后重试",
"confirmPublish": "确认并发布",
"updated": "部署源已更新",
"updateFailed": "部署源更新失败",
"switchedManual": "已切换回手动部署",
"switchFailed": "切换失败",
"urlRequired": "请输入 Remote URL",
"urlInvalid": "请输入有效的 HTTP(S) URL",
"githubUrlInvalid": "请输入 https://github.com/'{owner}'/'{repo}' 格式的公开仓库地址",
"tagInvalid": "Release tag 须为有效 Git ref(1–255 字节,可使用 /、#、&、=)",
"assetInvalid": "Asset 文件名须为 1–255 字节,且不能是路径或包含控制、换行、双向文本字符",
"intervalInvalid": "检查间隔须为 5–1440 分钟的整数",
"useManual": "使用手动部署",
"saveRemote": "保存 Remote 来源",
"saveGithub": "保存 GitHub 来源",
"settingsTitle": "部署源设置",
"settingsDesc": "选择部署来源。",
"mode": "来源类型",
"manual": "手动部署",
"manualHint": "保留现有部署与当前生产版本,后续通过“上传部署包”创建新部署。",
"urlHint": "填写可直接下载的部署包 HTTP(S) 地址。",
"allowInsecure": "允许不安全的连接",
"allowInsecureDesc": "默认允许公网与内网地址;开启后跳过 TLS 证书校验,适用于自签名或私有 CA。",
"switchManualTitle": "切换回手动部署",
"switchManualDesc": "当前来源配置将被删除,但已有部署与当前生产版本会保留。",
"githubUrl": "GitHub 仓库 URL",
"githubUrlHint": "仅支持公开 github.com 仓库。",
"releaseSelect": "Release 选择",
"latestRelease": "最新 Release",
"pinnedTag": "固定 Tag",
"pinnedTagHint": "精确检查并同步指定 tag。",
"autoUpdate": "自动更新",
"autoUpdateHint": "检查到新的 Release 后自动同步并发布。",
"checkInterval": "检查间隔(分钟)",
"checkIntervalHint": "可设置为 5–1440 分钟。",
"assetName": "Release Asset 文件名",
"noRecord": "尚无记录",
"address": "地址",
"verifyCert": "校验证书",
"lastSync": "最近同步",
"neverSynced": "尚未同步",
"applied": "已应用",
"latestReleaseLabel": "最新 Release",
"pinnedTagLabel": "固定 Tag · {tag}",
"tagMissing": "未提供",
"assetChangedTitle": "Release Asset 发生变化,需要显式确认",
"assetChangedDesc": "当前远端 revision 与已发布内容不一致。请核对版本和资源后,再确认发布这一精确 revision。",
"autoUpdateOn": "已开启",
"autoUpdateOff": "已关闭",
"intervalMinutes": "{count} 分钟",
"nextCheck": "下次检查",
"waitingSchedule": "等待调度",
"lastCheck": "最近检查",
"neverChecked": "尚未检查",
"remote": "远端"
}
},
"accessLogs": {
"title": "访问日志",
"subtitle": "查看访问概览、IP 明细与请求日志。",
"refresh": "刷新",
"cleanup": "清理日志",
"tabOverview": "概览",
"tabIps": "IP 明细",
"tabList": "日志明细",
"cleaned": "已清理 {count} 条日志",
"cleanupFailed": "清理失败",
"loadingTitle": "加载访问日志",
"loadingDesc": "正在准备页面...",
"loadFailed": "加载失败",
"range": {
"h24": "24 小时",
"h168": "7 天",
"h360": "15 天",
"h720": "30 天"
},
"rangeHint": {
"hours24": "近 24 小时",
"days": "近 {count} 天",
"hours": "近 {count} 小时"
},
"sort": {
"logged_at:desc": "时间从新到旧",
"logged_at:asc": "时间从旧到新",
"status_code:desc": "状态码从高到低",
"status_code:asc": "状态码从低到高",
"remote_addr:asc": "IP 正序",
"remote_addr:desc": "IP 倒序",
"total_requests:desc": "请求数从高到低",
"total_requests:asc": "请求数从低到高",
"request_length:desc": "入站从高到低",
"request_length:asc": "入站从低到高",
"bytes_sent:desc": "出站从高到低",
"bytes_sent:asc": "出站从低到高",
"success_ratio:desc": "2xx 比例从高到低",
"success_ratio:asc": "2xx 比例从低到高",
"last_seen_at:desc": "最后访问从新到旧",
"last_seen_at:asc": "最后访问从旧到新"
},
"cache": {
"hit": "命中",
"origin": "回源",
"uncached": "未缓存"
},
"filters": {
"pickTime": "选择时间",
"remoteAddr": "来源 IP",
"remoteAddrPlaceholder": "按 IP 搜索",
"host": "访问域名",
"hostPlaceholder": "按域名搜索",
"statusCode": "状态码",
"statusCodePlaceholder": "输入状态码,如 404",
"more": "更多筛选",
"nodeId": "节点 ID",
"nodeIdPlaceholder": "按 node_id 搜索",
"path": "请求路径",
"pathPlaceholder": "按路径搜索",
"timeRange": "时间范围",
"pageSize": "每页条数",
"pageSizeItem": "{count} 条",
"apply": "筛选",
"clear": "清空"
},
"cleanupDialog": {
"invalidDays": "保留天数必须大于 0",
"title": "清理访问日志",
"description": "删除早于指定保留天数的访问日志记录,操作不可恢复。",
"policy": "保留策略",
"keepDays": "保留最近 {days} 天",
"custom": "自定义天数",
"customDays": "自定义保留天数",
"cleaning": "清理中...",
"confirm": "确认清理"
},
"detail": {
"title": "访问日志详情",
"description": "本条请求的全部业务字段。IP 访问分析请前往「IP 明细」。",
"logId": "日志 ID",
"requestTime": "请求时间",
"storedAt": "入库时间",
"node": "节点",
"nodeId": "节点 ID",
"clientIp": "客户端 IP",
"region": "地区",
"host": "域名",
"status": "状态码",
"cache": "缓存",
"bytesSent": "出站流量",
"requestLength": "入站流量",
"duration": "请求耗时",
"path": "路径",
"page": "当前第 {page} 页",
"prev": "上一页",
"next": "下一页",
"listTitle": "日志明细",
"empty": "暂无访问日志",
"time": "时间",
"view": "查看详情"
},
"ip": {
"needRange": "请填写开始与结束时间",
"invalidTime": "时间格式无效",
"endAfterStart": "结束时间必须晚于开始时间",
"maxRange": "时间范围不能超过 30 天",
"page": "当前第 {page} 页",
"total": " · 共 {count} 个 IP",
"prev": "上一页",
"next": "下一页",
"customRange": "自定义区间",
"customPending": "自定义(未应用)",
"timeRange": "时间范围",
"current": "当前:{range}",
"custom": "自定义",
"start": "开始",
"end": "结束",
"apply": "应用",
"applyHint": "修改时间后点击「应用」再查询;详情分析窗口与列表时长对齐。",
"sort": "排序",
"pageSize": "每页",
"title": "IP 明细",
"empty": "暂无 IP 数据",
"region": "地区",
"requests": "请求数",
"successRatio": "2xx 比例",
"inbound": "入站",
"outbound": "出站",
"lastSeen": "最后访问",
"view": "查看 IP 详情",
"dialogTitle": "IP 详情",
"dialogDesc": "。查看该 IP 的访问趋势、分布与 WAF IP 组操作。"
},
"analysis": {
"emptySeries": "暂无 {title} 数据",
"selectGroup": "请选择要加入的 IP 组",
"added": "已将 {ip} 加入 IP 组「{name}」",
"addFailed": "加入 IP 组失败",
"removed": "已从 IP 组「{name}」移除 {ip}",
"removeFailed": "移除失败",
"joinTitle": "将 IP 加入 IP 组",
"targetIp": "目标 IP:",
"loadingGroups": "加载 IP 组",
"loadGroupsFailed": "加载 IP 组失败",
"alreadyIn": "该 IP 已存在于以下 IP 组",
"alreadyInHint": "可选择删除,或继续添加到其他 IP 组。",
"entryCount": "{type} · {count} 条",
"delete": "删除",
"cannotDelete": "不可手动删除",
"notInAny": "该 IP 尚未加入任何 IP 组。",
"addToOther": "添加到其他 IP 组",
"noWritable": "没有可写入的手动 IP 组(或已全部包含该 IP)。",
"selectManual": "选择手动 IP 组",
"close": "关闭",
"processing": "处理中...",
"joinSelected": "加入所选 IP 组",
"recentHours": "近 {hours} 小时",
"invalidIp": "没有有效 IP。",
"addToGroup": "将 IP 加入到 IP 组",
"loading": "加载 IP 分析",
"loadFailed": "加载 IP 分析失败",
"totalRequests": "总请求",
"errors": "错误数",
"bandwidth": "已提供带宽",
"received": "接收数据",
"uniqueHosts": "独立域名",
"uniquePaths": "独立路径",
"trend": "IP 请求趋势",
"trendMeta": "{ip} · {range} · {minutes} 分钟桶",
"refresh": "刷新",
"trendFailed": "加载趋势失败",
"trendEmpty": "该 IP 在{range}内没有访问记录。"
},
"overview": {
"loadingTitle": "加载访问概览",
"loadingDesc": "正在聚合请求量、访问量与带宽趋势...",
"loadFailed": "加载访问概览失败",
"emptyTitle": "暂无概览数据",
"emptyDesc": "当前时间范围内没有可展示的访问统计。",
"uniqueVisitors": "{hint} · 独立访客",
"served": "{hint} · 已提供数据",
"requestsHint": "观察请求量是否出现异常抬升或回落。",
"requests": "请求量",
"deviceDesc": "按设备类型统计请求占比。",
"deviceEmpty": "暂无设备类型数据",
"statusDesc": "按 HTTP 状态码统计请求占比。",
"statusEmpty": "暂无状态码分布数据",
"topPathsDesc": "访问量最高的请求路径。",
"topHostsDesc": "流量集中的访问域名。",
"topIpsDesc": "请求次数最多的来源 IP。",
"browsersDesc": "按浏览器聚合的请求排行。",
"osDesc": "按操作系统聚合的请求排行。",
"uaDesc": "原始 User-Agent 请求排行。"
},
"toolbar": {
"hostsFiltered": "已筛选 {count} 个域名",
"filterByHost": "按域名筛选",
"filterHosts": "筛选域名",
"clear": "清除",
"searchPlaceholder": "搜索 Zone 或域名",
"loadingHosts": "加载域名…",
"loadHostsFailed": "加载域名失败",
"retry": "重试",
"noRegistered": "暂无已登记域名",
"noMatch": "没有匹配的域名",
"selectZone": "选择 Zone {name}",
"selectHost": "选择域名 {name}",
"selectedCount": "已选 {count} 个域名"
}
},
"cloudflare": {
"title": "Cloudflare",
"connectionSettings": "连接设置",
"addGroup": "新增分组",
"loadingOverview": "加载 Cloudflare 总览中...",
"notReadyTitle": "Cloudflare 连接尚未就绪",
"notReadyDesc": "请先导入现有 Cloudflare DNS 账号,或录入独立 API Token 并完成连接测试。",
"configure": "配置连接",
"groupsTitle": "指向分组",
"groupsDesc": "管理 Cloudflare A 记录对应的节点与域名成员。",
"loadingGroups": "加载指向分组中...",
"emptyTitle": "暂无指向分组",
"emptyDesc": "创建分组后,可将域名成员同步到指定的边缘节点。",
"enabled": "已启用",
"disabled": "已停用",
"memberSummary": "成员 {count} 个 · 新成员默认{proxy}橙云",
"proxyOn": "开启",
"proxyOff": "关闭",
"manage": "管理",
"sync": "同步",
"delete": "删除",
"created": "指向分组已创建",
"syncQueued": "分组同步任务已入队",
"deleted": "指向分组及远端记录已删除",
"deleteTitle": "删除指向分组",
"deleteDesc": "将删除 {name} 的全部成员及本模块管理的远端 A 记录。此操作不可撤销。",
"confirmDelete": "确认删除",
"loadingDetail": "加载分组详情中...",
"groupUpdated": "分组配置已更新",
"memberAddedOne": "域名已加入并排队同步",
"memberAddedMany": "已添加 {count} 个域名并排队同步",
"memberAddFailed": "添加失败:{count} 个域名未能加入",
"memberPartial": "部分成功:{succeeded} 个已加入,{failed} 个失败",
"proxyUpdated": "橙云设置已更新并排队同步",
"memberSyncQueued": "成员同步任务已入队",
"memberDeleted": "成员及远端 A 记录已删除",
"back": "返回列表",
"refresh": "刷新",
"edit": "编辑",
"addDomain": "添加域名",
"currentPoint": "当前指向",
"activeNode": "生效节点 {name} · {ip}",
"syncEnabled": "同步已启用",
"syncDisabled": "同步已停用",
"primaryNode": "主节点 {name}",
"backupNode": "备用节点 {name}",
"backupUnset": "未设置",
"members": "域名成员",
"membersDesc": "成员级橙云是同步时的唯一依据。",
"noMembers": "暂无域名成员。",
"columns": {
"domain": "域名",
"desiredIp": "期望 IP",
"status": "状态",
"proxied": "橙云",
"actions": "操作"
},
"pendingSync": "待同步",
"remove": "移出",
"groupDialog": {
"editTitle": "编辑指向分组",
"createTitle": "新增指向分组",
"description": "一期使用主节点作为生效节点;备用节点仅保存,不会自动切换。",
"name": "分组名称",
"primary": "主节点",
"primaryPlaceholder": "选择带 IPv4 的边缘节点",
"noIp": "未配置 IP",
"backup": "备用节点",
"none": "不设置",
"defaultProxied": "新成员默认开启橙云",
"enableSync": "启用同步",
"save": "保存"
},
"memberDialog": {
"title": "添加域名成员",
"description": "支持搜索筛选与批量勾选;加入后会创建或接管唯一同名 A 记录,多条同名 A 会拒绝同步。",
"zoneDomain": "Zone 域名",
"searchPlaceholder": "搜索域名或顶级域…",
"selected": "已选 {count}",
"visible": "可见 {count}",
"unselectAll": "取消全选",
"selectVisible": "全选可见",
"clear": "清空",
"noAvailable": "暂无可用域名(均已加入分组,或尚未在网站管理中添加)。",
"noMatch": "没有匹配的域名",
"groupByZone": "按顶级域分组",
"selectZone": "选择顶级域 {name}",
"zone": "顶级域",
"proxied": "开启橙云代理",
"submitCount": "添加并同步({count})",
"submit": "添加并同步"
},
"tasks": {
"pending": "等待中",
"running": "执行中",
"succeeded": "成功",
"failed": "失败",
"system": "系统",
"manual": "手动",
"retry": "重试",
"schedule": "定时",
"retried": "同步任务已重新下发",
"newTaskId": "新任务 ID:{id}",
"retryFailed": "任务重试失败",
"unknownError": "未知错误",
"title": "同步任务",
"description": "仅展示 Cloudflare 域名同步(sync_member)与分组同步(sync_group)的执行记录。",
"statusPlaceholder": "状态",
"allStatus": "全部状态",
"refresh": "刷新",
"loadFailed": "加载同步任务失败",
"loading": "加载同步任务中...",
"emptyTitle": "暂无同步任务",
"emptyDesc": "添加域名或同步分组后,这里会显示 Cloudflare 域名 / 分组同步执行记录。",
"columns": {
"task": "任务",
"status": "状态",
"trigger": "触发",
"duration": "耗时",
"result": "结果/错误",
"createdAt": "创建时间"
},
"pageSummary": "共 {total} 条,第 {page}/{pages} 页",
"prev": "上一页",
"next": "下一页",
"detailTitle": "同步任务详情",
"defaultName": "Cloudflare 同步",
"loadingDetail": "加载任务详情中...",
"status": "状态",
"trigger": "触发",
"retries": "重试",
"duration": "耗时",
"taskId": "任务 ID",
"createdAt": "创建时间",
"finishedAt": "结束时间",
"result": "执行结果",
"error": "错误信息",
"logs": "执行日志",
"close": "关闭"
},
"settings": {
"saved": "Cloudflare 连接配置已保存",
"verified": "Cloudflare 连接验证成功",
"cleared": "Cloudflare 连接已清除",
"back": "返回列表",
"title": "Cloudflare 连接设置",
"sourceTitle": "凭据来源",
"sourceDesc": "Token 建议授予 Zone:Read 与 DNS:Edit 权限;Token 不会在 API 或页面中回显。",
"source": "连接来源",
"importDns": "导入现有 DNS 账号",
"standalone": "独立 API Token",
"dnsAccount": "Cloudflare DNS 账号",
"selectAccount": "选择 DNS 账号",
"dnsHint": "仅显示类型为 cloudflare 的 DNS 账号。可前往",
"dnsLink": "DNS 账号",
"dnsHintAfter": "新增。",
"tokenKeep": "留空不会回显现有 Token;保存将替换",
"tokenEnter": "输入 Cloudflare API Token",
"save": "保存配置",
"test": "测试连接",
"clear": "清除连接",
"statusTitle": "当前状态",
"ready": "Token 已验证,Cloudflare 指向同步可以执行。",
"notReady": "保存配置后仍需测试连接;未验证状态下同步任务会被拒绝。"
}
},
"openflareOps": {
"saved": "OpenFlare 运维设置已保存",
"saveFailed": "保存失败",
"tokenRotated": "Discovery Token 已重新生成",
"tokenRotateFailed": "Token 轮换失败",
"kumaSynced": "Uptime Kuma 同步任务已执行",
"syncFailed": "同步失败",
"invalidParams": "参数校验失败",
"loading": "加载 OpenFlare 运维设置...",
"loadFailed": "加载失败",
"save": "保存",
"agent": {
"title": "Agent 运行参数",
"description": "心跳间隔与离线阈值会在下个心跳周期同步到节点。",
"heartbeat": "心跳间隔 ({duration})",
"offline": "离线阈值 ({duration})",
"wsUpgrade": "开启 WS 连接升级",
"wsUpgradeDesc": "HTTP 心跳成功后尝试升级为 WebSocket,配置发布可即时通知。",
"updateRepo": "Agent 更新仓库"
},
"geo": {
"title": "IP 归属解析",
"description": "控制节点地图等场景的 GeoIP 来源;访客访问记录归属地固定使用 MaxMind mmdb。",
"mode": "归属方式",
"disabled": "关闭",
"testIp": "测试 IP",
"querying": "查询中...",
"query": "查询归属",
"country": "国家/地区"
},
"pages": {
"title": "Pages 静态托管",
"description": "配置部署包上传体积上限与每个项目的历史部署保留数量。",
"maxSize": "部署包大小上限 (MiB)",
"history": "历史部署保留数(0 不限制)",
"historyHint": "每个项目最多保留 N 条部署:激活部署始终保留,其余按从新到旧填充;超出的非激活部署会在上传成功后自动清理。支持 zip、tar.gz、tar.xz、tar.bz2、tar、7z 格式。"
},
"discovery": {
"title": "Discovery Token 与部署",
"description": "新节点首次接入使用 Discovery Token;轮换请前往节点管理或使用下方操作。",
"manageNodes": "节点管理",
"rotate": "轮换 Token",
"tokenReadonly": "Discovery Token(只读)",
"loading": "加载中...",
"notGenerated": "未生成",
"command": "一键部署命令",
"commandHint": "请先填写可访问的 Server URL 并获取 Token。",
"copied": "命令已复制",
"copy": "复制命令"
},
"kuma": {
"title": "Uptime Kuma 集成",
"description": "将反代站点差分同步至 Uptime Kuma 监控实例。",
"syncNow": "立即同步",
"enable": "开启 Uptime Kuma",
"url": "Uptime Kuma 地址",
"username": "用户名",
"password": "密码",
"passwordKeep": "留空表示不更新",
"syncInterval": "同步间隔 (分钟)",
"scope": "监控范围",
"allSites": "全部站点",
"selectedSites": "选择站点",
"selectedLabel": "已选站点",
"pickSites": "选择监控站点",
"noneSelected": "未选择任何站点",
"interval": "检测频率 (秒)",
"retry": "重试次数",
"retryInterval": "重试间隔 (秒)",
"timeout": "请求超时 (秒)"
},
"duration": {
"minutes": "{count} 分钟",
"seconds": "{count} 秒"
},
"errors": {
"heartbeatMin": "心跳间隔不能小于 1000 毫秒。",
"offlineMin": "离线阈值不能小于 10000 毫秒。",
"offlineRatio": "离线阈值建议至少为心跳间隔的 3 倍。",
"kumaUrl": "请输入 Uptime Kuma 地址。",
"kumaUser": "请输入 Uptime Kuma 用户名。",
"syncInterval": "同步间隔必须为正整数。",
"interval": "心跳间隔必须为正整数。",
"retry": "重试次数必须为非负整数。",
"retryInterval": "心跳重试间隔必须为正整数。",
"timeout": "请求超时必须为正整数。",
"pagesSize": "Pages 部署包大小上限必须为 1~2048 MiB。",
"pagesHistory": "Pages 历史保留数必须为大于等于 0 的整数(0 表示不限制)。"
},
"status": {
"title": "系统状态",
"loadFailed": "获取系统状态失败",
"unknownError": "请求时发生未知错误",
"autoRefresh": "自动刷新",
"refresh": "刷新",
"overview": "服务概览",
"overviewDesc": "服务的基础生命指标",
"uptime": "服务运行时间",
"goroutines": "当前 Goroutines 数量",
"heapObjects": "Heap 对象数量",
"memory": "内存统计",
"memoryDesc": "主内存消耗概览",
"alloc": "当前内存使用量",
"totalAlloc": "所有已分配的内存",
"sys": "内存占用量",
"nextGc": "下次 GC 内存回收量",
"usageRatio": "当前使用率 (Alloc / Sys)",
"heapStack": "堆/栈详情",
"heapStackDesc": "运行时堆栈内存空间细节",
"heapAlloc": "当前 Heap 内存使用量",
"heapSys": "Heap 内存占用量",
"heapIdle": "Heap 内存空闲量",
"heapInuse": "正在使用的 Heap 内存",
"heapReleased": "已释放的 Heap 内存",
"stackInuse": "启动 Stack 使用量",
"stackSys": "已分配的 Stack 内存",
"structs": "底层及结构体内存",
"structsDesc": "运行时底层管理结构体开销",
"mspanInuse": "MSpan 结构内存使用量",
"mspanSys": "已分配的 MSpan 结构内存",
"mcacheInuse": "MCache 结构内存使用量",
"mcacheSys": "已分配的 MCache 结构内存",
"buckHashSys": "已分配的剖析哈希表内存",
"gcSys": "已分配的 GC 元数据内存",
"otherSys": "其它已分配的系统内存",
"gc": "垃圾回收与分配计数",
"gcDesc": "GC 历史数据与分配频次",
"numGc": "GC 执行次数",
"lastGc": "距离上次 GC 时间",
"pauseTotal": "GC 暂停时间总量",
"lastPause": "上次 GC 暂停时间",
"mallocs": "内存分配次数",
"frees": "内存释放次数",
"lookups": "指针查找次数"
},
"siteModal": {
"title": "选择监控站点",
"description": "选择要同步到 Uptime Kuma 的反代站点,支持按站点名称和域名搜索。",
"search": "搜索站点",
"searchPlaceholder": "按名称或域名搜索...",
"selectFiltered": "全选过滤项",
"clearFiltered": "清空过滤项",
"loading": "加载站点列表...",
"loadFailed": "加载站点失败",
"noMatch": "无匹配的站点",
"select": "选择",
"siteName": "站点名称",
"primaryDomain": "主域名",
"selectedCount": "已选择 {count} 个监控站点",
"save": "保存选择"
}
},
"websites": {
"title": "网站",
"createZone": "新增 Zone",
"searchRoot": "搜索 Zone 根域",
"loadingList": "加载 Zone 列表中...",
"requestFailed": "请求失败,请稍后重试。",
"emptySearch": "未找到匹配的 Zone。",
"emptyList": "暂无 Zone,点击右上角「新增 Zone」开始录入。",
"rootDomain": "根域",
"domainCount": "域名数",
"createdAt": "创建时间",
"updatedAt": "更新时间",
"actions": "操作",
"manage": "管理",
"manageZone": "管理 Zone",
"loadingDetail": "加载 Zone 详情中...",
"invalidId": "无效的网站 ID,请从网站列表进入详情页。",
"notFound": "网站不存在,可能已被删除或 ID 无效。",
"back": "返回",
"detailSubtitle": "Zone 网站管理",
"tabOverview": "概览",
"tabDomains": "域名 ({count})",
"tabCertificates": "证书 ({count})",
"basicInfo": "基本信息",
"basicInfoDesc": "维护 Zone 的可注册根域。根域变更后,请确认其下域名仍归属该根域。",
"currentRoot": "当前根域",
"editRoot": "编辑根域",
"dangerZone": "危险操作",
"dangerZoneDesc": "删除 Zone 前须清空其下全部域名;删除后不可恢复。",
"deleteZone": "删除 Zone",
"deleteZoneTitle": "确认删除 Zone",
"deleteZoneDesc": "确认删除 {domain} 吗?其下域名须先解绑路由后才能删除,此操作不可撤销。",
"deleting": "删除中…",
"confirmDelete": "确认删除",
"zoneDeleted": "Zone 已删除",
"editZone": "编辑 Zone",
"editorDesc": "Zone 仅接受可注册根域,例如 example.com。",
"rootRequired": "请输入 Zone 根域",
"rootInvalid": "请输入不含协议或通配符的根域",
"zoneUpdated": "Zone 已更新",
"zoneCreated": "Zone 已创建",
"saveFailed": "保存失败",
"saveChanges": "保存修改",
"range24h": "24 小时",
"range7d": "7 天",
"range30d": "30 天",
"chartUv": "分桶 UV",
"chartBytes": "已提供数据",
"statsFailed": "加载流量统计失败",
"analyticsUnavailable": "分析存储暂不可用,图表可能为空。请确认 ClickHouse 已启用。",
"uniqueVisitors": "查询窗口独立访客",
"uniqueVisitorsDesc": "顶部合计为整窗去重;曲线为各时间桶内 UV,桶间不可相加",
"totalRequests": "请求总数",
"totalBytes": "已提供的数据总计",
"zoneInfo": "Zone 信息",
"addDomain": "添加域名",
"emptyDomains": "暂无已添加域名",
"certificate": "证书",
"upstream": "上游",
"certNumber": "证书 #{id}",
"unbound": "未绑定",
"unlinkedRoute": "未关联路由",
"loadingEllipsis": "加载中…",
"upstreamUnset": "未配置上游",
"viewRoute": "查看路由详情",
"deleteDomain": "删除域名",
"domainDeleted": "域名已删除",
"deleteFailed": "删除失败",
"deleteDomainTitle": "确认删除域名",
"deleteDomainDesc": "确认删除 {domain} 吗?此操作不可撤销。",
"zoneCertsTitle": "本 Zone 使用的证书",
"zoneCertsDesc": "证书在全局证书库管理;此处仅展示已绑定到本 Zone 域名的证书。",
"certLibrary": "证书库",
"unboundCertHint": "还有 {count} 个域名未绑定证书,可在「域名」Tab 中选择证书。",
"emptyBoundCerts": "暂无绑定证书。请先在域名行选择证书,或前往证书库导入/申请。",
"status": "状态",
"coverage": "覆盖域名",
"expiresAt": "到期时间",
"selectZone": "请先选择 Zone",
"enterDomain": "请输入域名",
"noWildcard": "Zone 域名不支持通配符",
"invalidFormat": "域名格式不合法",
"invalidSubdomain": "子域名称格式不合法",
"mustBelongToZone": "域名必须属于 Zone {root}",
"domainAdded": "域名已添加",
"addFailed": "添加失败",
"quickCreateTitle": "快捷新增域名",
"quickCreateDesc": "选择 Zone 后输入:子域名称(如 api)、@(根域)或完整 FQDN。",
"selectRegisteredRoot": "选择注册根域",
"zoneLabel": "Zone:",
"domain": "域名",
"domainPlaceholderWithZone": "api 或 @ 或 api.{domain}",
"domainPlaceholder": "api / @ / 完整域名",
"willCreate": "将创建:",
"domainExample": "示例:输入 <api>api</api> → <fqdn>api.zone.com</fqdn>;<apex>@</apex> → 根域本身",
"certOptional": "证书(可选)",
"noCert": "不绑定证书"
},
"certificates": {
"title": "证书",
"refresh": "刷新证书",
"importCert": "导入证书",
"applyTitle": "申请证书",
"listTitle": "证书列表",
"listDesc": "展示证书有效期、备注和状态,支持查看详情、编辑内容或删除证书。",
"loadingList": "加载证书列表中...",
"requestFailed": "请求失败,请稍后重试。",
"emptyList": "暂无证书,点击右上角「导入证书」或「申请证书」开始录入。",
"notBeforeLabel": "生效:{value}",
"notAfterLabel": "到期:{value}",
"sourceLabel": "来源:{value}",
"sourceAcme": "ACME 申请",
"sourceUpload": "手动上传",
"statusLabel": "状态:{value}",
"converting": "转换申请中...",
"applying": "申请中...",
"statusError": "状态:{value}({message})",
"convertFailed": "转换失败",
"applyFailed": "申请失败",
"remarkLabel": "备注:{value}",
"noRemark": "暂无备注",
"view": "查看",
"edit": "编辑",
"renew": "续期",
"deleted": "证书已删除",
"renewSubmitted": "证书 {name} 续期任务已提交",
"imported": "证书 {name} 已导入",
"applySubmitted": "证书 {name} 申请任务已提交",
"convertSubmitted": "证书 {name} 转换申请已提交",
"reapplySubmitted": "证书 {name} 配置已更新,重新申请中...",
"updated": "证书 {name} 已更新",
"deleteTitle": "确认删除证书",
"deleteDesc": "确认删除证书 {name} 吗?",
"applyEditTitle": "编辑并重新申请证书",
"applyConvertTitle": "转换为申请证书",
"applyEditDesc": "修改 ACME 证书配置。保存后将使用新配置重新申请证书。",
"applyConvertDesc": "填写 ACME 申请资料。申请成功后,当前手动证书会原地转换为可自动续签的申请证书。",
"applyDesc": "使用 ACME (Let's Encrypt 等) 自动申请和续期证书,支持通配符域名。",
"name": "证书名称",
"namePlaceholder": "例如:主站证书",
"primaryDomain": "主域名",
"primaryDomainPlaceholder": "example.com 或 *.example.com",
"otherDomains": "其他域名",
"otherDomainsHint": "每行一个域名。如申请通配符证书,请填写对应的根域名以便一并签发。",
"dnsAccount": "DNS 服务商账号",
"selectDnsAccount": "请选择 DNS 账号",
"keyAlgorithm": "密钥算法",
"remark": "备注",
"remarkPlaceholder": "可选,用于记录证书用途。",
"autoRenew": "开启自动续签",
"autoRenewDesc": "开启后,将在证书过期前 7 天自动续期。",
"advanced": "高级选项",
"dnsServer1": "DNS 验证服务器 1",
"dnsServer2": "DNS 验证服务器 2",
"dnsServerPlaceholder": "为空则使用默认权威 DNS",
"skipCname": "跳过 CNAME 检查",
"skipCnameDesc": "在执行 DNS-01 验证时不追踪 CNAME 记录。",
"skipDns": "跳过 DNS 前置检查",
"skipDnsDesc": "直接请求 Let's Encrypt 验证而不做本地校验。",
"submitting": "提交中...",
"saveAndApply": "保存并申请",
"startConvert": "开始转换",
"startApply": "开始申请",
"editTitle": "编辑证书",
"editDesc": "可以修改证书名称、备注,以及重新上传 PEM 证书和私钥内容。",
"loadingContent": "加载证书内容中...",
"notFound": "证书不存在,可能已被删除。",
"certPem": "证书 PEM",
"keyPem": "私钥 PEM",
"convertSource": "转换来源",
"saving": "保存中...",
"saveCert": "保存证书",
"importTitle": "添加证书",
"importDesc": "支持手动粘贴 PEM 或上传证书文件。导入成功后可立即在网站表单里选择。",
"manualImport": "手动导入",
"fileImport": "文件导入",
"remarkProdPlaceholder": "例如:主站生产证书",
"importing": "导入中...",
"remarkWildcardPlaceholder": "例如:泛域名生产证书",
"certFile": "证书文件",
"keyFile": "私钥文件",
"fileSelected": "已选择:{name}",
"selectCertFile": "请选择 PEM/CRT 文件",
"selectKeyFile": "请选择 KEY/PEM 文件",
"uploading": "上传中...",
"uploadFiles": "上传文件",
"clearFiles": "清空文件",
"selectFiles": "请选择证书文件和私钥文件。",
"detailTitle": "证书详情",
"detailDesc": "查看证书元信息、备注以及当前保存的 PEM 内容。",
"loadingDetail": "加载证书详情中...",
"status": "状态",
"notBefore": "生效时间",
"notAfter": "到期时间",
"certPemCopied": "证书 PEM 已复制",
"keyPemCopied": "私钥 PEM 已复制",
"copy": "复制",
"close": "关闭",
"editCert": "编辑证书",
"deleting": "删除中...",
"deleteCert": "删除证书",
"certStatus": {
"unknownExpiry": "有效期未知",
"expired": "已过期",
"expiresInDays": "{days} 天内到期",
"valid": "有效"
},
"validation": {
"nameRequired": "请输入证书名称",
"nameTooLong": "证书名称不能超过 255 个字符",
"certPemRequired": "请输入证书 PEM 内容",
"keyPemRequired": "请输入私钥 PEM 内容",
"remarkTooLong": "备注不能超过 255 个字符",
"primaryDomainRequired": "请输入主域名",
"dnsAccountRequired": "请选择 DNS 账号"
}
},
"dnsAccounts": {
"title": "DNS 账号",
"addAccount": "添加账号",
"listTitle": "DNS 账号列表",
"listDesc": "统一管理 DNS 服务商账号,用于 ACME 证书的 DNS 验证申请。",
"loadingList": "加载 DNS 账号中...",
"requestFailed": "请求失败,请稍后重试。",
"emptyList": "暂无 DNS 账号,点击右上角「添加账号」开始录入。",
"createdAt": "创建于:{date}",
"created": "DNS 账号已添加",
"deleted": "DNS 账号已删除",
"deleteTitle": "确认删除 DNS 账号",
"deleteDesc": "确认删除 DNS 账号 {name} 吗?",
"createTitle": "添加 DNS 账号",
"createDesc": "统一管理 DNS 服务商账号,用于 ACME 证书的 DNS 验证申请。",
"accountName": "账号名称",
"accountNamePlaceholder": "Cloudflare 邮箱账号",
"provider": "DNS 服务商",
"tokenPlaceholder": "请勿使用 Global API Key",
"nameRequired": "请输入名称",
"tokenRequired": "请输入 Token",
"submitting": "提交中...",
"submit": "提交"
},
"origins": {
"title": "源站",
"subtitle": "集中维护规则复用的源站地址,减少批量改地址时的重复操作。",
"refresh": "刷新",
"create": "新增源站",
"loadFailed": "加载失败",
"emptyTitle": "暂无源站",
"emptyDesc": "点击右上角新增源站,后续规则可直接复用这些地址。",
"routeCount": "{count} 条规则",
"noRemark": "暂无备注",
"lastUpdated": "最后更新:{date}",
"detail": "详情",
"edit": "编辑",
"deleted": "源站已删除",
"deleteFailed": "删除失败",
"deleteTitle": "删除源站",
"deleteDesc": "确认删除源站 {name} 吗?",
"confirmDelete": "确认删除",
"missingId": "缺少有效的源站 ID。",
"loadingDetail": "加载源站详情...",
"backToList": "返回列表",
"notFound": "源站不存在或已被删除。",
"editOrigin": "编辑源站",
"deleteOrigin": "删除源站",
"boundRoutes": "绑定规则",
"createdAt": "创建时间",
"updatedAt": "更新时间",
"remark": "备注",
"relatedRoutes": "关联规则",
"relatedRoutesDesc": "展示当前源站作为主源站绑定的规则。",
"noRelatedRoutes": "暂无关联规则",
"noRelatedRoutesDesc": "当前源站还没有被任何规则引用。",
"domain": "域名",
"address": "源站地址",
"status": "状态",
"enabled": "启用",
"disabled": "停用",
"addressRequired": "请输入源站地址",
"addressInvalid": "源站地址格式不合法",
"updated": "源站已更新",
"created": "源站已创建",
"saveFailed": "保存失败",
"editorDesc": "源站作为规则里的可复用地址目录,协议和端口仍由规则决定。",
"name": "源站名",
"namePlaceholder": "主站源站",
"saving": "保存中...",
"saveChanges": "保存修改"
},
"proxyRoutes": {
"title": "规则配置",
"refresh": "刷新",
"createRule": "新建规则",
"listTitle": "规则列表",
"searchPlaceholder": "搜索站点、域名或上游...",
"emptyTitle": "暂无网站",
"emptyDesc": "先创建一个网站,再进入配置子页面继续补齐 HTTPS、缓存和限流。",
"noMatches": "没有匹配结果",
"noMatchesDesc": "试试调整搜索词,或者清空筛选条件。",
"siteName": "站点名称",
"domain": "域名",
"status": "状态",
"upstream": "上游",
"actions": "操作",
"enabled": "已启用",
"disabled": "已停用",
"configure": "配置",
"siteCreated": "网站已创建",
"siteDeleted": "网站已删除",
"deleteFailed": "删除失败",
"loadListFailed": "规则列表加载失败",
"unknownError": "未知错误",
"deleteSiteTitle": "确认删除网站",
"deleteSiteDesc": "确认删除网站 {name} 吗?这会删除该站点下的全部域名与配置。",
"deleting": "删除中...",
"missingId": "缺少有效的规则 ID。",
"notFound": "未找到对应规则",
"notFoundDesc": "请返回列表重试。",
"saving": "保存中...",
"saveFailed": "保存失败",
"requestFailed": "请求失败,请稍后重试。",
"back": "返回",
"publish": "发布配置",
"diffFailed": "获取配置差异失败",
"noPublishNeeded": "当前配置与激活版本一致,无需发布",
"publishSuccess": "发布成功",
"versionLabel": "版本 {version}",
"publishFailed": "发布失败",
"publishTitle": "确认发布配置",
"publishDesc": "将把当前待发布配置生成新版本并设为激活版本,节点将随后拉取更新。",
"confirmPublish": "确认发布",
"createDesc": "从已注册的 Zone 域名中选择绑定关系,创建后可继续配置缓存和限流等高级选项。",
"siteId": "站点标识",
"siteIdOptionalDesc": "可选,留空时会自动使用首个域名。",
"siteIdStableDesc": "建议使用稳定、可读的业务标识,不必与域名完全一致。",
"bindDomains": "绑定域名",
"bindDomainsHint": "从已登记域名中勾选绑定;可用「快捷新增域名」在 Zone 下创建 FQDN 并自动勾选。",
"upstreamType": "回源方式",
"upstreamDirect": "直连上游",
"upstreamTunnel": "内网穿透 (Tunnel)",
"upstreamPages": "Pages 静态站点",
"upstreamAddresses": "上游地址",
"upstreamUrlsHint": "每行一个完整 URL。第一行作为主回源,多上游模式请保持相同协议且不要包含 path 或 query。",
"selectTunnel": "选择内网穿透隧道",
"pleaseSelect": "请选择...",
"online": "在线",
"offline": "离线",
"tunnelForwardHint": "将请求转发到该隧道连接的客户端节点。",
"tunnelProtocol": "内网服务协议",
"tunnelAddress": "内网服务地址",
"tunnelAddressHint": "例如: 127.0.0.1:8080 或 192.168.1.10:80",
"selectPagesProject": "选择 Pages 项目",
"pagesProjectHint": "仅显示已启用且已有激活部署的 Pages 项目。",
"enableSite": "启用站点",
"enableSiteDesc": "关闭后会保留配置,但不会参与发布。",
"createFailed": "创建失败,请稍后重试",
"creating": "创建中…",
"create": "创建",
"searchDomainOrZone": "搜索域名或 Zone…",
"quickAddDomain": "快捷新增域名",
"noZoneDomains": "暂无可用 Zone 域名。请先在 <websites>网站管理</websites> 中添加 FQDN,或使用「快捷新增域名」。",
"noBindableDomains": "没有可绑定的域名(其余域名已绑定其他路由)。可用「快捷新增域名」创建。",
"noMatchingDomains": "没有匹配的域名",
"certNumber": "证书 #{id}",
"noCert": "无证书",
"zoneName": "Zone {name}",
"zoneId": "Zone #{id}",
"unboundDomain": "未绑定域名",
"pagesProjectId": "Pages 项目 #{id}",
"pagesUnbound": "Pages 项目未绑定",
"tunnelTargetUnset": "未配置目标",
"upstreamUnset": "未配置上游",
"domainSettings": "域名设置",
"domainSettingsDesc": "绑定已在 Zone 中注册的 FQDN。证书请在 Zone 域名管理中维护。",
"redirectNeedsCert": "启用 HTTP 跳转前,请先为所选域名绑定证书(在 Zone 中配置)",
"domainSettingsSaved": "域名设置已保存",
"redirectHttp": "HTTP 自动跳转到 HTTPS",
"redirectHttpEnabledHint": "开启后会额外生成 80 端口重定向规则。",
"redirectHttpNeedsCert": "所选域名至少绑定一张证书后才能启用。",
"reverseProxy": "反向代理",
"reverseProxyDesc": "配置请求回源上游的策略与地址。",
"proxySaved": "反向代理设置已保存",
"originHostHint": "留空时默认透传访问域名 $host。",
"customHeaders": "自定义请求头",
"customHeadersHint": "每行一条,格式为 Key: Value。",
"limits": "流量限制",
"limitsDesc": "站点限流。空或 0 继承全局默认;-1 显式关闭;大于 0 为自定义。",
"limitsSaved": "流量限制已保存",
"connLimit": "并发限制",
"connLimitHint": "空或 0 继承全局默认;-1 关闭;大于 0 为自定义并发上限。",
"ipLimit": "单 IP 限制",
"ipLimitHint": "空或 0 继承全局默认;-1 关闭;大于 0 为单 IP 自定义上限。",
"rateLimit": "限速",
"rateLimitPlaceholder": "512k/1m 或 -1",
"rateLimitHint": "空或 0 继承全局默认;-1 关闭;例如 512k、1m 为自定义带宽。",
"reqLimit": "单 IP 请求频率",
"reqLimitPlaceholder": "10r/s / 100r/m 或 -1",
"reqLimitHint": "空或 0 继承全局默认;-1 关闭;例如 10r/s、100r/m 为自定义频率。",
"cache": "缓存",
"cacheDesc": "配置站点边缘缓存策略。",
"cacheSaved": "缓存设置已保存",
"enableCache": "启用站点缓存",
"enableCacheDesc": "新建推荐「标准静态资源」。",
"cachePolicy": "缓存策略",
"policyStatic": "标准静态资源(推荐)",
"policyAll": "所有可缓存 GET(高级)",
"policySuffix": "自定义后缀",
"policyPrefix": "路径前缀",
"policyExact": "精确路径",
"advancedRiskTitle": "高级策略风险",
"advancedRiskDesc": "个性化 HTML 在源站未声明 private / no-store 时可能被边缘缓存并串给其他用户。详情见标题旁帮助。",
"cacheRules": "缓存规则",
"cacheHelpTitle": "缓存使用说明",
"cacheHelpIntro": "扩展名/策略决定是否可缓存,源站头与Set-Cookie 决定是否入库。须同时开启性能设置中的全局 OpenResty 缓存。",
"cacheHelpRecommendLabel": "推荐策略:",
"cacheHelpRecommend": "新建站点建议使用「标准静态资源」(含 css/js/map/图片/字体/媒体等,不含 HTML/JSON)。",
"cacheHelpGeneralLabel": "通用规则:",
"cacheHelpGeneral": "非 GET 不缓存;登录 Cookie 不会单独跳过缓存;源站 private/no-store 或响应 Set-Cookie 不会写入边缘。",
"cacheHelpAllGetLabel": "所有可缓存 GET:",
"cacheHelpAllGet": "高级选项,类似 Cache Everything。个性化页面须由源站声明 private/no-store,否则 HTML 可能被边缘缓存并串给其他用户。",
"cacheHelpCustomLabel": "自定义规则:",
"cacheHelpCustom": "后缀填 jpg/css/js;路径前缀填 /assets;精确路径填 /robots.txt。保存后须重新发布配置版本才会在节点生效。",
"cacheHintSuffix": "每行一个后缀,例如 jpg、css、js。",
"cacheHintPrefix": "每行一个路径前缀,例如 /assets、/static。",
"cacheHintExact": "每行一个精确路径,例如 /robots.txt。",
"cacheHintStatic": "标准静态资源使用内置扩展名列表,无需填写规则。",
"cacheHintNone": "当前策略无需额外路径规则。",
"cachePlaceholderNone": "当前策略无需额外规则",
"auth": "认证配置",
"authDesc": "配置 Basic Auth 限制未授权访问。PoW 防护请在 WAF 规则组中配置。",
"authSaved": "认证配置已保存",
"authFormInvalid": "请检查认证配置表单",
"authMode": "认证模式",
"authNone": "无认证",
"powHint": "PoW 防护仅支持在 WAF 规则组中启用并绑定站点。",
"username": "账号",
"password": "密码",
"wafDesc": "全局规则组始终生效;这里可以为当前网站叠加自定义规则组。",
"wafUpdated": "WAF 规则组已更新",
"loadingWaf": "加载 WAF 规则组...",
"alwaysOn": "始终生效",
"selectCustomRules": "选择自定义规则",
"selectCustomRulesDesc": "选中的规则会按下方执行顺序依次运行。",
"selectRule": "选择{name}",
"ruleEnabled": "启用中",
"ruleDisabled": "已停用",
"nodeCount": "{count} 个节点",
"executionOrder": "执行顺序",
"executionOrderDesc": "自定义规则按此顺序执行,可拖动或使用上下移动按钮调整。",
"noCustomWaf": "暂无自定义 WAF 规则组",
"dragRule": "拖动{name}",
"moveUpRule": "上移{name}",
"moveDownRule": "下移{name}",
"sections": {
"domains": "域名设置",
"domainsDesc": "维护站点标识,并从 Zone 中选择绑定域名。",
"limits": "流量限制",
"limitsDesc": "设置连接数和限速(可继承全局默认)。",
"proxy": "反向代理",
"proxyDesc": "配置主回源和上游地址。",
"cache": "缓存",
"cacheDesc": "配置站点缓存策略。",
"waf": "WAF",
"wafDesc": "绑定 WAF 规则组,并查看当前站点生效策略。",
"auth": "认证配置",
"authDesc": "配置基础鉴权访问,需要输入账号密码才能访问网站。"
},
"validation": {
"enterDomain": "请输入域名",
"invalidDomain": "域名格式不合法",
"enterAtLeastOneDomain": "请至少填写一个域名",
"invalidDomainWithValue": "域名格式不合法:{domain}",
"duplicateDomain": "域名重复:{domain}",
"enterAtLeastOneUpstream": "请至少填写一个上游地址",
"invalidUpstream": "上游地址格式不合法:{url}",
"upstreamMustBeHttp": "上游地址必须以 http:// 或 https:// 开头:{url}",
"upstreamMissingHost": "上游地址缺少主机名:{url}",
"multiUpstreamNoPath": "多上游模式暂不支持带路径或查询参数的地址",
"multiUpstreamSameProtocol": "同一站点的多个上游必须使用相同协议",
"invalidOriginHost": "回源 Host 格式不合法",
"invalidHeader": "自定义请求头格式不合法:{line}",
"invalidHeaderName": "自定义请求头名称不合法:{key}",
"invalidLimitRate": "限速格式不合法,请使用 512k、1m、纯数字,或 -1 关闭",
"invalidLimitReq": "请求频率格式不合法,请使用 10r/s、100r/m,或 -1 关闭",
"cacheRuleRequired": "当前缓存策略至少需要一条规则",
"invalidCacheSuffix": "缓存后缀格式不合法:{rule}",
"invalidCachePath": "缓存路径规则格式不合法:{rule}",
"siteNameTooLong": "站点标识不能超过 255 个字符",
"selectAtLeastOneDomain": "请至少选择一个域名",
"selectTunnel": "请选择内网穿透隧道",
"enterTunnelTarget": "请填写内网服务地址 (如 127.0.0.1:8080)",
"selectPagesProject": "请选择 Pages 项目",
"enterSiteId": "请输入站点标识",
"enterIntegerOrMinusOne": "请输入 -1、0 或正整数",
"enterUsername": "请输入账号",
"enterPassword": "请输入密码"
}
},
"responses": {
"title": "响应页面",
"subtitle": "配置源站错误页与离线页。",
"loadingPermission": "加载权限信息...",
"loadingConfig": "加载响应页面配置...",
"loadingPage": "加载响应页面...",
"loadingErrorConfig": "加载错误页配置...",
"loadingOfflineConfig": "加载离线页配置...",
"loadFailed": "加载失败",
"forbidden": "权限不足",
"forbiddenSettings": "只有管理员可以访问响应页面设置。",
"forbiddenPreviewError": "只有管理员可以预览错误页。",
"forbiddenPreviewOffline": "只有管理员可以预览离线页。",
"forbiddenEditError": "只有管理员可以编辑错误页 HTML。",
"forbiddenEditOffline": "只有管理员可以编辑离线页 HTML。",
"errorPage": "错误页",
"offlinePage": "离线页",
"saveFailed": "保存失败",
"policySaved": "触发策略已保存,请前往版本发布使配置生效",
"triggerPolicy": "触发策略",
"triggerPolicyDesc": "配置源站错误页的启用条件与触发状态码。",
"enableErrorPage": "启用源站错误页",
"enableErrorPageDesc": "关闭后会透传源站或 Nginx 默认错误响应。",
"getOnly": "仅针对 GET 请求",
"getOnlyDesc": "开启后仅对 GET 请求的匹配错误状态码返回自定义错误页。",
"statusCodes": "触发状态码",
"statusCodesDesc": "支持单码(如 502)或闭区间(如 500-599)。",
"statusCodesPlaceholder": "例如 502 或 500-599,回车添加",
"pagePreview": "页面预览",
"preview": "预览",
"edit": "编辑",
"errorPagePreview": "源站错误页预览",
"errorPreview": "错误页预览",
"offlinePreview": "离线页预览",
"offlinePageDesc": "启用后给启用 HTTPS 的网站下发 Service Worker,域名无法访问时浏览器从缓存展示此离线页。",
"offlineSaved": "离线页已保存,请前往版本发布使配置生效",
"enableOffline": "启用 Service Worker 离线页",
"enableOfflineDesc": "仅对 HTTPS 网站生效。",
"enableOfflineAria": "启用离线页",
"scope": "生效范围",
"scopeDesc": "仅对选中的 HTTPS 域名生效;留空则不注入。",
"addDomain": "添加域名",
"noScopeSelected": "尚未选择生效域名,保存后不注入任何站点。",
"enableThenSelectScope": "启用离线兜底后可选择生效域名。",
"removeDomain": "移除 {domain}",
"selectScopeTitle": "选择生效域名",
"selectScopeDesc": "仅对选中的 HTTPS 域名注入离线兜底;搜索筛选与批量勾选。",
"domain": "域名",
"searchDomainOrZone": "搜索域名或顶级域…",
"selectedCount": "已选 {count}",
"visibleCount": "可见 {count}",
"unselectVisible": "取消全选",
"selectVisible": "全选可见",
"clear": "清空",
"noAvailableDomains": "暂无可用域名,请先在 Zone 管理中注册域名。",
"noMatchingDomains": "没有匹配的域名",
"selectZone": "选择顶级域 {domain}",
"apex": "顶级域",
"confirm": "确定",
"backToError": "返回错误页",
"backToOffline": "返回离线页",
"closePreview": "关闭预览",
"fullscreen": "全屏展示",
"htmlTooLarge": "HTML 大小超出限制(最大 256KB)",
"errorHtmlSaved": "源站错误页 HTML 已保存,请前往版本发布使配置生效",
"offlineHtmlSaved": "离线页 HTML 已保存,请前往版本发布使配置生效",
"templateNotFound": "未找到所选模板",
"templateLoaded": "已加载模板「{name}」到编辑器",
"errorRestored": "已清空为使用服务端内置默认模板(需保存后生效)",
"offlineRestored": "已清空为使用内置默认模板(需保存后生效)",
"editErrorHtml": "编辑错误页 HTML",
"editOfflineHtml": "编辑离线页 HTML",
"offlineLivePreview": "离线页实时预览",
"builtinTemplates": "内置模板",
"selectTemplate": "选择模板",
"loadTemplate": "加载模板",
"restoreDefault": "恢复默认",
"restoreTitle": "恢复默认 HTML?",
"restoreErrorDesc": "将清空编辑器内容,保存后使用服务端内置默认模板。此操作不会自动保存。",
"restoreOfflineDesc": "将清空编辑器内容,保存后使用内置默认模板。此操作不会自动保存。",
"confirmRestore": "确认恢复"
}
}