# 基礎錯誤
ErrInvalidParams: '請求參數錯誤: {{ .detail }}'
ErrMcpGatewayArgsParse: 'MCP 自訂參數格式錯誤'
ErrMcpGatewayArgsConflict: '參數 {{ .name }} 由 1Panel 管理，不能在自訂參數中設定'
ErrTokenParse: 'Token 產生錯誤: {{ .detail }}'
ErrInitialPassword: '原密碼錯誤'
ErrInternalServer: '服務內部錯誤: {{ .detail }}'
ErrRecordExist: '記錄已存在'
ErrRecordNotFound: '記錄未能找到'
WafLogExport: 'WAF 日誌匯出'
MonitorLogExport: '網站監控日誌匯出'
LogExportNoData: '沒有符合條件的日誌'
LogExportDiskSpace: '可用磁碟空間不足 1 GiB，匯出任務已停止'
LogExportRetentionInvalid: '匯出記錄保留天數必須介於 1 到 30 天之間'
ErrSystemLogKeywordFilterUnsupported: '目前系統版本不支援系統日誌關鍵字篩選（需要 systemd 237 或更高版本）'
ErrStructTransform: '型別轉換失敗: {{ .err }}'
ErrNotSupportType: '系統暫不支援目前類型: {{ .name }}'

# 檔案 AI
ErrFileAINotEnabled: '請先在檔案管理頁透過「AI 帳號」啟用檔案 AI 搜尋並選擇帳號。'
ErrFileAISearchBadPattern: '搜尋條件無效（正則或全詞）: {{ .detail }}'
FileAISearchEmptyDir: '目前目錄下沒有可列出的檔案或資料夾（或均被過濾）。'

# 遠端下載
ErrWgetRemoteFailed: '遠端下載網址無效或無法存取：{{ .detail }}'
ErrWgetInvalidContentType: '遠端網址未回傳檔案內容（可能是錯誤頁），{{ .detail }}'
ErrWgetProxyNotConfigured: '請先在面板設定中設定代理伺服器'
ErrWgetProxyInvalid: '代理伺服器位址無效：{{ .detail }}'

# 登入與安全
ErrNotLogin: '使用者未登入: {{ .detail }}'
ErrPasswordExpired: '目前密碼已過期: {{ .detail }}'

# 請求與 API
ErrProxy: '請求錯誤，請檢查該節點狀態: {{ .detail }}'
ErrApiConfigStatusInvalid: 'API 介面禁止存取: {{ .detail }}'
ErrApiConfigKeyInvalid: 'API 介面金鑰錯誤: {{ .detail }}'
ErrApiConfigIPInvalid: '呼叫 API 介面 IP 不在白名單: {{ .detail }}'
ErrApiConfigDisable: '此介面禁止使用 API 介面呼叫: {{ .detail }}'
ErrApiConfigKeyTimeInvalid: 'API 介面時間戳記錯誤: {{ .detail }}'
ErrCreateHttpClient: '建立請求失敗{{ .err }}'
ErrHttpReqTimeOut: '請求逾時{{ .err }}'
ErrHttpReqFailed: '請求失敗{{ .err }}'
ErrNoSuchHost: '無法找到請求的伺服器{{ .err }}'
ErrHttpReqNotFound: '無法找到要求的資源{{ .err }}'

# 快速跳轉
ErrMinQuickJump: '請至少設定一個快速跳轉入口！'
ErrMaxQuickJump: '最多可設定四個快速跳轉入口！'

# 通用
ErrShutDown: '指令被手動結束！'
ErrUsernameIsExist: '使用者名稱已存在'
ErrNameIsExist: '名稱已存在'
ErrDemoEnvironment: '示範伺服器，禁止此操作!'
ErrCmdTimeout: '指令執行逾時！'
ErrCmdIllegal: '執行指令中存在不合法字元，請修改後重試！'
ErrPortExist: '{{ .port }} 埠已被{{ .type }} [{{ .name }}] 佔用'
TYPE_APP: '應用'
TYPE_RUNTIME: '運作環境'
TYPE_DOMAIN: '網域名稱'
ErrTypePort: '埠{{ .name }} 格式錯誤'
ErrTypePortRange: '連接埠範圍需要在 1-65535 之間'
Success: '成功'
Failed: '失敗'
SystemRestart: '系統重新啟動導致任務中斷'
ErrGroupIsDefault: '預設分組，無法刪除'
ErrGroupIsInWebsiteUse: '分組正在被其他網站使用，無法刪除'
Decrypt: '解密'

