diff --git a/agent/app/task/task.go b/agent/app/task/task.go index 2425d80c7..62614ccc0 100644 --- a/agent/app/task/task.go +++ b/agent/app/task/task.go @@ -99,6 +99,7 @@ const ( TaskScopeTamper = "Tamper" TaskScopeFileConvert = "Convert" TaskScopeTask = "Task" + TaskScopeVm = "VirtualMachine" ) func GetTaskName(resourceName, operate, scope string) string { diff --git a/agent/cmd/server/docs/x-log.json b/agent/cmd/server/docs/x-log.json index 7974f4b8a..1d2e0fedc 100644 --- a/agent/cmd/server/docs/x-log.json +++ b/agent/cmd/server/docs/x-log.json @@ -2459,7 +2459,7 @@ "formatZH": "同步 SSL 证书 [primaryDomain]", "formatEN": "sync SSL certificate [primaryDomain]" }, - "/core/xpack/vms": { + "/xpack/vms": { "bodyKeys": [ "name" ], @@ -2468,7 +2468,7 @@ "formatZH": "创建虚拟机 [name]", "formatEN": "create VM [name]" }, - "/core/xpack/vms/del": { + "/xpack/vms/del": { "bodyKeys": [ "id" ], @@ -2486,7 +2486,7 @@ "formatZH": "删除虚拟机 [name]", "formatEN": "delete VM [name]" }, - "/core/xpack/vms/disks/resize": { + "/xpack/vms/disks/resize": { "bodyKeys": [ "name", "target", @@ -2497,14 +2497,14 @@ "formatZH": "扩容虚拟机 [name] 磁盘 [target] 至 [sizeGiB] GiB", "formatEN": "expand VM [name] disk [target] to [sizeGiB] GiB" }, - "/core/xpack/vms/environment/enable": { + "/xpack/vms/environment/enable": { "bodyKeys": [], "paramKeys": [], "beforeFunctions": [], "formatZH": "启用虚拟机运行环境", "formatEN": "enable VM runtime environment" }, - "/core/xpack/vms/iso": { + "/xpack/vms/iso": { "bodyKeys": [ "name", "type" @@ -2514,7 +2514,7 @@ "formatZH": "创建虚拟机镜像 [name] [type]", "formatEN": "create VM ISO [name] [type]" }, - "/core/xpack/vms/iso/del": { + "/xpack/vms/iso/del": { "bodyKeys": [ "id" ], @@ -2532,7 +2532,7 @@ "formatZH": "删除虚拟机镜像 [name]", "formatEN": "delete VM ISO [name]" }, - "/core/xpack/vms/iso/update": { + "/xpack/vms/iso/update": { "bodyKeys": [ "name", "type" @@ -2542,7 +2542,7 @@ "formatZH": "更新虚拟机镜像 [name] [type]", "formatEN": "update VM ISO [name] [type]" }, - "/core/xpack/vms/networks": { + "/xpack/vms/networks": { "bodyKeys": [ "name", "type" @@ -2552,7 +2552,7 @@ "formatZH": "创建虚拟机网络 [name] [type]", "formatEN": "create VM network [name] [type]" }, - "/core/xpack/vms/networks/del": { + "/xpack/vms/networks/del": { "bodyKeys": [ "id" ], @@ -2570,7 +2570,7 @@ "formatZH": "删除虚拟机网络 [name]", "formatEN": "delete VM network [name]" }, - "/core/xpack/vms/networks/update": { + "/xpack/vms/networks/update": { "bodyKeys": [ "id" ], @@ -2588,7 +2588,7 @@ "formatZH": "更新虚拟机网络 [name]", "formatEN": "update VM network [name]" }, - "/core/xpack/vms/operate": { + "/xpack/vms/operate": { "bodyKeys": [ "name", "operate" @@ -2598,14 +2598,14 @@ "formatZH": "操作虚拟机 [name] [operate]", "formatEN": "operate VM [name] [operate]" }, - "/core/xpack/vms/orphans/clean": { + "/xpack/vms/orphans/clean": { "bodyKeys": [], "paramKeys": [], "beforeFunctions": [], "formatZH": "清理虚拟机孤立数据", "formatEN": "clean VM orphaned data" }, - "/core/xpack/vms/rename": { + "/xpack/vms/rename": { "bodyKeys": [ "name", "newName" @@ -2615,7 +2615,7 @@ "formatZH": "重命名虚拟机 [name] 为 [newName]", "formatEN": "rename VM [name] to [newName]" }, - "/core/xpack/vms/snapshots": { + "/xpack/vms/snapshots": { "bodyKeys": [ "name", "snapshotName" @@ -2625,7 +2625,7 @@ "formatZH": "创建虚拟机 [name] 快照 [snapshotName]", "formatEN": "create VM [name] snapshot [snapshotName]" }, - "/core/xpack/vms/snapshots/del": { + "/xpack/vms/snapshots/del": { "bodyKeys": [ "name", "snapshotName" @@ -2635,7 +2635,7 @@ "formatZH": "删除虚拟机 [name] 快照 [snapshotName]", "formatEN": "delete VM [name] snapshot [snapshotName]" }, - "/core/xpack/vms/snapshots/recover": { + "/xpack/vms/snapshots/recover": { "bodyKeys": [ "name", "snapshotName" @@ -2645,7 +2645,7 @@ "formatZH": "恢复虚拟机 [name] 快照 [snapshotName]", "formatEN": "recover VM [name] snapshot [snapshotName]" }, - "/core/xpack/vms/storages": { + "/xpack/vms/storages": { "bodyKeys": [ "name", "type" @@ -2655,7 +2655,7 @@ "formatZH": "创建虚拟机存储 [name] [type]", "formatEN": "create VM storage [name] [type]" }, - "/core/xpack/vms/storages/del": { + "/xpack/vms/storages/del": { "bodyKeys": [ "id" ], @@ -2673,7 +2673,7 @@ "formatZH": "删除虚拟机存储 [name]", "formatEN": "delete VM storage [name]" }, - "/core/xpack/vms/storages/update": { + "/xpack/vms/storages/update": { "bodyKeys": [ "id" ], @@ -2691,14 +2691,14 @@ "formatZH": "更新虚拟机存储 [name]", "formatEN": "update VM storage [name]" }, - "/core/xpack/vms/sync": { + "/xpack/vms/sync": { "bodyKeys": [], "paramKeys": [], "beforeFunctions": [], "formatZH": "同步虚拟机", "formatEN": "sync virtual machines" }, - "/core/xpack/vms/templates": { + "/xpack/vms/templates": { "bodyKeys": [ "name", "templateName" @@ -2708,7 +2708,7 @@ "formatZH": "创建虚拟机 [name] 模板 [templateName]", "formatEN": "create VM [name] template [templateName]" }, - "/core/xpack/vms/templates/del": { + "/xpack/vms/templates/del": { "bodyKeys": [ "id" ], @@ -2726,7 +2726,7 @@ "formatZH": "删除虚拟机模板 [name]", "formatEN": "delete VM template [name]" }, - "/core/xpack/vms/update": { + "/xpack/vms/update": { "bodyKeys": [ "name" ], diff --git a/agent/constant/status.go b/agent/constant/status.go index 6a0676662..db5ac27b2 100644 --- a/agent/constant/status.go +++ b/agent/constant/status.go @@ -1,6 +1,10 @@ package constant const ( + StatusInactive = "Inactive" + StatusUnknown = "Unknown" + StatusDegraded = "Degraded" + StatusInaccessible = "Inaccessible" StatusRunning = "Running" StatusCanceled = "Canceled" StatusDone = "Done" diff --git a/agent/i18n/lang/en.yaml b/agent/i18n/lang/en.yaml index 54c411f62..882799876 100644 --- a/agent/i18n/lang/en.yaml +++ b/agent/i18n/lang/en.yaml @@ -723,3 +723,44 @@ ErrSSHPublicKey: "Enter a valid SSH public key" ErrSSHPrivateKey: "Invalid SSH private key or incorrect passphrase; encrypted keys require the original passphrase" ErrSSHKeyMismatch: "The SSH public and private keys do not match" +# virtual machine +ErrVMNotFound: "Virtual machine does not exist" +ErrVMAlreadyExists: "Virtual machine already exists" +ErrVMCountLimit: "The Professional edition supports up to {{ .limit }} virtual machines. Delete an existing VM or upgrade to Enterprise to create more." +ErrVMImageAlreadyExists: "Virtual machine image already exists: {{ .detail }}" +ErrVMStoragePathInUse: "Storage pool path is already used by [{{ .name }}]" +ErrVMHelperNotFound: "1panel-kvm not found" +ErrVMBridgeManaged: "Bridge name is already managed by libvirt or Docker" +ErrVMNetworkInUse: "Network is in use and cannot be deleted" +ErrVMStorageInUse: "Storage pool is in use and cannot be deleted" +ErrVMStorageNameCannotChange: "Storage pool name cannot be changed" +ErrVMStoragePathCannotChange: "Storage pool path cannot be changed" +ErrVMRunning: "Virtual machine is running" +ErrVMLibvirtConnect: "Failed to connect to libvirt: {{ .detail }}" +ErrVMPermission: "No permission to operate virtual machine: {{ .detail }}" +ErrVMNetworkNotFound: "Virtual machine network does not exist: {{ .detail }}" +ErrVMInvalidPath: "Invalid virtual machine path: {{ .detail }}" +ErrVMInvalidInput: "Invalid virtual machine parameter: {{ .detail }}" +ErrVMCommandFailed: "Virtual machine command failed: {{ .err }}" +ErrVMDiskResizeBlocked: "The disk does not meet expansion requirements or is referenced by another device. Check the disk status." +ErrVMDiskReferenced: "This virtual disk is used by another virtual machine or device and cannot be expanded yet." +ErrVMDiskReferenceCheck: "Cannot complete virtual disk reference checks. Expansion is unavailable; check the disks of other virtual machines." +ErrVMSnapshotMetadataSync: "The snapshot was restored, but disk information could not be synced. Refresh and check; do not restore the snapshot again." +VMCreateTask: "Create virtual machine [{{ .name }}]" +VMCreateFromTemplateTask: "Create virtual machine [{{ .name }}] from template" +VMUpdateTask: "Update virtual machine [{{ .name }}]" +VMDiskResizeTask: "Expand disk [{{ .disk }}] of virtual machine [{{ .name }}]" +VMRenameTask: "Rename virtual machine [{{ .name }}] to [{{ .newName }}]" +VMDeleteTask: "Delete virtual machine [{{ .name }}]" +VMTemplateCreateTask: "Save virtual machine [{{ .name }}] as template [{{ .template }}]" +VMTemplateDeleteTask: "Delete virtual machine template [{{ .name }}]" +VMForceDeleteMetadataOnly: "1panel-kvm not found, force deleting virtual machine [{{ .name }}] metadata only" +VMForceDeleteMetadataAfterLibvirtFailed: "Failed to delete virtual machine [{{ .name }}] from libvirt, force deleting metadata: {{ .err }}" +VMForceDeleteDiskFailed: "Force delete virtual machine disk file [{{ .path }}] failed: {{ .err }}" +VMForceDeleteDiskSuccess: "Force deleted virtual machine disk file [{{ .path }}]" +VMSnapshotCreateTask: "Create snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" +VMSnapshotCreateStep: "Create virtual machine snapshot [{{ .snapshot }}]" +VMSnapshotRecoverTask: "Recover snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" +VMSnapshotRecoverStep: "Recover virtual machine snapshot [{{ .snapshot }}]" +VMSnapshotDeleteTask: "Delete snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" +VMSnapshotDeleteStep: "Delete virtual machine snapshot [{{ .snapshot }}]" diff --git a/agent/i18n/lang/es-ES.yaml b/agent/i18n/lang/es-ES.yaml index 08da8e837..10885ff63 100644 --- a/agent/i18n/lang/es-ES.yaml +++ b/agent/i18n/lang/es-ES.yaml @@ -723,3 +723,44 @@ ErrSSHPublicKey: "Introduce una clave pública SSH válida" ErrSSHPrivateKey: "Clave privada SSH no válida o contraseña incorrecta; las claves cifradas requieren la contraseña original" ErrSSHKeyMismatch: "Las claves pública y privada SSH no coinciden" +# máquina virtual +ErrVMNotFound: "La máquina virtual no existe" +ErrVMAlreadyExists: "La máquina virtual ya existe" +ErrVMCountLimit: "La edición Professional permite crear hasta {{ .limit }} máquinas virtuales. Elimina una máquina virtual existente o actualiza a Enterprise y vuelve a intentarlo." +ErrVMImageAlreadyExists: "La imagen de la máquina virtual ya existe: {{ .detail }}" +ErrVMStoragePathInUse: "La ruta del pool de almacenamiento ya está usada por [{{ .name }}]" +ErrVMHelperNotFound: "No se encontró 1panel-kvm" +ErrVMBridgeManaged: "El nombre del bridge ya está administrado por libvirt o Docker" +ErrVMNetworkInUse: "La red está en uso y no se puede eliminar" +ErrVMStorageInUse: "El pool de almacenamiento está en uso y no se puede eliminar" +ErrVMStorageNameCannotChange: "El nombre del pool de almacenamiento no se puede cambiar" +ErrVMStoragePathCannotChange: "La ruta del pool de almacenamiento no se puede cambiar" +ErrVMRunning: "La máquina virtual está en ejecución" +ErrVMLibvirtConnect: "Error al conectar con libvirt: {{ .detail }}" +ErrVMPermission: "Sin permiso para operar la máquina virtual: {{ .detail }}" +ErrVMNetworkNotFound: "La red de la máquina virtual no existe: {{ .detail }}" +ErrVMInvalidPath: "Ruta de máquina virtual no válida: {{ .detail }}" +ErrVMInvalidInput: "Parámetro de máquina virtual no válido: {{ .detail }}" +ErrVMCommandFailed: "Error al ejecutar el comando de la máquina virtual: {{ .err }}" +ErrVMDiskResizeBlocked: "El disco no cumple los requisitos de ampliación o está referenciado por otro dispositivo. Compruebe su estado." +ErrVMDiskReferenced: "Otro equipo virtual o dispositivo utiliza este disco virtual; la ampliación aún no se admite." +ErrVMDiskReferenceCheck: "No se pueden comprobar las referencias al disco virtual. La ampliación no está disponible; revise los discos de otras máquinas virtuales." +ErrVMSnapshotMetadataSync: "La instantánea se restauró, pero falló la sincronización de los datos del disco. Actualice y compruebe; no restaure de nuevo la instantánea." +VMCreateTask: "Crear máquina virtual [{{ .name }}]" +VMCreateFromTemplateTask: "Crear máquina virtual [{{ .name }}] desde plantilla" +VMUpdateTask: "Actualizar máquina virtual [{{ .name }}]" +VMDiskResizeTask: "Ampliar disco [{{ .disk }}] de la máquina virtual [{{ .name }}]" +VMRenameTask: "Renombrar máquina virtual [{{ .name }}] a [{{ .newName }}]" +VMDeleteTask: "Eliminar máquina virtual [{{ .name }}]" +VMTemplateCreateTask: "Guardar máquina virtual [{{ .name }}] como plantilla [{{ .template }}]" +VMTemplateDeleteTask: "Eliminar plantilla de máquina virtual [{{ .name }}]" +VMForceDeleteMetadataOnly: "1panel-kvm no encontrado, eliminando solo los metadatos de la máquina virtual [{{ .name }}]" +VMForceDeleteMetadataAfterLibvirtFailed: "Error al eliminar la máquina virtual [{{ .name }}] de libvirt, eliminando metadatos: {{ .err }}" +VMForceDeleteDiskFailed: "Error al forzar la eliminación del archivo de disco de la máquina virtual [{{ .path }}]: {{ .err }}" +VMForceDeleteDiskSuccess: "Archivo de disco de la máquina virtual [{{ .path }}] eliminado forzosamente" +VMSnapshotCreateTask: "Crear instantánea [{{ .snapshot }}] para la máquina virtual [{{ .vm }}]" +VMSnapshotCreateStep: "Crear instantánea de máquina virtual [{{ .snapshot }}]" +VMSnapshotRecoverTask: "Restaurar instantánea [{{ .snapshot }}] para la máquina virtual [{{ .vm }}]" +VMSnapshotRecoverStep: "Restaurar instantánea de máquina virtual [{{ .snapshot }}]" +VMSnapshotDeleteTask: "Eliminar instantánea [{{ .snapshot }}] de la máquina virtual [{{ .vm }}]" +VMSnapshotDeleteStep: "Eliminar instantánea de máquina virtual [{{ .snapshot }}]" diff --git a/agent/i18n/lang/fa.yaml b/agent/i18n/lang/fa.yaml index e5c4f91a4..6dad6406d 100644 --- a/agent/i18n/lang/fa.yaml +++ b/agent/i18n/lang/fa.yaml @@ -724,3 +724,44 @@ ErrSSHPublicKey: "یک کلید عمومی SSH معتبر وارد کنید" ErrSSHPrivateKey: "کلید خصوصی SSH نامعتبر یا عبارت عبور نادرست است؛ کلیدهای رمزگذاری‌شده به عبارت عبور اصلی نیاز دارند" ErrSSHKeyMismatch: "کلید عمومی و خصوصی SSH مطابقت ندارند" +# ماشین مجازی +ErrVMNotFound: "ماشین مجازی وجود ندارد" +ErrVMAlreadyExists: "ماشین مجازی از قبل وجود دارد" +ErrVMCountLimit: "در نسخه Professional می‌توانید حداکثر {{ .limit }} ماشین مجازی ایجاد کنید. یک ماشین مجازی موجود را حذف کنید یا به نسخه Enterprise ارتقا دهید و دوباره تلاش کنید." +ErrVMImageAlreadyExists: "فایل ایمیج ماشین مجازی از قبل وجود دارد: {{ .detail }}" +ErrVMStoragePathInUse: "مسیر استخر ذخیره‌سازی قبلاً توسط [{{ .name }}] استفاده شده است" +ErrVMHelperNotFound: "1panel-kvm یافت نشد" +ErrVMBridgeManaged: "نام bridge از قبل توسط libvirt یا Docker مدیریت می‌شود" +ErrVMNetworkInUse: "شبکه در حال استفاده است و قابل حذف نیست" +ErrVMStorageInUse: "مخزن ذخیره‌سازی در حال استفاده است و قابل حذف نیست" +ErrVMStorageNameCannotChange: "نام مخزن ذخیره‌سازی قابل تغییر نیست" +ErrVMStoragePathCannotChange: "مسیر مخزن ذخیره‌سازی قابل تغییر نیست" +ErrVMRunning: "ماشین مجازی در حال اجرا است" +ErrVMLibvirtConnect: "اتصال به libvirt ناموفق بود: {{ .detail }}" +ErrVMPermission: "مجوز عملیات ماشین مجازی وجود ندارد: {{ .detail }}" +ErrVMNetworkNotFound: "شبکه ماشین مجازی وجود ندارد: {{ .detail }}" +ErrVMInvalidPath: "مسیر ماشین مجازی نامعتبر است: {{ .detail }}" +ErrVMInvalidInput: "پارامتر ماشین مجازی نامعتبر است: {{ .detail }}" +ErrVMCommandFailed: "اجرای دستور ماشین مجازی ناموفق بود: {{ .err }}" +ErrVMDiskResizeBlocked: "دیسک شرایط افزایش ظرفیت را ندارد یا دستگاه دیگری به آن ارجاع می‌دهد. وضعیت دیسک را بررسی کنید." +ErrVMDiskReferenced: "این دیسک مجازی توسط ماشین مجازی یا دستگاه دیگری استفاده می‌شود؛ افزایش ظرفیت فعلاً پشتیبانی نمی‌شود." +ErrVMDiskReferenceCheck: "بررسی ارجاع‌های دیسک مجازی کامل نشد. افزایش ظرفیت ممکن نیست؛ دیسک‌های سایر ماشین‌های مجازی را بررسی کنید." +ErrVMSnapshotMetadataSync: "اسنپ‌شات بازیابی شد، اما همگام‌سازی اطلاعات دیسک ناموفق بود. تازه‌سازی و بررسی کنید؛ نیازی به بازیابی دوباره اسنپ‌شات نیست." +VMCreateTask: "ایجاد ماشین مجازی [{{ .name }}]" +VMCreateFromTemplateTask: "ایجاد ماشین مجازی [{{ .name }}] از قالب" +VMUpdateTask: "به‌روزرسانی ماشین مجازی [{{ .name }}]" +VMDiskResizeTask: "افزایش ظرفیت دیسک [{{ .disk }}] ماشین مجازی [{{ .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 }}]" diff --git a/agent/i18n/lang/ja.yaml b/agent/i18n/lang/ja.yaml index 86bba78d7..fb7f59ef2 100644 --- a/agent/i18n/lang/ja.yaml +++ b/agent/i18n/lang/ja.yaml @@ -723,3 +723,44 @@ ErrSSHPublicKey: "有効な SSH 公開鍵を入力してください" ErrSSHPrivateKey: "SSH 秘密鍵の形式が無効か、パスフレーズが間違っています。暗号化された鍵には元のパスフレーズが必要です" ErrSSHKeyMismatch: "SSH 公開鍵と秘密鍵が一致しません" +# 仮想マシン +ErrVMNotFound: "仮想マシンが存在しません" +ErrVMAlreadyExists: "仮想マシンは既に存在します" +ErrVMCountLimit: "Professional 版では最大 {{ .limit }} 台の仮想マシンを作成できます。既存の仮想マシンを削除するか、Enterprise 版にアップグレードしてから再試行してください。" +ErrVMImageAlreadyExists: "仮想マシンのイメージファイルは既に存在します: {{ .detail }}" +ErrVMStoragePathInUse: "ストレージプールのパスは既に [{{ .name }}] で使用されています" +ErrVMHelperNotFound: "1panel-kvm が見つかりません" +ErrVMBridgeManaged: "ブリッジ名はすでに libvirt または Docker によって管理されています" +ErrVMNetworkInUse: "ネットワークは使用中のため削除できません" +ErrVMStorageInUse: "ストレージプールは使用中のため削除できません" +ErrVMStorageNameCannotChange: "ストレージプール名は変更できません" +ErrVMStoragePathCannotChange: "ストレージプールのパスは変更できません" +ErrVMRunning: "仮想マシンは実行中です" +ErrVMLibvirtConnect: "libvirt への接続に失敗しました: {{ .detail }}" +ErrVMPermission: "仮想マシンを操作する権限がありません: {{ .detail }}" +ErrVMNetworkNotFound: "仮想マシンネットワークが存在しません: {{ .detail }}" +ErrVMInvalidPath: "仮想マシンのパスが無効です: {{ .detail }}" +ErrVMInvalidInput: "仮想マシンのパラメータが無効です: {{ .detail }}" +ErrVMCommandFailed: "仮想マシンコマンドの実行に失敗しました: {{ .err }}" +ErrVMDiskResizeBlocked: "ディスクが拡張条件を満たしていないか、他のデバイスから参照されています。ディスクの状態を確認してください。" +ErrVMDiskReferenced: "この仮想ディスクは他の仮想マシンまたはデバイスで使用されているため、現在は拡張できません。" +ErrVMDiskReferenceCheck: "仮想ディスクの参照を確認できないため拡張できません。他の仮想マシンのディスク状態を確認してください。" +ErrVMSnapshotMetadataSync: "スナップショットは復元されましたが、ディスク情報の同期に失敗しました。更新して確認してください。再度復元する必要はありません。" +VMCreateTask: "仮想マシン [{{ .name }}] を作成" +VMCreateFromTemplateTask: "テンプレートから仮想マシン [{{ .name }}] を作成" +VMUpdateTask: "仮想マシン [{{ .name }}] を更新" +VMDiskResizeTask: "仮想マシン [{{ .name }}] のディスク [{{ .disk }}] を拡張" +VMRenameTask: "仮想マシン [{{ .name }}] を [{{ .newName }}] にリネーム" +VMDeleteTask: "仮想マシン [{{ .name }}] を削除" +VMTemplateCreateTask: "仮想マシン [{{ .name }}] をテンプレート [{{ .template }}] として保存" +VMTemplateDeleteTask: "仮想マシンテンプレート [{{ .name }}] を削除" +VMForceDeleteMetadataOnly: "1panel-kvm が見つかりません。仮想マシン [{{ .name }}] のメタデータのみを強制削除します" +VMForceDeleteMetadataAfterLibvirtFailed: "libvirt から仮想マシン [{{ .name }}] を削除できませんでした。メタデータを強制削除します: {{ .err }}" +VMForceDeleteDiskFailed: "仮想マシンディスクファイル [{{ .path }}] の強制削除に失敗しました: {{ .err }}" +VMForceDeleteDiskSuccess: "仮想マシンディスクファイル [{{ .path }}] を強制削除しました" +VMSnapshotCreateTask: "仮想マシン [{{ .vm }}] のスナップショット [{{ .snapshot }}] を作成" +VMSnapshotCreateStep: "仮想マシンのスナップショット [{{ .snapshot }}] を作成" +VMSnapshotRecoverTask: "仮想マシン [{{ .vm }}] のスナップショット [{{ .snapshot }}] を復元" +VMSnapshotRecoverStep: "仮想マシンのスナップショット [{{ .snapshot }}] を復元" +VMSnapshotDeleteTask: "仮想マシン [{{ .vm }}] のスナップショット [{{ .snapshot }}] を削除" +VMSnapshotDeleteStep: "仮想マシンのスナップショット [{{ .snapshot }}] を削除" diff --git a/agent/i18n/lang/ko.yaml b/agent/i18n/lang/ko.yaml index 45d0ea06d..9e15aa5c1 100644 --- a/agent/i18n/lang/ko.yaml +++ b/agent/i18n/lang/ko.yaml @@ -723,3 +723,44 @@ ErrSSHPublicKey: "유효한 SSH 공개 키를 입력하세요" ErrSSHPrivateKey: "SSH 개인 키 형식이 잘못되었거나 암호가 틀립니다. 암호화된 키에는 원래 암호가 필요합니다" ErrSSHKeyMismatch: "SSH 공개 키와 개인 키가 일치하지 않습니다" +# 가상 머신 +ErrVMNotFound: "가상 머신이 존재하지 않습니다" +ErrVMAlreadyExists: "가상 머신이 이미 존재합니다" +ErrVMCountLimit: "Professional 버전에서는 가상 머신을 최대 {{ .limit }}대까지 생성할 수 있습니다. 기존 가상 머신을 삭제하거나 Enterprise 버전으로 업그레이드한 후 다시 시도하세요." +ErrVMImageAlreadyExists: "가상 머신 이미지 파일이 이미 존재합니다: {{ .detail }}" +ErrVMStoragePathInUse: "스토리지 풀 경로가 이미 [{{ .name }}]에서 사용 중입니다" +ErrVMHelperNotFound: "1panel-kvm을 찾을 수 없습니다" +ErrVMBridgeManaged: "브리지 이름이 이미 libvirt 또는 Docker에서 관리되고 있습니다" +ErrVMNetworkInUse: "네트워크가 사용 중이므로 삭제할 수 없습니다" +ErrVMStorageInUse: "스토리지 풀이 사용 중이므로 삭제할 수 없습니다" +ErrVMStorageNameCannotChange: "스토리지 풀 이름은 변경할 수 없습니다" +ErrVMStoragePathCannotChange: "스토리지 풀 경로는 변경할 수 없습니다" +ErrVMRunning: "가상 머신이 실행 중입니다" +ErrVMLibvirtConnect: "libvirt 연결 실패: {{ .detail }}" +ErrVMPermission: "가상 머신 작업 권한이 없습니다: {{ .detail }}" +ErrVMNetworkNotFound: "가상 머신 네트워크가 존재하지 않습니다: {{ .detail }}" +ErrVMInvalidPath: "가상 머신 경로가 유효하지 않습니다: {{ .detail }}" +ErrVMInvalidInput: "가상 머신 매개변수가 유효하지 않습니다: {{ .detail }}" +ErrVMCommandFailed: "가상 머신 명령 실행 실패: {{ .err }}" +ErrVMDiskResizeBlocked: "디스크가 확장 조건을 충족하지 않거나 다른 장치에서 참조하고 있습니다. 디스크 상태를 확인하세요." +ErrVMDiskReferenced: "다른 가상 머신 또는 장치가 이 가상 디스크를 사용 중이므로 현재 확장할 수 없습니다." +ErrVMDiskReferenceCheck: "가상 디스크 참조를 확인할 수 없어 확장할 수 없습니다. 다른 가상 머신의 디스크 상태를 확인하세요." +ErrVMSnapshotMetadataSync: "스냅샷은 복원되었지만 디스크 정보 동기화에 실패했습니다. 새로 고쳐 확인하세요. 스냅샷을 다시 복원할 필요는 없습니다." +VMCreateTask: "가상 머신 [{{ .name }}] 생성" +VMCreateFromTemplateTask: "템플릿에서 가상 머신 [{{ .name }}] 생성" +VMUpdateTask: "가상 머신 [{{ .name }}] 업데이트" +VMDiskResizeTask: "가상 머신 [{{ .name }}]의 디스크 [{{ .disk }}] 확장" +VMRenameTask: "가상 머신 [{{ .name }}]을(를) [{{ .newName }}](으)로 이름 변경" +VMDeleteTask: "가상 머신 [{{ .name }}] 삭제" +VMTemplateCreateTask: "가상 머신 [{{ .name }}]을(를) 템플릿 [{{ .template }}](으)로 저장" +VMTemplateDeleteTask: "가상 머신 템플릿 [{{ .name }}] 삭제" +VMForceDeleteMetadataOnly: "1panel-kvm을 찾을 수 없어 가상 머신 [{{ .name }}] 메타데이터만 강제 삭제합니다" +VMForceDeleteMetadataAfterLibvirtFailed: "libvirt에서 가상 머신 [{{ .name }}] 삭제 실패, 메타데이터 강제 삭제: {{ .err }}" +VMForceDeleteDiskFailed: "가상 머신 디스크 파일 [{{ .path }}] 강제 삭제 실패: {{ .err }}" +VMForceDeleteDiskSuccess: "가상 머신 디스크 파일 [{{ .path }}]을(를) 강제 삭제했습니다" +VMSnapshotCreateTask: "가상 머신 [{{ .vm }}] 스냅샷 [{{ .snapshot }}] 생성" +VMSnapshotCreateStep: "가상 머신 스냅샷 [{{ .snapshot }}] 생성" +VMSnapshotRecoverTask: "가상 머신 [{{ .vm }}] 스냅샷 [{{ .snapshot }}] 복구" +VMSnapshotRecoverStep: "가상 머신 스냅샷 [{{ .snapshot }}] 복구" +VMSnapshotDeleteTask: "가상 머신 [{{ .vm }}] 스냅샷 [{{ .snapshot }}] 삭제" +VMSnapshotDeleteStep: "가상 머신 스냅샷 [{{ .snapshot }}] 삭제" diff --git a/agent/i18n/lang/lo.yaml b/agent/i18n/lang/lo.yaml index 09781db33..dd650003c 100644 --- a/agent/i18n/lang/lo.yaml +++ b/agent/i18n/lang/lo.yaml @@ -714,3 +714,44 @@ ErrSSHPublicKey: "ກະລຸນາປ້ອນຄີສາທາລະນະ S ErrSSHPrivateKey: "ຄີສ່ວນຕົວ SSH ບໍ່ຖືກຕ້ອງ ຫຼື ລະຫັດຜ່ານຜິດ; ຄີທີ່ເຂົ້າລະຫັດຕ້ອງໃຊ້ລະຫັດຜ່ານເດີມ" ErrSSHKeyMismatch: "ຄີສາທາລະນະ ແລະ ຄີສ່ວນຕົວ SSH ບໍ່ກົງກັນ" +# virtual machine +ErrVMNotFound: "ບໍ່ມີເຄື່ອງສະເໝືອນ" +ErrVMAlreadyExists: "ມີເຄື່ອງສະເໝືອນຢູ່ແລ້ວ" +ErrVMCountLimit: "ລຸ້ນ Professional ສາມາດສ້າງເຄື່ອງສະເໝືອນໄດ້ສູງສຸດ {{ .limit }} ເຄື່ອງ. ກະລຸນາລຶບເຄື່ອງສະເໝືອນທີ່ມີຢູ່ ຫຼື ອັບເກຣດເປັນລຸ້ນ Enterprise ແລ້ວລອງອີກຄັ້ງ." +ErrVMImageAlreadyExists: "ມີອິມເມຈເຄື່ອງສະເໝືອນຢູ່ແລ້ວ: {{ .detail }}" +ErrVMStoragePathInUse: "ເສັ້ນທາງພູນຈັດເກັບຖືກໃຊ້ໂດຍ [{{ .name }}] ແລ້ວ" +ErrVMHelperNotFound: "ບໍ່ພົບ 1panel-kvm" +ErrVMBridgeManaged: "ຊື່ບຣິດຈ໌ຖືກຈັດການໂດຍ libvirt ຫຼື Docker ແລ້ວ" +ErrVMNetworkInUse: "ເຄືອຂ່າຍກຳລັງຖືກໃຊ້ງານ ແລະ ບໍ່ສາມາດລຶບໄດ້" +ErrVMStorageInUse: "ພູນຈັດເກັບກຳລັງຖືກໃຊ້ງານ ແລະ ບໍ່ສາມາດລຶບໄດ້" +ErrVMStorageNameCannotChange: "ບໍ່ສາມາດປ່ຽນຊື່ພູນຈັດເກັບໄດ້" +ErrVMStoragePathCannotChange: "ບໍ່ສາມາດປ່ຽນເສັ້ນທາງພູນຈັດເກັບໄດ້" +ErrVMRunning: "ເຄື່ອງສະເໝືອນກຳລັງເຮັດວຽກ" +ErrVMLibvirtConnect: "ເຊື່ອມຕໍ່ກັບ libvirt ບໍ່ສຳເລັດ: {{ .detail }}" +ErrVMPermission: "ບໍ່ມີສິດດຳເນີນການກັບເຄື່ອງສະເໝືອນ: {{ .detail }}" +ErrVMNetworkNotFound: "ບໍ່ມີເຄືອຂ່າຍເຄື່ອງສະເໝືອນ: {{ .detail }}" +ErrVMInvalidPath: "ເສັ້ນທາງເຄື່ອງສະເໝືອນບໍ່ຖືກຕ້ອງ: {{ .detail }}" +ErrVMInvalidInput: "ພາລາມິເຕີເຄື່ອງສະເໝືອນບໍ່ຖືກຕ້ອງ: {{ .detail }}" +ErrVMCommandFailed: "ຄຳສັ່ງເຄື່ອງສະເໝືອນລົ້ມເຫຼວ: {{ .err }}" +ErrVMDiskResizeBlocked: "ດິສກ໌ບໍ່ຕອບສະໜອງເງື່ອນໄຂການຂະຫຍາຍ ຫຼື ຖືກອ້າງອີງໂດຍອຸປະກອນອື່ນ. ກະລຸນາກວດສອບສະຖານະດິສກ໌." +ErrVMDiskReferenced: "ດິສກ໌ເສມືອນນີ້ຖືກໃຊ້ໂດຍເຄື່ອງເສມືອນ ຫຼື ອຸປະກອນອື່ນ; ຍັງບໍ່ຮອງຮັບການຂະຫຍາຍ." +ErrVMDiskReferenceCheck: "ບໍ່ສາມາດກວດສອບການອ້າງອີງດິສກ໌ເສມືອນໄດ້. ຍັງຂະຫຍາຍບໍ່ໄດ້; ກະລຸນາກວດສອບດິສກ໌ຂອງເຄື່ອງເສມືອນອື່ນ." +ErrVMSnapshotMetadataSync: "ກູ້ຄືນສະແນັບຊັອດແລ້ວ ແຕ່ຊິງຂໍ້ມູນດິສກ໌ບໍ່ສຳເລັດ. ກະລຸນາໂຫຼດໃໝ່ ແລະ ກວດສອບ; ບໍ່ຈຳເປັນຕ້ອງກູ້ຄືນສະແນັບຊັອດອີກ." +VMCreateTask: "ສ້າງເຄື່ອງສະເໝືອນ [{{ .name }}]" +VMCreateFromTemplateTask: "ສ້າງເຄື່ອງສະເໝືອນ [{{ .name }}] ຈາກແມ່ແບບ" +VMUpdateTask: "ອັບເດດເຄື່ອງສະເໝືອນ [{{ .name }}]" +VMDiskResizeTask: "ຂະຫຍາຍດິສກ໌ [{{ .disk }}] ຂອງເຄື່ອງເສມືອນ [{{ .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 }}]" diff --git a/agent/i18n/lang/ms.yaml b/agent/i18n/lang/ms.yaml index 07d73d4ba..e116874d0 100644 --- a/agent/i18n/lang/ms.yaml +++ b/agent/i18n/lang/ms.yaml @@ -723,3 +723,44 @@ ErrSSHPublicKey: "Masukkan kunci awam SSH yang sah" ErrSSHPrivateKey: "Kunci peribadi SSH tidak sah atau frasa laluan salah; kunci yang disulitkan memerlukan frasa laluan asal" ErrSSHKeyMismatch: "Kunci awam dan peribadi SSH tidak sepadan" +# mesin maya +ErrVMNotFound: "Mesin maya tidak wujud" +ErrVMAlreadyExists: "Mesin maya sudah wujud" +ErrVMCountLimit: "Edisi Professional membenarkan penciptaan sehingga {{ .limit }} mesin maya. Padamkan mesin maya sedia ada atau naik taraf kepada Enterprise dan cuba lagi." +ErrVMImageAlreadyExists: "Fail imej mesin maya sudah wujud: {{ .detail }}" +ErrVMStoragePathInUse: "Laluan kolam storan sudah digunakan oleh [{{ .name }}]" +ErrVMHelperNotFound: "1panel-kvm tidak ditemui" +ErrVMBridgeManaged: "Nama bridge telah diurus oleh libvirt atau Docker" +ErrVMNetworkInUse: "Rangkaian sedang digunakan dan tidak boleh dipadamkan" +ErrVMStorageInUse: "Kumpulan storan sedang digunakan dan tidak boleh dipadamkan" +ErrVMStorageNameCannotChange: "Nama kumpulan storan tidak boleh diubah" +ErrVMStoragePathCannotChange: "Laluan kumpulan storan tidak boleh diubah" +ErrVMRunning: "Mesin maya sedang berjalan" +ErrVMLibvirtConnect: "Gagal menyambung ke libvirt: {{ .detail }}" +ErrVMPermission: "Tiada kebenaran untuk mengendalikan mesin maya: {{ .detail }}" +ErrVMNetworkNotFound: "Rangkaian mesin maya tidak wujud: {{ .detail }}" +ErrVMInvalidPath: "Laluan mesin maya tidak sah: {{ .detail }}" +ErrVMInvalidInput: "Parameter mesin maya tidak sah: {{ .detail }}" +ErrVMCommandFailed: "Arahan mesin maya gagal: {{ .err }}" +ErrVMDiskResizeBlocked: "Cakera tidak memenuhi syarat pembesaran atau dirujuk oleh peranti lain. Semak status cakera." +ErrVMDiskReferenced: "Cakera maya ini digunakan oleh mesin maya atau peranti lain; pembesaran belum disokong." +ErrVMDiskReferenceCheck: "Rujukan cakera maya tidak dapat disahkan. Pembesaran tidak tersedia; semak cakera mesin maya lain." +ErrVMSnapshotMetadataSync: "Syot kilat telah dipulihkan, tetapi maklumat cakera gagal disegerakkan. Muat semula dan semak; tidak perlu memulihkan syot kilat sekali lagi." +VMCreateTask: "Cipta mesin maya [{{ .name }}]" +VMCreateFromTemplateTask: "Cipta mesin maya [{{ .name }}] daripada templat" +VMUpdateTask: "Kemas kini mesin maya [{{ .name }}]" +VMDiskResizeTask: "Besarkan cakera [{{ .disk }}] mesin maya [{{ .name }}]" +VMRenameTask: "Namakan semula mesin maya [{{ .name }}] kepada [{{ .newName }}]" +VMDeleteTask: "Padam mesin maya [{{ .name }}]" +VMTemplateCreateTask: "Simpan mesin maya [{{ .name }}] sebagai templat [{{ .template }}]" +VMTemplateDeleteTask: "Padam templat mesin maya [{{ .name }}]" +VMForceDeleteMetadataOnly: "1panel-kvm tidak ditemui, memadam metadata mesin maya [{{ .name }}] sahaja secara paksa" +VMForceDeleteMetadataAfterLibvirtFailed: "Gagal memadam mesin maya [{{ .name }}] daripada libvirt, memadam metadata secara paksa: {{ .err }}" +VMForceDeleteDiskFailed: "Gagal memadam fail cakera mesin maya [{{ .path }}] secara paksa: {{ .err }}" +VMForceDeleteDiskSuccess: "Fail cakera mesin maya [{{ .path }}] telah dipadam secara paksa" +VMSnapshotCreateTask: "Cipta syot kilat [{{ .snapshot }}] untuk mesin maya [{{ .vm }}]" +VMSnapshotCreateStep: "Cipta syot kilat mesin maya [{{ .snapshot }}]" +VMSnapshotRecoverTask: "Pulihkan syot kilat [{{ .snapshot }}] untuk mesin maya [{{ .vm }}]" +VMSnapshotRecoverStep: "Pulihkan syot kilat mesin maya [{{ .snapshot }}]" +VMSnapshotDeleteTask: "Padam syot kilat [{{ .snapshot }}] untuk mesin maya [{{ .vm }}]" +VMSnapshotDeleteStep: "Padam syot kilat mesin maya [{{ .snapshot }}]" diff --git a/agent/i18n/lang/pt-BR.yaml b/agent/i18n/lang/pt-BR.yaml index 5b04cf38d..64c4bb843 100644 --- a/agent/i18n/lang/pt-BR.yaml +++ b/agent/i18n/lang/pt-BR.yaml @@ -723,3 +723,44 @@ ErrSSHPublicKey: "Informe uma chave pública SSH válida" ErrSSHPrivateKey: "Chave privada SSH inválida ou senha incorreta; chaves criptografadas exigem a senha original" ErrSSHKeyMismatch: "As chaves pública e privada SSH não correspondem" +# máquina virtual +ErrVMNotFound: "Máquina virtual não existe" +ErrVMAlreadyExists: "Máquina virtual já existe" +ErrVMCountLimit: "A edição Professional permite criar até {{ .limit }} máquinas virtuais. Exclua uma máquina virtual existente ou atualize para Enterprise e tente novamente." +ErrVMImageAlreadyExists: "A imagem da máquina virtual já existe: {{ .detail }}" +ErrVMStoragePathInUse: "O caminho do pool de armazenamento já é usado por [{{ .name }}]" +ErrVMHelperNotFound: "1panel-kvm não encontrado" +ErrVMBridgeManaged: "O nome da bridge já é gerenciado pelo libvirt ou Docker" +ErrVMNetworkInUse: "A rede está em uso e não pode ser excluída" +ErrVMStorageInUse: "O pool de armazenamento está em uso e não pode ser excluído" +ErrVMStorageNameCannotChange: "O nome do pool de armazenamento não pode ser alterado" +ErrVMStoragePathCannotChange: "O caminho do pool de armazenamento não pode ser alterado" +ErrVMRunning: "Máquina virtual está em execução" +ErrVMLibvirtConnect: "Falha ao conectar ao libvirt: {{ .detail }}" +ErrVMPermission: "Sem permissão para operar a máquina virtual: {{ .detail }}" +ErrVMNetworkNotFound: "Rede da máquina virtual não existe: {{ .detail }}" +ErrVMInvalidPath: "Caminho da máquina virtual inválido: {{ .detail }}" +ErrVMInvalidInput: "Parâmetro da máquina virtual inválido: {{ .detail }}" +ErrVMCommandFailed: "Falha no comando da máquina virtual: {{ .err }}" +ErrVMDiskResizeBlocked: "O disco não atende aos requisitos de expansão ou é referenciado por outro dispositivo. Verifique seu estado." +ErrVMDiskReferenced: "Este disco virtual é usado por outra máquina virtual ou dispositivo e ainda não pode ser expandido." +ErrVMDiskReferenceCheck: "Não foi possível verificar as referências ao disco virtual. A expansão está indisponível; verifique os discos das outras máquinas virtuais." +ErrVMSnapshotMetadataSync: "O snapshot foi restaurado, mas a sincronização dos dados do disco falhou. Atualize e verifique; não restaure o snapshot novamente." +VMCreateTask: "Criar máquina virtual [{{ .name }}]" +VMCreateFromTemplateTask: "Criar máquina virtual [{{ .name }}] a partir do modelo" +VMUpdateTask: "Atualizar máquina virtual [{{ .name }}]" +VMDiskResizeTask: "Expandir disco [{{ .disk }}] da máquina virtual [{{ .name }}]" +VMRenameTask: "Renomear máquina virtual [{{ .name }}] para [{{ .newName }}]" +VMDeleteTask: "Excluir máquina virtual [{{ .name }}]" +VMTemplateCreateTask: "Salvar máquina virtual [{{ .name }}] como modelo [{{ .template }}]" +VMTemplateDeleteTask: "Excluir modelo de máquina virtual [{{ .name }}]" +VMForceDeleteMetadataOnly: "1panel-kvm não encontrado, excluindo à força apenas os metadados da máquina virtual [{{ .name }}]" +VMForceDeleteMetadataAfterLibvirtFailed: "Falha ao excluir a máquina virtual [{{ .name }}] do libvirt, excluindo metadados à força: {{ .err }}" +VMForceDeleteDiskFailed: "Falha ao excluir à força o arquivo de disco da máquina virtual [{{ .path }}]: {{ .err }}" +VMForceDeleteDiskSuccess: "Arquivo de disco da máquina virtual [{{ .path }}] excluído à força" +VMSnapshotCreateTask: "Criar snapshot [{{ .snapshot }}] para a máquina virtual [{{ .vm }}]" +VMSnapshotCreateStep: "Criar snapshot da máquina virtual [{{ .snapshot }}]" +VMSnapshotRecoverTask: "Restaurar snapshot [{{ .snapshot }}] da máquina virtual [{{ .vm }}]" +VMSnapshotRecoverStep: "Restaurar snapshot da máquina virtual [{{ .snapshot }}]" +VMSnapshotDeleteTask: "Excluir snapshot [{{ .snapshot }}] da máquina virtual [{{ .vm }}]" +VMSnapshotDeleteStep: "Excluir snapshot da máquina virtual [{{ .snapshot }}]" diff --git a/agent/i18n/lang/ru.yaml b/agent/i18n/lang/ru.yaml index 3f137d901..1139cb6bd 100644 --- a/agent/i18n/lang/ru.yaml +++ b/agent/i18n/lang/ru.yaml @@ -723,3 +723,44 @@ ErrSSHPublicKey: "Введите действительный открытый ErrSSHPrivateKey: "Недопустимый закрытый ключ SSH или неверная парольная фраза; для зашифрованных ключей требуется исходная парольная фраза" ErrSSHKeyMismatch: "Открытый и закрытый ключи SSH не соответствуют друг другу" +# виртуальная машина +ErrVMNotFound: "Виртуальная машина не существует" +ErrVMAlreadyExists: "Виртуальная машина уже существует" +ErrVMCountLimit: "В редакции Professional можно создать не более {{ .limit }} виртуальных машин. Удалите существующую виртуальную машину или перейдите на Enterprise и повторите попытку." +ErrVMImageAlreadyExists: "Файл образа виртуальной машины уже существует: {{ .detail }}" +ErrVMStoragePathInUse: "Путь пула хранения уже используется [{{ .name }}]" +ErrVMHelperNotFound: "1panel-kvm не найден" +ErrVMBridgeManaged: "Имя моста уже управляется libvirt или Docker" +ErrVMNetworkInUse: "Сеть используется и не может быть удалена" +ErrVMStorageInUse: "Пул хранилища используется и не может быть удалён" +ErrVMStorageNameCannotChange: "Имя пула хранилища нельзя изменить" +ErrVMStoragePathCannotChange: "Путь к пулу хранилища нельзя изменить" +ErrVMRunning: "Виртуальная машина запущена" +ErrVMLibvirtConnect: "Не удалось подключиться к libvirt: {{ .detail }}" +ErrVMPermission: "Нет разрешения на операцию с виртуальной машиной: {{ .detail }}" +ErrVMNetworkNotFound: "Сеть виртуальной машины не существует: {{ .detail }}" +ErrVMInvalidPath: "Недопустимый путь виртуальной машины: {{ .detail }}" +ErrVMInvalidInput: "Недопустимые параметры виртуальной машины: {{ .detail }}" +ErrVMCommandFailed: "Ошибка выполнения команды виртуальной машины: {{ .err }}" +ErrVMDiskResizeBlocked: "Диск не соответствует условиям расширения или используется другим устройством. Проверьте состояние диска." +ErrVMDiskReferenced: "Этот виртуальный диск используется другой виртуальной машиной или устройством; расширение пока недоступно." +ErrVMDiskReferenceCheck: "Не удалось проверить ссылки на виртуальный диск. Расширение недоступно; проверьте диски других виртуальных машин." +ErrVMSnapshotMetadataSync: "Снимок восстановлен, но синхронизация данных диска не удалась. Обновите данные и проверьте их; повторно восстанавливать снимок не нужно." +VMCreateTask: "Создать виртуальную машину [{{ .name }}]" +VMCreateFromTemplateTask: "Создать виртуальную машину [{{ .name }}] из шаблона" +VMUpdateTask: "Обновить виртуальную машину [{{ .name }}]" +VMDiskResizeTask: "Расширить диск [{{ .disk }}] виртуальной машины [{{ .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 }}]" diff --git a/agent/i18n/lang/tr.yaml b/agent/i18n/lang/tr.yaml index d06d52fda..98866f76f 100644 --- a/agent/i18n/lang/tr.yaml +++ b/agent/i18n/lang/tr.yaml @@ -723,3 +723,44 @@ ErrSSHPublicKey: "Geçerli bir SSH açık anahtarı girin" ErrSSHPrivateKey: "SSH özel anahtarı geçersiz veya parola yanlış; şifreli anahtarlar mevcut parolayı gerektirir" ErrSSHKeyMismatch: "SSH açık ve özel anahtarları eşleşmiyor" +# sanal makine +ErrVMNotFound: "Sanal makine mevcut değil" +ErrVMAlreadyExists: "Sanal makine zaten mevcut" +ErrVMCountLimit: "Professional sürümü en fazla {{ .limit }} sanal makine oluşturulmasına izin verir. Mevcut bir sanal makineyi silin veya Enterprise sürümüne yükseltip tekrar deneyin." +ErrVMImageAlreadyExists: "Sanal makine imaj dosyası zaten mevcut: {{ .detail }}" +ErrVMStoragePathInUse: "Depolama havuzu yolu zaten [{{ .name }}] tarafından kullanılıyor" +ErrVMHelperNotFound: "1panel-kvm bulunamadı" +ErrVMBridgeManaged: "Bridge adı zaten libvirt veya Docker tarafından yönetiliyor" +ErrVMNetworkInUse: "Ağ kullanımda ve silinemez" +ErrVMStorageInUse: "Depolama havuzu kullanımda ve silinemez" +ErrVMStorageNameCannotChange: "Depolama havuzunun adı değiştirilemez" +ErrVMStoragePathCannotChange: "Depolama havuzunun yolu değiştirilemez" +ErrVMRunning: "Sanal makine çalışıyor" +ErrVMLibvirtConnect: "libvirt bağlantısı başarısız: {{ .detail }}" +ErrVMPermission: "Sanal makine işlemi için izin yok: {{ .detail }}" +ErrVMNetworkNotFound: "Sanal makine ağı mevcut değil: {{ .detail }}" +ErrVMInvalidPath: "Geçersiz sanal makine yolu: {{ .detail }}" +ErrVMInvalidInput: "Geçersiz sanal makine parametresi: {{ .detail }}" +ErrVMCommandFailed: "Sanal makine komutu başarısız: {{ .err }}" +ErrVMDiskResizeBlocked: "Disk genişletme koşullarını karşılamıyor veya başka bir aygıt tarafından kullanılıyor. Disk durumunu kontrol edin." +ErrVMDiskReferenced: "Bu sanal disk başka bir sanal makine veya aygıt tarafından kullanılıyor; genişletme henüz desteklenmiyor." +ErrVMDiskReferenceCheck: "Sanal disk başvuruları doğrulanamadı. Genişletme kullanılamıyor; diğer sanal makinelerin disklerini kontrol edin." +ErrVMSnapshotMetadataSync: "Anlık görüntü geri yüklendi ancak disk bilgileri eşitlenemedi. Yenileyip kontrol edin; anlık görüntüyü tekrar geri yüklemeyin." +VMCreateTask: "Sanal makine [{{ .name }}] oluştur" +VMCreateFromTemplateTask: "Şablondan sanal makine [{{ .name }}] oluştur" +VMUpdateTask: "Sanal makine [{{ .name }}] güncelle" +VMDiskResizeTask: "[{{ .name }}] sanal makinesinin [{{ .disk }}] diskini genişlet" +VMRenameTask: "Sanal makine [{{ .name }}] adını [{{ .newName }}] olarak değiştir" +VMDeleteTask: "Sanal makine [{{ .name }}] sil" +VMTemplateCreateTask: "Sanal makine [{{ .name }}] öğesini şablon [{{ .template }}] olarak kaydet" +VMTemplateDeleteTask: "Sanal makine şablonu [{{ .name }}] sil" +VMForceDeleteMetadataOnly: "1panel-kvm bulunamadı, yalnızca sanal makine [{{ .name }}] meta verileri zorla siliniyor" +VMForceDeleteMetadataAfterLibvirtFailed: "Sanal makine [{{ .name }}] libvirt üzerinden silinemedi, meta veriler zorla siliniyor: {{ .err }}" +VMForceDeleteDiskFailed: "Sanal makine disk dosyası [{{ .path }}] zorla silinemedi: {{ .err }}" +VMForceDeleteDiskSuccess: "Sanal makine disk dosyası [{{ .path }}] zorla silindi" +VMSnapshotCreateTask: "Sanal makine [{{ .vm }}] için anlık görüntü [{{ .snapshot }}] oluştur" +VMSnapshotCreateStep: "Sanal makine anlık görüntüsü [{{ .snapshot }}] oluştur" +VMSnapshotRecoverTask: "Sanal makine [{{ .vm }}] anlık görüntüsü [{{ .snapshot }}] geri yükle" +VMSnapshotRecoverStep: "Sanal makine anlık görüntüsü [{{ .snapshot }}] geri yükle" +VMSnapshotDeleteTask: "Sanal makine [{{ .vm }}] anlık görüntüsü [{{ .snapshot }}] sil" +VMSnapshotDeleteStep: "Sanal makine anlık görüntüsü [{{ .snapshot }}] sil" diff --git a/agent/i18n/lang/zh-Hant.yaml b/agent/i18n/lang/zh-Hant.yaml index 5a4aa18ec..d47f10b99 100644 --- a/agent/i18n/lang/zh-Hant.yaml +++ b/agent/i18n/lang/zh-Hant.yaml @@ -722,3 +722,45 @@ ErrForwardInterfaceNotFound: "轉發規則指定的網卡 {{ .name }} 不存在 ErrSSHPublicKey: "請輸入有效的 SSH 公鑰" ErrSSHPrivateKey: "SSH 私鑰格式無效或密碼錯誤;加密私鑰需要填寫原密碼" ErrSSHKeyMismatch: "SSH 公鑰與私鑰不相符" + +# 虛擬機 +ErrVMNotFound: "虛擬機不存在" +ErrVMAlreadyExists: "虛擬機已存在" +ErrVMCountLimit: "專業版最多可建立 {{ .limit }} 台虛擬機,請刪除現有虛擬機或升級企業版後重試。" +ErrVMImageAlreadyExists: "虛擬機映像檔已存在: {{ .detail }}" +ErrVMStoragePathInUse: "儲存池路徑已被 [{{ .name }}] 使用" +ErrVMHelperNotFound: "1panel-kvm 不存在" +ErrVMBridgeManaged: "橋接名稱已被 libvirt 或 Docker 管理" +ErrVMNetworkInUse: "網路正在被使用,無法刪除" +ErrVMStorageInUse: "儲存池正在被使用,無法刪除" +ErrVMStorageNameCannotChange: "儲存池名稱無法修改" +ErrVMStoragePathCannotChange: "儲存池路徑無法修改" +ErrVMRunning: "虛擬機正在執行" +ErrVMLibvirtConnect: "連接 libvirt 失敗: {{ .detail }}" +ErrVMPermission: "沒有虛擬機操作權限: {{ .detail }}" +ErrVMNetworkNotFound: "虛擬機網路不存在: {{ .detail }}" +ErrVMInvalidPath: "虛擬機路徑非法: {{ .detail }}" +ErrVMInvalidInput: "虛擬機參數非法: {{ .detail }}" +ErrVMCommandFailed: "虛擬機指令執行失敗: {{ .err }}" +ErrVMDiskResizeBlocked: "磁碟不符合擴容條件,或被其他裝置引用,請檢查磁碟狀態" +ErrVMDiskReferenced: "此虛擬硬碟被其他虛擬機或裝置使用,暫不支援擴容" +ErrVMDiskReferenceCheck: "無法完成虛擬硬碟引用檢查,暫不支援擴容,請檢查其他虛擬機的磁碟狀態" +ErrVMSnapshotMetadataSync: "快照已還原,但磁碟資訊同步失敗,請重新整理檢查,無需重複還原快照" +VMCreateTask: "建立虛擬機 [{{ .name }}]" +VMCreateFromTemplateTask: "從範本建立虛擬機 [{{ .name }}]" +VMUpdateTask: "更新虛擬機 [{{ .name }}]" +VMDiskResizeTask: "擴容虛擬機 [{{ .name }}] 磁碟 [{{ .disk }}]" +VMRenameTask: "重新命名虛擬機 [{{ .name }}] 為 [{{ .newName }}]" +VMDeleteTask: "刪除虛擬機 [{{ .name }}]" +VMTemplateCreateTask: "轉存虛擬機 [{{ .name }}] 為範本 [{{ .template }}]" +VMTemplateDeleteTask: "刪除虛擬機範本 [{{ .name }}]" +VMForceDeleteMetadataOnly: "1panel-kvm 不存在,僅強制刪除虛擬機 [{{ .name }}] 元資料" +VMForceDeleteMetadataAfterLibvirtFailed: "從 libvirt 刪除虛擬機 [{{ .name }}] 失敗,強制刪除元資料: {{ .err }}" +VMForceDeleteDiskFailed: "強制刪除虛擬機磁碟檔案 [{{ .path }}] 失敗: {{ .err }}" +VMForceDeleteDiskSuccess: "已強制刪除虛擬機磁碟檔案 [{{ .path }}]" +VMSnapshotCreateTask: "建立虛擬機 [{{ .vm }}] 快照 [{{ .snapshot }}]" +VMSnapshotCreateStep: "建立虛擬機快照 [{{ .snapshot }}]" +VMSnapshotRecoverTask: "復原虛擬機 [{{ .vm }}] 快照 [{{ .snapshot }}]" +VMSnapshotRecoverStep: "復原虛擬機快照 [{{ .snapshot }}]" +VMSnapshotDeleteTask: "刪除虛擬機 [{{ .vm }}] 快照 [{{ .snapshot }}]" +VMSnapshotDeleteStep: "刪除虛擬機快照 [{{ .snapshot }}]" diff --git a/agent/i18n/lang/zh.yaml b/agent/i18n/lang/zh.yaml index 9676e2a31..aaa8a0629 100644 --- a/agent/i18n/lang/zh.yaml +++ b/agent/i18n/lang/zh.yaml @@ -723,3 +723,44 @@ ErrSSHPublicKey: "请输入有效的 SSH 公钥" ErrSSHPrivateKey: "SSH 私钥格式无效或密码错误;加密私钥需要填写原密码" ErrSSHKeyMismatch: "SSH 公钥与私钥不匹配" +# 虚拟机 +ErrVMNotFound: "虚拟机不存在" +ErrVMAlreadyExists: "虚拟机已存在" +ErrVMCountLimit: "专业版最多可创建 {{ .limit }} 台虚拟机,请删除已有虚拟机或升级企业版后重试。" +ErrVMImageAlreadyExists: "虚拟机镜像文件已存在: {{ .detail }}" +ErrVMStoragePathInUse: "存储池路径已被 [{{ .name }}] 使用" +ErrVMHelperNotFound: "1panel-kvm 不存在" +ErrVMBridgeManaged: "桥接名称已被 libvirt 或 Docker 管理" +ErrVMNetworkInUse: "网络正在被使用,无法删除" +ErrVMStorageInUse: "存储池正在被使用,无法删除" +ErrVMStorageNameCannotChange: "存储池名称无法修改" +ErrVMStoragePathCannotChange: "存储池路径无法修改" +ErrVMRunning: "虚拟机正在运行" +ErrVMLibvirtConnect: "连接 libvirt 失败: {{ .detail }}" +ErrVMPermission: "没有虚拟机操作权限: {{ .detail }}" +ErrVMNetworkNotFound: "虚拟机网络不存在: {{ .detail }}" +ErrVMInvalidPath: "虚拟机路径非法: {{ .detail }}" +ErrVMInvalidInput: "虚拟机参数非法: {{ .detail }}" +ErrVMCommandFailed: "虚拟机命令执行失败: {{ .err }}" +ErrVMDiskResizeBlocked: "磁盘不符合扩容条件,或被其他设备引用,请检查磁盘状态" +ErrVMDiskReferenced: "该虚拟硬盘被其他虚拟机或设备使用,暂不支持扩容" +ErrVMDiskReferenceCheck: "无法完成虚拟硬盘引用检查,暂不支持扩容,请检查其他虚拟机的磁盘状态" +ErrVMSnapshotMetadataSync: "快照已恢复,但磁盘信息同步失败,请刷新检查,无需重复恢复快照" +VMCreateTask: "创建虚拟机 [{{ .name }}]" +VMCreateFromTemplateTask: "从模板创建虚拟机 [{{ .name }}]" +VMUpdateTask: "更新虚拟机 [{{ .name }}]" +VMDiskResizeTask: "扩容虚拟机 [{{ .name }}] 磁盘 [{{ .disk }}]" +VMRenameTask: "重命名虚拟机 [{{ .name }}] 为 [{{ .newName }}]" +VMDeleteTask: "删除虚拟机 [{{ .name }}]" +VMTemplateCreateTask: "转存虚拟机 [{{ .name }}] 为模板 [{{ .template }}]" +VMTemplateDeleteTask: "删除虚拟机模板 [{{ .name }}]" +VMForceDeleteMetadataOnly: "1panel-kvm 不存在,仅强制删除虚拟机 [{{ .name }}] 元数据" +VMForceDeleteMetadataAfterLibvirtFailed: "从 libvirt 删除虚拟机 [{{ .name }}] 失败,强制删除元数据: {{ .err }}" +VMForceDeleteDiskFailed: "强制删除虚拟机磁盘文件 [{{ .path }}] 失败: {{ .err }}" +VMForceDeleteDiskSuccess: "已强制删除虚拟机磁盘文件 [{{ .path }}]" +VMSnapshotCreateTask: "创建虚拟机 [{{ .vm }}] 快照 [{{ .snapshot }}]" +VMSnapshotCreateStep: "创建虚拟机快照 [{{ .snapshot }}]" +VMSnapshotRecoverTask: "恢复虚拟机 [{{ .vm }}] 快照 [{{ .snapshot }}]" +VMSnapshotRecoverStep: "恢复虚拟机快照 [{{ .snapshot }}]" +VMSnapshotDeleteTask: "删除虚拟机 [{{ .vm }}] 快照 [{{ .snapshot }}]" +VMSnapshotDeleteStep: "删除虚拟机快照 [{{ .snapshot }}]" diff --git a/agent/init/validator/validator.go b/agent/init/validator/validator.go index 6a58af582..2b898a613 100644 --- a/agent/init/validator/validator.go +++ b/agent/init/validator/validator.go @@ -20,6 +20,12 @@ func Init() { if err := validator.RegisterValidation("password", checkPasswordPattern); err != nil { panic(err) } + if err := validator.RegisterValidation("vm_name", checkVMNamePattern); err != nil { + panic(err) + } + if err := validator.RegisterValidation("vm_common", checkVMCommonPattern); err != nil { + panic(err) + } global.VALID = validator } @@ -55,3 +61,12 @@ func checkPasswordPattern(fl validator.FieldLevel) bool { return false } + +func checkVMNamePattern(fl validator.FieldLevel) bool { + value := fl.Field().String() + return re.GetRegex(re.VMNameValidationPattern).MatchString(value) +} +func checkVMCommonPattern(fl validator.FieldLevel) bool { + value := fl.Field().String() + return re.GetRegex(re.VMCommonPattern).MatchString(value) +} diff --git a/agent/utils/re/re.go b/agent/utils/re/re.go index f2413f056..676c94412 100644 --- a/agent/utils/re/re.go +++ b/agent/utils/re/re.go @@ -6,6 +6,9 @@ import ( ) const ( + VMNameValidationPattern = `^[a-zA-Z0-9][a-zA-Z0-9._-]{0,63}$` + VMCommonPattern = `^[a-zA-Z0-9][a-zA-Z0-9._:-]{0,63}$` + VLLMMetricSamplePattern = `^([a-zA-Z_:][a-zA-Z0-9_:]*)(\{(?:[^"\\]|"(?:\\.|[^"\\])*")*\})?\s+(\S+)(?:\s+.*)?$` VLLMMetricLabelPattern = `([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*("(?:[^"\\]|\\.)*")` NumberAlphaPattern = `(\d+)([A-Za-z]+)` @@ -63,6 +66,9 @@ var regexMap = make(map[string]*regexp.Regexp) func Init() { patterns := []string{ + VMNameValidationPattern, + VMCommonPattern, + VLLMMetricSamplePattern, VLLMMetricLabelPattern, NumberAlphaPattern, diff --git a/core/app/task/task.go b/core/app/task/task.go index db90d5379..2bc5d866d 100644 --- a/core/app/task/task.go +++ b/core/app/task/task.go @@ -80,7 +80,6 @@ const ( TaskScopeCluster = "Cluster" TaskScopeAppInstall = "AppInstallTask" TaskScopeAI = "AI" - TaskScopeVm = "VirtualMachine" ) func GetTaskName(resourceName, operate, scope string) string { diff --git a/core/cmd/server/docs/x-log.json b/core/cmd/server/docs/x-log.json index 7974f4b8a..1d2e0fedc 100644 --- a/core/cmd/server/docs/x-log.json +++ b/core/cmd/server/docs/x-log.json @@ -2459,7 +2459,7 @@ "formatZH": "同步 SSL 证书 [primaryDomain]", "formatEN": "sync SSL certificate [primaryDomain]" }, - "/core/xpack/vms": { + "/xpack/vms": { "bodyKeys": [ "name" ], @@ -2468,7 +2468,7 @@ "formatZH": "创建虚拟机 [name]", "formatEN": "create VM [name]" }, - "/core/xpack/vms/del": { + "/xpack/vms/del": { "bodyKeys": [ "id" ], @@ -2486,7 +2486,7 @@ "formatZH": "删除虚拟机 [name]", "formatEN": "delete VM [name]" }, - "/core/xpack/vms/disks/resize": { + "/xpack/vms/disks/resize": { "bodyKeys": [ "name", "target", @@ -2497,14 +2497,14 @@ "formatZH": "扩容虚拟机 [name] 磁盘 [target] 至 [sizeGiB] GiB", "formatEN": "expand VM [name] disk [target] to [sizeGiB] GiB" }, - "/core/xpack/vms/environment/enable": { + "/xpack/vms/environment/enable": { "bodyKeys": [], "paramKeys": [], "beforeFunctions": [], "formatZH": "启用虚拟机运行环境", "formatEN": "enable VM runtime environment" }, - "/core/xpack/vms/iso": { + "/xpack/vms/iso": { "bodyKeys": [ "name", "type" @@ -2514,7 +2514,7 @@ "formatZH": "创建虚拟机镜像 [name] [type]", "formatEN": "create VM ISO [name] [type]" }, - "/core/xpack/vms/iso/del": { + "/xpack/vms/iso/del": { "bodyKeys": [ "id" ], @@ -2532,7 +2532,7 @@ "formatZH": "删除虚拟机镜像 [name]", "formatEN": "delete VM ISO [name]" }, - "/core/xpack/vms/iso/update": { + "/xpack/vms/iso/update": { "bodyKeys": [ "name", "type" @@ -2542,7 +2542,7 @@ "formatZH": "更新虚拟机镜像 [name] [type]", "formatEN": "update VM ISO [name] [type]" }, - "/core/xpack/vms/networks": { + "/xpack/vms/networks": { "bodyKeys": [ "name", "type" @@ -2552,7 +2552,7 @@ "formatZH": "创建虚拟机网络 [name] [type]", "formatEN": "create VM network [name] [type]" }, - "/core/xpack/vms/networks/del": { + "/xpack/vms/networks/del": { "bodyKeys": [ "id" ], @@ -2570,7 +2570,7 @@ "formatZH": "删除虚拟机网络 [name]", "formatEN": "delete VM network [name]" }, - "/core/xpack/vms/networks/update": { + "/xpack/vms/networks/update": { "bodyKeys": [ "id" ], @@ -2588,7 +2588,7 @@ "formatZH": "更新虚拟机网络 [name]", "formatEN": "update VM network [name]" }, - "/core/xpack/vms/operate": { + "/xpack/vms/operate": { "bodyKeys": [ "name", "operate" @@ -2598,14 +2598,14 @@ "formatZH": "操作虚拟机 [name] [operate]", "formatEN": "operate VM [name] [operate]" }, - "/core/xpack/vms/orphans/clean": { + "/xpack/vms/orphans/clean": { "bodyKeys": [], "paramKeys": [], "beforeFunctions": [], "formatZH": "清理虚拟机孤立数据", "formatEN": "clean VM orphaned data" }, - "/core/xpack/vms/rename": { + "/xpack/vms/rename": { "bodyKeys": [ "name", "newName" @@ -2615,7 +2615,7 @@ "formatZH": "重命名虚拟机 [name] 为 [newName]", "formatEN": "rename VM [name] to [newName]" }, - "/core/xpack/vms/snapshots": { + "/xpack/vms/snapshots": { "bodyKeys": [ "name", "snapshotName" @@ -2625,7 +2625,7 @@ "formatZH": "创建虚拟机 [name] 快照 [snapshotName]", "formatEN": "create VM [name] snapshot [snapshotName]" }, - "/core/xpack/vms/snapshots/del": { + "/xpack/vms/snapshots/del": { "bodyKeys": [ "name", "snapshotName" @@ -2635,7 +2635,7 @@ "formatZH": "删除虚拟机 [name] 快照 [snapshotName]", "formatEN": "delete VM [name] snapshot [snapshotName]" }, - "/core/xpack/vms/snapshots/recover": { + "/xpack/vms/snapshots/recover": { "bodyKeys": [ "name", "snapshotName" @@ -2645,7 +2645,7 @@ "formatZH": "恢复虚拟机 [name] 快照 [snapshotName]", "formatEN": "recover VM [name] snapshot [snapshotName]" }, - "/core/xpack/vms/storages": { + "/xpack/vms/storages": { "bodyKeys": [ "name", "type" @@ -2655,7 +2655,7 @@ "formatZH": "创建虚拟机存储 [name] [type]", "formatEN": "create VM storage [name] [type]" }, - "/core/xpack/vms/storages/del": { + "/xpack/vms/storages/del": { "bodyKeys": [ "id" ], @@ -2673,7 +2673,7 @@ "formatZH": "删除虚拟机存储 [name]", "formatEN": "delete VM storage [name]" }, - "/core/xpack/vms/storages/update": { + "/xpack/vms/storages/update": { "bodyKeys": [ "id" ], @@ -2691,14 +2691,14 @@ "formatZH": "更新虚拟机存储 [name]", "formatEN": "update VM storage [name]" }, - "/core/xpack/vms/sync": { + "/xpack/vms/sync": { "bodyKeys": [], "paramKeys": [], "beforeFunctions": [], "formatZH": "同步虚拟机", "formatEN": "sync virtual machines" }, - "/core/xpack/vms/templates": { + "/xpack/vms/templates": { "bodyKeys": [ "name", "templateName" @@ -2708,7 +2708,7 @@ "formatZH": "创建虚拟机 [name] 模板 [templateName]", "formatEN": "create VM [name] template [templateName]" }, - "/core/xpack/vms/templates/del": { + "/xpack/vms/templates/del": { "bodyKeys": [ "id" ], @@ -2726,7 +2726,7 @@ "formatZH": "删除虚拟机模板 [name]", "formatEN": "delete VM template [name]" }, - "/core/xpack/vms/update": { + "/xpack/vms/update": { "bodyKeys": [ "name" ], diff --git a/core/i18n/lang/en.yaml b/core/i18n/lang/en.yaml index 98a30dde9..da8c5f003 100644 --- a/core/i18n/lang/en.yaml +++ b/core/i18n/lang/en.yaml @@ -133,48 +133,6 @@ AppStatusUnHealthy: "Failed to fetch application status. Check installation node MasterNodePortNotAvailable: "Node {{ .name }} port {{ .port }} connectivity check failed. Check firewall/security group settings and master node status." ClusterMasterNotExist: "Cluster master node is disconnected. Delete child nodes." -# virtual machine -ErrVMNotFound: "Virtual machine does not exist" -ErrVMAlreadyExists: "Virtual machine already exists" -ErrVMCountLimit: "The Professional edition supports up to {{ .limit }} virtual machines. Delete an existing VM or upgrade to Enterprise to create more." -ErrVMImageAlreadyExists: "Virtual machine image already exists: {{ .detail }}" -ErrVMStoragePathInUse: "Storage pool path is already used by [{{ .name }}]" -ErrVMHelperNotFound: "1panel-kvm not found" -ErrVMBridgeManaged: "Bridge name is already managed by libvirt or Docker" -ErrVMNetworkInUse: "Network is in use and cannot be deleted" -ErrVMStorageInUse: "Storage pool is in use and cannot be deleted" -ErrVMStorageNameCannotChange: "Storage pool name cannot be changed" -ErrVMStoragePathCannotChange: "Storage pool path cannot be changed" -ErrVMRunning: "Virtual machine is running" -ErrVMLibvirtConnect: "Failed to connect to libvirt: {{ .detail }}" -ErrVMPermission: "No permission to operate virtual machine: {{ .detail }}" -ErrVMNetworkNotFound: "Virtual machine network does not exist: {{ .detail }}" -ErrVMInvalidPath: "Invalid virtual machine path: {{ .detail }}" -ErrVMInvalidInput: "Invalid virtual machine parameter: {{ .detail }}" -ErrVMCommandFailed: "Virtual machine command failed: {{ .err }}" -ErrVMDiskResizeBlocked: "The disk does not meet expansion requirements or is referenced by another device. Check the disk status." -ErrVMDiskReferenced: "This virtual disk is used by another virtual machine or device and cannot be expanded yet." -ErrVMDiskReferenceCheck: "Cannot complete virtual disk reference checks. Expansion is unavailable; check the disks of other virtual machines." -ErrVMSnapshotMetadataSync: "The snapshot was restored, but disk information could not be synced. Refresh and check; do not restore the snapshot again." -VMCreateTask: "Create virtual machine [{{ .name }}]" -VMCreateFromTemplateTask: "Create virtual machine [{{ .name }}] from template" -VMUpdateTask: "Update virtual machine [{{ .name }}]" -VMDiskResizeTask: "Expand disk [{{ .disk }}] of virtual machine [{{ .name }}]" -VMRenameTask: "Rename virtual machine [{{ .name }}] to [{{ .newName }}]" -VMDeleteTask: "Delete virtual machine [{{ .name }}]" -VMTemplateCreateTask: "Save virtual machine [{{ .name }}] as template [{{ .template }}]" -VMTemplateDeleteTask: "Delete virtual machine template [{{ .name }}]" -VMForceDeleteMetadataOnly: "1panel-kvm not found, force deleting virtual machine [{{ .name }}] metadata only" -VMForceDeleteMetadataAfterLibvirtFailed: "Failed to delete virtual machine [{{ .name }}] from libvirt, force deleting metadata: {{ .err }}" -VMForceDeleteDiskFailed: "Force delete virtual machine disk file [{{ .path }}] failed: {{ .err }}" -VMForceDeleteDiskSuccess: "Force deleted virtual machine disk file [{{ .path }}]" -VMSnapshotCreateTask: "Create snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" -VMSnapshotCreateStep: "Create virtual machine snapshot [{{ .snapshot }}]" -VMSnapshotRecoverTask: "Recover snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" -VMSnapshotRecoverStep: "Recover virtual machine snapshot [{{ .snapshot }}]" -VMSnapshotDeleteTask: "Delete snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" -VMSnapshotDeleteStep: "Delete virtual machine snapshot [{{ .snapshot }}]" - # app CustomAppStoreFileValid: "Application store package requires .tar.gz format" AppBackup: 'Application backup' diff --git a/core/i18n/lang/es-ES.yaml b/core/i18n/lang/es-ES.yaml index f1b402c00..9f334a344 100644 --- a/core/i18n/lang/es-ES.yaml +++ b/core/i18n/lang/es-ES.yaml @@ -133,48 +133,6 @@ AppStatusUnHealthy: "Adquisición anormal del estado de la aplicación, revise e MasterNodePortNotAvailable: "Verificación de conectividad del puerto {{ .port }} del nodo {{ .name }} fallida, verifique la configuración del firewall/grupo de seguridad y el estado del nodo principal." ClusterMasterNotExist: "El nodo principal del clúster está desconectado, elimine los nodos secundarios." -# máquina virtual -ErrVMNotFound: "La máquina virtual no existe" -ErrVMAlreadyExists: "La máquina virtual ya existe" -ErrVMCountLimit: "La edición Professional permite crear hasta {{ .limit }} máquinas virtuales. Elimina una máquina virtual existente o actualiza a Enterprise y vuelve a intentarlo." -ErrVMImageAlreadyExists: "La imagen de la máquina virtual ya existe: {{ .detail }}" -ErrVMStoragePathInUse: "La ruta del pool de almacenamiento ya está usada por [{{ .name }}]" -ErrVMHelperNotFound: "No se encontró 1panel-kvm" -ErrVMBridgeManaged: "El nombre del bridge ya está administrado por libvirt o Docker" -ErrVMNetworkInUse: "La red está en uso y no se puede eliminar" -ErrVMStorageInUse: "El pool de almacenamiento está en uso y no se puede eliminar" -ErrVMStorageNameCannotChange: "El nombre del pool de almacenamiento no se puede cambiar" -ErrVMStoragePathCannotChange: "La ruta del pool de almacenamiento no se puede cambiar" -ErrVMRunning: "La máquina virtual está en ejecución" -ErrVMLibvirtConnect: "Error al conectar con libvirt: {{ .detail }}" -ErrVMPermission: "Sin permiso para operar la máquina virtual: {{ .detail }}" -ErrVMNetworkNotFound: "La red de la máquina virtual no existe: {{ .detail }}" -ErrVMInvalidPath: "Ruta de máquina virtual no válida: {{ .detail }}" -ErrVMInvalidInput: "Parámetro de máquina virtual no válido: {{ .detail }}" -ErrVMCommandFailed: "Error al ejecutar el comando de la máquina virtual: {{ .err }}" -ErrVMDiskResizeBlocked: "El disco no cumple los requisitos de ampliación o está referenciado por otro dispositivo. Compruebe su estado." -ErrVMDiskReferenced: "Otro equipo virtual o dispositivo utiliza este disco virtual; la ampliación aún no se admite." -ErrVMDiskReferenceCheck: "No se pueden comprobar las referencias al disco virtual. La ampliación no está disponible; revise los discos de otras máquinas virtuales." -ErrVMSnapshotMetadataSync: "La instantánea se restauró, pero falló la sincronización de los datos del disco. Actualice y compruebe; no restaure de nuevo la instantánea." -VMCreateTask: "Crear máquina virtual [{{ .name }}]" -VMCreateFromTemplateTask: "Crear máquina virtual [{{ .name }}] desde plantilla" -VMUpdateTask: "Actualizar máquina virtual [{{ .name }}]" -VMDiskResizeTask: "Ampliar disco [{{ .disk }}] de la máquina virtual [{{ .name }}]" -VMRenameTask: "Renombrar máquina virtual [{{ .name }}] a [{{ .newName }}]" -VMDeleteTask: "Eliminar máquina virtual [{{ .name }}]" -VMTemplateCreateTask: "Guardar máquina virtual [{{ .name }}] como plantilla [{{ .template }}]" -VMTemplateDeleteTask: "Eliminar plantilla de máquina virtual [{{ .name }}]" -VMForceDeleteMetadataOnly: "1panel-kvm no encontrado, eliminando solo los metadatos de la máquina virtual [{{ .name }}]" -VMForceDeleteMetadataAfterLibvirtFailed: "Error al eliminar la máquina virtual [{{ .name }}] de libvirt, eliminando metadatos: {{ .err }}" -VMForceDeleteDiskFailed: "Error al forzar la eliminación del archivo de disco de la máquina virtual [{{ .path }}]: {{ .err }}" -VMForceDeleteDiskSuccess: "Archivo de disco de la máquina virtual [{{ .path }}] eliminado forzosamente" -VMSnapshotCreateTask: "Crear instantánea [{{ .snapshot }}] para la máquina virtual [{{ .vm }}]" -VMSnapshotCreateStep: "Crear instantánea de máquina virtual [{{ .snapshot }}]" -VMSnapshotRecoverTask: "Restaurar instantánea [{{ .snapshot }}] para la máquina virtual [{{ .vm }}]" -VMSnapshotRecoverStep: "Restaurar instantánea de máquina virtual [{{ .snapshot }}]" -VMSnapshotDeleteTask: "Eliminar instantánea [{{ .snapshot }}] de la máquina virtual [{{ .vm }}]" -VMSnapshotDeleteStep: "Eliminar instantánea de máquina virtual [{{ .snapshot }}]" - # aplicación CustomAppStoreFileValid: "El paquete de la tienda de aplicaciones debe tener formato .tar.gz" AppBackup: 'Copia de seguridad de aplicación' diff --git a/core/i18n/lang/fa.yaml b/core/i18n/lang/fa.yaml index 32e5a006a..a6367a00b 100644 --- a/core/i18n/lang/fa.yaml +++ b/core/i18n/lang/fa.yaml @@ -133,48 +133,6 @@ AppStatusUnHealthy: "دریافت وضعیت برنامه ناموفق بود. MasterNodePortNotAvailable: "بررسی اتصال پورت {{ .port }} گره {{ .name }} ناموفق بود. تنظیمات دیواره آتش/گروه امنیتی و وضعیت گره اصلی را بررسی کنید." ClusterMasterNotExist: "گره اصلی خوشه قطع شده است. گره‌های زیرین را حذف کنید." -# ماشین مجازی -ErrVMNotFound: "ماشین مجازی وجود ندارد" -ErrVMAlreadyExists: "ماشین مجازی از قبل وجود دارد" -ErrVMCountLimit: "در نسخه Professional می‌توانید حداکثر {{ .limit }} ماشین مجازی ایجاد کنید. یک ماشین مجازی موجود را حذف کنید یا به نسخه Enterprise ارتقا دهید و دوباره تلاش کنید." -ErrVMImageAlreadyExists: "فایل ایمیج ماشین مجازی از قبل وجود دارد: {{ .detail }}" -ErrVMStoragePathInUse: "مسیر استخر ذخیره‌سازی قبلاً توسط [{{ .name }}] استفاده شده است" -ErrVMHelperNotFound: "1panel-kvm یافت نشد" -ErrVMBridgeManaged: "نام bridge از قبل توسط libvirt یا Docker مدیریت می‌شود" -ErrVMNetworkInUse: "شبکه در حال استفاده است و قابل حذف نیست" -ErrVMStorageInUse: "مخزن ذخیره‌سازی در حال استفاده است و قابل حذف نیست" -ErrVMStorageNameCannotChange: "نام مخزن ذخیره‌سازی قابل تغییر نیست" -ErrVMStoragePathCannotChange: "مسیر مخزن ذخیره‌سازی قابل تغییر نیست" -ErrVMRunning: "ماشین مجازی در حال اجرا است" -ErrVMLibvirtConnect: "اتصال به libvirt ناموفق بود: {{ .detail }}" -ErrVMPermission: "مجوز عملیات ماشین مجازی وجود ندارد: {{ .detail }}" -ErrVMNetworkNotFound: "شبکه ماشین مجازی وجود ندارد: {{ .detail }}" -ErrVMInvalidPath: "مسیر ماشین مجازی نامعتبر است: {{ .detail }}" -ErrVMInvalidInput: "پارامتر ماشین مجازی نامعتبر است: {{ .detail }}" -ErrVMCommandFailed: "اجرای دستور ماشین مجازی ناموفق بود: {{ .err }}" -ErrVMDiskResizeBlocked: "دیسک شرایط افزایش ظرفیت را ندارد یا دستگاه دیگری به آن ارجاع می‌دهد. وضعیت دیسک را بررسی کنید." -ErrVMDiskReferenced: "این دیسک مجازی توسط ماشین مجازی یا دستگاه دیگری استفاده می‌شود؛ افزایش ظرفیت فعلاً پشتیبانی نمی‌شود." -ErrVMDiskReferenceCheck: "بررسی ارجاع‌های دیسک مجازی کامل نشد. افزایش ظرفیت ممکن نیست؛ دیسک‌های سایر ماشین‌های مجازی را بررسی کنید." -ErrVMSnapshotMetadataSync: "اسنپ‌شات بازیابی شد، اما همگام‌سازی اطلاعات دیسک ناموفق بود. تازه‌سازی و بررسی کنید؛ نیازی به بازیابی دوباره اسنپ‌شات نیست." -VMCreateTask: "ایجاد ماشین مجازی [{{ .name }}]" -VMCreateFromTemplateTask: "ایجاد ماشین مجازی [{{ .name }}] از قالب" -VMUpdateTask: "به‌روزرسانی ماشین مجازی [{{ .name }}]" -VMDiskResizeTask: "افزایش ظرفیت دیسک [{{ .disk }}] ماشین مجازی [{{ .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 }}]" - # برنامه CustomAppStoreFileValid: "بسته فروشگاه برنامه باید با فرمت .tar.gz باشد" AppBackup: 'پشتیبان‌گیری از برنامه' diff --git a/core/i18n/lang/ja.yaml b/core/i18n/lang/ja.yaml index b6946d811..1b1f973b3 100644 --- a/core/i18n/lang/ja.yaml +++ b/core/i18n/lang/ja.yaml @@ -133,48 +133,6 @@ AppStatusUnHealthy: "アプリケーションのステータス取得が異常 MasterNodePortNotAvailable: "ノード {{ .name }} のポート {{ .port }} の接続性検証が失敗しました。ファイアウォール/セキュリティグループの設定とマスターノードのステータスを確認してください。" ClusterMasterNotExist: "クラスタのマスターノードが切断されています。子ノードを削除してください。" -# 仮想マシン -ErrVMNotFound: "仮想マシンが存在しません" -ErrVMAlreadyExists: "仮想マシンは既に存在します" -ErrVMCountLimit: "Professional 版では最大 {{ .limit }} 台の仮想マシンを作成できます。既存の仮想マシンを削除するか、Enterprise 版にアップグレードしてから再試行してください。" -ErrVMImageAlreadyExists: "仮想マシンのイメージファイルは既に存在します: {{ .detail }}" -ErrVMStoragePathInUse: "ストレージプールのパスは既に [{{ .name }}] で使用されています" -ErrVMHelperNotFound: "1panel-kvm が見つかりません" -ErrVMBridgeManaged: "ブリッジ名はすでに libvirt または Docker によって管理されています" -ErrVMNetworkInUse: "ネットワークは使用中のため削除できません" -ErrVMStorageInUse: "ストレージプールは使用中のため削除できません" -ErrVMStorageNameCannotChange: "ストレージプール名は変更できません" -ErrVMStoragePathCannotChange: "ストレージプールのパスは変更できません" -ErrVMRunning: "仮想マシンは実行中です" -ErrVMLibvirtConnect: "libvirt への接続に失敗しました: {{ .detail }}" -ErrVMPermission: "仮想マシンを操作する権限がありません: {{ .detail }}" -ErrVMNetworkNotFound: "仮想マシンネットワークが存在しません: {{ .detail }}" -ErrVMInvalidPath: "仮想マシンのパスが無効です: {{ .detail }}" -ErrVMInvalidInput: "仮想マシンのパラメータが無効です: {{ .detail }}" -ErrVMCommandFailed: "仮想マシンコマンドの実行に失敗しました: {{ .err }}" -ErrVMDiskResizeBlocked: "ディスクが拡張条件を満たしていないか、他のデバイスから参照されています。ディスクの状態を確認してください。" -ErrVMDiskReferenced: "この仮想ディスクは他の仮想マシンまたはデバイスで使用されているため、現在は拡張できません。" -ErrVMDiskReferenceCheck: "仮想ディスクの参照を確認できないため拡張できません。他の仮想マシンのディスク状態を確認してください。" -ErrVMSnapshotMetadataSync: "スナップショットは復元されましたが、ディスク情報の同期に失敗しました。更新して確認してください。再度復元する必要はありません。" -VMCreateTask: "仮想マシン [{{ .name }}] を作成" -VMCreateFromTemplateTask: "テンプレートから仮想マシン [{{ .name }}] を作成" -VMUpdateTask: "仮想マシン [{{ .name }}] を更新" -VMDiskResizeTask: "仮想マシン [{{ .name }}] のディスク [{{ .disk }}] を拡張" -VMRenameTask: "仮想マシン [{{ .name }}] を [{{ .newName }}] にリネーム" -VMDeleteTask: "仮想マシン [{{ .name }}] を削除" -VMTemplateCreateTask: "仮想マシン [{{ .name }}] をテンプレート [{{ .template }}] として保存" -VMTemplateDeleteTask: "仮想マシンテンプレート [{{ .name }}] を削除" -VMForceDeleteMetadataOnly: "1panel-kvm が見つかりません。仮想マシン [{{ .name }}] のメタデータのみを強制削除します" -VMForceDeleteMetadataAfterLibvirtFailed: "libvirt から仮想マシン [{{ .name }}] を削除できませんでした。メタデータを強制削除します: {{ .err }}" -VMForceDeleteDiskFailed: "仮想マシンディスクファイル [{{ .path }}] の強制削除に失敗しました: {{ .err }}" -VMForceDeleteDiskSuccess: "仮想マシンディスクファイル [{{ .path }}] を強制削除しました" -VMSnapshotCreateTask: "仮想マシン [{{ .vm }}] のスナップショット [{{ .snapshot }}] を作成" -VMSnapshotCreateStep: "仮想マシンのスナップショット [{{ .snapshot }}] を作成" -VMSnapshotRecoverTask: "仮想マシン [{{ .vm }}] のスナップショット [{{ .snapshot }}] を復元" -VMSnapshotRecoverStep: "仮想マシンのスナップショット [{{ .snapshot }}] を復元" -VMSnapshotDeleteTask: "仮想マシン [{{ .vm }}] のスナップショット [{{ .snapshot }}] を削除" -VMSnapshotDeleteStep: "仮想マシンのスナップショット [{{ .snapshot }}] を削除" - # アプリ CustomAppStoreFileValid: "アプリストアパッケージは .tar.gz 形式である必要があります" AppBackup: 'アプリケーションバックアップ' diff --git a/core/i18n/lang/ko.yaml b/core/i18n/lang/ko.yaml index 66221ecbd..210a94066 100644 --- a/core/i18n/lang/ko.yaml +++ b/core/i18n/lang/ko.yaml @@ -133,48 +133,6 @@ AppStatusUnHealthy: "애플리케이션 상태 획득이 비정상입니다. 노 MasterNodePortNotAvailable: "노드 {{ .name }} 포트 {{ .port }} 연결성 검증에 실패했습니다. 방화벽/보안 그룹 설정 및 마스터 노드 상태를 확인하세요." ClusterMasterNotExist: "클러스터의 마스터 노드가 연결이 끊어졌습니다. 자식 노드를 삭제하세요." -# 가상 머신 -ErrVMNotFound: "가상 머신이 존재하지 않습니다" -ErrVMAlreadyExists: "가상 머신이 이미 존재합니다" -ErrVMCountLimit: "Professional 버전에서는 가상 머신을 최대 {{ .limit }}대까지 생성할 수 있습니다. 기존 가상 머신을 삭제하거나 Enterprise 버전으로 업그레이드한 후 다시 시도하세요." -ErrVMImageAlreadyExists: "가상 머신 이미지 파일이 이미 존재합니다: {{ .detail }}" -ErrVMStoragePathInUse: "스토리지 풀 경로가 이미 [{{ .name }}]에서 사용 중입니다" -ErrVMHelperNotFound: "1panel-kvm을 찾을 수 없습니다" -ErrVMBridgeManaged: "브리지 이름이 이미 libvirt 또는 Docker에서 관리되고 있습니다" -ErrVMNetworkInUse: "네트워크가 사용 중이므로 삭제할 수 없습니다" -ErrVMStorageInUse: "스토리지 풀이 사용 중이므로 삭제할 수 없습니다" -ErrVMStorageNameCannotChange: "스토리지 풀 이름은 변경할 수 없습니다" -ErrVMStoragePathCannotChange: "스토리지 풀 경로는 변경할 수 없습니다" -ErrVMRunning: "가상 머신이 실행 중입니다" -ErrVMLibvirtConnect: "libvirt 연결 실패: {{ .detail }}" -ErrVMPermission: "가상 머신 작업 권한이 없습니다: {{ .detail }}" -ErrVMNetworkNotFound: "가상 머신 네트워크가 존재하지 않습니다: {{ .detail }}" -ErrVMInvalidPath: "가상 머신 경로가 유효하지 않습니다: {{ .detail }}" -ErrVMInvalidInput: "가상 머신 매개변수가 유효하지 않습니다: {{ .detail }}" -ErrVMCommandFailed: "가상 머신 명령 실행 실패: {{ .err }}" -ErrVMDiskResizeBlocked: "디스크가 확장 조건을 충족하지 않거나 다른 장치에서 참조하고 있습니다. 디스크 상태를 확인하세요." -ErrVMDiskReferenced: "다른 가상 머신 또는 장치가 이 가상 디스크를 사용 중이므로 현재 확장할 수 없습니다." -ErrVMDiskReferenceCheck: "가상 디스크 참조를 확인할 수 없어 확장할 수 없습니다. 다른 가상 머신의 디스크 상태를 확인하세요." -ErrVMSnapshotMetadataSync: "스냅샷은 복원되었지만 디스크 정보 동기화에 실패했습니다. 새로 고쳐 확인하세요. 스냅샷을 다시 복원할 필요는 없습니다." -VMCreateTask: "가상 머신 [{{ .name }}] 생성" -VMCreateFromTemplateTask: "템플릿에서 가상 머신 [{{ .name }}] 생성" -VMUpdateTask: "가상 머신 [{{ .name }}] 업데이트" -VMDiskResizeTask: "가상 머신 [{{ .name }}]의 디스크 [{{ .disk }}] 확장" -VMRenameTask: "가상 머신 [{{ .name }}]을(를) [{{ .newName }}](으)로 이름 변경" -VMDeleteTask: "가상 머신 [{{ .name }}] 삭제" -VMTemplateCreateTask: "가상 머신 [{{ .name }}]을(를) 템플릿 [{{ .template }}](으)로 저장" -VMTemplateDeleteTask: "가상 머신 템플릿 [{{ .name }}] 삭제" -VMForceDeleteMetadataOnly: "1panel-kvm을 찾을 수 없어 가상 머신 [{{ .name }}] 메타데이터만 강제 삭제합니다" -VMForceDeleteMetadataAfterLibvirtFailed: "libvirt에서 가상 머신 [{{ .name }}] 삭제 실패, 메타데이터 강제 삭제: {{ .err }}" -VMForceDeleteDiskFailed: "가상 머신 디스크 파일 [{{ .path }}] 강제 삭제 실패: {{ .err }}" -VMForceDeleteDiskSuccess: "가상 머신 디스크 파일 [{{ .path }}]을(를) 강제 삭제했습니다" -VMSnapshotCreateTask: "가상 머신 [{{ .vm }}] 스냅샷 [{{ .snapshot }}] 생성" -VMSnapshotCreateStep: "가상 머신 스냅샷 [{{ .snapshot }}] 생성" -VMSnapshotRecoverTask: "가상 머신 [{{ .vm }}] 스냅샷 [{{ .snapshot }}] 복구" -VMSnapshotRecoverStep: "가상 머신 스냅샷 [{{ .snapshot }}] 복구" -VMSnapshotDeleteTask: "가상 머신 [{{ .vm }}] 스냅샷 [{{ .snapshot }}] 삭제" -VMSnapshotDeleteStep: "가상 머신 스냅샷 [{{ .snapshot }}] 삭제" - # 앱 CustomAppStoreFileValid: "앱 스토어 패키지는 .tar.gz 형식이어야 합니다" AppBackup: '애플리케이션 백업' diff --git a/core/i18n/lang/lo.yaml b/core/i18n/lang/lo.yaml index 2b6a842f5..446957ab4 100644 --- a/core/i18n/lang/lo.yaml +++ b/core/i18n/lang/lo.yaml @@ -133,48 +133,6 @@ AppStatusUnHealthy: "ດຶງສະຖານະແອັບບໍ່ສຳເ MasterNodePortNotAvailable: "ການກວດສອບການເຊື່ອມຕໍ່ຂອງໂນດ {{ .name }} ຜ່ານພອດ {{ .port }} ລົ້ມເຫຼວ. ກະລຸນາກວດສອບການຕັ້ງຄ່າໄຟຣ໌ວໍ/ກຸ່ມຄວາມປອດໄພ ແລະ ສະຖານະໂນດຫຼັກ." ClusterMasterNotExist: "ໂນດຫຼັກຂອງຄລັສເຕີຖືກຕັດການເຊື່ອມຕໍ່. ກະລຸນາລຶບໂນດຍ່ອຍ." -# virtual machine -ErrVMNotFound: "ບໍ່ມີເຄື່ອງສະເໝືອນ" -ErrVMAlreadyExists: "ມີເຄື່ອງສະເໝືອນຢູ່ແລ້ວ" -ErrVMCountLimit: "ລຸ້ນ Professional ສາມາດສ້າງເຄື່ອງສະເໝືອນໄດ້ສູງສຸດ {{ .limit }} ເຄື່ອງ. ກະລຸນາລຶບເຄື່ອງສະເໝືອນທີ່ມີຢູ່ ຫຼື ອັບເກຣດເປັນລຸ້ນ Enterprise ແລ້ວລອງອີກຄັ້ງ." -ErrVMImageAlreadyExists: "ມີອິມເມຈເຄື່ອງສະເໝືອນຢູ່ແລ້ວ: {{ .detail }}" -ErrVMStoragePathInUse: "ເສັ້ນທາງພູນຈັດເກັບຖືກໃຊ້ໂດຍ [{{ .name }}] ແລ້ວ" -ErrVMHelperNotFound: "ບໍ່ພົບ 1panel-kvm" -ErrVMBridgeManaged: "ຊື່ບຣິດຈ໌ຖືກຈັດການໂດຍ libvirt ຫຼື Docker ແລ້ວ" -ErrVMNetworkInUse: "ເຄືອຂ່າຍກຳລັງຖືກໃຊ້ງານ ແລະ ບໍ່ສາມາດລຶບໄດ້" -ErrVMStorageInUse: "ພູນຈັດເກັບກຳລັງຖືກໃຊ້ງານ ແລະ ບໍ່ສາມາດລຶບໄດ້" -ErrVMStorageNameCannotChange: "ບໍ່ສາມາດປ່ຽນຊື່ພູນຈັດເກັບໄດ້" -ErrVMStoragePathCannotChange: "ບໍ່ສາມາດປ່ຽນເສັ້ນທາງພູນຈັດເກັບໄດ້" -ErrVMRunning: "ເຄື່ອງສະເໝືອນກຳລັງເຮັດວຽກ" -ErrVMLibvirtConnect: "ເຊື່ອມຕໍ່ກັບ libvirt ບໍ່ສຳເລັດ: {{ .detail }}" -ErrVMPermission: "ບໍ່ມີສິດດຳເນີນການກັບເຄື່ອງສະເໝືອນ: {{ .detail }}" -ErrVMNetworkNotFound: "ບໍ່ມີເຄືອຂ່າຍເຄື່ອງສະເໝືອນ: {{ .detail }}" -ErrVMInvalidPath: "ເສັ້ນທາງເຄື່ອງສະເໝືອນບໍ່ຖືກຕ້ອງ: {{ .detail }}" -ErrVMInvalidInput: "ພາລາມິເຕີເຄື່ອງສະເໝືອນບໍ່ຖືກຕ້ອງ: {{ .detail }}" -ErrVMCommandFailed: "ຄຳສັ່ງເຄື່ອງສະເໝືອນລົ້ມເຫຼວ: {{ .err }}" -ErrVMDiskResizeBlocked: "ດິສກ໌ບໍ່ຕອບສະໜອງເງື່ອນໄຂການຂະຫຍາຍ ຫຼື ຖືກອ້າງອີງໂດຍອຸປະກອນອື່ນ. ກະລຸນາກວດສອບສະຖານະດິສກ໌." -ErrVMDiskReferenced: "ດິສກ໌ເສມືອນນີ້ຖືກໃຊ້ໂດຍເຄື່ອງເສມືອນ ຫຼື ອຸປະກອນອື່ນ; ຍັງບໍ່ຮອງຮັບການຂະຫຍາຍ." -ErrVMDiskReferenceCheck: "ບໍ່ສາມາດກວດສອບການອ້າງອີງດິສກ໌ເສມືອນໄດ້. ຍັງຂະຫຍາຍບໍ່ໄດ້; ກະລຸນາກວດສອບດິສກ໌ຂອງເຄື່ອງເສມືອນອື່ນ." -ErrVMSnapshotMetadataSync: "ກູ້ຄືນສະແນັບຊັອດແລ້ວ ແຕ່ຊິງຂໍ້ມູນດິສກ໌ບໍ່ສຳເລັດ. ກະລຸນາໂຫຼດໃໝ່ ແລະ ກວດສອບ; ບໍ່ຈຳເປັນຕ້ອງກູ້ຄືນສະແນັບຊັອດອີກ." -VMCreateTask: "ສ້າງເຄື່ອງສະເໝືອນ [{{ .name }}]" -VMCreateFromTemplateTask: "ສ້າງເຄື່ອງສະເໝືອນ [{{ .name }}] ຈາກແມ່ແບບ" -VMUpdateTask: "ອັບເດດເຄື່ອງສະເໝືອນ [{{ .name }}]" -VMDiskResizeTask: "ຂະຫຍາຍດິສກ໌ [{{ .disk }}] ຂອງເຄື່ອງເສມືອນ [{{ .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: 'ສຳຮອງແອັບ' diff --git a/core/i18n/lang/ms.yaml b/core/i18n/lang/ms.yaml index 555617171..c97ac693a 100644 --- a/core/i18n/lang/ms.yaml +++ b/core/i18n/lang/ms.yaml @@ -133,48 +133,6 @@ AppStatusUnHealthy: "Pengambilan status aplikasi tidak normal, sila periksa stat MasterNodePortNotAvailable: "Pengesahan kesambungan pelabuhan {{ .name }} nod {{ .port }} gagal, sila periksa tetapan firewall/kumpulan keselamatan dan status nod utama." ClusterMasterNotExist: "Node utama kluster terputus, sila padamkan nod anak." -# mesin maya -ErrVMNotFound: "Mesin maya tidak wujud" -ErrVMAlreadyExists: "Mesin maya sudah wujud" -ErrVMCountLimit: "Edisi Professional membenarkan penciptaan sehingga {{ .limit }} mesin maya. Padamkan mesin maya sedia ada atau naik taraf kepada Enterprise dan cuba lagi." -ErrVMImageAlreadyExists: "Fail imej mesin maya sudah wujud: {{ .detail }}" -ErrVMStoragePathInUse: "Laluan kolam storan sudah digunakan oleh [{{ .name }}]" -ErrVMHelperNotFound: "1panel-kvm tidak ditemui" -ErrVMBridgeManaged: "Nama bridge telah diurus oleh libvirt atau Docker" -ErrVMNetworkInUse: "Rangkaian sedang digunakan dan tidak boleh dipadamkan" -ErrVMStorageInUse: "Kumpulan storan sedang digunakan dan tidak boleh dipadamkan" -ErrVMStorageNameCannotChange: "Nama kumpulan storan tidak boleh diubah" -ErrVMStoragePathCannotChange: "Laluan kumpulan storan tidak boleh diubah" -ErrVMRunning: "Mesin maya sedang berjalan" -ErrVMLibvirtConnect: "Gagal menyambung ke libvirt: {{ .detail }}" -ErrVMPermission: "Tiada kebenaran untuk mengendalikan mesin maya: {{ .detail }}" -ErrVMNetworkNotFound: "Rangkaian mesin maya tidak wujud: {{ .detail }}" -ErrVMInvalidPath: "Laluan mesin maya tidak sah: {{ .detail }}" -ErrVMInvalidInput: "Parameter mesin maya tidak sah: {{ .detail }}" -ErrVMCommandFailed: "Arahan mesin maya gagal: {{ .err }}" -ErrVMDiskResizeBlocked: "Cakera tidak memenuhi syarat pembesaran atau dirujuk oleh peranti lain. Semak status cakera." -ErrVMDiskReferenced: "Cakera maya ini digunakan oleh mesin maya atau peranti lain; pembesaran belum disokong." -ErrVMDiskReferenceCheck: "Rujukan cakera maya tidak dapat disahkan. Pembesaran tidak tersedia; semak cakera mesin maya lain." -ErrVMSnapshotMetadataSync: "Syot kilat telah dipulihkan, tetapi maklumat cakera gagal disegerakkan. Muat semula dan semak; tidak perlu memulihkan syot kilat sekali lagi." -VMCreateTask: "Cipta mesin maya [{{ .name }}]" -VMCreateFromTemplateTask: "Cipta mesin maya [{{ .name }}] daripada templat" -VMUpdateTask: "Kemas kini mesin maya [{{ .name }}]" -VMDiskResizeTask: "Besarkan cakera [{{ .disk }}] mesin maya [{{ .name }}]" -VMRenameTask: "Namakan semula mesin maya [{{ .name }}] kepada [{{ .newName }}]" -VMDeleteTask: "Padam mesin maya [{{ .name }}]" -VMTemplateCreateTask: "Simpan mesin maya [{{ .name }}] sebagai templat [{{ .template }}]" -VMTemplateDeleteTask: "Padam templat mesin maya [{{ .name }}]" -VMForceDeleteMetadataOnly: "1panel-kvm tidak ditemui, memadam metadata mesin maya [{{ .name }}] sahaja secara paksa" -VMForceDeleteMetadataAfterLibvirtFailed: "Gagal memadam mesin maya [{{ .name }}] daripada libvirt, memadam metadata secara paksa: {{ .err }}" -VMForceDeleteDiskFailed: "Gagal memadam fail cakera mesin maya [{{ .path }}] secara paksa: {{ .err }}" -VMForceDeleteDiskSuccess: "Fail cakera mesin maya [{{ .path }}] telah dipadam secara paksa" -VMSnapshotCreateTask: "Cipta syot kilat [{{ .snapshot }}] untuk mesin maya [{{ .vm }}]" -VMSnapshotCreateStep: "Cipta syot kilat mesin maya [{{ .snapshot }}]" -VMSnapshotRecoverTask: "Pulihkan syot kilat [{{ .snapshot }}] untuk mesin maya [{{ .vm }}]" -VMSnapshotRecoverStep: "Pulihkan syot kilat mesin maya [{{ .snapshot }}]" -VMSnapshotDeleteTask: "Padam syot kilat [{{ .snapshot }}] untuk mesin maya [{{ .vm }}]" -VMSnapshotDeleteStep: "Padam syot kilat mesin maya [{{ .snapshot }}]" - # aplikasi CustomAppStoreFileValid: "Pakej stor aplikasi perlu dalam format .tar.gz" AppBackup: "Sandaran aplikasi" diff --git a/core/i18n/lang/pt-BR.yaml b/core/i18n/lang/pt-BR.yaml index 8b1bb05d7..0a5a24842 100644 --- a/core/i18n/lang/pt-BR.yaml +++ b/core/i18n/lang/pt-BR.yaml @@ -133,48 +133,6 @@ AppStatusUnHealthy: "A aquisição do status do aplicativo está anormal, verifi MasterNodePortNotAvailable: "A verificação de conectividade da porta {{ .port }} do nó {{ .name }} falhou, verifique as configurações de firewall/grupo de segurança e o status do nó mestre." ClusterMasterNotExist: "O nó mestre do cluster está desconectado, por favor, exclua os nós filhos." -# máquina virtual -ErrVMNotFound: "Máquina virtual não existe" -ErrVMAlreadyExists: "Máquina virtual já existe" -ErrVMCountLimit: "A edição Professional permite criar até {{ .limit }} máquinas virtuais. Exclua uma máquina virtual existente ou atualize para Enterprise e tente novamente." -ErrVMImageAlreadyExists: "A imagem da máquina virtual já existe: {{ .detail }}" -ErrVMStoragePathInUse: "O caminho do pool de armazenamento já é usado por [{{ .name }}]" -ErrVMHelperNotFound: "1panel-kvm não encontrado" -ErrVMBridgeManaged: "O nome da bridge já é gerenciado pelo libvirt ou Docker" -ErrVMNetworkInUse: "A rede está em uso e não pode ser excluída" -ErrVMStorageInUse: "O pool de armazenamento está em uso e não pode ser excluído" -ErrVMStorageNameCannotChange: "O nome do pool de armazenamento não pode ser alterado" -ErrVMStoragePathCannotChange: "O caminho do pool de armazenamento não pode ser alterado" -ErrVMRunning: "Máquina virtual está em execução" -ErrVMLibvirtConnect: "Falha ao conectar ao libvirt: {{ .detail }}" -ErrVMPermission: "Sem permissão para operar a máquina virtual: {{ .detail }}" -ErrVMNetworkNotFound: "Rede da máquina virtual não existe: {{ .detail }}" -ErrVMInvalidPath: "Caminho da máquina virtual inválido: {{ .detail }}" -ErrVMInvalidInput: "Parâmetro da máquina virtual inválido: {{ .detail }}" -ErrVMCommandFailed: "Falha no comando da máquina virtual: {{ .err }}" -ErrVMDiskResizeBlocked: "O disco não atende aos requisitos de expansão ou é referenciado por outro dispositivo. Verifique seu estado." -ErrVMDiskReferenced: "Este disco virtual é usado por outra máquina virtual ou dispositivo e ainda não pode ser expandido." -ErrVMDiskReferenceCheck: "Não foi possível verificar as referências ao disco virtual. A expansão está indisponível; verifique os discos das outras máquinas virtuais." -ErrVMSnapshotMetadataSync: "O snapshot foi restaurado, mas a sincronização dos dados do disco falhou. Atualize e verifique; não restaure o snapshot novamente." -VMCreateTask: "Criar máquina virtual [{{ .name }}]" -VMCreateFromTemplateTask: "Criar máquina virtual [{{ .name }}] a partir do modelo" -VMUpdateTask: "Atualizar máquina virtual [{{ .name }}]" -VMDiskResizeTask: "Expandir disco [{{ .disk }}] da máquina virtual [{{ .name }}]" -VMRenameTask: "Renomear máquina virtual [{{ .name }}] para [{{ .newName }}]" -VMDeleteTask: "Excluir máquina virtual [{{ .name }}]" -VMTemplateCreateTask: "Salvar máquina virtual [{{ .name }}] como modelo [{{ .template }}]" -VMTemplateDeleteTask: "Excluir modelo de máquina virtual [{{ .name }}]" -VMForceDeleteMetadataOnly: "1panel-kvm não encontrado, excluindo à força apenas os metadados da máquina virtual [{{ .name }}]" -VMForceDeleteMetadataAfterLibvirtFailed: "Falha ao excluir a máquina virtual [{{ .name }}] do libvirt, excluindo metadados à força: {{ .err }}" -VMForceDeleteDiskFailed: "Falha ao excluir à força o arquivo de disco da máquina virtual [{{ .path }}]: {{ .err }}" -VMForceDeleteDiskSuccess: "Arquivo de disco da máquina virtual [{{ .path }}] excluído à força" -VMSnapshotCreateTask: "Criar snapshot [{{ .snapshot }}] para a máquina virtual [{{ .vm }}]" -VMSnapshotCreateStep: "Criar snapshot da máquina virtual [{{ .snapshot }}]" -VMSnapshotRecoverTask: "Restaurar snapshot [{{ .snapshot }}] da máquina virtual [{{ .vm }}]" -VMSnapshotRecoverStep: "Restaurar snapshot da máquina virtual [{{ .snapshot }}]" -VMSnapshotDeleteTask: "Excluir snapshot [{{ .snapshot }}] da máquina virtual [{{ .vm }}]" -VMSnapshotDeleteStep: "Excluir snapshot da máquina virtual [{{ .snapshot }}]" - # aplicativo CustomAppStoreFileValid: "O pacote da loja de aplicativos deve estar no formato .tar.gz" AppBackup: 'Backup de aplicação' diff --git a/core/i18n/lang/ru.yaml b/core/i18n/lang/ru.yaml index fdb131a82..364588d2c 100644 --- a/core/i18n/lang/ru.yaml +++ b/core/i18n/lang/ru.yaml @@ -133,48 +133,6 @@ AppStatusUnHealthy: "Получение статуса приложения ан MasterNodePortNotAvailable: "Проверка подключения порта {{ .port }} узла {{ .name }} не удалась, пожалуйста, проверьте настройки брандмауэра/группы безопасности и статус главного узла." ClusterMasterNotExist: "Основной узел кластера отключен, пожалуйста, удалите дочерние узлы." -# виртуальная машина -ErrVMNotFound: "Виртуальная машина не существует" -ErrVMAlreadyExists: "Виртуальная машина уже существует" -ErrVMCountLimit: "В редакции Professional можно создать не более {{ .limit }} виртуальных машин. Удалите существующую виртуальную машину или перейдите на Enterprise и повторите попытку." -ErrVMImageAlreadyExists: "Файл образа виртуальной машины уже существует: {{ .detail }}" -ErrVMStoragePathInUse: "Путь пула хранения уже используется [{{ .name }}]" -ErrVMHelperNotFound: "1panel-kvm не найден" -ErrVMBridgeManaged: "Имя моста уже управляется libvirt или Docker" -ErrVMNetworkInUse: "Сеть используется и не может быть удалена" -ErrVMStorageInUse: "Пул хранилища используется и не может быть удалён" -ErrVMStorageNameCannotChange: "Имя пула хранилища нельзя изменить" -ErrVMStoragePathCannotChange: "Путь к пулу хранилища нельзя изменить" -ErrVMRunning: "Виртуальная машина запущена" -ErrVMLibvirtConnect: "Не удалось подключиться к libvirt: {{ .detail }}" -ErrVMPermission: "Нет разрешения на операцию с виртуальной машиной: {{ .detail }}" -ErrVMNetworkNotFound: "Сеть виртуальной машины не существует: {{ .detail }}" -ErrVMInvalidPath: "Недопустимый путь виртуальной машины: {{ .detail }}" -ErrVMInvalidInput: "Недопустимые параметры виртуальной машины: {{ .detail }}" -ErrVMCommandFailed: "Ошибка выполнения команды виртуальной машины: {{ .err }}" -ErrVMDiskResizeBlocked: "Диск не соответствует условиям расширения или используется другим устройством. Проверьте состояние диска." -ErrVMDiskReferenced: "Этот виртуальный диск используется другой виртуальной машиной или устройством; расширение пока недоступно." -ErrVMDiskReferenceCheck: "Не удалось проверить ссылки на виртуальный диск. Расширение недоступно; проверьте диски других виртуальных машин." -ErrVMSnapshotMetadataSync: "Снимок восстановлен, но синхронизация данных диска не удалась. Обновите данные и проверьте их; повторно восстанавливать снимок не нужно." -VMCreateTask: "Создать виртуальную машину [{{ .name }}]" -VMCreateFromTemplateTask: "Создать виртуальную машину [{{ .name }}] из шаблона" -VMUpdateTask: "Обновить виртуальную машину [{{ .name }}]" -VMDiskResizeTask: "Расширить диск [{{ .disk }}] виртуальной машины [{{ .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 }}]" - # приложение CustomAppStoreFileValid: "Пакет магазина приложений должен быть в формате .tar.gz" AppBackup: 'Резервная копия приложения' diff --git a/core/i18n/lang/tr.yaml b/core/i18n/lang/tr.yaml index 5ccf163de..9961891e2 100644 --- a/core/i18n/lang/tr.yaml +++ b/core/i18n/lang/tr.yaml @@ -133,48 +133,6 @@ AppStatusUnHealthy: "Uygulama durumu alımı anormal, lütfen düğüm listesind MasterNodePortNotAvailable: "Düğüm {{ .name }} portu {{ .port }} bağlantı doğrulaması başarısız oldu, lütfen güvenlik duvarı/güvenlik grubu ayarlarını ve ana düğüm durumunu kontrol edin." ClusterMasterNotExist: "Küme ana düğümü bağlantısı kesildi, lütfen alt düğümleri silin." -# sanal makine -ErrVMNotFound: "Sanal makine mevcut değil" -ErrVMAlreadyExists: "Sanal makine zaten mevcut" -ErrVMCountLimit: "Professional sürümü en fazla {{ .limit }} sanal makine oluşturulmasına izin verir. Mevcut bir sanal makineyi silin veya Enterprise sürümüne yükseltip tekrar deneyin." -ErrVMImageAlreadyExists: "Sanal makine imaj dosyası zaten mevcut: {{ .detail }}" -ErrVMStoragePathInUse: "Depolama havuzu yolu zaten [{{ .name }}] tarafından kullanılıyor" -ErrVMHelperNotFound: "1panel-kvm bulunamadı" -ErrVMBridgeManaged: "Bridge adı zaten libvirt veya Docker tarafından yönetiliyor" -ErrVMNetworkInUse: "Ağ kullanımda ve silinemez" -ErrVMStorageInUse: "Depolama havuzu kullanımda ve silinemez" -ErrVMStorageNameCannotChange: "Depolama havuzunun adı değiştirilemez" -ErrVMStoragePathCannotChange: "Depolama havuzunun yolu değiştirilemez" -ErrVMRunning: "Sanal makine çalışıyor" -ErrVMLibvirtConnect: "libvirt bağlantısı başarısız: {{ .detail }}" -ErrVMPermission: "Sanal makine işlemi için izin yok: {{ .detail }}" -ErrVMNetworkNotFound: "Sanal makine ağı mevcut değil: {{ .detail }}" -ErrVMInvalidPath: "Geçersiz sanal makine yolu: {{ .detail }}" -ErrVMInvalidInput: "Geçersiz sanal makine parametresi: {{ .detail }}" -ErrVMCommandFailed: "Sanal makine komutu başarısız: {{ .err }}" -ErrVMDiskResizeBlocked: "Disk genişletme koşullarını karşılamıyor veya başka bir aygıt tarafından kullanılıyor. Disk durumunu kontrol edin." -ErrVMDiskReferenced: "Bu sanal disk başka bir sanal makine veya aygıt tarafından kullanılıyor; genişletme henüz desteklenmiyor." -ErrVMDiskReferenceCheck: "Sanal disk başvuruları doğrulanamadı. Genişletme kullanılamıyor; diğer sanal makinelerin disklerini kontrol edin." -ErrVMSnapshotMetadataSync: "Anlık görüntü geri yüklendi ancak disk bilgileri eşitlenemedi. Yenileyip kontrol edin; anlık görüntüyü tekrar geri yüklemeyin." -VMCreateTask: "Sanal makine [{{ .name }}] oluştur" -VMCreateFromTemplateTask: "Şablondan sanal makine [{{ .name }}] oluştur" -VMUpdateTask: "Sanal makine [{{ .name }}] güncelle" -VMDiskResizeTask: "[{{ .name }}] sanal makinesinin [{{ .disk }}] diskini genişlet" -VMRenameTask: "Sanal makine [{{ .name }}] adını [{{ .newName }}] olarak değiştir" -VMDeleteTask: "Sanal makine [{{ .name }}] sil" -VMTemplateCreateTask: "Sanal makine [{{ .name }}] öğesini şablon [{{ .template }}] olarak kaydet" -VMTemplateDeleteTask: "Sanal makine şablonu [{{ .name }}] sil" -VMForceDeleteMetadataOnly: "1panel-kvm bulunamadı, yalnızca sanal makine [{{ .name }}] meta verileri zorla siliniyor" -VMForceDeleteMetadataAfterLibvirtFailed: "Sanal makine [{{ .name }}] libvirt üzerinden silinemedi, meta veriler zorla siliniyor: {{ .err }}" -VMForceDeleteDiskFailed: "Sanal makine disk dosyası [{{ .path }}] zorla silinemedi: {{ .err }}" -VMForceDeleteDiskSuccess: "Sanal makine disk dosyası [{{ .path }}] zorla silindi" -VMSnapshotCreateTask: "Sanal makine [{{ .vm }}] için anlık görüntü [{{ .snapshot }}] oluştur" -VMSnapshotCreateStep: "Sanal makine anlık görüntüsü [{{ .snapshot }}] oluştur" -VMSnapshotRecoverTask: "Sanal makine [{{ .vm }}] anlık görüntüsü [{{ .snapshot }}] geri yükle" -VMSnapshotRecoverStep: "Sanal makine anlık görüntüsü [{{ .snapshot }}] geri yükle" -VMSnapshotDeleteTask: "Sanal makine [{{ .vm }}] anlık görüntüsü [{{ .snapshot }}] sil" -VMSnapshotDeleteStep: "Sanal makine anlık görüntüsü [{{ .snapshot }}] sil" - # uygulama CustomAppStoreFileValid: "Uygulama mağazası paketi .tar.gz formatında olmalıdır" AppBackup: 'Uygulama yedekleme' diff --git a/core/i18n/lang/zh-Hant.yaml b/core/i18n/lang/zh-Hant.yaml index af800e9a2..bd26347a7 100644 --- a/core/i18n/lang/zh-Hant.yaml +++ b/core/i18n/lang/zh-Hant.yaml @@ -133,48 +133,6 @@ AppStatusUnHealthy: "應用取得狀態異常,請在節點列表檢查安裝 MasterNodePortNotAvailable: "節點 {{ .name }} 埠 {{ .port }} 連通性驗證失敗,請檢查防火牆/安全組設定和主節點狀態" ClusterMasterNotExist: "叢集主節點失聯,請刪除子節點" -# 虛擬機 -ErrVMNotFound: "虛擬機不存在" -ErrVMAlreadyExists: "虛擬機已存在" -ErrVMCountLimit: "專業版最多可建立 {{ .limit }} 台虛擬機,請刪除現有虛擬機或升級企業版後重試。" -ErrVMImageAlreadyExists: "虛擬機映像檔已存在: {{ .detail }}" -ErrVMStoragePathInUse: "儲存池路徑已被 [{{ .name }}] 使用" -ErrVMHelperNotFound: "1panel-kvm 不存在" -ErrVMBridgeManaged: "橋接名稱已被 libvirt 或 Docker 管理" -ErrVMNetworkInUse: "網路正在被使用,無法刪除" -ErrVMStorageInUse: "儲存池正在被使用,無法刪除" -ErrVMStorageNameCannotChange: "儲存池名稱無法修改" -ErrVMStoragePathCannotChange: "儲存池路徑無法修改" -ErrVMRunning: "虛擬機正在執行" -ErrVMLibvirtConnect: "連接 libvirt 失敗: {{ .detail }}" -ErrVMPermission: "沒有虛擬機操作權限: {{ .detail }}" -ErrVMNetworkNotFound: "虛擬機網路不存在: {{ .detail }}" -ErrVMInvalidPath: "虛擬機路徑非法: {{ .detail }}" -ErrVMInvalidInput: "虛擬機參數非法: {{ .detail }}" -ErrVMCommandFailed: "虛擬機指令執行失敗: {{ .err }}" -ErrVMDiskResizeBlocked: "磁碟不符合擴容條件,或被其他裝置引用,請檢查磁碟狀態" -ErrVMDiskReferenced: "此虛擬硬碟被其他虛擬機或裝置使用,暫不支援擴容" -ErrVMDiskReferenceCheck: "無法完成虛擬硬碟引用檢查,暫不支援擴容,請檢查其他虛擬機的磁碟狀態" -ErrVMSnapshotMetadataSync: "快照已還原,但磁碟資訊同步失敗,請重新整理檢查,無需重複還原快照" -VMCreateTask: "建立虛擬機 [{{ .name }}]" -VMCreateFromTemplateTask: "從範本建立虛擬機 [{{ .name }}]" -VMUpdateTask: "更新虛擬機 [{{ .name }}]" -VMDiskResizeTask: "擴容虛擬機 [{{ .name }}] 磁碟 [{{ .disk }}]" -VMRenameTask: "重新命名虛擬機 [{{ .name }}] 為 [{{ .newName }}]" -VMDeleteTask: "刪除虛擬機 [{{ .name }}]" -VMTemplateCreateTask: "轉存虛擬機 [{{ .name }}] 為範本 [{{ .template }}]" -VMTemplateDeleteTask: "刪除虛擬機範本 [{{ .name }}]" -VMForceDeleteMetadataOnly: "1panel-kvm 不存在,僅強制刪除虛擬機 [{{ .name }}] 元資料" -VMForceDeleteMetadataAfterLibvirtFailed: "從 libvirt 刪除虛擬機 [{{ .name }}] 失敗,強制刪除元資料: {{ .err }}" -VMForceDeleteDiskFailed: "強制刪除虛擬機磁碟檔案 [{{ .path }}] 失敗: {{ .err }}" -VMForceDeleteDiskSuccess: "已強制刪除虛擬機磁碟檔案 [{{ .path }}]" -VMSnapshotCreateTask: "建立虛擬機 [{{ .vm }}] 快照 [{{ .snapshot }}]" -VMSnapshotCreateStep: "建立虛擬機快照 [{{ .snapshot }}]" -VMSnapshotRecoverTask: "復原虛擬機 [{{ .vm }}] 快照 [{{ .snapshot }}]" -VMSnapshotRecoverStep: "復原虛擬機快照 [{{ .snapshot }}]" -VMSnapshotDeleteTask: "刪除虛擬機 [{{ .vm }}] 快照 [{{ .snapshot }}]" -VMSnapshotDeleteStep: "刪除虛擬機快照 [{{ .snapshot }}]" - # 應用 CustomAppStoreFileValid: "應用商店包需要 .tar.gz 格式" AppBackup: '應用備份' diff --git a/core/i18n/lang/zh.yaml b/core/i18n/lang/zh.yaml index 00d62a395..dff47e968 100644 --- a/core/i18n/lang/zh.yaml +++ b/core/i18n/lang/zh.yaml @@ -133,48 +133,6 @@ AppStatusUnHealthy: "应用获取状态异常,请在节点列表检查安装 MasterNodePortNotAvailable: "节点 {{ .name }} 端口 {{ .port }} 连通性校验失败,请检查防火墙/安全组设置和主节点状态" ClusterMasterNotExist: "集群主节点失联,请删除子节点" -# 虚拟机 -ErrVMNotFound: "虚拟机不存在" -ErrVMAlreadyExists: "虚拟机已存在" -ErrVMCountLimit: "专业版最多可创建 {{ .limit }} 台虚拟机,请删除已有虚拟机或升级企业版后重试。" -ErrVMImageAlreadyExists: "虚拟机镜像文件已存在: {{ .detail }}" -ErrVMStoragePathInUse: "存储池路径已被 [{{ .name }}] 使用" -ErrVMHelperNotFound: "1panel-kvm 不存在" -ErrVMBridgeManaged: "桥接名称已被 libvirt 或 Docker 管理" -ErrVMNetworkInUse: "网络正在被使用,无法删除" -ErrVMStorageInUse: "存储池正在被使用,无法删除" -ErrVMStorageNameCannotChange: "存储池名称无法修改" -ErrVMStoragePathCannotChange: "存储池路径无法修改" -ErrVMRunning: "虚拟机正在运行" -ErrVMLibvirtConnect: "连接 libvirt 失败: {{ .detail }}" -ErrVMPermission: "没有虚拟机操作权限: {{ .detail }}" -ErrVMNetworkNotFound: "虚拟机网络不存在: {{ .detail }}" -ErrVMInvalidPath: "虚拟机路径非法: {{ .detail }}" -ErrVMInvalidInput: "虚拟机参数非法: {{ .detail }}" -ErrVMCommandFailed: "虚拟机命令执行失败: {{ .err }}" -ErrVMDiskResizeBlocked: "磁盘不符合扩容条件,或被其他设备引用,请检查磁盘状态" -ErrVMDiskReferenced: "该虚拟硬盘被其他虚拟机或设备使用,暂不支持扩容" -ErrVMDiskReferenceCheck: "无法完成虚拟硬盘引用检查,暂不支持扩容,请检查其他虚拟机的磁盘状态" -ErrVMSnapshotMetadataSync: "快照已恢复,但磁盘信息同步失败,请刷新检查,无需重复恢复快照" -VMCreateTask: "创建虚拟机 [{{ .name }}]" -VMCreateFromTemplateTask: "从模板创建虚拟机 [{{ .name }}]" -VMUpdateTask: "更新虚拟机 [{{ .name }}]" -VMDiskResizeTask: "扩容虚拟机 [{{ .name }}] 磁盘 [{{ .disk }}]" -VMRenameTask: "重命名虚拟机 [{{ .name }}] 为 [{{ .newName }}]" -VMDeleteTask: "删除虚拟机 [{{ .name }}]" -VMTemplateCreateTask: "转存虚拟机 [{{ .name }}] 为模板 [{{ .template }}]" -VMTemplateDeleteTask: "删除虚拟机模板 [{{ .name }}]" -VMForceDeleteMetadataOnly: "1panel-kvm 不存在,仅强制删除虚拟机 [{{ .name }}] 元数据" -VMForceDeleteMetadataAfterLibvirtFailed: "从 libvirt 删除虚拟机 [{{ .name }}] 失败,强制删除元数据: {{ .err }}" -VMForceDeleteDiskFailed: "强制删除虚拟机磁盘文件 [{{ .path }}] 失败: {{ .err }}" -VMForceDeleteDiskSuccess: "已强制删除虚拟机磁盘文件 [{{ .path }}]" -VMSnapshotCreateTask: "创建虚拟机 [{{ .vm }}] 快照 [{{ .snapshot }}]" -VMSnapshotCreateStep: "创建虚拟机快照 [{{ .snapshot }}]" -VMSnapshotRecoverTask: "恢复虚拟机 [{{ .vm }}] 快照 [{{ .snapshot }}]" -VMSnapshotRecoverStep: "恢复虚拟机快照 [{{ .snapshot }}]" -VMSnapshotDeleteTask: "删除虚拟机 [{{ .vm }}] 快照 [{{ .snapshot }}]" -VMSnapshotDeleteStep: "删除虚拟机快照 [{{ .snapshot }}]" - # 应用 CustomAppStoreFileValid: "应用商店包需要 .tar.gz 格式" AppBackup: "应用备份" diff --git a/core/init/validator/validator.go b/core/init/validator/validator.go index 360eaceea..9a00a7e82 100644 --- a/core/init/validator/validator.go +++ b/core/init/validator/validator.go @@ -5,7 +5,6 @@ import ( "unicode" "github.com/1Panel-dev/1Panel/core/global" - "github.com/1Panel-dev/1Panel/core/utils/re" "github.com/go-playground/validator/v10" ) @@ -23,12 +22,6 @@ func Init() { if err := validator.RegisterValidation("base_setting_key", checkBaseSettingKey); err != nil { panic(err) } - if err := validator.RegisterValidation("vm_name", checkVMNamePattern); err != nil { - panic(err) - } - if err := validator.RegisterValidation("vm_common", checkVMCommonPattern); err != nil { - panic(err) - } global.VALID = validator } @@ -103,12 +96,3 @@ func checkBaseSettingKey(fl validator.FieldLevel) bool { _, ok := baseSettingKeys[fl.Field().String()] return ok } - -func checkVMNamePattern(fl validator.FieldLevel) bool { - value := fl.Field().String() - return re.GetRegex(re.VMNameValidationPattern).MatchString(value) -} -func checkVMCommonPattern(fl validator.FieldLevel) bool { - value := fl.Field().String() - return re.GetRegex(re.VMCommonPattern).MatchString(value) -} diff --git a/core/middleware/demo_handle.go b/core/middleware/demo_handle.go index 14f49bd30..7f0ae6a23 100644 --- a/core/middleware/demo_handle.go +++ b/core/middleware/demo_handle.go @@ -86,7 +86,7 @@ var demoDeniedRoutes = map[demoRoute]struct{}{ {http.MethodGet, "/api/v2/hosts/terminal/local"}: {}, {http.MethodGet, "/api/v2/hosts/terminal/ssh"}: {}, {http.MethodGet, "/api/v2/hosts/terminal/container"}: {}, - {http.MethodGet, "/api/v2/core/xpack/vms/console/ws"}: {}, + {http.MethodGet, "/api/v2/xpack/vms/console/ws"}: {}, } func DemoHandle() gin.HandlerFunc { diff --git a/core/utils/re/re.go b/core/utils/re/re.go index 9ac4f08aa..ea8db84ea 100644 --- a/core/utils/re/re.go +++ b/core/utils/re/re.go @@ -7,8 +7,6 @@ import ( const ( OrderByValidationPattern = `^[a-zA-Z_][a-zA-Z0-9_]*$` - VMNameValidationPattern = `^[a-zA-Z0-9][a-zA-Z0-9._-]{0,63}$` - VMCommonPattern = `^[a-zA-Z0-9][a-zA-Z0-9._:-]{0,63}$` ) var regexMap = make(map[string]*regexp.Regexp) @@ -16,8 +14,6 @@ var regexMap = make(map[string]*regexp.Regexp) func Init() { patterns := []string{ OrderByValidationPattern, - VMNameValidationPattern, - VMCommonPattern, } for _, pattern := range patterns { diff --git a/frontend/src/api/modules/files.ts b/frontend/src/api/modules/files.ts index 0225b4b13..f08c7d4f0 100644 --- a/frontend/src/api/modules/files.ts +++ b/frontend/src/api/modules/files.ts @@ -30,8 +30,8 @@ export const getFilesTree = (params: File.ReqFile) => { return http.post('files/tree', params); }; -export const createFile = (form: File.FileCreate) => { - return http.post('files', form); +export const createFile = (form: File.FileCreate, currentNode?: string) => { + return http.post('files', form, undefined, currentNode ? { CurrentNode: currentNode } : undefined); }; export const deleteFile = (form: File.FileDelete) => { @@ -105,8 +105,13 @@ export const restoreFileHistory = (id: number) => { return http.post('files/history/restore', { id }); }; -export const checkFile = (path: string, withInit: boolean) => { - return http.post('files/check', { path: path, withInit: withInit }); +export const checkFile = (path: string, withInit: boolean, currentNode?: string) => { + return http.post( + 'files/check', + { path: path, withInit: withInit }, + undefined, + currentNode ? { CurrentNode: currentNode } : undefined, + ); }; export const uploadFileData = (params: FormData, config: FileUploadRequestConfig) => { @@ -146,8 +151,13 @@ export const changeOwner = (params: File.FileOwner) => { return http.post('files/owner', params); }; -export const wgetFile = (params: File.FileWget) => { - return http.post('files/wget', params); +export const wgetFile = (params: File.FileWget, currentNode?: string) => { + return http.post( + 'files/wget', + params, + undefined, + currentNode ? { CurrentNode: currentNode } : undefined, + ); }; export const getFileDownloadPreference = () => {