{ "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.zone.com;@ → 根域本身", "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 域名。请先在 网站管理 中添加 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": "确认恢复" } }