# 智慧體
ErrAgentAccountBound: '該帳號已綁定到智能體，無法刪除，請重試。'
ErrTerminalAIAccountInUse: '該模型帳號正被終端 AI 使用，請在終端 AI 設定中更換帳號或關閉終端 AI 後再試。'
ErrFileAIAccountInUse: '該模型帳號正被檔案管理 AI 使用，請在檔案管理 AI 設定中更換帳號或關閉檔案管理 AI 後再試。'
ErrAgentAccountUnavailable: '帳號連線資訊不可用，錯誤：{{ .err }}，請重試'
ErrAgentProviderNotSupported: '暫不支援該智能體提供商，請重試'
ErrAgentAccountRequired: '請選擇智能體帳號後重試'
ErrAgentAccountNotVerified: '帳號未驗證通過，請重試'
ErrAgentAccountModelsRequired: '請至少配置一個模型'
ErrAgentAccountSingleInitialModel: '建立帳號時只能配置一個初始模型'
ErrAgentModelNotInAccount: '所選模型未配置在當前帳號中，請重試'
ErrAgentVerifyModelInUse: '該模型正用於驗證帳號，請先選擇其他驗證模型後再刪除'
ErrAgentFallbackModelDuplicate: '備用模型不能重複'
ErrAgentFallbackModelPrimary: '備用模型不能與主模型相同'
ErrAgentModelInUse: '仍有智能體正在使用該模型：{{ .name }}'
ErrAgentBaseURLRequired: 'Base URL 不可為空，請重試'
ErrAgentApiKeyRequired: 'API Key 不可為空，請重試'
ErrAgentComposeRequired: '自訂編排內容不可為空，請重試'
ErrAgentIDRequired: '智能體 ID 不可為空，請重試'
ErrAgentAccountIDRequired: '帳號 ID 不可為空，請重試'
ErrAgentLimitReached: '社群版最多支援建立 {{ .max }} 個 AI 智能體，升級至商業版即可無限制使用'
ErrAgentWebsiteBound: '該智能體已關聯網站'
ErrAgentWebsiteTypeUnsupported: '只能關聯反向代理或靜態網站'
ErrAgentWebsiteInUse: '該網站已被其他智能體關聯'
ErrAgentWebsiteUnbindUnsupported: '一鍵部署網站不支援手動解綁'
ErrQwenPawAuthRequest: 'QwenPaw 驗證資訊更新失敗: {{ .err }}'
ErrQwenPawAuthOutOfSync: 'QwenPaw 目前憑據與 1Panel 記錄不一致，請先重設 QwenPaw 密碼或還原應用程式 .env 中的憑據'
ErrQwenPawAuthDisabled: 'QwenPaw 尚未啟用登入驗證'
ErrHermesPairingCodeUnavailable: '配對碼在 Hermes 中暫時不存在，可能是由於網路原因，請稍後再試'
ErrHermesFeishuGroupAllowlistRequiresAllowlist: '飛書群組策略為白名單時，私聊策略不能為配對碼'

# 備份與告警設定
Localhost: '本機'
ErrBackupInUsed: '此備份帳號已在排程任務中使用，無法刪除'
ErrBackupCheck: '備份帳號測試連線失敗{{ .err }}'
ErrBackupLocalDelete: '暫時不支援刪除本機伺服器備份帳號'
ErrBackupLocalCreate: '暫時不支援建立本機伺服器備份帳號'
ErrAlertConfigInUse: '告警配置正在使用中，無法刪除'
ErrAlertConfigPhoneExist: '手機號碼已存在'

# 應用
ErrPortInUsed: '{{ .detail }} 連接埠已被佔用！'
ErrAppLimit: '應用程式超出安裝數量限制'
ErrNotInstall: '應用程式未安裝'
ErrPortInOtherApp: '{{ .port }} 連接埠已被應用程式{{ .apps }} 佔用！'
ErrDbUserNotValid: '存量資料庫，使用者名稱密碼不符！'
ErrMysqlUserUsedByApps: '該資料庫使用者已被【{{ .detail }}】應用使用，無法修改 Host、刪除或撤銷授權'
ErrUpdateBuWebsite: '應用程式更新成功，但網站設定檔修改失敗，請檢查設定！'
Err1PanelNetworkFailed: '預設容器網路建立失敗！ {{ .detail }}'
ErrFileParse: '應用docker-compose 檔解析失敗!'
ErrInstallDirNotFound: '安裝目錄不存在，如需移除，請選擇強制移除'
AppStoreIsUpToDate: '應用程式商店已經是最新版本'
LocalAppVersionNull: '{{ .name }} 應用程式未同步到版本！無法加入到應用程式列表'
LocalAppVersionErr: '{{ .name }} 同步版本{{ .version }} 失敗！ {{ .err }}'
ErrFileNotFound: '{{ .name }} 檔案不存在'
ErrFileParseApp: '{{ .name }} 檔案解析失敗{{ .err }}'
ErrAppDirNull: '版本資料夾不存在'
LocalAppErr: '應用程式{{ .name }} 同步失敗！{{ .err }}'
ErrContainerName: '容器名稱已存在'
ErrContainerNotFound: '{{ .name }} 容器不存在'
ErrContainerMsg: '{{ .name }} 容器異常，請在容器頁面上檢視日誌'
ErrAppBackup: '{{ .name }} 應用備份失敗 {{ .err }}'
ErrVersionTooLow: '目前 1Panel 版本過低，無法更新應用程式商店，請升級版本之後操作'
ErrAppNameExist: '應用程式名稱已存在'
ErrAppInstallNameExist: '應用程式安裝名稱 {{ .name }} 已存在'
AppStoreIsSyncing: '應用程式商店正在同步中，請稍後重試'
ErrGetCompose: 'docker-compose.yml 檔案取得失敗！{{ .detail }}'
ErrComposeProjectNameParse: '解析 Docker Compose 設定輸出中的專案名稱失敗：{{ .detail }}'
ErrComposeProjectNameEmpty: '無法從 Docker Compose 設定或檔案父目錄中推導出專案名稱，請填寫名稱後重試'
ErrComposeNameInvalid: 'Compose 專案名稱格式錯誤：必須以小寫字母或數字開頭，僅支援小寫字母、數字、- 和 _，長度為 1-256 個字元'
ErrAppVersionUnavailable: '目前應用程式版本已從遠端服務下架，請選擇其他版本後重試'
ErrAppWarn: '狀態異常，請檢視日誌'
ErrAppParamKey: '參數{{ .name }} 欄位異常'
ErrAppUpgrade: '應用程式{{ .name }} 升級失敗{{ .err }}'
AppRecover: '應用程式{{ .name }} 回滾'
PullImageStart: '開始拉取映像 [{{ .name }}]'
PullImageSuccess: '映像拉取成功'
AppStoreSyncSuccess: '應用程式商店同步成功'
SyncAppDetail: '同步應用程式設定'
AppVersionNotMatch: '{{ .name }} 應用程式需要更高的 1Panel 版本，跳過同步'
MoveSiteDir: '偵測到網站目錄變更 需要遷移 OpenResty 網站目錄到 {{ .name }}'
MoveSiteDirSuccess: '遷移網站目錄成功'
DeleteRuntimePHP: '刪除PHP 執行環境'
CustomAppStoreFileValid: '應用程式商店包需要.tar.gz 格式'
PullImageTimeout: '拉取映像逾時,請嘗試增加映像加速或更換其他映像加速'
ErrAppIsDown: '{{ .name }} 應用程式狀態異常，請檢查'
ErrCustomApps: '存在已安裝的應用程式，請先解除安裝'
ErrCustomRuntimes: '存在已安裝的運作環境，請先刪除'
ErrAppVersionDeprecated: '{{ .name }} 應用不適配目前 1Panel 版本，跳過'
ErrDockerFailed: 'Docker 狀態異常，請檢查服務狀態'
ErrDockerComposeCmdNotFound: 'Docker Compose 指令不存在，請先在宿主機安裝此指令'
UseExistImage: '映像已存在，使用現有映像'
UpgradePrepare: '準備應用程式升級'
UpgradeStop: '停止原應用程式'
UpgradeWaitReady: '等待應用程式就緒'
UpgradeBackupDisabled: '未啟用升級備份，升級腳本產生的資料變更無法完整回滾'
UpgradeRollbackFailed: '回滾失敗'
ErrDatabaseNotFound: '資料庫 {{ .name }} 不存在'

