{ "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": "操作失败", "autoConfigMustBeObject": "自动配置必须是 JSON 对象。", "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": "确认删除" } }, "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": "保存选择" } } }