精简版第四轮补裁(P4): 页面层摘除 + Xray更新端点下线 + 本机核心监管下线
CI / go-test (push) Canceled after 0s
CI / postgres-durable-first (push) Canceled after 0s
CI / codegen (push) Canceled after 0s
CI / govulncheck (push) Canceled after 0s
CI / race (push) Canceled after 0s
CI / fuzz-smoke (push) Canceled after 0s
CI / golangci (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
CodeQL Advanced / Analyze (go) (push) Canceled after 0s
CodeQL Advanced / Analyze (actions) (push) Canceled after 0s
CodeQL Advanced / Analyze (javascript-typescript) (push) Canceled after 0s
Release 3X-UI / build (386) (push) Canceled after 0s
Release 3X-UI / build (amd64) (push) Canceled after 0s
Release 3X-UI / build (arm64) (push) Canceled after 0s
Release 3X-UI / build (armv5) (push) Canceled after 0s
Release 3X-UI / build (armv6) (push) Canceled after 0s
Release 3X-UI / build (armv7) (push) Canceled after 0s
Release 3X-UI / build (s390x) (push) Canceled after 0s
Release 3X-UI / Build for Windows (amd64) (push) Canceled after 0s
Release 3X-UI / Publish rolling dev release (push) Canceled after 0s
CI / go-test (push) Canceled after 0s
CI / postgres-durable-first (push) Canceled after 0s
CI / codegen (push) Canceled after 0s
CI / govulncheck (push) Canceled after 0s
CI / race (push) Canceled after 0s
CI / fuzz-smoke (push) Canceled after 0s
CI / golangci (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
CodeQL Advanced / Analyze (go) (push) Canceled after 0s
CodeQL Advanced / Analyze (actions) (push) Canceled after 0s
CodeQL Advanced / Analyze (javascript-typescript) (push) Canceled after 0s
Release 3X-UI / build (386) (push) Canceled after 0s
Release 3X-UI / build (amd64) (push) Canceled after 0s
Release 3X-UI / build (arm64) (push) Canceled after 0s
Release 3X-UI / build (armv5) (push) Canceled after 0s
Release 3X-UI / build (armv6) (push) Canceled after 0s
Release 3X-UI / build (armv7) (push) Canceled after 0s
Release 3X-UI / build (s390x) (push) Canceled after 0s
Release 3X-UI / Build for Windows (amd64) (push) Canceled after 0s
Release 3X-UI / Publish rolling dev release (push) Canceled after 0s
页面层(用户真机截图发现前两轮漏裁): - 设置: 摘除 Telegram机器人/邮件菜单与页面, 及页内残留入口(通知页/外部流量/LDAP/2FA设置页) - Xray配置: 摘除负载均衡/DNS/高级配置菜单与页面; 基础配置(出站+路由)完好 - 总览: 摘除 Xray更新弹窗(VersionModal+GeodataSection)全部入口, 版本号改为静态展示 - 13个locale同步摘除461个已删功能专属翻译键(逐键核查前后端引用为零; i18n-dead-keys测试全绿) Xray更新后端(经调查确认仅服务本机bin/xray, 与agent下发/订阅无关): - 删除 getXrayVersion/installXray/updateGeofile 路由与handler(访问返回404) - 删除 ServerService 对应实现与校验和函数; 同步api-docs/monitor白名单/openapi 本机核心监管下线(设计: 主控永不运行本机xray, 入站全在agent): - XrayService.RestartXray 降级为no-op(一次性Warning说明日志); StopXray无进程时幂等返回 - web.go 摘除启动拉起本机核心/CheckXrayRunning看门狗(1s)/ApplyPendingRestart cron(30s)/XrayTrafficJob/CheckClientIpJob 注册 - ApplyPendingRestart 降级为消费即清, 其测试更新为新语义 - XrayMetricsService.Sample 短路: 不再每2s探本机/debug/vars, 状态优雅置为不可用 - 配置生成(纯JSON)/agent链路/订阅/入站CRUD未动; 状态读数优雅归零(stop/Unknown) 注: TestGetXrayConfig_EnabledClientsStillEmitted 在基线945b3a5同样失败(既有问题, 非本轮引入)
This commit is contained in:
@@ -67,16 +67,12 @@
|
||||
"success": "成功",
|
||||
"lastOnline": "上次上線",
|
||||
"lastSubFetch": "上次取得訂閱",
|
||||
"getVersion": "獲取版本",
|
||||
"install": "安裝",
|
||||
"clients": "客戶端",
|
||||
"usage": "使用情況",
|
||||
"twoFactorCode": "代碼",
|
||||
"remained": "剩餘",
|
||||
"security": "安全",
|
||||
"emptyDnsDesc": "未添加 DNS 伺服器。",
|
||||
"emptyFakeDnsDesc": "未添加 Fake DNS 伺服器。",
|
||||
"emptyBalancersDesc": "未添加負載平衡器。",
|
||||
"somethingWentWrong": "發生錯誤",
|
||||
"subscription": {
|
||||
"title": "訂閱資訊",
|
||||
@@ -86,7 +82,6 @@
|
||||
"uploaded": "已上傳",
|
||||
"expiry": "到期",
|
||||
"totalQuota": "總配額",
|
||||
"individualLinks": "個別連結",
|
||||
"active": "啟用",
|
||||
"inactive": "停用",
|
||||
"unlimited": "無限制",
|
||||
@@ -136,9 +131,6 @@
|
||||
"xrayStatus": "Xray",
|
||||
"stopXray": "停止",
|
||||
"restartXray": "重新啟動",
|
||||
"xraySwitch": "版本",
|
||||
"xrayUpdates": "Xray 更新",
|
||||
"xraySwitchClickDesk": "請謹慎選擇,因為較舊版本可能與當前配置不相容",
|
||||
"updatePanel": "更新面板",
|
||||
"panelUpdateDesc": "這將把 3X-UI 更新到最新版本並重新啟動面板服務。",
|
||||
"currentPanelVersion": "目前面板版本",
|
||||
@@ -200,9 +192,6 @@
|
||||
"download": "下載",
|
||||
"sent": "已發送",
|
||||
"received": "已接收",
|
||||
"xraySwitchVersionDialog": "您確定要變更 Xray 版本嗎?",
|
||||
"xraySwitchVersionDialogDesc": "這將會把 Xray 版本變更為 #version#。",
|
||||
"xraySwitchVersionPopover": "Xray 更新成功",
|
||||
"panelUpdateDialog": "您確定要更新面板嗎?",
|
||||
"panelUpdateDialogDesc": "這將把 3X-UI 更新到 #version# 並重新啟動面板服務。",
|
||||
"panelUpdateStartedPopover": "面板更新已開始",
|
||||
@@ -210,24 +199,6 @@
|
||||
"panelUpdateFailedDesc": "更新未成功完成。請檢查伺服器日誌,或在命令列執行「x-ui update」。",
|
||||
"panelUpdateUnknownTitle": "無法確認更新是否已完成",
|
||||
"panelUpdateUnknownDesc": "面板未能及時回報結果。請重新整理以檢查目前版本,或檢查伺服器日誌。",
|
||||
"geofileUpdateDialog": "您確定要更新地理檔案嗎?",
|
||||
"geofileUpdateDialogDesc": "這將更新 #filename# 檔案。",
|
||||
"geofilesUpdateDialogDesc": "這將更新所有文件。",
|
||||
"geofilesUpdateAll": "全部更新",
|
||||
"geofileUpdatePopover": "地理檔案更新成功",
|
||||
"geodataTitle": "Geodata 自動更新",
|
||||
"geodataHint": "Xray 會按排程下載這些檔案並熱重載,無需重啟。URL 必須為 HTTPS。檔案必須已存在於 bin 目錄中,Xray 才能對其更新。",
|
||||
"geodataCron": "更新排程 (cron)",
|
||||
"geodataOutbound": "透過出站下載(可選)",
|
||||
"geodataFile": "檔案名稱",
|
||||
"geodataAddFile": "新增檔案",
|
||||
"geodataSaveRestart": "儲存並重啟 Xray",
|
||||
"geodataConfirmTitle": "儲存 geodata 設定?",
|
||||
"geodataConfirmContent": "將更新 Xray 設定範本並重啟 Xray。",
|
||||
"geodataInvalidUrl": "每個檔案都需要 HTTPS 位址。",
|
||||
"geodataInvalidFile": "檔案名稱必須是純檔名,例如 geosite_custom.dat(不能包含路徑)。",
|
||||
"geodataInvalidCron": "Cron 必須為 5 段,例如 0 4 * * *",
|
||||
"geodataEmpty": "尚未設定檔案。路由規則中可透過 ext:geosite_custom.dat:category 引用檔案。",
|
||||
"dontRefresh": "安裝中,請勿重新整理此頁面",
|
||||
"logs": "記錄",
|
||||
"accessLogs": "存取記錄",
|
||||
@@ -1082,7 +1053,6 @@
|
||||
"warnDefaultBasePath": "預設根路徑 \"/\" 廣為人知 — 請更改為隨機路徑。",
|
||||
"warnDefaultSubPath": "預設訂閱路徑 \"/sub/\" 廣為人知 — 請更改。",
|
||||
"warnDefaultJsonPath": "預設 JSON 訂閱路徑 \"/json/\" 廣為人知 — 請更改。",
|
||||
"TGBotSettings": "Telegram 機器人",
|
||||
"panelListeningIP": "面板監聽 IP",
|
||||
"panelListeningIPDesc": "預設留空監聽所有 IP",
|
||||
"panelListeningDomain": "面板監聽域名",
|
||||
@@ -1107,43 +1077,12 @@
|
||||
"currentPassword": "原密碼",
|
||||
"newUsername": "新使用者名稱",
|
||||
"newPassword": "新密碼",
|
||||
"telegramBotEnable": "啟用 Telegram 機器人",
|
||||
"telegramBotEnableDesc": "啟用 Telegram 機器人功能",
|
||||
"telegramToken": "Telegram Token",
|
||||
"telegramTokenDesc": "從 '{'@'}BotFather' 獲取的 Telegram 機器人令牌",
|
||||
"telegramProxy": "SOCKS 代理",
|
||||
"telegramProxyDesc": "啟用 SOCKS5 代理連線到 Telegram(根據指南調整設定)",
|
||||
"telegramAPIServer": "Telegram API 伺服器",
|
||||
"telegramAPIServerDesc": "要使用的 Telegram API 伺服器。留空以使用預設伺服器。",
|
||||
"telegramChatId": "管理員聊天 ID",
|
||||
"telegramChatIdDesc": "Telegram 管理員聊天 ID (多個以逗號分隔)(可通過 {'@'}userinfobot 獲取,或在機器人中使用 '/id' 命令獲取)",
|
||||
"telegramNotifyTime": "通知時間",
|
||||
"telegramNotifyTimeDesc": "Telegram 機器人傳送週期性報告的頻率。選擇預設間隔,或選擇「自訂」以輸入 crontab 運算式。",
|
||||
"notifyTime": {
|
||||
"every": "@every — 依間隔重複",
|
||||
"hourly": "@hourly — 每小時",
|
||||
"daily": "@daily — 每天 00:00",
|
||||
"weekly": "@weekly — 每週",
|
||||
"monthly": "@monthly — 每月",
|
||||
"custom": "自訂 (crontab)",
|
||||
"seconds": "秒",
|
||||
"minutes": "分鐘",
|
||||
"hours": "小時",
|
||||
"interval": "間隔",
|
||||
"unit": "單位"
|
||||
},
|
||||
"tgNotifyBackup": "資料庫備份",
|
||||
"tgNotifyBackupDesc": "傳送帶有報告的資料庫備份檔案",
|
||||
"tgNotifyLogin": "登入通知",
|
||||
"tgNotifyLoginDesc": "當有人試圖登入你的面板時顯示使用者名稱、IP 地址和時間",
|
||||
"sessionMaxAge": "會話時長",
|
||||
"sessionMaxAgeDesc": "保持登入狀態的時長(單位:分鐘)",
|
||||
"expireTimeDiff": "到期通知閾值",
|
||||
"expireTimeDiffDesc": "達到此閾值時,將收到有關到期時間的通知(單位:天)",
|
||||
"trafficDiff": "流量耗盡閾值",
|
||||
"trafficDiffDesc": "達到此閾值時,將收到有關流量耗盡的通知(單位:GB)",
|
||||
"tgNotifyCpu": "CPU 負載通知閾值",
|
||||
"tgNotifyCpuDesc": "CPU 負載超過此閾值時,將收到通知(單位:%)",
|
||||
"timeZone": "時區",
|
||||
"timeZoneDesc": "定時任務將按照該時區的時間執行",
|
||||
"subSettings": "訂閱設定",
|
||||
@@ -1208,10 +1147,6 @@
|
||||
"subEncryptDesc": "訂閱服務返回的內容將採用 Base64 編碼",
|
||||
"subURI": "反向代理 URI",
|
||||
"subURIDesc": "用於訂閱連結和 QR 碼的完整基礎 URL(scheme://域名[:埠]/路徑/),會取代監聽域名/監聽埠使用。當訂閱透過反向代理存取,或使用與上面不同的域名/埠存取時,請設定此項。",
|
||||
"externalTrafficInformEnable": "外部交通通知",
|
||||
"externalTrafficInformEnableDesc": "每次流量更新時通知外部 API。",
|
||||
"externalTrafficInformURI": "外部流量通知 URI",
|
||||
"externalTrafficInformURIDesc": "流量更新將會傳送到此 URI",
|
||||
"restartXrayOnClientDisable": "用戶自動停用後重新啟動 Xray",
|
||||
"restartXrayOnClientDisableDesc": "當用戶因到期或流量上限而被自動停用時,重新啟動 Xray。",
|
||||
"fragment": "分片",
|
||||
@@ -1221,38 +1156,6 @@
|
||||
"noisesSett": "Noises 設定",
|
||||
"trustedProxyCidrs": "信任代理 CIDR",
|
||||
"trustedProxyCidrsDesc": "允許設定轉發 host、proto 與客戶端 IP 標頭的 IP/CIDR(逗號分隔)。",
|
||||
"ldap": {
|
||||
"enable": "啟用 LDAP 同步",
|
||||
"host": "LDAP host",
|
||||
"port": "LDAP 連接埠",
|
||||
"useTls": "使用 TLS (LDAPS)",
|
||||
"skipTlsVerify": "略過 TLS 憑證驗證",
|
||||
"skipTlsVerifyDesc": "不安全 — 停用伺服器憑證驗證。僅用於內部/不受信任的 CA。",
|
||||
"bindDn": "Bind DN",
|
||||
"passwordConfigured": "已設定;留空以保留目前密碼。",
|
||||
"passwordUnconfigured": "未設定。",
|
||||
"passwordPlaceholder": "已設定 - 輸入新值以取代",
|
||||
"baseDn": "Base DN",
|
||||
"userFilter": "使用者篩選",
|
||||
"userAttr": "使用者屬性 (username/email)",
|
||||
"vlessField": "VLESS flag 屬性",
|
||||
"flagField": "通用 flag 屬性 (選用)",
|
||||
"flagFieldDesc": "若設定,將覆寫 VLESS flag — 如 shadowInactive。",
|
||||
"truthyValues": "Truthy 值",
|
||||
"truthyValuesDesc": "以逗號分隔;預設: true,1,yes,on",
|
||||
"invertFlag": "反轉 flag",
|
||||
"invertFlagDesc": "當屬性表示已停用時啟用 (如 shadowInactive)。",
|
||||
"syncSchedule": "同步排程",
|
||||
"syncScheduleDesc": "類 cron 字串,如 @every 1m",
|
||||
"inboundTags": "入站標籤",
|
||||
"inboundTagsDesc": "允許 LDAP 同步自動建立或刪除客戶端的入站。",
|
||||
"noInbounds": "未找到入站。請先在「入站」中建立。",
|
||||
"autoCreate": "自動建立客戶端",
|
||||
"autoDelete": "自動刪除客戶端",
|
||||
"defaultTotalGb": "預設總流量 (GB)",
|
||||
"defaultExpiryDays": "預設到期 (天)",
|
||||
"defaultIpLimit": "預設 IP 限制"
|
||||
},
|
||||
"subFormats": {
|
||||
"finalMask": "Final Mask",
|
||||
"finalMaskDesc": "將 Xray finalmask TCP/UDP 遮罩和 QUIC 參數注入每個產生的 Xray JSON 設定。需要支援 Xray JSON 訂閱的用戶端應用程式和較新的 Xray 核心。",
|
||||
@@ -1276,31 +1179,15 @@
|
||||
"muxSett": "複用器設定",
|
||||
"direct": "直接連線",
|
||||
"directDesc": "直接與特定國家的域或 IP 範圍建立連線",
|
||||
"notifications": "通知",
|
||||
"certs": "證書",
|
||||
"externalTraffic": "外部流量",
|
||||
"dateAndTime": "日期和時間",
|
||||
"proxyAndServer": "代理和伺服器",
|
||||
"intervals": "間隔",
|
||||
"information": "資訊",
|
||||
"profile": "資料",
|
||||
"language": "語言",
|
||||
"telegramBotLanguage": "Telegram 機器人語言",
|
||||
"security": {
|
||||
"admin": "管理員憑證",
|
||||
"twoFactor": "雙重驗證",
|
||||
"twoFactorEnable": "啟用 2FA",
|
||||
"twoFactorEnableDesc": "增加額外的驗證層以提高安全性。",
|
||||
"twoFactorModalSetTitle": "啟用雙重認證",
|
||||
"twoFactorModalDeleteTitle": "停用雙重認證",
|
||||
"twoFactorModalSteps": "要設定雙重認證,請執行以下步驟:",
|
||||
"twoFactorModalFirstStep": "1. 在認證應用程式中掃描此 QR 碼,或複製 QR 碼附近的令牌並貼到應用程式中",
|
||||
"twoFactorModalSecondStep": "2. 輸入應用程式中的驗證碼",
|
||||
"twoFactorModalRemoveStep": "輸入應用程式中的驗證碼以移除雙重認證。",
|
||||
"twoFactorModalChangeCredentialsTitle": "更改憑證",
|
||||
"twoFactorModalChangeCredentialsStep": "輸入應用程式中的代碼以更改管理員憑證。",
|
||||
"twoFactorModalSetSuccess": "雙重身份驗證已成功建立",
|
||||
"twoFactorModalDeleteSuccess": "雙重身份驗證已成功刪除",
|
||||
"twoFactorModalError": "驗證碼錯誤",
|
||||
"show": "顯示",
|
||||
"hide": "隱藏",
|
||||
@@ -1323,36 +1210,6 @@
|
||||
"getOutboundTrafficError": "取得出站流量錯誤",
|
||||
"resetOutboundTrafficError": "重設出站流量錯誤"
|
||||
},
|
||||
"smtpSettings": "SMTP 設定",
|
||||
"smtpEnable": "啟用電子郵件通知",
|
||||
"smtpEnableDesc": "透過 SMTP 啟用電子郵件通知",
|
||||
"smtpHost": "SMTP 主機",
|
||||
"smtpHostDesc": "SMTP 伺服器主機名稱(例如 smtp.gmail.com)",
|
||||
"smtpPort": "SMTP 連接埠",
|
||||
"smtpPortDesc": "SMTP 伺服器連接埠(預設:587)",
|
||||
"smtpUsername": "SMTP 使用者名稱",
|
||||
"smtpUsernameDesc": "SMTP 驗證使用者名稱",
|
||||
"smtpFrom": "寄件者位址 (From)",
|
||||
"smtpFromDesc": "郵件 From 標頭使用的位址。留空則使用使用者名稱。",
|
||||
"smtpFromName": "寄件者名稱 (From)",
|
||||
"smtpFromNameDesc": "From 標頭中顯示在位址前的可選顯示名稱。",
|
||||
"smtpPassword": "SMTP 密碼",
|
||||
"smtpPasswordDesc": "SMTP 驗證密碼",
|
||||
"smtpTo": "收件人",
|
||||
"smtpToDesc": "以逗號分隔的收件人電子郵件地址",
|
||||
"emailSettings": "電子郵件",
|
||||
"emailNotifications": "通知",
|
||||
"smtpEventBusNotify": "電子郵件事件通知",
|
||||
"smtpEventBusNotifyDesc": "選擇觸發電子郵件通知的事件",
|
||||
"tgEventBusNotify": "Telegram 事件通知",
|
||||
"tgEventBusNotifyDesc": "選擇觸發 Telegram 通知的事件",
|
||||
"testSmtp": "傳送測試郵件",
|
||||
"testTgBot": "傳送測試訊息",
|
||||
"eventGroupOutbound": "出站",
|
||||
"eventGroupXray": "Xray 核心",
|
||||
"eventGroupSystem": "系統",
|
||||
"eventGroupSecurity": "安全性",
|
||||
"eventGroupNode": "節點",
|
||||
"eventOutboundDown": "中斷",
|
||||
"eventOutboundUp": "恢復",
|
||||
"eventXrayCrash": "當機",
|
||||
@@ -1360,36 +1217,7 @@
|
||||
"eventNodeUp": "上線",
|
||||
"eventCPUHigh": "CPU 偏高(%)",
|
||||
"requestFailed": "請求失敗",
|
||||
"smtpEncryption": "加密",
|
||||
"smtpEncryptionDesc": "SMTP 連線加密方式",
|
||||
"smtpEncryptionNone": "無(純文字)",
|
||||
"smtpEncryptionStartTLS": "STARTTLS",
|
||||
"smtpEncryptionTLS": "TLS(隱含)",
|
||||
"smtpStageConnect": "連線",
|
||||
"smtpStageAuth": "驗證",
|
||||
"smtpStageSend": "傳送",
|
||||
"smtpTestSuccess": "測試郵件已成功傳送",
|
||||
"smtpHostNotConfigured": "尚未設定 SMTP 主機",
|
||||
"smtpNoRecipients": "尚未設定收件人",
|
||||
"smtpFromNotConfigured": "未設定 SMTP 寄件人地址",
|
||||
"eventLoginAttempt": "登入嘗試",
|
||||
"telegramTokenConfigured": "已設定;留空以保留目前的權杖。",
|
||||
"telegramTokenPlaceholder": "已設定 - 輸入新權杖以取代",
|
||||
"smtpPasswordConfigured": "已設定;留空以保留目前的密碼。",
|
||||
"smtpPasswordPlaceholder": "已設定 - 輸入新密碼以取代",
|
||||
"smtpNotInitialized": "SMTP 尚未初始化",
|
||||
"tgBotNotEnabled": "Telegram 機器人未啟用",
|
||||
"tgTestFailed": "Telegram 測試失敗",
|
||||
"tgTestSuccess": "測試訊息已傳送至 Telegram",
|
||||
"tgBotNotRunning": "Telegram 機器人未執行",
|
||||
"smtpErrorAuth": "驗證失敗 — 請檢查使用者名稱和密碼",
|
||||
"smtpErrorStarttls": "伺服器需要 STARTTLS — 請變更加密類型",
|
||||
"smtpErrorTls": "伺服器需要 TLS — 請變更加密類型",
|
||||
"smtpErrorRefused": "連線遭拒 — 請檢查主機和連接埠",
|
||||
"smtpErrorTimeout": "連線逾時 — 無法連線至主機",
|
||||
"smtpErrorRelay": "伺服器拒絕從此地址傳送",
|
||||
"smtpErrorEof": "連線已被伺服器關閉",
|
||||
"smtpErrorUnknown": "SMTP 錯誤:{{ .Error }}",
|
||||
"eventMemoryHigh": "記憶體使用率高 (%)",
|
||||
"remarkTemplate": "備註範本",
|
||||
"remarkTemplateDesc": "設定後,這將取代每個訂閱連結的備註模型——使用變數標記撰寫您自己的格式(使用按鈕來插入)。留空則使用上方的模型。",
|
||||
@@ -1483,8 +1311,6 @@
|
||||
"directdomains": "直接域名",
|
||||
"ipv4Routing": "IPv4 路由",
|
||||
"ipv4RoutingDesc": "此選項將僅通過 IPv4 路由到目標域",
|
||||
"Template": "高階 Xray 配置模板",
|
||||
"TemplateDesc": "最終的 Xray 配置檔案將基於此模板生成",
|
||||
"FreedomStrategy": "Freedom 協議策略",
|
||||
"FreedomStrategyDesc": "設定 Freedom 協議中網路的輸出策略",
|
||||
"FreedomHappyEyeballs": "Freedom Happy Eyeballs (IPv4/IPv6)",
|
||||
@@ -1500,11 +1326,6 @@
|
||||
"Balancers": "負載均衡",
|
||||
"balancerTagRequired": "標籤為必填",
|
||||
"balancerSelectorRequired": "至少選擇一個出站",
|
||||
"balancerLive": "目前目標",
|
||||
"balancerOverride": "強制指定",
|
||||
"balancerOverridePh": "自動(策略)",
|
||||
"balancerLiveRefresh": "重新整理負載均衡器即時狀態",
|
||||
"balancerNotRunning": "此負載均衡器在執行中的 Xray 未啟用 — 請先儲存變更或啟動 Xray",
|
||||
"routeTester": "路由測試",
|
||||
"routeTesterDesc": "向執行中的 Xray 查詢某個連線將使用哪個出站。不會傳送真實流量 — 結果直接來自即時路由引擎。",
|
||||
"routeTesterDest": "網域或 IP",
|
||||
@@ -1516,7 +1337,6 @@
|
||||
"routeTesterViaBalancer": "經由負載均衡器",
|
||||
"routeTesterDefaultOutbound": "無路由規則匹配 — 流量將導向預設(第一個)出站。",
|
||||
"Routings": "路由規則",
|
||||
"completeTemplate": "全部",
|
||||
"logLevel": "日誌級別",
|
||||
"logLevelDesc": "錯誤日誌的日誌級別,用於指示需要記錄的資訊",
|
||||
"accessLog": "訪問日誌",
|
||||
@@ -1544,7 +1364,6 @@
|
||||
"source": "來源",
|
||||
"dest": "目的地址",
|
||||
"inbound": "入站",
|
||||
"balancer": "負載均衡",
|
||||
"useComma": "逗號分隔的項目"
|
||||
},
|
||||
"routing": {
|
||||
@@ -1725,32 +1544,7 @@
|
||||
"alreadyAdded": "此伺服器已在出站清單中。若要換新金鑰請按 {reset}。",
|
||||
"provisionFailed": "無法產生 PIA 出站,請重試。"
|
||||
},
|
||||
"tabBalancerSettings": "負載平衡設定",
|
||||
"tabObservatory": "觀測器",
|
||||
"observatory": {
|
||||
"autoManaged": "觀測器會根據你的負載平衡器自動管理。可在下方調整探測方式;被觀測的出站會跟隨負載平衡器的選擇器。",
|
||||
"emptyHint": "目前沒有作用中的連線觀測器。當你建立 Least Ping 或 Least Load 負載平衡器,或帶有 fallback 的 Random / Round-robin 負載平衡器時,會自動新增一個,讓依賴觀測器的負載平衡器能在選擇目標前檢查出站健康狀態。",
|
||||
"mixedLegacy": "此設定同時包含 Observatory 與 Burst Observatory。Xray 只使用一個全域觀測器,因此不支援這種舊式混合狀態;儲存負載平衡器時會將其正規化為單一觀測器。",
|
||||
"subjectSelector": "被觀測的出站",
|
||||
"subjectSelectorDesc": "此觀測器探測的出站標籤。會根據你的負載平衡器自動管理。",
|
||||
"probeURL": "探測 URL",
|
||||
"probeURLDesc": "用於量測每個出站而請求的 URL,應回傳 HTTP 204。",
|
||||
"probeInterval": "探測間隔",
|
||||
"probeIntervalDesc": "每個出站的探測頻率,例如 30s、1m、2h45m。",
|
||||
"enableConcurrency": "並行探測",
|
||||
"enableConcurrencyDesc": "一次探測所有被觀測的出站,而非逐一探測。較快,但在網路上更明顯。",
|
||||
"destination": "探測目標",
|
||||
"destinationDesc": "用於量測每個出站而請求的 URL,應回傳 HTTP 204。",
|
||||
"connectivity": "連線檢查",
|
||||
"connectivityDesc": "選用的本機網路檢查 URL,僅在目標失敗後才嘗試。留空則略過。",
|
||||
"interval": "探測間隔",
|
||||
"intervalDesc": "每個出站兩次探測之間的平均時間,例如 1m。最小 10s。",
|
||||
"timeout": "探測逾時",
|
||||
"timeoutDesc": "判定探測失敗前的等待時間,例如 5s。",
|
||||
"sampling": "取樣數量",
|
||||
"samplingDesc": "為每個出站評分而保留的最近探測結果數量。",
|
||||
"httpMethod": "HTTP 方法",
|
||||
"httpMethodDesc": "探測所用的 HTTP 方法。",
|
||||
"deleteAlsoObservatory": "這是最後一個使用 Observatory 的負載平衡器,因此它也會一併被移除。",
|
||||
"deleteAlsoBurst": "這是最後一個使用 Burst Observatory 的負載平衡器,因此它也會一併被移除。"
|
||||
},
|
||||
@@ -1762,25 +1556,7 @@
|
||||
},
|
||||
"balancer": {
|
||||
"balancerStrategy": "策略",
|
||||
"tag": "標籤",
|
||||
"tagDuplicate": "該標籤已被其他均衡器使用",
|
||||
"tagPlaceholder": "唯一均衡器標籤",
|
||||
"selector": "選擇器",
|
||||
"fallback": "備用負載平衡器",
|
||||
"cycleTooltip": "循環: {path} → (回到 {start})",
|
||||
"expected": "期望",
|
||||
"expectedPlaceholder": "最佳節點數",
|
||||
"maxRtt": "最大 RTT",
|
||||
"tolerance": "容差",
|
||||
"baselines": "基準值",
|
||||
"costs": "成本設定",
|
||||
"costMatch": "標籤比對模式",
|
||||
"costValue": "權重",
|
||||
"costRegexp": "正規表示式比對",
|
||||
"balancerDeleteInUse": "無法刪除此負載平衡器 — 它被用作以下負載平衡器的備用:{names}",
|
||||
"balancerFallbackCycle": "無法將此負載平衡器設定為備用 — 這會建立循環依賴。",
|
||||
"balancerFallbackInfo": "流量將透過以下路徑路由:負載平衡器 → Loopback → 伺服器 → 目標負載平衡器 → 出站連線。這會增加一個經過伺服器的額外跳轉,可能會引入輕微延遲。",
|
||||
"fallbackBalancerHint": "選擇另一個負載平衡器作為備用",
|
||||
"reservedPrefix": "_bl_ 前綴保留給內部負載均衡器迴圈物件"
|
||||
},
|
||||
"wireguard": {
|
||||
@@ -1883,55 +1659,8 @@
|
||||
"usage": "使用",
|
||||
"addOutbound": "新增出站"
|
||||
},
|
||||
"dns": {
|
||||
"enable": "啟用 DNS",
|
||||
"enableDesc": "啟用內建 DNS 伺服器",
|
||||
"tag": "DNS 入站標籤",
|
||||
"tagDesc": "此標籤將在路由規則中可用作入站標籤",
|
||||
"clientIp": "客戶端 IP",
|
||||
"clientIpDesc": "用於在 DNS 查詢期間通知伺服器指定的 IP 位置",
|
||||
"disableCache": "禁用快取",
|
||||
"disableCacheDesc": "禁用 DNS 快取",
|
||||
"disableFallback": "禁用回退",
|
||||
"disableFallbackDesc": "禁用回退 DNS 查詢",
|
||||
"disableFallbackIfMatch": "匹配時禁用回退",
|
||||
"disableFallbackIfMatchDesc": "當 DNS 伺服器的匹配域名列表命中時,禁用回退 DNS 查詢",
|
||||
"enableParallelQuery": "啟用並行查詢",
|
||||
"enableParallelQueryDesc": "啟用並行 DNS 查詢到多個伺服器以實現更快的解析",
|
||||
"strategy": "查詢策略",
|
||||
"strategyDesc": "解析域名的總體策略",
|
||||
"add": "新增伺服器",
|
||||
"edit": "編輯伺服器",
|
||||
"domains": "網域",
|
||||
"expectIPs": "預期 IP",
|
||||
"unexpectIPs": "意外 IP",
|
||||
"useSystemHosts": "使用系統 Hosts",
|
||||
"useSystemHostsDesc": "使用已安裝系統的 hosts 檔案",
|
||||
"serveStale": "提供過期結果",
|
||||
"serveStaleDesc": "在背景重新整理時傳回過期的快取結果",
|
||||
"serveExpiredTTL": "過期 TTL",
|
||||
"serveExpiredTTLDesc": "過期快取項目的有效期(秒);0 = 永不過期",
|
||||
"timeoutMs": "逾時 (毫秒)",
|
||||
"skipFallback": "跳過回退",
|
||||
"finalQuery": "最終查詢",
|
||||
"hosts": "主機對應",
|
||||
"hostsAdd": "新增 Host",
|
||||
"hostsEmpty": "未定義任何 Host",
|
||||
"hostsDomain": "網域 (例如 domain:example.com)",
|
||||
"hostsValues": "IP 或網域 — 輸入後按 Enter",
|
||||
"usePreset": "使用範本",
|
||||
"dnsPresetTitle": "DNS 範本",
|
||||
"dnsPresetFamily": "家庭",
|
||||
"clearAll": "全部刪除",
|
||||
"clearAllTitle": "刪除所有 DNS 伺服器?",
|
||||
"clearAllConfirm": "此操作將從清單中刪除所有 DNS 伺服器,無法復原。",
|
||||
"dnsLeakWarning": "DNS 可能透過 localhost、明文 UDP/TCP、本機模式 DoH/DoQ、回退查詢或 EDNS client IP 洩漏。重視隱私時請使用經路由的 DoH、在 hosts 固定解析器,並停用回退。"
|
||||
},
|
||||
"fakedns": {
|
||||
"add": "新增假 DNS",
|
||||
"ipPool": "IP 池子網",
|
||||
"poolSize": "池大小"
|
||||
},
|
||||
"dns": {},
|
||||
"fakedns": {},
|
||||
"defaultOutbound": "預設出站",
|
||||
"defaultOutboundDesc": "未符合任何路由規則的流量走此出站(清單中的第一個出站)。"
|
||||
},
|
||||
@@ -2055,198 +1784,7 @@
|
||||
}
|
||||
},
|
||||
"tgbot": {
|
||||
"keyboardClosed": "❌ 自定義鍵盤已關閉!",
|
||||
"noResult": "❗ 沒有結果!",
|
||||
"noQuery": "❌ 未找到查詢!請再次使用該命令!",
|
||||
"wentWrong": "❌ 出了點問題!",
|
||||
"noIpRecord": "❗ 沒有 IP 記錄!",
|
||||
"noInbounds": "❗ 未找到入站!",
|
||||
"unlimited": "♾ 無限(重置)",
|
||||
"add": "添加",
|
||||
"month": "月",
|
||||
"months": "月",
|
||||
"days": "天",
|
||||
"hours": "小時",
|
||||
"minutes": "分鐘",
|
||||
"unknown": "未知",
|
||||
"inbounds": "入站",
|
||||
"clients": "客戶端",
|
||||
"offline": "🔴 離線",
|
||||
"online": "🟢 上線",
|
||||
"commands": {
|
||||
"unknown": "❗ 未知命令",
|
||||
"pleaseChoose": "👇 請選擇:\r\n",
|
||||
"help": "🤖 歡迎使用本機器人!它旨在為您提供來自伺服器的特定資料,並允許您進行必要的修改。\r\n\r\n",
|
||||
"start": "👋 你好,<i>{{ .Firstname }}</i>。\r\n",
|
||||
"welcome": "🤖 歡迎來到 <b>{{ .Hostname }}</b> 管理機器人。\r\n",
|
||||
"status": "✅ 機器人正常執行!",
|
||||
"usage": "❗ 請輸入要搜尋的文字!",
|
||||
"getID": "🆔 您的 ID 為:<code>{{ .ID }}</code>",
|
||||
"helpAdminCommands": "要重新啟動 Xray Core:\r\n<code>/restart</code>\r\n\r\n要搜尋客戶電子郵件:\r\n<code>/usage [電子郵件]</code>\r\n\r\n要搜尋入站(帶有客戶統計資料):\r\n<code>/inbound [備註]</code>\r\n\r\nTelegram 聊天 ID:\r\n<code>/id</code>",
|
||||
"helpClientCommands": "要搜尋統計資料,請使用以下命令:\r\n<code>/usage [電子郵件]</code>\r\n\r\nTelegram 聊天 ID:\r\n<code>/id</code>",
|
||||
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
||||
"restartSuccess": "✅ 操作成功!",
|
||||
"restartFailed": "❗ 操作錯誤。\r\n\r\n<code>錯誤: {{ .Error }}</code>.",
|
||||
"xrayNotRunning": "❗ Xray Core 未運行。",
|
||||
"startDesc": "顯示主選單",
|
||||
"helpDesc": "機器人幫助",
|
||||
"statusDesc": "檢查機器人狀態",
|
||||
"idDesc": "顯示您的 Telegram ID",
|
||||
"usageDesc": "查看客戶端用量:/usage 郵箱",
|
||||
"inboundDesc": "搜尋入站:/inbound 備註(管理員)",
|
||||
"restartDesc": "重啟 Xray 核心(管理員)",
|
||||
"clearallDesc": "重置所有客戶端流量(管理員)"
|
||||
},
|
||||
"messages": {
|
||||
"cpuThreshold": "CPU 使用率為 {{ .Percent }}%,超過閾值 {{ .Threshold }}%",
|
||||
"selectUserFailed": "❌ 使用者選擇錯誤!",
|
||||
"userSaved": "✅ 電報使用者已儲存。",
|
||||
"loginSuccess": "✅ 成功登入到面板。\r\n",
|
||||
"loginFailed": "❗️ 面板登入失敗。\r\n",
|
||||
"report": "🕰 定時報告:{{ .RunTime }}\r\n",
|
||||
"datetime": "⏰ 日期時間:{{ .DateTime }}\r\n",
|
||||
"hostname": "💻 主機: {{ .Hostname }}\r\n",
|
||||
"version": "🚀 X-UI 版本:{{ .Version }}\r\n",
|
||||
"xrayVersion": "📡 Xray 版本: {{ .XrayVersion }}\r\n",
|
||||
"ipv6": "🌐 IPv6: {{ .IPv6 }}\r\n",
|
||||
"ipv4": "🌐 IPv4: {{ .IPv4 }}\r\n",
|
||||
"ip": "🌐 IP: {{ .IP }}\r\n",
|
||||
"ips": "🔢 IPs:\r\n{{ .IPs }}\r\n",
|
||||
"serverUpTime": "⏳ 伺服器執行時間:{{ .UpTime }} {{ .Unit }}\r\n",
|
||||
"serverLoad": "📈 伺服器負載:{{ .Load1 }}, {{ .Load2 }}, {{ .Load3 }}\r\n",
|
||||
"serverMemory": "📋 RAM: {{ .Current }}/{{ .Total }}\r\n",
|
||||
"tcpCount": "🔹 TCP: {{ .Count }}\r\n",
|
||||
"udpCount": "🔸 UDP: {{ .Count }}\r\n",
|
||||
"traffic": "🚦 流量:{{ .Total }} (↑{{ .Upload }},↓{{ .Download }})\r\n",
|
||||
"xrayStatus": "ℹ️ 狀態: {{ .State }}\r\n",
|
||||
"username": "👤 使用者名稱:{{ .Username }}\r\n",
|
||||
"reason": "❗️ 原因:{{ .Reason }}\r\n",
|
||||
"time": "⏰ 時間:{{ .Time }}\r\n",
|
||||
"inbound": "📍 入站: {{ .Remark }}\r\n",
|
||||
"port": "🔌 連接埠: {{ .Port }}\r\n",
|
||||
"expire": "📅 過期日期:{{ .Time }}\r\n",
|
||||
"expireIn": "📅 剩餘時間:{{ .Time }}\r\n",
|
||||
"active": "💡 啟用:{{ .Enable }}\r\n",
|
||||
"enabled": "🚨 已啟用:{{ .Enable }}\r\n",
|
||||
"online": "🌐 連線狀態:{{ .Status }}\r\n",
|
||||
"lastOnline": "🔙 上次上線: {{ .Time }}\r\n",
|
||||
"email": "📧 電子郵件: {{ .Email }}\r\n",
|
||||
"upload": "🔼 上傳: ↑{{ .Upload }}\r\n",
|
||||
"download": "🔽 下載: ↓{{ .Download }}\r\n",
|
||||
"total": "📊 總計: ↑↓{{ .UpDown }} / {{ .Total }}\r\n",
|
||||
"TGUser": "👤 電報使用者:{{ .TelegramID }}\r\n",
|
||||
"exhaustedCount": "🚨 耗盡的 {{ .Type }} 數量:\r\n",
|
||||
"onlinesCount": "🌐 線上客戶:{{ .Count }}\r\n",
|
||||
"disabled": "🛑 禁用:{{ .Disabled }}\r\n",
|
||||
"depleteSoon": "🔜 即將耗盡:{{ .Deplete }}\r\n\r\n",
|
||||
"backupTime": "🗄 備份時間:{{ .Time }}\r\n",
|
||||
"refreshedOn": "\r\n📋🔄 重新整理時間:{{ .Time }}\r\n\r\n",
|
||||
"yes": "✅ 是的",
|
||||
"no": "❌ 否",
|
||||
"received_email": "📧📥 電子郵件已更新。",
|
||||
"received_comment": "💬📥 評論已更新。",
|
||||
"email_prompt": "📧 預設電子郵件: {{ .ClientEmail }}\n\n請輸入您的電子郵件。",
|
||||
"comment_prompt": "💬 預設評論: {{ .ClientComment }}\n\n請輸入您的評論。",
|
||||
"cancel": "❌ 程序已取消!\n\n您可以隨時使用 /start 重新開始。 🔄",
|
||||
"error_add_client": "⚠️ 錯誤:\n\n {{ .error }}",
|
||||
"using_default_value": "好的,我會使用預設值。 😊",
|
||||
"incorrect_input": "您的輸入無效。\n短語應連續輸入,不能有空格。\n正確示例: aaaaaa\n錯誤示例: aaa aaa 🚫",
|
||||
"AreYouSure": "你確定嗎?🤔",
|
||||
"SuccessResetTraffic": "📧 電子郵件: {{ .ClientEmail }}\n🏁 結果: ✅ 成功",
|
||||
"FailedResetTraffic": "📧 電子郵件: {{ .ClientEmail }}\n🏁 結果: ❌ 失敗 \n\n🛠️ 錯誤: [ {{ .ErrorMessage }} ]",
|
||||
"FinishProcess": "🔚 所有客戶的流量重置已完成。",
|
||||
"eventOutboundDown": "出站 {{ .Tag }} 已中斷",
|
||||
"eventOutboundUp": "出站 {{ .Tag }} 已恢復",
|
||||
"eventErrorDetail": "錯誤:{{ .Error }}",
|
||||
"eventDelayDetail": "延遲:{{ .Delay }} 毫秒",
|
||||
"eventXrayCrash": "Xray 已當機",
|
||||
"eventXrayCrashError": "錯誤:{{ .Error }}",
|
||||
"eventNodeDown": "節點 {{ .Name }} 已離線",
|
||||
"eventNodeUp": "節點 {{ .Name }} 已上線",
|
||||
"eventLoginFallback": "來自 {{ .Source }} 的登入失敗",
|
||||
"memoryThreshold": "記憶體使用率 {{ .Percent }}% 超過閾值 {{ .Threshold }}%"
|
||||
},
|
||||
"buttons": {
|
||||
"closeKeyboard": "❌ 關閉鍵盤",
|
||||
"cancel": "❌ 取消",
|
||||
"cancelReset": "❌ 取消重置",
|
||||
"cancelIpLimit": "❌ 取消 IP 限制",
|
||||
"confirmResetTraffic": "✅ 確認重置流量?",
|
||||
"confirmClearIps": "✅ 確認清除 IP?",
|
||||
"confirmRemoveTGUser": "✅ 確認移除 Telegram 使用者?",
|
||||
"confirmToggle": "✅ 確認啟用/禁用使用者?",
|
||||
"dbBackup": "獲取資料庫備份",
|
||||
"serverUsage": "伺服器使用情況",
|
||||
"getInbounds": "獲取入站資訊",
|
||||
"depleteSoon": "即將耗盡",
|
||||
"clientUsage": "獲取使用情況",
|
||||
"onlines": "線上客戶端",
|
||||
"commands": "命令",
|
||||
"refresh": "🔄 重新整理",
|
||||
"clearIPs": "❌ 清除 IP",
|
||||
"removeTGUser": "❌ 移除 Telegram 使用者",
|
||||
"selectTGUser": "👤 選擇 Telegram 使用者",
|
||||
"selectOneTGUser": "👤 選擇一個 Telegram 使用者:",
|
||||
"resetTraffic": "📈 重置流量",
|
||||
"resetExpire": "📅 更改到期日期",
|
||||
"ipLog": "🔢 IP 日誌",
|
||||
"ipLimit": "🔢 IP 限制",
|
||||
"setTGUser": "👤 設定 Telegram 使用者",
|
||||
"toggle": "🔘 啟用/禁用",
|
||||
"custom": "🔢 自訂",
|
||||
"confirmNumber": "✅ 確認: {{ .Num }}",
|
||||
"confirmNumberAdd": "✅ 確認新增:{{ .Num }}",
|
||||
"limitTraffic": "🚧 流量限制",
|
||||
"getBanLogs": "禁止日誌",
|
||||
"allClients": "所有客戶",
|
||||
"addClient": "新增客戶",
|
||||
"submitDisable": "以停用方式送出 ☑️",
|
||||
"submitEnable": "以啟用方式送出 ✅",
|
||||
"use_default": "🏷️ 使用預設值",
|
||||
"change_email": "⚙️📧 電子郵件",
|
||||
"change_comment": "⚙️💬 評論",
|
||||
"ResetAllTraffics": "重設所有流量",
|
||||
"SortedTrafficUsageReport": "排序過的流量使用報告"
|
||||
},
|
||||
"answers": {
|
||||
"successfulOperation": "✅ 成功!",
|
||||
"errorOperation": "❗ 操作錯誤。",
|
||||
"getInboundsFailed": "❌ 獲取入站資訊失敗。",
|
||||
"getClientsFailed": "❌ 獲取客戶失敗。",
|
||||
"canceled": "❌ {{ .Email }}:操作已取消。",
|
||||
"clientRefreshSuccess": "✅ {{ .Email }}:客戶端重新整理成功。",
|
||||
"IpRefreshSuccess": "✅ {{ .Email }}:IP 重新整理成功。",
|
||||
"TGIdRefreshSuccess": "✅ {{ .Email }}:客戶端的 Telegram 使用者重新整理成功。",
|
||||
"resetTrafficSuccess": "✅ {{ .Email }}:流量已重置成功。",
|
||||
"setTrafficLimitSuccess": "✅ {{ .Email }}: 流量限制儲存成功。",
|
||||
"expireResetSuccess": "✅ {{ .Email }}:過期天數已重置成功。",
|
||||
"resetIpSuccess": "✅ {{ .Email }}:成功儲存 IP 限制數量為 {{ .Count }}。",
|
||||
"clearIpSuccess": "✅ {{ .Email }}:IP 已成功清除。",
|
||||
"getIpLog": "✅ {{ .Email }}:獲取 IP 日誌。",
|
||||
"getUserInfo": "✅ {{ .Email }}:獲取 Telegram 使用者資訊。",
|
||||
"removedTGUserSuccess": "✅ {{ .Email }}:Telegram 使用者已成功移除。",
|
||||
"enableSuccess": "✅ {{ .Email }}:已成功啟用。",
|
||||
"disableSuccess": "✅ {{ .Email }}:已成功禁用。",
|
||||
"askToAddUserId": "未找到您的配置!\r\n請向管理員詢問,在您的配置中使用您的 Telegram 使用者 ChatID。\r\n\r\n您的使用者 ChatID:<code>{{ .TgUserID }}</code>",
|
||||
"chooseClient": "為入站 {{ .Inbound }} 選擇一個客戶",
|
||||
"chooseInbound": "選擇一個入站"
|
||||
}
|
||||
"noIpRecord": "❗ 沒有 IP 記錄!"
|
||||
},
|
||||
"email": {
|
||||
"labelStatus": "狀態",
|
||||
"labelOutbound": "出站",
|
||||
"labelNode": "節點",
|
||||
"labelError": "錯誤",
|
||||
"labelDelay": "延遲",
|
||||
"labelUsername": "使用者名稱",
|
||||
"labelIP": "IP",
|
||||
"labelReason": "原因",
|
||||
"labelSource": "來源",
|
||||
"statusCrashed": "已當機",
|
||||
"statusHigh": "偏高",
|
||||
"statusSuccess": "成功",
|
||||
"statusFailed": "失敗",
|
||||
"statusDown": "中斷",
|
||||
"statusUp": "恢復"
|
||||
}
|
||||
"email": {}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user