# SSH
ExportIP: '登入IP'
ExportArea: '歸屬地'
ExportPort: '埠'
ExportAuthMode: '登入方式'
ExportUser: '使用者'
ExportStatus: '登入狀態'
ExportDate: '時間'

# 檔案
ErrFileCanNotRead: '此檔案不支援預覽'
ErrSensitiveFileRead: '不允許讀取敏感檔案'
ErrFileToLarge: '檔案超過10M，無法開啟'
ErrPathNotFound: '目錄不存在'
ErrMovePathFailed: '目標路徑不可包含原路徑！'
ErrLinkPathNotFound: '目標路徑不存在!'
ErrFileIsExist: '檔案或資料夾已存在！'
ErrFileUpload: '{{ .name }} 上傳檔案失敗{{ .detail }}'
ErrFileDownloadDir: '不支援下載資料夾'
ErrFileSharePath: '無效的分享路徑或目標不是檔案'
ErrFileShareInvalid: '分享連結無效或已失效'
ErrFileShareExpired: '分享連結已過期'
ErrFileSharePassword: '存取密碼錯誤'
ErrFileShareExhausted: '此分享連結的下載次數已用盡'
ErrFileSharePasswordPolicy: '存取密碼至少 4 位'
ErrFileShareRateLimit: '操作過於頻繁，請稍後再試'
ErrCmdNotFound: '{{ .name }} 指令不存在，請先在宿主機安裝此指令'
ErrSourcePathNotFound: '來源目錄不存在'
ErrFavoriteExist: '已收藏此路徑'
ErrInvalidChar: '禁止使用無效字元'
ErrPathNotDelete: '所選目錄不可刪除'
ErrLogFileToLarge: '日誌檔案超過 500M，無法開啟'
FileDropFailed: '清理檔案 {{ .name }} 失敗: {{ .err }}'
FileDropSuccess: '清理檔案 {{ .name }} 成功，清理 {{ .count }} 個檔案，釋放 {{ .size }} 磁碟空間'
FileDropSum: '檔案清理完成，共清理 {{ .count }} 個檔案，共釋放 {{ .size }} 磁碟空間'
ErrBadDecrypt: '壓縮檔解壓密碼錯誤，解壓失敗，請重試。'

# 網站
ErrAliasIsExist: '代號已存在'
ErrBackupMatch: '該備份檔案與目前網站部分資料不符{{ .detail }}'
ErrBackupExist: '該備份檔案對應部分來源資料不存在{{ .detail }}'
ErrPHPResource: '本機執行環境不支援切換！'
ErrPathPermission: 'index 目錄下偵測到非 1000:1000 權限資料夾，可能導致網站存取 Access denied 錯誤，請點選上方儲存按鈕'
ErrDomainIsUsed: '網域名稱已被網站【{{ .name }}】使用'
ErrDomainFormat: '{{ .name }} 網域格式不正確'
ErrDefaultAlias: 'default 為保留代號，請使用其他代號'
ErrParentWebsite: '需要先移除子網站{{ .name }}'
ErrBuildDirNotFound: '建置目錄不存在'
ErrImageNotExist: '執行環境{{ .name }} 映像不存在，請重新編輯執行環境'
ErrProxyIsUsed: '負載均衡已被反向代理使用，無法刪除'
ErrSSLValid: '憑證檔案異常，請檢查憑證狀態！'
ErrWebsiteDir: '請選擇網站目錄下的目錄'
ErrComposerFileNotFound: 'composer.json 檔案不存在'
ErrRuntimeNoPort: '執行環境未設定埠，請先編輯執行環境'
ErrRuntimeProjectDirContainsCodeDir: '執行環境目錄包含所選專案目錄，請先更換專案目錄後再重新建立'
Status: '狀態'
start: '開啟'
stop: '關閉'
restart: '重新啟動'
kill: '強制停止'
pause: '暫停'
unpause: '恢復'
remove: '刪除'
delete: '刪除'
ErrDefaultWebsite: '已經設定預設網站，請取消後再設定！'
SSL: '憑證'
Set: '設定'

