diff --git a/README.md b/README.md index d0fc96dcf..498885d9f 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,7 @@ Русский Bahasa Melayu Persian + ພາສາລາວ

--- diff --git a/agent/app/dto/app.go b/agent/app/dto/app.go index 694f278d3..72e342427 100644 --- a/agent/app/dto/app.go +++ b/agent/app/dto/app.go @@ -2,6 +2,7 @@ package dto import ( "context" + "github.com/1Panel-dev/1Panel/agent/app/model" "github.com/1Panel-dev/1Panel/agent/app/task" ) @@ -133,6 +134,7 @@ type Locale struct { Tr string `json:"tr"` Es string `json:"es-es" yaml:"es-es"` Fa string `json:"fa"` + Lo string `json:"lo"` } type AppForm struct { diff --git a/agent/i18n/lang/lo.yaml b/agent/i18n/lang/lo.yaml index 49e5576f8..45b4c6802 100644 --- a/agent/i18n/lang/lo.yaml +++ b/agent/i18n/lang/lo.yaml @@ -1,4 +1,6 @@ ErrInvalidParams: 'ຄຳຮ້ອງຂໍບໍ່ຖືກຕ້ອງ: {{ .detail }}' +ErrMcpGatewayArgsParse: 'ຮູບແບບອາກິວເມັນ MCP ກຳນົດເອງບໍ່ຖືກຕ້ອງ' +ErrMcpGatewayArgsConflict: 'ອາກິວເມັນ {{ .name }} ຖືກຈັດການໂດຍ 1Panel ແລະ ບໍ່ສາມາດຕັ້ງຄ່າໃນອາກິວເມັນກຳນົດເອງໄດ້' ErrTokenParse: 'ໂທເຄັນຜິດພາດ: {{ .detail }}' ErrInitialPassword: 'ລະຫັດຜ່ານເດີມບໍ່ຖືກຕ້ອງ' ErrInternalServer: 'ລະບົບພາຍໃນຜິດພາດ: {{ .detail }}' @@ -10,6 +12,11 @@ ErrWgetProxyNotConfigured: 'ກະລຸນາກຳນົດຄ່າເຊີ ErrWgetProxyInvalid: 'ທີ່ຢູ່ເຊີເວີພຣັອກຊີບໍ່ຖືກຕ້ອງ: {{ .detail }}' ErrRecordExist: 'ຂໍ້ມູນນີ້ມີຢູ່ໃນລະບົບແລ້ວ' ErrRecordNotFound: 'ບໍ່ພົບຂໍ້ມູນ' +WafLogExport: 'ສົ່ງອອກລັອກ WAF' +MonitorLogExport: 'ສົ່ງອອກລັອກການຕິດຕາມເວັບໄຊ' +LogExportNoData: 'ບໍ່ມີລັອກທີ່ກົງກັບເງື່ອນໄຂການກັ່ນຕອງ' +LogExportDiskSpace: 'ພື້ນທີ່ດິສກ໌ທີ່ໃຊ້ໄດ້ໜ້ອຍກວ່າ 1 GiB; ການສົ່ງອອກຖືກຢຸດແລ້ວ' +LogExportRetentionInvalid: 'ໄລຍະເກັບບັນທຶກການສົ່ງອອກຕ້ອງຢູ່ລະຫວ່າງ 1 ຫາ 30 ມື້' ErrStructTransform: 'ການແປງປະເພດຂໍ້ມູນລົ້ມເຫຼວ: {{ .err }}' ErrNotLogin: 'ຍັງບໍ່ໄດ້ເຂົ້າສູ່ລະບົບ: {{ .detail }}' ErrPasswordExpired: 'ລະຫັດຜ່ານໝົດອາຍຸ: {{ .detail }}' @@ -48,6 +55,7 @@ Decrypt: "ຖອດລະຫັດ" #agent ErrAgentAccountBound: 'ບັນຊີຖືກຜູກມັດກັບຕົວແທນ (Agent) ແລະບໍ່ສາມາດລຶບໄດ້' ErrTerminalAIAccountInUse: 'ບັນຊີໂມເດລນີ້ກຳລັງຖືກໃຊ້ໂດຍ Terminal AI. ກະລຸນາປ່ຽນບັນຊີໃນການຕັ້ງຄ່າ Terminal AI ຫຼື ປິດໃຊ້ງານ Terminal AI ແລ້ວລອງໃໝ່.' +ErrFileAIAccountInUse: 'ບັນຊີໂມເດລນີ້ກຳລັງຖືກໃຊ້ໂດຍ AI ຈັດການໄຟລ໌. ກະລຸນາປ່ຽນບັນຊີໃນການຕັ້ງຄ່າ AI ຈັດການໄຟລ໌ ຫຼື ປິດໃຊ້ງານແລ້ວລອງໃໝ່.' ErrAgentAccountUnavailable: 'ການເຊື່ອມຕໍ່ບັນຊີບໍ່ສາມາດໃຊ້ງານໄດ້: {{ .err }}' ErrAgentProviderNotSupported: 'ບໍ່ຮອງຮັບຜູ້ໃຫ້ບໍລິການຕົວແທນນີ້' ErrAgentAccountRequired: 'ກະລຸນາເລືອກບັນຊີຕົວແທນກ່ອນ' @@ -55,6 +63,7 @@ ErrAgentAccountNotVerified: 'ບັນຊີຕົວແທນຍັງບໍ່ ErrAgentAccountModelsRequired: 'ກະລຸນາກຳນົດຄ່າໂມເດລຢ່າງໜ້ອຍໜຶ່ງຕົວ' ErrAgentAccountSingleInitialModel: 'ສາມາດກຳນົດຄ່າໂມເດລເລີ່ມຕົ້ນໄດ້ພຽງຕົວດຽວໃນລະຫວ່າງການສ້າງບັນຊີ' ErrAgentModelNotInAccount: 'ໂມເດລບໍ່ໄດ້ຖືກກຳນົດຄ່າໃນບັນຊີທີ່ເລືອກ' +ErrAgentVerifyModelInUse: 'ໂມເດລນີ້ຖືກໃຊ້ສຳລັບກວດສອບບັນຊີ. ກະລຸນາເລືອກໂມເດລກວດສອບອື່ນກ່ອນລຶບ.' ErrAgentFallbackModelDuplicate: 'ໂມເດລສຳຮອງ (Fallback) ບໍ່ສາມາດຊ້ຳກັນໄດ້' ErrAgentFallbackModelPrimary: 'ໂມເດລສຳຮອງບໍ່ສາມາດຄືກັນກັບໂມເດລຫຼັກ' ErrAgentModelInUse: 'ຕົວແທນທີ່ຜູກມັດກຳລັງໃຊ້ໂມເດລນີ້ຢູ່: {{ .name }}' @@ -362,6 +371,9 @@ ErrParseIP: 'ຮູບແບບ IP ບໍ່ຖືກຕ້ອງ' ErrDefaultIP: 'ຊື່ default ຖືກສະຫງວນໄວ້; ກະລຸນາໃຊ້ຊື່ອື່ນ' ErrGroupInUse: 'ກຸ່ມ IP ກຳລັງຖືກໃຊ້ງານໂດຍກົດລະບຽບ Blacklist/Whitelist' ErrIPGroupAclUse: 'ກຸ່ມ IP ກຳລັງຖືກໃຊ້ງານໂດຍກົດລະບຽບປັບແຕ່ງເອງຂອງເວັບໄຊ {{ .name }}' +ErrIPGroupOriginProtectionUse: 'ກຸ່ມ IP ຖືກໃຊ້ໂດຍການປ້ອງກັນ CDN Origin ຂອງເວັບໄຊ {{ .name }}' +ErrOriginProtectionIPGroupRequired: 'ກະລຸນາເລືອກຢ່າງໜ້ອຍໜຶ່ງກຸ່ມ IP ທີ່ບໍ່ຫວ່າງກ່ອນເປີດການປ້ອງກັນ Origin' +ErrOriginProtectionIPGroupInvalid: 'ກຸ່ມ IP {{ .name }} ບໍ່ມີຢູ່ ຫຼື ຫວ່າງເປົ່າ' ErrGroupExist: 'ຊື່ກຸ່ມ IP ມີຢູ່ໃນລະບົບແລ້ວ' ErrIPRange: 'ຊ່ວງ IP ບໍ່ຖືກຕ້ອງ' ErrIPExist: 'IP ມີຢູ່ໃນລະບົບແລ້ວ' diff --git a/core/app/dto/auth.go b/core/app/dto/auth.go index b070009f8..36fbd94a7 100644 --- a/core/app/dto/auth.go +++ b/core/app/dto/auth.go @@ -23,7 +23,7 @@ type Login struct { Password string `json:"password" validate:"required"` Captcha string `json:"captcha"` CaptchaID string `json:"captchaID"` - Language string `json:"language" validate:"required,oneof=zh en 'zh-Hant' ko ja ru ms 'pt-BR' tr 'es-ES' fa"` + Language string `json:"language" validate:"required,oneof=zh en 'zh-Hant' ko ja ru ms 'pt-BR' tr 'es-ES' fa lo"` } type SystemSetting struct { diff --git a/core/i18n/i18n.go b/core/i18n/i18n.go index cf983075d..39df1c972 100644 --- a/core/i18n/i18n.go +++ b/core/i18n/i18n.go @@ -29,6 +29,7 @@ var langFiles = map[string]string{ "tr": "lang/tr.yaml", "es-ES": "lang/es-ES.yaml", "fa": "lang/fa.yaml", + "lo": "lang/lo.yaml", } func GetMsgWithMap(key string, maps map[string]interface{}) string { diff --git a/core/i18n/lang/lo.yaml b/core/i18n/lang/lo.yaml new file mode 100644 index 000000000..0ee1e6282 --- /dev/null +++ b/core/i18n/lang/lo.yaml @@ -0,0 +1,409 @@ +# base errors +ErrInvalidParams: "ພາລາມິເຕີຄຳຮ້ອງຂໍບໍ່ຖືກຕ້ອງ: {{ .detail }}" +ErrTokenParse: "ເກີດຂໍ້ຜິດພາດໃນການສ້າງໂທເຄັນ: {{ .detail }}" +ErrInitialPassword: "ລະຫັດຜ່ານເລີ່ມຕົ້ນບໍ່ຖືກຕ້ອງ" +ErrInternalServer: "ຂໍ້ຜິດພາດພາຍໃນເຊີບເວີ: {{ .detail }}" +ErrInternalServerKey: "ຂໍ້ຜິດພາດພາຍໃນເຊີບເວີ:" +ErrRecordExist: "ມີບັນທຶກນີ້ຢູ່ແລ້ວ" +ErrRecordNotFound: "ບໍ່ພົບບັນທຶກ" +ErrStructTransform: "ການແປງຊະນິດຂໍ້ມູນລົ້ມເຫຼວ: {{ .detail }}" +ErrNotSupportType: "ບໍ່ຮອງຮັບຊະນິດ: {{ .name }}" +ErrDemoEnvironment: "ນີ້ແມ່ນເຊີບເວີສາທິດ, ຫ້າມດຳເນີນການນີ້!" +ErrCmdTimeout: "ການປະຕິບັດຄຳສັ່ງໝົດເວລາ!" +ErrPortInUsed: "ພອດ {{ .name }} ກຳລັງຖືກໃຊ້ງານຢູ່!" +ErrFileNotFound: "ບໍ່ມີໄຟລ໌ {{ .name }}" +ErrReqFailed: "ຄຳຮ້ອງຂໍ {{.name}} ລົ້ມເຫຼວ: {{ .err }}" + +# request and entrance +ErrNoSuchHost: "ການແປງຊື່ໂຮສລົ້ມເຫຼວ: {{ .err }}" +ErrHttpReqNotFound: "ບໍ່ພົບຊັບພະຍາກອນທີ່ຮ້ອງຂໍ: {{ .err }}" +ErrHttpReqFailed: "ຄຳຮ້ອງຂໍລົ້ມເຫຼວ {{ .err }}" +ErrHttpReqTimeOut: "ຄຳຮ້ອງຂໍໝົດເວລາ {{ .err }}" +ErrCreateHttpClient: "ສ້າງຄຳຮ້ອງຂໍບໍ່ສຳເລັດ {{ .err }}" +ErrProxy: "ຄຳຮ້ອງຂໍລົ້ມເຫຼວ; ກະລຸນາກວດສອບສະຖານະຂອງໂນດນີ້: {{ .detail }}" +ErrProxySetting: "ບໍ່ມີຂໍ້ມູນເຊີບເວີພຣັອກຊີ {{ .err }}, ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" +ErrEntrance: "ຂໍ້ມູນທາງເຂົ້າຄວາມປອດໄພຜິດພາດ, ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" +ErrEntranceFormat: "ບໍ່ຮອງຮັບທາງເຂົ້າຄວາມປອດໄພ {{ .name }}. ກະລຸນາກວດສອບແລ້ວລອງໃໝ່." + +# login and security +ErrNotLogin: "ຜູ້ໃຊ້ຍັງບໍ່ໄດ້ເຂົ້າລະບົບ: {{ .detail }}" +ErrSessionDataNotFound: "ເຊດຊັນໝົດອາຍຸແລ້ວ" +ErrSessionDataFormat: "ຮູບແບບຂໍ້ມູນເຊດຊັນບໍ່ຖືກຕ້ອງ" +ErrPasswordExpired: "ລະຫັດຜ່ານໝົດອາຍຸແລ້ວ: {{ .detail }}" +ErrLoginLocked: "ພະຍາຍາມລົ້ມເຫຼວຫຼາຍຄັ້ງເກີນໄປ. ການເຂົ້າລະບົບຖືກລັອກຊົ່ວຄາວ 5 ນາທີ." +ErrApiConfigStatusInvalid: "ການເຂົ້າເຖິງ API ຖືກປິດໃຊ້ງານ: {{ .detail }}" +ErrApiConfigKeyInvalid: "ຄີ API ບໍ່ຖືກຕ້ອງ: {{ .detail }}" +ErrApiConfigIPInvalid: "IP ຂອງຄຳຮ້ອງຂໍ API ບໍ່ຢູ່ໃນລາຍຊື່ອະນຸຍາດ: {{ .detail }}" +ErrApiConfigDisable: "ອິນເຕີເຟດນີ້ຫ້າມການເອີ້ນໃຊ້ API: {{ .detail }}" +ErrApiConfigKeyTimeInvalid: "ເວລາປະທັບ API ບໍ່ຖືກຕ້ອງ: {{ .detail }}" +ErrPasskeyDisabled: "Passkey ຕ້ອງເປີດໃຊ້ງານ HTTPS" +ErrPasskeyNotConfigured: "ຍັງບໍ່ໄດ້ຕັ້ງຄ່າ Passkey" +ErrPasskeyLimit: "ຈຳນວນ Passkey ຮອດຂີດຈຳກັດແລ້ວ (ສູງສຸດ 5)" +ErrPasskeySession: "ເຊດຊັນ Passkey ໝົດອາຍຸ ຫຼື ບໍ່ຖືກຕ້ອງ" +ErrPasskeyDuplicate: "ມີ Passkey ນີ້ຢູ່ແລ້ວ" +ErrPasskeyVerify: "ການຢືນຢັນ Passkey ລົ້ມເຫຼວ" + +# user and permission +ErrNoSuchUser: "ບໍ່ພົບຂໍ້ມູນຜູ້ໃຊ້, ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" +ErrToMaster: "ຜູ້ໃຊ້ນີ້ບໍ່ມີສິດດຳເນີນການນີ້ໃນໂນດຫຼັກ. ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" +ErrToNode: "ຜູ້ໃຊ້ນີ້ບໍ່ມີສິດດຳເນີນການນີ້ໃນໂນດນີ້. ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" +ErrRBAC: "ສິດຂອງຜູ້ໃຊ້ບໍ່ພຽງພໍ. ບໍ່ສາມາດດຳເນີນການນີ້ໄດ້. ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" +ErrNoneNode: "ຜູ້ໃຊ້ນີ້ບໍ່ມີສິດໃຊ້ງານໂນດ. ກະລຸນາຕິດຕໍ່ຜູ້ບໍລິຫານ ຫຼື ກວດສອບແລ້ວລອງໃໝ່!" +ErrOnlySuperAdmin: "ມີພຽງຜູ້ບໍລິຫານສູງສຸດເທົ່ານັ້ນທີ່ໃຊ້ຟັງຊັນນີ້ໄດ້!" +ErrRolePresetCannotDelete: "ບໍ່ສາມາດລຶບບົດບາດທີ່ລະບົບກຳນົດໄວ້ລ່ວງໜ້າ" +ErrRolePresetCannotUpdate: "ບໍ່ສາມາດອັບເດດບົດບາດທີ່ລະບົບກຳນົດໄວ້ລ່ວງໜ້າ" +ErrRoleBoundToUser: "ບົດບາດນີ້ຖືກຜູກກັບຜູ້ໃຊ້ແລ້ວ ແລະ ບໍ່ສາມາດລຶບໄດ້" +ErrRolePresetCannotBind: "ບໍ່ສາມາດມອບໝາຍບົດບາດທີ່ລະບົບກຳນົດໄວ້ລ່ວງໜ້າໃຫ້ຜູ້ໃຊ້" +ErrNodeAdminMasterForbidden: "ບໍ່ສາມາດເພີ່ມສິດຜູ້ບໍລິຫານໂນດໃຫ້ກັບໂນດຫຼັກ" +ErrSuperAdminCannotDelete: "ບໍ່ສາມາດລຶບຜູ້ໃຊ້ທີ່ເປັນຜູ້ບໍລິຫານສູງສຸດ" +ErrGroupIsDefault: "ເປັນກຸ່ມເລີ່ມຕົ້ນ, ບໍ່ສາມາດລຶບໄດ້" +ErrGroupIsInUse: "ກຸ່ມນີ້ກຳລັງຖືກໃຊ້ງານ ແລະ ບໍ່ສາມາດລຶບໄດ້." + +# license +LicenseCheck: 'ກວດສອບວ່າໃບອະນຸຍາດພ້ອມໃຊ້ງານຫຼືບໍ່' +ErrLicenseInUsed: 'ໃບອະນຸຍາດຖືກຜູກໄວ້ແລ້ວ. ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!' +ErrLicenseExpired: 'ໃບອະນຸຍາດໝົດອາຍຸແລ້ວ. ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!' +ErrLicense: "ຮູບແບບໃບອະນຸຍາດຜິດພາດ, ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" +ErrLicenseCheck: "ການກວດສອບໃບອະນຸຍາດລົ້ມເຫຼວ, ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" +ErrXpackVersion: "ການກວດສອບໃບອະນຸຍາດລົ້ມເຫຼວ, ໃບອະນຸຍາດນີ້ຈຳກັດເວີຊັນ ແລະ ບໍ່ສາມາດນຳເຂົ້າໄດ້, ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" +ErrLicenseSave: "ບັນທຶກຂໍ້ມູນໃບອະນຸຍາດບໍ່ສຳເລັດ, ຂໍ້ຜິດພາດ {{ .err }}, ກະລຸນາລອງໃໝ່!" +ErrLicenseSync: "ການຊິງໃບອະນຸຍາດລົ້ມເຫຼວ, ບໍ່ພົບຂໍ້ມູນໃບອະນຸຍາດໃນຖານຂໍ້ມູນ!" +ErrLicenseExist: "ມີບັນທຶກໃບອະນຸຍາດນີ້ຢູ່ແລ້ວ. ທ່ານສາມາດໄປທີ່ໜ້າໃບອະນຸຍາດເພື່ອຜູກໂນດໄດ້ໂດຍກົງ." +ErrXpackNotFound: "ສ່ວນນີ້ຕ້ອງໃຊ້ຮຸ່ນທຸລະກິດ. ກະລຸນານຳເຂົ້າໃບອະນຸຍາດໃນ ການຕັ້ງຄ່າແຜງ > ໃບອະນຸຍາດ." +ErrXpackExceptional: "ສ່ວນນີ້ຕ້ອງໃຊ້ຮຸ່ນທຸລະກິດ. ກະລຸນາຊິງສະຖານະໃບອະນຸຍາດໃນ ການຕັ້ງຄ່າແຜງ > ໃບອະນຸຍາດ." +ErrXpackLost: "ການລອງໃບອະນຸຍາດໃໝ່ຮອດຂີດຈຳກັດແລ້ວ. ໄປທີ່ ການຕັ້ງຄ່າແຜງ > ໃບອະນຸຍາດ ແລະ ຊິງດ້ວຍຕົນເອງ." +ErrEnterpriseLicenseRequired: "ຍັງບໍ່ໄດ້ນຳເຂົ້າໃບອະນຸຍາດຮຸ່ນວິສາຫະກິດ. ກະລຸນານຳເຂົ້າໃບອະນຸຍາດກ່ອນ." +ErrDeviceLost: "ໄຟລ໌ທີ່ຈຳເປັນສຳລັບກວດສອບໃບອະນຸຍາດຫາຍໄປ, ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" +ErrDeviceErr: "ສະພາບແວດລ້ອມປັດຈຸບັນບໍ່ກົງກັບສະພາບແວດລ້ອມທີ່ນຳເຂົ້າໃບອະນຸຍາດ. ກະລຸນາແກ້ໄຂໃບອະນຸຍາດແລ້ວນຳເຂົ້າໃໝ່." +ErrXpackTimeout: "ຄຳຮ້ອງຂໍໝົດເວລາ, ການເຊື່ອມຕໍ່ເຄືອຂ່າຍອາດບໍ່ສະຖຽນ, ກະລຸນາລອງໃໝ່ພາຍຫຼັງ!" +ErrUnbindMaster: "ຍັງມີໂນດຢູ່ໃນການຈັດການໂນດ. ກະລຸນາລຶບໂນດກ່ອນ ແລ້ວຈຶ່ງຍົກເລີກການຜູກໃບອະນຸຍາດປັດຈຸບັນ." +ErrFreeNodeLimit: "ຈຳນວນໂນດທີ່ສາມາດເພີ່ມໄດ້ຮອດຂີດຈຳກັດແລ້ວ. ກະລຸນາຊື້ແລ້ວລອງໃໝ່." +ErrNodeBound: "ໃບອະນຸຍາດນີ້ຖືກຜູກກັບໂນດອື່ນແລ້ວ, ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" +ErrNodeBoundDelete: "ໃບອະນຸຍາດນີ້ຖືກຜູກແລ້ວ ແລະ ບໍ່ຮອງຮັບການລຶບ. ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" +ErrNodeBoundLimit: "ໂນດຟຣີປັດຈຸບັນຮອດຂີດຈຳກັດແລ້ວ, ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" +ErrLicenseFree: "ໂນດຟຣີຈະໃຊ້ງານໄດ້ເມື່ອໃບອະນຸຍາດຖືກຜູກກັບໂນດຢ່າງຖືກຕ້ອງເທົ່ານັ້ນ. ກະລຸນາກວດສອບແລ້ວລອງໃໝ່." +ErrLicenseUnbind: "ຍັງມີໂນດຮຸ່ນຊຸມຊົນທີ່ຜູກກັບໃບອະນຸຍາດນີ້. ກະລຸນາຍົກເລີກການຜູກໃນ ການຕັ້ງຄ່າແຜງ > ໃບອະນຸຍາດ ແລ້ວລອງໃໝ່." +ErrLicenseBindCount: "ຈຳນວນໂນດຟຣີຂອງໃບອະນຸຍາດໃໝ່ນ້ອຍກວ່າຈຳນວນໂນດຮຸ່ນຊຸມຊົນທີ່ຜູກຢູ່ປັດຈຸບັນ. ກະລຸນາກວດສອບແລ້ວລອງໃໝ່." +ErrNoSuchNode: "ບໍ່ພົບຂໍ້ມູນໂນດ, ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" +ErrNodeUnbind: "ໂນດນີ້ບໍ່ຢູ່ໃນຂອບເຂດການຜູກຂອງໃບອະນຸຍາດ, ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" +ErrNodeBind: "ໂນດນີ້ຖືກຜູກກັບໃບອະນຸຍາດແລ້ວ, ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" +ErrNodeLocalRollback: "ໂນດຫຼັກບໍ່ຮອງຮັບການຍ້ອນກັບໂດຍກົງ. ກະລຸນາໃຊ້ຄຳສັ່ງ '1pctl restore' ດ້ວຍຕົນເອງເພື່ອຍ້ອນກັບ." +ErrIntlLicense: "ເວີຊັນປັດຈຸບັນຍັງບໍ່ຮອງຮັບການນຳເຂົ້າໃບອະນຸຍາດສາກົນ. ກະລຸນາລໍຖ້າ!" +InvalidRequestBodyType: "ຮູບແບບເນື້ອຫາຄຳຮ້ອງຂໍບໍ່ຖືກຕ້ອງ. ກະລຸນາກວດວ່າເນື້ອຫາກົງກັບຮູບແບບທີ່ກຳນົດແລ້ວລອງໃໝ່." +InvalidLicenseCodeType: "ຮູບແບບລະຫັດໃບອະນຸຍາດທີ່ໃຫ້ມາບໍ່ຖືກຕ້ອງ, ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" +LicenseNotFoundType: "ບໍ່ພົບໃບອະນຸຍາດ, ບໍ່ມີບັນທຶກທີ່ກົງກັບໃບອະນຸຍາດທີ່ໃຫ້ມາໃນລະບົບ. ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" +LicenseRevokedType: "ໃບອະນຸຍາດທີ່ຮ້ອງຂໍຖືກຖອນແລ້ວ ແລະ ບໍ່ສາມາດໃຊ້ງານໄດ້ອີກ. ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" +LicenseExpiredType: "ໃບອະນຸຍາດໝົດອາຍຸແລ້ວ. ກະລຸນາຕໍ່ອາຍຸ ຫຼື ນຳເຂົ້າໃໝ່ໃນ ການຕັ້ງຄ່າແຜງ - ໃບອະນຸຍາດ ກ່ອນລອງໃໝ່." +LicenseProductMismatchType: "ໃບອະນຸຍາດບໍ່ກົງກັບຜະລິດຕະພັນ ຫຼື ບໍລິການທີ່ຮ້ອງຂໍ!" +InvalidAssigneeType: "ຂໍ້ມູນຜູ້ໃຊ້ ຫຼື ອຸປະກອນເປົ້າໝາຍສຳລັບການມອບໝາຍໃບອະນຸຍາດບໍ່ຖືກຕ້ອງ. ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" +LicenseUsageNotFoundType: "ບໍ່ພົບບັນທຶກການໃຊ້ງານ. ໃບອະນຸຍາດນີ້ຍັງບໍ່ໄດ້ເປີດໃຊ້ງານ ຫຼື ໃຊ້ງານເທື່ອ. ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" +LicenseUsageLimitExceededType: "ໃບອະນຸຍາດນີ້ຖືກຜູກກັບໂນດອື່ນແລ້ວ. ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" + +# node and cluster +MasterNode: "ໂນດຫຼັກ" +Node: "ໂນດ" +ErrLocalDelete: "ບໍ່ສາມາດລຶບໂນດພາຍໃນເຄື່ອງໄດ້!" +ErrMasterDelete: "ບໍ່ສາມາດລຶບໂນດຫຼັກໄດ້. ກະລຸນາລຶບໂນດຍ່ອຍກ່ອນ." +ClusterNameIsExist: "ມີຊື່ຄລັສເຕີນີ້ຢູ່ແລ້ວ." +AppStatusUnHealthy: "ດຶງສະຖານະແອັບບໍ່ສຳເລັດ. ກະລຸນາກວດສອບສະຖານະໂນດທີ່ຕິດຕັ້ງໃນລາຍຊື່ໂນດ." +MasterNodePortNotAvailable: "ການກວດສອບການເຊື່ອມຕໍ່ຂອງໂນດ {{ .name }} ຜ່ານພອດ {{ .port }} ລົ້ມເຫຼວ. ກະລຸນາກວດສອບການຕັ້ງຄ່າໄຟຣ໌ວໍ/ກຸ່ມຄວາມປອດໄພ ແລະ ສະຖານະໂນດຫຼັກ." +ClusterMasterNotExist: "ໂນດຫຼັກຂອງຄລັສເຕີຖືກຕັດການເຊື່ອມຕໍ່. ກະລຸນາລຶບໂນດຍ່ອຍ." + +# virtual machine +ErrVMNotFound: "ບໍ່ມີເຄື່ອງສະເໝືອນ" +ErrVMAlreadyExists: "ມີເຄື່ອງສະເໝືອນຢູ່ແລ້ວ" +ErrVMImageAlreadyExists: "ມີອິມເມຈເຄື່ອງສະເໝືອນຢູ່ແລ້ວ: {{ .detail }}" +ErrVMStoragePathInUse: "ເສັ້ນທາງພູນຈັດເກັບຖືກໃຊ້ໂດຍ [{{ .name }}] ແລ້ວ" +ErrVMHelperNotFound: "ບໍ່ພົບ 1panel-kvm" +ErrVMBridgeManaged: "ຊື່ບຣິດຈ໌ຖືກຈັດການໂດຍ libvirt ຫຼື Docker ແລ້ວ" +ErrVMNetworkInUse: "ເຄືອຂ່າຍກຳລັງຖືກໃຊ້ງານ ແລະ ບໍ່ສາມາດລຶບໄດ້" +ErrVMStorageInUse: "ພູນຈັດເກັບກຳລັງຖືກໃຊ້ງານ ແລະ ບໍ່ສາມາດລຶບໄດ້" +ErrVMStorageNameCannotChange: "ບໍ່ສາມາດປ່ຽນຊື່ພູນຈັດເກັບໄດ້" +ErrVMStoragePathCannotChange: "ບໍ່ສາມາດປ່ຽນເສັ້ນທາງພູນຈັດເກັບໄດ້" +ErrVMRunning: "ເຄື່ອງສະເໝືອນກຳລັງເຮັດວຽກ" +ErrVMLibvirtConnect: "ເຊື່ອມຕໍ່ກັບ libvirt ບໍ່ສຳເລັດ" +ErrVMPermission: "ບໍ່ມີສິດດຳເນີນການກັບເຄື່ອງສະເໝືອນ: {{ .detail }}" +ErrVMNetworkNotFound: "ບໍ່ມີເຄືອຂ່າຍເຄື່ອງສະເໝືອນ" +ErrVMInvalidPath: "ເສັ້ນທາງເຄື່ອງສະເໝືອນບໍ່ຖືກຕ້ອງ" +ErrVMInvalidInput: "ພາລາມິເຕີເຄື່ອງສະເໝືອນບໍ່ຖືກຕ້ອງ" +ErrVMCommandFailed: "ຄຳສັ່ງເຄື່ອງສະເໝືອນລົ້ມເຫຼວ: {{ .err }}" +VMCreateTask: "ສ້າງເຄື່ອງສະເໝືອນ [{{ .name }}]" +VMCreateFromTemplateTask: "ສ້າງເຄື່ອງສະເໝືອນ [{{ .name }}] ຈາກແມ່ແບບ" +VMUpdateTask: "ອັບເດດເຄື່ອງສະເໝືອນ [{{ .name }}]" +VMRenameTask: "ປ່ຽນຊື່ເຄື່ອງສະເໝືອນ [{{ .name }}] ເປັນ [{{ .newName }}]" +VMDeleteTask: "ລຶບເຄື່ອງສະເໝືອນ [{{ .name }}]" +VMTemplateCreateTask: "ບັນທຶກເຄື່ອງສະເໝືອນ [{{ .name }}] ເປັນແມ່ແບບ [{{ .template }}]" +VMTemplateDeleteTask: "ລຶບແມ່ແບບເຄື່ອງສະເໝືອນ [{{ .name }}]" +VMForceDeleteMetadataOnly: "ບໍ່ພົບ 1panel-kvm, ຈະບັງຄັບລຶບສະເພາະເມຕາດາຕາຂອງເຄື່ອງສະເໝືອນ [{{ .name }}]" +VMForceDeleteMetadataAfterLibvirtFailed: "ລຶບເຄື່ອງສະເໝືອນ [{{ .name }}] ຈາກ libvirt ບໍ່ສຳເລັດ, ຈະບັງຄັບລຶບເມຕາດາຕາ: {{ .err }}" +VMForceDeleteDiskFailed: "ບັງຄັບລຶບໄຟລ໌ດິສກ໌ເຄື່ອງສະເໝືອນ [{{ .path }}] ບໍ່ສຳເລັດ: {{ .err }}" +VMForceDeleteDiskSuccess: "ບັງຄັບລຶບໄຟລ໌ດິສກ໌ເຄື່ອງສະເໝືອນ [{{ .path }}] ສຳເລັດແລ້ວ" +VMSnapshotCreateTask: "ສ້າງສະແນັບຊັອດ [{{ .snapshot }}] ໃຫ້ເຄື່ອງສະເໝືອນ [{{ .vm }}]" +VMSnapshotCreateStep: "ສ້າງສະແນັບຊັອດເຄື່ອງສະເໝືອນ [{{ .snapshot }}]" +VMSnapshotRecoverTask: "ກູ້ຄືນສະແນັບຊັອດ [{{ .snapshot }}] ໃຫ້ເຄື່ອງສະເໝືອນ [{{ .vm }}]" +VMSnapshotRecoverStep: "ກູ້ຄືນສະແນັບຊັອດເຄື່ອງສະເໝືອນ [{{ .snapshot }}]" +VMSnapshotDeleteTask: "ລຶບສະແນັບຊັອດ [{{ .snapshot }}] ຂອງເຄື່ອງສະເໝືອນ [{{ .vm }}]" +VMSnapshotDeleteStep: "ລຶບສະແນັບຊັອດເຄື່ອງສະເໝືອນ [{{ .snapshot }}]" + +# app +CustomAppStoreFileValid: "ແພັກເກດຮ້ານຄ້າແອັບຕ້ອງເປັນຮູບແບບ .tar.gz" +AppBackup: 'ສຳຮອງແອັບ' +AppBackupPush: 'ໂອນໄຟລ໌ສຳຮອງແອັບ {{.file}} ໄປຫາໂນດ {{ .name }}' +ErrSourceTargetSame: 'ໂນດຕົ້ນທາງ ແລະ ໂນດປາຍທາງຈະເປັນໂນດດຽວກັນບໍ່ໄດ້!' +AppInstall: 'ຕິດຕັ້ງແອັບ {{ .name }} ໃນໂນດ {{ .targetNode }}' +AppInstallCheck: 'ກວດສອບສະພາບແວດລ້ອມສຳລັບຕິດຕັ້ງແອັບ' + +# backup +ErrBackupInUsed: "ບັນຊີສຳຮອງນີ້ຖືກໃຊ້ໃນວຽກຕາມກຳນົດເວລາ ແລະ ບໍ່ສາມາດລຶບໄດ້" +ErrBackupCheck: "ການທົດສອບການເຊື່ອມຕໍ່ບັນຊີສຳຮອງລົ້ມເຫຼວ {{ .err }}" +ErrBackupLocal: "ບັນຊີສຳຮອງເຊີບເວີພາຍໃນເຄື່ອງບໍ່ຮອງຮັບການດຳເນີນການນີ້!" +ErrBackupPublic: "ກວດພົບວ່າບັນຊີສຳຮອງນີ້ບໍ່ແມ່ນບັນຊີສາທາລະນະ, ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" +ErrOSSConn: "ບໍ່ສາມາດຮັບເວີຊັນລ່າສຸດໄດ້. ກະລຸນາກວດສອບການເຊື່ອມຕໍ່ອິນເຕີເນັດຂອງເຊີບເວີ." +MvBackup: "ຍ້າຍຂໍ້ມູນໄປຫາໄດເຣັກທໍຣີສຳຮອງ" + +# alert +ErrAlertSync: "ການຊິງຂໍ້ມູນແຈ້ງເຕືອນຜິດພາດ, ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" + +# AI gateway +ErrAIProxyUserGroupIsDefault: "ບໍ່ສາມາດລຶບກຸ່ມຜູ້ໃຊ້ເລີ່ມຕົ້ນໄດ້." +ErrAIProxyUserGroupInUse: "ກຸ່ມຜູ້ໃຊ້ກຳລັງຖືກໃຊ້ງານ ແລະ ບໍ່ສາມາດລຶບໄດ້." +ErrAIProxyUserGroupExists: "ມີຊື່ກຸ່ມຜູ້ໃຊ້ນີ້ຢູ່ແລ້ວ." +ErrAIProxyBackendAccountExists: "ບັນຊີໂມເດວນີ້ຖືກນຳເຂົ້າໃນພູນບັນຊີ AI Gateway ແລ້ວ." +ErrAIProxyModelGroupInUse: "ກຸ່ມໂມເດວກຳລັງຖືກໃຊ້ງານ ແລະ ບໍ່ສາມາດລຶບໄດ້." +ErrAIProxyModelGroupExists: "ມີຊື່ກຸ່ມໂມເດວນີ້ຢູ່ແລ້ວ." +ErrAIProxySensitiveGroupInUse: "ກຸ່ມຄຳທີ່ລະອຽດອ່ອນກຳລັງຖືກໃຊ້ງານ ແລະ ບໍ່ສາມາດລຶບໄດ້." +ErrAIProxySensitiveGroupExists: "ມີຊື່ກຸ່ມຄຳທີ່ລະອຽດອ່ອນນີ້ຢູ່ແລ້ວ." +AIBenchmarkRun: "ດຳເນີນການທົດສອບປະສິດທິພາບ AI" + +# task +TaskStart: "ວຽກ {{ .name }} ເລີ່ມແລ້ວ [START]" +TaskEnd: "ວຽກ {{ .name }} ສິ້ນສຸດແລ້ວ [COMPLETED]" +TaskFailed: "ວຽກ {{ .name }} ລົ້ມເຫຼວ" +TaskTimeout: "ວຽກ {{ .name }} ໝົດເວລາ" +TaskSuccess: "ວຽກ {{ .name }} ສຳເລັດ" +TaskRetry: "ລອງວຽກ {{ .name }} ໃໝ່" +SubTaskSuccess: "{{ .name }} ສຳເລັດ" +SubTaskFailed: "{{ .name }} ລົ້ມເຫຼວ: {{ .err }}" +TaskInstall: "ຕິດຕັ້ງ" +TaskUpgrade: "ອັບເກຣດ" +TaskSync: 'ຊິງຂໍ້ມູນ' +TaskSyncForNode: "ຊິງຂໍ້ມູນໂນດ" +TaskBackup: "ສຳຮອງ" +TaskPush: "ສົ່ງ" +TaskRsync: "ຊິງຂໍ້ມູນ" +SuccessStatus: "{{ .name }} ສຳເລັດ" +FailedStatus: "{{ .name }} ລົ້ມເຫຼວ {{ .err }}" +Start: "ເລີ່ມ" +SubTask: "ວຽກຍ່ອຍ" +Skip: "ບໍ່ສົນໃຈຂໍ້ຜິດພາດ ແລະ ສືບຕໍ່" +Success: "ສຳເລັດ" + +# agent batch task +BatchInstallAgent: "ຕິດຕັ້ງເອເຈນແບບກຸ່ມ" +DispatchAgentInstallTasks: "ຈັດສົ່ງວຽກຕິດຕັ້ງເອເຈນ" +BatchUpgradeAgent: "ອັບເກຣດເອເຈນແບບກຸ່ມ" +DispatchAgentUpgradeTasks: "ຈັດສົ່ງວຽກອັບເກຣດເອເຈນ" +BatchAgentInstallDispatchFailed: "ໂນດ {{ .node }} ຈັດສົ່ງວຽກຕິດຕັ້ງ {{ .agentType }} ບໍ່ສຳເລັດ ຂໍ້ຄວາມ: {{ .err }}" +BatchAgentInstallSubmitted: "ໂນດ {{ .node }} ຈັດສົ່ງວຽກຕິດຕັ້ງ {{ .agentType }} ສຳເລັດແລ້ວ!" +BatchAgentUpgradeDispatchFailed: "ໂນດ {{ .node }} ຈັດສົ່ງວຽກອັບເກຣດ {{ .agentType }} ບໍ່ສຳເລັດ ຂໍ້ຄວາມ: {{ .err }}" +BatchAgentUpgradeAlreadyLatest: "ໂນດ {{ .node }} ມີເອເຈນ {{ .agent }} ຢູ່ທີ່ເວີຊັນເປົ້າໝາຍແລ້ວ, ຂ້າມ" +BatchAgentUpgradeSubmitted: "ໂນດ {{ .node }} ຈັດສົ່ງວຽກອັບເກຣດ {{ .agent }} ສຳເລັດແລ້ວ!" +BatchAgentUpgradeFailed: "ໂນດ {{ .node }} ຈັດສົ່ງວຽກອັບເກຣດ {{ .agent }} ບໍ່ສຳເລັດ ຂໍ້ຄວາມ: {{ .err }}" +BatchInstallAgentSkill: "ແຈກຢາຍ Skill ແບບກຸ່ມ" +DispatchAgentSkillInstallTasks: "ຈັດສົ່ງວຽກຕິດຕັ້ງ Skill" +BatchAgentSkillDispatchFailed: "ໂນດ {{ .node }} ຈັດສົ່ງ {{ .skill }} ໄປຫາ {{ .target }} ບໍ່ສຳເລັດ ຂໍ້ຄວາມ: {{ .err }}" +BatchAgentNoAgentsFound: "ໂນດ {{ .node }} ບໍ່ພົບເອເຈນ {{ .agentType }}, ຂ້າມ" +BatchAgentSkillSkipped: "ໂນດ {{ .node }} {{ .agent }} ຖືກຂ້າມ ຂໍ້ຄວາມ: {{ .msg }}" +BatchAgentSkillInstallSubmitted: "ໂນດ {{ .node }} ຈັດສົ່ງວຽກຕິດຕັ້ງ {{ .skill }} ໄປຫາ {{ .agent }} ສຳເລັດແລ້ວ!" +BatchAgentSkillInstallFailed: "ໂນດ {{ .node }} ຈັດສົ່ງວຽກຕິດຕັ້ງ {{ .skill }} ໄປຫາ {{ .agent }} ບໍ່ສຳເລັດ ຂໍ້ຄວາມ: {{ .err }}" +BatchAgentOperateDispatchFailed: "ໂນດ {{ .node }} ຈັດສົ່ງວຽກຂອງ {{ .agentType }} ສຳລັບການດຳເນີນການ {{ .operate }} ບໍ່ສຳເລັດ ຂໍ້ຄວາມ: {{ .err }}" +BatchAgentOperateSkipped: "ໂນດ {{ .node }} {{ .agent }} ຖືກຂ້າມ ຂໍ້ຄວາມ: {{ .msg }}" +BatchAgentOperateSubmitted: "ໂນດ {{ .node }} ຈັດສົ່ງວຽກຂອງ {{ .agent }} ສຳລັບການດຳເນີນການ {{ .operate }} ສຳເລັດແລ້ວ!" +BatchAgentOperateFailed: "ໂນດ {{ .node }} ຈັດສົ່ງວຽກຂອງ {{ .agent }} ສຳລັບການດຳເນີນການ {{ .operate }} ບໍ່ສຳເລັດ ຂໍ້ຄວາມ: {{ .err }}" +BatchStartAgent: "ເລີ່ມເອເຈນແບບກຸ່ມ" +DispatchAgentStartTasks: "ຈັດສົ່ງວຽກເລີ່ມເອເຈນ" +BatchStopAgent: "ຢຸດເອເຈນແບບກຸ່ມ" +DispatchAgentStopTasks: "ຈັດສົ່ງວຽກຢຸດເອເຈນ" +BatchRestartAgent: "ເລີ່ມເອເຈນຄືນໃໝ່ແບບກຸ່ມ" +DispatchAgentRestartTasks: "ຈັດສົ່ງວຽກເລີ່ມເອເຈນຄືນໃໝ່" +BatchDeleteAgent: "ລຶບເອເຈນແບບກຸ່ມ" +DispatchAgentDeleteTasks: "ຈັດສົ່ງວຽກລຶບເອເຈນ" +AgentOperateStart: "ເລີ່ມ" +AgentOperateStop: "ຢຸດ" +AgentOperateRestart: "ເລີ່ມຄືນໃໝ່" +AgentOperateDelete: "ລຶບ" + +# app and skill task +PushAppInstallTaskToNode: "ສົ່ງວຽກຕິດຕັ້ງແອັບໄປຫາໂນດ [{{ .name }}]" +AppInstallTask: "ວຽກຕິດຕັ້ງແອັບ" +PushAppFailed: "ສົ່ງວຽກຕິດຕັ້ງແອັບບໍ່ສຳເລັດ" +SkillHubInstallTask: "ຕິດຕັ້ງ Skill [{{ .name }}]" +SkillHubInstallToTarget: "ຕິດຕັ້ງ Skill ໄປຍັງເປົ້າໝາຍ [{{ .name }}]" + +# script library +ScriptLibrary: "ຄັງສະຄຣິບ" +RemoteScriptLibrary: "ຄັງສະຄຣິບໄລຍະໄກ" +ScriptSyncSkip: "ຄັງສະຄຣິບເປັນເວີຊັນລ່າສຸດແລ້ວ" +DownloadData: "ກຳລັງດາວໂຫຼດໄຟລ໌ຄັງສະຄຣິບ data.yaml" +DownloadPackage: "ກຳລັງດາວໂຫຼດແພັກເກດຄັງສະຄຣິບ" +AnalyticCompletion: "ວິເຄາະສຳເລັດແລ້ວ, ກຳລັງຊິງໄປຫາຖານຂໍ້ມູນ..." + +# node sync +SyncNode: "ຊິງຂໍ້ມູນໄປຫາໂນດ {{ .name }}" +LocalName: "ຊື່ 'local' ໃຊ້ສະເພາະສຳລັບການລະບຸເຄື່ອງພາຍໃນຂອງລະບົບ" +SyncPackageData: "ຈັດແພັກເກດຂໍ້ມູນສຳລັບຊິງ" +SyncPackageEncrypt: "ເຂົ້າລະຫັດແພັກເກດຂໍ້ມູນ" +SyncRequest: "ຮ້ອງຂໍ API ຊິງໂນດ" +SyncFailedRetry: "ການຊິງຂໍ້ມູນໂນດໝົດເວລາ (ຄັ້ງທີ {{ .index }}), ກຳລັງລອງໃໝ່..." +SyncFailed: "ການຊິງລົ້ມເຫຼວ, ກະລຸນາຊິງດ້ວຍຕົນເອງໃນລາຍຊື່ໂນດ!" +SyncSystemProxy: "ການຕັ້ງຄ່າພຣັອກຊີລະບົບ" +SyncScripts: "ຄັງສະຄຣິບ" +SyncBackupAccounts: "ບັນຊີສຳຮອງ" +SyncAlertSetting: "ການຕັ້ງຄ່າແຈ້ງເຕືອນ" +SyncCustomApp: "ແອັບກຳນົດເອງ" +SyncLanguage: "ພາສາລະບົບ" +SyncEdition: "ພາກພື້ນ" + +# node upgrade +NodeUpgrade: "ອັບເກຣດໂນດ {{ .name }}" +UpgradeCheck: "ກວດສອບອັບເດດຂອງໂນດ" +UpgradeCheckLocal: "ໂນດພາຍໃນເຄື່ອງບໍ່ຮອງຮັບການອັບເກຣດແບບກຸ່ມ, ຂ້າມ..." +UpgradeCheckLatest: "ໂນດເປັນເວີຊັນລ່າສຸດແລ້ວ, ຂ້າມ..." +NewSSHClient: "ກຳລັງເລີ່ມຕົ້ນການເຊື່ອມຕໍ່ SSH" +BackupBeforeUpgrade: "ສຳຮອງຂໍ້ມູນກ່ອນອັບເກຣດ" +UploadUpgradeFile: "ແຈກຢາຍໄຟລ໌ອັບເກຣດ" +RestartAfterUpgrade: "ເລີ່ມບໍລິການຫຼັງການອັບເກຣດ" +LoadAutoUpgradeNodesFailed: "ໂຫຼດໂນດທີ່ອັບເກຣດອັດຕະໂນມັດບໍ່ສຳເລັດ, ຂໍ້ຜິດພາດ: {{ .err }}" +AutoUpgradeNodes: "ໂນດທີ່ອັບເກຣດອັດຕະໂນມັດ: {{ .nodes }}" +UpdateAutoUpgradeNodesStatusFailed: "ອັບເດດສະຖານະໂນດທີ່ອັບເກຣດອັດຕະໂນມັດບໍ່ສຳເລັດ, ຂໍ້ຜິດພາດ: {{ .err }}" + +# node add +MasterData: "ຂໍ້ມູນໂນດຫຼັກ" +LoadSftpClient: "ໂຫຼດໄຄລເອນ SFTP" +PackageMasterData: "ສ້າງແພັກເກດສຳຮອງໂນດຫຼັກ" +UploadBackup: "ອັບໂຫຼດຂໍ້ມູນສຳຮອງ" +TaskAddNode: "ເພີ່ມໂນດ" +LoadNodeArch: "ຮັບຂໍ້ມູນສະຖາປັດຕະຍະກຳຂອງໂນດ" +LoadNodeArchDetail: "ກວດພົບສະຖາປັດຕະຍະກຳໂນດຫຼັກ: {{ .local }}, ສະຖາປັດຕະຍະກຳໂນດຍ່ອຍ: {{ .node }}" +LoadNodeUpgradeDetail: "ກຳລັງໃຊ້ໄດເຣັກທໍຣີການຕິດຕັ້ງເກົ່າຂອງເວີຊັນ v1: {{ .baseDir }}, ພອດຮັບຟັງຂອງບໍລິການ: {{ .port }}" +SyncAgentBaseInfo: "ຊິງຂໍ້ມູນພື້ນຖານຂອງໂນດ" +GenerateSSLInfo: "ສ້າງຂໍ້ມູນ SSL ຂອງໂນດ" +ConnInfoNotMatch: "ຂໍ້ມູນການເຊື່ອມຕໍ່ບໍ່ກົງກັນ" +MakeAgentPackage: "ສ້າງແພັກເກດຕິດຕັ້ງໂນດ" +SendAgent: "ແຈກຢາຍແພັກເກດຕິດຕັ້ງໂນດ" +StartService: "ເລີ່ມບໍລິການ" +NoBackupNode: "ໂນດສຳຮອງຫວ່າງເປົ່າ. ກະລຸນາເລືອກແລ້ວບັນທຶກກ່ອນ" + +# node file and image sync +LocalNodeIpFailed: "ຮັບ IP ຂອງໂນດຫຼັກບໍ່ສຳເລັດ. ກະລຸນາແກ້ໄຂໂນດຫຼັກ ແລະ ເພີ່ມທີ່ຢູ່ IP ພ້ອມຂໍ້ມູນການຢືນຢັນ SSH." +HandlePrivateKey: "ປະມວນຜົນກະແຈສ່ວນຕົວຂອງໂນດ" +HandlePublicKey: "ປະມວນຜົນກະແຈສາທາລະນະຂອງໂນດ" +ExchangeFile: "ເລີ່ມຊິງ {{ .sourcePath }} ຈາກໂນດ {{ .source }} ໄປຫາໂນດ {{ .dest }}:{{ .destPath }}" +NodeFile: "ໄຟລ໌ໂນດ" +ImageSyncTaskName: "ຊິງອິມເມຈ {{ .count }} ລາຍການ" +SSLSyncTaskName: "ຊິງໃບຮັບຮອງ {{ .count }} ລາຍການ" +AppSyncTaskName: "ຊິງແອັບ {{ .name }}" +SSLSyncToNode: "ສົ່ງໃບຮັບຮອງ [{{ .cert }}] ໄປຫາໂນດ [{{ .node }}]" +ImageSyncSave: "ບັນທຶກອິມເມຈ {{ .image }}" +ImageSyncSaveTags: "ບັນທຶກແທັກອິມເມຈ {{ .tags }}" +ImageSyncToNode: "ຊິງອິມເມຈ {{ .image }} ໄປຫາໂນດ {{ .node }}" +ImageSyncLoad: "ໂຫຼດອິມເມຈ {{ .image }} ໃນໂນດ {{ .node }}" +ImageSyncClean: "ລ້າງໄຟລ໌ຊົ່ວຄາວຂອງອິມເມຈ {{ .image }}" +ImageSyncNoTag: "ອິມເມຈ {{ .image }} ບໍ່ມີແທັກ ແລະ ຈະຖືກບັນທຶກດ້ວຍ ID ອິມເມຈ" +ImageSyncFrontendTagsIgnored: "ບໍ່ພົບແທັກຂອງອິມເມຈ {{ .image }} ໃນໂນດຕົ້ນທາງ. ແທັກຈາກສ່ວນໜ້າຖືກຂ້າມ." +ImageSyncHandlePrivateKey: "ປະມວນຜົນກະແຈສ່ວນຕົວຂອງໂນດສຳລັບຊິງອິມເມຈ" +ImageSyncHandlePublicKey: "ປະມວນຜົນກະແຈສາທາລະນະຂອງໂນດສຳລັບຊິງອິມເມຈ" +ImageSyncTransfer: "ເລີ່ມໂອນໄຟລ໌ຊົ່ວຄາວຂອງອິມເມຈ: {{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}" + +# command line +SudoHelper: "ໃຊ້ {{ .cmd }} ຫຼື ປ່ຽນໄປໃຊ້ຜູ້ໃຊ້ root" +UsernameNeed: "ຮຸ່ນວິສາຫະກິດຕ້ອງລະບຸ --username" +DBConnErr: "ຂໍ້ຜິດພາດ: ເລີ່ມຕົ້ນການເຊື່ອມຕໍ່ຖານຂໍ້ມູນບໍ່ສຳເລັດ, {{ .err }}" +SystemVersion: "ເວີຊັນ: " +SystemMode: "ໂໝດ: " + +# command line - app +AppVersion: "ເວີຊັນແອັບ" +AppCommands: "ຄຳສັ່ງທີ່ກ່ຽວກັບແອັບ" +AppInit: "ເລີ່ມຕົ້ນແອັບ" +AppKeyVal: "ຄີແອັບ (ຮອງຮັບສະເພາະພາສາອັງກິດ)" +AppCreateFileErr: "ສ້າງໄຟລ໌ {{ .name }} ບໍ່ສຳເລັດ {{ .err }}" +AppCreateDirErr: "ສ້າງໂຟນເດີ {{ .name }} ບໍ່ສຳເລັດ {{ .err }}" +AppMissKey: "ບໍ່ມີຄີແອັບ, ໃຊ້ -k ເພື່ອລະບຸ" +AppMissVersion: "ບໍ່ມີເວີຊັນແອັບ, ໃຊ້ -v ເພື່ອລະບຸ" +AppVersionExist: "ມີເວີຊັນນີ້ຢູ່ແລ້ວ!" +AppCreateSuccessful: "ສ້າງສຳເລັດແລ້ວ!" +AppWriteErr: "ຂຽນໄຟລ໌ {{ .name }} ບໍ່ສຳເລັດ {{ .err }}" + +# command line - listen IP +ListenIPCommands: "ປ່ຽນ IP ທີ່ຮັບຟັງ" +ListenIPv4: "ຮັບຟັງຜ່ານ IPv4" +ListenIPv6: "ຮັບຟັງຜ່ານ IPv6" +ListenChangeSuccessful: "ປ່ຽນສຳເລັດແລ້ວ! ຕອນນີ້ກຳລັງຮັບຟັງຢູ່ {{ .value }}" + +# command line - reset +ResetCommands: "ຕັ້ງຄ່າຂໍ້ມູນລະບົບຄືນໃໝ່" +ResetMFA: "ຍົກເລີກການຢືນຢັນສອງຂັ້ນຕອນຂອງ 1Panel" +ResetHttps: "ຍົກເລີກການເຂົ້າລະບົບ 1Panel ຜ່ານ HTTPS" +ResetEntrance: "ຍົກເລີກທາງເຂົ້າຄວາມປອດໄພຂອງ 1Panel" +ResetIPs: "ຍົກເລີກຂໍ້ຈຳກັດ IP ທີ່ອະນຸຍາດຂອງ 1Panel" +ResetDomain: "ຍົກເລີກການຜູກໂດເມນຂອງ 1Panel" +ResetPasskey: "ລ້າງ Passkey ຂອງ 1Panel" + +# command line - user +UserList: "ຮັບລາຍຊື່ຜູ້ໃຊ້ 1Panel" +UserTableName: "ຊື່" +UserTableMFAStatus: "ສະຖານະ MFA" +UserTableSuperAdmin: "ຜູ້ບໍລິຫານສູງສຸດ" +UserTableCreatedAt: "ສ້າງເມື່ອ" +UserEmptyList: "ບໍ່ພົບຜູ້ໃຊ້" +UserInfo: "ຮັບຂໍ້ມູນແຜງ" +UserInfoAddr: "ທີ່ຢູ່ແຜງ: " +UserInfoPassHelp: "ຄຳແນະນຳ: ເພື່ອປ່ຽນລະຫັດຜ່ານ ທ່ານສາມາດໃຊ້ຄຳສັ່ງ: " + +# command line - restore +RestoreCommands: "ຍ້ອນບໍລິການ ແລະ ຂໍ້ມູນ 1Panel ກັບຄືນ" +RestoreNoSuchFile: "ບໍ່ພົບໄຟລ໌ສຳລັບຍ້ອນກັບ" +RestoreStep1: "(1/5) ກຳລັງເລີ່ມຍ້ອນບໍລິການ ແລະ ຂໍ້ມູນ 1Panel ຈາກໄດເຣັກທໍຣີ {{ .name }}..." +RestoreStep2: "(2/5) ຍ້ອນໄບນາຣີ 1Panel ສຳເລັດແລ້ວ" +RestoreStep3: "(3/5) ຍ້ອນສະຄຣິບ 1Panel ສຳເລັດແລ້ວ" +RestoreStep4: "(4/5) ຍ້ອນບໍລິການ 1Panel ສຳເລັດແລ້ວ" +RestoreStep5: "(5/5) ຍ້ອນຂໍ້ມູນ 1Panel ສຳເລັດແລ້ວ" +RestoreSuccessful: "ການຍ້ອນກັບສຳເລັດແລ້ວ. ກັບໄປຫາເວີຊັນ {{ .version }}. ກຳລັງເລີ່ມບໍລິການຄືນໃໝ່..." + +# command line - update +UpdateCommands: "ອັບເດດຂໍ້ມູນແຜງ" +UpdateUser: "ອັບເດດຂໍ້ມູນຜູ້ໃຊ້" +UpdatePassword: "ອັບເດດລະຫັດຜ່ານຜູ້ໃຊ້" +UpdatePort: "ອັບເດດພອດແຜງ" +UpdateUserNull: "ຂໍ້ຜິດພາດ: ຊື່ຜູ້ໃຊ້ຫວ່າງເປົ່າ!" +UpdateUserBlank: "ຂໍ້ຜິດພາດ: ຊື່ຜູ້ໃຊ້ມີຊ່ອງຫວ່າງ!" +UpdateUserFormat: "ຂໍ້ຜິດພາດ: ຮູບແບບຊື່ຜູ້ໃຊ້ບໍ່ຖືກຕ້ອງ! ຮອງຮັບສະເພາະຕົວອັກສອນອັງກິດ, ຈີນ, ຕົວເລກ ແລະ _, ຄວາມຍາວ 3-30 ຕົວ" +UpdateUserErr: "ຂໍ້ຜິດພາດ: ອັບເດດຜູ້ໃຊ້ບໍ່ສຳເລັດ, {{ .err }}" +UpdateSuccessful: "ອັບເດດສຳເລັດແລ້ວ!" +UpdateUserResult: "ຜູ້ໃຊ້: {{ .name }}" +UpdatePasswordRead: "ຂໍ້ຜິດພາດ: ອ່ານຂໍ້ມູນລະຫັດຜ່ານຜູ້ໃຊ້ບໍ່ສຳເລັດ, {{ .err }}" +UpdatePasswordNull: "ຂໍ້ຜິດພາດ: ລະຫັດຜ່ານຜູ້ໃຊ້ຫວ່າງເປົ່າ!" +UpdateUPasswordBlank: "ຂໍ້ຜິດພາດ: ລະຫັດຜ່ານຜູ້ໃຊ້ມີຊ່ອງຫວ່າງ!" +UpdatePasswordFormat: "ຂໍ້ຜິດພາດ: ລະຫັດຜ່ານຜູ້ໃຊ້ຮອງຮັບສະເພາະຕົວອັກສອນ, ຕົວເລກ ແລະ ອັກຂະລະພິເສດ (!@#$%*_,.?), ຄວາມຍາວ 8-30 ຕົວ." +UpdatePasswordLen: "ຂໍ້ຜິດພາດ: ກະລຸນາປ້ອນລະຫັດຜ່ານທີ່ຍາວກວ່າ 6 ຕົວ" +UpdatePasswordRe: "ຢືນຢັນລະຫັດຜ່ານ:" +UpdatePasswordErr: "ຂໍ້ຜິດພາດ: ອັບເດດລະຫັດຜ່ານຜູ້ໃຊ້ບໍ່ສຳເລັດ, {{ .err }}" +UpdatePasswordSame: "ຂໍ້ຜິດພາດ: ລະຫັດຜ່ານສອງຄັ້ງບໍ່ກົງກັນ, ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" +UpdatePasswordResult: "ລະຫັດຜ່ານຜູ້ໃຊ້: {{ .name }}" +UpdatePortFormat: "ຂໍ້ຜິດພາດ: ໝາຍເລກພອດທີ່ປ້ອນຕ້ອງຢູ່ລະຫວ່າງ 1 ຫາ 65535!" +UpdatePortUsed: "ຂໍ້ຜິດພາດ: ໝາຍເລກພອດກຳລັງຖືກໃຊ້ງານ, ກະລຸນາກວດສອບແລ້ວລອງໃໝ່!" +UpdatePortErr: "ຂໍ້ຜິດພາດ: ອັບເດດພອດແຜງບໍ່ສຳເລັດ, {{ .err }}" +UpdatePortResult: "ພອດແຜງ: {{ .name }}" +UpdatePortFirewallAdd: "ເພີ່ມກົດພອດໄຟຣ໌ວໍບໍ່ສຳເລັດ, {{ .err }}, ກະລຸນາເພີ່ມພອດ {{ .name }} ເຂົ້າໃນກົດໄຟຣ໌ວໍດ້ວຍຕົນເອງ." +UpdatePortFirewallDel: "ຂໍ້ຜິດພາດ: ລຶບພອດໄຟຣ໌ວໍບໍ່ສຳເລັດ, {{ .err }}" +UpdatePortFirewallReload: "ໂຫຼດໄຟຣ໌ວໍຄືນໃໝ່ບໍ່ສຳເລັດ, {{ .err }}, ກະລຸນາໂຫຼດໄຟຣ໌ວໍຄືນໃໝ່ດ້ວຍຕົນເອງ." + +# mobile app +ErrVerifyToken: 'ການກວດສອບໂທເຄັນລົ້ມເຫຼວ. ກະລຸນາຕັ້ງຄ່າຄືນໃໝ່ແລ້ວສະແກນອີກຄັ້ງ.' +ErrInvalidToken: 'ໂທເຄັນບໍ່ຖືກຕ້ອງ. ກະລຸນາຕັ້ງຄ່າຄືນໃໝ່ແລ້ວສະແກນອີກຄັ້ງ.' +ErrExpiredToken: 'ໂທເຄັນໝົດອາຍຸແລ້ວ. ກະລຸນາຕັ້ງຄ່າຄືນໃໝ່ແລ້ວສະແກນອີກຄັ້ງ.' + +# command export +Name: "ຊື່" +Command: "ຄຳສັ່ງ" diff --git a/docs/README.ar.md b/docs/README.ar.md index d22b7578e..aa2c37f88 100644 --- a/docs/README.ar.md +++ b/docs/README.ar.md @@ -29,6 +29,7 @@ Русский Bahasa Melayu Persian + ພາສາລາວ

------------------------------ diff --git a/docs/README.de.md b/docs/README.de.md index fc6519e23..fb2042d42 100644 --- a/docs/README.de.md +++ b/docs/README.de.md @@ -29,6 +29,7 @@ Русский Bahasa Melayu Persian + ພາສາລາວ

------------------------------ diff --git a/docs/README.es-es.md b/docs/README.es-es.md index 97f2a68c5..f3caca788 100644 --- a/docs/README.es-es.md +++ b/docs/README.es-es.md @@ -29,6 +29,7 @@ Русский Bahasa Melayu Persian + ພາສາລາວ

------------------------------ diff --git a/docs/README.fa.md b/docs/README.fa.md index 1e51d4217..a6889f208 100644 --- a/docs/README.fa.md +++ b/docs/README.fa.md @@ -34,6 +34,7 @@ Русский Bahasa Melayu Persian + ພາສາລາວ

--- diff --git a/docs/README.fr.md b/docs/README.fr.md index b24ea9850..ce306bc8e 100644 --- a/docs/README.fr.md +++ b/docs/README.fr.md @@ -29,6 +29,7 @@ Русский Bahasa Melayu Persian + ພາສາລາວ

------------------------------ diff --git a/docs/README.id.md b/docs/README.id.md index f0099e7c3..e3daadc8d 100644 --- a/docs/README.id.md +++ b/docs/README.id.md @@ -29,6 +29,7 @@ Русский Bahasa Melayu Persian + ພາສາລາວ

------------------------------ diff --git a/docs/README.ja.md b/docs/README.ja.md index ce173fe8c..022ae1221 100644 --- a/docs/README.ja.md +++ b/docs/README.ja.md @@ -29,6 +29,7 @@ Русский Bahasa Melayu Persian + ພາສາລາວ

------------------------------ diff --git a/docs/README.ko.md b/docs/README.ko.md index 522fe11b0..ba111d047 100644 --- a/docs/README.ko.md +++ b/docs/README.ko.md @@ -29,6 +29,7 @@ Русский Bahasa Melayu Persian + ພາສາລາວ

------------------------------ diff --git a/docs/README.lo.md b/docs/README.lo.md new file mode 100644 index 000000000..65e6fff61 --- /dev/null +++ b/docs/README.lo.md @@ -0,0 +1,117 @@ +

1Panel

+ +

ແຜງຄວບຄຸມ VPS ແບບໂອເພນຊອດ ພ້ອມການຮອງຮັບເອເຈນ AI ໃນຕົວ

+ +

+ ໄດ້ຮັບຄວາມໄວ້ວາງໃຈຈາກຜູ້ໃຊ້ໂຮສເອງຫຼາຍກວ່າ 2,000,000 ຄົນທົ່ວໂລກ +

+ +

+ 1Panel-dev%2F1Panel | Trendshift +

+ +

+ ໃບອະນຸຍາດ: GPL v3 + Codacy + Discord + ລຸ້ນທີ່ເຜີຍແຜ່ໃນ GitHub + ດາວ +

+ +

+ English + 中文(简体) + 日本語 + Português (Brasil) + العربية + Deutsch + Español + français + 한국어 + Bahasa Indonesia + 中文(繁體) + Türkçe + Русский + Bahasa Melayu + Persian + ພາສາລາວ +

+ +--- + +## 1Panel ແມ່ນຫຍັງ? + +1Panel ແມ່ນແຜງຄວບຄຸມ VPS ທີ່ທັນສະໄໝ ແລະ ເປັນໂອເພນຊອດ — ພ້ອມທັງເປັນແຜງດຽວທີ່ມີ **ການຮອງຮັບເອເຈນ AI ໃນຕົວ**. ທ່ານສາມາດໃຊ້ງານໂມເດວ Ollama, ນຳໃຊ້ເອເຈນສ່ວນຕົວ OpenClaw ແລະ ຈັດການລະບົບເຊີບເວີທັງໝົດຜ່ານໜ້າເວັບທີ່ສະອາດຕາ. ບໍ່ຕ້ອງຈື່ຄຳສັ່ງ CLI. + +👉 ເບິ່ງ [ວິດີໂອແນະນຳ 2 ນາທີ](https://www.youtube.com/watch?v=Jl_wqp-XA08) + +## ເປັນຫຍັງຕ້ອງເລືອກ 1Panel? + +| | 1Panel | cPanel / Plesk | aaPanel | Webmin | +|--|--------|----------------|---------|--------| +| ຟຣີ ແລະ ເປັນໂອເພນຊອດ | ✅ | ❌ | ບາງສ່ວນ | ✅ | +| ຮັນໄທມ໌ເອເຈນ AI ໃນຕົວ | ✅ | ❌ | ❌ | ❌ | +| ຕະຫຼາດແອັບແບບຄລິກດຽວ | ✅ 165+ ແອັບ | ❌ | ✅ | ❌ | +| UI ທັນສະໄໝ (ຫຼັງປີ 2020) | ✅ | ❌ | ບາງສ່ວນ | ❌ | +| ການຈັດການ Docker / ຄອນເທນເນີ | ✅ | ❌ | ❌ | ❌ | +| ພັດທະນາຢ່າງຕໍ່ເນື່ອງ | ✅ | ✅ | ✅ | ຊ້າ | + +## ຄຸນສົມບັດຫຼັກ + +- **ຮັນໄທມ໌ເອເຈນ AI**: ນຳໃຊ້ໂມເດວ LLM ຂອງ Ollama, ເປີດໃຊ້ເອເຈນສ່ວນຕົວ OpenClaw ແລະ ຕິດຕາມການໃຊ້ GPU — ທັງໝົດເຮັດໄດ້ຈາກແດຊບອດ. ບໍ່ຕ້ອງຈັດການສະແຕັກ AI ແຍກຕ່າງຫາກ. +- **ນຳໃຊ້ເວັບໄຊດ້ວຍຄລິກດຽວ**: ເປີດໃຊ້ເວັບໄຊທີ່ພ້ອມສຳລັບການຜະລິດ ພ້ອມການຜູກໂດເມນອັດຕະໂນມັດ, ການອອກໃບຮັບຮອງ SSL ແລະ ການຕັ້ງຄ່າ Nginx — ບໍ່ຕ້ອງຕັ້ງຄ່າດ້ວຍຕົນເອງ. +- **ຕະຫຼາດແອັບ**: ມີແອັບໂອເພນຊອດທີ່ໜ້າເຊື່ອຖືຫຼາຍກວ່າ 165 ແອັບ (Nextcloud, Bitwarden, Umami, NocoBase ແລະ ອື່ນໆ) ທີ່ສາມາດຕິດຕັ້ງ ແລະ ອັບເດດໄດ້ດ້ວຍຄລິກດຽວ. +- **ການຈັດການ Docker ແລະ ຄອນເທນເນີ**: ສ້າງ, ເລີ່ມ, ຢຸດ ແລະ ກວດສອບຄອນເທນເນີ, ອິມເມຈ, ເຄືອຂ່າຍ ແລະ ໂວລຸມ ຜ່ານ UI ແບບກຣາຟິກ — ບໍ່ຕ້ອງສະຫຼັບໄປມາໃນ CLI. +- **ຄວາມປອດໄພພ້ອມໃຊ້ງານ**: ກົດໄຟຣ໌ວໍ, fail2ban, ການແຍກຄອນເທນເນີ, WAF ແລະ ບັນທຶກການກວດສອບ — ທຸກຢ່າງຖືກຕັ້ງຄ່າ ແລະ ເຮັດວຽກຕັ້ງແຕ່ມື້ທຳອິດ. +- **ສຳຮອງ ແລະ ກູ້ຄືນ**: ກຳນົດເວລາສຳຮອງອັດຕະໂນມັດໄປຫາ AWS S3, Cloudflare R2 ຫຼື ບ່ອນຈັດເກັບພາຍໃນເຄື່ອງ. ກູ້ຄືນສະແນັບຊັອດໃດກໍໄດ້ດ້ວຍຄລິກດຽວ. + +## ເລີ່ມຕົ້ນຢ່າງໄວ + +> **ຄວາມຕ້ອງການ:** Linux VPS (Debian / Ubuntu / CentOS / Rocky), RAM 1 GB ແລະ ການເຊື່ອມຕໍ່ອິນເຕີເນັດ. +> ໃຊ້ເວລາປະມານ 60 ວິນາທີ. + +```bash +bash -c "$(curl -sSL https://resource.1panel.pro/v2/quick_start.sh)" +``` + +ຫຼັງຈາກຕິດຕັ້ງແລ້ວ, ເປີດ `http://:/` ໃນເບຣົາເຊີ. +ໃຊ້ຄຳສັ່ງ `1pctl user-info` ຜ່ານ SSH ຫາກຕ້ອງການເບິ່ງຂໍ້ມູນສຳລັບເຂົ້າລະບົບ. + +## ພາບໜ້າຈໍ + +![UI ຂອງ 1Panel](https://resource.1panel.pro/img/overview_en_v2.png) + +## ຮຸ່ນ Pro + +1Panel OSS ໃຊ້ງານໄດ້ຟຣີຕະຫຼອດໄປ. ຮຸ່ນ Pro ເພີ່ມຄຸນສົມບັດທີ່ອອກແບບສຳລັບທີມ ແລະ ວຽກລະດັບການຜະລິດ: + +| ຄຸນສົມບັດ | OSS | Pro | +|---------|:---:|:---:| +| ຕິດຕັ້ງແອັບດ້ວຍຄລິກດຽວ | ✅ | ✅ | +| ເອເຈນ AI (OpenClaw) | 1 ເອເຈນ | ບໍ່ຈຳກັດ | +| WAF ແລະ ຄວາມປອດໄພຂັ້ນສູງ | ພື້ນຖານ | ✅ | +| ປ້ອງກັນການດັດແປງເວັບໄຊ | ❌ | ✅ | +| ຕິດຕາມເວລາພ້ອມໃຊ້ງານຂອງເວັບໄຊ | ❌ | ✅ | +| ການຈັດການຫຼາຍໂນດ | ❌ | ✅ | +| ໂລໂກ້ ແລະ ຮູບແບບການສະແດງຜົນກຳນົດເອງ | ❌ | ✅ | +| ການຊ່ວຍເຫຼືອລຳດັບຕົ້ນ | ❌ | ✅ | + +**ເລີ່ມຕົ້ນທີ່ $80/ປີ.** [ປຽບທຽບແຜນ ແລະ ເລີ່ມທົດລອງຟຣີ 30 ມື້ →](https://1panel.pro/pricing) + +## ປະຫວັດດາວ + +[![ກຣາຟປະຫວັດດາວ](https://api.star-history.com/svg?repos=1Panel-dev/1Panel&type=Date)](https://star-history.com/#1Panel-dev/1Panel&Date) + +## ຊຸມຊົນ ແລະ ການຊ່ວຍເຫຼືອ + +- **Discord** — [ເຂົ້າຮ່ວມຊຸມຊົນ](https://discord.gg/bUpUqWqdRr) ເພື່ອຂໍຄວາມຊ່ວຍເຫຼືອ, ສະເໜີຄຸນສົມບັດ ແລະ ແບ່ງປັນຜົນງານ +- **ເອກະສານ** — [1panel.pro/docs](https://1panel.pro/docs) +- **ບັນຫາ** — [GitHub Issues](https://github.com/1Panel-dev/1Panel/issues) ສຳລັບລາຍງານບັກ + +## ຄວາມປອດໄພ + +ພົບຊ່ອງໂຫວ່ບໍ? ກະລຸນາອ່ານ [SECURITY.md](/SECURITY.md) ກ່ອນເຜີຍແຜ່ຂໍ້ມູນ. + +## ໃບອະນຸຍາດ + +ໂຄງການນີ້ໃຊ້ [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.html). diff --git a/docs/README.ms.md b/docs/README.ms.md index fe055ee2b..df52ef6ae 100644 --- a/docs/README.ms.md +++ b/docs/README.ms.md @@ -29,6 +29,7 @@ Русский Bahasa Melayu Persian + ພາສາລາວ

------------------------------ diff --git a/docs/README.pt-br.md b/docs/README.pt-br.md index 54e9d5699..c43051ceb 100644 --- a/docs/README.pt-br.md +++ b/docs/README.pt-br.md @@ -29,6 +29,7 @@ Русский Bahasa Melayu Persian + ພາສາລາວ

------------------------------ diff --git a/docs/README.ru.md b/docs/README.ru.md index a3e7f4b7b..2aec523c6 100644 --- a/docs/README.ru.md +++ b/docs/README.ru.md @@ -29,6 +29,7 @@ Русский Bahasa Melayu Persian + ພາສາລາວ

------------------------------ diff --git a/docs/README.tr.md b/docs/README.tr.md index 88d59c04a..f6e187b27 100644 --- a/docs/README.tr.md +++ b/docs/README.tr.md @@ -29,6 +29,7 @@ Русский Bahasa Melayu Persian + ພາສາລາວ

------------------------------ diff --git a/docs/README.zh-Hans.md b/docs/README.zh-Hans.md index 60bbe2743..c2dabd1f2 100644 --- a/docs/README.zh-Hans.md +++ b/docs/README.zh-Hans.md @@ -29,6 +29,7 @@ Русский Bahasa Melayu Persian + ພາສາລາວ

[![Watch the video](https://resource.fit2cloud.com/1panel/img/overview_video.png)](https://www.bilibili.com/video/BV1Mt421n7LZ/) diff --git a/docs/README.zh-Hant.md b/docs/README.zh-Hant.md index 1d8a53cbb..15b9431c0 100644 --- a/docs/README.zh-Hant.md +++ b/docs/README.zh-Hant.md @@ -29,6 +29,7 @@ Русский Bahasa Melayu Persian + ພາສາລາວ

[![Watch the video](https://resource.fit2cloud.com/1panel/img/overview_video.png)](https://www.bilibili.com/video/BV1Mt421n7LZ/) diff --git a/docs/TRANSLATION.md b/docs/TRANSLATION.md index 55093c7f8..b337571a9 100644 --- a/docs/TRANSLATION.md +++ b/docs/TRANSLATION.md @@ -1,78 +1,120 @@ # Translation Contribution Guide -Thank you for your interest in helping translate 1Panel into a new language! This guide walks through every file you need to create or modify to add full language support across the frontend and backend. +Thank you for helping translate 1Panel! A complete locale touches the frontend, +the Core service, the Agent service, application-store metadata, and the project +README files. This guide lists the repository changes and validation required +before opening a pull request. -> **Reference PR:** [WIP: Dev v2 spanish (#10352)](https://github.com/1Panel-dev/1Panel/pull/10352) — a merged, real-world example of adding a brand-new locale (Spanish `es-ES`). +> **Reference pull requests** +> +> - [WIP: Dev v2 spanish (#10352)](https://github.com/1Panel-dev/1Panel/pull/10352) +> is a full-locale example for Spanish (`es-ES`). +> - [docs: add Persian README (#13132)](https://github.com/1Panel-dev/1Panel/pull/13132) +> is a localized-README example. --- -## Overview +## Scope -1Panel's i18n system spans two layers: +1Panel has several independent translation surfaces: -| Layer | Technology | Translation format | +| Surface | Technology | Repository format | |---|---|---| -| **Frontend** (Vue 3) | `vue-i18n` + Element Plus | TypeScript (`.ts`) | -| **Backend** (Go) | `go-i18n` / `nicksnyder/go-i18n` | YAML (`.yaml`) | +| Frontend | Vue 3, `vue-i18n`, Element Plus | TypeScript (`.ts`) | +| Core service | Go i18n | YAML (`.yaml`) | +| Agent service | Go i18n | YAML (`.yaml`) | +| Application store | API models and frontend types | Go and TypeScript | +| Project introduction | GitHub README files | Markdown (`.md`) | -Adding a new language requires changes in **both** layers, as well as registering the locale in a few selector components. +Adding only a frontend module does not provide complete locale support. Follow +all applicable steps below and state explicitly in the pull request if a surface +is intentionally out of scope. ---- +## Step 0 – Define locale identifiers -## Step 1 – Frontend translation file +Choose the canonical runtime locale first. Use a +[BCP 47](https://www.ietf.org/rfc/bcp/bcp47.txt) language tag and preserve its +casing wherever the runtime locale is used. File names and third-party locale +packs do not always use the same casing. -Copy the reference English file and translate all values. +| Language | Runtime locale | Frontend module | Element Plus pack | Backend YAML | App-store key | README | +|---|---|---|---|---|---|---| +| Simplified Chinese | `zh` | `zh.ts` | `zh-cn` | `zh.yaml` | `zh` | `README.zh-Hans.md` | +| Traditional Chinese | `zh-Hant` | `zh-Hant.ts` | `zh-tw` | `zh-Hant.yaml` | `zh-hant` | `README.zh-Hant.md` | +| English | `en` | `en.ts` | `en` | `en.yaml` | `en` | `README.md` | +| Brazilian Portuguese | `pt-BR` | `pt-br.ts` | `pt-br` | `pt-BR.yaml` | `pt-br` | `README.pt-br.md` | +| Spanish (Spain) | `es-ES` | `es-es.ts` | `es` | `es-ES.yaml` | `es-es` | `README.es-es.md` | +| Lao | `lo` | `lo.ts` | `lo` | `lo.yaml` | `lo` | `README.lo.md` | -``` -frontend/src/lang/modules/en.ts → frontend/src/lang/modules/.ts +Use lowercase for simple runtime codes (`ja`, `ko`, `lo`) and standard BCP 47 +casing for variants (`pt-BR`, `es-ES`, `zh-Hant`). Do not infer a file name from +the runtime locale: add an explicit mapping when the casing or code differs. + +Before editing, search for hard-coded locale collections so a newly introduced +selector, whitelist, or compatibility map is not missed: + +```bash +rg "zh-Hant|pt-BR|es-ES" frontend core agent ``` -Replace every English string with its translation. Keep all keys, nested objects, and the `getFuLocaleMessage` call at the bottom unchanged: +## Step 1 – Add the frontend translation module + +Copy the English module and translate its values: + +```text +frontend/src/lang/modules/en.ts -> frontend/src/lang/modules/.ts +``` + +Keep the following unchanged unless the English source changed structurally: + +- object keys, nesting, and TypeScript syntax; +- interpolation placeholders such as `{0}`, `${name}`, and `{{ .detail }}`; +- HTML tags, Markdown, URLs, product names, commands, and configuration keys; +- the `getFuLocaleMessage` merge at the end of the file. + +Pass the canonical runtime locale to `getFuLocaleMessage`, even when the module +file name uses different casing: ```ts -// frontend/src/lang/modules/.ts import { getFuLocaleMessage } from '@/lang/fu'; const message = { commons: { - // ... translated strings + // Translated values. }, - // ... }; export default { - ...getFuLocaleMessage(''), + ...getFuLocaleMessage(''), ...message, }; ``` -> **Tip:** The file is ~4 400 lines. Using a translation tool for a first pass is fine, but please review the output for accuracy and context. +The English module evolves continuously. Copy it from the same branch as your +change instead of relying on a fixed key count or line count. Machine +translation can be used for a first pass, but every string must be reviewed in +its UI context. ---- +## Step 2 – Register the frontend loader and FU messages -## Step 2 – Register the locale loader - -Open `frontend/src/lang/index.ts` and add your locale to `LOCALE_LOADERS`: +Add the canonical runtime locale and its module file to `LOCALE_LOADERS` in +`frontend/src/lang/index.ts`: ```ts -// frontend/src/lang/index.ts const LOCALE_LOADERS: Record = { - // existing entries … - '': () => import('./modules/'), + // Existing entries. + '': () => import('./modules/'), }; ``` ---- - -## Step 3 – FU component translations - -`frontend/src/lang/fu.ts` contains translations for custom FU table/steps components. Add a new entry for your locale: +Then add the locale to `fuLocales` in `frontend/src/lang/fu.ts`. These messages +belong to the shared FU table and steps components and are not supplied by the +main module: ```ts -// frontend/src/lang/fu.ts const fuLocales: Record = { - // existing entries … - '': { + // Existing entries. + '': { fu: { table: { more: '...', @@ -89,123 +131,326 @@ const fuLocales: Record = { }; ``` ---- +## Step 3 – Register the Element Plus locale -## Step 4 – Element Plus component locale - -Element Plus ships its own locale strings (used in date pickers, pagination, etc.). Import the matching locale pack and wire it into `frontend/src/App.vue`: +Element Plus provides its own translations for date pickers, pagination, +popovers, and other components. Import the matching pack in +`frontend/src/App.vue`: ```ts -// frontend/src/App.vue — import section -import from 'element-plus/es/locale/lang/'; +import localePack from 'element-plus/es/locale/lang/'; ``` -Then add a branch in the `i18nLocale` computed property: +Map the canonical runtime locale in the `i18nLocale` computed property: ```ts const i18nLocale = computed(() => { - // existing branches … - if (globalStore.language === '') return ; - return zhCn; // fallback unchanged + // Existing mappings. + if (globalStore.language === '') return localePack; + return zhCn; }); ``` -You can find all available Element Plus locale codes in `node_modules/element-plus/es/locale/lang/`. +Confirm the pack exists in +`frontend/node_modules/element-plus/es/locale/lang/`. If Element Plus does not +provide the language, document the chosen fallback in the pull request rather +than importing a nonexistent module. ---- +## Step 4 – Expose the locale in every frontend entry point -## Step 5 – Login page language selector +### Login page -Open `frontend/src/views/login/components/login-form.vue` and add your locale label to `languageLabelMap`: +`frontend/src/views/login/components/login-form.vue` currently renders two +language menus for different login layouts. Add the new locale to **both menu +blocks**, then add its native display name to `languageLabelMap`: ```ts const languageLabelMap: Record = { - // existing entries … - '': '', + // Existing entries. + '': '', }; ``` ---- +Verify both login layouts manually. Updating only `languageLabelMap` changes the +selected label but does not add a selectable menu item. -## Step 6 – Panel settings language selector +### Panel settings -Open `frontend/src/views/setting/panel/index.vue` and add an option to `languageOptions`: +Add the locale to `languageOptions` in +`frontend/src/views/setting/panel/index.vue`: ```ts const languageOptions = ref([ - // existing entries … - { value: '', label: '' }, + // Existing entries. + { value: '', label: '' }, ]); ``` ---- +### Public share page -## Step 7 – Backend translation files (core & agent) +Add the locale to `supportedLocales` in `frontend/src/views/share/index.vue`. +This list controls browser-language recognition and the `Accept-Language` +header used by public share requests. -The backend has **two** independent Go modules, each with its own YAML translation file. Copy the English reference and translate: - -``` -core/i18n/lang/en.yaml → core/i18n/lang/.yaml (~264 lines) -agent/i18n/lang/en.yaml → agent/i18n/lang/.yaml (~592 lines) +```ts +const supportedLocales = [ + // Existing entries. + '', +]; ``` -YAML format example: +### Locale-sensitive fallbacks + +Review locale comparisons that select language-specific API fields. For +example, operation records currently provide Chinese and English detail fields +in `frontend/src/views/log/operation/index.vue`. Chinese runtime locales should +use `detailZH`; every other locale should retain a visible `detailEN` fallback. +Prefer one shared fallback branch instead of adding every non-Chinese locale to +another hard-coded list. + +## Step 5 – Allow the locale in the login API + +The backend validates the language sent by the login request. Add the canonical +runtime locale to the `Language` field's `oneof` validation tag in +`core/app/dto/auth.go`: + +```go +Language string `json:"language" validate:"oneof=zh en ... "` +``` + +Without this change, the new language can appear on the login page but the +login request will be rejected as an invalid parameter. + +Run `gofmt` on the Go file after editing it. + +## Step 6 – Add and register Core translations + +Copy the current English catalog and translate only its values: + +```text +core/i18n/lang/en.yaml -> core/i18n/lang/.yaml +``` + +Preserve every YAML key and placeholder: ```yaml -ErrInvalidParams: "Invalid request parameters: {{ .detail }}" -ErrRecordExist: "Record already exists" -# … +ErrInvalidParams: "Translated text: {{ .detail }}" +ErrRecordExist: "Translated text" ``` ---- +Register the catalog in `core/i18n/i18n.go`: -## Step 8 – Register backend locale in Go - -Add your locale key and file path in both i18n registries: - -**`core/i18n/i18n.go`** ```go var langFiles = map[string]string{ - // existing entries … - "": "lang/.yaml", + // Existing entries. + "": "lang/.yaml", } ``` -**`agent/i18n/i18n.go`** +## Step 7 – Add and register Agent translations + +Core and Agent are independent Go modules and have independent catalogs. Copy +and translate the Agent catalog separately: + +```text +agent/i18n/lang/en.yaml -> agent/i18n/lang/.yaml +``` + +Register it in `agent/i18n/i18n.go`: + ```go var langFiles = map[string]string{ - // existing entries … - "": "lang/.yaml", + // Existing entries. + "": "lang/.yaml", } ``` ---- +Do not copy the Core YAML file into Agent: their key sets are different. -## Checklist +## Step 8 – Extend application-store locale models -Before opening a PR, verify the following: +Application-store names and descriptions use their own locale fields. Add the +new field to both repository-side schemas. -- [ ] `frontend/src/lang/modules/.ts` created and all strings translated -- [ ] Locale registered in `frontend/src/lang/index.ts` (`LOCALE_LOADERS`) -- [ ] Locale entry added to `frontend/src/lang/fu.ts` -- [ ] Element Plus locale imported and mapped in `frontend/src/App.vue` -- [ ] Locale label added to `languageLabelMap` in `frontend/src/views/login/components/login-form.vue` -- [ ] Locale option added to `languageOptions` in `frontend/src/views/setting/panel/index.vue` -- [ ] `core/i18n/lang/.yaml` created -- [ ] `agent/i18n/lang/.yaml` created -- [ ] Locale registered in `core/i18n/i18n.go` (`langFiles`) -- [ ] Locale registered in `agent/i18n/i18n.go` (`langFiles`) -- [ ] Manually verified: new locale appears in the login language dropdown -- [ ] Manually verified: new locale appears in **Settings → Panel → Language** -- [ ] Manually verified: UI renders correctly after switching to the new locale +In `agent/app/dto/app.go`, extend `Locale`: ---- +```go +type Locale struct { + // Existing fields. + NewLanguage string `json:""` +} +``` -## Locale code conventions +In `frontend/src/api/interface/app.ts`, extend `Locale` with the same JSON key: -Use [BCP 47](https://www.ietf.org/rfc/bcp/bcp47.txt) locale codes. Examples used in this project: +```ts +interface Locale { + // Existing fields. + '': string; +} +``` -| Language | Locale code | +Add the app-store key to the `description` example in +`core/cmd/server/app/app_config.yml` as well. This embedded template is written +when the server command scaffolds a new local application configuration. + +Review `frontend/src/utils/app-store.ts` as well. Simple codes that lowercase to +the same value normally need no special handling; regional or script variants +may need an explicit runtime-locale-to-app-store-key mapping. + +These schema changes make the repository capable of reading the locale. The +translated application names and descriptions are maintained in the external +application-store data source and must be coordinated separately. Until that +data exists, the application store falls back to English. + +## Step 9 – Add a localized README + +Copy the root README to the documentation directory: + +```text +README.md -> docs/README..md +``` + +Translate prose while preserving Markdown structure, HTML, images, links, +commands, badges, and code samples. Check every relative link from its new +location under `docs/`; a link that works from the repository root may need a +different relative path in the localized file. + +Then keep the language navigation synchronized: + +1. Add the new README link to the language badge row in `README.md`. +2. Add the same link to every existing `docs/README.*.md` language badge row. +3. Add the locale to the table in this guide's + [Locale code reference](#locale-code-reference). + +Use the native language name for the badge label. The README locale suffix may +follow an existing documentation convention (`zh-Hans`, `pt-br`, `es-es`) and +does not have to match the runtime locale casing. + +## Step 10 – Format code and regenerate API documentation + +Format every changed Go source file: + +```bash +gofmt -w core/app/dto/auth.go core/i18n/i18n.go +gofmt -w agent/app/dto/app.go agent/i18n/i18n.go +``` + +The login-language enum and application-store locale model are represented in +generated Swagger files. Install the repository-compatible `swag` command, then +run the generator test from the Core module: + +```bash +cd core +go test ./cmd/server/docs -run TestGenerateSwaggerDoc +``` + +This updates generated files under `core/cmd/server/docs/`. Do not edit the +generated Swagger output by hand. If the generator is unavailable, call that +out explicitly in the pull request instead of committing stale manual changes. + +## Step 11 – Validate the locale + +### Automated checks + +Run checks from the repository root unless a command changes directory: + +```bash +# Frontend type checking. +cd frontend +npm run type-check + +# Lint only the frontend files changed by the locale contribution. +./node_modules/.bin/eslint \ + src/lang/modules/.ts \ + src/lang/index.ts \ + src/lang/fu.ts \ + src/App.vue \ + src/views/login/components/login-form.vue \ + src/views/setting/panel/index.vue \ + src/views/share/index.vue \ + src/views/log/operation/index.vue \ + src/api/interface/app.ts \ + src/utils/app-store.ts + +# Compile and test the directly affected Go packages. +cd ../core +go test ./i18n ./app/dto + +cd ../agent +go test ./i18n ./app/dto + +# Check whitespace errors in all changed files. +cd .. +git diff --check +``` + +Also compare each translated catalog with its English source: + +- the frontend module has the same translation keys and nesting; +- each Core and Agent YAML file has exactly the same keys as its corresponding + English file; +- placeholders, formatting tokens, HTML tags, URLs, and commands are preserved; +- YAML files parse successfully, with no duplicate keys; +- all README links and badges resolve to the intended files. + +### Manual checks + +- [ ] Both login layouts show the native language name and can select it. +- [ ] Login succeeds with the locale in the request; validation does not reject it. +- [ ] **Settings -> Panel -> Language** can switch to the locale and retains it after reload. +- [ ] Element Plus date, pagination, select, and confirmation components use the expected language. +- [ ] A representative Core API error is translated. +- [ ] A representative Agent task/error message is translated. +- [ ] A public share page recognizes the browser locale and sends the expected `Accept-Language` value. +- [ ] Operation-log details remain visible through the correct Chinese or English fallback. +- [ ] Application-store metadata uses the locale when available and falls back to English when absent. +- [ ] The localized README renders correctly and every README language badge links to it. +- [ ] Layout, punctuation, truncation, and text direction are correct at common screen sizes. + +For right-to-left languages, verify the login page, navigation, forms, tables, +dialogs, and mixed-direction values such as IP addresses. RTL layout support may +require a separate frontend change beyond translating strings. + +## External translation resources + +Some runtime assets are not maintained in this repository: + +- application-store names and descriptions come from the external + application-store data source; +- the language shell resources downloaded as `language/lang.tar.gz` are + published through the 1Panel resource service. + +Repository locale support does not automatically update either resource. If the +new language needs them, coordinate publication with the relevant maintainer and +record the status in the pull request. Do not add generated or downloaded +archives to this repository unless a maintainer requests it. + +## Complete pull-request checklist + +- [ ] Canonical runtime, module, Element Plus, app-store, and README codes are documented. +- [ ] `frontend/src/lang/modules/.ts` is complete and reviewed. +- [ ] `frontend/src/lang/index.ts` contains the locale loader. +- [ ] `frontend/src/lang/fu.ts` contains the FU messages. +- [ ] `frontend/src/App.vue` maps an existing Element Plus locale pack or documents a fallback. +- [ ] Both language menus and `languageLabelMap` are updated in `frontend/src/views/login/components/login-form.vue`. +- [ ] `languageOptions` is updated in `frontend/src/views/setting/panel/index.vue`. +- [ ] `supportedLocales` is updated in `frontend/src/views/share/index.vue`. +- [ ] Locale-sensitive API-field fallbacks, including operation-log details, remain visible. +- [ ] The login validator is updated in `core/app/dto/auth.go`. +- [ ] `core/i18n/lang/.yaml` exists and is registered in `core/i18n/i18n.go`. +- [ ] `agent/i18n/lang/.yaml` exists and is registered in `agent/i18n/i18n.go`. +- [ ] Application-store locale fields are updated in `agent/app/dto/app.go`, `frontend/src/api/interface/app.ts`, and `core/cmd/server/app/app_config.yml`. +- [ ] Regional or script variants are normalized in `frontend/src/utils/app-store.ts` when needed. +- [ ] `docs/README..md` exists and every README language badge is synchronized. +- [ ] Changed Go files are formatted and Swagger output is regenerated. +- [ ] Frontend, Core, Agent, catalog-parity, placeholder, and Markdown checks pass. +- [ ] All applicable manual checks pass. +- [ ] External application-store and language-resource work is completed or clearly tracked. + +## Locale code reference + +| Language | Runtime locale | |---|---| | Simplified Chinese | `zh` | | Traditional Chinese | `zh-Hant` | @@ -218,19 +463,12 @@ Use [BCP 47](https://www.ietf.org/rfc/bcp/bcp47.txt) locale codes. Examples used | Brazilian Portuguese | `pt-BR` | | Spanish (Spain) | `es-ES` | | Persian | `fa` | +| Lao | `lo` | -Use lowercase for simple codes (`ja`, `ko`) and the standard BCP 47 casing for regional variants (`pt-BR`, `es-ES`, `zh-Hant`). +## Pull-request title convention -**Frontend TypeScript file names** use all-lowercase with hyphens preserved exactly as they appear in the existing `frontend/src/lang/modules/` directory (e.g. `pt-br.ts`, `es-es.ts`, `zh-hant.ts`). - -**Backend YAML file names** mirror the locale code exactly, preserving the original casing (e.g. `pt-BR.yaml`, `es-ES.yaml`, `zh-Hant.yaml`). - ---- - -## PR title convention - -``` -feat(i18n): add () locale support +```text +feat(i18n): add () locale support ``` Example: `feat(i18n): add German (de-DE) locale support` diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 032ff26ff..464bfd371 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -18,6 +18,7 @@ import ko from 'element-plus/es/locale/lang/ko'; import tr from 'element-plus/es/locale/lang/tr'; import esES from 'element-plus/es/locale/lang/es'; import fa from 'element-plus/es/locale/lang/fa'; +import lo from 'element-plus/es/locale/lang/lo'; import { useTheme } from '@/global/use-theme'; useTheme(); @@ -38,6 +39,7 @@ const i18nLocale = computed(() => { if (language.value === 'tr') return tr; if (language.value === 'es-ES') return esES; if (language.value === 'fa') return fa; + if (language.value === 'lo') return lo; return zhCn; }); diff --git a/frontend/src/api/interface/app.ts b/frontend/src/api/interface/app.ts index 3944d5e0a..f4f890c51 100644 --- a/frontend/src/api/interface/app.ts +++ b/frontend/src/api/interface/app.ts @@ -31,6 +31,8 @@ export namespace App { ko: string; tr: string; 'es-es': string; + fa: string; + lo: string; } export interface AppDTO extends App { diff --git a/frontend/src/components/vscode-open/index.vue b/frontend/src/components/vscode-open/index.vue index 2d694968b..6063fb4cb 100644 --- a/frontend/src/components/vscode-open/index.vue +++ b/frontend/src/components/vscode-open/index.vue @@ -95,8 +95,7 @@
{{ scriptText }}
+ >{{ scriptText }}
diff --git a/frontend/src/lang/fu.ts b/frontend/src/lang/fu.ts index 96cd78865..424dd0e0e 100644 --- a/frontend/src/lang/fu.ts +++ b/frontend/src/lang/fu.ts @@ -70,7 +70,7 @@ const fuLocales: Record = { finish: 'ສຳເລັດ', }, }, - }, + }, ms: { fu: { table: { diff --git a/frontend/src/lang/modules/lo.ts b/frontend/src/lang/modules/lo.ts index 83ef49cf7..1c0811c46 100644 --- a/frontend/src/lang/modules/lo.ts +++ b/frontend/src/lang/modules/lo.ts @@ -14,6 +14,7 @@ const message = { next: 'ຖັດໄປ', create: 'ສ້າງ', add: 'ເພີ່ມ', + select: 'ເລືອກ', save: 'ບັນທຶກ', set: 'ຕັ້ງຄ່າ', sync: 'ຊິ້ງຄ໌', @@ -52,10 +53,12 @@ const message = { verify: 'ກວດສອບ', saveAndEnable: 'ບັນທຶກ ແລະ ເປີດໃຊ້ງານ', import: 'ນຳເຂົ້າ', + importAll: 'ນຳເຂົ້າທັງໝົດ', export: 'ສົ່ງອອກ', power: 'ສົ່ງຂໍ້ມູນ', search: 'ຄົ້ນຫາ', refresh: 'ຣີເຟຣຊ', + reconnect: 'ເຊື່ອມຕໍ່ໃໝ່', get: 'ດຶງຂໍ້ມູນ', upgrade: 'ອັບເກຣດ', update: 'ອັບເດດ', @@ -72,7 +75,7 @@ const message = { notAgree: 'ບໍ່ເຫັນດີ', preview: 'ເບິ່ງຕົວຢ່າງ', open: 'ເປີດ', - notSave: "ບໍ່ບັນທຶກ", + notSave: 'ບໍ່ບັນທຶກ', createNewFolder: 'ສ້າງໂຟນເດີໃໝ່', createNewFile: 'ສ້າງໄຟລ໌ໃໝ່', helpDoc: 'ເອກະສານແນະນຳ', @@ -114,6 +117,8 @@ const message = { total: 'ທັງໝົດ {0}', name: 'ຊື່', type: 'ປະເພດ', + card: 'ບັດ', + table: 'ຕາຕະລາງ', status: 'ສະຖານະ', statusSuccess: 'ສຳເລັດ', statusFailed: 'ຫຼົ້ມເຫຼວ', @@ -178,7 +183,8 @@ const message = { unSupportType: 'ບໍ່ຮອງຮັບປະເພດໄຟລ໌ນີ້.', unSupportSize: 'ໄຟລ໌ທີ່ອັບໂຫຼດມີຂະໜາດເກີນ {0}M. ກະລຸນາຢືນຢັນ.', fileExist: 'ມີໄຟລ໌ນີ້ຢູ່ໃນໂຟນເດີແລ້ວ. ບໍ່ຮອງຮັບການອັບໂຫຼດຊ້ຳ.', - fileNameErr: 'ຊື່ໄຟລ໌ຕ້ອງມີ 1-256 ຕົວອັກສອນ ແລະ ປະກອບດ້ວຍຕົວອັກສອນ, ຕົວເລກ, ຈ້ຳ, ຂີດຕໍ່ ຫຼື ຂີດກ້ອງເທົ່ານັ້ນ', + fileNameErr: + 'ຊື່ໄຟລ໌ຕ້ອງມີ 1-256 ຕົວອັກສອນ ແລະ ປະກອບດ້ວຍຕົວອັກສອນ, ຕົວເລກ, ຈ້ຳ, ຂີດຕໍ່ ຫຼື ຂີດກ້ອງເທົ່ານັ້ນ', confirmNoNull: 'ກະລຸນາແນ່ໃຈວ່າຄ່າ {0} ບໍ່ວ່າງ.', errPort: 'ພອດບໍ່ຖືກຕ້ອງ, ກະລຸນາກວດສອບ', remove: 'ເອົາອອກ', @@ -187,7 +193,7 @@ const message = { backupSuccess: 'ສຳຮອງຂໍ້ມູນສຳເລັດແລ້ວ', restoreSuccess: 'ກູ້ຄືນສຳເລັດແລ້ວ', refreshSuccess: 'ຣີເຟຣຊສຳເລັດແລ້ວ', - rootInfoErr: "ນີ້ແມ່ນໄດເຣັກທໍຣີຮາກ (root) ແລ້ວ", + rootInfoErr: 'ນີ້ແມ່ນໄດເຣັກທໍຣີຮາກ (root) ແລ້ວ', resetSuccess: 'ຣີເຊັດສຳເລັດແລ້ວ', creatingInfo: 'ກຳລັງສ້າງ, ບໍ່ຈຳເປັນຕ້ອງດຳເນີນການນີ້', installSuccess: 'ຕິດຕັ້ງສຳເລັດແລ້ວ', @@ -228,7 +234,7 @@ const message = { requiredInput: 'ຈຳເປັນຕ້ອງປ້ອນຂໍ້ມູນນີ້.', requiredSelect: 'ເລືອກລາຍການໃນລາຍຊື່', illegalChar: 'ບໍ່ຮອງຮັບການໃຊ້ຕົວອັກສອນ & ; $ \' ` ( ) " > < | ໃນເວລານີ້', - illegalInput: "ຂໍ້ມູນນີ້ຕ້ອງບໍ່ມີຕົວອັກສອນທີ່ບໍ່ຖືກຕ້ອງ.", + illegalInput: 'ຂໍ້ມູນນີ້ຕ້ອງບໍ່ມີຕົວອັກສອນທີ່ບໍ່ຖືກຕ້ອງ.', duplicate: 'ຄ່ານີ້ຕ້ອງບໍ່ຊ້ຳກັນ.', commonName: 'ຂໍ້ມູນນີ້ຕ້ອງບໍ່ຂຶ້ນຕົ້ນດ້ວຍຕົວອັກສອນພິເສດ ແລະ ປະກອບດ້ວຍພາສາອັງກິດ, ພາສາຈີນ, ຕົວເລກ, ".", "-", ແລະ "_" ໂດຍມີຄວາມຍາວ 1-128 ຕົວອັກສອນ.', @@ -240,8 +246,7 @@ const message = { dbName: 'ຂໍ້ມູນນີ້ຕ້ອງບໍ່ຂຶ້ນຕົ້ນດ້ວຍຂີດກ້ອງ ແລະ ປະກອບດ້ວຍພາສາອັງກິດ, ຕົວເລກ, ແລະ "_" ໂດຍມີຄວາມຍາວ 1-64 ຕົວອັກສອນ.', imageName: 'ຂໍ້ມູນນີ້ຕ້ອງປະກອບດ້ວຍພາສາອັງກິດ, ຕົວເລກ, ":", "@", "/", ".", "-", ແລະ "_" ໂດຍມີຄວາມຍາວ 1-256 ຕົວອັກສອນ.', - volumeName: - 'ຂໍ້ມູນນີ້ຕ້ອງປະກອບດ້ວຍພາສາອັງກິດ, ຕົວເລກ, ".", "-", ແລະ "_" ໂດຍມີຄວາມຍາວ 2-30 ຕົວອັກສອນ.', + volumeName: 'ຂໍ້ມູນນີ້ຕ້ອງປະກອບດ້ວຍພາສາອັງກິດ, ຕົວເລກ, ".", "-", ແລະ "_" ໂດຍມີຄວາມຍາວ 2-30 ຕົວອັກສອນ.', supervisorName: 'ຂໍ້ມູນນີ້ຕ້ອງບໍ່ຂຶ້ນຕົ້ນດ້ວຍຕົວອັກສອນພິເສດ ແລະ ປະກອບດ້ວຍພາສາອັງກິດ, ຕົວເລກ, "-", ແລະ "_" ໂດຍມີຄວາມຍາວ 1-128 ຕົວອັກສອນ.', composeName: @@ -249,8 +254,7 @@ const message = { complexityPassword: 'ຮອງຮັບລະຫັດຜ່ານຍາວ 8-30 ຕົວອັກສອນ ທີ່ປະກອບດ້ວຍຢ່າງໜ້ອຍສອງຢ່າງລະຫວ່າງ ຕົວອັກສອນ, ຕົວເລກ ແລະ ຕົວອັກສອນພິເສດ.', commonPassword: 'ຄວາມຍາວຂອງຂໍ້ມູນນີ້ຕ້ອງຫຼາຍກວ່າ 6 ຕົວອັກສອນ.', - linuxName: - 'ຄວາມຍາວຕ້ອງຢູ່ລະຫວ່າງ 1 ຫາ 128 ຕົວອັກສອນ ແລະ ຕ້ອງບໍ່ມີຕົວອັກສອນພິເສດເຫຼົ່ານີ້: "{0}".', + linuxName: 'ຄວາມຍາວຕ້ອງຢູ່ລະຫວ່າງ 1 ຫາ 128 ຕົວອັກສອນ ແລະ ຕ້ອງບໍ່ມີຕົວອັກສອນພິເສດເຫຼົ່ານີ້: "{0}".', email: 'ຂໍ້ມູນນີ້ຕ້ອງເປັນທີ່ຢູ່ອີເມລ໌ທີ່ຖືກຕ້ອງ.', number: 'ຂໍ້ມູນນີ້ຕ້ອງເປັນຕົວເລກ.', integer: 'ຂໍ້ມູນນີ້ຕ້ອງເປັນເລກຖ້ວນບວກ.', @@ -263,8 +267,7 @@ const message = { databaseName: 'ຂໍ້ມູນນີ້ຕ້ອງປະກອບດ້ວຍພາສາອັງກິດ, ຕົວເລກ, ແລະ "_" ໂດຍມີຄວາມຍາວ 1-30 ຕົວອັກສອນ.', ipErr: 'ຂໍ້ມູນນີ້ຕ້ອງເປັນທີ່ຢູ່ IP ທີ່ຖືກຕ້ອງ.', numberRange: 'ຂໍ້ມູນນີ້ຕ້ອງເປັນຕົວເລກລະຫວ່າງ {0} ຫາ {1}.', - paramName: - 'ຂໍ້ມູນນີ້ຕ້ອງປະກອບດ້ວຍພາສາອັງກິດ, ຕົວເລກ, ".", "-", ແລະ "_" ໂດຍມີຄວາມຍາວ 2-30 ຕົວອັກສອນ.', + paramName: 'ຂໍ້ມູນນີ້ຕ້ອງປະກອບດ້ວຍພາສາອັງກິດ, ຕົວເລກ, ".", "-", ແລະ "_" ໂດຍມີຄວາມຍາວ 2-30 ຕົວອັກສອນ.', paramComplexity: 'ຂໍ້ມູນນີ້ຕ້ອງບໍ່ຂຶ້ນຕົ້ນ ແລະ ລົງທ້າຍດ້ວຍຕົວອັກສອນພິເສດ ແລະ ປະກອບດ້ວຍພາສາອັງກິດ, ຕົວເລກ, "{0}" ໂດຍມີຄວາມຍາວ 6-128 ຕົວອັກສອນ.', paramUrlAndPort: 'ຂໍ້ມູນນີ້ຕ້ອງຢູ່ໃນຮູບແບບ "http(s)://(domain name/ip):(port)".', @@ -285,6 +288,9 @@ const message = { length128Err: 'ຄວາມຍາວຕ້ອງບໍ່ເກີນ 128 ຕົວອັກສອນ', maxLength: 'ຄວາມຍາວຕ້ອງບໍ່ເກີນ {0} ຕົວອັກສອນ', alias: 'ຮອງຮັບພາສາອັງກິດ, ຕົວເລກ, - ແລະ _, ຄວາມຍາວ 1-128, ແລະ ຕ້ອງບໍ່ຂຶ້ນຕົ້ນ ຫຼື ລົງທ້າຍດ້ວຍ -_.', + vmName: 'ຮອງຮັບຕົວອັກສອນພາສາອັງກິດ, ຕົວເລກ, ".", "-" ແລະ "_"; ຄວາມຍາວ 1-64 ຕົວ; ຕ້ອງຂຶ້ນຕົ້ນດ້ວຍຕົວອັກສອນ ຫຼື ຕົວເລກ.', + vmNetwork: + 'ຮອງຮັບຕົວອັກສອນພາສາອັງກິດ, ຕົວເລກ, ".", ":", "-" ແລະ "_"; ຄວາມຍາວ 1-64 ຕົວ; ຕ້ອງຂຶ້ນຕົ້ນດ້ວຍຕົວອັກສອນ ຫຼື ຕົວເລກ.', }, res: { paramError: 'ການຮ້ອງຂໍຫຼົ້ມເຫຼວ. ກະລຸນາລອງໃໝ່ພາຍຫຼັງ.', @@ -342,6 +348,11 @@ const message = { enable: 'ເປີດໃຊ້ງານ', disable: 'ປິດໃຊ້ງານ', deleted: 'ລຶບແລ້ວ', + notfound: 'ບໍ່ພົບ', + inactive: 'ບໍ່ເຮັດວຽກ', + degraded: 'ປະສິດທິພາບຫຼຸດລົງ', + inaccessible: 'ບໍ່ສາມາດເຂົ້າເຖິງ', + unknown: 'ບໍ່ຮູ້ຈັກ', downloading: 'ກຳລັງດາວໂຫຼດ', packing: 'ກຳລັງບີບອັດ', sending: 'ກຳລັງສົ່ງ', @@ -497,6 +508,8 @@ const message = { deleteBackupHelper: 'ລຶບໄຟລ໌ສຳຮອງຖານຂໍ້ມູນພ້ອມກັນ', delete: 'ການລຶບບໍ່ສາມາດຍ້ອນກັບໄດ້, ກະລຸນາປ້ອນ "', deleteHelper: '" ເພື່ອລຶບຖານຂໍ້ມູນນີ້', + deleteUserHelper: '" ເພື່ອລຶບຜູ້ໃຊ້ນີ້', + userBoundDatabases: 'ຖືກຜູກກັບຖານຂໍ້ມູນຕໍ່ໄປນີ້:', noMysql: 'ການບໍລິການຖານຂໍ້ມູນ (MySQL ຫຼື MariaDB)', noPostgresql: 'ການບໍລິການຖານຂໍ້ມູນ PostgreSQL', goUpgrade: 'ໄປອັບເກຣດ', @@ -528,12 +541,11 @@ const message = { 'ຖານຂໍ້ມູນນີ້ໄດ້ຖືກຜູກມັດກັບແອັບພລິເຄຊັນແລ້ວ. ການປ່ຽນລະຫັດຜ່ານຈະປ່ຽນລະຫັດຜ່ານຂອງແອັບພລິເຄຊັນພ້ອມກັນ. ການປ່ຽນແປງຈະມີຜົນຫຼັງຈາກຣີສະຕາດແອັບພລິເຄຊັນ.', recoverTimeoutHelper: '-1 ໝາຍເຖິງບໍ່ມີການໝົດເວລາ', confChange: 'ການຕັ້ງຄ່າ', - confNotFound: - 'ບໍ່ພົບໄຟລ໌ການຕັ້ງຄ່າ. ກະລຸນາອັບເກຣດແອັບພລິເຄຊັນເປັນເວີຊັນລ່າສຸດໃນຮ້ານແອັບ ແລະ ລອງໃໝ່ອີກຄັ້ງ!', - portHelper: - 'ພອດນີ້ແມ່ນພອດທີ່ເປີດອອກຂອງຄອນເທນເນີ. ທ່ານຕ້ອງບັນທຶກການແກ້ໄຂແຍກຕ່າງຫາກ ແລະ ຣີສະຕາດຄອນເທນເນີ!', + confNotFound: 'ບໍ່ພົບໄຟລ໌ການຕັ້ງຄ່າ. ກະລຸນາອັບເກຣດແອັບພລິເຄຊັນເປັນເວີຊັນລ່າສຸດໃນຮ້ານແອັບ ແລະ ລອງໃໝ່ອີກຄັ້ງ!', + portHelper: 'ພອດນີ້ແມ່ນພອດທີ່ເປີດອອກຂອງຄອນເທນເນີ. ທ່ານຕ້ອງບັນທຶກການແກ້ໄຂແຍກຕ່າງຫາກ ແລະ ຣີສະຕາດຄອນເທນເນີ!', loadFromRemote: 'ຊິ້ງຄ໌ຈາກເຊີເວີ', userBind: 'ຜູກມັດຜູ້ໃຊ້', + noUserBind: 'ບໍ່ມີການຜູກມັດ', pgBindHelper: 'ການດຳເນີນການນີ້ໃຊ້ເພື່ອສ້າງຜູ້ໃຊ້ໃໝ່ ແລະ ຜູກມັດກັບຖານຂໍ້ມູນເປົ້າໝາຍ. ໃນປັດຈຸບັນ, ຍັງບໍ່ຮອງຮັບການເລືອກຜູ້ໃຊ້ທີ່ມີຢູ່ແລ້ວໃນຖານຂໍ້ມູນ.', pgSuperUser: 'ຊຸບເປີຢູເຊີ', @@ -626,8 +638,7 @@ const message = { timeout: 'ໝົດເວລາ (ວິນາທີ)', timeoutHelper: 'ໄລຍະເວລາໝົດເວລາການເຊື່ອມຕໍ່ທີ່ຫວ່າງ. 0 ໝາຍເຖິງການເຊື່ອມຕໍ່ຕະຫຼອດເວລາ.', maxclients: 'ຈຳນວນລູກຄ້າສູງສຸດ', - requirepassHelper: - 'ປ່ອຍວ່າງໄວ້ຫາກບໍ່ມີການຕັ້ງລະຫັດຜ່ານ. ການປ່ຽນແປງຕ້ອງບັນທຶກແຍກຕ່າງຫາກ ແລະ ຣີສະຕາດຄອນເທນເນີ!', + requirepassHelper: 'ປ່ອຍວ່າງໄວ້ຫາກບໍ່ມີການຕັ້ງລະຫັດຜ່ານ. ການປ່ຽນແປງຕ້ອງບັນທຶກແຍກຕ່າງຫາກ ແລະ ຣີສະຕາດຄອນເທນເນີ!', databases: 'ຈຳນວນຖານຂໍ້ມູນ', maxmemory: 'ການໃຊ້ໜ່ວຍຄວາມຈຳສູງສຸດ', maxmemoryHelper: '0 ໝາຍເຖິງບໍ່ມີການຈຳກັດ.', @@ -666,11 +677,9 @@ const message = { containerConn: 'ການເຊື່ອມຕໍ່ຄອນເທນເນີ', copyConnURL: 'ຄັດລອກ URL ການເຊື່ອມຕໍ່', connAddress: 'ທີ່ຢູ່', - containerConnHelper: - 'ທີ່ຢູ່ການເຊື່ອມຕໍ່ນີ້ໃຊ້ສຳລັບແອັບພລິເຄຊັນທີ່ເຮັດວຽກໃນ PHP environment/container.', + containerConnHelper: 'ທີ່ຢູ່ການເຊື່ອມຕໍ່ນີ້ໃຊ້ສຳລັບແອັບພລິເຄຊັນທີ່ເຮັດວຽກໃນ PHP environment/container.', remoteConn: 'ການເຊື່ອມຕໍ່ພາຍນອກ', - remoteConnHelper2: - 'ທີ່ຢູ່ການເຊື່ອມຕໍ່ນີ້ໃຊ້ສຳລັບແອັບພລິເຄຊັນທີ່ບໍ່ໄດ້ຢູ່ໃນຄອນເທນເນີ ຫຼື ແອັບພລິເຄຊັນພາຍນອກ.', + remoteConnHelper2: 'ທີ່ຢູ່ການເຊື່ອມຕໍ່ນີ້ໃຊ້ສຳລັບແອັບພລິເຄຊັນທີ່ບໍ່ໄດ້ຢູ່ໃນຄອນເທນເນີ ຫຼື ແອັບພລິເຄຊັນພາຍນອກ.', remoteConnHelper3: 'ທີ່ຢູ່ການເຂົ້າເຖິງເລີ່ມຕົ້ນແມ່ນ IP ຂອງໂຮສ໌. ເພື່ອແກ້ໄຂ, ໃຫ້ໄປທີ່ "ທີ່ຢູ່ເຂົ້າເຖິງເລີ່ມຕົ້ນ" ໃນໜ້າຕັ້ງຄ່າແພນເນວ.', localIP: 'IP ທ້ອງຖິ່ນ', @@ -705,9 +714,17 @@ const message = { allowedOriginsRequired: 'ປ້ອນທີ່ຢູ່ການເຂົ້າເຖິງຢ່າງໜ້ອຍໜຶ່ງບ່ອນ', allowedOriginsInvalid: 'ໃຊ້ຮູບແບບ http(s)://host-or-ip[:port]', provider: 'ຜູ້ໃຫ້ບໍລິການ', - accountModelsHelper: - 'ເລືອກໂມເດວທີ່ບັນຊີນີ້ຈະເປີດໃຫ້ OpenClaw ເລືອກ ແລະ ຕັ້ງຄ່າ', + accountModelsHelper: 'ເລືອກໂມເດວທີ່ບັນຊີນີ້ຈະເປີດໃຫ້ OpenClaw ເລືອກ ແລະ ຕັ້ງຄ່າ', accountModelsRequired: 'ເລືອກຢ່າງໜ້ອຍໜຶ່ງໂມເດວ', + verifyModel: 'ໂມເດວສຳລັບກວດສອບ', + verifyModelHelper: + 'ເລືອກໂມເດວທີ່ບັນຊີນີ້ສາມາດເຂົ້າເຖິງໄດ້. ເມື່ອບັນທຶກ ລະບົບຈະສົ່ງຄຳຮ້ອງຂໍຂະໜາດນ້ອຍເພື່ອກວດສອບການເຊື່ອມຕໍ່.', + verifyModelRequired: 'ກະລຸນາເລືອກໂມເດວສຳລັບກວດສອບ', + discoverModels: 'ດຶງລາຍການໂມເດວ', + automaticModelDiscovery: 'ດຶງອັດຕະໂນມັດ', + manualModelConfiguration: 'ຕັ້ງຄ່າດ້ວຍຕົນເອງ', + discoverModelsHelper: 'ດຶງໂມເດວຈາກ API /v1/models ຂອງຜູ້ໃຫ້ບໍລິການ ແລະ ເພີ່ມທັງໝົດເຂົ້າໃນຄັງໂມເດວ', + discoverModelsFailedFallback: 'ດຶງລາຍການໂມເດວບໍ່ສຳເລັດ. ກະລຸນາຕັ້ງຄ່າໂມເດວດ້ວຍຕົນເອງ.', accountModelsDuplicate: 'ພົບໂມເດວທີ່ຊ້ຳກັນໃນລາຍການ', modelPool: 'ກຸ່ມໂມເດວ (Model Pool)', fallbackModels: 'ໂມເດວສຳຮອງ (Fallback)', @@ -723,8 +740,7 @@ const message = { timeZone: 'ເຂດເວລາ', browserEnabled: 'ເປີດໃຊ້ບຣາວເຊີ', npmRegistry: 'NPM Registry', - npmRegistryHelper: - 'ໃຊ້ສຳລັບການຕິດຕັ້ງປລັກອິນ OpenClaw. ທ່ານສາມາດເລືອກຄ່າທີ່ຕັ້ງໄວ້ ຫຼື ປ້ອນເອງ.', + npmRegistryHelper: 'ໃຊ້ສຳລັບການຕິດຕັ້ງປລັກອິນ OpenClaw. ທ່ານສາມາດເລືອກຄ່າທີ່ຕັ້ງໄວ້ ຫຼື ປ້ອນເອງ.', npmRegistryInvalid: 'ປ້ອນ URL ຂອງ NPM registry ທີ່ຖືກຕ້ອງ ໂດຍຂຶ້ນຕົ້ນດ້ວຍ http:// ຫຼື https://', pluginInstallNPMRegistryHelper: 'ໄປທີ່ ຕັ້ງຄ່າ -> ອື່ນໆ ເພື່ອຕັ້ງຄ່າ NPM registry ແລະ ເລັ່ງການຕິດຕັ້ງປລັກອິນ', @@ -758,15 +774,15 @@ const message = { ], 'SOUL.md': ['ຕົວຕົນ, ນ້ຳສຽງ ແລະ ຂອບເຂດ.', 'ໂຫຼດໃນທຸກເຊດຊັນ.'], 'USER.md': ['ຜູ້ໃຊ້ແມ່ນໃຜ ແລະ ຄວນເອີ້ນພວກເຂົາແນວໃດ.', 'ໂຫຼດໃນທຸກເຊດຊັນ.'], - 'IDENTITY.md': [ - "ຊື່ຂອງຕົວແທນ, ບຸກຄະລິກ ແລະ ອີໂມຈິ.", - 'ສ້າງ ຫຼື ອັບເດດໃນລະຫວ່າງຂັ້ນຕອນ bootstrap.', - ], + 'IDENTITY.md': ['ຊື່ຂອງຕົວແທນ, ບຸກຄະລິກ ແລະ ອີໂມຈິ.', 'ສ້າງ ຫຼື ອັບເດດໃນລະຫວ່າງຂັ້ນຕອນ bootstrap.'], 'TOOLS.md': [ 'ໝາຍເຫດກ່ຽວກັບເຄື່ອງມືທ້ອງຖິ່ນ ແລະ ຂໍ້ຕົກລົງຕ່າງໆ.', 'ບໍ່ໄດ້ຄວບຄຸມການມີຢູ່ຂອງເຄື່ອງມື; ເປັນພຽງຄຳແນະນຳເທົ່ານັ້ນ.', ], - 'HEARTBEAT.md': ['ລາຍການກວດສອບສຳລັບການເຮັດວຽກແບບ heartbeat (ເລືອກໄດ້).', 'ຄວນຂຽນໃຫ້ສັ້ນເພື່ອປະຢັດ token.'], + 'HEARTBEAT.md': [ + 'ລາຍການກວດສອບສຳລັບການເຮັດວຽກແບບ heartbeat (ເລືອກໄດ້).', + 'ຄວນຂຽນໃຫ້ສັ້ນເພື່ອປະຢັດ token.', + ], 'BOOT.md': [ 'ລາຍການກວດສອບຕອນເລີ່ມຕົ້ນລະບົບ ເມື່ອ gateway ຣີສະຕາດ (ເລືອກໄດ້).', 'ຄວນຂຽນໃຫ້ສັ້ນ; ໃຊ້ເຄື່ອງມືຂໍ້ຄວາມສຳລັບການສົ່ງອອກ.', @@ -782,8 +798,7 @@ const message = { saveAllMd: 'ບັນທຶກທັງໝົດ', roleMarkdownRestartHelper: 'ການບັນທຶກໄຟລ໌ markdown ທັງໝົດຕ້ອງຣີສະຕາດຄອນເທນເນີເພື່ອໃຫ້ມີຜົນ. ເລືອກວ່າຈະຣີສະຕາດດຽວນີ້ ຫຼື ພາຍຫຼັງ.', - configFileRestartHelper: - 'ການບັນທຶກໄຟລ໌ການຕັ້ງຄ່າຕ້ອງຣີສະຕາດຄອນເທນເນີທັນທີເພື່ອໃຫ້ມີຜົນ.', + configFileRestartHelper: 'ການບັນທຶກໄຟລ໌ການຕັ້ງຄ່າຕ້ອງຣີສະຕາດຄອນເທນເນີທັນທີເພື່ອໃຫ້ມີຜົນ.', overviewSnapshot: 'ພາບລວມ (Snapshot)', primaryModel: 'ໂມເດວຫຼັກ', defaultModel: 'ໂມເດວເລີ່ມຕົ້ນ', @@ -861,8 +876,7 @@ const message = { channelDeleteConfirm: 'ລຶບການຕັ້ງຄ່າຊ່ອງທາງ {0}?', customProviderHelper: 'ຜູ້ໃຫ້ບໍລິການແບບກຳນົດເອງຈະບໍ່ກວດສອບວ່າບັນຊີສາມາດໃຊ້ງານໄດ້ຫຼືບໍ່.', apiTypeBaseURLHelper: 'ປະເພດນີ້ຈະສົ່ງການຮ້ອງຂໍໄປທີ່ {0}. Base URL ທີ່ແນະນຳ: {1}', - apiTypeBaseURLMismatch: - 'Base URL ປັດຈຸບັນເບິ່ງຄືວ່າເປັນເສັ້ນທາງ {0}, ແຕ່ໄດ້ເລືອກ {1}. URL ທີ່ແນະນຳ: {2}', + apiTypeBaseURLMismatch: 'Base URL ປັດຈຸບັນເບິ່ງຄືວ່າເປັນເສັ້ນທາງ {0}, ແຕ່ໄດ້ເລືອກ {1}. URL ທີ່ແນະນຳ: {2}', }, model: { model: 'ໂມເດວ', @@ -939,6 +953,7 @@ const message = { resetToken: 'ຣີເຊັດ Token', resetTokenConfirm: 'ຣີເຊັດການໃຊ້ງານ token ສຳລັບ {0}?', unlimited: 'ບໍ່ຈຳກັດ', + unlimitedWithAuto: 'ບໍ່ຈຳກັດ, ລວມ auto', apiKeyCount: 'API Keys', lastUsedAt: 'ໃຊ້ງານລ່າສຸດ', settingTitle: 'ຕັ້ງຄ່າ AI Gateway', @@ -947,8 +962,7 @@ const message = { logSetting: 'ຕັ້ງຄ່າລັອກ', lbPolicy: 'ນະໂຍບາຍການກະຈາຍພາລະ (Load Balancing)', lbPolicyRoundRobin: 'Round Robin', - lbPolicyRoundRobinDesc: - 'ເລືອກບັນຊີໂມເດວຕາມລຳດັບ. ໃຊ້ເມື່ອລະບົບຫຼັງບ້ານມີຄວາມສາມາດໃກ້ຄຽງກັນ.', + lbPolicyRoundRobinDesc: 'ເລືອກບັນຊີໂມເດວຕາມລຳດັບ. ໃຊ້ເມື່ອລະບົບຫຼັງບ້ານມີຄວາມສາມາດໃກ້ຄຽງກັນ.', lbPolicyWeightedRoundRobin: 'Weighted Round Robin', lbPolicyWeightedRoundRobinDesc: 'ກະຈາຍການຮ້ອງຂໍຕາມນ້ຳໜັກຂອງບັນຊີໂມເດວ. ນ້ຳໜັກສູງກວ່າຈະໄດ້ຮັບ traffic ຫຼາຍກວ່າ.', @@ -962,10 +976,16 @@ const message = { streamIdleTimeoutSeconds: 'ໝົດເວລາ stream ຫວ່າງ (ວິນາທີ)', maxBodyMb: 'ຂະໜາດ Body ສູງສຸດ (MB)', runtimeRefreshSeconds: 'ໄລຍະການຣີເຟຣຊ runtime (ວິນາທີ)', + logRetentionDays: 'ການເກັບຮັກສາລັອກ AI Gateway (ມື້)', + clearLogs: 'ລ້າງລັອກ', + clearLogsConfirm: + 'ການດຳເນີນການນີ້ຈະລ້າງສະຖິຕິການໃຊ້ AI Gateway, ການກວດສອບເນື້ອຫາ, ການຕັດສິນໃຈຂອງ Smart Route, ລັອກເນື້ອຫາຄຳຮ້ອງຂໍ ແລະ ລັອກບໍລິການ. ຕ້ອງການຕໍ່ບໍ?', usageRetentionDays: 'ໄລຍະການເກັບຮັກສາສະຖິຕິການໃຊ້ງານ (ມື້)', contentAuditRetentionDays: 'ໄລຍະການເກັບຮັກສາການກວດສອບເນື້ອໃນ (ມື້)', logCleanupIntervalHours: 'ໄລຍະການລ້າງລັອກ (ຊົ່ວໂມງ)', requestBodyLog: 'ລັອກ Request Body', + requestBodyLogDesc: + 'ບັນທຶກເນື້ອຫາຄຳຮ້ອງຂໍ ແລະ ຄຳຕອບຂອງ AI Gateway ໄປທີ່ Elasticsearch ເພື່ອຄົ້ນຫາ, ກວດສອບ ແລະ ແກ້ໄຂບັນຫາ.', requestBodyLogIndexPrefix: 'ຄຳນຳໜ້າ Index', requestBodyLogRetentionDays: 'ໄລຍະການເກັບຮັກສາລັອກ Request Body (ມື້)', requestBodyLogMaxBodyKb: 'ຂະໜາດ Request Body ສູງສຸດ (KB)', @@ -998,1006 +1018,1073 @@ const message = { requestModelPlaceholder: 'ຕົວຢ່າງ: qwen2.5-coder', upstreamModelPlaceholder: 'ຕົວຢ່າງ: Qwen/Qwen2.5-Coder-32B-Instruct', addMapping: 'ເພີ່ມການຈັບຄູ່', - overview: 'ພາບລວມ', - distribution: 'ການແຈກຢາຍ', - usageTrend: 'ແນວໂນ້ມການນຳໃຊ້', - distributionBy: 'ການແຈກຢາຍໂດຍ {0}', - unmatched: 'ບໍ່ກົງກັນ', - modelAccount: 'ບັນຊີໂມເດວ', - serviceProvider: 'ຜູ້ໃຫ້ບໍລິການ', - tokenUsage: 'ການນຳໃຊ້ Token', - percent: 'ເປີເຊັນ', - ranking: 'ການຈັດອັນດັບ', - rank: 'ອັນດັບ', - promptToken: 'Prompt Tokens', - completionToken: 'Completion Tokens', - totalToken: 'Token ທັງໝົດ', - cachedToken: 'Cached Tokens', - cacheHitRate: 'ອັດຕາການພົບ Cache', - activeUsers: 'ຜູ້ໃຊ້ທີ່ເຄື່ອນໄຫວ', - activeModels: 'ໂມເດວທີ່ເຄື່ອນໄຫວ', - failedRequests: 'ຄຳຂໍທີ່ລົ້ມເຫຼວ', - averageTokenPerRequest: 'Token ສະເລ່ຍ/ຄຳຂໍ', - callLogs: 'ບັນທຶກການເອີ້ນໃຊ້', - usageKeywordPlaceholder: 'ຄົ້ນຫາ Request ID / ໂມເດວ / ໂມເດວຕົ້ນທາງ / ຂໍ້ຄວາມຜິດພາດ', - attemptChain: 'ລຳດັບການລອງໃໝ່', - attemptIndex: 'ລຳດັບການເອີ້ນ', - noAttemptDetails: 'ຄຳຂໍນີ້ສຳເລັດໃນຄັ້ງດຽວ; ບໍ່ມີລາຍລະອຽດການສຳຮອງ', - input: 'ຂາເຂົ້າ', - output: 'ຂາອອກ', - total: 'ທັງໝົດ', - healthHealthy: 'ປົກກະຕິ', - healthCooldown: 'ກຳລັງພັກ (Cooldown)', - healthUnhealthy: 'ຜິດປົກກະຕິ', - healthDeleted: 'ລຶບແລ້ວ', - healthUnknown: 'ບໍ່ຮູ້ຈັກ', - validationModelMapEmpty: 'ຊື່ການຈັບຄູ່ໂມເດວບໍ່ສາມາດຫວ່າງໄດ້', - validationModelMapDuplicate: 'ໂມເດວທີ່ຮ້ອງຂໍ {0} ຊ້ຳກັນ', - validateAvailability: 'ກວດສອບການພ້ອມໃຊ້ງານຂອງບັນຊີ', - validateAvailabilityHelper: 'ສົ່ງຂໍ້ຄວາມຂະໜາດນ້ອຍກ່ອນບັນທຶກເພື່ອຢືນຢັນການໃຊ້ງານ API', - modelGroup: 'ກຸ່ມໂມເດວ', - availableModels: 'ໂມເດວທີ່ມີໃຫ້ໃຊ້', - modelGroupModels: 'ໂມເດວທີ່ຮ້ອງຂໍ', - modelGroupModelsPlaceholder: 'ເລືອກ ຫຼື ປ້ອນຊື່ໂມເດວທີ່ຮ້ອງຂໍ', - modelGroupModelCount: '{0} ໂມເດວ', - contentCompliance: 'ການປະຕິບັດຕາມເນື້ອຫາ', - contentAction: 'ການດຳເນີນການ', - actionBlock: 'ບລັອກ', - actionAuditOnly: 'ກວດສອບຢ່າງດຽວ', - actionDropHistory: 'ຍົກເລີກປະຫວັດ', - severity: 'ລະດັບຄວາມຮຸນແຮງ', - severityHigh: 'ສູງ', - severityMedium: 'ກາງ', - severityLow: 'ຕ່ຳ', - sensitiveWord: 'ຄຳອ່ອນໄຫວ', - sensitiveGroup: 'ກຸ່ມຄຳອ່ອນໄຫວ', - sensitiveWordCount: 'ຈຳນວນຄຳ', - normalizedWord: 'ຄຳທີ່ປັບເປັນມາດຕະຖານ', - matchedWords: 'ຄຳທີ່ກົງກັນ', - matchedGroups: 'ກຸ່ມທີ່ກົງກັນ', - importResult: 'ນຳເຂົ້າແລ້ວ {0}, ຊ້ຳກັນ {1}, ບໍ່ຖືກຕ້ອງ {2}', - auditLogs: 'ບັນທຶກການກວດສອບ', - }, - skillsHub: { - title: 'ສູນລວມທັກສະ (Skills Hub)', - upload: 'ອັບໂຫຼດທັກສະ', - importSkill: 'ນຳເຂົ້າທັກສະ', - repositoryAddress: 'ທີ່ຢູ່ຄັງເກັບ (Repository)', - repositoryGithubOnly: 'ຮອງຮັບສະເພາະທີ່ຢູ່ GitHub ເທົ່ານັ້ນ', - repositoryRef: 'Branch ຫຼື Tag', - repositoryRefPlaceholder: 'ຄ່າເລີ່ມຕົ້ນແມ່ນ main, ຖ້າລົ້ມເຫຼວຈະລອງ master', - repositoryDownloadPreview: 'URL ດາວໂຫຼດປາຍທາງ:', - packageURL: 'URL ຂອງແພັກເກັດ', - packageURLPlaceholder: 'ປ້ອນທີ່ຢູ່ແພັກເກັດ .zip', - importSuccess: 'ນຳເຂົ້າທັກສະສຳເລັດແລ້ວ ແລະ ກຳລັງລໍຖ້າການກວດສອບ.', - source: 'ແຫຼ່ງທີ່ມາ', - applicableAgent: 'Agent ທີ່ໃຊ້ໄດ້', - overview: 'ພາບລວມ', - versionHistory: 'ປະຫວັດເວີຊັນ', - publishedAt: 'ເຜີຍແຜ່ເມື່ອ', - versionMarker: 'ເຄື່ອງໝາຍ', - currentVersion: 'ເວີຊັນປັດຈຸບັນ', - latestVersion: 'ເວີຊັນຫຼ້າສຸດ', - latestPublished: 'ເຜີຍແຜ່ຫຼ້າສຸດ', - riskLevel: 'ລະດັບຄວາມສ່ຽງ', - riskReferenceHint: - 'ລະດັບຄວາມສ່ຽງຖືກສ້າງຂຶ້ນໂດຍອັດຕະໂນມັດຈາກເນື້ອຫາແພັກເກັດ Skill ເພື່ອໃຊ້ເປັນບ່ອນອີງໃນການກວດສອບເທົ່ານັ້ນ.\nຕ່ຳ: ບໍ່ພົບຄວາມສ່ຽງທີ່ຊັດເຈນ\nກາງ: ມີສະຄຣິບ, dependencies, URL ພາຍນອກ ຫຼື ຕົວປ່ຽນສະພາບແວດລ້ອມ\nສູງ: ມີການສັ່ງການໄລຍະໄກ, ຂໍ້ມູນອ່ອນໄຫວ ຫຼື ຄຳສັ່ງທີ່ອັນຕະລາຍ', - riskCheckResult: 'ຜົນການກວດສອບຄວາມປອດໄພ', - noRiskFound: 'ບໍ່ພົບຄວາມສ່ຽງທີ່ຊັດເຈນ.', - riskFilePath: 'ເສັ້ນທາງໄຟລ໌', - riskKeyword: 'ຄຳສຳຄັນ ຫຼື ກົດທີ່ກົງກັນ', - riskDescription: 'ລາຍລະອຽດຄວາມສ່ຽງ', - publishHighRiskConfirm: - 'Skill ນີ້ມີລາຍການທີ່ມີຄວາມສ່ຽງສູງ ແລະ ອາດມີການລັນສະຄຣິບ, ດາວໂຫຼດພາຍນອກ ຫຼື ເຂົ້າເຖິງຂໍ້ມູນອ່ອນໄຫວ. ຢືນຢັນການເຜີຍແຜ່ຫຼືບໍ່?', - approve: 'ອະນຸມັດ', - reject: 'ປະຕິເສດ', - publish: 'ເຜີຍແຜ່', - disable: 'ຍົກເລີກການເຜີຍແຜ່', - customTarget: 'Agent ທີ່ກຳນົດເອງ', - addCustomTarget: 'ເພີ່ມ Agent', - installToTarget: 'ຕິດຕັ້ງໃສ່ Agent ທີ່ກຳນົດເອງ', - hostSkillDir: 'ໂຟນເດີ Skill', - hostSkillDirHelper: 'ປ້ອນເສັ້ນທາງໂຟນເດີ Skill ໃນ Node.', - installMethod: 'ວິທີການຕິດຕັ້ງ', - copy: 'ຄັດລອກ', - extract: 'ແຕກໄຟລ໌', - postInstallCommand: 'ຄຳສັ່ງຫຼັງການຕິດຕັ້ງ', - localSource: 'ອັບໂຫຼດຈາກເຄື່ອງ', - uploadDragTitle: 'ລາກແພັກເກັດ Skill ມາວາງທີ່ນີ້ ຫຼື ຄລິກເພື່ອອັບໂຫຼດ', - uploadFormatLabel: 'ຮູບແບບ:', - uploadFormatValue: '.zip, .7z, .tar, .tar.gz', - uploadSizeLabel: 'ຂະໜາດໄຟລ໌:', - uploadSizeValue: 'ບໍ່ເກີນ 5 MB ຕໍ່ໄຟລ໌', - uploadRequirementLabel: 'ຂໍ້ກຳນົດແພັກເກັດ:', - uploadRequirementPrefix: 'ແພັກເກັດ Skill ຕ້ອງມີ', - onlySupportedArchive: 'ຮອງຮັບສະເພາະແພັກເກັດ Skill ນາມສະກຸນ .zip, .7z, .tar, ແລະ .tar.gz ເທົ່ານັ້ນ', - uploadSizeExceeded: 'ແພັກເກັດ Skill ແຕ່ລະອັນຕ້ອງບໍ່ເກີນ 5 MB', - uploadSuccess: 'ອັບໂຫຼດ Skill ສຳເລັດແລ້ວ ແລະ ກຳລັງລໍຖ້າການກວດສອບ.', - versionAutoFillPlaceholder: 'ກວດພົບອັດຕະໂນມັດຈາກຊື່ໄຟລ໌ຖ້າເປັນໄປໄດ້. ຢືນຢັນ ຫຼື ປ້ອນເອງ', - metadataOverwriteConfirm: - 'ເວີຊັນໃນແພັກເກັດ Skill ຕ່າງຈາກທີ່ປ້ອນໄວ້. ຕ້ອງການໃຊ້ຂໍ້ມູນທີ່ປ້ອນໄວ້ແທນຫຼືບໍ່?', - offlineNotice: 'ສະພາບແວດລ້ອມປັດຈຸບັນແມ່ນອອຟລາຍ. ສາມາດຕິດຕັ້ງໄດ້ສະເພາະ Skill ຈາກ Skill Store ພາຍໃນເຄື່ອງເທົ່ານັ້ນ.', - publishConfirm: 'ເຜີຍແຜ່ Skill ນີ້ຫຼືບໍ່? Skill ທີ່ເຜີຍແຜ່ແລ້ວສາມາດຕິດຕັ້ງໄດ້ຈາກ Skill Store ພາຍໃນເຄື່ອງ.', - disableConfirm: 'ຍົກເລີກການເຜີຍແຜ່ Skill ນີ້ຫຼືບໍ່? Skill ທີ່ຕິດຕັ້ງໃນ Agent ແລ້ວຈະບໍ່ໄດ້ຮັບຜົນກະທົບ.', - deleteConfirm: - 'ລຶບ Skill ນີ້ຫຼືບໍ່? ການດຳເນີນການນີ້ບໍ່ສາມາດກັບຄືນໄດ້. Skill ທີ່ຕິດຕັ້ງໃນ Agent ແລ້ວຈະບໍ່ໄດ້ຮັບຜົນກະທົບ.', - rejectConfirm: 'ປະຕິເສດການກວດສອບ Skill ນີ້ຫຼືບໍ່? ມັນຈະຖືກປ່ຽນສະຖານະເປັນ "ປະຕິເສດ".', - downloadPublishedOnly: 'ສາມາດດາວໂຫຼດໄດ້ສະເພາະແພັກເກັດ Skill ທີ່ເຜີຍແຜ່ແລ້ວເທົ່ານັ້ນ.', - deleteTargetConfirm: 'ລຶບ Agent ທີ່ກຳນົດເອງນີ້ຫຼືບໍ່? ຜູ້ໃຊ້ຈະບໍ່ສາມາດເລືອກມັນໄດ້ອີກ.', - noInstallTarget: 'ບໍ່ມີ Agent ທີ່ກຳນົດເອງໃຫ້ໃຊ້ງານ. ກະລຸນາກຳນົດເປົ້າໝາຍການຕິດຕັ້ງກ່ອນ.', - postInstallConfirm: - 'ເປົ້າໝາຍນີ້ມີຄຳສັ່ງຫຼັງການຕິດຕັ້ງ. ກະລຸນາຢືນຢັນວ່າຄຳສັ່ງນັ້ນເຊື່ອຖືໄດ້ກ່ອນທີ່ຈະລັນ.', - status: { - pending: 'ລໍຖ້າການກວດສອບ', - approved: 'ອະນຸມັດແລ້ວ', - published: 'ເຜີຍແຜ່ແລ້ວ', - disabled: 'ຍົກເລີກການເຜີຍແຜ່', - rejected: 'ປະຕິເສດແລ້ວ', - deleted: 'ລຶບແລ້ວ', + overview: 'ພາບລວມ', + distribution: 'ການແຈກຢາຍ', + usageTrend: 'ແນວໂນ້ມການນຳໃຊ້', + distributionBy: 'ການແຈກຢາຍໂດຍ {0}', + unmatched: 'ບໍ່ກົງກັນ', + modelAccount: 'ບັນຊີໂມເດວ', + serviceProvider: 'ຜູ້ໃຫ້ບໍລິການ', + tokenUsage: 'ການນຳໃຊ້ Token', + percent: 'ເປີເຊັນ', + ranking: 'ການຈັດອັນດັບ', + rank: 'ອັນດັບ', + promptToken: 'Prompt Tokens', + completionToken: 'Completion Tokens', + totalToken: 'Token ທັງໝົດ', + cachedToken: 'Cached Tokens', + cacheHitRate: 'ອັດຕາການພົບ Cache', + activeUsers: 'ຜູ້ໃຊ້ທີ່ເຄື່ອນໄຫວ', + activeModels: 'ໂມເດວທີ່ເຄື່ອນໄຫວ', + failedRequests: 'ຄຳຂໍທີ່ລົ້ມເຫຼວ', + averageTokenPerRequest: 'Token ສະເລ່ຍ/ຄຳຂໍ', + callLogs: 'ບັນທຶກການເອີ້ນໃຊ້', + usageKeywordPlaceholder: 'ຄົ້ນຫາ Request ID / ໂມເດວ / ໂມເດວຕົ້ນທາງ / ຂໍ້ຄວາມຜິດພາດ', + attemptChain: 'ລຳດັບການລອງໃໝ່', + attemptIndex: 'ລຳດັບການເອີ້ນ', + noAttemptDetails: 'ຄຳຂໍນີ້ສຳເລັດໃນຄັ້ງດຽວ; ບໍ່ມີລາຍລະອຽດການສຳຮອງ', + input: 'ຂາເຂົ້າ', + output: 'ຂາອອກ', + total: 'ທັງໝົດ', + healthHealthy: 'ປົກກະຕິ', + healthCooldown: 'ກຳລັງພັກ (Cooldown)', + healthUnhealthy: 'ຜິດປົກກະຕິ', + healthDeleted: 'ລຶບແລ້ວ', + healthUnknown: 'ບໍ່ຮູ້ຈັກ', + validationModelMapEmpty: 'ຊື່ການຈັບຄູ່ໂມເດວບໍ່ສາມາດຫວ່າງໄດ້', + validationModelMapDuplicate: 'ໂມເດວທີ່ຮ້ອງຂໍ {0} ຊ້ຳກັນ', + validateAvailability: 'ກວດສອບການພ້ອມໃຊ້ງານຂອງບັນຊີ', + validateAvailabilityHelper: 'ສົ່ງຂໍ້ຄວາມຂະໜາດນ້ອຍກ່ອນບັນທຶກເພື່ອຢືນຢັນການໃຊ້ງານ API', + modelGroup: 'ກຸ່ມໂມເດວ', + availableModels: 'ໂມເດວທີ່ມີໃຫ້ໃຊ້', + modelGroupModels: 'ໂມເດວທີ່ຮ້ອງຂໍ', + modelGroupModelsPlaceholder: 'ເລືອກ ຫຼື ປ້ອນຊື່ໂມເດວທີ່ຮ້ອງຂໍ', + modelGroupModelsHelper: + 'ປ້ອນສະເພາະໂມເດວຕົ້ນທາງທີ່ມີຢູ່ຈິງ; Smart Route ຈະລອງໂມເດວຕາມລຳດັບ ແລະ ບໍ່ເຮັດ Load Balance ລະຫວ່າງໂມເດວ.', + modelGroupGuide: + 'ກຸ່ມໂມເດວຈະມີສະເພາະໂມເດວຕົ້ນທາງທີ່ມີຢູ່ຈິງ. auto ແມ່ນຊື່ໂມເດວສະເໝືອນທີ່ Client ໃຊ້ເມື່ອຮ້ອງຂໍ AI Gateway.', + modelGroupModelCount: '{0} ໂມເດວ', + contentCompliance: 'ການປະຕິບັດຕາມເນື້ອຫາ', + contentAction: 'ການດຳເນີນການ', + actionBlock: 'ບລັອກ', + actionAuditOnly: 'ກວດສອບຢ່າງດຽວ', + actionDropHistory: 'ຍົກເລີກປະຫວັດ', + severity: 'ລະດັບຄວາມຮຸນແຮງ', + severityHigh: 'ສູງ', + severityMedium: 'ກາງ', + severityLow: 'ຕ່ຳ', + sensitiveWord: 'ຄຳອ່ອນໄຫວ', + sensitiveGroup: 'ກຸ່ມຄຳອ່ອນໄຫວ', + sensitiveWordCount: 'ຈຳນວນຄຳ', + normalizedWord: 'ຄຳທີ່ປັບເປັນມາດຕະຖານ', + matchedWords: 'ຄຳທີ່ກົງກັນ', + matchedGroups: 'ກຸ່ມທີ່ກົງກັນ', + importResult: 'ນຳເຂົ້າແລ້ວ {0}, ຊ້ຳກັນ {1}, ບໍ່ຖືກຕ້ອງ {2}', + auditLogs: 'ບັນທຶກການກວດສອບ', + smartRoute: 'Smart Route', + smartRouteGuideTitle: 'ໃຊ້ model=auto ຢູ່ Client ເພື່ອເຂົ້າ Smart Route', + smartRouteGuideReady: + 'model=auto ຈະເລືອກຈາກກຸ່ມໂມເດວແບບງ່າຍ ຫຼື ຊັບຊ້ອນຕາມຄວາມຊັບຊ້ອນຂອງຄຳຮ້ອງຂໍ. ໂມເດວອື່ນຈະຖືກສົ່ງຕໍ່ຕາມປົກກະຕິ.', + smartRouteGuideNotReady: + 'ເປີດ Smart Route ແລະ ຕັ້ງຄ່າກຸ່ມໂມເດວແບບງ່າຍ/ຊັບຊ້ອນກ່ອນ, ຈາກນັ້ນໃຊ້ model=auto ຢູ່ Client.', + copyAutoModel: 'ຄັດລອກ auto', + goSmartRouteSetting: 'ໄປທີ່ການຕັ້ງຄ່າ', + smartRoutePolicy: 'ນະໂຍບາຍການກຳນົດເສັ້ນທາງ', + routeConfig: 'ການຕັ້ງຄ່າເສັ້ນທາງ', + embeddingConfig: 'ການຕັ້ງຄ່າ Embedding', + embeddingConfigDesc: + 'ໃຊ້ສຳລັບ Smart Route ແລະ ການຈັບຄູ່ຕົວຢ່າງເຊີງຄວາມໝາຍເພື່ອກວດສອບເນື້ອຫາ. ແນະນຳ: llama.cpp + Qwen3-Embedding-0.6B. ກະລຸນາຕັ້ງຄ່າກ່ອນສ້າງ Vector ຂອງຕົວຢ່າງໃໝ່.', + decisionConfig: 'ພາຣາມິເຕີການຕັດສິນໃຈ', + simpleModelGroup: 'ກຸ່ມໂມເດວແບບງ່າຍ', + complexModelGroup: 'ກຸ່ມໂມເດວແບບຊັບຊ້ອນ', + embeddingEndpoint: 'Endpoint', + embeddingModel: 'ໂມເດວ', + embeddingApiKey: 'API Key', + routeThreshold: 'ເກນການກຳນົດເສັ້ນທາງ', + routeThresholdHelper: 'ສຳລັບ Smart Route: ໃຊ້ການຈັບຄູ່ຕົວຢ່າງສະເພາະເມື່ອຄວາມຄ້າຍຄືຂອງຄຳຮ້ອງຂໍຮອດຄ່ານີ້.', + auditThreshold: 'ເກນການກວດສອບ', + auditThresholdHelper: 'ສຳລັບການກວດສອບເນື້ອຫາ: ຖືວ່າກົງກັບຕົວຢ່າງກວດສອບກໍຕໍ່ເມື່ອຄວາມຄ້າຍຄືຮອດຄ່ານີ້.', + topK: 'TopK', + topKHelper: 'ຈຳນວນຕົວຢ່າງທີ່ຄ້າຍຄືທີ່ສຸດທີ່ຈະປຽບທຽບໃນແຕ່ລະຄັ້ງ.', + members: 'ສະມາຊິກ', + samples: 'ຕົວຢ່າງ', + routeSamplesGuide: + 'ຕົວຢ່າງແມ່ນຄຳຮ້ອງຂໍແບບງ່າຍ/ຊັບຊ້ອນສຳລັບການຈັບຄູ່ຄວາມຄ້າຍຄືດ້ວຍ Embedding. ໃຫ້ໃຊ້ຄຳຮ້ອງຂໍຈິງຂອງຜູ້ໃຊ້ ແລ້ວສ້າງ ຫຼື ສ້າງ Vector ໃໝ່.', + rebuildVectors: 'ສ້າງ Vector ໃໝ່', + rebuildVectorsConfirm: + 'ການສ້າງ Vector ໃໝ່ຈະຮ້ອງຂໍບໍລິການ Embedding ໃຫ້ປະມວນຜົນຕົວຢ່າງ Smart Route ແລະ ການກວດສອບເນື້ອຫາອີກຄັ້ງ. ຕ້ອງການຕໍ່ບໍ?', + createVectorOnImport: 'ສ້າງ Vector ຫຼັງນຳເຂົ້າ', + createVectorOnImportHelper: + 'ເປີດໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນ. ຖ້າຕັ້ງຄ່າ Embedding ແລ້ວ ວຽກເບື້ອງຫຼັງຈະສ້າງ Vector; ຖ້າບໍ່ມີ ຈະສ້າງສະເພາະຕົວຢ່າງ.', + route: 'ເສັ້ນທາງ', + audit: 'ການກວດສອບ', + auditSamples: 'ຕົວຢ່າງກວດສອບ', + sampleText: 'ຂໍ້ຄວາມ', + sampleLabel: 'ປ້າຍກຳກັບ', + vectorModel: 'ໂມເດວ Vector', + vectorDim: 'ມິຕິ', + threshold: 'ເກນ', + preview: 'ເບິ່ງຕົວຢ່າງ', + previewGuide: + 'ການສະແດງຕົວຢ່າງຈະທົດສອບວ່າຄຳຮ້ອງຂໍເປັນແບບງ່າຍ ຫຼື ຊັບຊ້ອນໂດຍບໍ່ເອີ້ນໂມເດວຕົ້ນທາງ. ແຫຼ່ງຜົນຕັດສິນມາຈາກການຈັບຄູ່ຕົວຢ່າງ ຫຼື ກົດເກນສຳຮອງ.', + previewPlaceholder: 'ປ້ອນຂໍ້ຄວາມຄຳຮ້ອງຂໍ', + confidence: 'ຄວາມໝັ້ນໃຈ', + bestSampleSimilarity: 'ຄວາມຄ້າຍຄືຂອງຕົວຢ່າງທີ່ດີທີ່ສຸດ', + source: 'ແຫຼ່ງທີ່ມາ', + sourceHeuristic: 'ອີງຕາມກົດເກນ', + sourceEmbedding: 'ການຈັບຄູ່ຕົວຢ່າງ', + latency: 'ຄວາມຫຼ້າຊ້າ', + decisionLogs: 'ລັອກການຕັດສິນໃຈ', + requestID: 'Request ID', + simple: 'ງ່າຍ', + complex: 'ຊັບຊ້ອນ', + sampleLabelSafe: 'ປອດໄພ', + sampleLabelReview: 'ກວດທົບທວນ', + sampleLabelBlock: 'ບລັອກ', + latencyMs: 'ຄວາມຫຼ້າຊ້າ (ms)', + smartRouteSettingGuide: + 'ຫຼັງຈາກເປີດໃຊ້ ມີພຽງຄຳຮ້ອງຂໍທີ່ໃຊ້ model=auto ເທົ່ານັ້ນທີ່ຈະເປີດ Smart Route. ກຸ່ມແບບງ່າຍໃຊ້ສຳລັບວຽກຕົ້ນທຶນຕ່ຳ; ກຸ່ມແບບຊັບຊ້ອນໃຊ້ສຳລັບວິເຄາະໂຄດ, ອອກແບບສະຖາປັດຕະຍະກຳ, ແກ້ໄຂບັນຫາ ແລະ ວຽກຄ້າຍຄືກັນ.', + sampleLabelPlaceholder: 'simple / complex / high', + sampleImportPlaceholder: 'ໜຶ່ງຕົວຢ່າງຕໍ່ແຖວ', }, - agent: { - common: 'ທົ່ວໄປ', + skillsHub: { + title: 'ສູນລວມທັກສະ (Skills Hub)', + upload: 'ອັບໂຫຼດທັກສະ', + importSkill: 'ນຳເຂົ້າທັກສະ', + repositoryAddress: 'ທີ່ຢູ່ຄັງເກັບ (Repository)', + repositoryGithubOnly: 'ຮອງຮັບສະເພາະທີ່ຢູ່ GitHub ເທົ່ານັ້ນ', + repositoryRef: 'Branch ຫຼື Tag', + repositoryRefPlaceholder: 'ຄ່າເລີ່ມຕົ້ນແມ່ນ main, ຖ້າລົ້ມເຫຼວຈະລອງ master', + repositoryDownloadPreview: 'URL ດາວໂຫຼດປາຍທາງ:', + packageURL: 'URL ຂອງແພັກເກັດ', + packageURLPlaceholder: 'ປ້ອນທີ່ຢູ່ແພັກເກັດ .zip', + importSuccess: 'ນຳເຂົ້າທັກສະສຳເລັດແລ້ວ ແລະ ກຳລັງລໍຖ້າການກວດສອບ.', + source: 'ແຫຼ່ງທີ່ມາ', + applicableAgent: 'Agent ທີ່ໃຊ້ໄດ້', + overview: 'ພາບລວມ', + versionHistory: 'ປະຫວັດເວີຊັນ', + publishedAt: 'ເຜີຍແຜ່ເມື່ອ', + versionMarker: 'ເຄື່ອງໝາຍ', + currentVersion: 'ເວີຊັນປັດຈຸບັນ', + latestVersion: 'ເວີຊັນຫຼ້າສຸດ', + latestPublished: 'ເຜີຍແຜ່ຫຼ້າສຸດ', + riskLevel: 'ລະດັບຄວາມສ່ຽງ', + riskReferenceHint: + 'ລະດັບຄວາມສ່ຽງຖືກສ້າງຂຶ້ນໂດຍອັດຕະໂນມັດຈາກເນື້ອຫາແພັກເກັດ Skill ເພື່ອໃຊ້ເປັນບ່ອນອີງໃນການກວດສອບເທົ່ານັ້ນ.\nຕ່ຳ: ບໍ່ພົບຄວາມສ່ຽງທີ່ຊັດເຈນ\nກາງ: ມີສະຄຣິບ, dependencies, URL ພາຍນອກ ຫຼື ຕົວປ່ຽນສະພາບແວດລ້ອມ\nສູງ: ມີການສັ່ງການໄລຍະໄກ, ຂໍ້ມູນອ່ອນໄຫວ ຫຼື ຄຳສັ່ງທີ່ອັນຕະລາຍ', + riskCheckResult: 'ຜົນການກວດສອບຄວາມປອດໄພ', + noRiskFound: 'ບໍ່ພົບຄວາມສ່ຽງທີ່ຊັດເຈນ.', + riskFilePath: 'ເສັ້ນທາງໄຟລ໌', + riskKeyword: 'ຄຳສຳຄັນ ຫຼື ກົດທີ່ກົງກັນ', + riskDescription: 'ລາຍລະອຽດຄວາມສ່ຽງ', + publishHighRiskConfirm: + 'Skill ນີ້ມີລາຍການທີ່ມີຄວາມສ່ຽງສູງ ແລະ ອາດມີການລັນສະຄຣິບ, ດາວໂຫຼດພາຍນອກ ຫຼື ເຂົ້າເຖິງຂໍ້ມູນອ່ອນໄຫວ. ຢືນຢັນການເຜີຍແຜ່ຫຼືບໍ່?', + approve: 'ອະນຸມັດ', + reject: 'ປະຕິເສດ', + publish: 'ເຜີຍແຜ່', + disable: 'ຍົກເລີກການເຜີຍແຜ່', + customTarget: 'Agent ທີ່ກຳນົດເອງ', + addCustomTarget: 'ເພີ່ມ Agent', + installToTarget: 'ຕິດຕັ້ງໃສ່ Agent ທີ່ກຳນົດເອງ', + hostSkillDir: 'ໂຟນເດີ Skill', + hostSkillDirHelper: 'ປ້ອນເສັ້ນທາງໂຟນເດີ Skill ໃນ Node.', + installMethod: 'ວິທີການຕິດຕັ້ງ', + copy: 'ຄັດລອກ', + extract: 'ແຕກໄຟລ໌', + postInstallCommand: 'ຄຳສັ່ງຫຼັງການຕິດຕັ້ງ', + localSource: 'ອັບໂຫຼດຈາກເຄື່ອງ', + uploadDragTitle: 'ລາກແພັກເກັດ Skill ມາວາງທີ່ນີ້ ຫຼື ຄລິກເພື່ອອັບໂຫຼດ', + uploadFormatLabel: 'ຮູບແບບ:', + uploadFormatValue: '.zip, .7z, .tar, .tar.gz', + uploadSizeLabel: 'ຂະໜາດໄຟລ໌:', + uploadSizeValue: 'ບໍ່ເກີນ 5 MB ຕໍ່ໄຟລ໌', + uploadRequirementLabel: 'ຂໍ້ກຳນົດແພັກເກັດ:', + uploadRequirementPrefix: 'ແພັກເກັດ Skill ຕ້ອງມີ', + onlySupportedArchive: 'ຮອງຮັບສະເພາະແພັກເກັດ Skill ນາມສະກຸນ .zip, .7z, .tar, ແລະ .tar.gz ເທົ່ານັ້ນ', + uploadSizeExceeded: 'ແພັກເກັດ Skill ແຕ່ລະອັນຕ້ອງບໍ່ເກີນ 5 MB', + uploadSuccess: 'ອັບໂຫຼດ Skill ສຳເລັດແລ້ວ ແລະ ກຳລັງລໍຖ້າການກວດສອບ.', + versionAutoFillPlaceholder: 'ກວດພົບອັດຕະໂນມັດຈາກຊື່ໄຟລ໌ຖ້າເປັນໄປໄດ້. ຢືນຢັນ ຫຼື ປ້ອນເອງ', + metadataOverwriteConfirm: 'ເວີຊັນໃນແພັກເກັດ Skill ຕ່າງຈາກທີ່ປ້ອນໄວ້. ຕ້ອງການໃຊ້ຂໍ້ມູນທີ່ປ້ອນໄວ້ແທນຫຼືບໍ່?', + metadataOverwriteConfirmWithVersions: + 'ເວີຊັນໃນແພັກເກດ Skill ແຕກຕ່າງຈາກຄ່າທີ່ປ້ອນປັດຈຸບັນ. ເວີຊັນແພັກເກດ: {packageVersion}; ເວີຊັນທີ່ປ້ອນ: {inputVersion}. ໃຊ້ຄ່າທີ່ປ້ອນປັດຈຸບັນແທນບໍ?', + offlineNotice: + 'ສະພາບແວດລ້ອມປັດຈຸບັນແມ່ນອອຟລາຍ. ສາມາດຕິດຕັ້ງໄດ້ສະເພາະ Skill ຈາກ Skill Store ພາຍໃນເຄື່ອງເທົ່ານັ້ນ.', + publishConfirm: 'ເຜີຍແຜ່ Skill ນີ້ຫຼືບໍ່? Skill ທີ່ເຜີຍແຜ່ແລ້ວສາມາດຕິດຕັ້ງໄດ້ຈາກ Skill Store ພາຍໃນເຄື່ອງ.', + disableConfirm: 'ຍົກເລີກການເຜີຍແຜ່ Skill ນີ້ຫຼືບໍ່? Skill ທີ່ຕິດຕັ້ງໃນ Agent ແລ້ວຈະບໍ່ໄດ້ຮັບຜົນກະທົບ.', + deleteConfirm: + 'ລຶບ Skill ນີ້ຫຼືບໍ່? ການດຳເນີນການນີ້ບໍ່ສາມາດກັບຄືນໄດ້. Skill ທີ່ຕິດຕັ້ງໃນ Agent ແລ້ວຈະບໍ່ໄດ້ຮັບຜົນກະທົບ.', + rejectConfirm: 'ປະຕິເສດການກວດສອບ Skill ນີ້ຫຼືບໍ່? ມັນຈະຖືກປ່ຽນສະຖານະເປັນ "ປະຕິເສດ".', + downloadPublishedOnly: 'ສາມາດດາວໂຫຼດໄດ້ສະເພາະແພັກເກັດ Skill ທີ່ເຜີຍແຜ່ແລ້ວເທົ່ານັ້ນ.', + deleteTargetConfirm: 'ລຶບ Agent ທີ່ກຳນົດເອງນີ້ຫຼືບໍ່? ຜູ້ໃຊ້ຈະບໍ່ສາມາດເລືອກມັນໄດ້ອີກ.', + noInstallTarget: 'ບໍ່ມີ Agent ທີ່ກຳນົດເອງໃຫ້ໃຊ້ງານ. ກະລຸນາກຳນົດເປົ້າໝາຍການຕິດຕັ້ງກ່ອນ.', + postInstallConfirm: 'ເປົ້າໝາຍນີ້ມີຄຳສັ່ງຫຼັງການຕິດຕັ້ງ. ກະລຸນາຢືນຢັນວ່າຄຳສັ່ງນັ້ນເຊື່ອຖືໄດ້ກ່ອນທີ່ຈະລັນ.', + status: { + pending: 'ລໍຖ້າການກວດສອບ', + approved: 'ອະນຸມັດແລ້ວ', + published: 'ເຜີຍແຜ່ແລ້ວ', + disabled: 'ຍົກເລີກການເຜີຍແຜ່', + rejected: 'ປະຕິເສດແລ້ວ', + deleted: 'ລຶບແລ້ວ', + }, + agent: { + common: 'ທົ່ວໄປ', + }, + risk: { + low: 'ຕ່ຳ', + medium: 'ກາງ', + high: 'ສູງ', + }, + riskType: { + script_file: 'ໄຟລ໌ສະຄຣິບ', + dependency_manifest: 'ໄຟລ໌ Dependency', + external_url: 'URL ພາຍນອກ', + environment_variable: 'ຕົວປ່ຽນສະພາບແວດລ້ອມ', + dockerfile: 'Dockerfile', + command_execution: 'ການລັນຄຳສັ່ງ', + remote_script_execution: 'ການລັນສະຄຣິບໄລຍະໄກ', + eval_execution: 'ການລັນແບບໄດນາມິກ (Eval)', + base64_execution: 'ການລັນຫຼັງຖອດລະຫັດ Base64', + privileged_command: 'ຄຳສັ່ງທີ່ຕ້ອງໃຊ້ສິດສູງ (Sudo)', + dangerous_delete: 'ຄຳສັ່ງລຶບທີ່ອັນຕະລາຍ', + world_writable_permission: 'ການກຳນົດສິດທີ່ມີຄວາມສ່ຽງສູງ', + credential: 'ສົງໄສວ່າເປັນຂໍ້ມູນປະຈຳຕົວ (Credential)', + sensitive_path: 'ເສັ້ນທາງອ່ອນໄຫວ', + suspicious_download_execute: 'ການດາວໂຫຼດ ແລະ ລັນທີ່ໜ້າສົງໄສ', + binary_content: 'ເນື້ອຫາໄຟລ໌ Binary', + scan_truncated: 'ການສະແກນຖືກຕັດຕອນ', + }, + riskDescriptionText: { + script_file: 'ມີໄຟລ໌ສະຄຣິບທີ່ອາດຈະລັນຄຳສັ່ງພາຍໃນເຄື່ອງ.', + dependency_manifest: 'ມີໄຟລ໌ dependency ທີ່ອາດຈະດຶງຂໍ້ມູນພາຍນອກລະຫວ່າງການຕິດຕັ້ງ.', + external_url: 'ມີ URL ພາຍນອກ. ກະລຸນາກວດສອບວ່າທີ່ຢູ່ປາຍທາງເຊື່ອຖືໄດ້.', + environment_variable: 'ມີການປະກາດຕົວປ່ຽນສະພາບແວດລ້ອມ. ກະລຸນາກວດສອບຈຸດປະສົງ ແລະ ຄ່າເລີ່ມຕົ້ນ.', + dockerfile: 'ມີ Dockerfile ທີ່ອາດຈະກຳນົດຕັກກະການສ້າງ Image ຫຼື Runtime.', + command_execution: 'ມີການເອີ້ນໃຊ້ຄຳສັ່ງ. ກະລຸນາກວດສອບວ່າຕັກກະການລັນນັ້ນເຊື່ອຖືໄດ້.', + remote_script_execution: 'ມີຕັກກະທີ່ດາວໂຫຼດ ແລະ ລັນສະຄຣິບໄລຍະໄກໂດຍກົງ.', + eval_execution: 'ມີການລັນແບບໄດນາມິກຜ່ານ eval.', + base64_execution: 'ມີຕັກກະທີ່ລັນເນື້ອຫາຫຼັງຈາກຖອດລະຫັດ Base64.', + privileged_command: 'ມີຄຳສັ່ງຍົກລະດັບສິດ sudo.', + dangerous_delete: 'ມີຄຳສັ່ງລຶບທີ່ອັນຕະລາຍ.', + world_writable_permission: 'ມີການປ່ຽນແປງສິດເປັນ chmod 777.', + credential: 'ສົງໄສວ່າມີ API Key, Token, Secret, ຫຼື ລະຫັດຜ່ານ.', + sensitive_path: 'ມີການເຂົ້າເຖິງໂຟນເດີ ຫຼື ໄຟລ໌ທີ່ອ່ອນໄຫວ.', + suspicious_download_execute: 'ມີຕັກກະການດາວໂຫຼດອອກພາຍນອກ ຫຼື ດາວໂຫຼດແລ້ວລັນທີ່ໜ້າສົງໄສ.', + binary_content: 'ໄຟລ໌ມີ NUL bytes ແລະ ອາດຈະຊື່ອງເນື້ອຫາທີ່ລັນໄດ້ ຫຼື binary.', + scan_truncated: 'ໄຟລ໌ມີຂະໜາດເກີນກຳນົດການສະແກນ. ເນື້ອຫາທີ່ບໍ່ໄດ້ສະແກນຍັງຕ້ອງກວດສອບດ້ວຍຕົນເອງ.', + }, }, - risk: { - low: 'ຕ່ຳ', - medium: 'ກາງ', - high: 'ສູງ', + benchmark: { + title: 'ທົດສອບປະສິດທິພາບ (Benchmark)', + launchCommand: 'ຄຳສັ່ງເລີ່ມຕົ້ນ', + retest: 'ທົດສອບໃໝ່', + statusRunning: 'ກຳລັງລັນ', + statusWaiting: 'ກຳລັງລໍຖ້າ', + base: 'ຂໍ້ມູນພື້ນຖານ', + backend: 'Backend', + baseUrl: 'Base URL', + endpoint: 'Endpoint', + tokenizer: 'Tokenizer', + tokenizerPlaceholder: + 'ເລືອກ ຫຼື ປ້ອນໂຟນເດີ tokenizer ພາຍໃນເຄື່ອງ, ເຊັ່ນ: /opt/1panel/tokenizers/DeepSeek-V3', + runConfig: 'ການກຳນົດຄ່າການລັນ', + rawResult: 'ຜົນລັບດິບ (Raw Result)', + resultMetrics: 'ຕົວຊີ້ວັດຜົນລັບ', + contextTokens: 'ຄວາມຍາວ Context', + contextTokensHelper: 'ຂີດຈຳກັດ input token ບວກກັບ output token ສຳລັບການທົດສອບນີ້.', + outputThroughput: 'Output Throughput', + outputThroughputHelper: 'ຈຳນວນ output tokens ທີ່ສ້າງໄດ້ຕໍ່ວິນາທີ. ຍິ່ງສູງຍິ່ງໄວ.', + totalThroughput: 'Total Throughput', + totalThroughputHelper: 'ຈຳນວນ input ແລະ output tokens ທີ່ປະມວນຜົນຕໍ່ວິນາທີ. ໃຊ້ວັດແທກຄວາມສາມາດໂດຍລວມ.', + firstTokenLatency: 'ຄວາມໜ່ວງຂອງ Token ທຳອິດ', + firstTokenLatencyHelper: 'ເວລາຕັ້ງແຕ່ສົ່ງຄຳຂໍຈົນເຖິງການໄດ້ຮັບ token ທຳອິດ. ຍິ່ງຕ່ຳຍິ່ງຕອບສະໜອງໄວ.', + tokenValueHelper: 'ປ້ອນຕົວເລກຈຳນວນເຕັມ ຫຼື ຄ່າ k, ເຊັ່ນ: 512, 1k, 32k', + numPrompts: 'ຈຳນວນ Prompt', + concurrency: 'ການເຮັດວຽກພ້ອມກັນ', + requestRate: 'ອັດຕາຄຳຂໍ', + requestRateUnlimited: 'ບໍ່ຈຳກັດ (max throughput)', + requestRateCustom: 'ກຳນົດ QPS ເອງ', + requestRateCustomPlaceholder: 'ຄຳຂໍຕໍ່ວິນາທີ, ເຊັ່ນ: 2.5', + successfulRequests: 'ຄຳຂໍທີ່ສຳເລັດ', + requestThroughput: 'Request Throughput', + mean: 'ຄ່າສະເລ່ຍ', + median: 'ຄ່າມັດທະຍະຖານ', + timeout: 'ໝົດເວລາ (ວິນາທີ)', + image: 'vLLM Image', + ignoreEos: 'ລະເວັ້ນ EOS', + extraHeaders: 'Headers ເພີ່ມເຕີມ', }, - riskType: { - script_file: 'ໄຟລ໌ສະຄຣິບ', - dependency_manifest: 'ໄຟລ໌ Dependency', - external_url: 'URL ພາຍນອກ', - environment_variable: 'ຕົວປ່ຽນສະພາບແວດລ້ອມ', - dockerfile: 'Dockerfile', - command_execution: 'ການລັນຄຳສັ່ງ', - remote_script_execution: 'ການລັນສະຄຣິບໄລຍະໄກ', - eval_execution: 'ການລັນແບບໄດນາມິກ (Eval)', - base64_execution: 'ການລັນຫຼັງຖອດລະຫັດ Base64', - privileged_command: 'ຄຳສັ່ງທີ່ຕ້ອງໃຊ້ສິດສູງ (Sudo)', - dangerous_delete: 'ຄຳສັ່ງລຶບທີ່ອັນຕະລາຍ', - world_writable_permission: 'ການກຳນົດສິດທີ່ມີຄວາມສ່ຽງສູງ', - credential: 'ສົງໄສວ່າເປັນຂໍ້ມູນປະຈຳຕົວ (Credential)', - sensitive_path: 'ເສັ້ນທາງອ່ອນໄຫວ', - suspicious_download_execute: 'ການດາວໂຫຼດ ແລະ ລັນທີ່ໜ້າສົງໄສ', - binary_content: 'ເນື້ອຫາໄຟລ໌ Binary', - scan_truncated: 'ການສະແກນຖືກຕັດຕອນ', + gpu: { + gpu: 'ຕິດຕາມ GPU', + gpuHelper: 'ລະບົບກວດບໍ່ພົບຄຳສັ່ງ NVIDIA-SMI ຫຼື XPU-SMI. ກະລຸນາກວດສອບ ແລະ ລອງໃໝ່!', + process: 'ຂໍ້ມູນໂປຣເຊສ', + processCount: 'ຈຳນວນໂປຣເຊສ', + type: 'ປະເພດ', + typeG: 'Graphics', + typeC: 'Compute', + typeCG: 'Compute+Graphics', + processName: 'ຊື່ໂປຣເຊສ', + shr: 'Shared Memory', + temperatureHelper: 'ອຸນຫະພູມ GPU ທີ່ສູງເກີນໄປອາດເຮັດໃຫ້ປະສິດທິພາບຫຼຸດລົງ', + gpuUtil: 'ການໃຊ້ງານ GPU', + temperature: 'ອຸນຫະພູມ', + performanceState: 'ສະຖານະປະສິດທິພາບ', + powerUsage: 'ການໃຊ້ພະລັງງານ', + memoryUsage: 'ການໃຊ້ໜ່ວຍຄວາມຈຳ', + fanSpeed: 'ຄວາມໄວພັດລົມ', + power: 'ພະລັງງານ', + powerCurrent: 'ພະລັງງານປັດຈຸບັນ', + powerLimit: 'ຂີດຈຳກັດພະລັງງານ', + memory: 'ໜ່ວຍຄວາມຈຳ', + memoryUsed: 'ໃຊ້ໄປແລ້ວ', + memoryTotal: 'ທັງໝົດ', + percent: 'ການນຳໃຊ້', + base: 'ຂໍ້ມູນພື້ນຖານ', + driverVersion: 'ເວີຊັນ Driver', + cudaVersion: 'ເວີຊັນ CUDA', + processMemoryUsage: 'ການໃຊ້ໜ່ວຍຄວາມຈຳ', + performanceStateHelper: 'ຈາກ P0 (ປະສິດທິພາບສູງສຸດ) ເຖິງ P12 (ຕ່ຳສຸດ)', + busID: 'Bus Address', + persistenceMode: 'Persistence Mode', + enabled: 'ເປີດໃຊ້ງານ', + disabled: 'ປິດໃຊ້ງານ', + persistenceModeHelper: 'Persistence mode ຊ່ວຍໃຫ້ຕອບສະໜອງງານໄດ້ໄວຂຶ້ນ ແຕ່ຈະກິນໄຟໃນໂໝດ Standby ຫຼາຍຂຶ້ນ', + displayActive: 'GPU Initialization', + displayActiveT: 'ແມ່ນ', + displayActiveF: 'ບໍ່', + ecc: 'ເຕັກໂນໂລຊີ ECC', + computeMode: 'ໂໝດການຄຳນວນ', + default: 'ເລີ່ມຕົ້ນ', + exclusiveProcess: 'Exclusive Process', + exclusiveThread: 'Exclusive Thread', + prohibited: 'ຖືກຫ້າມ', + defaultHelper: 'Default: ໂປຣເຊສສາມາດລັນພ້ອມກັນໄດ້', + exclusiveProcessHelper: 'Exclusive Process: ມີພຽງ context ດຽວທີ່ໃຊ້ GPU ໄດ້ ແຕ່ແບ່ງປັນໃຫ້ຫຼາຍ thread ໄດ້', + exclusiveThreadHelper: 'Exclusive Thread: ມີພຽງ thread ດຽວໃນ context ທີ່ໃຊ້ GPU ໄດ້', + prohibitedHelper: 'Prohibited: ບໍ່ອະນຸຍາດໃຫ້ລັນໂປຣເຊສພ້ອມກັນ', + migModeHelper: 'ໃຊ້ສຳລັບສ້າງ MIG instances ເພື່ອແຍກສ່ວນ GPU ທາງກາຍະພາບ.', + migModeNA: 'ບໍ່ຮອງຮັບ', + current: 'ຕິດຕາມແບບ Real-time', + history: 'ບັນທຶກຍ້ອນຫຼັງ', + notSupport: 'ເວີຊັນ ຫຼື driver ປັດຈຸບັນບໍ່ຮອງຮັບການສະແດງຄ່ານີ້.', }, - riskDescriptionText: { - script_file: 'ມີໄຟລ໌ສະຄຣິບທີ່ອາດຈະລັນຄຳສັ່ງພາຍໃນເຄື່ອງ.', - dependency_manifest: - 'ມີໄຟລ໌ dependency ທີ່ອາດຈະດຶງຂໍ້ມູນພາຍນອກລະຫວ່າງການຕິດຕັ້ງ.', - external_url: 'ມີ URL ພາຍນອກ. ກະລຸນາກວດສອບວ່າທີ່ຢູ່ປາຍທາງເຊື່ອຖືໄດ້.', - environment_variable: 'ມີການປະກາດຕົວປ່ຽນສະພາບແວດລ້ອມ. ກະລຸນາກວດສອບຈຸດປະສົງ ແລະ ຄ່າເລີ່ມຕົ້ນ.', - dockerfile: 'ມີ Dockerfile ທີ່ອາດຈະກຳນົດຕັກກະການສ້າງ Image ຫຼື Runtime.', - command_execution: - 'ມີການເອີ້ນໃຊ້ຄຳສັ່ງ. ກະລຸນາກວດສອບວ່າຕັກກະການລັນນັ້ນເຊື່ອຖືໄດ້.', - remote_script_execution: 'ມີຕັກກະທີ່ດາວໂຫຼດ ແລະ ລັນສະຄຣິບໄລຍະໄກໂດຍກົງ.', - eval_execution: 'ມີການລັນແບບໄດນາມິກຜ່ານ eval.', - base64_execution: 'ມີຕັກກະທີ່ລັນເນື້ອຫາຫຼັງຈາກຖອດລະຫັດ Base64.', - privileged_command: 'ມີຄຳສັ່ງຍົກລະດັບສິດ sudo.', - dangerous_delete: 'ມີຄຳສັ່ງລຶບທີ່ອັນຕະລາຍ.', - world_writable_permission: 'ມີການປ່ຽນແປງສິດເປັນ chmod 777.', - credential: 'ສົງໄສວ່າມີ API Key, Token, Secret, ຫຼື ລະຫັດຜ່ານ.', - sensitive_path: 'ມີການເຂົ້າເຖິງໂຟນເດີ ຫຼື ໄຟລ໌ທີ່ອ່ອນໄຫວ.', - suspicious_download_execute: 'ມີຕັກກະການດາວໂຫຼດອອກພາຍນອກ ຫຼື ດາວໂຫຼດແລ້ວລັນທີ່ໜ້າສົງໄສ.', - binary_content: 'ໄຟລ໌ມີ NUL bytes ແລະ ອາດຈະຊື່ອງເນື້ອຫາທີ່ລັນໄດ້ ຫຼື binary.', - scan_truncated: 'ໄຟລ໌ມີຂະໜາດເກີນກຳນົດການສະແກນ. ເນື້ອຫາທີ່ບໍ່ໄດ້ສະແກນຍັງຕ້ອງກວດສອບດ້ວຍຕົນເອງ.', + mcp: { + server: 'MCP Server', + baseUrl: 'ເສັ້ນທາງການເຂົ້າເຖິງພາຍນອກ', + baseUrlHelper: 'ຕົວຢ່າງ: http://192.168.1.2:8000', + ssePath: 'ເສັ້ນທາງ SSE', + ssePathHelper: 'ຕົວຢ່າງ: /sse, ລະວັງບໍ່ໃຫ້ຊ້ຳກັບ server ອື່ນ', + environment: 'ຕົວປ່ຽນສະພາບແວດລ້ອມ', + envKey: 'ຊື່ຕົວປ່ຽນ', + envValue: 'ຄ່າຕົວປ່ຽນ', + externalUrl: 'ທີ່ຢູ່ການເຊື່ອມຕໍ່ພາຍນອກ', + operatorHelper: 'ຈະດຳເນີນການ {1} ໃນ {0}, ຕ້ອງການຕໍ່ຫຼືບໍ່?', + domain: 'ທີ່ຢູ່ເຂົ້າເຖິງເລີ່ມຕົ້ນ', + domainHelper: 'ຕົວຢ່າງ: 192.168.1.1 ຫຼື example.com', + bindDomain: 'ຜູກເວັບໄຊ', + commandPlaceHolder: 'ປັດຈຸບັນຮອງຮັບສະເພາະຄຳສັ່ງ npx ແລະ binary', + importMcpJson: 'ນຳເຂົ້າການກຳນົດຄ່າ MCP Server', + importMcpJsonError: 'ໂຄງສ້າງ mcpServers ບໍ່ຖືກຕ້ອງ', + bindDomainHelper: + 'ຫຼັງຈາກຜູກເວັບໄຊແລ້ວ ມັນຈະປ່ຽນທີ່ຢູ່ເຂົ້າເຖິງຂອງ MCP Server ທັງໝົດ ແລະ ປິດການເຂົ້າເຖິງພອດຈາກພາຍນອກ', + outputTransport: 'ປະເພດ Output', + streamableHttpPath: 'ເສັ້ນທາງ Streaming', + streamableHttpPathHelper: 'ຕົວຢ່າງ: /mcp, ລະວັງບໍ່ໃຫ້ຊ້ຳກັບ Server ອື່ນ', + npxHelper: 'ເໝາະສຳລັບ mcp ທີ່ເລີ່ມດ້ວຍ npx ຫຼື binary', + uvxHelper: 'ເໝາະສຳລັບ mcp ທີ່ເລີ່ມດ້ວຍ uvx', + protocolVersion: 'ເວີຊັນ Protocol', + protocolVersionHelper: 'ໃຊ້ສະເພາະກັບ Streamable HTTP ເພື່ອເລີ່ມຕົ້ນ stdio MCP Server ອັດຕະໂນມັດ', + gatewayArgsHelper: + 'ອາກິວເມັນຈະຖືກຕໍ່ທ້າຍຄຳສັ່ງ supergateway. ບໍ່ສາມາດປ່ຽນອາກິວເມັນ transport, port, path ແລະ protocol ທີ່ 1Panel ຈັດການໄດ້', + testConnection: 'ທົດສອບການເຊື່ອມຕໍ່', + connectionSuccess: 'ເຊື່ອມຕໍ່ສຳເລັດ', + connectionFailed: 'ເຊື່ອມຕໍ່ລົ້ມເຫຼວ', + }, + tensorRT: { + llm: 'TensorRT LLM', + modelDir: 'ໂຟນເດີໂມເດວ', + commandHelper: 'ຖ້າຕ້ອງການເຂົ້າເຖິງຈາກພາຍນອກ ໃຫ້ກຳນົດພອດໃນຄຳສັ່ງໃຫ້ກົງກັບພອດຂອງແອັບພລິເຄຊັນ', + imageAlert: 'ເນື່ອງຈາກ Image ມີຂະໜາດໃຫຍ່ ແນະນຳໃຫ້ດາວໂຫຼດ Image ມາວາງໄວ້ໃນ server ກ່ອນການຕິດຕັ້ງ', + modelSpeedup: 'ເປີດໃຊ້ການເລັ່ງຄວາມໄວໂມເດວ', + modelType: 'ປະເພດໂມເດວ', }, }, - benchmark: { - title: 'ທົດສອບປະສິດທິພາບ (Benchmark)', - launchCommand: 'ຄຳສັ່ງເລີ່ມຕົ້ນ', - retest: 'ທົດສອບໃໝ່', - statusRunning: 'ກຳລັງລັນ', - statusWaiting: 'ກຳລັງລໍຖ້າ', - base: 'ຂໍ້ມູນພື້ນຖານ', - backend: 'Backend', - baseUrl: 'Base URL', - endpoint: 'Endpoint', - tokenizer: 'Tokenizer', - tokenizerPlaceholder: - 'ເລືອກ ຫຼື ປ້ອນໂຟນເດີ tokenizer ພາຍໃນເຄື່ອງ, ເຊັ່ນ: /opt/1panel/tokenizers/DeepSeek-V3', - runConfig: 'ການກຳນົດຄ່າການລັນ', - rawResult: 'ຜົນລັບດິບ (Raw Result)', - resultMetrics: 'ຕົວຊີ້ວັດຜົນລັບ', - contextTokens: 'ຄວາມຍາວ Context', - contextTokensHelper: 'ຂີດຈຳກັດ input token ບວກກັບ output token ສຳລັບການທົດສອບນີ້.', - outputThroughput: 'Output Throughput', - outputThroughputHelper: 'ຈຳນວນ output tokens ທີ່ສ້າງໄດ້ຕໍ່ວິນາທີ. ຍິ່ງສູງຍິ່ງໄວ.', - totalThroughput: 'Total Throughput', - totalThroughputHelper: 'ຈຳນວນ input ແລະ output tokens ທີ່ປະມວນຜົນຕໍ່ວິນາທີ. ໃຊ້ວັດແທກຄວາມສາມາດໂດຍລວມ.', - firstTokenLatency: 'ຄວາມໜ່ວງຂອງ Token ທຳອິດ', - firstTokenLatencyHelper: - 'ເວລາຕັ້ງແຕ່ສົ່ງຄຳຂໍຈົນເຖິງການໄດ້ຮັບ token ທຳອິດ. ຍິ່ງຕ່ຳຍິ່ງຕອບສະໜອງໄວ.', - tokenValueHelper: 'ປ້ອນຕົວເລກຈຳນວນເຕັມ ຫຼື ຄ່າ k, ເຊັ່ນ: 512, 1k, 32k', - numPrompts: 'ຈຳນວນ Prompt', - concurrency: 'ການເຮັດວຽກພ້ອມກັນ', - requestRate: 'ອັດຕາຄຳຂໍ', - requestRateUnlimited: 'ບໍ່ຈຳກັດ (max throughput)', - requestRateCustom: 'ກຳນົດ QPS ເອງ', - requestRateCustomPlaceholder: 'ຄຳຂໍຕໍ່ວິນາທີ, ເຊັ່ນ: 2.5', - successfulRequests: 'ຄຳຂໍທີ່ສຳເລັດ', - requestThroughput: 'Request Throughput', - mean: 'ຄ່າສະເລ່ຍ', - median: 'ຄ່າມັດທະຍະຖານ', - timeout: 'ໝົດເວລາ (ວິນາທີ)', - image: 'vLLM Image', - ignoreEos: 'ລະເວັ້ນ EOS', - extraHeaders: 'Headers ເພີ່ມເຕີມ', - }, - gpu: { - gpu: 'ຕິດຕາມ GPU', - gpuHelper: 'ລະບົບກວດບໍ່ພົບຄຳສັ່ງ NVIDIA-SMI ຫຼື XPU-SMI. ກະລຸນາກວດສອບ ແລະ ລອງໃໝ່!', - process: 'ຂໍ້ມູນໂປຣເຊສ', - processCount: 'ຈຳນວນໂປຣເຊສ', - type: 'ປະເພດ', - typeG: 'Graphics', - typeC: 'Compute', - typeCG: 'Compute+Graphics', - processName: 'ຊື່ໂປຣເຊສ', - shr: 'Shared Memory', - temperatureHelper: 'ອຸນຫະພູມ GPU ທີ່ສູງເກີນໄປອາດເຮັດໃຫ້ປະສິດທິພາບຫຼຸດລົງ', - gpuUtil: 'ການໃຊ້ງານ GPU', - temperature: 'ອຸນຫະພູມ', - performanceState: 'ສະຖານະປະສິດທິພາບ', - powerUsage: 'ການໃຊ້ພະລັງງານ', - memoryUsage: 'ການໃຊ້ໜ່ວຍຄວາມຈຳ', - fanSpeed: 'ຄວາມໄວພັດລົມ', - power: 'ພະລັງງານ', - powerCurrent: 'ພະລັງງານປັດຈຸບັນ', - powerLimit: 'ຂີດຈຳກັດພະລັງງານ', - memory: 'ໜ່ວຍຄວາມຈຳ', - memoryUsed: 'ໃຊ້ໄປແລ້ວ', - memoryTotal: 'ທັງໝົດ', - percent: 'ການນຳໃຊ້', - base: 'ຂໍ້ມູນພື້ນຖານ', - driverVersion: 'ເວີຊັນ Driver', - cudaVersion: 'ເວີຊັນ CUDA', - processMemoryUsage: 'ການໃຊ້ໜ່ວຍຄວາມຈຳ', - performanceStateHelper: 'ຈາກ P0 (ປະສິດທິພາບສູງສຸດ) ເຖິງ P12 (ຕ່ຳສຸດ)', - busID: 'Bus Address', - persistenceMode: 'Persistence Mode', - enabled: 'ເປີດໃຊ້ງານ', - disabled: 'ປິດໃຊ້ງານ', - persistenceModeHelper: - 'Persistence mode ຊ່ວຍໃຫ້ຕອບສະໜອງງານໄດ້ໄວຂຶ້ນ ແຕ່ຈະກິນໄຟໃນໂໝດ Standby ຫຼາຍຂຶ້ນ', - displayActive: 'GPU Initialization', - displayActiveT: 'ແມ່ນ', - displayActiveF: 'ບໍ່', - ecc: 'ເຕັກໂນໂລຊີ ECC', - computeMode: 'ໂໝດການຄຳນວນ', - default: 'ເລີ່ມຕົ້ນ', - exclusiveProcess: 'Exclusive Process', - exclusiveThread: 'Exclusive Thread', - prohibited: 'ຖືກຫ້າມ', - defaultHelper: 'Default: ໂປຣເຊສສາມາດລັນພ້ອມກັນໄດ້', - exclusiveProcessHelper: - 'Exclusive Process: ມີພຽງ context ດຽວທີ່ໃຊ້ GPU ໄດ້ ແຕ່ແບ່ງປັນໃຫ້ຫຼາຍ thread ໄດ້', - exclusiveThreadHelper: 'Exclusive Thread: ມີພຽງ thread ດຽວໃນ context ທີ່ໃຊ້ GPU ໄດ້', - prohibitedHelper: 'Prohibited: ບໍ່ອະນຸຍາດໃຫ້ລັນໂປຣເຊສພ້ອມກັນ', - migModeHelper: 'ໃຊ້ສຳລັບສ້າງ MIG instances ເພື່ອແຍກສ່ວນ GPU ທາງກາຍະພາບ.', - migModeNA: 'ບໍ່ຮອງຮັບ', - current: 'ຕິດຕາມແບບ Real-time', - history: 'ບັນທຶກຍ້ອນຫຼັງ', - notSupport: 'ເວີຊັນ ຫຼື driver ປັດຈຸບັນບໍ່ຮອງຮັບການສະແດງຄ່ານີ້.', - }, - mcp: { - server: 'MCP Server', - baseUrl: 'ເສັ້ນທາງການເຂົ້າເຖິງພາຍນອກ', - baseUrlHelper: 'ຕົວຢ່າງ: http://192.168.1.2:8000', - ssePath: 'ເສັ້ນທາງ SSE', - ssePathHelper: 'ຕົວຢ່າງ: /sse, ລະວັງບໍ່ໃຫ້ຊ້ຳກັບ server ອື່ນ', - environment: 'ຕົວປ່ຽນສະພາບແວດລ້ອມ', - envKey: 'ຊື່ຕົວປ່ຽນ', - envValue: 'ຄ່າຕົວປ່ຽນ', - externalUrl: 'ທີ່ຢູ່ການເຊື່ອມຕໍ່ພາຍນອກ', - operatorHelper: 'ຈະດຳເນີນການ {1} ໃນ {0}, ຕ້ອງການຕໍ່ຫຼືບໍ່?', - domain: 'ທີ່ຢູ່ເຂົ້າເຖິງເລີ່ມຕົ້ນ', - domainHelper: 'ຕົວຢ່າງ: 192.168.1.1 ຫຼື example.com', - bindDomain: 'ຜູກເວັບໄຊ', - commandPlaceHolder: 'ປັດຈຸບັນຮອງຮັບສະເພາະຄຳສັ່ງ npx ແລະ binary', - importMcpJson: 'ນຳເຂົ້າການກຳນົດຄ່າ MCP Server', - importMcpJsonError: 'ໂຄງສ້າງ mcpServers ບໍ່ຖືກຕ້ອງ', - bindDomainHelper: - 'ຫຼັງຈາກຜູກເວັບໄຊແລ້ວ ມັນຈະປ່ຽນທີ່ຢູ່ເຂົ້າເຖິງຂອງ MCP Server ທັງໝົດ ແລະ ປິດການເຂົ້າເຖິງພອດຈາກພາຍນອກ', - outputTransport: 'ປະເພດ Output', - streamableHttpPath: 'ເສັ້ນທາງ Streaming', - streamableHttpPathHelper: 'ຕົວຢ່າງ: /mcp, ລະວັງບໍ່ໃຫ້ຊ້ຳກັບ Server ອື່ນ', - npxHelper: 'ເໝາະສຳລັບ mcp ທີ່ເລີ່ມດ້ວຍ npx ຫຼື binary', - uvxHelper: 'ເໝາະສຳລັບ mcp ທີ່ເລີ່ມດ້ວຍ uvx', - protocolVersion: 'ເວີຊັນ Protocol', - protocolVersionHelper: - 'ໃຊ້ສະເພາະກັບ Streamable HTTP ເພື່ອເລີ່ມຕົ້ນ stdio MCP Server ອັດຕະໂນມັດ', - testConnection: 'ທົດສອບການເຊື່ອມຕໍ່', - connectionSuccess: 'ເຊື່ອມຕໍ່ສຳເລັດ', - connectionFailed: 'ເຊື່ອມຕໍ່ລົ້ມເຫຼວ', - }, - tensorRT: { - llm: 'TensorRT LLM', - modelDir: 'ໂຟນເດີໂມເດວ', - commandHelper: - 'ຖ້າຕ້ອງການເຂົ້າເຖິງຈາກພາຍນອກ ໃຫ້ກຳນົດພອດໃນຄຳສັ່ງໃຫ້ກົງກັບພອດຂອງແອັບພລິເຄຊັນ', - imageAlert: - 'ເນື່ອງຈາກ Image ມີຂະໜາດໃຫຍ່ ແນະນຳໃຫ້ດາວໂຫຼດ Image ມາວາງໄວ້ໃນ server ກ່ອນການຕິດຕັ້ງ', - modelSpeedup: 'ເປີດໃຊ້ການເລັ່ງຄວາມໄວໂມເດວ', - modelType: 'ປະເພດໂມເດວ', - }, -}, -container: { - createByCommand: 'ສ້າງດ້ວຍຄຳສັ່ງ', - importContainerBackupTip: 'ນຳເຂົ້າໄຟລ໌ສຳຮອງຄອນເທນເນີ, ຮອງຮັບສະເພາະ .tar.gz', - importComposeBackupTip: 'ນຳເຂົ້າໄຟລ໌ສຳຮອງ compose, ຮອງຮັບສະເພາະ .tar.gz', - stopContainerBeforeBackup: 'ຢຸດຄອນເທນເນີກ່ອນການສຳຮອງ', - stopComposeBeforeBackup: 'ຢຸດ compose ກ່ອນການສຳຮອງ', - stopBeforeBackupHelper: - 'ເມື່ອເປີດໃຊ້ງານ, ຄອນເທນເນີ ຫຼື ບໍລິການ compose ຈະຖືກຢຸດກ່ອນການສຳຮອງ ແລະ ຈະເລີ່ມໃໝ່ອັດຕະໂນມັດຫຼັງຈາກສຳເລັດ ເພື່ອຄວາມຖືກຕ້ອງຂອງຂໍ້ມູນ.', - commandInput: 'ປ້ອນຄຳສັ່ງ', - commandRule: 'ກະລຸນາປ້ອນຄຳສັ່ງ docker run ທີ່ຖືກຕ້ອງ!', - commandHelper: 'ຄຳສັ່ງນີ້ຈະລັນໃນ server ເພື່ອສ້າງຄອນເທນເນີ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - updateHelper1: 'ກວດພົບວ່າຄອນເທນເນີນີ້ນຳມາຈາກ App Store. ກະລຸນາສັງເກດສອງຂໍ້ດັ່ງນີ້:', - updateHelper2: - '1. ການປ່ຽນແປງປັດຈຸບັນຈະບໍ່ຖືກຊິງໂຄໄນກັບແອັບທີ່ຕິດຕັ້ງໃນ App Store.', - updateHelper3: - '2. ຖ້າທ່ານແກ້ໄຂແອັບໃນໜ້າທີ່ຕິດຕັ້ງແລ້ວ, ເນື້ອຫາທີ່ແກ້ໄຂໃນຕອນນີ້ຈະໃຊ້ການບໍ່ໄດ້.', - updateHelper4: 'ການແກ້ໄຂຄອນເທນເນີຕ້ອງມີການສ້າງໃໝ່ ແລະ ຂໍ້ມູນທີ່ບໍ່ໄດ້ເກັບໄວ້ຖາວອນຈະສູນຫາຍ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - containerList: 'ລາຍການຄອນເທນເນີ', - operatorHelper: 'ລັນ {0} ໃນຄອນເທນເນີຕໍ່ໄປນີ້. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - operatorAppHelper: 'ລັນ "{0}" ໃນຄອນເທນເນີເຫຼົ່ານີ້. ບໍລິການທີ່ກຳນົດລັນຢື່ອາດຈະໄດ້ຮັບຜົນກະທົບ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - containerDeleteHelper: - "ກວດພົບວ່າຄອນເທນເນີນີ້ນຳມາຈາກ App Store. ການລຶບຄອນເທນເນີຈະບໍ່ເປັນການລຶບອອກຈາກ 1Panel ຢ່າງຖາວອນ. ເພື່ອລຶບອອກທັງໝົດ ໃຫ້ໄປທີ່ App Store -> 'ຕິດຕັ້ງແລ້ວ' ຫຼື 'Runtime Environment'. ຕ້ອງການຕໍ່ຫຼືບໍ່?", - start: 'ເລີ່ມ', - stop: 'ຢຸດ', - restart: 'ເລີ່ມໃໝ່', - kill: 'ບັງຄັບຢຸດ (Kill)', - pause: 'ພັກຊົ່ວຄາວ', - unpause: 'ກັບມາເຮັດວຽກ', - rename: 'ປ່ຽນຊື່', - remove: 'ລຶບ', - removeAll: 'ລຶບທັງໝົດ', - containerPrune: 'ລ້າງຂໍ້ມູນ (Prune)', - containerPruneHelper1: 'ການດຳເນີນການນີ້ຈະລຶບຄອນເທນເນີທັງໝົດທີ່ຢູ່ໃນສະຖານະຢຸດ.', - containerPruneHelper2: - 'ຖ້າຄອນເທນເນີນຳມາຈາກ App Store, ທ່ານຕ້ອງໄປທີ່ "App Store -> ຕິດຕັ້ງແລ້ວ" ແລະ ຄລິກປຸ່ມ "ສ້າງໃໝ່" ເພື່ອຕິດຕັ້ງຄືນໃໝ່ຫຼັງຈາກລ້າງຂໍ້ມູນ.', - containerPruneHelper3: 'ການດຳເນີນການນີ້ບໍ່ສາມາດກັບຄືນໄດ້. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - imagePrune: 'ລ້າງຂໍ້ມູນ Image', - imagePruneSome: 'ລ້າງ Image ທີ່ບໍ່ມີຊື່ (none)', - imagePruneSomeEmpty: 'ບໍ່ມີ Image ທີ່ຕິດແທັກ "none" ໃຫ້ລ້າງ.', - imagePruneSomeHelper: 'ລ້າງ Image ທີ່ມີແທັກ "none" ທີ່ບໍ່ໄດ້ຖືກໃຊ້ໂດຍຄອນເທນເນີໃດໆ.', - imagePruneAll: 'ລ້າງ Image ທີ່ບໍ່ໄດ້ໃຊ້', - imagePruneAllEmpty: 'ບໍ່ມີ Image ທີ່ບໍ່ໄດ້ໃຊ້ໃຫ້ລ້າງ.', - imagePruneAllHelper: 'ລ້າງ Image ທັງໝົດທີ່ບໍ່ໄດ້ຖືກໃຊ້ໂດຍຄອນເທນເນີໃດໆ.', - networkPrune: 'ລ້າງ Network', - networkPruneHelper: 'ການດຳເນີນການນີ້ຈະລຶບ Network ທັງໝົດທີ່ບໍ່ໄດ້ໃຊ້. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - volumePrune: 'ລ້າງ Volume', - volumePruneHelper: 'ການດຳເນີນການນີ້ຈະລຶບ Volume ພາຍໃນເຄື່ອງທັງໝົດທີ່ບໍ່ໄດ້ໃຊ້. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - cleanSuccess: 'ດຳເນີນການສຳເລັດ, ຈຳນວນທີ່ລ້າງ: {0}!', - cleanSuccessWithSpace: - 'ດຳເນີນການສຳເລັດ. ຈຳນວນ disk ທີ່ລ້າງແມ່ນ {0}. ຄືນພື້ນທີ່ disk ໄດ້ {1}!', - unExposedPort: 'ທີ່ຢູ່ພອດປັດຈຸບັນແມ່ນ 127.0.0.1, ເຊິ່ງບໍ່ສາມາດເປີດໃຫ້ເຂົ້າເຖິງຈາກພາຍນອກໄດ້.', - upTime: 'ເວລາທີ່ເຮັດວຽກ', - fetch: 'ດຶງຂໍ້ມູນ', - lines: 'ຈຳນວນແຖວ', - linesHelper: 'ກະລຸນາປ້ອນຈຳນວນແຖວບັນທຶກທີ່ຖືກຕ້ອງ!', - downloadLinesHelper: 'ເລືອກ ຫຼື ປ້ອນຈຳນວນແຖວບັນທຶກທີ່ຈະດາວໂຫຼດ.', - lastDay: 'ມື້ທີ່ຜ່ານມາ', - last4Hour: '4 ຊົ່ວໂມງທີ່ຜ່ານມາ', - lastHour: 'ຊົ່ວໂມງທີ່ຜ່ານມາ', - last10Min: '10 ນາທີທີ່ຜ່ານມາ', - cleanLog: 'ລ້າງບັນທຶກ', - cleanLogscope: 'ປະເພດການລ້າງ', - downLogHelper1: 'ຈະດາວໂຫຼດບັນທຶກທັງໝົດຈາກຄອນເທນເນີ {0}. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - downLogHelper2: 'ຈະດາວໂຫຼດບັນທຶກ {1} ແຖວຫຼ້າສຸດຈາກຄອນເທນເນີ {0}. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - cleanLogHelper: 'ການດຳເນີນການນີ້ຕ້ອງມີການເລີ່ມຄອນເທນເນີໃໝ່ ແລະ ບໍ່ສາມາດກັບຄືນໄດ້. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - newName: 'ຊື່ໃໝ່', - workingDir: 'ໂຟນເດີເຮັດວຽກ', - composeFileMissing: 'ກວດບໍ່ພົບໄຟລ໌ Compose', - source: 'ການໃຊ້ຊັບພະຍາກອນ', - cpuUsage: 'ການໃຊ້ CPU', - cpuTotal: 'CPU ທັງໝົດ', - core: 'Core', - memUsage: 'ການໃຊ້ໜ່ວຍຄວາມຈຳ', - memTotal: 'ຂີດຈຳກັດໜ່ວຍຄວາມຈຳ', - memCache: 'Memory Cache', - loadSize: 'ກວດສອບຂະໜາດຄອນເທນເນີ', - ip: 'ທີ່ຢູ່ IP', - cpuShare: 'CPU Shares', - cpuShareHelper: - 'Docker ໃຊ້ຄ່າພື້ນຖານ 1024 ສຳລັບ CPU shares. ທ່ານສາມາດເພີ່ມຄ່ານີ້ເພື່ອໃຫ້ຄອນເທນເນີໄດ້ເວລາ CPU ຫຼາຍຂຶ້ນ.', - inputIpv4: 'ຕົວຢ່າງ: 192.168.1.1', - inputIpv6: 'ຕົວຢ່າງ: 2001:0db8:85a3:0000:0000:8a2e:0370:7334', - diskUsage: 'ການໃຊ້ Disk', - localVolume: 'Volume ເກັບຂໍ້ມູນພາຍໃນ', - buildCache: 'Build Cache', - usage: 'ໃຊ້ແລ້ວ: {0}, ທີ່ຄືນໄດ້: {1}', - clean: 'ຄືນພື້ນທີ່', - imageClean: 'ການລ້າງ Image ຈະລຶບ Image ທັງໝົດທີ່ບໍ່ໄດ້ໃຊ້. ການດຳເນີນການນີ້ບໍ່ສາມາດກັບຄືນໄດ້. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - containerClean: - 'ການລ້າງຄອນເທນເນີຈະລຶບຄອນເທນເນີທີ່ຢຸດຢູ່ທັງໝົດ (ລວມທັງແອັບທີ່ຢຸດຈາກ App Store). ການດຳເນີນການນີ້ບໍ່ສາມາດກັບຄືນໄດ້. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - sizeRw: 'ຂະໜາດ Layer ທີ່ຂຽນໄດ້', - sizeRwHelper: 'ຂະໜາດຂອງ writable layer ທີ່ເປັນຂອງຄອນເທນເນີນີ້ເທົ່ານັ້ນ', - sizeRootFs: 'ຂະໜາດສະເໝືອນ (Virtual Size)', - sizeRootFsHelper: 'ຂະໜາດລວມຂອງ image layers ທັງໝົດທີ່ຄອນເທນເນີໃຊ້ + container layer', - containerFromAppHelper: - 'ກວດພົບວ່າຄອນເທນເນີນີ້ນຳມາຈາກ App Store. ການດຳເນີນການອາດເຮັດໃຫ້ການແກ້ໄຂປັດຈຸບັນໃຊ້ການບໍ່ໄດ້.', - containerFromAppHelper1: - 'ຄລິກປຸ່ມ [Param] ໃນລາຍການແອັບທີ່ຕິດຕັ້ງເພື່ອເຂົ້າສູ່ໜ້າແກ້ໄຂ ແລະ ປ່ຽນຊື່ຄອນເທນເນີ.', - command: 'ຄຳສັ່ງ', - console: 'ການໂຕ້ຕອບຄອນເທນເນີ', - tty: 'ກຳນົດ pseudo-TTY (-t)', - openStdin: 'ເປີດ STDIN ຄ້າງໄວ້ແມ້ບໍ່ໄດ້ເຊື່ອມຕໍ່ (-i)', - custom: 'ກຳນົດເອງ', - emptyUser: 'ຖ້າຫວ່າງໄວ້ ຈະເຂົ້າສູ່ລະບົບດ້ວຍ user ເລີ່ມຕົ້ນ', - privileged: 'ສິດສູງສຸດ (Privileged)', - privilegedHelper: - 'ອະນຸຍາດໃຫ້ຄອນເທນເນີດຳເນີນການບາງຢ່າງດ້ວຍສິດສູງສຸດໃນ Host, ເຊິ່ງອາດເພີ່ມຄວາມສ່ຽງ. ກະລຸນາໃຊ້ດ້ວຍຄວາມລະມັດລະວັງ!', - upgradeHelper: 'ຊື່ຄັງເກັບ/ຊື່ Image: ເວີຊັນ Image', - upgradeWarning2: - 'ການອັບເກຣດຕ້ອງມີການສ້າງຄອນເທນເນີໃໝ່, ຂໍ້ມູນທີ່ບໍ່ໄດ້ເກັບໄວ້ຖາວອນຈະສູນຫາຍ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - oldImage: 'Image ປັດຈຸບັນ', - sameImageContainer: 'ຄອນເທນເນີທີ່ໃຊ້ Image ດຽວກັນ', - sameImageHelper: 'ຄອນເທນເນີທີ່ໃຊ້ Image ດຽວກັນສາມາດເລືອກເພື່ອອັບເກຣດພ້ອມກັນໄດ້', - targetImage: 'Image ປາຍທາງ', - imageLoadErr: 'ກວດບໍ່ພົບຊື່ Image ສຳລັບຄອນເທນເນີນີ້', - imageUpdateTagEmpty: 'ກວດບໍ່ພົບ Tag ຂອງ Image ທີ່ອັບເດດໄດ້', - appHelper: 'ຄອນເທນເນີນຳມາຈາກ App Store, ການອັບເກຣດອາດເຮັດໃຫ້ບໍລິການໃຊ້ງານບໍ່ໄດ້.', - resource: 'ຊັບພະຍາກອນ', - input: 'ປ້ອນເອງ', - forcePull: 'ດຶງ Image ໃໝ່ສະເໝີ', - forcePullHelper: 'ຈະລະເວັ້ນ Image ທີ່ມີຢູ່ໃນເຄື່ອງ ແລະ ດຶງເວີຊັນຫຼ້າສຸດຈາກ Registry.', - imageUpdateHelper: 'ກວດສອບແທັກດຽວກັນໃນ registry ແລະ ດຶງມາອັບເດດໃນເຄື່ອງເມື່ອມີການປ່ຽນແປງ.', - server: 'Host', - serverExample: '80, 80-88, ip:80 ຫຼື ip:80-88', - containerExample: '80 ຫຼື 80-88', - exposePort: 'ເປີດພອດ (Expose)', - exposeAll: 'ເປີດທຸກພອດ', - cmdHelper: 'ຕົວຢ່າງ: nginx -g "daemon off;"', - entrypointHelper: 'ຕົວຢ່າງ: docker-entrypoint.sh', - autoRemove: 'ລຶບອັດຕະໂນມັດ (Auto remove)', - cpuQuota: 'ຈຳນວນ CPU Cores', - memoryLimit: 'ໜ່ວຍຄວາມຈຳ', - limitHelper: 'ຖ້າຕັ້ງເປັນ 0 ໝາຍເຖິງບໍ່ຈຳກັດ. ຄ່າສູງສຸດແມ່ນ {0}', - macAddr: 'ທີ່ຢູ່ MAC', - mount: 'Mount', - volumeOption: 'Volume', - hostOption: 'Host', - serverPath: 'ເສັ້ນທາງ Server', - containerDir: 'ເສັ້ນທາງ Container', - volumeHelper: 'ກະລຸນາຢືນຢັນວ່າເນື້ອຫາໃນ volume ຖືກຕ້ອງ', - networkEmptyHelper: 'ກະລຸນາຢືນຢັນການເລືອກ network ຂອງຄອນເທນເນີໃຫ້ຖືກຕ້ອງ', - modeRW: 'ອ່ານ-ຂຽນ (RW)', - modeR: 'ອ່ານຢ່າງດຽວ (R)', - sharedLabel: 'ໂໝດການແຜ່ກະຈາຍ (Propagation)', - private: 'ສ່ວນຕົວ (Private)', - privateHelper: 'ການປ່ຽນແປງ mount ໃນຄອນເທນເນີ ແລະ host ຈະບໍ່ສົ່ງຜົນກະທົບຕໍ່ກັນ', - rprivate: 'Recursive Private', - rprivateHelper: 'ທຸກ mount ໃນຄອນເທນເນີຈະຖືກແຍກອອກຈາກ host ຢ່າງເດັດຂາດ', - shared: 'ແບ່ງປັນ (Shared)', - sharedHelper: 'ການປ່ຽນແປງ mount ໃນ host ແລະ ຄອນເທນເນີຈະເຫັນເຊິ່ງກັນ ແລະ ກັນ', - rshared: 'Recursive Shared', - rsharedHelper: 'ການປ່ຽນແປງ mount ທັງໝົດໃນ host ແລະ ຄອນເທນເນີຈະເຫັນເຊິ່ງກັນ ແລະ ກັນ', - slave: 'Slave', - slaveHelper: 'ຄອນເທນເນີເຫັນການປ່ຽນແປງ mount ຈາກ host ແຕ່ການປ່ຽນແປງຂອງມັນເອງບໍ່ສົ່ງຜົນຕໍ່ host', - rslave: 'Recursive Slave', - rslaveHelper: 'ທຸກ mount ໃນຄອນເທນເນີເຫັນການປ່ຽນແປງຈາກ host ແຕ່ບໍ່ສົ່ງຜົນຕໍ່ host', - mode: 'ໂໝດ', - env: 'ຕົວປ່ຽນສະພາບແວດລ້ອມ (Environments)', - restartPolicy: 'ນະໂຍບາຍການເລີ່ມໃໝ່', - always: 'ເລີ່ມໃໝ່ສະເໝີ (always)', - unlessStopped: 'ເລີ່ມໃໝ່ຍົກເວັ້ນຖືກສັ່ງຢຸດ (unless-stopped)', - onFailure: 'ເລີ່ມໃໝ່ເມື່ອລົ້ມເຫຼວ (on-failure)', - no: 'ບໍ່ຕ້ອງເລີ່ມໃໝ່ (never)', - refreshTime: 'ໄລຍະການໂຫຼດຂໍ້ມູນໃໝ່', - cache: 'Cache', - image: 'Image', - imagePull: 'ດຶງ Image (Pull)', - imagePullHelper: - 'ສາມາດເລືອກໄດ້ຫຼາຍ Image, ກົດ Enter ຫຼັງຈາກປ້ອນແຕ່ລະ Image ເພື່ອຕໍ່', - imagePush: 'ສົ່ງ Image (Push)', - imagePushHelper: - 'ກວດພົບວ່າ Image ນີ້ມີຫຼາຍແທັກ. ກະລຸນາຢືນຢັນຊື່ Image ທີ່ຈະສົ່ງ: {0}', - imageDelete: 'ລຶບ Image', - repoName: 'Container registry', - imageName: 'ຊື່ Image', - pull: 'ດຶງຂໍ້ມູນ (Pull)', - path: 'ເສັ້ນທາງ', - importImage: 'ນຳເຂົ້າ', - buildArgs: 'Build Arguments', - imageBuild: 'ສ້າງ (Build)', - pathSelect: 'ເລືອກເສັ້ນທາງ', - label: 'ປ້າຍຊື່ (Label)', - imageTag: 'ແທັກ Image', - imageTagHelper: 'ຮອງຮັບການຕັ້ງຫຼາຍແທັກ, ກົດ Enter ຫຼັງຈາກປ້ອນແຕ່ລະແທັກ', - push: 'ສົ່ງຂໍ້ມູນ (Push)', - fileName: 'ຊື່ໄຟລ໌', - export: 'ສົ່ງອອກ (Export)', - exportImage: 'ສົ່ງອອກ Image', - size: 'ຂະໜາດ', - tag: 'ແທັກ', - tagHelper: 'ໜຶ່ງລາຍການຕໍ່ແຖວ. ຕົວຢ່າງ:\nkey1=value1\nkey2=value2', - imageNameHelper: 'ຊື່ Image ແລະ ແທັກ, ຕົວຢ່າງ: nginx:latest', - cleanBuildCache: 'ລ້າງ Build Cache', - delBuildCacheHelper: - 'ການດຳເນີນການນີ້ຈະລຶບໄຟລ໌ cache ທັງໝົດທີ່ສ້າງຂຶ້ນລະຫວ່າງການ build ແລະ ບໍ່ສາມາດກັບຄືນໄດ້. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - urlWarning: 'Prefix ຂອງ URL ບໍ່ຈຳເປັນຕ້ອງລວມ http:// ຫຼື https://. ກະລຸນາແກ້ໄຂ.', - network: 'Network', - networkHelper: 'ການດຳເນີນການນີ້ອາດເຮັດໃຫ້ບາງແອັບພລິເຄຊັນ ແລະ runtime ໃຊ້ການບໍ່ໄດ້. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - networkName: 'ຊື່', - driver: 'Driver', - option: 'ຕົວເລືອກ', - attachable: 'ສາມາດເຊື່ອມຕໍ່ໄດ້ (Attachable)', - parentNetworkCard: 'ກາດເຄືອຂ່າຍຫຼັກ (Parent Card)', - subnet: 'Subnet', - scope: 'ຊ່ວງ IP', - gateway: 'Gateway', - auxAddress: 'IP ທີ່ຍົກເວັ້ນ', - volume: 'Volume', - volumeDir: 'ໂຟນເດີ Volume', - nfsEnable: 'ເປີດໃຊ້ການເກັບຂໍ້ມູນ NFS', - nfsAddress: 'ທີ່ຢູ່ (Address)', - mountpoint: 'Mountpoint', - mountpointNFSHelper: 'ຕົວຢ່າງ: /nfs, /nfs-share', - options: 'ຕົວເລືອກເພີ່ມເຕີມ', - repo: 'ຄັງເກັບ (Repository)', - httpRepoHelper: 'ການຈັດການຄັງເກັບປະເພດ HTTP ຕ້ອງມີການເລີ່ມບໍລິການ Docker ໃໝ່.', - httpRepo: 'ການເລືອກ protocol HTTP ຕ້ອງເລີ່ມ Docker ໃໝ່ເພື່ອເພີ່ມເຂົ້າໃນ insecure registries.', - delInsecure: 'ລຶບລາຍການທີ່ບໍ່ປອດໄພ', - delInsecureHelper: 'ຈະເລີ່ມບໍລິການ Docker ໃໝ່ເພື່ອລຶບອອກຈາກ insecure registries. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - downloadUrl: 'Server', - imageRepo: 'ຄັງ Image', - repoHelper: 'ລວມເຖິງ mirror repository/organization/project ຫຼືບໍ່?', - auth: 'ຕ້ອງການການຢືນຢັນຕົວຕົນ', - mirrorHelper: - 'ຖ້າມີຫຼາຍ mirror, ຕ້ອງຂຶ້ນແຖວໃໝ່, ຕົວຢ່າງ:\nhttp://xxxxxx.m.daocloud.io \nhttps://xxxxxx.mirror.aliyuncs.com', - registrieHelper: - 'ຖ້າມີຫຼາຍຄັງສ່ວນຕົວ, ຕ້ອງຂຶ້ນແຖວໃໝ່, ຕົວຢ່າງ:\n172.16.10.111:8081 \n172.16.10.112:8081', - compose: 'Compose', - composeFile: 'ໄຟລ໌ Compose', - fromChangeHelper: 'ການປ່ຽນແຫຼ່ງທີ່ມາຈະລ້າງເນື້ອຫາທີ່ແກ້ໄຂໄວ້. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - composePathHelper: 'ເສັ້ນທາງບັນທຶກໄຟລ໌ກຳນົດຄ່າ: {0}', - composeHelper: - 'Compose ທີ່ສ້າງຜ່ານ 1Panel editor ຫຼື template ຈະຖືກບັນທຶກໄວ້ໃນໂຟນເດີ {0}/docker/compose.', - deleteFile: 'ລຶບໄຟລ໌', - deleteComposeHelper: - 'ລຶບໄຟລ໌ທັງໝົດທີ່ກ່ຽວຂ້ອງກັບ compose, ລວມທັງໄຟລ໌ກຳນົດຄ່າ ແລະ ໄຟລ໌ຂໍ້ມູນຖາວອນ. ກະລຸນາເຮັດດ້ວຍຄວາມລະມັດລະວັງ!', - deleteCompose: '" ລຶບ compose ນີ້.', - composeDirectory: 'ໂຟນເດີ Compose', - template: 'Template', - composeTemplate: 'Template ຂອງ Compose', - content: 'ເນື້ອຫາ', - contentEmpty: 'ເນື້ອຫາ Compose ບໍ່ສາມາດຫວ່າງໄດ້!', - containerNumber: 'ຈຳນວນຄອນເທນເນີ', - containerStatus: 'ສະຖານະຄອນເທນເນີ', - exited: 'ຢຸດແລ້ວ', - running: 'ກຳລັງລັນ ( {0} / {1} )', - composeDetailHelper: - 'Compose ນີ້ຖືກສ້າງຈາກພາຍນອກ 1Panel. ບໍ່ຮອງຮັບການສັ່ງເລີ່ມ ແລະ ຢຸດ.', - composeOperatorHelper: 'ຈະດຳເນີນການ {1} ໃນ {0}. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - composeDownHelper: 'ຈະຢຸດ ແລະ ລຶບຄອນເທນເນີ ແລະ network ທັງໝົດພາຍໃຕ້ compose {0}. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - composeEnvHelper2: - 'Compose ນີ້ຖືກສ້າງໂດຍ 1Panel App Store. ກະລຸນາແກ້ໄຂຕົວປ່ຽນສະພາບແວດລ້ອມໃນແອັບທີ່ຕິດຕັ້ງແລ້ວ.', - composeContentPlaceholder: 'ຂຽນ ຫຼື ວາງເນື້ອຫາໄຟລ໌ docker-compose ຂອງທ່ານທີ່ນີ້', + container: { + createByCommand: 'ສ້າງດ້ວຍຄຳສັ່ງ', + importContainerBackupTip: 'ນຳເຂົ້າໄຟລ໌ສຳຮອງຄອນເທນເນີ, ຮອງຮັບສະເພາະ .tar.gz', + importComposeBackupTip: 'ນຳເຂົ້າໄຟລ໌ສຳຮອງ compose, ຮອງຮັບສະເພາະ .tar.gz', + stopContainerBeforeBackup: 'ຢຸດຄອນເທນເນີກ່ອນການສຳຮອງ', + stopComposeBeforeBackup: 'ຢຸດ compose ກ່ອນການສຳຮອງ', + stopBeforeBackupHelper: + 'ເມື່ອເປີດໃຊ້ງານ, ຄອນເທນເນີ ຫຼື ບໍລິການ compose ຈະຖືກຢຸດກ່ອນການສຳຮອງ ແລະ ຈະເລີ່ມໃໝ່ອັດຕະໂນມັດຫຼັງຈາກສຳເລັດ ເພື່ອຄວາມຖືກຕ້ອງຂອງຂໍ້ມູນ.', + commandInput: 'ປ້ອນຄຳສັ່ງ', + commandRule: 'ກະລຸນາປ້ອນຄຳສັ່ງ docker run ທີ່ຖືກຕ້ອງ!', + commandHelper: 'ຄຳສັ່ງນີ້ຈະລັນໃນ server ເພື່ອສ້າງຄອນເທນເນີ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + updateHelper1: 'ກວດພົບວ່າຄອນເທນເນີນີ້ນຳມາຈາກ App Store. ກະລຸນາສັງເກດສອງຂໍ້ດັ່ງນີ້:', + updateHelper2: '1. ການປ່ຽນແປງປັດຈຸບັນຈະບໍ່ຖືກຊິງໂຄໄນກັບແອັບທີ່ຕິດຕັ້ງໃນ App Store.', + updateHelper3: '2. ຖ້າທ່ານແກ້ໄຂແອັບໃນໜ້າທີ່ຕິດຕັ້ງແລ້ວ, ເນື້ອຫາທີ່ແກ້ໄຂໃນຕອນນີ້ຈະໃຊ້ການບໍ່ໄດ້.', + updateHelper4: 'ການແກ້ໄຂຄອນເທນເນີຕ້ອງມີການສ້າງໃໝ່ ແລະ ຂໍ້ມູນທີ່ບໍ່ໄດ້ເກັບໄວ້ຖາວອນຈະສູນຫາຍ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + containerList: 'ລາຍການຄອນເທນເນີ', + operatorHelper: 'ລັນ {0} ໃນຄອນເທນເນີຕໍ່ໄປນີ້. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + operatorAppHelper: + 'ລັນ "{0}" ໃນຄອນເທນເນີເຫຼົ່ານີ້. ບໍລິການທີ່ກຳນົດລັນຢື່ອາດຈະໄດ້ຮັບຜົນກະທົບ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + containerDeleteHelper: + "ກວດພົບວ່າຄອນເທນເນີນີ້ນຳມາຈາກ App Store. ການລຶບຄອນເທນເນີຈະບໍ່ເປັນການລຶບອອກຈາກ 1Panel ຢ່າງຖາວອນ. ເພື່ອລຶບອອກທັງໝົດ ໃຫ້ໄປທີ່ App Store -> 'ຕິດຕັ້ງແລ້ວ' ຫຼື 'Runtime Environment'. ຕ້ອງການຕໍ່ຫຼືບໍ່?", + start: 'ເລີ່ມ', + stop: 'ຢຸດ', + restart: 'ເລີ່ມໃໝ່', + kill: 'ບັງຄັບຢຸດ (Kill)', + pause: 'ພັກຊົ່ວຄາວ', + unpause: 'ກັບມາເຮັດວຽກ', + rename: 'ປ່ຽນຊື່', + remove: 'ລຶບ', + removeAll: 'ລຶບທັງໝົດ', + containerPrune: 'ລ້າງຂໍ້ມູນ (Prune)', + containerPruneHelper1: 'ການດຳເນີນການນີ້ຈະລຶບຄອນເທນເນີທັງໝົດທີ່ຢູ່ໃນສະຖານະຢຸດ.', + containerPruneHelper2: + 'ຖ້າຄອນເທນເນີນຳມາຈາກ App Store, ທ່ານຕ້ອງໄປທີ່ "App Store -> ຕິດຕັ້ງແລ້ວ" ແລະ ຄລິກປຸ່ມ "ສ້າງໃໝ່" ເພື່ອຕິດຕັ້ງຄືນໃໝ່ຫຼັງຈາກລ້າງຂໍ້ມູນ.', + containerPruneHelper3: 'ການດຳເນີນການນີ້ບໍ່ສາມາດກັບຄືນໄດ້. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + imagePrune: 'ລ້າງຂໍ້ມູນ Image', + imagePruneSome: 'ລ້າງ Image ທີ່ບໍ່ມີຊື່ (none)', + imagePruneSomeEmpty: 'ບໍ່ມີ Image ທີ່ຕິດແທັກ "none" ໃຫ້ລ້າງ.', + imagePruneSomeHelper: 'ລ້າງ Image ທີ່ມີແທັກ "none" ທີ່ບໍ່ໄດ້ຖືກໃຊ້ໂດຍຄອນເທນເນີໃດໆ.', + imagePruneAll: 'ລ້າງ Image ທີ່ບໍ່ໄດ້ໃຊ້', + imagePruneAllEmpty: 'ບໍ່ມີ Image ທີ່ບໍ່ໄດ້ໃຊ້ໃຫ້ລ້າງ.', + imagePruneAllHelper: 'ລ້າງ Image ທັງໝົດທີ່ບໍ່ໄດ້ຖືກໃຊ້ໂດຍຄອນເທນເນີໃດໆ.', + networkPrune: 'ລ້າງ Network', + networkPruneHelper: 'ການດຳເນີນການນີ້ຈະລຶບ Network ທັງໝົດທີ່ບໍ່ໄດ້ໃຊ້. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + volumePrune: 'ລ້າງ Volume', + volumePruneHelper: 'ການດຳເນີນການນີ້ຈະລຶບ Volume ພາຍໃນເຄື່ອງທັງໝົດທີ່ບໍ່ໄດ້ໃຊ້. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + cleanSuccess: 'ດຳເນີນການສຳເລັດ, ຈຳນວນທີ່ລ້າງ: {0}!', + cleanSuccessWithSpace: 'ດຳເນີນການສຳເລັດ. ຈຳນວນ disk ທີ່ລ້າງແມ່ນ {0}. ຄືນພື້ນທີ່ disk ໄດ້ {1}!', + unExposedPort: 'ທີ່ຢູ່ພອດປັດຈຸບັນແມ່ນ 127.0.0.1, ເຊິ່ງບໍ່ສາມາດເປີດໃຫ້ເຂົ້າເຖິງຈາກພາຍນອກໄດ້.', + upTime: 'ເວລາທີ່ເຮັດວຽກ', + fetch: 'ດຶງຂໍ້ມູນ', + lines: 'ຈຳນວນແຖວ', + linesHelper: 'ກະລຸນາປ້ອນຈຳນວນແຖວບັນທຶກທີ່ຖືກຕ້ອງ!', + downloadLinesHelper: 'ເລືອກ ຫຼື ປ້ອນຈຳນວນແຖວບັນທຶກທີ່ຈະດາວໂຫຼດ.', + lastDay: 'ມື້ທີ່ຜ່ານມາ', + last4Hour: '4 ຊົ່ວໂມງທີ່ຜ່ານມາ', + lastHour: 'ຊົ່ວໂມງທີ່ຜ່ານມາ', + last10Min: '10 ນາທີທີ່ຜ່ານມາ', + cleanLog: 'ລ້າງບັນທຶກ', + cleanLogscope: 'ປະເພດການລ້າງ', + downLogHelper1: 'ຈະດາວໂຫຼດບັນທຶກທັງໝົດຈາກຄອນເທນເນີ {0}. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + downLogHelper2: 'ຈະດາວໂຫຼດບັນທຶກ {1} ແຖວຫຼ້າສຸດຈາກຄອນເທນເນີ {0}. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + cleanLogHelper: 'ການດຳເນີນການນີ້ຕ້ອງມີການເລີ່ມຄອນເທນເນີໃໝ່ ແລະ ບໍ່ສາມາດກັບຄືນໄດ້. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + newName: 'ຊື່ໃໝ່', + workingDir: 'ໂຟນເດີເຮັດວຽກ', + composeFileMissing: 'ກວດບໍ່ພົບໄຟລ໌ Compose', + source: 'ການໃຊ້ຊັບພະຍາກອນ', + cpuUsage: 'ການໃຊ້ CPU', + cpuTotal: 'CPU ທັງໝົດ', + core: 'Core', + memUsage: 'ການໃຊ້ໜ່ວຍຄວາມຈຳ', + memTotal: 'ຂີດຈຳກັດໜ່ວຍຄວາມຈຳ', + memCache: 'Memory Cache', + loadSize: 'ກວດສອບຂະໜາດຄອນເທນເນີ', + ip: 'ທີ່ຢູ່ IP', + cpuShare: 'CPU Shares', + cpuShareHelper: + 'Docker ໃຊ້ຄ່າພື້ນຖານ 1024 ສຳລັບ CPU shares. ທ່ານສາມາດເພີ່ມຄ່ານີ້ເພື່ອໃຫ້ຄອນເທນເນີໄດ້ເວລາ CPU ຫຼາຍຂຶ້ນ.', + inputIpv4: 'ຕົວຢ່າງ: 192.168.1.1', + inputIpv6: 'ຕົວຢ່າງ: 2001:0db8:85a3:0000:0000:8a2e:0370:7334', + diskUsage: 'ການໃຊ້ Disk', + localVolume: 'Volume ເກັບຂໍ້ມູນພາຍໃນ', + buildCache: 'Build Cache', + usage: 'ໃຊ້ແລ້ວ: {0}, ທີ່ຄືນໄດ້: {1}', + clean: 'ຄືນພື້ນທີ່', + imageClean: 'ການລ້າງ Image ຈະລຶບ Image ທັງໝົດທີ່ບໍ່ໄດ້ໃຊ້. ການດຳເນີນການນີ້ບໍ່ສາມາດກັບຄືນໄດ້. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + containerClean: + 'ການລ້າງຄອນເທນເນີຈະລຶບຄອນເທນເນີທີ່ຢຸດຢູ່ທັງໝົດ (ລວມທັງແອັບທີ່ຢຸດຈາກ App Store). ການດຳເນີນການນີ້ບໍ່ສາມາດກັບຄືນໄດ້. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + sizeRw: 'ຂະໜາດ Layer ທີ່ຂຽນໄດ້', + sizeRwHelper: 'ຂະໜາດຂອງ writable layer ທີ່ເປັນຂອງຄອນເທນເນີນີ້ເທົ່ານັ້ນ', + sizeRootFs: 'ຂະໜາດສະເໝືອນ (Virtual Size)', + sizeRootFsHelper: 'ຂະໜາດລວມຂອງ image layers ທັງໝົດທີ່ຄອນເທນເນີໃຊ້ + container layer', + containerFromAppHelper: + 'ກວດພົບວ່າຄອນເທນເນີນີ້ນຳມາຈາກ App Store. ການດຳເນີນການອາດເຮັດໃຫ້ການແກ້ໄຂປັດຈຸບັນໃຊ້ການບໍ່ໄດ້.', + containerFromAppHelper1: 'ຄລິກປຸ່ມ [Param] ໃນລາຍການແອັບທີ່ຕິດຕັ້ງເພື່ອເຂົ້າສູ່ໜ້າແກ້ໄຂ ແລະ ປ່ຽນຊື່ຄອນເທນເນີ.', + command: 'ຄຳສັ່ງ', + console: 'ການໂຕ້ຕອບຄອນເທນເນີ', + tty: 'ກຳນົດ pseudo-TTY (-t)', + openStdin: 'ເປີດ STDIN ຄ້າງໄວ້ແມ້ບໍ່ໄດ້ເຊື່ອມຕໍ່ (-i)', + custom: 'ກຳນົດເອງ', + emptyUser: 'ຖ້າຫວ່າງໄວ້ ຈະເຂົ້າສູ່ລະບົບດ້ວຍ user ເລີ່ມຕົ້ນ', + privileged: 'ສິດສູງສຸດ (Privileged)', + privilegedHelper: + 'ອະນຸຍາດໃຫ້ຄອນເທນເນີດຳເນີນການບາງຢ່າງດ້ວຍສິດສູງສຸດໃນ Host, ເຊິ່ງອາດເພີ່ມຄວາມສ່ຽງ. ກະລຸນາໃຊ້ດ້ວຍຄວາມລະມັດລະວັງ!', + upgradeHelper: 'ຊື່ຄັງເກັບ/ຊື່ Image: ເວີຊັນ Image', + upgradeWarning2: 'ການອັບເກຣດຕ້ອງມີການສ້າງຄອນເທນເນີໃໝ່, ຂໍ້ມູນທີ່ບໍ່ໄດ້ເກັບໄວ້ຖາວອນຈະສູນຫາຍ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + oldImage: 'Image ປັດຈຸບັນ', + sameImageContainer: 'ຄອນເທນເນີທີ່ໃຊ້ Image ດຽວກັນ', + sameImageHelper: 'ຄອນເທນເນີທີ່ໃຊ້ Image ດຽວກັນສາມາດເລືອກເພື່ອອັບເກຣດພ້ອມກັນໄດ້', + targetImage: 'Image ປາຍທາງ', + imageLoadErr: 'ກວດບໍ່ພົບຊື່ Image ສຳລັບຄອນເທນເນີນີ້', + imageUpdateTagEmpty: 'ກວດບໍ່ພົບ Tag ຂອງ Image ທີ່ອັບເດດໄດ້', + appHelper: 'ຄອນເທນເນີນຳມາຈາກ App Store, ການອັບເກຣດອາດເຮັດໃຫ້ບໍລິການໃຊ້ງານບໍ່ໄດ້.', + resource: 'ຊັບພະຍາກອນ', + input: 'ປ້ອນເອງ', + forcePull: 'ດຶງ Image ໃໝ່ສະເໝີ', + forcePullHelper: 'ຈະລະເວັ້ນ Image ທີ່ມີຢູ່ໃນເຄື່ອງ ແລະ ດຶງເວີຊັນຫຼ້າສຸດຈາກ Registry.', + imageUpdateHelper: 'ກວດສອບແທັກດຽວກັນໃນ registry ແລະ ດຶງມາອັບເດດໃນເຄື່ອງເມື່ອມີການປ່ຽນແປງ.', + server: 'Host', + serverExample: '80, 80-88, ip:80 ຫຼື ip:80-88', + containerExample: '80 ຫຼື 80-88', + exposePort: 'ເປີດພອດ (Expose)', + exposeAll: 'ເປີດທຸກພອດ', + cmdHelper: 'ຕົວຢ່າງ: nginx -g "daemon off;"', + entrypointHelper: 'ຕົວຢ່າງ: docker-entrypoint.sh', + autoRemove: 'ລຶບອັດຕະໂນມັດ (Auto remove)', + cpuQuota: 'ຈຳນວນ CPU Cores', + memoryLimit: 'ໜ່ວຍຄວາມຈຳ', + limitHelper: 'ຖ້າຕັ້ງເປັນ 0 ໝາຍເຖິງບໍ່ຈຳກັດ. ຄ່າສູງສຸດແມ່ນ {0}', + macAddr: 'ທີ່ຢູ່ MAC', + mount: 'Mount', + volumeOption: 'Volume', + hostOption: 'Host', + serverPath: 'ເສັ້ນທາງ Server', + containerDir: 'ເສັ້ນທາງ Container', + volumeHelper: 'ກະລຸນາຢືນຢັນວ່າເນື້ອຫາໃນ volume ຖືກຕ້ອງ', + networkEmptyHelper: 'ກະລຸນາຢືນຢັນການເລືອກ network ຂອງຄອນເທນເນີໃຫ້ຖືກຕ້ອງ', + modeRW: 'ອ່ານ-ຂຽນ (RW)', + modeR: 'ອ່ານຢ່າງດຽວ (R)', + sharedLabel: 'ໂໝດການແຜ່ກະຈາຍ (Propagation)', + private: 'ສ່ວນຕົວ (Private)', + privateHelper: 'ການປ່ຽນແປງ mount ໃນຄອນເທນເນີ ແລະ host ຈະບໍ່ສົ່ງຜົນກະທົບຕໍ່ກັນ', + rprivate: 'Recursive Private', + rprivateHelper: 'ທຸກ mount ໃນຄອນເທນເນີຈະຖືກແຍກອອກຈາກ host ຢ່າງເດັດຂາດ', + shared: 'ແບ່ງປັນ (Shared)', + sharedHelper: 'ການປ່ຽນແປງ mount ໃນ host ແລະ ຄອນເທນເນີຈະເຫັນເຊິ່ງກັນ ແລະ ກັນ', + rshared: 'Recursive Shared', + rsharedHelper: 'ການປ່ຽນແປງ mount ທັງໝົດໃນ host ແລະ ຄອນເທນເນີຈະເຫັນເຊິ່ງກັນ ແລະ ກັນ', + slave: 'Slave', + slaveHelper: 'ຄອນເທນເນີເຫັນການປ່ຽນແປງ mount ຈາກ host ແຕ່ການປ່ຽນແປງຂອງມັນເອງບໍ່ສົ່ງຜົນຕໍ່ host', + rslave: 'Recursive Slave', + rslaveHelper: 'ທຸກ mount ໃນຄອນເທນເນີເຫັນການປ່ຽນແປງຈາກ host ແຕ່ບໍ່ສົ່ງຜົນຕໍ່ host', + mode: 'ໂໝດ', + env: 'ຕົວປ່ຽນສະພາບແວດລ້ອມ (Environments)', + restartPolicy: 'ນະໂຍບາຍການເລີ່ມໃໝ່', + always: 'ເລີ່ມໃໝ່ສະເໝີ (always)', + unlessStopped: 'ເລີ່ມໃໝ່ຍົກເວັ້ນຖືກສັ່ງຢຸດ (unless-stopped)', + onFailure: 'ເລີ່ມໃໝ່ເມື່ອລົ້ມເຫຼວ (on-failure)', + no: 'ບໍ່ຕ້ອງເລີ່ມໃໝ່ (never)', + refreshTime: 'ໄລຍະການໂຫຼດຂໍ້ມູນໃໝ່', + cache: 'Cache', + image: 'Image', + imagePull: 'ດຶງ Image (Pull)', + imagePullHelper: 'ສາມາດເລືອກໄດ້ຫຼາຍ Image, ກົດ Enter ຫຼັງຈາກປ້ອນແຕ່ລະ Image ເພື່ອຕໍ່', + imagePush: 'ສົ່ງ Image (Push)', + imagePushHelper: 'ກວດພົບວ່າ Image ນີ້ມີຫຼາຍແທັກ. ກະລຸນາຢືນຢັນຊື່ Image ທີ່ຈະສົ່ງ: {0}', + imageDelete: 'ລຶບ Image', + repoName: 'Container registry', + imageName: 'ຊື່ Image', + pull: 'ດຶງຂໍ້ມູນ (Pull)', + path: 'ເສັ້ນທາງ', + importImage: 'ນຳເຂົ້າ', + buildArgs: 'Build Arguments', + imageBuild: 'ສ້າງ (Build)', + pathSelect: 'ເລືອກເສັ້ນທາງ', + label: 'ປ້າຍຊື່ (Label)', + imageTag: 'ແທັກ Image', + imageTagHelper: 'ຮອງຮັບການຕັ້ງຫຼາຍແທັກ, ກົດ Enter ຫຼັງຈາກປ້ອນແຕ່ລະແທັກ', + push: 'ສົ່ງຂໍ້ມູນ (Push)', + fileName: 'ຊື່ໄຟລ໌', + export: 'ສົ່ງອອກ (Export)', + exportImage: 'ສົ່ງອອກ Image', + size: 'ຂະໜາດ', + tag: 'ແທັກ', + tagHelper: 'ໜຶ່ງລາຍການຕໍ່ແຖວ. ຕົວຢ່າງ:\nkey1=value1\nkey2=value2', + imageNameHelper: 'ຊື່ Image ແລະ ແທັກ, ຕົວຢ່າງ: nginx:latest', + cleanBuildCache: 'ລ້າງ Build Cache', + delBuildCacheHelper: + 'ການດຳເນີນການນີ້ຈະລຶບໄຟລ໌ cache ທັງໝົດທີ່ສ້າງຂຶ້ນລະຫວ່າງການ build ແລະ ບໍ່ສາມາດກັບຄືນໄດ້. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + urlWarning: 'Prefix ຂອງ URL ບໍ່ຈຳເປັນຕ້ອງລວມ http:// ຫຼື https://. ກະລຸນາແກ້ໄຂ.', + network: 'Network', + networkHelper: 'ການດຳເນີນການນີ້ອາດເຮັດໃຫ້ບາງແອັບພລິເຄຊັນ ແລະ runtime ໃຊ້ການບໍ່ໄດ້. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + networkName: 'ຊື່', + driver: 'Driver', + option: 'ຕົວເລືອກ', + attachable: 'ສາມາດເຊື່ອມຕໍ່ໄດ້ (Attachable)', + parentNetworkCard: 'ກາດເຄືອຂ່າຍຫຼັກ (Parent Card)', + subnet: 'Subnet', + scope: 'ຊ່ວງ IP', + gateway: 'Gateway', + auxAddress: 'IP ທີ່ຍົກເວັ້ນ', + volume: 'Volume', + volumeDir: 'ໂຟນເດີ Volume', + nfsEnable: 'ເປີດໃຊ້ການເກັບຂໍ້ມູນ NFS', + nfsAddress: 'ທີ່ຢູ່ (Address)', + mountpoint: 'Mountpoint', + mountpointNFSHelper: 'ຕົວຢ່າງ: /nfs, /nfs-share', + options: 'ຕົວເລືອກເພີ່ມເຕີມ', + repo: 'ຄັງເກັບ (Repository)', + httpRepoHelper: 'ການຈັດການຄັງເກັບປະເພດ HTTP ຕ້ອງມີການເລີ່ມບໍລິການ Docker ໃໝ່.', + httpRepo: 'ການເລືອກ protocol HTTP ຕ້ອງເລີ່ມ Docker ໃໝ່ເພື່ອເພີ່ມເຂົ້າໃນ insecure registries.', + delInsecure: 'ລຶບລາຍການທີ່ບໍ່ປອດໄພ', + delInsecureHelper: 'ຈະເລີ່ມບໍລິການ Docker ໃໝ່ເພື່ອລຶບອອກຈາກ insecure registries. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + downloadUrl: 'Server', + imageRepo: 'ຄັງ Image', + repoHelper: 'ລວມເຖິງ mirror repository/organization/project ຫຼືບໍ່?', + auth: 'ຕ້ອງການການຢືນຢັນຕົວຕົນ', + mirrorHelper: + 'ຖ້າມີຫຼາຍ mirror, ຕ້ອງຂຶ້ນແຖວໃໝ່, ຕົວຢ່າງ:\nhttp://xxxxxx.m.daocloud.io \nhttps://xxxxxx.mirror.aliyuncs.com', + registrieHelper: 'ຖ້າມີຫຼາຍຄັງສ່ວນຕົວ, ຕ້ອງຂຶ້ນແຖວໃໝ່, ຕົວຢ່າງ:\n172.16.10.111:8081 \n172.16.10.112:8081', + compose: 'Compose', + composeFile: 'ໄຟລ໌ Compose', + fromChangeHelper: 'ການປ່ຽນແຫຼ່ງທີ່ມາຈະລ້າງເນື້ອຫາທີ່ແກ້ໄຂໄວ້. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + composePathHelper: 'ເສັ້ນທາງບັນທຶກໄຟລ໌ກຳນົດຄ່າ: {0}', + composeHelper: 'Compose ທີ່ສ້າງຜ່ານ 1Panel editor ຫຼື template ຈະຖືກບັນທຶກໄວ້ໃນໂຟນເດີ {0}/docker/compose.', + deleteFile: 'ລຶບໄຟລ໌', + deleteComposeHelper: + 'ລຶບໄຟລ໌ທັງໝົດທີ່ກ່ຽວຂ້ອງກັບ compose, ລວມທັງໄຟລ໌ກຳນົດຄ່າ ແລະ ໄຟລ໌ຂໍ້ມູນຖາວອນ. ກະລຸນາເຮັດດ້ວຍຄວາມລະມັດລະວັງ!', + deleteCompose: '" ລຶບ compose ນີ້.', + composeDirectory: 'ໂຟນເດີ Compose', + template: 'Template', + composeTemplate: 'Template ຂອງ Compose', + content: 'ເນື້ອຫາ', + contentEmpty: 'ເນື້ອຫາ Compose ບໍ່ສາມາດຫວ່າງໄດ້!', + containerNumber: 'ຈຳນວນຄອນເທນເນີ', + containerStatus: 'ສະຖານະຄອນເທນເນີ', + exited: 'ຢຸດແລ້ວ', + running: 'ກຳລັງລັນ ( {0} / {1} )', + composeDetailHelper: 'Compose ນີ້ຖືກສ້າງຈາກພາຍນອກ 1Panel. ບໍ່ຮອງຮັບການສັ່ງເລີ່ມ ແລະ ຢຸດ.', + composeOperatorHelper: 'ຈະດຳເນີນການ {1} ໃນ {0}. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + composeDownHelper: 'ຈະຢຸດ ແລະ ລຶບຄອນເທນເນີ ແລະ network ທັງໝົດພາຍໃຕ້ compose {0}. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + composeEnvHelper2: + 'Compose ນີ້ຖືກສ້າງໂດຍ 1Panel App Store. ກະລຸນາແກ້ໄຂຕົວປ່ຽນສະພາບແວດລ້ອມໃນແອັບທີ່ຕິດຕັ້ງແລ້ວ.', + composeContentPlaceholder: 'ຂຽນ ຫຼື ວາງເນື້ອຫາໄຟລ໌ docker-compose ຂອງທ່ານທີ່ນີ້', - setting: 'ການຕັ້ງຄ່າ', - goSetting: 'ໄປທີ່ການຕັ້ງຄ່າ', - restartHelper: 'ການປ່ຽນແປງການກຳນົດຄ່າຕ້ອງເລີ່ມບໍລິການ Docker ໃໝ່ຈຶ່ງຈະມີຜົນ', - operatorStatusHelper: 'ຈະ "{0}" ບໍລິການ Docker. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - dockerStatus: 'ບໍລິການ Docker', - daemonJsonPathHelper: 'ຢືນຢັນວ່າເສັ້ນທາງກຳນົດຄ່າກົງກັບທີ່ລະບຸໃນ docker.service.', - mirrors: 'Registry mirrors', - mirrorsHelper: '', - mirrorsHelper2: 'ສຳລັບລາຍລະອຽດ, ເບິ່ງເອກະສານທາງການ.', - registries: 'Insecure registries', - ipv6Helper: - 'ເມື່ອເປີດໃຊ້ IPv6, ທ່ານຕ້ອງເພີ່ມ IPv6 network ໃຫ້ຄອນເທນເນີ. ອີງຕາມເອກະສານທາງການສຳລັບຂັ້ນຕອນການຕັ້ງຄ່າ.', - ipv6CidrHelper: 'ຊ່ວງ IPv6 address pool ສຳລັບຄອນເທນເນີ', - ipv6TablesHelper: 'ກຳນົດຄ່າ Docker IPv6 ສຳລັບກົດ iptables ອັດຕະໂນມັດ.', - experimentalHelper: - 'ການເປີດໃຊ້ ip6tables ຕ້ອງເປີດການກຳນົດຄ່ານີ້; ບໍ່ດັ່ງນັ້ນ ip6tables ຈະຖືກລະເວັ້ນ', - cutLog: 'ຕົວເລືອກບັນທຶກ (Log)', - cutLogHelper1: 'ການກຳນົດຄ່າປັດຈຸບັນຈະມີຜົນກັບຄອນເທນເນີທີ່ສ້າງໃໝ່ເທົ່ານັ້ນ.', - cutLogHelper2: 'ຄອນເທນເນີທີ່ມີຢູ່ແລ້ວຕ້ອງຖືກສ້າງໃໝ່ເພື່ອໃຫ້ການຕັ້ງຄ່າມີຜົນ.', - cutLogHelper3: - 'ກະລຸນາຮັບຊາບວ່າການສ້າງຄອນເທນເນີໃໝ່ອາດເຮັດໃຫ້ຂໍ້ມູນສູນຫາຍ. ຖ້າມີຂໍ້ມູນສຳຄັນ ໃຫ້ສຳຮອງຂໍ້ມູນກ່ອນ.', - maxSize: 'ຂະໜາດສູງສຸດ', - maxFile: 'ຈຳນວນໄຟລ໌ສູງສຸດ', - liveHelper: - 'ໂດຍເລີ່ມຕົ້ນ ເມື່ອ Docker daemon ຢຸດ ມັນຈະປິດຄອນເທນເນີທີ່ລັນຢູ່ນຳ. ທ່ານສາມາດຕັ້ງຄ່າໃຫ້ຄອນເທນເນີຍັງລັນຕໍ່ໄປໄດ້ເຖິງ daemon ຈະບໍ່ພ້ອມໃຊ້ງານ. ເອີ້ນວ່າ live restore ເຊິ່ງຊ່ວຍຫຼຸດເວລາ downtime.', - liveWithSwarmHelper: 'ການກຳນົດຄ່າ live-restore ບໍ່ຮອງຮັບກັບ swarm mode.', - iptablesDisable: 'ປິດ iptables', - iptablesHelper1: 'ກຳນົດຄ່າກົດ iptables ອັດຕະໂນມັດສຳລັບ Docker.', - iptablesHelper2: - 'ການປິດ iptables ຈະເຮັດໃຫ້ຄອນເທນເນີບໍ່ສາມາດສື່ສານກັບເຄືອຂ່າຍພາຍນອກໄດ້.', - daemonJsonPath: 'ເສັ້ນທາງໄຟລ໌ Conf', - serviceUnavailable: 'ບໍລິການ Docker ຍັງບໍ່ໄດ້ເລີ່ມ.', - startIn: ' ເພື່ອເລີ່ມ', - sockPath: 'Unix domain socket', - sockPathHelper: 'ຊ່ອງທາງການສື່ສານລະຫວ່າງ Docker daemon ແລະ client.', - sockPathHelper1: 'ເສັ້ນທາງເລີ່ມຕົ້ນ: /var/run/docker-x.sock', - sockPathMsg: 'ການບັນທຶກ Socket Path ອາດເຮັດໃຫ້ Docker ໃຊ້ການບໍ່ໄດ້. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - sockPathErr: 'ເລືອກ ຫຼື ປ້ອນເສັ້ນທາງໄຟລ໌ Docker sock ທີ່ຖືກຕ້ອງ', - related: 'ທີ່ກ່ຽວຂ້ອງ', - includeAppstore: 'ສະແດງຄອນເທນເນີຈາກ App Store', - excludeAppstore: 'ຊື່ອງຄອນເທນເນີຈາກ App Store', - cleanDockerDiskZone: 'ລ້າງພື້ນທີ່ disk ທີ່ Docker ໃຊ້', - cleanImagesHelper: '( ລ້າງ Image ທັງໝົດທີ່ບໍ່ໄດ້ຖືກໃຊ້ໂດຍຄອນເທນເນີໃດໆ )', - cleanContainersHelper: '( ລ້າງຄອນເທນເນີທັງໝົດທີ່ຢຸດຢູ່ )', - cleanVolumesHelper: '( ລ້າງ Volume ພາຍໃນເຄື່ອງທັງໝົດທີ່ບໍ່ໄດ້ໃຊ້ )', - makeImage: 'ສ້າງ Image', - newImageName: 'ຊື່ Image ໃໝ່', - commitMessage: 'Commit message', - author: 'ຜູ້ສ້າງ', - ifPause: 'ພັກຄອນເທນເນີລະຫວ່າງການສ້າງ', - ifMakeImageWithContainer: 'ສ້າງ Image ໃໝ່ຈາກຄອນເທນເນີນີ້?', - finishTime: 'ເວລາຢຸດຫຼ້າສຸດ', - exportHelper: 'ສົ່ງອອກ Image ທີ່ເລືອກເປັນໄຟລ໌ .tar ດຽວ.', -}, -cronjob: { - importHelper: - 'ວຽກທີ່ກຳນົດເວລາທີ່ຊ້ຳກັນຈະຖືກລະເວັ້ນອັດຕະໂນມັດລະຫວ່າງການນຳເຂົ້າ. ວຽກຈະຖືກຕັ້ງເປັນສະຖານະ [ປິດໃຊ້ງານ] ເປັນຄ່າເລີ່ມຕົ້ນ.', - changeStatus: 'ປ່ຽນສະຖານະ', - disableMsg: 'ການດຳເນີນການນີ້ຈະຢຸດການເຮັດວຽກອັດຕະໂນມັດຂອງວຽກນີ້. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - enableMsg: 'ການດຳເນີນການນີ້ຈະເປີດໃຫ້ວຽກເຮັດວຽກອັດຕະໂນມັດ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - taskType: 'ປະເພດ', - nextTime: 'ການລັນ 5 ຄັ້ງຖັດໄປ', - record: 'ບັນທຶກ', - viewRecords: 'ເບິ່ງບັນທຶກ', - shell: 'Shell', - stop: 'ຢຸດດ້ວຍຕົນເອງ', - stopHelper: 'ການດຳເນີນການນີ້ຈະບັງຄັບຢຸດການເຮັດວຽກຂອງວຽກປັດຈຸບັນ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - log: 'ສຳຮອງບັນທຶກ (Log)', - logHelper: 'ສຳຮອງບັນທຶກລະບົບ', - logHelper1: '1. ບັນທຶກລະບົບ 1Panel', - logHelper2: '2. ບັນທຶກການເຂົ້າສູ່ລະບົບ SSH ຂອງ server ', - logHelper3: '3. ບັນທຶກທັງໝົດຂອງເວັບໄຊ ', - containerCheckBox: 'ໃນຄອນເທນເນີ (ບໍ່ຕ້ອງປ້ອນຄຳສັ່ງ container)', - containerName: 'ຊື່ຄອນເທນເນີ', - ntp: 'ການຊິງໂຄໄນເວລາ', - ntp_helper: 'ທ່ານສາມາດກຳນົດຄ່າ NTP server ໄດ້ໃນໜ້າ Quick Setup ຂອງ Toolbox.', - app: 'ສຳຮອງແອັບ', - website: 'ສຳຮອງເວັບໄຊ', - rulesHelper: - 'ເມື່ອມີຫຼາຍກົດການຍົກເວັ້ນການບີບອັດ, ຕ້ອງຂຶ້ນແຖວໃໝ່. ຕົວຢ່າງ:\n*.log \n*.sql', - lastRecordTime: 'ເວລາເຮັດວຽກຫຼ້າສຸດ', - all: 'ທັງໝົດ', - failedRecord: 'ບັນທຶກທີ່ລົ້ມເຫຼວ', - successRecord: 'ບັນທຶກທີ່ສຳເລັດ', - database: 'ສຳຮອງຖານຂໍ້ມູນ', - backupArgs: 'Backup Arguments', - backupArgsHelper: - 'ສາມາດປ້ອນ backup arguments ທີ່ບໍ່ມີໃນລາຍການໄດ້ເອງ. ຕົວຢ່າງ: ປ້ອນ --no-data ແລ້ວເລືອກຕົວເລືອກທຳອິດ.', - singleTransaction: 'ສຳຮອງຕາຕະລາງ InnoDB ໂດຍໃຊ້ single transaction, ເໝາະສຳລັບຂໍ້ມູນຂະໜາດໃຫຍ່', - quick: 'ອ່ານຂໍ້ມູນເທື່ອລະແຖວແທນການໂຫຼດທັງໝົດລົງ memory, ເໝາະສຳລັບຂໍ້ມູນໃຫຍ່ ແລະ ເຄື່ອງທີ່ມີ memory ຕ່ຳ', - skipLockTables: 'ສຳຮອງໂດຍບໍ່ລັອກຕາຕະລາງ, ເໝາະສຳລັບຖານຂໍ້ມູນທີ່ມີການໃຊ້ງານສູງ', - missBackupAccount: 'ກວດບໍ່ພບບັນຊີສຳຮອງຂໍ້ມູນ', - syncDate: 'ເວລາຊິງໂຄໄນ ', - clean: 'ລ້າງ Cache', - curl: 'ເຂົ້າເຖິງ URL', - taskName: 'ຊື່ວຽກ', - cronSpec: 'ຮອບວຽນການເຮັດວຽກ (Trigger)', - cronSpecDoc: - 'ຮອບວຽນການເຮັດວຽກຮອງຮັບຮູບແບບ [minute hour day month week], ເຊັ່ນ: 0 0 * * *. ສຶກສາເພີ່ມເຕີມໃນເອກະສານທາງການ.', - cronSpecHelper: 'ກະລຸນາປ້ອນຮອບວຽນການເຮັດວຽກທີ່ຖືກຕ້ອງ', - cleanHelper: 'ການດຳເນີນການນີ້ຈະລຶບບັນທຶກການເຮັດວຽກ, ໄຟລ໌ສຳຮອງ ແລະ ໄຟລ໌ບັນທຶກທັງໝົດ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - backupContent: 'ເນື້ອຫາທີ່ຈະສຳຮອງ', - directory: 'ໂຟນເດີສຳຮອງ', - sourceDir: 'ໂຟນເດີຕົ້ນທາງ', - snapshot: 'System snapshot', - allOptionHelper: - 'ວຽກນີ້ແມ່ນການສຳຮອງ [{0}] ທັງໝົດ. ຍັງບໍ່ຮອງຮັບການດາວໂຫຼດໂດຍກົງໃນຕອນນີ້. ສາມາດກວດສອບລາຍການສຳຮອງໄດ້ໃນເມນູ [{0}].', - exclusionRules: 'ກົດການຍົກເວັ້ນ', - exclusionRulesHelper: - 'ເລືອກ ຫຼື ປ້ອນກົດການຍົກເວັ້ນ, ກົດ Enter ຫຼັງຈາກປ້ອນແຕ່ລະຊຸດ. ກົດເຫຼົ່ານີ້ຈະໃຊ້ກັບທຸກການບີບອັດໃນການສຳຮອງນີ້', - default_download_path: 'ລິ້ງດາວໂຫຼດເລີ່ມຕົ້ນ', - saveLocal: 'ເກັບໄຟລ໌ສຳຮອງໄວ້ໃນເຄື່ອງ (ຈຳນວນເທົ່າກັບໃນ cloud)', - url: 'ທີ່ຢູ່ URL', - urlHelper: 'ປ້ອນທີ່ຢູ່ URL ທີ່ຖືກຕ້ອງ', - targetHelper: 'ບັນຊີສຳຮອງຂໍ້ມູນຖືກຈັດການໃນການຕັ້ງຄ່າ panel.', - withImageHelper: 'ສຳຮອງ Image ຂອງແອັບດ້ວຍ, ແຕ່ຈະເຮັດໃຫ້ຂະໜາດ snapshot ໃຫຍ່ຂຶ້ນ.', - ignoreApp: 'ຍົກເວັ້ນແອັບ', - withImage: 'ສຳຮອງ Application Image', - retainCopies: 'ຈຳນວນທີ່ເກັບໄວ້', - retryTimes: 'ລອງໃໝ່ເມື່ອລົ້ມເຫຼວ', - timeout: 'ໝົດເວລາ', - ignoreErr: 'ລະເວັ້ນຂໍ້ຜິດພາດ', - ignoreErrHelper: 'ລະເວັ້ນຂໍ້ຜິດພາດລະຫວ່າງການສຳຮອງເພື່ອໃຫ້ວຽກທັງໝົດສຳເລັດ', - retryTimesHelper: '0 ໝາຍເຖິງບໍ່ມີການລອງໃໝ່', - retainCopiesHelper: 'ຈຳນວນບັນທຶກການເຮັດວຽກ ແລະ log ທີ່ຕ້ອງການເກັບໄວ້', - retainCopiesHelper1: 'ຈຳນວນໄຟລ໌ສຳຮອງທີ່ຕ້ອງການເກັບໄວ້', - retainCopiesUnit: ' ຊຸດ (ເບິ່ງ)', - cronSpecRule: 'ຮູບແບບຮອບວຽນໃນແຖວທີ {0} ບໍ່ຖືກຕ້ອງ. ກະລຸນາກວດສອບ!', - cronSpecRule2: 'ຮູບແບບຮອບວຽນບໍ່ຖືກຕ້ອງ, ກະລຸນາກວດສອບ!', - perMonthHelper: 'ເຮັດວຽກວັນທີ {0} ຂອງທຸກເດືອນ ເວລາ {1}:{2}', - perWeekHelper: 'ເຮັດວຽກທຸກອາທິດໃນວັນ{0} ເວລາ {1}:{2}', - perDayHelper: 'ເຮັດວຽກທຸກມື້ ເວລາ {0}:{1}', - perHourHelper: 'ເຮັດວຽກທຸກຊົ່ວໂມງທີ່ນາທີທີ {0}', - perNDayHelper: 'ເຮັດວຽກທຸກໆ {0} ມື້ ເວລາ {1}:{2}', - perNHourHelper: 'ເຮັດວຽກທຸກໆ {0} ຊົ່ວໂມງທີ່ນາທີທີ {1}', - perNMinuteHelper: 'ເຮັດວຽກທຸກໆ {0} ນາທີ', - perNSecondHelper: 'ເຮັດວຽກທຸກໆ {0} ວິນາທີ', - perMonth: 'ທຸກເດືອນ', - perWeek: 'ທຸກອາທິດ', - perHour: 'ທຸກຊົ່ວໂມງ', - perNDay: 'ທຸກໆ N ມື້', - perDay: 'ທຸກມື້', - perNHour: 'ທຸກໆ N ຊົ່ວໂມງ', - perNMinute: 'ທຸກໆ N ນາທີ', - perNSecond: 'ທຸກໆ N ວິນາທີ', - day: 'ມື້', - monday: 'ວັນຈັນ', - tuesday: 'ວັນອັງຄານ', - wednesday: 'ວັນພຸດ', - thursday: 'ວັນພະຫັດ', - friday: 'ວັນສຸກ', - saturday: 'ວັນເສົາ', - sunday: 'ວັນອາທິດ', - shellContent: 'ສະຄຣິບ', - executor: 'ຜູ້ລັນຄຳສັ່ງ', - errRecord: 'ບັນທຶກທີ່ຜິດພາດ', - errHandle: 'Cronjob ເຮັດວຽກລົ້ມເຫຼວ', - noRecord: 'ເມື່ອ Cron Job ເຮັດວຽກ, ບັນທຶກຈະສະແດງຢູ່ທີ່ນີ້.', - cleanData: 'ລ້າງຂໍ້ມູນ', - cleanRemoteData: 'ລຶບຂໍ້ມູນໃນ cloud', - cleanDataHelper: 'ລຶບໄຟລ໌ສຳຮອງທີ່ສ້າງຂຶ້ນລະຫວ່າງວຽກນີ້.', - noLogs: 'ຍັງບໍ່ມີ output ຂອງວຽກ...', - errPath: 'ເສັ້ນທາງສຳຮອງ [{0}] ຜິດພາດ, ບໍ່ສາມາດດາວໂຫຼດໄດ້!', - cutWebsiteLog: 'ການໝູນວຽນບັນທຶກເວັບໄຊ (Rotation)', - cutWebsiteLogHelper: 'ໄຟລ໌ບັນທຶກທີ່ໝູນວຽນຈະຖືກສຳຮອງໄວ້ໃນໂຟນເດີສຳຮອງຂອງ 1Panel.', - syncIpGroup: 'ຊິງໂຄໄນກຸ່ມ IP ຂອງ WAF', - syncIpGroupHelper: 'ຊິງໂຄໄນກຸ່ມ IP ໄລຍະໄກທີ່ໃຊ້ໃນ WAF allowlists ແລະ blocklists', - requestExpirationTime: 'ເວລາໝົດອາຍຸຂອງຄຳຂໍອັບໂຫຼດ (ຊົ່ວໂມງ)', - unitHours: 'ຫົວໜ່ວຍ: ຊົ່ວໂມງ', - alertTitle: 'ວຽກທີ່ກຳນົດເວລາ - {0} 「{1}」 ແຈ້ງເຕືອນວຽກລົ້ມເຫຼວ', - library: { - script: 'ສະຄຣິບ', - syncNow: 'ຊິງໂຄໄນດຽວນີ້', - turnOnSync: 'ເປີດການຊິງໂຄໄນອັດຕະໂນມັດ', - turnOnSyncHelper: - 'ການເປີດຊິງໂຄໄນອັດຕະໂນມັດຈະດຳເນີນການໃນຊ່ວງເຊົ້າມືດຂອງທຸກມື້', - turnOffSync: 'ປິດການຊິງໂຄໄນອັດຕະໂນມັດ', - turnOffSyncHelper: 'ການປິດຊິງໂຄໄນອັດຕະໂນມັດອາດເຮັດໃຫ້ຂໍ້ມູນສະຄຣິບຫຼ້າຊ້າ, ຢືນຢັນຫຼືບໍ່?', - isInteractive: 'ມີການໂຕ້ຕອບ', - interactive: 'ສະຄຣິບແບບໂຕ້ຕອບ', - interactiveHelper: 'ຕ້ອງການການປ້ອນຂໍ້ມູນຈາກຜູ້ໃຊ້ລະຫວ່າງລັນ ແລະ ບໍ່ສາມາດໃຊ້ໃນວຽກກຳນົດເວລາໄດ້.', - library: 'ຄັງສະຄຣິບ', - remoteLibrary: 'ຄັງສະຄຣິບໄລຍະໄກ', - create: 'ເພີ່ມສະຄຣິບ', - edit: 'ແກ້ໄຂສະຄຣິບ', - groupHelper: - 'ຕັ້ງກຸ່ມຕາມຄຸນລັກສະນະຂອງສະຄຣິບ ເພື່ອໃຫ້ຄົ້ນຫາໄດ້ໄວຂຶ້ນ.', - handleHelper: 'ລັນສະຄຣິບ {1} ໃນ {0}, ຕ້ອງການຕໍ່ຫຼືບໍ່?', - noSuchApp: 'ກວດບໍ່ພົບບໍລິການ {0}. ກະລຸນາຕິດຕັ້ງຜ່ານຄັງສະຄຣິບກ່ອນ!', - syncHelper: 'ກຳລັງຈະຊິງໂຄໄນຄັງສະຄຣິບລະບົບ. ສົ່ງຜົນກັບສະຄຣິບລະບົບເທົ່ານັ້ນ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + setting: 'ການຕັ້ງຄ່າ', + goSetting: 'ໄປທີ່ການຕັ້ງຄ່າ', + restartHelper: 'ການປ່ຽນແປງການກຳນົດຄ່າຕ້ອງເລີ່ມບໍລິການ Docker ໃໝ່ຈຶ່ງຈະມີຜົນ', + operatorStatusHelper: 'ຈະ "{0}" ບໍລິການ Docker. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + dockerStatus: 'ບໍລິການ Docker', + daemonJsonPathHelper: 'ຢືນຢັນວ່າເສັ້ນທາງກຳນົດຄ່າກົງກັບທີ່ລະບຸໃນ docker.service.', + mirrors: 'Registry mirrors', + mirrorsHelper: '', + mirrorsHelper2: 'ສຳລັບລາຍລະອຽດ, ເບິ່ງເອກະສານທາງການ.', + registries: 'Insecure registries', + ipv6Helper: + 'ເມື່ອເປີດໃຊ້ IPv6, ທ່ານຕ້ອງເພີ່ມ IPv6 network ໃຫ້ຄອນເທນເນີ. ອີງຕາມເອກະສານທາງການສຳລັບຂັ້ນຕອນການຕັ້ງຄ່າ.', + ipv6CidrHelper: 'ຊ່ວງ IPv6 address pool ສຳລັບຄອນເທນເນີ', + ipv6TablesHelper: 'ກຳນົດຄ່າ Docker IPv6 ສຳລັບກົດ iptables ອັດຕະໂນມັດ.', + experimentalHelper: 'ການເປີດໃຊ້ ip6tables ຕ້ອງເປີດການກຳນົດຄ່ານີ້; ບໍ່ດັ່ງນັ້ນ ip6tables ຈະຖືກລະເວັ້ນ', + cutLog: 'ຕົວເລືອກບັນທຶກ (Log)', + cutLogHelper1: 'ການກຳນົດຄ່າປັດຈຸບັນຈະມີຜົນກັບຄອນເທນເນີທີ່ສ້າງໃໝ່ເທົ່ານັ້ນ.', + cutLogHelper2: 'ຄອນເທນເນີທີ່ມີຢູ່ແລ້ວຕ້ອງຖືກສ້າງໃໝ່ເພື່ອໃຫ້ການຕັ້ງຄ່າມີຜົນ.', + cutLogHelper3: 'ກະລຸນາຮັບຊາບວ່າການສ້າງຄອນເທນເນີໃໝ່ອາດເຮັດໃຫ້ຂໍ້ມູນສູນຫາຍ. ຖ້າມີຂໍ້ມູນສຳຄັນ ໃຫ້ສຳຮອງຂໍ້ມູນກ່ອນ.', + maxSize: 'ຂະໜາດສູງສຸດ', + maxFile: 'ຈຳນວນໄຟລ໌ສູງສຸດ', + liveHelper: + 'ໂດຍເລີ່ມຕົ້ນ ເມື່ອ Docker daemon ຢຸດ ມັນຈະປິດຄອນເທນເນີທີ່ລັນຢູ່ນຳ. ທ່ານສາມາດຕັ້ງຄ່າໃຫ້ຄອນເທນເນີຍັງລັນຕໍ່ໄປໄດ້ເຖິງ daemon ຈະບໍ່ພ້ອມໃຊ້ງານ. ເອີ້ນວ່າ live restore ເຊິ່ງຊ່ວຍຫຼຸດເວລາ downtime.', + liveWithSwarmHelper: 'ການກຳນົດຄ່າ live-restore ບໍ່ຮອງຮັບກັບ swarm mode.', + iptablesDisable: 'ປິດ iptables', + iptablesHelper1: 'ກຳນົດຄ່າກົດ iptables ອັດຕະໂນມັດສຳລັບ Docker.', + iptablesHelper2: 'ການປິດ iptables ຈະເຮັດໃຫ້ຄອນເທນເນີບໍ່ສາມາດສື່ສານກັບເຄືອຂ່າຍພາຍນອກໄດ້.', + daemonJsonPath: 'ເສັ້ນທາງໄຟລ໌ Conf', + serviceUnavailable: 'ບໍລິການ Docker ຍັງບໍ່ໄດ້ເລີ່ມ.', + startIn: ' ເພື່ອເລີ່ມ', + sockPath: 'Unix domain socket', + sockPathHelper: 'ຊ່ອງທາງການສື່ສານລະຫວ່າງ Docker daemon ແລະ client.', + sockPathHelper1: 'ເສັ້ນທາງເລີ່ມຕົ້ນ: /var/run/docker-x.sock', + sockPathMsg: 'ການບັນທຶກ Socket Path ອາດເຮັດໃຫ້ Docker ໃຊ້ການບໍ່ໄດ້. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + sockPathErr: 'ເລືອກ ຫຼື ປ້ອນເສັ້ນທາງໄຟລ໌ Docker sock ທີ່ຖືກຕ້ອງ', + related: 'ທີ່ກ່ຽວຂ້ອງ', + includeAppstore: 'ສະແດງຄອນເທນເນີຈາກ App Store', + excludeAppstore: 'ຊື່ອງຄອນເທນເນີຈາກ App Store', + cleanDockerDiskZone: 'ລ້າງພື້ນທີ່ disk ທີ່ Docker ໃຊ້', + cleanImagesHelper: '( ລ້າງ Image ທັງໝົດທີ່ບໍ່ໄດ້ຖືກໃຊ້ໂດຍຄອນເທນເນີໃດໆ )', + cleanContainersHelper: '( ລ້າງຄອນເທນເນີທັງໝົດທີ່ຢຸດຢູ່ )', + cleanVolumesHelper: '( ລ້າງ Volume ພາຍໃນເຄື່ອງທັງໝົດທີ່ບໍ່ໄດ້ໃຊ້ )', + makeImage: 'ສ້າງ Image', + newImageName: 'ຊື່ Image ໃໝ່', + commitMessage: 'Commit message', + author: 'ຜູ້ສ້າງ', + ifPause: 'ພັກຄອນເທນເນີລະຫວ່າງການສ້າງ', + ifMakeImageWithContainer: 'ສ້າງ Image ໃໝ່ຈາກຄອນເທນເນີນີ້?', + finishTime: 'ເວລາຢຸດຫຼ້າສຸດ', + exportHelper: 'ສົ່ງອອກ Image ທີ່ເລືອກເປັນໄຟລ໌ .tar ດຽວ.', }, - cleanLog: 'ລ້າງບັນທຶກອັດຕະໂນມັດ', - cleanLogscope: 'ການເກັບຮັກສາບັນທຶກ', -}, -monitor: { - globalFilter: 'ຕົວກອງທົ່ວໂລກ', - enableMonitor: 'ສະຖານະການຕິດຕາມ', - storeDays: 'ຈຳນວນມື້ທີ່ເກັບໄວ້', - defaultNetwork: 'ກາດເຄືອຂ່າຍເລີ່ມຕົ້ນ', - defaultNetworkHelper: 'ກາດເຄືອຂ່າຍທີ່ຈະສະແດງໃນໜ້າ monitor ແລະ ພາບລວມ', - defaultIO: 'Disk ເລີ່ມຕົ້ນ', - defaultIOHelper: 'Disk ທີ່ຈະສະແດງໃນໜ້າ monitor ແລະ ພາບລວມ', - cleanMonitor: 'ລ້າງບັນທຶກການຕິດຕາມ', - cleanHelper: 'ການດຳເນີນການນີ້ຈະລ້າງບັນທຶກການຕິດຕາມທັງໝົດລວມເຖິງ GPU. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - avgLoad: 'ຄ່າ Load ສະເລ່ຍ', - loadDetail: 'ລາຍລະອຽດ Load', - resourceUsage: 'ການນຳໃຊ້', - networkCard: 'Network interface', - read: 'ອ່ານ', - write: 'ຂຽນ', - readWriteCount: 'ການດຳເນີນການ I/O', - readWriteTime: 'ຄວາມໜ່ວງ I/O', - today: 'ມື້ນີ້', - yesterday: 'ມື້ວານນີ້', - lastNDay: '{0} ມື້ທີ່ຜ່ານມາ', - lastNMonth: '{0} ເດືອນທີ່ຜ່ານມາ', - lastHalfYear: 'ເຄິ່ງປີທີ່ຜ່ານມາ', - memory: 'ໜ່ວຍຄວາມຈຳ', - percent: 'ເປີເຊັນ', - cache: 'Cache', - disk: 'Disk', - network: 'Network', - up: 'ອັບໂຫຼດ', - down: 'ດາວໂຫຼດ', - interval: 'ໄລຍະການເກັບຂໍ້ມູນ', - intervalHelper: 'ປ້ອນໄລຍະການເກັບຂໍ້ມູນທີ່ເໝາະສົມ (10 ວິນາທີ - 12 ຊົ່ວໂມງ)', -}, -terminal: { - local: 'ພາຍໃນເຄື່ອງ (Local)', - defaultConn: 'ການເຊື່ອມຕໍ່ເລີ່ມຕົ້ນ', - defaultConnHelper: - 'ການດຳເນີນການນີ້ຈະເຊື່ອມຕໍ່ກັບ node terminal ອັດຕະໂນມັດຫຼັງຈາກເປີດ terminal ສຳລັບ 【{0}】. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - withReset: 'ຣີເຊັດຂໍ້ມູນການເຊື່ອມຕໍ່', - localConnJump: - 'ຂໍ້ມູນການເຊື່ອມຕໍ່ເລີ່ມຕົ້ນຖືກຈັດການໃນ [Terminal - Settings]. ຖ້າເຊື່ອມຕໍ່ບໍ່ໄດ້ ໃຫ້ແກ້ໄຂຢູ່ທີ່ນັ້ນ!', - nodeAdminLocalOnly: 'Node administrators ຮອງຮັບສະເພາະ local terminals.', - localHelper: 'ຊື່ `local` ໃຊ້ເພື່ອລະບຸພາຍໃນລະບົບເທົ່ານັ້ນ', - connLocalErr: 'ບໍ່ສາມາດຢືນຢັນຕົວຕົນອັດຕະໂນມັດໄດ້, ກະລຸນາປ້ອນຂໍ້ມູນການເຂົ້າລະບົບ local server.', - testConn: 'ທົດສອບການເຊື່ອມຕໍ່', - saveAndConn: 'ບັນທຶກ ແລະ ເຊື່ອມຕໍ່', - connTestOk: 'ຂໍ້ມູນການເຊື່ອມຕໍ່ໃຊ້ງານໄດ້', - connTestFailed: 'ການເຊື່ອມຕໍ່ບໍ່ພ້ອມໃຊ້ງານ, ກະລຸນາກວດສອບຂໍ້ມູນ.', - host: 'Host', - createConn: 'ສ້າງການເຊື່ອມຕໍ່ໃໝ່', - noHost: 'ບໍ່ມີ host', - groupChange: 'ປ່ຽນກຸ່ມ', - expand: 'ຂະຫຍາຍທັງໝົດ', - fold: 'ຫຍໍ້ທັງໝົດ', - batchInput: 'ປະມວນຜົນແບບກຸ່ມ (Batch)', - quickCommand: 'ຄຳສັ່ງດ່ວນ', - noSuchCommand: 'ບໍ່ພົບຂໍ້ມູນຄຳສັ່ງດ່ວນໃນໄຟລ໌ CSV ທີ່ນຳເຂົ້າ, ກະລຸນາກວດສອບ!', - quickCommandHelper: 'ທ່ານສາມາດໃຊ້ຄຳສັ່ງດ່ວນໄດ້ທີ່ດ້ານລຸ່ມຂອງ "Terminals -> Terminals".', - quickCommandBatchHelper: - 'ໜຶ່ງຄຳສັ່ງຕໍ່ແຖວ, ໃຊ້ຮູບແບບ ຊື່---ຄຳສັ່ງ, ຕົວຢ່າງ: Check disk---df -h', - groupDeleteHelper: - 'ຫຼັງຈາກລຶບກຸ່ມແລ້ວ, ການເຊື່ອມຕໍ່ທັງໝົດໃນກຸ່ມຈະຖືກຍ້າຍໄປຍັງກຸ່ມເລີ່ມຕົ້ນ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - command: 'ຄຳສັ່ງ', - quickCmd: 'ຄຳສັ່ງດ່ວນ', - addHost: 'ເພີ່ມ', - localhost: 'Localhost', - ip: 'ທີ່ຢູ່ (Address)', - authMode: 'ການຢືນຢັນຕົວຕົນ', - passwordMode: 'ລະຫັດຜ່ານ', - rememberPassword: 'ຈື່ຂໍ້ມູນການຢືນຢັນຕົວຕົນ', - keyMode: 'PrivateKey', - key: 'Private key', - keyPassword: 'ລະຫັດຜ່ານ Private key', - emptyTerminal: 'ຍັງບໍ່ມີ terminal ທີ່ເຊື່ອມຕໍ່.', - lineHeight: 'ຄວາມສູງຂອງແຖວ', - letterSpacing: 'ໄລຍະຫ່າງຕົວອັກສອນ', - fontSize: 'ຂະໜາດຕົວອັກສອນ', - fontFamily: 'ຊຸດຟອນ', - fontFamilySupportHelper: - 'ເລືອກ ຫຼື ປ້ອນຊື່ຟອນ. ການສະແດງຜົນຕົວຈິງຂຶ້ນກັບຟອນທີ່ຕິດຕັ້ງໃນເຄື່ອງ/ບຣາວເຊີ. ຖ້າຫວ່າງໄວ້ຈະໃຊ້ຟອນເລີ່ມຕົ້ນ.', - backgroundColor: 'ສີພື້ນຫຼັງ', - foregroundColor: 'ສີຕົວອັກສອນ', - cursorBlink: 'Cursor ກະພິບ', - cursorStyle: 'ຮູບແບບ Cursor', - cursorUnderline: 'ຂີດກ້ອງ', - cursorBlock: 'ບລັອກ', - cursorBar: 'ແຖບ', - scrollback: 'ຈຳນວນແຖວຍ້ອນຫຼັງ', - scrollSensitivity: 'ຄວາມໄວການເລື່ອນ (Scroll)', - aiAssistant: 'AI Assistant', - aiAccountHelper: - 'ໃຊ້ບັນຊີໂມເດວທີ່ເລືອກເພື່ອສ້າງ ແລະ ຕື່ມຄຳສັ່ງ. ສຳລັບໂມເດວພາຍໃນເຄື່ອງເຊັ່ນ Ollama ແລະ vLLM ໃຫ້ໃຊ້ບັນຊີໂມເດວທີ່ກຳນົດເອງ.', - aiPrefix: 'Prefix ເລີ່ມຕົ້ນ AI', - aiPrefixHelper: - 'ປ້ອນ "prefix + ຍະຫວ່າງ" ແລະ ກົດ Enter ເພື່ອໃຫ້ AI ສ້າງຄຳສັ່ງ, ຕົວຢ່າງ: {0} help me check disk usage.', - aiRiskCommands: 'ສະກັດກັ້ນຄຳສັ່ງທີ່ມີຄວາມສ່ຽງ', - aiRiskCommandsHelper: - 'ກຳນົດຄຳສັ່ງທີ່ມີຄວາມສ່ຽງທີ່ຈະສະກັດກັ້ນ, ໜຶ່ງລາຍການຕໍ່ແຖວ. ຖ້າກົງກັນ AI ຈະບໍ່ສ້າງຄຳສັ່ງ ແລະ ຈະສົ່ງກັບມາເປັນ comment ແທນ.', - aiSummary: 'ເມື່ອເລີ່ມຕົ້ນແຖວດ້ວຍ prefix {0} ແລະ ກົດ Enter, ຈະເປັນການເອີ້ນໃຊ້ AI ສ້າງຄຳສັ່ງ.', - aiPrefixAsciiVisible: - 'ຮອງຮັບສະເພາະຕົວອັກສອນ ASCII ທີ່ເຫັນໄດ້ເທົ່ານັ້ນ. ບໍ່ອະນຸຍາດໃຫ້ໃຊ້ຍະຫວ່າງ, ຕົວອັກສອນ CJK, ແລະ ສັນຍະລັກເຕັມຄວາມກວ້າງ.', - saveHelper: 'ທ່ານແນ່ໃຈຫຼືບໍ່ວ່າຕ້ອງການບັນທຶກການກຳນົດຄ່າ terminal ນີ້?', -}, -toolbox: { - common: { - toolboxHelper: 'ສຳລັບບັນຫາການຕິດຕັ້ງ ແລະ ການໃຊ້ງານ, ເບິ່ງໄດ້ທີ່', + cronjob: { + importHelper: + 'ວຽກທີ່ກຳນົດເວລາທີ່ຊ້ຳກັນຈະຖືກລະເວັ້ນອັດຕະໂນມັດລະຫວ່າງການນຳເຂົ້າ. ວຽກຈະຖືກຕັ້ງເປັນສະຖານະ [ປິດໃຊ້ງານ] ເປັນຄ່າເລີ່ມຕົ້ນ.', + changeStatus: 'ປ່ຽນສະຖານະ', + disableMsg: 'ການດຳເນີນການນີ້ຈະຢຸດການເຮັດວຽກອັດຕະໂນມັດຂອງວຽກນີ້. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + enableMsg: 'ການດຳເນີນການນີ້ຈະເປີດໃຫ້ວຽກເຮັດວຽກອັດຕະໂນມັດ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + taskType: 'ປະເພດ', + nextTime: 'ການລັນ 5 ຄັ້ງຖັດໄປ', + record: 'ບັນທຶກ', + viewRecords: 'ເບິ່ງບັນທຶກ', + shell: 'Shell', + stop: 'ຢຸດດ້ວຍຕົນເອງ', + stopHelper: 'ການດຳເນີນການນີ້ຈະບັງຄັບຢຸດການເຮັດວຽກຂອງວຽກປັດຈຸບັນ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + log: 'ສຳຮອງບັນທຶກ (Log)', + logHelper: 'ສຳຮອງບັນທຶກລະບົບ', + logHelper1: '1. ບັນທຶກລະບົບ 1Panel', + logHelper2: '2. ບັນທຶກການເຂົ້າສູ່ລະບົບ SSH ຂອງ server ', + logHelper3: '3. ບັນທຶກທັງໝົດຂອງເວັບໄຊ ', + containerCheckBox: 'ໃນຄອນເທນເນີ (ບໍ່ຕ້ອງປ້ອນຄຳສັ່ງ container)', + containerName: 'ຊື່ຄອນເທນເນີ', + ntp: 'ການຊິງໂຄໄນເວລາ', + ntp_helper: 'ທ່ານສາມາດກຳນົດຄ່າ NTP server ໄດ້ໃນໜ້າ Quick Setup ຂອງ Toolbox.', + app: 'ສຳຮອງແອັບ', + website: 'ສຳຮອງເວັບໄຊ', + rulesHelper: 'ເມື່ອມີຫຼາຍກົດການຍົກເວັ້ນການບີບອັດ, ຕ້ອງຂຶ້ນແຖວໃໝ່. ຕົວຢ່າງ:\n*.log \n*.sql', + lastRecordTime: 'ເວລາເຮັດວຽກຫຼ້າສຸດ', + all: 'ທັງໝົດ', + failedRecord: 'ບັນທຶກທີ່ລົ້ມເຫຼວ', + successRecord: 'ບັນທຶກທີ່ສຳເລັດ', + database: 'ສຳຮອງຖານຂໍ້ມູນ', + backupArgs: 'Backup Arguments', + backupArgsHelper: + 'ສາມາດປ້ອນ backup arguments ທີ່ບໍ່ມີໃນລາຍການໄດ້ເອງ. ຕົວຢ່າງ: ປ້ອນ --no-data ແລ້ວເລືອກຕົວເລືອກທຳອິດ.', + singleTransaction: 'ສຳຮອງຕາຕະລາງ InnoDB ໂດຍໃຊ້ single transaction, ເໝາະສຳລັບຂໍ້ມູນຂະໜາດໃຫຍ່', + quick: 'ອ່ານຂໍ້ມູນເທື່ອລະແຖວແທນການໂຫຼດທັງໝົດລົງ memory, ເໝາະສຳລັບຂໍ້ມູນໃຫຍ່ ແລະ ເຄື່ອງທີ່ມີ memory ຕ່ຳ', + skipLockTables: 'ສຳຮອງໂດຍບໍ່ລັອກຕາຕະລາງ, ເໝາະສຳລັບຖານຂໍ້ມູນທີ່ມີການໃຊ້ງານສູງ', + missBackupAccount: 'ກວດບໍ່ພບບັນຊີສຳຮອງຂໍ້ມູນ', + syncDate: 'ເວລາຊິງໂຄໄນ ', + clean: 'ລ້າງ Cache', + curl: 'ເຂົ້າເຖິງ URL', + taskName: 'ຊື່ວຽກ', + cronSpec: 'ຮອບວຽນການເຮັດວຽກ (Trigger)', + cronSpecDoc: + 'ຮອບວຽນການເຮັດວຽກຮອງຮັບຮູບແບບ [minute hour day month week], ເຊັ່ນ: 0 0 * * *. ສຶກສາເພີ່ມເຕີມໃນເອກະສານທາງການ.', + cronSpecHelper: 'ກະລຸນາປ້ອນຮອບວຽນການເຮັດວຽກທີ່ຖືກຕ້ອງ', + cleanHelper: 'ການດຳເນີນການນີ້ຈະລຶບບັນທຶກການເຮັດວຽກ, ໄຟລ໌ສຳຮອງ ແລະ ໄຟລ໌ບັນທຶກທັງໝົດ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + backupContent: 'ເນື້ອຫາທີ່ຈະສຳຮອງ', + directory: 'ໂຟນເດີສຳຮອງ', + sourceDir: 'ໂຟນເດີຕົ້ນທາງ', + snapshot: 'System snapshot', + allOptionHelper: + 'ວຽກນີ້ແມ່ນການສຳຮອງ [{0}] ທັງໝົດ. ຍັງບໍ່ຮອງຮັບການດາວໂຫຼດໂດຍກົງໃນຕອນນີ້. ສາມາດກວດສອບລາຍການສຳຮອງໄດ້ໃນເມນູ [{0}].', + exclusionRules: 'ກົດການຍົກເວັ້ນ', + exclusionRulesHelper: + 'ເລືອກ ຫຼື ປ້ອນກົດການຍົກເວັ້ນ, ກົດ Enter ຫຼັງຈາກປ້ອນແຕ່ລະຊຸດ. ກົດເຫຼົ່ານີ້ຈະໃຊ້ກັບທຸກການບີບອັດໃນການສຳຮອງນີ້', + default_download_path: 'ລິ້ງດາວໂຫຼດເລີ່ມຕົ້ນ', + saveLocal: 'ເກັບໄຟລ໌ສຳຮອງໄວ້ໃນເຄື່ອງ (ຈຳນວນເທົ່າກັບໃນ cloud)', + url: 'ທີ່ຢູ່ URL', + urlHelper: 'ປ້ອນທີ່ຢູ່ URL ທີ່ຖືກຕ້ອງ', + targetHelper: 'ບັນຊີສຳຮອງຂໍ້ມູນຖືກຈັດການໃນການຕັ້ງຄ່າ panel.', + withImageHelper: 'ສຳຮອງ Image ຂອງແອັບດ້ວຍ, ແຕ່ຈະເຮັດໃຫ້ຂະໜາດ snapshot ໃຫຍ່ຂຶ້ນ.', + ignoreApp: 'ຍົກເວັ້ນແອັບ', + withImage: 'ສຳຮອງ Application Image', + retainCopies: 'ຈຳນວນທີ່ເກັບໄວ້', + retryTimes: 'ລອງໃໝ່ເມື່ອລົ້ມເຫຼວ', + timeout: 'ໝົດເວລາ', + ignoreErr: 'ລະເວັ້ນຂໍ້ຜິດພາດ', + ignoreErrHelper: 'ລະເວັ້ນຂໍ້ຜິດພາດລະຫວ່າງການສຳຮອງເພື່ອໃຫ້ວຽກທັງໝົດສຳເລັດ', + retryTimesHelper: '0 ໝາຍເຖິງບໍ່ມີການລອງໃໝ່', + retainCopiesHelper: 'ຈຳນວນບັນທຶກການເຮັດວຽກ ແລະ log ທີ່ຕ້ອງການເກັບໄວ້', + retainCopiesHelper1: 'ຈຳນວນໄຟລ໌ສຳຮອງທີ່ຕ້ອງການເກັບໄວ້', + retainCopiesUnit: ' ຊຸດ (ເບິ່ງ)', + cronSpecRule: 'ຮູບແບບຮອບວຽນໃນແຖວທີ {0} ບໍ່ຖືກຕ້ອງ. ກະລຸນາກວດສອບ!', + cronSpecRule2: 'ຮູບແບບຮອບວຽນບໍ່ຖືກຕ້ອງ, ກະລຸນາກວດສອບ!', + perMonthHelper: 'ເຮັດວຽກວັນທີ {0} ຂອງທຸກເດືອນ ເວລາ {1}:{2}', + perWeekHelper: 'ເຮັດວຽກທຸກອາທິດໃນວັນ{0} ເວລາ {1}:{2}', + perDayHelper: 'ເຮັດວຽກທຸກມື້ ເວລາ {0}:{1}', + perHourHelper: 'ເຮັດວຽກທຸກຊົ່ວໂມງທີ່ນາທີທີ {0}', + perNDayHelper: 'ເຮັດວຽກທຸກໆ {0} ມື້ ເວລາ {1}:{2}', + perNHourHelper: 'ເຮັດວຽກທຸກໆ {0} ຊົ່ວໂມງທີ່ນາທີທີ {1}', + perNMinuteHelper: 'ເຮັດວຽກທຸກໆ {0} ນາທີ', + perNSecondHelper: 'ເຮັດວຽກທຸກໆ {0} ວິນາທີ', + perMonth: 'ທຸກເດືອນ', + perWeek: 'ທຸກອາທິດ', + perHour: 'ທຸກຊົ່ວໂມງ', + perNDay: 'ທຸກໆ N ມື້', + perDay: 'ທຸກມື້', + perNHour: 'ທຸກໆ N ຊົ່ວໂມງ', + perNMinute: 'ທຸກໆ N ນາທີ', + perNSecond: 'ທຸກໆ N ວິນາທີ', + day: 'ມື້', + monday: 'ວັນຈັນ', + tuesday: 'ວັນອັງຄານ', + wednesday: 'ວັນພຸດ', + thursday: 'ວັນພະຫັດ', + friday: 'ວັນສຸກ', + saturday: 'ວັນເສົາ', + sunday: 'ວັນອາທິດ', + shellContent: 'ສະຄຣິບ', + executor: 'ຜູ້ລັນຄຳສັ່ງ', + errRecord: 'ບັນທຶກທີ່ຜິດພາດ', + errHandle: 'Cronjob ເຮັດວຽກລົ້ມເຫຼວ', + noRecord: 'ເມື່ອ Cron Job ເຮັດວຽກ, ບັນທຶກຈະສະແດງຢູ່ທີ່ນີ້.', + cleanData: 'ລ້າງຂໍ້ມູນ', + cleanRemoteData: 'ລຶບຂໍ້ມູນໃນ cloud', + cleanDataHelper: 'ລຶບໄຟລ໌ສຳຮອງທີ່ສ້າງຂຶ້ນລະຫວ່າງວຽກນີ້.', + noLogs: 'ຍັງບໍ່ມີ output ຂອງວຽກ...', + errPath: 'ເສັ້ນທາງສຳຮອງ [{0}] ຜິດພາດ, ບໍ່ສາມາດດາວໂຫຼດໄດ້!', + cutWebsiteLog: 'ການໝູນວຽນບັນທຶກເວັບໄຊ (Rotation)', + cutWebsiteLogHelper: 'ໄຟລ໌ບັນທຶກທີ່ໝູນວຽນຈະຖືກສຳຮອງໄວ້ໃນໂຟນເດີສຳຮອງຂອງ 1Panel.', + syncIpGroup: 'ຊິງໂຄໄນກຸ່ມ IP ຂອງ WAF', + syncIpGroupHelper: 'ຊິງໂຄໄນກຸ່ມ IP ໄລຍະໄກທີ່ໃຊ້ໃນ WAF allowlists ແລະ blocklists', + requestExpirationTime: 'ເວລາໝົດອາຍຸຂອງຄຳຂໍອັບໂຫຼດ (ຊົ່ວໂມງ)', + unitHours: 'ຫົວໜ່ວຍ: ຊົ່ວໂມງ', + alertTitle: 'ວຽກທີ່ກຳນົດເວລາ - {0} 「{1}」 ແຈ້ງເຕືອນວຽກລົ້ມເຫຼວ', + library: { + script: 'ສະຄຣິບ', + syncNow: 'ຊິງໂຄໄນດຽວນີ້', + turnOnSync: 'ເປີດການຊິງໂຄໄນອັດຕະໂນມັດ', + turnOnSyncHelper: 'ການເປີດຊິງໂຄໄນອັດຕະໂນມັດຈະດຳເນີນການໃນຊ່ວງເຊົ້າມືດຂອງທຸກມື້', + turnOffSync: 'ປິດການຊິງໂຄໄນອັດຕະໂນມັດ', + turnOffSyncHelper: 'ການປິດຊິງໂຄໄນອັດຕະໂນມັດອາດເຮັດໃຫ້ຂໍ້ມູນສະຄຣິບຫຼ້າຊ້າ, ຢືນຢັນຫຼືບໍ່?', + isInteractive: 'ມີການໂຕ້ຕອບ', + interactive: 'ສະຄຣິບແບບໂຕ້ຕອບ', + interactiveHelper: 'ຕ້ອງການການປ້ອນຂໍ້ມູນຈາກຜູ້ໃຊ້ລະຫວ່າງລັນ ແລະ ບໍ່ສາມາດໃຊ້ໃນວຽກກຳນົດເວລາໄດ້.', + library: 'ຄັງສະຄຣິບ', + remoteLibrary: 'ຄັງສະຄຣິບໄລຍະໄກ', + create: 'ເພີ່ມສະຄຣິບ', + edit: 'ແກ້ໄຂສະຄຣິບ', + groupHelper: 'ຕັ້ງກຸ່ມຕາມຄຸນລັກສະນະຂອງສະຄຣິບ ເພື່ອໃຫ້ຄົ້ນຫາໄດ້ໄວຂຶ້ນ.', + handleHelper: 'ລັນສະຄຣິບ {1} ໃນ {0}, ຕ້ອງການຕໍ່ຫຼືບໍ່?', + noSuchApp: 'ກວດບໍ່ພົບບໍລິການ {0}. ກະລຸນາຕິດຕັ້ງຜ່ານຄັງສະຄຣິບກ່ອນ!', + syncHelper: 'ກຳລັງຈະຊິງໂຄໄນຄັງສະຄຣິບລະບົບ. ສົ່ງຜົນກັບສະຄຣິບລະບົບເທົ່ານັ້ນ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + }, + cleanLog: 'ລ້າງບັນທຶກອັດຕະໂນມັດ', + cleanLogscope: 'ການເກັບຮັກສາບັນທຶກ', }, - swap: { - swap: 'Swap Partition', - swapHelper1: - 'ຂະໜາດຂອງ swap ຄວນເປັນ 1 ເຖິງ 2 ເທົ່າຂອງ memory ທາງກາຍະພາບ, ປັບໄດ້ຕາມຄວາມຕ້ອງການ;', - swapHelper2: - 'ກ່ອນສ້າງໄຟລ໌ swap ຢືນຢັນວ່າ disk ລະບົບມີພື້ນທີ່ຫວ່າງພຽງພໍ;', - swapHelper3: - 'Swap ຊ່ວຍຫຼຸດຄວາມກົດດັນຂອງ memory ແຕ່ເປັນພຽງທາງເລືອກສຳຮອງ. ການໃຊ້ swap ຫຼາຍເກີນໄປອາດເຮັດໃຫ້ລະບົບຊ້າລົງ;', - swapHelper4: 'ຄວນຕິດຕາມການໃຊ້ງານ swap ເປັນປະຈຳ.', - swapDeleteHelper: - 'ການດຳເນີນການນີ້ຈະລຶບ Swap partition {0}. ເພື່ອຄວາມປອດໄພຂອງລະບົບ ໄຟລ໌ທີ່ກ່ຽວຂ້ອງຈະບໍ່ຖືກລຶບອັດຕະໂນມັດ ທ່ານຕ້ອງລຶບດ້ວຍຕົນເອງ!', - saveHelper: 'ກະລຸນາບັນທຶກການຕັ້ງຄ່າປັດຈຸບັນກ່ອນ!', - saveSwap: 'ການບັນທຶກຈະປັບຂະໜາດ Swap partition {0} ເປັນ {1}. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - swapMin: 'ຂະໜາດ partition ຕ່ຳສຸດແມ່ນ 40 KB. ກະລຸນາແກ້ໄຂ!', - swapMax: 'ຂະໜາດ partition ສູງສຸດແມ່ນ {0}. ກະລຸນາແກ້ໄຂ!', - swapOff: 'ຂະໜາດ partition ຕ່ຳສຸດແມ່ນ 40 KB. ການຕັ້ງເປັນ 0 ຈະເປັນການປິດ Swap partition.', + monitor: { + globalFilter: 'ຕົວກອງທົ່ວໂລກ', + enableMonitor: 'ສະຖານະການຕິດຕາມ', + storeDays: 'ຈຳນວນມື້ທີ່ເກັບໄວ້', + defaultNetwork: 'ກາດເຄືອຂ່າຍເລີ່ມຕົ້ນ', + defaultNetworkHelper: 'ກາດເຄືອຂ່າຍທີ່ຈະສະແດງໃນໜ້າ monitor ແລະ ພາບລວມ', + defaultIO: 'Disk ເລີ່ມຕົ້ນ', + defaultIOHelper: 'Disk ທີ່ຈະສະແດງໃນໜ້າ monitor ແລະ ພາບລວມ', + cleanMonitor: 'ລ້າງບັນທຶກການຕິດຕາມ', + cleanHelper: 'ການດຳເນີນການນີ້ຈະລ້າງບັນທຶກການຕິດຕາມທັງໝົດລວມເຖິງ GPU. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + avgLoad: 'ຄ່າ Load ສະເລ່ຍ', + loadDetail: 'ລາຍລະອຽດ Load', + resourceUsage: 'ການນຳໃຊ້', + networkCard: 'Network interface', + read: 'ອ່ານ', + write: 'ຂຽນ', + readWriteCount: 'ການດຳເນີນການ I/O', + readWriteTime: 'ຄວາມໜ່ວງ I/O', + today: 'ມື້ນີ້', + yesterday: 'ມື້ວານນີ້', + lastNDay: '{0} ມື້ທີ່ຜ່ານມາ', + lastNMonth: '{0} ເດືອນທີ່ຜ່ານມາ', + lastHalfYear: 'ເຄິ່ງປີທີ່ຜ່ານມາ', + memory: 'ໜ່ວຍຄວາມຈຳ', + percent: 'ເປີເຊັນ', + cache: 'Cache', + disk: 'Disk', + network: 'Network', + up: 'ອັບໂຫຼດ', + down: 'ດາວໂຫຼດ', + interval: 'ໄລຍະການເກັບຂໍ້ມູນ', + intervalHelper: 'ປ້ອນໄລຍະການເກັບຂໍ້ມູນທີ່ເໝາະສົມ (10 ວິນາທີ - 12 ຊົ່ວໂມງ)', + runtimeDiagnostics: 'ການວິນິດໄສຣັນທາມ', + runtimeRSS: 'ໜ່ວຍຄວາມຈຳຂອງໂປຣເຊສ (RSS)', + runtimeHeapAlloc: 'ໜ່ວຍຄວາມຈຳ Heap', + runtimeHeapObjects: 'ອອບເຈັກໃນ Heap', + runtimeGoroutines: 'Goroutine', + goroutineSnapshot: 'ສະແນັບຊັອດ Goroutine', + goroutineSummary: '{0} Goroutine ຖືກຈັດກຸ່ມເປັນ {1} Call Stack', + goroutineTruncated: 'ສະແນັບຊັອດມີຂະໜາດໃຫຍ່ເກີນໄປ. ສະແດງສະເພາະບາງສ່ວນຂອງ Call Stack.', + captureSnapshot: 'ໂຫຼດສະແນັບຊັອດໃໝ່', + count: 'ຈຳນວນ', + topFunction: 'ຟັງຊັນຫຼັກ', + manualCapture: 'ບັນທຶກດ້ວຍຕົນເອງ', + startCapture: 'ເລີ່ມບັນທຶກ', + capturing: 'ກຳລັງບັນທຶກ', + captureSuccess: 'ສ້າງໄຟລ໌ວິນິດໄສແລ້ວ; ເລີ່ມດາວໂຫຼດແລ້ວ', + profileCPU: 'CPU', + profileHeap: 'Heap', + profileGoroutine: 'Goroutine', + profileMutex: 'Mutex', + profileBlock: 'ບລັອກ', + runtimeRSSDesc: 'ໜ່ວຍຄວາມຈຳກາຍະພາບທີ່ໂປຣເຊສໃຊ້ຢູ່ໃນປັດຈຸບັນ, ລວມທັງ Go Heap, Thread Stack ແລະ Native Memory.', + runtimeHeapAllocDesc: + 'ໜ່ວຍຄວາມຈຳທີ່ຈັດສັນໃນ Go Heap ແລະ ຍັງບໍ່ຖືກປ່ອຍ. ຖ້າເພີ່ມຂຶ້ນຕໍ່ເນື່ອງ ອາດສະແດງວ່າມີອອບເຈັກຖືກເກັບໄວ້.', + runtimeHeapObjectsDesc: + 'ຈຳນວນອອບເຈັກທີ່ຍັງໃຊ້ງານໃນ Go Heap. ຖ້າເພີ່ມຂຶ້ນຕໍ່ເນື່ອງ ອາດສະແດງວ່າມີອອບເຈັກຖືກເກັບໄວ້.', + runtimeGoroutineDesc: 'ວຽກຄູ່ຂະໜານຂະໜາດນ້ອຍໃນປັດຈຸບັນ. ຖ້າເພີ່ມຂຶ້ນຕໍ່ເນື່ອງ ຄວນກວດສອບ Goroutine Leak.', + profileCPUDesc: 'ສຸ່ມເກັບ CPU Call Stack ຕາມໄລຍະເວລາທີ່ເລືອກ ເພື່ອຊອກຫາຟັງຊັນທີ່ໃຊ້ CPU ຈິງ.', + profileHeapDesc: + 'ບັນທຶກອອບເຈັກໃນ Go Heap ທີ່ຍັງໃຊ້ງານ ແລະ Allocation Stack ເພື່ອກວດສອບການເພີ່ມຂອງໜ່ວຍຄວາມຈຳຢ່າງຕໍ່ເນື່ອງ.', + profileGoroutineDesc: 'ບັນທຶກສະຖານະ ແລະ Call Stack ຂອງທຸກ Goroutine ແລະ ຈັດກຸ່ມເສັ້ນທາງການເອີ້ນທີ່ຄືກັນ.', + profileMutexDesc: 'ວັດແທກເວລາລໍຖ້າທີ່ເກີດຈາກ Mutex Contention ເພື່ອຊອກຫາຈຸດທີ່ມີການແຂ່ງຂັນ Lock ສູງ.', + profileBlockDesc: 'ວັດແທກການບລັອກໃນ Channel, Select Statement ແລະ ກົນໄກ Synchronization.', }, - device: { - dnsHelper: 'DNS server', - dnsAlert: - 'ຄຳເຕືອນ! ການແກ້ໄຂໄຟລ໌ /etc/resolv.conf ຈະຖືກຣີເຊັດເປັນຄ່າເລີ່ມຕົ້ນຫຼັງຈາກເລີ່ມລະບົບໃໝ່.', - dnsHelper1: - 'ຖ້າມີຫຼາຍ DNS ໃຫ້ຂຶ້ນແຖວໃໝ່. ຕົວຢ່າງ:\n114.114.114.114\n8.8.8.8', - hostsHelper: 'ການແປງຊື່ Host (Hostname resolution)', - hosts: 'Domain', - hostAlert: 'ຊື່ອງບັນທຶກທີ່ເປັນ comment ຢູ່, ຄລິກປຸ່ມ All configuration ເພື່ອເບິ່ງ ຫຼື ຕັ້ງຄ່າ', - toolbox: 'ການຕັ້ງຄ່າດ່ວນ', - hostname: 'ຊື່ Host (Hostname)', - passwd: 'ລະຫັດຜ່ານລະບົບ', - passwdHelper: 'ຕົວອັກສອນທີ່ປ້ອນບໍ່ສາມາດລວມມີ $ ແລະ &', - timeZone: 'ເຂດເວລາລະບົບ', - localTime: 'ເວລາຂອງ Server', - timeZoneChangeHelper: 'ການແກ້ໄຂເຂດເວລາລະບົບຕ້ອງເລີ່ມບໍລິການໃໝ່. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - timeZoneHelper: - 'ຖ້າບໍ່ໄດ້ຕິດຕັ້ງຄຳສັ່ງ "timedatectl" ອາດຈະປ່ຽນເຂດເວລາບໍ່ໄດ້ ເພາະລະບົບໃຊ້ຄຳສັ່ງນັ້ນໃນການປ່ຽນແປງ.', - timeZoneCN: 'Beijing', - timeZoneAM: 'Los Angeles', - timeZoneNY: 'New York', - ntpALi: 'Alibaba', - ntpGoogle: 'Google', - syncSite: 'NTP server', - hostnameHelper: - 'ການແກ້ໄຂຊື່ Host ຂຶ້ນກັບຄຳສັ່ງ "hostnamectl". ຖ້າບໍ່ໄດ້ຕິດຕັ້ງ ການແກ້ໄຂອາດລົ້ມເຫຼວ.', - userHelper: - 'ຊື່ຜູ້ໃຊ້ຂຶ້ນກັບຄຳສັ່ງ "whoami" ໃນການດຶງຂໍ້ມູນ.', - passwordHelper: - 'ການແກ້ໄຂລະຫັດຜ່ານຂຶ້ນກັບຄຳສັ່ງ "chpasswd". ຖ້າບໍ່ໄດ້ຕິດຕັ້ງ ການແກ້ໄຂອາດລົ້ມເຫຼວ.', - hostHelper: - 'ມີຄ່າຫວ່າງໃນເນື້ອຫາທີ່ໃຫ້ມາ. ກະລຸນາກວດສອບ ແລະ ລອງໃໝ່!', - dnsCheck: 'ທົດສອບການໃຊ້ງານ', - dnsOK: 'ຂໍ້ມູນການກຳນົດຄ່າ DNS ພ້ອມໃຊ້ງານ!', - dnsTestFailed: 'ຂໍ້ມູນການກຳນົດຄ່າ DNS ບໍ່ພ້ອມໃຊ້ງານ.', - syncSiteHelper: 'ຊິງໂຄໄນເວລາລະບົບກັບ {0}. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + terminal: { + local: 'ພາຍໃນເຄື່ອງ (Local)', + defaultConn: 'ການເຊື່ອມຕໍ່ເລີ່ມຕົ້ນ', + defaultConnHelper: + 'ການດຳເນີນການນີ້ຈະເຊື່ອມຕໍ່ກັບ node terminal ອັດຕະໂນມັດຫຼັງຈາກເປີດ terminal ສຳລັບ 【{0}】. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + withReset: 'ຣີເຊັດຂໍ້ມູນການເຊື່ອມຕໍ່', + localConnJump: + 'ຂໍ້ມູນການເຊື່ອມຕໍ່ເລີ່ມຕົ້ນຖືກຈັດການໃນ [Terminal - Settings]. ຖ້າເຊື່ອມຕໍ່ບໍ່ໄດ້ ໃຫ້ແກ້ໄຂຢູ່ທີ່ນັ້ນ!', + nodeAdminLocalOnly: 'Node administrators ຮອງຮັບສະເພາະ local terminals.', + localHelper: 'ຊື່ `local` ໃຊ້ເພື່ອລະບຸພາຍໃນລະບົບເທົ່ານັ້ນ', + connLocalErr: 'ບໍ່ສາມາດຢືນຢັນຕົວຕົນອັດຕະໂນມັດໄດ້, ກະລຸນາປ້ອນຂໍ້ມູນການເຂົ້າລະບົບ local server.', + testConn: 'ທົດສອບການເຊື່ອມຕໍ່', + saveAndConn: 'ບັນທຶກ ແລະ ເຊື່ອມຕໍ່', + connTestOk: 'ຂໍ້ມູນການເຊື່ອມຕໍ່ໃຊ້ງານໄດ້', + connTestFailed: 'ການເຊື່ອມຕໍ່ບໍ່ພ້ອມໃຊ້ງານ, ກະລຸນາກວດສອບຂໍ້ມູນ.', + host: 'Host', + createConn: 'ສ້າງການເຊື່ອມຕໍ່ໃໝ່', + noHost: 'ບໍ່ມີ host', + groupChange: 'ປ່ຽນກຸ່ມ', + expand: 'ຂະຫຍາຍທັງໝົດ', + fold: 'ຫຍໍ້ທັງໝົດ', + batchInput: 'ປະມວນຜົນແບບກຸ່ມ (Batch)', + quickCommand: 'ຄຳສັ່ງດ່ວນ', + noSuchCommand: 'ບໍ່ພົບຂໍ້ມູນຄຳສັ່ງດ່ວນໃນໄຟລ໌ CSV ທີ່ນຳເຂົ້າ, ກະລຸນາກວດສອບ!', + quickCommandHelper: 'ທ່ານສາມາດໃຊ້ຄຳສັ່ງດ່ວນໄດ້ທີ່ດ້ານລຸ່ມຂອງ "Terminals -> Terminals".', + quickCommandBatchHelper: 'ໜຶ່ງຄຳສັ່ງຕໍ່ແຖວ, ໃຊ້ຮູບແບບ ຊື່---ຄຳສັ່ງ, ຕົວຢ່າງ: Check disk---df -h', + groupDeleteHelper: 'ຫຼັງຈາກລຶບກຸ່ມແລ້ວ, ການເຊື່ອມຕໍ່ທັງໝົດໃນກຸ່ມຈະຖືກຍ້າຍໄປຍັງກຸ່ມເລີ່ມຕົ້ນ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + command: 'ຄຳສັ່ງ', + quickCmd: 'ຄຳສັ່ງດ່ວນ', + addHost: 'ເພີ່ມ', + localhost: 'Localhost', + ip: 'ທີ່ຢູ່ (Address)', + authMode: 'ການຢືນຢັນຕົວຕົນ', + passwordMode: 'ລະຫັດຜ່ານ', + rememberPassword: 'ຈື່ຂໍ້ມູນການຢືນຢັນຕົວຕົນ', + keyMode: 'PrivateKey', + key: 'Private key', + keyPassword: 'ລະຫັດຜ່ານ Private key', + emptyTerminal: 'ຍັງບໍ່ມີ terminal ທີ່ເຊື່ອມຕໍ່.', + lineHeight: 'ຄວາມສູງຂອງແຖວ', + letterSpacing: 'ໄລຍະຫ່າງຕົວອັກສອນ', + fontSize: 'ຂະໜາດຕົວອັກສອນ', + fontFamily: 'ຊຸດຟອນ', + fontFamilySupportHelper: + 'ເລືອກ ຫຼື ປ້ອນຊື່ຟອນ. ການສະແດງຜົນຕົວຈິງຂຶ້ນກັບຟອນທີ່ຕິດຕັ້ງໃນເຄື່ອງ/ບຣາວເຊີ. ຖ້າຫວ່າງໄວ້ຈະໃຊ້ຟອນເລີ່ມຕົ້ນ.', + backgroundColor: 'ສີພື້ນຫຼັງ', + foregroundColor: 'ສີຕົວອັກສອນ', + cursorBlink: 'Cursor ກະພິບ', + cursorStyle: 'ຮູບແບບ Cursor', + cursorUnderline: 'ຂີດກ້ອງ', + cursorBlock: 'ບລັອກ', + cursorBar: 'ແຖບ', + scrollback: 'ຈຳນວນແຖວຍ້ອນຫຼັງ', + scrollSensitivity: 'ຄວາມໄວການເລື່ອນ (Scroll)', + aiAssistant: 'AI Assistant', + aiAccountHelper: + 'ໃຊ້ບັນຊີໂມເດວທີ່ເລືອກເພື່ອສ້າງ ແລະ ຕື່ມຄຳສັ່ງ. ສຳລັບໂມເດວພາຍໃນເຄື່ອງເຊັ່ນ Ollama ແລະ vLLM ໃຫ້ໃຊ້ບັນຊີໂມເດວທີ່ກຳນົດເອງ.', + aiPrefix: 'Prefix ເລີ່ມຕົ້ນ AI', + aiPrefixHelper: + 'ປ້ອນ "prefix + ຍະຫວ່າງ" ແລະ ກົດ Enter ເພື່ອໃຫ້ AI ສ້າງຄຳສັ່ງ, ຕົວຢ່າງ: {0} help me check disk usage.', + aiRiskCommands: 'ສະກັດກັ້ນຄຳສັ່ງທີ່ມີຄວາມສ່ຽງ', + aiRiskCommandsHelper: + 'ກຳນົດຄຳສັ່ງທີ່ມີຄວາມສ່ຽງທີ່ຈະສະກັດກັ້ນ, ໜຶ່ງລາຍການຕໍ່ແຖວ. ຖ້າກົງກັນ AI ຈະບໍ່ສ້າງຄຳສັ່ງ ແລະ ຈະສົ່ງກັບມາເປັນ comment ແທນ.', + aiSummary: 'ເມື່ອເລີ່ມຕົ້ນແຖວດ້ວຍ prefix {0} ແລະ ກົດ Enter, ຈະເປັນການເອີ້ນໃຊ້ AI ສ້າງຄຳສັ່ງ.', + aiPrefixAsciiVisible: + 'ຮອງຮັບສະເພາະຕົວອັກສອນ ASCII ທີ່ເຫັນໄດ້ເທົ່ານັ້ນ. ບໍ່ອະນຸຍາດໃຫ້ໃຊ້ຍະຫວ່າງ, ຕົວອັກສອນ CJK, ແລະ ສັນຍະລັກເຕັມຄວາມກວ້າງ.', + saveHelper: 'ທ່ານແນ່ໃຈຫຼືບໍ່ວ່າຕ້ອງການບັນທຶກການກຳນົດຄ່າ terminal ນີ້?', }, - fail2ban: { - sshPort: 'ຕິດຕາມພອດ SSH', - sshPortHelper: 'ປັດຈຸບັນ Fail2ban ຕິດຕາມພອດ SSH ຂອງ host', - unActive: 'ບໍລິການ Fail2ban ຍັງບໍ່ໄດ້ເປີດໃຊ້ງານ.', - operation: 'ທ່ານຈະດຳເນີນການ "{0}" ໃນບໍລິການ Fail2ban. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - fail2banChange: 'ແກ້ໄຂການກຳນົດຄ່າ Fail2ban', - ignoreHelper: 'ລາຍການ IP ໃນ allowlist ຈະບໍ່ຖືກບລັອກ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - bannedHelper: 'ລາຍການ IP ໃນ blocklist ຈະຖືກບລັອກໂດຍ server. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - maxRetry: 'ຈຳນວນຄັ້ງທີ່ອະນຸຍາດໃຫ້ລອງໃໝ່', - banTime: 'ໄລຍະເວລາການບລັອກ', - banTimeHelper: 'ຄ່າເລີ່ມຕົ້ນແມ່ນ 10 ນາທີ, -1 ໝາຍເຖິງບລັອກຖາວອນ', - banTimeRule: 'ປ້ອນໄລຍະເວລາການບລັອກທີ່ຖືກຕ້ອງ ຫຼື -1', - banAllTime: 'ບລັອກຖາວອນ', - findTime: 'ຊ່ວງເວລາທີ່ກວດສອບ', - banAction: 'ການດຳເນີນການບລັອກ', - banActionOption: 'ບລັອກ IP ທີ່ລະບຸໂດຍໃຊ້ {0}', - allPorts: ' (ທຸກພອດ)', - ignoreIP: 'IP allowlist', - bannedIP: 'IP blocklist', - logPath: 'ເສັ້ນທາງບັນທຶກ (Log)', - logPathHelper: 'ເລີ່ມຕົ້ນແມ່ນ /var/log/secure ຫຼື /var/log/auth.log', - }, - ftp: { - ftp: 'ບັນຊີ FTP', - notStart: 'ບໍລິການ FTP ຍັງບໍ່ໄດ້ລັນ, ກະລຸນາເລີ່ມກ່ອນ!', - operation: 'ຈະດຳເນີນການ "{0}" ໃນບໍລິການ FTP. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - noPasswdMsg: 'ບໍ່ສາມາດດຶງລະຫັດຜ່ານ FTP ປັດຈຸບັນໄດ້. ກະລຸນາຕັ້ງລະຫັດຜ່ານແລ້ວລອງໃໝ່.', - enableHelper: 'ການເປີດໃຊ້ບັນຊີ FTP ທີ່ເລືອກຈະຄືນສິດການເຂົ້າເຖິງ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - disableHelper: 'ການປິດໃຊ້ບັນຊີ FTP ທີ່ເລືອກຈະຍົກເລີກສິດການເຂົ້າເຖິງ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - syncHelper: 'ຊິງໂຄໄນຂໍ້ມູນບັນຊີ FTP ລະຫວ່າງ server ແລະ ຖານຂໍ້ມູນ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - dirSystem: - 'ໂຟນເດີນີ້ຖືກສະຫງວນໄວ້ໂດຍລະບົບ. ການແກ້ໄຂອາດເຮັດໃຫ້ລະບົບມີບັນຫາ!', - dirHelper: 'ການເປີດໃຊ້ FTP ຕ້ອງມີການປ່ຽນແປງສິດການເຂົ້າເຖິງໂຟນເດີ - ກະລຸນາເລືອກດ້ວຍຄວາມລະມັດລະວັງ', - dirMsg: 'ການເປີດໃຊ້ FTP ຈະແກ້ໄຂສິດຂອງທັງໂຟນເດີ {0}. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - }, - clam: { - clam: 'ສະແກນໄວຣັສ', - cron: 'ສະແກນຕາມເວລາ', - cronHelper: 'Commercial Edition ຮອງຮັບການສະແກນຕາມເວລາ', - specErr: 'ຮູບແບບຮອບວຽນການເຮັດວຽກບໍ່ຖືກຕ້ອງ!', - disableMsg: - 'ການຢຸດວຽກຕາມເວລາຈະເຮັດໃຫ້ການສະແກນບໍ່ເຮັດວຽກອັດຕະໂນມັດ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - enableMsg: - 'ການເປີດວຽກຕາມເວລາຈະໃຫ້ການສະແກນເຮັດວຽກອັດຕະໂນມັດຕາມຮອບວຽນ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', - showFresh: 'ສະແດງບໍລິການອັບເດດຖານຂໍ້ມູນໄວຣັສ', - hideFresh: 'ຊື່ອງບໍລິການອັບເດດຖານຂໍ້ມູນໄວຣັສ', - clamHelper: - 'ການກຳນົດຄ່າຕ່ຳສຸດສຳລັບ ClamAV: RAM 3 GiB ຂຶ້ນໄປ, CPU single-core 2.0 GHz ຂຶ້ນໄປ, ແລະ ພື້ນທີ່ຫວ່າງຢ່າງໜ້ອຍ 5 GiB.', - notStart: 'ບໍລິການ ClamAV ຍັງບໍ່ໄດ້ລັນ, ກະລຸນາເລີ່ມກ່ອນ!', - removeRecord: 'ລຶບໄຟລ໌ລາຍງານ', - noRecords: 'ຄລິກປຸ່ມ "Trigger" ເພື່ອເລີ່ມສະແກນ ແລະ ຈະເຫັນບັນທຶກຢູ່ທີ່ນີ້.', - removeInfected: 'ລຶບໄຟລ໌ທີ່ຕິດໄວຣັສ', - removeInfectedHelper: - 'ລຶບໄຟລ໌ໄວຣັສທີ່ກວດພົບເພື່ອຄວາມປອດໄພຂອງ server.', - clamCreate: 'ສ້າງກົດການສະແກນ', - infectedStrategy: 'ວິທີການຈັດການເມື່ອພົບໄວຣັສ', - removeHelper: 'ລຶບໄຟລ໌ໄວຣັສ, ເລືອກດ້ວຍຄວາມລະມັດລະວັງ!', - move: 'ຍ້າຍ', - moveHelper: 'ຍ້າຍໄຟລ໌ໄວຣັສໄປຍັງໂຟນເດີທີ່ລະບຸ', - copyHelper: 'ຄັດລອກໄຟລ໌ໄວຣັສໄປຍັງໂຟນເດີທີ່ລະບຸ', - none: 'ບໍ່ຕ້ອງເຮັດຫຍັງ', - noneHelper: 'ບໍ່ດຳເນີນການໃດໆກັບໄຟລ໌ໄວຣັສ', - scanDir: 'ໂຟນເດີທີ່ຈະສະແກນ', - infectedDir: 'ໂຟນເດີເກັບໄຟລ໌ທີ່ຕິດໄວຣັສ', - scanDate: 'ວັນທີສະແກນ', - scanResult: 'ສ່ວນທ້າຍຂອງບັນທຶກການສະແກນ', + toolbox: { + common: { + toolboxHelper: 'ສຳລັບບັນຫາການຕິດຕັ້ງ ແລະ ການໃຊ້ງານ, ເບິ່ງໄດ້ທີ່', + }, + swap: { + swap: 'Swap Partition', + swapHelper1: 'ຂະໜາດຂອງ swap ຄວນເປັນ 1 ເຖິງ 2 ເທົ່າຂອງ memory ທາງກາຍະພາບ, ປັບໄດ້ຕາມຄວາມຕ້ອງການ;', + swapHelper2: 'ກ່ອນສ້າງໄຟລ໌ swap ຢືນຢັນວ່າ disk ລະບົບມີພື້ນທີ່ຫວ່າງພຽງພໍ;', + swapHelper3: + 'Swap ຊ່ວຍຫຼຸດຄວາມກົດດັນຂອງ memory ແຕ່ເປັນພຽງທາງເລືອກສຳຮອງ. ການໃຊ້ swap ຫຼາຍເກີນໄປອາດເຮັດໃຫ້ລະບົບຊ້າລົງ;', + swapHelper4: 'ຄວນຕິດຕາມການໃຊ້ງານ swap ເປັນປະຈຳ.', + swapDeleteHelper: + 'ການດຳເນີນການນີ້ຈະລຶບ Swap partition {0}. ເພື່ອຄວາມປອດໄພຂອງລະບົບ ໄຟລ໌ທີ່ກ່ຽວຂ້ອງຈະບໍ່ຖືກລຶບອັດຕະໂນມັດ ທ່ານຕ້ອງລຶບດ້ວຍຕົນເອງ!', + saveHelper: 'ກະລຸນາບັນທຶກການຕັ້ງຄ່າປັດຈຸບັນກ່ອນ!', + saveSwap: 'ການບັນທຶກຈະປັບຂະໜາດ Swap partition {0} ເປັນ {1}. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + swapMin: 'ຂະໜາດ partition ຕ່ຳສຸດແມ່ນ 40 KB. ກະລຸນາແກ້ໄຂ!', + swapMax: 'ຂະໜາດ partition ສູງສຸດແມ່ນ {0}. ກະລຸນາແກ້ໄຂ!', + swapOff: 'ຂະໜາດ partition ຕ່ຳສຸດແມ່ນ 40 KB. ການຕັ້ງເປັນ 0 ຈະເປັນການປິດ Swap partition.', + }, + device: { + dnsHelper: 'DNS server', + dnsAlert: 'ຄຳເຕືອນ! ການແກ້ໄຂໄຟລ໌ /etc/resolv.conf ຈະຖືກຣີເຊັດເປັນຄ່າເລີ່ມຕົ້ນຫຼັງຈາກເລີ່ມລະບົບໃໝ່.', + dnsHelper1: 'ຖ້າມີຫຼາຍ DNS ໃຫ້ຂຶ້ນແຖວໃໝ່. ຕົວຢ່າງ:\n114.114.114.114\n8.8.8.8', + hostsHelper: 'ການແປງຊື່ Host (Hostname resolution)', + hosts: 'Domain', + hostAlert: 'ຊື່ອງບັນທຶກທີ່ເປັນ comment ຢູ່, ຄລິກປຸ່ມ All configuration ເພື່ອເບິ່ງ ຫຼື ຕັ້ງຄ່າ', + toolbox: 'ການຕັ້ງຄ່າດ່ວນ', + hostname: 'ຊື່ Host (Hostname)', + passwd: 'ລະຫັດຜ່ານລະບົບ', + passwdHelper: 'ຕົວອັກສອນທີ່ປ້ອນບໍ່ສາມາດລວມມີ $ ແລະ &', + timeZone: 'ເຂດເວລາລະບົບ', + localTime: 'ເວລາຂອງ Server', + timeZoneChangeHelper: 'ການແກ້ໄຂເຂດເວລາລະບົບຕ້ອງເລີ່ມບໍລິການໃໝ່. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + timeZoneHelper: + 'ຖ້າບໍ່ໄດ້ຕິດຕັ້ງຄຳສັ່ງ "timedatectl" ອາດຈະປ່ຽນເຂດເວລາບໍ່ໄດ້ ເພາະລະບົບໃຊ້ຄຳສັ່ງນັ້ນໃນການປ່ຽນແປງ.', + timeZoneCN: 'Beijing', + timeZoneAM: 'Los Angeles', + timeZoneNY: 'New York', + ntpALi: 'Alibaba', + ntpGoogle: 'Google', + syncSite: 'NTP server', + hostnameHelper: 'ການແກ້ໄຂຊື່ Host ຂຶ້ນກັບຄຳສັ່ງ "hostnamectl". ຖ້າບໍ່ໄດ້ຕິດຕັ້ງ ການແກ້ໄຂອາດລົ້ມເຫຼວ.', + userHelper: 'ຊື່ຜູ້ໃຊ້ຂຶ້ນກັບຄຳສັ່ງ "whoami" ໃນການດຶງຂໍ້ມູນ.', + passwordHelper: 'ການແກ້ໄຂລະຫັດຜ່ານຂຶ້ນກັບຄຳສັ່ງ "chpasswd". ຖ້າບໍ່ໄດ້ຕິດຕັ້ງ ການແກ້ໄຂອາດລົ້ມເຫຼວ.', + hostHelper: 'ມີຄ່າຫວ່າງໃນເນື້ອຫາທີ່ໃຫ້ມາ. ກະລຸນາກວດສອບ ແລະ ລອງໃໝ່!', + dnsCheck: 'ທົດສອບການໃຊ້ງານ', + dnsOK: 'ຂໍ້ມູນການກຳນົດຄ່າ DNS ພ້ອມໃຊ້ງານ!', + dnsTestFailed: 'ຂໍ້ມູນການກຳນົດຄ່າ DNS ບໍ່ພ້ອມໃຊ້ງານ.', + syncSiteHelper: 'ຊິງໂຄໄນເວລາລະບົບກັບ {0}. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + }, + fail2ban: { + sshPort: 'ຕິດຕາມພອດ SSH', + sshPortHelper: 'ປັດຈຸບັນ Fail2ban ຕິດຕາມພອດ SSH ຂອງ host', + unActive: 'ບໍລິການ Fail2ban ຍັງບໍ່ໄດ້ເປີດໃຊ້ງານ.', + operation: 'ທ່ານຈະດຳເນີນການ "{0}" ໃນບໍລິການ Fail2ban. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + fail2banChange: 'ແກ້ໄຂການກຳນົດຄ່າ Fail2ban', + ignoreHelper: 'ລາຍການ IP ໃນ allowlist ຈະບໍ່ຖືກບລັອກ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + bannedHelper: 'ລາຍການ IP ໃນ blocklist ຈະຖືກບລັອກໂດຍ server. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + maxRetry: 'ຈຳນວນຄັ້ງທີ່ອະນຸຍາດໃຫ້ລອງໃໝ່', + banTime: 'ໄລຍະເວລາການບລັອກ', + banTimeHelper: 'ຄ່າເລີ່ມຕົ້ນແມ່ນ 10 ນາທີ, -1 ໝາຍເຖິງບລັອກຖາວອນ', + banTimeRule: 'ປ້ອນໄລຍະເວລາການບລັອກທີ່ຖືກຕ້ອງ ຫຼື -1', + banAllTime: 'ບລັອກຖາວອນ', + findTime: 'ຊ່ວງເວລາທີ່ກວດສອບ', + banAction: 'ການດຳເນີນການບລັອກ', + banActionOption: 'ບລັອກ IP ທີ່ລະບຸໂດຍໃຊ້ {0}', + allPorts: ' (ທຸກພອດ)', + ignoreIP: 'IP allowlist', + bannedIP: 'IP blocklist', + logPath: 'ເສັ້ນທາງບັນທຶກ (Log)', + logPathHelper: 'ເລີ່ມຕົ້ນແມ່ນ /var/log/secure ຫຼື /var/log/auth.log', + }, + ftp: { + ftp: 'ບັນຊີ FTP', + notStart: 'ບໍລິການ FTP ຍັງບໍ່ໄດ້ລັນ, ກະລຸນາເລີ່ມກ່ອນ!', + operation: 'ຈະດຳເນີນການ "{0}" ໃນບໍລິການ FTP. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + noPasswdMsg: 'ບໍ່ສາມາດດຶງລະຫັດຜ່ານ FTP ປັດຈຸບັນໄດ້. ກະລຸນາຕັ້ງລະຫັດຜ່ານແລ້ວລອງໃໝ່.', + enableHelper: 'ການເປີດໃຊ້ບັນຊີ FTP ທີ່ເລືອກຈະຄືນສິດການເຂົ້າເຖິງ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + disableHelper: 'ການປິດໃຊ້ບັນຊີ FTP ທີ່ເລືອກຈະຍົກເລີກສິດການເຂົ້າເຖິງ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + syncHelper: 'ຊິງໂຄໄນຂໍ້ມູນບັນຊີ FTP ລະຫວ່າງ server ແລະ ຖານຂໍ້ມູນ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + dirSystem: 'ໂຟນເດີນີ້ຖືກສະຫງວນໄວ້ໂດຍລະບົບ. ການແກ້ໄຂອາດເຮັດໃຫ້ລະບົບມີບັນຫາ!', + dirHelper: 'ການເປີດໃຊ້ FTP ຕ້ອງມີການປ່ຽນແປງສິດການເຂົ້າເຖິງໂຟນເດີ - ກະລຸນາເລືອກດ້ວຍຄວາມລະມັດລະວັງ', + dirMsg: 'ການເປີດໃຊ້ FTP ຈະແກ້ໄຂສິດຂອງທັງໂຟນເດີ {0}. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + }, + clam: { + clam: 'ສະແກນໄວຣັສ', + cron: 'ສະແກນຕາມເວລາ', + cronHelper: 'Commercial Edition ຮອງຮັບການສະແກນຕາມເວລາ', + specErr: 'ຮູບແບບຮອບວຽນການເຮັດວຽກບໍ່ຖືກຕ້ອງ!', + disableMsg: 'ການຢຸດວຽກຕາມເວລາຈະເຮັດໃຫ້ການສະແກນບໍ່ເຮັດວຽກອັດຕະໂນມັດ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + enableMsg: 'ການເປີດວຽກຕາມເວລາຈະໃຫ້ການສະແກນເຮັດວຽກອັດຕະໂນມັດຕາມຮອບວຽນ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + showFresh: 'ສະແດງບໍລິການອັບເດດຖານຂໍ້ມູນໄວຣັສ', + hideFresh: 'ຊື່ອງບໍລິການອັບເດດຖານຂໍ້ມູນໄວຣັສ', + clamHelper: + 'ການກຳນົດຄ່າຕ່ຳສຸດສຳລັບ ClamAV: RAM 3 GiB ຂຶ້ນໄປ, CPU single-core 2.0 GHz ຂຶ້ນໄປ, ແລະ ພື້ນທີ່ຫວ່າງຢ່າງໜ້ອຍ 5 GiB.', + notStart: 'ບໍລິການ ClamAV ຍັງບໍ່ໄດ້ລັນ, ກະລຸນາເລີ່ມກ່ອນ!', + removeRecord: 'ລຶບໄຟລ໌ລາຍງານ', + noRecords: 'ຄລິກປຸ່ມ "Trigger" ເພື່ອເລີ່ມສະແກນ ແລະ ຈະເຫັນບັນທຶກຢູ່ທີ່ນີ້.', + removeInfected: 'ລຶບໄຟລ໌ທີ່ຕິດໄວຣັສ', + removeInfectedHelper: 'ລຶບໄຟລ໌ໄວຣັສທີ່ກວດພົບເພື່ອຄວາມປອດໄພຂອງ server.', + clamCreate: 'ສ້າງກົດການສະແກນ', + infectedStrategy: 'ວິທີການຈັດການເມື່ອພົບໄວຣັສ', + removeHelper: 'ລຶບໄຟລ໌ໄວຣັສ, ເລືອກດ້ວຍຄວາມລະມັດລະວັງ!', + move: 'ຍ້າຍ', + moveHelper: 'ຍ້າຍໄຟລ໌ໄວຣັສໄປຍັງໂຟນເດີທີ່ລະບຸ', + copyHelper: 'ຄັດລອກໄຟລ໌ໄວຣັສໄປຍັງໂຟນເດີທີ່ລະບຸ', + none: 'ບໍ່ຕ້ອງເຮັດຫຍັງ', + noneHelper: 'ບໍ່ດຳເນີນການໃດໆກັບໄຟລ໌ໄວຣັສ', + scanDir: 'ໂຟນເດີທີ່ຈະສະແກນ', + infectedDir: 'ໂຟນເດີເກັບໄຟລ໌ທີ່ຕິດໄວຣັສ', + scanDate: 'ວັນທີສະແກນ', + scanResult: 'ສ່ວນທ້າຍຂອງບັນທຶກການສະແກນ', tail: 'ແຖວ', infectedFiles: 'ໄຟລ໌ທີ່ຕິດເຊື້ອ', log: 'ລາຍລະອຽດ', @@ -2020,6 +2107,21 @@ toolbox: { loginAgent: 'ຕົວແທນການເຂົ້າລະບົບ', loginStatus: 'ສະຖານະ', system: 'ບັນທຶກລະບົບ', + hostSystem: 'ລັອກຂອງ Host', + previousPage: 'ໜ້າກ່ອນ', + nextPage: 'ໜ້າຖັດໄປ', + filter: 'ກັ່ນຕອງ', + service: 'ບໍລິການ', + priority: 'ລະດັບຄວາມສຳຄັນ', + priorityEmergency: 'ສຸກເສີນ', + priorityAlert: 'ແຈ້ງເຕືອນ', + priorityCritical: 'ຮ້າຍແຮງ', + priorityError: 'ຂໍ້ຜິດພາດ', + priorityWarning: 'ຄຳເຕືອນ', + priorityNotice: 'ແຈ້ງການ', + priorityInfo: 'ຂໍ້ມູນ', + priorityDebug: 'ດີບັກ', + message: 'ຂໍ້ຄວາມ', deleteLogs: 'ລ້າງບັນທຶກ', resource: 'ຊັບພະຍາກອນ', detail: { @@ -2056,6 +2158,10 @@ toolbox: { roles: 'ບົດບາດ', auth: 'ການຢືນຢັນຕົວຕົນ', alert: 'ການແຈ້ງເຕືອນ', + sync: 'ຊິງຊັບພະຍາກອນ', + exchange: 'ຊິງຊັບພະຍາກອນ', + xapp: 'ແອັບ', + vms: 'ເຄື່ອງສະເໝືອນ', }, websiteLog: 'ບັນທຶກເວັບໄຊ', runLog: 'ບັນທຶກການເຮັດວຽກ', @@ -2221,18 +2327,16 @@ toolbox: { historyRestore: 'ກູ້ຄືນເວີຊັນນີ້', historyOperationOnlyHint: 'ລາຍການທີ່ເລືອກແມ່ນການເຮັດວຽກຂອງໄຟລ໌ ແລະ ບໍ່ຮອງຮັບການກູ້ຄືນເວີຊັນ.', historyCurrentFile: 'ໄຟລ໌ປັດຈຸບັນ', - historyLatestVersion: - 'ເບື້ອງຊ້າຍສະແດງເນື້ອໃນເວີຊັນປະຫວັດ, ເບື້ອງຂວາສະແດງເນື້ອໃນເວີຊັນຫຼ້າສຸດຂອງໄຟລ໌ທີ່ເລືອກ', + historyLatestVersion: 'ເບື້ອງຊ້າຍສະແດງເນື້ອໃນເວີຊັນປະຫວັດ, ເບື້ອງຂວາສະແດງເນື້ອໃນເວີຊັນຫຼ້າສຸດຂອງໄຟລ໌ທີ່ເລືອກ', historyCompareTarget: 'ເປົ້າໝາຍການປຽບທຽບ', historyCompareTargetPath: 'ເສັ້ນທາງການປຽບທຽບ', historyRestoreConfirm: 'ກູ້ຄືນເວີຊັນນີ້ໄປຍັງໄຟລ໌ປັດຈຸບັນບໍ?', - historyRestoreDirtyConfirm: 'ໄຟລ໌ປັດຈຸບັນມີການປ່ຽນແປງທີ່ຍັງບໍ່ໄດ້ບັນທຶກ. ການກູ້ຄືນຈະຂຽນທັບຂໍ້ມູນເຫຼົ່ານັ້ນ. ຕ້ອງການເຮັດຕໍ່ບໍ?', + historyRestoreDirtyConfirm: + 'ໄຟລ໌ປັດຈຸບັນມີການປ່ຽນແປງທີ່ຍັງບໍ່ໄດ້ບັນທຶກ. ການກູ້ຄືນຈະຂຽນທັບຂໍ້ມູນເຫຼົ່ານັ້ນ. ຕ້ອງການເຮັດຕໍ່ບໍ?', historyRestoreSuccess: 'ກູ້ຄືນເວີຊັນສຳເລັດແລ້ວ', historyDirtyHint: 'ຕົວແກ້ໄຂປັດຈຸບັນມີການປ່ຽນແປງທີ່ຍັງບໍ່ໄດ້ບັນທຶກ. ການກູ້ຄືນເວີຊັນຈະຂຽນທັບຂໍ້ມູນເຫຼົ່ານັ້ນ.', - historyDiffHintCurrent: - 'ເບື້ອງຊ້າຍສະແດງເວີຊັນປະຫວັດ ແລະ ເບື້ອງຂວາສະແດງເນື້ອໃນໄຟລ໌ປັດຈຸບັນ', - historyDiffHintAll: - 'ເບື້ອງຊ້າຍສະແດງເວີຊັນປະຫວັດ ແລະ ເບື້ອງຂວາສະແດງເວີຊັນຫຼ້າສຸດຂອງໄຟລ໌ທີ່ເລືອກ', + historyDiffHintCurrent: 'ເບື້ອງຊ້າຍສະແດງເວີຊັນປະຫວັດ ແລະ ເບື້ອງຂວາສະແດງເນື້ອໃນໄຟລ໌ປັດຈຸບັນ', + historyDiffHintAll: 'ເບື້ອງຊ້າຍສະແດງເວີຊັນປະຫວັດ ແລະ ເບື້ອງຂວາສະແດງເວີຊັນຫຼ້າສຸດຂອງໄຟລ໌ທີ່ເລືອກ', copyDir: 'ຄັດລອກ', shareFile: 'ແບ່ງປັນໄຟລ໌', shareExpire: 'ໝົດອາຍຸໃນ', @@ -2283,9 +2387,8 @@ toolbox: { uploadCurrentFileProgress: 'ໄຟລ໌ປັດຈຸບັນ', currentSelect: 'ທີ່ເລືອກປັດຈຸບັນ: ', unsupportedType: 'ບໍ່ຮອງຮັບປະເພດໄຟລ໌ນີ້', - deleteHelper: - 'ທ່ານແນ່ໃຈບໍວ່າຕ້ອງການລຶບໄຟລ໌ຕໍ່ໄປນີ້? ໂດຍຄ່າເລີ່ມຕົ້ນ ມັນຈະຖືກຍ້າຍໄປທີ່ຖັງຂີ້ເຫຍື້ອຫຼັງຈາກລຶບ', - fileHelper: "ໝາຍເຫດ:\n1. ຜົນການຄົ້ນຫາບໍ່ສາມາດຈັດລຽງໄດ້.\n2. ໂຟນເດີບໍ່ສາມາດຈັດລຽງຕາມຂະໜາດໄດ້.", + deleteHelper: 'ທ່ານແນ່ໃຈບໍວ່າຕ້ອງການລຶບໄຟລ໌ຕໍ່ໄປນີ້? ໂດຍຄ່າເລີ່ມຕົ້ນ ມັນຈະຖືກຍ້າຍໄປທີ່ຖັງຂີ້ເຫຍື້ອຫຼັງຈາກລຶບ', + fileHelper: 'ໝາຍເຫດ:\n1. ຜົນການຄົ້ນຫາບໍ່ສາມາດຈັດລຽງໄດ້.\n2. ໂຟນເດີບໍ່ສາມາດຈັດລຽງຕາມຂະໜາດໄດ້.', forceDeleteHelper: 'ລຶບໄຟລ໌ຖາວອນ (ໂດຍບໍ່ຍ້າຍໄປຖັງຂີ້ເຫຍື້ອ, ລຶບໂດຍກົງ)', recycleBin: 'ຖັງຂີ້ເຫຍື້ອ', sourcePath: 'ເສັ້ນທາງເດີມ', @@ -2293,8 +2396,7 @@ toolbox: { confirmReduce: 'ທ່ານແນ່ໃຈບໍວ່າຕ້ອງການກູ້ຄືນໄຟລ໌ຕໍ່ໄປນີ້?', reduceSuccess: 'ກູ້ຄືນສຳເລັດແລ້ວ', reduce: 'ການກູ້ຄືນ', - reduceHelper: - 'ຫາກມີໄຟລ໌ ຫຼື ໄດເຣັກທໍຣີທີ່ມີຊື່ດຽວກັນຢູ່ໃນເສັ້ນທາງເດີມ, ມັນຈະຖືກຂຽນທັບ. ຕ້ອງການເຮັດຕໍ່ບໍ?', + reduceHelper: 'ຫາກມີໄຟລ໌ ຫຼື ໄດເຣັກທໍຣີທີ່ມີຊື່ດຽວກັນຢູ່ໃນເສັ້ນທາງເດີມ, ມັນຈະຖືກຂຽນທັບ. ຕ້ອງການເຮັດຕໍ່ບໍ?', clearRecycleBin: 'ລ້າງ', clearRecycleBinHelper: 'ລ້າງຖັງຂີ້ເຫຍື້ອ?', favorite: 'ລາຍການທີ່ມັກ', @@ -2309,8 +2411,7 @@ toolbox: { fileRecycleBin: 'ເປີດໃຊ້ຖັງຂີ້ເຫຍື້ອ', fileRecycleBinMsg: '{0} ຖັງຂີ້ເຫຍື້ອ', wordWrap: 'ຕັດຄຳອັດຕະໂນມັດ', - deleteHelper2: - 'ທ່ານແນ່ໃຈບໍວ່າຕ້ອງການລຶບໄຟລ໌ທີ່ເລືອກ? ການລຶບນີ້ບໍ່ສາມາດຍ້ອນກັບໄດ້', + deleteHelper2: 'ທ່ານແນ່ໃຈບໍວ່າຕ້ອງການລຶບໄຟລ໌ທີ່ເລືອກ? ການລຶບນີ້ບໍ່ສາມາດຍ້ອນກັບໄດ້', ignoreCertificate: 'ອະນຸຍາດການເຊື່ອມຕໍ່ເຊີບເວີທີ່ບໍ່ປອດໄພ', ignoreCertificateHelper: 'ການອະນຸຍາດການເຊື່ອມຕໍ່ທີ່ບໍ່ປອດໄພອາດເຮັດໃຫ້ຂໍ້ມູນຮົ່ວໄຫຼ ຫຼື ຖືກດັດແກ້. ໃຊ້ຕົວເລືອກນີ້ເມື່ອເຊື່ອຖືແຫຼ່ງດາວໂຫຼດເທົ່ານັ້ນ.', @@ -2356,7 +2457,7 @@ toolbox: { previewTruncated: 'ໄຟລ໌ໃຫຍ່ເກີນໄປ, ສະແດງສະເພາະສ່ວນທ້າຍ', previewEmpty: 'ໄຟລ໌ຫວ່າງ ຫຼື ບໍ່ແມ່ນໄຟລ໌ຂໍ້ຄວາມ', previewLargeFile: 'ເບິ່ງຕົວຢ່າງ', - panelInstallDir: "ໄດເຣັກທໍຣີຕິດຕັ້ງ 1Panel ບໍ່ສາມາດລຶບໄດ້", + panelInstallDir: 'ໄດເຣັກທໍຣີຕິດຕັ້ງ 1Panel ບໍ່ສາມາດລຶບໄດ້', wgetTask: 'ງານດາວໂຫຼດ', existFileTitle: 'ແຈ້ງເຕືອນໄຟລ໌ຊື່ດຽວກັນ', existFileHelper: 'ໄຟລ໌ທີ່ອັບໂຫຼດມີຊື່ດຽວກັນກັບໄຟລ໌ທີ່ມີຢູ່, ທ່ານຕ້ອງການຂຽນທັບບໍ?', @@ -2432,8 +2533,7 @@ toolbox: { reGenerate: 'ສ້າງຄີໃໝ່', keyAuthHelper: 'ເປີດໃຊ້ການຢືນຢັນດ້ວຍຄີຫຼືບໍ່.', useDNS: 'useDNS', - dnsHelper: - 'ຄວບຄຸມວ່າຈະເປີດໃຊ້ຟັງຊັນການແປຜົນ DNS ໃນເຊີບເວີ SSH ຫຼື ບໍ່ ເພື່ອກວດສອບຕົວຕົນຂອງການເຊື່ອມຕໍ່.', + dnsHelper: 'ຄວບຄຸມວ່າຈະເປີດໃຊ້ຟັງຊັນການແປຜົນ DNS ໃນເຊີບເວີ SSH ຫຼື ບໍ່ ເພື່ອກວດສອບຕົວຕົນຂອງການເຊື່ອມຕໍ່.', confFileOrderHelper: 'ໃຊ້ລາຍການເລືອກເພື່ອສະຫຼັບໄຟລ໌ຕັ້ງຄ່າ ແລະ ແກ້ໄຂ/ບັນທຶກໂດຍກົງ; ການຕັ້ງຄ່າຈະນຳໃຊ້ຕາມລຳດັບການໂຫຼດ, ແລະ ຄ່າທີ່ໂຫຼດກ່ອນຈະມີຜົນກ່ອນ.', confFileOrderLabel: '{0} (ລຳດັບການໂຫຼດ #{1})', @@ -2464,8 +2564,7 @@ toolbox: { emailHelper: 'ສຳລັບການກູ້ລະຫັດຜ່ານ', watermark: 'ຕັ້ງຄ່າລາຍນ້ຳ', watermarkContent: 'ເນື້ອໃນລາຍນ້ຳ', - contentHelper: - '{0} ແທນຊື່ໂນດ, {1} ແທນທີ່ຢູ່ໂນດ. ທ່ານສາມາດໃຊ້ຕົວປ່ຽນ ຫຼື ປ້ອນຊື່ທີ່ກຳນົດເອງ.', + contentHelper: '{0} ແທນຊື່ໂນດ, {1} ແທນທີ່ຢູ່ໂນດ. ທ່ານສາມາດໃຊ້ຕົວປ່ຽນ ຫຼື ປ້ອນຊື່ທີ່ກຳນົດເອງ.', watermarkColor: 'ສີລາຍນ້ຳ', watermarkFont: 'ຂະໜາດຟອນລາຍນ້ຳ', watermarkHeight: 'ຄວາມສູງລາຍນ້ຳ', @@ -2484,6 +2583,8 @@ toolbox: { portChangeHelper: 'ແກ້ໄຂພອດບໍລິການ ແລະ ເລີ່ມບໍລິການໃໝ່. ຕ້ອງການເຮັດຕໍ່ບໍ?', theme: 'ຮູບແບບ', menuTabs: 'ແທັບເມນູ', + menuAccordion: 'ຂະຫຍາຍຫຼາຍເມນູ', + menuAccordionHelper: 'ຫຼັງຈາກເປີດໃຊ້ ສາມາດຂະຫຍາຍຫຼາຍກຸ່ມເມນູດ້ານຂ້າງພ້ອມກັນໄດ້.', componentSize: 'ຂະໜາດຄອມໂພເນນ', dark: 'ມືດ', darkGold: 'ທອງດຳ', @@ -2504,12 +2605,10 @@ toolbox: { regionHelper4: 'ອັນນີ້ອາດມີຜົນຕໍ່ການດາວໂຫຼດ ແລະ ເຂົ້າເຖິງໃນອະນາຄົດ. ກະລຸນາເຮັດດ້ວຍຄວາມລະມັດລະວັງ.', regionTip: 'ພາກພື້ນມີຜົນຕໍ່ແຫຼ່ງອັບເດດລະບົບ ແລະ ທີ່ຢູ່ດາວໂຫຼດແພັກເກັດ.', docSourceTip: 'ແຫຼ່ງຂໍ້ມູນເອກະສານກຳນົດພາສາທີ່ຈະໃຊ້ສຳລັບເອກະສານ ແລະ ລີ້ງບັນທຶກການປ່ອຍເວີຊັນ.', - languageHelper: - 'ໂດຍຄ່າເລີ່ມຕົ້ນ ຈະເປັນໄປຕາມພາສາຂອງບຣາວເຊີ. ພາຣາມິເຕີນີ້ມີຜົນສະເພາະກັບບຣາວເຊີປັດຈຸບັນເທົ່ານັ້ນ', + languageHelper: 'ໂດຍຄ່າເລີ່ມຕົ້ນ ຈະເປັນໄປຕາມພາສາຂອງບຣາວເຊີ. ພາຣາມິເຕີນີ້ມີຜົນສະເພາະກັບບຣາວເຊີປັດຈຸບັນເທົ່ານັ້ນ', sessionTimeout: 'ເວລາໝົດອາຍຸເຊດຊັນ', sessionTimeoutError: 'ເວລາໝົດອາຍຸເຊດຊັນຕ່ຳສຸດແມ່ນ 300 ວິນາທີ', - sessionTimeoutHelper: - 'ພາເນລຈະອອກຈາກລະບົບອັດຕະໂນມັດຫາກບໍ່ມີການເຮັດວຽກເກີນ {0} ວິນາທີ.', + sessionTimeoutHelper: 'ພາເນລຈະອອກຈາກລະບົບອັດຕະໂນມັດຫາກບໍ່ມີການເຮັດວຽກເກີນ {0} ວິນາທີ.', systemIP: 'ທີ່ຢູ່ລະບົບ', systemIPHelper: 'ທີ່ຢູ່ນີ້ຈະຖືກໃຊ້ສຳລັບການປ່ຽນເສັ້ນທາງແອັບພລິເຄຊັນ, ການເຂົ້າເຖິງຄອນເທນເນີ ແລະ ຟັງຊັນອື່ນໆ. ແຕ່ລະໂນດສາມາດຕັ້ງຄ່າທີ່ຢູ່ທີ່ແຕກຕ່າງກັນໄດ້.', @@ -2518,8 +2617,7 @@ toolbox: { proxyHelper1: 'ການດາວໂຫຼດແພັກເກັດຕິດຕັ້ງ ແລະ ຊິງຄ໌ App Store (ສະເພາະເວີຊັນ Commercial)', proxyHelper2: 'ການອັບເດດລະບົບ ແລະ ການກວດສອບການອັບເດດ (ສະເພາະເວີຊັນ Commercial)', proxyHelper3: 'ການກວດສອບ ແລະ ຊິງຄ໌ລິຂະສິດລະບົບ', - proxyHelper4: - 'ການຮ້ອງຂໍເຄືອຂ່າຍ ເຊັ່ນ ການດຶງ (pull) Docker image ຜ່ານພຣັອກຊີເຊີບເວີ (ສະເພາະເວີຊັນ Commercial)', + proxyHelper4: 'ການຮ້ອງຂໍເຄືອຂ່າຍ ເຊັ່ນ ການດຶງ (pull) Docker image ຜ່ານພຣັອກຊີເຊີບເວີ (ສະເພາະເວີຊັນ Commercial)', proxyHelper5: 'ການດາວໂຫຼດ ແລະ ຊິງຄ໌ຄັງສະຄຣິບລະບົບ (ເວີຊັນ Commercial)', proxyHelper6: 'ການຮ້ອງຂໍໃບຢັ້ງຢືນ (ເວີຊັນ Commercial)', proxyType: 'ປະເພດພຣັອກຊີ', @@ -2537,8 +2635,8 @@ toolbox: { apiInterface: 'ເປີດໃຊ້ API', apiInterfaceClose: 'ເມື່ອປິດແລ້ວ, ຈະບໍ່ສາມາດເຂົ້າເຖິງອິນເຕີເຟດ API ໄດ້. ຕ້ອງການເຮັດຕໍ່ບໍ?', apiInterfaceHelper: 'ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັນພາຍນອກເຂົ້າເຖິງ API.', - apiInterfaceAlert1: "ຢ່າເປີດໃຊ້ງານໃນສະພາບແວດລ້ອມການຜະລິດ (production) ເພາະອາດເພີ່ມຄວາມສ່ຽງດ້ານຄວາມປອດໄພ.", - apiInterfaceAlert2: "ຢ່າໃຊ້ແອັບພລິເຄຊັນພາຍນອກທີ່ບໍ່ໜ້າເຊື່ອຖືໃນການເອີ້ນໃຊ້ API.", + apiInterfaceAlert1: 'ຢ່າເປີດໃຊ້ງານໃນສະພາບແວດລ້ອມການຜະລິດ (production) ເພາະອາດເພີ່ມຄວາມສ່ຽງດ້ານຄວາມປອດໄພ.', + apiInterfaceAlert2: 'ຢ່າໃຊ້ແອັບພລິເຄຊັນພາຍນອກທີ່ບໍ່ໜ້າເຊື່ອຖືໃນການເອີ້ນໃຊ້ API.', apiInterfaceAlert3: 'ເອກະສານ API', apiInterfaceAlert4: 'ຄູ່ມືການໃຊ້ງານ', apiKey: 'API key', @@ -2561,8 +2659,7 @@ toolbox: { syncTime: 'ເວລາເຊີບເວີ', timeZone: 'ເຂດເວລາ', timeZoneChangeHelper: 'ການປ່ຽນເຂດເວລາຕ້ອງມີການເລີ່ມບໍລິການໃໝ່. ຕ້ອງການເຮັດຕໍ່ບໍ?', - timeZoneHelper: - 'ການແກ້ໄຂເຂດເວລາຂຶ້ນກັບບໍລິການ timedatectl ຂອງລະບົບ. ຈະມີຜົນຫຼັງຈາກເລີ່ມບໍລິການ 1Panel ໃໝ່.', + timeZoneHelper: 'ການແກ້ໄຂເຂດເວລາຂຶ້ນກັບບໍລິການ timedatectl ຂອງລະບົບ. ຈະມີຜົນຫຼັງຈາກເລີ່ມບໍລິການ 1Panel ໃໝ່.', timeZoneCN: 'ປັກກິ່ງ', timeZoneAM: 'ລອສ ແອງເຈລີສ', timeZoneNY: 'ນິວຢອກ', @@ -2579,16 +2676,13 @@ toolbox: { duplicatePassword: 'ລະຫັດຜ່ານໃໝ່ບໍ່ສາມາດຄືກັບລະຫັດຜ່ານເດີມໄດ້, ກະລຸນາປ້ອນໃໝ່!', diskClean: 'ລ້າງແຄຊ໌', developerMode: 'ໂປຣແກຣມເບິ່ງຕົວຢ່າງ (Preview)', - developerModeHelper: - "ທ່ານຈະໄດ້ສຳຜັດກັບຟີເຈີໃໝ່ ແລະ ການແກ້ໄຂກ່ອນການປ່ອຍຕົວຈິງ ແລະ ສາມາດສົ່ງຄຳຄິດເຫັນໄດ້.", + developerModeHelper: 'ທ່ານຈະໄດ້ສຳຜັດກັບຟີເຈີໃໝ່ ແລະ ການແກ້ໄຂກ່ອນການປ່ອຍຕົວຈິງ ແລະ ສາມາດສົ່ງຄຳຄິດເຫັນໄດ້.', thirdParty: 'ບັນຊີພາຍນອກ', scope: 'ຂອບເຂດ', public: 'ສາທາລະນະ', - publicHelper: - 'ບັນຊີສຳຮອງແບບສາທາລະນະຈະຖືກຊິງຄ໌ຫາທຸກໂນດຍ່ອຍ ແລະ ໂນດຍ່ອຍສາມາດໃຊ້ຮ່ວມກັນໄດ້', + publicHelper: 'ບັນຊີສຳຮອງແບບສາທາລະນະຈະຖືກຊິງຄ໌ຫາທຸກໂນດຍ່ອຍ ແລະ ໂນດຍ່ອຍສາມາດໃຊ້ຮ່ວມກັນໄດ້', private: 'ສ່ວນຕົວ', - privateHelper: - 'ບັນຊີສຳຮອງແບບສ່ວນຕົວຈະຖືກສ້າງສະເພາະໃນໂນດປັດຈຸບັນ ແລະ ໃຊ້ໄດ້ສະເພາະໂນດນີ້ເທົັ້ນ', + privateHelper: 'ບັນຊີສຳຮອງແບບສ່ວນຕົວຈະຖືກສ້າງສະເພາະໃນໂນດປັດຈຸບັນ ແລະ ໃຊ້ໄດ້ສະເພາະໂນດນີ້ເທົັ້ນ', noTypeForCreate: 'ຍັງບໍ່ມີການສ້າງປະເພດການສຳຮອງ', LOCAL: 'ດິດເຊີບເວີ', OSS: 'Ali OSS', @@ -2666,8 +2760,7 @@ toolbox: { scDeep_Archive: 'ການຈັດເກັບຂໍ້ມູນແບບເຢັນ ເໝາະສຳລັບທຸລະກິດທີ່ມີຄວາມຖີ່ໃນການເຂົ້າເຖິງຕ່ຳທີ່ສຸດ.', archiveHelper: 'ໄຟລ໌ໃນການຈັດເກັບແບບ Archive ບໍ່ສາມາດດາວໂຫຼດໄດ້ໂດຍກົງ ແລະ ຕ້ອງໄດ້ຮັບການກູ້ຄືນຜ່ານເວັບໄຊຂອງຜູ້ໃຫ້ບໍລິການຄລາວກ່ອນ. ກະລຸນາໃຊ້ດ້ວຍຄວາມລະມັດລະວັງ!', - backupAlert: - 'ຫາກຜູ້ໃຫ້ບໍລິການຄລາວຮອງຮັບໂປຣໂຕຄໍ S3, ທ່ານສາມາດໃຊ້ Amazon S3 ໃນການສຳຮອງຂໍ້ມູນໄດ້ໂດຍກົງ.', + backupAlert: 'ຫາກຜູ້ໃຫ້ບໍລິການຄລາວຮອງຮັບໂປຣໂຕຄໍ S3, ທ່ານສາມາດໃຊ້ Amazon S3 ໃນການສຳຮອງຂໍ້ມູນໄດ້ໂດຍກົງ.', domain: 'ໂດເມນເລັ່ງຄວາມໄວ', backupAccount: 'ບັນຊີສຳຮອງ', loadBucket: 'ຮັບ Bucket', @@ -2714,15 +2807,13 @@ toolbox: { bindAddress: 'ທີ່ຢູ່ຮັບການເຊື່ອມຕໍ່', entrance: 'ທາງເຂົ້າ', showEntrance: 'ສະແດງການແຈ້ງເຕືອນທີ່ຖືກປິດໃນໜ້າ "ພາບລວມ"', - entranceHelper: - 'ການເປີດໃຊ້ທາງເຂົ້າຄວາມປອດໄພຈະອະນຸຍາດໃຫ້ເຂົ້າລະບົບພາເນລຜ່ານທາງເຂົ້າທີ່ກຳນົດໄວ້ເທົ່ານັ້ນ.', + entranceHelper: 'ການເປີດໃຊ້ທາງເຂົ້າຄວາມປອດໄພຈະອະນຸຍາດໃຫ້ເຂົ້າລະບົບພາເນລຜ່ານທາງເຂົ້າທີ່ກຳນົດໄວ້ເທົ່ານັ້ນ.', entranceError: 'ປ້ອນທາງເຂົ້າຄວາມປອດໄພ 5-116 ຕົວອັກສອນ, ຮອງຮັບສະເພາະຕົວເລກ ຫຼື ຕົວອັກສອນພາສາອັງກິດ.', entranceInputHelper: 'ປະຫວ່າງໄວ້ເພື່ອປິດທາງເຂົ້າຄວາມປອດໄພ.', randomGenerate: 'ສຸ່ມ', expirationTime: 'ວັນໝົດອາຍຸ', unSetting: 'ຍັງບໍ່ໄດ້ຕັ້ງ', - noneSetting: - 'ຕັ້ງເວລາໝົດອາຍຸສຳລັບລະຫັດຜ່ານພາເນລ. ຫຼັງຈາກໝົດອາຍຸ, ທ່ານຕ້ອງຕັ້ງລະຫັດຜ່ານໃໝ່', + noneSetting: 'ຕັ້ງເວລາໝົດອາຍຸສຳລັບລະຫັດຜ່ານພາເນລ. ຫຼັງຈາກໝົດອາຍຸ, ທ່ານຕ້ອງຕັ້ງລະຫັດຜ່ານໃໝ່', expirationHelper: 'ຖ້າເວລາໝົດອາຍຸລະຫັດຜ່ານແມ່ນ 0 ມື້, ຟັງຊັນການໝົດອາຍຸຈະຖືກປິດ', days: 'ຈຳນວນມື້ໝົດອາຍຸລະຫັດຜ່ານ', expiredHelper: 'ລະຫັດຜ່ານປັດຈຸບັນໝົດອາຍຸແລ້ວ. ກະລຸນາປ່ຽນລະຫັດຜ່ານໃໝ່.', @@ -2742,8 +2833,7 @@ toolbox: { unAllowIPs: 'IP ທີ່ບໍ່ໄດ້ຮັບອະນຸຍາດ', unAllowIPsWarning: 'ການອະນຸຍາດ IP ແບບຫວ່າງຈະເຮັດໃຫ້ທຸກ IP ເຂົ້າເຖິງລະບົບໄດ້, ເຊິ່ງອາດເຮັດໃຫ້ລະບົບບໍ່ປອດໄພ. ຕ້ອງການເຮັດຕໍ່ບໍ?', - allowIPsHelper: - 'ຫຼັງຈາກຕັ້ງລາຍຊື່ IP ທີ່ໄດ້ຮັບອະນຸຍາດ, ຈະມີພຽງ IP ໃນລາຍຊື່ເທົ່ານັ້ນທີ່ສາມາດເຂົ້າເຖິງພາເນລໄດ້.', + allowIPsHelper: 'ຫຼັງຈາກຕັ້ງລາຍຊື່ IP ທີ່ໄດ້ຮັບອະນຸຍາດ, ຈະມີພຽງ IP ໃນລາຍຊື່ເທົ່ານັ້ນທີ່ສາມາດເຂົ້າເຖິງພາເນລໄດ້.', allowIPsWarning: 'ຫຼັງຈາກຕັ້ງລາຍຊື່ IP ທີ່ໄດ້ຮັບອະນຸຍາດ, ຈະມີພຽງ IP ໃນລາຍຊື່ເທົ່ານັ້ນທີ່ສາມາດເຂົ້າເຖິງພາເນລໄດ້. ຕ້ອງການເຮັດຕໍ່ບໍ?', allowIPsHelper1: 'ປະຫວ່າງໄວ້ເພື່ອປິດການຈຳກັດ IP.', @@ -2766,11 +2856,10 @@ toolbox: { mfaCode: 'ທໍເຄັນຄັ້ງດຽວ', sslChangeHelper: 'ແກ້ໄຂການຕັ້ງຄ່າ https ແລະ ເລີ່ມບໍລິການໃໝ່. ຕ້ອງການເຮັດຕໍ່ບໍ?', sslDisable: 'ປິດໃຊ້ງານ', - sslDisableHelper: - 'ຫາກປິດບໍລິການ https, ທ່ານຕ້ອງເລີ່ມພາເນລໃໝ່ເພື່ອໃຫ້ມີຜົນ. ຕ້ອງການເຮັດຕໍ່ບໍ?', + sslDisableHelper: 'ຫາກປິດບໍລິການ https, ທ່ານຕ້ອງເລີ່ມພາເນລໃໝ່ເພື່ອໃຫ້ມີຜົນ. ຕ້ອງການເຮັດຕໍ່ບໍ?', noAuthSetting: 'ການຕັ້ງຄ່າການບໍ່ໄດ້ຮັບອະນຸຍາດ', noAuthSettingHelper: - "ເມື່ອຜູ້ໃຊ້ບໍ່ໄດ້ເຂົ້າລະບົບຜ່ານທາງເຂົ້າຄວາມປອດໄພທີ່ກຳນົດ, ຫຼື ບໍ່ໄດ້ເຂົ້າເຖິງພາເນລຈາກ IP ຫຼື ໂດເມນທີ່ກຳນົດ, ການຕອບສະໜອງນີ້ສາມາດຊ່ອນເອກະລັກຂອງພາເນລໄດ້.", + 'ເມື່ອຜູ້ໃຊ້ບໍ່ໄດ້ເຂົ້າລະບົບຜ່ານທາງເຂົ້າຄວາມປອດໄພທີ່ກຳນົດ, ຫຼື ບໍ່ໄດ້ເຂົ້າເຖິງພາເນລຈາກ IP ຫຼື ໂດເມນທີ່ກຳນົດ, ການຕອບສະໜອງນີ້ສາມາດຊ່ອນເອກະລັກຂອງພາເນລໄດ້.', responseSetting: 'ການຕັ້ງຄ່າການຕອບສະໜອງ', help200: 'ໜ້າຊ່ວຍເຫຼືອ', error400: 'ຄຳຮ້ອງຂໍບໍ່ຖືກຕ້ອງ (Bad Request)', @@ -2784,7 +2873,7 @@ toolbox: { https: 'ການຕັ້ງຄ່າ HTTPS ສຳລັບພາເນລຊ່ວຍເພີ່ມຄວາມປອດໄພໃນການເຂົ້າເຖິງ', strictHelper: 'ການເຊື່ອມຕໍ່ທີ່ບໍ່ແມ່ນ HTTPS ຈະບໍ່ສາມາດເຊື່ອມຕໍ່ຫາພາເນລໄດ້', muxHelper: - "ພາເນລຈະຮັບການເຊື່ອມຕໍ່ທັງໂປຣໂຕຄໍ HTTP ແລະ HTTPS ແລະ ປ່ຽນເສັ້ນທາງຈາກ HTTP ໄປ HTTPS, ແຕ່ອັນນີ້ອາດຫຼຸດຄວາມປອດໄພຂອງພາເນລລົງ", + 'ພາເນລຈະຮັບການເຊື່ອມຕໍ່ທັງໂປຣໂຕຄໍ HTTP ແລະ HTTPS ແລະ ປ່ຽນເສັ້ນທາງຈາກ HTTP ໄປ HTTPS, ແຕ່ອັນນີ້ອາດຫຼຸດຄວາມປອດໄພຂອງພາເນລລົງ', certType: 'ປະເພດໃບຢັ້ງຢືນ', selfSigned: 'ລົງນາມດ້ວຍຕົນເອງ (Self signed)', selfSignedHelper: 'ບຣາວເຊີອາດບໍ່ເຊື່ອຖືໃບຢັ້ງຢືນທີ່ລົງນາມດ້ວຍຕົນເອງ ແລະ ອາດສະແດງຄຳເຕືອນຄວາມປອດໄພ.', @@ -2871,8 +2960,7 @@ toolbox: { upgrading: 'ກຳລັງອັບເກຣດ, ກະລຸນາລໍຖ້າ...', upgradeHelper: 'ການອັບເກຣດຕ້ອງມີການເລີ່ມບໍລິການ 1Panel ໃໝ່. ຕ້ອງການເຮັດຕໍ່ບໍ?', noUpgrade: 'ປັດຈຸບັນເປັນເວີຊັນຫຼ້າສຸດແລ້ວ', - versionHelper: - 'ກົດການຕັ້ງຊື່: [major version].[functional version].[Bug fix version], ດັ່ງຕົວຢ່າງຕໍ່ໄປນີ້:', + versionHelper: 'ກົດການຕັ້ງຊື່: [major version].[functional version].[Bug fix version], ດັ່ງຕົວຢ່າງຕໍ່ໄປນີ້:', rollbackLocalHelper: 'ໂນດຫຼັກບໍ່ຮອງຮັບການຍ້ອນກັບໂດຍກົງ. ກະລຸນາໃຊ້ຄຳສັ່ງ [1pctl restore] ດ້ວຍຕົນເອງເພື່ອຍ້ອນກັບ!', upgradeCheck: 'ກວດສອບການອັບເດດ', @@ -2880,8 +2968,7 @@ toolbox: { upgradeNow: 'ອັບເກຣດດຽວນີ້', source: 'ແຫຼ່ງດາວໂຫຼດ', versionNotSame: 'ເວີຊັນຂອງໂນດບໍ່ກົງກັບໂນດຫຼັກ. ກະລຸນາອັບເກຣດໃນ "ຈັດການໂນດ" ກ່ອນລອງໃໝ່.', - versionCompare: - 'ກວດພົບວ່າໂນດ {0} ເປັນເວີຊັນຫຼ້າສຸດທີ່ອັບເກຣດໄດ້ແລ້ວ. ກະລຸນາກວດສອບເວີຊັນຂອງໂນດຫຼັກແລ້ວລອງໃໝ່!', + versionCompare: 'ກວດພົບວ່າໂນດ {0} ເປັນເວີຊັນຫຼ້າສຸດທີ່ອັບເກຣດໄດ້ແລ້ວ. ກະລຸນາກວດສອບເວີຊັນຂອງໂນດຫຼັກແລ້ວລອງໃໝ່!', about: 'ກ່ຽວກັບ', versionItem: 'ເວີຊັນປັດຈຸບັນ', backupCopies: 'ຈຳນວນການສຳຮອງ', @@ -2901,6 +2988,7 @@ toolbox: { license: 'ລິຂະສິດ', bindNode: 'ຜູກໂນດ', menuSetting: 'ຕັ້ງຄ່າເມນູ', + menuHide: 'ເຊື່ອງເມນູ', menuSettingHelper: 'ເມື່ອມີເມນູຍ່ອຍພຽງ 1 ລາຍການ, ແຖບເມນູຈະສະແດງສະເພາະເມນູຍ່ອຍນັ້ນ', showAll: 'ສະແດງທັງໝົດ', hideALL: 'ເຊື່ອງທັງໝົດ', @@ -2941,18 +3029,17 @@ toolbox: { quickUpdate: 'ອັບເດດດ່ວນ', import: 'ນຳເຂົ້າ', power: 'ອະນຸຍາດ', - unbindHelper: 'ການຕັ້ງຄ່າທັງໝົດທີ່ກ່ຽວຂ້ອງກັບເວີຊັນ Commercial ຈະຖືກລ້າງອອກຫຼັງຈາກຍົກເລີກການຜູກ. ຕ້ອງການເຮັດຕໍ່ບໍ? ', + unbindHelper: + 'ການຕັ້ງຄ່າທັງໝົດທີ່ກ່ຽວຂ້ອງກັບເວີຊັນ Commercial ຈະຖືກລ້າງອອກຫຼັງຈາກຍົກເລີກການຜູກ. ຕ້ອງການເຮັດຕໍ່ບໍ? ', importLicense: 'ນຳເຂົ້າລິຂະສິດ', securityWarningTitle: 'ຢ່າໃຊ້ລິຂະສິດທີ່ຖືກແຮັກ (crack) ຫຼື ລິຂະສິດຈາກແຫຼ່ງທີ່ບໍ່ຮູ້ຈັກ.', securityWarningContent: '1Panel ເຮັດວຽກດ້ວຍສິດບໍລິຫານລະບົບ. ລິຂະສິດທີ່ບໍ່ເປັນທາງການ ຫຼື ໄຟລ໌ຕິດຕັ້ງທີ່ຖືກດັດແກ້ອາດເຮັດໃຫ້ເຊີບເວີຖືກຄວບຄຸມ, ຂໍ້ມູນຮົ່ວໄຫຼ ແລະ ຄວາມສ່ຽງດ້ານຄວາມປອດໄພຮ້າຍແຮງອື່ນໆ. ກະລຸນາຮັບລິຂະສິດ ແລະ ໄຟລ໌ຕິດຕັ້ງຈາກຊ່ອງທາງທາງການຂອງ FIT2CLOUD ເທົ່ານັ້ນ.', importHelper: 'ຄລິກ ຫຼື ລາກໄຟລ໌ລິຂະສິດມາທີ່ນີ້', - licenseRequiredTip: - 'ຍັງບໍ່ໄດ້ນຳເຂົ້າລິຂະສິດ. ກະລຸນາຄັດລອກ ID ອຸປະກອນ, ຮັບລິຂະສິດ ແລະ ນຳເຂົ້າກ່ອນເຂົ້າລະບົບ.', + licenseRequiredTip: 'ຍັງບໍ່ໄດ້ນຳເຂົ້າລິຂະສິດ. ກະລຸນາຄັດລອກ ID ອຸປະກອນ, ຮັບລິຂະສິດ ແລະ ນຳເຂົ້າກ່ອນເຂົ້າລະບົບ.', licenseRequiredShortTip: 'ກະລຸນາຄັດລອກ ID ອຸປະກອນກ່ອນເພື່ອຮັບລິຂະສິດ. ທ່ານສາມາດເຂົ້າລະບົບໄດ້ຫຼັງຈາກນຳເຂົ້າລິຂະສິດແລ້ວ.', - licenseRequiredUserTip: - 'ລິຂະສິດເວີຊັນ Enterprise ບໍ່ໄດ້ຖືກຜູກ. ຕິດຕໍ່ຜູ້ດູແລລະບົບສູງສຸດເພື່ອນຳເຂົ້າລິຂະສິດ.', + licenseRequiredUserTip: 'ລິຂະສິດເວີຊັນ Enterprise ບໍ່ໄດ້ຖືກຜູກ. ຕິດຕໍ່ຜູ້ດູແລລະບົບສູງສຸດເພື່ອນຳເຂົ້າລິຂະສິດ.', levelUpPro: 'ອັບເກຣດເປັນເວີຊັນ Commercial', licenseSync: 'ຊິງຄ໌ລິຂະສິດ', knowMorePro: 'ຮຽນຮູ້ເພີ່ມເຕີມ', @@ -3048,8 +3135,7 @@ toolbox: { author: 'ຜູ້ຂຽນ', source: 'ແຫຼ່ງທີ່ມາ', appName: 'ຊື່ແອັບພລິເຄຊັນ', - deleteWarn: - 'ການລຶບຈະລຶບຂໍ້ມູນ ແລະ ໄຟລ໌ສຳຮອງທັງໝົດ. ການດຳເນີນການນີ້ບໍ່ສາມາດຍ້ອນກັບໄດ້. ຕ້ອງການຕໍ່ຫຼືບໍ່? ', + deleteWarn: 'ການລຶບຈະລຶບຂໍ້ມູນ ແລະ ໄຟລ໌ສຳຮອງທັງໝົດ. ການດຳເນີນການນີ້ບໍ່ສາມາດຍ້ອນກັບໄດ້. ຕ້ອງການຕໍ່ຫຼືບໍ່? ', syncSuccess: 'ຊິງຄ໌ຂໍ້ມູນສຳເລັດແລ້ວ', canUpgrade: 'ມີການອັບເດດ', backupName: 'ຊື່ໄຟລ໌', @@ -3068,8 +3154,7 @@ toolbox: { defaultConfig: 'ການຕັ້ງຄ່າເລີ່ມຕົ້ນ', defaultConfigHelper: 'ຄືນຄ່າເປັນການຕັ້ງຄ່າເລີ່ມຕົ້ນແລ້ວ, ຈະມີຜົນຫຼັງຈາກບັນທຶກ', forceDelete: 'ບັງຄັບລຶບ', - forceDeleteHelper: - 'ການບັງຄັບລຶບຈະລະເລີຍຂໍ້ຜິດພາດໃນລະຫວ່າງການລຶບ ແລະ ລຶບຂໍ້ມູນ Metadata ອອກໃນທີ່ສຸດ.', + forceDeleteHelper: 'ການບັງຄັບລຶບຈະລະເລີຍຂໍ້ຜິດພາດໃນລະຫວ່າງການລຶບ ແລະ ລຶບຂໍ້ມູນ Metadata ອອກໃນທີ່ສຸດ.', deleteBackup: 'ລຶບໄຟລ໌ສຳຮອງ', deleteBackupHelper: 'ລຶບໄຟລ໌ສຳຮອງຂອງແອັບພລິເຄຊັນນຳ', deleteDB: 'ລຶບຖານຂໍ້ມູນ', @@ -3095,8 +3180,7 @@ toolbox: { containerNameHelper: 'ຊື່ຄອນເທນເນີຈະຖືກສ້າງໂດຍອັດຕະໂນມັດຖ້າບໍ່ໄດ້ກຳນົດໄວ້', allowPort: 'ການເຂົ້າເຖິງຈາກພາຍນອກ', allowPortHelper: 'ການອະນຸຍາດເຂົ້າເຖິງພອດພາຍນອກຈະເປັນການເປີດພອດຢູ່ໄຟວໍ', - appInstallWarn: - 'ແອັບພລິເຄຊັນນີ້ບໍ່ໄດ້ເປີດພອດພາຍນອກໂດຍເລີ່ມຕົ້ນ. ຄລິກ "ການຕັ້ງຄ່າຂັ້ນສູງ" ເພື່ອເປີດພອດ.', + appInstallWarn: 'ແອັບພລິເຄຊັນນີ້ບໍ່ໄດ້ເປີດພອດພາຍນອກໂດຍເລີ່ມຕົ້ນ. ຄລິກ "ການຕັ້ງຄ່າຂັ້ນສູງ" ເພື່ອເປີດພອດ.', upgradeStart: 'ເລີ່ມການອັບເກຣດ! ກະລຸນາຣີເຟຣຊໜ້າເວັບພາຍຫຼັງ', toFolder: 'ເປີດໂຟນເດີຕິດຕັ້ງ', editCompose: 'ແກ້ໄຂໄຟລ໌ compose', @@ -3139,7 +3223,7 @@ toolbox: { useDefault: 'ໃຊ້ເວີຊັນເລີ່ມຕົ້ນ', useCustom: 'ປັບແຕ່ງ docker-compose.yml', useCustomHelper: - "ການໃຊ້ໄຟລ໌ docker-compose.yml ທີ່ປັບແຕ່ງເອງອາດເຮັດໃຫ້ການອັບເກຣດແອັບລົ້ມເຫຼວ. ຖ້າບໍ່ຈຳເປັນ, ບໍ່ຄວນເລືອກ.", + 'ການໃຊ້ໄຟລ໌ docker-compose.yml ທີ່ປັບແຕ່ງເອງອາດເຮັດໃຫ້ການອັບເກຣດແອັບລົ້ມເຫຼວ. ຖ້າບໍ່ຈຳເປັນ, ບໍ່ຄວນເລືອກ.', diffHelper: 'ເບື້ອງຊ້າຍແມ່ນເວີຊັນເກົ່າ, ເບື້ອງຂວາແມ່ນເວີຊັນໃໝ່. ຫຼັງຈາກແກ້ໄຂແລ້ວ, ຄລິກເພື່ອບັນທຶກເວີຊັນທີ່ປັບແຕ່ງ', pullImage: 'ດຶງອິມເມຈ (Pull Image)', @@ -3163,15 +3247,13 @@ toolbox: { webUIConfig: 'Node ປະຈຸບັນຍັງບໍ່ໄດ້ຕັ້ງຄ່າທີ່ຢູ່ເຂົ້າເຖິງເລີ່ມຕົ້ນ. ກະລຸນາຕັ້ງຄ່າໃນພາຣາມິເຕີແອັບ ຫຼື ໄປທີ່ການຕັ້ງຄ່າແຜງຄວບຄຸມ!', toLink: 'ເປີດ', - customAppHelper: - 'ກ່ອນທີ່ຈະຕິດຕັ້ງແພັກເກດຮ້ານຄ້າແອັບທີ່ປັບແຕ່ງເອງ, ກະລຸນາໃຫ້ແນ່ໃຈວ່າຍັງບໍ່ມີແອັບທີ່ຕິດຕັ້ງໄວ້.', + customAppHelper: 'ກ່ອນທີ່ຈະຕິດຕັ້ງແພັກເກດຮ້ານຄ້າແອັບທີ່ປັບແຕ່ງເອງ, ກະລຸນາໃຫ້ແນ່ໃຈວ່າຍັງບໍ່ມີແອັບທີ່ຕິດຕັ້ງໄວ້.', forceUninstall: 'ບັງຄັບຖອນການຕິດຕັ້ງ', syncCustomApp: 'ຊິງຄ໌ແອັບທີ່ປັບແຕ່ງເອງ', ignoreAll: 'ລະເລີຍເວີຊັນຕໍ່ໆໄປທັງໝົດ', ignoreVersion: 'ລະເລີຍເວີຊັນທີ່ກຳນົດ', specifyIP: 'ຜູກມັດກັບ IP ຂອງ Host', - specifyIPHelper: - 'ຕັ້ງຄ່າທີ່ຢູ່ host/network interface ເພື່ອຜູກມັດກັບພອດ (ຖ້າບໍ່ແນ່ໃຈ, ກະລຸນາປ່ອຍຫວ່າງໄວ້)', + specifyIPHelper: 'ຕັ້ງຄ່າທີ່ຢູ່ host/network interface ເພື່ອຜູກມັດກັບພອດ (ຖ້າບໍ່ແນ່ໃຈ, ກະລຸນາປ່ອຍຫວ່າງໄວ້)', uninstallDeleteBackup: 'ຖອນການຕິດຕັ້ງແອັບ - ລຶບໄຟລ໌ສຳຮອງ', uninstallDeleteImage: 'ຖອນການຕິດຕັ້ງແອັບ - ລຶບອິມເມຈ', upgradeBackup: 'ສຳຮອງແອັບກ່ອນອັບເກຣດ', @@ -3190,8 +3272,7 @@ toolbox: { alias: 'ຊື່ຫຼິ້ນ (Alias)', ftpUser: 'ບັນຊີ FTP', ftpPassword: 'ລະຫັດຜ່ານ FTP', - ftpHelper: - 'ຫຼັງຈາກສ້າງເວັບໄຊ, ບັນຊີ FTP ທີ່ກ່ຽວຂ້ອງຈະຖືກສ້າງຂຶ້ນ ແລະ ໂຟນເດີ FTP ຈະເຊື່ອມຕໍ່ກັບໂຟນເດີເວັບໄຊ.', + ftpHelper: 'ຫຼັງຈາກສ້າງເວັບໄຊ, ບັນຊີ FTP ທີ່ກ່ຽວຂ້ອງຈະຖືກສ້າງຂຶ້ນ ແລະ ໂຟນເດີ FTP ຈະເຊື່ອມຕໍ່ກັບໂຟນເດີເວັບໄຊ.', remark: 'ໝາຍເຫດ', groupSetting: 'ການຈັດການກຸ່ມ', createGroup: 'ສ້າງກຸ່ມ', @@ -3260,8 +3341,7 @@ toolbox: { toApp: 'ໄປທີ່ລາຍການທີ່ຕິດຕັ້ງແລ້ວ', cycle: 'ຮອບວຽນ', frequency: 'ຄວາມຖີ່', - ccHelper: - 'ມີການຮ້ອງຂໍ URL ດຽວກັນຫຼາຍກວ່າ {1} ຄັ້ງພາຍໃນ {0} ວິນາທີ, ຈະເປີດໃຊ້ການປ້ອງກັນ CC ແລະ ບລັອກ IP ນີ້', + ccHelper: 'ມີການຮ້ອງຂໍ URL ດຽວກັນຫຼາຍກວ່າ {1} ຄັ້ງພາຍໃນ {0} ວິນາທີ, ຈະເປີດໃຊ້ການປ້ອງກັນ CC ແລະ ບລັອກ IP ນີ້', mustSave: 'ການແກ້ໄຂຕ້ອງໄດ້ຮັບການບັນທຶກເພື່ອໃຫ້ມີຜົນ', fileExt: 'ນາມສະກຸນໄຟລ໌', fileExtBlock: 'ລາຍການບລັອກນາມສະກຸນໄຟລ໌', @@ -3270,13 +3350,11 @@ toolbox: { proxyAddress: 'ທີ່ຢູ່ Proxy', proxyHelper: 'ຕົວຢ່າງ: 127.0.0.1:8080', forceDelete: 'ບັງຄັບລຶບ', - forceDeleteHelper: - 'ການບັງຄັບລຶບຈະລະເລີຍຂໍ້ຜິດພາດໃນລະຫວ່າງການລຶບ ແລະ ລຶບຂໍ້ມູນ Metadata ອອກໃນທີ່ສຸດ.', + forceDeleteHelper: 'ການບັງຄັບລຶບຈະລະເລີຍຂໍ້ຜິດພາດໃນລະຫວ່າງການລຶບ ແລະ ລຶບຂໍ້ມູນ Metadata ອອກໃນທີ່ສຸດ.', deleteAppHelper: 'ລຶບແອັບພລິເຄຊັນ ແລະ ໄຟລ໌ສຳຮອງແອັບທີ່ກ່ຽວຂ້ອງພ້ອມກັນ', deleteBackupHelper: 'ລຶບໄຟລ໌ສຳຮອງເວັບໄຊນຳ.', deleteDatabaseHelper: 'ລຶບຖານຂໍ້ມູນທີ່ກ່ຽວຂ້ອງກັບເວັບໄຊນຳ', - deleteConfirmHelper: - 'ການລຶບບໍ່ສາມາດຍົກເລີກໄດ້. ປ້ອນ "{0}" ເພື່ອຢືນຢັນການລຶບ.', + deleteConfirmHelper: 'ການລຶບບໍ່ສາມາດຍົກເລີກໄດ້. ປ້ອນ "{0}" ເພື່ອຢືນຢັນການລຶບ.', staticPath: 'ໂຟນເດີຫຼັກທີ່ກ່ຽວຂ້ອງແມ່ນ ', limit: 'ຮູບແບບ', blog: 'ເວັບບອດ/ບລັອກ', @@ -3312,7 +3390,7 @@ toolbox: { disableHTTPS: 'ປິດໃຊ້ງານ HTTPS', disableHTTPSHelper: 'ການປິດໃຊ້ງານ HTTPS ຈະລຶບການຕັ້ງຄ່າທີ່ກ່ຽວຂ້ອງກັບໃບຢັ້ງຢືນ, ຕ້ອງການຕໍ່ຫຼືບໍ່?', SSLHelper: - "ໝາຍເຫດ: ຫ້າມໃຊ້ໃບຢັ້ງຢືນ SSL ສຳລັບເວັບໄຊທີ່ຜິດກົດໝາຍ.\nຖ້າບໍ່ສາມາດເຂົ້າເຖິງ HTTPS ໄດ້ຫຼັງຈາກເປີດແລ້ວ, ກະລຸນາກວດສອບວ່າໄຟວໍໄດ້ເປີດພອດ 443 ແລ້ວຫຼືບໍ່.", + 'ໝາຍເຫດ: ຫ້າມໃຊ້ໃບຢັ້ງຢືນ SSL ສຳລັບເວັບໄຊທີ່ຜິດກົດໝາຍ.\nຖ້າບໍ່ສາມາດເຂົ້າເຖິງ HTTPS ໄດ້ຫຼັງຈາກເປີດແລ້ວ, ກະລຸນາກວດສອບວ່າໄຟວໍໄດ້ເປີດພອດ 443 ແລ້ວຫຼືບໍ່.', SSLConfig: 'ການຕັ້ງຄ່າໃບຢັ້ງຢືນ', SSLProConfig: 'ການຕັ້ງຄ່າໂປຣໂຕຄໍ', supportProtocol: 'ເວີຊັນໂປຣໂຕຄໍ', @@ -3339,8 +3417,7 @@ toolbox: { 'ໃຊ້ reverse proxy ເພື່ອສົ່ງຕໍ່ບໍລິການທີ່ມີຢູ່ແລ້ວ. ຕົວຢ່າງ: ຖ້າມີບໍລິການເຮັດວຽກຢູ່ພອດ 8080, ທີ່ຢູ່ proxy ຈະເປັນ "http://127.0.0.1:8080".', runtimeProxyHelper: 'ໃຊ້ Runtime ຂອງເວັບໄຊເພື່ອສ້າງເວັບໄຊ.', runtime: 'ຣັນທາມ (Runtime)', - deleteRuntimeHelper: - 'ແອັບພລິເຄຊັນ Runtime ຈຳເປັນຕ້ອງຖືກລຶບພ້ອມກັບເວັບໄຊ, ກະລຸນາເຮັດດ້ວຍຄວາມລະມັດລະວັງ', + deleteRuntimeHelper: 'ແອັບພລິເຄຊັນ Runtime ຈຳເປັນຕ້ອງຖືກລຶບພ້ອມກັບເວັບໄຊ, ກະລຸນາເຮັດດ້ວຍຄວາມລະມັດລະວັງ', proxyType: 'ປະເພດເຄືອຂ່າຍ', unix: 'ເຄືອຂ່າຍ Unix', tcp: 'ເຄືອຂ່າຍ TCP/IP', @@ -3352,8 +3429,7 @@ toolbox: { rewrite: 'ກົດການປ່ຽນເສັ້ນທາງ (Pseudo-static)', rewriteMode: 'ຮູບແບບ', current: 'ປະຈຸບັນ', - rewriteHelper: - 'ຖ້າການຕັ້ງຄ່າ pseudo-static ເຮັດໃຫ້ເວັບໄຊເຂົ້າເຖິງບໍ່ໄດ້, ໃຫ້ລອງກັບໄປໃຊ້ການຕັ້ງຄ່າເລີ່ມຕົ້ນ.', + rewriteHelper: 'ຖ້າການຕັ້ງຄ່າ pseudo-static ເຮັດໃຫ້ເວັບໄຊເຂົ້າເຖິງບໍ່ໄດ້, ໃຫ້ລອງກັບໄປໃຊ້ການຕັ້ງຄ່າເລີ່ມຕົ້ນ.', runDir: 'ໂຟນເດີທີ່ເຮັດວຽກ', runUserHelper: 'ສຳລັບເວັບໄຊທີ່ຕິດຕັ້ງຜ່ານ PHP container, ທ່ານຕ້ອງຕັ້ງຄ່າເຈົ້າຂອງ ແລະ ກຸ່ມຜູ້ໃຊ້ຂອງໄຟລ໌ ແລະ ໂຟນເດີທັງໝົດເປັນ 1000. ສຳລັບສະພາບແວດລ້ອມ PHP ໃນເຄື່ອງ, ໃຫ້ອ້າງອີງຕາມການຕັ້ງຄ່າ PHP-FPM ໃນເຄື່ອງ', @@ -3448,8 +3524,7 @@ toolbox: { ipWebsiteWarn: 'ເວັບໄຊທີ່ໃຊ້ IP ເປັນໂດເມນຈຳເປັນຕ້ອງຕັ້ງເປັນເວັບໄຊເລີ່ມຕົ້ນເພື່ອໃຫ້ເຂົ້າເຖິງໄດ້ຕາມປົກກະຕິ.', hstsHelper: 'ການເປີດໃຊ້ HSTS ສາມາດເພີ່ມຄວາມປອດໄພໃຫ້ເວັບໄຊ', includeSubDomains: 'ໂດເມນຍ່ອຍ', - hstsIncludeSubDomainsHelper: - 'ເມື່ອເປີດໃຊ້ແລ້ວ, ນະໂຍບາຍ HSTS ຈະມີຜົນກັບໂດເມນຍ່ອຍທັງໝົດຂອງໂດເມນປະຈຸບັນ.', + hstsIncludeSubDomainsHelper: 'ເມື່ອເປີດໃຊ້ແລ້ວ, ນະໂຍບາຍ HSTS ຈະມີຜົນກັບໂດເມນຍ່ອຍທັງໝົດຂອງໂດເມນປະຈຸບັນ.', defaultHtml: 'ຕັ້ງໜ້າເລີ່ມຕົ້ນ', website404: 'ໜ້າຂໍ້ຜິດພາດ 404 ຂອງເວັບໄຊ', domain404: 'ບໍ່ມີໜ້າເວັບນີ້', @@ -3460,7 +3535,7 @@ toolbox: { website404Helper: 'ໜ້າຂໍ້ຜິດພາດ 404 ຮອງຮັບສະເພາະເວັບໄຊ PHP ແລະ ເວັບໄຊ Static ເທົ່ານັ້ນ', sni: 'SNI ຕົ້ນທາງ', sniHelper: - "ເມື່ອ reverse proxy ປາຍທາງເປັນ HTTPS, ທ່ານອາດຕ້ອງຕັ້ງຄ່າ SNI ຕົ້ນທາງ. ເບິ່ງລາຍລະອຽດຈາກເອກະສານຂອງຜູ້ໃຫ້ບໍລິການ CDN.", + 'ເມື່ອ reverse proxy ປາຍທາງເປັນ HTTPS, ທ່ານອາດຕ້ອງຕັ້ງຄ່າ SNI ຕົ້ນທາງ. ເບິ່ງລາຍລະອຽດຈາກເອກະສານຂອງຜູ້ໃຫ້ບໍລິການ CDN.', proxySslVerify: 'ກວດສອບໃບຢັ້ງຢືນ SSL ຂອງເບື້ອງຫຼັງ', proxySslVerifyHelper: 'ເມື່ອເປີດໃຊ້, proxy ຈະກວດສອບໃບຢັ້ງຢືນ SSL ຂອງເຊີບເວີຕົ້ນທາງຢ່າງເຂັ້ມງວດ (ປິດໄວ້ໂດຍເລີ່ມຕົ້ນ).', @@ -3511,9 +3586,9 @@ toolbox: { realIP: 'IP ທີ່ແທ້ຈິງ', ipFrom: 'ແຫຼ່ງທີ່ມາຂອງ IP', ipFromHelper: - "ໂດຍການຕັ້ງຄ່າແຫຼ່ງ IP ທີ່ເຊື່ອຖືໄດ້, OpenResty ຈະວິເຄາະຂໍ້ມູນ IP ໃນ HTTP headers ເພື່ອລະບຸ ແລະ ບັນທຶກ IP ທີ່ແທ້ຈິງຂອງຜູ້ເຂົ້າຊົມໄດ້ຢ່າງຖືກຕ້ອງ", - ipFromExample1: "ຖ້າເບື້ອງໜ້າເປັນເຄື່ອງມືເຊັ່ນ Frp, ທ່ານສາມາດປ້ອນ IP ຂອງ Frp ເຊັ່ນ 127.0.0.1", - ipFromExample2: "ຖ້າເບື້ອງໜ້າເປັນ CDN, ທ່ານສາມາດປ້ອນຊ່ວງ IP ຂອງ CDN", + 'ໂດຍການຕັ້ງຄ່າແຫຼ່ງ IP ທີ່ເຊື່ອຖືໄດ້, OpenResty ຈະວິເຄາະຂໍ້ມູນ IP ໃນ HTTP headers ເພື່ອລະບຸ ແລະ ບັນທຶກ IP ທີ່ແທ້ຈິງຂອງຜູ້ເຂົ້າຊົມໄດ້ຢ່າງຖືກຕ້ອງ', + ipFromExample1: 'ຖ້າເບື້ອງໜ້າເປັນເຄື່ອງມືເຊັ່ນ Frp, ທ່ານສາມາດປ້ອນ IP ຂອງ Frp ເຊັ່ນ 127.0.0.1', + ipFromExample2: 'ຖ້າເບື້ອງໜ້າເປັນ CDN, ທ່ານສາມາດປ້ອນຊ່ວງ IP ຂອງ CDN', ipFromExample3: 'ຖ້າບໍ່ແນ່ໃຈ, ທ່ານສາມາດປ້ອນ 0.0.0.0/0 (ipv4) ::/0 (ipv6) [ໝາຍເຫດ: ການອະນຸຍາດທຸກແຫຼ່ງ IP ບໍ່ປອດໄພ]', http3Helper: @@ -3544,14 +3619,11 @@ toolbox: { useProxyHelper: 'ໃຊ້ທີ່ຢູ່ເຊີບເວີ proxy ໃນການຕັ້ງຄ່າແຜງຄວບຄຸມ', westCN: 'West Digital', openBaseDir: 'ປ້ອງກັນການໂຈມຕີຂ້າມເວັບໄຊ (Cross-Site)', - openBaseDirHelper: - 'open_basedir ໃຊ້ເພື່ອຈຳກັດພາດການເຂົ້າເຖິງໄຟລ໌ PHP ເພື່ອຄວາມປອດໄພ', + openBaseDirHelper: 'open_basedir ໃຊ້ເພື່ອຈຳກັດພາດການເຂົ້າເຖິງໄຟລ໌ PHP ເພື່ອຄວາມປອດໄພ', serverCacheTime: 'ເວລາແຄຊເຊີບເວີ', - serverCacheTimeHelper: - 'ໄລຍະເວລາທີ່ການຮ້ອງຂໍຈະຖືກແຄຊໄວ້ຢູ່ເຊີບເວີ.', + serverCacheTimeHelper: 'ໄລຍະເວລາທີ່ການຮ້ອງຂໍຈະຖືກແຄຊໄວ້ຢູ່ເຊີບເວີ.', browserCacheTime: 'ເວລາແຄຊບຣາວເຊີ', - browserCacheTimeHelper: - 'ໄລຍະເວລາທີ່ຊັບພະຍາກອນຄົງທີ່ຖືກແຄຊໄວ້ໃນບຣາວເຊີຂອງຜູ້ໃຊ້.', + browserCacheTimeHelper: 'ໄລຍະເວລາທີ່ຊັບພະຍາກອນຄົງທີ່ຖືກແຄຊໄວ້ໃນບຣາວເຊີຂອງຜູ້ໃຊ້.', donotLinkeDB: 'ບໍ່ເຊື່ອມຕໍ່ຖານຂໍ້ມູນ', toWebsiteDir: 'ເຂົ້າສູ່ໂຟນເດີເວັບໄຊ', execParameters: 'ພາຣາມິເຕີການເຮັດວຽກ', @@ -3564,8 +3636,7 @@ toolbox: { batchOperateHelper: 'ປະຕິບັດການ {0} ເວັບໄຊແບບກຸ່ມ, ຕ້ອງການຕໍ່ຫຼືບໍ່?', stream: 'TCP/UDP Proxy', streamPorts: 'ພອດທີ່ຟັງ (Listening Ports)', - streamPortsHelper: - 'ຕັ້ງຄ່າພອດພາຍນອກ, ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດ, ຕົວຢ່າງ: 5222,5223', + streamPortsHelper: 'ຕັ້ງຄ່າພອດພາຍນອກ, ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດ, ຕົວຢ່າງ: 5222,5223', streamHelper: 'ການສົ່ງຕໍ່ພອດ TCP/UDP ແລະ ການກະຈາຍພາລະ', udp: 'ເປີດໃຊ້ UDP', syncHtmlHelper: 'ຊິງຄ໌ໄປທີ່ເວັບໄຊ PHP ແລະ Static', @@ -3587,8 +3658,7 @@ toolbox: { disableFunction: 'ຟັງຊັນທີ່ປິດການໃຊ້ງານ', disableFunctionHelper: 'ປ້ອນຟັງຊັນທີ່ຕ້ອງການປິດ ເຊັ່ນ exec, ໃຊ້ເຄື່ອງໝາຍຈຸດແຍກ', uploadMaxSize: 'ຂີດຈຳກັດການອັບໂຫຼດ', - indexHelper: - 'ເພື່ອໃຫ້ເວັບໄຊ PHP ເຮັດວຽກໄດ້ຕາມປົກກະຕິ, ກະລຸນາວາງໂຄ້ດໄວ້ໃນໂຟນເດີ index ແລະ ຫຼີກລ່ຽງການປ່ຽນຊື່', + indexHelper: 'ເພື່ອໃຫ້ເວັບໄຊ PHP ເຮັດວຽກໄດ້ຕາມປົກກະຕິ, ກະລຸນາວາງໂຄ້ດໄວ້ໃນໂຟນເດີ index ແລະ ຫຼີກລ່ຽງການປ່ຽນຊື່', extensions: 'ແມ່ແບບສ່ວນຂະຫຍາຍ', extension: 'ສ່ວນຂະຫຍາຍ', extensionsHelper: 'ສຳລັບຫຼາຍສ່ວນຂະຫຍາຍ, ໃຫ້ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດ', @@ -3626,15 +3696,12 @@ toolbox: { script: 'ສະຄຣິບ', module: 'ໂມດູນ', build: 'ບິວ (Build)', - buildWarn: - 'ການບິວ OpenResty ຕ້ອງໃຊ້ CPU ແລະ ໜ່ວຍຄວາມຈຳໃນລະດັບໜຶ່ງ ແລະ ອາດໃຊ້ເວລາດົນ, ກະລຸນາລໍຖ້າ', + buildWarn: 'ການບິວ OpenResty ຕ້ອງໃຊ້ CPU ແລະ ໜ່ວຍຄວາມຈຳໃນລະດັບໜຶ່ງ ແລະ ອາດໃຊ້ເວລາດົນ, ກະລຸນາລໍຖ້າ', mirrorUrl: 'ແຫຼ່ງຊອບແວ', paramsHelper: 'ຕົວຢ່າງ: --add-module=/tmp/ngx_brotli', packagesHelper: 'ຕົວຢ່າງ: git, curl (ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດ)', - scriptHelper: - 'ສະຄຣິບທີ່ຈະເຮັດວຽກກ່ອນການຄອມໄພລ໌, ມັກໃຊ້ເພື່ອດາວໂຫຼດຊອດໂຄ້ດໂມດູນ ຫຼື ຕິດຕັ້ງ dependency', - buildHelper: - 'ຄລິກບິວຫຼັງຈາກເພີ່ມ/ແກ້ໄຂໂມດູນ. OpenResty ຈະເລີ່ມໃໝ່ໂດຍອັດຕະໂນມັດເມື່ອບິວສຳເລັດ.', + scriptHelper: 'ສະຄຣິບທີ່ຈະເຮັດວຽກກ່ອນການຄອມໄພລ໌, ມັກໃຊ້ເພື່ອດາວໂຫຼດຊອດໂຄ້ດໂມດູນ ຫຼື ຕິດຕັ້ງ dependency', + buildHelper: 'ຄລິກບິວຫຼັງຈາກເພີ່ມ/ແກ້ໄຂໂມດູນ. OpenResty ຈະເລີ່ມໃໝ່ໂດຍອັດຕະໂນມັດເມື່ອບິວສຳເລັດ.', defaultHttps: 'ການປ້ອງກັນການປອມແປງ HTTPS', defaultHttpsHelper1: 'ການເປີດໃຊ້ສິ່ງນີ້ສາມາດແກ້ໄຂບັນຫາການປອມແປງ HTTPS ໄດ້.', sslRejectHandshake: 'ປະຕິເສດການ handshake SSL ເລີ່ມຕົ້ນ', @@ -3660,8 +3727,7 @@ toolbox: { autoRenew: 'ຕໍ່ອາຍຸອັດຕະໂນມັດ', autoRenewHelper: 'ຕໍ່ອາຍຸອັດຕະໂນມັດ 30 ວັນກ່ອນໝົດອາຍຸ', renewSuccess: 'ຕໍ່ອາຍຸສຳເລັດແລ້ວ', - renewWebsite: - 'ໃບຢັ້ງຢືນນີ້ໄດ້ຖືກເຊື່ອມໂຍງກັບເວັບໄຊຕໍ່ໄປນີ້ ແລະ ຈະມີຜົນກັບເວັບໄຊເຫຼົ່ານັ້ນພ້ອມກັນ', + renewWebsite: 'ໃບຢັ້ງຢືນນີ້ໄດ້ຖືກເຊື່ອມໂຍງກັບເວັບໄຊຕໍ່ໄປນີ້ ແລະ ຈະມີຜົນກັບເວັບໄຊເຫຼົ່ານັ້ນພ້ອມກັນ', createAcme: 'ສ້າງບັນຊີ', acmeHelper: 'ບັນຊີ Acme ໃຊ້ສຳລັບຂໍໃບຢັ້ງຢືນຟຣີ', upload: 'ນຳເຂົ້າ', @@ -3684,14 +3750,11 @@ toolbox: { domainHelper: 'ໜຶ່ງໂດເມນຕໍ່ແຖວ, ຮອງຮັບ * ແລະ ທີ່ຢູ່ IP', pushDir: 'ສົ່ງໃບຢັ້ງຢືນໄປຍັງໂຟນເດີໃນເຄື່ອງ', dir: 'ໂຟນເດີ', - pushDirHelper: - 'ໄຟລ໌ "fullchain.pem" ແລະ "privkey.pem" ຈະຖືກສ້າງໃນໂຟນເດີນີ້.', + pushDirHelper: 'ໄຟລ໌ "fullchain.pem" ແລະ "privkey.pem" ຈະຖືກສ້າງໃນໂຟນເດີນີ້.', organizationDetail: 'ລາຍລະອຽດອົງກອນ', fromWebsite: 'ຈາກເວັບໄຊ', - dnsMauanlHelper: - 'ໃນໂໝດຈັດການ DNS ດ້ວຍຕົນເອງ, ທ່ານຕ້ອງຄລິກປຸ່ມ "ຂໍໃບຢັ້ງຢືນ" ຫຼັງຈາກສ້າງເພື່ອຮັບຄ່າ DNS', - httpHelper: - 'ການໃຊ້ໂໝດ HTTP ຕ້ອງຕິດຕັ້ງ OpenResty ແລະ ບໍ່ຮອງຮັບການຂໍໃບຢັ້ງຢືນແບບ wildcard.', + dnsMauanlHelper: 'ໃນໂໝດຈັດການ DNS ດ້ວຍຕົນເອງ, ທ່ານຕ້ອງຄລິກປຸ່ມ "ຂໍໃບຢັ້ງຢືນ" ຫຼັງຈາກສ້າງເພື່ອຮັບຄ່າ DNS', + httpHelper: 'ການໃຊ້ໂໝດ HTTP ຕ້ອງຕິດຕັ້ງ OpenResty ແລະ ບໍ່ຮອງຮັບການຂໍໃບຢັ້ງຢືນແບບ wildcard.', buypassHelper: 'Buypass ອາດເຂົ້າເຖິງບໍ່ໄດ້ໃນບາງພື້ນທີ່', googleHelper: 'ວິທີຮັບ EAB HmacKey ແລະ EAB kid', googleCloudHelper: 'Google Cloud API ອາດເຂົ້າເຖິງບໍ່ໄດ້ໃນບາງພື້ນທີ່', @@ -3699,8 +3762,7 @@ toolbox: { skipDNSCheckHelper: 'ເລືອກບ່ອນນີ້ສະເພາະເມື່ອທ່ານພົບຫາເວລາໝົດອາຍຸລະຫວ່າງການຂໍໃບຢັ້ງຢືນ.', cfHelper: 'ຫ້າມໃຊ້ Global API Key', deprecated: 'ຈະຖືກຍົກເລີກໃນໄວໆນີ້', - deprecatedHelper: - 'ຢຸດການບຳລຸງຮັກສາແລ້ວ ແລະ ອາດຈະຖືກເອົາອອກໃນເວີຊັນໜ້າ. ກະລຸນາໃຊ້ວິທີ Tencent Cloud ແທນ', + deprecatedHelper: 'ຢຸດການບຳລຸງຮັກສາແລ້ວ ແລະ ອາດຈະຖືກເອົາອອກໃນເວີຊັນໜ້າ. ກະລຸນາໃຊ້ວິທີ Tencent Cloud ແທນ', dnsPodRemoved: 'ຖືກເອົາອອກແລ້ວ', dnsPodRemovedTip: 'DnsPod ຖືກເອົາອອກໃນ lego v5; ບັນຊີນີ້ບໍ່ສາມາດໃຊ້ຂໍໃບຢັ້ງຢືນໃໝ່ ຫຼື ຕໍ່ອາຍຸໄດ້. ກະລຸນາປ່ຽນໄປໃຊ້ TencentCloud DNS.', @@ -3741,8 +3803,7 @@ toolbox: { cookieBlockList: 'Cookie ທີ່ບລັອກ', dockerHelper: 'ໄຟວໍປະຈຸບັນບໍ່ສາມາດປິດການແມັບພອດຄອນເທນເນີໄດ້. ແອັບທີ່ຕິດຕັ້ງແລ້ວສາມາດໄປທີ່ໜ້າ [ຕິດຕັ້ງແລ້ວ] ເພື່ອແກ້ໄຂພາຣາມິເຕີ ແລະ ຕັ້ງຄ່າການເປີດພອດ.', - iptablesHelper: - 'ກວດພົບວ່າລະບົບໃຊ້ໄຟວໍ {0}. ຖ້າຕ້ອງການປ່ຽນເປັນ iptables, ກະລຸນາຖອນການຕິດຕັ້ງມັນອອກກ່ອນ!', + iptablesHelper: 'ກວດພົບວ່າລະບົບໃຊ້ໄຟວໍ {0}. ຖ້າຕ້ອງການປ່ຽນເປັນ iptables, ກະລຸນາຖອນການຕິດຕັ້ງມັນອອກກ່ອນ!', quickJump: 'ເຂົ້າເຖິງດ່ວນ', used: 'ໃຊ້ແລ້ວ', unUsed: 'ບໍ່ໄດ້ໃຊ້', @@ -3756,7 +3817,7 @@ toolbox: { enableBanPing: 'ບລັອກ Ping', disableBanPing: 'ເລີກບລັອກ Ping', noPingTitle: 'ປິດການ Ping', - noPingHelper: "ນີ້ຈະປິດການ Ping ແລະ ເຊີບເວີຈະບໍ່ຕອບສະໜອງ ICMP. ຕ້ອງການຕໍ່ຫຼືບໍ່?", + noPingHelper: 'ນີ້ຈະປິດການ Ping ແລະ ເຊີບເວີຈະບໍ່ຕອບສະໜອງ ICMP. ຕ້ອງການຕໍ່ຫຼືບໍ່?', onPingHelper: 'ນີ້ຈະເປີດການ Ping ແລະ ແຮັກເກີອາດຈະກວດພົບເຊີບເວີຂອງທ່ານ. ຕ້ອງການຕໍ່ຫຼືບໍ່?', changeStrategy: 'ປ່ຽນກົນລະຍຸດ {0}', changeStrategyIPHelper1: @@ -3772,7 +3833,7 @@ toolbox: { portHelper1: 'ຫຼາຍພອດ ຕົວຢ່າງ: 8080,8081', portHelper2: 'ຊ່ວງພອດ ຕົວຢ່າງ: 8080-8089', changeStrategyHelper: - 'ປ່ຽນກົນລະຍຸດ {0} ຂອງ [{1}] ເປັນ [{2}]. ຕ້ອງການຕໍ່ຫຼືບໍ່?', + 'ປ່ຽນກົນລະຍຸດ {0} ຂອງ [{1}] ເປັນ [{2}]. ຫຼັງຈາກຕັ້ງຄ່າແລ້ວ {0} ຈະເຂົ້າເຖິງ {2} ຈາກພາຍນອກ. ຕ້ອງການຕໍ່ບໍ?', strategy: 'ກົນລະຍຸດ', accept: 'ຍອມຮັບ (Accept)', drop: 'ຖິ້ມ (Drop)', @@ -3806,15 +3867,13 @@ toolbox: { forwardIptables: 'ບໍລິການສົ່ງຕໍ່ພອດ iptables', advanceIptables: 'ບໍລິການຕັ້ງຄ່າຂັ້ນສູງ iptables', initMsg: 'ກຳລັງຈະເລີ່ມຕົ້ນ {0}, ຕ້ອງການຕໍ່ຫຼືບໍ່?', - initHelper: - 'ກວດພົບວ່າ {0} ຍັງບໍ່ໄດ້ຖືກຕັ້ງຄ່າເລີ່ມຕົ້ນ. ຄລິກປຸ່ມເລີ່ມຕົ້ນຢູ່ແຖບສະຖານະດ້ານເທິງເພື່ອຕັ້ງຄ່າ!', + initHelper: 'ກວດພົບວ່າ {0} ຍັງບໍ່ໄດ້ຖືກຕັ້ງຄ່າເລີ່ມຕົ້ນ. ຄລິກປຸ່ມເລີ່ມຕົ້ນຢູ່ແຖບສະຖານະດ້ານເທິງເພື່ອຕັ້ງຄ່າ!', bindHelper: 'ຜູກມັດ - ກົດລະບຽບໄຟວໍຈະມີຜົນເມື່ອສະຖານະຖືກຜູກມັດເທົ່ານັ້ນ. ຢືນຢັນ?', unbindHelper: 'ຍົກເລີກການຜູກມັດ - ເມື່ອຍົກເລີກ, ກົດລະບຽບໄຟວໍທັງໝົດຈະບໍ່ມີຜົນ. ກະລຸນາເຮັດດ້ວຍຄວາມລະມັດລະວັງ. ຢືນຢັນ?', whiteList: 'ລາຍການອະນຸຍາດ (Allowlist)', portWhiteList: 'ພອດທີ່ອະນຸຍາດ', - portWhiteListAlter: - 'ພອດໃນລາຍການອະນຸຍາດຈະຖືກເປີດໂດຍອັດຕະໂນມັດເມື່ອເລີ່ມຕົ້ນໄຟວໍ.', + portWhiteListAlter: 'ພອດໃນລາຍການອະນຸຍາດຈະຖືກເປີດໂດຍອັດຕະໂນມັດເມື່ອເລີ່ມຕົ້ນໄຟວໍ.', portWhiteListHelper: 'ສາມາດກຳນົດໂປຣໂຕຄໍໄດ້ ເຊັ່ນ 80/tcp ຫຼື 443/udp. ເລີ່ມຕົ້ນແມ່ນ tcp.', defaultStrategy: 'ກົນລະຍຸດເລີ່ມຕົ້ນສຳລັບ Chain {0} ແມ່ນ {1}', defaultStrategy2: @@ -3874,12 +3933,11 @@ toolbox: { imageSource: 'ແຫຼ່ງອິມເມຈ', moduleManager: 'ການຈັດການໂມດູນ', module: 'ໂມດູນ', - nodeOperatorHelper: - 'ທ່ານແນ່ໃຈຫຼືບໍ່ວ່າຈະ {0} ໂມດູນ {1}? ການດຳເນີນການນີ້ອາດເຮັດໃຫ້ຣັນທາມເຮັດວຽກຜິດປົກກະຕິ.', + nodeOperatorHelper: 'ທ່ານແນ່ໃຈຫຼືບໍ່ວ່າຈະ {0} ໂມດູນ {1}? ການດຳເນີນການນີ້ອາດເຮັດໃຫ້ຣັນທາມເຮັດວຽກຜິດປົກກະຕິ.', customScript: 'ຄຳສັ່ງເລີ່ມຕົ້ນທີ່ກຳນົດເອງ', customScriptHelper: 'ປ້ອນຄຳສັ່ງເລີ່ມຕົ້ນທີ່ສົມບູນ ຕົວຢ່າງ: npm run start. ສຳລັບຄຳສັ່ງ PM2, ໃຫ້ປ່ຽນເປັນ pm2-runtime.', - portError: "ຫ້າມໃຊ້ພອດຊ້ຳກັນ.", + portError: 'ຫ້າມໃຊ້ພອດຊ້ຳກັນ.', systemRestartHelper: 'ລາຍລະອຽດ: ຖືກຂັດຈັງຫວະ - ບໍ່ສາມາດດຶງສະຖານະໄດ້ເນື່ອງຈາກລະບົບເລີ່ມຕົ້ນໃໝ່', javaScriptHelper: 'ປ້ອນຄຳສັ່ງເລີ່ມຕົ້ນທີ່ສົມບູນ ຕົວຢ່າງ: "java -jar halo.jar -Xmx1024M -Xms256M".', javaDirHelper: 'ໂຟນເດີຕ້ອງມີໄຟລ໌ jar, ໂຟນເດີ່ຍ່ອຍກໍສາມາດໃຊ້ໄດ້', @@ -3890,18 +3948,14 @@ toolbox: { loadedExtension: 'ສ່ວນຂະຫຍາຍທີ່ໂຫຼດແລ້ວ', popularExtension: 'ສ່ວນຂະຫຍາຍຍອດນິຍົມ', uninstallExtension: 'ທ່ານແນ່ໃຈຫຼືບໍ່ວ່າຈະຖອນການຕິດຕັ້ງສ່ວນຂະຫຍາຍ {0}', - phpConfigHelper: - 'ການແກ້ໄຂການຕັ້ງຄ່າຕ້ອງມີການເລີ່ມຕົ້ນຣັນທາມໃໝ່, ຕ້ອງການຕໍ່ຫຼືບໍ່', + phpConfigHelper: 'ການແກ້ໄຂການຕັ້ງຄ່າຕ້ອງມີການເລີ່ມຕົ້ນຣັນທາມໃໝ່, ຕ້ອງການຕໍ່ຫຼືບໍ່', operateMode: 'ໂໝດການເຮັດວຽກ', dynamic: 'ໄດນາມິກ (dynamic)', static: 'ຄົງທີ່ (static)', ondemand: 'ຕາມຄວາມຕ້ອງການ (on-demand)', - dynamicHelper: - 'ປັບຈຳນວນຂະບວນການອັດຕະໂນມັດ, ມີຄວາມຍືດຫຍຸ່ນສູງ, ເໝາະສຳລັບເວັບໄຊທີ່ມີທຣາຟຟິກບໍ່ຄົງທີ່', - staticHelper: - 'ກຳນົດຈຳນວນຂະບວນການຄົງທີ່, ເໝາະສຳລັບເວັບໄຊທີ່ມີການເຂົ້າເຖິງສູງ ແລະ ຄົງທີ່, ໃຊ້ຊັບພະຍາກອນສູງ', - ondemandHelper: - 'ຂະບວນການຈະຖືກສ້າງ ແລະ ທຳລາຍຕາມຄວາມຕ້ອງການ, ປະຢັດຊັບພະຍາກອນ ແຕ່ການຕອບສະໜອງທຳອິດອາດຊ້າ', + dynamicHelper: 'ປັບຈຳນວນຂະບວນການອັດຕະໂນມັດ, ມີຄວາມຍືດຫຍຸ່ນສູງ, ເໝາະສຳລັບເວັບໄຊທີ່ມີທຣາຟຟິກບໍ່ຄົງທີ່', + staticHelper: 'ກຳນົດຈຳນວນຂະບວນການຄົງທີ່, ເໝາະສຳລັບເວັບໄຊທີ່ມີການເຂົ້າເຖິງສູງ ແລະ ຄົງທີ່, ໃຊ້ຊັບພະຍາກອນສູງ', + ondemandHelper: 'ຂະບວນການຈະຖືກສ້າງ ແລະ ທຳລາຍຕາມຄວາມຕ້ອງການ, ປະຢັດຊັບພະຍາກອນ ແຕ່ການຕອບສະໜອງທຳອິດອາດຊ້າ', max_children: 'ຈຳນວນຂະບວນການສູງສຸດທີ່ອະນຸຍາດໃຫ້ສ້າງ', start_servers: 'ຈຳນວນຂະບວນການທີ່ສ້າງເມື່ອເລີ່ມຕົ້ນ', min_spare_servers: 'ຈຳນວນຂະບວນການຫວ່າງຕ່ຳສຸດ', @@ -3998,8 +4052,7 @@ toolbox: { unmount: 'ຍົກເລີກການ Mount', unmountHelper: 'ຕ້ອງການຍົກເລີກການ mount ພາທິຊັນ {0} ຫຼືບໍ່?', mount: 'Mount', - partitionAlert: - 'ການແບ່ງພາທິຊັນຕ້ອງມີການຟໍແມັດດິສກ໌, ເຊິ່ງຈະລຶບຂໍ້ມູນທີ່ມີຢູ່ທັງໝົດ. ກະລຸນາສຳຮອງຂໍ້ມູນກ່ອນ.', + partitionAlert: 'ການແບ່ງພາທິຊັນຕ້ອງມີການຟໍແມັດດິສກ໌, ເຊິ່ງຈະລຶບຂໍ້ມູນທີ່ມີຢູ່ທັງໝົດ. ກະລຸນາສຳຮອງຂໍ້ມູນກ່ອນ.', mountPoint: 'ຈຸດ Mount', systemDisk: 'ດິສກ໌ລະບົບ', unpartitionedDisk: 'ດິສກ໌ທີ່ຍັງບໍ່ໄດ້ແບ່ງພາທິຊັນ', @@ -4211,15 +4264,12 @@ toolbox: { bindDomainRestrictedDesc: 'ຜູກມັດໂດເມນການເຂົ້າເຖິງແລ້ວ', bindDomainRiskDesc: 'ຍັງບໍ່ໄດ້ຜູກມັດໂດເມນ. ກະລຸນາຈຳກັດການເຂົ້າເຖິງຜ່ານໂດເມນທີ່ກຳນົດ', accessRestrictionValue: 'IP ທີ່ອະນຸຍາດ: {0} / ໂດເມນທີ່ຜູກ: {1}', - accessRestrictionNormalDesc: - 'ຕັ້ງຄ່າ IP ທີ່ອະນຸຍາດ ຫຼື ຜູກມັດໂດເມນແລ້ວເພື່ອຈຳກັດແຫຼ່ງການເຂົ້າເຖິງ', - accessRestrictionRiskDesc: - 'ບໍ່ໄດ້ຕັ້ງຄ່າ IP ຫຼື ໂດເມນ. ກະລຸນາຕັ້ງຄ່າຢ່າງໜ້ອຍໜຶ່ງຢ່າງ', + accessRestrictionNormalDesc: 'ຕັ້ງຄ່າ IP ທີ່ອະນຸຍາດ ຫຼື ຜູກມັດໂດເມນແລ້ວເພື່ອຈຳກັດແຫຼ່ງການເຂົ້າເຖິງ', + accessRestrictionRiskDesc: 'ບໍ່ໄດ້ຕັ້ງຄ່າ IP ຫຼື ໂດເມນ. ກະລຸນາຕັ້ງຄ່າຢ່າງໜ້ອຍໜຶ່ງຢ່າງ', panelHTTPSNormalDesc: 'ເປີດໃຊ້ HTTPS ຂອງແຜງຄວບຄຸມແລ້ວ', panelHTTPSRiskDesc: 'ປິດ HTTPS ຂອງແຜງຄວບຄຸມຢູ່. ຂໍ້ມູນການເຂົ້າລະບົບອາດຈະຖືກເປີດເຜີຍ', passwordComplexityNormalDesc: 'ເປີດໃຊ້ການກວດສອບຄວາມຊັບຊ້ອນຂອງລະຫັດຜ່ານແລ້ວ', - passwordComplexityRiskDesc: - 'ປິດການກວດສອບຄວາມຊັບຊ້ອນຢູ່, ເພີ່ມຄວາມສ່ຽງຈາກລະຫັດຜ່ານທີ່ເດົາງ່າຍ', + passwordComplexityRiskDesc: 'ປິດການກວດສອບຄວາມຊັບຊ້ອນຢູ່, ເພີ່ມຄວາມສ່ຽງຈາກລະຫັດຜ່ານທີ່ເດົາງ່າຍ', mfa: 'MFA (ການຢືນຢັນຕົວຕົນຫຼາຍຂັ້ນຕອນ)', mfaNormalDesc: 'ເປີດໃຊ້ MFA ແລ້ວ, ຊ່ວຍເພີ່ມຄວາມປອດໄພການເຂົ້າລະບົບ', mfaRiskDesc: 'ປິດ MFA ຢູ່. ກະລຸນາເປີດໃຊ້ການຢືນຢັນຕົວຕົນຫຼາຍຂັ້ນຕອນ', @@ -4498,1075 +4548,1216 @@ toolbox: { systemThreshold: 'ເກນຂອງລະບົບ', metric: 'ຕົວຊີ້ວັດ', currentRule: 'ກົດລະບຽບປະຈຸບັນ', - hostMonitor: 'ຕິດຕາມໂຮສຕ໌', - monitorInterval: 'ໄລຍະຫ່າງການຕິດຕາມ', - exportSettings: 'ສົ່ງອອກການຕັ້ງຄ່າ', - lastExportReport: 'ຜົນການສ້າງລາຍງານຫຼ້າສຸດ', - noLastExportReport: 'ບໍ່ມີປະຫວັດການສົ່ງອອກລາຍງານ', - lastExportStatus: 'ສະຖານະການສົ່ງອອກຫຼ້າສຸດ', - exportFile: 'ໄຟລ໌ສົ່ງອອກ', - generateTime: 'ສ້າງຂຶ້ນເມື່ອ', - fileSize: 'ຂະໜາດໄຟລ໌', - viewExportHistory: 'ເບິ່ງປະຫວັດການສົ່ງອອກ', - defaultFormat: 'ຮູບແບບເລີ່ມຕົ້ນ', - savePath: 'ບ່ອນເກັບໄຟລ໌', - savePathRequired: 'ກະລຸນາກຳນົດບ່ອນເກັບລາຍງານ', - autoExport: 'ເປີດໃຊ້ການສົ່ງອອກອັດຕະໂນມັດ', - autoExportDesc: 'ເມື່ອເປີດໃຊ້, ລະບົບຈະສ້າງລາຍງານ Ops ໂດຍອັດຕະໂນມັດທຸກມື້ເວລາ 09:00', - autoExportEnabled: 'ເປີດການສົ່ງອອກອັດຕະໂນມັດແລ້ວ', - autoExportDisabled: 'ປິດການສົ່ງອອກອັດຕະໂນມັດແລ້ວ', - readOnlyPermissionTip: - 'ບັນຊີນີ້ສາມາດເບິ່ງໄດ້ຢ່າງດຽວ. ກະລຸນາຕິດຕໍ່ຜູ້ດູແລລະບົບເພື່ອແກ້ໄຂ.', - refreshing: 'ກຳລັງໂຫຼດໃໝ່', - exporting: 'ກຳລັງສົ່ງອອກ', - exportFailed: 'ສົ່ງອອກລາຍງານລົ້ມເຫຼວ', - generating: 'ກຳລັງສ້າງ', - saved: 'ບັນທຶກແລ້ວ', - saveFailed: 'ບັນທຶກການຕັ້ງຄ່າລົ້ມເຫຼວ', - generateNow: 'ສ້າງດຽວນີ້', - generateSuccess: 'ສ້າງໄຟລ໌ລາຍງານສຳເລັດ: {0}', - generateFailed: 'ສ້າງລາຍງານລົ້ມເຫຼວ', - enabledStatus: 'ເປີດໃຊ້ງານ', - disabledStatus: 'ປິດໃຊ້ງານ', - alertConfigInvalid: 'ການຕັ້ງຄ່າບໍ່ຖືກຕ້ອງ', - thresholdRule: 'ເກນກຳນົດ {0}, ເຮັດວຽກຫຼັງຈາກຕິດກັນ {1} ຄັ້ງ', - hours: '{0} ຊົ່ວໂມງ', - minutes: '{0} ນາທີ', - seconds: '{0} ວິນາທີ', - totalExports: 'ການສົ່ງອອກທັງໝົດ', - successExports: 'ສົ່ງອອກສຳເລັດ', - failedExports: 'ສົ່ງອອກລົ້ມເຫຼວ', - reportName: 'ຊື່ລາຍງານ', - exportFormat: 'ຮູບແບບການສົ່ງອອກ', - operator: 'ຜູ້ດຳເນີນການ', - triggerType: 'ຕົວຈຸດຊະນວນ', - filePath: 'ທີ່ຢູ່ໄຟລ໌', - manualExport: 'ຈັດການເອງ', - scheduledExport: 'ຕາມກຳນົດເວລາ', - exportResult: 'ຜົນການສົ່ງອອກ', - exportDetail: 'ລາຍລະອຽດການສົ່ງອອກ', + hostMonitor: 'ຕິດຕາມໂຮສຕ໌', + monitorInterval: 'ໄລຍະຫ່າງການຕິດຕາມ', + exportSettings: 'ສົ່ງອອກການຕັ້ງຄ່າ', + lastExportReport: 'ຜົນການສ້າງລາຍງານຫຼ້າສຸດ', + noLastExportReport: 'ບໍ່ມີປະຫວັດການສົ່ງອອກລາຍງານ', + lastExportStatus: 'ສະຖານະການສົ່ງອອກຫຼ້າສຸດ', + exportFile: 'ໄຟລ໌ສົ່ງອອກ', + generateTime: 'ສ້າງຂຶ້ນເມື່ອ', + fileSize: 'ຂະໜາດໄຟລ໌', + viewExportHistory: 'ເບິ່ງປະຫວັດການສົ່ງອອກ', + defaultFormat: 'ຮູບແບບເລີ່ມຕົ້ນ', + savePath: 'ບ່ອນເກັບໄຟລ໌', + savePathRequired: 'ກະລຸນາກຳນົດບ່ອນເກັບລາຍງານ', + autoExport: 'ເປີດໃຊ້ການສົ່ງອອກອັດຕະໂນມັດ', + autoExportDesc: 'ເມື່ອເປີດໃຊ້, ລະບົບຈະສ້າງລາຍງານ Ops ໂດຍອັດຕະໂນມັດທຸກມື້ເວລາ 09:00', + autoExportEnabled: 'ເປີດການສົ່ງອອກອັດຕະໂນມັດແລ້ວ', + autoExportDisabled: 'ປິດການສົ່ງອອກອັດຕະໂນມັດແລ້ວ', + readOnlyPermissionTip: 'ບັນຊີນີ້ສາມາດເບິ່ງໄດ້ຢ່າງດຽວ. ກະລຸນາຕິດຕໍ່ຜູ້ດູແລລະບົບເພື່ອແກ້ໄຂ.', + refreshing: 'ກຳລັງໂຫຼດໃໝ່', + exporting: 'ກຳລັງສົ່ງອອກ', + exportFailed: 'ສົ່ງອອກລາຍງານລົ້ມເຫຼວ', + generating: 'ກຳລັງສ້າງ', + saved: 'ບັນທຶກແລ້ວ', + saveFailed: 'ບັນທຶກການຕັ້ງຄ່າລົ້ມເຫຼວ', + generateNow: 'ສ້າງດຽວນີ້', + generateSuccess: 'ສ້າງໄຟລ໌ລາຍງານສຳເລັດ: {0}', + generateFailed: 'ສ້າງລາຍງານລົ້ມເຫຼວ', + enabledStatus: 'ເປີດໃຊ້ງານ', + disabledStatus: 'ປິດໃຊ້ງານ', + alertConfigInvalid: 'ການຕັ້ງຄ່າບໍ່ຖືກຕ້ອງ', + thresholdRule: 'ເກນກຳນົດ {0}, ເຮັດວຽກຫຼັງຈາກຕິດກັນ {1} ຄັ້ງ', + hours: '{0} ຊົ່ວໂມງ', + minutes: '{0} ນາທີ', + seconds: '{0} ວິນາທີ', + totalExports: 'ການສົ່ງອອກທັງໝົດ', + successExports: 'ສົ່ງອອກສຳເລັດ', + failedExports: 'ສົ່ງອອກລົ້ມເຫຼວ', + reportName: 'ຊື່ລາຍງານ', + exportFormat: 'ຮູບແບບການສົ່ງອອກ', + operator: 'ຜູ້ດຳເນີນການ', + triggerType: 'ຕົວຈຸດຊະນວນ', + filePath: 'ທີ່ຢູ່ໄຟລ໌', + manualExport: 'ຈັດການເອງ', + scheduledExport: 'ຕາມກຳນົດເວລາ', + exportResult: 'ຜົນການສົ່ງອອກ', + exportDetail: 'ລາຍລະອຽດການສົ່ງອອກ', + }, }, - }, - user: { - user: 'ຜູ້ໃຊ້', - userInfo: 'ຂໍ້ມູນຜູ້ໃຊ້', - userManage: 'ຈັດການຜູ້ໃຊ້', - superAdmin: 'ຜູ້ດູແລລະບົບສູງສຸດ', - superAdminDesc: 'ມີສິດຈັດການລະບົບທັງໝົດ ແລະ ສາມາດຈັດການຊັບພະຍາກອນທຸກຢ່າງ.', - nodeAdmin: 'ຜູ້ດູແລໂນດ', - nodeAdminDesc: - 'ມີສິດຈັດການສະເພາະໂນດທີ່ກຳນົດ ແລະ ສາມາດຈັດການຊັບພະຍາກອນພາຍໃນໂນດນັ້ນ.', - readOnly: 'ອ່ານໄດ້ຢ່າງດຽວ', - readOnlyDesc: - 'ສາມາດເບິ່ງຂໍ້ມູນທຸກຢ່າງໃນລະບົບໄດ້ ແຕ່ບໍ່ສາມາດແກ້ໄຂໄດ້.', - bindNode: 'ຜູກມັດໂນດ', - boundUsers: 'ຜູ້ໃຊ້ທີ່ຜູກມັດ', - role: 'ບົດບາດ', - roleName: 'ຊື່', - permission: 'ສິດການໃຊ້ງານ', - permissionDuplicate: 'ແຕ່ລະໂນດສາມາດກຳນົດໄດ້ພຽງບົດບາດດຽວເທົ່ານັ້ນ', - nodeAdminMasterConfirm: - 'ສິດຜູ້ດູແລໂນດໃນໂນດຫຼັກ (Master) ຈະມີສິດສູງ. ກະລຸນາມອບໝາຍຢ່າງລະມັດລະວັງ.', - permissionLinkageTip: - 'ສິດທີ່ກ່ຽວຂ້ອງຈະຖືກເລືອກໂດຍອັດຕະໂນມັດ; ຫາກລຶບອອກເອງ ອາດເຮັດໃຫ້ບາງຟີເຈີໃຊ້ງານບໍ່ໄດ້.', - allViewPermissionHelper: 'ໃຫ້ສິດການເບິ່ງທັງໝົດສຳລັບ AI Gateway.', - apiKeyViewPermissionHelper: 'ອະນຸຍາດໃຫ້ເບິ່ງສະເພາະ AI Gateway API Keys.', - masterOnlyPermission: 'ສິດສະເພາະໂນດຫຼັກ', - masterOnlyPermissionHelper: 'ສິດນີ້ມີຜົນສະເພາະຢູ່ໃນໂນດຫຼັກເທົ່ານັ້ນ.', - view: 'ເບິ່ງ', - manage: 'ຈັດການ', - }, - app: { - app: 'ແອັບ', - title: 'ຊື່ແທນພາແນລ', - titleHelper: 'ຊື່ແທນພາແນລສຳລັບສະແດງຜົນໃນແອັບ (ຊື່ເລີ່ມຕົ້ນ)', - qrCode: 'QR Code', - apiStatusHelper: 'ແອັບພາແນລຈຳເປັນຕ້ອງເປີດໃຊ້ງານ API', - apiInterfaceHelper: - 'ຮອງຮັບການເຂົ້າເຖິງຜ່ານ API (ຕ້ອງເປີດໃຊ້ງານເພື່ອເຊື່ອມຕໍ່ກັບແອັບ)', - apiInterfaceHelper1: - "ການເຂົ້າເຖິງແອັບຕ້ອງເພີ່ມ IP ໃນ Whitelist; ຫາກ IP ບໍ່ຄົງທີ່ ແນະນຳໃຫ້ໃຊ້ 0.0.0.0/0 (IPv4 ທັງໝົດ), ::/0 (IPv6 ທັງໝົດ)", - qrCodeExpired: 'ເວລາໂຫຼດໃໝ່', - apiLeakageHelper: 'ຫ້າມເປີດເຜີຍ QR code ນີ້. ໃຫ້ແນ່ໃຈວ່າໃຊ້ໃນສະພາບແວດລ້ອມທີ່ປອດໄພ.', - }, - waf: { - name: 'WAF', - blackWhite: 'ລາຍຊື່ດຳ ແລະ ຂາວ', - globalSetting: 'ຕັ້ງຄ່າທົ່ວໄປ', - websiteSetting: 'ຕັ້ງຄ່າເວັບໄຊ', - blockRecords: 'ປະຫວັດການບລັອກ', - world: 'ທົ່ວໂລກ', - china: 'ຈີນ', - intercept: 'ການສະກັດກັ້ນ', - request: 'ຄຳຮ້ອງຂໍ', - count4xx: 'ຈຳນວນ 4xx', - count5xx: 'ຈຳນວນ 5xx', - todayStatus: "ສະຖານະມື້ນີ້", - reqMap: 'ແຜນທີ່ການໂຈມຕີ (30 ວັນຫຼ້າສຸດ)', - resource: 'ແຫຼ່ງທີ່ມາ', - count: 'ຈຳນວນ', - hight: 'ສູງ', - low: 'ຕ່ຳ', - reqCount: 'ຄຳຮ້ອງຂໍ', - interceptCount: 'ຈຳນວນການສະກັດກັ້ນ', - requestTrends: 'ແນວໂນ້ມຄຳຮ້ອງຂໍ (7 ວັນຫຼ້າສຸດ)', - interceptTrends: 'ແນວໂນ້ມການສະກັດກັ້ນ (7 ວັນຫຼ້າສຸດ)', - whiteList: 'Whitelist (ບັນຊີຂາວ)', - blackList: 'Blacklist (ບັນຊີດຳ)', - ipBlackListHelper: 'IP ໃນບັນຊີດຳຈະຖືກບລັອກບໍ່ໃຫ້ເຂົ້າເຖິງເວັບໄຊ', - ipWhiteListHelper: 'IP ໃນບັນຊີຂາວຈະຜ່ານທຸກການຈຳກັດ', - uaBlackListHelper: 'ຄຳຮ້ອງຂໍທີ່ມີ User-Agent ໃນບັນຊີດຳຈະຖືກບລັອກ', - uaWhiteListHelper: 'ຄຳຮ້ອງຂໍທີ່ມີ User-Agent ໃນບັນຊີຂາວຈະຜ່ານທຸກການຈຳກັດ', - urlBlackListHelper: 'URL ໃນບັນຊີດຳຈະຖືກບລັອກ', - urlWhiteListHelper: 'URL ໃນບັນຊີຂາວຈະຜ່ານທຸກການຈຳກັດ', - ccHelper: - 'ຫາກເວັບໄຊໄດ້ຮັບຄຳຮ້ອງຂໍເກີນ {1} ຄັ້ງຈາກ IP ດຽວກັນພາຍໃນ {0} ວິນາທີ, IP ຈະຖືກບລັອກເປັນເວລາ {2}', - blockTime: 'ໄລຍະເວລາການບລັອກ', - attackHelper: 'ຫາກມີການສະກັດກັ້ນສະສົມເກີນ {1} ຄັ້ງພາຍໃນ {0} ວິນາທີ, IP ຈະຖືກບລັອກເປັນເວລາ {2}', - notFoundHelper: - 'ຫາກມີຄຳຮ້ອງຂໍທີ່ຕອບກັບເປັນ 404 ສະສົມເກີນ {1} ຄັ້ງພາຍໃນ {0} ວິນາທີ, IP ຈະຖືກບລັອກເປັນເວລາ {2}', - frequencyLimit: 'ຈຳກັດຄວາມຖີ່', - regionLimit: 'ຈຳກັດພື້ນທີ່', - defaultRule: 'ກົດເກນເລີ່ມຕົ້ນ', - accessFrequencyLimit: 'ຈຳກັດຄວາມຖີ່ການເຂົ້າເຖິງ', - attackLimit: 'ຈຳກັດຄວາມຖີ່ການໂຈມຕີ', - notFoundLimit: 'ຈຳກັດຄວາມຖີ່ 404', - urlLimit: 'ຈຳກັດຄວາມຖີ່ URL', - urlLimitHelper: 'ຕັ້ງຄ່າຄວາມຖີ່ການເຂົ້າເຖິງສຳລັບແຕ່ລະ URL', - sqliDefense: 'ປ້ອງກັນ SQL Injection', - sqliHelper: 'ກວດຈັບ ແລະ ບລັອກການໂຈມຕີ SQL injection', - xssHelper: 'ກວດຈັບ ແລະ ບລັອກການໂຈມຕີ XSS', - xssDefense: 'ປ້ອງກັນ XSS', - uaDefense: 'ກົດເກນ User-Agent ທີ່ເປັນອັນຕະລາຍ', - uaHelper: 'ລວມມີກົດເກນເພື່ອລະບຸບັອດ (Bot) ທີ່ບໍ່ຫວັງດີ', - argsDefense: 'ກົດເກນພະລາມິເຕີທີ່ເປັນອັນຕະລາຍ', - argsHelper: 'ບລັອກຄຳຮ້ອງຂໍທີ່ມີພະລາມິເຕີທີ່ບໍ່ຫວັງດີ', - cookieDefense: 'ກົດເກນ Cookie ທີ່ເປັນອັນຕະລາຍ', - cookieHelper: 'ຫ້າມໃຊ້ Cookie ທີ່ເປັນອັນຕະລາຍໃນຄຳຮ້ອງຂໍ', - headerDefense: 'ກົດເກນ Header ທີ່ເປັນອັນຕະລາຍ', - headerHelper: 'ຫ້າມຄຳຮ້ອງຂໍທີ່ມີ Header ທີ່ບໍ່ຫວັງດີ', - httpRule: 'ກົດເກນວິທີການ HTTP (Method)', - httpHelper: - 'ກຳນົດວິທີການເຂົ້າເຖິງທີ່ອະນຸຍາດ. ຫາກຕ້ອງການຈຳກັດ, ກະລຸນາປິດປຸ່ມນັ້ນ. ຕົວຢ່າງ: ຫາກອະນຸຍາດສະເພາະ GET, ຕ້ອງປິດປຸ່ມອື່ນໆທັງໝົດ', - geoRule: 'ຈຳກັດການເຂົ້າເຖິງຕາມພື້ນທີ່', - geoHelper: - 'ຈຳກັດການເຂົ້າເຖິງເວັບໄຊຈາກບາງປະເທດ ຫຼື ພື້ນທີ່', - ipLocation: 'ທີ່ຕັ້ງ IP', - action: 'ການດຳເນີນການ', - ruleType: 'ປະເພດການໂຈມຕີ', - ipHelper: 'ປ້ອນທີ່ຢູ່ IP', - attackLog: 'ບັນທຶກການໂຈມຕີ', - rule: 'ກົດເກນ', - ipArr: 'ຊ່ວງ IPV4', - ipStart: 'IP ເລີ່ມຕົ້ນ', - ipEnd: 'IP ສິ້ນສຸດ', - ipv4: 'IPv4', - ipv6: 'IPv6', - urlDefense: 'ກົດເກນ URL', - urlHelper: 'URL ທີ່ຕ້ອງຫ້າມ', - dirFilter: 'ກອງໄດເຣັກທໍຣີ', - sqlInject: 'SQL Injection', - xss: 'XSS', - phpExec: 'ການທຳງານຂອງສະຄຣິບ PHP', - oneWordTrojan: 'One word Trojan', - appFilter: 'ການກອງໄດເຣັກທໍຣີທີ່ເປັນອັນຕະລາຍ', - webShell: 'Webshell', - args: 'ພະລາມິເຕີທີ່ບໍ່ຫວັງດີ', - protocolFilter: 'ການກອງໂປຣໂຕຄໍ', - javaFilter: 'ການກອງໄຟລ໌ Java ທີ່ເປັນອັນຕະລາຍ', - scannerFilter: 'ການກອງ Scanner', - escapeFilter: 'ການກອງ Escape', - customRule: 'ກົດເກນກຳນົດເອງ', - httpMethod: 'ການກອງ HTTP Method', - fileExt: 'ຈຳກັດການອັບໂຫຼດໄຟລ໌', - fileExtHelper: 'ນາມສະກຸນໄຟລ໌ທີ່ຫ້າມອັບໂຫຼດ', - deny: 'ປະຕິເສດ', - allow: 'ອະນຸຍາດ', - field: 'ເປົ້າໝາຍ', - pattern: 'ເງື່ອນໄຂ', - ruleContent: 'ເນື້ອໃນ', - contain: 'ລວມມີ', - equal: 'ເທົ່າກັບ', - regex: 'Regular Expression', - notEqual: 'ບໍ່ເທົ່າກັບ', - customRuleHelper: 'ດຳເນີນການຕາມເງື່ອນໄຂທີ່ກຳນົດ', - actionAllow: 'ອະນຸຍາດ', - blockIP: 'ບລັອກ IP', - code: 'ລະຫັດສະຖານະຕອບກັບ', - noRes: 'ຕັດການເຊື່ອມຕໍ່ (444)', - badReq: 'ພະລາມິເຕີບໍ່ຖືກຕ້ອງ (400)', - forbidden: 'ປະຕິເສດການເຂົ້າເຖິງ (403)', - serverErr: 'ເຊີເວີຂັດຂ້ອງ (500)', - resHtml: 'ໜ້າຕອບກັບ', - allowHelper: 'ການອະນຸຍາດຈະຂ້າມກົດເກນ WAF ອື່ນໆ, ກະລຸນາໃຊ້ຢ່າງລະມັດລະວັງ', - captcha: 'ການຢືນຢັນຕົວຕົນ (Captcha)', - fiveSeconds: 'ຢືນຢັນ 5 ວິນາທີ', - location: 'ພື້ນທີ່', - redisConfig: 'ການຕັ້ງຄ່າ Redis', - redisHelper: 'ເປີດໃຊ້ Redis ເພື່ອເກັບລາຍຊື່ IP ທີ່ຖືກບລັອກຊົ່ວຄາວ', - wafHelper: 'ເວັບໄຊທັງໝົດຈະບໍ່ໄດ້ຮັບການປ້ອງກັນຫາກປິດໃຊ້ງານ', - websiteWafHelper: 'ເວັບໄຊນີ້ຈະບໍ່ໄດ້ຮັບການປ້ອງກັນຫາກປິດໃຊ້ງານ', - attackIP: 'IP ທີ່ໂຈມຕີ', - attackParam: 'ລາຍລະອຽດການໂຈມຕີ', - execRule: 'ກົດເກນທີ່ກວດພົບ', - acl: 'ACL', - sql: 'SQL Injection', - cc: 'ຈຳກັດຄວາມຖີ່ການເຂົ້າເຖິງ', - isBlocking: 'ຖືກບລັອກ', - isFree: 'ປົດບລັອກແລ້ວ', - unLock: 'ປົດບລັອກ', - unLockHelper: 'ປົດບລັອກ IP: {0}?', - saveDefault: 'ບັນທຶກເປັນຄ່າເລີ່ມຕົ້ນ', - saveToWebsite: 'ນຳໃຊ້ກັບເວັບໄຊ', - saveToWebsiteHelper: 'ນຳໃຊ້ການຕັ້ງຄ່າປັດຈຸບັນກັບທຸກເວັບໄຊ?', - websiteHelper: - 'ນີ້ຄືຄ່າເລີ່ມຕົ້ນສຳລັບການສ້າງເວັບໄຊໃໝ່. ການແກ້ໄຂຕ້ອງນຳໃຊ້ກັບເວັບໄຊຈຶ່ງຈະມີຜົນ', - websiteHelper2: - 'ນີ້ຄືຄ່າເລີ່ມຕົ້ນສຳລັບການສ້າງເວັບໄຊໃໝ່. ກະລຸນາແກ້ໄຂການຕັ້ງຄ່າສະເພາະຢູ່ທີ່ຕົວເວັບໄຊ', - ipGroup: 'ກຸ່ມ IP', - ipGroupHelper: - 'ໜຶ່ງ IP ຫຼື ຊ່ວງ IP ຕໍ່ແຖວ, ຮອງຮັບ IPv4 ແລະ IPv6, ຕົວຢ່າງ: 192.168.1.1 ຫຼື 192.168.1.0/24', - ipBlack: 'ບັນຊີດຳ IP', - openRestyAlert: 'ເວີຊັນ OpenResty ຕ້ອງສູງກວ່າ {0}', - initAlert: - 'ຕ້ອງມີການເລີ່ມຕົ້ນລະບົບ (Initialization) ໃນການໃຊ້ງານຄັ້ງທຳອິດ, ໄຟລ໌ຕັ້ງຄ່າເວັບໄຊຈະຖືກແກ້ໄຂ ແລະ ຄ່າ WAF ເດີມຈະຫາຍໄປ. ກະລຸນາສຳຮອງຂໍ້ມູນ OpenResty ກ່ອນ', - initHelper: - 'ການເລີ່ມຕົ້ນລະບົບຈະລຶບການຕັ້ງຄ່າ WAF ທີ່ມີຢູ່. ເຈົ້າແນ່ໃຈບໍວ່າຕ້ອງການເລີ່ມຕົ້ນ?', - mainSwitch: 'ສະວິດຫຼັກ', - websiteSwitch: 'ສະວິດ', - websiteAlert: 'ກະລຸນາສ້າງເວັບໄຊກ່ອນ', - defaultUrlBlack: 'ກົດເກນ URL', - htmlRes: 'ໜ້າສະກັດກັ້ນ', - urlSearchHelper: 'ປ້ອນ URL ເພື່ອຄົ້ນຫາ', - toCreate: 'ສ້າງ', - closeWaf: 'ປິດ WAF', - closeWafHelper: 'ການປິດ WAF ຈະເຮັດໃຫ້ເວັບໄຊບໍ່ມີການປ້ອງກັນ, ຕ້ອງການດຳເນີນການຕໍ່ບໍ?', - addblack: 'ເພີ່ມເຂົ້າບັນຊີດຳ', - addwhite: 'ເພີ່ມເຂົ້າບັນຊີຂາວ', - addblackHelper: 'ເພີ່ມ IP:{0} ເຂົ້າໃນບັນຊີດຳເລີ່ມຕົ້ນ?', - addwhiteHelper: 'ເພີ່ມ IP:{0} ເຂົ້າໃນບັນຊີຂາວເລີ່ມຕົ້ນ?', - defaultUaBlack: 'ກົດເກນ User-Agent', - defaultIpBlack: 'ກຸ່ມ IP ທີ່ບໍ່ຫວັງດີ', - cookie: 'ກົດເກນ Cookie', - urlBlack: 'ບັນຊີດຳ URL', - uaBlack: 'ບັນຊີດຳ User-Agent', - attackCount: 'ຈຳກັດຄວາມຖີ່ການໂຈມຕີ', - fileExtCheck: 'ຈຳກັດການອັບໂຫຼດໄຟລ໌', - geoRestrict: 'ຈຳກັດການເຂົ້າເຖິງຕາມພື້ນທີ່', - attacklog: 'ປະຫວັດການສະກັດກັ້ນ', - unknownWebsite: 'ການເຂົ້າເຖິງໂດເມນທີ່ບໍ່ໄດ້ຮັບອະນຸຍາດ', - geoRuleEmpty: 'ພື້ນທີ່ບໍ່ສາມາດຫວ່າງໄດ້', - unknown: 'ບໍ່ມີເວັບໄຊນີ້', - geo: 'ຈຳກັດພື້ນທີ່', - revertHtml: 'ຄືນຄ່າ {0} ເປັນໜ້າເລີ່ມຕົ້ນ?', - five_seconds: 'ຢືນຢັນ 5 ວິນາທີ', - header: 'ກົດເກນ Header', - methodWhite: 'ກົດເກນ HTTP', - expiryDate: 'ວັນໝົດອາຍຸ', - expiryDateHelper: - 'ຫຼັງຈາກຢືນຢັນຜ່ານແລ້ວ, ຈະບໍ່ມີການຢືນຢັນອີກພາຍໃນກຳນົດເວລາ', - defaultIpBlackHelper: 'ລວມລາຍຊື່ IP ທີ່ບໍ່ຫວັງດີຈາກອິນເຕີເນັດເພື່ອປ້ອງກັນການເຂົ້າເຖິງ', - notFoundCount: 'ຈຳກັດຄວາມຖີ່ 404', - matchValue: 'ຄ່າທີ່ກົງກັນ', - headerName: 'ຮອງຮັບຕົວອັກສອນພາສາອັງກິດ, ຕົວເລກ, - ຄວາມຍາວ 3-30', - cdnHelper: 'ເວັບໄຊທີ່ໃຊ້ CDN ສາມາດເປີດບ່ອນນີ້ເພື່ອດຶງ IP ທີ່ແທ້ຈິງ', - clearLogWarn: 'ບໍ່ສາມາດກູ້ຄືນບັນທຶກທີ່ລຶບແລ້ວໄດ້, ຕ້ອງການຕໍ່ບໍ?', - commonRuleHelper: 'ກົດເກນເປັນແບບຄົ້ນຫາບາງສ່ວນ (Fuzzy Matching)', - blockIPHelper: - 'IP ທີ່ຖືກບລັອກຈະຖືກເກັບໄວ້ໃນ OpenResty ຊົ່ວຄາວ ແລະ ຈະປົດບລັອກເມື່ອ Restart OpenResty. ສາມາດບລັອກຖາວອນໄດ້ຜ່ານຟັງຊັນບລັອກ', - addWhiteUrlHelper: 'ເພີ່ມ URL {0} ເຂົ້າໃນບັນຊີຂາວ?', - dashHelper: 'ເວີຊັນ Community ສາມາດໃຊ້ຟັງຊັນໃນການຕັ້ງຄ່າທົ່ວໄປ ແລະ ເວັບໄຊໄດ້', - wafStatusHelper: 'ໄຟວໍ (Firewall) ຍັງບໍ່ໄດ້ເປີດໃຊ້. ການປ້ອງກັນເວັບໄຊຖືກຢຸດຊົ່ວຄາວ.', - enableProtection: 'ເປີດການປ້ອງກັນ', - ccMode: 'ໂໝດ', - global: 'ໂໝດທົ່ວໄປ', - uriMode: 'ໂໝດ URL', - globalHelper: - 'ໂໝດທົ່ວໄປ: ເຮັດວຽກເມື່ອຈຳນວນຄຳຮ້ອງຂໍທັງໝົດໄປຫາ URL ໃດໜຶ່ງເກີນເກນທີ່ກຳນົດ', - uriModeHelper: - 'ໂໝດ URL: ເຮັດວຽກເມື່ອຈຳນວນຄຳຮ້ອງຂໍໄປຫາ URL ດຽວເກີນເກນທີ່ກຳນົດ', - ip: 'ບັນຊີດຳ IP', - globalSettingHelper: - 'ການຕັ້ງຄ່າທີ່ມີແທັກ [ເວັບໄຊ] ຕ້ອງເປີດໃນ [ຕັ້ງຄ່າເວັບໄຊ], ຄ່າທົ່ວໄປເປັນພຽງຄ່າເລີ່ມຕົ້ນສຳລັບເວັບໄຊໃໝ່', - globalSettingHelper2: - 'ຕ້ອງເປີດໃຊ້ງານທັງໃນ [ຕັ້ງຄ່າທົ່ວໄປ] ແລະ [ຕັ້ງຄ່າເວັບໄຊ] ພ້ອມກັນ', - urlCCHelper: 'ຄຳຮ້ອງຂໍເກີນ {1} ຄັ້ງຕໍ່ URL ນີ້ພາຍໃນ {0} ວິນາທີ, ຈະບລັອກ IP ນີ້ {2}', - urlCCHelper2: 'URL ບໍ່ສາມາດມີພະລາມິເຕີໄດ້', - notContain: 'ບໍ່ລວມມີ', - urlcc: 'ຈຳກັດຄວາມຖີ່ URL', - method: 'ປະເພດຄຳຮ້ອງຂໍ', - addIpsToBlock: 'ບລັອກ IP ແບບກຸ່ມ', - addUrlsToWhite: 'ເພີ່ມ URL ເຂົ້າບັນຊີຂາວແບບກຸ່ມ', - noBlackIp: 'IP ຖືກບລັອກແລ້ວ, ບໍ່ຈຳເປັນຕ້ອງບລັອກຊ້ຳ', - noWhiteUrl: 'URL ຢູ່ໃນບັນຊີຂາວແລ້ວ, ບໍ່ຈຳເປັນຕ້ອງເພີ່ມຊ້ຳ', - spiderIpHelper: - 'ລວມມີ Baidu, Bing, Google, 360, Shenma, Sogou, ByteDance, DuckDuckGo, Yandex. ຫາກປິດຈະບລັອກ Spider ທັງໝົດ.', - spiderIp: 'ກຸ່ມ IP ຂອງ Spider', - geoIp: 'ຖານຂໍ້ມູນທີ່ຢູ່ IP', - geoIpHelper: 'ໃຊ້ເພື່ອຢືນຢັນທີ່ຕັ້ງທາງພູມສາດຂອງ IP', - stat: 'ລາຍງານການໂຈມຕີ', - statTitle: 'ລາຍງານ', - attackIp: 'IP', - attackCountNum: 'ຈຳນວນຄັ້ງ', - percent: 'ເປີເຊັນ', - addblackUrlHelper: 'ຕ້ອງການເພີ່ມ URL: {0} ເຂົ້າໃນບັນຊີດຳເລີ່ມຕົ້ນບໍ?', - rce: 'Remote Code Execution', - software: 'ຊອບແວ', - cveHelper: 'ລວມມີຊ່ອງໂຫວ່ຂອງຊອບແວ ແລະ Framework ທີ່ພົບເລື້ອຍ', - vulnCheck: 'ກົດເກນເພີ່ມເຕີມ', - ssrf: 'ຊ່ອງໂຫວ່ SSRF', - afr: 'ການອ່ານໄຟລ໌ຕາມໃຈ (Arbitrary File Read)', - ua: 'ການເຂົ້າເຖິງໂດຍບໍ່ໄດ້ຮັບອະນຸຍາດ', - id: 'ຂໍ້ມູນຮົ່ວໄຫຼ', - aa: 'ການຂ້າມຜ່ານການຢືນຢັນຕົວຕົນ', - dr: 'Directory Traversal', - xxe: 'ຊ່ອງໂຫວ່ XXE', - suid: 'ຊ່ອງໂຫວ່ Serialization', - dos: 'ຊ່ອງໂຫວ່ Denial of Service', - afd: 'ການດາວໂຫຼດໄຟລ໌ຕາມໃຈ', - sqlInjection: 'SQL Injection', - afw: 'ການຂຽນໄຟລ໌ຕາມໃຈ', - il: 'ຂໍ້ມູນຮົ່ວໄຫຼ', - clearAllLog: 'ລຶບບັນທຶກທັງໝົດ', - exportLog: 'ສົ່ງອອກບັນທຶກ', - appRule: 'ກົດເກນແອັບພລິເຄຊັນ', - appRuleHelper: - 'ກົດເກນແອັບພລິເຄຊັນທົ່ວໄປ, ການເປີດໃຊ້ຈະຊ່ວຍລຸດຂໍ້ຜິດພາດ (False Positives), ໜຶ່ງເວັບໄຊໃຊ້ໄດ້ພຽງກົດເກນດຽວ', - logExternal: 'ປະເພດທີ່ບໍ່ບັນທຶກ', - ipWhite: 'ບັນຊີຂາວ IP', - urlWhite: 'ບັນຊີຂາວ URL', - uaWhite: 'ບັນຊີຂາວ User-Agent', - logExternalHelper: - 'ປະເພດທີ່ເລືອກຈະບໍ່ຖືກບັນທຶກໃນ Log. ບັນຊີດຳ/ຂາວ, ການຈຳກັດພື້ນທີ່ ແລະ ກົດເກນກຳນົດເອງມັກຈະສ້າງ Log ຈຳນວນຫຼາຍ ແນະນຳໃຫ້ຍົກເວັ້ນ', - ssti: 'ການໂຈມຕີ SSTI', - crlf: 'CRLF Injection', - strict: 'ໂໝດເຂັ້ມງວດ', - strictHelper: 'ໃຊ້ກົດເກນທີ່ເຂັ້ມງວດກວ່າເພື່ອທົດສອບຄຳຮ້ອງຂໍ', - saveLog: 'ບັນທຶກ Log', - remoteURLHelper: 'Remote URL ຕ້ອງມີໜຶ່ງ IP ຕໍ່ແຖວ ແລະ ບໍ່ມີຕົວອັກສອນອື່ນ', - notFound: 'ບໍ່ພົບ (404)', - serviceUnavailable: 'ບໍລິການບໍ່ພ້ອມໃຊ້ງານ (503)', - gatewayTimeout: 'Gateway Timeout (504)', - belongToIpGroup: 'ຢູ່ໃນກຸ່ມ IP', - notBelongToIpGroup: 'ບໍ່ຢູ່ໃນກຸ່ມ IP', - unknownWebsiteKey: 'ບໍ່ຮູ້ຈັກໂດເມນ', - special: 'ພິເສດ', - fileToLarge: 'ໄຟລ໌ໃຫຍ່ເກີນ 1MB ບໍ່ສາມາດອັບໂຫຼດໄດ້', - uploadOverLimit: 'ອັບໂຫຼດໄຟລ໌ເກີນຈຳນວນທີ່ກຳນົດ, ສູງສຸດ 1 ໄຟລ໌', - importRuleHelper: 'ໜຶ່ງກົດເກນຕໍ່ແຖວ', - }, - monitor: { - '360': '360 Search', - name: 'ຕິດຕາມເວັບໄຊ', - pv: 'Page Views', - uv: 'Unique Visitors', - flow: 'ການຮັບສົ່ງຂໍ້ມູນ', - ip: 'IP', - spider: 'Spider', - visitors: 'ແນວໂນ້ມຜູ້ເຂົ້າຊົມ', - today: 'ມື້ນີ້', - last7days: '7 ວັນຫຼ້າສຸດ', - last30days: '30 ວັນຫຼ້າສຸດ', - uvMap: 'ແຜນທີ່ຜູ້ເຂົ້າຊົມ (ວັນທີ 30)', - qps: 'ຄຳຮ້ອງຂໍທັນທີ (ຕໍ່ນາທີ)', - flowSec: 'ການຮັບສົ່ງຂໍ້ມູນທັນທີ (ຕໍ່ນາທີ)', - excludeCode: 'ຍົກເວັ້ນລະຫັດສະຖານະ', - excludeUrl: 'ຍົກເວັ້ນ URL', - excludeExt: 'ຍົກເວັ້ນນາມສະກຸນໄຟລ໌', - cdnHelper: 'ດຶງ IP ທີ່ແທ້ຈິງຈາກ Header ທີ່ CDN ສົ່ງມາ', - reqRank: 'ອັນດັບການເຂົ້າຊົມ', - refererDomain: 'ໂດເມນທີ່ສົ່ງມາ', - os: 'ລະບົບປະຕິບັດການ', - browser: 'ບຣາວເຊີ/ໄຄລເອັນ', - device: 'ອຸປະກອນ', - showMore: 'ເພີ່ມເຕີມ', - unknown: 'ອື່ນໆ', - pc: 'ຄອມພິວເຕີ', - mobile: 'ອຸປະກອນມືຖື', - wechat: 'WeChat', - machine: 'ເຄື່ອງຈັກ/ບັອດ', - tencent: 'Tencent Browser', - ucweb: 'UC Browser', - '2345explorer': '2345 browser', - huaweibrowser: 'Huawei Browser', - log: 'ບັນທຶກຄຳຮ້ອງຂໍ', - statusCode: 'ລະຫັດສະຖານະ', - requestTime: 'ເວລາຕອບສະໜອງ', - flowRes: 'ຂໍ້ມູນທີ່ຕອບກັບ', - method: 'ວິທີການ (Method)', - statusCodeHelper: 'ປ້ອນລະຫັດສະຖານະດ້ານເທິງ', - statusCodeError: 'ປະເພດລະຫັດສະຖານະບໍ່ຖືກຕ້ອງ', - methodHelper: 'ປ້ອນວິທີການດ້ານເທິງ', - all: 'ທັງໝົດ', - baidu: 'Baidu', - google: 'Google', - bing: 'Bing', - bytes: 'Today headlines', - sogou: 'Sogou', - failed: 'ຜິດພາດ', - ipCount: 'ຈຳນວນ IP', - spiderCount: 'ຄຳຮ້ອງຂໍຈາກ Spider', - averageReqTime: 'ເວລາຕອບສະໜອງສະເລ່ຍ', - totalFlow: 'ຂໍ້ມູນທັງໝົດ', - logSize: 'ຂະໜາດໄຟລ໌ Log', - realIPType: 'ວິທີການດຶງ IP ທີ່ແທ້ຈິງ', - fromHeader: 'ດຶງຈາກ HTTP Header', - fromHeaders: 'ດຶງຈາກລາຍຊື່ Header', - header: 'HTTP Header', - cdnConfig: 'ການຕັ້ງຄ່າ CDN', - xff1: 'Proxy ຊັ້ນທີ 1 ຈາກ X-Forwarded-For', - xff2: 'Proxy ຊັ້ນທີ 2 ຈາກ X-Forwarded-For', - xff3: 'Proxy ຊັ້ນທີ 3 ຈາກ X-Forwarded-For', - xffHelper: - 'ຕົວຢ່າງ: X-Forwarded-For: ,,, Proxy ຊັ້ນເທິງຈະເອົາ IP ສຸດທ້າຍ ', - headersHelper: - 'ດຶງ IP ທີ່ແທ້ຈິງຈາກ Header ທີ່ CDN ໃຊ້ເລື້ອຍໆ, ໂດຍເລືອກຄ່າທຳອິດທີ່ມີ', - monitorCDNHelper: - 'ການແກ້ໄຂ CDN ໃນການຕິດຕາມເວັບໄຊຈະອັບເດດການຕັ້ງຄ່າ WAF CDN ນຳ', - wafCDNHelper: 'ການແກ້ໄຂ CDN ໃນ WAF ຈະອັບເດດການຕັ້ງຄ່າຕິດຕາມເວັບໄຊນຳ', - statusErr: 'ຮູບແບບລະຫັດສະຖານະບໍ່ຖືກຕ້ອງ', - shenma: 'Shenma Search', - duckduckgo: 'DuckDuckGo', - excludeUri: 'ຍົກເວັ້ນ URI', - top100Helper: 'ສະແດງຂໍ້ມູນ 100 ອັນດັບທຳອິດ', - logSaveDay: 'ໄລຍະເວລາເກັບ Log (ວັນ)', - cros: 'Chrome OS', - theworld: 'TheWorld Browser', - edge: 'Microsoft Edge', - maxthon: 'Maxthon Browser', - monitorStatusHelper: 'ການຕິດຕາມເວັບໄຊຖືກປິດຢູ່. ເປີດໃຊ້ງານດຽວນີ້', - excludeIp: 'ຍົກເວັ້ນທີ່ຢູ່ IP', - excludeUa: 'ຍົກເວັ້ນ User-Agent', - remotePort: 'ພອດປາຍທາງ', - unknown_browser: 'ບໍ່ຮູ້ຈັກ', - unknown_os: 'ບໍ່ຮູ້ຈັກ', - unknown_device: 'ບໍ່ຮູ້ຈັກ', - logSaveSize: 'ຂະໜາດ Log ສູງສຸດ', - logSaveSizeHelper: 'ນີ້ຄືຂະໜາດການບັນທຶກ Log ສຳລັບໜຶ່ງເວັບໄຊ', - '360se': '360 Security Browser', - websites: 'ລາຍຊື່ເວັບໄຊ', - trend: 'ສະຖິຕິແນວໂນ້ມ', - reqCount: 'ຈຳນວນຄຳຮ້ອງຂໍ', - uriHelper: 'ສາມາດໃຊ້ /test/* ຫຼື /*/index.php ເພື່ອຍົກເວັ້ນ Uri', - }, - tamper: { - tamper: 'ປ້ອງກັນການແຊກແຊງເວັບໄຊ', - ignoreTemplate: 'ແທັມເພລດການຍົກເວັ້ນ', - protectTemplate: 'ແທັມເພລດການປ້ອງກັນ', - ignoreTemplateHelper: - 'ປ້ອນກົດເກນການຍົກເວັ້ນ (ແຍກດ້ວຍ Enter ຫຼື ຍະຫວ່າງ). (ໄດເຣັກທໍຣີສະເພາະ ./log ຫຼື ຊື່ tmp. ສຳລັບໄຟລ໌ ໃຫ້ປ້ອນທີ່ຢູ່ໄຟລ໌ ເຊັ່ນ ./data/test.html)', - protectTemplateHelper: - 'ປ້ອນກົດເກນການປ້ອງກັນ (ແຍກດ້ວຍ Enter ຫຼື ຍະຫວ່າງ). (ໄຟລ໌ສະເພາະ ./index.html, ນາມສະກຸນ .html, ປະເພດໄຟລ໌ js. ສຳລັບໄດເຣັກທໍຣີ ໃຫ້ປ້ອນທີ່ຢູ່ ເຊັ່ນ ./log)', - templateContent: 'ເນື້ອໃນແທັມເພລດ', - template: 'ແທັມເພລດ', - saveTemplate: 'ບັນທຶກເປັນແທັມເພລດ', - tamperHelper1: - 'ສຳລັບເວັບໄຊທີ່ຕິດຕັ້ງແບບຄລິກດຽວ, ແນະນຳໃຫ້ປ້ອງກັນໄດເຣັກທໍຣີຂອງແອັບ. ຫາກເວັບໄຊໃຊ້ງານບໍ່ໄດ້ ຫຼື ສຳຮອງ/ກູ້ຄືນລົ້ມເຫຼວ, ໃຫ້ປິດການປ້ອງກັນກ່ອນ.', - tamperHelper2: - 'ນີ້ຈະຈຳກັດການອ່ານ, ຂຽນ, ລຶບ, ປ່ຽນສິດ ແລະ ເຈົ້າຂອງໄຟລ໌ໃນໄດເຣັກທໍຣີທີ່ໄດ້ຮັບການປ້ອງກັນ.', - tamperPath: 'ໄດເຣັກທໍຣີທີ່ປ້ອງກັນ', - tamperPathEdit: 'ແກ້ໄຂທີ່ຢູ່', - log: 'Log ການສະກັດກັ້ນ', - totalProtect: 'ການປ້ອງກັນທັງໝົດ', - todayProtect: 'ການປ້ອງກັນມື້ນີ້', - templateRule: 'ຄວາມຍາວ 1-512, ແລະ ຊື່ຫ້າມມີສັນຍະລັກ {0}.', - ignore: 'ຍົກເວັ້ນ', - ignoreHelper: - 'ເລືອກ ຫຼື ປ້ອນກົດເກນການຍົກເວັ້ນ (ແຍກດ້ວຍ Enter ຫຼື ຍະຫວ່າງ).', - protect: 'ປ້ອງກັນ', - protectHelper: - 'ເລືອກ ຫຼື ປ້ອນກົດເກນການປ້ອງກັນ (ແຍກດ້ວຍ Enter ຫຼື ຍະຫວ່າງ).', - tamperHelper00: 'ການຍົກເວັ້ນ ແລະ ປ້ອງກັນ ຮອງຮັບສະເພາະທີ່ຢູ່ແບບສຳພັດ (Relative Paths).', - tamperHelper01: - 'ຫຼັງຈາກເປີດໃຊ້, ລະບົບຈະຈຳກັດການສ້າງ, ແກ້ໄຂ ແລະ ລຶບໄຟລ໌ໃນໄດເຣັກທໍຣີທີ່ປ້ອງກັນ.', - tamperHelper02: 'ລຳດັບຄວາມສຳຄັນ: ປ້ອງກັນສະເພາະທີ່ຢູ່ > ຍົກເວັ້ນສະເພາະທີ່ຢູ່ > ປ້ອງກັນ > ຍົກເວັ້ນ', - tamperHelper03: - 'ການຕິດຕາມຈະເຮັດວຽກສະເພາະໄດເຣັກທໍຣີທີ່ບໍ່ໄດ້ຍົກເວັ້ນ, ໂດຍກວດສອບການສ້າງໄຟລ໌ທີ່ບໍ່ໄດ້ປ້ອງກັນ.', - disableHelper: 'ກຳລັງຈະປິດການປ້ອງກັນການແຊກແຊງສຳລັບເວັບໄຊຕໍ່ໄປນີ້, ຕ້ອງການຕໍ່ບໍ?', - appendOnly: 'ເພີ່ມໄດ້ຢ່າງດຽວ', - appendOnlyHelper: - 'ຈຳກັດການລຶບໄຟລ໌ໃນໄດເຣັກທໍຣີນີ້, ອະນຸຍາດສະເພາະການເພີ່ມໄດເຣັກທໍຣີທີ່ຍົກເວັ້ນ ຫຼື ໄຟລ໌ທີ່ບໍ່ໄດ້ປ້ອງກັນ', - immutable: 'ປ່ຽນແປງບໍ່ໄດ້', - immutableHelper: 'ຈຳກັດການແກ້ໄຂ, ລຶບ, ປ່ຽນສິດ ແລະ ເຈົ້າຂອງສຳລັບໄຟລ໌ນີ້', - onWatch: 'ຕິດຕາມ', - onWatchHelper: - 'ຕິດຕາມ ແລະ ສະກັດກັ້ນການສ້າງໄຟລ໌ທີ່ປ້ອງກັນ ຫຼື ໄດເຣັກທໍຣີທີ່ບໍ່ໄດ້ຍົກເວັ້ນ', - forceStop: 'ບັງຄັບປິດ', - forceStopHelper: 'ກຳລັງຈະບັງຄັບປິດຟັງຊັນປ້ອງກັນການແຊກແຊງສຳລັບເວັບໄຊນີ້. ຕ້ອງການຕໍ່ບໍ?', - }, - setting: { - setting: 'ຕັ້ງຄ່າພາແນລ', - title: 'ຄຳອະທິບາຍພາແນລ', - titleHelper: - 'ຈະສະແດງໃນໜ້າລັອກອິນ (ເຊັ່ນ: ພາແນລຈັດການເຊີເວີ Linux, ແນະນຳ 8-15 ຕົວອັກສອນ)', - logo: 'ໂລໂກ້ (ບໍ່ມີຂໍ້ຄວາມ)', - logoHelper: - 'ຈະສະແດງຢູ່ມຸມຊ້າຍເທິງເມື່ອເມນູຖືກຫຍໍ້ (ຂະໜາດແນະນຳ: 82px*82px)', - logoWithText: 'ໂລໂກ້ (ມີຂໍ້ຄວາມ)', - logoWithTextHelper: - 'ຈະສະແດງຢູ່ມຸມຊ້າຍເທິງເມື່ອເມນູຖືກຂະຫຍາຍ (ຂະໜາດແນະນຳ: 185px*55px)', - favicon: 'ໄອຄອນເວັບໄຊ', - faviconHelper: 'ໄອຄອນເວັບໄຊ (ຂະໜາດແນະນຳ: 16px*16px)', - setDefault: 'ຄືນຄ່າເລີ່ມຕົ້ນ', - setHelper: 'ການຕັ້ງຄ່າປັດຈຸບັນຈະຖືກບັນທຶກ. ຕ້ອງການຕໍ່ບໍ?', - setDefaultHelper: 'ການຕັ້ງຄ່າພາແນລທັງໝົດຈະຖືກຄືນຄ່າເປັນເລີ່ມຕົ້ນ. ຕ້ອງການຕໍ່ບໍ?', - logoGroup: 'ໂລໂກ້', - imageGroup: 'ຮູບພາບ', - loginImage: 'ຮູບພາບ', - loginImageHelper: 'ສະແດງໃນໜ້າລັອກອິນ (ຂະໜາດແນະນຳ: 500*416px)', - loginBgType: 'ປະເພດພື້ນຫຼັງ', - loginBgImage: 'ຮູບພື້ນຫຼັງ', - loginBgImageHelper: 'ສະແດງເປັນຮູບພື້ນຫຼັງໃນໜ້າລັອກອິນ (ຂະໜາດແນະນຳ: 1920*1080px)', - loginBgColor: 'ສີພື້ນຫຼັງ', - loginBgColorHelper: 'ສະແດງເປັນສີພື້ນຫຼັງໃນໜ້າລັອກອິນ', - image: 'ຮູບພາບ', - bgColor: 'ສີພື້ນຫຼັງ', - loginGroup: 'ໜ້າລັອກອິນ', - loginBtnLinkColor: 'ສີປຸ່ມ/ລິ້ງ', - loginBtnLinkColorHelper: 'ຈະສະແດງເປັນສີປຸ່ມ ຫຼື ລິ້ງໃນໜ້າລັອກອິນ', - }, - helper: { - wafTitle1: 'ແຜນທີ່ການສະກັດກັ້ນ', - wafContent1: 'ສະແດງການກະຈາຍຕົວທາງພູມສາດຂອງການສະກັດກັ້ນໃນ 30 ວັນຫຼ້າສຸດ', - wafTitle2: 'ຈຳກັດການເຂົ້າເຖິງຕາມພື້ນທີ່', - wafContent2: 'ຈຳກັດແຫຼ່ງທີ່ມາຂອງເວັບໄຊຕາມທີ່ຕັ້ງທາງພູມສາດ', - wafTitle3: 'ໜ້າສະກັດກັ້ນກຳນົດເອງ', - wafContent3: 'ສ້າງໜ້າເວັບກຳນົດເອງເພື່ອສະແດງຫຼັງຈາກຄຳຮ້ອງຂໍຖືກສະກັດກັ້ນ', - wafTitle4: 'ກົດເກນກຳນົດເອງ (ACL)', - wafContent4: 'ສະກັດກັ້ນຄຳຮ້ອງຂໍຕາມກົດເກນທີ່ກຳນົດເອງ', - tamperTitle1: 'ຕິດຕາມຄວາມສົມບູນຂອງໄຟລ໌', - tamperContent1: - 'ຕິດຕາມຄວາມສົມບູນຂອງໄຟລ໌ເວັບໄຊ, ລວມມີໄຟລ໌ຫຼັກ, ສະຄຣິບ ແລະ ໄຟລ໌ຕັ້ງຄ່າ.', - tamperTitle2: 'ສະແກນ ແລະ ກວດຈັບແບບທັນທີ', - tamperContent2: 'ກວດຈັບໄຟລ໌ທີ່ຜິດປົກກະຕິ ຫຼື ຖືກແຊກແຊງໂດຍການສະແກນລະບົບໄຟລ໌ແບບທັນທີ.', - tamperTitle3: 'ຕັ້ງຄ່າສິດຄວາມປອດໄພ', - tamperContent3: - 'ຈຳກັດການເຂົ້າເຖິງໄຟລ໌ຜ່ານການຕັ້ງສິດທີ່ເໝາະສົມ, ຊ່ວຍລຸດຊ່ອງທາງການໂຈມຕີ.', - tamperTitle4: 'ການບັນທຶກ ແລະ ວິເຄາະ', - tamperContent4: - 'ບັນທຶກການເຂົ້າເຖິງ ແລະ ດຳເນີນການກັບໄຟລ໌ເພື່ອການກວດສອບ ແລະ ວິເຄາະໄພຄຸກຄາມ.', - settingTitle1: 'ຂໍ້ຄວາມຕ້ອນຮັບກຳນົດເອງ', - settingContent1: 'ຕັ້ງຂໍ້ຄວາມຕ້ອນຮັບໃນໜ້າລັອກອິນຂອງ 1Panel.', - settingTitle2: 'ໂລໂກ້ກຳນົດເອງ', - settingContent2: 'ອະນຸຍາດໃຫ້ອັບໂຫຼດໂລໂກ້ທີ່ມີຊື່ແບຣນ ຫຼື ຂໍ້ຄວາມອື່ນໆ.', - settingTitle3: 'ໄອຄອນເວັບໄຊກຳນົດເອງ', - settingContent3: - 'ອະນຸຍາດໃຫ້ອັບໂຫຼດໄອຄອນເພື່ອແທນທີ່ໄອຄອນບຣາວເຊີເລີ່ມຕົ້ນ.', - monitorTitle1: 'ແນວໂນ້ມຜູ້ເຂົ້າຊົມ', - monitorContent1: 'ສະຖິຕິ ແລະ ສະແດງແນວໂນ້ມຜູ້ເຂົ້າຊົມເວັບໄຊ', - monitorTitle2: 'ແຜນທີ່ຜູ້ເຂົ້າຊົມ', - monitorContent2: 'ສະຖິຕິ ແລະ ສະແດງການກະຈາຍຕົວທາງພູມສາດຂອງຜູ້ເຂົ້າຊົມ', - monitorTitle3: 'ສະຖິຕິການເຂົ້າເຖິງ', - monitorContent3: - 'ສະຖິຕິຂໍ້ມູນຄຳຮ້ອງຂໍ, ລວມມີ Spider, ອຸປະກອນ, ສະຖານະຄຳຮ້ອງຂໍ ແລະ ອື່ນໆ.', - monitorTitle4: 'ຕິດຕາມແບບທັນທີ', - monitorContent4: - 'ຕິດຕາມຂໍ້ມູນຄຳຮ້ອງຂໍແບບທັນທີ, ລວມມີຈຳນວນຄຳຮ້ອງຂໍ, ປະລິມານຂໍ້ມູນ ແລະ ອື່ນໆ.', - alertTitle1: 'ແຈ້ງເຕືອນຜ່ານ SMS', - alertContent1: - 'ແຈ້ງເຕືອນເມື່ອຊັບພະຍາກອນເຊີເວີຜິດປົກກະຕິ, ເວັບໄຊ ຫຼື ໃບຢັ້ງຢືນໝົດອາຍຸ ແລະ ອື່ນໆ.', - alertTitle2: 'ບັນທຶກການແຈ້ງເຕືອນ', - alertContent2: - 'ເບິ່ງປະຫວັດການແຈ້ງເຕືອນເພື່ອຕິດຕາມ ແລະ ວິເຄາະເຫດການທີ່ຜ່ານມາ.', - alertTitle3: 'ຕັ້ງຄ່າການແຈ້ງເຕືອນ', - alertContent3: - 'ກຳນົດເບີໂທລະສັບ, ຄວາມຖີ່ ແລະ ເວລາການສົ່ງແຈ້ງເຕືອນໃຫ້ເໝາະສົມ.', - nodeDashTitle1: 'ຈັດການແອັບພລິເຄຊັນ', - nodeDashContent1: - 'ຈັດການແອັບຫຼາຍໂນດແບບລວມສູນ, ຕິດຕາມສະຖານະ, ເລີ່ມ/ຢຸດ ແລະ ສຳຮອງຂໍ້ມູນ', - nodeDashTitle2: 'ຈັດການເວັບໄຊ', - nodeDashContent2: - 'ຈັດການເວັບໄຊຫຼາຍໂນດ, ຕິດຕາມສະຖານະແບບທັນທີ ແລະ ສຳຮອງຂໍ້ມູນແບບກຸ່ມ', - nodeDashTitle3: 'ຈັດການຖານຂໍ້ມູນ', - nodeDashContent3: - 'ຈັດການຖານຂໍ້ມູນຫຼາຍໂນດ, ເບິ່ງສະຖານະຫຼັກ ແລະ ສຳຮອງຂໍ້ມູນຄລິກດຽວ', - nodeDashTitle4: 'ຈັດການງານທີ່ຕັ້ງເວລາ', - nodeDashContent4: - 'ຈັດການງານ Cronjob ຫຼາຍໂນດ, ຕິດຕາມສະຖານະ ແລະ ສັ່ງທຳງານດ້ວຍຕົນເອງ', - nodeTitle1: 'ເພີ່ມໂນດຄລິກດຽວ', - nodeContent1: 'ເຊື່ອມຕໍ່ຫຼາຍເຊີເວີໂນດໄດ້ຢ່າງວ່ອງໄວ', - nodeTitle2: 'ອັບເກຣດແບບກຸ່ມ', - nodeContent2: 'ຊິງໂຄຣໄນ ແລະ ອັບເກຣດທຸກໂນດພ້ອມກັນໃນຄັ້ງດຽວ', - nodeTitle3: 'ຕິດຕາມສະຖານະໂນດ', - nodeContent3: "ຕິດຕາມສະຖານະການທຳງານຂອງແຕ່ລະໂນດແບບທັນທີ", - nodeTitle4: 'ເຊື່ອມຕໍ່ໄລຍະໄກວ່ອງໄວ', - nodeContent4: 'ເຊື່ອມຕໍ່ຫາເທີມິນອລຂອງໂນດໄດ້ໂດຍກົງຄລິກດຽວ', - fileExchangeTitle1: 'ສົ່ງຂໍ້ມູນຜ່ານ Key Authentication', - fileExchangeContent1: 'ຢືນຢັນຕົວຕົນຜ່ານ SSH keys ເພື່ອຄວາມປອດໄພໃນການສົ່ງຂໍ້ມູນ.', - fileExchangeTitle2: 'ຊິງໂຄຣໄນໄຟລ໌ທີ່ມີປະສິດທິພາບ', - fileExchangeContent2: - 'ຊິງໂຄຣໄນສະເພາະເນື້ອໃນທີ່ປ່ຽນແປງເພື່ອຄວາມໄວ ແລະ ສະຖຽນລະພາບ.', - fileExchangeTitle3: 'ຮອງຮັບການສື່ສານລະຫວ່າງໂນດ', - fileExchangeContent3: - 'ໂອນໄຟລ໌ໂຄງການລະຫວ່າງໂນດຕ່າງໆໄດ້ງ່າຍ, ຈັດການຫຼາຍເຊີເວີໄດ້ຢືດຢຸ່ນ.', - nodeAppTitle1: 'ຈັດການອັບເກຣດແອັບ', - nodeAppContent1: 'ຕິດຕາມການອັບເດດແອັບຫຼາຍໂນດແບບລວມສູນ, ຮອງຮັບການອັບເກຣດຄລິກດຽວ', - appTitle1: 'ຈັດການພາແນລຢ່າງຢືດຢຸ່ນ', - appContent1: 'ຈັດການເຊີເວີ 1Panel ໄດ້ທຸກບ່ອນ ທຸກເວລາ.', - appTitle2: 'ຂໍ້ມູນການບໍລິການຄົບຖ້ວນ', - appContent2: - 'ຈັດການແອັບພື້ນຖານ, ເວັບໄຊ, Docker, ຖານຂໍ້ມູນ ແລະ ສ້າງແອັບຜ່ານມືຖືໄດ້ໄວ.', - appTitle3: 'ຕິດຕາມຄວາມຜິດປົກກະຕິທັນທີ', - appContent3: - 'ເບິ່ງສະຖານະເຊີເວີ, ຄວາມປອດໄພ WAF, ສະຖິຕິການເຂົ້າຊົມ ແລະ ສະຖານະຂະບວນການຜ່ານແອັບມືຖື.', - clusterTitle1: 'ຕິດຕັ້ງແບບ Master-Slave', - clusterContent1: - 'ສ້າງ MySQL/Postgres/Redis Master-Slave ໃນໂນດຕ່າງໆ, ເຊື່ອມຕໍ່ ແລະ ເລີ່ມຕົ້ນລະບົບອັດຕະໂນມັດ', - clusterTitle2: 'ຈັດການ Master-Slave', - clusterContent2: - 'ຈັດການຫຼາຍໂນດ Master-Slave ໃນໜ້າດຽວ, ເບິ່ງບົດບາດ ແລະ ສະຖານະການທຳງານ.', - clusterTitle3: 'ສະຖານະການກັອບປີ້ຂໍ້ມູນ', - clusterContent3: - 'ສະແດງສະຖານະການ Replication ແລະ ຂໍ້ມູນການດີເລ (Delay) ເພື່ອຊ່ວຍແກ້ໄຂບັນຫາ.', - vllmTitle1: 'ຈັດການແບບລວມສູນ', - vllmContent1: - 'ລວມບໍລິການ vLLM ທີ່ກະຈັດກະຈາຍເຂົ້າມາໃນ 1Panel ເພື່ອເບິ່ງສະຖານະ, ເວີຊັນ ແລະ ເສັ້ນທາງທຳງານ.', - vllmTitle2: 'ຕິດຕັ້ງວ່ອງໄວ', - vllmContent2: - 'ໃຊ້ຟອມເພື່ອເລືອກເວີຊັນ, ເທົາມໍເດລ ແລະ ຕັ້ງຄ່າການເລີ່ມຕົ້ນໄດ້ງ່າຍ.', - vllmTitle3: 'ປະສິດທິພາບການດຳເນີນງານ', - vllmContent3: - 'ຈັດການສ້າງ, ແກ້ໄຂ, ເລີ່ມ, ຢຸດ ແລະ ລຶບ ໄດ້ໃນໜ້າດຽວ.', - vllmTitle4: 'ຄວບຄຸມການຕັ້ງຄ່າ', - vllmContent4: - 'ກຳນົດພອດ, ຄອນເທນເນີ ແລະ ຄຳສັ່ງເລີ່ມຕົ້ນໃຫ້ເປັນມາດຕະຖານ.', - modelDownloaderTitle1: 'ຄົ້ນຫາມໍເດລ', - modelDownloaderContent1: - 'ຄົ້ນຫາຄັງມໍເດລ HuggingFace ໂດຍກົງ ແລະ ເບິ່ງຍອດດາວໂຫຼດ, ໄລ້ ແລະ ລາຍລະອຽດໄຟລ໌.', - modelDownloaderTitle2: 'ດາວໂຫຼດເລັ່ງດ່ວນ', - modelDownloaderContent2: - 'ຕັ້ງຄ່າ HuggingFace acceleration endpoint ແລະ Token ສຳລັບມໍເດລສ່ວນຕົວ.', - modelDownloaderTitle3: 'ຕິດຕາມງານ', - modelDownloaderContent3: - 'ກວດສອບຄິວດາວໂຫຼດ, ສະຖານະ, ຄວາມຄືບໜ້າ ແລະ ຂໍ້ຜິດພາດ.', - modelDownloaderTitle4: 'ຈັດການໃນເຄື່ອງ', - modelDownloaderContent4: - 'ຈັດການໄດເຣັກທໍຣີມໍເດລໃນເຄື່ອງ, ລວມມີຂະໜາດ, ເວລາ ແລະ ການລຶບໄຟລ໌ທີ່ບໍ່ໄດ້ໃຊ້.', - }, - node: { - master: 'ໂນດຫຼັກ (Master)', - masterBackup: 'ສຳຮອງໂນດຫຼັກ', - backupNode: 'ໂນດສຳຮອງ', - backupFrequency: 'ຄວາມຖີ່ການສຳຮອງ (ຊົ່ວໂມງ)', - backupCopies: 'ຈຳນວນສຳເນົາທີ່ເກັບໄວ້', - noBackupNode: 'ຍັງບໍ່ມີໂນດສຳຮອງ. ກະລຸນາເລືອກໂນດສຳຮອງເພື່ອບັນທຶກ ແລະ ລອງໃໝ່!', - masterBackupAlert: - 'ຍັງບໍ່ໄດ້ຕັ້ງຄ່າສຳຮອງໂນດຫຼັກ. ເພື່ອຄວາມປອດໄພຂອງຂໍ້ມູນ, ກະລຸນາຕັ້ງຄ່າໂນດສຳຮອງໂດຍໄວ.', - node: 'ໂນດ', - addr: 'ທີ່ຢູ່', - nodeUpgrade: 'ຕັ້ງຄ່າການອັບເດດ', - nodeUpgradeHelper: - 'ໂນດທີ່ເລືອກຈະເລີ່ມອັບເກຣດອັດຕະໂນມັດຫຼັງຈາກໂນດຫຼັກອັບເກຣດສຳເລັດ.', - nodeUpgradePackageManage: 'ຈັດການແພັກເກັດຕິດຕັ້ງ', - nodeUpgradePackageClean: 'ລ້າງຂໍ້ມູນ', - nodeUpgradePackageFormatHelper: - 'ຮອງຮັບສະເພາະແພັກເກັດ `1panel-agent_v*_*` ຫຼື `1panel-v*-linux-*` ເທົ່ານັ້ນ', - nodeUpgradePackageHostConfirm: 'ໄຟລ໌ເຊີເວີ {0} ຈະຖືກເລືອກ. ຕ້ອງການຕໍ່ບໍ?', - nodeUpgradePackageCleanHelper: 'ແພັກເກັດອັບເດດເວີຊັນເກົ່າທັງໝົດຈະຖືກລຶບ. ຕ້ອງການຕໍ່ບໍ?', - nodeUpgradeOfflinePackageHelper: - 'ໃນສະພາບແວດລ້ອມອອບລາຍ, ໂນດທີ່ມີສະຖາປັດຕະຍະກຳຕ່າງກັນຕ້ອງອັບໂຫຼດແພັກເກັດທີ່ກົງກັນກ່ອນອັບເດດ.', - nodeUnhealthy: 'ສະຖານະໂນດຜິດປົກກະຕິ', - deletedNode: 'ໂນດ {0} ທີ່ຖືກລຶບໄປແລ້ວ ບໍ່ຮອງຮັບການອັບເກຣດ!', - nodeUnhealthyHelper: 'ກວດພົບສະຖານະໂນດຜິດປົກກະຕິ. ກະລຸນາກວດສອບໃນ [ຈັດການໂນດ]!', - nodeUnbind: 'ໂນດບໍ່ໄດ້ຜູກມັດກັບ License', - nodeUnbindHelper: - 'ໂນດນີ້ບໍ່ໄດ້ຜູກມັດກັບ License. ກະລຸນາຜູກມັດໃນເມນູ [ຕັ້ງຄ່າພາແນລ - License]!', - memTotal: 'ໜ່ວຍຄວາມຈຳທັງໝົດ', - nodeManagement: 'ຈັດການຫຼາຍເຄື່ອງ', - multiOverview: 'ພາບລວມຫຼາຍເຄື່ອງ', - commonNodes: 'ໂນດທີ່ໃຊ້ເລື້ອຍໆ', - searchNodePlaceholder: 'ຄົ້ນຫາຊື່ໂນດ, ກຸ່ມ ຫຼື ທີ່ຢູ່', - nodeItem: 'ຈັດການໂນດ', - panelItem: 'ຈັດການພາແນລ', - addPanel: 'ເພີ່ມພາແນລ', - addPanelHelper: - 'ຫຼັງຈາກເພີ່ມພາແນລສຳເລັດ, ທ່ານສາມາດເຂົ້າເຖິງພາແນລເປົ້າໝາຍໄດ້ໄວໃນ [ພາບລວມ - ພາແນລ].', - panel: 'ພາແນລ 1Panel', - others: 'ພາແນລອື່ນໆ', - addNode: 'ເພີ່ມໂນດ', - connInfo: 'ຂໍ້ມູນການເຊື່ອມຕໍ່', - nodeInfo: 'ຂໍ້ມູນໂນດ', - withProxy: 'ເປີດໃຊ້ການເຂົ້າເຖິງຜ່ານ Proxy', - withoutProxy: 'ປິດໃຊ້ການເຂົ້າເຖິງຜ່ານ Proxy', - withProxyHelper: - 'ຈະໃຊ້ Proxy ລະບົບ {0} ທີ່ຕັ້ງໄວ້ເພື່ອເຂົ້າເຖິງໂນດລູກ. ຕ້ອງການຕໍ່ບໍ?', - withoutProxyHelper: - 'ຈະຢຸດໃຊ້ Proxy ລະບົບເພື່ອເຂົ້າເຖິງໂນດລູກ. ຕ້ອງການຕໍ່ບໍ?', - syncInfo: 'ຊິງໂຄຣໄນ', - syncHelper: 'ເມື່ອຂໍ້ມູນໂນດຫຼັກປ່ຽນແປງ, ມັນຈະຊິງໂຄຣໄນໄປຫາໂນດລູກແບບທັນທີ', - syncBackupAccount: 'ຊິງໂຄຣໄນການຕັ້ງຄ່າບັນຊີສຳຮອງ', - syncWithMaster: - 'ຫຼັງຈາກອັບເກຣດເປັນ Pro, ຂໍ້ມູນທັງໝົດຈະຖືກຊິງໂຄຣໄນຕາມຄ່າເລີ່ມຕົ້ນ.', - syncProxy: 'ຊິງໂຄຣໄນຕັ້ງຄ່າ Proxy ລະບົບ', - syncProxyHelper: 'ການຊິງໂຄຣໄນ Proxy ລະບົບຕ້ອງ Restart Docker', - syncProxyHelper1: 'ການ Restart Docker ອາດສົ່ງຜົນກະທົບຕໍ່ຄອນເທນເນີທີ່ກຳລັງທຳງານ.', - syncProxyHelper2: 'ທ່ານສາມາດ Restart ເອງໄດ້ໃນໜ້າ ຄອນເທນເນີ - ການຕັ້ງຄ່າ.', - syncProxyHelper3: - 'ຕ້ອງ Restart Docker ເພື່ອຊິງໂຄຣໄນ Proxy, ອາດສົ່ງຜົນກະທົບຕໍ່ບໍລິການ', - syncProxyHelper4: - 'ຕ້ອງ Restart Docker ເພື່ອຊິງໂຄຣໄນ Proxy. ທ່ານສາມາດ Restart ເອງພາຍຫຼັງໄດ້.', - syncCustomApp: 'ຊິງໂຄຣໄນຄັງແອັບກຳນົດເອງ', - syncAlertSetting: 'ຊິງໂຄຣໄນຕັ້ງຄ່າແຈ້ງເຕືອນລະບົບ', - syncNodeInfo: 'ຂໍ້ມູນພື້ນຖານຂອງໂນດ,', - nodeSyncHelper: 'ການຊິງໂຄຣໄນຂໍ້ມູນໂນດຈະລວມມີຂໍ້ມູນຕໍ່ໄປນີ້:', - nodeSyncHelper1: '1. ຂໍ້ມູນບັນຊີສຳຮອງສາທາລະນະ', - nodeSyncHelper2: '2. ຂໍ້ມູນການເຊື່ອມຕໍ່ລະຫວ່າງໂນດຫຼັກ ແລະ ໂນດລູກ', - nodeCheck: 'ກວດສອບຄວາມພ້ອມໃຊ້ງານ', - checkSSH: 'ກວດສອບການເຊື່ອມຕໍ່ SSH', - checkUserPermission: 'ກວດສອບສິດຜູ້ໃຊ້', - isNotRoot: 'ກວດພົບວ່າບໍ່ຮອງຮັບ sudo ແບບບໍ່ໃຊ້ລະຫັດຜ່ານ ແລະ ຜູ້ໃຊ້ບໍ່ແມ່ນ root', - checkLicense: 'ກວດສອບສະຖານະ License', - checkService: 'ກວດສອບຂໍ້ມູນບໍລິການທີ່ມີຢູ່ໃນໂນດ', - checkPort: 'ກວດສອບການເຂົ້າເຖິງພອດ', - panelExist: - 'ກວດພົບວ່າໂນດນີ້ກຳລັງໃຊ້ 1Panel V1. ກະລຸນາອັບເກຣດເປັນ V2 ຜ່ານສະຄຣິບຍ້າຍຂໍ້ມູນກ່ອນ.', - coreExist: - 'ໂນດນີ້ຖືກຕັ້ງເປັນໂນດຫຼັກແລ້ວ ບໍ່ສາມາດເພີ່ມເປັນໂນດລູກໄດ້ໂດຍກົງ.', - agentExist: - 'ກວດພົບວ່າ 1panel-agent ຖືກຕິດຕັ້ງແລ້ວ. ການດຳເນີນການຕໍ່ຈະເກັບຂໍ້ມູນເດີມໄວ້ ແລະ ປ່ຽນສະເພາະບໍລິການ agent.', - agentNotExist: - 'ບໍ່ພົບ 1panel-agent ໃນໂນດນີ້, ບໍ່ສາມາດແກ້ໄຂຂໍ້ມູນໄດ້ໂດຍກົງ. ກະລຸນາລຶບ ແລະ ເພີ່ມໃໝ່.', - oldDataExist: - 'ກວດພົບຂໍ້ມູນ 1Panel V2 ເກົ່າໃນໂນດນີ້. ຂໍ້ມູນຕໍ່ໄປນີ້ຈະຖືກໃຊ້ເພື່ອທັບການຕັ້ງຄ່າປັດຈຸບັນ:', - errLicense: 'License ທີ່ຜູກມັດກັບໂນດນີ້ໃຊ້ງານບໍ່ໄດ້!', - errNodePort: - 'ພອດໂນດ [ {0} ] ເຂົ້າເຖິງບໍ່ໄດ້. ກະລຸນາກວດສອບໄຟວໍ ຫຼື Security Group.', - reinstallHelper: 'ຕິດຕັ້ງໂນດ {0} ໃໝ່, ຕ້ອງການຕໍ່ບໍ?', - unhealthyCheck: 'ກວດສອບຄວາມຜິດປົກກະຕິ', - fixOperation: 'ການແກ້ໄຂ', - checkName: 'ລາຍການກວດສອບ', - checkSSHConn: 'ກວດສອບການເຊື່ອມຕໍ່ SSH', - fixSSHConn: 'ແກ້ໄຂຂໍ້ມູນການເຊື່ອມຕໍ່ໂນດດ້ວຍຕົນເອງ', - checkConnInfo: 'ກວດສອບຂໍ້ມູນການເຊື່ອມຕໍ່ Agent', - checkStatus: 'ກວດສອບຄວາມພ້ອມຂອງບໍລິການໂນດ', - fixStatus: 'ລັນ "systemctl status 1panel-agent.service" ເພື່ອກວດສອບການທຳງານ.', - checkAPI: 'ກວດສອບ API ຂອງໂນດ', - fixAPI: 'ກວດສອບ Log ຂອງໂນດ ແລະ ພອດໄຟວໍ.', - forceDelete: 'ບັງຄັບລຶບ', - operateHelper: 'ໂນດຕໍ່ໄປນີ້ຈະຖືກ {0}, ຕ້ອງການຕໍ່ບໍ?', - operatePanelHelper: 'ພາແນລຕໍ່ໄປນີ້ຈະຖືກ {0}, ຕ້ອງການຕໍ່ບໍ?', - forceDeleteHelper: 'ການບັງຄັບລຶບຈະບໍ່ສົນໃຈຂໍ້ຜິດພາດ ແລະ ລຶບຂໍ້ມູນໃນຖານຂໍ້ມູນຖາວອນ', - uninstall: 'ລຶບຂໍ້ມູນໂນດ', - uninstallHelper: 'ນີ້ຈະລຶບຂໍ້ມູນທັງໝົດທີ່ກ່ຽວຂ້ອງກັບ 1Panel ໃນໂນດນີ້. ກະລຸນາລະມັດລະວັງ!', - baseDir: 'ໄດເຣັກທໍຣີຕິດຕັ້ງ', - baseDirHelper: - 'ຫາກຫວ່າງໄວ້, ຈະຕິດຕັ້ງໃນ /opt ໂດຍອັດຕະໂນມັດ', - nodePort: 'ພອດໂນດ', - offline: 'ໂໝດອອບລາຍ', - freeCount: 'ໂຄຕ້າຟຣີ [{0}]', - offlineHelper: 'ໃຊ້ເມື່ອໂນດຢູ່ໃນສະພາບແວດລ້ອມທີ່ບໍ່ມີອິນເຕີເນັດ', - appUpgrade: 'ອັບເກຣດແອັບ', - appUpgradeHelper: 'ມີ {0} ແອັບທີ່ຕ້ອງອັບເກຣດ', - dashboardSetting: 'ຕັ້ງຄ່າພາບລວມ', - keepOneDashboardComponent: 'ຕ້ອງເກັບໄວ້ຢ່າງໜ້ອຍໜຶ່ງສ່ວນໃນໜ້າພາບລວມ', - }, - customApp: { - name: 'ຄັງແອັບກຳນົດເອງ', - appStoreType: 'ແຫຼ່ງແພັກເກັດແອັບສະໂຕຣ', - appStoreUrl: 'URL ຂອງຄັງເກັບ', - local: 'ທີ່ຢູ່ພາຍໃນເຄື່ອງ', - remote: 'ລິ້ງທາງໄກ', - imagePrefix: 'Image Prefix', - imagePrefixHelper: - 'ຟັງຊັນ: ກຳນົດ Prefix ຂອງ Image ເອງ. ຕົວຢ່າງ: ຫາກຕັ້ງເປັນ 1panel/custom, image ຂອງ MaxKB ຈະປ່ຽນເປັນ 1panel/custom/maxkb:v1.10.0', - closeHelper: 'ຍົກເລີກການໃຊ້ຄັງແອັບກຳນົດເອງ', - appStoreUrlHelper: 'ຮອງຮັບສະເພາະຮູບແບບ .tar.gz', - postNode: 'ຊິງໂຄຣໄນໄປຫາໂນດລູກ', - postNodeHelper: - 'ຊິງໂຄຣໄນແພັກເກັດໄປຫາ tmp/customApp/apps.tar.gz ໃນໂນດລູກ', - nodes: 'ໂນດ', - selectNode: 'ເລືອກໂນດ', - selectNodeError: 'ກະລຸນາເລືອກໂນດ', - licenseHelper: 'ເວີຊັນ Pro ຮອງຮັບຟີເຈີຄັງແອັບພລິເຄຊັນກຳນົດເອງ', - databaseHelper: 'ຖານຂໍ້ມູນທີ່ກ່ຽວຂ້ອງ, ເລືອກຖານຂໍ້ມູນໂນດເປົ້າໝາຍ', - nodeHelper: 'ບໍ່ສາມາດເລືອກໂນດປັດຈຸບັນໄດ້', - migrateHelper: - 'ປັດຈຸບັນຮອງຮັບການຍ້າຍສະເພາະແອັບແບບ Monolithic ແລະ ແອັບທີ່ເຊື່ອມກັບ MySQL, MariaDB, PostgreSQL ເທົັ້ນັ້ນ', - opensslHelper: - 'ຫາກໃຊ້ການສຳຮອງແບບເຂົ້າລະຫັດ, ເວີຊັນ OpenSSL ຂອງທັງສອງໂນດຕ້ອງກົງກັນ.', - installApp: 'ຕິດຕັ້ງແບບກຸ່ມ', - installAppHelper: 'ຕິດຕັ້ງແອັບໃຫ້ໂນດທີ່ເລືອກແບບກຸ່ມ', - }, - alert: { - isAlert: 'ແຈ້ງເຕືອນ', - alertCount: 'ຈຳນວນແຈ້ງເຕືອນ', - clamHelper: 'ແຈ້ງເຕືອນເມື່ອສະແກນພົບໄຟລ໌ຕິດໄວຣັສ', - cronJobHelper: 'ແຈ້ງເຕືອນເມື່ອງານທີ່ຕັ້ງເວລາທຳງານລົ້ມເຫຼວ', - licenseHelper: 'ເວີຊັນ Commercial ຮອງຮັບຊ່ອງທາງການແຈ້ງເຕືອນເພີ່ມເຕີມ', - alertCountHelper: 'ຄວາມຖີ່ການແຈ້ງເຕືອນສູງສຸດຕໍ່ມື້', - alert: 'ແຈ້ງເຕືອນ SMS', - logs: 'ບັນທຶກການແຈ້ງເຕືອນ', - list: 'ລາຍຊື່ການແຈ້ງເຕືອນ', - addTask: 'ສ້າງການແຈ້ງເຕືອນ', - editTask: 'ແກ້ໄຂການແຈ້ງເຕືອນ', - alertMethod: 'ວິທີການ', - alertMsg: 'ຂໍ້ຄວາມແຈ້ງເຕືອນ', - alertRule: 'ກົດເກນການແຈ້ງເຕືອນ', - titleSearchHelper: 'ປ້ອນຊື່ການແຈ້ງເຕືອນເພື່ອຄົ້ນຫາ', - taskType: 'ປະເພດ', - ssl: 'ໃບຢັ້ງຢືນໝົດອາຍຸ', - siteEndTime: 'ເວັບໄຊໝົດອາຍຸ', - panelPwdEndTime: 'ລະຫັດຜ່ານພາແນລໝົດອາຍຸ', - panelUpdate: 'ມີພາແນລເວີຊັນໃໝ່', - cpu: 'ແຈ້ງເຕືອນ CPU ເຊີເວີ', - memory: 'ແຈ້ງເຕືອນ Memory ເຊີເວີ', - load: 'ແຈ້ງເຕືອນ Load ເຊີເວີ', - disk: 'ແຈ້ງເຕືອນ Disk ເຊີເວີ', - website: 'ເວັບໄຊ', - certificate: 'ໃບຢັ້ງຢືນ SSL', - remainingDays: 'ມື້ທີ່ເຫຼືອ', - sendCount: 'ຈຳນວນການສົ່ງ', - sms: 'SMS', - wechat: 'WeChat', - dingTalk: 'DingTalk', - feiShu: 'FeiShu', - mail: 'ອີເມລ', - email: 'ອີເມລ', - weCom: 'WeCom', - bark: 'Bark', - sendCountRulesHelper: 'ຈຳນວນແຈ້ງເຕືອນທັງໝົດກ່ອນໝົດອາຍຸ (ມື້ລະຄັ້ງ)', - panelUpdateRulesHelper: 'ຈຳນວນແຈ້ງເຕືອນສຳລັບເວີຊັນໃໝ່ (ມື້ລະຄັ້ງ)', - oneDaySendCountRulesHelper: 'ຈຳນວນແຈ້ງເຕືອນສູງສຸດຕໍ່ມື້', - siteEndTimeRulesHelper: 'ເວັບໄຊທີ່ບໍ່ມີວັນໝົດອາຍຸຈະບໍ່ມີການແຈ້ງເຕືອນ', - autoRenewRulesHelper: - 'ໃບຢັ້ງຢືນທີ່ເປີດຕໍ່ອາຍຸອັດຕະໂນມັດ ແລະ ເຫຼືອຫຼາຍກວ່າ 31 ວັນ ຈະບໍ່ແຈ້ງເຕືອນ', - panelPwdEndTimeRulesHelper: 'ຫາກບໍ່ໄດ້ຕັ້ງວັນໝົດອາຍຸລະຫັດຜ່ານ ຈະບໍ່ມີການແຈ້ງເຕືອນ', - sslRulesHelper: 'ໃບຢັ້ງຢືນ SSL ທັງໝົດ', - diskInfo: 'ດິສກ໌', - monitoringType: 'ປະເພດການຕິດຕາມ', - autoRenew: 'ຕໍ່ອາຍຸອັດຕະໂນມັດ', - useDisk: 'ການໃຊ້ງານດິສກ໌', - usePercentage: 'ເປີເຊັນການໃຊ້ງານ', - changeStatus: 'ປ່ຽນສະຖານະ', - disableMsg: 'ການຢຸດງານແຈ້ງເຕືອນຈະເຮັດໃຫ້ລະບົບບໍ່ສົ່ງຂໍ້ຄວາມ. ຕ້ອງການຕໍ່ບໍ?', - enableMsg: 'ການເປີດງານແຈ້ງເຕືອນຈະເຮັດໃຫ້ລະບົບສົ່ງຂໍ້ຄວາມ. ຕ້ອງການຕໍ່ບໍ?', - useExceed: 'ການໃຊ້ງານເກີນ', - useExceedRulesHelper: 'ແຈ້ງເຕືອນເມື່ອການໃຊ້ງານເກີນຄ່າທີ່ກຳນົດ', - cpuUseExceedAvg: 'ຄ່າສະເລ່ຍການໃຊ້ CPU ເກີນກຳນົດ', - memoryUseExceedAvg: 'ຄ່າສະເລ່ຍການໃຊ້ Memory ເກີນກຳນົດ', - loadUseExceedAvg: 'ຄ່າສະເລ່ຍ Load ເກີນກຳນົດ', - cpuUseExceedAvgHelper: 'ການໃຊ້ CPU ສະເລ່ຍໃນເວລາທີ່ກຳນົດເກີນຄ່າ', - memoryUseExceedAvgHelper: 'ການໃຊ້ Memory ສະເລ່ຍໃນເວລາທີ່ກຳນົດເກີນຄ່າ', - loadUseExceedAvgHelper: 'ຄ່າ Load ສະເລ່ຍໃນເວລາທີ່ກຳນົດເກີນຄ່າ', - resourceAlertRulesHelper: 'ໝາຍເຫດ: ການແຈ້ງເຕືອນຕໍ່ເນື່ອງໃນ 30 ນາທີ ຈະສົ່ງພຽງຄັ້ງດຽວ', - specifiedTime: 'ເວລາທີ່ກຳນົດ', - deleteTitle: 'ລຶບການແຈ້ງເຕືອນ', - deleteMsg: 'ເຈົ້າແນ່ໃຈບໍວ່າຕ້ອງການລຶບງານແຈ້ງເຕືອນນີ້?', - allSslTitle: 'ແຈ້ງເຕືອນໃບຢັ້ງຢືນ SSL ເວັບໄຊທັງໝົດໝົດອາຍຸ', - sslTitle: 'ແຈ້ງເຕືອນໃບຢັ້ງຢືນ SSL ເວັບໄຊ {0} ໝົດອາຍຸ', - allSiteEndTimeTitle: 'ແຈ້ງເຕືອນເວັບໄຊທັງໝົດໝົດອາຍຸ', - siteEndTimeTitle: 'ແຈ້ງເຕືອນເວັບໄຊ {0} ໝົດອາຍຸ', - panelPwdEndTimeTitle: 'ແຈ້ງເຕືອນລະຫັດຜ່ານພາແນລໝົດອາຍຸ', - panelUpdateTitle: 'ແຈ້ງເຕືອນພາແນລເວີຊັນໃໝ່', - cpuTitle: 'ແຈ້ງເຕືອນການໃຊ້ CPU ສູງ', - memoryTitle: 'ແຈ້ງເຕືອນການໃຊ້ Memory ສູງ', - loadTitle: 'ແຈ້ງເຕືອນ Load ສູງ', - diskTitle: 'ແຈ້ງເຕືອນການໃຊ້ Disk ສູງສຳລັບໄດເຣັກທໍຣີ {0}', - allDiskTitle: 'ແຈ້ງເຕືອນການໃຊ້ Disk ສູງ', - timeRule: 'ເວລາເຫຼືອໜ້ອຍກວ່າ {0} ວັນ (ຫາກບໍ່ຈັດການ ຈະສົ່ງໃໝ່ໃນມື້ຖັດໄປ)', - panelUpdateRule: - 'ສົ່ງແຈ້ງເຕືອນຄັ້ງດຽວເມື່ອພົບເວີຊັນໃໝ່ (ຫາກບໍ່ຈັດການ ຈະສົ່ງໃໝ່ໃນມື້ຖັດໄປ)', - avgRule: 'ການໃຊ້ງານ {1} ສະເລ່ຍເກີນ {2}% ພາຍໃນ {0} ນາທີ, ສົ່ງ {3} ຄັ້ງຕໍ່ມື້', - diskRule: 'ການໃຊ້ Disk ສຳລັບ {0} ເກີນ {1}{2}, ສົ່ງ {3} ຄັ້ງຕໍ່ມື້', - allDiskRule: 'ການໃຊ້ Disk ເກີນ {0}{1}, ສົ່ງ {2} ຄັ້ງຕໍ່ມື້', - cpuName: ' CPU ', - memoryName: 'Memory', - loadName: 'Load', - diskName: 'Disk', - syncAlertInfo: 'ສົ່ງແຈ້ງເຕືອນເອງ', - syncAlertInfoMsg: 'ຕ້ອງການສົ່ງການແຈ້ງເຕືອນນີ້ດ້ວຍຕົນເອງບໍ?', - pushError: 'ສົ່ງບໍ່ສຳເລັດ', - pushSuccess: 'ສົ່ງສຳເລັດ', - syncError: 'ຊິງໂຄຣໄນບໍ່ສຳເລັດ', - success: 'ແຈ້ງເຕືອນສຳເລັດ', - pushing: 'ກຳລັງສົ່ງ...', - error: 'ແຈ້ງເຕືອນລົ້ມເຫຼວ', - cleanLog: 'ລ້າງບັນທຶກ', - cleanAlertLogs: 'ລ້າງບັນທຶກການແຈ້ງເຕືອນ', - daily: 'ແຈ້ງເຕືອນມື້ນີ້: {0}', - cumulative: 'ແຈ້ງເຕືອນສະສົມ: {0}', - clams: 'ແຈ້ງເຕືອນສະແກນໄວຣັສ', - taskName: 'ຊື່ງານ', - cronJobType: 'ປະເພດງານ', - clamPath: 'ໄດເຣັກທໍຣີທີ່ສະແກນ', - cronjob: 'ງານ Cronjob {0} ລົ້ມເຫຼວ', - app: 'ສຳຮອງແອັບ', - web: 'ສຳຮອງເວັບໄຊ', - database: 'ສຳຮອງຖານຂໍ້ມູນ', - directory: 'ສຳຮອງໄດເຣັກທໍຣີ', - log: 'ສຳຮອງບັນທຶກ (Log)', - snapshot: 'System Snapshot', - clamsRulesHelper: 'ງານສະແກນໄວຣັສທີ່ຕ້ອງການແຈ້ງເຕືອນ', - cronJobRulesHelper: 'ຕ້ອງຕັ້ງຄ່າງານ Cronjob ປະເພດນີ້', - clamsTitle: 'ງານສະແກນໄວຣັສ 「 {0} 」 ກວດພົບໄຟລ໌ອັນຕະລາຍ', - cronJobAppTitle: 'ແຈ້ງເຕືອນງານສຳຮອງແອັບ 「 {0} 」 ລົ້ມເຫຼວ', - cronJobWebsiteTitle: 'ແຈ້ງເຕືອນງານສຳຮອງເວັບໄຊ 「 {0} 」 ລົ້ມເຫຼວ', - cronJobDatabaseTitle: 'ແຈ້ງເຕືອນງານສຳຮອງຖານຂໍ້ມູນ 「 {0} 」 ລົ້ມເຫຼວ', - cronJobDirectoryTitle: 'ແຈ້ງເຕືອນງານສຳຮອງໄດເຣັກທໍຣີ 「 {0} 」 ລົ້ມເຫຼວ', - cronJobLogTitle: 'ແຈ້ງເຕືອນງານສຳຮອງ Log 「 {0} 」 ລົ້ມເຫຼວ', - cronJobSnapshotTitle: 'ແຈ້ງເຕືອນງານສຳຮອງ Snapshot 「 {0} 」 ລົ້ມເຫຼວ', - cronJobShellTitle: 'ແຈ້ງເຕືອນງານ Shell script 「 {0} 」 ລົ້ມເຫຼວ', - cronJobCurlTitle: 'ແຈ້ງເຕືອນງານເຂົ້າເຖິງ URL 「 {0} 」 ລົ້ມເຫຼວ', - cronJobCutWebsiteLogTitle: 'ແຈ້ງເຕືອນງານຕັດ Log ເວັບໄຊ 「 {0} 」 ລົ້ມເຫຼວ', - cronJobCleanTitle: 'ແຈ້ງເຕືອນງານລ້າງ Cache 「 {0} 」 ລົ້ມເຫຼວ', - cronJobNtpTitle: 'ແຈ້ງເຕືອນງານຊິງໂຄຣໄນເວລາເຊີເວີ 「 {0} 」 ລົ້ມເຫຼວ', - clamsRule: 'ແຈ້ງເຕືອນພົບໄວຣັສ,ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', - cronJobAppRule: 'ແຈ້ງເຕືອນສຳຮອງແອັບລົ້ມເຫຼວ,ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', - cronJobWebsiteRule: 'ແຈ້ງເຕືອນສຳຮອງເວັບໄຊລົ້ມເຫຼວ,ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', - cronJobDatabaseRule: 'ແຈ້ງເຕືອນສຳຮອງຖານຂໍ້ມູນລົ້ມເຫຼວ,ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', - cronJobDirectoryRule: 'ແຈ້ງເຕືອນສຳຮອງໄດເຣັກທໍຣີລົ້ມເຫຼວ,ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', - cronJobLogRule: 'ແຈ້ງເຕືອນສຳຮອງ Log ລົ້ມເຫຼວ,ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', - cronJobSnapshotRule: 'ແຈ້ງເຕືອນສຳຮອງ Snapshot ລົ້ມເຫຼວ,ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', - cronJobShellRule: 'ແຈ້ງເຕືອນ Shell script ລົ້ມເຫຼວ,ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', - cronJobCurlRule: 'ແຈ້ງເຕືອນເຂົ້າເຖິງ URL ລົ້ມເຫຼວ,ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', - cronJobCutWebsiteLogRule: 'ແຈ້ງເຕືອນຕັດ Log ເວັບໄຊລົ້ມເຫຼວ,ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', - cronJobCleanRule: 'ແຈ້ງເຕືອນລ້າງ Cache ລົ້ມເຫຼວ,ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', - cronJobNtpRule: 'ແຈ້ງເຕືອນຊິງໂຄຣໄນເວລາລົ້ມເຫຼວ,ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', - alertSmsHelper: 'ຂໍ້ຈຳກັດ SMS: ທັງໝົດ {0} ຂໍ້ຄວາມ, ໃຊ້ໄປແລ້ວ {1}', - goBuy: 'ຊື້ເພີ່ມ', - phone: 'ເບີໂທລະສັບ', - phoneHelper: 'ປ້ອນເບີໂທລະສັບທີ່ແທ້ຈິງເພື່ອຮັບແຈ້ງເຕືອນ', - dailyAlertNum: 'ຂີດຈຳກັດແຈ້ງເຕືອນຕໍ່ມື້', - dailyAlertNumHelper: 'ຈຳນວນແຈ້ງເຕືອນສູງສຸດຕໍ່ມື້ (ບໍ່ເກີນ 100)', - timeRange: 'ຊ່ວງເວລາ', - sendTimeRange: 'ຊ່ວງເວລາສົ່ງ', - sendTimeRangeHelper: 'ສາມາດສົ່ງໄດ້ໃນຊ່ວງເວລາ {0}', - to: 'ຫາ', - startTime: 'ເວລາເລີ່ມຕົ້ນ', - endTime: 'ເວລາສິ້ນສຸດ', - defaultPhone: 'ເລີ່ມຕົ້ນເປັນເບີໂທລະສັບທີ່ຜູກກັບ License', - noticeAlert: 'ແຈ້ງເຕືອນທົ່ວໄປ', - resourceAlert: 'ແຈ້ງເຕືອນຊັບພະຍາກອນ', - agentOfflineAlertHelper: - 'ເມື່ອເປີດແຈ້ງເຕືອນອອບລາຍ, ໂນດຫຼັກຈະສະແກນທຸກໆ 30 ນາທີ.', - offline: 'ແຈ້ງເຕືອນອອບລາຍ', - offlineHelper: - 'ເມື່ອຕັ້ງເປັນແຈ້ງເຕືອນອອບລາຍ, ໂນດຫຼັກຈະສະແກນທຸກໆ 30 ນາທີ.', - offlineOff: 'ເປີດແຈ້ງເຕືອນອອບລາຍ', - offlineOffHelper: - 'ການເປີດແຈ້ງເຕືອນອອບລາຍຈະເຮັດໃຫ້ໂນດຫຼັກສະແກນທຸກໆ 30 ນາທີ.', - offlineClose: 'ປິດແຈ້ງເຕືອນອອບລາຍ', - offlineCloseHelper: - 'ການປິດແຈ້ງເຕືອນອອບລາຍຈະເຮັດໃຫ້ໂນດລູກຕ້ອງຈັດການການແຈ້ງເຕືອນເອງ.', - alertNotice: 'ການແຈ້ງເຕືອນ', - methodConfig: 'ຕັ້ງຄ່າວິທີການແຈ້ງເຕືອນ', - createMethod: 'ສ້າງວິທີການແຈ້ງເຕືອນ', - methodInvalid: 'ການຕັ້ງຄ່າ {0} ບໍ່ຖືກຕ້ອງ', - commonConfig: 'ການຕັ້ງຄ່າທົ່ວໄປ', - smsConfig: 'SMS', - smsConfigHelper: 'ຕັ້ງຄ່າເບີໂທລະສັບສຳລັບ SMS', - emailConfig: 'ອີເມລ', - emailConfigHelper: 'ຕັ້ງຄ່າບໍລິການສົ່ງອີເມລ SMTP', - deleteConfigTitle: 'ລຶບການຕັ້ງຄ່າແຈ້ງເຕືອນ', - deleteConfigMsg: 'ເຈົ້າແນ່ໃຈບໍວ່າຕ້ອງການລຶບການຕັ້ງຄ່າແຈ້ງເຕືອນນີ້?', - test: 'ທົດສອບ', - alertTestOk: 'ທົດສອບການແຈ້ງເຕືອນສຳເລັດ', - alertTestFailed: 'ທົດສອບການແຈ້ງເຕືອນລົ້ມເຫຼວ', - displayName: 'ຊື່ສະແດງ', - sender: 'ຜູ້ສົ່ງ', - password: 'ລະຫັດຜ່ານ', - host: 'ເຊີເວີ SMTP', - port: 'ພອດ', - encryption: 'ການເຂົ້າລະຫັດ', - recipient: 'ຜູ້ຮັບ', - licenseTime: 'ແຈ້ງເຕືອນ License ໝົດອາຍຸ', - licenseTimeTitle: 'ແຈ້ງເຕືອນ License ໝົດອາຍຸ', - displayNameHelper: 'ຊື່ຜູ້ສົ່ງທີ່ຈະສະແດງໃນອີເມລ', - senderHelper: 'ທີ່ຢູ່ອີເມລທີ່ໃຊ້ສົ່ງຂໍ້ຄວາມ', - passwordHelper: 'ລະຫັດຜ່ານ ຫຼື Authorization code ຂອງອີເມລ', - hostHelper: 'ທີ່ຢູ່ເຊີເວີ SMTP, ເຊັ່ນ: smtp.qq.com', - portHelper: 'SSL ມັກຈະໃຊ້ 465, TLS ມັກຈະໃຊ້ 587', - sslHelper: 'ຫາກພອດແມ່ນ 465, ມັກຈະຕ້ອງໃຊ້ SSL', - tlsHelper: 'ຫາກພອດແມ່ນ 587, ມັກຈະຕ້ອງໃຊ້ TLS', - triggerCondition: 'ເງື່ອນໄຂການເຮັດວຽກ', - loginFail: ' ລັອກອິນລົ້ມເຫຼວພາຍໃນ', - nodeException: 'ແຈ້ງເຕືອນໂນດຜິດປົກກະຕິ', - licenseException: 'ແຈ້ງເຕືອນ License ຜິດປົກກະຕິ', - panelLogin: 'ແຈ້ງເຕືອນການລັອກອິນພາແນລຜິດປົກກະຕິ', - sshLogin: 'ແຈ້ງເຕືອນການລັອກອິນ SSH ຜິດປົກກະຕິ', - panelIpLogin: 'ແຈ້ງເຕືອນ IP ລັອກອິນພາແນລຜິດປົກກະຕິ', - sshIpLogin: 'ແຈ້ງເຕືອນ IP ລັອກອິນ SSH ຜິດປົກກະຕິ', - ipWhiteListHelper: - 'IP ໃນ Whitelist ຈະບໍ່ຖືກຈຳກັດ ແລະ ຈະບໍ່ມີການແຈ້ງເຕືອນເມື່ອລັອກອິນສຳເລັດ', - nodeExceptionRule: 'ແຈ້ງເຕືອນໂນດຜິດປົກກະຕິ, ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', - licenseExceptionRule: 'ແຈ້ງເຕືອນ License ຜິດປົກກະຕິ, ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', - panelLoginRule: 'ແຈ້ງເຕືອນການລັອກອິນພາແນລ, ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', - sshLoginRule: 'ແຈ້ງເຕືອນການລັອກອິນ SSH, ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', - userNameHelper: 'ຫາກຊື່ຜູ້ໃຊ້ຫວ່າງ, ຈະໃຊ້ທີ່ຢູ່ຜູ້ສົ່ງເປັນຄ່າເລີ່ມຕົ້ນ', - alertConfigHelper: 'ຕັ້ງຄ່າຊ່ອງທາງການແຈ້ງເຕືອນເພື່ອຮັບຂໍ້ມູນຈາກພາແນລ', - weComConfigHelper: 'ຕັ້ງຄ່າການແຈ້ງເຕືອນ WeCom', - barkConfigHelper: 'ຕັ້ງຄ່າການແຈ້ງເຕືອນ Bark', - wechatConfigHelper: 'ຕັ້ງຄ່າການແຈ້ງເຕືອນ WeChat Official Account', - dingTalkConfigHelper: 'ຕັ້ງຄ່າການແຈ້ງເຕືອນ DingTalk', - feiShuConfigHelper: 'ຕັ້ງຄ່າການແຈ້ງເຕືອນ Feishu', - webhookName: 'ຊື່ບັອດ', - webhookUrl: 'Webhook URL', - alertConfigProHelper: 'ເວີຊັນ Commercial ຮອງຮັບ WeCom, DingTalk, Feishu ແລະ SMS.', - recipientPlaceholder: 'ກະລຸນາປ້ອນທີ່ຢູ່ອີເມລຜູ້ຮັບ', - addRecipient: 'ເພີ່ມຜູ້ຮັບ', - webhookItem: 'Webhook', - addWebhook: 'ເພີ່ມ Webhook', - selectAlertType: 'ເລືອກປະເພດການແຈ້ງເຕືອນ', - configDetail: 'ລາຍລະອຽດການຕັ້ງຄ່າ', - webhookCount: ' Webhook', - }, - theme: { - lingXiaGold: 'LXware Gold', - classicBlue: 'Classic Blue', - freshGreen: 'Fresh Green', - customColor: 'ສີກຳນົດເອງ', - setDefault: 'ເລີ່ມຕົ້ນ', - setDefaultHelper: 'ຊຸດສີທີມຈະຖືກຄືນຄ່າເປັນເລີ່ມຕົ້ນ. ຕ້ອງການຕໍ່ບໍ?', - setHelper: 'ຊຸດສີທີມທີ່ເລືອກຈະຖືກບັນທຶກ. ຕ້ອງການຕໍ່ບໍ?', - }, - sync: { - menu: 'ຊິງໂຄຣໄນຊັບພະຍາກອນ', - file: 'ແລກປ່ຽນໄຟລ໌', - fileSyncConfirm: 'ເຈົ້າຕ້ອງການໂອນໄຟລ໌/ໂຟນເດີ {1} ຈາກໂນດ {0} ໄປຫາ {3} ໃນໂນດ {2} ບໍ?', - image: 'ແລກປ່ຽນ Image', - imageBatchDesc: 'ເລືອກໂນດຕົ້ນທາງ ແລະ Image ກ່ອນ, ຈາກນັ້ນໂອນແບບກຸ່ມໄປຫາຫຼາຍໂນດ.', - imageBatchConfirmPrefix: 'ກຳລັງຈະໂອນ {0} images ໄປຫາ {1} ໂນດ, ລວມທັງໝົດ {2} ງານ.', + user: { + user: 'ຜູ້ໃຊ້', + userInfo: 'ຂໍ້ມູນຜູ້ໃຊ້', + userManage: 'ຈັດການຜູ້ໃຊ້', + superAdmin: 'ຜູ້ດູແລລະບົບສູງສຸດ', + superAdminDesc: 'ມີສິດຈັດການລະບົບທັງໝົດ ແລະ ສາມາດຈັດການຊັບພະຍາກອນທຸກຢ່າງ.', + nodeAdmin: 'ຜູ້ດູແລໂນດ', + nodeAdminDesc: 'ມີສິດຈັດການສະເພາະໂນດທີ່ກຳນົດ ແລະ ສາມາດຈັດການຊັບພະຍາກອນພາຍໃນໂນດນັ້ນ.', + readOnly: 'ອ່ານໄດ້ຢ່າງດຽວ', + readOnlyDesc: 'ສາມາດເບິ່ງຂໍ້ມູນທຸກຢ່າງໃນລະບົບໄດ້ ແຕ່ບໍ່ສາມາດແກ້ໄຂໄດ້.', + bindNode: 'ຜູກມັດໂນດ', + boundUsers: 'ຜູ້ໃຊ້ທີ່ຜູກມັດ', + role: 'ບົດບາດ', + roleName: 'ຊື່', + permission: 'ສິດການໃຊ້ງານ', + permissionDuplicate: 'ແຕ່ລະໂນດສາມາດກຳນົດໄດ້ພຽງບົດບາດດຽວເທົ່ານັ້ນ', + nodeAdminMasterConfirm: 'ສິດຜູ້ດູແລໂນດໃນໂນດຫຼັກ (Master) ຈະມີສິດສູງ. ກະລຸນາມອບໝາຍຢ່າງລະມັດລະວັງ.', + permissionLinkageTip: 'ສິດທີ່ກ່ຽວຂ້ອງຈະຖືກເລືອກໂດຍອັດຕະໂນມັດ; ຫາກລຶບອອກເອງ ອາດເຮັດໃຫ້ບາງຟີເຈີໃຊ້ງານບໍ່ໄດ້.', + allViewPermissionHelper: 'ໃຫ້ສິດການເບິ່ງທັງໝົດສຳລັບ AI Gateway.', + apiKeyViewPermissionHelper: 'ອະນຸຍາດໃຫ້ເບິ່ງສະເພາະ AI Gateway API Keys.', + masterOnlyPermission: 'ສິດສະເພາະໂນດຫຼັກ', + masterOnlyPermissionHelper: 'ສິດນີ້ມີຜົນສະເພາະຢູ່ໃນໂນດຫຼັກເທົ່ານັ້ນ.', + view: 'ເບິ່ງ', + manage: 'ຈັດການ', + }, + app: { + app: 'ແອັບ', + title: 'ຊື່ແທນພາແນລ', + titleHelper: 'ຊື່ແທນພາແນລສຳລັບສະແດງຜົນໃນແອັບ (ຊື່ເລີ່ມຕົ້ນ)', + qrCode: 'QR Code', + apiStatusHelper: 'ແອັບພາແນລຈຳເປັນຕ້ອງເປີດໃຊ້ງານ API', + apiInterfaceHelper: 'ຮອງຮັບການເຂົ້າເຖິງຜ່ານ API (ຕ້ອງເປີດໃຊ້ງານເພື່ອເຊື່ອມຕໍ່ກັບແອັບ)', + apiInterfaceHelper1: + 'ການເຂົ້າເຖິງແອັບຕ້ອງເພີ່ມ IP ໃນ Whitelist; ຫາກ IP ບໍ່ຄົງທີ່ ແນະນຳໃຫ້ໃຊ້ 0.0.0.0/0 (IPv4 ທັງໝົດ), ::/0 (IPv6 ທັງໝົດ)', + qrCodeExpired: 'ເວລາໂຫຼດໃໝ່', + apiLeakageHelper: 'ຫ້າມເປີດເຜີຍ QR code ນີ້. ໃຫ້ແນ່ໃຈວ່າໃຊ້ໃນສະພາບແວດລ້ອມທີ່ປອດໄພ.', + }, + logExport: { + title: 'ສົ່ງອອກລັອກ', + records: 'ບັນທຶກການສົ່ງອອກ', + retentionDays: 'ໄລຍະເກັບບັນທຶກການສົ່ງອອກ', + timeRange: 'ຊ່ວງເວລາ', + timeRequired: 'ກະລຸນາເລືອກຊ່ວງເວລາສົ່ງອອກ', + websiteRequired: 'ກະລຸນາເລືອກເວັບໄຊ', + blackStatus: 'ສະຖານະບັນຊີດຳ', + black: 'ຢູ່ໃນບັນຊີດຳ', + notBlack: 'ບໍ່ຢູ່ໃນບັນຊີດຳ', + fuzzy: 'ການຈັບຄູ່ແບບຄຸມເຄືອ', + regex: 'Regular Expression', + invalidRegex: 'ປ້ອນ RE2 Regular Expression ທີ່ຖືກຕ້ອງ ແລະ ຍາວບໍ່ເກີນ 256 ຕົວອັກສອນ', + created: 'ສ້າງວຽກສົ່ງອອກແລ້ວ', + fileName: 'ຊື່ໄຟລ໌', + fileSize: 'ຂະໜາດໄຟລ໌', + expiresAt: 'ໝົດອາຍຸເມື່ອ', + cancelConfirm: 'ຍົກເລີກວຽກສົ່ງອອກນີ້ບໍ?', + deleteConfirm: 'ລຶບບັນທຶກການສົ່ງອອກ ແລະ ໄຟລ໌ນີ້ບໍ?', + }, + waf: { + name: 'WAF', + blackWhite: 'ລາຍຊື່ດຳ ແລະ ຂາວ', + globalSetting: 'ຕັ້ງຄ່າທົ່ວໄປ', + websiteSetting: 'ຕັ້ງຄ່າເວັບໄຊ', + blockRecords: 'ປະຫວັດການບລັອກ', + world: 'ທົ່ວໂລກ', + china: 'ຈີນ', + intercept: 'ການສະກັດກັ້ນ', + request: 'ຄຳຮ້ອງຂໍ', + count4xx: 'ຈຳນວນ 4xx', + count5xx: 'ຈຳນວນ 5xx', + todayStatus: 'ສະຖານະມື້ນີ້', + reqMap: 'ແຜນທີ່ການໂຈມຕີ (30 ວັນຫຼ້າສຸດ)', + resource: 'ແຫຼ່ງທີ່ມາ', + count: 'ຈຳນວນ', + hight: 'ສູງ', + low: 'ຕ່ຳ', + reqCount: 'ຄຳຮ້ອງຂໍ', + interceptCount: 'ຈຳນວນການສະກັດກັ້ນ', + requestTrends: 'ແນວໂນ້ມຄຳຮ້ອງຂໍ (7 ວັນຫຼ້າສຸດ)', + interceptTrends: 'ແນວໂນ້ມການສະກັດກັ້ນ (7 ວັນຫຼ້າສຸດ)', + whiteList: 'Whitelist (ບັນຊີຂາວ)', + blackList: 'Blacklist (ບັນຊີດຳ)', + ipBlackListHelper: 'IP ໃນບັນຊີດຳຈະຖືກບລັອກບໍ່ໃຫ້ເຂົ້າເຖິງເວັບໄຊ', + ipWhiteListHelper: 'IP ໃນບັນຊີຂາວຈະຜ່ານທຸກການຈຳກັດ', + uaBlackListHelper: 'ຄຳຮ້ອງຂໍທີ່ມີ User-Agent ໃນບັນຊີດຳຈະຖືກບລັອກ', + uaWhiteListHelper: 'ຄຳຮ້ອງຂໍທີ່ມີ User-Agent ໃນບັນຊີຂາວຈະຜ່ານທຸກການຈຳກັດ', + urlBlackListHelper: 'URL ໃນບັນຊີດຳຈະຖືກບລັອກ', + urlWhiteListHelper: 'URL ໃນບັນຊີຂາວຈະຜ່ານທຸກການຈຳກັດ', + ccHelper: 'ຫາກເວັບໄຊໄດ້ຮັບຄຳຮ້ອງຂໍເກີນ {1} ຄັ້ງຈາກ IP ດຽວກັນພາຍໃນ {0} ວິນາທີ, IP ຈະຖືກບລັອກເປັນເວລາ {2}', + blockTime: 'ໄລຍະເວລາການບລັອກ', + attackHelper: 'ຫາກມີການສະກັດກັ້ນສະສົມເກີນ {1} ຄັ້ງພາຍໃນ {0} ວິນາທີ, IP ຈະຖືກບລັອກເປັນເວລາ {2}', + notFoundHelper: + 'ຫາກມີຄຳຮ້ອງຂໍທີ່ຕອບກັບເປັນ 404 ສະສົມເກີນ {1} ຄັ້ງພາຍໃນ {0} ວິນາທີ, IP ຈະຖືກບລັອກເປັນເວລາ {2}', + frequencyLimit: 'ຈຳກັດຄວາມຖີ່', + regionLimit: 'ຈຳກັດພື້ນທີ່', + defaultRule: 'ກົດເກນເລີ່ມຕົ້ນ', + accessFrequencyLimit: 'ຈຳກັດຄວາມຖີ່ການເຂົ້າເຖິງ', + attackLimit: 'ຈຳກັດຄວາມຖີ່ການໂຈມຕີ', + notFoundLimit: 'ຈຳກັດຄວາມຖີ່ 404', + urlLimit: 'ຈຳກັດຄວາມຖີ່ URL', + urlLimitHelper: 'ຕັ້ງຄ່າຄວາມຖີ່ການເຂົ້າເຖິງສຳລັບແຕ່ລະ URL', + sqliDefense: 'ປ້ອງກັນ SQL Injection', + sqliHelper: 'ກວດຈັບ ແລະ ບລັອກການໂຈມຕີ SQL injection', + xssHelper: 'ກວດຈັບ ແລະ ບລັອກການໂຈມຕີ XSS', + xssDefense: 'ປ້ອງກັນ XSS', + uaDefense: 'ກົດເກນ User-Agent ທີ່ເປັນອັນຕະລາຍ', + uaHelper: 'ລວມມີກົດເກນເພື່ອລະບຸບັອດ (Bot) ທີ່ບໍ່ຫວັງດີ', + argsDefense: 'ກົດເກນພະລາມິເຕີທີ່ເປັນອັນຕະລາຍ', + argsHelper: 'ບລັອກຄຳຮ້ອງຂໍທີ່ມີພະລາມິເຕີທີ່ບໍ່ຫວັງດີ', + cookieDefense: 'ກົດເກນ Cookie ທີ່ເປັນອັນຕະລາຍ', + cookieHelper: 'ຫ້າມໃຊ້ Cookie ທີ່ເປັນອັນຕະລາຍໃນຄຳຮ້ອງຂໍ', + headerDefense: 'ກົດເກນ Header ທີ່ເປັນອັນຕະລາຍ', + headerHelper: 'ຫ້າມຄຳຮ້ອງຂໍທີ່ມີ Header ທີ່ບໍ່ຫວັງດີ', + httpRule: 'ກົດເກນວິທີການ HTTP (Method)', + httpHelper: + 'ກຳນົດວິທີການເຂົ້າເຖິງທີ່ອະນຸຍາດ. ຫາກຕ້ອງການຈຳກັດ, ກະລຸນາປິດປຸ່ມນັ້ນ. ຕົວຢ່າງ: ຫາກອະນຸຍາດສະເພາະ GET, ຕ້ອງປິດປຸ່ມອື່ນໆທັງໝົດ', + geoRule: 'ຈຳກັດການເຂົ້າເຖິງຕາມພື້ນທີ່', + geoHelper: 'ຈຳກັດການເຂົ້າເຖິງເວັບໄຊຈາກບາງປະເທດ ຫຼື ພື້ນທີ່', + regionPolicy: 'ນະໂຍບາຍພາກພື້ນ', + provincePolicy: 'ນະໂຍບາຍແຂວງ', + provinceRuleLabel: 'ແຂວງ', + openRestyFeatureVersionAlert: 'OpenResty ຕ້ອງໃໝ່ກວ່າ 1.31.1.1-0 ເພື່ອໃຫ້ {0} ມີຜົນ.', + ipLocation: 'ທີ່ຕັ້ງ IP', + action: 'ການດຳເນີນການ', + ruleType: 'ປະເພດການໂຈມຕີ', + ipHelper: 'ປ້ອນທີ່ຢູ່ IP', + attackLog: 'ບັນທຶກການໂຈມຕີ', + rule: 'ກົດເກນ', + ipArr: 'ຊ່ວງ IPV4', + ipStart: 'IP ເລີ່ມຕົ້ນ', + ipEnd: 'IP ສິ້ນສຸດ', + ipv4: 'IPv4', + ipv6: 'IPv6', + urlDefense: 'ກົດເກນ URL', + urlHelper: 'URL ທີ່ຕ້ອງຫ້າມ', + dirFilter: 'ກອງໄດເຣັກທໍຣີ', + sqlInject: 'SQL Injection', + xss: 'XSS', + phpExec: 'ການທຳງານຂອງສະຄຣິບ PHP', + oneWordTrojan: 'One word Trojan', + appFilter: 'ການກອງໄດເຣັກທໍຣີທີ່ເປັນອັນຕະລາຍ', + webShell: 'Webshell', + args: 'ພະລາມິເຕີທີ່ບໍ່ຫວັງດີ', + protocolFilter: 'ການກອງໂປຣໂຕຄໍ', + javaFilter: 'ການກອງໄຟລ໌ Java ທີ່ເປັນອັນຕະລາຍ', + scannerFilter: 'ການກອງ Scanner', + escapeFilter: 'ການກອງ Escape', + customRule: 'ກົດເກນກຳນົດເອງ', + httpMethod: 'ການກອງ HTTP Method', + fileExt: 'ຈຳກັດການອັບໂຫຼດໄຟລ໌', + fileExtHelper: 'ນາມສະກຸນໄຟລ໌ທີ່ຫ້າມອັບໂຫຼດ', + deny: 'ປະຕິເສດ', + allow: 'ອະນຸຍາດ', + allowOnly: 'ອະນຸຍາດສະເພາະ', + field: 'ເປົ້າໝາຍ', + pattern: 'ເງື່ອນໄຂ', + ruleContent: 'ເນື້ອໃນ', + contain: 'ລວມມີ', + equal: 'ເທົ່າກັບ', + regex: 'Regular Expression', + notEqual: 'ບໍ່ເທົ່າກັບ', + customRuleHelper: 'ດຳເນີນການຕາມເງື່ອນໄຂທີ່ກຳນົດ', + actionAllow: 'ອະນຸຍາດ', + blockIP: 'ບລັອກ IP', + code: 'ລະຫັດສະຖານະຕອບກັບ', + noRes: 'ຕັດການເຊື່ອມຕໍ່ (444)', + badReq: 'ພະລາມິເຕີບໍ່ຖືກຕ້ອງ (400)', + forbidden: 'ປະຕິເສດການເຂົ້າເຖິງ (403)', + serverErr: 'ເຊີເວີຂັດຂ້ອງ (500)', + resHtml: 'ໜ້າຕອບກັບ', + allowHelper: 'ການອະນຸຍາດຈະຂ້າມກົດເກນ WAF ອື່ນໆ, ກະລຸນາໃຊ້ຢ່າງລະມັດລະວັງ', + captcha: 'ການຢືນຢັນຕົວຕົນ (Captcha)', + fiveSeconds: 'ຢືນຢັນ 5 ວິນາທີ', + location: 'ພື້ນທີ່', + redisConfig: 'ການຕັ້ງຄ່າ Redis', + redisHelper: 'ເປີດໃຊ້ Redis ເພື່ອເກັບລາຍຊື່ IP ທີ່ຖືກບລັອກຊົ່ວຄາວ', + wafHelper: 'ເວັບໄຊທັງໝົດຈະບໍ່ໄດ້ຮັບການປ້ອງກັນຫາກປິດໃຊ້ງານ', + websiteWafHelper: 'ເວັບໄຊນີ້ຈະບໍ່ໄດ້ຮັບການປ້ອງກັນຫາກປິດໃຊ້ງານ', + attackIP: 'IP ທີ່ໂຈມຕີ', + attackParam: 'ລາຍລະອຽດການໂຈມຕີ', + execRule: 'ກົດເກນທີ່ກວດພົບ', + acl: 'ACL', + sql: 'SQL Injection', + cc: 'ຈຳກັດຄວາມຖີ່ການເຂົ້າເຖິງ', + isBlocking: 'ຖືກບລັອກ', + isFree: 'ປົດບລັອກແລ້ວ', + unLock: 'ປົດບລັອກ', + unLockHelper: 'ປົດບລັອກ IP: {0}?', + saveDefault: 'ບັນທຶກເປັນຄ່າເລີ່ມຕົ້ນ', + saveToWebsite: 'ນຳໃຊ້ກັບເວັບໄຊ', + saveToWebsiteHelper: 'ນຳໃຊ້ການຕັ້ງຄ່າປັດຈຸບັນກັບທຸກເວັບໄຊ?', + websiteHelper: 'ນີ້ຄືຄ່າເລີ່ມຕົ້ນສຳລັບການສ້າງເວັບໄຊໃໝ່. ການແກ້ໄຂຕ້ອງນຳໃຊ້ກັບເວັບໄຊຈຶ່ງຈະມີຜົນ', + websiteHelper2: 'ນີ້ຄືຄ່າເລີ່ມຕົ້ນສຳລັບການສ້າງເວັບໄຊໃໝ່. ກະລຸນາແກ້ໄຂການຕັ້ງຄ່າສະເພາະຢູ່ທີ່ຕົວເວັບໄຊ', + ipGroup: 'ກຸ່ມ IP', + ipGroupHelper: 'ໜຶ່ງ IP ຫຼື ຊ່ວງ IP ຕໍ່ແຖວ, ຮອງຮັບ IPv4 ແລະ IPv6, ຕົວຢ່າງ: 192.168.1.1 ຫຼື 192.168.1.0/24', + ipBlack: 'ບັນຊີດຳ IP', + openRestyAlert: 'ເວີຊັນ OpenResty ຕ້ອງສູງກວ່າ {0}', + initAlert: + 'ຕ້ອງມີການເລີ່ມຕົ້ນລະບົບ (Initialization) ໃນການໃຊ້ງານຄັ້ງທຳອິດ, ໄຟລ໌ຕັ້ງຄ່າເວັບໄຊຈະຖືກແກ້ໄຂ ແລະ ຄ່າ WAF ເດີມຈະຫາຍໄປ. ກະລຸນາສຳຮອງຂໍ້ມູນ OpenResty ກ່ອນ', + initHelper: 'ການເລີ່ມຕົ້ນລະບົບຈະລຶບການຕັ້ງຄ່າ WAF ທີ່ມີຢູ່. ເຈົ້າແນ່ໃຈບໍວ່າຕ້ອງການເລີ່ມຕົ້ນ?', + mainSwitch: 'ສະວິດຫຼັກ', + websiteSwitch: 'ສະວິດ', + websiteAlert: 'ກະລຸນາສ້າງເວັບໄຊກ່ອນ', + defaultUrlBlack: 'ກົດເກນ URL', + htmlRes: 'ໜ້າສະກັດກັ້ນ', + urlSearchHelper: 'ປ້ອນ URL ເພື່ອຄົ້ນຫາ', + hostSearchHelper: 'ປ້ອນ Host ເພື່ອຮອງຮັບການຄົ້ນຫາແບບຄຸມເຄືອ', + toCreate: 'ສ້າງ', + closeWaf: 'ປິດ WAF', + closeWafHelper: 'ການປິດ WAF ຈະເຮັດໃຫ້ເວັບໄຊບໍ່ມີການປ້ອງກັນ, ຕ້ອງການດຳເນີນການຕໍ່ບໍ?', + addblack: 'ເພີ່ມເຂົ້າບັນຊີດຳ', + addwhite: 'ເພີ່ມເຂົ້າບັນຊີຂາວ', + addblackHelper: 'ເພີ່ມ IP:{0} ເຂົ້າໃນບັນຊີດຳເລີ່ມຕົ້ນ?', + addwhiteHelper: 'ເພີ່ມ IP:{0} ເຂົ້າໃນບັນຊີຂາວເລີ່ມຕົ້ນ?', + defaultUaBlack: 'ກົດເກນ User-Agent', + defaultIpBlack: 'ກຸ່ມ IP ທີ່ບໍ່ຫວັງດີ', + cookie: 'ກົດເກນ Cookie', + urlBlack: 'ບັນຊີດຳ URL', + uaBlack: 'ບັນຊີດຳ User-Agent', + attackCount: 'ຈຳກັດຄວາມຖີ່ການໂຈມຕີ', + fileExtCheck: 'ຈຳກັດການອັບໂຫຼດໄຟລ໌', + geoRestrict: 'ຈຳກັດການເຂົ້າເຖິງຕາມພື້ນທີ່', + originProtect: 'ການປ້ອງກັນ CDN Origin', + attacklog: 'ປະຫວັດການສະກັດກັ້ນ', + unknownWebsite: 'ການເຂົ້າເຖິງໂດເມນທີ່ບໍ່ໄດ້ຮັບອະນຸຍາດ', + geoRuleEmpty: 'ພື້ນທີ່ບໍ່ສາມາດຫວ່າງໄດ້', + unknown: 'ບໍ່ມີເວັບໄຊນີ້', + geo: 'ຈຳກັດພື້ນທີ່', + revertHtml: 'ຄືນຄ່າ {0} ເປັນໜ້າເລີ່ມຕົ້ນ?', + five_seconds: 'ຢືນຢັນ 5 ວິນາທີ', + header: 'ກົດເກນ Header', + methodWhite: 'ກົດເກນ HTTP', + expiryDate: 'ວັນໝົດອາຍຸ', + expiryDateHelper: 'ຫຼັງຈາກຢືນຢັນຜ່ານແລ້ວ, ຈະບໍ່ມີການຢືນຢັນອີກພາຍໃນກຳນົດເວລາ', + defaultIpBlackHelper: 'ລວມລາຍຊື່ IP ທີ່ບໍ່ຫວັງດີຈາກອິນເຕີເນັດເພື່ອປ້ອງກັນການເຂົ້າເຖິງ', + notFoundCount: 'ຈຳກັດຄວາມຖີ່ 404', + matchValue: 'ຄ່າທີ່ກົງກັນ', + headerName: 'ຮອງຮັບຕົວອັກສອນພາສາອັງກິດ, ຕົວເລກ, - ຄວາມຍາວ 3-30', + cdnHelper: 'ເວັບໄຊທີ່ໃຊ້ CDN ສາມາດເປີດບ່ອນນີ້ເພື່ອດຶງ IP ທີ່ແທ້ຈິງ', + clearLogWarn: 'ບໍ່ສາມາດກູ້ຄືນບັນທຶກທີ່ລຶບແລ້ວໄດ້, ຕ້ອງການຕໍ່ບໍ?', + commonRuleHelper: 'ກົດເກນເປັນແບບຄົ້ນຫາບາງສ່ວນ (Fuzzy Matching)', + blockIPHelper: + 'IP ທີ່ຖືກບລັອກຈະຖືກເກັບໄວ້ໃນ OpenResty ຊົ່ວຄາວ ແລະ ຈະປົດບລັອກເມື່ອ Restart OpenResty. ສາມາດບລັອກຖາວອນໄດ້ຜ່ານຟັງຊັນບລັອກ', + addWhiteUrlHelper: 'ເພີ່ມ URL {0} ເຂົ້າໃນບັນຊີຂາວ?', + dashHelper: 'ເວີຊັນ Community ສາມາດໃຊ້ຟັງຊັນໃນການຕັ້ງຄ່າທົ່ວໄປ ແລະ ເວັບໄຊໄດ້', + wafStatusHelper: 'ໄຟວໍ (Firewall) ຍັງບໍ່ໄດ້ເປີດໃຊ້. ການປ້ອງກັນເວັບໄຊຖືກຢຸດຊົ່ວຄາວ.', + enableProtection: 'ເປີດການປ້ອງກັນ', + ccMode: 'ໂໝດ', + global: 'ໂໝດທົ່ວໄປ', + uriMode: 'ໂໝດ URL', + globalHelper: 'ໂໝດທົ່ວໄປ: ເຮັດວຽກເມື່ອຈຳນວນຄຳຮ້ອງຂໍທັງໝົດໄປຫາ URL ໃດໜຶ່ງເກີນເກນທີ່ກຳນົດ', + uriModeHelper: 'ໂໝດ URL: ເຮັດວຽກເມື່ອຈຳນວນຄຳຮ້ອງຂໍໄປຫາ URL ດຽວເກີນເກນທີ່ກຳນົດ', + ip: 'ບັນຊີດຳ IP', + globalSettingHelper: + 'ການຕັ້ງຄ່າທີ່ມີແທັກ [ເວັບໄຊ] ຕ້ອງເປີດໃນ [ຕັ້ງຄ່າເວັບໄຊ], ຄ່າທົ່ວໄປເປັນພຽງຄ່າເລີ່ມຕົ້ນສຳລັບເວັບໄຊໃໝ່', + globalSettingHelper2: 'ຕ້ອງເປີດໃຊ້ງານທັງໃນ [ຕັ້ງຄ່າທົ່ວໄປ] ແລະ [ຕັ້ງຄ່າເວັບໄຊ] ພ້ອມກັນ', + urlCCHelper: 'ຄຳຮ້ອງຂໍເກີນ {1} ຄັ້ງຕໍ່ URL ນີ້ພາຍໃນ {0} ວິນາທີ, ຈະບລັອກ IP ນີ້ {2}', + urlCCHelper2: 'URL ບໍ່ສາມາດມີພະລາມິເຕີໄດ້', + notContain: 'ບໍ່ລວມມີ', + urlcc: 'ຈຳກັດຄວາມຖີ່ URL', + method: 'ປະເພດຄຳຮ້ອງຂໍ', + addIpsToBlock: 'ບລັອກ IP ແບບກຸ່ມ', + addIpSegmentToBlock: 'ບລັອກຊ່ວງ IP', + addIpSegmentsToBlock: 'ບລັອກຊ່ວງ IP ແບບກຸ່ມ', + addUrlsToWhite: 'ເພີ່ມ URL ເຂົ້າບັນຊີຂາວແບບກຸ່ມ', + noBlackIp: 'IP ຖືກບລັອກແລ້ວ, ບໍ່ຈຳເປັນຕ້ອງບລັອກຊ້ຳ', + noWhiteUrl: 'URL ຢູ່ໃນບັນຊີຂາວແລ້ວ, ບໍ່ຈຳເປັນຕ້ອງເພີ່ມຊ້ຳ', + spiderIpHelper: + 'ລວມມີ Baidu, Bing, Google, 360, Shenma, Sogou, ByteDance, DuckDuckGo, Yandex. ຫາກປິດຈະບລັອກ Spider ທັງໝົດ.', + spiderIp: 'ກຸ່ມ IP ຂອງ Spider', + spider: 'Spider', + spiderAllowlist: 'Spider ທີ່ອະນຸຍາດ', + spiderAllowlistEmpty: 'ບໍ່ໄດ້ເລືອກ Spider. ການບັນທຶກຈະບລັອກການເຂົ້າເຖິງຂອງ Spider ທັງໝົດ.', + geoIp: 'ຖານຂໍ້ມູນທີ່ຢູ່ IP', + geoIpHelper: 'ໃຊ້ເພື່ອຢືນຢັນທີ່ຕັ້ງທາງພູມສາດຂອງ IP', + stat: 'ລາຍງານການໂຈມຕີ', + statTitle: 'ລາຍງານ', + attackIp: 'IP', + attackCountNum: 'ຈຳນວນຄັ້ງ', + percent: 'ເປີເຊັນ', + addblackUrlHelper: 'ຕ້ອງການເພີ່ມ URL: {0} ເຂົ້າໃນບັນຊີດຳເລີ່ມຕົ້ນບໍ?', + rce: 'Remote Code Execution', + software: 'ຊອບແວ', + cveHelper: 'ລວມມີຊ່ອງໂຫວ່ຂອງຊອບແວ ແລະ Framework ທີ່ພົບເລື້ອຍ', + vulnCheck: 'ກົດເກນເພີ່ມເຕີມ', + ssrf: 'ຊ່ອງໂຫວ່ SSRF', + afr: 'ການອ່ານໄຟລ໌ຕາມໃຈ (Arbitrary File Read)', + ua: 'ການເຂົ້າເຖິງໂດຍບໍ່ໄດ້ຮັບອະນຸຍາດ', + id: 'ຂໍ້ມູນຮົ່ວໄຫຼ', + aa: 'ການຂ້າມຜ່ານການຢືນຢັນຕົວຕົນ', + dr: 'Directory Traversal', + xxe: 'ຊ່ອງໂຫວ່ XXE', + suid: 'ຊ່ອງໂຫວ່ Serialization', + dos: 'ຊ່ອງໂຫວ່ Denial of Service', + afd: 'ການດາວໂຫຼດໄຟລ໌ຕາມໃຈ', + sqlInjection: 'SQL Injection', + afw: 'ການຂຽນໄຟລ໌ຕາມໃຈ', + il: 'ຂໍ້ມູນຮົ່ວໄຫຼ', + clearAllLog: 'ລຶບບັນທຶກທັງໝົດ', + exportLog: 'ສົ່ງອອກບັນທຶກ', + appRule: 'ກົດເກນແອັບພລິເຄຊັນ', + appRuleHelper: + 'ກົດເກນແອັບພລິເຄຊັນທົ່ວໄປ, ການເປີດໃຊ້ຈະຊ່ວຍລຸດຂໍ້ຜິດພາດ (False Positives), ໜຶ່ງເວັບໄຊໃຊ້ໄດ້ພຽງກົດເກນດຽວ', + logExternal: 'ປະເພດທີ່ບໍ່ບັນທຶກ', + ipWhite: 'ບັນຊີຂາວ IP', + urlWhite: 'ບັນຊີຂາວ URL', + uaWhite: 'ບັນຊີຂາວ User-Agent', + logExternalHelper: + 'ປະເພດທີ່ເລືອກຈະບໍ່ຖືກບັນທຶກໃນ Log. ບັນຊີດຳ/ຂາວ, ການຈຳກັດພື້ນທີ່ ແລະ ກົດເກນກຳນົດເອງມັກຈະສ້າງ Log ຈຳນວນຫຼາຍ ແນະນຳໃຫ້ຍົກເວັ້ນ', + ssti: 'ການໂຈມຕີ SSTI', + crlf: 'CRLF Injection', + strict: 'ໂໝດເຂັ້ມງວດ', + strictHelper: 'ໃຊ້ກົດເກນທີ່ເຂັ້ມງວດກວ່າເພື່ອທົດສອບຄຳຮ້ອງຂໍ', + executionStrategy: 'ກົນລະຍຸດການດຳເນີນງານ', + detectionStrength: 'ຄວາມເຂັ້ມແຂງການກວດຈັບ', + protectionMode: 'ໂໝດປ້ອງກັນ', + observationMode: 'ໂໝດສັງເກດການ', + standardMode: 'ໂໝດມາດຕະຖານ', + observationModeHelper: 'ກວດຈັບ ແລະ ບັນທຶກຄຳຮ້ອງຂໍໂດຍບໍ່ບລັອກ', + observationModeConfirm: 'ໃນໂໝດສັງເກດການ ການຈັບຄູ່ WAF ທັງໝົດຈະຖືກບັນທຶກໂດຍບໍ່ບລັອກຄຳຮ້ອງຂໍ. ຕ້ອງການຕໍ່ບໍ?', + globalStrictRequired: 'ກະລຸນາເປີດໂໝດເຂັ້ມງວດໃນການຕັ້ງຄ່າສ່ວນກາງກ່ອນ', + observe: 'ສັງເກດການ', + saveLog: 'ບັນທຶກ Log', + remoteURLHelper: 'Remote URL ຕ້ອງມີໜຶ່ງ IP ຕໍ່ແຖວ ແລະ ບໍ່ມີຕົວອັກສອນອື່ນ', + notFound: 'ບໍ່ພົບ (404)', + serviceUnavailable: 'ບໍລິການບໍ່ພ້ອມໃຊ້ງານ (503)', + gatewayTimeout: 'Gateway Timeout (504)', + belongToIpGroup: 'ຢູ່ໃນກຸ່ມ IP', + notBelongToIpGroup: 'ບໍ່ຢູ່ໃນກຸ່ມ IP', + unknownWebsiteKey: 'ບໍ່ຮູ້ຈັກໂດເມນ', + special: 'ພິເສດ', + fileToLarge: 'ໄຟລ໌ໃຫຍ່ເກີນ 1MB ບໍ່ສາມາດອັບໂຫຼດໄດ້', + uploadOverLimit: 'ອັບໂຫຼດໄຟລ໌ເກີນຈຳນວນທີ່ກຳນົດ, ສູງສຸດ 1 ໄຟລ໌', + importRuleHelper: 'ໜຶ່ງກົດເກນຕໍ່ແຖວ', + }, + monitor: { + '360': '360 Search', + name: 'ຕິດຕາມເວັບໄຊ', + pv: 'Page Views', + uv: 'Unique Visitors', + flow: 'ການຮັບສົ່ງຂໍ້ມູນ', + ip: 'IP', + spider: 'Spider', + visitors: 'ແນວໂນ້ມຜູ້ເຂົ້າຊົມ', + today: 'ມື້ນີ້', + last7days: '7 ວັນຫຼ້າສຸດ', + last30days: '30 ວັນຫຼ້າສຸດ', + uvMap: 'ແຜນທີ່ຜູ້ເຂົ້າຊົມ (ວັນທີ 30)', + qps: 'ຄຳຮ້ອງຂໍທັນທີ (ຕໍ່ນາທີ)', + flowSec: 'ການຮັບສົ່ງຂໍ້ມູນທັນທີ (ຕໍ່ນາທີ)', + excludeCode: 'ຍົກເວັ້ນລະຫັດສະຖານະ', + excludeUrl: 'ຍົກເວັ້ນ URL', + excludeExt: 'ຍົກເວັ້ນນາມສະກຸນໄຟລ໌', + cdnHelper: 'ດຶງ IP ທີ່ແທ້ຈິງຈາກ Header ທີ່ CDN ສົ່ງມາ', + reqRank: 'ອັນດັບການເຂົ້າຊົມ', + refererDomain: 'ໂດເມນທີ່ສົ່ງມາ', + os: 'ລະບົບປະຕິບັດການ', + browser: 'ບຣາວເຊີ/ໄຄລເອັນ', + device: 'ອຸປະກອນ', + showMore: 'ເພີ່ມເຕີມ', + unknown: 'ອື່ນໆ', + pc: 'ຄອມພິວເຕີ', + mobile: 'ອຸປະກອນມືຖື', + wechat: 'WeChat', + machine: 'ເຄື່ອງຈັກ/ບັອດ', + tencent: 'Tencent Browser', + ucweb: 'UC Browser', + '2345explorer': '2345 browser', + huaweibrowser: 'Huawei Browser', + log: 'ບັນທຶກຄຳຮ້ອງຂໍ', + statusCode: 'ລະຫັດສະຖານະ', + requestTime: 'ເວລາຕອບສະໜອງ', + flowRes: 'ຂໍ້ມູນທີ່ຕອບກັບ', + method: 'ວິທີການ (Method)', + statusCodeHelper: 'ປ້ອນລະຫັດສະຖານະດ້ານເທິງ', + statusCodeError: 'ປະເພດລະຫັດສະຖານະບໍ່ຖືກຕ້ອງ', + methodHelper: 'ປ້ອນວິທີການດ້ານເທິງ', + all: 'ທັງໝົດ', + baidu: 'Baidu', + google: 'Google', + bing: 'Bing', + bytes: 'Today headlines', + sogou: 'Sogou', + failed: 'ຜິດພາດ', + ipCount: 'ຈຳນວນ IP', + spiderCount: 'ຄຳຮ້ອງຂໍຈາກ Spider', + averageReqTime: 'ເວລາຕອບສະໜອງສະເລ່ຍ', + totalFlow: 'ຂໍ້ມູນທັງໝົດ', + logSize: 'ຂະໜາດໄຟລ໌ Log', + realIPType: 'ວິທີການດຶງ IP ທີ່ແທ້ຈິງ', + realIPRecognition: 'ການກວດຈັບ IP ຈິງ', + fromHeader: 'ດຶງຈາກ HTTP Header', + fromHeaders: 'ດຶງຈາກລາຍຊື່ Header', + header: 'HTTP Header', + cdnConfig: 'ການຕັ້ງຄ່າ CDN', + xff1: 'Proxy ຊັ້ນທີ 1 ຈາກ X-Forwarded-For', + xff2: 'Proxy ຊັ້ນທີ 2 ຈາກ X-Forwarded-For', + xff3: 'Proxy ຊັ້ນທີ 3 ຈາກ X-Forwarded-For', + xffHelper: + 'ຕົວຢ່າງ: X-Forwarded-For: ,,, Proxy ຊັ້ນເທິງຈະເອົາ IP ສຸດທ້າຍ ', + headersHelper: 'ດຶງ IP ທີ່ແທ້ຈິງຈາກ Header ທີ່ CDN ໃຊ້ເລື້ອຍໆ, ໂດຍເລືອກຄ່າທຳອິດທີ່ມີ', + monitorCDNHelper: 'ການແກ້ໄຂ CDN ໃນການຕິດຕາມເວັບໄຊຈະອັບເດດການຕັ້ງຄ່າ WAF CDN ນຳ', + wafCDNHelper: 'ການແກ້ໄຂ CDN ໃນ WAF ຈະອັບເດດການຕັ້ງຄ່າຕິດຕາມເວັບໄຊນຳ', + originProtection: 'ການປ້ອງກັນ Origin', + originProtectionHelper: + 'ມີພຽງໂນດ CDN ໃນກຸ່ມ IP ທີ່ເລືອກເທົ່ານັ້ນທີ່ສາມາດເຊື່ອມຕໍ່ Origin. ການກວດຈັບ IP ຈິງຂອງຜູ້ເຂົ້າຊົມໃຊ້ສະວິດແຍກຕ່າງຫາກ.', + originProtectionIPGroups: 'ກຸ່ມ IP Origin ຂອງ CDN', + originProtectionIPGroupsPlaceholder: 'ເລືອກກຸ່ມ IP Origin ຂອງ CDN ທີ່ເຊື່ອຖືໄດ້', + originProtectionWarning: + 'ການຕັ້ງຄ່າທີ່ບໍ່ຖືກຕ້ອງອາດເຮັດໃຫ້ເວັບໄຊໃຊ້ງານບໍ່ໄດ້. ກະລຸນາຢືນຢັນວ່າລວມທີ່ຢູ່ CDN Origin ທັງໝົດແລ້ວ.', + originProtectionEnableConfirm: + 'ການເຊື່ອມຕໍ່ນອກກຸ່ມ IP ທີ່ເລືອກຈະຖືກມອງວ່າເປັນການເຂົ້າ Origin ໂດຍກົງ ແລະ ຈະຖືກບລັອກ. ຕ້ອງການຕໍ່ບໍ?', + statusErr: 'ຮູບແບບລະຫັດສະຖານະບໍ່ຖືກຕ້ອງ', + shenma: 'Shenma Search', + duckduckgo: 'DuckDuckGo', + yandex: 'Yandex', + gptbot: 'GPTBot', + excludeUri: 'ຍົກເວັ້ນ URI', + top100Helper: 'ສະແດງຂໍ້ມູນ 100 ອັນດັບທຳອິດ', + logSaveDay: 'ໄລຍະເວລາເກັບ Log (ວັນ)', + cros: 'Chrome OS', + theworld: 'TheWorld Browser', + edge: 'Microsoft Edge', + maxthon: 'Maxthon Browser', + monitorStatusHelper: 'ການຕິດຕາມເວັບໄຊຖືກປິດຢູ່. ເປີດໃຊ້ງານດຽວນີ້', + excludeIp: 'ຍົກເວັ້ນທີ່ຢູ່ IP', + excludeUa: 'ຍົກເວັ້ນ User-Agent', + remotePort: 'ພອດປາຍທາງ', + unknown_browser: 'ບໍ່ຮູ້ຈັກ', + unknown_os: 'ບໍ່ຮູ້ຈັກ', + unknown_device: 'ບໍ່ຮູ້ຈັກ', + logSaveSize: 'ຂະໜາດ Log ສູງສຸດ', + logSaveSizeHelper: 'ນີ້ຄືຂະໜາດການບັນທຶກ Log ສຳລັບໜຶ່ງເວັບໄຊ', + '360se': '360 Security Browser', + websites: 'ລາຍຊື່ເວັບໄຊ', + trend: 'ສະຖິຕິແນວໂນ້ມ', + reqCount: 'ຈຳນວນຄຳຮ້ອງຂໍ', + uriHelper: 'ສາມາດໃຊ້ /test/* ຫຼື /*/index.php ເພື່ອຍົກເວັ້ນ Uri', + }, + tamper: { + tamper: 'ປ້ອງກັນການແຊກແຊງເວັບໄຊ', + tamperCreateHint: + 'ໄດເຣັກທໍຣີປັດຈຸບັນອາດໄດ້ຮັບຜົນຈາກການປ້ອງກັນການແກ້ໄຂ ຫຼື ຄຸນສົມບັດໄຟລ໌, ເຮັດໃຫ້ສ້າງບໍ່ສຳເລັດ.', + ignoreTemplate: 'ແທັມເພລດການຍົກເວັ້ນ', + protectTemplate: 'ແທັມເພລດການປ້ອງກັນ', + ignoreTemplateHelper: + 'ປ້ອນກົດເກນການຍົກເວັ້ນ (ແຍກດ້ວຍ Enter ຫຼື ຍະຫວ່າງ). (ໄດເຣັກທໍຣີສະເພາະ ./log ຫຼື ຊື່ tmp. ສຳລັບໄຟລ໌ ໃຫ້ປ້ອນທີ່ຢູ່ໄຟລ໌ ເຊັ່ນ ./data/test.html)', + protectTemplateHelper: + 'ປ້ອນກົດເກນການປ້ອງກັນ (ແຍກດ້ວຍ Enter ຫຼື ຍະຫວ່າງ). (ໄຟລ໌ສະເພາະ ./index.html, ນາມສະກຸນ .html, ປະເພດໄຟລ໌ js. ສຳລັບໄດເຣັກທໍຣີ ໃຫ້ປ້ອນທີ່ຢູ່ ເຊັ່ນ ./log)', + templateContent: 'ເນື້ອໃນແທັມເພລດ', + template: 'ແທັມເພລດ', + saveTemplate: 'ບັນທຶກເປັນແທັມເພລດ', + tamperHelper1: + 'ສຳລັບເວັບໄຊທີ່ຕິດຕັ້ງແບບຄລິກດຽວ, ແນະນຳໃຫ້ປ້ອງກັນໄດເຣັກທໍຣີຂອງແອັບ. ຫາກເວັບໄຊໃຊ້ງານບໍ່ໄດ້ ຫຼື ສຳຮອງ/ກູ້ຄືນລົ້ມເຫຼວ, ໃຫ້ປິດການປ້ອງກັນກ່ອນ.', + tamperHelper2: 'ນີ້ຈະຈຳກັດການອ່ານ, ຂຽນ, ລຶບ, ປ່ຽນສິດ ແລະ ເຈົ້າຂອງໄຟລ໌ໃນໄດເຣັກທໍຣີທີ່ໄດ້ຮັບການປ້ອງກັນ.', + tamperPath: 'ໄດເຣັກທໍຣີທີ່ປ້ອງກັນ', + tamperPathEdit: 'ແກ້ໄຂທີ່ຢູ່', + log: 'Log ການສະກັດກັ້ນ', + totalProtect: 'ການປ້ອງກັນທັງໝົດ', + todayProtect: 'ການປ້ອງກັນມື້ນີ້', + templateRule: 'ຄວາມຍາວ 1-512, ແລະ ຊື່ຫ້າມມີສັນຍະລັກ {0}.', + ignore: 'ຍົກເວັ້ນ', + ignoreHelper: 'ເລືອກ ຫຼື ປ້ອນກົດເກນການຍົກເວັ້ນ (ແຍກດ້ວຍ Enter ຫຼື ຍະຫວ່າງ).', + protect: 'ປ້ອງກັນ', + protectHelper: 'ເລືອກ ຫຼື ປ້ອນກົດເກນການປ້ອງກັນ (ແຍກດ້ວຍ Enter ຫຼື ຍະຫວ່າງ).', + tamperHelper00: 'ການຍົກເວັ້ນ ແລະ ປ້ອງກັນ ຮອງຮັບສະເພາະທີ່ຢູ່ແບບສຳພັດ (Relative Paths).', + tamperHelper01: 'ຫຼັງຈາກເປີດໃຊ້, ລະບົບຈະຈຳກັດການສ້າງ, ແກ້ໄຂ ແລະ ລຶບໄຟລ໌ໃນໄດເຣັກທໍຣີທີ່ປ້ອງກັນ.', + tamperHelper02: 'ລຳດັບຄວາມສຳຄັນ: ປ້ອງກັນສະເພາະທີ່ຢູ່ > ຍົກເວັ້ນສະເພາະທີ່ຢູ່ > ປ້ອງກັນ > ຍົກເວັ້ນ', + tamperHelper03: + 'ການຕິດຕາມຈະເຮັດວຽກສະເພາະໄດເຣັກທໍຣີທີ່ບໍ່ໄດ້ຍົກເວັ້ນ, ໂດຍກວດສອບການສ້າງໄຟລ໌ທີ່ບໍ່ໄດ້ປ້ອງກັນ.', + disableHelper: 'ກຳລັງຈະປິດການປ້ອງກັນການແຊກແຊງສຳລັບເວັບໄຊຕໍ່ໄປນີ້, ຕ້ອງການຕໍ່ບໍ?', + appendOnly: 'ເພີ່ມໄດ້ຢ່າງດຽວ', + appendOnlyHelper: + 'ຈຳກັດການລຶບໄຟລ໌ໃນໄດເຣັກທໍຣີນີ້, ອະນຸຍາດສະເພາະການເພີ່ມໄດເຣັກທໍຣີທີ່ຍົກເວັ້ນ ຫຼື ໄຟລ໌ທີ່ບໍ່ໄດ້ປ້ອງກັນ', + immutable: 'ປ່ຽນແປງບໍ່ໄດ້', + immutableHelper: 'ຈຳກັດການແກ້ໄຂ, ລຶບ, ປ່ຽນສິດ ແລະ ເຈົ້າຂອງສຳລັບໄຟລ໌ນີ້', + onWatch: 'ຕິດຕາມ', + onWatchHelper: 'ຕິດຕາມ ແລະ ສະກັດກັ້ນການສ້າງໄຟລ໌ທີ່ປ້ອງກັນ ຫຼື ໄດເຣັກທໍຣີທີ່ບໍ່ໄດ້ຍົກເວັ້ນ', + forceStop: 'ບັງຄັບປິດ', + forceStopHelper: 'ກຳລັງຈະບັງຄັບປິດຟັງຊັນປ້ອງກັນການແຊກແຊງສຳລັບເວັບໄຊນີ້. ຕ້ອງການຕໍ່ບໍ?', + }, + setting: { + setting: 'ຕັ້ງຄ່າພາແນລ', + title: 'ຄຳອະທິບາຍພາແນລ', + titleHelper: 'ຈະສະແດງໃນໜ້າລັອກອິນ (ເຊັ່ນ: ພາແນລຈັດການເຊີເວີ Linux, ແນະນຳ 8-15 ຕົວອັກສອນ)', + logo: 'ໂລໂກ້ (ບໍ່ມີຂໍ້ຄວາມ)', + logoHelper: 'ຈະສະແດງຢູ່ມຸມຊ້າຍເທິງເມື່ອເມນູຖືກຫຍໍ້ (ຂະໜາດແນະນຳ: 82px*82px)', + logoWithText: 'ໂລໂກ້ (ມີຂໍ້ຄວາມ)', + logoWithTextHelper: 'ຈະສະແດງຢູ່ມຸມຊ້າຍເທິງເມື່ອເມນູຖືກຂະຫຍາຍ (ຂະໜາດແນະນຳ: 185px*55px)', + favicon: 'ໄອຄອນເວັບໄຊ', + faviconHelper: 'ໄອຄອນເວັບໄຊ (ຂະໜາດແນະນຳ: 16px*16px)', + setDefault: 'ຄືນຄ່າເລີ່ມຕົ້ນ', + setHelper: 'ການຕັ້ງຄ່າປັດຈຸບັນຈະຖືກບັນທຶກ. ຕ້ອງການຕໍ່ບໍ?', + setDefaultHelper: 'ການຕັ້ງຄ່າພາແນລທັງໝົດຈະຖືກຄືນຄ່າເປັນເລີ່ມຕົ້ນ. ຕ້ອງການຕໍ່ບໍ?', + logoGroup: 'ໂລໂກ້', + imageGroup: 'ຮູບພາບ', + loginImage: 'ຮູບພາບ', + loginImageHelper: 'ສະແດງໃນໜ້າລັອກອິນ (ຂະໜາດແນະນຳ: 500*416px)', + loginBgType: 'ປະເພດພື້ນຫຼັງ', + loginBgImage: 'ຮູບພື້ນຫຼັງ', + loginBgImageHelper: 'ສະແດງເປັນຮູບພື້ນຫຼັງໃນໜ້າລັອກອິນ (ຂະໜາດແນະນຳ: 1920*1080px)', + loginBgColor: 'ສີພື້ນຫຼັງ', + loginBgColorHelper: 'ສະແດງເປັນສີພື້ນຫຼັງໃນໜ້າລັອກອິນ', + image: 'ຮູບພາບ', + bgColor: 'ສີພື້ນຫຼັງ', + loginGroup: 'ໜ້າລັອກອິນ', + loginBtnLinkColor: 'ສີປຸ່ມ/ລິ້ງ', + loginBtnLinkColorHelper: 'ຈະສະແດງເປັນສີປຸ່ມ ຫຼື ລິ້ງໃນໜ້າລັອກອິນ', + }, + helper: { + wafTitle1: 'ແຜນທີ່ການສະກັດກັ້ນ', + wafContent1: 'ສະແດງການກະຈາຍຕົວທາງພູມສາດຂອງການສະກັດກັ້ນໃນ 30 ວັນຫຼ້າສຸດ', + wafTitle2: 'ຈຳກັດການເຂົ້າເຖິງຕາມພື້ນທີ່', + wafContent2: 'ຈຳກັດແຫຼ່ງທີ່ມາຂອງເວັບໄຊຕາມທີ່ຕັ້ງທາງພູມສາດ', + wafTitle3: 'ໜ້າສະກັດກັ້ນກຳນົດເອງ', + wafContent3: 'ສ້າງໜ້າເວັບກຳນົດເອງເພື່ອສະແດງຫຼັງຈາກຄຳຮ້ອງຂໍຖືກສະກັດກັ້ນ', + wafTitle4: 'ກົດເກນກຳນົດເອງ (ACL)', + wafContent4: 'ສະກັດກັ້ນຄຳຮ້ອງຂໍຕາມກົດເກນທີ່ກຳນົດເອງ', + tamperTitle1: 'ຕິດຕາມຄວາມສົມບູນຂອງໄຟລ໌', + tamperContent1: 'ຕິດຕາມຄວາມສົມບູນຂອງໄຟລ໌ເວັບໄຊ, ລວມມີໄຟລ໌ຫຼັກ, ສະຄຣິບ ແລະ ໄຟລ໌ຕັ້ງຄ່າ.', + tamperTitle2: 'ສະແກນ ແລະ ກວດຈັບແບບທັນທີ', + tamperContent2: 'ກວດຈັບໄຟລ໌ທີ່ຜິດປົກກະຕິ ຫຼື ຖືກແຊກແຊງໂດຍການສະແກນລະບົບໄຟລ໌ແບບທັນທີ.', + tamperTitle3: 'ຕັ້ງຄ່າສິດຄວາມປອດໄພ', + tamperContent3: 'ຈຳກັດການເຂົ້າເຖິງໄຟລ໌ຜ່ານການຕັ້ງສິດທີ່ເໝາະສົມ, ຊ່ວຍລຸດຊ່ອງທາງການໂຈມຕີ.', + tamperTitle4: 'ການບັນທຶກ ແລະ ວິເຄາະ', + tamperContent4: 'ບັນທຶກການເຂົ້າເຖິງ ແລະ ດຳເນີນການກັບໄຟລ໌ເພື່ອການກວດສອບ ແລະ ວິເຄາະໄພຄຸກຄາມ.', + settingTitle1: 'ຂໍ້ຄວາມຕ້ອນຮັບກຳນົດເອງ', + settingContent1: 'ຕັ້ງຂໍ້ຄວາມຕ້ອນຮັບໃນໜ້າລັອກອິນຂອງ 1Panel.', + settingTitle2: 'ໂລໂກ້ກຳນົດເອງ', + settingContent2: 'ອະນຸຍາດໃຫ້ອັບໂຫຼດໂລໂກ້ທີ່ມີຊື່ແບຣນ ຫຼື ຂໍ້ຄວາມອື່ນໆ.', + settingTitle3: 'ໄອຄອນເວັບໄຊກຳນົດເອງ', + settingContent3: 'ອະນຸຍາດໃຫ້ອັບໂຫຼດໄອຄອນເພື່ອແທນທີ່ໄອຄອນບຣາວເຊີເລີ່ມຕົ້ນ.', + monitorTitle1: 'ແນວໂນ້ມຜູ້ເຂົ້າຊົມ', + monitorContent1: 'ສະຖິຕິ ແລະ ສະແດງແນວໂນ້ມຜູ້ເຂົ້າຊົມເວັບໄຊ', + monitorTitle2: 'ແຜນທີ່ຜູ້ເຂົ້າຊົມ', + monitorContent2: 'ສະຖິຕິ ແລະ ສະແດງການກະຈາຍຕົວທາງພູມສາດຂອງຜູ້ເຂົ້າຊົມ', + monitorTitle3: 'ສະຖິຕິການເຂົ້າເຖິງ', + monitorContent3: 'ສະຖິຕິຂໍ້ມູນຄຳຮ້ອງຂໍ, ລວມມີ Spider, ອຸປະກອນ, ສະຖານະຄຳຮ້ອງຂໍ ແລະ ອື່ນໆ.', + monitorTitle4: 'ຕິດຕາມແບບທັນທີ', + monitorContent4: 'ຕິດຕາມຂໍ້ມູນຄຳຮ້ອງຂໍແບບທັນທີ, ລວມມີຈຳນວນຄຳຮ້ອງຂໍ, ປະລິມານຂໍ້ມູນ ແລະ ອື່ນໆ.', + alertTitle1: 'ແຈ້ງເຕືອນຜ່ານ SMS', + alertContent1: 'ແຈ້ງເຕືອນເມື່ອຊັບພະຍາກອນເຊີເວີຜິດປົກກະຕິ, ເວັບໄຊ ຫຼື ໃບຢັ້ງຢືນໝົດອາຍຸ ແລະ ອື່ນໆ.', + alertTitle2: 'ບັນທຶກການແຈ້ງເຕືອນ', + alertContent2: 'ເບິ່ງປະຫວັດການແຈ້ງເຕືອນເພື່ອຕິດຕາມ ແລະ ວິເຄາະເຫດການທີ່ຜ່ານມາ.', + alertTitle3: 'ຕັ້ງຄ່າການແຈ້ງເຕືອນ', + alertContent3: 'ກຳນົດເບີໂທລະສັບ, ຄວາມຖີ່ ແລະ ເວລາການສົ່ງແຈ້ງເຕືອນໃຫ້ເໝາະສົມ.', + nodeDashTitle1: 'ຈັດການແອັບພລິເຄຊັນ', + nodeDashContent1: 'ຈັດການແອັບຫຼາຍໂນດແບບລວມສູນ, ຕິດຕາມສະຖານະ, ເລີ່ມ/ຢຸດ ແລະ ສຳຮອງຂໍ້ມູນ', + nodeDashTitle2: 'ຈັດການເວັບໄຊ', + nodeDashContent2: 'ຈັດການເວັບໄຊຫຼາຍໂນດ, ຕິດຕາມສະຖານະແບບທັນທີ ແລະ ສຳຮອງຂໍ້ມູນແບບກຸ່ມ', + nodeDashTitle3: 'ຈັດການຖານຂໍ້ມູນ', + nodeDashContent3: 'ຈັດການຖານຂໍ້ມູນຫຼາຍໂນດ, ເບິ່ງສະຖານະຫຼັກ ແລະ ສຳຮອງຂໍ້ມູນຄລິກດຽວ', + nodeDashTitle4: 'ຈັດການງານທີ່ຕັ້ງເວລາ', + nodeDashContent4: 'ຈັດການງານ Cronjob ຫຼາຍໂນດ, ຕິດຕາມສະຖານະ ແລະ ສັ່ງທຳງານດ້ວຍຕົນເອງ', + nodeTitle1: 'ເພີ່ມໂນດຄລິກດຽວ', + nodeContent1: 'ເຊື່ອມຕໍ່ຫຼາຍເຊີເວີໂນດໄດ້ຢ່າງວ່ອງໄວ', + nodeTitle2: 'ອັບເກຣດແບບກຸ່ມ', + nodeContent2: 'ຊິງໂຄຣໄນ ແລະ ອັບເກຣດທຸກໂນດພ້ອມກັນໃນຄັ້ງດຽວ', + nodeTitle3: 'ຕິດຕາມສະຖານະໂນດ', + nodeContent3: 'ຕິດຕາມສະຖານະການທຳງານຂອງແຕ່ລະໂນດແບບທັນທີ', + nodeTitle4: 'ເຊື່ອມຕໍ່ໄລຍະໄກວ່ອງໄວ', + nodeContent4: 'ເຊື່ອມຕໍ່ຫາເທີມິນອລຂອງໂນດໄດ້ໂດຍກົງຄລິກດຽວ', + fileExchangeTitle1: 'ສົ່ງຂໍ້ມູນຜ່ານ Key Authentication', + fileExchangeContent1: 'ຢືນຢັນຕົວຕົນຜ່ານ SSH keys ເພື່ອຄວາມປອດໄພໃນການສົ່ງຂໍ້ມູນ.', + fileExchangeTitle2: 'ຊິງໂຄຣໄນໄຟລ໌ທີ່ມີປະສິດທິພາບ', + fileExchangeContent2: 'ຊິງໂຄຣໄນສະເພາະເນື້ອໃນທີ່ປ່ຽນແປງເພື່ອຄວາມໄວ ແລະ ສະຖຽນລະພາບ.', + fileExchangeTitle3: 'ຮອງຮັບການສື່ສານລະຫວ່າງໂນດ', + fileExchangeContent3: 'ໂອນໄຟລ໌ໂຄງການລະຫວ່າງໂນດຕ່າງໆໄດ້ງ່າຍ, ຈັດການຫຼາຍເຊີເວີໄດ້ຢືດຢຸ່ນ.', + nodeAppTitle1: 'ຈັດການອັບເກຣດແອັບ', + nodeAppContent1: 'ຕິດຕາມການອັບເດດແອັບຫຼາຍໂນດແບບລວມສູນ, ຮອງຮັບການອັບເກຣດຄລິກດຽວ', + appTitle1: 'ຈັດການພາແນລຢ່າງຢືດຢຸ່ນ', + appContent1: 'ຈັດການເຊີເວີ 1Panel ໄດ້ທຸກບ່ອນ ທຸກເວລາ.', + appTitle2: 'ຂໍ້ມູນການບໍລິການຄົບຖ້ວນ', + appContent2: 'ຈັດການແອັບພື້ນຖານ, ເວັບໄຊ, Docker, ຖານຂໍ້ມູນ ແລະ ສ້າງແອັບຜ່ານມືຖືໄດ້ໄວ.', + appTitle3: 'ຕິດຕາມຄວາມຜິດປົກກະຕິທັນທີ', + appContent3: 'ເບິ່ງສະຖານະເຊີເວີ, ຄວາມປອດໄພ WAF, ສະຖິຕິການເຂົ້າຊົມ ແລະ ສະຖານະຂະບວນການຜ່ານແອັບມືຖື.', + clusterTitle1: 'ຕິດຕັ້ງແບບ Master-Slave', + clusterContent1: + 'ສ້າງ MySQL/Postgres/Redis Master-Slave ໃນໂນດຕ່າງໆ, ເຊື່ອມຕໍ່ ແລະ ເລີ່ມຕົ້ນລະບົບອັດຕະໂນມັດ', + clusterTitle2: 'ຈັດການ Master-Slave', + clusterContent2: 'ຈັດການຫຼາຍໂນດ Master-Slave ໃນໜ້າດຽວ, ເບິ່ງບົດບາດ ແລະ ສະຖານະການທຳງານ.', + clusterTitle3: 'ສະຖານະການກັອບປີ້ຂໍ້ມູນ', + clusterContent3: 'ສະແດງສະຖານະການ Replication ແລະ ຂໍ້ມູນການດີເລ (Delay) ເພື່ອຊ່ວຍແກ້ໄຂບັນຫາ.', + vllmTitle1: 'ຈັດການແບບລວມສູນ', + vllmContent1: 'ລວມບໍລິການ vLLM ທີ່ກະຈັດກະຈາຍເຂົ້າມາໃນ 1Panel ເພື່ອເບິ່ງສະຖານະ, ເວີຊັນ ແລະ ເສັ້ນທາງທຳງານ.', + vllmTitle2: 'ຕິດຕັ້ງວ່ອງໄວ', + vllmContent2: 'ໃຊ້ຟອມເພື່ອເລືອກເວີຊັນ, ເທົາມໍເດລ ແລະ ຕັ້ງຄ່າການເລີ່ມຕົ້ນໄດ້ງ່າຍ.', + vllmTitle3: 'ປະສິດທິພາບການດຳເນີນງານ', + vllmContent3: 'ຈັດການສ້າງ, ແກ້ໄຂ, ເລີ່ມ, ຢຸດ ແລະ ລຶບ ໄດ້ໃນໜ້າດຽວ.', + vllmTitle4: 'ຄວບຄຸມການຕັ້ງຄ່າ', + vllmContent4: 'ກຳນົດພອດ, ຄອນເທນເນີ ແລະ ຄຳສັ່ງເລີ່ມຕົ້ນໃຫ້ເປັນມາດຕະຖານ.', + modelDownloaderTitle1: 'ຄົ້ນຫາມໍເດລ', + modelDownloaderContent1: 'ຄົ້ນຫາຄັງມໍເດລ HuggingFace ໂດຍກົງ ແລະ ເບິ່ງຍອດດາວໂຫຼດ, ໄລ້ ແລະ ລາຍລະອຽດໄຟລ໌.', + modelDownloaderTitle2: 'ດາວໂຫຼດເລັ່ງດ່ວນ', + modelDownloaderContent2: 'ຕັ້ງຄ່າ HuggingFace acceleration endpoint ແລະ Token ສຳລັບມໍເດລສ່ວນຕົວ.', + modelDownloaderTitle3: 'ຕິດຕາມງານ', + modelDownloaderContent3: 'ກວດສອບຄິວດາວໂຫຼດ, ສະຖານະ, ຄວາມຄືບໜ້າ ແລະ ຂໍ້ຜິດພາດ.', + modelDownloaderTitle4: 'ຈັດການໃນເຄື່ອງ', + modelDownloaderContent4: 'ຈັດການໄດເຣັກທໍຣີມໍເດລໃນເຄື່ອງ, ລວມມີຂະໜາດ, ເວລາ ແລະ ການລຶບໄຟລ໌ທີ່ບໍ່ໄດ້ໃຊ້.', + }, + node: { + master: 'ໂນດຫຼັກ (Master)', + masterBackup: 'ສຳຮອງໂນດຫຼັກ', + backupNode: 'ໂນດສຳຮອງ', + backupFrequency: 'ຄວາມຖີ່ການສຳຮອງ (ຊົ່ວໂມງ)', + backupCopies: 'ຈຳນວນສຳເນົາທີ່ເກັບໄວ້', + noBackupNode: 'ຍັງບໍ່ມີໂນດສຳຮອງ. ກະລຸນາເລືອກໂນດສຳຮອງເພື່ອບັນທຶກ ແລະ ລອງໃໝ່!', + masterBackupAlert: 'ຍັງບໍ່ໄດ້ຕັ້ງຄ່າສຳຮອງໂນດຫຼັກ. ເພື່ອຄວາມປອດໄພຂອງຂໍ້ມູນ, ກະລຸນາຕັ້ງຄ່າໂນດສຳຮອງໂດຍໄວ.', + node: 'ໂນດ', + addr: 'ທີ່ຢູ່', + nodeUpgrade: 'ຕັ້ງຄ່າການອັບເດດ', + nodeUpgradeHelper: 'ໂນດທີ່ເລືອກຈະເລີ່ມອັບເກຣດອັດຕະໂນມັດຫຼັງຈາກໂນດຫຼັກອັບເກຣດສຳເລັດ.', + nodeUpgradePackageManage: 'ຈັດການແພັກເກັດຕິດຕັ້ງ', + nodeUpgradePackageClean: 'ລ້າງຂໍ້ມູນ', + nodeUpgradePackageFormatHelper: + 'ຮອງຮັບສະເພາະແພັກເກັດ `1panel-agent_v*_*` ຫຼື `1panel-v*-linux-*` ເທົ່ານັ້ນ', + nodeUpgradePackageHostConfirm: 'ໄຟລ໌ເຊີເວີ {0} ຈະຖືກເລືອກ. ຕ້ອງການຕໍ່ບໍ?', + nodeUpgradePackageCleanHelper: 'ແພັກເກັດອັບເດດເວີຊັນເກົ່າທັງໝົດຈະຖືກລຶບ. ຕ້ອງການຕໍ່ບໍ?', + nodeUpgradeOfflinePackageHelper: + 'ໃນສະພາບແວດລ້ອມອອບລາຍ, ໂນດທີ່ມີສະຖາປັດຕະຍະກຳຕ່າງກັນຕ້ອງອັບໂຫຼດແພັກເກັດທີ່ກົງກັນກ່ອນອັບເດດ.', + healthCheck: 'ກວດສອບສຸຂະພາບ', + healthCheckFrequency: 'ຄວາມຖີ່ການກວດສອບ', + healthCheckFrequencyHelper: 'ກວດສອບສຸຂະພາບໂນດ Backend ເປັນໄລຍະ. ປ້ອນ 0 ເພື່ອປິດການກວດສອບ.', + healthCheckFrequencyLimit: 'ຄວາມຖີ່ການກວດສອບຕ້ອງບໍ່ເກີນໜຶ່ງມື້ ແລະ ຕ້ອງເປັນຈຳນວນເຕັມທີ່ບໍ່ຕິດລົບ.', + loadFailedNodeResources: 'ໂຫຼດຊັບພະຍາກອນຂອງໂນດທີ່ລົ້ມເຫຼວ', + loadFailedNodeResourcesHelper: 'ເມື່ອເປີດລາຍຊື່ໂນດ ໃຫ້ໂຫຼດຂໍ້ມູນຊັບພະຍາກອນຂອງໂນດທີ່ລົ້ມເຫຼວນຳ.', + nodeUnhealthy: 'ສະຖານະໂນດຜິດປົກກະຕິ', + deletedNode: 'ໂນດ {0} ທີ່ຖືກລຶບໄປແລ້ວ ບໍ່ຮອງຮັບການອັບເກຣດ!', + nodeUnhealthyHelper: 'ກວດພົບສະຖານະໂນດຜິດປົກກະຕິ. ກະລຸນາກວດສອບໃນ [ຈັດການໂນດ]!', + nodeUnbind: 'ໂນດບໍ່ໄດ້ຜູກມັດກັບ License', + nodeUnbindHelper: 'ໂນດນີ້ບໍ່ໄດ້ຜູກມັດກັບ License. ກະລຸນາຜູກມັດໃນເມນູ [ຕັ້ງຄ່າພາແນລ - License]!', + memTotal: 'ໜ່ວຍຄວາມຈຳທັງໝົດ', + nodeManagement: 'ຈັດການຫຼາຍເຄື່ອງ', + multiOverview: 'ພາບລວມຫຼາຍເຄື່ອງ', + commonNodes: 'ໂນດທີ່ໃຊ້ເລື້ອຍໆ', + searchNodePlaceholder: 'ຄົ້ນຫາຊື່ໂນດ, ກຸ່ມ ຫຼື ທີ່ຢູ່', + nodeItem: 'ຈັດການໂນດ', + panelItem: 'ຈັດການພາແນລ', + addPanel: 'ເພີ່ມພາແນລ', + addPanelHelper: 'ຫຼັງຈາກເພີ່ມພາແນລສຳເລັດ, ທ່ານສາມາດເຂົ້າເຖິງພາແນລເປົ້າໝາຍໄດ້ໄວໃນ [ພາບລວມ - ພາແນລ].', + panel: 'ພາແນລ 1Panel', + others: 'ພາແນລອື່ນໆ', + addNode: 'ເພີ່ມໂນດ', + connInfo: 'ຂໍ້ມູນການເຊື່ອມຕໍ່', + nodeInfo: 'ຂໍ້ມູນໂນດ', + withProxy: 'ເປີດໃຊ້ການເຂົ້າເຖິງຜ່ານ Proxy', + withoutProxy: 'ປິດໃຊ້ການເຂົ້າເຖິງຜ່ານ Proxy', + withProxyHelper: 'ຈະໃຊ້ Proxy ລະບົບ {0} ທີ່ຕັ້ງໄວ້ເພື່ອເຂົ້າເຖິງໂນດລູກ. ຕ້ອງການຕໍ່ບໍ?', + withoutProxyHelper: 'ຈະຢຸດໃຊ້ Proxy ລະບົບເພື່ອເຂົ້າເຖິງໂນດລູກ. ຕ້ອງການຕໍ່ບໍ?', + syncInfo: 'ຊິງໂຄຣໄນ', + syncHelper: 'ເມື່ອຂໍ້ມູນໂນດຫຼັກປ່ຽນແປງ, ມັນຈະຊິງໂຄຣໄນໄປຫາໂນດລູກແບບທັນທີ', + syncBackupAccount: 'ຊິງໂຄຣໄນການຕັ້ງຄ່າບັນຊີສຳຮອງ', + syncWithMaster: 'ຫຼັງຈາກອັບເກຣດເປັນ Pro, ຂໍ້ມູນທັງໝົດຈະຖືກຊິງໂຄຣໄນຕາມຄ່າເລີ່ມຕົ້ນ.', + syncProxy: 'ຊິງໂຄຣໄນຕັ້ງຄ່າ Proxy ລະບົບ', + syncProxyHelper: 'ການຊິງໂຄຣໄນ Proxy ລະບົບຕ້ອງ Restart Docker', + syncProxyHelper1: 'ການ Restart Docker ອາດສົ່ງຜົນກະທົບຕໍ່ຄອນເທນເນີທີ່ກຳລັງທຳງານ.', + syncProxyHelper2: 'ທ່ານສາມາດ Restart ເອງໄດ້ໃນໜ້າ ຄອນເທນເນີ - ການຕັ້ງຄ່າ.', + syncProxyHelper3: 'ຕ້ອງ Restart Docker ເພື່ອຊິງໂຄຣໄນ Proxy, ອາດສົ່ງຜົນກະທົບຕໍ່ບໍລິການ', + syncProxyHelper4: 'ຕ້ອງ Restart Docker ເພື່ອຊິງໂຄຣໄນ Proxy. ທ່ານສາມາດ Restart ເອງພາຍຫຼັງໄດ້.', + syncCustomApp: 'ຊິງໂຄຣໄນຄັງແອັບກຳນົດເອງ', + syncAlertSetting: 'ຊິງໂຄຣໄນຕັ້ງຄ່າແຈ້ງເຕືອນລະບົບ', + syncNodeInfo: 'ຂໍ້ມູນພື້ນຖານຂອງໂນດ,', + nodeSyncHelper: 'ການຊິງໂຄຣໄນຂໍ້ມູນໂນດຈະລວມມີຂໍ້ມູນຕໍ່ໄປນີ້:', + nodeSyncHelper1: '1. ຂໍ້ມູນບັນຊີສຳຮອງສາທາລະນະ', + nodeSyncHelper2: '2. ຂໍ້ມູນການເຊື່ອມຕໍ່ລະຫວ່າງໂນດຫຼັກ ແລະ ໂນດລູກ', + nodeCheck: 'ກວດສອບຄວາມພ້ອມໃຊ້ງານ', + checkSSH: 'ກວດສອບການເຊື່ອມຕໍ່ SSH', + checkUserPermission: 'ກວດສອບສິດຜູ້ໃຊ້', + isNotRoot: 'ກວດພົບວ່າບໍ່ຮອງຮັບ sudo ແບບບໍ່ໃຊ້ລະຫັດຜ່ານ ແລະ ຜູ້ໃຊ້ບໍ່ແມ່ນ root', + checkLicense: 'ກວດສອບສະຖານະ License', + checkService: 'ກວດສອບຂໍ້ມູນບໍລິການທີ່ມີຢູ່ໃນໂນດ', + checkPort: 'ກວດສອບການເຂົ້າເຖິງພອດ', + panelExist: 'ກວດພົບວ່າໂນດນີ້ກຳລັງໃຊ້ 1Panel V1. ກະລຸນາອັບເກຣດເປັນ V2 ຜ່ານສະຄຣິບຍ້າຍຂໍ້ມູນກ່ອນ.', + coreExist: 'ໂນດນີ້ຖືກຕັ້ງເປັນໂນດຫຼັກແລ້ວ ບໍ່ສາມາດເພີ່ມເປັນໂນດລູກໄດ້ໂດຍກົງ.', + agentExist: + 'ກວດພົບວ່າ 1panel-agent ຖືກຕິດຕັ້ງແລ້ວ. ການດຳເນີນການຕໍ່ຈະເກັບຂໍ້ມູນເດີມໄວ້ ແລະ ປ່ຽນສະເພາະບໍລິການ agent.', + agentNotExist: 'ບໍ່ພົບ 1panel-agent ໃນໂນດນີ້, ບໍ່ສາມາດແກ້ໄຂຂໍ້ມູນໄດ້ໂດຍກົງ. ກະລຸນາລຶບ ແລະ ເພີ່ມໃໝ່.', + oldDataExist: 'ກວດພົບຂໍ້ມູນ 1Panel V2 ເກົ່າໃນໂນດນີ້. ຂໍ້ມູນຕໍ່ໄປນີ້ຈະຖືກໃຊ້ເພື່ອທັບການຕັ້ງຄ່າປັດຈຸບັນ:', + errLicense: 'License ທີ່ຜູກມັດກັບໂນດນີ້ໃຊ້ງານບໍ່ໄດ້!', + errNodePort: 'ພອດໂນດ [ {0} ] ເຂົ້າເຖິງບໍ່ໄດ້. ກະລຸນາກວດສອບໄຟວໍ ຫຼື Security Group.', + reinstallHelper: 'ຕິດຕັ້ງໂນດ {0} ໃໝ່, ຕ້ອງການຕໍ່ບໍ?', + unhealthyCheck: 'ກວດສອບຄວາມຜິດປົກກະຕິ', + fixOperation: 'ການແກ້ໄຂ', + checkName: 'ລາຍການກວດສອບ', + checkSSHConn: 'ກວດສອບການເຊື່ອມຕໍ່ SSH', + fixSSHConn: 'ແກ້ໄຂຂໍ້ມູນການເຊື່ອມຕໍ່ໂນດດ້ວຍຕົນເອງ', + checkConnInfo: 'ກວດສອບຂໍ້ມູນການເຊື່ອມຕໍ່ Agent', + checkStatus: 'ກວດສອບຄວາມພ້ອມຂອງບໍລິການໂນດ', + fixStatus: 'ລັນ "systemctl status 1panel-agent.service" ເພື່ອກວດສອບການທຳງານ.', + checkAPI: 'ກວດສອບ API ຂອງໂນດ', + fixAPI: 'ກວດສອບ Log ຂອງໂນດ ແລະ ພອດໄຟວໍ.', + forceDelete: 'ບັງຄັບລຶບ', + operateHelper: 'ໂນດຕໍ່ໄປນີ້ຈະຖືກ {0}, ຕ້ອງການຕໍ່ບໍ?', + operatePanelHelper: 'ພາແນລຕໍ່ໄປນີ້ຈະຖືກ {0}, ຕ້ອງການຕໍ່ບໍ?', + forceDeleteHelper: 'ການບັງຄັບລຶບຈະບໍ່ສົນໃຈຂໍ້ຜິດພາດ ແລະ ລຶບຂໍ້ມູນໃນຖານຂໍ້ມູນຖາວອນ', + uninstall: 'ລຶບຂໍ້ມູນໂນດ', + uninstallHelper: 'ນີ້ຈະລຶບຂໍ້ມູນທັງໝົດທີ່ກ່ຽວຂ້ອງກັບ 1Panel ໃນໂນດນີ້. ກະລຸນາລະມັດລະວັງ!', + baseDir: 'ໄດເຣັກທໍຣີຕິດຕັ້ງ', + baseDirHelper: 'ຫາກຫວ່າງໄວ້, ຈະຕິດຕັ້ງໃນ /opt ໂດຍອັດຕະໂນມັດ', + nodePort: 'ພອດໂນດ', + offline: 'ໂໝດອອບລາຍ', + freeCount: 'ໂຄຕ້າຟຣີ [{0}]', + offlineHelper: 'ໃຊ້ເມື່ອໂນດຢູ່ໃນສະພາບແວດລ້ອມທີ່ບໍ່ມີອິນເຕີເນັດ', + appUpgrade: 'ອັບເກຣດແອັບ', + appUpgradeHelper: 'ມີ {0} ແອັບທີ່ຕ້ອງອັບເກຣດ', + dashboardSetting: 'ຕັ້ງຄ່າພາບລວມ', + keepOneDashboardComponent: 'ຕ້ອງເກັບໄວ້ຢ່າງໜ້ອຍໜຶ່ງສ່ວນໃນໜ້າພາບລວມ', + }, + customApp: { + name: 'ຄັງແອັບກຳນົດເອງ', + appStoreType: 'ແຫຼ່ງແພັກເກັດແອັບສະໂຕຣ', + appStoreUrl: 'URL ຂອງຄັງເກັບ', + local: 'ທີ່ຢູ່ພາຍໃນເຄື່ອງ', + remote: 'ລິ້ງທາງໄກ', + imagePrefix: 'Image Prefix', + imagePrefixHelper: + 'ຟັງຊັນ: ກຳນົດ Prefix ຂອງ Image ເອງ. ຕົວຢ່າງ: ຫາກຕັ້ງເປັນ 1panel/custom, image ຂອງ MaxKB ຈະປ່ຽນເປັນ 1panel/custom/maxkb:v1.10.0', + closeHelper: 'ຍົກເລີກການໃຊ້ຄັງແອັບກຳນົດເອງ', + appStoreUrlHelper: 'ຮອງຮັບສະເພາະຮູບແບບ .tar.gz', + postNode: 'ຊິງໂຄຣໄນໄປຫາໂນດລູກ', + postNodeHelper: 'ຊິງໂຄຣໄນແພັກເກັດໄປຫາ tmp/customApp/apps.tar.gz ໃນໂນດລູກ', + nodes: 'ໂນດ', + selectNode: 'ເລືອກໂນດ', + selectNodeError: 'ກະລຸນາເລືອກໂນດ', + licenseHelper: 'ເວີຊັນ Pro ຮອງຮັບຟີເຈີຄັງແອັບພລິເຄຊັນກຳນົດເອງ', + databaseHelper: 'ຖານຂໍ້ມູນທີ່ກ່ຽວຂ້ອງ, ເລືອກຖານຂໍ້ມູນໂນດເປົ້າໝາຍ', + nodeHelper: 'ບໍ່ສາມາດເລືອກໂນດປັດຈຸບັນໄດ້', + migrateHelper: + 'ປັດຈຸບັນຮອງຮັບການຍ້າຍສະເພາະແອັບແບບ Monolithic ແລະ ແອັບທີ່ເຊື່ອມກັບ MySQL, MariaDB, PostgreSQL ເທົັ້ນັ້ນ', + opensslHelper: 'ຫາກໃຊ້ການສຳຮອງແບບເຂົ້າລະຫັດ, ເວີຊັນ OpenSSL ຂອງທັງສອງໂນດຕ້ອງກົງກັນ.', + installApp: 'ຕິດຕັ້ງແບບກຸ່ມ', + installAppHelper: 'ຕິດຕັ້ງແອັບໃຫ້ໂນດທີ່ເລືອກແບບກຸ່ມ', + }, + alert: { + isAlert: 'ແຈ້ງເຕືອນ', + alertCount: 'ຈຳນວນແຈ້ງເຕືອນ', + clamHelper: 'ແຈ້ງເຕືອນເມື່ອສະແກນພົບໄຟລ໌ຕິດໄວຣັສ', + cronJobHelper: 'ແຈ້ງເຕືອນເມື່ອງານທີ່ຕັ້ງເວລາທຳງານລົ້ມເຫຼວ', + licenseHelper: 'ເວີຊັນ Commercial ຮອງຮັບຊ່ອງທາງການແຈ້ງເຕືອນເພີ່ມເຕີມ', + alertCountHelper: 'ຄວາມຖີ່ການແຈ້ງເຕືອນສູງສຸດຕໍ່ມື້', + alert: 'ແຈ້ງເຕືອນ SMS', + logs: 'ບັນທຶກການແຈ້ງເຕືອນ', + list: 'ລາຍຊື່ການແຈ້ງເຕືອນ', + addTask: 'ສ້າງການແຈ້ງເຕືອນ', + editTask: 'ແກ້ໄຂການແຈ້ງເຕືອນ', + alertMethod: 'ວິທີການ', + alertMsg: 'ຂໍ້ຄວາມແຈ້ງເຕືອນ', + alertRule: 'ກົດເກນການແຈ້ງເຕືອນ', + titleSearchHelper: 'ປ້ອນຊື່ການແຈ້ງເຕືອນເພື່ອຄົ້ນຫາ', + taskType: 'ປະເພດ', + ssl: 'ໃບຢັ້ງຢືນໝົດອາຍຸ', + siteEndTime: 'ເວັບໄຊໝົດອາຍຸ', + panelPwdEndTime: 'ລະຫັດຜ່ານພາແນລໝົດອາຍຸ', + panelUpdate: 'ມີພາແນລເວີຊັນໃໝ່', + cpu: 'ແຈ້ງເຕືອນ CPU ເຊີເວີ', + memory: 'ແຈ້ງເຕືອນ Memory ເຊີເວີ', + load: 'ແຈ້ງເຕືອນ Load ເຊີເວີ', + disk: 'ແຈ້ງເຕືອນ Disk ເຊີເວີ', + website: 'ເວັບໄຊ', + certificate: 'ໃບຢັ້ງຢືນ SSL', + remainingDays: 'ມື້ທີ່ເຫຼືອ', + sendCount: 'ຈຳນວນການສົ່ງ', + sms: 'SMS', + wechat: 'WeChat', + dingTalk: 'DingTalk', + feiShu: 'FeiShu', + mail: 'ອີເມລ', + email: 'ອີເມລ', + weCom: 'WeCom', + bark: 'Bark', + sendCountRulesHelper: 'ຈຳນວນແຈ້ງເຕືອນທັງໝົດກ່ອນໝົດອາຍຸ (ມື້ລະຄັ້ງ)', + panelUpdateRulesHelper: 'ຈຳນວນແຈ້ງເຕືອນສຳລັບເວີຊັນໃໝ່ (ມື້ລະຄັ້ງ)', + oneDaySendCountRulesHelper: 'ຈຳນວນແຈ້ງເຕືອນສູງສຸດຕໍ່ມື້', + siteEndTimeRulesHelper: 'ເວັບໄຊທີ່ບໍ່ມີວັນໝົດອາຍຸຈະບໍ່ມີການແຈ້ງເຕືອນ', + autoRenewRulesHelper: 'ໃບຢັ້ງຢືນທີ່ເປີດຕໍ່ອາຍຸອັດຕະໂນມັດ ແລະ ເຫຼືອຫຼາຍກວ່າ 31 ວັນ ຈະບໍ່ແຈ້ງເຕືອນ', + panelPwdEndTimeRulesHelper: 'ຫາກບໍ່ໄດ້ຕັ້ງວັນໝົດອາຍຸລະຫັດຜ່ານ ຈະບໍ່ມີການແຈ້ງເຕືອນ', + sslRulesHelper: 'ໃບຢັ້ງຢືນ SSL ທັງໝົດ', + diskInfo: 'ດິສກ໌', + monitoringType: 'ປະເພດການຕິດຕາມ', + autoRenew: 'ຕໍ່ອາຍຸອັດຕະໂນມັດ', + useDisk: 'ການໃຊ້ງານດິສກ໌', + usePercentage: 'ເປີເຊັນການໃຊ້ງານ', + changeStatus: 'ປ່ຽນສະຖານະ', + disableMsg: 'ການຢຸດງານແຈ້ງເຕືອນຈະເຮັດໃຫ້ລະບົບບໍ່ສົ່ງຂໍ້ຄວາມ. ຕ້ອງການຕໍ່ບໍ?', + enableMsg: 'ການເປີດງານແຈ້ງເຕືອນຈະເຮັດໃຫ້ລະບົບສົ່ງຂໍ້ຄວາມ. ຕ້ອງການຕໍ່ບໍ?', + useExceed: 'ການໃຊ້ງານເກີນ', + useExceedRulesHelper: 'ແຈ້ງເຕືອນເມື່ອການໃຊ້ງານເກີນຄ່າທີ່ກຳນົດ', + cpuUseExceedAvg: 'ຄ່າສະເລ່ຍການໃຊ້ CPU ເກີນກຳນົດ', + memoryUseExceedAvg: 'ຄ່າສະເລ່ຍການໃຊ້ Memory ເກີນກຳນົດ', + loadUseExceedAvg: 'ຄ່າສະເລ່ຍ Load ເກີນກຳນົດ', + cpuUseExceedAvgHelper: 'ການໃຊ້ CPU ສະເລ່ຍໃນເວລາທີ່ກຳນົດເກີນຄ່າ', + memoryUseExceedAvgHelper: 'ການໃຊ້ Memory ສະເລ່ຍໃນເວລາທີ່ກຳນົດເກີນຄ່າ', + loadUseExceedAvgHelper: 'ຄ່າ Load ສະເລ່ຍໃນເວລາທີ່ກຳນົດເກີນຄ່າ', + resourceAlertRulesHelper: 'ໝາຍເຫດ: ການແຈ້ງເຕືອນຕໍ່ເນື່ອງໃນ 30 ນາທີ ຈະສົ່ງພຽງຄັ້ງດຽວ', + specifiedTime: 'ເວລາທີ່ກຳນົດ', + deleteTitle: 'ລຶບການແຈ້ງເຕືອນ', + deleteMsg: 'ເຈົ້າແນ່ໃຈບໍວ່າຕ້ອງການລຶບງານແຈ້ງເຕືອນນີ້?', + allSslTitle: 'ແຈ້ງເຕືອນໃບຢັ້ງຢືນ SSL ເວັບໄຊທັງໝົດໝົດອາຍຸ', + sslTitle: 'ແຈ້ງເຕືອນໃບຢັ້ງຢືນ SSL ເວັບໄຊ {0} ໝົດອາຍຸ', + allSiteEndTimeTitle: 'ແຈ້ງເຕືອນເວັບໄຊທັງໝົດໝົດອາຍຸ', + siteEndTimeTitle: 'ແຈ້ງເຕືອນເວັບໄຊ {0} ໝົດອາຍຸ', + panelPwdEndTimeTitle: 'ແຈ້ງເຕືອນລະຫັດຜ່ານພາແນລໝົດອາຍຸ', + panelUpdateTitle: 'ແຈ້ງເຕືອນພາແນລເວີຊັນໃໝ່', + cpuTitle: 'ແຈ້ງເຕືອນການໃຊ້ CPU ສູງ', + memoryTitle: 'ແຈ້ງເຕືອນການໃຊ້ Memory ສູງ', + loadTitle: 'ແຈ້ງເຕືອນ Load ສູງ', + diskTitle: 'ແຈ້ງເຕືອນການໃຊ້ Disk ສູງສຳລັບໄດເຣັກທໍຣີ {0}', + allDiskTitle: 'ແຈ້ງເຕືອນການໃຊ້ Disk ສູງ', + timeRule: 'ເວລາເຫຼືອໜ້ອຍກວ່າ {0} ວັນ (ຫາກບໍ່ຈັດການ ຈະສົ່ງໃໝ່ໃນມື້ຖັດໄປ)', + panelUpdateRule: 'ສົ່ງແຈ້ງເຕືອນຄັ້ງດຽວເມື່ອພົບເວີຊັນໃໝ່ (ຫາກບໍ່ຈັດການ ຈະສົ່ງໃໝ່ໃນມື້ຖັດໄປ)', + avgRule: 'ການໃຊ້ງານ {1} ສະເລ່ຍເກີນ {2}% ພາຍໃນ {0} ນາທີ, ສົ່ງ {3} ຄັ້ງຕໍ່ມື້', + diskRule: 'ການໃຊ້ Disk ສຳລັບ {0} ເກີນ {1}{2}, ສົ່ງ {3} ຄັ້ງຕໍ່ມື້', + allDiskRule: 'ການໃຊ້ Disk ເກີນ {0}{1}, ສົ່ງ {2} ຄັ້ງຕໍ່ມື້', + cpuName: ' CPU ', + memoryName: 'Memory', + loadName: 'Load', + diskName: 'Disk', + syncAlertInfo: 'ສົ່ງແຈ້ງເຕືອນເອງ', + syncAlertInfoMsg: 'ຕ້ອງການສົ່ງການແຈ້ງເຕືອນນີ້ດ້ວຍຕົນເອງບໍ?', + pushError: 'ສົ່ງບໍ່ສຳເລັດ', + pushSuccess: 'ສົ່ງສຳເລັດ', + syncError: 'ຊິງໂຄຣໄນບໍ່ສຳເລັດ', + success: 'ແຈ້ງເຕືອນສຳເລັດ', + pushing: 'ກຳລັງສົ່ງ...', + error: 'ແຈ້ງເຕືອນລົ້ມເຫຼວ', + cleanLog: 'ລ້າງບັນທຶກ', + cleanAlertLogs: 'ລ້າງບັນທຶກການແຈ້ງເຕືອນ', + daily: 'ແຈ້ງເຕືອນມື້ນີ້: {0}', + cumulative: 'ແຈ້ງເຕືອນສະສົມ: {0}', + clams: 'ແຈ້ງເຕືອນສະແກນໄວຣັສ', + taskName: 'ຊື່ງານ', + cronJobType: 'ປະເພດງານ', + clamPath: 'ໄດເຣັກທໍຣີທີ່ສະແກນ', + cronjob: 'ງານ Cronjob {0} ລົ້ມເຫຼວ', + app: 'ສຳຮອງແອັບ', + web: 'ສຳຮອງເວັບໄຊ', + database: 'ສຳຮອງຖານຂໍ້ມູນ', + directory: 'ສຳຮອງໄດເຣັກທໍຣີ', + log: 'ສຳຮອງບັນທຶກ (Log)', + snapshot: 'System Snapshot', + clamsRulesHelper: 'ງານສະແກນໄວຣັສທີ່ຕ້ອງການແຈ້ງເຕືອນ', + cronJobRulesHelper: 'ຕ້ອງຕັ້ງຄ່າງານ Cronjob ປະເພດນີ້', + clamsTitle: 'ງານສະແກນໄວຣັສ 「 {0} 」 ກວດພົບໄຟລ໌ອັນຕະລາຍ', + cronJobAppTitle: 'ແຈ້ງເຕືອນງານສຳຮອງແອັບ 「 {0} 」 ລົ້ມເຫຼວ', + cronJobWebsiteTitle: 'ແຈ້ງເຕືອນງານສຳຮອງເວັບໄຊ 「 {0} 」 ລົ້ມເຫຼວ', + cronJobDatabaseTitle: 'ແຈ້ງເຕືອນງານສຳຮອງຖານຂໍ້ມູນ 「 {0} 」 ລົ້ມເຫຼວ', + cronJobDirectoryTitle: 'ແຈ້ງເຕືອນງານສຳຮອງໄດເຣັກທໍຣີ 「 {0} 」 ລົ້ມເຫຼວ', + cronJobLogTitle: 'ແຈ້ງເຕືອນງານສຳຮອງ Log 「 {0} 」 ລົ້ມເຫຼວ', + cronJobSnapshotTitle: 'ແຈ້ງເຕືອນງານສຳຮອງ Snapshot 「 {0} 」 ລົ້ມເຫຼວ', + cronJobShellTitle: 'ແຈ້ງເຕືອນງານ Shell script 「 {0} 」 ລົ້ມເຫຼວ', + cronJobCurlTitle: 'ແຈ້ງເຕືອນງານເຂົ້າເຖິງ URL 「 {0} 」 ລົ້ມເຫຼວ', + cronJobCutWebsiteLogTitle: 'ແຈ້ງເຕືອນງານຕັດ Log ເວັບໄຊ 「 {0} 」 ລົ້ມເຫຼວ', + cronJobCleanTitle: 'ແຈ້ງເຕືອນງານລ້າງ Cache 「 {0} 」 ລົ້ມເຫຼວ', + cronJobNtpTitle: 'ແຈ້ງເຕືອນງານຊິງໂຄຣໄນເວລາເຊີເວີ 「 {0} 」 ລົ້ມເຫຼວ', + clamsRule: 'ແຈ້ງເຕືອນພົບໄວຣັສ,ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', + cronJobAppRule: 'ແຈ້ງເຕືອນສຳຮອງແອັບລົ້ມເຫຼວ,ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', + cronJobWebsiteRule: 'ແຈ້ງເຕືອນສຳຮອງເວັບໄຊລົ້ມເຫຼວ,ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', + cronJobDatabaseRule: 'ແຈ້ງເຕືອນສຳຮອງຖານຂໍ້ມູນລົ້ມເຫຼວ,ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', + cronJobDirectoryRule: 'ແຈ້ງເຕືອນສຳຮອງໄດເຣັກທໍຣີລົ້ມເຫຼວ,ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', + cronJobLogRule: 'ແຈ້ງເຕືອນສຳຮອງ Log ລົ້ມເຫຼວ,ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', + cronJobSnapshotRule: 'ແຈ້ງເຕືອນສຳຮອງ Snapshot ລົ້ມເຫຼວ,ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', + cronJobShellRule: 'ແຈ້ງເຕືອນ Shell script ລົ້ມເຫຼວ,ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', + cronJobCurlRule: 'ແຈ້ງເຕືອນເຂົ້າເຖິງ URL ລົ້ມເຫຼວ,ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', + cronJobCutWebsiteLogRule: 'ແຈ້ງເຕືອນຕັດ Log ເວັບໄຊລົ້ມເຫຼວ,ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', + cronJobCleanRule: 'ແຈ້ງເຕືອນລ້າງ Cache ລົ້ມເຫຼວ,ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', + cronJobNtpRule: 'ແຈ້ງເຕືອນຊິງໂຄຣໄນເວລາລົ້ມເຫຼວ,ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', + alertSmsHelper: 'ຂໍ້ຈຳກັດ SMS: ທັງໝົດ {0} ຂໍ້ຄວາມ, ໃຊ້ໄປແລ້ວ {1}', + goBuy: 'ຊື້ເພີ່ມ', + phone: 'ເບີໂທລະສັບ', + phoneHelper: 'ປ້ອນເບີໂທລະສັບທີ່ແທ້ຈິງເພື່ອຮັບແຈ້ງເຕືອນ', + dailyAlertNum: 'ຂີດຈຳກັດແຈ້ງເຕືອນຕໍ່ມື້', + dailyAlertNumHelper: 'ຈຳນວນແຈ້ງເຕືອນສູງສຸດຕໍ່ມື້ (ບໍ່ເກີນ 100)', + timeRange: 'ຊ່ວງເວລາ', + sendTimeRange: 'ຊ່ວງເວລາສົ່ງ', + sendTimeRangeHelper: 'ສາມາດສົ່ງໄດ້ໃນຊ່ວງເວລາ {0}', + to: 'ຫາ', + startTime: 'ເວລາເລີ່ມຕົ້ນ', + endTime: 'ເວລາສິ້ນສຸດ', + defaultPhone: 'ເລີ່ມຕົ້ນເປັນເບີໂທລະສັບທີ່ຜູກກັບ License', + noticeAlert: 'ແຈ້ງເຕືອນທົ່ວໄປ', + resourceAlert: 'ແຈ້ງເຕືອນຊັບພະຍາກອນ', + agentOfflineAlertHelper: 'ເມື່ອເປີດແຈ້ງເຕືອນອອບລາຍ, ໂນດຫຼັກຈະສະແກນທຸກໆ 30 ນາທີ.', + offline: 'ແຈ້ງເຕືອນອອບລາຍ', + offlineHelper: 'ເມື່ອຕັ້ງເປັນແຈ້ງເຕືອນອອບລາຍ, ໂນດຫຼັກຈະສະແກນທຸກໆ 30 ນາທີ.', + offlineOff: 'ເປີດແຈ້ງເຕືອນອອບລາຍ', + offlineOffHelper: 'ການເປີດແຈ້ງເຕືອນອອບລາຍຈະເຮັດໃຫ້ໂນດຫຼັກສະແກນທຸກໆ 30 ນາທີ.', + offlineClose: 'ປິດແຈ້ງເຕືອນອອບລາຍ', + offlineCloseHelper: 'ການປິດແຈ້ງເຕືອນອອບລາຍຈະເຮັດໃຫ້ໂນດລູກຕ້ອງຈັດການການແຈ້ງເຕືອນເອງ.', + alertNotice: 'ການແຈ້ງເຕືອນ', + methodConfig: 'ຕັ້ງຄ່າວິທີການແຈ້ງເຕືອນ', + createMethod: 'ສ້າງວິທີການແຈ້ງເຕືອນ', + methodInvalid: 'ການຕັ້ງຄ່າ {0} ບໍ່ຖືກຕ້ອງ', + commonConfig: 'ການຕັ້ງຄ່າທົ່ວໄປ', + smsConfig: 'SMS', + smsConfigHelper: 'ຕັ້ງຄ່າເບີໂທລະສັບສຳລັບ SMS', + emailConfig: 'ອີເມລ', + emailConfigHelper: 'ຕັ້ງຄ່າບໍລິການສົ່ງອີເມລ SMTP', + deleteConfigTitle: 'ລຶບການຕັ້ງຄ່າແຈ້ງເຕືອນ', + deleteConfigMsg: 'ເຈົ້າແນ່ໃຈບໍວ່າຕ້ອງການລຶບການຕັ້ງຄ່າແຈ້ງເຕືອນນີ້?', + test: 'ທົດສອບ', + alertTestOk: 'ທົດສອບການແຈ້ງເຕືອນສຳເລັດ', + alertTestFailed: 'ທົດສອບການແຈ້ງເຕືອນລົ້ມເຫຼວ', + displayName: 'ຊື່ສະແດງ', + sender: 'ຜູ້ສົ່ງ', + password: 'ລະຫັດຜ່ານ', + host: 'ເຊີເວີ SMTP', + port: 'ພອດ', + encryption: 'ການເຂົ້າລະຫັດ', + recipient: 'ຜູ້ຮັບ', + licenseTime: 'ແຈ້ງເຕືອນ License ໝົດອາຍຸ', + licenseTimeTitle: 'ແຈ້ງເຕືອນ License ໝົດອາຍຸ', + displayNameHelper: 'ຊື່ຜູ້ສົ່ງທີ່ຈະສະແດງໃນອີເມລ', + senderHelper: 'ທີ່ຢູ່ອີເມລທີ່ໃຊ້ສົ່ງຂໍ້ຄວາມ', + passwordHelper: 'ລະຫັດຜ່ານ ຫຼື Authorization code ຂອງອີເມລ', + hostHelper: 'ທີ່ຢູ່ເຊີເວີ SMTP, ເຊັ່ນ: smtp.qq.com', + portHelper: 'SSL ມັກຈະໃຊ້ 465, TLS ມັກຈະໃຊ້ 587', + sslHelper: 'ຫາກພອດແມ່ນ 465, ມັກຈະຕ້ອງໃຊ້ SSL', + tlsHelper: 'ຫາກພອດແມ່ນ 587, ມັກຈະຕ້ອງໃຊ້ TLS', + triggerCondition: 'ເງື່ອນໄຂການເຮັດວຽກ', + loginFail: ' ລັອກອິນລົ້ມເຫຼວພາຍໃນ', + nodeException: 'ແຈ້ງເຕືອນໂນດຜິດປົກກະຕິ', + licenseException: 'ແຈ້ງເຕືອນ License ຜິດປົກກະຕິ', + panelLogin: 'ແຈ້ງເຕືອນການລັອກອິນພາແນລຜິດປົກກະຕິ', + sshLogin: 'ແຈ້ງເຕືອນການລັອກອິນ SSH ຜິດປົກກະຕິ', + panelIpLogin: 'ແຈ້ງເຕືອນ IP ລັອກອິນພາແນລຜິດປົກກະຕິ', + sshIpLogin: 'ແຈ້ງເຕືອນ IP ລັອກອິນ SSH ຜິດປົກກະຕິ', + ipWhiteListHelper: 'IP ໃນ Whitelist ຈະບໍ່ຖືກຈຳກັດ ແລະ ຈະບໍ່ມີການແຈ້ງເຕືອນເມື່ອລັອກອິນສຳເລັດ', + nodeExceptionRule: 'ແຈ້ງເຕືອນໂນດຜິດປົກກະຕິ, ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', + licenseExceptionRule: 'ແຈ້ງເຕືອນ License ຜິດປົກກະຕິ, ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', + panelLoginRule: 'ແຈ້ງເຕືອນການລັອກອິນພາແນລ, ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', + sshLoginRule: 'ແຈ້ງເຕືອນການລັອກອິນ SSH, ສົ່ງ {0} ຄັ້ງຕໍ່ມື້', + userNameHelper: 'ຫາກຊື່ຜູ້ໃຊ້ຫວ່າງ, ຈະໃຊ້ທີ່ຢູ່ຜູ້ສົ່ງເປັນຄ່າເລີ່ມຕົ້ນ', + alertConfigHelper: 'ຕັ້ງຄ່າຊ່ອງທາງການແຈ້ງເຕືອນເພື່ອຮັບຂໍ້ມູນຈາກພາແນລ', + weComConfigHelper: 'ຕັ້ງຄ່າການແຈ້ງເຕືອນ WeCom', + barkConfigHelper: 'ຕັ້ງຄ່າການແຈ້ງເຕືອນ Bark', + wechatConfigHelper: 'ຕັ້ງຄ່າການແຈ້ງເຕືອນ WeChat Official Account', + dingTalkConfigHelper: 'ຕັ້ງຄ່າການແຈ້ງເຕືອນ DingTalk', + feiShuConfigHelper: 'ຕັ້ງຄ່າການແຈ້ງເຕືອນ Feishu', + webhookName: 'ຊື່ບັອດ', + webhookUrl: 'Webhook URL', + alertConfigProHelper: 'ເວີຊັນ Commercial ຮອງຮັບ WeCom, DingTalk, Feishu ແລະ SMS.', + recipientPlaceholder: 'ກະລຸນາປ້ອນທີ່ຢູ່ອີເມລຜູ້ຮັບ', + addRecipient: 'ເພີ່ມຜູ້ຮັບ', + webhookItem: 'Webhook', + addWebhook: 'ເພີ່ມ Webhook', + selectAlertType: 'ເລືອກປະເພດການແຈ້ງເຕືອນ', + configDetail: 'ລາຍລະອຽດການຕັ້ງຄ່າ', + webhookCount: ' Webhook', + }, + theme: { + lingXiaGold: 'LXware Gold', + classicBlue: 'Classic Blue', + freshGreen: 'Fresh Green', + customColor: 'ສີກຳນົດເອງ', + setDefault: 'ເລີ່ມຕົ້ນ', + setDefaultHelper: 'ຊຸດສີທີມຈະຖືກຄືນຄ່າເປັນເລີ່ມຕົ້ນ. ຕ້ອງການຕໍ່ບໍ?', + setHelper: 'ຊຸດສີທີມທີ່ເລືອກຈະຖືກບັນທຶກ. ຕ້ອງການຕໍ່ບໍ?', + }, + sync: { + menu: 'ຊິງໂຄຣໄນຊັບພະຍາກອນ', + file: 'ແລກປ່ຽນໄຟລ໌', + fileSyncConfirm: 'ເຈົ້າຕ້ອງການໂອນໄຟລ໌/ໂຟນເດີ {1} ຈາກໂນດ {0} ໄປຫາ {3} ໃນໂນດ {2} ບໍ?', + image: 'ແລກປ່ຽນ Image', + imageBatchDesc: 'ເລືອກໂນດຕົ້ນທາງ ແລະ Image ກ່ອນ, ຈາກນັ້ນໂອນແບບກຸ່ມໄປຫາຫຼາຍໂນດ.', + imageBatchConfirmPrefix: 'ກຳລັງຈະໂອນ {0} images ໄປຫາ {1} ໂນດ, ລວມທັງໝົດ {2} ງານ.', - cert: 'ຊິງໂຄຣໄນໃບຢັ້ງຢືນ', - certBatchDesc: - 'ເລືອກໂນດຕົ້ນທາງ ແລະ ຊິງໂຄຣໄນໃບຢັ້ງຢືນທີ່ກຳນົດເຂົ້າມາໃນພາແນລປັດຈຸບັນ.', - certBatchConfirmPrefix: 'ກຳລັງຈະຊິງໂຄຣໄນ {0} ໃບຢັ້ງຢືນ ໄປຫາ {1} ໂນດ, ລວມທັງໝົດ {2} ງານ.', + ssl: 'ຊິງໂຄຣໄນໃບຢັ້ງຢືນ', + sslBatchDesc: 'ເລືອກໂນດຕົ້ນທາງ ແລະ ຊິງໂຄຣໄນໃບຢັ້ງຢືນທີ່ກຳນົດເຂົ້າມາໃນພາແນລປັດຈຸບັນ.', + sslBatchConfirmPrefix: 'ກຳລັງຈະຊິງໂຄຣໄນ {0} ໃບຢັ້ງຢືນ ໄປຫາ {1} ໂນດ, ລວມທັງໝົດ {2} ງານ.', - app: 'ການໂອນຍ້າຍແອັບ', - appBatchDesc: - 'ເລືອກໂນດຕົ້ນທາງ, ແອັບ ແລະ ໂນດເປົ້າໝາຍ, ຈາກນັ້ນກວດສອບຊັບພະຍາກອນທີ່ກ່ຽວຂ້ອງ.', - appSelectedApp: 'ແອັບທີ່ເລືອກ:', - appPreviewTitle: 'ຕົວຢ່າງການໂອນຍ້າຍ', - appPreviewDesc: 'ກວດສອບໂນດເປົ້າໝາຍ ແລະ ຊັບພະຍາກອນທີ່ຈຳເປັນກ່ອນເລີ່ມ.', - appDatabaseDependency: 'ຖານຂໍ້ມູນທີ່ກ່ຽວຂ້ອງ', - appResourceRequired: 'ກະລຸນາເລືອກຊັບພະຍາກອນທີ່ເຊື່ອມໂຍງໃຫ້ຄົບຖ້ວນ.', - appUnsupportedMultipleResources: 'ຮອງຮັບສະເພາະແອັບທີ່ມີຊັບພະຍາກອນເຊື່ອມໂຍງບໍ່ເກີນໜຶ່ງຢ່າງ.', - appUnsupportedResourceType: - 'ຮອງຮັບສະເພາະແອັບທີ່ບໍ່ມີຊັບພະຍາກອນ ຫຼື ມີພຽງ MySQL, MariaDB, PostgreSQL ຢ່າງດຽວ.', + app: 'ການໂອນຍ້າຍແອັບ', + appBatchDesc: 'ເລືອກໂນດຕົ້ນທາງ, ແອັບ ແລະ ໂນດເປົ້າໝາຍ, ຈາກນັ້ນກວດສອບຊັບພະຍາກອນທີ່ກ່ຽວຂ້ອງ.', + appSelectedApp: 'ແອັບທີ່ເລືອກ:', + appPreviewTitle: 'ຕົວຢ່າງການໂອນຍ້າຍ', + appPreviewDesc: 'ກວດສອບໂນດເປົ້າໝາຍ ແລະ ຊັບພະຍາກອນທີ່ຈຳເປັນກ່ອນເລີ່ມ.', + appDatabaseDependency: 'ຖານຂໍ້ມູນທີ່ກ່ຽວຂ້ອງ', + appResourceRequired: 'ກະລຸນາເລືອກຊັບພະຍາກອນທີ່ເຊື່ອມໂຍງໃຫ້ຄົບຖ້ວນ.', + appUnsupportedMultipleResources: 'ຮອງຮັບສະເພາະແອັບທີ່ມີຊັບພະຍາກອນເຊື່ອມໂຍງບໍ່ເກີນໜຶ່ງຢ່າງ.', + appUnsupportedResourceType: + 'ຮອງຮັບສະເພາະແອັບທີ່ບໍ່ມີຊັບພະຍາກອນ ຫຼື ມີພຽງ MySQL, MariaDB, PostgreSQL ຢ່າງດຽວ.', - targetTitle: 'ໂນດເປົ້າໝາຍ', - targetDesc: 'ໂນດຕົ້ນທາງຈະຖືກຍົກເວັ້ນໂດຍອັດຕະໂນມັດ. ເລືອກໜຶ່ງ ຫຼື ຫຼາຍໂນດ.', - targetSearchPlaceholder: 'ຄົ້ນຫາຊື່ ຫຼື ທີ່ຢູ່ໂນດ', - noTargetNodes: 'ບໍ່ມີໂນດເປົ້າໝາຍ', - noSourceNode: 'ກະລຸນາເລືອກໂນດຕົ້ນທາງກ່ອນ', - reviewTargets: 'ໂນດເປົ້າໝາຍ', - reviewEmpty: 'ກະລຸນາເລືອກຊັບພະຍາກອນ ແລະ ໂນດເປົ້າໝາຍກ່ອນ', - selectSourceFirst: 'ກະລຸນາເລືອກໂນດຕົ້ນທາງກ່ອນ.', - selectResourceFirst: 'ກະລຸນາເລືອກຊັບພະຍາກອນທີ່ຕ້ອງການຊິງໂຄຣໄນ.', - selectTargetFirst: 'ກະລຸນາເລືອກໂນດເປົ້າໝາຍຢ່າງໜ້ອຍໜຶ່ງໂນດ.', - submitSuccess: 'ສົ່ງງານຊິງໂຄຣໄນສຳເລັດ.', - }, - cluster: { - cluster: 'ແອັບພລິເຄຊັນທຳງານຕໍ່ເນື່ອງ (HA)', - name: 'ຊື່ຄລັສເຕີ', - addCluster: 'ເພີ່ມຄລັສເຕີ', - installNode: 'ຕິດຕັ້ງໂນດ', - master: 'ໂນດຫຼັກ (Master)', - slave: 'ໂນດສຳຮອງ (Slave)', - replicaStatus: 'ສະຖານະ Master-Slave', - unhealthyDeleteError: 'ສະຖານະໂນດທີ່ຕິດຕັ້ງຜິດປົກກະຕິ. ກະລຸນາກວດສອບລາຍຊື່ໂນດ!', - replicaStatusError: 'ການດຶງສະຖານະຜິດປົກກະຕິ. ກະລຸນາກວດສອບໂນດຫຼັກ.', - masterHostError: 'IP ຂອງໂນດຫຼັກຫ້າມເປັນ 127.0.0.1', + targetTitle: 'ໂນດເປົ້າໝາຍ', + targetDesc: 'ໂນດຕົ້ນທາງຈະຖືກຍົກເວັ້ນໂດຍອັດຕະໂນມັດ. ເລືອກໜຶ່ງ ຫຼື ຫຼາຍໂນດ.', + targetSearchPlaceholder: 'ຄົ້ນຫາຊື່ ຫຼື ທີ່ຢູ່ໂນດ', + noTargetNodes: 'ບໍ່ມີໂນດເປົ້າໝາຍ', + noSourceNode: 'ກະລຸນາເລືອກໂນດຕົ້ນທາງກ່ອນ', + reviewTargets: 'ໂນດເປົ້າໝາຍ', + reviewEmpty: 'ກະລຸນາເລືອກຊັບພະຍາກອນ ແລະ ໂນດເປົ້າໝາຍກ່ອນ', + selectSourceFirst: 'ກະລຸນາເລືອກໂນດຕົ້ນທາງກ່ອນ.', + selectResourceFirst: 'ກະລຸນາເລືອກຊັບພະຍາກອນທີ່ຕ້ອງການຊິງໂຄຣໄນ.', + selectTargetFirst: 'ກະລຸນາເລືອກໂນດເປົ້າໝາຍຢ່າງໜ້ອຍໜຶ່ງໂນດ.', + submitSuccess: 'ສົ່ງງານຊິງໂຄຣໄນສຳເລັດ.', + }, + vm: { + vm: 'VM', + title: 'ເຄື່ອງສະເໝືອນ', + overview: 'ພາບລວມ', + dependencies: 'ສິ່ງຂຶ້ນກັບ', + dependencyPurpose: 'ຈຸດປະສົງ', + dependencyPurposeMap: { + libvirt: 'ໃຫ້ບໍລິການຈັດການ VM ສຳລັບຄວບຄຸມວົງຈອນຊີວິດ ແລະ ຈັດສັນຊັບພະຍາກອນ.', + storage: 'ສະໜອງໄດເຣັກທໍຣີ ຫຼື Storage Pool ເລີ່ມຕົ້ນສຳລັບໄຟລ໌ດິສກ໌ຂອງ VM.', + }, + dependencyNotReady: 'ການກວດສອບສິ່ງຂຶ້ນກັບຂອງ VM ລົ້ມເຫຼວ. ກະລຸນາແກ້ໄຂກ່ອນໃຊ້ເຄື່ອງສະເໝືອນ.', + helperUnavailable: 'ເລີ່ມຕົ້ນຄວາມສາມາດ VM ລົ້ມເຫຼວ. ກວດສອບ Core Log ຫຼື ອັບເກຣດອີກຄັ້ງກ່ອນໃຊ້ VM.', + kvmUnavailable: 'ບໍ່ພົບຄວາມສາມາດ Hardware Virtualization ຂອງ KVM ທີ່ໃຊ້ງານໄດ້.', + kvmCheckCpu: 'ຢືນຢັນວ່າ CPU ຂອງ Host ຮອງຮັບ Intel VT-x ຫຼື AMD-V Virtualization.', + kvmCheckBios: 'ເປີດຕົວເລືອກ Virtualization ໃນ BIOS/UEFI.', + kvmCheckModule: 'ຢືນຢັນວ່າໂມດູນ Kernel kvm, kvm_intel ຫຼື kvm_amd ຖືກໂຫຼດຢ່າງຖືກຕ້ອງ.', + kvmCheckDevice: + 'ຢືນຢັນວ່າ /dev/kvm ມີຢູ່ ແລະ ສະພາບແວດລ້ອມປັດຈຸບັນບໍ່ແມ່ນ Container ຫຼື Cloud Host ທີ່ບໍ່ຮອງຮັບ KVM.', + cpu: 'CPU', + memory: 'ໜ່ວຍຄວາມຈຳ', + disk: 'ດິສກ໌', + abnormal: 'ຜິດປົກກະຕິ', + resourceOverview: 'ພາບລວມຊັບພະຍາກອນ', + cpuAllocated: 'CPU ທີ່ຈັດສັນແລ້ວ', + memoryAllocated: 'ໜ່ວຍຄວາມຈຳທີ່ຈັດສັນແລ້ວ', + storageUsed: 'ພື້ນທີ່ຈັດເກັບທີ່ໃຊ້ແລ້ວ', + riskReminder: 'ຄຳເຕືອນຄວາມສ່ຽງ', + noRisk: 'ບໍ່ມີຄວາມສ່ຽງ', + runtimeHealth: 'ສຸຂະພາບຣັນທາມ', + runtimeAbnormal: 'ຣັນທາມຂອງ VM ຜິດປົກກະຕິ', + noDependency: 'ບໍ່ມີຂໍ້ມູນການກວດສອບສິ່ງຂຶ້ນກັບ', + storageOverview: 'ພາບລວມພື້ນທີ່ຈັດເກັບ', + totalAllocated: 'ຄຳນວນຈາກການຕັ້ງຄ່າ VM ທັງໝົດ', + runningAllocated: 'ຈັດສັນໃຫ້ທີ່ກຳລັງເຮັດວຽກ: {0}', + storageAvailable: 'ໃຊ້ໄດ້: {0}', + inProgress: 'ກຳລັງດຳເນີນການ', + needAttention: 'ຕ້ອງເອົາໃຈໃສ່', + normal: 'ປົກກະຕິ', + environmentRisk: 'ຣັນທາມ VM ຍັງບໍ່ພ້ອມ. ກະລຸນາແກ້ໄຂສິ່ງຂຶ້ນກັບ ຫຼື ບໍລິການ Virtualization.', + storageRisk: 'ການໃຊ້ Storage Pool {0} ຮອດ {1}% ແລ້ວ.', + abnormalRisk: 'ມີ VM {0} ເຄື່ອງຢູ່ໃນສະຖານະຜິດປົກກະຕິ.', + pausedRisk: 'ມີ VM {0} ເຄື່ອງຖືກຢຸດຊົ່ວຄາວ.', + memoryRisk: 'ການຈັດສັນໜ່ວຍຄວາມຈຳຂອງ VM ຮອດ {0}% ແລ້ວ.', + cpuLimitHelper: 'CPU ທີ່ໃຊ້ໄດ້ໃນປັດຈຸບັນ: {0} Core', + cpuLimitExceeded: 'CPU ເກີນຂີດຈຳກັດ. ສູງສຸດທີ່ໃຊ້ໄດ້ໃນປັດຈຸບັນ: {0} Core.', + memoryLimitHelper: 'ໜ່ວຍຄວາມຈຳທີ່ຈັດສັນໄດ້ໃນປັດຈຸບັນ: {0} (Host ຕ້ອງສຳຮອງໜ່ວຍຄວາມຈຳ {1})', + memoryLimitExceeded: 'ໜ່ວຍຄວາມຈຳເກີນຂີດຈຳກັດ. ສູງສຸດທີ່ຈັດສັນໄດ້ໃນປັດຈຸບັນ: {0}.', + storageLimitHelper: 'ພື້ນທີ່ວ່າງໃນ Storage Pool ເປົ້າໝາຍປັດຈຸບັນ: {0}', + storageLimitExceeded: 'ຄວາມຈຸດິສກ໌ເກີນຂີດຈຳກັດ. ສູງສຸດທີ່ໃຊ້ໄດ້ໃນປັດຈຸບັນ: {0}.', + iso: 'ISO', + createFromTemplate: 'ສ້າງຈາກແມ່ແບບ', + template: 'ແມ່ແບບ', + templateName: 'ຊື່ແມ່ແບບ', + convertToTemplate: 'ປ່ຽນເປັນແມ່ແບບ', + sourceVM: 'VM ຕົ້ນທາງ', + templateSize: 'ຂະໜາດແມ່ແບບ', + deleteTemplateConfirm: 'ລຶບແມ່ແບບ {0}. ການດຳເນີນການນີ້ບໍ່ສາມາດຍ້ອນກັບໄດ້. ຕ້ອງການຕໍ່ບໍ?', + orphanClean: 'ລ້າງຂໍ້ມູນທີ່ບໍ່ຖືກອ້າງອີງ', + orphanScan: 'ສະແກນໃໝ່', + orphanCleanHelper: + 'ສະແດງສະເພາະໄຟລ໌ຜູ້ສະໝັກທີ່ບໍ່ຖືກອ້າງອີງໂດຍເຄື່ອງສະເໝືອນ, ສະແນັບຊັອດ ຫຼື ແມ່ແບບທີ່ລົງທະບຽນ. ຢືນຢັນວ່າໄຟລ໌ບໍ່ຖືກໃຊ້ແລ້ວກ່ອນລ້າງ; ການລ້າງບໍ່ສາມາດຍ້ອນກັບໄດ້.', + orphanSelected: 'ເລືອກແລ້ວ {0} ໄຟລ໌, ລວມທັງໝົດ {1}', + orphanSize: 'ຂະໜາດ', + orphanCleanConfirm: 'ລ້າງ {0} ໄຟລ໌ທີ່ເລືອກ ({1}) ບໍ? ການດຳເນີນການນີ້ບໍ່ສາມາດຍ້ອນກັບໄດ້.', + orphanCleanSuccess: 'ລ້າງ {0} ໄຟລ໌ ແລະ ປ່ອຍພື້ນທີ່ {1} ແລ້ວ.', + orphanType: { + orphan_domain_disk: 'ດິສກ໌ທີ່ບໍ່ຖືກອ້າງອີງ', + orphan_snapshot: 'ສະແນັບຊັອດທີ່ບໍ່ຖືກອ້າງອີງ', + partial_file: 'ໄຟລ໌ບໍ່ສົມບູນ', + }, + diskSize: 'ຂະໜາດດິສກ໌', + diskPath: 'ເສັ້ນທາງດິສກ໌', + isoPath: 'ເສັ້ນທາງ ISO', + storagePool: 'Storage Pool', + network: 'ເຄືອຂ່າຍ', + bridgeName: 'ຊື່ Bridge', + natNetworkHelper: 'VM ສາມາດເຂົ້າເຄືອຂ່າຍຜ່ານ Host, ແຕ່ອຸປະກອນພາຍນອກໂດຍທົ່ວໄປບໍ່ສາມາດເຂົ້າ VM ໂດຍກົງໄດ້.', + bridgeNetworkHelper: + 'ເຊື່ອມຕໍ່ VM ກັບ Bridge ທີ່ມີຢູ່ໃນ Host (ເຊັ່ນ br0). ຖ້າ Host ມີ NIC ເພີ່ມເຕີມທີ່ບໍ່ໄດ້ໃຊ້ ໃຫ້ສ້າງ Bridge ສຳລັບມັນແລ້ວນຳມາໃຊ້.', + bridgeNameHelper: + 'ເລືອກ Linux Bridge ທີ່ມີຢູ່ໃນ Host ເຊັ່ນ br0. NIC ກາຍະພາບບໍ່ແມ່ນ Bridge ແລະ ບໍ່ສາມາດເລືອກ Bridge ທີ່ docker/libvirt ຈັດການໄດ້.', + natCIDRHelper: 'CIDR, Gateway ແລະ ຊ່ວງ DHCP ຈະຖືກໃຊ້ໂດຍເຄືອຂ່າຍສະເໝືອນ NAT ໃໝ່.', + networkCIDR: 'CIDR ເຄືອຂ່າຍ', + gateway: 'Gateway', + dhcpStart: 'DHCP ເລີ່ມຕົ້ນ', + dhcpEnd: 'DHCP ສິ້ນສຸດ', + bootOrder: 'ລຳດັບການບູດ', + bootDiskFirst: 'ດິສກ໌ກ່ອນ (HD → CD-ROM)', + bootIsoFirst: 'ISO ກ່ອນ (CD-ROM → HD)', + bootOrderConfirm: + 'ປ່ຽນລຳດັບການບູດເປັນ {0} ບໍ? VM ຈະລອງອຸປະກອນທີ່ Mount ຢູ່ ແລະ ບູດໄດ້ຕາມລຳດັບນີ້ໃນຄັ້ງຖັດໄປທີ່ເລີ່ມ.', + startAfterCreate: 'ເລີ່ມຫຼັງຈາກສ້າງ', + autoStart: 'ເລີ່ມອັດຕະໂນມັດ', + resourceAutoStart: 'ເລີ່ມອັດຕະໂນມັດ', + capacity: 'ຄວາມຈຸ', + available: 'ໃຊ້ໄດ້', + vmCount: 'VM ທີ່ເຊື່ອມໂຍງ', + usedIPs: 'IP ທີ່ໃຊ້ແລ້ວ', + monitor: 'ການຕິດຕາມ', + monitorNotReady: 'ເຄື່ອງສະເໝືອນບໍ່ໄດ້ເຮັດວຽກ. ບໍ່ມີຂໍ້ມູນຕິດຕາມ.', + monitorLoadFailed: 'ດຶງຂໍ້ມູນຕິດຕາມ VM ລົ້ມເຫຼວ.', + monitorLoadFailedWithReason: 'ດຶງຂໍ້ມູນຕິດຕາມ VM ລົ້ມເຫຼວ: {0}', + rename: 'ປ່ຽນຊື່', + newName: 'ຊື່ໃໝ່', + renameHelper: 'ປ້ອນຊື່ VM ໃໝ່. ຕ້ອງປິດ VM ກ່ອນປ່ຽນຊື່.', + renameConfirm: 'ປ່ຽນຊື່ເຄື່ອງສະເໝືອນ [{0}] ເປັນ [{1}] ບໍ?', + renameRunningHelper: 'ກະລຸນາປິດເຄື່ອງສະເໝືອນກ່ອນປ່ຽນຊື່.', + cpuUsage: 'ການໃຊ້ CPU', + memoryUsage: 'ການໃຊ້ໜ່ວຍຄວາມຈຳ', + diskIO: 'Disk IO', + networkIO: 'Network IO', + diskReadWrite: 'ອ່ານ / ຂຽນດິສກ໌', + networkRxTx: 'Network RX / TX', + rx: 'RX', + tx: 'TX', + console: 'Console', + consoleNotReady: 'VNC Console ໃຊ້ງານບໍ່ໄດ້. ກະລຸນາເລີ່ມ VM ແລະ ກວດສອບການຕັ້ງຄ່າກຣາຟິກ VNC.', + consoleDisconnected: 'VNC Console ຖືກຕັດການເຊື່ອມຕໍ່ແລ້ວ.', + consoleConnectFailed: 'ເຊື່ອມຕໍ່ VNC Console ລົ້ມເຫຼວ. ກວດສອບບໍລິການ Console Proxy.', + consoleCredentialsRequired: 'VNC Console ຕ້ອງການຂໍ້ມູນຢືນຢັນ. ກວດສອບການຕັ້ງຄ່າ Backend Proxy.', + snapshot: 'ສະແນັບຊັອດ', + createSnapshot: 'ສ້າງສະແນັບຊັອດ', + recoverSnapshot: 'ກູ້ຄືນສະແນັບຊັອດ', + snapshotSize: 'ການໃຊ້ງານ', + currentSnapshot: 'ປັດຈຸບັນ', + snapshotEmpty: 'ບໍ່ມີສະແນັບຊັອດ', + snapshotHelper: + 'ສະແນັບຊັອດຈະບັນທຶກສະຖານະ VM ປັດຈຸບັນເປັນຈຸດກູ້ຄືນ. ການປ່ຽນແປງຂໍ້ມູນຕໍ່ມາຈະຖືກບັນທຶກໃນໄຟລ໌ Delta ໂດຍບໍ່ປ່ຽນດິສກ໌ຕົ້ນສະບັບ. ການກູ້ຄືນສະແນັບຊັອດຈະນຳ VM ກັບໄປຈຸດເວລານັ້ນ.', + snapshotOperationHelper: + 'ບໍ່ສາມາດລຶບສະແນັບຊັອດປັດຈຸບັນໄດ້. ກູ້ຄືນສະແນັບຊັອດໄດ້ສະເພາະເມື່ອປິດເຄື່ອງສະເໝືອນ.', + snapshotRecoverConfirm: + 'ກູ້ຄືນເຄື່ອງສະເໝືອນ [{1}] ໄປທີ່ສະແນັບຊັອດ [{0}] ບໍ? ດິສກ໌ VM ຈະຖືກກູ້ຄືນເປັນສະຖານະຂອງສະແນັບຊັອດ.', + interface: 'Network Interface', + device: 'ອຸປະກອນ', + path: 'ເສັ້ນທາງ', + start: 'ເລີ່ມ', + shutdown: 'ປິດເຄື່ອງ', + reboot: 'ຣີບູດ', + destroy: 'ບັງຄັບຢຸດ', + suspend: 'ຢຸດຊົ່ວຄາວ', + resume: 'ສືບຕໍ່', + operateConfirm: 'ຢືນຢັນການ {0} ເຄື່ອງສະເໝືອນ [{1}] ບໍ?', + forceDelete: 'ບັງຄັບລຶບ', + forceDeleteHelper: + 'ການບັງຄັບລຶບຈະບໍ່ສົນໃຈຂໍ້ຜິດພາດໃນການລຶບ VM, ລຶບ Metadata ຂອງພາແນລ ແລະ ປ່ອຍການໃຊ້ຊັບພະຍາກອນ.', + deleteNameHelper: '" ເພື່ອລຶບເຄື່ອງສະເໝືອນນີ້', + isoSource: 'ແຫຼ່ງ ISO', + downloadFromServer: 'ດາວໂຫຼດຈາກເຊີບເວີ', + isoTargetDir: 'ເສັ້ນທາງເປົ້າໝາຍ ISO', + isoTargetDirHelper: 'ໄຟລ໌ ISO ທີ່ອັບໂຫຼດຈາກເຄື່ອງ ຫຼື ດາວໂຫຼດຈາກເຊີບເວີຈະຖືກບັນທຶກໄວ້ໃນໄດເຣັກທໍຣີນີ້.', + addingIsoRecord: 'ກຳລັງເພີ່ມບັນທຶກ ISO', + transferInProgress: 'ກຳລັງໂອນ ISO. ຢ່າປິດ Drawer ຫຼື ໜ້ານີ້.', + isoSize: 'ຂະໜາດ ISO', + deleteIsoConfirm: 'ການລຶບນີ້ບໍ່ສາມາດຍ້ອນກັບໄດ້. ຕ້ອງການຕໍ່ບໍ?', + deleteSourceFile: 'ລຶບໄຟລ໌ຕົ້ນທາງ', + deleteSourceFileHelper: 'ເມື່ອເລືອກ ໄຟລ໌ຕົ້ນທາງທີ່ບັນທຶກ ISO ນີ້ອ້າງອີງຈະຖືກລຶບນຳ ແລະ ບໍ່ສາມາດກູ້ຄືນໄດ້.', + dir: 'ໄດເຣັກທໍຣີໃນເຄື່ອງ', + }, + cluster: { + cluster: 'ແອັບພລິເຄຊັນທຳງານຕໍ່ເນື່ອງ (HA)', + name: 'ຊື່ຄລັສເຕີ', + addCluster: 'ເພີ່ມຄລັສເຕີ', + installNode: 'ຕິດຕັ້ງໂນດ', + master: 'ໂນດຫຼັກ (Master)', + slave: 'ໂນດສຳຮອງ (Slave)', + replicaStatus: 'ສະຖານະ Master-Slave', + unhealthyDeleteError: 'ສະຖານະໂນດທີ່ຕິດຕັ້ງຜິດປົກກະຕິ. ກະລຸນາກວດສອບລາຍຊື່ໂນດ!', + replicaStatusError: 'ການດຶງສະຖານະຜິດປົກກະຕິ. ກະລຸນາກວດສອບໂນດຫຼັກ.', + masterHostError: 'IP ຂອງໂນດຫຼັກຫ້າມເປັນ 127.0.0.1', + }, }, }; diff --git a/frontend/src/views/login/components/login-form.vue b/frontend/src/views/login/components/login-form.vue index 5499486a4..5110a6cfd 100644 --- a/frontend/src/views/login/components/login-form.vue +++ b/frontend/src/views/login/components/login-form.vue @@ -63,6 +63,7 @@ Bahasa Melayu Turkish فارسی + ພາສາລາວ @@ -122,6 +123,7 @@ Bahasa Melayu Turkish فارسی + ພາສາລາວ @@ -389,6 +391,7 @@ const languageLabelMap: Record = { tr: 'Turkish', 'es-ES': 'España - Español', fa: 'فارسی', + lo: 'ພາສາລາວ', }; const handleCommand = async (command: string) => { diff --git a/frontend/src/views/setting/panel/index.vue b/frontend/src/views/setting/panel/index.vue index bfc0a1a3c..697f6e501 100644 --- a/frontend/src/views/setting/panel/index.vue +++ b/frontend/src/views/setting/panel/index.vue @@ -289,6 +289,7 @@ const languageOptions = ref([ { value: 'tr', label: 'Turkish' }, { value: 'es-ES', label: 'España - Español' }, { value: 'fa', label: 'فارسی' }, + { value: 'lo', label: 'ພາສາລາວ' }, ]); if (isIntl.value) { diff --git a/frontend/src/views/share/index.vue b/frontend/src/views/share/index.vue index 91facd431..646473dbc 100644 --- a/frontend/src/views/share/index.vue +++ b/frontend/src/views/share/index.vue @@ -54,7 +54,7 @@ const initializing = ref(true); const errorMessage = ref(''); const shareInfo = ref(null); const shareLocale = ref('en'); -const supportedLocales = ['zh', 'zh-Hant', 'en', 'pt-BR', 'ja', 'ru', 'ms', 'ko', 'tr', 'es-ES']; +const supportedLocales = ['zh', 'zh-Hant', 'en', 'pt-BR', 'ja', 'ru', 'ms', 'ko', 'tr', 'es-ES', 'lo']; const code = computed(() => String(route.params.code || '').trim()); const currentNode = computed(() => String(route.query.operateNode || 'local'));