{
  "product": "YSK Server",
  "tagline": "以 AI 為核心、安全優先的 Linux 伺服器管理平台",
  "company": "YSK Limited",
  "agents": {
    "title": "人工智能代理運行時",
    "body": "OpenClaw／Hermes／IonClaw 的安裝與監督；所有工具呼叫須經允許清單與審批。",
    "status": {
      "running": "運行中",
      "activating": "啟動中",
      "stuck": "啟動卡住",
      "connected": "上線",
      "registered": "僅登記",
      "stale": "逾時",
      "disconnected": "離線",
      "not_installed": "未安裝",
      "failed": "失敗",
      "error": "失敗",
      "unknown": "未探測",
      "fallback": "未知"
    },
    "cmdStatus": {
      "queued": "已排隊",
      "acked": "已確認",
      "done": "已完成",
      "error": "錯誤"
    },
    "activatingStuckHint": "啟動超過 5 分鐘，已當失敗。請查日誌。",
    "noOnlineAgents": "無上線代理",
    "journal": "日誌",
    "writeUnit": "寫入服務單元",
    "writeUnitConfirm": "把 {{kind}} 的 systemd 服務單元寫入 /etc/systemd。服務不會啟動或啟用。",
    "liveN": "{{count}} 上線",
    "registeredOnly": "僅登記",
    "awaitProbe": "待探測",
    "runtimes": "運行時",
    "running": "運行中",
    "liveAgents": "上線代理",
    "fleet": "機群",
    "aiTasks": "人工智能任務",
    "expBanner": "實驗功能。",
    "expBody": "登記 ≠ 上線。真實運維請用命令列：",
    "expDocs": "儲存庫文件：",
    "expEdge": "邊緣節點：",
    "expPayload": "指令負載示例：",
    "fleetCan": "機群能做什麼",
    "fleetCanDesc": "不是空殼列表 — 以下是控制面對邊緣節點的真實能力",
    "capRegister": "登記",
    "capRegisterD": "寫入控制面清單（狀態「僅登記」）— 不代表進程已跑",
    "capCommand": "下指令",
    "capCommandD": "命令列預設（就緒檢查 / 主機 / 專案…）或自訂；邊緣 提取 後跑 ysk-server 並 回報",
    "capHistory": "指令紀錄",
    "capHistoryD": "queued / done / error、exit code、pretty JSON result",
    "capDelete": "刪除",
    "capDeleteD": "移除 工作階段 與相關訊息",
    "capStatus": "狀態",
    "capStatusD": "僅登記 → 上線（心跳）→ 逾時（>60s 無心跳）→ 離線（已斷線／再無心跳）",
    "statusFlowTitle": "狀態流程",
    "statusFlow": "僅登記 → 上線 → 逾時（>60s）→ 離線。篩選「離線」即已斷線。",
    "colSession": "工作階段 UUID",
    "copySession": "複製 session UUID，供叢集／CLI --session 使用",
    "staleFor": "逾時 {{age}}",
    "commandTitle": "把指令排入此工作階段",
    "historyTitleShort": "開啟指令紀錄（唯讀）",
    "fleetTitle": "機群（{{count}}）",
    "fleetDesc": "控制面登記清單 · 登記 ≠ 節點已上線",
    "registerPlus": "+ 登記代理",
    "colId": "識別碼",
    "colStatus": "狀態",
    "colGroup": "群組",
    "colLastSeen": "最後上線",
    "command": "下指令",
    "history": "紀錄",
    "emptyAgents": "尚未登記代理",
    "emptyAgentsDesc": "用列表右上角登記，或等邊緣進程自行 登記",
    "historyTitle": "指令紀錄 · {{id}}",
    "historyDesc": "已排隊的指令會等待節點提取；完成或錯誤即為回報。命令列結果含結束代碼與 JSON（約四秒自動重新整理）。",
    "refreshHistory": "重新整理紀錄",
    "colTime": "時間",
    "finishedAt": "完成 {{at}}",
    "colCommand": "指令",
    "colResult": "結果摘要",
    "colExit": "結束代碼",
    "hasResult": "有結果",
    "emptyCmds": "尚未有指令",
    "emptyCmdsDesc": "按「下指令」排隊；邊緣 代理 未上線時會一直 已排隊",
    "edgeOnlineTitle": "邊緣 代理 如何真正上線",
    "edgeOnlineDesc": "面板完成登記後，節點須運行外連迴圈，才會送出心跳並提取指令。",
    "controlPlaneApi": "控制面 介面：",
    "controlPlaneHint": "（需網絡可達；生產請改成實際面板地址）",
    "queueNote": "未有邊緣進程時，「下指令」仍然有效：會入佇列（已排隊），等 代理 上線再消化。",
    "runtimeTitle": "人工智能 運行時",
    "runtimeDesc": "探測路徑與 服務單元；安裝會嘗試 啟用 系統服務（需系統變更與管理員權限）",
    "emptyRuntime": "尚未有探測結果",
    "emptyRuntimeDesc": "按重新整理載入運行時清單，或逐個探測",
    "pathExists": "已存在",
    "pathMissing": "尚未安裝",
    "unitUnknown": "{{unit}} · 未知",
    "unitFallback": "服務單元",
    "path": "路徑",
    "probe": "探測",
    "install": "安裝",
    "recentOps": "最近操作",
    "registerTitle": "登記 代理",
    "registerDesc": "只寫入控制面清單；不等於節點已上線",
    "register": "登記",
    "agentId": "代理 識別碼",
    "agentIdHint": "唯一 識別碼，例如 邊緣-1 或 office-gateway",
    "group": "群組",
    "groupHint": "用於分區／列表篩選",
    "registerNote": "狀態會顯示「僅登記」。節點跑 外連 代理 並 心跳 後才變「上線」。",
    "cmdTitle": "下指令 · {{id}}",
    "cmdTitlePlain": "下指令",
    "cmdDesc": "寫入佇列；邊緣 代理 提取 後執行並 回報（未上線會一直 已排隊）",
    "enqueue": "排隊",
    "cmdPreset": "指令（命令列 優先）",
    "cmdTypeAria": "指令類型",
    "customCli": "自訂 命令列",
    "cliArgs": "命令列 參數",
    "cliArgsHint": "無須寫入 ysk-server；例如：logs journal --unit nginx.service",
    "cmdNote": "邊緣 ysk-server 代理收到命令列 JSON 後，會在本機執行命令列（自動加上 --json）。變更系統仍須在邊緣開啟系統變更權限。完成後請在「紀錄」查看結束代碼與 JSON。",
    "resultTitle": "指令結果 · 結束 {{code}}",
    "resultTitlePlain": "指令結果",
    "codeComment": "# 概念：register → heartbeat 迴圈 → 拉指令 → ack\n# 函式庫：ysk-server-core runOutboundAgent / agentCycle",
    "resultOuter": "外層：邊緣回報（結束代碼／錯誤輸出）。內層結果：",
    "deleteTitle": "刪除 {{id}}？",
    "deleteTitlePlain": "刪除 代理？",
    "deleteDesc": "相關指令紀錄一併移除。",
    "fact": {
      "kind": "類型",
      "name": "名稱",
      "status": "狀態",
      "unitActive": "服務",
      "unitName": "單元",
      "pathExists": "路徑存在",
      "installPath": "安裝路徑"
    },
    "installBlocked": "無法在管理面板完成安裝",
    "registeredMsg": "已登記 {{id}}（僅控制面；節點需跑 外連 代理 並 心跳 先算上線）",
    "registerFailed": "登記失敗",
    "removedFleet": "已刪除機群登記",
    "enqueuedMsg": "已排隊指令 {{id}}…（節點 提取 後先執行）",
    "enqueueFailed": "下指令失敗",
    "loadCommandsFailed": "載入指令失敗",
    "probedMsg": "已探測 {{kind}}",
    "probeFailed": "探測失敗",
    "wroteUnitMsg": "已寫入 {{kind}} 服務設定",
    "writeFailed": "寫入失敗",
    "installedMsg": "已安裝 {{kind}}",
    "installIncomplete": "安裝未完成",
    "badgeDryRun": "計劃模式（預覽試行）",
    "badgeBlocked": "已阻擋",
    "labelStderr": "標準錯誤",
    "labelAckCli": "確認 + CLI JSON",
    "labelStdoutBody": "命令列 標準輸出內容",
    "resultOuterHint": "外層結果為命令列 --json 的標準輸出。",
    "noteAllowlist": "代理工具呼叫必須通過允許清單。",
    "noteRbacCap": "代理角色權限上限為低寫入。"
  },
  "ai": {
    "status": {
      "completed": "已完成",
      "done": "已完成",
      "executed": "已執行",
      "failed": "失敗",
      "error": "錯誤",
      "rejected": "已拒絕",
      "pending": "待處理",
      "planned": "待審批",
      "approved": "已批准",
      "running": "執行中",
      "cancelled": "已取消"
    },
    "activeCount": "{{count}} 進行中",
    "taskCount": "{{count}} 任務",
    "tasks": "任務",
    "active": "進行中",
    "tasksTab": "任務 ({{count}})",
    "playbooksTab": "劇本 ({{count}})",
    "queueTitle": "任務佇列",
    "queueSub": "點選查看計劃與步驟 · 終態不顯示多餘操作",
    "createTaskPlus": "+ 建立任務",
    "emptyTasks": "尚未有任務",
    "emptyTasksDesc": "用列表右上角建立任務，或從劇本庫一鍵產生",
    "browsePlaybooks": "瀏覽劇本",
    "noPrompt": "（無提示）",
    "stepsOf": "步驟 {{done}}/{{total}}",
    "noPlanSummary": "（無計劃摘要）",
    "pipelineAria": "任務階段",
    "phase": {
      "plan": "計劃",
      "approve": "審批",
      "run": "執行",
      "done": "完成"
    },
    "approveRun": "批准並執行",
    "cancelTask": "取消任務",
    "terminalHint": "任務已終結，可建立新任務或執行劇本",
    "stepsTitle": "步驟（{{count}}）",
    "noSteps": "尚未產生步驟",
    "needsApproval": "需審批",
    "noApproval": "免審批",
    "reject": "拒絕",
    "selectTask": "選擇任務",
    "selectTaskDesc": "左側點一筆任務查看計劃與步驟",
    "playbooksTitle": "劇本庫",
    "playbooksSub": "預設操作組合 · 執行後會建立任務並切到任務分頁",
    "countItems": "{{count}} 個",
    "searchPh": "名稱 / 說明",
    "noPlaybooks": "無符合劇本",
    "noPlaybooksDesc": "改關鍵字或清空搜尋",
    "run": "執行",
    "createTitle": "建立 人工智能 任務",
    "createDesc": "產生計劃 ≠ 已執行。工具只會在 允許清單 內。",
    "generatePlan": "產生計劃",
    "promptLabel": "自然語言指令",
    "promptHint": "例如：檢查主機負載並回報；或 nginx 狀態",
    "promptPh": "描述想做的事…",
    "createHint": "下一步：在任務詳情按「批准並執行」，或拒絕個別步驟。"
  },
  "apache": {
    "pageDesc": "Apache 站點（PHP 專案 + 獨立站）",
    "pillSites": "{{count}} 站點",
    "pillSitesSplit": "{{n}} 站點 · 殘留 {{leftover}}",
    "listTitle": "站點（{{count}}）",
    "emptyTitle": "未有站點",
    "createSite": "+ 建立站點",
    "createTitle": "建立站點",
    "editTitle": "編輯站點",
    "deleteTitle": "刪除站點？",
    "deleteDesc": "刪除此 Apache 站點？",
    "stopSites": "將有 {{n}} 個站點停止回應 HTTP。",
    "colServerName": "域名",
    "colSource": "來源",
    "colKind": "類型",
    "colTarget": "目標",
    "colStatus": "狀態",
    "filterSource": "來源篩選",
    "sourceAll": "全部",
    "sourceProject": "專案",
    "sourceStandalone": "獨立",
    "sourceArtifact": "磁碟",
    "sourceOrphan": "殘留",
    "orphanSite": "來源專案已不存在",
    "openProject": "開啟專案",
    "kindLabel": "類型",
    "kindProxy": "反代",
    "kindStatic": "靜態",
    "kindPhp": "PHP",
    "upstreamLabel": "上游",
    "rootLabel": "根目錄",
    "sslLabel": "SSL",
    "apply": "套用",
    "notInstalled": "未安裝 Apache",
    "globalSettings": "全域設定",
    "siteSettings": "站點設定",
    "saveApply": "儲存並套用",
    "settingsSaved": "已儲存",
    "setGzip": "Gzip 壓縮",
    "setShowVersion": "顯示版本",
    "setHttp2": "HTTP/2",
    "setBody": "Body 上限",
    "setKeepalive": "保活",
    "setAccessLog": "訪問日誌",
    "logOn": "開",
    "logOff": "關",
    "setForceHttps": "強制 HTTPS",
    "setHsts": "HSTS",
    "setIndexes": "目錄列表",
    "bodyInherit": "跟隨全域",
    "conflict": "域名衝突",
    "conflictHint": "同一域名有多個來源。請保留專案／獨立站列，並移除磁碟殘留。",
    "removeArtifact": "移除殘留",
    "removeArtifactTitle": "移除殘留 conf？",
    "removeArtifactDesc": "刪除此未認領的 Apache conf（面板 dataDir），並在可能時停用系統副本。不會刪除專案。",
    "removeArtifactHint": "刪除此磁碟殘留 conf，不會刪除專案。",
    "previewConf": "預覽 conf",
    "cleanupConflicts": "清理衝突殘留",
    "cleanupConflictsTitle": "清理全部衝突殘留？",
    "cleanupConflictsDesc": "移除所有與專案或獨立站 ServerName 衝突的磁碟 conf。專案列會保留。",
    "artifactRemovedOk": "已移除殘留 conf",
    "sslTerminatedUpstream": "由前置 Nginx 終止 TLS"
  },
  "applyStatus": {
    "draft": "草稿",
    "written": "已寫入管理檔",
    "planned": "處理中",
    "applied": "已套用到系統",
    "failed": "失敗",
    "pendingExecute": "待系統權限",
    "uploaded": "已上傳",
    "issued": "已簽發",
    "missing": "檔案缺失"
  },
  "audit": {
    "recent": "最近稽核",
    "lastN": "最近 {{n}} 筆",
    "actions": {
      "protection.change": "防護設定變更",
      "auth.locale": "介面語言變更",
      "auth.login": "登入",
      "auth.logout": "登出",
      "system.firewall.allow_port": "防火牆允許埠",
      "system.firewall.deny": "防火牆拒絕 IP",
      "system.firewall.apply": "防火牆套用",
      "project.deploy": "專案部署",
      "project.create": "建立專案",
      "project.delete": "刪除專案",
      "ssl.request": "申請 SSL",
      "ssl.upload": "上載 SSL",
      "system.firewall.enable": "防火牆啟用／停用",
      "system.firewall.delete_rule": "刪除防火牆規則",
      "system.firewall.delete_deny": "移除永久拒 IP",
      "db.adminer.apply": "資料庫管理專案",
      "project.goLive": "專案上線",
      "project.publish": "發佈 Nginx",
      "project.suspend": "暫停專案",
      "software.install": "安裝軟件",
      "software.update": "更新軟件",
      "backup.restore": "還原備份",
      "backup.run": "執行備份",
      "backup.delete": "刪除備份"
    }
  },
  "backups": {
    "settingsSaved": "已儲存備份設定",
    "saveFailed": "儲存失敗",
    "downloadStarted": "已開始下載 {{name}}",
    "nothingToDo": "無事可做",
    "tarOkSideFail": "封存成功，但附屬步驟有問題",
    "success": "成功",
    "hasFailures": "有失敗",
    "notYet": "尚未",
    "enabled": "已啟用",
    "needPassword": "缺少密碼",
    "off": "關閉",
    "lastRun": "上次 {{label}}",
    "backupFiles": "備份檔",
    "projects": "專案",
    "lastAll": "上次全部",
    "latestFile": "最新備份檔",
    "remote": "遠端",
    "withBackups": "有備份專案",
    "ops": "操作",
    "remoteExclude": "遠端 / 排除",
    "about": "說明",
    "noBackups": "尚無備份",
    "noBackupsDesc": "執行「備份所有專案」或於專案詳情 備份",
    "goOps": "去操作",
    "projectShort": "專案",
    "download": "下載",
    "preview": "預覽",
    "restoreWeb": "還原網站檔案",
    "restoreFull": "完整還原",
    "restoreFullTitle": "用此封存覆寫專案檔案與資料庫 — 請輸入檔名確認",
    "restoreWebTitle": "只還原此封存的網站檔案",
    "previewTitle": "預覽還原，不寫入",
    "partialSkipped": "部分成功 — 有專案被略過",
    "delete": "刪除",
    "opsTitle": "操作",
    "opsHint": "0 個專案或全部略過 = 成功；真正有試過備而失敗先算失敗",
    "noProjects": "（沒有專案）",
    "successRatio": "· {{ok}}/{{total}} 成功",
    "summary": "摘要{{extra}}",
    "backupFailed": "備份失敗",
    "backupDone": "備份完成",
    "backupAll": "備份所有專案",
    "controlPlane": "備份控制平面",
    "controlPlaneDone": "控制平面備份完成",
    "cronCmd": "指令：ysk-server backup all --data-dir …",
    "cronHint": "schedule 帶 安裝=是 且 系統變更權限已開啟 時會寫入 主機 定時工作表；否則只寫 managed 檔",
    "dailyCronRegistered": "已登記每日 03:00 排程",
    "registerDailyCron": "登記每日排程（含安裝）",
    "resticNeedConfig": "請先在「遠端／排除」啟用 Restic 並設定 密碼",
    "resticFailed": "Restic 失敗",
    "resticDone": "Restic 增量完成",
    "resticOnly": "只跑 Restic 增量",
    "listSnapshots": "列出 Restic 快照",
    "lastAllDetail": "上次全部備份明細",
    "time": "時間",
    "result": "結果",
    "nothingZero": "無事可做（0 專案）",
    "notes": "備註",
    "status": "狀態",
    "skipped": "略過",
    "failed": "失敗",
    "lastNoProjects": "上次沒有專案需要備份。",
    "noPerProject": "沒有 per-project results。",
    "remoteSide": "遠端／Restic 副步驟",
    "step": "步驟",
    "remoteStep": "遠端",
    "restoreProjectId": "還原用 projectId（可空=全部 列表）",
    "needProjectOrTag": "請填 projectId 或 快照 需有 project: 標籤",
    "dryRunDone": "預覽試行完成（未寫入檔案）",
    "allSuccess": "全部成功",
    "failOrSkip": "有失敗／略過",
    "noteN": "備註 {{n}}",
    "enableRemote": "啟用遠端推送",
    "targetKind": "目標類型",
    "remoteKindAria": "遠端目標類型",
    "localPath": "本機路徑",
    "host": "主機",
    "port": "埠",
    "username": "用戶名",
    "password": "密碼",
    "passwordSshHint": "可留空，改用主機 遠端登入金鑰",
    "savedLeaveEmpty": "已儲存則留空",
    "s3Bucket": "儲存桶 路徑",
    "region": "區域",
    "endpointOptional": "端點（可選）",
    "localMirror": "本機鏡像路徑",
    "remotePath": "遠端路徑",
    "remotePathHint": "相對遠端用戶家目錄（或 SFTP chroot）。「.」即該家目錄。",
    "resticTitle": "Restic 增量備份",
    "resticDesc": "可選：系統路徑須有 Restic 指令。啟用後必須設定密碼（不會使用預設密碼）。",
    "enableRestic": "啟用 Restic",
    "repoPath": "儲存庫 路徑",
    "repoPassword": "儲存庫 密碼",
    "repoPassSaved": "已儲存；留空＝不改。啟用後必填。",
    "repoPassRequired": "啟用 Restic 時必填（不會使用預設密碼）",
    "savedPlaceholder": "已儲存（留空不改）",
    "required": "必填",
    "s3RepoUrl": "或 S3 儲存庫 URL",
    "excludeTitle": "排除規則",
    "excludeSub": "封存 排除路徑，每行一個 萬用字元",
    "excludeList": "排除清單",
    "saveAll": "儲存全部設定",
    "restoreFailed": "還原失敗",
    "previewDone": "預覽完成",
    "restoreDone": "還原完成",
    "previewQ": "預覽備份內容？",
    "restoreWebQ": "選擇性還原 (網站)？",
    "restoreFullQ": "完整還原？",
    "previewDesc": "只列出 {{name}} 內容，不會改檔。",
    "restoreWebDesc": "將 {{name}} 解壓到專案 主目錄（較保守）。",
    "restoreFullDesc": "完整 封存 還原 {{name}}，可能覆蓋現有檔案。",
    "restore": "還原",
    "cancel": "取消",
    "deleteFailed": "刪除失敗",
    "deleted": "已刪除",
    "deleteTitle": "移至回收區？",
    "deleteDesc": "將 {{name}} 移至回收區。7 日後永久刪除。",
    "tabTrash": "回收區",
    "trashTitle": "回收區（{{count}}）",
    "trashSub": "刪除的備份會在此保留 7 日，之後永久移除。",
    "trashEmpty": "回收區是空的",
    "trashEmptyDesc": "刪除的備份檔會在此保留 7 日。",
    "trashRestore": "還原",
    "trashPurge": "永久刪除",
    "trashEmptyAll": "清空回收區",
    "trashExpires": "到期 {{at}}",
    "trashPurgeTitle": "永久刪除此備份？",
    "trashPurgeDesc": "永久刪除 {{name}}。無法復原。",
    "trashEmptyTitle": "清空回收區？",
    "trashEmptyDescConfirm": "永久刪除 {{count}} 個備份檔。請輸入件數確認。",
    "trashRestored": "已從回收區還原",
    "trashPurged": "已永久刪除",
    "trashedOk": "已移至回收區",
    "resticSafeTitle": "Restic 還原到安全目錄？",
    "resticSafeDesc": "還原 {{snapshot}} 到專案 {{project}} 的 .Restic-還原-* 目錄",
    "resticRestoreDone": "Restic 還原完成",
    "overwriteTitle": "危險：覆寫 主目錄",
    "overwriteDesc": "將覆寫專案 {{project}} 的 主目錄。輸入 OVERWRITE 確認。",
    "confirmString": "確認字串",
    "overwriteHome": "覆寫 主目錄",
    "resticOverwriteDone": "Restic 覆寫 主目錄 完成",
    "opsResult": "操作結果",
    "filesTitle": "備份檔案 ({{count}})",
    "filesSub": "備份檔存在面板資料目錄。下載需登入；還原可先預覽，或只還原網站，或完整還原。",
    "backupAllBtn": "全部備份",
    "yes": "是",
    "no": "否",
    "safeDir": "安全目錄",
    "remotePushTitle": "遠端推送目標",
    "remotePushSub": "本地 封存 成功後可推送到 SFTP、本機路徑或 S3",
    "accessKey": "存取金鑰",
    "secretKey": "密鑰",
    "overwriteConfirmHint": "輸入 OVERWRITE 確認覆寫",
    "testRemote": "測試目的地",
    "testRemoteHint": "會連線遠端主機並寫入測試檔，並非只讀探測。",
    "testRemoteDone": "遠端探測完成",
    "testRemoteFailed": "遠端探測失敗",
    "resticRepoPh": "面板資料目錄／restic 庫",
    "testDisabledHint": "請先開啟遠端推送才可測試。",
    "identityId": "出站 SSH 身份",
    "identityHint": "優先使用。與 /security SSH 同一金鑰庫。密碼需 sshpass。",
    "identityNone": "無 — 用密碼或本機預設金鑰",
    "skippedListHint": "以下專案被略過：",
    "skippedPendingOs": "已略過 — 待建立系統用戶（主目錄不存在）",
    "goLogs": "開啟日誌",
    "goAbout": "備份說明",
    "previewListingTitle": "封存內容",
    "restoreNamedDesc": "將 {{name}} 還原到專案 {{project}}。",
    "overwriteNamedDesc": "用快照 {{snapshot}} 覆寫專案 {{project}} 的檔案。",
    "resticSafeNamed": "將專案 {{project}} 的快照 {{snapshot}} 還原到安全目錄。"
  },
  "btTracker": {
    "title": "BT追蹤器",
    "sub": "檔案分享 BitTorrent／WebTorrent",
    "pageDesc": "檔案分享 BitTorrent／WebTorrent",
    "status": "狀態",
    "running": "運行中",
    "stopped": "已停止",
    "installed": "已安裝",
    "start": "啟動",
    "stop": "停止",
    "stopTitle": "停止 Tracker — 會中斷做種與下載",
    "stopDesc": "運行中的 Torrent 會停止 announce。對等節點會斷線，直至再次啟動。",
    "fillPublicHost": "使用 {{host}}",
    "fillPublicHostTitle": "把目前面板主機名填入公開 announce 主機",
    "refresh": "重新整理",
    "settings": "設定",
    "httpPort": "HTTP／WS 埠",
    "udpPort": "UDP 埠",
    "listenHost": "監聽",
    "listenHostHint": "0.0.0.0 會聽全部位址。若不必對外，請改綁 127.0.0.1。",
    "listenAllWarn": "Tracker 正綁定全部位址。防火牆關閉時等同對公網開放。可改綁 127.0.0.1，或在防火牆限制該埠。",
    "bindLoopback": "只綁 127.0.0.1",
    "bindAll": "0.0.0.0（全部）",
    "wsEnabled": "WebSocket",
    "wsEnabledHint": "",
    "autostart": "開機自啟",
    "autostartHint": "",
    "publicAnnounceHost": "公開主機",
    "publicAnnounceHostHint": "",
    "maxSeeds": "做種上限",
    "seederPorts": "Peer 埠",
    "seederPortMin": "Peer 埠起始",
    "seederPortMax": "Peer 埠結束",
    "seederPortsHint": "本機做種使用的埠範圍（含上下限，常見 6881–6889）。",
    "saveSettings": "儲存",
    "applyHint": "",
    "torrents": "Torrent",
    "torrentsEmpty": "暫無 Torrent",
    "torrentsEmptyHint": "加入 .torrent，或於「檔案」建立 BT 分享",
    "torrentsDesc": "",
    "colName": "名稱",
    "colHash": "哈希值",
    "colSeeds": "種子",
    "colLeechers": "下載",
    "colStatus": "狀態",
    "announceUrls": "宣告",
    "announceDesc": "",
    "copy": "複製",
    "copied": "已複製",
    "statsTorrents": "Torrent",
    "statsLibrary": "資料庫",
    "statsLibraryHint": "面板資料庫／檔案分享的 Torrent 列",
    "statsTrackerLeftover": "Tracker 雜湊不在資料庫",
    "statsTrackerLeftoverHint": "本機 Tracker 有 announce、但不在 Torrent 資料庫列的雜湊。清單見 Tracker 分頁。",
    "leftoverHashesTitle": "Tracker 殘留雜湊",
    "publicHostMissingLive": "Tracker 已在聽，但未設定公開 announce 主機。外網對等節點找不到此種子。",
    "leftoverHashesHint": "唯讀。這些 announce 不是資料庫或分享列。",
    "statsPeers": "同行",
    "statsAnnounces": "Announce",
    "statsAnnouncesHint": "Tracker 行程收到的 announce 次數",
    "statsJobs": "任務",
    "openShares": "分享",
    "needExecute": "需要 YSK_EXECUTE 綁定埠",
    "guideTitle": "說明",
    "guideBody": "BT 分享會產生 .torrent 並經此 Tracker 交換 peers。",
    "restoreSeeds": "重新做種",
    "restoreSeedsHint": "重啟本機做種",
    "restoredCount": "已重新做種 {{seeded}}／{{attempted}} 個 Torrent",
    "portInvalid": "請輸入 1 至 65535 的埠號。",
    "extraTrackerRequired": "請填寫公佈網址。",
    "stopPort": "Tracker 埠 {{port}} 將停止監聽。",
    "stopPid": "行程 PID {{pid}} 將結束。",
    "swarmLeftoverUnlisted": "另有 {{count}} 個殘留 announce 未列雜湊。",
    "bundledNote": "",
    "stackTitle": "軟件",
    "jobs": "任務",
    "jobsEmpty": "無任務",
    "jobsEmptyHint": "",
    "jobsDesc": "",
    "colJob": "任務",
    "colShare": "分享",
    "colJobStatus": "狀態",
    "colEnqueued": "時間",
    "refreshJobs": "重新整理",
    "tabOverview": "概覽",
    "tabTorrents": "Torrent",
    "tabJobs": "任務",
    "tabSettings": "設定",
    "tabAbout": "關於",
    "heroRunning": "運行中",
    "heroStopped": "已停止",
    "heroRunningSub": "",
    "heroStoppedSub": "",
    "live": "即時",
    "liveOff": "閒置",
    "quickStart": "步驟",
    "quickStartDesc": "",
    "step1Title": "公開主機",
    "step1Hint": "",
    "step2Title": "啟動",
    "step2Hint": "",
    "step3Title": "BT 分享",
    "step3Hint": "",
    "stepDone": "完成",
    "stepTodo": "待辦",
    "networkCard": "網絡",
    "networkCardDesc": "",
    "seederCard": "做種",
    "seederCardDesc": "",
    "lifecycleCard": "生命週期",
    "lifecycleCardDesc": "",
    "pid": "PID",
    "port": "埠",
    "announceHost": "主機",
    "goSettings": "設定",
    "searchTorrents": "搜尋…",
    "filterAll": "全部",
    "filterSeeding": "做種",
    "filterOther": "其他",
    "noMatch": "無符合項目",
    "seedStatusSeeding": "做種中",
    "seedStatusPending": "處理中",
    "seedStatusError": "錯誤",
    "seedStatusStopped": "已停止",
    "seedStatusNone": "無",
    "notesTitle": "備註",
    "exposureTitle": "網絡存取",
    "protoHttp": "HTTP",
    "protoWs": "WS",
    "protoUdp": "UDP協定",
    "saveOk": "已儲存",
    "saveOkRestart": "已儲存 — 請重啟 Tracker 套用埠",
    "startedOk": "已啟動",
    "stoppedOk": "已停止",
    "restoredOk": "重新做種完成",
    "httpPortHint": "",
    "udpPortHint": "",
    "udpPortOff": "關閉",
    "udpPortSameHttp": "同 HTTP（{{port}}）",
    "udpPortClassic": "6969",
    "portSuggest8000": "8000",
    "announceHostUnset": "未設定",
    "tabTrackers": "Tracker",
    "addTorrent": "加入 Torrent",
    "addTorrentTitle": "加入 Torrent",
    "addTorrentHint": "上傳 .torrent 或貼上 magnet。讀取後才選擇儲存位置。檔案未齊會用 WebTorrent 下載，齊了就做種。",
    "dropTorrent": "將 .torrent 拖放到此處",
    "chooseFile": "或選擇檔案",
    "magnetLabel": "磁鐵連結",
    "magnetPlaceholder": "magnet:?xt=urn:btih:…",
    "inspect": "讀取",
    "extraTrackersPreview": "將額外向 {{n}} 個常用 Tracker announce",
    "saveLocation": "儲存位置",
    "saveRootPublic": "公用檔案",
    "newFolder": "新資料夾",
    "destPreview": "將寫入",
    "startDownload": "開始下載",
    "filterDownloading": "下載中",
    "filterPaused": "已暫停",
    "filterError": "錯誤",
    "emptyDrop": "將 .torrent 拖放到此處，或選擇檔案",
    "emptyHint": "加入 .torrent 或 magnet。讀取後才選擇儲存位置；檔案已齊就直接做種。引擎是 WebTorrent。",
    "pause": "暫停",
    "resume": "繼續",
    "openFolder": "開啟資料夾",
    "remove": "移除",
    "removeKeep": "移除並保留檔案",
    "removeDelete": "移除並刪除檔案",
    "removeConfirm": "要從資料庫移除此 Torrent？",
    "kindShare": "分享",
    "filesInTorrent": "個檔案",
    "extraTrackersDesc": "這裏是額外 announce。資料庫下載／做種與檔案 BT 分享都會一併通知這些 Tracker。不會取代 .torrent 原有清單，亦不會令本機 Tracker 對外開放。",
    "extraTrackersEmpty": "未有常用 Tracker。加入 http(s)／udp／ws(s) announce URL 才可靠外站尋找 peers。",
    "extraTrackerAdd": "加入",
    "extraTrackerUrl": "公佈網址",
    "extraTrackerApply": "套用到現有做種",
    "extraTrackerApplyOk": "已套用常用 Tracker",
    "extraEnabled": "啟用",
    "extraTrackerBad": "URL 必須以 http://、https://、udp://、ws:// 或 wss:// 開頭",
    "extraTrackerDup": "清單已有此 URL",
    "extraTrackerLimit": "最多 32 個常用 Tracker",
    "addOk": "已加入資料庫",
    "savedTo": "儲存",
    "folderEmpty": "沒有子資料夾",
    "needTorrentFile": "請選擇 .torrent 檔",
    "torrentTooBig": ".torrent 大於 8 MiB",
    "seedStatusDownloading": "下載中",
    "seedStatusChecking": "檢查中",
    "seedStatusPaused": "已暫停",
    "seedStatusQueued": "排隊中",
    "swarmLeftover": "Tracker 紀錄另有 {{count}} 個 announce（不是資料庫 Torrent 列；來源不同）",
    "addSourceSection": "來源",
    "addSourceFile": "檔案",
    "addSourceMagnet": "磁鐵連結",
    "previewSection": "預覽",
    "saveRoot": "根目錄",
    "clearFile": "清除檔案",
    "extraTrackersTitle": "額外 announce",
    "extraTrackersEmptyTitle": "尚未加入額外 announce",
    "extraEnabledCount": "{{count}} 條已啟用",
    "extraApplyHint": "至少啟用一條才可套用到現有做種",
    "destMode": "此資料夾的用法",
    "seedExisting": "使用現有檔案做種",
    "downloadNewFolder": "下載到新資料夾",
    "destFileConflict": "此處已有檔案 {{name}}。請另選資料夾；若檔案就是此 Torrent 的內容，請選「使用現有檔案做種」。",
    "waitingPeers": "正在等待 peers。若檔案已在此主機，請重新加入並選「使用現有檔案做種」。"
  },
  "catalog": {
    "sw": {
      "vsftpd": "vsftpd（FTPS）",
      "db_util": "db-util（FTP 用戶資料庫）",
      "nginx": "Nginx",
      "certbot": "Certbot (Let's Encrypt)",
      "mysql_client": "MySQL／MariaDB 客戶端",
      "mysql_server": "MySQL 伺服器",
      "mariadb_server": "MariaDB 伺服器",
      "postgresql_client": "PostgreSQL 客戶端",
      "postgresql": "PostgreSQL 伺服器",
      "redis_tools": "Redis 客戶端",
      "redis_server": "Redis 伺服器",
      "ufw": "UFW 防火牆",
      "fail2ban": "fail2ban",
      "postfix": "Postfix",
      "dovecot": "Dovecot",
      "opendkim": "OpenDKIM",
      "pdns_server": "PowerDNS",
      "git": "git",
      "node": "Node.js",
      "php": "PHP",
      "python": "Python",
      "go": "Go",
      "rust": "Rust",
      "chromium": "Chromium / Chrome"
    },
    "php": {
      "session": "工作階段",
      "opcache": "OPcache"
    }
  },
  "cdn": {
    "fromProjectOk": "已從專案建立 CDN 站點 — 請套用 edges / DNS",
    "fromProjectUpdated": "已更新專案綁定的 CDN 站點",
    "fromProjectFailed": "from-project 失敗",
    "nodeUpdated": "節點已更新",
    "nodeCreated": "節點已建立",
    "saveFailed": "儲存失敗",
    "geoMapInvalid": "geoMap JSON 無效，例：{\"hkg\":[\"node-識別碼\"]}",
    "siteUpdated": "站點已更新",
    "siteCreated": "站點已建立",
    "probeOnline": "探活成功（online）",
    "probeOffline": "探活失敗（offline）",
    "probeFailed": "探活失敗",
    "batchProbeOk": "全部節點探活完成",
    "batchProbePartial": "部分／全部節點不健康",
    "batchProbeFailed": "批次探活失敗",
    "drainingSet": "已設為 draining",
    "drainCleared": "已解除 drain",
    "confirmDeleteNode": "確定刪除此 CDN 節點？",
    "nodeDeleted": "已刪除節點",
    "deleteFailed": "刪除失敗",
    "confirmDeleteSite": "確定刪除此 CDN 站點？",
    "siteDeleted": "已刪除站點",
    "blocked": "已封鎖（需系統變更權限）",
    "previewRender": "預覽渲染（{{status}}）hash={{hash}}",
    "fanoutDone": "Fan-out 完成（{{status}}）",
    "purgeDone": "清除 完成（{{status}}）",
    "dnsSyncDone": "DNS 同步完成（{{status}}）",
    "sslDone": "SSL 操作完成（{{status}}）",
    "confWritten": "已寫入 設定檔（{{status}}）",
    "partialFail": "未全部成功（{{status}}）— 見 notes",
    "statNodes": "節點",
    "hitNoStats": "尚無邊緣統計",
    "loopbackOriginBlocked": "不會把回環 origin {{url}} 寫到遠端邊緣。請先改成可達的 origin。",
    "applyFailedHint": "套用失敗",
    "applyFailedNoNote": "沒有存下失敗原因。請再套用一次以記錄錯誤。",
    "applyStatus": {
      "draft": "草稿",
      "planned": "已計劃",
      "applying": "套用中",
      "applied": "已套用",
      "failed": "失敗",
      "partial": "部分成功"
    },
    "statSites": "站點",
    "statSitesCount": "站點 {{n}}",
    "cacheMethod": {
      "none": "無法估計",
      "access_log": "存取日誌",
      "cache_dir": "快取目錄",
      "log_format": "需設定日誌格式"
    },
    "geoMapLabel": "地區對照（JSON）",
    "statApplyFailed": "套用失敗",
    "pillNodesSites": "節點 {{n}} · 站點 {{s}}",
    "statOnline": "線上",
    "statOnlineOf": "線上 {{n}}/{{total}}",
    "colRegion": "區域",
    "statDraining": "排空中 {{n}}",
    "statHit": "命中率",
    "localTest": "本機／測試",
    "hitUnknown": "未知",
    "lastHealthHint": "上次探活 {{at}} · {{ok}}",
    "lastHealthNever": "尚未探活 — 請按「探活」",
    "lastHealthFail": "探活失敗",
    "healthLoopNeedSites": "請先新增站點",
    "nodeStatus": {
      "online": "在線",
      "offline": "離線",
      "draining": "排空中",
      "unknown": "未知"
    },
    "recentNotes": "最近記錄",
    "previewOnlyNote": "本次僅預覽，未寫入邊緣。",
    "statByRegion": "區域：",
    "statByApply": "套用狀態：",
    "col": {
      "origin": "來源站",
      "edges": "邊緣數",
      "apply": "套用狀態",
      "dns": "DNS",
      "edgesOnline": "邊緣 線上／已套用",
      "dnsRr": "CDN DNS 記錄"
    },
    "mode": {
      "origin_pull": "回源拉取",
      "reverse_proxy": "反向代理",
      "static_edge": "靜態邊緣"
    },
    "dnsStrategy": {
      "multi_a": "多 A 記錄",
      "cname": "CNAME",
      "geo": "地區"
    },
    "edgesOnlineApplied": "線上 {{online}}/{{total}} · 已套用 {{applied}}",
    "hitMiss": "命中 {{hits}}／未命中 {{misses}}",
    "cacheBytes": "快取約 {{n}} B",
    "hitRateUnknown": "找不到含快取狀態的存取日誌，也沒有快取目錄，因此無法估算命中率。",
    "edgeConfPreview": "Nginx 邊緣 設定檔 預覽",
    "tabs": {
      "nodes": "節點",
      "sites": "站點",
      "dashboard": "儀表",
      "about": "說明"
    },
    "nodesTitle": "CDN 節點（{{count}}）",
    "nodesDesc": "登記控制面／來源站／邊緣／DNS。探活會更新狀態。",
    "offlineHint": "離線／探活失敗。若是測試殘留，可刪除此節點。",
    "colName": "名稱",
    "colRole": "角色",
    "colStatus": "狀態",
    "clearDrain": "解除 drain",
    "drain": "排空流量",
    "drainTitle": "停止向此邊緣派新流量",
    "drainDesc": "Drain「{{name}}」？現有連線會待完結。",
    "drainLastTitle": "這是最後一個邊緣 — Drain 後所有站點沒有邊緣可用",
    "drainLastDesc": "「{{name}}」是唯一邊緣。Drain 後所有站點沒有邊緣。",
    "clearDrainTitle": "恢復此邊緣接收新流量",
    "clearDrainDesc": "解除「{{name}}」的 drain？",
    "deleteNodeTitle": "刪除此 CDN 邊緣",
    "deleteLastNodeTitle": "刪除最後一個邊緣 — 所有站點將沒有邊緣",
    "purge": "清除",
    "previewTitle": "預覽 nginx 設定（不寫檔）",
    "writeConfTitle": "寫入邊緣 nginx 設定檔",
    "applyEdgesTitle": "套用此站點到邊緣（會寫 nginx）",
    "purgeTitle": "清除邊緣快取",
    "dnsSyncTitle": "寫入 CDN DNS 記錄",
    "probeDnsTitle": "探測邊緣與 DNS（唯讀）",
    "distSslTitle": "把 TLS 材料複製到邊緣",
    "leIssueTitle": "申請 Let’s Encrypt 憑證並分發",
    "deleteSiteTitle": "刪除此 CDN 站點",
    "siteOpConfirmGeneric": "對「{{name}}」執行此操作？",
    "siteOpConfirmDesc": "站點「{{name}}」· {{action}}。可能改動 nginx、DNS 或憑證。",
    "siteOpConfirm": {
      "apply": "套用此站點到邊緣？",
      "render": "寫入此站點的 nginx 設定？",
      "purge": "清除此站點快取？",
      "dns-sync": "同步此站點 DNS？",
      "dist": "分發 TLS 到邊緣？",
      "issue": "申請 Let’s Encrypt 並分發？"
    },
    "emptyNodesTitle": "尚未登記 CDN 節點",
    "emptyNodesDesc": "請使用右上角「+ 新增節點」登記 邊緣，再建立站點。",
    "sitesTitle": "CDN 站點（{{count}}）",
    "sitesDesc": "域名 + origin + edges + cache + multi-A DNS。套用 edges / DNS 同步 / 清除。",
    "healthLoopOk": "全部站點健康迴圈完成",
    "healthLoopPartial": "健康迴圈部分失敗",
    "healthLoopFailed": "health-loop 失敗",
    "colDomain": "域名",
    "colMode": "模式",
    "emptySitesTitle": "尚未有 CDN 站點",
    "emptySitesDesc": "請用表格右上角「+ 新增站點」建立站點。",
    "emptySitesNoEdge": "尚無 邊緣：先到「節點」分頁，用表格右上角「+ 新增節點」登記，再回來建立站點。",
    "dashboardTitle": "CDN 儀表",
    "updatedAt": "更新於 {{at}}",
    "dashboardEmpty": "尚未載入儀表",
    "siteStatus": "站點狀態",
    "cacheHitEstimate": "快取命中率粗估",
    "dashboardNotes": "儀表 notes",
    "editNode": "編輯 CDN 節點",
    "addNode": "新增 CDN 節點",
    "nodeAddrHint": "至少填 IPv4 / IPv6 / healthUrl / baseUrl 其中一項",
    "sshHostHint": "可空＝用 IPv4；127.0.0.1＝本機 local 套用",
    "sshHostPlaceholder": "留空用 public IPv4",
    "sshUser": "遠端登入 用戶",
    "fleetHint": "僅填 機群、無 遠端登入 時：fan-out 會入佇列給 代理（ysk-server 代理 loop），已排隊 ≠ 已 重新載入",
    "fleetPlaceholder": "Agents 頁面 工作階段 UUID",
    "editSite": "編輯 CDN 站點",
    "addSite": "新增 CDN 站點",
    "originHint": "origin 先支援 URL；project 綁定後續強化",
    "commaSeparated": "逗號分隔",
    "originUrl": "邊緣 回源地址",
    "edgeNodes": "邊緣 節點",
    "cache": "快取",
    "dnsPolicy": "DNS 策略",
    "dnsPolicyHint": "multi_a=多 IP；failover=只寫最健康一顆",
    "zoneOptional": "可空＝依域名自動匹配 zone",
    "sslMode": "SSL 模式",
    "sslModeHint": "上載＝SSL 頁已有憑證；le_http01＝邊緣 ACME",
    "leEmailOptional": "LE 電郵（可選）",
    "leEmailHint": "簽發時預填",
    "shieldHint": "非 shield 邊緣 經此節點回源",
    "geoMapHint": "strategy=geo 時用，例 {\"hkg\":[\"id1\"],\"nrt\":[\"id2\"]}",
    "geoSubdomain": "geo 子域名",
    "addNodeBtn": "+ 新增節點",
    "addSiteBtn": "+ 新增站點",
    "probeAll": "全部探活",
    "healthLoop": "健康迴圈",
    "setDraining": "設 draining",
    "fromProjectUpdatedAlt": "已更新專案綁定的 CDN 站點",
    "refresh": "重新整理",
    "closePreview": "關閉預覽",
    "probe": "探活",
    "preview": "預覽",
    "writeConf": "寫入 設定檔",
    "applyEdges": "套用 edges",
    "dnsSync": "DNS 同步",
    "probeDns": "探活+DNS",
    "distSsl": "分發 SSL",
    "leIssue": "LE 簽發",
    "reaggregate": "重新彙總",
    "createEdgeFirst": "請先建立 邊緣 節點",
    "enableProxyCache": "啟用 proxy_cache",
    "autoMatch": "（自動匹配）",
    "none": "（無）",
    "writeRegionDns": "寫入 region 子域名 A/AAAA（如 hkg）",
    "workflowHint": "流程：寫入 設定檔 → 套用 edges → 探活+DNS → SSL。專案一鍵：/cdn?fromProject=專案識別碼",
    "healthLoopAll": "全站健康迴圈",
    "deleteNodeDesc": "將刪除 CDN 節點「{{name}}」。",
    "deleteSiteDesc": "將刪除 CDN 站點「{{name}}」。",
    "deleteSiteC1": "站點政策與邊緣關聯",
    "deleteSiteC2": "已下發的 nginx 設定需另行清理或重新套用",
    "statOffline": "離線 {{n}}",
    "statHitRate": "命中率 {{v}}"
  },
  "cli": {
    "unknownCommand": "未知命令：{{command}}\n執行 `{{cli}} help`",
    "usagePrefix": "用法：",
    "security": {
      "help": "用法：ysk-伺服器安全狀態\n       ysk-server 安全會話清單|撤銷|撤銷-其他 [--user U]\n       ysk-server 安全性 api 金鑰清單|建立|刪除 …",
      "sessionsHelp": "用法：ysk-server 安全會話清單 [--user U]\n       ysk-server 安全會話撤銷 --id PREFIX [--user U]\n       ysk-伺服器安全會話撤銷其他 [--user U] [--keep-token T]",
      "apiKeysHelp": "用法：ysk-server 安全 api 金鑰列表\n       ysk-server security api-keys create --name N [--user U] [--scope full|read]\n       ysk-伺服器安全 API 金鑰刪除 --id KEY_ID",
      "noUser": "找不到用戶。請先建立管理員，或傳入 --user <名稱或識別碼>。",
      "tokenOnce": "權杖 只顯示一次 — 請妥善保存",
      "sessionRevokeUsage": "用法：ysk-server 安全會話撤銷 --id <sessionIdPrefix> [--user U]",
      "apiKeyDeleteUsage": "用法：ysk-server security api-keys delete --id KEY_ID"
    },
    "help": {
      "blurb": "控制平面 命令列 — 人工智能 代理 請優先用 --json。\n文件：docs/代理/README.md · docs/cli/reference.md · docs/代理/commands.json",
      "main": "YSK Server 命令列。指令與旗標一律為英文；--locale 只翻譯說明文字。\n\n{{product}} ({{cli}}) v{{version}}\n\nControl plane CLI — prefer --json for AI agents.\nDocs: docs/agent/README.md · docs/cli/reference.md · docs/agent/commands.json\n\nUsage:\n  {{cli}} <command> [options]\n\nCommands:\n  setup                 Init dataDir + admin\n  update                Self-update check/apply\n  serve                 HTTP API + Web UI\n  system unit-install   Install ysk-server.service [--enable]\n  stack                 plans|bundles|status|install|uninstall\n  tools                 List tools; tools run --tool <name> [--dry-run]\n  ask                   NL → AI plan [--execute]\n  projects              list|get|create|deploy|stop|health|backup|template\n  users                 list|create|totp\n  packages              list\n  rbac                  list|show\n  audit                 list\n  backup                all|list|status|restore|delete|schedule|control-plane|settings|restic\n  templates             App templates\n  hosting               nginx|dns|db|firewall helpers\n  dns                   zone|zones|lookup|ddns\n  logs                  sources|query|journal|overview\n  host                  overview|metrics (read-only)\n  nginx                 status|list|test|sync\n  ssl                   list|get (certificates)\n  db-cluster            list|get|create|plan (HA plan-first)\n  ssh-key               list|create|import|public|export|install|delete (SSH identity vault)\n  ssh-2fa               list|enroll|confirm|install|pam|retire (SSH login TOTP ≠ panel 2FA)\n  services              Host service matrix (systemctl probe)\n  defense | protection  status|ban|unban|whitelist\n  security              status|sessions|api-keys (2FA flags · session revoke · API keys)\n  cdn                   nodes|sites|render|apply|purge|probe|dashboard|health-loop|from-project\n  agents                runtimes|fleet list|commands|register (panel + edge)\n  agent run             Outbound fleet poller (experimental)\n  store                 status|export|import|migrate (json|sqlite|postgres document backends)\n  files                 list|read|write|mkdir|rm|stat|rename|copy|move|chmod|trash|shares (sandbox)\n  cron                  list|create|update|delete|enable|disable|run|install|status|host\n  email                 domains|mailboxes|deliverability|bootstrap|dns (panel parity)\n  health                Local mode snapshot or --url http://host:port/health\n  notifications         list\n  readiness | doctor    Production readiness (honest)\n  migrate               inventory|host|post|status|resume|orphan-homes (full host migrate)\n  vpn                   WireGuard / OpenVPN\n  vnc                   accounts|clients|share\n  apache                sites|settings\n  network               ifaces|exposure|real-ip\n  real-ip               CDN Real IP\n  updates               inventory|apply\n  software              list|install|uninstall\n  db                    MySQL / MariaDB / PostgreSQL\n  redis                 status|keys|get|set\n  ftp                   accounts|status\n  runtimes              list|install\n  bt-tracker            status|settings\n  validators            list|chains|disk|get|checklist (Beta)\n  docker                status|ps|images|compose|prune (engine)\n  version | help\n\nGlobal:\n  --json                JSON stdout (AI)\n  --data-dir PATH       also --data-dir=PATH or YSK_DATA_DIR\n  --config PATH\n  --locale CODE         CLI language (default en). Also YSK_LOCALE.\n                        Codes: en zh-HK zh-CN ja ko hi es ar fr bn pt id ur\n  --limit N --offset N  Slice large JSON lists (software / updates / host metrics / rbac)\n  --help | --version\n\nExit: 0 ok · 1 error · 2 validation · 3 blocked · 4 not found · 5 host error\n\nSafety:\n  Dangerous ops default to dry-run (plan only).\n  Pass --execute (alias --apply) + env YSK_EXECUTE=1 to mutate host.\n  Command names and flags are always English. --locale only translates messages.\n\nExamples:\n  {{cli}} readiness --json\n  {{cli}} host --json\n  {{cli}} nginx status --json\n  {{cli}} ssl list --json\n  {{cli}} projects get --id UUID --json\n  {{cli}} defense ban --ip 1.2.3.4 --json          # dry-run plan\n  {{cli}} projects list --json\n  {{cli}} --locale=zh-HK help\n  {{cli}} logs query --source journal: --lines 100 --json\n  {{cli}} tools --json"
    },
    "usage": {
      "tools": {
        "run": {
          "--tool": {
            "name": {
              "--arg": {
                "cd327c": "用法： ysk-server tools run --tool <名稱> [--arg 金鑰=val] [--預覽試行]"
              }
            }
          }
        }
      },
      "email": {
        "domains": {
          "list": {
            "create": {
              "get": {
                "b94a62": "用法： ysk-server 電郵 domains 列表|建立|get …"
              }
            }
          },
          "create": {
            "--domain": {
              "example": {
                "bd4036": "用法： ysk-server 電郵 domains 建立 --網域 example.com --ip A.B.C.D"
              }
            }
          }
        },
        "mailboxes": {
          "list": {
            "create": {
              "42b26c": "用法： ysk-server 電郵 mailboxes 列表|建立 …"
            }
          },
          "create": {
            "--domain": {
              "example": {
                "7227f3": "用法： ysk-server 電郵 mailboxes 建立 --網域 example.com --local 用戶 [--密碼 P]"
              }
            }
          }
        },
        "dns": {
          "--domain": {
            "example": {
              "com": {
                "26b806": "用法： ysk-server 電郵 dns --網域 example.com"
              }
            }
          }
        },
        "sub": {
          "--data-dir": {
            "path": {
              "--json": {
                "73dad0": "用法： ysk-server 電郵 <sub> [--data-dir 路徑] [--json]\n domains 列表|建立|get [--q TEXT]\n 建立 --網域 example.com --ip A.B.C.D\n get --網域 example.com | --識別碼 UUID\n mailboxes 列表|建立 [--網域 D | --識別碼 domainId]\n 建立 --網域 D --local 用戶 [--密碼 P]\n deliverability --網域 D | --識別碼 UUID\n deliverability-overview\n 初始化 --網域 D --ip A.B.C.D [--安裝]\n dns --網域 D | --識別碼 UUID # DNS bundle for 面板\nAlso: hosting 電郵-套用|電郵-mailbox|電郵-deliverability (aliases)"
              }
            }
          }
        },
        "deliverability": {
          "--domain": {
            "example": {
              "com": {
                "b0dff0": "用法： ysk-server 電郵 deliverability --網域 example.com"
              }
            }
          }
        },
        "bootstrap": {
          "--domain": {
            "example": {
              "com": {
                "affc8d": "用法： ysk-server 電郵 初始化 --網域 example.com --ip 1.2.3.4 [--安裝]"
              }
            }
          }
        }
      },
      "cron": {
        "delete": {
          "--id": {
            "job": {
              "id": {
                "f6aafe": "用法： ysk-server 定時工作 delete --識別碼 JOB_ID"
              }
            }
          }
        },
        "sub": {
          "--id": {
            "job": {
              "id": {
                "99cfdf": "用法： ysk-server 定時工作 {{sub}} --識別碼 JOB_ID"
              }
            }
          },
          "--data-dir": {
            "path": {
              "--json": {
                "0349e6": "用法： ysk-server cron <sub> [--data-dir PATH] [--json]\n  list [--project-id ID] [--q TEXT]\n  create --schedule \"0 3 * * *\" --command CMD [--project-id ID] [--user USER]\n  update --id JOB_ID [--schedule S] [--command CMD] [--user USER] [--project-id ID] [--enable|--disable]\n  delete --id JOB_ID\n  enable|disable --id JOB_ID\n  run --id JOB_ID              # run-now (needs YSK_EXECUTE=1)\n  install                     # load managed crontab (needs EXECUTE)\n  status                      # probe managed file vs host crontab\n  host [list] [--user USER] [--jobs-only]\n  host edit --user USER --old-schedule S --old-command C --schedule S --command C --execute\n  host disable|enable|delete|adopt --user USER --old-schedule S --old-command C --execute\n  host run --user USER --command C --execute\n誠實：未設定 YSK_EXECUTE=1 時，install 與 host 寫入會封鎖。\n"
              }
            }
          }
        },
        "run": {
          "--id": {
            "job": {
              "id": {
                "a0a97f": "用法： ysk-server 定時工作 run --識別碼 JOB_ID"
              }
            }
          }
        },
        "create": {
          "--schedule": {
            "0": {
              "3": {
                "9a8328": "用法： ysk-server 定時工作 建立 --schedule \"0 3 * * *\" --command CMD [--project-識別碼 識別碼] [--用戶 用戶]"
              }
            }
          }
        }
      },
      "files": {
        "stat": {
          "--path": {
            "rel": {
              "17c8f2": "用法： ysk-server 檔案 stat --路徑 REL"
            }
          }
        },
        "read": {
          "--path": {
            "rel": {
              "e35f8d": "用法： ysk-server 檔案 read --路徑 REL"
            }
          }
        },
        "mkdir": {
          "--path": {
            "rel": {
              "ae0438": "用法： ysk-server 檔案 mkdir --路徑 REL"
            }
          }
        },
        "rm": {
          "--path": {
            "rel": {
              "--permanent": {
                "fe2051": "用法： ysk-server 檔案 rm --路徑 REL [--permanent]"
              }
            }
          }
        },
        "rename": {
          "--from": {
            "rel": {
              "--to": {
                "35a260": "用法： ysk-server 檔案 rename --from REL --to REL"
              }
            }
          }
        },
        "copy": {
          "--from": {
            "rel": {
              "--to": {
                "5337f4": "用法： ysk-server 檔案 copy --from REL --to REL"
              }
            }
          }
        },
        "move": {
          "--from": {
            "rel": {
              "--to": {
                "75cf5d": "用法： ysk-server 檔案 move --from REL --to REL"
              }
            }
          }
        },
        "chmod": {
          "--path": {
            "rel": {
              "--mode": {
                "39f983": "用法： ysk-server 檔案 chmod --路徑 REL --模式 644"
              }
            }
          }
        },
        "trash": {
          "restore": {
            "--id": {
              "trash": {
                "c89ce9": "用法： ysk-server 檔案 trash 還原 --識別碼 TRASH_ID"
              }
            }
          },
          "list": {
            "restore": {
              "purge": {
                "ef063d": "用法： ysk-server 檔案 trash 列表|還原|清除"
              }
            }
          }
        },
        "shares": {
          "list": {
            "ac342c": "用法： ysk-server 檔案 shares 列表"
          }
        },
        "webdav": {
          "status": {
            "token": {
              "disable": {
                "f8e94b": "用法： ysk-server 檔案 webdav 狀態|權杖|停用"
              }
            }
          }
        },
        "sub": {
          "--root": {
            "public": {
              "project": {
                "42ebd4": "用法： ysk-server 檔案 <sub> [--管理員 public|project:識別碼] [--data-dir 路徑] [--json]\n 列表 [--路徑 DIR] [--q TEXT] [--sort 名稱|size|mtime] [--order asc|desc]\n stat --路徑 REL\n read --路徑 REL\n write --路徑 REL --content TEXT | --檔案 LOCAL\n mkdir --路徑 REL\n rm --路徑 REL [--permanent]\n rename --from REL --to REL\n copy --from REL --to REL\n move --from REL --to REL\n chmod --路徑 REL --模式 644\n trash 列表|還原|清除 [--識別碼 TRASH_ID]\n shares 列表\n favorites 列表\n 上載 --dir REL --檔案 LOCAL [--檔案 LOCAL2…]\n webdav 狀態|權杖|停用\nSandbox: only public 檔案 管理員 or project 主目錄 (路徑-constrained)."
              }
            }
          }
        },
        "write": {
          "--path": {
            "rel": {
              "--content": {
                "0addb1": "用法： ysk-server 檔案 write --路徑 REL --content TEXT | --檔案 LOCAL"
              }
            }
          }
        },
        "upload": {
          "--dir": {
            "rel": {
              "--file": {
                "f8c3bf": "用法： ysk-server 檔案 上載 --dir REL --檔案 LOCAL [--檔案 LOCAL2…]"
              }
            }
          }
        }
      },
      "store": {
        "import": {
          "--in": {
            "file": {
              "json": {
                "5b6fdd": "用法： ysk-server store import --in FILE.json"
              }
            }
          }
        },
        "sub": {
          "--data-dir": {
            "path": {
              "--json": {
                "d580e4": "用法： ysk-server store <sub> [--data-dir PATH] [--json]\n status Show backend kind + counts\n export --out FILE.json Dump document snapshot\n import --in FILE.json Overwrite snapshot from file\n migrate --to sqlite|json [--out PATH]\n Copy current store into another backend file\nEnv: YSK_STORE=json|sqlite|postgres YSK_DATABASE_URL=postgres://…\nHonesty: document-blob backends (not full relational schema yet)."
              }
            }
          }
        },
        "migrate": {
          "--to": {
            "json": {
              "sqlite": {
                "1c52a3": "用法： ysk-server store migrate --to json|sqlite [--out PATH]\n (postgres: export JSON then import under YSK_DATABASE_URL)"
              }
            }
          }
        }
      },
      "cdn": {
        "nodes": {
          "delete": {
            "--id": {
              "node": {
                "0c6a1e": "用法： ysk-server cdn nodes delete --識別碼 NODE_ID"
              }
            }
          },
          "drain": {
            "--id": {
              "node": {
                "a8aa81": "用法： ysk-server cdn nodes drain --識別碼 NODE_ID [--off]"
              }
            }
          },
          "list": {
            "upsert": {
              "delete": {
                "52549e": "用法： ysk-server cdn nodes 列表|upsert|delete|探測|drain …"
              }
            }
          },
          "upsert": {
            "--name": {
              "name": {
                "8f6f39": "用法： ysk-server cdn nodes upsert --名稱 名稱 [--識別碼 識別碼] [--base-url U] [--機群-代理-識別碼 S] [--ssh-主機 H] [--region R]"
              }
            }
          }
        },
        "sites": {
          "get": {
            "--id": {
              "site": {
                "3c3c35": "用法： ysk-server cdn sites get --識別碼 SITE_ID"
              }
            }
          },
          "delete": {
            "--id": {
              "site": {
                "51ef8f": "用法： ysk-server cdn sites delete --識別碼 SITE_ID"
              }
            }
          },
          "list": {
            "get": {
              "upsert": {
                "609da6": "用法： ysk-server cdn sites 列表|get|upsert|delete …"
              }
            }
          },
          "upsert": {
            "--name": {
              "n": {
                "6ebb75": "用法： ysk-server cdn sites upsert --名稱 N --domains a.com,b.com [--邊緣-識別碼 識別碼]… [--origin-url U] [--origin-project 識別碼]"
              }
            }
          }
        },
        "render": {
          "--site-id": {
            "id": {
              "--dry-run": {
                "2149eb": "用法： ysk-server cdn render --site-識別碼 識別碼 [--預覽試行]"
              }
            }
          }
        },
        "apply": {
          "--site-id": {
            "id": {
              "--edge-id": {
                "a527b3": "用法： ysk-server cdn 套用 --site-識別碼 識別碼 [--邊緣-識別碼 邊緣]"
              }
            }
          }
        },
        "purge": {
          "--site-id": {
            "id": {
              "--edge-id": {
                "bc08ec": "用法： ysk-server cdn 清除 --site-識別碼 識別碼 [--邊緣-識別碼 邊緣]"
              }
            }
          }
        },
        "dns-sync": {
          "--site-id": {
            "id": {
              "--apply-zone": {
                "343068": "用法： ysk-server cdn dns-同步 --site-識別碼 識別碼 [--套用-zone]"
              }
            }
          }
        },
        "sub": {
          "--data-dir": {
            "path": {
              "--json": {
                "092842": "用法： ysk-server cdn <sub> [--data-dir 路徑] [--json]\n nodes 列表|upsert|delete|探測|drain\n sites 列表|upsert|delete|get\n render --site-識別碼 識別碼 [--預覽試行]\n 套用 --site-識別碼 識別碼 [--邊緣-識別碼 識別碼] # fan-out (機群 queue 成功 without 執行)\n 清除 --site-識別碼 識別碼 [--邊緣-識別碼 識別碼]\n dns-同步 --site-識別碼 識別碼 [--套用-zone]\n 探測 | dashboard | health-loop [--套用-zone]\n from-project --project-識別碼 識別碼 [--邊緣-識別碼 識別碼…]\nHonesty: apply_status 已寫入/已排隊 ≠ 邊緣 nginx 已套用 until 代理 回報 / 執行 重新載入."
              }
            }
          }
        },
        "from-project": {
          "--project-id": {
            "id": {
              "--edge-id": {
                "a96f42": "用法： ysk-server cdn from-project --project-識別碼 識別碼 [--邊緣-識別碼 識別碼]…"
              }
            }
          }
        }
      },
      "agents": {
        "fleet": {
          "remove": {
            "--session": {
              "session": {
                "1827fe": "用法： ysk-server agents 機群 remove --工作階段 SESSION_ID"
              }
            }
          },
          "register": {
            "--id": {
              "agent": {
                "209b2d": "用法： ysk-server agents 機群 登記 --識別碼 AGENT_ID [--group g] [--邊緣]"
              }
            }
          },
          "commands": {
            "--session": {
              "session": {
                "f8067c": "用法： ysk-server agents 機群 commands --工作階段 SESSION_ID"
              }
            }
          }
        },
        "register": {
          "--id": {
            "agent": {
              "id": {
                "3c4477": "用法： ysk-server agents 登記 --識別碼 AGENT_ID [--group g]"
              }
            }
          }
        },
        "commands": {
          "--session": {
            "session": {
              "id": {
                "e620d2": "用法： ysk-server agents commands --工作階段 SESSION_ID"
              }
            }
          }
        },
        "runtimes": {
          "probe": {
            "fleet": {
              "list": {
                "261fa4": "用法： ysk-server agents [運行時s|探測|機群 列表|機群 登記|機群 commands|登記|commands]"
              }
            }
          }
        }
      },
      "agent": {
        "run": {
          "--control-plane": {
            "url": {
              "--id": {
                "cfefbe": "用法： ysk-server 代理 run --control-plane URL --識別碼 AGENT_ID [--group g]"
              }
            }
          }
        }
      },
      "ask": {
        "check": {
          "system": {
            "info": {
              "b0c781": "用法： ysk-server ask \"check system info\""
            }
          }
        }
      },
      "backup": {
        "delete": {
          "--project-id": {
            "id": {
              "--name": {
                "d66c29": "用法： ysk-server backup delete --project-識別碼 識別碼 --名稱 ARCHIVE"
              }
            }
          }
        },
        "restic": {
          "list": {
            "run": {
              "restore": {
                "10402b": "用法： ysk-server backup Restic 列表|run|還原 …"
              }
            }
          },
          "restore": {
            "--project-id": {
              "id": {
                "a8f133": "用法： ysk-server backup Restic 還原 --project-識別碼 識別碼 --快照 SNAP [--預覽試行] [--overwrite-主目錄 --confirm PHRASE]"
              }
            }
          }
        },
        "sub": {
          "--data-dir": {
            "path": {
              "--json": {
                "777243": "用法： ysk-server backup <sub> [--data-dir 路徑] [--json]\n all 備份 all project homes (+ remote/Restic side when configured)\n 列表 [--project-識別碼 識別碼] [--q TEXT]\n 狀態 Last run + schedule 探測\n 還原 --project-識別碼 識別碼 --名稱 ARCHIVE [--模式 full|網站|預覽試行]\n delete --project-識別碼 識別碼 --名稱 ARCHIVE\n schedule [--定時工作 \"0 3 * * *\"] [--安裝]\n control-plane 快照 ysk.json + config.json\n control-plane-還原 --名稱 ARCHIVE [--模式 預覽試行|full] [--confirm 還原-CONTROL-PLANE]\n settings [get|set] Remote / exclusions / Restic\n set --remote-kind local|sftp|s3 --remote-路徑 P [--remote-主機 H] …\n set --exclude a,b,c | --exclusions-檔案 檔案\n set --Restic-啟用 --Restic-密碼 P [--Restic-儲存庫 路徑]\n set --from-json 檔案 # full patch {remote?,exclusions?,Restic?}\n Restic 列表|run|還原 Incremental Restic helpers"
              }
            }
          }
        },
        "control-plane-restore": {
          "--name": {
            "archive": {
              "--mode": {
                "316a76": "用法： ysk-server backup control-plane-還原 --名稱 ARCHIVE [--模式 預覽試行|full] [--confirm 還原-CONTROL-PLANE]"
              }
            }
          }
        },
        "restore": {
          "--project-id": {
            "id": {
              "--name": {
                "bc7041": "用法： ysk-server backup 還原 --project-識別碼 識別碼 --名稱 ARCHIVE [--模式 full|網站|預覽試行]"
              }
            }
          }
        }
      },
      "packages": {
        "list": {
          "--q": {
            "text": {
              "b8e16b": "用法： ysk-server 套件 列表 [--q text]"
            }
          }
        }
      },
      "projects": {
        "stop": {
          "--id": {
            "projectid": {
              "b15409": "用法： ysk-server 專案 stop --識別碼 <projectId>"
            }
          }
        },
        "backup": {
          "--id": {
            "projectid": {
              "e62846": "用法： ysk-server 專案 備份 --識別碼 <projectId>"
            }
          }
        },
        "health": {
          "--id": {
            "projectid": {
              "e816ec": "用法： ysk-server 專案 health --識別碼 <projectId>"
            }
          }
        },
        "isolation": {
          "provision": {
            "--id": {
              "projectid": {
                "5aff44": "用法： ysk-server 專案 isolation provision --識別碼 <projectId>\n ysk-server 專案 isolation provision-all [--limit 20]"
              }
            }
          },
          "backfill-owners": {
            "--owner-user-id": {
              "id": {
                "8691da": "用法： ysk-server 專案 isolation backfill-owners --owner-用戶-識別碼 <識別碼>"
              }
            }
          },
          "list": {
            "provision": {
              "provision-all": {
                "8e9da3": "用法： ysk-server 專案 isolation 列表|provision|provision-all|backfill-owners"
              }
            }
          }
        },
        "get": {
          "--id": {
            "projectid": {
              "name": {
                "b0d532": "用法： ysk-server 專案 get --識別碼 <projectId|名稱> [--json]"
              }
            }
          }
        },
        "create": {
          "--name": {
            "name": {
              "--domain": {
                "66e857": "用法： ysk-server projects create --name <name> [--domain d] [--runtime node|php|static|python|go|rust] [--template id] [--git-url URL] [--branch B] [--create-dns] [--create-mail] [--server-ip A.B.C.D] [--server-ipv6 ADDR]"
              }
            }
          }
        },
        "deploy": {
          "--id": {
            "projectid": {
              "--entry": {
                "339111": "用法： ysk-server 專案 deploy --識別碼 <projectId> [--entry f] [--埠 N] [--fpm|--builtin] [--重新載入]"
              }
            }
          }
        },
        "git-deploy": {
          "--id": {
            "id": {
              "--git-url": {
                "a513f5": "用法： ysk-server 專案 git-deploy --識別碼 識別碼 [--git-url URL] [--branch|--ref main] [--no-redeploy] [--depth 1] [--entry f]"
              }
            }
          }
        },
        "template": {
          "--id": {
            "projectid": {
              "--template": {
                "591ce4": "用法： ysk-server 專案 template --識別碼 <projectId> --template <識別碼> [--force]"
              }
            }
          }
        },
        "list": {
          "get": {
            "create": {
              "deploy": {
                "253b48": "用法： ysk-server projects list|get|create|deploy|git-deploy|git|stop|backup|template|ftp|health [options]\n  deploy --id UUID [--entry f] [--port N] [--fpm|--builtin] [--reload]\n  git-deploy --id UUID [--git-url URL] [--branch|--ref B] [--no-redeploy]\n  git status|log|fetch|checkout|reset|auth|hook|deploy --id UUID [--ref R] [--unshallow] [--yes]\n  git auth --id UUID --token T|--deploy-key|--pin-host\n  git hook --id UUID --enable|--rotate|--disable\n  ftp --id UUID --password P [--user NAME] [--home app|root]\n"
              }
            }
          }
        }
      },
      "cli": {
        "name": {
          "db-cluster": {
            "get": {
              "--id": {
                "00f803": "用法： {{CLI_NAME}} db-叢集 get --識別碼 UUID [--json]"
              }
            },
            "plan": {
              "--id": {
                "483f52": "用法： {{CLI_NAME}} db-叢集 計劃 --識別碼 UUID [--json]"
              }
            },
            "artifacts": {
              "--id": {
                "6b33c4": "用法： {{CLI_NAME}} db-叢集 artifacts --識別碼 UUID [--json]"
              }
            },
            "bundle": {
              "--id": {
                "94ed27": "用法： {{CLI_NAME}} db-叢集 bundle --識別碼 UUID [--json]"
              }
            },
            "delete": {
              "--id": {
                "3de0e4": "用法： {{CLI_NAME}} db-叢集 delete --識別碼 UUID [--json]"
              }
            },
            "create": {
              "--name": {
                "e3b733": "用法： {{CLI_NAME}} db-叢集 建立 --名稱 N --engine mariadb --kind mariadb-galera --member 主機=role[:access] ..."
              }
            },
            "apply": {
              "--id": {
                "4cddb8": "用法： {{CLI_NAME}} db-叢集 套用 --識別碼 UUID [--執行] [--初始化] [--json]"
              }
            },
            "probe": {
              "--id": {
                "22870c": "用法： {{CLI_NAME}} db-叢集 探測 --識別碼 UUID [--peers] [--json]"
              }
            },
            "install-peers": {
              "--id": {
                "600b02": "用法： {{CLI_NAME}} db-叢集 安裝-peers --識別碼 UUID [--執行] [--no-重新啟動] [--identity 識別碼] [--json]"
              }
            },
            "push": {
              "--id": {
                "697080": "用法： {{CLI_NAME}} db-叢集 推送 --識別碼 UUID [--member 識別碼] [--identity 識別碼] [--執行] [--json]"
              }
            },
            "fleet": {
              "--id": {
                "239462": "用法： {{CLI_NAME}} db-叢集 機群 --識別碼 UUID [--op 套用|探測|計劃] [--執行] [--邊緣-執行] [--json]"
              }
            },
            "list": {
              "get": {
                "3b9cfa": "用法： {{CLI_NAME}} db-叢集 列表|get|建立|計劃|套用|探測|安裝-peers|artifacts|bundle|推送|機群|overview|delete [--peers] [--執行] [--json]"
              }
            }
          },
          "ssh-key": {
            "get": {
              "--id": {
                "292716": "用法： {{CLI_NAME}} ssh-金鑰 get --識別碼 UUID [--json]"
              }
            },
            "public": {
              "--id": {
                "525d7d": "用法： {{CLI_NAME}} ssh-金鑰 public --識別碼 UUID"
              }
            },
            "export": {
              "--id": {
                "0a6d81": "用法： {{CLI_NAME}} ssh-金鑰 export --識別碼 UUID [--out 路徑] [--json]"
              }
            },
            "delete": {
              "--id": {
                "a6e2f2": "用法： {{CLI_NAME}} ssh-金鑰 delete --識別碼 UUID [--json]"
              }
            },
            "create": {
              "--name": {
                "8b1d79": "用法： {{CLI_NAME}} ssh-金鑰 建立 --名稱 N [--algo ed25519|rsa-4096] [--purpose 用戶|面板|unbound] [--project 識別碼] [--用戶 U] [--主目錄 路徑] [--reveal] [--json]"
              }
            },
            "import": {
              "--name": {
                "6eb800": "用法： {{CLI_NAME}} ssh-金鑰 匯入 --名稱 N --檔案 路徑 [--purpose 面板|用戶] [--json]"
              }
            },
            "install": {
              "--id": {
                "b99c56": "用法： {{CLI_NAME}} ssh-金鑰 安裝 --識別碼 UUID [--執行] [--json]"
              }
            },
            "test": {
              "--id": {
                "e1aed3": "用法： {{CLI_NAME}} ssh-金鑰 test --識別碼 UUID --目標 用戶@主機[:埠] [--執行] [--json]"
              }
            },
            "rotate": {
              "--id": {
                "9c3224": "用法： {{CLI_NAME}} ssh-金鑰 rotate --識別碼 UUID [--reveal] [--json]"
              }
            },
            "authorize-self": {
              "--id": {
                "b7ea2e": "用法： {{CLI_NAME}} ssh-金鑰 authorize-self --識別碼 UUID [--json]"
              }
            },
            "uninstall": {
              "--id": {
                "afcba0": "用法： {{CLI_NAME}} ssh-金鑰 卸載 --識別碼 UUID [--執行] [--json]"
              }
            },
            "list": {
              "get": {
                "2c92c6": "用法： {{CLI_NAME}} ssh-金鑰 列表|get|建立|匯入|public|export|安裝|test|rotate|authorize-self|卸載|delete [--json]"
              }
            }
          },
          "ssh-2fa": {
            "reveal": {
              "--id": {
                "a6c27f": "用法： {{CLI_NAME}} ssh-2fa reveal --識別碼 UUID [--json]"
              }
            },
            "retire": {
              "--id": {
                "6e1fa3": "用法： {{CLI_NAME}} ssh-2fa retire --識別碼 UUID [--json]"
              }
            },
            "enroll": {
              "--user": {
                "081432": "用法： {{CLI_NAME}} ssh-2fa enroll --用戶 LINUX|--project 識別碼 [--主目錄 路徑] [--from-面板] [--json]"
              }
            },
            "confirm": {
              "--id": {
                "9ee8a2": "用法： {{CLI_NAME}} ssh-2fa confirm --識別碼 UUID --code 123456 [--json]"
              }
            },
            "install": {
              "--id": {
                "dace06": "用法： {{CLI_NAME}} ssh-2fa 安裝 --識別碼 UUID [--執行] [--json]"
              }
            },
            "uninstall": {
              "--id": {
                "0bb464": "用法： {{CLI_NAME}} ssh-2fa 卸載 --識別碼 UUID [--執行] [--json]"
              }
            },
            "list": {
              "enroll": {
                "802ed0": "用法： {{CLI_NAME}} ssh-2fa 列表|enroll|confirm|安裝|卸載|pam|reveal|retire [--json]"
              }
            }
          },
          "ssl": {
            "list": {
              "get": {
                "79c232": "用法： {{CLI_NAME}} ssl 列表|get --網域 X [--json]"
              }
            },
            "get": {
              "--domain": {
                "91c444": "用法： {{CLI_NAME}} ssl get --網域 example.com [--json]"
              }
            }
          },
          "dns": {
            "zone": {
              "--zone": {
                "ad30fa": "用法： {{CLI_NAME}} dns zone --zone example.com --ip A.B.C.D [--ipv6 X:X::X] [--validate] [--重新載入]"
              }
            },
            "zones": {
              "zone": {
                "5b8bda": "用法： {{CLI_NAME}} dns zones|zone --zone X --ip A.B.C.D [--ipv6 …] [--json]"
              }
            }
          },
          "nginx": {
            "status": {
              "list": {
                "d67a16": "用法： {{CLI_NAME}} nginx 狀態|列表|test|同步 [--執行] [--json]"
              }
            }
          },
          "host": {
            "overview": {
              "metrics": {
                "93c828": "用法： {{CLI_NAME}} 主機 overview|metrics|network [--路徑 /] [--json]"
              }
            }
          },
          "logs": {
            "sources": {
              "overview": {
                "79058c": "用法： {{CLI_NAME}} 日誌 sources|overview|units|系統日誌|query [--source 識別碼] [--json]"
              }
            }
          },
          "services": {
            "sub": {
              "--unit": {
                "4fe3fa": "用法： {{CLI_NAME}} services {{sub}} --unit <系統服務-服務單元> [--執行] [--json]"
              }
            },
            "matrix": {
              "start": {
                "4f3a35": "用法： {{CLI_NAME}} services matrix|start|stop|重新啟動|重新載入 --unit 名稱 [--執行] [--json]"
              }
            }
          },
          "defense": {
            "ban": {
              "--ip": {
                "cc22de": "用法： {{CLI_NAME}} defense 封鎖 --ip <ip> [--method fail2ban|ufw|both] [--reason t] [--執行]"
              }
            },
            "unban": {
              "--ip": {
                "46aa23": "用法： {{CLI_NAME}} defense unban --ip <ip> [--method fail2ban|ufw|both] [--執行]"
              }
            },
            "whitelist": {
              "--action": {
                "c1cbdf": "用法： {{CLI_NAME}} defense whitelist --action 列表|add|remove [--ip IP]"
              }
            },
            "status": {
              "bans": {
                "a8d96b": "用法： {{CLI_NAME}} defense 狀態|bans|suspects|封鎖|unban|whitelist|stack-套用|fail2ban|firewall|timeline|預設方案s [--json]\n bans [--q text] [--source fail2ban|面板|ufw|auto]\n suspects [--q text]\n stack-套用 [--執行] # UFW + fail2ban + current 預設方案\n fail2ban | firewall # deep probes (honest)\n timeline [--limit N] [--q text]\n 預設方案s # 列表 + active預設方案"
              }
            }
          }
        }
      },
      "system": {
        "unit-install": {
          "--enable": {
            "--data-dir": {
              "path": {
                "33daa1": "用法： ysk-server system 服務單元-安裝 [--啟用] [--data-dir 路徑]"
              }
            }
          }
        }
      },
      "users": {
        "create": {
          "--username": {
            "u": {
              "--password": {
                "7145c7": "用法： ysk-server users 建立 --username <u> --密碼 <p> [--role operator|viewer|管理員] [--套件-識別碼 識別碼] [--locale zh-HK]"
              }
            }
          }
        },
        "list": {
          "--q": {
            "text": {
              "--role": {
                "544685": "用法： ysk-server users 列表 [--q text] [--role 管理員|operator|viewer]\n ysk-server users 建立 --username u --密碼 p [--role operator]"
              }
            }
          }
        }
      },
      "rbac": {
        "list": {
          "policies": {
            "330ade": "用法： ysk-server rbac 列表|policies\n ysk-server rbac show --role operator\n ysk-server rbac audit # route→cap sample matrix"
          }
        }
      },
      "hosting": {
        "postgres-provision": {
          "--db": {
            "name": {
              "--user": {
                "2c8889": "用法： ysk-server hosting postgres-provision --db 名稱 --用戶 U --密碼 P(min8) [--執行]\n 預設 預覽試行 (no 主機 change). Pass --執行 + 系統變更權限已開啟 to 套用."
              }
            }
          }
        },
        "mysql-provision": {
          "--db": {
            "name": {
              "--user": {
                "fc25aa": "用法： ysk-server hosting mysql-provision --db 名稱 --用戶 U --密碼 P(min8) [--執行]\n 預設 預覽試行 (no 主機 change). Pass --執行 + 系統變更權限已開啟 to 套用."
              }
            }
          }
        },
        "dns-zone": {
          "--zone": {
            "example": {
              "com": {
                "bdaa0d": "用法： ysk-server hosting dns-zone --zone example.com --ip A.B.C.D [--ipv6 X:X::X] [--validate] [--重新載入]"
              }
            }
          }
        },
        "powerdns-load": {
          "--zone": {
            "example": {
              "com": {
                "dba49c": "用法： ysk-server hosting powerdns-load --zone example.com --ip A.B.C.D [--ipv6 X:X::X] [--load|--執行]"
              }
            }
          }
        },
        "email-apply": {
          "--domain": {
            "example": {
              "com": {
                "37d350": "用法： ysk-server hosting 電郵-套用 --網域 example.com [--安裝|--執行]"
              }
            }
          }
        },
        "email-mailbox": {
          "--domain": {
            "x": {
              "--local": {
                "3d9be3": "用法： ysk-server hosting 電郵-mailbox --網域 X --local 用戶 [--密碼 P] [--ip A.B.C.D]"
              }
            }
          }
        },
        "ftps-apply": {
          "--domain": {
            "files": {
              "example": {
                "284a7c": "用法： ysk-server hosting ftps-套用 --網域 檔案.example.com [--安裝|--執行]"
              }
            }
          }
        },
        "webmail-apply": {
          "--domain": {
            "webmail": {
              "example": {
                "2ad5b5": "用法： ysk-server hosting webmail-套用 --網域 webmail.example.com [--下載]"
              }
            }
          }
        },
        "public-files": {
          "--domain": {
            "files": {
              "example": {
                "0e9013": "用法： ysk-server hosting public-檔案 --網域 檔案.example.com [--重新載入]"
              }
            }
          }
        },
        "email-deliverability": {
          "--domain": {
            "example": {
              "com": {
                "8774a4": "用法： ysk-server hosting 電郵-deliverability --網域 example.com\n ysk-server hosting 電郵-deliverability --識別碼 <domainId>"
              }
            }
          }
        },
        "email-bootstrap": {
          "--domain": {
            "example": {
              "com": {
                "796da5": "用法： ysk-server hosting 電郵-初始化 --網域 example.com --ip 1.2.3.4 [--管理員 postmaster] [--密碼 P] [--安裝]"
              }
            }
          }
        }
      },
      "migrate": {
        "post": {
          "--job": {
            "id": {
              "--data-dir": {
                "6a73cd": "用法： ysk-server migrate post --job <識別碼> --data-dir 路徑 --執行"
              }
            }
          }
        },
        "host": {
          "--target": {
            "root": {
              "new": {
                "3e94a2": "用法： ysk-server migrate 主機 --目標 管理員@NEW_IP [--identity-檔案 路徑|--identity-識別碼 識別碼] [--密碼] --執行 --data-dir 路徑"
              }
            }
          }
        }
      },
      "x": {
        "972912": "用法：\n  ysk-server migrate inventory [--data-dir PATH] --json\n  ysk-server migrate host --target root@IP [--identity-file PATH|--identity-id ID|--password PW] --execute [--maintenance] [--force-wipe-target]\n  ysk-server migrate post --job ID --data-dir PATH --execute   # 在目標機\n  ysk-server migrate status [--job ID]\n  ysk-server migrate resume --job ID --execute\n  ysk-server migrate orphan-homes [--data-dir PATH] --json\n  ysk-server migrate orphan-homes --path /home/ysk-server-UUID --confirm PATH --execute\n"
      },
      "hostingHelp": "用法：ysk-server hosting <sub>\n 危險操作預設 預覽試行；加 --執行（+ 系統變更權限已開啟）才真正套用\n nginx | nginx-同步 [--執行]\n redis-provision | postgres-provision | mysql-provision [--執行]\n dns-zone --zone X --ip A.B.C.D [--ipv6 X:X::X] [--validate] [--重新載入]\n dns-zones | powerdns-狀態 | powerdns-安裝 [--安裝|--執行]\n powerdns-load --zone X --ip A.B.C.D [--load|--執行]\n 電郵-套用 --網域 X [--安裝|--執行]\n 電郵-mailbox --網域 X --local 用戶 [--密碼 P] [--ip A.B.C.D] [--system]\n ftps-套用 --網域 X [--安裝|--執行]\n 運行時s | 運行時-安裝 --kind node|php|python|go|rust --version V [--安裝|--執行]\n dovecot-passdb --網域 X | --all\n webmail-套用 --網域 webmail.example.com [--下載]\n public-檔案 --網域 檔案.example.com [--重新載入]\n 電郵-初始化 --網域 example.com --ip A.B.C.D [--安裝|--執行]\n 電郵-deliverability --網域 example.com # PTR/DNSBL/warmup 誠實報告\n firewall-套用 [--smtp] [--執行]",
      "logsQuery": "用法：{{CLI_NAME}} 日誌 query --source <識別碼> [--lines N] [--grep G] [--since 1h] [--priority err]\n source 例：系統日誌: 系統日誌:nginx.service 檔案:syslog project:<uuid>\n {{CLI_NAME}} 日誌 sources --json\n {{CLI_NAME}} 日誌 系統日誌 [--unit nginx.service] --json"
    },
    "msg": {
      "domain": {
        "missing": {
          "pass": {
            "5be09b": "缺少域名 — 請傳 --ip 以先建立域名"
          }
        }
      },
      "--root": {
        "must": {
          "be": {
            "a84834": "--root 必須是 public 或 project:<id>\n"
          }
        }
      },
      "need": {
        "--content": {
          "or": {
            "4d7001": "需要 --content 或 --file\n"
          }
        },
        "at": {
          "least": {
            "7d311a": "至少需要一個 --member HOST[=role][:access]\n"
          }
        }
      },
      "action": {
        "must": {
          "be": {
            "ba14c1": "action 必須是 list|add|remove\n"
          }
        }
      },
      "use": {
        "ysk-server": {
          "backup": {
            "ca67f4": "請用：ysk-server backup control-plane-restore --name ARCHIVE（不要用 restore --project-id control-plane）\n"
          }
        }
      },
      "new": {
        "domain": {
          "requires": {
            "986b78": "新網域需要 --ip A.B.C.D（不要用佔位預設）\n"
          }
        }
      },
      "import-sync": {
        "prefers": {
          "fleet": {
            "4d7590": "import-sync 優先用 fleet clusterSync payload；或 --file snapshot.json\n"
          }
        }
      },
      "security": {
        "control": {
          "plane": {
            "f59a63": "安全：控制平面綁定公開位址 (0.0.0.0/::)。建議 127.0.0.1 + 反向代理 / UFW。\n"
          }
        }
      }
    },
    "err": {
      "unknown": {
        "email": {
          "sub": {
            "sub": {
              "e37257": "未知 電郵 子命令： {{sub}}\n執行： ysk-server 電郵 help"
            }
          }
        },
        "cron": {
          "sub": {
            "sub": {
              "e1a9ed": "未知 定時工作 子命令： {{sub}}\n執行： ysk-server 定時工作 help"
            }
          }
        },
        "files": {
          "sub": {
            "sub": {
              "07ad7e": "未知 檔案 子命令： {{sub}}\n執行： ysk-server 檔案 help"
            }
          }
        },
        "store": {
          "sub": {
            "sub": {
              "b7a083": "未知 store 子命令： {{sub}}\n執行： ysk-server store help"
            }
          }
        },
        "cdn": {
          "subcommand": {
            "sub": {
              "76664f": "未知 cdn 子命令： {{sub}}\n執行： ysk-server cdn help"
            }
          }
        },
        "backup": {
          "subcommand": {
            "sub": {
              "4092ad": "未知 備份 子命令： {{sub}}\n執行： ysk-server backup help"
            }
          }
        }
      }
    },
    "setup": {
      "dryRunOk": "{{product}} setup 預覽試行 成功",
      "dryRunNext": "再次執行時請去掉 --預覽試行，以寫入設定並初始化資料庫",
      "weakPassword": "管理員密碼過弱或仍為預設。請傳入強密碼 --管理員-密碼（最少 8 位，勿用 管理員／常見預設），或本機開發設 YSK_ALLOW_INSECURE_DEFAULTS=1。",
      "weakPasswordShort": "已拒絕過弱或預設管理員密碼",
      "nextStart": "啟動（介面 + Web UI）：{{cli}} serve --config {{configPath}}",
      "nextOpen": "開啟 http://{{host}}:{{port}}/ 並以 {{user}} 登入",
      "nextUnit": "系統服務單元 範本：{{unitPath}}",
      "nextInstall": "安裝 服務單元（管理員權限與系統變更權限）：{{cli}} system 服務單元-安裝 --啟用 --data-dir {{dataDir}}",
      "nextExecute": "生產主機變更需要 系統變更權限已開啟 與管理員權限",
      "nextGolive": "上線：docs/deploy/go-live.md + ysk-server 就緒檢查 --json",
      "secPassword": "安全：請立即更改管理員密碼（初始化 使用了弱／預設密碼）",
      "sec2fa": "安全：請在「帳號安全 → 帳戶」啟用管理員 雙重驗證",
      "secListen": "安全：正在監聽所有介面 — 請放防火牆／反向代理之後；管理建議 127.0.0.1 + 遠端登入 tunnel",
      "ok": "{{product}} setup 完成（資料庫已初始化）",
      "okInsecure": "{{product}} setup 完成（資料庫已初始化）［不安全 初始化 — 請改密碼］"
    }
  },
  "common": {
    "all": "全部",
    "cancel": "取消",
    "confirm": "確認",
    "refresh": "重新整理",
    "loading": "載入中…",
    "save": "儲存",
    "apply": "套用",
    "close": "關閉",
    "copy": "複製",
    "copied": "已複製",
    "expandAll": "全部展開",
    "collapseAll": "全部摺疊",
    "empty": "無資料",
    "back": "返回",
    "showTechnical": "顯示技術詳情",
    "hideTechnical": "隱藏技術詳情",
    "needExecute": "需開啟系統變更權限",
    "needRoot": "需系統管理員權限",
    "needExecuteRoot": "需系統變更權限與系統管理員",
    "writtenOnly": "已寫入管理檔，未套用到系統",
    "applyToLive": "套用後才生效",
    "saveDraft": "儲存草稿",
    "languageName": "繁體中文",
    "languageNative": "繁體中文",
    "language": "語言",
    "switchLanguage": "切換語言",
    "showPassword": "顯示",
    "hidePassword": "隱藏",
    "searchGlobal": "搜尋頁面與資源…",
    "menu": "選單",
    "processing": "處理中…",
    "unavailable": "目前不可用",
    "retry": "再試",
    "success": "成功",
    "ok": "正常",
    "failed": "失敗",
    "blocked": "無法執行",
    "status": "狀態",
    "port": "埠",
    "url": "網址",
    "actions": "操作",
    "noData": "沒有資料",
    "input": "輸入",
    "pleaseEnter": "請輸入 {{value}}",
    "pleaseFill": "請填寫",
    "required": "必填",
    "about": "說明",
    "more": "更多",
    "operation": "操作",
    "delete": "刪除",
    "edit": "編輯",
    "create": "建立",
    "install": "安裝",
    "installing": "安裝中…",
    "reprobe": "重新探測",
    "search": "搜尋",
    "yes": "是",
    "no": "否",
    "on": "開",
    "off": "關",
    "open": "開啟",
    "enabled": "已啟用",
    "disabled": "已停用",
    "installed": "已安裝",
    "notInstalled": "未安裝",
    "running": "運行中",
    "stopped": "已停止",
    "ready": "就緒",
    "unknown": "未知",
    "normal": "正常",
    "degraded": "降級",
    "missing": "缺少",
    "available": "可用",
    "applied": "已套用",
    "notApplied": "未套用",
    "completed": "已完成",
    "incomplete": "未完成",
    "probed": "已探測",
    "notProbed": "未探測",
    "probe": "探測",
    "name": "名稱",
    "username": "用戶名",
    "password": "密碼",
    "domain": "域名",
    "host": "主機",
    "version": "版本",
    "type": "類型",
    "mode": "模式",
    "notes": "備註",
    "time": "時間",
    "steps": "步驟",
    "target": "目標",
    "package": "套件",
    "panel": "面板",
    "system": "系統",
    "user": "用戶",
    "project": "專案",
    "database": "資料庫",
    "mail": "郵件",
    "files": "檔案",
    "memory": "記憶體",
    "custom": "自訂",
    "static": "靜態",
    "lifecycle": "生命週期",
    "loadFailed": "載入失敗",
    "saveFailed": "儲存失敗",
    "opFailed": "操作失敗",
    "installFailed": "安裝失敗",
    "createFailed": "建立失敗",
    "deleteFailed": "刪除失敗",
    "applyFailed": "套用失敗",
    "startFailed": "啟動失敗",
    "statusLoadFailed": "狀態載入失敗",
    "downloadFailed": "下載失敗",
    "uploadDone": "已上傳 {{count}} 個檔案",
    "downloadStarted": "已開始下載 {{name}}",
    "savedOk": "已儲存",
    "noneSelectedShort": "—",
    "unknownError": "未知錯誤",
    "writtenSettings": "已寫入設定",
    "panelBlocked": "無法在管理面板完成此操作",
    "partialSuccess": "操作未完全成功",
    "createdOk": "已建立",
    "updatedOk": "已更新",
    "deletedOk": "已刪除",
    "applyDone": "套用完成",
    "applyIncomplete": "套用未完成",
    "checking": "檢查中…",
    "dismiss": "關閉",
    "hide": "隱藏",
    "show": "顯示",
    "done": "完成",
    "next": "下一步",
    "previous": "上一步",
    "redirectedTo": "已轉到 {{to}}（原為 {{from}}）"
  },
  "cron": {
    "presetCdTrue": "cd app + 是（測試）",
    "presetCleanTmp": "清理暫存（示例）",
    "presetNpmCron": "npm run 定時工作（若有）",
    "presetAppBin": "執行 app binary",
    "presetRsync": "同步靜態（示例 同步複製）",
    "noLinuxUser": "（未有 linux 用戶）· {{name}}",
    "projectUser": "專案用戶",
    "panelUser": "ysk · 面板／系統",
    "system": "系統",
    "rootCareful": "管理員 · 系統（慎用）",
    "customUser": "{{user}} · 自訂",
    "success": "成功",
    "failed": "失敗",
    "noProjects": "尚未有專案",
    "noProjectsHint": "請先建立專案並（建議）建立系統用戶，再登記 定時工作",
    "userSuffix": "· 用戶",
    "mon": "一",
    "tue": "二",
    "wed": "三",
    "thu": "四",
    "fri": "五",
    "sat": "六",
    "sun": "日",
    "everyNMin": "每 N 分鐘",
    "fixedInterval": "固定間隔",
    "hourly": "每小時",
    "atMinute": "指定第幾分",
    "daily": "每日",
    "atTime": "指定時:分",
    "weekly": "每週",
    "weekdayTime": "星期 + 時間",
    "monthly": "每月",
    "dayTime": "日期 + 時間",
    "advanced": "進階",
    "customExpr": "自訂表達式",
    "everyMinute": "每分鐘",
    "everyMinutes": "每 {{n}} 分鐘",
    "hourlyAt": "每小時 第 {{n}} 分",
    "dailyAt": "每日 {{time}}",
    "weeklyNone": "每週（未選日） {{time}}",
    "weeklyAt": "每週{{days}} {{time}}",
    "monthlyAt": "每月 {{day}} 日 {{time}}",
    "customAt": "自訂：{{expr}}",
    "frequency": "排程頻率",
    "interval": "間隔",
    "fromHour": "由整點起算",
    "intervalMinutes": "間隔分鐘",
    "min1": "1 分",
    "minN": "{{n}} 分",
    "minuteOfHour": "在每小時的第幾分",
    "minPad": "{{n}} 分",
    "hour": "小時",
    "minute": "分鐘",
    "pickWeekdays": "選擇星期",
    "dayOfMonth": "每月第幾日",
    "dayOfMonthHint": "31 日月份沒有該日則跳過",
    "cronExpr": "定時工作表 表達式",
    "cronExprHint": "五欄：分 時 日 月 週（0=日）",
    "cronExprPh": "定時工作表 表達式",
    "needLinuxUser": "所選專案沒有 Linux 用戶 — 請先到專案「隔離」建立系統用戶",
    "boundProject": "已綁專案；執行用戶 {{user}}（指令會以 runuser 隔離）",
    "systemJob": "系統工作；執行用戶 {{user}}",
    "writtenManage": "已寫入管理 定時工作表（尚未安裝到系統）",
    "needInstall": "請按「安裝到系統 定時工作表」才會真正生效",
    "createdManageOnly": "已建立（僅管理檔）",
    "installedSystem": "已安裝到系統",
    "hostSynced": "系統已同步",
    "hostNotInstalled": "面板定時工作尚未寫入系統 crontab",
    "statusUnknown": "狀態未知",
    "systemCrontab": "面板 crontab 同步",
    "synced": "已同步",
    "managedLines": "管理行數",
    "jobsOnlyManage": "工作只寫在管理檔。系統 定時工作表",
    "hostHasYsk": "已包含 YSK 項目",
    "hostNoYsk": "尚未安裝或無 YSK 項目",
    "pressInstall": "有已登記但未寫入系統的工作 — 請按「安裝到系統」。",
    "jobsTab": "工作 ({{count}})",
    "jobsTabPending": "工作 ({{count}}) · 待安裝 {{pending}}",
    "registeredJobs": "已登記工作 ({{count}})",
    "jobsSub": "管理檔項目 · 改動後需「安裝到系統」才生效",
    "addJob": "+ 新增工作",
    "noCron": "尚未有 定時工作",
    "noCronDesc": "用列表右上角新增工作，再安裝到系統 定時工作表",
    "onceInstalled": "曾安裝",
    "manageOnly": "僅管理檔",
    "projectLabel": "專案",
    "systemLevel": "系統級",
    "runOnce": "立即執行",
    "runOnceOk": "已執行一次",
    "updatedManage": "已更新管理檔；請重新安裝到系統 定時工作表",
    "updatedManageShort": "已更新管理檔",
    "deletedManage": "已從管理檔刪除；請重新安裝同步系統",
    "installStatus": "安裝狀態",
    "manageVsHost": "管理檔 vs 主機",
    "hostYsk": "主機 YSK",
    "lastInstall": "上次安裝",
    "installToSystem": "安裝到系統 定時工作表",
    "installHint": "安裝會合併主機 crontab：保留非 YSK 行，只更新面板管理的工作。需系統變更權限。",
    "hostPreview": "主機 定時工作表 預覽",
    "cannotRead": "無法讀取或尚未安裝（需權限）",
    "addJobTitle": "新增工作",
    "addJobDesc": "寫入管理檔；需「安裝到系統」後 定時工作表 才會執行",
    "createManageOnly": "建立（僅管理檔）",
    "whenRun": "何時執行",
    "whenRunHint": "用下方卡片揀頻率與時間；進階模式可手寫 定時工作表",
    "userPathHint": "用戶 + 指令路徑會跟專案 主目錄／運行時 更新",
    "pickProject": "— 請選擇專案 —",
    "runAsUser": "執行用戶",
    "runAsHint": "揀專案用戶會同步上方專案；揀系統用戶則為系統級 定時工作",
    "noProjectsYet": "（尚未有專案）",
    "runInHome": "在專案 主目錄 下執行（{{home}}）；儲存時會包 runuser",
    "absPath": "建議絕對路徑",
    "commonCmds": "常用指令（{{runtime}}）",
    "actualPreview": "實際寫入 定時工作表（預覽）",
    "noLinuxName": "此專案未有 Linux 用戶名 — 請到專案「隔離」建立系統用戶後再試。",
    "afterCreate": "建立後：",
    "projectParen": "（專案 {{name}}）",
    "systemParen": "（系統級，未綁專案）",
    "weekLabel": "星期",
    "willRun": "將執行",
    "projectNoLinux": "（未有 linux 用戶）",
    "createManageOnlyParen": "建立（僅管理檔）",
    "runAsHintFull": "揀專案用戶會同步上方專案；揀系統用戶則為系統級 定時工作",
    "systemParenFull": "（系統級，未綁專案）",
    "hostOtherLines": "主機非 YSK 行數",
    "hostOtherLinesVal": "其他 {{other}} 行（主機有效共 {{total}}）",
    "deleteTitle": "刪除 Cron 工作？",
    "deleteDesc": "將刪除「{{name}}」。套用到系統 crontab 前只影響控制面。",
    "hostJobs": "主機工作",
    "hostJobsTitle": "主機 crontab（{{count}}）",
    "usersScanned": "用戶",
    "filterUser": "用戶",
    "filterAll": "全部用戶",
    "sourceYsk": "面板",
    "sourceHost": "主機",
    "noHostJobs": "此範圍沒有 crontab 工作",
    "hostPartial": "無法完整讀取所有用戶 crontab（需要 root）",
    "pendingInstall": "待安裝到系統（{{count}}）",
    "pendingStale": "已 {{days}} 日未寫入系統 crontab，不會執行。",
    "willNotRun": "未寫入系統 crontab — 不會執行。",
    "hourRange": "小時必須介乎 0–23。",
    "minuteRange": "分鐘必須介乎 0–59。",
    "hoursCommon": "常用小時",
    "hoursAll": "全部小時",
    "invalidExpr": "不是有效的 5 欄 cron 表達式。",
    "needCommand": "請填寫指令。",
    "needUser": "請選擇專案或系統用戶。",
    "hostCounts": "主機行數",
    "hostCountsVal": "{{ysk}} · 其他 {{other}} · 合共 {{total}}",
    "hostYskYes": "已有面板行",
    "hostYskNo": "尚無面板行",
    "emptyHostCrontab": "用戶 {{user}} 尚未有 crontab。",
    "writtenOnHost": "已寫入",
    "registeredJobsChip": "已登記",
    "registeredVsWritten": "已在面板登記 vs 已寫入主機 crontab",
    "installPreviewTitle": "安裝到系統前預覽",
    "installPreviewDesc": "會把 YSK 區塊合併入主機 crontab，不會覆寫非 YSK 行。",
    "installPreviewMerge": "安裝會寫入 YSK Server crontab merge 區塊，不會整份取代 host crontab。",
    "installPreviewEmpty": "沒有待安裝工作 — 仍會重新整理 YSK 區塊。",
    "editJobTitle": "編輯工作",
    "editJobDesc": "變更只寫入控制面，須再安裝到系統 crontab 才生效。",
    "saveJob": "儲存（僅管理）",
    "panelLines": "面板行",
    "otherLines": "非面板行",
    "totalLines": "合計",
    "writtenOnHostHint": "已寫入主機 crontab 的行",
    "registeredJobsHint": "已在面板登記的工作（含待安裝）",
    "pendingInstallCount": "{{n}} 項待安裝",
    "systemJobBadge": "未綁專案 · 系統用戶",
    "hostEdit": "修改",
    "hostEditTitle": "修改主機 crontab 行",
    "hostEditDesc": "立即寫入該用戶的線上 crontab。需要 root 與 YSK_EXECUTE=1。其他行不變。",
    "hostSave": "寫入 crontab",
    "hostSaveTitle": "寫入此 crontab 行？",
    "hostSaveDesc": "會取代 {{user}} 的線上行。請輸入 EDIT 確認。",
    "hostDisable": "停用",
    "hostDisableTitle": "停用主機 crontab 行？",
    "hostDisableDesc": "會把 {{user}} 該行改成註解。請輸入 DISABLE 確認。",
    "hostEnable": "啟用",
    "hostEnableTitle": "啟用主機 crontab 行？",
    "hostEnableDesc": "會移除 {{user}} 該行的註解。請輸入 ENABLE 確認。",
    "hostRunTitle": "試跑此主機指令一次？",
    "hostRunDesc": "立即以 {{user}} 執行。不會改 crontab。請輸入 RUN 確認。",
    "hostAdopt": "納入面板",
    "hostAdoptTitle": "把此主機行納入面板？",
    "hostAdoptDesc": "會在線上行加上 # ysk:id 並登記。下一輪安裝不會重複。請輸入 ADOPT 確認。",
    "hostDeleteTitle": "移除主機 crontab 行？",
    "hostDeleteDesc": "會移除 {{user}} 的線上行。請輸入該指令確認。",
    "hostUserLocked": "crontab 擁有者（此處不能搬到其他用戶）",
    "hostLinePreview": "將寫入的行",
    "disabledJob": "已停用",
    "confirmMismatch": "確認內容必須與指令相同。",
    "writtenHost": "已寫入主機 crontab",
    "adoptedHost": "已納入面板",
    "keepDisabledHint": "此行已停用。儲存後仍保持註解。",
    "currentLine": "現時",
    "nextLine": "下一行"
  },
  "dashboard": {
    "serviceAria": "{{name}}：{{state}}",
    "sev": {
      "ok": "成功",
      "warn": "警告",
      "bad": "異常"
    },
    "title": "控制台",
    "health": "健康狀態",
    "protection": "保護模式",
    "welcome": "歡迎使用 YSK 伺服器",
    "audit": "最近審計",
    "needLogin": "請先登入以查看審計紀錄",
    "features": "功能選單",
    "featuresHint": "角標：就緒＝軟件已裝；未安裝＝需一鍵安裝；需權限＝未開系統變更。",
    "badge": {
      "panel": "面板",
      "notInstalled": "未安裝",
      "ready": "就緒",
      "installed": "已裝",
      "prodReady": "可生產",
      "check": "檢查",
      "needPerm": "需權限"
    },
    "status": {
      "healthy": "健康",
      "prodReady": "可生產",
      "needsCheck": "需檢查"
    },
    "stat": {
      "backups": "備份",
      "notifications": "通知",
      "certExpiry": "憑證到期"
    },
    "tabs": {
      "overview": "概覽",
      "wizard": "一鍵建立",
      "notifications": "通知",
      "features": "功能入口"
    },
    "serviceHealth": "服務健康",
    "serviceHealthDesc": "系統控制 實時探測",
    "fullServiceMatrix": "完整服務矩陣",
    "readinessCheck": "就緒檢查：",
    "prodOk": "可作生產",
    "notFullyReady": "尚未完全就緒",
    "readinessBlocked": "有 {{n}} 項阻擋",
    "modeScore": "模式 {{mode}} · 分數 {{ready}}/{{total}}",
    "mode": {
      "degraded": "降級",
      "production_capable": "EXECUTE＋root",
      "blocked": "有阻擋",
      "normal": "正常"
    },
    "details": "詳情",
    "certExpiryTitle": "憑證到期：",
    "certExpired": "已過期",
    "certDays": "{{days}} 日",
    "securityStrip": "安全與套用狀態",
    "securityStripDesc": "真實通知 + 套用 誠實審計（已寫入 ≠ 已套用）",
    "notifCount": "通知 {{count}}",
    "criticalCount": "· 嚴重 {{count}}",
    "warnCount": "· 警告 {{count}}",
    "applyAuditBadge": "套用檢查：成功 {{ok}} · 警告 {{warn}} · 異常 {{bad}}",
    "executeBadge": "系統變更 {{state}}",
    "executeLabel": "系統變更",
    "publicNo2fa": "面板正聽全部介面，而你的管理員帳號未開 2FA。",
    "go": "前往",
    "open": "開啟",
    "noCriticalWarn": "目前無嚴重／警告通知",
    "notifCenter": "通知中心",
    "noHealthYet": "尚未取得健康狀態",
    "sysChange": "系統變更",
    "opened": "已開",
    "closed": "未開",
    "readinessLink": "就緒檢查 →",
    "hostMetrics": "主機指標",
    "loadAvg": "Load average（1 · 5 · 15 分）",
    "memoryDash": "記憶體 —",
    "metricsLink": "詳細指標 →",
    "runningOf": "運行 {{running}}/{{total}}",
    "noProjects": "尚未有專案",
    "wizardLink": "一鍵建立 →",
    "allProjects": "全部專案 →",
    "recentN": "最近 {{n}}",
    "runningCount": "運行中 {{n}}",
    "securityLink": "安全 →",
    "wizardTitle": "一鍵建立",
    "wizardDesc": "建立專案，並可選一併登記 DNS／郵件／資料庫草稿（各項需再到對應頁套用）",
    "projectName": "專案名稱",
    "projectNameHint": "控制台顯示名稱；會產生對應目錄",
    "nameRequired": "請輸入專案名稱",
    "domainOptional": "域名（可留空）",
    "domainHint": "填寫後才可勾選 DNS 與郵件",
    "runtime": "執行環境",
    "runtimeHint": "決定預設 運行時 版本與部署方式",
    "runtimeVersion": "執行環境版本",
    "versionHint": "會寫入專案的執行環境版本設定",
    "serverIpv4": "伺服器 IPv4",
    "serverIpv4Hint": "DNS A／郵件 SPF",
    "serverIpv4Ph": "此主機公網 IPv4",
    "serverIpv6": "伺服器 IPv6（可選）",
    "serverIpv6Hint": "有則寫 AAAA／ip6:",
    "serverIpv6Ph": "公網 IPv6（可留空）",
    "needDomainFirst": "請先填域名",
    "withDns": "一併建立 DNS 區域",
    "withDnsDesc": "需填寫域名；僅登記，需到 DNS 頁寫入區域檔",
    "withMail": "一併登記郵件域名",
    "withMailDesc": "需填寫域名；軟件安裝與 DNS 在郵件詳情頁完成",
    "withDb": "一併建立資料庫草稿",
    "withDbDesc": "控制面登記；需到 SQL 引擎頁套用到系統",
    "wizardHint": "一鍵建立不會自動對外上線。DNS、郵件、資料庫與 SSL 請到各功能頁確認並套用。",
    "wizardSubmit": "一鍵建立",
    "wizardOk": "建立完成",
    "wizardPartial": "部分失敗",
    "notifCenterTitle": "通知中心（{{count}}）",
    "notifCenterDesc": "嚴重 {{critical}} · 警告 {{warn}} · 資訊 {{info}}",
    "noNotifs": "暫無通知。近期審計紀錄見「概覽」。",
    "noNotifsDesc": "系統告警與待辦會顯示於此",
    "applyAuditTitle": "套用狀態審計",
    "applyAuditDesc": "正常 {{ok}} · 警告 {{warn}} · 異常 {{bad}}",
    "barTitle": "{{count}} 則主機提示",
    "levelCritical": "嚴重",
    "levelWarn": "警告",
    "levelInfo": "資訊",
    "colTitle": "提示",
    "colDetail": "詳情",
    "colSource": "來源",
    "notifSearch": "搜尋通知",
    "notifAll": "全部",
    "notifDismiss": "隱藏",
    "goFix": "前往處理"
  },
  "dataTable": {
    "empty": "沒有資料",
    "actions": "操作"
  },
  "db": {
    "serviceSettings": "服務設定",
    "installedOk": "{{engine}} 已安裝",
    "startedOk": "{{engine}} 已啟動",
    "installFirst": "請先安裝 {{engine}}",
    "softwareMissing": "{{engine}} 所需軟件尚未安裝",
    "serviceOverview": "服務概覽",
    "readonlyStatus": "唯讀狀態",
    "readonlyProbe": "唯讀探測",
    "systemChange": "系統變更",
    "opened": "已開啟",
    "notOpened": "未開啟",
    "admin": "管理員",
    "client": "客戶端",
    "hasClient": "有",
    "noClient": "無",
    "canProvision": "可建立資料庫",
    "dumpOk": "匯出完成",
    "dumpFailed": "匯出失敗",
    "noDumpToImport": "尚無可匯入的備份檔",
    "expiredTempUsersProcessed": "已處理過期臨時用戶",
    "dumpFirstDb": "匯出首個資料庫",
    "importLatestDump": "匯入最新備份",
    "cleanupExpiredTempUsers": "清理過期的臨時用戶",
    "adminerEntry": "資料庫管理專案",
    "browserProjectTitle": "建立資料庫管理專案",
    "browserTool": "工具",
    "browserNameHint": "會建立一個 PHP 專案；名稱不可重複",
    "browserNameTaken": "專案名稱已存在：{{name}}",
    "browserProjectCreated": "資料庫管理專案已建立",
    "createBrowserProject": "建立專案並部署",
    "downloadPhpMyAdmin": "下載 phpMyAdmin（需要系統變更權限及外網）",
    "createDatabase": "建立資料庫",
    "installBannerHint": "請使用上方橫幅的「一鍵安裝」安裝 {{engine}}。",
    "exclusiveMariaHint": "此主機為 MariaDB。請到 MariaDB 頁管理，或一鍵切換（須輸入 SWITCH）。",
    "exclusiveMysqlHint": "此主機為 MySQL。請到 MySQL 頁管理，或一鍵切換（須輸入 SWITCH）。",
    "openMaria": "MariaDB",
    "openMysql": "MySQL",
    "openMariaService": "MariaDB 服務",
    "openMysqlService": "MySQL 服務",
    "startService": "啟動服務",
    "openServiceConsole": "開啟服務控制台",
    "opsResult": "操作結果",
    "tempPasswordOnce": "臨時只讀密碼（只顯示一次）：",
    "tabDatabases": "資料庫 ({{count}})",
    "tabUsers": "用戶 ({{count}})",
    "tabTemp": "臨時只讀 ({{count}})",
    "tabRemote": "遠端主機 ({{count}})",
    "dbList": "資料庫列表",
    "charset": "字元集",
    "noDatabasesYet": "尚未有資料庫",
    "emptyDbInstallFirst": "請先使用上方橫幅一鍵安裝 {{engine}}，再用右上角「建立資料庫」",
    "emptyDbCannotProvision": "目前無法在伺服器建立資料庫",
    "emptyDbCreateHint": "用右上角「建立資料庫」新增；建立後請再按「套用」",
    "emptyDbHostHasRows": "主機已有資料庫，但尚未在控制面登記。",
    "registeredVsHostHint": "已在面板登記 / 主機實測",
    "registeredCount": "已登記",
    "hostCount": "主機",
    "registeredUsers": "已登記用戶",
    "registeredUsersHint": "只計面板登記，不是主機全部 MySQL 帳號",
    "hostStillExists": "主機仍存在",
    "expiresLabel": "到期",
    "dumpNeedRegistered": "請先在面板登記資料庫",
    "dumpFirstDbTitle": "匯出第一個已登記資料庫",
    "importNeedRegistered": "請先在面板登記資料庫",
    "importLatestNeedConfirm": "需確認 — 會匯入到已登記資料庫",
    "hostHasUntracked": "主機另有 {{count}} 個未在面板登記的資料庫",
    "hostInventoryHint": "列表只顯示控制面已登記的資料庫；即時名稱來自 SHOW DATABASES。",
    "userList": "用戶列表",
    "userListDesc": "可為資料庫授權用戶",
    "createUserBtn": "+ 建立用戶",
    "noUsersYet": "尚未有用戶",
    "tempReadonlyUsers": "臨時只讀用戶",
    "tempReadonlyDesc": "開啟此頁時會嘗試從伺服器刪除已到期帳號（需 EXECUTE 與 root）。仍留在下列者代表主機帳號尚未刪除。",
    "dbName": "資料庫名稱",
    "ttlHours": "有效時數",
    "ttlHoursHint": "到期後標記失效",
    "createReadonlyUser": "建立只讀用戶",
    "tempUserCreated": "已建立臨時只讀用戶",
    "expiresAt": "到期",
    "revokeRegistration": "撤銷登記",
    "remoteDbHosts": "遠端資料庫主機",
    "remoteDbHostsDesc": "登記連線目標（密碼不回顯）。未按「測試連線」前，已儲存 ≠ 可達。",
    "remoteTest": "測試連線",
    "remoteTestDone": "遠端主機探測完成",
    "remoteTestOk": "可達",
    "remoteTestFail": "不可達",
    "remoteNotChecked": "未測試",
    "remoteDeleteTitle": "只移除登記",
    "remoteDeleteConfirm": "移除登記 {{name}}？遠端伺服器不會被改動。",
    "displayName": "顯示名稱",
    "prodReplicaPlaceholder": "生產從庫",
    "remoteHostSaved": "已儲存遠端主機",
    "createDbTitle": "建立 {{engine}} 資料庫",
    "createDbDesc": "建立控制面登記後，請按「套用」寫入伺服器",
    "dbNameHint": "小寫英數與底線；建立後需再套用到系統",
    "alsoCreateUser": "同時建立用戶",
    "alsoCreateUserDesc": "一併建立可連線此庫的帳號",
    "passwordMin8": "至少 8 位",
    "passwordMin8chars": "至少 8 字元",
    "allowConnectHost": "允許連線主機",
    "allowConnectHostHint": "常用 %（任意）或 localhost",
    "allowConnectHostHintShort": "常用 % 或 localhost",
    "createDbHint": "僅寫入控制面登記；於列表按「套用」後，才會在伺服器建立資料庫。",
    "createUserTitle": "建立 {{engine}} 用戶",
    "createUserDesc": "建立後請套用",
    "bindDatabase": "綁定資料庫",
    "bindDatabaseHint": "可選：授權此庫權限",
    "noneOption": "— 無 —",
    "importDumpTitle": "確認匯入資料庫備份？",
    "importDumpDesc": "將把備份「{{dump}}」匯入資料庫「{{db}}」。",
    "import": "匯入",
    "importOk": "匯入完成",
    "importFailed": "匯入失敗",
    "deleteDbTitle": "移除控制面登記（不會 DROP 伺服器上的資料庫）",
    "deleteDbDesc": "僅移除控制面紀錄，不會自動刪除伺服器上的資料庫。",
    "deleteUserTitle": "刪除用戶登記？",
    "deleteUserDesc": "僅移除控制面紀錄。",
    "adminerTitle": "Adminer 資料庫瀏覽器",
    "adminerDesc": "下載輕量 Adminer，並寫入 Nginx 管理設定檔；「套用到系統」後才會檢查設定並重新載入 Nginx。",
    "adminerWritten": "Adminer 已寫入管理檔",
    "adminerApplied": "Adminer 套用完成",
    "writeOnly": "只寫入",
    "applyToSystem": "套用到系統",
    "adminerRisk": "公開 Adminer 有安全風險 — 請先限制來源 IP 或加上 HTTP 認證。需要 PHP 處理程序通訊端（預設 php8.2）。",
    "vhostName": "虛擬主機名",
    "vhostHint": "DNS A 指到此主機後才能從外網開",
    "downloadAdminer": "下載 Adminer（需要系統變更權限及外網）",
    "downloadAdminerDesc": "關閉則只使用已下載的檔案",
    "adminerWriteHint": "「只寫入」僅更新管理檔；「套用到系統」會複製設定、檢查 Nginx 並重新載入（需要管理員權限，否則會封鎖）。",
    "pgInstallBanner": "請先使用上方橫幅一鍵安裝 PostgreSQL",
    "pgEmptyCreateHint": "建立後按「套用到系統」寫入伺服器",
    "pgNoDbs": "尚未有 PostgreSQL 庫",
    "pgCreateTitle": "建立 PostgreSQL 資料庫",
    "pgCreateDesc": "寫入控制面登記；需再「套用到系統」才 建立資料庫（套用後才上線）",
    "pgAlsoCreateRole": "同時建立角色",
    "pgAlsoCreateRoleDesc": "一併建立登入角色並授予此資料庫權限",
    "roleName": "角色名稱",
    "roleHint": "PostgreSQL role／登入用戶",
    "pgDeleteDbDesc": "移除控制面紀錄（不會自動刪除伺服器上的資料庫，除非另行套用撤銷）。",
    "update": "更新",
    "alsoCreateRole": "同時建立角色",
    "cluster": {
      "standaloneOtherEngines": "此引擎目前是單機。其他引擎已有叢集：{{names}}。",
      "roleUnassigned": "未指派角色",
      "title": "叢集",
      "description": "計劃 → 寫管理檔 → 套用 → 探測 → 分發到對等節點／機群。預設預覽試行（不會重啟引擎）。",
      "redirectedFromCluster": "你由 /cluster 轉到此處。這是資料庫叢集分頁。",
      "notApplied": "尚未套用",
      "plannedAt": "建立於 {{when}}",
      "clearStalePlans": "清過期計劃",
      "clearStalePlansTitle": "刪除過期計劃？",
      "clearStalePlansDesc": "將刪除 {{n}} 個超過 7 日的計劃／草稿登記。不會套用或推送，亦不改系統設定。",
      "landingTitle": "資料庫叢集",
      "landingDesc": "本機已計劃與已套用的資料庫叢集總覽。請開啟引擎頁建立或套用。",
      "landingNoneInstalled": "未安裝 MySQL、MariaDB、PostgreSQL 或 Redis。請先安裝其中一個引擎。",
      "openEngine": "開啟 {{engine}}",
      "overviewPill": "叢集 {{n}}",
      "enginesInstalled": "引擎",
      "plannedCount": "已計劃",
      "overviewList": "叢集（{{count}}）",
      "overviewEmpty": "尚未有叢集登記。",
      "engine": "引擎",
      "kind": "類型",
      "members": "成員",
      "kindGalera": "簡易 Galera",
      "kindMysqlReplica": "MySQL 主從複製",
      "kindPgReplica": "PostgreSQL 串流複製",
      "kindRedisReplica": "Redis 主從",
      "createGalera": "建立簡易 Galera",
      "createMysqlReplica": "建立主從複製",
      "createPgReplica": "建立串流複製",
      "createSentinel": "建立 哨兵",
      "createRedisReplica": "建立 Redis 主從",
      "needRealIps": "請填寫本機與 對等節點 真實 IP／主機名",
      "hostInvalid": "請填寫有效的 IPv4、IPv6 或主機名。",
      "statusNote": "狀態：{{status}}（計劃成功 ≠ 叢集健康）",
      "artifactNote": "產物：{{dir}}",
      "planGenerated": "已產生計劃（預覽試行）",
      "planUpdated": "已更新計劃",
      "manageWritten": "已寫管理檔（預覽試行）",
      "bootstrapTried": "已嘗試 初始化",
      "applyTried": "已嘗試套用系統 設定檔",
      "localOk": "本機 成功",
      "localProbeFail": "本機 探測 未過",
      "probedWithPeers": "已探測（含 對等節點）",
      "probedLocal": "已探測本機",
      "peerTarNote": "已下載對等節點打包檔（.封存.gz）— 請解壓後在對等節點安裝設定檔",
      "downloaded": "已下載",
      "peerPushed": "已推送 對等節點",
      "pushPlanGenerated": "已產生 推送 計劃",
      "registrationDeleted": "已刪除登記",
      "nodes": "節點",
      "remoteInstallPlan": "遠端安裝計劃",
      "fleetSession": "機群 agent session id",
      "fleetSessionHint": "可選。從已登記機群工作階段選擇（用機群，不用 SSH）。留空則 scp。",
      "fleetSessionPh": "Agents 頁的 session UUID",
      "fleetSessionNone": "無 — 用 SSH",
      "fleetSessionOpenAgents": "前往 /agents 登記工作階段",
      "createWizardTitle": "開啟計劃精靈。需要本機 IP 與至少一個對等節點。只寫面板產物（預覽試行），套用前不會重啟引擎。",
      "bootstrap": "初始化（Bootstrap）",
      "fleetApply": "機群套用",
      "planTitle": "重新產生叢集計劃（不改主機）",
      "writeFileTitle": "把管理檔寫入面板資料目錄（預覽試行）",
      "probeLocalTitle": "只探測本機",
      "probeAllTitle": "探測所有已登記節點",
      "bootstrapTitle": "安裝本機 drop-in 並初始化首個節點",
      "remoteInstallPlanTitle": "預覽遠端安裝（不執行）",
      "downloadBundleTitle": "下載對等節點設定打包（.tar.gz）",
      "pushPlanTitle": "預覽推送到對等節點（不 scp）",
      "fleetSyncPlanTitle": "預覽機群同步（不執行）",
      "fleetApplyTitle": "把套用排入機群成員？",
      "status": {
        "healthy": "健康",
        "planned": "已計劃",
        "partial": "部分",
        "failed": "失敗",
        "draft": "草稿",
        "degraded": "降級",
        "applied": "已套用"
      },
      "fleetSyncPlan": "機群同步計劃",
      "standaloneTitle": "目前：單機",
      "standaloneRepl": "未登記主從／串流。指定主節點與從節點後產生設定檔與腳本。",
      "standaloneHa": "未登記 HA。加入至少一個對等節點，產生設定檔計劃，然後 bootstrap 首個節點，其餘節點再 join。",
      "recentProbe": "最近 探測（本機 wsrep）",
      "probeRequired": "healthy 必須 探測 通過",
      "planPreview": "計劃預覽",
      "planPreviewDesc": "預覽試行 · 成功只代表步驟/設定檔 已生成",
      "files": "檔案",
      "systemChangeNeed": "套用時需要",
      "planModalDesc": "選擇節點後產生計劃（不會自動修改對等節點系統）",
      "generatePlan": "產生計劃",
      "clusterName": "叢集名稱",
      "localIp": "本機 IP／主機",
      "primaryIpHint": "控制面所在機（主節點/主節點 + 本機存取）",
      "localIpHint": "控制面所在機（本機存取）",
      "ipExample1": "例如 10.0.0.1",
      "ipExample2": "例如 10.0.0.2",
      "ipExample3": "例如 10.0.0.3",
      "replicaIp": "從節點 IP／主機",
      "peerIp": "對等節點 IP／主機",
      "replicaHint": "從庫節點",
      "peerHint": "第二節點（Galera 建議 3 節點）",
      "thirdNode": "第 3 節點（可選）",
      "thirdNodeHint": "Galera / 多 從節點 建議填",
      "sstMethod": "SST 方式",
      "forbidDemoIp": "禁止示範 IP（203.0.113.x）。",
      "fwGalera": "防火牆內網開 3306 / 4567 / 4444 / 4568。",
      "fwPg": "串流需內網 5432；腳本密碼改 請自行更改。",
      "fwRedis": "Redis 內網 6379（哨兵 26379）。",
      "fwRepl": "主從需內網對應埠；腳本密碼改 請自行更改。",
      "needExecuteRoot": "套用系統 設定檔 需 系統變更權限已開啟 與管理員權限。",
      "topology": "拓撲：{{kind}}",
      "applyLocalTitle": "套用本機系統 設定檔？",
      "applyBootstrapDesc": "會安裝 Galera drop-in 並 初始化（galera_new_cluster）。僅第一個節點用一次。",
      "applyJoinDesc": "會安裝 Galera drop-in 並 系統控制 重新啟動 mariadb。需 系統變更權限已開啟 與管理員權限。首節點請改用「初始化」。",
      "confirmApply": "確認套用",
      "deleteClusterTitle": "刪除叢集登記「{{name}}」（{{engine}}）？",
      "remoteInstallTitle": "遠端安裝 對等節點？",
      "pushTitle": "推送 到 對等節點？",
      "fleetSyncTitle": "機群 同步？",
      "confirmOp": "確認操作",
      "deleteClusterDesc": "將刪除 {{engine}} 叢集「{{name}}」的登記。系統設定檔不會自動清除（第一版）。",
      "remoteInstallDesc": "在對等節點安裝設定檔並重新啟動服務。需要系統變更權限及遠端登入金鑰。",
      "pushDesc": "將檔案複製到對等節點暫存目錄？需要系統變更權限及金鑰。成功並不代表對等節點已重新啟動。",
      "fleetSyncDesc": "同步 叢集 快照到 機群 邊緣，再可 套用。",
      "fleetApplyDesc": "enqueue 套用 到 機群 成員。",
      "remoteInstalled": "遠端已安裝",
      "fleetSynced": "機群 已同步排隊",
      "fleetApplyQueued": "機群 套用 已排隊",
      "plan": "計劃",
      "writeFile": "寫檔",
      "applyLocal": "套用本機",
      "probeAll": "全節點探測",
      "remoteInstall": "遠端安裝",
      "downloadBundle": "下載包",
      "pushPlan": "推送 計劃",
      "pushExecute": "推送 執行",
      "fleetSync": "機群 同步",
      "localConfPreview": "本機 設定檔 預覽",
      "refresh": "重新整理",
      "close": "關閉",
      "cancel": "取消",
      "delete": "刪除",
      "probe": "探測",
      "name": "名稱",
      "type": "類型",
      "engineNotInstalled": "此主機未安裝 {{engine}} — 請先安裝，或改用實際運行的引擎。"
    },
    "console": {
      "dataBrowse": "資料瀏覽",
      "dbManage": "資料庫管理",
      "realtime": "即時",
      "reload": "重載",
      "needRestart": "需重啟",
      "affectsProjects": "使用此引擎的站點與服務會中斷。",
      "lifecycle": "生命週期",
      "overview": "概覽",
      "actionDone": "已{{action}}",
      "installDone": "安裝完成",
      "noChanges": "沒有變更可套用",
      "settingsApplied": "設定已套用",
      "notReadFromService": "未從服務讀取",
      "applyMode": "套用方式：{{mode}}",
      "dirtyNotApplied": "已修改，尚未套用",
      "highRisk": "高風險設定",
      "engine": "引擎",
      "bootEnabled": "開機自啟",
      "uptimeSec": "運行秒數",
      "currentConnections": "目前連線",
      "changes": "變更",
      "serviceTitle": "{{title}} 服務",
      "softwareMissing": "{{title}} 所需軟件尚未安裝",
      "overviewDesc": "唯讀資訊，由探測取得（非輸入欄）",
      "lifecycleDesc": "安裝、啟動、停止與開機自啟",
      "about": "說明",
      "cluster": "叢集",
      "noSettings": "此分類暫無可用設定（或目前版本不支援）",
      "applyHint": "「即時」可在線修改；「需重啟」套用後請到「生命週期」重新啟動服務。藍色底為尚未套用的變更。",
      "applyCategory": "套用本分類",
      "applyAll": "套用全部變更",
      "applyCatCount": "套用本分類（{{n}}）",
      "applyAllCount": "套用全部變更（{{n}}）",
      "lifecycleNote": "設定分頁中，「即時」可在線修改；「需重啟」套用後請到生命週期重啟服務。",
      "installEngine": "請使用上方橫幅的「一鍵安裝」安裝 {{title}}。",
      "reloadConfig": "重載設定",
      "disableBoot": "取消自啟",
      "disableBootConfirm": "重啟後引擎不會自動啟動，直至你再次啟用。",
      "needRights": "需要系統變更權限與管理員身分。失敗時會顯示原因，不會假裝成功。",
      "noneFetched": "— 未能取得 —"
    },
    "importEntry": "入口: {{url}}",
    "adminerRiskFull": "公開 Adminer 有安全風險 — 請先限制來源 IP 或加上 HTTP 認證。需要 PHP 處理程序通訊端（預設 php8.2）。",
    "adminerWriteHintFull": "「只寫入」僅更新管理檔；「套用到系統」會複製設定、檢查 Nginx 並重新載入（需要管理員權限，否則會封鎖）。",
    "pgInstalled": "PostgreSQL 已安裝",
    "pgStarted": "PostgreSQL 已啟動",
    "notInstalledShort": "未裝",
    "serviceConsole": "服務控制台",
    "installPgFirst": "請先安裝 PostgreSQL",
    "pgSoftwareMissing": "PostgreSQL 所需軟件尚未安裝",
    "installPgBanner": "請使用上方橫幅「一鍵安裝」安裝 PostgreSQL。",
    "createPlus": "+ 建立",
    "dbNameHintPg": "小寫英數與底線；建立後請再套用到系統",
    "deleteNotePg": "刪除登記不會自動 刪除 伺服器上的庫；套用成功才代表主機已執行 資料定義。",
    "tabDatabasesSimple": "資料庫 ({{count}})",
    "frozenTitle": "資料庫服務需要修復",
    "frozenBody": "已偵測到問題（模式／凍結：{{mode}}；資料目錄為空：{{empty}}）。系統會按健康檢查結果產生修復計劃，不會只針對單一錯誤硬編碼。",
    "unfreezeBtn": "檢查並修復服務",
    "unfreezeConfirmTitle": "確認修復 {{engine}}？",
    "unfreezeConfirmDesc": "將按診斷結果執行通用修復計劃（停止服務、清除凍結、清理錯誤引擎設定、空白目錄初始化、再啟動）。資料目錄是否為空：{{empty}}。若有重要資料請先備份。",
    "unfreezeConfirmBtn": "確認修復",
    "unfreezeOk": "{{engine}} 修復完成",
    "startAfterUnfreeze": "啟動服務（失敗時會自動套用修復計劃）",
    "serviceDownTitle": "資料庫服務未運作",
    "serviceDownBody": "服務異常。面板會診斷常見原因（凍結、設定殘留、空白資料目錄、埠衝突等）。資料目錄為空：{{empty}}。請按「檢查並修復服務」確認執行。",
    "adoptHostDb": "登記到控制面（不建立）：{{name}}",
    "adoptHostDbTitle": "只在控制面登記名稱，不改主機資料",
    "cleanupExpiredTempUsersTitle": "清除已過期的面板臨時用戶",
    "invalidSqlIdent": "請用小寫識別名稱：以英文字母開頭，其後可為字母、數字或底線。",
    "remoteHostRequired": "請填寫遠端主機。",
    "remoteTestUnsaved": "請先儲存此主機，再按「測試連線」。或填好主機後儲存。",
    "serverNotInstalled": "伺服器未安裝",
    "dumpNeedEngine": "請先安裝資料庫引擎，才可匯出資料庫。",
    "unboundDatabase": "資料庫登記已移除",
    "userGoneRefresh": "該用戶已不存在，已重新整理列表。"
  },
  "dialogs": {
    "confirmDefault": "確認",
    "cancelDefault": "取消",
    "severity": {
      "consequencesTitle": "將會發生：",
      "typeToConfirm": "請輸入「{{text}}」以確認"
    }
  },
  "dns": {
    "templates": {
      "minimal": "最小 — 僅 apex A",
      "web": "網站 — apex + www",
      "mail": "郵件 — apex + mail + MX + SPF",
      "full": "完整 — 網站 + mail + ftp + SPF",
      "cdn": "CDN — apex + www + cdn（多 邊緣 預留）"
    },
    "dnssecOk": "已產生 DNSSEC 金鑰（已寫入 — 未簽署 zone／未上 registrar）",
    "dnssecNotOk": "DNSSEC 未產生金鑰（只寫說明檔或工具不可用 — 不假成功）",
    "dnssecFailed": "DNSSEC 失敗",
    "blocked": "已封鎖（需系統變更權限）",
    "clusterDone": "完成（{{status}}）",
    "clusterPartial": "未全部成功（{{status}}）— 見下方明細",
    "clusterFailed": "叢集操作失敗",
    "validateFailed": "記錄驗證失敗",
    "validateRequestFailed": "驗證請求失敗",
    "lookupFailed": "查詢失敗",
    "statRecords": "紀錄",
    "statSelected": "選中",
    "notInstalled": "DNS 所需軟件尚未安裝",
    "dsForRegistrar": "DS（供 registrar，未自動發佈）：",
    "tabs": {
      "zones": "區域",
      "records": "記錄",
      "cluster": "叢集",
      "dnssec": "DNSSEC",
      "tools": "工具",
      "ddns": "DDNS",
      "about": "說明"
    },
    "recentWrite": "最近寫入結果",
    "zonesTitle": "區域 ({{count}})",
    "zonesDesc": "建立區域後可寫入／套用 zone",
    "createZone": "+ 建立區域",
    "mailZonesMissing": "電郵網域尚未建立 DNS 區域：{{domains}}。",
    "createMailZone": "建立郵件區域",
    "colZoneName": "區域名稱",
    "colServerIp": "伺服器 IP",
    "colTemplate": "模板",
    "colStatus": "狀態",
    "emptyZonesTitle": "尚未有 DNS 區域",
    "emptyZonesDesc": "用列表右上角「建立區域」新增",
    "applyZoneTitle": "寫入 zone 檔並掛入 PowerDNS named.conf + rediscover（寫檔≠已答 dig）",
    "applyZone": "寫入／套用",
    "recordsFor": "記錄 — {{zone}}",
    "recordsNeedSelect": "記錄（請先在「區域」選取）",
    "statusLabel": "狀態",
    "addRecord": "+ 新增記錄",
    "writeZoneFile": "寫入並載入區域",
    "healthLoaded": "已載入",
    "stateLoaded": "已載入",
    "healthPublicNs": "公網 NS",
    "statePublicNs": "公網 NS",
    "publicNsHere": "→ 本機",
    "requestLeTitle": "申請 {{zone}} Let’s Encrypt",
    "requestZoneSsl": "申請本區域 SSL",
    "soaTitle": "SOA / 預設 TTL",
    "soaDesc": "寫入 zone 檔時的 SOA 名稱伺服器與 $TTL；儲存後請再「寫入區域檔」才落到磁碟",
    "soaBlockNs": "名稱伺服器",
    "soaBlockTiming": "TTL 與定時",
    "recordsListTitle": "DNS 記錄（{{count}}）",
    "recordsListDesc": "編輯後記得按上方「寫入區域檔」才會更新 named 磁碟檔。",
    "soaNsLabel": "SOA 名稱伺服器",
    "soaNsHint": "可留空 → 預設 ns1.區域.",
    "defaultTtl": "預設 TTL（秒）",
    "min1": "1 分",
    "min5": "5 分",
    "min10": "10 分",
    "hour1": "1 時",
    "day1": "1 日",
    "customSeconds": "自訂秒數",
    "soaSaved": "已儲存 SOA 設定（控制面）— 請「寫入區域檔」套用",
    "soaSaveFailed": "儲存 SOA 失敗",
    "soaSavedAndWritten": "已儲存並寫入區域檔",
    "soaWriteFailed": "SOA 寫入失敗",
    "failed": "失敗",
    "colType": "類型",
    "colName": "名稱",
    "colValue": "值",
    "emptyRecords": "尚無記錄",
    "noZoneSelectedTitle": "尚未選擇區域",
    "noZoneSelectedDesc": "到「區域」分頁點選一個 zone",
    "clusterTitle": "DNS 叢集",
    "clusterDesc": "安全複製 推送 zone 檔後可 remote 重新載入（rndc / named / bind9 / pdns）。已寫入 ≠ 已套用。",
    "peerHost": "對等節點 主機",
    "peerHostHint": "次要 NS 主機名稱或 IP（需 遠端登入 金鑰登入）",
    "sshUser": "遠端登入 用戶",
    "sshUserHint": "需有目標路徑寫入與 重新載入 權限",
    "labelOptional": "標籤（可選）",
    "labelPlaceholder": "例如 ns2 / hkg-邊緣-dns",
    "opPerPeer": "本次操作（每 對等節點）",
    "registeredPeers": "已登記 peers（{{count}}）",
    "lastProbeHint": "lastProbe 於「探活」或推送後更新",
    "noPeers": "尚未登記任何 對等節點",
    "zoneDirMissing": "· zone 目錄缺失",
    "generateKeys": "產生金鑰；不自動上線",
    "selectZoneFirst": "請先選擇區域",
    "lookupTitle": "DNS 查詢（dig）",
    "lookupDesc": "對公網解析器查詢；用於驗證 multi-A / CDN 是否生效。不假造答案。",
    "lookupNamePlaceholder": "例如 example.com 或 www.example.com",
    "lookupType": "查詢類型",
    "lookupResults": "查詢結果（{{count}} 筆）",
    "lookupNoAnswerFail": "查詢無答案／失敗",
    "digNotInstalled": "dig 未安裝",
    "digNotInstalledHint": "此分頁需要 dig（bind9-dnsutils）。這不是 NXDOMAIN。請在主機用套件管理安裝 bind9-dnsutils；本頁不會自動安裝。",
    "method": "方法：{{method}}",
    "noAnswers": "沒有答案",
    "noAnswersDesc": "NXDOMAIN、空 RRset 或解析失敗",
    "lookupOkHint": "以上為即時查詢結果。CDN multi-A 應看到多個 IP；健康摘除後應減少。",
    "lookupFailHint": "查詢失敗或無答案。請確認名稱、類型與上游解析器。",
    "validateTitle": "記錄驗證",
    "validateDesc": "新增／編輯時自動驗證（CNAME 衝突、A/AAAA 格式等）。",
    "createZoneTitle": "建立 DNS 區域",
    "createZoneDesc": "依模板產生記錄",
    "createZoneNeedValid": "請輸入有效的區域名稱與 IPv4 位址",
    "zoneNameHint": "例如 example.com（不含結尾點）",
    "invalidZone": "區域名稱無效。請用合法域名（例如 example.com）。",
    "invalidIpv4": "IPv4 無效。每個欄位須為 0–255。",
    "serverIpv4": "伺服器 IPv4",
    "serverIpv4Hint": "模板 A 記錄使用的位址",
    "thisHostIpv4": "此主機公網 IPv4",
    "serverIpv6Optional": "伺服器 IPv6（可選）",
    "serverIpv6Hint": "有公網 v6 時寫入 AAAA；可留空",
    "thisHostIpv6": "此主機公網 IPv6（可留空）",
    "soaNsCreateHint": "可留空，預設 ns1.區域名稱",
    "defaultTtlLabel": "預設 TTL",
    "defaultTtlHint": "SOA 與新記錄預設",
    "recordTemplate": "記錄模板",
    "editRecord": "編輯記錄",
    "addRecordTitle": "新增記錄",
    "recordModalDesc": "區域 {{zone}} · 儲存後需再寫入區域檔",
    "recordType": "DNS 記錄類型",
    "nameHint": "@ = 根網域；www = 子網域",
    "mxPlaceholder": "例如 10 mail.example.com.",
    "spfPlaceholder": "例如 v=spf1 a mx ip4:… ip6:… ~all",
    "needIpv6": "請填 IPv6 位址",
    "needIpv4": "請填 IPv4 位址",
    "valueHint": "IP、主機名或對應內容",
    "ipv6Address": "IPv6 位址",
    "ipv4Address": "IPv4 位址",
    "cacheTime": "快取時間",
    "deleteZoneTitle": "刪除區域？",
    "deleteZoneDesc": "會一併刪除其 DNS 記錄登記。",
    "deleteRecordTitle": "刪除記錄？",
    "deleteRecordDesc": "移除後請寫入區域檔",
    "addPeer": "新增 對等節點",
    "probe": "探活",
    "pushZones": "推送 zones",
    "reloadRemote": "remote reload",
    "generateDnssec": "產生 DNSSEC 金鑰",
    "lookup": "查詢",
    "saveSoa": "儲存 SOA",
    "saveSoaAndWrite": "儲存並寫入區域檔",
    "saveSoaSettings": "儲存 SOA 設定",
    "saveSoaAndWriteBtn": "儲存並寫入區域檔",
    "goToZones": "前往區域",
    "refresh": "重新整理",
    "pushReload": "推送 + 重新載入",
    "pushOnly": "僅推送（不 重新載入）",
    "reloadOnly": "僅 remote 重新載入",
    "probePeers": "探活 peers",
    "clusterDefaultHint": "預設推送後在對等節點重新載入 DNS；需本機已開啟系統變更權限。",
    "notProbed": "尚未探活",
    "probeHealthy": "探活：{{status}}",
    "pushReloadShort": "推送+重新載入",
    "dnssecCardDesc": "產生金鑰／DS；若 dataDir 有 zone 檔會嘗試 dnssec-signzone。DS 不會自動上 registrar。",
    "currentZone": "目前區域：",
    "generateAndSign": "產生金鑰並嘗試簽署 zone",
    "lookupName": "名稱",
    "fillCurrentZone": "填入目前區域",
    "lookupToolHint": "優先使用主機上的 dig；若無 dig 則 fallback 至 node dns。結果反映查詢當下解析器所見，不等於 面板 內記錄。",
    "validateExtra": "error 會擋儲存；warn（如 apex CNAME）只提示。",
    "createAfterHint": "建立後請在「記錄」分頁檢視並「寫入區域檔」才會落到磁碟。",
    "valueLabel": "值",
    "ttlHint": "快取時間",
    "soaSavedControl": "已儲存 SOA 設定（控制面）— 請「寫入區域檔」套用",
    "soaNs2Label": "次要 NS（可選）",
    "soaNs2Hint": "第二名稱伺服器 FQDN，例如 ns2.example.com.",
    "soaHostmaster": "SOA 管理員電郵（RNAME）",
    "soaHostmasterHint": "用點代替 @，例如 hostmaster.example.com.",
    "soaRefresh": "Refresh（秒）",
    "soaRetry": "Retry（秒）",
    "soaExpire": "Expire（秒）",
    "soaMinimum": "Minimum／負快取 TTL（秒）",
    "soaTimingHint": "SOA 定時參數（秒）。",
    "healthTitle": "DNS 服務健康",
    "healthDesc": "主機真實狀態：服務 / 埠 53 / 已寫入 zone 檔 / 本機 dig 是否有回應（寫入 ≠ 已 reload ≠ 對外 answering）",
    "healthPillOk": "DNS 正常",
    "healthPillBad": "DNS 異常",
    "healthService": "服務",
    "healthServiceDown": "未運行",
    "healthListen": "埠 53",
    "healthWritten": "zone 檔",
    "healthAnswering": "本機回應",
    "healthAnsweringYes": "有",
    "healthAnsweringNo": "無／拒絕",
    "healthRefresh": "重新探測",
    "healthProbeLocal": "再探測健康",
    "healthOpen53": "開放防火牆 53（TCP+UDP）",
    "healthOpened53": "已請求開放 53 TCP+UDP",
    "healthOpen53Failed": "開放 53 失敗",
    "healthPortClosed": "未聽 53",
    "healthPortOpenAlready": "53 似已在聽",
    "healthHint": "dig 被拒時，請先修復 PowerDNS、開放 53，再寫入 zone。",
    "stateService": "服務",
    "stateListen": "聽埠",
    "stateWritten": "已寫入",
    "stateAnswering": "本機 answering",
    "lookupServer": "查詢伺服器（@）",
    "lookupServerHint": "127.0.0.1 = 本機權威；公網 IP 測對外；留空用系統 resolver",
    "healthHealPdns": "修復 PowerDNS 綁定",
    "healNeedInstall": "尚未安裝 PowerDNS — 請先到軟件分頁安裝",
    "applyNeedService": "DNS 服務未運行 — 請先啟動或安裝再寫入／套用",
    "goStartService": "去啟動 DNS 服務",
    "startBindHint": "若啟動後仍未監聽，多半是 53 埠被 systemd-resolved 佔用。請先按下方「修復綁定」再啟動。",
    "deleteZoneNeedName": "刪除此區域 — 需輸入區域名稱確認",
    "healthHealPdnsHint": "將 local-address 設為公網 IP，避免同 systemd-resolved 搶 0.0.0.0:53",
    "healthHealPdnsOk": "PowerDNS 已綁 {{ip}} 並嘗試啟動",
    "healthHealPdnsFailed": "PowerDNS 修復失敗",
    "startProbeFailed": "啟動後無法再探測 DNS 健康",
    "startNotListening": "PowerDNS 啟動已回報，但 53 埠未在答",
    "aboutTitle": "DNS 使用要點",
    "aboutSub": "區域為主；記錄／叢集／DNSSEC 要先選域名。",
    "aboutZonesTitle": "區域與域名範圍",
    "aboutZonesBody": "先在「區域」選域名，再管理該域名的記錄、叢集、DNSSEC。",
    "aboutHealthTitle": "服務健康",
    "aboutHealthBody": "在「工具」探測 PowerDNS、修復綁定、開放 53 埠。",
    "aboutStackTitle": "軟件版本",
    "aboutStackBody": "在「軟件」檢查／更新 PowerDNS 套件。",
    "aboutDdnsTitle": "DDNS",
    "aboutDdnsBody": "DDNS 分頁在本機 WAN 位址變更時更新指定的 A／AAAA。它不取代區域記錄編輯。寫入並不等於公網解析已生效。",
    "ddns": {
      "honesty": "寫入成功並非公網 DNS 已傳播。解析快取與 registrar NS 仍然有效。空白或私網 IP 不會發布。",
      "needExecute": "供應商更新需要 root 與 YSK_EXECUTE=1。探測仍會執行。",
      "lastRun": "上次執行",
      "nextRun": "下次執行",
      "wanRemembered": "已記住的 WAN IPv4",
      "updateNow": "立即更新",
      "updateTitle": "發布偵測到的 WAN 位址？",
      "updateDesc": "會對每筆已啟用記錄呼叫 Cloudflare、nsupdate 或本機 zone，即使位址未變更。請輸入 UPDATE 確認。",
      "updated": "DDNS 更新完成",
      "updateFailed": "DDNS 更新失敗",
      "probe": "探測 WAN",
      "probed": "WAN 探測完成",
      "probeFailedUi": "WAN 探測失敗",
      "forceHint": "「立即更新」即使位址未變更也會再發布。探測不會呼叫供應商。",
      "saved": "已儲存",
      "saveFailed": "無法儲存",
      "deleted": "已移除記錄",
      "emptyTitle": "尚未有 DDNS 記錄",
      "emptyDesc": "在下方新增主機名稱。可選 Cloudflare、RFC 2136，或本機 PowerDNS（managedBy=ddns）。",
      "colFqdn": "主機名稱",
      "colProvider": "供應商",
      "colPublished": "已發布",
      "colEnabled": "狀態",
      "colFrom": "由",
      "colTo": "至",
      "colWhen": "時間",
      "colNote": "備註",
      "pauseRecord": "暫停",
      "resumeRecord": "恢復",
      "statusCard": "WAN 狀態",
      "recordsCard": "主機名稱",
      "addCard": "新增主機名稱",
      "settingsCard": "設定",
      "historyTitle": "近期更新",
      "historyEmpty": "尚無 DDNS 紀錄",
      "paused": "排程已暫停",
      "pausedHint": "自動更新已關閉。探測與「立即更新」仍可執行。",
      "schedulerOn": "自動更新",
      "schedulerOnHint": "行程內排程，不是 crontab。關閉後不會自動 upsert。",
      "zone": "區域",
      "zoneHint": "留空則使用主機名稱最後兩段。本機供應商應選擇已存在的區域。",
      "zoneSelectHint": "本機已有區域。Cloudflare 與 RFC 2136 可用任意區域名稱。",
      "noLocalZones": "尚無本機區域。若使用本機 PowerDNS，請先在「區域」分頁建立。",
      "providerLocal": "本機 PowerDNS",
      "proxied": "Cloudflare proxied",
      "proxiedHint": "Orange cloud。VPN／WireGuard 主機名稱請關閉。",
      "proxiedWarnTitle": "使用 Cloudflare orange cloud？",
      "proxiedWarnDesc": "Proxied 記錄會隱藏來源 IP。VPN 與 WireGuard 主機名稱應維持 DNS only。請輸入 PROXY 確認。",
      "addRecord": "新增主機名稱",
      "interval": "間隔（秒）",
      "intervalHint": "60–86400。行程內排程，不是 crontab。",
      "cfToken": "Cloudflare API token",
      "cfTokenHint": "只寫不回顯。若已設環境變數 CF_API_TOKEN 則使用該值。",
      "tokenConfigured": "已儲存 Cloudflare token。留空則保持原值。",
      "tokenMissing": "尚未儲存 Cloudflare token（仍可使用環境變數 CF_API_TOKEN）。",
      "rfcServer": "RFC 2136 伺服器",
      "rfcServerHint": "遠端伺服器需要資料目錄內的 TSIG key file。Loopback 可以不簽名。密鑰不會放進 argv。",
      "rfcKeyFile": "TSIG key file",
      "rfcKeyFileHint": "相對於 DDNS 資料目錄，或資料目錄下的絕對路徑。",
      "rfcKeyConfigured": "已儲存 key file 路徑。留空則保持原值。",
      "primaryFqdn": "主要主機名稱",
      "primaryFqdnHint": "作為 VPN Endpoint 提示。不會改寫現有 peers。",
      "updateIdentity": "記住 WAN IPv4",
      "updateIdentityHint": "把上次公網 IPv4 存入 DDNS 狀態",
      "vpnHint": "VPN Endpoint 可用 DDNS 主機名稱（不會自動改寫現有設定）。",
      "sslHint": "Let's Encrypt HTTP-01 需要主機名稱解析到本機。IP 變更後不會自動重簽憑證。",
      "deleteTitle": "移除 DDNS 主機名稱？",
      "deleteDesc": "請輸入 {{fqdn}} 確認。不會刪除 zone 編輯器裡的本機記錄。",
      "err": {
        "requiresExecute": "發布需要 root 與 YSK_EXECUTE=1。",
        "missingToken": "缺少 Cloudflare API token。",
        "rfc2136NeedKey": "遠端 RFC 2136 需要資料目錄內的 TSIG key file。",
        "rfc2136KeyMissing": "TSIG key file 不存在，或不在資料目錄內。",
        "noPublicIpv4": "未偵測到公網 IPv4。",
        "noPublicIpv6": "未偵測到公網 IPv6。",
        "notPublicIpv4": "偵測到的 IPv4 不是公網位址。",
        "notPublicIpv6": "偵測到的 IPv6 不是公網位址。",
        "probeFailed": "公網 IP 探測失敗。",
        "localNoZone": "此主機名稱沒有對應的本機 DNS 區域。",
        "localNeedsDb": "本機供應商需要控制平面資料庫。",
        "managedByClash": "該名稱由其他功能擁有（不是 DDNS）。",
        "unknownProvider": "未知的 DDNS 供應商。",
        "nsupdateFailed": "nsupdate 失敗。",
        "updateFailed": "供應商更新失敗。",
        "invalidFqdn": "主機名稱無效。",
        "invalidType": "類型必須為 A 或 AAAA。",
        "invalidProvider": "未知供應商。",
        "notFound": "找不到記錄。",
        "confirmMismatch": "確認內容必須與主機名稱相同。",
        "schedulerDisabled": "DDNS 排程已暫停。",
        "provider": "供應商回傳錯誤。"
      }
    },
    "createMailZoneNow": "已建立郵件區域 {{domain}}",
    "toolsFirewallTitle": "防火牆（UFW）",
    "toolsFirewallHint": "允許或拒絕 53 埠。不會啟動或停止 PowerDNS。",
    "toolsUnitTitle": "PowerDNS 服務單元",
    "toolsUnitHint": "systemd 單元 pdns — 啟動、停止、重啟、重載。",
    "installConfirmTitle": "安裝 PowerDNS？",
    "installConfirmDesc": "會安裝 pdns-server 並寫入受管權威設定。需要 root 與 YSK_EXECUTE=1。",
    "installConfirmConsequence": "安裝並啟動後，PowerDNS 會綁定 53 埠。",
    "installPort53Busy": "53 埠已有程序在聽。未停止或修復該聽埠前，PowerDNS 可能無法綁定。",
    "installPort53BusyConsequence": "請先修復綁定或停止其他聽埠，才可預期 53 埠有回應。"
  },
  "docker": {
    "title": "Docker",
    "subtitle": "在這部伺服器安裝 Docker Engine，並管理容器、映像、Volume 與驗證者 Compose 堆疊。",
    "refresh": "重新整理",
    "notInstalled": "未安裝 Docker Engine。請在這頁安裝 docker.io 及 docker-compose-v2。",
    "protected": "受保護",
    "pruneConfirm": "輸入 PRUNE 以確認任何清理",
    "needEngineTitle": "請先安裝 Docker Engine",
    "stopEngineDesc": "會停止 Docker 引擎及本機全部 {{n}} 個容器。",
    "notInstalledValue": "未安裝",
    "nameHint": "字母、數字、底線、點、連字號（最長 128）",
    "volPlaceholder": "my-data",
    "netPlaceholder": "my-net",
    "runPorts": "發佈埠",
    "runPortsHint": "每行 host:container，例如 8080:80",
    "runEnv": "環境變數",
    "runEnvHint": "每行 KEY=value",
    "runRestart": "重啟政策",
    "runNetwork": "網絡",
    "runVolumes": "Volume",
    "runVolumesHint": "每行 volume:dest",
    "runAdvancedHint": "多服務堆疊請用驗證者節點，或主機上已有的 Compose 檔。",
    "daemonConfirmTitle": "套用引擎設定？",
    "daemonConfirmDesc": "會寫入 daemon.json 並重啟 docker.service。所有容器都會中斷。",
    "settingsHint": "只開放安全的 daemon.json 選項。套用會寫入檔案並重啟 docker.service。",
    "cli": {
      "usage": "用法：ysk-server docker status|ps|images|volumes|networks|df|logs|inspect|exec|start|stop|restart|rm|pull|run|prune|engine|compose [--image IMG] [--name N] [--preset version|help|hostname] [--bin BIN] [--project P] [--execute] [--json]"
    },
    "tab": {
      "overview": "概覽",
      "containers": "容器",
      "images": "映像",
      "compose": "Compose",
      "volumes": "Volume",
      "networks": "網絡",
      "prune": "清理",
      "settings": "設定",
      "about": "說明"
    },
    "col": {
      "engine": "引擎",
      "containers": "容器",
      "version": "版本",
      "dataRoot": "資料目錄",
      "disk": "磁碟",
      "validators": "驗證者堆疊",
      "name": "名稱",
      "image": "映像",
      "status": "狀態",
      "ports": "埠",
      "managed": "由面板管理",
      "size": "大小",
      "driver": "驅動",
      "type": "類型",
      "reclaimable": "可回收"
    },
    "state": {
      "up": "運行中",
      "down": "已停止",
      "running": "運行中",
      "exited": "已結束",
      "exitedCode": "已結束（{{n}}）",
      "restarting": "重啟中",
      "restartingCount": "重啟中 · {{n}} 次",
      "paused": "已暫停",
      "created": "已建立",
      "dead": "已失效",
      "removing": "刪除中",
      "unknown": "未知"
    },
    "df": {
      "images": "映像",
      "containers": "容器",
      "volumes": "本機 volume",
      "builder": "建置快取",
      "other": "其他"
    },
    "actions": {
      "start": "啟動",
      "stop": "停止",
      "restart": "重啟",
      "remove": "刪除",
      "logs": "日誌",
      "inspect": "檢查",
      "exec": "執行（version）",
      "run": "執行映像",
      "pull": "拉取",
      "up": "啟動",
      "down": "停止",
      "createVolume": "建立 volume",
      "createNetwork": "建立網絡",
      "pruneContainers": "清理容器",
      "pruneImages": "清理映像",
      "pruneVolumes": "清理 volume",
      "pruneSystem": "系統清理",
      "startEngine": "啟動引擎",
      "stopEngine": "停止引擎",
      "restartEngine": "重啟引擎",
      "applyDaemon": "套用引擎設定"
    },
    "empty": {
      "containers": "未有容器",
      "images": "未有映像",
      "compose": "未有 Compose 專案",
      "composeDesc": "專案來自驗證者節點或主機上已有的 Compose 檔。本頁不接受任意上載 YAML。",
      "composeCta": "開啟驗證者節點",
      "volumes": "未有 volume",
      "networks": "未有網絡"
    },
    "logs": {
      "empty": "沒有日誌輸出。",
      "follow": "跟隨"
    },
    "deleteRunningWarn": "此容器仍在運行或重啟中，刪除會強制移除。",
    "settings": {
      "logMaxSize": "容器日誌上限",
      "liveRestore": "即時還原（引擎重啟時保留容器）",
      "mirrors": "Registry 來源（每行一個網址）",
      "insecure": "未加密 Registry（每行一個主機）"
    },
    "about": {
      "body": "Docker 是 YSK Server 的一級主機服務，與 Nginx 同級。由面板用 Ubuntu docker.io + docker-compose-v2 安裝。驗證者節點以 yskval-* Compose 專案運行。",
      "honesty": "變更主機需要 root 及 YSK_EXECUTE=1。預設是試行。本頁管理單機 Docker；叢集編排請用外部 Kubernetes。",
      "validators": "開啟驗證者節點"
    },
    "alerts": {
      "daemonTitle": "Docker 引擎未運行",
      "daemonBody": "已安裝 Docker，但 docker.service 未啟動。驗證者堆疊無法啟動。"
    },
    "errors": {
      "notInstalled": "未安裝 Docker",
      "daemonDown": "Docker 引擎未運行",
      "needCompose": "需要 docker compose（v2 外掛）",
      "badImage": "映像名稱無效",
      "badName": "名稱無效",
      "badPort": "埠對應無效",
      "badEnv": "環境變數無效",
      "badVolume": "磁碟掛載無效",
      "badNetwork": "網絡無效",
      "protectedNetwork": "不可以刪除內建 Docker 網絡",
      "badRestart": "重啟政策無效",
      "badPrune": "清理範圍無效",
      "needPruneConfirm": "清理 volume 或系統需要 confirm=PRUNE",
      "badDaemon": "引擎設定無效",
      "composeMissing": "找不到這個專案的 Compose 檔",
      "logsFailed": "讀不到容器日誌",
      "mutateFailed": "Docker 指令失敗",
      "engineFailed": "無法控制 docker.service",
      "badExec": "exec 只限允許清單內的二進制與預設（不可用 shell，不可開 TTY）",
      "uninstallBusy": "請先停止由面板管理的容器（包括驗證者堆疊）再卸載 Docker",
      "badCommand": "指令或 entrypoint 無效",
      "portBusy": "主機埠 {{bind}}:{{port}} 已被佔用",
      "nameInUse": "已有名稱為 {{name}} 的容器。請先刪除或改名。",
      "unpublished": "容器未掛上網絡或未發佈埠，不當成已啟動。"
    },
    "notes": {
      "dryMutate": "此為試行。要改主機請加 --execute 及 YSK_EXECUTE=1。",
      "dryPrune": "清理預覽（未套用）。",
      "dryEngine": "引擎控制此為試行。",
      "dryDaemon": "會寫入 /etc/docker/daemon.json 並重啟 docker.service。",
      "daemonWrote": "已寫入 daemon.json",
      "start": "已啟動容器",
      "stop": "已停止容器",
      "restart": "已重啟容器",
      "remove": "已刪除容器",
      "ran": "已用映像啟動容器",
      "leftoverRemoved": "綁定失敗後已刪除殘留容器 {{name}}",
      "pulled": "已拉取映像",
      "exec": "已執行允許清單內的 exec",
      "imageRemoved": "已刪除映像",
      "volumeCreated": "已建立 volume",
      "volumeRemoved": "已刪除 volume",
      "networkCreated": "已建立網絡",
      "networkRemoved": "已刪除網絡",
      "pruned": "清理完成",
      "compose": {
        "up": "已啟動 Compose 專案",
        "down": "已停止 Compose 專案",
        "restart": "已重啟 Compose 專案",
        "rm": "已刪除 Compose 專案"
      },
      "engine": {
        "start": "已啟動 docker.service",
        "stop": "已停止 docker.service",
        "restart": "已重啟 docker.service"
      }
    },
    "ui": {
      "whatYouGet": "這頁可以做甚麼",
      "whatYouGetLead": "先安裝 Docker Engine。之後可以執行單一容器、拉取映像，並查看本機已有的驗證者 Compose 堆疊。",
      "capEngine": "引擎",
      "capEngineDesc": "一鍵安裝 docker.io 及 docker-compose-v2。可在這頁啟動或停止 docker.service。",
      "capWork": "容器與映像",
      "capWorkDesc": "選擇常用映像、拉取、執行，然後查看日誌或檢查容器。",
      "capStacks": "驗證者堆疊",
      "capStacksDesc": "多服務堆疊是驗證者 Compose 專案（yskval-*）。本頁不接受上載 YAML。",
      "cardEngine": "引擎",
      "cardDisk": "磁碟",
      "cardWork": "本機現況",
      "compose": "Compose",
      "cgroup": "cgroup",
      "used": "已用",
      "free": "可用",
      "running": "運行中",
      "images": "映像",
      "volumes": "Volume",
      "networks": "網絡",
      "goImages": "映像",
      "goValidators": "驗證者節點",
      "imagePickHint": "請選擇常用映像。只有需要其他參考名稱時，才選「其他」。",
      "imageCustom": "其他",
      "driver": "驅動",
      "driverLocalOnly": "本頁只建立 local volume。",
      "netDefaultDriver": "新建網絡使用 Docker 預設的 bridge 驅動。",
      "pruneWhat": "要清理甚麼",
      "pruneAck": "我明白未使用的資料會被刪除，而且無法還原",
      "pruneAckDesc": "清理 volume 或整個系統無法還原。會按所選範圍刪除已停止的容器與未使用的映像。",
      "pruneNow": "立即清理",
      "useMirrors": "使用 Registry 來源",
      "useInsecure": "允許未加密 Registry",
      "publishPorts": "向主機發佈埠",
      "attachVolume": "掛載 volume",
      "setEnv": "設定環境變數",
      "defaultNet": "預設",
      "mountPath": "掛載路徑",
      "restartNo": "永不",
      "restartUnless": "除非已停止",
      "restartAlways": "一律",
      "restartOnFail": "失敗時",
      "needAck": "清理前請先確認",
      "scopeContainers": "已停止的容器",
      "scopeImages": "未使用的映像",
      "scopeVolumes": "未使用的 volume",
      "scopeBuilder": "建置快取",
      "scopeSystem": "所有未使用項目",
      "noVolumesYet": "尚未有 volume — 請先到 Volume 分頁建立。",
      "command": "指令",
      "commandHint": "選填。映像之後的參數。留空則用映像 CMD。",
      "entrypoint": "Entrypoint",
      "entrypointHint": "選填單一程式。留空則用映像 ENTRYPOINT。",
      "portMap": "主機:容器",
      "portOccupied": "此主機埠已被佔用",
      "validatorImage": "由驗證者頁管理",
      "newVolume": "新建 named volume",
      "loopbackUrl": "本機測試網址",
      "nginxProxy": "建立 Nginx 反向代理",
      "intentPorts": "意圖（未發佈）",
      "customPort": "其他主機埠",
      "customPortHost": "主機埠",
      "customPortContainer": "容器埠",
      "pctUsed": "已用 {{n}}%",
      "customPortHint": "1–65535。例如 9090 → 80。",
      "pickBridge": "選擇 bridge 網絡"
    },
    "deleteTitle": "刪除 {{id}}",
    "deleteDesc": "此動作無法復原。",
    "deleteC1": "會從這部主機移除該資源。",
    "deleteComposeVal": "這是驗證者堆疊 — 驗證者實例會一併刪除。",
    "pruneTitle": "清理 Docker 資源",
    "pruneDesc": "輸入 PRUNE 以確認。已刪除的資料無法復原。",
    "pruneC1": "會刪除所選範圍內未使用的資源。",
    "pruneC2": "Volume 與系統清理會永久刪除未使用的資料卷。",
    "pruneC3": "會移除呢個範圍內已停止的容器或未使用映像。"
  },
  "email": {
    "title": "郵件",
    "subtitle": "域名、DNS、信箱與 Relay",
    "externalTodos": "Server 以外必須自行處理的事項",
    "ptr": "反向 DNS（PTR）需由 VPS/雲端供應商設定",
    "port25": "出站 Port 25 可能被雲端封鎖，需申請解除或使用 Relay",
    "create": "建立郵件域名",
    "createHint": "登記域名後可查看 DNS、信箱與健康檢查",
    "domains": "已登記域名",
    "empty": "尚未登記郵件域名",
    "emptyHint": "建立域名後可產生 DNS 清單與外部待辦",
    "searchPlaceholder": "搜尋域名…",
    "domain": "域名",
    "serverIp": "伺服器 IP",
    "notFound": "找不到此郵件域名",
    "backToList": "返回郵件域名",
    "softwareNeeded": "郵件所需軟件尚未安裝",
    "applyApplied": "已套用",
    "applyWritten": "已寫入",
    "applyFailed": "失敗",
    "applyDraft": "草稿",
    "queueMsgCount": "佇列 {{count}} 封",
    "queueLoadFailed": "讀取佇列失敗",
    "queueFlushRequested": "已請求清空佇列",
    "queueFlushFailed": "清空失敗",
    "queueDeleted": "已删 {{id}}",
    "queueDeleteFailed": "刪除失敗",
    "pillDomains": "{{count}} 域名",
    "pillNoDomain": "無域名",
    "statDomains": "域名",
    "statHealthy80": "健康≥80",
    "statApplied": "已套用",
    "statDraft": "草稿",
    "tabDomains": "域名",
    "tabWebmail": "網頁電郵",
    "tabQueue": "佇列",
    "tabStack": "軟件",
    "tabOps": "分工",
    "webmailGlobalDesc": "全面板共用一套網頁電郵；所有郵件域名的用戶都用同一個入口登入。",
    "webmailGlobalHint": "需要系統變更權限與外網以下載 Roundcube／SnappyMail。未開權限時不會建立半成品專案。",
    "webmailMovedHint": "網頁電郵已改為全站共用設定，不再按單一域名安裝。",
    "openGlobalWebmailSettings": "前往網頁電郵設定",
    "domainsTitle": "域名 ({{filtered}}/{{total}})",
    "domainsListDesc": "本機已登記的郵件域名",
    "emptyFilterHint": "沒有符合搜尋的域名",
    "emptyCreateHint": "用列表右上角「建立」登記域名；成功後进入詳情完成一鍵設定與 DNS。",
    "queueLocalTitle": "郵件佇列",
    "needExecute": "系統變更權限",
    "viewQueue": "查看佇列",
    "flushQueue": "清空佇列",
    "flushQueueEmpty": "佇列是空的",
    "flushQueueNeedExecute": "清空佇列需要系統變更權限",
    "queueHint": "本機 Postfix 佇列。查看屬讀取探測；清空需系統變更權限。",
    "deleteThisId": "刪除此 ID",
    "queueEmpty": "無待送郵件",
    "queueEmptyHint": "目前沒有待送郵件",
    "mtaTitle": "MTA 軟件",
    "mtaBody": "探測與一鍵安裝由上方横幅驱動。列表頁不假装已安裝。",
    "mtaSmtp": "SMTP 出站／入站",
    "mtaImap": "IMAP／POP3 信箱",
    "mtaDkim": "出站 DKIM 签署",
    "mtaMissingHint": "缺軟件時横幅會顯示「一鍵安裝／重新探測」。安裝成功 ≠ 域名已可收發。",
    "pathTitle": "域名設定路徑",
    "path1": "右上角登記域名",
    "path2": "进入域名詳情 → 一鍵設定郵件",
    "path3": "DNS 頁或外部 checklist 加 MX／SPF／DKIM／DMARC",
    "path4": "SSL 綁定 mail／webmail 主機名",
    "viewDomainList": "查看域名列表",
    "opsPanelTitle": "面板 vs 外部",
    "opsThisPage": "本頁：域名登記、佇列观測、軟件探測",
    "opsDetail": "域名詳情：一鍵 bootstrap、信箱、別名、relay、webmail",
    "opsHost": "主機商：PTR、Port 25 出站策略",
    "opsRegistrar": "域名商：MX／SPF／DKIM／DMARC 發佈",
    "statusTitle": "狀態",
    "statusDraft": "草稿（僅面板）",
    "statusWritten": "written：已寫管理檔，未必套到系統",
    "statusApplied": "applied：曾成功套用（仍视服務 is-active）",
    "statusReputation": "國際收件匣信譽無法 100% 自動化",
    "createModalDesc": "",
    "registerDomain": "建立",
    "domainApexHint": "不含 mail. 前綴",
    "serverIpv4Hint": "MX／A／SPF",
    "serverIpv4Ph": "公網 IPv4",
    "serverIpv6": "IPv6（可選）",
    "serverIpv6Hint": "AAAA／SPF ip6",
    "serverIpv6Ph": "可留空",
    "registerNote": "",
    "flushConfirmTitle": "清空全部郵件佇列？",
    "flushConfirmDesc": "佇列中的郵件會被刪除，不可復原。",
    "flushConfirm": "清空",
    "tabMailbox": "郵箱",
    "tabAliases": "別名／轉寄",
    "tabHealth": "健康",
    "tabRelay": "中繼",
    "tabSieve": "過濾／SSO",
    "tabAdvanced": "進階",
    "pillApplied": "已套用",
    "pillManaged": "管理檔",
    "pillDraft": "草稿",
    "statHealth": "健康",
    "statApply": "套用",
    "statDomain": "域名",
    "pausedFlag": "已暂停（旗標）",
    "normal": "正常",
    "statMailboxes": "郵箱",
    "statDnsRecords": "DNS 記錄",
    "dnsTodosTitle": "域名系統",
    "copyAllRecords": "複製全部記錄",
    "openDnsPage": "開啟 DNS 頁",
    "healthScore": "健康分",
    "deliverabilityChecks": "檢查項",
    "healthUnchecked": "尚未檢查",
    "healthUncheckedHint": "尚未實測 DNS／PTR／25 埠。",
    "healthPartialScore": "部分評分 {{n}}/100（僅 DNS）",
    "healthPartialHint": "只計了 DNS 清單 — 即時檢查與黑名單尚未測。",
    "deliverabilityScore": "送達能力檢查包",
    "opendkimNoReload": "OpenDKIM 不支援重載 — 更改金鑰或對照表後請用重啟。",
    "opendkimNoReloadTitle": "此堆疊不支援 systemctl reload opendkim",
    "healthChecklist": "檢查清單 {{score}}/100",
    "healthChecklistHint": "檢查清單分數 — 尚未做 DNS／PTR／25 埠實測",
    "healthLiveHint": "實測分數",
    "suggestedRecords": "建議記錄數",
    "externalTodosCount": "外部待辦",
    "colType": "類型",
    "colName": "名稱",
    "colValue": "值",
    "colNote": "說明",
    "copy": "複製",
    "noDnsRecords": "尚無 DNS 記錄",
    "externalTodosHeading": "外部待辦（面板無法代勞）",
    "externalTodosBody": "PTR、端口 25、登記商 DNS 須自行完成。",
    "copyExternalTodos": "複製外部待辦清單",
    "todoDone": "完成",
    "todoPending": "待辦",
    "refreshDnsHint": "按「重新整理」載入 DNS 建議",
    "mailboxListTitle": "郵箱列表（{{count}}）",
    "createMailbox": "+ 建立郵箱",
    "writeDovecot": "寫入 Dovecot 密碼庫",
    "noMailboxes": "尚未有郵箱 — 按「建立郵箱」開啟對話框",
    "mailboxOpsResult": "郵箱操作結果",
    "aliasesTitle": "別名／轉發／Catch-all",
    "aliasType": "類型",
    "aliasTypeAria": "別名類型",
    "typeForward": "轉寄",
    "typeAlias": "別名",
    "localPart": "本機部分",
    "localPartHint": "例如 sales",
    "targetMailbox": "目標信箱",
    "targetMailboxHint": "可用逗號分隔多個",
    "addAlias": "新增別名",
    "noAliases": "尚未有別名／轉發",
    "aliasResult": "別名結果",
    "autoreplyTitle": "自動回覆／暫停",
    "autoreplyDesc": "自動回覆",
    "autoreplyBodyHint": "可選「套用到系統」",
    "enableAutoreply": "啟用自動回覆",
    "enableAutoreplyDesc": "vacation.sieve；系統套用後才會掛上 .dovecot.sieve",
    "applyToSystem": "套用到系統",
    "applyToSystemDesc": "需系統變更權限與 root；失敗不會假成功",
    "subject": "主旨",
    "body": "內文",
    "saveApplyAutoreply": "儲存並套用自動回覆",
    "saveAutoreplyWritten": "儲存自動回覆",
    "suspendApply": "暫停並套用 REJECT",
    "suspendWritten": "暫停域名（written）",
    "resumeApply": "恢復並更新 map",
    "resumeWritten": "恢復域名（written）",
    "flagsResult": "旗標／系統套用結果",
    "defaultAutoreplySubject": "自動回覆",
    "defaultAutoreplyBody": "已收到您的郵件，稍後回覆。",
    "healthLiveTitle": "寄達健康（真實 DNS／埠探測）",
    "healthLiveDesc": "即時檢查",
    "serverIpLabel": "伺服器 IP",
    "liveCheck": "即時檢查",
    "liveOk": "正常",
    "liveBad": "異常",
    "notTested": "未測",
    "blacklist": "黑名單",
    "healthExternalNote": "PTR 與端口 25 須在主機商完成。",
    "runLiveCheck": "執行 Live 檢查",
    "dnsblThisIp": "DNSBL（本 IP）",
    "multiIpRbl": "多 IP RBL",
    "warmupAdvice": "暖身建議",
    "probeMatrix": "探測結果",
    "colItem": "項目",
    "colStatus": "狀態",
    "pass": "通過",
    "fail": "失敗",
    "unknown": "未知",
    "colDetail": "詳情",
    "outboundPort25": "出站 Port 25",
    "noProbeResults": "尚無探測結果",
    "noLiveYet": "尚未執行 Live 檢查",
    "noLiveYetHint": "先執行即時檢查",
    "mailSslTitle": "憑證與 TLS",
    "mailSslHint": "憑證在 SSL 頁簽發；此處跳到 mail／webmail／域名。",
    "openSslPage": "開啟 SSL 頁",
    "webmailSsoSkeleton": "Webmail SSO 骨架",
    "writeRoundcubeSso": "寫入 Roundcube SSO 骨架",
    "ssoSkeletonSymlink": "SSO 骨架 + 系統 symlink",
    "rateLimitTitle": "出站限速／反垃圾",
    "rateLimitDesc": "寫入 Postfix anvil 與 Rspamd（需系統變更權限）。",
    "hourlyMsgCap": "每小時訊息上限",
    "hourlyMsgCapHint": "全域取各域名最小值",
    "enableAntispam": "啟用反垃圾標記（Rspamd multimap）",
    "enableAntispamDesc": "關閉則此域名不列入 Rspamd 反垃圾對應表。寫入面板後須「套用到系統」才生效。",
    "writeControlOnly": "只寫入控制面",
    "applyToSystemBtn": "套用到系統",
    "dnsblResult": "黑名單（DNSBL）",
    "warmupResult": "暖身",
    "policyResult": "限速／反垃圾政策",
    "relayTitle": "SMTP 出站中繼",
    "relayHost": "中繼主機",
    "applyRelaySystem": "套用到系統 Postfix",
    "applyRelaySystemDesc": "寫入系統 Postfix 中繼",
    "saveApplyRelay": "儲存並套用到系統",
    "saveOnly": "只儲存設定",
    "relayResult": "中繼結果",
    "webmailSsoTitle": "Webmail 單點登入",
    "webmailSsoDesc": "Webmail 登入令牌",
    "mailboxPasswordOptional": "郵箱密碼（可選）",
    "mailboxPasswordHint": "可留空",
    "mailboxPasswordPh": "填寫後 token 可自動登入 Roundcube",
    "ssoTokenHint": "產生短期登入權杖",
    "issueSsoToken": "簽發 SSO token",
    "sieveTitle": "Sieve 過濾",
    "sieveDesc": "寫入 dataDir/email/sieve；寫入 ≠ Dovecot 已載入",
    "sieveTemplateHint": "預設過濾範本",
    "writeDefaultSieve": "寫入預設 Sieve",
    "listWrittenFiles": "列出已寫入檔案",
    "result": "結果",
    "domainSslTitle": "此域名 SSL",
    "domainSslDesc": "跳轉 SSL 頁並預填域名，申請 Let’s Encrypt",
    "requestCert": "申請 {{domain}} 凭證",
    "clientAutoTitle": "客戶端自動設定",
    "clientAutoDesc": "客戶端自動設定",
    "clientAutoHint": "產生 autodiscover／autoconfig",
    "generateCopyXml": "產生並複製設定 XML",
    "queueTitle": "郵件佇列",
    "queueDesc": "查詢或清空本機 MTA 佇列（亦可在郵件首頁操作；需系統變更權限）",
    "publicAutoconfig": "公開設定",
    "bootstrapTitle": "一鍵設定郵件",
    "bootstrapDesc": "安裝套件並套用郵件堆疊（需系統變更 + 管理員）。必須自訂管理員密碼。",
    "adminPassword": "管理員密碼",
    "adminPasswordHint": "管理員郵箱密碼",
    "adminPasswordPh": "至少 8 字元",
    "adminPasswordRequired": "請設定至少 8 字元的管理員密碼",
    "bootstrapBtn": "一鍵設定郵件",
    "webmailInstallDesc": "下載／套用 Roundcube",
    "webmailHostname": "Webmail 主機名",
    "webmailHostnameHint": "虛擬主機 server_name，例如 webmail.example.com",
    "installWebmail": "建立並上線網頁電郵",
    "bootstrapResult": "一鍵設定／Webmail 結果",
    "createMailboxTitle": "建立郵箱",
    "createMailboxDesc": "完整位址會是 {{local}}@{{domain}}",
    "createMailboxBtn": "建立郵箱",
    "localPartLabel": "本機部分",
    "localPartFullHint": "完整位址會是 {{local}}@{{domain}}",
    "passwordOptionalHint8": "可選；若填寫須至少 8 個字元，否則拒絕建立",
    "live": {
      "noMx": "無 MX",
      "mxLookupFailed": "MX 查詢失敗",
      "noSpf": "無 SPF TXT",
      "spfLookupFailed": "SPF 查詢失敗",
      "noDkim": "無 DKIM TXT",
      "dkimLookupFailed": "DKIM 查詢失敗",
      "noDmarc": "無 DMARC",
      "dmarcLookupFailed": "DMARC 查詢失敗",
      "noPtr": "無 PTR",
      "ptrLookupFailed": "PTR 查詢失敗",
      "port25Open": "外送 TCP 25 似乎暢通（探測 gmail-smtp-in.l.google.com）",
      "port25Blocked": "外送 TCP 25 探測失敗 — 可能被封鎖；請申請解封或改用中繼",
      "dnsblListed": "已列入：{{list}}",
      "dnsblClean": "以下清單乾淨：{{list}}"
    },
    "deliv": {
      "mx": "MX 記錄",
      "mxFix": "在 DNS 供應商新增 MX 指向郵件主機",
      "spf": "SPF 文字",
      "spfFix": "發布 v=spf1 並包含本機 IP",
      "dkim": "DKIM TXT",
      "dkimFix": "發布面板提供的 selector._domainkey TXT",
      "dmarc": "DMARC 文字",
      "dmarcFix": "發布 _dmarc 政策（可先 p=none）",
      "ptr": "反向 DNS（PTR）",
      "ptrFix": "在 VPS／雲端主控台設定 PTR 對齊郵件主機名 — 面板無法代設",
      "port25": "外送 埠 25",
      "port25Fix": "向主機商申請解封 埠 25，或設定 SMTP 中繼（submission 587）",
      "dnsbl": "DNSBL 聲譽",
      "dnsblFix": "於列出之服務除名；乾淨前勿大量寄信",
      "relay": "SMTP 中繼（埠 25 被封鎖時）",
      "relayOptional": "埠 25 探測暢通 — 中繼可選",
      "relayPresent": "dataDir 已有中繼設定（套用仍可能需 執行）",
      "relayMissing": "未設定中繼 — 埠 25 持續封鎖時必須設定",
      "relayFix": "面板郵件 → 中繼，或 ysk-server hosting 電郵-初始化 加 relay",
      "warmup": "暖機計劃",
      "warmupDetail": "{{phases}} 階段 · 第 1 日最多 {{day1}} 封",
      "warmupFix": "跟從階段限額；勿用新 IP 對冷名單大量發送",
      "honesty1": "面板從不保證全球 inbox 送達（Gmail／Outlook 過濾屬外部）。",
      "honesty2": "PTR 與 埠 25 屬 VPS／網絡供應商 — 非 YSK 控制平面可改。",
      "honesty3": "MX／SPF／DKIM／DMARC 必須在權威 DNS 供應商發布。",
      "honestyPortBlocked": "埠 25 似乎被封鎖 — 大量發送前請用中繼或申請解封。",
      "honestyPortOk": "埠 25 探測成功 — 仍請監察退信與 DNSBL。"
    },
    "catchall": "Catch-all（全收）",
    "webmailRoundcube": "網頁電郵",
    "warmup": {
      "p1g1": "只寄交易類／已知可靠收件人",
      "p1g2": "監察退信；投訴率保持接近零",
      "p1g3": "放量前確保 SPF／DKIM／DMARC／PTR 已生效",
      "p2g1": "只向有互動的聯絡人緩慢擴張",
      "p2g2": "每日查 DNSBL；被列入即暫停",
      "p2g3": "若 埠 25 受限，優先用 587 submission 而非 bulk",
      "p3g1": "指標保持乾淨先加倍量",
      "p3g2": "名單分段；硬退信即移除",
      "p4g1": "無封鎖先接近正常量",
      "p4g2": "持續監察 DMARC rua",
      "c1": "PTR 對齊 HELO／EHLO（郵件主機名）",
      "c2": "SPF + DKIM + DMARC 已發布並對齊",
      "c3": "DNSBL 乾淨（Spamhaus／SpamCop／Barracuda）",
      "c4": "外送 埠 25 暢通或已設中繼",
      "c5": "切勿使用購入的「bulk 電郵」IP 段",
      "c6": "考慮域名年齡／歷史（新域名要更慢爬升）",
      "noteNewIp": "視此 IP 為新 IP — 由第 1–3 日限額開始",
      "noteOldIp": "既有 IP 在改設定後仍宜逐步爬升",
      "noteProcess": "暖機是操作員流程；YSK 提供提示與 DNSBL，不假裝行銷 ESP 量"
    },
    "health": {
      "dnsUnconfirmed": "DNS 記錄（MX／SPF／DKIM）尚未確認",
      "dmarcMissing": "缺少 DMARC — 強烈建議設定",
      "dmarcUnpublished": "DMARC 記錄已在面板產生，但公網尚未解析到",
      "ptrBad": "PTR 反向 DNS 缺失或不正確 — 請向 VPS 供應商申請",
      "port25Blocked": "外送 埠 25 似乎被封鎖 — 請申請解封或改用 SMTP 中繼",
      "port25Unknown": "埠 25 狀態未知 — 請執行連通性檢查"
    },
    "stack": {
      "tlsNote": "SMTP／IMAP 用 Let’s Encrypt TLS 憑證",
      "externalNote": "送達率仍需外部 DNS／PTR／Port25"
    },
    "test": {
      "defaultSubject": "YSK 伺服器 郵件測試",
      "needMta": "需要本機 MTA（Postfix）已安裝，且 埠 25／中繼已設定",
      "checkSpam": "寄出後請查收件人垃圾箱與伺服器郵件日誌",
      "hintDeferred": "若 deferred：查 埠 25 封鎖或中繼憑證",
      "hintSpam": "若已接受但仍入垃圾：改善 SPF／DKIM／DMARC／PTR 並暖機",
      "hintLogs": "檢查 /var/log/mail.log 或 journalctl -u postfix"
    },
    "leMailHost": "申請憑證 · {{host}}",
    "leWebmailHost": "申請憑證 · {{host}}（網頁郵件）",
    "leApexHost": "申請憑證 · {{host}}（主域名）",
    "applyMailTls": "套用郵件 TLS 路徑",
    "applyMailTlsHint": "須已有 Let’s Encrypt 憑證；只寫入郵件服務路徑並重新載入。",
    "probeMx": "MX 記錄",
    "probeSpf": "SPF",
    "probeDkim": "DKIM",
    "probeDmarc": "DMARC",
    "probePtr": "PTR",
    "probeDnsbl": "DNSBL",
    "dnsAuthRepairTitle": "DNS 驗證待修",
    "dnsAuthRepairHint": "請在 DNS 分頁複製建議記錄，發佈後再按即時檢查。",
    "fixHintSpf": "SPF 未通過：請發佈 v=spf1 的 TXT（@）。",
    "fixHintDkim": "DKIM 未通過：請發佈選擇器._domainkey 的 TXT。",
    "fixHintDmarc": "DMARC 未通過：請發佈 _dmarc 的 TXT。",
    "fixHintMx": "MX 未通過：請将郵件主機 MX 指到 mail.域名。",
    "mailTls": {
      "needRootExecute": "套用郵件 TLS 需要管理員權限與系統變更權限。",
      "certMissing": "未找到 {{host}} 憑證檔（{{path}}）。",
      "getCertFirst": "請先在 SSL 頁為 {{host}} 申請 Let’s Encrypt 憑證。",
      "certFound": "已找到 {{host}} 憑證。",
      "postconfFailed": "postconf 失敗：{{detail}}",
      "postfixPathsSet": "已設定 Postfix TLS 憑證路徑。",
      "postfixReloaded": "已重新載入 Postfix。",
      "postfixReloadFailed": "Postfix 重新載入失敗：{{detail}}",
      "dovecotApplied": "已寫入 Dovecot TLS 片段並嘗試重新載入。",
      "dovecotSkipped": "已略過 Dovecot（未安裝或 doveconf 不可用）。",
      "dovecotSslOmitted": "郵件憑證不存在，已改寫 Dovecot 為 ssl=no，避免單元因缺少憑證而無法啟動。"
    },
    "policyApplySystemHint": "勾選「套用到系統」先會寫入 Postfix／Rspamd 對應並重新載入；否則只寫控制面草稿。",
    "rateLimitAppliedNote": "已套用每小時外發限额與反垃圾標記（若啟用系統套用）。",
    "bootstrapHonesty": "一鍵設定寫入管理檔案；應用到系統需權限。DNS／PTR／端口 25 須自行完成。",
    "bootstrapAfterSteps": "完成後建議：① 發佈 DNS（MX/SPF/DKIM/DMARC）② 申請 mail.域名 SSL ③ 按「套用郵件 TLS 路徑」。",
    "bootstrapThenSsl": "下一步：申請 mail SSL",
    "bootstrap": {
      "mtaOk": "已寫入 MTA 設定（{{count}} 個檔）",
      "mtaIncomplete": "MTA 設定未完成：{{detail}}",
      "seeNotes": "見 notes",
      "mailboxOk": "信箱 {{address}}（狀態 {{status}}）",
      "mailboxExists": "信箱已存在（略過）：{{detail}}",
      "passdbOk": "Dovecot passdb 已寫入（{{count}} 個信箱）",
      "webmailOk": "網頁郵件方案 {{mode}}（{{host}}）",
      "mailTlsTodo": "郵件 TLS：請為 {{mailHost}} 申請憑證後，於健康分頁按「套用郵件 TLS 路徑」。",
      "externalDns": "外部待辦（你負責）：於 DNS 商設定 MX/SPF/DKIM/DMARC；VPS 設 PTR；開放埠 25 或改用 SMTP 中繼。",
      "healthScore": "健康分數 {{score}}/{{max}}（DNS/PTR/埠 25 不會自動完成）",
      "webmailProjectOk": "網頁電郵專案 {{tool}} @ {{host}}（{{status}}）",
      "dovecotApplyOk": "已套用 Dovecot 虛擬認證"
    },
    "tabDeliverability": "送達",
    "pendingCount": "待處理",
    "externalTodosOneLiner": "PTR、端口 25、登記商 DNS 須自行完成。",
    "runDeliverabilityPack": "執行送達檢查",
    "deliverabilityTitle": "送達檢查",
    "deliverabilityEmpty": "尚未檢查",
    "deliverabilityEmptyDesc": "按「執行送達檢查」探測 DNS、PTR、端口 25。",
    "panelReady": "面板可驗",
    "gaps": "有缺口",
    "checkOk": "通過",
    "checkExternal": "外部",
    "checkFail": "失敗",
    "mailboxListDesc": "建立後可寫入 Dovecot 密碼庫（需系統變更權限）",
    "aliasesDesc": "把地址轉到其他信箱",
    "relayDesc": "經外部 SMTP 寄信；套用到系統先會寫 Postfix（需系統變更權限）",
    "deliverabilityDesc": "PTR／DNS／端口 25 檢查",
    "dnsTodosDesc": "建議記錄可複製到外部 DNS 或到 DNS 頁建 zone（寫入 ≠ 權威上線）",
    "deliverabilityHonesty": "無法代設 PTR 或解除埠 25 封鎖",
    "warmupSuggest": "暖身建議",
    "writeSsoSkeleton": "寫入 Roundcube SSO 骨架",
    "rateLimitPerHour": "每小時訊息上限",
    "rateLimitGlobalHint": "全域取各域名最小值",
    "savePolicyWritten": "只寫入控制面",
    "dnsblMultiIp": "多 IP RBL",
    "webmailTool": "網頁電郵軟件",
    "webmailToolRoundcube": "Roundcube（預設）",
    "webmailToolSnappy": "SnappyMail（輕量）",
    "webmailProjectName": "專案名稱",
    "installWebmailProject": "建立並上線網頁電郵",
    "openWebmail": "開啟網頁電郵",
    "webmailRisk": "公開網頁電郵有風險 — 請盡快上 HTTPS。",
    "webmailForceHttps": "強制 HTTPS（Roundcube；需已綁 SSL）",
    "reinstallWebmail": "重新安裝／升級",
    "installWebmailTitle": "建立共用網頁電郵專案（首次安裝）",
    "reinstallWebmailTitle": "重建／升級現有網頁電郵專案",
    "reinstallNeedInstall": "請先安裝網頁電郵",
    "webmailSsoAdvanced": "進階 · SSO 插件",
    "tlsRoleMail": "mail（IMAP／SMTP）",
    "tlsRoleMailHint": "郵件伺服器主機名",
    "tlsRoleWebmail": "webmail（網頁電郵）",
    "tlsRoleWebmailHint": "網頁電郵虛擬主機",
    "tlsRoleApex": "主域名",
    "tlsRoleApexHint": "網頁／apex 憑證",
    "tlsRequestLe": "申請 LE",
    "tlsRequestLeFor": "為 {{host}} 申請 LE",
    "advancedToolsTitle": "佇列與客戶端",
    "flushQueueConfirm": "確定清空本機 MTA 佇列？此操作不可復原。",
    "mailSslTitleShort": "憑證與 TLS",
    "deleteDomain": "刪除域名",
    "deleteDomainConfirmTitle": "刪除郵件域名？",
    "deleteDomainConfirm": "將刪除 {{domain}} 及其信箱、別名與控制面資料。系統 Postfix／Dovecot 設定可能需另行清理。",
    "deleteDomainBtn": "刪除",
    "deleteMailbox": "刪除信箱",
    "deleteMailboxTitle": "刪除信箱？",
    "deleteMailboxDesc": "將刪除 {{address}} 及其控制面資料與本機 Maildir（若存在）。",
    "deleteMailboxC1": "信箱登入與郵件檔",
    "deleteMailboxC2": "重寫該域 virtual map（控制面）",
    "deleteMailboxC3": "系統 Dovecot／Postfix 可能仍需另行清理",
    "deleteAliasTitle": "刪除別名／轉寄？",
    "deleteAliasDesc": "將刪除 {{source}}。",
    "deleteImpact": "{{mailboxes}} 個信箱 · {{records}} 筆 DNS 紀錄 · {{aliases}} 個別名",
    "deleteDomainC1": "所有信箱與別名",
    "deleteDomainC2": "控制面 DKIM、DNS 建議與旗標",
    "deleteDomainC3": "本機 dataDir/email 目錄（若存在）",
    "deleteDomainC4": "系統 MTA 映射可能仍在，需另行清理",
    "deleteDialogTitle": "永久刪除郵件域名",
    "deleteDialogDesc": "即將刪除 {{domain}}，無法還原。",
    "deletePermanent": "永久刪除",
    "deleteRemoveData": "一併刪除本機郵件資料",
    "deleteRemoveDataDesc": "取消則只移出面板，磁碟上的 Maildir 會保留",
    "deleteTypeName": "輸入域名以確認",
    "deleteTypeNameHint": "必須完全一致：{{name}}",
    "deleteWillData": "本機 dataDir/email 目錄（若存在）",
    "deleteKeepData": "保留本機 dataDir 郵件資料",
    "deleteSystemWarn": "系統 Postfix／Dovecot 映射不會自動清乾淨；必要時請另行處理。",
    "hostIpPick": "本機 IPv4",
    "hostIpPickV6": "本機 IPv6",
    "editMailboxTitle": "修改信箱",
    "editMailboxDesc": "更改 {{address}} 的密碼或其他登入設定",
    "editMailboxSave": "儲存變更",
    "newPassword": "新密碼",
    "newPasswordHint": "留空則保持現有密碼；若填寫至少 8 個字元",
    "confirmPassword": "確認密碼",
    "mailboxStatus": "狀態",
    "mailboxStatusActive": "啟用（允許登入）",
    "mailboxStatusDisabled": "停用（禁止登入）",
    "mailboxStatusHint": "停用時會寫入 Dovecot 密碼庫 *，拒絕登入",
    "colAddress": "地址",
    "colLocalPart": "本機部分",
    "colPassword": "密碼",
    "colCreated": "建立時間",
    "hasPassword": "已設定",
    "noPassword": "未設定",
    "mailboxPager": "信箱分頁",
    "prevPage": "上一頁",
    "nextPage": "下一頁",
    "pageOf": "第 {{page}} / {{total}} 頁 · {{count}}",
    "mailboxEmptyTitle": "尚未有信箱",
    "passwordMismatch": "兩次密碼不一致",
    "passwordTooShort": "密碼至少 8 個字元",
    "mailboxUpdateNeedField": "請設定新密碼或更改狀態",
    "catchallHint": "未對應的本地部分會送到目標信箱。只寫草稿，須套用郵件才生效。",
    "queueSearchPh": "搜尋 ID、寄件人或收件人…",
    "queueId": "佇列 ID",
    "queueSender": "寄件人",
    "queueRecipients": "收件人",
    "queueSize": "大小",
    "queueReason": "原因",
    "queueActive": "傳送中",
    "queueHeld": "已暫停",
    "queueDeferred": "延遲",
    "deleteQueueTitle": "刪除此佇列郵件？",
    "deleteQueueDesc": "從本機 MTA 佇列移除 {{id}}。需系統變更權限。",
    "openQueuePage": "開啟郵件佇列",
    "dovecotFailedHint": "Dovecot 服務失敗。請到軟件分頁查看單元狀態。",
    "dovecotFailedStatus": "Dovecot 狀態為 {{status}}。請到軟件分頁查看單元摘要。",
    "mailCertMissing": "尚未有 {{hosts}} 的憑證。請到 SSL 頁簽發。",
    "mailCertPresent": "郵件憑證已簽發 — 不是缺證問題。",
    "webmailNeedCert": "{{host}} 尚未有憑證 — 請先到 SSL 簽發，才可強制 HTTPS。",
    "domainRequired": "請填寫域名",
    "domainInvalid": "請輸入有效域名",
    "serverIpRequired": "請填寫伺服器 IP",
    "serverIpInvalid": "請輸入有效 IP 位址",
    "serverIpv6Invalid": "請輸入有效 IPv6 位址",
    "localPartRequired": "請填寫本機部分",
    "localPartInvalid": "本機部分只可用英文字母、數字與 . _ + -",
    "aliasDestRequired": "請填寫至少一個目標信箱",
    "mailboxStatusManaged": "受管",
    "mailboxStatusActiveShort": "啟用",
    "mailboxStatusDisabledShort": "停用",
    "mailboxStatusSystem": "系統已佈建",
    "mailboxStatusPending": "待系統佈建",
    "mailboxStatusFailed": "系統佈建失敗",
    "dnsblCleanStatus": "未列入",
    "dnsblListedStatus": "已列入",
    "deliverabilityDone": "送達檢查完成（{{score}}/100）",
    "sieveEmpty": "尚未寫入 Sieve 檔案",
    "sieveListed": "已列出 {{count}} 個檔案",
    "webmailHostnameRequired": "請填寫網頁電郵主機名",
    "sieveFilesTitle": "已寫入檔案"
  },
  "errors": {
    "YSK_UNAUTHORIZED": "未授權",
    "YSK_FORBIDDEN": "禁止存取",
    "YSK_NOT_FOUND": "找不到資源",
    "YSK_VALIDATION": "輸入無效",
    "YSK_ALLOWLIST_DENIED": "不在允許清單",
    "YSK_APPROVAL_REQUIRED": "需要審批",
    "YSK_APPROVAL_PENDING": "審批處理中",
    "YSK_APPROVAL_REJECTED": "審批已拒絕",
    "YSK_SANDBOX_VIOLATION": "沙箱限制",
    "YSK_LLM_UNTRUSTED": "不可信 LLM 輸出",
    "YSK_CONFIG_INVALID": "設定無效",
    "YSK_SETUP_INCOMPLETE": "安裝未完成",
    "YSK_UPDATE_FAILED": "更新失敗",
    "YSK_INTERNAL": "內部錯誤",
    "YSK_NEED_EXECUTE": "需要系統變更權限",
    "YSK_NEED_ROOT": "需要系統管理員權限",
    "YSK_RATE_LIMITED": "嘗試過多，請稍後再試",
    "YSK_TOTP_REQUIRED": "需要雙重驗證碼",
    "auth": {
      "needCredentials": "請輸入用戶名與密碼",
      "rateLimited": "登入嘗試過多，請稍後再試",
      "badCredentials": "帳號或密碼不正確",
      "accountSuspended": "帳戶已暫停",
      "adminTotpStrict": "管理員必須先啟用 雙重驗證（strict）。請用已啟用 雙重驗證 的帳號，或關閉 strict 設定。",
      "totpReplay": "驗證碼已使用，請等下一個週期",
      "totpRequired": "需要有效的雙重驗證碼",
      "mustEnrollTotp": "政策：請立即啟用雙重驗證",
      "userNotFound": "找不到用戶",
      "totpSetupNeedReauth": "設定 雙重驗證 需要重新輸入密碼（或近期 step-up 驗證碼）",
      "totpBeginFirst": "請先開始設定 雙重驗證",
      "totpInvalid": "驗證碼無效",
      "stepUpRequired": "此操作需要重新輸入雙重驗證碼",
      "missingCredential": "缺少登入憑證",
      "apiKeyUserMissing": "介面 金鑰對應用戶不存在",
      "apiKeyInvalid": "介面 金鑰無效",
      "sessionExpired": "登入已失效，請重新登入",
      "sessionIdle": "閒置逾時，請重新登入",
      "totpNotEnabled": "未啟用 雙重驗證",
      "totpSecretNoDataDir": "TOTP secret 已加密但未設定 dataDir",
      "mustChangePassword": "請先設定新密碼才可繼續",
      "policyNeedsOwn2fa": "請先為本帳號啟用 2FA，並以驗證碼確認，才可要求其他人啟用 2FA"
    },
    "http": {
      "notFoundRoute": "找不到：{{method}} {{path}}",
      "unauthorized": "未登入或工作階段已過期",
      "forbidden": "沒有權限執行此操作",
      "notFound": "找不到資源",
      "unprocessable": "操作無法完成（伺服器拒絕）",
      "requestFailed": "請求失敗（{{status}}）",
      "jsonInvalid": "JSON 無效",
      "internal": "內部錯誤",
      "payloadTooLarge": "請求內容過大"
    },
    "YSK_HOST_BROWSE_SSRF": "主機瀏覽已被安全政策攔截",
    "YSK_HOST_BROWSE_SESSION": "主機瀏覽工作階段不存在或已過期",
    "YSK_HOST_BROWSE_UPSTREAM": "主機瀏覽上游擷取失敗",
    "YSK_HOST_BROWSE_NEED_CHROME": "真實瀏覽器引擎需要主機上的 Chrome／Chromium"
  },
  "fail2ban": {
    "backToProtection": "防護中心",
    "statCurrentBan": "目前 封鎖",
    "statTotal": "累計",
    "statBanList": "封鎖列表",
    "statBoot": "開機",
    "startedOk": "已啟動 fail2ban",
    "startService": "啟動服務",
    "notInstalled": "fail2ban 尚未安裝",
    "toolHintPrefix": "底層工具：",
    "toolHintBody": "fail2ban 會掃日誌後臨時封鎖。攻擊應變請用",
    "toolHintTemp": "",
    "toolHintBody2": "",
    "toolHintUfw": "負責埠與永久規則。",
    "tabs": {
      "bans": "封鎖列表",
      "whitelist": "白名單",
      "jails": "Jail",
      "policy": "策略",
      "service": "服務",
      "about": "說明"
    },
    "manualBanTitle": "手動 封鎖（臨時）",
    "ipPlaceholder": "IPv4 或 IPv6",
    "banipOk": "已 banip",
    "manualBanHint": "臨時封鎖，過 bantime 會自動解；永久拒請用 UFW。白名單見「白名單」分頁。",
    "currentBans": "目前封鎖",
    "bannedTableTitle": "封鎖中的 IP（即時 fail2ban-client）",
    "bannedTableDesc": "需能讀取 客戶端；unban 需 系統變更權限",
    "unbanOk": "已 unban",
    "unban": "解封",
    "addWhitelistTitle": "加入 ignoreip 白名單",
    "whitelistAdded": "已加入白名單",
    "addWhitelistShort": "+白名單",
    "emptyBansTitle": "無封鎖中 IP",
    "emptyBansDesc": "或無權讀取 fail2ban-客戶端",
    "ignoreipTitle": "ignoreip 白名單",
    "ignoreipDesc": "永不被封鎖的 IP（管理檔 + 可選 live fail2ban-client）。建議加入你的辦公／家居 IP。",
    "whitelistEmptyWarn": "白名單為空，jail 可能把你自己封鎖。套用 ignoreip 前請先加入登入 IP。",
    "suggestIgnoreLogin": "你目前的登入 IP {{ip}}",
    "applyIgnoreEmptyWarn": "白名單為空時套用會清空 ignoreip",
    "applyIgnoreNeedConfirm": "會重寫 jail ignoreip 並重新載入 fail2ban",
    "addIp": "新增 IP",
    "addWhitelist": "加入白名單",
    "applyPolicyIgnoreip": "套用策略（含 ignoreip）",
    "applyIgnoreipOk": "已把 ignoreip 寫入 jail.local 並套用",
    "ignoreipHint": "沒有系統變更權限時只寫面板檔。套用策略會重建 jail.local 的 ignoreip 並重新載入。",
    "whitelistTitle": "白名單 ({{count}})",
    "whitelistRemoved": "已移除白名單",
    "remove": "移除",
    "emptyWhitelistTitle": "尚未有白名單 IP",
    "emptyWhitelistDesc": "加入管理 IP，避免自己被 封鎖",
    "activeJails": "作用中 Jail",
    "colCurrent": "目前",
    "colTotal": "累計",
    "colDesc": "說明",
    "emptyJailsTitle": "無 jail",
    "emptyJailsDesc": "服務未啟動或尚未套用 jail.local",
    "policyTitle": "Jail 策略",
    "policyDesc": "寫入管理 jail.local；套用時 copy + 重新載入（不經 UFW）",
    "bantimeHint": "封鎖時長",
    "findtimeHint": "統計窗口",
    "maxretryHint": "窗口內最多失敗次數",
    "customExample2h": "自訂，例 2h",
    "customExample15m": "自訂，例 15m",
    "customMaxretry": "自訂 1–50",
    "min": "{{n}} 分",
    "hour": "{{n}} 時",
    "week": "{{n}} 週",
    "enableJailsHint": "啟用 jail（勾選後套用）：",
    "writtenOnlyMsg": "已寫管理檔（未套用系統）",
    "writeOnly": "只寫管理檔",
    "appliedOk": "已套用 fail2ban",
    "applyToSystem": "套用到系統",
    "systemdTitle": "系統服務 控制",
    "enableAndStart": "啟用並啟動",
    "serviceHint": "攻擊應變請用",
    "serviceHintSuffix": "（會呼叫本頁 jail + Nginx 限速，不重複建第二套 UFW）。",
    "actionOk": {
      "enable": "已啟用並啟動 fail2ban",
      "start": "已啟動 fail2ban",
      "reload": "已重新載入 fail2ban",
      "restart": "已重啟 fail2ban",
      "stop": "已停止 fail2ban"
    },
    "statWhitelist": "白名單",
    "invalidIp": "請輸入有效的 IPv4、IPv6 或 CIDR。",
    "whitelistPendingApply": "已寫入面板名單。請按「套用策略」才會寫入 jail.local。",
    "ignoreipFile": "dataDir/fail2ban/ignoreip.txt",
    "jailsTabHint": "顯示作用中 Jail 狀態。要開關 Jail 請到「策略」分頁。",
    "colJail": "監獄",
    "colEnabled": "開啟",
    "serviceStateLine": "單元 {{unit}} · {{state}} · 開機 {{boot}}",
    "jail": {
      "sshd": "遠端登入暴力破解",
      "nginxHttpAuth": "Nginx HTTP 驗證",
      "nginxBotsearch": "Nginx 掃描／機械人探測",
      "nginxBadbots": "Nginx 已知惡意機械人",
      "nginxLimitReq": "Nginx 限速 Jail",
      "postfix": "Postfix 郵件暴力破解",
      "dovecot": "Dovecot 郵件登入",
      "recidive": "累犯"
    },
    "cannotBanSelf": "這是本機或你的登入 IP — 應加入 ignoreip，不要封鎖",
    "suggestIgnoreHint": "建議的管理 IP（先寫入面板檔，套用政策後才生效）：",
    "suggestIgnoreAdd": "加入 {{ip}}"
  },
  "featurePage": {
    "back": "返回"
  },
  "files": {
    "pillFiles": "{{count}} 檔",
    "pillTrash": "回收桶 {{count}} 項",
    "pillSpace": "已用 {{used}}",
    "statFiles": "檔案",
    "statFolders": "資料夾",
    "statUsage": "用量",
    "statSelected": "已選",
    "statTrash": "回收桶",
    "statShares": "分享",
    "publicSiteSettings": "公用站設定",
    "opsResultTitle": "檔案操作結果",
    "closeResult": "關閉結果",
    "tabBrowse": "瀏覽",
    "tabTrash": "回收桶",
    "tabShares": "分享",
    "spaceLabel": "空間",
    "publicFiles": "公用檔案",
    "viewLabel": "視圖",
    "allFiles": "全部檔案",
    "favorites": "收藏",
    "upload": "上傳",
    "newFolder": "新建資料夾",
    "newTextFile": "新建文字檔",
    "download": "下載",
    "copy": "複製",
    "move": "移動",
    "zip": "壓縮 zip",
    "unzip": "解壓",
    "unzipDone": "已解壓 {{path}}",
    "unzipFailed": "unzip 失敗",
    "delete": "刪除",
    "searchName": "搜尋…",
    "sortAria": "排序",
    "sortNameAsc": "名↑",
    "sortNameDesc": "名↓",
    "sortSizeAsc": "小↑",
    "sortSizeDesc": "大↓",
    "sortMtimeDesc": "最新",
    "sortMtimeAsc": "最舊",
    "viewList": "列表",
    "viewIcons": "圖示",
    "viewAria": "檢視模式",
    "toolbarAria": "檔案操作",
    "pathAria": "路徑",
    "rootPublic": "公用",
    "rootProject": "專案",
    "emptyFavorites": "尚未有收藏",
    "emptyFolder": "此資料夾是空的",
    "emptyFolderHint": "拖放檔案或整個資料夾到此處上傳，或按「上傳」",
    "selectItem": "選擇 {{name}}",
    "colName": "名稱",
    "colSize": "大小",
    "colMtime": "修改",
    "rename": "重新命名",
    "unfavorite": "取消收藏",
    "favorite": "收藏",
    "share": "分享",
    "versions": "版本",
    "selectAllAria": "全選",
    "selectAll": "全選",
    "folder": "資料夾",
    "dirNamedLikeFile": "（資料夾殘留；名稱像檔案）",
    "dropToUpload": "放開以上傳",
    "trashTitle": "回收桶 ({{count}})",
    "trashDesc": "刪除的檔案可還原或永久清除",
    "emptyTrash": "清空回收桶",
    "emptyTrashTitle": "清空回收桶？",
    "emptyTrashDesc": "回收桶內所有檔案會永久刪除，無法還原。",
    "emptyTrashDone": "已清空回收桶",
    "purgeForeverDesc": "此檔案會永久刪除，無法還原。",
    "colOrigPath": "原路徑",
    "colDeletedAt": "刪除時間",
    "restore": "還原",
    "restored": "已還原",
    "purgeForever": "永久刪除",
    "purged": "已永久刪除",
    "trashEmpty": "回收桶是空的",
    "sharesTitle": "公開分享連結 ({{count}})",
    "colPath": "路徑",
    "colLink": "連結",
    "colDownloads": "下載次數",
    "unshare": "取消",
    "unshareDone": "已取消分享",
    "sharesEmpty": "尚未建立分享",
    "sharesEmptyHint": "在檔案列按「分享」",
    "webdavTitle": "WebDAV 設定",
    "webdavDesc": "用 Basic 認證把公用檔案根掛到 Finder／Windows／rclone；權杖只顯示一次。",
    "enableIssueToken": "啟用並簽發權杖",
    "webdavReissueToken": "重新簽發權杖",
    "webdavReissueConfirm": "重新簽發會立即作廢舊密碼，已掛載的客戶端會斷線。確定？",
    "webdavDisableConfirm": "停用後 /webdav 將拒絕所有連線。確定？",
    "tokenIssued": "已簽發權杖",
    "status": "狀態",
    "enabledMount": "已啟用 · {{path}}",
    "notEnabled": "未啟用",
    "disable": "停用",
    "webdavAlreadyOff": "WebDAV 已關閉",
    "webdavDisabled": "已停用 WebDAV",
    "webdavEnabledNoEcho": "已啟用（密碼不會再次顯示；需要時請重新簽發）",
    "webdavDefaultOff": "預設關閉 — 按「啟用並簽發權杖」開始",
    "webdavAfterEnable": "啟用 WebDAV 並簽發權杖後才可用。",
    "webdavOn": "已啟用",
    "webdavOff": "已關閉",
    "webdavOffNoToken": "已停用（無有效權杖）",
    "webdavTokenId": "權杖 #{{id}}",
    "webdavTokenInactive": "已停用，權杖 #{{id}} 不生效",
    "webdavUpdated": "更新於 {{at}}",
    "webdavTokenOnceTitle": "請立即複製密碼",
    "webdavTokenOnceHint": "此密碼只顯示一次；關掉此頁後無法再查看。",
    "webdavConnTitle": "連線資訊",
    "webdavConnDesc": "客戶端用以下 URL 與 Basic 帳密連入",
    "webdavUrl": "伺服器 URL",
    "webdavUsername": "用戶名",
    "webdavPassword": "密碼（權杖）",
    "webdavPasswordHidden": "已簽發但不再顯示 — 請重新簽發或用已儲存的密碼",
    "webdavPasswordNone": "尚未簽發",
    "webdavRoot": "掛載根目錄",
    "webdavRootValue": "面板公用檔案根（public files）",
    "webdavAuth": "認證方式",
    "webdavAuthValue": "HTTP Basic · 用戶 ysk · 密碼 = 面板簽發的權杖",
    "webdavConnBundle": "連線資料",
    "webdavCopyAll": "複製全部連線資料",
    "webdavClientsTitle": "客戶端設定",
    "webdavClientsDesc": "常見掛載方式（HTTPS 建議；自簽憑證需在客戶端信任）",
    "webdavClientFinder": "macOS 查找器",
    "webdavClientFinderHint": "前往 → 連接伺服器…（⌘K），貼上 URL，用戶 ysk，密碼為權杖。",
    "webdavClientWin": "Windows",
    "webdavClientWinHint": "此電腦 → 對應網絡磁碟機 → 選擇「使用其他認證」；或用 Cyberduck / WinSCP（WebDAV）。",
    "webdavNotesTitle": "注意事項",
    "webdavNote1": "WebDAV 對應公用檔案根，不是整個主機檔案系統。",
    "webdavNote2": "需要由 reverse proxy／防火牆放行面板埠，並建議只用 HTTPS。",
    "webdavNote3": "重新簽發權杖會即時作廢舊密碼；停用會拒絕所有 /webdav 請求。",
    "webdavNote4": "支援 OPTIONS／PROPFIND／GET／PUT；進階 LOCK 等未必齊全。",
    "copiedLabel": "已複製「{{label}}」",
    "newFolderTitle": "新建資料夾",
    "willCreateAt": "將建立於「{{path}}」",
    "nameRequired": "請輸入名稱",
    "folderCreated": "已建立資料夾",
    "create": "建立",
    "folderName": "資料夾名稱",
    "noPathSepHint": "不可含路徑分隔符",
    "newTextTitle": "新建文字檔",
    "fileNameRequired": "請輸入檔名",
    "textFileCreated": "已建立文字檔",
    "fileName": "檔名",
    "fileNameHint": "例如 readme.md 或 notes.txt",
    "versionsTitle": "版本歷程",
    "versionsDesc": "",
    "noVersions": "尚無歷史版本",
    "noVersionsHint": "",
    "versionRestored": "已還原",
    "restoreVersionConfirm": "用 {{version}} 覆寫現檔 {{file}}？磁碟上的現檔會被蓋掉。",
    "renameTitle": "重新命名",
    "renameCurrent": "目前：{{name}}",
    "renamed": "已重新命名",
    "newName": "新名稱",
    "newNameHint": "僅改檔名，不變更所在目錄",
    "copyTo": "複製到…",
    "moveTo": "移動到…",
    "copyMoveDesc": "{{action}} {{count}} 個項目",
    "actionCopy": "複製",
    "actionMove": "移動",
    "copied": "已複製",
    "moved": "已移動",
    "targetFolderPath": "目標資料夾路徑",
    "targetFolderHint": "相對 管理員，例如 docs 或 docs/a；留空 = 根目錄",
    "shareCreateTitle": "分享檔案",
    "shareCreateDesc": "建立公開下載連結；密碼可選。",
    "createLink": "建立連結",
    "sharePath": "路徑：",
    "passwordOptional": "密碼（可選）",
    "passwordOptionalHint": "留空則任何人持有連結即可下載",
    "passwordPlaceholder": "可選",
    "linkCreated": "連結已建立：",
    "chmodTitle": "修改權限（chmod）",
    "chmodDone": "已 chmod {{mode}} → {{count}} 個項目",
    "chmodDoneShort": "已 chmod {{mode}}",
    "chmodFailed": "chmod 失敗",
    "apply": "套用",
    "chmodApplyHint": "將套用到已選 {{count}} 個項目（八進位，如 644 / 755）",
    "chmod644": "644 檔",
    "chmod755": "755 可執行",
    "chmod600": "600 私密",
    "chmod700": "700 目錄私密",
    "chmod775": "775 群組寫",
    "chmodCustomPh": "自訂 0644…",
    "mode": "模式",
    "zipTitle": "壓縮為 zip",
    "zipCreated": "已建立 {{path}}",
    "zipDone": "已壓縮 → {{path}}",
    "zipFailed": "zip 失敗",
    "compress": "壓縮",
    "zipHint": "將壓縮已選 {{count}} 個項目到目前資料夾（需系統有 zip 指令）",
    "destFileName": "目標檔名",
    "destPathHint": "路徑：{{path}}",
    "movedToTrash": "已移至回收桶",
    "moveToTrashTitle": "移至回收桶？",
    "moveToTrashDesc": "將刪除 {{count}} 個項目（可於回收桶還原）",
    "deleteMore": "，以及另外 {{n}} 項",
    "unshareTitle": "撤銷此分享？",
    "unshareDesc": "撤銷 {{name}} 的連結（{{url}}）。連結會立即失效。",
    "preview": "預覽",
    "imagePreviewNeedLogin": "圖片預覽需要已登入；請改用下載",
    "pdfDownloadHint": "PDF 請按下載開啟（需授權標頭）",
    "noEmbedPreview": "此類型無法內嵌預覽，請下載。",
    "uploadDone": "已上傳 {{count}} 個檔案",
    "downloadFailedStatus": "下載失敗 ({{status}})",
    "downloadFailed": "下載失敗",
    "uploadFolder": "上傳資料夾",
    "dropFolderOrFile": "放開以上傳檔案或整個資料夾",
    "uploadPanelTitle": "上傳進度",
    "uploadPanelStats": "{{done}}／{{total}} 完成 · 失敗 {{err}}",
    "uploadClearDone": "清除已完成",
    "uploadInFolder": "資料夾 {{folder}}",
    "uploadStatusDone": "完成",
    "uploadStatusError": "失敗",
    "uploadStatusQueued": "排隊",
    "uploadNoFile": "無檔案內容",
    "uploadSomeFailed": "{{count}} 個項目上傳失敗",
    "uploadTruncated": "一次最多上傳 {{max}} 項（共選了 {{total}} 項，其餘已略過）",
    "previewFailed": "預覽失敗",
    "videoNotSupported": "瀏覽器無法播放此影片。",
    "audioNotSupported": "瀏覽器無法播放此音訊。",
    "edit": "編輯",
    "editorTitle": "編輯 · {{name}}",
    "editorSave": "儲存",
    "editorSavedIdle": "已儲存",
    "editorSaved": "已儲存 {{name}}",
    "editorSaveFailed": "儲存失敗",
    "editorDirty": "未儲存",
    "editorClean": "已儲存",
    "editorChars": "{{count}} 字元",
    "editorAria": "編輯 {{name}}",
    "editorDiscardConfirm": "放棄未儲存變更？",
    "shareReadyTitle": "連結已就緒",
    "shareReadyDesc": "複製後傳送。持有連結者即可下載。",
    "shareReadyBadge": "已建立",
    "shareProtected": "已設密碼",
    "shareOpenAccess": "無密碼",
    "shareLinkLabel": "公開連結",
    "shareCopyHint": "可點選欄位或按「複製」。",
    "shareAgain": "再建一個",
    "shareCreatedToast": "分享連結已建立",
    "linkCopied": "已複製連結",
    "linkCopyFailed": "無法自動複製，請手動選取複製",
    "shareExpireLabel": "連結有效期",
    "shareExpireHint": "到期後連結失效",
    "shareExpireNever": "永不過期",
    "shareExpire1h": "1 小時",
    "shareExpire1d": "1 日",
    "shareExpire7d": "7 日",
    "shareExpire30d": "30 日",
    "shareExpireCustom": "自訂…",
    "shareExpireAt": "到期時間",
    "shareExpireInvalid": "請選擇未來的日期時間",
    "shareExpiresAt": "到期 {{at}}",
    "colExpires": "到期",
    "pdfInlineHint": "若瀏覽器未能內嵌顯示 PDF，請下載查看。",
    "publicShareTitle": "有人與你分享檔案",
    "publicShareSub": "透過安全連結下載，無需登入",
    "publicShareChecking": "檢查連結…",
    "publicShareDownloading": "下載中…",
    "publicShareWait": "請稍候",
    "publicShareNeedPassword": "此連結需要密碼才能下載",
    "publicSharePasswordPh": "分享密碼",
    "publicShareDownload": "下載",
    "publicShareDownloadAgain": "再次下載",
    "publicShareDone": "下載已開始",
    "publicShareDoneHint": "請查看瀏覽器下載列；若未出現可再按一次",
    "publicShareNotFound": "分享不存在或已過期",
    "publicShareDenied": "無法存取此分享",
    "publicShareBadPassword": "密碼錯誤",
    "publicShareMissing": "連結無效",
    "publicShareFailed": "下載失敗（{{status}}）",
    "publicShareFailedGeneric": "下載失敗",
    "publicShareDefaultName": "下載",
    "publicSharePanelLogin": "登入控制面",
    "publicShareLang": "語言",
    "publicShareProgress": "{{loaded}} / {{total}}（{{pct}}%）",
    "publicShareProgressIndeterminate": "已接收 {{loaded}}…",
    "publicShareCancel": "取消",
    "publicShareCancelled": "已取消下載",
    "publicSharePoweredBy": "由 {{company}} 提供",
    "publicSharePoweredPrefix": "由 ",
    "publicSharePoweredSuffix": " 提供",
    "publicShareHasAccount": "已有帳號？登入",
    "password": "密碼",
    "editorLines": "{{count}} 行",
    "editorLargeHint": "檔案較大，編輯可能較慢。超過約 2 MB 請改用下載（伺服器上限）。",
    "editorLnCol": "行 {{line}}，欄 {{col}}",
    "editorSpaces": "空格：{{n}}",
    "copyLink": "複製連結",
    "versionsTitleShort": "版本歷程",
    "versionsCount": "{{count}} / {{max}} 版",
    "versionN": "第 {{n}} 版",
    "versionLatest": "最新",
    "shareModeLabel": "下載方式",
    "shareModeDirect": "直接下載",
    "shareModeBt": "BitTorrent（WebTorrent）",
    "shareModeBoth": "直接下載 + BitTorrent",
    "shareModeHint": "BT 需要運行中的 Tracker（檔案 → BT Tracker）。持有 magnet 連結者即可下載，請慎用密碼與有效期。",
    "shareModeBtBlocked": "Tracker 未運行 — 請先啟動，或改選僅直接下載。",
    "shareMagnet": "Magnet 連結",
    "shareTorrentFile": "下載 .torrent",
    "shareSeedStatus": "做種狀態",
    "shareBtStats": "BitTorrent 狀態",
    "btSeeds": "種子",
    "btLeechers": "下載者",
    "btPeers": "同行",
    "btUploadSpeed": "上傳速度",
    "btDownloadSpeed": "下載速度",
    "btUploaded": "已上傳",
    "btDownloaded": "已下載",
    "btRatio": "分享率",
    "btUpdatedAt": "更新時間",
    "btServerStats": "伺服器做種",
    "btClientStats": "你的客戶端",
    "btSeeding": "做種中",
    "btPending": "做種準備中",
    "btStopped": "已停止做種",
    "btError": "做種錯誤",
    "publicShareMethod": "請選擇下載方式",
    "publicShareDirect": "直接下載",
    "publicShareBt": "BT",
    "openBtTracker": "開啟 BT Tracker",
    "publicShareBtInBrowser": "在瀏覽器以 WebTorrent 下載",
    "publicShareBtProgress": "已下載 {{pct}}% · {{peers}} 個 peers · ↓ {{down}} · ↑ {{up}}",
    "publicShareBtStarting": "正在連接 peers…",
    "publicShareBtFailed": "WebTorrent 失敗：{{detail}}",
    "publicShareBtNeedMagnet": "此分享沒有 magnet 連結",
    "publicShareBtUnsupported": "此瀏覽器無法執行 WebTorrent；請改用 magnet 或 .torrent",
    "btNone": "—",
    "uploadStatusSkipped": "已略過",
    "uploadStatusCancelled": "已取消",
    "conflict": {
      "titleFile": "已有名為「{{name}}」的項目",
      "titleFolder": "已有名為「{{name}}」的資料夾",
      "descFile": "請選擇處理方式。在選擇「取代」之前不會覆寫現有檔案。",
      "descFolder": "請選擇處理方式。「合併」會保留現有資料夾，再處理其中的檔案。",
      "incoming": "即將加入",
      "existing": "已在此處",
      "kindFile": "檔案",
      "kindFolder": "資料夾",
      "skip": "略過",
      "skipHint": "不加入此項目",
      "keepBoth": "兩者都保留",
      "keepBothHint": "將新項目存成 {{name}}",
      "replace": "取代",
      "replaceHint": "覆寫現有檔案。可以時會保留版本快照。",
      "replaceFolderHint": "覆寫資料夾內的同名檔案，其餘檔案會保留。",
      "merge": "合併",
      "mergeHint": "保留現有資料夾，並將新檔案加入其中",
      "applyAll": "套用到其餘所有撞名",
      "applyAllHint": "此次拖放或複製／移動的其餘項目都用同一做法",
      "cancelRest": "取消其餘項目",
      "progress": "第 {{current}}／{{total}} 項",
      "typeMismatch": "此處已有名為「{{name}}」的{{destKind}}，即將加入的是{{incomingKind}}。",
      "skipped": "已略過",
      "cancelled": "已取消"
    },
    "webdavReissueUnchanged": "重新簽發後權杖編號未變——寫入可能未生效，請再試一次。",
    "webdavDisableFailed": "停用後狀態仍為啟用——寫入可能未生效，請再試一次。"
  },
  "firewall": {
    "profiles": {
      "web": {
        "label": "Web 主機",
        "short": "SSH · 80 · 443"
      },
      "mail": {
        "label": "Web + 郵件",
        "short": "另開 25/465/587/993"
      },
      "ftps": {
        "label": "網絡+FTPS",
        "short": "21 + PASV 30000–30100"
      }
    },
    "appliedProfile": "已套用設定檔：{{label}}",
    "backToProtection": "防護中心",
    "statRules": "規則",
    "statDenyIps": "永久拒 IP",
    "statAllow": "允許",
    "statDeny": "拒絕",
    "statDefaultIn": "入站預設",
    "defaultNotApplied": "未套用（UFW 關閉）",
    "ufwOffHint": "UFW 關閉時入站預設不會生效",
    "executeOn": "開",
    "executeOff": "關",
    "ufwDisabled": "已停用 UFW",
    "ufwEnabled": "已啟用 UFW",
    "disableUfw": "停用 UFW",
    "enableUfw": "啟用 UFW",
    "notInstalled": "UFW 尚未安裝",
    "toolHintPrefix": "底層工具：",
    "toolHintBody": "UFW 管埠同永久規則。攻擊應變與自動封鎖請用防護中心。",
    "toolHintfail2ban": "日誌臨時封鎖",
    "toolHintFail2ban": "日誌臨時封鎖",
    "executeOffHint": "系統變更未開 — 可看狀態，改規則需 管理員權限與系統變更權限已開啟",
    "tabs": {
      "rules": "規則表",
      "ports": "開埠",
      "deny": "永久拒 IP",
      "profiles": "設定檔",
      "about": "說明",
      "services": "服務"
    },
    "currentRules": "目前規則",
    "rulesSourceHint": "UFW 編號規則（ufw status numbered）",
    "colAction": "動作",
    "colTo": "目標",
    "colFrom": "來源",
    "deleteShort": "刪除",
    "denyBadge": "拒絕",
    "emptyRulesTitle": "無規則或無權讀取",
    "emptyRulesInstalled": "UFW 未啟用，或需要管理員權限讀取",
    "emptyRulesNotInstalled": "安裝 UFW 後再整理",
    "allowPortTitle": "允許埠",
    "protocol": "協議",
    "protoBoth": "兩者",
    "protoBothLabel": "TCP+UDP",
    "port": "埠",
    "portHint": "選常用埠，或下面自訂",
    "portHintYsk": "YSK 服務埠一覽（Panel／Web／SSH／郵件／FTP／DNS／DB／Redis）；可自訂埠號",
    "privatePortWarn": "{{service}} 預設宜只聽內網；公開 allow 有風險。建議填寫來源 IP／CIDR。",
    "privatePortWarnWithFrom": "{{service}} 將只允許指定來源；仍請確認 IP／CIDR 正確。",
    "allowFrom": "來源 IP／CIDR（可選）",
    "allowFromHint": "留空 = 全部來源；填寫後只允許該 IP 或網段連入此埠",
    "allowFromPlaceholder": "例 203.0.113.10 或 10.0.0.0/8",
    "customPort": "自訂埠號（例 8080 或 30000:30100）",
    "allowedPort": "已允許 {{proto}}/{{port}}",
    "allowedPortFrom": "已允許 {{proto}}/{{port}}（來源 {{from}}）",
    "allowThisPort": "允許此埠",
    "allowPortHint": "預設 Web 主機應保留 22／80／443；DB／Redis／Panel 請用來源 IP 限制，勿對全世界 allow。",
    "denyTitle": "永久拒絕 IP",
    "denySub": "UFW DENY · 與 fail2ban 臨時 封鎖 不同",
    "denyPlaceholder": "要拒絕的 IPv4 或 IPv6",
    "deniedOk": "已永久拒絕",
    "removedDeny": "已移除 DENY",
    "remove": "移除",
    "noDenyRules": "未有永久拒 IP 規則",
    "oneClickProfiles": "一鍵設定檔",
    "oneClickDesc": "寫入管理腳本並套用 UFW（不會裝 fail2ban — 請到 fail2ban 頁）",
    "customApply": "自訂套用",
    "allowSmtp": "允許 SMTP／IMAP 埠",
    "extraTcp": "額外 TCP 埠",
    "extraTcpHint": "點選預設組合；可再自訂逗號／範圍",
    "noExtra": "無額外",
    "mailGroup": "郵件組",
    "customExtraPlaceholder": "自訂：8080,9000:9010",
    "appliedCustom": "已套用自訂規則",
    "applyToSystem": "套用到系統",
    "deletedRule": "已刪 #{{n}}",
    "deleteRuleTitle": "刪規則 #{{n}}？",
    "deleteRuleDesc": "將從 UFW 移除該規則編號（需系統變更權限）。",
    "servicesTitle": "受管服務埠",
    "servicesHint": "YSK 管理服務的預期網絡暴露。開啟服務時會自動同步這些規則。",
    "servicesUfwOff": "UFW 已關閉。此列表只是預期暴露，並非主機上已強制執行的規則。",
    "servicesEmpty": "尚未有服務暴露資料",
    "servicesEmptyDesc": "啟動受管服務（Web、FTPS、VPN、資料庫…）後會出現在此列表。",
    "servicesManualHint": "手動開埠 chips 在「埠」分頁 — 建議在此管理，規則會帶 ysk-svc 標記。",
    "portsManualHint": "進階手動規則。受管軟件請優先用「服務」分頁。",
    "colService": "服務",
    "colMode": "模式",
    "colPorts": "埠",
    "colSync": "狀態",
    "synced": "已同步",
    "syncNow": "立即同步",
    "disableConfirmTitle": "停用 UFW？",
    "disableConfirmDesc": "主機防火牆將停止過濾流量。若主機在公眾網絡上，SSH 與面板可能直接暴露。",
    "disableConfirmConsequence": "現有允許／拒絕規則仍會保留，但要重新啟用 UFW 才會生效。",
    "desiredOnlyUfwOff": "設定：{{mode}} · UFW 關閉（未套用）",
    "syncNotApplied": "UFW 關閉 · 未套用"
  },
  "ftp": {
    "title": "FTPS 帳戶",
    "accountsCount": "{{count}} 帳戶",
    "accounts": "帳戶",
    "applied": "已套用",
    "pendingApply": "待套用",
    "sftpKeys": "SFTP 鑰",
    "softwareMissing": "尚未安裝 FTPS 服務所需軟件",
    "ftpAccounts": "FTP 帳戶",
    "sftpPubkeys": "SFTP 公鑰",
    "homeDir": "家目錄",
    "domain": "網域",
    "user": "用戶",
    "keyFingerprint": "金鑰指紋（前綴）",
    "createHint": "請先在「FTP 帳戶」分頁建立帳戶，再回來登記公鑰。",
    "pubkeyHint": "點「+ 新增公鑰」，選擇 FTP 用戶並貼上 ssh-ed25519 或 ssh-rsa 公鑰整行。",
    "sftpKeyInvalid": "需要用戶名，以及以 ssh- 開頭的公鑰。",
    "quickSelect": "快速選擇帳戶",
    "quickSelectHint": "點用戶名帶入新增公鑰表單",
    "editAccount": "編輯 FTP 帳戶",
    "createAccount": "建立 FTP 帳戶",
    "accountModalDesc": "網域與家目錄請從清單選擇；無清單時可手填。儲存後需「套用」才寫入 vsftpd",
    "usernameHintCreate": "英數、點、底線、減號；建立後不可改",
    "usernameHint": "英數、點、底線、減號",
    "newPasswordOptional": "新密碼（可留空）",
    "passwordKeepHint": "留空表示不變更",
    "passwordMin8": "至少 8 字元",
    "domainHint": "對應站點或郵件網域，用於分組與路徑建議",
    "domainPh": "可先建立站點／郵件網域，或暫時輸入",
    "homeHint": "用戶登入後的根目錄（chroot 後可見範圍）",
    "addPubkey": "新增 SFTP 公鑰",
    "addPubkeyDesc": "選擇帳戶、可選備註，並貼上完整公鑰一行。寫入管理檔不代表已驗證可連線。",
    "pubkeyAdded": "已新增公鑰",
    "ftpUsername": "FTP 用戶名",
    "ftpUsernameHint": "須與已登記的 FTP 帳戶相同",
    "ftpUsernamePh": "與 FTP 帳戶相同",
    "note": "備註",
    "noteHint": "方便辨識裝置，例如 筆電／公司",
    "notePh": "筆電 / 公司主機",
    "sshPubkey": "遠端登入 公鑰",
    "sshPubkeyHint": "通常來自 ~/.ssh/id_ed25519.pub，整行貼上",
    "deleteAccountTitle": "刪除 FTP 帳戶？",
    "deleteAccountNamed": "刪除 FTP 帳戶 {{name}}？",
    "deleteAccountDesc": "移除後請再套用",
    "deleteKeyTitle": "刪除 SFTP 公鑰？",
    "deleteKeyDesc": "會從管理檔移除；系統 authorized_keys 可能仍需重載才生效。",
    "serviceTitle": "vsftpd 服務",
    "softwareMissingService": "FTPS 所需軟件尚未安裝",
    "lifecycle": "生命週期",
    "overview": "概覽",
    "network": "網絡",
    "security": "安全",
    "installStart": "安裝與啟動",
    "listenPort": "監聽埠",
    "accountCount": "帳戶數",
    "loginBanner": "登入橫幅",
    "sslDomain": "SSL 網域",
    "plaintextInsecure": "明文 FTP（未開 TLS）— 不安全。對外開放 21 埠前請先啟用 FTPS。",
    "plaintextPublicLive": "vsftpd 正以公網位址監聽且未啟用 FTPS，帳號密碼會明文傳送。請啟用 FTPS、改為僅本機監聽，或輸入 PLAINTEXT 確認後維持此狀態。",
    "bindAddress": "監聽範圍",
    "bindAddressHint": "新安裝預設僅本機。對外監聽且未開 FTPS 需打字確認。",
    "bindLocal": "僅本機",
    "bindLocalHint": "127.0.0.1 — 本機測試可不開 TLS",
    "bindPublic": "公開",
    "bindPublicHint": "全部介面 — 請啟用 FTPS，或確認 PLAINTEXT",
    "enableFtpsAndStart": "啟用 FTPS 並啟動",
    "publicPlainNeedConfirm": "公開明文 FTP 需輸入 PLAINTEXT 確認",
    "plainConfirmTitle": "未開 FTPS 就對外啟動 FTP？",
    "plainConfirmDesc": "21 埠會在公網位址接受明文登入與傳輸。",
    "plainConfirmC1": "網絡上可見用戶名與密碼。",
    "plainConfirmC2": "PASV 會通告已設定的公網 IP。",
    "plainConfirmC3": "不會代你開主機防火牆或雲安全組。",
    "plainConfirmAction": "啟動明文 FTP",
    "pasvRange": "PASV 範圍",
    "forceTls": "強制 TLS",
    "allowWrite": "允許寫入",
    "networkTitle": "網絡設定",
    "networkDesc": "監聽埠與 PASV 被動模式；儲存只改管理設定，套用才寫入 vsftpd 並重啟",
    "listenPortHint": "預設 21；若防火牆另開埠請一併放行",
    "customPort": "自訂埠",
    "ipStack": "IP 棧",
    "ipStackHint": "vsftpd 多數版本 listen 與 listen_ipv6 互斥；IPv6 用 listen_ipv6=YES。",
    "listenConflictLive": "現行 vsftpd.conf 為 listen={{v4}}、listen_ipv6={{v6}} — 兩者同時 YES 無法啟動。",
    "listenConflictNeedFix": "請先修正 listen／listen_ipv6（不可同時 YES），再套用。",
    "fixListenIpv4": "只用 IPv4（listen=YES，listen_ipv6=NO）",
    "liveFileValue": "檔案現值：{{value}}",
    "startBlockedFailed": "服務已失敗 — 請先套用有效設定再啟動",
    "ftpsNeedCert": "請先選擇憑證網域",
    "ipv4Only": "僅 IPv4",
    "ipv6Mapped": "IPv6（可 mapped）",
    "bannerHint": "連線成功後客戶端可見的歡迎字串",
    "pasvStart": "PASV 起始埠",
    "pasvStartHint": "被動模式資料通道起始",
    "customStart": "自訂起始",
    "pasvEnd": "PASV 結束埠",
    "pasvEndHint": "需 ≥ 起始埠；防火牆需放行此範圍",
    "openFirewallPage": "打開防火牆頁",
    "customEnd": "自訂結束",
    "pasvPublicIp": "PASV 公網 IP",
    "detectPublicIp": "偵測公網 IP",
    "detectPublicIpTitle": "填入本機第一個非回環 IPv4",
    "pasvPublicIpHint": "NAT／雲主機可填公網 IP；本機可留空",
    "pasvIpRequired": "套用前請填 PASV 公網 IP（NAT／雲主機）。可偵測或人手輸入。",
    "optionalEmpty": "（可留空）",
    "securityTitle": "安全設定",
    "securityDesc": "TLS、寫入權限與 chroot；變更後請套用並重啟才會生效",
    "sslCertDomain": "SSL 憑證域名",
    "sslCertDomainHint": "選已上傳／申請的憑證網域",
    "enableFtps": "啟用 FTPS（SSL/TLS）",
    "enableFtpsDesc": "以 TLS 加密控制通道；建議開啟",
    "forceTlsLogin": "強制 TLS 登入",
    "forceTlsLoginDesc": "拒絕明文 FTP；需客戶端支援 FTPS",
    "allowWriteDesc": "關閉則帳戶僅能下載／列目錄",
    "chrootUsers": "Chroot 用戶",
    "chrootUsersDesc": "登入後鎖在家目錄，無法瀏覽系統其他路徑",
    "writableChroot": "允許可寫 chroot",
    "writableChrootDesc": "家目錄可寫時仍啟用 chroot（vsftpd 常見需求）",
    "settingsSaved": "已儲存設定",
    "installIncomplete": "無法完成安裝",
    "ftpsReady": "FTPS 已就緒",
    "settingsApplied": "已套用設定",
    "opsResult": "操作結果",
    "saved": "已儲存",
    "accountsList": "帳戶列表",
    "accountsListDesc": "建立後按「套用」同步到 vsftpd。若尚未安裝，請到「軟件」分頁安裝 vsftpd。",
    "startService": "啟動。",
    "createAccountPlus": "+ 建立帳戶",
    "noFtpAccounts": "尚未有 FTP 帳戶",
    "noFtpAccountsDesc": "用列表右上角「建立帳戶」新增；可指定家目錄與網域，再套用到系統。",
    "applyHint": "提示：套用只寫入管理設定；真正聽埠需 vsftpd 服務為 active。",
    "sshdMatchNote": "；系統 sshd Match 設定後才真正生效。",
    "addPubkeyPlus": "+ 新增公鑰",
    "noPubkeys": "尚未登記公鑰",
    "pickDomain": "— 選擇網域 —",
    "currentDomain": "{{domain}}（目前）",
    "pickHome": "— 選擇家目錄 —",
    "currentHome": "{{path}}（目前）",
    "fullPath": "完整路徑：",
    "emptyHomes": "若清單為空，請先建立專案或站點以產生家目錄選項。",
    "pickAccount": "— 選擇帳戶 —",
    "installFtpsBanner": "請使用上方橫幅「一鍵安裝」安裝 FTPS，完成後再啟動服務。",
    "applyRestart": "套用並重啟",
    "afterInstall": "安裝後即可使用 FTPS 帳戶登入。需系統管理員權限才能完成安裝。",
    "saveSettings": "儲存設定",
    "saveApplyHint": "儲存只更新面板設定；「套用並重啟」才寫入 vsftpd.設定檔 並重載服務。",
    "installAndStart": "安裝並啟動",
    "manageAccounts": "帳戶",
    "openFirewallPorts": "開防火牆埠",
    "firewallPortsApplied": "已放行 TCP {{ports}}",
    "sftpTabDesc": "為 FTP 帳戶登記 SSH 公鑰，以便用 SFTP 免密登入。請先選帳戶、貼上公鑰一行，再儲存。",
    "sftpNeedAccountTitle": "尚無 FTP 帳戶",
    "sftpNeedAccount": "請先建立至少一個 FTP 帳戶，再為該用戶登記公鑰。",
    "sftpFilterLabel": "帳戶",
    "sftpFilterAll": "全部帳戶",
    "sftpKeyCount": "{{count}} 枚公鑰",
    "sftpEmptyFiltered": "此帳戶尚未有公鑰",
    "sftpEmptyFilteredDesc": "「{{user}}」還沒有登記的 SSH 公鑰。",
    "sftpRegister": "登記公鑰",
    "sftpAddedAt": "新增於 {{time}}",
    "sftpTechSummary": "技術細節（進階）",
    "sftpTechNote": "公鑰會寫入管理路徑",
    "filterProject": "只顯示此專案的 FTP 帳戶",
    "clearProjectFilter": "顯示全部帳戶",
    "vsftpdFailedHint": "vsftpd 服務失敗。請到服務分頁查看設定與日誌（listen 與 listen_ipv6 不可同時為 YES）。",
    "vsftpdFailedGeneric": "vsftpd 服務失敗。請到服務分頁查看現行設定與日誌。",
    "stateFailed": "啟動失敗",
    "tabService": "服務"
  },
  "geo": {
    "continents": {
      "AS": "亞洲",
      "EU": "歐洲",
      "NA": "北美洲",
      "SA": "南美洲",
      "AF": "非洲",
      "OC": "大洋洲",
      "AN": "南極洲"
    },
    "countries": {
      "CN": "中國",
      "HK": "香港",
      "MO": "澳門",
      "TW": "台灣",
      "JP": "日本",
      "KR": "南韓",
      "KP": "北韓",
      "SG": "新加坡",
      "MY": "馬來西亞",
      "TH": "泰國",
      "VN": "越南",
      "PH": "菲律賓",
      "ID": "印尼",
      "IN": "印度",
      "AU": "澳洲",
      "NZ": "紐西蘭",
      "US": "美國",
      "CA": "加拿大",
      "MX": "墨西哥",
      "BR": "巴西",
      "AR": "阿根廷",
      "GB": "英國",
      "IE": "愛爾蘭",
      "DE": "德國",
      "FR": "法國",
      "NL": "荷蘭",
      "BE": "比利時",
      "CH": "瑞士",
      "AT": "奧地利",
      "SE": "瑞典",
      "NO": "挪威",
      "DK": "丹麥",
      "FI": "芬蘭",
      "PL": "波蘭",
      "CZ": "捷克",
      "ES": "西班牙",
      "PT": "葡萄牙",
      "IT": "意大利",
      "RU": "俄羅斯",
      "UA": "烏克蘭",
      "TR": "土耳其",
      "IL": "以色列",
      "AE": "阿聯酋",
      "SA": "沙特",
      "EG": "埃及",
      "ZA": "南非",
      "NG": "尼日利亞",
      "PK": "巴基斯坦",
      "BD": "孟加拉",
      "IR": "伊朗",
      "IQ": "伊拉克",
      "RO": "羅馬尼亞",
      "BG": "保加利亞",
      "HU": "匈牙利",
      "GR": "希臘",
      "LT": "立陶宛",
      "LV": "拉脫維亞",
      "EE": "愛沙尼亞",
      "BY": "白俄羅斯",
      "KZ": "哈薩克",
      "UZ": "烏茲別克",
      "CL": "智利",
      "CO": "哥倫比亞",
      "PE": "秘魯",
      "VE": "委內瑞拉",
      "CU": "古巴",
      "SC": "塞舌爾",
      "PA": "巴拿馬"
    },
    "regions": {
      "CN-BJ": "北京",
      "CN-SH": "上海",
      "CN-TJ": "天津",
      "CN-CQ": "重慶",
      "CN-GD": "廣東",
      "CN-ZJ": "浙江",
      "CN-JS": "江蘇",
      "CN-SD": "山東",
      "CN-HN": "河南",
      "CN-HB": "湖北",
      "CN-HU": "湖南",
      "CN-SC": "四川",
      "CN-HE": "河北",
      "CN-FJ": "福建",
      "CN-AH": "安徽",
      "CN-JX": "江西",
      "CN-LN": "遼寧",
      "CN-JL": "吉林",
      "CN-HL": "黑龍江",
      "CN-SX": "山西",
      "CN-SN": "陝西",
      "CN-GS": "甘肅",
      "CN-QH": "青海",
      "CN-HA": "海南",
      "CN-YN": "雲南",
      "CN-GZ": "貴州",
      "CN-GX": "廣西",
      "CN-NX": "寧夏",
      "CN-XJ": "新疆",
      "CN-XZ": "西藏",
      "CN-NM": "內蒙古",
      "TW-TPE": "台北",
      "TW-TXG": "台中",
      "TW-KHH": "高雄",
      "HK-HK": "香港",
      "MO-MO": "澳門",
      "US-CA": "California",
      "US-NY": "New York",
      "US-TX": "Texas",
      "US-FL": "Florida",
      "US-WA": "Washington",
      "US-IL": "Illinois",
      "US-VA": "Virginia",
      "US-OR": "Oregon",
      "US-GA": "Georgia",
      "US-NJ": "New Jersey",
      "US-MA": "Massachusetts",
      "US-OH": "Ohio",
      "US-PA": "Pennsylvania",
      "US-AZ": "Arizona",
      "US-CO": "Colorado",
      "US-NC": "North Carolina",
      "US-MI": "Michigan",
      "US-NV": "Nevada",
      "JP-13": "東京",
      "JP-27": "大阪",
      "JP-14": "神奈川",
      "JP-23": "愛知",
      "KR-11": "首爾",
      "KR-26": "釜山",
      "SG-01": "Singapore",
      "AU-NSW": "New South Wales",
      "AU-VIC": "Victoria",
      "GB-ENG": "England",
      "DE-BE": "Berlin",
      "DE-BY": "Bayern",
      "RU-MOW": "Moscow",
      "RU-SPE": "St Petersburg"
    }
  },
  "hostBrowse": {
    "tabBrowse": "主機瀏覽",
    "subtitle": "經主機出站代理瀏覽外網或內網；目標站不會看見你本機瀏覽器身分。",
    "modeInternet": "外網",
    "modeIntranet": "內網",
    "modeHint": "外網會拒絕私網 IP；內網可開啟 LAN。兩者均拒絕 cloud metadata。",
    "urlPlaceholder": "https://example.com 或 192.168.1.1",
    "go": "前往",
    "back": "返回",
    "forward": "前進",
    "reload": "重新整理",
    "stop": "停止",
    "clearCookies": "清除 Cookie",
    "clearCookiesConfirm": "這會清除此代瀏覽工作階段在主機上的 Cookie。已登入的網站需要重新登入。",
    "closeSession": "關閉工作階段",
    "copyUrl": "複製網址",
    "newSession": "新工作階段",
    "privacyOn": "私隱代瀏覽",
    "viaHost": "經主機",
    "emptyTitle": "主機代瀏覽",
    "emptyBody": "請輸入網址。DNS、TLS 與出站由本伺服器處理，而非你的桌面瀏覽器。Cookie 僅存於伺服器 jar。",
    "needUrl": "請先於上方輸入網址開始工作階段。",
    "ssrfBlocked": "已由安全政策攔截（SSRF／模式）",
    "loadFailed": "主機擷取失敗",
    "sessionReady": "工作階段就緒",
    "noSession": "尚未建立工作階段",
    "statusLine": "{{status}} · {{ms}}ms · {{type}} · 經主機",
    "cookies": "Cookie",
    "latency": "延遲",
    "locked": "HTTPS",
    "insecure": "HTTP",
    "loading": "載入中…",
    "modeSwitchHint": "切換模式會開啟新工作階段並清除 Cookie。",
    "copied": "已複製網址",
    "downloadHint": "非 HTML 回應 — 請查看內容框或重新導航。",
    "engineLabel": "引擎",
    "engineProxy": "代理",
    "engineBrowser": "真實瀏覽器",
    "engineSwitchHint": "切換引擎會開啟新工作階段。",
    "needChrome": "真實瀏覽器需要系統 Chrome／Chromium（或於設定指定路徑）。否則請使用代理模式。",
    "engineBrowserNeedChrome": "真實瀏覽器（未安裝 Chrome）",
    "egressHint": "目標站會看見此伺服器的出站位址（{{host}}），不是你本機。Cookie 留在伺服器工作階段。",
    "needChromeFallback": "Chrome 不可用 — 已切換至代理引擎。",
    "liveError": "即時串流失敗",
    "liveWaiting": "正在連線至主機瀏覽器…",
    "tabSettings": "設定",
    "softwareNeeded": "真實瀏覽器引擎需要 Chromium／Chrome",
    "softwareHint": "一鍵經 apt 安裝發行版 Chromium。若已安裝 Google Chrome 亦會自動偵測。需要超級用戶與系統變更權限。",
    "closeNoSession": "尚未建立工作階段",
    "goInstallChrome": "前往軟件分頁",
    "settingsIntro": "以下面板設定會覆寫主機瀏覽相關環境變數。",
    "settingsEngine": "預設引擎",
    "engineAuto": "自動",
    "settingsChromePath": "Chrome／Chromium 路徑",
    "settingsChromePathHint": "留空 = 自動偵測。例如 /usr/bin/google-chrome",
    "settingsLoopback": "內網模式允許 loopback（127.0.0.1）",
    "settingsNoSandbox": "Chromium --no-sandbox（僅限 container）",
    "settingsSave": "儲存設定",
    "settingsSaved": "主機瀏覽設定已儲存",
    "envHintsTitle": "程序環境變數（唯讀；面板已設定時優先採用面板值）",
    "stream": {
      "label": "畫質",
      "smooth": "流暢",
      "balanced": "均衡",
      "sharp": "高清"
    },
    "zoom": {
      "label": "縮放",
      "fit": "適合窗口",
      "fill": "填滿"
    },
    "retryNav": "重試導航",
    "retryLive": "重連畫面",
    "tryProxy": "改用代理引擎",
    "err": {
      "LIVE_NO_FRAME": "畫面串流逾時：尚未收到主機畫面。請重連畫面或重試導航。",
      "LIVE_WS_FAIL": "即時連線失敗。請重連畫面。",
      "SSRF_BLOCKED": "目標位址已被安全政策攔截。",
      "BOT_CHALLENGE": "目標頁面可能要求人機驗證或阻擋自動化瀏覽；請在畫面上完成驗證，或改用其他網絡。",
      "TIMEOUT": "載入逾時。請重試。",
      "DNS_FAIL": "網域名稱解析失敗。",
      "TLS_FAIL": "安全連線（TLS）失敗。",
      "NAV_FAIL": "導航失敗。",
      "CHROME_LAUNCH": "無法啟動主機 Chromium。請檢查軟件安裝與 no-sandbox 設定。",
      "SESSION_GONE": "工作階段已失效。請重新前往。",
      "NEED_CHROME": "需要安裝 Chrome／Chromium。"
    },
    "home": "主頁",
    "bookmark": "書籤",
    "bookmarkAdd": "加入或移除書籤",
    "bookmarkList": "書籤清單",
    "bookmarks": "書籤",
    "history": "瀏覽記錄",
    "bookmarkToggled": "已更新書籤",
    "newTab": "新分頁",
    "fullscreen": "全螢幕",
    "mediaNote": "真實瀏覽器：視訊會串流到面板。在設定啟用音訊橋接即可聽到頁面聲音（需使用者操作）。",
    "isolationNote": "真實瀏覽器會建立臨時 Linux 用戶隔離 Chrome；離開頁面或逾時會結束並刪除該用戶。",
    "resumeHint": "可恢復上次瀏覽（{{count}} 個分頁）",
    "resumeHintDetail": "可恢復上次瀏覽（{{count}} 個分頁）· {{url}} · {{when}}",
    "resumeHintOwned": "可恢復 {{user}} 上次瀏覽（{{count}} 個分頁）· {{url}} · {{when}}",
    "clearSessionData": "清除工作階段資料",
    "clearSessionConfirm": "這會捨棄上一工作階段的還原快照，之後不能還原那些分頁。",
    "resume": "恢復",
    "resumeDismiss": "關閉",
    "resumeDone": "已恢復工作階段",
    "settingsSafety": "瀏覽安全",
    "settingsSafetyHint": "嚴格會封鎖更多高風險主機；寬鬆允許更廣的內網目標。不會關閉雲端中繼資料的 SSRF 防護。",
    "safetyStrict": "嚴格",
    "safetyStandard": "標準",
    "safetyRelaxed": "寬鬆",
    "settingsBlockHosts": "封鎖主機後綴",
    "settingsBlockHostsHint": "每行一個主機名稱或後綴（例如 malware.test）。精確與後綴符合均會封鎖。",
    "settingsAllowDangerousDownloads": "允許高風險下載（執行檔／腳本）",
    "settingsAudioBridge": "將頁面音訊橋接到面板",
    "settingsAudioBridgeHint": "把主機 Chrome 音訊串流到此瀏覽器。部分網站需點選才能解鎖播放。",
    "downloads": "下載",
    "downloadsEmpty": "此工作階段尚無下載",
    "downloadReady": "就緒",
    "downloadBlocked": "已封鎖",
    "downloadPending": "處理中",
    "downloadFailed": "失敗",
    "downloadSave": "儲存",
    "audioUnlock": "啟用聲音",
    "audioUnlockHint": "點選以解鎖此分頁音訊播放",
    "audioUnlocked": "音訊已解鎖",
    "audioPlaying": "正在播放音訊",
    "audioNeedsUnlock": "音訊需解鎖",
    "audioBridgedHint": "頁面音訊已由主機瀏覽器橋接",
    "audioNotBridged": "音訊關閉",
    "audioNotBridgedHint": "在設定中開啟音訊橋接即可聽到頁面聲音",
    "mediaPolicyTitle": "真實瀏覽器媒體",
    "mediaVideoLabel": "視訊",
    "mediaVideoDesc": "在主機上算圖，再以畫面串流到面板。",
    "mediaAudioLabel": "音訊",
    "mediaAudioDesc": "可選用來自主機 Chrome 的橋接；可能需要解鎖點選。",
    "mediaPolicyLabel": "政策",
    "mediaPolicyDesc": "下載與自動播放遵循上方安全與下載設定。",
    "frameBlocked": "頁面無法在面板框架內顯示。",
    "historyEmpty": "此工作階段尚無瀏覽記錄。",
    "bookmarksEmpty": "尚未有書籤。",
    "closeSessionHint": "會清掉此瀏覽工作階段的 Cookie；書籤會保留。",
    "envUnset": "未設定",
    "envPanelValue": "面板：{{value}}",
    "envColVar": "變數",
    "envColHost": "主機程序",
    "envColPanel": "面板設定",
    "envColEffective": "生效值",
    "settingsNoSandboxWarn": "會關閉 Chromium 沙箱。只應在可信的 container 內使用。下次真實瀏覽器工作階段才生效。",
    "settingsDangerDlWarn": "允許經主機瀏覽器下載執行檔與腳本。請確認確實需要。",
    "settingsDangerConfirmTitle": "啟用高風險瀏覽設定？"
  },
  "legal": {
    "hubTitle": "法律文件",
    "hubSub": "YSK Server 的使用條款、私隱政策與免責聲明",
    "terms": "使用條款",
    "privacy": "私隱政策",
    "disclaimer": "免責聲明",
    "updated": "最後更新日期：{{date}}",
    "englishPrevails": "正式語言為英文及香港書面中文。如有歧義，以英文為準。",
    "notOfficialLocale": "你的介面語言並非正式法律語言。除非你切換，以下具約束力的文本為英文。",
    "officialLang": "正式文本",
    "officialEn": "English",
    "officialZh": "繁體中文（香港）",
    "signIn": "登入",
    "mitNote": "原始碼以 MIT 授權。本頁為額外使用條件。",
    "backToIndex": "全部法律文件"
  },
  "listToolbar": {
    "searchPlaceholder": "搜尋…",
    "searchAria": "搜尋列表",
    "clearSearch": "清除搜尋",
    "clearAll": "清除篩選",
    "resultCount": "{{count}} 項結果",
    "showingOf": "顯示 {{shown}} / {{total}}",
    "activeFilters": "已套用 {{count}} 個篩選",
    "noResults": "無符合結果",
    "noResultsHint": "試下其他關鍵字，或者清除篩選。",
    "searching": "搜尋中…",
    "emptyChip": "此篩選沒有項目"
  },
  "logViewer": {
    "banIpTitle": "到防護中心封鎖 {{ip}}",
    "filter": "篩選",
    "filterPh": "關鍵字",
    "levels": "級別",
    "wrap": "換行",
    "follow": "跟隨",
    "download": "下載",
    "nextError": "下一則錯誤",
    "prevError": "上一則錯誤",
    "lines": "{{n}} 行",
    "shown": "顯示 {{n}}",
    "errors": "錯誤 {{n}}",
    "warnings": "警告 {{n}}",
    "all": "全部",
    "empty": "沒有日誌行"
  },
  "login": {
    "title": "登入 YSK Server",
    "subtitle": "伺服器控制台",
    "username": "用戶名",
    "password": "密碼",
    "submit": "登入控制台",
    "failed": "登入失敗，請檢查帳號或密碼",
    "footer": "產品由 YSK Limited 提供",
    "totpRequired": "此帳戶已開啟 雙重驗證，請輸入 6 位驗證碼",
    "totpLabel": "雙重驗證碼",
    "totpHint": "Authenticator 應用程式中的 6 位數字",
    "submitting": "登入中…",
    "sessionExpired": "登入已失效，請重新登入",
    "newPassword": "新密碼",
    "newPasswordAgain": "再次輸入新密碼",
    "changePassword": "更改密碼",
    "passwordMismatch": "兩次輸入的密碼不一致",
    "passwordChanged": "密碼已更新"
  },
  "logs": {
    "catSystem": "系統檔",
    "catMail": "郵件",
    "catSecurity": "安全",
    "catApp": "應用",
    "catOther": "其他",
    "journalService": "系統日誌 服務",
    "unavailable": "不可用",
    "compressed": "· 壓縮",
    "noLogFileYet": "（尚未有 日誌 檔）",
    "afterDeploy": "部署後會出現",
    "logsLoaded": "已載入日誌",
    "sseFailed": "SSE 串流失敗，改用輪詢",
    "sseInterrupted": "SSE 中斷",
    "settingsSaved": "設定已儲存",
    "exportedJsonl": "已匯出 JSONL",
    "exported": "已匯出",
    "bookmarkSaved": "已存書籤",
    "title": "日誌中心",
    "fullAccess": "完整權限",
    "nonRoot": "非 管理員",
    "noExecute": "無 執行",
    "error": "錯誤",
    "projectLog": "專案 日誌",
    "filesCount": "{{count}} 檔",
    "tabExplore": "探索",
    "tabMaint": "維護",
    "tabSettings": "設定",
    "tabAbout": "說明",
    "sources": "日誌來源",
    "filterPlaceholder": "篩選 服務單元 / 檔案…",
    "filterSources": "篩選來源",
    "noProjectLogs": "未發現專案 日誌 — 部署專案後會出現",
    "noMatchSources": "無匹配來源",
    "projectPrefix": "專案 ·",
    "timeRange": "時間範圍",
    "unlimited": "不限",
    "priority": "優先級",
    "all": "全部",
    "keywordIp": "關鍵字 / IP…",
    "custom": "自訂",
    "copied": "已複製",
    "truncated": "· 已截斷",
    "following": "· 跟隨中",
    "followingSse": "· 跟隨中 (SSE)",
    "loadingSources": "載入來源中…",
    "pickSource": "選左側來源，或按快捷 · 再按「查詢」",
    "maintOverview": "維護概況",
    "executable": "可執行",
    "restricted": "受限",
    "needRootExecute": "需要管理員權限+執行",
    "retention": "保留時間",
    "retentionHint": "例 7d · 14d · 30d",
    "defaultLines": "預設行數",
    "followInterval": "跟隨間隔",
    "maxBytes": "最大字節",
    "maskSecrets": "遮罩 secret",
    "defaultVacuumDays": "預設 清理 天數",
    "d7": "7 日",
    "d14": "14 日",
    "d30": "30 日",
    "d90": "90 日",
    "journalAlerts": "系統日誌 告警",
    "autoVacuum": "自動 清理",
    "deleted": "已刪",
    "bookmarkDeleted": "已刪書籤",
    "opsResult": "操作結果",
    "saveBookmark": "儲存書籤",
    "bookmarkNamePrompt": "為目前查詢條件命名",
    "query": "查詢",
    "follow": "跟隨",
    "export": "匯出",
    "vacuum": "清理（Vacuum）",
    "loadFailed": "載入失敗",
    "projectLogsLink": "專案 → 日誌",
    "projectLogsDesc": "— 單站快捷 + 深鏈",
    "queryFollow": "查詢與跟隨",
    "queryFollowDesc": "探索頁預設行數、跟隨節奏、回應上限",
    "retentionAlerts": "保留與告警",
    "retentionAlertsDesc": "清理 預設、系統日誌 磁碟告警、自動清理時間窗",
    "dailyNeedRoot": "每日（需要管理員權限 + 執行）",
    "customAllow": "自訂 allow 路徑",
    "customAllowDesc": "僅 /var/log 或 /run/log · 拒絕 .ssh、金鑰、/etc",
    "pathsCount": "{{n}} 條",
    "noCustomPaths": "尚未加入自訂路徑",
    "bookmarks": "書籤",
    "bookmarksDesc": "探索頁常用過濾；開啟會切回探索並套用來源",
    "noBookmarks": "尚未有書籤 — 在探索頁查詢後按「書籤」儲存",
    "settingsWriteNote": "設定寫入面板 資料庫；自動 清理 由排程每 15 分鐘檢查時間窗。",
    "saveSettings": "儲存設定",
    "vacuumDaysQ": "清理 時間 {{days}}？",
    "vacuumSizeQ": "清理 大小 500M？",
    "vacuumDesc": "journalctl 清理會刪除舊日誌，不可復原。",
    "vacuumRequested": "已請求 清理",
    "vacuumSizeRequested": "已請求 清理 size",
    "scLogs": "觀測 系統日誌／檔案／專案",
    "scProtection": "攻擊應變、自動 封鎖（點 IP）",
    "shortcuts": "快捷",
    "projectsOnly": "只顯示專案",
    "filesTitle": "{{n}} 檔",
    "bookmarksLabel": "書籤",
    "filter": "篩選",
    "followSec": "跟隨 {{sec}}s",
    "wrap": "換行",
    "bookmark": "書籤",
    "standby": "待命",
    "partialFail": "部分／失敗",
    "lines": "{{n}} 行",
    "followingSseDyn": "· 跟隨中{{sse}}",
    "ipBan": "IP → 封禁",
    "vacuumNote": "釋放 systemd-journald 佔用的磁碟。沒有系統變更權限時會封鎖，不會假裝成功。",
    "vacuumTime": "依保留時間清理",
    "vacuumNeedRetention": "請先填寫保留時間（例如 14d）",
    "vacuumNeedConfirm": "需確認 — 會刪除舊 journal 日誌",
    "vacuumSizeNeedConfirm": "需確認 — 會限制 journal 磁碟用量",
    "vacuumHint": "建議保留 ≥7 日；操作後重新探測磁碟用量。",
    "logrotateStatus": "系統 logrotate 狀態（唯讀探測）",
    "logrotateMissing": "無 狀態 檔或不可讀 — 可於服務矩陣檢查 logrotate 套件",
    "relatedOps": "相關運維",
    "relatedOpsDesc": "日誌觀測 vs 攻擊應變分工",
    "scLogsLine": "觀測 系統日誌／檔案／專案",
    "scProtLine": "攻擊應變、自動 封鎖（點 IP）",
    "journalVacuumTitle": "清理 journald 磁碟",
    "journalSection": "journal",
    "sseLabel": "SSE",
    "logrotateLabel": "對數旋轉",
    "srcNginx": "nginx",
    "srcSsh": "ssh",
    "srcfail2ban": "fail2ban",
    "srcFail2ban": "fail2ban",
    "srcAuthLog": "驗證日誌",
    "srcNginxError": "Nginx 錯誤日誌",
    "srcLetsEncrypt": "Let’s Encrypt 憑證日誌",
    "groupJournal": "journal",
    "groupVarLog": "/var/log",
    "prioErr": "錯誤+",
    "prioWarn": "警告+",
    "prioInfo": "資訊+",
    "vacuumSize": "限制至 500 MB",
    "logrotateNoStatus": "尚未有 logrotate 狀態檔（從未跑過時屬常見）。",
    "autoVacuumOff": "自動清理未啟用。啟用前時間設定不會執行。",
    "aboutAllowlist": "探索只可讀取允許清單內的 journal 單元與 /var/log 路徑，不會提供任意主機路徑。",
    "aboutCustomPath": "請在「設定」加入自訂路徑（僅限 /var/log 或 /run/log），再到「探索」開啟。",
    "noRowsInWindow": "此時間窗內無記錄",
    "showInactiveUnits": "顯示未啟動的服務單元",
    "sseNeedFollow": "請先開啟跟隨 — SSE 只用於即時尾隨",
    "vacuumSizeAlreadyBelow": "目前用量已低於上限，此操作不會刪除任何內容",
    "vacuumSizeNoopDesc": "journal 已低於 500 MB。確認後仍會執行 vacuum --size=500M，通常不會刪除任何內容。",
    "journalDiskHint": "systemd-journald 目前用量（現行 journal）。不包括 /var/log 下已輪轉的檔案。",
    "varLogDiskHint": "/var/log 估計用量（含已輪轉檔），屬約數。",
    "queryFirst": "請先查詢",
    "errorsWindowHint": "上次概覽探測的近期錯誤（切換分頁不會重算）",
    "sourceCount": "顯示 {{shown}}",
    "sourceUnavailable": "此來源尚未產生日誌",
    "sourceNoLog": "尚無日誌",
    "projectSourcesTitle": "{{n}} 個來源（檔案 + journal）",
    "logrotatePath": "路徑",
    "logrotateLast": "上次輪轉",
    "exportJsonl": "匯出 JSONL",
    "sseLive": "（即時串流）",
    "logrotateExpand": "再顯示 {{n}} 項",
    "logrotateCollapse": "收合",
    "logrotateVersion": "狀態版本 {{v}}"
  },
  "metrics": {
    "alert": {
      "memory_high": "記憶體偏高",
      "load_high": "負載偏高",
      "disk_high": "磁碟偏高"
    },
    "loadFailed": "載入指標失敗",
    "projectUsageFailed": "專案用量載入失敗",
    "procListFailed": "進程列表失敗",
    "streamEnded": "stream 已結束（{{reason}}）",
    "streamOpenFailed": "無法開啟 stream",
    "signalFailed": "訊號失敗",
    "detailFailed": "無法載入詳情",
    "alertCount": "{{count}} 則告警",
    "attention": "需留意",
    "normal": "正常",
    "disk": "磁碟",
    "alerts": "告警",
    "auto5s": "自動 5s",
    "hostSettings": "主機設定",
    "loading": "載入指標…",
    "tabs": {
      "overview": "概覽",
      "live": "即時進程",
      "disk": "磁碟",
      "projectUsage": "專案用量",
      "alerts": "告警"
    },
    "load": "負載",
    "load1m": "負載 1 分鐘",
    "uptime": "運行時間",
    "filterCpu5": "≥5% CPU",
    "filterMem5": "≥5% 記憶體",
    "signalHint": "先勾選進程，再送 TERM 或 KILL。",
    "signalFromRow": "選取此進程以便送訊號",
    "selectForSignal": "選取",
    "forceKillTitleNamed": "KILL PID {{pid}}（{{cmd}}）？",
    "sendSigTitleNamed": "向 PID {{pid}}（{{cmd}}）送 TERM？",
    "min1": "1 分",
    "min5": "5 分",
    "min15": "15 分",
    "loadHint": "相對 {{cpus}} CPU；高於 1.0× 表示可能排隊。",
    "memory": "記憶體",
    "total": "總量",
    "available": "可用",
    "mainDisk": "主磁碟",
    "path": "路徑",
    "diskReadFail": "無法讀取磁碟",
    "viewAllMounts": "查看全部 {{count}} 個 mount →",
    "nAlerts": "{{count}} 告警",
    "details": "詳情",
    "noThresholdAlerts": "目前無記憶體／負載／磁碟閾值告警",
    "projectDisk": "專案磁碟（真實 du）",
    "viewAllProjectUsage": "查看全部專案用量 →",
    "loadProjectDisk": "載入專案磁碟用量（真實 du）→",
    "followSse": "跟隨（SSE）",
    "interval": "間隔",
    "sort": "排序",
    "rows": "行數",
    "onceQuery": "單次查詢",
    "procSearchPh": "搜尋 PID / 用戶 / COMMAND",
    "procSearchAria": "搜尋進程",
    "filterAll": "全部",
    "filterMine": "非系統",
    "selectedN": "選中 {{count}}",
    "showOf": "· 顯示 {{shown}}/{{total}}",
    "topLoading": "載入 top 摘要中…（/proc/stat 雙樣本）",
    "topAria": "top 摘要",
    "perCore": "每核",
    "noPerCore": "無每核資料",
    "uptimeDays": "{{d}} 日，{{h}}:{{m}}",
    "used": "已用",
    "free": "空閒",
    "signal": "訊號",
    "kill": "結束",
    "send": "送出",
    "procDetail": "進程詳情",
    "refreshProc": "重新整理進程",
    "noProcs": "沒有進程",
    "noProcsFilter": "沒有符合篩選的進程",
    "mounts": "掛載點",
    "fs": "檔案系統",
    "mount": "掛載",
    "size": "容量",
    "usage": "用量",
    "project": "專案",
    "quota": "配額",
    "ratio": "佔比",
    "unlimited": "無限制",
    "noProjects": "尚無專案",
    "noProjectsDesc": "建立專案後可在此看真實 主目錄 用量",
    "usageNote": "用量來自本機 du（非估算）。配額為控制面 soft limit；硬 setquota 需「套用限制到系統」。",
    "thresholdAlerts": "閾值告警",
    "alertsBuiltinOnly": "只有內建 CPU／記憶體／磁碟閾值。沒有電郵、webhook 或 Slack 渠道。",
    "lastEvaluated": "上次檢查",
    "alertsOkTitle": "目前正常",
    "alertsOkDesc": "沒有記憶體／負載／磁碟閾值告警。",
    "cpu": "中央處理器",
    "command": "指令",
    "user": "用戶",
    "clearSelection": "清除選取",
    "batchSignal": "批量訊號",
    "liveHint": "即時進程列表（SSE 或輪詢）。訊號需 管理員權限與系統變更權限。",
    "signalTo": "訊號 {{sig}} → PID {{pid}}",
    "procAlive": "進程仍在（kill -0 成功）",
    "procGone": "進程已結束",
    "procTable": "進程 ({{count}}{{more}})",
    "procTableDesc": "ps 列表 · 勾選後可 TERM/KILL（需 系統變更權限）",
    "selectAllAria": "全選篩選結果",
    "selectPidAria": "選取 PID {{pid}}",
    "controlPlane": "控制面",
    "controlPlaneNoSignal": "不可對控制面進程送出訊號",
    "protectedPid": "面板不可向 PID 1／init／systemd 發送訊號",
    "sigTermTitle": "發送 SIGTERM（請進程自行結束）",
    "sigKillTitle": "發送 SIGKILL（強制結束，無法攔截）",
    "batchTerm": "TERM",
    "batchKill": "殺",
    "rawTopLabel": "原始 top（未翻譯）",
    "followSseLabel": "跟隨（即時串流）",
    "alertsReadOnly": "只有內建 CPU／記憶體／磁碟閾值。沒有電郵、webhook 或 Slack 渠道。",
    "alertsGoNotifications": "前往通知中心",
    "lastCheck": "上次檢查",
    "rawTopHint": "未翻譯的 top(1) 輸出",
    "detailShort": "詳",
    "procUnavailable": "無法取得進程",
    "noProcData": "尚無進程資料",
    "noProcFilter": "無符合篩選的進程",
    "clickOnceOrFollow": "按「單次查詢」或開跟隨",
    "liveFootnote": "等同 遠端登入 top：/proc/stat 雙樣本算 %Cpu（開「每核」= top 按 1）、Mem/Swap、Tasks；進程表來自 ps。不是互動 PTY。Kill 需 系統變更權限；PID 1 與控制面預設保護。",
    "forceKillTitle": "強制結束 PID {{pid}}（SIGKILL）",
    "sendSigTitle": "向 PID {{pid}} 發送 SIG{{sig}}",
    "forceKillDesc": "無法攔截，可能丟數據。指令：{{cmd}}",
    "termDesc": "進程可自行清理後退出。指令：{{cmd}}",
    "forceKillBtn": "強制 KILL",
    "sendTermBtn": "發送 TERM",
    "procPidTitle": "進程 PID {{pid}}",
    "readingProc": "讀取 /proc…",
    "applyRenice": "套用 renice",
    "reniceHint": "-20 最高優先 · 19 最低（需 執行）",
    "noData": "無資料",
    "shareOfMeasured": "佔已量度 {{pct}}%",
    "mountsTitle": "磁碟 mounts ({{count}})",
    "mountsDesc": "真實磁碟用量（已過濾暫存檔系統）",
    "noMounts": "無 mount 列表",
    "noMountsDesc": "df 不可用或被過濾。主磁碟仍見於概覽。",
    "seeProjectUsage": "專案主目錄用量見「專案用量」分頁（真實 du · 共 {{size}}）",
    "measuringDu": "量測專案 主目錄（du）…",
    "projectUsageTitle": "專案磁碟用量 ({{count}})",
    "projectUsageDesc": "真實 du · 合計 {{total}} · {{at}}",
    "projectUsageDescEmpty": "對各專案 home_dir 執行 du",
    "remeasure": "重新量測",
    "usageNoteFull": "用量來自本機 du（非估算）。配額為控制面 soft limit；硬 setquota 需「套用限制到系統」。",
    "sseNeedLogin": "未登入，無法開啟 SSE",
    "sseSessionExpired": "未登入或 工作階段 失效，無法開啟 SSE",
    "sseHttpError": "串流 HTTP {{status}}",
    "colFilesystem": "檔案系統",
    "colMount": "掛載點",
    "colSize": "容量",
    "colUsed": "已用",
    "colAvail": "可用",
    "colUsePct": "使用率",
    "colHome": "主目錄",
    "usageNoteLink": "配額是控制面軟上限。要套用硬限制請到專案「隔離」分頁。",
    "shareNoQuotaHint": "未設配額，故無佔比。請到專案「隔離」分頁設定配額。",
    "setQuotaLink": "設定配額",
    "unusualHome": "非標準路徑",
    "unusualHomeHint": "不是 /home/… 專案主目錄。標準隔離路徑為 /home/ysk-server-{id}。"
  },
  "migrate": {
    "tabInventory": "盤點",
    "tabTarget": "目標",
    "tabRun": "執行",
    "tabDone": "完成",
    "refreshFailed": "重新整理失敗",
    "migrateIncomplete": "遷移未完成",
    "requestFailed": "遷移請求失敗",
    "title": "整機遷移",
    "subtitle": "來源控制面 → 新機全量複製。完成後只改公網 IP／DNS，帳號、路徑與專案保持一致。",
    "inventorying": "盤點中",
    "inventoried": "已盤點",
    "inventoriedWarn": "已盤點 · {{n}} 警告",
    "inventoriedOrphans": "已盤點 · {{n}} 個孤立主目錄",
    "inventoriedWarnAndOrphans": "已盤點 · {{w}} 則警告 · {{n}} 個孤立主目錄",
    "inventoryFailed": "盤點失敗",
    "pendingInventory": "待盤點",
    "projects": "專案",
    "mailboxes": "信箱",
    "users": "用戶",
    "software": "軟件",
    "jobs": "工作",
    "notFound": "找不到",
    "wizard": "遷移精靈",
    "jobLog": "工作紀錄",
    "about": "說明",
    "steps": "遷移步驟",
    "sourceInventory": "來源盤點",
    "sourceInventoryDesc": "唯讀掃描控制面與專案路徑，不會修改系統",
    "inventoryRunning": "正在盤點本機…",
    "host": "主機",
    "projectHome": "專案 / 主目錄",
    "needSoftware": "需安裝軟件",
    "noInventory": "尚未取得盤點",
    "noInventoryHint": "按右上角「重新整理」掃描本機狀態與工作紀錄。介面 需已載入 migrate 路由。",
    "targetHost": "目標主機",
    "targetHostDesc": "僅需要管理員權限 遠端登入；密碼只用於本次請求，不會寫入資料庫",
    "sshTarget": "遠端登入 目標",
    "sshPort": "遠端登入 埠",
    "targetDataDir": "目標 dataDir",
    "authMethod": "認證方式",
    "rootPassword": "管理員 密碼",
    "notPersisted": "不會持久化",
    "passwordNotStored": "密碼只用於今次 SSH，不會寫入磁碟。",
    "overwriteDanger": "覆寫會取代目標機現有 YSK 資料，面板無法復原。",
    "outboundIdentity": "vault 內 外連 identity",
    "dryRun": "執行預檢（預覽試行）",
    "startMigrate": "開始整機遷移",
    "needSshTarget": "請填寫 遠端登入 目標",
    "needMaintWindow": "請勾選維護窗",
    "needRootPassword": "請輸入 管理員 密碼",
    "needRequired": "請完成必要欄位",
    "result": "遷移結果",
    "blocked": "已阻擋",
    "failed": "失敗",
    "detail": "詳細說明",
    "jobsTitle": "遷移工作（{{count}})",
    "jobsDesc": "狀態落在 dataDir/migrate/；密碼從不寫入入 job 檔。按右上角「重新整理」更新。",
    "phase": "階段",
    "jobPhase": "工作 {{id}} · {{phase}}",
    "phaseName": {
      "failed": "失敗",
      "done": "完成",
      "running": "進行中",
      "queued": "排隊中",
      "cancelled": "已取消"
    },
    "target": "目標",
    "updated": "更新",
    "notes": "備註",
    "noJobs": "尚無遷移工作",
    "noJobsHint": "在「遷移精靈」完成一次 預覽試行 或正式遷移後會出現在此。",
    "confirmTitle": "確認整機遷移",
    "confirmDesc": "即將對 {{target}} 執行全量 同步複製 與目標 初始化。來源進入維護窗，過程可能數十分鐘。密碼僅本次使用。",
    "confirmStart": "確認開始",
    "cancel": "取消",
    "success": "成功",
    "unfilledTarget": "（未填目標）",
    "restartApiHint": "若剛部署新版本，請重啟 介面（",
    "afterRestart": "）後再按「重新整理」。",
    "inventoryWarnings": "盤點警告（{{count}}）",
    "orphanHomesHint": "孤立專案主目錄（store 無對應）。確認無用途後先刪。",
    "orphanHomesTitle": "孤立專案主目錄（{{count}}）",
    "orphanHomesSummary": "磁碟上有 {{count}} 條路徑不在 store。不確定請先備份，確認無用後再刪。",
    "orphanColHome": "主目錄",
    "orphanColModified": "最後修改",
    "orphanColEntries": "目錄項",
    "orphanEntries": "目錄內有 {{n}} 個頂層項目",
    "orphanKpi": "孤立主目錄",
    "sourceOs": "作業系統",
    "sourceDataDir": "dataDir",
    "sourceDbRedis": "資料庫 / Redis",
    "sourceDbRedisValue": "{{db}} 個資料庫 · {{redis}} 個 Redis",
    "orphanRemove": "刪除",
    "orphanRemoveTitle": "刪除此孤立專案主目錄？",
    "orphanRemoveDesc": "將永久刪除磁碟上的 {{path}}。這不是 store 內專案。需超級用戶與系統變更權限。",
    "orphanRemovePhrase": "請輸入 DELETE 確認。",
    "orphanRemoveNeedConfirm": "需確認",
    "orphanBackupFirst": "請先到備份頁備份",
    "orphanMtime": "最後修改 {{at}}",
    "expandAllWarnings": "展開全部 {{n}} 則警告",
    "collapseWarnings": "收合",
    "moreWarnings": "…另有 {{n}} 則",
    "authPassword": "管理員 密碼（安裝臨時金鑰後改用 金鑰）",
    "authIdentity": "遠端登入 身份庫 identityId",
    "authAgent": "本機預設 代理 / 金鑰",
    "confirmMaint": "確認維護窗",
    "confirmMaintDesc": "· 來源將短暫停服以保證 匯出 一致（正式遷移必勾）",
    "allowOverwrite": "允許覆寫目標既有 YSK 資料",
    "allowOverwriteDesc": "· 目標已有 ysk.json 時需勾選",
    "dryRunOnly": "僅 預覽試行",
    "dryRunOnlyDesc": "· 只做盤點 + 預檢，不 同步複製、不寫入目標",
    "executeNote": "本機需 系統變更權限已開啟 且以 管理員 執行 介面。遷移完成後請改 DNS A/AAAA，並檢查雲防火牆與郵件 PTR。",
    "dnsCutover": "DNS cutover（需人工）",
    "dnsCutoverDesc": "將下列主機名的 A / AAAA 指到新機公網 IP；並確認 80/443/25/587 等防火牆與郵件 rDNS。"
  },
  "multiCheck": {
    "customPlaceholder": "自訂代碼",
    "searchPlaceholder": "搜尋…",
    "emptyText": "無符合項目",
    "removeTitle": "點選移除",
    "noneSelected": "尚未選擇",
    "optionsAria": "選項",
    "showingCapped": "顯示前 {{shown}}／共 {{total}} 項 — 用搜尋收窄",
    "add": "加入",
    "bulkAria": "批量選擇",
    "selectAll": "全選",
    "selectAllTitle": "全選全部 {{n}} 項",
    "selectFiltered": "全選篩選（{{n}}）",
    "selectFilteredTitle": "全選目前搜尋結果 {{n}} 項",
    "clearAll": "全不選",
    "clearFiltered": "清除篩選",
    "selectedCount": "已選 {{n}}／{{total}}",
    "chipsCollapsed": "已選 {{n}} 項 — 展開",
    "chipsCollapse": "收起"
  },
  "nav": {
    "dashboard": "儀表板",
    "ai": "AI 任務",
    "projects": "專案",
    "security": "帳號安全",
    "email": "郵件",
    "files": "檔案",
    "system": "系統套用",
    "updates": "更新",
    "agents": "AI 代理（實驗）",
    "login": "登入",
    "logout": "登出",
    "publicFiles": "公用檔案",
    "ftp": "FTPS",
    "ftpService": "FTPS",
    "mysql": "MySQL",
    "mysqlService": "MySQL 服務",
    "mariadb": "MariaDB",
    "mariadbService": "MariaDB 服務",
    "postgres": "PostgreSQL",
    "postgresService": "PostgreSQL 服務",
    "redis": "Redis",
    "redisService": "Redis 服務",
    "cluster": "叢集",
    "dns": "DNS",
    "ssl": "SSL 憑證",
    "nginx": "Nginx",
    "node": "Node.js",
    "php": "PHP",
    "python": "Python",
    "go": "Go",
    "rust": "Rust",
    "protection": "防護中心",
    "firewall": "防火牆",
    "fail2ban": "fail2ban",
    "users": "用戶與方案",
    "services": "服務狀態",
    "metrics": "主機指標",
    "network": "網絡介面",
    "logs": "日誌中心",
    "cron": "Cron",
    "backups": "備份",
    "migrate": "整機遷移",
    "systemd": "systemd",
    "readiness": "就緒探測",
    "systemIndex": "系統工具",
    "sections": {
      "overview": "總覽",
      "sites": "帳號與站點",
      "mail": "郵件",
      "files": "檔案與 FTP",
      "databases": "資料庫",
      "dnsSsl": "域名與 SSL",
      "runtimes": "執行環境",
      "security": "安全",
      "system": "系統",
      "ai": "人工智慧",
      "validators": "驗證者節點",
      "containers": "容器"
    },
    "java": "Java",
    "kotlin": "Kotlin",
    "bun": "Bun",
    "software": "軟件中心",
    "terminal": "終端機",
    "hostBrowse": "主機瀏覽",
    "cdn": "CDN",
    "vpn": "VPN",
    "vnc": "VNC",
    "apache": "Apache",
    "bookmarkedProjects": "已釘選專案",
    "bookmarkedEmailDomains": "已釘選域名",
    "bookmark": "釘到側欄",
    "unbookmark": "取消側欄釘選",
    "bookmarkPinned": "已釘選",
    "bookmarkAdded": "已釘到側欄",
    "bookmarkRemoved": "已從側欄移除",
    "btTracker": "BT Tracker",
    "support": "支持",
    "noAccessTitle": "沒有權限",
    "noAccessDesc": "你的角色不能開啟此頁。如需使用，請向管理員申請。",
    "backToDashboard": "返回儀表板",
    "validators": "驗證者節點 (Beta)",
    "docker": "Docker"
  },
  "network": {
    "title": "網絡介面",
    "canMutate": "可變更",
    "readOnlyBlocked": "唯讀／受阻",
    "statIfaces": "介面",
    "statUp": "已啟用",
    "oper": {
      "up": "已啟用",
      "down": "已停用",
      "unknown": "未知",
      "loopback": "永久啟用",
      "loopbackHint": "回環介面一律可用，不可變更。",
      "other": "其他"
    },
    "statGateway": "閘道",
    "pageActions": "頁面操作",
    "loadingSnap": "讀取網絡快照…",
    "mutateHint": "變更即時生效，重開可能還原。",
    "cannotMutate": "無法變更：需 EXECUTE 與 root。",
    "tabs": {
      "ifaces": "介面",
      "routes": "路由",
      "dns": "域名系統",
      "advanced": "進階",
      "about": "說明",
      "realip": "真實 IP / CDN"
    },
    "ifaceSummary": "{{count}} 個介面 · {{up}} 個 UP",
    "noIfaces": "沒有介面",
    "noIfacesDesc": "ip 不可用或無權讀取",
    "colName": "名稱",
    "colStatus": "狀態",
    "ifaceOps": "{{name}} 操作",
    "routeTable": "路由表",
    "defaultGw": "預設閘道 {{gw}}",
    "liveIpRoute": "即時 ip route",
    "noRoutes": "沒有路由",
    "colDest": "目的地",
    "addRoute": "新增路由",
    "persistNm": "保存到 NetworkManager 連線（重開仍在）",
    "ephemeralRoute": "僅即時 ip route（重開可能消失）",
    "destPlaceholder": "預設 或 10.0.0.0/8",
    "devOptional": "Dev（可選）",
    "defaultDev": "預設出口：{{dev}}",
    "saveNm": "保存（NetworkManager，重開不消失）",
    "ephemeralHint": "取消則只做即時 ip route add",
    "nmUnavailable": "NetworkManager 未運行 — 只能加入即時路由",
    "defaultRouteDownNeedName": "此介面是預設路由出口。請輸入介面名稱確認 — 可能會斷開面板連線。",
    "saveRoute": "保存路由",
    "dnsSettings": "DNS 設定",
    "dnsNmHint": "經 NetworkManager 寫入連線「{{conn}}」並重連（持久）",
    "dnsCannotApply": "目前無法套用：需 NetworkManager 作用中連線 + 執行 與管理員權限",
    "mode": "模式",
    "connection": "連線",
    "source": "來源",
    "ignoreAutoDns": "現況 ignore-auto-dns",
    "ignoreYes": "yes（忽略 DHCP DNS）",
    "ignoreNo": "no（跟 DHCP）",
    "nameserverEditHint": "可加減伺服器；套用寫入 NetworkManager 並重連",
    "routerDns": "路由器 {{dns}}",
    "current": "目前",
    "serverList": "伺服器列表",
    "emptyDnsTitle": "尚未加入 DNS",
    "emptyDnsDesc": "按「加伺服器」開始",
    "keepOneRow": "至少保留一列（可清空後再刪）",
    "removeServer": "移除此伺服器",
    "searchDomainsPlaceholder": "可選，空白分隔",
    "ignoreDhcpDns": "忽略 DHCP 自動 DNS（ipv4.ignore-auto-dns=yes）",
    "restoreDhcpHint": "用「還原 DHCP DNS」可交回路由器分配",
    "noNmConnection": "無可用 NM 連線 — 不會盲改 /etc/resolv.conf（避免假成功）。",
    "needExecuteRoot": "需 系統變更權限已開啟 與管理員權限 才會真寫入。",
    "resolveTest": "解析測試",
    "resolveTestDesc": "getent ahosts（本機實際解析結果）",
    "hostname": "主機名",
    "testFailed": "測試失敗",
    "stackDetect": "本機網絡堆疊偵測",
    "available": "可用",
    "unavailable": "不可用",
    "persistNmCap": "可持久化（NM）",
    "ifaceDetail": "介面 {{name}}",
    "type": "類型",
    "addresses": "位址",
    "noAddresses": "無地址",
    "ifaceAdjust": "介面調整",
    "addIpTitle": "加 IP · {{name}}",
    "saveIp": "保存 IP",
    "add": "新增",
    "cidrPlaceholder": "例：10.0.0.5/24 或 2001:db8::5/64",
    "saveIpHint": "寫入連線 +ipv4/ipv6.addresses 並 connection up",
    "confirmIfaceName": "輸入介面名「{{name}}」確認",
    "deleteRouteTitle": "刪除路由？",
    "deleteRouteNamed": "刪除路由 {{dst}}？",
    "deleteRouteBody": "將從即時路由表移除 {{dst}}{{via}}{{dev}}。",
    "viaGw": " 經 {{gw}}",
    "onDev": " 裝置 {{dev}}",
    "deleteDefaultWarn": "— 刪除 預設 可能斷線。",
    "alsoRemoveNm": "同時從 NetworkManager 連線移除（重開不再出現）",
    "loadFailed": "載入失敗",
    "loadNetworkFailed": "載入網絡失敗",
    "on": "開",
    "off": "關",
    "addServer": "加伺服器",
    "applyDns": "套用 DNS",
    "restoreDhcpDns": "還原 DHCP DNS",
    "test": "測試",
    "refresh": "重新整理",
    "hostSettings": "主機設定",
    "protection": "防護中心",
    "defaultEgressBadge": "預設",
    "opsAria": "{{name}} 操作",
    "details": "詳情",
    "addIp": "加 IP",
    "reset": "重設",
    "ephemeralOnly": "僅即時",
    "saveRouteHint": "保存會寫入 NM 連線並 connection up；預設 用 ipv4.gateway，其他用 +ipv4.routes。需 執行 與管理員權限。",
    "deleteShort": "刪",
    "resetForm": "重設表單",
    "applyDnsNotes": "套用後會 nmcli connection modify + up；短暫斷線屬正常。stub 127.0.0.53 不會寫入（本機 resolved 內部用）。",
    "testResolve": "測試解析",
    "loadRaw": "載入 raw 輸出",
    "hideRaw": "隱藏 raw 輸出",
    "rawLoadedAt": "載入時間 {{time}}",
    "confirmDown": "確認離線",
    "linkDownTitle": "將 {{name}} 離線",
    "linkDownNeedConfirm": "需輸入介面名稱確認",
    "defaultRouteDownWarn": "此介面是預設路由出口，離線後可能無法連上管理面板。",
    "deleteDefaultMayDrop": "— 刪除 預設 可能斷線。",
    "gateway": "閘道",
    "nameservers": "名稱伺服器",
    "searchDomains": "搜尋網域",
    "backend": "後端",
    "cidr": "CIDR",
    "realip": {
      "title": "CDN / 真實用戶 IP",
      "desc": "還原 CDN 後方訪客 IP；只信任邊緣 CIDR。",
      "provider": "預設供應商",
      "providerHint": "直連選 none；在 CDN 後選供應商。",
      "mode": "信任模式",
      "modeSingle": "單一供應商標頭（建議）",
      "modeXff": "X-Forwarded-For + 合併 CDN CIDR",
      "customCidrs": "額外信任 CIDR",
      "customCidrsHint": "每行一個 CIDR。",
      "lastRefresh": "上次 CIDR 更新",
      "active": "目前預設",
      "republishHint": "儲存後請重新發布專案 Nginx。",
      "refresh": "更新 CDN IP 列表",
      "refreshOk": "已更新 CIDR 列表",
      "providers": {
        "none": "無（直連源站）",
        "cloudflare": "Cloudflare",
        "fastly": "Fastly",
        "bunny": "兔子CDN",
        "cloudfront": "AWS 雲端前",
        "azure_frontdoor": "蔚藍前門",
        "gcore": "國核CDN",
        "custom": "自訂代理"
      },
      "needProvider": "請先選擇 CDN 供應商，先可更新 IP 列表。",
      "spoofWarn": "信任錯誤的 CIDR 會讓客戶端偽造 X-Forwarded-For／CDN 標頭，假裝成真實來源 IP。"
    },
    "linkUp": "上線",
    "linkDown": "離線",
    "linkDownDefault": "下線預設路由",
    "loopbackImmutable": "回環介面不可變更",
    "operUnknownHint": "核心未回報 UP／DOWN（lo 常見）。介面仍可用。",
    "persistNmHint": "可持久化代表經 NetworkManager 寫入後，重啟後設定仍然有效。",
    "deleteDefaultPanelWarn": "刪除預設路由可能令面板連線中斷。請輸入 DEFAULT 確認。",
    "deleteDefaultNeedConfirm": "需確認 — 請輸入 DEFAULT（可能中斷本面板）",
    "deleteRouteNeedConfirm": "需確認",
    "typeDefaultToConfirm": "輸入 DEFAULT 確認"
  },
  "nginx": {
    "pillSites": "{{count}} 站點",
    "statSites": "站點",
    "statSslFlag": "SSL 標記",
    "purgeOk": "已 清除",
    "projectSitesHint": "專案站點（受管 conf）同獨立站點分開列出。改專案 Nginx 請到專案 → 網絡。",
    "purgeCache": "清除 Cache + 重新載入",
    "purgeCacheTitle": "清除 Nginx cache 並重新載入？",
    "purgeCacheDesc": "清除磁碟 cache 並重載 Nginx。線上站點不會中斷。",
    "notInstalled": "Nginx 尚未安裝",
    "listTitle": "站點（{{count}}）",
    "listDesc": "建立後請再按「套用」同步到系統",
    "createSite": "+ 建立站點",
    "colServerName": "伺服器名稱",
    "colKind": "類型",
    "kindProxy": "反向代理",
    "kindStatic": "靜態",
    "kindPhp": "PHP-FPM",
    "colTarget": "上游／根目錄",
    "colStatus": "狀態",
    "emptyTitle": "未有站點",
    "emptyDesc": "用列表右上角「建立站點」新增；建立後請再按「套用」",
    "applyTitle": "寫入管理檔並嘗試同步到系統 + nginx -t + 重新載入",
    "applyToSystem": "同步到系統",
    "createTitle": "建立 Nginx 站點",
    "createDesc": "建立後需套用",
    "editTitle": "編輯 Nginx 站點",
    "editDesc": "儲存後需套用",
    "deleteTitle": "刪除站點？",
    "deleteTitleNamed": "刪除站點 {{name}}？",
    "deleteDescNamed": "從面板移除 {{name}}。已套用到系統的站會一併刪受管 conf。",
    "invalidServerName": "請填寫有效主機名稱（例如 app.example.com）。",
    "needUpstream": "反向代理必須填寫上游。",
    "needRoot": "靜態與 PHP 站必須填寫網站根目錄。",
    "deleteDesc": "確定刪除此站點？",
    "serverNameHint": "server_name，例如 app.example.com",
    "kindLabel": "站點類型",
    "upstreamLabel": "上游位址",
    "upstreamHint": "例如 127.0.0.1:3000 或 http://backend:8080",
    "rootLabel": "網站根目錄",
    "rootHintPhp": "PHP 專案 document 管理員，例如 /var/www/app/public",
    "rootHintStatic": "靜態檔案目錄絕對路徑",
    "sslLabel": "啟用 SSL 區塊",
    "sslDesc": "產生 listen 443 ssl；憑證需於 SSL 頁就緒後綁定",
    "saveThenApply": "儲存後按「套用」寫入 nginx",
    "statProjectSites": "專案",
    "projectListTitle": "專案站點（{{count}}）",
    "projectListDesc": "由專案 publish／goLive 寫入的受管 conf；修改請到專案「網絡」。",
    "colProject": "專案",
    "colRuntime": "執行環境",
    "colConf": "設定檔",
    "confWritten": "已寫入",
    "confMissing": "無路徑",
    "projectEmptyTitle": "尚未有專案 Nginx",
    "projectEmptyDesc": "部署後到專案「網絡」發佈 Nginx",
    "preview": "預覽",
    "openProject": "開啟專案",
    "projectPager": "專案站點分頁",
    "prevPage": "上一頁",
    "nextPage": "下一頁",
    "pageOf": "第 {{page}} / {{total}} 頁 · 共 {{count}}",
    "projectConfEmpty": "（設定檔空白）",
    "projectConfReadFail": "讀取專案 conf 失敗",
    "projectPreviewPath": "{{小路}}",
    "pageDesc": "Nginx 站點",
    "filterSource": "來源",
    "sourceAll": "全部",
    "sourceProject": "專案",
    "sourceStandalone": "獨立",
    "colSource": "來源",
    "filterProject": "已按專案篩選",
    "globalSettings": "全域設定",
    "siteSettings": "站點設定",
    "saveApply": "儲存並套用",
    "settingsSaved": "已儲存",
    "setGzip": "Gzip 壓縮",
    "setShowVersion": "顯示版本號",
    "setShowVersionDesc": "勾選 = server_tokens on（回應標頭顯示 nginx 版本）",
    "setHttp2": "HTTP/2（SSL）",
    "setBody": "Body 上限",
    "setKeepalive": "保活",
    "setAccessLog": "訪問日誌",
    "logOn": "開",
    "logBuffered": "緩衝",
    "logOff": "關",
    "setForceHttps": "強制 HTTPS",
    "setHsts": "HSTS",
    "setCfRealIp": "Cloudflare 真實 IP",
    "setIndexes": "目錄列表",
    "bodyInherit": "跟隨全域",
    "stopSites": "將有 {{n}} 個站點停止回應 HTTP。"
  },
  "notFound": {
    "title": "找不到頁面",
    "body": "沒有 {{path}} 這個面板頁。",
    "hint": "不明網址不會再默默轉去儀表板。",
    "home": "儀表板"
  },
  "notes": {
    "agents": {
      "sessionNotFound": "找不到 工作階段：{{sessionId}}"
    },
    "notFound": "找不到",
    "needPath": "請指定路徑",
    "needName": "請填寫名稱",
    "needHost": "請填寫主機",
    "needDomain": "請填寫域名",
    "needProjectName": "請填寫專案名稱",
    "needServerIp": "請指定伺服器 IP",
    "passwordMin8": "密碼至少 8 字元",
    "invalidPath": "無效路徑",
    "invalidIp": "無效 IP",
    "invalidIp46": "無效 IPv4／IPv6",
    "invalidPackageName": "套件名稱無效",
    "fileMissing": "檔案不存在",
    "notRegularFile": "不是一般檔案",
    "readFailed": "讀取失敗",
    "pathResolveFailed": "路徑解析失敗",
    "fieldInvalid": "欄位 {{field}} 無效：{{value}}",
    "apt": {
      "updateIndex": "更新套件索引"
    },
    "state": {
      "closed": "已關閉",
      "active": "運作中"
    },
    "cat": {
      "security": "安全",
      "mail": "郵件",
      "database": "資料庫",
      "runtime": "執行環境"
    },
    "ssh": {
      "identityNotFound": "找不到 identity",
      "registrationNotFound": "找不到登記",
      "keyOkNologin": "金鑰已接受。帳戶為 nologin 或僅限 SFTP（無 SSH shell）。視為通過。",
      "keyOkSftp": "SSH shell 被拒後，SFTP pwd 成功。"
    },
    "cdn": {
      "siteNotFound": "找不到 CDN 站點",
      "nodeMissing": "節點不存在",
      "loopbackOriginRemote": "來源是 127.0.0.1——那是本機，不是遠端 edge。請設可達的 origin IP 或 bind_ip。",
      "originRemoteRewrite": "遠端 edge 會用可達 origin {{url}}，而不是 loopback。",
      "originRemoteUnknown": "來源是 loopback，且未知道公網／內網 IP 或 bind_ip——在補上之前，套用會拒絕遠端 edge。",
      "needSshOrFleet": "遠端 edge 需要出站 SSH 身份（或用戶名），或 /agents 機群 session。單憑 Health URL 不能套用。",
      "probe": {
        "timeout": "連線逾時 {{ms}}ms（{{detail}}）。對端可能被防火牆擋住。",
        "dns": "DNS 查詢失敗（{{detail}}）。",
        "refused": "連線被拒 {{ms}}ms（{{detail}}）。埠未開或單向封鎖。",
        "tls": "TLS 驗證失敗（{{detail}}）。",
        "unreach": "主機不可達 {{ms}}ms（{{detail}}）。",
        "http": "HTTP 探活失敗 {{ms}}ms（{{detail}}）。"
      }
    },
    "backup": {
      "testUnsaved": "正在測試未儲存的表單（尚未寫入設定）。",
      "testIdentity": "sftp（身份金鑰）連到 {{spec}} 成功",
      "sshAuthFailed": "SSH 金鑰或密碼被拒（publickey）。請選出站身份，或安裝 sshpass。",
      "remotePathIsFile": "遠端路徑 {{path}} 是檔案。請用目錄。",
      "remoteMkdirFailed": "無法建立遠端目錄：{{detail}}",
      "sidecarPushed": "已一併推送 SQL sidecar {{name}}",
      "fileNotFound": "找不到備份檔",
      "resticNoPassword": "Restic 已啟用但未設定 密碼",
      "resticNotInPath": "Restic 不在 PATH",
      "dbEnvUnreadable": "無法讀取 .db.env，略過 SQL 傾印。",
      "dbEnvNoName": ".db.env 沒有資料庫名稱，略過 SQL 傾印。",
      "targetOutside": "還原目標必須在專案家目錄或公開檔案根目錄之內。",
      "controlPlaneDryRun": "僅預覽——未寫入任何檔。在面板按還原並確認短語才會寫入。",
      "controlPlaneNeedConfirm": "完整還原控制平面需要確認短語 RESTORE-CONTROL-PLANE。",
      "controlPlaneRestartAfter": "還原成功後請重啟 API。",
      "movedToTrash": "已將 {{name}} 移至回收區。{{days}} 日後永久刪除。",
      "restoreNameExists": "無法還原 {{name}} — 已有同名備份檔。",
      "restoredFromTrash": "已從回收區還原 {{name}}。",
      "trashEmptied": "已從回收區永久刪除 {{n}} 個備份檔。",
      "partialOk": "部分成功 — 略過 {{n}} 個專案"
    },
    "health": {
      "portListening": "埠 {{port}} 正在監聽",
      "portNotListening": "埠 {{port}} 未在監聽",
      "httpOk": "HTTP 正常 {{status}}",
      "httpFail": "HTTP 失敗：{{detail}}"
    },
    "redis": {
      "cliMissing": "未安裝 redis-cli",
      "requirepassAlreadySet": "Redis 已有 requirepass — 未覆寫。",
      "requirepassApplied": "已在執行中套用 requirepass",
      "requirepassApplyFailed": "無法 CONFIG SET requirepass（將靠重啟與設定檔）",
      "generatedRequirepass": "已產生 Redis 密碼（只顯示一次）：{{password}}"
    },
    "nginx": {
      "reloaded": "nginx 已 reload",
      "configOk": "Nginx 設定檢查通過",
      "reloadExit": "Nginx 重新載入 結束碼={{code}}",
      "managedDir": "管理設定目錄：{{path}}",
      "includeHint": "於 Nginx 加入：include {{path}}/*.conf;",
      "removedOrphan": "已刪除幽靈 Nginx conf {{path}}",
      "keptLiveSsl": "保留 {{path}} 的 HTTPS 區塊（受管範本沒有 listen 443）",
      "orphanCleanupFailed": "清理幽靈 Nginx conf 失敗：{{detail}}",
      "settingsWritten": "已寫入 Nginx 全域 snippet",
      "settingsNeedExecute": "套用需 YSK_EXECUTE",
      "reloadFailed": "nginx reload 失敗"
    },
    "ssl": {
      "requestCert": "申請憑證"
    },
    "ftp": {
      "startVsftpd": "啟動 vsftpd",
      "writeVsftpd": "寫入 vsftpd 設定",
      "vsftpdStarted": "vsftpd 已啟動",
      "openPortsStep": "防火牆埠（需手動）",
      "openPortsReminder": "請在主機防火牆同雲安全組放行 TCP：{{ports}}。套用 FTPS 不會代你開埠。",
      "openPortsPasvHint": "若登入成功但列目錄 LIST 逾時，多半是 PASV 資料埠被擋——要開齊 PASV 範圍，不是僅開啟 21。",
      "publicPlaintextBlocked": "拒絕在未啟用 FTPS 時對外啟動 FTP。請改為僅本機監聽、選憑證啟用 FTPS，或輸入 PLAINTEXT 確認後才公開明文服務。"
    },
    "deploy": {
      "nodeMissingIsolated": "隔離部署找不到 Node：{{path}} — 請先裝 Node {{version}} toolchain 再部署。拒絕寫入會 203/EXEC 的 unit。",
      "nodeMissing": "找不到 Node：{{path}} — 請裝 toolchain（Node {{version}}）再部署",
      "nodeRejectedPath": "project user 不能執行此 Node 路徑：{{path}} — 應使用 {{planned}}",
      "unitUnhealthy": "systemd unit 不健康（{{detail}}）。journalctl -u {{unit}} — 203/EXEC 多半是 binary 對 project user 無權限",
      "skippedPanelNode": "已跳過 panel Node {{path}}（project user 執行不到，會導致 systemd 203/EXEC）",
      "usingFallback": "Node binary：使用 {{path}}（計劃路徑 {{planned}} 不存在）",
      "usingPanelExec": "Node binary：回退 panel execPath {{path}}",
      "usingPanelDegraded": "Node binary：degraded 部署使用 panel {{path}}（不適用於 systemd User=ysks_*）",
      "nodeNotFoundPlanned": "主機未找到 Node {{version}} — unit 會用 {{planned}}；請裝 toolchain 再部署"
    },
    "files": {
      "needSrcDst": "請指定來源與目標路徑",
      "pathOutsideSandbox": "路徑超出沙箱範圍：{{target}}",
      "notFoundRel": "找不到：{{relPath}}",
      "fileNotFoundRel": "找不到檔案：{{relPath}}",
      "notFoundFrom": "找不到：{{fromPath}}",
      "alreadyExists": "已有同名項目：{{name}}"
    },
    "dns": {
      "needZoneServerIp": "請填寫 zone 與 伺服器 IP",
      "noClusterPeer": "尚未登記叢集 對等節點",
      "planOnly": "僅計劃 — 需 apply=true（root + YSK_EXECUTE）寫入 /etc/powerdns 並 rediscover",
      "needRootNamed": "需要 root + EXECUTE 先可更新 named.conf 並 rediscover",
      "noManagedZonesClear": "dataDir/dns/zones 無區域檔 — 將清空 PowerDNS YSK include",
      "bindRegistered": "PowerDNS BIND：已註冊 {{count}} 個 zone（list-zones 已確認）",
      "listZonesIncomplete": "named.conf 已更新但 list-zones 未確認全部 zone — 不標 loaded",
      "noLaunchDefaultBind": "找不到 launch= — 預設走 bind 路徑",
      "writeNotAnswerDig": "只寫 zone 檔不會答 dig — 要載入 PowerDNS（named.conf + rediscover）",
      "bindDigFailed": "zone 已列出但 dig SOA 失敗 — 不標 loaded",
      "bindLoadedOk": "Zone {{zone}} 已掛入 PowerDNS BIND 且 dig OK",
      "bindSyncFailed": "BIND named.conf 同步失敗或 dig 無答",
      "bindSkipPdnsutil": "略過 BIND 路徑（後端偏好 pdnsutil）",
      "pdnsCtlNoConfirm": "有 pdns_control 但 zone 未確認；檢查 named.conf 或用 pdnsutil 後端",
      "usingExistingZone": "使用現有 zone 檔：{{path}}",
      "healNeedRoot": "需要 root + EXECUTE 先可改寫 pdns local-address",
      "pdnsUnitActive": "pdns 單元：active",
      "pdnsUnitInactive": "pdns 單元：非 active",
      "udp53Listening": "UDP/53：監聽中",
      "udp53NotListening": "UDP/53：仍未監聽",
      "healResyncOk": "已修復 listener 並重新同步 zone 入 PowerDNS BIND",
      "healResyncPartial": "listener 已修好但 zone 同步未完 — 請撳「寫入並載入區域」",
      "installAfterLoad": "安裝後請 apply DNS zones（寫 named.conf + rediscover）或 POST powerdns/load",
      "bindFileNotEnough": "BIND 後端：只寫 zone 檔不足，要 named.conf include 先會答 dig",
      "zeroDomainsHint": "PowerDNS list-zones: 0 — 碟上有 zone 檔但未載入",
      "localAFailed": "本機 A 探測失敗（www/ftp/@）zone={{zone}}",
      "publicNsCloudflare": "公網 NS 是第三方 DNS/CDN（例如 Cloudflare）— 公網 dig 不會用本機 zone",
      "publicNsOther": "公網 NS 不是本機 — 全世界 check 會忽略本機 PowerDNS，直至改註冊商 NS",
      "publicNsHere": "公網 NS 似 in-zone（ns1/ns2.zone）— 外網可能問你",
      "firewall53Hint": "ss 見不到 UDP/53 — 若外網 dig 失敗請開防火牆 53 both（TCP+UDP）",
      "applyDigOk": "PowerDNS BIND：list-zones + dig OK",
      "applyDigFail": "conf 已註冊但 dig 仍空/REFUSED — 不標 applied",
      "applySyncIncomplete": "PowerDNS bind 同步未完 — 只寫入碟。請檢查 EXECUTE/root 或 pdns 日誌",
      "writeOnlyHint": "只寫入 zone 檔 — 要 load/apply 掛 named.conf 先會答",
      "noActiveUnit": "沒有運行中的 named／bind9／pdns 單元",
      "pdnsUnitRestarts": "pdns 單元狀態／重啟次數：{{detail}}",
      "port53LoopbackOnly": "53 埠只綁在 loopback（systemd-resolved 127.0.0.53）— 不是產品權威 nameserver",
      "port53Closed": "53 埠未在聽（UDP／TCP）",
      "udp53NotPublic": "UDP/53 未綁公網位址",
      "tcp53NotPublic": "TCP/53 未綁公網位址",
      "noManagedZones": "dataDir/dns/zones 沒有管理中的 zone 檔",
      "pdnsListZones": "PowerDNS list-zones：{{n}}",
      "lookupIgnoredAt": "dig 不可用 — 已忽略 @{{server}}。不會把系統 resolver 當成該伺服器的答案。",
      "digNotInstalled": "dig 未安裝",
      "digEmpty": "dig 無答案",
      "localAOk": "本機 A {{name}} → {{ip}}"
    },
    "db": {
      "needExecuteCreate": "伺服器未開啟系統變更權限，無法在管理面板建立資料庫",
      "dryRunMysql": "預覽試行：未建立資料庫。加 --執行 且 系統變更權限已開啟 先真正 provision",
      "remoteNoCreds": "未存帳號／密碼——只測 TCP（登記 ≠ 已登入）。",
      "remoteReachable": "TCP {{host}}:{{port}} 可達（{{ms}}ms）。",
      "remoteUnreachable": "TCP {{host}}:{{port}} 關閉或被過濾（{{ms}}ms）。"
    },
    "net": {
      "invalidIface": "介面名稱無效",
      "invalidDev": "dev 名稱無效",
      "needNmActive": "無法持久化：需要 NetworkManager 作用中連線"
    },
    "project": {
      "notFound": "找不到專案：{{id}}",
      "docRootMustBeRelative": "文件根必須為相對路徑（相對於專案家目錄），不可用絕對路徑。",
      "docRootInvalid": "文件根路徑無效（不可含 .. 或非法字元）。",
      "domainInvalid": "網域名稱格式無效：{{domain}}",
      "domainInUse": "網域 {{domain}} 已被專案「{{other}}」使用。"
    },
    "email": {
      "domainNotFound": "找不到郵件域名：{{id}}",
      "wroteNginx": "已寫入 Nginx 設定：{{nginxPath}}",
      "wrotePath": "已寫入 {{path}}",
      "domainDeleted": "已刪除域名 {{domain}}（信箱 {{mailboxes}}、別名 {{aliases}}）",
      "domainDataDirRemoved": "已移除本機資料目錄 {{path}}",
      "domainDataDirRemoveFailed": "無法移除資料目錄 {{path}}：{{detail}}",
      "domainDeleteSystemHint": "控制面已刪除；系統 MTA 映射若仍存在請重新套用其餘域名或人手清理",
      "mailboxDeleted": "已刪除信箱 {{address}}",
      "mailboxNotFound": "找不到信箱",
      "mailboxDataRemoved": "已移除本機目錄 {{path}}",
      "domainDeleteConfirmMismatch": "確認字串與域名不符，已拒絕刪除",
      "domainDataKept": "已保留本機 dataDir 郵件資料（removeData=false）",
      "mailboxPasswordUpdated": "已更新 {{address}} 的密碼",
      "mailboxStatusUpdated": "已將 {{address}} 狀態設為 {{status}}",
      "mailboxUpdateEmpty": "沒有可更新項目 — 請提供密碼及／或狀態",
      "mailboxStatusInvalid": "無效的信箱狀態",
      "mailboxNoChanges": "沒有變更",
      "dovecotApplyNeedRoot": "套用 Dovecot 虛擬郵箱認證需要 root + YSK_EXECUTE",
      "dovecotNotInstalled": "本機未安裝 Dovecot",
      "dovecotNoPassdbSnippets": "dataDir/email 下找不到網域 passdb snippet",
      "dovecotApplyFailed": "套用 Dovecot 虛擬郵箱認證失敗：{{detail}}",
      "dovecotApplyOk": "已安裝 Dovecot 虛擬郵箱認證（{{conf}}，{{count}} 個網域）",
      "dovecotPassdbWrittenNeedApply": "已寫入 passwd-file（dataDir）— 需 EXECUTE+root 套用到 Dovecot 先可登入",
      "postqueueSetgidBroken": "Postfix 佇列工具失敗：main.cf 中 setgid_group 為空。應設為 postdrop（有 YSK_EXECUTE 時面板會嘗試自動修復）。",
      "postqueueMailDown": "Postfix 未運行（showq 不可用）。有 YSK_EXECUTE 時面板會嘗試啟動 — 請檢查軟件分頁或 systemctl status postfix。",
      "postqueueSpoolMissing": "Postfix 佇列目錄缺失（例如 hold/）。有 YSK_EXECUTE 時面板會嘗試建立 spool 並啟動 Postfix。",
      "invalidDomain": "請輸入有效郵件域名",
      "invalidServerIp": "請輸入有效伺服器 IP",
      "mailboxLocalPartInvalid": "郵箱本機部分只可用英文字母、數字與 . _ + -",
      "passwordTooShort": "密碼至少 8 個字元"
    },
    "software": {
      "startUnit": "啟動 {{u}}",
      "installedSpec": "已安裝 {{title}}",
      "installPkg": "安裝 {{p}}",
      "npmGlobal": "npm install -g {{pkgs}}",
      "needNodeForNpm": "未找到 node／npm — 請先安裝 Node.js 再安裝 {{title}}",
      "uninstallNoTargets": "未選擇要解除安裝的軟件",
      "uninstallNothingInstalled": "所選範圍內沒有已安裝項目",
      "uninstallProtected": "已略過受保護元件：{{ids}}",
      "uninstallConfirmMismatch": "確認短語不相符",
      "uninstallOk": "已解除安裝 {{n}} 個元件",
      "uninstallPartial": "解除安裝完成但有錯誤 — 請查看步驟"
    },
    "php": {
      "aptPackages": "將安裝 {{count}} 個套件：{{list}}"
    },
    "runtime": {
      "plugins": "一併安裝工具：{{list}}",
      "pluginsOk": "選定工具已安裝",
      "pluginsFailed": "部分工具安裝失敗或跳過：{{list}}",
      "pluginsUninstall": "卸載工具：{{list}}",
      "pluginsUninstallOk": "選定工具已卸載",
      "pluginsUninstallFailed": "部分工具卸載失敗或跳過：{{list}}",
      "pluginsNoneToUninstall": "沒有可卸載的工具（可能已移除或屬必裝）"
    },
    "approval": {
      "notFound": "找不到審批：{{id}}"
    },
    "readiness": {
      "core": "控制面",
      "security": "安全",
      "binaries": "二進位／套件",
      "hosting": "託管",
      "dns": "域名系統",
      "email": "郵件",
      "isolation": "專案隔離",
      "ops": "維運",
      "runtimesNode": "Node.js",
      "runtimesPhp": "PHP",
      "runtimesPython": "Python",
      "runtimesGo": "Go",
      "pm2": "PM2",
      "runtimesNodeFix": "到 /runtimes/node 安裝 Node",
      "runtimesPhpFix": "到 /runtimes/php 安裝 PHP",
      "runtimesPythonFix": "到 /runtimes/python 安裝 Python",
      "runtimesGoFix": "到 /runtimes/go 安裝 Go",
      "pm2Fix": "到 Node 執行環境頁安裝 PM2"
    },
    "needAdmin": "需要管理員權限",
    "notInstalled": "未安裝",
    "unknown": "未知",
    "failed": "失敗",
    "running": "運行中",
    "stopped": "已停止",
    "probe": "探測",
    "install": "安裝",
    "port": "埠",
    "git": {
      "missingBin": "系統 PATH 找不到 git",
      "auth": "驗證失敗。請加入 deploy key 或 HTTPS token。",
      "hostkey": "SSH host key 驗證失敗。請確認後釘選。",
      "dirty": "工作區有 {{count}} 項本機改動。已阻止 pull。",
      "diverged": "無法 fast-forward。若要丟棄本機 Git 歷史，請重設到遠端 ref。",
      "missingRef": "遠端沒有該分支、tag 或 commit。",
      "shallow": "此 clone 為淺層。要釘舊 commit 請先抓完整歷史。",
      "notRepo": "app/ 尚未是 Git repository。",
      "unrelated": "歷史無關。確認後才可重新 clone——自訂檔會消失。",
      "lock": "存在 Git index.lock。只在沒有 git 行程時才移除。",
      "disk": "磁碟已滿或超出配額。",
      "timeout": "Git 逾時。",
      "network": "連接遠端時網絡出錯。",
      "lfs": "此 repo 使用 Git LFS，但主機沒有 git-lfs。",
      "submodule": "Submodule 更新失敗。",
      "unknown": "Git 失敗。請查看指令輸出。",
      "fetchOk": "已從 origin fetch。",
      "checkoutOk": "已 checkout {{ref}}。",
      "resetOk": "已 hard reset 到 {{ref}}。",
      "envRestored": "已用控制面資料還原 app/.env。",
      "needPinHost": "尚未釘選 SSH host key。請先掃描並釘選，再 clone 或 fetch。",
      "tokenSaved": "已儲存 HTTPS token（不會再顯示）。",
      "tokenCleared": "已移除 HTTPS token。",
      "tokenInvalid": "Token 至少 8 個字元。",
      "deployKeyCreated": "已建立 deploy key。請把 public key 加到 Git 主機。",
      "deployKeyCleared": "已解除此專案的 deploy key。",
      "hostPinned": "已釘選 {{host}} 的 SSH host key。",
      "hostUnpinned": "已清除釘選的 SSH host key。",
      "hostScanFailed": "ssh-keyscan 沒有傳回該主機的 key。",
      "hookEnabled": "已開啟 inbound Git hook。請自行把 URL 貼到 GitHub、Gitea 或 GitLab。",
      "hookDisabled": "已關閉 inbound Git hook。該 URL 不會再同步。",
      "hookSecretOnce": "請立即複製此 hook secret。之後不會再顯示。",
      "refsNeedUrl": "請先填寫 Git 網址。",
      "refsOk": "已載入 {{branches}} 條分支、{{tags}} 個 tag。",
      "refsEmpty": "遠端沒有列出分支或 tag。",
      "diffEmpty": "沒有未暫存的 diff（已排除受保護的 .env）。"
    },
    "auto": {
      "n0001": "狀態：已套用",
      "n0002": "找不到用戶",
      "n0003": "已封鎖: 需要 系統變更權限已開啟",
      "n0004": "找不到資源",
      "n0005": "無法套用系統：需 系統變更權限 與管理員權限",
      "n0006": "需要系統變更權限",
      "n0007": "狀態：已寫入",
      "n0008": "需要系統管理員（管理員）權限才能完成",
      "n0009": "建立帳戶資料庫",
      "n0010": "完成",
      "n0011": "找不到帳戶",
      "n0012": "狀態：失敗",
      "n0013": "未運行",
      "n0014": "啟動中",
      "n0015": "未安裝 mysql 客戶端",
      "n0016": "未安裝 psql",
      "n0017": "UFW 防火牆",
      "n0018": "執行環境",
      "n0019": "找不到 定時工作 工作",
      "n0020": "已匯入",
      "n0021": "以 管理員 執行",
      "n0022": "管理員雙重驗證",
      "n0023": "錯誤日誌路徑",
      "n0024": "找不到站點",
      "n0025": "系統變更未開啟",
      "n0026": "自動 封鎖 已熔斷",
      "n0027": "請指定 agentId",
      "n0028": "找不到專案",
      "n0029": "需要 名稱",
      "n0030": "緊急",
      "n0031": "自動 封鎖 未開啟",
      "n0032": "預覽試行：此計劃未改系統",
      "n0033": "預覽試行：未改系統",
      "n0034": "建議至少 1 個 從節點",
      "n0035": "無節點 探測 成功",
      "n0036": "伺服器未開啟系統變更權限，無法 同步複製",
      "n0037": "reapply 關鍵步驟失敗",
      "n0038": "無法 初始化：未開啟 系統變更權限",
      "n0039": "初始化 需要 系統變更權限已開啟",
      "n0040": "最大連線數",
      "n0041": "綁定位址",
      "n0042": "站點無域名",
      "n0043": "略過 draining",
      "n0044": "找不到 CDN 節點",
      "n0045": "每日（GitHub Releases latest）",
      "n0046": "執行 模式（仍需 系統變更權限 才能寫系統目錄）",
      "n0047": "預覽試行 預設：加 --執行 先同步到系統 nginx",
      "n0048": "需要管理員",
      "n0049": "projectId 與 名稱 必填",
      "n0050": "^.*帳號或密碼不正確.*$",
      "n0051": "^.*需要有效的雙重驗證碼.*$",
      "n0052": "echo \"pdnsutil 找不到\" >&2",
      "n0053": ": ''}（重開可能消失；要持久請用「保存」）",
      "n0054": "# rsa_cert_file= (尚未選擇有效憑證)",
      "n0055": "$_GET / $_POST / $_COOKIE 變數上限",
      "n0056": "--密碼 需值，或設 YSK_MIGRATE_SSH_PASSWORD",
      "n0057": "-1 關閉；0 全部記錄",
      "n0058": "/proc/meminfo 不可讀",
      "n0059": "/proc/stat 不可讀 — CPU% 無法計算",
      "n0060": "0 = 不限制；可設 256mb",
      "n0061": "0 = 使用全部 CPU",
      "n0062": "0（關閉）",
      "n0063": "1 分鐘 load 超過 CPU×2",
      "n0064": "1. 於面板建立 MySQL 資料庫",
      "n0065": "1=最安全；2=效能較佳",
      "n0066": "2. 下載 WordPress 到 app/public",
      "n0067": "3. 設定 wp-config.php",
      "n0068": "4. 部署 PHP + 發布 Nginx／SSL",
      "n0069": "A 記錄值必須是 IPv4",
      "n0070": "A 記錄必須是 IPv4",
      "n0071": "AAAA 記錄值必須是 IPv6",
      "n0072": "AAAA 記錄必須是 IPv6",
      "n0073": "AOF 持久化",
      "n0074": "Adminer 檔案不存在；請 下載:是",
      "n0075": "代理 無法在全域範圍執行高風險寫入",
      "n0076": "代理 運行時",
      "n0077": "允許清單 工具清單",
      "n0078": "Axum + Tokio；需 cargo 建置 下載 crates（需外網）",
      "n0079": "Axum 範本：cargo 建置 --release 需外網 crates.io",
      "n0080": "Binlog 保留（天）",
      "n0081": "Binlog 保留（秒）",
      "n0082": "Binlog 格式",
      "n0083": "初始化 第一個節點（僅一次）",
      "n0084": "Bot 掃描",
      "n0085": "命令列 啟用 OPcache",
      "n0086": "CONFIG SET databases 未成功（可能需重啟後生效）",
      "n0087": "CPU 配額須為 1–10000",
      "n0088": "Cloudflare UA 未成功",
      "n0089": "Cloudflare Under Attack 已請求",
      "n0090": "Cookie Secure（僅 HTTPS）",
      "n0091": "資料庫 index 必須為 0–15",
      "n0092": "資料庫 標記已隔離但 主目錄 目錄不存在",
      "n0093": "資料庫 標記已隔離但 識別碼 找不到用戶 — 請重新建立系統用戶",
      "n0094": "DB_PASSWORD 為空 — 請在資源頁建立 MySQL 後填入或設 WP_DB_* 環境變數",
      "n0095": "DDoS 啟發式",
      "n0096": "DKIM 公鑰",
      "n0097": "DMARC 政策",
      "n0098": "DNS 已寫入 ≠ 公網 resolver 立即生效（受 TTL／上游快取影響）",
      "n0099": "DS 在 registrar 發佈前，請勿宣稱已上線。",
      "n0100": "Django 骨架：部署時 pip 安裝 django/gunicorn",
      "n0101": "Down 需 confirmName 等於介面名",
      "n0102": "EmailService 無 dataDir — 只寫資料庫（需 dataDir 才建 Maildir）",
      "n0103": "FPM 重載失敗",
      "n0104": "FTPS 需要域名",
      "n0105": "FastAPI + uvicorn；requirements.txt；/ 與 /health",
      "n0106": "Flask 最小 app.py；requirements.txt；/ 與 /health",
      "n0107": "GTID 模式：兩邊 設定檔 已開 gtid_mode=ON",
      "n0108": "Galera 僅支援 mariadb 引擎",
      "n0109": "Git URL 無效",
      "n0110": "GitHub 套件.json 缺少 version",
      "n0111": "GitHub release 缺少 標籤",
      "n0112": "Go 執行",
      "n0113": "Go 多版本",
      "n0114": "HTTP 設定檔 with ACME webroot（尚未掛 TLS）",
      "n0115": "HTTP 基本認證失敗",
      "n0116": "HTTPS 站點建議開啟",
      "n0117": "IMAP／POP 登入失敗",
      "n0118": "IP 准入政策未啟用（只影響查詢／enrich）",
      "n0119": "IP 無效",
      "n0120": "IPv4 前綴須 0–32",
      "n0121": "IPv6 前綴須 0–128",
      "n0122": "InnoDB 提交刷盤",
      "n0123": "InnoDB 日誌檔大小",
      "n0124": "InnoDB 緩衝池",
      "n0125": "安裝 and publish via 管理員 面板 (Webmail 安裝).",
      "n0126": "L7 爆量／異常流量",
      "n0127": "LLM 回應格式異常（缺少安全標記）",
      "n0128": "Let’s Encrypt HTTP-01 需要 80 可達；DNS-01 則需 介面 權杖。",
      "n0129": "LimitNOFILE 須為 64–10000000",
      "n0130": "MTU 須在 68–65535",
      "n0131": "MX 指向郵件主機名",
      "n0132": "MX 格式：優先級 主機（例如 10 mail.example.com.）",
      "n0133": "MariaDB 伺服器",
      "n0134": "MariaDB 特有：one-thread-per-connection / 程序池-of-threads",
      "n0135": "MySQL 伺服器",
      "n0136": "MySQL/MariaDB 客戶端",
      "n0137": "NetworkManager 不可用，無法寫入 DNS",
      "n0138": "Nginx 收緊限速（約 8 req/s）",
      "n0139": "Nginx 極嚴限速（約 3 req/s）",
      "n0140": "Nginx 溫和限速（約 20 req/s）",
      "n0141": "節點 多版本",
      "n0142": "節點 安裝失敗",
      "n0143": "節點.js 起步",
      "n0144": "OPcache 記憶體（MB）",
      "n0145": "PHP docroot + wp-config 範例（核心需另下載）",
      "n0146": "PHP 多版本",
      "n0147": "PHP 行程啟動後未取得行程編號",
      "n0148": "PHP 隔離 degraded — 未以專案 Linux 用戶（需要管理員權限 + 建立系統用戶）",
      "n0149": "PID 必須為正整數",
      "n0150": "PID 無效",
      "n0151": "PING 成功",
      "n0152": "PM2 啟動失敗 — 改用 pidfile 啟動",
      "n0153": "PM2 行程管理",
      "n0154": "POST 體積上限",
      "n0155": "Per-sender：依 envelope sender 網域 計 msgs/hour；超限 DEFER_IF_PERMIT",
      "n0156": "Postfix suspend map 已套用（check_recipient_access REJECT）",
      "n0157": "PostgreSQL 伺服器",
      "n0158": "PostgreSQL 伺服器尚未安裝",
      "n0159": "PostgreSQL 客戶端",
      "n0160": "PostgreSQL 服務未運行",
      "n0161": "PowerDNS 工具",
      "n0162": "主節點：建立 replication 用戶（SQL 腳本）",
      "n0163": "Python Django（骨架）",
      "n0164": "Python 多版本",
      "n0165": "Python 行為",
      "n0166": "RDB 快照規則",
      "n0167": "RDB 檔名",
      "n0168": "RUSTFLAGS（建置）",
      "n0169": "Redis dbIndex 須為 0–15",
      "n0170": "Redis 匯出 需要 系統變更權限已開啟",
      "n0171": "Redis 伺服器",
      "n0172": "Redis 伺服器尚未安裝或無法連線",
      "n0173": "Redis 啟動後仍無法 PING",
      "n0174": "Redis 客戶端",
      "n0175": "Redis 已啟動",
      "n0176": "Redis 還原需要 系統變更權限",
      "n0177": "Renewal via certbot.timer（dns-01 續期需自動化插件）",
      "n0178": "Rust 建置／執行",
      "n0179": "S3 儲存桶/路徑 未設定",
      "n0180": "SFTP .ssh 變更擁有者 需 管理員權限與系統變更權限",
      "n0181": "SIGKILL 需 confirmKill: 是",
      "n0182": "SMTP 濫用／暴力",
      "n0183": "SPF 政策",
      "n0184": "SRV 建議格式：priority weight 埠 目標",
      "n0185": "遠端登入 暴力破解",
      "n0186": "遠端登入 連線失敗",
      "n0187": "遠端登入 需要 系統變更權限已開啟",
      "n0188": "SSO 已驗證（單次）· 含自動登入密碼",
      "n0189": "SSO 已驗證（單次）· 無密碼",
      "n0190": "SST=mariabackup：各節點需 mariadb-備份",
      "n0191": "工作階段 儲存方式",
      "n0192": "工作階段 嚴格模式",
      "n0193": "工作階段 存活秒數",
      "n0194": "TCP 連接 (inuse)",
      "n0195": "TOTP 確認成功",
      "n0196": "TasksMax 須為 1–1000000",
      "n0197": "UFW 未安裝",
      "n0198": "UFW 狀態讀取失敗",
      "n0199": "清理 工作程序數",
      "n0200": "WAL 等級",
      "n0201": "Web + 郵件",
      "n0202": "Web UI: 找不到 (建置 apps/網站 or set YSK_WEB_ROOT)\\n",
      "n0203": "Web 主機",
      "n0204": "Web 介面建置",
      "n0205": "WebAuthn 註冊驗證失敗",
      "n0206": "WebDAV 未啟用",
      "n0207": "Webmail 域名無效",
      "n0208": "Wildcard／dns-01：certbot 需手動 TXT；面板會啟動流程但 DS/TXT 需於 DNS 提供商完成",
      "n0209": "WordPress（PHP 骨架）",
      "n0210": "YSK PHP 成功 — WordPress 尚未安裝\\\\n",
      "n0211": "系統變更權限 已開但進程非 管理員 — 部分 系統控制／nginx 重新載入 會 已封鎖",
      "n0212": "系統變更權限 已開啟",
      "n0213": "系統變更權限 未開 — 已寫入 ≠ 已套用",
      "n0214": "系統變更權限 未開 — 套用到系統的操作會 已封鎖",
      "n0215": "access 日誌 解析失敗",
      "n0216": "access=機群 需要 fleetAgentId",
      "n0217": "action 須為 reboot | poweroff | cancel",
      "n0218": "apex + www（多 邊緣 預留）+ cdn 主機名佔位",
      "n0219": "apex CNAME 在多數授權伺服器不建議／不相容",
      "n0220": "app.py 已存在 — 已略過",
      "n0221": "已套用 ≠ healthy — 請跑 探測 確認 wsrep",
      "n0222": "套用 後需 重新載入 sshd；錯誤 Match 可能鎖死 — 先 預覽試行",
      "n0223": "applySystem 已傳但本次無 suspend/autoreply 變更",
      "n0224": "apply_status=已寫入（控制面成功 ≠ 系統 MTA 已生效；加 applySystem:是 先套用）",
      "n0225": "apps/網站/dist 已存在",
      "n0226": "套件管理 列表 --upgradable：無輸出（可能無更新或 套件管理 未就緒）",
      "n0227": "套件管理 安裝失敗",
      "n0228": "套件管理-get 可用",
      "n0229": "auto 清理 關閉",
      "n0230": "已封鎖: 需要 HostExecutor + 系統變更權限已開啟",
      "n0231": "初始化 中止：節點 失敗",
      "n0232": "初始化 中止：套件管理 失敗",
      "n0233": "初始化 關鍵步驟失敗",
      "n0234": "candidateVersion 含非法字元",
      "n0235": "cargo 可執行檔",
      "n0236": "certbot 結束 0 — 檢查 /etc/letsencrypt/live/",
      "n0237": "變更擁有者 需要 系統變更權限 與管理員權限",
      "n0238": "clone 前已清除佔位應用檔（YSK scaffold / stub）",
      "n0239": "cluster_size 未知或 0",
      "n0240": "command 含 ysk-server / @ysk/伺服器 特徵",
      "n0241": "control plane 檔案未完成整",
      "n0242": "cwd 不可讀",
      "n0243": "dataDir 不存在",
      "n0244": "dataDir 缺 ysk.json — 控制面狀態未完成整",
      "n0245": "dataDir/電郵 已存在",
      "n0246": "dataDir/網站 已存在",
      "n0247": "database 找不到",
      "n0248": "db-util（FTP 帳戶庫）",
      "n0249": "deployNode 只適用於 節點 專案",
      "n0250": "df 無可用 mount（或全被過濾）",
      "n0251": "dig 不可用，改用 node dns",
      "n0252": "dig 無答案（NXDOMAIN 或空）",
      "n0253": "dns-01：面板不代填公網 TXT — 完成後再「分發 SSL」",
      "n0254": "dnssec-dsfromkey 未能產生 DS",
      "n0255": "dnssec-keygen 不在 PATH（套件管理 安裝 bind9-dnsutils）",
      "n0256": "dnssec-keygen 失敗",
      "n0257": "dnssec-signzone 不可用 — 只保留金鑰／DS",
      "n0258": "dnssec-signzone 未產生 .signed 檔",
      "n0259": "網域 必填",
      "n0260": "網域 找不到",
      "n0261": "dovecot 重新載入 失敗或服務未裝（sieve 檔已寫；不標假 重新載入 成功）",
      "n0262": "預覽試行機群派送（未入佇列）",
      "n0263": "預覽試行 對等節點 推送 計劃（未 安全複製）",
      "n0264": "預覽試行 remote 安裝（未 ssh）",
      "n0265": "預覽試行 傳輸 完成（略過 full 初始化）",
      "n0266": "預覽試行 — pass 套用/執行 才寫 主目錄 檔",
      "n0267": "預覽試行 — pass 套用/執行 才真正 ssh",
      "n0268": "預覽試行 — 未寫入 /etc",
      "n0269": "預覽試行 預設：加 --執行 先套用 ufw",
      "n0270": "預覽試行：inventory + preflight 通過，未 套件/傳輸",
      "n0271": "預覽試行：僅探測／計劃。加 --執行 且 系統變更權限已開啟 先真正 provision",
      "n0272": "預覽試行：已寫入管理檔（dataDir）。加 執行 + 系統變更權限已開啟 與管理員權限 先裝系統 drop-in",
      "n0273": "預覽試行：未封禁。加 --執行 且 系統變更權限已開啟 先真正 封鎖",
      "n0274": "預覽試行：未解封。加 --執行 且 系統變更權限已開啟 先真正 unban",
      "n0275": "dryRun=是 — 不實際變更 介面",
      "n0276": "dryRun：未寫入磁碟",
      "n0277": "匯出 已寫入 dataDir，尚未 傳輸",
      "n0278": "啟用 失敗",
      "n0279": "執行 模式（仍需 系統變更權限已開啟 與管理員權限）",
      "n0280": "執行 需要 enqueue 回調",
      "n0281": "export 僅限 管理員",
      "n0282": "fail2ban 套用指令失敗",
      "n0283": "fail2ban 服務",
      "n0284": "fail2ban 未 active",
      "n0285": "fail2ban 未在跑",
      "n0286": "fail2ban 活躍封禁",
      "n0287": "fail2ban 狀態讀取失敗",
      "n0288": "fail2ban：sshd、nginx-http-auth 等標準 jail",
      "n0289": "fd 計數不可用",
      "n0290": "檔案（檔案）",
      "n0291": "機群 清除 已封鎖 — 需 enqueue 或 遠端登入",
      "n0292": "機群 成員請用 db-叢集 機群 --op 探測 --執行",
      "n0293": "fromPanel 僅限 管理員",
      "n0294": "fromPanel 需要先 step-up：POST /api/v1/auth/totp/step-up",
      "n0295": "fullchain 必須是 PEM 憑證",
      "n0296": "gateway 須為純 IP",
      "n0297": "geo apex：無 EDNS 時寫入所有 geo 健康 邊緣 的 multi-A（不是真·用戶就近 Anycast）",
      "n0298": "geoMap 內無健康 邊緣 — 回退全部健康 邊緣",
      "n0299": "geo：未設定 geoMap — 等同 multi_a（全部健康 邊緣）。請在站點 dns.geoMap 填 region→nodeIds",
      "n0300": "git binary 找不到 on 路徑",
      "n0301": "git 可執行檔",
      "n0302": "go 可執行檔",
      "n0303": "healthUrl 必須是 http(s) URL",
      "n0304": "http-01 webroot — 需 80 端口可達且 ACME 設定檔 已 fan-out",
      "n0305": "identity 未綁定 linuxUser/project — 無法寫 authorized_keys",
      "n0306": "ignoreip 來源：dataDir/fail2ban/ignoreip.txt",
      "n0307": "index.html + CSS，供 Nginx 管理員 或靜態部署",
      "n0308": "安裝 設定檔 → 系統控制 重新啟動 mariadb（非 初始化 節點）",
      "n0309": "ip -j addr 無介面",
      "n0310": "job 無 manifest",
      "n0311": "系統日誌 來源；實際可讀性視權限",
      "n0312": "journalctl 可能需要 root 或使用者在 systemd-journal／adm 組",
      "n0313": "金鑰 不存在",
      "n0314": "金鑰 不存在或未刪除",
      "n0315": "kill -0 仍成功：進程可能為 zombie 或權限不足",
      "n0316": "kill -0 失敗",
      "n0317": "last_apply 已套用 但 已封鎖",
      "n0318": "last_apply 同時 成功=是 與 已封鎖（不誠實）",
      "n0319": "local cache 目錄空／新建",
      "n0320": "localhost 或 *",
      "n0321": "logical 資料庫 0 … N-1；改後需重啟",
      "n0322": "logrotate 已安裝",
      "n0323": "logrotate 未安裝或不在 PATH",
      "n0324": "main.py 已存在 — 已略過",
      "n0325": "manage.py + minimal settings/urls/wsgi；需 pip 安裝 django",
      "n0326": "manifest 無 dumpRelPath — 未打包？",
      "n0327": "manifest 無 rdbRelPath",
      "n0328": "memoryMax 格式須如 512M 或 1G",
      "n0329": "migrate 主機 需 --執行 + 系統變更權限已開啟，或 --預覽試行（僅 inventory+preflight）",
      "n0330": "migrate post 需 --執行 且 系統變更權限已開啟（在目標機執行）",
      "n0331": "migrate post 需要 系統變更權限已開啟",
      "n0332": "migrate post 需要 系統變更權限已開啟（應在目標機執行）",
      "n0333": "minimal 初始化 失敗",
      "n0334": "mysql 客戶端",
      "n0335": "mysql-從節點 僅支援 mysql 引擎",
      "n0336": "mysql_databases 列缺 名稱",
      "n0337": "named-checkzone 不在 PATH — 檔已寫入，語法未驗證",
      "n0338": "nginx -t 或 重新載入 失敗",
      "n0339": "nginx -t 未通過，未重載",
      "n0340": "nginx 重新載入 成功 · 狀態：已套用",
      "n0341": "nginx 重新載入 失敗",
      "n0342": "nginx 可執行檔",
      "n0343": "nginx 執行層已關閉（enforce.nginx=否）",
      "n0344": "nginx 服務",
      "n0345": "nice 須在 -20（最高優先）至 19（最低）",
      "n0346": "node 可執行檔",
      "n0347": "npm latest 缺少版本資訊",
      "n0348": "npm 指令 結束 0 但仍找不到 binary — 套件可能未提供 命令列 或 路徑 未更新",
      "n0349": "nullok 避免未寫檔用戶被鎖",
      "n0350": "nullok：無 .google_authenticator 的用戶仍可用 金鑰 登入",
      "n0351": "open_basedir 路徑限制",
      "n0352": "openssl 不可用，改用 YSK-SCRYPT 雜湊",
      "n0353": "openssl（信箱雜湊）",
      "n0354": "optionalEtc 失敗不中止 傳輸（可於目標重簽憑證）",
      "n0355": "origin shield：此節點為 shield，直接連 origin",
      "n0356": "origin.kind 必須是 project 或 url",
      "n0357": "origin.project 需要 projectId",
      "n0358": "origin.url 必須是 http(s) URL",
      "n0359": "originShieldNodeId 必須在 edgeNodeIds 內",
      "n0360": "套件 匯出 未完成 — 禁止 傳輸",
      "n0361": "套件 失敗 — 不得進入 傳輸",
      "n0362": "套件 需要 系統變更權限已開啟",
      "n0363": "pam.d/sshd 尚未引用 pam_google_authenticator（檔寫了也未 enforce）",
      "n0364": "面板 尚未設定 雙重驗證 或無 secret — 請先在「我的安全」啟用 TOTP",
      "n0365": "面板 無 TOTP secret — 先在 Web 啟用 雙重驗證 或勿用 --from-面板",
      "n0366": "面板 需把 login 失敗寫入可被 fail2ban 讀的 日誌（系統日誌 或檔）",
      "n0367": "passkey 已登記",
      "n0368": "passkey 驗證失敗",
      "n0369": "passkey 驗證成功",
      "n0370": "pdnsutil 找不到 — 安裝 PowerDNS tools or run helper script as 管理員 after 安裝",
      "n0371": "對等節點 遠端登入 探測 需 系統變更權限已開啟（已只做本機）",
      "n0372": "對等節點 未探測（只 探測 本機）",
      "n0373": "對等節點 節點仍需各自套用 設定檔 並 join",
      "n0374": "php binary 找不到 — 安裝 php-cli",
      "n0375": "php 可執行檔",
      "n0376": "php 未在 PATH",
      "n0377": "pidfile 以控制面用戶啟動（degraded）",
      "n0378": "pidfile 啟動未取得 pid",
      "n0379": "pm2 不在 PATH（仍可用 pidfile／系統服務）",
      "n0380": "pm2 找不到 on 路徑 — 安裝: npm i -g pm2",
      "n0381": "post-傳輸 停在 reapply",
      "n0382": "post-傳輸 停在 還原",
      "n0383": "postconf 未能確認 message_rate_limit（不當完整 已套用）",
      "n0384": "kind postgres-replica 需要 --engine postgres",
      "n0385": "postgres_databases 列缺 名稱",
      "n0386": "postqueue 不可用或郵件堆疊未安裝",
      "n0387": "preflight 失敗",
      "n0388": "主節點 無 binlog / 主節點 狀態 空",
      "n0389": "privkey 必須是 PEM 私鑰",
      "n0390": "productionReady 未達標（資料可能已齊）",
      "n0391": "ps 輸出無進程列",
      "n0392": "ps 降級：無 --sort／精簡欄位",
      "n0393": "ps 降級：無 pri/vsz/stat 等欄",
      "n0394": "psql 客戶端",
      "n0395": "清除 全部失敗或無目標",
      "n0396": "python3 可執行檔",
      "n0397": "已排隊 ≠ 邊緣 已 清除",
      "n0398": "已排隊 ≠ 邊緣 已 重新載入 — 代理 需拉取並執行 cdn.邊緣.套用",
      "n0399": "已排隊 ≠ 邊緣 已執行 — Agents 紀錄查看 結束/JSON",
      "n0400": "realpath 快取大小",
      "n0401": "realpath 快取秒數",
      "n0402": "reapply 需要 系統變更權限已開啟",
      "n0403": "redis 叢集僅支援 redis",
      "n0404": "registry shasum 非 sha256（npm 常用 sha1）— 以 npm integrity 為準",
      "n0405": "重新載入/重新啟動 失敗",
      "n0406": "remote post 失敗 — 可於目標機手動 migrate post",
      "n0407": "Restic 增量備份完成（已寫入/已套用 視 Restic 結束）",
      "n0408": "Restic 已啟用但未設定 密碼 — 拒絕使用內建預設密碼（請在備份設定填寫）",
      "n0409": "Restic 未啟用",
      "n0410": "Restic 未啟用 — 無法列出 快照",
      "n0411": "Restic 未啟用 — 請先在「遠端／排除」開啟並設定 密碼",
      "n0412": "Restic 未啟用（僅 封存）",
      "n0413": "Restic 未啟用（略過增量）",
      "n0414": "Restic 未安裝（不在 PATH），請於系統安裝 Restic 後再試",
      "n0415": "還原 成功；略過 reapply/verify",
      "n0416": "還原 完成",
      "n0417": "還原 有失敗項",
      "n0418": "還原 未完全成功",
      "n0419": "還原 需要 系統變更權限已開啟",
      "n0420": "還原+reapply 成功；略過 verify",
      "n0421": "同步複製 dataDir 失敗",
      "n0422": "同步複製 需要 系統變更權限已開啟",
      "n0423": "安全複製 已寫入但無法 重新載入：遠端無 rndc/named/bind9/pdns",
      "n0424": "安全複製 成功 ≠ 對等節點 已 重新啟動 / 已 join",
      "n0425": "secrets 金鑰 可用",
      "n0426": "secrets 主節點 金鑰 存在",
      "n0427": "哨兵 模式但未登記 哨兵 角色成員",
      "n0428": "哨兵：INFO replication 僅作參考；請查 哨兵 masters",
      "n0429": "伺服器 IP 必須是 IPv4",
      "n0430": "伺服器 IPv6 無效",
      "n0431": "setquota 不在 PATH — 僅控制面軟配額（deploy 前 du 擋）",
      "n0432": "shell 路徑無效",
      "n0433": "signal 必須為 TERM | KILL | HUP | USR1",
      "n0434": "ssh 是 成功 → verified",
      "n0435": "sshd keyboard-interactive / challenge-response 似已開啟",
      "n0436": "sshd 可能未開 KbdInteractiveAuthentication — TOTP 無法在 遠端登入 提示",
      "n0437": "sshpass 可用（密碼登入）",
      "n0438": "strict Match 僅針對已寫檔用戶（密碼 off）",
      "n0439": "symlink 指向敏感路徑",
      "n0440": "symlink 逃出 日誌 目錄",
      "n0441": "symlink 逃出專案 主目錄",
      "n0442": "系統控制 指令失敗",
      "n0443": "系統服務 啟用失敗 — 改試 PM2／pidfile",
      "n0444": "系統服務 啟用未能執行：需要系統變更權限與管理員",
      "n0445": "目標 格式：用戶@主機 或 用戶@主機:埠",
      "n0446": "權杖 已使用",
      "n0447": "權杖 已過期",
      "n0448": "top -b 不可用（進程表仍以 ps 為準）",
      "n0449": "傳輸 中止：dataDir 同步複製 失敗",
      "n0450": "傳輸 中止：無法建立遠端目錄",
      "n0451": "傳輸 完成（略過 full 初始化）",
      "n0452": "傳輸 已完成，但目標 還原/reapply/verify 失敗",
      "n0453": "傳輸 有失敗項",
      "n0454": "傳輸 校驗失敗",
      "n0455": "傳輸 需要 系統變更權限已開啟",
      "n0456": "傳輸/初始化 失敗",
      "n0457": "ufw 指令執行失敗",
      "n0458": "服務單元 與 action 必填",
      "n0459": "useradd 需要 系統變更權限 與管理員權限",
      "n0460": "value 過大（上限 256KB）",
      "n0461": "verify 有關鍵不一致",
      "n0462": "verify 未通過 — 不得視為遷移完成",
      "n0463": "verify 通過 — job=done",
      "n0464": "vsftpd 啟動失敗",
      "n0465": "vsftpd 未能成功啟動",
      "n0466": "weighted: 無 邊緣",
      "n0467": "wp-config.php 已存在 — 已略過",
      "n0468": "已寫入 ≠ Dovecot Pigeonhole 已載入 — 需 ManageSieve 或 symlink 到 用戶 sieve",
      "n0469": "已寫入 ≠ Roundcube 已載入 — 用 enableSystem 或手動 symlink",
      "n0470": "已寫入不等於已套用：需同步到系統 conf.d，並通過 nginx 檢查後重新載入",
      "n0471": "已寫入 ≠ 公開可連 — 需 reverse proxy 到面板 /webdav",
      "n0472": "已寫入 ≠ 線上行程已重載",
      "n0473": "ysk-server 命令列 安裝失敗 — 可稍後手動 npm i -g ysk-server",
      "n0474": "ysk-網站 群組供 Nginx/www-data 讀靜態（非 world-readable）",
      "n0475": "ysk-網站 群組需 系統變更權限 與管理員權限（靜態 Nginx 可能無法讀 750 主目錄）",
      "n0476": "ysk.json fingerprint 已變（可能 reapply 寫回）local≠source",
      "n0477": "ysk.json fingerprint 與來源一致",
      "n0478": "ysk.json fingerprint 與來源不同（若只清了 bind_ip 屬預期）",
      "n0479": "ysk.json 存在",
      "n0480": "ysk.json 校驗失敗",
      "n0481": "zone 套用 已封鎖（無 執行）— 記錄已更新於控制面",
      "n0482": "zone rectify 完成",
      "n0483": "zone 名稱無效",
      "n0484": "zone 找不到",
      "n0485": "zone 解析失敗",
      "n0486": "一般查詢日誌",
      "n0487": "一鍵安裝",
      "n0488": "一鍵建立完成（draft 資源請到各頁「套用」）",
      "n0489": "上傳與 POST",
      "n0490": "上次全部備份有失敗",
      "n0491": "下一步：寫入 設定檔 → 套用 edges → DNS 同步（及可選 SSL）",
      "n0492": "下一步：將 PAM 片段併入 /etc/pam.d/sshd（nullok）",
      "n0493": "下一步：系統安裝 libpam-google-authenticator + 合併 PAM 片段（見下方）",
      "n0494": "不可刪除沙箱根目錄",
      "n0495": "不可刪除沙箱根目錄或回收桶路徑",
      "n0496": "不存在",
      "n0497": "不支援此操作方法",
      "n0498": "不支援的訊號（只允許 TERM / KILL / HUP / USR1）",
      "n0499": "不是資料夾",
      "n0500": "不能刪除最後一個 管理員",
      "n0501": "中繼埠號無效",
      "n0502": "中繼已套用到系統",
      "n0503": "中繼設定已寫入 dataDir（套用到系統需開啟系統變更）",
      "n0504": "主機 memory 使用率超過 90%",
      "n0505": "主機指標",
      "n0506": "主要記憶體快取，通常為 RAM 50–70%",
      "n0507": "二進位不在 PATH，服務無法就緒",
      "n0508": "二進制日誌",
      "n0509": "互動逾時（秒）",
      "n0510": "人必須做：雲防火牆、郵件 PTR/rDNS、舊機保留觀察期",
      "n0511": "今日已自動 清理",
      "n0512": "仍需到 定時工作 頁「安裝到系統 定時工作表」才會真正生效",
      "n0513": "以 Nginx 管理員 或「靜態部署」提供 public/",
      "n0514": "以 管理員 啟動 ysk-server 服務（系統控制 / 控制面 服務單元）",
      "n0515": "以 管理員 啟動並設定 系統變更權限已開啟（見主機設定／部署文件）",
      "n0516": "以控制面用戶執行指令（degraded — 非專案 Linux 用戶）",
      "n0517": "任意 shell — 預設拒絕",
      "n0518": "伺服器字元集",
      "n0519": "伺服器尚未安裝對應程式（command -v 無結果）",
      "n0520": "伺服器排序規則",
      "n0521": "伺服器未安裝 MySQL 客戶端",
      "n0522": "伺服器未安裝 PostgreSQL 客戶端",
      "n0523": "伺服器未安裝 Redis 客戶端",
      "n0524": "伺服器未安裝必要元件，無法在管理面板完成此操作",
      "n0525": "伺服器未開啟 系統變更權限",
      "n0526": "伺服器未開啟系統變更權限或缺少 管理員，無法在管理面板完成安裝",
      "n0527": "伺服器未開啟系統變更權限，無法匯出 Redis",
      "n0528": "伺服器未開啟系統變更權限，無法在管理面板下載安裝 Webmail",
      "n0529": "伺服器未開啟系統變更權限，無法完成套用",
      "n0530": "伺服器未開啟系統變更權限，無法建立 遠端登入 連線",
      "n0531": "伺服器未開啟系統變更權限，無法打包 匯出",
      "n0532": "伺服器未開啟系統變更權限，管理面板無法完成系統層操作",
      "n0533": "伺服器未開啟系統變更權限：已寫入管理檔，無法 named-checkzone / 重新載入",
      "n0534": "伺服器監聽埠",
      "n0535": "佇列為空",
      "n0536": "位元碼快取",
      "n0537": "使用 YSK-SCRYPT 後備雜湊（生產環境建議改為 openssl 雜湊）",
      "n0538": "使用 YSK_SECRETS_KEY",
      "n0539": "使用 baseUrl/.ysk-cdn-health 預設探活路徑（C2 可裝 health location）",
      "n0540": "使用呼叫端指定版本（latestOverride）",
      "n0541": "使用環境變數 YSK_LATEST_VERSION（離線／測試覆蓋）",
      "n0542": "來源不可用",
      "n0543": "來源缺 mysqldump — 套件 階段將無法匯出 MySQL",
      "n0544": "來源缺 pg_dump — 套件 階段將無法匯出 Postgres",
      "n0545": "來源缺 redis-cli — 套件 階段將無法匯出 Redis RDB",
      "n0546": "來源缺 sshpass",
      "n0547": "來源需要 同步複製（未安裝）",
      "n0548": "來源預檢未通過",
      "n0549": "來源預檢通過",
      "n0550": "例如 128M、256M、512M、-1（無限）",
      "n0551": "例如 512MiB；留空不設",
      "n0552": "例如 900 1 300 10；空字串關閉",
      "n0553": "到 /agents 複製 session UUID 填入叢集表單，或 CLI --member 10.0.0.3=從節點:機群:SESSION_UUID",
      "n0554": "供應商 = ASN（自治系統），非消費品牌名",
      "n0555": "保持 22/80/443；受攻擊時可手動關非必要埠",
      "n0556": "保留策略：最近 10 份",
      "n0557": "保護 ysk-server process.pid",
      "n0558": "保護模式",
      "n0559": "偵測到 pam_google_authenticator 模組",
      "n0560": "備份 封存 成功但遠端／Restic 有問題",
      "n0561": "僅 管理員",
      "n0562": "僅 管理員 可 impersonate",
      "n0563": "僅 管理員 可執行整機電源操作",
      "n0564": "僅 apex A",
      "n0565": "已列出託管設定（未寫入系統）",
      "n0566": "僅寫入 PM2 設定，未啟動程序",
      "n0567": "僅寫入管理檔（未要求重載）",
      "n0568": "僅寫入管理設定 — 就緒後再發布並重載",
      "n0569": "僅寫入範本（未要求 啟用）",
      "n0570": "僅控制面登記（套用:否）；密碼只回傳一次",
      "n0571": "僅支援 postgres + postgres-從節點",
      "n0572": "僅支援 redis + redis-從節點|redis-哨兵",
      "n0573": "僅有磁碟佔用粗估，不是 HIT 比率",
      "n0574": "僅見 stub resolv（127.0.0.53）；實際上行 DNS 請看 resolvectl",
      "n0575": "僅警告，可繼續",
      "n0576": "儀表為控制面彙總；公網流量／真實 CDN 命中率需 邊緣 access 日誌 含 cache 狀態",
      "n0577": "儲存後會於下次部署寫入 系統服務 Environment / 行程 env",
      "n0578": "允許 URL include",
      "n0579": "允許 URL 當檔案開",
      "n0580": "允許上傳檔案",
      "n0581": "免費最高細分：國家 + 省／州 + 城市（enrich）+ ASN；城市政策預設關",
      "n0582": "全部 邊緣 fan-out 已套用",
      "n0583": "全部 邊緣 fan-out 失敗",
      "n0584": "全部 邊緣 清除 成功",
      "n0585": "全部 對等節點 nameserver 已 重新載入",
      "n0586": "全部 對等節點 重新載入 失敗 — 檔案可能已在磁碟但權威未重新整理",
      "n0587": "全部 對等節點 失敗",
      "n0588": "全部 對等節點：zone 已推送並 remote 重新載入 成功",
      "n0589": "全部成功",
      "n0590": "全部略過（沒有可備份的 主目錄）— 不視為失敗",
      "n0591": "共享緩衝",
      "n0592": "共用同一 RDB，已還原",
      "n0593": "其他執行期變數",
      "n0594": "其他常用",
      "n0595": "分享不存在或已過期",
      "n0596": "分數極高 — 建議人手套用「緊急」檔（永不自動）",
      "n0597": "分數極高 — 緊急檔需人手確認（永不自動）",
      "n0598": "列出目錄",
      "n0599": "列出行程",
      "n0600": "刪除 預設 路由需 confirmDefault: 是",
      "n0601": "刪除檔案或目錄",
      "n0602": "刪除系統用戶 — 預設拒絕",
      "n0603": "刪除被阻擋：未開啟系統變更權限，且路徑在管理資料目錄外",
      "n0604": "到 fail2ban 頁套用並 啟用 服務",
      "n0605": "到封禁頁一鍵開啟（soft／normal）",
      "n0606": "加固",
      "n0607": "匯出不存在或已過期",
      "n0608": "受攻擊",
      "n0609": "另開 21 與 PASV 段",
      "n0610": "只寫管理檔",
      "n0611": "可套用系統",
      "n0612": "可手動打包 dataDir/clusters/<識別碼>/",
      "n0613": "可檢視設定；安裝／重啟／寫入系統設定需要系統變更權限",
      "n0614": "可考慮切回「日常」或「加固」",
      "n0615": "可選安裝 pm2：npm i -g pm2",
      "n0616": "可選：SSL、WP-命令列、外掛",
      "n0617": "同步帳戶",
      "n0618": "否則只允許還原到 .Restic-還原-* 安全目錄",
      "n0619": "啟動、停止、重啟、開機自啟",
      "n0620": "啟動行程後未取得行程編號",
      "n0621": "啟用 OPcache",
      "n0622": "啟用 SSL",
      "n0623": "啟用中",
      "n0624": "單一檔案上限",
      "n0625": "單次最多檔案數",
      "n0626": "單節點有 wsrep，但 HA 需 ≥2 節點",
      "n0627": "在「資源」建立 MySQL（或填入現有 資料庫）並設 WP_DB_* 環境變數",
      "n0628": "域名尚無郵箱 — 只保留 網域-level vacation 草稿",
      "n0629": "域名無效",
      "n0630": "域名狀態：active（控制面旗標）",
      "n0631": "域名狀態：suspended（控制面旗標；不等於 Postfix 已拒信）",
      "n0632": "埠、綁定、連線上限",
      "n0633": "埠檢查異常",
      "n0634": "執行",
      "n0635": "執行緒模型",
      "n0636": "壓縮檔不支援預覽（.gz 等）",
      "n0637": "壞 Bot",
      "n0638": "外網探測",
      "n0639": "失控時最後手段",
      "n0640": "套件名不合法",
      "n0641": "套件安裝未能執行：需要系統變更權限",
      "n0642": "套件更新需要系統管理員權限",
      "n0643": "套用到 vsftpd",
      "n0644": "套用到系統",
      "n0645": "套用防護檔只會寫管理檔；需 系統變更權限已開啟 與管理員權限 才 已套用",
      "n0646": "威脅已回落",
      "n0647": "字串 intern 緩衝（MB）",
      "n0648": "存取密碼",
      "n0649": "存在錯誤級問題，請修正後再 套用",
      "n0650": "請先到「安全 → 我的安全」開啟管理員雙重驗證，再到「用戶」新增備援管理員。",
      "n0651": "安全與路徑",
      "n0652": "安裝 PAM",
      "n0653": "安裝 vsftpd",
      "n0654": "安裝失敗",
      "n0655": "安裝套件",
      "n0656": "安裝完成",
      "n0657": "安裝步驟",
      "n0658": "安裝系統設定",
      "n0659": "完整",
      "n0660": "客戶端閒置逾時",
      "n0661": "密碼加密",
      "n0662": "密碼只出現在 SQL 腳本佔位符 請自行更改",
      "n0663": "密碼已以 crypt 雜湊儲存（不存明文）",
      "n0664": "密碼為空",
      "n0665": "密碼登入需要 sshpass",
      "n0666": "密碼登入需要本機安裝 sshpass",
      "n0667": "密碼至少需要 8 字元",
      "n0668": "密碼過短（至少 8 字）— 郵箱已建立但未寫入雜湊",
      "n0669": "密碼需由安全管道設定",
      "n0670": "審批仍在等待中",
      "n0671": "審批動作與請求不符",
      "n0672": "審批已被拒絕",
      "n0673": "寫入 NODE_OPTIONS=--max-old-space-size=N",
      "n0674": "寫入 Nginx 限速 drop-in",
      "n0675": "寫入 主目錄 檔 ≠ PAM 已生效",
      "n0676": "寫入失敗",
      "n0677": "寫入帳戶檔",
      "n0678": "寫入檔案",
      "n0679": "封存模式",
      "n0680": "將片段 Include 到 sshd_config，或 POST /api/v1/sftp/sshd-snippet/apply 安裝",
      "n0681": "專案 Linux 用戶隔離",
      "n0682": "專案 識別碼 必填",
      "n0683": "專案 識別碼 無效，無法產生 主目錄",
      "n0684": "專案 識別碼 過短，無法產生系統用戶名",
      "n0685": "專案 internal-sftp Match 用戶通常不走 interactive shell — TOTP 主要影響 遠端登入 shell/安全複製",
      "n0686": "專案 managed 日誌 無效",
      "n0687": "專案不存在",
      "n0688": "專案不存在或未設定 主目錄",
      "n0689": "專案名稱無法產生有效系統用戶名",
      "n0690": "專案已恢復",
      "n0691": "專案已暫停（503）",
      "n0692": "專案建立失敗，已中止",
      "n0693": "專案沒有 網域 — 請先設定主域名",
      "n0694": "專案無 linux_user",
      "n0695": "專案級 清除 目前清主機共用 nginx cache 目錄（非 per-vhost zone）",
      "n0696": "專案缺少 linuxUser — 無法建立對齊隔離的 FTP 帳戶",
      "n0697": "專案缺少 linux_user",
      "n0698": "專案覆寫只填要改的鍵；空白＝沿用全域",
      "n0699": "專案詳情 → 隔離 → 建立系統用戶／遷移到 /home/ysk-server-{識別碼}（需 系統變更權限 與管理員權限）",
      "n0700": "對齊 jail 擁有權",
      "n0701": "尚未 os_provisioned",
      "n0702": "尚未下載 GeoIP 庫 — 請在防護中心「IP 准入」按更新",
      "n0703": "尚未分配埠，請先部署專案",
      "n0704": "尚未同步到系統 Nginx（僅管理檔）",
      "n0705": "尚未在伺服器建立 Redis 資源，請確認 redis-cli、TCP 與 系統變更權限已開啟",
      "n0706": "尚未套用到 vsftpd 服務 — 請使用「套用」或 vsftpd 服務頁完成啟動",
      "n0707": "尚未套用郵件域名",
      "n0708": "尚未建置 Web 介面 — 僅 介面 模式",
      "n0709": "尚未有本地 GeoIP 庫 — 請更新",
      "n0710": "尚未產生 DNSSEC 金鑰",
      "n0711": "尚未登記 CDN 節點",
      "n0712": "尚未登記 passkey",
      "n0713": "尚未確認維護窗（套件 階段會停服）",
      "n0714": "尚未設定 LLM 連線",
      "n0715": "尚未載入 zone：請於管理面板重試",
      "n0716": "尚無 CDN 站點",
      "n0717": "尚無託管 Nginx 設定檔",
      "n0718": "尚無可用 HIT/MISS 抽樣 — overall hit-rate 未知",
      "n0719": "尚無專案",
      "n0720": "尚無產物 — 請先 計劃",
      "n0721": "就緒",
      "n0722": "工作階段儲存與 cookie",
      "n0723": "已 啟用 --now fail2ban",
      "n0724": "已 galera_new_cluster（初始化）",
      "n0725": "已 重新載入 fail2ban",
      "n0726": "已 重新載入 nginx",
      "n0727": "已 重新啟動 fail2ban",
      "n0728": "已 安全複製 zone 檔（已寫入 on 對等節點 ≠ named reloaded）",
      "n0729": "已 安全複製 到 對等節點 暫存目錄（已寫入 on 對等節點 ≠ service restarted）",
      "n0730": "已 系統控制 重新載入 nginx",
      "n0731": "已下載並解壓 Roundcube",
      "n0732": "已停用 UFW（警告：主機埠將直接暴露）",
      "n0733": "已儲存專案 php.ini 覆寫；重新套用 FPM／部署後生效",
      "n0734": "已儲存管理設定（未套用到系統服務）",
      "n0735": "已儲存設定（未要求套用系統）",
      "n0736": "已刪除",
      "n0737": "已刪除 金鑰 · 重寫 authorized_keys",
      "n0738": "已刪除叢集登記；系統 設定檔 需人手清理（v1 不自動拆除）",
      "n0739": "已刪除本機臨時金鑰",
      "n0740": "已即時 ip addr add（設定檔已寫入，重開應仍在）",
      "n0741": "已即時套用 databases（部分選項仍需重啟）",
      "n0742": "已取消排程關機／重啟",
      "n0743": "已同步到系統並重載",
      "n0744": "已啟動",
      "n0745": "已啟用 HSTS",
      "n0746": "已啟用 NTP 同步",
      "n0747": "已啟用 UFW",
      "n0748": "已啟用 WebDAV · Basic 用戶 ysk · 密碼為本次 權杖（只顯示一次）",
      "n0749": "已啟用 系統服務 服務",
      "n0750": "已嘗試 stop redis",
      "n0751": "已嘗試清除 nginx cache 目錄並 重新載入（若主機未開 proxy_cache 則可能無檔可清）",
      "n0752": "已在伺服器完成憑證申請流程",
      "n0753": "已套用 CF-only UFW（origin 只收 CF + 保留埠）",
      "n0754": "已套用 fail2ban",
      "n0755": "已套用中繼設定到系統 Postfix",
      "n0756": "已套用到系統 Nginx",
      "n0757": "已套用防火牆規則",
      "n0758": "已安裝並嘗試啟用 ysk-server.service",
      "n0759": "已安裝到目前程序用戶的系統 定時工作表",
      "n0760": "已寫入 .google_authenticator（含 5 組 scratch codes）",
      "n0761": "已寫入 rspamd multimap + postfix snippet",
      "n0762": "已寫入安裝腳本",
      "n0763": "已寫入控制面；請用「套用限制到 OS」或重新 Deploy 寫入 服務單元",
      "n0764": "已寫入管理 jail.local（未要求套用系統）",
      "n0765": "已寫入管理檔；尚未套用到系統 conf.d",
      "n0766": "已寫入設定檔（未下載套件）",
      "n0767": "已寫入調校檔；重新部署專案後才會進線上行程",
      "n0768": "已寫管理檔，但未套用系統 設定檔：需 系統變更權限已開啟",
      "n0769": "已寫管理檔，但未套用系統 設定檔：需要 管理員",
      "n0770": "已封鎖：無真實 candidateVersion",
      "n0771": "已封鎖：需確認高風險更新",
      "n0772": "已封鎖：需要管理員權限",
      "n0773": "已建立 DNSSEC 目錄（僅說明檔）",
      "n0774": "已從",
      "n0775": "已從庫移除（disk 安裝 未自動清除；用 卸載 --清除）",
      "n0776": "已從控制面移除；系統帳號需手動 刪除 用戶（誠實：未自動 drop）",
      "n0777": "已從連線",
      "n0778": "已拒絕",
      "n0779": "已拒絕 by 允許清單",
      "n0780": "已拒絕：無真實升級目標",
      "n0781": "已掃描 nginx access 日誌 樣本",
      "n0782": "已於 MySQL/MariaDB 建立只讀用戶",
      "n0783": "已於 PostgreSQL 建立只讀角色",
      "n0784": "已是最新版本（頻道已確認）",
      "n0785": "已暫停",
      "n0786": "已清空全部佇列",
      "n0787": "已清除 catch-all",
      "n0788": "已產生 DS 紀錄（請自行提交 registrar — 面板不會自動發佈）",
      "n0789": "已產生加密備份（同一 dataDir 主節點 金鑰 可解密）",
      "n0790": "已用 SHA512-CRYPT 雜湊密碼（Dovecot）",
      "n0791": "已略過 Nginx 設定檢查（未安裝或未開系統變更權限）",
      "n0792": "已登記上傳憑證路徑（檔案置於 /etc/ysk-server/certs）",
      "n0793": "已知惡意 UA",
      "n0794": "已確認",
      "n0795": "已確認維護窗",
      "n0796": "已移除控制面登記",
      "n0797": "已移除登記紀錄",
      "n0798": "已符合意圖隔離，無需遷移",
      "n0799": "已裝版本 = 套件管理 Candidate，無可用升級",
      "n0800": "已複製到 /etc/fail2ban/jail.local",
      "n0801": "已退役（磁碟檔案未自動刪；可 卸載）",
      "n0802": "已送出立即重啟指令",
      "n0803": "已送出立即關機指令",
      "n0804": "已重啟 postgresql",
      "n0805": "已重啟 redis-伺服器",
      "n0806": "已重啟 redis-伺服器 以套用需重啟項目",
      "n0807": "已重啟（重載不支援）",
      "n0808": "已重新啟用連線（重開仍在）",
      "n0809": "已重渲染 TLS 邊緣 設定檔（控制面）",
      "n0810": "已重載 Nginx (static site live if DNS points here)",
      "n0811": "已重新載入 Nginx",
      "n0812": "已開啟系統變更權限（系統變更權限）",
      "n0813": "已附一次性登入密碼 — Roundcube 外掛可自動 login",
      "n0814": "帳戶已登記於管理面；需系統權限才能讓 FTP 服務生效",
      "n0815": "帳號已解鎖 (usermod -U)",
      "n0816": "帳號已鎖定 (usermod -L)",
      "n0817": "常見漏洞路徑掃描",
      "n0818": "庫中無此 IP 記錄",
      "n0819": "建立系統用戶需要系統管理員權限",
      "n0820": "建立郵件域名並於詳情頁套用",
      "n0821": "建置完成",
      "n0822": "建議切換至「受攻擊」防護檔",
      "n0823": "建議檢查 遠端登入 與非必要埠",
      "n0824": "建議緊急檔",
      "n0825": "建議至少 1 個 從節點；目前計劃仍可產生 主節點 設定檔",
      "n0826": "建議至少 2 個節點（生產建議 3）；而家計劃仍可產生",
      "n0827": "建議開啟 CDN Under Attack 模式",
      "n0828": "建議開啟自動 封鎖",
      "n0829": "強制 HTTPS（HTTP→301）",
      "n0830": "強制安全傳輸",
      "n0831": "強制離線模式",
      "n0832": "恢復：控制面 狀態=active",
      "n0833": "慢查詢日誌",
      "n0834": "慢查詢閾值（ms）",
      "n0835": "慢查詢閾值（秒）",
      "n0836": "憑證申請失敗",
      "n0837": "應 ≥ 單一檔案上限",
      "n0838": "應設定保留策略清理舊備份",
      "n0839": "成功僅代表此 目標 可 BatchMode 登入，≠ 全域授權",
      "n0840": "或整數如 32767",
      "n0841": "所需軟件均已安裝",
      "n0842": "打包被權限/工具阻擋",
      "n0843": "批量封禁",
      "n0844": "找不到 命令列 binary — 系統服務 不會 啟用 成 silent placeholder",
      "n0845": "找不到 DNS zone — 請在站點 dns.zoneId 指定，或先建立匹配域名的 zone",
      "n0846": "找不到 PowerDNS 工具 — 請安裝 pdns-server / pdns-tools",
      "n0847": "找不到 Roundcube plugins 目錄 — 已寫骨架；請安裝 Roundcube 或傳 roundcubePluginsDir",
      "n0848": "找不到 SQL 檔",
      "n0849": "找不到 Sieve 腳本",
      "n0850": "找不到 config.inc.php — 請手動: $config[\\'plugins\\'][] = \\'ysk_sso\\';",
      "n0851": "找不到 邊緣.設定檔 — 請先渲染",
      "n0852": "找不到 金鑰",
      "n0853": "找不到 migrate job",
      "n0854": "找不到 pm2 — 無法以 PM2 停止",
      "n0855": "找不到別名",
      "n0856": "找不到叢集",
      "n0857": "找不到可 重新載入 的本機 nameserver（rndc/named/bind9/pdns）",
      "n0858": "找不到可用憑證 — 請先於 SSL 頁上傳，或執行 LE 簽發",
      "n0859": "找不到可用的 NetworkManager 連線",
      "n0860": "找不到回收項目",
      "n0861": "找不到實例",
      "n0862": "找不到專案 access 日誌 — 請確認 nginx access_log 路徑或日誌檔存在",
      "n0863": "找不到方案",
      "n0864": "找不到步驟",
      "n0865": "找不到版本",
      "n0866": "找不到節點",
      "n0867": "找不到資料庫",
      "n0868": "拒絕",
      "n0869": "拒絕 down loopback",
      "n0870": "拒絕 renice 自身控制面進程",
      "n0871": "拒絕 系統控制 啟用：未安裝真實 代理 命令列（避免 placeholder 假 running）",
      "n0872": "拒絕修改 loopback 位址（保護）",
      "n0873": "拒絕刪除 loopback 核心地址",
      "n0874": "拒絕覆寫 homeDir — 請設 overwriteHome + confirmPhrase 或改用安全目標目錄",
      "n0875": "拒絕訊號 PID 1（init/系統服務 保護）",
      "n0876": "拒絕訊號疑似 ysk 控制面進程；進階可 forceControlPlane",
      "n0877": "拒絕訊號自身進程（ysk-server）；若確定需要請 forceSelf",
      "n0878": "拒絕讀取敏感路徑",
      "n0879": "拒絕路徑穿越或非法字元",
      "n0880": "持久 預設 路由需要 Gateway",
      "n0881": "持久化",
      "n0882": "指令參數為空",
      "n0883": "指令被阻擋：變更主機需開啟系統變更權限（系統變更權限）",
      "n0884": "掃描",
      "n0885": "掃描路徑",
      "n0886": "探測 INFO replication",
      "n0887": "探測 SHOW 主節點 / 從節點 狀態",
      "n0888": "探測 pg_is_in_recovery / pg_stat_replication",
      "n0889": "探測 wsrep（SHOW 狀態 LIKE 'wsrep%'）",
      "n0890": "控制面已寫入但尚未 已套用 到系統 — 檢查各功能頁「套用」",
      "n0891": "控制面維持正常模式",
      "n0892": "控制面緊急降級（local ops）",
      "n0893": "控制面資料目錄",
      "n0894": "控制面進入 ddos-protection 提示",
      "n0895": "推送結果未完成整（partial/失敗）",
      "n0896": "提升連線速度，僅用 IP 授權",
      "n0897": "提示：填 Cloudflare zones + CF_API_TOKEN 先可 Under Attack 介面",
      "n0898": "操作無法完成",
      "n0899": "收緊 Nginx 限速並強化 fail2ban",
      "n0900": "效能與資源",
      "n0901": "新 IP／域名不宜立刻高量出站。請檢查 Spamhaus 等黑名單，並遵循暖機指引。",
      "n0902": "新增 A／AAAA（apex 與 www）",
      "n0903": "新增 DMARC TXT 記錄",
      "n0904": "新增 MX／SPF／DKIM DNS 記錄",
      "n0905": "新增 _dmarc TXT 以改善投遞與回報。",
      "n0906": "方式 + 閾值",
      "n0907": "於 DNS 供應商新增產生的 MX、SPF（TXT）與 DKIM（TXT）。Cloudflare：郵件相關記錄請用僅 DNS（灰雲）。",
      "n0908": "於 DNS 頁安裝 PowerDNS 相關套件",
      "n0909": "於面板 Go 執行環境安裝目標版本",
      "n0910": "於面板 節點 執行環境安裝目標版本",
      "n0911": "於面板 PHP 執行環境安裝目標版本",
      "n0912": "於面板 Python 執行環境安裝目標版本",
      "n0913": "於面板 Rust 執行環境安裝 rustup／cargo",
      "n0914": "日常",
      "n0915": "日誌",
      "n0916": "日誌建議寫入專案 日誌 目錄",
      "n0917": "日誌收集器",
      "n0918": "日誌檔",
      "n0919": "日誌相對路徑含不允許字元",
      "n0920": "日誌等級",
      "n0921": "日誌路徑無效",
      "n0922": "時區",
      "n0923": "時區與字元",
      "n0924": "暫存表大小",
      "n0925": "暴露 PHP 版本頭",
      "n0926": "更多 fail2ban jail、更快封禁",
      "n0927": "更強隔離請使用獨立 Redis 實例",
      "n0928": "更新 fail2ban jail 清單（管理檔）",
      "n0929": "更新未完成",
      "n0930": "最嚴 Nginx 限連（約 1 req/s）",
      "n0931": "最多 12 個額外目錄",
      "n0932": "最多 8 個 nameserver",
      "n0933": "最多快取檔案數",
      "n0934": "最多輸入變數",
      "n0935": "最大 WAL",
      "n0936": "最大客戶端數",
      "n0937": "最大記憶體",
      "n0938": "最大連線錯誤",
      "n0939": "最小",
      "n0940": "最小 HTTP 伺服器（/health）+ public 靜態目錄",
      "n0941": "最長執行時間",
      "n0942": "最長輸入時間",
      "n0943": "有可用升級",
      "n0944": "有掃描／暴力跡象時",
      "n0945": "有效快取估計",
      "n0946": "有資料庫/Redis 匯出 失敗，已中止（不會 傳輸）",
      "n0947": "服務名稱無效",
      "n0948": "未下載 WordPress 核心（需外網／另下）— 見 WORDPRESS_INSTALL.txt",
      "n0949": "未以系統 服務單元 啟動（需要管理員權限 + 已隔離）— 改用 pidfile",
      "n0950": "未偵測到 pam_google_authenticator — 套件管理 安裝 libpam-google-authenticator",
      "n0951": "未啟用 雙重驗證",
      "n0952": "已僅匯出控制面摘要（未同步 Nginx）",
      "n0953": "未套用到系統 nginx（需 系統變更權限 與管理員權限）— 狀態：已寫入",
      "n0954": "未套用到系統：需 系統變更權限 與管理員權限",
      "n0955": "未安裝 redis-cli 客戶端",
      "n0956": "未寫入任何檔案",
      "n0957": "未對系統產生可驗證變更 — 不會標 成功",
      "n0958": "未找到 postgresql conf.d — 設定只寫在面板資料目錄；不會假裝已套用系統",
      "n0959": "未找到 secrets/ssh/.master.key 且無 YSK_SECRETS_KEY — 目標機可能無法解密 vault/雙重驗證",
      "n0960": "未授權",
      "n0961": "未探測",
      "n0962": "未登記 certbot/LE 續期 定時工作（可用系統 certbot.timer）",
      "n0963": "未發布 nginx 設定檔",
      "n0964": "未知 passkey",
      "n0965": "未知 source（系統日誌:… / 檔案:… / project:…）",
      "n0966": "未知的資源類型",
      "n0967": "未知軟件",
      "n0968": "未知軟件 識別碼",
      "n0969": "未知軟件項目",
      "n0970": "未知電源動作",
      "n0971": "未確認維護窗，拒絕打包（避免熱 匯出 不一致）",
      "n0972": "未綁專案 主目錄 — 僅寫入控制面 ftps/ssh；需 sshd Match 才生效",
      "n0973": "未能套用更新：請設 YSK_SOURCE_ROOT 指向 git 工作目錄，或 publish npm 套件後設 YSK_NPM_PACKAGE",
      "n0974": "未能確認遠端最新版 — 不會假裝「已是最新」",
      "n0975": "未能確認遠端最新版 — 不會假裝已是最新",
      "n0976": "未裝 City Lite — 僅國家／ASN；更新庫可下載 DB-IP（免費 CC BY）",
      "n0977": "未裝 City Lite — 無省／市；請更新庫（免費 DB-IP）",
      "n0978": "未複製到 /etc/nginx（非 管理員 或未 執行）— managed 設定檔 已在 dataDir",
      "n0979": "未設定 CF_API_TOKEN — 無法呼叫 Cloudflare 介面",
      "n0980": "未設定 Cloudflare 介面 權杖 — 僅 預覽試行",
      "n0981": "未設定磁碟配額（軟配額關閉）",
      "n0982": "操作完成",
      "n0983": "未請求安裝到系統（installSystem=否）",
      "n0984": "未開啟 系統變更權限",
      "n0985": "未開啟系統變更權限（僅寫入控制面設定）",
      "n0986": "未開啟系統變更：無法執行 dnssec-keygen",
      "n0987": "未附密碼 — 僅驗證 電郵（外掛需另行登入）",
      "n0988": "未驗證／重載：伺服器未開啟系統變更權限（僅寫入管理檔）",
      "n0989": "本地 設定檔 缺失，請先 計劃",
      "n0990": "本地備份檔不存在",
      "n0991": "本地尚無 zone 檔",
      "n0992": "本地無憑證檔（或從未上傳）",
      "n0993": "本地部分無效",
      "n0994": "本小時封禁次數達上限 — 到防護中心檢查",
      "n0995": "本機 ip 可能不支援 -j；請升級 iproute2（目前僅 notes）",
      "n0996": "本機 nginx -t 成功（僅控制面 managed 設定檔，≠ 邊緣 已套用）",
      "n0997": "本機 wsrep 尚可，但 size 未達全部登記節點",
      "n0998": "本機 ysk.json 無法讀取 / 無 fingerprint",
      "n0999": "本機指標 成功；完整 healthy 需 對等節點 探測（未做）",
      "n1000": "本機無 nginx — 設定檔 已寫入，未 重新載入",
      "n1001": "本機無可用 NM 連線；不會假成功。可改用「僅即時」或啟用 NetworkManager。",
      "n1002": "本機無可用 ps — 無法列出進程（不假空表當健康）",
      "n1003": "本機無對應 NM 連線；不會假成功。可改「僅即時」或啟用 NetworkManager。",
      "n1004": "本輪無可 封鎖 對象",
      "n1005": "查詢名稱無效",
      "n1006": "查詢服務狀態",
      "n1007": "根分割使用率超過 90%",
      "n1008": "根目錄無效",
      "n1009": "根磁碟空間",
      "n1010": "概覽",
      "n1011": "標準庫 TcpListener（無額外 crate）；Cargo.toml",
      "n1012": "標準庫 net/http；go.mod；/ 與 /health",
      "n1013": "模式：可生產",
      "modeProductionCapable": "可生產",
      "modeDegraded": "降級",
      "n1014": "模擬執行：未實際複製",
      "n1015": "預覽試行完成 — 未複製、未重新載入（正式同步請關閉預覽試行）",
      "n1016": "預覽試行完成 — 正式同步需管理員權限與系統變更權限",
      "n1017": "檔名須以 .設定檔 結尾",
      "n1018": "檔名須以 .sieve 結尾",
      "n1019": "檔案",
      "n1020": "檔案上傳與 POST 體積",
      "n1021": "檔案不存在或不可讀",
      "n1022": "檔案不存在或已刪除",
      "n1023": "檢查佔用行程；見主機指標",
      "n1024": "檢查檔案變更",
      "n1025": "檢查間隔（秒）",
      "n1026": "檢查點逾時",
      "n1027": "檢視者為唯讀，無法執行寫入",
      "n1028": "權限模式須為 3–4 位八進制數字",
      "n1029": "權限與安全",
      "n1030": "正常",
      "n1031": "正常營運預設",
      "n1032": "正式環境請改 SECRET_KEY／DEBUG 並配置資料庫",
      "n1033": "此 planner 僅支援 mariadb + mariadb-galera",
      "n1034": "此 planner 僅支援 mysql + mysql-從節點",
      "n1035": "此主機無 系統服務 服務管理",
      "n1036": "此專案是 節點 運行時，請使用 節點 部署",
      "n1037": "此專案是 節點 運行時，請使用 節點 部署（或改 運行時 為 static）",
      "n1038": "此更新需人工確認（高風險／需審批）。請勾選確認後再套用。",
      "n1039": "此清單為站外待辦（DNS 供應商／IP 擁有者）；控制面無法代勞 PTR／解封 25",
      "n1040": "此資源不支援套用到系統",
      "n1041": "此軟件無 套件管理 套件定義",
      "n1042": "每一列一個設定；記憶體、執行時間、輸入限制",
      "n1043": "每個專案以獨立 Linux 用戶／群組運作",
      "n1044": "每小時 auto-封鎖 上限",
      "n1045": "每日（IPinfo Lite）",
      "n1046": "永久 封鎖",
      "n1047": "沒有 邊緣 節點 — 請先於 CDN 頁登記至少一個 邊緣",
      "n1048": "沒有可套用的真實升級（缺 candidate 或與目前版本相同）",
      "n1049": "沒有專案可做 Restic 增量",
      "n1050": "沒有專案可備份（0 個）— 不視為失敗",
      "n1051": "沙箱指令不可為空",
      "n1052": "清理日誌／備份；見主機設定儲存",
      "n1053": "清空防火牆規則 — 預設拒絕",
      "n1054": "測試寄信需要寄件者與收件者",
      "n1055": "準備建立系統用戶…",
      "n1056": "瀏覽器開啟站點完成 WP 安裝精靈",
      "n1057": "無 .zone 檔可推",
      "n1058": "無 HostExecutor — 請手動 變更擁有者 檔案",
      "n1059": "無 HostExecutor — 跳過 變更擁有者（請手動 變更擁有者）",
      "n1060": "無 IP 可寫入 DNS",
      "n1061": "無 NM 連線可改；僅刪即時地址",
      "n1062": "無 NM 連線可改；僅刪即時路由",
      "n1063": "無 Redis 實例需 匯出",
      "n1064": "無 SQL 資料庫需 匯出",
      "n1065": "無 遠端登入 目標",
      "n1066": "無 遠端登入／機群 目標",
      "n1067": "無 access 日誌 cache 狀態、亦無 cache 目錄 — hit-rate 未知（請開 log_format 或先 套用 邊緣）",
      "n1068": "無 access=機群 且填了 fleetAgentId 的成員",
      "n1069": "無 access=ssh 的成員 — 請在 建立 時用 :ssh 或改 members",
      "n1070": "無 apply_status",
      "n1071": "無 套件管理-get",
      "n1072": "無 authentication challenge",
      "n1073": "無 bind_ip 需清理",
      "n1074": "無 dataDir — 只更新資料庫",
      "n1075": "無 網域 vacation.sieve — 略過 per-mailbox 複製",
      "n1076": "無 邊緣 可套用（皆 skip/drain）— 控制面 設定檔 仍 已寫入",
      "n1077": "無 galera_new_cluster；已 重新啟動 mariadb",
      "n1078": "無 home_dir",
      "n1079": "無 安裝 記錄 — 庫狀態改為 stored",
      "n1080": "無 linuxUser",
      "n1081": "無 主節點 金鑰 / YSK_SECRETS_KEY",
      "n1082": "無 nameserver（可能未配置）",
      "n1083": "無 rdbRelPath",
      "n1084": "無 registration challenge",
      "n1085": "無 ssh 對等節點",
      "n1086": "無 ssh 對等節點 可推",
      "n1087": "無 sshpass（僅能用 金鑰/代理 登入）",
      "n1088": "無 vacation.sieve 可部署",
      "n1089": "無 vhost 需要更新（或 設定檔 尚無 伺服器 塊）",
      "n1090": "無 wsrep 狀態（可能未裝 Galera 或服務未開）",
      "n1091": "無作用中 jail 或 fail2ban 未運行",
      "n1092": "無匹配檔名的日誌",
      "n1093": "無可執行系統步驟（仍只是 已寫入）",
      "n1094": "無可探活目標（無 healthUrl / baseUrl / publicIpv4）",
      "n1095": "無可用 access 日誌 行（或格式不符）",
      "n1096": "無可用 access 日誌（仍可用手動 / 自動 封鎖）",
      "n1097": "無可用 access／auth 日誌 樣本",
      "n1098": "無可用 邊緣 IP — 不修改 DNS（保留既有 managed 記錄）",
      "n1099": "無可用 strict 用戶（全部是救援或未登記）",
      "n1100": "無效 設定檔 名稱",
      "n1101": "無效 export 識別碼",
      "n1102": "無效 export 檔名",
      "n1103": "無效 linux_user",
      "n1104": "無效 public 金鑰",
      "n1105": "無效 快照 識別碼",
      "n1106": "無效 權杖",
      "n1107": "無效 服務單元",
      "n1108": "無效 服務單元 名稱",
      "n1109": "無效 清理-size（例：500M）",
      "n1110": "無效 清理-time（例：7d）",
      "n1111": "無效備份",
      "n1112": "無效備份格式",
      "n1113": "無效埠",
      "n1114": "無效的 金鑰 名稱",
      "n1115": "無效的 projectId",
      "n1116": "無效的備份檔名",
      "n1117": "無效的搜尋 pattern",
      "n1118": "無效規則編號",
      "n1119": "無效資料庫名",
      "n1120": "無暫停域名 — map 為空（系統套用後會 postmap 空檔）",
      "n1121": "無有效 IP",
      "n1122": "無模組時政策仍可用於嫌疑人 auto-封鎖 enrich",
      "n1123": "無法封鎖到主機：未開啟系統變更權限。面板清單沒有新增。",
      "n1124": "無法 匯出 Redis：缺 redis-cli",
      "n1125": "無法 匯出：伺服器未開啟系統變更權限",
      "n1126": "無法 fan-out：未開啟系統變更權限",
      "n1127": "無法 匯入：伺服器未開啟系統變更權限",
      "n1128": "無法 列表：未開啟系統變更權限",
      "n1129": "無法 探測 DNS 叢集：未開啟系統變更權限",
      "n1130": "無法 探測：未開啟系統變更權限（遠端登入 需 執行）",
      "n1131": "無法 清除 cache：未開啟系統變更權限（系統變更權限）",
      "n1132": "無法 清除：未開啟系統變更權限",
      "n1133": "無法 remote 重新載入：未開啟系統變更權限",
      "n1134": "無法 Restic：未開啟系統變更權限",
      "n1135": "無法 還原：未開啟系統變更權限",
      "n1136": "無法 安全複製：需 系統變更權限已開啟",
      "n1137": "無法 stat 主目錄",
      "n1138": "無法 symlink：未開啟系統變更權限",
      "n1139": "無法 unban：未開啟系統變更權限",
      "n1140": "無法 unban：需 系統變更權限",
      "n1141": "無法下載 Adminer：未開啟系統變更權限",
      "n1142": "無法下載 WordPress：伺服器未開啟系統變更權限",
      "n1143": "無法使用 PM2，改用本機行程管理",
      "n1144": "無法停服：未開啟 系統變更權限",
      "n1145": "無法停止 PM2：伺服器未開啟系統變更權限",
      "n1146": "無法分發 SSL：未開啟系統變更權限",
      "n1147": "同步已封鎖：需系統變更權限",
      "n1148": "無法同步到系統 Nginx：需要系統變更權限",
      "n1149": "無法啟動 PM2：伺服器未開啟系統變更權限",
      "n1150": "無法啟用 Apache 站點：需要系統變更權限",
      "n1151": "無法啟用 NTP：需要系統變更權限與管理員權限",
      "n1152": "無法啟用 PHP-FPM：需要系統管理員權限",
      "n1153": "無法啟用 系統服務 服務（請確認權限）",
      "n1154": "無法啟用 系統服務 服務：需要系統管理員權限",
      "n1155": "無法啟用服務：需要系統管理員權限",
      "n1156": "無法在目標安裝 同步複製，且目標原本也沒有 同步複製",
      "n1157": "無法在系統建立帳號：需要 系統變更權限 與管理員權限；已登記控制面（已寫入/已封鎖）",
      "n1158": "無法執行 certbot：未開啟系統變更權限",
      "n1159": "無法執行電源操作：需要系統變更權限（系統變更權限）與管理員權限",
      "n1160": "無法套用到系統：需要 系統變更權限 與管理員權限",
      "n1161": "無法套用系統中繼設定：需要系統變更權限",
      "n1162": "無法套用：計劃失敗",
      "n1163": "無法安裝 PowerDNS：需要系統管理員權限",
      "n1164": "無法安裝到 /etc/ssh：需要 系統變更權限 與管理員權限",
      "n1165": "無法安裝到系統：伺服器未開啟系統變更權限（僅寫入管理檔）",
      "n1166": "無法寄送測試信：伺服器未開啟系統變更權限或未安裝郵件服務",
      "n1167": "無法建立 virtual 用戶 資料庫（缺 db_load）",
      "n1168": "無法建立帳戶資料庫，登入可能失敗",
      "n1169": "無法建立系統郵件用戶：需要系統管理員權限",
      "n1170": "無法從 npm 或 GitHub 取得最新版本（未假裝已是最新）",
      "n1171": "無法探測 系統控制",
      "n1172": "無法推送 DNS 叢集：未開啟系統變更權限",
      "n1173": "無法推送遠端：未開啟系統變更權限（本地備份仍成功）",
      "n1174": "無法收集 metrics",
      "n1175": "無法清除佇列：伺服器未開啟系統變更權限",
      "n1176": "無法準備 ACME：未開啟系統變更權限",
      "n1177": "無法產生 crypt 密碼雜湊（需要 openssl passwd）",
      "n1178": "無法立即執行：伺服器未開啟系統變更權限",
      "n1179": "無法統計 Tasks（ps state 失敗）",
      "n1180": "無法複製 zone 檔到 dnssec 目錄",
      "n1181": "無法計算 ysk.json fingerprint",
      "n1182": "無法讀 /etc/resolv.conf",
      "n1183": "無法讀取 cmdline（進程可能已結束或無權限）",
      "n1184": "無法讀取 numbered 規則",
      "n1185": "無法讀取 statfs",
      "n1186": "無法讀取佇列：伺服器未開啟系統變更權限",
      "n1187": "無法讀取用戶庫以檢查 雙重驗證",
      "n1188": "無法讀取目標磁碟空間",
      "n1189": "無法變更 UFW：需 系統變更權限已開啟",
      "n1190": "無法變更主機名稱／時區：需要系統變更權限與管理員權限",
      "n1191": "無法變更網絡：需要系統變更權限（系統變更權限）與管理員權限",
      "n1192": "無法載入 PowerDNS zone：伺服器未開啟系統變更權限",
      "n1193": "無法辨識 IPv4/IPv6",
      "n1194": "無法連線 127.0.0.1:6379",
      "n1195": "無法連線目標機",
      "n1196": "無登記紀錄",
      "n1197": "無硬阻擋項（仍可能有建議項）",
      "n1198": "無臨時金鑰目錄",
      "n1199": "無過期臨時用戶",
      "n1200": "無郵箱 — 跳過系統 sieve 部署",
      "n1201": "無需建立遠端目錄",
      "n1202": "熔斷",
      "n1203": "片段已寫入 dataDir/security/fail2ban（未自動裝到 /etc）",
      "n1204": "片段已複製；請修正後手動 重新載入",
      "n1205": "狀態 draft — 請到 FTP 服務頁「套用」才會寫入 vsftpd",
      "n1206": "狀態與版本",
      "n1207": "狀態：",
      "n1208": "狀態：已套用（anvil + per-sender policy + maps）",
      "n1209": "狀態：已套用（symlink + config plugins[] 已啟用）",
      "n1210": "狀態：已套用（安全目錄）",
      "n1211": "狀態：已套用（已覆寫 homeDir）",
      "n1212": "狀態：已套用（系統命令成功）",
      "n1213": "狀態：已套用（金鑰+簽署本地 zone；非 registrar 上線）",
      "n1214": "狀態：已封鎖 — 管理檔已寫；未改 Postfix/Dovecot",
      "n1215": "狀態：已封鎖（placeholder 已寫入）",
      "n1216": "狀態：已封鎖（policy daemon 已生成；系統套用需 執行與管理員權限）",
      "n1217": "狀態：executed ≠ 已上線，直到 certbot 完成且 重新載入",
      "n1218": "狀態：失敗（nginx -t 或 重新載入 失敗）",
      "n1219": "狀態：partial — 不會標 已套用（避免假成功）",
      "n1220": "狀態：partial — 部分系統步驟失敗",
      "n1221": "狀態：partial（symlink 成功；config 需手動加 plugins）— 不會標成完整 已套用",
      "n1222": "狀態：preview only",
      "n1223": "狀態：已寫入/partial（系統複製／重新載入／驗證未完全成功）",
      "n1224": "狀態：已寫入/partial（關鍵步驟失敗 — 不標 已套用）",
      "n1225": "狀態：已寫入（套用=否；未套用到系統）",
      "n1226": "狀態：已寫入（已封鎖 system 套用）",
      "n1227": "狀態：已寫入（設定檔 已寫；重新載入 已封鎖）",
      "n1228": "狀態：已寫入（控制面）— 遠端 邊緣 尚未套用；PR-C3 才 fan-out + nginx -t/重新載入",
      "n1229": "狀態：已寫入（未套用到系統 Postfix/Rspamd）",
      "n1230": "狀態：已寫入（未複製到系統 Nginx；設 applySystem 才會 try 重新載入）",
      "n1231": "狀態：已寫入（管理白名單已存；live fail2ban-客戶端 需 系統變更權限，或「策略→套用到系統」重寫 jail.local）",
      "n1232": "狀態：已寫入（金鑰/DS 已有；zone 未簽署或未找 zone 檔）",
      "n1233": "狀態：已寫入（非已上線 SSO）",
      "n1234": "狀態：已寫入（非已簽署／非已上線）— 不假成功",
      "n1235": "狀態：已寫入（預覽／只寫管理檔）",
      "n1236": "狀態：已寫入並成功 重新載入 本機 nameserver",
      "n1237": "狀態：已寫入管理 zone 檔（尚未成為權威 DNS，除非你已 重新載入 nameserver）",
      "n1238": "狀態：已寫入管理檔（未套用到系統）",
      "n1239": "狀態：無資料（非假統計）",
      "n1240": "獨立 TOTP（與 面板 operator 雙重驗證 分開）",
      "n1241": "獨立於 面板 operator 雙重驗證",
      "n1242": "生命週期",
      "n1243": "生產可關並手動重載",
      "n1244": "生產環境請關閉",
      "n1245": "生產門檻：尚未完全達標，請查看下方缺項",
      "n1246": "生產門檻：通過（權限、Nginx、節點 就緒）",
      "n1247": "生產隔離：到專案「隔離」建立 Linux 用戶與 主目錄",
      "n1248": "用戶名 2–32 字元 [a-z0-9._-]",
      "n1249": "申請 SSL 需要域名與電郵",
      "n1250": "留空不限制；多路徑用 : 分隔",
      "n1251": "留空用系統預設；可填絕對路徑",
      "n1252": "略過",
      "n1253": "略過 DNS 解析",
      "n1254": "略過 變更擁有者（未以 管理員 隔離模式執行）",
      "n1255": "略過 變更擁有者（需 系統變更權限 與管理員權限）— 檔案可能為控制面用戶擁有",
      "n1256": "略過 draining 節點",
      "n1257": "略過 重新載入：zone 驗證失敗",
      "n1258": "略過 remote 重新載入（重新載入=否）— 已寫入 ≠ 已套用",
      "n1259": "略過 usermod（未 os_provisioned）",
      "n1260": "略過 zone 套用（applyZone=否）— 僅更新控制面 records",
      "n1261": "略過無效用戶名",
      "n1262": "疑似 DDoS — 降級運作",
      "n1263": "白名單 IP：拒絕封禁",
      "n1264": "白名單：略過",
      "n1265": "監控 IP／域名聲譽並暖機",
      "n1266": "監聽 IP；建議 127.0.0.1 僅本機",
      "n1267": "監聽位址",
      "n1268": "目前以本機行程模式部署",
      "n1269": "目前以簡易 PHP 模式部署",
      "n1270": "目前權限讀不到防火牆狀態（非攻擊）",
      "n1271": "目前非系統管理員權限，部分系統設定無法套用",
      "n1272": "目標 ysk.json 校驗失敗",
      "n1273": "目標尚無 ysk-server 命令列 — 請確認 初始化 或手動 npm i -g ysk-server",
      "n1274": "目標已有 YSK 資料，已確認 forceWipeTarget",
      "n1275": "目標有 同步複製",
      "n1276": "目標為 管理員",
      "n1277": "目標用戶已暫停",
      "n1278": "目標缺 同步複製（將在 初始化 安裝）",
      "n1279": "目標認證需要 sshpass（未安裝）",
      "n1280": "目標預檢失敗",
      "n1281": "目標預檢未通過",
      "n1282": "目標預檢通過",
      "n1283": "目的地必須以 .zip 結尾",
      "n1284": "真正推送需 執行 + 系統變更權限已開啟",
      "n1285": "短標籤 <?",
      "n1286": "硬配額略過：未 os_provisioned",
      "n1287": "確保 guest 用戶",
      "n1288": "確認 80／443 可從公網到達（LE HTTP-01）",
      "n1289": "確認 PHP 運行時 與 FPM 已就緒",
      "n1290": "確認出站 埠 25 已開放",
      "n1291": "磁碟、備份、AOF/WAL",
      "n1292": "磁碟空間不足",
      "n1293": "禁用函式列表",
      "n1294": "私網／本機，不套用公網 geo",
      "n1295": "秒",
      "n1296": "秒；0 = 無限（命令列）",
      "n1297": "秒；解析請求的最長時間",
      "n1298": "移除套件",
      "n1299": "空=關閉；設路徑則開啟",
      "n1300": "站點名稱無效",
      "n1301": "站點無 邊緣 節點",
      "n1302": "符合主機預設版本",
      "n1303": "節點 主機 無效",
      "n1304": "節點名稱無效",
      "n1305": "節點處於 draining — 健康結果僅供參考，狀態保持 draining",
      "n1306": "系統套用需 系統變更權限 與管理員權限",
      "n1307": "系統用戶不存在（尚未 provision 或已刪）",
      "n1308": "系統管理員權限",
      "n1309": "系統變更未開啟；設定可儲存，套用系統需權限",
      "n1310": "系統變更權限",
      "n1311": "系統負載",
      "n1312": "系統軟件",
      "n1313": "累犯",
      "n1314": "維護記憶體",
      "n1315": "網站",
      "n1316": "網絡條件不足（例如網域驗證所需埠無法使用）",
      "n1317": "網絡無法連線",
      "n1318": "網頁",
      "n1319": "缺 同步複製",
      "n1320": "缺 ssh",
      "n1321": "缺 ysk.json",
      "n1322": "缺少 設定檔 產物，請先 計劃",
      "n1323": "缺少 dataDir，無法安裝 運行時",
      "n1324": "缺少 linuxUser/homeDir",
      "n1325": "臨時 封鎖",
      "n1326": "臨時金鑰失敗",
      "n1327": "臨時金鑰安裝失敗",
      "n1328": "自動 清理",
      "n1329": "自動 封鎖 → 關（日常檔）",
      "n1330": "自動 封鎖 暫停：未開啟系統變更（系統變更權限）",
      "n1331": "自動 封鎖 熔斷",
      "n1332": "自動切檔 或 人手",
      "n1333": "自動化主開關關閉",
      "n1334": "自動化白名單 IP：拒絕封禁",
      "n1335": "自動回覆",
      "n1336": "自動回覆：狀態 已寫入 — 未自動進 Dovecot/Pigeonhole（需 ManageSieve 或 symlink）",
      "n1337": "自動防護檔",
      "n1338": "自訂 allow 路徑",
      "n1339": "至少一個轉送目標",
      "n1340": "至少選擇一個 邊緣 節點",
      "n1341": "至少需要一個域名",
      "n1342": "至少需要一個節點",
      "n1343": "至少需要一個角色（control/origin/邊緣/dns）",
      "n1344": "與 面板 operator 雙重驗證 分開",
      "n1345": "舊公鑰若在 remote authorized_keys，需手動更新或 authorize-self",
      "n1346": "萬用字元域名無效",
      "n1347": "表快取",
      "n1348": "複製 filter/jail 後 系統控制 重新載入 fail2ban",
      "n1349": "複製 jail.local 失敗",
      "n1350": "見審計",
      "n1351": "解密預覽成功（secret 已遮罩）",
      "n1352": "觸發 limit_req 過多",
      "n1353": "訊息格式無效",
      "n1354": "訊號加總 0–100 → 威脅級",
      "n1355": "記憶體、緩衝、併發",
      "n1356": "記憶體上限",
      "n1357": "記憶體偏高",
      "n1358": "記憶體壓力",
      "n1359": "記憶體淘汰策略",
      "n1360": "記憶體與 V8",
      "n1361": "記憶體表上限",
      "n1362": "記錄值不可為空",
      "n1363": "記錄語句類型",
      "n1364": "記錄錯誤到日誌",
      "n1365": "記錄防護模式提示",
      "n1366": "設定反向 DNS（PTR）",
      "n1367": "設定已儲存於管理面；系統 設定檔／重啟需權限",
      "n1368": "設定已寫入但套用失敗",
      "n1369": "設定已寫入連線但重啟失敗；請手動 nmcli connection up",
      "n1370": "設定已寫入連線但重新啟用失敗，請手動 nmcli connection up",
      "n1371": "設定檔 product 必須是 ysk-server",
      "n1372": "設定檔格式錯誤（須為物件）",
      "n1373": "設定檔缺少 dataDir",
      "n1374": "許多雲供應商封鎖出站 TCP 25。請申請解鎖，或改用外部 SMTP 中繼。",
      "n1375": "評分",
      "n1376": "誠實：一鍵只建立控制面政策，不等於公網 CDN 已生效",
      "n1377": "誠實：部分公網 resolver 會去重相同 A 記錄 — 權重偏差不保證；高權重 邊緣 仍建議用更多獨立 IP 或 Anycast",
      "n1378": "請使用 CIDR 格式，例如 192.168.1.10/24",
      "n1379": "請使用 POST /api/v1/ssl/上載 或 POST /api/v1/ssl/letsencrypt",
      "n1380": "請先登記至少一個 CDN 節點（PR-C1）",
      "n1381": "請先確認 maintenanceAccepted",
      "n1382": "請到備份操作頁查看 sideResults",
      "n1383": "請到備份頁查看",
      "n1384": "請到通知 → 套用狀態審計",
      "n1385": "請到防護中心檢視訊號並切換防護檔",
      "n1386": "請在 對等節點 上安裝 設定檔 並 重新啟動 / join",
      "n1387": "請填寫 serverName",
      "n1388": "請填寫 serverName 與 upstream",
      "n1389": "請填寫 serverName 與文件根目錄",
      "n1390": "請填寫 serverName、文件根目錄與 FPM 通訊端",
      "n1391": "請填寫 zone",
      "n1392": "請填寫 zone 名稱",
      "n1393": "請填寫中繼主機",
      "n1394": "請填寫叢集名稱（≤64）",
      "n1395": "請填寫方案名稱",
      "n1396": "請填寫用戶、排程與指令",
      "n1397": "請填寫真實節點位址（不可用示範 IP）",
      "n1398": "請將 DNS A/AAAA 指向新 IP；檢查雲防火牆與郵件 PTR",
      "n1399": "請將下列 XML 部署到對應 hostname，或複製到外部 DNS 主機",
      "n1400": "請指定 IP",
      "n1401": "請指定 action 或 mtu",
      "n1402": "請指定 dataDir",
      "n1403": "請指定 listenHost",
      "n1404": "請指定 zip 路徑",
      "n1405": "請指定備份來源",
      "n1406": "請指定啟用狀態（是／否）",
      "n1407": "請指定回收項目",
      "n1408": "請指定工具名稱",
      "n1409": "請指定設定檔路徑",
      "n1410": "請指定路徑與權限模式",
      "n1411": "請指定路徑與版本",
      "n1412": "請指定路徑與目的地",
      "n1413": "請提供 DKIM 公鑰",
      "n1414": "請提供 Git URL（或先在專案設定）",
      "n1415": "請提供 IP",
      "n1416": "請提供套件名稱",
      "n1417": "請提供套件名稱與目前版本",
      "n1418": "請提供密碼（至少 8 字元）",
      "n1419": "請提供查詢名稱",
      "n1420": "請提供訊息內容",
      "n1421": "請求率偏高 — 已啟用限流",
      "n1422": "請用「套用到系統」或重新部署 PHP 專案（程序池 php_admin_*）",
      "n1423": "請確認 /etc/預設/ufw 內 IPV6=yes",
      "n1424": "請確認 dataDir 已建立且程序可寫入",
      "n1425": "請至少填一個 nameserver，或選「還原 DHCP DNS」",
      "n1426": "請至少提供 publicIpv4 / publicIpv6 / healthUrl / baseUrl 其中一項",
      "n1427": "請輸入提示內容",
      "n1428": "請選擇檔案",
      "n1429": "請限制來源 IP 或 HTTP auth 後再公開",
      "n1430": "警告：manifest 無 packagedAt — 若需 資料庫 請先跑 套件",
      "n1431": "警告：服務單元 為 active 但找不到 命令列 binary（可能是舊 placeholder 服務單元）",
      "n1432": "警告：將覆寫目標既有 YSK 資料",
      "n1433": "警告：此介面為預設路由出口，down 可能令面板斷線",
      "n1434": "警告：無 secrets/ssh/.master.key 且無 YSK_SECRETS_KEY（vault／雙重驗證可能無法解密）",
      "n1435": "警告：缺 config.json（可稍後 setup 補）",
      "n1436": "讀取 banned 列表失敗",
      "n1437": "讀取 banned 可能需更高權限；unban／封鎖 仍需 系統變更權限",
      "n1438": "讀取 banned 失敗（權限或服務）",
      "n1439": "讀取 fail2ban bans 失敗",
      "n1440": "讀取已封禁清單失敗",
      "n1441": "讀取日誌失敗",
      "n1442": "讀取檔案",
      "n1443": "讀取系統資訊",
      "n1444": "變更 預設 路由需 confirmDefault: 是",
      "n1445": "變更會寫入管理檔；「套用到系統」才會進 /etc/php/.../conf.d 並重新載入 FPM",
      "n1446": "負載偏高",
      "n1447": "資料可讀寫；安裝／重啟服務需要系統變更權限",
      "n1448": "資料庫可能過舊（>7 日）— 建議立即更新",
      "n1449": "資料庫尚未建立。請確認 mysql 客戶端與 系統變更權限已開啟 後再試。",
      "n1450": "資料庫尚未建立。請確認 psql、TCP 與 系統變更權限已開啟 後再試。",
      "n1451": "資料庫數量",
      "n1452": "資料庫缺 名稱",
      "n1453": "資料庫轉儲需另行納入",
      "n1454": "資料目錄",
      "n1455": "隔離分頁：建立／遷移系統用戶",
      "n1456": "資源限制",
      "n1457": "超過閾值",
      "n1458": "路徑不允許",
      "n1459": "路徑不在已允許的額外 日誌 目錄",
      "n1460": "路徑越界拒絕",
      "n1461": "跳過",
      "n1462": "跳過刪舊 主目錄：目標 canonical 內容未完成整",
      "n1463": "軟配額已存；硬 setquota 請「套用限制到 OS」",
      "n1464": "輸入巢狀層級",
      "n1465": "輸入資料無效",
      "n1466": "逗號分隔；過嚴可能弄壞套件",
      "n1467": "通常為 RAM 25%",
      "n1468": "連線與網絡",
      "n1469": "進程仍在（可再送 KILL）",
      "n1470": "進程已結束（kill -0 失敗）",
      "n1471": "進階",
      "n1472": "進階：secret 來自 面板（與 operator 雙重驗證 同源 — 風險自負）",
      "n1473": "運維",
      "n1474": "遠端 SFTP 設定未完成整（主機/username/路徑）",
      "n1475": "遠端 已套用 ≠ 叢集 healthy — 請跑 探測 --peers",
      "n1476": "遠端 migrate post 失敗",
      "n1477": "遠端 mkdir 失敗",
      "n1478": "遠端 post 回報 成功=否",
      "n1479": "遠端備份未啟用（略過推送）",
      "n1480": "遠端安裝需 系統變更權限已開啟",
      "n1481": "遠端找不到 rndc / active named|bind9|pdns",
      "n1482": "遠端推送或 Restic 有失敗 — 本地 封存 可能已成功，請看 sideResults",
      "n1483": "遠端檔案、暴露資訊、函式禁用",
      "n1484": "遠端無 active named/bind9/pdns（仍可 安全複製 檔案）",
      "n1485": "遠端無 nginx — 設定檔 已 安全複製（已寫入 on 對等節點）",
      "n1486": "遠端／Restic 步驟已處理",
      "n1487": "遷移需要 系統變更權限 與管理員權限",
      "n1488": "還原後未 變更擁有者（需 管理員權限與系統變更權限）",
      "n1489": "部分 DNSBL 未必完整支援 IPv6；結果僅供參考",
      "n1490": "部分 對等節點 已套用；其餘僅 已寫入 或失敗 — 勿當全叢集已 重新載入",
      "n1491": "部分 對等節點 重新載入 成功（partial）",
      "n1492": "部分或全部失敗 — 請查看 results",
      "n1493": "部分或全部未套用到系統（需 系統變更權限）",
      "n1494": "部分推送失敗 — 檢查 遠端登入金鑰 / 防火牆",
      "n1495": "部分步驟失敗 — 見 steps",
      "n1496": "部分系統步驟失敗",
      "n1497": "部署",
      "n1498": "部署 PHP + 發布 Nginx（文件根 app/public）",
      "n1499": "部署時可覆寫",
      "n1500": "部署會 go 建置 -o app .；需主機已安裝 Go toolchain",
      "n1501": "部署會執行 venv + pip；ExecStart 使用 uvicorn main:app",
      "n1502": "部署會執行 venv + pip；entry 預設 app.py（非 ASGI）",
      "n1503": "部署／套用 FPM 程序池 時寫入 php_admin_value",
      "n1504": "部署：面板「部署」會啟動 伺服器.js；已寫入 ≠ 已對外",
      "n1505": "郵件主機 A 記錄",
      "n1506": "郵件主機 AAAA 記錄（IPv6）",
      "n1507": "郵件管理設定目錄",
      "n1508": "郵箱 識別碼 無效",
      "n1509": "郵箱本地部分無效",
      "n1510": "配額須為 1–1000000 MiB",
      "n1511": "配額須至少 1 MiB",
      "n1512": "重啟系統服務",
      "n1513": "重複被 封鎖 再加重",
      "n1514": "重載 vsftpd",
      "n1515": "重載網頁服務",
      "n1516": "錯誤報告等級",
      "n1517": "錯誤日誌、慢查詢",
      "n1518": "錯誤與日誌",
      "n1519": "門檻數字",
      "n1520": "開啟會嚴重影響效能",
      "n1521": "閒置逾時（秒）",
      "n1522": "關閉",
      "n1523": "防火牆建議（不自動改 UFW 除非套用系統）",
      "n1524": "防火牆（內網）：TCP 3306, 4567, 4444, 4568",
      "n1525": "防護檔寫入 nginx limit_req",
      "n1526": "防護檔維持期（hold）中，暫不降檔",
      "n1527": "防護：危急",
      "n1528": "防護：建議緊急檔",
      "n1529": "防護：疑似受攻擊",
      "n1530": "限制已寫入控制面；套用到 OS 需 系統變更權限 與管理員權限",
      "n1531": "限速",
      "n1532": "限速越界",
      "n1533": "限速／反垃圾旗標已存 資料庫；要進 Postfix/Rspamd 請用「套用限速/反垃圾到系統」",
      "n1534": "隔離模式：degraded — 建置／行程可能以控制面用戶執行；生產請建立系統用戶",
      "n1535": "隔離模式：degraded — 行程可能以控制面用戶執行；生產請 管理員權限與系統變更權限 並建立系統用戶",
      "n1536": "離線保存；含 TOTP secret。遺失 Authenticator 時可手動重建。",
      "n1537": "需 執行 與管理員權限 先可自動 清理",
      "n1538": "需 NetworkManager active 才能持久改 DNS（不會盲寫 /etc/resolv.conf）",
      "n1539": "需 系統變更權限 先可 ufw 套用",
      "n1540": "需 系統變更權限 才會真正 auto-封鎖",
      "n1541": "需 系統變更權限 才能 banip",
      "n1542": "需 系統變更權限 才能控制 fail2ban 服務",
      "n1543": "需 系統變更權限已開啟 先可 清理 系統日誌",
      "n1544": "需 執行:是 或 dryRun:是",
      "n1545": "需 nginx log_format 含 $upstream_cache_status（或 X-YSK-Cache）先有 HIT/MISS",
      "n1546": "需 管理員權限與系統變更權限 才會真正 useradd；控制面不會假裝成功",
      "n1547": "需 root 先可 journalctl --vacuum",
      "n1548": "需要管理員權限 先可改 UFW",
      "n1549": "需主機已安裝 cargo／rustc",
      "n1550": "需主機有 Python 與外網 pip",
      "n1551": "需主機有 Python 與外網 pip（否則安裝依賴會失敗）",
      "n1552": "需安裝 bind9-dnsutils 並開啟系統變更權限，才可真正執行 dnssec-keygen。",
      "n1553": "需確認字串 EMERGENCY；防鎖死自己",
      "n1554": "需系統 sshd Match/用戶 設定才會真正生效",
      "n1555": "需要 --目標 或可 resume 的 --job",
      "n1556": "需要 MySQL／MariaDB 管理員權限",
      "n1557": "需要 系統變更權限",
      "n1558": "需要 系統變更權限 下載 Adminer",
      "n1559": "需要 管理員",
      "n1560": "需要 aws 命令列（或改用 Restic s3 儲存庫）",
      "n1561": "需要 識別碼 或 all",
      "n1562": "需要 ip",
      "n1563": "需要 jobId",
      "n1564": "需要 linuxUser 或 projectId",
      "n1565": "需要 主節點 節點",
      "n1566": "需要 nginx geoip2 模組（libnginx-mod-http-geoip2）先會在 HTTP 層生效",
      "n1567": "需要 主節點 節點",
      "n1568": "需要 privateKey",
      "n1569": "需要 projectId",
      "n1570": "需要 管理員",
      "n1571": "需要 source",
      "n1572": "需要 sshpass、YSK 身份金鑰（identityId），或本機預設 遠端登入金鑰",
      "n1573": "需要 目標（管理員@主機）或 jobId 以 resume",
      "n1574": "需要 目標，或含 目標 的 jobId",
      "n1575": "需要 username 與 ssh- 開頭公鑰",
      "n1576": "需要 zone 域名",
      "n1577": "需要密碼",
      "n1578": "需要有效 電郵",
      "n1579": "需要有效 電郵 與 網域",
      "n1580": "需要目前版本與最新版本",
      "n1581": "需要真實 candidateVersion（不可等於 current 或缺省）",
      "n1582": "需要系統管理員權限才能完成安裝",
      "n1583": "需要系統管理員權限才能變更服務",
      "n1584": "需要系統變更權限才能同步/重載",
      "n1585": "需要系統變更權限才能同步到系統並重載 Nginx",
      "n1586": "需要系統變更權限才能掛 check_policy_service",
      "n1587": "需要系統變更權限才能複製 nginx 設定檔 並 重新載入",
      "n1588": "同步已封鎖：需管理員權限",
      "n1589": "需要至少一個 主節點 節點",
      "n1590": "靜態網站",
      "n1591": "非 管理員 — useradd／系統服務／nginx 系統路徑受限",
      "n1592": "非受限 seccomp 需要明確指定 runAsUser",
      "n1593": "公開請求／分鐘",
      "n1594": "面板連線即將中斷；可用「取消排程」撤回（若仍在線）",
      "n1595": "面板非 管理員",
      "n1596": "預覽可用 套用:否",
      "n1597": "預覽模式 — 未寫入任何檔案",
      "n1598": "預設 uvicorn workers",
      "n1599": "預設以 Redis 邏輯 資料庫 編號隔離",
      "n1600": "預設字元集",
      "n1601": "預設驗證外掛",
      "n1602": "額外日誌路徑無效",
      "n1603": "顯示啟動錯誤",
      "n1604": "顯示錯誤、記錄與報告等級",
      "n1605": "顯示錯誤（畫面）",
      "n1606": "首次 建置 可能數分鐘；失敗時見 notes／日誌",
      "n1607": "驗證",
      "n1608": "驗證碼無效",
      "n1609": "驗證通過",
      "n1610": "未重新整理套件索引（未開 系統變更權限）— 僅顯示 套件管理 列表；開 執行 先跑 套件管理-get update",
      "n1611": "UFW 已關閉：user.rules 有 {{n}} 條永久拒規則，但核心未強制執行。",
      "n1612": "UFW 已關閉。拒絕規則只會寫入 user.rules，核心不會丟棄封包。請先啟用 UFW。不會自動開啟。",
      "t0001": "listenPort 無效：{{v0}}",
      "t0002": "已還原版本 {{v0}}",
      "t0003": "檔案過大（>{{v0}} bytes）",
      "t0004": "已存在：{{v0}}",
      "t0005": "目標已存在：{{v0}}",
      "t0006": "找不到：{{v0}}",
      "t0007": "壓縮失敗： {{v0}}",
      "t0008": "已壓縮 {{v0}} 項 → {{v1}}",
      "t0009": "找不到：{{v0}}",
      "t0010": "un壓縮失敗： {{v0}}",
      "t0011": "已解壓 {{v0}} → {{v1}}",
      "t0012": "無法從狀態 {{v0}} 標記為已執行",
      "t0013": "此操作需要人工審批：{{v0}}",
      "t0014": "審批狀態無效：{{v0}}",
      "t0015": "審批已是 {{v0}}",
      "t0016": "未知角色：{{v0}}",
      "t0017": "角色 {{v0}} 無法執行 {{v1}}（上限 {{v2}}）",
      "t0018": "{{v0}} 範圍的非讀取操作需要指定 識別碼",
      "t0019": "工具無主機執行器：{{v0}}",
      "t0020": "工具不在允許清單：{{v0}}",
      "t0021": "工具已明確拒絕：{{v0}}",
      "t0022": "找不到 Playbook：{{v0}}",
      "t0023": "ip -j addr 失敗：{{v0}}",
      "t0024": "ip -j route 失敗：{{v0}}",
      "t0025": "nmcli 寫入地址失敗：{{v0}}",
      "t0026": "已保存 {{v0}} → 連線「{{v1}}」",
      "t0027": "connection up 警告：{{v0}}",
      "t0028": "已重新啟用連線（重開仍在）",
      "t0029": "已新增 {{v0}} → {{v1}}（即時；重開可能消失）",
      "t0030": "已從連線「{{v0}}」移除 {{v1}}",
      "t0031": "NM 移除地址：{{v0}}",
      "t0032": "已刪除即時 {{v0}} ← {{v1}}",
      "t0033": "link down 失敗：{{v0}}",
      "t0034": "已 down {{v0}}",
      "t0035": "link up 失敗：{{v0}}",
      "t0036": "已 up {{v0}}",
      "t0037": "設 MTU 失敗：{{v0}}",
      "t0038": "nmcli 寫入 gateway 失敗：{{v0}}",
      "t0039": "已保存 預設 gateway {{v0}} → 連線「{{v1}}」（重開仍在）",
      "t0040": "nmcli 寫入 routes 失敗：{{v0}}",
      "t0041": "已保存靜態路由 {{v0}} →「{{v1}}」（重開仍在）",
      "t0042": "ip route add 失敗：{{v0}}",
      "t0043": "已加即時路由 {{v0}}${gw ?",
      "t0044": ": ''}（重開可能消失；要持久請用「保存」）",
      "t0045": "已從連線「{{v0}}」清除 ipv4.gateway",
      "t0046": "NM 清除 gateway：{{v0}}",
      "t0047": "已從「{{v0}}」移除路由 {{v1}}",
      "t0048": "NM 移除 routes：{{v0}}",
      "t0049": "ip route del 失敗：{{v0}}",
      "t0050": "已刪即時路由 {{v0}}",
      "t0051": "已刪路由 {{v0}}",
      "t0052": "DNS 無效：{{v0}}",
      "t0053": "DNS 不是合法 IP：{{v0}}",
      "t0054": "nmcli modify 失敗：{{v0}}",
      "t0055": "已還原 {{v0}} 使用 DHCP DNS（ignore-auto-dns=no）",
      "t0056": "nmcli modify 失敗：{{v0}}",
      "t0057": "已寫入 {{v0}}：DNS {{v1}}${search.length ?",
      "t0058": "解析失敗：{{v0}}",
      "t0059": "{{v0}} → {{v1}} 筆",
      "t0060": "{{v0}} 無結果",
      "t0061": "已簽發一次性 SSO 權杖（{{v0}} 分鐘）",
      "t0062": "Webmail 下載安裝失敗：{{v0}}",
      "t0063": "已部署至 {{v0}}",
      "t0064": "系統部署失敗：{{v0}}",
      "t0065": "已複製 vacation 到 {{v0}} 個郵箱 sieve 目錄（已寫入）",
      "t0066": "已部署 sieve + .dovecot.sieve → {{v0}}@{{v1}}",
      "t0067": "已停用 active sieve link → {{v0}}@{{v1}}",
      "t0068": "{{v0}}@{{v1}} sieve 部署失敗: {{v2}}",
      "t0069": "已寫 per-sender policy daemon（{{v0}} domains）",
      "t0070": "{{v0}} 失敗 (結束 {{v1}}): {{v2}}",
      "t0071": "已寫入 plugin 骨架 {{v0}}",
      "t0072": "symlink 失敗: {{v0}}",
      "t0073": "已 symlink {{v0}} → {{v1}}",
      "t0074": "改 config 失敗: {{v0}}",
      "t0075": "config 已包含 plugin {{v0}}: {{v1}}",
      "t0076": "已寫入 {{v0}}: {{v1}}",
      "t0077": "將 {{v0}} 與 www.{{v1}} 指到伺服器公開 IP。CDN（Cloudflare）可灰雲或橙雲。",
      "t0078": "PTR 須由 VPS／雲端 IP 擁有者設定，並與 HELO/EHLO（{{v0}}）一致。請於供應商控制台申請（AWS/GCP 常需工單）。",
      "t0079": "佇列 {{v0}} 封",
      "t0080": "postsuper 失敗: {{v0}}",
      "t0081": "域名已登記：{{v0}}",
      "t0082": "郵箱已存在：{{v0}}",
      "t0083": "已建立 Maildir：{{v0}}",
      "t0084": "已建立系統用戶 {{v0}}",
      "t0085": "建立系統用戶失敗：{{v0}}",
      "t0086": "虛擬郵箱對應：{{v0}}",
      "t0087": "寫入 passdb 失敗：{{v0}}",
      "t0088": "來源已存在: {{v0}}",
      "t0089": "已建立 {{v0}}: {{v1}} → {{v2}}",
      "t0090": "找不到郵件域名：{{v0}}",
      "t0091": "已寫 vacation 草稿 {{v0}}",
      "t0092": "已寫停用標記 {{v0}}",
      "t0093": "virtual_alias: {{v0}} ({{v1}} 條)",
      "t0094": "Postfix anvil: smtpd_client_message_rate_limit={{v0}} / 3600s（全域；取各域名 rate 最小值）",
      "t0095": "postconf 確認: {{v0}}",
      "t0096": "已寫 rspamd ratelimit.設定檔（~{{v0}}/h）",
      "t0097": "已重建聚合 map（{{v0}} domains）",
      "t0098": "保護模式 {{v0}}：已封鎖遠端模型（僅允許本機 LLM）",
      "t0099": "LLM 請求失敗：{{v0}}",
      "t0100": "在 {{v0}}–{{v1}} 範圍內找不到可用埠",
      "t0101": "請在 confirm 欄位輸入正確字串：{{v0}}",
      "t0102": "延遲 {{v0}}s 會以最少 1 分鐘排程（shutdown +N 以分鐘計）",
      "t0103": "已排程重啟（約 {{v0}} 分鐘後）",
      "t0104": "已排程關機（約 {{v0}} 分鐘後）",
      "t0105": "讀取失敗：{{v0}}",
      "t0106": "列出失敗：{{v0}}",
      "t0107": "服務名稱無效：{{v0}}",
      "t0108": "路徑不在允許寫入範圍：{{v0}}",
      "t0109": "清除／重新載入 失敗：{{v0}}",
      "t0110": "資料庫 {{v0}}：{{v1}} 個 金鑰",
      "t0111": "(type {{v0}} — 僅顯示類型)",
      "t0112": "已寫入 {{v0}}",
      "t0113": "寫入失敗：{{v0}}",
      "t0114": "金鑰 不存在或未刪除",
      "t0115": "主目錄 不存在: {{v0}}",
      "t0116": "無法解析 快照 JSON: {{v0}}",
      "t0117": "共 {{v0}} 個 Restic 快照",
      "t0118": "覆寫 主目錄 需 confirmPhrase=\"{{v0}}\"（雙重確認）",
      "t0119": "預覽試行：快照 {{v0}} 含 {{v1}} 條路徑（最多顯示 100）",
      "t0120": "預覽試行 失敗: {{v0}}",
      "t0121": "已還原 快照 {{v0}} → {{v1}}",
      "t0122": "還原 失敗 結束={{v0}}",
      "t0123": "已寫入管理片段：{{v0}}",
      "t0124": "專案 Linux 用戶約 {{v0}} 個（Match 用戶 ysks_*,ysk_*）",
      "t0125": "請手動：cp {{v0}} /etc/ssh/sshd_config.d/ && 系統控制 重新載入 sshd",
      "t0126": "sshd -t 失敗，未 重新載入：{{v0}}",
      "t0127": "已安裝 {{v0}} 並 重新載入 sshd",
      "t0128": "已安裝片段但 重新載入 失敗：{{v0}}",
      "t0129": "已寫入控制面摘要 {{v0}}（{{v1}} bytes）",
      "t0130": "託管 Nginx 設定檔：{{v0}} 個（面板資料目錄 nginx/conf.d）",
      "t0131": "未知範本：{{v0}}",
      "t0132": "範本 {{v0}}：{{v1}}",
      "t0133": "{{v0}} 已存在 — 已略過（force 可覆寫）",
      "t0134": "WordPress 安裝說明 — {{v0}}",
      "t0135": "域名：{{v0}}",
      "t0136": "進程 entry 預設 {{v0}}.wsgi:application（gunicorn）",
      "t0137": "部署會 cargo 建置 --release；二進位預設 ./目標/release/{{v0}}",
      "t0138": "Axum 範本：cargo 建置 --release 需外網 crates.io",
      "t0139": "二進位 ./目標/release/{{v0}}",
      "t0140": "已建立 {{v0}}、略過 {{v1}}、錯誤 {{v2}}",
      "t0141": "{{v0}}前必須完成專案 Linux 用戶隔離（資源分頁 → 建立系統用戶）。",
      "t0142": "預期主目錄：/home/ysk-server-{{v0}} · 用戶：{{v1}}",
      "t0143": "已 變更擁有者 {{v0}}:{{v1}} → {{v2}}",
      "t0144": "以專案用戶 {{v0}} 執行指令",
      "t0145": "pidfile 以 runuser -u {{v0}} 啟動",
      "t0146": "已寫入 FPM 程序池：{{v0}}",
      "t0147": "已啟用 程序池：{{v0}}",
      "t0148": "/etc/php/{{v0}}/fpm 找不到 — 安裝 php{{v1}}-fpm",
      "t0149": "{{v0}} 已安裝",
      "t0150": "安裝 {{v0}}",
      "t0151": "未能安裝 {{v0}}",
      "t0152": "遠端登入 探測 失敗：{{v0}}",
      "t0153": "nameserver 活躍：{{v0}}",
      "t0154": "zone 目錄存在（{{v0}} 個 .zone）",
      "t0155": "zone 目錄不存在：{{v0}}",
      "t0156": "remote 重新載入 失敗：{{v0}}",
      "t0157": "{{v0}}: 安全複製 失敗 {{v1}}",
      "t0158": "安全複製 {{v0}} 檔 成功 → {{v1}}",
      "t0159": "安全複製 部分/全部失敗（成功={{v0}} fail={{v1}}）",
      "t0160": "啟用 失敗：{{v0}}",
      "t0161": "停用 失敗：{{v0}}",
      "t0162": "UFW DENY from {{v0}}（永久規則，直至手動刪）",
      "t0163": "deny 失敗：{{v0}}",
      "t0164": "已刪 UFW DENY {{v0}}",
      "t0165": "delete 失敗：{{v0}}",
      "t0166": "已刪規則 #{{v0}}",
      "t0167": "刪 #{{v0}} 失敗：{{v1}}",
      "t0168": "已允許 {{v0}}/{{v1}}",
      "t0169": "allow 失敗：{{v0}}",
      "t0170": "重新載入 嘗試失敗 ({{v0}}): {{v1}}",
      "t0171": "隔離模式：以專案用戶 {{v0}} 運作",
      "t0172": "使用 節點 執行檔：{{v0}}",
      "t0173": "目標埠：{{v0}}",
      "t0174": "已套用面板 節點 調校（{{v0}}）",
      "t0175": "套用後找不到進入點：{{v0}}",
      "t0176": "以 系統服務單元 部署：{{v0}}",
      "t0177": "以 PM2 部署：{{v0}}",
      "t0178": "啟動行程失敗：{{v0}}",
      "t0179": "已啟動 pid={{v0}}，pidfile={{v1}}",
      "t0180": "已發布 Nginx 設定（管理檔）：{{v0}}",
      "t0181": "已建立佔位頁：{{v0}}",
      "t0182": "使用既有：{{v0}}",
      "t0183": "靜態 Nginx 設定：{{v0}}",
      "t0184": "文件根目錄：{{v0}}",
      "t0185": "HTTP 基本認證：{{v0}}（{{v1}}）",
      "t0186": "類型：{{v0}}",
      "t0187": "整站重新導向 → {{v0}}",
      "t0188": "使用已上傳憑證：{{v0}}",
      "t0189": "已啟用 SSL（預設 Let’s Encrypt 路徑；或於 SSL 頁上傳 {{v0}} 憑證）",
      "t0190": "重載 Nginx 失敗：{{v0}}",
      "t0191": "已寫入暫停用虛擬主機：{{v0}}",
      "t0192": "運行時 {{v0}} — 只同步 Git，不重啟行程",
      "t0193": "已寫入環境變數 {{v0}}（{{v1}} 項）",
      "t0194": "PHP-FPM 程序池 用戶：{{v0}}（專案隔離）",
      "t0195": "運行時 版本 → {{v0}}",
      "t0196": "已合併面板 php.ini（{{v0}} 條 php_admin_*）",
      "t0197": "PHP-FPM 生產 Nginx 設定：{{v0}}",
      "t0198": "Nginx 重新載入 結束碼={{v0}}: {{v1}}",
      "t0199": "PHP 內建伺服器 pid={{v0}} @ 127.0.0.1:{{v1}}",
      "t0200": "已送 SIGTERM 至 {{v0}}",
      "t0201": "已送 SIGKILL 至 {{v0}}",
      "t0202": "pid {{v0}} 已結束",
      "t0203": "deployProcess 不適用於 運行時「{{v0}}」",
      "t0204": "隔離模式：以專案用戶 {{v0}} 建置與啟動",
      "t0205": "運行時：{{v0}} · 埠 {{v1}} · entry {{v2}}",
      "t0206": "建置：{{v0}}",
      "t0207": "建置失敗：{{v0}}",
      "t0208": "已套用面板 {{v0}} 調校（{{v1}}）",
      "t0209": "已寫入 系統服務 範本：{{v0}}",
      "t0210": "已 啟用 --now 專案 服務單元（用戶={{v0}}）",
      "t0211": "系統控制 啟動失敗：{{v0}}",
      "t0212": "寫入系統 服務單元 失敗：{{v0}}",
      "t0213": "pidfile 啟動 pid={{v0}}${模式 === 'isolated' ?",
      "t0214": "pidfile 啟動失敗：{{v0}}",
      "t0215": "健康檢查未通過（{{v0}}ms）：{{v1}}",
      "t0216": "健康檢查通過（{{v0}}ms）",
      "t0217": "已寫入 Nginx 反代：{{v0}}",
      "t0218": "共 {{v0}} 個 banned IP",
      "t0219": "已 unban {{v0}} @ {{v1}}",
      "t0220": "unban 失敗: {{v0}}",
      "t0221": "管理白名單: {{v0}} ({{v1}} 項)",
      "t0222": "sshd ignoreip {{v0}} {{v1}} · 狀態：已套用",
      "t0223": "fail2ban-客戶端 ignoreip 失敗：{{v0}}（管理檔已寫；不假 已套用）",
      "t0224": "建議 fail2ban jails: {{v0}}",
      "t0225": "已寫入 服務單元 範本 {{v0}}",
      "t0226": "尚未 已套用（{{v0}}）",
      "t0227": "狀態 {{v0}}",
      "t0228": "資料庫數量：{{v0}}（索引 0–{{v1}}）",
      "t0229": "已複製到 {{v0}}",
      "t0230": "無法複製到系統 設定檔 目錄：{{v0}}",
      "t0231": "複製 設定檔 失敗：{{v0}}",
      "t0232": "已重啟 {{v0}}",
      "t0233": "複製到 {{v0}} 失敗：{{v1}}",
      "t0234": "拒絕額外目錄：{{v0}}",
      "t0235": "目錄名不合法：{{v0}}",
      "t0236": "略過預設目錄（已掃描）：{{v0}}",
      "t0237": "{{v0}}（未產生）",
      "t0238": "系統日誌 php{{v0}}-fpm（程序池 日誌 未見）",
      "t0239": "grep「{{v0}}」：{{v1}} 行命中（尾端掃描 {{v2}} bytes）",
      "t0240": "顯示尾端 {{v0}} 行（檔案 {{v1}} bytes，已截斷）",
      "t0241": "顯示尾端 {{v0}} 行（檔案 {{v1}} bytes）",
      "t0242": "找到 {{v0}} 個日誌檔（未指定內容關鍵字）",
      "t0243": "無法讀取：{{v0}}",
      "t0244": "內容搜尋「{{v0}}」：掃 {{v1}} 檔、{{v2}} 檔有命中（只掃各檔尾端）",
      "t0245": "{{v0}} 伺服器尚未安裝",
      "t0246": "{{v0}} 服務未運行",
      "t0247": "{{v0}} 客戶端尚未安裝",
      "t0248": "客戶端：{{v0}}",
      "t0249": "伺服器：{{v0}}",
      "t0250": "{{v0}} 已就緒",
      "t0251": "{{v0}} 安裝未完成",
      "t0252": "{{v0}} 服務已啟動",
      "t0253": "啟動失敗：{{v0}}",
      "t0254": "支援 Node.js 版本 {{v0}}；可用版本：{{v1}}",
      "t0255": "不支援的 PHP 版本 {{v0}}；可用：{{v1}}",
      "t0256": "不支援的 Python 版本 {{v0}}；可用：{{v1}}",
      "t0257": "不支援的 Go 版本 {{v0}}；可用：{{v1}}",
      "t0258": "未知 運行時：{{v0}}",
      "t0259": "dig 無答案（NXDOMAIN 或空）",
      "t0260": "已解析最近 {{v0}} 行",
      "t0261": "PostgreSQL 失敗: {{v0}}",
      "t0262": "MySQL 失敗: {{v0}}",
      "t0263": "{{v0}}: 無法 刪除 — 需 執行與管理員權限（已標記 expired）",
      "t0264": "{{v0}}: 刪除 失敗 {{v1}}",
      "t0265": "{{v0}}: 刪除 失敗 {{v1}}",
      "t0266": "{{v0}}: 已標記 expired（未 刪除 系統帳號）",
      "t0267": "FTP 用戶已存在: {{v0}}",
      "t0268": "已建立 FTP 帳戶 {{v0}}",
      "t0269": "Jail 路徑: {{v0}}",
      "t0270": "密碼已以 crypt 雜湊儲存（不存明文）",
      "t0271": "上傳檔將以專案 Linux 用戶擁有：{{v0}}（套用 vsftpd 後生效）",
      "t0272": "略過無效用戶名",
      "t0273": "帳戶 {{v0}}：已遷移明文密碼 → crypt 雜湊",
      "t0274": "帳戶 {{v0}} 雜湊格式非 crypt（openssl 不可用）— 登入可能失敗",
      "t0275": "帳戶 {{v0}} 無密碼雜湊，無法登入直至重設",
      "t0276": "帳戶 {{v0}} 綁專案但無 linuxUser — 暫用全域 guest「{{v1}}」（請重建 FTP 帳戶）",
      "t0277": "已寫入 {{v0}} 個帳戶設定",
      "t0278": "{{v0}} 個帳戶",
      "t0279": "帳戶 {{v0}} 已套用，vsftpd 運行中",
      "t0280": "略過 變更擁有者 {{v0}}：系統用戶「{{v1}}」不存在（請先建立專案系統用戶）",
      "t0281": "變更擁有者 失敗 {{v0}}：{{v1}}",
      "t0282": "FTP 專用家目錄（{{v0}}）",
      "t0283": "專案 {{v0}} 根目錄",
      "t0284": "專案 {{v0}} public",
      "t0285": "郵件 {{v0}}",
      "t0286": "尚未建立系統用戶（需要系統管理員權限）。意圖 主目錄：{{v0}}；目前使用控制面陰影目錄。",
      "t0287": "{{v0}}；已改用陰影 主目錄 {{v1}}",
      "t0288": "已嘗試停止 {{v0}}",
      "t0289": "已移除舊 主目錄：{{v0}}",
      "t0290": "舊 主目錄 未刪（可手動）：{{v0}} — {{v1}}",
      "t0291": "拒絕刪除不安全 主目錄 路徑：{{v0}}",
      "t0292": "未刪 OS 主目錄（需要管理員權限）：{{v0}}；系統用戶 {{v1}} 可能仍存在",
      "t0293": "pdnsutil load-zone 失敗：{{v0}}",
      "t0294": "已透過 pdnsutil 載入 zone {{v0}}",
      "t0295": "系統控制 {{v0}} fail2ban 成功",
      "t0296": "{{v0}} 失敗：{{v1}}",
      "t0297": "fail2ban 封鎖 {{v0}} @ {{v1}}（臨時，受 bantime 限制）",
      "t0298": "banip 失敗：{{v0}}",
      "t0299": "監獄：{{v0}}",
      "t0300": "ignoreip 來源：dataDir/fail2ban/ignoreip.txt",
      "t0301": "安裝檢查：{{v0}}",
      "t0302": "已達方案專案上限 {{v0}}（套件: {{v1}}）",
      "t0303": "已達方案信箱上限 {{v0}}（套件: {{v1}}）",
      "t0304": "已達方案資料庫上限 {{v0}}（套件: {{v1}}）",
      "t0305": "已寫入 {{v0}}（資料庫 預設 {{v1}}@{{v2}}；可用環境變數覆寫）",
      "t0306": "pm2 start 失敗：{{v0}}",
      "t0307": "pm2 已啟動 {{v0}}",
      "t0308": "{{v0}} 尚未安裝",
      "t0309": "已執行 {{v0}}",
      "t0310": "已套用 {{v0}} 項",
      "t0311": "以下項目可能需重啟：{{v0}}",
      "t0312": "即時套用 {{v0}} 項",
      "t0313": "需重啟項（請用生命週期重啟）：{{v0}}",
      "t0314": "已 ALTER SYSTEM {{v0}} 項並 重新載入",
      "t0315": "部分參數需重啟後生效：{{v0}}",
      "t0316": "已 {{v0}} {{v1}}",
      "t0317": "管理 ini：{{v0}}",
      "t0318": "/etc/php/{{v0}}/fpm 不存在 — 請先安裝 php{{v1}}-fpm",
      "t0319": "已套用 {{v0}} 並 重新載入 php{{v1}}-fpm",
      "t0320": "已複製 ini；重新載入 失敗：{{v0}}",
      "t0321": "DNS zone draft {{v0}}（需到 DNS 頁寫入/套用）",
      "t0322": "已含 IPv6 {{v0}}",
      "t0323": "郵件域名 {{v0}} 已登記",
      "t0324": "MySQL 資料庫 draft {{v0}}（需到資料庫頁套用）",
      "t0325": "略過：家目錄不存在 {{v0}}",
      "t0326": "已備份 {{v0}}/{{v1}} 個專案",
      "t0327": "（略過 {{v0}} 個無 主目錄）",
      "t0328": "專案目錄不存在：{{v0}}",
      "t0329": "封存 失敗：{{v0}}",
      "t0330": "已寫入備份 {{v0}}",
      "t0331": "預覽試行：共 {{v0}} 個檔（顯示 {{v1}} 個）",
      "t0332": "無法列出: {{v0}}",
      "t0333": "已選擇性還原 (網站) 到 {{v0}}",
      "t0334": "網站 還原失敗: {{v0}}",
      "t0335": "還原失敗: {{v0}}",
      "t0336": "已從 {{v0}} 完整還原到專案目錄",
      "t0337": "已 變更擁有者 {{v0}}:{{v1}} → {{v2}}",
      "t0338": "執行: {{v0}}",
      "t0339": "管理 定時工作表 檔：{{v0}}",
      "t0340": "定時工作表 失敗: {{v0}}",
      "t0341": "pg_dump 失敗: {{v0}}",
      "t0342": "匯出 失敗: {{v0}}",
      "t0343": "psql 失敗: {{v0}}",
      "t0344": "匯入 失敗: {{v0}}",
      "t0345": "目標 {{v0}} 非空且非 git 倉庫 — 拒絕 clone 以免覆寫資料（僅清除帶 .ysk-scaffold 的佔位範本）",
      "t0346": "已 clone {{v0}} → {{v1}}",
      "t0347": "已 提取 更新：{{v0}}",
      "t0348": "linuxUser 無效：{{v0}}",
      "t0349": "已套用 {{v0}}：{{v1}} + www-data/nginx；主目錄 750、public g+rX",
      "t0350": "ysk-網站 套用部分失敗：{{v0}}",
      "t0351": "管理路徑 {{v0}}",
      "t0352": "nginx 管理 設定檔: {{v0}}",
      "t0353": "下載失敗: {{v0}}",
      "t0354": "已下載 Adminer → {{v0}}",
      "t0355": "已有 {{v0}}",
      "t0356": "nginx 管理 設定檔: {{v0}}",
      "t0357": "已複製 → {{v0}}",
      "t0358": "埠號無效：{{v0}}",
      "t0359": "以用戶 {{v0}} 安裝 定時工作表",
      "t0360": "沿用已有金鑰 {{v0}} 個",
      "t0361": "已簽署 zone → {{v0}}（需 重新載入 權威 DNS；DS 仍要人手上 registrar）",
      "t0362": "未找到 managed zone 檔（試過 dns/zones/{{v0}}.zone）— 跳過簽署",
      "t0363": "{{v0}} 個檔案 under {{v1}}",
      "t0364": "TCP {{v0}}:{{v1}} 正常（{{v2}}ms）",
      "t0365": "TCP {{v0}}:{{v1}} 失敗：{{v2}}",
      "t0366": "PING 失敗：{{v0}}",
      "t0367": "超出配額：{{v0}}MB > {{v1}}MB",
      "t0368": "磁碟配額已超限（{{v0}} / {{v1}} MiB），無法{{v2}}",
      "t0369": "主目錄 非意圖路徑（目前 {{v0}} → 應為 {{v1}}）",
      "t0370": "Linux 用戶名為舊式「{{v0}}」（新建會用 {{v1}}）；遷移會保留現有用戶名並改 主目錄",
      "t0371": "就緒 {{v0}} / 降級 {{v1}} / 未隔離 {{v2}}（共 {{v3}}）",
      "t0372": "；待處理：{{v0}}{{v1}}",
      "t0373": "專案「{{v0}}」隔離",
      "t0374": "已複製到本機路徑 {{v0}}",
      "t0375": "身份 {{v0}}：{{v1}}",
      "t0376": "sftp（身份金鑰）連到 {{v0}} 成功",
      "t0377": "sftp（身份金鑰）失敗：{{v0}}",
      "t0378": "sftp 連到 {{v0}} 成功",
      "t0379": "sftp 失敗：{{v0}}",
      "t0380": "sftp 連到 {{v0}} 成功",
      "t0381": "sftp 失敗：{{v0}}（可設定備份 remote identityId）",
      "t0382": "已上傳 S3 {{v0}}",
      "t0383": "S3 失敗: {{v0}}",
      "t0384": "政策已開：{{v0}}/{{v1}} 管理員 已啟用 雙重驗證",
      "t0385": "未強制政策：{{v0}}/{{v1}} 名管理員已開雙重驗證。單管理員且未開 2FA 時，請先開 2FA 再加備援管理員。",
      "t0386": "{{v0}} 在 PATH",
      "t0387": "{{v0}} 找不到",
      "t0388": "請於系統安裝 {{v0}}，或於面板軟件／運行時 安裝",
      "t0389": "可用版本：{{v0}}",
      "t0390": "使用率約 {{v0}}%（總 {{v1}} MB）",
      "t0391": "使用率約 {{v0}}%（{{v1}}）",
      "t0392": "於服務矩陣啟動 {{v0}}",
      "t0393": "模式：{{v0}}",
      "t0394": "就緒 {{v0}} / 降級 {{v1}} / 缺少 {{v2}}（共 {{v3}} 項）",
      "t0395": "找不到（預期 {{v0}}）",
      "t0396": "主機 node：{{v0}}",
      "t0397": "主機 php：{{v0}}",
      "t0398": "主機 python：{{v0}}",
      "t0399": "主機 go：{{v0}}",
      "t0400": "主機 cargo：{{v0}}",
      "t0401": "節點 可用：{{v0}}",
      "t0402": "PHP 可用：{{v0}}",
      "t0403": "Python 可用：{{v0}}",
      "t0404": "Go 可用：{{v0}}",
      "t0405": "Rust 可用：{{v0}}",
      "t0406": "準備安裝 節點 {{v0}}",
      "t0407": "準備安裝 PHP {{v0}}",
      "t0408": "準備安裝 Python {{v0}}",
      "t0409": "準備安裝 Go {{v0}} 到 /usr/local/ysk/go",
      "t0410": "準備安裝 Rust（{{v0}}）到 /usr/local/ysk/rust",
      "t0411": "安裝失敗：{{v0}}",
      "t0412": "已準備 OpenJDK {{v0}} 安裝腳本",
      "t0413": "已準備 Kotlin {{v0}} 安裝腳本（需 JDK）",
      "t0414": "已準備 Bun（{{v0}}）安裝腳本",
      "t0415": "專案 主目錄 公鑰：{{v0}}",
      "t0416": "登入目標用戶 {{v0}}（專案隔離 主目錄）；請對 .ssh 執行 變更擁有者（介面 會嘗試）",
      "t0417": "已 變更擁有者 {{v0}} → {{v1}}",
      "t0418": "變更擁有者 .ssh 失敗：{{v0}}",
      "t0419": "已刪除 金鑰 · 重寫 authorized_keys",
      "t0420": "不支援的類型：{{v0}}",
      "t0421": "TTL {{v0}} 建議介於 30–604800",
      "t0422": "名稱 {{v0}} 同時有 CNAME 與其他類型（禁止）",
      "t0423": "名稱 {{v0}} 有多個不同 CNAME 目標",
      "t0424": "移除設定失敗：{{v0}}",
      "t0425": "帳戶 {{v0}} 已寫入管理設定",
      "t0426": "無法移除檔案：{{v0}}",
      "t0427": "已複製 {{v0}} 個設定檔到系統目錄",
      "t0428": "欄位 {{v0}} 無效",
      "t0429": "目前 主目錄 非意圖路徑（意圖 {{v0}}）",
      "t0430": "usermod -s 失敗：{{v0}}",
      "t0431": "鎖定失敗：{{v0}}",
      "t0432": "解鎖失敗：{{v0}}",
      "t0433": "set-property 失敗：{{v0}}（下次 deploy 會寫入 服務單元）",
      "t0434": "服務單元 {{v0}} 未 active — 限制已存 資料庫，下次 deploy 寫入 服務單元",
      "t0435": "setquota 未成功（檔案系統可能未啟 user_xattr/quota）：{{v0}}",
      "t0436": "主目錄 不存在：{{v0}}",
      "t0437": "已 變更擁有者 {{v0}} → {{v1}}",
      "t0438": "top header 失敗：{{v0}}",
      "t0439": "ps 完整欄位失敗：{{v0}}",
      "t0440": "目前 NI={{v0}}",
      "t0441": "PID {{v0}} 是本控制面進程（process.pid）",
      "t0442": "進程不存在或無權探測（kill -0 結束 {{v0}}）",
      "t0443": "kill -s {{v0}} 失敗：${err ||",
      "t0444": "已送 {{v0}} → PID {{v1}}",
      "t0445": "{{v0}} 個專案已暫停",
      "t0446": "{{v0}} 個專案未建立系統用戶",
      "t0447": "{{v0}} 項待審批",
      "t0448": "憑證已過期：{{v0}}",
      "t0449": "憑證 {{v0}} 日內到期：{{v1}}",
      "t0450": "時間 {{v0}}",
      "t0451": "DNSBL 上榜：{{v0}}",
      "t0452": "{{v0}} 項套用失敗／已封鎖",
      "t0453": "{{v0}} 項仍為 已寫入／draft",
      "t0454": "自動防護檔：{{v0}}",
      "t0455": "操作失敗：{{v0}}",
      "t0456": "系統日誌 磁碟偏高：≈{{v0}} MB",
      "t0457": "閾值 {{v0}} MB — 可到日誌中心 清理 或調整保留",
      "t0458": "df 失敗：{{v0}}",
      "t0459": "僅量測前 {{v0}} 個專案（共 {{v1}}）",
      "t0460": "目標版本 {{v0}} → {{v1}}",
      "t0461": "已嘗試升級 {{v0}}",
      "t0462": "升級失敗 結束={{v0}}",
      "t0463": "套件管理 列表 --upgradable: {{v0}} 可升級",
      "t0464": "套件管理 列表 --upgradable 不可用（結束 {{v0}}）；改用 套件管理-cache policy",
      "t0465": "dpkg+套件管理-cache policy: {{v0}} 套件",
      "t0466": "dpkg/套件管理-cache policy 失敗或空白（結束 {{v0}}）— 可能無 套件管理 或權限不足",
      "t0467": "節點 進程 {{v0}}（非 套件管理 nodejs 套件則不列入可升級清單）",
      "t0468": "真實可升級（candidate ≠ current）: {{v0}}",
      "t0469": "npm registry 回應 HTTP {{v0}}",
      "t0470": "GitHub releases 回應 HTTP {{v0}}",
      "t0471": "GitHub 套件.json 回應 HTTP {{v0}}",
      "t0472": "npm 頻道：{{v0}}@{{v1}}",
      "t0473": "npm {{v0}} 不可用：{{v1}}",
      "t0474": "GitHub releases 不可用：{{v0}}",
      "t0475": "GitHub 源碼 套件.json（{{v0}}）：{{v1}}",
      "t0476": "GitHub 套件.json 不可用：{{v0}}",
      "t0477": "有更新：{{v0}} → {{v1}}",
      "t0478": "來源目錄 {{v0}} 不是 git 儲存庫 — 可設 YSK_SOURCE_ROOT，或改用 npm 頻道（YSK_NPM_PACKAGE）",
      "t0479": "GitHub tarball 下載失敗：{{v0}}",
      "t0480": "已下載原始碼到 {{v0}}（staging only）— 未替換運行中安裝；請用部署腳本／git 工作目錄完成切換",
      "t0481": "使用 git 來源：{{v0}}",
      "t0482": "git 套用 步驟 {{v0}} 失敗 (結束 {{v1}}): {{v2}}",
      "t0483": "已更新來源樹至目標 {{v0}} 並 建置 — 請重啟 ysk-server 程序令新版本生效",
      "t0484": "已安裝 {{v0}}",
      "t0485": "npm 更新失敗：{{v0}}",
      "t0486": "已用 YSK_NPM_PACKAGE 安裝 {{v0}}",
      "t0487": "YSK_NPM_PACKAGE 安裝失敗：{{v0}}",
      "t0488": "可升級 {{v0}} → {{v1}}（CRITICAL CVE，需確認）",
      "t0489": "可升級 {{v0}} → {{v1}}（HIGH CVE，需確認）",
      "t0490": "可升級 {{v0}} → {{v1}}（可能不相容，需確認）",
      "t0491": "可升級 {{v0}} → {{v1}}（安全修補）",
      "t0492": "可升級 {{v0}} → {{v1}}（套件管理 Candidate）",
      "t0493": "無可用升級，但 OSV 標註已裝版有 {{v0}} 項漏洞信號",
      "t0494": "服務狀態：{{v0}}",
      "t0495": "已偵測到可執行檔：{{v0}}",
      "t0496": "未知 代理 運行時：{{v0}}",
      "t0497": "不支援的 代理 類型：{{v0}}",
      "t0498": "安裝指令失敗（不會假裝成功）：{{v0}}",
      "t0499": "代理 找不到 工作階段：{{v0}}",
      "t0500": "找不到任務：{{v0}}",
      "t0501": "用戶已存在: {{v0}}",
      "t0502": "救援用戶排除：{{v0}}",
      "t0503": "已排除專案 SFTP 風格用戶（ysks_/ysk_，internal-sftp 不適合 kbd-interactive）：{{v0}}",
      "t0504": "已從 strict 列表移除救援用戶：{{v0}}",
      "t0505": "{{v0}} 個用戶將要求 publickey+TOTP、關閉 密碼",
      "t0506": "管理檔：{{v0}}",
      "t0507": "已安裝 {{v0}} 並嘗試 重新載入 sshd",
      "t0508": "安裝／sshd -t 失敗：{{v0}}",
      "t0509": "PAM 預覽會寫管理檔：{{v0}}",
      "t0510": "變更擁有者 可能失敗：{{v0}}",
      "t0511": "警告：期望 模式 400（stat: {{v0}}）",
      "t0512": "PAM 片段（管理檔）：{{v0}}",
      "t0513": "sshd 提示（管理檔）：{{v0}}",
      "t0514": "scratch（只此一次回應）：{{v0}} — 請離線保存",
      "t0515": "pam.d/sshd 已引用：{{v0}}",
      "t0516": "用戶 {{v0}} 已有 遠端登入 雙重驗證（{{v1}}）。先 停用/retire。",
      "t0517": "已產生 secrets 主節點 金鑰：{{v0}}",
      "t0518": "變更擁有者 可能失敗：{{v0}}",
      "t0519": "ssh 失敗：{{v0}}",
      "t0520": "已產生 主節點 金鑰：{{v0}}（請一併備份）",
      "t0521": "已產生 主節點 金鑰：{{v0}}",
      "t0522": "已有相同 fingerprint：{{v0}} ({{v1}})",
      "t0523": "已寫 CF-only UFW 腳本：{{v0}}",
      "t0524": "保留埠：{{v0}}",
      "t0525": "CF IPv4 段：{{v0}} 個",
      "t0526": "CF IPv6 段：{{v0}} 個",
      "t0527": "ufw 腳本失敗：{{v0}}",
      "t0528": "auth 失敗 IP：{{v0}}",
      "t0529": "Top IP 樣本 {{v0}} 個",
      "t0530": "威脅分 {{v0}} · {{v1}}",
      "t0531": "自動防護檔 → {{v0}}{{v1}}",
      "t0532": "自動切換防護檔：{{v0}}",
      "t0533": "遠端登入 失敗×{{v0}}",
      "t0534": "auth 失敗來源 {{v0}} IP",
      "t0535": "請求×{{v0}}",
      "t0536": "掃描×{{v0}}",
      "t0537": "批量封禁 {{v0}}/{{v1}}",
      "t0538": "完成 {{v0}} 個 IP：成功 {{v1}}",
      "t0539": "熔斷：本小時已 auto-封鎖 {{v0}} 次",
      "t0540": "熔斷：本小時已達上限 {{v0}}",
      "t0541": "自動 封鎖 {{v0}} 個 IP",
      "t0542": "無法解析 zone {{v0}}（HTTP {{v1}}）",
      "t0543": "計劃：將 {{v0}} security_level → {{v1}}",
      "t0544": "模擬：{{v0}} → security_level={{v1}}",
      "t0545": "本小時已達上限（{{v0}}）",
      "t0546": "本小時 {{v0}} 次",
      "t0547": "緊急檔需 confirm=\"{{v0}}\"",
      "t0548": "已寫 Nginx 限速：{{v0}}",
      "t0549": "已注入 {{v0}} 個 vhost 限速標記",
      "t0550": "作用中防護檔 → {{v0}}",
      "t0551": "自動 封鎖 → {{v0}}（{{v1}} / {{v2}}）",
      "t0552": "套用防護檔：{{v0}}",
      "t0553": "fail2ban 失敗：{{v0}}",
      "t0554": "ufw 失敗：{{v0}}",
      "t0555": "封禁 {{v0}}",
      "t0556": "ufw delete 失敗：{{v0}}",
      "t0557": "解封 {{v0}}",
      "t0558": "略過 {{v0}}：{{v1}}",
      "t0559": "已注入限速到 {{v0}} 個 vhost",
      "t0560": "cluster_size={{v0}} < 登記節點 {{v1}}",
      "t0561": "只有 {{v0}} 個節點在 叢集",
      "t0562": "探測 不支援 {{v0}}",
      "t0563": "mysql/mariadb 查詢失敗：{{v0}}",
      "t0564": "SHOW 從節點/SLAVE 失敗：{{v0}}",
      "t0565": "SHOW 主節點 失敗：{{v0}}",
      "t0566": "從節點 應為 recovery，實際={{v0}}",
      "t0567": "主節點 不應 recovery，實際={{v0}}",
      "t0568": "從節點 異常 role={{v0}}",
      "t0569": "期望 主節點，實際 role={{v0}}",
      "t0570": "{{v0}} 個產物檔 · {{v1}}",
      "t0571": "封存 失敗：{{v0}}",
      "t0572": "已打包 {{v0}}（{{v1}} bytes）",
      "t0573": "{{v0}} 個 對等節點 目標",
      "t0574": "{{v0}}: identity {{v1}} 不可用 — 改用預設 金鑰",
      "t0575": "{{v0}}: ssh mkdir 失敗 {{v1}}",
      "t0576": "{{v0}}: 本地缺 {{v1}}",
      "t0577": "{{v0}}/{{v1}}: 安全複製 失敗 {{v2}}",
      "t0578": "{{v0}} 個 代理 · op={{v1}}",
      "t0579": "{{v0}}: enqueue 失敗 {{v1}}",
      "t0580": "未知拓撲 {{v0}}",
      "t0581": "本機 Galera 設定檔（{{v0}}）",
      "t0582": "在 {{v0}} 安裝 設定檔 並 join（手動 / 遠端登入 / 機群）",
      "t0583": "安裝 設定檔 → 系統控制 重新啟動 mariadb（非 初始化 節點）",
      "t0584": "找不到 設定檔 產物：{{v0}}",
      "t0585": "本機 套用 不支援 {{v0}}",
      "t0586": "已安裝系統 drop-in：{{v0}}",
      "t0587": "寫入系統 設定檔 失敗：{{v0}}",
      "t0588": "galera_new_cluster 失敗：{{v0}}",
      "t0589": "已 系統控制 重新啟動 {{v0}}（從庫/slot/哨兵 後續步驟見 scripts/）",
      "t0590": "已 系統控制 重新啟動 {{v0}}",
      "t0591": "ssh 探測 失敗：{{v0}}",
      "t0592": "從節點 探測 失敗：{{v0}}",
      "t0593": "主節點 探測 失敗：{{v0}}",
      "t0594": "全部 {{v0}} 節點 探測 成功 · size={{v1}}",
      "t0595": "全部 {{v0}} 節點 探測 成功",
      "t0596": "會安裝到 {{v0}} 並 {{v1}}",
      "t0597": "安全複製 失敗 {{v0}}",
      "t0598": "安裝 設定檔 失敗：{{v0}}",
      "t0599": "設定檔 已寫但 重新啟動 {{v0}} 失敗",
      "t0600": "已寫 {{v0}}${重新啟動 ?",
      "t0601": "不支援的引擎：{{v0}}",
      "t0602": "不支援的叢集類型：{{v0}}",
      "t0603": "已嘗試停止 {{v0}} 個專案 服務單元（成功-ish {{v1}}）",
      "t0604": "部分 stop 非零 結束（共 {{v0}}）— 仍繼續 匯出",
      "t0605": "與 {{v0}} 共用同一 RDB（略過重複 匯出）",
      "t0606": "打包完成 → {{v0}}",
      "t0607": "已建立用戶 {{v0}} uid={{v1}}",
      "t0608": "用戶已存在 {{v0}}",
      "t0609": "useradd 失敗: {{v0}}",
      "t0610": "變更擁有者 失敗: {{v0}}",
      "t0611": "主目錄 不存在，略過 變更擁有者: {{v0}}",
      "t0612": "匯出 檔不存在或空: {{v0}}",
      "t0613": "RDB 不存在: {{v0}}",
      "t0614": "已還原 RDB → {{v0}}",
      "t0615": "複製 RDB 失敗: {{v0}}",
      "t0616": "redis 啟動/ping: {{v0}}",
      "t0617": "提示：{{v0}} 不存在 — 匯出 應在 dataDir 隨 同步複製 到達（dumpRelPath）",
      "t0618": "無法解析目標 sha256: {{v0}}",
      "t0619": "ysk.json sha256 一致 {{v0}}…",
      "t0620": "ysk.json 不一致 local={{v0}} remote={{v1}}",
      "t0621": "本機 dataDir 不存在: {{v0}}",
      "t0622": "dataDir 不存在: {{v0}}",
      "t0623": "略過不存在的 主目錄: {{v0}}",
      "t0624": "主目錄 已在 dataDir 內，隨 dataDir 傳輸: {{v0}}",
      "t0625": "同步複製 主目錄 失敗 {{v0}}",
      "t0626": "傳輸 中止：主目錄 同步複製 失敗 {{v0}}",
      "t0627": "略過不存在: {{v0}}",
      "t0628": "傳輸 完成 → {{v0}}:{{v1}}",
      "t0629": "專案 {{v0}} 尚未建立系統用戶（主目錄 {{v1}} 不存在）。請到專案頁完成隔離。",
      "t0630": "專案 {{v0}} 綁定 bind_ip={{v1}} — 遷移後可能需清空（新機 IP 不同）",
      "t0631": "專案 {{v0}} 主目錄 非標準路徑: {{v1}}",
      "t0632": "磁碟有孤立 主目錄（store 無對應）: {{v0}}",
      "t0633": "Maildir 不存在: {{v0}}",
      "t0634": "來源缺 {{v0}} — 無法傳輸到目標機",
      "t0635": "無法探測 {{v0}}",
      "t0636": "來源 {{v0}} · {{v1}}",
      "t0637": "專案 {{v0}} · 信箱 {{v1}} · 資料庫 {{v2}} · Redis {{v3}}",
      "t0638": "需安裝軟件 {{v0}} 項 · homes {{v1}}",
      "t0639": "cutover 主機名 {{v0}}",
      "t0640": "警告 {{v0}} 則（請審閱）",
      "t0641": "已產生臨時金鑰 {{v0}}",
      "t0642": "無法產生臨時金鑰: {{v0}}",
      "t0643": "目標未確認寫入 authorized_keys: {{v0}}",
      "t0644": "已在 {{v0}} 安裝臨時公鑰（後續改用 金鑰 登入）",
      "t0645": "刪除臨時金鑰失敗: {{v0}}",
      "t0646": "{{v0}} 可用",
      "t0647": "dataDir 不存在: {{v0}}",
      "t0648": "預估傳輸量 ~{{v0}}",
      "t0649": "來源可用 {{v0}}（匯出 緩衝充足）",
      "t0650": "來源磁碟不足：可用 {{v0}}，建議 ≥ {{v1}}",
      "t0651": "盤點警告 {{v0}} 則（非全部阻塞）",
      "t0652": "遠端登入 連線 {{v0}}",
      "t0653": "目標用戶 {{v0}} 非 管理員（MVP 需要 管理員）",
      "t0654": "不支援的 OS（{{v0}}）；需要 Debian/Ubuntu",
      "t0655": "目標可用 {{v0}} ≥ 需求 {{v1}}",
      "t0656": "目標磁碟不足：可用 {{v0}}，需要約 {{v1}}",
      "t0657": "目標已有 {{v0}}/ysk.json — 拒絕覆蓋（需 forceWipeTarget）",
      "t0658": "目標目錄存在但無 ysk.json: {{v0}}",
      "t0659": "目標目錄將建立: {{v0}}",
      "t0660": "時鐘偏差 {{v0}}s",
      "t0661": "時鐘偏差 {{v0}}s ≥ 120s（影響 TLS/TOTP）",
      "t0662": "專案 {{v0}} 來源 bind_ip={{v1}} — 新機應改為空（全介面）",
      "t0663": "已清空 {{v0}} 個 project.bind_ip",
      "t0664": "無法 persist bind_ip 修正: {{v0}}",
      "t0665": "nginx 同步 例外: {{v0}}",
      "t0666": "私鑰不存在: {{v0}}",
      "t0667": "identity {{v0}} 不可用",
      "t0668": "遠端登入 失敗 結束={{v0}}: {{v1}}",
      "t0669": "本地路徑不存在: {{v0}}",
      "t0670": "同步複製 失敗 結束={{v0}}: {{v1}}",
      "t0671": "Redis RDB 已寫入 {{v0}}（--rdb）",
      "t0672": "--rdb 失敗: {{v0}}",
      "t0673": "BGSAVE 失敗: {{v0}}",
      "t0674": "Redis RDB 已複製 {{v0}} → {{v1}}（BGSAVE）",
      "t0675": "無法取得 Redis RDB（src={{v0}}）",
      "t0676": "{{v0}} 期望 {{v1}} 實際 {{v2}}",
      "t0677": "來源 主目錄 本就不存在，略過: {{v0}}",
      "t0678": "主目錄 缺失 {{v0}}",
      "t0679": "來源 Maildir 本就不存在: {{v0}}",
      "t0680": "maildir 缺失 {{v0}}",
      "t0681": "ysk.json fingerprint 已變（可能 reapply 寫回）local≠source",
      "t0682": "就緒檢查 錯誤: {{v0}}",
      "t0683": "DNS cutover：將以下 A/AAAA 指向新 IP → {{v0}}{{v1}}",
      "t0684": "verify 失敗：{{v0}} 項 mismatch",
      "t0685": "verify 通過（mismatches={{v0}}）",
      "t0686": "無效 目標: {{v0}}（需要 管理員@主機 或 主機）",
      "t0687": "找不到 job {{v0}}",
      "t0688": "手動：在目標執行 系統變更權限已開啟 ysk-server migrate post --job {{v0}} --data-dir {{v1}}",
      "t0689": "整機遷移完成 → {{v0}}",
      "t0690": "cutover 主機名: {{v0}}",
      "t0691": "遠端 post 完成 @ {{v0}}",
      "t0692": "找不到 job {{v0}}（確認 dataDir 已 同步複製）",
      "t0693": "遠端未回報成功標記 ({{v0}})",
      "t0694": "初始化 完成 → {{v0}}",
      "t0695": "非關鍵失敗: {{v0}}",
      "t0696": "不支援的 模式：{{v0}}",
      "t0697": "找不到 邊緣 節點：{{v0}}",
      "t0698": "節點 {{v0}} 需有 邊緣（或 origin）角色",
      "t0699": "不支援的 DNS 策略：{{v0}}",
      "t0700": "不支援的 SSL 模式：{{v0}}",
      "t0701": "CDN 站點上限 {{v0}}",
      "t0702": "origin shield 節點不存在：{{v0}}",
      "t0703": "edges: {{v0}} 個",
      "t0704": "origin URL（回源）: {{v0}}",
      "t0705": "已更新既有 CDN 站點 {{v0}}",
      "t0706": "已建立 CDN 站點 {{v0}}",
      "t0707": "origin shield：本 邊緣 回源經 shield {{v0}} → {{v1}}",
      "t0708": "origin.kind=project 但未提供 projectOriginUrl — 使用佔位 {{v0}}",
      "t0709": "邊緣 {{v0}} ({{v1}}): planned（未 fan-out — PR-C3）",
      "t0710": "邊緣 {{v0}}: 節點缺失",
      "t0711": "已寫入 managed nginx：{{v0}}",
      "t0712": "已寫入 邊緣 模板：{{v0}}",
      "t0713": "本機 nginx -t 失敗（proxy_cache_path 可能需在 http{}）：{{v0}}",
      "t0714": "使用 certId={{v0}} 網域={{v1}}",
      "t0715": "certId={{v0}} 檔案不存在：{{v1}}",
      "t0716": "找不到 certId={{v0}}",
      "t0717": "使用 dataDir 憑證 {{v0}}",
      "t0718": "使用本機 Let’s Encrypt {{v0}}",
      "t0719": "安全複製 失敗 {{v0}}",
      "t0720": "mkdir 失敗 {{v0}}",
      "t0721": "certbot 失敗：{{v0}}",
      "t0722": "originShieldNodeId={{v0}} 不存在 — 忽略 shield",
      "t0723": "{{v0}}: 有 遠端登入 目標 — 使用 遠端登入 同步套用（略過 機群 佇列）",
      "t0724": "機群 無法入佇列（已封鎖={{v0}}）— 提供 enqueue 或改用 遠端登入",
      "t0725": "機群 已入佇列 {{v0}} 邊緣 — 已排隊 ≠ 代理 已 nginx 重新載入；查看 Agents 指令紀錄",
      "t0726": "fleetAgentId={{v0}} — 需要控制面 機群 enqueue（介面 會注入）；或改填 遠端登入 做同步套用",
      "t0727": "找不到 設定檔：{{v0}}",
      "t0728": "讀 設定檔 失敗：{{v0}}",
      "t0729": "機群 enqueue 失敗：{{v0}}",
      "t0730": "nginx -t 失敗：{{v0}}",
      "t0731": "遠端登入 mkdir 失敗：{{v0}}",
      "t0732": "安全複製 失敗：{{v0}}",
      "t0733": "remote 重新載入 失敗：{{v0}}",
      "t0734": "fleetAgentId={{v0}} — 清除 需 機群 enqueue 或 遠端登入",
      "t0735": "enqueue 失敗：{{v0}}",
      "t0736": "清除 失敗：{{v0}}",
      "t0737": "remote 清除 失敗：{{v0}}",
      "t0738": "機群 清除 已入佇列 {{v0}} — 已排隊 ≠ 邊緣 已 清除",
      "t0739": "geo {{v0}}: 未知節點 {{v1}}",
      "t0740": "weighted 縮放至 maxRr={{v0}}（總副本 {{v1}}）",
      "t0741": "minHealthyEdges={{v0}} 但僅 {{v1}} 個健康 邊緣 — 防全滅：改用全部有 IP 的 邊緣（含 offline）",
      "t0742": "邊緣 {{v0}} 不存在 — 略過",
      "t0743": "探測 {{v0}} 例外：{{v1}}",
      "t0744": "已綁定 zoneId={{v0}} ({{v1}})",
      "t0745": "名稱 {{v0}} 已有 用戶 管理記錄 {{v1}} 筆 — CDN 仍寫入 managedBy=cdn（可能並存；請檢查 zone）",
      "t0746": "geo subdomain {{v0}}: 無 IP — 略過",
      "t0747": "access_log 抽樣 {{v0}}（{{v1}} 個 cache 狀態 權杖）",
      "t0748": "讀取本地 日誌 {{v0}}",
      "t0749": "cache 目錄 {{v0}} ≈ {{v1}} bytes（非命中率）",
      "t0750": "cache 抽樣僅前 {{v0}}/{{v1}} 個站點",
      "t0751": "IPv4 無效：{{v0}}",
      "t0752": "IPv6 無效：{{v0}}",
      "t0753": "CDN 節點上限 {{v0}}",
      "t0754": "HTTP {{v0}}（視為不健康）{{v1}}",
      "t0755": "HTTP 探活失敗：{{v0}}",
      "t0756": "TCP {{v0}}:443/80 皆無法連線",
      "t0757": "探活 {{v0}}/{{v1}} 健康",
      "t0758": "列表-units 失敗：{{v0}}",
      "t0759": "共 {{v0}} 個 service units",
      "t0760": "已改用 服務單元 {{v0}}",
      "t0761": "輸出截斷至 {{v0}} bytes",
      "t0762": "journalctl · {{v0}} 行",
      "t0763": "已 清理：{{v0}}",
      "t0764": "清理 失敗：{{v0}}",
      "t0765": "應用層 filter：{{v0}} 行匹配",
      "t0766": "檔案 {{v0}} · {{v1}} bytes · 顯示 {{v2}} 行",
      "t0767": "路徑不在 允許清單：{{v0}}",
      "t0768": "系統日誌 磁碟偏高：≈{{v0}} MB（閾值 {{v1}} MB）",
      "t0769": "專案 {{v0}} · {{v1}} 個 日誌 檔（含子目錄）",
      "t0770": "已匯出 {{v0}} 行（{{v1}}）",
      "t0771": "未到時間窗 {{v0}}",
      "t0772": "每月（DB-IP City Lite {{v0}}；失敗試上月）",
      "t0773": "每月 fallback {{v0}}",
      "t0774": "政策：{{v0}} · 國 {{v1}} · 省 {{v2}} · 市 {{v3}}{{v4}} · ASN {{v5}}",
      "t0775": "檔案過細（{{v0}} B），可能下載失敗",
      "t0776": "略過 {{v0}} fallback（已成功）",
      "t0777": "已更新 {{v0}}（{{v1}} B）",
      "t0778": "更新失敗 {{v0}}：{{v1}}{{v2}}",
      "t0779": "找不到設定檔：{{v0}}",
      "t0780": "無法解析設定檔：{{v0}}",
      "t0781": "找不到憑證：{{v0}}",
      "t0782": "預覽試行：未 系統控制 {{v0}}。加 --執行 且 系統變更權限已開啟 與管理員權限 先真正執行",
      "t0783": "找不到 job {{v0}}",
      "t0784": "Web UI: 找不到 (建置 apps/網站 or set YSK_WEB_ROOT)\\n",
      "t0785": "DNS zone 已建立（draft）: {{v0}}",
      "t0786": "DNS zone 建立失敗: {{v0}}",
      "t0787": "郵件域名已登記: {{v0}}",
      "t0788": "郵件域名建立失敗: {{v0}}",
      "t0789": "找到 {{v0}} 個可能相關的續期 定時工作",
      "t0790": "Restic {{v0}}/{{v1}} 成功",
      "t0791": "已確保排程：{{v0}} {{v1}}",
      "t0792": "設定已存在於 {{v0}}。使用 --force 覆寫。",
      "t0793": "設定已存在於 {{v0}}",
      "t0794": "找不到介面 {{v0}}",
      "t0795": "hostname 失敗: {{v0}}",
      "t0796": "pretty hostname 失敗: {{v0}}",
      "t0797": "timezone 失敗: {{v0}}",
      "tScoreFrom": "分數={{score}} · 由 {{from}} 切換",
      "appliedTag": "（已套用）",
      "writtenTag": "（只寫檔）",
      "selfDestMissing": "找不到執行中安裝目錄（systemd ExecStart 或執行中 cli.js）",
      "selfDestUnwritable": "無法寫入執行中安裝目錄 {{v0}}",
      "selfApplied": "已將 {{v0}} 套用到 {{v1}}",
      "selfVerifyFail": "套用後版本檔未包含 {{v0}}",
      "selfDownloadFail": "無法下載或解壓官方套件 {{v0}}：{{v1}}",
      "selfOverlayFail": "官方套件未能套用到執行中目錄：{{v0}}",
      "selfUpgradeHint": "面板套用失敗。請以 root 執行：curl -fsSL https://raw.githubusercontent.com/yanshekki/ysk-server/main/install.sh | bash -s -- --upgrade"
    },
    "tpl": {
      "deleted": "已刪除 {{name}}",
      "removed": "已移除 {{name}}",
      "failedDetail": "失敗：{{detail}}",
      "failedColon": "失敗: {{detail}}",
      "actionFailed": "{{action}} 失敗: {{detail}}",
      "restartFailed": "重啟失敗：{{detail}}",
      "chownFailed": "變更擁有者 失敗：{{detail}}",
      "available": "可用：{{detail}}",
      "supportedNotProbed": "支援 {{name}} — 尚未探測到",
      "wrote": "已寫 {{path}}",
      "wroteSettings": "已寫入設定 {{path}}",
      "wroteManaged": "已寫入管理檔 {{path}}",
      "copyFailed": "複製失敗：{{detail}}",
      "copyFailed2": "複製失敗: {{detail}}",
      "reloadFailed": "重新載入 失敗：{{detail}}",
      "reloadFailed2": "重新載入 失敗: {{detail}}",
      "nginxReloadFailed": "nginx 重新載入 失敗：{{detail}}",
      "nginxTestFailed": "nginx -t 失敗: {{detail}}",
      "nginxConfigFailed": "Nginx 設定檢查失敗：{{detail}}",
      "psqlFailed": "psql 失敗：{{detail}}",
      "redisCliFailed": "redis-cli 失敗：{{detail}}",
      "restartFailed2": "重新啟動 失敗：{{detail}}",
      "missing": "缺少 {{name}}",
      "project": "專案 {{name}}",
      "logNotFound": "找不到日誌：{{path}}",
      "clusterNotFound": "找不到叢集：{{id}}",
      "domainInvalid": "域名無效：{{domain}}",
      "exported": "已匯出 {{path}}",
      "reenabledLink": "已重新啟用連線 {{name}}",
      "installed": "已安裝",
      "missingDataDir": "缺少 dataDir",
      "installIncomplete": "安裝未完成",
      "noPackages": "無套件",
      "recentlyUpdated": "最近已更新",
      "needRootRead": "需要管理員權限 讀取",
      "reenabledPersist": "已重新啟用連線（重開仍在）",
      "runtimeOnlyHint": "（重開可能消失；要持久請用「保存」）",
      "statusWrittenPartial": "狀態：已寫入/partial",
      "keyMissingOrNotDeleted": "金鑰 不存在或未刪除",
      "passwordCryptStored": "密碼已以 crypt 雜湊儲存（不存明文）",
      "skipInvalidUsername": "略過無效用戶名",
      "digNoAnswer": "dig 無答案（NXDOMAIN 或空）",
      "ipAddrAddFailed": "ip addr add 失敗：{{detail}}",
      "ipAddrDelFailed": "ip addr del 失敗：{{detail}}",
      "connUpWarn": "connection up 警告：{{detail}}",
      "ntpEnableFailed": "啟用 NTP 失敗: {{detail}}",
      "cancelFailed": "取消失敗: {{detail}}",
      "powerCmdFailed": "電源指令失敗: {{detail}}",
      "reniceFailed": "renice 失敗：{{detail}}",
      "pgIncludeHint": "請將此檔 include 到 postgresql.設定檔 或於套用時複製",
      "none": "無",
      "success": "成功",
      "on": "開",
      "off": "關",
      "continueOp": "繼續操作",
      "unavailable": "不可用",
      "unknownError": "未知錯誤",
      "noParen": "(無)",
      "keepOldDb": "（保留舊庫）",
      "ufwNotDetected": "系統未偵測到 UFW",
      "fail2banStartHint": "可到 fail2ban 頁啟動",
      "hasExecuteNotRoot": "有 執行 但非 管理員",
      "notRootTarget": "非 管理員（目標 useradd/套件管理 會 已封鎖）",
      "reapplyDone": "reapply 關鍵步驟完成",
      "someFailed": "有失敗 — 請查看 results",
      "securityDesc": "密碼、TLS、本機限制",
      "yskControlPlane": "YSK 控制面",
      "sslDistributeNote": "SSL distribute：cert 在 邊緣 ≠ 瀏覽器信任鏈完整；請 dig / curl -vI https:// 驗證",
      "autoNever": "永不自動",
      "autoManualEmergency": "只人手 EMERGENCY",
      "probeMech": "外網 TCP、面板 req/min、TCP inuse、fail2ban、UFW",
      "probeTunable": "升／降檔門檻",
      "priorityBlockers": "優先處理 {{count}} 項阻擋：{{list}}",
      "readinessNotProduction": "就緒檢查 未達 production：{{list}}",
      "noRestart": "不 重新啟動",
      "cityPolicyOff": "（市政策關）",
      "pidStarted": "進程已啟動 pid={{pid}} {{extra}}",
      "pidUser": "（user={{user}}）",
      "pidDegraded": "（degraded）",
      "killFailed": "kill -s {{sig}} 失敗：{{detail}}",
      "routeAdded": "已加入路由 {{dst}}{{via}}{{dev}}",
      "dnsWritten": "已寫入 {{conn}}：DNS {{dns}}{{search}}",
      "peerInstalled": "已安裝到 {{dest}}{{restart}}"
    },
    "installedTool": "已安裝（工具）",
    "cron": {
      "preserveHostLines": "已保留主機 crontab 中 {{count}} 行非 YSK 工作（不會整份覆蓋）。",
      "noHostLinesOrEmpty": "主機 crontab 無額外非 YSK 行（或空白）。",
      "installReplacesYskOnly": "安裝只更新帶 YSK 標記的工作；其他主機工作已合併保留。",
      "hostScanNeedRoot": "讀取其他用戶 crontab 需要控制面以 root 執行；目前僅能列出控制面自身 crontab。",
      "hostScanSkipUser": "略過用戶 {{user}}（無權讀取）",
      "hostUserInvalid": "crontab 用戶無效。",
      "hostScheduleInvalid": "主機 cron 排程無效。",
      "hostLineNotJob": "該 crontab 行不是工作。",
      "hostLineMissing": "找不到對應的 crontab 行（主機 crontab 可能已變更）。",
      "hostLineDuplicate": "該工作行出現 {{count}} 次；請先改成唯一的一行。",
      "hostReadFailed": "無法讀取 crontab：{{detail}}",
      "hostWriteFailed": "寫入 crontab 失敗：{{detail}}",
      "hostRewriteNeedExecute": "寫入主機 crontab 需要 root 與 YSK_EXECUTE=1。目前只是預覽。",
      "hostRewriteNeedRoot": "修改其他用戶的 crontab 需要控制面以 root 執行。",
      "hostPreview": "下一行：{{line}}",
      "hostPreviewDelete": "下一步：移除該行。",
      "hostRewritten": "已寫入 {{user}} 的 crontab。",
      "hostRunNeedExecute": "試跑主機 cron 指令需要 YSK_EXECUTE=1。",
      "hostRan": "已用 {{user}} 試跑主機 cron 指令。",
      "hostAdoptNeedExecute": "把主機行納入面板需要 YSK_EXECUTE=1（否則安裝時會重複）。",
      "hostAdopted": "主機行已標 # ysk:{{id}} 並登記到面板。",
      "hostConfirmMismatch": "確認內容必須與指令相同。",
      "hostAdoptOnlyInstallUser": "只能納入「安裝到系統」會寫入的 crontab（root／本進程用戶）。其他用戶安裝時會重複。",
      "hostAdoptEnableFirst": "請先啟用該主機行，再納入面板。",
      "hostPercentNewline": "crontab 把未跳脫的 % 當成換行。日期格式請寫 \\%Y（或不要用 %）。"
    },
    "dbBrowser": {
      "pmaInstalled": "已安裝 phpMyAdmin → {{path}}",
      "pmaConfigWritten": "已寫入 phpMyAdmin 設定與暫存目錄（Cookie 登入；上 HTTPS 更穩）",
      "pmaExtractFailed": "phpMyAdmin 下載或解壓失敗：{{detail}}",
      "projectCreated": "已建立專案 {{id}}（{{name}}）"
    },
    "firewallAllow": {
      "already": "{{port}}/{{proto}}{{from}}：規則已存在",
      "partial": "部分成功：{{ok}} 成功、{{fail}} 失敗",
      "fromLabel": "（來源 {{from}}）"
    },
    "firewallDeleteByComment": {
      "removed": "已移除 {{n}} 條符合 {{prefix}} 的防火牆規則",
      "none": "沒有符合 {{prefix}} 的防火牆規則"
    },
    "serviceExposure": {
      "needsDecision": "{{service}}：請確認是否對外開放此服務",
      "private": "{{service}}：保持僅本機（未開公網埠）",
      "restrictedEmpty": "受限模式需要至少一個允許的 IP／網段",
      "badCountry": "無效國家代碼：{{cc}}",
      "zoneDownloadFail": "下載 {{cc}} 國家網段失敗：{{detail}}",
      "zoneEmpty": "{{cc}} 國家網段檔為空",
      "zoneDownloaded": "已下載 {{cc}} 共 {{n}} 個 CIDR",
      "zoneMissing": "缺少 {{cc}} 網段檔 — 請放在 geoip/country-zones 或允許下載",
      "zoneCidrCap": "國家 CIDR 已上限至 {{n}} 條",
      "geoNeedExecute": "國家允許清單需要 YSK_EXECUTE",
      "geoNeedRoot": "國家允許清單需要 root",
      "geoNoCidrs": "未載入任何國家 CIDR — 無法套用地區限制",
      "ipsetMissing": "未安裝 ipset — 已跳過國家允許清單",
      "ipsetApplyFail": "ipset／iptables 套用失敗：{{detail}}",
      "ipsetApplied": "已套用國家允許集合 {{set}}（{{countries}}，{{n}} 個 CIDR）",
      "ipsetCleared": "已清除國家 ipset {{set}}",
      "geoBestEffort": "國家過濾為 best-effort（ipset）；雲安全組須另行設定"
    },
    "goLive": {
      "deployIncomplete": "上線：部署未完成",
      "deployFailed": "上線部署失敗：{{detail}}",
      "publishIncomplete": "上線：發佈 Nginx 未完成",
      "publishFailed": "上線發佈失敗：{{detail}}"
    },
    "ops": {
      "projectNameExists": "專案名稱已存在：{{name}}",
      "sslNotReady": "SSL 未就緒：網域 {{domain}} 尚無可用證書。",
      "sslNotReadyDetail": "SSL 未就緒：網域 {{domain}} 尚無可用證書（面板申請／上載或 Let’s Encrypt live 路徑）。",
      "sslGoToPage": "請先到「SSL 憑證」申請或上載，再發佈 + SSL。",
      "sslRejectWrite": "已拒絕寫入 SSL nginx conf，避免 nginx -t 因缺檔失敗。",
      "installAborted": "安裝已中止（客戶端斷線或取消）",
      "phpPackagesPartialFail": "部分 PHP 套件安裝失敗：{{list}}（核心 CLI 可能仍可用）",
      "pdnsBindConflict": "PowerDNS 無法綁定 0.0.0.0:53（埠被佔用），多與 systemd-resolved 衝突。請改綁公網 IP（面板：修復 PowerDNS）。"
    },
    "webmail": {
      "notInstalled": "尚未安裝網頁電郵；請勾選下載後再執行",
      "needExecute": "下載網頁電郵需要系統變更權限（YSK_EXECUTE）及外網",
      "needExecuteBeforeCreate": "未開系統變更權限前不會建立半成品專案",
      "notRoundcubeTree": "文件根目錄不是完整 Roundcube（仍可能是 php-hello）",
      "notSnappyTree": "文件根目錄不是完整 SnappyMail",
      "installIncompleteHint": "專案已存在但網頁電郵未裝好 — 請開 EXECUTE 後按「重新安裝／升級」",
      "extractFailed": "{{tool}} 下載或解壓失敗：{{detail}}",
      "roundcubeInstalled": "已安裝 Roundcube {{version}} → {{path}}",
      "roundcubeReuse": "沿用已安裝 Roundcube → {{path}}",
      "roundcubeConfigWritten": "已寫入 Roundcube 設定（SQLite、IMAP 993、SMTP 587）",
      "snappyInstalled": "已安裝 SnappyMail {{version}} → {{path}}",
      "snappyReuse": "沿用已安裝 SnappyMail → {{path}}",
      "snappyAdminHint": "首次開啟請完成 SnappyMail 管理員初始化，並新增本機 IMAP 網域",
      "imapSmtpHint": "IMAP {{imap}}:993 · SMTP {{smtp}}:587（登入用信箱完整地址與密碼）",
      "projectCreated": "已建立 PHP 專案 {{name}}（{{tool}}，{{id}}）",
      "domainRequired": "需要網頁電郵主機名",
      "openHint": "以信箱地址與密碼登入；上線後請到專案頁或本頁開啟網址",
      "sslHint": "建議為 {{domain}} 申請 Let’s Encrypt（SSL 頁）",
      "bootstrapLegacyHint": "Bootstrap 未注入專案服務，已寫 dataDir 骨架；面板請用「建立並上線」走 PHP 專案路徑",
      "ssoPluginInstalled": "已安裝 SSO 插件 → {{path}}",
      "forceHttpsOn": "Roundcube force_https 已開啟（需已有 HTTPS）",
      "forceHttpsOff": "force_https 關閉 — 請在 SSL 頁簽發後重裝並勾選強制 HTTPS",
      "reinstallHint": "專案已存在：請用「重新安裝／升級」或傳 reinstall:true",
      "reinstalling": "重新安裝網頁電郵到專案 {{name}}（{{id}}）",
      "reinstallStart": "開始升級／重裝（目標版本相關：{{version}}，專案 {{id}}）",
      "projectNotFound": "找不到網頁電郵專案",
      "snappyAdminOnce": "SnappyMail 管理員帳號 {{user}} — 密碼只顯示一次（見結果／ONCE 檔）",
      "snappyAdminPassword": "SnappyMail 管理員密碼（請立即複製）：{{password}}",
      "publicHtmlStub": "文件根目錄仍是 SnappyMail／RainLoop 外層 stub。HTTP 必須指向 public_html 應用樹 — 請套用此修正後重新安裝網頁電郵。",
      "goLiveFailed": "網頁電郵檔案已安裝，但專案上線／部署健康檢查失敗 — 請展開詳細。",
      "forceHttpsNeedsSsl": "已開啟 Roundcube 強制 HTTPS：請先為此主機名綁定 SSL，否則公網跳轉可能失敗；未綁證前可取消勾選。",
      "roundcubePublicHtmlDocRoot": "HTTP 文件根已設為 Roundcube public_html（{{path}}）",
      "docRootUpdated": "專案文件根已更新為 {{path}}",
      "docRootUpdateFailed": "無法更新專案文件根：{{detail}}",
      "sqliteSchemaReady": "已初始化 Roundcube SQLite schema",
      "sqliteSchemaFailed": "Roundcube SQLite schema 初始化失敗：{{detail}}",
      "snappyFullEmailLogin": "郵箱登入須用完整電郵（user@domain），不要只用 local-part",
      "removedBogusPublicHtml": "已刪殘留 public_html（php-hello），避免 webmail 指錯樹",
      "snappyDocRoot": "SnappyMail HTTP 文件根：{{path}}",
      "phpHelloStillPresent": "安裝後網站根仍是 php-hello（YSK PHP OK）— webmail 未成功取代"
    },
    "vpn": {
      "needInstall": "請安裝 {{engine}}",
      "openvpnComing": "OpenVPN 完整流程將於後續版本提供。",
      "outlineComing": "Outline／Shadowsocks 將於後續版本提供。",
      "needExecuteServer": "VPN 伺服器設定需 root 與 YSK_EXECUTE=1。",
      "serverStopped": "已停止 {{engine}} 伺服器。",
      "serverStopFailed": "無法停止 {{engine}} 伺服器：{{detail}}",
      "needExecuteClient": "VPN 客戶端連線需 root 與 YSK_EXECUTE=1。",
      "keygenFailed": "WireGuard 金鑰產生失敗（是否已安裝 wg？）。",
      "serverKeysCreated": "已建立 WireGuard 伺服器金鑰。",
      "applyFailed": "套用 WireGuard 設定失敗：{{detail}}",
      "serverActive": "已套用 WireGuard 伺服器（UDP {{port}}）。",
      "serverMissing": "尚未初始化 WireGuard 伺服器 — 請先啟動伺服器。",
      "peerCreated": "已建立客戶端「{{name}}」。",
      "peerNotFound": "找不到客戶端。",
      "peerRemoved": "已移除 {{name}}。",
      "peersSynced": "已在運行中的 WireGuard 介面重新載入對等端，未重啟伺服器。",
      "setEndpointHint": "請設定公開端點（host:port），手機客戶端才能連上。",
      "invalidConf": "此檔不是有效的 VPN 客戶端設定。請使用 WireGuard 或 OpenVPN 客戶端設定檔。",
      "clientImported": "已匯入設定檔「{{name}}」。",
      "profileNotFound": "找不到客戶端設定檔。",
      "clientUpFailed": "連線失敗：{{detail}}",
      "clientUp": "已連線：{{name}}",
      "clientDown": "已斷線：{{name}}",
      "clientDeleted": "已刪除設定檔：{{name}}",
      "autostartOn": "已開機自動連：{{name}}",
      "autostartOff": "已關閉開機自動連：{{name}}",
      "ovpnPkiStart": "正在產生 OpenVPN PKI（DH 參數可能需一分鐘）…",
      "ovpnPkiDone": "OpenVPN PKI 已就緒。",
      "ovpnServerActive": "已套用 OpenVPN 伺服器（{{proto}} {{port}}）。",
      "invalidOvpn": "OpenVPN 設定應包含 client／remote。",
      "ssHonest": "使用 shadowsocks-libev ss-server — 非完整 Outline Manager。",
      "ssKeysCreated": "已產生 Shadowsocks 伺服器密碼。",
      "ssServerActive": "已套用 Shadowsocks 伺服器（埠 {{port}}）。",
      "ssSharedPassword": "所有 ss:// 標籤共用同一伺服器密碼（重新啟動伺服器可輪換）。",
      "ssPackageYielded": "已停用並屏蔽 Debian 預設 shadowsocks-libev（只聽本機），等 YSK 可在本機綁定公開 {{port}}。",
      "ssEndpointAutofilled": "公開端點已設為 {{endpoint}}。",
      "ssClientsRewritten": "已按而家端點／密碼重寫 {{n}} 個用戶 ss://。",
      "ssUfwOpened": "已開 UFW {{port}}/tcp+udp（若已裝 ufw）。",
      "endpointAutofilled": "公開端點已設為 {{endpoint}}。",
      "ovpnClientsRewritten": "已更新 {{n}} 個 OpenVPN 客戶端設定的 remote（下載／QR 會使用新地址）。",
      "accessFullNat": "已啟用全網上網（IP 轉發 + NAT）",
      "accessLanOnly": "已設定為僅連區域（無外網 NAT）",
      "accessReconnectHint": "已連線的客戶端請斷線後再連，才會使用新路由",
      "ovpnNatDurable": "安裝 OpenVPN NAT/轉送以便重新啟動 (systemd ExecStartPost)。",
      "clientFullTunnelProtect": "Detected full-tunnel client (AllowedIPs 0.0.0.0/0). Host protect applied so panel/SSH replies stay on LAN NIC.",
      "clientFullTunnelHint": "提示：僅對於分割訪問，請在conf中將AllowedIPs設定為VPN/LAN CIDR（而不是0.0.0.0/0），然後重新連接。"
    },
    "vnc": {
      "needInstall": "請安裝 {{stack}}",
      "needExecute": "未啟用 YSK_EXECUTE — 無法安裝套件或建立 Linux 用戶。",
      "needRoot": "非 root — 無法 useradd 或套用 vncserver。",
      "hostnameResolves": "主機名 {{hostname}} 可解析。",
      "hostnameUnresolvable": "此主機無法解析自己的主機名（{{hostname}}）。修好 /etc/hosts 之前，VNC 工作階段會啟動失敗。",
      "hostnameAlreadyResolves": "主機名 {{hostname}} 已可解析 — 未改 /etc/hosts。",
      "hostnameWouldAppend": "將會附加到 /etc/hosts：{{line}}",
      "hostnameAppended": "已附加到 /etc/hosts：{{line}}",
      "hostnameAppendFailed": "無法寫入 /etc/hosts：{{detail}}",
      "hostnameAliasPresent": "主機名 {{hostname}} 已在 /etc/hosts 列為完整別名 — 未再附加。",
      "hostnameStillUnresolvable": "已寫入 /etc/hosts，但 {{hostname}} 仍無法解析。請確認 nsswitch 的 hosts 包含 files。",
      "skipStartHostname": "未啟動 display — 請先修好主機名解析。",
      "novncAssetsOnly": "已找到 noVNC 網頁資源；仍缺 websockify 執行檔。",
      "viewerNeedExecute": "要在瀏覽器開啟本機 VNC 桌面，需要 root 並啟用 YSK_EXECUTE",
      "browserSessionReady": "瀏覽器 VNC 工作階段已就緒：{{name}}",
      "clientPathUserReachable": "路徑：經用戶可達端點 — {{name}} → {{target}}（瀏覽器經面板轉發）",
      "clientPathServerProxy": "路徑：經伺服器代理 — {{name}} → {{target}}（經本機伺服器網絡轉發）",
      "clientOpenInBrowserHint": "請在客戶端列表按「在瀏覽器開啟」以使用內嵌 VNC",
      "probeOk": "可達性正常：控制面可對 {{target}} 開啟 TCP",
      "probeRefused": "{{target}} 拒絕連線（沒有服務在監聽）。目標主機的 VNC 是否已啟動？",
      "probeTimeout": "從此伺服器連線至 {{target}} 逾時。請檢查防火牆／路由。",
      "probeDns": "無法解析主機名「{{host}}」。",
      "probeNet": "從此伺服器無法連至 {{target}} 的網絡。",
      "probeFailed": "無法連至 {{target}}：{{detail}}",
      "probeInvalid": "無效的 VNC 目標 {{host}}:{{port}}",
      "probeHintUserReachable": "路徑為「經用戶可達端點」：面板仍須對該公網主機開啟 TCP（瀏覽器本身不能直接使用 RFB）。",
      "probeHintServerProxy": "路徑為「經伺服器代理」：目標必須可從此控制面伺服器的網絡連上。",
      "connectHostOverride": "伺服器代理：顯示主機 {{display}}，實際 TCP 連至 {{connect}}",
      "probeConnectHostHint": "顯示目標為 {{display}}，探測／連線位址為 {{connect}}（連線主機覆寫）。",
      "accountNotFound": "找不到 VNC 帳號",
      "accountExists": "此名稱或 Linux 用戶的 VNC 帳號已存在",
      "accountCreated": "已建立 VNC 帳號 {{name}}（{{user}}，display :{{display}}）",
      "accountUpdated": "已更新 VNC 帳號 {{name}}",
      "accountDeleted": "已刪除 VNC 帳號 {{name}}",
      "invalidName": "帳號名稱無效",
      "invalidGeometry": "解析度無效（例如 1920x1080）",
      "displayBusy": "Display 編號無效或已被使用",
      "displayExhausted": "可用 VNC display 編號已用盡",
      "userWrittenOnly": "Linux 用戶 {{user}} 只記在控制面（需 root + YSK_EXECUTE 先 useradd）",
      "userExists": "Linux 用戶 {{user}} 已存在",
      "userCreated": "已建立 Linux 用戶 {{user}}",
      "useraddFailed": "useradd {{user}} 失敗：{{detail}}",
      "userdelBlocked": "無權限刪除 Linux 用戶 {{user}}（需 root + YSK_EXECUTE）",
      "userAlreadyGone": "Linux 用戶 {{user}} 已不存在",
      "userdelFailed": "userdel {{user}} 失敗：{{detail}}",
      "userdelLeftover": "面板帳號已刪，但 Linux 用戶 {{user}} 仍在主機。請到用戶頁或主機再清。",
      "userDeleted": "已刪除 Linux 用戶 {{user}}",
      "passwordTooShort": "VNC 密碼至少 6 個字元",
      "passwordWrittenOnly": "密碼只記在控制面（需 root + YSK_EXECUTE 先 vncpasswd）",
      "passwordFailed": "寫入 VNC 密碼失敗：{{detail}}",
      "passwordNeedTiger": "找不到 vncpasswd。請先安裝 TigerVNC（tigervnc-standalone-server）再設定密碼。",
      "passwordSet": "已為 {{user}} 設定 VNC 密碼",
      "passwordUpdated": "已更新 {{name}} 的密碼",
      "passwordMetaOnly": "密碼暫只記中繼資料，待系統套用",
      "xstartupWrittenOnly": "未寫入 xstartup 到 home（需 root + YSK_EXECUTE）",
      "xstartupWriteFailed": "無法寫入 ~/.vnc/xstartup ({{detail}})。需要 root + YSK_EXECUTE。",
      "xstartupFailed": "VNC xstartup／桌面啟動失敗（display :{{display}}，{{detail}}）。可改 XFCE 設定檔，或安裝 xfce4-terminal／xterm。",
      "xstartupWritten": "已寫入 {{path}}",
      "sessionStartBlocked": "無權限啟動 VNC session（需 root + YSK_EXECUTE）",
      "sessionStartFailed": "啟動 display :{{display}} 失敗：{{detail}}",
      "sessionStartHostname": "啟動 display :{{display}} 失敗：此主機無法解析自己的主機名。請把主機名寫入 /etc/hosts（或修正 DNS）後再啟動工作階段。",
      "sessionStarted": "已為 {{user}} 啟動 :{{display}}（埠 {{port}}）",
      "sessionStartUnverified": "啟動命令成功但 RFB 埠尚未監聽",
      "sessionAlreadyRunning": "{{user}} 的 VNC 已在運行（:{{display}} / 埠 {{port}}）",
      "vncserverMissing": "未安裝 TigerVNC 啟動程式（tigervncserver／vncserver）— 請到「安裝」分頁安裝",
      "vncserverWrapperMissing": "偵測到 {{found}}，但缺少 tigervncserver／vncserver 包裝腳本 — 請重裝 tigervnc-standalone-server",
      "vncPackageWithoutBin": "套件 tigervnc-standalone-server 已裝但找不到啟動腳本 — 請重裝該套件",
      "needPasswordBeforeStart": "請先設定 VNC 密碼（至少 6 個字元）再啟動",
      "displayPortBusy": "Display :{{display}} → 埠 {{port}} 已被佔用 — 請先停止其他 session 或改用其他 display",
      "sessionStartPermission": "啟動 display :{{display}} 權限被拒",
      "staleLockCleared": "已清除 display :{{display}} 殘留 lock，重試中",
      "sessionStopBlocked": "無權限停止 VNC session（需 root + YSK_EXECUTE）",
      "sessionStopped": "已停止 {{user}} 的 display :{{display}}",
      "linuxUserKept": "已保留系統上的 Linux 用戶 {{user}}",
      "novncStartBlocked": "無權限啟動 noVNC（需 root + YSK_EXECUTE）",
      "novncAlreadyRunning": "noVNC 已在埠 {{port}} 運行",
      "novncStartFailed": "啟動 websockify 失敗：{{detail}}",
      "novncStarted": "noVNC 聽 127.0.0.1:{{httpPort}} → RFB {{rfbPort}}",
      "novncNotRunning": "noVNC 未在運行",
      "novncStopBlocked": "無權限停止 noVNC（需 root + YSK_EXECUTE）",
      "novncStopped": "已停止 noVNC 埠 {{httpPort}}",
      "directNeedsAllBind": "RFB 只聽 localhost — 外網直連需改 bind 或用隧道",
      "directOpenFirewall": "直連客戶端請放行 TCP {{port}}",
      "viaServerReady": "noVNC 已就緒 — 開本機 URL 或用 SSH 隧道",
      "viaServerStartFirst": "請先啟動 noVNC 以經 server 用瀏覽器連入",
      "viewTicketIssued": "已發出短期觀看 ticket",
      "invalidPort": "埠號無效",
      "firewallNeedExecute": "開 UFW 埠需 YSK_EXECUTE",
      "firewallNeedRoot": "開 UFW 埠需 root",
      "firewallFailed": "ufw allow 失敗：{{detail}}",
      "firewallOpened": "UFW 已放行 TCP {{port}}",
      "clientInvalid": "客戶端名稱同主機必填",
      "clientNotFound": "找不到客戶端設定",
      "clientUpBlocked": "無權限連線 VNC client（需 root + YSK_EXECUTE）",
      "clientUpFailed": "客戶端連線失敗：{{detail}}",
      "clientViaServerUp": "客戶端 {{name}} 已可於瀏覽器經面板使用 VNC（舊版 websockify 說明已退役）。請按「在瀏覽器開啟」。",
      "clientDirectUp": "客戶端 {{name}} 僅使用瀏覽器內 VNC（已移除主機 vncviewer 路徑）。請在瀏覽器開啟 → {{target}}。",
      "clientNeedViewer": "桌面版 vncviewer 為可選。請使用「在瀏覽器開啟」的內嵌 VNC 客戶端。",
      "clientDownBlocked": "無權限斷線（需 root + YSK_EXECUTE）",
      "clientDown": "已斷開客戶端 {{name}}",
      "clientDeleted": "已刪除客戶端設定",
      "sessionStartCwd": "VNC 啟動失敗：工作目錄 VNC 用戶無權限（display :{{display}}）。已改為由 HOME 啟動。",
      "desktopRestarted": "套用桌面設定檔並重新啟動會話 ({{desktop}})。重新連接 VNC/noVNC。",
      "desktopNeedsStart": "桌面設定檔 {{desktop}} 寫入 xstartup。啟動會話以進行申請。",
      "linuxUserRolledBack": "VNC 密碼失敗後已刪除遺留 Linux 用戶 {{user}}。",
      "linuxUserOrphan": "VNC 密碼失敗後無法刪除遺留 Linux 用戶 {{user}}。"
    },
    "apache": {
      "needServerName": "需要域名",
      "siteExists": "站點已存在",
      "siteNotFound": "找不到站點",
      "wroteConf": "已寫入 {{path}}",
      "needExecute": "需 YSK_EXECUTE",
      "settingsWritten": "已寫入 Apache 預設",
      "managedDir": "管理目錄 {{path}}",
      "dryRun": "預演",
      "copyFailed": "複製失敗：{{file}}",
      "configOk": "configtest 通過",
      "configFailed": "configtest 失敗：{{detail}}",
      "reloaded": "Apache 已 reload",
      "reloadFailed": "reload 失敗",
      "skippedOrphans": "已略過 {{count}} 個未認領 conf",
      "artifactInvalid": "無效的殘留 conf 名稱",
      "artifactOwned": "conf {{file}} 屬專案或獨立站",
      "artifactNotFound": "找不到殘留 conf：{{file}}",
      "artifactRemoveFailed": "無法刪除 {{file}}：{{detail}}",
      "artifactRemoved": "已刪除殘留 conf {{file}}",
      "artifactSystemPending": "已清理 dataDir；系統 Apache 副本需 YSK_EXECUTE/root 才能停用",
      "artifactSystemDisabled": "已停用系統站點 {{site}}",
      "artifactSystemFailed": "系統停用失敗：{{detail}}",
      "conflictProjectsOnly": "域名 {{name}} 被多個專案佔用 — 請修改其中一個專案域名",
      "cleanupNothing": "沒有可清理的衝突殘留 conf",
      "conflictOwnedKeep": "保留已擁有 conf {{file}}（同域名 {{domain}}）",
      "retiredOrphan": "已退役殘留 conf {{file}}（與 {{domain}} 域名衝突）"
    },
    "btTracker": {
      "needExecute": "未啟用 YSK_EXECUTE — 啟動 Tracker 與對外開埠需要系統變更權限。",
      "startWithoutExecute": "在未啟用 YSK_EXECUTE 下啟動 Tracker — 程序可能可監聽，但不會自動開防火牆。",
      "alreadyRunning": "BitTorrent Tracker 已在本程序運行。",
      "notRunning": "BitTorrent Tracker 未運行。",
      "started": "BitTorrent Tracker 正在埠 {{port}} 監聽。",
      "startFailed": "啟動 Tracker 失敗：{{detail}}",
      "stopped": "BitTorrent Tracker 已停止。",
      "maxSeeds": "已達同時做種上限（{{n}}）。",
      "seedStarted": "已開始為分享 {{id}} 做種。",
      "seedStopped": "已停止做種。",
      "seedPending": "做種尚未就緒 — 請啟動 Tracker，並在需要時啟用 YSK_EXECUTE。",
      "notSeeding": "控制平面目前未為此外享做種。",
      "btNeedsTracker": "BT 分享需要運行中的 Tracker。請開啟「檔案 → BT Tracker」並啟動。",
      "restoreTrackerFailed": "開機還原時未能啟動 BT Tracker",
      "restoreDone": "BT 還原：已做種 {{seeded}}／{{attempted}}（失敗 {{failed}}）",
      "workerMissing": "找不到 detached worker；已改程序內啟動（隨本進程結束）",
      "startedDetached": "BT Tracker detached worker 已啟動（pid {{pid}}，埠 {{port}}）",
      "runningDetached": "Tracker 以 detached worker 運行中（pid {{pid}}）",
      "jobQueued": "BT torrent 建立已排入佇列（大型分享）",
      "jobRunning": "正在建立 BT torrent",
      "libraryAdded": "已將 {{name}} 加入 WebTorrent 資料庫",
      "libraryInspectFailed": "無法讀取此 .torrent 或 magnet",
      "libraryDup": "資料庫已有此 Torrent",
      "libraryDestBad": "儲存位置不是有效的檔案路徑",
      "libraryTorrentTooBig": ".torrent 檔大於 8 MiB",
      "libraryNotFound": "找不到此資料庫項目",
      "libraryPaused": "已暫停",
      "libraryResumed": "已繼續",
      "libraryRemoved": "已從資料庫移除",
      "libraryFilesRemoved": "已刪除下載的檔案",
      "libraryRestoreDone": "資料庫還原：已啟動 {{started}}／{{attempted}}（失敗 {{failed}}）",
      "applyTrackersDone": "已向 {{n}} 個現有 announce 套用常用 Tracker",
      "libraryNeedServe": "已儲存。請在面板啟動 ysk-server serve，WebTorrent 才會下載／做種。",
      "libraryDestIsFile": "無法建立名為 {{name}} 的資料夾——該處已有同名檔案。",
      "librarySeedMissing": "此資料夾沒有可做種的對應檔案。",
      "libraryWaitingPeers": "正在等待 peers。若檔案已在此主機，請重新加入並選使用現有檔案做種。"
    },
    "migrate": {
      "orphanConfirm": "請輸入完整孤立主目錄路徑以確認刪除。",
      "orphanStillInStore": "該主目錄仍屬於 store 內的專案。",
      "orphanMissing": "磁碟沒有此路徑：{{path}}",
      "orphanNeedExecute": "將刪除孤立主目錄 {{path}}。需 YSK_EXECUTE=1。",
      "orphanRmFailed": "無法刪除孤立主目錄：{{detail}}",
      "orphanRemoved": "已刪除孤立專案主目錄 {{path}}。"
    },
    "publicFiles": {
      "liveConf": "生效 Nginx 設定檔：{{path}}",
      "publicRoot": "公開根目錄：{{path}}",
      "confNameStale": "設定檔 {{file}} 與目前 server_name {{serverName}} 不一致。請再套用公用檔案以改名。"
    },
    "leftover": {
      "staleCliTitle": "遺留舊版 CLI",
      "staleCli": "仍有舊 CLI：{{path}}（產品版本 {{version}}）。PATH 可能優先用它。移除：rm -f {{path}}",
      "apacheDefaultTitle": "Apache 遺留預設站",
      "apacheDefault": "Apache 000-default 仍已啟用。這只代表預設站設定檔仍在，不代表 Apache 正在聽公網 :80（產品預期 Apache 綁在 127.0.0.1:8080）。產品 overlay 不會停用此預設站。請在面板套用 Apache，或 hosting apache apply --execute。",
      "nginxCatchAllTitle": "Nginx 缺 catch-all",
      "nginxCatchAll": "/etc/nginx/conf.d 沒有 ysk-000-default.conf。未知 SNI 可能落到其他站。請執行 projects nginx-sync --execute。",
      "vsftpdTitle": "vsftpd 單元失敗",
      "vsftpd": "vsftpd 失敗。overlay 不會重寫 listen／listen_ipv6。請在面板套用 FTP。",
      "dovecotTitle": "Dovecot TLS 指住不存在的憑證",
      "dovecot": "Dovecot ssl_cert 指住不存在的 {{path}}。overlay 不會改成 ssl=no。簽發郵件憑證後套用郵件 TLS。",
      "staleCliRemoved": "已移除殘留 CLI {{path}}。",
      "staleCliRemoveFailed": "無法移除殘留 CLI {{path}}：{{detail}}",
      "vsftpdSslOff": "因 FTPS 憑證檔不存在，已把 vsftpd 設為 ssl_enable=NO 並重新啟動。",
      "dovecotSslOff": "因 {{path}} 不存在，已把 Dovecot 設為 ssl=no 並重新啟動。",
      "overlayDoesNotHeal": "產品 overlay 不會改寫 nginx、Apache、vsftpd 或 Dovecot。請用列出的套用命令（root + YSK_EXECUTE=1）。",
      "executeStaleCli": "請加 --execute（root + YSK_EXECUTE=1）以移除殘留 CLI。",
      "executeMissingTls": "請加 --execute（root + YSK_EXECUTE=1）以關閉缺證 TLS，讓 vsftpd／Dovecot 可以啟動。",
      "executeGeneric": "請加 --execute（root + YSK_EXECUTE=1）以套用上述遺留清理。",
      "readinessTitle": "overlay 後主機遺留",
      "readinessClean": "未偵測到 Apache 預設站、缺 nginx catch-all、vsftpd 失敗或舊 CLI。",
      "nginxRemoved": "已移除殘留 nginx 設定 {{path}}。",
      "nginxNotLeftover": "不是殘留 public-files 設定 — 拒絕刪除。",
      "nginxUnusedKeep": "000-default 是未使用，不當殘留 — 未刪除。",
      "nginxSystemCopy": "系統副本仍在：{{path}}。需要 YSK_EXECUTE + root 先可以移除。",
      "nginxReloadFailed": "移除 {{path}} 後 nginx -t 或 reload 失敗。"
    },
    "defense": {
      "panelReqLabel": "面板請求／分鐘",
      "panelReqExcluded": "已認證面板流量 — 只顯示，不計入威脅分數",
      "tcpOk": "TCP {{target}} 可達",
      "tcpFail": "TCP {{target}} 失敗",
      "dnsDegraded": "DNS 路徑降級",
      "reqRateHigh": "公開請求速率 {{reqs}}／分鐘 ≥ {{threshold}}",
      "ddosHeuristic": "公開請求偏高且邊緣探測失敗"
    }
  },
  "ops": {
    "blocked": {
      "needExecute": "伺服器未開啟系統變更權限，無法在管理面板完成此操作",
      "needExecuteShort": "未開啟系統變更權限",
      "needExecuteBlocked": "已封鎖：未開啟系統變更",
      "needRoot": "需系統管理員權限（管理員）",
      "needExecuteRoot": "需要 系統變更權限已開啟 與管理員權限",
      "needExecuteYsk": "需要 系統變更權限已開啟",
      "writeOutsideDataDir": "寫入被阻擋：未開啟系統變更權限，且路徑在管理資料目錄外",
      "nginxReload": "無法重載 Nginx：需要系統變更權限",
      "signal": "無法送出訊號：需要系統變更權限（系統變更權限）",
      "signalNote": "需要 系統變更權限已開啟 才會真 kill",
      "renice": "無法 renice：需要系統變更權限（系統變更權限）",
      "install": "伺服器未開啟系統變更權限，無法在管理面板完成安裝",
      "update": "伺服器未開啟系統變更權限，無法在管理面板完成更新",
      "panel": "無法在管理面板完成此操作"
    },
    "honesty": {
      "blockedNotOk": "誠實校正：已封鎖 時不可 成功=是",
      "blockedNotApplied": "誠實校正：已封鎖 時不可 apply_status=已套用",
      "okFalseNotApplied": "誠實校正：成功=否 時不可 apply_status=已套用"
    },
    "status": {
      "applied": "狀態：已套用",
      "failed": "狀態：失敗",
      "written": "狀態：已寫入",
      "blocked": "狀態：已封鎖"
    },
    "notes": {
      "writtenSettings": "已寫入設定",
      "completed": "完成",
      "partialSuccess": "操作未完全成功",
      "notInstalled": "未安裝",
      "running": "運行中",
      "stopped": "已停止",
      "unknown": "未知"
    }
  },
  "opsResult": {
    "title": "操作結果",
    "status": "狀態",
    "port": "埠",
    "url": "網址",
    "pid": "PID",
    "blocked": "無法執行",
    "success": "成功",
    "failed": "失敗",
    "retry": "再試",
    "showDetails": "詳細（{{count}}）",
    "hideDetails": "隱藏詳細",
    "stepBuildOk": "建置完成",
    "stepHealthOk": "健康檢查通過",
    "stepProcessStarted": "進程已啟動",
    "stepSystemdFallback": "systemd 未就緒 — 已用進程方式啟動",
    "stepNginxWritten": "已寫入 Nginx 設定",
    "stepConfigsSynced": "設定已同步至系統",
    "stepStoppedOld": "已停止舊進程",
    "stepTuningApplied": "已套用執行時調校",
    "stepUnitWritten": "已寫入 systemd 服務",
    "stepSystemdStartFailed": "systemd 啟動失敗 — 已降級為進程啟動",
    "portListening": "埠 {{port}} 正在監聽",
    "portNotListening": "埠 {{port}} 未在監聽",
    "httpOk": "HTTP 正常 {{status}}",
    "httpFail": "HTTP 失敗：{{detail}}"
  },
  "pageGuide": {
    "missing": "此頁尚未提供說明內容。",
    "missingTitle": "暫無說明",
    "eyebrow": "說明",
    "canDoTitle": "可以做什麼",
    "workflowTitle": "建議流程",
    "notesTitle": "注意事項",
    "cliTitle": "CLI 速查",
    "cliFoot": "完整參數請執行 ysk-server <command> --help 或參閱文件。",
    "relatedTitle": "相關功能"
  },
  "playbooks": {
    "discover-host": {
      "name": "主機探索",
      "description": "唯讀主機清單"
    },
    "nginx-health": {
      "name": "Nginx 健康檢查",
      "description": "檢查 nginx 服務狀態"
    },
    "nginx-restart": {
      "name": "Nginx 重啟（高風險）",
      "description": "審批後重啟 nginx"
    },
    "local-llm-ops-only": {
      "name": "僅本機 LLM 操作",
      "description": "防護模式下緊急探索"
    },
    "disk-pressure": {
      "name": "磁碟壓力檢查",
      "description": "唯讀磁碟用量（df）"
    },
    "mail-stack-status": {
      "name": "郵件堆疊狀態",
      "description": "檢查 postfix + dovecot 服務單元"
    },
    "security-units": {
      "name": "安全 服務單元",
      "description": "fail2ban + sshd 狀態（唯讀）"
    },
    "web-stack-status": {
      "name": "Web 堆疊狀態",
      "description": "nginx + php-fpm 探測"
    },
    "emergency-read-only": {
      "name": "緊急唯讀掃視",
      "description": "僅防護安全事實"
    },
    "backup-health": {
      "name": "備份就緒",
      "description": "備份就緒檢查"
    },
    "db-stack-status": {
      "name": "資料庫堆疊狀態",
      "description": "資料庫服務狀態"
    },
    "ssl-nginx-check": {
      "name": "SSL + Nginx 檢查",
      "description": "SSL 與 Nginx 檢查"
    }
  },
  "presetChips": {
    "customPlaceholder": "自訂…"
  },
  "projects": {
    "title": "專案",
    "subtitle": "",
    "create": "建立專案",
    "createHint": "有範本時會自動部署並發佈 Nginx",
    "empty": "尚未建立專案",
    "emptyHint": "按「建立專案」開始",
    "emptyFilter": "沒有符合的專案",
    "emptyFilterHint": "清除搜尋或篩選",
    "name": "名稱",
    "domain": "域名（選填）",
    "detail": "專案詳情",
    "deploy": "部署",
    "deployPhp": "部署 PHP",
    "stop": "停止",
    "health": "健康檢查",
    "publishNginx": "發布 Nginx",
    "publishNginxSsl": "發布 Nginx + SSL",
    "opsResult": "操作結果",
    "runtime": "執行環境",
    "template": "範本（選填）",
    "templateNone": "— 無 —",
    "searchPlaceholder": "搜尋名稱、域名或識別碼…",
    "listDesc": "管理此主機上的網站專案。",
    "filterAll": "全部 運行時",
    "statTotal": "全部",
    "statRunning": "運行中",
    "statDegraded": "降級",
    "statUnhealthy": "異常",
    "statStopped": "停止 / 就緒",
    "statStoppedOnly": "已停止",
    "statReadyOnly": "就緒",
    "statPendingOs": "待系統用戶",
    "status": {
      "failed": "失敗",
      "failedHint": "部署或健康檢查失敗 — 請查看日誌",
      "unhealthy": "異常",
      "unhealthyHint": "行程仍在但健康檢查失敗",
      "pendingOs": "待建立系統用戶",
      "pendingOsHint": "系統用戶尚未建立",
      "degraded": "運行中（降級）",
      "degradedHint": "行程已啟動，但非完整生產模式（例如非 管理員 / pidfile）",
      "deploying": "部署中",
      "published": "已發布",
      "publishedHint": "Nginx 設定已寫入；行程狀態可能另計",
      "running": "運行中",
      "stopped": "已停止",
      "ready": "已就緒",
      "readyHint": "已建立 — 請部署以啟動",
      "unknown": "未知"
    },
    "checklist": {
      "title": "上線路徑",
      "desc": "完成以下步驟即可對外提供服務",
      "created": "已建立",
      "os": "OS 用戶",
      "deploy": "部署",
      "nginx": "Nginx",
      "health": "健康"
    },
    "next": {
      "pendingOsTitle": "系統用戶尚未建立",
      "provisionOsAction": "建立系統用戶",
      "pendingOsBody": "此專案尚未建立獨立系統用戶。",
      "pendingOsActions": "可繼續部署；完整隔離需以系統管理員權限執行。",
      "deployTitle": "下一步：部署",
      "deployBody": "按上方「部署 PHP／部署」啟動 運行時，或到「部署」分頁用 Git。",
      "nginxTitle": "下一步：發布 Nginx",
      "nginxBody": "到「網絡」分頁或總覽快捷操作發布 Nginx（可選 SSL）。"
    },
    "healthDetail": {
      "none": "尚未執行健康檢查",
      "overall": "結果",
      "nginxStatus": "Nginx 狀態",
      "nginxReloaded": "Nginx 重載",
      "httpStatus": "HTTP",
      "latency": "延遲",
      "error": "錯誤",
      "at": "檢查時間",
      "deployMode": "部署模式",
      "edgeKind": "邊緣",
      "goLiveOk": "上線",
      "goLiveAt": "上線時間",
      "degraded": "降級"
    },
    "railPhp": "PHP / 站點",
    "railStatic": "靜態站",
    "sectionPhpDeploy": "PHP 部署",
    "sectionPhpDeployDesc": "寫入 PHP 站點／程序池，並依權限套用到系統",
    "sectionStaticDeploy": "靜態內容",
    "sectionStaticDeployDesc": "靜態站以檔案 + Nginx 為主，無 節點 行程",
    "staticDeployHint": "請用 Git 拉取內容，再到「網絡」發布 Nginx。",
    "noDomain": "未設定域名",
    "lastDeploy": "上次部署",
    "neverDeployed": "尚未部署",
    "created": "已建立 {{name}}",
    "backToList": "返回專案列表",
    "openUrl": "開啟網站",
    "openUrlNeedDomain": "請先設定域名 — 不要在瀏覽器開啟 127.0.0.1",
    "needOsUser": "請先到隔離分頁建立系統用戶",
    "goIsolation": "前往隔離分頁",
    "homeMissing": "主目錄不存在",
    "homeMissingHint": "與遷移盤點同一探測 — 請到隔離分頁建立系統用戶",
    "stopTitle": "停止此專案（systemd 單元與公開網站）",
    "deployTitle": "部署此專案",
    "httpStatsHint": "取自本專案 access log（最近樣本）",
    "httpStatsNone": "尚無本專案 access log",
    "notFound": "找不到此專案",
    "home": "主目錄",
    "env": "環境",
    "backup": "備份",
    "resources": "資源",
    "quotaUnlimited": "無配額限制",
    "lastHealth": "最近健康檢查",
    "tabOverview": "總覽",
    "tabDeploy": "部署",
    "tabApp": "應用",
    "tabNetwork": "網絡",
    "tabResources": "資源",
    "tabIsolation": "隔離",
    "tabLogs": "日誌",
    "tabAdvanced": "進階",
    "tabMore": "更多",
    "createGoLive": "建立後立即部署並發佈 Nginx",
    "createPreferredPort": "固定埠（可選）",
    "goLiveOk": "已部署並發佈",
    "goLivePartial": "已建立；部署／發佈未完成",
    "nginxLive": "已載入",
    "nginxWritten": "已寫入",
    "nginxNeedsDeploy": "需先部署",
    "nginxFailed": "發佈失敗",
    "netEdgeStatus": "站點狀態",
    "netUpstream": "上游",
    "netPortTitle": "進程埠",
    "netCurrentPort": "目前埠",
    "netPublishTitle": "發佈",
    "netConfPreview": "設定",
    "savePublishSsl": "儲存並發佈 + SSL",
    "retryLiveTitle": "上線未完成",
    "retryLiveBody": "部署或 Nginx 發佈未成功，可重試。",
    "retryDeploy": "重試部署",
    "retryPublish": "重試發佈 Nginx",
    "preferredPortRedeployHint": "儲存後需重新部署才會改進程埠",
    "railProcess": "行程",
    "railNginx": "Nginx",
    "railOs": "OS 用戶",
    "railHealth": "健康",
    "nginxPublished": "已發布設定",
    "nginxNone": "尚未發布",
    "osProvisioned": "已建立系統用戶",
    "osPending": "尚未完成 OS 隔離",
    "healthOk": "正常",
    "healthBad": "失敗",
    "healthUnknown": "尚未檢查",
    "sectionRuntimeDeploy": "運行時 部署",
    "sectionRuntimeDeployDesc": "依專案 運行時 啟動行程（節點 / PHP）",
    "sectionGit": "git",
    "sectionGitDesc": "Clone、同步、入站 push",
    "sectionEnv": "環境變數",
    "sectionEnvDesc": "以「名稱=值」寫入專案 .env",
    "gitUrl": "git 網址",
    "gitDeploy": "Git 部署",
    "envFile": "環境檔（.env）",
    "saveEnv": "儲存環境變數",
    "sectionNginx": "Nginx 與 SSL",
    "sectionNginxDesc": "寫入並套用網站設定",
    "domainHint": "建議先在建立時填域名，方便 Publish",
    "sectionQuota": "磁碟配額",
    "sectionQuotaDesc": "限制專案 主目錄 可用空間（MiB）",
    "sectionLimits": "CPU / 記憶體",
    "sectionLimitsDesc": "系統服務 資源限制；需重新 Deploy 才套用 服務單元",
    "quotaMb": "配額（MiB）",
    "memoryMax": "最大記憶體",
    "cpuQuota": "CPU 配額 %",
    "setQuota": "設定配額",
    "setResources": "儲存資源限制",
    "sectionLogs": "應用日誌",
    "sectionLogsDesc": "讀取專案目錄下最近 日誌 檔",
    "viewLogs": "載入日誌",
    "logsEmpty": "尚未載入日誌",
    "logsNoFiles": "（尚無 日誌 檔 — 請先 Deploy）",
    "sectionAdvanced": "其他操作",
    "sectionAdvancedDesc": "備份與範本內容下載",
    "downloadWp": "下載 WordPress",
    "dangerZone": "危險區域",
    "dangerZoneDesc": "刪除專案會移除管理紀錄與相關資源",
    "delete": "刪除專案",
    "confirmStopTitle": "停止此專案？",
    "confirmStopDesc": "將停止「{{name}}」的運行行程。",
    "confirmDeleteTitle": "刪除此專案？",
    "confirmDeleteDesc": "確定刪除「{{name}}」？此操作無法從介面復原。",
    "close": "關閉",
    "statProjects": "{{count}} 專案",
    "noProjectsShort": "尚無專案",
    "runtimeStatic": "靜態",
    "logsLoadFailed": "讀取日誌失敗",
    "deleteFailed": "刪除失敗",
    "tabAbout": "說明",
    "statusLabel": "狀態",
    "userLabel": "用戶",
    "nginxValuePublished": "已發布",
    "nginxValueNone": "未發布",
    "osValueReady": "已建",
    "osValuePending": "待建立系統用戶",
    "openFiles": "檔案",
    "enableCdn": "啟用 CDN",
    "openLogs": "日誌",
    "osUserReadyMsg": "系統用戶已就緒。{{detail}}",
    "osUserNeedRoot": "無法建立系統用戶：需要 系統變更權限 與管理員權限。{{detail}}",
    "osUserIncomplete": "系統用戶建立未完成",
    "saveLogDirsFailed": "儲存 日誌 目錄失敗",
    "createName": "專案名稱",
    "noPathSepHint": "名稱不可包含 / 或 \\。",
    "createRuntime": "執行環境",
    "createRuntimeHint": "之後可在詳情調整部署方式",
    "createVersion": "版本",
    "createVersionHint": "會寫入專案的執行環境版本；部署／FPM 會參考此版本",
    "createVersionAria": "執行環境版本",
    "createPrimaryDomain": "主要域名",
    "createPrimaryDomainHint": "可稍後再填",
    "createAliases": "別名",
    "createAliasesHint": "逗號或換行分隔",
    "createTemplate": "範本",
    "createTemplateHint": "每個執行環境只有一個 Hello World! demo；選範本會帶入對應 runtime",
    "createTemplateNote": "範本只寫入專案目錄骨架；需再「部署」才會 建置／啟動。",
    "createRuntimeNow": "目前執行環境：",
    "createTemplateFooter": "。可選範本加速起步，或不選直接空白專案。",
    "createDraftResources": "與域名一併建立草稿資源",
    "createNeedDomainFirst": "請先填「主要域名」，以下選項才會一併建立草稿。",
    "createDnsZone": "同時建立 DNS zone",
    "createDnsZoneDesc": "只寫管理檔（draft），不等於權威 DNS 已上線",
    "createMailDomain": "同時登記郵件域名",
    "createMailDomainDesc": "之後可到郵件頁完成郵箱與套用",
    "createServerIpv4": "伺服器 IPv4",
    "createServerIpv4Hint": "DNS／郵件範本用",
    "createServerIpv4Ph": "此主機公網 IPv4",
    "createServerIpv6": "伺服器 IPv6（可選）",
    "createServerIpv6Ph": "公網 IPv6（可留空）",
    "sshCardDesc": "登入公鑰決定誰能進來；出站身份決定這用戶出去用哪把匙。",
    "sshLoginKeys": "允許登入的公鑰",
    "sshKeyCount": "{{count}} 把",
    "sshOutbound": "出站身份",
    "sshOutboundNone": "尚未建立",
    "sshOutboundCreated": "已建立出站身份（私鑰已加密保存）",
    "sshCreateFailed": "建立失敗",
    "sshWriteTried": "已嘗試寫入磁碟",
    "sshOutboundHint": "建立出站身份後，此專案用戶可用於 git／腳本連外。",
    "sshCreateOutbound": "一鍵建立出站身份",
    "sshWriteHome": "寫入 主目錄/.ssh",
    "sshOpenWorkspace": "開啟 遠端登入 工作台",
    "sshManageLoginKeys": "管理登入公鑰",
    "logsSectionDesc": "掃描 日誌/、日誌/ 與額外目錄；可按檔名／內容關鍵字搜尋",
    "logsNameSearch": "檔名搜尋",
    "logsNameSearchHint": "匹配相對路徑，例如 錯誤、app.out",
    "logsContentKw": "內容關鍵字",
    "logsContentKwHint": "在各檔尾端搜尋（不是全檔全文）",
    "logsSearch": "搜尋",
    "logsRescan": "重新掃描",
    "logsRefreshFile": "重新整理此檔",
    "logsCopy": "複製內容",
    "logsDownloadTail": "下載尾端",
    "logsCenter": "日誌中心",
    "logsHitsTitle": "內容命中 {{count}} 個檔 — 點檔名可開尾端（含關鍵字過濾）",
    "logsLinesHit": "{{count}} 行命中",
    "logsFileCount": "日誌檔 {{count}}",
    "logsNameFilter": "（檔名含「{{q}}」）",
    "logsScanning": "正在掃描 日誌…",
    "logsNoneYet": "尚無日誌檔 — 部署或跑過服務後會出現；亦可設定額外目錄。",
    "logsNoContent": "尚無內容",
    "logsRelated": "相關來源",
    "logsRelatedDesc": "系統日誌 / nginx / PHP-FPM（詳見日誌中心）",
    "logsAvailable": "可用",
    "logsMissing": "未見",
    "logsOpenInCenter": "在日誌中心開啟",
    "logsExtraDirs": "額外 日誌 目錄",
    "logsExtraDirsDesc": "相對專案 主目錄 的路徑（除預設 日誌/、日誌/ 外）",
    "logsDirList": "目錄列表",
    "logsDirListHint": "一行一個；只允許 主目錄 內相對路徑",
    "logsReset": "重設",
    "logsSaveScan": "儲存並掃描",
    "logsDefaultNote": "預設永遠掃描 日誌/ 與 日誌/。額外目錄只收入檔名像 *.日誌 / *.out / *.err 的檔。",
    "resOsTitle": "系統用戶隔離",
    "resOsDesc": "每個專案獨立 Linux 用戶；意圖主目錄：/home/ysk-server-{專案識別碼}",
    "resLinuxUser": "Linux 用戶",
    "resOsIsolation": "OS 隔離",
    "resOsReady": "已就緒",
    "resOsNotCreated": "未建立（需系統管理員）",
    "resHomeDir": "主目錄 目錄",
    "resCanonical": "意圖路徑",
    "resUserMissing": "用戶不存在",
    "resShellLive": "即時 shell / 鎖定",
    "resLocked": "已鎖定",
    "resUnlocked": "未鎖定",
    "resHomeMode": "主目錄 模式",
    "resHomeExists": "存在 · 模式 {{mode}}",
    "resHomeMissing": "不存在",
    "resIsolationOn": "隔離中",
    "resIsolationPending": "待隔離",
    "resOsHint": "行程以專案用戶執行。建立系統用戶需 系統變更權限 與管理員權限；否則為 degraded。",
    "resProvisionUser": "建立／修復系統用戶",
    "resRefreshStatus": "重新整理狀態",
    "resFixHome": "修復 主目錄 擁有權",
    "resMigrateHome": "遷移到 /home/ysk-server-…",
    "resQuotaDesc": "軟配額（deploy 前 du 擋）+ 有 setquota 時可硬強制",
    "resQuotaHint": "例如 1024 = 1 GiB",
    "resSetSoftQuota": "儲存軟配額",
    "resLimitsTitle": "行程與帳號限制",
    "resLimitsDesc": "系統服務 MemoryMax / CPUQuota / TasksMax / NOFILE + shell／鎖定",
    "resLimitsDescSystemd": "systemd cgroup：MemoryMax / CPUQuota / TasksMax / NOFILE + shell／鎖定",
    "resLimitsDescPm2": "PM2：記憶體對應 max_memory_restart；其餘限額見 systemd。",
    "resRunnerSystemd": "進程管理：systemd",
    "resRunnerPm2": "進程管理：PM2",
    "resMemMax": "記憶體上限",
    "resMemHint": "例如 512M 或 1G",
    "resMemHintSystemd": "systemd MemoryMax（cgroup 硬頂，例如 512M 或 1G）",
    "resMemHintPm2": "寫入 ecosystem max_memory_restart（到額重啟，非 cgroup 硬殺）；例如 512M 或 1G",
    "resFieldSystemdOnly": "僅 systemd cgroup 有效；仍會存 DB，改回 systemd 部署後生效",
    "resCpuHint": "100 = 一顆 CPU",
    "resCustomPct": "自訂 %",
    "resTasksHint": "行程數上限",
    "resNofileHint": "開檔上限",
    "resShellHint": "預設 nologin",
    "resShellBashRisk": "bash · 風險",
    "resLockAccount": "鎖定 Linux 帳號",
    "resLockDesc": "usermod -L；解鎖時取消勾選",
    "resLimitsHint": "「儲存並套用」會寫 資料庫 並嘗試 usermod / setquota / 系統控制 set-property。無權限時只寫控制面。",
    "resLimitsHintSystemd": "「儲存並套用」會寫入控制面，並在有權限時套用 OS／systemd 限額。",
    "resLimitsHintPm2": "「儲存並套用」會寫入控制面並更新 PM2 記憶體上限。",
    "resSaveApply": "儲存並套用限制到 OS",
    "resSaveControlOnly": "僅存 Mem/CPU 到控制面",
    "resReapply": "再套用一次（不改表單）",
    "resMigrateDone": "遷移完成",
    "resMigrateIncomplete": "遷移未完成",
    "resMigrateTitle": "遷移系統用戶 主目錄？",
    "resMigrateDesc": "將遷移到 /home/ysk-server-{識別碼} 並建立／修復系統用戶。需要管理員權限。",
    "resMigrate": "遷移",
    "resWrittenOnly": "已寫入控制面；OS 未套用（需要管理員權限）。{{notes}}",
    "resAppliedOs": "限制已套用到 OS。{{notes}}",
    "resSaved": "已儲存",
    "resIncomplete": "未完成",
    "resApplyLimitsFailed": "套用限制失敗",
    "resApplied": "已套用",
    "resApplyFailed": "套用失敗",
    "resChownOk": "變更擁有者 完成",
    "resChownFailed": "變更擁有者 失敗",
    "netSavedPublished": "網絡已儲存並發布 Nginx",
    "netSavedOnly": "網絡設定已儲存（未發布）",
    "netSaveFailed": "儲存失敗",
    "netSuspended": "專案已暫停 — 訪客會收到 503。恢復後再發布站點。",
    "netDomainTitle": "域名",
    "netDomainDesc": "主要域名與別名；儲存後可一併寫入 Nginx 管理設定",
    "netPrimaryDomain": "主要域名",
    "netPrimaryHint": "訪客用來開啟網站的域名，例如 app.example.com",
    "netAliases": "別名",
    "netAliasesHint": "每行一個，例如 www 或 blog 子域名",
    "netNeedPrimary": "請先填寫主要域名",
    "netHttpsTitle": "HTTPS 與整站重新導向",
    "netHttpsDesc": "儲存後請發布 Nginx。整站 301 會蓋過 proxy／PHP／static 內容",
    "netForceHttps": "強制使用 HTTPS",
    "netForceHttpsDesc": "HTTP → HTTPS（301）；需已有 SSL 憑證並用 SSL 發布",
    "netHsts": "啟用 HSTS",
    "netHstsDesc": "瀏覽器記住只走 HTTPS（建議在強制 HTTPS 後開啟）",
    "netHstsNeedHttps": "請先啟用強制 HTTPS",
    "netRedirectUrl": "整站重新導向網址",
    "netRedirectHint": "可留空。填寫後整站 301 到此網址（例如搬站／apex→www）",
    "netBasicAuthTitle": "HTTP 基本認證（瀏覽器登入保護）",
    "netBasicAuthDesc": "發布時寫入 htpasswd；用戶名留空 = 關閉。密碼留空 = 沿用已存密碼",
    "netAuthUserHint": "留空關閉認證",
    "netAuthPassHint": "首次設定必填；之後不改可留空",
    "netAuthPassSet": "設定或更新密碼",
    "netCacheNote": "靜態／PHP 靜態資源預設 Cache-Control 7d；清除 清主機 nginx cache 目錄（需 系統變更權限）",
    "netPurgeOk": "已嘗試 清除 cache",
    "netPurgeFailed": "清除 失敗",
    "netDocrootTitle": "網站目錄（docroot）",
    "netDocrootDesc": "相對專案 主目錄；發布 Nginx 時會用此路徑作為 管理員（預設 app/public）",
    "netDocrootLabel": "文件根目錄",
    "netDocrootFull": "完整路徑：{{path}}",
    "netDocrootCustom": "自訂相對路徑…",
    "netAdvancedTitle": "進階與發布",
    "netAdvancedDesc": "綁定 IP、發布到系統 Nginx",
    "netCollapseBind": "收起綁定 IP",
    "netExpandBind": "展開綁定 IP",
    "netBindIp": "綁定 IP",
    "netBindHint": "留空 = 聽全部網卡",
    "netBindPh": "留空 = 聽全部；可填綁定 IP",
    "netNeedDomainSave": "請先填寫並儲存主要域名",
    "ovUsed": "已用",
    "ovQuota": "配額",
    "ovQuotaUnset": "未設",
    "ovQuotaStatus": "配額狀態",
    "ovOverQuota": "超額",
    "ovQuotaOk": "正常",
    "ovDocroot": "文件根目錄",
    "ovAccessSample": "Access 樣本",
    "ovLines": "{{count}} 行",
    "ovDailyDays": "日統計天數",
    "ovDailyTitle": "訪問日統計（最多 60 日）",
    "ovDailyDesc": "由 access 日誌 樣本滾動記錄",
    "ovQuickTitle": "站點快捷操作",
    "ovQuickDesc": "發布與備份（主部署請用頁頂按鈕或「部署」分頁）",
    "ovNeedNetworkDomain": "請先到「網絡」分頁設定域名",
    "ovPublishNginx": "發布 Nginx",
    "ovPublishSsl": "發布 Nginx + SSL",
    "ovBackupProject": "備份本專案",
    "ovOpenFiles": "開啟專案檔案",
    "ovNoDomainHint": "未設定域名 — 請到「網絡」分頁設定後再發布站點。",
    "ovPublishNote": "發布會寫入管理設定；真正 重新載入 系統 Nginx 需系統變更權限。",
    "ovStatic": "靜態",
    "ovAliases": "別名",
    "ovForceOn": "強制",
    "ovForceOff": "不強制",
    "advFtpCreated": "FTP {{user}} 已建立（草稿，需到 FTPS 頁套用）",
    "advCreateFailed": "建立失敗",
    "advFtpFailed": "FTP 建立失敗",
    "advMaintTitle": "維護操作",
    "advMaintDesc": "備份、暫停／恢復、選用工具",
    "advBackupProject": "備份本專案",
    "advOneClickWp": "一鍵 WordPress（下載+設定）",
    "advSuspendedHint": "暫停中：進程已停、訪客會收到 503。",
    "advSuspendHint": "暫停會停止進程並將站點改為 503 維護頁。",
    "advFtpTitle": "專案 FTP（路徑 Jail）",
    "advFtpDesc": "帳戶限制在專案 app 目錄；建立後請到 FTPS 服務頁套用",
    "advFtpUserHint": "可留空，系統自動產生",
    "advFtpPassHint": "至少 8 個字元",
    "advDangerTitle": "危險區域",
    "advDangerDesc": "刪除專案無法從介面復原，請確認已備份。",
    "advDelete": "刪除專案",
    "deployPyHint": "預設 venv + pip；ASGI 用 uvicorn，Django 用 gunicorn。",
    "deployGoHint": "預設：go 建置 -o app . 後啟動 ./app；可略過建置若二進位已存在。",
    "deployRustHint": "預設：cargo 建置 --release 後啟動 目標/release/{crate}；可略過建置。",
    "deployNodeHint": "依 節點 啟動行程（entry 預設 伺服器.js）；生產環境建議 系統服務。",
    "deployDefaultHint": "依 運行時 啟動；套用後才對外。",
    "deployOsStep": "獨立 Linux 用戶 + /home/ysk-server-{專案識別碼}（資源分頁可建立）",
    "deployPyReady": "Python 執行環境已就緒",
    "deployPipNet": "有 requirements.txt 時需外網 pip",
    "deployCheckPort": "部署後檢查埠與 /health",
    "deployPublishProxy": "發布 Nginx 反代",
    "deployToolchainReady": "{{runtime}} toolchain 已就緒",
    "deployFirstBuild": "首次部署會 建置（可能較久）",
    "deployNeedBinary": "建置 成功後才有可執行檔",
    "deployPhpFpmOk": "PHP-FPM 版本正確",
    "deployPhpPool": "部署 PHP／套用 程序池",
    "deployNginxSsl": "發布 Nginx + 可選 SSL",
    "deployPublicContent": "確認 public/ 有內容",
    "deployNetPublish": "到「網絡」發布 Nginx",
    "deployConfirmToolchain": "確認執行環境頁已安裝對應 toolchain（或主機已有）",
    "deployConfirmCode": "確認 app/ 內有程式碼（範本或 Git）",
    "deployPressDeploy": "按「部署」啟動；成功後到「網絡」發布 Nginx",
    "deployVersionSaved": "已儲存 {{runtime}} 版本 {{version}}（部署時會用此版本）",
    "deployVersionSaveFailed": "儲存 運行時 版本失敗",
    "deployInstallingToolchain": "正在安裝／確認 toolchain…",
    "deployToolchainIncomplete": "Toolchain 安裝未完成（權限或網絡）；可改手動到執行環境頁",
    "deployToolchainDone": "Toolchain 步驟完成，開始部署…",
    "deployToolchainFailed": "安裝 toolchain 失敗",
    "deployChecklistTitle": "建立完成 — 部署檢查清單",
    "deployChecklistDesc": "{{runtime}} 專案骨架已就緒；完成下列步驟才會對外服務",
    "deploySectionTitle": "{{runtime}} 部署",
    "deploySectionDesc": "依 {{runtime}} 啟動行程（埠／系統服務 或 pidfile）",
    "deployPhpVersion": "PHP 版本",
    "deployPhpVersionHint": "本站使用的 PHP 版本（需主機已安裝對應 FPM）",
    "deployRuntimeVersion": "{{runtime}} 版本",
    "deployRuntimeVersionHint": "寫入專案後部署會用此版本；安裝請到執行環境頁",
    "deployRuntimeVersionCreateHint": "建立時寫入；部署時參考",
    "deployRuntimeVersionGeneric": "運行時 版本",
    "deployEntry": "啟動 entry",
    "deployEntryHint": "可留空用預設（{{hint}}）；會同步到伺服器",
    "deploySkipBuild": "略過建置",
    "deploySkipBuildHint": "已有 venv／二進位時可勾選，加快重啟（會記住本機偏好）",
    "deployPort": "· 埠 {{port}}",
    "deployFpmApplied": "已套用 PHP-FPM 程序池",
    "deployFpmIncomplete": "FPM 未完成",
    "deployFpmNote": "會寫入站點／程序池 設定；真正 重新載入 需系統變更權限。",
    "deployBuildNote": "建置／啟動失敗會在操作結果顯示原因，不會假裝成功。entry 會寫入伺服器；略過建置另存本機偏好。",
    "deployPhpIniTitle": "專案 php.ini 覆寫",
    "deployPhpIniDesc": "只填要改的鍵；空白＝沿用全域（執行環境 → PHP → php.ini）。部署／套用 FPM 時寫入 php_admin_*",
    "deployPhpIniExample": "例如 256M；留空用全域",
    "deployGlobal": "全域",
    "deployCustom": "自訂",
    "deployOff": "關",
    "deployOnCareful": "開 · 慎",
    "deployPhpIniSaved": "已儲存專案 php.ini 覆寫；請再部署或套用 FPM",
    "deployHistory": "部署歷史（{{count}}）",
    "deployHistoryDesc": "來自操作稽核；newest first",
    "deployGitUrlHint": "HTTPS 或 git@host:org/repo.git",
    "deployEnvHint": "每行一項：名稱=值；# 開頭為註解",
    "resume": "恢復專案",
    "suspend": "暫停專案",
    "goFtpsApply": "前往 FTPS 服務套用",
    "toolchainNote": "安裝 toolchain ≠ 專案已上線；部署成功 ≠ Nginx 已對外（需在「網絡」發布）。",
    "installToolchainDeploy": "安裝 toolchain 並部署",
    "deployOnly": "僅部署",
    "openRuntime": "開啟 {{runtime}} 執行環境",
    "later": "稍後再說",
    "installToolchainDeployShort": "裝 toolchain 並部署",
    "runtimeEnv": "{{runtime}} 環境",
    "applyFpmPool": "套用 FPM 程序池",
    "staticNginxHint": "靜態站以「發布 Nginx」為主 — 請到「網絡」或總覽快捷操作。",
    "fullIniLink": "完整目錄與 opcache／工作階段 等請到",
    "phpIniLink": "PHP 執行環境 → php.ini",
    "savePhpIniOverride": "儲存 php.ini 覆寫",
    "scaffoldNote": "若 app/ 為 YSK 範本佔位（含 .ysk-scaffold），會先清除再 clone；已有自訂內容會拒絕覆寫。",
    "saveOnly": "只儲存",
    "savePublishNginx": "儲存並發布 Nginx",
    "needDomainToPublish": "填寫主要域名後才可發布站點。",
    "savePublish": "儲存並發布",
    "saveAuth": "儲存認證",
    "cacheZoneNote": "完整 FastCGI／proxy_cache zone 需主機 nginx.設定檔 先定義 keys_zone；面板提供 best-effort 清除。",
    "purgeNginxCache": "清除 Nginx cache",
    "nginxManageFile": "Nginx 管理檔：",
    "publishRuntimeNote": "發布會依 運行時 產生 proxy／PHP-FPM／static 設定檔（含認證、導向與 docroot）",
    "publishStored": "用已存設定發布",
    "publishStoredSsl": "用已存設定 + SSL",
    "publishNote": "「發布」寫入管理 設定檔；同步到 /etc/nginx 並 重新載入 需系統變更權限。",
    "hitsFiles": "內容命中 {{count}} 個檔 — 點檔名可開尾端（含關鍵字過濾）",
    "logFilesCount": "日誌檔 {{count}}",
    "defaultScanNote": "預設永遠掃描 日誌/ 與 日誌/。額外目錄只收入檔名像 *.日誌 / *.out / *.err 的檔。",
    "opsOk": "{{label}}完成{{url}}",
    "opsOkWithNote": "{{label}}完成：{{note}}{{url}}",
    "opsFail": "{{label}}失敗：{{reason}}",
    "railPython": "Python 行程",
    "railGo": "Go 行程",
    "railRust": "Rust 行程",
    "railNode": "節點 行程",
    "runtimeName": {
      "php": "PHP",
      "node": "Node.js",
      "static": "靜態",
      "python": "Python",
      "go": "去",
      "rust": "Rust",
      "java": "Java",
      "kotlin": "Kotlin",
      "bun": "包子"
    },
    "netCacheTitle": "快取",
    "logsDeepAccess": "日誌中心 · access",
    "logsDeepError": "日誌中心 · error",
    "logsDeepNginxUnit": "Nginx 服務日誌",
    "logsPresetAccess": "篩選 access.log",
    "logsPresetError": "篩選 error.log",
    "railJava": "Java 進程",
    "railKotlin": "Kotlin 進程",
    "railBun": "Bun 進程",
    "deployProcessManager": "進程管理",
    "deployProcessManagerSystemd": "systemd（推薦）",
    "deployProcessManagerPm2": "PM2",
    "proc_restart": "重啟",
    "proc_stop": "停止",
    "proc_reload": "重新載入",
    "procControlsHint": "進程控制（{{manager}}）",
    "procActionOk": "{{action}} 成功 · {{notes}}",
    "procActionFail": "{{action}} 失敗 · {{notes}}",
    "procActionFailShort": "進程操作失敗",
    "procMissingUser": "專案無 Linux 用戶，無法操作 PM2",
    "deploySystemdHint": "生產預設：unit ysk-project-*.service、開機自啟、cgroup 限額跟專案資源。",
    "deployPm2Hint": "用 pm2 start ecosystem（需已裝 PM2 plugin）。進程見「執行環境 → 進程」PM2 表。部署前會停舊 runner，避免搶埠。",
    "deleteDialogTitle": "永久刪除專案",
    "deletePermanent": "永久刪除",
    "deleteRemoveFiles": "刪除磁碟 home 與 Linux 用戶",
    "deleteTypeName": "輸入專案名稱以確認",
    "deletedOk": "專案已刪除",
    "sslRequiredFirst": "尚未有此網域的 SSL 證書。請先到「SSL 證書」申請／上載，再按發佈 + SSL。",
    "sslGateHint": "SSL 相關按鈕已鎖定：請先到",
    "sslGateHint2": "為網域申請／上載證書後再發佈 + SSL。",
    "netPublishPrimary": "基本",
    "netPublishSsl": "HTTPS/SSL",
    "netPublishMaint": "維護",
    "sslNeedDomain": "請先填寫網域，才能發佈 Nginx / SSL。",
    "createTemplateMissing": "未載入 {{v0}} 範本；請重新整理或選「— 無 —」空白專案。",
    "deleteDialogDesc": "將銷毀「{{name}}」。此操作無法還原。",
    "deleteWillStop": "停止 systemd / PM2 / 本機進程",
    "deleteWillWeb": "移除 Nginx conf、PHP-FPM pool、Apache vhost（如有）",
    "deleteWillOs": "刪除 Linux 用戶與 home 目錄（安全路徑）",
    "deleteKeepOs": "保留 home 與 Linux 用戶（僅面板移除）",
    "deleteWillDb": "從控制面資料庫移除專案",
    "deleteRemoveFilesDesc": "取消勾選則只從面板移除，檔案與系統用戶保留",
    "deleteTypeNameHint": "請輸入「{{name}}」",
    "deleteDnsWarn": "共享 DNS zone / 郵箱 domain 不會自動刪除。",
    "manageInNginx": "在 Nginx 管理",
    "advFtpHomeApp": "網站 app 目錄",
    "advFtpHomeRoot": "專案家目錄（全部）",
    "advFtpManage": "開啟 FTP 頁",
    "resShell": "登入 shell",
    "resSaveHint": "「儲存並套用」會改主機。「僅存控制面」只記表單。「再套用」用已存值再寫入系統。",
    "resBashConfirmTitle": "允許互動式 bash？",
    "resBashConfirmDesc": "這會讓專案用戶有互動登入 shell。只在需要以該用戶 SSH 或終端機時才確認。",
    "createGitHint": "可選。會記在專案；到部署分頁再 clone（建立時不會 clone）。",
    "gitTokenLaterHint": "HTTPS token 與 clone depth 請在建立後於部署分頁設定。",
    "gitBranch": "分支",
    "gitBranchHint": "從遠端揀分支或 tag。",
    "gitBranchAfterUrl": "請先填寫 Git 網址。留空則使用遠端預設分支。",
    "gitLastRef": "上次同步：{{branch}} @ {{commit}}",
    "gitConfirmTitle": "要 clone 到此專案？",
    "gitConfirmBody": "若 app/ 仍是 Hello World 佔位會先清除再 clone。非 YSK 範本的自訂檔案會拒絕覆寫。",
    "gitConfirmRemoteBody": "會把 origin 改為新網址再 pull。歷史無關則失敗；不會清除自訂檔案。",
    "runtimeActual": "實際 binary {{path}}",
    "runtimeFallback": "所選 {{version}} 並未安裝。行程實際使用 {{path}}。",
    "gitSync": "同步",
    "gitFetch": "抓取（fetch）",
    "gitCheckout": "切換分支（checkout）",
    "gitReset": "重設到遠端",
    "gitResetNeedConfirm": "需確認 — 會捨棄本機提交",
    "gitDeepen": "抓完整歷史",
    "gitLogTitle": "最近 commit",
    "gitDirtyTitle": "本機改動已阻止 pull",
    "gitDirtyBody": "有 {{count}} 個檔與 Git 不同（Files 或應用改過）。請丟棄或取消。",
    "gitDiscard": "丟棄本機檔",
    "gitOpenFiles": "在 Files 開啟",
    "gitNotCloned": "尚未 clone",
    "gitClean": "乾淨",
    "gitDirty": "有改動",
    "gitBehind": "落後 {{count}}",
    "gitAhead": "超前 {{count}}",
    "gitDetached": "已釘選",
    "gitShallow": "淺層",
    "gitMissing": "沒有 git",
    "gitResetConfirmTitle": "要 hard reset 到遠端？",
    "gitResetConfirmBody": "會丟棄本機 Git 歷史及未追蹤檔（保留 .env），再用控制面資料還原 .env。",
    "gitHeads": "遠端分支",
    "gitToken": "HTTPS 令牌",
    "gitTokenHint": "加密存放。不會寫入 remote URL。",
    "gitTokenPlaceholder": "ghp_… 或 glpat-…",
    "gitTokenSet": "已設 token",
    "gitSaveToken": "儲存 token",
    "gitClearToken": "清除 token",
    "gitDeployKey": "部署公鑰",
    "gitDeployKeyHint": "請以唯讀 deploy key 加到 Git 主機。",
    "gitDeployKeyOn": "部署金鑰",
    "gitMakeKey": "建立 deploy key",
    "gitCopyPub": "複製 public key",
    "gitClearKey": "清除 deploy key",
    "gitKeyCopied": "已複製 public key",
    "gitPinHost": "釘選 host key",
    "gitPinHostBody": "尚未釘選 {{host}}。請核對 fingerprint，再釘選後才用 SSH clone。",
    "gitHostUnpinned": "未釘選 host key",
    "gitHookTitle": "推鉤",
    "gitHookHint": "自行把 URL 貼到 GitHub／Gitea／GitLab（只收 push）。不是 Slack。",
    "gitHookOn": "已開",
    "gitHookOff": "已關",
    "gitHookEnable": "開啟",
    "gitHookRotate": "更換 secret",
    "gitHookDisable": "關閉",
    "gitHookSecretOnce": "請立即複製此 secret——之後不會再顯示。",
    "gitHookCopyUrl": "複製",
    "gitHookCopySecret": "複製 secret",
    "gitHookCopied": "已複製",
    "gitHookSetup": "Payload URL 用上方網址。Content type：application/json。事件只選 push。Secret 用啟用時顯示的值。",
    "gitHookGithub": "Settings → Webhooks → Add webhook。Content type：application/json。Events：Just the push event。GitHub.com 需要 HTTPS。",
    "gitHookGitea": "Settings → Webhooks → Add Webhook → Gitea。方法 POST。事件：Push。",
    "gitHookGitlab": "Settings → Webhooks。Trigger：Push events。Secret token 填 hook secret（X-Gitlab-Token）。",
    "gitHookHonesty": "主機 unit 需 YSK_EXECUTE=1，否則 hook 只回計劃。",
    "gitHookSkipOther": "其他分支會被忽略。",
    "gitAuthHttps": "HTTPS 令牌",
    "gitAuthSsh": "SSH 部署金鑰",
    "gitLoadRefs": "載入分支",
    "gitRefDefault": "遠端預設",
    "gitRefBranches": "分支",
    "gitRefTags": "標籤",
    "gitRefOther": "其他 ref…",
    "gitRefCustom": "Commit 或 ref",
    "gitRefsNeedUrl": "請先填網址。",
    "gitRefsNeedAuth": "請先儲存 token 或 deploy key，再載入分支。",
    "gitRefsHint": "來自遠端清單，請選擇。",
    "gitHookSetupToggle": "如何貼到 Git 平台",
    "gitHookOneLiner": "HMAC 或 X-YSK-Git-Hook。只同步本專案 ref。",
    "gitHookExecuteHint": "真正 clone／部署需 YSK_EXECUTE=1。",
    "gitShowKey": "顯示金鑰",
    "gitHideKey": "隱藏",
    "gitBehindShort": "↓{{計數}}",
    "gitAheadShort": "↑{{計數}}",
    "gitDirtyShort": "有改動 · {{count}}",
    "gitFilesLink": "文件",
    "netForceHttpsOn": "發佈邊緣後，HTTP 會跳轉到 HTTPS。",
    "netForceHttpsOff": "未儲存強制跳轉。",
    "netBoundCert": "已綁定憑證",
    "netBoundCertExpiry": "到期 {{at}}",
    "netNoBoundCert": "此主機名磁碟上沒有憑證",
    "netForceHttpsNeedCert": "強制 HTTPS 前，請先在 /ssl 為此域名簽發憑證。",
    "netHttpsLiveNotForced": "已有邊緣設定檔，HTTPS 可能已生效。此項只控制是否強制 HTTP→HTTPS。",
    "gitSyncBlockedDirty": "有本機改動時無法同步。請先檢視 diff，或以重設丟棄後再同步。",
    "gitViewDiff": "檢視 diff",
    "nameInvalid": "請用小寫名稱：以英文字母開頭，其後可為字母、數字或連字號（最長 31 字）。",
    "deployVersionMissing": "此主機未安裝 Node {{version}}。請改選已安裝的版本，或先安裝此版本。",
    "deployUsedBinary": "本次部署使用 {{path}}"
  },
  "protection": {
    "levels": {
      "low": {
        "label": "正常",
        "verb": "系統平穩",
        "hint": "維持日常防護即可"
      },
      "elevated": {
        "label": "偏高",
        "verb": "有異常跡象",
        "hint": "建議切到「加固」並留意可疑 IP"
      },
      "under_attack": {
        "label": "受攻擊",
        "verb": "疑似正在受攻擊",
        "hint": "立即套用「受攻擊」檔 + 批量封禁"
      },
      "critical": {
        "label": "危急",
        "verb": "威脅嚴重",
        "hint": "考慮緊急檔；確認白名單有你"
      }
    },
    "presetsWhen": {
      "daily": "日常營運",
      "hardened": "掃描／暴力",
      "under_attack": "L7 爆量",
      "emergency": "最後手段"
    },
    "note": {
      "notApplied": "未套用到系統（需 管理員權限與系統變更權限已開啟）— 已記到管理設定",
      "nginxWritten": "已寫入 Nginx 限速管理檔",
      "f2bWritten": "已寫入 fail2ban 管理設定",
      "hintDropped": "已略過內部防護提示",
      "nginxLimits": "將寫入 Nginx 限速片段"
    },
    "rel": {
      "justNow": "剛剛",
      "minutesAgo": "{{n}} 分鐘前",
      "hoursAgo": "{{n}} 小時前"
    },
    "apiUnreachable": "無法連線 介面（Web proxy／後端可能未啟動）",
    "geoipLoadFailed": "載入 GeoIP 失敗",
    "loadFailed": "載入失敗",
    "previewDone": "預覽完成（未寫入）",
    "presetApplied": "已套用防護檔",
    "manualBan": "手動封禁",
    "banSent": "已送出封禁 {{ip}}",
    "quickSelectBan": "快速選取封禁",
    "bulkBan": "批量封禁 {{count}} 個",
    "autoBanStatus": "自動 封鎖：{{onOff}} · {{mode}} · {{method}}",
    "autoBanUpdated": "已更新自動 封鎖",
    "automationMaster": "自動化主開關：{{onOff}}",
    "autoPresetStatus": "自動防護檔：{{onOff}}",
    "autoBanAutomation": "自動 封鎖：{{onOff}}（{{mode}}）",
    "automationSaved": "已儲存自動化設定",
    "statFirewall": "防火牆",
    "statSuspects": "可疑 IP",
    "statSuspectsSplit": "可操作 {{actionable}}／全部 {{total}}",
    "suspectActionableCount": "可操作 IP {{count}}",
    "scoreBasisHint": "威脅分計入防火牆、fail2ban 封禁量與請求速率，與情報分頁的可疑清單不是同一計數。",
    "statAutoBan": "自動 封鎖",
    "statApply": "系統套用",
    "statActiveBans": "活躍封禁",
    "statPreset": "防護檔",
    "threatPill": "威脅 {{label}} · {{score}} 分",
    "reprobed": "已重新探測",
    "loadingStatus": "載入防護狀態…",
    "tabs": {
      "command": "應變",
      "automation": "自動化",
      "bans": "封禁",
      "geo": "IP 准入",
      "stack": "底層",
      "intel": "情報",
      "about": "說明"
    },
    "reapply": "重新套用",
    "nginxLimits": "Nginx 限速",
    "notWritten": "未寫",
    "modeValue": {
      "normal": "正常",
      "degraded": "降級",
      "ddos-protection": "DDoS 防護",
      "offline": "離線"
    },
    "mode": "模式",
    "controlPlane": "控制面",
    "canApply": "可套用",
    "needRoot": "需要管理員權限",
    "writeOnly": "只寫檔",
    "autoRunning": "運作中 · 間隔 {{sec}}s · 本小時 封鎖 {{n}}",
    "autoOffManual": "關閉 — 只人手操作",
    "lastTick": "· 上次 {{t}}",
    "nextTick": "· 下輪 {{t}}",
    "on": "開",
    "off": "關",
    "open": "開啟",
    "ranAutomationTick": "已跑一輪自動化",
    "escalateHardened": "加固 ≥ 分數",
    "escalateAttack": "受攻擊 ≥ 分數",
    "deescalateDaily": "回落日常 < 分數",
    "zeroOff": "0 關",
    "holdAfterEscalate": "升檔後最少維持",
    "min5": "5 分",
    "min15": "15 分",
    "min30": "30 分",
    "hour1": "1 時",
    "hour2": "2 時",
    "hour6": "6 時",
    "presetOrCustom": "預設檔 / 自訂",
    "autoBanMode": "自動封禁模式",
    "soft": "寬鬆",
    "normal": "標準",
    "aggressive": "積極",
    "custom": "自訂",
    "method": "方式",
    "banMethod": "封禁方式",
    "both": "兩者",
    "scoreGte": "分數 ≥",
    "hitsGte": "請求 hits ≥",
    "hits429Gte": "429 相關 hits ≥",
    "scanHitsGte": "掃描路徑 hits ≥",
    "cooldown": "冷卻",
    "maxPerHour": "每小時上限",
    "scanInterval": "掃描間隔",
    "schedulerDefault": "scheduler 預設 120s",
    "collapse": "收起",
    "expand": "展開",
    "step": "步驟",
    "mechanism": "機制",
    "youCanTune": "你可調",
    "probe": "探測",
    "probeSignals": "外網／請求率／TCP／f2b／UFW",
    "escalateThreshold": "升檔門檻",
    "emergency": "緊急",
    "neverAuto": "永不自動",
    "manualEmergency": "人手 EMERGENCY",
    "signalNetworkDown": "外網斷",
    "signalHighReq": "高請求率",
    "signalDdos": "DDoS 啟發式",
    "signalTcp": "TCP 連線",
    "signalUfwOff": "UFW 關閉",
    "signalF2bBans": "fail2ban 封禁數",
    "weightHint": "{{label}} 權重 0–3",
    "detected": "（已偵測）",
    "notSet": "（未設定）",
    "zonesComma": "Zones（逗號分隔）",
    "underAttackRequested": "已請求 Under Attack",
    "underAttackCleared": "已請求解除 UA",
    "autoBanOpen": "已開 · {{mode}} · 本小時 {{n}}/{{max}}",
    "autoBanClosed": "關閉 — 只靠手動／列表",
    "pausedNoExecute": "· 暫停（無 執行）",
    "circuitOpen": "· 已熔斷",
    "autoBanModeLabel": "自動 封鎖 模式",
    "scanned": "已掃描",
    "bulkOps": "批量操作",
    "fromAccessLog": "來自 access 日誌 · 一鍵或批量封禁",
    "noSuspectIps": "暫時無可疑 IP",
    "noSuspectDesc": "有掃描／429 流量時會自動出現。亦可展開手動封禁。",
    "whitelistPlus": "白名單 + {{ip}}",
    "whitelistAdded": "已加入白名單",
    "activeBansTitle": "活躍封禁 ({{count}})",
    "activeBansDesc": "防護中心彙總 · 解封經 defense 介面（同 fail2ban-客戶端）",
    "source": "來源",
    "unbanned": "已解封",
    "noBans": "未有封禁",
    "noBansDesc": "封禁後顯示於此",
    "collapseQuickAdd": "收起快加",
    "quickAddOne": "快加一條",
    "removeItem": "移除 {{w}}",
    "updated": "已更新",
    "ipOrCidr": "IPv4／IPv6 或 CIDR",
    "autoBanWhitelistAdded": "已加入 auto-封鎖 白名單",
    "added": "已加入",
    "banIpPlaceholder": "要封禁的 IPv4 或 IPv6",
    "reason": "原因",
    "scanBrute": "掃描 / 暴力",
    "noSignals": "尚無訊號",
    "pressReprobe": "按重新探測",
    "points": "分",
    "noTopIps": "暫無 Top IP",
    "topIpsAfterLog": "有 日誌 後會顯示",
    "noManagedVhost": "無 managed vhost",
    "afterPresetMarker": "套用防護檔後會注入 marker",
    "injected": "已注入 YSK_DEFENSE",
    "notInjected": "未注入",
    "noEvents": "暫無事件",
    "eventsAfterOps": "套用／封禁後出現",
    "geoipUpdated": "GeoIP 庫已更新",
    "dbReady": "庫就緒",
    "stale": "過舊",
    "older7d": ">7 日",
    "lastSuccess": "上次成功",
    "downloaded": "已下載",
    "missing": "缺失",
    "geoMode": "Geo 准入模式",
    "denyList": "封鎖名單",
    "allowListHighRisk": "允許名單 · 高危",
    "autoUpdateDb": "自動更新庫",
    "countriesSelected": "國家（已選 {{n}}）",
    "searchCountry": "搜尋中文名或 ISO",
    "countryPlaceholder": "中國 / CN",
    "regionsSelected": "省／州（已選 {{n}}）",
    "regionsHint": "依已選國家顯示；可自訂 CN-GD",
    "pickCountryFirst": "建議先選國家以收窄列表",
    "customRegion": "自訂，例 CN-GD",
    "regionPlaceholder": "廣東 / CA / 東京",
    "continentsSelected": "大陸（已選 {{n}}）",
    "continentsHint": "洲際（可選）",
    "continentPlaceholder": "亞洲 / EU",
    "asnsSelected": "供應商 ASN（已選 {{n}}）",
    "asnsHint": "雲／ISP；可自訂 ASN",
    "customAsn": "自訂 ASN，例 13335",
    "asnPlaceholder": "Cloudflare / 電信",
    "cityExample": "例：CN|Shenzhen 或 US|Ashburn",
    "policySaved": "政策已儲存 · 國 {{c}} · 省 {{r}} · ASN {{a}}",
    "ipPolicySaved": "IP 准入政策已儲存",
    "nginxGeoWritten": "已寫入 nginx geo 片段",
    "ipAddress": "IP 位址",
    "lookupPlaceholder": "要查詢的 IPv4 或 IPv6",
    "wouldBlock": "會攔截 · {{reason}} · {{matched}}",
    "wouldAllow": "放行 · {{reason}}",
    "lookupDone": "Lookup 完成",
    "item": "項目",
    "value": "值",
    "country": "國家",
    "region": "省／州",
    "city": "城市",
    "continent": "大陸",
    "coords": "座標",
    "provider": "供應商",
    "policy": "政策",
    "block": "攔截",
    "allow": "放行",
    "matched": "命中",
    "applyStricterTitle": "套用「{{name}}」？",
    "applyStricterDesc": "可能開啟自動封鎖。請確認白名單有你的 IP。請核對以下變更。",
    "confirmEmergencyTitle": "確認緊急防護檔",
    "confirmEmergencyDesc": "緊急檔會極度限速。請確認白名單有你的 IP，並輸入 EMERGENCY。",
    "confirmString": "確認字串",
    "applyEmergency": "套用緊急檔",
    "sectionPreset": "防護檔",
    "sectionAutoPreset": "① 自動防護檔",
    "sectionAutoBan": "② 自動封禁",
    "unban": "解封",
    "ban": "封禁",
    "banConfirmTitle": "封禁 {{ip}}？",
    "banConfirmMethod": "方法：{{method}}",
    "banConfirmUntilUnban": "會一直維持，直至你解除封禁（或 fail2ban 到期）。",
    "banConfirmDesc": "此 IP 會在主機上被封鎖。請確認不是目前面板或工作階段來源。",
    "wlRemovedUndo": "已從白名單移除 {{ip}}。5 秒內可復原。",
    "undo": "復原",
    "banSelectedConfirmTitle": "封禁已選 {{count}} 個 IP？",
    "banSelectedConfirmDesc": "以下地址會在主機上被封鎖：{{ips}}",
    "save": "儲存",
    "yes": "是",
    "no": "否",
    "oneClickSuggested": "一鍵套用建議檔",
    "stackApply": "套用防護組合（UFW、fail2ban、建議檔）",
    "stackApplyDone": "已要求套用防護組合",
    "stackApplyHint": "會啟用 UFW 並套用 fail2ban 與建議防護檔。遠端面板請先確認不會把自己鎖在外面。",
    "viewPresets": "檢視防護檔",
    "suspectIpsCount": "可疑 IP {{count}}",
    "goBans": "去封禁",
    "singleEntryPrefix": "單一入口：",
    "singleEntryBody": " ",
    "emergencyNeverAuto": "緊急檔永不自動",
    "writeOnlyBanner": "唯寫模式：系統套用需 EXECUTE=1 與 root。",
    "readiness": "就緒探測",
    "goTo": "前往",
    "presetGuide": "",
    "active": "作用中",
    "recommended": "建議",
    "useCarefully": "慎用",
    "preview": "預覽",
    "stackToolsSee": "底層工具見「底層」分頁 ·",
    "readinessCheck": "就緒檢查",
    "automationMasterLabel": "自動化主開關",
    "runOneTick": "立即執行一輪",
    "suggestEmergencyBanner": "分數極高 — 系統建議緊急檔，但不會自動套用。請到應變人手確認。",
    "autoPresetDesc": "依威脅分自動切 日常／加固／受攻擊。緊急檔永不自動。",
    "allowDeescalate": "允許自動回落（降檔）",
    "autoBanThresholdHint": "選 soft/normal/aggressive 會自動填閾值；選「自訂」先可改分數／hits。無 系統變更權限 時只會記錄，不會真 封鎖。",
    "sectionMechanism": "③ 機制說明",
    "lastNotes": "上次：{{notes}}",
    "sectionWeights": "④ 訊號權重（0–3）",
    "weightsDesc": "預設 1；加大會令該類訊號更容易推高威脅分。細範圍用單選，不用手填數字。",
    "needCfToken": "需環境變數 CF_API_TOKEN",
    "cfOnEscalate": "。升至「受攻擊」或人手套用該檔時可打 介面。",
    "ufwOnlyCf": "受攻擊時 UFW 只放 CF 網段（+遠端登入）",
    "ufwOnlyCfHint": "會重設 UFW 並只允許 Cloudflare IP；需系統變更權限。",
    "saveZones": "儲存 zones",
    "uaNow": "立即 Under Attack",
    "uaClear": "解除（→ high）",
    "stackRoleNote": "UFW 與 fail2ban 是防護中心底下的工具頁（不再佔側欄一級）。側欄只保留本頁。",
    "fwUfwTitle": "防火牆 UFW",
    "fwStats": "埠策略 · 永久 DENY · 允許 {{allow}} · 拒絕 {{deny}}",
    "fwRulesProfiles": "UFW 規則與設定檔",
    "f2bStats": "日誌臨時 封鎖 · {{jails}} jails · 封鎖中 {{banned}}",
    "jailsWhitelistPolicy": "Jail · 白名單 · 策略",
    "divisionTitle": "分工一覽",
    "divisionUfw": "UFW = 開哪個埠、永久拒哪個 IP",
    "divisionF2b": "fail2ban = 掃 日誌 之後臨時 封鎖",
    "divisionDefense": "本頁應變／自動化 = 攻擊時總控（限速檔 + 自動 封鎖 + 可疑列表）",
    "autoBanLabel": "自動 封鎖",
    "scanOnce": "掃一次",
    "selectedIps": "已選 {{count}} 個 IP",
    "banSelected": "封禁已選",
    "suspectIps": "可疑 IP",
    "selectAll": "全選",
    "alreadyBanned": "已封禁",
    "whitelist": "白名單",
    "bansWorkflow": "攻擊應變：可疑列表 → 封禁／解封。Jail 策略、ignoreip、服務生命週期見",
    "f2bTool": "fail2ban 工具",
    "noSecondJail": "（不在這裡再做第二套 jail 編輯）。",
    "autoBanWhitelistTitle": "自動 封鎖 白名單",
    "autoBanWhitelistDesc": "防護中心自動封鎖豁免（會同步 fail2ban ignoreip.txt）。完整 ignoreip 在 fail2ban 工具 → 白名單。",
    "ufwOff": "UFW（未啟用）",
    "ufwOffHint": "UFW 未運行 — 可用目標是 fail2ban。",
    "whitelistSyncHint": "面板 {{n}} 條 · fail2ban ignoreip 同步：{{sync}}",
    "whitelistSyncOn": "開",
    "whitelistSyncOff": "關（兩邊清單可能不一致）",
    "ignoreipWhitelist": "ignoreip 白名單",
    "notSetSuggestAdmin": "未設定（建議加入你的管理 IP）",
    "moreItems": "… 還有 {{n}} 項 · 見 fail2ban 白名單",
    "add": "加入",
    "manualBanTitle": "手動封禁",
    "methodFollows": "方式沿用上方選擇（fail2ban / UFW）",
    "preferSuspectList": "多數情況用可疑列表即可。",
    "threatSignals": "威脅訊號",
    "scoreSource": "分數來源 · 權重可調",
    "accessAuthSample": "access + auth 樣本",
    "fullLogsAt": "完整 nginx／auth 日誌 請到",
    "logCenter": "日誌中心",
    "colScore": "分",
    "colHits": "次數",
    "col429": "429",
    "topIpsTitle": "熱點 IP",
    "hitsCount": "{{n}} 次",
    "sampleWindowHint": "計數來自目前 access 與 auth 樣本視窗，不是完整日誌檔。",
    "banShort": "封",
    "vhostLimits": "Vhost 限速",
    "eventStream": "事件流",
    "eventKind": {
      "preset": "防護檔",
      "auto_preset": "自動切檔",
      "cloudflare_ua": "Cloudflare",
      "ban": "封禁",
      "unban": "解封"
    },
    "hours48": "48 小時",
    "geoipDb": "GeoIP 資料庫",
    "refreshStatus": "重新整理狀態",
    "updateDbNow": "立即更新庫",
    "geoipSourceHint": "預設本機 GeoIP 資料庫；可選 IPinfo token。",
    "retry": "重試",
    "loadingGeoip": "載入 GeoIP 狀態…",
    "nextScheduledUpdate": "排程下次更新：{{at}}",
    "statusNotLoaded": "尚未載入狀態",
    "load": "載入",
    "accessPolicy": "准入政策",
    "enable": "啟用",
    "freeGranularity": "免費最高細分：國家 + 省／州 + ASN；城市可選政策（預設關，準確率較低）。供應商 = ASN。Whitelist 永遠豁免。點 chip 移除。",
    "allowListDanger": "允許名單模式高危：不在名單的公網 IP（含未知 geo）會被擋。請確認管理端 IP 已加入封禁頁 whitelist。",
    "dailySchedule": "每日排程",
    "cityPolicy": "城市政策（低置信 · 可選）",
    "useCityAccess": "用城市做准入",
    "cityPolicyHint": "免費庫城市準確率有限。格式 CN|Guangzhou；未勾選時城市只作查詢展示。",
    "noCitiesYet": "尚未加入城市",
    "savePolicy": "儲存政策",
    "applyNginxSnippet": "套用 Nginx 片段",
    "nginxSnippetHint": "需 nginx geoip2 模組才可在 HTTP 層攔截。",
    "testIp": "測試 IP",
    "lookup": "查詢",
    "plusCountry": "+ 國家 {{v}}",
    "plusRegion": "+ 省 {{v}}",
    "plusCity": "+ 城市 {{v}}",
    "lastTickPrefix": "· 上次 {{t}}",
    "nextTickPrefix": "· 下輪 {{t}}",
    "cannotBanSelf": "不可封鎖 {{ip}} — 這是本機、你的登入 IP 或 ignoreip",
    "selfIp": "本機",
    "selfHostIp": "主機 IP",
    "selfLoginIp": "你的登入 IP",
    "showZeroScore": "顯示 0 分",
    "hideZeroScore": "隱藏 0 分",
    "freshnessNa": "不適用",
    "freshnessMissing": "無庫",
    "freshnessStale": "過舊",
    "freshnessFresh": "最新",
    "geoDraftOnly": "政策未啟用 — 儲存只寫草稿，Nginx 不會執行，直至你勾選啟用。",
    "uaNeedZones": "請先設定 Cloudflare zone",
    "geoNeedDb": "尚未有本地 GeoIP 庫 — 請先更新 MMDB 檔",
    "selectAllCountriesWarn": "封鎖名單模式下全選全部國家？這可能把本機與你的登入所在地一併封鎖。",
    "badgeRecommendPreset": "以目前威脅水平，建議改用更強預設",
    "badgeAutomationOn": "自動化已開啟",
    "badgeBanCount": "目前封鎖數",
    "badgeGeoOn": "Geo 准入政策已啟用",
    "badgeGeoNotReady": "GeoIP 資料庫尚未就緒",
    "badgeIntelSignals": "目前計分的訊號數",
    "signalActive": "運作中",
    "signalInactive": "未啟用",
    "signalJails": "{{n}} 個 jail",
    "dbReadyHint": "已有 MMDB 檔",
    "dbNotReadyHint": "請先下載 GeoIP 資料庫",
    "staleHint": "上次成功更新是否已超過 7 日",
    "draftBadge": "草稿",
    "banIsSelf": "此 IP 是目前面板來源或本機。",
    "banNotSelf": "此 IP 不是目前面板來源。",
    "geoSourceLocal": "本機 GeoIP 庫（sapics + DB-IP）",
    "nginxPreviewHint": "此預設會寫入的 Nginx 片段（僅預覽）："
  },
  "publicFiles": {
    "notSet": "未設定",
    "quota": "配額",
    "reloadOnApply": "套用時",
    "path": "路徑",
    "fileManager": "檔案管理",
    "overview": "概覽",
    "overviewDesc": "即將套用的設定（唯讀摘要）",
    "serverName": "伺服器名稱",
    "reloadNginx": "重載 Nginx",
    "reloadTry": "套用時嘗試",
    "siteSettings": "站點設定",
    "siteSettingsDesc": "寫入管理 設定檔；套用時可嘗試 重新載入 Nginx（套用後才可連）",
    "serverNameHint": "Nginx server_name，例如 files.example.com",
    "notes": {
      "noManagedConf": "尚未有受管 Nginx 設定 — 請按套用",
      "notSynced": "管理檔已寫入，但未進入 /etc/nginx/conf.d — 需 root 與 YSK_EXECUTE 再套用並重載"
    },
    "quotaMiB": "配額（MiB）",
    "quotaHint": "可選：限制公用目錄總量。選「不限」會停用 MiB 欄。",
    "unlimited": "不限",
    "quotaInvalid": "請輸入正整數 MiB，或選「不限」。",
    "serverNameRequired": "請填寫伺服器名稱。",
    "serverNameInvalid": "請用主機名、萬用字元或 IP，不可含空白或標點。",
    "applyHint": "套用成功只代表設定已寫入；DNS、SSL 與防火牆需另行就緒才會對外服務。",
    "appliedOk": "已套用公用檔案站點",
    "applyReload": "套用並重載 Nginx",
    "statusLive": "Nginx 已生效",
    "statusDraft": "草稿／待套用",
    "statusManagedOnly": "僅管理檔",
    "statusNotApplied": "未套用",
    "nginxLive": "已在 conf.d",
    "nginxNotLive": "未進 conf.d",
    "openSite": "開啟網站",
    "notLiveHint": "域名 404 多數是 conf 只寫在 dataDir、未複製到 /etc/nginx/conf.d，或未 reload。請用 root + YSK_EXECUTE 再套用。未發 SSL 前連結用 http://；已有憑證則用 https://。",
    "diskRoot": "磁碟根目錄",
    "executeFlag": "執行",
    "asRoot": "根目錄",
    "filesInRoot": "項目數",
    "managedConf": "管理 conf",
    "systemConf": "系統 conf.d",
    "autoindex": "目錄列表（autoindex）",
    "liveSystemConf": "現行系統設定檔：{{path}}",
    "publicRootNote": "公開根目錄：{{path}}",
    "applyConfirmTitle": "套用公用檔案站點？",
    "applyConfirmDesc": "寫入 Nginx server_name {{name}} 並重載 Nginx。",
    "serverNameMismatch": "現行設定檔為 {{live}}；表單為 {{draft}}。套用後會覆蓋。",
    "liveName": "生效名稱",
    "draftName": "草稿名稱",
    "draftUnapplied": "此草稿尚未套用。Nginx 仍以生效名稱對外。",
    "discardDraft": "捨棄草稿"
  },
  "rbac": {
    "permissions": "權限",
    "permissionsDesc": "按角色加減能力；系統有預設，可一鍵還原。",
    "rolePolicy": "角色政策",
    "dirty": "已自訂",
    "factory": "系統預設",
    "maxLevel": "最高等級",
    "save": "儲存政策",
    "saved": "已儲存 {{role}} 權限政策",
    "restoreRole": "還原此角色預設",
    "restoreAll": "還原全部角色",
    "restoreRoleTitle": "還原 {{role}} 為系統預設？",
    "restoreRoleDesc": "將清除此角色的自訂能力，回復出廠設定。",
    "restoreAllTitle": "還原全部角色為系統預設？",
    "restoreAllDesc": "所有角色的自訂政策都會被清除。",
    "restoredRole": "已還原 {{role}}",
    "restoredAll": "已還原全部角色預設",
    "bandAllOn": "全開",
    "bandAllOff": "全關",
    "diffFromFactory": "與預設不同",
    "effectivePreview": "有效能力預覽",
    "userOverrides": "個人加減",
    "extraGrants": "額外授予",
    "extraRevokes": "額外撤銷",
    "restoreUserOverrides": "還原此用戶覆寫",
    "restoreUserOverridesTitle": "清除 {{name}} 的個人權限覆寫？",
    "restoreUserOverridesDesc": "只清除額外授予／撤銷，角色政策不變。",
    "overridesBadge": "有覆寫",
    "promoteAdminTitle": "提升為 管理員？",
    "promoteAdminDesc": "管理員 預設可管理用戶、改權限、模擬登入、還原備份等。請確認。",
    "level": {
      "read": "讀取",
      "write-low": "低危寫入",
      "write-high": "高危寫入",
      "destructive": "破壞性",
      "privilege": "特權"
    },
    "cap": {
      "dashboardRead": "總覽",
      "logsRead": "日誌",
      "metricsRead": "監控指標",
      "projectsRead": "專案（讀）",
      "mailRead": "郵件（讀）",
      "dnsRead": "DNS（讀）",
      "sslRead": "SSL（讀）",
      "backupsRead": "備份（讀）",
      "updatesRead": "更新（讀）",
      "servicesRead": "服務（讀）",
      "firewallRead": "防火牆（讀）",
      "approvalsView": "審批（查看）",
      "usersSelf": "個人設定／雙重驗證",
      "projectsWrite": "專案建改",
      "mailWrite": "信箱／別名",
      "dbWrite": "資料庫建立",
      "sslUpload": "上傳憑證",
      "filesProject": "專案檔案",
      "approvalsRespond": "審批處理",
      "cronManage": "定時工作 管理",
      "servicesControl": "服務控制",
      "updatesApply": "套件更新執行",
      "dnsApply": "DNS 套用",
      "sslIssue": "簽發 SSL",
      "publishApply": "發佈／Nginx",
      "firewallEdit": "防火牆編輯",
      "mailApply": "郵件套用",
      "runtimeTuning": "運行時調參",
      "mysqlConsoleWrite": "MySQL 寫入",
      "projectsDelete": "刪除專案",
      "dbDrop": "刪除資料庫",
      "backupsRun": "執行備份",
      "backupsRestore": "備份還原",
      "firewallFlush": "清空防火牆",
      "logsPurge": "清除日誌",
      "usersManage": "用戶管理",
      "packagesManage": "方案管理",
      "usersImpersonate": "模擬登入",
      "securityPolicy": "安全政策",
      "rbacPolicy": "權限政策",
      "settingsSystem": "系統設定",
      "auditExport": "審計匯出",
      "securityApiKeysAdmin": "介面 金鑰管理",
      "networkBrowse": "主機代瀏覽",
      "networkVnc": "VNC 遠端桌面管理",
      "validatorsRead": "驗證者節點（讀取）",
      "validatorsManage": "驗證者節點管理",
      "validatorsWipe": "驗證者節點清空資料",
      "dockerRead": "Docker（讀取）",
      "dockerManage": "Docker 管理",
      "dockerWipe": "Docker 刪除／清理"
    },
    "aboutRoles": "角色說明（出廠預設）",
    "aboutRolesBody": "角色決定預設權限；用戶可再覆寫個別能力。",
    "aboutQuota": "配額說明",
    "aboutQuotaBody": "方案配額目前以面板／主機總量為主閘，並非完整多租戶硬隔離。用量列若顯示 主機 totals，即代表全機統計。",
    "dangerPolicyTitle": "授予破壞性／特權能力？",
    "dangerPolicyDesc": "你正為此角色加入 destructive 或 privilege 能力，或提高 maxLevel。請確認風險後再儲存。",
    "needRbacPolicy": "需要 rbac.policy 先可以編輯角色政策。",
    "adminLockedFull": "管理員 全開（鎖定）",
    "adminLockedHint": "管理員 系統角色永遠功能全開，不可以削減。請改 Operator／Viewer／代理，或對非 管理員 用戶做個人加減。",
    "maxLevelHint": "高於此等級的能力組會自動鎖定，無法開啟。",
    "capabilities": "能力清單",
    "capabilitiesHint": "勾選此角色可用的功能。橙點表示與系統預設不同。",
    "enabledCount": "已開 {{enabled}}／{{total}}",
    "bandAboveMax": "高於最高等級",
    "roleUnavailable": "此角色不可用",
    "dirtyHint": "已自訂（與系統預設不同）",
    "unsaved": "未儲存",
    "unsavedHint": "此角色有未儲存變更",
    "nothingToSave": "沒有要儲存的變更",
    "saveRole": "儲存「{{role}}」政策",
    "discardTitle": "捨棄變更？",
    "discardDesc": "未儲存的權限變更將會捨棄。"
  },
  "readiness": {
    "cat": {
      "core": "控制面",
      "security": "權限與安全",
      "binaries": "系統軟件",
      "hosting": "執行環境",
      "dns": "域名系統",
      "email": "郵件",
      "isolation": "專案隔離",
      "ops": "運維"
    },
    "level": {
      "ready": "就緒",
      "degraded": "降級",
      "missing": "缺少",
      "unknown": "未知"
    },
    "severity": {
      "critical": "關鍵",
      "recommended": "建議",
      "optional": "可選"
    },
    "fix": "修復",
    "passed": "通過",
    "checkFailed": "就緒檢查失敗",
    "gatePass": "門檻通過 · {{pct}}%",
    "gateBlocked": "未通過／有阻擋 {{n}}",
    "gateFail": "尚未達標 · {{pct}}%",
    "executeOn": "已開",
    "executeOff": "未開",
    "blockers": "阻擋",
    "blockersHint": "「阻擋」是「缺少」中的關鍵項，不是額外檢查。",
    "requireAdminTotp": "要求管理員雙重驗證政策",
    "listenBind": "監聽位址",
    "item": {
      "admin2fa": "管理員雙重驗證"
    },
    "dataDirPerms": "面板資料目錄權限",
    "mode750": "權限 750",
    "totalChecks": "全部檢查",
    "totalChecksHint": "就緒＋降級＋缺少＝此總數。阻擋是缺少項裡的關鍵子集。",
    "probing": "探測中…",
    "reprobe": "重新探測",
    "exportReport": "匯出報告",
    "firstBlocker": "處理首個阻擋",
    "viewRecommended": "檢視建議項",
    "loadingProbe": "正在探測主機能力…",
    "priorityTab": "優先修復",
    "checklistTab": "完整清單",
    "summaryTab": "摘要與快捷",
    "priorityTitle": "優先修復",
    "prioritySub": "按建議順序處理；修好阻擋後再重新探測",
    "nItems": "{{count}} 項",
    "noHardBlockers": "無硬阻擋",
    "noHardBlockersTitle": "沒有硬阻擋項",
    "prodGate": "生產門檻",
    "gatePassed": "已通過",
    "gateMaybePerm": "仍可能因權限未達標",
    "viewDegradedHint": "可檢視「降級」建議項（郵件、DNS、可選 運行時）。",
    "viewDegraded": "查看降級項",
    "fullChecklist": "完整檢查清單",
    "showing": "顯示 {{shown}} / {{total}} 項",
    "filterAria": "狀態篩選",
    "all": "全部",
    "category": "類別",
    "allCategories": "全部類別",
    "searchPh": "標題、說明、識別碼、修復提示…",
    "quickCatAria": "快速類別",
    "noMatchTitle": "沒有符合的項目",
    "noMatchDesc": "試清除搜尋或改篩選條件。",
    "resetFilters": "重設篩選",
    "summary": "摘要",
    "shortcuts": "快捷入口",
    "opsShortcutsAria": "運維捷徑",
    "scHost": "主機設定",
    "scHostD": "hostname · 電源 · NTP",
    "scUnit": "控制面 服務單元",
    "scUnitD": "系統服務 安裝／啟用",
    "scServices": "服務矩陣",
    "scServicesD": "nginx · 資料庫 · 生命週期",
    "scMetrics": "主機指標",
    "scMetricsD": "負載 · 記憶體 · 告警",
    "scProtection": "防護中心",
    "scProtectionD": "應變 · UFW · fail2ban",
    "policyNote": "政策：郵件 PTR／埠 25／域名商 DNS 永不自動宣稱完成。HTTP 503 = 未達標但仍有完整報告（非假成功）。",
    "notProbedTitle": "尚未探測",
    "notProbedDesc": "按「重新探測」開始唯讀就緒檢查。",
    "runCheck": "執行就緒檢查",
    "reportFormatError": "就緒報告格式錯誤",
    "checkFailedHttp": "就緒檢查失敗（{{status}}）",
    "itemAdminPassword": "管理員密碼強度",
    "itemAdminPasswordWeak": "{{count}} 個管理員仍標 must_change_password／不安全 初始化 — 上線前請更改",
    "itemAdminPasswordOk": "管理員帳戶無 初始化／弱密碼旗標",
    "itemAdminPasswordFix": "請到帳號安全或用戶頁更改管理員密碼",
    "itemListenBind": "控制平面監聽綁定",
    "itemListenBindPublic": "可能對外監聽（0.0.0.0/::）。建議 127.0.0.1 + 反向代理／防火牆",
    "itemListenBindLoopback": "建議 loopback 綁定（預設 127.0.0.1）",
    "itemDataDirPerms": "dataDir 權限",
    "itemDataDirWorldW": "請將 dataDir chmod 750（或 700），並 變更擁有者 給面板用戶",
    "itemDataDirOtherR": "建議 dataDir chmod 750，避免其他用戶讀取控制平面 JSON",
    "itemRustToolchain": "Rust 工具鏈",
    "itemWebBuildFix": "按「立即修復」建置 Web 介面（本機需有 monorepo），或執行：pnpm --filter ysk-server-web build",
    "itemWebBuildManual": "本機無 monorepo／無已打包 SPA，無法一鍵修復。請在有源碼的機器執行 pnpm --filter ysk-server-web build，再將 apps/web/dist/* 複製到 dataDir/web（例如 /var/lib/ysk-server/web），或設定 YSK_WEB_ROOT 後重啟控制面。",
    "itemStateStore": "控制平面狀態儲存",
    "itemStateStoreSqliteHint": "可選：YSK_STORE=sqlite 使用 WAL document store",
    "itemBackupFreshness": "最近完整備份",
    "itemBackupNone": "未記錄 last_backup_run — 請執行 backup all 或設定排程",
    "itemBackupFix": "ysk-server 全部備份 · 備份計畫 --install",
    "itemFleetSessions": "機群 代理 工作階段",
    "itemFleetNone": "單機可選：多邊緣需 agent run + 心跳",
    "itemFleetNoHb": "已註冊但無 心跳 — 請啟動邊緣 代理",
    "itemPdnsutil": "pdnsutil（PowerDNS）",
    "apachePort80Title": "Apache 與公開 80 埠",
    "apachePort80Detail": "Apache 正在監聽 :80，Nginx 未佔用公開 HTTP — 與「Nginx 作邊緣」拓撲衝突。",
    "apachePort80Both": "Apache 與 Nginx 同時出現在 :80 監聽 — 請將 Apache 改綁 127.0.0.1:8080。",
    "apachePort80Ok": "Apache 運作中但未獨佔公開 :80（拓撲可接受）。",
    "apachePort80Fix": "於安裝腳本已有 rebind；可停用 Apache 佔用 80 的 vhost，或 systemctl reload 後確認 ss -lntp。",
    "fixNow": "立即修復",
    "fixFailed": "修復失敗",
    "fixDone": "已修復 dataDir 權限（chmod 750）",
    "fixDoneWebUi": "已建置／安裝 Web 介面",
    "rootLabel": "超級用戶",
    "exportStarted": "正在下載 {{name}}",
    "techDetails": "技術詳情",
    "missingOwner": "未指定面板擁有者（套餐配額歸屬）",
    "notOsProvisioned": "待建立系統用戶",
    "isolationPendingOs": "與專案狀態相同：待建立系統用戶。請到隔離分頁建立系統用戶與主目錄。",
    "ondrejNone": "未偵測到 ondrej Launchpad PHP 來源",
    "ondrejFound": "發現與 packages.sury.org 衝突的舊 ondrej/php 來源：{{paths}}",
    "ondrejTitle": "PHP apt 來源（ondrej 殘留）",
    "systemctlActive": "服務運行中",
    "systemctlStatus": "服務狀態：{{status}}",
    "binInPath": "路徑中的 {{bin}}",
    "leftoverApache": "Apache 預設站殘留",
    "leftoverVsftpd": "vsftpd 單元失敗",
    "leftoverCli": "殘留舊 CLI",
    "leftoverNginx": "Nginx catch-all 缺失",
    "leftoverDovecot": "Dovecot TLS 憑證缺失",
    "leftoverOther": "主機殘留",
    "leftoverApply": "套用殘留修復",
    "isolationOwnerDegrades": "缺少擁有者會影響套餐配額歸屬 — 狀態為降級，不是就緒。"
  },
  "redis": {
    "neverExpire": "永不過期",
    "ttlSeconds": "{{ttl}} 秒",
    "ttlMinutes": "{{n}} 分鐘",
    "ttlHours": "{{n}} 小時",
    "ttlDays": "{{n}} 天",
    "typeString": "字串",
    "typeHash": "雜湊",
    "typeList": "列表",
    "typeSet": "集合",
    "typeZset": "有序集合",
    "keysLoadFailed": "無法載入鍵列表",
    "writeFailed": "寫入失敗",
    "saved": "已儲存",
    "deleted": "已刪除",
    "offline": "離線",
    "connections": "連線數",
    "totalKeys": "總鍵數",
    "writable": "寫入",
    "connected": "已連線",
    "notConnected": "未連線",
    "keys": "鍵",
    "selected": "選中",
    "softwareMissing": "Redis 所需軟件尚未安裝",
    "notConnectedTitle": "尚未連上 Redis",
    "installThenStart": "請先使用上方橫幅一鍵安裝 Redis，再啟動服務。",
    "installedNotConnected": "服務已安裝但未連上，請啟動服務後即可瀏覽鍵與內容。",
    "keysCountSuffix": "· {{n}} 個鍵",
    "searchPlaceholder": "搜尋鍵名，例如 user:* 或 *",
    "searchKeys": "搜尋鍵",
    "scanHint": "使用 SCAN，不是 KEYS。最多回傳 {{n}} 個鍵 — 大型庫勿用 *。",
    "scanCapped": "只顯示首 {{n}} 個符合項。",
    "rows": "{{n}} 筆",
    "content": "內容",
    "noMatchingKeys": "沒有符合的鍵",
    "dbEmpty": "資料庫 {{db}} 目前是空的。",
    "noMatchPattern": "沒有符合「{{pattern}}」的鍵。",
    "opsResult": "操作結果",
    "addStringKey": "新增字串鍵",
    "writeToDb": "寫入 Redis 資料庫 {{db}}（即時生效，請謹慎）",
    "keyName": "鍵名",
    "keyNameHint": "建議用冒號分層，例如 session:user:1",
    "ttlLabel": "過期時間（秒）",
    "ttlHint": "可留空表示永不過期",
    "m1": "1 分",
    "m5": "5 分",
    "h1": "1 時",
    "d1": "1 日",
    "d7": "7 日",
    "customSeconds": "自訂秒數",
    "stringValue": "字串值，會以 SET 寫入",
    "stringContent": "字串內容",
    "deleteKeyTitle": "刪除此鍵？",
    "deleteKeyDesc": "確定從資料庫 {{db}} 刪除「{{key}}」？此操作無法復原。",
    "installedOk": "Redis 已安裝",
    "startedOk": "Redis 已啟動",
    "memory": "記憶體",
    "addKey": "新增鍵",
    "dbLabel": "資料庫 {{i}}",
    "keysInDb": " · {{n}} 個鍵",
    "dbOptionKeys": "資料庫 {{i}} · {{n}} 個鍵",
    "dbOptionEmpty": "資料庫 {{i}} · 空",
    "dbRange": "共 {{n}} 個庫（0–{{max}}）。",
    "serviceLink": "在服務設定加減數量",
    "dbsWithData": "有資料的庫（快捷）",
    "keysShort": "{{k}} 鍵",
    "keyList": "鍵列表",
    "pickKey": "從左側選擇一個鍵，即可查看內容。",
    "ttlPrefix": "過期：{{ttl}}",
    "writeLiveHint": "此操作直接寫入執行中的 Redis，無法從面板一鍵還原。",
    "refPath": "參考：{{path}}",
    "dbEmptyMark": " · 空",
    "noRequirepass": "已開保護模式，但 requirepass 為空或未能讀取，目前沒有密碼。",
    "insecureShort": "不安全（無密碼）",
    "setRequirepass": "設定密碼",
    "generateRequirepass": "產生並套用密碼",
    "generateRequirepassTitle": "產生 Redis 密碼？",
    "generateRequirepassDesc": "會寫入 requirepass 並重啟 Redis。密碼只顯示一次。主機變更需要 EXECUTE。",
    "generateRequirepassDone": "已套用 Redis 密碼",
    "generatedOnce": "已產生密碼（只顯示一次）：{{password}}",
    "rdbOnlyLossHint": "AOF 已關、RDB 仍開：重啟或崩潰可能丟失最近寫入。",
    "dirDataContainer": "/data（容器）",
    "dirHostDefault": "/var/lib/redis",
    "dirDefaultInstance": "/var/lib/redis/default",
    "dirDataWarn": "/data 多用於容器；面板無法確認此主機是否存在該路徑。",
    "saveOff": "關閉快照（不建議）",
    "saveOffWarn": "空的 save 字串會關閉 RDB 快照。若 AOF 亦關，崩潰可能丟失全部資料。",
    "dirMoveWarn": "更改資料目錄不會搬移 dump.rdb／AOF。下次啟動會直接用新路徑。",
    "passwordUnset": "服務未設定",
    "passwordSetHidden": "已設定（不顯示）"
  },
  "resources": {
    "created": "已建立",
    "updated": "已更新",
    "deleted": "已刪除",
    "applyDone": "套用完成",
    "applyIncomplete": "套用未完成"
  },
  "roles": {
    "admin": "管理員",
    "operator": "操作員",
    "viewer": "檢視者",
    "agent": "代理人"
  },
  "runtime": {
    "probed": "已探測",
    "notProbed": "未探測",
    "probe": "探測",
    "read": "已讀取",
    "targetVersion": "目標版本",
    "nodeMissing": "Node.js 尚未安裝",
    "probeResult": "探測結果",
    "readonly": "唯讀",
    "installNode": "安裝 Node.js",
    "needExecuteAdmin": "需系統變更權限與管理員",
    "nodeMajor": "Node 主版本",
    "nodeMajorHint": "LTS 建議 20 或 22；與專案運行時對齊",
    "installedNode": "已安裝 Node {{version}}",
    "installPm2": "安裝 PM2",
    "installPm2Desc": "一鍵 npm install -g pm2（專案進程管理）。需先有 Node.js。",
    "installPm2Btn": "一鍵安裝 PM2",
    "reinstallPm2": "重新安裝 PM2",
    "installedPm2": "已安裝 PM2",
    "pm2Status": "PM2 狀態",
    "pm2Ready": "已就緒",
    "pm2MissingShort": "未安裝",
    "pm2NeedNodeFirst": "請先安裝 Node.js，再安裝 PM2。",
    "pm2InstallHint": "以 root／系統變更權限執行 npm -g 安裝；安裝後專案可選 PM2 部署。",
    "pm2ReadyHint": "PM2 已在 PATH；專案部署可使用 PM2 進程模式。",
    "opsResult": "操作結果",
    "unlimited": "無限",
    "zeroUnlimited": "0 無限",
    "m24": "24 分",
    "h1": "1 時",
    "d1": "1 日",
    "d7": "7 日",
    "phpIniLoadFailed": "載入 php.ini 失敗",
    "loaded": "已載入",
    "default": "預設",
    "phpMissing": "PHP 尚未安裝",
    "overview": "總覽",
    "fpmSites": "FPM / 站點",
    "tools": "工具",
    "about": "說明",
    "installPhp": "安裝 PHP",
    "versionAlreadyInstalled": "版本 {{version}} 已在主機上，無需再安裝",
    "installedVersionBtn": "已安裝 {{version}}",
    "newerVersionAvailable": "目前 {{current}}；面板支援更新版本：{{newer}}（可選後安裝）",
    "switchToNewer": "改選 {{version}}",
    "installedVersionsHint": "已偵測：{{list}}",
    "phpInstallHint": "需系統變更權限與管理員；可勾選常用擴充（套件名隨版本變：php8.2-mysql、php8.3-gd…）",
    "phpVersion": "PHP 版本",
    "phpExtHint": "選擇要一併安裝的擴充。不同 PHP 版本對應不同 apt 套件名（例：php8.2-mysql ≠ php8.3-mysql）。GD 即舊稱 gd2。",
    "phpExtSelect": "PHP 擴充 / 插件",
    "phpExtSelectHint": "套件會裝成 php{{version}}-…；核心 FPM/CLI 必裝；已裝項目不會出現在勾選清單",
    "phpExtRequired": "必裝（核心）",
    "phpExtRecommended": "常用預設",
    "phpExtSelectAll": "全選擴充",
    "phpExtCoreOnly": "只裝核心",
    "phpExtSearch": "搜尋擴充（mysql、gd、redis…）",
    "phpExtEmpty": "無符合的擴充",
    "pluginsSelect": "常用工具 / 插件",
    "pluginsSelectHint": "勾選後與執行環境一併安裝（例如 Node 的 PM2、Python 的 Poetry）",
    "pluginsSearch": "搜尋工具（pm2、poetry、maven…）",
    "pluginsEmpty": "無符合的工具",
    "pluginsRecommended": "常用預設",
    "pluginsSelectAll": "全選可安裝",
    "pluginsNone": "不安裝工具",
    "pluginsInstallNote": "勾選後按「安裝選定工具」。首次裝 runtime 時可連工具一齊裝；已裝 runtime 請只按上方按鈕。",
    "installPluginsOnly": "安裝選定工具（{{version}} 已有）",
    "installExtOnly": "安裝選定擴充（PHP {{version}} 已有）",
    "pluginAlreadyOnHost": "主機已有",
    "installAddonsOnly": "安裝選定插件／擴充（{{version}} 已有）",
    "remoteNewerHint": "已裝 {{current}} · 上游最新 {{remote}}{{source}}",
    "installedPhp": "已安裝 PHP {{version}}",
    "nextSteps": "下一步",
    "suggestedFlow": "建議流程",
    "globalPhpIni": "全域 php.ini",
    "globalPhpIniDesc": "每一列一個設定值（表單）。寫入管理檔後可「套用到系統」或於專案部署注入 程序池",
    "managePath": "管理檔路徑",
    "loading": "載入中",
    "probing": "探測中",
    "noBinaryPath": "沒有二進位路徑",
    "hostDefaultError": "主機預設不可用",
    "pm2Tick": "{{at}} · 專案 {{projects}} · PM2 {{pm2}} · 運行 {{run}}",
    "cannotLoadSettings": "無法載入設定表",
    "reloadFailed": "重新載入失敗",
    "sensitive": "敏感設定，請小心",
    "on": "開啟",
    "off": "關閉",
    "customNumber": "自訂數字",
    "customExample": "自訂，例 768M",
    "advancedExtra": "進階：額外鍵與 raw",
    "advancedExtraDesc": "catalog 未列的指令；每行一項：名稱=值；raw 直接附加到 ini 尾",
    "extraDirectives": "額外指令",
    "extraDirectivesHint": "每行一項：名稱=值（非上方表單已有的鍵）",
    "rawAppend": "直接附加到 ini 檔末尾",
    "phpIniSaved": "已儲存 php.ini",
    "appliedSystem": "已套用到系統",
    "demoVhost": "系統工具：示範 vhost / Pool",
    "demoVhostDesc": "進階／除錯用；日常開站請到 專案 → 部署",
    "domain": "網域",
    "domainRequired": "套用 vhost 前請填寫有效網域。",
    "vhostServerName": "虛擬主機 server_name",
    "poolName": "Pool 名稱",
    "poolNameHint": "手填識別名（示範）；專案路徑會用 ysks_* 用戶",
    "enableReload": "啟用並重載服務",
    "enableReloadHint": "需要系統變更權限；關閉則只寫管理檔",
    "applyFailed": "套用失敗",
    "phpVhostApplied": "已套用 PHP vhost / 程序池",
    "composerTools": "Composer / WP-命令列 / 模組",
    "composerToolsDesc": "即時探測 路徑 上工具與 php -m（唯讀）",
    "toolsProbed": "已探測工具",
    "notFound": "未找到",
    "available": "可用",
    "moduleCount": "模組數",
    "installNodeV": "安裝 Node {{v}}",
    "installPhpV": "安裝 PHP {{v}}",
    "installPythonV": "安裝 Python {{v}}",
    "installGoV": "安裝 Go {{v}}",
    "installRustV": "安裝 Rust {{v}}",
    "pythonMissing": "Python 尚未安裝",
    "goMissing": "Go 尚未安裝",
    "rustMissing": "Rust／cargo 尚未安裝",
    "tuneLoadFailed": "載入調校失敗",
    "availableCount": "{{n}} 可用",
    "notDetected": "未探測到",
    "binaryPath": "二進位路徑",
    "targetMissing": "目標版本未安裝",
    "targetMissingHint": "目標 {{version}} 不在本機。請改綁已安裝的版本，或先安裝此版本。",
    "target": "目標",
    "tune": "調校",
    "loadedShort": "已載",
    "host": "主機",
    "tabOverviewInstall": "總覽",
    "tabTune": "執行調校",
    "probeReadonlyInstall": "唯讀 · 安裝成功後請再探測確認",
    "hostDefault": "主機預設",
    "panelSupport": "面板支援",
    "ready": "已就緒",
    "notDetectedYet": "尚未偵測到",
    "install": "安裝",
    "installHint": "需系統變更權限與管理員；安裝 toolchain ≠ 專案已對外",
    "panelTune": "面板調校",
    "panelTuneDesc": "寫入管理檔；部署時注入 env",
    "bindVersion": "綁定版本",
    "onePerRow": "每列一項設定",
    "zeroAll": "0 全",
    "custom": "自訂",
    "extraEnv": "額外環境變數",
    "extraEnvHint": "每行一項：名稱=值",
    "customEnv": "自訂 env",
    "envPreview": "Env 預覽",
    "envPreviewDesc": "儲存後／上次載入的合併結果",
    "unsupported": "不支援",
    "tuneSaved": "已儲存調校",
    "nodeDetectedHint": "主機上已偵測到 Node；重裝會依權限執行，可能覆蓋現有安裝。",
    "nodeProbeAfter": "安裝完成後請再「重新探測」確認路徑與版本。",
    "installNodeVBtn": "安裝 Node {{version}}",
    "installPhpVBtn": "安裝 PHP {{version}}",
    "phpIniSteps1": "在 php.ini 分頁設計全域數值並儲存",
    "phpIniSteps2": "可選：套用到系統（寫入 /etc/php/…/conf.d，需要管理員權限）",
    "phpIniSteps3": "專案部署時會把合併後 ini 寫入 FPM 程序池 的 php_admin_*",
    "phpIniSteps4": "專案可再覆寫個別鍵（專案 → 部署）",
    "phpIniNote": "變更會先存到面板 dataDir；「套用到系統」才複製到 /etc/php 並 重新載入 FPM。專案 程序池 會在部署時注入 php_admin_value。",
    "phpIniLoading": "正在讀取 php.ini 設定表單…",
    "phpIniEmpty": "catalog 為空 — 請重新載入或確認 介面 已啟動。",
    "reloadForm": "重新載入表單",
    "savePhpIni": "儲存 php.ini",
    "prodUseProjects": "生產站請用「專案」路徑",
    "prodPathDesc": "：建立 PHP 專案 → 部署／套用 FPM（程序池 = 專案 Linux 用戶 + 隔離 主目錄）。本頁是",
    "systemDemo": "系統級 demo／工具",
    "demoNotBind": "（手填 程序池 名），不會自動綁專案隔離。php.ini 全域預設請用「php.ini」分頁。",
    "applyOkWritten": "套用成功 = 檔案已寫入（已寫入）。生產請優先用專案部署，確保 用戶=專案 Linux 用戶。",
    "applyPhpVhost": "套用 PHP vhost / 程序池",
    "applyPhpVhostTitle": "需確認 — 會寫入 pool／vhost 檔",
    "applyPhpVhostDesc": "將寫入 {{pool}} 程序池與 {{domain}} vhost。重載服務：{{reload}}。",
    "reprobeTools": "重新探測工具",
    "pressReprobe": "按「重新探測工具」載入",
    "installNodeLabel": "安裝 Node {{v}}",
    "installPhpLabel": "安裝 PHP {{v}}",
    "installPythonLabel": "安裝 Python {{v}}",
    "installGoLabel": "安裝 Go {{v}}",
    "installRustLabel": "安裝 Rust {{v}}",
    "readShort": "已讀",
    "pressReprobeHost": "按「重新探測」載入主機版本矩陣",
    "installScriptNote": "寫入安裝腳本後，有權限才會真正執行。調校在「執行調校」分頁；重新部署專案後才進行程。",
    "envNote": "Node：max-old-space-size 等會合成 NODE_OPTIONS。Go／Python／Rust 對應官方環境變數。",
    "saveTune": "儲存調校",
    "pressReprobeLoad": "按「重新探測工具」載入",
    "installJavaLabel": "安裝／更新 OpenJDK",
    "installKotlinLabel": "安裝／更新 Kotlin",
    "installBunLabel": "安裝／更新 Bun",
    "javaMissing": "未偵測到 Java（OpenJDK）",
    "kotlinMissing": "未偵測到 Kotlin 編譯器",
    "bunMissing": "未偵測到 Bun",
    "phpIniCatalog": {
      "groups": {
        "resource": {
          "title": "資源限制",
          "description": "記憶體、執行時間與輸入限制"
        },
        "upload": {
          "title": "上傳與 POST",
          "description": "檔案上傳與 POST 體積"
        },
        "session": {
          "title": "工作階段",
          "description": "工作階段儲存與 cookie"
        },
        "error": {
          "title": "錯誤與日誌",
          "description": "顯示錯誤、記錄與報告等級"
        },
        "opcache": {
          "title": "OPcache",
          "description": "位元碼快取"
        },
        "security": {
          "title": "安全與路徑",
          "description": "遠端檔案、暴露資訊、函式禁用"
        },
        "locale": {
          "title": "時區與字元"
        },
        "misc": {
          "title": "其他常用"
        }
      },
      "fields": {
        "memory_limit": {
          "label": "記憶體上限",
          "hint": "例如 128M、256M、512M、-1（無限）"
        },
        "max_execution_time": {
          "label": "最長執行時間",
          "hint": "秒；0 = 無限（命令列）"
        },
        "max_input_time": {
          "label": "最長輸入時間",
          "hint": "秒；解析請求的最長時間"
        },
        "max_input_vars": {
          "label": "最多輸入變數",
          "hint": "$_GET / $_POST / $_COOKIE 變數上限"
        },
        "max_input_nesting_level": {
          "label": "輸入巢狀層級"
        },
        "file_uploads": {
          "label": "允許上傳檔案"
        },
        "upload_max_filesize": {
          "label": "單一檔案上限"
        },
        "post_max_size": {
          "label": "POST 體積上限",
          "hint": "應 ≥ 單一檔案上限"
        },
        "max_file_uploads": {
          "label": "單次最多檔案數"
        },
        "session_save_handler": {
          "label": "工作階段儲存方式"
        },
        "session_gc_maxlifetime": {
          "label": "工作階段存活秒數",
          "hint": "秒"
        },
        "session_cookie_httponly": {
          "label": "Cookie 僅 HTTP（HttpOnly）"
        },
        "session_cookie_secure": {
          "label": "Cookie 僅 HTTPS（Secure）",
          "hint": "HTTPS 站點建議開啟"
        },
        "session_use_strict_mode": {
          "label": "工作階段嚴格模式"
        },
        "display_errors": {
          "label": "顯示錯誤（畫面）",
          "hint": "生產環境請關閉"
        },
        "display_startup_errors": {
          "label": "顯示啟動錯誤"
        },
        "log_errors": {
          "label": "記錄錯誤到日誌"
        },
        "error_reporting": {
          "label": "錯誤報告等級",
          "hint": "或整數如 32767"
        },
        "error_log": {
          "label": "錯誤日誌路徑",
          "hint": "留空用系統預設；可填絕對路徑"
        },
        "opcache_enable": {
          "label": "啟用 OPcache"
        },
        "opcache_enable_cli": {
          "label": "命令列啟用 OPcache"
        },
        "opcache_memory_consumption": {
          "label": "OPcache 記憶體（MB）",
          "hint": "單位：MB"
        },
        "opcache_interned_strings_buffer": {
          "label": "字串 intern 緩衝（MB）"
        },
        "opcache_max_accelerated_files": {
          "label": "最多快取檔案數"
        },
        "opcache_validate_timestamps": {
          "label": "檢查檔案變更",
          "hint": "生產可關並手動重載"
        },
        "opcache_revalidate_freq": {
          "label": "檢查間隔（秒）"
        },
        "allow_url_fopen": {
          "label": "允許 URL 當檔案開啟"
        },
        "allow_url_include": {
          "label": "允許 URL include"
        },
        "expose_php": {
          "label": "暴露 PHP 版本標頭"
        },
        "open_basedir": {
          "label": "open_basedir 路徑限制",
          "hint": "留空不限制；多路徑用 : 分隔"
        },
        "disable_functions": {
          "label": "禁用函式列表",
          "hint": "逗號分隔；過嚴可能弄壞套件"
        },
        "date_timezone": {
          "label": "時區"
        },
        "default_charset": {
          "label": "預設字元集"
        },
        "short_open_tag": {
          "label": "允許短開標籤（<?）"
        },
        "realpath_cache_size": {
          "label": "真實路徑快取大小"
        },
        "realpath_cache_ttl": {
          "label": "真實路徑快取秒數"
        },
        "cgi_fix_redirect": {
          "label": "CGI 路徑修正重新導向"
        }
      },
      "options": {
        "sessionFiles": "檔案",
        "sessionRedis": "Redis",
        "sessionMemcached": "Memcached",
        "errorReportingProd": "生產建議（E_ALL 除 deprecated/strict）",
        "errorReportingAll": "全部（E_ALL）",
        "errorReportingQuiet": "較安靜（除 NOTICE/DEPRECATED）",
        "errorReportingMinimal": "僅錯誤／警告／剖析",
        "errorReportingOff": "關閉（0）",
        "openBasedirNone": "不限制（空）",
        "openBasedirVarWww": "/var/www",
        "openBasedirHome": "/home",
        "openBasedirWwwTmp": "/var/www 與 /tmp",
        "errorLogDefault": "系統預設（空）",
        "errorLogPhp": "/var/log/php/error.log",
        "errorLogFpm": "FPM 日誌路徑",
        "errorLogSyslog": "系統日誌"
      },
      "disableFn": {
        "groups": {
          "process": "程序執行",
          "dynamic": "動態載入",
          "info": "資訊洩露",
          "filesystem": "檔案系統",
          "network": "網絡／其他"
        },
        "extraHint": "清單外（主機既有）",
        "customPlaceholder": "其他函式名…",
        "searchPlaceholder": "搜尋函式…",
        "emptyText": "無符合項目"
      }
    },
    "pluginsAvailableTitle": "可安裝工具",
    "pluginsInstalledTitle": "主機已安裝",
    "pluginsInstalledHint": "已在 PATH 偵測到；不再出現於安裝勾選。可卸載（best-effort）。",
    "pluginsAllInstalled": "目錄內工具均已在主機；如需新工具請先卸載或等待目錄更新。",
    "pluginStatusInstalled": "已安裝",
    "pluginUninstall": "卸載",
    "pluginUninstallConfirmTitle": "卸載工具？",
    "pluginUninstallConfirm": "將從主機移除「{{name}}」（npm/apt/pip 等對應方式）。如有依賴此工具的服務，請先停用。",
    "pluginUninstalled": "已卸載 {{name}}",
    "pluginUninstallFailed": "卸載 {{name}} 失敗",
    "pluginUninstallBlocked": "面板無權執行卸載（需要 root 與 EXECUTE）",
    "phpExtAlreadyOnHost": "已安裝擴充",
    "pluginsInstallSelected": "安裝選定工具 ({{n}})",
    "pluginInstallOk": "已安裝 {{n}} 個工具",
    "pluginInstallFailed": "工具安裝失敗",
    "phpExtUninstallHint": "可卸載非核心擴充（apt remove；不會卸 FPM/CLI）",
    "phpExtUninstallConfirmTitle": "卸載 PHP 擴充？",
    "phpExtUninstallConfirm": "將 apt remove「{{pkg}}」（{{name}}）。核心 FPM/CLI 不會卸載。",
    "phpExtOpsTitle": "擴充操作結果",
    "pluginsOpsTitle": "工具操作結果",
    "pluginBatchUninstall": "卸載選定 ({{n}})",
    "pluginBatchUninstallConfirm": "將卸載 {{n}} 個已選工具。",
    "pluginBatchUninstalled": "已卸載 {{n}} 個工具",
    "pluginBatchLabel": "選定工具",
    "addonsInstallAbove": "配套／擴充請用上方「安裝選定…」；此按鈕只負責裝／確認 runtime 版本。",
    "phpExtInstallSelected": "安裝選定擴充 ({{n}})",
    "phpExtInstallNote": "勾選後按「安裝選定擴充」。首次裝 PHP 用下方「安裝 PHP」一併裝核心+擴充；已裝則只顯示擴充按鈕。",
    "phpExtInstallNoteInstalled": "勾選擴充後按「安裝選定擴充」。此版本已在主機上，無需再裝 runtime。",
    "phpExtInstallNoteFirst": "尚未安裝 PHP {{version}}：勾選擴充後按下方「安裝 PHP {{version}}」一併裝核心+擴充（只有一個安裝按鈕）。",
    "installPhpWithExt": "安裝 PHP {{version}}（含選定擴充）",
    "installLogTitle": "安裝日誌（即時）",
    "installLogStreaming": "串流中…",
    "installLogDone": "已結束",
    "installLogWaiting": "等待 server 輸出…",
    "activeDefault": "預設",
    "switchDefaultBtn": "設為主機預設 {{version}}",
    "switchDefaultHint": "此版本已安裝但不是目前預設。可切換而無需重裝；其他版本會保留。",
    "installedNotActive": "{{version}} 已安裝（非預設）",
    "multiVersionHint": "Go／Rust 可同時保留多個版本：先安裝缺少的，再切換預設決定 PATH。",
    "tabProcesses": "進程",
    "pm2": {
      "title": "PM2 程序列",
      "desc": "PM2 是進程管理器（本頁只讀 panel 用戶的程序清單）。即時更新用 SSE（伺服器推送事件），約每 2 秒重新整理。",
      "glossary": "PM2＝進程管理器；SSE＝即時日誌／清單串流。",
      "live": "即時",
      "installed": "PM2 已裝",
      "version": "pm2 版本",
      "path": "pm2 路徑",
      "counts": "程序",
      "countsValue": "共 {{n}} · 運行 {{run}} · 停止 {{stop}} · 錯誤 {{err}}",
      "updatedAt": "上次重新整理",
      "notInstalled": "PATH 上未找到 PM2。",
      "installHint": "在「總覽 / 安裝」裝 companion plugin",
      "tableTitle": "程序列表",
      "yskOnly": "只顯示 YSK（ysk-*）",
      "filterPh": "篩選名稱 / 腳本 / pid…",
      "emptyTitle": "PM2 不可用",
      "emptyDesc": "請先為 Node 安裝 pm2 plugin，再重新整理。",
      "noApps": "沒有程序",
      "noAppsDesc": "panel 用戶下沒有 PM2 程序。專案多數用 systemd（見上方 YSK 列表）。",
      "streamLog": "即時 tick 日誌",
      "streamLogDesc": "每個 SSE tick 一行（不是程序 stdout）。",
      "col": {
        "name": "名稱",
        "status": "狀態",
        "mem": "記憶體",
        "restarts": "重啟",
        "uptime": "運行時間",
        "mode": "模式",
        "script": "腳本",
        "interpreter": "解譯器",
        "user": "用戶",
        "unit": "單元",
        "runtime": "執行環境",
        "pid": "PID"
      },
      "projectsTitle": "YSK 專案進程",
      "projectsDesc": "面板專案對應的 systemd unit（預設部署路徑，不是 PM2）。",
      "projectsCount": "YSK 專案數",
      "noProjects": "沒有專案",
      "noProjectsDesc": "面板未有 node/bun 專案，或未建 OS 用戶。",
      "pm2OnlyDesc": "只顯示 panel 用戶用 PM2 啟動的程序。systemd 部署見上方專案表。",
      "startupTitle": "開機自動啟動",
      "startupDesc": "把 PM2 登記為開機啟動，主機重啟後程序會再起來。",
      "systemdActionsHint": "systemd 操作需 root 與 YSK_EXECUTE。",
      "startupOk": "已登記開機啟動。{{notes}}",
      "startupFail": "無法登記開機啟動。{{notes}}",
      "actionOk": "{{action}} {{name}} — {{notes}}",
      "actionFail": "無法 {{action}} {{name}}。{{notes}}",
      "startupReady": "就緒",
      "startupReadyYes": "是",
      "startupReadyNo": "否",
      "startupUnit": "單元",
      "startupDump": "傾印",
      "startupInstall": "安裝開機啟動",
      "startupSave": "儲存程序清單",
      "actRestart": "重啟",
      "actStop": "停止",
      "actReload": "重新載入",
      "pm2ActionsHint": "PM2 操作只作用於面板用戶的程序清單。",
      "noteUnparsed": "無法解析 PM2 list（輸出空白或格式不符）。",
      "notePanelUserOnly": "PM2 list 只顯示面板行程用戶的程序。",
      "noteProjectUnits": "列出 {{n}} 個 YSK 專案單元"
    },
    "recordedInstalled": "記錄已裝 {{v}}",
    "remoteSourceSuffix": "（{{source}}）",
    "nodePathYskMissingTitle": "受管 Node 路徑未就緒",
    "nodePathYskMissing": "版本 {{version}} 的 YSK 受管 Node 尚未就緒。請重新探測或重新安裝。",
    "managedPathMissingTitle": "受管 {{name}} 路徑未就緒",
    "managedPathMissing": "版本 {{version}} 的 YSK 受管 {{name}} 尚未就緒。請重新探測或重新安裝。",
    "nodePathUnsafeTitle": "Node 路徑不安全",
    "nodePathUnsafe": "目前路徑 {{path}} 不在受管目錄；專案部署可能失敗。",
    "recordedButProbeEmpty": "控制面曾記錄安裝 {{v}}，但主機探測未見執行檔。不算已安裝——請「重新探測」或重新安裝。",
    "installedLabel": "已安裝",
    "installedHint": "以主機探測為準，不是控制面紀錄",
    "targetHint": "此頁將安裝或釘選的版本",
    "panelDefaultHint": "新建專案會優先使用面板預設 {{version}}（主機 CLI 可能不同）。",
    "rebuildFromHost": "以主機為準重建記錄",
    "rebuiltFromHost": "已按主機探測更新記錄",
    "tabTuning": "調校",
    "versionPlaceholder": "載入最新版本中，或手動輸入",
    "pluginsBundleWithRuntime": "選定工具會隨下方「安裝 runtime」一併安裝（只有一個安裝按鈕）。",
    "tabSoftware": "軟件",
    "overviewSoftwareHint": "安裝版本、設定主機預設與解除安裝請到",
    "versionReadyTitle": "{{name}} {{version}} 已就緒",
    "versionReadyHint": "可在此分頁設為主機預設或解除安裝。",
    "softwareVersionTitle": "版本 {{version}}",
    "setHostDefault": "設為主機預設",
    "alreadyHostDefault": "{{version}} 已是主機預設",
    "setHostDefaultConfirmTitle": "將主機預設設為 {{version}}？",
    "setHostDefaultConfirm": "系統 CLI（node／go…）將指向 {{version}}。已指定版本的專案不受影響。",
    "hostDefaultUnsupported": "此執行環境暫不支援在面板切換主機預設。請使用安裝或專案層級版本釘選。",
    "versionInventory": "版本庫",
    "versionInventoryDesc": "面板支援的全部版本。點選列可安裝或設為預設。",
    "selectToInstall": "選取",
    "advancedFeatureUninstall": "進階：移除整個 {{name}} 堆疊…",
    "advancedFeatureUninstallHint": "會解除面板管理的全部 {{name}} 版本（Node 會連 PM2 等配套），有影響預覽與雙重確認。可先用上方按版本解除。",
    "probeReadonly": "主機探測（唯讀）",
    "uninstallVersion": "解除安裝 {{version}}",
    "uninstallVersionTitle": "解除安裝 {{version}}？",
    "uninstallVersionConfirm": "將移除此主機上面板管理的 {{name}} {{version}}（YSK 安裝目錄或 rustup toolchain）。若是主機預設，會清除對應 CLI 符號連結。已釘其他版本的專案不受影響。",
    "uninstallVersionDone": "已解除安裝 {{version}}",
    "uninstallVersionUnsupported": "此執行環境暫不支援按版本解除安裝。",
    "setPanelDefault": "設為面板預設",
    "alreadyPanelDefault": "面板預設 · {{version}}",
    "panelDefaultSaved": "已將面板預設設為 {{version}}",
    "panelDefaultExplain": "面板預設 = 新建站點／專案首選版本。主機預設 = 系統 CLI（php／python／node…）。",
    "stackReadyTitle": "{{name}} 堆疊已就緒",
    "softwareIntro": "管理已安裝版本、主機 CLI 預設，以及新建專案優先使用的版本。",
    "panelDefaultLabel": "面板預設",
    "panelDefaultNone": "未設定",
    "versionsTitle": "版本",
    "versionsDesc": "點選版本。列上可安裝、設主機 CLI 或設面板預設。",
    "roleHost": "主機",
    "rolePanel": "面板",
    "rowUninstall": "解除此版本",
    "moreActions": "更多操作",
    "selectedVersion": "已選 · {{version}}",
    "selectedInstalledDesc": "下方可管理配套工具。不再需要此版本時先解除。",
    "selectedMissingDesc": "將此版本安裝到主機。安裝後可再加配套工具。",
    "path": "路徑",
    "fullVersion": "完整版本",
    "useListForDefaults": "要改主機／面板預設或移除此版本，請用上方列表。",
    "alreadyHostDefaultShort": "主機預設",
    "installRecordedCta": "前往軟件分頁安裝 {{v}}",
    "needsInstall": "需安裝",
    "needsInstallHint": "此版本未在本機。請先安裝，或改選已安裝的版本。",
    "unitBytes": "位元組",
    "headerSizeKb": "{{n}} KB",
    "phpIniChipEmpty": "尚未載入 — 請開啟 php.ini 分頁",
    "phpFpmService": "PHP-FPM",
    "phpFpmServiceDesc": "啟動、停止、重載或重啟 PHP-FPM 單元",
    "rustupDefaultMissingTitle": "尚未設定 rustup 預設 toolchain",
    "rustupDefaultMissing": "rustup 未設定預設 toolchain。請到「軟件」分頁設為預設（建議 stable）。",
    "rustupDefaultMissingShort": "未設預設 toolchain",
    "rustupSetDefaultHint": "設定預設 toolchain",
    "uninstalledCountHint": "{{n}} 個版本本機未安裝"
  },
  "search": {
    "placeholder": "搜尋頁面與資源…",
    "aria": "全域搜尋",
    "results": "搜尋結果",
    "loading": "搜尋中…",
    "noResults": "沒有符合項目",
    "kinds": {
      "page": "頁面",
      "project": "專案",
      "email": "電郵",
      "mailbox": "郵箱",
      "ssl": "SSL",
      "dns": "域名系統",
      "nginx": "Nginx",
      "share": "分享",
      "ftp": "FTP",
      "mysql": "MySQL",
      "postgres": "PostgreSQL",
      "redis": "Redis",
      "cron": "Cron",
      "user": "使用者",
      "other": "其他"
    },
    "alias": {
      "ssl": "證書 cert certificate 憑證 certs",
      "projects": "項目 專案 project sites"
    }
  },
  "security": {
    "title": "帳號安全",
    "allowlist": "工具 允許清單",
    "llmUntrusted": "LLM 輸出不可直接執行",
    "pending": "待審批",
    "runSysInfo": "執行 sys.info",
    "none": "無待審批",
    "pillPending": "{{count}} 待批",
    "pillReady": "就緒",
    "pill2faOff": "雙重驗證 未啟用",
    "stat2fa": "2FA",
    "statApi": "API 金鑰",
    "statApiSessions": "API 工作階段",
    "revokeOtherTitle": "登出另外 {{n}} 個工作階段",
    "statSsh": "SSH",
    "statSshValue": "金鑰 {{keys}} · 已授權 {{auth}}",
    "statSshHint": "出站身份／已授權登入金鑰",
    "statPending": "待批",
    "on": "開",
    "off": "關",
    "output": "輸出",
    "tabAccount": "我的安全",
    "tabApiKeys": "API 金鑰",
    "tabSsh": "SSH",
    "tabApprovals": "審批",
    "tabAllowlist": "工具權限",
    "apiTokenOnce": "API 權杖（只顯示一次）：",
    "copiedToken": "已複製 權杖",
    "totpTitle": "雙重驗證 (TOTP)",
    "totpStatus": "狀態：",
    "totpEnabled": "已啟用",
    "totpEnrolledUnconfirmed": "進行中 — 請掃碼並確認",
    "totpNotSet": "未設定",
    "totpLead": "登入時需 App 6 位動態碼。",
    "totpWhy1": "即使密碼洩露，沒有手機／App 動態碼都登入不到",
    "totpWhy2": "高危操作可再要求一次 TOTP 確認（step-up）",
    "totpWhy3": "支援 Google Authenticator、Authy、NordPass、1Password 等",
    "totpAppsHint": "建議 App：Google Authenticator、Authy、Microsoft Authenticator、NordPass、1Password。",
    "totpStepsLabel": "設定步驟",
    "totpStepReauth": "驗證密碼",
    "totpStepScan": "掃 QR／輸入密鑰",
    "totpStepConfirm": "確認 6 位碼",
    "totpStepBackup": "保存恢復碼",
    "totpScanTitle": "掃描 QR Code",
    "totpScanHint": "打開驗證器 App → 新增帳戶 → 掃描此 QR。",
    "totpManualTitle": "或手動輸入密鑰",
    "totpManualHint": "無法掃碼時，在 App 選擇「手動輸入」並貼上以下 Base32 密鑰。",
    "totpShowOtpauth": "顯示 otpauth:// 連結（進階）",
    "totpQrAlt": "TOTP 設定 QR Code",
    "totpQrFailed": "無法產生 QR，請用下方密鑰手動加入",
    "totpSecretCopied": "已複製密鑰",
    "hideSecret": "隱藏密鑰",
    "showSecret": "顯示密鑰",
    "totpEnabledDesc": "已啟用。",
    "totpRecoveryRemaining": "恢復碼剩餘 {{n}}",
    "totpResetSummary": "重設或關閉 2FA…",
    "totpResetHint": "重設會產生新 QR／密鑰（舊 App 條目失效）。關閉需輸入目前 App 碼或恢復碼。",
    "totpDisableCodeHint": "App 6 位碼或恢復碼",
    "disable2fa": "關閉 2FA",
    "totpDisabledOk": "已關閉雙重驗證",
    "reauthPassword": "重新驗證密碼",
    "reauthPasswordHint": "開始／重設 雙重驗證 需要再輸入密碼（防 工作階段 被盜）",
    "reauthPasswordRequired": "請先輸入登入密碼",
    "needCurrentPassword": "請先輸入目前密碼",
    "passwordMin8": "新密碼至少 8 個字元",
    "totpSecretGenerated": "已產生密鑰 — 請掃 QR 或複製密鑰，再輸入 App 6 位碼確認",
    "reset2fa": "重新設定 雙重驗證",
    "start2fa": "開始設定 雙重驗證",
    "secretLabel": "密鑰：",
    "confirmCode": "App 顯示的 6 位碼",
    "confirmCodeHint": "掃碼後，輸入驗證器 App 而家顯示的 6 位數字以確認綁定。",
    "confirmCodeInvalid": "請輸入 6 位數字驗證碼",
    "totpEnabledSaveCodes": "雙重驗證已啟用 — 請立即保存下方恢復碼（只顯示一次）",
    "confirmEnable": "確認啟用",
    "recoveryCodesHint": "恢復碼只顯示一次！請離線保存。每個碼只能用一次；手機丟失時可用恢復碼登入。",
    "copiedRecoveryCodes": "已複製恢復碼",
    "downloadRecovery": "下載 .txt",
    "recoveryDownloaded": "已下載恢復碼檔案",
    "copyAll": "複製全部",
    "savedClose": "我已保存，完成",
    "sessionsTitle": "工作階段",
    "sessionsDesc": "",
    "revokeOtherSessions": "登出其他裝置",
    "revokedOtherSessions": "已登出 {{count}} 個其他工作階段",
    "noSessions": "沒有使用中的工作階段",
    "currentSession": "本機",
    "revoke": "登出",
    "passkeyTitle": "密鑰/WebAuthn",
    "passkeyDesc": "",
    "passkeyRegistered": "Passkey 已登記",
    "webauthnFailed": "WebAuthn 失敗",
    "webauthnUnsupported": "瀏覽器未暴露 WebAuthn API。Brave／Chrome／Firefox 請確認非特殊模式；仍可用 NordPass 等 manager，並用「域名 + HTTPS」開面板。",
    "webauthnInsecureContext": "而家頁面不是安全連線（{{origin}}）。瀏覽器規格要求 HTTPS 或 localhost 先可用 Passkey——同是否 Brave／NordPass 無關。請改用 https://你的域名 再開。",
    "webauthnIpHost": "而家用 IP 開面板（{{origin}}）。WebAuthn 規格不接受 IP 做 RP ID，Brave／NordPass 都會失敗。請綁域名 + HTTPS（例如 https://panel.example.com）再試。",
    "webauthnEnvOk": "Passkey 可用（{{origin}}）",
    "webauthnEnvCurrent": "目前頁面：{{origin}}",
    "webauthnCancelled": "已取消或逾時。請再試一次。",
    "webauthnUnavailableHint": "Passkey 需 HTTPS + 域名。",
    "registerPasskey": "登記 Passkey",
    "noPasskey": "無 passkey",
    "passkeyVerifyOk": "Passkey 驗證成功（已 step-up）",
    "verifyFailed": "驗證失敗",
    "verifyWithPasskey": "用 Passkey 驗證 (step-up)",
    "passkeyHint": "高危 step-up 用；需 HTTPS + 域名。",
    "devicesTitle": "裝置／備份",
    "devicesDesc": "",
    "viewTrustedDevices": "查看信任裝置",
    "trustedDevicesCount": "信任裝置：{{count}} 個",
    "revokeAllDevices": "撤銷全部裝置",
    "revokedAllDevices": "已撤銷全部信任裝置",
    "export2faBackup": "匯出 雙重驗證 加密備份",
    "fail2banSnippetMsg": "fail2ban 片段：{{written}} — {{notes}}",
    "generatefail2ban": "產生 fail2ban 片段",
    "generateFail2ban": "產生 fail2ban 片段",
    "adminPolicyTitle": "管理員 2FA 政策",
    "adminPolicyDesc": "",
    "requireAdmin2fa": "要求管理員啟用 2FA",
    "strictAdmin2fa": "Strict：未開 2FA 拒絕登入",
    "confirmTotpPolicy": "確認 TOTP（改政策時）",
    "confirmTotpPolicyHint": "開啟政策需 step-up",
    "totp6digitPlaceholder": "6 位碼",
    "policyUpdated": "安全政策已更新",
    "savePolicy": "儲存政策",
    "recentProbe": "最近探測",
    "apiKeysTitle": "API 存取金鑰",
    "apiKeysDesc": "",
    "createKey": "+ 建立金鑰",
    "colName": "名稱",
    "colPrefix": "前綴",
    "colCreated": "建立",
    "apiKeysEmpty": "尚未有 API 金鑰",
    "apiKeysEmptyHint": "用列表右上角建立；建立後可用 Bearer 權杖呼叫 API",
    "approve": "批准",
    "allowlistTitle": "工具權限（{{count}}）",
    "totpStatusLoadFailed": "無法載入雙重驗證狀態",
    "allowlistEmpty": "尚無工具目錄項目",
    "createApiKeyTitle": "建立 API 金鑰",
    "createApiKeyDesc": "建立後完整 權杖 只顯示一次",
    "createKeyBtn": "建立金鑰",
    "apiKeyNameHint": "方便辨識，例如 CI／備份腳本",
    "apiKeyScope": "範圍",
    "apiKeyScopeHint": "read = 只讀（no full mutate）",
    "scopeFull": "full（完整 API）",
    "scopeRead": "read（只讀）",
    "apiKey2faHint": "若已開 雙重驗證，建立金鑰會要求再輸入驗證碼（step-up）。",
    "apiKeyCreated": "API 金鑰已建立",
    "export2faBackupTitle": "匯出 雙重驗證 備份",
    "createApiKeyStepUp": "建立 API 金鑰 · step-up",
    "enterTotpCode": "請輸入目前 TOTP 驗證碼",
    "export": "匯出",
    "backupCopied": "加密備份已複製到剪貼簿（離線保存）",
    "digit6Placeholder": "6 位數字",
    "ssh": {
      "workspaceTitle": "遠端登入 工作台",
      "workspaceDesc": "先選你要完成的事。登入公鑰 ≠ 出站私鑰，兩邊分開管理更安全。",
      "subOutbound": "出站身份",
      "subOutboundHint": "面板／專案出去用的私鑰",
      "subLogin": "登入授權",
      "subLoginHint": "誰可以 SFTP／遠端登入 進來",
      "sub2fa": "登入 雙重驗證",
      "sub2faHint": "SSH TOTP（≠ panel 2FA）",
      "subSshd": "系統 sshd",
      "subSshdHint": "專案用戶 SFTP 設定",
      "jobOutboundTitle": "我要連出去",
      "jobOutboundDesc": "建立出站身份金鑰 · 面板 對等節點／專案 git",
      "jobLoginTitle": "我要讓人登入",
      "jobLoginDesc": "登記公鑰到專案 主目錄 · authorized_keys",
      "job2faTitle": "遠端登入 登入要 雙重驗證",
      "job2faDesc": "Linux 用戶 TOTP（與 面板 雙重驗證 分開）",
      "jobSshdTitle": "系統要能 SFTP",
      "jobSshdDesc": "安裝 sshd Match 片段（專案用戶）",
      "purposePanel": "面板連其他機",
      "purposeUser": "專案用戶出站",
      "purposeUnbound": "尚未指定用途",
      "purposePanelHint": "叢集 對等節點、備份 安全複製、遠端探測",
      "purposeUserHint": "專案 Linux 用戶 git / 安全複製 / 腳本",
      "purposeDefaultHint": "稍後再綁定",
      "statusStored": "已入庫",
      "statusInstalled": "已寫入磁碟",
      "statusVerified": "連線通過",
      "statusMissing": "磁碟檔案遺失",
      "statusRetired": "已退役",
      "statusError": "異常",
      "actionInstall": "寫入磁碟",
      "actionTest": "測試連線",
      "actionCopyPub": "複製公鑰",
      "pipelineStored": "已入庫",
      "pipelineInstalled": "已寫磁碟",
      "pipelineVerified": "連線通過",
      "progressAria": "進度",
      "loginTitle": "登入授權（公鑰）",
      "loginDesc": "決定「誰可以進來」。只存公鑰，寫入專案 主目錄 的 authorized_keys。與出站私鑰無關。",
      "loginAdd": "新增登入公鑰",
      "loginEmpty": "還沒有允許登入的公鑰",
      "loginEmptyHint": "把筆電或 CI 的公鑰貼上來，綁到專案用戶後即可 SFTP／遠端登入（需 sshd 片段）。",
      "loginAddFirst": "新增第一把登入公鑰",
      "boundProject": "專案",
      "unboundProject": "未綁專案",
      "loginRemoved": "已移除公鑰",
      "remove": "移除",
      "loginModalTitle": "允許一把公鑰登入",
      "loginModalDesc": "選擇專案後，公鑰會寫入該 Linux 用戶 主目錄/.ssh/authorized_keys",
      "addAuth": "加入授權",
      "selectOption": "— 選擇 —",
      "publicKey": "公鑰",
      "publicKeyHint": "整行貼上，例如 ssh-ed25519 AAAA… comment",
      "commentOptional": "備註（可選）",
      "commentPlaceholder": "筆電 / CI",
      "loginNeedProject": "請先建立專案。系統用戶就緒後再綁公鑰效果最佳。",
      "loginNeedPub": "請選擇專案或 Linux 用戶，並貼上以 ssh- 開頭的公鑰",
      "loginNoProjects": "沒有專案。可授權現有 Linux 用戶（root／tester）。寫入 /root/.ssh 需 YSK_EXECUTE=1。",
      "loginLinuxHint": "沒有專案時使用。例如 root 或 tester。",
      "loginAdded": "已加入",
      "sshdTitle": "專案用戶 SFTP（sshd）",
      "sshdDesc": "讓 ysks_* / ysk_* 專案用戶可用公鑰 SFTP。未安裝時，登入授權可能無效。",
      "sshdStep1": "在「登入授權」為專案加入公鑰",
      "sshdStep2": "在此預覽並安裝系統 Match 片段",
      "sshdStep3": "安裝需要系統執行權限；會嘗試 重新載入 sshd",
      "sshdPreview": "設定預覽",
      "loadingSnippet": "（載入中…）",
      "reloadedCopied": "已重新載入；片段已複製到剪貼簿",
      "reloadAndCopy": "重新載入並複製",
      "installedOk": "已安裝",
      "installToSystem": "安裝到系統",
      "sshdManualHint": "若提示無法執行，請以具備權限的方式執行控制面，或手動將片段放入",
      "outboundTitle": "出站身份金鑰",
      "outboundDesc": "私鑰加密保存在控制面。列表永不顯示私鑰。寫入磁碟 ≠ 對方已授權你登入。",
      "outboundAdd": "新增出站身份",
      "filterActive": "使用中",
      "filterPanel": "面板",
      "filterUser": "專案用戶",
      "filterRetired": "已退役",
      "filterAll": "全部",
      "searchIdentity": "搜尋名稱或 fingerprint…",
      "searchIdentityAria": "搜尋身份",
      "identityCount": "{{count}} 個身份",
      "identityList": "身份列表",
      "outboundEmpty": "還沒有出站身份",
      "outboundEmptyFilter": "沒有符合條件的項目",
      "outboundEmptyHint": "30 秒建立一把金鑰：選用途 → 命名 → 完成。之後可用於 對等節點 / 備份 / git。",
      "outboundEmptyFilterHint": "試下改篩選或清空搜尋",
      "outboundAddFirst": "新增第一個出站身份",
      "userPrefix": "用戶 {{user}}",
      "createFailed": "建立失敗",
      "identityCreatedOnce": "身份已建立（私鑰只顯示一次）",
      "writtenToDisk": "已寫入磁碟",
      "cannotWriteNeedExecute": "無法寫入系統：需開啟執行權限（系統變更權限）",
      "notDone": "未完成",
      "installFailed": "安裝失敗",
      "testPassed": "連線通過",
      "testFailed": "連線失敗",
      "testError": "測試失敗",
      "copiedPubPaste": "已複製公鑰 — 貼到對方 authorized_keys 或 Git 部署金鑰",
      "deletedNamed": "已刪除「{{name}}」",
      "rotated": "已輪替：舊金鑰退役，新金鑰已建立",
      "detailStatus": "狀態",
      "detailPurpose": "用途",
      "detailLinuxUser": "Linux 用戶",
      "detailDiskPath": "磁碟路徑",
      "detailLastTest": "最近測試",
      "suggestFlow": "建議流程：入庫 → 寫入磁碟 → 把公鑰放到對方 → 測試連線",
      "suggestFlowPrefix": "建議流程：入庫 → 寫入磁碟 → 把",
      "suggestFlowSuffix": "放到對方 → 測試連線",
      "publicKeyStrong": "公鑰",
      "copiedPub": "已複製公鑰",
      "allowLocalLogin": "允許本機用此鑰登入",
      "localLoginOk": "已把公鑰加入本機登入授權",
      "testingConnection": "測試連線…",
      "rotateKey": "輪替金鑰",
      "wizStepPurpose": "這把金鑰用來做什麼？",
      "wizStepProject": "綁定哪個專案？",
      "wizStepPanelConfirm": "確認面板出站",
      "wizStepName": "命名與選項",
      "wizStepPurposeDesc": "選對用途，之後列表與安裝路徑會自動對齊",
      "wizStepProjectDesc": "金鑰會綁定該專案的 Linux 用戶與 主目錄",
      "wizStepPanelDesc": "私鑰只放在控制面 secrets，用於 安全複製／ssh 到其他主機",
      "wizStepNameDesc": "名稱方便你辨識；進階選項可稍後再改",
      "prevStep": "上一步",
      "nextStep": "下一步",
      "createIdentity": "建立身份",
      "purposePanelTitle": "面板連其他機",
      "purposePanelSub": "叢集 對等節點、遠端備份、探測",
      "purposePanelRec": "推薦大多數管理操作",
      "purposeUserTitle": "專案用戶出站",
      "purposeUserSub": "git 提取、專案腳本 安全複製",
      "purposeUserPath": "寫入專案 主目錄/.ssh",
      "selectProject": "— 選擇專案 —",
      "noProjectsHint": "尚未有專案 — 請先建立專案與系統用戶",
      "afterCreatePub": "建立後請把",
      "afterCreatePubMid": "放到目標機的",
      "afterCreatePubEnd": "，再用「測試連線」確認。",
      "privKeyStayLocal": "私鑰只留在本機控制面；不會出現在列表或日誌。",
      "displayName": "顯示名稱",
      "displayNameHint": "例如 對等節點-prod、myapp-git",
      "algorithm": "演算法",
      "algoSuggested": "建議",
      "algoLegacy": "舊系統",
      "installImmediately": "建立後立即寫入磁碟",
      "installImmediatelyHint": "（需系統執行權限；否則會提示無法套用）",
      "savePrivTitle": "請立即保存私鑰",
      "savePrivDesc": "關閉後面板不會再顯示私鑰全文。公鑰可隨時複製。",
      "copiedPriv": "已複製私鑰",
      "copyPriv": "複製私鑰",
      "nextInstallDisk": "下一步：寫入磁碟",
      "savedCloseBtn": "我已保存，關閉",
      "privKeyOnce": "Private 金鑰（僅此一次）",
      "privSavedConfirm": "我已把私鑰存到安全位置（密碼管理器／離線備份）",
      "testConnTitle": "測試連線",
      "testConnDesc": "用此身份嘗試 ssh … 是。成功只代表這個目標可登入。",
      "startTest": "開始測試",
      "testTarget": "目標",
      "testTargetHint": "格式 用戶@主機 或 用戶@主機:埠",
      "deleteIdentityTitle": "刪除身份？",
      "rotateKeyTitle": "輪替金鑰？",
      "deleteIdentityDesc": "將刪除「{{name}}」並嘗試清除磁碟上的私鑰檔。此操作無法復原。",
      "rotateKeyDesc": "「{{name}}」會標記為已退役，並產生一把新金鑰。請更新對方 authorized_keys。",
      "rotate": "輪替",
      "enrollStatusSecret": "已產生密鑰",
      "enrollStatusConfirmed": "已確認 App",
      "enrollStatusWritten": "已寫入 主目錄",
      "enrollStatusRetired": "已退役",
      "needProjectOrUser": "請選專案或填 Linux 用戶名",
      "enrollFailed": "登記失敗",
      "totpGenerated": "已產生 遠端登入 專用 TOTP（與 面板 雙重驗證 分開，除非勾選同步）",
      "confirmed": "已確認",
      "codeWrong": "碼錯誤",
      "gaWritten": "已寫入 .google_authenticator",
      "needExecute": "需開啟系統執行權限",
      "ssh2faTitle": "遠端登入 登入第二因素",
      "ssh2faDesc": "保護 ssh 登入 Linux 用戶。與「我的安全」的 面板 雙重驗證 分開；預設獨立 secret。",
      "ssh2faStep1": "為 Linux 用戶登記 TOTP（掃碼）",
      "ssh2faStep2": "確認 App 6 位碼",
      "ssh2faStep3": "寫入 主目錄",
      "ssh2faStep4": "系統安裝 PAM 模組並合併片段（下方）",
      "pkgLabel": "套件 {{name}}",
      "pkgStatus": "套件 {{status}}",
      "pamStatus": "PAM {{status}}",
      "kbdStatus": "sshd keyboard-interactive {{status}}",
      "light": {
        "green": "正常",
        "yellow": "需檢查",
        "red": "未就緒"
      },
      "enrollForUser": "為用戶登記 遠端登入 雙重驗證",
      "ssh2faEmpty": "尚未為任何 Linux 用戶開啟 遠端登入 雙重驗證",
      "ssh2faEmptyHint": "建議先用金鑰登入；雙重驗證 作第二道門。專案 SFTP-only 用戶通常不需要 keyboard-interactive。",
      "startEnroll": "開始登記",
      "fromPanelBadge": "與 面板 同源",
      "enterCode": "輸入驗證碼",
      "rewriteHome": "重寫 主目錄 檔",
      "writeHome": "寫入 主目錄",
      "retiredOk": "已退役",
      "retire": "退役",
      "pamTitle": "系統：PAM / sshd（手動或有權限時套用）",
      "pamDesc": "nullok 避免未寫檔用戶被鎖死。寫檔 ≠ 已要求 TOTP。",
      "pamSnippet": "PAM 片段（建議併入 /etc/pam.d/sshd）",
      "sshdHint": "sshd 提示",
      "rescueUsers": "救援用戶（逗號分隔，永不進 strict Match）",
      "strictPreview": "Strict Match 預覽（publickey+TOTP、關 密碼）",
      "copiedPam": "已複製 PAM 片段",
      "copyPam": "複製 PAM",
      "applyStrict": "套用 Strict 到系統",
      "pamPkgHint": "套件：",
      "pamRescueHint": "。保留至少一名未寫 雙重驗證 檔的救援管理員（預設 管理員）。",
      "enrollModalTitle": "登記 遠端登入 雙重驗證",
      "enrollModalDesc": "預設產生獨立 secret（不共用 面板）。進階才可同步 面板 TOTP。",
      "generateShowSecret": "產生並顯示密鑰",
      "projectSuggested": "專案（建議）",
      "orManualUser": "— 或手動填用戶 —",
      "linuxUser": "Linux 用戶",
      "advancedSharePanel": "進階：使用目前 面板 操作員的 TOTP secret（需輸入 SHARED 確認）",
      "setupAuthTitle": "設定 Authenticator",
      "setupAuthDesc": "掃碼或輸入密鑰後，用 App 的 6 位碼確認。確認後才寫 主目錄 檔。",
      "later": "稍後",
      "confirmCodeBtn": "確認驗證碼",
      "secretBase32": "密鑰（base32）",
      "copiedSecret": "已複製 secret",
      "copySecret": "複製 secret",
      "scanThenCode": "若已掃碼，直接輸入目前 6 位碼即可。",
      "verifyCode": "驗證碼",
      "applyStrictStepUp": "套用 Strict · step-up",
      "enterPanelTotp": "輸入目前 面板 TOTP 驗證碼",
      "applyBtn": "套用",
      "appliedOk": "已套用",
      "sharePanelTitle": "共用 面板 TOTP secret？",
      "sharePanelDesc": "風險高。請輸入 SHARED 確認。",
      "confirmString": "確認字串",
      "enableShare": "啟用共用",
      "invalidPub": "請貼上完整 OpenSSH 公鑰行（ssh-ed25519／ssh-rsa／ecdsa…）。",
      "dryRunOk": "預覽試行完成。請查看下方預覽。",
      "strictDryRun": "嚴格模式預覽",
      "errorNoDetail": "測試失敗（無詳情）",
      "strictBlocked": "套件或 PAM 未就緒，已停用套用 Strict。",
      "privCloseWithoutAck": "已關閉。私鑰不會再顯示；若尚未儲存，請立即重新產生。"
    },
    "sessionsActive": "使用中",
    "sessionsOther": "其他裝置",
    "sessionsHint": "",
    "noSessionsHint": "再次登入後，此裝置會顯示於此。",
    "sessionOtherBadge": "其他",
    "sessionThisDevice": "你在這裡",
    "sessionDeviceOn": "{{browser}} · {{os}}",
    "sessionIpUnknown": "IP 未知",
    "sessionLastActive": "最近活動 {{when}}",
    "sessionStarted": "登入於 {{when}}",
    "sessionIdShort": "ID {{id}}...",
    "sessionJustNow": "剛剛",
    "sessionMinAgo": "{{n}} 分鐘前",
    "sessionHourAgo": "{{n}} 小時前",
    "sessionDayAgo": "{{n}} 日前",
    "revokeSessionTitle": "登出此裝置？",
    "revokeSessionDesc": "結束 {{device}}（{{ip}}）的階段，該裝置需重新登入。",
    "revokeOthersTitle": "登出所有其他裝置？",
    "revokeOthersDesc": "將結束 {{count}} 個其他工作階段。目前瀏覽器保持登入。",
    "sessionRevoked": "已登出該工作階段",
    "mySecurityHint": "",
    "policyTotpHint": "全站政策：要求 admin 角色各自啟用 2FA（每人自己掃碼），不是共用同一組驗證碼。",
    "requireUser2fa": "要求所有面板用戶啟用 2FA",
    "changePasswordTitle": "變更登入密碼",
    "currentPassword": "目前密碼",
    "newPassword": "新密碼",
    "confirmNewPassword": "確認新密碼",
    "passwordMismatch": "兩次新密碼不一致。",
    "changePassword": "變更密碼",
    "passwordChanged": "已更新密碼。",
    "strictNeedsEnrolled": "請先為此管理員帳號啟用 2FA，才可開啟 Strict。",
    "policyTotpNeedSelf": "請先在本帳號啟用 2FA，否則確認碼無法填寫。",
    "fail2banSnippetTitle": "fail2ban 片段",
    "fail2banSnippetEmpty": "沒有寫入片段。",
    "trustedDevicesTitle": "信任裝置",
    "noTrustedDevices": "尚未有信任裝置。",
    "strictConfirmTitle": "開啟 Strict 2FA？",
    "strictConfirmDesc": "未開 2FA 的用戶會被拒絕登入。請確認你已有可用的 TOTP 或通行密鑰。",
    "revokeDevicesTitle": "撤銷信任裝置？",
    "revokeDevicesDesc": "已記住的瀏覽器要再做 2FA。",
    "approvalsHint": "高風險工具需要第二人批准時會出現在此。權限在「用戶 → 權限」設定「審批檢視」與「處理審批」。",
    "allowlistReadonly": "代理工具目錄（唯讀）。能力授權在「用戶 → 權限」設定。",
    "colTool": "工具",
    "colAllowed": "允許",
    "colRisk": "風險",
    "colApproval": "審批",
    "risk": {
      "low": "低",
      "medium": "中",
      "high": "高",
      "critical": "嚴重"
    },
    "confirmDeleteApiKey": "刪除此 API 金鑰？",
    "confirmDeleteApiKeyDesc": "刪除後「{{name}}」無法再驗證。此操作無法復原。",
    "policyNoTotpHint": "此帳號尚未設定 2FA。請先在上方啟用 2FA，才可要求管理員或全部用戶啟用 — 否則可能令全站無法登入。",
    "policyNeedSelf2fa": "請先為本帳號啟用 2FA，再用驗證碼確認",
    "revokeAllDevicesTitle": "撤銷全部已記住的裝置 — 你與其他管理員需再做 2FA",
    "sessionCli": "CLI",
    "sessionApi": "API"
  },
  "serviceExposure": {
    "title": "網絡存取",
    "manage": "管理存取",
    "manageTitle": "服務網絡存取",
    "manageDesc": "控制 {{service}} 在主機防火牆的可達性。",
    "mode": "存取模式",
    "modePrivate": "僅本機",
    "modePublic": "公網",
    "modeRestricted": "受限",
    "modeUndecided": "尚未設定",
    "modePublicLive": "公網（實際監聽）",
    "summaryPublicLive": "正在聽 {{bind}} — 全部介面可達。請確認存取模式；這不是僅本機。",
    "modeLoading": "載入中",
    "summaryPrivate": "未對外開放防火牆埠。",
    "summaryPublic": "公網開放 · {{ports}}",
    "summaryUndecided": "尚未確認存取模式（目錄建議：{{suggested}}）。",
    "summaryNotEnforced": "防火牆未啟用，面板未強制開放或封鎖此埠。",
    "roleSmtp": "SMTP 提交",
    "roleImap": "IMAP／POP3 收件",
    "summaryRestricted": "受限 · {{count}} 個來源",
    "summaryFirewallOff": "主機防火牆：{{detail}} — UFW 未啟用時規則不會生效。",
    "summaryFirewallOffOnly": "主機防火牆未啟用，埠規則不生效。",
    "outOfSync": "未同步",
    "openButStopped": "埠已開放 — 服務未運行",
    "openNoTenants": "公網埠已開但沒有租戶",
    "firewallOff": "防火牆關閉",
    "ufwMissing": "未安裝 UFW",
    "ufwInactive": "已關閉",
    "firewallLink": "防火牆",
    "portsLabel": "埠",
    "allowFrom": "允許來源（IP／網段）",
    "allowCountries": "允許國家（ISO）",
    "hintPrivate": "服務仍可本機監聽；不會寫入公網 UFW 允許規則。",
    "hintPublic": "警告：對整個互聯網開放此埠。資料庫請優先用受限模式。",
    "hintRestricted": "逗號分隔 IP 或 CIDR；僅允許這些來源連線。",
    "hintCountries": "L2 best-effort：ipset + 國家網段。需 root、EXECUTE、ipset。雲安全組須另行設定。",
    "restrictedNeedIp": "受限模式請至少加入一個 IP 或網段。",
    "restrictedNeedSource": "受限模式請至少加入 IP／網段或國家代碼。",
    "privateStartTitle": "要對外開放 {{service}} 嗎？",
    "confirmAndStart": "確認並啟動",
    "cloudSgNote": "僅主機防火牆 — 不會改雲安全組（AWS／GCP／Azure）。",
    "serviceNotInstalled": "此服務尚未安裝，防火牆規則不會生效。"
  },
  "services": {
    "enabledBoot": "自啟",
    "unitNotFound": "未安裝",
    "bootNa": "不適用",
    "unitNa": "不適用",
    "permLabel": "權限",
    "permCanChange": "可執行系統變更（超級用戶）",
    "permBlocked": "無法變更系統",
    "permHint": "系統變更 {{exec}} · 超級用戶 {{root}}",
    "clusterLegend": "已計劃＝只寫在面板，尚未套用到主機。",
    "active": {
      "active": "運行中",
      "inactive": "未運行",
      "not-found": "未安裝",
      "failed": "失敗",
      "tool": "工具",
      "activating": "啟動中"
    },
    "unitStatic": "static",
    "unitIndirect": "indirect",
    "action": {
      "start": "啟動",
      "stop": "停止",
      "restart": "重啟",
      "reload": "重載",
      "enable": "開機啟用",
      "disable": "取消開機啟用"
    },
    "enabledOk": "已設定 {{label}} 開機啟動",
    "bootDisabledWarn": "{{label}} 正在運行，但重啟後不會自動啟動。請啟用開機啟動。",
    "bootDisabledShort": "未開機啟動",
    "sshdBootOffWarn": "sshd 未開機自啟。重開機後將無法以 SSH 登入（單機面板的救援通道）。",
    "mariadbNotInstalled": "尚未安裝 MariaDB",
    "mariadbNotInstalledMysqlOk": "尚未安裝：MariaDB（MySQL 已安裝）",
    "lifecycleTitle": "{{label}} 服務控制",
    "startedOk": "已啟動 {{label}}",
    "stoppedOk": "已停止 {{label}}",
    "needRunning": "{{label}} 未運行",
    "restartedOk": "已重啟 {{label}}",
    "reloadedOk": "已重載 {{label}}",
    "reloadTitle": "重載 {{label}} 設定（不完全重啟）",
    "stopNeedConfirm": "需確認",
    "stopNeedConfirmPhrase": "需輸入確認短語",
    "stopNeedConfirmImpact": "停止 {{label}}？連到此服務的連線會中斷。",
    "stopConfirmTitle": "停止 {{label}}？",
    "stopConfirmDesc": "{{label}} 將停止接聽。需要時可在本頁再啟動。",
    "stopConfirmEdgeDesc": "停止 {{label}} 會令站點與反向代理離線，直至再次啟動。",
    "stopConfirmEdgeConsequence": "{{label}} 停止期間，本機不會提供 HTTP／HTTPS。",
    "stopConfirmSshdTitle": "停止 sshd？",
    "stopConfirmSshdDesc": "停止 sshd 會中斷遠端 SSH。請確認你仍有主機控制台或其他登入途徑。",
    "stopConfirmSshdToken": "停止 sshd",
    "stopConfirmSshdConsequence": "新的 SSH 連線會失敗，直至在主機控制台再啟動 sshd。",
    "stopConfirmPanelTitle": "停止 YSK Server？",
    "stopConfirmPanelDesc": "面板與 API 會離線，直至在主機上再啟動該服務單元。",
    "stopConfirmPanelSshdOffDesc": "面板與 API 會離線。sshd 未開機自啟，重開機後可能沒有 SSH 救援通道。",
    "stopConfirmPanelSshdOffConsequence": "sshd 未開機自啟。重開機後可能無法以 SSH 登入。",
    "ufwNoLifecycle": "此矩陣不啟動或停止 UFW。",
    "restartConfirmPanelTitle": "重啟 YSK Server？",
    "restartConfirmPanelDesc": "重啟期間面板與 API 會短暫離線。",
    "restartConfirmTitle": "重啟 {{label}}？",
    "restartConfirmDesc": "立即重啟 {{label}}。現有連線可能會中斷。",
    "restartConfirmConsequence": "{{label}} 會短暫中斷連線，然後繼續提供 HTTP／HTTPS。",
    "reloadConfirmTitle": "重載 {{label}}？",
    "reloadConfirmDesc": "重載 {{label}} 設定。現有連線應會保持。",
    "enableConfirmTitle": "開機啟用 {{label}}？",
    "enableConfirmDesc": "啟用 {{label}}，開機時自動啟動。",
    "startVerifyFailed": "{{label}} 啟動後未保持健康。",
    "stopConfirmPanelToken": "停止 ysk 伺服器",
    "stopConfirmPanelConsequence": "此瀏覽器工作階段會中斷。請從 SSH 或主機控制台啟動服務單元。",
    "stopConfirmFail2banTitle": "停止 fail2ban？",
    "stopConfirmFail2banDesc": "停止 fail2ban 後不會再自動封鎖 IP。網站與 SSH 會繼續運作。",
    "stopConfirmFail2banConsequence": "在再次啟動 fail2ban 之前，新的攻擊來源不會被自動封鎖。",
    "actionDone": "已{{action}}",
    "runningOf": "{{running}}/{{total}} 運行中",
    "canMutate": "可變更",
    "locked": "鎖定",
    "controlUnit": "控制面 服務單元",
    "logs": "日誌",
    "dbHa": "資料庫 HA",
    "clusterCount": "{{count}} 個叢集",
    "mariadbCluster": "MariaDB 叢集",
    "probing": "探測服務矩陣…",
    "lifecycleLocked": "生命週期操作已鎖定：需 管理員權限與系統變更權限。探測仍可用。見",
    "hostSettings": "主機設定",
    "matrixTab": "服務矩陣 ({{count}})",
    "stackTab": "軟件套餐",
    "stackTitle": "主機軟件套餐",
    "stackHint": "軟件方案安裝的是作業系統套件。服務矩陣分頁列出 systemd 單元 — 兩邊數字不是同一批對象。",
    "protectionTab": "保護探測",
    "knownServices": "已知服務",
    "showing": "顯示 {{shown}} / {{total}}",
    "all": "全部",
    "searchPh": "名稱 / 服務單元 / 類別",
    "noMatch": "沒有符合的服務",
    "bootPrefix": "開機 {{state}}",
    "controlPage": "控制頁",
    "manageRuntime": "安裝／更新",
    "installOrOpen": "安裝／開啟",
    "protectionTitle": "保護探測",
    "protectionSub": "唯讀；不改防火牆／fail2ban",
    "protectionDoneNote": "保護探測完成",
    "probeDone": "探測完成",
    "runProtection": "執行保護探測",
    "notProbedYet": "尚未探測",
    "statusFilter": {
      "all": "全部狀態",
      "running": "運行中",
      "failed": "失敗",
      "missing": "未安裝"
    },
    "cat": {
      "web": "網站",
      "db": "資料庫",
      "mail": "郵件",
      "dns": "DNS",
      "ftp": "FTP",
      "cache": "快取",
      "panel": "控制面",
      "ssh": "SSH",
      "other": "其他",
      "runtime": "執行環境"
    }
  },
  "software": {
    "title": "軟件中心",
    "desc": "全部可管理軟件一覽：安裝狀態、服務健康、新版本提示；可進入管理頁或用於專案。",
    "tabs": {
      "overview": "總覽",
      "runtimes": "執行環境",
      "databases": "資料庫",
      "edge": "域名與邊緣",
      "mailFiles": "郵件與檔案",
      "host": "主機服務"
    },
    "stat": {
      "catalog": "目錄項目",
      "runtimesInstalled": "執行環境已裝",
      "updates": "有新版本／可擴充",
      "attention": "需關注"
    },
    "quickTitle": "快捷",
    "quickDesc": "常用分區與主機服務入口",
    "updatesTitle": "可更新／可安裝版本",
    "updatesDesc": "上游或面板支援較新版本。安裝後可在專案選擇對應 runtime。",
    "allSoftware": "全部軟件",
    "status": {
      "unknown": "—",
      "installed": "已安裝",
      "notInstalled": "未安裝",
      "running": "運行中",
      "missing": "未偵測",
      "failed": "失敗",
      "stopped": "已停止"
    },
    "badge": {
      "update": "有新版本",
      "upToDate": "已是最新"
    },
    "meta": {
      "installed": "已裝：{{list}}",
      "default": "預設 {{v}}",
      "remote": "上游約 {{v}}",
      "openManage": "開啟管理頁安裝或設定",
      "aptCurrentLatest": "已裝 {{v}} · 已是倉庫最新",
      "aptVersion": "已裝 {{v}}",
      "aptUpgrade": "{{from}} → {{to}} 可升級",
      "aptUpgradeMulti": "{{n}} 個套件可升級：{{list}}",
      "aptNotInstalled": "系統未安裝此套件（可到管理頁安裝）",
      "hostUpgradable": "主機約 {{n}} 個可升級套件",
      "checking": "正在檢查版本…或開啟管理頁設定"
    },
    "action": {
      "manage": "管理",
      "useInProject": "用到專案",
      "useInProjectTitle": "到專案頁設定此 runtime",
      "update": "更新",
      "updateTitle": "前往安裝／切換至 {{v}}",
      "updateTo": "更新至 {{v}}",
      "installVersion": "安裝 {{v}}",
      "applyAptTitle": "確認後更新 {{pkg}}",
      "updateN": "更新 {{n}} 項",
      "installTitle": "安裝 {{list}}",
      "install": "安裝",
      "updateAptTitle": "前往更新中心處理 {{pkg}}"
    },
    "apply": {
      "blockedShort": "被阻擋",
      "failedShort": "失敗",
      "failed": "更新失敗",
      "blocked": "被阻擋",
      "confirm": "確認更新",
      "confirmTitle": "確認更新軟件？",
      "confirmBody": "將更新 {{pkg}}：{{from}} → {{to}}。需系統變更權限。",
      "ok": "已套用 {{pkg}}",
      "progress": "更新中 {{n}}/{{total}}：{{pkg}}",
      "okMulti": "已更新：{{list}}",
      "okMultiTitle": "{{label}} 更新完成",
      "partial": "部分成功",
      "partialTitle": "部分更新失敗",
      "failedTitle": "{{label}} 更新失敗",
      "progressDetail": "{{從}} → {{到}}",
      "confirmBodyMulti": "將更新 {{label}}：{{list}}"
    },
    "version": {
      "loading": "載入版本中…",
      "installed": "已裝",
      "latest": "最新",
      "upToDate": "已是最新／倉庫最新",
      "refresh": "重新檢查最新",
      "refreshHasUpdate": "有較新版本",
      "refreshLatest": "已是紀錄中的最新版本",
      "pick": "選擇版本",
      "noTarget": "沒有可更新版本",
      "needRuntimePage": "請在執行環境頁安裝此版本",
      "noAptCandidate": "沒有可用的 apt 候選版本",
      "sourceLabel": "來源"
    },
    "install": {
      "progress": "正在安裝：{{list}}…",
      "progressHint": "可能需要一兩分鐘",
      "blockedTitle": "{{label}} 未能安裝",
      "ok": "已提交安裝：{{list}}",
      "okTitle": "{{label}} 安裝完成／已提交",
      "failedTitle": "{{label}} 安裝失敗",
      "confirmTitle": "確認安裝軟件？",
      "confirmBody": "將安裝 {{label}}：{{list}}。需系統變更權限。",
      "confirm": "確認安裝"
    },
    "runtime": {
      "installing": "正在安裝／更新 {{kind}} {{v}}…",
      "installingHint": "可能需要一兩分鐘",
      "blockedTitle": "{{kind}} {{v}} 未能安裝",
      "installed": "已安裝／更新 {{kind}} {{v}}",
      "installedDetail": "可在專案選擇此版本",
      "failedTitle": "{{kind}} {{v}} 安裝失敗",
      "installingShort": "安裝中…"
    },
    "aptSummaryTitle": "系統倉庫可升級",
    "aptSummaryDesc": "目錄與主機套件分開統計；可在更新中心或卡片確認套用。",
    "aptSummary": {
      "catalog": "目錄軟件 {{n}}",
      "host": "主機套件 {{n}}",
      "openUpdates": "開啟更新中心"
    },
    "navBadgeTitle": "目錄軟件可升級：{{n}}",
    "projectHint": "已預填 runtime {{runtime}}，可建立專案",
    "projectHintWithVersion": "已預填 runtime {{runtime}} {{version}}，可建立專案"
  },
  "softwareBanner": {
    "titleDefault": "尚未安裝所需軟件",
    "missing": "缺少：{{names}}",
    "nameSep": "、",
    "installOneClick": "一鍵安裝",
    "installing": "安裝中…",
    "reprobe": "重新探測",
    "close": "關閉",
    "resultTitle": "安裝結果",
    "probeFailed": "探測失敗",
    "installIncomplete": "安裝未完成",
    "installedOne": "已安裝 {{name}}",
    "allInstalled": "所需軟件已安裝"
  },
  "softwareLifecycle": {
    "kindInstall": "安裝",
    "kindUninstall": "解除安裝",
    "dockBusy": "{{種類}} · {{標題}}",
    "dockFail": "失敗 · {{title}}",
    "dockDone": "完成 · {{title}}",
    "minimize": "縮小",
    "maximize": "放大",
    "restore": "還原",
    "liveLog": "即時日誌",
    "uninstall": "解除安裝…",
    "uninstallTitle": "解除安裝「{{name}}」",
    "impactIntro": "以下元件與服務將受影響。請仔細閱讀後再繼續。",
    "nothingInstalled": "此功能沒有已安裝項目。",
    "packagesList": "套件：{{list}}",
    "noPackages": "未列出 apt 套件",
    "unitsList": "服務：{{list}}",
    "dataPolicy": "資料策略",
    "policyKeep": "保留設定與資料",
    "policyPurge": "徹底清除設定與資料（危險）",
    "purgeWarning": "徹底清除會永久刪除設定與資料目錄，難以還原。",
    "keepHint": "將移除套件；設定與資料目錄會保留在磁碟。",
    "summaryLine": "將處理 {{packages}} 個套件、{{units}} 個服務單元。",
    "doubleConfirmIntro": "解除安裝需要雙重確認。",
    "ackLabel": "我已閱讀影響說明，明白服務可能中斷。",
    "typePhrase": "請輸入 {{phrase}} 以確認",
    "confirmUninstall": "確認解除安裝",
    "protected": "受保護",
    "readyHint": "所需軟件已安裝。如有需要可在此解除安裝。",
    "readyTitle": "所需軟件已就緒",
    "jobInProgress": "已有安裝／解除安裝進行中",
    "uninstallDone": "解除安裝完成",
    "uninstallFailed": "解除安裝失敗",
    "impact": {
      "sitesDown": "公開站點可能無法訪問",
      "reverseProxy": "反向代理將停止",
      "phpBackend": "PHP 後端可能停止",
      "mailOutbound": "外寄郵件將中斷",
      "mailInbound": "收信將中斷",
      "mailQueue": "郵件佇列工具不可用",
      "mailDkim": "DKIM 簽署將停止",
      "database": "資料庫服務將停止",
      "dataLossPurge": "徹底清除會刪除資料目錄",
      "cache": "快取服務將停止",
      "firewall": "主機防火牆將被移除",
      "intrusion": "入侵攔截將停止",
      "ftp": "FTPS 服務將停止",
      "dns": "DNS 伺服器將停止",
      "vpn": "VPN 服務將停止",
      "vnc": "VNC 服務將停止",
      "controlPlane": "控制面 runtime（受保護）",
      "generic": "相關服務可能停止",
      "purgeData": "將刪除資料路徑",
      "protectedSkipped": "受保護元件會略過",
      "runtimeStack": "將移除面板管理的此執行環境全部版本",
      "containers": "運行中的容器會停止",
      "validators": "使用 Docker Compose 的驗證者節點堆疊會停止"
    },
    "requestCancel": "請求取消",
    "cancelling": "取消中…",
    "dockCancelling": "取消中 · {{title}}",
    "dockCancelled": "已取消 · {{title}}",
    "cancelHint": "已請求取消。瀏覽器已停止接收日誌；主機可能仍會完成目前的 apt／步驟。請稍後重新探測狀態。",
    "cancelledToast": "已取消操作（客戶端已停止串流）",
    "kindApply": "套用",
    "kindScan": "掃描",
    "kindDeploy": "部署",
    "kindRuntime": "運行時",
    "jobDone": "完成 · {{title}}",
    "jobFailed": "失敗 · {{title}}",
    "uninstallUfwWarn": "解除安裝 UFW 後，主機將失去面板管理的埠防火牆。",
    "uninstallFail2banWarn": "解除安裝 fail2ban 會停止 jail 並解除現有封鎖。若要保留服務，請先把登入 IP 加入 ignoreip。"
  },
  "sqlEngineHealth": {
    "finding": {
      "package_missing": "尚未安裝 {{flavor}} 伺服器套件。",
      "client_missing": "尚未安裝 SQL 客戶端工具。",
      "frozen_marker": "存在 Debian 凍結標記（模式：{{mode}}）。解除前守護行程無法啟動。",
      "datadir_uninitialized": "資料目錄沒有系統目錄，需要初始化。",
      "config_flavor_mismatch": "my.cnf 指向與 {{flavor}} 不符的引擎（{{path}}）。",
      "residual_foreign_plugins": "另一引擎的殘留設定或外掛可能令本守護行程崩潰。",
      "unit_failed": "服務單元 {{unit}} 狀態為 failed。",
      "unit_not_active": "服務單元 {{unit}} 狀態為 {{active}}（非運作中）。",
      "port_conflict": "本引擎未運作但 3306 埠已被佔用（可能衝突）。"
    },
    "action": {
      "stop_unit": "停止服務單元",
      "clear_frozen": "清除凍結標記",
      "sanitize_config": "對齊 my.cnf 並停用外來引擎外掛",
      "init_datadir": "初始化空白資料目錄",
      "reset_failed": "重設失敗的服務狀態",
      "enable_unit": "設定開機啟動",
      "start_unit": "啟動服務",
      "verify_active": "確認服務已運作"
    },
    "note": {
      "alreadyHealthy": "SQL 引擎狀態正常，無須修復。",
      "needsConfirm": "修復需要確認（共 {{count}} 步：{{findings}}）。",
      "installPackageFirst": "請先安裝 {{flavor}} 伺服器套件，再執行修復。",
      "stepFailed": "修復步驟 {{action}} 失敗：{{detail}}",
      "repairOk": "修復完成 — {{unit}} 已運作。",
      "repairIncomplete": "修復已執行，但服務狀態仍為 {{active}}。"
    }
  },
  "sqlEngineSwitch": {
    "title": "切換至 {{target}}",
    "subtitle": "將以 {{to}} 取代 {{from}}。同一主機只可運行一個 SQL 伺服器。",
    "confirm": "確認切換並遷移資料",
    "success": "已完成 SQL 引擎切換及資料遷移",
    "bannerHint": "若主機已安裝另一種引擎，必須先確認「互斥切換」（卸載對方並遷移資料庫），不可同時安裝兩種伺服器。",
    "flowAria": "SQL 引擎切換方向",
    "from": "目前",
    "to": "目標",
    "calloutTitle": "若無備份則難以回復",
    "calloutBody": "成功匯出後才會卸載 {{from}} 軟件套件。若其後步驟失敗，邏輯備份仍保留於面板資料目錄。",
    "sectionImpact": "將會執行的操作",
    "sectionLimits": "限制與風險",
    "dbListTitle": "將遷移的資料庫（{{count}}）",
    "dbMigrateBadge": "{{count}} 個用戶資料庫",
    "dbEmptyBadge": "無用戶資料庫",
    "noUserDbs": "未偵測到用戶資料庫（僅有系統庫）。仍會更換伺服器引擎。",
    "tableCount": "{{count}} 個資料表",
    "ackLabel": "本人明白二者互斥，同意卸載 {{from}}，並將資料遷移至 {{to}}。",
    "phraseLabel": "請輸入 {{phrase}} 以確認",
    "phraseMismatch": "確認字元不符，請完整輸入 SWITCH。",
    "warn": {
      "replace_engine": "卸載 {{from}}，並安裝 {{to}}。",
      "exclusive": "MySQL 與 MariaDB 不可在同一主機同時作為伺服器運行（互斥）。",
      "uninstall_packages": "將從系統移除目前的 SQL 伺服器軟件套件。",
      "logical_dump": "用戶資料庫會以邏輯方式匯出再匯入；系統庫不會以檔案方式複製。",
      "dialect_risk": "MariaDB 或 MySQL 專有語法在匯入時可能失敗。",
      "no_replication": "複製設定、外掛及二進制日誌不會遷移。",
      "root_auth": "切換後可能需要重新設定 管理員 的本機通訊端或密碼認證。",
      "no_user_dbs": "未偵測到用戶資料庫 — 只會更換引擎軟件套件。",
      "has_user_dbs": "將匯出並匯入 {{count}} 個用戶資料庫。"
    },
    "note": {
      "needsSwitch": "此主機已運行 {{other}}。MySQL 與 MariaDB 互斥，請確認切換（匯出 → 卸載對方 → 安裝 → 匯入）。",
      "invalidTarget": "目標無效（只可為 mysql 或 mariadb）。",
      "badConfirmPhrase": "確認字元必須為 SWITCH。",
      "needAck": "必須勾選同意互斥切換（MySQL 與 MariaDB 二者擇一）。",
      "switchNotNeeded": "無須切換 — 請使用一般安裝。",
      "migrateDataRequired": "存在用戶資料庫時必須啟用資料遷移。",
      "dumpFailed": "匯出失敗 — 來源引擎 {{source}} 仍在運行。{{detail}}",
      "datadirBackupFailed": "資料目錄備份失敗 — 已在卸載前中止。請嘗試手動啟動來源服務。",
      "waitFailed": "目標服務未就緒。備份路徑：{{dumpPath}}。舊資料目錄：{{datadir}}。需要人工處理。",
      "incomplete": "切換未完成。匯出檔保留於 {{dumpPath}}，舊資料目錄位於 {{datadir}}。請勿盲目再次清除。",
      "switched": "已由 {{from}} 切換至 {{to}}。已匯入 {{imported}}／{{total}} 個資料庫。",
      "dumpPath": "邏輯匯出路徑：{{path}}",
      "datadirBackup": "舊資料目錄備份：{{path}}（確認無誤後可刪除：rm -rf {{path}}）",
      "grantsExported": "已匯出權限（{{detail}}）",
      "frozenDetected": "MySQL／MariaDB 處於 FROZEN 狀態（不是套件安裝失敗）。路徑：{{path}}（模式：{{mode}}）。套件可能已安裝，但引擎切換或降級後守護行程拒絕啟動。請解除凍結；若資料目錄為空可安全重新初始化。摘要：{{snippet}}",
      "frozenCleared": "已移除凍結標記 {{path}}。",
      "frozenClearFailed": "無法移除凍結標記 {{path}} — 請以管理員手動刪除。",
      "datadirNotEmptySkipInit": "資料目錄已有系統表 — 略過重新初始化。",
      "datadirInitialized": "已為 {{flavor}} 初始化空白資料目錄。",
      "datadirInitFailed": "初始化資料目錄失敗：{{detail}}",
      "unitNotActive": "服務單元 {{unit}} 狀態為 {{active}}（預期為運作中）。",
      "nginxPortConflict": "Nginx 未運作 — Apache 可能仍佔用公開 80 埠；請將 Apache 改綁 127.0.0.1:8080 後再重新啟動 Nginx。",
      "nginxConfigFailed": "Nginx 設定檢查失敗：{{detail}}",
      "frozenShort": "FROZEN（{{mode}}）— 守護行程被封鎖；需要解除凍結並修復。",
      "unfreezeNeedsConfirm": "解除凍結需要確認（凍結={{frozen}}，資料目錄為空={{empty}}）。請以 confirm:true 提交。",
      "unfreezeOk": "解除凍結後服務 {{unit}} 已運作。",
      "unfreezeStartFailed": "解除凍結後仍未運作：{{detail}}",
      "unfreezePrompt": "請按「解除凍結並修復」以清除 FROZEN，並在資料目錄為空時重新初始化。",
      "configSanitized": "已將 SQL 設定對齊為 {{flavor}}（my.cnf → {{target}}）。若目標為 MySQL，已停用 MariaDB 外掛殘留設定。",
      "configSanitizeFailed": "清理 SQL 設定失敗：{{detail}}"
    },
    "step": {
      "dump": "匯出 {{db}}",
      "exportGrants": "匯出權限",
      "stop": "停止 {{unit}}",
      "backupDatadir": "備份資料目錄",
      "purge": "卸載 {{pkg}}",
      "wait": "等待 {{unit}}",
      "importDb": "匯入 {{db}}",
      "importGrants": "匯入權限",
      "verify": "校驗",
      "preflight": "預檢",
      "confirm": "確認",
      "clearFrozen": "解除 MySQL 凍結",
      "initDatadir": "初始化空白資料目錄",
      "startUnit": "啟動 {{unit}}",
      "sanitizeConfig": "清理 my.cnf 與殘留外掛"
    }
  },
  "ssl": {
    "status": {
      "uploaded": "已上傳",
      "issued": "已簽發",
      "planned": "處理中",
      "failed": "失敗",
      "missing": "檔案缺失",
      "ready": "已就緒",
      "processing": "處理中"
    },
    "step": {
      "ok": "完成",
      "blocked": "無法執行",
      "failed": "失敗",
      "skipped": "略過"
    },
    "pillCount": "{{count}} 張",
    "statCerts": "憑證",
    "panelCertHint": "面板 HTTPS 使用 {{path}}（到期 {{exp}}）。此憑證不在站點清單內。",
    "openPanelTls": "開啟面板 HTTPS",
    "statWithFiles": "有檔案",
    "statBindings": "綁定",
    "statFailed": "失敗",
    "requestLe": "申請 Let’s Encrypt",
    "openLetsEncryptLog": "在日誌中心開啟 letsencrypt.log",
    "uploadCert": "+ 上傳憑證",
    "certbotNotInstalled": "Certbot 尚未安裝",
    "leFailNxdomain": "DNS 找不到 {{domain}}（NXDOMAIN）— 公網沒有 A／AAAA 記錄，Let's Encrypt 無法驗證。",
    "leFailNxdomainHint": "請到 DNS 為 {{domain}} 新增 A 記錄指向本機公網 IP，寫入區域檔；用 dig {{domain}} 確認有結果後再申請。",
    "leFailDns": "DNS 異常，無法解析 {{domain}}（SERVFAIL 或其他 DNS 問題）。",
    "leFailDnsHint": "檢查 NS 是否正確、區域是否已寫入並對公網生效。",
    "leFailHttp01": "域名 {{domain}} 可解析，但 HTTP-01 驗證失敗（80 埠連不到或回覆不正確）。",
    "leFailHttp01Hint": "確認防火牆放行 80、nginx 在聽 80，且 {{domain}} 指去本機。",
    "leFailRateLimit": "Let's Encrypt 配額／頻率限制（rate limit）。",
    "leFailRateLimitHint": "請稍後再試，或改用 staging／檢查是否重複申請同一域名。",
    "leFailCaa": "CAA 記錄禁止 Let's Encrypt 為 {{domain}} 簽發。",
    "leFailCaaHint": "在 DNS 加 CAA 允許 letsencrypt.org，或移除阻礙簽發的 CAA。",
    "leFailChallenge": "Let's Encrypt 域名驗證失敗（{{domain}}）。",
    "leFailChallengeHint": "先確認 DNS 有 A 記錄、80 埠可達，再重試；詳見 letsencrypt.log。",
    "leFailUnknown": "申請 Let's Encrypt 失敗（{{domain}}）。",
    "leFailUnknownHint": "請開啟 letsencrypt.log 查看詳細錯誤。",
    "leFailRawTail": "技術詳情（摘要）：{{snippet}}",
    "requestFailedWhy": "失敗原因",
    "requestFailedNext": "下一步",
    "retryRequest": "重試申請",
    "retryRequestFor": "重試申請 {{domain}}",
    "retryInTableHint": "可在下方憑證列表該域名列重試",
    "bindingsTitle": "綁定與續期",
    "autoRenewLabel": "自動續期",
    "autoRenewYes": "已啟用",
    "autoRenewNo": "未啟用／未確認",
    "autoRenewYesDetail": "偵測到續期機制：{{source}}。Let's Encrypt 憑證到期前會由系統自動續簽（需 certbot 正常）。",
    "autoRenewNoDetail": "未偵測到已啟用的 certbot.timer 或續期 cron。請在系統啟用 certbot.timer，否則到期後要人手重簽。",
    "renewSourceCron": "面板／系統 cron",
    "renewTimerEnabled": "已啟用 systemd timer：{{unit}}",
    "renewTimerDisabled": "找到 {{unit}} 但未啟用（systemctl enable --now {{unit}}）",
    "renewTimerInstalledUnknown": "主機有 {{unit}} 單元檔；請確認已 systemctl enable --now",
    "renewTimerActive": "{{unit}} 目前 active",
    "renewViaCron": "偵測到 {{count}} 個含 certbot／續期的 cron 工作",
    "renewNone": "未登記 certbot.timer 或 LE 續期 cron",
    "expiresUnknown": "未知",
    "expiresUnknownHint": "讀不到憑證檔（權限或路徑）；LE 通常在 /etc/letsencrypt/live/域名/",
    "expiresInDays": "{{n}} 日後",
    "expiresAt": "· 到期 {{date}}",
    "projectsAt": "· 專案: {{names}}",
    "mailAt": "· 郵件: {{domains}}",
    "noBindings": "尚未偵測到專案／郵件綁定",
    "certsTitle": "憑證 ({{count}})",
    "colDomain": "域名",
    "colProvider": "來源",
    "providerUpload": "上傳",
    "colLocalFiles": "本地檔案",
    "filesYes": "有",
    "filesNo": "無",
    "colExpires": "到期",
    "renew": "續期",
    "renewFor": "續期 {{domain}}",
    "deleteDomain": "刪除 {{domain}}",
    "colStatus": "狀態",
    "emptyTitle": "尚未有憑證",
    "emptyDesc": "用右上角「上傳憑證」或「申請 Let’s Encrypt」",
    "uploadTitle": "上傳憑證",
    "uploadDesc": "貼上 PEM 內容，由管理面板寫入伺服器",
    "domainHint": "憑證對應的主域名，例如 example.com",
    "fullchainLabel": "憑證鏈（fullchain）",
    "fullchainHint": "含伺服器憑證與中繼 CA 的 PEM",
    "privkeyLabel": "私鑰（privkey）",
    "privkeyHint": "與憑證配對的私鑰 PEM，請妥善保管",
    "uploadHint": "上傳成功只代表檔案已寫入；請到對應專案／郵件域名綁定後才會生效。",
    "leTitle": "申請 Let’s Encrypt",
    "leDesc": "由管理面板在伺服器上申請，無需手動執行 certbot",
    "requestCert": "申請憑證",
    "domainLeHint": "一般域名或 *.example.com 萬用字元",
    "domainLePlaceholder": "example.com 或 *.example.com",
    "emailLabel": "聯絡電郵",
    "emailHint": "Let’s Encrypt 到期通知用；可留空則用 管理員@域名",
    "leDns01Hint": "萬用字元使用 dns-01：面板會啟動 certbot manual challenge，需於 DNS 提供商完成 TXT 驗證。執行完成 ≠ 憑證已上線。",
    "leHttp01Hint": "一般域名使用 http-01（nginx 外掛）。申請成功後請確認專案／郵件已綁定此域名。",
    "deleteTitle": "刪除憑證？",
    "deleteNeedDomain": "刪除此憑證 — 需輸入域名確認",
    "deleteDesc": "將刪除 {{domain}} 的憑證檔與登記。",
    "savedCert": "已儲存 {{domain}} 的憑證",
    "uploadFailed": "上傳失敗",
    "requestBlocked": "無法在管理面板完成憑證申請",
    "requestDone": "憑證申請已完成",
    "requestFailed": "憑證申請未成功",
    "applyFailed": "申請失敗",
    "deletedCert": "已刪除 {{domain}}",
    "uninstallCertbotWarn": "解除安裝 certbot 會令現有 Let's Encrypt 憑證無法自動續期。",
    "uninstallCertbot": "解除安裝 certbot（會失去自動續期）",
    "domainRequired": "請填寫域名。",
    "domainInvalid": "域名格式不正確。",
    "domainKnownHint": "可從已知專案、DNS 或郵件域名選擇，或自行輸入。"
  },
  "stackWizard": {
    "purgeConfirm": "確認清除？將刪除已登記的資料目錄（資料庫／郵件等），此操作無法復原。",
    "installedCount": "套件已安裝 {{installed}} · 未安裝 {{missing}}",
    "countHint": "此處計的是軟件方案裏的作業系統套件，不是另一分頁的服務單元。",
    "executeRoot": "系統變更 {{execute}} · 管理員 {{root}}",
    "manifestPlan": "方案 {{plan}}（{{bundles}}）",
    "manifestHint": "上次選用的軟件方案與套件組",
    "needRootExecute": "實際安裝或移除需要管理員權限，並開啟系統變更權限。仍可先做預覽試行。",
    "modeInstall": "安裝套餐",
    "modeUninstall": "移除套餐",
    "plan": "方案",
    "customBundles": "自訂套餐",
    "sqlExclusive": "SQL 伺服器（互斥）",
    "clamavOptional": "可選，體積較大",
    "componentsTitle": "將安裝的組件",
    "dryRun": "預覽試行",
    "installNow": "立即安裝",
    "uninstallHint": "勾選要移除的套餐。未勾選時無法移除。預設保留資料。",
    "dataPolicy": "資料策略",
    "keepData": "保留資料",
    "purgeData": "清除資料",
    "uninstallNow": "立即移除",
    "uninstallNeedSelect": "請至少勾選一個套餐。不再允許全部不勾就一次刪光。",
    "uninstallConfirmTitle": "移除已選套餐？",
    "uninstallConfirmDesc": "將移除 {{count}} 個套餐。請輸入 REMOVE 確認。",
    "bundle": {
      "control-plane": "控制面",
      "web": "網站寄存",
      "database": "資料庫",
      "email": "郵件套件",
      "dns": "DNS",
      "ftp": "FTP / FTPS",
      "defense": "主機防護",
      "runtimes": "語言執行環境"
    },
    "planTitle": {
      "minimal": "僅控制面",
      "recommended": "建議寄存組合",
      "full": "全部軟件"
    }
  },
  "support": {
    "title": "支持",
    "sub": "Creator、贊助與 YSK Limited — 免費產品，實在支援",
    "creatorTitle": "創作者",
    "creatorBody": "YSK Server 是免費、誠實的單機控制平面，供想自行掌控伺服器的人使用。項目開源維護；你的回饋與錯誤報告十分重要。",
    "donateTitle": "支持／贊助",
    "donateBody": "若 YSK Server 為你節省時間，歡迎贊助開發。每一份支持都有助產品繼續免費供所有人使用。",
    "donateGithub": "GitHub 贊助商",
    "donateOther": "其他贊助方式",
    "yskTitle": "YSK Limited",
    "yskIntro": "需要超出免費面板的人手協助？YSK Limited 可以提供：",
    "yskSvc1": "伺服器安裝、加固與日常運維",
    "yskSvc2": "主機棧設計（網站、電郵、DNS、資料庫）",
    "yskSvc3": "遷移、自動化與客製整合",
    "yskSvc4": "事故處理與上線就緒檢查",
    "yskNoPrice": "此處不標價 — 請來信，按你的環境商討方案。",
    "yskWebsite": "ysk.hk",
    "helpTitle": "遇到問題？",
    "helpBody": "請來信說明作業系統、安裝 log 路徑、預期同實際結果。每封信都會看。",
    "docsHint": "完整文件在倉庫",
    "donateLinktree": "Linktree",
    "cryptoTitle": "加密貨幣／Web3 地址",
    "cryptoHint": "請只在對應網絡轉帳，轉前再核對地址。",
    "cryptoNetwork": "網絡",
    "cryptoAddress": "地址",
    "copy": "複製",
    "copied": "已複製",
    "copyTitle": "複製 {{address}}",
    "docsLink": "說明文件",
    "diagTitle": "診斷摘要",
    "diagBody": "複製版本、系統變更、超級用戶與主機資料，方便貼到電郵。這不是完整 log 包。",
    "diagCopy": "複製診斷摘要",
    "diagCopied": "已複製診斷摘要",
    "diagCopyTitle": "複製版本、系統變更與主機資料",
    "diagPreview": "預覽將會複製的內容",
    "diagLoading": "載入診斷中…",
    "diagLoadFailed": "無法載入診斷",
    "copiedAddr": "已複製 {{addr}}",
    "diagStatus": "狀態",
    "diagMode": "模式",
    "diagProtection": "防護",
    "diagHostname": "主機",
    "diagOs": "系統"
  },
  "system": {
    "exportLoadFailed": "載入匯出資料失敗",
    "dryRunDone": "模擬完成（未改系統）",
    "rebuildDone": "重建請求已完成 — 見操作結果",
    "exportWritten": "已寫入匯出，並列出託管設定檔",
    "rebuildFailed": "重建失敗",
    "hostFallback": "主機",
    "mem": "記憶體",
    "diskPeak": "磁碟峰值",
    "exportRebuild": "匯出／重建",
    "dnsCerts": "DNS／憑證",
    "editIdentity": "編輯身份",
    "power": "電源",
    "metrics": "指標",
    "writeExports": "寫入匯出目錄",
    "dryRunSync": "預覽試行同步",
    "hostConsole": "主機控制台",
    "loadingHost": "載入主機概況…",
    "identity": "身份",
    "identityReadonly": "唯讀 — 需系統變更權限與管理員權限才能套用",
    "identityTools": "以系統指令設定主機名稱與時區",
    "hostnameHint": "系統主機名稱",
    "writable": "可寫入",
    "locked": "鎖定",
    "hostname": "主機名稱",
    "prettyName": "顯示名稱",
    "optional": "可選",
    "prettyPh": "友善顯示名稱",
    "timezone": "時區",
    "timezoneHint": "IANA 時區（例如 Asia/Hong_Kong）。此為主機鐘，cron 與 vsftpd 本地時間會跟隨。已存時間戳仍為 UTC。",
    "timezoneNow": "主機現在時間：{{time}}（{{tz}}）",
    "timezoneBrowserDiff": "此主機時區是 {{host}}；你的瀏覽器是 {{browser}}。這裡改的是主機時鐘，不是瀏覽器。",
    "timezoneSelect": "請選擇時區",
    "notExported": "尚未匯出",
    "dns": "域名系統",
    "updated": "已更新",
    "applyIdentity": "套用身份",
    "identitySetHostname": "主機名稱已設為 {{name}}",
    "identitySetPretty": "顯示名稱已設為 {{name}}",
    "identityClearPretty": "已清除顯示名稱",
    "identitySetTimezone": "時區已設為 {{tz}}",
    "panelSsl": "面板 SSL",
    "panelTls": {
      "title": "面板 HTTPS",
      "sub": "控制面（ysk-server）以 TLS 監聽設定的埠；WebAuthn／Passkey 需 HTTPS",
      "domain": "面板網域",
      "domainHint": "用來申請／綁定憑證，例如 {{host}}",
      "email": "Let’s Encrypt 電郵",
      "status": "狀態",
      "enabled": "設定已開 TLS",
      "disabled": "未開 TLS（HTTP）",
      "serving": "目前連線：HTTPS",
      "servingHttp": "目前連線：HTTP",
      "expires": "憑證到期",
      "certPath": "憑證路徑",
      "issueEnable": "申請憑證並啟用 HTTPS",
      "enableExisting": "用現有憑證啟用",
      "disable": "關閉面板 HTTPS",
      "disableNeedConfirm": "需確認 — 請輸入 DISABLE-HTTPS",
      "needDomain": "請先填主機名稱／網域",
      "needFqdn": "需要 FQDN（example.com），不要用裸主機名",
      "urlHint": "啟用並重啟後請用 {{url}} 開啟",
      "certMissing": "設定已開 TLS，但憑證或私鑰檔不存在",
      "restartToApply": "需重啟 ysk-server 服務才會改用 HTTPS",
      "noConfig": "找不到 config.json（請用 --config 啟動）",
      "usingExisting": "已使用本機現有憑證",
      "usingLe": "已使用 Let’s Encrypt 路徑",
      "needCertFirst": "找不到 {{domain}} 的憑證；請先申請或上傳",
      "configWritten": "已寫入面板 TLS 設定",
      "disabledNote": "已關閉面板 TLS",
      "certAlreadyPresent": "本機已有憑證，略過重新申請",
      "restartManual": "請手動：systemctl restart ysk-server",
      "restarted": "已重啟 ysk-server",
      "restartFailed": "重啟失敗：{{detail}}",
      "firewallHint": "若從外網連線，請在防火牆允許面板埠（預設 9287/tcp）",
      "restartNow": "完成後立即重啟 ysk-server",
      "restartNowHint": "會中斷目前連線；未勾選則只寫設定，需手動 systemctl restart",
      "restartConfirm": "確定立即重啟面板服務？此連線可能會斷開，請改用 HTTPS 重新開啟。",
      "manualRestart": "請手動重啟後用 {{url}} 開啟",
      "reconnectHttps": "服務可能已重啟。請用 {{url}} 重新連線。",
      "leStrategies": "面板憑證：依次嘗試 webroot → nginx certonly → standalone（無需 --redirect）",
      "leOk": "已取得 {{domain}} 的 Let’s Encrypt 憑證",
      "leFailed": "申請憑證失敗：{{detail}}",
      "leHint": "請確認域名 A 記錄指向本機，且 80 埠可從外網到達（或 nginx 已服務該域名）",
      "openFirewall": "若外網連線：防火牆請允許面板埠 {{port}}/tcp（防火牆 → 開埠 → 9287 Panel）",
      "disableConfirmTitle": "關閉面板 HTTPS？",
      "disableConfirmDesc": "面板會改以 HTTP 提供服務。WebAuthn／Passkey 在 HTTPS 恢復前會失效。",
      "disablePasskeyWarn": "已登記的 Passkey 需要 HTTPS — HTTP 下會失敗。",
      "listenPublic": "面板正監聽公開位址（0.0.0.0／::）。請用防火牆限制，或改綁 127.0.0.1。",
      "bootstrapCert": "此為自簽 bootstrap 憑證，瀏覽器會警示。請為面板網域換用受信任憑證。",
      "cliNoSocket": "CLI 沒有即時 HTTP socket；servingHttps 依設定與監聽埠（ss）推斷。",
      "listenHost": "監聽位址",
      "currentHost": "目前工作階段",
      "replaceCert": "換用受信任憑證"
    },
    "timeNtp": "時間與 NTP",
    "clockStatus": "系統時鐘狀態",
    "local": "本機",
    "utc": "世界標準時間",
    "source": "來源",
    "ntpService": "NTP 服務",
    "ntpServiceActive": "運作中",
    "ntpServiceInactive": "未運作",
    "ntpServiceNa": "不適用",
    "ntpSync": "時鐘同步",
    "ntpSyncedYes": "已同步",
    "ntpSyncedNo": "未同步",
    "ntpSyncedUnknown": "未知",
    "ntpRequested": "已請求啟用 NTP 同步",
    "ntpFailed": "啟用 NTP 失敗",
    "enableNtp": "啟用 NTP 同步",
    "network": "網絡",
    "networkSub": "唯讀 · 完整網絡設定不在此頁",
    "noIp": "無法讀取 IP",
    "storage": "儲存",
    "metricsDetail": "指標詳情",
    "noDisk": "無法讀取磁碟",
    "avail": "可用 {{v}}",
    "shortcuts": "運維捷徑",
    "shortcutsAria": "運維捷徑",
    "scServices": "服務矩陣",
    "scServicesD": "服務單元 生命週期",
    "scUnit": "控制面服務單元",
    "scUnitD": "面板服務單元",
    "scReadiness": "就緒探測",
    "scReadinessD": "生產閘門",
    "scUpdates": "系統更新",
    "scUpdatesD": "軟件套件與安全更新",
    "scMetrics": "主機指標",
    "scMetricsD": "負載告警",
    "scLogs": "日誌中心",
    "scLogsD": "系統日誌與檔案",
    "powerTitle": "電源（危險區）",
    "powerWarn": "重啟或關機會中斷所有服務與面板。面板無法自行開機，需實體操作或雲端主機管理介面。",
    "unlocked": "已解鎖",
    "powerUnlock": "解鎖危險區",
    "powerLock": "鎖定危險區",
    "noScheduledPower": "沒有已排程的重啟或關機",
    "powerCaps": "需已開啟系統變更權限，並以管理員執行。目前系統變更={{exec}}，管理員={{root}}。",
    "scheduledPower": "偵測到排程關機／重啟",
    "cancelScheduleHint": "。請用「取消排程」撤回。",
    "rebootHost": "重啟主機…",
    "poweroffHost": "關機…",
    "cancelled": "已取消",
    "cancelFailed": "取消失敗",
    "cancelSchedule": "取消排程",
    "confirmStrings": "確認字元為 REBOOT 或 POWEROFF。關機與重啟預設約延遲 1 分鐘。操作會寫入審計紀錄。",
    "confirmReboot": "確認重啟主機？",
    "confirmPoweroff": "確認關機？",
    "confirmRebootDesc": "所有服務與面板連線將中斷。請輸入 REBOOT 確認。",
    "confirmPoweroffDesc": "主機將關電；面板無法遠端再開機。請輸入 POWEROFF 確認。",
    "typeToUnlock": "輸入 {{need}} 以解鎖",
    "confirmRebootBtn": "確認重啟",
    "confirmPoweroffBtn": "確認關機",
    "sentDisconnect": "已送出 — 連線即將中斷",
    "powerFailed": "電源操作失敗",
    "exportExplain": "匯出：面板資料庫摘要（JSON）。重建：將託管設定寫入 /etc/nginx/conf.d 並重新載入。同步需要管理員權限與系統變更權限。",
    "controlSummary": "控制面摘要",
    "controlSummarySub": "即時資料庫快照 · 預覽／下載／寫入伺服器",
    "snapshotLoaded": "已載入摘要 · {{at}}",
    "previewSummary": "預覽摘要",
    "downloadedJson": "已下載 JSON 至瀏覽器",
    "downloadJson": "下載 JSON",
    "snapshotMeta": "產生 {{at}} · 用戶 {{users}} · 方案 {{packages}}",
    "previewHint": "按「預覽摘要」載入控制面快照。",
    "managedNotEtc": "資料目錄內 nginx/conf.d — 不等於已套用至 /etc",
    "nFiles": "{{count}} 檔",
    "noManaged": "尚無託管設定檔",
    "noManagedDesc": "發布專案 Nginx 後會出現在此",
    "readFailed": "讀取失敗",
    "preview": "預覽",
    "previewModalDesc": "受管 conf 內容（dataDir）",
    "prevPage": "上一頁",
    "nextPage": "下一頁",
    "pageOf": "第 {{page}} / {{total}} 頁 · 共 {{count}} 個檔",
    "managedPager": "受管 conf 分頁",
    "syncToSystem": "同步到系統",
    "syncSub": "複製到 /etc/nginx/conf.d 並重新載入 — 需管理員權限與系統變更權限",
    "syncReload": "同步並重新載入",
    "syncReloadNeedConfirm": "需確認 — 會寫入 /etc/nginx/conf.d 並重新載入 Nginx",
    "exportOnly": "只匯出並列出設定檔",
    "dryRun": "預覽試行",
    "dryRunNote": "預覽試行不會修改系統。",
    "exportHistory": "伺服器匯出歷史",
    "exportHistorySub": "面板資料目錄中的匯出檔 · 需登入下載",
    "noExports": "尚未有伺服器匯出檔",
    "noExportsDesc": "按「寫入匯出目錄」產生",
    "downloaded": "已下載 {{name}}",
    "download": "下載",
    "syncConfirmTitle": "同步 Nginx 到系統？",
    "syncConfirmDesc": "將託管 Nginx 設定檔同步到 /etc/nginx/conf.d 並重新載入。需管理員權限與系統變更權限。",
    "uptime": "運行時間",
    "load1m": "負載 1 分鐘",
    "executeLabel": "系統變更",
    "rootLabel": "超級用戶",
    "managedLabel": "託管",
    "managedCount": "託管設定",
    "exportsCount": "匯出檔",
    "managedNginxTitle": "託管 Nginx",
    "exportPath": "匯出路徑",
    "mode": "模式",
    "managedConf": "託管設定檔",
    "dryRunFlag": "預覽試行",
    "timezoneSearch": "篩選時區…",
    "resyncNtp": "重新同步 NTP",
    "storageSub": "磁碟用量",
    "nginxLeftover": "殘留",
    "nginxUnused": "未使用",
    "nginxLeftoverHint": "舊 public-files 或其他殘留設定。同步仍會一併寫入，除非操作員另行處理。",
    "nginxUnusedHint": "預設／catch-all 設定（000-default）。同步仍會一併寫入，除非操作員另行處理。",
    "nginxRemoveLeftover": "移除殘留",
    "nginxRemoveLeftoverTitle": "移除殘留 nginx 設定？",
    "nginxRemoveLeftoverDesc": "將從面板清單刪除 {{name}}。本機 /etc/nginx 副本只在 YSK_EXECUTE + root 時一併刪除。000-default 不當殘留，不可以在此刪除。",
    "needExecuteRoot": "需要 YSK_EXECUTE 與 root"
  },
  "systemd": {
    "enabled": "已啟用",
    "disabled": "未啟用",
    "notInstalled": "未安裝",
    "running": "運行中",
    "notRunning": "未運行",
    "failed": "失敗",
    "activating": "啟動中",
    "unitMissing": "單元不存在",
    "loadFailed": "載入失敗",
    "opFailed": "操作失敗",
    "installedEnabled": "已安裝並嘗試啟用",
    "unitTemplateWritten": "已寫入 服務單元 範本",
    "writeTemplate": "寫入管理目錄範本",
    "writeTemplateDesc": "於 dataDir/systemd 產生 ysk-server.service（不會改 /etc）",
    "templateExists": "管理目錄範本已存在",
    "installEnable": "安裝到 /etc/systemd 並啟用",
    "installEnableDesc": "複製服務單元 → daemon-reload → enable --now",
    "needExecuteRoot": "需 系統變更權限 與管理員權限",
    "serviceNotRunning": "服務未運行",
    "serviceNotRunningHint": "服務單元 可能已安裝但 inactive — 可再「安裝並啟用」或於服務矩陣操作",
    "controlRunning": "控制面服務運行中",
    "unlockApply": "解鎖系統套用能力",
    "startAsRoot": "以 管理員 啟動並設定 系統變更權限已開啟",
    "status": "狀態",
    "bootEnabled": "開機自啟",
    "on": "開",
    "off": "關",
    "yes": "是",
    "no": "否",
    "canInstall": "可安裝",
    "copyEnable": "複製到 /etc/systemd/system 並 enable --now",
    "needExecuteRootShort": "需要 執行 與管理員權限",
    "probing": "探測 系統服務 狀態…",
    "suggestedSteps": "建議步驟",
    "install": "安裝",
    "policy": "政策",
    "about": "說明",
    "exists": "存在",
    "missing": "不存在",
    "notWritten": "尚未寫入",
    "related": "相關",
    "opsResult": "操作結果",
    "writeTemplateOnly": "僅寫入範本",
    "installAndEnable": "安裝並啟用",
    "stepReport": "按步回報",
    "installEnableShort": "安裝啟用",
    "cannotInstall": "目前無法真正安裝到系統：需要",
    "andRoot": "與管理員權限。「僅寫入範本」仍可產生管理目錄檔案。見",
    "probeDetail": "探測詳情",
    "probeDetailSub": "真實 systemd 狀態與磁碟上的 unit 檔",
    "unit": "單元",
    "manageTemplate": "管理範本",
    "installOps": "安裝操作",
    "twoModes": "兩種模式用途不同 — 請按環境選擇",
    "writeOnlyTitle": "僅寫入範本",
    "writeOnlyBody": "產生管理目錄 服務單元 檔。適合先檢視內容、或無 管理員 時預先準備。",
    "willNotEnable": "不會 啟用 服務。",
    "writeTemplateBtn": "寫入範本",
    "installEnableTitle": "安裝並啟用",
    "installEnableBody": "複製到 /etc/systemd/system、daemon-reload、enable --now。需要管理員權限 + 執行。",
    "policyWrite": "僅寫入範本 — 只寫 dataDir，不動 /etc",
    "policyInstall": "安裝並啟用 — cp + daemon-reload + enable",
    "policyBlocked": "未開 執行 或非 管理員 → 明確 已封鎖，不假成功",
    "policyNotEqual": "寫入範本 ≠ 服務已啟用 ≠ 已在監聽端口",
    "shortcutPower": "執行 / 電源",
    "shortcutOther": "其他 服務單元",
    "cannotInstallFull": "目前無法真正安裝到系統：需要 系統變更權限已開啟 與管理員權限。「僅寫入範本」仍可產生管理目錄檔案。見",
    "policyWriteFull": "僅寫入範本 — 只寫 dataDir，不動 /etc",
    "policyNotEqualFull": "寫入範本 ≠ 服務已啟用 ≠ 已在監聽端口",
    "controlPlaneUnit": "控制面服務單元",
    "kpiRuntime": "運行狀態",
    "rawStateHint": "原始 unit 狀態見提示",
    "bootHint": "是否開機自啟",
    "kpiBoot": "開機自啟",
    "kpiCaps": "套用能力",
    "capsReady": "可安裝到系統",
    "capsBlocked": "未能套用",
    "unitFiles": "單元檔案",
    "unitFilesSub": "系統路徑與面板管理範本（兩者用途不同）",
    "systemUnitFile": "系統單元（/etc）",
    "systemUnitHint": "systemd 實際載入的 unit；安裝並啟用後會出現於此。",
    "managedUnitFile": "管理範本（dataDir）",
    "managedUnitHint": "面板寫入的範本，尚未等於已安裝到系統。",
    "managedPathHint": "dataDir/systemd/ysk-server.service",
    "fragmentPath": "systemd 片段路徑",
    "fromSystemd": "systemd 回報",
    "pid": "PID {{pid}}",
    "nextAction": "建議下一步",
    "controlRunningHint": "systemctl is-active = 活動",
    "aboutPolicyTitle": "套用政策",
    "aboutPolicySub": "寫範本與安裝到系統是兩步；裝完仍可重跑，不代表未完成。",
    "policyInstallFull": "安裝並啟用：複製到 /etc/systemd/system、daemon-reload、enable --now。需 root + EXECUTE。",
    "policyBlockedTitle": "無權限時封鎖",
    "policyNotEqualTitle": "狀態不等同"
  },
  "tabs": {
    "scrollLeft": "向左捲動分頁",
    "scrollRight": "向右捲動分頁",
    "about": "說明",
    "main": "操作",
    "stack": "軟件",
    "unknown": "無此分頁",
    "unknownHint": "此頁沒有名為 {{tab}} 的分頁。"
  },
  "terminal": {
    "tabSession": "連線",
    "target": "登入身份",
    "connect": "連線",
    "disconnect": "斷線",
    "user": "用戶",
    "size": "尺寸",
    "stateConnected": "已連線",
    "stateConnecting": "連線中",
    "stateIdle": "未連線",
    "connecting": "正在建立工作階段…",
    "connectedAs": "已以 {{user}} 登入",
    "disconnected": "已斷線",
    "error": "終端機錯誤",
    "wsError": "WebSocket 連線失敗",
    "exitCode": "結束碼 {{code}}",
    "needRootExecute": "系統 shell 需要超級用戶與系統變更權限。",
    "groupSystem": "系統",
    "groupProject": "專案",
    "unavailable": "不可用",
    "copyAll": "複製全部",
    "copyAllNeedConn": "請先連線 — 未連線時終端是空的",
    "placeholder": "選擇身份後按「連線」",
    "aboutTitle": "終端機說明",
    "aboutSub": "瀏覽器互動 shell（本機 OS 用戶），非任意遠端 SSH 客戶端。",
    "aboutWhat": "是什麼",
    "aboutWhatBody": "真實 PTY 登入 shell（bash -l）。專案用戶用 runuser；root 用 root shell。",
    "aboutReq": "需求",
    "aboutReqBody": "控制面須以 root 執行，並開啟 YSK_EXECUTE。",
    "aboutUsers": "身份",
    "aboutUsersBody": "可選 root，或已 OS 佈建的專案 Linux 用戶。",
    "stepUpRequired": "Root shell 需要 TOTP／救援碼",
    "stepUpHint": "帳戶已啟用 2FA 時，root 登入需再驗證。",
    "stepUpTitle": "確認 root shell",
    "stepUpDesc": "輸入驗證器代碼或救援碼。",
    "totpLabel": "TOTP／救援碼",
    "sessionStillOpen": "說明分頁開啟期間，工作階段仍保持連線。",
    "rootConfirmTitle": "開啟 root shell？",
    "rootConfirmDesc": "此工作階段是主機上不受限制的 root PTY。指令會寫入審計紀錄。",
    "rootConfirmBody": "僅在你打算執行具權限的主機指令時繼續。"
  },
  "uiInline": {
    "s27d9daa5": "已預填 runtime {{v0}} {{v1}}，可建立專案",
    "sb8eaefa3": "已預填 runtime {{v0}}，可建立專案",
    "s7d540128": "· {{v0}}",
    "s814bcc7c": "· {{v0}}",
    "s3f7c3eae": "建議更新",
    "s92e48065": "略過",
    "sdff0f697": "觀察",
    "s012f2d7e": "緊急更新",
    "s20455064": "目前篩選結果沒有可升級套件",
    "s9b34f8c3": "請先勾選可升級套件",
    "s8e3824cb": "批量更新 0/{{v0}}：準備中…",
    "sc2570ff7": "批量更新 {{v0}}/{{v1}}：{{v2}}",
    "s0bd0c471": "批量完成：成功 {{v0}}，失敗 {{v1}}",
    "s2980553a": "已重新掃描主機套件狀態",
    "s303ee0f7": "正在取消…（目前套件完成後停止）",
    "s21858fe5": "取消批量",
    "sddc05404": "關閉",
    "saf251c2a": "套件更新日誌（即時）",
    "s5929623c": "全選可升級",
    "s18b08919": "清除選擇",
    "se2b088fc": "更新已選 ({{v0}})",
    "sb2848bc7": "確認批量更新套件？",
    "sc1910cf2": "將依序升級 {{v0}} 個套件。需 root 且已開啟 EXECUTE。",
    "sc13bb38c": "所選包含高風險／需審批套件；確認即表示已審閱並同意套用。",
    "sea4ba90a": "已載入",
    "sdd78429a": "已寫入",
    "s9b6c1b03": "說明",
    "s858f4eca": "專案已刪除",
    "s090aa1a7": "此頁只管理獨立站點資源。專案的 Nginx 請到 Projects → 專案 → 網絡。",
    "sac96ec39": "控制面曾記錄安裝 {{v0}}，但主機探測未見執行檔。不算已安裝——請「重新探測」或重新安裝。",
    "sf7f7807b": "預設",
    "sc9530028": "載入最新版本中，或手動輸入",
    "s9602769e": "已裝 {{v0}} · 上游最新 {{v1}}",
    "sb8b5a353": "Go／Rust 可同時保留多個版本：先「安裝」缺少的版本，再「切換為預設」決定 PATH 用邊個。",
    "sac155c20": "可卸載非核心擴充（apt remove；不會卸 FPM/CLI）",
    "s23379974": "勾選擴充後按「安裝選定擴充」。此版本已在主機上，無需再裝 runtime。",
    "s7b6d4414": "尚未安裝 PHP {{v0}}：勾選擴充後按下方「安裝 PHP {{v0}}」一併裝核心+擴充（只有一個安裝按鈕）。",
    "s2e9a1b03": "安裝 PHP {{v0}}（含選定擴充）",
    "s62b73dd7": "擴充操作結果",
    "se23513e5": "卸載 PHP 擴充？",
    "sf8c8ff4b": "將 apt remove「{{v0}}」。核心 FPM/CLI 不會卸載。",
    "s7aa09150": "已安裝",
    "sbcbdbc49": "未安裝",
    "sae7738d0": "運行中",
    "sf3af7c5e": "未偵測",
    "sa1d77833": "失敗",
    "s75dddf52": "已停止",
    "s4e7f6152": "更新中 {{v0}}/{{v1}}：{{v2}}",
    "s72cac69e": "{{v0}}：{{v1}}",
    "sd1c15b6d": "{{v0}}：{{v1}}",
    "s7a90f74c": "已更新：{{v0}}",
    "s0aa24093": "{{v0}} 更新完成",
    "s5d92ffc3": "部分成功：{{v0}}；失敗：{{v1}}",
    "sa15a291f": "部分套件更新失敗",
    "sbb823c06": "失敗",
    "s68db1348": "{{v0}} 更新失敗",
    "s84a4e7c6": "正在安裝：{{v0}}…",
    "s2ca8a4f5": "需 root + EXECUTE；可能需要一兩分鐘。",
    "sd9419dc9": "安裝被阻擋（需 root+EXECUTE）",
    "s3ec3d449": "{{v0}} 未能安裝",
    "sbb8dfdeb": "已提交安裝：{{v0}}",
    "s18bb4b62": "{{v0}} 安裝完成／已提交",
    "se9a47def": "安裝未完成",
    "sdc0528a2": "{{v0}} 安裝失敗",
    "s69e60fb5": "沒有可更新版本",
    "s3f50fa6e": "正在安裝／更新 {{v0}} {{v1}}…（可能需要一兩分鐘）",
    "s1f5eef17": "下方會即時顯示 server 輸出，請勿關閉頁面。",
    "s2bf6b642": "更新被阻擋（需 root 且 YSK_EXECUTE=1）",
    "s9b4a58e8": "{{v0}} {{v1}} 未能安裝",
    "s6dc82720": "已安裝／更新 {{v0}} {{v1}}",
    "s94a1f025": "狀態已重新整理。若仍顯示有新版本，可再檢查或到執行環境頁確認。",
    "s73cae5a0": "{{v0}} {{v1}} 安裝失敗",
    "se1050a28": "總覽",
    "s8c29cb38": "執行環境",
    "s583f0654": "資料庫",
    "s4344c486": "域名與邊緣",
    "sed2550e1": "郵件與檔案",
    "scb435db5": "主機服務",
    "s97bbc1b7": "軟件中心",
    "s60a23151": "全部可管理軟件一覽：安裝狀態、服務健康、新版本提示；可進入管理頁或用於專案。",
    "s5387b55b": "重新整理",
    "s0b582c70": "目錄項目",
    "s4be2a3a4": "執行環境已裝",
    "s259e6f0e": "有新版本／可擴充",
    "s13b3f970": "需關注",
    "sdd33adf9": "系統倉庫可升級",
    "sdfaaf946": "目錄軟件與主機套件清單分開統計；實際套用可在更新中心或卡片一鍵確認。",
    "s78f03e20": "目錄軟件 {{v0}}",
    "sbf368054": "主機套件 {{v0}}",
    "s235a7426": "開啟更新中心",
    "s14249f75": "快捷",
    "saff76d0a": "常用分區與主機服務入口",
    "s24f12f4f": "可更新／可安裝版本",
    "s43a9fd7a": "執行環境：上游／面板新版本；服務：系統倉庫可升級。可一鍵套用套件或前往更新中心。",
    "sc45743bd": "全部軟件",
    "s00338fde": "確認套用系統套件更新？",
    "s0e05f4b7": "確認更新",
    "s4d0b4688": "取消",
    "s92b8bf67": "確認安裝軟件？",
    "s9af27043": "將安裝 {{v0}}：{{v1}}。需 root 且 YSK_EXECUTE=1。",
    "s28263d85": "確認安裝",
    "s2e37cbfa": "已裝：{{v0}}",
    "s7d52bb0c": "預設 {{v0}}",
    "s9f898b85": "上游約 {{v0}}",
    "s93dde991": "系統倉庫 {{v0}} → {{v1}}",
    "s9071dcb7": "已裝 {{v0}} · 已是倉庫最新",
    "s0b09f444": "版本 {{v0}}",
    "sf6cc774f": "系統未安裝此套件（可到管理頁安裝）",
    "s42f9c88b": "主機約 {{v0}} 個套件可升級",
    "sb72e8ebc": "正在檢查版本…或開啟管理頁設定",
    "sabac942e": "開啟管理頁安裝或設定",
    "sbd26894e": "有新版本",
    "s5985ee9a": "已是最新",
    "s090e6a43": "選擇版本",
    "s8253535d": "安裝／更新到 {{v0}}",
    "s1723f1d7": "安裝中…",
    "sd9db02d0": "更新",
    "sba60558e": "確認後更新 {{v0}}",
    "s706de938": "更新 {{v0}} 項",
    "s0f9ddc70": "安裝 {{v0}}",
    "sef864639": "安裝",
    "s59f613d5": "前往安裝／切換至 {{v0}}",
    "s78b1688f": "前往更新中心處理 {{v0}}",
    "s4989b5cf": "管理",
    "s72203f17": "服務",
    "s75817a35": "到專案頁，可將此 runtime 用於應用",
    "s6d449473": "用到專案",
    "s777e90e0": "建立資料庫管理專案",
    "sd8bc8ab3": "專案名稱已存在：{{name}}",
    "s09877be5": "資料庫管理專案已建立",
    "sd95910ce": "建立專案並部署",
    "sa72ef18d": "工具",
    "s4b2bec80": "專案名稱",
    "sd00c0d39": "會建立一個 PHP 專案；名稱不可重複",
    "sd7c669ac": "下載 phpMyAdmin（需要系統變更權限及外網）",
    "s9e5d3a97": "批量完成：成功 {{v0}}，失敗 {{v1}}",
    "s1f0a4bf9": "已取消（其餘未執行）",
    "s7193f51b": "批量完成：成功 {{v0}}，失敗 0",
    "sd93b8620": "已卸載 {{v0}} 個工具",
    "sd0ef129c": "卸載選定 ({{v0}})",
    "se6d47d0b": "工具操作結果",
    "se6436711": "安裝選定工具 ({{v0}})",
    "s1a27a3c4": "選定工具會隨下方「安裝 runtime」一併安裝（只有一個安裝按鈕）。",
    "s32add03e": "將卸載 {{v0}} 個已選工具。",
    "s3bca33b2": "選定工具",
    "s8072fa0d": "{{v0}} 已安裝（非預設）",
    "s2bf2b4c4": "此版本已安裝但不是目前預設。可「切換為預設」而無需重裝；亦可安裝其他版本並存。",
    "s42f3d613": "切換為預設 {{v0}}",
    "sdcdc5029": "上線未完成",
    "s55cc91e0": "部署或 Nginx 發佈未成功，可重試。",
    "s303f6113": "重試部署",
    "s3265f9ed": "重試發佈 Nginx",
    "s99cc48c1": "未載入 {{v0}} 範本；請重新整理或選「— 無 —」空白專案。",
    "sa87ceeff": "建立後立即部署並發佈 Nginx",
    "s38a63bcb": "固定埠（可選）",
    "s5ac95c29": "未發佈",
    "sc8f34a0d": "已寫入（未 reload）",
    "s07fb5671": "需先部署",
    "sa5f994e3": "發佈失敗",
    "s32dd17d9": "尚未有此網域的 SSL 證書。請先到「SSL 證書」申請／上載，再按發佈 + SSL。",
    "s5516cb5b": "站點狀態",
    "sed38f4ea": "上游",
    "sadb6ef47": "進程埠",
    "se7a422dd": "固定埠",
    "s2eff57b7": "儲存後需重新部署才會改進程埠",
    "s110671e6": "目前埠",
    "s549ea65e": "發佈",
    "s9dc5c003": "基本",
    "s04a32a1e": "SSL 相關按鈕已鎖定：請先到",
    "s564d50b7": "為網域申請／上載證書後再發佈 + SSL。",
    "sbb6c72f1": "({{v0}})",
    "sd9b695a5": "請先填寫網域，才能發佈 Nginx / SSL。",
    "scb85cfff": "請先為網域建立 SSL 證書",
    "s18c1af46": "儲存並發佈 + SSL",
    "s6a284cb0": "發佈 Nginx + SSL",
    "s85483ffb": "維護",
    "s6993c6ba": "隱藏",
    "s15671929": "顯示",
    "s56f99a6b": "永久刪除專案",
    "sa0f2f5c6": "將銷毀「{{v0}}」。此操作無法還原。",
    "sa6710b42": "永久刪除",
    "s06569331": "停止 systemd / PM2 / 本機進程",
    "sd20a5b0c": "移除 Nginx conf、PHP-FPM pool、Apache vhost（如有）",
    "s4ff53acc": "刪除 Linux 用戶與 home 目錄（安全路徑）",
    "s50dda2df": "保留 home 與 Linux 用戶（僅面板移除）",
    "sa7f90a4a": "從控制面資料庫移除專案",
    "se0d24557": "名稱",
    "s9a9e4e32": "刪除磁碟 home 與 Linux 用戶",
    "s1cf2a97b": "取消勾選則只從面板移除，檔案與系統用戶保留",
    "s51af87fd": "輸入專案名稱以確認",
    "s8b04d62f": "請輸入「{{v0}}」",
    "s49d55c8f": "共享 DNS zone / 郵箱 domain 不會自動刪除。",
    "s239f6551": "目錄軟件系統倉庫可升級：{{v0}}",
    "sa00380bd": "主機可升級套件：{{v0}}",
    "sb4e3bb0b": "請在執行環境頁安裝此版本",
    "sae926193": "無可用倉庫候選版本",
    "s52573ef8": "更新被阻擋（需 root+EXECUTE）",
    "s872d2fe0": "已套用 {{v0}} 更新",
    "s6a93c0ec": "載入版本中…",
    "s378e49b6": "已裝",
    "s7e805a12": "最新",
    "s74b39712": "已是最新／倉庫最新",
    "s03a87d5d": "重新檢查最新",
    "s53c07a48": "更新到 {{v0}}",
    "s425e8381": "安裝 {{v0}}",
    "s5bd1242f": "將升級 {{v0}}：{{v1}} → {{v2}}。需 root 且已開啟 EXECUTE。",
    "s296817b1": "安裝日誌（即時）",
    "s3568a3da": "串流中…",
    "s28256229": "已結束",
    "s3971290f": "等待 server 輸出…"
  },
  "updates": {
    "title": "智能更新",
    "body": "每日盤點、CVE 查詢、結構化風險建議，以及可審批的更新執行。",
    "risk": {
      "critical": "嚴重",
      "high": "高",
      "medium": "中",
      "low": "低"
    },
    "justNow": "剛剛",
    "secAgo": "{{n}} 秒前",
    "minAgo": "{{n}} 分鐘前",
    "hourAgo": "{{n}} 小時前",
    "highRiskN": "{{count}} 項高風險",
    "panelUpdate": "面板有更新",
    "footerNewVersion": "有新版本 {{version}}",
    "riskOk": "風險可控",
    "riskUnevaluated": "未評估 — 請先掃描 + OSV",
    "pendingScan": "待掃描",
    "packages": "套件",
    "highRisk": "高風險",
    "needApproval": "需審批",
    "hasCve": "有 CVE",
    "panel": "面板",
    "schedule": "排程",
    "reload": "重新載入",
    "osvTitle": "對前 12 個建議套件查 OSV（需外網）",
    "scanOsv": "掃描 + OSV",
    "cveNotChecked": "未檢查",
    "scanPkgs": "掃描套件",
    "tabInventory": "套件清點",
    "tabSelf": "面板自身",
    "badgeUpdate": "更新",
    "tabSchedule": "排程",
    "tabPolicy": "政策",
    "scanning": "掃描中…",
    "inventoryTitle": "套件清點",
    "inventoryDesc": "顯示 {{shown}} / {{total}} · 清點 {{when}}",
    "riskFilterAria": "風險篩選",
    "all": "全部",
    "upgradable": "可升級",
    "mediumFilter": "中",
    "lowUnmarked": "低／未標",
    "searchPh": "套件名 / 建議 / CVE…",
    "searchAria": "搜尋套件",
    "colPackage": "套件",
    "colVersion": "版本（已裝 → 套件管理 Candidate）",
    "installedTitle": "已安裝",
    "noUpgrade": "（無可用升級）",
    "colAdvice": "建議",
    "upgradeTo": "升級至 {{v}}",
    "sameVersion": "套件管理 Candidate 與已裝版本相同",
    "noNeedUpgrade": "無需升級",
    "emptyInventory": "尚無套件資料",
    "emptyInventoryDesc": "按頁面右上「掃描套件」由管理面板掃描主機",
    "emptyFilter": "沒有符合篩選的套件",
    "emptyFilterDesc": "試改風險篩選或清搜尋",
    "resetFilters": "重設篩選",
    "selfLoading": "載入自身更新狀態…",
    "selfTitle": "面板自身更新",
    "selfCheckFailed": "檢查失敗",
    "selfUpToDate": "已是最新",
    "selfAvailable": "有可用更新",
    "selfCurrent": "目前版本",
    "selfLatest": "最新版本",
    "selfChannel": "通道",
    "checkSelf": "檢查更新",
    "applySelf": "套用自身更新",
    "scheduleTitle": "自動掃描排程",
    "scheduleDesc": "定時清點套件；不自動升級",
    "enabled": "已啟用",
    "disabled": "已停用",
    "cron": "定時工作 表達式",
    "saveSchedule": "儲存排程",
    "policyTitle": "更新政策",
    "policyBody": "高風險與有 CVE 的套件預設需審批後才可套用。面板自身更新與系統 套件管理 升級分開處理。",
    "applyPkg": "套用套件升級",
    "rebootNeeded": "需重啟",
    "kernelRebootHint": "核心類套件套用後需要重新開機",
    "applyPkgConfirm": "確認升級 {{name}}？",
    "applyPkgDesc": "將對此主機執行 套件管理 升級。需 管理員權限與系統變更權限。",
    "lastScan": "上次掃描",
    "never": "從未",
    "cve": "CVE",
    "riskCol": "風險",
    "selfUpdatable": "可更新",
    "selfCurrentShort": "目前",
    "selfLatestShort": "最新",
    "applyPanelUpdate": "套用面板更新",
    "applySelfConfirmTitle": "套用面板更新？",
    "applySelfConfirmDesc": "將面板由 {{from}} 升到 {{to}} 並重啟服務。沒有試行。",
    "applyPanelAlreadyLatest": "已是最新面板版本",
    "recheck": "重新檢查",
    "aboutScope": "範圍",
    "aboutScopeV": "ysk-server 控制面 + catalog 服務 + runtime + 其餘 apt 套件",
    "aboutChannel": "頻道",
    "aboutChannelV": "npm 套件 ysk-server → GitHub release → apps/server/package.json；套用：npm i -g ysk-server@版本 或 git（YSK_SOURCE_ROOT）",
    "aboutFail": "失敗",
    "aboutFailV": "頻道不可用不會假裝已是最新；套用需 執行；git 後需重啟服務",
    "jobsTitle": "排程任務",
    "jobsSub": "控制面 scheduler（唯讀）· {{count}} 項",
    "noJobs": "尚無可見排程",
    "noJobsDesc": "未啟用或目前無 scheduler 任務",
    "lastRun": "上次 {{when}}",
    "scanPolicy": "掃描",
    "scanPolicyV": "掃描 ≠ 已升級；套用才會改系統",
    "highRiskPolicy": "高風險",
    "highRiskPolicyV": "需審批：按「套用」後會再開確認框才送出",
    "needApprovalHint": "前往「可升級」並篩選需審批套件",
    "applyNeedConfirm": "套用前會先開確認框",
    "probeFailed": "探測失敗",
    "notViaApt": "不經套件管理 — 無候選版本",
    "noCandidate": "套件管理無候選",
    "cveLabel": "CVE",
    "jobOpenGeo": "GeoIP 頁",
    "job": {
      "protection_probe": {
        "name": "防護探測",
        "hint": "定期收集防護訊號"
      },
      "updates_scan": {
        "name": "更新掃描",
        "hint": "重新整理套件清單"
      },
      "daily_backup": {
        "name": "每日備份",
        "hint": "排程 backup all"
      },
      "db_temp_expire": {
        "name": "過期臨時庫用戶",
        "hint": "清除過期臨時資料庫用戶"
      },
      "defense_auto_ban": {
        "name": "防護自動封鎖",
        "hint": "執行自動封鎖回合"
      },
      "defense_geoip_update": {
        "name": "GeoIP 更新",
        "hint": "下載 GeoIP 資料庫"
      },
      "log_auto_vacuum": {
        "name": "日誌清理",
        "hint": "journald 保留"
      },
      "email_dnsbl": {
        "name": "電郵 DNSBL",
        "hint": "郵件 DNSBL 檢查"
      },
      "validators_upgrade_scan": {
        "name": "驗證者升級掃描",
        "hint": "檢查驗證者映像／二進位更新"
      }
    },
    "permPolicy": "權限",
    "permPolicyV": "無 執行／管理員 → 已封鎖，不假成功",
    "osvPolicyV": "需外網，只補強前 12 項建議",
    "relatedAria": "相關",
    "scHost": "主機設定",
    "scReadiness": "就緒探測",
    "scReadinessD": "生產閘門",
    "scSystemd": "系統服務 單元",
    "scSystemdD": "控制面服務",
    "scSecurity": "安全中心",
    "scSecurityD": "審批 / 工具",
    "applyHighRisk": "套用高風險更新 {{name}}？",
    "highRiskUpdate": "高風險更新",
    "remoteUnknown": "未確認遠端",
    "hasUpdate": "有更新",
    "scanned": "已掃描 {{count}} 套件",
    "scannedWithOsv": "已掃描 {{count}} 套件（含 OSV）",
    "realUpgradeable": "真實可升級 {{count}}",
    "panelCheckFailed": "面板版本檢查失敗",
    "applyIncomplete": "套用未完成",
    "appliedPackage": "已套用套件更新",
    "updateFailed": "更新失敗",
    "updateIncomplete": "更新未完成",
    "appliedUpdate": "已套用更新",
    "panelRestarting": "面板正在重啟以載入新版本…",
    "panelRestarted": "面板已恢復 · {{version}}",
    "panelRestartWait": "已套用更新。若此頁未重新整理，請數秒後重新載入。",
    "reloadUi": "重新載入介面",
    "reloadUiTitle": "重新載入面板介面？",
    "reloadUiDesc": "面板服務已是 {{version}}。此分頁仍是舊前端，須重新載入才會換成新畫面。此頁未儲存的欄位會消失。",
    "aptCandidate": "套件管理 Candidate（候選版本）",
    "advice": {
      "update": "建議更新",
      "skip": "略過",
      "watch": "觀察",
      "urgent": "緊急更新"
    },
    "selectCol": "選擇",
    "selectAllUpgradable": "全選可升級",
    "clearSelection": "清除選擇",
    "updateSelected": "更新已選 ({{n}})",
    "batchConfirmTitle": "確認批量更新套件？",
    "batchConfirmBody": "將依序升級 {{n}} 個套件。需 root 且已開啟 EXECUTE。",
    "batchConfirmHighRisk": "所選包含高風險／需審批套件，我已審閱並同意套用。",
    "batchProgress": "批量更新 {{n}}/{{total}}：{{pkg}}",
    "batchDone": "批量完成：成功 {{ok}}，失敗 {{fail}}",
    "batchPartialFail": "部分失敗：{{list}}",
    "batchEmpty": "請先勾選可升級套件",
    "batchNoneUpgradable": "目前篩選結果沒有可升級套件",
    "batchCancel": "取消批量",
    "batchCancelling": "正在取消…（目前套件完成後停止）",
    "batchCancelled": "已取消（其餘未執行）",
    "batchRescanned": "已重新掃描主機套件狀態",
    "applyLogTitle": "套件更新日誌（即時）",
    "navBadgeTitle": "待處理更新：{{n}}",
    "aboutPolicySub": "掃描、套用、權限同 OSV 邊界；掃描不等於已升級。",
    "tabOverview": "總覽",
    "overviewHint": "伺服器會按排程掃描套件。安裝軟件請到各功能頁；本頁只負責檢查與套用升級。",
    "overviewStale": "掃描資料已過期。請立即掃描，或等候下次自動檢查。",
    "nextScan": "下次掃描",
    "autoScan": "自動掃描",
    "autoScanEnable": "啟用自動套件掃描",
    "scanInterval": "掃描間隔",
    "interval6h": "每 6 小時",
    "interval12h": "每 12 小時",
    "interval24h": "每 24 小時",
    "interval48h": "每 48 小時",
    "scheduleSaved": "已儲存掃描排程",
    "scanNow": "立即掃描",
    "viewUpgradable": "查看可升級",
    "installElsewhere": "安裝軟件（Nginx、PHP、資料庫等）請到對應功能頁，而非本頁。",
    "status": "狀態",
    "groupService": "服務",
    "groupRuntime": "執行環境",
    "groupOs": "系統套件",
    "notInstalled": "未安裝",
    "goToPage": "前往頁面",
    "hubHint": "本機 catalog 服務與 runtime。請掃描以重新整理。",
    "intervalDay": "每日",
    "intervalDays": "每 {{n}} 日",
    "intervalHour": "每小時",
    "intervalHours": "每 {{n}} 小時",
    "intervalMinutes": "每 {{n}} 分鐘",
    "intervalSeconds": "每 {{n}} 秒",
    "availableHint": "套件管理有較新候選版本的套件。",
    "servicesHint": "本機 catalog 服務。未安裝請前往該服務頁安裝。",
    "runtimeHint": "本機執行環境。升級請到各執行環境頁。",
    "needsReboot": "需重啟",
    "kernelRebootWarn": "安裝新 kernel 後通常要重啟才會生效。",
    "neverRun": "尚未執行",
    "scanOsvN": "掃描 + OSV（前 {{n}} 個）"
  },
  "users": {
    "userCount": "{{count}} 用戶",
    "users": "用戶",
    "packages": "方案",
    "suspended": "暫停",
    "securityCenter": "安全中心",
    "singleAdminNo2fa": "全機只有一名管理員且未開雙重驗證。請先在「安全」開啟管理員 2FA，再在本頁新增備援管理員。",
    "enableAdmin2fa": "開啟管理員 2FA",
    "addBackupAdmin": "新增備援管理員",
    "loading": "載入用戶與方案…",
    "userList": "用戶列表 ({{count}})",
    "userListDesc": "開啟詳情可改角色、密碼、方案、權限覆寫",
    "createUser": "建立用戶",
    "createUserPlus": "+ 建立用戶",
    "searchPh": "用戶名 / 角色 / 方案",
    "searchPkgPh": "方案名稱",
    "searchUsersAria": "搜尋用戶",
    "user": "用戶",
    "roles": "角色",
    "package": "方案",
    "packageAria": "{{name}} 方案",
    "noneOption": "— 無 —",
    "resume": "恢復",
    "suspend": "暫停",
    "impersonate": "模擬登入",
    "impersonateHint": "以該用戶開啟工作階段。離開時請用帳戶選單結束模擬。",
    "cannotDeleteSelf": "不能刪除目前登入的帳戶",
    "cannotImpersonateSelf": "你已用此帳戶登入",
    "openDetail": "詳情",
    "edit": "編輯",
    "resetPassword": "重設密碼",
    "newPassword": "新密碼",
    "saveUser": "儲存用戶",
    "userSaved": "已更新 {{name}}",
    "filterAll": "全部",
    "filterAdmin": "管理員",
    "filterOperator": "操作員",
    "filterViewer": "檢視者",
    "filterSuspended": "已暫停",
    "filterNoPkg": "無方案",
    "filter2faOff": "未開 雙重驗證",
    "filterOverrides": "有權限覆寫",
    "subscribers": "訂閱用戶",
    "subscribersN": "{{count}} 人",
    "ftp": "FTP",
    "ssh": "SSH",
    "databases": "資料庫",
    "bandwidth": "頻寬 MiB",
    "notes": "備註",
    "editPkg": "編輯方案",
    "pkgUpdated": "已更新方案 {{name}}",
    "pkgList": "方案列表 ({{count}})",
    "pkgListDesc": "可編輯配額；有訂閱用戶時不可刪除",
    "createPkg": "建立方案",
    "createPkgPlus": "+ 建立方案",
    "mailboxes": "信箱",
    "diskMiB": "碟 MiB",
    "noPackages": "尚未有方案",
    "noPackagesHint": "請用列表右上角建立方案，然後綁到用戶。",
    "createUserDesc": "密碼至少 8 位；建立後可於詳情改角色與權限",
    "username": "用戶名",
    "passwordHint": "至少 8 位",
    "role": "角色",
    "roleAria": "用戶角色",
    "createPkgDesc": "配額模板；可之後綁到用戶",
    "maxProjects": "最大專案數",
    "diskQuota": "磁碟 MiB",
    "custom": "自訂",
    "createdUser": "已建立用戶 {{name}}",
    "createdPkg": "已建立方案 {{name}}",
    "impersonateTitle": "模擬登入 {{name}}？",
    "deleteUserTitle": "刪除 {{name}}？",
    "deletePkgTitle": "刪除方案 {{name}}？",
    "impersonateDesc": "目前工作階段會被取代（約 2 小時）。",
    "deleteUserDesc": "此操作無法復原。",
    "deletePkgDesc": "若仍有用戶使用此方案，刪除會被拒絕。",
    "lastSeen": "上次活動",
    "neverSeen": "未見",
    "hostUsage": "主機用量",
    "hostUsageHint": "此為全機（主機）總量，非 per-用戶 硬隔離。方案上限只作對照。",
    "hostTotalsBadge": "主機合計",
    "opsChecklist": "運維 checklist",
    "opsCheck1": "只派 管理員 畀真正需要 privilege 的人；日常用 Operator。",
    "opsCheck2": "在「權限」分頁調級後記得 Save；可一鍵還原系統預設。",
    "opsCheck3": "方案有訂閱用戶時請勿刪；先 unassign。",
    "opsCheck4": "還原備份屬 destructive——預設只有 管理員；派畀 Operator 前要 Confirm。",
    "detailDesc": "分區管理帳戶、權限預覽與進階覆寫",
    "tabAccount": "帳戶",
    "tabAccess": "權限",
    "tabAdvanced": "進階",
    "rolePickHint": "揀最適合的工作角色；管理員 永遠全開",
    "accountSection": "帳戶設定",
    "packageHint": "託管方案配額模板（可選）",
    "resetPasswordOptional": "留空 = 不改密碼",
    "accountStatus": "帳戶狀態",
    "suspendedHint": "已暫停：無法登入面板",
    "activeHint": "正常：可以登入同操作",
    "accessHint": "依角色政策計出的實際能力（易讀標籤）",
    "noCapsInBand": "此級別暫無能力",
    "overridesHint": "只影響此用戶；不改角色預設",
    "adminNoOverrides": "管理員 用戶永遠功能全開，不需要亦不可以個人撤銷。",
    "grantsHint": "額外打開角色本身沒有的能力",
    "revokesHint": "從角色繼承中關閉個別能力（管理員 除外）",
    "searchCaps": "搜尋能力…",
    "noCapMatch": "沒有符合的能力",
    "no2fa": "未開 雙重驗證",
    "lastSeenValue": "上次活動 {{time}}",
    "roleName": {
      "admin": "管理員",
      "operator": "操作員",
      "viewer": "檢視者",
      "agent": "代理人"
    },
    "roleDesc": {
      "admin": "全功能、用戶與權限、危險操作。永遠全開。",
      "operator": "日常運維：服務、更新、DNS／SSL、建站等。",
      "viewer": "只讀：查看狀態、日誌、列表，不可以改。",
      "agent": "自動化／代理：低危寫入，受範圍限制。"
    },
    "securityTitle": "雙重驗證（此用戶）",
    "securityPerUserHint": "每位用戶獨立 TOTP／Passkey。管理員可清除此用戶 2FA，但不可以代持或共用 secret。",
    "securityStatusOn": "已啟用 2FA",
    "securityStatusOff": "未設定 2FA",
    "securitySessions": "活躍工作階段",
    "securityClearTotp": "強制清除此用戶 2FA",
    "securityClearTotpHint": "需 step-up 驗證；清除後該用戶下次只需密碼登入（直至自行重設 2FA）。",
    "securityClearConfirm": "輸入用戶名以確認清除 2FA",
    "securityClearOk": "已清除 {{name}} 的 2FA",
    "securitySelfNote": "要為自己設定 2FA，請到「安全 → 我的安全」。",
    "cannotModifySelf": "不能暫停或降級目前登入的帳戶",
    "cannotDeleteLastAdmin": "不能刪除最後一個管理員",
    "cannotDemoteLastAdmin": "不能暫停或降級最後一個管理員",
    "lockSelfHint": "這是目前登入的帳戶。已禁止刪除、暫停及更改角色，以免無法登入。",
    "lockLastAdminHint": "這是最後一個管理員。已禁止刪除、暫停及降級。",
    "demoteAdminTitle": "降級此管理員？",
    "demoteAdminDesc": "此用戶將失去完整管理員權限。請確認仍有其他管理員。",
    "quotaNonNeg": "數量與配額不可為負數。",
    "diskQuotaHint": "預設晶片以 GiB 計；自訂欄為 MiB。",
    "bandwidthHint": "0 代表不限。",
    "operatorHighRiskHint": "系統預設「操作員」含高危寫入（服務控制、防火牆、套件套用、MySQL、發佈 Nginx）。收窄只影響新授予的權限；修改預設會影響現有操作員。"
  },
  "validators": {
    "title": "驗證者節點 (Beta)",
    "subtitle": "在此主機安裝與管理 L1 節點。非託管 — 私鑰由你自行保管。",
    "beta": "Beta",
    "tab": {
      "nodes": "節點",
      "disk": "磁碟",
      "stack": "軟件",
      "about": "說明"
    },
    "empty": {
      "title": "尚未建立驗證者節點",
      "desc": "用建立精靈幾個步驟即可建立測試網節點。"
    },
    "refresh": "重新整理",
    "software": {
      "engine": "Docker Engine",
      "engineDesc": "驗證者節點以 Compose 專案運行。引擎未裝可在此安裝。映像清理請到 Docker 頁。",
      "client": "客戶端",
      "image": "映像",
      "present": "本機",
      "local": "已拉取",
      "missing": "未拉取",
      "size": "大小",
      "usedBy": "使用中",
      "unused": "無實例",
      "pull": "拉取釘選",
      "pulled": "已在本機",
      "pulling": "正在拉取 {{ref}}",
      "empty": "沒有釘選客戶端映像",
      "emptyDesc": "目錄不應為空。",
      "daemonDown": "Docker Engine 未運行",
      "source": "來源",
      "official": "官方最新",
      "officialNewer": "官方較新",
      "stale": "落後於釘選",
      "staleItem": "{{id}}（{{tag}}）",
      "pin": "本面板釘選",
      "openRelease": "發佈說明",
      "chooseOnInstance": "請到實例頁變更版本。拉取映像不會替已運行節點改 tag。"
    },
    "disk": {
      "title": "驗證者節點磁碟",
      "root": "資料目錄",
      "free": "可用",
      "used": "驗證者目錄",
      "fsUsed": "檔案系統已用",
      "leftoverTitle": "殘留資料（{{count}}）",
      "leftoverEmpty": "沒有孤立實例目錄",
      "leftoverDesc": "驗證者根目錄下、不在 store 的資料夾。確認無用後再刪。",
      "leftoverRemove": "刪除",
      "leftoverRemoveTitle": "刪除此殘留驗證者資料？",
      "leftoverRemoveDesc": "將永久刪除磁碟上的 {{path}}。這不是列表中的節點。",
      "browseRoot": "在檔案瀏覽開啟",
      "none": "尚未有實例資料",
      "warn": "磁碟用量偏高（70% 或以上）",
      "danger": "磁碟用量危急（85% 或以上）",
      "autoClear": "磁碟危急時自動清空最大的已停止實例（預設關閉）",
      "autoClearRisk": "破壞性：會刪除最大的已停止實例，不會再詢問。預設關閉。觸發後請查審計／日誌。",
      "autoClearConfirmTitle": "啟用自動清空？",
      "autoClearC1": "磁碟危急時會刪除最大的已停止實例，不會再詢問。",
      "autoClearThreshold": "觸發條件：檔案系統用量達 85% 或以上。",
      "autoClearCandidate": "目前候選：{{id}}",
      "autoClearCandidates": "已停止候選（有資料且較大者優先）：{{list}}",
      "autoClearNone": "目前沒有已停止實例可作為候選。"
    },
    "chain": {
      "eth": "Ethereum",
      "avax": "Avalanche",
      "near": "NEAR",
      "ada": "Cardano",
      "btc": "Bitcoin",
      "cosmos": "Cosmos Hub",
      "sui": "Sui",
      "aptos": "Aptos",
      "dot": "Polkadot",
      "sol": "Solana"
    },
    "network": {
      "hoodi": "Hoodi",
      "sepolia": "Sepolia",
      "mainnet": "主網",
      "fuji": "Fuji",
      "testnet": "測試網",
      "preview": "預覽",
      "preprod": "預生產",
      "westend": "Westend"
    },
    "networkKind": {
      "testnet": "測試網",
      "mainnet": "主網",
      "mixed": "主網＋測試網"
    },
    "profile": {
      "minimal": "精簡",
      "pruned": "Pruned",
      "validator-ready": "驗證者就緒",
      "rpc": "RPC"
    },
    "profileHelp": {
      "title": "四個設定檔有何分別",
      "desc": "精靈第三步可選精簡、Pruned、驗證者就緒、RPC。分別在磁碟用量同用途。各鏈建議容量在精靈顯示。面板不會保管質押私鑰。",
      "colName": "設定檔",
      "colUse": "用途",
      "colDisk": "磁碟",
      "colStake": "當驗證者",
      "useMinimal": "測試網或先試安裝。不是完整歷史。",
      "usePruned": "長期跟隨鏈頭。只留近期資料（Pruned）。",
      "useValidatorReady": "預留作日後出塊。金鑰須自行離線產生。",
      "useRpc": "給本機或其他服務查鏈。預設只聽 127.0.0.1。",
      "diskMinimal": "最少",
      "diskPruned": "中等（多於精簡）",
      "diskValidatorReady": "四者中最多",
      "diskRpc": "視鏈而定",
      "stakeNo": "不適合",
      "stakeYes": "可以 — 離線或設錯可能被罰",
      "stakeRpc": "不是驗證者",
      "minimal": "佔用磁碟最少。適合測試網或先試安裝。不是完整歷史，也不適合作為正式驗證者。",
      "pruned": "保留近期鏈狀態，刪去過舊區塊資料（Pruned）。磁碟多於精簡、少於完整節點。適合長期跟隨鏈頭。",
      "validatorReady": "預留較大磁碟，供日後以驗證者身分出塊。金鑰須自行離線產生；離線或設定錯誤可能損失質押金。",
      "rpc": "供本機或其他服務查詢鏈資料。RPC 預設只聽 127.0.0.1，不會公開到互聯網。"
    },
    "col": {
      "id": "識別碼",
      "chain": "鏈",
      "network": "網絡",
      "profile": "設定檔",
      "status": "狀態",
      "traffic": "流量",
      "disk": "磁碟"
    },
    "cli": {
      "usage": "用法： ysk-server validators list|chains|disk|get|status|checklist|logs|create|start|stop|restart|clear|upgrade|set-version|versions|policy|mithril|prune|switch-network|snapshot|compose|compose-write|rewrite-compose|software|pull|leftover-remove|stats|settings|producer-keys|producer-detach|near-account [--chain C] [--network N] [--profile P] [--el EL] [--cl CL] [--el-tag T] [--cl-tag T] [--node-tag T] [--client ID] [--tag T] [--data-path P] [--rpc-port N] [--id ID] [--path PATH] [--file PATH] [--image REF] [--upgrade POLICY] [--confirm TOKEN] [--kes-file P] [--vrf-file P] [--opcert-file P] [--accept-low-disk] [--accept-low-mem] [--accept-mainnet] [--refresh] [--execute] [--json]"
    },
    "clients": {
      "el": "執行層客戶端",
      "cl": "共識層客戶端",
      "version": "版本",
      "pin": "本面板釘選",
      "officialNewer": "官方較新",
      "olderThanPin": "舊於本面板釘選",
      "prerelease": "預發佈",
      "current": "目前運行",
      "source": "映像來源"
    },
    "mithril": {
      "label": "節點起來後用 Mithril 快照還原",
      "hint": "這是安裝成功後的一次性還原，不會寫入 compose。之後也可在實例頁再執行。",
      "action": "用 Mithril 還原"
    },
    "errors": {
      "notFound": "找不到驗證者節點實例",
      "invalidId": "實例識別碼無效",
      "diskLow": "此鏈、網絡與設定檔所需的可用磁碟空間不足",
      "memLow": "可用記憶體不足以滿足此鏈的記憶體上限",
      "diskUnknownMainnet": "無法量度可用磁碟，拒絕建立主網節點",
      "needDocker": "需要 Docker Engine",
      "composeFailed": "docker compose 失敗",
      "containerNotUp": "Compose 已啟動，但容器未能保持運行",
      "probeFailed": "節點尚未回應 RPC。請在本頁查看日誌。",
      "oom": "記憶體不足。請設定記憶體上限或增加 RAM，然後重新啟動。",
      "nofile": "程序已達開啟檔案上限（nofile）。請提高 ulimits.nofile 後重新啟動。",
      "noContainer": "此實例沒有 Compose 容器。",
      "restarting": "容器正在重新啟動。請在本頁查看日誌。",
      "restartingCount": "容器正在重新啟動（第 {{n}} 次）。請在本頁查看日誌。",
      "needConfirm": "清空須 confirm=實例識別碼 或 CLEAR",
      "mithrilAdaOnly": "Mithril 還原只適用於 Cardano",
      "needMithrilConfirm": "Mithril 需要 confirm=實例識別碼 或 MITHRIL",
      "mithrilBlocked": "Mithril 的 docker run 被允許清單拒絕",
      "mithrilKey": "無法載入 Mithril genesis 驗證金鑰",
      "mithrilFailed": "Mithril 快照下載失敗",
      "pruneFailed": "清理失敗",
      "switchNeedStop": "轉網絡前請先停止節點",
      "switchNeedClear": "轉網絡會清空鏈資料。請用實例識別碼或 CLEAR 確認",
      "composeMissing": "找不到 Compose 檔",
      "composeNotManaged": "拒絕寫入非 YSK 管理的 Compose 檔",
      "badDataPath": "資料路徑必須是絕對目錄，並且不可使用系統路徑",
      "portInUse": "這個 RPC 埠已被另一個驗證者實例使用",
      "badTag": "此客戶端版本不是該映像的官方 tag",
      "needVersionConfirm": "變更版本須 confirm=實例識別碼",
      "needMainnetVersionAck": "主網變更版本須 acceptMainnet",
      "snapshotUnsupported": "此鏈沒有在允許清單內的快照來源",
      "snapshotLookup": "無法解析官方快照指標",
      "needSnapshotConfirm": "還原快照須 confirm=實例識別碼 或 SNAPSHOT",
      "snapshotBlocked": "快照的 docker run 被允許清單拒絕",
      "snapshotFailed": "快照下載或解壓失敗",
      "producerAdaOnly": "營運憑證只適用於 Cardano",
      "needProducerConfirm": "掛上營運憑證須 confirm=實例識別碼 或 PRODUCER",
      "needMainnetProducerAck": "主網掛上營運憑證須 acceptMainnet",
      "producerColdRejected": "拒絕 cold 或 pool 擁有者簽名金鑰。cold 金鑰須保持離線。",
      "producerTooLarge": "金鑰檔大於 64 KiB",
      "producerBadType": "此檔不是 KES 金鑰、VRF 金鑰或 operational certificate",
      "producerEmpty": "請至少提供 kes、vrf 或 opcert 其中一份",
      "switchNeedDetachProducer": "轉網絡前請先卸下營運憑證",
      "nearAccountInvalid": "池名稱須為短名（或完整 {pool}{factory} 帳號）。",
      "nearKeyMissing": "缺少 validator_key.json 或沒有 public_key。請先啟動節點，等待 neard init。"
    },
    "notes": {
      "beta": "此功能屬 Beta。變更主機須 root 及 YSK_EXECUTE=1。",
      "noKeys": "YSK Server 不會產生或保存質押私鑰。",
      "dockerSoon": "安裝與啟動由此頁精靈提供。變更主機須 root 及 YSK_EXECUTE=1。",
      "dryCreate": "已寫入實例規格與 compose（dry-run）。要啟動容器請加 --execute 及 YSK_EXECUTE=1。",
      "dryStart": "啟動為 dry-run。請加 --execute 及 YSK_EXECUTE=1。",
      "dryStop": "停止為 dry-run。請加 --execute 及 YSK_EXECUTE=1。",
      "dryClear": "清空為 dry-run。請加 --execute 及 YSK_EXECUTE=1。",
      "created": "已建立節點並啟動 compose",
      "started": "已啟動節點",
      "stopped": "已停止節點",
      "cleared": "已清空鏈資料",
      "dryMithril": "Mithril 還原為試行。請加 --execute 及 YSK_EXECUTE=1。",
      "mithril": "已用 Mithril 還原快照並重啟節點",
      "dryPrune": "清理為試行。請加 --execute 及 YSK_EXECUTE=1。",
      "pruned": "已清理此專案未用映像",
      "pruneProfile": "客戶端原生修剪靠 pruned／minimal 設定檔。要改請重建實例。",
      "sameNetwork": "已經在這個網絡",
      "drySwitch": "轉網絡為試行。",
      "switched": "已轉網絡並清空鏈資料",
      "dryCompose": "會寫入 compose.yml",
      "composeWrote": "已寫入 compose.yml",
      "statsEmpty": "沒有運行中的容器可量度",
      "autoClearNone": "沒有已停止的實例可供自動清空",
      "drySnapshot": "快照還原為試行。請加 --execute 及 YSK_EXECUTE=1。",
      "snapshotEthEl": "已還原 ethPandaOps 執行層封存，並重設共識層以用 checkpoint sync",
      "snapshotEthCl": "已重設共識層資料，使用官方 checkpoint sync",
      "snapshotNear": "已清空 NEAR 資料；compose 會重新用官方 genesis 與 epoch sync 初始化",
      "nativePrune": "已執行客戶端原生清理指令",
      "dryProducer": "掛上營運憑證為試行。請加 --execute 及 YSK_EXECUTE=1。",
      "dryProducerDetach": "卸下營運憑證為試行。請加 --execute 及 YSK_EXECUTE=1。",
      "producerPartial": "已寫入熱金鑰。KES、VRF、opcert 齊了才會以 block producer 啟動。",
      "producerAttached": "已掛上熱金鑰，compose 改為 block producer",
      "producerDetached": "已卸下熱金鑰，compose 改回 relay",
      "dryDelete": "刪除屬預演。要真正套用須 --execute 與 YSK_EXECUTE=1。",
      "deleted": "已刪除節點",
      "leftoverRemoved": "已刪除殘留 {{path}}",
      "dryNearAccount": "將會把 account_id 設為 {{account}}（須 --execute）。不會改 secret。",
      "nearAccountWrote": "已把 account_id 設為 {{account}}。未改 secret。若節點在運行請重啟。"
    },
    "create": "建立節點",
    "wizard": {
      "title": "建立節點",
      "stepOf": "第 {{n}}／{{total}} 步",
      "stepChain": "鏈",
      "stepNetwork": "網絡",
      "stepProfile": "設定檔",
      "stepSummary": "摘要",
      "needDocker": "未安裝 Docker Engine。請先安裝 — 此按鈕保持停用。",
      "diskNeed": "此設定檔約需 {{need}} · 可用 {{free}}",
      "diskNeedNetwork": "此網絡預設精簡（Minimal）約需 {{need}} · 可用 {{free}}",
      "profileHint": {
        "minimal": "最小同步——磁碟最輕，不適合質押。",
        "pruned": "只保留近期歷史（Pruned）。比完整存檔小，仍可用作 RPC。",
        "validator-ready": "按驗證者角色預留磁碟。比精簡佔用更多空間。",
        "rpc": "公開 RPC 節點——不是質押驗證者。"
      },
      "diskShort": "可用磁碟不足以建立此鏈／網絡／設定檔",
      "diskShortDetail": "需要 {{need}} · 可用 {{free}} · 還差 {{short}}",
      "memShort": "可用記憶體不足以滿足此鏈的記憶體上限",
      "memShortDetail": "需要 {{need}} · 可用 {{free}} · 還差 {{short}}",
      "needCustomPath": "請輸入絕對資料路徑",
      "previewId": "節點識別碼",
      "previewCompose": "Compose 專案",
      "profileSeeAbout": "四個設定檔的分別見「說明」分頁。",
      "back": "上一步",
      "next": "下一步",
      "install": "安裝",
      "mainnetWarn": "主網需要大量可用磁碟（ETH 常達 800 GiB 或以上）。建議先用測試網。",
      "mainnetAck": "我明白：主網會用很多磁碟空間。若把這台機器當驗證者，離線或設定錯誤，質押的幣可能被罰走。我仍要建立主網節點。",
      "lowDiskAcked": "可用磁碟低於建議值。你已確認仍要建立；空間不足時同步可能中斷。",
      "lowMemAcked": "可用記憶體低於此鏈的記憶體上限加 1 GiB 預留。你已確認仍要建立；節點可能因記憶體不足而中止。",
      "heavyWarn": "此鏈負載很重（大量磁碟與高 IOPS）。Solana 主網通常需要 2 TiB 或以上。",
      "memory": "記憶體上限",
      "cpus": "CPU 上限",
      "dataPath": "資料路徑",
      "rpcPort": "RPC 埠",
      "limitNone": "不限",
      "rpcDefault": "預設",
      "customPath": "使用自訂資料路徑",
      "installConfirmTitle": "安裝此節點？",
      "installConfirmDesc": "{{chain}} · {{network}} · {{profile}}。約需 {{disk}} 磁碟。拉取映像可能需時頗長。",
      "installC1": "可能下載數 GiB 映像。",
      "installC2": "可取消面板任務；已拉取的映像不會自動刪除。",
      "installC3": "主網會用很多磁碟。若當驗證者，離線或設定錯誤，質押的幣可能被罰走。請輸入節點識別碼以確認。",
      "dockerAbout": "安裝與啟動節點需要 Docker Engine。",
      "dockerAboutOk": "已安裝 Docker Engine。",
      "dockerAboutMissing": "未安裝 Docker Engine。請到 Docker 頁安裝。",
      "rewriteCompose": "重寫 compose",
      "rewriteComposeTitle": "用目前 adapter 重寫 compose.yml？",
      "rewriteComposeDesc": "會覆寫 {{id}} 的產生檔，只使用本產品為此鏈附帶的旗標。",
      "chainMeta": "最少 {{disk}} · {{clients}} 個客戶端"
    },
    "actions": {
      "detail": "詳情",
      "start": "啟動",
      "stop": "停止",
      "restart": "重新啟動",
      "clear": "清空",
      "upgrade": "升級",
      "setVersion": "變更版本",
      "clearConfirm": "輸入實例識別碼或 CLEAR",
      "prune": "清理映像",
      "switchNetwork": "轉網絡",
      "removeUnit": "一併刪除 compose／實例紀錄",
      "restoreAfter": "清空後還原快照",
      "delete": "刪除",
      "deleteTitle": "刪除 {{id}}",
      "deleteDesc": "此動作會從面板移除節點。",
      "deleteC1": "會停止並移除 Docker Compose",
      "deleteC2": "會刪除磁碟上的鏈資料",
      "deleteC3": "會刪除實例紀錄",
      "pruneTitle": "清理未用映像",
      "pruneDesc": "輸入實例識別碼，以清理此節點 Compose 未用映像。",
      "pruneC1": "會刪除此 Compose 專案標籤下未使用的映像。",
      "clearTitle": "清空 {{id}}",
      "clearC1": "會刪除磁碟上的鏈資料。",
      "clearC2": "實例仍留在面板，狀態為已停止、無資料。",
      "switchTitle": "轉網絡",
      "switchC1": "會先停機並清空鏈資料，再寫入新網絡。"
    },
    "policy": {
      "label": "升級政策",
      "manual": "手動",
      "notify": "通知",
      "auto-safe": "自動（安全）",
      "auto-all": "自動（全部）"
    },
    "logs": {
      "empty": "尚無日誌",
      "follow": "跟隨日誌"
    },
    "compose": {
      "label": "Compose 檔",
      "save": "儲存 compose"
    },
    "snapshot": {
      "action": "還原快照",
      "mithril": "Cardano 用 Mithril 做認證快照還原。",
      "eth": "Ethereum 主網用官方 checkpoint sync 引導共識客戶端。執行層繼續 snap sync。",
      "ethEl": "Hoodi／Sepolia 可還原 ethPandaOps 執行層封存，再用 checkpoint sync 引導共識層。",
      "avax": "Avalanche 在 compose 設定檔使用 state-sync。",
      "near": "官方免費 NEAR tar 快照已停用。還原會清空資料，再用官方 genesis 與 epoch sync。",
      "none": "此鏈未設定快照來源。"
    },
    "producer": {
      "title": "Block producer 熱金鑰",
      "hint": "不是填 IP。請上傳離線機產生的 KES、VRF 與 operational certificate。cold 金鑰不要放在此主機。",
      "warn": "此節點已公開 P2P，掛上後會出塊。官方拓撲把 producer 放在內網。這三份檔是熱金鑰。",
      "kes": "KES",
      "vrf": "VRF",
      "opcert": "opcert",
      "missing": "未掛上",
      "present": "已掛上 {{fp}}",
      "presentShort": "已在主機",
      "queuedShort": "待套用",
      "queued": "已選 · {{name}}",
      "fileHint": "常見檔名 {{file}}",
      "dropOrBrowse": "將 {{file}} 拖放至此，或瀏覽",
      "dropping": "放開以掛上 {{label}}",
      "browse": "瀏覽",
      "clearFile": "移除",
      "choose": "選擇檔案",
      "apply": "套用並以 block producer 重啟",
      "detach": "卸下並改回 relay",
      "applyTitle": "將熱金鑰掛到 {{id}}？",
      "applyDesc": "KES、VRF、opcert 會寫入實例 keys 目錄，並重寫 compose。容器會以 block producer 重啟。",
      "applyC1": "cold 金鑰須保持離線。不要上傳 cold.skey。",
      "applyC2": "檔案有效時，運行中的節點可以出塊。",
      "applyC3": "主網：離線或設定錯誤會錯過出塊。",
      "detachTitle": "從 {{id}} 卸下營運憑證？",
      "detachDesc": "會從此主機刪除熱金鑰，compose 改回 relay。",
      "detachC1": "節點將不再出塊。",
      "mainnet": "主網：我明白此主機會保存熱金鑰並出塊。"
    },
    "stake": {
      "title": "準備質押（私鑰由你保管）",
      "offlineKeys": "離線產生金鑰。面板永不保存。",
      "deposit": "在官方 launchpad 完成存款／登記。",
      "withdrawal": "自行設定提取憑證。",
      "monitor": "在此頁留意磁碟、對等節點與升級徽章。"
    },
    "playbook": {
      "overviewTitle": "各鏈如何質押",
      "overviewDesc": "本面板只負責運行節點。錢包與金鑰由你保管。以下只連官方網站。請勿在此輸入助記詞。",
      "colChain": "鏈",
      "colModel": "如何登記",
      "colMin": "常見最低額",
      "colWallet": "你使用的錢包",
      "colPanel": "本面板負責",
      "yskDoes": "本面板會做",
      "youDo": "你要自己做",
      "steps": "步驟",
      "never": "請不要",
      "official": "官方連結",
      "seeAbout": "完整步驟見「說明」分頁。",
      "nodeIdReady": "NodeID（來自此節點）",
      "nodeIdPending": "節點完成同步並回應 RPC 後，才會顯示 NodeID。",
      "blsReady": "BLS 公鑰",
      "blsProof": "BLS 持有證明",
      "blsPending": "節點回應 RPC 後，才會顯示 BLS 憑證。",
      "copyAll": "全部複製",
      "copyNamed": "複製「{{label}}」",
      "nearStakeKey": "質押公鑰",
      "nearStakeKeyPending": "首次啟動完成 neard init 後出現。RPC 未就緒不代表尚未產生金鑰。",
      "nearAccountId": "金鑰檔 account_id",
      "nearAccountIdPending": "池建立後須改成 {{pool}}{{suffix}}。本面板只寫此欄，永不寫入 secret_key。",
      "nearFactory": "質押池 factory",
      "nearPublicAddr": "Public P2P（同儕）",
      "nearPublicAddrPending": "首次啟動把 WAN:{{port}} 寫入 config.json 後出現。",
      "nearCreateCommand": "create_staking_pool 命令",
      "nearPointing": "質押池合約不以本伺服器 IP 指向節點，而是存放此節點的 stake public key。同儕使用上方 Public P2P（主機埠 {{port}}）。RPC 僅本機。",
      "nearAccountIdHint": "池建立後，在此寫入 account_id（無須人手改檔）。面板永不寫入 secret_key。",
      "cosmosPubkey": "共識公鑰",
      "cosmosPubkeyPending": "gaiad init 寫入 priv_validator_key.json 後出現。RPC 未就緒不代表尚未產生金鑰。",
      "cosmosChainId": "chain-id",
      "cosmosP2p": "Public P2P（external_address）",
      "cosmosP2pPending": "首次啟動把 tcp://WAN:{{port}} 寫入 config.toml 後出現。",
      "ethBeacon": "Beacon API（本機）",
      "ethBeaconPending": "此主機的 beacon HTTP。請自行把 validator client 對準此 URL — 此 compose 沒有 VC。",
      "cosmosCreateCommand": "create-validator 命令",
      "cosmosCreateJson": "validator.json（gaiad v28）",
      "copyFailed": "複製失敗",
      "solIdentity": "Identity 公鑰",
      "solIdentityPending": "RPC 回應 getIdentity 後出現。本進程為 --no-voting，除非你自行建立 vote account。",
      "adaP2pPort": "Relay P2P 埠",
      "adaP2pPending": "請把本主機公開 IPv4（或 DNS）與此埠寫入池註冊證書。topology.json 的 localRoots 只連你自己的 block producer。本面板不探測 WAN。",
      "notPosTitle": "不是權益證明",
      "notPosBody": "此處的 Bitcoin 是完整或 Pruned 節點。本頁沒有質押錢包。",
      "eth": {
        "model": "本 compose 只跑執行層 + beacon，沒有 validator client。請在官方 launchpad 存入 32 ETH。",
        "min": "32 ETH + 手續費",
        "wallets": "MetaMask、Ledger、Trezor — 只在官方 launchpad 使用",
        "panel": "運行 EL + beacon。RPC 與 beacon API 僅本機。compose 沒有 validator client。",
        "honesty": "此實例只是執行層 + beacon。compose 沒有 validator client。把 keystore 放進 beacon 資料目錄不會開始 attest。存款合約不以本伺服器 IP 指向節點。",
        "yskDoes": [
          "安裝並啟動執行層與 beacon 客戶端。",
          "顯示磁碟、對等節點與升級狀態。",
          "不運行 validator client，亦不載入簽署 keystore。"
        ],
        "youDo": [
          "用官方 launchpad 或 staking-deposit-cli 自行產生 keystore，提取地址填入你的 ETH 錢包。",
          "在本網絡的官方 launchpad 存入 32 ETH。",
          "自行運行 validator client（不是此 compose），對準此實例本機 beacon API。"
        ],
        "steps": [
          "等待執行層與 beacon 同步完成。",
          "開啟此網絡的官方 launchpad（本頁有 Hoodi 或 Mainnet）。Sepolia 不提供 launchpad 按鈕。",
          "離線用 staking-deposit-cli 產生 keystore。提款地址設為你自己的 ETH 錢包。",
          "在 launchpad 存入 32 ETH（另留 gas）。",
          "自行運行 validator client，指向本卡的 beacon URL（示例：lighthouse vc --beacon-nodes）。此 compose 沒有 VC — 把 keystore 放入 beacon 資料目錄不會開始 attest。"
        ],
        "never": [
          "不要把助記詞或提款金鑰交給任何人，包括本面板。",
          "不要把簽署 keystore 上傳到託管雲。",
          "不要指望把 keystore 複製進 beacon 資料目錄後本頁會開始 attest。"
        ]
      },
      "avax": {
        "model": "在 Core 或 Ledger 用運行中的 NodeID 與 BLS 證明，於 P-Chain 登記驗證者。",
        "min": "2,000 AVAX + 手續費（Fuji 為 1 AVAX）；最少 14 日",
        "wallets": "Core、Ledger",
        "panel": "運行 avalanchego；RPC 回應後可顯示 NodeID 與 BLS",
        "yskDoes": [
          "運行 avalanchego，RPC 只聽本機。",
          "節點回應 RPC 後顯示 NodeID 與 BLS 憑證。"
        ],
        "youDo": [
          "在 Core 或 Ledger 持有 AVAX。",
          "在 Core 用此節點的 NodeID 與 BLS 證明新增驗證者。"
        ],
        "steps": [
          "等待此節點同步，並出現 NodeID／BLS 列（須 RPC）。",
          "複製 NodeID、BLS 公鑰與 BLS proof of possession。",
          "在 Core 網頁（Staking → Validate），或經 Core 用 Ledger，在 P-Chain 登記。交易不收伺服器 IP。",
          "主網至少 2,000 AVAX、最短 14 日，並預留手續費。Fuji 為 1 AVAX。"
        ],
        "never": [
          "不要把 AVAX 轉入本面板。",
          "不要分享 Core 或 Ledger 的復原短語。"
        ]
      },
      "ada": {
        "model": "以離線 cold／KES／VRF 金鑰經營 stake pool，不是瀏覽器錢包一鍵操作。",
        "min": "質押金額由你決定（見官方文件）",
        "wallets": "官方 stake pool 工具（cold 金鑰保持離線）",
        "panel": "先以 relay 運行 cardano-node；可在本頁掛上熱鑰。",
        "honesty": "此實例預設為 relay。鏈上登記 pool 用你離線保管的 cold 金鑰。同儕與拓撲使用本主機公開 IPv4 與本卡顯示的 P2P 埠 — 面板不探測 WAN。",
        "yskDoes": [
          "運行 cardano-node，並在支援時提供 Mithril 快照還原。",
          "你提供時掛上 KES、VRF 與 opcert。拒絕 cold 金鑰。"
        ],
        "youDo": [
          "離線產生池金鑰。",
          "用官方 Cardano CLI 註冊池。把本機公網 IPv4 或 DNS 與 relay P2P 埠寫入池註冊證書。",
          "在本頁掛上 KES、VRF 與 opcert。不要上傳冷鑰。"
        ],
        "steps": [
          "閱讀官方 operate-a-stake-pool 指南。",
          "在離線機器產生 cold、KES、VRF 金鑰。",
          "鏈上註冊池。在該證書廣告 relay（--pool-relay-ipv4 或 DNS + 本卡 P2P 埠）。公眾發現靠證書，不是 topology.json。",
          "在本實例頁掛上 KES、VRF 與 operational certificate。冷鑰會被拒絕。",
          "topology.json 的 localRoots 只連你自己的 block producer（advertise: false）。本面板不查 WAN 位址。"
        ],
        "never": [
          "不要當成 MetaMask 一鍵質押。",
          "不要把冷鑰放在驗證者主機。",
          "不要以為只改 topology.json 就能在鏈上登記 relay。"
        ]
      },
      "near": {
        "model": "在官方 factory 建立 staking-pool 合約。合約存放此節點的 public key，不是伺服器 IP。",
        "min": "見官方驗證者文件（建立池須 30 NEAR，另加質押）",
        "wallets": "官方 NEAR 錢包／lockup",
        "panel": "運行 neard；表單填好 create_staking_pool；池建立後只寫入 account_id。",
        "yskDoes": [
          "運行 neard，RPC 只在本機，P2P 在 24567。",
          "init 後顯示質押公鑰、公開 P2P 位址與 factory。",
          "用池名稱、擁有人與公鑰填好 create_staking_pool。池建立後只寫 account_id — 永不改 secret_key，永不送出交易。"
        ],
        "youDo": [
          "啟動節點，等待本頁出現公鑰。",
          "填池名稱與擁有人，然後複製命令。",
          "用你自己的 NEAR 錢包或 near-cli 簽署 create_staking_pool。",
          "返回本頁寫入 account_id。再從錢包向該池質押。"
        ],
        "steps": [
          "啟動節點，等待 neard init 後公鑰出現（RPC 未就緒不代表尚未產生金鑰）。",
          "填入池短名與擁有人帳號。複製已填好的 create_staking_pool 命令。",
          "用你的錢包呼叫 factory（測試網 pool.f863973.m0／主網 poolv1.near），並付 30 NEAR 作儲存。命令使用 --accountId；若你的 near CLI 要用 --account_id，請依該 CLI 的 --help。",
          "池建立後，在本頁按「寫入 account_id」（確認字為實例識別碼）。不要人手改 validator_key.json。",
          "若節點已在運行請重啟。等待 RPC 回應且同步完成後再質押大量金額。對等端使用 Public P2P — 合約不收 IP。"
        ],
        "never": [
          "不要在本面板貼上助記詞。",
          "不要把本伺服器 IP 寫進合約。",
          "不要期望面板代發 create_staking_pool 交易。"
        ]
      },
      "cosmos": {
        "model": "用操作者錢包送出 create-validator。交易存放此節點的共識公鑰，不是伺服器 IP。",
        "min": "見官方 Cosmos Hub 文件（自行質押以 uatom 計）",
        "wallets": "Keplr 或其他由你控制的 Cosmos 錢包",
        "panel": "運行 gaiad v28；顯示共識公鑰；表單填好 validator.json 與 create-validator。永不寫入 priv_validator_key.json，亦不代發交易。",
        "honesty": "此 gaiad 為 v28（JSON 檔）。Hub 文件仍用 flags — 在此節點會失敗。交易存放此節點的共識公鑰，不是伺服器 IP。同儕使用 Public P2P。RPC 僅本機。本面板不代發交易，亦不讀取 priv_key。",
        "yskDoes": [
          "運行 gaiad，RPC 只在本機，P2P 在 26656。minimum-gas-prices 為 0.005uatom。",
          "init 後顯示共識公鑰、chain-id 與公開 P2P。",
          "用數量、moniker、--from 與共識公鑰填好 validator.json 與 gaiad v28 命令。永不寫入 priv_validator_key.json，永不代發交易。"
        ],
        "youDo": [
          "啟動節點，等待本頁出現共識公鑰。",
          "填數量、moniker 與 --from。先複製 validator.json，再複製 gaiad 命令。",
          "用 Keplr 或你控制的 gaiad 金鑰簽署。不要把該助記詞與本機共識金鑰混用。"
        ],
        "steps": [
          "啟動節點，等待 gaiad init 後共識公鑰出現（RPC 未就緒不代表尚未產生金鑰）。",
          "填自我委託（1atom = 1 ATOM，或 uatom）、moniker 與 --from。複製 validator.json，再複製 gaiad 命令。此節點為 gaiad v28：用 JSON 檔，不是 Hub 文件的 flags。主網 chain-id 為 cosmoshub-4，測試網為 provider。",
          "複製命令的 --gas-prices 為 0.005uatom，對齊此節點。不要貼上 Hub 文件的 0.0025uatom 示例，亦不要貼 flags 版 create-validator。",
          "儲存 validator.json，用 operator 錢包廣播。交易不收伺服器 IP。同儕使用 tcp://WAN:{{port}}。",
          "等待 RPC 回應且同步完成後再大量綁定。"
        ],
        "never": [
          "不要把 operator 錢包助記詞與共識金鑰混用。",
          "不要在此輸入錢包助記詞。",
          "不要把此伺服器 IP 寫進 create-validator。",
          "不要貼上 Hub 文件的 --amount／--pubkey flags — 此 gaiad 為 v28（validator.json）。",
          "不要在此節點使用 0.0025uatom gas — compose 最低為 0.005uatom。"
        ]
      },
      "sol": {
        "model": "本 compose 以 --no-voting 運行 Agave。vote account 與 withdrawer 用官方 Solana 工具建立，不是本面板。",
        "min": "見官方維運文件（硬件與磁碟需求很高）",
        "wallets": "你控制的官方 Solana CLI／錢包",
        "panel": "以 --no-voting 運行 Agave 同步節點。RPC 回應後可顯示 identity pubkey。",
        "honesty": "本進程為 --no-voting。在你用官方 Agave CLI 建立 vote account 並改啟動方式之前，不會投票、也不會賺取質押。本面板不移除 --no-voting。",
        "yskDoes": [
          "運行 Agave 客戶端，並警告磁碟需求。",
          "RPC 回應 getIdentity 後顯示 identity pubkey。",
          "不建立 vote account，亦不開始投票。"
        ],
        "youDo": [
          "在你控制的機器上，用官方 Solana 工具建立 vote 與 authorized-withdrawer 金鑰。",
          "用官方 CLI 建立 vote account，並使用此處的 identity pubkey。",
          "此 compose 維持 --no-voting。"
        ],
        "steps": [
          "確認本機磁碟與 IOPS 足夠（主網通常 2 TiB 或以上）。",
          "等待 RPC 回應，然後複製本頁的 identity pubkey。",
          "用官方 Solana 工具在你控制的機器產生 vote 與 authorized-withdrawer 金鑰，然後 solana create-vote-account。",
          "此 compose 維持 --no-voting。建立 vote account 不會令此進程開始投票。"
        ],
        "never": [
          "不要指望本面板有瀏覽器錢包按鈕。",
          "不要把 identity 或 vote 密鑰對貼進本面板。",
          "不要指望建立 vote account 後本頁會開始投票。"
        ]
      },
      "dot": {
        "model": "本 compose 是全節點（沒有 --validator）。session keys 與 setKeys 是官方 Polkadot.js 步驟，不是本面板。",
        "min": "見官方 wiki",
        "wallets": "Polkadot.js",
        "panel": "以全節點運行 polkadot。RPC 僅本機。沒有 --validator。",
        "honesty": "本進程不是以 --validator 啟動。面板不呼叫 author_rotateKeys（會改 keystore）。要成為驗證者，須依官方文件加上驗證者旗標，並自行對本機 RPC 做 rotateKeys。",
        "yskDoes": [
          "運行 polkadot，RPC 只聽本機。",
          "不加上 --validator，亦不輪替 session keys。"
        ],
        "youDo": [
          "閱讀官方 set-up-a-validator 指南。",
          "若你自行加上 --validator，對本機 RPC 呼叫 rotateKeys，再在 Polkadot.js 用 stash 綁定結果。"
        ],
        "steps": [
          "同步此全節點。",
          "閱讀官方 validate 指南。此 compose 不是驗證者進程。",
          "不要在此貼上 stash 助記詞。若你稍後以 --validator 運行，請自行對本機 RPC 埠做 rotateKeys。",
          "在 Polkadot.js 把 session keys 設到 stash／controller，再按官方步驟綁定。"
        ],
        "never": [
          "不要在本面板貼上 stash 助記詞。",
          "不要期望本頁產生 session keys，或已經以 --validator 啟動。"
        ]
      },
      "sui": {
        "model": "本 compose 是 Sui fullnode（fullnode.yaml），不是驗證者節點。",
        "min": "見官方 Sui 文件",
        "wallets": "官方 Sui 操作者錢包",
        "panel": "以 fullnode 運行 sui-node。RPC 僅本機。",
        "honesty": "此進程不能以 Sui 驗證者身份簽署。驗證者要用另一份設定與金鑰。官方驗證者文件有連結；本面板不會把節點切成驗證者模式。",
        "yskDoes": [
          "以 fullnode 運行產品附帶的 sui-node 映像。"
        ],
        "youDo": [
          "把此實例當 fullnode 使用。",
          "若要成為驗證者，請依官方 Sui 驗證者文件另建驗證者設定 — 不是此 compose。"
        ],
        "steps": [
          "同步此 fullnode。",
          "把它當 fullnode：會重放 checkpoint，但不簽署共識。",
          "只有在你另行建立驗證者進程時，才需要官方驗證者操作指南。"
        ],
        "never": [
          "不要把 SUI 轉入本面板。",
          "不要期望此 fullnode 進程登記成驗證者。"
        ]
      },
      "aptos": {
        "model": "本 compose 是 Aptos 公共全節點（role full_node），不是驗證者。",
        "min": "見官方 Aptos 文件",
        "wallets": "官方 Aptos 操作者錢包",
        "panel": "以公共全節點運行 aptos-node。RPC 僅本機。",
        "honesty": "公共全節點不參與共識。驗證者需要不同 role、金鑰，通常還要 validator fullnode。本面板不會把節點切成驗證者模式。",
        "yskDoes": [
          "以公共全節點運行產品附帶的 Aptos 映像。"
        ],
        "youDo": [
          "把此實例當公共全節點使用。",
          "若要跑驗證者，請依官方 Aptos validator-node 文件 — 不是此 compose。"
        ],
        "steps": [
          "同步此公共全節點。",
          "把它當 PFN：提供帳本資料，不投票。",
          "只有在你另行建立驗證者 + VFN 時，才需要官方驗證者文件。"
        ],
        "never": [
          "不要在本面板輸入操作者金鑰。",
          "不要期望此全節點進程登記成驗證者。"
        ]
      },
      "btc": {
        "model": "不是權益證明。此處是 Bitcoin 完整或 Pruned 節點。",
        "min": "—",
        "wallets": "不適用",
        "panel": "運行 bitcoind",
        "yskDoes": [
          "運行 Bitcoin 完整或 Pruned 節點。"
        ],
        "youDo": [
          "錢包另外使用。挖礦與 Lightning 不在本功能範圍。"
        ],
        "steps": [
          "把此實例視為 Bitcoin 節點即可。",
          "沒有質押存款，也沒有驗證者 keystore。"
        ],
        "never": [
          "不要在本頁尋找質押錢包。"
        ]
      },
      "nearPoolSlug": "池名稱",
      "nearPoolSlugHint": "只填短名。factory 會加上 {{suffix}}。",
      "nearOwner": "擁有人帳號",
      "nearOwnerHint": "簽署 create_staking_pool 的 NEAR 帳號（你的錢包）。不是節點金鑰。",
      "nearPreview": "命令預覽",
      "nearWriteAccount": "寫入 account_id",
      "nearWriteTitle": "為 {{id}} 寫入 validator_key.json 的 account_id？",
      "nearWriteDesc": "只改現有金鑰檔的 account_id。不會送出 create_staking_pool。不會改 secret_key。",
      "nearWriteC1": "account_id 會變成 {{pool}}{{suffix}}",
      "nearWriteC2": "面板不會簽署 factory 交易",
      "nearRestart": "寫入後重啟節點",
      "nearNeedKey": "請先等質押公鑰出現（neard init），再填此表。",
      "nearNeedSlug": "請填池名稱以寫入 account_id。",
      "nearNeedOwner": "請填擁有人帳號以產生命令。寫入 account_id 只須池名稱。",
      "cosmosPointing": "此 gaiad 為 v28：先複製 validator.json，再複製 create-validator validator.json。Hub 文件仍用 flags — 在此節點會失敗。交易用此節點的共識公鑰，不是伺服器 IP。同儕使用 Public P2P（主機埠 {{port}}）。gas 為 0.005uatom — 不要用 Hub 文件的 0.0025uatom。",
      "avaxPointing": "P-Chain 登記用此 NodeID 與 BLS 證明，不是伺服器 IP。RPC 僅本機。請在 Core（Staking → Validate）登記。",
      "ethVcCommand": "Validator client 示例（不在此 compose）",
      "ethVcHint": "請自行運行 validator client，指向此 beacon URL。把 keystore 放入 beacon 資料目錄不會開始 attest。",
      "cosmosAmount": "自我委託",
      "cosmosAmountHint": "單位 uatom，或填 1atom 代表 1 ATOM。只填 1 是 1 uatom，不是 1 ATOM。",
      "cosmosAmountParsed": "{{amount}} = {{atom}}",
      "cosmosMoniker": "Moniker",
      "cosmosFromKey": "--from 金鑰名稱",
      "cosmosFromHint": "本機 gaiad 金鑰名，或用 Keplr 簽署。不是此主機上的共識金鑰。",
      "cosmosNeedPubkey": "請先等共識公鑰出現（gaiad init），再填此表。",
      "cosmosNeedFields": "請填數量、moniker 與 --from 以產生命令。"
    },
    "alerts": {
      "diskTitle": "驗證者節點磁碟危急",
      "diskBody": "驗證者資料卷可用空間極低。",
      "upgradeTitle": "驗證者節點有可用升級",
      "upgradeBody": "一個或多個客戶端有較新的釘選版本。",
      "syncTitle": "驗證者節點需要留意",
      "syncBody": "有節點已同步超過 6 小時，或回報錯誤。",
      "rollbackTitle": "驗證者升級已回滾",
      "rollbackBody": "{{id}} 升級健康檢查失敗，已回滾。"
    },
    "upgrade": {
      "changelog": "更新紀錄"
    },
    "readiness": {
      "dockerTitle": "驗證者節點所需的 Docker",
      "dockerOk": "有 {{count}} 個驗證者實例；已安裝 Docker",
      "dockerMissing": "已有驗證者實例，但找不到 docker 指令"
    },
    "detail": {
      "status": "狀態",
      "sync": "同步",
      "peers": "對等節點",
      "traffic": "流量",
      "version": "版本",
      "access": "存取",
      "upgrade": "升級",
      "upgradeHint": "選擇此節點如何跟進客戶端版本。",
      "setVersion": "變更版本",
      "setVersionHint": "為此節點的客戶端選擇官方 Docker tag。會重寫 compose，然後拉取並重新啟動。",
      "setVersionConfirmTitle": "將 {{id}} 改為 {{tag}}？",
      "setVersionConfirmDesc": "會重寫 compose、拉取 {{ref}}，並重新啟動節點。",
      "setVersionC1": "運行中的容器會換成所選 tag。",
      "setVersionC2": "請輸入實例識別碼以確認。",
      "setVersionMainnet": "主網：錯誤版本可令節點離線。我明白。",
      "releaseNotes": "發佈說明",
      "network": "網絡",
      "networkHint": "轉網絡會停機並清空鏈資料。請先在「清空資料」確認。",
      "maintain": "維護",
      "danger": "清空資料",
      "dangerHint": "輸入實例識別碼或 CLEAR。此動作會刪除磁碟上的鏈資料。",
      "compose": "Compose",
      "logs": "日誌"
    },
    "state": {
      "unknown": "未知",
      "stopped": "已停止",
      "created": "已建立未啟動",
      "missing": "沒有容器",
      "starting": "啟動中",
      "rpc_wait": "運行中／RPC 未就緒",
      "running": "運行中",
      "syncing": "同步中",
      "error": "錯誤"
    }
  },
  "vnc": {
    "pageDesc": "VNC 伺服器／客戶端",
    "result": "VNC 操作結果",
    "installed": "已安裝",
    "notInstalled": "未安裝",
    "stackBins": "{{垃圾箱}}",
    "stackMissing": "未安裝",
    "executeOn": "YSK_EXECUTE 已啟用",
    "executeOff": "YSK_EXECUTE 未啟用",
    "statAccounts": "帳號",
    "statRunning": "運行中",
    "statClients": "客戶端設定",
    "statEndpoint": "主機",
    "goAccounts": "帳號",
    "goClient": "客戶端",
    "goInstall": "安裝",
    "accountsEmptyTitle": "尚未有帳號",
    "accountsEmptyDesc": "請建立帳號以開始使用",
    "clientPathHint": "兩種路徑均在瀏覽器內使用 VNC。差別在於目標位址語意與轉發說明（皆經面板 TCP 代理）。",
    "clientPathCompare": "「經用戶可達端點」：公網主機名（如 hermes.example.com:5901）。「經伺服器代理」：僅本機伺服器能連的內網／機房位址。開通前會從此伺服器探測 TCP。",
    "clientEmptyTitle": "尚未有客戶端",
    "clientEmptyDesc": "請新增遠端 host:port",
    "openInBrowser": "在瀏覽器開啟",
    "pathUserReachable": "經用戶可達端點",
    "pathServerProxy": "經伺服器代理",
    "pathUserReachableShort": "用戶可達",
    "pathServerProxyShort": "伺服器代理",
    "pathUserReachableHint": "適用於公網主機名或用戶側可連的 VNC（例如 example.com:5901）。瀏覽器經面板轉發至該目標；控制面須能對該位址開啟 TCP。",
    "pathServerProxyHint": "適用於僅控制面伺服器能連的內網或機房位址。流量經本機伺服器網絡代理後再連目標 VNC。可選填「連線主機」覆寫實際 TCP 位址（例如顯示用主機名、連線用 10.x）。",
    "connectHost": "連線主機（可選，伺服器代理）",
    "connectHostHint": "控制面實際開啟 TCP 的位址（內網 IP）。留空則使用上方「遠端主機」。",
    "pathBrowser": "經用戶可達端點",
    "pathHostViewer": "經伺服器代理",
    "hostViewer": "經伺服器代理",
    "needViewerOptional": "TigerVNC Viewer（可選，非瀏覽器路徑）",
    "viewerStackOptional": "瀏覽器內 VNC 不需要安裝桌面版 vncviewer。以下 Viewer 套件僅供系統維護，可略過。",
    "viewer": {
      "minting": "正在準備工作階段…",
      "connecting": "連線中…",
      "connected": "已連線",
      "disconnected": "已斷線",
      "error": "連線失敗",
      "idle": "閒置",
      "closed": "已關閉",
      "minting_state": "準備中",
      "reconnect": "重新連線",
      "disconnect": "斷線",
      "fullscreen": "全螢幕",
      "fit": "適合視窗",
      "oneToOne": "1:1",
      "cad": "Ctrl+Alt+Del",
      "password": "VNC 密碼",
      "passwordPrompt": "需要密碼",
      "sendPassword": "送出密碼",
      "securityFailure": "驗證失敗",
      "canvasLabel": "VNC 桌面：{{name}}",
      "clipboardPaste": "貼到遠端",
      "clipboardPanel": "剪貼簿",
      "clipboardHint": "在此瀏覽器與遠端桌面之間同步文字。",
      "clipboardLocal": "送到遠端",
      "clipboardLocalPh": "貼上或輸入要送入 VNC 的文字",
      "clipboardRemote": "來自遠端",
      "clipboardRemotePh": "遠端複製的文字會顯示於此",
      "clipboardSend": "送到遠端",
      "clipboardCopy": "複製到本機",
      "clipboardToRemote": "已將剪貼簿送到遠端",
      "clipboardToRemoteHint": "將瀏覽器剪貼簿貼入遠端工作階段",
      "clipboardFromRemote": "遠端剪貼簿已複製到此瀏覽器",
      "clipboardFromRemoteManual": "遠端剪貼簿已更新 — 請開啟「剪貼簿」面板再複製",
      "clipboardEmpty": "沒有可貼上的內容 — 請先複製，或於下方輸入",
      "clipboardReadDenied": "瀏覽器拒絕讀取剪貼簿 — 請貼到面板後再送出",
      "clipboardNoRemote": "遠端尚未傳送文字",
      "clipboardCopiedLocal": "已複製到此瀏覽器",
      "quality": "畫質",
      "qualityHint": "畫質與流量（JPEG／壓縮）",
      "qualityLow": "低（節省流量）",
      "qualityBalanced": "平衡",
      "qualityHigh": "高",
      "qualityMax": "最高畫質",
      "passwordPromptHint": "此桌面需要 VNC 密碼 — 請於下方輸入。",
      "errNeedExecute": "無法啟動桌面：伺服器需要 root 並啟用 YSK_EXECUTE。",
      "errTicket": "工作階段票據已過期或無效 — 請按「重新連線」。",
      "errBusy": "面板同時開啟的 VNC 過多 — 請關閉另一個後再試。",
      "errRefused": "{{host}}:{{port}} 拒絕連線（沒有服務在監聽）。遠端 VNC 是否已啟動？此伺服器是否可連至該位址？",
      "errRefusedGeneric": "連線被拒 — 請檢查 VNC 是否已啟動、埠號是否正確。",
      "errTimeout": "連線至 {{host}}:{{port}} 逾時。請檢查防火牆／此伺服器至遠端的網絡。",
      "errTimeoutGeneric": "連線逾時 — 請檢查網絡與防火牆。",
      "errDns": "無法解析主機名「{{host}}」。",
      "errDnsGeneric": "主機名無法解析。",
      "errNet": "無法連至 {{host}}:{{port}} 的網絡。",
      "reconnecting": "連線中斷 — 正在自動重連（{{n}}/{{max}}）…",
      "idleHint": "一段時間沒有操作。遠端可能已鎖定畫面；請移動滑鼠或重新連線。",
      "idleDismiss": "仍在使用",
      "sessions": "已開啟的 VNC 工作階段",
      "sessionCount": "{{n}} / {{max}} 個工作階段",
      "sessionLimit": "最多同時 {{max}} 個 VNC — 請先關閉一個。",
      "closeSession": "關閉工作階段 {{name}}",
      "shareLink": "分享連結",
      "shareCopied": "已複製只讀分享連結（約 1 小時有效）",
      "shareFailed": "建立分享連結失敗",
      "shareTitle": "VNC 分享檢視",
      "shareGuest": "分享桌面",
      "shareMissing": "缺少分享權杖",
      "shareExpired": "此分享連結無效或已過期",
      "viewOnlyBadge": "只讀",
      "screenshot": "截圖",
      "screenshotSaved": "已下載截圖",
      "screenshotFailed": "截圖失敗",
      "screenshotNoCanvas": "畫面未就緒，未能截圖",
      "record": "錄影",
      "recordStop": "停止錄影",
      "recordHint": "錄製桌面為 WebM（最長 60 秒）",
      "recordStarted": "錄影中… 請按「停止錄影」或等待 60 秒",
      "recordSaved": "已下載錄影",
      "recordFailed": "錄影失敗",
      "recordUnsupported": "此瀏覽器不支援 canvas 錄影",
      "connectingHint": "正在開啟通往桌面的安全通道…",
      "reconnectHint": "請按「重新連線」再試，或檢查遠端主機與埠號。"
    },
    "installHint": "TigerVNC → noVNC；XFCE 可選",
    "needTigerVnc": "需 TigerVNC",
    "needXfceFirst": "需先安裝 XFCE",
    "needSessionRunning": "工作階段未運行 — 請先啟動",
    "needNovnc": "需 noVNC",
    "needXfce": "XFCE（可選）",
    "needViewer": "Viewer（可選）",
    "needViewerOrNovnc": "需 viewer 或 noVNC",
    "settingsHint": "新建帳號預設值",
    "settingsNeedStack": "此處預設值要在已安裝 TigerVNC（若選 XFCE 亦需 XFCE）後才會生效。請先到「安裝」分頁安裝。",
    "clientNeedNovnc": "「在瀏覽器開啟」需要 noVNC。若要在此開啟遠端，請先到「安裝」分頁安裝。",
    "defaultDesktop": "預設桌面",
    "defaultGeometry": "預設解析度",
    "defaultDepth": "色深",
    "defaultRfbBind": "VNC（RFB）監聽範圍",
    "defaultAutostart": "開機自啟",
    "autostartLabel": "開機自啟",
    "settingsSaved": "已儲存 VNC 預設值",
    "tab": {
      "overview": "總覽",
      "accounts": "帳號",
      "client": "客戶端",
      "install": "安裝",
      "settings": "設定",
      "about": "說明"
    },
    "desktop": {
      "xfce": "XFCE（完整桌面）",
      "terminal": "終端機"
    },
    "bind": {
      "localhost": "僅本機（noVNC／隧道）",
      "all": "全部介面（直連 RFB — 需開防火牆）",
      "localhostShort": "本機",
      "allShort": "0.0.0.0"
    },
    "accountListTitle": "VNC 帳號（{{count}}）",
    "accountListDesc": "一帳一 Linux 用戶",
    "createAccount": "+ 建立帳號",
    "createAccountTitle": "建立 VNC 帳號",
    "createAccountDesc": "專用 yskvnc_* 用戶",
    "createAccountBtn": "建立帳號",
    "editAccountTitle": "修改 VNC 帳號",
    "editAccountDesc": "Linux 用戶 {{user}} · display :{{display}}",
    "setPassword": "密碼",
    "setPasswordTitle": "設定 VNC 密碼",
    "setPasswordDesc": "更新 {{address}} 的 VNC 登入密碼",
    "newPassword": "新密碼",
    "confirmPassword": "確認密碼",
    "passwordHint": "至少 6 個字元",
    "passwordMismatch": "兩次密碼不一致",
    "passwordTooShort": "密碼至少 6 個字元",
    "needName": "請輸入顯示名稱",
    "start": "啟動",
    "stop": "停止",
    "startAfterCreate": "建立後啟動",
    "hostnameBrokenIdle": "尚無 VNC 工作階段。主機名 {{hostname}} 目前未能解析；若之後建立工作階段，可選擇寫入 /etc/hosts。",
    "hostnameBroken": "此主機無法解析自己的主機名（{{hostname}}）。工作階段會啟動失敗。",
    "hostnameFix": "把主機名寫入 /etc/hosts",
    "hostnameFixTitle": "附加此行到 /etc/hosts？",
    "hostnameFixDesc": "{{line}}",
    "hostnameFixDone": "已更新 /etc/hosts 主機名",
    "startAfterCreateBlocked": "主機名可解析後才可啟用",
    "startHostnameBlocked": "主機名可解析後才可啟動。請先使用「把主機名寫入 /etc/hosts」。",
    "colName": "名稱",
    "colLinuxUser": "Linux 用戶",
    "colDisplay": "Display／埠",
    "colStatus": "狀態",
    "colDesktop": "桌面",
    "colBind": "RFB 監聽",
    "accountStatus": {
      "running": "運行中",
      "stopped": "已停止",
      "failed": "失敗",
      "written": "已寫入",
      "unknown": "未知"
    },
    "clientStatus": {
      "up": "已連線",
      "down": "已斷線",
      "unknown": "未知",
      "error": "錯誤",
      "viewing": "瀏覽器觀看中"
    },
    "accountPager": "帳號分頁",
    "prevPage": "上一頁",
    "nextPage": "下一頁",
    "pageOf": "第 {{page}} / {{total}} 頁 · {{count}}",
    "deleteAccountTitle": "刪除 VNC 帳號？",
    "deleteAccountDesc": "將刪除控制面帳號「{{name}}」（Linux 用戶 {{user}}）。會先停止該顯示的 VNC 工作階段。",
    "deleteAccountC1": "此帳號的 VNC 工作階段會先停止。",
    "deleteAccountC2": "面板內的 VNC 帳號紀錄會一併移除。",
    "deleteAccountC3User": "亦會嘗試刪除 Linux 用戶及其家目錄；若主機拒絕，面板會報失敗並留下該用戶。",
    "deleteAccountC3Keep": "系統上的 Linux 用戶會保留，只刪面板帳號。",
    "removeLinuxUser": "一併刪除 Linux 用戶與家目錄",
    "deleteKeepUserWarn": "將留下孤立 Linux 用戶，需自行清理。",
    "bindRfbLine": "RFB {{bind}} :{{port}}",
    "bindNovncLine": "noVNC 127.0.0.1:{{port}}",
    "bindNovncHint": "noVNC 只聽本機。桌面經面板代理，除非 RFB 綁全部介面，否則不是公網桌面。",
    "connection": "連線",
    "connectionTitle": "連入資料",
    "connectionDesc": "客戶端如何連線至 {{name}}",
    "connectionPathsHint": "建議使用「在瀏覽器開啟」；進階選項才有舊版 noVNC／直連 RFB",
    "connectionBrowserHint": "建議：在此面板內開啟桌面（無需 SSH 隧道；任何可開啟面板的瀏覽器均可）。",
    "connectionBrowserDesc": "需要時會自動啟動 VNC 工作階段，並在面板內以鍵鼠／剪貼簿操作。",
    "connectionAdvanced": "進階：舊版 noVNC URL 與直連 RFB",
    "pathViaServer": "經伺服器（noVNC）",
    "pathViaServerLegacy": "舊版 noVNC（伺服器 127.0.0.1）",
    "pathViaServerLegacyHint": "僅在伺服器本機或經 SSH 隧道可用 — 請優先使用「在瀏覽器開啟」。",
    "pathDirect": "直連 RFB",
    "recommended": "建議",
    "startNovnc": "啟動 noVNC",
    "stopNovnc": "停止 noVNC",
    "copyNovncUrl": "複製 noVNC URL",
    "copyAddress": "複製 host:port",
    "openFirewall": "UFW 放行埠",
    "directAddress": "地址",
    "ticketPath": "檢視 ticket API",
    "directLocalhostWarn": "RFB 僅監聽 localhost",
    "copied": "已複製",
    "clientListTitle": "客戶端設定（{{count}}）",
    "clientListDesc": "連出 VNC",
    "addClient": "+ 新增遠端",
    "addClientTitle": "新增遠端 VNC",
    "addClientDesc": "遠端 host:port",
    "clientTarget": "目標",
    "clientPath": "連線路徑",
    "clientHost": "遠端主機",
    "pathViaServerShort": "瀏覽器",
    "pathDirectShort": "主機查看器",
    "disconnect": "斷線",
    "connect": "連線",
    "clientNeedFields": "名稱與主機為必填",
    "clientCreated": "已建立客戶端設定",
    "clientPasswordOptional": "VNC 密碼（可選）",
    "clientPasswordHint": "使用「在瀏覽器開啟」時會帶入。留空則每次輸入。",
    "clientRememberPassword": "將密碼儲存在此伺服器，供下次開啟使用",
    "clientRememberPasswordWarn": "密碼會寫入面板 dataDir（root 可讀）。共用主機建議每次手動輸入。",
    "stackMissingShort": "未安裝",
    "editClientTitle": "編輯遠端客戶端",
    "editClientDesc": "更新連線路徑、主機與可選已存密碼。",
    "clientUpdated": "已更新客戶端設定",
    "rememberNeedPassword": "請先填密碼。"
  },
  "vpn": {
    "pageDesc": "VPN 伺服器／客戶端",
    "eyebrow": "VPN",
    "tab": {
      "wireguard": "WireGuard",
      "openvpn": "OpenVPN",
      "outline": "Shadowsocks",
      "client": "本機連出",
      "software": "軟件",
      "monitor": "監控",
      "about": "說明",
      "server": "伺服器",
      "install": "安裝",
      "overview": "總覽"
    },
    "softwareIntro": "在此檢查／安裝／更新 VPN 引擎。伺服器分頁只負責設定。",
    "monitor": {
      "needLive": "即時數據需 root + YSK_EXECUTE。",
      "autoRefresh": "自動 3 秒",
      "filterEngine": "引擎篩選",
      "filterPresence": "在線篩選",
      "engineAll": "全部引擎",
      "presenceAll": "全部",
      "presenceOnline": "在線",
      "presenceOffline": "離線",
      "onlineOf": "在線 {{online}} / {{total}}",
      "peersTitle": "對等端（{{count}}）",
      "localTitle": "本機連出",
      "colEndpoint": "遠端",
      "colLastSeen": "最後見",
      "colRx": "↓ 累計",
      "colTx": "↑ 累計",
      "colRxRate": "↓ 速率",
      "colTxRate": "↑ 速率",
      "sampledAt": "取樣 {{when}}",
      "emptyPeers": "未有 peer 可顯示",
      "emptyPeersHint": "到引擎 tab 新增 peer，或清除篩選",
      "presence": {
        "online": "在線",
        "idle": "閒置",
        "offline": "離線",
        "never": "從未",
        "unknown": "未知"
      }
    },
    "installed": "已安裝",
    "notInstalled": "未安裝",
    "serverUp": "運行中",
    "serverDown": "已停",
    "engineSummary": "埠 {{port}} · {{peers}} 個 peer",
    "engineSummaryClient": "{{count}} 個設定檔 · {{up}} 已連",
    "needWireGuard": "需 WireGuard",
    "needOpenVpn": "需 OpenVPN",
    "needSs": "需 ss-server",
    "ssHonestUi": "ss:// 存取金鑰（非完整 Outline Manager）",
    "listenPort": "監聽埠",
    "listenPortUdp": "監聽埠（UDP）",
    "listenPortTcp": "監聽埠（TCP）",
    "endpoint": "公開端點",
    "endpointHint": "客戶端連入的公網 host:port",
    "ddnsFill": "使用 DDNS 主機名稱",
    "ddnsFilled": "已用 DDNS 填入 Endpoint 主機。現有 peers 未改動。",
    "ddnsFillEmpty": "尚無 DDNS 主要主機名稱。請先到 DNS 的 DDNS 分頁新增。",
    "ensureServer": "套用伺服器",
    "openFirewall": "開埠 {{port}}/{{proto}}",
    "presets": "常用埠",
    "portHint": {
      "51820": "預設 WireGuard 監聽埠",
      "51821": "備用 WireGuard 監聽埠",
      "51822": "第二備用 WireGuard 監聽埠"
    },
    "proto": "協定",
    "protoUdp": "UDP",
    "protoTcp": "TCP",
    "statusLine": "{{state}} · {{port}}/{{proto}} · {{peers}} 對等點",
    "peersTitle": "對等端",
    "peersTitleWg": "對等端",
    "peersTitleOvpn": "客戶端設定",
    "peersTitleSs": "存取金鑰",
    "peerName": "名稱",
    "peerNamePlaceholder": "辦公室手提電腦",
    "peerNameHint": "可用英文字母、數字、. _ -，不可有空格、／或 !",
    "peerNameInvalid": "不可使用空格、／或 !。請改為 {{preview}}，或自行修改名稱。",
    "addPeer": "+ 新增",
    "installEngineFirst": "請先安裝 VPN 引擎",
    "needServerRunning": "請先套用並啟動 {{engine}} 伺服器",
    "engineSummarySoftware": "{{installed}} 已安裝 · {{running}} 運行中",
    "privateKeyOnce": "客戶端私鑰只在此顯示一次。請立即下載或複製，之後無法復原。",
    "showPrivateKey": "顯示私鑰",
    "hidePrivateKey": "隱藏私鑰",
    "deletePeerTitle": "刪除對等端 {{name}}？",
    "deletePeerDesc": "將移除 {{name}}（{{address}}）。客戶端會立即斷線，設定無法復原。WireGuard 伺服器保持運行。",
    "deleteClientTitle": "刪除 OpenVPN 客戶端 {{name}}？",
    "deleteClientDesc": "將移除 {{name}}（{{address}}）。該客戶端會立即斷線，設定無法復原。OpenVPN 伺服器保持運行。",
    "deleteKeyTitle": "刪除 Shadowsocks 金鑰 {{name}}？",
    "deleteKeyDesc": "將移除存取金鑰 {{name}}（{{address}}）。使用此金鑰的客戶端會斷線。Shadowsocks 伺服器保持運行。",
    "deleteResult": "已移除 {{name}}。",
    "portInvalid": "監聽埠須為 1 至 65535 的整數。",
    "portRequired": "請填寫監聽埠。",
    "importInvalid": "未能辨識為 WireGuard 或 OpenVPN 客戶端設定。",
    "qrFailed": "未能產生此設定的 QR 圖碼。請改為下載或複製文字。",
    "cfgTitle": "設定 — {{name}}",
    "addPeerWg": "+ 新增對等端",
    "addPeerOvpn": "+ 新增客戶端",
    "addPeerSs": "+ 新增金鑰",
    "noPeers": "未有項目",
    "noPeersHint": "新增後可下載設定／QR",
    "colName": "名稱",
    "colAddress": "地址",
    "colCreated": "建立",
    "colActions": "操作",
    "colEngine": "引擎",
    "colStatus": "狀態",
    "colIface": "介面",
    "downloadKey": "下載",
    "showQr": "QR 圖碼",
    "copyConf": "複製",
    "copied": "已複製",
    "downloaded": "已下載設定檔",
    "qrReady": "QR 已就緒",
    "qrTitle": "二維碼 — {{name}}",
    "qrHintWg": "用 WireGuard App 掃",
    "qrHintSs": "用 Shadowsocks 客戶端掃 ss://",
    "showConf": "設定文字",
    "close": "關閉",
    "clientIntro": "匯入 conf，令本機連出 VPN",
    "profileName": "設定檔名稱",
    "pasteConf": "貼上 conf",
    "importProfile": "匯入",
    "importOpen": "+ 匯入 conf",
    "noProfiles": "未有本機設定檔",
    "noProfilesHint": "貼上 WireGuard 或 OpenVPN 客戶端 conf",
    "connect": "連線",
    "disconnect": "斷線",
    "clientStatus": {
      "up": "已連線",
      "down": "已斷線",
      "unknown": "未知",
      "error": "錯誤"
    },
    "result": "結果",
    "clientEngine": "類型",
    "engineAuto": "自動偵測",
    "refresh": "重新整理",
    "dnsOptional": "DNS（可選）",
    "serverSettings": "伺服器設定",
    "access": {
      "label": "客戶端流量",
      "full": "全網上網",
      "lan": "只連區域",
      "custom": "自訂路由",
      "fullHint": "客戶端上網流量經由此伺服器（會啟用 NAT）。套用後請重新連線客戶端。",
      "lanHint": "僅可連至 VPN／所選內網；不改變客戶端本身上網絡徑。套用後請重新連線。",
      "customHint": "僅將你填寫的網段導入隧道。套用後請重新連線。",
      "lanCidrs": "區域網段",
      "customCidr": "CIDR",
      "addCidr": "加入",
      "cidrRequired": "請填寫 CIDR（例如 192.168.1.0/24）。",
      "cidrInvalid": "請填寫有效的 CIDR，例如 192.168.1.0/24。"
    },
    "engineNotInstalled": "此主機尚未安裝此 VPN 引擎。",
    "serverNotListening": "伺服器單元未在運行。UDP/TCP {{port}} 可能未監聽。"
  }
}