# SSL 憑證
ErrSSLCannotDelete: '{{ .name }} 憑證正在被網站使用，無法刪除'
ErrAccountCannotDelete: '帳號關聯憑證，無法刪除'
ErrSSLApply: '憑證續簽成功，openresty reload 失敗，請檢查設定！'
ErrEmailIsExist: '信箱已存在'
ErrSSLKeyNotFound: '私鑰檔案不存在'
ErrSSLCertificateNotFound: '憑證檔案不存在'
ErrSSLKeyFormat: '私鑰檔案驗證失敗'
ErrSSLCertificateFormat: '憑證檔案格式錯誤，請使用 pem 格式'
ErrEabKidOrEabHmacKeyCannotBlank: 'EabKid 或 EabHmacKey 不可為空'
ErrOpenrestyNotFound: 'HTTP 模式需要先安裝 OpenResty'
ApplySSLStart: '開始申請憑證，網域名稱[{{ .domain }}] 申請方式[{{ .type }}]'
dnsAccount: 'DNS 自動'
dnsManual: 'DNS 手排'
http: 'HTTP'
ApplySSLFailed: '申請[{{ .domain }}] 憑證失敗， {{ .detail }}'
ApplySSLSuccess: '申請[{{ .domain }}] 憑證成功！'
DNSAccountName: 'DNS 帳號[{{ .name }}] 廠商[{{ .type }}]'
PushDirLog: '憑證推送到目錄[{{ .path }}] {{ .status }}'
ErrDeleteCAWithSSL: '目前機構下存在已簽發憑證，無法刪除'
ErrDeleteWithPanelSSL: '面板SSL 設定使用此憑證，無法刪除'
ErrDefaultCA: '預設機構不可刪除'
ApplyWebSiteSSLLog: '開始更新{{ .name }} 網站憑證'
ErrUpdateWebsiteSSL: '{{ .name }} 網站更新憑證失敗: {{ .err }}'
ApplyWebSiteSSLSuccess: '更新網站憑證成功'
ErrExecShell: '執行腳本失敗{{ .err }}'
ExecShellStart: '開始執行腳本'
ExecShellSuccess: '腳本執行成功'
StartUpdateSystemSSL: '開始更新系統憑證'
UpdateSystemSSLSuccess: '更新系統憑證成功'
ErrWildcardDomain: 'HTTP 模式無法申請泛網域憑證'
ErrApplySSLCanNotDelete: '正在申請的憑證 {{ .name }} 無法刪除，請稍後重試'
StartPushSSLToNode: '開始推送憑證到節點'
PushSSLToNodeFailed: '推送憑證到節點失敗: {{ .err }}'
PushSSLToNodeSuccess: '推送憑證到節點成功'

# MySQL
ErrUserIsExist: '目前使用者已存在，請重新輸入'
ErrDatabaseIsExist: '目前資料庫已存在，請重新輸入'
ErrExecTimeOut: 'SQL 執行逾時，請檢查資料庫'
ErrRemoteExist: '遠端資料庫已存在該名稱，請修改後重試'
ErrLocalExist: '本機資料庫已存在該名稱，請修改後重試'
RemoteBackup: '備份遠端資料庫需要先使用映像 {{ .name }} 啟動本機容器資料庫服務，請稍候...'
RemoteRecover: '復原遠端資料庫需要先使用映像 {{ .name }} 啟動本機容器資料庫服務，請稍候...'
Arg: '參數'

# Redis
ErrTypeOfRedis: '復原檔案類型與目前持久化方式不符，請修改後重試'

# 容器
ErrInUsed: '{{ .detail }} 正被使用，無法刪除！'
ErrObjectInUsed: '該對象正被使用，無法刪除！'
ErrObjectBeDependent: '該映像正被其他映像所依賴，無法刪除！'
ErrPortRules: '連接埠數目不符，請重新輸入！'
ErrPgImagePull: '映像拉取逾時，請設定映像加速或手動拉取{{ .name }} 映像後重試'
PruneHelper: '本次清理 {{ .name }} 釋放磁碟空間 {{ .size }}'
ImageRemoveHelper: '刪除映像 {{ .name }} ，釋放磁碟空間 {{ .size }}'
BuildCache: '構建快取'
Volume: '磁碟區'
Network: '網路'
PruneStart: '清理中，請稍候...'
ContainerBackupPrepare: '準備容器備份工作目錄'
ContainerBackupStop: '備份前停止容器'
ContainerBackupInspect: '備份容器 Inspect 與網路資訊'
ContainerBackupMounts: '備份容器掛載資料'
ContainerBackupMeta: '寫入容器備份中繼資訊'
ContainerBackupStart: '備份後啟動容器'
ContainerRecoverPrepare: '準備容器還原工作目錄'
ContainerRecoverExtract: '解壓容器備份檔案'
ContainerRecoverParse: '載入容器備份中繼資訊'
ContainerRecoverCreate: '重建容器'
ContainerRecoverMounts: '還原容器掛載資料'
ContainerRecoverStart: '啟動已還原容器'
ContainerRecoverCleanup: '清理容器還原工作目錄'
ComposeBackupPrepare: '準備編排備份工作目錄'
ComposeBackupStop: '備份前停止編排'
ComposeBackupFiles: '備份編排檔案'
ComposeBackupContainers: '備份編排容器'
ComposeBackupMeta: '寫入編排備份中繼資訊'
ComposeBackupStart: '備份後啟動編排'
ComposeBackupCleanup: '清理編排備份工作目錄'
ComposeRecoverPrepare: '準備編排還原工作目錄'
ComposeRecoverExtract: '解壓編排備份檔案'
ComposeRecoverMeta: '載入編排備份中繼資訊'
ComposeRecoverMetaLogName: '編排還原中繼資訊：名稱={{ .name }}'
ComposeRecoverMetaLogPath: '編排還原中繼資訊：備份路徑={{ .backupPath }} 目標路徑={{ .targetDir }}'
ComposeRecoverMetaLogCount: '編排還原中繼資訊：檔案數={{ .files }} 容器數={{ .containers }}'
ComposeRecoverFiles: '還原編排檔案'
ComposeRecoverContainers: '還原編排容器'
ComposeRecoverRecord: '保存編排記錄'
ComposeRecoverCleanup: '清理編排還原工作目錄'

# 執行環境
ErrFileNotExist: '{{ .detail }} 檔案不存在！請檢查來源檔案完整性！'
ErrImageBuildErr: '映像build 失敗'
ErrImageExist: '映像已存在！請修改映像名稱。'
ErrDelWithWebsite: '執行環境已經關聯網站，無法刪除'
ErrRuntimeStart: '啟動失敗'
ErrPackageJsonNotFound: 'package.json 檔案不存在'
ErrScriptsNotFound: '沒有在 package.json 中找到 scripts 設定項'
ErrContainerNameNotFound: '無法取得容器名稱，請檢查.env 檔案'
ErrNodeModulesNotFound: 'node_modules 資料夾不存在！請編輯執行環境或等待執行環境啟動成功'
ErrContainerNameIsNull: '容器名稱不存在'
ErrPHPPortIsDefault: '9000 埠為預設埠，請修改後重試'
ErrPHPRuntimePortFailed: '{{ .name }} 埠已被目前執行環境使用，請修改後重試'

# 工具
ErrConfigNotFound: '設定檔不存在'
ErrConfigParse: '設定檔格式有誤'
ErrConfigIsNull: '設定檔不允許為空'
ErrConfigDirNotFound: '執行目錄不存在'
ErrConfigAlreadyExist: '已存在同名設定檔'
ErrUserFindErr: '使用者{{ .name }} 尋找失敗{{ .err }}'

# 計劃任務
CutWebsiteLogSuccess: '{{ .name }} 網站日誌切割成功，備份路徑{{ .path }}'
HandleShell: '執行腳本{{ .name }}'
HandleCurl: '存取 URL {{ .name }}'
HandleNtpSync: '系統時間同步'
HandleSystemClean: '系統快取清理'
SystemLog: '系統日誌'
CutWebsiteLog: '切割網站日誌'
FileOrDir: '目錄 / 檔案'
UploadFile: '上傳備份檔案 {{ .file }} 到 {{ .backup }}'
Upload: '上傳'
IgnoreBackupErr: '備份失敗，錯誤：{{ .detail }}，忽略本次錯誤...'
IgnoreUploadErr: '上傳失敗，錯誤：{{ .detail }}，忽略本次錯誤...'
LoadBackupFailed: '取得備份帳號連線失敗，錯誤：{{ .detail }}'
InExecuting: '目前任務正在執行中，請勿重複執行！'
NoSuchResource: '資料庫中未能查詢到備份內容，跳過...'
CleanLog: '清理日誌'
CleanLogByName: '清理 {{ .name }} 日誌'
WafIpGroupNotFound: 'WAF IP 群組未找到，請先到【進階功能-WAF-黑白名單-IP群組】添加遠端下載方式的IP群組'

# 工具箱
ErrNotExistUser: '目前使用者不存在，請修改後重試！'
ErrBanAction: '設定失敗，目前{{ .name }} 服務不可用，請重試'
ErrClamdscanNotFound: '未偵測到clamdscan 指令，請參考檔案安裝！'
TaskSwapSet: '設定 Swap'
SetSwap: '設定 Swap {{ .path }} - {{ .size }}'
CreateSwap: '建立 Swap 檔案'
FormatSwap: '格式化 Swap 檔案'
EnableSwap: '啟用 Swap'

# 防篡改
CleanTamperSetting: '清理歷史防護設定'
SetTamperWithRules: '根據規則啟動目錄防護'
ProtectDir: '防護目錄 {{ .name }}'
IgnoreFile: '保護檔案 {{ .name }}'
TamperSetSuccessful: '防護設定完成，開始監聽以下目錄：'

# WAF
ErrScope: '不支援修改此設定'
ErrStateChange: '狀態修改失敗'
ErrRuleExist: '規則已存在'
ErrRuleNotExist: '規則不存在'
ErrParseIP: 'IP 格式錯誤'
ErrDefaultIP: 'default 為保留名稱，請更換其他名稱'
ErrGroupInUse: 'IP 群組被黑/白名單使用，無法刪除'
ErrIPGroupAclUse: 'IP 群組被網站 {{ .name }} 自訂規則使用，無法刪除'
ErrIPGroupOriginProtectionUse: 'IP 群組被網站 {{ .name }} 的 CDN 來源站保護使用，無法刪除'
ErrOriginProtectionIPGroupRequired: '開啟來源站保護時必須選擇至少一個非空 IP 群組'
ErrOriginProtectionIPGroupInvalid: 'IP 群組 {{ .name }} 不存在或為空'
ErrGroupExist: 'IP 群組名稱已存在'
ErrIPRange: 'IP 範圍錯誤'
ErrIPExist: 'IP 已存在'
urlDefense: 'URL 規則'
urlHelper: '禁止訪問的URL'
dirFilter: '目錄過濾'
xss: 'XSS'
phpExec: 'PHP 腳本執行'
oneWordTrojan: '一句話木馬'
appFilter: '套用危險目錄過濾'
webShell: 'WebShell'
args: '參數規則'
protocolFilter: '協定過濾'
javaFilter: 'Java 危險檔案過濾'
scannerFilter: '掃描器過濾'
escapeFilter: '轉義過濾'
customRule: '自訂規則'
httpMethod: 'HTTP 方法過濾'
fileExt: '檔案上傳限制'
defaultIpBlack: '惡意IP 群組'
cookie: 'Cookie 規則'
urlBlack: 'URL 黑名單'
uaBlack: 'User-Agent 黑名單'
attackCount: '攻擊頻率限制'
fileExtCheck: '檔案上傳限制'
geoRestrict: '地區訪問限制'
unknownWebsite: '未授權網域存取'
notFoundCount: '404 頻率限制'
headerDefense: 'Header 規則'
defaultUaBlack: 'User-Agent 規則'
methodWhite: 'HTTP 規則'
captcha: '人機驗證'
fiveSeconds: '5 秒驗證'
vulnCheck: '補充規則'
acl: '自訂規則'
sql: 'SQL 注入'
cc: '訪問頻率限制'
defaultUrlBlack: 'URL 規則'
sqlInject: 'SQL 注入'
ErrDBNotExist: '資料庫不存在'
allow: '允許'
deny: '禁止'
OpenrestyNotFound: 'OpenResty 未安裝'
remoteIpIsNull: 'IP 列表為空'
OpenrestyVersionErr: 'OpenResty 版本過低，請升級 OpenResty 至 1.27.1.2-2-2-focal'
ErrFileTooLarge: '檔案超過 1MB，無法上傳'

# 任務
TaskStart: '{{ .name }} 任務開始[START]'
TaskEnd: '{{ .name }} 任務結束[COMPLETED]'
TaskFailed: '{{ .name }} 任務失敗'
TaskTimeout: '{{ .name }} 逾時'
TaskSuccess: '{{ .name }} 任務成功'
TaskRetry: '開始第{{ .name }} 次重試'
SubTaskSuccess: '{{ .name }} 成功'
SubTaskFailed: '{{ .name }} 失敗: {{ .err }}'
TaskInstall: '安裝'
TaskUninstall: '移除'
TaskCreate: '建立'
TaskDelete: '刪除'
TaskUpgrade: '升級'
TaskUpdate: '更新'
AgentPluginInstall: '安裝外掛程式'
AgentPluginEnable: '啟用外掛程式'
AgentPluginDisable: '停用外掛程式'
AgentPluginUpdate: '更新外掛程式'
AgentPluginUninstall: '解除安裝外掛程式'
TaskRestart: '重新啟動'
TaskProtect: '防護'
TaskBackup: '備份'
TaskRecover: '復原'
TaskRollback: '回滾'
TaskPull: '拉取'
TaskCommit: '製作'
TaskBuild: '建置'
TaskPush: '推送'
TaskClean: '清理'
TaskHandle: '執行'
TaskImport: '匯入'
TaskExport: '匯出'
Website: '網站'
App: '應用程式'
Runtime: '運作環境'
Database: '資料庫'
ConfigFTP: '建立FTP 使用者{{ .name }}'
ConfigOpenresty: '建立 OpenResty 設定檔'
InstallAppSuccess: '應用程式{{ .name }} 安裝成功'
ConfigRuntime: '設定執行環境'
ConfigApp: '設定應用程式'
SuccessStatus: '{{ .name }} 成功'
FailedStatus: '{{ .name }} 失敗{{ .err }}'
HandleLink: '處理應用程式關聯'
HandleDatabaseApp: '處理應用程式參數'
ExecShell: '執行{{ .name }} 腳本'
PullImage: '拉取映像'
Start: '開始'
Run: '啟動'
Stop: '停止'
Image: '映像'
Compose: '編排'
Container: '容器'
AppLink: '關聯應用程式'
EnableSSL: '開啟HTTPS'
AppStore: '應用程式商店'
TaskSync: '同步'
LocalApp: '本機應用'
SubTask: '子任務'
RuntimeExtension: '執行環境擴充'
TaskIsExecuting: '任務正在運作'
CustomAppstore: '自訂應用程式倉庫'
TaskExec: '執行'
TaskBatch: '批次操作'
FileConvert: '檔案格式轉換'

# 任務 - ClamAV
Clamscan: '掃描 {{ .name }}'
TaskScan: '掃描'

# 任務 - AI
OllamaModelPull: '拉取 Ollama 模型{{ .name }}'
OllamaModelSize: '取得 Ollama 模型{{ .name }} 大小'
AIBenchmarkRun: '執行 AI 基準測試'

# 任務 - 快照
Snapshot: '快照'
SnapDBInfo: '寫入1Panel 資料庫資訊'
SnapCopy: '複製檔案&目錄{{ .name }}'
SnapNewDB: '初始化資料庫{{ .name }} 連線'
SnapDeleteOperationLog: '刪除操作日誌'
SnapDeleteLoginLog: '刪除存取日誌'
SnapDeleteMonitor: '刪除監控資料'
SnapRemoveSystemIP: '移除系統IP'
SnapBaseInfo: '寫入1Panel 基本資料'
SnapInstallAppImageEmpty: '目前未勾選應用映像，跳過...'
SnapInstallApp: '備份 1Panel 已安裝應用'
SnapDockerSave: '壓縮已安裝應用'
SnapLocalBackup: '備份1Panel 本機備份目錄'
SnapCompressBackup: '壓縮本機備份目錄'
SnapPanelData: '備份1Panel 資料目錄'
SnapCompressPanel: '壓縮資料目錄'
SnapWebsite: '備份1Panel 網站目錄'
SnapCloseDBConn: '關閉資料庫連線'
SnapCompress: '製作快照檔案'
SnapCompressFile: '壓縮快照檔案'
SnapCheckCompress: '檢查快照壓縮檔'
SnapCompressSize: '快照檔案大小{{ .name }}'
SnapUpload: '上傳快照檔案'
SnapUploadTo: '上傳快照檔案到{{ .name }}'
SnapUploadRes: '上傳快照檔案到{{ .name }}'
SnapshotRecover: '快照復原'
RecoverDownload: '下載快照檔案'
Download: '下載'
RecoverDownloadAccount: '取得快照下載備份帳號{{ .name }}'
RecoverDecompress: '解壓縮快照壓縮檔'
Decompress: '解壓縮'
BackupBeforeRecover: '快照前備份系統相關資料'
ReadJson: '讀取快照內JSON 檔案'
ReadJsonPath: '取得快照內JSON 檔案路徑'
ReadJsonContent: '讀取JSON 檔案'
ReadJsonMarshal: 'JSON 轉義處理'
RecoverApp: '復原已安裝應用程式'
RecoverWebsite: '復原網站目錄'
RecoverAppImage: '復原快照映像備份'
RecoverCompose: '復原其他編排內容'
RecoverComposeList: '取得所有待復原編排'
RecoverComposeItem: '復原編排{{ .name }}'
RecoverAppEmpty: '快照檔案中未發現應用程式映像備份'
RecoverBaseData: '復原基礎資料及檔案'
RecoverDaemonJsonEmpty: '快照檔案及目前機器都不存在容器設定daemon.json 檔'
RecoverDaemonJson: '復原容器設定daemon.json 檔'
RecoverDBData: '復原資料庫資料'
RecoverBackups: '還原本機備份目錄'
RecoverPanelData: '復原資料目錄'

# 任務 - 容器
ContainerImagePull: '拉取容器映像{{ .name }}'
ContainerRemoveOld: '刪除原容器{{ .name }}'
ContainerImageCheck: '檢查映像是否正常拉取'
ContainerLoadInfo: '取得容器基本資訊'
ContainerRecreate: '容器更新失敗，現在開始復原原容器'
ContainerCreate: '建立新容器{{ .name }}'
ContainerCreateFailed: '容器建立失敗，刪除失敗容器'
ContainerStartCheck: '檢查容器是否已啟動'
ContainerAcquireLock: '等待容器 {{ .name }} 操作鎖'
ContainerUpgradeItem: '升級容器 {{ .name }}'
ContainerUpgradeSummary: '彙總容器升級結果'
ContainerCleanupWarning: '容器更新成功，但備份容器 {{ .name }} 刪除失敗。請確認新容器運作正常後手動刪除該備份容器。錯誤：{{ .err }}'
ContainerStopOld: '停止原容器 {{ .name }}'
ContainerRenameOld: '重新命名原容器 {{ .name }} 以便回復'
ContainerDisconnectOld: '釋放原容器 {{ .name }} 的網路位址'
ContainerCreateReplacement: '建立替換容器 {{ .name }}'
ContainerStartReplacement: '啟動替換容器 {{ .name }}'
ContainerWaitReplacement: '檢查替換容器 {{ .name }} 是否就緒'
ContainerRollbackRestartOld: '重新啟動原容器 {{ .name }}'
ContainerRollbackRemoveReplacement: '刪除啟動失敗的替換容器 {{ .name }}'
ContainerRollbackRenameOld: '恢復原容器 {{ .name }} 的名稱'
ContainerRollbackReconnectOld: '恢復原容器 {{ .name }} 的網路'

# 任務 - 映像
ImageBuild: '映像建置'
ImagePull: '拉取映像'
ImageRepoAuthFromDB: '從資料庫取得倉庫認證資訊'
ImagePush: '推播映像'
ImageRenameTag: '修改映像Tag'
ImageNewTag: '新映像Tag {{ .name }}'
ComposeCreate: '建立編排'

# 任務 - 網站
BackupNginxConfig: '備份網站OpenResty 設定檔'
CompressFileSuccess: '壓縮目錄成功，壓縮為{{ .name }}'
CompressDir: '壓縮目錄'
DeCompressFile: '解壓縮檔案{{ .name }}'
ErrCheckValid: '驗證備份檔失敗，{{ .name }}'
Rollback: '回滾'
websiteDir: '網站目錄'
RecoverFailedStartRollBack: '復原失敗，開始回溯'
AppBackupFileIncomplete: '備份檔案不完整缺少 app.json 或 app.tar.gz 檔案'
AppAttributesNotMatch: '應用程式類型或名稱不一致'

# 告警
ErrAlertMethodNotSupported: '當前版本不支援此告警方式'
ErrAlertSync: '警告訊息同步錯誤，請重試。'

# 任務 - 執行環境
ErrInstallExtension: '已有安裝任務正在進行，請等待任務結束'

# 告警郵件範本
PanelAlertTitle: '面板警示通知'
TestAlertTitle: '測試郵件 - 驗證信箱連通性'
TestAlert: '這是一封測試郵件，用於確認您的郵件發送設定是否正確。'
LicenseExpirationAlert: '您的 {{ .node }}{{ .ip }} 面板，授權將於 {{ .day }} 天後到期，詳情請登入面板檢視。'
CronJobFailedAlert: '您的 {{ .node }}{{ .ip }} 面板，排程任務{{ .name }}執行失敗，詳情請登入面板檢視。'
ClamAlert: '您的 {{ .node }}{{ .ip }} 面板，病毒掃描任務偵測到 {{ .num }} 個感染檔案，詳情請登入面板檢視。'
WebSiteAlert: '您的 {{ .node }}{{ .ip }} 面板，{{ .num }} 個網站將於 {{ .day }} 天後到期，詳情請登入面板檢視。'
SSLAlert: '您的 {{ .node }}{{ .ip }} 面板，{{ .num }} 張SSL憑證將於 {{ .day }} 天後到期，詳情請登入面板檢視。'
DiskUsedAlert: '您的 {{ .node }}{{ .ip }} 面板，磁碟 {{ .name }} 使用率已達 {{ .used }}，詳情請登入面板檢視。'
ResourceAlert: '您的 {{ .node }}{{ .ip }} 面板，過去 {{ .time }} 分鐘內 {{ .name }} 平均使用率為 {{ .used }}，詳情請登入面板檢視。'
PanelVersionAlert: '您的 {{ .node }}{{ .ip }} 面板，已有最新版本可供升級，詳情請登入面板檢視。'
PanelPwdExpirationAlert: '您的 {{ .node }}{{ .ip }} 面板，面板密碼將於 {{ .day }} 天後到期，詳情請登入面板檢視。'
CommonAlert: '您的 {{ .node }}{{ .ip }} 面板，{{ .msg }}，詳情請登入面板檢視。'
NodeExceptionAlert: '您的 {{ .node }}{{ .ip }} 面板，{{ .num }} 個節點出現異常，詳情請登入面板檢視。'
LicenseExceptionAlert: '您的 {{ .node }}{{ .ip }} 面板，{{ .num }} 個授權出現異常，詳情請登入面板檢視。'
SSHAndPanelLoginAlert: '您的 {{ .node }}{{ .ip }} 面板，來自 {{ .loginIp }} 的 {{ .name }} 登入出現異常，詳情請登入面板檢視。'

# 磁碟
DeviceNotFound: '裝置 {{ .name }} 未找到'
DeviceIsMounted: '裝置 {{ .name }} 已掛載，請先移除'
PartitionDiskErr: '分區失敗，{{ .err }}'
FormatDiskErr: '格式化磁碟失敗，{{ .err }}'
MountDiskErr: '掛載磁碟失敗，{{ .err }}'
XfsNotFound: '未偵測到 xfs 檔案系統，請先安裝 xfsprogs'

# 終端
TerminalAIBlockedRiskyCommand: '已攔截風險命令：{{ .command }}'
TerminalAIThinking: 'AI 正在思考...'
TerminalAIReadyToExecute: '思考完成，請按 Enter 執行（耗時 {{ .duration }}，token：{{ .tokens }}）'
TerminalAIRequestFailed: 'AI 請求失敗：{{ .err }}'

# AI 閘道
ErrAIProxyServiceNotInstalled: '{{ .name }} 服務未安裝'
ErrAIProxyModelAccountNotFound: '模型帳號 {{ .id }} 不存在'
ErrAIProxyModelMapRequired: '請填寫必填項'
ErrAIProxyModelMapInvalid: '模型映射必須是合法的 JSON 物件：{{ .err }}'
ErrAIProxyModelMapEmpty: '模型映射不能為空'
ErrAIProxyModelMapEmptyExternalModel: '模型映射中存在空的請求模型'
ErrAIProxyModelMapEmptyUpstreamModel: '模型 {{ .model }} 的上游模型不能為空'
AIProxyUserFallback: '已刪除使用者 (ID: {{ .id }})'
AIProviderBailian: '阿里雲百煉'
AIProviderBailianCodingPlan: '阿里雲百煉 Coding Plan'
AIProviderArk: '火山方舟'
AIProviderArkCodingPlan: '火山方舟 Coding Plan'
